@contractspec/bundle.marketing 3.7.6 → 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 (163) hide show
  1. package/.turbo/turbo-build.log +84 -84
  2. package/AGENTS.md +29 -21
  3. package/README.md +36 -49
  4. package/dist/browser/components/marketing/ChangelogPage.js +8 -8
  5. package/dist/browser/components/marketing/CofounderPage.js +167 -523
  6. package/dist/browser/components/marketing/ContactClient.js +200 -207
  7. package/dist/browser/components/marketing/ContributePage.js +211 -463
  8. package/dist/browser/components/marketing/DesignPartnerPage.js +165 -218
  9. package/dist/browser/components/marketing/LandingPage.js +464 -568
  10. package/dist/browser/components/marketing/PricingClient.js +213 -839
  11. package/dist/browser/components/marketing/ProductClientPage.js +265 -463
  12. package/dist/browser/components/marketing/index.js +2007 -3338
  13. package/dist/browser/components/marketing/pricing-thinking-modal.js +12 -12
  14. package/dist/browser/components/marketing/sections/AudienceSection.js +2 -2
  15. package/dist/browser/components/marketing/sections/CorePositioningSection.js +2 -2
  16. package/dist/browser/components/marketing/sections/CtaSection.js +3 -3
  17. package/dist/browser/components/marketing/sections/FearsSection.js +3 -3
  18. package/dist/browser/components/marketing/sections/HeroMarketingSection.js +6 -6
  19. package/dist/browser/components/marketing/sections/IconGridSection.js +2 -2
  20. package/dist/browser/components/marketing/sections/OutputsSection.js +2 -2
  21. package/dist/browser/components/marketing/sections/ProblemSection.js +2 -2
  22. package/dist/browser/components/marketing/sections/SolutionSection.js +2 -2
  23. package/dist/browser/components/marketing/sections/StepsSection.js +4 -4
  24. package/dist/browser/components/marketing/studio-signup-section.js +25 -41
  25. package/dist/browser/components/templates/TemplatesClientPage.js +2324 -3578
  26. package/dist/browser/components/templates/TemplatesPage.js +1 -1
  27. package/dist/browser/components/templates/TemplatesPreviewModal.js +3 -3
  28. package/dist/browser/components/templates/index.js +2361 -3615
  29. package/dist/browser/index.js +2363 -3617
  30. package/dist/browser/libs/email/client.js +1 -1
  31. package/dist/browser/libs/email/contact.js +1 -1
  32. package/dist/browser/libs/email/newsletter.js +1 -1
  33. package/dist/browser/libs/email/waitlist-application.js +1 -1
  34. package/dist/browser/libs/email/waitlist.js +1 -1
  35. package/dist/browser/registry/engine.js +2003 -3334
  36. package/dist/browser/registry/index.js +2003 -3334
  37. package/dist/browser/registry/registry-docs.js +2 -2
  38. package/dist/browser/registry/registry-landing.js +2007 -3338
  39. package/dist/browser/registry/registry.js +2003 -3334
  40. package/dist/browser/registry/utils.js +2003 -3334
  41. package/dist/components/marketing/ChangelogPage.js +8 -8
  42. package/dist/components/marketing/CofounderPage.js +167 -523
  43. package/dist/components/marketing/ContactClient.js +200 -207
  44. package/dist/components/marketing/ContributePage.d.ts +0 -2
  45. package/dist/components/marketing/ContributePage.js +211 -463
  46. package/dist/components/marketing/DesignPartnerPage.js +165 -218
  47. package/dist/components/marketing/LandingPage.js +464 -568
  48. package/dist/components/marketing/PricingClient.js +213 -839
  49. package/dist/components/marketing/ProductClientPage.js +265 -463
  50. package/dist/components/marketing/index.d.ts +5 -5
  51. package/dist/components/marketing/index.js +2007 -3338
  52. package/dist/components/marketing/pricing-thinking-modal.js +12 -12
  53. package/dist/components/marketing/sections/AudienceSection.js +2 -2
  54. package/dist/components/marketing/sections/CorePositioningSection.js +2 -2
  55. package/dist/components/marketing/sections/CtaSection.js +3 -3
  56. package/dist/components/marketing/sections/FearsSection.js +3 -3
  57. package/dist/components/marketing/sections/HeroMarketingSection.js +6 -6
  58. package/dist/components/marketing/sections/IconGridSection.d.ts +3 -3
  59. package/dist/components/marketing/sections/IconGridSection.js +2 -2
  60. package/dist/components/marketing/sections/OutputsSection.js +2 -2
  61. package/dist/components/marketing/sections/ProblemSection.js +2 -2
  62. package/dist/components/marketing/sections/SolutionSection.js +2 -2
  63. package/dist/components/marketing/sections/StepsSection.js +4 -4
  64. package/dist/components/marketing/studio-signup-section.js +25 -41
  65. package/dist/components/templates/TemplatesClientPage.js +2324 -3578
  66. package/dist/components/templates/TemplatesPage.js +1 -1
  67. package/dist/components/templates/TemplatesPreviewModal.js +3 -3
  68. package/dist/components/templates/index.js +2361 -3615
  69. package/dist/index.js +2363 -3617
  70. package/dist/libs/email/client.js +1 -1
  71. package/dist/libs/email/contact.js +1 -1
  72. package/dist/libs/email/newsletter.js +1 -1
  73. package/dist/libs/email/waitlist-application.js +1 -1
  74. package/dist/libs/email/waitlist.js +1 -1
  75. package/dist/node/components/marketing/ChangelogPage.js +8 -8
  76. package/dist/node/components/marketing/CofounderPage.js +167 -523
  77. package/dist/node/components/marketing/ContactClient.js +200 -207
  78. package/dist/node/components/marketing/ContributePage.js +211 -463
  79. package/dist/node/components/marketing/DesignPartnerPage.js +165 -218
  80. package/dist/node/components/marketing/LandingPage.js +464 -568
  81. package/dist/node/components/marketing/PricingClient.js +213 -839
  82. package/dist/node/components/marketing/ProductClientPage.js +265 -463
  83. package/dist/node/components/marketing/index.js +2007 -3338
  84. package/dist/node/components/marketing/pricing-thinking-modal.js +12 -12
  85. package/dist/node/components/marketing/sections/AudienceSection.js +2 -2
  86. package/dist/node/components/marketing/sections/CorePositioningSection.js +2 -2
  87. package/dist/node/components/marketing/sections/CtaSection.js +3 -3
  88. package/dist/node/components/marketing/sections/FearsSection.js +3 -3
  89. package/dist/node/components/marketing/sections/HeroMarketingSection.js +6 -6
  90. package/dist/node/components/marketing/sections/IconGridSection.js +2 -2
  91. package/dist/node/components/marketing/sections/OutputsSection.js +2 -2
  92. package/dist/node/components/marketing/sections/ProblemSection.js +2 -2
  93. package/dist/node/components/marketing/sections/SolutionSection.js +2 -2
  94. package/dist/node/components/marketing/sections/StepsSection.js +4 -4
  95. package/dist/node/components/marketing/studio-signup-section.js +25 -41
  96. package/dist/node/components/templates/TemplatesClientPage.js +2324 -3578
  97. package/dist/node/components/templates/TemplatesPage.js +1 -1
  98. package/dist/node/components/templates/TemplatesPreviewModal.js +3 -3
  99. package/dist/node/components/templates/index.js +2361 -3615
  100. package/dist/node/index.js +2363 -3617
  101. package/dist/node/libs/email/client.js +1 -1
  102. package/dist/node/libs/email/contact.js +1 -1
  103. package/dist/node/libs/email/newsletter.js +1 -1
  104. package/dist/node/libs/email/waitlist-application.js +1 -1
  105. package/dist/node/libs/email/waitlist.js +1 -1
  106. package/dist/node/registry/engine.js +2003 -3334
  107. package/dist/node/registry/index.js +2003 -3334
  108. package/dist/node/registry/registry-docs.js +2 -2
  109. package/dist/node/registry/registry-landing.js +2007 -3338
  110. package/dist/node/registry/registry.js +2003 -3334
  111. package/dist/node/registry/utils.js +2003 -3334
  112. package/dist/registry/engine.js +2003 -3334
  113. package/dist/registry/index.js +2003 -3334
  114. package/dist/registry/registry-docs.js +2 -2
  115. package/dist/registry/registry-landing.js +2007 -3338
  116. package/dist/registry/registry.js +2003 -3334
  117. package/dist/registry/utils.js +2003 -3334
  118. package/package.json +22 -22
  119. package/src/bundles/MarketingBundle.ts +273 -273
  120. package/src/components/marketing/ChangelogPage.tsx +72 -100
  121. package/src/components/marketing/CofounderPage.tsx +120 -384
  122. package/src/components/marketing/ContactClient.tsx +164 -154
  123. package/src/components/marketing/ContributePage.tsx +139 -313
  124. package/src/components/marketing/DesignPartnerPage.tsx +133 -171
  125. package/src/components/marketing/LandingPage.tsx +353 -25
  126. package/src/components/marketing/PricingClient.tsx +192 -437
  127. package/src/components/marketing/ProductClientPage.tsx +255 -377
  128. package/src/components/marketing/index.ts +5 -5
  129. package/src/components/marketing/pricing-thinking-modal.tsx +197 -197
  130. package/src/components/marketing/sections/AudienceSection.tsx +55 -56
  131. package/src/components/marketing/sections/CorePositioningSection.tsx +37 -37
  132. package/src/components/marketing/sections/CtaSection.tsx +49 -50
  133. package/src/components/marketing/sections/DevelopersSection.tsx +26 -27
  134. package/src/components/marketing/sections/FearsSection.tsx +36 -37
  135. package/src/components/marketing/sections/HeroMarketingSection.tsx +59 -59
  136. package/src/components/marketing/sections/IconGridSection.tsx +71 -71
  137. package/src/components/marketing/sections/OutputsSection.tsx +51 -52
  138. package/src/components/marketing/sections/ProblemSection.tsx +39 -40
  139. package/src/components/marketing/sections/SolutionSection.tsx +39 -40
  140. package/src/components/marketing/sections/StepsSection.tsx +47 -48
  141. package/src/components/marketing/studio-signup-section.tsx +39 -41
  142. package/src/components/templates/TemplatesClientPage.tsx +727 -685
  143. package/src/components/templates/TemplatesPage.tsx +110 -110
  144. package/src/components/templates/TemplatesPreviewModal.tsx +197 -198
  145. package/src/index.ts +4 -4
  146. package/src/libs/email/client.test.ts +81 -81
  147. package/src/libs/email/client.ts +111 -111
  148. package/src/libs/email/contact.ts +35 -35
  149. package/src/libs/email/newsletter.ts +46 -46
  150. package/src/libs/email/types.ts +29 -29
  151. package/src/libs/email/utils.ts +5 -5
  152. package/src/libs/email/waitlist-application.ts +72 -72
  153. package/src/libs/email/waitlist.ts +46 -46
  154. package/src/libs/pricing-examples.ts +12 -12
  155. package/src/registry/engine.ts +16 -16
  156. package/src/registry/factory.ts +57 -57
  157. package/src/registry/registry-docs.ts +656 -666
  158. package/src/registry/registry-landing.ts +94 -95
  159. package/src/registry/registry.ts +36 -37
  160. package/src/registry/types.ts +2 -2
  161. package/src/registry/utils.ts +56 -56
  162. package/tsconfig.json +11 -11
  163. package/tsdown.config.js +5 -5
