@contractspec/bundle.marketing 1.12.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 (216) hide show
  1. package/.turbo/turbo-build$colon$types.log +1 -0
  2. package/.turbo/turbo-build.log +175 -0
  3. package/.turbo/turbo-lint.log +3 -0
  4. package/AGENTS.md +36 -0
  5. package/CHANGELOG.md +416 -0
  6. package/README.md +57 -0
  7. package/dist/components/marketing/ChangelogPage.d.ts +21 -0
  8. package/dist/components/marketing/ChangelogPage.d.ts.map +1 -0
  9. package/dist/components/marketing/ChangelogPage.js +65 -0
  10. package/dist/components/marketing/ChangelogPage.js.map +1 -0
  11. package/dist/components/marketing/CofounderPage.d.ts +7 -0
  12. package/dist/components/marketing/CofounderPage.d.ts.map +1 -0
  13. package/dist/components/marketing/CofounderPage.js +468 -0
  14. package/dist/components/marketing/CofounderPage.js.map +1 -0
  15. package/dist/components/marketing/ContactClient.d.ts +7 -0
  16. package/dist/components/marketing/ContactClient.d.ts.map +1 -0
  17. package/dist/components/marketing/ContactClient.js +158 -0
  18. package/dist/components/marketing/ContactClient.js.map +1 -0
  19. package/dist/components/marketing/ContributePage.d.ts +9 -0
  20. package/dist/components/marketing/ContributePage.d.ts.map +1 -0
  21. package/dist/components/marketing/ContributePage.js +362 -0
  22. package/dist/components/marketing/ContributePage.js.map +1 -0
  23. package/dist/components/marketing/DesignPartnerPage.d.ts +9 -0
  24. package/dist/components/marketing/DesignPartnerPage.d.ts.map +1 -0
  25. package/dist/components/marketing/DesignPartnerPage.js +215 -0
  26. package/dist/components/marketing/DesignPartnerPage.js.map +1 -0
  27. package/dist/components/marketing/LandingPage.d.ts +7 -0
  28. package/dist/components/marketing/LandingPage.d.ts.map +1 -0
  29. package/dist/components/marketing/LandingPage.js +38 -0
  30. package/dist/components/marketing/LandingPage.js.map +1 -0
  31. package/dist/components/marketing/PricingClient.d.ts +7 -0
  32. package/dist/components/marketing/PricingClient.d.ts.map +1 -0
  33. package/dist/components/marketing/PricingClient.js +521 -0
  34. package/dist/components/marketing/PricingClient.js.map +1 -0
  35. package/dist/components/marketing/ProductClientPage.d.ts +7 -0
  36. package/dist/components/marketing/ProductClientPage.d.ts.map +1 -0
  37. package/dist/components/marketing/ProductClientPage.js +460 -0
  38. package/dist/components/marketing/ProductClientPage.js.map +1 -0
  39. package/dist/components/marketing/index.d.ts +11 -0
  40. package/dist/components/marketing/index.js +12 -0
  41. package/dist/components/marketing/pricing-thinking-modal.d.ts +16 -0
  42. package/dist/components/marketing/pricing-thinking-modal.d.ts.map +1 -0
  43. package/dist/components/marketing/pricing-thinking-modal.js +202 -0
  44. package/dist/components/marketing/pricing-thinking-modal.js.map +1 -0
  45. package/dist/components/marketing/sections/AudienceSection.d.ts +7 -0
  46. package/dist/components/marketing/sections/AudienceSection.d.ts.map +1 -0
  47. package/dist/components/marketing/sections/AudienceSection.js +68 -0
  48. package/dist/components/marketing/sections/AudienceSection.js.map +1 -0
  49. package/dist/components/marketing/sections/CorePositioningSection.d.ts +7 -0
  50. package/dist/components/marketing/sections/CorePositioningSection.d.ts.map +1 -0
  51. package/dist/components/marketing/sections/CorePositioningSection.js +59 -0
  52. package/dist/components/marketing/sections/CorePositioningSection.js.map +1 -0
  53. package/dist/components/marketing/sections/CtaSection.d.ts +7 -0
  54. package/dist/components/marketing/sections/CtaSection.d.ts.map +1 -0
  55. package/dist/components/marketing/sections/CtaSection.js +54 -0
  56. package/dist/components/marketing/sections/CtaSection.js.map +1 -0
  57. package/dist/components/marketing/sections/DevelopersSection.d.ts +7 -0
  58. package/dist/components/marketing/sections/DevelopersSection.d.ts.map +1 -0
  59. package/dist/components/marketing/sections/DevelopersSection.js +45 -0
  60. package/dist/components/marketing/sections/DevelopersSection.js.map +1 -0
  61. package/dist/components/marketing/sections/FearsSection.d.ts +7 -0
  62. package/dist/components/marketing/sections/FearsSection.d.ts.map +1 -0
  63. package/dist/components/marketing/sections/FearsSection.js +48 -0
  64. package/dist/components/marketing/sections/FearsSection.js.map +1 -0
  65. package/dist/components/marketing/sections/HeroMarketingSection.d.ts +7 -0
  66. package/dist/components/marketing/sections/HeroMarketingSection.d.ts.map +1 -0
  67. package/dist/components/marketing/sections/HeroMarketingSection.js +77 -0
  68. package/dist/components/marketing/sections/HeroMarketingSection.js.map +1 -0
  69. package/dist/components/marketing/sections/IconGridSection.d.ts +45 -0
  70. package/dist/components/marketing/sections/IconGridSection.d.ts.map +1 -0
  71. package/dist/components/marketing/sections/IconGridSection.js +44 -0
  72. package/dist/components/marketing/sections/IconGridSection.js.map +1 -0
  73. package/dist/components/marketing/sections/OutputsSection.d.ts +7 -0
  74. package/dist/components/marketing/sections/OutputsSection.d.ts.map +1 -0
  75. package/dist/components/marketing/sections/OutputsSection.js +59 -0
  76. package/dist/components/marketing/sections/OutputsSection.js.map +1 -0
  77. package/dist/components/marketing/sections/ProblemSection.d.ts +7 -0
  78. package/dist/components/marketing/sections/ProblemSection.d.ts.map +1 -0
  79. package/dist/components/marketing/sections/ProblemSection.js +46 -0
  80. package/dist/components/marketing/sections/ProblemSection.js.map +1 -0
  81. package/dist/components/marketing/sections/SolutionSection.d.ts +7 -0
  82. package/dist/components/marketing/sections/SolutionSection.d.ts.map +1 -0
  83. package/dist/components/marketing/sections/SolutionSection.js +46 -0
  84. package/dist/components/marketing/sections/SolutionSection.js.map +1 -0
  85. package/dist/components/marketing/sections/StepsSection.d.ts +7 -0
  86. package/dist/components/marketing/sections/StepsSection.d.ts.map +1 -0
  87. package/dist/components/marketing/sections/StepsSection.js +52 -0
  88. package/dist/components/marketing/sections/StepsSection.js.map +1 -0
  89. package/dist/components/marketing/waitlist-section.d.ts +15 -0
  90. package/dist/components/marketing/waitlist-section.d.ts.map +1 -0
  91. package/dist/components/marketing/waitlist-section.js +578 -0
  92. package/dist/components/marketing/waitlist-section.js.map +1 -0
  93. package/dist/components/templates/TemplatesClientPage.d.ts +7 -0
  94. package/dist/components/templates/TemplatesClientPage.d.ts.map +1 -0
  95. package/dist/components/templates/TemplatesClientPage.js +625 -0
  96. package/dist/components/templates/TemplatesClientPage.js.map +1 -0
  97. package/dist/components/templates/TemplatesPage.d.ts +7 -0
  98. package/dist/components/templates/TemplatesPage.d.ts.map +1 -0
  99. package/dist/components/templates/TemplatesPage.js +125 -0
  100. package/dist/components/templates/TemplatesPage.js.map +1 -0
  101. package/dist/components/templates/TemplatesPreviewModal.d.ts +15 -0
  102. package/dist/components/templates/TemplatesPreviewModal.d.ts.map +1 -0
  103. package/dist/components/templates/TemplatesPreviewModal.js +137 -0
  104. package/dist/components/templates/TemplatesPreviewModal.js.map +1 -0
  105. package/dist/components/templates/index.d.ts +4 -0
  106. package/dist/components/templates/index.js +5 -0
  107. package/dist/index.d.ts +29 -0
  108. package/dist/index.js +28 -0
  109. package/dist/libs/email/client.d.ts +15 -0
  110. package/dist/libs/email/client.d.ts.map +1 -0
  111. package/dist/libs/email/client.js +113 -0
  112. package/dist/libs/email/client.js.map +1 -0
  113. package/dist/libs/email/contact.d.ts +7 -0
  114. package/dist/libs/email/contact.d.ts.map +1 -0
  115. package/dist/libs/email/contact.js +71 -0
  116. package/dist/libs/email/contact.js.map +1 -0
  117. package/dist/libs/email/newsletter.d.ts +7 -0
  118. package/dist/libs/email/newsletter.d.ts.map +1 -0
  119. package/dist/libs/email/newsletter.js +95 -0
  120. package/dist/libs/email/newsletter.js.map +1 -0
  121. package/dist/libs/email/types.d.ts +53 -0
  122. package/dist/libs/email/types.d.ts.map +1 -0
  123. package/dist/libs/email/types.js +1 -0
  124. package/dist/libs/email/utils.d.ts +6 -0
  125. package/dist/libs/email/utils.d.ts.map +1 -0
  126. package/dist/libs/email/utils.js +7 -0
  127. package/dist/libs/email/utils.js.map +1 -0
  128. package/dist/libs/email/waitlist-application.d.ts +7 -0
  129. package/dist/libs/email/waitlist-application.d.ts.map +1 -0
  130. package/dist/libs/email/waitlist-application.js +170 -0
  131. package/dist/libs/email/waitlist-application.js.map +1 -0
  132. package/dist/libs/email/waitlist.d.ts +7 -0
  133. package/dist/libs/email/waitlist.d.ts.map +1 -0
  134. package/dist/libs/email/waitlist.js +105 -0
  135. package/dist/libs/email/waitlist.js.map +1 -0
  136. package/dist/libs/pricing-examples.d.ts +22 -0
  137. package/dist/libs/pricing-examples.d.ts.map +1 -0
  138. package/dist/libs/pricing-examples.js +21 -0
  139. package/dist/libs/pricing-examples.js.map +1 -0
  140. package/dist/registry/engine.d.ts +17 -0
  141. package/dist/registry/engine.d.ts.map +1 -0
  142. package/dist/registry/engine.js +24 -0
  143. package/dist/registry/engine.js.map +1 -0
  144. package/dist/registry/factory.d.ts +64 -0
  145. package/dist/registry/factory.d.ts.map +1 -0
  146. package/dist/registry/factory.js +61 -0
  147. package/dist/registry/factory.js.map +1 -0
  148. package/dist/registry/index.d.ts +8 -0
  149. package/dist/registry/index.js +8 -0
  150. package/dist/registry/registry-docs.d.ts +15 -0
  151. package/dist/registry/registry-docs.d.ts.map +1 -0
  152. package/dist/registry/registry-docs.js +305 -0
  153. package/dist/registry/registry-docs.js.map +1 -0
  154. package/dist/registry/registry-landing.d.ts +19 -0
  155. package/dist/registry/registry-landing.d.ts.map +1 -0
  156. package/dist/registry/registry-landing.js +95 -0
  157. package/dist/registry/registry-landing.js.map +1 -0
  158. package/dist/registry/registry.d.ts +30 -0
  159. package/dist/registry/registry.d.ts.map +1 -0
  160. package/dist/registry/registry.js +61 -0
  161. package/dist/registry/registry.js.map +1 -0
  162. package/dist/registry/types.d.ts +19 -0
  163. package/dist/registry/types.d.ts.map +1 -0
  164. package/dist/registry/types.js +0 -0
  165. package/dist/registry/utils.d.ts +31 -0
  166. package/dist/registry/utils.d.ts.map +1 -0
  167. package/dist/registry/utils.js +54 -0
  168. package/dist/registry/utils.js.map +1 -0
  169. package/package.json +151 -0
  170. package/src/components/marketing/ChangelogPage.tsx +110 -0
  171. package/src/components/marketing/CofounderPage.tsx +409 -0
  172. package/src/components/marketing/ContactClient.tsx +174 -0
  173. package/src/components/marketing/ContributePage.tsx +319 -0
  174. package/src/components/marketing/DesignPartnerPage.tsx +181 -0
  175. package/src/components/marketing/LandingPage.tsx +30 -0
  176. package/src/components/marketing/PricingClient.tsx +446 -0
  177. package/src/components/marketing/ProductClientPage.tsx +391 -0
  178. package/src/components/marketing/index.ts +10 -0
  179. package/src/components/marketing/pricing-thinking-modal.tsx +224 -0
  180. package/src/components/marketing/sections/AudienceSection.tsx +66 -0
  181. package/src/components/marketing/sections/CorePositioningSection.tsx +44 -0
  182. package/src/components/marketing/sections/CtaSection.tsx +57 -0
  183. package/src/components/marketing/sections/DevelopersSection.tsx +38 -0
  184. package/src/components/marketing/sections/FearsSection.tsx +45 -0
  185. package/src/components/marketing/sections/HeroMarketingSection.tsx +73 -0
  186. package/src/components/marketing/sections/IconGridSection.tsx +91 -0
  187. package/src/components/marketing/sections/OutputsSection.tsx +59 -0
  188. package/src/components/marketing/sections/ProblemSection.tsx +47 -0
  189. package/src/components/marketing/sections/SolutionSection.tsx +47 -0
  190. package/src/components/marketing/sections/StepsSection.tsx +55 -0
  191. package/src/components/marketing/waitlist-section.tsx +606 -0
  192. package/src/components/templates/TemplatesClientPage.tsx +711 -0
  193. package/src/components/templates/TemplatesPage.tsx +129 -0
  194. package/src/components/templates/TemplatesPreviewModal.tsx +260 -0
  195. package/src/components/templates/index.ts +3 -0
  196. package/src/index.ts +15 -0
  197. package/src/libs/email/client.test.ts +107 -0
  198. package/src/libs/email/client.ts +146 -0
  199. package/src/libs/email/contact.ts +80 -0
  200. package/src/libs/email/newsletter.ts +108 -0
  201. package/src/libs/email/types.ts +59 -0
  202. package/src/libs/email/utils.ts +8 -0
  203. package/src/libs/email/waitlist-application.ts +192 -0
  204. package/src/libs/email/waitlist.ts +118 -0
  205. package/src/libs/pricing-examples.ts +19 -0
  206. package/src/registry/engine.ts +38 -0
  207. package/src/registry/factory.ts +110 -0
  208. package/src/registry/index.ts +7 -0
  209. package/src/registry/registry-docs.ts +843 -0
  210. package/src/registry/registry-landing.ts +118 -0
  211. package/src/registry/registry.ts +85 -0
  212. package/src/registry/types.ts +17 -0
  213. package/src/registry/utils.ts +99 -0
  214. package/tsconfig.json +13 -0
  215. package/tsconfig.tsbuildinfo +1 -0
  216. package/tsdown.config.js +10 -0
