@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
|
@@ -23,7 +23,7 @@ var PRICING_EXAMPLES = {
|
|
|
23
23
|
};
|
|
24
24
|
|
|
25
25
|
// src/components/marketing/pricing-thinking-modal.tsx
|
|
26
|
-
import {
|
|
26
|
+
import { Button } from "@contractspec/lib.design-system";
|
|
27
27
|
import {
|
|
28
28
|
Dialog,
|
|
29
29
|
DialogContent,
|
|
@@ -31,7 +31,7 @@ import {
|
|
|
31
31
|
DialogHeader,
|
|
32
32
|
DialogTitle
|
|
33
33
|
} from "@contractspec/lib.ui-kit-web/ui/dialog";
|
|
34
|
-
import {
|
|
34
|
+
import { CheckCircle } from "lucide-react";
|
|
35
35
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
36
36
|
"use client";
|
|
37
37
|
var pricingTiers = [
|
|
@@ -123,7 +123,7 @@ function PricingThinkingModal({
|
|
|
123
123
|
className: "flex items-center gap-2",
|
|
124
124
|
children: [
|
|
125
125
|
/* @__PURE__ */ jsxDEV("span", {
|
|
126
|
-
className: "text-muted-foreground text-xs
|
|
126
|
+
className: "font-medium text-muted-foreground text-xs",
|
|
127
127
|
children: "Draft"
|
|
128
128
|
}, undefined, false, undefined, this),
|
|
129
129
|
/* @__PURE__ */ jsxDEV("span", {
|
|
@@ -142,14 +142,14 @@ function PricingThinkingModal({
|
|
|
142
142
|
className: "card-subtle relative space-y-4 p-6",
|
|
143
143
|
children: [
|
|
144
144
|
/* @__PURE__ */ jsxDEV("div", {
|
|
145
|
-
className: "
|
|
145
|
+
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",
|
|
146
146
|
children: tier.tag
|
|
147
147
|
}, undefined, false, undefined, this),
|
|
148
148
|
/* @__PURE__ */ jsxDEV("div", {
|
|
149
149
|
className: "space-y-2 pt-2",
|
|
150
150
|
children: [
|
|
151
151
|
/* @__PURE__ */ jsxDEV("h3", {
|
|
152
|
-
className: "text-xl
|
|
152
|
+
className: "font-bold text-xl",
|
|
153
153
|
children: tier.title
|
|
154
154
|
}, undefined, false, undefined, this),
|
|
155
155
|
/* @__PURE__ */ jsxDEV("p", {
|
|
@@ -161,7 +161,7 @@ function PricingThinkingModal({
|
|
|
161
161
|
/* @__PURE__ */ jsxDEV("ul", {
|
|
162
162
|
className: "space-y-2",
|
|
163
163
|
children: tier.bullets.map((bullet, i) => /* @__PURE__ */ jsxDEV("li", {
|
|
164
|
-
className: "
|
|
164
|
+
className: "flex gap-2 text-muted-foreground text-sm",
|
|
165
165
|
children: [
|
|
166
166
|
/* @__PURE__ */ jsxDEV(CheckCircle, {
|
|
167
167
|
size: 14,
|
|
@@ -181,20 +181,20 @@ function PricingThinkingModal({
|
|
|
181
181
|
]
|
|
182
182
|
}, undefined, true, undefined, this),
|
|
183
183
|
/* @__PURE__ */ jsxDEV("div", {
|
|
184
|
-
className: "
|
|
184
|
+
className: "space-y-4 border-border border-t pt-6",
|
|
185
185
|
children: [
|
|
186
186
|
/* @__PURE__ */ jsxDEV("div", {
|
|
187
187
|
children: [
|
|
188
188
|
/* @__PURE__ */ jsxDEV("h3", {
|
|
189
|
-
className: "text-lg
|
|
189
|
+
className: "font-bold text-lg",
|
|
190
190
|
children: "Usage-based, with a generous free tier"
|
|
191
191
|
}, undefined, false, undefined, this),
|
|
192
192
|
/* @__PURE__ */ jsxDEV("p", {
|
|
193
|
-
className: "text-muted-foreground
|
|
193
|
+
className: "mt-2 text-muted-foreground text-sm",
|
|
194
194
|
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."
|
|
195
195
|
}, undefined, false, undefined, this),
|
|
196
196
|
/* @__PURE__ */ jsxDEV("p", {
|
|
197
|
-
className: "text-muted-foreground
|
|
197
|
+
className: "mt-3 text-muted-foreground text-xs italic",
|
|
198
198
|
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."
|
|
199
199
|
}, undefined, false, undefined, this)
|
|
200
200
|
]
|
|
@@ -205,7 +205,7 @@ function PricingThinkingModal({
|
|
|
205
205
|
className: "card-subtle space-y-2 p-4",
|
|
206
206
|
children: [
|
|
207
207
|
/* @__PURE__ */ jsxDEV("h4", {
|
|
208
|
-
className: "text-sm
|
|
208
|
+
className: "font-semibold text-sm",
|
|
209
209
|
children: metric.name
|
|
210
210
|
}, undefined, false, undefined, this),
|
|
211
211
|
/* @__PURE__ */ jsxDEV("p", {
|
|
@@ -222,7 +222,7 @@ function PricingThinkingModal({
|
|
|
222
222
|
]
|
|
223
223
|
}, undefined, true, undefined, this),
|
|
224
224
|
/* @__PURE__ */ jsxDEV("div", {
|
|
225
|
-
className: "
|
|
225
|
+
className: "space-y-4 border-border border-t pt-6",
|
|
226
226
|
children: [
|
|
227
227
|
/* @__PURE__ */ jsxDEV("p", {
|
|
228
228
|
className: "text-muted-foreground text-xs",
|
|
@@ -11,8 +11,8 @@ import {
|
|
|
11
11
|
MarketingCard,
|
|
12
12
|
MarketingCardContent,
|
|
13
13
|
MarketingCardHeader,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
MarketingCardsSection,
|
|
15
|
+
MarketingCardTitle
|
|
16
16
|
} from "@contractspec/lib.design-system";
|
|
17
17
|
import { VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
18
18
|
import { Muted, Small } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
@@ -23,7 +23,7 @@ function CorePositioningSection() {
|
|
|
23
23
|
align: "center",
|
|
24
24
|
children: [
|
|
25
25
|
/* @__PURE__ */ jsxDEV(H2, {
|
|
26
|
-
className: "text-center text-3xl
|
|
26
|
+
className: "text-center font-bold text-3xl md:text-4xl",
|
|
27
27
|
children: [
|
|
28
28
|
"You keep your app.",
|
|
29
29
|
/* @__PURE__ */ jsxDEV("br", {}, undefined, false, undefined, this),
|
|
@@ -37,7 +37,7 @@ function CorePositioningSection() {
|
|
|
37
37
|
/* @__PURE__ */ jsxDEV("br", {}, undefined, false, undefined, this),
|
|
38
38
|
/* @__PURE__ */ jsxDEV(Small, {
|
|
39
39
|
className: "font-semibold text-violet-400",
|
|
40
|
-
children: "
|
|
40
|
+
children: "Start with the open foundation. Adopt the operating layer when it helps."
|
|
41
41
|
}, undefined, false, undefined, this)
|
|
42
42
|
]
|
|
43
43
|
}, undefined, true, undefined, this),
|
|
@@ -7,11 +7,11 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// src/components/marketing/sections/CtaSection.tsx
|
|
10
|
-
import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
|
|
11
10
|
import {
|
|
12
11
|
analyticsEventNames,
|
|
13
12
|
captureAnalyticsEvent
|
|
14
13
|
} from "@contractspec/bundle.library/libs/posthog/client";
|
|
14
|
+
import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
|
|
15
15
|
import { VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
16
16
|
import { H2, Lead } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
17
17
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
@@ -27,11 +27,11 @@ function CtaSection() {
|
|
|
27
27
|
className: "text-center",
|
|
28
28
|
children: [
|
|
29
29
|
/* @__PURE__ */ jsxDEV(H2, {
|
|
30
|
-
className: "text-4xl
|
|
30
|
+
className: "font-bold text-4xl md:text-5xl",
|
|
31
31
|
children: "Ready to stabilize your codebase?"
|
|
32
32
|
}, undefined, false, undefined, this),
|
|
33
33
|
/* @__PURE__ */ jsxDEV(Lead, {
|
|
34
|
-
className: "text-muted-foreground
|
|
34
|
+
className: "text-lg text-muted-foreground",
|
|
35
35
|
children: "Start with one module. See the difference. Expand at your own pace."
|
|
36
36
|
}, undefined, false, undefined, this),
|
|
37
37
|
/* @__PURE__ */ jsxDEV(VStack, {
|
|
@@ -7,12 +7,12 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
10
|
-
import { cva } from "class-variance-authority";
|
|
11
10
|
import {
|
|
12
11
|
MarketingCardsSection,
|
|
13
12
|
MarketingIconCard
|
|
14
13
|
} from "@contractspec/lib.design-system";
|
|
15
14
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
15
|
+
import { cva } from "class-variance-authority";
|
|
16
16
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
17
17
|
var itemVariants = cva("", {
|
|
18
18
|
variants: {
|
|
@@ -38,7 +38,7 @@ function IconGridSection({
|
|
|
38
38
|
tone,
|
|
39
39
|
padding,
|
|
40
40
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
41
|
-
className: "text-xs
|
|
41
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
42
42
|
children: eyebrow
|
|
43
43
|
}, undefined, false, undefined, this) : null,
|
|
44
44
|
title,
|
|
@@ -70,7 +70,7 @@ var fears = [
|
|
|
70
70
|
},
|
|
71
71
|
{
|
|
72
72
|
title: '"Vendor lock-in / losing ownership"',
|
|
73
|
-
body: "You own the generated code. It's standard TypeScript, standard SQL, standard GraphQL. ContractSpec
|
|
73
|
+
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.",
|
|
74
74
|
icon: Unlock
|
|
75
75
|
},
|
|
76
76
|
{
|
|
@@ -7,11 +7,11 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// src/components/marketing/sections/HeroMarketingSection.tsx
|
|
10
|
-
import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
|
|
11
10
|
import {
|
|
12
11
|
analyticsEventNames,
|
|
13
12
|
captureAnalyticsEvent
|
|
14
13
|
} from "@contractspec/bundle.library/libs/posthog/client";
|
|
14
|
+
import { ButtonLink, MarketingSection } from "@contractspec/lib.design-system";
|
|
15
15
|
import { Box, HStack, VStack } from "@contractspec/lib.ui-kit-web/ui/stack";
|
|
16
16
|
import { H1, Lead, Small } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
17
17
|
import { ChevronRight } from "lucide-react";
|
|
@@ -31,16 +31,16 @@ function HeroMarketingSection() {
|
|
|
31
31
|
/* @__PURE__ */ jsxDEV(Box, {
|
|
32
32
|
as: "div",
|
|
33
33
|
role: "presentation",
|
|
34
|
-
className: "
|
|
34
|
+
className: "inline-flex items-center rounded-full bg-muted px-3 py-1 font-medium text-muted-foreground text-xs uppercase tracking-wider",
|
|
35
35
|
children: "Open Source Core"
|
|
36
36
|
}, undefined, false, undefined, this),
|
|
37
37
|
/* @__PURE__ */ jsxDEV(H1, {
|
|
38
|
-
className: "text-
|
|
38
|
+
className: "text-balance font-bold text-4xl leading-tight md:text-5xl",
|
|
39
39
|
children: "Stabilize your AI-generated code"
|
|
40
40
|
}, undefined, false, undefined, this),
|
|
41
41
|
/* @__PURE__ */ jsxDEV(Lead, {
|
|
42
|
-
className: "text-
|
|
43
|
-
children: "ContractSpec is the
|
|
42
|
+
className: "text-balance text-lg text-muted-foreground md:text-xl",
|
|
43
|
+
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."
|
|
44
44
|
}, undefined, false, undefined, this),
|
|
45
45
|
/* @__PURE__ */ jsxDEV(HStack, {
|
|
46
46
|
gap: "md",
|
|
@@ -77,7 +77,7 @@ function HeroMarketingSection() {
|
|
|
77
77
|
children: heroChips.map((chip) => /* @__PURE__ */ jsxDEV(Box, {
|
|
78
78
|
as: "div",
|
|
79
79
|
role: "presentation",
|
|
80
|
-
className: "
|
|
80
|
+
className: "inline-flex items-center rounded-full border border-border px-3 py-1 text-foreground text-sm",
|
|
81
81
|
children: /* @__PURE__ */ jsxDEV(Small, {
|
|
82
82
|
className: "font-medium",
|
|
83
83
|
children: chip
|
|
@@ -7,12 +7,12 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
10
|
-
import { cva } from "class-variance-authority";
|
|
11
10
|
import {
|
|
12
11
|
MarketingCardsSection,
|
|
13
12
|
MarketingIconCard
|
|
14
13
|
} from "@contractspec/lib.design-system";
|
|
15
14
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
15
|
+
import { cva } from "class-variance-authority";
|
|
16
16
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
17
17
|
var itemVariants = cva("", {
|
|
18
18
|
variants: {
|
|
@@ -38,7 +38,7 @@ function IconGridSection({
|
|
|
38
38
|
tone,
|
|
39
39
|
padding,
|
|
40
40
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
41
|
-
className: "text-xs
|
|
41
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
42
42
|
children: eyebrow
|
|
43
43
|
}, undefined, false, undefined, this) : null,
|
|
44
44
|
title,
|
|
@@ -7,12 +7,12 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
10
|
-
import { cva } from "class-variance-authority";
|
|
11
10
|
import {
|
|
12
11
|
MarketingCardsSection,
|
|
13
12
|
MarketingIconCard
|
|
14
13
|
} from "@contractspec/lib.design-system";
|
|
15
14
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
15
|
+
import { cva } from "class-variance-authority";
|
|
16
16
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
17
17
|
var itemVariants = cva("", {
|
|
18
18
|
variants: {
|
|
@@ -38,7 +38,7 @@ function IconGridSection({
|
|
|
38
38
|
tone,
|
|
39
39
|
padding,
|
|
40
40
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
41
|
-
className: "text-xs
|
|
41
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
42
42
|
children: eyebrow
|
|
43
43
|
}, undefined, false, undefined, this) : null,
|
|
44
44
|
title,
|
|
@@ -7,12 +7,12 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
10
|
-
import { cva } from "class-variance-authority";
|
|
11
10
|
import {
|
|
12
11
|
MarketingCardsSection,
|
|
13
12
|
MarketingIconCard
|
|
14
13
|
} from "@contractspec/lib.design-system";
|
|
15
14
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
15
|
+
import { cva } from "class-variance-authority";
|
|
16
16
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
17
17
|
var itemVariants = cva("", {
|
|
18
18
|
variants: {
|
|
@@ -38,7 +38,7 @@ function IconGridSection({
|
|
|
38
38
|
tone,
|
|
39
39
|
padding,
|
|
40
40
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
41
|
-
className: "text-xs
|
|
41
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
42
42
|
children: eyebrow
|
|
43
43
|
}, undefined, false, undefined, this) : null,
|
|
44
44
|
title,
|
|
@@ -7,12 +7,12 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
10
|
-
import { cva } from "class-variance-authority";
|
|
11
10
|
import {
|
|
12
11
|
MarketingCardsSection,
|
|
13
12
|
MarketingIconCard
|
|
14
13
|
} from "@contractspec/lib.design-system";
|
|
15
14
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
15
|
+
import { cva } from "class-variance-authority";
|
|
16
16
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
17
17
|
var itemVariants = cva("", {
|
|
18
18
|
variants: {
|
|
@@ -38,7 +38,7 @@ function IconGridSection({
|
|
|
38
38
|
tone,
|
|
39
39
|
padding,
|
|
40
40
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
41
|
-
className: "text-xs
|
|
41
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
42
42
|
children: eyebrow
|
|
43
43
|
}, undefined, false, undefined, this) : null,
|
|
44
44
|
title,
|
|
@@ -7,12 +7,12 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// src/components/marketing/sections/IconGridSection.tsx
|
|
10
|
-
import { cva } from "class-variance-authority";
|
|
11
10
|
import {
|
|
12
11
|
MarketingCardsSection,
|
|
13
12
|
MarketingIconCard
|
|
14
13
|
} from "@contractspec/lib.design-system";
|
|
15
14
|
import { Muted } from "@contractspec/lib.ui-kit-web/ui/typography";
|
|
15
|
+
import { cva } from "class-variance-authority";
|
|
16
16
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
17
17
|
var itemVariants = cva("", {
|
|
18
18
|
variants: {
|
|
@@ -38,7 +38,7 @@ function IconGridSection({
|
|
|
38
38
|
tone,
|
|
39
39
|
padding,
|
|
40
40
|
eyebrow: eyebrow ? /* @__PURE__ */ jsxDEV(Muted, {
|
|
41
|
-
className: "text-xs
|
|
41
|
+
className: "font-semibold text-xs uppercase tracking-[0.2em]",
|
|
42
42
|
children: eyebrow
|
|
43
43
|
}, undefined, false, undefined, this) : null,
|
|
44
44
|
title,
|
|
@@ -92,9 +92,9 @@ function StepsSection() {
|
|
|
92
92
|
iconRole: "listing",
|
|
93
93
|
items: steps.map((item) => ({
|
|
94
94
|
icon: ({ className }) => /* @__PURE__ */ jsxDEV2("div", {
|
|
95
|
-
className: `
|
|
95
|
+
className: `flex h-10 w-10 items-center justify-center rounded-lg bg-primary/15 ${className ?? ""}`,
|
|
96
96
|
children: /* @__PURE__ */ jsxDEV2("span", {
|
|
97
|
-
className: "text-primary text-sm
|
|
97
|
+
className: "font-semibold text-primary text-sm",
|
|
98
98
|
children: item.step
|
|
99
99
|
}, undefined, false, undefined, this)
|
|
100
100
|
}, undefined, false, undefined, this),
|
|
@@ -7,9 +7,8 @@ var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require
|
|
|
7
7
|
});
|
|
8
8
|
|
|
9
9
|
// src/components/marketing/studio-signup-section.tsx
|
|
10
|
+
import { ArrowRight, Sparkles } from "lucide-react";
|
|
10
11
|
import Link from "next/link";
|
|
11
|
-
import { ArrowRight, Rocket } from "lucide-react";
|
|
12
|
-
import { Button } from "@contractspec/lib.design-system";
|
|
13
12
|
import { jsxDEV } from "react/jsx-dev-runtime";
|
|
14
13
|
"use client";
|
|
15
14
|
var studioUrl = "https://www.contractspec.studio";
|
|
@@ -20,62 +19,47 @@ function StudioSignupSection({
|
|
|
20
19
|
const isCompact = variant === "compact";
|
|
21
20
|
return /* @__PURE__ */ jsxDEV("div", {
|
|
22
21
|
id: "studio-signup",
|
|
23
|
-
className: isCompact ? "space-y-
|
|
22
|
+
className: `${isCompact ? "space-y-5 rounded-[28px] border border-border bg-card p-6" : "editorial-panel space-y-6"}`,
|
|
24
23
|
children: [
|
|
25
24
|
/* @__PURE__ */ jsxDEV("div", {
|
|
26
25
|
className: "space-y-4",
|
|
27
26
|
children: [
|
|
28
27
|
/* @__PURE__ */ jsxDEV("div", {
|
|
29
|
-
className: "
|
|
28
|
+
className: "badge",
|
|
30
29
|
children: [
|
|
31
|
-
/* @__PURE__ */ jsxDEV(
|
|
32
|
-
size: 14
|
|
33
|
-
className: "text-violet-300"
|
|
30
|
+
/* @__PURE__ */ jsxDEV(Sparkles, {
|
|
31
|
+
size: 14
|
|
34
32
|
}, undefined, false, undefined, this),
|
|
35
|
-
|
|
36
|
-
className: "text-sm font-medium text-violet-300",
|
|
37
|
-
children: "ContractSpec Studio"
|
|
38
|
-
}, undefined, false, undefined, this)
|
|
33
|
+
"Studio on top"
|
|
39
34
|
]
|
|
40
35
|
}, undefined, true, undefined, this),
|
|
41
36
|
/* @__PURE__ */ jsxDEV("h2", {
|
|
42
|
-
className: isCompact ? "text-
|
|
43
|
-
children: "
|
|
44
|
-
}, undefined, false, undefined, this),
|
|
45
|
-
/* @__PURE__ */ jsxDEV("p", {
|
|
46
|
-
className: "text-muted-foreground text-sm",
|
|
47
|
-
children: "The AI-powered product decision engine that turns product signals into spec-first deliverables."
|
|
37
|
+
className: isCompact ? "font-serif text-3xl tracking-[-0.04em]" : "font-serif text-4xl tracking-[-0.04em]",
|
|
38
|
+
children: "See the operating layer built on top of the open system."
|
|
48
39
|
}, undefined, false, undefined, this),
|
|
49
40
|
/* @__PURE__ */ jsxDEV("p", {
|
|
50
|
-
className: "text-muted-foreground text-
|
|
51
|
-
children: "
|
|
41
|
+
className: "text-muted-foreground text-sm leading-7",
|
|
42
|
+
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."
|
|
52
43
|
}, undefined, false, undefined, this)
|
|
53
44
|
]
|
|
54
45
|
}, undefined, true, undefined, this),
|
|
55
46
|
/* @__PURE__ */ jsxDEV("div", {
|
|
56
|
-
className: "
|
|
47
|
+
className: "grid gap-3 sm:grid-cols-2",
|
|
57
48
|
children: [
|
|
58
|
-
/* @__PURE__ */ jsxDEV(
|
|
59
|
-
|
|
60
|
-
className: "
|
|
61
|
-
children:
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
"
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
asChild: true,
|
|
73
|
-
variant: "outline",
|
|
74
|
-
className: "w-full sm:w-auto",
|
|
75
|
-
children: /* @__PURE__ */ jsxDEV(Link, {
|
|
76
|
-
href: studioDocsUrl,
|
|
77
|
-
children: "Read Studio Docs"
|
|
78
|
-
}, undefined, false, undefined, this)
|
|
49
|
+
/* @__PURE__ */ jsxDEV(Link, {
|
|
50
|
+
href: studioUrl,
|
|
51
|
+
className: "btn-primary",
|
|
52
|
+
children: [
|
|
53
|
+
"Explore Studio ",
|
|
54
|
+
/* @__PURE__ */ jsxDEV(ArrowRight, {
|
|
55
|
+
className: "ml-2 h-4 w-4"
|
|
56
|
+
}, undefined, false, undefined, this)
|
|
57
|
+
]
|
|
58
|
+
}, undefined, true, undefined, this),
|
|
59
|
+
/* @__PURE__ */ jsxDEV(Link, {
|
|
60
|
+
href: studioDocsUrl,
|
|
61
|
+
className: "btn-ghost",
|
|
62
|
+
children: "Read Studio docs"
|
|
79
63
|
}, undefined, false, undefined, this)
|
|
80
64
|
]
|
|
81
65
|
}, undefined, true, undefined, this)
|