@contractspec/bundle.marketing 3.7.5 → 3.7.7

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 (164) hide show
  1. package/.turbo/turbo-build.log +84 -84
  2. package/AGENTS.md +29 -21
  3. package/CHANGELOG.md +27 -0
  4. package/README.md +36 -49
  5. package/dist/browser/components/marketing/ChangelogPage.js +8 -8
  6. package/dist/browser/components/marketing/CofounderPage.js +167 -523
  7. package/dist/browser/components/marketing/ContactClient.js +200 -207
  8. package/dist/browser/components/marketing/ContributePage.js +211 -463
  9. package/dist/browser/components/marketing/DesignPartnerPage.js +165 -218
  10. package/dist/browser/components/marketing/LandingPage.js +464 -568
  11. package/dist/browser/components/marketing/PricingClient.js +213 -839
  12. package/dist/browser/components/marketing/ProductClientPage.js +265 -463
  13. package/dist/browser/components/marketing/index.js +2007 -3338
  14. package/dist/browser/components/marketing/pricing-thinking-modal.js +12 -12
  15. package/dist/browser/components/marketing/sections/AudienceSection.js +2 -2
  16. package/dist/browser/components/marketing/sections/CorePositioningSection.js +2 -2
  17. package/dist/browser/components/marketing/sections/CtaSection.js +3 -3
  18. package/dist/browser/components/marketing/sections/FearsSection.js +3 -3
  19. package/dist/browser/components/marketing/sections/HeroMarketingSection.js +6 -6
  20. package/dist/browser/components/marketing/sections/IconGridSection.js +2 -2
  21. package/dist/browser/components/marketing/sections/OutputsSection.js +2 -2
  22. package/dist/browser/components/marketing/sections/ProblemSection.js +2 -2
  23. package/dist/browser/components/marketing/sections/SolutionSection.js +2 -2
  24. package/dist/browser/components/marketing/sections/StepsSection.js +4 -4
  25. package/dist/browser/components/marketing/studio-signup-section.js +25 -41
  26. package/dist/browser/components/templates/TemplatesClientPage.js +2324 -3578
  27. package/dist/browser/components/templates/TemplatesPage.js +1 -1
  28. package/dist/browser/components/templates/TemplatesPreviewModal.js +3 -3
  29. package/dist/browser/components/templates/index.js +2361 -3615
  30. package/dist/browser/index.js +2363 -3617
  31. package/dist/browser/libs/email/client.js +1 -1
  32. package/dist/browser/libs/email/contact.js +1 -1
  33. package/dist/browser/libs/email/newsletter.js +1 -1
  34. package/dist/browser/libs/email/waitlist-application.js +1 -1
  35. package/dist/browser/libs/email/waitlist.js +1 -1
  36. package/dist/browser/registry/engine.js +2003 -3334
  37. package/dist/browser/registry/index.js +2003 -3334
  38. package/dist/browser/registry/registry-docs.js +2 -2
  39. package/dist/browser/registry/registry-landing.js +2007 -3338
  40. package/dist/browser/registry/registry.js +2003 -3334
  41. package/dist/browser/registry/utils.js +2003 -3334
  42. package/dist/components/marketing/ChangelogPage.js +8 -8
  43. package/dist/components/marketing/CofounderPage.js +167 -523
  44. package/dist/components/marketing/ContactClient.js +200 -207
  45. package/dist/components/marketing/ContributePage.d.ts +0 -2
  46. package/dist/components/marketing/ContributePage.js +211 -463
  47. package/dist/components/marketing/DesignPartnerPage.js +165 -218
  48. package/dist/components/marketing/LandingPage.js +464 -568
  49. package/dist/components/marketing/PricingClient.js +213 -839
  50. package/dist/components/marketing/ProductClientPage.js +265 -463
  51. package/dist/components/marketing/index.d.ts +5 -5
  52. package/dist/components/marketing/index.js +2007 -3338
  53. package/dist/components/marketing/pricing-thinking-modal.js +12 -12
  54. package/dist/components/marketing/sections/AudienceSection.js +2 -2
  55. package/dist/components/marketing/sections/CorePositioningSection.js +2 -2
  56. package/dist/components/marketing/sections/CtaSection.js +3 -3
  57. package/dist/components/marketing/sections/FearsSection.js +3 -3
  58. package/dist/components/marketing/sections/HeroMarketingSection.js +6 -6
  59. package/dist/components/marketing/sections/IconGridSection.d.ts +3 -3
  60. package/dist/components/marketing/sections/IconGridSection.js +2 -2
  61. package/dist/components/marketing/sections/OutputsSection.js +2 -2
  62. package/dist/components/marketing/sections/ProblemSection.js +2 -2
  63. package/dist/components/marketing/sections/SolutionSection.js +2 -2
  64. package/dist/components/marketing/sections/StepsSection.js +4 -4
  65. package/dist/components/marketing/studio-signup-section.js +25 -41
  66. package/dist/components/templates/TemplatesClientPage.js +2324 -3578
  67. package/dist/components/templates/TemplatesPage.js +1 -1
  68. package/dist/components/templates/TemplatesPreviewModal.js +3 -3
  69. package/dist/components/templates/index.js +2361 -3615
  70. package/dist/index.js +2363 -3617
  71. package/dist/libs/email/client.js +1 -1
  72. package/dist/libs/email/contact.js +1 -1
  73. package/dist/libs/email/newsletter.js +1 -1
  74. package/dist/libs/email/waitlist-application.js +1 -1
  75. package/dist/libs/email/waitlist.js +1 -1
  76. package/dist/node/components/marketing/ChangelogPage.js +8 -8
  77. package/dist/node/components/marketing/CofounderPage.js +167 -523
  78. package/dist/node/components/marketing/ContactClient.js +200 -207
  79. package/dist/node/components/marketing/ContributePage.js +211 -463
  80. package/dist/node/components/marketing/DesignPartnerPage.js +165 -218
  81. package/dist/node/components/marketing/LandingPage.js +464 -568
  82. package/dist/node/components/marketing/PricingClient.js +213 -839
  83. package/dist/node/components/marketing/ProductClientPage.js +265 -463
  84. package/dist/node/components/marketing/index.js +2007 -3338
  85. package/dist/node/components/marketing/pricing-thinking-modal.js +12 -12
  86. package/dist/node/components/marketing/sections/AudienceSection.js +2 -2
  87. package/dist/node/components/marketing/sections/CorePositioningSection.js +2 -2
  88. package/dist/node/components/marketing/sections/CtaSection.js +3 -3
  89. package/dist/node/components/marketing/sections/FearsSection.js +3 -3
  90. package/dist/node/components/marketing/sections/HeroMarketingSection.js +6 -6
  91. package/dist/node/components/marketing/sections/IconGridSection.js +2 -2
  92. package/dist/node/components/marketing/sections/OutputsSection.js +2 -2
  93. package/dist/node/components/marketing/sections/ProblemSection.js +2 -2
  94. package/dist/node/components/marketing/sections/SolutionSection.js +2 -2
  95. package/dist/node/components/marketing/sections/StepsSection.js +4 -4
  96. package/dist/node/components/marketing/studio-signup-section.js +25 -41
  97. package/dist/node/components/templates/TemplatesClientPage.js +2324 -3578
  98. package/dist/node/components/templates/TemplatesPage.js +1 -1
  99. package/dist/node/components/templates/TemplatesPreviewModal.js +3 -3
  100. package/dist/node/components/templates/index.js +2361 -3615
  101. package/dist/node/index.js +2363 -3617
  102. package/dist/node/libs/email/client.js +1 -1
  103. package/dist/node/libs/email/contact.js +1 -1
  104. package/dist/node/libs/email/newsletter.js +1 -1
  105. package/dist/node/libs/email/waitlist-application.js +1 -1
  106. package/dist/node/libs/email/waitlist.js +1 -1
  107. package/dist/node/registry/engine.js +2003 -3334
  108. package/dist/node/registry/index.js +2003 -3334
  109. package/dist/node/registry/registry-docs.js +2 -2
  110. package/dist/node/registry/registry-landing.js +2007 -3338
  111. package/dist/node/registry/registry.js +2003 -3334
  112. package/dist/node/registry/utils.js +2003 -3334
  113. package/dist/registry/engine.js +2003 -3334
  114. package/dist/registry/index.js +2003 -3334
  115. package/dist/registry/registry-docs.js +2 -2
  116. package/dist/registry/registry-landing.js +2007 -3338
  117. package/dist/registry/registry.js +2003 -3334
  118. package/dist/registry/utils.js +2003 -3334
  119. package/package.json +29 -29
  120. package/src/bundles/MarketingBundle.ts +273 -273
  121. package/src/components/marketing/ChangelogPage.tsx +72 -100
  122. package/src/components/marketing/CofounderPage.tsx +120 -384
  123. package/src/components/marketing/ContactClient.tsx +164 -154
  124. package/src/components/marketing/ContributePage.tsx +139 -313
  125. package/src/components/marketing/DesignPartnerPage.tsx +133 -171
  126. package/src/components/marketing/LandingPage.tsx +353 -25
  127. package/src/components/marketing/PricingClient.tsx +192 -437
  128. package/src/components/marketing/ProductClientPage.tsx +255 -377
  129. package/src/components/marketing/index.ts +5 -5
  130. package/src/components/marketing/pricing-thinking-modal.tsx +197 -197
  131. package/src/components/marketing/sections/AudienceSection.tsx +55 -56
  132. package/src/components/marketing/sections/CorePositioningSection.tsx +37 -37
  133. package/src/components/marketing/sections/CtaSection.tsx +49 -50
  134. package/src/components/marketing/sections/DevelopersSection.tsx +26 -27
  135. package/src/components/marketing/sections/FearsSection.tsx +36 -37
  136. package/src/components/marketing/sections/HeroMarketingSection.tsx +59 -59
  137. package/src/components/marketing/sections/IconGridSection.tsx +71 -71
  138. package/src/components/marketing/sections/OutputsSection.tsx +51 -52
  139. package/src/components/marketing/sections/ProblemSection.tsx +39 -40
  140. package/src/components/marketing/sections/SolutionSection.tsx +39 -40
  141. package/src/components/marketing/sections/StepsSection.tsx +47 -48
  142. package/src/components/marketing/studio-signup-section.tsx +39 -41
  143. package/src/components/templates/TemplatesClientPage.tsx +727 -685
  144. package/src/components/templates/TemplatesPage.tsx +110 -110
  145. package/src/components/templates/TemplatesPreviewModal.tsx +197 -198
  146. package/src/index.ts +4 -4
  147. package/src/libs/email/client.test.ts +81 -81
  148. package/src/libs/email/client.ts +111 -111
  149. package/src/libs/email/contact.ts +35 -35
  150. package/src/libs/email/newsletter.ts +46 -46
  151. package/src/libs/email/types.ts +29 -29
  152. package/src/libs/email/utils.ts +5 -5
  153. package/src/libs/email/waitlist-application.ts +72 -72
  154. package/src/libs/email/waitlist.ts +46 -46
  155. package/src/libs/pricing-examples.ts +12 -12
  156. package/src/registry/engine.ts +16 -16
  157. package/src/registry/factory.ts +57 -57
  158. package/src/registry/registry-docs.ts +656 -666
  159. package/src/registry/registry-landing.ts +94 -95
  160. package/src/registry/registry.ts +36 -37
  161. package/src/registry/types.ts +2 -2
  162. package/src/registry/utils.ts +56 -56
  163. package/tsconfig.json +11 -11
  164. package/tsdown.config.js +5 -5
