@marktiderman/genesis-sites 0.1.0 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (47) hide show
  1. package/README.md +152 -8
  2. package/dist/assets/islands.77d11f5697.js +1 -0
  3. package/dist/assets/sites-forms.4e6aa42497.css +10 -0
  4. package/dist/assets/sites-forms.css +1 -1
  5. package/dist/assets/sites.css +1 -1
  6. package/dist/assets/sites.e1ffd2708b.css +2 -0
  7. package/dist/blocks.d.ts +1 -1
  8. package/dist/blocks.js +5 -1
  9. package/dist/blocks.js.map +1 -1
  10. package/dist/chunk-3VKTBE7S.js +69 -0
  11. package/dist/chunk-3VKTBE7S.js.map +1 -0
  12. package/dist/chunk-C375ZPU2.js +2241 -0
  13. package/dist/chunk-C375ZPU2.js.map +1 -0
  14. package/dist/{chunk-GA7U3CIN.js → chunk-IXMY4B56.js} +229 -10
  15. package/dist/chunk-IXMY4B56.js.map +1 -0
  16. package/dist/chunk-VZUDRPFG.js +13 -0
  17. package/dist/chunk-VZUDRPFG.js.map +1 -0
  18. package/dist/{chunk-KEF3V5ZN.js → chunk-ZGWGQGT2.js} +169 -73
  19. package/dist/chunk-ZGWGQGT2.js.map +1 -0
  20. package/dist/import.d.ts +130 -0
  21. package/dist/import.js +330 -0
  22. package/dist/import.js.map +1 -0
  23. package/dist/index.d.ts +40 -7
  24. package/dist/index.js +5 -3
  25. package/dist/index.js.map +1 -1
  26. package/dist/{registry-CdgVymsu.d.ts → registry-D_DCWRTc.d.ts} +274 -8
  27. package/dist/sections.d.ts +422 -6
  28. package/dist/sections.js +4 -2
  29. package/dist/{store-BzGw2i5J.d.ts → store-DkSycDhq.d.ts} +119 -53
  30. package/dist/supabase.d.ts +5 -5
  31. package/dist/supabase.js +115 -6
  32. package/dist/supabase.js.map +1 -1
  33. package/dist/web.d.ts +26 -8
  34. package/dist/web.js +142 -18
  35. package/dist/web.js.map +1 -1
  36. package/migrations/0001_genesis_sites.sql +64 -6
  37. package/migrations/0002_genesis_sites_posts.sql +404 -0
  38. package/migrations/tests/0001_genesis_sites.test.sql +30 -1
  39. package/migrations/tests/0002_genesis_sites_posts.test.sql +242 -0
  40. package/package.json +18 -10
  41. package/dist/assets/islands.230b20b9c4.js +0 -1
  42. package/dist/assets/sites-forms.5e6ebf31c3.css +0 -10
  43. package/dist/assets/sites.b28b796c6f.css +0 -2
  44. package/dist/chunk-43XUAO63.js +0 -1255
  45. package/dist/chunk-43XUAO63.js.map +0 -1
  46. package/dist/chunk-GA7U3CIN.js.map +0 -1
  47. package/dist/chunk-KEF3V5ZN.js.map +0 -1
