@contractspec/bundle.marketing 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (262) hide show
  1. package/.turbo/turbo-build.log +146 -175
  2. package/.turbo/turbo-prebuild.log +1 -0
  3. package/CHANGELOG.md +29 -0
  4. package/dist/browser/components/marketing/ChangelogPage.js +92 -0
  5. package/dist/browser/components/marketing/CofounderPage.js +581 -0
  6. package/dist/browser/components/marketing/ContactClient.js +1379 -0
  7. package/dist/browser/components/marketing/ContributePage.js +487 -0
  8. package/dist/browser/components/marketing/DesignPartnerPage.js +272 -0
  9. package/dist/browser/components/marketing/LandingPage.js +629 -0
  10. package/dist/browser/components/marketing/PricingClient.js +1972 -0
  11. package/dist/browser/components/marketing/ProductClientPage.js +563 -0
  12. package/dist/browser/components/marketing/index.js +4818 -0
  13. package/dist/browser/components/marketing/pricing-thinking-modal.js +258 -0
  14. package/dist/browser/components/marketing/sections/AudienceSection.js +90 -0
  15. package/dist/browser/components/marketing/sections/CorePositioningSection.js +72 -0
  16. package/dist/browser/components/marketing/sections/CtaSection.js +67 -0
  17. package/dist/browser/components/marketing/sections/DevelopersSection.js +50 -0
  18. package/dist/browser/components/marketing/sections/FearsSection.js +105 -0
  19. package/dist/browser/components/marketing/sections/HeroMarketingSection.js +93 -0
  20. package/dist/browser/components/marketing/sections/IconGridSection.js +63 -0
  21. package/dist/browser/components/marketing/sections/OutputsSection.js +116 -0
  22. package/dist/browser/components/marketing/sections/ProblemSection.js +103 -0
  23. package/dist/browser/components/marketing/sections/SolutionSection.js +103 -0
  24. package/dist/browser/components/marketing/sections/StepsSection.js +109 -0
  25. package/dist/browser/components/marketing/waitlist-section.js +1104 -0
  26. package/dist/browser/components/templates/TemplatesClientPage.js +5662 -0
  27. package/dist/browser/components/templates/TemplatesPage.js +177 -0
  28. package/dist/browser/components/templates/TemplatesPreviewModal.js +124 -0
  29. package/dist/browser/components/templates/index.js +5831 -0
  30. package/dist/browser/index.js +6485 -0
  31. package/dist/browser/libs/email/client.js +122 -0
  32. package/dist/browser/libs/email/contact.js +190 -0
  33. package/dist/browser/libs/email/newsletter.js +215 -0
  34. package/dist/browser/libs/email/types.js +2 -0
  35. package/dist/browser/libs/email/utils.js +16 -0
  36. package/dist/browser/libs/email/waitlist-application.js +295 -0
  37. package/dist/browser/libs/email/waitlist.js +225 -0
  38. package/dist/browser/libs/pricing-examples.js +26 -0
  39. package/dist/browser/registry/engine.js +5293 -0
  40. package/dist/browser/registry/factory.js +52 -0
  41. package/dist/browser/registry/index.js +5358 -0
  42. package/dist/browser/registry/registry-docs.js +343 -0
  43. package/dist/browser/registry/registry-landing.js +4937 -0
  44. package/dist/browser/registry/registry.js +5279 -0
  45. package/dist/browser/registry/types.js +0 -0
  46. package/dist/browser/registry/utils.js +5340 -0
  47. package/dist/components/marketing/ChangelogPage.d.ts +11 -17
  48. package/dist/components/marketing/ChangelogPage.d.ts.map +1 -1
  49. package/dist/components/marketing/ChangelogPage.js +84 -62
  50. package/dist/components/marketing/CofounderPage.d.ts +1 -6
  51. package/dist/components/marketing/CofounderPage.d.ts.map +1 -1
  52. package/dist/components/marketing/CofounderPage.js +544 -436
  53. package/dist/components/marketing/ContactClient.d.ts +1 -6
  54. package/dist/components/marketing/ContactClient.d.ts.map +1 -1
  55. package/dist/components/marketing/ContactClient.js +1371 -155
  56. package/dist/components/marketing/ContributePage.d.ts +3 -8
  57. package/dist/components/marketing/ContributePage.d.ts.map +1 -1
  58. package/dist/components/marketing/ContributePage.js +478 -358
  59. package/dist/components/marketing/DesignPartnerPage.d.ts +3 -8
  60. package/dist/components/marketing/DesignPartnerPage.d.ts.map +1 -1
  61. package/dist/components/marketing/DesignPartnerPage.js +263 -211
  62. package/dist/components/marketing/LandingPage.d.ts +1 -6
  63. package/dist/components/marketing/LandingPage.d.ts.map +1 -1
  64. package/dist/components/marketing/LandingPage.js +623 -37
  65. package/dist/components/marketing/PricingClient.d.ts +1 -6
  66. package/dist/components/marketing/PricingClient.d.ts.map +1 -1
  67. package/dist/components/marketing/PricingClient.js +1962 -516
  68. package/dist/components/marketing/ProductClientPage.d.ts +1 -6
  69. package/dist/components/marketing/ProductClientPage.d.ts.map +1 -1
  70. package/dist/components/marketing/ProductClientPage.js +556 -458
  71. package/dist/components/marketing/index.d.ts +11 -11
  72. package/dist/components/marketing/index.d.ts.map +1 -0
  73. package/dist/components/marketing/index.js +4813 -12
  74. package/dist/components/marketing/pricing-thinking-modal.d.ts +5 -13
  75. package/dist/components/marketing/pricing-thinking-modal.d.ts.map +1 -1
  76. package/dist/components/marketing/pricing-thinking-modal.js +248 -197
  77. package/dist/components/marketing/sections/AudienceSection.d.ts +1 -6
  78. package/dist/components/marketing/sections/AudienceSection.d.ts.map +1 -1
  79. package/dist/components/marketing/sections/AudienceSection.js +80 -63
  80. package/dist/components/marketing/sections/CorePositioningSection.d.ts +1 -6
  81. package/dist/components/marketing/sections/CorePositioningSection.d.ts.map +1 -1
  82. package/dist/components/marketing/sections/CorePositioningSection.js +62 -54
  83. package/dist/components/marketing/sections/CtaSection.d.ts +1 -6
  84. package/dist/components/marketing/sections/CtaSection.d.ts.map +1 -1
  85. package/dist/components/marketing/sections/CtaSection.js +58 -50
  86. package/dist/components/marketing/sections/DevelopersSection.d.ts +1 -6
  87. package/dist/components/marketing/sections/DevelopersSection.d.ts.map +1 -1
  88. package/dist/components/marketing/sections/DevelopersSection.js +40 -40
  89. package/dist/components/marketing/sections/FearsSection.d.ts +1 -6
  90. package/dist/components/marketing/sections/FearsSection.d.ts.map +1 -1
  91. package/dist/components/marketing/sections/FearsSection.js +96 -44
  92. package/dist/components/marketing/sections/HeroMarketingSection.d.ts +1 -6
  93. package/dist/components/marketing/sections/HeroMarketingSection.d.ts.map +1 -1
  94. package/dist/components/marketing/sections/HeroMarketingSection.js +82 -71
  95. package/dist/components/marketing/sections/IconGridSection.d.ts +25 -39
  96. package/dist/components/marketing/sections/IconGridSection.d.ts.map +1 -1
  97. package/dist/components/marketing/sections/IconGridSection.js +55 -41
  98. package/dist/components/marketing/sections/OutputsSection.d.ts +1 -6
  99. package/dist/components/marketing/sections/OutputsSection.d.ts.map +1 -1
  100. package/dist/components/marketing/sections/OutputsSection.js +107 -55
  101. package/dist/components/marketing/sections/ProblemSection.d.ts +1 -6
  102. package/dist/components/marketing/sections/ProblemSection.d.ts.map +1 -1
  103. package/dist/components/marketing/sections/ProblemSection.js +94 -42
  104. package/dist/components/marketing/sections/SolutionSection.d.ts +1 -6
  105. package/dist/components/marketing/sections/SolutionSection.d.ts.map +1 -1
  106. package/dist/components/marketing/sections/SolutionSection.js +94 -42
  107. package/dist/components/marketing/sections/StepsSection.d.ts +1 -6
  108. package/dist/components/marketing/sections/StepsSection.d.ts.map +1 -1
  109. package/dist/components/marketing/sections/StepsSection.js +100 -48
  110. package/dist/components/marketing/waitlist-section.d.ts +5 -12
  111. package/dist/components/marketing/waitlist-section.d.ts.map +1 -1
  112. package/dist/components/marketing/waitlist-section.js +1089 -568
  113. package/dist/components/templates/TemplatesClientPage.d.ts +1 -6
  114. package/dist/components/templates/TemplatesClientPage.d.ts.map +1 -1
  115. package/dist/components/templates/TemplatesClientPage.js +5649 -617
  116. package/dist/components/templates/TemplatesPage.d.ts +1 -6
  117. package/dist/components/templates/TemplatesPage.d.ts.map +1 -1
  118. package/dist/components/templates/TemplatesPage.js +163 -116
  119. package/dist/components/templates/TemplatesPreviewModal.d.ts +5 -12
  120. package/dist/components/templates/TemplatesPreviewModal.d.ts.map +1 -1
  121. package/dist/components/templates/TemplatesPreviewModal.js +113 -131
  122. package/dist/components/templates/index.d.ts +4 -4
  123. package/dist/components/templates/index.d.ts.map +1 -0
  124. package/dist/components/templates/index.js +5825 -4
  125. package/dist/index.d.ts +9 -29
  126. package/dist/index.d.ts.map +1 -0
  127. package/dist/index.js +6480 -28
  128. package/dist/libs/email/client.d.ts +9 -12
  129. package/dist/libs/email/client.d.ts.map +1 -1
  130. package/dist/libs/email/client.js +109 -105
  131. package/dist/libs/email/client.test.d.ts +2 -0
  132. package/dist/libs/email/client.test.d.ts.map +1 -0
  133. package/dist/libs/email/contact.d.ts +2 -6
  134. package/dist/libs/email/contact.d.ts.map +1 -1
  135. package/dist/libs/email/contact.js +155 -41
  136. package/dist/libs/email/newsletter.d.ts +2 -6
  137. package/dist/libs/email/newsletter.d.ts.map +1 -1
  138. package/dist/libs/email/newsletter.js +169 -54
  139. package/dist/libs/email/types.d.ts +48 -52
  140. package/dist/libs/email/types.d.ts.map +1 -1
  141. package/dist/libs/email/types.js +3 -1
  142. package/dist/libs/email/utils.d.ts +2 -5
  143. package/dist/libs/email/utils.d.ts.map +1 -1
  144. package/dist/libs/email/utils.js +10 -6
  145. package/dist/libs/email/waitlist-application.d.ts +2 -6
  146. package/dist/libs/email/waitlist-application.d.ts.map +1 -1
  147. package/dist/libs/email/waitlist-application.js +191 -71
  148. package/dist/libs/email/waitlist.d.ts +2 -6
  149. package/dist/libs/email/waitlist.d.ts.map +1 -1
  150. package/dist/libs/email/waitlist.js +171 -56
  151. package/dist/libs/pricing-examples.d.ts +13 -16
  152. package/dist/libs/pricing-examples.d.ts.map +1 -1
  153. package/dist/libs/pricing-examples.js +20 -20
  154. package/dist/node/components/marketing/ChangelogPage.js +87 -0
  155. package/dist/node/components/marketing/CofounderPage.js +576 -0
  156. package/dist/node/components/marketing/ContactClient.js +1374 -0
  157. package/dist/node/components/marketing/ContributePage.js +482 -0
  158. package/dist/node/components/marketing/DesignPartnerPage.js +267 -0
  159. package/dist/node/components/marketing/LandingPage.js +624 -0
  160. package/dist/node/components/marketing/PricingClient.js +1967 -0
  161. package/dist/node/components/marketing/ProductClientPage.js +558 -0
  162. package/dist/node/components/marketing/index.js +4813 -0
  163. package/dist/node/components/marketing/pricing-thinking-modal.js +253 -0
  164. package/dist/node/components/marketing/sections/AudienceSection.js +85 -0
  165. package/dist/node/components/marketing/sections/CorePositioningSection.js +67 -0
  166. package/dist/node/components/marketing/sections/CtaSection.js +62 -0
  167. package/dist/node/components/marketing/sections/DevelopersSection.js +45 -0
  168. package/dist/node/components/marketing/sections/FearsSection.js +100 -0
  169. package/dist/node/components/marketing/sections/HeroMarketingSection.js +88 -0
  170. package/dist/node/components/marketing/sections/IconGridSection.js +58 -0
  171. package/dist/node/components/marketing/sections/OutputsSection.js +111 -0
  172. package/dist/node/components/marketing/sections/ProblemSection.js +98 -0
  173. package/dist/node/components/marketing/sections/SolutionSection.js +98 -0
  174. package/dist/node/components/marketing/sections/StepsSection.js +104 -0
  175. package/dist/node/components/marketing/waitlist-section.js +1099 -0
  176. package/dist/node/components/templates/TemplatesClientPage.js +5657 -0
  177. package/dist/node/components/templates/TemplatesPage.js +172 -0
  178. package/dist/node/components/templates/TemplatesPreviewModal.js +119 -0
  179. package/dist/node/components/templates/index.js +5826 -0
  180. package/dist/node/index.js +6480 -0
  181. package/dist/node/libs/email/client.js +117 -0
  182. package/dist/node/libs/email/contact.js +185 -0
  183. package/dist/node/libs/email/newsletter.js +210 -0
  184. package/dist/node/libs/email/types.js +2 -0
  185. package/dist/node/libs/email/utils.js +11 -0
  186. package/dist/node/libs/email/waitlist-application.js +290 -0
  187. package/dist/node/libs/email/waitlist.js +220 -0
  188. package/dist/node/libs/pricing-examples.js +21 -0
  189. package/dist/node/registry/engine.js +5288 -0
  190. package/dist/node/registry/factory.js +47 -0
  191. package/dist/node/registry/index.js +5353 -0
  192. package/dist/node/registry/registry-docs.js +338 -0
  193. package/dist/node/registry/registry-landing.js +4932 -0
  194. package/dist/node/registry/registry.js +5274 -0
  195. package/dist/node/registry/types.js +0 -0
  196. package/dist/node/registry/utils.js +5335 -0
  197. package/dist/registry/engine.d.ts +4 -8
  198. package/dist/registry/engine.d.ts.map +1 -1
  199. package/dist/registry/engine.js +5287 -23
  200. package/dist/registry/factory.d.ts +30 -34
  201. package/dist/registry/factory.d.ts.map +1 -1
  202. package/dist/registry/factory.js +42 -56
  203. package/dist/registry/index.d.ts +8 -8
  204. package/dist/registry/index.d.ts.map +1 -0
  205. package/dist/registry/index.js +5353 -8
  206. package/dist/registry/registry-docs.d.ts +4 -8
  207. package/dist/registry/registry-docs.d.ts.map +1 -1
  208. package/dist/registry/registry-docs.js +242 -209
  209. package/dist/registry/registry-landing.d.ts +5 -9
  210. package/dist/registry/registry-landing.d.ts.map +1 -1
  211. package/dist/registry/registry-landing.js +4930 -93
  212. package/dist/registry/registry.d.ts +7 -11
  213. package/dist/registry/registry.d.ts.map +1 -1
  214. package/dist/registry/registry.js +5262 -49
  215. package/dist/registry/types.d.ts +6 -10
  216. package/dist/registry/types.d.ts.map +1 -1
  217. package/dist/registry/types.js +1 -0
  218. package/dist/registry/utils.d.ts +10 -14
  219. package/dist/registry/utils.d.ts.map +1 -1
  220. package/dist/registry/utils.js +5330 -49
  221. package/package.json +355 -73
  222. package/tsdown.config.js +1 -2
  223. package/.turbo/turbo-build$colon$types.log +0 -1
  224. package/.turbo/turbo-lint.log +0 -3
  225. package/dist/components/marketing/ChangelogPage.js.map +0 -1
  226. package/dist/components/marketing/CofounderPage.js.map +0 -1
  227. package/dist/components/marketing/ContactClient.js.map +0 -1
  228. package/dist/components/marketing/ContributePage.js.map +0 -1
  229. package/dist/components/marketing/DesignPartnerPage.js.map +0 -1
  230. package/dist/components/marketing/LandingPage.js.map +0 -1
  231. package/dist/components/marketing/PricingClient.js.map +0 -1
  232. package/dist/components/marketing/ProductClientPage.js.map +0 -1
  233. package/dist/components/marketing/pricing-thinking-modal.js.map +0 -1
  234. package/dist/components/marketing/sections/AudienceSection.js.map +0 -1
  235. package/dist/components/marketing/sections/CorePositioningSection.js.map +0 -1
  236. package/dist/components/marketing/sections/CtaSection.js.map +0 -1
  237. package/dist/components/marketing/sections/DevelopersSection.js.map +0 -1
  238. package/dist/components/marketing/sections/FearsSection.js.map +0 -1
  239. package/dist/components/marketing/sections/HeroMarketingSection.js.map +0 -1
  240. package/dist/components/marketing/sections/IconGridSection.js.map +0 -1
  241. package/dist/components/marketing/sections/OutputsSection.js.map +0 -1
  242. package/dist/components/marketing/sections/ProblemSection.js.map +0 -1
  243. package/dist/components/marketing/sections/SolutionSection.js.map +0 -1
  244. package/dist/components/marketing/sections/StepsSection.js.map +0 -1
  245. package/dist/components/marketing/waitlist-section.js.map +0 -1
  246. package/dist/components/templates/TemplatesClientPage.js.map +0 -1
  247. package/dist/components/templates/TemplatesPage.js.map +0 -1
  248. package/dist/components/templates/TemplatesPreviewModal.js.map +0 -1
  249. package/dist/libs/email/client.js.map +0 -1
  250. package/dist/libs/email/contact.js.map +0 -1
  251. package/dist/libs/email/newsletter.js.map +0 -1
  252. package/dist/libs/email/utils.js.map +0 -1
  253. package/dist/libs/email/waitlist-application.js.map +0 -1
  254. package/dist/libs/email/waitlist.js.map +0 -1
  255. package/dist/libs/pricing-examples.js.map +0 -1
  256. package/dist/registry/engine.js.map +0 -1
  257. package/dist/registry/factory.js.map +0 -1
  258. package/dist/registry/registry-docs.js.map +0 -1
  259. package/dist/registry/registry-landing.js.map +0 -1
  260. package/dist/registry/registry.js.map +0 -1
  261. package/dist/registry/utils.js.map +0 -1
  262. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,558 @@
