diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/plain/components/AddKeyModal.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/plain/components/AddKeyModal.tsx index 168521210d..a77958f813 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/plain/components/AddKeyModal.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/plain/components/AddKeyModal.tsx @@ -1,52 +1,74 @@ "use client"; -import { CreateNewActionTab } from "@/modules/survey/editor/components/create-new-action-tab"; import { Button } from "@/modules/ui/components/button"; +import { Input } from "@/modules/ui/components/input"; import { Modal } from "@/modules/ui/components/modal"; import { useTranslate } from "@tolgee/react"; -import { MousePointerClickIcon, PlusIcon } from "lucide-react"; +import { KeyIcon } from "lucide-react"; import { useState } from "react"; -import { TActionClass } from "@formbricks/types/action-classes"; -interface AddActionModalProps { +interface AddKeyModalProps { environmentId: string; - actionClasses: TActionClass[]; - isReadOnly: boolean; + open?: boolean; + setOpen?: (open: boolean) => void; } -export const AddKeyModal = ({ environmentId, actionClasses, isReadOnly }: AddActionModalProps) => { +export const AddKeyModal = ({ + environmentId, + open: externalOpen, + setOpen: externalSetOpen, +}: AddKeyModalProps) => { const { t } = useTranslate(); - const [open, setOpen] = useState(false); + const [internalOpen, setInternalOpen] = useState(false); + const [keyLabel, setKeyLabel] = useState(""); - const [newActionClasses, setNewActionClasses] = useState(actionClasses); + const open = externalOpen !== undefined ? externalOpen : internalOpen; + const setOpen = externalSetOpen || setInternalOpen; return ( - <> - - -
-
-
-
-
- + +
+
+
+
+
+ +
+
+
+ {t("environments.integrations.plain.add_key")}
-
-
- {t("environments.actions.track_new_user_action")} -
-
- {t("environments.actions.track_user_action_to_display_surveys_or_create_user_segment")} -
+
+ {t("environments.integrations.plain.add_key_description")}
- - +
+
+ + setKeyLabel(e.target.value)} + className="w-full" + /> +
+
+ + +
+
+
+ ); }; diff --git a/apps/web/app/(app)/environments/[environmentId]/integrations/plain/components/PlainWrapper.tsx b/apps/web/app/(app)/environments/[environmentId]/integrations/plain/components/PlainWrapper.tsx index 9cb4bd15cb..3559024ecb 100644 --- a/apps/web/app/(app)/environments/[environmentId]/integrations/plain/components/PlainWrapper.tsx +++ b/apps/web/app/(app)/environments/[environmentId]/integrations/plain/components/PlainWrapper.tsx @@ -58,7 +58,6 @@ export const PlainWrapper = ({ return ( <> - {isConnected && notionIntegration ? ( <> ) : ( - + <> + + + )} ); diff --git a/apps/web/locales/de-DE.json b/apps/web/locales/de-DE.json index 4f4d928ebb..060cccefd7 100644 --- a/apps/web/locales/de-DE.json +++ b/apps/web/locales/de-DE.json @@ -79,7 +79,6 @@ }, "signup_without_verification_success": { "user_successfully_created": "Benutzer erfolgreich erstellt", - "user_successfully_created_description": "Dein neuer Benutzer wurde erfolgreich erstellt. Bitte klicke auf den untenstehenden Button und melde Dich in deinem Konto an.", "user_successfully_created_info": "Wir haben nach einem Konto gesucht, das mit {email} verknüpft ist. Wenn keines existierte, haben wir eines für Dich erstellt. Wenn bereits ein Konto existierte, wurden keine Änderungen vorgenommen. Bitte melde Dich unten an, um fortzufahren." }, "testimonial_1": "Als open-source Firma ist uns Datenschutz extrem wichtig! Formbricks bietet die perfekte Mischung aus modernster Technologie und solidem Datenschutz.", @@ -92,12 +91,10 @@ "invalid_token": "Ungültiges Token ☹️", "new_email_verification_success": "Wenn die Adresse gültig ist, wurde eine Bestätigungs-E-Mail gesendet.", "no_email_provided": "Keine E-Mail bereitgestellt", - "please_click_the_link_in_the_email_to_activate_your_account": "Bitte klicke auf den Link in der E-Mail, um dein Konto zu aktivieren.", "please_confirm_your_email_address": "Bitte bestätige deine E-Mail-Adresse", "resend_verification_email": "Bestätigungs-E-Mail erneut senden", "verification_email_resent_successfully": "Bestätigungs-E-Mail gesendet! Bitte überprüfe dein Postfach.", "verification_email_successfully_sent_info": "Wenn ein Konto mit {email} verknüpft ist, haben wir einen Bestätigungslink an diese Adresse gesendet. Bitte überprüfe dein Postfach, um die Anmeldung abzuschließen.", - "we_sent_an_email_to": "Wir haben eine E-Mail an {email} gesendet", "you_didnt_receive_an_email_or_your_link_expired": "Hast Du keine E-Mail erhalten oder ist dein Link abgelaufen?" }, "verify": { @@ -132,6 +129,8 @@ "and": "und", "and_response_limit_of": "und Antwortlimit von", "anonymous": "Anonym", + "api_key_label": "Plain-API-Schlüssel", + "api_key_label_placeholder": "plainApiKey_xxxx", "api_keys": "API-Schlüssel", "app": "App", "app_survey": "App-Umfrage", @@ -708,6 +707,13 @@ "update_connection_tooltip": "Verbinde die Integration erneut, um neu hinzugefügte Datenbanken einzuschließen. Deine bestehenden Integrationen bleiben erhalten." }, "notion_integration_description": "Sende Daten an deine Notion Datenbank", + "plain": { + "add_key": "Plain-API-Schlüssel hinzufügen", + "add_key_description": "Fügen Sie Ihren Plain-API-Schlüssel hinzu, um sich mit Plain zu verbinden", + "connect_with_plain": "Mit Plain verbinden", + "plain_integration": "Plain Integration", + "plain_integration_description": "Threads auf Plain mit Formbricks-Antworten erstellen" + }, "please_select_a_survey_error": "Bitte wähle eine Umfrage aus", "select_at_least_one_question_error": "Bitte wähle mindestens eine Frage aus", "slack": { diff --git a/apps/web/locales/en-US.json b/apps/web/locales/en-US.json index 72872e179c..fac7214e32 100644 --- a/apps/web/locales/en-US.json +++ b/apps/web/locales/en-US.json @@ -79,7 +79,6 @@ }, "signup_without_verification_success": { "user_successfully_created": "User successfully created", - "user_successfully_created_description": "Your new user has been created successfully. Please click the button below and sign in to your account.", "user_successfully_created_info": "We’ve checked for an account associated with {email}. If none existed, we’ve created one for you. If an account already existed, no changes were made. Please log in below to continue." }, "testimonial_1": "We measure the clarity of our docs and learn from churn all on one platform. Great product, very responsive team!", @@ -92,12 +91,10 @@ "invalid_token": "Invalid token ☹️", "new_email_verification_success": "If the address is valid, a verification email has been sent.", "no_email_provided": "No email provided", - "please_click_the_link_in_the_email_to_activate_your_account": "Please click the link in the email to activate your account.", "please_confirm_your_email_address": "Please confirm your email address", "resend_verification_email": "Resend verification email", "verification_email_resent_successfully": "Verification email sent! Please check your inbox.", "verification_email_successfully_sent_info": "If there’s an account associated with {email}, we’ve sent a verification link to that address. Please check your inbox to complete the sign-up.", - "we_sent_an_email_to": "We sent an email to {email}. ", "you_didnt_receive_an_email_or_your_link_expired": "You didn't receive an email or your link expired?" }, "verify": { @@ -132,6 +129,8 @@ "and": "And", "and_response_limit_of": "and response limit of", "anonymous": "Anonymous", + "api_key_label": "Plain API key", + "api_key_label_placeholder": "plainApiKey_xxxx", "api_keys": "API Keys", "app": "App", "app_survey": "App Survey", @@ -708,6 +707,13 @@ "update_connection_tooltip": "Reconnect the integration to include newly added databases. Your existing integrations will remain intact." }, "notion_integration_description": "Send data to your Notion database", + "plain": { + "add_key": "Add Plain API Key", + "add_key_description": "Add your Plain API Key to connect with Plain", + "connect_with_plain": "Connect with Plain", + "plain_integration": "Plain Integration", + "plain_integration_description": "Create threads on Plain using Formbricks responses" + }, "please_select_a_survey_error": "Please select a survey", "select_at_least_one_question_error": "Please select at least one question", "slack": { diff --git a/apps/web/locales/fr-FR.json b/apps/web/locales/fr-FR.json index 82d48d9901..ba2c7779bd 100644 --- a/apps/web/locales/fr-FR.json +++ b/apps/web/locales/fr-FR.json @@ -79,7 +79,6 @@ }, "signup_without_verification_success": { "user_successfully_created": "Utilisateur créé avec succès", - "user_successfully_created_description": "Votre nouvel utilisateur a été créé avec succès. Veuillez cliquer sur le bouton ci-dessous et vous connecter à votre compte.", "user_successfully_created_info": "Nous avons vérifié s'il existait un compte associé à {email}. Si aucun n'existait, nous en avons créé un pour vous. Si un compte existait déjà, aucune modification n'a été apportée. Veuillez vous connecter ci-dessous pour continuer." }, "testimonial_1": "Nous mesurons la clarté de nos documents et apprenons des abandons, le tout sur une seule plateforme. Excellent produit, équipe très réactive !", @@ -92,12 +91,10 @@ "invalid_token": "Jeton non valide ☹️", "new_email_verification_success": "Si l'adresse est valide, un email de vérification a été envoyé.", "no_email_provided": "Aucun e-mail fourni", - "please_click_the_link_in_the_email_to_activate_your_account": "Veuillez cliquer sur le lien dans l'e-mail pour activer votre compte.", "please_confirm_your_email_address": "Veuillez confirmer votre adresse e-mail.", "resend_verification_email": "Renvoyer l'email de vérification", "verification_email_resent_successfully": "E-mail de vérification envoyé ! Veuillez vérifier votre boîte de réception.", "verification_email_successfully_sent_info": "Si un compte est associé à {email}, nous avons envoyé un lien de vérification à cette adresse. Veuillez vérifier votre boîte de réception pour terminer l'inscription.", - "we_sent_an_email_to": "Nous avons envoyé un email à {email}", "you_didnt_receive_an_email_or_your_link_expired": "Vous n'avez pas reçu d'email ou votre lien a expiré ?" }, "verify": { @@ -132,6 +129,8 @@ "and": "Et", "and_response_limit_of": "et limite de réponse de", "anonymous": "Anonyme", + "api_key_label": "Clé API Plain", + "api_key_label_placeholder": "plainApiKey_xxxx", "api_keys": "Clés API", "app": "Application", "app_survey": "Sondage d'application", @@ -708,6 +707,13 @@ "update_connection_tooltip": "Reconnectez l'intégration pour inclure les nouvelles bases de données ajoutées. Vos intégrations existantes resteront intactes." }, "notion_integration_description": "Envoyer des données à votre base de données Notion", + "plain": { + "add_key": "Ajouter une clé API Plain", + "add_key_description": "Ajoutez votre clé API Plain pour vous connecter avec Plain", + "connect_with_plain": "Se connecter avec Plain", + "plain_integration": "Intégration Plain", + "plain_integration_description": "Créer des fils sur Plain en utilisant les réponses de Formbricks" + }, "please_select_a_survey_error": "Veuillez sélectionner une enquête.", "select_at_least_one_question_error": "Veuillez sélectionner au moins une question.", "slack": { diff --git a/apps/web/locales/pt-BR.json b/apps/web/locales/pt-BR.json index 842e3725c3..52c2332e84 100644 --- a/apps/web/locales/pt-BR.json +++ b/apps/web/locales/pt-BR.json @@ -79,7 +79,6 @@ }, "signup_without_verification_success": { "user_successfully_created": "Usuário criado com sucesso", - "user_successfully_created_description": "Seu novo usuário foi criado com sucesso. Por favor, clique no botão abaixo e faça login na sua conta.", "user_successfully_created_info": "Verificamos se há uma conta associada a {email}. Se não existia, criamos uma para você. Se uma conta já existia, nenhuma alteração foi feita. Por favor, faça login abaixo para continuar." }, "testimonial_1": "Mediamos a clareza dos nossos documentos e aprendemos com a rotatividade tudo em uma única plataforma. Ótimo produto, equipe muito atenciosa!", @@ -92,12 +91,10 @@ "invalid_token": "Token inválido ☹️", "new_email_verification_success": "Se o endereço for válido, um email de verificação foi enviado.", "no_email_provided": "Nenhum e-mail fornecido", - "please_click_the_link_in_the_email_to_activate_your_account": "Por favor, clica no link do e-mail pra ativar sua conta.", "please_confirm_your_email_address": "Por favor, confirme seu endereço de e-mail", "resend_verification_email": "Reenviar e-mail de verificação", "verification_email_resent_successfully": "E-mail de verificação enviado! Por favor, verifique sua caixa de entrada.", "verification_email_successfully_sent_info": "Se houver uma conta associada a {email}, enviamos um link de verificação para esse endereço. Por favor, verifique sua caixa de entrada para completar o cadastro.", - "we_sent_an_email_to": "Enviamos um email para {email}", "you_didnt_receive_an_email_or_your_link_expired": "Você não recebeu um e-mail ou seu link expirou?" }, "verify": { @@ -132,6 +129,8 @@ "and": "E", "and_response_limit_of": "e limite de resposta de", "anonymous": "Anônimo", + "api_key_label": "Chave API do Plain", + "api_key_label_placeholder": "plainApiKey_xxxx", "api_keys": "Chaves de API", "app": "app", "app_survey": "Pesquisa de App", @@ -708,6 +707,13 @@ "update_connection_tooltip": "Reconecte a integração para incluir os novos bancos de dados adicionados. Suas integrações existentes permanecerão intactas." }, "notion_integration_description": "Enviar dados para seu banco de dados do Notion", + "plain": { + "add_key": "Adicionar Chave API do Plain", + "add_key_description": "Adicione sua chave API do Plain para conectar com o Plain", + "connect_with_plain": "Conectar com o Plain", + "plain_integration": "Integração com o Plain", + "plain_integration_description": "Criar threads no Plain usando respostas do Formbricks" + }, "please_select_a_survey_error": "Por favor, escolha uma pesquisa", "select_at_least_one_question_error": "Por favor, selecione pelo menos uma pergunta", "slack": { diff --git a/apps/web/locales/pt-PT.json b/apps/web/locales/pt-PT.json index b190aa1f07..f91957d4a0 100644 --- a/apps/web/locales/pt-PT.json +++ b/apps/web/locales/pt-PT.json @@ -79,7 +79,6 @@ }, "signup_without_verification_success": { "user_successfully_created": "Utilizador criado com sucesso", - "user_successfully_created_description": "O seu novo utilizador foi criado com sucesso. Por favor, clique no botão abaixo e inicie sessão na sua conta.", "user_successfully_created_info": "Verificámos a existência de uma conta associada a {email}. Se não existia, criámos uma para si. Se já existia uma conta, não foram feitas alterações. Por favor, inicie sessão abaixo para continuar." }, "testimonial_1": "Medimos a clareza dos nossos documentos e aprendemos com a rotatividade, tudo numa só plataforma. Ótimo produto, equipa muito responsiva!", @@ -92,12 +91,10 @@ "invalid_token": "Token inválido ☹️", "new_email_verification_success": "Se o endereço for válido, um email de verificação foi enviado.", "no_email_provided": "Nenhum email fornecido", - "please_click_the_link_in_the_email_to_activate_your_account": "Por favor, clique no link no email para ativar a sua conta.", "please_confirm_your_email_address": "Por favor, confirme o seu endereço de email", "resend_verification_email": "Reenviar email de verificação", "verification_email_resent_successfully": "Email de verificação enviado! Por favor, verifique a sua caixa de entrada.", "verification_email_successfully_sent_info": "Se houver uma conta associada a {email}, enviámos um link de verificação para esse endereço. Por favor, verifique a sua caixa de entrada para completar o registo.", - "we_sent_an_email_to": "Enviámos um email para {email}. ", "you_didnt_receive_an_email_or_your_link_expired": "Não recebeu um email ou o seu link expirou?" }, "verify": { @@ -132,6 +129,8 @@ "and": "E", "and_response_limit_of": "e limite de resposta de", "anonymous": "Anónimo", + "api_key_label": "Chave API do Plain", + "api_key_label_placeholder": "plainApiKey_xxxx", "api_keys": "Chaves API", "app": "Aplicação", "app_survey": "Inquérito da Aplicação", @@ -708,6 +707,13 @@ "update_connection_tooltip": "Restabeleça a integração para incluir as bases de dados recentemente adicionadas. As suas integrações existentes permanecerão intactas." }, "notion_integration_description": "Enviar dados para a sua base de dados do Notion", + "plain": { + "add_key": "Adicionar Chave API do Plain", + "add_key_description": "Adicione a sua chave API do Plain para ligar ao Plain", + "connect_with_plain": "Ligar ao Plain", + "plain_integration": "Integração com Plain", + "plain_integration_description": "Criar tópicos no Plain usando respostas do Formbricks" + }, "please_select_a_survey_error": "Por favor, selecione um inquérito", "select_at_least_one_question_error": "Por favor, selecione pelo menos uma pergunta", "slack": { diff --git a/apps/web/locales/zh-Hant-TW.json b/apps/web/locales/zh-Hant-TW.json index 70d73ad339..4bd9eab424 100644 --- a/apps/web/locales/zh-Hant-TW.json +++ b/apps/web/locales/zh-Hant-TW.json @@ -79,7 +79,6 @@ }, "signup_without_verification_success": { "user_successfully_created": "使用者建立成功", - "user_successfully_created_description": "您的新使用者已成功建立。請點擊下方按鈕並登入您的帳戶。", "user_successfully_created_info": "我們已檢查與 {email} 相關聯的帳戶。如果不存在,我們已為您建立一個。如果帳戶已存在,則未進行任何更改。請在下方登入以繼續。" }, "testimonial_1": "我們在同一個平台上測量文件的清晰度,並從客戶流失中學習。很棒的產品,團隊反應非常迅速!", @@ -92,12 +91,10 @@ "invalid_token": "無效的權杖 ☹️", "new_email_verification_success": "如果地址有效,驗證電子郵件已發送。", "no_email_provided": "未提供電子郵件", - "please_click_the_link_in_the_email_to_activate_your_account": "請點擊電子郵件中的連結以啟用您的帳戶。", "please_confirm_your_email_address": "請確認您的電子郵件地址", "resend_verification_email": "重新發送驗證電子郵件", "verification_email_resent_successfully": "驗證電子郵件已發送!請檢查您的收件箱。", "verification_email_successfully_sent_info": "如果有一個帳戶與 {email} 相關聯,我們已發送驗證連結至該地址。請檢查您的收件箱以完成註冊。", - "we_sent_an_email_to": "我們已發送一封電子郵件至 '{'email'}'。", "you_didnt_receive_an_email_or_your_link_expired": "您沒有收到電子郵件或您的連結已過期?" }, "verify": { @@ -132,6 +129,8 @@ "and": "且", "and_response_limit_of": "且回應上限為", "anonymous": "匿名", + "api_key_label": "Plain API 金鑰", + "api_key_label_placeholder": "plainApiKey_xxxx", "api_keys": "API 金鑰", "app": "應用程式", "app_survey": "應用程式問卷", @@ -708,6 +707,13 @@ "update_connection_tooltip": "重新連接整合以包含新添加的資料庫。您現有的整合將保持不變。" }, "notion_integration_description": "將資料傳送至您的 Notion 資料庫", + "plain": { + "add_key": "新增 Plain API 金鑰", + "add_key_description": "添加你的 Plain API Key 以連線 Plain", + "connect_with_plain": "連線 Plain", + "plain_integration": "Plain 整合", + "plain_integration_description": "使用 Formbricks 回應在 Plain 上建立 threads" + }, "please_select_a_survey_error": "請選取問卷", "select_at_least_one_question_error": "請選取至少一個問題", "slack": {