@@ -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/blog-list.tsx","../src/sections/file.tsx","../src/sections/map.tsx","../src/sections/post-body.tsx","../src/sections/schedule.tsx","../src/sections/team.tsx","../src/sections/timeline.tsx","../src/sections/index.ts"],"names":["onAccent","z","inverted","jsx","jsxs","BandLead","schema","cn","Band","Fragment","buttonVariants","Check","RichTextView","COLS","Item","MapPin","richTextClassName","TONE","COLUMNS","Quote","ChevronDown"],"mappings":"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","file":"chunk-C375ZPU2.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 { opensInNewTab, type FileRef, type Image, type Link, type SectionNode, type 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\n/**\n * A link's attributes: its checked href, and for an http(s) link, `rel` and\n * `target`. An outbound link (`external`), or one that opens a new tab,\n * gets `rel=\"noopener noreferrer\"` and `data-gs-outbound` (for analytics);\n * any other absolute link `rel=\"noopener\"`. An outbound link whose href\n * isn't http(s) (a document that skipped the schema) renders inert.\n */\nexport function linkAttrs(link: Link, ctx: RenderContext, defaultEvent?: string): Record<string, string> {\n let href = resolveHref(link.href, ctx);\n const absolute = isExternalHref(href);\n if (link.external && !absolute) {\n console.error(`[genesis-sites] refused an outbound link that isn't http(s) on ${ctx.pagePath}.`);\n href = \"#\";\n }\n const newTab = absolute && opensInNewTab(link);\n const outbound = absolute && (link.external === true || newTab);\n const event = link.event ?? defaultEvent;\n return {\n href,\n ...(newTab ? { target: \"_blank\" } : {}),\n ...(outbound ? { rel: \"noopener noreferrer\", \"data-gs-outbound\": \"\" } : absolute ? { rel: \"noopener\" } : {}),\n ...(event ? { \"data-gs-event\": event } : {}),\n };\n}\n\n/** The attributes with the class before the analytics event, the order the markup has always had. */\nfunction withEventLast(attrs: Record<string, string>, className: string): Record<string, string> {\n const { \"data-gs-event\": event, ...rest } = attrs;\n return { ...rest, className, ...(event ? { \"data-gs-event\": event } : {}) };\n}\n\n/** The visually hidden hint after a link that opens a new tab. */\nfunction NewTabHint({ link }: { link: Link }) {\n return opensInNewTab(link) ? <span className=\"sr-only\"> (opens in a new tab)</span> : null;\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 {...withEventLast(linkAttrs(link, ctx, \"cta\"), cn(TONE[tone], \"min-h-11\", className))}>\n {link.label}\n <NewTabHint link={link} />\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 <NewTabHint link={link} />\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// ── Files ───────────────────────────────────────────────────────────────────\n\nconst FILE_KIND: Record<string, string> = {\n \"application/pdf\": \"PDF\",\n \"image/png\": \"PNG image\",\n \"image/jpeg\": \"JPEG image\",\n \"image/webp\": \"WebP image\",\n \"image/avif\": \"AVIF image\",\n \"image/gif\": \"GIF image\",\n};\n\n/** \"PDF, 1.2 MB\": what a download is, said beside its link. */\nexport function fileDescription(file: FileRef): string {\n const kind = FILE_KIND[file.mime] ?? \"File\";\n if (!file.bytes) return kind;\n const size = file.bytes >= 1024 * 1024 ? `${(file.bytes / (1024 * 1024)).toFixed(1)} MB` : `${Math.max(1, Math.round(file.bytes / 1024))} KB`;\n return `${kind}, ${size}`;\n}\n\n/** A file's href: checked again, under the base path when it is a site path. Null when it isn't safe. */\nexport function fileHref(file: FileRef, ctx: RenderContext): string | null {\n if (!isSafeImageSrc(file.src)) {\n console.error(`[genesis-sites] refused an unsafe file link on ${ctx.pagePath}.`);\n return null;\n }\n return file.src.startsWith(\"/\") ? ctx.href(file.src) : file.src;\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, ButtonLink, 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 /** A button for this item: a step's own next action. */\n cta: Link.optional(),\n /** A short aside under the copy (\"When: Saturdays at 8 am\"). */\n note: Copy(300).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 /** Number the items (01, 02, …) in place of their icons: an ordered list. The `steps` variant always is. */\n numbered: z.boolean().default(false),\n /** A button under the items. */\n cta: Link.optional(),\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 { id: \"steps\", label: \"Numbered steps, a button each\" },\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 name: \"Numbered steps\",\n variant: \"steps\",\n props: {\n heading: \"How to start\",\n items: [\n { title: \"Come to a free class\", body: \"Meet the coaches and try a session.\", cta: { label: \"Book a free class\", href: \"#contact\" } },\n { title: \"Learn the basics\", body: \"A few sessions on the movements, with a coach.\" },\n { title: \"Pick a plan\", body: \"Choose what fits your week.\", cta: { label: \"See the plans\", href: \"/plans\" } },\n ],\n },\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 numberBadge = (i: number) => (\n <span aria-hidden=\"true\" className={cn(\"inline-flex size-11 shrink-0 items-center justify-center rounded-lg font-display text-lg font-bold\", inverted ? \"bg-background text-foreground\" : \"bg-primary text-primary-foreground\")}>\n {String(i + 1).padStart(2, \"0\")}\n </span>\n );\n const extras = (item: (typeof props.items)[number], className?: string) => (\n <>\n {item.note ? <p className={cn(\"border-l-2 border-current pl-3 text-sm italic\", className)}>{item.note}</p> : null}\n {item.link ? <TextLink link={item.link} ctx={ctx} className=\"font-medium underline\" /> : null}\n {item.cta ? <ButtonLink link={item.cta} ctx={ctx} tone=\"outline\" className=\"self-start\" /> : null}\n </>\n );\n const sectionCta = props.cta ? (\n <div className=\"mt-10 flex justify-center\">\n <ButtonLink link={props.cta} ctx={ctx} tone={inverted ? \"inverse\" : \"primary\"} />\n </div>\n ) : null;\n const List = (props.numbered ? \"ol\" : \"ul\") as \"ol\" | \"ul\";\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 === \"steps\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <ol className={cn(\"mt-12 grid gap-6\", props.items.length > 3 ? \"md:grid-cols-2\" : \"\", props.items.length === 3 && \"lg:grid-cols-3\")}>\n {props.items.map((item, i) => (\n <li key={i} className=\"flex flex-col gap-4 rounded-xl border border-border bg-background p-6 text-foreground sm:p-8\">\n <span aria-hidden=\"true\" className=\"font-display text-4xl font-bold leading-none\">\n {String(i + 1).padStart(2, \"0\")}\n </span>\n {item.image ? <SiteImage image={item.image} ctx={ctx} sizes=\"(min-width: 1024px) 33vw, 100vw\" className=\"aspect-video w-full rounded-lg object-cover\" /> : null}\n <ItemTitle ctx={ctx} className=\"text-2xl\">\n {item.title}\n </ItemTitle>\n <p className=\"text-muted-foreground\">{item.body}</p>\n {item.note ? <p className=\"border-l-2 border-primary pl-3 text-sm italic\">{item.note}</p> : null}\n {item.link ? <TextLink link={item.link} ctx={ctx} className=\"font-medium underline\" /> : null}\n {item.cta ? <ButtonLink link={item.cta} ctx={ctx} tone=\"primary\" className=\"mt-auto self-start\" /> : null}\n </li>\n ))}\n </ol>\n {sectionCta}\n </SectionBand>\n );\n }\n if (variant === \"alternating\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <List 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 {props.numbered ? numberBadge(i) : 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 {extras(item)}\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 </List>\n {sectionCta}\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 <List 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 {props.numbered ? numberBadge(i) : 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 {extras(item, \"mt-1\")}\n </div>\n </li>\n ))}\n </List>\n {sectionCta}\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <List 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\" /> : null}\n {props.numbered ? numberBadge(i) : item.image ? null : Icon(item.icon)}\n <ItemTitle ctx={ctx}>{item.title}</ItemTitle>\n <p className=\"text-muted-foreground\">{item.body}</p>\n {item.note ? <p className=\"border-l-2 border-primary pl-3 text-sm italic\">{item.note}</p> : null}\n {item.link ? <TextLink link={item.link} ctx={ctx} className=\"mt-auto font-medium underline\" /> : null}\n {item.cta ? <ButtonLink link={item.cta} ctx={ctx} tone=\"outline\" className={cn(\"self-start\", !item.link && \"mt-auto\")} /> : null}\n </li>\n ))}\n </List>\n {sectionCta}\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 { mailtoHref, 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, ButtonLink, 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\" | \"mailto\" | null {\n if (!resolved) return null;\n if (resolved.kind === \"embed\") return \"embed\";\n if (resolved.kind === \"mailto\") return mailtoHref(resolved) ? \"mailto\" : null;\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 === \"mailto\") {\n // No form: a button that opens the visitor's email. Nothing is posted or stored.\n const href = mailtoHref(resolved);\n if (!href) {\n console.error(`[genesis-sites] the mailto form \"${slug}\" has no plain email address; it renders nothing.`);\n return null;\n }\n return (\n <div className=\"flex flex-col items-start gap-4 rounded-xl border border-border bg-background p-6 text-foreground\">\n <p>{resolved.note ?? \"Write to us and we'll reply by email.\"}</p>\n <ButtonLink link={{ label: resolved.label ?? \"Email us\", href, event: \"form-mailto\" }} ctx={ctx} />\n </div>\n );\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 { isExternalHref } from \"../core/urls\";\nimport { Copy, 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, or a badge's words: the logo's alt text when the logo has none. */\n name: Line(80),\n /** Without one, the name shows as a text badge. */\n image: Image.optional(),\n href: Href.optional(),\n }),\n )\n .min(1)\n .max(24),\n /** The trust bar's short claim (\"Small classes, friendly coaches\"). */\n claim: Copy(200).optional(),\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 { id: \"trust-bar\", label: \"Trust bar: a claim with badges\" },\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 name: \"Trust bar\",\n variant: \"trust-bar\",\n props: { claim: \"Why people trust us\", items: [{ name: \"Small classes\" }, { name: \"Friendly coaches\" }, { name: \"Free first visit\" }], surface: \"inverse\" },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const badge = (item: (typeof props.items)[number], compact: boolean) =>\n item.image ? (\n <SiteImage image={{ ...item.image, alt: item.image.alt || item.name, decorative: false }} ctx={ctx} sizes=\"160px\" className={cn(\"mx-auto w-auto object-contain\", compact ? \"h-8 max-w-32\" : \"h-10 max-w-40\")} />\n ) : (\n <span className={cn(\"text-center font-semibold uppercase tracking-wider\", compact ? \"text-xs sm:text-sm\" : \"text-sm\")}>{item.name}</span>\n );\n const linked = (item: (typeof props.items)[number], content: React.ReactNode) => {\n if (!item.href) return content;\n const href = resolveHref(item.href, ctx);\n // A partner's own site: it gets no handle on this page, and no referrer.\n return (\n <a href={href} {...(isExternalHref(href) ? { rel: \"noopener noreferrer\" } : {})} className=\"inline-flex min-h-11 items-center rounded-md focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\">\n {content}\n </a>\n );\n };\n\n if (variant === \"trust-bar\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} spacing=\"sm\">\n {props.heading ? <SectionIntro ctx={ctx} heading={props.heading} size=\"sm\" tone={inverted ? \"inherit\" : \"muted\"} /> : <HiddenTitle ctx={ctx}>{props.claim ?? \"Why people trust us\"}</HiddenTitle>}\n <div className={cn(\"flex flex-col items-center gap-4 md:flex-row md:justify-between\", props.heading && \"mt-6\")}>\n {props.claim ? <p className=\"text-center font-display text-lg font-semibold md:text-left\">{props.claim}</p> : null}\n <ul className=\"flex flex-wrap items-center justify-center gap-x-6 gap-y-3 md:justify-end\">\n {props.items.map((item, i) => (\n <li key={i} className=\"flex items-center\">\n {linked(item, badge(item, true))}\n </li>\n ))}\n </ul>\n </div>\n </SectionBand>\n );\n }\n const intro = props.heading ? <SectionIntro ctx={ctx} heading={props.heading} size=\"md\" tone={inverted ? \"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 <li key={i} className=\"flex justify-center\">\n {linked(item, badge(item, false))}\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 { 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 type { RenderContext } from \"../core/registry\";\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 /** The highlighted plan's label (default \"Most popular\"). */\n badge: Line(30).optional(),\n});\ntype Tier = z.infer<typeof Tier>;\n\n/** A group of plans under its own heading (\"Start here\", \"Every week\"), with an anchor for links to it. */\nconst Group = z.object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n tiers: z.array(Tier).min(1).max(12),\n note: Copy(300).optional(),\n anchor: Anchor,\n});\ntype Group = z.infer<typeof Group>;\n\nconst schema = z\n .object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n /** Plans with no group. */\n tiers: z.array(Tier).max(12).default([]),\n /** Plans in groups, each with its heading: many plans on one page. */\n groups: z.array(Group).max(8).default([]),\n note: Copy(300).optional(),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n })\n .refine((p) => p.tiers.length + p.groups.length > 0, { message: \"Add a plan, or a group of plans.\", path: [\"tiers\"] });\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;\nconst cols = (n: number) => (n <= 4 ? COLS[Math.max(1, n) as 1 | 2 | 3 | 4] : \"md:grid-cols-2 lg:grid-cols-3\");\n\n/** A group's heading: one level below the section's title. */\nfunction GroupTitle({ ctx, id, children }: { ctx: RenderContext; id: string; children: React.ReactNode }) {\n const Tag = `h${ctx.headingLevel + 1}` as \"h2\" | \"h3\";\n return (\n <Tag id={id} className=\"font-display text-2xl font-semibold tracking-tight\">\n {children}\n </Tag>\n );\n}\n\n/** A plan's name inside a group: two levels below the section's title. */\nfunction PlanTitle({ ctx, grouped, children }: { ctx: RenderContext; grouped: boolean; children: React.ReactNode }) {\n if (!grouped) return <ItemTitle ctx={ctx}>{children}</ItemTitle>;\n const Tag = `h${ctx.headingLevel + 2}` as \"h3\" | \"h4\";\n return <Tag className=\"font-display text-lg font-semibold leading-snug\">{children}</Tag>;\n}\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: \"Plan groups\",\n variant: \"cards\",\n props: {\n heading: \"Memberships\",\n groups: [\n { heading: \"Start here\", anchor: \"start\", tiers: [{ name: \"Single visit\", price: \"$20\", description: \"One class\", cta: { label: \"Book a visit\", href: \"#contact\" } }] },\n { heading: \"Every week\", anchor: \"weekly\", tiers: [{ name: \"Monthly\", price: \"$99\", period: \"per month\", cta: { label: \"Join monthly\", href: \"#contact\" } }, { name: \"Yearly\", price: \"$89\", period: \"per month\", description: \"Paid yearly\", highlighted: true, cta: { label: \"Join for a year\", href: \"#contact\" } }] },\n ],\n },\n },\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} eyebrow={props.eyebrow} heading={props.heading} body={props.body} tone={inverted ? \"inherit\" : \"muted\"} />;\n const noteOf = (text: string | undefined) => (text ? <p className={cn(\"mt-8 text-center text-sm\", !inverted && \"text-muted-foreground\")}>{text}</p> : null);\n const grouped = props.groups.length > 0;\n\n const compactList = (tiers: Tier[], inGroup: boolean, className?: string) => (\n <ul className={cn(\"mx-auto flex max-w-3xl flex-col divide-y divide-border rounded-xl border border-border bg-background text-foreground\", className)}>\n {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 <PlanTitle ctx={ctx} grouped={inGroup}>{tier.name}</PlanTitle>\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 );\n\n const cardGrid = (tiers: Tier[], inGroup: boolean, className?: string) => (\n <ul className={cn(\"grid gap-6\", cols(tiers.length), className)}>\n {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 <PlanTitle ctx={ctx} grouped={inGroup}>{tier.name}</PlanTitle>\n {tier.highlighted ? <span className=\"rounded-full bg-primary px-3 py-1 text-xs font-semibold text-primary-foreground\">{tier.badge ?? \"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 );\n\n const plans = (tiers: Tier[], inGroup: boolean, className: string) => (variant === \"compact\" ? compactList(tiers, inGroup, className) : cardGrid(tiers, inGroup, className));\n const groupBlock = (group: Group, gi: number) => {\n const id = `${ctx.idPrefix}-group-${gi}`;\n return (\n <section key={gi} aria-labelledby={id} {...(group.anchor ? { id: group.anchor } : {})} className={cn(\"flex flex-col gap-3\", group.anchor && \"scroll-mt-20\")}>\n <div className=\"mx-auto flex max-w-3xl flex-col items-center gap-2 text-center\">\n {group.eyebrow ? <p className=\"text-sm font-semibold uppercase tracking-wider\">{group.eyebrow}</p> : null}\n <GroupTitle ctx={ctx} id={id}>\n {group.heading}\n </GroupTitle>\n {group.body ? <p className={inverted ? undefined : \"text-muted-foreground\"}>{group.body}</p> : null}\n </div>\n {plans(group.tiers, true, \"mt-4\")}\n {noteOf(group.note)}\n </section>\n );\n };\n\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} width={variant === \"compact\" && !grouped ? \"md\" : \"lg\"}>\n {intro}\n {props.tiers.length ? plans(props.tiers, false, variant === \"compact\" ? \"mt-10\" : \"mt-12\") : null}\n {grouped ? <div className=\"mt-12 flex flex-col gap-16\">{props.groups.map(groupBlock)}</div> : null}\n {noteOf(props.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 * The blog's posts: the newest first, as a list or a grid of cards, with\n * pages of `perPage` (`?page=2`, plain links, no script). On the post page's\n * own path it is the blog's index; anywhere else it is \"the latest posts\".\n * On a post it leaves that post out (\"More posts\").\n *\n * Posts come from the store (`listLivePosts`), read by the renderer once per\n * page. A site needs its post page (kind `post`) for the links to open.\n */\nimport { z } from \"zod\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { postPath } from \"../core/seo\";\nimport { defineSection, type RenderContext } from \"../core/registry\";\nimport type { PostSummary } from \"../core/posts\";\nimport { Copy, Line, Link, Surface } from \"../core/schemas\";\nimport { Anchor, ButtonLink, ItemTitle, SectionBand, SectionIntro, SiteImage, onAccent } from \"./shared\";\n\nconst schema = z.object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n /** Posts per page. */\n perPage: z.number().int().min(1).max(24).default(6),\n /** Pages of posts (`?page=2`); off shows only the newest `perPage`. */\n paginate: z.boolean().default(true),\n /** Only posts in this category. */\n category: Line(60).optional(),\n showExcerpt: z.boolean().default(true),\n showDate: z.boolean().default(true),\n emptyText: Line(120).default(\"No posts yet. Check back soon.\"),\n /** A button under the list (\"All posts\"). */\n cta: Link.optional(),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\n\n/** A post's date as the page says it, in UTC so every visitor sees the same day. */\nexport function formatPostDate(iso: string, lang: string): string {\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return \"\";\n try {\n return new Intl.DateTimeFormat(lang, { dateStyle: \"medium\", timeZone: \"UTC\" }).format(date);\n } catch {\n return date.toISOString().slice(0, 10);\n }\n}\n\n/** The page of the list a link goes to: the page itself for page 1, `?page=n` after it. */\nfunction pageHref(ctx: RenderContext, page: number): string {\n return ctx.href(page <= 1 ? ctx.pagePath : `${ctx.pagePath}?page=${page}`);\n}\n\nfunction PostMeta({ post, ctx, showDate, muted }: { post: PostSummary; ctx: RenderContext; showDate: boolean; muted: boolean }) {\n const date = showDate ? formatPostDate(post.publishedAt, ctx.site.lang) : \"\";\n if (!date && !post.category) return null;\n return (\n <p className={cn(\"flex flex-wrap gap-x-3 text-sm\", muted && \"text-muted-foreground\")}>\n {post.category ? <span className=\"font-semibold uppercase tracking-wide\">{post.category}</span> : null}\n {date ? <time dateTime={post.publishedAt}>{date}</time> : null}\n </p>\n );\n}\n\nexport const blogListSection = defineSection({\n type: \"blog-list\",\n version: 1,\n label: \"Blog posts\",\n description: \"The blog's posts, newest first, as a list or cards, with pages. Needs the site's post page.\",\n category: \"content\",\n schema,\n variants: [\n { id: \"grid\", label: \"Cards with covers\" },\n { id: \"list\", label: \"List\" },\n ],\n defaultVariant: \"grid\",\n presets: [\n { name: \"Blog index\", variant: \"grid\", props: { heading: \"Latest posts\", perPage: 9 } },\n { name: \"Latest three\", variant: \"list\", props: { heading: \"From the blog\", perPage: 3, paginate: false, cta: { label: \"All posts\", href: \"/blog\" } } },\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 blog = ctx.posts;\n if (!blog) {\n console.error(`[genesis-sites] ${ctx.pagePath}: the post list has no posts to show (the site has no post page, or the store can't list posts).`);\n return ctx.mode === \"preview\" ? (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <p role=\"status\" className=\"mt-8 rounded-lg border border-dashed border-border p-6 text-center\">\n The post list needs the site's post page (a page of kind “post”, such as /blog).\n </p>\n </SectionBand>\n ) : null;\n }\n const all = blog.list.filter((p) => p.slug !== blog.current?.slug && (!props.category || p.category === props.category));\n const pages = props.paginate ? Math.max(1, Math.ceil(all.length / props.perPage)) : 1;\n const page = props.paginate && !blog.current ? Math.min(Math.max(1, blog.page), pages) : 1;\n const shown = all.slice((page - 1) * props.perPage, page * props.perPage);\n const href = (p: PostSummary) => ctx.href(postPath(blog.path, p.slug));\n const grid = variant === \"grid\";\n\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n {shown.length ? (\n <ul className={cn(\"mt-10\", grid ? \"grid gap-6 sm:grid-cols-2 lg:grid-cols-3\" : \"mx-auto flex max-w-3xl flex-col divide-y divide-border\")}>\n {shown.map((post) => (\n <li key={post.slug} className={grid ? \"flex\" : \"py-6 first:pt-0\"}>\n <article className={cn(\"flex w-full flex-col gap-3\", grid && \"rounded-xl border border-border bg-background text-foreground\")}>\n {grid ? (\n post.cover ? (\n // The title says what the post is; its cover is decoration here.\n <SiteImage image={{ ...post.cover, decorative: true }} ctx={ctx} sizes=\"(min-width: 1024px) 33vw, (min-width: 640px) 50vw, 100vw\" className=\"aspect-[16/10] w-full rounded-t-xl object-cover\" />\n ) : (\n <div aria-hidden=\"true\" className=\"aspect-[16/10] w-full rounded-t-xl bg-muted\" />\n )\n ) : null}\n <div className={cn(\"flex flex-1 flex-col gap-2\", grid && \"p-5 pt-2\")}>\n <PostMeta post={post} ctx={ctx} showDate={props.showDate} muted={grid || !inverted} />\n <ItemTitle ctx={ctx} className=\"text-xl\">\n <a href={href(post)} className=\"rounded-sm underline-offset-4 hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\">\n {post.title}\n </a>\n </ItemTitle>\n {props.showExcerpt && post.excerpt ? <p className={cn(grid || !inverted ? \"text-muted-foreground\" : undefined)}>{post.excerpt}</p> : null}\n </div>\n </article>\n </li>\n ))}\n </ul>\n ) : (\n <p className=\"mt-10 text-center\">{props.emptyText}</p>\n )}\n {props.paginate && pages > 1 && !blog.current ? (\n <nav aria-label={`${props.heading}: pages`} className=\"mt-10 flex items-center justify-between gap-4\">\n {page > 1 ? (\n <a href={pageHref(ctx, page - 1)} rel=\"prev\" className=\"inline-flex min-h-11 items-center rounded-md px-2 font-medium underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\">\n Newer posts\n </a>\n ) : (\n <span />\n )}\n <p className=\"text-sm\">\n Page {page} of {pages}\n </p>\n {page < pages ? (\n <a href={pageHref(ctx, page + 1)} rel=\"next\" className=\"inline-flex min-h-11 items-center rounded-md px-2 font-medium underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\">\n Older posts\n </a>\n ) : (\n <span />\n )}\n </nav>\n ) : null}\n {props.cta ? (\n <div className=\"mt-10 flex justify-center\">\n <ButtonLink link={props.cta} ctx={ctx} tone={inverted ? \"inverse\" : \"outline\"} />\n </div>\n ) : null}\n </SectionBand>\n );\n },\n});\n","/**\n * Files to download: a timetable, a waiver, a price list, each a PDF (or an\n * image) uploaded under `sites/<site_id>/files/` or an https URL. Each link\n * says what it is and how big (\"PDF, 1.2 MB\") before anyone clicks it.\n */\nimport { z } from \"zod\";\nimport { Download, FileText } from \"lucide-react\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection, type RenderContext } from \"../core/registry\";\nimport { Copy, FileRef, Line, Surface } from \"../core/schemas\";\nimport { Anchor, ItemTitle, SectionBand, SectionIntro, fileDescription, fileHref, onAccent } from \"./shared\";\n\nconst Item = z.object({\n label: Line(120),\n description: Copy(300).optional(),\n file: FileRef,\n});\ntype Item = z.infer<typeof Item>;\n\nconst schema = z.object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n files: z.array(Item).min(1).max(24),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\n\nfunction DownloadLink({ item, ctx, className }: { item: Item; ctx: RenderContext; className?: string }) {\n const href = fileHref(item.file, ctx);\n if (!href) return <span className={className}>{item.label}</span>;\n const sitePath = item.file.src.startsWith(\"/\");\n return (\n <a\n href={href}\n type={item.file.mime}\n {...(sitePath ? { download: \"\" } : { rel: \"noopener\" })}\n data-gs-event=\"download\"\n className={cn(\"inline-flex min-h-11 items-center gap-2 rounded-sm font-medium underline underline-offset-4 focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\", className)}\n >\n <Download aria-hidden=\"true\" className=\"size-4 shrink-0\" />\n <span>\n {item.label} <span className=\"whitespace-nowrap text-sm font-normal\">({fileDescription(item.file)})</span>\n </span>\n </a>\n );\n}\n\nexport const fileSection = defineSection({\n type: \"file\",\n version: 1,\n label: \"Downloads\",\n description: \"Files to download (PDFs), each with what it is and how big.\",\n category: \"content\",\n schema,\n variants: [\n { id: \"list\", label: \"List\" },\n { id: \"cards\", label: \"Cards\" },\n ],\n defaultVariant: \"list\",\n presets: [\n { name: \"Downloads\", variant: \"list\", props: { heading: \"Downloads\", files: [{ label: \"Timetable\", file: { src: \"/files/timetable.pdf\", mime: \"application/pdf\" } }] } },\n { name: \"File cards\", variant: \"cards\", props: { heading: \"Forms to bring\", files: [{ label: \"Waiver\", description: \"Sign it before your first class.\", file: { src: \"/files/waiver.pdf\", mime: \"application/pdf\" } }] } },\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 if (variant === \"cards\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <ul className=\"mt-10 grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {props.files.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 <FileText aria-hidden=\"true\" className=\"size-8\" />\n <ItemTitle ctx={ctx}>{item.label}</ItemTitle>\n {item.description ? <p className=\"text-muted-foreground\">{item.description}</p> : null}\n <DownloadLink item={{ ...item, label: `Download ${item.label}` }} ctx={ctx} className=\"mt-auto\" />\n </li>\n ))}\n </ul>\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} width=\"md\">\n {intro}\n <ul className=\"mx-auto mt-8 flex max-w-3xl flex-col divide-y divide-border\">\n {props.files.map((item, i) => (\n <li key={i} className=\"flex flex-col gap-1 py-4\">\n <DownloadLink item={item} ctx={ctx} />\n {item.description ? <p className={inverted ? undefined : \"text-muted-foreground\"}>{item.description}</p> : null}\n </li>\n ))}\n </ul>\n </SectionBand>\n );\n },\n});\n","/**\n * A map, loaded only when the visitor asks for it.\n *\n * The page carries the address as text, a static picture (when there is\n * one) and a link to the map provider. No map frame is in the HTML: the\n * islands loader shows a \"Show the map\" button, and only a click puts the\n * provider's iframe on the page, so nothing from the provider loads (or\n * tracks) before the visitor chooses it. Without script, the link opens the\n * map instead.\n *\n * The frame's URL is built here from the address or the coordinates, for\n * OpenStreetMap or Google Maps: an editor never types a frame URL, and the\n * page's Content-Security-Policy allows exactly that provider.\n */\nimport { z } from \"zod\";\nimport { MapPin } from \"lucide-react\";\nimport { buttonVariants } from \"@marktiderman/genesis-ui/button\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection } from \"../core/registry\";\nimport { Copy, Image, Line, Link, Surface } from \"../core/schemas\";\nimport { Actions, Anchor, SectionBand, SectionTitle, SiteImage, TextLink, onAccent, titleId } from \"./shared\";\n\nexport const MAP_PROVIDERS = {\n openstreetmap: { name: \"OpenStreetMap\", origin: \"https://www.openstreetmap.org\" },\n google: { name: \"Google Maps\", origin: \"https://www.google.com\" },\n} as const;\nexport type MapProvider = keyof typeof MAP_PROVIDERS;\n\nconst schema = z\n .object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n /** The address, a line each. */\n address: z.array(Line(120)).min(1).max(5),\n provider: z.enum([\"openstreetmap\", \"google\"]).default(\"openstreetmap\"),\n /** What the map looks up (Google): default, the address. */\n query: Line(200).optional(),\n lat: z.number().min(-90).max(90).optional(),\n lng: z.number().min(-180).max(180).optional(),\n zoom: z.number().int().min(3).max(19).default(15),\n /** The map frame's accessible name. Default: \"Map of <first address line>\". */\n title: Line(120).optional(),\n /** A picture of the map, shown until the map loads (and instead of it without script). */\n image: Image.optional(),\n /** Phone, email and the like, under the address. */\n contact: z.array(Link).max(4).default([]),\n /** Buttons under the address. */\n primaryCta: Link.optional(),\n secondaryCta: Link.optional(),\n loadLabel: Line(40).default(\"Show the map\"),\n /** Said before the map loads: who it comes from. */\n consentNote: Copy(200).optional(),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n })\n .refine((p) => p.provider !== \"openstreetmap\" || (p.lat !== undefined && p.lng !== undefined), {\n message: \"An OpenStreetMap map needs the place's latitude and longitude.\",\n path: [\"lat\"],\n });\ntype Props = z.infer<typeof schema>;\n\nconst round = (n: number) => Math.round(n * 1e6) / 1e6;\n\n/** The provider's embed URL for these props: built here, never typed by an editor. */\nexport function mapEmbedUrl(props: Pick<Props, \"provider\" | \"query\" | \"address\" | \"lat\" | \"lng\" | \"zoom\">): string {\n if (props.provider === \"google\") {\n const q = props.query ?? (props.lat !== undefined && props.lng !== undefined ? `${round(props.lat)},${round(props.lng)}` : props.address.join(\", \"));\n return `${MAP_PROVIDERS.google.origin}/maps?q=${encodeURIComponent(q)}&z=${props.zoom}&output=embed`;\n }\n const lat = round(props.lat ?? 0);\n const lng = round(props.lng ?? 0);\n const span = 180 / 2 ** props.zoom;\n const bbox = [lng - span, lat - span / 2, lng + span, lat + span / 2].map(round).join(\",\");\n return `${MAP_PROVIDERS.openstreetmap.origin}/export/embed.html?bbox=${encodeURIComponent(bbox)}&layer=mapnik&marker=${encodeURIComponent(`${lat},${lng}`)}`;\n}\n\n/** The provider's own page for the place: the link that works without script. */\nexport function mapPageUrl(props: Pick<Props, \"provider\" | \"query\" | \"address\" | \"lat\" | \"lng\" | \"zoom\">): string {\n if (props.provider === \"google\") {\n const q = props.query ?? (props.lat !== undefined && props.lng !== undefined ? `${round(props.lat)},${round(props.lng)}` : props.address.join(\", \"));\n return `${MAP_PROVIDERS.google.origin}/maps/search/?api=1&query=${encodeURIComponent(q)}`;\n }\n const lat = round(props.lat ?? 0);\n const lng = round(props.lng ?? 0);\n return `${MAP_PROVIDERS.openstreetmap.origin}/?mlat=${lat}&mlon=${lng}#map=${props.zoom}/${lat}/${lng}`;\n}\n\nexport const mapSection = defineSection({\n type: \"map\",\n version: 1,\n label: \"Map\",\n description: \"Your address with a map that loads only when the visitor asks for it (OpenStreetMap or Google Maps), a picture until then, and a link to the provider.\",\n category: \"content\",\n islands: true,\n frameOrigins: (props: Props) => [MAP_PROVIDERS[props.provider].origin],\n schema,\n variants: [\n { id: \"split\", label: \"Address beside the map\" },\n { id: \"stacked\", label: \"Map above the address\" },\n ],\n defaultVariant: \"split\",\n presets: [\n {\n name: \"Find us\",\n variant: \"split\",\n props: { heading: \"Find us\", address: [\"1 River Road\", \"Riverside\"], provider: \"openstreetmap\", lat: 51.5007, lng: -0.1246 },\n },\n {\n name: \"Map and address\",\n variant: \"stacked\",\n props: { heading: \"Visit\", address: [\"1 River Road\", \"Riverside\"], provider: \"google\", query: \"1 River Road, Riverside\" },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const provider = MAP_PROVIDERS[props.provider];\n const frameTitle = props.title ?? `Map of ${props.address[0]}`;\n const note = props.consentNote ?? `The map comes from ${provider.name}, which may set cookies. It loads only if you ask for it.`;\n const map = (\n <div\n data-gs-island=\"map\"\n data-gs-map-src={mapEmbedUrl(props)}\n data-gs-map-title={frameTitle}\n className=\"relative isolate flex aspect-[4/3] w-full flex-col justify-end overflow-hidden rounded-xl border border-border bg-muted text-foreground\"\n >\n {props.image ? (\n <span data-gs-map-drop=\"\" className=\"absolute inset-0 -z-10\">\n <SiteImage image={props.image} ctx={ctx} sizes=\"(min-width: 768px) 50vw, 100vw\" className=\"h-full w-full object-cover\" />\n </span>\n ) : (\n <MapPin data-gs-map-drop=\"\" aria-hidden=\"true\" className=\"absolute left-1/2 top-1/3 -z-10 size-12 -translate-x-1/2 text-muted-foreground\" />\n )}\n <div className=\"relative flex flex-col items-start gap-3 bg-background p-4 text-foreground\">\n <p data-gs-map-drop=\"\" className=\"text-sm\">\n {note}\n </p>\n <div className=\"flex flex-wrap items-center gap-4\">\n {/* Shown by the islands loader; without script the link below opens the map. */}\n <button type=\"button\" data-gs-map-load=\"\" data-gs-map-drop=\"\" hidden className={cn(buttonVariants({ variant: \"default\", size: \"lg\" }), \"min-h-11\")}>\n {props.loadLabel}\n </button>\n <TextLink link={{ label: `Open in ${provider.name}`, href: mapPageUrl(props), external: true, target: \"_blank\" }} ctx={ctx} className=\"text-sm font-medium underline\" />\n </div>\n </div>\n </div>\n );\n const copy = (\n <div className=\"flex flex-col gap-4\">\n {props.eyebrow ? <p className=\"text-sm font-semibold uppercase tracking-wider\">{props.eyebrow}</p> : null}\n <SectionTitle ctx={ctx} id={titleId(ctx)} size=\"lg\">\n {props.heading}\n </SectionTitle>\n {props.body ? <p className={inverted ? undefined : \"text-muted-foreground\"}>{props.body}</p> : null}\n <address className=\"flex flex-col not-italic\">\n {props.address.map((line, i) => (\n <span key={i} className={i === 0 ? \"font-semibold\" : undefined}>\n {line}\n </span>\n ))}\n </address>\n {props.contact.length ? (\n <ul className=\"flex flex-col gap-1\">\n {props.contact.map((link, i) => (\n <li key={i}>\n <TextLink link={link} ctx={ctx} className=\"underline\" />\n </li>\n ))}\n </ul>\n ) : null}\n <Actions primary={props.primaryCta} secondary={props.secondaryCta} ctx={ctx} onAccent={inverted} />\n </div>\n );\n if (variant === \"stacked\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} width=\"md\">\n <div className=\"flex flex-col gap-8\">\n {copy}\n {map}\n </div>\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n <div className=\"grid items-center gap-10 md:grid-cols-2 md:gap-12\">\n {copy}\n {map}\n </div>\n </SectionBand>\n );\n },\n});\n","/**\n * The post: where each blog post's title, date, cover and text go, on the\n * site's post page. On the post page's own path (the blog's index) there is\n * no post, and the section renders nothing.\n */\nimport { z } from \"zod\";\nimport { ArrowLeft } from \"lucide-react\";\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, Surface } from \"../core/schemas\";\nimport { formatPostDate } from \"./blog-list\";\nimport { SectionBand, SectionTitle, SiteImage, onAccent, titleId } from \"./shared\";\n\nconst schema = z.object({\n showCover: z.boolean().default(true),\n showAuthor: z.boolean().default(true),\n showDate: z.boolean().default(true),\n /** The link back to the blog's index above the title. Empty for none. */\n backLabel: Line(40).optional().default(\"All posts\"),\n surface: Surface.default(\"base\"),\n});\n\nexport const postBodySection = defineSection({\n type: \"post-body\",\n version: 1,\n label: \"Post\",\n description: \"Where each blog post goes on the post page: its title, date, author, cover and text.\",\n category: \"content\",\n limit: 1,\n providesH1: true,\n enabledOn: [\"post\"],\n schema,\n variants: [\n { id: \"article\", label: \"Article\" },\n { id: \"cover\", label: \"Title over the cover\" },\n ],\n defaultVariant: \"article\",\n presets: [\n { name: \"Article\", variant: \"article\", props: {} },\n { name: \"Title over the cover\", variant: \"cover\", props: { surface: \"base\" } },\n ],\n render: ({ props, variant, node, ctx }) => {\n const post = ctx.posts?.current;\n // The blog's index (no post): nothing here, and the page's h1 goes elsewhere.\n if (!post || !ctx.posts) return null;\n const d = post.doc;\n const date = props.showDate ? formatPostDate(post.publishedAt, ctx.site.lang) : \"\";\n const author = props.showAuthor ? d.author?.name : undefined;\n const inverted = onAccent(props.surface);\n const back = props.backLabel ? (\n <a\n href={ctx.href(ctx.posts.path)}\n className=\"inline-flex min-h-11 items-center gap-2 rounded-sm text-sm font-medium underline-offset-4 hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring\"\n >\n <ArrowLeft aria-hidden=\"true\" className=\"size-4\" />\n {props.backLabel}\n </a>\n ) : null;\n const meta =\n date || author ? (\n <p className={cn(\"flex flex-wrap gap-x-3 text-sm\", !inverted && variant !== \"cover\" && \"text-muted-foreground\")}>\n {author ? <span>By {author}</span> : null}\n {date ? <time dateTime={post.publishedAt}>{date}</time> : null}\n </p>\n ) : null;\n const title = (\n <SectionTitle ctx={ctx} id={titleId(ctx)} size=\"lg\">\n {d.title}\n </SectionTitle>\n );\n const body = (\n <RichTextView\n value={d.body as unknown as RichTextDoc}\n headingLevels={ctx.headingLevel === 1 ? [2, 3, 4] : [3, 4]}\n className={cn(richTextClassName, \"text-base sm:text-lg [&_h2]:font-display [&_h2]:text-2xl [&_h3]:font-display [&_h3]:text-xl\")}\n />\n );\n\n if (variant === \"cover\" && d.cover && props.showCover) {\n return (\n <article aria-labelledby={titleId(ctx)} data-gs-section={node.type} data-gs-variant={node.variant}>\n <SectionBand node={node} ctx={ctx} surface=\"inverse\" spacing=\"lg\" labelled={false} className=\"isolate overflow-hidden\">\n <SiteImage image={{ ...d.cover, decorative: true }} ctx={ctx} priority sizes=\"100vw\" className=\"absolute inset-0 -z-10 h-full w-full object-cover\" />\n <div aria-hidden=\"true\" className=\"absolute inset-0 -z-10 bg-foreground/80\" />\n <div className=\"mx-auto flex max-w-3xl flex-col gap-4\">\n {back}\n {d.category ? <p className=\"text-sm font-semibold uppercase tracking-wider\">{d.category}</p> : null}\n {title}\n {meta}\n </div>\n </SectionBand>\n <SectionBand node={node} ctx={ctx} surface={props.surface} width=\"prose\" labelled={false}>\n {body}\n </SectionBand>\n </article>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} surface={props.surface} width=\"prose\" labelled={false}>\n <article aria-labelledby={titleId(ctx)} className=\"flex flex-col gap-6\">\n <div className=\"flex flex-col gap-4\">\n {back}\n {d.category ? <p className=\"text-sm font-semibold uppercase tracking-wider\">{d.category}</p> : null}\n {title}\n {meta}\n </div>\n {props.showCover && d.cover ? <SiteImage image={d.cover} ctx={ctx} priority sizes=\"(min-width: 768px) 48rem, 100vw\" className=\"aspect-[16/9] w-full rounded-xl object-cover\" /> : null}\n {body}\n </article>\n </SectionBand>\n );\n },\n});\n","/**\n * The weekly timetable: classes by time and day, with their coach and\n * where they meet.\n *\n * - `grid`: on wider screens an accessible table (a caption, a header cell\n * per day and per time, an empty slot said as \"No class\"); on a phone a\n * day picker (radio buttons, one day's classes at a time) that needs no\n * script: the stylesheet shows the day whose radio is checked, and shows\n * every day where the browser can't.\n * - `agenda`: day by day, every day shown, at every width.\n */\nimport { z } from \"zod\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection, type RenderContext } from \"../core/registry\";\nimport { Copy, Line, Link, Surface } from \"../core/schemas\";\nimport { Anchor, ItemTitle, SectionBand, SectionIntro, TextLink, onAccent } from \"./shared\";\n\nexport const WEEKDAYS = [\"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\", \"sun\"] as const;\nexport type Weekday = (typeof WEEKDAYS)[number];\nconst Day = z.enum(WEEKDAYS);\n\nconst DAY_NAMES: Record<Weekday, string> = { mon: \"Monday\", tue: \"Tuesday\", wed: \"Wednesday\", thu: \"Thursday\", fri: \"Friday\", sat: \"Saturday\", sun: \"Sunday\" };\nconst DAY_SHORT: Record<Weekday, string> = { mon: \"Mon\", tue: \"Tue\", wed: \"Wed\", thu: \"Thu\", fri: \"Fri\", sat: \"Sat\", sun: \"Sun\" };\n\n/** A time of day, 24-hour: `06:15`, `18:00`. */\nconst Time = z.string().regex(/^([01]\\d|2[0-3]):[0-5]\\d$/, \"A time is HH:MM on the 24-hour clock (06:15, 18:00).\");\nconst TypeId = z.string().regex(/^[a-z0-9][a-z0-9-]{0,39}$/, \"A class type id is lowercase letters, digits and hyphens.\");\n\n/** How a class type's chip is drawn, from the brand's own colours. */\nexport const CHIP_TONES = [\"primary\", \"inverse\", \"soft\", \"outline\", \"plain\"] as const;\n\nconst ClassType = z.object({\n id: TypeId,\n name: Line(60),\n description: Copy(300).optional(),\n tone: z.enum(CHIP_TONES).default(\"soft\"),\n});\n\nconst Session = z.object({\n day: Day,\n start: Time,\n end: Time.optional(),\n title: Line(60),\n /** A class type's id, for its chip colour and the legend. */\n type: TypeId.optional(),\n coach: Line(60).optional(),\n location: Line(60).optional(),\n note: Line(80).optional(),\n /** Book this class (an outbound link, say). */\n link: Link.optional(),\n});\nexport type ScheduleSession = z.infer<typeof Session>;\n\nconst schema = z.object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n /** The days the timetable shows, in order. */\n days: z.array(Day).min(1).max(7).default([...WEEKDAYS]),\n /** Day names in the site's language (default English). */\n dayNames: z.partialRecord(Day, Line(20)).optional(),\n clock: z.enum([\"12h\", \"24h\"]).default(\"12h\"),\n types: z.array(ClassType).max(16).default([]),\n sessions: z.array(Session).max(200),\n /** What an empty slot or day says. */\n emptyText: Line(60).default(\"No classes\"),\n footnote: Copy(300).optional(),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\ntype Props = z.infer<typeof schema>;\n\n/**\n * Colour tells the types apart at a glance, never alone: every chip names its\n * type in text, and the two bordered tones differ in pattern (dashed and\n * solid), not only in the border's colour.\n */\nconst TONE: Record<(typeof CHIP_TONES)[number], string> = {\n primary: \"bg-primary text-primary-foreground\",\n inverse: \"bg-foreground text-background\",\n soft: \"bg-muted text-foreground\",\n outline: \"border-2 border-dashed border-primary text-foreground\",\n plain: \"border border-solid border-border text-foreground\",\n};\n\n/** `06:15` as the page says it: `6:15 am` or `06:15`. */\nexport function formatTime(time: string, clock: \"12h\" | \"24h\"): string {\n if (clock === \"24h\") return time;\n const [h, m] = time.split(\":\").map(Number) as [number, number];\n const suffix = h < 12 ? \"am\" : \"pm\";\n const hour = h % 12 === 0 ? 12 : h % 12;\n return `${hour}:${String(m).padStart(2, \"0\")} ${suffix}`;\n}\n\nfunction TimeText({ start, end, clock }: { start: string; end?: string | undefined; clock: Props[\"clock\"] }) {\n return (\n <>\n <time dateTime={start}>{formatTime(start, clock)}</time>\n {end ? (\n <>\n {\" to \"}\n <time dateTime={end}>{formatTime(end, clock)}</time>\n </>\n ) : null}\n </>\n );\n}\n\n/** A class, in its type's chip: the title, and the type's name as text (unless the title already is it). */\nfunction Chip({ session, types }: { session: ScheduleSession; types: Map<string, Props[\"types\"][number]> }) {\n const type = session.type ? types.get(session.type) : undefined;\n const tone = type?.tone ?? \"soft\";\n const named = type && type.name.trim().toLowerCase() !== session.title.trim().toLowerCase();\n return (\n <span data-type={type?.id} className={cn(\"inline-flex flex-col rounded-md px-2 py-1 text-sm font-semibold leading-tight\", TONE[tone])}>\n {session.title}\n {named ? <span className=\"text-xs font-medium\">{type.name}</span> : null}\n </span>\n );\n}\n\n/** Coach, place and note, as one quiet line. */\nfunction Details({ session, muted }: { session: ScheduleSession; muted: boolean }) {\n const parts = [session.coach ? `with ${session.coach}` : null, session.location, session.note].filter(Boolean);\n if (!parts.length) return null;\n return <span className={cn(\"block text-xs\", muted && \"text-muted-foreground\")}>{parts.join(\" · \")}</span>;\n}\n\nfunction SessionItem({ session, props, types, ctx, withTime }: { session: ScheduleSession; props: Props; types: Map<string, Props[\"types\"][number]>; ctx: RenderContext; withTime: boolean }) {\n return (\n <li className=\"flex flex-col gap-1\">\n {withTime ? (\n <span className=\"text-sm font-semibold tabular-nums\">\n <TimeText start={session.start} end={session.end} clock={props.clock} />\n </span>\n ) : null}\n <span>\n <Chip session={session} types={types} />\n </span>\n <Details session={session} muted />\n {session.link ? <TextLink link={session.link} ctx={ctx} className=\"text-sm font-medium underline\" /> : null}\n </li>\n );\n}\n\nconst byTime = (a: ScheduleSession, b: ScheduleSession) => a.start.localeCompare(b.start) || a.title.localeCompare(b.title);\n\n/** One day's classes, as a list, or the empty text. */\nfunction DayList({ day, props, types, ctx, id }: { day: Weekday; props: Props; types: Map<string, Props[\"types\"][number]>; ctx: RenderContext; id: string }) {\n const sessions = props.sessions.filter((s) => s.day === day).sort(byTime);\n return (\n <section aria-labelledby={id} className=\"flex flex-col gap-3\">\n <ItemTitle ctx={ctx} className=\"text-base\">\n <span id={id}>{props.dayNames?.[day] ?? DAY_NAMES[day]}</span>\n </ItemTitle>\n {sessions.length ? (\n <ul className=\"flex flex-col gap-4\">\n {sessions.map((s, i) => (\n <SessionItem key={i} session={s} props={props} types={types} ctx={ctx} withTime />\n ))}\n </ul>\n ) : (\n <p className=\"text-sm text-muted-foreground\">{props.emptyText}</p>\n )}\n </section>\n );\n}\n\n/** A day's short name on screen (\"Mon\"), its whole name to a screen reader; a custom name as it is. */\nfunction DayLabel({ day, props }: { day: Weekday; props: Props }) {\n const custom = props.dayNames?.[day];\n if (custom) return <>{custom}</>;\n return (\n <>\n <span aria-hidden=\"true\">{DAY_SHORT[day]}</span>\n <span className=\"sr-only\">{DAY_NAMES[day]}</span>\n </>\n );\n}\n\n/** Every class type the shown days use, described or not, in the order the types are listed. */\nfunction Legend({ props, days }: { props: Props; days: readonly Weekday[] }) {\n const used = new Set(props.sessions.filter((s) => s.type && days.includes(s.day)).map((s) => s.type));\n const shown = props.types.filter((t) => used.has(t.id));\n if (!shown.length) return null;\n return (\n // A list, not a <dl>: a type with no description has nothing to pair with.\n <ul aria-label=\"Class types\" className=\"mt-8 grid gap-4 sm:grid-cols-2\">\n {shown.map((t) => (\n <li key={t.id} className=\"flex flex-col items-start gap-1\">\n <span className={cn(\"inline-flex rounded-md px-2 py-1 text-sm font-semibold\", TONE[t.tone])}>{t.name}</span>\n {t.description ? <span className=\"text-sm\">{t.description}</span> : null}\n </li>\n ))}\n </ul>\n );\n}\n\nexport const scheduleSection = defineSection({\n type: \"schedule\",\n version: 1,\n label: \"Timetable\",\n description: \"The week's classes by time and day, with coach and place: a table on wider screens and a day picker on a phone.\",\n category: \"content\",\n schema,\n variants: [\n { id: \"grid\", label: \"Week grid (day picker on a phone)\" },\n { id: \"agenda\", label: \"Day by day\" },\n ],\n defaultVariant: \"grid\",\n presets: [\n {\n name: \"Weekly timetable\",\n variant: \"grid\",\n props: {\n heading: \"Class times\",\n types: [\n { id: \"strength\", name: \"Strength\", description: \"Barbell work in a coached group.\", tone: \"primary\" },\n { id: \"open\", name: \"Open gym\", description: \"Train on your own; a coach is on the floor.\", tone: \"soft\" },\n ],\n sessions: [\n { day: \"mon\", start: \"06:00\", title: \"Strength\", type: \"strength\", coach: \"Coach name\" },\n { day: \"wed\", start: \"06:00\", title: \"Strength\", type: \"strength\", coach: \"Coach name\" },\n { day: \"sat\", start: \"09:00\", title: \"Open gym\", type: \"open\" },\n ],\n },\n },\n {\n name: \"Day by day\",\n variant: \"agenda\",\n props: { heading: \"This week\", days: [\"mon\", \"tue\", \"wed\", \"thu\", \"fri\"], sessions: [{ day: \"mon\", start: \"18:00\", end: \"19:00\", title: \"Class name\" }] },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const types = new Map(props.types.map((t) => [t.id, t]));\n const days = props.days.filter((d, i, all) => all.indexOf(d) === i);\n const intro = <SectionIntro ctx={ctx} eyebrow={props.eyebrow} heading={props.heading} body={props.body} tone={inverted ? \"inherit\" : \"muted\"} />;\n const footer = (\n <>\n <Legend props={props} days={days} />\n {props.footnote ? <p className=\"mt-6 text-sm\">{props.footnote}</p> : null}\n </>\n );\n const card = \"rounded-xl border border-border bg-background p-4 text-foreground sm:p-6\";\n\n if (variant === \"agenda\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <div className={cn(\"mt-10 grid gap-6 sm:grid-cols-2 lg:grid-cols-4\", card)}>\n {days.map((day) => (\n <DayList key={day} day={day} props={props} types={types} ctx={ctx} id={`${ctx.idPrefix}-${day}`} />\n ))}\n </div>\n {footer}\n </SectionBand>\n );\n }\n\n const times = [...new Set(props.sessions.filter((s) => days.includes(s.day)).map((s) => s.start))].sort();\n const name = (day: Weekday) => props.dayNames?.[day] ?? DAY_NAMES[day];\n const caption = `${props.heading}: classes by time and day`;\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n {/* Wider screens: the week as a table. Scrolls sideways inside its own region when it must. */}\n <div role=\"region\" aria-label={caption} tabIndex={0} className={cn(\"mt-10 overflow-x-auto max-md:hidden\", card)}>\n <table className=\"w-full border-collapse text-left text-sm\">\n <caption className=\"sr-only\">{caption}</caption>\n <thead>\n <tr>\n <th scope=\"col\" className=\"w-24 border-b border-border p-2 font-semibold\">\n Time\n </th>\n {days.map((day) => (\n <th key={day} scope=\"col\" className=\"border-b border-border p-2 font-semibold\">\n <DayLabel day={day} props={props} />\n </th>\n ))}\n </tr>\n </thead>\n <tbody>\n {times.map((time) => (\n <tr key={time} className=\"border-b border-border last:border-b-0\">\n <th scope=\"row\" className=\"whitespace-nowrap p-2 align-top font-semibold tabular-nums\">\n <time dateTime={time}>{formatTime(time, props.clock)}</time>\n </th>\n {days.map((day) => {\n const here = props.sessions.filter((s) => s.day === day && s.start === time).sort(byTime);\n return (\n <td key={day} className=\"p-2 align-top\">\n {here.length ? (\n <ul className=\"flex flex-col gap-2\">\n {here.map((s, i) => (\n <SessionItem key={i} session={s} props={props} types={types} ctx={ctx} withTime={false} />\n ))}\n </ul>\n ) : (\n <>\n <span aria-hidden=\"true\" className=\"text-muted-foreground\">\n ·\n </span>\n <span className=\"sr-only\">{props.emptyText}</span>\n </>\n )}\n </td>\n );\n })}\n </tr>\n ))}\n </tbody>\n </table>\n {times.length === 0 ? <p className=\"p-2 text-sm text-muted-foreground\">{props.emptyText}</p> : null}\n </div>\n {/* A phone: pick a day. Radios and the stylesheet's :has() rules, no script. */}\n <div data-gs-schedule=\"\" className={cn(\"mt-8 md:hidden\", card)}>\n <fieldset className=\"min-w-0\">\n <legend className=\"sr-only\">Show the classes on</legend>\n <div className=\"-mx-1 flex gap-1 overflow-x-auto px-1 pb-2\">\n {days.map((day, i) => (\n <label key={day} className=\"relative shrink-0\">\n <input type=\"radio\" name={`${ctx.idPrefix}-day`} value={day} data-day={i} defaultChecked={i === 0} aria-controls={`${ctx.idPrefix}-panel-${day}`} className=\"peer sr-only\" />\n <span className=\"inline-flex min-h-11 min-w-11 cursor-pointer items-center justify-center rounded-md border border-border px-3 text-sm font-semibold peer-checked:border-primary peer-checked:bg-primary peer-checked:text-primary-foreground peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2 peer-focus-visible:outline-ring\">\n <DayLabel day={day} props={props} />\n </span>\n </label>\n ))}\n </div>\n </fieldset>\n <div className=\"mt-4 flex flex-col gap-8\">\n {days.map((day, i) => (\n <div key={day} id={`${ctx.idPrefix}-panel-${day}`} data-panel={i}>\n <DayList day={day} props={props} types={types} ctx={ctx} id={`${ctx.idPrefix}-${day}`} />\n </div>\n ))}\n </div>\n </div>\n {footer}\n </SectionBand>\n );\n },\n});\n\n","/**\n * The team: people with a photo, a role, credentials, a long bio, a quote\n * and a link of their own.\n *\n * - `cards`: a grid; each card opens its full bio in place (`<details>`,\n * no script).\n * - `list`: one long-form entry per person, the photo beside the bio.\n *\n * A person with a `profile` path links to their own page.\n */\nimport { z } from \"zod\";\nimport { ChevronDown } from \"lucide-react\";\nimport { cn } from \"@marktiderman/genesis-ui/utils\";\nimport { defineSection, type RenderContext } from \"../core/registry\";\nimport { Copy, Href, Image, Line, Link, Surface } from \"../core/schemas\";\nimport { Anchor, ButtonLink, ItemTitle, SectionBand, SectionIntro, SiteImage, TextLink, onAccent } from \"./shared\";\n\nconst Member = z.object({\n name: Line(80),\n role: Line(80).optional(),\n /** Qualifications, as one line (\"Level 2 coach, nutrition coach\"). */\n credentials: Copy(300).optional(),\n photo: Image.optional(),\n /** A line or two, shown on the card. */\n summary: Copy(300).optional(),\n /** The full bio; a blank line starts a new paragraph. */\n bio: Copy(6000).optional(),\n quote: z.object({ text: Copy(400).min(1), cite: Line(80).optional() }).optional(),\n /** Their own page (a site path). */\n profile: Href.optional(),\n cta: Link.optional(),\n /** An id for a link straight to this person (`#sam-lee`). */\n anchor: Anchor,\n});\ntype Member = z.infer<typeof Member>;\n\nconst schema = z.object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n members: z.array(Member).min(1).max(40),\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\nfunction Paragraphs({ text, className }: { text: string; className?: string }) {\n return (\n <div className={cn(\"flex flex-col gap-3\", className)}>\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\nfunction Quote({ quote, muted }: { quote: NonNullable<Member[\"quote\"]>; muted: boolean }) {\n return (\n <figure className=\"border-l-4 border-primary pl-4\">\n <blockquote className=\"italic\">\n <p>{quote.text}</p>\n </blockquote>\n {quote.cite ? <figcaption className={cn(\"mt-1 text-sm\", muted && \"text-muted-foreground\")}>{quote.cite}</figcaption> : null}\n </figure>\n );\n}\n\nfunction MemberLinks({ member, ctx }: { member: Member; ctx: RenderContext }) {\n if (!member.cta && !member.profile) return null;\n return (\n <div className=\"flex flex-wrap items-center gap-4\">\n {member.cta ? <ButtonLink link={member.cta} ctx={ctx} tone=\"outline\" /> : null}\n {member.profile ? <TextLink link={{ label: `${member.name}'s page`, href: member.profile }} ctx={ctx} className=\"font-medium underline\" /> : null}\n </div>\n );\n}\n\nexport const teamSection = defineSection({\n type: \"team\",\n version: 1,\n label: \"Team\",\n description: \"Your coaches or staff: a photo, a role, credentials and a long bio that opens in place, with a link to each person's page.\",\n category: \"content\",\n schema,\n variants: [\n { id: \"cards\", label: \"Cards (bio opens in place)\" },\n { id: \"list\", label: \"Long-form list\" },\n ],\n defaultVariant: \"cards\",\n presets: [\n {\n name: \"Team cards\",\n variant: \"cards\",\n props: {\n heading: \"Meet the coaches\",\n members: [\n { name: \"Coach name\", role: \"Head coach\", summary: \"A line about what they love to coach.\", bio: \"Their story, in a few short paragraphs.\\n\\nWhat they love about coaching.\" },\n { name: \"Coach name\", role: \"Coach\", summary: \"A line about what they love to coach.\" },\n ],\n },\n },\n {\n name: \"Team list\",\n variant: \"list\",\n props: { heading: \"The team\", members: [{ name: \"Coach name\", credentials: \"Their qualifications\", bio: \"Their story, in a few short paragraphs.\" }] },\n },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const muted = !inverted;\n const intro = <SectionIntro ctx={ctx} eyebrow={props.eyebrow} heading={props.heading} body={props.body} tone={inverted ? \"inherit\" : \"muted\"} />;\n\n if (variant === \"list\") {\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-16\">\n {props.members.map((m, i) => (\n <li key={i} {...(m.anchor ? { id: m.anchor } : {})} className={cn(\"grid gap-6 md:grid-cols-[minmax(0,16rem)_1fr] md:gap-10\", m.anchor && \"scroll-mt-20\")}>\n <div className=\"flex flex-col gap-3\">\n {m.photo ? <SiteImage image={m.photo} ctx={ctx} sizes=\"(min-width: 768px) 16rem, 100vw\" className=\"aspect-square w-full max-w-64 rounded-xl object-cover\" /> : null}\n <ItemTitle ctx={ctx} className=\"text-2xl\">\n {m.name}\n </ItemTitle>\n {m.role ? <p className=\"font-medium\">{m.role}</p> : null}\n {m.credentials ? <p className={cn(\"text-sm font-semibold uppercase tracking-wide\", muted && \"text-muted-foreground\")}>{m.credentials}</p> : null}\n </div>\n <div className=\"flex flex-col gap-5\">\n {m.bio ? <Paragraphs text={m.bio} /> : m.summary ? <p>{m.summary}</p> : null}\n {m.quote ? <Quote quote={m.quote} muted={muted} /> : null}\n <MemberLinks member={m} ctx={ctx} />\n </div>\n </li>\n ))}\n </ul>\n </SectionBand>\n );\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.members.map((m, i) => (\n <li key={i} {...(m.anchor ? { id: m.anchor } : {})} className={cn(\"flex flex-col gap-4 rounded-xl border border-border bg-background p-6 text-foreground\", m.anchor && \"scroll-mt-20\")}>\n {m.photo ? <SiteImage image={m.photo} ctx={ctx} sizes=\"(min-width: 1024px) 25vw, (min-width: 640px) 50vw, 100vw\" className=\"aspect-square w-full rounded-lg object-cover\" /> : null}\n <div className=\"flex flex-col gap-1\">\n <ItemTitle ctx={ctx}>{m.name}</ItemTitle>\n {m.role ? <p className=\"text-sm font-medium\">{m.role}</p> : null}\n {m.credentials ? <p className=\"text-xs font-semibold uppercase tracking-wide text-muted-foreground\">{m.credentials}</p> : null}\n </div>\n {m.summary ? <p className=\"text-muted-foreground\">{m.summary}</p> : null}\n {m.bio || m.quote ? (\n // The full bio, in place: a disclosure that needs no script.\n <details className=\"group\">\n {/* The layout is on the span: a flex <summary> loses its expanded state in some screen readers. */}\n <summary className=\"cursor-pointer list-none rounded-sm font-medium underline-offset-4 hover:underline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-ring [&::-webkit-details-marker]:hidden\">\n <span className=\"flex min-h-11 items-center justify-between gap-2\">\n <span>More about {m.name}</span>\n <ChevronDown aria-hidden=\"true\" className=\"size-5 shrink-0 transition-transform group-open:rotate-180 motion-reduce:transition-none\" />\n </span>\n </summary>\n <div className=\"flex flex-col gap-4 pt-3\">\n {m.bio ? <Paragraphs text={m.bio} /> : null}\n {m.quote ? <Quote quote={m.quote} muted /> : null}\n </div>\n </details>\n ) : null}\n <div className=\"mt-auto\">\n <MemberLinks member={m} ctx={ctx} />\n </div>\n </li>\n ))}\n </ul>\n </SectionBand>\n );\n },\n});\n","/**\n * A programme in order: the steps of a six-week course, an event's agenda, a\n * history. Each step has a label (a date, \"Week 1\"), a title, a line of copy\n * and, if it needs one, a picture and a button. An ordered list, so a screen\n * reader says how many steps there are and which one it is on.\n */\nimport { 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, ButtonLink, ItemTitle, SectionBand, SectionIntro, SiteImage, onAccent } from \"./shared\";\n\nconst Step = z.object({\n /** When or which: \"Oct 4\", \"Week 1\", \"Day 3\". */\n label: Line(40).optional(),\n title: Line(90),\n body: Copy(600).optional(),\n image: Image.optional(),\n cta: Link.optional(),\n});\n\nconst schema = z.object({\n eyebrow: Line(60).optional(),\n heading: Line(90),\n body: Copy(320).optional(),\n steps: z.array(Step).min(1).max(30),\n /** Show each step's number (on screen; a screen reader counts the list itself). */\n numbered: z.boolean().default(true),\n surface: Surface.default(\"base\"),\n anchor: Anchor,\n});\n\nconst number = (i: number) => String(i + 1).padStart(2, \"0\");\n\nexport const timelineSection = defineSection({\n type: \"timeline\",\n version: 1,\n label: \"Timeline\",\n description: \"A programme in order (a six-week course, an agenda): each step with a date or label, a title, copy and an optional button.\",\n category: \"content\",\n schema,\n variants: [\n { id: \"vertical\", label: \"Down a line\" },\n { id: \"cards\", label: \"Cards in a grid\" },\n ],\n defaultVariant: \"vertical\",\n presets: [\n {\n name: \"Week by week\",\n variant: \"vertical\",\n props: {\n heading: \"Week by week\",\n steps: [\n { label: \"Week 1\", title: \"Start\", body: \"What happens in the first week.\" },\n { label: \"Week 2\", title: \"Build\", body: \"What comes next.\" },\n { label: \"Week 3\", title: \"Test\", body: \"How it ends.\" },\n ],\n },\n },\n { name: \"Steps as cards\", variant: \"cards\", props: { heading: \"How it works\", steps: [{ title: \"First step\" }, { title: \"Second step\" }, { title: \"Third step\" }] } },\n ],\n render: ({ props, variant, node, ctx }) => {\n const inverted = onAccent(props.surface);\n const muted = !inverted;\n const intro = <SectionIntro ctx={ctx} eyebrow={props.eyebrow} heading={props.heading} body={props.body} tone={inverted ? \"inherit\" : \"muted\"} />;\n\n if (variant === \"cards\") {\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface}>\n {intro}\n <ol className=\"mt-12 grid gap-6 sm:grid-cols-2 lg:grid-cols-3\">\n {props.steps.map((step, i) => (\n <li key={i} className=\"flex flex-col gap-3 rounded-xl border border-border bg-background p-6 text-foreground\">\n {step.image ? <SiteImage image={step.image} ctx={ctx} sizes=\"(min-width: 1024px) 33vw, (min-width: 640px) 50vw, 100vw\" className=\"aspect-video w-full rounded-lg object-cover\" /> : null}\n <p className=\"flex items-baseline gap-3 text-sm font-semibold\">\n {props.numbered ? (\n <span aria-hidden=\"true\" className=\"font-display text-2xl\">\n {number(i)}\n </span>\n ) : null}\n {step.label ? <span className=\"uppercase tracking-wide text-muted-foreground\">{step.label}</span> : null}\n </p>\n <ItemTitle ctx={ctx}>{step.title}</ItemTitle>\n {step.body ? <p className=\"text-muted-foreground\">{step.body}</p> : null}\n {step.cta ? <ButtonLink link={step.cta} ctx={ctx} tone=\"outline\" className=\"mt-auto self-start\" /> : null}\n </li>\n ))}\n </ol>\n </SectionBand>\n );\n }\n return (\n <SectionBand node={node} ctx={ctx} anchor={props.anchor} surface={props.surface} width=\"md\">\n {intro}\n <ol className=\"mx-auto mt-12 flex max-w-3xl flex-col\">\n {props.steps.map((step, i) => (\n <li key={i} className=\"relative grid grid-cols-[2.75rem_1fr] gap-x-4 pb-10 last:pb-0\">\n {/* The line between markers: drawn, not read. */}\n {i < props.steps.length - 1 ? <span aria-hidden=\"true\" className=\"absolute left-[1.375rem] top-11 bottom-0 w-px -translate-x-1/2 bg-border\" /> : null}\n {/* The marker is drawn, not read: the ordered list says which step this is. Unnumbered, it\n still shows a dot in the marker's text colour, so it never rests on the fill colour alone. */}\n <span\n aria-hidden=\"true\"\n data-marker=\"\"\n className={cn(\"z-10 inline-flex size-11 items-center justify-center rounded-full text-sm font-bold\", inverted ? \"bg-background text-foreground\" : \"bg-primary text-primary-foreground\")}\n >\n {props.numbered ? number(i) : <span className=\"size-3 rounded-full bg-current\" />}\n </span>\n <div className=\"flex flex-col gap-2 pt-2\">\n {step.label ? <p className={cn(\"text-sm font-semibold uppercase tracking-wide\", muted && \"text-muted-foreground\")}>{step.label}</p> : null}\n <ItemTitle ctx={ctx}>{step.title}</ItemTitle>\n {step.body ? <p className={muted ? \"text-muted-foreground\" : undefined}>{step.body}</p> : null}\n {step.image ? <SiteImage image={step.image} ctx={ctx} sizes=\"(min-width: 768px) 40rem, 100vw\" className=\"mt-2 aspect-video w-full rounded-lg object-cover\" /> : null}\n {step.cta ? <ButtonLink link={step.cta} ctx={ctx} tone={inverted ? \"inverse\" : \"outline\"} className=\"mt-2 self-start\" /> : null}\n </div>\n </li>\n ))}\n </ol>\n </SectionBand>\n );\n },\n});\n","/**\n * @marktiderman/genesis-sites/sections: the built-in section catalog.\n *\n * Importing this module registers the 20 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\";\nimport { blogListSection } from \"./blog-list\";\nimport { fileSection } from \"./file\";\nimport { mapSection } from \"./map\";\nimport { postBodySection } from \"./post-body\";\nimport { scheduleSection } from \"./schedule\";\nimport { teamSection } from \"./team\";\nimport { timelineSection } from \"./timeline\";\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 scheduleSection,\n teamSection,\n blogListSection,\n postBodySection,\n mapSection,\n timelineSection,\n fileSection,\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 scheduleSection,\n teamSection,\n blogListSection,\n postBodySection,\n mapSection,\n timelineSection,\n fileSection,\n};\nexport { formatTime, WEEKDAYS, CHIP_TONES, type ScheduleSession, type Weekday } from \"./schedule\";\nexport { formatPostDate } from \"./blog-list\";\nexport { MAP_PROVIDERS, mapEmbedUrl, mapPageUrl, type MapProvider } from \"./map\";\nexport { ICONS, IconName, Anchor, ButtonLink, TextLink, SiteImage, SectionBand, SectionIntro, SectionTitle, ItemTitle, HiddenTitle, resolveHref, linkAttrs, fileDescription, fileHref, titleId } from \"./shared\";\nexport { SiteFormHeader, siteFormSlots } from \"./form-header\";\n"]}