@marktiderman/genesis-sites 0.0.0-stage → 0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/sections/shared.tsx","../src/sections/cta.tsx","../src/sections/faq.tsx","../src/sections/features.tsx","../src/sections/footer.tsx","../src/sections/form-header.tsx","../src/sections/light-form.tsx","../src/sections/form-embed.tsx","../src/sections/gallery.tsx","../src/sections/hero.tsx","../src/sections/logos.tsx","../src/sections/nav.tsx","../src/sections/pricing.tsx","../src/sections/rich-text.tsx","../src/sections/stats.tsx","../src/sections/testimonials.tsx","../src/sections/index.ts"],"names":["onAccent","z","inverted","jsx","jsxs","BandLead","schema","cn","Band","buttonVariants","Check","RichTextView","COLS"],"mappings":"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","file":"chunk-43XUAO63.js","sourcesContent":["/**\n * What every section is drawn with: headings at the level the page gives\n * them, links that are checked again when they render, images with alt text\n * and sizes, and the band that wraps a section. Server-safe: no state, no\n * effects. Classes are written out in full so the stylesheet build finds\n * them.\n */\nimport * as React from \"react\";\nimport { z } from \"zod\";\nimport { Band, BandLead, Display, type BandProps } from \"@marktiderman/genesis-ui/band\";\nimport { buttonVariants } from \"@marktiderman/genesis-ui/button\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport {\n Activity,\n Award,\n Calendar,\n Check,\n Clock,\n Dumbbell,\n Heart,\n Leaf,\n Mail,\n MapPin,\n MessageCircle,\n Phone,\n Shield,\n Smile,\n Sparkles,\n Star,\n Target,\n Trophy,\n Users,\n Zap,\n type LucideIcon,\n} from \"lucide-react\";\nimport type { RenderContext } from \"../core/registry\";\nimport type { Image, Link, SectionNode, Surface } from \"../core/schemas\";\nimport { isExternalHref, isSafeHref, isSafeImageSrc } from \"../core/urls\";\n\n// ── Props shared by section schemas ─────────────────────────────────────────\n\n/** An in-page anchor (`#contact`): lowercase letters, digits and hyphens. */\nexport const Anchor = z\n .string()\n .regex(/^[a-z][a-z0-9-]{0,39}$/, \"An anchor is lowercase letters, digits and hyphens.\")\n .optional()\n .meta({ title: \"Anchor (for #links)\" });\n\nexport const ICONS = {\n activity: Activity,\n award: Award,\n calendar: Calendar,\n check: Check,\n clock: Clock,\n dumbbell: Dumbbell,\n heart: Heart,\n leaf: Leaf,\n mail: Mail,\n \"map-pin\": MapPin,\n message: MessageCircle,\n phone: Phone,\n shield: Shield,\n smile: Smile,\n sparkles: Sparkles,\n star: Star,\n target: Target,\n trophy: Trophy,\n users: Users,\n zap: Zap,\n} satisfies Record<string, LucideIcon>;\nexport type IconName = keyof typeof ICONS;\nexport const IconName = z.enum(Object.keys(ICONS) as [IconName, ...IconName[]]).meta({ title: \"Icon\" });\n\n// ── Links ───────────────────────────────────────────────────────────────────\n\n/**\n * A stored link as it prints: checked again (a document that skipped the\n * schema can't smuggle `javascript:` in), with the host's base path on site\n * paths. An unsafe link renders as an inert `#` and is logged.\n */\nexport function resolveHref(href: string, ctx: RenderContext): string {\n if (!isSafeHref(href)) {\n console.error(`[genesis-sites] refused an unsafe link on ${ctx.pagePath}: ${JSON.stringify(String(href).slice(0, 80))}`);\n return \"#\";\n }\n return ctx.href(href);\n}\n\nfunction linkAttrs(link: Link, ctx: RenderContext) {\n const href = resolveHref(link.href, ctx);\n const external = isExternalHref(href);\n return {\n href,\n ...(external && link.newTab ? { target: \"_blank\", rel: \"noopener noreferrer\" } : external ? { rel: \"noopener\" } : {}),\n };\n}\n\nexport type ButtonTone = \"primary\" | \"secondary\" | \"outline\" | \"inverse\" | \"ghost\";\n\nconst TONE: Record<ButtonTone, string> = {\n primary: buttonVariants({ variant: \"default\", size: \"lg\" }),\n secondary: buttonVariants({ variant: \"secondary\", size: \"lg\" }),\n outline: buttonVariants({ variant: \"outline\", size: \"lg\" }),\n // On an accent or inverse band: the band's foreground as the button, its background as the text.\n inverse: cn(buttonVariants({ variant: \"default\", size: \"lg\" }), \"bg-background text-foreground hover:bg-background/90\"),\n ghost: buttonVariants({ variant: \"ghost\", size: \"lg\" }),\n};\n\n/** A link drawn as a button: at least 44px tall, with the focus ring. */\nexport function ButtonLink({ link, ctx, tone = \"primary\", className }: { link: Link; ctx: RenderContext; tone?: ButtonTone; className?: string }) {\n return (\n <a {...linkAttrs(link, ctx)} className={cn(TONE[tone], \"min-h-11\", className)} data-gs-event=\"cta\">\n {link.label}\n {link.newTab && isExternalHref(link.href) ? <span className=\"sr-only\"> (opens in a new tab)</span> : null}\n </a>\n );\n}\n\n/** A text link: underlined, at least 24px tall (WCAG 2.5.8). */\nexport function TextLink({ link, ctx, className }: { link: Link; ctx: RenderContext; className?: string }) {\n return (\n <a\n {...linkAttrs(link, ctx)}\n className={cn(\"inline-flex min-h-6 items-center rounded-sm underline-offset-4 hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\", className)}\n >\n {link.label}\n {link.newTab && isExternalHref(link.href) ? <span className=\"sr-only\"> (opens in a new tab)</span> : null}\n </a>\n );\n}\n\nexport function Actions({ primary, secondary, ctx, onAccent, className }: { primary?: Link; secondary?: Link; ctx: RenderContext; onAccent?: boolean; className?: string }) {\n if (!primary && !secondary) return null;\n return (\n <div className={cn(\"flex flex-col gap-3 sm:flex-row sm:flex-wrap\", className)}>\n {primary ? <ButtonLink link={primary} ctx={ctx} tone={onAccent ? \"inverse\" : \"primary\"} /> : null}\n {secondary ? <ButtonLink link={secondary} ctx={ctx} tone={onAccent ? \"ghost\" : \"outline\"} className={onAccent ? \"border border-current hover:bg-transparent hover:underline\" : undefined} /> : null}\n </div>\n );\n}\n\n// ── Images ──────────────────────────────────────────────────────────────────\n\nexport interface SiteImageProps {\n image: Image;\n className?: string;\n /** `sizes` for the browser's pick; the image is one source here (image CDN transforms are V1). */\n sizes?: string;\n /** The page's largest image (a hero): loaded eagerly, at high priority. */\n priority?: boolean;\n ctx: RenderContext;\n}\n\n/** An image with alt text (empty when decorative), its size to stop layout shift, and lazy loading below the fold. */\nexport function SiteImage({ image, className, sizes, priority, ctx }: SiteImageProps) {\n if (!isSafeImageSrc(image.src)) {\n console.error(`[genesis-sites] refused an unsafe image source on ${ctx.pagePath}.`);\n return null;\n }\n const src = image.src.startsWith(\"/\") ? ctx.href(image.src) : image.src;\n return (\n <img\n src={src}\n alt={image.decorative ? \"\" : image.alt}\n {...(image.width ? { width: image.width } : {})}\n {...(image.height ? { height: image.height } : {})}\n {...(sizes ? { sizes } : {})}\n loading={priority ? \"eager\" : \"lazy\"}\n decoding={priority ? \"sync\" : \"async\"}\n {...(priority ? { fetchPriority: \"high\" as const } : {})}\n style={image.focal ? { objectPosition: `${image.focal.x}% ${image.focal.y}%` } : undefined}\n className={className}\n />\n );\n}\n\n// ── Headings and bands ──────────────────────────────────────────────────────\n\n/** The section's title, at the level the page gives it (h1 for the page's main heading). */\nexport function SectionTitle({ ctx, id, size, className, children }: { ctx: RenderContext; id: string; size?: \"xl\" | \"lg\" | \"md\" | \"sm\"; className?: string; children: React.ReactNode }) {\n return (\n <Display as={ctx.headingLevel === 1 ? \"h1\" : \"h2\"} id={id} size={size ?? (ctx.headingLevel === 1 ? \"xl\" : \"lg\")} className={className}>\n {children}\n </Display>\n );\n}\n\n/** An item's title inside a section: one level below the section's. */\nexport function ItemTitle({ ctx, className, children }: { ctx: RenderContext; className?: string; children: React.ReactNode }) {\n const Tag = ctx.headingLevel === 1 ? \"h2\" : \"h3\";\n return <Tag className={cn(\"font-display text-lg font-semibold leading-snug\", className)}>{children}</Tag>;\n}\n\nexport const titleId = (ctx: RenderContext, part = \"title\") => `${ctx.idPrefix}-${part}`;\n\nconst HIDE_ON: Record<string, string> = { mobile: \"max-md:hidden\", desktop: \"md:hidden\" };\n\n/** Classes and attributes for a section's band: its anchor, `hideOn`, and the name from its title. */\nexport function bandAttrs(node: SectionNode, ctx: RenderContext, anchor: string | undefined, labelled = true): Partial<BandProps> & Record<string, unknown> {\n const hide = (node.hideOn ?? []).map((h) => HIDE_ON[h]).filter(Boolean).join(\" \");\n return {\n ...(anchor ? { id: anchor } : {}),\n ...(labelled ? { \"aria-labelledby\": titleId(ctx) } : {}),\n \"data-gs-section\": node.type,\n \"data-gs-variant\": node.variant,\n className: cn(anchor ? \"scroll-mt-20\" : undefined, hide || undefined),\n };\n}\n\n/** The band a body section sits on, named by its title. */\nexport function SectionBand({\n node,\n ctx,\n anchor,\n surface = \"base\",\n spacing = \"md\",\n width = \"lg\",\n labelled = true,\n className,\n children,\n}: {\n node: SectionNode;\n ctx: RenderContext;\n anchor?: string | undefined;\n surface?: Surface;\n spacing?: BandProps[\"spacing\"];\n width?: BandProps[\"width\"];\n labelled?: boolean;\n className?: string;\n children: React.ReactNode;\n}) {\n const attrs = bandAttrs(node, ctx, anchor, labelled);\n return (\n <Band {...attrs} as={labelled ? \"section\" : \"div\"} surface={surface} spacing={spacing} width={width} className={cn(attrs.className as string | undefined, className)}>\n {children}\n </Band>\n );\n}\n\n/** A section's heading block: an eyebrow, the title and a lead, centred or left. */\nexport function SectionIntro({\n ctx,\n eyebrow,\n heading,\n body,\n align = \"center\",\n tone = \"muted\",\n size,\n}: {\n ctx: RenderContext;\n eyebrow?: string | undefined;\n heading?: string | undefined;\n body?: string | undefined;\n align?: \"center\" | \"left\";\n tone?: \"muted\" | \"inherit\";\n size?: \"xl\" | \"lg\" | \"md\" | \"sm\";\n}) {\n if (!heading && !body) return null;\n return (\n <div className={cn(\"flex max-w-3xl flex-col gap-4\", align === \"center\" ? \"mx-auto items-center text-center\" : \"items-start text-left\")}>\n {eyebrow ? <p className=\"text-sm font-semibold uppercase tracking-wider\">{eyebrow}</p> : null}\n {heading ? (\n <SectionTitle ctx={ctx} id={titleId(ctx)} size={size}>\n {heading}\n </SectionTitle>\n ) : null}\n {body ? <BandLead tone={tone}>{body}</BandLead> : null}\n </div>\n );\n}\n\n/** A section with no visible title still needs a name: a visually hidden one. */\nexport function HiddenTitle({ ctx, children }: { ctx: RenderContext; children: React.ReactNode }) {\n const Tag = ctx.headingLevel === 1 ? \"h1\" : \"h2\";\n return (\n <Tag id={titleId(ctx)} className=\"sr-only\">\n {children}\n </Tag>\n );\n}\n\nexport const onAccent = (surface: Surface | undefined) => surface === \"accent\" || surface === \"inverse\";\n","import { z } from \"zod\";\nimport { BandLead } from \"@marktiderman/genesis-ui/band\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Line, Link, Surface } from \"../core/schemas\";\nimport { Actions, Anchor, SectionBand, SectionTitle, onAccent, titleId } from \"./shared\";\n\nconst schema = z.object({\n heading: Line(90),\n body: Copy(320).optional(),\n primaryCta: Link,\n secondaryCta: Link.optional(),\n surface: Surface.default(\"accent\"),\n anchor: Anchor,\n});\n\nexport const ctaSection = defineSection({\n type: \"cta\",\n version: 1,\n label: \"Call to action\",\n description: \"One clear next step: a heading, a line and a button.\",\n category: \"conversion\",\n schema,\n variants: [\n { id: \"banner\", label: \"Full-width banner\" },\n { id: \"card\", label: \"Card\" },\n { id: \"split\", label: \"Text left, buttons right\" },\n ],\n defaultVariant: \"banner\",\n presets: [\n { name: \"Banner\", variant: \"banner\", props: { heading: \"Ready to start?\", primaryCta: { label: \"Get started\", href: \"#contact\" }, surface: \"accent\" } },\n { name: \"Card\", variant: \"card\", props: { heading: \"Questions? We're here.\", primaryCta: { label: \"Contact us\", href: \"/contact\" }, surface: \"muted\" } },\n ],\n render: ({ props, variant, node, ctx }) => {\n if (variant === \"card\") {\n // The card carries the colour; the band stays the page's.\n const inverted = onAccent(props.surface);\n const card =\n props.surface === \"accent\" ? \"bg-primary text-primary-foreground\" : props.surface === \"inverse\" ? \"bg-foreground text-background\" : props.surface === \"muted\" ? \"bg-muted\" : \"border border-border\";\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} width=\"md\">\n <div className={`flex flex-col items-center gap-6 rounded-2xl px-6 py-12 text-center sm:px-12 ${card}`}>\n <SectionTitle ctx={ctx} id={titleId(ctx)} size=\"lg\">\n {props.heading}\n </SectionTitle>\n {props.body ? <BandLead tone={inverted ? \"inherit\" : \"muted\"}>{props.body}</BandLead> : null}\n <Actions primary={props.primaryCta} secondary={props.secondaryCta} ctx={ctx} onAccent={inverted} className=\"sm:justify-center\" />\n </div>\n </SectionBand>\n );\n }\n const inverted = onAccent(props.surface);\n if (variant === \"split\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n <div className=\"flex flex-col gap-8 md:flex-row md:items-center md:justify-between\">\n <div className=\"flex max-w-2xl flex-col gap-3\">\n <SectionTitle ctx={ctx} id={titleId(ctx)} size=\"lg\">\n {props.heading}\n </SectionTitle>\n {props.body ? <BandLead tone={inverted ? \"inherit\" : \"muted\"}>{props.body}</BandLead> : null}\n </div>\n <Actions primary={props.primaryCta} secondary={props.secondaryCta} ctx={ctx} onAccent={inverted} className=\"shrink-0\" />\n </div>\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n <div className=\"mx-auto flex max-w-3xl flex-col items-center gap-6 text-center\">\n <SectionTitle ctx={ctx} id={titleId(ctx)} size=\"lg\">\n {props.heading}\n </SectionTitle>\n {props.body ? <BandLead tone={inverted ? \"inherit\" : \"muted\"}>{props.body}</BandLead> : null}\n <Actions primary={props.primaryCta} secondary={props.secondaryCta} ctx={ctx} onAccent={inverted} className=\"sm:justify-center\" />\n </div>\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { ChevronDown } from \"lucide-react\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Line, Surface } from \"../core/schemas\";\nimport { Anchor, ItemTitle, SectionBand, SectionIntro, onAccent } from \"./shared\";\n\nconst schema = z.object({\n heading: Line(90),\n body: Copy(320).optional(),\n items: z\n .array(z.object({ question: Line(160), answer: Copy(1200).min(1) }))\n .min(1)\n .max(30),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\n\n/** Answers keep their line breaks as paragraphs. */\nfunction Answer({ text, muted }: { text: string; muted: boolean }) {\n return (\n <div className={muted ? \"flex flex-col gap-3 text-muted-foreground\" : \"flex flex-col gap-3\"}>\n {text.split(/\\n{2,}/).map((p, i) => (\n <p key={i} className=\"whitespace-pre-line\">\n {p}\n </p>\n ))}\n </div>\n );\n}\n\nexport const faqSection = defineSection({\n type: \"faq\",\n version: 1,\n label: \"FAQ\",\n description: \"Questions and answers. Works without script: each answer opens in place.\",\n category: \"content\",\n schema,\n variants: [\n { id: \"accordion\", label: \"Questions that open\" },\n { id: \"list\", label: \"All answers shown, two columns\" },\n ],\n defaultVariant: \"accordion\",\n presets: [\n {\n name: \"FAQ\",\n variant: \"accordion\",\n props: { heading: \"Questions\", items: [{ question: \"A question people ask?\", answer: \"A short, direct answer.\" }, { question: \"Another question?\", answer: \"Another answer.\" }] },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const intro = <SectionIntro ctx={ctx} heading={props.heading} body={props.body} tone={inverted ? \"inherit\" : \"muted\"} />;\n if (variant === \"list\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <div className=\"mt-12 grid gap-x-12 gap-y-10 md:grid-cols-2\">\n {props.items.map((item, i) => (\n <div key={i} className=\"flex flex-col gap-2\">\n <ItemTitle ctx={ctx}>{item.question}</ItemTitle>\n <Answer text={item.answer} muted={!inverted} />\n </div>\n ))}\n </div>\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} width=\"md\">\n {intro}\n <div className=\"mx-auto mt-10 flex max-w-3xl flex-col divide-y divide-border border-y border-border\">\n {props.items.map((item, i) => (\n <details key={i} className=\"group\">\n <summary className=\"flex min-h-11 cursor-pointer list-none items-center justify-between gap-4 rounded-sm py-4 text-left font-display text-lg font-semibold focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring [&::-webkit-details-marker]:hidden\">\n <span>{item.question}</span>\n <ChevronDown aria-hidden=\"true\" className=\"size-5 shrink-0 transition-transform group-open:rotate-180 motion-reduce:transition-none\" />\n </summary>\n <div className=\"pb-5\">\n <Answer text={item.answer} muted={!inverted} />\n </div>\n </details>\n ))}\n </div>\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Image, Line, Link, Surface } from \"../core/schemas\";\nimport { Anchor, ICONS, IconName, ItemTitle, SectionBand, SectionIntro, SiteImage, TextLink, onAccent } from \"./shared\";\n\nconst Item = z.object({\n title: Line(60),\n body: Copy(320),\n icon: IconName.optional(),\n image: Image.optional(),\n link: Link.optional(),\n});\n\nconst schema = z.object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n items: z.array(Item).min(1).max(12),\n columns: z.union([z.literal(2), z.literal(3), z.literal(4)]).default(3),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\n\nconst COLUMNS = { 2: \"sm:grid-cols-2\", 3: \"sm:grid-cols-2 lg:grid-cols-3\", 4: \"sm:grid-cols-2 lg:grid-cols-4\" } as const;\n\nexport const featuresSection = defineSection({\n type: \"features\",\n version: 1,\n label: \"Features\",\n description: \"What you offer: a few items, each with a title, a line of copy and an icon or image.\",\n category: \"content\",\n schema,\n variants: [\n { id: \"grid\", label: \"Cards in a grid\" },\n { id: \"list\", label: \"Icon list\" },\n { id: \"alternating\", label: \"Image and text, alternating\" },\n ],\n defaultVariant: \"grid\",\n presets: [\n {\n name: \"Three features\",\n variant: \"grid\",\n props: {\n heading: \"What you get\",\n items: [\n { title: \"First thing\", body: \"Why it matters.\", icon: \"check\" },\n { title: \"Second thing\", body: \"Why it matters.\", icon: \"star\" },\n { title: \"Third thing\", body: \"Why it matters.\", icon: \"heart\" },\n ],\n },\n },\n {\n name: \"Feature list\",\n variant: \"list\",\n props: { heading: \"Why people choose us\", columns: 2, items: [{ title: \"A reason\", body: \"In a sentence.\", icon: \"check\" }, { title: \"Another reason\", body: \"In a sentence.\", icon: \"check\" }] },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const intro = <SectionIntro ctx={ctx} eyebrow={props.eyebrow} heading={props.heading} body={props.body} tone={inverted ? \"inherit\" : \"muted\"} />;\n const Icon = (name?: keyof typeof ICONS) => {\n if (!name) return null;\n const Glyph = ICONS[name];\n return (\n <span aria-hidden=\"true\" className={cn(\"inline-flex size-11 shrink-0 items-center justify-center rounded-lg\", inverted ? \"bg-background text-foreground\" : \"bg-primary text-primary-foreground\")}>\n <Glyph className=\"size-5\" />\n </span>\n );\n };\n\n if (variant === \"alternating\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <ul className=\"mt-12 flex flex-col gap-12 md:gap-16\">\n {props.items.map((item, i) => (\n <li key={i} className=\"grid items-center gap-8 md:grid-cols-2 md:gap-12\">\n <div className={cn(\"flex flex-col gap-3\", i % 2 === 1 && \"md:order-2\")}>\n {Icon(item.icon)}\n <ItemTitle ctx={ctx} className=\"text-2xl\">\n {item.title}\n </ItemTitle>\n <p className={inverted ? undefined : \"text-muted-foreground\"}>{item.body}</p>\n {item.link ? <TextLink link={item.link} ctx={ctx} className=\"font-medium underline\" /> : null}\n </div>\n {item.image ? (\n <SiteImage image={item.image} ctx={ctx} sizes=\"(min-width: 768px) 50vw, 100vw\" className=\"aspect-[4/3] w-full rounded-xl object-cover\" />\n ) : (\n <div aria-hidden=\"true\" className=\"hidden aspect-[4/3] w-full rounded-xl bg-muted md:block\" />\n )}\n </li>\n ))}\n </ul>\n </SectionBand>\n );\n }\n if (variant === \"list\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <ul className={cn(\"mt-12 grid gap-x-10 gap-y-8\", props.columns >= 2 && \"sm:grid-cols-2\", props.columns >= 3 && \"lg:grid-cols-3\")}>\n {props.items.map((item, i) => (\n <li key={i} className=\"flex gap-4\">\n {Icon(item.icon ?? \"check\")}\n <div className=\"flex flex-col gap-1\">\n <ItemTitle ctx={ctx}>{item.title}</ItemTitle>\n <p className={inverted ? undefined : \"text-muted-foreground\"}>{item.body}</p>\n {item.link ? <TextLink link={item.link} ctx={ctx} className=\"font-medium underline\" /> : null}\n </div>\n </li>\n ))}\n </ul>\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <ul className={cn(\"mt-12 grid gap-6\", COLUMNS[props.columns])}>\n {props.items.map((item, i) => (\n <li key={i} className=\"flex flex-col gap-3 rounded-xl border border-border bg-background p-6 text-foreground\">\n {item.image ? <SiteImage image={item.image} ctx={ctx} sizes=\"(min-width: 1024px) 33vw, (min-width: 640px) 50vw, 100vw\" className=\"aspect-video w-full rounded-lg object-cover\" /> : Icon(item.icon)}\n <ItemTitle ctx={ctx}>{item.title}</ItemTitle>\n <p className=\"text-muted-foreground\">{item.body}</p>\n {item.link ? <TextLink link={item.link} ctx={ctx} className=\"mt-auto font-medium underline\" /> : null}\n </li>\n ))}\n </ul>\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { Band } from \"@marktiderman/genesis-ui/band\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Line, Link, Surface } from \"../core/schemas\";\nimport { TextLink, bandAttrs } from \"./shared\";\n\nconst schema = z.object({\n tagline: Copy(200).optional(),\n columns: z\n .array(z.object({ heading: Line(40), links: z.array(Link).min(1).max(8) }))\n .max(4)\n .default([]),\n links: z.array(Link).max(12).default([]),\n copyright: Line(120).optional(),\n surface: Surface.default(\"inverse\"),\n});\n\nexport const footerSection = defineSection({\n type: \"footer\",\n version: 1,\n label: \"Footer\",\n description: \"The site's footer: links, a line about you and the copyright.\",\n category: \"footer\",\n placement: \"footer\",\n limit: 1,\n schema,\n variants: [\n { id: \"simple\", label: \"Links in a row\" },\n { id: \"columns\", label: \"Link columns\" },\n { id: \"minimal\", label: \"One line\" },\n ],\n defaultVariant: \"simple\",\n presets: [\n { name: \"Footer\", variant: \"simple\", props: { links: [{ label: \"Contact\", href: \"/contact\" }], copyright: \"© Your business\" } },\n { name: \"Footer with columns\", variant: \"columns\", props: { columns: [{ heading: \"Visit\", links: [{ label: \"Contact\", href: \"/contact\" }] }], copyright: \"© Your business\" } },\n ],\n render: ({ props, variant, node, ctx }) => {\n const attrs = bandAttrs(node, ctx, undefined, false);\n const quiet = props.surface === \"base\" || props.surface === \"muted\" ? \"text-muted-foreground\" : undefined;\n const name = <p className=\"font-display text-lg font-bold\">{ctx.site.name}</p>;\n const copyright = props.copyright ? <p className={cn(\"text-sm\", quiet)}>{props.copyright}</p> : null;\n const row = (links: z.output<typeof schema>[\"links\"]) =>\n links.length ? (\n <nav aria-label=\"Footer\">\n <ul className=\"flex flex-wrap gap-x-6 gap-y-2\">\n {links.map((link, i) => (\n <li key={i}>\n <TextLink link={link} ctx={ctx} className=\"text-sm underline\" />\n </li>\n ))}\n </ul>\n </nav>\n ) : null;\n\n if (variant === \"minimal\") {\n return (\n <Band {...attrs} as=\"footer\" surface={props.surface} spacing=\"sm\">\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-center sm:justify-between\">\n {copyright ?? name}\n {row(props.links)}\n </div>\n </Band>\n );\n }\n if (variant === \"columns\") {\n return (\n <Band {...attrs} as=\"footer\" surface={props.surface} spacing=\"md\">\n <div className=\"grid gap-10 md:grid-cols-[2fr_repeat(3,1fr)]\">\n <div className=\"flex flex-col gap-3\">\n {name}\n {props.tagline ? <p className={cn(\"max-w-sm\", quiet)}>{props.tagline}</p> : null}\n </div>\n {props.columns.map((col, i) => (\n <nav key={i} aria-label={col.heading} className=\"flex flex-col gap-3\">\n <p className=\"text-sm font-semibold uppercase tracking-wider\">{col.heading}</p>\n <ul className=\"flex flex-col gap-1\">\n {col.links.map((link, j) => (\n <li key={j}>\n <TextLink link={link} ctx={ctx} className=\"text-sm underline\" />\n </li>\n ))}\n </ul>\n </nav>\n ))}\n </div>\n <div className=\"mt-10 flex flex-col gap-4 border-t border-current/20 pt-6 sm:flex-row sm:items-center sm:justify-between\">\n {copyright}\n {row(props.links)}\n </div>\n </Band>\n );\n }\n return (\n <Band {...attrs} as=\"footer\" surface={props.surface} spacing=\"sm\">\n <div className=\"flex flex-col gap-6 md:flex-row md:items-start md:justify-between\">\n <div className=\"flex flex-col gap-2\">\n {name}\n {props.tagline ? <p className={cn(\"max-w-md\", quiet)}>{props.tagline}</p> : null}\n </div>\n {row(props.links)}\n </div>\n {copyright ? <div className=\"mt-6\">{copyright}</div> : null}\n </Band>\n );\n },\n});\n","/**\n * The embedded form's header. forms-web's own header opens with an `h1`\n * (right for a form that is the whole page); on a site page the section's\n * title is the heading, so the form's title is an `h3` under it. The server\n * render and the form island both use this, so the island hydrates the same\n * markup.\n */\nimport type { HeaderSlotProps } from \"@marktiderman/genesis-forms-web\";\n\nexport function SiteFormHeader({ title, description, requiredNote }: HeaderSlotProps) {\n return (\n <header className=\"flex flex-col gap-1\">\n <h3 className=\"text-lg font-semibold\">{title}</h3>\n {description ? <p className=\"text-muted-foreground\">{description}</p> : null}\n {requiredNote ? (\n <p className=\"text-sm text-muted-foreground\">\n <span aria-hidden=\"true\">* </span>\n {requiredNote}\n </p>\n ) : null}\n </header>\n );\n}\n\nexport const siteFormSlots = { header: SiteFormHeader };\n","/**\n * The light form: a genesis-forms definition drawn as a plain HTML `<form>`,\n * for the forms a site page usually carries (a contact or sign-up form). The\n * islands loader sends it as JSON (`{ form, answers }`, answers keyed by\n * field id, as the engine's `answers()` gives them), so the page loads no\n * React and no form bundle. The browser checks required fields, emails,\n * numbers and dates; the host's endpoint checks the answers again\n * (`validateSubmission`), as it must for any form.\n *\n * A form that needs the engine (logic, pages, recall, hidden inputs, host\n * option lists, \"Other\" options, focus layout, saved progress, anonymous\n * mode, or a field type this file doesn't draw) gets forms-web's `<Form>`\n * and the form island instead: see `isLightForm`.\n */\nimport type { Block, FieldBlock, FormDefinition } from \"@marktiderman/genesis-forms\";\nimport { choiceOptions } from \"@marktiderman/genesis-forms\";\nimport { buttonVariants } from \"@marktiderman/genesis-ui/button\";\nimport { Input } from \"@marktiderman/genesis-ui/input\";\nimport { Textarea } from \"@marktiderman/genesis-ui/textarea\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\n\n/** The field types the light form draws, and how the islands loader reads each one's answer. */\nconst KINDS = {\n \"short-text\": \"text\",\n \"long-text\": \"text\",\n email: \"text\",\n phone: \"text\",\n date: \"text\",\n number: \"number\",\n \"single-choice\": \"single\",\n dropdown: \"single\",\n \"multi-choice\": \"multi\",\n \"yes-no\": \"yes-no\",\n consent: \"consent\",\n} as const;\ntype LightType = keyof typeof KINDS;\n\nconst hasRecall = (text: unknown) => typeof text === \"string\" && text.includes(\"{{\");\n\nfunction lightField(block: Block): boolean {\n if (block.kind === \"page-break\") return false;\n if (block.kind === \"content\") return (block.type === \"heading\" || block.type === \"text\") && !hasRecall(block.text);\n if (!(block.type in KINDS)) return false;\n if (hasRecall(block.label) || hasRecall(block.description) || hasRecall(block.placeholder)) return false;\n const props = block.props ?? {};\n if (props.optionsFrom !== undefined || props.other !== undefined) return false;\n return true;\n}\n\n/** Can this form be drawn as a plain HTML form (no engine on the page)? */\nexport function isLightForm(form: FormDefinition): boolean {\n if (form.layout?.mode === \"focus\") return false;\n if (form.logic?.length || form.hidden?.length) return false;\n if (form.settings?.anonymous || form.settings?.saveProgress) return false;\n return form.blocks.length > 0 && form.blocks.every(lightField);\n}\n\nconst control = \"text-base\";\nconst choiceInput = \"size-5 shrink-0 accent-[hsl(var(--primary))]\";\nconst choiceRow = \"flex min-h-11 items-center gap-3 rounded-md px-1\";\n\nfunction str(value: unknown): string | undefined {\n return typeof value === \"string\" && value ? value : typeof value === \"number\" ? String(value) : undefined;\n}\n\nfunction FieldControl({ field, id, describedBy }: { field: FieldBlock; id: string; describedBy?: string }) {\n const type = field.type as LightType;\n const props = field.props ?? {};\n const common = {\n id,\n name: field.id,\n required: field.required === true,\n ...(field.placeholder ? { placeholder: field.placeholder } : {}),\n ...(describedBy ? { \"aria-describedby\": describedBy } : {}),\n };\n switch (type) {\n case \"short-text\":\n return <Input {...common} type=\"text\" maxLength={500} className={control} />;\n case \"long-text\":\n return <Textarea {...common} maxLength={5000} rows={4} className={control} />;\n case \"email\":\n return <Input {...common} type=\"email\" autoComplete=\"email\" inputMode=\"email\" maxLength={320} className={control} />;\n case \"phone\":\n return <Input {...common} type=\"tel\" autoComplete=\"tel\" inputMode=\"tel\" maxLength={40} className={control} />;\n case \"date\":\n return <Input {...common} type=\"date\" {...(str(props.min) ? { min: str(props.min) } : {})} {...(str(props.max) ? { max: str(props.max) } : {})} className={control} />;\n case \"number\":\n return (\n <Input\n {...common}\n type=\"number\"\n inputMode=\"decimal\"\n {...(str(props.min) ? { min: str(props.min) } : {})}\n {...(str(props.max) ? { max: str(props.max) } : {})}\n step={str(props.step) ?? \"any\"}\n className={control}\n />\n );\n case \"dropdown\":\n return (\n <select\n {...common}\n defaultValue=\"\"\n className=\"flex h-11 w-full rounded-md border border-input bg-background px-3 text-base focus-visible:outline-2 focus-visible:outline-ring\"\n >\n <option value=\"\" disabled={field.required === true}>\n {field.placeholder || \"Choose one\"}\n </option>\n {choiceOptions(field).map((o) => (\n <option key={o.value} value={o.value}>\n {o.label}\n </option>\n ))}\n </select>\n );\n default:\n return null;\n }\n}\n\n/** A question drawn as a group of radios or checkboxes (a `fieldset`, its label the `legend`). */\nfunction ChoiceGroup({ field, id, describedBy }: { field: FieldBlock; id: string; describedBy?: string }) {\n const type = field.type as LightType;\n const required = field.required === true;\n const options =\n type === \"yes-no\"\n ? [\n { value: \"yes\", label: \"Yes\" },\n { value: \"no\", label: \"No\" },\n ]\n : choiceOptions(field).map((o) => ({ value: o.value, label: o.label }));\n const multi = type === \"multi-choice\";\n return (\n <fieldset className=\"flex flex-col gap-1\" {...(describedBy ? { \"aria-describedby\": describedBy } : {})} data-gs-field={field.id} data-gs-kind={KINDS[type]} {...(required ? { \"data-gs-required\": \"\" } : {})}>\n <legend className=\"mb-1 font-medium\">\n {field.label}\n {required ? <RequiredMark /> : null}\n </legend>\n {field.description ? (\n <p id={`${id}-desc`} className=\"mb-1 text-sm text-muted-foreground\">\n {field.description}\n </p>\n ) : null}\n {options.map((o, i) => (\n <label key={o.value} className={choiceRow}>\n <input\n type={multi ? \"checkbox\" : \"radio\"}\n name={field.id}\n value={o.value}\n className={choiceInput}\n // Radios carry `required` natively; \"at least one checkbox\" is checked by the island.\n {...(required && !multi && i === 0 ? { required: true } : {})}\n />\n <span>{o.label}</span>\n </label>\n ))}\n </fieldset>\n );\n}\n\nfunction RequiredMark() {\n return (\n <>\n <span aria-hidden=\"true\" className=\"text-muted-foreground\">\n {\" \"}\n *\n </span>\n <span className=\"sr-only\"> (required)</span>\n </>\n );\n}\n\nfunction FieldRow({ field, idPrefix }: { field: FieldBlock; idPrefix: string }) {\n const id = `${idPrefix}-${field.id}`;\n const type = field.type as LightType;\n const describedBy = field.description ? `${id}-desc` : undefined;\n if (type === \"single-choice\" || type === \"multi-choice\" || type === \"yes-no\") return <ChoiceGroup field={field} id={id} {...(describedBy ? { describedBy } : {})} />;\n if (type === \"consent\") {\n const text = str(field.props?.text) ?? field.label;\n return (\n <div className=\"flex flex-col gap-1\" data-gs-field={field.id} data-gs-kind=\"consent\">\n <label className={cn(choiceRow, \"items-start py-1\")}>\n <input id={id} type=\"checkbox\" name={field.id} value=\"true\" required={field.required === true} className={cn(choiceInput, \"mt-0.5\")} {...(describedBy ? { \"aria-describedby\": describedBy } : {})} />\n <span>\n {text}\n {field.required ? <RequiredMark /> : null}\n </span>\n </label>\n {field.description ? (\n <p id={`${id}-desc`} className=\"text-sm text-muted-foreground\">\n {field.description}\n </p>\n ) : null}\n </div>\n );\n }\n return (\n <div className=\"flex flex-col gap-2\" data-gs-field={field.id} data-gs-kind={KINDS[type]}>\n <label htmlFor={id} className=\"font-medium\">\n {field.label}\n {field.required ? <RequiredMark /> : null}\n </label>\n {field.description ? (\n <p id={`${id}-desc`} className=\"-mt-1 text-sm text-muted-foreground\">\n {field.description}\n </p>\n ) : null}\n <FieldControl field={field} id={id} {...(describedBy ? { describedBy } : {})} />\n </div>\n );\n}\n\nexport interface LightFormProps {\n form: FormDefinition;\n slug: string;\n /** Where the answers go: the host's endpoint (a site path, already prefixed, or an https URL). */\n submitUrl: string;\n submitLabel?: string;\n /** Makes ids unique on the page. */\n idPrefix: string;\n}\n\n/**\n * A genesis-forms definition as a plain HTML form. Server-rendered; the\n * islands loader sends it. Without script the browser posts the fields to\n * `submitUrl` as an ordinary form, so an endpoint that also reads\n * `application/x-www-form-urlencoded` works with JavaScript off.\n */\nexport function LightForm({ form, slug, submitUrl, submitLabel, idPrefix }: LightFormProps) {\n const ending = form.endings?.[0];\n // Field ids are the form's; this suffix keeps the status's id apart from any of them.\n const statusId = `${idPrefix}--gs-status`;\n return (\n <form\n method=\"post\"\n action={submitUrl}\n data-gs-island=\"light-form\"\n data-gs-form={slug}\n data-gs-sent={ending ? `${ending.title}${ending.description ? ` ${ending.description}` : \"\"}` : \"Thanks. We got it.\"}\n className=\"flex flex-col gap-5 text-left\"\n >\n <input type=\"hidden\" name=\"form\" value={slug} />\n <div className=\"flex flex-col gap-1\">\n <h3 className=\"text-lg font-semibold\">{form.title}</h3>\n {form.description ? <p className=\"text-muted-foreground\">{form.description}</p> : null}\n {form.blocks.some((b) => b.kind === \"field\" && b.required) ? (\n <p className=\"text-sm text-muted-foreground\">\n <span aria-hidden=\"true\">* </span>Required\n </p>\n ) : null}\n </div>\n {form.blocks.map((block) => {\n if (block.kind === \"content\") {\n return block.type === \"heading\" ? (\n <h4 key={block.id} className=\"font-semibold\">\n {block.text}\n </h4>\n ) : (\n <p key={block.id} className=\"text-muted-foreground\">\n {block.text}\n </p>\n );\n }\n if (block.kind === \"field\") return <FieldRow key={block.id} field={block} idPrefix={idPrefix} />;\n return null;\n })}\n <p id={statusId} role=\"status\" aria-live=\"polite\" data-gs-status=\"\" className=\"min-h-6 text-sm font-medium\" />\n <button type=\"submit\" className={cn(buttonVariants({ size: \"lg\" }), \"min-h-11 self-start px-8\")}>\n {submitLabel || \"Send\"}\n </button>\n </form>\n );\n}\n","import { z } from \"zod\";\nimport { BandLead } from \"@marktiderman/genesis-ui/band\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { parseForm } from \"@marktiderman/genesis-forms\";\nimport { Form } from \"@marktiderman/genesis-forms-web\";\nimport type { ResolvedForm } from \"../core/forms\";\nimport { defineSection, type RenderContext } from \"../core/registry\";\nimport { Copy, Line, Surface } from \"../core/schemas\";\nimport { safeJsonForHtml } from \"../core/seo\";\nimport { isSafeHref } from \"../core/urls\";\nimport { siteFormSlots } from \"./form-header\";\nimport { LightForm, isLightForm } from \"./light-form\";\nimport { Anchor, SectionBand, SectionTitle, onAccent, titleId } from \"./shared\";\n\nconst schema = z.object({\n heading: Line(90),\n body: Copy(400).optional(),\n /** The form's slug, which the host's forms resolver knows. */\n form: z.string().regex(/^[a-z0-9][a-z0-9-]{0,79}$/, \"A form slug is lowercase letters, digits and hyphens.\"),\n surface: Surface.default(\"base\"),\n anchor: Anchor.default(\"contact\"),\n});\n\n/**\n * How a resolved form draws: `light` (a plain HTML form the islands loader\n * sends), `island` (forms-web's `<Form>`, made live by the form bundle),\n * `embed` (an iframe), or null (it can't be shown).\n */\nexport function formDrawMode(resolved: ResolvedForm | null | undefined): \"light\" | \"island\" | \"embed\" | null {\n if (!resolved) return null;\n if (resolved.kind === \"embed\") return \"embed\";\n const parsed = parseForm(resolved.definition);\n if (!parsed.ok) return null;\n return isLightForm(parsed.form) ? \"light\" : \"island\";\n}\n\n/** The form itself, from the host's resolver: server-rendered with an island, or an iframe. */\nfunction EmbeddedForm({ slug, heading, ctx }: { slug: string; heading: string; ctx: RenderContext }) {\n const resolved = ctx.forms.get(slug);\n if (!resolved) {\n console.error(`[genesis-sites] the form \"${slug}\" on ${ctx.pagePath} is unknown to the host's forms resolver; the form embed renders nothing.`);\n return ctx.mode === \"preview\" ? (\n <p role=\"status\" className=\"rounded-lg border border-dashed border-border p-6 text-center\">\n The form “{slug}” isn't available. Check its slug, or that the app passes a forms resolver.\n </p>\n ) : null;\n }\n if (resolved.kind === \"embed\") {\n if (!isSafeHref(resolved.url) || !resolved.url.startsWith(\"https://\")) {\n console.error(`[genesis-sites] refused the form embed URL for \"${slug}\": it must be https.`);\n return null;\n }\n return (\n <iframe\n src={resolved.url}\n title={resolved.title || heading}\n loading=\"lazy\"\n referrerPolicy=\"strict-origin-when-cross-origin\"\n sandbox=\"allow-forms allow-scripts allow-same-origin allow-popups\"\n style={{ height: `${Math.min(Math.max(resolved.height ?? 640, 200), 4000)}px` }}\n className=\"w-full rounded-xl border border-border bg-background\"\n />\n );\n }\n const parsed = parseForm(resolved.definition);\n if (!parsed.ok) {\n console.error(`[genesis-sites] the form \"${slug}\" isn't a valid genesis-forms definition: ${parsed.issues.map((i) => `${i.path} ${i.message}`).join(\"; \")}`);\n return null;\n }\n if (!isSafeHref(resolved.submitUrl) || !(resolved.submitUrl.startsWith(\"/\") || resolved.submitUrl.startsWith(\"https://\"))) {\n console.error(`[genesis-sites] the form \"${slug}\" has no usable submitUrl (a site path or an https URL).`);\n return null;\n }\n const submitUrl = resolved.submitUrl.startsWith(\"/\") ? ctx.href(resolved.submitUrl) : resolved.submitUrl;\n if (isLightForm(parsed.form)) {\n // The usual case: a plain HTML form the islands loader sends. No React on the page.\n return (\n <div className=\"rounded-xl border border-border bg-background p-4 text-foreground sm:p-6\">\n <LightForm form={parsed.form} slug={slug} submitUrl={submitUrl} idPrefix={ctx.idPrefix} {...(resolved.submitLabel ? { submitLabel: resolved.submitLabel } : {})} />\n </div>\n );\n }\n return (\n // The island: the islands script loads the form bundle only on pages that have one,\n // reads the definition from the JSON beside it and makes the server-rendered form live.\n <div\n data-gs-island=\"form\"\n data-gs-form={slug}\n data-gs-submit={submitUrl}\n {...(resolved.layout ? { \"data-gs-layout\": resolved.layout } : {})}\n {...(resolved.submitLabel ? { \"data-gs-submit-label\": resolved.submitLabel } : {})}\n className=\"rounded-xl border border-border bg-background p-4 text-foreground sm:p-6\"\n >\n <div data-gs-form-root=\"\">\n <Form form={parsed.form} layout={resolved.layout ?? \"classic\"} presentation=\"embedded\" slots={siteFormSlots} {...(resolved.submitLabel ? { submitLabel: resolved.submitLabel } : {})} />\n </div>\n <script type=\"application/json\" data-gs-form-definition=\"\" dangerouslySetInnerHTML={{ __html: safeJsonForHtml(parsed.form) }} />\n <noscript>\n <p className=\"mt-4 text-sm\">This form needs JavaScript. Turn it on to send it.</p>\n </noscript>\n </div>\n );\n}\n\nexport const formEmbedSection = defineSection({\n type: \"form-embed\",\n version: 1,\n label: \"Form\",\n description: \"A genesis-forms form (by slug, through the app's forms resolver) or a hosted form in a frame.\",\n category: \"conversion\",\n schema,\n variants: [\n { id: \"card\", label: \"Form in a card\" },\n { id: \"split\", label: \"Copy left, form right\" },\n ],\n defaultVariant: \"card\",\n presets: [\n { name: \"Contact form\", variant: \"split\", props: { heading: \"Get in touch\", body: \"Tell us a little about yourself.\", form: \"contact\", anchor: \"contact\" } },\n { name: \"Form card\", variant: \"card\", props: { heading: \"Book a free session\", form: \"contact\", anchor: \"contact\" } },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const copy = (\n <div className={cn(\"flex flex-col gap-4\", variant === \"card\" && \"items-center text-center\")}>\n <SectionTitle ctx={ctx} id={titleId(ctx)} size=\"lg\">\n {props.heading}\n </SectionTitle>\n {props.body ? <BandLead tone={inverted ? \"inherit\" : \"muted\"}>{props.body}</BandLead> : null}\n </div>\n );\n if (variant === \"split\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n <div className=\"grid gap-10 md:grid-cols-2 md:gap-12\">\n {copy}\n <EmbeddedForm slug={props.form} heading={props.heading} ctx={ctx} />\n </div>\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} width=\"sm\">\n {copy}\n <div className=\"mt-8\">\n <EmbeddedForm slug={props.form} heading={props.heading} ctx={ctx} />\n </div>\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Image, Line, Surface } from \"../core/schemas\";\nimport { Anchor, HiddenTitle, SectionBand, SectionIntro, SiteImage, onAccent } from \"./shared\";\n\nconst schema = z.object({\n heading: Line(90).optional(),\n body: Copy(320).optional(),\n images: z.array(Image.extend({ caption: Line(140).optional() })).min(1).max(24),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\n\nexport const gallerySection = defineSection({\n type: \"gallery\",\n version: 1,\n label: \"Gallery\",\n description: \"Photos in an even grid or a masonry layout, each with alt text.\",\n category: \"content\",\n schema,\n variants: [\n { id: \"grid\", label: \"Even grid\" },\n { id: \"masonry\", label: \"Masonry\" },\n ],\n defaultVariant: \"grid\",\n presets: [\n {\n name: \"Photo grid\",\n variant: \"grid\",\n props: { heading: \"Inside\", images: [{ src: \"/photo-1.jpg\", alt: \"Describe the photo\" }, { src: \"/photo-2.jpg\", alt: \"Describe the photo\" }, { src: \"/photo-3.jpg\", alt: \"Describe the photo\" }] },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const intro = props.heading ? <SectionIntro ctx={ctx} heading={props.heading} body={props.body} tone={onAccent(props.surface) ? \"inherit\" : \"muted\"} /> : <HiddenTitle ctx={ctx}>Gallery</HiddenTitle>;\n const masonry = variant === \"masonry\";\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <ul className={masonry ? \"mt-10 columns-1 gap-4 sm:columns-2 lg:columns-3 [&>li]:mb-4 [&>li]:break-inside-avoid\" : \"mt-10 grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\"}>\n {props.images.map((image, i) => (\n <li key={i}>\n <figure className=\"flex flex-col gap-2\">\n <SiteImage\n image={image}\n ctx={ctx}\n sizes=\"(min-width: 1024px) 33vw, (min-width: 640px) 50vw, 100vw\"\n className={masonry ? \"w-full rounded-lg\" : \"aspect-square w-full rounded-lg object-cover\"}\n />\n {image.caption ? <figcaption className=\"text-sm\">{image.caption}</figcaption> : null}\n </figure>\n </li>\n ))}\n </ul>\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { BandLead } from \"@marktiderman/genesis-ui/band\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Image, Line, Link } from \"../core/schemas\";\nimport { Actions, Anchor, SectionBand, SectionTitle, SiteImage, titleId } from \"./shared\";\n\nconst schema = z.object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n primaryCta: Link.optional(),\n secondaryCta: Link.optional(),\n image: Image.optional(),\n anchor: Anchor,\n});\n\nexport const heroSection = defineSection({\n type: \"hero\",\n version: 1,\n label: \"Hero\",\n description: \"The page's opening: its main heading, a line of copy and up to two buttons.\",\n category: \"intro\",\n limit: 1,\n providesH1: true,\n schema,\n variants: [\n { id: \"centered\", label: \"Centred\" },\n { id: \"split\", label: \"Text and image side by side\" },\n { id: \"image-bg\", label: \"Text over an image\" },\n ],\n defaultVariant: \"centered\",\n presets: [\n {\n name: \"Centred hero\",\n variant: \"centered\",\n props: { heading: \"Say what you do, for whom\", body: \"One or two sentences on why it matters.\", primaryCta: { label: \"Get started\", href: \"#contact\" } },\n },\n {\n name: \"Hero with image\",\n variant: \"split\",\n props: { heading: \"Say what you do, for whom\", body: \"One or two sentences on why it matters.\", primaryCta: { label: \"Get started\", href: \"#contact\" } },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const intro = (align: \"center\" | \"left\", tone: \"muted\" | \"inherit\" = \"muted\") => (\n <div className={align === \"center\" ? \"mx-auto flex max-w-3xl flex-col items-center gap-6 text-center\" : \"flex flex-col items-start gap-6\"}>\n {props.eyebrow ? <p className=\"text-sm font-semibold uppercase tracking-wider\">{props.eyebrow}</p> : null}\n <SectionTitle ctx={ctx} id={titleId(ctx)} size=\"xl\">\n {props.heading}\n </SectionTitle>\n {props.body ? <BandLead tone={tone}>{props.body}</BandLead> : null}\n <Actions primary={props.primaryCta} secondary={props.secondaryCta} ctx={ctx} onAccent={tone === \"inherit\"} className={align === \"center\" ? \"sm:justify-center\" : undefined} />\n </div>\n );\n\n if (variant === \"image-bg\" && props.image) {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface=\"inverse\" spacing=\"lg\" className=\"isolate overflow-hidden\">\n <SiteImage image={{ ...props.image, decorative: true }} ctx={ctx} priority sizes=\"100vw\" className=\"absolute inset-0 -z-10 h-full w-full object-cover\" />\n {/* A scrim in the inverse band's own colour keeps the text at the band's contrast whatever the image. */}\n <div aria-hidden=\"true\" className=\"absolute inset-0 -z-10 bg-foreground/80\" />\n {intro(\"center\", \"inherit\")}\n </SectionBand>\n );\n }\n if (variant === \"split\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} spacing=\"lg\">\n <div className=\"grid items-center gap-10 md:grid-cols-2 md:gap-12\">\n {intro(\"left\")}\n {props.image ? (\n <SiteImage image={props.image} ctx={ctx} priority sizes=\"(min-width: 768px) 50vw, 100vw\" className=\"aspect-[4/3] w-full rounded-xl object-cover\" />\n ) : (\n <div aria-hidden=\"true\" className=\"hidden aspect-[4/3] w-full rounded-xl bg-muted md:block\" />\n )}\n </div>\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} spacing=\"lg\">\n {intro(\"center\")}\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection } from \"../core/registry\";\nimport { Href, Image, Line, Surface } from \"../core/schemas\";\nimport { Anchor, HiddenTitle, SectionBand, SectionIntro, SiteImage, onAccent, resolveHref } from \"./shared\";\n\nconst schema = z.object({\n heading: Line(90).optional(),\n items: z\n .array(\n z.object({\n /** The organisation's name: the logo's alt text when the logo has none. */\n name: Line(80),\n image: Image,\n href: Href.optional(),\n }),\n )\n .min(1)\n .max(24),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\n\nexport const logosSection = defineSection({\n type: \"logos\",\n version: 1,\n label: \"Logos\",\n description: \"Partners, clients or press, as a row or grid of logos.\",\n category: \"social-proof\",\n schema,\n variants: [\n { id: \"row\", label: \"One row\" },\n { id: \"grid\", label: \"Grid\" },\n ],\n defaultVariant: \"row\",\n presets: [\n {\n name: \"Logo row\",\n variant: \"row\",\n props: { heading: \"Trusted by\", items: [{ name: \"Partner\", image: { src: \"/logo-partner.svg\", alt: \"Partner\" } }] },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const intro = props.heading ? <SectionIntro ctx={ctx} heading={props.heading} size=\"md\" tone={onAccent(props.surface) ? \"inherit\" : \"muted\"} /> : <HiddenTitle ctx={ctx}>Logos</HiddenTitle>;\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} spacing=\"sm\">\n {intro}\n <ul className={cn(\"items-center\", props.heading && \"mt-8\", variant === \"grid\" ? \"grid grid-cols-2 gap-8 sm:grid-cols-3 lg:grid-cols-4\" : \"flex flex-wrap justify-center gap-x-10 gap-y-6\")}>\n {props.items.map((item, i) => {\n const img = <SiteImage image={{ ...item.image, alt: item.image.alt || item.name, decorative: false }} ctx={ctx} sizes=\"160px\" className=\"mx-auto h-10 w-auto max-w-40 object-contain\" />;\n return (\n <li key={i} className=\"flex justify-center\">\n {item.href ? (\n <a href={resolveHref(item.href, ctx)} className=\"inline-flex min-h-11 items-center rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\">\n {img}\n </a>\n ) : (\n img\n )}\n </li>\n );\n })}\n </ul>\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { Band } from \"@marktiderman/genesis-ui/band\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { Menu } from \"lucide-react\";\nimport { defineSection, type RenderContext } from \"../core/registry\";\nimport { Image, Link, type MenuItem } from \"../core/schemas\";\nimport { ButtonLink, SiteImage, bandAttrs, resolveHref } from \"./shared\";\n\nconst schema = z.object({\n /** Replaces the brand's logo in the header. */\n logo: Image.optional(),\n /** Show the site's name beside the logo (always shown when there is no logo). */\n showName: z.boolean().default(true),\n cta: Link.optional(),\n});\ntype NavProps = z.output<typeof schema>;\n\nfunction isCurrent(item: MenuItem, ctx: RenderContext): boolean {\n return item.href === ctx.pagePath;\n}\n\nfunction Brand({ props, ctx }: { props: NavProps; ctx: RenderContext }) {\n const logo = props.logo ?? (ctx.site.logo ? { src: ctx.site.logo.src, alt: ctx.site.logo.alt, decorative: false } : undefined);\n const showName = props.showName || !logo;\n return (\n <a\n href={ctx.href(\"/\")}\n className=\"inline-flex min-h-11 items-center gap-3 rounded-md font-display text-lg font-bold tracking-tight focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\"\n >\n {logo ? <SiteImage image={{ ...logo, alt: showName ? \"\" : logo.alt || ctx.site.name, decorative: showName }} ctx={ctx} priority className=\"h-8 w-auto\" /> : null}\n {showName ? <span>{ctx.site.name}</span> : null}\n <span className=\"sr-only\">, home</span>\n </a>\n );\n}\n\nfunction Items({ ctx, className, itemClassName }: { ctx: RenderContext; className?: string; itemClassName?: string }) {\n return (\n <ul className={className}>\n {ctx.site.nav.map((item) => (\n <li key={`${item.label}-${item.href}`}>\n <a\n href={resolveHref(item.href, ctx)}\n {...(isCurrent(item, ctx) ? { \"aria-current\": \"page\" as const } : {})}\n className={cn(\n \"inline-flex min-h-11 items-center rounded-md px-3 text-sm font-medium hover:bg-muted focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring aria-[current=page]:underline aria-[current=page]:underline-offset-8\",\n itemClassName,\n )}\n >\n {item.label}\n </a>\n </li>\n ))}\n </ul>\n );\n}\n\nfunction NavSection({ props, variant, node, ctx }: { props: NavProps; variant: string; node: Parameters<typeof bandAttrs>[0]; ctx: RenderContext }) {\n const attrs = bandAttrs(node, ctx, undefined, false);\n const hasMenu = variant !== \"minimal\" && ctx.site.nav.length > 0;\n const centered = variant === \"centered\";\n return (\n <Band {...attrs} as=\"header\" spacing=\"none\" className={cn(\"border-b border-border\", attrs.className as string | undefined)}>\n <div className={cn(\"relative flex min-h-16 flex-wrap items-center justify-between gap-x-4 gap-y-2 py-2\", centered && \"md:flex-col md:justify-center md:py-4\")}>\n <Brand props={props} ctx={ctx} />\n {hasMenu ? (\n <nav aria-label=\"Main\" className={cn(\"flex items-center gap-2\", centered && \"md:w-full md:justify-center\")}>\n <Items ctx={ctx} className=\"hidden items-center gap-1 md:flex\" />\n {props.cta ? <ButtonLink link={props.cta} ctx={ctx} className=\"hidden md:inline-flex\" /> : null}\n {/* Phones: a disclosure that works without script; the islands script closes it on Escape and on a link. */}\n <details className=\"group md:hidden\" data-gs-island=\"menu\">\n <summary className=\"flex min-h-11 min-w-11 cursor-pointer list-none items-center justify-center rounded-md border border-border focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring [&::-webkit-details-marker]:hidden\">\n <Menu aria-hidden=\"true\" className=\"size-5\" />\n <span className=\"sr-only\">Menu</span>\n </summary>\n <div className=\"absolute inset-x-0 top-full z-50 border-b border-border bg-background px-4 pb-4 shadow-lg\">\n <Items ctx={ctx} className=\"flex flex-col py-2\" itemClassName=\"w-full\" />\n {props.cta ? <ButtonLink link={props.cta} ctx={ctx} className=\"w-full\" /> : null}\n </div>\n </details>\n </nav>\n ) : props.cta ? (\n <ButtonLink link={props.cta} ctx={ctx} />\n ) : null}\n </div>\n </Band>\n );\n}\n\nexport const navSection = defineSection({\n type: \"nav\",\n version: 1,\n label: \"Navigation\",\n description: \"The site's header: logo, menu and a button. On phones the menu folds into a button.\",\n category: \"header\",\n placement: \"header\",\n limit: 1,\n schema,\n variants: [\n { id: \"simple\", label: \"Logo left, menu right\" },\n { id: \"centered\", label: \"Logo centred, menu below\" },\n { id: \"minimal\", label: \"Logo and button only\" },\n ],\n defaultVariant: \"simple\",\n presets: [\n { name: \"Header with menu\", variant: \"simple\", props: { showName: true, cta: { label: \"Get started\", href: \"#contact\" } } },\n { name: \"Centred header\", variant: \"centered\", props: { showName: true } },\n { name: \"Landing page header\", variant: \"minimal\", props: { showName: true, cta: { label: \"Get started\", href: \"#contact\" } } },\n ],\n render: (input) => <NavSection {...input} />,\n});\n","import { z } from \"zod\";\nimport { Check } from \"lucide-react\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Line, Link, Surface } from \"../core/schemas\";\nimport { Anchor, ButtonLink, ItemTitle, SectionBand, SectionIntro, onAccent } from \"./shared\";\n\nconst Tier = z.object({\n name: Line(40),\n price: Line(20),\n /** \"per month\", \"per session\". */\n period: Line(30).optional(),\n description: Copy(200).optional(),\n features: z.array(Line(100)).max(12).default([]),\n cta: Link.optional(),\n highlighted: z.boolean().optional(),\n});\n\nconst schema = z.object({\n heading: Line(90),\n body: Copy(320).optional(),\n tiers: z.array(Tier).min(1).max(4),\n note: Copy(300).optional(),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\n\nconst COLS = { 1: \"max-w-md mx-auto\", 2: \"md:grid-cols-2 max-w-4xl mx-auto\", 3: \"md:grid-cols-3\", 4: \"md:grid-cols-2 lg:grid-cols-4\" } as const;\n\nexport const pricingSection = defineSection({\n type: \"pricing\",\n version: 1,\n label: \"Pricing\",\n description: \"Up to four plans with a price, what's included and a button.\",\n category: \"conversion\",\n schema,\n variants: [\n { id: \"cards\", label: \"Plan cards\" },\n { id: \"compact\", label: \"Compact list\" },\n ],\n defaultVariant: \"cards\",\n presets: [\n {\n name: \"Three plans\",\n variant: \"cards\",\n props: {\n heading: \"Plans\",\n tiers: [\n { name: \"Starter\", price: \"$29\", period: \"per month\", features: [\"One thing\", \"Another thing\"], cta: { label: \"Choose Starter\", href: \"#contact\" } },\n { name: \"Regular\", price: \"$59\", period: \"per month\", features: [\"Everything in Starter\", \"More\"], cta: { label: \"Choose Regular\", href: \"#contact\" }, highlighted: true },\n { name: \"Unlimited\", price: \"$99\", period: \"per month\", features: [\"Everything\", \"Most\"], cta: { label: \"Choose Unlimited\", href: \"#contact\" } },\n ],\n },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const intro = <SectionIntro ctx={ctx} heading={props.heading} body={props.body} tone={inverted ? \"inherit\" : \"muted\"} />;\n const note = props.note ? <p className={cn(\"mt-8 text-center text-sm\", !inverted && \"text-muted-foreground\")}>{props.note}</p> : null;\n\n if (variant === \"compact\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} width=\"md\">\n {intro}\n <ul className=\"mx-auto mt-10 flex max-w-3xl flex-col divide-y divide-border rounded-xl border border-border bg-background text-foreground\">\n {props.tiers.map((tier, i) => (\n <li key={i} className=\"flex flex-col gap-4 p-6 sm:flex-row sm:items-center sm:justify-between\">\n <div className=\"flex flex-col gap-1\">\n <ItemTitle ctx={ctx}>{tier.name}</ItemTitle>\n {tier.description ? <p className=\"text-sm text-muted-foreground\">{tier.description}</p> : null}\n </div>\n <div className=\"flex items-center gap-4\">\n <p>\n <span className=\"font-display text-2xl font-bold\">{tier.price}</span>\n {tier.period ? <span className=\"text-sm text-muted-foreground\"> {tier.period}</span> : null}\n </p>\n {tier.cta ? <ButtonLink link={tier.cta} ctx={ctx} tone={tier.highlighted ? \"primary\" : \"outline\"} /> : null}\n </div>\n </li>\n ))}\n </ul>\n {note}\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <ul className={cn(\"mt-12 grid gap-6\", COLS[props.tiers.length as 1 | 2 | 3 | 4])}>\n {props.tiers.map((tier, i) => (\n <li\n key={i}\n className={cn(\n \"flex flex-col gap-6 rounded-2xl border bg-background p-8 text-foreground\",\n tier.highlighted ? \"border-2 border-primary shadow-lg\" : \"border-border\",\n )}\n >\n <div className=\"flex flex-col gap-2\">\n <div className=\"flex items-center justify-between gap-2\">\n <ItemTitle ctx={ctx}>{tier.name}</ItemTitle>\n {tier.highlighted ? <span className=\"rounded-full bg-primary px-3 py-1 text-xs font-semibold text-primary-foreground\">Most popular</span> : null}\n </div>\n {tier.description ? <p className=\"text-sm text-muted-foreground\">{tier.description}</p> : null}\n </div>\n <p>\n <span className=\"font-display text-4xl font-bold\">{tier.price}</span>\n {tier.period ? <span className=\"text-muted-foreground\"> {tier.period}</span> : null}\n </p>\n {tier.features.length ? (\n <ul className=\"flex flex-col gap-3\">\n {tier.features.map((f, j) => (\n <li key={j} className=\"flex gap-3\">\n <Check aria-hidden=\"true\" className=\"mt-0.5 size-5 shrink-0\" />\n <span>{f}</span>\n </li>\n ))}\n </ul>\n ) : null}\n {tier.cta ? <ButtonLink link={tier.cta} ctx={ctx} tone={tier.highlighted ? \"primary\" : \"outline\"} className=\"mt-auto w-full\" /> : null}\n </li>\n ))}\n </ul>\n {note}\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { RichText as RichTextView, richTextClassName, type RichTextDoc } from \"@marktiderman/genesis-ui/rich-text\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection } from \"../core/registry\";\nimport { Line, RichText, Surface } from \"../core/schemas\";\nimport { Anchor, SectionBand, SectionIntro, onAccent } from \"./shared\";\n\nconst schema = z.object({\n heading: Line(90).optional(),\n body: RichText,\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\n\nexport const richTextSection = defineSection({\n type: \"rich-text\",\n version: 1,\n label: \"Text\",\n description: \"Long copy with headings, lists, links and quotes. Sanitised when it renders.\",\n category: \"content\",\n schema,\n variants: [\n { id: \"narrow\", label: \"Reading width\" },\n { id: \"wide\", label: \"Wide\" },\n ],\n defaultVariant: \"narrow\",\n presets: [\n {\n name: \"Text\",\n variant: \"narrow\",\n props: {\n body: {\n type: \"doc\",\n content: [\n { type: \"heading\", attrs: { level: 2 }, content: [{ type: \"text\", text: \"A heading\" }] },\n { type: \"paragraph\", content: [{ type: \"text\", text: \"Write here.\" }] },\n ],\n },\n },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n // Without a title of its own the band is a plain block of copy, not a named region.\n const intro = props.heading ? <SectionIntro ctx={ctx} heading={props.heading} align=\"left\" tone={onAccent(props.surface) ? \"inherit\" : \"muted\"} /> : null;\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} width={variant === \"wide\" ? \"lg\" : \"prose\"} labelled={Boolean(props.heading)}>\n {intro}\n {/* genesis-ui's RichText sanitizes the document (links, embeds) and never sets raw HTML. */}\n <RichTextView\n value={props.body as unknown as RichTextDoc}\n headingLevels={props.heading ? [3, 4] : [2, 3, 4]}\n className={cn(richTextClassName, \"text-base sm:text-lg [&_h2]:font-display [&_h2]:text-2xl [&_h3]:font-display [&_h3]:text-xl\", props.heading && \"mt-6\")}\n />\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Line, Surface } from \"../core/schemas\";\nimport { Anchor, HiddenTitle, SectionBand, SectionIntro, onAccent } from \"./shared\";\n\nconst schema = z.object({\n heading: Line(90).optional(),\n body: Copy(320).optional(),\n items: z\n .array(z.object({ value: Line(16), label: Line(60) }))\n .min(1)\n .max(6),\n surface: Surface.default(\"muted\"),\n anchor: Anchor,\n});\n\nconst COLS = { 1: \"\", 2: \"sm:grid-cols-2\", 3: \"sm:grid-cols-3\", 4: \"sm:grid-cols-2 lg:grid-cols-4\", 5: \"sm:grid-cols-3 lg:grid-cols-5\", 6: \"sm:grid-cols-3 lg:grid-cols-6\" } as const;\n\nexport const statsSection = defineSection({\n type: \"stats\",\n version: 1,\n label: \"Stats\",\n description: \"A few numbers that matter, each with a label.\",\n category: \"social-proof\",\n schema,\n variants: [\n { id: \"row\", label: \"In a row\" },\n { id: \"cards\", label: \"Cards\" },\n ],\n defaultVariant: \"row\",\n presets: [\n {\n name: \"Three numbers\",\n variant: \"row\",\n props: { items: [{ value: \"12\", label: \"years open\" }, { value: \"40+\", label: \"classes a week\" }, { value: \"6\", label: \"coaches\" }] },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const intro = props.heading ? <SectionIntro ctx={ctx} heading={props.heading} body={props.body} tone={inverted ? \"inherit\" : \"muted\"} /> : <HiddenTitle ctx={ctx}>In numbers</HiddenTitle>;\n const cards = variant === \"cards\";\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <dl className={cn(\"grid gap-6 text-center\", COLS[props.items.length as 1 | 2 | 3 | 4 | 5 | 6], props.heading && \"mt-10\")}>\n {props.items.map((item, i) => (\n <div key={i} className={cn(\"flex flex-col-reverse gap-1\", cards && \"rounded-xl border border-border bg-background p-6 text-foreground\")}>\n <dt className={cn(\"text-sm font-medium\", !inverted || cards ? \"text-muted-foreground\" : undefined)}>{item.label}</dt>\n <dd className=\"font-display text-4xl font-bold tracking-tight sm:text-5xl\">{item.value}</dd>\n </div>\n ))}\n </dl>\n </SectionBand>\n );\n },\n});\n","import { z } from \"zod\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Image, Line, Surface } from \"../core/schemas\";\nimport { Anchor, HiddenTitle, SectionBand, SectionIntro, SiteImage, onAccent } from \"./shared\";\n\nconst Quote = z.object({\n quote: Copy(500).min(1),\n name: Line(80),\n role: Line(80).optional(),\n avatar: Image.optional(),\n});\n\nconst schema = z.object({\n heading: Line(90).optional(),\n body: Copy(320).optional(),\n items: z.array(Quote).min(1).max(12),\n surface: Surface.default(\"muted\"),\n anchor: Anchor,\n});\n\nexport const testimonialsSection = defineSection({\n type: \"testimonials\",\n version: 1,\n label: \"Testimonials\",\n description: \"Quotes from real people, with their permission.\",\n category: \"social-proof\",\n schema,\n variants: [\n { id: \"grid\", label: \"Quotes in a grid\" },\n { id: \"single\", label: \"One large quote\" },\n ],\n defaultVariant: \"grid\",\n presets: [\n { name: \"Quotes\", variant: \"grid\", props: { heading: \"What people say\", items: [{ quote: \"A quote, in their words.\", name: \"Their name\" }] } },\n { name: \"One quote\", variant: \"single\", props: { items: [{ quote: \"A quote, in their words.\", name: \"Their name\", role: \"Who they are\" }] } },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const muted = inverted ? undefined : \"text-muted-foreground\";\n const person = (item: z.output<typeof Quote>, large = false) => (\n <figcaption className=\"flex items-center gap-3\">\n {item.avatar ? <SiteImage image={item.avatar} ctx={ctx} sizes=\"48px\" className={cn(\"rounded-full object-cover\", large ? \"size-14\" : \"size-11\")} /> : null}\n <span className=\"flex flex-col text-left\">\n <span className=\"font-semibold\">{item.name}</span>\n {item.role ? <span className={cn(\"text-sm\", muted)}>{item.role}</span> : null}\n </span>\n </figcaption>\n );\n const intro = props.heading ? <SectionIntro ctx={ctx} heading={props.heading} body={props.body} tone={inverted ? \"inherit\" : \"muted\"} /> : <HiddenTitle ctx={ctx}>Testimonials</HiddenTitle>;\n\n if (variant === \"single\") {\n const item = props.items[0]!;\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} width=\"md\">\n {intro}\n <figure className={cn(\"mx-auto flex max-w-3xl flex-col items-center gap-8 text-center\", props.heading && \"mt-10\")}>\n <blockquote className=\"font-display text-2xl font-medium leading-snug text-balance sm:text-3xl\">\n <p>“{item.quote}”</p>\n </blockquote>\n {person(item, true)}\n </figure>\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <ul className={cn(\"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\", props.heading && \"mt-12\")}>\n {props.items.map((item, i) => (\n <li key={i}>\n <figure className=\"flex h-full flex-col justify-between gap-6 rounded-xl border border-border bg-background p-6 text-foreground\">\n <blockquote className=\"leading-relaxed\">\n <p>“{item.quote}”</p>\n </blockquote>\n {person(item)}\n </figure>\n </li>\n ))}\n </ul>\n </SectionBand>\n );\n },\n});\n","/**\n * @marktiderman/genesis-sites/sections: the built-in section catalog.\n *\n * Importing this module registers the 13 built-in sections (unless a host\n * registered a replacement first, with `{ replace: true }`). Each is\n * server-safe React on genesis-ui's `Band` and `Display`, mobile first, with\n * 2–4 variants and presets for the editor's Add picker.\n *\n * @packageDocumentation\n */\nimport { registerBuiltInSection, type AnySectionDefinition } from \"../core/registry\";\nimport { ctaSection } from \"./cta\";\nimport { faqSection } from \"./faq\";\nimport { featuresSection } from \"./features\";\nimport { footerSection } from \"./footer\";\nimport { formEmbedSection } from \"./form-embed\";\nimport { gallerySection } from \"./gallery\";\nimport { heroSection } from \"./hero\";\nimport { logosSection } from \"./logos\";\nimport { navSection } from \"./nav\";\nimport { pricingSection } from \"./pricing\";\nimport { richTextSection } from \"./rich-text\";\nimport { statsSection } from \"./stats\";\nimport { testimonialsSection } from \"./testimonials\";\n\n/** The built-in sections, in the editor's order. */\nexport const builtInSections: readonly AnySectionDefinition[] = Object.freeze([\n navSection,\n heroSection,\n featuresSection,\n ctaSection,\n testimonialsSection,\n faqSection,\n pricingSection,\n logosSection,\n statsSection,\n gallerySection,\n richTextSection,\n formEmbedSection,\n footerSection,\n] as AnySectionDefinition[]);\n\nfor (const def of builtInSections) registerBuiltInSection(def);\n\nexport {\n ctaSection,\n faqSection,\n featuresSection,\n footerSection,\n formEmbedSection,\n gallerySection,\n heroSection,\n logosSection,\n navSection,\n pricingSection,\n richTextSection,\n statsSection,\n testimonialsSection,\n};\nexport { ICONS, IconName, Anchor, ButtonLink, TextLink, SiteImage, SectionBand, SectionIntro, SectionTitle, ItemTitle, HiddenTitle, resolveHref, titleId } from \"./shared\";\nexport { SiteFormHeader, siteFormSlots } from \"./form-header\";\n"]}