@mdxui/named 6.4.0 → 8.0.0
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/dist/components/index.d.ts +4 -52
- package/dist/components/index.js +242 -621
- package/dist/components/index.js.map +1 -1
- package/dist/index.d.ts +2 -3
- package/dist/index.js +243 -622
- package/dist/index.js.map +1 -1
- package/dist/schemas/index.d.ts +2 -10
- package/dist/schemas/index.js +3 -73
- package/dist/schemas/index.js.map +1 -1
- package/dist/shared/index.d.ts +46 -35
- package/dist/shared/index.js +99 -208
- package/dist/shared/index.js.map +1 -1
- package/dist/styles.css +507 -13
- package/dist/view/index.d.ts +14 -58
- package/dist/view/index.js +906 -668
- package/dist/view/index.js.map +1 -1
- package/package.json +7 -6
- package/dist/problem-B2-XszSB.d.ts +0 -22
package/dist/view/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
// src/view/view.tsx
|
|
2
|
-
import { DialectShell
|
|
2
|
+
import { DialectShell } from "@mdxui/dialect";
|
|
3
3
|
|
|
4
|
-
// src/components/hero/hero.tsx
|
|
4
|
+
// src/templates/studio/components/hero/hero.tsx
|
|
5
5
|
import Image from "next/image";
|
|
6
6
|
import { HiChevronRight } from "react-icons/hi";
|
|
7
7
|
|
|
@@ -73,6 +73,26 @@ import { twMerge } from "tailwind-merge";
|
|
|
73
73
|
function cn(...inputs) {
|
|
74
74
|
return twMerge(clsx(inputs));
|
|
75
75
|
}
|
|
76
|
+
var isRenderableSrc = (s) => /^(https?:)?\/\//i.test(s.trim()) || /^data:image\//i.test(s.trim());
|
|
77
|
+
var BRAND_LABELS = {
|
|
78
|
+
github: "GitHub",
|
|
79
|
+
gitlab: "GitLab",
|
|
80
|
+
linkedin: "LinkedIn",
|
|
81
|
+
youtube: "YouTube",
|
|
82
|
+
whatsapp: "WhatsApp",
|
|
83
|
+
hubspot: "HubSpot",
|
|
84
|
+
quickbooks: "QuickBooks",
|
|
85
|
+
typescript: "TypeScript",
|
|
86
|
+
javascript: "JavaScript",
|
|
87
|
+
postgresql: "PostgreSQL",
|
|
88
|
+
mongodb: "MongoDB",
|
|
89
|
+
graphql: "GraphQL",
|
|
90
|
+
openai: "OpenAI"
|
|
91
|
+
};
|
|
92
|
+
var brandLabel = (s) => {
|
|
93
|
+
const t = s.trim();
|
|
94
|
+
return BRAND_LABELS[t.toLowerCase()] ?? t.charAt(0).toUpperCase() + t.slice(1);
|
|
95
|
+
};
|
|
76
96
|
|
|
77
97
|
// src/shared/marquee/marquee.tsx
|
|
78
98
|
import { jsx as jsx2 } from "react/jsx-runtime";
|
|
@@ -114,29 +134,41 @@ function Marquee({
|
|
|
114
134
|
);
|
|
115
135
|
}
|
|
116
136
|
|
|
117
|
-
// src/
|
|
118
|
-
import
|
|
119
|
-
import { jsx as jsx3
|
|
120
|
-
var
|
|
121
|
-
var
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
quickbooks: "QuickBooks",
|
|
129
|
-
typescript: "TypeScript",
|
|
130
|
-
javascript: "JavaScript",
|
|
131
|
-
postgresql: "PostgreSQL",
|
|
132
|
-
mongodb: "MongoDB",
|
|
133
|
-
graphql: "GraphQL",
|
|
134
|
-
openai: "OpenAI"
|
|
137
|
+
// src/templates/studio/ui/button/button.tsx
|
|
138
|
+
import * as React from "react";
|
|
139
|
+
import { jsx as jsx3 } from "react/jsx-runtime";
|
|
140
|
+
var baseClasses = "inline-flex items-center justify-center gap-2 whitespace-nowrap text-sm font-medium transition-all duration-200 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-ring) disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer";
|
|
141
|
+
var variantClasses = {
|
|
142
|
+
default: "btn-gradient-dark text-(--color-btn-primary-fg) shadow-md hover:shadow-lg rounded-full",
|
|
143
|
+
secondary: "bg-(--color-surface-raised) text-(--color-fg) border border-(--color-border) shadow-sm hover:shadow-md rounded-full",
|
|
144
|
+
outline: "border border-(--color-border) bg-transparent text-(--color-fg) hover:bg-(--color-hover) rounded-full",
|
|
145
|
+
ghost: "text-(--color-fg) hover:bg-(--color-hover) rounded-full",
|
|
146
|
+
link: "text-(--color-fg) underline-offset-4 hover:underline",
|
|
147
|
+
accent: "bg-(--color-accent-strong) text-(--color-accent-fg) shadow-md hover:opacity-90 hover:shadow-lg rounded-full"
|
|
135
148
|
};
|
|
136
|
-
var
|
|
137
|
-
|
|
138
|
-
|
|
149
|
+
var sizeClasses = {
|
|
150
|
+
default: "h-12 px-6 py-3 text-base",
|
|
151
|
+
sm: "h-10 px-4 py-2 text-sm",
|
|
152
|
+
lg: "h-14 px-8 py-4 text-lg",
|
|
153
|
+
icon: "h-12 w-12"
|
|
139
154
|
};
|
|
155
|
+
var Button = React.forwardRef(
|
|
156
|
+
({ className, variant = "default", size = "default", asChild = false, children, ...props }, ref) => {
|
|
157
|
+
const classes = cn(baseClasses, variantClasses[variant], sizeClasses[size], className);
|
|
158
|
+
if (asChild && React.isValidElement(children)) {
|
|
159
|
+
const child = children;
|
|
160
|
+
return React.cloneElement(child, {
|
|
161
|
+
...props,
|
|
162
|
+
className: cn(classes, child.props.className)
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
return /* @__PURE__ */ jsx3("button", { ref, className: classes, ...props, children });
|
|
166
|
+
}
|
|
167
|
+
);
|
|
168
|
+
Button.displayName = "Button";
|
|
169
|
+
|
|
170
|
+
// src/templates/studio/components/hero/hero.tsx
|
|
171
|
+
import { jsx as jsx4, jsxs } from "react/jsx-runtime";
|
|
140
172
|
function Hero({
|
|
141
173
|
badgeEmoji = "",
|
|
142
174
|
badgeText = "Meet Priya",
|
|
@@ -162,10 +194,10 @@ function Hero({
|
|
|
162
194
|
className
|
|
163
195
|
}) {
|
|
164
196
|
const hasHeroImage = !!rightImageSrc && isRenderableSrc(rightImageSrc);
|
|
165
|
-
return /* @__PURE__ */
|
|
197
|
+
return /* @__PURE__ */ jsx4("section", { className: cn("relative py-12 md:py-16 px-6 lg:px-12 bg-background", className), children: /* @__PURE__ */ jsxs("div", { className: "max-w-7xl mx-auto p-0 sm:p-16 rounded-none sm:rounded-3xl md:[background:linear-gradient(180deg,var(--card)_0%,transparent_83.55%)]", children: [
|
|
166
198
|
/* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 lg:gap-16 items-start mb-16 lg:mb-20", hasHeroImage && "lg:grid-cols-2"), children: [
|
|
167
199
|
/* @__PURE__ */ jsxs("div", { className: "space-y-6 lg:pt-8", children: [
|
|
168
|
-
/* @__PURE__ */
|
|
200
|
+
/* @__PURE__ */ jsx4(ScrollReveal, { direction: "down", delay: 0.1, children: /* @__PURE__ */ jsx4("div", { className: "inline-block", children: /* @__PURE__ */ jsxs(
|
|
169
201
|
"a",
|
|
170
202
|
{
|
|
171
203
|
href: badgeHref,
|
|
@@ -173,19 +205,19 @@ function Hero({
|
|
|
173
205
|
rel: "noopener noreferrer",
|
|
174
206
|
className: "inline-flex items-center gap-2.5 px-4 py-2 rounded-full transition-colors border border-border bg-card",
|
|
175
207
|
children: [
|
|
176
|
-
/* @__PURE__ */
|
|
177
|
-
/* @__PURE__ */
|
|
208
|
+
/* @__PURE__ */ jsx4("span", { className: "text-base", children: badgeEmoji }),
|
|
209
|
+
/* @__PURE__ */ jsx4("p", { className: "font-normal text-sm tracking-wide leading-snug text-foreground uppercase", children: badgeText })
|
|
178
210
|
]
|
|
179
211
|
}
|
|
180
212
|
) }) }),
|
|
181
|
-
/* @__PURE__ */
|
|
182
|
-
/* @__PURE__ */
|
|
183
|
-
/* @__PURE__ */
|
|
213
|
+
/* @__PURE__ */ jsx4(ScrollReveal, { direction: "up", delay: 0.2, children: /* @__PURE__ */ jsx4("h1", { className: "font-halant font-normal text-[clamp(56px,6vw,72px)] leading-tight tracking-tight text-foreground", children: heading }) }),
|
|
214
|
+
/* @__PURE__ */ jsx4(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx4("p", { className: "text-lg leading-relaxed max-w-lg", children: description }) }),
|
|
215
|
+
/* @__PURE__ */ jsx4(ScrollReveal, { direction: "up", delay: 0.4, trigger: "mount", children: /* @__PURE__ */ jsx4("div", { className: "flex flex-col sm:flex-row gap-3 pt-4", children: /* @__PURE__ */ jsx4(Button, { asChild: true, variant: ctaVariant, children: /* @__PURE__ */ jsxs("a", { href: ctaHref, children: [
|
|
184
216
|
ctaText,
|
|
185
|
-
/* @__PURE__ */
|
|
217
|
+
/* @__PURE__ */ jsx4(HiChevronRight, { className: "w-4 h-4" })
|
|
186
218
|
] }) }) }) })
|
|
187
219
|
] }),
|
|
188
|
-
hasHeroImage && /* @__PURE__ */
|
|
220
|
+
hasHeroImage && /* @__PURE__ */ jsx4(ScrollReveal, { direction: "right", delay: 0.2, children: /* @__PURE__ */ jsx4("div", { className: "relative flex justify-center lg:justify-end", children: /* @__PURE__ */ jsx4("div", { className: "relative w-full max-w-lg", children: /* @__PURE__ */ jsx4("div", { className: "relative w-full aspect-square", children: /* @__PURE__ */ jsx4(
|
|
189
221
|
Image,
|
|
190
222
|
{
|
|
191
223
|
src: rightImageSrc,
|
|
@@ -199,24 +231,24 @@ function Hero({
|
|
|
199
231
|
) }) }) }) })
|
|
200
232
|
] }),
|
|
201
233
|
/* @__PURE__ */ jsxs(ScrollReveal, { direction: "up", delay: 0.4, trigger: "mount", children: [
|
|
202
|
-
/* @__PURE__ */
|
|
234
|
+
/* @__PURE__ */ jsx4("div", { className: "mt-12", children: /* @__PURE__ */ jsx4("p", { className: "text-base text-muted-foreground text-center", children: marqueeTitle }) }),
|
|
203
235
|
/* @__PURE__ */ jsxs("div", { className: "relative mt-4 sm:mt-6", children: [
|
|
204
|
-
/* @__PURE__ */
|
|
236
|
+
/* @__PURE__ */ jsx4(
|
|
205
237
|
"div",
|
|
206
238
|
{
|
|
207
239
|
className: "pointer-events-none absolute inset-y-0 left-0 w-20 sm:w-28 z-10",
|
|
208
240
|
style: { background: "linear-gradient(to right, var(--background), transparent)" }
|
|
209
241
|
}
|
|
210
242
|
),
|
|
211
|
-
/* @__PURE__ */
|
|
243
|
+
/* @__PURE__ */ jsx4(
|
|
212
244
|
"div",
|
|
213
245
|
{
|
|
214
246
|
className: "pointer-events-none absolute inset-y-0 right-0 w-20 sm:w-28 z-10",
|
|
215
247
|
style: { background: "linear-gradient(to left, var(--background), transparent)" }
|
|
216
248
|
}
|
|
217
249
|
),
|
|
218
|
-
/* @__PURE__ */
|
|
219
|
-
(src, i) => isRenderableSrc(src) ? /* @__PURE__ */
|
|
250
|
+
/* @__PURE__ */ jsx4(Marquee, { className: "relative z-0 py-2 [--gap:1.25rem] sm:[--gap:3rem]", children: marqueeImages.map(
|
|
251
|
+
(src, i) => isRenderableSrc(src) ? /* @__PURE__ */ jsx4(
|
|
220
252
|
"img",
|
|
221
253
|
{
|
|
222
254
|
src,
|
|
@@ -224,7 +256,7 @@ function Hero({
|
|
|
224
256
|
className: "h-16 w-16 rounded-xl bg-card p-2 object-contain"
|
|
225
257
|
},
|
|
226
258
|
`${src}-${i}`
|
|
227
|
-
) : /* @__PURE__ */
|
|
259
|
+
) : /* @__PURE__ */ jsx4(
|
|
228
260
|
"span",
|
|
229
261
|
{
|
|
230
262
|
className: "flex h-16 items-center whitespace-nowrap rounded-xl bg-card px-4 text-sm font-semibold tracking-tight text-foreground/70",
|
|
@@ -238,61 +270,43 @@ function Hero({
|
|
|
238
270
|
] }) });
|
|
239
271
|
}
|
|
240
272
|
|
|
241
|
-
// src/components/features/features.tsx
|
|
273
|
+
// src/templates/studio/components/features/features.tsx
|
|
242
274
|
import { CheckCircle } from "lucide-react";
|
|
243
275
|
|
|
244
276
|
// src/shared/code-window/code-window.tsx
|
|
245
|
-
import {
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
if (
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
prevWasCode = false;
|
|
275
|
-
continue;
|
|
276
|
-
}
|
|
277
|
-
let highlighted = line;
|
|
278
|
-
highlighted = highlighted.replace(
|
|
279
|
-
/\$\.(\w+)\.(\w+)/g,
|
|
280
|
-
'<span class="text-[#79c0ff]">$</span>.<span class="text-[#d2a8ff]">$1</span>.<span class="text-[#ffa657]">$2</span>'
|
|
281
|
-
);
|
|
282
|
-
highlighted = highlighted.replace(/(\w+):/g, '<span class="text-[#79c0ff]">$1</span>:');
|
|
283
|
-
highlighted = highlighted.replace(/'([^']*)'/g, `<span class="text-[#a5d6ff]">'$1'</span>`);
|
|
284
|
-
highlighted = highlighted.replace(/\b(\d+)\b/g, '<span class="text-[#79c0ff]">$1</span>');
|
|
285
|
-
result.push(/* @__PURE__ */ jsx4("div", { dangerouslySetInnerHTML: { __html: highlighted } }, i));
|
|
286
|
-
prevWasComment = false;
|
|
287
|
-
prevWasCode = true;
|
|
288
|
-
}
|
|
289
|
-
return result;
|
|
290
|
-
};
|
|
291
|
-
return /* @__PURE__ */ jsx4("div", { className: `w-full h-full bg-[#0d1117] rounded-lg overflow-hidden ${className ?? ""}`, children: /* @__PURE__ */ jsx4("div", { className: "flex-1 overflow-auto p-6 lg:p-8", children: /* @__PURE__ */ jsx4("pre", { className: "text-sm lg:text-sm leading-relaxed font-mono text-[#e6edf3]", children: highlightCode(code) }) }) });
|
|
277
|
+
import { useEffect, useState } from "react";
|
|
278
|
+
import { jsx as jsx5 } from "react/jsx-runtime";
|
|
279
|
+
function CodeWindow({
|
|
280
|
+
code,
|
|
281
|
+
language = "typescript",
|
|
282
|
+
themes = "github-dark-default",
|
|
283
|
+
className
|
|
284
|
+
}) {
|
|
285
|
+
const [html, setHtml] = useState(null);
|
|
286
|
+
const themesKey = typeof themes === "string" ? themes : `${themes.light}/${themes.dark}`;
|
|
287
|
+
useEffect(() => {
|
|
288
|
+
let alive = true;
|
|
289
|
+
import("shiki").then(
|
|
290
|
+
({ codeToHtml }) => codeToHtml(
|
|
291
|
+
code,
|
|
292
|
+
typeof themes === "string" ? { lang: language, theme: themes } : { lang: language, themes, defaultColor: "light" }
|
|
293
|
+
)
|
|
294
|
+
).then((out) => {
|
|
295
|
+
if (alive) setHtml(out);
|
|
296
|
+
}).catch(() => {
|
|
297
|
+
});
|
|
298
|
+
return () => {
|
|
299
|
+
alive = false;
|
|
300
|
+
};
|
|
301
|
+
}, [code, language, themesKey]);
|
|
302
|
+
return /* @__PURE__ */ jsx5("div", { className: cn("w-full h-full overflow-auto font-mono", className), children: html ? (
|
|
303
|
+
// biome-ignore lint/security/noDangerouslySetInnerHtml: shiki output; input is escaped by shiki
|
|
304
|
+
/* @__PURE__ */ jsx5("div", { dangerouslySetInnerHTML: { __html: html } })
|
|
305
|
+
) : /* @__PURE__ */ jsx5("pre", { className: "m-0 whitespace-pre", children: /* @__PURE__ */ jsx5("code", { children: code }) }) });
|
|
292
306
|
}
|
|
293
307
|
|
|
294
|
-
// src/components/features/features.tsx
|
|
295
|
-
import { jsx as
|
|
308
|
+
// src/templates/studio/components/features/features.tsx
|
|
309
|
+
import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
296
310
|
var defaultFeatures = [
|
|
297
311
|
{
|
|
298
312
|
title: "Automatic Issue Triage",
|
|
@@ -365,30 +379,37 @@ $.Priya.statusReport({
|
|
|
365
379
|
}
|
|
366
380
|
];
|
|
367
381
|
function Features({ heading = "How It Works", description = "Priya handles the repetitive work so you can focus on what matters. Here's how she automates your entire product workflow.", features = defaultFeatures, className }) {
|
|
368
|
-
return /* @__PURE__ */
|
|
369
|
-
/* @__PURE__ */
|
|
370
|
-
/* @__PURE__ */
|
|
371
|
-
/* @__PURE__ */
|
|
382
|
+
return /* @__PURE__ */ jsx6("section", { id: "features", className: cn("flex justify-center items-center pb-0 md:pb-10 bg-background", className), children: /* @__PURE__ */ jsxs2("div", { className: "features-gradient flex flex-col items-center w-full relative overflow-visible gap-16 h-min max-w-[1400px] py-10 sm:py-20", style: { borderRadius: "var(--radius-section, 36px)" }, children: [
|
|
383
|
+
/* @__PURE__ */ jsx6(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs2("div", { className: "text-center w-full px-4 md:px-6 space-y-4", children: [
|
|
384
|
+
/* @__PURE__ */ jsx6("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground", children: heading }),
|
|
385
|
+
/* @__PURE__ */ jsx6("p", { className: "text-base md:text-lg text-muted-foreground max-w-2xl mx-auto", children: description })
|
|
372
386
|
] }) }),
|
|
373
|
-
/* @__PURE__ */
|
|
387
|
+
/* @__PURE__ */ jsx6("div", { className: "w-full px-4 lg:px-18 space-y-10", children: features.map((feature, index) => /* @__PURE__ */ jsx6(ScrollReveal, { direction: "up", delay: index * 0.1, children: /* @__PURE__ */ jsxs2("div", { className: "grid md:grid-cols-2 overflow-hidden bg-card w-full rounded-3xl feature-card-shadow opacity-100 border border-border", children: [
|
|
374
388
|
/* @__PURE__ */ jsxs2("div", { className: "flex flex-col px-4 py-8 lg:px-8 lg:py-12 xl:px-12 xl:py-20", children: [
|
|
375
|
-
/* @__PURE__ */
|
|
376
|
-
/* @__PURE__ */
|
|
377
|
-
/* @__PURE__ */
|
|
378
|
-
/* @__PURE__ */
|
|
379
|
-
/* @__PURE__ */
|
|
380
|
-
/* @__PURE__ */
|
|
389
|
+
/* @__PURE__ */ jsx6("div", { className: "mb-4", children: /* @__PURE__ */ jsx6("span", { className: "inline-flex size-10 items-center justify-center rounded-lg font-mono text-sm font-medium bg-card dark:bg-muted border border-border dark:border-border text-foreground", children: feature.badge }) }),
|
|
390
|
+
/* @__PURE__ */ jsx6("h3", { className: "mb-3 text-2xl font-medium sm:mb-5 md:text-3xl text-foreground", children: feature.title }),
|
|
391
|
+
/* @__PURE__ */ jsx6("div", { className: "mb-8 text-sm sm:mb-10 md:text-base text-muted-foreground", children: feature.description }),
|
|
392
|
+
/* @__PURE__ */ jsx6("ul", { className: "space-y-2 sm:space-y-3", children: feature.items.map((item, itemIndex) => /* @__PURE__ */ jsxs2("li", { className: "flex gap-x-3 items-start", children: [
|
|
393
|
+
/* @__PURE__ */ jsx6(CheckCircle, { className: "mt-1 size-4 shrink-0 text-primary" }),
|
|
394
|
+
/* @__PURE__ */ jsx6("p", { className: "text-sm md:text-base text-foreground", children: item.text })
|
|
381
395
|
] }, itemIndex)) })
|
|
382
396
|
] }),
|
|
383
|
-
/* @__PURE__ */
|
|
397
|
+
/* @__PURE__ */ jsx6("div", { className: "relative order-last md:order-last h-96 md:h-[500px] p-4 md:p-8 lg:p-10", children: /* @__PURE__ */ jsx6(
|
|
398
|
+
CodeWindow,
|
|
399
|
+
{
|
|
400
|
+
code: feature.code,
|
|
401
|
+
language: feature.language,
|
|
402
|
+
themes: "github-dark-default",
|
|
403
|
+
className: "bg-[#0d1117] rounded-lg p-6 lg:p-8 text-sm leading-relaxed text-[#e6edf3]"
|
|
404
|
+
}
|
|
405
|
+
) })
|
|
384
406
|
] }) }, index)) })
|
|
385
407
|
] }) });
|
|
386
408
|
}
|
|
387
409
|
|
|
388
|
-
// src/components/pricing/pricing.tsx
|
|
410
|
+
// src/templates/studio/components/pricing/pricing.tsx
|
|
389
411
|
import { Check } from "lucide-react";
|
|
390
|
-
import {
|
|
391
|
-
import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
412
|
+
import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
392
413
|
var defaultFeatures2 = [
|
|
393
414
|
{ text: "Automated backups" },
|
|
394
415
|
{ text: "24/7 support" },
|
|
@@ -414,41 +435,40 @@ function Pricing({
|
|
|
414
435
|
securityNote = "Priya only accesses GitHub Issues and Projects\u2014she cannot read your code or secrets.",
|
|
415
436
|
className
|
|
416
437
|
}) {
|
|
417
|
-
return /* @__PURE__ */
|
|
418
|
-
/* @__PURE__ */
|
|
419
|
-
/* @__PURE__ */
|
|
420
|
-
/* @__PURE__ */
|
|
438
|
+
return /* @__PURE__ */ jsx7("section", { id: "pricing", className: cn(`pt-12 md:pt-16 pb-10 sm:pb-20 ${backgroundColor}`, className), children: /* @__PURE__ */ jsxs3("div", { className: "max-w-7xl mx-auto p-6 sm:p-16 rounded-none sm:rounded-3xl pricing-gradient", children: [
|
|
439
|
+
/* @__PURE__ */ jsx7(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs3("div", { className: "text-center my-16 sm:my-12", children: [
|
|
440
|
+
/* @__PURE__ */ jsx7("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground mb-4", children: heading }),
|
|
441
|
+
/* @__PURE__ */ jsx7("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
|
|
421
442
|
] }) }),
|
|
422
|
-
/* @__PURE__ */
|
|
443
|
+
/* @__PURE__ */ jsx7(ScrollReveal, { direction: "up", delay: 0.2, children: /* @__PURE__ */ jsxs3("div", { className: "bg-card mx-auto flex w-full md:max-w-md lg:max-w-3xl flex-col rounded-3xl border border-border feature-card-shadow p-6 md:p-8 px-6", children: [
|
|
423
444
|
/* @__PURE__ */ jsxs3("div", { className: "text-center", children: [
|
|
424
445
|
/* @__PURE__ */ jsxs3("div", { className: "flex justify-start sm:justify-center items-baseline", children: [
|
|
425
|
-
/* @__PURE__ */
|
|
426
|
-
/* @__PURE__ */
|
|
446
|
+
/* @__PURE__ */ jsx7("span", { className: "text-3xl font-semibold text-foreground", children: price }),
|
|
447
|
+
/* @__PURE__ */ jsx7("span", { className: "text-muted-foreground ml-2 text-sm", children: priceUnit })
|
|
427
448
|
] }),
|
|
428
|
-
trialText && /* @__PURE__ */
|
|
429
|
-
/* @__PURE__ */
|
|
449
|
+
trialText && /* @__PURE__ */ jsx7("p", { className: "text-left sm:text-center text-muted-foreground mt-3 text-sm", children: trialText }),
|
|
450
|
+
/* @__PURE__ */ jsx7(Button, { asChild: true, variant: "default", className: "mt-5 w-full md:w-64", children: /* @__PURE__ */ jsx7("a", { href: ctaHref, children: ctaText }) })
|
|
430
451
|
] }),
|
|
431
452
|
/* @__PURE__ */ jsxs3("div", { className: "mt-8", children: [
|
|
432
|
-
/* @__PURE__ */
|
|
433
|
-
/* @__PURE__ */
|
|
434
|
-
/* @__PURE__ */
|
|
435
|
-
/* @__PURE__ */
|
|
453
|
+
/* @__PURE__ */ jsx7("p", { className: "text-left sm:text-center text-lg font-semibold text-foreground mb-4", children: featuresHeading }),
|
|
454
|
+
/* @__PURE__ */ jsx7("ul", { className: "grid gap-y-3 gap-x-6 md:grid-cols-2 lg:grid-cols-3 ", children: features.map((feature, index) => /* @__PURE__ */ jsxs3("li", { className: "flex items-start text-left", children: [
|
|
455
|
+
/* @__PURE__ */ jsx7(Check, { className: "text-primary mr-2 size-4 shrink-0" }),
|
|
456
|
+
/* @__PURE__ */ jsx7("span", { className: "text-foreground text-sm", children: feature.text })
|
|
436
457
|
] }, index)) })
|
|
437
458
|
] })
|
|
438
459
|
] }) }),
|
|
439
|
-
securityNote && /* @__PURE__ */
|
|
440
|
-
/* @__PURE__ */
|
|
460
|
+
securityNote && /* @__PURE__ */ jsx7(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx7("div", { className: "text-center mt-8", children: /* @__PURE__ */ jsxs3("p", { className: "text-sm text-muted-foreground", children: [
|
|
461
|
+
/* @__PURE__ */ jsx7("strong", { children: "Your code stays private." }),
|
|
441
462
|
" ",
|
|
442
463
|
securityNote
|
|
443
464
|
] }) }) })
|
|
444
465
|
] }) });
|
|
445
466
|
}
|
|
446
467
|
|
|
447
|
-
// src/components/pricing/pricing-tiers.tsx
|
|
468
|
+
// src/templates/studio/components/pricing/pricing-tiers.tsx
|
|
448
469
|
import { Check as Check2 } from "lucide-react";
|
|
449
470
|
import Image2 from "next/image";
|
|
450
|
-
import {
|
|
451
|
-
import { Fragment, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
471
|
+
import { Fragment, jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
452
472
|
var defaultTiers = [
|
|
453
473
|
{
|
|
454
474
|
title: "Business",
|
|
@@ -490,59 +510,58 @@ function PricingTiers({
|
|
|
490
510
|
securityNote = "Priya only accesses GitHub Issues and Projects\u2014she cannot read your code or secrets.",
|
|
491
511
|
className
|
|
492
512
|
}) {
|
|
493
|
-
return /* @__PURE__ */
|
|
494
|
-
/* @__PURE__ */
|
|
495
|
-
/* @__PURE__ */
|
|
496
|
-
/* @__PURE__ */
|
|
513
|
+
return /* @__PURE__ */ jsx8("section", { id: "pricing", className: cn(`pt-12 md:pt-16 pb-10 sm:pb-20 ${backgroundColor}`, className), children: /* @__PURE__ */ jsxs4("div", { className: "max-w-7xl mx-auto p-6 sm:p-16 rounded-none sm:rounded-3xl pricing-gradient", children: [
|
|
514
|
+
/* @__PURE__ */ jsx8(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs4("div", { className: "text-center my-16 sm:my-12", children: [
|
|
515
|
+
/* @__PURE__ */ jsx8("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }),
|
|
516
|
+
/* @__PURE__ */ jsx8("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
|
|
497
517
|
] }) }),
|
|
498
|
-
/* @__PURE__ */
|
|
518
|
+
/* @__PURE__ */ jsx8("ul", { className: "grid gap-6 lg:grid-cols-3 lg:items-stretch", children: tiers.map((tier, index) => /* @__PURE__ */ jsx8("li", { className: tier.featured ? "lg:col-span-2 flex" : "lg:col-span-1 flex", children: /* @__PURE__ */ jsx8(ScrollReveal, { direction: "up", delay: 0.2 + index * 0.1, className: "w-full", children: /* @__PURE__ */ jsx8(
|
|
499
519
|
"div",
|
|
500
520
|
{
|
|
501
521
|
className: tier.featured ? "bg-card flex w-full h-full flex-col-reverse rounded-3xl border border-border feature-card-shadow md:flex-row" : "bg-card w-full h-full rounded-3xl border border-border feature-card-shadow p-6 md:p-8",
|
|
502
522
|
children: tier.featured ? /* @__PURE__ */ jsxs4(Fragment, { children: [
|
|
503
|
-
tier.image && /* @__PURE__ */
|
|
504
|
-
/* @__PURE__ */ jsxs4("div", { className: "flex flex-col p-6 md:p-8 xl:w-1/2", children: [
|
|
523
|
+
tier.image && isRenderableSrc(tier.image) && /* @__PURE__ */ jsx8("div", { className: "hidden xl:block xl:w-1/2 pl-6 md:pl-8 py-6 md:py-8", children: /* @__PURE__ */ jsx8("div", { className: "h-full rounded-lg overflow-hidden relative min-h-96", children: /* @__PURE__ */ jsx8(Image2, { src: tier.image, alt: tier.imageAlt || tier.title, fill: true, className: "object-cover", sizes: "(max-width: 1280px) 0vw, 50vw" }) }) }),
|
|
524
|
+
/* @__PURE__ */ jsxs4("div", { className: cn("flex flex-col p-6 md:p-8", tier.image && isRenderableSrc(tier.image) && "xl:w-1/2"), children: [
|
|
505
525
|
/* @__PURE__ */ jsxs4("div", { className: "flex-1", children: [
|
|
506
|
-
/* @__PURE__ */
|
|
507
|
-
/* @__PURE__ */
|
|
526
|
+
/* @__PURE__ */ jsx8("p", { className: "text-lg font-semibold text-foreground", children: tier.title }),
|
|
527
|
+
/* @__PURE__ */ jsx8("p", { className: "text-muted-foreground mt-3", children: tier.description }),
|
|
508
528
|
/* @__PURE__ */ jsxs4("div", { className: "mt-6 flex items-baseline", children: [
|
|
509
|
-
/* @__PURE__ */
|
|
510
|
-
/* @__PURE__ */
|
|
529
|
+
/* @__PURE__ */ jsx8("span", { className: "text-3xl font-semibold text-foreground", children: tier.price }),
|
|
530
|
+
/* @__PURE__ */ jsx8("span", { className: "text-muted-foreground ml-2 text-sm", children: tier.priceUnit })
|
|
511
531
|
] }),
|
|
512
|
-
/* @__PURE__ */
|
|
532
|
+
/* @__PURE__ */ jsx8(Button, { asChild: true, variant: tier.ctaVariant === "primary" ? "default" : "secondary", className: "mt-5 w-full sm:w-auto", children: /* @__PURE__ */ jsx8("a", { href: tier.ctaHref || "#", children: tier.ctaText }) })
|
|
513
533
|
] }),
|
|
514
|
-
/* @__PURE__ */
|
|
515
|
-
/* @__PURE__ */
|
|
516
|
-
/* @__PURE__ */
|
|
534
|
+
/* @__PURE__ */ jsx8("div", { className: "mt-8", children: /* @__PURE__ */ jsx8("ul", { className: "space-y-2", children: tier.features.map((feature, featureIndex) => /* @__PURE__ */ jsxs4("li", { className: "flex items-start", children: [
|
|
535
|
+
/* @__PURE__ */ jsx8(Check2, { className: "text-primary mr-2 size-4 shrink-0" }),
|
|
536
|
+
/* @__PURE__ */ jsx8("span", { className: "text-foreground text-sm", children: feature.text })
|
|
517
537
|
] }, featureIndex)) }) })
|
|
518
538
|
] })
|
|
519
|
-
] }) : /* @__PURE__ */
|
|
520
|
-
/* @__PURE__ */
|
|
521
|
-
/* @__PURE__ */
|
|
539
|
+
] }) : /* @__PURE__ */ jsx8("div", { className: "flex h-full flex-col", children: /* @__PURE__ */ jsxs4("div", { children: [
|
|
540
|
+
/* @__PURE__ */ jsx8("p", { className: "text-lg font-semibold text-foreground", children: tier.title }),
|
|
541
|
+
/* @__PURE__ */ jsx8("p", { className: "text-muted-foreground mt-3", children: tier.description }),
|
|
522
542
|
/* @__PURE__ */ jsxs4("div", { className: "mt-6 flex items-baseline", children: [
|
|
523
|
-
/* @__PURE__ */
|
|
524
|
-
/* @__PURE__ */
|
|
543
|
+
/* @__PURE__ */ jsx8("span", { className: "text-3xl font-semibold text-foreground", children: tier.price }),
|
|
544
|
+
/* @__PURE__ */ jsx8("span", { className: "text-muted-foreground ml-2 text-sm", children: tier.priceUnit })
|
|
525
545
|
] }),
|
|
526
|
-
/* @__PURE__ */
|
|
527
|
-
/* @__PURE__ */
|
|
528
|
-
/* @__PURE__ */
|
|
529
|
-
/* @__PURE__ */
|
|
546
|
+
/* @__PURE__ */ jsx8(Button, { asChild: true, variant: tier.ctaVariant === "primary" ? "default" : "secondary", className: "mt-5 w-full sm:w-auto", children: /* @__PURE__ */ jsx8("a", { href: tier.ctaHref || "#", children: tier.ctaText }) }),
|
|
547
|
+
/* @__PURE__ */ jsx8("div", { className: "mt-8", children: /* @__PURE__ */ jsx8("ul", { className: "space-y-2", children: tier.features.map((feature, featureIndex) => /* @__PURE__ */ jsxs4("li", { className: "flex items-start", children: [
|
|
548
|
+
/* @__PURE__ */ jsx8(Check2, { className: "text-primary mr-2 size-4 shrink-0" }),
|
|
549
|
+
/* @__PURE__ */ jsx8("span", { className: "text-foreground text-sm", children: feature.text })
|
|
530
550
|
] }, featureIndex)) }) })
|
|
531
551
|
] }) })
|
|
532
552
|
}
|
|
533
553
|
) }) }, index)) }),
|
|
534
|
-
securityNote && /* @__PURE__ */
|
|
535
|
-
/* @__PURE__ */
|
|
554
|
+
securityNote && /* @__PURE__ */ jsx8(ScrollReveal, { direction: "up", delay: 0.4, children: /* @__PURE__ */ jsx8("div", { className: "text-center mt-8", children: /* @__PURE__ */ jsxs4("p", { className: "text-sm text-muted-foreground", children: [
|
|
555
|
+
/* @__PURE__ */ jsx8("strong", { children: "Your code stays private." }),
|
|
536
556
|
" ",
|
|
537
557
|
securityNote
|
|
538
558
|
] }) }) })
|
|
539
559
|
] }) });
|
|
540
560
|
}
|
|
541
561
|
|
|
542
|
-
// src/components/cta/cta.tsx
|
|
562
|
+
// src/templates/studio/components/cta/cta.tsx
|
|
543
563
|
import { HiArrowRight } from "react-icons/hi";
|
|
544
|
-
import {
|
|
545
|
-
import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
564
|
+
import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
|
|
546
565
|
var defaultButtons = [
|
|
547
566
|
{
|
|
548
567
|
text: "Get Started",
|
|
@@ -553,19 +572,19 @@ var defaultButtons = [
|
|
|
553
572
|
];
|
|
554
573
|
function CTA({ heading = "Ready to Save 15 Hours Per Week?", subheading = "Setup with Github \u2013 takes 5 minutes.", buttons = defaultButtons, backgroundColor: _backgroundColor, className }) {
|
|
555
574
|
const bgClass = "bg-card";
|
|
556
|
-
return /* @__PURE__ */
|
|
557
|
-
/* @__PURE__ */
|
|
558
|
-
/* @__PURE__ */
|
|
559
|
-
/* @__PURE__ */
|
|
575
|
+
return /* @__PURE__ */ jsx9("section", { className: cn(`py-20 md:py-32 px-4 md:px-6 ${bgClass}`, className), children: /* @__PURE__ */ jsx9("div", { className: "max-w-3xl mx-auto text-center", children: /* @__PURE__ */ jsx9(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs5("div", { className: "space-y-6", children: [
|
|
576
|
+
/* @__PURE__ */ jsx9("h2", { className: "font-halant font-normal text-foreground text-[clamp(32px,5vw,52px)] leading-tight tracking-tight", children: heading }),
|
|
577
|
+
/* @__PURE__ */ jsx9("p", { className: "max-w-2xl mx-auto text-[clamp(16px,2vw,18px)] leading-relaxed text-muted-foreground", children: subheading }),
|
|
578
|
+
/* @__PURE__ */ jsx9("div", { className: "flex flex-col sm:flex-row gap-3 justify-center items-center pt-4", children: buttons.map((button, index) => /* @__PURE__ */ jsx9(Button, { asChild: true, variant: button.variant === "primary" ? "default" : "secondary", children: /* @__PURE__ */ jsxs5("a", { href: button.href, children: [
|
|
560
579
|
button.text,
|
|
561
|
-
button.showArrow && /* @__PURE__ */
|
|
580
|
+
button.showArrow && /* @__PURE__ */ jsx9(HiArrowRight, { className: "w-4 h-4" })
|
|
562
581
|
] }) }, index)) })
|
|
563
582
|
] }) }) }) });
|
|
564
583
|
}
|
|
565
584
|
|
|
566
|
-
// src/components/faq/faq.tsx
|
|
585
|
+
// src/templates/studio/components/faq/faq.tsx
|
|
567
586
|
import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@mdxui/primitives";
|
|
568
|
-
import { jsx as
|
|
587
|
+
import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
|
|
569
588
|
var defaultFaqs = [
|
|
570
589
|
{
|
|
571
590
|
question: "How do I get started?",
|
|
@@ -593,562 +612,781 @@ var defaultFaqs = [
|
|
|
593
612
|
}
|
|
594
613
|
];
|
|
595
614
|
function FAQ({ heading = "FAQs", faqs = defaultFaqs, backgroundColor = "bg-background", className }) {
|
|
596
|
-
return /* @__PURE__ */
|
|
597
|
-
/* @__PURE__ */
|
|
598
|
-
/* @__PURE__ */
|
|
599
|
-
/* @__PURE__ */
|
|
600
|
-
/* @__PURE__ */
|
|
615
|
+
return /* @__PURE__ */ jsx10("section", { id: "faq", className: cn(`py-20 px-6 lg:px-12 ${backgroundColor}`, className), children: /* @__PURE__ */ jsxs6("div", { className: "max-w-4xl mx-auto", children: [
|
|
616
|
+
/* @__PURE__ */ jsx10(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsx10("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsx10("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }) }) }),
|
|
617
|
+
/* @__PURE__ */ jsx10(Accordion, { type: "single", collapsible: true, className: "space-y-4", children: faqs.map((faq, index) => /* @__PURE__ */ jsx10(ScrollReveal, { direction: "up", delay: 0.15 + index * 0.05, children: /* @__PURE__ */ jsxs6(AccordionItem, { value: `item-${index}`, className: "rounded-xl px-4 sm:px-6 border border-border bg-card shadow-sm", children: [
|
|
618
|
+
/* @__PURE__ */ jsx10(AccordionTrigger, { className: "hover:no-underline py-5 text-base font-medium text-foreground", children: faq.question }),
|
|
619
|
+
/* @__PURE__ */ jsx10(AccordionContent, { className: "pb-5 text-sm text-foreground/70 leading-relaxed", children: faq.answer })
|
|
601
620
|
] }) }, index)) })
|
|
602
621
|
] }) });
|
|
603
622
|
}
|
|
604
623
|
|
|
605
|
-
// src/components/
|
|
606
|
-
import {
|
|
607
|
-
import
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
613
|
-
|
|
614
|
-
|
|
615
|
-
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
619
|
-
|
|
620
|
-
|
|
621
|
-
|
|
622
|
-
|
|
623
|
-
|
|
624
|
-
|
|
625
|
-
|
|
626
|
-
backgroundColor = "bg-background",
|
|
627
|
-
className
|
|
624
|
+
// src/templates/studio/components/navigation/navigation.tsx
|
|
625
|
+
import { useState as useState2, useEffect as useEffect2 } from "react";
|
|
626
|
+
import Link from "next/link";
|
|
627
|
+
import { Menu, X } from "lucide-react";
|
|
628
|
+
import { motion as motion2, AnimatePresence } from "motion/react";
|
|
629
|
+
import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
|
|
630
|
+
function Navigation({
|
|
631
|
+
logo = "Priya",
|
|
632
|
+
logoHref = "/",
|
|
633
|
+
links = [
|
|
634
|
+
{ label: "Features", href: "#features" },
|
|
635
|
+
{ label: "Pricing", href: "#pricing" },
|
|
636
|
+
{ label: "FAQ", href: "#faq" }
|
|
637
|
+
],
|
|
638
|
+
ctaText = "Hire me",
|
|
639
|
+
ctaHref = "#pricing",
|
|
640
|
+
ctaVariant = "secondary",
|
|
641
|
+
className,
|
|
642
|
+
maxWidth = "7xl",
|
|
643
|
+
sticky = true,
|
|
644
|
+
showScrollEffect = true
|
|
628
645
|
}) {
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
641
|
-
|
|
642
|
-
|
|
643
|
-
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
651
|
-
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
646
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState2(false);
|
|
647
|
+
const [isScrolled, setIsScrolled] = useState2(false);
|
|
648
|
+
useEffect2(() => {
|
|
649
|
+
if (!showScrollEffect) return;
|
|
650
|
+
const handleScroll = () => {
|
|
651
|
+
setIsScrolled(window.scrollY > 10);
|
|
652
|
+
};
|
|
653
|
+
window.addEventListener("scroll", handleScroll);
|
|
654
|
+
return () => window.removeEventListener("scroll", handleScroll);
|
|
655
|
+
}, [showScrollEffect]);
|
|
656
|
+
const maxWidthClass = {
|
|
657
|
+
sm: "max-w-sm",
|
|
658
|
+
md: "max-w-md",
|
|
659
|
+
lg: "max-w-lg",
|
|
660
|
+
xl: "max-w-xl",
|
|
661
|
+
"2xl": "max-w-2xl",
|
|
662
|
+
"3xl": "max-w-3xl",
|
|
663
|
+
"4xl": "max-w-4xl",
|
|
664
|
+
"5xl": "max-w-5xl",
|
|
665
|
+
"6xl": "max-w-6xl",
|
|
666
|
+
"7xl": "max-w-7xl",
|
|
667
|
+
full: "max-w-full"
|
|
668
|
+
}[maxWidth];
|
|
669
|
+
return /* @__PURE__ */ jsx11(
|
|
670
|
+
"nav",
|
|
671
|
+
{
|
|
672
|
+
className: cn(
|
|
673
|
+
"z-50 w-full transition-all duration-300",
|
|
674
|
+
sticky && "sticky top-0",
|
|
675
|
+
showScrollEffect && isScrolled ? "bg-background/95 backdrop-blur-md" : "bg-background",
|
|
676
|
+
className
|
|
677
|
+
),
|
|
678
|
+
children: /* @__PURE__ */ jsxs7("div", { className: cn(maxWidthClass, "mx-auto px-6 lg:px-12 py-4"), children: [
|
|
679
|
+
/* @__PURE__ */ jsxs7("div", { className: "flex items-center justify-between", children: [
|
|
680
|
+
/* @__PURE__ */ jsx11("div", { className: "flex items-center", children: /* @__PURE__ */ jsx11(Link, { href: logoHref, className: "flex items-center", children: typeof logo === "string" ? /* @__PURE__ */ jsx11("span", { className: "text-3xl font-base text-foreground font-halant", children: logo }) : logo }) }),
|
|
681
|
+
links && links.length > 0 && /* @__PURE__ */ jsx11("div", { className: "hidden lg:flex items-center gap-8", children: links.map((link) => /* @__PURE__ */ jsx11("a", { href: link.href, className: "text-sm text-foreground hover:opacity-60 transition-opacity", children: link.label }, link.href)) }),
|
|
682
|
+
ctaText && ctaHref && /* @__PURE__ */ jsx11("div", { className: "hidden lg:flex items-center", children: /* @__PURE__ */ jsx11(Button, { asChild: true, variant: ctaVariant, children: /* @__PURE__ */ jsx11("a", { href: ctaHref, children: ctaText }) }) }),
|
|
683
|
+
/* @__PURE__ */ jsx11("button", { className: "lg:hidden p-2 text-foreground", onClick: () => setMobileMenuOpen(!mobileMenuOpen), "aria-label": "Toggle menu", children: mobileMenuOpen ? /* @__PURE__ */ jsx11(X, { className: "w-6 h-6" }) : /* @__PURE__ */ jsx11(Menu, { className: "w-6 h-6" }) })
|
|
684
|
+
] }),
|
|
685
|
+
/* @__PURE__ */ jsx11(AnimatePresence, { children: mobileMenuOpen && /* @__PURE__ */ jsx11(
|
|
686
|
+
motion2.div,
|
|
687
|
+
{
|
|
688
|
+
initial: { opacity: 0, height: 0 },
|
|
689
|
+
animate: { opacity: 1, height: "auto" },
|
|
690
|
+
exit: { opacity: 0, height: 0 },
|
|
691
|
+
transition: { duration: 0.3, ease: "easeInOut" },
|
|
692
|
+
className: "lg:hidden overflow-hidden",
|
|
693
|
+
children: /* @__PURE__ */ jsx11("div", { className: "mt-4 py-4 rounded-xl bg-card", children: /* @__PURE__ */ jsxs7("div", { className: "flex flex-col gap-4 px-6", children: [
|
|
694
|
+
links.map((link) => /* @__PURE__ */ jsx11("a", { href: link.href, className: "py-2 text-foreground hover:opacity-70 transition-colors", onClick: () => setMobileMenuOpen(false), children: link.label }, link.href)),
|
|
695
|
+
ctaText && ctaHref && /* @__PURE__ */ jsx11(Button, { asChild: true, variant: ctaVariant, className: "mt-2", onClick: () => setMobileMenuOpen(false), children: /* @__PURE__ */ jsx11("a", { href: ctaHref, children: ctaText }) })
|
|
696
|
+
] }) })
|
|
697
|
+
}
|
|
698
|
+
) })
|
|
660
699
|
] })
|
|
661
|
-
|
|
662
|
-
|
|
700
|
+
}
|
|
701
|
+
);
|
|
663
702
|
}
|
|
664
703
|
|
|
665
|
-
// src/components/
|
|
666
|
-
import
|
|
667
|
-
import {
|
|
668
|
-
import {
|
|
669
|
-
|
|
670
|
-
|
|
671
|
-
|
|
672
|
-
|
|
673
|
-
|
|
674
|
-
|
|
675
|
-
},
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
680
|
-
|
|
681
|
-
|
|
682
|
-
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
704
|
+
// src/templates/studio/components/footer/footer.tsx
|
|
705
|
+
import Link2 from "next/link";
|
|
706
|
+
import { FaGithub, FaXTwitter } from "react-icons/fa6";
|
|
707
|
+
import { SiNpm } from "react-icons/si";
|
|
708
|
+
import { FaArrowRight } from "react-icons/fa6";
|
|
709
|
+
|
|
710
|
+
// src/templates/studio/ui/input/input.tsx
|
|
711
|
+
import * as React2 from "react";
|
|
712
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
713
|
+
var Input = React2.forwardRef(
|
|
714
|
+
({ className, type, ...props }, ref) => {
|
|
715
|
+
return /* @__PURE__ */ jsx12(
|
|
716
|
+
"input",
|
|
717
|
+
{
|
|
718
|
+
type,
|
|
719
|
+
className: cn(
|
|
720
|
+
"flex h-11 w-full rounded-md border border-(--color-border) bg-transparent px-3 py-1 text-base transition-colors file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-(--color-fg) placeholder:text-(--color-fg-muted) focus-visible:outline-none focus-visible:border-(--color-border-strong) focus-visible:ring-1 focus-visible:ring-(--color-ring) disabled:cursor-not-allowed disabled:opacity-50 md:text-sm",
|
|
721
|
+
className
|
|
722
|
+
),
|
|
723
|
+
ref,
|
|
724
|
+
...props
|
|
725
|
+
}
|
|
726
|
+
);
|
|
688
727
|
}
|
|
689
|
-
|
|
690
|
-
|
|
691
|
-
|
|
692
|
-
|
|
693
|
-
|
|
694
|
-
|
|
695
|
-
|
|
696
|
-
|
|
697
|
-
|
|
698
|
-
|
|
728
|
+
);
|
|
729
|
+
Input.displayName = "Input";
|
|
730
|
+
|
|
731
|
+
// src/templates/studio/components/footer/footer.tsx
|
|
732
|
+
import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
|
|
733
|
+
function Footer({
|
|
734
|
+
logo = "Priya",
|
|
735
|
+
description = "Your AI Product Manager for GitHub. Automate issue triage, sprint planning, and backlog grooming.",
|
|
736
|
+
socialLinks = [
|
|
737
|
+
{ href: "https://github.com", icon: FaGithub, label: "GitHub" },
|
|
738
|
+
{ href: "https://npmjs.com", icon: SiNpm, label: "npm" },
|
|
739
|
+
// X always points at the .do brand account (do-design-agency HARD rule);
|
|
740
|
+
// GitHub/npm stay product-specific overrides.
|
|
741
|
+
{ href: "https://x.com/dotdo_ai", icon: FaXTwitter, label: "X (Twitter)" }
|
|
742
|
+
],
|
|
743
|
+
quickLinks = [
|
|
744
|
+
{ href: "/#pricing", label: "Pricing" },
|
|
745
|
+
{ href: "/#features", label: "How it works" },
|
|
746
|
+
{ href: "/contact", label: "Contact" }
|
|
747
|
+
],
|
|
748
|
+
contactTitle = "Stay in touch",
|
|
749
|
+
emailPlaceholder = "Enter your email",
|
|
750
|
+
onEmailSubmit,
|
|
751
|
+
copyrightText = "Priya.do \xA9 2025. All rights reserved.",
|
|
699
752
|
className
|
|
700
753
|
}) {
|
|
701
|
-
const
|
|
702
|
-
const [formData, setFormData] = useState({});
|
|
703
|
-
const [submitStatus, setSubmitStatus] = useState("idle");
|
|
704
|
-
const handleSubmit = async (e) => {
|
|
754
|
+
const handleEmailSubmit = (e) => {
|
|
705
755
|
e.preventDefault();
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
}
|
|
712
|
-
setSubmitStatus("success");
|
|
713
|
-
setFormData({});
|
|
714
|
-
e.target.reset();
|
|
715
|
-
} catch {
|
|
716
|
-
setSubmitStatus("error");
|
|
717
|
-
} finally {
|
|
718
|
-
setIsSubmitting(false);
|
|
756
|
+
const form = e.currentTarget;
|
|
757
|
+
const formData = new FormData(form);
|
|
758
|
+
const email = formData.get("email");
|
|
759
|
+
if (onEmailSubmit) {
|
|
760
|
+
onEmailSubmit(email);
|
|
719
761
|
}
|
|
762
|
+
form.reset();
|
|
720
763
|
};
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
729
|
-
|
|
730
|
-
|
|
731
|
-
|
|
732
|
-
|
|
733
|
-
|
|
764
|
+
return /* @__PURE__ */ jsx13("footer", { className: cn("py-16 px-6 lg:px-12 bg-[#111011] text-white", className), children: /* @__PURE__ */ jsxs8("div", { className: "max-w-7xl mx-auto", children: [
|
|
765
|
+
/* @__PURE__ */ jsxs8("div", { className: "grid md:grid-cols-5 gap-12 mb-12", children: [
|
|
766
|
+
/* @__PURE__ */ jsxs8("div", { className: "md:col-span-2", children: [
|
|
767
|
+
/* @__PURE__ */ jsx13(Link2, { href: "/", className: "inline-block mb-4", children: /* @__PURE__ */ jsx13("div", { className: "text-3xl font-base text-white font-halant", children: logo }) }),
|
|
768
|
+
/* @__PURE__ */ jsx13("p", { className: "max-w-md text-sm leading-relaxed text-white/70 mb-6", children: description }),
|
|
769
|
+
/* @__PURE__ */ jsx13("div", { className: "flex items-center gap-4", children: socialLinks.map((link) => {
|
|
770
|
+
const Icon = link.icon;
|
|
771
|
+
return /* @__PURE__ */ jsx13(
|
|
772
|
+
Link2,
|
|
773
|
+
{
|
|
774
|
+
href: link.href,
|
|
775
|
+
target: "_blank",
|
|
776
|
+
rel: "noopener noreferrer",
|
|
777
|
+
className: "text-white/70 transition-colors hover:text-white",
|
|
778
|
+
"aria-label": link.label,
|
|
779
|
+
children: /* @__PURE__ */ jsx13(Icon, { className: "w-5 h-5" })
|
|
780
|
+
},
|
|
781
|
+
link.label
|
|
782
|
+
);
|
|
783
|
+
}) })
|
|
784
|
+
] }),
|
|
785
|
+
/* @__PURE__ */ jsxs8("div", { children: [
|
|
786
|
+
/* @__PURE__ */ jsx13("h3", { className: "font-semibold text-base mb-4 text-white", children: "Quick Links" }),
|
|
787
|
+
/* @__PURE__ */ jsx13("ul", { className: "space-y-2", children: quickLinks.map((link) => /* @__PURE__ */ jsx13("li", { children: /* @__PURE__ */ jsx13(Link2, { href: link.href, className: "text-sm text-white/70 transition-colors hover:text-white", children: link.label }) }, link.label)) })
|
|
788
|
+
] }),
|
|
789
|
+
/* @__PURE__ */ jsx13("div", { className: "w-full md:col-span-2 md:flex md:flex-col md:items-end", children: /* @__PURE__ */ jsxs8("div", { className: "w-full md:max-w-sm", children: [
|
|
790
|
+
/* @__PURE__ */ jsx13("h3", { className: "font-semibold text-base mb-4 text-white", children: contactTitle }),
|
|
791
|
+
/* @__PURE__ */ jsxs8("form", { onSubmit: handleEmailSubmit, className: "relative", children: [
|
|
792
|
+
/* @__PURE__ */ jsx13(
|
|
793
|
+
Input,
|
|
794
|
+
{
|
|
795
|
+
type: "email",
|
|
796
|
+
name: "email",
|
|
797
|
+
placeholder: emailPlaceholder,
|
|
798
|
+
required: true,
|
|
799
|
+
className: "w-full bg-white/10 border-white/20 text-white placeholder:text-white/50 pr-12"
|
|
800
|
+
}
|
|
801
|
+
),
|
|
802
|
+
/* @__PURE__ */ jsx13(
|
|
803
|
+
"button",
|
|
804
|
+
{
|
|
805
|
+
type: "submit",
|
|
806
|
+
className: "absolute right-1 top-1/2 -translate-y-1/2 bg-white text-gray-900 hover:bg-white/90 active:bg-[#111011] active:text-white px-3 py-3 rounded-md transition-colors",
|
|
807
|
+
"aria-label": "Submit email",
|
|
808
|
+
children: /* @__PURE__ */ jsx13(FaArrowRight, { className: "w-3 h-3" })
|
|
809
|
+
}
|
|
810
|
+
)
|
|
811
|
+
] })
|
|
812
|
+
] }) })
|
|
813
|
+
] }),
|
|
814
|
+
/* @__PURE__ */ jsx13("div", { className: "border-t border-white/10 pt-8", children: /* @__PURE__ */ jsx13("div", { className: "flex flex-col md:flex-row justify-between items-center gap-4", children: /* @__PURE__ */ jsx13("p", { className: "text-sm text-white/60", children: copyrightText }) }) })
|
|
815
|
+
] }) });
|
|
816
|
+
}
|
|
817
|
+
|
|
818
|
+
// src/templates/studio/view.tsx
|
|
819
|
+
import { Fragment as Fragment2, jsx as jsx14, jsxs as jsxs9 } from "react/jsx-runtime";
|
|
820
|
+
function StudioView({ content, brandName, hostname }) {
|
|
821
|
+
const { hero, features, pricing, faq, cta } = content;
|
|
822
|
+
return /* @__PURE__ */ jsxs9(Fragment2, { children: [
|
|
823
|
+
/* @__PURE__ */ jsx14(Navigation, { logo: brandName }),
|
|
824
|
+
/* @__PURE__ */ jsxs9("main", { children: [
|
|
825
|
+
/* @__PURE__ */ jsx14(
|
|
826
|
+
Hero,
|
|
827
|
+
{
|
|
828
|
+
badgeEmoji: hero.badgeEmoji,
|
|
829
|
+
badgeText: hero.badgeText,
|
|
830
|
+
badgeHref: hero.badgeHref,
|
|
831
|
+
heading: hero.heading,
|
|
832
|
+
description: hero.description,
|
|
833
|
+
ctaText: hero.ctaText,
|
|
834
|
+
ctaHref: hero.ctaHref,
|
|
835
|
+
rightImageSrc: hero.rightImageSrc,
|
|
836
|
+
rightImageAlt: hero.rightImageAlt,
|
|
837
|
+
showIconOverlay: hero.showIconOverlay,
|
|
838
|
+
marqueeTitle: hero.marqueeTitle,
|
|
839
|
+
marqueeImages: hero.marqueeImages
|
|
840
|
+
}
|
|
841
|
+
),
|
|
842
|
+
/* @__PURE__ */ jsx14(
|
|
843
|
+
Features,
|
|
844
|
+
{
|
|
845
|
+
heading: features.heading,
|
|
846
|
+
description: features.description,
|
|
847
|
+
features: features.features
|
|
848
|
+
}
|
|
849
|
+
),
|
|
850
|
+
pricing.variant === "single" ? /* @__PURE__ */ jsx14(
|
|
851
|
+
Pricing,
|
|
852
|
+
{
|
|
853
|
+
heading: pricing.heading,
|
|
854
|
+
subheading: pricing.subheading,
|
|
855
|
+
price: pricing.price,
|
|
856
|
+
priceUnit: pricing.priceUnit,
|
|
857
|
+
trialText: pricing.trialText,
|
|
858
|
+
ctaText: pricing.ctaText,
|
|
859
|
+
ctaHref: pricing.ctaHref,
|
|
860
|
+
featuresHeading: pricing.featuresHeading,
|
|
861
|
+
features: pricing.features,
|
|
862
|
+
securityNote: pricing.securityNote
|
|
863
|
+
}
|
|
864
|
+
) : /* @__PURE__ */ jsx14(
|
|
865
|
+
PricingTiers,
|
|
866
|
+
{
|
|
867
|
+
heading: pricing.heading,
|
|
868
|
+
subheading: pricing.subheading,
|
|
869
|
+
tiers: pricing.tiers,
|
|
870
|
+
securityNote: pricing.securityNote
|
|
871
|
+
}
|
|
872
|
+
),
|
|
873
|
+
/* @__PURE__ */ jsx14(FAQ, { heading: faq.heading, faqs: faq.faqs }),
|
|
874
|
+
/* @__PURE__ */ jsx14(CTA, { heading: cta.heading, subheading: cta.subheading, buttons: cta.buttons })
|
|
875
|
+
] }),
|
|
876
|
+
/* @__PURE__ */ jsx14(
|
|
877
|
+
Footer,
|
|
734
878
|
{
|
|
735
|
-
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
fields.map((field) => /* @__PURE__ */ jsxs8("div", { className: "grid w-full items-center gap-2", children: [
|
|
739
|
-
/* @__PURE__ */ jsxs8(Label, { htmlFor: field.id, className: "text-foreground", children: [
|
|
740
|
-
field.label,
|
|
741
|
-
field.required && /* @__PURE__ */ jsx11("span", { className: "text-destructive ml-1", children: "*" })
|
|
742
|
-
] }),
|
|
743
|
-
field.type === "textarea" ? /* @__PURE__ */ jsx11(Textarea, { id: field.id, placeholder: field.placeholder, required: field.required, onChange: handleChange, className: "min-h-[120px]" }) : /* @__PURE__ */ jsx11(Input, { type: field.type, id: field.id, placeholder: field.placeholder, required: field.required, onChange: handleChange })
|
|
744
|
-
] }, field.id)),
|
|
745
|
-
/* @__PURE__ */ jsx11(Button5, { type: "submit", className: "w-full", disabled: isSubmitting, children: isSubmitting ? "Submitting..." : submitButtonText }),
|
|
746
|
-
submitStatus === "success" && /* @__PURE__ */ jsx11("p", { className: "text-primary text-sm text-center", children: successMessage }),
|
|
747
|
-
submitStatus === "error" && /* @__PURE__ */ jsx11("p", { className: "text-destructive text-sm text-center", children: errorMessage })
|
|
748
|
-
]
|
|
879
|
+
logo: brandName,
|
|
880
|
+
description: hero.description,
|
|
881
|
+
copyrightText: `${hostname} \xA9 ${(/* @__PURE__ */ new Date()).getFullYear()}. All rights reserved.`
|
|
749
882
|
}
|
|
750
|
-
)
|
|
751
|
-
] })
|
|
883
|
+
)
|
|
884
|
+
] });
|
|
752
885
|
}
|
|
753
886
|
|
|
754
|
-
// src/components/
|
|
755
|
-
import {
|
|
887
|
+
// src/templates/executive/components/navigation.tsx
|
|
888
|
+
import { useState as useState3, useEffect as useEffect3 } from "react";
|
|
889
|
+
import Link3 from "next/link";
|
|
890
|
+
import { Menu as Menu2, X as X2 } from "lucide-react";
|
|
756
891
|
|
|
757
|
-
// src/
|
|
758
|
-
import
|
|
759
|
-
import {
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
765
|
-
|
|
766
|
-
|
|
767
|
-
|
|
768
|
-
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
779
|
-
})
|
|
780
|
-
const id = useId();
|
|
781
|
-
const [pathD, setPathD] = useState2("");
|
|
782
|
-
const [svgDimensions, setSvgDimensions] = useState2({ width: 0, height: 0 });
|
|
783
|
-
const gradientCoordinates = reverse ? {
|
|
784
|
-
x1: ["90%", "-10%"],
|
|
785
|
-
x2: ["100%", "0%"],
|
|
786
|
-
y1: ["0%", "0%"],
|
|
787
|
-
y2: ["0%", "0%"]
|
|
788
|
-
} : {
|
|
789
|
-
x1: ["10%", "110%"],
|
|
790
|
-
x2: ["0%", "100%"],
|
|
791
|
-
y1: ["0%", "0%"],
|
|
792
|
-
y2: ["0%", "0%"]
|
|
793
|
-
};
|
|
794
|
-
useEffect(() => {
|
|
795
|
-
const updatePath = () => {
|
|
796
|
-
if (containerRef.current && fromRef.current && toRef.current) {
|
|
797
|
-
const containerRect = containerRef.current.getBoundingClientRect();
|
|
798
|
-
const rectA = fromRef.current.getBoundingClientRect();
|
|
799
|
-
const rectB = toRef.current.getBoundingClientRect();
|
|
800
|
-
const svgWidth = containerRect.width;
|
|
801
|
-
const svgHeight = containerRect.height;
|
|
802
|
-
setSvgDimensions({ width: svgWidth, height: svgHeight });
|
|
803
|
-
const startX = rectA.left - containerRect.left + rectA.width / 2 + startXOffset;
|
|
804
|
-
const startY = rectA.top - containerRect.top + rectA.height / 2 + startYOffset;
|
|
805
|
-
const endX = rectB.left - containerRect.left + rectB.width / 2 + endXOffset;
|
|
806
|
-
const endY = rectB.top - containerRect.top + rectB.height / 2 + endYOffset;
|
|
807
|
-
const controlY = startY - curvature;
|
|
808
|
-
const d = `M ${startX},${startY} Q ${(startX + endX) / 2},${controlY} ${endX},${endY}`;
|
|
809
|
-
setPathD(d);
|
|
810
|
-
}
|
|
811
|
-
};
|
|
812
|
-
const resizeObserver = new ResizeObserver(() => {
|
|
813
|
-
updatePath();
|
|
814
|
-
});
|
|
815
|
-
if (containerRef.current) {
|
|
816
|
-
resizeObserver.observe(containerRef.current);
|
|
892
|
+
// src/templates/executive/ui/button.tsx
|
|
893
|
+
import * as React3 from "react";
|
|
894
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
895
|
+
var baseClasses2 = "inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors duration-150 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-(--color-ring) disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0 cursor-pointer rounded-[2px]";
|
|
896
|
+
var variantClasses2 = {
|
|
897
|
+
default: "bg-(--color-btn-primary-to) text-(--color-btn-primary-fg) hover:bg-(--color-accent)",
|
|
898
|
+
secondary: "bg-transparent text-(--color-fg) border border-(--color-border-strong) hover:bg-(--color-hover)",
|
|
899
|
+
ghost: "text-(--color-fg) hover:bg-(--color-hover)",
|
|
900
|
+
link: "text-(--color-fg) underline-offset-4 hover:underline"
|
|
901
|
+
};
|
|
902
|
+
var sizeClasses2 = {
|
|
903
|
+
default: "h-11 px-6 text-sm tracking-[0.01em]",
|
|
904
|
+
sm: "h-9 px-4 text-sm"
|
|
905
|
+
};
|
|
906
|
+
var ExecButton = React3.forwardRef(
|
|
907
|
+
({ className, variant = "default", size = "default", asChild = false, children, ...props }, ref) => {
|
|
908
|
+
const classes = cn(baseClasses2, variantClasses2[variant], sizeClasses2[size], className);
|
|
909
|
+
if (asChild && React3.isValidElement(children)) {
|
|
910
|
+
const child = children;
|
|
911
|
+
return React3.cloneElement(child, {
|
|
912
|
+
...props,
|
|
913
|
+
className: cn(classes, child.props.className)
|
|
914
|
+
});
|
|
817
915
|
}
|
|
818
|
-
|
|
819
|
-
|
|
820
|
-
|
|
821
|
-
|
|
822
|
-
|
|
823
|
-
|
|
824
|
-
|
|
916
|
+
return /* @__PURE__ */ jsx15("button", { ref, className: classes, ...props, children });
|
|
917
|
+
}
|
|
918
|
+
);
|
|
919
|
+
ExecButton.displayName = "ExecButton";
|
|
920
|
+
|
|
921
|
+
// src/templates/executive/components/navigation.tsx
|
|
922
|
+
import { jsx as jsx16, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
923
|
+
function ExecNavigation({
|
|
924
|
+
logo = "Priya",
|
|
925
|
+
logoHref = "/",
|
|
926
|
+
links = [
|
|
927
|
+
{ label: "Features", href: "#features" },
|
|
928
|
+
{ label: "Pricing", href: "#pricing" },
|
|
929
|
+
{ label: "FAQ", href: "#faq" }
|
|
930
|
+
],
|
|
931
|
+
ctaText = "Hire me",
|
|
932
|
+
ctaHref = "#pricing",
|
|
933
|
+
className
|
|
934
|
+
}) {
|
|
935
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState3(false);
|
|
936
|
+
const [isScrolled, setIsScrolled] = useState3(false);
|
|
937
|
+
useEffect3(() => {
|
|
938
|
+
const handleScroll = () => setIsScrolled(window.scrollY > 10);
|
|
939
|
+
window.addEventListener("scroll", handleScroll);
|
|
940
|
+
return () => window.removeEventListener("scroll", handleScroll);
|
|
941
|
+
}, []);
|
|
942
|
+
return /* @__PURE__ */ jsx16(
|
|
943
|
+
"nav",
|
|
825
944
|
{
|
|
826
|
-
|
|
827
|
-
|
|
828
|
-
|
|
829
|
-
|
|
830
|
-
|
|
831
|
-
|
|
832
|
-
|
|
833
|
-
|
|
834
|
-
|
|
835
|
-
|
|
836
|
-
|
|
837
|
-
|
|
838
|
-
|
|
839
|
-
|
|
840
|
-
gradientUnits: "userSpaceOnUse",
|
|
841
|
-
initial: {
|
|
842
|
-
x1: "0%",
|
|
843
|
-
x2: "0%",
|
|
844
|
-
y1: "0%",
|
|
845
|
-
y2: "0%"
|
|
846
|
-
},
|
|
847
|
-
animate: {
|
|
848
|
-
x1: gradientCoordinates.x1,
|
|
849
|
-
x2: gradientCoordinates.x2,
|
|
850
|
-
y1: gradientCoordinates.y1,
|
|
851
|
-
y2: gradientCoordinates.y2
|
|
945
|
+
className: cn(
|
|
946
|
+
"sticky top-0 z-50 w-full bg-(--color-surface) transition-[border-color] duration-200 border-b",
|
|
947
|
+
isScrolled ? "border-(--color-border-strong)" : "border-(--color-border)",
|
|
948
|
+
className
|
|
949
|
+
),
|
|
950
|
+
children: /* @__PURE__ */ jsxs10("div", { className: "max-w-6xl mx-auto px-6 lg:px-10 py-4", children: [
|
|
951
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex items-center justify-between", children: [
|
|
952
|
+
/* @__PURE__ */ jsx16(Link3, { href: logoHref, className: "flex items-baseline gap-2", children: /* @__PURE__ */ jsx16("span", { className: "exec-serif italic text-2xl text-(--color-fg)", children: logo }) }),
|
|
953
|
+
/* @__PURE__ */ jsx16("div", { className: "hidden lg:flex items-center gap-10", children: links.map((link) => /* @__PURE__ */ jsx16(
|
|
954
|
+
"a",
|
|
955
|
+
{
|
|
956
|
+
href: link.href,
|
|
957
|
+
className: "text-sm text-(--color-fg-muted) hover:text-(--color-fg) transition-colors",
|
|
958
|
+
children: link.label
|
|
852
959
|
},
|
|
853
|
-
|
|
854
|
-
|
|
855
|
-
|
|
856
|
-
|
|
857
|
-
|
|
858
|
-
|
|
960
|
+
link.href
|
|
961
|
+
)) }),
|
|
962
|
+
ctaText && ctaHref && /* @__PURE__ */ jsx16("div", { className: "hidden lg:flex items-center", children: /* @__PURE__ */ jsx16(ExecButton, { asChild: true, variant: "secondary", size: "sm", children: /* @__PURE__ */ jsx16("a", { href: ctaHref, children: ctaText }) }) }),
|
|
963
|
+
/* @__PURE__ */ jsx16(
|
|
964
|
+
"button",
|
|
965
|
+
{
|
|
966
|
+
className: "lg:hidden p-2 text-(--color-fg)",
|
|
967
|
+
onClick: () => setMobileMenuOpen(!mobileMenuOpen),
|
|
968
|
+
"aria-label": "Toggle menu",
|
|
969
|
+
children: mobileMenuOpen ? /* @__PURE__ */ jsx16(X2, { className: "w-5 h-5" }) : /* @__PURE__ */ jsx16(Menu2, { className: "w-5 h-5" })
|
|
970
|
+
}
|
|
971
|
+
)
|
|
972
|
+
] }),
|
|
973
|
+
mobileMenuOpen && /* @__PURE__ */ jsx16("div", { className: "lg:hidden border-t border-(--color-border) mt-4", children: /* @__PURE__ */ jsxs10("div", { className: "flex flex-col py-2", children: [
|
|
974
|
+
links.map((link) => /* @__PURE__ */ jsx16(
|
|
975
|
+
"a",
|
|
976
|
+
{
|
|
977
|
+
href: link.href,
|
|
978
|
+
className: "py-3 text-sm text-(--color-fg) border-b border-(--color-border) last:border-b-0",
|
|
979
|
+
onClick: () => setMobileMenuOpen(false),
|
|
980
|
+
children: link.label
|
|
859
981
|
},
|
|
860
|
-
|
|
861
|
-
|
|
862
|
-
|
|
863
|
-
|
|
864
|
-
|
|
865
|
-
]
|
|
866
|
-
}
|
|
867
|
-
) })
|
|
868
|
-
]
|
|
982
|
+
link.href
|
|
983
|
+
)),
|
|
984
|
+
ctaText && ctaHref && /* @__PURE__ */ jsx16(ExecButton, { asChild: true, variant: "secondary", size: "sm", className: "mt-3 self-start", onClick: () => setMobileMenuOpen(false), children: /* @__PURE__ */ jsx16("a", { href: ctaHref, children: ctaText }) })
|
|
985
|
+
] }) })
|
|
986
|
+
] })
|
|
869
987
|
}
|
|
870
988
|
);
|
|
871
989
|
}
|
|
872
990
|
|
|
873
|
-
// src/
|
|
874
|
-
import {
|
|
875
|
-
import { jsx as
|
|
876
|
-
function
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
991
|
+
// src/templates/executive/components/hero.tsx
|
|
992
|
+
import { HiArrowRight as HiArrowRight2 } from "react-icons/hi";
|
|
993
|
+
import { jsx as jsx17, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
994
|
+
function ExecHero({
|
|
995
|
+
heading = "Your AI Product Manager for GitHub",
|
|
996
|
+
description = "Priya triages issues, plans sprints, and grooms your backlog automatically. You focus on building.",
|
|
997
|
+
ctaText = "Get Started",
|
|
998
|
+
ctaHref = "#pricing",
|
|
999
|
+
secondaryCtaText,
|
|
1000
|
+
secondaryCtaHref,
|
|
1001
|
+
marqueeTitle = "Tools I work with",
|
|
1002
|
+
marqueeImages = [],
|
|
1003
|
+
className
|
|
885
1004
|
}) {
|
|
886
|
-
const
|
|
887
|
-
return /* @__PURE__ */
|
|
888
|
-
"
|
|
889
|
-
|
|
890
|
-
"
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
|
|
895
|
-
|
|
896
|
-
|
|
897
|
-
|
|
898
|
-
|
|
899
|
-
|
|
1005
|
+
const tools = marqueeImages.filter((s) => !/^(https?:)?\/\//i.test(s.trim()) && !s.trim().startsWith("data:"));
|
|
1006
|
+
return /* @__PURE__ */ jsxs11("section", { className: cn("bg-(--color-accent-field) text-(--color-accent-fg)", className), children: [
|
|
1007
|
+
/* @__PURE__ */ jsxs11("div", { className: "max-w-6xl mx-auto px-6 lg:px-10", children: [
|
|
1008
|
+
/* @__PURE__ */ jsx17(ScrollReveal, { direction: "up", trigger: "mount", children: /* @__PURE__ */ jsx17("h1", { className: "pt-16 md:pt-24 font-halant text-[clamp(48px,7.5vw,118px)] text-(--color-accent-fg) max-w-[14ch] -ml-0.5", children: heading }) }),
|
|
1009
|
+
/* @__PURE__ */ jsxs11("div", { className: "grid md:grid-cols-12 gap-x-6 gap-y-8 pt-10 md:pt-12 pb-14 md:pb-20", children: [
|
|
1010
|
+
/* @__PURE__ */ jsx17("div", { className: "md:col-span-7", children: /* @__PURE__ */ jsx17(ScrollReveal, { direction: "up", delay: 0.12, trigger: "mount", children: /* @__PURE__ */ jsx17("p", { className: "exec-serif italic text-xl md:text-2xl leading-relaxed text-(--color-accent-fg)/90 max-w-[44ch]", children: description }) }) }),
|
|
1011
|
+
/* @__PURE__ */ jsx17("div", { className: "md:col-span-4 md:col-start-9 flex md:justify-end md:items-end", children: /* @__PURE__ */ jsx17(ScrollReveal, { direction: "up", delay: 0.22, trigger: "mount", children: /* @__PURE__ */ jsxs11("div", { className: "flex flex-col sm:flex-row gap-3", children: [
|
|
1012
|
+
/* @__PURE__ */ jsx17(ExecButton, { asChild: true, className: "bg-(--color-accent-fg) text-(--color-accent-field) hover:bg-(--color-surface-raised)", children: /* @__PURE__ */ jsxs11("a", { href: ctaHref, children: [
|
|
1013
|
+
ctaText,
|
|
1014
|
+
/* @__PURE__ */ jsx17(HiArrowRight2, { className: "w-4 h-4" })
|
|
1015
|
+
] }) }),
|
|
1016
|
+
secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ jsx17(ExecButton, { asChild: true, variant: "secondary", className: "border-(--color-accent-fg)/40 text-(--color-accent-fg) hover:bg-(--color-accent-fg)/10", children: /* @__PURE__ */ jsx17("a", { href: secondaryCtaHref, children: secondaryCtaText }) })
|
|
1017
|
+
] }) }) })
|
|
1018
|
+
] })
|
|
1019
|
+
] }),
|
|
1020
|
+
tools.length > 0 && /* @__PURE__ */ jsx17("div", { className: "border-t border-(--color-accent-fg)/25 bg-(--color-accent-field)", "aria-label": marqueeTitle, children: /* @__PURE__ */ jsx17(Marquee, { className: "py-4 [--duration:32s] [--gap:2.5rem]", children: tools.map((tool, i) => /* @__PURE__ */ jsxs11(
|
|
1021
|
+
"span",
|
|
1022
|
+
{
|
|
1023
|
+
className: "flex items-center gap-x-10 font-halant uppercase text-base tracking-[0.08em] text-(--color-accent-fg)/85 whitespace-nowrap",
|
|
1024
|
+
children: [
|
|
1025
|
+
brandLabel(tool),
|
|
1026
|
+
/* @__PURE__ */ jsx17("span", { className: "inline-block size-[6px] bg-(--color-accent-fg)/50", "aria-hidden": "true" })
|
|
1027
|
+
]
|
|
1028
|
+
},
|
|
1029
|
+
`${tool}-${i}`
|
|
1030
|
+
)) }) })
|
|
1031
|
+
] });
|
|
900
1032
|
}
|
|
901
1033
|
|
|
902
|
-
// src/components/
|
|
903
|
-
import
|
|
904
|
-
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
{
|
|
910
|
-
ref,
|
|
911
|
-
className: cn("z-10 flex size-16 items-center justify-center rounded-lg bg-card border border-border p-3 integration-square-shadow", className),
|
|
912
|
-
children
|
|
913
|
-
}
|
|
914
|
-
);
|
|
915
|
-
});
|
|
916
|
-
Square.displayName = "Square";
|
|
917
|
-
function Integration({
|
|
918
|
-
title = "Connect in Seconds",
|
|
919
|
-
description = "Just connect your account and get started immediately \u2013 no configuration, no setup, no hassle.",
|
|
920
|
-
buttonText = "Get Started",
|
|
921
|
-
buttonHref = "#pricing",
|
|
922
|
-
leftNode,
|
|
923
|
-
rightNode,
|
|
924
|
-
beamAnimations = [
|
|
925
|
-
{ startYOffset: 10, endYOffset: 10, curvature: -20, duration: 3 },
|
|
926
|
-
{ startYOffset: -10, endYOffset: -10, curvature: 20, duration: 3, reverse: true }
|
|
927
|
-
],
|
|
928
|
-
gridPatternWidth = 30,
|
|
929
|
-
gridPatternHeight = 30,
|
|
930
|
-
maxWidth = "5xl",
|
|
931
|
-
className,
|
|
932
|
-
contentOrder = "left"
|
|
1034
|
+
// src/templates/executive/components/features.tsx
|
|
1035
|
+
import { jsx as jsx18, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
1036
|
+
function ExecFeatures({
|
|
1037
|
+
heading = "How It Works",
|
|
1038
|
+
description,
|
|
1039
|
+
features = [],
|
|
1040
|
+
className
|
|
933
1041
|
}) {
|
|
934
|
-
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
945
|
-
|
|
946
|
-
|
|
947
|
-
|
|
948
|
-
|
|
949
|
-
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
|
|
969
|
-
|
|
970
|
-
|
|
971
|
-
|
|
972
|
-
|
|
973
|
-
|
|
974
|
-
|
|
975
|
-
|
|
976
|
-
|
|
977
|
-
"
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
const content = /* @__PURE__ */ jsxs11("div", { className: "space-y-6", children: [
|
|
981
|
-
/* @__PURE__ */ jsx14(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsx14("h2", { className: "font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground", children: title }) }),
|
|
982
|
-
/* @__PURE__ */ jsx14(ScrollReveal, { direction: "up", delay: 0.2, children: /* @__PURE__ */ jsx14("p", { className: "text-base text-muted-foreground max-w-lg", children: description }) }),
|
|
983
|
-
buttonText && buttonHref && /* @__PURE__ */ jsx14(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx14(Button6, { asChild: true, variant: "default", children: /* @__PURE__ */ jsx14("a", { href: buttonHref, children: buttonText }) }) })
|
|
984
|
-
] });
|
|
985
|
-
const animation = /* @__PURE__ */ jsx14(ScrollReveal, { direction: contentOrder === "left" ? "right" : "left", delay: 0.2, children: /* @__PURE__ */ jsxs11("div", { className: "relative flex aspect-square max-w-md mx-auto w-full items-center justify-center overflow-hidden rounded-lg", ref: containerRef, children: [
|
|
986
|
-
/* @__PURE__ */ jsx14(
|
|
987
|
-
GridPattern,
|
|
988
|
-
{
|
|
989
|
-
width: gridPatternWidth,
|
|
990
|
-
height: gridPatternHeight,
|
|
991
|
-
className: "opacity-30 mask-[radial-gradient(ellipse_at_center,black_40%,transparent_85%)] dark:mask-[radial-gradient(ellipse_at_center,white_40%,transparent_85%)]"
|
|
992
|
-
}
|
|
993
|
-
),
|
|
994
|
-
/* @__PURE__ */ jsxs11("div", { className: "flex size-full flex-row items-center justify-center gap-20 relative z-10", children: [
|
|
995
|
-
/* @__PURE__ */ jsx14("div", { className: "flex flex-col justify-center", children: renderNode(leftNode, leftRef) }),
|
|
996
|
-
/* @__PURE__ */ jsx14("div", { className: "flex flex-col justify-center", children: renderNode(rightNode, rightRef) })
|
|
1042
|
+
return /* @__PURE__ */ jsx18("section", { id: "features", className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsxs12("div", { className: "max-w-6xl mx-auto px-6 lg:px-10 py-16 md:py-24", children: [
|
|
1043
|
+
/* @__PURE__ */ jsx18(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsxs12("div", { className: "grid md:grid-cols-12 gap-6 pb-8 border-b-[3px] border-(--color-fg)", children: [
|
|
1044
|
+
/* @__PURE__ */ jsx18("h2", { className: "md:col-span-7 font-halant text-[clamp(44px,6vw,84px)] text-(--color-fg)", children: heading }),
|
|
1045
|
+
description && /* @__PURE__ */ jsx18("p", { className: "md:col-span-4 md:col-start-9 text-base leading-relaxed text-(--color-fg-soft) max-w-[58ch] self-end", children: description })
|
|
1046
|
+
] }) }),
|
|
1047
|
+
/* @__PURE__ */ jsx18("ol", { className: "list-none m-0 p-0", children: features.map((feature, index) => /* @__PURE__ */ jsx18("li", { className: "border-b border-(--color-border)", children: /* @__PURE__ */ jsx18(ScrollReveal, { direction: "up", delay: 0.05, children: /* @__PURE__ */ jsxs12("div", { className: "grid md:grid-cols-12 gap-x-6 gap-y-6 py-10 md:py-14", children: [
|
|
1048
|
+
/* @__PURE__ */ jsx18("div", { className: "md:col-span-2", children: /* @__PURE__ */ jsx18("span", { className: "exec-figure font-halant block text-[clamp(64px,8vw,124px)] leading-[0.8] text-(--color-accent-strong) md:-mt-2", children: feature.badge }) }),
|
|
1049
|
+
/* @__PURE__ */ jsxs12("div", { className: "md:col-span-4", children: [
|
|
1050
|
+
/* @__PURE__ */ jsx18("h3", { className: "text-xl font-semibold text-(--color-fg)", children: feature.title }),
|
|
1051
|
+
/* @__PURE__ */ jsx18("p", { className: "mt-3 text-base leading-relaxed text-(--color-fg-soft)", children: feature.description }),
|
|
1052
|
+
/* @__PURE__ */ jsx18("ul", { className: "mt-6 space-y-2.5", children: feature.items.map((item, itemIndex) => /* @__PURE__ */ jsxs12("li", { className: "flex items-baseline gap-3 text-sm text-(--color-fg)", children: [
|
|
1053
|
+
/* @__PURE__ */ jsx18("span", { className: "inline-block size-[5px] shrink-0 translate-y-[-1px] bg-(--color-accent-strong)", "aria-hidden": "true" }),
|
|
1054
|
+
item.text
|
|
1055
|
+
] }, itemIndex)) })
|
|
1056
|
+
] }),
|
|
1057
|
+
feature.code && /* @__PURE__ */ jsx18("div", { className: "md:col-span-6 md:col-start-7", children: /* @__PURE__ */ jsx18(
|
|
1058
|
+
CodeWindow,
|
|
1059
|
+
{
|
|
1060
|
+
code: feature.code,
|
|
1061
|
+
language: feature.language,
|
|
1062
|
+
className: "rounded-[2px] border border-(--color-border) bg-[#0d1117] p-5 text-left text-xs leading-relaxed text-[#e6edf3]"
|
|
1063
|
+
}
|
|
1064
|
+
) })
|
|
1065
|
+
] }) }) }, index)) })
|
|
1066
|
+
] }) });
|
|
1067
|
+
}
|
|
1068
|
+
|
|
1069
|
+
// src/templates/executive/components/pricing.tsx
|
|
1070
|
+
import { jsx as jsx19, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
1071
|
+
function ExecPricing({
|
|
1072
|
+
heading = "Simple, transparent pricing",
|
|
1073
|
+
subheading,
|
|
1074
|
+
price = "$16",
|
|
1075
|
+
priceUnit = "/ month",
|
|
1076
|
+
trialText,
|
|
1077
|
+
ctaText = "Get Started",
|
|
1078
|
+
ctaHref = "#contact",
|
|
1079
|
+
featuresHeading = "What's included",
|
|
1080
|
+
features = [],
|
|
1081
|
+
securityNote,
|
|
1082
|
+
className
|
|
1083
|
+
}) {
|
|
1084
|
+
return /* @__PURE__ */ jsx19("section", { id: "pricing", className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsxs13("div", { className: "max-w-6xl mx-auto px-6 lg:px-10 py-16 md:py-24", children: [
|
|
1085
|
+
/* @__PURE__ */ jsxs13("div", { className: "grid md:grid-cols-12 gap-6 pb-8 border-b-[3px] border-(--color-fg)", children: [
|
|
1086
|
+
/* @__PURE__ */ jsx19("h2", { className: "md:col-span-7 font-halant text-[clamp(44px,6vw,84px)] text-(--color-fg)", children: heading }),
|
|
1087
|
+
subheading && /* @__PURE__ */ jsx19("p", { className: "md:col-span-6 md:col-start-7 text-base leading-relaxed text-(--color-fg-soft) max-w-[58ch] self-end", children: subheading })
|
|
997
1088
|
] }),
|
|
998
|
-
|
|
999
|
-
|
|
1089
|
+
/* @__PURE__ */ jsxs13("div", { className: "grid md:grid-cols-12 gap-x-6 gap-y-10 py-12", children: [
|
|
1090
|
+
/* @__PURE__ */ jsxs13("div", { className: "md:col-span-5", children: [
|
|
1091
|
+
/* @__PURE__ */ jsxs13("div", { className: "flex items-baseline gap-2", children: [
|
|
1092
|
+
/* @__PURE__ */ jsx19("span", { className: "exec-figure font-halant text-6xl text-(--color-accent-strong)", children: price }),
|
|
1093
|
+
/* @__PURE__ */ jsx19("span", { className: "text-sm text-(--color-fg-muted)", children: priceUnit })
|
|
1094
|
+
] }),
|
|
1095
|
+
trialText && /* @__PURE__ */ jsx19("p", { className: "mt-3 text-sm text-(--color-fg-soft)", children: trialText }),
|
|
1096
|
+
/* @__PURE__ */ jsx19("div", { className: "mt-8", children: /* @__PURE__ */ jsx19(ExecButton, { asChild: true, children: /* @__PURE__ */ jsx19("a", { href: ctaHref, children: ctaText }) }) })
|
|
1097
|
+
] }),
|
|
1098
|
+
/* @__PURE__ */ jsxs13("div", { className: "md:col-span-6 md:col-start-7", children: [
|
|
1099
|
+
/* @__PURE__ */ jsx19("p", { className: "text-xs font-medium tracking-[0.18em] uppercase text-(--color-fg-muted)", children: featuresHeading }),
|
|
1100
|
+
/* @__PURE__ */ jsx19("ul", { className: "mt-4 columns-1 sm:columns-2 gap-x-10", children: features.map((feature, index) => /* @__PURE__ */ jsx19(
|
|
1101
|
+
"li",
|
|
1102
|
+
{
|
|
1103
|
+
className: "break-inside-avoid py-2.5 text-sm text-(--color-fg) border-t border-(--color-border) first:border-t-0",
|
|
1104
|
+
children: feature.text
|
|
1105
|
+
},
|
|
1106
|
+
index
|
|
1107
|
+
)) })
|
|
1108
|
+
] })
|
|
1109
|
+
] }),
|
|
1110
|
+
securityNote && /* @__PURE__ */ jsx19("div", { className: "border-t border-(--color-border-strong) pt-5", children: /* @__PURE__ */ jsxs13("p", { className: "text-xs leading-relaxed text-(--color-fg-muted) max-w-[70ch]", children: [
|
|
1111
|
+
/* @__PURE__ */ jsx19("span", { "aria-hidden": "true", children: "\u2020 " }),
|
|
1112
|
+
securityNote
|
|
1113
|
+
] }) })
|
|
1114
|
+
] }) });
|
|
1115
|
+
}
|
|
1116
|
+
|
|
1117
|
+
// src/templates/executive/components/pricing-tiers.tsx
|
|
1118
|
+
import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
|
|
1119
|
+
function ExecPricingTiers({
|
|
1120
|
+
heading = "Simple, transparent pricing",
|
|
1121
|
+
subheading,
|
|
1122
|
+
tiers = [],
|
|
1123
|
+
securityNote,
|
|
1124
|
+
className
|
|
1125
|
+
}) {
|
|
1126
|
+
return /* @__PURE__ */ jsx20("section", { id: "pricing", className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsxs14("div", { className: "max-w-6xl mx-auto px-6 lg:px-10 py-16 md:py-24", children: [
|
|
1127
|
+
/* @__PURE__ */ jsxs14("div", { className: "grid md:grid-cols-12 gap-6 pb-8 border-b-[3px] border-(--color-fg)", children: [
|
|
1128
|
+
/* @__PURE__ */ jsx20("h2", { className: "md:col-span-7 font-halant text-[clamp(44px,6vw,84px)] text-(--color-fg)", children: heading }),
|
|
1129
|
+
subheading && /* @__PURE__ */ jsx20("p", { className: "md:col-span-4 md:col-start-9 text-base leading-relaxed text-(--color-fg-soft) max-w-[58ch] self-end", children: subheading })
|
|
1130
|
+
] }),
|
|
1131
|
+
/* @__PURE__ */ jsx20("div", { className: "grid md:grid-cols-2 gap-y-8 md:gap-y-0 pt-10 md:pt-12", children: tiers.map((tier, index) => {
|
|
1132
|
+
const featured = !!tier.featured;
|
|
1133
|
+
return /* @__PURE__ */ jsxs14(
|
|
1134
|
+
"div",
|
|
1135
|
+
{
|
|
1136
|
+
className: cn(
|
|
1137
|
+
"flex flex-col p-7 md:p-10",
|
|
1138
|
+
featured ? "bg-(--color-accent-field) text-(--color-accent-fg) rounded-[2px]" : "border border-(--color-border)"
|
|
1139
|
+
),
|
|
1140
|
+
children: [
|
|
1141
|
+
/* @__PURE__ */ jsxs14("div", { className: "flex items-baseline justify-between", children: [
|
|
1142
|
+
/* @__PURE__ */ jsx20("h3", { className: cn("text-lg font-semibold", featured ? "text-(--color-accent-fg)" : "text-(--color-fg)"), children: tier.title }),
|
|
1143
|
+
/* @__PURE__ */ jsx20(
|
|
1144
|
+
"span",
|
|
1145
|
+
{
|
|
1146
|
+
className: cn(
|
|
1147
|
+
"exec-figure text-xs tracking-[0.18em] uppercase",
|
|
1148
|
+
featured ? "text-(--color-accent-fg)/60" : "text-(--color-fg-muted)"
|
|
1149
|
+
),
|
|
1150
|
+
"aria-hidden": "true",
|
|
1151
|
+
children: String(index + 1).padStart(2, "0")
|
|
1152
|
+
}
|
|
1153
|
+
)
|
|
1154
|
+
] }),
|
|
1155
|
+
/* @__PURE__ */ jsx20(
|
|
1156
|
+
"p",
|
|
1157
|
+
{
|
|
1158
|
+
className: cn(
|
|
1159
|
+
"mt-3 text-sm leading-relaxed max-w-[44ch]",
|
|
1160
|
+
featured ? "text-(--color-accent-fg)/75" : "text-(--color-fg-soft)"
|
|
1161
|
+
),
|
|
1162
|
+
children: tier.description
|
|
1163
|
+
}
|
|
1164
|
+
),
|
|
1165
|
+
/* @__PURE__ */ jsxs14("div", { className: "mt-9 flex items-baseline gap-2", children: [
|
|
1166
|
+
/* @__PURE__ */ jsx20(
|
|
1167
|
+
"span",
|
|
1168
|
+
{
|
|
1169
|
+
className: cn(
|
|
1170
|
+
"exec-figure font-halant text-7xl md:text-8xl leading-[0.85]",
|
|
1171
|
+
featured ? "text-(--color-accent-fg)" : "text-(--color-fg)"
|
|
1172
|
+
),
|
|
1173
|
+
children: tier.price
|
|
1174
|
+
}
|
|
1175
|
+
),
|
|
1176
|
+
/* @__PURE__ */ jsx20("span", { className: cn("text-sm", featured ? "text-(--color-accent-fg)/60" : "text-(--color-fg-muted)"), children: tier.priceUnit })
|
|
1177
|
+
] }),
|
|
1178
|
+
/* @__PURE__ */ jsx20("div", { className: "mt-9", children: featured ? /* @__PURE__ */ jsx20(ExecButton, { asChild: true, className: "bg-(--color-accent-fg) text-(--color-accent-field) hover:bg-(--color-surface-raised) w-full sm:w-auto", children: /* @__PURE__ */ jsx20("a", { href: tier.ctaHref || "#", children: tier.ctaText }) }) : /* @__PURE__ */ jsx20(ExecButton, { asChild: true, variant: "secondary", className: "w-full sm:w-auto", children: /* @__PURE__ */ jsx20("a", { href: tier.ctaHref || "#", children: tier.ctaText }) }) }),
|
|
1179
|
+
/* @__PURE__ */ jsx20("ul", { className: "mt-10 flex-1", children: tier.features.map((feature, featureIndex) => /* @__PURE__ */ jsx20(
|
|
1180
|
+
"li",
|
|
1181
|
+
{
|
|
1182
|
+
className: cn(
|
|
1183
|
+
"py-2.5 text-sm border-t first:border-t-0",
|
|
1184
|
+
featured ? "text-(--color-accent-fg)/90 border-(--color-accent-fg)/20" : "text-(--color-fg) border-(--color-border)"
|
|
1185
|
+
),
|
|
1186
|
+
children: feature.text
|
|
1187
|
+
},
|
|
1188
|
+
featureIndex
|
|
1189
|
+
)) })
|
|
1190
|
+
]
|
|
1191
|
+
},
|
|
1192
|
+
index
|
|
1193
|
+
);
|
|
1194
|
+
}) }),
|
|
1195
|
+
securityNote && /* @__PURE__ */ jsx20("div", { className: "mt-10 border-t border-(--color-border-strong) pt-5", children: /* @__PURE__ */ jsxs14("p", { className: "text-xs leading-relaxed text-(--color-fg-muted) max-w-[70ch]", children: [
|
|
1196
|
+
/* @__PURE__ */ jsx20("span", { "aria-hidden": "true", children: "\u2020 " }),
|
|
1197
|
+
securityNote
|
|
1198
|
+
] }) })
|
|
1199
|
+
] }) });
|
|
1200
|
+
}
|
|
1201
|
+
|
|
1202
|
+
// src/templates/executive/components/faq.tsx
|
|
1203
|
+
import { Accordion as Accordion2, AccordionContent as AccordionContent2, AccordionItem as AccordionItem2, AccordionTrigger as AccordionTrigger2 } from "@mdxui/primitives";
|
|
1204
|
+
import { jsx as jsx21, jsxs as jsxs15 } from "react/jsx-runtime";
|
|
1205
|
+
function ExecFAQ({ heading = "FAQs", faqs = [], className }) {
|
|
1206
|
+
return /* @__PURE__ */ jsx21("section", { id: "faq", className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsxs15("div", { className: "max-w-6xl mx-auto px-6 lg:px-10 py-16 md:py-24", children: [
|
|
1207
|
+
/* @__PURE__ */ jsx21("div", { className: "pb-8 border-b-[3px] border-(--color-fg)", children: /* @__PURE__ */ jsx21("h2", { className: "font-halant text-[clamp(44px,6vw,84px)] text-(--color-fg)", children: heading }) }),
|
|
1208
|
+
/* @__PURE__ */ jsx21(Accordion2, { type: "single", collapsible: true, children: faqs.map((faq, index) => /* @__PURE__ */ jsxs15(
|
|
1209
|
+
AccordionItem2,
|
|
1000
1210
|
{
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1211
|
+
value: `item-${index}`,
|
|
1212
|
+
className: "border-b border-(--color-border) rounded-none",
|
|
1213
|
+
children: [
|
|
1214
|
+
/* @__PURE__ */ jsx21(AccordionTrigger2, { className: "hover:no-underline py-6 text-base font-medium text-(--color-fg) gap-6", children: /* @__PURE__ */ jsxs15("span", { className: "flex items-baseline gap-5 text-left", children: [
|
|
1215
|
+
/* @__PURE__ */ jsx21("span", { className: "exec-figure text-xs text-(--color-fg-muted) shrink-0", "aria-hidden": "true", children: String(index + 1).padStart(2, "0") }),
|
|
1216
|
+
faq.question
|
|
1217
|
+
] }) }),
|
|
1218
|
+
/* @__PURE__ */ jsx21(AccordionContent2, { className: "pb-6 pl-10 text-sm leading-relaxed text-(--color-fg-soft) max-w-[65ch]", children: faq.answer })
|
|
1219
|
+
]
|
|
1010
1220
|
},
|
|
1011
1221
|
index
|
|
1012
|
-
))
|
|
1222
|
+
)) })
|
|
1013
1223
|
] }) });
|
|
1014
|
-
return /* @__PURE__ */ jsx14("section", { className: cn("pt-10 sm:pt-0 px-8 lg:px-24 bg-background", className), children: /* @__PURE__ */ jsx14("div", { className: cn(maxWidthClasses[maxWidth], "mx-auto"), children: /* @__PURE__ */ jsx14("div", { className: "grid lg:grid-cols-2 gap-1 items-center", children: contentOrder === "left" ? /* @__PURE__ */ jsxs11(Fragment2, { children: [
|
|
1015
|
-
content,
|
|
1016
|
-
animation
|
|
1017
|
-
] }) : /* @__PURE__ */ jsxs11(Fragment2, { children: [
|
|
1018
|
-
animation,
|
|
1019
|
-
content
|
|
1020
|
-
] }) }) }) });
|
|
1021
1224
|
}
|
|
1022
1225
|
|
|
1023
|
-
// src/
|
|
1024
|
-
import {
|
|
1025
|
-
|
|
1026
|
-
|
|
1027
|
-
|
|
1028
|
-
|
|
1029
|
-
|
|
1030
|
-
|
|
1031
|
-
|
|
1032
|
-
|
|
1033
|
-
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1043
|
-
|
|
1044
|
-
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
|
|
1226
|
+
// src/templates/executive/components/cta.tsx
|
|
1227
|
+
import { HiArrowRight as HiArrowRight3 } from "react-icons/hi";
|
|
1228
|
+
import { jsx as jsx22, jsxs as jsxs16 } from "react/jsx-runtime";
|
|
1229
|
+
function ExecCTA({
|
|
1230
|
+
heading = "Ready to Save 15 Hours Per Week?",
|
|
1231
|
+
subheading,
|
|
1232
|
+
buttons = [{ text: "Get Started", href: "#pricing", variant: "primary", showArrow: true }],
|
|
1233
|
+
className
|
|
1234
|
+
}) {
|
|
1235
|
+
return /* @__PURE__ */ jsx22("section", { className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsx22("div", { className: "max-w-6xl mx-auto px-6 lg:px-10 pb-16 md:pb-24", children: /* @__PURE__ */ jsx22("div", { className: "exec-double-rule pt-10 md:pt-12", children: /* @__PURE__ */ jsx22(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx22("div", { className: "rounded-[2px] bg-(--color-fg) px-8 py-14 md:px-14 md:py-20", children: /* @__PURE__ */ jsxs16("div", { className: "grid md:grid-cols-12 gap-x-6 gap-y-10 items-end", children: [
|
|
1236
|
+
/* @__PURE__ */ jsxs16("div", { className: "md:col-span-8", children: [
|
|
1237
|
+
/* @__PURE__ */ jsx22("h2", { className: "font-halant text-[clamp(44px,6vw,92px)] text-(--color-surface) max-w-[16ch]", children: heading }),
|
|
1238
|
+
subheading && /* @__PURE__ */ jsx22("p", { className: "exec-serif italic mt-5 text-lg md:text-xl text-(--color-surface)/70", children: subheading })
|
|
1239
|
+
] }),
|
|
1240
|
+
/* @__PURE__ */ jsx22("div", { className: "md:col-span-4 flex md:justify-end", children: /* @__PURE__ */ jsx22("div", { className: "flex flex-col sm:flex-row gap-3", children: buttons.map(
|
|
1241
|
+
(button, index) => button.variant === "primary" || !button.variant ? /* @__PURE__ */ jsx22(ExecButton, { asChild: true, className: "bg-(--color-accent-field) text-(--color-accent-fg) hover:bg-(--color-accent)", children: /* @__PURE__ */ jsxs16("a", { href: button.href, children: [
|
|
1242
|
+
button.text,
|
|
1243
|
+
button.showArrow && /* @__PURE__ */ jsx22(HiArrowRight3, { className: "w-4 h-4" })
|
|
1244
|
+
] }) }, index) : /* @__PURE__ */ jsx22(
|
|
1245
|
+
ExecButton,
|
|
1246
|
+
{
|
|
1247
|
+
asChild: true,
|
|
1248
|
+
variant: "secondary",
|
|
1249
|
+
className: "border-(--color-surface)/40 text-(--color-surface) hover:bg-(--color-surface)/10",
|
|
1250
|
+
children: /* @__PURE__ */ jsxs16("a", { href: button.href, children: [
|
|
1251
|
+
button.text,
|
|
1252
|
+
button.showArrow && /* @__PURE__ */ jsx22(HiArrowRight3, { className: "w-4 h-4" })
|
|
1253
|
+
] })
|
|
1254
|
+
},
|
|
1255
|
+
index
|
|
1256
|
+
)
|
|
1257
|
+
) }) })
|
|
1258
|
+
] }) }) }) }) }) });
|
|
1050
1259
|
}
|
|
1051
1260
|
|
|
1052
|
-
// src/
|
|
1053
|
-
import
|
|
1054
|
-
|
|
1055
|
-
|
|
1056
|
-
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
1060
|
-
|
|
1061
|
-
|
|
1062
|
-
|
|
1063
|
-
|
|
1064
|
-
|
|
1065
|
-
|
|
1066
|
-
|
|
1067
|
-
|
|
1068
|
-
|
|
1069
|
-
|
|
1070
|
-
|
|
1071
|
-
|
|
1072
|
-
|
|
1073
|
-
|
|
1074
|
-
|
|
1075
|
-
|
|
1076
|
-
|
|
1077
|
-
|
|
1078
|
-
|
|
1079
|
-
|
|
1080
|
-
|
|
1081
|
-
/* @__PURE__ */
|
|
1082
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
1085
|
-
|
|
1086
|
-
|
|
1087
|
-
|
|
1088
|
-
}
|
|
1089
|
-
),
|
|
1090
|
-
/* @__PURE__ */ jsx15(
|
|
1091
|
-
Features,
|
|
1092
|
-
{
|
|
1093
|
-
heading: features.heading,
|
|
1094
|
-
description: features.description,
|
|
1095
|
-
features: features.features
|
|
1096
|
-
}
|
|
1097
|
-
),
|
|
1098
|
-
integration && /* @__PURE__ */ jsx15(
|
|
1099
|
-
Integration,
|
|
1100
|
-
{
|
|
1101
|
-
title: integration.title,
|
|
1102
|
-
description: integration.description,
|
|
1103
|
-
buttonText: integration.buttonText,
|
|
1104
|
-
buttonHref: integration.buttonHref,
|
|
1105
|
-
leftNode: integration.leftNode,
|
|
1106
|
-
rightNode: integration.rightNode
|
|
1107
|
-
}
|
|
1108
|
-
),
|
|
1109
|
-
pricing.variant === "single" ? /* @__PURE__ */ jsx15(
|
|
1110
|
-
Pricing,
|
|
1111
|
-
{
|
|
1112
|
-
heading: pricing.heading,
|
|
1113
|
-
subheading: pricing.subheading,
|
|
1114
|
-
price: pricing.price,
|
|
1115
|
-
priceUnit: pricing.priceUnit,
|
|
1116
|
-
trialText: pricing.trialText,
|
|
1117
|
-
ctaText: pricing.ctaText,
|
|
1118
|
-
ctaHref: pricing.ctaHref,
|
|
1119
|
-
featuresHeading: pricing.featuresHeading,
|
|
1120
|
-
features: pricing.features,
|
|
1121
|
-
securityNote: pricing.securityNote
|
|
1122
|
-
}
|
|
1123
|
-
) : /* @__PURE__ */ jsx15(
|
|
1124
|
-
PricingTiers,
|
|
1125
|
-
{
|
|
1126
|
-
heading: pricing.heading,
|
|
1127
|
-
subheading: pricing.subheading,
|
|
1128
|
-
tiers: pricing.tiers,
|
|
1129
|
-
securityNote: pricing.securityNote
|
|
1130
|
-
}
|
|
1131
|
-
),
|
|
1132
|
-
/* @__PURE__ */ jsx15(FAQ, { heading: faq.heading, faqs: faq.faqs }),
|
|
1133
|
-
/* @__PURE__ */ jsx15(CTA, { heading: cta.heading, subheading: cta.subheading, buttons: cta.buttons }),
|
|
1134
|
-
contact && /* @__PURE__ */ jsx15(
|
|
1135
|
-
Contact,
|
|
1261
|
+
// src/templates/executive/components/footer.tsx
|
|
1262
|
+
import Link4 from "next/link";
|
|
1263
|
+
import { jsx as jsx23, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
1264
|
+
function ExecFooter({
|
|
1265
|
+
logo = "Priya",
|
|
1266
|
+
description = "Your AI Product Manager for GitHub. Automate issue triage, sprint planning, and backlog grooming.",
|
|
1267
|
+
quickLinks = [
|
|
1268
|
+
{ label: "Pricing", href: "/#pricing" },
|
|
1269
|
+
{ label: "How it works", href: "/#features" },
|
|
1270
|
+
{ label: "Contact", href: "/contact" }
|
|
1271
|
+
],
|
|
1272
|
+
socialLinks = [
|
|
1273
|
+
{ label: "GitHub", href: "https://github.com" },
|
|
1274
|
+
{ label: "npm", href: "https://npmjs.com" },
|
|
1275
|
+
{ label: "X", href: "https://x.com/dotdo_ai" }
|
|
1276
|
+
],
|
|
1277
|
+
copyrightText = "Priya.do \xA9 2025. All rights reserved.",
|
|
1278
|
+
className
|
|
1279
|
+
}) {
|
|
1280
|
+
return /* @__PURE__ */ jsx23("footer", { className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsx23("div", { className: "max-w-6xl mx-auto px-6 lg:px-10 pb-12", children: /* @__PURE__ */ jsxs17("div", { className: "exec-double-rule pt-10", children: [
|
|
1281
|
+
/* @__PURE__ */ jsxs17("div", { className: "grid md:grid-cols-12 gap-x-6 gap-y-10", children: [
|
|
1282
|
+
/* @__PURE__ */ jsxs17("div", { className: "md:col-span-6", children: [
|
|
1283
|
+
/* @__PURE__ */ jsx23(Link4, { href: "/", className: "inline-block", children: /* @__PURE__ */ jsx23("span", { className: "exec-serif italic text-4xl md:text-5xl text-(--color-fg)", children: logo }) }),
|
|
1284
|
+
/* @__PURE__ */ jsxs17("div", { className: "mt-4 flex items-baseline gap-3 border-t border-(--color-border) pt-3 max-w-[44ch]", children: [
|
|
1285
|
+
/* @__PURE__ */ jsx23("span", { className: "inline-block size-[7px] shrink-0 translate-y-[-1px] bg-(--color-accent-strong)", "aria-hidden": "true" }),
|
|
1286
|
+
/* @__PURE__ */ jsx23("p", { className: "text-sm leading-relaxed text-(--color-fg-muted)", children: description })
|
|
1287
|
+
] })
|
|
1288
|
+
] }),
|
|
1289
|
+
/* @__PURE__ */ jsxs17("div", { className: "md:col-span-3", children: [
|
|
1290
|
+
/* @__PURE__ */ jsx23("p", { className: "text-xs font-medium tracking-[0.18em] uppercase text-(--color-fg-muted)", children: "Index" }),
|
|
1291
|
+
/* @__PURE__ */ jsx23("ul", { className: "mt-4 space-y-2", children: quickLinks.map((link) => /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsx23(Link4, { href: link.href, className: "text-sm text-(--color-fg-soft) hover:text-(--color-fg) transition-colors", children: link.label }) }, link.label)) })
|
|
1292
|
+
] }),
|
|
1293
|
+
/* @__PURE__ */ jsxs17("div", { className: "md:col-span-3", children: [
|
|
1294
|
+
/* @__PURE__ */ jsx23("p", { className: "text-xs font-medium tracking-[0.18em] uppercase text-(--color-fg-muted)", children: "Elsewhere" }),
|
|
1295
|
+
/* @__PURE__ */ jsx23("ul", { className: "mt-4 space-y-2", children: socialLinks.map((link) => /* @__PURE__ */ jsx23("li", { children: /* @__PURE__ */ jsx23(
|
|
1296
|
+
Link4,
|
|
1136
1297
|
{
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1298
|
+
href: link.href,
|
|
1299
|
+
target: "_blank",
|
|
1300
|
+
rel: "noopener noreferrer",
|
|
1301
|
+
className: "text-sm text-(--color-fg-soft) hover:text-(--color-fg) transition-colors",
|
|
1302
|
+
children: link.label
|
|
1141
1303
|
}
|
|
1142
|
-
)
|
|
1143
|
-
]
|
|
1144
|
-
}
|
|
1145
|
-
|
|
1304
|
+
) }, link.label)) })
|
|
1305
|
+
] })
|
|
1306
|
+
] }),
|
|
1307
|
+
/* @__PURE__ */ jsx23("div", { className: "mt-12 pt-5 border-t border-(--color-border)", children: /* @__PURE__ */ jsx23("p", { className: "text-xs text-(--color-fg-muted)", children: copyrightText }) })
|
|
1308
|
+
] }) }) });
|
|
1309
|
+
}
|
|
1310
|
+
|
|
1311
|
+
// src/templates/executive/view.tsx
|
|
1312
|
+
import { Fragment as Fragment3, jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
1313
|
+
function ExecutiveView({ content, brandName, hostname }) {
|
|
1314
|
+
const { hero, features, pricing, faq, cta } = content;
|
|
1315
|
+
return /* @__PURE__ */ jsxs18(Fragment3, { children: [
|
|
1316
|
+
/* @__PURE__ */ jsx24(ExecNavigation, { logo: brandName }),
|
|
1317
|
+
/* @__PURE__ */ jsxs18("main", { children: [
|
|
1318
|
+
/* @__PURE__ */ jsx24(
|
|
1319
|
+
ExecHero,
|
|
1320
|
+
{
|
|
1321
|
+
heading: hero.heading,
|
|
1322
|
+
description: hero.description,
|
|
1323
|
+
ctaText: hero.ctaText,
|
|
1324
|
+
ctaHref: hero.ctaHref,
|
|
1325
|
+
secondaryCtaText: hero.secondaryCtaText,
|
|
1326
|
+
secondaryCtaHref: hero.secondaryCtaHref,
|
|
1327
|
+
marqueeTitle: hero.marqueeTitle,
|
|
1328
|
+
marqueeImages: hero.marqueeImages
|
|
1329
|
+
}
|
|
1330
|
+
),
|
|
1331
|
+
/* @__PURE__ */ jsx24(
|
|
1332
|
+
ExecFeatures,
|
|
1333
|
+
{
|
|
1334
|
+
heading: features.heading,
|
|
1335
|
+
description: features.description,
|
|
1336
|
+
features: features.features
|
|
1337
|
+
}
|
|
1338
|
+
),
|
|
1339
|
+
pricing.variant === "single" ? /* @__PURE__ */ jsx24(
|
|
1340
|
+
ExecPricing,
|
|
1341
|
+
{
|
|
1342
|
+
heading: pricing.heading,
|
|
1343
|
+
subheading: pricing.subheading,
|
|
1344
|
+
price: pricing.price,
|
|
1345
|
+
priceUnit: pricing.priceUnit,
|
|
1346
|
+
trialText: pricing.trialText,
|
|
1347
|
+
ctaText: pricing.ctaText,
|
|
1348
|
+
ctaHref: pricing.ctaHref,
|
|
1349
|
+
featuresHeading: pricing.featuresHeading,
|
|
1350
|
+
features: pricing.features,
|
|
1351
|
+
securityNote: pricing.securityNote
|
|
1352
|
+
}
|
|
1353
|
+
) : /* @__PURE__ */ jsx24(
|
|
1354
|
+
ExecPricingTiers,
|
|
1355
|
+
{
|
|
1356
|
+
heading: pricing.heading,
|
|
1357
|
+
subheading: pricing.subheading,
|
|
1358
|
+
tiers: pricing.tiers,
|
|
1359
|
+
securityNote: pricing.securityNote
|
|
1360
|
+
}
|
|
1361
|
+
),
|
|
1362
|
+
/* @__PURE__ */ jsx24(ExecFAQ, { heading: faq.heading, faqs: faq.faqs }),
|
|
1363
|
+
/* @__PURE__ */ jsx24(ExecCTA, { heading: cta.heading, subheading: cta.subheading, buttons: cta.buttons })
|
|
1364
|
+
] }),
|
|
1365
|
+
/* @__PURE__ */ jsx24(
|
|
1366
|
+
ExecFooter,
|
|
1367
|
+
{
|
|
1368
|
+
logo: brandName,
|
|
1369
|
+
description: hero.description,
|
|
1370
|
+
copyrightText: `${hostname} \xA9 ${(/* @__PURE__ */ new Date()).getFullYear()}. All rights reserved.`
|
|
1371
|
+
}
|
|
1372
|
+
)
|
|
1373
|
+
] });
|
|
1374
|
+
}
|
|
1375
|
+
|
|
1376
|
+
// src/view/view.tsx
|
|
1377
|
+
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
1378
|
+
function NamedAgentView({ content, theme, mode, brandName, hostname, template = "studio" }) {
|
|
1379
|
+
return (
|
|
1380
|
+
// texture={false}: DialectShell's NoiseTexture grain defaults on for the
|
|
1381
|
+
// agent dialects, but the named baseline renders NO overlay — the fixed
|
|
1382
|
+
// full-viewport speckle layer sits over every pixel and subtly shifts the
|
|
1383
|
+
// whole palette off the baseline values.
|
|
1384
|
+
/* @__PURE__ */ jsx25(DialectShell, { theme, mode, texture: false, children: /* @__PURE__ */ jsx25("div", { "data-dialect": "named", "data-template": template, children: template === "executive" ? /* @__PURE__ */ jsx25(ExecutiveView, { content, brandName, hostname }) : /* @__PURE__ */ jsx25(StudioView, { content, brandName, hostname }) }) })
|
|
1385
|
+
);
|
|
1146
1386
|
}
|
|
1147
1387
|
var view_default = NamedAgentView;
|
|
1148
1388
|
export {
|
|
1149
1389
|
NamedAgentView,
|
|
1150
|
-
view_default as default
|
|
1151
|
-
mapWorkflows,
|
|
1152
|
-
resolveWorkflowIcon
|
|
1390
|
+
view_default as default
|
|
1153
1391
|
};
|
|
1154
1392
|
//# sourceMappingURL=index.js.map
|