diff --git a/src/i18n/locales/de/translation.json b/src/i18n/locales/de/translation.json index 634594f6..14a202b0 100644 --- a/src/i18n/locales/de/translation.json +++ b/src/i18n/locales/de/translation.json @@ -1046,8 +1046,8 @@ } }, "pricing": { - "title": "Preispläne", - "subtitle": "Wählen Sie den perfekten Plan für Ihren Metallbaubetrieb", + "title": "Preise", + "subtitle": "Einfache, transparente Preise für europäische Metallverarbeiter. Keine Verkaufsgespräche, keine versteckten Kosten.", "comingSoonTitle": "Preise kommen bald", "comingSoonSubtitle": "Professionelle Preispläne werden derzeit finalisiert", "comingSoonDescription": "Wir bereiten transparente, faire Preise für europäische Hersteller vor. Kontaktieren Sie uns für frühen Zugang und individuelle Angebote.", @@ -1057,73 +1057,111 @@ "save20": "20% sparen", "currentPlan": "Aktueller Plan", "choosePlan": "Plan wählen", - "upgrade": "Upgrade", + "upgrade": "Upgrade anfordern", "downgrade": "Downgrade", "contactSales": "Vertrieb kontaktieren", + "managePlan": "Plan verwalten", + "hostedPlans": "Gehostete Pläne", + "hostedPlansDescription": "Wir hosten alles auf Hetzner (EU). Sie zahlen für Hosting, Rechenleistung und Support.", + "alternatives": "Alternativen", + "alternativesDescription": "Volle Kontrolle benötigt oder spezielle Anforderungen?", "free": { "name": "Kostenlos", "price": "€0", - "description": "Perfekt für den Einstieg", + "description": "Starten und evaluieren", "features": [ - "Alle Funktionen enthalten", - "Bis zu 100 Aufträge pro Monat", - "Bis zu 1.000 Teile pro Monat", - "5 GB Speicher", - "10 GB Datennutzung pro Monat", - "Dokumentation verfügbar", - "Community-Support" + "25 Aufträge pro Monat", + "250 Teile pro Monat", + "500MB Speicher", + "Eingeschränkter API-Zugriff", + "Webhooks inklusive", + "MCP Server inklusive", + "Nur Dokumentation" ] }, "pro": { "name": "Pro", "price": "€97", - "description": "Optimal für wachsende Betriebe", + "description": "Für Produktionsbetriebe", "features": [ - "Unbegrenzte Benutzer", - "1.000 Aufträge pro Monat", - "10.000 Teile pro Monat", - "50 GB Speicher", + "500 Aufträge pro Monat", + "5.000 Teile pro Monat", + "10GB Speicher", "Vollständiger API-Zugriff", - "Multi-Tenant-Architektur", - "Prioritäts-E-Mail-Support", - "Erweiterte Analysen", - "Webhook-Integrationen" + "Webhooks", + "MCP Server", + "E-Mail-Support (ohne SLA)", + "Zusätzlicher Speicher auf Anfrage" ] }, "premium": { - "name": "Enterprise", + "name": "Premium", "price": "€497", - "description": "Maßgeschneiderte Lösung", + "description": "Für wachsende Betriebe", "features": [ - "Alles in Pro", - "Unbegrenzte Aufträge und Teile", - "Unbegrenzter Speicher", - "Unbegrenzte Nutzung", - "Self-Hosted (On-Premises)", - "Single-Tenant-Architektur", + "Fair Use (hohe Limits)", + "100GB Speicher", + "Vollständiger API-Zugriff", + "Webhooks", + "MCP Server", "SSO/SAML-Authentifizierung", - "Dedizierter Support-Kanal", - "Individuelles SLA", - "White-Label-Optionen", - "Erweiterte Sicherheitskontrollen" + "White-Label (optional)", + "Prioritäts-E-Mail-Support", + "Zusätzlicher Speicher auf Anfrage" ] }, + "enterprise": { + "name": "Enterprise", + "price": "Auf Anfrage", + "description": "Ihre Infrastruktur, wir deployen", + "features": [ + "Single-Tenant-Deployment", + "Ihr Netzwerk oder dediziert gehostet", + "Unbegrenzte Aufträge, Teile, Speicher", + "Vollständiger API, Webhooks, MCP Server", + "SSO/SAML-Authentifizierung", + "White-Label inklusive", + "Dedizierter Support-Kanal", + "Individuelles SLA bei Bedarf" + ], + "cta": "Angebot anfordern" + }, + "selfHosted": { + "name": "Self-Hosted", + "price": "€0", + "description": "Ihr Setup, Sie sind auf sich gestellt", + "features": [ + "Herunterladen und selbst betreiben", + "Unbegrenzte Aufträge, Teile, Speicher", + "Vollständiger API, Webhooks, MCP Server", + "Quellcode unter BSL 1.1", + "Community-Support über Docs", + "GitHub Discussions", + "Kein offizieller Support" + ], + "cta": "Auf GitHub ansehen", + "note": "Für technische Benutzer, datenschutzbewusste Unternehmen, oder diejenigen, die ohnehin nicht zahlen werden. Kostet uns nichts." + }, "perMonth": "/Monat", "perYear": "/Jahr", "billedMonthly": "Monatlich abgerechnet", "billedAnnually": "Jährlich abgerechnet", "howItWorks": { "title": "Wie es funktioniert", - "selfServiceTitle": "Ein MES, das Sie lieben werden", - "selfServiceDescription": "Eryxon Flow ist für Einfachheit konzipiert. Starten Sie kostenlos und richten Sie alles selbst ein, oder upgraden Sie auf Pro für höhere Limits und zusätzlichen Support. Vollständig auf Supabase gehostet, speziell für den europäischen Markt entwickelt.", + "selfServiceTitle": "Self-Service", + "selfServiceDescription": "Keine Onboarding-Gespräche. Keine Berater. Melden Sie sich an, konfigurieren Sie Ihre Stufen und Materialien, verbinden Sie Ihre API, und los. Nur Dokumentation und E-Mail-Support (Pro+).", "upgradeTitle": "Wie Sie upgraden", - "upgradeDescription": "Bereit für ein Upgrade? Klicken Sie auf die Schaltfläche 'Upgrade anfordern' oder 'Vertrieb kontaktieren' oben, um eine E-Mail an office@sheetmetalconnect.com zu senden. Wir werden uns mit den nächsten Schritten bei Ihnen melden.", - "usageTitle": "Nutzungsverfolgung & Plan-Verwaltung", - "usageDescription": "Überwachen Sie Ihre Nutzung, verfolgen Sie die Anzahl der Aufträge und Teile und verwalten Sie Ihr Abonnement auf Ihrer Mein Plan-Seite. Sie sehen Echtzeit-Nutzungsstatistiken und erhalten Warnungen, wenn Sie sich den Limits nähern." + "upgradeDescription": "Bereit für ein Upgrade? Klicken Sie auf \"Upgrade anfordern\", um office@sheetmetalconnect.com zu mailen. Wir melden uns mit den nächsten Schritten.", + "usageTitle": "Nutzung & Limits", + "usageDescription": "Überwachen Sie Ihre Nutzung auf Ihrer Mein Plan-Seite. Sie sehen Echtzeit-Statistiken und Warnungen, wenn Sie sich Limits nähern." }, "securityBanner": { "title": "Enterprise-Sicherheit", - "description": "Kostenlos & Pro: Multi-Tenant-Architektur mit vollständiger Datenisolierung pro Mandant. Row-Level-Security erzwingt Trennung auf Datenbankebene. Premium: Single-Tenant-Deployment mit dedizierter Infrastruktur, vollständig isoliert. Alle Stufen umfassen nur HTTPS-Verkehr, gehashte Passwörter, verschlüsselte API-Schlüssel und zeitlich begrenzte Dateizugriffe über signierte URLs." + "description": "Kostenlos, Pro & Premium: Multi-Tenant-Architektur mit vollständiger Datenisolierung pro Mandant. Row-Level-Security erzwingt Trennung auf Datenbankebene. Enterprise: Single-Tenant-Deployment auf Ihrer Infrastruktur. Alle Stufen umfassen HTTPS, gehashte Passwörter, verschlüsselte API-Schlüssel und signierte URLs für Dateizugriff." + }, + "whyHosted": { + "title": "Warum für Hosting bezahlen?", + "description": "Die meisten Metallverarbeiter sind keine DevOps-Leute. Sie werden nicht selbst hosten. Sie zahlen für Hosting, Rechenleistung und Support — nicht für die Software selbst." } }, "myPlan": { diff --git a/src/i18n/locales/en/translation.json b/src/i18n/locales/en/translation.json index c951c0f4..ad1e99e3 100644 --- a/src/i18n/locales/en/translation.json +++ b/src/i18n/locales/en/translation.json @@ -1178,8 +1178,8 @@ } }, "pricing": { - "title": "Pricing Plans", - "subtitle": "Choose the perfect plan for your metal fabrication shop", + "title": "Pricing", + "subtitle": "Simple, transparent pricing for European metal fabricators. No sales calls, no hidden fees.", "comingSoonTitle": "Pricing Coming Soon", "comingSoonSubtitle": "Professional pricing plans are currently being finalized", "comingSoonDescription": "We're preparing transparent, fair pricing for European manufacturers. Contact us for early access and custom quotes.", @@ -1189,73 +1189,111 @@ "save20": "Save 20%", "currentPlan": "Current Plan", "choosePlan": "Choose Plan", - "upgrade": "Upgrade", + "upgrade": "Request Upgrade", "downgrade": "Downgrade", "contactSales": "Contact Sales", + "managePlan": "Manage Plan", + "hostedPlans": "Hosted Plans", + "hostedPlansDescription": "We host everything on Hetzner (EU). You pay for hosting, compute, and support.", + "alternatives": "Alternatives", + "alternativesDescription": "Need full control or have special requirements?", "free": { "name": "Free", "price": "€0", - "description": "Perfect for getting started", + "description": "Get started and evaluate", "features": [ - "All features included", - "Up to 100 jobs per month", - "Up to 1,000 parts per month", - "5GB storage", - "10GB data usage per month", - "Documentation available", - "Community support" + "25 jobs per month", + "250 parts per month", + "500MB storage", + "Limited API access", + "Webhooks included", + "MCP Server included", + "Documentation only" ] }, "pro": { "name": "Pro", "price": "€97", - "description": "Best for growing shops", + "description": "For production shops", "features": [ - "Unlimited users", - "1,000 jobs per month", - "10,000 parts per month", - "50GB storage", + "500 jobs per month", + "5,000 parts per month", + "10GB storage", "Full API access", - "Multi-tenant architecture", - "Priority email support", - "Advanced analytics", - "Webhook integrations" + "Webhooks", + "MCP Server", + "Email support (no SLA)", + "Extra storage on request" ] }, "premium": { - "name": "Enterprise", + "name": "Premium", "price": "€497", - "description": "Custom, bespoke solution", + "description": "For growing operations", "features": [ - "Everything in Pro", - "Unlimited jobs & parts", - "Unlimited storage", - "Unlimited usage", - "Self-hosted (on-premises)", - "Single-tenant architecture", + "Fair use (high limits)", + "100GB storage", + "Full API access", + "Webhooks", + "MCP Server", "SSO/SAML authentication", - "Dedicated support channel", - "Custom SLA", - "White-label options", - "Advanced security controls" + "White-label (optional)", + "Priority email support", + "Extra storage on request" ] }, + "enterprise": { + "name": "Enterprise", + "price": "By request", + "description": "Your infrastructure, I deploy", + "features": [ + "Single-tenant deployment", + "Your network or dedicated hosted", + "Unlimited jobs, parts, storage", + "Full API, Webhooks, MCP Server", + "SSO/SAML authentication", + "White-label included", + "Dedicated support channel", + "Custom SLA if needed" + ], + "cta": "Contact for Quote" + }, + "selfHosted": { + "name": "Self-Hosted", + "price": "€0", + "description": "Your setup, you're on your own", + "features": [ + "Download and run yourself", + "Unlimited jobs, parts, storage", + "Full API, Webhooks, MCP Server", + "Source code under BSL 1.1", + "Community support via docs", + "GitHub Discussions", + "No official support" + ], + "cta": "View on GitHub", + "note": "For technical users, privacy-conscious companies, or those who won't pay anyway. Costs us nothing." + }, "perMonth": "/month", "perYear": "/year", "billedMonthly": "Billed monthly", "billedAnnually": "Billed annually", "howItWorks": { "title": "How It Works", - "selfServiceTitle": "A MES You'll Love to Use", - "selfServiceDescription": "Eryxon Flow is designed for simplicity. Start free and set everything up yourself, or upgrade to Pro for higher tiers and additional support. Fully hosted on Supabase, built specifically for the European market.", + "selfServiceTitle": "Self-Service", + "selfServiceDescription": "No onboarding calls. No consultants. Sign up, configure your stages and materials, connect your API, and go. Documentation and email support (Pro+) only.", "upgradeTitle": "How to Upgrade", - "upgradeDescription": "Ready to upgrade? Click the 'Request Upgrade' or 'Contact Sales' button above to send an email to office@sheetmetalconnect.com. We'll get back to you with next steps.", - "usageTitle": "Usage Tracking & Plan Management", - "usageDescription": "Monitor your usage, track jobs and parts count, and manage your subscription from your My Plan page. You'll see real-time usage statistics and receive alerts when approaching tier limits." + "upgradeDescription": "Ready to upgrade? Click \"Request Upgrade\" to email office@sheetmetalconnect.com. We'll get back to you with next steps.", + "usageTitle": "Usage & Limits", + "usageDescription": "Monitor your usage from your My Plan page. You'll see real-time statistics and alerts when approaching limits." }, "securityBanner": { "title": "Enterprise-Grade Security", - "description": "Free & Pro: Multi-tenant architecture with complete data isolation per tenant. Row-level security enforces separation at the database level. Premium: Single-tenant deployment with dedicated infrastructure, completely air-gapped. All tiers include HTTPS traffic only, hashed passwords, encrypted API keys, and time-limited file access via signed URLs." + "description": "Free, Pro & Premium: Multi-tenant architecture with complete data isolation per tenant. Row-level security enforces separation at the database level. Enterprise: Single-tenant deployment on your infrastructure. All tiers include HTTPS, hashed passwords, encrypted API keys, and signed URLs for file access." + }, + "whyHosted": { + "title": "Why pay for hosted?", + "description": "Most metal fabricators aren't DevOps people. They won't self-host. You're paying for hosting, compute, and support — not for the software itself." } }, "myPlan": { diff --git a/src/i18n/locales/nl/translation.json b/src/i18n/locales/nl/translation.json index a0205500..392e0f92 100644 --- a/src/i18n/locales/nl/translation.json +++ b/src/i18n/locales/nl/translation.json @@ -1316,8 +1316,8 @@ } }, "pricing": { - "title": "Abonnementen", - "subtitle": "Kies het perfecte abonnement voor uw metaalbedrijf", + "title": "Prijzen", + "subtitle": "Eenvoudige, transparante prijzen voor Europese metaalbedrijven. Geen verkoopgesprekken, geen verborgen kosten.", "comingSoonTitle": "Prijzen komen binnenkort", "comingSoonSubtitle": "Professionele abonnementen worden momenteel afgerond", "comingSoonDescription": "We bereiden transparante, eerlijke prijzen voor Europese fabrikanten voor. Neem contact op voor vroege toegang en op maat gemaakte offertes.", @@ -1327,73 +1327,111 @@ "save20": "20% besparen", "currentPlan": "Huidig abonnement", "choosePlan": "Abonnement kiezen", - "upgrade": "Upgraden", + "upgrade": "Upgrade aanvragen", "downgrade": "Downgraden", "contactSales": "Contact verkoop", + "managePlan": "Abonnement beheren", + "hostedPlans": "Gehoste abonnementen", + "hostedPlansDescription": "Wij hosten alles op Hetzner (EU). U betaalt voor hosting, rekenkracht en ondersteuning.", + "alternatives": "Alternatieven", + "alternativesDescription": "Volledige controle nodig of speciale vereisten?", "free": { "name": "Gratis", "price": "€0", - "description": "Perfect om te beginnen", + "description": "Begin en evalueer", "features": [ - "Alle functies inbegrepen", - "Tot 100 opdrachten per maand", - "Tot 1.000 onderdelen per maand", - "5GB opslag", - "10GB datagebruik per maand", - "Documentatie beschikbaar", - "Community-ondersteuning" + "25 opdrachten per maand", + "250 onderdelen per maand", + "500MB opslag", + "Beperkte API-toegang", + "Webhooks inbegrepen", + "MCP Server inbegrepen", + "Alleen documentatie" ] }, "pro": { "name": "Pro", "price": "€97", - "description": "Ideaal voor groeiende bedrijven", + "description": "Voor productiebedrijven", "features": [ - "Onbeperkt aantal gebruikers", - "1.000 opdrachten per maand", - "10.000 onderdelen per maand", - "50GB opslag", + "500 opdrachten per maand", + "5.000 onderdelen per maand", + "10GB opslag", "Volledige API-toegang", - "Multi-tenant architectuur", - "Prioriteit e-mailondersteuning", - "Geavanceerde analyses", - "Webhook-integraties" + "Webhooks", + "MCP Server", + "E-mailondersteuning (geen SLA)", + "Extra opslag op aanvraag" ] }, "premium": { - "name": "Enterprise", + "name": "Premium", "price": "€497", - "description": "Op maat gemaakte oplossing", + "description": "Voor groeiende bedrijven", "features": [ - "Alles in Pro", - "Onbeperkte opdrachten en onderdelen", - "Onbeperkte opslag", - "Onbeperkt gebruik", - "Self-hosted (on-premises)", - "Single-tenant architectuur", + "Fair use (hoge limieten)", + "100GB opslag", + "Volledige API-toegang", + "Webhooks", + "MCP Server", "SSO/SAML authenticatie", - "Toegewijd ondersteuningskanaal", - "Aangepaste SLA", - "White-label opties", - "Geavanceerde beveiligingscontroles" + "White-label (optioneel)", + "Prioriteit e-mailondersteuning", + "Extra opslag op aanvraag" ] }, + "enterprise": { + "name": "Enterprise", + "price": "Op aanvraag", + "description": "Uw infrastructuur, wij implementeren", + "features": [ + "Single-tenant implementatie", + "Uw netwerk of dedicated gehost", + "Onbeperkte opdrachten, onderdelen, opslag", + "Volledige API, Webhooks, MCP Server", + "SSO/SAML authenticatie", + "White-label inbegrepen", + "Toegewijd ondersteuningskanaal", + "Aangepaste SLA indien nodig" + ], + "cta": "Vraag offerte aan" + }, + "selfHosted": { + "name": "Self-Hosted", + "price": "€0", + "description": "Uw setup, u bent op uzelf aangewezen", + "features": [ + "Download en draai zelf", + "Onbeperkte opdrachten, onderdelen, opslag", + "Volledige API, Webhooks, MCP Server", + "Broncode onder BSL 1.1", + "Community-ondersteuning via docs", + "GitHub Discussions", + "Geen officiële ondersteuning" + ], + "cta": "Bekijk op GitHub", + "note": "Voor technische gebruikers, privacybewuste bedrijven, of degenen die toch niet betalen. Kost ons niets." + }, "perMonth": "/maand", "perYear": "/jaar", "billedMonthly": "Maandelijks gefactureerd", "billedAnnually": "Jaarlijks gefactureerd", "howItWorks": { "title": "Hoe het werkt", - "selfServiceTitle": "Een MES waar u van houdt", - "selfServiceDescription": "Eryxon Flow is ontworpen voor eenvoud. Begin gratis en stel alles zelf in, of upgrade naar Pro voor hogere limieten en extra ondersteuning. Volledig gehost op Supabase, speciaal gemaakt voor de Europese markt.", + "selfServiceTitle": "Self-service", + "selfServiceDescription": "Geen onboarding-gesprekken. Geen consultants. Meld u aan, configureer uw fasen en materialen, sluit uw API aan, en ga. Alleen documentatie en e-mailondersteuning (Pro+).", "upgradeTitle": "Hoe upgraden", - "upgradeDescription": "Klaar om te upgraden? Klik op de 'Upgrade aanvragen' of 'Contact verkoop' knop hierboven om een e-mail te sturen naar office@sheetmetalconnect.com. We nemen zo snel mogelijk contact met u op met de volgende stappen.", - "usageTitle": "Gebruik bijhouden en abonnementsbeheer", - "usageDescription": "Monitor uw gebruik, houd het aantal opdrachten en onderdelen bij, en beheer uw abonnement vanaf uw Mijn abonnement-pagina. U ziet realtime gebruiksstatistieken en ontvangt waarschuwingen wanneer u de limieten nadert." + "upgradeDescription": "Klaar om te upgraden? Klik op \"Upgrade aanvragen\" om office@sheetmetalconnect.com te e-mailen. We nemen contact met u op met de volgende stappen.", + "usageTitle": "Gebruik & limieten", + "usageDescription": "Monitor uw gebruik vanaf uw Mijn abonnement-pagina. U ziet realtime statistieken en waarschuwingen wanneer u limieten nadert." }, "securityBanner": { - "title": "Beveiliging op Enterprise-niveau", - "description": "Gratis en Pro: Multi-tenant architectuur met volledige gegevensisolatie per tenant. Beveiliging op rijniveau zorgt voor scheiding op databaseniveau. Premium: Single-tenant implementatie met toegewijde infrastructuur, volledig afgeschermd. Alle niveaus omvatten alleen HTTPS-verkeer, gehashte wachtwoorden, versleutelde API-sleutels en tijdelijk beperkte bestandstoegang via ondertekende URL's." + "title": "Enterprise-niveau beveiliging", + "description": "Gratis, Pro & Premium: Multi-tenant architectuur met volledige gegevensisolatie per tenant. Beveiliging op rijniveau zorgt voor scheiding op databaseniveau. Enterprise: Single-tenant implementatie op uw infrastructuur. Alle niveaus bevatten HTTPS, gehashte wachtwoorden, versleutelde API-sleutels en ondertekende URL's voor bestandstoegang." + }, + "whyHosted": { + "title": "Waarom betalen voor gehost?", + "description": "De meeste metaalbedrijven zijn geen DevOps-mensen. Zij zullen niet zelf hosten. U betaalt voor hosting, rekenkracht en ondersteuning — niet voor de software zelf." } }, "myPlan": { diff --git a/src/pages/Pricing.tsx b/src/pages/Pricing.tsx index e9d44539..4098cad9 100644 --- a/src/pages/Pricing.tsx +++ b/src/pages/Pricing.tsx @@ -1,12 +1,13 @@ import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { Badge } from "@/components/ui/badge"; -import { Check, Mail, Shield, Server, Users, Zap, ArrowRight } from "lucide-react"; +import { Check, X, Mail, Shield, Server, Users, Zap, Star, ArrowRight, Building2, Github } from "lucide-react"; import { useSubscription } from "@/hooks/useSubscription"; import { Link } from "react-router-dom"; import { useTranslation } from "react-i18next"; -const pricingTiers = [ +// Main hosted tiers +const hostedTiers = [ { id: "free", nameKey: "pricing.free.name", @@ -36,28 +37,73 @@ const pricingTiers = [ priceKey: "pricing.premium.price", featuresKey: "pricing.premium.features", ctaKey: "pricing.contactSales", - icon: Server, + icon: Star, popular: false, gradient: true, }, ]; +// Alternative options +const alternativeTiers = [ + { + id: "enterprise", + nameKey: "pricing.enterprise.name", + descriptionKey: "pricing.enterprise.description", + priceKey: "pricing.enterprise.price", + featuresKey: "pricing.enterprise.features", + ctaKey: "pricing.enterprise.cta", + icon: Building2, + }, + { + id: "selfHosted", + nameKey: "pricing.selfHosted.name", + descriptionKey: "pricing.selfHosted.description", + priceKey: "pricing.selfHosted.price", + featuresKey: "pricing.selfHosted.features", + ctaKey: "pricing.selfHosted.cta", + noteKey: "pricing.selfHosted.note", + icon: Github, + isGithub: true, + }, +]; + export default function Pricing() { const { t } = useTranslation(); const { subscription, getPlanDisplayName } = useSubscription(); const currentPlan = subscription?.plan || 'free'; const handleUpgradeRequest = (tierName: string) => { - const subject = `Upgrade Request: ${tierName} Tier`; + const subject = `Upgrade Request: ${tierName} Plan`; const body = `Hello, -I would like to request an upgrade to the ${tierName} tier. +I would like to request an upgrade to the ${tierName} plan. Current Plan: ${getPlanDisplayName(currentPlan)} Tenant ID: ${subscription?.tenant_id || 'N/A'} Please provide me with more information about the upgrade process. +Thank you!`; + + window.location.href = `mailto:office@sheetmetalconnect.com?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; + }; + + const handleEnterpriseRequest = () => { + const subject = "Enterprise Inquiry"; + const body = `Hello, + +I'm interested in the Enterprise plan for Eryxon Flow. + +Current Plan: ${getPlanDisplayName(currentPlan)} +Tenant ID: ${subscription?.tenant_id || 'N/A'} + +I would like to discuss: +- Single-tenant deployment options +- Custom requirements +- Pricing + +Please get in touch to discuss further. + Thank you!`; window.location.href = `mailto:office@sheetmetalconnect.com?subject=${encodeURIComponent(subject)}&body=${encodeURIComponent(body)}`; @@ -66,7 +112,7 @@ Thank you!`; const isCurrentPlan = (tierId: string) => tierId === currentPlan; return ( -
+
{/* Header */}

{t("pricing.title")}

@@ -87,168 +133,254 @@ Thank you!`; )}
- {/* Security Banner */} - - -
- -
-

Enterprise-Grade Security

-

- Free & Pro: Multi-tenant architecture with complete data isolation per tenant. - Row-level security enforces separation at the database level. - {" "} - Enterprise: Single-tenant deployment - your infrastructure or dedicated hosted. - {" "} - All tiers include HTTPS, hashed passwords, encrypted API keys, and signed URLs for file access. -

-
-
-
-
+ {/* Section 1: Hosted Plans */} +
+
+

{t("pricing.hostedPlans")}

+

+ {t("pricing.hostedPlansDescription")} +

+
- {/* Self-Hosted Option */} - - -
- -
-

Self-Hosted (Free, Unlimited)

-

- Download it, run it yourself, you're on your own. Source code available under BSL 1.1. - Unlimited jobs, parts, storage. Full API, webhooks, MCP server. - Community support via docs and GitHub Discussions only. See the{" "} - - GitHub repository - . -

-
-
-
-
+
+ {hostedTiers.map((tier) => { + const Icon = tier.icon; + const isCurrent = isCurrentPlan(tier.id); + + return ( + + {isCurrent && ( + + {t("pricing.currentPlan")} + + )} + {tier.popular && !isCurrent && ( + + {t("onboarding.mostPopular")} + + )} - {/* Pricing Cards */} -
- {pricingTiers.map((tier) => { - const Icon = tier.icon; - const isCurrent = isCurrentPlan(tier.id); - - return ( - - {isCurrent && ( - - {t("pricing.currentPlan")} - - )} - {tier.popular && !isCurrent && ( - - {t("onboarding.mostPopular")} - - )} - - -
-
- + +
+
+ +
+
+ {t(tier.nameKey)} + {t(tier.descriptionKey)} +
-
- {t(tier.nameKey)} - {t(tier.descriptionKey)} + +
+
+ {t(tier.priceKey)} + {t("pricing.perMonth")} +
-
+
+ + +
    + {(t(tier.featuresKey, { returnObjects: true }) as string[]).map((feature, index) => { + const isNegative = feature.toLowerCase().startsWith('no ') || + feature.toLowerCase().startsWith('geen ') || + feature.toLowerCase().startsWith('kein'); + return ( +
  • + {isNegative ? ( + + ) : ( + + )} + {feature} +
  • + ); + })} +
+
+ + + {isCurrent ? ( + + + + ) : ( + + )} + + + ); + })} +
+
+ + {/* Section 2: Alternatives */} +
+
+

{t("pricing.alternatives")}

+

+ {t("pricing.alternativesDescription")} +

+
+ +
+ {alternativeTiers.map((tier) => { + const Icon = tier.icon; -
-
- {t(tier.priceKey)} - {t("pricing.perMonth")} + return ( + + +
+
+ +
+
+ {t(tier.nameKey)} + {t(tier.descriptionKey)} +
-
- - - -
    - {(t(tier.featuresKey, { returnObjects: true }) as string[]).map((feature, index) => ( -
  • - - {feature} -
  • - ))} -
-
- - - {isCurrent ? ( - + +
+
+ {t(tier.priceKey)} + {tier.id !== 'enterprise' && ( + {t("pricing.perMonth")} + )} +
+
+ + + +
    + {(t(tier.featuresKey, { returnObjects: true }) as string[]).map((feature, index) => ( +
  • + + {feature} +
  • + ))} +
+ {tier.noteKey && ( +

+ {t(tier.noteKey)} +

+ )} +
+ + + {tier.isGithub ? ( + + + + ) : ( - - ) : ( - - )} - - - ); - })} + )} +
+ + ); + })} +
- {/* FAQ / Additional Info */} + {/* Security Banner */} + + +
+ +
+

{t("pricing.securityBanner.title")}

+

+ {t("pricing.securityBanner.description")} +

+
+
+
+
+ + {/* How It Works */} - How It Works + {t("pricing.howItWorks.title")}
-

Self-Service

+

{t("pricing.howItWorks.selfServiceTitle")}

- No onboarding calls. No consultants. Sign up, configure your stages - and materials, connect your API, and go. Documentation and email support (Pro+) only. + {t("pricing.howItWorks.selfServiceDescription")}

-

How to Upgrade

+

{t("pricing.howItWorks.upgradeTitle")}

- Ready to upgrade? Click "Request Upgrade" above to email{' '} - - office@sheetmetalconnect.com - . We'll get back to you with next steps. + {t("pricing.howItWorks.upgradeDescription")}

-

Usage & Limits

+

{t("pricing.howItWorks.usageTitle")}

- Monitor your usage from your{' '} - My Plan page. - You'll see real-time statistics and alerts when approaching limits. + {t("pricing.howItWorks.usageDescription")}{' '} + + {t("navigation.myPlan")} +

+ + {/* Why Hosted */} + + +
+ +
+

{t("pricing.whyHosted.title")}

+

+ {t("pricing.whyHosted.description")} +

+
+
+
+
); }