1
+ import { createRequire } from "node:module";
2
+ var __require = /* @__PURE__ */ createRequire(import.meta.url);
3
+
4
+ // src/components/marketing/ProductClientPage.tsx
5
+ import Link from "@contractspec/lib.ui-link";
6
+ import {
7
+ analyticsEventNames,
8
+ captureAnalyticsEvent
9
+ } from "@contractspec/bundle.library/libs/posthog/client";
10
+ import {
11
+ CheckCircle,
12
+ ChevronRight,
13
+ Database,
14
+ FileCode,
15
+ GitBranch,
16
+ Layers,
17
+ RefreshCw,
18
+ Shield,
19
+ Unlock,
20
+ Zap
21
+ } from "lucide-react";
22
+ import { jsxDEV } from "react/jsx-dev-runtime";
23
+ "use client";
24
+ var ProductClientPage = () => /* @__PURE__ */ jsxDEV("main", {
25
+ className: "",
26
+ children: [
27
+ /* @__PURE__ */ jsxDEV("section", {
28
+ className: "section-padding hero-gradient relative",
29
+ children: /* @__PURE__ */ jsxDEV("div", {
30
+ className: "mx-auto max-w-4xl space-y-6 text-center",
31
+ children: [
32
+ /* @__PURE__ */ jsxDEV("h1", {
33
+ className: "text-5xl leading-tight font-bold md:text-6xl",
34
+ children: "Compiler for AI-coded systems"
35
+ }, undefined, false, undefined, this),
36
+ /* @__PURE__ */ jsxDEV("p", {
37
+ className: "text-muted-foreground mx-auto max-w-2xl text-lg",
38
+ children: "Define contracts once. Generate consistent code across API, DB, UI, and events. Regenerate safely anytime. No lock-in."
39
+ }, undefined, false, undefined, this),
40
+ /* @__PURE__ */ jsxDEV("div", {
41
+ className: "flex flex-col items-center justify-center gap-4 pt-4 sm:flex-row",
42
+ children: [
43
+ /* @__PURE__ */ jsxDEV(Link, {
44
+ href: "/install",
45
+ onClick: () => captureAnalyticsEvent(analyticsEventNames.CTA_INSTALL_CLICK, {
46
+ surface: "product-hero"
47
+ }),
48
+ className: "btn-primary inline-flex items-center gap-2",
49
+ children: [
50
+ "Install OSS Core ",
51
+ /* @__PURE__ */ jsxDEV(ChevronRight, {
52
+ size: 16
53
+ }, undefined, false, undefined, this)
54
+ ]
55
+ }, undefined, true, undefined, this),
56
+ /* @__PURE__ */ jsxDEV(Link, {
57
+ href: "/pricing",
58
+ className: "btn-ghost",
59
+ children: "View pricing"
60
+ }, undefined, false, undefined, this)
61
+ ]
62
+ }, undefined, true, undefined, this)
63
+ ]
64
+ }, undefined, true, undefined, this)
65
+ }, undefined, false, undefined, this),
66
+ /* @__PURE__ */ jsxDEV("section", {
67
+ className: "section-padding border-border border-b",
68
+ children: /* @__PURE__ */ jsxDEV("div", {
69
+ className: "mx-auto max-w-4xl space-y-8",
70
+ children: [
71
+ /* @__PURE__ */ jsxDEV("div", {
72
+ className: "space-y-4",
73
+ children: [
74
+ /* @__PURE__ */ jsxDEV("div", {
75
+ className: "inline-flex items-center gap-2 rounded-full border border-blue-500/20 bg-blue-500/10 px-3 py-1",
76
+ children: [
77
+ /* @__PURE__ */ jsxDEV(Layers, {
78
+ size: 16,
79
+ className: "text-blue-400"
80
+ }, undefined, false, undefined, this),
81
+ /* @__PURE__ */ jsxDEV("span", {
82
+ className: "text-sm font-medium text-blue-300",
83
+ children: "Multi-Surface Consistency"
84
+ }, undefined, false, undefined, this)
85
+ ]
86
+ }, undefined, true, undefined, this),
87
+ /* @__PURE__ */ jsxDEV("h2", {
88
+ className: "text-3xl font-bold md:text-4xl",
89
+ children: "One contract, all surfaces in sync"
90
+ }, undefined, false, undefined, this),
91
+ /* @__PURE__ */ jsxDEV("p", {
92
+ className: "text-muted-foreground text-lg",
93
+ children: "Stop chasing drift between your API, database, UI, and events. One spec generates all outputs, guaranteed to stay consistent."
94
+ }, undefined, false, undefined, this)
95
+ ]
96
+ }, undefined, true, undefined, this),
97
+ /* @__PURE__ */ jsxDEV("div", {
98
+ className: "grid gap-6 md:grid-cols-2",
99
+ children: [
100
+ {
101
+ title: "REST & GraphQL API",
102
+ description: "Type-safe endpoints with validation. Standard Express, Hono, Elysia, or Apollo handlers.",
103
+ icon: Zap
104
+ },
105
+ {
106
+ title: "Database Schema",
107
+ description: "Prisma migrations and types generated from the same spec. Always in sync with your API.",
108
+ icon: Database
109
+ },
110
+ {
111
+ title: "UI Components",
112
+ description: "React forms and views derived from specs. Validation and types flow through automatically.",
113
+ icon: FileCode
114
+ },
115
+ {
116
+ title: "MCP Tools & Events",
117
+ description: "AI agent tool definitions and event schemas. Same contract, different surfaces.",
118
+ icon: GitBranch
119
+ }
120
+ ].map((item, i) => /* @__PURE__ */ jsxDEV("div", {
121
+ className: "card-subtle space-y-4 p-6",
122
+ children: [
123
+ /* @__PURE__ */ jsxDEV(item.icon, {
124
+ className: "text-blue-400",
125
+ size: 24
126
+ }, undefined, false, undefined, this),
127
+ /* @__PURE__ */ jsxDEV("h3", {
128
+ className: "text-lg font-bold",
129
+ children: item.title
130
+ }, undefined, false, undefined, this),
131
+ /* @__PURE__ */ jsxDEV("p", {
132
+ className: "text-muted-foreground text-sm",
133
+ children: item.description
134
+ }, undefined, false, undefined, this)
135
+ ]
136
+ }, i, true, undefined, this))
137
+ }, undefined, false, undefined, this)
138
+ ]
139
+ }, undefined, true, undefined, this)
140
+ }, undefined, false, undefined, this),
141
+ /* @__PURE__ */ jsxDEV("section", {
142
+ className: "section-padding border-border bg-muted/20 border-b",
143
+ children: /* @__PURE__ */ jsxDEV("div", {
144
+ className: "mx-auto max-w-4xl space-y-8",
145
+ children: [
146
+ /* @__PURE__ */ jsxDEV("div", {
147
+ className: "space-y-4",
148
+ children: [
149
+ /* @__PURE__ */ jsxDEV("div", {
150
+ className: "inline-flex items-center gap-2 rounded-full border border-emerald-500/20 bg-emerald-500/10 px-3 py-1",
151
+ children: [
152
+ /* @__PURE__ */ jsxDEV(RefreshCw, {
153
+ size: 16,
154
+ className: "text-emerald-400"
155
+ }, undefined, false, undefined, this),
156
+ /* @__PURE__ */ jsxDEV("span", {
157
+ className: "text-sm font-medium text-emerald-300",
158
+ children: "Safe Regeneration"
159
+ }, undefined, false, undefined, this)
160
+ ]
161
+ }, undefined, true, undefined, this),
162
+ /* @__PURE__ */ jsxDEV("h2", {
163
+ className: "text-3xl font-bold md:text-4xl",
164
+ children: "Regenerate anytime without fear"
165
+ }, undefined, false, undefined, this),
166
+ /* @__PURE__ */ jsxDEV("p", {
167
+ className: "text-muted-foreground text-lg",
168
+ children: "Contracts enforce invariants. Breaking changes are caught at compile time, not production. Regenerate with confidence."
169
+ }, undefined, false, undefined, this)
170
+ ]
171
+ }, undefined, true, undefined, this),
172
+ /* @__PURE__ */ jsxDEV("div", {
173
+ className: "grid gap-6 md:grid-cols-2",
174
+ children: [
175
+ /* @__PURE__ */ jsxDEV("div", {
176
+ className: "card-subtle space-y-4 p-6",
177
+ children: [
178
+ /* @__PURE__ */ jsxDEV("h3", {
179
+ className: "font-bold",
180
+ children: "Spec-First Safety"
181
+ }, undefined, false, undefined, this),
182
+ /* @__PURE__ */ jsxDEV("p", {
183
+ className: "text-muted-foreground text-sm",
184
+ children: "AI agents read specs, not implementations. Generated code that violates contracts gets flagged automatically."
185
+ }, undefined, false, undefined, this),
186
+ /* @__PURE__ */ jsxDEV("ul", {
187
+ className: "text-muted-foreground space-y-2 text-sm",
188
+ children: [
189
+ /* @__PURE__ */ jsxDEV("li", {
190
+ className: "flex gap-3",
191
+ children: [
192
+ /* @__PURE__ */ jsxDEV(CheckCircle, {
193
+ size: 16,
194
+ className: "mt-0.5 flex-shrink-0 text-emerald-400"
195
+ }, undefined, false, undefined, this),
196
+ "Type-safe from spec to runtime"
197
+ ]
198
+ }, undefined, true, undefined, this),
199
+ /* @__PURE__ */ jsxDEV("li", {
200
+ className: "flex gap-3",
201
+ children: [
202
+ /* @__PURE__ */ jsxDEV(CheckCircle, {
203
+ size: 16,
204
+ className: "mt-0.5 flex-shrink-0 text-emerald-400"
205
+ }, undefined, false, undefined, this),
206
+ "Invariants enforced at compile time"
207
+ ]
208
+ }, undefined, true, undefined, this),
209
+ /* @__PURE__ */ jsxDEV("li", {
210
+ className: "flex gap-3",
211
+ children: [
212
+ /* @__PURE__ */ jsxDEV(CheckCircle, {
213
+ size: 16,
214
+ className: "mt-0.5 flex-shrink-0 text-emerald-400"
215
+ }, undefined, false, undefined, this),
216
+ "Breaking changes detected early"
217
+ ]
218
+ }, undefined, true, undefined, this)
219
+ ]
220
+ }, undefined, true, undefined, this)
221
+ ]
222
+ }, undefined, true, undefined, this),
223
+ /* @__PURE__ */ jsxDEV("div", {
224
+ className: "card-subtle space-y-4 p-6",
225
+ children: [
226
+ /* @__PURE__ */ jsxDEV("h3", {
227
+ className: "font-bold",
228
+ children: "Version Control Built-in"
229
+ }, undefined, false, undefined, this),
230
+ /* @__PURE__ */ jsxDEV("p", {
231
+ className: "text-muted-foreground text-sm",
232
+ children: "Every spec change is tracked. Roll back to any previous version. Migrations are explicit and reversible."
233
+ }, undefined, false, undefined, this),
234
+ /* @__PURE__ */ jsxDEV("ul", {
235
+ className: "text-muted-foreground space-y-2 text-sm",
236
+ children: [
237
+ /* @__PURE__ */ jsxDEV("li", {
238
+ className: "flex gap-3",
239
+ children: [
240
+ /* @__PURE__ */ jsxDEV(CheckCircle, {
241
+ size: 16,
242
+ className: "mt-0.5 flex-shrink-0 text-emerald-400"
243
+ }, undefined, false, undefined, this),
244
+ "Git-native spec history"
245
+ ]
246
+ }, undefined, true, undefined, this),
247
+ /* @__PURE__ */ jsxDEV("li", {
248
+ className: "flex gap-3",
249
+ children: [
250
+ /* @__PURE__ */ jsxDEV(CheckCircle, {
251
+ size: 16,
252
+ className: "mt-0.5 flex-shrink-0 text-emerald-400"
253
+ }, undefined, false, undefined, this),
254
+ "Explicit migration paths"
255
+ ]
256
+ }, undefined, true, undefined, this),
257
+ /* @__PURE__ */ jsxDEV("li", {
258
+ className: "flex gap-3",
259
+ children: [
260
+ /* @__PURE__ */ jsxDEV(CheckCircle, {
261
+ size: 16,
262
+ className: "mt-0.5 flex-shrink-0 text-emerald-400"
263
+ }, undefined, false, undefined, this),
264
+ "One-click rollback"
265
+ ]
266
+ }, undefined, true, undefined, this)
267
+ ]
268
+ }, undefined, true, undefined, this)
269
+ ]
270
+ }, undefined, true, undefined, this)
271
+ ]
272
+ }, undefined, true, undefined, this)
273
+ ]
274
+ }, undefined, true, undefined, this)
275
+ }, undefined, false, undefined, this),
276
+ /* @__PURE__ */ jsxDEV("section", {
277
+ className: "section-padding border-border border-b",
278
+ children: /* @__PURE__ */ jsxDEV("div", {
279
+ className: "mx-auto max-w-4xl space-y-8",
280
+ children: [
281
+ /* @__PURE__ */ jsxDEV("div", {
282
+ className: "space-y-4",
283
+ children: [
284
+ /* @__PURE__ */ jsxDEV("div", {
285
+ className: "inline-flex items-center gap-2 rounded-full border border-violet-500/20 bg-violet-500/10 px-3 py-1",
286
+ children: [
287
+ /* @__PURE__ */ jsxDEV(Shield, {
288
+ size: 16,
289
+ className: "text-violet-400"
290
+ }, undefined, false, undefined, this),
291
+ /* @__PURE__ */ jsxDEV("span", {
292
+ className: "text-sm font-medium text-violet-300",
293
+ children: "Contract Enforcement"
294
+ }, undefined, false, undefined, this)
295
+ ]
296
+ }, undefined, true, undefined, this),
297
+ /* @__PURE__ */ jsxDEV("h2", {
298
+ className: "text-3xl font-bold md:text-4xl",
299
+ children: "AI governance that actually works"
300
+ }, undefined, false, undefined, this),
301
+ /* @__PURE__ */ jsxDEV("p", {
302
+ className: "text-muted-foreground text-lg",
303
+ children: "Constrain what AI agents can change. Enforce contracts they must respect. No more hallucinated refactors breaking your system."
304
+ }, undefined, false, undefined, this)
305
+ ]
306
+ }, undefined, true, undefined, this),
307
+ /* @__PURE__ */ jsxDEV("div", {
308
+ className: "card-subtle space-y-6 p-6",
309
+ children: [
310
+ /* @__PURE__ */ jsxDEV("div", {
311
+ className: "space-y-4",
312
+ children: [
313
+ /* @__PURE__ */ jsxDEV("h3", {
314
+ className: "font-bold",
315
+ children: "How contract enforcement works"
316
+ }, undefined, false, undefined, this),
317
+ /* @__PURE__ */ jsxDEV("p", {
318
+ className: "text-muted-foreground text-sm",
319
+ children: "Contracts define what the system should do. AI-generated code that violates these contracts is automatically flagged and rejected before it can cause damage."
320
+ }, undefined, false, undefined, this)
321
+ ]
322
+ }, undefined, true, undefined, this),
323
+ /* @__PURE__ */ jsxDEV("div", {
324
+ className: "grid gap-4 md:grid-cols-3",
325
+ children: [
326
+ {
327
+ title: "Define",
328
+ description: "Write specs in TypeScript. Define inputs, outputs, and invariants."
329
+ },
330
+ {
331
+ title: "Generate",
332
+ description: "ContractSpec generates code across all surfaces from your specs."
333
+ },
334
+ {
335
+ title: "Enforce",
336
+ description: "Any code that violates specs is flagged. AI agents can't break contracts."
337
+ }
338
+ ].map((step, i) => /* @__PURE__ */ jsxDEV("div", {
339
+ className: "space-y-2",
340
+ children: [
341
+ /* @__PURE__ */ jsxDEV("div", {
342
+ className: "flex h-8 w-8 items-center justify-center rounded-lg bg-violet-500/20",
343
+ children: /* @__PURE__ */ jsxDEV("div", {
344
+ className: "text-sm font-bold text-violet-400",
345
+ children: i + 1
346
+ }, undefined, false, undefined, this)
347
+ }, undefined, false, undefined, this),
348
+ /* @__PURE__ */ jsxDEV("h4", {
349
+ className: "text-sm font-bold",
350
+ children: step.title
351
+ }, undefined, false, undefined, this),
352
+ /* @__PURE__ */ jsxDEV("p", {
353
+ className: "text-muted-foreground text-xs",
354
+ children: step.description
355
+ }, undefined, false, undefined, this)
356
+ ]
357
+ }, i, true, undefined, this))
358
+ }, undefined, false, undefined, this)
359
+ ]
360
+ }, undefined, true, undefined, this)
361
+ ]
362
+ }, undefined, true, undefined, this)
363
+ }, undefined, false, undefined, this),
364
+ /* @__PURE__ */ jsxDEV("section", {
365
+ className: "section-padding border-border border-b bg-gradient-to-br from-violet-500/10 via-indigo-500/5 to-blue-500/5",
366
+ children: /* @__PURE__ */ jsxDEV("div", {
367
+ className: "mx-auto max-w-4xl space-y-8",
368
+ children: [
369
+ /* @__PURE__ */ jsxDEV("div", {
370
+ className: "space-y-4",
371
+ children: [
372
+ /* @__PURE__ */ jsxDEV("div", {
373
+ className: "inline-flex items-center gap-2 rounded-full border border-pink-500/20 bg-pink-500/10 px-3 py-1",
374
+ children: [
375
+ /* @__PURE__ */ jsxDEV(Unlock, {
376
+ size: 16,
377
+ className: "text-pink-400"
378
+ }, undefined, false, undefined, this),
379
+ /* @__PURE__ */ jsxDEV("span", {
380
+ className: "text-sm font-medium text-pink-300",
381
+ children: "No Lock-in"
382
+ }, undefined, false, undefined, this)
383
+ ]
384
+ }, undefined, true, undefined, this),
385
+ /* @__PURE__ */ jsxDEV("h2", {
386
+ className: "text-3xl font-bold md:text-4xl",
387
+ children: "You own everything. Eject anytime."
388
+ }, undefined, false, undefined, this),
389
+ /* @__PURE__ */ jsxDEV("p", {
390
+ className: "text-muted-foreground text-lg",
391
+ children: "ContractSpec is a compiler, not a prison. The generated code is yours: standard TypeScript, standard SQL, standard GraphQL."
392
+ }, undefined, false, undefined, this)
393
+ ]
394
+ }, undefined, true, undefined, this),
395
+ /* @__PURE__ */ jsxDEV("div", {
396
+ className: "grid gap-6 md:grid-cols-2",
397
+ children: [
398
+ /* @__PURE__ */ jsxDEV("div", {
399
+ className: "card-subtle space-y-4 p-6",
400
+ children: [
401
+ /* @__PURE__ */ jsxDEV("h3", {
402
+ className: "text-lg font-bold",
403
+ children: "Standard Tech Output"
404
+ }, undefined, false, undefined, this),
405
+ /* @__PURE__ */ jsxDEV("ul", {
406
+ className: "text-muted-foreground space-y-3 text-sm",
407
+ children: [
408
+ "TypeScript you can read and modify",
409
+ "Prisma migrations you can run manually",
410
+ "GraphQL schemas you can serve anywhere",
411
+ "React components with no magic",
412
+ "REST handlers that work with any framework"
413
+ ].map((item, i) => /* @__PURE__ */ jsxDEV("li", {
414
+ className: "flex gap-3",
415
+ children: [
416
+ /* @__PURE__ */ jsxDEV(CheckCircle, {
417
+ size: 16,
418
+ className: "mt-0.5 flex-shrink-0 text-pink-400"
419
+ }, undefined, false, undefined, this),
420
+ item
421
+ ]
422
+ }, i, true, undefined, this))
423
+ }, undefined, false, undefined, this)
424
+ ]
425
+ }, undefined, true, undefined, this),
426
+ /* @__PURE__ */ jsxDEV("div", {
427
+ className: "card-subtle space-y-4 p-6",
428
+ children: [
429
+ /* @__PURE__ */ jsxDEV("h3", {
430
+ className: "text-lg font-bold",
431
+ children: "No Proprietary Dependencies"
432
+ }, undefined, false, undefined, this),
433
+ /* @__PURE__ */ jsxDEV("ul", {
434
+ className: "text-muted-foreground space-y-3 text-sm",
435
+ children: [
436
+ "No runtime library required",
437
+ "No vendor-specific abstractions",
438
+ "Works with your existing CI/CD",
439
+ "Eject anytime, keep everything",
440
+ "Open spec format"
441
+ ].map((item, i) => /* @__PURE__ */ jsxDEV("li", {
442
+ className: "flex gap-3",
443
+ children: [
444
+ /* @__PURE__ */ jsxDEV(CheckCircle, {
445
+ size: 16,
446
+ className: "mt-0.5 flex-shrink-0 text-pink-400"
447
+ }, undefined, false, undefined, this),
448
+ item
449
+ ]
450
+ }, i, true, undefined, this))
451
+ }, undefined, false, undefined, this)
452
+ ]
453
+ }, undefined, true, undefined, this)
454
+ ]
455
+ }, undefined, true, undefined, this),
456
+ /* @__PURE__ */ jsxDEV("div", {
457
+ className: "pt-4 text-center",
458
+ children: /* @__PURE__ */ jsxDEV("p", {
459
+ className: "text-muted-foreground mb-4 text-sm",
460
+ children: [
461
+ "Like TypeScript compiles to JavaScript, ContractSpec compiles to standard code.",
462
+ /* @__PURE__ */ jsxDEV("br", {}, undefined, false, undefined, this),
463
+ /* @__PURE__ */ jsxDEV("span", {
464
+ className: "font-medium text-violet-400",
465
+ children: "We're the compiler, not the prison."
466
+ }, undefined, false, undefined, this)
467
+ ]
468
+ }, undefined, true, undefined, this)
469
+ }, undefined, false, undefined, this)
470
+ ]
471
+ }, undefined, true, undefined, this)
472
+ }, undefined, false, undefined, this),
473
+ /* @__PURE__ */ jsxDEV("section", {
474
+ className: "section-padding border-border border-b",
475
+ children: /* @__PURE__ */ jsxDEV("div", {
476
+ className: "mx-auto max-w-4xl space-y-8",
477
+ children: [
478
+ /* @__PURE__ */ jsxDEV("h2", {
479
+ className: "text-center text-3xl font-bold md:text-4xl",
480
+ children: "Start small. Expand gradually."
481
+ }, undefined, false, undefined, this),
482
+ /* @__PURE__ */ jsxDEV("p", {
483
+ className: "text-muted-foreground mx-auto max-w-2xl text-center text-lg",
484
+ children: "You don't rewrite your app. You stabilize one module at a time. Start with one endpoint, prove value, then expand."
485
+ }, undefined, false, undefined, this),
486
+ /* @__PURE__ */ jsxDEV("div", {
487
+ className: "grid gap-6 md:grid-cols-3",
488
+ children: [
489
+ {
490
+ title: "Day 1",
491
+ description: "Pick one API endpoint. Write a spec. See what gets generated."
492
+ },
493
+ {
494
+ title: "Week 1",
495
+ description: "Add a few more specs. Compare generated code to existing code."
496
+ },
497
+ {
498
+ title: "Month 1",
499
+ description: "Migrate a full module. Enjoy multi-surface consistency."
500
+ }
501
+ ].map((item, i) => /* @__PURE__ */ jsxDEV("div", {
502
+ className: "card-subtle space-y-4 p-6 text-center",
503
+ children: [
504
+ /* @__PURE__ */ jsxDEV("div", {
505
+ className: "text-2xl font-bold text-violet-400",
506
+ children: item.title
507
+ }, undefined, false, undefined, this),
508
+ /* @__PURE__ */ jsxDEV("p", {
509
+ className: "text-muted-foreground text-sm",
510
+ children: item.description
511
+ }, undefined, false, undefined, this)
512
+ ]
513
+ }, i, true, undefined, this))
514
+ }, undefined, false, undefined, this)
515
+ ]
516
+ }, undefined, true, undefined, this)
517
+ }, undefined, false, undefined, this),
518
+ /* @__PURE__ */ jsxDEV("section", {
519
+ className: "section-padding hero-gradient",
520
+ children: /* @__PURE__ */ jsxDEV("div", {
521
+ className: "mx-auto max-w-4xl space-y-6 text-center",
522
+ children: [
523
+ /* @__PURE__ */ jsxDEV("h2", {
524
+ className: "text-3xl font-bold md:text-4xl",
525
+ children: "Ready to stabilize your AI-generated code?"
526
+ }, undefined, false, undefined, this),
527
+ /* @__PURE__ */ jsxDEV("p", {
528
+ className: "text-muted-foreground text-lg",
529
+ children: "Start with one module. No big-bang migration. No lock-in."
530
+ }, undefined, false, undefined, this),
531
+ /* @__PURE__ */ jsxDEV("div", {
532
+ className: "flex flex-col items-center justify-center gap-4 pt-4 sm:flex-row",
533
+ children: [
534
+ /* @__PURE__ */ jsxDEV(Link, {
535
+ href: "/install",
536
+ className: "btn-primary inline-flex items-center gap-2",
537
+ children: [
538
+ "Install OSS Core ",
539
+ /* @__PURE__ */ jsxDEV(ChevronRight, {
540
+ size: 16
541
+ }, undefined, false, undefined, this)
542
+ ]
543
+ }, undefined, true, undefined, this),
544
+ /* @__PURE__ */ jsxDEV(Link, {
545
+ href: "/contact#waitlist",
546
+ className: "btn-ghost",
547
+ children: "Join Studio Waitlist"
548
+ }, undefined, false, undefined, this)
549
+ ]
550
+ }, undefined, true, undefined, this)
551
+ ]
552
+ }, undefined, true, undefined, this)
553
+ }, undefined, false, undefined, this)
554
+ ]
555
+ }, undefined, true, undefined, this);
556
+ export {
557
+ ProductClientPage
558
+ };