@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.
- package/.turbo/turbo-build.log +84 -84
- package/AGENTS.md +29 -21
- package/CHANGELOG.md +27 -0
- package/README.md +36 -49
- package/dist/browser/components/marketing/ChangelogPage.js +8 -8
- package/dist/browser/components/marketing/CofounderPage.js +167 -523
- package/dist/browser/components/marketing/ContactClient.js +200 -207
- package/dist/browser/components/marketing/ContributePage.js +211 -463
- package/dist/browser/components/marketing/DesignPartnerPage.js +165 -218
- package/dist/browser/components/marketing/LandingPage.js +464 -568
- package/dist/browser/components/marketing/PricingClient.js +213 -839
- package/dist/browser/components/marketing/ProductClientPage.js +265 -463
- package/dist/browser/components/marketing/index.js +2007 -3338
- package/dist/browser/components/marketing/pricing-thinking-modal.js +12 -12
- package/dist/browser/components/marketing/sections/AudienceSection.js +2 -2
- package/dist/browser/components/marketing/sections/CorePositioningSection.js +2 -2
- package/dist/browser/components/marketing/sections/CtaSection.js +3 -3
- package/dist/browser/components/marketing/sections/FearsSection.js +3 -3
- package/dist/browser/components/marketing/sections/HeroMarketingSection.js +6 -6
- package/dist/browser/components/marketing/sections/IconGridSection.js +2 -2
- package/dist/browser/components/marketing/sections/OutputsSection.js +2 -2
- package/dist/browser/components/marketing/sections/ProblemSection.js +2 -2
- package/dist/browser/components/marketing/sections/SolutionSection.js +2 -2
- package/dist/browser/components/marketing/sections/StepsSection.js +4 -4
- package/dist/browser/components/marketing/studio-signup-section.js +25 -41
- package/dist/browser/components/templates/TemplatesClientPage.js +2324 -3578
- package/dist/browser/components/templates/TemplatesPage.js +1 -1
- package/dist/browser/components/templates/TemplatesPreviewModal.js +3 -3
- package/dist/browser/components/templates/index.js +2361 -3615
- package/dist/browser/index.js +2363 -3617
- package/dist/browser/libs/email/client.js +1 -1
- package/dist/browser/libs/email/contact.js +1 -1
- package/dist/browser/libs/email/newsletter.js +1 -1
- package/dist/browser/libs/email/waitlist-application.js +1 -1
- package/dist/browser/libs/email/waitlist.js +1 -1
- package/dist/browser/registry/engine.js +2003 -3334
- package/dist/browser/registry/index.js +2003 -3334
- package/dist/browser/registry/registry-docs.js +2 -2
- package/dist/browser/registry/registry-landing.js +2007 -3338
- package/dist/browser/registry/registry.js +2003 -3334
- package/dist/browser/registry/utils.js +2003 -3334
- package/dist/components/marketing/ChangelogPage.js +8 -8
- package/dist/components/marketing/CofounderPage.js +167 -523
- package/dist/components/marketing/ContactClient.js +200 -207
- package/dist/components/marketing/ContributePage.d.ts +0 -2
- package/dist/components/marketing/ContributePage.js +211 -463
- package/dist/components/marketing/DesignPartnerPage.js +165 -218
- package/dist/components/marketing/LandingPage.js +464 -568
- package/dist/components/marketing/PricingClient.js +213 -839
- package/dist/components/marketing/ProductClientPage.js +265 -463
- package/dist/components/marketing/index.d.ts +5 -5
- package/dist/components/marketing/index.js +2007 -3338
- package/dist/components/marketing/pricing-thinking-modal.js +12 -12
- package/dist/components/marketing/sections/AudienceSection.js +2 -2
- package/dist/components/marketing/sections/CorePositioningSection.js +2 -2
- package/dist/components/marketing/sections/CtaSection.js +3 -3
- package/dist/components/marketing/sections/FearsSection.js +3 -3
- package/dist/components/marketing/sections/HeroMarketingSection.js +6 -6
- package/dist/components/marketing/sections/IconGridSection.d.ts +3 -3
- package/dist/components/marketing/sections/IconGridSection.js +2 -2
- package/dist/components/marketing/sections/OutputsSection.js +2 -2
- package/dist/components/marketing/sections/ProblemSection.js +2 -2
- package/dist/components/marketing/sections/SolutionSection.js +2 -2
- package/dist/components/marketing/sections/StepsSection.js +4 -4
- package/dist/components/marketing/studio-signup-section.js +25 -41
- package/dist/components/templates/TemplatesClientPage.js +2324 -3578
- package/dist/components/templates/TemplatesPage.js +1 -1
- package/dist/components/templates/TemplatesPreviewModal.js +3 -3
- package/dist/components/templates/index.js +2361 -3615
- package/dist/index.js +2363 -3617
- package/dist/libs/email/client.js +1 -1
- package/dist/libs/email/contact.js +1 -1
- package/dist/libs/email/newsletter.js +1 -1
- package/dist/libs/email/waitlist-application.js +1 -1
- package/dist/libs/email/waitlist.js +1 -1
- package/dist/node/components/marketing/ChangelogPage.js +8 -8
- package/dist/node/components/marketing/CofounderPage.js +167 -523
- package/dist/node/components/marketing/ContactClient.js +200 -207
- package/dist/node/components/marketing/ContributePage.js +211 -463
- package/dist/node/components/marketing/DesignPartnerPage.js +165 -218
- package/dist/node/components/marketing/LandingPage.js +464 -568
- package/dist/node/components/marketing/PricingClient.js +213 -839
- package/dist/node/components/marketing/ProductClientPage.js +265 -463
- package/dist/node/components/marketing/index.js +2007 -3338
- package/dist/node/components/marketing/pricing-thinking-modal.js +12 -12
- package/dist/node/components/marketing/sections/AudienceSection.js +2 -2
- package/dist/node/components/marketing/sections/CorePositioningSection.js +2 -2
- package/dist/node/components/marketing/sections/CtaSection.js +3 -3
- package/dist/node/components/marketing/sections/FearsSection.js +3 -3
- package/dist/node/components/marketing/sections/HeroMarketingSection.js +6 -6
- package/dist/node/components/marketing/sections/IconGridSection.js +2 -2
- package/dist/node/components/marketing/sections/OutputsSection.js +2 -2
- package/dist/node/components/marketing/sections/ProblemSection.js +2 -2
- package/dist/node/components/marketing/sections/SolutionSection.js +2 -2
- package/dist/node/components/marketing/sections/StepsSection.js +4 -4
- package/dist/node/components/marketing/studio-signup-section.js +25 -41
- package/dist/node/components/templates/TemplatesClientPage.js +2324 -3578
- package/dist/node/components/templates/TemplatesPage.js +1 -1
- package/dist/node/components/templates/TemplatesPreviewModal.js +3 -3
- package/dist/node/components/templates/index.js +2361 -3615
- package/dist/node/index.js +2363 -3617
- package/dist/node/libs/email/client.js +1 -1
- package/dist/node/libs/email/contact.js +1 -1
- package/dist/node/libs/email/newsletter.js +1 -1
- package/dist/node/libs/email/waitlist-application.js +1 -1
- package/dist/node/libs/email/waitlist.js +1 -1
- package/dist/node/registry/engine.js +2003 -3334
- package/dist/node/registry/index.js +2003 -3334
- package/dist/node/registry/registry-docs.js +2 -2
- package/dist/node/registry/registry-landing.js +2007 -3338
- package/dist/node/registry/registry.js +2003 -3334
- package/dist/node/registry/utils.js +2003 -3334
- package/dist/registry/engine.js +2003 -3334
- package/dist/registry/index.js +2003 -3334
- package/dist/registry/registry-docs.js +2 -2
- package/dist/registry/registry-landing.js +2007 -3338
- package/dist/registry/registry.js +2003 -3334
- package/dist/registry/utils.js +2003 -3334
- package/package.json +29 -29
- package/src/bundles/MarketingBundle.ts +273 -273
- package/src/components/marketing/ChangelogPage.tsx +72 -100
- package/src/components/marketing/CofounderPage.tsx +120 -384
- package/src/components/marketing/ContactClient.tsx +164 -154
- package/src/components/marketing/ContributePage.tsx +139 -313
- package/src/components/marketing/DesignPartnerPage.tsx +133 -171
- package/src/components/marketing/LandingPage.tsx +353 -25
- package/src/components/marketing/PricingClient.tsx +192 -437
- package/src/components/marketing/ProductClientPage.tsx +255 -377
- package/src/components/marketing/index.ts +5 -5
- package/src/components/marketing/pricing-thinking-modal.tsx +197 -197
- package/src/components/marketing/sections/AudienceSection.tsx +55 -56
- package/src/components/marketing/sections/CorePositioningSection.tsx +37 -37
- package/src/components/marketing/sections/CtaSection.tsx +49 -50
- package/src/components/marketing/sections/DevelopersSection.tsx +26 -27
- package/src/components/marketing/sections/FearsSection.tsx +36 -37
- package/src/components/marketing/sections/HeroMarketingSection.tsx +59 -59
- package/src/components/marketing/sections/IconGridSection.tsx +71 -71
- package/src/components/marketing/sections/OutputsSection.tsx +51 -52
- package/src/components/marketing/sections/ProblemSection.tsx +39 -40
- package/src/components/marketing/sections/SolutionSection.tsx +39 -40
- package/src/components/marketing/sections/StepsSection.tsx +47 -48
- package/src/components/marketing/studio-signup-section.tsx +39 -41
- package/src/components/templates/TemplatesClientPage.tsx +727 -685
- package/src/components/templates/TemplatesPage.tsx +110 -110
- package/src/components/templates/TemplatesPreviewModal.tsx +197 -198
- package/src/index.ts +4 -4
- package/src/libs/email/client.test.ts +81 -81
- package/src/libs/email/client.ts +111 -111
- package/src/libs/email/contact.ts +35 -35
- package/src/libs/email/newsletter.ts +46 -46
- package/src/libs/email/types.ts +29 -29
- package/src/libs/email/utils.ts +5 -5
- package/src/libs/email/waitlist-application.ts +72 -72
- package/src/libs/email/waitlist.ts +46 -46
- package/src/libs/pricing-examples.ts +12 -12
- package/src/registry/engine.ts +16 -16
- package/src/registry/factory.ts +57 -57
- package/src/registry/registry-docs.ts +656 -666
- package/src/registry/registry-landing.ts +94 -95
- package/src/registry/registry.ts +36 -37
- package/src/registry/types.ts +2 -2
- package/src/registry/utils.ts +56 -56
- package/tsconfig.json +11 -11
- package/tsdown.config.js +5 -5
|
@@ -1,319 +1,145 @@
|
|
|
1
|
-
import
|
|
1
|
+
import Link from 'next/link';
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
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
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
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
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
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
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
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
|
}
|