@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
@@ -1,16 +1,8 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
- //#region src/components/marketing/pricing-thinking-modal.d.ts
4
1
  interface PricingThinkingModalProps {
5
- open: boolean;
6
- onOpenChange: (open: boolean) => void;
7
- onApplyClick?: () => void;
2
+ open: boolean;
3
+ onOpenChange: (open: boolean) => void;
4
+ onApplyClick?: () => void;
8
5
  }
9
- declare function PricingThinkingModal({
10
- open,
11
- onOpenChange,
12
- onApplyClick
13
- }: PricingThinkingModalProps): react_jsx_runtime0.JSX.Element;
14
- //#endregion
15
- export { PricingThinkingModal };
6
+ export declare function PricingThinkingModal({ open, onOpenChange, onApplyClick, }: PricingThinkingModalProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
16
8
  //# sourceMappingURL=pricing-thinking-modal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"pricing-thinking-modal.d.ts","names":[],"sources":["../../../src/components/marketing/pricing-thinking-modal.tsx"],"mappings":";;;UAwFU,yBAAA;EACR,IAAA;EACA,YAAA,GAAe,IAAA;EACf,YAAA;AAAA;AAAA,iBAGc,oBAAA,CAAA;EACd,IAAA;EACA,YAAA;EACA;AAAA,GACC,yBAAA,GAAyB,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"pricing-thinking-modal.d.ts","sourceRoot":"","sources":["../../../src/components/marketing/pricing-thinking-modal.tsx"],"names":[],"mappings":"AAwFA,UAAU,yBAAyB;IACjC,IAAI,EAAE,OAAO,CAAC;IACd,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAC;IACtC,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,YAAY,EACZ,YAAY,GACb,EAAE,yBAAyB,2CA6H3B"}
@@ -1,202 +1,253 @@
1
- 'use client';
1
+ // @bun
2
+ var __require = import.meta.require;
2
3
 
3
- import { PRICING_EXAMPLES } from "../../libs/pricing-examples.js";
4
- import { Button } from "@contractspec/lib.design-system";
5
- import { CheckCircle } from "lucide-react";
6
- import { jsx, jsxs } from "react/jsx-runtime";
7
- import { Dialog, DialogContent, DialogDescription, DialogHeader, DialogTitle } from "@contractspec/lib.ui-kit-web/ui/dialog";
4
+ // src/libs/pricing-examples.ts
5
+ var PRICING_EXAMPLES = {
6
+ free: {
7
+ regenerationsPerMonth: 200,
8
+ aiActionsPerMonth: 100,
9
+ projects: 1
10
+ },
11
+ builder: {
12
+ regenerationsPerMonthHint: "1,000\u20132,000+",
13
+ aiActionsPerMonthHint: "1,000+"
14
+ },
15
+ team: {
16
+ description: "Higher limits + cheaper per-regen at scale"
17
+ }
18
+ };
8
19
 
9
- //#region src/components/marketing/pricing-thinking-modal.tsx
10
- const pricingTiers = [
11
- {
12
- tag: "Planned",
13
- title: "Free",
14
- priceLine: "For hobbyists and pre-PMF teams",
15
- bullets: [
16
- "1 active project",
17
- "Small spec size",
18
- `Example: ~${PRICING_EXAMPLES.free.regenerationsPerMonth} free regenerations per month`,
19
- `Example: ~${PRICING_EXAMPLES.free.aiActionsPerMonth} free AI agent actions per month`,
20
- "Unlimited collaborators"
21
- ],
22
- note: "Good enough to build and launch a real product before paying."
23
- },
24
- {
25
- tag: "Planned",
26
- title: "Builder",
27
- priceLine: "Usage-based, for solo builders and small teams",
28
- bullets: [
29
- "More projects",
30
- `More monthly regenerations included (e.g. ${PRICING_EXAMPLES.builder.regenerationsPerMonthHint})`,
31
- `More AI agent actions included (e.g. ${PRICING_EXAMPLES.builder.aiActionsPerMonthHint})`,
32
- "Pay-as-you-go for extra regenerations and AI",
33
- "Basic environments (dev / prod)"
34
- ],
35
- note: "Pay for how fast and how often you evolve your system, not for seats."
36
- },
37
- {
38
- tag: "Planned",
39
- title: "Team & Platform",
40
- priceLine: "For teams standardizing on ContractSpec",
41
- bullets: [
42
- "Multiple projects and environments",
43
- "Higher regeneration and AI action limits",
44
- "Cheaper overages as you scale",
45
- "Advanced RBAC and governance",
46
- "SSO, audit trails, and longer retention"
47
- ],
48
- note: "For platform teams using ContractSpec as infra for multiple apps."
49
- }
20
+ // src/components/marketing/pricing-thinking-modal.tsx
21
+ import { CheckCircle } from "lucide-react";
22
+ import {
23
+ Dialog,
24
+ DialogContent,
25
+ DialogDescription,
26
+ DialogHeader,
27
+ DialogTitle
28
+ } from "@contractspec/lib.ui-kit-web/ui/dialog";
29
+ import { Button } from "@contractspec/lib.design-system";
30
+ import { jsxDEV } from "react/jsx-dev-runtime";
31
+ "use client";
32
+ var pricingTiers = [
33
+ {
34
+ tag: "Planned",
35
+ title: "Free",
36
+ priceLine: "For hobbyists and pre-PMF teams",
37
+ bullets: [
38
+ "1 active project",
39
+ "Small spec size",
40
+ `Example: ~${PRICING_EXAMPLES.free.regenerationsPerMonth} free regenerations per month`,
41
+ `Example: ~${PRICING_EXAMPLES.free.aiActionsPerMonth} free AI agent actions per month`,
42
+ "Unlimited collaborators"
43
+ ],
44
+ note: "Good enough to build and launch a real product before paying."
45
+ },
46
+ {
47
+ tag: "Planned",
48
+ title: "Builder",
49
+ priceLine: "Usage-based, for solo builders and small teams",
50
+ bullets: [
51
+ "More projects",
52
+ `More monthly regenerations included (e.g. ${PRICING_EXAMPLES.builder.regenerationsPerMonthHint})`,
53
+ `More AI agent actions included (e.g. ${PRICING_EXAMPLES.builder.aiActionsPerMonthHint})`,
54
+ "Pay-as-you-go for extra regenerations and AI",
55
+ "Basic environments (dev / prod)"
56
+ ],
57
+ note: "Pay for how fast and how often you evolve your system, not for seats."
58
+ },
59
+ {
60
+ tag: "Planned",
61
+ title: "Team & Platform",
62
+ priceLine: "For teams standardizing on ContractSpec",
63
+ bullets: [
64
+ "Multiple projects and environments",
65
+ "Higher regeneration and AI action limits",
66
+ "Cheaper overages as you scale",
67
+ "Advanced RBAC and governance",
68
+ "SSO, audit trails, and longer retention"
69
+ ],
70
+ note: "For platform teams using ContractSpec as infra for multiple apps."
71
+ }
50
72
  ];
51
- const usageMetrics = [
52
- {
53
- name: "Regenerations",
54
- freeTier: `Free tier: e.g. ~${PRICING_EXAMPLES.free.regenerationsPerMonth} regenerations / month`,
55
- beyond: "Beyond: pay per additional regeneration, with volume discounts."
56
- },
57
- {
58
- name: "AI agent actions",
59
- freeTier: `Free tier: e.g. ~${PRICING_EXAMPLES.free.aiActionsPerMonth} AI agent actions / month`,
60
- beyond: "Beyond: pay-as-you-go for extra AI usage."
61
- },
62
- {
63
- name: "Projects",
64
- freeTier: `Free tier: ${PRICING_EXAMPLES.free.projects} project`,
65
- beyond: "Builder / Team: more projects included; extra projects available as you scale."
66
- }
73
+ var usageMetrics = [
74
+ {
75
+ name: "Regenerations",
76
+ freeTier: `Free tier: e.g. ~${PRICING_EXAMPLES.free.regenerationsPerMonth} regenerations / month`,
77
+ beyond: "Beyond: pay per additional regeneration, with volume discounts."
78
+ },
79
+ {
80
+ name: "AI agent actions",
81
+ freeTier: `Free tier: e.g. ~${PRICING_EXAMPLES.free.aiActionsPerMonth} AI agent actions / month`,
82
+ beyond: "Beyond: pay-as-you-go for extra AI usage."
83
+ },
84
+ {
85
+ name: "Projects",
86
+ freeTier: `Free tier: ${PRICING_EXAMPLES.free.projects} project`,
87
+ beyond: "Builder / Team: more projects included; extra projects available as you scale."
88
+ }
67
89
  ];
68
- function PricingThinkingModal({ open, onOpenChange, onApplyClick }) {
69
- return /* @__PURE__ */ jsx(Dialog, {
70
- open,
71
- onOpenChange,
72
- children: /* @__PURE__ */ jsxs(DialogContent, {
73
- className: "max-h-[90vh] w-full overflow-y-auto md:max-w-5xl",
74
- children: [/* @__PURE__ */ jsxs(DialogHeader, { children: [/* @__PURE__ */ jsx(DialogTitle, { children: "Tentative pricing (work in progress)" }), /* @__PURE__ */ jsx(DialogDescription, { children: "We're still in design-partner mode. This is a draft of how we expect pricing to look once we open public access." })] }), /* @__PURE__ */ jsxs("div", {
75
- className: "space-y-8",
76
- children: [
77
- /* @__PURE__ */ jsxs("div", {
78
- className: "space-y-4",
79
- children: [/* @__PURE__ */ jsxs("div", {
80
- className: "flex items-center gap-2",
81
- children: [
82
- /* @__PURE__ */ jsx("span", {
83
- className: "text-muted-foreground text-xs font-medium",
84
- children: "Draft"
85
- }),
86
- /* @__PURE__ */ jsx("span", {
87
- className: "text-muted-foreground text-xs",
88
- children: "•"
89
- }),
90
- /* @__PURE__ */ jsx("span", {
91
- className: "text-muted-foreground text-xs",
92
- children: "Subject to change"
93
- })
94
- ]
95
- }), /* @__PURE__ */ jsx("div", {
96
- className: "grid gap-4 md:grid-cols-3",
97
- children: pricingTiers.map((tier) => /* @__PURE__ */ jsxs("div", {
98
- className: "card-subtle relative space-y-4 p-6",
99
- children: [
100
- /* @__PURE__ */ jsx("div", {
101
- className: "bg-muted border-border absolute -top-2 left-1/2 -translate-x-1/2 rounded-full border px-2 py-0.5 text-xs font-medium",
102
- children: tier.tag
103
- }),
104
- /* @__PURE__ */ jsxs("div", {
105
- className: "space-y-2 pt-2",
106
- children: [/* @__PURE__ */ jsx("h3", {
107
- className: "text-xl font-bold",
108
- children: tier.title
109
- }), /* @__PURE__ */ jsx("p", {
110
- className: "text-muted-foreground text-sm",
111
- children: tier.priceLine
112
- })]
113
- }),
114
- /* @__PURE__ */ jsx("ul", {
115
- className: "space-y-2",
116
- children: tier.bullets.map((bullet, i) => /* @__PURE__ */ jsxs("li", {
117
- className: "text-muted-foreground flex gap-2 text-sm",
118
- children: [/* @__PURE__ */ jsx(CheckCircle, {
119
- size: 14,
120
- className: "mt-0.5 shrink-0 text-violet-400"
121
- }), bullet]
122
- }, i))
123
- }),
124
- /* @__PURE__ */ jsx("p", {
125
- className: "text-muted-foreground text-xs italic",
126
- children: tier.note
127
- })
128
- ]
129
- }, tier.title))
130
- })]
131
- }),
132
- /* @__PURE__ */ jsxs("div", {
133
- className: "border-border space-y-4 border-t pt-6",
134
- children: [/* @__PURE__ */ jsxs("div", { children: [
135
- /* @__PURE__ */ jsx("h3", {
136
- className: "text-lg font-bold",
137
- children: "Usage-based, with a generous free tier"
138
- }),
139
- /* @__PURE__ */ jsx("p", {
140
- className: "text-muted-foreground mt-2 text-sm",
141
- children: "Inspired by products like PostHog, we plan to keep a generous free tier on all plans, then charge based on actual usage: regenerations, AI agent actions, and the number of projects you run on ContractSpec."
142
- }),
143
- /* @__PURE__ */ jsx("p", {
144
- className: "text-muted-foreground mt-3 text-xs italic",
145
- children: "Free tier limits are intentionally small but useful: enough to try the agent and regenerate a real project, not enough to run a full team's workload for free."
146
- })
147
- ] }), /* @__PURE__ */ jsx("div", {
148
- className: "grid gap-4 md:grid-cols-3",
149
- children: usageMetrics.map((metric) => /* @__PURE__ */ jsxs("div", {
150
- className: "card-subtle space-y-2 p-4",
151
- children: [
152
- /* @__PURE__ */ jsx("h4", {
153
- className: "text-sm font-semibold",
154
- children: metric.name
155
- }),
156
- /* @__PURE__ */ jsx("p", {
157
- className: "text-muted-foreground text-xs",
158
- children: metric.freeTier
159
- }),
160
- /* @__PURE__ */ jsx("p", {
161
- className: "text-muted-foreground text-xs",
162
- children: metric.beyond
163
- })
164
- ]
165
- }, metric.name))
166
- })]
167
- }),
168
- /* @__PURE__ */ jsxs("div", {
169
- className: "border-border space-y-4 border-t pt-6",
170
- children: [
171
- /* @__PURE__ */ jsx("p", {
172
- className: "text-muted-foreground text-xs",
173
- children: "These numbers are examples only. Final pricing and limits will evolve as we learn from design partners."
174
- }),
175
- /* @__PURE__ */ jsx("p", {
176
- className: "text-muted-foreground text-xs",
177
- children: "This is a tentative pricing model. We're pre-PMF and pricing is still in draft, subject to change based on what we learn."
178
- }),
179
- /* @__PURE__ */ jsx("p", {
180
- className: "text-muted-foreground text-xs",
181
- children: "Design partners get early access and a founding discount when paid plans launch."
182
- }),
183
- onApplyClick && /* @__PURE__ */ jsx(Button, {
184
- onClick: () => {
185
- onOpenChange(false);
186
- onApplyClick();
187
- },
188
- className: "w-full",
189
- variant: "outline",
190
- children: "Apply as a design partner"
191
- })
192
- ]
193
- })
194
- ]
195
- })]
196
- })
197
- });
90
+ function PricingThinkingModal({
91
+ open,
92
+ onOpenChange,
93
+ onApplyClick
94
+ }) {
95
+ return /* @__PURE__ */ jsxDEV(Dialog, {
96
+ open,
97
+ onOpenChange,
98
+ children: /* @__PURE__ */ jsxDEV(DialogContent, {
99
+ className: "max-h-[90vh] w-full overflow-y-auto md:max-w-5xl",
100
+ children: [
101
+ /* @__PURE__ */ jsxDEV(DialogHeader, {
102
+ children: [
103
+ /* @__PURE__ */ jsxDEV(DialogTitle, {
104
+ children: "Tentative pricing (work in progress)"
105
+ }, undefined, false, undefined, this),
106
+ /* @__PURE__ */ jsxDEV(DialogDescription, {
107
+ children: "We're still in design-partner mode. This is a draft of how we expect pricing to look once we open public access."
108
+ }, undefined, false, undefined, this)
109
+ ]
110
+ }, undefined, true, undefined, this),
111
+ /* @__PURE__ */ jsxDEV("div", {
112
+ className: "space-y-8",
113
+ children: [
114
+ /* @__PURE__ */ jsxDEV("div", {
115
+ className: "space-y-4",
116
+ children: [
117
+ /* @__PURE__ */ jsxDEV("div", {
118
+ className: "flex items-center gap-2",
119
+ children: [
120
+ /* @__PURE__ */ jsxDEV("span", {
121
+ className: "text-muted-foreground text-xs font-medium",
122
+ children: "Draft"
123
+ }, undefined, false, undefined, this),
124
+ /* @__PURE__ */ jsxDEV("span", {
125
+ className: "text-muted-foreground text-xs",
126
+ children: "\u2022"
127
+ }, undefined, false, undefined, this),
128
+ /* @__PURE__ */ jsxDEV("span", {
129
+ className: "text-muted-foreground text-xs",
130
+ children: "Subject to change"
131
+ }, undefined, false, undefined, this)
132
+ ]
133
+ }, undefined, true, undefined, this),
134
+ /* @__PURE__ */ jsxDEV("div", {
135
+ className: "grid gap-4 md:grid-cols-3",
136
+ children: pricingTiers.map((tier) => /* @__PURE__ */ jsxDEV("div", {
137
+ className: "card-subtle relative space-y-4 p-6",
138
+ children: [
139
+ /* @__PURE__ */ jsxDEV("div", {
140
+ className: "bg-muted border-border absolute -top-2 left-1/2 -translate-x-1/2 rounded-full border px-2 py-0.5 text-xs font-medium",
141
+ children: tier.tag
142
+ }, undefined, false, undefined, this),
143
+ /* @__PURE__ */ jsxDEV("div", {
144
+ className: "space-y-2 pt-2",
145
+ children: [
146
+ /* @__PURE__ */ jsxDEV("h3", {
147
+ className: "text-xl font-bold",
148
+ children: tier.title
149
+ }, undefined, false, undefined, this),
150
+ /* @__PURE__ */ jsxDEV("p", {
151
+ className: "text-muted-foreground text-sm",
152
+ children: tier.priceLine
153
+ }, undefined, false, undefined, this)
154
+ ]
155
+ }, undefined, true, undefined, this),
156
+ /* @__PURE__ */ jsxDEV("ul", {
157
+ className: "space-y-2",
158
+ children: tier.bullets.map((bullet, i) => /* @__PURE__ */ jsxDEV("li", {
159
+ className: "text-muted-foreground flex gap-2 text-sm",
160
+ children: [
161
+ /* @__PURE__ */ jsxDEV(CheckCircle, {
162
+ size: 14,
163
+ className: "mt-0.5 shrink-0 text-violet-400"
164
+ }, undefined, false, undefined, this),
165
+ bullet
166
+ ]
167
+ }, i, true, undefined, this))
168
+ }, undefined, false, undefined, this),
169
+ /* @__PURE__ */ jsxDEV("p", {
170
+ className: "text-muted-foreground text-xs italic",
171
+ children: tier.note
172
+ }, undefined, false, undefined, this)
173
+ ]
174
+ }, tier.title, true, undefined, this))
175
+ }, undefined, false, undefined, this)
176
+ ]
177
+ }, undefined, true, undefined, this),
178
+ /* @__PURE__ */ jsxDEV("div", {
179
+ className: "border-border space-y-4 border-t pt-6",
180
+ children: [
181
+ /* @__PURE__ */ jsxDEV("div", {
182
+ children: [
183
+ /* @__PURE__ */ jsxDEV("h3", {
184
+ className: "text-lg font-bold",
185
+ children: "Usage-based, with a generous free tier"
186
+ }, undefined, false, undefined, this),
187
+ /* @__PURE__ */ jsxDEV("p", {
188
+ className: "text-muted-foreground mt-2 text-sm",
189
+ children: "Inspired by products like PostHog, we plan to keep a generous free tier on all plans, then charge based on actual usage: regenerations, AI agent actions, and the number of projects you run on ContractSpec."
190
+ }, undefined, false, undefined, this),
191
+ /* @__PURE__ */ jsxDEV("p", {
192
+ className: "text-muted-foreground mt-3 text-xs italic",
193
+ children: "Free tier limits are intentionally small but useful: enough to try the agent and regenerate a real project, not enough to run a full team's workload for free."
194
+ }, undefined, false, undefined, this)
195
+ ]
196
+ }, undefined, true, undefined, this),
197
+ /* @__PURE__ */ jsxDEV("div", {
198
+ className: "grid gap-4 md:grid-cols-3",
199
+ children: usageMetrics.map((metric) => /* @__PURE__ */ jsxDEV("div", {
200
+ className: "card-subtle space-y-2 p-4",
201
+ children: [
202
+ /* @__PURE__ */ jsxDEV("h4", {
203
+ className: "text-sm font-semibold",
204
+ children: metric.name
205
+ }, undefined, false, undefined, this),
206
+ /* @__PURE__ */ jsxDEV("p", {
207
+ className: "text-muted-foreground text-xs",
208
+ children: metric.freeTier
209
+ }, undefined, false, undefined, this),
210
+ /* @__PURE__ */ jsxDEV("p", {
211
+ className: "text-muted-foreground text-xs",
212
+ children: metric.beyond
213
+ }, undefined, false, undefined, this)
214
+ ]
215
+ }, metric.name, true, undefined, this))
216
+ }, undefined, false, undefined, this)
217
+ ]
218
+ }, undefined, true, undefined, this),
219
+ /* @__PURE__ */ jsxDEV("div", {
220
+ className: "border-border space-y-4 border-t pt-6",
221
+ children: [
222
+ /* @__PURE__ */ jsxDEV("p", {
223
+ className: "text-muted-foreground text-xs",
224
+ children: "These numbers are examples only. Final pricing and limits will evolve as we learn from design partners."
225
+ }, undefined, false, undefined, this),
226
+ /* @__PURE__ */ jsxDEV("p", {
227
+ className: "text-muted-foreground text-xs",
228
+ children: "This is a tentative pricing model. We're pre-PMF and pricing is still in draft, subject to change based on what we learn."
229
+ }, undefined, false, undefined, this),
230
+ /* @__PURE__ */ jsxDEV("p", {
231
+ className: "text-muted-foreground text-xs",
232
+ children: "Design partners get early access and a founding discount when paid plans launch."
233
+ }, undefined, false, undefined, this),
234
+ onApplyClick && /* @__PURE__ */ jsxDEV(Button, {
235
+ onClick: () => {
236
+ onOpenChange(false);
237
+ onApplyClick();
238
+ },
239
+ className: "w-full",
240
+ variant: "outline",
241
+ children: "Apply as a design partner"
242
+ }, undefined, false, undefined, this)
243
+ ]
244
+ }, undefined, true, undefined, this)
245
+ ]
246
+ }, undefined, true, undefined, this)
247
+ ]
248
+ }, undefined, true, undefined, this)
249
+ }, undefined, false, undefined, this);
198
250
  }
199
-
200
- //#endregion
201
- export { PricingThinkingModal };
202
- //# sourceMappingURL=pricing-thinking-modal.js.map
251
+ export {
252
+ PricingThinkingModal
253
+ };
@@ -1,7 +1,2 @@
1
- import * as react_jsx_runtime0 from "react/jsx-runtime";
2
-
3
- //#region src/components/marketing/sections/AudienceSection.d.ts
4
- declare function AudienceSection(): react_jsx_runtime0.JSX.Element;
5
- //#endregion
6
- export { AudienceSection };
1
+ export declare function AudienceSection(): import("react/jsx-runtime").JSX.Element;
7
2
  //# sourceMappingURL=AudienceSection.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AudienceSection.d.ts","names":[],"sources":["../../../../src/components/marketing/sections/AudienceSection.tsx"],"mappings":";;;iBAsCgB,eAAA,CAAA,GAAe,kBAAA,CAAA,GAAA,CAAA,OAAA"}
1
+ {"version":3,"file":"AudienceSection.d.ts","sourceRoot":"","sources":["../../../../src/components/marketing/sections/AudienceSection.tsx"],"names":[],"mappings":"AAsCA,wBAAgB,eAAe,4CA2B9B"}