diff --git a/frontend/src/components/Footer.tsx b/frontend/src/components/Footer.tsx index be55e0e9d..f88200376 100644 --- a/frontend/src/components/Footer.tsx +++ b/frontend/src/components/Footer.tsx @@ -1,4 +1,5 @@ import { Github, Twitter, Mail } from "lucide-react"; +import { Link } from "@tanstack/react-router"; import { DiscordIcon } from "./icons/DiscordIcon"; export function Footer() { @@ -52,24 +53,30 @@ export function Footer() {

Product

- Pricing - - + Downloads - - + Security Proof - + + + Teams +
diff --git a/frontend/src/components/Marketing.tsx b/frontend/src/components/Marketing.tsx index b26945334..007361d59 100644 --- a/frontend/src/components/Marketing.tsx +++ b/frontend/src/components/Marketing.tsx @@ -182,6 +182,8 @@ function PricingTier({ ); } +export { PricingTier }; + export function Marketing() { const [isIOS, setIsIOS] = useState(false); diff --git a/frontend/src/components/TopNav.tsx b/frontend/src/components/TopNav.tsx index f4b60fced..de8ed4045 100644 --- a/frontend/src/components/TopNav.tsx +++ b/frontend/src/components/TopNav.tsx @@ -52,6 +52,7 @@ export function TopNav() {
Pricing Proof + Teams setMobileMenuOpen(false)}> Proof + setMobileMenuOpen(false)}> + Teams + rootRoute, +} as any) + const SignupRoute = SignupImport.update({ id: '/signup', path: '/signup', @@ -206,6 +213,13 @@ declare module '@tanstack/react-router' { preLoaderRoute: typeof SignupImport parentRoute: typeof rootRoute } + '/teams': { + id: '/teams' + path: '/teams' + fullPath: '/teams' + preLoaderRoute: typeof TeamsImport + parentRoute: typeof rootRoute + } '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/password-reset/confirm': { id: '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/password-reset/confirm' path: '/confirm' @@ -280,6 +294,7 @@ export interface FileRoutesByFullPath { '/pricing': typeof PricingRoute '/proof': typeof ProofRoute '/signup': typeof SignupRoute + '/teams': typeof TeamsRoute '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/password-reset/confirm': typeof PasswordResetConfirmRoute '/verify/$code': typeof VerifyCodeRoute '/chat/$chatId': typeof AuthChatChatIdRoute @@ -299,6 +314,7 @@ export interface FileRoutesByTo { '/pricing': typeof PricingRoute '/proof': typeof ProofRoute '/signup': typeof SignupRoute + '/teams': typeof TeamsRoute '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/password-reset/confirm': typeof PasswordResetConfirmRoute '/verify/$code': typeof VerifyCodeRoute '/chat/$chatId': typeof AuthChatChatIdRoute @@ -319,6 +335,7 @@ export interface FileRoutesById { '/pricing': typeof PricingRoute '/proof': typeof ProofRoute '/signup': typeof SignupRoute + '/teams': typeof TeamsRoute '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/password-reset/confirm': typeof PasswordResetConfirmRoute '/verify/$code': typeof VerifyCodeRoute '/_auth/chat/$chatId': typeof AuthChatChatIdRoute @@ -340,6 +357,7 @@ export interface FileRouteTypes { | '/pricing' | '/proof' | '/signup' + | '/teams' | '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/password-reset/confirm' | '/verify/$code' | '/chat/$chatId' @@ -358,6 +376,7 @@ export interface FileRouteTypes { | '/pricing' | '/proof' | '/signup' + | '/teams' | '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/password-reset/confirm' | '/verify/$code' | '/chat/$chatId' @@ -376,6 +395,7 @@ export interface FileRouteTypes { | '/pricing' | '/proof' | '/signup' + | '/teams' | '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/password-reset/confirm' | '/verify/$code' | '/_auth/chat/$chatId' @@ -396,6 +416,7 @@ export interface RootRouteChildren { PricingRoute: typeof PricingRoute ProofRoute: typeof ProofRoute SignupRoute: typeof SignupRoute + TeamsRoute: typeof TeamsRoute VerifyCodeRoute: typeof VerifyCodeRoute AuthProviderCallbackRoute: typeof AuthProviderCallbackRoute TeamInviteInviteIdRoute: typeof TeamInviteInviteIdRoute @@ -413,6 +434,7 @@ const rootRouteChildren: RootRouteChildren = { PricingRoute: PricingRoute, ProofRoute: ProofRoute, SignupRoute: SignupRoute, + TeamsRoute: TeamsRoute, VerifyCodeRoute: VerifyCodeRoute, AuthProviderCallbackRoute: AuthProviderCallbackRoute, TeamInviteInviteIdRoute: TeamInviteInviteIdRoute, @@ -439,6 +461,7 @@ export const routeTree = rootRoute "/pricing", "/proof", "/signup", + "/teams", "/verify/$code", "/auth/$provider/callback", "/team/invite/$inviteId" @@ -483,6 +506,9 @@ export const routeTree = rootRoute "/signup": { "filePath": "signup.tsx" }, + "/teams": { + "filePath": "teams.tsx" + }, "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/password-reset/confirm": { "filePath": "password-reset.confirm.tsx", "parent": "/password-reset" diff --git a/frontend/src/routes/teams.tsx b/frontend/src/routes/teams.tsx new file mode 100644 index 000000000..262a49eb6 --- /dev/null +++ b/frontend/src/routes/teams.tsx @@ -0,0 +1,218 @@ +import { createFileRoute } from "@tanstack/react-router"; +import { TopNav } from "@/components/TopNav"; +import { FullPageMain } from "@/components/FullPageMain"; +import { MarketingHeader } from "@/components/MarketingHeader"; +import { Shield, Lock, Users, Sparkles, Building2, ArrowRight, FileText } from "lucide-react"; +import { Link } from "@tanstack/react-router"; +import { PricingTier } from "@/components/Marketing"; +import { PRICING_PLANS } from "@/config/pricingConfig"; + +export const Route = createFileRoute("/teams")({ + component: TeamsPage +}); + +function FeatureCard({ + icon: Icon, + title, + description +}: { + icon: React.ElementType; + title: string; + description: string; +}) { + return ( +
+
+ +
+

{title}

+

{description}

+
+ ); +} + +function TeamsPage() { + return ( + <> + + + + Confidential AI for Teams + + } + subtitle={ + + Secure, private AI for organizations that value trust. Collaborate with + confidence—Maple Teams keeps your data safe, even from us. + + } + /> + + {/* Hero CTA */} +
+ + Get Started with Teams + + + Request a Demo + +
+ + {/* Features Section */} +
+
+
+

+ Why Choose{" "} + Maple Teams? +

+

+ Maple Teams is built for organizations that handle sensitive data—law firms, therapy + practices, non-profits, and businesses that demand privacy. Share AI access, pool + usage, and collaborate securely with end-to-end encryption and confidential + computing. +

+
+
+ + + +
+
+
+ + {/* Security Section */} +
+
+
+

+ Security by Design +

+

+ Maple Teams is built from the ground up for privacy and compliance. Your data is + protected at every step—by cryptography, hardware, and open-source transparency. +

+
+
+ + + +
+
+
+ + {/* How It Works Section */} +
+
+
+

How Maple Teams Works

+
+
    +
  1. Purchase seats for your team
  2. +
  3. Invite members by email
  4. +
  5. Use AI securely with your data, encrypted
  6. +
+
+ +
+
+
+
+ + For Businesses +
+

+ Maple Teams is trusted by organizations in law, healthcare, finance, and + consulting. Draft contracts, analyze client data, and collaborate on sensitive + projects with full privacy and compliance. +

+
+
+
+ + For Non-Profits +
+

+ Non-profits and advocacy groups use Maple to securely manage sensitive + information, collaborate on grant writing, and protect the privacy of those they + serve—no IT headaches, just secure, private AI for your mission. +

+
+
+
+
+ + {/* Pricing/CTA Section */} +
+
+

Simple, Transparent Pricing

+

+ $30/month per seat. All features included. Priority support for teams. No hidden fees. +

+
+
+ plan.name === "Team")!.name} + price={PRICING_PLANS.find((plan) => plan.name === "Team")!.price} + description={PRICING_PLANS.find((plan) => plan.name === "Team")!.description} + features={PRICING_PLANS.find((plan) => plan.name === "Team")!.features} + ctaText={PRICING_PLANS.find((plan) => plan.name === "Team")!.ctaText} + popular={PRICING_PLANS.find((plan) => plan.name === "Team")!.popular} + /> +
+
+
+ Need a larger deployment or have compliance questions?{" "} + + Contact us + {" "} + for enterprise options. +
+
+
+ + + ); +}