@mdxui/named 7.0.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.
@@ -1,4 +1,4 @@
1
- // src/components/hero/hero.tsx
1
+ // src/templates/studio/components/hero/hero.tsx
2
2
  import Image from "next/image";
3
3
  import { HiChevronRight } from "react-icons/hi";
4
4
 
@@ -70,6 +70,26 @@ import { twMerge } from "tailwind-merge";
70
70
  function cn(...inputs) {
71
71
  return twMerge(clsx(inputs));
72
72
  }
73
+ var isRenderableSrc = (s) => /^(https?:)?\/\//i.test(s.trim()) || /^data:image\//i.test(s.trim());
74
+ var BRAND_LABELS = {
75
+ github: "GitHub",
76
+ gitlab: "GitLab",
77
+ linkedin: "LinkedIn",
78
+ youtube: "YouTube",
79
+ whatsapp: "WhatsApp",
80
+ hubspot: "HubSpot",
81
+ quickbooks: "QuickBooks",
82
+ typescript: "TypeScript",
83
+ javascript: "JavaScript",
84
+ postgresql: "PostgreSQL",
85
+ mongodb: "MongoDB",
86
+ graphql: "GraphQL",
87
+ openai: "OpenAI"
88
+ };
89
+ var brandLabel = (s) => {
90
+ const t = s.trim();
91
+ return BRAND_LABELS[t.toLowerCase()] ?? t.charAt(0).toUpperCase() + t.slice(1);
92
+ };
73
93
 
74
94
  // src/shared/marquee/marquee.tsx
75
95
  import { jsx as jsx2 } from "react/jsx-runtime";
@@ -111,29 +131,41 @@ function Marquee({
111
131
  );
112
132
  }
113
133
 
