@contractspec/bundle.marketing 3.7.6 → 3.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (164) hide show
  1. package/.turbo/turbo-build.log +87 -87
  2. package/AGENTS.md +29 -21
  3. package/CHANGELOG.md +59 -0
  4. package/README.md +36 -49
  5. package/dist/browser/components/marketing/ChangelogPage.js +8 -8
  6. package/dist/browser/components/marketing/CofounderPage.js +167 -523
  7. package/dist/browser/components/marketing/ContactClient.js +200 -207
  8. package/dist/browser/components/marketing/ContributePage.js +211 -463
  9. package/dist/browser/components/marketing/DesignPartnerPage.js +165 -218
  10. package/dist/browser/components/marketing/LandingPage.js +464 -568
  11. package/dist/browser/components/marketing/PricingClient.js +213 -839
  12. package/dist/browser/components/marketing/ProductClientPage.js +265 -463
  13. package/dist/browser/components/marketing/index.js +2007 -3338
  14. package/dist/browser/components/marketing/pricing-thinking-modal.js +12 -12
  15. package/dist/browser/components/marketing/sections/AudienceSection.js +2 -2
  16. package/dist/browser/components/marketing/sections/CorePositioningSection.js +2 -2
  17. package/dist/browser/components/marketing/sections/CtaSection.js +3 -3
  18. package/dist/browser/components/marketing/sections/FearsSection.js +3 -3
  19. package/dist/browser/components/marketing/sections/HeroMarketingSection.js +6 -6
  20. package/dist/browser/components/marketing/sections/IconGridSection.js +2 -2
  21. package/dist/browser/components/marketing/sections/OutputsSection.js +2 -2
  22. package/dist/browser/components/marketing/sections/ProblemSection.js +2 -2
  23. package/dist/browser/components/marketing/sections/SolutionSection.js +2 -2
  24. package/dist/browser/components/marketing/sections/StepsSection.js +4 -4
  25. package/dist/browser/components/marketing/studio-signup-section.js +25 -41
  26. package/dist/browser/components/templates/TemplatesClientPage.js +2374 -3571
  27. package/dist/browser/components/templates/TemplatesPage.js +1 -1
  28. package/dist/browser/components/templates/TemplatesPreviewModal.js +27 -3
  29. package/dist/browser/components/templates/index.js +2412 -3609
  30. package/dist/browser/index.js +2415 -3612
  31. package/dist/browser/libs/email/client.js +1 -1
  32. package/dist/browser/libs/email/contact.js +1 -1
  33. package/dist/browser/libs/email/newsletter.js +1 -1
  34. package/dist/browser/libs/email/waitlist-application.js +1 -1
  35. package/dist/browser/libs/email/waitlist.js +1 -1
  36. package/dist/browser/registry/engine.js +2003 -3334
  37. package/dist/browser/registry/index.js +2003 -3334
  38. package/dist/browser/registry/registry-docs.js +2 -2
  39. package/dist/browser/registry/registry-landing.js +2007 -3338
  40. package/dist/browser/registry/registry.js +2003 -3334
  41. package/dist/browser/registry/utils.js +2003 -3334
  42. package/dist/components/marketing/ChangelogPage.js +8 -8
  43. package/dist/components/marketing/CofounderPage.js +167 -523
  44. package/dist/components/marketing/ContactClient.js +200 -207
  45. package/dist/components/marketing/ContributePage.d.ts +0 -2
  46. package/dist/components/marketing/ContributePage.js +211 -463
  47. package/dist/components/marketing/DesignPartnerPage.js +165 -218
  48. package/dist/components/marketing/LandingPage.js +464 -568
  49. package/dist/components/marketing/PricingClient.js +213 -839
  50. package/dist/components/marketing/ProductClientPage.js +265 -463
  51. package/dist/components/marketing/index.d.ts +5 -5
  52. package/dist/components/marketing/index.js +2007 -3338
  53. package/dist/components/marketing/pricing-thinking-modal.js +12 -12
  54. package/dist/components/marketing/sections/AudienceSection.js +2 -2
  55. package/dist/components/marketing/sections/CorePositioningSection.js +2 -2
  56. package/dist/components/marketing/sections/CtaSection.js +3 -3
  57. package/dist/components/marketing/sections/FearsSection.js +3 -3
  58. package/dist/components/marketing/sections/HeroMarketingSection.js +6 -6
  59. package/dist/components/marketing/sections/IconGridSection.d.ts +3 -3
  60. package/dist/components/marketing/sections/IconGridSection.js +2 -2
  61. package/dist/components/marketing/sections/OutputsSection.js +2 -2
  62. package/dist/components/marketing/sections/ProblemSection.js +2 -2
  63. package/dist/components/marketing/sections/SolutionSection.js +2 -2
  64. package/dist/components/marketing/sections/StepsSection.js +4 -4
  65. package/dist/components/marketing/studio-signup-section.js +25 -41
  66. package/dist/components/templates/TemplatesClientPage.js +2374 -3571
  67. package/dist/components/templates/TemplatesPage.js +1 -1
  68. package/dist/components/templates/TemplatesPreviewModal.js +27 -3
  69. package/dist/components/templates/index.js +2412 -3609
  70. package/dist/index.js +2415 -3612
  71. package/dist/libs/email/client.js +1 -1
  72. package/dist/libs/email/contact.js +1 -1
  73. package/dist/libs/email/newsletter.js +1 -1
  74. package/dist/libs/email/waitlist-application.js +1 -1
  75. package/dist/libs/email/waitlist.js +1 -1
  76. package/dist/node/components/marketing/ChangelogPage.js +8 -8
  77. package/dist/node/components/marketing/CofounderPage.js +167 -523
  78. package/dist/node/components/marketing/ContactClient.js +200 -207
  79. package/dist/node/components/marketing/ContributePage.js +211 -463
  80. package/dist/node/components/marketing/DesignPartnerPage.js +165 -218
  81. package/dist/node/components/marketing/LandingPage.js +464 -568
  82. package/dist/node/components/marketing/PricingClient.js +213 -839
  83. package/dist/node/components/marketing/ProductClientPage.js +265 -463
  84. package/dist/node/components/marketing/index.js +2007 -3338
  85. package/dist/node/components/marketing/pricing-thinking-modal.js +12 -12
  86. package/dist/node/components/marketing/sections/AudienceSection.js +2 -2
  87. package/dist/node/components/marketing/sections/CorePositioningSection.js +2 -2
  88. package/dist/node/components/marketing/sections/CtaSection.js +3 -3
  89. package/dist/node/components/marketing/sections/FearsSection.js +3 -3
  90. package/dist/node/components/marketing/sections/HeroMarketingSection.js +6 -6
  91. package/dist/node/components/marketing/sections/IconGridSection.js +2 -2
  92. package/dist/node/components/marketing/sections/OutputsSection.js +2 -2
  93. package/dist/node/components/marketing/sections/ProblemSection.js +2 -2
  94. package/dist/node/components/marketing/sections/SolutionSection.js +2 -2
  95. package/dist/node/components/marketing/sections/StepsSection.js +4 -4
  96. package/dist/node/components/marketing/studio-signup-section.js +25 -41
  97. package/dist/node/components/templates/TemplatesClientPage.js +2374 -3571
  98. package/dist/node/components/templates/TemplatesPage.js +1 -1
  99. package/dist/node/components/templates/TemplatesPreviewModal.js +27 -3
  100. package/dist/node/components/templates/index.js +2412 -3609
  101. package/dist/node/index.js +2415 -3612
  102. package/dist/node/libs/email/client.js +1 -1
  103. package/dist/node/libs/email/contact.js +1 -1
  104. package/dist/node/libs/email/newsletter.js +1 -1
  105. package/dist/node/libs/email/waitlist-application.js +1 -1
  106. package/dist/node/libs/email/waitlist.js +1 -1
  107. package/dist/node/registry/engine.js +2003 -3334
  108. package/dist/node/registry/index.js +2003 -3334
  109. package/dist/node/registry/registry-docs.js +2 -2
  110. package/dist/node/registry/registry-landing.js +2007 -3338
  111. package/dist/node/registry/registry.js +2003 -3334
  112. package/dist/node/registry/utils.js +2003 -3334
  113. package/dist/registry/engine.js +2003 -3334
  114. package/dist/registry/index.js +2003 -3334
  115. package/dist/registry/registry-docs.js +2 -2
  116. package/dist/registry/registry-landing.js +2007 -3338
  117. package/dist/registry/registry.js +2003 -3334
  118. package/dist/registry/utils.js +2003 -3334
  119. package/package.json +31 -29
  120. package/src/bundles/MarketingBundle.ts +273 -273
  121. package/src/components/marketing/ChangelogPage.tsx +72 -100
  122. package/src/components/marketing/CofounderPage.tsx +120 -384
  123. package/src/components/marketing/ContactClient.tsx +164 -154
  124. package/src/components/marketing/ContributePage.tsx +139 -313
  125. package/src/components/marketing/DesignPartnerPage.tsx +133 -171
  126. package/src/components/marketing/LandingPage.tsx +353 -25
  127. package/src/components/marketing/PricingClient.tsx +192 -437
  128. package/src/components/marketing/ProductClientPage.tsx +255 -377
  129. package/src/components/marketing/index.ts +5 -5
  130. package/src/components/marketing/pricing-thinking-modal.tsx +197 -197
  131. package/src/components/marketing/sections/AudienceSection.tsx +55 -56
  132. package/src/components/marketing/sections/CorePositioningSection.tsx +37 -37
  133. package/src/components/marketing/sections/CtaSection.tsx +49 -50
  134. package/src/components/marketing/sections/DevelopersSection.tsx +26 -27
  135. package/src/components/marketing/sections/FearsSection.tsx +36 -37
  136. package/src/components/marketing/sections/HeroMarketingSection.tsx +59 -59
  137. package/src/components/marketing/sections/IconGridSection.tsx +71 -71
  138. package/src/components/marketing/sections/OutputsSection.tsx +51 -52
  139. package/src/components/marketing/sections/ProblemSection.tsx +39 -40
  140. package/src/components/marketing/sections/SolutionSection.tsx +39 -40
  141. package/src/components/marketing/sections/StepsSection.tsx +47 -48
  142. package/src/components/marketing/studio-signup-section.tsx +39 -41
  143. package/src/components/templates/TemplatesClientPage.tsx +763 -685
  144. package/src/components/templates/TemplatesPage.tsx +110 -110
  145. package/src/components/templates/TemplatesPreviewModal.tsx +251 -198
  146. package/src/index.ts +4 -4
  147. package/src/libs/email/client.test.ts +81 -81
  148. package/src/libs/email/client.ts +111 -111
  149. package/src/libs/email/contact.ts +35 -35
  150. package/src/libs/email/newsletter.ts +46 -46
  151. package/src/libs/email/types.ts +29 -29
  152. package/src/libs/email/utils.ts +5 -5
  153. package/src/libs/email/waitlist-application.ts +72 -72
  154. package/src/libs/email/waitlist.ts +46 -46
  155. package/src/libs/pricing-examples.ts +12 -12
  156. package/src/registry/engine.ts +16 -16
  157. package/src/registry/factory.ts +57 -57
  158. package/src/registry/registry-docs.ts +656 -666
  159. package/src/registry/registry-landing.ts +94 -95
  160. package/src/registry/registry.ts +36 -37
  161. package/src/registry/types.ts +2 -2
  162. package/src/registry/utils.ts +56 -56
  163. package/tsconfig.json +11 -11
  164. package/tsdown.config.js +5 -5
