diff --git a/apps/web/lib/constants.ts b/apps/web/lib/constants.ts index f877709ba6..fc344e5243 100644 --- a/apps/web/lib/constants.ts +++ b/apps/web/lib/constants.ts @@ -233,8 +233,8 @@ export enum STRIPE_PROJECT_NAMES { } export enum STRIPE_PRICE_LOOKUP_KEYS { - STARTUP_MONTHLY = "formbricks_startup_monthly", - STARTUP_YEARLY = "formbricks_startup_yearly", + STARTUP_MAY25_MONTHLY = "STARTUP_MAY25_MONTHLY", + STARTUP_MAY25_YEARLY = "STARTUP_MAY25_YEARLY", SCALE_MONTHLY = "formbricks_scale_monthly", SCALE_YEARLY = "formbricks_scale_yearly", } diff --git a/apps/web/locales/de-DE.json b/apps/web/locales/de-DE.json index 4376ffbce1..0c2794a353 100644 --- a/apps/web/locales/de-DE.json +++ b/apps/web/locales/de-DE.json @@ -316,6 +316,7 @@ "remove": "Entfernen", "reorder_and_hide_columns": "Spalten neu anordnen und ausblenden", "report_survey": "Umfrage melden", + "request_pricing": "Preise anfragen", "request_trial_license": "Testlizenz anfordern", "reset_to_default": "Auf Standard zurücksetzen", "response": "Antwort", @@ -980,12 +981,16 @@ }, "billing": { "10000_monthly_responses": "10,000 monatliche Antworten", + "1000_monthly_responses": "1,000 monatliche Antworten", "1500_monthly_responses": "1,500 monatliche Antworten", + "1_project": "1 Projekt", + "2000_contacts": "2,000 Kontakte", "2000_monthly_identified_users": "2,000 monatlich identifizierte Nutzer", "30000_monthly_identified_users": "30,000 monatlich identifizierte Nutzer", "3_projects": "3 Projekte", "5000_monthly_responses": "5,000 monatliche Antworten", "5_projects": "5 Projekte", + "7500_contacts": "7,500 Kontakte", "7500_monthly_identified_users": "7,500 monatlich identifizierte Nutzer", "advanced_targeting": "Erweitertes Targeting", "all_integrations": "Alle Integrationen", @@ -993,14 +998,19 @@ "annually": "Jährlich", "api_webhooks": "API & Webhooks", "app_surveys": "In-app Umfragen", + "attribute_based_targeting": "Attributbasiertes Targeting", "contact_us": "Kontaktiere uns", "current": "aktuell", "current_plan": "Aktueller Plan", "current_tier_limit": "Aktuelles Limit", + "custom": "Benutzerdefiniert & Skalierung", + "custom_contacts_limit": "Benutzerdefiniertes Kontaktlimit", "custom_miu_limit": "Benutzerdefiniertes MIU-Limit", "custom_project_limit": "Benutzerdefiniertes Projektlimit", + "custom_response_limit": "Benutzerdefiniertes Antwortlimit", "customer_success_manager": "Customer Success Manager", "email_embedded_surveys": "Eingebettete Umfragen in E-Mails", + "email_follow_ups": "E-Mail Follow-ups", "email_support": "E-Mail-Support", "enterprise": "Enterprise", "enterprise_description": "Premium-Support und benutzerdefinierte Limits.", @@ -1012,6 +1022,8 @@ "free_description": "Unbegrenzte Umfragen, Teammitglieder und mehr.", "get_2_months_free": "2 Monate gratis", "get_in_touch": "Kontaktiere uns", + "hosted_in_frankfurt": "Gehostet in Frankfurt", + "ios_android_sdks": "iOS & Android SDK für mobile Umfragen", "link_surveys": "Umfragen verlinken (teilbar)", "logic_jumps_hidden_fields_recurring_surveys": "Logik, versteckte Felder, wiederkehrende Umfragen, usw.", "manage_card_details": "Karteninformationen verwalten", @@ -1027,6 +1039,7 @@ "remove_branding": "Branding entfernen", "say_hi": "Sag Hi!", "scale": "Scale", + "scale_and_enterprise": "Scale & Enterprise", "scale_description": "Erweiterte Funktionen für größere Unternehmen.", "startup": "Start-up", "startup_description": "Alles in 'Free' mit zusätzlichen Funktionen.", diff --git a/apps/web/locales/en-US.json b/apps/web/locales/en-US.json index bec5287b37..07cc84d7ba 100644 --- a/apps/web/locales/en-US.json +++ b/apps/web/locales/en-US.json @@ -316,6 +316,7 @@ "remove": "Remove", "reorder_and_hide_columns": "Reorder and hide columns", "report_survey": "Report Survey", + "request_pricing": "Request Pricing", "request_trial_license": "Request trial license", "reset_to_default": "Reset to default", "response": "Response", @@ -980,12 +981,16 @@ }, "billing": { "10000_monthly_responses": "10000 Monthly Responses", + "1000_monthly_responses": "Monthly 1,000 Responses", "1500_monthly_responses": "1500 Monthly Responses", + "1_project": "1 Project", + "2000_contacts": "2,000 Contacts", "2000_monthly_identified_users": "2000 Monthly Identified Users", "30000_monthly_identified_users": "30000 Monthly Identified Users", "3_projects": "3 Projects", "5000_monthly_responses": "5,000 Monthly Responses", "5_projects": "5 Projects", + "7500_contacts": "7,500 Contacts", "7500_monthly_identified_users": "7500 Monthly Identified Users", "advanced_targeting": "Advanced Targeting", "all_integrations": "All Integrations", @@ -993,14 +998,19 @@ "annually": "Annually", "api_webhooks": "API & Webhooks", "app_surveys": "App Surveys", + "attribute_based_targeting": "Attribute-based Targeting", "contact_us": "Contact Us", "current": "Current", "current_plan": "Current Plan", "current_tier_limit": "Current Tier Limit", + "custom": "Custom & Scale", + "custom_contacts_limit": "Custom Contacts Limit", "custom_miu_limit": "Custom MIU limit", "custom_project_limit": "Custom Project Limit", + "custom_response_limit": "Custom Response Limit", "customer_success_manager": "Customer Success Manager", "email_embedded_surveys": "Email Embedded Surveys", + "email_follow_ups": "Email Follow-ups", "email_support": "Email Support", "enterprise": "Enterprise", "enterprise_description": "Premium support and custom limits.", @@ -1012,6 +1022,8 @@ "free_description": "Unlimited Surveys, Team Members, and more.", "get_2_months_free": "Get 2 months free", "get_in_touch": "Get in touch", + "hosted_in_frankfurt": "Hosted in Frankfurt", + "ios_android_sdks": "iOS & Android SDK for mobile surveys", "link_surveys": "Link Surveys (Shareable)", "logic_jumps_hidden_fields_recurring_surveys": "Logic Jumps, Hidden Fields, Recurring Surveys, etc.", "manage_card_details": "Manage Card Details", @@ -1027,6 +1039,7 @@ "remove_branding": "Remove Branding", "say_hi": "Say Hi!", "scale": "Scale", + "scale_and_enterprise": "Scale & Enterprise", "scale_description": "Advanced features for scaling your business.", "startup": "Startup", "startup_description": "Everything in Free with additional features.", diff --git a/apps/web/locales/fr-FR.json b/apps/web/locales/fr-FR.json index 02ac1b5e72..d8e8b4d6a2 100644 --- a/apps/web/locales/fr-FR.json +++ b/apps/web/locales/fr-FR.json @@ -316,6 +316,7 @@ "remove": "Retirer", "reorder_and_hide_columns": "Réorganiser et masquer des colonnes", "report_survey": "Rapport d'enquête", + "request_pricing": "Demander la tarification", "request_trial_license": "Demander une licence d'essai", "reset_to_default": "Réinitialiser par défaut", "response": "Réponse", @@ -980,12 +981,16 @@ }, "billing": { "10000_monthly_responses": "10000 Réponses Mensuelles", + "1000_monthly_responses": "1000 Réponses Mensuelles", "1500_monthly_responses": "1500 Réponses Mensuelles", + "1_project": "1 Projet", + "2000_contacts": "2 000 Contacts", "2000_monthly_identified_users": "2000 Utilisateurs Identifiés Mensuels", "30000_monthly_identified_users": "30000 Utilisateurs Identifiés Mensuels", "3_projects": "3 Projets", "5000_monthly_responses": "5,000 Réponses Mensuelles", "5_projects": "5 Projets", + "7500_contacts": "7 500 Contacts", "7500_monthly_identified_users": "7500 Utilisateurs Identifiés Mensuels", "advanced_targeting": "Ciblage Avancé", "all_integrations": "Toutes les intégrations", @@ -993,14 +998,19 @@ "annually": "Annuellement", "api_webhooks": "API et Webhooks", "app_surveys": "Sondages d'application", + "attribute_based_targeting": "Ciblage basé sur les attributs", "contact_us": "Contactez-nous", "current": "Actuel", "current_plan": "Plan actuel", "current_tier_limit": "Limite de niveau actuel", + "custom": "Personnalisé et Échelle", + "custom_contacts_limit": "Limite de contacts personnalisé", "custom_miu_limit": "Limite MIU personnalisé", "custom_project_limit": "Limite de projet personnalisé", + "custom_response_limit": "Limite de réponse personnalisé", "customer_success_manager": "Responsable de la réussite client", "email_embedded_surveys": "Sondages intégrés par e-mail", + "email_follow_ups": "Relances par e-mail", "email_support": "Support par e-mail", "enterprise": "Entreprise", "enterprise_description": "Soutien premium et limites personnalisées.", @@ -1012,6 +1022,8 @@ "free_description": "Sondages illimités, membres d'équipe, et plus encore.", "get_2_months_free": "Obtenez 2 mois gratuits", "get_in_touch": "Prenez contact", + "hosted_in_frankfurt": "Hébergé à Francfort", + "ios_android_sdks": "SDK iOS et Android pour les sondages mobiles", "link_surveys": "Sondages par lien (partageables)", "logic_jumps_hidden_fields_recurring_surveys": "Sauts logiques, champs cachés, enquêtes récurrentes, etc.", "manage_card_details": "Gérer les détails de la carte", @@ -1027,6 +1039,7 @@ "remove_branding": "Supprimer la marque", "say_hi": "Dis bonjour !", "scale": "Échelle", + "scale_and_enterprise": "Échelle et Entreprise", "scale_description": "Fonctionnalités avancées pour développer votre entreprise.", "startup": "Startup", "startup_description": "Tout est gratuit avec des fonctionnalités supplémentaires.", diff --git a/apps/web/locales/pt-BR.json b/apps/web/locales/pt-BR.json index ebb80aa9c9..1fd900890b 100644 --- a/apps/web/locales/pt-BR.json +++ b/apps/web/locales/pt-BR.json @@ -316,6 +316,7 @@ "remove": "remover", "reorder_and_hide_columns": "Reordenar e ocultar colunas", "report_survey": "Relatório de Pesquisa", + "request_pricing": "Solicitar Preços", "request_trial_license": "Pedir licença de teste", "reset_to_default": "Restaurar para o padrão", "response": "Resposta", @@ -980,12 +981,16 @@ }, "billing": { "10000_monthly_responses": "10000 Respostas Mensais", + "1000_monthly_responses": "1000 Respostas Mensais", "1500_monthly_responses": "1500 Respostas Mensais", + "1_project": "1 Projeto", + "2000_contacts": "2.000 Contatos", "2000_monthly_identified_users": "2000 Usuários Identificados Mensalmente", "30000_monthly_identified_users": "30000 Usuários Identificados Mensalmente", "3_projects": "3 Projetos", "5000_monthly_responses": "5,000 Respostas Mensais", "5_projects": "5 Projetos", + "7500_contacts": "7.500 Contatos", "7500_monthly_identified_users": "7500 Usuários Identificados Mensalmente", "advanced_targeting": "Mira Avançada", "all_integrations": "Todas as Integrações", @@ -993,14 +998,19 @@ "annually": "anualmente", "api_webhooks": "API e Webhooks", "app_surveys": "Pesquisas de App", + "attribute_based_targeting": "Segmentação Baseada em Atributos", "contact_us": "Fale Conosco", "current": "atual", "current_plan": "Plano Atual", "current_tier_limit": "Limite Atual de Nível", + "custom": "Personalizado e Escala", + "custom_contacts_limit": "Limite de Contatos Personalizado", "custom_miu_limit": "Limite MIU personalizado", "custom_project_limit": "Limite de Projeto Personalizado", + "custom_response_limit": "Limite de Resposta Personalizado", "customer_success_manager": "Gerente de Sucesso do Cliente", "email_embedded_surveys": "Pesquisas Incorporadas no Email", + "email_follow_ups": "Acompanhamentos por Email", "email_support": "Suporte por Email", "enterprise": "Empresa", "enterprise_description": "Suporte premium e limites personalizados.", @@ -1012,6 +1022,8 @@ "free_description": "Pesquisas ilimitadas, membros da equipe e mais.", "get_2_months_free": "Ganhe 2 meses grátis", "get_in_touch": "Entre em contato", + "hosted_in_frankfurt": "Hospedado em Frankfurt", + "ios_android_sdks": "SDK para iOS e Android para pesquisas móveis", "link_surveys": "Link de Pesquisas (Compartilhável)", "logic_jumps_hidden_fields_recurring_surveys": "Pulos Lógicos, Campos Ocultos, Pesquisas Recorrentes, etc.", "manage_card_details": "Gerenciar Detalhes do Cartão", @@ -1027,6 +1039,7 @@ "remove_branding": "Remover Marca", "say_hi": "Diz oi!", "scale": "escala", + "scale_and_enterprise": "Escala e Empresa", "scale_description": "Recursos avançados pra escalar seu negócio.", "startup": "startup", "startup_description": "Tudo no Grátis com recursos adicionais.", diff --git a/apps/web/locales/pt-PT.json b/apps/web/locales/pt-PT.json index 3f36d4e4b3..ee9b381b65 100644 --- a/apps/web/locales/pt-PT.json +++ b/apps/web/locales/pt-PT.json @@ -316,6 +316,7 @@ "remove": "Remover", "reorder_and_hide_columns": "Reordenar e ocultar colunas", "report_survey": "Relatório de Inquérito", + "request_pricing": "Pedido de Preços", "request_trial_license": "Solicitar licença de teste", "reset_to_default": "Repor para o padrão", "response": "Resposta", @@ -980,12 +981,16 @@ }, "billing": { "10000_monthly_responses": "10000 Respostas Mensais", + "1000_monthly_responses": "1000 Respostas Mensais", "1500_monthly_responses": "1500 Respostas Mensais", + "1_project": "1 Projeto", + "2000_contacts": "2,000 Contactos", "2000_monthly_identified_users": "2000 Utilizadores Identificados Mensalmente", "30000_monthly_identified_users": "30000 Utilizadores Identificados Mensalmente", "3_projects": "3 Projetos", "5000_monthly_responses": "5,000 Respostas Mensais", "5_projects": "5 Projetos", + "7500_contacts": "7,500 Contactos", "7500_monthly_identified_users": "7500 Utilizadores Identificados Mensalmente", "advanced_targeting": "Segmentação Avançada", "all_integrations": "Todas as Integrações", @@ -993,14 +998,19 @@ "annually": "Anualmente", "api_webhooks": "API e Webhooks", "app_surveys": "Inquéritos da Aplicação", + "attribute_based_targeting": "Segmentação Baseada em Atributos", "contact_us": "Contacte-nos", "current": "Atual", "current_plan": "Plano Atual", "current_tier_limit": "Limite Atual do Nível", + "custom": "Personalizado e Escala", + "custom_contacts_limit": "Limite de Contactos Personalizado", "custom_miu_limit": "Limite MIU Personalizado", "custom_project_limit": "Limite de Projeto Personalizado", + "custom_response_limit": "Limite de Resposta Personalizado", "customer_success_manager": "Gestor de Sucesso do Cliente", "email_embedded_surveys": "Inquéritos Incorporados no Email", + "email_follow_ups": "Acompanhamentos por Email", "email_support": "Suporte por Email", "enterprise": "Empresa", "enterprise_description": "Suporte premium e limites personalizados.", @@ -1012,6 +1022,8 @@ "free_description": "Inquéritos ilimitados, membros da equipa e mais.", "get_2_months_free": "Obtenha 2 meses grátis", "get_in_touch": "Entre em contacto", + "hosted_in_frankfurt": "Hospedado em Frankfurt", + "ios_android_sdks": "SDK iOS e Android para inquéritos móveis", "link_surveys": "Ligar Inquéritos (Partilhável)", "logic_jumps_hidden_fields_recurring_surveys": "Saltos Lógicos, Campos Ocultos, Inquéritos Recorrentes, etc.", "manage_card_details": "Gerir Detalhes do Cartão", @@ -1027,6 +1039,7 @@ "remove_branding": "Remover Marca", "say_hi": "Diga Olá!", "scale": "Escala", + "scale_and_enterprise": "Escala e Empresa", "scale_description": "Funcionalidades avançadas para escalar o seu negócio.", "startup": "Inicialização", "startup_description": "Tudo no plano Gratuito com funcionalidades adicionais.", diff --git a/apps/web/locales/zh-Hant-TW.json b/apps/web/locales/zh-Hant-TW.json index 84564781b3..36192886f4 100644 --- a/apps/web/locales/zh-Hant-TW.json +++ b/apps/web/locales/zh-Hant-TW.json @@ -316,6 +316,7 @@ "remove": "移除", "reorder_and_hide_columns": "重新排序和隱藏欄位", "report_survey": "報告問卷", + "request_pricing": "請求定價", "request_trial_license": "請求試用授權", "reset_to_default": "重設為預設值", "response": "回應", @@ -980,12 +981,16 @@ }, "billing": { "10000_monthly_responses": "10000 個每月回應", + "1000_monthly_responses": "1000 個每月回應", "1500_monthly_responses": "1500 個每月回應", + "1_project": "1 個專案", + "2000_contacts": "2000 個聯絡人", "2000_monthly_identified_users": "2000 個每月識別使用者", "30000_monthly_identified_users": "30000 個每月識別使用者", "3_projects": "3 個專案", "5000_monthly_responses": "5000 個每月回應", "5_projects": "5 個專案", + "7500_contacts": "7500 個聯絡人", "7500_monthly_identified_users": "7500 個每月識別使用者", "advanced_targeting": "進階目標設定", "all_integrations": "所有整合", @@ -993,14 +998,19 @@ "annually": "每年", "api_webhooks": "API 和 Webhook", "app_surveys": "應用程式問卷", + "attribute_based_targeting": "基於屬性的定位", "contact_us": "聯絡我們", "current": "目前", "current_plan": "目前方案", "current_tier_limit": "目前層級限制", + "custom": "自訂 & 規模", + "custom_contacts_limit": "自訂聯絡人上限", "custom_miu_limit": "自訂 MIU 上限", "custom_project_limit": "自訂專案上限", + "custom_response_limit": "自訂回應上限", "customer_success_manager": "客戶成功經理", "email_embedded_surveys": "電子郵件嵌入式問卷", + "email_follow_ups": "電子郵件後續追蹤", "email_support": "電子郵件支援", "enterprise": "企業版", "enterprise_description": "頂級支援和自訂限制。", @@ -1012,6 +1022,8 @@ "free_description": "無限問卷、團隊成員等。", "get_2_months_free": "免費獲得 2 個月", "get_in_touch": "取得聯繫", + "hosted_in_frankfurt": "託管在 Frankfurt", + "ios_android_sdks": "iOS 和 Android SDK 用於行動問卷", "link_surveys": "連結問卷(可分享)", "logic_jumps_hidden_fields_recurring_surveys": "邏輯跳躍、隱藏欄位、定期問卷等。", "manage_card_details": "管理卡片詳細資料", @@ -1027,6 +1039,7 @@ "remove_branding": "移除品牌", "say_hi": "打個招呼!", "scale": "進階版", + "scale_and_enterprise": "規模 & 企業版", "scale_description": "用於擴展業務的進階功能。", "startup": "啟動版", "startup_description": "免費方案中的所有功能以及其他功能。", diff --git a/apps/web/modules/ee/billing/api/lib/constants.ts b/apps/web/modules/ee/billing/api/lib/constants.ts index 367e50976f..d93ddaf7d9 100644 --- a/apps/web/modules/ee/billing/api/lib/constants.ts +++ b/apps/web/modules/ee/billing/api/lib/constants.ts @@ -1,87 +1,87 @@ import { TFnType } from "@tolgee/react"; -export const getCloudPricingData = (t: TFnType) => { - return { - plans: [ - { - name: t("environments.settings.billing.free"), - id: "free", - featured: false, - description: t("environments.settings.billing.free_description"), - price: { monthly: "$0", yearly: "$0" }, - mainFeatures: [ - t("environments.settings.billing.unlimited_surveys"), - t("environments.settings.billing.unlimited_team_members"), - t("environments.settings.billing.3_projects"), - t("environments.settings.billing.1500_monthly_responses"), - t("environments.settings.billing.2000_monthly_identified_users"), - t("environments.settings.billing.website_surveys"), - t("environments.settings.billing.app_surveys"), - t("environments.settings.billing.unlimited_apps_websites"), - t("environments.settings.billing.link_surveys"), - t("environments.settings.billing.email_embedded_surveys"), - t("environments.settings.billing.logic_jumps_hidden_fields_recurring_surveys"), - t("environments.settings.billing.api_webhooks"), - t("environments.settings.billing.all_integrations"), - t("environments.settings.billing.all_surveying_features"), - ], - href: "https://app.formbricks.com/auth/signup?plan=free", - }, - { - name: t("environments.settings.billing.startup"), - id: "startup", - featured: false, - description: t("environments.settings.billing.startup_description"), - price: { monthly: "$39", yearly: "$390 " }, - mainFeatures: [ - t("environments.settings.billing.everything_in_free"), - t("environments.settings.billing.unlimited_surveys"), - t("environments.settings.billing.remove_branding"), - t("environments.settings.billing.email_support"), - t("environments.settings.billing.3_projects"), - t("environments.settings.billing.5000_monthly_responses"), - t("environments.settings.billing.7500_monthly_identified_users"), - ], - href: "https://app.formbricks.com/auth/signup?plan=startup", - }, - { - name: t("environments.settings.billing.scale"), - id: "scale", - featured: true, - description: t("environments.settings.billing.scale_description"), - price: { monthly: "$149", yearly: "$1,490" }, - mainFeatures: [ - t("environments.settings.billing.everything_in_startup"), - t("environments.settings.billing.team_access_roles"), - t("environments.settings.billing.multi_language_surveys"), - t("environments.settings.billing.advanced_targeting"), - t("environments.settings.billing.priority_support"), - t("environments.settings.billing.5_projects"), - t("environments.settings.billing.10000_monthly_responses"), - t("environments.settings.billing.30000_monthly_identified_users"), - ], - href: "https://app.formbricks.com/auth/signup?plan=scale", - }, - { - name: t("environments.settings.billing.enterprise"), - id: "enterprise", - featured: false, - description: t("environments.settings.billing.enterprise_description"), - price: { - monthly: t("environments.settings.billing.say_hi"), - yearly: t("environments.settings.billing.say_hi"), - }, - mainFeatures: [ - t("environments.settings.billing.everything_in_scale"), - t("environments.settings.billing.custom_project_limit"), - t("environments.settings.billing.custom_miu_limit"), - t("environments.settings.billing.premium_support_with_slas"), - t("environments.settings.billing.uptime_sla_99"), - t("environments.settings.billing.customer_success_manager"), - t("environments.settings.billing.technical_onboarding"), - ], - href: "https://cal.com/johannes/enterprise-cloud", - }, +export type TPricingPlan = { + id: string; + name: string; + featured: boolean; + CTA?: string; + description: string; + price: { + monthly: string; + yearly: string; + }; + mainFeatures: string[]; + href?: string; +}; + +export const getCloudPricingData = (t: TFnType): { plans: TPricingPlan[] } => { + const freePlan: TPricingPlan = { + id: "free", + name: t("environments.settings.billing.free"), + featured: false, + description: t("environments.settings.billing.free_description"), + price: { monthly: "$0", yearly: "$0" }, + mainFeatures: [ + t("environments.settings.billing.unlimited_surveys"), + t("environments.settings.billing.1000_monthly_responses"), + t("environments.settings.billing.2000_contacts"), + t("environments.settings.billing.1_project"), + t("environments.settings.billing.unlimited_team_members"), + t("environments.settings.billing.link_surveys"), + t("environments.settings.billing.website_surveys"), + t("environments.settings.billing.app_surveys"), + t("environments.settings.billing.ios_android_sdks"), + t("environments.settings.billing.email_embedded_surveys"), + t("environments.settings.billing.logic_jumps_hidden_fields_recurring_surveys"), + t("environments.settings.billing.api_webhooks"), + t("environments.settings.billing.all_integrations"), + t("environments.settings.billing.hosted_in_frankfurt") + " 🇪🇺", ], }; + + const startupPlan: TPricingPlan = { + id: "startup", + name: t("environments.settings.billing.startup"), + featured: true, + CTA: t("common.start_free_trial"), + description: t("environments.settings.billing.startup_description"), + price: { monthly: "$49", yearly: "$490" }, + mainFeatures: [ + t("environments.settings.billing.everything_in_free"), + t("environments.settings.billing.5000_monthly_responses"), + t("environments.settings.billing.7500_contacts"), + t("environments.settings.billing.3_projects"), + t("environments.settings.billing.remove_branding"), + t("environments.settings.billing.email_follow_ups"), + t("environments.settings.billing.attribute_based_targeting"), + ], + }; + + const customPlan: TPricingPlan = { + id: "enterprise", + name: t("environments.settings.billing.custom"), + featured: false, + CTA: t("common.request_pricing"), + description: t("environments.settings.billing.enterprise_description"), + price: { + monthly: t("environments.settings.billing.custom"), + yearly: t("environments.settings.billing.custom"), + }, + mainFeatures: [ + t("environments.settings.billing.everything_in_startup"), + t("environments.settings.billing.custom_response_limit"), + t("environments.settings.billing.custom_contacts_limit"), + t("environments.settings.billing.custom_project_limit"), + t("environments.settings.billing.team_access_roles"), + t("environments.project.languages.multi_language_surveys"), + t("environments.settings.enterprise.saml_sso"), + t("environments.settings.billing.uptime_sla_99"), + t("environments.settings.billing.premium_support_with_slas"), + ], + href: "https://app.formbricks.com/s/cm7k8esy20001jp030fh8a9o5?source=billingView&delivery=cloud", + }; + + return { + plans: [freePlan, startupPlan, customPlan], + }; }; diff --git a/apps/web/modules/ee/billing/components/pricing-card.tsx b/apps/web/modules/ee/billing/components/pricing-card.tsx index 680a9be2f4..da8841a300 100644 --- a/apps/web/modules/ee/billing/components/pricing-card.tsx +++ b/apps/web/modules/ee/billing/components/pricing-card.tsx @@ -8,19 +8,10 @@ import { useTranslate } from "@tolgee/react"; import { CheckIcon } from "lucide-react"; import { useMemo, useState } from "react"; import { TOrganization, TOrganizationBillingPeriod } from "@formbricks/types/organizations"; +import { TPricingPlan } from "../api/lib/constants"; interface PricingCardProps { - plan: { - id: string; - name: string; - featured: boolean; - price: { - monthly: string; - yearly: string; - }; - mainFeatures: string[]; - href: string; - }; + plan: TPricingPlan; planPeriod: TOrganizationBillingPeriod; organization: TOrganization; onUpgrade: () => Promise; @@ -28,7 +19,6 @@ interface PricingCardProps { projectFeatureKeys: { FREE: string; STARTUP: string; - SCALE: string; ENTERPRISE: string; }; } @@ -72,18 +62,33 @@ export const PricingCard = ({ return null; } - if (plan.id !== projectFeatureKeys.ENTERPRISE && plan.id !== projectFeatureKeys.FREE) { + if (plan.id === projectFeatureKeys.ENTERPRISE) { + return ( + + ); + } + + if (plan.id === projectFeatureKeys.STARTUP) { if (organization.billing.plan === projectFeatureKeys.FREE) { return ( ); } @@ -100,15 +105,20 @@ export const PricingCard = ({ ); } - return <>; + return null; }, [ isCurrentPlan, loading, onUpgrade, organization.billing.plan, + plan.CTA, + plan.featured, + plan.href, plan.id, projectFeatureKeys.ENTERPRISE, projectFeatureKeys.FREE, + projectFeatureKeys.STARTUP, + t, ]); return ( @@ -147,7 +157,7 @@ export const PricingCard = ({ : plan.price.yearly : t(plan.price.monthly)}

- {plan.name !== "Enterprise" && ( + {plan.id !== projectFeatureKeys.ENTERPRISE && (

/ {planPeriod === "monthly" ? "Month" : "Year"} @@ -171,16 +181,9 @@ export const PricingCard = ({ {t("environments.settings.billing.manage_subscription")} )} - - {organization.billing.plan !== plan.id && plan.id === projectFeatureKeys.ENTERPRISE && ( - - )}