114
- // src/components/hero/hero.tsx
115
- import { Button } from "@mdxui/primitives";
116
- import { jsx as jsx3, jsxs } from "react/jsx-runtime";
117
- var isRenderableSrc = (s) => /^(https?:)?\/\//i.test(s.trim()) || /^data:image\//i.test(s.trim());
118
- var BRAND_LABELS = {
119
- github: "GitHub",
120
- gitlab: "GitLab",
121
- linkedin: "LinkedIn",
122
- youtube: "YouTube",
123
- whatsapp: "WhatsApp",
124
- hubspot: "HubSpot",
125
- quickbooks: "QuickBooks",
126
- typescript: "TypeScript",
127
- javascript: "JavaScript",
128
- postgresql: "PostgreSQL",
129
- mongodb: "MongoDB",
130
- graphql: "GraphQL",
131
- openai: "OpenAI"
134
+ // src/templates/studio/ui/button/button.tsx
135
+ import * as React from "react";
136
+ import { jsx as jsx3 } from "react/jsx-runtime";
137
+ 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";
138
+ var variantClasses = {
139
+ default: "btn-gradient-dark text-(--color-btn-primary-fg) shadow-md hover:shadow-lg rounded-full",
140
+ secondary: "bg-(--color-surface-raised) text-(--color-fg) border border-(--color-border) shadow-sm hover:shadow-md rounded-full",
141
+ outline: "border border-(--color-border) bg-transparent text-(--color-fg) hover:bg-(--color-hover) rounded-full",
142
+ ghost: "text-(--color-fg) hover:bg-(--color-hover) rounded-full",
143
+ link: "text-(--color-fg) underline-offset-4 hover:underline",
144
+ accent: "bg-(--color-accent-strong) text-(--color-accent-fg) shadow-md hover:opacity-90 hover:shadow-lg rounded-full"
132
145
  };
133
- var brandLabel = (s) => {
134
- const t = s.trim();
135
- return BRAND_LABELS[t.toLowerCase()] ?? t.charAt(0).toUpperCase() + t.slice(1);
146
+ var sizeClasses = {
147
+ default: "h-12 px-6 py-3 text-base",
148
+ sm: "h-10 px-4 py-2 text-sm",
149
+ lg: "h-14 px-8 py-4 text-lg",
150
+ icon: "h-12 w-12"
136
151
  };
152
+ var Button = React.forwardRef(
153
+ ({ className, variant = "default", size = "default", asChild = false, children, ...props }, ref) => {
154
+ const classes = cn(baseClasses, variantClasses[variant], sizeClasses[size], className);
155
+ if (asChild && React.isValidElement(children)) {
156
+ const child = children;
157
+ return React.cloneElement(child, {
158
+ ...props,
159
+ className: cn(classes, child.props.className)
160
+ });
161
+ }
162
+ return /* @__PURE__ */ jsx3("button", { ref, className: classes, ...props, children });
163
+ }
164
+ );
165
+ Button.displayName = "Button";
166
+
167
+ // src/templates/studio/components/hero/hero.tsx
168
+ import { jsx as jsx4, jsxs } from "react/jsx-runtime";
137
169
  function Hero({
138
170
  badgeEmoji = "",
139
171
  badgeText = "Meet Priya",
@@ -159,10 +191,10 @@ function Hero({
159
191
  className
160
192
  }) {
161
193
  const hasHeroImage = !!rightImageSrc && isRenderableSrc(rightImageSrc);
162
- return /* @__PURE__ */ jsx3("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: [
194
+ 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: [
163
195
  /* @__PURE__ */ jsxs("div", { className: cn("grid gap-8 lg:gap-16 items-start mb-16 lg:mb-20", hasHeroImage && "lg:grid-cols-2"), children: [
164
196
  /* @__PURE__ */ jsxs("div", { className: "space-y-6 lg:pt-8", children: [
165
- /* @__PURE__ */ jsx3(ScrollReveal, { direction: "down", delay: 0.1, children: /* @__PURE__ */ jsx3("div", { className: "inline-block", children: /* @__PURE__ */ jsxs(
197
+ /* @__PURE__ */ jsx4(ScrollReveal, { direction: "down", delay: 0.1, children: /* @__PURE__ */ jsx4("div", { className: "inline-block", children: /* @__PURE__ */ jsxs(
166
198
  "a",
167
199
  {
168
200
  href: badgeHref,
@@ -170,19 +202,19 @@ function Hero({
170
202
  rel: "noopener noreferrer",
171
203
  className: "inline-flex items-center gap-2.5 px-4 py-2 rounded-full transition-colors border border-border bg-card",
172
204
  children: [
173
- /* @__PURE__ */ jsx3("span", { className: "text-base", children: badgeEmoji }),
174
- /* @__PURE__ */ jsx3("p", { className: "font-normal text-sm tracking-wide leading-snug text-foreground uppercase", children: badgeText })
205
+ /* @__PURE__ */ jsx4("span", { className: "text-base", children: badgeEmoji }),
206
+ /* @__PURE__ */ jsx4("p", { className: "font-normal text-sm tracking-wide leading-snug text-foreground uppercase", children: badgeText })
175
207
  ]
176
208
  }
177
209
  ) }) }),
178
- /* @__PURE__ */ jsx3(ScrollReveal, { direction: "up", delay: 0.2, children: /* @__PURE__ */ jsx3("h1", { className: "font-halant font-normal text-[clamp(56px,6vw,72px)] leading-tight tracking-tight text-foreground", children: heading }) }),
179
- /* @__PURE__ */ jsx3(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx3("p", { className: "text-lg leading-relaxed max-w-lg", children: description }) }),
180
- /* @__PURE__ */ jsx3(ScrollReveal, { direction: "up", delay: 0.4, trigger: "mount", children: /* @__PURE__ */ jsx3("div", { className: "flex flex-col sm:flex-row gap-3 pt-4", children: /* @__PURE__ */ jsx3(Button, { asChild: true, variant: ctaVariant, children: /* @__PURE__ */ jsxs("a", { href: ctaHref, children: [
210
+ /* @__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 }) }),
211
+ /* @__PURE__ */ jsx4(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx4("p", { className: "text-lg leading-relaxed max-w-lg", children: description }) }),
212
+ /* @__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: [
181
213
  ctaText,
182
- /* @__PURE__ */ jsx3(HiChevronRight, { className: "w-4 h-4" })
214
+ /* @__PURE__ */ jsx4(HiChevronRight, { className: "w-4 h-4" })
183
215
  ] }) }) }) })
184
216
  ] }),
185
- hasHeroImage && /* @__PURE__ */ jsx3(ScrollReveal, { direction: "right", delay: 0.2, children: /* @__PURE__ */ jsx3("div", { className: "relative flex justify-center lg:justify-end", children: /* @__PURE__ */ jsx3("div", { className: "relative w-full max-w-lg", children: /* @__PURE__ */ jsx3("div", { className: "relative w-full aspect-square", children: /* @__PURE__ */ jsx3(
217
+ 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(
186
218
  Image,
187
219
  {
188
220
  src: rightImageSrc,
@@ -196,24 +228,24 @@ function Hero({
196
228
  ) }) }) }) })
197
229
  ] }),
198
230
  /* @__PURE__ */ jsxs(ScrollReveal, { direction: "up", delay: 0.4, trigger: "mount", children: [
199
- /* @__PURE__ */ jsx3("div", { className: "mt-12", children: /* @__PURE__ */ jsx3("p", { className: "text-base text-muted-foreground text-center", children: marqueeTitle }) }),
231
+ /* @__PURE__ */ jsx4("div", { className: "mt-12", children: /* @__PURE__ */ jsx4("p", { className: "text-base text-muted-foreground text-center", children: marqueeTitle }) }),
200
232
  /* @__PURE__ */ jsxs("div", { className: "relative mt-4 sm:mt-6", children: [
201
- /* @__PURE__ */ jsx3(
233
+ /* @__PURE__ */ jsx4(
202
234
  "div",
203
235
  {
204
236
  className: "pointer-events-none absolute inset-y-0 left-0 w-20 sm:w-28 z-10",
205
237
  style: { background: "linear-gradient(to right, var(--background), transparent)" }
206
238
  }
207
239
  ),
208
- /* @__PURE__ */ jsx3(
240
+ /* @__PURE__ */ jsx4(
209
241
  "div",
210
242
  {
211
243
  className: "pointer-events-none absolute inset-y-0 right-0 w-20 sm:w-28 z-10",
212
244
  style: { background: "linear-gradient(to left, var(--background), transparent)" }
213
245
  }
214
246
  ),
215
- /* @__PURE__ */ jsx3(Marquee, { className: "relative z-0 py-2 [--gap:1.25rem] sm:[--gap:3rem]", children: marqueeImages.map(
216
- (src, i) => isRenderableSrc(src) ? /* @__PURE__ */ jsx3(
247
+ /* @__PURE__ */ jsx4(Marquee, { className: "relative z-0 py-2 [--gap:1.25rem] sm:[--gap:3rem]", children: marqueeImages.map(
248
+ (src, i) => isRenderableSrc(src) ? /* @__PURE__ */ jsx4(
217
249
  "img",
218
250
  {
219
251
  src,
@@ -221,7 +253,7 @@ function Hero({
221
253
  className: "h-16 w-16 rounded-xl bg-card p-2 object-contain"
222
254
  },
223
255
  `${src}-${i}`
224
- ) : /* @__PURE__ */ jsx3(
256
+ ) : /* @__PURE__ */ jsx4(
225
257
  "span",
226
258
  {
227
259
  className: "flex h-16 items-center whitespace-nowrap rounded-xl bg-card px-4 text-sm font-semibold tracking-tight text-foreground/70",
@@ -235,61 +267,43 @@ function Hero({
235
267
  ] }) });
236
268
  }
237
269
 
238
- // src/components/features/features.tsx
270
+ // src/templates/studio/components/features/features.tsx
239
271
  import { CheckCircle } from "lucide-react";
240
272
 
241
273
  // src/shared/code-window/code-window.tsx
242
- import { jsx as jsx4 } from "react/jsx-runtime";
243
- function CodeWindow({ code, className }) {
244
- const highlightCode = (code2) => {
245
- const lines = code2.split("\n");
246
- const result = [];
247
- let prevWasComment = false;
248
- let prevWasCode = false;
249
- for (let i = 0; i < lines.length; i++) {
250
- const line = lines[i];
251
- const isComment = line.trim().startsWith("//");
252
- const isEmpty = line.trim() === "";
253
- const isCode = !isComment && !isEmpty;
254
- if (isComment && prevWasCode) {
255
- result.push(/* @__PURE__ */ jsx4("div", { className: "h-5" }, `space-before-${i}`));
256
- }
257
- if (prevWasComment && isCode) {
258
- result.push(/* @__PURE__ */ jsx4("div", { className: "h-5" }, `space-after-${i}`));
259
- }
260
- if (isEmpty) {
261
- result.push(/* @__PURE__ */ jsx4("div", { className: "h-5" }, i));
262
- prevWasComment = false;
263
- prevWasCode = false;
264
- continue;
265
- }
266
- if (isComment) {
267
- result.push(
268
- /* @__PURE__ */ jsx4("div", { className: "text-[#7d8590]", children: line }, i)
269
- );
270
- prevWasComment = true;
271
- prevWasCode = false;
272
- continue;
273
- }
274
- let highlighted = line;
275
- highlighted = highlighted.replace(
276
- /\$\.(\w+)\.(\w+)/g,
277
- '<span class="text-[#79c0ff]">$</span>.<span class="text-[#d2a8ff]">$1</span>.<span class="text-[#ffa657]">$2</span>'
278
- );
279
- highlighted = highlighted.replace(/(\w+):/g, '<span class="text-[#79c0ff]">$1</span>:');
280
- highlighted = highlighted.replace(/'([^']*)'/g, `<span class="text-[#a5d6ff]">'$1'</span>`);
281
- highlighted = highlighted.replace(/\b(\d+)\b/g, '<span class="text-[#79c0ff]">$1</span>');
282
- result.push(/* @__PURE__ */ jsx4("div", { dangerouslySetInnerHTML: { __html: highlighted } }, i));
283
- prevWasComment = false;
284
- prevWasCode = true;
285
- }
286
- return result;
287
- };
288
- 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) }) }) });
274
+ import { useEffect, useState } from "react";
275
+ import { jsx as jsx5 } from "react/jsx-runtime";
276
+ function CodeWindow({
277
+ code,
278
+ language = "typescript",
279
+ themes = "github-dark-default",
280
+ className
281
+ }) {
282
+ const [html, setHtml] = useState(null);
283
+ const themesKey = typeof themes === "string" ? themes : `${themes.light}/${themes.dark}`;
284
+ useEffect(() => {
285
+ let alive = true;
286
+ import("shiki").then(
287
+ ({ codeToHtml }) => codeToHtml(
288
+ code,
289
+ typeof themes === "string" ? { lang: language, theme: themes } : { lang: language, themes, defaultColor: "light" }
290
+ )
291
+ ).then((out) => {
292
+ if (alive) setHtml(out);
293
+ }).catch(() => {
294
+ });
295
+ return () => {
296
+ alive = false;
297
+ };
298
+ }, [code, language, themesKey]);
299
+ return /* @__PURE__ */ jsx5("div", { className: cn("w-full h-full overflow-auto font-mono", className), children: html ? (
300
+ // biome-ignore lint/security/noDangerouslySetInnerHtml: shiki output; input is escaped by shiki
301
+ /* @__PURE__ */ jsx5("div", { dangerouslySetInnerHTML: { __html: html } })
302
+ ) : /* @__PURE__ */ jsx5("pre", { className: "m-0 whitespace-pre", children: /* @__PURE__ */ jsx5("code", { children: code }) }) });
289
303
  }
290
304
 
291
- // src/components/features/features.tsx
292
- import { jsx as jsx5, jsxs as jsxs2 } from "react/jsx-runtime";
305
+ // src/templates/studio/components/features/features.tsx
306
+ import { jsx as jsx6, jsxs as jsxs2 } from "react/jsx-runtime";
293
307
  var defaultFeatures = [
294
308
  {
295
309
  title: "Automatic Issue Triage",
@@ -362,30 +376,37 @@ $.Priya.statusReport({
362
376
  }
363
377
  ];
364
378
  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 }) {
365
- return /* @__PURE__ */ jsx5("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: [
366
- /* @__PURE__ */ jsx5(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs2("div", { className: "text-center w-full px-4 md:px-6 space-y-4", children: [
367
- /* @__PURE__ */ jsx5("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground", children: heading }),
368
- /* @__PURE__ */ jsx5("p", { className: "text-base md:text-lg text-muted-foreground max-w-2xl mx-auto", children: description })
379
+ 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: [
380
+ /* @__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: [
381
+ /* @__PURE__ */ jsx6("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground", children: heading }),
382
+ /* @__PURE__ */ jsx6("p", { className: "text-base md:text-lg text-muted-foreground max-w-2xl mx-auto", children: description })
369
383
  ] }) }),
370
- /* @__PURE__ */ jsx5("div", { className: "w-full px-4 lg:px-18 space-y-10", children: features.map((feature, index) => /* @__PURE__ */ jsx5(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: [
384
+ /* @__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: [
371
385
  /* @__PURE__ */ jsxs2("div", { className: "flex flex-col px-4 py-8 lg:px-8 lg:py-12 xl:px-12 xl:py-20", children: [
372
- /* @__PURE__ */ jsx5("div", { className: "mb-4", children: /* @__PURE__ */ jsx5("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 }) }),
373
- /* @__PURE__ */ jsx5("h3", { className: "mb-3 text-2xl font-medium sm:mb-5 md:text-3xl text-foreground", children: feature.title }),
374
- /* @__PURE__ */ jsx5("div", { className: "mb-8 text-sm sm:mb-10 md:text-base text-muted-foreground", children: feature.description }),
375
- /* @__PURE__ */ jsx5("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: [
376
- /* @__PURE__ */ jsx5(CheckCircle, { className: "mt-1 size-4 shrink-0 text-primary" }),
377
- /* @__PURE__ */ jsx5("p", { className: "text-sm md:text-base text-foreground", children: item.text })
386
+ /* @__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 }) }),
387
+ /* @__PURE__ */ jsx6("h3", { className: "mb-3 text-2xl font-medium sm:mb-5 md:text-3xl text-foreground", children: feature.title }),
388
+ /* @__PURE__ */ jsx6("div", { className: "mb-8 text-sm sm:mb-10 md:text-base text-muted-foreground", children: feature.description }),
389
+ /* @__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: [
390
+ /* @__PURE__ */ jsx6(CheckCircle, { className: "mt-1 size-4 shrink-0 text-primary" }),
391
+ /* @__PURE__ */ jsx6("p", { className: "text-sm md:text-base text-foreground", children: item.text })
378
392
  ] }, itemIndex)) })
379
393
  ] }),
380
- /* @__PURE__ */ jsx5("div", { className: "relative order-last md:order-last h-96 md:h-[500px] p-4 md:p-8 lg:p-10", children: /* @__PURE__ */ jsx5(CodeWindow, { code: feature.code }) })
394
+ /* @__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(
395
+ CodeWindow,
396
+ {
397
+ code: feature.code,
398
+ language: feature.language,
399
+ themes: "github-dark-default",
400
+ className: "bg-[#0d1117] rounded-lg p-6 lg:p-8 text-sm leading-relaxed text-[#e6edf3]"
401
+ }
402
+ ) })
381
403
  ] }) }, index)) })
382
404
  ] }) });
383
405
  }
384
406
 
385
- // src/components/pricing/pricing.tsx
407
+ // src/templates/studio/components/pricing/pricing.tsx
386
408
  import { Check } from "lucide-react";
387
- import { Button as Button2 } from "@mdxui/primitives";
388
- import { jsx as jsx6, jsxs as jsxs3 } from "react/jsx-runtime";
409
+ import { jsx as jsx7, jsxs as jsxs3 } from "react/jsx-runtime";
389
410
  var defaultFeatures2 = [
390
411
  { text: "Automated backups" },
391
412
  { text: "24/7 support" },
@@ -411,41 +432,40 @@ function Pricing({
411
432
  securityNote = "Priya only accesses GitHub Issues and Projects\u2014she cannot read your code or secrets.",
412
433
  className
413
434
  }) {
414
- return /* @__PURE__ */ jsx6("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: [
415
- /* @__PURE__ */ jsx6(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs3("div", { className: "text-center my-16 sm:my-12", children: [
416
- /* @__PURE__ */ jsx6("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground mb-4", children: heading }),
417
- /* @__PURE__ */ jsx6("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
435
+ 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: [
436
+ /* @__PURE__ */ jsx7(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs3("div", { className: "text-center my-16 sm:my-12", children: [
437
+ /* @__PURE__ */ jsx7("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,40px)] leading-tight text-foreground mb-4", children: heading }),
438
+ /* @__PURE__ */ jsx7("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
418
439
  ] }) }),
419
- /* @__PURE__ */ jsx6(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: [
440
+ /* @__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: [
420
441
  /* @__PURE__ */ jsxs3("div", { className: "text-center", children: [
421
442
  /* @__PURE__ */ jsxs3("div", { className: "flex justify-start sm:justify-center items-baseline", children: [
422
- /* @__PURE__ */ jsx6("span", { className: "text-3xl font-semibold text-foreground", children: price }),
423
- /* @__PURE__ */ jsx6("span", { className: "text-muted-foreground ml-2 text-sm", children: priceUnit })
443
+ /* @__PURE__ */ jsx7("span", { className: "text-3xl font-semibold text-foreground", children: price }),
444
+ /* @__PURE__ */ jsx7("span", { className: "text-muted-foreground ml-2 text-sm", children: priceUnit })
424
445
  ] }),
425
- trialText && /* @__PURE__ */ jsx6("p", { className: "text-left sm:text-center text-muted-foreground mt-3 text-sm", children: trialText }),
426
- /* @__PURE__ */ jsx6(Button2, { asChild: true, variant: "default", className: "mt-5 w-full md:w-64", children: /* @__PURE__ */ jsx6("a", { href: ctaHref, children: ctaText }) })
446
+ trialText && /* @__PURE__ */ jsx7("p", { className: "text-left sm:text-center text-muted-foreground mt-3 text-sm", children: trialText }),
447
+ /* @__PURE__ */ jsx7(Button, { asChild: true, variant: "default", className: "mt-5 w-full md:w-64", children: /* @__PURE__ */ jsx7("a", { href: ctaHref, children: ctaText }) })
427
448
  ] }),
428
449
  /* @__PURE__ */ jsxs3("div", { className: "mt-8", children: [
429
- /* @__PURE__ */ jsx6("p", { className: "text-left sm:text-center text-lg font-semibold text-foreground mb-4", children: featuresHeading }),
430
- /* @__PURE__ */ jsx6("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: [
431
- /* @__PURE__ */ jsx6(Check, { className: "text-primary mr-2 size-4 shrink-0" }),
432
- /* @__PURE__ */ jsx6("span", { className: "text-foreground text-sm", children: feature.text })
450
+ /* @__PURE__ */ jsx7("p", { className: "text-left sm:text-center text-lg font-semibold text-foreground mb-4", children: featuresHeading }),
451
+ /* @__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: [
452
+ /* @__PURE__ */ jsx7(Check, { className: "text-primary mr-2 size-4 shrink-0" }),
453
+ /* @__PURE__ */ jsx7("span", { className: "text-foreground text-sm", children: feature.text })
433
454
  ] }, index)) })
434
455
  ] })
435
456
  ] }) }),
436
- securityNote && /* @__PURE__ */ jsx6(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx6("div", { className: "text-center mt-8", children: /* @__PURE__ */ jsxs3("p", { className: "text-sm text-muted-foreground", children: [
437
- /* @__PURE__ */ jsx6("strong", { children: "Your code stays private." }),
457
+ 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: [
458
+ /* @__PURE__ */ jsx7("strong", { children: "Your code stays private." }),
438
459
  " ",
439
460
  securityNote
440
461
  ] }) }) })
441
462
  ] }) });
442
463
  }
443
464
 
444
- // src/components/pricing/pricing-tiers.tsx
465
+ // src/templates/studio/components/pricing/pricing-tiers.tsx
445
466
  import { Check as Check2 } from "lucide-react";
446
467
  import Image2 from "next/image";
447
- import { Button as Button3 } from "@mdxui/primitives";
448
- import { Fragment, jsx as jsx7, jsxs as jsxs4 } from "react/jsx-runtime";
468
+ import { Fragment, jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
449
469
  var defaultTiers = [
450
470
  {
451
471
  title: "Business",
@@ -487,59 +507,58 @@ function PricingTiers({
487
507
  securityNote = "Priya only accesses GitHub Issues and Projects\u2014she cannot read your code or secrets.",
488
508
  className
489
509
  }) {
490
- return /* @__PURE__ */ jsx7("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: [
491
- /* @__PURE__ */ jsx7(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs4("div", { className: "text-center my-16 sm:my-12", children: [
492
- /* @__PURE__ */ jsx7("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }),
493
- /* @__PURE__ */ jsx7("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
510
+ 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: [
511
+ /* @__PURE__ */ jsx8(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs4("div", { className: "text-center my-16 sm:my-12", children: [
512
+ /* @__PURE__ */ jsx8("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }),
513
+ /* @__PURE__ */ jsx8("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
494
514
  ] }) }),
495
- /* @__PURE__ */ jsx7("ul", { className: "grid gap-6 lg:grid-cols-3 lg:items-stretch", children: tiers.map((tier, index) => /* @__PURE__ */ jsx7("li", { className: tier.featured ? "lg:col-span-2 flex" : "lg:col-span-1 flex", children: /* @__PURE__ */ jsx7(ScrollReveal, { direction: "up", delay: 0.2 + index * 0.1, className: "w-full", children: /* @__PURE__ */ jsx7(
515
+ /* @__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(
496
516
  "div",
497
517
  {
498
518
  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",
499
519
  children: tier.featured ? /* @__PURE__ */ jsxs4(Fragment, { children: [
500
- tier.image && /* @__PURE__ */ jsx7("div", { className: "hidden xl:block xl:w-1/2 pl-6 md:pl-8 py-6 md:py-8", children: /* @__PURE__ */ jsx7("div", { className: "h-full rounded-lg overflow-hidden relative min-h-96", children: /* @__PURE__ */ jsx7(Image2, { src: tier.image, alt: tier.imageAlt || tier.title, fill: true, className: "object-cover", sizes: "(max-width: 1280px) 0vw, 50vw" }) }) }),
501
- /* @__PURE__ */ jsxs4("div", { className: "flex flex-col p-6 md:p-8 xl:w-1/2", children: [
520
+ 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" }) }) }),
521
+ /* @__PURE__ */ jsxs4("div", { className: cn("flex flex-col p-6 md:p-8", tier.image && isRenderableSrc(tier.image) && "xl:w-1/2"), children: [
502
522
  /* @__PURE__ */ jsxs4("div", { className: "flex-1", children: [
503
- /* @__PURE__ */ jsx7("p", { className: "text-lg font-semibold text-foreground", children: tier.title }),
504
- /* @__PURE__ */ jsx7("p", { className: "text-muted-foreground mt-3", children: tier.description }),
523
+ /* @__PURE__ */ jsx8("p", { className: "text-lg font-semibold text-foreground", children: tier.title }),
524
+ /* @__PURE__ */ jsx8("p", { className: "text-muted-foreground mt-3", children: tier.description }),
505
525
  /* @__PURE__ */ jsxs4("div", { className: "mt-6 flex items-baseline", children: [
506
- /* @__PURE__ */ jsx7("span", { className: "text-3xl font-semibold text-foreground", children: tier.price }),
507
- /* @__PURE__ */ jsx7("span", { className: "text-muted-foreground ml-2 text-sm", children: tier.priceUnit })
526
+ /* @__PURE__ */ jsx8("span", { className: "text-3xl font-semibold text-foreground", children: tier.price }),
527
+ /* @__PURE__ */ jsx8("span", { className: "text-muted-foreground ml-2 text-sm", children: tier.priceUnit })
508
528
  ] }),
509
- /* @__PURE__ */ jsx7(Button3, { asChild: true, variant: tier.ctaVariant === "primary" ? "default" : "secondary", className: "mt-5 w-full sm:w-auto", children: /* @__PURE__ */ jsx7("a", { href: tier.ctaHref || "#", children: tier.ctaText }) })
529
+ /* @__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 }) })
510
530
  ] }),
511
- /* @__PURE__ */ jsx7("div", { className: "mt-8", children: /* @__PURE__ */ jsx7("ul", { className: "space-y-2", children: tier.features.map((feature, featureIndex) => /* @__PURE__ */ jsxs4("li", { className: "flex items-start", children: [
512
- /* @__PURE__ */ jsx7(Check2, { className: "text-primary mr-2 size-4 shrink-0" }),
513
- /* @__PURE__ */ jsx7("span", { className: "text-foreground text-sm", children: feature.text })
531
+ /* @__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: [
532
+ /* @__PURE__ */ jsx8(Check2, { className: "text-primary mr-2 size-4 shrink-0" }),
533
+ /* @__PURE__ */ jsx8("span", { className: "text-foreground text-sm", children: feature.text })
514
534
  ] }, featureIndex)) }) })
515
535
  ] })
516
- ] }) : /* @__PURE__ */ jsx7("div", { className: "flex h-full flex-col", children: /* @__PURE__ */ jsxs4("div", { children: [
517
- /* @__PURE__ */ jsx7("p", { className: "text-lg font-semibold text-foreground", children: tier.title }),
518
- /* @__PURE__ */ jsx7("p", { className: "text-muted-foreground mt-3", children: tier.description }),
536
+ ] }) : /* @__PURE__ */ jsx8("div", { className: "flex h-full flex-col", children: /* @__PURE__ */ jsxs4("div", { children: [
537
+ /* @__PURE__ */ jsx8("p", { className: "text-lg font-semibold text-foreground", children: tier.title }),
538
+ /* @__PURE__ */ jsx8("p", { className: "text-muted-foreground mt-3", children: tier.description }),
519
539
  /* @__PURE__ */ jsxs4("div", { className: "mt-6 flex items-baseline", children: [
520
- /* @__PURE__ */ jsx7("span", { className: "text-3xl font-semibold text-foreground", children: tier.price }),
521
- /* @__PURE__ */ jsx7("span", { className: "text-muted-foreground ml-2 text-sm", children: tier.priceUnit })
540
+ /* @__PURE__ */ jsx8("span", { className: "text-3xl font-semibold text-foreground", children: tier.price }),
541
+ /* @__PURE__ */ jsx8("span", { className: "text-muted-foreground ml-2 text-sm", children: tier.priceUnit })
522
542
  ] }),
523
- /* @__PURE__ */ jsx7(Button3, { asChild: true, variant: tier.ctaVariant === "primary" ? "default" : "secondary", className: "mt-5 w-full sm:w-auto", children: /* @__PURE__ */ jsx7("a", { href: tier.ctaHref || "#", children: tier.ctaText }) }),
524
- /* @__PURE__ */ jsx7("div", { className: "mt-8", children: /* @__PURE__ */ jsx7("ul", { className: "space-y-2", children: tier.features.map((feature, featureIndex) => /* @__PURE__ */ jsxs4("li", { className: "flex items-start", children: [
525
- /* @__PURE__ */ jsx7(Check2, { className: "text-primary mr-2 size-4 shrink-0" }),
526
- /* @__PURE__ */ jsx7("span", { className: "text-foreground text-sm", children: feature.text })
543
+ /* @__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 }) }),
544
+ /* @__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: [
545
+ /* @__PURE__ */ jsx8(Check2, { className: "text-primary mr-2 size-4 shrink-0" }),
546
+ /* @__PURE__ */ jsx8("span", { className: "text-foreground text-sm", children: feature.text })
527
547
  ] }, featureIndex)) }) })
528
548
  ] }) })
529
549
  }
530
550
  ) }) }, index)) }),
531
- securityNote && /* @__PURE__ */ jsx7(ScrollReveal, { direction: "up", delay: 0.4, children: /* @__PURE__ */ jsx7("div", { className: "text-center mt-8", children: /* @__PURE__ */ jsxs4("p", { className: "text-sm text-muted-foreground", children: [
532
- /* @__PURE__ */ jsx7("strong", { children: "Your code stays private." }),
551
+ 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: [
552
+ /* @__PURE__ */ jsx8("strong", { children: "Your code stays private." }),
533
553
  " ",
534
554
  securityNote
535
555
  ] }) }) })
536
556
  ] }) });
537
557
  }
538
558
 
539
- // src/components/cta/cta.tsx
559
+ // src/templates/studio/components/cta/cta.tsx
540
560
  import { HiArrowRight } from "react-icons/hi";
541
- import { Button as Button4 } from "@mdxui/primitives";
542
- import { jsx as jsx8, jsxs as jsxs5 } from "react/jsx-runtime";
561
+ import { jsx as jsx9, jsxs as jsxs5 } from "react/jsx-runtime";
543
562
  var defaultButtons = [
544
563
  {
545
564
  text: "Get Started",
@@ -550,19 +569,19 @@ var defaultButtons = [
550
569
  ];
551
570
  function CTA({ heading = "Ready to Save 15 Hours Per Week?", subheading = "Setup with Github \u2013 takes 5 minutes.", buttons = defaultButtons, backgroundColor: _backgroundColor, className }) {
552
571
  const bgClass = "bg-card";
553
- return /* @__PURE__ */ jsx8("section", { className: cn(`py-20 md:py-32 px-4 md:px-6 ${bgClass}`, className), children: /* @__PURE__ */ jsx8("div", { className: "max-w-3xl mx-auto text-center", children: /* @__PURE__ */ jsx8(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs5("div", { className: "space-y-6", children: [
554
- /* @__PURE__ */ jsx8("h2", { className: "font-halant font-normal text-foreground text-[clamp(32px,5vw,52px)] leading-tight tracking-tight", children: heading }),
555
- /* @__PURE__ */ jsx8("p", { className: "max-w-2xl mx-auto text-[clamp(16px,2vw,18px)] leading-relaxed text-muted-foreground", children: subheading }),
556
- /* @__PURE__ */ jsx8("div", { className: "flex flex-col sm:flex-row gap-3 justify-center items-center pt-4", children: buttons.map((button, index) => /* @__PURE__ */ jsx8(Button4, { asChild: true, variant: button.variant === "primary" ? "default" : "secondary", children: /* @__PURE__ */ jsxs5("a", { href: button.href, children: [
572
+ 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: [
573
+ /* @__PURE__ */ jsx9("h2", { className: "font-halant font-normal text-foreground text-[clamp(32px,5vw,52px)] leading-tight tracking-tight", children: heading }),
574
+ /* @__PURE__ */ jsx9("p", { className: "max-w-2xl mx-auto text-[clamp(16px,2vw,18px)] leading-relaxed text-muted-foreground", children: subheading }),
575
+ /* @__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: [
557
576
  button.text,
558
- button.showArrow && /* @__PURE__ */ jsx8(HiArrowRight, { className: "w-4 h-4" })
577
+ button.showArrow && /* @__PURE__ */ jsx9(HiArrowRight, { className: "w-4 h-4" })
559
578
  ] }) }, index)) })
560
579
  ] }) }) }) });
561
580
  }
562
581
 
563
- // src/components/faq/faq.tsx
582
+ // src/templates/studio/components/faq/faq.tsx
564
583
  import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from "@mdxui/primitives";
565
- import { jsx as jsx9, jsxs as jsxs6 } from "react/jsx-runtime";
584
+ import { jsx as jsx10, jsxs as jsxs6 } from "react/jsx-runtime";
566
585
  var defaultFaqs = [
567
586
  {
568
587
  question: "How do I get started?",
@@ -590,22 +609,21 @@ var defaultFaqs = [
590
609
  }
591
610
  ];
592
611
  function FAQ({ heading = "FAQs", faqs = defaultFaqs, backgroundColor = "bg-background", className }) {
593
- return /* @__PURE__ */ jsx9("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: [
594
- /* @__PURE__ */ jsx9(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsx9("div", { className: "text-center mb-12", children: /* @__PURE__ */ jsx9("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }) }) }),
595
- /* @__PURE__ */ jsx9(Accordion, { type: "single", collapsible: true, className: "space-y-4", children: faqs.map((faq, index) => /* @__PURE__ */ jsx9(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: [
596
- /* @__PURE__ */ jsx9(AccordionTrigger, { className: "hover:no-underline py-5 text-base font-medium text-foreground", children: faq.question }),
597
- /* @__PURE__ */ jsx9(AccordionContent, { className: "pb-5 text-sm text-muted-foreground leading-relaxed", children: faq.answer })
612
+ 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: [
613
+ /* @__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 }) }) }),
614
+ /* @__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: [
615
+ /* @__PURE__ */ jsx10(AccordionTrigger, { className: "hover:no-underline py-5 text-base font-medium text-foreground", children: faq.question }),
616
+ /* @__PURE__ */ jsx10(AccordionContent, { className: "pb-5 text-sm text-foreground/70 leading-relaxed", children: faq.answer })
598
617
  ] }) }, index)) })
599
618
  ] }) });
600
619
  }
601
620
 
602
- // src/components/navigation/navigation.tsx
603
- import { useState, useEffect } from "react";
621
+ // src/templates/studio/components/navigation/navigation.tsx
622
+ import { useState as useState2, useEffect as useEffect2 } from "react";
604
623
  import Link from "next/link";
605
624
  import { Menu, X } from "lucide-react";
606
625
  import { motion as motion2, AnimatePresence } from "motion/react";
607
- import { Button as Button5 } from "@mdxui/primitives";
608
- import { jsx as jsx10, jsxs as jsxs7 } from "react/jsx-runtime";
626
+ import { jsx as jsx11, jsxs as jsxs7 } from "react/jsx-runtime";
609
627
  function Navigation({
610
628
  logo = "Priya",
611
629
  logoHref = "/",
@@ -622,9 +640,9 @@ function Navigation({
622
640
  sticky = true,
623
641
  showScrollEffect = true
624
642
  }) {
625
- const [mobileMenuOpen, setMobileMenuOpen] = useState(false);
626
- const [isScrolled, setIsScrolled] = useState(false);
627
- useEffect(() => {
643
+ const [mobileMenuOpen, setMobileMenuOpen] = useState2(false);
644
+ const [isScrolled, setIsScrolled] = useState2(false);
645
+ useEffect2(() => {
628
646
  if (!showScrollEffect) return;
629
647
  const handleScroll = () => {
630
648
  setIsScrolled(window.scrollY > 10);
@@ -645,7 +663,7 @@ function Navigation({
645
663
  "7xl": "max-w-7xl",
646
664
  full: "max-w-full"
647
665
  }[maxWidth];
648
- return /* @__PURE__ */ jsx10(
666
+ return /* @__PURE__ */ jsx11(
649
667
  "nav",
650
668
  {
651
669
  className: cn(
@@ -656,12 +674,12 @@ function Navigation({
656
674
  ),
657
675
  children: /* @__PURE__ */ jsxs7("div", { className: cn(maxWidthClass, "mx-auto px-6 lg:px-12 py-4"), children: [
658
676
  /* @__PURE__ */ jsxs7("div", { className: "flex items-center justify-between", children: [
659
- /* @__PURE__ */ jsx10("div", { className: "flex items-center", children: /* @__PURE__ */ jsx10(Link, { href: logoHref, className: "flex items-center", children: typeof logo === "string" ? /* @__PURE__ */ jsx10("span", { className: "text-3xl font-base text-foreground", children: logo }) : logo }) }),
660
- links && links.length > 0 && /* @__PURE__ */ jsx10("div", { className: "hidden lg:flex items-center gap-8", children: links.map((link) => /* @__PURE__ */ jsx10("a", { href: link.href, className: "text-sm text-foreground hover:opacity-60 transition-opacity", children: link.label }, link.href)) }),
661
- ctaText && ctaHref && /* @__PURE__ */ jsx10("div", { className: "hidden lg:flex items-center", children: /* @__PURE__ */ jsx10(Button5, { asChild: true, variant: ctaVariant, children: /* @__PURE__ */ jsx10("a", { href: ctaHref, children: ctaText }) }) }),
662
- /* @__PURE__ */ jsx10("button", { className: "lg:hidden p-2 text-foreground", onClick: () => setMobileMenuOpen(!mobileMenuOpen), "aria-label": "Toggle menu", children: mobileMenuOpen ? /* @__PURE__ */ jsx10(X, { className: "w-6 h-6" }) : /* @__PURE__ */ jsx10(Menu, { className: "w-6 h-6" }) })
677
+ /* @__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 }) }),
678
+ 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)) }),
679
+ 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 }) }) }),
680
+ /* @__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" }) })
663
681
  ] }),
664
- /* @__PURE__ */ jsx10(AnimatePresence, { children: mobileMenuOpen && /* @__PURE__ */ jsx10(
682
+ /* @__PURE__ */ jsx11(AnimatePresence, { children: mobileMenuOpen && /* @__PURE__ */ jsx11(
665
683
  motion2.div,
666
684
  {
667
685
  initial: { opacity: 0, height: 0 },
@@ -669,9 +687,9 @@ function Navigation({
669
687
  exit: { opacity: 0, height: 0 },
670
688
  transition: { duration: 0.3, ease: "easeInOut" },
671
689
  className: "lg:hidden overflow-hidden",
672
- children: /* @__PURE__ */ jsx10("div", { className: "mt-4 py-4 rounded-xl bg-card", children: /* @__PURE__ */ jsxs7("div", { className: "flex flex-col gap-4 px-6", children: [
673
- links.map((link) => /* @__PURE__ */ jsx10("a", { href: link.href, className: "py-2 text-foreground hover:opacity-70 transition-colors", onClick: () => setMobileMenuOpen(false), children: link.label }, link.href)),
674
- ctaText && ctaHref && /* @__PURE__ */ jsx10(Button5, { asChild: true, variant: ctaVariant, className: "mt-2", onClick: () => setMobileMenuOpen(false), children: /* @__PURE__ */ jsx10("a", { href: ctaHref, children: ctaText }) })
690
+ 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: [
691
+ 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)),
692
+ ctaText && ctaHref && /* @__PURE__ */ jsx11(Button, { asChild: true, variant: ctaVariant, className: "mt-2", onClick: () => setMobileMenuOpen(false), children: /* @__PURE__ */ jsx11("a", { href: ctaHref, children: ctaText }) })
675
693
  ] }) })
676
694
  }
677
695
  ) })
@@ -680,20 +698,44 @@ function Navigation({
680
698
  );
681
699
  }
682
700
 
683
- // src/components/footer/footer.tsx
701
+ // src/templates/studio/components/footer/footer.tsx
684
702
  import Link2 from "next/link";
685
703
  import { FaGithub, FaXTwitter } from "react-icons/fa6";
686
704
  import { SiNpm } from "react-icons/si";
687
705
  import { FaArrowRight } from "react-icons/fa6";
688
- import { Input } from "@mdxui/primitives";
689
- import { jsx as jsx11, jsxs as jsxs8 } from "react/jsx-runtime";
706
+
707
+ // src/templates/studio/ui/input/input.tsx
708
+ import * as React2 from "react";
709
+ import { jsx as jsx12 } from "react/jsx-runtime";
710
+ var Input = React2.forwardRef(
711
+ ({ className, type, ...props }, ref) => {
712
+ return /* @__PURE__ */ jsx12(
713
+ "input",
714
+ {
715
+ type,
716
+ className: cn(
717
+ "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",
718
+ className
719
+ ),
720
+ ref,
721
+ ...props
722
+ }
723
+ );
724
+ }
725
+ );
726
+ Input.displayName = "Input";
727
+
728
+ // src/templates/studio/components/footer/footer.tsx
729
+ import { jsx as jsx13, jsxs as jsxs8 } from "react/jsx-runtime";
690
730
  function Footer({
691
731
  logo = "Priya",
692
732
  description = "Your AI Product Manager for GitHub. Automate issue triage, sprint planning, and backlog grooming.",
693
733
  socialLinks = [
694
734
  { href: "https://github.com", icon: FaGithub, label: "GitHub" },
695
735
  { href: "https://npmjs.com", icon: SiNpm, label: "npm" },
696
- { href: "https://twitter.com", icon: FaXTwitter, label: "X (Twitter)" }
736
+ // X always points at the .do brand account (do-design-agency HARD rule);
737
+ // GitHub/npm stay product-specific overrides.
738
+ { href: "https://x.com/dotdo_ai", icon: FaXTwitter, label: "X (Twitter)" }
697
739
  ],
698
740
  quickLinks = [
699
741
  { href: "/#pricing", label: "Pricing" },
@@ -716,57 +758,57 @@ function Footer({
716
758
  }
717
759
  form.reset();
718
760
  };
719
- return /* @__PURE__ */ jsx11("footer", { className: cn("py-16 px-6 lg:px-12 bg-card text-card-foreground", className), children: /* @__PURE__ */ jsxs8("div", { className: "max-w-7xl mx-auto", children: [
761
+ 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: [
720
762
  /* @__PURE__ */ jsxs8("div", { className: "grid md:grid-cols-5 gap-12 mb-12", children: [
721
763
  /* @__PURE__ */ jsxs8("div", { className: "md:col-span-2", children: [
722
- /* @__PURE__ */ jsx11(Link2, { href: "/", className: "inline-block mb-4", children: /* @__PURE__ */ jsx11("div", { className: "text-3xl font-base text-card-foreground", children: logo }) }),
723
- /* @__PURE__ */ jsx11("p", { className: "max-w-md text-sm leading-relaxed text-muted-foreground mb-6", children: description }),
724
- /* @__PURE__ */ jsx11("div", { className: "flex items-center gap-4", children: socialLinks.map((link) => {
764
+ /* @__PURE__ */ jsx13(Link2, { href: "/", className: "inline-block mb-4", children: /* @__PURE__ */ jsx13("div", { className: "text-3xl font-base text-white font-halant", children: logo }) }),
765
+ /* @__PURE__ */ jsx13("p", { className: "max-w-md text-sm leading-relaxed text-white/70 mb-6", children: description }),
766
+ /* @__PURE__ */ jsx13("div", { className: "flex items-center gap-4", children: socialLinks.map((link) => {
725
767
  const Icon = link.icon;
726
- return /* @__PURE__ */ jsx11(
768
+ return /* @__PURE__ */ jsx13(
727
769
  Link2,
728
770
  {
729
771
  href: link.href,
730
772
  target: "_blank",
731
773
  rel: "noopener noreferrer",
732
- className: "text-muted-foreground transition-colors hover:text-card-foreground",
774
+ className: "text-white/70 transition-colors hover:text-white",
733
775
  "aria-label": link.label,
734
- children: /* @__PURE__ */ jsx11(Icon, { className: "w-5 h-5" })
776
+ children: /* @__PURE__ */ jsx13(Icon, { className: "w-5 h-5" })
735
777
  },
736
778
  link.label
737
779
  );
738
780
  }) })
739
781
  ] }),
740
782
  /* @__PURE__ */ jsxs8("div", { children: [
741
- /* @__PURE__ */ jsx11("h3", { className: "font-semibold text-base mb-4 text-card-foreground", children: "Quick Links" }),
742
- /* @__PURE__ */ jsx11("ul", { className: "space-y-2", children: quickLinks.map((link) => /* @__PURE__ */ jsx11("li", { children: /* @__PURE__ */ jsx11(Link2, { href: link.href, className: "text-sm text-muted-foreground transition-colors hover:text-card-foreground", children: link.label }) }, link.label)) })
783
+ /* @__PURE__ */ jsx13("h3", { className: "font-semibold text-base mb-4 text-white", children: "Quick Links" }),
784
+ /* @__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)) })
743
785
  ] }),
744
- /* @__PURE__ */ jsx11("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: [
745
- /* @__PURE__ */ jsx11("h3", { className: "font-semibold text-base mb-4 text-card-foreground", children: contactTitle }),
786
+ /* @__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: [
787
+ /* @__PURE__ */ jsx13("h3", { className: "font-semibold text-base mb-4 text-white", children: contactTitle }),
746
788
  /* @__PURE__ */ jsxs8("form", { onSubmit: handleEmailSubmit, className: "relative", children: [
747
- /* @__PURE__ */ jsx11(
789
+ /* @__PURE__ */ jsx13(
748
790
  Input,
749
791
  {
750
792
  type: "email",
751
793
  name: "email",
752
794
  placeholder: emailPlaceholder,
753
795
  required: true,
754
- className: "w-full bg-muted border-border text-card-foreground placeholder:text-muted-foreground pr-12"
796
+ className: "w-full bg-white/10 border-white/20 text-white placeholder:text-white/50 pr-12"
755
797
  }
756
798
  ),
757
- /* @__PURE__ */ jsx11(
799
+ /* @__PURE__ */ jsx13(
758
800
  "button",
759
801
  {
760
802
  type: "submit",
761
- className: "absolute right-1 top-1/2 -translate-y-1/2 bg-card text-foreground hover:bg-card active:bg-card active:text-card-foreground px-3 py-3 rounded-md transition-colors",
803
+ 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",
762
804
  "aria-label": "Submit email",
763
- children: /* @__PURE__ */ jsx11(FaArrowRight, { className: "w-3 h-3" })
805
+ children: /* @__PURE__ */ jsx13(FaArrowRight, { className: "w-3 h-3" })
764
806
  }
765
807
  )
766
808
  ] })
767
809
  ] }) })
768
810
  ] }),
769
- /* @__PURE__ */ jsx11("div", { className: "border-t border-border pt-8", children: /* @__PURE__ */ jsx11("div", { className: "flex flex-col md:flex-row justify-between items-center gap-4", children: /* @__PURE__ */ jsx11("p", { className: "text-sm text-muted-foreground", children: copyrightText }) }) })
811
+ /* @__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 }) }) })
770
812
  ] }) });
771
813
  }
772
814
  export {