@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.
- package/.turbo/turbo-build.log +87 -87
- package/AGENTS.md +29 -21
- package/CHANGELOG.md +59 -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 +2374 -3571
- package/dist/browser/components/templates/TemplatesPage.js +1 -1
- package/dist/browser/components/templates/TemplatesPreviewModal.js +27 -3
- package/dist/browser/components/templates/index.js +2412 -3609
- package/dist/browser/index.js +2415 -3612
- 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 +2374 -3571
- package/dist/components/templates/TemplatesPage.js +1 -1
- package/dist/components/templates/TemplatesPreviewModal.js +27 -3
- package/dist/components/templates/index.js +2412 -3609
- package/dist/index.js +2415 -3612
- 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 +2374 -3571
- package/dist/node/components/templates/TemplatesPage.js +1 -1
- package/dist/node/components/templates/TemplatesPreviewModal.js +27 -3
- package/dist/node/components/templates/index.js +2412 -3609
- package/dist/node/index.js +2415 -3612
- 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 +31 -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 +763 -685
- package/src/components/templates/TemplatesPage.tsx +110 -110
- package/src/components/templates/TemplatesPreviewModal.tsx +251 -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
|
@@ -18,7 +18,7 @@ var PRICING_EXAMPLES = {
|
|
|
18
18
|
};
|
|
19
19
|
|
|
20
20
|
// src/components/marketing/pricing-thinking-modal.tsx
|
|
21
|
-
import {
|
|
21
|
+
import { Button } from "@contractspec/lib.design-system";
|
|
22
22
|
import {
|
|
23
23
|
Dialog,
|
|
24
24
|
DialogContent,
|
|
@@ -26,7 +26,7 @@ import {
|
|
|
26
26
|
DialogHeader,
|
|
27
27
|
DialogTitle
|
|
28
28
|
} from "@contractspec/lib.ui-kit-web/ui/dialog";
|
|
29
|
-
import {
|
|
29
|
+
import { CheckCircle } from "lucide-react";
|
|
30
30
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
31
31
|
"use client";
|
|
32
32
|
var pricingTiers = [
|
|
@@ -118,7 +118,7 @@ function PricingThinkingModal({
|
|
|
118
118
|
className: "flex items-center gap-2",
|
|
119
119
|
children: [
|
|
120
120
|
/* @__PURE__ */ jsxDEV("span", {
|
|
121
|
-
className: "text-muted-foreground text-xs
|
|
121
|
+
className: "font-medium text-muted-foreground text-xs",
|
|
122
122
|
children: "Draft"
|
|
123
123
|
}, undefined, false, undefined, this),
|
|
124
124
|
/* @__PURE__ */ jsxDEV("span", {
|
|
@@ -137,14 +137,14 @@ function PricingThinkingModal({
|
|
|
137
137
|
className: "card-subtle relative space-y-4 p-6",
|
|
138
138
|
children: [
|
|
139
139
|
/* @__PURE__ */ jsxDEV("div", {
|
|
140
|
-
className: "
|
|
140
|
+
className: "absolute -top-2 left-1/2 -translate-x-1/2 rounded-full border border-border bg-muted px-2 py-0.5 font-medium text-xs",
|
|
141
141
|
children: tier.tag
|
|
142
142
|
}, undefined, false, undefined, this),
|
|
143
143
|
/* @__PURE__ */ jsxDEV("div", {
|
|
144
144
|
className: "space-y-2 pt-2",
|
|
145
145
|
children: [
|
|
146
146
|
/* @__PURE__ */ jsxDEV("h3", {
|
|
147
|
-
className: "text-xl
|
|
147
|
+
className: "font-bold text-xl",
|
|
148
148
|
children: tier.title
|
|
149
149
|
}, undefined, false, undefined, this),
|
|
150
150
|
/* @__PURE__ */ jsxDEV("p", {
|
|
@@ -156,7 +156,7 @@ function PricingThinkingModal({
|
|
|
156
156
|
/* @__PURE__ */ jsxDEV("ul", {
|
|
157
157
|
className: "space-y-2",
|
|
158
158
|
children: tier.bullets.map((bullet, i) => /* @__PURE__ */ jsxDEV("li", {
|
|
159
|
-
className: "
|
|
159
|
+
className: "flex gap-2 text-muted-foreground text-sm",
|
|
160
160
|
children: [
|
|
161
161
|
/* @__PURE__ */ jsxDEV(CheckCircle, {
|
|
162
162
|
size: 14,
|
|
@@ -176,20 +176,20 @@ function PricingThinkingModal({
|
|
|
176
176
|
]
|
|
177
177
|
}, undefined, true, undefined, this),
|
|
178
178
|
/* @__PURE__ */ jsxDEV("div", {
|
|
179
|
-
className: "
|
|
179
|
+
className: "space-y-4 border-border border-t pt-6",
|
|
180
180
|
children: [
|
|
181
181
|
/* @__PURE__ */ jsxDEV("div", {
|
|
182
182
|
children: [
|
|
183
183
|
/* @__PURE__ */ jsxDEV("h3", {
|
|
184
|
-
className: "text-lg
|
|
184
|
+
className: "font-bold text-lg",
|
|
185
185
|
children: "Usage-based, with a generous free tier"
|
|
186
186
|
}, undefined, false, undefined, this),
|
|
187
187
|
/* @__PURE__ */ jsxDEV("p", {
|
|
188
|
-
className: "text-muted-foreground
|
|
188
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
189
189
|
children: "Inspired by products like PostHog, we plan to keep a generous free tier on all plans, then charge based on actual usage: regenerations, AI agent actions, and the number of projects you run on ContractSpec."
|
|
190
190
|
}, undefined, false, undefined, this),
|
|
191
191
|
/* @__PURE__ */ jsxDEV("p", {
|
|
192
|
-
className: "text-muted-foreground
|
|
192
|
+
className: "mt-3 text-muted-foreground text-xs italic",
|
|
193
193
|
children: "Free tier limits are intentionally small but useful: enough to try the agent and regenerate a real project, not enough to run a full team's workload for free."
|
|
194
194
|
}, undefined, false, undefined, this)
|
|
195
195
|
]
|
|
@@ -200,7 +200,7 @@ function PricingThinkingModal({
|
|
|
200
200
|
className: "card-subtle space-y-2 p-4",
|
|
201
201
|
children: [
|
|
202
202
|
/* @__PURE__ */ jsxDEV("h4", {
|
|
203
|
-
className: "text-sm
|
|
203
|
+
className: "font-semibold text-sm",
|
|
204
204
|
children: metric.name
|
|
205
205
|
}, undefined, false, undefined, this),
|
|
206
206
|
/* @__PURE__ */ jsxDEV("p", {
|
|
@@ -217,7 +217,7 @@ function PricingThinkingModal({
|
|
|
217
217
|
]
|
|
218
218
|
}, undefined, true, undefined, this),
|
|
219
219
|
/* @__PURE__ */ jsxDEV("div", {
|
|
220
|
-
className: "
|
|
220
|
+
className: "space-y-4 border-border border-t pt-6",
|
|
221
221
|
children: [
|
|
222
222
|
/* @__PURE__ */ jsxDEV("p", {
|
|
223
223
|
className: "text-muted-foreground text-xs",
|
|
@@ -6,8 +6,8 @@ import {
|
|
|
6
6
|
MarketingCard,
|
|
7
7
|
MarketingCardContent,
|
|
8
8
|
MarketingCardHeader,
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
MarketingCardsSection,
|
|
10
|
+
MarketingCardTitle
|
|
11
11
|
} from "@contractspec/lib.design-system";
|
|
12
12
|
import { VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
13
13
|
import { Muted, Small } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
@@ -18,7 +18,7 @@ function CorePositioningSection() {
|
|
|
18
18
|
align: "center",
|
|
19
19
|
children: [
|
|
20
20
|
/* @__PURE__ */ jsxDEV(H2, {
|
|
21
|
-
className: "text-center text-3xl
|
|
21
|
+
className: "text-center font-bold text-3xl md:text-4xl",
|
|
22
22
|
children: [
|
|
23
23
|
"You keep your app.",
|
|
24
24
|
/* @__PURE__ */ jsxDEV("br", {}, undefined, false, undefined, this),
|
|
@@ -32,7 +32,7 @@ function CorePositioningSection() {
|
|
|
32
32
|
/* @__PURE__ */ jsxDEV("br", {}, undefined, false, undefined, this),
|
|
33
33
|
/* @__PURE__ */ jsxDEV(Small, {
|
|
34
34
|
className: "font-semibold text-violet-400",
|
|
35
|
-
children: "
|
|
35
|
+
children: "Start with the open foundation. Adopt the operating layer when it helps."
|
|
36
36
|
}, undefined, false, undefined, this)
|
|
37
37
|
]
|
|
38
38
|
}, undefined, true, undefined, this),
|
|
@@ -2,11 +2,11 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/components/marketing/sections/CtaSection.tsx
|
|
5
|
-
import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
|
|
6
5
|
import {
|
|
7
6
|
analyticsEventNames,
|
|
8
7
|
captureAnalyticsEvent
|
|
9
8
|
} from "@contractspec/bundle.library/libs/posthog/client";
|
|
9
|
+
import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
|
|
10
10
|
import { VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
11
11
|
import { H2, Lead } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
12
12
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
@@ -22,11 +22,11 @@ function CtaSection() {
|
|
|
22
22
|
className: "text-center",
|
|
23
23
|
children: [
|
|
24
24
|
/* @__PURE__ */ jsxDEV(H2, {
|
|
25
|
-
className: "text-4xl
|
|
25
|
+
className: "font-bold text-4xl md:text-5xl",
|
|
26
26
|
children: "Ready to stabilize your codebase?"
|
|
27
27
|
}, undefined, false, undefined, this),
|
|
28
28
|
/* @__PURE__ */ jsxDEV(Lead, {
|
|
29
|
-
className: "text-muted-foreground
|
|
29
|
+
className: "text-lg text-muted-foreground",
|
|
30
30
|
children: "Start with one module. See the difference. Expand at your own pace."
|
|
31
31
|
}, undefined, false, undefined, this),
|
|
32
32
|
/* @__PURE__ */ jsxDEV(VStack, {
|
|
@@ -2,12 +2,12 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
5
|
-
import { cva } from "class-variance-authority";
|
|
6
5
|
import {
|
|
7
6
|
MarketingCardsSection,
|
|
8
7
|
MarketingIconCard
|
|
9
8
|
} from "@contractspec/lib.design-system";
|
|
10
9
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
10
|
+
import { cva } from "class-variance-authority";
|
|
11
11
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
12
12
|
var itemVariants = cva("", {
|
|
13
13
|
variants: {
|
|
@@ -33,7 +33,7 @@ function IconGridSection({
|
|
|
33
33
|
tone,
|
|
34
34
|
padding,
|
|
35
35
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
36
|
-
className: "text-xs
|
|
36
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
37
37
|
children: eyebrow
|
|
38
38
|
}, undefined, false, undefined, this) : null,
|
|
39
39
|
title,
|
|
@@ -65,7 +65,7 @@ var fears = [
|
|
|
65
65
|
},
|
|
66
66
|
{
|
|
67
67
|
title: '"Vendor lock-in / losing ownership"',
|
|
68
|
-
body: "You own the generated code. It's standard TypeScript, standard SQL, standard GraphQL. ContractSpec
|
|
68
|
+
body: "You own the generated code. It's standard TypeScript, standard SQL, standard GraphQL. ContractSpec stays open and ejectable, so you can leave with the parts you adopted anytime.",
|
|
69
69
|
icon: Unlock
|
|
70
70
|
},
|
|
71
71
|
{
|
|
@@ -2,11 +2,11 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/components/marketing/sections/HeroMarketingSection.tsx
|
|
5
|
-
import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
|
|
6
5
|
import {
|
|
7
6
|
analyticsEventNames,
|
|
8
7
|
captureAnalyticsEvent
|
|
9
8
|
} from "@contractspec/bundle.library/libs/posthog/client";
|
|
9
|
+
import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
|
|
10
10
|
import { Box, HStack, VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
11
11
|
import { H1, Lead, Small } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
12
12
|
import { ChevronRight } from "lucide-react";
|
|
@@ -26,16 +26,16 @@ function HeroMarketingSection() {
|
|
|
26
26
|
/* @__PURE__ */ jsxDEV(Box, {
|
|
27
27
|
as: "div",
|
|
28
28
|
role: "presentation",
|
|
29
|
-
className: "
|
|
29
|
+
className: "inline-flex items-center rounded-full bg-muted px-3 py-1 font-medium text-muted-foreground text-xs uppercase tracking-wider",
|
|
30
30
|
children: "Open Source Core"
|
|
31
31
|
}, undefined, false, undefined, this),
|
|
32
32
|
/* @__PURE__ */ jsxDEV(H1, {
|
|
33
|
-
className: "text-
|
|
33
|
+
className: "text-balance font-bold text-4xl leading-tight md:text-5xl",
|
|
34
34
|
children: "Stabilize your AI-generated code"
|
|
35
35
|
}, undefined, false, undefined, this),
|
|
36
36
|
/* @__PURE__ */ jsxDEV(Lead, {
|
|
37
|
-
className: "text-
|
|
38
|
-
children: "ContractSpec is the
|
|
37
|
+
className: "text-balance text-lg text-muted-foreground md:text-xl",
|
|
38
|
+
children: "ContractSpec is the open spec system that keeps AI-written software coherent, safe, and regenerable. You keep your app. You own the code. One module at a time."
|
|
39
39
|
}, undefined, false, undefined, this),
|
|
40
40
|
/* @__PURE__ */ jsxDEV(HStack, {
|
|
41
41
|
gap: "md",
|
|
@@ -72,7 +72,7 @@ function HeroMarketingSection() {
|
|
|
72
72
|
children: heroChips.map((chip) => /* @__PURE__ */ jsxDEV(Box, {
|
|
73
73
|
as: "div",
|
|
74
74
|
role: "presentation",
|
|
75
|
-
className: "
|
|
75
|
+
className: "inline-flex items-center rounded-full border border-border px-3 py-1 text-foreground text-sm",
|
|
76
76
|
children: /* @__PURE__ */ jsxDEV(Small, {
|
|
77
77
|
className: "font-medium",
|
|
78
78
|
children: chip
|
|
@@ -2,12 +2,12 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
5
|
-
import { cva } from "class-variance-authority";
|
|
6
5
|
import {
|
|
7
6
|
MarketingCardsSection,
|
|
8
7
|
MarketingIconCard
|
|
9
8
|
} from "@contractspec/lib.design-system";
|
|
10
9
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
10
|
+
import { cva } from "class-variance-authority";
|
|
11
11
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
12
12
|
var itemVariants = cva("", {
|
|
13
13
|
variants: {
|
|
@@ -33,7 +33,7 @@ function IconGridSection({
|
|
|
33
33
|
tone,
|
|
34
34
|
padding,
|
|
35
35
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
36
|
-
className: "text-xs
|
|
36
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
37
37
|
children: eyebrow
|
|
38
38
|
}, undefined, false, undefined, this) : null,
|
|
39
39
|
title,
|
|
@@ -2,12 +2,12 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
5
|
-
import { cva } from "class-variance-authority";
|
|
6
5
|
import {
|
|
7
6
|
MarketingCardsSection,
|
|
8
7
|
MarketingIconCard
|
|
9
8
|
} from "@contractspec/lib.design-system";
|
|
10
9
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
10
|
+
import { cva } from "class-variance-authority";
|
|
11
11
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
12
12
|
var itemVariants = cva("", {
|
|
13
13
|
variants: {
|
|
@@ -33,7 +33,7 @@ function IconGridSection({
|
|
|
33
33
|
tone,
|
|
34
34
|
padding,
|
|
35
35
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
36
|
-
className: "text-xs
|
|
36
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
37
37
|
children: eyebrow
|
|
38
38
|
}, undefined, false, undefined, this) : null,
|
|
39
39
|
title,
|
|
@@ -2,12 +2,12 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
5
|
-
import { cva } from "class-variance-authority";
|
|
6
5
|
import {
|
|
7
6
|
MarketingCardsSection,
|
|
8
7
|
MarketingIconCard
|
|
9
8
|
} from "@contractspec/lib.design-system";
|
|
10
9
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
10
|
+
import { cva } from "class-variance-authority";
|
|
11
11
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
12
12
|
var itemVariants = cva("", {
|
|
13
13
|
variants: {
|
|
@@ -33,7 +33,7 @@ function IconGridSection({
|
|
|
33
33
|
tone,
|
|
34
34
|
padding,
|
|
35
35
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
36
|
-
className: "text-xs
|
|
36
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
37
37
|
children: eyebrow
|
|
38
38
|
}, undefined, false, undefined, this) : null,
|
|
39
39
|
title,
|
|
@@ -2,12 +2,12 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
5
|
-
import { cva } from "class-variance-authority";
|
|
6
5
|
import {
|
|
7
6
|
MarketingCardsSection,
|
|
8
7
|
MarketingIconCard
|
|
9
8
|
} from "@contractspec/lib.design-system";
|
|
10
9
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
10
|
+
import { cva } from "class-variance-authority";
|
|
11
11
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
12
12
|
var itemVariants = cva("", {
|
|
13
13
|
variants: {
|
|
@@ -33,7 +33,7 @@ function IconGridSection({
|
|
|
33
33
|
tone,
|
|
34
34
|
padding,
|
|
35
35
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
36
|
-
className: "text-xs
|
|
36
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
37
37
|
children: eyebrow
|
|
38
38
|
}, undefined, false, undefined, this) : null,
|
|
39
39
|
title,
|
|
@@ -2,12 +2,12 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
5
|
-
import { cva } from "class-variance-authority";
|
|
6
5
|
import {
|
|
7
6
|
MarketingCardsSection,
|
|
8
7
|
MarketingIconCard
|
|
9
8
|
} from "@contractspec/lib.design-system";
|
|
10
9
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
10
|
+
import { cva } from "class-variance-authority";
|
|
11
11
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
12
12
|
var itemVariants = cva("", {
|
|
13
13
|
variants: {
|
|
@@ -33,7 +33,7 @@ function IconGridSection({
|
|
|
33
33
|
tone,
|
|
34
34
|
padding,
|
|
35
35
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
36
|
-
className: "text-xs
|
|
36
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
37
37
|
children: eyebrow
|
|
38
38
|
}, undefined, false, undefined, this) : null,
|
|
39
39
|
title,
|
|
@@ -87,9 +87,9 @@ function StepsSection() {
|
|
|
87
87
|
iconRole: "listing",
|
|
88
88
|
items: steps.map((item) => ({
|
|
89
89
|
icon: ({ className }) => /* @__PURE__ */ jsxDEV2("div", {
|
|
90
|
-
className: `
|
|
90
|
+
className: `flex h-10 w-10 items-center justify-center rounded-lg bg-primary/15 ${className ?? ""}`,
|
|
91
91
|
children: /* @__PURE__ */ jsxDEV2("span", {
|
|
92
|
-
className: "text-primary text-sm
|
|
92
|
+
className: "font-semibold text-primary text-sm",
|
|
93
93
|
children: item.step
|
|
94
94
|
}, undefined, false, undefined, this)
|
|
95
95
|
}, undefined, false, undefined, this),
|
|
@@ -2,9 +2,8 @@ import { createRequire } from "node:module";
|
|
|
2
2
|
var __require = /* @__PURE__ */ createRequire(import.meta.url);
|
|
3
3
|
|
|
4
4
|
// src/components/marketing/studio-signup-section.tsx
|
|
5
|
+
import { ArrowRight, Sparkles } from "lucide-react";
|
|
5
6
|
import Link from "next/link";
|
|
6
|
-
import { ArrowRight, Rocket } from "lucide-react";
|
|
7
|
-
import { Button } from "@contractspec/lib.design-system";
|
|
8
7
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
9
8
|
"use client";
|
|
10
9
|
var studioUrl = "https://www.contractspec.studio";
|
|
@@ -15,62 +14,47 @@ function StudioSignupSection({
|
|
|
15
14
|
const isCompact = variant === "compact";
|
|
16
15
|
return /* @__PURE__ */ jsxDEV("div", {
|
|
17
16
|
id: "studio-signup",
|
|
18
|
-
className: isCompact ? "space-y-
|
|
17
|
+
className: `${isCompact ? "space-y-5 rounded-[28px] border border-border bg-card p-6" : "editorial-panel space-y-6"}`,
|
|
19
18
|
children: [
|
|
20
19
|
/* @__PURE__ */ jsxDEV("div", {
|
|
21
20
|
className: "space-y-4",
|
|
22
21
|
children: [
|
|
23
22
|
/* @__PURE__ */ jsxDEV("div", {
|
|
24
|
-
className: "
|
|
23
|
+
className: "badge",
|
|
25
24
|
children: [
|
|
26
|
-
/* @__PURE__ */ jsxDEV(
|
|
27
|
-
size: 14
|
|
28
|
-
className: "text-violet-300"
|
|
25
|
+
/* @__PURE__ */ jsxDEV(Sparkles, {
|
|
26
|
+
size: 14
|
|
29
27
|
}, undefined, false, undefined, this),
|
|
30
|
-
|
|
31
|
-
className: "text-sm font-medium text-violet-300",
|
|
32
|
-
children: "ContractSpec Studio"
|
|
33
|
-
}, undefined, false, undefined, this)
|
|
28
|
+
"Studio on top"
|
|
34
29
|
]
|
|
35
30
|
}, undefined, true, undefined, this),
|
|
36
31
|
/* @__PURE__ */ jsxDEV("h2", {
|
|
37
|
-
className: isCompact ? "text-
|
|
38
|
-
children: "
|
|
39
|
-
}, undefined, false, undefined, this),
|
|
40
|
-
/* @__PURE__ */ jsxDEV("p", {
|
|
41
|
-
className: "text-muted-foreground text-sm",
|
|
42
|
-
children: "The AI-powered product decision engine that turns product signals into spec-first deliverables."
|
|
32
|
+
className: isCompact ? "font-serif text-3xl tracking-[-0.04em]" : "font-serif text-4xl tracking-[-0.04em]",
|
|
33
|
+
children: "See the operating layer built on top of the open system."
|
|
43
34
|
}, undefined, false, undefined, this),
|
|
44
35
|
/* @__PURE__ */ jsxDEV("p", {
|
|
45
|
-
className: "text-muted-foreground text-
|
|
46
|
-
children: "
|
|
36
|
+
className: "text-muted-foreground text-sm leading-7",
|
|
37
|
+
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."
|
|
47
38
|
}, undefined, false, undefined, this)
|
|
48
39
|
]
|
|
49
40
|
}, undefined, true, undefined, this),
|
|
50
41
|
/* @__PURE__ */ jsxDEV("div", {
|
|
51
|
-
className: "
|
|
42
|
+
className: "grid gap-3 sm:grid-cols-2",
|
|
52
43
|
children: [
|
|
53
|
-
/* @__PURE__ */ jsxDEV(
|
|
54
|
-
|
|
55
|
-
className: "
|
|
56
|
-
children:
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
"
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
asChild: true,
|
|
68
|
-
variant: "outline",
|
|
69
|
-
className: "w-full sm:w-auto",
|
|
70
|
-
children: /* @__PURE__ */ jsxDEV(Link, {
|
|
71
|
-
href: studioDocsUrl,
|
|
72
|
-
children: "Read Studio Docs"
|
|
73
|
-
}, undefined, false, undefined, this)
|
|
44
|
+
/* @__PURE__ */ jsxDEV(Link, {
|
|
45
|
+
href: studioUrl,
|
|
46
|
+
className: "btn-primary",
|
|
47
|
+
children: [
|
|
48
|
+
"Explore Studio ",
|
|
49
|
+
/* @__PURE__ */ jsxDEV(ArrowRight, {
|
|
50
|
+
className: "ml-2 h-4 w-4"
|
|
51
|
+
}, undefined, false, undefined, this)
|
|
52
|
+
]
|
|
53
|
+
}, undefined, true, undefined, this),
|
|
54
|
+
/* @__PURE__ */ jsxDEV(Link, {
|
|
55
|
+
href: studioDocsUrl,
|
|
56
|
+
className: "btn-ghost",
|
|
57
|
+
children: "Read Studio docs"
|
|
74
58
|
}, undefined, false, undefined, this)
|
|
75
59
|
]
|
|
76
60
|
}, undefined, true, undefined, this)
|