@@ -0,0 +1,319 @@
1
+ import type { Metadata } from 'next';
2
+
3
+ export const metadata: Metadata = {
4
+ title: 'Contribute to ContractSpec',
5
+ description:
6
+ 'Join the ContractSpec open-source community. Report issues, improve docs, build integrations, and help shape the future of spec-first development.',
7
+ openGraph: {
8
+ title: 'Contribute to ContractSpec',
9
+ description:
10
+ 'Get started contributing in under 3 minutes. Docs, examples, integrations, and more.',
11
+ url: 'https://contractspec.io/contribute',
12
+ },
13
+ alternates: {
14
+ canonical: 'https://contractspec.io/contribute',
15
+ },
16
+ };
17
+
18
+ export function ContributePage() {
19
+ return (
20
+ <main className="flex grow flex-col items-center justify-center">
21
+ <section className="section-padding">
22
+ <div className="prose prose-invert mx-auto max-w-2xl">
23
+ <h1 className="mb-8 text-4xl font-bold">
24
+ Contribute to ContractSpec
25
+ </h1>
26
+
27
+ {/* Quick Start Box */}
28
+ <div className="not-prose border-border bg-muted/30 mb-12 rounded-lg border p-6">
29
+ <h2 className="text-foreground mb-4 text-xl font-bold">
30
+ ⚡ Quick Start — 3 Minutes to Your First Contribution
31
+ </h2>
32
+ <ol className="text-muted-foreground list-inside list-decimal space-y-2">
33
+ <li>
34
+ Read the{' '}
35
+ <a
36
+ href="https://github.com/contractspec/contractspec/blob/main/CONTRIBUTING.md"
37
+ className="text-primary hover:underline"
38
+ target="_blank"
39
+ rel="noopener noreferrer"
40
+ >
41
+ CONTRIBUTING guide
42
+ </a>
43
+ </li>
44
+ <li>
45
+ Pick a{' '}
46
+ <a
47
+ href="https://github.com/contractspec/contractspec/labels/good%20first%20issue"
48
+ className="text-primary hover:underline"
49
+ target="_blank"
50
+ rel="noopener noreferrer"
51
+ >
52
+ good first issue
53
+ </a>{' '}
54
+ or{' '}
55
+ <a
56
+ href="https://github.com/contractspec/contractspec/labels/help%20wanted"
57
+ className="text-primary hover:underline"
58
+ target="_blank"
59
+ rel="noopener noreferrer"
60
+ >
61
+ help wanted
62
+ </a>{' '}
63
+ label
64
+ </li>
65
+ <li>Open a draft PR early — we'll guide you from there</li>
66
+ </ol>
67
+ </div>
68
+
69
+ {/* Why Open Source */}
70
+ <section className="mb-10 space-y-4">
71
+ <h2 className="text-foreground text-2xl font-bold">
72
+ Why Open Source?
73
+ </h2>
74
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
75
+ <li>
76
+ <strong>Transparency:</strong> You can see exactly how your code
77
+ is compiled and deployed
78
+ </li>
79
+ <li>
80
+ <strong>Trust:</strong> No black boxes — audit the compiler that
81
+ shapes your AI-generated code
82
+ </li>
83
+ <li>
84
+ <strong>Faster ecosystem:</strong> Community contributions
85
+ accelerate adoption and surface real-world edge cases
86
+ </li>
87
+ <li>
88
+ <strong>Community review:</strong> More eyes catch more bugs,
89
+ and better patterns emerge
90
+ </li>
91
+ <li>
92
+ <strong>No lock-in:</strong> You own your code. The spec is
93
+ portable.
94
+ </li>
95
+ </ul>
96
+ </section>
97
+
98
+ {/* Where to Contribute */}
99
+ <section className="mb-10 space-y-4">
100
+ <h2 className="text-foreground text-2xl font-bold">
101
+ Where to Contribute
102
+ </h2>
103
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
104
+ <li>
105
+ <a
106
+ href="https://github.com/contractspec"
107
+ className="text-primary hover:underline"
108
+ target="_blank"
109
+ rel="noopener noreferrer"
110
+ >
111
+ GitHub Organization
112
+ </a>{' '}
113
+ — All repos live here
114
+ </li>
115
+ <li>
116
+ <a
117
+ href="https://github.com/contractspec/contractspec"
118
+ className="text-primary hover:underline"
119
+ target="_blank"
120
+ rel="noopener noreferrer"
121
+ >
122
+ Main Repository
123
+ </a>{' '}
124
+ — Core compiler and specs
125
+ </li>
126
+ <li>
127
+ <a
128
+ href="https://github.com/contractspec/contractspec/discussions"
129
+ className="text-primary hover:underline"
130
+ target="_blank"
131
+ rel="noopener noreferrer"
132
+ >
133
+ Discussions
134
+ </a>{' '}
135
+ — Questions, ideas, and RFCs
136
+ </li>
137
+ </ul>
138
+ </section>
139
+
140
+ {/* Contribution Types */}
141
+ <section className="mb-10 space-y-4">
142
+ <h2 className="text-foreground text-2xl font-bold">
143
+ Ways to Contribute
144
+ </h2>
145
+ <div className="text-muted-foreground space-y-3">
146
+ <p>
147
+ <strong className="text-foreground">📄 Documentation:</strong>{' '}
148
+ Fix typos, improve explanations, add missing guides
149
+ </p>
150
+ <p>
151
+ <strong className="text-foreground">
152
+ 📦 Examples & Templates:
153
+ </strong>{' '}
154
+ Build real-world specs for common use cases
155
+ </p>
156
+ <p>
157
+ <strong className="text-foreground">
158
+ 🔌 Integrations & Adapters:
159
+ </strong>{' '}
160
+ Connect ContractSpec to frameworks, databases, and tools
161
+ </p>
162
+ <p>
163
+ <strong className="text-foreground">🐛 Bug Reports:</strong>{' '}
164
+ File issues with clear reproduction steps — minimal cases help
165
+ the most
166
+ </p>
167
+ <p>
168
+ <strong className="text-foreground">
169
+ 🔒 Security Reports:
170
+ </strong>{' '}
171
+ Found a vulnerability? See{' '}
172
+ <a href="#security" className="text-primary hover:underline">
173
+ Security
174
+ </a>{' '}
175
+ below
176
+ </p>
177
+ </div>
178
+ </section>
179
+
180
+ {/* Quality Bar */}
181
+ <section className="mb-10 space-y-4">
182
+ <h2 className="text-foreground text-2xl font-bold">Quality Bar</h2>
183
+ <p className="text-muted-foreground">
184
+ We keep the bar high so the codebase stays maintainable. Every PR
185
+ should:
186
+ </p>
187
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
188
+ <li>
189
+ <strong>Include tests</strong> — Unit tests for logic,
190
+ integration tests for adapters
191
+ </li>
192
+ <li>
193
+ <strong>Be fully typed</strong> — No <code>any</code>. Strict
194
+ TypeScript only.
195
+ </li>
196
+ <li>
197
+ <strong>Stay small</strong> — One concern per PR. Easier to
198
+ review, faster to merge.
199
+ </li>
200
+ <li>
201
+ <strong>Use clear commit messages</strong> — Describe _what_ and
202
+ _why_, not just _how_
203
+ </li>
204
+ </ul>
205
+ <div className="bg-muted/20 mt-4 rounded-md p-4">
206
+ <h3 className="text-foreground mb-2 font-semibold">
207
+ Spec-First Mindset
208
+ </h3>
209
+ <p className="text-muted-foreground text-sm">
210
+ ContractSpec exists to enforce contracts between humans, AI, and
211
+ code. When contributing, think spec-first: define the behavior
212
+ before the implementation. A well-defined spec makes changes
213
+ safe to regenerate and easy to validate.
214
+ </p>
215
+ </div>
216
+ </section>
217
+
218
+ {/* Governance */}
219
+ <section className="mb-10 space-y-4">
220
+ <h2 className="text-foreground text-2xl font-bold">
221
+ Governance & Decision Making
222
+ </h2>
223
+ <p className="text-muted-foreground">
224
+ ContractSpec uses a{' '}
225
+ <strong className="text-foreground">
226
+ founder-led maintainer model
227
+ </strong>
228
+ :
229
+ </p>
230
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
231
+ <li>
232
+ The founder has final say on significant decisions — for now
233
+ </li>
234
+ <li>All reasoning is shared publicly in issues or PRs</li>
235
+ <li>
236
+ Community input shapes direction; we don't merge in silence
237
+ </li>
238
+ <li>
239
+ This model may evolve as the project matures and trusted
240
+ maintainers emerge
241
+ </li>
242
+ </ul>
243
+ </section>
244
+
245
+ {/* Security */}
246
+ <section className="mb-10 space-y-4" id="security">
247
+ <h2 className="text-foreground text-2xl font-bold">Security</h2>
248
+ <p className="text-muted-foreground">
249
+ If you discover a security vulnerability, please{' '}
250
+ <strong className="text-foreground">do not</strong> open a public
251
+ issue.
252
+ </p>
253
+ <p className="text-muted-foreground">
254
+ Instead, email us at{' '}
255
+ <a
256
+ href="mailto:security@contractspec.io"
257
+ className="text-primary hover:underline"
258
+ >
259
+ security@contractspec.io
260
+ </a>{' '}
261
+ with:
262
+ </p>
263
+ <ul className="text-muted-foreground list-inside list-disc space-y-2">
264
+ <li>A clear description of the vulnerability</li>
265
+ <li>Steps to reproduce</li>
266
+ <li>Potential impact</li>
267
+ </ul>
268
+ <p className="text-muted-foreground">
269
+ We'll acknowledge within 48 hours and work with you to coordinate
270
+ disclosure.
271
+ </p>
272
+ </section>
273
+
274
+ {/* Code of Conduct */}
275
+ <section className="mb-10 space-y-4">
276
+ <h2 className="text-foreground text-2xl font-bold">
277
+ Code of Conduct
278
+ </h2>
279
+ <p className="text-muted-foreground">
280
+ We expect all contributors to follow our{' '}
281
+ <a
282
+ href="https://github.com/contractspec/contractspec/blob/main/CODE_OF_CONDUCT.md"
283
+ className="text-primary hover:underline"
284
+ target="_blank"
285
+ rel="noopener noreferrer"
286
+ >
287
+ Code of Conduct
288
+ </a>
289
+ . Be respectful, constructive, and assume good intent.
290
+ </p>
291
+ </section>
292
+
293
+ {/* Go Deeper */}
294
+ <section className="border-border mt-12 space-y-4 border-t pt-8">
295
+ <h2 className="text-foreground text-2xl font-bold">
296
+ Want to Go Deeper?
297
+ </h2>
298
+ <p className="text-muted-foreground">
299
+ If you're considering a long-term commitment to ContractSpec —
300
+ reviewing PRs regularly, shaping roadmap, mentoring new
301
+ contributors — we'd love to talk.
302
+ </p>
303
+ <p className="text-muted-foreground">
304
+ This isn't a job offer. It's an invitation to help build something
305
+ meaningful together. Reach out at{' '}
306
+ <a
307
+ href="mailto:maintainers@contractspec.io"
308
+ className="text-primary hover:underline"
309
+ >
310
+ maintainers@contractspec.io
311
+ </a>{' '}
312
+ and tell us what you'd bring to the table.
313
+ </p>
314
+ </section>
315
+ </div>
316
+ </section>
317
+ </main>
318
+ );
319
+ }
@@ -0,0 +1,181 @@
1
+ import type { Metadata } from 'next';
2
+ import Link from 'next/link';
3
+ import { Button } from '@contractspec/lib.design-system';
4
+ import {
5
+ ArrowRight,
6
+ BookOpen,
7
+ MessageSquare,
8
+ Rocket,
9
+ Users,
10
+ } from 'lucide-react';
11
+
12
+ export const metadata: Metadata = {
13
+ title: 'Design Partner Getting Started | ContractSpec',
14
+ description: 'Onboarding and resources for ContractSpec Design Partners.',
15
+ };
16
+
17
+ export function DesignPartnerPage() {
18
+ return (
19
+ <main className="flex grow flex-col">
20
+ {/* Hero Section */}
21
+ <section className="section-padding relative overflow-hidden">
22
+ <div className="container mx-auto max-w-5xl">
23
+ <div className="mb-12 max-w-3xl">
24
+ <h1 className="mb-6 text-4xl font-bold tracking-tight sm:text-5xl">
25
+ Welcome, Design Partner
26
+ </h1>
27
+ <p className="text-muted-foreground text-xl leading-relaxed">
28
+ We're thrilled to have you on board. As a Design Partner, you play
29
+ a critical role in shaping the future of ContractSpec. This hub
30
+ contains everything you need to get started, collaborate with us,
31
+ and build your first specifications.
32
+ </p>
33
+ </div>
34
+ </div>
35
+ </section>
36
+
37
+ {/* Steps Section */}
38
+ <section className="section-padding bg-white/5">
39
+ <div className="container mx-auto max-w-5xl">
40
+ <h2 className="mb-12 text-3xl font-bold">Getting Started</h2>
41
+
42
+ <div className="grid gap-12 md:grid-cols-2">
43
+ {/* Step 1: Access */}
44
+ <div className="space-y-4">
45
+ <div className="border-primary/20 bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg border">
46
+ <Rocket className="text-primary h-6 w-6" />
47
+ </div>
48
+ <h3 className="text-xl font-semibold">1. Access the Studio</h3>
49
+ <p className="text-muted-foreground">
50
+ Your account has been enabled with Design Partner privileges.
51
+ Log in to the Studio to start exploring the latest features
52
+ before they're public.
53
+ </p>
54
+ <div className="pt-2">
55
+ <Button asChild variant="outline">
56
+ <Link href="https://www.contractspec.studio">
57
+ Launch Studio <ArrowRight className="ml-2 h-4 w-4" />
58
+ </Link>
59
+ </Button>
60
+ </div>
61
+ </div>
62
+
63
+ {/* Step 2: Communication */}
64
+ <div className="space-y-4">
65
+ <div className="border-primary/20 bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg border">
66
+ <MessageSquare className="text-primary h-6 w-6" />
67
+ </div>
68
+ <h3 className="text-xl font-semibold">
69
+ 2. Join the Conversation
70
+ </h3>
71
+ <p className="text-muted-foreground">
72
+ We've set up a dedicated private channel for real-time feedback
73
+ and support. Connect with our engineering team and other
74
+ partners.
75
+ </p>
76
+ <div className="pt-2">
77
+ <Button asChild variant="outline">
78
+ <Link href="mailto:partners@contractspec.io">
79
+ Contact Partner Success{' '}
80
+ <ArrowRight className="ml-2 h-4 w-4" />
81
+ </Link>
82
+ </Button>
83
+ </div>
84
+ </div>
85
+
86
+ {/* Step 3: Documentation */}
87
+ <div className="space-y-4">
88
+ <div className="border-primary/20 bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg border">
89
+ <BookOpen className="text-primary h-6 w-6" />
90
+ </div>
91
+ <h3 className="text-xl font-semibold">
92
+ 3. Explore Documentation
93
+ </h3>
94
+ <p className="text-muted-foreground">
95
+ Dive deep into the core concepts, API references, and
96
+ architecture guides. Our docs are evolving, and your feedback
97
+ helps us improve them.
98
+ </p>
99
+ <div className="pt-2">
100
+ <Button asChild variant="outline">
101
+ <Link href="/docs">
102
+ Read the Docs <ArrowRight className="ml-2 h-4 w-4" />
103
+ </Link>
104
+ </Button>
105
+ </div>
106
+ </div>
107
+
108
+ {/* Step 4: Sync */}
109
+ <div className="space-y-4">
110
+ <div className="border-primary/20 bg-primary/10 flex h-12 w-12 items-center justify-center rounded-lg border">
111
+ <Users className="text-primary h-6 w-6" />
112
+ </div>
113
+ <h3 className="text-xl font-semibold">4. Partner Syncs</h3>
114
+ <p className="text-muted-foreground">
115
+ We schedule bi-weekly syncs to review your progress, blockers,
116
+ and feature requests. Check your calendar invite for the next
117
+ session.
118
+ </p>
119
+ </div>
120
+ </div>
121
+ </div>
122
+ </section>
123
+
124
+ {/* Expectations / FAQ */}
125
+ <section className="section-padding">
126
+ <div className="container mx-auto max-w-3xl">
127
+ <h2 className="mb-8 text-3xl font-bold">What to Expect</h2>
128
+
129
+ <div className="space-y-8">
130
+ <div>
131
+ <h3 className="mb-2 text-xl font-semibold">
132
+ Fast Iteration Cycles
133
+ </h3>
134
+ <p className="text-muted-foreground">
135
+ We ship updates frequently. You might see UI changes or new
136
+ capabilities appear weekly. We'll do our best to communicate
137
+ breaking changes in advance.
138
+ </p>
139
+ </div>
140
+
141
+ <div>
142
+ <h3 className="mb-2 text-xl font-semibold">
143
+ Direct Engineering Access
144
+ </h3>
145
+ <p className="text-muted-foreground">
146
+ You're not talking to support agents; you're talking to the
147
+ builders. Your feedback goes directly into the issue tracker.
148
+ </p>
149
+ </div>
150
+
151
+ <div>
152
+ <h3 className="mb-2 text-xl font-semibold">Input on Roadmap</h3>
153
+ <p className="text-muted-foreground">
154
+ Design Partners influence priority. If a feature enables a
155
+ critical use case for you, let us know—we often reshuffle our
156
+ sprint to accommodate partner needs.
157
+ </p>
158
+ </div>
159
+ </div>
160
+ </div>
161
+ </section>
162
+
163
+ {/* Footer CTA */}
164
+ <section className="section-padding border-t border-white/10">
165
+ <div className="container mx-auto max-w-3xl text-center">
166
+ <h2 className="mb-4 text-3xl font-bold">
167
+ Have a question right now?
168
+ </h2>
169
+ <p className="text-muted-foreground mb-8">
170
+ Don't hesitate to reach out. We are here to help you succeed.
171
+ </p>
172
+ <Button asChild size="lg">
173
+ <Link href="mailto:partners@contractspec.io">
174
+ Email the Founders
175
+ </Link>
176
+ </Button>
177
+ </div>
178
+ </section>
179
+ </main>
180
+ );
181
+ }
@@ -0,0 +1,30 @@
1
+ 'use client';
2
+
3
+ import { VStack } from '@contractspec/lib.ui-kit-web/ui/stack';
4
+ import { HeroMarketingSection } from './sections/HeroMarketingSection';
5
+ import { ProblemSection } from './sections/ProblemSection';
6
+ import { SolutionSection } from './sections/SolutionSection';
7
+ import { FearsSection } from './sections/FearsSection';
8
+ import { CorePositioningSection } from './sections/CorePositioningSection';
9
+ import { AudienceSection } from './sections/AudienceSection';
10
+ import { OutputsSection } from './sections/OutputsSection';
11
+ import { StepsSection } from './sections/StepsSection';
12
+ import { DevelopersSection } from './sections/DevelopersSection';
13
+ import { CtaSection } from './sections/CtaSection';
14
+
15
+ export function LandingPage() {
16
+ return (
17
+ <VStack as="main" gap="none">
18
+ <HeroMarketingSection />
19
+ <ProblemSection />
20
+ <SolutionSection />
21
+ <FearsSection />
22
+ <CorePositioningSection />
23
+ <AudienceSection />
24
+ <OutputsSection />
25
+ <StepsSection />
26
+ <DevelopersSection />
27
+ <CtaSection />
28
+ </VStack>
29
+ );
30
+ }