@@ -2,27 +2,7 @@ import { createRequire } from "node:module";
2
2
  var __require = /* @__PURE__ */ createRequire(import.meta.url);
3
3
 
4
4
  // src/components/marketing/CofounderPage.tsx
5
- import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
6
- import { Box, HStack, VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
7
- import {
8
- H1,
9
- H2,
10
- H3,
11
- Lead,
12
- Muted,
13
- Small
14
- } from "@contractspec/lib.ui-kit-web/ui/typography";
15
- import {
16
- Check,
17
- Clock,
18
- MapPin,
19
- MessageSquare,
20
- Percent,
21
- Rocket,
22
- Target,
23
- Users,
24
- X
25
- } from "lucide-react";
5
+ import Link from "next/link";
26
6
  import { jsxDEV } from "react/jsx-dev-runtime";
27
7
  "use client";
28
8
  var COFOUNDER_EMAIL = "tboutron@contractspec.io";
@@ -42,532 +22,196 @@ What I would own in the first 90 days:
42
22
  [your answer]
43
23
  `;
44
24
  var mailtoLink = `mailto:${COFOUNDER_EMAIL}?subject=${encodeURIComponent(APPLY_SUBJECT)}&body=${encodeURIComponent(APPLY_BODY)}`;
45
- function HeroSection() {
46
- return /* @__PURE__ */ jsxDEV(MarketingSection, {
47
- tone: "gradient",
48
- padding: "spacious",
49
- align: "center",
50
- children: /* @__PURE__ */ jsxDEV(VStack, {
51
- gap: "lg",
52
- align: "center",
53
- className: "text-center",
54
- children: [
55
- /* @__PURE__ */ jsxDEV(H1, {
56
- className: "text-4xl leading-tight font-bold text-balance md:text-5xl",
57
- children: "Co-founder wanted"
58
- }, undefined, false, undefined, this),
59
- /* @__PURE__ */ jsxDEV(Lead, {
60
- className: "text-muted-foreground max-w-2xl text-lg text-balance md:text-xl",
61
- children: "ContractSpec is a contract-first compiler for AI-generated code. Define specs, enforce policies, regenerate safely. Pre-PMF. Building in public."
62
- }, undefined, false, undefined, this),
63
- /* @__PURE__ */ jsxDEV(HStack, {
64
- gap: "md",
65
- justify: "center",
66
- wrap: "wrap",
67
- className: "pt-2",
68
- children: [
69
- /* @__PURE__ */ jsxDEV(ButtonLink, {
70
- href: mailtoLink,
71
- children: "Talk about co-founding"
72
- }, undefined, false, undefined, this),
73
- /* @__PURE__ */ jsxDEV(ButtonLink, {
74
- variant: "ghost",
75
- href: "/contact",
76
- children: "Become a design partner"
77
- }, undefined, false, undefined, this)
78
- ]
79
- }, undefined, true, undefined, this)
80
- ]
81
- }, undefined, true, undefined, this)
82
- }, undefined, false, undefined, this);
83
- }
84
- function WhatExistsSection() {
85
- const realNow = [
86
- "ContractSpec Core: open-source spec compiler",
87
- "Working CLI and TypeScript runtime",
88
- "Design partner pipeline open",
89
- "Solo founder, bootstrapped"
90
- ];
91
- const planned = [
92
- "ContractSpec Studio product-decision engine",
93
- "Auto-evolution engine",
94
- "Multi-tenant SaaS",
95
- "Integration marketplace"
96
- ];
97
- return /* @__PURE__ */ jsxDEV(MarketingSection, {
98
- padding: "comfortable",
99
- align: "center",
100
- maxWidth: "lg",
101
- children: /* @__PURE__ */ jsxDEV(VStack, {
102
- gap: "lg",
103
- children: [
104
- /* @__PURE__ */ jsxDEV(H2, {
105
- className: "text-3xl font-bold",
106
- children: "What exists today"
107
- }, undefined, false, undefined, this),
108
- /* @__PURE__ */ jsxDEV("div", {
109
- className: "grid w-full gap-8 md:grid-cols-2",
25
+ var tracks = [
26
+ {
27
+ title: "GTM / partnerships",
28
+ copy: "Own the design partner pipeline, sharpen messaging, and turn market feedback into product signal."
29
+ },
30
+ {
31
+ title: "Product / design",
32
+ copy: "Own the Studio surface, shape the interaction model, and turn live user behavior into clearer workflows."
33
+ }
34
+ ];
35
+ function CofounderPage() {
36
+ return /* @__PURE__ */ jsxDEV("main", {
37
+ children: [
38
+ /* @__PURE__ */ jsxDEV("section", {
39
+ className: "section-padding hero-gradient border-border/70 border-b",
40
+ children: /* @__PURE__ */ jsxDEV("div", {
41
+ className: "editorial-shell grid gap-8 lg:grid-cols-[1.05fr_0.95fr]",
110
42
  children: [
111
- /* @__PURE__ */ jsxDEV(VStack, {
112
- gap: "sm",
113
- align: "start",
43
+ /* @__PURE__ */ jsxDEV("div", {
44
+ className: "space-y-5",
114
45
  children: [
115
- /* @__PURE__ */ jsxDEV(H3, {
116
- className: "text-lg font-semibold text-emerald-400",
117
- children: "Real now"
46
+ /* @__PURE__ */ jsxDEV("p", {
47
+ className: "editorial-kicker",
48
+ children: "Co-founder search"
118
49
  }, undefined, false, undefined, this),
119
- /* @__PURE__ */ jsxDEV("ul", {
120
- className: "space-y-2",
121
- children: realNow.map((item) => /* @__PURE__ */ jsxDEV("li", {
122
- className: "flex items-start gap-2",
123
- children: [
124
- /* @__PURE__ */ jsxDEV(Check, {
125
- size: 16,
126
- className: "mt-1 shrink-0 text-emerald-400"
127
- }, undefined, false, undefined, this),
128
- /* @__PURE__ */ jsxDEV(Small, {
129
- children: item
130
- }, undefined, false, undefined, this)
131
- ]
132
- }, item, true, undefined, this))
50
+ /* @__PURE__ */ jsxDEV("h1", {
51
+ className: "editorial-title max-w-4xl",
52
+ children: "Looking for a co-founder who wants to build an open system and the product on top of it."
53
+ }, undefined, false, undefined, this),
54
+ /* @__PURE__ */ jsxDEV("p", {
55
+ className: "editorial-subtitle",
56
+ children: "ContractSpec already has the early stack shape: explicit contracts, runtimes, harnesses, examples, and the first Studio operating loops. The next phase needs someone who can own either GTM or product depth with real execution energy."
133
57
  }, undefined, false, undefined, this)
134
58
  ]
135
59
  }, undefined, true, undefined, this),
136
- /* @__PURE__ */ jsxDEV(VStack, {
137
- gap: "sm",
138
- align: "start",
60
+ /* @__PURE__ */ jsxDEV("div", {
61
+ className: "editorial-panel space-y-5",
139
62
  children: [
140
- /* @__PURE__ */ jsxDEV(H3, {
141
- className: "text-lg font-semibold text-blue-400",
142
- children: "Planned"
63
+ /* @__PURE__ */ jsxDEV("p", {
64
+ className: "editorial-kicker",
65
+ children: "What exists now"
143
66
  }, undefined, false, undefined, this),
144
67
  /* @__PURE__ */ jsxDEV("ul", {
145
- className: "space-y-2",
146
- children: planned.map((item) => /* @__PURE__ */ jsxDEV("li", {
147
- className: "flex items-start gap-2",
148
- children: [
149
- /* @__PURE__ */ jsxDEV(Target, {
150
- size: 16,
151
- className: "mt-1 shrink-0 text-blue-400"
152
- }, undefined, false, undefined, this),
153
- /* @__PURE__ */ jsxDEV(Small, {
154
- children: item
155
- }, undefined, false, undefined, this)
156
- ]
157
- }, item, true, undefined, this))
68
+ className: "editorial-list",
69
+ children: [
70
+ /* @__PURE__ */ jsxDEV("li", {
71
+ children: [
72
+ /* @__PURE__ */ jsxDEV("span", {
73
+ className: "editorial-list-marker"
74
+ }, undefined, false, undefined, this),
75
+ /* @__PURE__ */ jsxDEV("span", {
76
+ children: "Open-source package ecosystem and working website/docs surface."
77
+ }, undefined, false, undefined, this)
78
+ ]
79
+ }, undefined, true, undefined, this),
80
+ /* @__PURE__ */ jsxDEV("li", {
81
+ children: [
82
+ /* @__PURE__ */ jsxDEV("span", {
83
+ className: "editorial-list-marker"
84
+ }, undefined, false, undefined, this),
85
+ /* @__PURE__ */ jsxDEV("span", {
86
+ children: "Studio product direction with live operating workflows."
87
+ }, undefined, false, undefined, this)
88
+ ]
89
+ }, undefined, true, undefined, this),
90
+ /* @__PURE__ */ jsxDEV("li", {
91
+ children: [
92
+ /* @__PURE__ */ jsxDEV("span", {
93
+ className: "editorial-list-marker"
94
+ }, undefined, false, undefined, this),
95
+ /* @__PURE__ */ jsxDEV("span", {
96
+ children: "Founder-led product, bootstrapped, still early enough to shape."
97
+ }, undefined, false, undefined, this)
98
+ ]
99
+ }, undefined, true, undefined, this)
100
+ ]
101
+ }, undefined, true, undefined, this),
102
+ /* @__PURE__ */ jsxDEV(Link, {
103
+ href: mailtoLink,
104
+ className: "btn-primary",
105
+ children: "Talk about co-founding"
158
106
  }, undefined, false, undefined, this)
159
107
  ]
160
108
  }, undefined, true, undefined, this)
161
109
  ]
162
110
  }, undefined, true, undefined, this)
163
- ]
164
- }, undefined, true, undefined, this)
165
- }, undefined, false, undefined, this);
166
- }
167
- function RoleSection() {
168
- const gtmDeliverables = [
169
- "Run 5+ sales conversations per week",
170
- "Own the design partner pipeline end-to-end",
171
- "Write positioning copy that ships",
172
- "Build and maintain partnership channels",
173
- "Turn user feedback into roadmap signal"
174
- ];
175
- const productDeliverables = [
176
- "Ship UI/UX improvements weekly",
177
- "Define specs based on user research",
178
- "Own the Studio product experience",
179
- "Collaborate on architecture decisions"
180
- ];
181
- return /* @__PURE__ */ jsxDEV(MarketingSection, {
182
- padding: "comfortable",
183
- align: "center",
184
- maxWidth: "lg",
185
- children: /* @__PURE__ */ jsxDEV(VStack, {
186
- gap: "lg",
187
- children: [
188
- /* @__PURE__ */ jsxDEV(H2, {
189
- className: "text-3xl font-bold",
190
- children: "The role"
191
- }, undefined, false, undefined, this),
192
- /* @__PURE__ */ jsxDEV(VStack, {
193
- gap: "md",
194
- align: "start",
195
- className: "w-full",
196
- children: [
197
- /* @__PURE__ */ jsxDEV(H3, {
198
- className: "text-xl font-semibold",
199
- children: "Option A: GTM / Sales / Partnerships"
200
- }, undefined, false, undefined, this),
201
- /* @__PURE__ */ jsxDEV(Muted, {
202
- children: "Weekly deliverables, not vague traits:"
203
- }, undefined, false, undefined, this),
204
- /* @__PURE__ */ jsxDEV("ul", {
205
- className: "space-y-2",
206
- children: gtmDeliverables.map((item) => /* @__PURE__ */ jsxDEV("li", {
207
- className: "flex items-start gap-2",
208
- children: [
209
- /* @__PURE__ */ jsxDEV(Rocket, {
210
- size: 16,
211
- className: "mt-1 shrink-0 text-amber-400"
212
- }, undefined, false, undefined, this),
213
- /* @__PURE__ */ jsxDEV(Small, {
214
- children: item
215
- }, undefined, false, undefined, this)
216
- ]
217
- }, item, true, undefined, this))
218
- }, undefined, false, undefined, this)
219
- ]
220
- }, undefined, true, undefined, this),
221
- /* @__PURE__ */ jsxDEV(VStack, {
222
- gap: "md",
223
- align: "start",
224
- className: "w-full pt-4",
225
- children: [
226
- /* @__PURE__ */ jsxDEV(H3, {
227
- className: "text-xl font-semibold",
228
- children: "Option B: Product / Design"
229
- }, undefined, false, undefined, this),
230
- /* @__PURE__ */ jsxDEV(Muted, {
231
- children: "If this is your strength:"
232
- }, undefined, false, undefined, this),
233
- /* @__PURE__ */ jsxDEV("ul", {
234
- className: "space-y-2",
235
- children: productDeliverables.map((item) => /* @__PURE__ */ jsxDEV("li", {
236
- className: "flex items-start gap-2",
237
- children: [
238
- /* @__PURE__ */ jsxDEV(Rocket, {
239
- size: 16,
240
- className: "mt-1 shrink-0 text-purple-400"
241
- }, undefined, false, undefined, this),
242
- /* @__PURE__ */ jsxDEV(Small, {
243
- children: item
244
- }, undefined, false, undefined, this)
245
- ]
246
- }, item, true, undefined, this))
247
- }, undefined, false, undefined, this)
248
- ]
249
- }, undefined, true, undefined, this)
250
- ]
251
- }, undefined, true, undefined, this)
252
- }, undefined, false, undefined, this);
253
- }
254
- function IdealCofounderSection() {
255
- const qualities = [
256
- "You have shipped products people paid for — links or it didn't happen",
257
- "You have sold something (product, consulting, yourself)",
258
- "You write clearly and fast — emails, docs, copy",
259
- "You have taste: you know good UX when you see it",
260
- "You can work 6+ months without a salary",
261
- "You are allergic to meetings that could be docs",
262
- "You have built in public or contributed to open source",
263
- "You are based in Europe or overlap significantly with CET"
264
- ];
265
- return /* @__PURE__ */ jsxDEV(MarketingSection, {
266
- padding: "comfortable",
267
- align: "center",
268
- maxWidth: "lg",
269
- children: /* @__PURE__ */ jsxDEV(VStack, {
270
- gap: "lg",
271
- children: [
272
- /* @__PURE__ */ jsxDEV(H2, {
273
- className: "text-3xl font-bold",
274
- children: "The ideal co-founder"
275
- }, undefined, false, undefined, this),
276
- /* @__PURE__ */ jsxDEV("ul", {
277
- className: "space-y-3",
278
- children: qualities.map((item) => /* @__PURE__ */ jsxDEV("li", {
279
- className: "flex items-start gap-2",
280
- children: [
281
- /* @__PURE__ */ jsxDEV(Check, {
282
- size: 16,
283
- className: "mt-1 shrink-0 text-emerald-400"
284
- }, undefined, false, undefined, this),
285
- /* @__PURE__ */ jsxDEV(Small, {
286
- children: item
287
- }, undefined, false, undefined, this)
288
- ]
289
- }, item, true, undefined, this))
290
- }, undefined, false, undefined, this),
291
- /* @__PURE__ */ jsxDEV(Box, {
292
- className: "border-border mt-4 rounded-lg border p-4",
293
- children: /* @__PURE__ */ jsxDEV(VStack, {
294
- gap: "sm",
295
- align: "start",
296
- children: [
297
- /* @__PURE__ */ jsxDEV(H3, {
298
- className: "text-lg font-semibold",
299
- children: "Proof of work examples"
300
- }, undefined, false, undefined, this),
301
- /* @__PURE__ */ jsxDEV(Muted, {
302
- className: "text-sm",
303
- children: "GitHub profile, shipped product, writing (blog/Twitter/essays), revenue screenshot, open-source contributions, or anything that shows you execute."
304
- }, undefined, false, undefined, this)
305
- ]
306
- }, undefined, true, undefined, this)
307
- }, undefined, false, undefined, this)
308
- ]
309
- }, undefined, true, undefined, this)
310
- }, undefined, false, undefined, this);
311
- }
312
- function WhatYouGetSection() {
313
- const benefits = [
314
- {
315
- icon: /* @__PURE__ */ jsxDEV(Percent, {
316
- size: 20,
317
- className: "text-emerald-400"
318
- }, undefined, false, undefined, this),
319
- title: "Equity-first",
320
- desc: "Meaningful co-founder equity. Salary is minimal/zero until revenue covers it."
321
- },
322
- {
323
- icon: /* @__PURE__ */ jsxDEV(Users, {
324
- size: 20,
325
- className: "text-blue-400"
326
111
  }, undefined, false, undefined, this),
327
- title: "Real ownership",
328
- desc: "You own your domain. No permission-seeking. Ship and iterate."
329
- },
330
- {
331
- icon: /* @__PURE__ */ jsxDEV(MessageSquare, {
332
- size: 20,
333
- className: "text-amber-400"
334
- }, undefined, false, undefined, this),
335
- title: "Written-first decisions",
336
- desc: "We default to async, docs, and fast decisions. Meetings are last resort."
337
- }
338
- ];
339
- const values = [
340
- "Contracts over conventions",
341
- "Clarity over cleverness",
342
- "Safety over speed (in code)",
343
- "Leverage over labor"
344
- ];
345
- return /* @__PURE__ */ jsxDEV(MarketingSection, {
346
- padding: "comfortable",
347
- align: "center",
348
- maxWidth: "lg",
349
- children: /* @__PURE__ */ jsxDEV(VStack, {
350
- gap: "lg",
351
- children: [
352
- /* @__PURE__ */ jsxDEV(H2, {
353
- className: "text-3xl font-bold",
354
- children: "What you get"
355
- }, undefined, false, undefined, this),
356
- /* @__PURE__ */ jsxDEV("div", {
357
- className: "grid w-full gap-6 md:grid-cols-3",
358
- children: benefits.map((b) => /* @__PURE__ */ jsxDEV(VStack, {
359
- gap: "sm",
360
- align: "start",
361
- className: "border-border rounded-lg border p-4",
112
+ /* @__PURE__ */ jsxDEV("section", {
113
+ className: "editorial-section",
114
+ children: /* @__PURE__ */ jsxDEV("div", {
115
+ className: "editorial-shell grid gap-6 lg:grid-cols-2",
116
+ children: tracks.map((track) => /* @__PURE__ */ jsxDEV("div", {
117
+ className: "editorial-panel",
362
118
  children: [
363
- b.icon,
364
- /* @__PURE__ */ jsxDEV(H3, {
365
- className: "text-lg font-semibold",
366
- children: b.title
119
+ /* @__PURE__ */ jsxDEV("p", {
120
+ className: "editorial-kicker",
121
+ children: track.title
367
122
  }, undefined, false, undefined, this),
368
- /* @__PURE__ */ jsxDEV(Muted, {
369
- className: "text-sm",
370
- children: b.desc
371
- }, undefined, false, undefined, this)
372
- ]
373
- }, b.title, true, undefined, this))
374
- }, undefined, false, undefined, this),
375
- /* @__PURE__ */ jsxDEV(VStack, {
376
- gap: "sm",
377
- align: "start",
378
- className: "w-full pt-4",
379
- children: [
380
- /* @__PURE__ */ jsxDEV(H3, {
381
- className: "text-lg font-semibold",
382
- children: "Our values"
383
- }, undefined, false, undefined, this),
384
- /* @__PURE__ */ jsxDEV(HStack, {
385
- gap: "sm",
386
- wrap: "wrap",
387
- children: values.map((v) => /* @__PURE__ */ jsxDEV(Box, {
388
- className: "border-border rounded-full border px-3 py-1 text-sm",
389
- children: v
390
- }, v, false, undefined, this))
391
- }, undefined, false, undefined, this)
392
- ]
393
- }, undefined, true, undefined, this)
394
- ]
395
- }, undefined, true, undefined, this)
396
- }, undefined, false, undefined, this);
397
- }
398
- function RedFlagsSection() {
399
- const redFlags = [
400
- "Needs a big salary now",
401
- "Hates selling or talking to users",
402
- "Vague about past execution",
403
- 'Wants to "advise" instead of build',
404
- "Needs a big team to feel productive",
405
- "Cannot write clearly"
406
- ];
407
- return /* @__PURE__ */ jsxDEV(MarketingSection, {
408
- padding: "comfortable",
409
- align: "center",
410
- maxWidth: "lg",
411
- children: /* @__PURE__ */ jsxDEV(VStack, {
412
- gap: "lg",
413
- children: [
414
- /* @__PURE__ */ jsxDEV(H2, {
415
- className: "text-3xl font-bold",
416
- children: "Non-negotiables / red flags"
417
- }, undefined, false, undefined, this),
418
- /* @__PURE__ */ jsxDEV(Muted, {
419
- children: "If any of these apply, this is not the right fit:"
420
- }, undefined, false, undefined, this),
421
- /* @__PURE__ */ jsxDEV("ul", {
422
- className: "space-y-2",
423
- children: redFlags.map((item) => /* @__PURE__ */ jsxDEV("li", {
424
- className: "flex items-start gap-2",
425
- children: [
426
- /* @__PURE__ */ jsxDEV(X, {
427
- size: 16,
428
- className: "mt-1 shrink-0 text-red-400"
123
+ /* @__PURE__ */ jsxDEV("h2", {
124
+ className: "mt-3 font-serif text-4xl tracking-[-0.04em]",
125
+ children: track.title
429
126
  }, undefined, false, undefined, this),
430
- /* @__PURE__ */ jsxDEV(Small, {
431
- children: item
127
+ /* @__PURE__ */ jsxDEV("p", {
128
+ className: "mt-4 text-muted-foreground text-sm leading-7",
129
+ children: track.copy
432
130
  }, undefined, false, undefined, this)
433
131
  ]
434
- }, item, true, undefined, this))
132
+ }, track.title, true, undefined, this))
435
133
  }, undefined, false, undefined, this)
436
- ]
437
- }, undefined, true, undefined, this)
438
- }, undefined, false, undefined, this);
439
- }
440
- function FAQSection() {
441
- const faqs = [
442
- {
443
- icon: /* @__PURE__ */ jsxDEV(Users, {
444
- size: 18
445
- }, undefined, false, undefined, this),
446
- q: "Why co-founder instead of hiring?",
447
- a: "I need a partner who thinks like an owner, not an employee. Someone who will stay when things get hard and share in the upside when they don't."
448
- },
449
- {
450
- icon: /* @__PURE__ */ jsxDEV(Clock, {
451
- size: 18
452
- }, undefined, false, undefined, this),
453
- q: "What is the timeline to revenue?",
454
- a: "Design partners are converting now. Goal: paying customers in 2025. But this is startup life — timelines are best guesses."
455
- },
456
- {
457
- icon: /* @__PURE__ */ jsxDEV(MapPin, {
458
- size: 18
459
134
  }, undefined, false, undefined, this),
460
- q: "Is this remote?",
461
- a: "Yes. Async-first. Occasional in-person (Paris-based) for planning. Europe timezone overlap strongly preferred."
462
- },
463
- {
464
- icon: /* @__PURE__ */ jsxDEV(Percent, {
465
- size: 18
466
- }, undefined, false, undefined, this),
467
- q: "How much equity?",
468
- a: "Depends on what you bring, when you join, and how much you can commit. Expect meaningful co-founder equity with 4-year vesting. We will discuss specifics in person."
469
- }
470
- ];
471
- return /* @__PURE__ */ jsxDEV(MarketingSection, {
472
- padding: "comfortable",
473
- align: "center",
474
- maxWidth: "lg",
475
- children: /* @__PURE__ */ jsxDEV(VStack, {
476
- gap: "lg",
477
- children: [
478
- /* @__PURE__ */ jsxDEV(H2, {
479
- className: "text-3xl font-bold",
480
- children: "FAQ"
481
- }, undefined, false, undefined, this),
482
- /* @__PURE__ */ jsxDEV(VStack, {
483
- gap: "md",
484
- className: "w-full",
485
- children: faqs.map((faq) => /* @__PURE__ */ jsxDEV(VStack, {
486
- gap: "xs",
487
- align: "start",
488
- className: "border-border w-full rounded-lg border p-4",
489
- children: [
490
- /* @__PURE__ */ jsxDEV(HStack, {
491
- gap: "sm",
492
- align: "center",
493
- children: [
494
- /* @__PURE__ */ jsxDEV("span", {
495
- className: "text-muted-foreground",
496
- children: faq.icon
497
- }, undefined, false, undefined, this),
498
- /* @__PURE__ */ jsxDEV(H3, {
499
- className: "text-lg font-semibold",
500
- children: faq.q
501
- }, undefined, false, undefined, this)
502
- ]
503
- }, undefined, true, undefined, this),
504
- /* @__PURE__ */ jsxDEV(Muted, {
505
- children: faq.a
506
- }, undefined, false, undefined, this)
507
- ]
508
- }, faq.q, true, undefined, this))
509
- }, undefined, false, undefined, this)
510
- ]
511
- }, undefined, true, undefined, this)
512
- }, undefined, false, undefined, this);
513
- }
514
- function FinalCtaSection() {
515
- return /* @__PURE__ */ jsxDEV(MarketingSection, {
516
- tone: "gradient",
517
- padding: "comfortable",
518
- align: "center",
519
- maxWidth: "lg",
520
- children: /* @__PURE__ */ jsxDEV(VStack, {
521
- gap: "md",
522
- align: "center",
523
- className: "text-center",
524
- children: [
525
- /* @__PURE__ */ jsxDEV(H2, {
526
- className: "text-3xl font-bold md:text-4xl",
527
- children: "Ready to talk?"
528
- }, undefined, false, undefined, this),
529
- /* @__PURE__ */ jsxDEV(Lead, {
530
- className: "text-muted-foreground max-w-xl",
531
- children: "Send an email with: your LinkedIn, 2 proof-of-work links, why ContractSpec, and what you would own in the first 90 days."
532
- }, undefined, false, undefined, this),
533
- /* @__PURE__ */ jsxDEV(HStack, {
534
- gap: "md",
535
- justify: "center",
536
- wrap: "wrap",
537
- className: "pt-2",
135
+ /* @__PURE__ */ jsxDEV("section", {
136
+ className: "editorial-section bg-striped",
137
+ children: /* @__PURE__ */ jsxDEV("div", {
138
+ className: "editorial-shell grid gap-8 lg:grid-cols-2",
538
139
  children: [
539
- /* @__PURE__ */ jsxDEV(ButtonLink, {
540
- href: mailtoLink,
541
- children: "Talk about co-founding"
542
- }, undefined, false, undefined, this),
543
- /* @__PURE__ */ jsxDEV(ButtonLink, {
544
- variant: "ghost",
545
- href: "/contact",
546
- children: "Become a design partner"
547
- }, undefined, false, undefined, this)
140
+ /* @__PURE__ */ jsxDEV("div", {
141
+ className: "editorial-panel",
142
+ children: [
143
+ /* @__PURE__ */ jsxDEV("p", {
144
+ className: "editorial-kicker",
145
+ children: "What good looks like"
146
+ }, undefined, false, undefined, this),
147
+ /* @__PURE__ */ jsxDEV("ul", {
148
+ className: "editorial-list mt-6",
149
+ children: [
150
+ /* @__PURE__ */ jsxDEV("li", {
151
+ children: [
152
+ /* @__PURE__ */ jsxDEV("span", {
153
+ className: "editorial-list-marker"
154
+ }, undefined, false, undefined, this),
155
+ /* @__PURE__ */ jsxDEV("span", {
156
+ children: "You have proof of work, not just interest."
157
+ }, undefined, false, undefined, this)
158
+ ]
159
+ }, undefined, true, undefined, this),
160
+ /* @__PURE__ */ jsxDEV("li", {
161
+ children: [
162
+ /* @__PURE__ */ jsxDEV("span", {
163
+ className: "editorial-list-marker"
164
+ }, undefined, false, undefined, this),
165
+ /* @__PURE__ */ jsxDEV("span", {
166
+ children: "You can own a whole surface and move without waiting for permission."
167
+ }, undefined, false, undefined, this)
168
+ ]
169
+ }, undefined, true, undefined, this),
170
+ /* @__PURE__ */ jsxDEV("li", {
171
+ children: [
172
+ /* @__PURE__ */ jsxDEV("span", {
173
+ className: "editorial-list-marker"
174
+ }, undefined, false, undefined, this),
175
+ /* @__PURE__ */ jsxDEV("span", {
176
+ children: "You like written clarity, sharp product taste, and direct feedback."
177
+ }, undefined, false, undefined, this)
178
+ ]
179
+ }, undefined, true, undefined, this)
180
+ ]
181
+ }, undefined, true, undefined, this)
182
+ ]
183
+ }, undefined, true, undefined, this),
184
+ /* @__PURE__ */ jsxDEV("div", {
185
+ className: "editorial-panel",
186
+ children: [
187
+ /* @__PURE__ */ jsxDEV("p", {
188
+ className: "editorial-kicker",
189
+ children: "Apply"
190
+ }, undefined, false, undefined, this),
191
+ /* @__PURE__ */ jsxDEV("p", {
192
+ className: "text-muted-foreground text-sm leading-7",
193
+ children: "Send links that prove how you think and how you ship. The best applications make it obvious what you would own in the first 90 days and why this problem is worth years of your attention."
194
+ }, undefined, false, undefined, this),
195
+ /* @__PURE__ */ jsxDEV("div", {
196
+ className: "mt-6 flex flex-col gap-3 sm:flex-row",
197
+ children: [
198
+ /* @__PURE__ */ jsxDEV(Link, {
199
+ href: mailtoLink,
200
+ className: "btn-primary",
201
+ children: "Email application"
202
+ }, undefined, false, undefined, this),
203
+ /* @__PURE__ */ jsxDEV(Link, {
204
+ href: "/contact",
205
+ className: "btn-ghost",
206
+ children: "Start with a conversation"
207
+ }, undefined, false, undefined, this)
208
+ ]
209
+ }, undefined, true, undefined, this)
210
+ ]
211
+ }, undefined, true, undefined, this)
548
212
  ]
549
- }, undefined, true, undefined, this),
550
- /* @__PURE__ */ jsxDEV(Muted, {
551
- className: "pt-4 text-sm",
552
- children: "CHAMAN VENTURES, SASU · RCS Paris · SIREN 989 498 902 · 229 rue Saint-Honoré, 75001 Paris"
553
- }, undefined, false, undefined, this)
554
- ]
555
- }, undefined, true, undefined, this)
556
- }, undefined, false, undefined, this);
557
- }
558
- function CofounderPage() {
559
- return /* @__PURE__ */ jsxDEV(VStack, {
560
- as: "main",
561
- gap: "none",
562
- children: [
563
- /* @__PURE__ */ jsxDEV(HeroSection, {}, undefined, false, undefined, this),
564
- /* @__PURE__ */ jsxDEV(WhatExistsSection, {}, undefined, false, undefined, this),
565
- /* @__PURE__ */ jsxDEV(RoleSection, {}, undefined, false, undefined, this),
566
- /* @__PURE__ */ jsxDEV(IdealCofounderSection, {}, undefined, false, undefined, this),
567
- /* @__PURE__ */ jsxDEV(WhatYouGetSection, {}, undefined, false, undefined, this),
568
- /* @__PURE__ */ jsxDEV(RedFlagsSection, {}, undefined, false, undefined, this),
569
- /* @__PURE__ */ jsxDEV(FAQSection, {}, undefined, false, undefined, this),
570
- /* @__PURE__ */ jsxDEV(FinalCtaSection, {}, undefined, false, undefined, this)
213
+ }, undefined, true, undefined, this)
214
+ }, undefined, false, undefined, this)
571
215
  ]
572
216
  }, undefined, true, undefined, this);
573
217
  }