@mdxui/named 8.0.0 → 8.2.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.
@@ -196,7 +196,7 @@ function Hero({
196
196
  const hasHeroImage = !!rightImageSrc && isRenderableSrc(rightImageSrc);
197
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: [
198
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: [
199
- /* @__PURE__ */ jsxs("div", { className: "space-y-6 lg:pt-8", children: [
199
+ /* @__PURE__ */ jsxs("div", { className: cn("space-y-6 lg:pt-8", !hasHeroImage && "mx-auto max-w-3xl text-center"), children: [
200
200
  /* @__PURE__ */ jsx4(ScrollReveal, { direction: "down", delay: 0.1, children: /* @__PURE__ */ jsx4("div", { className: "inline-block", children: /* @__PURE__ */ jsxs(
201
201
  "a",
202
202
  {
@@ -211,8 +211,8 @@ function Hero({
211
211
  }
212
212
  ) }) }),
213
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: [
214
+ /* @__PURE__ */ jsx4(ScrollReveal, { direction: "up", delay: 0.3, children: /* @__PURE__ */ jsx4("p", { className: cn("text-lg leading-relaxed max-w-lg", !hasHeroImage && "mx-auto"), children: description }) }),
215
+ /* @__PURE__ */ jsx4(ScrollReveal, { direction: "up", delay: 0.4, trigger: "mount", children: /* @__PURE__ */ jsx4("div", { className: cn("flex flex-col sm:flex-row gap-3 pt-4", !hasHeroImage && "sm:justify-center"), children: /* @__PURE__ */ jsx4(Button, { asChild: true, variant: ctaVariant, children: /* @__PURE__ */ jsxs("a", { href: ctaHref, children: [
216
216
  ctaText,
217
217
  /* @__PURE__ */ jsx4(HiChevronRight, { className: "w-4 h-4" })
218
218
  ] }) }) }) })
@@ -400,7 +400,7 @@ function Features({ heading = "How It Works", description = "Priya handles the r
400
400
  code: feature.code,
401
401
  language: feature.language,
402
402
  themes: "github-dark-default",
403
- className: "bg-[#0d1117] rounded-lg p-6 lg:p-8 text-sm leading-relaxed text-[#e6edf3]"
403
+ className: "bg-(--color-code) rounded-lg p-6 lg:p-8 text-sm leading-relaxed text-(--color-code-fg)"
404
404
  }
405
405
  ) })
406
406
  ] }) }, index)) })
@@ -469,6 +469,7 @@ function Pricing({
469
469
  import { Check as Check2 } from "lucide-react";
470
470
  import Image2 from "next/image";
471
471
  import { Fragment, jsx as jsx8, jsxs as jsxs4 } from "react/jsx-runtime";
472
+ var hasTierImage = (tier) => !!tier.image && isRenderableSrc(tier.image);
472
473
  var defaultTiers = [
473
474
  {
474
475
  title: "Business",
@@ -486,8 +487,6 @@ var defaultTiers = [
486
487
  { text: "Custom workflows" },
487
488
  { text: "Advanced analytics" }
488
489
  ],
489
- image: "/images/hero/hero-main.png",
490
- imageAlt: "Business Plan",
491
490
  featured: true
492
491
  },
493
492
  {
@@ -510,18 +509,28 @@ function PricingTiers({
510
509
  securityNote = "Priya only accesses GitHub Issues and Projects\u2014she cannot read your code or secrets.",
511
510
  className
512
511
  }) {
512
+ const columnCount = tiers.reduce((count, tier) => count + (tier.featured && hasTierImage(tier) ? 2 : 1), 0);
513
+ const gridColumns = {
514
+ 1: "lg:grid-cols-1",
515
+ 2: "lg:grid-cols-2",
516
+ 3: "lg:grid-cols-3",
517
+ 4: "lg:grid-cols-4",
518
+ 5: "lg:grid-cols-5",
519
+ 6: "lg:grid-cols-6"
520
+ }[columnCount] ?? "lg:grid-cols-3";
521
+ const gridMaxWidth = !tiers.some(hasTierImage) && tiers.length <= 2 ? "max-w-4xl mx-auto" : void 0;
513
522
  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
523
  /* @__PURE__ */ jsx8(ScrollReveal, { direction: "up", delay: 0.1, children: /* @__PURE__ */ jsxs4("div", { className: "text-center my-16 sm:my-12", children: [
515
524
  /* @__PURE__ */ jsx8("h2", { className: "font-halant font-normal text-[clamp(32px,4vw,52px)] leading-tight text-foreground mb-4", children: heading }),
516
525
  /* @__PURE__ */ jsx8("p", { className: "text-base text-muted-foreground max-w-2xl mx-auto", children: subheading })
517
526
  ] }) }),
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(
527
+ /* @__PURE__ */ jsx8("ul", { className: cn("grid gap-6 lg:items-stretch", gridColumns, gridMaxWidth), children: tiers.map((tier, index) => /* @__PURE__ */ jsx8("li", { className: tier.featured && hasTierImage(tier) ? "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(
519
528
  "div",
520
529
  {
521
530
  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",
522
531
  children: tier.featured ? /* @__PURE__ */ jsxs4(Fragment, { 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: [
532
+ hasTierImage(tier) && /* @__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" }) }) }),
533
+ /* @__PURE__ */ jsxs4("div", { className: cn("flex flex-col p-6 md:p-8", hasTierImage(tier) && "xl:w-1/2"), children: [
525
534
  /* @__PURE__ */ jsxs4("div", { className: "flex-1", children: [
526
535
  /* @__PURE__ */ jsx8("p", { className: "text-lg font-semibold text-foreground", children: tier.title }),
527
536
  /* @__PURE__ */ jsx8("p", { className: "text-muted-foreground mt-3", children: tier.description }),
@@ -761,11 +770,11 @@ function Footer({
761
770
  }
762
771
  form.reset();
763
772
  };
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: [
773
+ return /* @__PURE__ */ jsx13("footer", { className: cn("py-16 px-6 lg:px-12 bg-(--color-footer) text-(--color-footer-fg)", className), children: /* @__PURE__ */ jsxs8("div", { className: "max-w-7xl mx-auto", children: [
765
774
  /* @__PURE__ */ jsxs8("div", { className: "grid md:grid-cols-5 gap-12 mb-12", children: [
766
775
  /* @__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 }),
776
+ /* @__PURE__ */ jsx13(Link2, { href: "/", className: "inline-block mb-4", children: /* @__PURE__ */ jsx13("div", { className: "text-3xl font-base text-(--color-footer-fg) font-halant", children: logo }) }),
777
+ /* @__PURE__ */ jsx13("p", { className: "max-w-md text-sm leading-relaxed text-(--color-footer-fg)/70 mb-6", children: description }),
769
778
  /* @__PURE__ */ jsx13("div", { className: "flex items-center gap-4", children: socialLinks.map((link) => {
770
779
  const Icon = link.icon;
771
780
  return /* @__PURE__ */ jsx13(
@@ -774,7 +783,7 @@ function Footer({
774
783
  href: link.href,
775
784
  target: "_blank",
776
785
  rel: "noopener noreferrer",
777
- className: "text-white/70 transition-colors hover:text-white",
786
+ className: "text-(--color-footer-fg)/70 transition-colors hover:text-(--color-footer-fg)",
778
787
  "aria-label": link.label,
779
788
  children: /* @__PURE__ */ jsx13(Icon, { className: "w-5 h-5" })
780
789
  },
@@ -783,11 +792,11 @@ function Footer({
783
792
  }) })
784
793
  ] }),
785
794
  /* @__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)) })
795
+ /* @__PURE__ */ jsx13("h3", { className: "font-semibold text-base mb-4 text-(--color-footer-fg)", children: "Quick Links" }),
796
+ /* @__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-(--color-footer-fg)/70 transition-colors hover:text-(--color-footer-fg)", children: link.label }) }, link.label)) })
788
797
  ] }),
789
798
  /* @__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 }),
799
+ /* @__PURE__ */ jsx13("h3", { className: "font-semibold text-base mb-4 text-(--color-footer-fg)", children: contactTitle }),
791
800
  /* @__PURE__ */ jsxs8("form", { onSubmit: handleEmailSubmit, className: "relative", children: [
792
801
  /* @__PURE__ */ jsx13(
793
802
  Input,
@@ -796,14 +805,14 @@ function Footer({
796
805
  name: "email",
797
806
  placeholder: emailPlaceholder,
798
807
  required: true,
799
- className: "w-full bg-white/10 border-white/20 text-white placeholder:text-white/50 pr-12"
808
+ className: "w-full bg-(--color-footer-fg)/10 border-(--color-footer-fg)/20 text-(--color-footer-fg) placeholder:text-(--color-footer-fg)/50 pr-12"
800
809
  }
801
810
  ),
802
811
  /* @__PURE__ */ jsx13(
803
812
  "button",
804
813
  {
805
814
  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",
815
+ className: "absolute right-1 top-1/2 -translate-y-1/2 bg-(--color-footer-fg) text-(--color-footer) hover:bg-(--color-footer-fg)/90 active:bg-(--color-footer) active:text-(--color-footer-fg) px-3 py-3 rounded-md transition-colors",
807
816
  "aria-label": "Submit email",
808
817
  children: /* @__PURE__ */ jsx13(FaArrowRight, { className: "w-3 h-3" })
809
818
  }
@@ -811,7 +820,7 @@ function Footer({
811
820
  ] })
812
821
  ] }) })
813
822
  ] }),
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 }) }) })
823
+ /* @__PURE__ */ jsx13("div", { className: "border-t border-(--color-footer-fg)/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-(--color-footer-fg)/60", children: copyrightText }) }) })
815
824
  ] }) });
816
825
  }
817
826
 
@@ -1059,7 +1068,7 @@ function ExecFeatures({
1059
1068
  {
1060
1069
  code: feature.code,
1061
1070
  language: feature.language,
1062
- className: "rounded-[2px] border border-(--color-border) bg-[#0d1117] p-5 text-left text-xs leading-relaxed text-[#e6edf3]"
1071
+ className: "rounded-[2px] border border-(--color-border) bg-(--color-code) p-5 text-left text-xs leading-relaxed text-(--color-code-fg)"
1063
1072
  }
1064
1073
  ) })
1065
1074
  ] }) }) }, index)) })
@@ -1373,15 +1382,615 @@ function ExecutiveView({ content, brandName, hostname }) {
1373
1382
  ] });
1374
1383
  }
