@mdxui/named 8.0.0 → 8.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/styles.css +303 -1
- package/dist/view/index.d.ts +1 -1
- package/dist/view/index.js +597 -2
- package/dist/view/index.js.map +1 -1
- package/package.json +1 -1
package/dist/view/index.js
CHANGED
|
@@ -1373,15 +1373,610 @@ function ExecutiveView({ content, brandName, hostname }) {
|
|
|
1373
1373
|
] });
|
|
1374
1374
|
}
|
|
1375
1375
|
|
|
1376
|
-
// src/
|
|
1376
|
+
// src/templates/gallery/components/navigation.tsx
|
|
1377
|
+
import { useState as useState4, useEffect as useEffect4 } from "react";
|
|
1378
|
+
import Link5 from "next/link";
|
|
1379
|
+
import { Menu as Menu3, X as X3 } from "lucide-react";
|
|
1380
|
+
|
|
1381
|
+
// src/templates/gallery/ui/button.tsx
|
|
1382
|
+
import * as React4 from "react";
|
|
1377
1383
|
import { jsx as jsx25 } from "react/jsx-runtime";
|
|
1384
|
+
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]";
|
|
1385
|
+
var variantClasses3 = {
|
|
1386
|
+
default: "bg-(--color-btn-primary-to) text-(--color-btn-primary-fg) hover:bg-(--color-accent)",
|
|
1387
|
+
bone: "bg-(--color-placard) text-(--color-accent-field) hover:bg-(--color-accent-fg)",
|
|
1388
|
+
secondary: "bg-transparent text-(--color-fg) border border-(--color-border-strong) hover:bg-(--color-hover)"
|
|
1389
|
+
};
|
|
1390
|
+
var sizeClasses3 = {
|
|
1391
|
+
default: "h-11 px-6 text-xs",
|
|
1392
|
+
sm: "h-9 px-4 text-[11px]"
|
|
1393
|
+
};
|
|
1394
|
+
var GalButton = React4.forwardRef(
|
|
1395
|
+
({ className, variant = "default", size = "default", asChild = false, children, ...props }, ref) => {
|
|
1396
|
+
const classes = cn(baseClasses3, variantClasses3[variant], sizeClasses3[size], className);
|
|
1397
|
+
if (asChild && React4.isValidElement(children)) {
|
|
1398
|
+
const child = children;
|
|
1399
|
+
return React4.cloneElement(child, {
|
|
1400
|
+
...props,
|
|
1401
|
+
className: cn(classes, child.props.className)
|
|
1402
|
+
});
|
|
1403
|
+
}
|
|
1404
|
+
return /* @__PURE__ */ jsx25("button", { ref, className: classes, ...props, children });
|
|
1405
|
+
}
|
|
1406
|
+
);
|
|
1407
|
+
GalButton.displayName = "GalButton";
|
|
1408
|
+
|
|
1409
|
+
// src/templates/gallery/ui/placard.tsx
|
|
1410
|
+
import { jsx as jsx26, jsxs as jsxs19 } from "react/jsx-runtime";
|
|
1411
|
+
function GalLabel({ children, className }) {
|
|
1412
|
+
return /* @__PURE__ */ jsx26("span", { className: cn("gal-label block text-(--color-fg-muted)", className), children });
|
|
1413
|
+
}
|
|
1414
|
+
function GalDiamond({ className }) {
|
|
1415
|
+
return /* @__PURE__ */ jsx26(
|
|
1416
|
+
"span",
|
|
1417
|
+
{
|
|
1418
|
+
className: cn("inline-block size-[5px] rotate-45 bg-(--color-accent-strong)", className),
|
|
1419
|
+
"aria-hidden": "true"
|
|
1420
|
+
}
|
|
1421
|
+
);
|
|
1422
|
+
}
|
|
1423
|
+
function GalSectionHead({ heading, statement, className }) {
|
|
1424
|
+
return /* @__PURE__ */ jsxs19("div", { className: cn("grid gap-y-8 md:grid-cols-12 md:gap-x-6", className), children: [
|
|
1425
|
+
/* @__PURE__ */ jsx26("div", { className: "md:col-span-7", children: /* @__PURE__ */ jsx26("h2", { className: "text-[clamp(40px,5.5vw,76px)] text-(--color-fg)", children: heading }) }),
|
|
1426
|
+
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 }) })
|
|
1427
|
+
] });
|
|
1428
|
+
}
|
|
1429
|
+
|
|
1430
|
+
// src/templates/gallery/components/navigation.tsx
|
|
1431
|
+
import { jsx as jsx27, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
1432
|
+
function GalNavigation({
|
|
1433
|
+
logo = "Priya",
|
|
1434
|
+
logoHref = "/",
|
|
1435
|
+
links = [
|
|
1436
|
+
{ label: "Features", href: "#features" },
|
|
1437
|
+
{ label: "Pricing", href: "#pricing" },
|
|
1438
|
+
{ label: "FAQ", href: "#faq" }
|
|
1439
|
+
],
|
|
1440
|
+
ctaText = "Hire me",
|
|
1441
|
+
ctaHref = "#pricing",
|
|
1442
|
+
className
|
|
1443
|
+
}) {
|
|
1444
|
+
const [mobileMenuOpen, setMobileMenuOpen] = useState4(false);
|
|
1445
|
+
const [isScrolled, setIsScrolled] = useState4(false);
|
|
1446
|
+
useEffect4(() => {
|
|
1447
|
+
const handleScroll = () => setIsScrolled(window.scrollY > 10);
|
|
1448
|
+
window.addEventListener("scroll", handleScroll);
|
|
1449
|
+
return () => window.removeEventListener("scroll", handleScroll);
|
|
1450
|
+
}, []);
|
|
1451
|
+
return /* @__PURE__ */ jsx27(
|
|
1452
|
+
"nav",
|
|
1453
|
+
{
|
|
1454
|
+
className: cn(
|
|
1455
|
+
"sticky top-0 z-50 w-full border-b bg-(--color-surface) transition-[border-color] duration-200",
|
|
1456
|
+
isScrolled ? "border-(--color-border-strong)" : "border-(--color-border)",
|
|
1457
|
+
className
|
|
1458
|
+
),
|
|
1459
|
+
children: /* @__PURE__ */ jsxs20("div", { className: "mx-auto max-w-6xl px-6 py-5 lg:px-10", children: [
|
|
1460
|
+
/* @__PURE__ */ jsxs20("div", { className: "flex items-center justify-between", children: [
|
|
1461
|
+
/* @__PURE__ */ jsxs20(Link5, { href: logoHref, className: "flex items-center gap-2.5", children: [
|
|
1462
|
+
/* @__PURE__ */ jsx27("span", { className: "gal-display text-xl font-[560] tracking-[-0.01em] text-(--color-fg)", children: logo }),
|
|
1463
|
+
/* @__PURE__ */ jsx27(GalDiamond, {})
|
|
1464
|
+
] }),
|
|
1465
|
+
/* @__PURE__ */ jsx27("div", { className: "hidden items-center gap-10 lg:flex", children: links.map((link) => /* @__PURE__ */ jsx27(
|
|
1466
|
+
"a",
|
|
1467
|
+
{
|
|
1468
|
+
href: link.href,
|
|
1469
|
+
className: "gal-label text-(--color-fg-muted) transition-colors hover:text-(--color-fg)",
|
|
1470
|
+
children: link.label
|
|
1471
|
+
},
|
|
1472
|
+
link.href
|
|
1473
|
+
)) }),
|
|
1474
|
+
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 }) }) }),
|
|
1475
|
+
/* @__PURE__ */ jsx27(
|
|
1476
|
+
"button",
|
|
1477
|
+
{
|
|
1478
|
+
className: "p-2 text-(--color-fg) lg:hidden",
|
|
1479
|
+
onClick: () => setMobileMenuOpen(!mobileMenuOpen),
|
|
1480
|
+
"aria-label": "Toggle menu",
|
|
1481
|
+
children: mobileMenuOpen ? /* @__PURE__ */ jsx27(X3, { className: "h-5 w-5" }) : /* @__PURE__ */ jsx27(Menu3, { className: "h-5 w-5" })
|
|
1482
|
+
}
|
|
1483
|
+
)
|
|
1484
|
+
] }),
|
|
1485
|
+
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: [
|
|
1486
|
+
links.map((link) => /* @__PURE__ */ jsx27(
|
|
1487
|
+
"a",
|
|
1488
|
+
{
|
|
1489
|
+
href: link.href,
|
|
1490
|
+
className: "gal-label border-b border-(--color-border) py-4 text-(--color-fg) last:border-b-0",
|
|
1491
|
+
onClick: () => setMobileMenuOpen(false),
|
|
1492
|
+
children: link.label
|
|
1493
|
+
},
|
|
1494
|
+
link.href
|
|
1495
|
+
)),
|
|
1496
|
+
ctaText && ctaHref && /* @__PURE__ */ jsx27(
|
|
1497
|
+
GalButton,
|
|
1498
|
+
{
|
|
1499
|
+
asChild: true,
|
|
1500
|
+
variant: "secondary",
|
|
1501
|
+
size: "sm",
|
|
1502
|
+
className: "mt-4 self-start",
|
|
1503
|
+
onClick: () => setMobileMenuOpen(false),
|
|
1504
|
+
children: /* @__PURE__ */ jsx27("a", { href: ctaHref, children: ctaText })
|
|
1505
|
+
}
|
|
1506
|
+
)
|
|
1507
|
+
] }) })
|
|
1508
|
+
] })
|
|
1509
|
+
}
|
|
1510
|
+
);
|
|
1511
|
+
}
|
|
1512
|
+
|
|
1513
|
+
// src/templates/gallery/components/hero.tsx
|
|
1514
|
+
import { HiArrowRight as HiArrowRight4 } from "react-icons/hi";
|
|
1515
|
+
import { jsx as jsx28, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
1516
|
+
function GalHero({
|
|
1517
|
+
presenter = "Priya",
|
|
1518
|
+
badgeText,
|
|
1519
|
+
heading = "Your AI Product Manager for GitHub",
|
|
1520
|
+
description = "Priya triages issues, plans sprints, and grooms your backlog automatically. You focus on building.",
|
|
1521
|
+
ctaText = "Get Started",
|
|
1522
|
+
ctaHref = "#pricing",
|
|
1523
|
+
secondaryCtaText,
|
|
1524
|
+
secondaryCtaHref,
|
|
1525
|
+
marqueeTitle = "Tools I work with",
|
|
1526
|
+
marqueeImages = [],
|
|
1527
|
+
className
|
|
1528
|
+
}) {
|
|
1529
|
+
const tools = marqueeImages.filter(
|
|
1530
|
+
(s) => !/^(https?:)?\/\//i.test(s.trim()) && !s.trim().startsWith("data:")
|
|
1531
|
+
);
|
|
1532
|
+
return /* @__PURE__ */ jsxs21("section", { className: cn("gal-wash bg-(--color-surface)", className), children: [
|
|
1533
|
+
/* @__PURE__ */ jsxs21("div", { className: "mx-auto max-w-6xl px-6 lg:px-10", children: [
|
|
1534
|
+
/* @__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 }) }) }),
|
|
1535
|
+
/* @__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 }) }),
|
|
1536
|
+
/* @__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: [
|
|
1537
|
+
/* @__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 }),
|
|
1538
|
+
/* @__PURE__ */ jsxs21("div", { className: "mt-9 flex flex-col gap-3 sm:flex-row md:justify-center", children: [
|
|
1539
|
+
/* @__PURE__ */ jsx28(GalButton, { asChild: true, children: /* @__PURE__ */ jsxs21("a", { href: ctaHref, children: [
|
|
1540
|
+
ctaText,
|
|
1541
|
+
/* @__PURE__ */ jsx28(HiArrowRight4, { className: "h-3.5 w-3.5" })
|
|
1542
|
+
] }) }),
|
|
1543
|
+
secondaryCtaText && secondaryCtaHref && /* @__PURE__ */ jsx28(GalButton, { asChild: true, variant: "secondary", children: /* @__PURE__ */ jsx28("a", { href: secondaryCtaHref, children: secondaryCtaText }) })
|
|
1544
|
+
] })
|
|
1545
|
+
] }) })
|
|
1546
|
+
] }),
|
|
1547
|
+
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(
|
|
1548
|
+
"span",
|
|
1549
|
+
{
|
|
1550
|
+
className: "gal-label flex items-center gap-x-12 whitespace-nowrap text-(--color-fg-muted)",
|
|
1551
|
+
children: [
|
|
1552
|
+
brandLabel(tool),
|
|
1553
|
+
/* @__PURE__ */ jsx28(GalDiamond, { className: "size-1" })
|
|
1554
|
+
]
|
|
1555
|
+
},
|
|
1556
|
+
`${tool}-${i}`
|
|
1557
|
+
)) }) })
|
|
1558
|
+
] });
|
|
1559
|
+
}
|
|
1560
|
+
|
|
1561
|
+
// src/templates/gallery/components/features.tsx
|
|
1562
|
+
import { jsx as jsx29, jsxs as jsxs22 } from "react/jsx-runtime";
|
|
1563
|
+
var catalogueNo = (badge) => {
|
|
1564
|
+
const n = parseInt(badge, 10);
|
|
1565
|
+
return Number.isNaN(n) ? badge : String(n);
|
|
1566
|
+
};
|
|
1567
|
+
function GalFeatures({
|
|
1568
|
+
heading = "How It Works",
|
|
1569
|
+
description,
|
|
1570
|
+
features = [],
|
|
1571
|
+
className
|
|
1572
|
+
}) {
|
|
1573
|
+
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: [
|
|
1574
|
+
/* @__PURE__ */ jsx29(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx29(
|
|
1575
|
+
GalSectionHead,
|
|
1576
|
+
{
|
|
1577
|
+
heading,
|
|
1578
|
+
statement: description
|
|
1579
|
+
}
|
|
1580
|
+
) }),
|
|
1581
|
+
/* @__PURE__ */ jsx29("div", { className: "mt-24 space-y-28 md:mt-36 md:space-y-44", children: features.map((feature, index) => {
|
|
1582
|
+
const reversed = index % 2 === 1;
|
|
1583
|
+
const language = feature.language ?? "typescript";
|
|
1584
|
+
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: [
|
|
1585
|
+
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(
|
|
1586
|
+
CodeWindow,
|
|
1587
|
+
{
|
|
1588
|
+
code: feature.code,
|
|
1589
|
+
language,
|
|
1590
|
+
className: "rounded-[2px] bg-(--color-vitrine) p-6 text-left text-xs leading-relaxed text-(--color-vitrine-fg) md:p-8"
|
|
1591
|
+
}
|
|
1592
|
+
) }) }),
|
|
1593
|
+
/* @__PURE__ */ jsx29(
|
|
1594
|
+
"div",
|
|
1595
|
+
{
|
|
1596
|
+
className: cn(
|
|
1597
|
+
feature.code ? "md:col-span-5" : "md:col-span-7",
|
|
1598
|
+
reversed && "md:order-1"
|
|
1599
|
+
),
|
|
1600
|
+
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: [
|
|
1601
|
+
/* @__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: [
|
|
1602
|
+
"No. ",
|
|
1603
|
+
catalogueNo(feature.badge)
|
|
1604
|
+
] }) }),
|
|
1605
|
+
/* @__PURE__ */ jsx29("h3", { className: "mt-6 text-2xl font-semibold tracking-[-0.01em] text-(--color-placard-fg)", children: feature.title }),
|
|
1606
|
+
/* @__PURE__ */ jsx29("p", { className: "mt-5 text-sm leading-relaxed text-(--color-placard-soft)", children: feature.description }),
|
|
1607
|
+
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(
|
|
1608
|
+
"li",
|
|
1609
|
+
{
|
|
1610
|
+
className: "flex items-baseline gap-3 text-sm text-(--color-placard-fg)",
|
|
1611
|
+
children: [
|
|
1612
|
+
/* @__PURE__ */ jsx29(GalDiamond, { className: "shrink-0 -translate-y-px" }),
|
|
1613
|
+
item.text
|
|
1614
|
+
]
|
|
1615
|
+
},
|
|
1616
|
+
itemIndex
|
|
1617
|
+
)) })
|
|
1618
|
+
] })
|
|
1619
|
+
}
|
|
1620
|
+
)
|
|
1621
|
+
] }) }, index);
|
|
1622
|
+
}) })
|
|
1623
|
+
] }) });
|
|
1624
|
+
}
|
|
1625
|
+
|
|
1626
|
+
// src/templates/gallery/components/pricing.tsx
|
|
1627
|
+
import { jsx as jsx30, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
1628
|
+
function GalPricing({
|
|
1629
|
+
heading = "Simple, transparent pricing",
|
|
1630
|
+
subheading,
|
|
1631
|
+
price = "$16",
|
|
1632
|
+
priceUnit = "/ month",
|
|
1633
|
+
trialText,
|
|
1634
|
+
ctaText = "Get Started",
|
|
1635
|
+
ctaHref = "#contact",
|
|
1636
|
+
featuresHeading = "What's included",
|
|
1637
|
+
features = [],
|
|
1638
|
+
securityNote,
|
|
1639
|
+
className
|
|
1640
|
+
}) {
|
|
1641
|
+
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: [
|
|
1642
|
+
/* @__PURE__ */ jsx30(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx30(GalSectionHead, { heading, statement: subheading }) }),
|
|
1643
|
+
/* @__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: [
|
|
1644
|
+
/* @__PURE__ */ jsxs23("div", { className: "md:col-span-5", children: [
|
|
1645
|
+
/* @__PURE__ */ jsxs23("div", { className: "flex items-baseline gap-2.5", children: [
|
|
1646
|
+
/* @__PURE__ */ jsx30("span", { className: "gal-display text-7xl font-[560] tracking-[-0.02em] text-(--color-placard-fg) md:text-8xl", children: price }),
|
|
1647
|
+
/* @__PURE__ */ jsx30("span", { className: "text-sm text-(--color-placard-muted)", children: priceUnit })
|
|
1648
|
+
] }),
|
|
1649
|
+
trialText && /* @__PURE__ */ jsx30("p", { className: "mt-4 text-sm text-(--color-placard-soft)", children: trialText }),
|
|
1650
|
+
/* @__PURE__ */ jsx30("div", { className: "mt-9", children: /* @__PURE__ */ jsx30(GalButton, { asChild: true, children: /* @__PURE__ */ jsx30("a", { href: ctaHref, children: ctaText }) }) })
|
|
1651
|
+
] }),
|
|
1652
|
+
/* @__PURE__ */ jsxs23("div", { className: "md:col-span-6 md:col-start-7", children: [
|
|
1653
|
+
/* @__PURE__ */ jsx30(GalLabel, { className: "text-(--color-placard-muted)", children: featuresHeading }),
|
|
1654
|
+
/* @__PURE__ */ jsx30("ul", { className: "mt-5 columns-1 gap-x-10 sm:columns-2", children: features.map((feature, index) => /* @__PURE__ */ jsx30(
|
|
1655
|
+
"li",
|
|
1656
|
+
{
|
|
1657
|
+
className: "break-inside-avoid border-t border-(--color-placard-border) py-3 text-sm text-(--color-placard-fg)",
|
|
1658
|
+
children: feature.text
|
|
1659
|
+
},
|
|
1660
|
+
index
|
|
1661
|
+
)) })
|
|
1662
|
+
] })
|
|
1663
|
+
] }) }) }),
|
|
1664
|
+
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 }) })
|
|
1665
|
+
] }) });
|
|
1666
|
+
}
|
|
1667
|
+
|
|
1668
|
+
// src/templates/gallery/components/pricing-tiers.tsx
|
|
1669
|
+
import { jsx as jsx31, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
1670
|
+
function GalPricingTiers({
|
|
1671
|
+
heading = "Simple, transparent pricing",
|
|
1672
|
+
subheading,
|
|
1673
|
+
tiers = [],
|
|
1674
|
+
securityNote,
|
|
1675
|
+
className
|
|
1676
|
+
}) {
|
|
1677
|
+
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: [
|
|
1678
|
+
/* @__PURE__ */ jsx31(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx31(
|
|
1679
|
+
GalSectionHead,
|
|
1680
|
+
{
|
|
1681
|
+
heading,
|
|
1682
|
+
statement: subheading
|
|
1683
|
+
}
|
|
1684
|
+
) }),
|
|
1685
|
+
/* @__PURE__ */ jsx31("div", { className: "mt-20 grid gap-8 md:mt-28 md:grid-cols-2", children: tiers.map((tier, index) => {
|
|
1686
|
+
const featured = !!tier.featured;
|
|
1687
|
+
return /* @__PURE__ */ jsx31(ScrollReveal, { direction: "up", delay: index * 0.06, children: /* @__PURE__ */ jsxs24(
|
|
1688
|
+
"div",
|
|
1689
|
+
{
|
|
1690
|
+
className: cn(
|
|
1691
|
+
"flex h-full flex-col rounded-[4px] p-8 md:p-10",
|
|
1692
|
+
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)"
|
|
1693
|
+
),
|
|
1694
|
+
children: [
|
|
1695
|
+
/* @__PURE__ */ jsx31(
|
|
1696
|
+
"h3",
|
|
1697
|
+
{
|
|
1698
|
+
className: cn(
|
|
1699
|
+
"text-2xl font-semibold tracking-[-0.01em]",
|
|
1700
|
+
featured ? "text-(--color-accent-fg)" : "text-(--color-placard-fg)"
|
|
1701
|
+
),
|
|
1702
|
+
children: tier.title
|
|
1703
|
+
}
|
|
1704
|
+
),
|
|
1705
|
+
/* @__PURE__ */ jsx31(
|
|
1706
|
+
"p",
|
|
1707
|
+
{
|
|
1708
|
+
className: cn(
|
|
1709
|
+
"mt-3 max-w-[44ch] text-sm leading-relaxed",
|
|
1710
|
+
featured ? "text-(--color-accent-fg)/80" : "text-(--color-placard-soft)"
|
|
1711
|
+
),
|
|
1712
|
+
children: tier.description
|
|
1713
|
+
}
|
|
1714
|
+
),
|
|
1715
|
+
/* @__PURE__ */ jsxs24("div", { className: "mt-10 flex items-baseline gap-2.5", children: [
|
|
1716
|
+
/* @__PURE__ */ jsx31(
|
|
1717
|
+
"span",
|
|
1718
|
+
{
|
|
1719
|
+
className: cn(
|
|
1720
|
+
"gal-display text-7xl font-[560] tracking-[-0.02em] md:text-8xl",
|
|
1721
|
+
featured ? "text-(--color-accent-fg)" : "text-(--color-placard-fg)"
|
|
1722
|
+
),
|
|
1723
|
+
children: tier.price
|
|
1724
|
+
}
|
|
1725
|
+
),
|
|
1726
|
+
/* @__PURE__ */ jsx31(
|
|
1727
|
+
"span",
|
|
1728
|
+
{
|
|
1729
|
+
className: cn(
|
|
1730
|
+
"text-sm",
|
|
1731
|
+
featured ? "text-(--color-accent-fg)/70" : "text-(--color-placard-muted)"
|
|
1732
|
+
),
|
|
1733
|
+
children: tier.priceUnit
|
|
1734
|
+
}
|
|
1735
|
+
)
|
|
1736
|
+
] }),
|
|
1737
|
+
/* @__PURE__ */ jsx31("div", { className: "mt-9", children: tier.ctaVariant === "secondary" ? /* @__PURE__ */ jsx31(
|
|
1738
|
+
GalButton,
|
|
1739
|
+
{
|
|
1740
|
+
asChild: true,
|
|
1741
|
+
variant: "secondary",
|
|
1742
|
+
className: cn(
|
|
1743
|
+
"w-full sm:w-auto",
|
|
1744
|
+
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"
|
|
1745
|
+
),
|
|
1746
|
+
children: /* @__PURE__ */ jsx31("a", { href: tier.ctaHref || "#", children: tier.ctaText })
|
|
1747
|
+
}
|
|
1748
|
+
) : 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 }) }) }),
|
|
1749
|
+
/* @__PURE__ */ jsx31("ul", { className: "mt-10 flex-1", children: tier.features.map((feature, featureIndex) => /* @__PURE__ */ jsx31(
|
|
1750
|
+
"li",
|
|
1751
|
+
{
|
|
1752
|
+
className: cn(
|
|
1753
|
+
"border-t py-3 text-sm first:border-t-0",
|
|
1754
|
+
featured ? "border-(--color-accent-fg)/20 text-(--color-accent-fg)/90" : "border-(--color-placard-border) text-(--color-placard-fg)"
|
|
1755
|
+
),
|
|
1756
|
+
children: feature.text
|
|
1757
|
+
},
|
|
1758
|
+
featureIndex
|
|
1759
|
+
)) })
|
|
1760
|
+
]
|
|
1761
|
+
}
|
|
1762
|
+
) }, index);
|
|
1763
|
+
}) }),
|
|
1764
|
+
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 }) })
|
|
1765
|
+
] }) });
|
|
1766
|
+
}
|
|
1767
|
+
|
|
1768
|
+
// src/templates/gallery/components/faq.tsx
|
|
1769
|
+
import {
|
|
1770
|
+
Accordion as Accordion3,
|
|
1771
|
+
AccordionContent as AccordionContent3,
|
|
1772
|
+
AccordionItem as AccordionItem3,
|
|
1773
|
+
AccordionTrigger as AccordionTrigger3
|
|
1774
|
+
} from "@mdxui/primitives";
|
|
1775
|
+
import { jsx as jsx32, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
1776
|
+
function GalFAQ({ heading = "FAQs", faqs = [], className }) {
|
|
1777
|
+
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: [
|
|
1778
|
+
/* @__PURE__ */ jsx32(ScrollReveal, { direction: "up", children: /* @__PURE__ */ jsx32(
|
|
1779
|
+
GalSectionHead,
|
|
1780
|
+
{
|
|
1781
|
+
heading
|
|
1782
|
+
}
|
|
1783
|
+
) }),
|
|
1784
|
+
/* @__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(
|
|
1785
|
+
AccordionItem3,
|
|
1786
|
+
{
|
|
1787
|
+
value: `item-${index}`,
|
|
1788
|
+
className: "rounded-none border-b border-(--color-border)",
|
|
1789
|
+
children: [
|
|
1790
|
+
/* @__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: [
|
|
1791
|
+
/* @__PURE__ */ jsxs25("span", { className: "gal-no shrink-0 text-sm text-(--color-accent-strong)", "aria-hidden": "true", children: [
|
|
1792
|
+
"No. ",
|
|
1793
|
+
index + 1
|
|
1794
|
+
] }),
|
|
1795
|
+
faq.question
|
|
1796
|
+
] }) }),
|
|
1797
|
+
/* @__PURE__ */ jsx32(AccordionContent3, { className: "max-w-[62ch] pb-8 pl-18 text-sm leading-relaxed text-(--color-fg-soft)", children: faq.answer })
|
|
1798
|
+
]
|
|
1799
|
+
},
|
|
1800
|
+
index
|
|
1801
|
+
)) })
|
|
1802
|
+
] }) });
|
|
1803
|
+
}
|
|
1804
|
+
|
|
1805
|
+
// src/templates/gallery/components/cta.tsx
|
|
1806
|
+
import { HiArrowRight as HiArrowRight5 } from "react-icons/hi";
|
|
1807
|
+
import { jsx as jsx33, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
1808
|
+
function GalCTA({
|
|
1809
|
+
heading = "Ready to Save 15 Hours Per Week?",
|
|
1810
|
+
subheading,
|
|
1811
|
+
buttons = [{ text: "Get Started", href: "#pricing", variant: "primary", showArrow: true }],
|
|
1812
|
+
hostname,
|
|
1813
|
+
className
|
|
1814
|
+
}) {
|
|
1815
|
+
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: [
|
|
1816
|
+
hostname && /* @__PURE__ */ jsxs26("div", { className: "flex items-center gap-3", children: [
|
|
1817
|
+
/* @__PURE__ */ jsx33(GalDiamond, { className: "bg-(--color-accent-fg)" }),
|
|
1818
|
+
/* @__PURE__ */ jsx33("span", { className: "gal-label text-(--color-accent-fg)/70", children: hostname })
|
|
1819
|
+
] }),
|
|
1820
|
+
/* @__PURE__ */ jsxs26("div", { className: "grid items-end gap-y-12 pt-10 md:grid-cols-12 md:gap-x-6 md:pt-14", children: [
|
|
1821
|
+
/* @__PURE__ */ jsxs26("div", { className: "md:col-span-8", children: [
|
|
1822
|
+
/* @__PURE__ */ jsx33("h2", { className: "max-w-[15ch] text-[clamp(44px,6.5vw,96px)] text-(--color-accent-fg)", children: heading }),
|
|
1823
|
+
subheading && /* @__PURE__ */ jsx33("p", { className: "mt-6 max-w-[44ch] text-lg leading-relaxed text-(--color-accent-fg)/80 md:text-xl", children: subheading })
|
|
1824
|
+
] }),
|
|
1825
|
+
/* @__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(
|
|
1826
|
+
(button, index) => button.variant === "primary" || !button.variant ? /* @__PURE__ */ jsx33(GalButton, { asChild: true, variant: "bone", children: /* @__PURE__ */ jsxs26("a", { href: button.href, children: [
|
|
1827
|
+
button.text,
|
|
1828
|
+
button.showArrow && /* @__PURE__ */ jsx33(HiArrowRight5, { className: "h-3.5 w-3.5" })
|
|
1829
|
+
] }) }, index) : /* @__PURE__ */ jsx33(
|
|
1830
|
+
GalButton,
|
|
1831
|
+
{
|
|
1832
|
+
asChild: true,
|
|
1833
|
+
variant: "secondary",
|
|
1834
|
+
className: "border-(--color-accent-fg)/40 text-(--color-accent-fg) hover:bg-(--color-accent-fg)/10",
|
|
1835
|
+
children: /* @__PURE__ */ jsxs26("a", { href: button.href, children: [
|
|
1836
|
+
button.text,
|
|
1837
|
+
button.showArrow && /* @__PURE__ */ jsx33(HiArrowRight5, { className: "h-3.5 w-3.5" })
|
|
1838
|
+
] })
|
|
1839
|
+
},
|
|
1840
|
+
index
|
|
1841
|
+
)
|
|
1842
|
+
) }) })
|
|
1843
|
+
] })
|
|
1844
|
+
] }) }) });
|
|
1845
|
+
}
|
|
1846
|
+
|
|
1847
|
+
// src/templates/gallery/components/footer.tsx
|
|
1848
|
+
import Link6 from "next/link";
|
|
1849
|
+
import { jsx as jsx34, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
1850
|
+
function GalFooter({
|
|
1851
|
+
logo = "Priya",
|
|
1852
|
+
description = "Your AI Product Manager for GitHub. Automate issue triage, sprint planning, and backlog grooming.",
|
|
1853
|
+
quickLinks = [
|
|
1854
|
+
{ label: "Features", href: "/#features" },
|
|
1855
|
+
{ label: "Pricing", href: "/#pricing" },
|
|
1856
|
+
{ label: "FAQ", href: "/#faq" }
|
|
1857
|
+
],
|
|
1858
|
+
socialLinks = [
|
|
1859
|
+
{ label: "GitHub", href: "https://github.com" },
|
|
1860
|
+
{ label: "npm", href: "https://npmjs.com" },
|
|
1861
|
+
{ label: "X", href: "https://x.com/dotdo_ai" }
|
|
1862
|
+
],
|
|
1863
|
+
copyrightText = "Priya.do \xA9 2025. All rights reserved.",
|
|
1864
|
+
className
|
|
1865
|
+
}) {
|
|
1866
|
+
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: [
|
|
1867
|
+
/* @__PURE__ */ jsx34(GalDiamond, { className: "size-2" }),
|
|
1868
|
+
/* @__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 }) }),
|
|
1869
|
+
/* @__PURE__ */ jsx34("p", { className: "mt-5 max-w-[52ch] text-sm leading-relaxed text-(--color-fg-muted)", children: description }),
|
|
1870
|
+
/* @__PURE__ */ jsx34(
|
|
1871
|
+
"nav",
|
|
1872
|
+
{
|
|
1873
|
+
className: "mt-12 flex flex-wrap items-center justify-center gap-x-5 gap-y-4",
|
|
1874
|
+
"aria-label": "Footer",
|
|
1875
|
+
children: [...quickLinks, ...socialLinks].map((link, index, all) => {
|
|
1876
|
+
const external = /^https?:\/\//.test(link.href);
|
|
1877
|
+
return /* @__PURE__ */ jsxs27("span", { className: "flex items-center gap-x-5", children: [
|
|
1878
|
+
/* @__PURE__ */ jsx34(
|
|
1879
|
+
Link6,
|
|
1880
|
+
{
|
|
1881
|
+
href: link.href,
|
|
1882
|
+
...external ? { target: "_blank", rel: "noopener noreferrer" } : {},
|
|
1883
|
+
className: "gal-label text-(--color-fg-soft) transition-colors hover:text-(--color-fg)",
|
|
1884
|
+
children: link.label
|
|
1885
|
+
}
|
|
1886
|
+
),
|
|
1887
|
+
index < all.length - 1 && /* @__PURE__ */ jsx34(GalDiamond, { className: "size-1" })
|
|
1888
|
+
] }, `${link.label}-${index}`);
|
|
1889
|
+
})
|
|
1890
|
+
}
|
|
1891
|
+
),
|
|
1892
|
+
/* @__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 }) })
|
|
1893
|
+
] }) }) });
|
|
1894
|
+
}
|
|
1895
|
+
|
|
1896
|
+
// src/templates/gallery/view.tsx
|
|
1897
|
+
import { Fragment as Fragment4, jsx as jsx35, jsxs as jsxs28 } from "react/jsx-runtime";
|
|
1898
|
+
function GalleryView({ content, brandName, hostname }) {
|
|
1899
|
+
const { hero, features, pricing, faq, cta } = content;
|
|
1900
|
+
return /* @__PURE__ */ jsxs28(Fragment4, { children: [
|
|
1901
|
+
/* @__PURE__ */ jsx35(GalNavigation, { logo: brandName }),
|
|
1902
|
+
/* @__PURE__ */ jsxs28("main", { children: [
|
|
1903
|
+
/* @__PURE__ */ jsx35(
|
|
1904
|
+
GalHero,
|
|
1905
|
+
{
|
|
1906
|
+
presenter: brandName,
|
|
1907
|
+
badgeText: hero.badgeText,
|
|
1908
|
+
heading: hero.heading,
|
|
1909
|
+
description: hero.description,
|
|
1910
|
+
ctaText: hero.ctaText,
|
|
1911
|
+
ctaHref: hero.ctaHref,
|
|
1912
|
+
secondaryCtaText: hero.secondaryCtaText,
|
|
1913
|
+
secondaryCtaHref: hero.secondaryCtaHref,
|
|
1914
|
+
marqueeTitle: hero.marqueeTitle,
|
|
1915
|
+
marqueeImages: hero.marqueeImages
|
|
1916
|
+
}
|
|
1917
|
+
),
|
|
1918
|
+
/* @__PURE__ */ jsx35(
|
|
1919
|
+
GalFeatures,
|
|
1920
|
+
{
|
|
1921
|
+
heading: features.heading,
|
|
1922
|
+
description: features.description,
|
|
1923
|
+
features: features.features
|
|
1924
|
+
}
|
|
1925
|
+
),
|
|
1926
|
+
pricing.variant === "single" ? /* @__PURE__ */ jsx35(
|
|
1927
|
+
GalPricing,
|
|
1928
|
+
{
|
|
1929
|
+
heading: pricing.heading,
|
|
1930
|
+
subheading: pricing.subheading,
|
|
1931
|
+
price: pricing.price,
|
|
1932
|
+
priceUnit: pricing.priceUnit,
|
|
1933
|
+
trialText: pricing.trialText,
|
|
1934
|
+
ctaText: pricing.ctaText,
|
|
1935
|
+
ctaHref: pricing.ctaHref,
|
|
1936
|
+
featuresHeading: pricing.featuresHeading,
|
|
1937
|
+
features: pricing.features,
|
|
1938
|
+
securityNote: pricing.securityNote
|
|
1939
|
+
}
|
|
1940
|
+
) : /* @__PURE__ */ jsx35(
|
|
1941
|
+
GalPricingTiers,
|
|
1942
|
+
{
|
|
1943
|
+
heading: pricing.heading,
|
|
1944
|
+
subheading: pricing.subheading,
|
|
1945
|
+
tiers: pricing.tiers,
|
|
1946
|
+
securityNote: pricing.securityNote
|
|
1947
|
+
}
|
|
1948
|
+
),
|
|
1949
|
+
/* @__PURE__ */ jsx35(GalFAQ, { heading: faq.heading, faqs: faq.faqs }),
|
|
1950
|
+
/* @__PURE__ */ jsx35(
|
|
1951
|
+
GalCTA,
|
|
1952
|
+
{
|
|
1953
|
+
heading: cta.heading,
|
|
1954
|
+
subheading: cta.subheading,
|
|
1955
|
+
buttons: cta.buttons,
|
|
1956
|
+
hostname
|
|
1957
|
+
}
|
|
1958
|
+
)
|
|
1959
|
+
] }),
|
|
1960
|
+
/* @__PURE__ */ jsx35(
|
|
1961
|
+
GalFooter,
|
|
1962
|
+
{
|
|
1963
|
+
logo: brandName,
|
|
1964
|
+
description: hero.description,
|
|
1965
|
+
copyrightText: `${hostname} \xA9 ${(/* @__PURE__ */ new Date()).getFullYear()}. All rights reserved.`
|
|
1966
|
+
}
|
|
1967
|
+
)
|
|
1968
|
+
] });
|
|
1969
|
+
}
|
|
1970
|
+
|
|
1971
|
+
// src/view/view.tsx
|
|
1972
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
1378
1973
|
function NamedAgentView({ content, theme, mode, brandName, hostname, template = "studio" }) {
|
|
1379
1974
|
return (
|
|
1380
1975
|
// texture={false}: DialectShell's NoiseTexture grain defaults on for the
|
|
1381
1976
|
// agent dialects, but the named baseline renders NO overlay — the fixed
|
|
1382
1977
|
// full-viewport speckle layer sits over every pixel and subtly shifts the
|
|
1383
1978
|
// whole palette off the baseline values.
|
|
1384
|
-
/* @__PURE__ */
|
|
1979
|
+
/* @__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
1980
|
);
|
|
1386
1981
|
}
|
|
1387
1982
|
var view_default = NamedAgentView;
|