import { createRequire } from "node:module";
var __require = /* @__PURE__ */ createRequire(import.meta.url);

// src/components/marketing/sections/HeroMarketingSection.tsx
import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
import {
  analyticsEventNames,
  captureAnalyticsEvent
} from "@contractspec/bundle.library/libs/posthog/client";
import { Box, HStack, VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
import { H1, Lead, Small } from "@contractspec/lib.ui-kit-web/ui/typography";
import { ChevronRight } from "lucide-react";
import { jsxDEV } from "react/jsx-dev-runtime";
"use client";
var heroChips = ["Multi-Surface Sync", "No Lock-in", "Standard Tech"];
function HeroMarketingSection() {
  return /* @__PURE__ */ jsxDEV(MarketingSection, {
    tone: "gradient",
    padding: "spacious",
    align: "center",
    children: /* @__PURE__ */ jsxDEV(VStack, {
      gap: "lg",
      align: "center",
      className: "text-center",
      children: [
        /* @__PURE__ */ jsxDEV(Box, {
          as: "div",
          role: "presentation",
          className: "bg-muted text-muted-foreground inline-flex items-center rounded-full px-3 py-1 text-xs font-medium tracking-wider uppercase",
          children: "Open Source Core"
        }, undefined, false, undefined, this),
        /* @__PURE__ */ jsxDEV(H1, {
          className: "text-4xl leading-tight font-bold text-balance md:text-5xl",
          children: "Stabilize your AI-generated code"
        }, undefined, false, undefined, this),
        /* @__PURE__ */ jsxDEV(Lead, {
          className: "text-muted-foreground text-lg text-balance md:text-xl",
          children: "ContractSpec is the compiler that keeps AI-written software coherent, safe, and regenerable. You keep your app. You own the code. One module at a time."
        }, undefined, false, undefined, this),
        /* @__PURE__ */ jsxDEV(HStack, {
          gap: "md",
          justify: "center",
          wrap: "wrap",
          children: [
            /* @__PURE__ */ jsxDEV(ButtonLink, {
              href: "/install",
              onClick: () => captureAnalyticsEvent(analyticsEventNames.CTA_INSTALL_CLICK, {
                surface: "hero"
              }),
              children: [
                "Install OSS ",
                /* @__PURE__ */ jsxDEV(ChevronRight, {
                  size: 16
                }, undefined, false, undefined, this)
              ]
            }, undefined, true, undefined, this),
            /* @__PURE__ */ jsxDEV(ButtonLink, {
              variant: "ghost",
              href: "/contact#waitlist",
              onClick: () => captureAnalyticsEvent(analyticsEventNames.CTA_STUDIO_CLICK, {
                surface: "hero"
              }),
              children: "Join Studio Waitlist"
            }, undefined, false, undefined, this)
          ]
        }, undefined, true, undefined, this),
        /* @__PURE__ */ jsxDEV(HStack, {
          gap: "sm",
          justify: "center",
          wrap: "wrap",
          className: "pt-2",
          children: heroChips.map((chip) => /* @__PURE__ */ jsxDEV(Box, {
            as: "div",
            role: "presentation",
            className: "border-border text-foreground inline-flex items-center rounded-full border px-3 py-1 text-sm",
            children: /* @__PURE__ */ jsxDEV(Small, {
              className: "font-medium",
              children: chip
            }, undefined, false, undefined, this)
          }, chip, false, undefined, this))
        }, undefined, false, undefined, this)
      ]
    }, undefined, true, undefined, this)
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/IconGridSection.tsx
import { cva } from "class-variance-authority";
import {
  MarketingCardsSection,
  MarketingIconCard
} from "@contractspec/lib.design-system";
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
var itemVariants = cva("", {
  variants: {
    iconRole: {
      iconFirst: "",
      listing: "items-start",
      support: "items-start"
    }
  },
  defaultVariants: { iconRole: "iconFirst" }
});
function IconGridSection({
  eyebrow,
  title,
  subtitle,
  items,
  tone = "default",
  padding,
  columns = 3,
  iconRole = "iconFirst"
}) {
  return /* @__PURE__ */ jsxDEV2(MarketingCardsSection, {
    tone,
    padding,
    eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV2(Muted, {
      className: "text-xs font-semibold tracking-[0.2em] uppercase",
      children: eyebrow
    }, undefined, false, undefined, this) : null,
    title,
    subtitle: subtitle ? /* @__PURE__ */ jsxDEV2(Muted, {
      className: "text-lg",
      children: subtitle
    }, undefined, false, undefined, this) : null,
    columns,
    children: items.map((card) => /* @__PURE__ */ jsxDEV2(MarketingIconCard, {
      icon: card.icon,
      title: card.title,
      description: card.description,
      tone: card.tone,
      iconClassName: card.iconClassName,
      variant: iconRole === "listing" ? "listing" : iconRole === "support" ? "support" : "iconFirst",
      className: itemVariants({ iconRole })
    }, card.title, false, undefined, this))
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/ProblemSection.tsx
import { AlertTriangle, Layers, RefreshCw, XCircle } from "lucide-react";
import { jsxDEV as jsxDEV3 } from "react/jsx-dev-runtime";
var problemItems = [
  {
    icon: AlertTriangle,
    title: "Can't enforce invariants",
    description: "AI-generated code drifts from business rules over time. No source of truth means no safety.",
    iconClassName: "text-red-400"
  },
  {
    icon: Layers,
    title: "Multi-surface chaos",
    description: "API, DB, UI, and events get out of sync. One change breaks three surfaces.",
    iconClassName: "text-orange-400"
  },
  {
    icon: RefreshCw,
    title: "Hallucinated refactors",
    description: 'AI "improvements" introduce subtle bugs and break contracts you didn’t know existed.',
    iconClassName: "text-amber-400"
  },
  {
    icon: XCircle,
    title: "Unmaintainable spaghetti",
    description: "Teams ship fast initially, then spend months untangling AI-generated chaos.",
    iconClassName: "text-red-400"
  }
];
function ProblemSection() {
  return /* @__PURE__ */ jsxDEV3(IconGridSection, {
    tone: "muted",
    columns: 4,
    eyebrow: "The Problem",
    title: "AI agents write code fast. Then the chaos begins.",
    subtitle: 'In 2025, "vibe coding" and AI agents generate enormous amounts of code. But they have critical limitations that destroy long-term maintainability.',
    items: problemItems
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/SolutionSection.tsx
import { FileCode, Layers as Layers2, RefreshCw as RefreshCw2, Shield } from "lucide-react";
import { jsxDEV as jsxDEV4 } from "react/jsx-dev-runtime";
var solutionItems = [
  {
    icon: FileCode,
    title: "Canonical Source of Truth",
    description: "Contracts define what the system should do, not just what it does. AI agents read specs, not implementations.",
    iconClassName: "text-emerald-400"
  },
  {
    icon: Layers2,
    title: "Multi-Surface Consistency",
    description: "One spec generates API, DB, UI, events, and MCP tools. All surfaces stay in sync because they share the same source.",
    iconClassName: "text-blue-400"
  },
  {
    icon: RefreshCw2,
    title: "Safe Regeneration",
    description: "Regenerate code anytime without fear. Specs enforce invariants. Breaking changes caught at compile time.",
    iconClassName: "text-violet-400"
  },
  {
    icon: Shield,
    title: "AI Governance",
    description: "Constrain what AI agents can change. Enforce contracts they must respect. Flag violations automatically.",
    iconClassName: "text-pink-400"
  }
];
function SolutionSection() {
  return /* @__PURE__ */ jsxDEV4(IconGridSection, {
    tone: "default",
    columns: 4,
    eyebrow: "The Solution",
    title: "ContractSpec: The safety layer for AI-coded systems",
    subtitle: "Define contracts once. Generate consistent code across all surfaces. Regenerate safely anytime. No lock-in.",
    items: solutionItems
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/FearsSection.tsx
import { CheckCircle, Code, Unlock, Zap } from "lucide-react";
import { jsxDEV as jsxDEV5 } from "react/jsx-dev-runtime";
var fears = [
  {
    title: '"I already have an app"',
    body: "ContractSpec works with existing codebases. You don't start over — you stabilize incrementally, one module at a time. Start with one API endpoint, one data model, one contract.",
    icon: CheckCircle
  },
  {
    title: '"Vendor lock-in / losing ownership"',
    body: "You own the generated code. It's standard TypeScript, standard SQL, standard GraphQL. ContractSpec is a compiler — like TypeScript itself. You can eject anytime.",
    icon: Unlock
  },
  {
    title: '"Adoption cost / learning curve"',
    body: "Specs are just TypeScript. If you can write z.object({ name: z.string() }), you can write a ContractSpec. No new language, no magic DSL, no YAML.",
    icon: Code
  },
  {
    title: '"Forced migrations / magical runtime"',
    body: "ContractSpec generates plain code you can read, debug, and modify. There's no proprietary runtime. Migrations are explicit, reversible, and in your control.",
    icon: Zap
  }
];
function FearsSection() {
  return /* @__PURE__ */ jsxDEV5(IconGridSection, {
    tone: "muted",
    columns: 2,
    eyebrow: "We Get It",
    title: "Your fears, addressed",
    subtitle: "We know what you're thinking. Here's why those concerns don't apply to ContractSpec.",
    iconRole: "support",
    items: fears.map((item) => ({
      icon: item.icon,
      title: item.title,
      description: item.body,
      iconClassName: "text-violet-400"
    }))
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/CorePositioningSection.tsx
import { MarketingSection as MarketingSection2, ButtonLink as ButtonLink2 } from "@contractspec/lib.design-system";
import { VStack as VStack2 } from "@contractspec/lib.ui-kit-web/ui/stack";
import { H2, Lead as Lead2, Small as Small2 } from "@contractspec/lib.ui-kit-web/ui/typography";
import { ChevronRight as ChevronRight2 } from "lucide-react";
import { jsxDEV as jsxDEV6 } from "react/jsx-dev-runtime";
function CorePositioningSection() {
  return /* @__PURE__ */ jsxDEV6(MarketingSection2, {
    tone: "gradient",
    padding: "comfortable",
    align: "center",
    maxWidth: "lg",
    children: /* @__PURE__ */ jsxDEV6(VStack2, {
      gap: "md",
      align: "center",
      children: [
        /* @__PURE__ */ jsxDEV6(H2, {
          className: "text-center text-3xl font-bold md:text-4xl",
          children: [
            "You keep your app.",
            /* @__PURE__ */ jsxDEV6("br", {}, undefined, false, undefined, this),
            "We stabilize it, one module at a time."
          ]
        }, undefined, true, undefined, this),
        /* @__PURE__ */ jsxDEV6(Lead2, {
          className: "text-center",
          children: [
            "You own the code. It's standard tech.",
            /* @__PURE__ */ jsxDEV6("br", {}, undefined, false, undefined, this),
            /* @__PURE__ */ jsxDEV6(Small2, {
              className: "font-semibold text-violet-400",
              children: "We're the compiler, not the prison."
            }, undefined, false, undefined, this)
          ]
        }, undefined, true, undefined, this),
        /* @__PURE__ */ jsxDEV6(VStack2, {
          as: "div",
          gap: "sm",
          align: "center",
          className: "pt-2 sm:flex sm:flex-row sm:flex-wrap sm:items-center sm:justify-center",
          children: [
            /* @__PURE__ */ jsxDEV6(ButtonLink2, {
              href: "/pricing#waitlist",
              children: [
                "Join waitlist ",
                /* @__PURE__ */ jsxDEV6(ChevronRight2, {
                  size: 16
                }, undefined, false, undefined, this)
              ]
            }, undefined, true, undefined, this),
            /* @__PURE__ */ jsxDEV6(ButtonLink2, {
              variant: "ghost",
              href: "/contact",
              children: "Book a call"
            }, undefined, false, undefined, this)
          ]
        }, undefined, true, undefined, this)
      ]
    }, undefined, true, undefined, this)
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/AudienceSection.tsx
import {
  MarketingCard,
  MarketingCardContent,
  MarketingCardHeader,
  MarketingCardTitle,
  MarketingCardsSection as MarketingCardsSection2
} from "@contractspec/lib.design-system";
import { VStack as VStack3 } from "@contractspec/lib.ui-kit-web/ui/stack";
import { Muted as Muted2, Small as Small3 } from "@contractspec/lib.ui-kit-web/ui/typography";
import { jsxDEV as jsxDEV7 } from "react/jsx-dev-runtime";
var audiences = [
  {
    tier: "Tier 1: Priority",
    title: "AI-Native Startups & Technical Founders",
    body: "Solo founders or small teams using Cursor, Copilot, Claude, or AI agents heavily. Messy AI-generated backends and frontends, inconsistent APIs, code that is hard to refactor.",
    need: "Need: A way to stabilize AI-generated code without rewriting it."
  },
  {
    tier: "Tier 1: Priority",
    title: "Small Teams with AI-Generated Chaos",
    body: "2-10 person teams that shipped fast with AI and now have tech debt. Multiple surfaces out of sync, no source of truth, afraid to touch AI-generated code.",
    need: "Need: Incremental stabilization, safe regeneration, contracts as guardrails."
  },
  {
    tier: "Tier 2: Growth",
    title: "AI Dev Agencies",
    body: "Agencies building many projects for clients using AI-assisted development. Repeating the same patterns, inconsistent quality across projects, handoff nightmares.",
    need: "Need: Reusable templates, consistent contracts, professional handoff artifacts."
  },
  {
    tier: "Tier 2: Growth",
    title: "Scaleups with Compliance Needs",
    body: "Growing companies that need audit trails, API governance, or regulatory compliance. AI-generated code doesn't meet compliance requirements.",
    need: "Need: Governance layer, change tracking, contract enforcement."
  }
];
function AudienceSection() {
  return /* @__PURE__ */ jsxDEV7(MarketingCardsSection2, {
    tone: "default",
    columns: 2,
    eyebrow: "Who It's For",
    title: "Built for teams drowning in AI-generated code",
    maxWidth: "xl",
    children: audiences.map((item) => /* @__PURE__ */ jsxDEV7(MarketingCard, {
      tone: "muted",
      children: [
        /* @__PURE__ */ jsxDEV7(MarketingCardHeader, {
          className: "space-y-2",
          children: [
            /* @__PURE__ */ jsxDEV7(Small3, {
              className: "font-semibold text-blue-400",
              children: item.tier
            }, undefined, false, undefined, this),
            /* @__PURE__ */ jsxDEV7(MarketingCardTitle, {
              className: "text-xl",
              children: item.title
            }, undefined, false, undefined, this)
          ]
        }, undefined, true, undefined, this),
        /* @__PURE__ */ jsxDEV7(MarketingCardContent, {
          children: /* @__PURE__ */ jsxDEV7(VStack3, {
            gap: "sm",
            children: [
              /* @__PURE__ */ jsxDEV7(Muted2, {
                className: "text-sm leading-relaxed",
                children: item.body
              }, undefined, false, undefined, this),
              /* @__PURE__ */ jsxDEV7(Small3, {
                className: "font-medium text-violet-400",
                children: item.need
              }, undefined, false, undefined, this)
            ]
          }, undefined, true, undefined, this)
        }, undefined, false, undefined, this)
      ]
    }, item.title, true, undefined, this))
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/OutputsSection.tsx
import { jsxDEV as jsxDEV8 } from "react/jsx-dev-runtime";
var outputs = [
  {
    title: "REST API",
    description: "Type-safe endpoints with validation. Standard Express/Hono/Elysia handlers.",
    icon: "\uD83D\uDD0C"
  },
  {
    title: "GraphQL Schema",
    description: "Automatically generated resolvers. Standard Pothos/Apollo output.",
    icon: "\uD83D\uDCCA"
  },
  {
    title: "Database Schema",
    description: "Prisma migrations and types. Standard SQL underneath.",
    icon: "\uD83D\uDDC4️"
  },
  {
    title: "MCP Tools",
    description: "AI agent tool definitions. Works with Claude, GPT, and any MCP client.",
    icon: "\uD83E\uDD16"
  },
  {
    title: "Client SDKs",
    description: "Type-safe API clients. Standard fetch/axios underneath.",
    icon: "\uD83D\uDCE6"
  },
  {
    title: "UI Components",
    description: "React forms and views from specs. Standard JSX output.",
    icon: "\uD83C\uDFA8"
  }
];
function OutputsSection() {
  return /* @__PURE__ */ jsxDEV8(IconGridSection, {
    tone: "muted",
    columns: 3,
    title: "What ContractSpec generates",
    subtitle: "One contract, multiple outputs. All in sync. All standard tech.",
    iconRole: "iconFirst",
    items: outputs.map((item) => ({
      icon: () => /* @__PURE__ */ jsxDEV8("span", {
        "aria-hidden": true,
        className: "text-3xl",
        children: item.icon
      }, undefined, false, undefined, this),
      title: item.title,
      description: item.description
    }))
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/StepsSection.tsx
import { jsxDEV as jsxDEV9 } from "react/jsx-dev-runtime";
var steps = [
  {
    step: 1,
    title: "Pick one module",
    description: "Start with one API endpoint, one entity, one surface. No big-bang migration."
  },
  {
    step: 2,
    title: "Define the contract",
    description: "Write a spec in TypeScript. Just types and Zod schemas you already know."
  },
  {
    step: 3,
    title: "Generate & compare",
    description: "See what ContractSpec generates. Compare to your existing code. Keep what works."
  },
  {
    step: 4,
    title: "Expand gradually",
    description: "Add more contracts as you see value. No pressure. No lock-in. Your pace."
  }
];
function StepsSection() {
  return /* @__PURE__ */ jsxDEV9(IconGridSection, {
    tone: "default",
    columns: 4,
    title: "How incremental adoption works",
    padding: "comfortable",
    iconRole: "listing",
    items: steps.map((item) => ({
      icon: ({ className }) => /* @__PURE__ */ jsxDEV9("div", {
        className: `bg-primary/15 flex h-10 w-10 items-center justify-center rounded-lg ${className ?? ""}`,
        children: /* @__PURE__ */ jsxDEV9("span", {
          className: "text-primary text-sm font-semibold",
          children: item.step
        }, undefined, false, undefined, this)
      }, undefined, false, undefined, this),
      title: item.title,
      description: item.description,
      tone: "muted"
    }))
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/DevelopersSection.tsx
import {
  ButtonLink as ButtonLink3,
  MarketingComparisonSection
} from "@contractspec/lib.design-system";
import { jsxDEV as jsxDEV10 } from "react/jsx-dev-runtime";
var standardTech = [
  "TypeScript & Zod — schemas you already know",
  "Prisma — standard database access",
  "GraphQL or REST — your choice",
  "React or any UI framework",
  "Bun, Node, Deno — all supported"
];
var noMagic = [
  "Generated code is readable & modifiable",
  "No proprietary runtime dependencies",
  "Eject anytime, keep everything",
  "Works with your existing CI/CD",
  "Open spec format"
];
function DevelopersSection() {
  return /* @__PURE__ */ jsxDEV10(MarketingComparisonSection, {
    tone: "muted",
    title: "Built for developers",
    padding: "comfortable",
    left: { title: "Standard Tech Stack", items: standardTech },
    right: { title: "No Magic, No Lock-in", items: noMagic },
    subtitle: /* @__PURE__ */ jsxDEV10(ButtonLink3, {
      href: "/docs",
      children: [
        "Read the docs ",
        /* @__PURE__ */ jsxDEV10("span", {
          "aria-hidden": true,
          children: "→"
        }, undefined, false, undefined, this)
      ]
    }, undefined, true, undefined, this)
  }, undefined, false, undefined, this);
}

// src/components/marketing/sections/CtaSection.tsx
import { MarketingSection as MarketingSection3, ButtonLink as ButtonLink4 } from "@contractspec/lib.design-system";
import {
  analyticsEventNames as analyticsEventNames2,
  captureAnalyticsEvent as captureAnalyticsEvent2
} from "@contractspec/bundle.library/libs/posthog/client";
import { VStack as VStack4 } from "@contractspec/lib.ui-kit-web/ui/stack";
import { H2 as H22, Lead as Lead3 } from "@contractspec/lib.ui-kit-web/ui/typography";
import { jsxDEV as jsxDEV11 } from "react/jsx-dev-runtime";
function CtaSection() {
  return /* @__PURE__ */ jsxDEV11(MarketingSection3, {
    tone: "gradient",
    padding: "comfortable",
    align: "center",
    maxWidth: "lg",
    children: /* @__PURE__ */ jsxDEV11(VStack4, {
      gap: "md",
      align: "center",
      className: "text-center",
      children: [
        /* @__PURE__ */ jsxDEV11(H22, {
          className: "text-4xl font-bold md:text-5xl",
          children: "Ready to stabilize your codebase?"
        }, undefined, false, undefined, this),
        /* @__PURE__ */ jsxDEV11(Lead3, {
          className: "text-muted-foreground text-lg",
          children: "Start with one module. See the difference. Expand at your own pace."
        }, undefined, false, undefined, this),
        /* @__PURE__ */ jsxDEV11(VStack4, {
          as: "div",
          gap: "sm",
          align: "center",
          className: "pt-2 sm:flex sm:flex-row sm:flex-wrap sm:items-center sm:justify-center",
          children: [
            /* @__PURE__ */ jsxDEV11(ButtonLink4, {
              href: "/pricing#waitlist",
              onClick: () => captureAnalyticsEvent2(analyticsEventNames2.CTA_STUDIO_CLICK, {
                surface: "cta-section"
              }),
              children: "Join waitlist"
            }, undefined, false, undefined, this),
            /* @__PURE__ */ jsxDEV11(ButtonLink4, {
              variant: "ghost",
              href: "/contact",
              onClick: () => captureAnalyticsEvent2(analyticsEventNames2.CTA_STUDIO_CLICK, {
                surface: "cta-section",
                variant: "contact"
              }),
              children: "Book a call"
            }, undefined, false, undefined, this)
          ]
        }, undefined, true, undefined, this)
      ]
    }, undefined, true, undefined, this)
  }, undefined, false, undefined, this);
}

// src/components/marketing/LandingPage.tsx
import { VStack as VStack5 } from "@contractspec/lib.ui-kit-web/ui/stack";
import { jsxDEV as jsxDEV12 } from "react/jsx-dev-runtime";
"use client";
function LandingPage() {
  return /* @__PURE__ */ jsxDEV12(VStack5, {
    as: "main",
    gap: "none",
    children: [
      /* @__PURE__ */ jsxDEV12(HeroMarketingSection, {}, undefined, false, undefined, this),
      /* @__PURE__ */ jsxDEV12(ProblemSection, {}, undefined, false, undefined, this),
      /* @__PURE__ */ jsxDEV12(SolutionSection, {}, undefined, false, undefined, this),
      /* @__PURE__ */ jsxDEV12(FearsSection, {}, undefined, false, undefined, this),
      /* @__PURE__ */ jsxDEV12(CorePositioningSection, {}, undefined, false, undefined, this),
      /* @__PURE__ */ jsxDEV12(AudienceSection, {}, undefined, false, undefined, this),
      /* @__PURE__ */ jsxDEV12(OutputsSection, {}, undefined, false, undefined, this),
      /* @__PURE__ */ jsxDEV12(StepsSection, {}, undefined, false, undefined, this),
      /* @__PURE__ */ jsxDEV12(DevelopersSection, {}, undefined, false, undefined, this),
      /* @__PURE__ */ jsxDEV12(CtaSection, {}, undefined, false, undefined, this)
    ]
  }, undefined, true, undefined, this);
}
export {
  LandingPage
};