1375
1384
 
1376
- // src/view/view.tsx
1385
+ // src/templates/gallery/components/navigation.tsx
1386
+ import { useState as useState4, useEffect as useEffect4 } from "react";
1387
+ import Link5 from "next/link";
1388
+ import { Menu as Menu3, X as X3 } from "lucide-react";
1389
+
1390
+ // src/templates/gallery/ui/button.tsx
1391
+ import * as React4 from "react";
1377
1392
  import { jsx as jsx25 } from "react/jsx-runtime";
1393
+ var baseClasses3 = "inline-flex items-center justify-center gap-2 whitespace-nowrap uppercase tracking-[0.14em] 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-3.5 [&_svg]:shrink-0 cursor-pointer rounded-[4px]";
1394
+ var variantClasses3 = {
1395
+ default: "bg-(--color-btn-primary-to) text-(--color-btn-primary-fg) hover:bg-(--color-accent)",
1396
+ /* `bone` lives ON the painted accent fields (closing room, featured
1397
+ edition) — it paints in the field's own type color (--color-accent-fg,
1398
+ light over the clamped-deep fields in BOTH modes), never the placard:
1399
+ placards follow the theme's card and go dark after hours, which sank
1400
+ this button dark-on-dark. */
1401
+ bone: "bg-(--color-accent-fg) text-(--color-accent-field) hover:bg-(--color-accent-fg)/90",
1402
+ secondary: "bg-transparent text-(--color-fg) border border-(--color-border-strong) hover:bg-(--color-hover)"
1403
+ };
1404
+ var sizeClasses3 = {
1405
+ default: "h-11 px-6 text-xs",
1406
+ sm: "h-9 px-4 text-[11px]"
1407
+ };
1408
+ var GalButton = React4.forwardRef(
1409
+ ({ className, variant = "default", size = "default", asChild = false, children, ...props }, ref) => {
1410
+ const classes = cn(baseClasses3, variantClasses3[variant], sizeClasses3[size], className);
1411
+ if (asChild && React4.isValidElement(children)) {
1412
+ const child = children;
1413
+ return React4.cloneElement(child, {
1414
+ ...props,
1415
+ className: cn(classes, child.props.className)
1416
+ });
1417
+ }
1418
+ return /* @__PURE__ */ jsx25("button", { ref, className: classes, ...props, children });
1419
+ }
1420
+ );
1421
+ GalButton.displayName = "GalButton";
1422
+
1423
+ // src/templates/gallery/ui/placard.tsx
1424
+ import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
1425
+ function GalLabel({ children, className }) {
1426
+ return /* @__PURE__ */ jsx26("span", { className: cn("gal-label block text-(--color-fg-muted)", className), children });
1427
+ }
1428
+ function GalDiamond({ className }) {
1429
+ return /* @__PURE__ */ jsx26(
1430
+ "span",
1431
+ {
1432
+ className: cn("inline-block size-[5px] rotate-45 bg-(--color-accent-strong)", className),
1433
+ "aria-hidden": "true"
1434
+ }
1435
+ );
1436
+ }
1437
+ function GalSectionHead({ heading, statement, className }) {
1438
+ return /* @__PURE__ */ jsxs19("div", { className: cn("grid gap-y-8 md:grid-cols-12 md:gap-x-6", className), children: [
1439
+ /* @__PURE__ */ jsx26("div", { className: "md:col-span-7", children: /* @__PURE__ */ jsx26("h2", { className: "text-[clamp(40px,5.5vw,76px)] text-(--color-fg)", children: heading }) }),
1440
+ statement && /* @__PURE__ */ jsx26("div", { className: "md:col-span-4 md:col-start-9 md:self-end", children: /* @__PURE__ */ jsx26("p", { className: "max-w-[40ch] text-base leading-relaxed text-(--color-fg-soft)", children: statement }) })
1441
+ ] });
1442
+ }
1443
+
1444
+ // src/templates/gallery/components/navigation.tsx
1445
+ import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
1446
+ function GalNavigation({
1447
+ logo = "Priya",
1448
+ logoHref = "/",
1449
+ links = [
1450
+ { label: "Features", href: "#features" },
1451
+ { label: "Pricing", href: "#pricing" },
1452
+ { label: "FAQ", href: "#faq" }
1453
+ ],
1454
+ ctaText = "Hire me",
1455
+ ctaHref = "#pricing",
1456
+ className
1457
+ }) {
1458
+ const [mobileMenuOpen, setMobileMenuOpen] = useState4(false);
1459
+ const [isScrolled, setIsScrolled] = useState4(false);
1460
+ useEffect4(() => {
1461
+ const handleScroll = () => setIsScrolled(window.scrollY > 10);
1462
+ window.addEventListener("scroll", handleScroll);
1463
+ return () => window.removeEventListener("scroll", handleScroll);
1464
+ }, []);
1465
+ return /* @__PURE__ */ jsx27(
1466
+ "nav",
1467
+ {
1468
+ className: cn(
1469
+ "sticky top-0 z-50 w-full border-b bg-(--color-surface) transition-[border-color] duration-200",
1470
+ isScrolled ? "border-(--color-border-strong)" : "border-(--color-border)",
1471
+ className
1472
+ ),
1473
+ children: /* @__PURE__ */ jsxs20("div", { className: "mx-auto max-w-6xl px-6 py-5 lg:px-10", children: [
1474
+ /* @__PURE__ */ jsxs20("div", { className: "flex items-center justify-between", children: [
1475
+ /* @__PURE__ */ jsxs20(Link5, { href: logoHref, className: "flex items-center gap-2.5", children: [
1476
+ /* @__PURE__ */ jsx27("span", { className: "gal-display text-xl font-[560] tracking-[-0.01em] text-(--color-fg)", children: logo }),
1477
+ /* @__PURE__ */ jsx27(GalDiamond, {})
1478
+ ] }),
1479
+ /* @__PURE__ */ jsx27("div", { className: "hidden items-center gap-10 lg:flex", children: links.map((link) => /* @__PURE__ */ jsx27(
1480
+ "a",
1481
+ {
1482
+ href: link.href,
1483
+ className: "gal-label text-(--color-fg-muted) transition-colors hover:text-(--color-fg)",
1484
+ children: link.label
1485
+ },
1486
+ link.href
1487
+ )) }),
1488
+ ctaText && ctaHref && /* @__PURE__ */ jsx27("div", { className: "hidden items-center lg:flex", children: /* @__PURE__ */ jsx27(GalButton, { asChild: true, variant: "secondary", size: "sm", children: /* @__PURE__ */ jsx27("a", { href: ctaHref, children: ctaText }) }) }),
1489
+ /* @__PURE__ */ jsx27(
1490
+ "button",
1491
+ {
1492
+ className: "p-2 text-(--color-fg) lg:hidden",
1493
+ onClick: () => setMobileMenuOpen(!mobileMenuOpen),
1494
+ "aria-label": "Toggle menu",
1495
+ children: mobileMenuOpen ? /* @__PURE__ */ jsx27(X3, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx27(Menu3, { className: "h-5 w-5" })
1496
+ }
1497
+ )
1498
+ ] }),
1499
+ mobileMenuOpen && /* @__PURE__ */ jsx27("div", { className: "mt-5 border-t border-(--color-border) lg:hidden", children: /* @__PURE__ */ jsxs20("div", { className: "flex flex-col py-2", children: [
1500
+ links.map((link) => /* @__PURE__ */ jsx27(
1501
+ "a",
1502
+ {
1503
+ href: link.href,
1504
+ className: "gal-label border-b border-(--color-border) py-4 text-(--color-fg) last:border-b-0",
1505
+ onClick: () => setMobileMenuOpen(false),
1506
+ children: link.label
1507
+ },
1508
+ link.href
1509
+ )),
1510
+ ctaText && ctaHref && /* @__PURE__ */ jsx27(
1511
+ GalButton,
1512
+ {
1513
+ asChild: true,
1514
+ variant: "secondary",
1515
+ size: "sm",
1516
+ className: "mt-4 self-start",
1517
+ onClick: () => setMobileMenuOpen(false),
1518
+ children: /* @__PURE__ */ jsx27("a", { href: ctaHref, children: ctaText })
1519
+ }
1520
+ )
1521
+ ] }) })
1522
+ ] })
1523
+ }
1524
+ );
1525
+ }
1526
+
1527
+ // src/templates/gallery/components/hero.tsx
1528
+ import { HiArrowRight as HiArrowRight4 } from "react-icons/hi";
1529
+ import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
1530
+ function GalHero({
1531
+ presenter = "Priya",
1532
+ badgeText,
1533
+ heading = "Your AI Product Manager for GitHub",
1534
+ description = "Priya triages issues, plans sprints, and grooms your backlog automatically. You focus on building.",
1535
+ ctaText = "Get Started",
1536
+ ctaHref = "#pricing",
1537
+ secondaryCtaText,
1538
+ secondaryCtaHref,
1539
+ marqueeTitle = "Tools I work with",
1540
+ marqueeImages = [],
1541
+ className
1542
+ }) {
1543
+ const tools = marqueeImages.filter(
1544
+ (s) => !/^(https?:)?\/\//i.test(s.trim()) && !s.trim().startsWith("data:")
1545
+ );
1546
+ return /* @__PURE__ */ jsxs21("section", { className: cn("gal-wash bg-(--color-surface)", className), children: [
1547
+ /* @__PURE__ */ jsxs21("div", { className: "mx-auto max-w-6xl px-6 lg:px-10", children: [
1548
+ /* @__PURE__ */ jsx28(ScrollReveal, { direction: "none", trigger: "mount", children: /* @__PURE__ */ jsx28("div", { className: "pt-8 md:pt-16 md:text-center", children: /* @__PURE__ */ jsx28(GalLabel, { className: "text-(--color-fg)", children: badgeText ?? presenter }) }) }),
1549
+ /* @__PURE__ */ jsx28(ScrollReveal, { direction: "up", trigger: "mount", children: /* @__PURE__ */ jsx28("h1", { className: "max-w-[16ch] pt-8 text-[clamp(46px,6.5vw,96px)] text-(--color-fg) md:mx-auto md:pt-14 md:text-center", children: heading }) }),
1550
+ /* @__PURE__ */ jsx28("div", { className: "pt-7 pb-16 md:pt-12 md:pb-32", children: /* @__PURE__ */ jsxs21(ScrollReveal, { direction: "up", delay: 0.12, trigger: "mount", children: [
1551
+ /* @__PURE__ */ jsx28("p", { className: "max-w-[52ch] text-lg leading-relaxed text-(--color-fg-soft) md:mx-auto md:text-center md:text-xl", children: description }),
1552
+ /* @__PURE__ */ jsxs21("div", { className: "mt-9 flex flex-col gap-3 sm:flex-row md:justify-center", children: [
1553
+ /* @__PURE__ */ jsx28(GalButton, { asChild: true, children: /* @__PURE__ */ jsxs21("a", { href: ctaHref, children: [
1554
+ ctaText,
1555
+ /* @__PURE__ */ jsx28(HiArrowRight4, { className: "h-3.5 w-3.5" })
1556
+ ] }) }),
1557
+ secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ jsx28(GalButton, { asChild: true, variant: "secondary", children: /* @__PURE__ */ jsx28("a", { href: secondaryCtaHref, children: secondaryCtaText }) })
1558
+ ] })
1559
+ ] }) })
1560
+ ] }),
1561
+ tools.length > 0 && /* @__PURE__ */ jsx28("div", { className: "border-t border-b border-(--color-border)", "aria-label": marqueeTitle, children: /* @__PURE__ */ jsx28(Marquee, { className: "py-3.5 [--duration:48s] [--gap:3rem]", children: tools.map((tool, i) => /* @__PURE__ */ jsxs21(
1562
+ "span",
1563
+ {
1564
+ className: "gal-label flex items-center gap-x-12 whitespace-nowrap text-(--color-fg-muted)",
1565
+ children: [
1566
+ brandLabel(tool),
1567
+ /* @__PURE__ */ jsx28(GalDiamond, { className: "size-1" })
1568
+ ]
1569
+ },
1570
+ `${tool}-${i}`
1571
+ )) }) })
1572
+ ] });
1573
+ }
1574
+
1575
+ // src/templates/gallery/components/features.tsx
1576
+ import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
1577
+ var catalogueNo = (badge) => {
1578
+ const n = parseInt(badge, 10);
1579
+ return Number.isNaN(n) ? badge : String(n);
1580
+ };
1581
+ function GalFeatures({
1582
+ heading = "How It Works",
1583
+ description,
1584
+ features = [],
1585
+ className
1586
+ }) {
1587
+ return /* @__PURE__ */ jsx29("section", { id: "features", className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsxs22("div", { className: "mx-auto max-w-6xl px-6 py-28 md:py-40 lg:px-10", children: [
1588
+ /* @__PURE__ */ jsx29(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx29(
1589
+ GalSectionHead,
1590
+ {
1591
+ heading,
1592
+ statement: description
1593
+ }
1594
+ ) }),
1595
+ /* @__PURE__ */ jsx29("div", { className: "mt-24 space-y-28 md:mt-36 md:space-y-44", children: features.map((feature, index) => {
1596
+ const reversed = index % 2 === 1;
1597
+ const language = feature.language ?? "typescript";
1598
+ return /* @__PURE__ */ jsx29(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsxs22("article", { className: "grid items-center gap-y-10 md:grid-cols-12 md:gap-x-10", children: [
1599
+ feature.code && /* @__PURE__ */ jsx29("div", { className: cn("md:col-span-7", reversed && "md:order-2"), children: /* @__PURE__ */ jsx29("div", { className: "rounded-[2px] md:border md:border-(--color-vitrine-border) md:bg-(--color-placard) md:p-1.5 md:shadow-(--shadow-lg)", children: /* @__PURE__ */ jsx29(
1600
+ CodeWindow,
1601
+ {
1602
+ code: feature.code,
1603
+ language,
1604
+ className: "rounded-[2px] bg-(--color-vitrine) p-6 text-left text-xs leading-relaxed text-(--color-vitrine-fg) md:p-8"
1605
+ }
1606
+ ) }) }),
1607
+ /* @__PURE__ */ jsx29(
1608
+ "div",
1609
+ {
1610
+ className: cn(
1611
+ feature.code ? "md:col-span-5" : "md:col-span-7",
1612
+ reversed && "md:order-1"
1613
+ ),
1614
+ children: /* @__PURE__ */ jsxs22("div", { className: "rounded-[4px] border border-(--color-placard-border) bg-(--color-placard) p-7 text-(--color-placard-fg) shadow-(--shadow-md) md:p-9", children: [
1615
+ /* @__PURE__ */ jsx29("div", { className: "border-b border-(--color-placard-border) pb-4", children: /* @__PURE__ */ jsxs22("span", { className: "gal-no text-2xl text-(--color-accent-strong)", children: [
1616
+ "No. ",
1617
+ catalogueNo(feature.badge)
1618
+ ] }) }),
1619
+ /* @__PURE__ */ jsx29("h3", { className: "mt-6 text-2xl font-semibold tracking-[-0.01em] text-(--color-placard-fg)", children: feature.title }),
1620
+ /* @__PURE__ */ jsx29("p", { className: "mt-5 text-sm leading-relaxed text-(--color-placard-soft)", children: feature.description }),
1621
+ feature.items.length > 0 && /* @__PURE__ */ jsx29("ul", { className: "mt-7 space-y-3 border-t border-(--color-placard-border) pt-5", children: feature.items.map((item, itemIndex) => /* @__PURE__ */ jsxs22(
1622
+ "li",
1623
+ {
1624
+ className: "flex items-baseline gap-3 text-sm text-(--color-placard-fg)",
1625
+ children: [
1626
+ /* @__PURE__ */ jsx29(GalDiamond, { className: "shrink-0 -translate-y-px" }),
1627
+ item.text
1628
+ ]
1629
+ },
1630
+ itemIndex
1631
+ )) })
1632
+ ] })
1633
+ }
1634
+ )
1635
+ ] }) }, index);
1636
+ }) })
1637
+ ] }) });
1638
+ }
1639
+
1640
+ // src/templates/gallery/components/pricing.tsx
1641
+ import { jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
1642
+ function GalPricing({
1643
+ heading = "Simple, transparent pricing",
1644
+ subheading,
1645
+ price = "$16",
1646
+ priceUnit = "/ month",
1647
+ trialText,
1648
+ ctaText = "Get Started",
1649
+ ctaHref = "#contact",
1650
+ featuresHeading = "What's included",
1651
+ features = [],
1652
+ securityNote,
1653
+ className
1654
+ }) {
1655
+ return /* @__PURE__ */ jsx30("section", { id: "pricing", className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsxs23("div", { className: "mx-auto max-w-6xl px-6 py-28 md:py-40 lg:px-10", children: [
1656
+ /* @__PURE__ */ jsx30(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx30(GalSectionHead, { heading, statement: subheading }) }),
1657
+ /* @__PURE__ */ jsx30(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx30("div", { className: "mt-20 rounded-[4px] border border-(--color-placard-border) bg-(--color-placard) p-8 text-(--color-placard-fg) shadow-(--shadow-md) md:mt-28 md:p-12", children: /* @__PURE__ */ jsxs23("div", { className: "grid gap-y-10 md:grid-cols-12 md:gap-x-10", children: [
1658
+ /* @__PURE__ */ jsxs23("div", { className: "md:col-span-5", children: [
1659
+ /* @__PURE__ */ jsxs23("div", { className: "flex items-baseline gap-2.5", children: [
1660
+ /* @__PURE__ */ jsx30("span", { className: "gal-display text-7xl font-[560] tracking-[-0.02em] text-(--color-placard-fg) md:text-8xl", children: price }),
1661
+ /* @__PURE__ */ jsx30("span", { className: "text-sm text-(--color-placard-muted)", children: priceUnit })
1662
+ ] }),
1663
+ trialText && /* @__PURE__ */ jsx30("p", { className: "mt-4 text-sm text-(--color-placard-soft)", children: trialText }),
1664
+ /* @__PURE__ */ jsx30("div", { className: "mt-9", children: /* @__PURE__ */ jsx30(GalButton, { asChild: true, children: /* @__PURE__ */ jsx30("a", { href: ctaHref, children: ctaText }) }) })
1665
+ ] }),
1666
+ /* @__PURE__ */ jsxs23("div", { className: "md:col-span-6 md:col-start-7", children: [
1667
+ /* @__PURE__ */ jsx30(GalLabel, { className: "text-(--color-placard-muted)", children: featuresHeading }),
1668
+ /* @__PURE__ */ jsx30("ul", { className: "mt-5 columns-1 gap-x-10 sm:columns-2", children: features.map((feature, index) => /* @__PURE__ */ jsx30(
1669
+ "li",
1670
+ {
1671
+ className: "break-inside-avoid border-t border-(--color-placard-border) py-3 text-sm text-(--color-placard-fg)",
1672
+ children: feature.text
1673
+ },
1674
+ index
1675
+ )) })
1676
+ ] })
1677
+ ] }) }) }),
1678
+ securityNote && /* @__PURE__ */ jsx30("div", { className: "mt-14 border-t border-(--color-border) pt-6", children: /* @__PURE__ */ jsx30("p", { className: "max-w-[70ch] text-xs leading-relaxed text-(--color-fg-muted)", children: securityNote }) })
1679
+ ] }) });
1680
+ }
1681
+
1682
+ // src/templates/gallery/components/pricing-tiers.tsx
1683
+ import { jsx as jsx31, jsxs as jsxs24 } from "react/jsx-runtime";
1684
+ function GalPricingTiers({
1685
+ heading = "Simple, transparent pricing",
1686
+ subheading,
1687
+ tiers = [],
1688
+ securityNote,
1689
+ className
1690
+ }) {
1691
+ return /* @__PURE__ */ jsx31("section", { id: "pricing", className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsxs24("div", { className: "mx-auto max-w-6xl px-6 py-28 md:py-40 lg:px-10", children: [
1692
+ /* @__PURE__ */ jsx31(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx31(
1693
+ GalSectionHead,
1694
+ {
1695
+ heading,
1696
+ statement: subheading
1697
+ }
1698
+ ) }),
1699
+ /* @__PURE__ */ jsx31("div", { className: "mt-20 grid gap-8 md:mt-28 md:grid-cols-2", children: tiers.map((tier, index) => {
1700
+ const featured = !!tier.featured;
1701
+ return /* @__PURE__ */ jsx31(ScrollReveal, { direction: "up", delay: index * 0.06, children: /* @__PURE__ */ jsxs24(
1702
+ "div",
1703
+ {
1704
+ className: cn(
1705
+ "flex h-full flex-col rounded-[4px] p-8 md:p-10",
1706
+ featured ? "bg-(--color-accent-field) text-(--color-accent-fg) shadow-(--shadow-xl)" : "border border-(--color-placard-border) bg-(--color-placard) text-(--color-placard-fg) shadow-(--shadow-md)"
1707
+ ),
1708
+ children: [
1709
+ /* @__PURE__ */ jsx31(
1710
+ "h3",
1711
+ {
1712
+ className: cn(
1713
+ "text-2xl font-semibold tracking-[-0.01em]",
1714
+ featured ? "text-(--color-accent-fg)" : "text-(--color-placard-fg)"
1715
+ ),
1716
+ children: tier.title
1717
+ }
1718
+ ),
1719
+ /* @__PURE__ */ jsx31(
1720
+ "p",
1721
+ {
1722
+ className: cn(
1723
+ "mt-3 max-w-[44ch] text-sm leading-relaxed",
1724
+ featured ? "text-(--color-accent-fg)/80" : "text-(--color-placard-soft)"
1725
+ ),
1726
+ children: tier.description
1727
+ }
1728
+ ),
1729
+ /* @__PURE__ */ jsxs24("div", { className: "mt-10 flex items-baseline gap-2.5", children: [
1730
+ /* @__PURE__ */ jsx31(
1731
+ "span",
1732
+ {
1733
+ className: cn(
1734
+ "gal-display text-7xl font-[560] tracking-[-0.02em] md:text-8xl",
1735
+ featured ? "text-(--color-accent-fg)" : "text-(--color-placard-fg)"
1736
+ ),
1737
+ children: tier.price
1738
+ }
1739
+ ),
1740
+ /* @__PURE__ */ jsx31(
1741
+ "span",
1742
+ {
1743
+ className: cn(
1744
+ "text-sm",
1745
+ featured ? "text-(--color-accent-fg)/70" : "text-(--color-placard-muted)"
1746
+ ),
1747
+ children: tier.priceUnit
1748
+ }
1749
+ )
1750
+ ] }),
1751
+ /* @__PURE__ */ jsx31("div", { className: "mt-9", children: tier.ctaVariant === "secondary" ? /* @__PURE__ */ jsx31(
1752
+ GalButton,
1753
+ {
1754
+ asChild: true,
1755
+ variant: "secondary",
1756
+ className: cn(
1757
+ "w-full sm:w-auto",
1758
+ featured ? "border-(--color-accent-fg)/40 text-(--color-accent-fg) hover:bg-(--color-accent-fg)/10" : "border-(--color-placard-fg)/35 text-(--color-placard-fg) hover:bg-(--color-placard-fg)/5"
1759
+ ),
1760
+ children: /* @__PURE__ */ jsx31("a", { href: tier.ctaHref || "#", children: tier.ctaText })
1761
+ }
1762
+ ) : featured ? /* @__PURE__ */ jsx31(GalButton, { asChild: true, variant: "bone", className: "w-full sm:w-auto", children: /* @__PURE__ */ jsx31("a", { href: tier.ctaHref || "#", children: tier.ctaText }) }) : /* @__PURE__ */ jsx31(GalButton, { asChild: true, className: "w-full sm:w-auto", children: /* @__PURE__ */ jsx31("a", { href: tier.ctaHref || "#", children: tier.ctaText }) }) }),
1763
+ /* @__PURE__ */ jsx31("ul", { className: "mt-10 flex-1", children: tier.features.map((feature, featureIndex) => /* @__PURE__ */ jsx31(
1764
+ "li",
1765
+ {
1766
+ className: cn(
1767
+ "border-t py-3 text-sm first:border-t-0",
1768
+ featured ? "border-(--color-accent-fg)/20 text-(--color-accent-fg)/90" : "border-(--color-placard-border) text-(--color-placard-fg)"
1769
+ ),
1770
+ children: feature.text
1771
+ },
1772
+ featureIndex
1773
+ )) })
1774
+ ]
1775
+ }
1776
+ ) }, index);
1777
+ }) }),
1778
+ securityNote && /* @__PURE__ */ jsx31("div", { className: "mt-14 border-t border-(--color-border) pt-6", children: /* @__PURE__ */ jsx31("p", { className: "max-w-[70ch] text-xs leading-relaxed text-(--color-fg-muted)", children: securityNote }) })
1779
+ ] }) });
1780
+ }
1781
+
1782
+ // src/templates/gallery/components/faq.tsx
1783
+ import {
1784
+ Accordion as Accordion3,
1785
+ AccordionContent as AccordionContent3,
1786
+ AccordionItem as AccordionItem3,
1787
+ AccordionTrigger as AccordionTrigger3
1788
+ } from "@mdxui/primitives";
1789
+ import { jsx as jsx32, jsxs as jsxs25 } from "react/jsx-runtime";
1790
+ function GalFAQ({ heading = "FAQs", faqs = [], className }) {
1791
+ return /* @__PURE__ */ jsx32("section", { id: "faq", className: cn("bg-(--color-surface)", className), children: /* @__PURE__ */ jsxs25("div", { className: "mx-auto max-w-6xl px-6 py-28 md:py-40 lg:px-10", children: [
1792
+ /* @__PURE__ */ jsx32(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx32(
1793
+ GalSectionHead,
1794
+ {
1795
+ heading
1796
+ }
1797
+ ) }),
1798
+ /* @__PURE__ */ jsx32(Accordion3, { type: "single", collapsible: true, className: "mt-16 border-t border-(--color-border) md:mt-24", children: faqs.map((faq, index) => /* @__PURE__ */ jsxs25(
1799
+ AccordionItem3,
1800
+ {
1801
+ value: `item-${index}`,
1802
+ className: "rounded-none border-b border-(--color-border)",
1803
+ children: [
1804
+ /* @__PURE__ */ jsx32(AccordionTrigger3, { className: "gap-6 py-7 text-base font-medium text-(--color-fg) hover:no-underline", children: /* @__PURE__ */ jsxs25("span", { className: "flex items-baseline gap-6 text-left", children: [
1805
+ /* @__PURE__ */ jsxs25("span", { className: "gal-no shrink-0 text-sm text-(--color-accent-strong)", "aria-hidden": "true", children: [
1806
+ "No. ",
1807
+ index + 1
1808
+ ] }),
1809
+ faq.question
1810
+ ] }) }),
1811
+ /* @__PURE__ */ jsx32(AccordionContent3, { className: "max-w-[62ch] pb-8 pl-18 text-sm leading-relaxed text-(--color-fg-soft)", children: faq.answer })
1812
+ ]
1813
+ },
1814
+ index
1815
+ )) })
1816
+ ] }) });
1817
+ }
1818
+
1819
+ // src/templates/gallery/components/cta.tsx
1820
+ import { HiArrowRight as HiArrowRight5 } from "react-icons/hi";
1821
+ import { jsx as jsx33, jsxs as jsxs26 } from "react/jsx-runtime";
1822
+ function GalCTA({
1823
+ heading = "Ready to Save 15 Hours Per Week?",
1824
+ subheading,
1825
+ buttons = [{ text: "Get Started", href: "#pricing", variant: "primary", showArrow: true }],
1826
+ hostname,
1827
+ className
1828
+ }) {
1829
+ return /* @__PURE__ */ jsx33("section", { className: cn("bg-(--color-accent-field) text-(--color-accent-fg)", className), children: /* @__PURE__ */ jsx33("div", { className: "mx-auto max-w-6xl px-6 py-24 md:py-36 lg:px-10", children: /* @__PURE__ */ jsxs26(ScrollReveal, { direction: "up", children: [
1830
+ hostname && /* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-3", children: [
1831
+ /* @__PURE__ */ jsx33(GalDiamond, { className: "bg-(--color-accent-fg)" }),
1832
+ /* @__PURE__ */ jsx33("span", { className: "gal-label text-(--color-accent-fg)/70", children: hostname })
1833
+ ] }),
1834
+ /* @__PURE__ */ jsxs26("div", { className: "grid items-end gap-y-12 pt-10 md:grid-cols-12 md:gap-x-6 md:pt-14", children: [
1835
+ /* @__PURE__ */ jsxs26("div", { className: "md:col-span-8", children: [
1836
+ /* @__PURE__ */ jsx33("h2", { className: "max-w-[15ch] text-[clamp(44px,6.5vw,96px)] text-(--color-accent-fg)", children: heading }),
1837
+ subheading && /* @__PURE__ */ jsx33("p", { className: "mt-6 max-w-[44ch] text-lg leading-relaxed text-(--color-accent-fg)/80 md:text-xl", children: subheading })
1838
+ ] }),
1839
+ /* @__PURE__ */ jsx33("div", { className: "md:col-span-4 md:flex md:justify-end", children: /* @__PURE__ */ jsx33("div", { className: "flex flex-col gap-3 sm:flex-row", children: buttons.map(
1840
+ (button, index) => button.variant === "primary" || !button.variant ? /* @__PURE__ */ jsx33(GalButton, { asChild: true, variant: "bone", children: /* @__PURE__ */ jsxs26("a", { href: button.href, children: [
1841
+ button.text,
1842
+ button.showArrow && /* @__PURE__ */ jsx33(HiArrowRight5, { className: "h-3.5 w-3.5" })
1843
+ ] }) }, index) : /* @__PURE__ */ jsx33(
1844
+ GalButton,
1845
+ {
1846
+ asChild: true,
1847
+ variant: "secondary",
1848
+ className: "border-(--color-accent-fg)/40 text-(--color-accent-fg) hover:bg-(--color-accent-fg)/10",
1849
+ children: /* @__PURE__ */ jsxs26("a", { href: button.href, children: [
1850
+ button.text,
1851
+ button.showArrow && /* @__PURE__ */ jsx33(HiArrowRight5, { className: "h-3.5 w-3.5" })
1852
+ ] })
1853
+ },
1854
+ index
1855
+ )
1856
+ ) }) })
1857
+ ] })
1858
+ ] }) }) });
1859
+ }
1860
+
1861
+ // src/templates/gallery/components/footer.tsx
1862
+ import Link6 from "next/link";
1863
+ import { jsx as jsx34, jsxs as jsxs27 } from "react/jsx-runtime";
1864
+ function GalFooter({
1865
+ logo = "Priya",
1866
+ description = "Your AI Product Manager for GitHub. Automate issue triage, sprint planning, and backlog grooming.",
1867
+ quickLinks = [
1868
+ { label: "Features", href: "/#features" },
1869
+ { label: "Pricing", href: "/#pricing" },
1870
+ { label: "FAQ", href: "/#faq" }
1871
+ ],
1872
+ socialLinks = [
1873
+ { label: "GitHub", href: "https://github.com" },
1874
+ { label: "npm", href: "https://npmjs.com" },
1875
+ { label: "X", href: "https://x.com/dotdo_ai" }
1876
+ ],
1877
+ copyrightText = "Priya.do \xA9 2025. All rights reserved.",
1878
+ className
1879
+ }) {
1880
+ return /* @__PURE__ */ jsx34("footer", { className: cn("border-t border-(--color-border) bg-(--color-surface)", className), children: /* @__PURE__ */ jsx34("div", { className: "mx-auto max-w-6xl px-6 py-20 md:py-28 lg:px-10", children: /* @__PURE__ */ jsxs27("div", { className: "flex flex-col items-center text-center", children: [
1881
+ /* @__PURE__ */ jsx34(GalDiamond, { className: "size-2" }),
1882
+ /* @__PURE__ */ jsx34(Link6, { href: "/", className: "mt-6 inline-block", children: /* @__PURE__ */ jsx34("span", { className: "gal-display text-4xl font-[560] tracking-[-0.015em] text-(--color-fg) md:text-5xl", children: logo }) }),
1883
+ /* @__PURE__ */ jsx34("p", { className: "mt-5 max-w-[52ch] text-sm leading-relaxed text-(--color-fg-muted)", children: description }),
1884
+ /* @__PURE__ */ jsx34(
1885
+ "nav",
1886
+ {
1887
+ className: "mt-12 flex flex-wrap items-center justify-center gap-x-5 gap-y-4",
1888
+ "aria-label": "Footer",
1889
+ children: [...quickLinks, ...socialLinks].map((link, index, all) => {
1890
+ const external = /^https?:\/\//.test(link.href);
1891
+ return /* @__PURE__ */ jsxs27("span", { className: "flex items-center gap-x-5", children: [
1892
+ /* @__PURE__ */ jsx34(
1893
+ Link6,
1894
+ {
1895
+ href: link.href,
1896
+ ...external ? { target: "_blank", rel: "noopener noreferrer" } : {},
1897
+ className: "gal-label text-(--color-fg-soft) transition-colors hover:text-(--color-fg)",
1898
+ children: link.label
1899
+ }
1900
+ ),
1901
+ index < all.length - 1 && /* @__PURE__ */ jsx34(GalDiamond, { className: "size-1" })
1902
+ ] }, `${link.label}-${index}`);
1903
+ })
1904
+ }
1905
+ ),
1906
+ /* @__PURE__ */ jsx34("div", { className: "mt-14 w-full max-w-md border-t border-(--color-border) pt-6", children: /* @__PURE__ */ jsx34("p", { className: "text-xs leading-relaxed text-(--color-fg-muted)", children: copyrightText }) })
1907
+ ] }) }) });
1908
+ }
1909
+
1910
+ // src/templates/gallery/view.tsx
1911
+ import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
1912
+ function GalleryView({ content, brandName, hostname }) {
1913
+ const { hero, features, pricing, faq, cta } = content;
1914
+ return /* @__PURE__ */ jsxs28(Fragment4, { children: [
1915
+ /* @__PURE__ */ jsx35(GalNavigation, { logo: brandName }),
1916
+ /* @__PURE__ */ jsxs28("main", { children: [
1917
+ /* @__PURE__ */ jsx35(
1918
+ GalHero,
1919
+ {
1920
+ presenter: brandName,
1921
+ badgeText: hero.badgeText,
1922
+ heading: hero.heading,
1923
+ description: hero.description,
1924
+ ctaText: hero.ctaText,
1925
+ ctaHref: hero.ctaHref,
1926
+ secondaryCtaText: hero.secondaryCtaText,
1927
+ secondaryCtaHref: hero.secondaryCtaHref,
1928
+ marqueeTitle: hero.marqueeTitle,
1929
+ marqueeImages: hero.marqueeImages
1930
+ }
1931
+ ),
1932
+ /* @__PURE__ */ jsx35(
1933
+ GalFeatures,
1934
+ {
1935
+ heading: features.heading,
1936
+ description: features.description,
1937
+ features: features.features
1938
+ }
1939
+ ),
1940
+ pricing.variant === "single" ? /* @__PURE__ */ jsx35(
1941
+ GalPricing,
1942
+ {
1943
+ heading: pricing.heading,
1944
+ subheading: pricing.subheading,
1945
+ price: pricing.price,
1946
+ priceUnit: pricing.priceUnit,
1947
+ trialText: pricing.trialText,
1948
+ ctaText: pricing.ctaText,
1949
+ ctaHref: pricing.ctaHref,
1950
+ featuresHeading: pricing.featuresHeading,
1951
+ features: pricing.features,
1952
+ securityNote: pricing.securityNote
1953
+ }
1954
+ ) : /* @__PURE__ */ jsx35(
1955
+ GalPricingTiers,
1956
+ {
1957
+ heading: pricing.heading,
1958
+ subheading: pricing.subheading,
1959
+ tiers: pricing.tiers,
1960
+ securityNote: pricing.securityNote
1961
+ }
1962
+ ),
1963
+ /* @__PURE__ */ jsx35(GalFAQ, { heading: faq.heading, faqs: faq.faqs }),
1964
+ /* @__PURE__ */ jsx35(
1965
+ GalCTA,
1966
+ {
1967
+ heading: cta.heading,
1968
+ subheading: cta.subheading,
1969
+ buttons: cta.buttons,
1970
+ hostname
1971
+ }
1972
+ )
1973
+ ] }),
1974
+ /* @__PURE__ */ jsx35(
1975
+ GalFooter,
1976
+ {
1977
+ logo: brandName,
1978
+ description: hero.description,
1979
+ copyrightText: `${hostname} \xA9 ${(/* @__PURE__ */ new Date()).getFullYear()}. All rights reserved.`
1980
+ }
1981
+ )
1982
+ ] });
1983
+ }
1984
+
1985
+ // src/view/view.tsx
1986
+ import { jsx as jsx36 } from "react/jsx-runtime";
1378
1987
  function NamedAgentView({ content, theme, mode, brandName, hostname, template = "studio" }) {
1379
1988
  return (
1380
1989
  // texture={false}: DialectShell's NoiseTexture grain defaults on for the
1381
1990
  // agent dialects, but the named baseline renders NO overlay — the fixed
1382
1991
  // full-viewport speckle layer sits over every pixel and subtly shifts the
1383
1992
  // 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 }) }) })
1993
+ /* @__PURE__ */ jsx36(DialectShell, { theme, mode, texture: false, children: /* @__PURE__ */ jsx36("div", { "data-dialect": "named", "data-template": template, children: template === "executive" ? /* @__PURE__ */ jsx36(ExecutiveView, { content, brandName, hostname }) : template === "gallery" ? /* @__PURE__ */ jsx36(GalleryView, { content, brandName, hostname }) : /* @__PURE__ */ jsx36(StudioView, { content, brandName, hostname }) }) })
1385
1994
  );
1386
1995
  }
1387
1996
  var view_default = NamedAgentView;