@@ -1,319 +1,145 @@
1
- import type { Metadata } from 'next';
1
+ import Link from 'next/link';
2
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
- };
3
+ const contributionTracks = [
4
+ {
5
+ title: 'Contracts and runtime behavior',
6
+ copy: 'Improve the core system surfaces that keep APIs, UI, data, and tools aligned.',
7
+ },
8
+ {
9
+ title: 'Examples and templates',
10
+ copy: 'Show how the open system behaves in realistic verticals and team workflows.',
11
+ },
12
+ {
13
+ title: 'Docs and agent-facing guidance',
14
+ copy: 'Tighten the human and machine-readable guides that explain how the stack actually works.',
15
+ },
16
+ {
17
+ title: 'Integrations and ecosystem',
18
+ copy: 'Expand the bridges that make the system usable in more real-world environments.',
19
+ },
20
+ ];
17
21
 
18
22
  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>
23
+ return (
24
+ <main>
25
+ <section className="section-padding hero-gradient border-border/70 border-b">
26
+ <div className="editorial-shell grid gap-8 lg:grid-cols-[1.05fr_0.95fr]">
27
+ <div className="space-y-5">
28
+ <p className="editorial-kicker">Open source</p>
29
+ <h1 className="editorial-title max-w-4xl">
30
+ Contribute to the open system, not a black box.
31
+ </h1>
32
+ <p className="editorial-subtitle">
33
+ ContractSpec should stay legible, standards-first, and useful in
34
+ real workflows. Contributions matter most when they sharpen that
35
+ clarity instead of adding abstraction for its own sake.
36
+ </p>
37
+ </div>
38
+ <div className="editorial-panel space-y-5">
39
+ <p className="editorial-kicker">Fastest path</p>
40
+ <ol className="space-y-4 text-muted-foreground text-sm leading-7">
41
+ <li>Read the contribution guide and pick a tractable scope.</li>
42
+ <li>Open a draft PR early so maintainers can steer the work.</li>
43
+ <li>
44
+ Ship one clear improvement with tests or validation evidence.
45
+ </li>
46
+ </ol>
47
+ <div className="flex flex-col gap-3 sm:flex-row">
48
+ <Link
49
+ href="https://github.com/lssm-tech/contractspec/blob/main/CONTRIBUTING.md"
50
+ className="btn-primary"
51
+ target="_blank"
52
+ rel="noopener noreferrer"
53
+ >
54
+ Read CONTRIBUTING
55
+ </Link>
56
+ <Link
57
+ href="https://github.com/lssm-tech/contractspec/issues"
58
+ className="btn-ghost"
59
+ target="_blank"
60
+ rel="noopener noreferrer"
61
+ >
62
+ Open issues
63
+ </Link>
64
+ </div>
65
+ </div>
66
+ </div>
67
+ </section>
26
68
 
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>
69
+ <section className="editorial-section">
70
+ <div className="editorial-shell space-y-8">
71
+ <div className="max-w-3xl space-y-4">
72
+ <p className="editorial-kicker">Where contributions matter most</p>
73
+ <h2 className="font-serif text-4xl tracking-[-0.04em] md:text-5xl">
74
+ Work on the parts that make the system clearer and safer.
75
+ </h2>
76
+ </div>
77
+ <div className="editorial-grid">
78
+ {contributionTracks.map((track) => (
79
+ <div key={track.title} className="editorial-panel">
80
+ <h3 className="font-serif text-2xl tracking-[-0.03em]">
81
+ {track.title}
82
+ </h3>
83
+ <p className="mt-3 text-muted-foreground text-sm leading-7">
84
+ {track.copy}
85
+ </p>
86
+ </div>
87
+ ))}
88
+ </div>
89
+ </div>
90
+ </section>
68
91
 
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
- );
92
+ <section className="editorial-section bg-striped">
93
+ <div className="editorial-shell grid gap-8 lg:grid-cols-2">
94
+ <div className="editorial-panel">
95
+ <p className="editorial-kicker">Quality bar</p>
96
+ <h2 className="font-serif text-4xl tracking-[-0.04em]">
97
+ The contribution should make the repo easier to trust.
98
+ </h2>
99
+ <ul className="editorial-list mt-6">
100
+ <li>
101
+ <span className="editorial-list-marker" />
102
+ <span>Use strict TypeScript and keep changes explicit.</span>
103
+ </li>
104
+ <li>
105
+ <span className="editorial-list-marker" />
106
+ <span>
107
+ Include tests or other concrete validation where behavior
108
+ changes.
109
+ </span>
110
+ </li>
111
+ <li>
112
+ <span className="editorial-list-marker" />
113
+ <span>Prefer one coherent concern per PR.</span>
114
+ </li>
115
+ <li>
116
+ <span className="editorial-list-marker" />
117
+ <span>
118
+ Document the public or agent-facing impact when it exists.
119
+ </span>
120
+ </li>
121
+ </ul>
122
+ </div>
123
+ <div className="editorial-panel">
124
+ <p className="editorial-kicker">Governance and security</p>
125
+ <h2 className="font-serif text-4xl tracking-[-0.04em]">
126
+ Clarity first, private disclosure when the issue is sensitive.
127
+ </h2>
128
+ <p className="mt-5 text-muted-foreground text-sm leading-7">
129
+ Architecture and roadmap decisions stay founder-led for now, but
130
+ the reasoning should stay inspectable in issues, PRs, and docs. If
131
+ you find a security issue, do not open a public ticket. Use{' '}
132
+ <Link
133
+ href="mailto:security@contractspec.io"
134
+ className="underline"
135
+ >
136
+ security@contractspec.io
137
+ </Link>{' '}
138
+ instead.
139
+ </p>
140
+ </div>
141
+ </div>
142
+ </section>
143
+ </main>
144
+ );
319
145
  }