@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
@@ -2,8 +2,8 @@
2
2
  var __require = import.meta.require;
3
3
 
4
4
  // src/libs/email/client.ts
5
- import { createClient, Temv1alpha1 } from "@scaleway/sdk";
6
5
  import { Logger } from "@contractspec/lib.logger";
6
+ import { createClient, Temv1alpha1 } from "@scaleway/sdk";
7
7
  var DEFAULT_FROM = {
8
8
  email: "noreply@transactional.contractspec.io",
9
9
  name: "ContractSpec"
@@ -182,9 +182,8 @@ Submitted via ContractSpec contact form
182
182
  };
183
183
 
184
184
  // src/components/marketing/studio-signup-section.tsx
185
+ import { ArrowRight, Sparkles } from "lucide-react";
185
186
  import Link from "next/link";
186
- import { ArrowRight, Rocket } from "lucide-react";
187
- import { Button } from "@contractspec/lib.design-system";
188
187
  import { jsxDEV } from "react/jsx-dev-runtime";
189
188
  "use client";
190
189
  var studioUrl = "https://www.contractspec.studio";
@@ -195,62 +194,47 @@ function StudioSignupSection({
195
194
  const isCompact = variant === "compact";
196
195
  return /* @__PURE__ */ jsxDEV("div", {
197
196
  id: "studio-signup",
198
- className: isCompact ? "space-y-4" : "card-subtle space-y-6 p-8",
197
+ className: `${isCompact ? "space-y-5 rounded-[28px] border border-border bg-card p-6" : "editorial-panel space-y-6"}`,
199
198
  children: [
200
199
  /* @__PURE__ */ jsxDEV("div", {
201
200
  className: "space-y-4",
202
201
  children: [
203
202
  /* @__PURE__ */ jsxDEV("div", {
204
- className: "inline-flex items-center gap-2 rounded-full border border-violet-500/20 bg-violet-500/10 px-3 py-1",
203
+ className: "badge",
205
204
  children: [
206
- /* @__PURE__ */ jsxDEV(Rocket, {
207
- size: 14,
208
- className: "text-violet-300"
205
+ /* @__PURE__ */ jsxDEV(Sparkles, {
206
+ size: 14
209
207
  }, undefined, false, undefined, this),
210
- /* @__PURE__ */ jsxDEV("span", {
211
- className: "text-sm font-medium text-violet-300",
212
- children: "ContractSpec Studio"
213
- }, undefined, false, undefined, this)
208
+ "Studio on top"
214
209
  ]
215
210
  }, undefined, true, undefined, this),
216
211
  /* @__PURE__ */ jsxDEV("h2", {
217
- className: isCompact ? "text-xl font-bold" : "text-2xl font-bold",
218
- children: "Try ContractSpec Studio"
219
- }, undefined, false, undefined, this),
220
- /* @__PURE__ */ jsxDEV("p", {
221
- className: "text-muted-foreground text-sm",
222
- children: "The AI-powered product decision engine that turns product signals into spec-first deliverables."
212
+ className: isCompact ? "font-serif text-3xl tracking-[-0.04em]" : "font-serif text-4xl tracking-[-0.04em]",
213
+ children: "See the operating layer built on top of the open system."
223
214
  }, undefined, false, undefined, this),
224
215
  /* @__PURE__ */ jsxDEV("p", {
225
- className: "text-muted-foreground text-xs",
226
- children: "Evidence -> Correlation -> Decision -> Change -> Export -> Check -> Notify -> Autopilot"
216
+ className: "text-muted-foreground text-sm leading-7",
217
+ children: "Studio packages the workflow for evidence, drafting, review, export, and follow-up. It should feel like the best product built on top of ContractSpec, not a different story."
227
218
  }, undefined, false, undefined, this)
228
219
  ]
229
220
  }, undefined, true, undefined, this),
230
221
  /* @__PURE__ */ jsxDEV("div", {
231
- className: "flex flex-col gap-3 sm:flex-row",
222
+ className: "grid gap-3 sm:grid-cols-2",
232
223
  children: [
233
- /* @__PURE__ */ jsxDEV(Button, {
234
- asChild: true,
235
- className: "w-full sm:w-auto",
236
- children: /* @__PURE__ */ jsxDEV(Link, {
237
- href: studioUrl,
238
- children: [
239
- "Get Started Free ",
240
- /* @__PURE__ */ jsxDEV(ArrowRight, {
241
- className: "ml-2 h-4 w-4"
242
- }, undefined, false, undefined, this)
243
- ]
244
- }, undefined, true, undefined, this)
245
- }, undefined, false, undefined, this),
246
- /* @__PURE__ */ jsxDEV(Button, {
247
- asChild: true,
248
- variant: "outline",
249
- className: "w-full sm:w-auto",
250
- children: /* @__PURE__ */ jsxDEV(Link, {
251
- href: studioDocsUrl,
252
- children: "Read Studio Docs"
253
- }, undefined, false, undefined, this)
224
+ /* @__PURE__ */ jsxDEV(Link, {
225
+ href: studioUrl,
226
+ className: "btn-primary",
227
+ children: [
228
+ "Explore Studio ",
229
+ /* @__PURE__ */ jsxDEV(ArrowRight, {
230
+ className: "ml-2 h-4 w-4"
231
+ }, undefined, false, undefined, this)
232
+ ]
233
+ }, undefined, true, undefined, this),
234
+ /* @__PURE__ */ jsxDEV(Link, {
235
+ href: studioDocsUrl,
236
+ className: "btn-ghost",
237
+ children: "Read Studio docs"
254
238
  }, undefined, false, undefined, this)
255
239
  ]
256
240
  }, undefined, true, undefined, this)
@@ -259,26 +243,19 @@ function StudioSignupSection({
259
243
  }
260
244
 
261
245
  // src/components/marketing/ContactClient.tsx
262
- import { useActionState } from "react";
263
- import {
264
- Calendar,
265
- MessageSquare,
266
- CheckCircle,
267
- AlertCircle
268
- } from "lucide-react";
269
246
  import {
270
247
  ActionForm,
271
- Button as Button2,
248
+ Button,
272
249
  Input,
273
250
  Textarea
274
251
  } from "@contractspec/lib.design-system";
275
- import { VStack, HStack } from "@contractspec/lib.ui-kit-web/ui/stack";
276
252
  import {
277
- H2,
278
- H1,
279
- Small,
280
- Muted
281
- } from "@contractspec/lib.ui-kit-web/ui/typography";
253
+ AlertCircle,
254
+ Calendar,
255
+ CheckCircle,
256
+ MessageSquare
257
+ } from "lucide-react";
258
+ import { useActionState } from "react";
282
259
  import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
283
260
  "use client";
284
261
  function ContactClient() {
@@ -287,183 +264,199 @@ function ContactClient() {
287
264
  if (result.success) {
288
265
  return {
289
266
  success: true,
290
- text: "Message sent successfully! We'll get back to you soon."
291
- };
292
- } else {
293
- return {
294
- success: false,
295
- text: result.text || "Failed to send message. Please try again."
267
+ text: "Message sent successfully. We'll get back to you soon."
296
268
  };
297
269
  }
270
+ return {
271
+ success: false,
272
+ text: result.text || "Failed to send message. Please try again."
273
+ };
298
274
  };
299
275
  const [contactResult, contactAction, contactPending] = useActionState(handleContactSubmit, null);
300
- return /* @__PURE__ */ jsxDEV2("section", {
301
- className: "section-padding hero-gradient w-full",
302
- children: /* @__PURE__ */ jsxDEV2(VStack, {
303
- className: "mx-auto max-w-4xl gap-16",
304
- children: [
305
- /* @__PURE__ */ jsxDEV2(VStack, {
306
- className: "gap-4 text-center",
276
+ return /* @__PURE__ */ jsxDEV2("main", {
277
+ children: [
278
+ /* @__PURE__ */ jsxDEV2("section", {
279
+ className: "section-padding hero-gradient border-border/70 border-b",
280
+ children: /* @__PURE__ */ jsxDEV2("div", {
281
+ className: "editorial-shell grid gap-8 lg:grid-cols-[1.05fr_0.95fr]",
307
282
  children: [
308
- /* @__PURE__ */ jsxDEV2(H1, {
309
- className: "text-5xl font-bold",
310
- children: "Get in touch"
311
- }, undefined, false, undefined, this),
312
- /* @__PURE__ */ jsxDEV2(Muted, {
313
- className: "text-lg",
314
- children: "Choose how you'd like to connect with us"
283
+ /* @__PURE__ */ jsxDEV2("div", {
284
+ className: "space-y-5",
285
+ children: [
286
+ /* @__PURE__ */ jsxDEV2("p", {
287
+ className: "editorial-kicker",
288
+ children: "Contact"
289
+ }, undefined, false, undefined, this),
290
+ /* @__PURE__ */ jsxDEV2("h1", {
291
+ className: "editorial-title max-w-4xl",
292
+ children: "Talk to the team behind the open system and the Studio product."
293
+ }, undefined, false, undefined, this),
294
+ /* @__PURE__ */ jsxDEV2("p", {
295
+ className: "editorial-subtitle",
296
+ children: "Reach out when you are evaluating the OSS foundation, deciding whether Studio fits your workflow, or want a direct conversation about adoption."
297
+ }, undefined, false, undefined, this)
298
+ ]
299
+ }, undefined, true, undefined, this),
300
+ /* @__PURE__ */ jsxDEV2(StudioSignupSection, {
301
+ variant: "compact"
315
302
  }, undefined, false, undefined, this)
316
303
  ]
317
- }, undefined, true, undefined, this),
318
- /* @__PURE__ */ jsxDEV2(StudioSignupSection, {}, undefined, false, undefined, this),
319
- /* @__PURE__ */ jsxDEV2(VStack, {
320
- className: "card-subtle gap-6 p-8",
321
- id: "call",
304
+ }, undefined, true, undefined, this)
305
+ }, undefined, false, undefined, this),
306
+ /* @__PURE__ */ jsxDEV2("section", {
307
+ className: "editorial-section",
308
+ children: /* @__PURE__ */ jsxDEV2("div", {
309
+ className: "editorial-shell grid gap-8 lg:grid-cols-2",
322
310
  children: [
323
- /* @__PURE__ */ jsxDEV2(HStack, {
324
- className: "items-center gap-3",
311
+ /* @__PURE__ */ jsxDEV2("div", {
312
+ className: "editorial-panel space-y-6",
313
+ id: "call",
325
314
  children: [
326
- /* @__PURE__ */ jsxDEV2(Calendar, {
327
- className: "text-blue-400",
328
- size: 24
329
- }, undefined, false, undefined, this),
330
- /* @__PURE__ */ jsxDEV2(VStack, {
331
- className: "items-start gap-1",
315
+ /* @__PURE__ */ jsxDEV2("div", {
316
+ className: "space-y-3",
332
317
  children: [
333
- /* @__PURE__ */ jsxDEV2(H2, {
334
- className: "text-2xl font-bold",
335
- children: "Book a 20-min call"
318
+ /* @__PURE__ */ jsxDEV2("div", {
319
+ className: "badge",
320
+ children: [
321
+ /* @__PURE__ */ jsxDEV2(Calendar, {
322
+ size: 14
323
+ }, undefined, false, undefined, this),
324
+ "Book a conversation"
325
+ ]
326
+ }, undefined, true, undefined, this),
327
+ /* @__PURE__ */ jsxDEV2("h2", {
328
+ className: "font-serif text-4xl tracking-[-0.04em]",
329
+ children: "Walk through your current system with us."
336
330
  }, undefined, false, undefined, this),
337
- /* @__PURE__ */ jsxDEV2(Muted, {
338
- className: "text-sm",
339
- children: "Schedule a walkthrough with our team to see ContractSpec in action"
331
+ /* @__PURE__ */ jsxDEV2("p", {
332
+ className: "text-muted-foreground text-sm leading-7",
333
+ children: "Use the call when you want a direct conversation about fit, adoption order, or the right entry point between OSS and Studio."
340
334
  }, undefined, false, undefined, this)
341
335
  ]
342
- }, undefined, true, undefined, this)
336
+ }, undefined, true, undefined, this),
337
+ /* @__PURE__ */ jsxDEV2("div", {
338
+ className: "overflow-hidden rounded-[28px] border border-border",
339
+ children: /* @__PURE__ */ jsxDEV2("object", {
340
+ data: "https://meet.reclaimai.com/e/f863cb29-caac-44b6-972b-1407dd9545a3",
341
+ width: "100%",
342
+ height: "700px",
343
+ style: { outline: "none" },
344
+ "aria-label": "Calendar booking widget"
345
+ }, undefined, false, undefined, this)
346
+ }, undefined, false, undefined, this)
343
347
  ]
344
348
  }, undefined, true, undefined, this),
345
349
  /* @__PURE__ */ jsxDEV2("div", {
346
- className: "border-border overflow-hidden rounded-lg border",
347
- children: /* @__PURE__ */ jsxDEV2("object", {
348
- data: "https://meet.reclaimai.com/e/f863cb29-caac-44b6-972b-1407dd9545a3",
349
- width: "100%",
350
- height: "700px",
351
- style: { outline: "none" },
352
- "aria-label": "Calendar booking widget"
353
- }, undefined, false, undefined, this)
354
- }, undefined, false, undefined, this)
355
- ]
356
- }, undefined, true, undefined, this),
357
- /* @__PURE__ */ jsxDEV2(VStack, {
358
- className: "card-subtle gap-6 p-8",
359
- id: "message",
360
- children: [
361
- /* @__PURE__ */ jsxDEV2(HStack, {
362
- className: "items-center gap-3",
350
+ className: "editorial-panel space-y-6",
351
+ id: "message",
363
352
  children: [
364
- /* @__PURE__ */ jsxDEV2(MessageSquare, {
365
- className: "text-emerald-400",
366
- size: 24
367
- }, undefined, false, undefined, this),
368
- /* @__PURE__ */ jsxDEV2(VStack, {
369
- className: "items-start gap-1",
353
+ /* @__PURE__ */ jsxDEV2("div", {
354
+ className: "space-y-3",
370
355
  children: [
371
- /* @__PURE__ */ jsxDEV2(H2, {
372
- className: "text-2xl font-bold",
373
- children: "Send us a message"
374
- }, undefined, false, undefined, this),
375
- /* @__PURE__ */ jsxDEV2(Muted, {
376
- className: "text-sm",
377
- children: "Have questions or feedback? We'd love to hear from you"
356
+ /* @__PURE__ */ jsxDEV2("div", {
357
+ className: "badge",
358
+ children: [
359
+ /* @__PURE__ */ jsxDEV2(MessageSquare, {
360
+ size: 14
361
+ }, undefined, false, undefined, this),
362
+ "Send a message"
363
+ ]
364
+ }, undefined, true, undefined, this),
365
+ /* @__PURE__ */ jsxDEV2("h2", {
366
+ className: "font-serif text-4xl tracking-[-0.04em]",
367
+ children: "Share context, questions, or a project we should understand."
378
368
  }, undefined, false, undefined, this)
379
369
  ]
380
- }, undefined, true, undefined, this)
381
- ]
382
- }, undefined, true, undefined, this),
383
- /* @__PURE__ */ jsxDEV2(ActionForm, {
384
- action: contactAction,
385
- children: /* @__PURE__ */ jsxDEV2(VStack, {
386
- className: "gap-4",
387
- children: [
388
- /* @__PURE__ */ jsxDEV2(VStack, {
389
- className: "gap-2",
390
- children: [
391
- /* @__PURE__ */ jsxDEV2(Small, {
392
- className: "text-sm font-medium",
393
- children: "Name"
394
- }, undefined, false, undefined, this),
395
- /* @__PURE__ */ jsxDEV2(Input, {
396
- id: "contact-name",
397
- name: "name",
398
- type: "text",
399
- placeholder: "Your name",
400
- disabled: contactPending || contactResult?.success,
401
- required: true
402
- }, undefined, false, undefined, this)
403
- ]
404
- }, undefined, true, undefined, this),
405
- /* @__PURE__ */ jsxDEV2(VStack, {
406
- className: "gap-2",
370
+ }, undefined, true, undefined, this),
371
+ /* @__PURE__ */ jsxDEV2(ActionForm, {
372
+ action: contactAction,
373
+ children: /* @__PURE__ */ jsxDEV2("div", {
374
+ className: "space-y-4",
407
375
  children: [
408
- /* @__PURE__ */ jsxDEV2(Small, {
409
- className: "text-sm font-medium",
410
- children: "Email"
411
- }, undefined, false, undefined, this),
412
- /* @__PURE__ */ jsxDEV2(Input, {
413
- id: "contact-email",
414
- name: "email",
415
- type: "email",
416
- keyboard: { kind: "email" },
417
- placeholder: "your@email.com",
376
+ /* @__PURE__ */ jsxDEV2("div", {
377
+ className: "space-y-2",
378
+ children: [
379
+ /* @__PURE__ */ jsxDEV2("label", {
380
+ htmlFor: "contact-name",
381
+ className: "font-medium text-sm",
382
+ children: "Name"
383
+ }, undefined, false, undefined, this),
384
+ /* @__PURE__ */ jsxDEV2(Input, {
385
+ id: "contact-name",
386
+ name: "name",
387
+ type: "text",
388
+ placeholder: "Your name",
389
+ disabled: contactPending || contactResult?.success,
390
+ required: true
391
+ }, undefined, false, undefined, this)
392
+ ]
393
+ }, undefined, true, undefined, this),
394
+ /* @__PURE__ */ jsxDEV2("div", {
395
+ className: "space-y-2",
396
+ children: [
397
+ /* @__PURE__ */ jsxDEV2("label", {
398
+ htmlFor: "contact-email",
399
+ className: "font-medium text-sm",
400
+ children: "Email"
401
+ }, undefined, false, undefined, this),
402
+ /* @__PURE__ */ jsxDEV2(Input, {
403
+ id: "contact-email",
404
+ name: "email",
405
+ type: "email",
406
+ keyboard: { kind: "email" },
407
+ placeholder: "you@company.com",
408
+ disabled: contactPending || contactResult?.success,
409
+ required: true
410
+ }, undefined, false, undefined, this)
411
+ ]
412
+ }, undefined, true, undefined, this),
413
+ /* @__PURE__ */ jsxDEV2("div", {
414
+ className: "space-y-2",
415
+ children: [
416
+ /* @__PURE__ */ jsxDEV2("label", {
417
+ htmlFor: "contact-message",
418
+ className: "font-medium text-sm",
419
+ children: "Message"
420
+ }, undefined, false, undefined, this),
421
+ /* @__PURE__ */ jsxDEV2(Textarea, {
422
+ id: "contact-message",
423
+ name: "message",
424
+ placeholder: "What are you trying to stabilize, and where is the current system breaking down?",
425
+ disabled: contactPending || contactResult?.success,
426
+ rows: 7,
427
+ required: true
428
+ }, undefined, false, undefined, this)
429
+ ]
430
+ }, undefined, true, undefined, this),
431
+ contactResult && !contactPending ? /* @__PURE__ */ jsxDEV2("div", {
432
+ className: `flex items-center gap-2 rounded-2xl border px-4 py-3 text-sm ${contactResult.success ? "border-green-600/20 bg-green-600/10 text-green-700" : "border-red-600/20 bg-red-600/10 text-red-700"}`,
433
+ children: [
434
+ contactResult.success ? /* @__PURE__ */ jsxDEV2(CheckCircle, {
435
+ size: 16
436
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV2(AlertCircle, {
437
+ size: 16
438
+ }, undefined, false, undefined, this),
439
+ /* @__PURE__ */ jsxDEV2("span", {
440
+ children: contactResult.text
441
+ }, undefined, false, undefined, this)
442
+ ]
443
+ }, undefined, true, undefined, this) : null,
444
+ /* @__PURE__ */ jsxDEV2(Button, {
445
+ type: "submit",
418
446
  disabled: contactPending || contactResult?.success,
419
- required: true
447
+ className: "w-full",
448
+ children: contactPending ? "Sending..." : "Send message"
420
449
  }, undefined, false, undefined, this)
421
450
  ]
422
- }, undefined, true, undefined, this),
423
- /* @__PURE__ */ jsxDEV2(VStack, {
424
- className: "gap-2",
425
- children: [
426
- /* @__PURE__ */ jsxDEV2(Small, {
427
- className: "text-sm font-medium",
428
- children: "Message"
429
- }, undefined, false, undefined, this),
430
- /* @__PURE__ */ jsxDEV2(Textarea, {
431
- id: "contact-message",
432
- name: "message",
433
- placeholder: "Tell us what's on your mind...",
434
- disabled: contactPending || contactResult?.success,
435
- rows: 6,
436
- required: true
437
- }, undefined, false, undefined, this)
438
- ]
439
- }, undefined, true, undefined, this),
440
- contactResult && !contactPending && /* @__PURE__ */ jsxDEV2(HStack, {
441
- className: `items-center gap-2 rounded-lg p-3 text-sm ${contactResult.success ? "border border-green-500/20 bg-green-500/10 text-green-400" : "border border-red-500/20 bg-red-500/10 text-red-400"}`,
442
- children: [
443
- contactResult.success ? /* @__PURE__ */ jsxDEV2(CheckCircle, {
444
- size: 16
445
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV2(AlertCircle, {
446
- size: 16
447
- }, undefined, false, undefined, this),
448
- /* @__PURE__ */ jsxDEV2(Small, {
449
- children: contactResult.text
450
- }, undefined, false, undefined, this)
451
- ]
452
- }, undefined, true, undefined, this),
453
- /* @__PURE__ */ jsxDEV2(Button2, {
454
- type: "submit",
455
- disabled: contactPending || contactResult?.success,
456
- className: "w-full",
457
- children: contactPending ? "Sending..." : "Send message"
458
- }, undefined, false, undefined, this)
459
- ]
460
- }, undefined, true, undefined, this)
461
- }, undefined, false, undefined, this)
451
+ }, undefined, true, undefined, this)
452
+ }, undefined, false, undefined, this)
453
+ ]
454
+ }, undefined, true, undefined, this)
462
455
  ]
463
456
  }, undefined, true, undefined, this)
464
- ]
465
- }, undefined, true, undefined, this)
466
- }, undefined, false, undefined, this);
457
+ }, undefined, false, undefined, this)
458
+ ]
459
+ }, undefined, true, undefined, this);
467
460
  }
468
461
  export {
469
462
  ContactClient
@@ -1,3 +1 @@
1
- import type { Metadata } from 'next';
2
- export declare const metadata: Metadata;
3
1
  export declare function ContributePage(): import("react/jsx-runtime").JSX.Element;