@@ -7,8 +7,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
7
7
  });
8
8
 
9
9
  // src/libs/email/client.ts
10
- import { createClient, Temv1alpha1 } from "@scaleway/sdk";
11
10
  import { Logger } from "@contractspec/lib.logger";
11
+ import { createClient, Temv1alpha1 } from "@scaleway/sdk";
12
12
  var DEFAULT_FROM = {
13
13
  email: "noreply@transactional.contractspec.io",
14
14
  name: "ContractSpec"
@@ -187,9 +187,8 @@ Submitted via ContractSpec contact form
187
187
  };
188
188
 
189
189
  // src/components/marketing/studio-signup-section.tsx
190
+ import { ArrowRight, Sparkles } from "lucide-react";
190
191
  import Link from "next/link";
191
- import { ArrowRight, Rocket } from "lucide-react";
192
- import { Button } from "@contractspec/lib.design-system";
193
192
  import { jsxDEV } from "react/jsx-dev-runtime";
194
193
  "use client";
195
194
  var studioUrl = "https://www.contractspec.studio";
@@ -200,62 +199,47 @@ function StudioSignupSection({
200
199
  const isCompact = variant === "compact";
201
200
  return /* @__PURE__ */ jsxDEV("div", {
202
201
  id: "studio-signup",
203
- className: isCompact ? "space-y-4" : "card-subtle space-y-6 p-8",
202
+ className: `${isCompact ? "space-y-5 rounded-[28px] border border-border bg-card p-6" : "editorial-panel space-y-6"}`,
204
203
  children: [
205
204
  /* @__PURE__ */ jsxDEV("div", {
206
205
  className: "space-y-4",
207
206
  children: [
208
207
  /* @__PURE__ */ jsxDEV("div", {
209
- className: "inline-flex items-center gap-2 rounded-full border border-violet-500/20 bg-violet-500/10 px-3 py-1",
208
+ className: "badge",
210
209
  children: [
211
- /* @__PURE__ */ jsxDEV(Rocket, {
212
- size: 14,
213
- className: "text-violet-300"
210
+ /* @__PURE__ */ jsxDEV(Sparkles, {
211
+ size: 14
214
212
  }, undefined, false, undefined, this),
215
- /* @__PURE__ */ jsxDEV("span", {
216
- className: "text-sm font-medium text-violet-300",
217
- children: "ContractSpec Studio"
218
- }, undefined, false, undefined, this)
213
+ "Studio on top"
219
214
  ]
220
215
  }, undefined, true, undefined, this),
221
216
  /* @__PURE__ */ jsxDEV("h2", {
222
- className: isCompact ? "text-xl font-bold" : "text-2xl font-bold",
223
- children: "Try ContractSpec Studio"
224
- }, undefined, false, undefined, this),
225
- /* @__PURE__ */ jsxDEV("p", {
226
- className: "text-muted-foreground text-sm",
227
- children: "The AI-powered product decision engine that turns product signals into spec-first deliverables."
217
+ className: isCompact ? "font-serif text-3xl tracking-[-0.04em]" : "font-serif text-4xl tracking-[-0.04em]",
218
+ children: "See the operating layer built on top of the open system."
228
219
  }, undefined, false, undefined, this),
229
220
  /* @__PURE__ */ jsxDEV("p", {
230
- className: "text-muted-foreground text-xs",
231
- children: "Evidence -> Correlation -> Decision -> Change -> Export -> Check -> Notify -> Autopilot"
221
+ className: "text-muted-foreground text-sm leading-7",
222
+ 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."
232
223
  }, undefined, false, undefined, this)
233
224
  ]
234
225
  }, undefined, true, undefined, this),
235
226
  /* @__PURE__ */ jsxDEV("div", {
236
- className: "flex flex-col gap-3 sm:flex-row",
227
+ className: "grid gap-3 sm:grid-cols-2",
237
228
  children: [
238
- /* @__PURE__ */ jsxDEV(Button, {
239
- asChild: true,
240
- className: "w-full sm:w-auto",
241
- children: /* @__PURE__ */ jsxDEV(Link, {
242
- href: studioUrl,
243
- children: [
244
- "Get Started Free ",
245
- /* @__PURE__ */ jsxDEV(ArrowRight, {
246
- className: "ml-2 h-4 w-4"
247
- }, undefined, false, undefined, this)
248
- ]
249
- }, undefined, true, undefined, this)
250
- }, undefined, false, undefined, this),
251
- /* @__PURE__ */ jsxDEV(Button, {
252
- asChild: true,
253
- variant: "outline",
254
- className: "w-full sm:w-auto",
255
- children: /* @__PURE__ */ jsxDEV(Link, {
256
- href: studioDocsUrl,
257
- children: "Read Studio Docs"
258
- }, undefined, false, undefined, this)
229
+ /* @__PURE__ */ jsxDEV(Link, {
230
+ href: studioUrl,
231
+ className: "btn-primary",
232
+ children: [
233
+ "Explore Studio ",
234
+ /* @__PURE__ */ jsxDEV(ArrowRight, {
235
+ className: "ml-2 h-4 w-4"
236
+ }, undefined, false, undefined, this)
237
+ ]
238
+ }, undefined, true, undefined, this),
239
+ /* @__PURE__ */ jsxDEV(Link, {
240
+ href: studioDocsUrl,
241
+ className: "btn-ghost",
242
+ children: "Read Studio docs"
259
243
  }, undefined, false, undefined, this)
260
244
  ]
261
245
  }, undefined, true, undefined, this)
@@ -264,26 +248,19 @@ function StudioSignupSection({
264
248
  }
265
249
 
266
250
  // src/components/marketing/ContactClient.tsx
267
- import { useActionState } from "react";
268
- import {
269
- Calendar,
270
- MessageSquare,
271
- CheckCircle,
272
- AlertCircle
273
- } from "lucide-react";
274
251
  import {
275
252
  ActionForm,
276
- Button as Button2,
253
+ Button,
277
254
  Input,
278
255
  Textarea
279
256
  } from "@contractspec/lib.design-system";
280
- import { VStack, HStack } from "@contractspec/lib.ui-kit-web/ui/stack";
281
257
  import {
282
- H2,
283
- H1,
284
- Small,
285
- Muted
286
- } from "@contractspec/lib.ui-kit-web/ui/typography";
258
+ AlertCircle,
259
+ Calendar,
260
+ CheckCircle,
261
+ MessageSquare
262
+ } from "lucide-react";
263
+ import { useActionState } from "react";
287
264
  import { jsxDEV as jsxDEV2 } from "react/jsx-dev-runtime";
288
265
  "use client";
289
266
  function ContactClient() {
@@ -292,183 +269,199 @@ function ContactClient() {
292
269
  if (result.success) {
293
270
  return {
294
271
  success: true,
295
- text: "Message sent successfully! We'll get back to you soon."
296
- };
297
- } else {
298
- return {
299
- success: false,
300
- text: result.text || "Failed to send message. Please try again."
272
+ text: "Message sent successfully. We'll get back to you soon."
301
273
  };
302
274
  }
275
+ return {
276
+ success: false,
277
+ text: result.text || "Failed to send message. Please try again."
278
+ };
303
279
  };
304
280
  const [contactResult, contactAction, contactPending] = useActionState(handleContactSubmit, null);
305
- return /* @__PURE__ */ jsxDEV2("section", {
306
- className: "section-padding hero-gradient w-full",
307
- children: /* @__PURE__ */ jsxDEV2(VStack, {
308
- className: "mx-auto max-w-4xl gap-16",
309
- children: [
310
- /* @__PURE__ */ jsxDEV2(VStack, {
311
- className: "gap-4 text-center",
281
+ return /* @__PURE__ */ jsxDEV2("main", {
282
+ children: [
283
+ /* @__PURE__ */ jsxDEV2("section", {
284
+ className: "section-padding hero-gradient border-border/70 border-b",
285
+ children: /* @__PURE__ */ jsxDEV2("div", {
286
+ className: "editorial-shell grid gap-8 lg:grid-cols-[1.05fr_0.95fr]",
312
287
  children: [
313
- /* @__PURE__ */ jsxDEV2(H1, {
314
- className: "text-5xl font-bold",
315
- children: "Get in touch"
316
- }, undefined, false, undefined, this),
317
- /* @__PURE__ */ jsxDEV2(Muted, {
318
- className: "text-lg",
319
- children: "Choose how you'd like to connect with us"
288
+ /* @__PURE__ */ jsxDEV2("div", {
289
+ className: "space-y-5",
290
+ children: [
291
+ /* @__PURE__ */ jsxDEV2("p", {
292
+ className: "editorial-kicker",
293
+ children: "Contact"
294
+ }, undefined, false, undefined, this),
295
+ /* @__PURE__ */ jsxDEV2("h1", {
296
+ className: "editorial-title max-w-4xl",
297
+ children: "Talk to the team behind the open system and the Studio product."
298
+ }, undefined, false, undefined, this),
299
+ /* @__PURE__ */ jsxDEV2("p", {
300
+ className: "editorial-subtitle",
301
+ children: "Reach out when you are evaluating the OSS foundation, deciding whether Studio fits your workflow, or want a direct conversation about adoption."
302
+ }, undefined, false, undefined, this)
303
+ ]
304
+ }, undefined, true, undefined, this),
305
+ /* @__PURE__ */ jsxDEV2(StudioSignupSection, {
306
+ variant: "compact"
320
307
  }, undefined, false, undefined, this)
321
308
  ]
322
- }, undefined, true, undefined, this),
323
- /* @__PURE__ */ jsxDEV2(StudioSignupSection, {}, undefined, false, undefined, this),
324
- /* @__PURE__ */ jsxDEV2(VStack, {
325
- className: "card-subtle gap-6 p-8",
326
- id: "call",
309
+ }, undefined, true, undefined, this)
310
+ }, undefined, false, undefined, this),
311
+ /* @__PURE__ */ jsxDEV2("section", {
312
+ className: "editorial-section",
313
+ children: /* @__PURE__ */ jsxDEV2("div", {
314
+ className: "editorial-shell grid gap-8 lg:grid-cols-2",
327
315
  children: [
328
- /* @__PURE__ */ jsxDEV2(HStack, {
329
- className: "items-center gap-3",
316
+ /* @__PURE__ */ jsxDEV2("div", {
317
+ className: "editorial-panel space-y-6",
318
+ id: "call",
330
319
  children: [
331
- /* @__PURE__ */ jsxDEV2(Calendar, {
332
- className: "text-blue-400",
333
- size: 24
334
- }, undefined, false, undefined, this),
335
- /* @__PURE__ */ jsxDEV2(VStack, {
336
- className: "items-start gap-1",
320
+ /* @__PURE__ */ jsxDEV2("div", {
321
+ className: "space-y-3",
337
322
  children: [
338
- /* @__PURE__ */ jsxDEV2(H2, {
339
- className: "text-2xl font-bold",
340
- children: "Book a 20-min call"
323
+ /* @__PURE__ */ jsxDEV2("div", {
324
+ className: "badge",
325
+ children: [
326
+ /* @__PURE__ */ jsxDEV2(Calendar, {
327
+ size: 14
328
+ }, undefined, false, undefined, this),
329
+ "Book a conversation"
330
+ ]
331
+ }, undefined, true, undefined, this),
332
+ /* @__PURE__ */ jsxDEV2("h2", {
333
+ className: "font-serif text-4xl tracking-[-0.04em]",
334
+ children: "Walk through your current system with us."
341
335
  }, undefined, false, undefined, this),
342
- /* @__PURE__ */ jsxDEV2(Muted, {
343
- className: "text-sm",
344
- children: "Schedule a walkthrough with our team to see ContractSpec in action"
336
+ /* @__PURE__ */ jsxDEV2("p", {
337
+ className: "text-muted-foreground text-sm leading-7",
338
+ children: "Use the call when you want a direct conversation about fit, adoption order, or the right entry point between OSS and Studio."
345
339
  }, undefined, false, undefined, this)
346
340
  ]
347
- }, undefined, true, undefined, this)
341
+ }, undefined, true, undefined, this),
342
+ /* @__PURE__ */ jsxDEV2("div", {
343
+ className: "overflow-hidden rounded-[28px] border border-border",
344
+ children: /* @__PURE__ */ jsxDEV2("object", {
345
+ data: "https://meet.reclaimai.com/e/f863cb29-caac-44b6-972b-1407dd9545a3",
346
+ width: "100%",
347
+ height: "700px",
348
+ style: { outline: "none" },
349
+ "aria-label": "Calendar booking widget"
350
+ }, undefined, false, undefined, this)
351
+ }, undefined, false, undefined, this)
348
352
  ]
349
353
  }, undefined, true, undefined, this),
350
354
  /* @__PURE__ */ jsxDEV2("div", {
351
- className: "border-border overflow-hidden rounded-lg border",
352
- children: /* @__PURE__ */ jsxDEV2("object", {
353
- data: "https://meet.reclaimai.com/e/f863cb29-caac-44b6-972b-1407dd9545a3",
354
- width: "100%",
355
- height: "700px",
356
- style: { outline: "none" },
357
- "aria-label": "Calendar booking widget"
358
- }, undefined, false, undefined, this)
359
- }, undefined, false, undefined, this)
360
- ]
361
- }, undefined, true, undefined, this),
362
- /* @__PURE__ */ jsxDEV2(VStack, {
363
- className: "card-subtle gap-6 p-8",
364
- id: "message",
365
- children: [
366
- /* @__PURE__ */ jsxDEV2(HStack, {
367
- className: "items-center gap-3",
355
+ className: "editorial-panel space-y-6",
356
+ id: "message",
368
357
  children: [
369
- /* @__PURE__ */ jsxDEV2(MessageSquare, {
370
- className: "text-emerald-400",
371
- size: 24
372
- }, undefined, false, undefined, this),
373
- /* @__PURE__ */ jsxDEV2(VStack, {
374
- className: "items-start gap-1",
358
+ /* @__PURE__ */ jsxDEV2("div", {
359
+ className: "space-y-3",
375
360
  children: [
376
- /* @__PURE__ */ jsxDEV2(H2, {
377
- className: "text-2xl font-bold",
378
- children: "Send us a message"
379
- }, undefined, false, undefined, this),
380
- /* @__PURE__ */ jsxDEV2(Muted, {
381
- className: "text-sm",
382
- children: "Have questions or feedback? We'd love to hear from you"
361
+ /* @__PURE__ */ jsxDEV2("div", {
362
+ className: "badge",
363
+ children: [
364
+ /* @__PURE__ */ jsxDEV2(MessageSquare, {
365
+ size: 14
366
+ }, undefined, false, undefined, this),
367
+ "Send a message"
368
+ ]
369
+ }, undefined, true, undefined, this),
370
+ /* @__PURE__ */ jsxDEV2("h2", {
371
+ className: "font-serif text-4xl tracking-[-0.04em]",
372
+ children: "Share context, questions, or a project we should understand."
383
373
  }, undefined, false, undefined, this)
384
374
  ]
385
- }, undefined, true, undefined, this)
386
- ]
387
- }, undefined, true, undefined, this),
388
- /* @__PURE__ */ jsxDEV2(ActionForm, {
389
- action: contactAction,
390
- children: /* @__PURE__ */ jsxDEV2(VStack, {
391
- className: "gap-4",
392
- children: [
393
- /* @__PURE__ */ jsxDEV2(VStack, {
394
- className: "gap-2",
395
- children: [
396
- /* @__PURE__ */ jsxDEV2(Small, {
397
- className: "text-sm font-medium",
398
- children: "Name"
399
- }, undefined, false, undefined, this),
400
- /* @__PURE__ */ jsxDEV2(Input, {
401
- id: "contact-name",
402
- name: "name",
403
- type: "text",
404
- placeholder: "Your name",
405
- disabled: contactPending || contactResult?.success,
406
- required: true
407
- }, undefined, false, undefined, this)
408
- ]
409
- }, undefined, true, undefined, this),
410
- /* @__PURE__ */ jsxDEV2(VStack, {
411
- className: "gap-2",
375
+ }, undefined, true, undefined, this),
376
+ /* @__PURE__ */ jsxDEV2(ActionForm, {
377
+ action: contactAction,
378
+ children: /* @__PURE__ */ jsxDEV2("div", {
379
+ className: "space-y-4",
412
380
  children: [
413
- /* @__PURE__ */ jsxDEV2(Small, {
414
- className: "text-sm font-medium",
415
- children: "Email"
416
- }, undefined, false, undefined, this),
417
- /* @__PURE__ */ jsxDEV2(Input, {
418
- id: "contact-email",
419
- name: "email",
420
- type: "email",
421
- keyboard: { kind: "email" },
422
- placeholder: "your@email.com",
381
+ /* @__PURE__ */ jsxDEV2("div", {
382
+ className: "space-y-2",
383
+ children: [
384
+ /* @__PURE__ */ jsxDEV2("label", {
385
+ htmlFor: "contact-name",
386
+ className: "font-medium text-sm",
387
+ children: "Name"
388
+ }, undefined, false, undefined, this),
389
+ /* @__PURE__ */ jsxDEV2(Input, {
390
+ id: "contact-name",
391
+ name: "name",
392
+ type: "text",
393
+ placeholder: "Your name",
394
+ disabled: contactPending || contactResult?.success,
395
+ required: true
396
+ }, undefined, false, undefined, this)
397
+ ]
398
+ }, undefined, true, undefined, this),
399
+ /* @__PURE__ */ jsxDEV2("div", {
400
+ className: "space-y-2",
401
+ children: [
402
+ /* @__PURE__ */ jsxDEV2("label", {
403
+ htmlFor: "contact-email",
404
+ className: "font-medium text-sm",
405
+ children: "Email"
406
+ }, undefined, false, undefined, this),
407
+ /* @__PURE__ */ jsxDEV2(Input, {
408
+ id: "contact-email",
409
+ name: "email",
410
+ type: "email",
411
+ keyboard: { kind: "email" },
412
+ placeholder: "you@company.com",
413
+ disabled: contactPending || contactResult?.success,
414
+ required: true
415
+ }, undefined, false, undefined, this)
416
+ ]
417
+ }, undefined, true, undefined, this),
418
+ /* @__PURE__ */ jsxDEV2("div", {
419
+ className: "space-y-2",
420
+ children: [
421
+ /* @__PURE__ */ jsxDEV2("label", {
422
+ htmlFor: "contact-message",
423
+ className: "font-medium text-sm",
424
+ children: "Message"
425
+ }, undefined, false, undefined, this),
426
+ /* @__PURE__ */ jsxDEV2(Textarea, {
427
+ id: "contact-message",
428
+ name: "message",
429
+ placeholder: "What are you trying to stabilize, and where is the current system breaking down?",
430
+ disabled: contactPending || contactResult?.success,
431
+ rows: 7,
432
+ required: true
433
+ }, undefined, false, undefined, this)
434
+ ]
435
+ }, undefined, true, undefined, this),
436
+ contactResult && !contactPending ? /* @__PURE__ */ jsxDEV2("div", {
437
+ 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"}`,
438
+ children: [
439
+ contactResult.success ? /* @__PURE__ */ jsxDEV2(CheckCircle, {
440
+ size: 16
441
+ }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV2(AlertCircle, {
442
+ size: 16
443
+ }, undefined, false, undefined, this),
444
+ /* @__PURE__ */ jsxDEV2("span", {
445
+ children: contactResult.text
446
+ }, undefined, false, undefined, this)
447
+ ]
448
+ }, undefined, true, undefined, this) : null,
449
+ /* @__PURE__ */ jsxDEV2(Button, {
450
+ type: "submit",
423
451
  disabled: contactPending || contactResult?.success,
424
- required: true
452
+ className: "w-full",
453
+ children: contactPending ? "Sending..." : "Send message"
425
454
  }, undefined, false, undefined, this)
426
455
  ]
427
- }, undefined, true, undefined, this),
428
- /* @__PURE__ */ jsxDEV2(VStack, {
429
- className: "gap-2",
430
- children: [
431
- /* @__PURE__ */ jsxDEV2(Small, {
432
- className: "text-sm font-medium",
433
- children: "Message"
434
- }, undefined, false, undefined, this),
435
- /* @__PURE__ */ jsxDEV2(Textarea, {
436
- id: "contact-message",
437
- name: "message",
438
- placeholder: "Tell us what's on your mind...",
439
- disabled: contactPending || contactResult?.success,
440
- rows: 6,
441
- required: true
442
- }, undefined, false, undefined, this)
443
- ]
444
- }, undefined, true, undefined, this),
445
- contactResult && !contactPending && /* @__PURE__ */ jsxDEV2(HStack, {
446
- 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"}`,
447
- children: [
448
- contactResult.success ? /* @__PURE__ */ jsxDEV2(CheckCircle, {
449
- size: 16
450
- }, undefined, false, undefined, this) : /* @__PURE__ */ jsxDEV2(AlertCircle, {
451
- size: 16
452
- }, undefined, false, undefined, this),
453
- /* @__PURE__ */ jsxDEV2(Small, {
454
- children: contactResult.text
455
- }, undefined, false, undefined, this)
456
- ]
457
- }, undefined, true, undefined, this),
458
- /* @__PURE__ */ jsxDEV2(Button2, {
459
- type: "submit",
460
- disabled: contactPending || contactResult?.success,
461
- className: "w-full",
462
- children: contactPending ? "Sending..." : "Send message"
463
- }, undefined, false, undefined, this)
464
- ]
465
- }, undefined, true, undefined, this)
466
- }, undefined, false, undefined, this)
456
+ }, undefined, true, undefined, this)
457
+ }, undefined, false, undefined, this)
458
+ ]
459
+ }, undefined, true, undefined, this)
467
460
  ]
468
461
  }, undefined, true, undefined, this)
469
- ]
470
- }, undefined, true, undefined, this)
471
- }, undefined, false, undefined, this);
462
+ }, undefined, false, undefined, this)
463
+ ]
464
+ }, undefined, true, undefined, this);
472
465
  }
473
466
  export {
474
467
  ContactClient