@techrox/page-studio-blocks 1.1.0 → 1.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.cjs +1768 -565
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +1759 -560
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
- package/src/styles.css +97 -1
package/dist/index.cjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.js","../src/context.jsx","../src/blocks/Hero.jsx","../src/blocks/StatsStrip.jsx","../src/blocks/SectionHeader.jsx","../src/blocks/RichText.jsx","../src/blocks/PillarsRow.jsx","../src/blocks/ApproachSteps.jsx","../src/blocks/ServicesGrid.jsx","../src/blocks/CTABanner.jsx","../src/blocks/PrinciplesList.jsx","../src/blocks/TwoColumn.jsx","../src/blocks/Spacer.jsx","../src/blocks/RawHtml.jsx","../src/blocks/ContactSection.jsx","../src/blocks/ImageText.jsx","../src/blocks/VideoEmbed.jsx","../src/blocks/LogoStrip.jsx","../src/blocks/TestimonialQuote.jsx","../src/blocks/TestimonialGrid.jsx","../src/blocks/FAQ.jsx","../src/blocks/Timeline.jsx","../src/blocks/NewsletterSignup.jsx","../src/blocks/TeamGrid.jsx","../src/blocks/Banner.jsx","../src/blocks/ArticleFeatured.jsx","../src/blocks/ArticleGrid.jsx","../src/blocks/ArticleList.jsx","../src/blocks/IconCards.jsx","../src/blocks/MetricCards.jsx","../src/blocks/ImageOverlayCards.jsx","../src/blocks/PricingTable.jsx","../src/blocks/PricingComparison.jsx","../src/blocks/AwardsBar.jsx","../src/blocks/CountUpStats.jsx","../src/blocks/ImageGallery.jsx","../src/blocks/ImageCaption.jsx","../src/blocks/InlineCTA.jsx","../src/blocks/AnnouncementBar.jsx","../src/blocks/Quote.jsx","../src/blocks/CodeBlock.jsx","../src/blocks/KeyValueList.jsx","../src/blocks/StepsVertical.jsx","../src/blocks/Tabs.jsx","../src/blocks/AccordionBlock.jsx","../src/blocks/SocialLinks.jsx","../src/blocks/ContactInfo.jsx","../src/blocks/MapEmbed.jsx","../src/blocks/EventsList.jsx","../src/blocks/Divider.jsx","../src/blocks/ThreeColumn.jsx","../src/blocks/PressMentions.jsx","../src/blocks/Container.jsx","../src/withReveal.jsx","../src/BlockThumbnail.jsx","../src/config.jsx"],"sourcesContent":["// Public surface for @techrox/page-studio-blocks.\n//\n// Three groups of exports:\n// 1. The Puck config builder + defaults (what most consumers want).\n// 2. The block dictionary + helpers, for fine-grained extension.\n// 3. The context provider + hook, for hosts that inject Link, services,\n// analytics, etc. into the block tree.\n\nexport {\n createPuckConfig,\n defaultBlocks,\n defaultCategories,\n defaultOverrides,\n emptyPuckData,\n normalizePuckData,\n applyConfigDefaults,\n} from './config.jsx';\n\nexport { PageStudioProvider, useStudio, StudioLink } from './context.jsx';\n\nexport { withReveal } from './withReveal.jsx';\n\nexport {\n default as BlockThumbnail,\n BLOCK_DESCRIPTIONS,\n} from './BlockThumbnail.jsx';\n\n// Re-export every block by name so consumers can cherry-pick. Importing the\n// whole library is fine in practice — tsup tree-shakes anything not reached\n// by the consumer's import graph.\nexport { Hero } from './blocks/Hero.jsx';\nexport { SectionHeader } from './blocks/SectionHeader.jsx';\nexport { CTABanner } from './blocks/CTABanner.jsx';\nexport { Banner } from './blocks/Banner.jsx';\nexport { RichText } from './blocks/RichText.jsx';\nexport { PrinciplesList } from './blocks/PrinciplesList.jsx';\nexport { TwoColumn } from './blocks/TwoColumn.jsx';\nexport { ImageText } from './blocks/ImageText.jsx';\nexport { StatsStrip } from './blocks/StatsStrip.jsx';\nexport { PillarsRow } from './blocks/PillarsRow.jsx';\nexport { ApproachSteps } from './blocks/ApproachSteps.jsx';\nexport { ServicesGrid } from './blocks/ServicesGrid.jsx';\nexport { TeamGrid } from './blocks/TeamGrid.jsx';\nexport { LogoStrip } from './blocks/LogoStrip.jsx';\nexport { TestimonialQuote } from './blocks/TestimonialQuote.jsx';\nexport { TestimonialGrid } from './blocks/TestimonialGrid.jsx';\nexport { FAQ } from './blocks/FAQ.jsx';\nexport { Timeline } from './blocks/Timeline.jsx';\nexport { VideoEmbed } from './blocks/VideoEmbed.jsx';\nexport { ContactSection } from './blocks/ContactSection.jsx';\nexport { NewsletterSignup } from './blocks/NewsletterSignup.jsx';\nexport { ArticleFeatured } from './blocks/ArticleFeatured.jsx';\nexport { ArticleGrid } from './blocks/ArticleGrid.jsx';\nexport { ArticleList } from './blocks/ArticleList.jsx';\nexport { IconCards } from './blocks/IconCards.jsx';\nexport { MetricCards } from './blocks/MetricCards.jsx';\nexport { ImageOverlayCards } from './blocks/ImageOverlayCards.jsx';\nexport { PricingTable } from './blocks/PricingTable.jsx';\nexport { PricingComparison } from './blocks/PricingComparison.jsx';\nexport { AwardsBar } from './blocks/AwardsBar.jsx';\nexport { CountUpStats } from './blocks/CountUpStats.jsx';\nexport { ImageGallery } from './blocks/ImageGallery.jsx';\nexport { ImageCaption } from './blocks/ImageCaption.jsx';\nexport { InlineCTA } from './blocks/InlineCTA.jsx';\nexport { AnnouncementBar } from './blocks/AnnouncementBar.jsx';\nexport { Quote } from './blocks/Quote.jsx';\nexport { CodeBlock } from './blocks/CodeBlock.jsx';\nexport { KeyValueList } from './blocks/KeyValueList.jsx';\nexport { StepsVertical } from './blocks/StepsVertical.jsx';\nexport { TabsBlock } from './blocks/Tabs.jsx';\nexport { AccordionBlock } from './blocks/AccordionBlock.jsx';\nexport { SocialLinks } from './blocks/SocialLinks.jsx';\nexport { ContactInfo } from './blocks/ContactInfo.jsx';\nexport { MapEmbed } from './blocks/MapEmbed.jsx';\nexport { EventsList } from './blocks/EventsList.jsx';\nexport { Divider } from './blocks/Divider.jsx';\nexport { ThreeColumn } from './blocks/ThreeColumn.jsx';\nexport { PressMentions } from './blocks/PressMentions.jsx';\nexport { Container } from './blocks/Container.jsx';\nexport { Spacer } from './blocks/Spacer.jsx';\nexport { RawHtml } from './blocks/RawHtml.jsx';\n","// StudioContext — the single dependency-injection surface that block components\n// read from. Lets blocks stay framework-agnostic: a Next.js host can pass\n// `next/link`; a Vite host can pass a React Router `Link`; a server-only\n// renderer can leave it unset and fall back to plain `<a>`.\n//\n// Design rule: every entry in `StudioContextValue` MUST have a sensible\n// no-op default so a block can be used without the host configuring anything.\n\nimport { createContext, useContext } from 'react';\n\nconst DefaultLink = ({ href, children, ...rest }) => (\n <a href={href} {...rest}>{children}</a>\n);\n\nconst noop = () => {};\n\nconst notConfigured = (name) => async () => {\n throw new Error(\n `[page-studio] ${name}() called but no implementation was provided via <PageStudioProvider>.`,\n );\n};\n\nconst DEFAULTS = {\n // Framework-agnostic link component. Host passes next/link, RR Link, etc.\n Link: DefaultLink,\n // Site-wide brand/contact metadata. Read by blocks that surface contact info.\n site: { email: '', phone: '', social: {} },\n // Service / product catalogue. Used by ServicesGrid and ContactSection's\n // \"areas of interest\" select. Default: empty so blocks render gracefully.\n services: [],\n // Async function the form blocks call to submit a lead. Throws by default\n // — surfaces a clear message instead of failing silently if a host\n // accidentally drops a ContactSection on a page without wiring submitLead.\n submitLead: notConfigured('submitLead'),\n // Same shape — newsletter signups. Hosts can point both at the same backend.\n subscribeNewsletter: notConfigured('subscribeNewsletter'),\n // First-party analytics hook. Default no-op so dropping an instrumented\n // block in a host that doesn't track anything is silent.\n track: noop,\n};\n\nconst StudioContext = createContext(DEFAULTS);\n\nexport function PageStudioProvider({ value, children }) {\n const merged = { ...DEFAULTS, ...(value || {}) };\n return <StudioContext.Provider value={merged}>{children}</StudioContext.Provider>;\n}\n\nexport function useStudio() {\n return useContext(StudioContext);\n}\n\n// Convenience wrapper so block code can do\n// import { StudioLink as Link } from '../StudioLink';\n// and keep their JSX virtually unchanged.\nexport function StudioLink({ href, children, ...rest }) {\n const { Link } = useStudio();\n return <Link href={href} {...rest}>{children}</Link>;\n}\n","// Hero block — eyebrow + heading (HTML allowed) + lede + two CTAs.\n// Two visual variants:\n// - 'landing' (default): uses .tps-hero with the radial-gradient halo,\n// dot pattern, and bigger padding — matches the original landing page\n// hero so visitors see no visual shift after admin saves in Puck.\n// - 'simple': plain section padding for sub-page heroes.\n\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const Hero = {\n label: 'Hero',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading_html: {\n type: 'textarea',\n label: 'Heading (HTML allowed)',\n },\n lede: { type: 'textarea', label: 'Lede' },\n primary_cta_label: { type: 'text', label: 'Primary button label' },\n primary_cta_href: { type: 'text', label: 'Primary button link' },\n secondary_cta_label: { type: 'text', label: 'Secondary button label' },\n secondary_cta_href: { type: 'text', label: 'Secondary button link' },\n align: {\n type: 'radio',\n label: 'Alignment',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Center', value: 'center' },\n ],\n },\n variant: {\n type: 'radio',\n label: 'Visual style',\n options: [\n { label: 'Landing (gradient halo)', value: 'landing' },\n { label: 'Simple (plain section)', value: 'simple' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Welcome',\n heading_html:\n 'Build something <em>worth keeping</em>.',\n lede:\n 'A short, friendly intro to your story. Replace this with the one sentence that makes someone want to read on.',\n primary_cta_label: 'Get in touch',\n primary_cta_href: '/contact',\n secondary_cta_label: 'Learn more',\n secondary_cta_href: '/about',\n align: 'left',\n variant: 'landing',\n },\n render: ({\n eyebrow,\n heading_html,\n lede,\n primary_cta_label,\n primary_cta_href,\n secondary_cta_label,\n secondary_cta_href,\n align,\n variant,\n }) => {\n const isLanding = variant === 'landing';\n const sectionClass = isLanding ? 'tps-hero' : 'tps-section';\n const innerClass = isLanding ? 'tps-hero-inner' : 'tps-container';\n return (\n <section\n className={sectionClass}\n style={isLanding ? { textAlign: align } : { paddingTop: 96, paddingBottom: 56, textAlign: align }}\n >\n <div className={innerClass} style={isLanding ? undefined : { maxWidth: 940 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading_html && (\n <h1\n className=\"tps-h1\"\n style={{ marginTop: 12, maxWidth: align === 'left' ? 920 : undefined }}\n dangerouslySetInnerHTML={{ __html: heading_html }}\n />\n )}\n {lede && (\n <p\n className=\"tps-lede\"\n style={{\n marginTop: 16,\n maxWidth: align === 'center' ? 720 : 720,\n marginLeft: align === 'center' ? 'auto' : undefined,\n marginRight: align === 'center' ? 'auto' : undefined,\n }}\n >\n {lede}\n </p>\n )}\n {(primary_cta_label || secondary_cta_label) && (\n <div\n style={{\n display: 'flex',\n gap: 12,\n marginTop: 32,\n justifyContent: align === 'center' ? 'center' : 'flex-start',\n flexWrap: 'wrap',\n }}\n >\n {primary_cta_label && (\n <Link href={primary_cta_href || '/contact'}>\n <Button type=\"primary\" size=\"large\">\n {primary_cta_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n {secondary_cta_label && (\n <Link href={secondary_cta_href || '/services'}>\n <Button size=\"large\">{secondary_cta_label}</Button>\n </Link>\n )}\n </div>\n )}\n </div>\n </section>\n );\n },\n};\n","// StatsStrip — horizontal row of stat cards (value + label).\n\nexport const StatsStrip = {\n label: 'Stats strip',\n fields: {\n items: {\n type: 'array',\n label: 'Stats',\n arrayFields: {\n value: { type: 'text', label: 'Value (e.g. ISO · FSSC)' },\n label: { type: 'text', label: 'Label' },\n },\n defaultItemProps: { value: 'New stat', label: 'Caption' },\n getItemSummary: (item, i) => item?.value || `Stat ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'Soft', value: 'soft' },\n { label: 'White', value: 'white' },\n ],\n },\n },\n defaultProps: {\n items: [\n { value: '120+', label: 'Happy customers' },\n { value: '24/7', label: 'Support, always on' },\n { value: '99.9%', label: 'Uptime, year after year' },\n { value: '5★', label: 'Average review' },\n ],\n background: 'soft',\n },\n render: ({ items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 32, paddingBottom: 32 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(180px, 100%), 1fr))',\n gap: 24,\n textAlign: 'center',\n }}\n >\n {(items || []).map((it, i) => (\n <div key={i}>\n <div\n style={{\n fontSize: 22,\n fontWeight: 800,\n color: 'var(--tps-primary)',\n letterSpacing: '-0.01em',\n }}\n >\n {it.value}\n </div>\n <div\n style={{\n fontSize: 13,\n color: 'var(--tps-muted)',\n marginTop: 4,\n }}\n >\n {it.label}\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// SectionHeader — eyebrow + heading + optional lede. The standard \"what\n// follows is a major section\" introduction used across the site.\n\nexport const SectionHeader = {\n label: 'Section header',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading_html: {\n type: 'textarea',\n label: 'Heading (HTML allowed)',\n },\n lede: { type: 'textarea', label: 'Lede (optional)' },\n align: {\n type: 'radio',\n label: 'Alignment',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Center', value: 'center' },\n ],\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n spacing: {\n type: 'radio',\n label: 'Vertical spacing',\n options: [\n { label: 'Compact', value: 'compact' },\n { label: 'Standard', value: 'standard' },\n { label: 'Generous', value: 'generous' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'What we do',\n heading_html: 'Built for what’s next.',\n lede: '',\n align: 'left',\n background: 'white',\n spacing: 'standard',\n },\n render: ({ eyebrow, heading_html, lede, align, background, spacing }) => {\n const pad =\n spacing === 'compact' ? 32 : spacing === 'generous' ? 96 : 56;\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: pad, paddingBottom: pad }}\n >\n <div\n className=\"tps-container\"\n style={{ textAlign: align, maxWidth: align === 'center' ? 720 : undefined }}\n >\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading_html && (\n <h2\n className=\"tps-h2\"\n style={{ marginTop: 8 }}\n dangerouslySetInnerHTML={{ __html: heading_html }}\n />\n )}\n {lede && (\n <p className=\"tps-lede\" style={{ marginTop: 12 }}>\n {lede}\n </p>\n )}\n </div>\n </section>\n );\n },\n};\n","// RichText — paragraph(s) of body copy. Accepts HTML for inline emphasis,\n// links, lists. Use for intros, legal pages, free-form content.\n\nexport const RichText = {\n label: 'Rich text',\n fields: {\n html: {\n type: 'textarea',\n label: 'HTML content',\n },\n align: {\n type: 'radio',\n label: 'Alignment',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Center', value: 'center' },\n ],\n },\n maxWidth: {\n type: 'select',\n label: 'Max width',\n options: [\n { label: 'Narrow (680px)', value: 680 },\n { label: 'Comfortable (820px)', value: 820 },\n { label: 'Wide (940px)', value: 940 },\n { label: 'Full', value: 0 },\n ],\n },\n },\n defaultProps: {\n html: '<p>Body copy goes here. You can include <strong>bold</strong>, <em>italics</em>, <a href=\"#\">links</a>, and <code>inline</code> styles.</p>',\n align: 'left',\n maxWidth: 820,\n },\n render: ({ html, align, maxWidth }) => (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div\n className=\"tps-container\"\n style={{\n maxWidth: maxWidth || undefined,\n textAlign: align,\n color: 'var(--tps-ink-2)',\n lineHeight: 1.75,\n fontSize: 16.5,\n }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </section>\n ),\n};\n","// PillarsRow — 2/3/4-column grid of icon + title + body cards.\n\nimport {\n ApartmentOutlined,\n ToolOutlined,\n ThunderboltOutlined,\n RocketOutlined,\n SafetyCertificateOutlined,\n CheckCircleFilled,\n TeamOutlined,\n GlobalOutlined,\n BarChartOutlined,\n BulbOutlined,\n} from '@ant-design/icons';\n\nconst ICONS = {\n ApartmentOutlined,\n ToolOutlined,\n ThunderboltOutlined,\n RocketOutlined,\n SafetyCertificateOutlined,\n CheckCircleFilled,\n TeamOutlined,\n GlobalOutlined,\n BarChartOutlined,\n BulbOutlined,\n};\n\nconst ICON_OPTIONS = Object.keys(ICONS).map((k) => ({ label: k, value: k }));\n\nexport const PillarsRow = {\n label: 'Pillars row',\n fields: {\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n { label: '4', value: 4 },\n ],\n },\n items: {\n type: 'array',\n label: 'Pillars',\n arrayFields: {\n icon: { type: 'select', label: 'Icon', options: ICON_OPTIONS },\n title: { type: 'text', label: 'Title' },\n text: { type: 'textarea', label: 'Body' },\n },\n defaultItemProps: {\n icon: 'ApartmentOutlined',\n title: 'New pillar',\n text: 'Short description of this pillar.',\n },\n getItemSummary: (item, i) => item?.title || `Pillar ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n columns: 3,\n items: [\n {\n icon: 'ApartmentOutlined',\n title: 'Built to last',\n text: 'Short, punchy supporting copy that you can rewrite.',\n },\n {\n icon: 'ToolOutlined',\n title: 'Speed where it counts',\n text: 'Short, punchy supporting copy that you can rewrite.',\n },\n {\n icon: 'ThunderboltOutlined',\n title: 'Designed in the open',\n text: 'Short, punchy supporting copy that you can rewrite.',\n },\n ],\n background: 'soft',\n },\n render: ({ items, columns, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${\n columns === 4 ? 220 : columns === 3 ? 280 : 360\n }px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(items || []).map((p, i) => {\n const Icon = ICONS[p.icon] || ApartmentOutlined;\n return (\n <div\n key={i}\n style={{\n background: '#fff',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n padding: 32,\n }}\n >\n <div className=\"tps-service-icon\" style={{ marginBottom: 20 }}>\n <Icon />\n </div>\n <h3 style={{ fontSize: 22, fontWeight: 700, marginBottom: 12 }}>\n {p.title}\n </h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, margin: 0 }}>\n {p.text}\n </p>\n </div>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// ApproachSteps — numbered step list with title + description.\n\nexport const ApproachSteps = {\n label: 'Approach steps',\n fields: {\n items: {\n type: 'array',\n label: 'Steps',\n arrayFields: {\n n: { type: 'text', label: 'Step number (e.g. 01)' },\n title: { type: 'text', label: 'Title' },\n text: { type: 'textarea', label: 'Description' },\n },\n defaultItemProps: {\n n: '01',\n title: 'New step',\n text: 'Short description of this step.',\n },\n getItemSummary: (item, i) =>\n item?.title ? `${item.n || i + 1}. ${item.title}` : `Step ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n items: [\n { n: '01', title: 'Listen', text: 'Short, punchy supporting copy that you can rewrite.' },\n { n: '02', title: 'Plan', text: 'Short, punchy supporting copy that you can rewrite.' },\n { n: '03', title: 'Build', text: 'Short, punchy supporting copy that you can rewrite.' },\n { n: '04', title: 'Launch', text: 'Short, punchy supporting copy that you can rewrite.' },\n ],\n background: 'white',\n },\n render: ({ items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(220px, 100%), 1fr))',\n gap: 24,\n }}\n >\n {(items || []).map((s, i) => (\n <div key={i} style={{ position: 'relative', paddingTop: 20 }}>\n <div\n style={{\n fontSize: 14,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n }}\n >\n {s.n}\n </div>\n <h3 style={{ fontSize: 20, fontWeight: 700, margin: '8px 0 8px' }}>\n {s.title}\n </h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, margin: 0 }}>\n {s.text}\n </p>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// ServicesGrid — auto-renders the 10 service capability cards from the\n// services data file. Editor only chooses how many to show + section chrome.\n\nimport { StudioLink as Link, useStudio } from '../context';\n\nexport const ServicesGrid = {\n label: 'Services grid',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n show: {\n type: 'radio',\n label: 'Show',\n options: [\n { label: 'All services', value: 'all' },\n { label: 'First 4', value: 4 },\n { label: 'First 6', value: 6 },\n { label: 'First 8', value: 8 },\n ],\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: '',\n heading: '',\n show: 'all',\n background: 'white',\n },\n render: ({ eyebrow, heading, show, background }) => {\n const { services } = useStudio();\n const list = show === 'all' ? services : services.slice(0, Number(show));\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && (\n <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>\n {heading}\n </h2>\n )}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(280px, 100%), 1fr))',\n gap: 16,\n }}\n >\n {list.map((s) => (\n <Link\n key={s.slug}\n href={`/services/${s.slug}`}\n style={{\n display: 'block',\n padding: 24,\n background: '#fff',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n transition: 'transform 120ms ease, box-shadow 120ms ease',\n }}\n >\n <div className=\"tps-service-icon\" style={{ marginBottom: 16 }}>\n <s.icon />\n </div>\n <div style={{ fontSize: 11, fontWeight: 700, letterSpacing: 1.5, color: 'var(--tps-accent-dark)' }}>\n {s.eyebrow}\n </div>\n <h3 style={{ fontSize: 18, fontWeight: 700, margin: '6px 0 8px' }}>\n {s.short}\n </h3>\n <p style={{ color: 'var(--tps-muted)', fontSize: 14, lineHeight: 1.6, margin: 0 }}>\n {s.summary}\n </p>\n </Link>\n ))}\n </div>\n </div>\n </section>\n );\n },\n};\n","// CTABanner — full-width call-to-action with tagline + heading + body + button.\n\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const CTABanner = {\n label: 'CTA banner',\n fields: {\n tagline: { type: 'text', label: 'Tagline (small caps)' },\n heading_html: { type: 'textarea', label: 'Heading (HTML allowed)' },\n body: { type: 'textarea', label: 'Body' },\n button_label: { type: 'text', label: 'Button label' },\n button_href: { type: 'text', label: 'Button link' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n tagline: 'READY WHEN YOU ARE',\n heading_html: 'Make it count.<br />Start the conversation.',\n body:\n 'A clear, friendly call to action. Replace this with the one thing you want a reader to do next.',\n button_label: 'Get in touch',\n button_href: '/contact',\n background: 'soft',\n },\n render: ({ tagline, heading_html, body, button_label, button_href, background }) => {\n const dark = background === 'dark';\n return (\n <section\n className={`tps-section ${!dark ? 'tps-section-soft' : ''}`}\n style={{\n paddingTop: 80,\n paddingBottom: 80,\n background: dark ? '#0F172A' : undefined,\n color: dark ? '#fff' : undefined,\n }}\n >\n <div className=\"tps-container\" style={{ textAlign: 'center', maxWidth: 720 }}>\n {tagline && (\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 2,\n color: dark ? '#F59E0B' : 'var(--tps-accent-dark)',\n marginBottom: 12,\n }}\n >\n {tagline}\n </div>\n )}\n {heading_html && (\n <h2\n className=\"tps-h2\"\n style={{ color: dark ? '#fff' : undefined }}\n dangerouslySetInnerHTML={{ __html: heading_html }}\n />\n )}\n {body && (\n <p\n className=\"tps-lede\"\n style={{ margin: '16px auto 32px', color: dark ? 'rgba(255,255,255,0.85)' : undefined }}\n >\n {body}\n </p>\n )}\n {button_label && (\n <Link href={button_href || '/contact'}>\n <Button type=\"primary\" size=\"large\">\n {button_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n </div>\n </section>\n );\n },\n};\n","// PrinciplesList — checkmark bullets with editable items.\n\nimport { CheckCircleFilled } from '@ant-design/icons';\n\nexport const PrinciplesList = {\n label: 'Principles list',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading_html: { type: 'textarea', label: 'Heading (HTML, optional)' },\n lede: { type: 'textarea', label: 'Lede (optional)' },\n label: { type: 'text', label: 'List label (small caps, optional)' },\n items: {\n type: 'array',\n label: 'Principles',\n arrayFields: {\n text: { type: 'text', label: 'Principle' },\n },\n defaultItemProps: { text: 'A new principle' },\n getItemSummary: (item, i) => item?.text || `Principle ${i + 1}`,\n },\n layout: {\n type: 'radio',\n label: 'Layout',\n options: [\n { label: 'Two columns (heading + list)', value: 'split' },\n { label: 'List only', value: 'list-only' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'What we believe',\n heading_html: 'A simpler way<br />to ship great work.',\n lede: 'Replace this with the one belief that shapes everything you do.',\n label: 'EVERY PROJECT IS:',\n items: [\n { text: 'Designed in the open' },\n { text: 'Built to last' },\n { text: 'Made with care' },\n ],\n layout: 'split',\n },\n render: ({ eyebrow, heading_html, lede, label, items, layout }) => {\n const list = (\n <div\n style={{\n background: 'var(--tps-bg-soft)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n padding: 32,\n }}\n >\n {label && (\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 2,\n color: 'var(--tps-accent-dark)',\n marginBottom: 16,\n }}\n >\n {label}\n </div>\n )}\n {(items || []).map((p, i) => (\n <div\n key={i}\n style={{ display: 'flex', alignItems: 'flex-start', gap: 12, marginBottom: 16 }}\n >\n <CheckCircleFilled style={{ color: 'var(--tps-primary)', fontSize: 22 }} />\n <span style={{ fontSize: 17, fontWeight: 500 }}>{p.text}</span>\n </div>\n ))}\n </div>\n );\n return (\n <section className=\"tps-section\" style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\">\n {layout === 'split' ? (\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(360px, 100%), 1fr))',\n gap: 48,\n alignItems: 'center',\n }}\n >\n <div>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading_html && (\n <h2\n className=\"tps-h2\"\n style={{ marginTop: 8 }}\n dangerouslySetInnerHTML={{ __html: heading_html }}\n />\n )}\n {lede && <p className=\"tps-lede\">{lede}</p>}\n </div>\n {list}\n </div>\n ) : (\n <div style={{ maxWidth: 640, margin: '0 auto' }}>{list}</div>\n )}\n </div>\n </section>\n );\n },\n};\n","// TwoColumn — generic side-by-side text columns with editable headings + body.\n\nexport const TwoColumn = {\n label: 'Two columns',\n fields: {\n left_heading: { type: 'text', label: 'Left heading' },\n left_body: { type: 'textarea', label: 'Left body' },\n right_heading: { type: 'text', label: 'Right heading' },\n right_body: { type: 'textarea', label: 'Right body' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n left_heading: 'Column one',\n left_body: 'Body copy for the first column.',\n right_heading: 'Column two',\n right_body: 'Body copy for the second column.',\n background: 'white',\n },\n render: ({ left_heading, left_body, right_heading, right_body, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(320px, 100%), 1fr))',\n gap: 48,\n }}\n >\n <div>\n {left_heading && (\n <h3 style={{ fontSize: 24, fontWeight: 700, marginBottom: 12 }}>\n {left_heading}\n </h3>\n )}\n {left_body && (\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, fontSize: 16 }}>\n {left_body}\n </p>\n )}\n </div>\n <div>\n {right_heading && (\n <h3 style={{ fontSize: 24, fontWeight: 700, marginBottom: 12 }}>\n {right_heading}\n </h3>\n )}\n {right_body && (\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, fontSize: 16 }}>\n {right_body}\n </p>\n )}\n </div>\n </div>\n </div>\n </section>\n ),\n};\n","// Spacer — explicit vertical whitespace control between blocks.\n\nexport const Spacer = {\n label: 'Spacer',\n fields: {\n height: {\n type: 'select',\n label: 'Height',\n options: [\n { label: 'XS (16px)', value: 16 },\n { label: 'S (32px)', value: 32 },\n { label: 'M (56px)', value: 56 },\n { label: 'L (96px)', value: 96 },\n { label: 'XL (140px)', value: 140 },\n ],\n },\n },\n defaultProps: { height: 56 },\n render: ({ height }) => <div aria-hidden style={{ height }} />,\n};\n","// RawHtml — escape hatch for pasting in arbitrary markup (embeds, custom\n// layouts, etc.). Wrapped in a container so it inherits site spacing.\n\nexport const RawHtml = {\n label: 'Custom HTML',\n fields: {\n html: { type: 'textarea', label: 'HTML' },\n contained: {\n type: 'radio',\n label: 'Width',\n options: [\n { label: 'Inside container', value: 'contained' },\n { label: 'Full bleed', value: 'full' },\n ],\n },\n },\n defaultProps: {\n html: '<div style=\"padding: 24px; border: 1px dashed #cbd5e1; text-align: center; color: #64748b;\">Custom HTML block — replace with your own markup</div>',\n contained: 'contained',\n },\n render: ({ html, contained }) => {\n if (contained === 'full') {\n return <div dangerouslySetInnerHTML={{ __html: html }} />;\n }\n return (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\" dangerouslySetInnerHTML={{ __html: html }} />\n </section>\n );\n },\n};\n","'use client';\n\n// ContactSection — a self-contained contact-page block. Renders the hero,\n// the sidebar (email + LinkedIn + response card) and the lead-capture form\n// as one editable unit. Authors get fields for every visible label and\n// dropdown option; the form wiring (validation, submit, tracking) stays\n// internal so it works the same way on the public site as the legacy\n// schema-rendered contact page.\n\nimport { useState } from 'react';\nimport { Row, Col, Form, Input, Button, Select, Space, App as AntdApp } from 'antd';\nimport { SendOutlined, MailOutlined, LinkedinFilled } from '@ant-design/icons';\n\nimport { useStudio } from '../context';\n\nfunction ContactSectionRender({\n hero_eyebrow,\n hero_heading,\n hero_lede,\n sidebar_heading,\n response_label,\n response_body,\n form_submit_label,\n form_privacy_html,\n success_heading,\n success_body,\n stages,\n contact_email,\n}) {\n const [form] = Form.useForm();\n const { message } = AntdApp.useApp();\n const { services, site, submitLead, track } = useStudio();\n const [submitting, setSubmitting] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n const [started, setStarted] = useState(false);\n\n const stagesList = Array.isArray(stages) ? stages.filter(Boolean) : [];\n const email = contact_email || site.email;\n\n const onFirstInteraction = () => {\n if (started) return;\n setStarted(true);\n track('contact_form_start', { surface: 'contact_page' });\n };\n\n const onSubmit = async (values) => {\n setSubmitting(true);\n try {\n await submitLead({\n ...values,\n message: [\n values.stage ? `Stage: ${values.stage}` : null,\n values.interest ? `Interest: ${values.interest}` : null,\n values.message,\n ]\n .filter(Boolean)\n .join('\\n\\n'),\n source: 'contact_page',\n });\n track('contact_submit', { surface: 'contact_page' });\n message.success(\"Thank you — we'll reach out within one business day.\");\n form.resetFields();\n setSubmitted(true);\n } catch (err) {\n track('contact_error', { surface: 'contact_page', field: 'submit' });\n message.error(\n err?.message ||\n err?.response?.data?.error ||\n 'Something went wrong. Please try again or email us directly.',\n );\n } finally {\n setSubmitting(false);\n }\n };\n\n const onFinishFailed = ({ errorFields }) => {\n const firstField = errorFields?.[0]?.name?.[0];\n track('contact_error', { surface: 'contact_page', field: firstField || 'validation' });\n };\n\n return (\n <>\n <section className=\"tps-service-hero\">\n <div className=\"tps-container\">\n {hero_eyebrow && <span className=\"tps-eyebrow\">{hero_eyebrow}</span>}\n {hero_heading && (\n <h1 className=\"tps-h1\" style={{ maxWidth: 880 }}>\n {hero_heading}\n </h1>\n )}\n {hero_lede && <p className=\"tps-lede\">{hero_lede}</p>}\n </div>\n </section>\n\n <section className=\"tps-section\">\n <div className=\"tps-container\">\n <Row gutter={[48, 48]}>\n <Col xs={24} md={9}>\n {sidebar_heading && <h2 className=\"tps-h3\">{sidebar_heading}</h2>}\n <Space direction=\"vertical\" size={20} style={{ width: '100%', marginTop: 24 }}>\n <a\n href={`mailto:${email}`}\n style={{\n display: 'flex',\n gap: 14,\n padding: 16,\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n }}\n >\n <MailOutlined style={{ fontSize: 22, color: 'var(--tps-primary)' }} />\n <div>\n <div style={{ fontSize: 12, color: 'var(--tps-muted)' }}>Email</div>\n <div style={{ fontSize: 15, fontWeight: 600 }}>{email}</div>\n </div>\n </a>\n <a\n href={site.social?.linkedin || '#'}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{\n display: 'flex',\n gap: 14,\n padding: 16,\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n }}\n >\n <LinkedinFilled style={{ fontSize: 22, color: 'var(--tps-primary)' }} />\n <div>\n <div style={{ fontSize: 12, color: 'var(--tps-muted)' }}>LinkedIn</div>\n <div style={{ fontSize: 15, fontWeight: 600 }}>Page Studio</div>\n </div>\n </a>\n </Space>\n\n {(response_label || response_body) && (\n <div\n style={{\n marginTop: 32,\n padding: 20,\n background: 'var(--tps-bg-soft)',\n borderRadius: 'var(--tps-radius)',\n border: '1px solid var(--tps-line)',\n }}\n >\n {response_label && (\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n marginBottom: 8,\n }}\n >\n {response_label}\n </div>\n )}\n {response_body && (\n <p style={{ margin: 0, color: 'var(--tps-ink-2)', lineHeight: 1.6 }}>\n {response_body}\n </p>\n )}\n </div>\n )}\n </Col>\n\n <Col xs={24} md={15}>\n <div className=\"tps-form-card\">\n {submitted ? (\n <div style={{ textAlign: 'center', padding: '40px 20px' }}>\n <div\n style={{\n width: 72,\n height: 72,\n borderRadius: '50%',\n background: 'rgba(15, 118, 110, 0.1)',\n color: 'var(--tps-primary)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 32,\n marginBottom: 24,\n }}\n >\n ✓\n </div>\n {success_heading && <h2 className=\"tps-h3\">{success_heading}</h2>}\n {success_body && (\n <p className=\"tps-lede\" style={{ margin: '0 auto', maxWidth: 480 }}>\n {success_body}\n </p>\n )}\n <Button\n type=\"link\"\n onClick={() => setSubmitted(false)}\n style={{ marginTop: 16 }}\n >\n Send another message\n </Button>\n </div>\n ) : (\n <Form\n form={form}\n layout=\"vertical\"\n onFinish={onSubmit}\n onFinishFailed={onFinishFailed}\n onValuesChange={onFirstInteraction}\n requiredMark={false}\n >\n <Row gutter={16}>\n <Col xs={24} sm={12}>\n <Form.Item\n label=\"Full name\"\n name=\"full_name\"\n rules={[{ required: true, message: 'Please enter your name' }]}\n >\n <Input size=\"large\" placeholder=\"Your name\" />\n </Form.Item>\n </Col>\n <Col xs={24} sm={12}>\n <Form.Item\n label=\"Work email\"\n name=\"email\"\n rules={[\n { required: true, message: 'Email is required' },\n { type: 'email', message: 'Enter a valid email' },\n ]}\n >\n <Input size=\"large\" placeholder=\"you@company.com\" />\n </Form.Item>\n </Col>\n </Row>\n <Row gutter={16}>\n <Col xs={24} sm={12}>\n <Form.Item label=\"Phone\" name=\"phone\">\n <Input size=\"large\" placeholder=\"Optional\" />\n </Form.Item>\n </Col>\n <Col xs={24} sm={12}>\n <Form.Item\n label=\"Organization\"\n name=\"organization\"\n rules={[{ required: true, message: 'Organization is required' }]}\n >\n <Input size=\"large\" placeholder=\"Your company\" />\n </Form.Item>\n </Col>\n </Row>\n\n {stagesList.length > 0 && (\n <Form.Item label=\"Where are you in your journey?\" name=\"stage\">\n <Select\n size=\"large\"\n placeholder=\"Select the stage that best describes you\"\n options={stagesList.map((s) => ({ value: s, label: s }))}\n />\n </Form.Item>\n )}\n\n <Form.Item label=\"Which capabilities interest you?\" name=\"interest\">\n <Select\n size=\"large\"\n mode=\"multiple\"\n placeholder=\"Pick one or more (optional)\"\n options={services.map((s) => ({ value: s.short || s.label || s.slug, label: s.short || s.label || s.slug }))}\n />\n </Form.Item>\n\n <Form.Item\n label=\"Tell us more\"\n name=\"message\"\n rules={[{ required: true, message: 'A short message helps us prepare' }]}\n >\n <Input.TextArea\n rows={5}\n placeholder=\"Your products, current systems, target markets, or specific challenges you'd like to discuss…\"\n />\n </Form.Item>\n\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={submitting}\n icon={<SendOutlined />}\n style={{ minWidth: 200, height: 48, fontWeight: 600 }}\n >\n {form_submit_label || 'Send message'}\n </Button>\n\n {form_privacy_html && (\n <p\n style={{\n fontSize: 13,\n color: 'var(--tps-muted)',\n marginTop: 16,\n marginBottom: 0,\n }}\n dangerouslySetInnerHTML={{ __html: form_privacy_html }}\n />\n )}\n </Form>\n )}\n </div>\n </Col>\n </Row>\n </div>\n </section>\n </>\n );\n}\n\nexport const ContactSection = {\n label: 'Contact section',\n fields: {\n hero_eyebrow: { type: 'text', label: 'Eyebrow' },\n hero_heading: { type: 'text', label: 'Heading' },\n hero_lede: { type: 'textarea', label: 'Lede' },\n sidebar_heading: { type: 'text', label: 'Sidebar heading' },\n response_label: { type: 'text', label: 'Response card label' },\n response_body: { type: 'textarea', label: 'Response card body' },\n form_submit_label: { type: 'text', label: 'Submit button label' },\n form_privacy_html: {\n type: 'textarea',\n label: 'Privacy footer (HTML allowed)',\n },\n success_heading: { type: 'text', label: 'Success heading' },\n success_body: { type: 'textarea', label: 'Success body' },\n stages: {\n type: 'array',\n label: 'Stage dropdown options',\n arrayFields: {\n text: { type: 'text', label: 'Stage' },\n },\n defaultItemProps: { text: 'New stage' },\n getItemSummary: (item, i) => item?.text || `Stage ${i + 1}`,\n },\n contact_email: { type: 'text', label: 'Public email' },\n },\n defaultProps: {\n hero_eyebrow: 'Contact',\n hero_heading: 'Say hello.',\n hero_lede:\n \"A short, friendly intro for the contact page. Tell visitors what kind of message you're hoping to get, and how soon you'll reply.\",\n sidebar_heading: 'Get in touch',\n response_label: 'RESPONSE TIME',\n response_body:\n \"We aim to reply within one business day. Replace this with your own promise.\",\n form_submit_label: 'Send message',\n form_privacy_html:\n 'We respect your privacy. See our <a href=\"/privacy\">privacy policy</a> for how we handle the information you share.',\n success_heading: 'Thank you.',\n success_body:\n \"We've received your message and will be in touch shortly.\",\n stages: [\n { text: 'Just exploring' },\n { text: 'Starting a new project' },\n { text: 'Improving an existing process' },\n { text: 'Need help with strategy' },\n { text: 'Other' },\n ],\n contact_email: '',\n },\n render: (props) => <ContactSectionRender {...props} />,\n};\n","// ImageText — image on one side, heading/body/CTA on the other. Classic\n// alternating \"feature\" section. Image position is editable so you can flip\n// it to break visual rhythm.\n\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const ImageText = {\n label: 'Image + text',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n body: { type: 'textarea', label: 'Body', rows: 4 },\n image_url: { type: 'text', label: 'Image URL' },\n image_alt: { type: 'text', label: 'Image alt text' },\n image_position: {\n type: 'radio',\n label: 'Image position',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Right', value: 'right' },\n ],\n },\n cta_label: { type: 'text', label: 'Button label' },\n cta_href: { type: 'text', label: 'Button link' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Feature',\n heading: 'A focused capability',\n body:\n 'Describe what this section is about — what value it delivers, and why it matters to the reader.',\n image_url: '',\n image_alt: '',\n image_position: 'left',\n cta_label: 'Learn more',\n cta_href: '/services',\n background: 'white',\n },\n render: ({\n eyebrow,\n heading,\n body,\n image_url,\n image_alt,\n image_position,\n cta_label,\n cta_href,\n background,\n }) => {\n const imageEl = image_url ? (\n <img\n src={image_url}\n alt={image_alt || ''}\n style={{\n width: '100%',\n height: 'auto',\n borderRadius: 'var(--tps-radius)',\n display: 'block',\n }}\n />\n ) : (\n <div\n style={{\n width: '100%',\n aspectRatio: '4 / 3',\n background: '#E2E8F0',\n borderRadius: 'var(--tps-radius)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#94A3B8',\n fontSize: 13,\n }}\n >\n Image placeholder\n </div>\n );\n const textEl = (\n <div>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n {body && <p className=\"tps-lede\">{body}</p>}\n {cta_label && (\n <Link href={cta_href || '/contact'}>\n <Button type=\"primary\" size=\"large\" style={{ marginTop: 8 }}>\n {cta_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n </div>\n );\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(320px, 100%), 1fr))',\n gap: 48,\n alignItems: 'center',\n }}\n >\n {image_position === 'left' ? (\n <>\n {imageEl}\n {textEl}\n </>\n ) : (\n <>\n {textEl}\n {imageEl}\n </>\n )}\n </div>\n </div>\n </section>\n );\n },\n};\n","// VideoEmbed — YouTube or Vimeo embed with caption. Parses the URL to\n// extract the video ID and renders the standard responsive iframe.\n\nfunction parseVideoUrl(url) {\n if (!url) return null;\n // YouTube: youtube.com/watch?v=ID, youtu.be/ID, youtube.com/embed/ID\n const yt = url.match(\n /(?:youtube\\.com\\/(?:watch\\?v=|embed\\/|v\\/)|youtu\\.be\\/)([a-zA-Z0-9_-]{6,})/,\n );\n if (yt) return { provider: 'youtube', id: yt[1] };\n // Vimeo: vimeo.com/ID\n const vm = url.match(/vimeo\\.com\\/(?:video\\/)?(\\d+)/);\n if (vm) return { provider: 'vimeo', id: vm[1] };\n return null;\n}\n\nexport const VideoEmbed = {\n label: 'Video embed',\n fields: {\n video_url: {\n type: 'text',\n label: 'YouTube or Vimeo URL',\n },\n caption: { type: 'text', label: 'Caption (optional)' },\n max_width: {\n type: 'select',\n label: 'Max width',\n options: [\n { label: 'Narrow (720px)', value: 720 },\n { label: 'Comfortable (940px)', value: 940 },\n { label: 'Wide (1140px)', value: 1140 },\n ],\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n video_url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',\n caption: '',\n max_width: 940,\n background: 'white',\n },\n render: ({ video_url, caption, max_width, background }) => {\n const parsed = parseVideoUrl(video_url);\n const src =\n parsed?.provider === 'youtube'\n ? `https://www.youtube-nocookie.com/embed/${parsed.id}`\n : parsed?.provider === 'vimeo'\n ? `https://player.vimeo.com/video/${parsed.id}`\n : null;\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 48, paddingBottom: 48 }}\n >\n <div className=\"tps-container\" style={{ maxWidth: max_width }}>\n <div\n style={{\n position: 'relative',\n paddingBottom: '56.25%',\n height: 0,\n overflow: 'hidden',\n borderRadius: 'var(--tps-radius)',\n background: '#0F172A',\n }}\n >\n {src ? (\n <iframe\n src={src}\n title={caption || 'Embedded video'}\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n allowFullScreen\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n border: 0,\n }}\n />\n ) : (\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#94A3B8',\n fontSize: 13,\n }}\n >\n Paste a YouTube or Vimeo URL\n </div>\n )}\n </div>\n {caption && (\n <p\n style={{\n marginTop: 12,\n fontSize: 13,\n color: 'var(--tps-muted)',\n textAlign: 'center',\n }}\n >\n {caption}\n </p>\n )}\n </div>\n </section>\n );\n },\n};\n","// LogoStrip — \"Trusted by\" client/partner logos in a single row. Renders\n// each logo as an image OR (when no image_url is provided) as styled text,\n// so authors can use it before they've uploaded SVGs.\n\nexport const LogoStrip = {\n label: 'Logo strip',\n fields: {\n heading: { type: 'text', label: 'Heading (small caps, optional)' },\n items: {\n type: 'array',\n label: 'Logos',\n arrayFields: {\n name: { type: 'text', label: 'Brand name (text fallback)' },\n image_url: { type: 'text', label: 'Image URL (optional)' },\n link: { type: 'text', label: 'Link URL (optional)' },\n },\n defaultItemProps: { name: 'New brand', image_url: '', link: '' },\n getItemSummary: (item, i) => item?.name || `Logo ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n heading: 'TRUSTED BY',\n items: [\n { name: 'Brand One', image_url: '', link: '' },\n { name: 'Brand Two', image_url: '', link: '' },\n { name: 'Brand Three', image_url: '', link: '' },\n { name: 'Brand Four', image_url: '', link: '' },\n { name: 'Brand Five', image_url: '', link: '' },\n ],\n background: 'soft',\n },\n render: ({ heading, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 40, paddingBottom: 40 }}\n >\n <div className=\"tps-container\" style={{ textAlign: 'center' }}>\n {heading && (\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 2,\n color: 'var(--tps-muted)',\n marginBottom: 24,\n }}\n >\n {heading}\n </div>\n )}\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 40,\n }}\n >\n {(items || []).map((logo, i) => {\n const inner = logo.image_url ? (\n <img\n src={logo.image_url}\n alt={logo.name || ''}\n style={{\n height: 32,\n width: 'auto',\n objectFit: 'contain',\n filter: 'grayscale(100%)',\n opacity: 0.65,\n transition: 'all 200ms ease',\n }}\n />\n ) : (\n <span\n style={{\n fontSize: 16,\n fontWeight: 700,\n color: 'var(--tps-muted)',\n letterSpacing: '-0.01em',\n }}\n >\n {logo.name}\n </span>\n );\n return logo.link ? (\n <a\n key={i}\n href={logo.link}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{ textDecoration: 'none' }}\n >\n {inner}\n </a>\n ) : (\n <div key={i}>{inner}</div>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// TestimonialQuote — single large pull-quote with attribution. Use when\n// one testimonial deserves the full spotlight (e.g. lead case study).\n\nexport const TestimonialQuote = {\n label: 'Testimonial quote',\n fields: {\n quote: { type: 'textarea', label: 'Quote', rows: 4 },\n author_name: { type: 'text', label: 'Author name' },\n author_role: { type: 'text', label: 'Role' },\n author_company: { type: 'text', label: 'Company' },\n author_image: { type: 'text', label: 'Photo URL (optional)' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n quote:\n \"A short, glowing quote from a happy customer. Replace this with the testimonial you want front and center.\",\n author_name: 'Alex Rivera',\n author_role: 'Founder',\n author_company: 'Acme Co.',\n author_image: '',\n background: 'soft',\n },\n render: ({ quote, author_name, author_role, author_company, author_image, background }) => {\n const dark = background === 'dark';\n return (\n <section\n className={`tps-section ${!dark ? 'tps-section-soft' : ''}`}\n style={{\n paddingTop: 80,\n paddingBottom: 80,\n background: dark ? '#0F172A' : undefined,\n color: dark ? '#fff' : undefined,\n }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 820, textAlign: 'center' }}>\n <div\n style={{\n fontSize: 'clamp(40px, 10vw, 64px)',\n lineHeight: 1,\n color: dark ? '#F59E0B' : 'var(--tps-primary)',\n fontFamily: 'Georgia, serif',\n marginBottom: -16,\n opacity: 0.6,\n }}\n >\n “\n </div>\n <p\n style={{\n fontSize: 22,\n lineHeight: 1.55,\n fontWeight: 500,\n color: dark ? '#fff' : 'var(--tps-ink)',\n margin: '0 0 32px',\n }}\n >\n {quote}\n </p>\n <div\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 14,\n }}\n >\n {author_image ? (\n <img\n src={author_image}\n alt={author_name || ''}\n style={{\n width: 48,\n height: 48,\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div\n style={{\n width: 48,\n height: 48,\n borderRadius: '50%',\n background: dark ? 'rgba(255,255,255,0.1)' : 'var(--tps-primary)',\n color: '#fff',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 700,\n }}\n >\n {(author_name || '?').slice(0, 1).toUpperCase()}\n </div>\n )}\n <div style={{ textAlign: 'left' }}>\n <div\n style={{\n fontWeight: 700,\n color: dark ? '#fff' : 'var(--tps-ink)',\n }}\n >\n {author_name}\n </div>\n <div\n style={{\n fontSize: 13,\n color: dark ? 'rgba(255,255,255,0.7)' : 'var(--tps-muted)',\n }}\n >\n {[author_role, author_company].filter(Boolean).join(' · ')}\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n },\n};\n","// TestimonialGrid — 2 or 3 testimonial cards in a row. Used when you want\n// social proof from multiple voices without a single quote dominating.\n\nexport const TestimonialGrid = {\n label: 'Testimonial grid',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n ],\n },\n items: {\n type: 'array',\n label: 'Testimonials',\n arrayFields: {\n quote: { type: 'textarea', label: 'Quote', rows: 4 },\n name: { type: 'text', label: 'Name' },\n role: { type: 'text', label: 'Role' },\n company: { type: 'text', label: 'Company' },\n },\n defaultItemProps: {\n quote: 'Add a short quote here.',\n name: 'Name',\n role: 'Role',\n company: 'Company',\n },\n getItemSummary: (item, i) => item?.name || `Testimonial ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Kind words',\n heading: 'Loved by people like you.',\n columns: 3,\n items: [\n {\n quote:\n 'A short, friendly quote from a happy customer. Replace this with your own.',\n name: 'Alex Rivera',\n role: 'Founder',\n company: 'Acme Co.',\n },\n {\n quote:\n 'A short, friendly quote from a happy customer. Replace this with your own.',\n name: 'Sam Lee',\n role: 'Product Lead',\n company: 'Northwind',\n },\n {\n quote:\n 'A short, friendly quote from a happy customer. Replace this with your own.',\n name: 'Jamie Chen',\n role: 'Operations',\n company: 'Lighthouse Labs',\n },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, columns, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ textAlign: 'center', marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${columns === 2 ? 360 : 280}px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(items || []).map((t, i) => (\n <div\n key={i}\n style={{\n background: '#fff',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n padding: 28,\n display: 'flex',\n flexDirection: 'column',\n gap: 20,\n }}\n >\n <p\n style={{\n fontSize: 16,\n lineHeight: 1.6,\n color: 'var(--tps-ink-2)',\n margin: 0,\n flex: 1,\n }}\n >\n “{t.quote}”\n </p>\n <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>\n <div\n style={{\n width: 40,\n height: 40,\n borderRadius: '50%',\n background: 'var(--tps-primary)',\n color: '#fff',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 700,\n fontSize: 14,\n }}\n >\n {(t.name || '?').slice(0, 1).toUpperCase()}\n </div>\n <div>\n <div style={{ fontWeight: 700, fontSize: 14 }}>{t.name}</div>\n <div style={{ fontSize: 12, color: 'var(--tps-muted)' }}>\n {[t.role, t.company].filter(Boolean).join(' · ')}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","'use client';\n\n// FAQ — accordion of question / answer items. Uses AntD Collapse so it gets\n// the accessibility + keyboard handling for free.\n\nimport { Collapse } from 'antd';\n\nexport const FAQ = {\n label: 'FAQ accordion',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n items: {\n type: 'array',\n label: 'Questions',\n arrayFields: {\n question: { type: 'text', label: 'Question' },\n answer_html: {\n type: 'textarea',\n label: 'Answer (HTML allowed)',\n rows: 5,\n },\n },\n defaultItemProps: {\n question: 'New question?',\n answer_html: '<p>Answer goes here.</p>',\n },\n getItemSummary: (item, i) => item?.question || `Question ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Frequently asked',\n heading: 'Quick answers.',\n items: [\n {\n question: 'What does a typical project look like?',\n answer_html:\n '<p>A short, friendly answer that you can rewrite to match your own process.</p>',\n },\n {\n question: 'How do we get started?',\n answer_html:\n '<p>A short, friendly answer that you can rewrite to match your own process.</p>',\n },\n {\n question: 'How much does it cost?',\n answer_html:\n '<p>A short, friendly answer that you can rewrite to match your own pricing.</p>',\n },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <Collapse\n accordion\n bordered={false}\n expandIconPosition=\"end\"\n style={{ background: 'transparent' }}\n items={(items || []).map((it, i) => ({\n key: String(i),\n label: (\n <span style={{ fontSize: 16, fontWeight: 600, color: 'var(--tps-ink)' }}>\n {it.question}\n </span>\n ),\n children: (\n <div\n style={{ color: 'var(--tps-ink-2)', lineHeight: 1.7, fontSize: 15 }}\n dangerouslySetInnerHTML={{ __html: it.answer_html || '' }}\n />\n ),\n style: {\n background: '#fff',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n marginBottom: 12,\n overflow: 'hidden',\n },\n }))}\n />\n </div>\n </section>\n ),\n};\n","// Timeline — vertical chronological events list. Each item has a date, a\n// title, and a body. Useful for company history, project milestones, or a\n// \"what happens after you contact us\" walkthrough.\n\nexport const Timeline = {\n label: 'Timeline',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n items: {\n type: 'array',\n label: 'Events',\n arrayFields: {\n date: { type: 'text', label: 'Date / label (e.g. 2024 Q1)' },\n title: { type: 'text', label: 'Title' },\n body: { type: 'textarea', label: 'Body', rows: 3 },\n },\n defaultItemProps: {\n date: 'New event',\n title: 'Title',\n body: 'Short description of what happened.',\n },\n getItemSummary: (item, i) =>\n item?.title ? `${item.date || ''} ${item.title}` : `Event ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Our story',\n heading: 'How we got here.',\n items: [\n { date: '2022', title: 'Founded', body: 'A short, friendly description of this milestone. Rewrite to match your story.' },\n { date: '2023', title: 'First customers', body: 'A short, friendly description of this milestone. Rewrite to match your story.' },\n { date: '2024', title: 'A growing team', body: 'A short, friendly description of this milestone. Rewrite to match your story.' },\n { date: '2025', title: 'Where good ideas grow', body: 'A short, friendly description of this milestone. Rewrite to match your story.' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 720 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <ol\n style={{\n listStyle: 'none',\n padding: 0,\n margin: 0,\n position: 'relative',\n paddingLeft: 32,\n }}\n >\n {/* Vertical line */}\n <div\n aria-hidden\n style={{\n position: 'absolute',\n left: 9,\n top: 6,\n bottom: 6,\n width: 2,\n background: 'var(--tps-line)',\n }}\n />\n {(items || []).map((it, i) => (\n <li\n key={i}\n style={{\n position: 'relative',\n paddingBottom: 28,\n }}\n >\n <div\n aria-hidden\n style={{\n position: 'absolute',\n left: -32 + 4,\n top: 6,\n width: 12,\n height: 12,\n borderRadius: '50%',\n background: 'var(--tps-primary)',\n boxShadow: '0 0 0 4px #fff',\n }}\n />\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n marginBottom: 4,\n }}\n >\n {it.date}\n </div>\n <h3 style={{ fontSize: 18, fontWeight: 700, margin: '0 0 6px' }}>\n {it.title}\n </h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, margin: 0 }}>\n {it.body}\n </p>\n </li>\n ))}\n </ol>\n </div>\n </section>\n ),\n};\n","'use client';\n\n// NewsletterSignup — single-field email capture. Submits through the\n// existing leads endpoint with source='newsletter' so subscribers land in\n// the same admin Leads list as contact-form submissions, but are filterable.\n\nimport { useState } from 'react';\nimport { Button, Input, Form, App as AntdApp } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nimport { useStudio } from '../context';\n\nfunction NewsletterSignupRender({\n eyebrow,\n heading,\n body,\n button_label,\n success_message,\n background,\n}) {\n const [form] = Form.useForm();\n const { message } = AntdApp.useApp();\n const { subscribeNewsletter } = useStudio();\n const [submitting, setSubmitting] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n\n const onSubmit = async ({ email }) => {\n setSubmitting(true);\n try {\n await subscribeNewsletter({ email, source: 'newsletter' });\n setSubmitted(true);\n form.resetFields();\n } catch (err) {\n message.error(err?.message || err?.response?.data?.error || 'Could not subscribe — please try again.');\n } finally {\n setSubmitting(false);\n }\n };\n\n const dark = background === 'dark';\n\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{\n paddingTop: 64,\n paddingBottom: 64,\n background: dark ? '#0F172A' : undefined,\n color: dark ? '#fff' : undefined,\n }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 640, textAlign: 'center' }}>\n {eyebrow && (\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 2,\n color: dark ? '#F59E0B' : 'var(--tps-accent-dark)',\n marginBottom: 12,\n }}\n >\n {eyebrow}\n </div>\n )}\n {heading && (\n <h2 className=\"tps-h2\" style={{ color: dark ? '#fff' : undefined }}>\n {heading}\n </h2>\n )}\n {body && (\n <p\n className=\"tps-lede\"\n style={{\n margin: '12px auto 28px',\n color: dark ? 'rgba(255,255,255,0.85)' : undefined,\n }}\n >\n {body}\n </p>\n )}\n {submitted ? (\n <div\n style={{\n padding: 20,\n borderRadius: 'var(--tps-radius)',\n background: dark ? 'rgba(255,255,255,0.05)' : 'rgba(15,118,110,0.08)',\n color: dark ? '#fff' : 'var(--tps-primary)',\n fontWeight: 600,\n }}\n >\n ✓ {success_message || \"You're subscribed.\"}\n </div>\n ) : (\n <Form\n form={form}\n onFinish={onSubmit}\n layout=\"inline\"\n style={{ justifyContent: 'center', flexWrap: 'nowrap', gap: 8 }}\n >\n <Form.Item\n name=\"email\"\n rules={[\n { required: true, message: 'Email required' },\n { type: 'email', message: 'Enter a valid email' },\n ]}\n style={{ flex: 1, maxWidth: 360, marginInlineEnd: 0 }}\n >\n <Input size=\"large\" placeholder=\"you@company.com\" />\n </Form.Item>\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={submitting}\n icon={<ArrowRightOutlined />}\n >\n {button_label || 'Subscribe'}\n </Button>\n </Form>\n )}\n </div>\n </section>\n );\n}\n\nexport const NewsletterSignup = {\n label: 'Newsletter signup',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n body: { type: 'textarea', label: 'Body' },\n button_label: { type: 'text', label: 'Button label' },\n success_message: { type: 'text', label: 'Success message' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'STAY IN THE LOOP',\n heading: 'Get the good stuff in your inbox.',\n body:\n 'A short, friendly pitch for the newsletter. One sentence on what subscribers get and how often.',\n button_label: 'Subscribe',\n success_message: \"You're in. Talk soon.\",\n background: 'soft',\n },\n render: (props) => <NewsletterSignupRender {...props} />,\n};\n","// TeamGrid — team member cards (photo, name, role, bio, LinkedIn link).\n\nimport { LinkedinFilled } from '@ant-design/icons';\n\nexport const TeamGrid = {\n label: 'Team grid',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n { label: '4', value: 4 },\n ],\n },\n members: {\n type: 'array',\n label: 'Team members',\n arrayFields: {\n name: { type: 'text', label: 'Name' },\n role: { type: 'text', label: 'Role' },\n bio: { type: 'textarea', label: 'Short bio', rows: 3 },\n image_url: { type: 'text', label: 'Photo URL' },\n linkedin: { type: 'text', label: 'LinkedIn URL' },\n },\n defaultItemProps: {\n name: 'New team member',\n role: 'Role',\n bio: 'A short bio (2–3 sentences).',\n image_url: '',\n linkedin: '',\n },\n getItemSummary: (item, i) => item?.name || `Member ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'The team',\n heading: 'The people behind the work.',\n columns: 3,\n members: [\n {\n name: 'Alex Morgan',\n role: 'Founder',\n bio: 'Spent a decade building product teams before starting the studio. Writes about craft, hiring, and shipping.',\n image_url: '',\n linkedin: '',\n },\n {\n name: 'Priya Shah',\n role: 'Head of design',\n bio: 'Leads the design practice across web, brand, and product. Previously at a design-led SaaS company.',\n image_url: '',\n linkedin: '',\n },\n {\n name: 'Jordan Lee',\n role: 'Engineering lead',\n bio: 'Front-end at heart, full-stack by necessity. Cares deeply about accessibility and performance.',\n image_url: '',\n linkedin: '',\n },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, members, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fill, minmax(min(${\n columns === 4 ? 220 : columns === 3 ? 260 : 320\n }px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(members || []).map((m, i) => (\n <div\n key={i}\n style={{\n background: '#fff',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n width: '100%',\n aspectRatio: '4 / 3',\n background: m.image_url ? `url(${m.image_url}) center/cover` : '#E2E8F0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#94A3B8',\n fontSize: 13,\n }}\n >\n {!m.image_url && (m.name || 'Photo')}\n </div>\n <div style={{ padding: 20 }}>\n <h3 style={{ fontSize: 18, fontWeight: 700, margin: '0 0 4px' }}>\n {m.name}\n </h3>\n <div\n style={{\n fontSize: 12,\n color: 'var(--tps-accent-dark)',\n fontWeight: 700,\n letterSpacing: 1,\n marginBottom: 12,\n textTransform: 'uppercase',\n }}\n >\n {m.role}\n </div>\n {m.bio && (\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.6, fontSize: 14, margin: 0 }}>\n {m.bio}\n </p>\n )}\n {m.linkedin && (\n <a\n href={m.linkedin}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label={`${m.name} on LinkedIn`}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n marginTop: 14,\n color: 'var(--tps-primary)',\n fontSize: 13,\n fontWeight: 600,\n textDecoration: 'none',\n }}\n >\n <LinkedinFilled /> LinkedIn\n </a>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// Banner — full-width announcement strip. Use for \"we're hiring\", a new\n// service launch, an event invite, etc. Variant controls the colour\n// scheme; the optional link turns it into a clickable strip.\n\nimport { StudioLink as Link } from '../context';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\n// `info` is the \"brand-coloured\" variant. It reads --tps-primary-soft for the\n// background (so a brand without a soft tint defined falls back to the teal\n// palette) and --tps-primary for the foreground/accent.\nconst VARIANTS = {\n info: {\n bg: 'var(--tps-primary-soft, #E0F2F1)',\n fg: 'var(--tps-primary, #0b60d8)',\n accent: 'var(--tps-primary, #0b60d8)',\n },\n success: { bg: '#DCFCE7', fg: '#15803D', accent: '#15803D' },\n warning: { bg: '#FEF3C7', fg: '#92400E', accent: '#B45309' },\n dark: {\n bg: 'var(--tps-ink, #0F172A)',\n fg: '#FFFFFF',\n accent: 'var(--tps-accent, #F59E0B)',\n },\n};\n\nexport const Banner = {\n label: 'Banner',\n fields: {\n variant: {\n type: 'select',\n label: 'Style',\n options: [\n { label: 'Info (teal)', value: 'info' },\n { label: 'Success (green)', value: 'success' },\n { label: 'Warning (amber)', value: 'warning' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n label: { type: 'text', label: 'Small label (left, optional)' },\n title: { type: 'text', label: 'Title' },\n body: { type: 'text', label: 'Body (one line)' },\n link_label: { type: 'text', label: 'Link label (optional)' },\n link_href: { type: 'text', label: 'Link URL' },\n },\n defaultProps: {\n variant: 'info',\n label: 'NEW',\n title: 'Something fresh just landed',\n body: 'A short, one-line update you can rewrite.',\n link_label: 'Learn more',\n link_href: '/services',\n },\n render: ({ variant, label, title, body, link_label, link_href }) => {\n const v = VARIANTS[variant] || VARIANTS.info;\n return (\n <section\n style={{\n background: v.bg,\n color: v.fg,\n padding: '16px 24px',\n }}\n >\n <div\n style={{\n maxWidth: 1240,\n margin: '0 auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n gap: 12,\n fontSize: 14,\n textAlign: 'center',\n }}\n >\n {label && (\n <span\n style={{\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 1.5,\n padding: '3px 8px',\n borderRadius: 4,\n background: v.accent,\n color: '#fff',\n }}\n >\n {label}\n </span>\n )}\n {title && <strong style={{ fontWeight: 700 }}>{title}</strong>}\n {body && <span style={{ opacity: 0.9 }}>{body}</span>}\n {link_label && link_href && (\n <Link\n href={link_href}\n style={{\n color: v.accent,\n fontWeight: 700,\n textDecoration: 'none',\n display: 'inline-flex',\n alignItems: 'center',\n gap: 4,\n }}\n >\n {link_label} <ArrowRightOutlined />\n </Link>\n )}\n </div>\n </section>\n );\n },\n};\n","// ArticleFeatured — large hero-style featured article. Big image on one\n// side, tag/headline/excerpt/byline + CTA on the other. The \"lead story\"\n// of a blog or news section.\n\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const ArticleFeatured = {\n label: 'Article — featured',\n fields: {\n eyebrow: { type: 'text', label: 'Section eyebrow (optional)' },\n tag: { type: 'text', label: 'Article tag (small, coloured)' },\n headline: { type: 'text', label: 'Headline' },\n excerpt: { type: 'textarea', label: 'Excerpt', rows: 3 },\n image_url: { type: 'text', label: 'Cover image URL' },\n image_alt: { type: 'text', label: 'Image alt text' },\n author: { type: 'text', label: 'Author' },\n date: { type: 'text', label: 'Published date (e.g. Mar 2026)' },\n read_minutes: { type: 'text', label: 'Read time (e.g. 6 min)' },\n link_label: { type: 'text', label: 'Read button label' },\n link_href: { type: 'text', label: 'Article URL' },\n image_position: {\n type: 'radio',\n label: 'Image position',\n options: [\n { label: 'Right', value: 'right' },\n { label: 'Left', value: 'left' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Featured',\n tag: 'STORY',\n headline: 'A catchy headline that makes a reader want to click.',\n excerpt:\n 'A short, one-paragraph excerpt that previews the story. Replace this with your own.',\n image_url: '',\n image_alt: '',\n author: 'Author name',\n date: 'Mar 2026',\n read_minutes: '6 min',\n link_label: 'Read more',\n link_href: '#',\n image_position: 'right',\n },\n render: ({\n eyebrow,\n tag,\n headline,\n excerpt,\n image_url,\n image_alt,\n author,\n date,\n read_minutes,\n link_label,\n link_href,\n image_position,\n }) => {\n const image = (\n <div\n style={{\n width: '100%',\n aspectRatio: '4 / 3',\n background: image_url ? `url(${image_url}) center/cover no-repeat` : '#0F172A',\n borderRadius: 'var(--tps-radius)',\n backgroundClip: 'padding-box',\n }}\n role={image_url ? 'img' : undefined}\n aria-label={image_url ? image_alt || '' : undefined}\n >\n {!image_url && (\n <div\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#94A3B8',\n fontSize: 14,\n }}\n >\n Cover image\n </div>\n )}\n </div>\n );\n const text = (\n <div>\n {tag && (\n <span\n style={{\n display: 'inline-block',\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: '#fff',\n background: 'var(--tps-primary)',\n padding: '4px 10px',\n borderRadius: 4,\n marginBottom: 16,\n }}\n >\n {tag}\n </span>\n )}\n <h2\n className=\"tps-h2\"\n style={{ marginTop: 0, marginBottom: 16, lineHeight: 1.15 }}\n >\n {headline}\n </h2>\n {excerpt && <p className=\"tps-lede\" style={{ marginBottom: 24 }}>{excerpt}</p>}\n <div\n style={{\n display: 'flex',\n gap: 14,\n alignItems: 'center',\n color: 'var(--tps-muted)',\n fontSize: 13,\n marginBottom: 24,\n }}\n >\n {author && <span style={{ fontWeight: 600 }}>{author}</span>}\n {date && (\n <>\n <span aria-hidden>·</span>\n <span>{date}</span>\n </>\n )}\n {read_minutes && (\n <>\n <span aria-hidden>·</span>\n <span>{read_minutes} read</span>\n </>\n )}\n </div>\n {link_label && (\n <Link href={link_href || '#'}>\n <Button type=\"primary\" size=\"large\">\n {link_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n </div>\n );\n\n return (\n <section className=\"tps-section\" style={{ paddingTop: 64, paddingBottom: 64 }}>\n <div className=\"tps-container\">\n {eyebrow && (\n <div style={{ marginBottom: 32 }}>\n <span className=\"tps-eyebrow\">{eyebrow}</span>\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(320px, 100%), 1fr))',\n gap: 48,\n alignItems: 'center',\n }}\n >\n {image_position === 'left' ? (\n <>\n {image}\n {text}\n </>\n ) : (\n <>\n {text}\n {image}\n </>\n )}\n </div>\n </div>\n </section>\n );\n },\n};\n","// ArticleGrid — grid of article cards (image + tag + headline + excerpt +\n// byline). Standard blog/news landing layout.\n\nimport { StudioLink as Link } from '../context';\n\nexport const ArticleGrid = {\n label: 'Article — grid',\n fields: {\n eyebrow: { type: 'text', label: 'Section eyebrow' },\n heading: { type: 'text', label: 'Section heading' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n ],\n },\n items: {\n type: 'array',\n label: 'Articles',\n arrayFields: {\n tag: { type: 'text', label: 'Tag' },\n headline: { type: 'text', label: 'Headline' },\n excerpt: { type: 'textarea', label: 'Excerpt', rows: 2 },\n image_url: { type: 'text', label: 'Cover image URL' },\n author: { type: 'text', label: 'Author' },\n date: { type: 'text', label: 'Date' },\n href: { type: 'text', label: 'Link URL' },\n },\n defaultItemProps: {\n tag: 'INSIGHT',\n headline: 'New article headline',\n excerpt: 'A short excerpt that gives the reader a reason to click through.',\n image_url: '',\n author: 'Author name',\n date: 'Mar 2026',\n href: '#',\n },\n getItemSummary: (item, i) => item?.headline || `Article ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Latest',\n heading: 'Where good ideas grow.',\n columns: 3,\n items: [\n {\n tag: 'STORY',\n headline: 'A catchy article headline goes here',\n excerpt: 'A short, friendly preview that you can rewrite.',\n image_url: '',\n author: 'Author name',\n date: 'Mar 2026',\n href: '#',\n },\n {\n tag: 'GUIDE',\n headline: 'Another headline that earns the click',\n excerpt: 'A short, friendly preview that you can rewrite.',\n image_url: '',\n author: 'Author name',\n date: 'Feb 2026',\n href: '#',\n },\n {\n tag: 'OPINION',\n headline: 'A third headline to round out the row',\n excerpt: 'A short, friendly preview that you can rewrite.',\n image_url: '',\n author: 'Author name',\n date: 'Jan 2026',\n href: '#',\n },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${columns === 2 ? 360 : 280}px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(items || []).map((a, i) => (\n <Link\n key={i}\n href={a.href || '#'}\n style={{\n display: 'flex',\n flexDirection: 'column',\n background: '#fff',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n overflow: 'hidden',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n transition: 'transform 200ms ease, box-shadow 200ms ease',\n }}\n className=\"tps-card-hover\"\n >\n <div\n style={{\n width: '100%',\n aspectRatio: '16 / 10',\n background: a.image_url ? `url(${a.image_url}) center/cover no-repeat` : '#E2E8F0',\n }}\n />\n <div style={{ padding: 24, display: 'flex', flexDirection: 'column', gap: 12, flex: 1 }}>\n {a.tag && (\n <span\n style={{\n fontSize: 10,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n }}\n >\n {a.tag}\n </span>\n )}\n <h3 style={{ fontSize: 19, fontWeight: 700, margin: 0, lineHeight: 1.3 }}>\n {a.headline}\n </h3>\n {a.excerpt && (\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.6, margin: 0, fontSize: 14, flex: 1 }}>\n {a.excerpt}\n </p>\n )}\n <div\n style={{\n display: 'flex',\n gap: 8,\n fontSize: 12,\n color: 'var(--tps-muted)',\n marginTop: 4,\n }}\n >\n {a.author && <span style={{ fontWeight: 600 }}>{a.author}</span>}\n {a.date && (\n <>\n <span aria-hidden>·</span>\n <span>{a.date}</span>\n </>\n )}\n </div>\n </div>\n </Link>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// ArticleList — text-heavy chronological list (no images). Best for an\n// archive page or sidebar \"more posts\" rail. Each row is a date + headline\n// + one-line excerpt.\n\nimport { StudioLink as Link } from '../context';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const ArticleList = {\n label: 'Article — list',\n fields: {\n eyebrow: { type: 'text', label: 'Section eyebrow' },\n heading: { type: 'text', label: 'Section heading' },\n items: {\n type: 'array',\n label: 'Articles',\n arrayFields: {\n date: { type: 'text', label: 'Date' },\n tag: { type: 'text', label: 'Tag (optional)' },\n headline: { type: 'text', label: 'Headline' },\n excerpt: { type: 'text', label: 'One-line excerpt' },\n href: { type: 'text', label: 'Link URL' },\n },\n defaultItemProps: {\n date: 'Mar 2026',\n tag: 'GUIDE',\n headline: 'New article',\n excerpt: 'One-line description.',\n href: '#',\n },\n getItemSummary: (item, i) => item?.headline || `Article ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Archive',\n heading: 'All articles.',\n items: [\n { date: 'Mar 2026', tag: 'STORY', headline: 'A catchy article headline goes here', excerpt: 'A one-line preview you can rewrite.', href: '#' },\n { date: 'Feb 2026', tag: 'GUIDE', headline: 'Another headline that earns the click', excerpt: 'A one-line preview you can rewrite.', href: '#' },\n { date: 'Jan 2026', tag: 'OPINION', headline: 'A third headline to fill out the list', excerpt: 'A one-line preview you can rewrite.', href: '#' },\n { date: 'Dec 2025', tag: 'STORY', headline: 'One more headline for good measure', excerpt: 'A one-line preview you can rewrite.', href: '#' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <ul style={{ listStyle: 'none', padding: 0, margin: 0 }}>\n {(items || []).map((a, i) => (\n <li\n key={i}\n style={{\n borderBottom: '1px solid var(--tps-line)',\n }}\n >\n <Link\n href={a.href || '#'}\n className=\"tps-row-stack\"\n style={{\n display: 'grid',\n gridTemplateColumns: '110px 1fr auto',\n alignItems: 'baseline',\n gap: 24,\n padding: '20px 0',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n }}\n >\n <div\n style={{\n fontSize: 12,\n color: 'var(--tps-muted)',\n fontWeight: 600,\n }}\n >\n {a.date}\n </div>\n <div>\n {a.tag && (\n <span\n style={{\n display: 'inline-block',\n fontSize: 10,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n marginRight: 12,\n }}\n >\n {a.tag}\n </span>\n )}\n <span\n style={{\n fontSize: 17,\n fontWeight: 600,\n lineHeight: 1.4,\n }}\n >\n {a.headline}\n </span>\n {a.excerpt && (\n <div\n style={{\n marginTop: 4,\n color: 'var(--tps-muted)',\n fontSize: 14,\n }}\n >\n {a.excerpt}\n </div>\n )}\n </div>\n <ArrowRightOutlined style={{ color: 'var(--tps-muted)', fontSize: 14 }} />\n </Link>\n </li>\n ))}\n </ul>\n </div>\n </section>\n ),\n};\n","// IconCards — small icon + title + 1-line body, in a 3 / 4-column grid.\n// Lighter than PillarsRow — meant for sub-features or quick \"what you get\"\n// rundowns under a primary section.\n\nimport {\n CheckCircleOutlined,\n ApartmentOutlined,\n ToolOutlined,\n ThunderboltOutlined,\n RocketOutlined,\n SafetyCertificateOutlined,\n TeamOutlined,\n GlobalOutlined,\n BarChartOutlined,\n BulbOutlined,\n ClockCircleOutlined,\n TrophyOutlined,\n FileSearchOutlined,\n AuditOutlined,\n} from '@ant-design/icons';\n\nconst ICONS = {\n CheckCircleOutlined,\n ApartmentOutlined,\n ToolOutlined,\n ThunderboltOutlined,\n RocketOutlined,\n SafetyCertificateOutlined,\n TeamOutlined,\n GlobalOutlined,\n BarChartOutlined,\n BulbOutlined,\n ClockCircleOutlined,\n TrophyOutlined,\n FileSearchOutlined,\n AuditOutlined,\n};\nconst ICON_OPTIONS = Object.keys(ICONS).map((k) => ({ label: k, value: k }));\n\nexport const IconCards = {\n label: 'Icon cards',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n { label: '4', value: 4 },\n ],\n },\n items: {\n type: 'array',\n label: 'Cards',\n arrayFields: {\n icon: { type: 'select', label: 'Icon', options: ICON_OPTIONS },\n title: { type: 'text', label: 'Title' },\n body: { type: 'textarea', label: 'Body', rows: 2 },\n },\n defaultItemProps: {\n icon: 'CheckCircleOutlined',\n title: 'Card title',\n body: 'A short description (1–2 lines).',\n },\n getItemSummary: (item, i) => item?.title || `Card ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: '',\n heading: '',\n columns: 4,\n items: [\n { icon: 'CheckCircleOutlined', title: 'Built to last', body: 'Short, punchy supporting copy.' },\n { icon: 'ClockCircleOutlined', title: 'Quick to ship', body: 'Short, punchy supporting copy.' },\n { icon: 'TeamOutlined', title: 'Made with care', body: 'Short, punchy supporting copy.' },\n { icon: 'TrophyOutlined', title: 'Worth keeping', body: 'Short, punchy supporting copy.' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${\n columns === 4 ? 200 : columns === 3 ? 260 : 320\n }px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(items || []).map((c, i) => {\n const Icon = ICONS[c.icon] || CheckCircleOutlined;\n return (\n <div\n key={i}\n style={{\n padding: 24,\n background: '#fff',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n }}\n >\n <div\n style={{\n width: 40,\n height: 40,\n borderRadius: 8,\n background: 'rgba(15, 118, 110, 0.1)',\n color: 'var(--tps-primary)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 18,\n marginBottom: 16,\n }}\n >\n <Icon />\n </div>\n <h3 style={{ fontSize: 16, fontWeight: 700, margin: '0 0 6px' }}>\n {c.title}\n </h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.55, margin: 0, fontSize: 14 }}>\n {c.body}\n </p>\n </div>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// MetricCards — large-number cards with optional trend indicator. The\n// \"by the numbers\" section. Bigger, bolder, more visual than StatsStrip.\n\nimport { ArrowUpOutlined, ArrowDownOutlined } from '@ant-design/icons';\n\nexport const MetricCards = {\n label: 'Metric cards',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n items: {\n type: 'array',\n label: 'Metrics',\n arrayFields: {\n value: { type: 'text', label: 'Value (e.g. 80%, 4.8/5)' },\n label: { type: 'text', label: 'Label' },\n delta: { type: 'text', label: 'Trend label (e.g. +12 YoY)' },\n trend: {\n type: 'select',\n label: 'Trend direction',\n options: [\n { label: 'None', value: 'none' },\n { label: 'Up (positive)', value: 'up' },\n { label: 'Down (positive)', value: 'down' },\n ],\n },\n },\n defaultItemProps: { value: '0', label: 'New metric', delta: '', trend: 'none' },\n getItemSummary: (item, i) => item?.label || `Metric ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'By the numbers',\n heading: 'Results that speak for themselves.',\n items: [\n { value: '80%', label: 'A short, generic stat label you can rewrite', delta: '+12 YoY', trend: 'up' },\n { value: '4 wk', label: 'Median time to first ship', delta: '−2 wk vs avg.', trend: 'up' },\n { value: '4.8 / 5', label: 'Customer satisfaction', delta: '', trend: 'none' },\n { value: '0', label: 'Late deliveries this quarter', delta: '', trend: 'none' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => {\n const dark = background === 'dark';\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{\n paddingTop: 64,\n paddingBottom: 64,\n background: dark ? '#0F172A' : undefined,\n color: dark ? '#fff' : undefined,\n }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && (\n <span\n className=\"tps-eyebrow\"\n style={{ color: dark ? '#F59E0B' : undefined }}\n >\n {eyebrow}\n </span>\n )}\n {heading && (\n <h2\n className=\"tps-h2\"\n style={{ marginTop: 8, color: dark ? '#fff' : undefined }}\n >\n {heading}\n </h2>\n )}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(220px, 100%), 1fr))',\n gap: 16,\n }}\n >\n {(items || []).map((m, i) => (\n <div\n key={i}\n style={{\n padding: 28,\n background: dark ? 'rgba(255,255,255,0.04)' : '#fff',\n border: dark ? '1px solid rgba(255,255,255,0.08)' : '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n }}\n >\n <div\n style={{\n fontSize: 'clamp(28px, 6vw, 44px)',\n fontWeight: 800,\n color: dark ? '#fff' : 'var(--tps-primary)',\n letterSpacing: '-0.02em',\n lineHeight: 1.05,\n marginBottom: 12,\n }}\n >\n {m.value}\n </div>\n <div\n style={{\n fontSize: 14,\n color: dark ? 'rgba(255,255,255,0.85)' : 'var(--tps-ink-2)',\n lineHeight: 1.55,\n marginBottom: m.delta ? 12 : 0,\n }}\n >\n {m.label}\n </div>\n {m.delta && m.trend !== 'none' && (\n <div\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 4,\n fontSize: 12,\n fontWeight: 700,\n padding: '4px 8px',\n borderRadius: 4,\n background:\n m.trend === 'up'\n ? 'rgba(15, 128, 61, 0.12)'\n : 'rgba(220, 38, 38, 0.12)',\n color: m.trend === 'up' ? '#15803D' : '#DC2626',\n }}\n >\n {m.trend === 'up' ? <ArrowUpOutlined /> : <ArrowDownOutlined />}\n {m.delta}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n },\n};\n","// ImageOverlayCards — full-bleed image cards with text overlay. The\n// \"category\" / \"explore\" pattern. Click-through to a destination URL.\n\nimport { StudioLink as Link } from '../context';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const ImageOverlayCards = {\n label: 'Image overlay cards',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n ],\n },\n items: {\n type: 'array',\n label: 'Cards',\n arrayFields: {\n kicker: { type: 'text', label: 'Kicker (small label)' },\n title: { type: 'text', label: 'Title' },\n body: { type: 'textarea', label: 'Body', rows: 2 },\n image_url: { type: 'text', label: 'Background image URL' },\n href: { type: 'text', label: 'Link URL' },\n },\n defaultItemProps: {\n kicker: 'CATEGORY',\n title: 'New card',\n body: 'Short description.',\n image_url: '',\n href: '#',\n },\n getItemSummary: (item, i) => item?.title || `Card ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Explore',\n heading: 'Pick a place to start.',\n columns: 3,\n items: [\n { kicker: 'CATEGORY', title: 'A category title', body: 'A short, friendly description.', image_url: '', href: '/services' },\n { kicker: 'CATEGORY', title: 'Another category', body: 'A short, friendly description.', image_url: '', href: '/services' },\n { kicker: 'CATEGORY', title: 'One more option', body: 'A short, friendly description.', image_url: '', href: '/services' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${columns === 2 ? 360 : 280}px, 100%), 1fr))`,\n gap: 16,\n }}\n >\n {(items || []).map((c, i) => (\n <Link\n key={i}\n href={c.href || '#'}\n style={{\n position: 'relative',\n display: 'block',\n aspectRatio: '4 / 5',\n borderRadius: 'var(--tps-radius)',\n overflow: 'hidden',\n textDecoration: 'none',\n color: '#fff',\n background: c.image_url\n ? `linear-gradient(180deg, rgba(15, 23, 42, 0.05) 0%, rgba(15, 23, 42, 0.85) 80%), url(${c.image_url}) center/cover no-repeat`\n : 'linear-gradient(180deg, var(--tps-primary, #0b60d8) 0%, var(--tps-ink, #0F172A) 100%)',\n }}\n className=\"tps-overlay-card\"\n >\n <div\n style={{\n position: 'absolute',\n inset: 0,\n padding: 24,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n }}\n >\n {c.kicker && (\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: '#F59E0B',\n marginBottom: 8,\n }}\n >\n {c.kicker}\n </div>\n )}\n <h3\n style={{\n fontSize: 22,\n fontWeight: 700,\n margin: '0 0 8px',\n lineHeight: 1.2,\n }}\n >\n {c.title}\n </h3>\n {c.body && (\n <p\n style={{\n margin: 0,\n fontSize: 14,\n lineHeight: 1.5,\n color: 'rgba(255,255,255,0.85)',\n }}\n >\n {c.body}\n </p>\n )}\n <div\n style={{\n marginTop: 16,\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n fontSize: 13,\n fontWeight: 700,\n }}\n >\n Explore <ArrowRightOutlined />\n </div>\n </div>\n </Link>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// PricingTable — 3-tier pricing cards with feature lists.\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { CheckOutlined } from '@ant-design/icons';\n\nexport const PricingTable = {\n label: 'Pricing table',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n tiers: {\n type: 'array',\n label: 'Tiers',\n arrayFields: {\n name: { type: 'text', label: 'Tier name' },\n price: { type: 'text', label: 'Price (e.g. $499)' },\n period: { type: 'text', label: 'Period (e.g. /mo, one-time)' },\n description: { type: 'text', label: 'One-line description' },\n features: { type: 'textarea', label: 'Features (one per line)', rows: 6 },\n cta_label: { type: 'text', label: 'CTA label' },\n cta_href: { type: 'text', label: 'CTA URL' },\n highlighted: {\n type: 'radio',\n label: 'Highlight',\n options: [\n { label: 'No', value: false },\n { label: 'Yes', value: true },\n ],\n },\n },\n defaultItemProps: {\n name: 'New tier', price: '', period: '', description: '',\n features: '', cta_label: 'Get started', cta_href: '/contact', highlighted: false,\n },\n getItemSummary: (item, i) => item?.name || `Tier ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: 'Pricing',\n heading: 'Simple plans for every team.',\n tiers: [\n { name: 'Starter', price: '$19', period: '/mo', description: 'Everything you need to get going.', features: 'Up to 3 seats\\nCore features\\nEmail support', cta_label: 'Get started', cta_href: '/contact', highlighted: false },\n { name: 'Pro', price: '$49', period: '/mo', description: 'For growing teams that need more.', features: 'Up to 20 seats\\nAll Starter features\\nPriority support\\nAdvanced analytics', cta_label: 'Start free trial', cta_href: '/contact', highlighted: true },\n { name: 'Enterprise', price: 'Custom', period: 'annual', description: 'For teams with bigger needs.', features: 'Unlimited seats\\nAll Pro features\\nDedicated manager\\nCustom SLAs', cta_label: 'Talk to sales', cta_href: '/contact', highlighted: false },\n ],\n background: 'soft',\n },\n render: ({ eyebrow, heading, tiers, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 64, paddingBottom: 64 }}>\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ textAlign: 'center', marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(260px, 100%), 1fr))', gap: 16, alignItems: 'stretch' }}>\n {(tiers || []).map((t, i) => {\n const featList = (t.features || '').split('\\n').map((s) => s.trim()).filter(Boolean);\n return (\n <div key={i} style={{\n position: 'relative', padding: 28,\n background: t.highlighted ? 'var(--tps-primary)' : '#fff',\n color: t.highlighted ? '#fff' : 'var(--tps-ink)',\n border: t.highlighted ? 'none' : '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n boxShadow: t.highlighted ? '0 16px 40px -16px rgba(15,118,110,0.45)' : 'none',\n display: 'flex', flexDirection: 'column', gap: 16,\n }}>\n {t.highlighted && (\n <div style={{ position: 'absolute', top: -10, left: '50%', transform: 'translateX(-50%)', background: '#F59E0B', color: '#0F172A', fontSize: 11, fontWeight: 700, letterSpacing: 1, padding: '3px 10px', borderRadius: 4 }}>POPULAR</div>\n )}\n <div>\n <div style={{ fontSize: 14, fontWeight: 700, opacity: 0.9 }}>{t.name}</div>\n <div style={{ display: 'flex', alignItems: 'baseline', gap: 6, marginTop: 6 }}>\n <span style={{ fontSize: 'clamp(28px, 6vw, 36px)', fontWeight: 800, letterSpacing: '-0.02em' }}>{t.price}</span>\n {t.period && <span style={{ fontSize: 13, opacity: 0.75 }}>{t.period}</span>}\n </div>\n {t.description && <p style={{ marginTop: 8, marginBottom: 0, fontSize: 14, opacity: 0.85, lineHeight: 1.5 }}>{t.description}</p>}\n </div>\n <ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: 8, flex: 1 }}>\n {featList.map((f, j) => (\n <li key={j} style={{ display: 'flex', gap: 8, alignItems: 'flex-start', fontSize: 14, lineHeight: 1.5 }}>\n <CheckOutlined style={{ color: t.highlighted ? '#F59E0B' : 'var(--tps-primary)', fontSize: 14, marginTop: 4 }} />\n <span>{f}</span>\n </li>\n ))}\n </ul>\n {t.cta_label && (\n <Link href={t.cta_href || '/contact'}>\n <Button block size=\"large\" type={t.highlighted ? 'default' : 'primary'} ghost={!t.highlighted ? false : true}>\n {t.cta_label}\n </Button>\n </Link>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// PricingComparison — feature comparison table across N tiers. For \"what's\n// in / what's out\" matrices.\nimport { CheckOutlined, CloseOutlined } from '@ant-design/icons';\n\nexport const PricingComparison = {\n label: 'Pricing comparison',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n tiers: {\n type: 'array', label: 'Tier columns',\n arrayFields: {\n name: { type: 'text', label: 'Tier name' },\n },\n defaultItemProps: { name: 'Tier' },\n getItemSummary: (it, i) => it?.name || `Tier ${i + 1}`,\n },\n rows: {\n type: 'array', label: 'Feature rows',\n arrayFields: {\n feature: { type: 'text', label: 'Feature' },\n values: { type: 'text', label: 'Per-tier values (CSV; \"yes\"/\"no\" for ticks)' },\n },\n defaultItemProps: { feature: 'Feature', values: 'yes,yes,yes' },\n getItemSummary: (it, i) => it?.feature || `Row ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: 'Compare', heading: 'What you get at each tier.',\n tiers: [{ name: 'Starter' }, { name: 'Pro' }, { name: 'Enterprise' }],\n rows: [\n { feature: 'Core features', values: 'yes,yes,yes' },\n { feature: 'Priority support', values: 'no,yes,yes' },\n { feature: 'Advanced analytics', values: 'no,yes,yes' },\n { feature: 'Single sign-on', values: 'no,no,yes' },\n { feature: 'Dedicated manager', values: 'no,no,yes' },\n { feature: 'Custom SLAs', values: 'no,no,yes' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, tiers, rows, background }) => {\n const tierList = tiers || [];\n return (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ maxWidth: 940 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32, textAlign: 'center' }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div style={{ overflowX: 'auto', border: '1px solid var(--tps-line)', borderRadius: 'var(--tps-radius)', background: '#fff' }}>\n <table style={{ width: '100%', borderCollapse: 'collapse' }}>\n <thead>\n <tr>\n <th style={{ textAlign: 'left', padding: '14px 16px', fontSize: 13, fontWeight: 700, color: 'var(--tps-muted)', borderBottom: '1px solid var(--tps-line)' }}>Feature</th>\n {tierList.map((t, i) => (\n <th key={i} style={{ textAlign: 'center', padding: '14px 16px', fontSize: 13, fontWeight: 700, color: 'var(--tps-ink)', borderBottom: '1px solid var(--tps-line)' }}>{t.name}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {(rows || []).map((r, i) => {\n const vals = (r.values || '').split(',').map((v) => v.trim());\n return (\n <tr key={i}>\n <td style={{ padding: '14px 16px', fontSize: 14, fontWeight: 500, borderBottom: '1px solid var(--tps-line)' }}>{r.feature}</td>\n {tierList.map((_, j) => {\n const v = vals[j] || '';\n const isYes = v.toLowerCase() === 'yes';\n const isNo = v.toLowerCase() === 'no';\n return (\n <td key={j} style={{ padding: '14px 16px', textAlign: 'center', borderBottom: '1px solid var(--tps-line)', fontSize: 14, color: isYes ? 'var(--tps-primary)' : isNo ? '#CBD5E1' : 'var(--tps-ink)' }}>\n {isYes ? <CheckOutlined /> : isNo ? <CloseOutlined /> : v}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n </section>\n );\n },\n};\n","// AwardsBar — certifications/awards row. Same shape as LogoStrip but with\n// a more prominent label per award (year, body) suited for accreditation\n// strips like \"ISO 22000 · 2024 · DNV\".\nimport { TrophyOutlined } from '@ant-design/icons';\n\nexport const AwardsBar = {\n label: 'Awards / certifications',\n fields: {\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array',\n label: 'Awards',\n arrayFields: {\n title: { type: 'text', label: 'Title' },\n body: { type: 'text', label: 'Body / sub-line' },\n year: { type: 'text', label: 'Year (optional)' },\n },\n defaultItemProps: { title: 'New award', body: 'Issuing body', year: '' },\n getItemSummary: (it, i) => it?.title || `Award ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n heading: 'Recognised work',\n items: [\n { title: 'Award name', body: 'Issuing body', year: '2024' },\n { title: 'Another award', body: 'Issuing body', year: '2023' },\n { title: 'One more honour', body: 'Issuing body', year: '2023' },\n ],\n background: 'white',\n },\n render: ({ heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ textAlign: 'center' }}>\n {heading && <h3 style={{ fontSize: 13, fontWeight: 700, letterSpacing: 1.5, color: 'var(--tps-muted)', textTransform: 'uppercase', marginBottom: 32 }}>{heading}</h3>}\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(220px, 100%), 1fr))', gap: 24 }}>\n {(items || []).map((a, i) => (\n <div key={i} style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 8, padding: 16 }}>\n <TrophyOutlined style={{ fontSize: 28, color: 'var(--tps-accent)' }} />\n <div style={{ fontWeight: 700, fontSize: 15 }}>{a.title}</div>\n {a.body && <div style={{ fontSize: 13, color: 'var(--tps-muted)' }}>{a.body}</div>}\n {a.year && <div style={{ fontSize: 11, color: 'var(--tps-muted)', letterSpacing: 1 }}>{a.year}</div>}\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","'use client';\n// CountUpStats — animated counter stats. Numbers tick from 0 to value\n// when scrolled into view. Subtle, used for \"by the numbers\" hero strips.\nimport { useEffect, useRef, useState } from 'react';\n\nfunction CountUp({ to, duration = 1200, prefix = '', suffix = '' }) {\n const [val, setVal] = useState(0);\n const ref = useRef(null);\n const started = useRef(false);\n useEffect(() => {\n if (!ref.current) return;\n const io = new IntersectionObserver(([e]) => {\n if (e.isIntersecting && !started.current) {\n started.current = true;\n const target = Number(to) || 0;\n const start = performance.now();\n const tick = (t) => {\n const p = Math.min(1, (t - start) / duration);\n const eased = 1 - Math.pow(1 - p, 3);\n setVal(Math.round(target * eased));\n if (p < 1) requestAnimationFrame(tick);\n };\n requestAnimationFrame(tick);\n }\n }, { threshold: 0.4 });\n io.observe(ref.current);\n return () => io.disconnect();\n }, [to, duration]);\n return <span ref={ref}>{prefix}{val.toLocaleString()}{suffix}</span>;\n}\n\nexport const CountUpStats = {\n label: 'Count-up stats',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Stats',\n arrayFields: {\n value: { type: 'text', label: 'Numeric value (e.g. 80)' },\n prefix: { type: 'text', label: 'Prefix (e.g. $, +)' },\n suffix: { type: 'text', label: 'Suffix (e.g. %, +)' },\n label: { type: 'text', label: 'Label' },\n },\n defaultItemProps: { value: '0', prefix: '', suffix: '', label: 'New stat' },\n getItemSummary: (it, i) => it?.label || `Stat ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: 'By the numbers',\n heading: '',\n items: [\n { value: '120', prefix: '', suffix: '+', label: 'Happy customers' },\n { value: '80', prefix: '', suffix: '%', label: 'Time saved on average' },\n { value: '24', prefix: '', suffix: '/7', label: 'Support, always on' },\n { value: '5', prefix: '', suffix: '★', label: 'Average review' },\n ],\n background: 'soft',\n },\n render: ({ eyebrow, heading, items, background }) => {\n const dark = background === 'dark';\n return (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 64, paddingBottom: 64, background: dark ? '#0F172A' : undefined, color: dark ? '#fff' : undefined }}>\n <div className=\"tps-container\" style={{ textAlign: 'center' }}>\n {eyebrow && <span className=\"tps-eyebrow\" style={{ color: dark ? '#F59E0B' : undefined }}>{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8, color: dark ? '#fff' : undefined, marginBottom: 32 }}>{heading}</h2>}\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(180px, 100%), 1fr))', gap: 32, marginTop: heading ? 16 : 0 }}>\n {(items || []).map((s, i) => (\n <div key={i}>\n <div style={{ fontSize: 48, fontWeight: 800, color: dark ? '#fff' : 'var(--tps-primary)', letterSpacing: '-0.03em', lineHeight: 1 }}>\n <CountUp to={s.value} prefix={s.prefix || ''} suffix={s.suffix || ''} />\n </div>\n <div style={{ fontSize: 13, color: dark ? 'rgba(255,255,255,0.75)' : 'var(--tps-muted)', marginTop: 8, lineHeight: 1.4 }}>{s.label}</div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n },\n};\n","// ImageGallery — responsive photo grid. Images displayed in a masonry-style\n// grid with lightbox on click via a simple modal.\n'use client';\nimport { useState } from 'react';\nimport { Image } from 'antd';\n\nexport const ImageGallery = {\n label: 'Image gallery',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n columns: {\n type: 'radio', label: 'Columns',\n options: [{ label: '2', value: 2 }, { label: '3', value: 3 }, { label: '4', value: 4 }],\n },\n items: {\n type: 'array', label: 'Images',\n arrayFields: {\n url: { type: 'text', label: 'Image URL' },\n alt: { type: 'text', label: 'Alt text' },\n caption: { type: 'text', label: 'Caption (optional)' },\n },\n defaultItemProps: { url: '', alt: '', caption: '' },\n getItemSummary: (it, i) => it?.alt || it?.caption || `Image ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: '', columns: 3, items: [\n { url: '', alt: 'Image 1', caption: '' },\n { url: '', alt: 'Image 2', caption: '' },\n { url: '', alt: 'Image 3', caption: '' },\n ], background: 'white',\n },\n render: ({ eyebrow, heading, columns, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <Image.PreviewGroup>\n <div style={{ display: 'grid', gridTemplateColumns: `repeat(auto-fit, minmax(min(${columns === 4 ? 200 : columns === 3 ? 280 : 360}px, 100%), 1fr))`, gap: 12 }}>\n {(items || []).map((img, i) => (\n <figure key={i} style={{ margin: 0 }}>\n {img.url ? (\n <Image\n src={img.url}\n alt={img.alt || ''}\n style={{ borderRadius: 'var(--tps-radius)', objectFit: 'cover', aspectRatio: '4 / 3', width: '100%' }}\n />\n ) : (\n <div style={{ aspectRatio: '4 / 3', background: '#E2E8F0', borderRadius: 'var(--tps-radius)', display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#94A3B8', fontSize: 12 }}>Image</div>\n )}\n {img.caption && <figcaption style={{ marginTop: 6, fontSize: 12, color: 'var(--tps-muted)' }}>{img.caption}</figcaption>}\n </figure>\n ))}\n </div>\n </Image.PreviewGroup>\n </div>\n </section>\n ),\n};\n","// ImageCaption — single image with caption + optional credit. For\n// editorial pages.\nexport const ImageCaption = {\n label: 'Image with caption',\n fields: {\n image_url: { type: 'text', label: 'Image URL' },\n alt: { type: 'text', label: 'Alt text' },\n caption: { type: 'text', label: 'Caption' },\n credit: { type: 'text', label: 'Photo credit (optional)' },\n max_width: {\n type: 'select', label: 'Max width',\n options: [\n { label: 'Narrow (640px)', value: 640 },\n { label: 'Comfortable (820px)', value: 820 },\n { label: 'Wide (940px)', value: 940 },\n { label: 'Full bleed', value: 0 },\n ],\n },\n },\n defaultProps: { image_url: '', alt: '', caption: 'A descriptive caption.', credit: '', max_width: 820 },\n render: ({ image_url, alt, caption, credit, max_width }) => (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className={max_width ? 'tps-container' : ''} style={{ maxWidth: max_width || undefined }}>\n {image_url ? (\n <img src={image_url} alt={alt || ''} style={{ display: 'block', width: '100%', height: 'auto', borderRadius: max_width ? 'var(--tps-radius)' : 0 }} />\n ) : (\n <div style={{ width: '100%', aspectRatio: '16 / 9', background: '#E2E8F0', borderRadius: max_width ? 'var(--tps-radius)' : 0, display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#94A3B8', fontSize: 13 }}>Image</div>\n )}\n {(caption || credit) && (\n <figcaption style={{ marginTop: 10, fontSize: 13, color: 'var(--tps-muted)', lineHeight: 1.5, textAlign: 'center', padding: max_width ? 0 : '0 16px' }}>\n {caption}\n {credit && <span style={{ marginLeft: 8, opacity: 0.7 }}>· {credit}</span>}\n </figcaption>\n )}\n </div>\n </section>\n ),\n};\n","// InlineCTA — compact one-line CTA strip. Smaller than CTABanner; sits\n// between content sections to nudge conversion without dominating.\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const InlineCTA = {\n label: 'Inline CTA',\n fields: {\n headline: { type: 'text', label: 'Headline' },\n body: { type: 'text', label: 'Body (one line)' },\n button_label: { type: 'text', label: 'Button label' },\n button_href: { type: 'text', label: 'Button URL' },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'Soft', value: 'soft' }, { label: 'Primary', value: 'primary' }],\n },\n },\n defaultProps: {\n headline: 'Want to chat?',\n body: 'A short, friendly nudge that you can rewrite.',\n button_label: 'Get in touch',\n button_href: '/contact',\n background: 'soft',\n },\n render: ({ headline, body, button_label, button_href, background }) => {\n const primary = background === 'primary';\n return (\n <section className=\"tps-section\" style={{ paddingTop: 24, paddingBottom: 24 }}>\n <div className=\"tps-container\">\n <div style={{\n display: 'flex', flexWrap: 'wrap', alignItems: 'center', justifyContent: 'space-between',\n gap: 16, padding: '20px 28px',\n background: primary ? 'var(--tps-primary)' : 'var(--tps-bg-soft)',\n color: primary ? '#fff' : 'var(--tps-ink)',\n border: primary ? 'none' : '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n }}>\n <div style={{ flex: 1, minWidth: 'min(240px, 100%)' }}>\n {headline && <div style={{ fontSize: 18, fontWeight: 700, marginBottom: 2 }}>{headline}</div>}\n {body && <div style={{ fontSize: 14, opacity: 0.85 }}>{body}</div>}\n </div>\n {button_label && (\n <Link href={button_href || '/contact'}>\n <Button type={primary ? 'default' : 'primary'} size=\"large\">\n {button_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n </div>\n </div>\n </section>\n );\n },\n};\n","// AnnouncementBar — top-of-page slim strip. For event announcements,\n// new product, beta access etc. Compact and dismissible-looking but\n// statically rendered.\nimport { StudioLink as Link } from '../context';\n\nexport const AnnouncementBar = {\n label: 'Announcement bar',\n fields: {\n text: { type: 'text', label: 'Text' },\n link_label: { type: 'text', label: 'Inline link label (optional)' },\n link_href: { type: 'text', label: 'Link URL' },\n variant: {\n type: 'select', label: 'Style',\n options: [\n { label: 'Dark', value: 'dark' },\n { label: 'Primary', value: 'primary' },\n { label: 'Accent', value: 'accent' },\n ],\n },\n },\n defaultProps: {\n text: 'Something new is here.',\n link_label: 'Learn more',\n link_href: '/services',\n variant: 'dark',\n },\n render: ({ text, link_label, link_href, variant }) => {\n const palette = {\n dark: { bg: 'var(--tps-ink, #0F172A)', fg: '#fff', link: 'var(--tps-accent, #F59E0B)' },\n primary: { bg: 'var(--tps-primary, #0b60d8)', fg: '#fff', link: 'var(--tps-accent, #F59E0B)' },\n accent: { bg: 'var(--tps-accent, #F59E0B)', fg: 'var(--tps-ink, #0F172A)', link: 'var(--tps-primary, #0b60d8)' },\n }[variant] || { bg: 'var(--tps-ink, #0F172A)', fg: '#fff', link: 'var(--tps-accent, #F59E0B)' };\n return (\n <div style={{ background: palette.bg, color: palette.fg, padding: '8px 16px', textAlign: 'center', fontSize: 13 }}>\n <span>{text}</span>\n {link_label && link_href && (\n <Link href={link_href} style={{ color: palette.link, fontWeight: 700, marginLeft: 8, textDecoration: 'underline' }}>\n {link_label}\n </Link>\n )}\n </div>\n );\n },\n};\n","// Quote — simple pull-quote without testimonial framing. For editorial\n// emphasis inside long-form content.\nexport const Quote = {\n label: 'Pull quote',\n fields: {\n text: { type: 'textarea', label: 'Quote', rows: 4 },\n cite: { type: 'text', label: 'Attribution (optional)' },\n align: {\n type: 'radio', label: 'Alignment',\n options: [{ label: 'Left', value: 'left' }, { label: 'Center', value: 'center' }],\n },\n },\n defaultProps: {\n text: 'A short, memorable line that deserves the spotlight. Replace with your own.',\n cite: '',\n align: 'center',\n },\n render: ({ text, cite, align }) => (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\" style={{ maxWidth: 720, textAlign: align }}>\n <blockquote style={{\n margin: 0,\n fontSize: 'clamp(20px, 3.5vw, 26px)',\n fontWeight: 500,\n lineHeight: 1.45,\n color: 'var(--tps-ink)',\n borderLeft: align === 'left' ? '3px solid var(--tps-primary)' : 'none',\n paddingLeft: align === 'left' ? 24 : 0,\n }}>\n “{text}”\n </blockquote>\n {cite && (\n <cite style={{ display: 'block', marginTop: 12, fontStyle: 'normal', fontSize: 14, color: 'var(--tps-muted)' }}>— {cite}</cite>\n )}\n </div>\n </section>\n ),\n};\n","// CodeBlock — code snippet with optional title bar. No syntax highlighting\n// (no extra dependency); plain monospace with line wrapping.\nexport const CodeBlock = {\n label: 'Code block',\n fields: {\n title: { type: 'text', label: 'Title bar (e.g. terminal, Dockerfile)' },\n language: { type: 'text', label: 'Language label (e.g. bash, json)' },\n code: { type: 'textarea', label: 'Code', rows: 10 },\n },\n defaultProps: {\n title: 'terminal',\n language: 'bash',\n code: '$ make db-reset-pages\\n[seed] Reset complete: 18 pages.',\n },\n render: ({ title, language, code }) => (\n <section className=\"tps-section\" style={{ paddingTop: 24, paddingBottom: 24 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n <div style={{ background: '#0F172A', borderRadius: 'var(--tps-radius)', overflow: 'hidden', border: '1px solid #1E293B' }}>\n {(title || language) && (\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', padding: '10px 16px', background: '#1E293B', color: '#94A3B8', fontSize: 12, fontFamily: 'ui-monospace, monospace' }}>\n <span>{title}</span>\n {language && <span style={{ fontSize: 10, fontWeight: 700, letterSpacing: 1, color: '#F59E0B' }}>{language.toUpperCase()}</span>}\n </div>\n )}\n <pre style={{ margin: 0, padding: 16, color: '#E2E8F0', fontSize: 13, lineHeight: 1.6, overflowX: 'auto', fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace', whiteSpace: 'pre' }}>{code}</pre>\n </div>\n </div>\n </section>\n ),\n};\n","// KeyValueList — definition list / specs table. For \"what's included\",\n// product specs, deal terms.\nexport const KeyValueList = {\n label: 'Key / value list',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Rows',\n arrayFields: {\n key: { type: 'text', label: 'Key' },\n value: { type: 'text', label: 'Value' },\n },\n defaultItemProps: { key: 'New row', value: '—' },\n getItemSummary: (it, i) => it?.key || `Row ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: 'The details',\n items: [\n { key: 'Duration', value: '4–8 weeks' },\n { key: 'Format', value: 'Remote + on-site' },\n { key: 'Includes', value: 'Discovery · build · launch' },\n { key: 'Starts at', value: 'Talk to us' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 48, paddingBottom: 48 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 24 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <dl className=\"tps-row-stack\" style={{ margin: 0, display: 'grid', gridTemplateColumns: '180px 1fr', rowGap: 0 }}>\n {(items || []).map((row, i) => (\n <div key={i} style={{ display: 'contents' }}>\n <dt style={{ padding: '14px 0', borderTop: '1px solid var(--tps-line)', fontSize: 13, fontWeight: 700, color: 'var(--tps-muted)', letterSpacing: 0.5 }}>{row.key}</dt>\n <dd style={{ padding: '14px 0', borderTop: '1px solid var(--tps-line)', margin: 0, fontSize: 15, color: 'var(--tps-ink)' }}>{row.value}</dd>\n </div>\n ))}\n </dl>\n </div>\n </section>\n ),\n};\n","// StepsVertical — large vertical numbered steps with body. Heavier than\n// ApproachSteps (which is a horizontal grid). Best for \"how it works\"\n// or onboarding sequences.\nexport const StepsVertical = {\n label: 'Steps — vertical',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Steps',\n arrayFields: {\n title: { type: 'text', label: 'Title' },\n body: { type: 'textarea', label: 'Body', rows: 3 },\n },\n defaultItemProps: { title: 'New step', body: 'Description.' },\n getItemSummary: (it, i) => it?.title || `Step ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: 'How it works', heading: 'A simpler way to ship.',\n items: [\n { title: 'Get in touch', body: 'A short, friendly description that you can rewrite.' },\n { title: 'Plan together', body: 'A short, friendly description that you can rewrite.' },\n { title: 'Build the thing', body: 'A short, friendly description that you can rewrite.' },\n { title: 'Launch and learn', body: 'A short, friendly description that you can rewrite.' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <ol style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {(items || []).map((s, i) => (\n <li key={i} className=\"tps-row-stack\" style={{ display: 'grid', gridTemplateColumns: '64px 1fr', gap: 24, paddingBottom: 32, position: 'relative' }}>\n <div style={{ width: 48, height: 48, borderRadius: '50%', background: 'rgba(15, 118, 110, 0.1)', color: 'var(--tps-primary)', display: 'flex', alignItems: 'center', justifyContent: 'center', fontWeight: 800, fontSize: 18 }}>\n {String(i + 1).padStart(2, '0')}\n </div>\n <div>\n <h3 style={{ fontSize: 20, fontWeight: 700, margin: '6px 0 8px' }}>{s.title}</h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, margin: 0 }}>{s.body}</p>\n </div>\n </li>\n ))}\n </ol>\n </div>\n </section>\n ),\n};\n","'use client';\n// TabsBlock — tabbed content panel. Each tab has a label + HTML body.\nimport { Tabs as AntTabs } from 'antd';\n\nexport const TabsBlock = {\n label: 'Tabs',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Tabs',\n arrayFields: {\n label: { type: 'text', label: 'Tab label' },\n content_html: { type: 'textarea', label: 'Tab content (HTML)', rows: 6 },\n },\n defaultItemProps: { label: 'New tab', content_html: '<p>Tab content.</p>' },\n getItemSummary: (it, i) => it?.label || `Tab ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: '',\n items: [\n { label: 'For teams', content_html: '<p>A short, friendly description that you can rewrite.</p>' },\n { label: 'For leaders', content_html: '<p>A short, friendly description that you can rewrite.</p>' },\n { label: 'For founders', content_html: '<p>A short, friendly description that you can rewrite.</p>' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ maxWidth: 920 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <AntTabs\n items={(items || []).map((t, i) => ({\n key: String(i),\n label: t.label,\n children: <div style={{ padding: '12px 0', color: 'var(--tps-ink-2)', lineHeight: 1.7 }} dangerouslySetInnerHTML={{ __html: t.content_html || '' }} />,\n }))}\n />\n </div>\n </section>\n ),\n};\n","'use client';\n// AccordionBlock — generic accordion (siblings open simultaneously). Use\n// for product features lists, multi-section content. (FAQ block is the\n// strict question/answer variant.)\nimport { Collapse } from 'antd';\n\nexport const AccordionBlock = {\n label: 'Accordion',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Sections',\n arrayFields: {\n title: { type: 'text', label: 'Title' },\n content_html: { type: 'textarea', label: 'Content (HTML)', rows: 5 },\n },\n defaultItemProps: { title: 'New section', content_html: '<p>Content.</p>' },\n getItemSummary: (it, i) => it?.title || `Section ${i + 1}`,\n },\n multiple_open: {\n type: 'radio', label: 'Allow multiple open',\n options: [{ label: 'No', value: false }, { label: 'Yes', value: true }],\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: 'More details',\n items: [\n { title: 'A common question', content_html: '<p>A short, friendly answer you can rewrite.</p>' },\n { title: 'Another common question', content_html: '<p>A short, friendly answer you can rewrite.</p>' },\n ],\n multiple_open: false, background: 'white',\n },\n render: ({ eyebrow, heading, items, multiple_open, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 48, paddingBottom: 48 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 24 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <Collapse\n accordion={!multiple_open}\n bordered={false}\n expandIconPosition=\"end\"\n style={{ background: 'transparent' }}\n items={(items || []).map((it, i) => ({\n key: String(i),\n label: <span style={{ fontSize: 15, fontWeight: 600, color: 'var(--tps-ink)' }}>{it.title}</span>,\n children: <div style={{ color: 'var(--tps-ink-2)', lineHeight: 1.7 }} dangerouslySetInnerHTML={{ __html: it.content_html || '' }} />,\n style: { background: '#fff', border: '1px solid var(--tps-line)', borderRadius: 'var(--tps-radius)', marginBottom: 10, overflow: 'hidden' },\n }))}\n />\n </div>\n </section>\n ),\n};\n","// SocialLinks — row of social media icons. Standalone block — site-wide\n// social URLs are stored on `site.globals` for the footer; this is for\n// ad-hoc placements on individual pages.\nimport {\n LinkedinFilled, FacebookFilled, YoutubeFilled, InstagramFilled,\n TwitterOutlined, GithubOutlined, MailOutlined, GlobalOutlined,\n} from '@ant-design/icons';\n\nconst NETWORKS = {\n linkedin: { icon: LinkedinFilled, label: 'LinkedIn' },\n facebook: { icon: FacebookFilled, label: 'Facebook' },\n youtube: { icon: YoutubeFilled, label: 'YouTube' },\n instagram: { icon: InstagramFilled, label: 'Instagram' },\n twitter: { icon: TwitterOutlined, label: 'Twitter / X' },\n github: { icon: GithubOutlined, label: 'GitHub' },\n email: { icon: MailOutlined, label: 'Email' },\n website: { icon: GlobalOutlined, label: 'Website' },\n};\n\nexport const SocialLinks = {\n label: 'Social links',\n fields: {\n label: { type: 'text', label: 'Label (e.g. Follow us)' },\n align: {\n type: 'radio', label: 'Alignment',\n options: [{ label: 'Left', value: 'left' }, { label: 'Center', value: 'center' }],\n },\n items: {\n type: 'array', label: 'Links',\n arrayFields: {\n network: {\n type: 'select', label: 'Network',\n options: Object.keys(NETWORKS).map((k) => ({ value: k, label: NETWORKS[k].label })),\n },\n href: { type: 'text', label: 'URL' },\n },\n defaultItemProps: { network: 'linkedin', href: '' },\n getItemSummary: (it, i) => NETWORKS[it?.network]?.label || `Link ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n label: 'Follow us', align: 'center',\n items: [\n { network: 'linkedin', href: '#' },\n { network: 'twitter', href: '#' },\n { network: 'youtube', href: '#' },\n ],\n background: 'white',\n },\n render: ({ label, align, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\" style={{ textAlign: align }}>\n {label && <div style={{ fontSize: 12, fontWeight: 700, letterSpacing: 1.5, color: 'var(--tps-muted)', textTransform: 'uppercase', marginBottom: 12 }}>{label}</div>}\n <div style={{ display: 'inline-flex', gap: 14 }}>\n {(items || []).filter((l) => l.href).map((l, i) => {\n const Icon = (NETWORKS[l.network] || NETWORKS.linkedin).icon;\n return (\n <a key={i} href={l.href} target=\"_blank\" rel=\"noreferrer\" aria-label={NETWORKS[l.network]?.label || l.network}\n style={{ width: 40, height: 40, borderRadius: '50%', background: 'rgba(15,118,110,0.08)', color: 'var(--tps-primary)', display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: 18, transition: 'background 150ms ease' }}>\n <Icon />\n </a>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// ContactInfo — office address + email + phone + hours card. No form;\n// for a contact page or footer-adjacent placement.\nimport { MailOutlined, PhoneOutlined, EnvironmentOutlined, ClockCircleOutlined } from '@ant-design/icons';\n\nexport const ContactInfo = {\n label: 'Contact info card',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n email: { type: 'text', label: 'Email' },\n phone: { type: 'text', label: 'Phone' },\n address: { type: 'textarea', label: 'Address (multi-line)' },\n hours: { type: 'text', label: 'Hours' },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: 'Get in touch', heading: 'Say hello',\n email: 'hello@example.com',\n phone: '',\n address: 'Your street\\nYour city, Country',\n hours: 'Mon–Fri · 09:00–18:00',\n background: 'soft',\n },\n render: ({ eyebrow, heading, email, phone, address, hours, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 48, paddingBottom: 48 }}>\n <div className=\"tps-container\" style={{ maxWidth: 720 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 24 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div style={{ background: '#fff', border: '1px solid var(--tps-line)', borderRadius: 'var(--tps-radius)', padding: 28 }}>\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(200px, 100%), 1fr))', gap: 20 }}>\n {email && (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, color: 'var(--tps-muted)', fontSize: 12, fontWeight: 700, letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>\n <MailOutlined /> Email\n </div>\n <a href={`mailto:${email}`} style={{ color: 'var(--tps-primary)', fontSize: 15, fontWeight: 600 }}>{email}</a>\n </div>\n )}\n {phone && (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, color: 'var(--tps-muted)', fontSize: 12, fontWeight: 700, letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>\n <PhoneOutlined /> Phone\n </div>\n <a href={`tel:${phone}`} style={{ color: 'var(--tps-ink)', fontSize: 15, fontWeight: 600 }}>{phone}</a>\n </div>\n )}\n {address && (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, color: 'var(--tps-muted)', fontSize: 12, fontWeight: 700, letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>\n <EnvironmentOutlined /> Address\n </div>\n <div style={{ color: 'var(--tps-ink)', fontSize: 14, whiteSpace: 'pre-line', lineHeight: 1.5 }}>{address}</div>\n </div>\n )}\n {hours && (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, color: 'var(--tps-muted)', fontSize: 12, fontWeight: 700, letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>\n <ClockCircleOutlined /> Hours\n </div>\n <div style={{ color: 'var(--tps-ink)', fontSize: 14 }}>{hours}</div>\n </div>\n )}\n </div>\n </div>\n </div>\n </section>\n ),\n};\n","// MapEmbed — Google Maps iframe embed. Author pastes a Maps embed URL\n// (the long iframe src from Maps \"Share > Embed a map > HTML\").\nexport const MapEmbed = {\n label: 'Map (Google Maps)',\n fields: {\n embed_url: { type: 'text', label: 'Google Maps embed URL' },\n height: {\n type: 'select', label: 'Height',\n options: [\n { label: 'Compact (280px)', value: 280 },\n { label: 'Standard (420px)', value: 420 },\n { label: 'Large (560px)', value: 560 },\n ],\n },\n caption: { type: 'text', label: 'Caption (optional)' },\n },\n defaultProps: {\n embed_url: 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d77622.9!2d77.5946!3d12.9716!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2zMTLCsDU4JzE3LjgiTiA3N8KwMzUnNDAuNCJF!5e0!3m2!1sen!2sin!4v0',\n height: 420,\n caption: '',\n },\n render: ({ embed_url, height, caption }) => (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\">\n <div style={{ borderRadius: 'var(--tps-radius)', overflow: 'hidden', border: '1px solid var(--tps-line)' }}>\n {embed_url ? (\n <iframe src={embed_url} title=\"Map\" width=\"100%\" height={height} style={{ border: 0, display: 'block' }} loading=\"lazy\" referrerPolicy=\"no-referrer-when-downgrade\" />\n ) : (\n <div style={{ height, background: '#E2E8F0', display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#94A3B8', fontSize: 13 }}>\n Paste a Google Maps embed URL in the field on the right.\n </div>\n )}\n </div>\n {caption && <p style={{ marginTop: 10, fontSize: 13, color: 'var(--tps-muted)', textAlign: 'center' }}>{caption}</p>}\n </div>\n </section>\n ),\n};\n","// EventsList — upcoming events list. Date pill + title + venue + CTA.\nimport { StudioLink as Link } from '../context';\nimport { CalendarOutlined, EnvironmentOutlined } from '@ant-design/icons';\n\nexport const EventsList = {\n label: 'Events list',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Events',\n arrayFields: {\n date_short: { type: 'text', label: 'Date (e.g. MAR 12)' },\n date_long: { type: 'text', label: 'Date long-form (e.g. March 12, 2026)' },\n title: { type: 'text', label: 'Title' },\n body: { type: 'text', label: 'One-line description' },\n venue: { type: 'text', label: 'Venue / mode (e.g. Bengaluru, online)' },\n cta_label: { type: 'text', label: 'CTA label' },\n cta_href: { type: 'text', label: 'CTA URL' },\n },\n defaultItemProps: { date_short: 'MAR 12', date_long: 'March 12, 2026', title: 'New event', body: 'Description.', venue: 'Online', cta_label: 'Register', cta_href: '#' },\n getItemSummary: (it, i) => it?.title || `Event ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: 'Upcoming', heading: 'Where we’ll be next.',\n items: [\n { date_short: 'MAR 12', date_long: 'March 12, 2026', title: 'An event title goes here', body: 'A short, friendly description that you can rewrite.', venue: 'Online · 90 min', cta_label: 'Register', cta_href: '#' },\n { date_short: 'APR 04', date_long: 'April 4, 2026', title: 'Another event title', body: 'A short, friendly description that you can rewrite.', venue: 'In person', cta_label: 'RSVP', cta_href: '#' },\n { date_short: 'MAY 21', date_long: 'May 21, 2026', title: 'One more event for the calendar', body: 'A short, friendly description that you can rewrite.', venue: 'Online · 60 min', cta_label: 'Register', cta_href: '#' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ maxWidth: 920 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: 12 }}>\n {(items || []).map((e, i) => (\n <li key={i} className=\"tps-row-stack\" style={{ display: 'grid', gridTemplateColumns: '88px 1fr auto', gap: 24, alignItems: 'center', padding: 20, background: '#fff', border: '1px solid var(--tps-line)', borderRadius: 'var(--tps-radius)' }}>\n <div style={{ background: 'rgba(15,118,110,0.08)', color: 'var(--tps-primary)', padding: '12px 8px', borderRadius: 'var(--tps-radius)', textAlign: 'center', fontWeight: 700, fontSize: 13, lineHeight: 1.2, letterSpacing: 0.5 }}>\n <CalendarOutlined style={{ display: 'block', marginBottom: 4 }} />\n {e.date_short}\n </div>\n <div>\n <h3 style={{ fontSize: 17, fontWeight: 700, margin: '0 0 4px' }}>{e.title}</h3>\n {e.body && <p style={{ color: 'var(--tps-muted)', margin: '0 0 6px', fontSize: 14, lineHeight: 1.5 }}>{e.body}</p>}\n <div style={{ display: 'flex', gap: 14, fontSize: 12, color: 'var(--tps-muted)' }}>\n <span>{e.date_long}</span>\n {e.venue && <span><EnvironmentOutlined /> {e.venue}</span>}\n </div>\n </div>\n {e.cta_label && (\n <Link href={e.cta_href || '#'} style={{ color: 'var(--tps-primary)', fontWeight: 700, fontSize: 14, textDecoration: 'none', whiteSpace: 'nowrap' }}>\n {e.cta_label} →\n </Link>\n )}\n </li>\n ))}\n </ul>\n </div>\n </section>\n ),\n};\n","// Divider — horizontal divider with optional centered label.\nexport const Divider = {\n label: 'Divider',\n fields: {\n label: { type: 'text', label: 'Center label (optional)' },\n style: {\n type: 'select', label: 'Style',\n options: [\n { label: 'Hairline', value: 'hairline' },\n { label: 'Dashed', value: 'dashed' },\n { label: 'Thick', value: 'thick' },\n { label: 'Dot', value: 'dot' },\n ],\n },\n spacing: {\n type: 'select', label: 'Vertical spacing',\n options: [\n { label: 'Compact (24px)', value: 24 },\n { label: 'Standard (48px)', value: 48 },\n { label: 'Generous (96px)', value: 96 },\n ],\n },\n },\n defaultProps: { label: '', style: 'hairline', spacing: 48 },\n render: ({ label, style, spacing }) => (\n <section style={{ padding: `${spacing}px 24px` }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {style === 'dot' ? (\n <div style={{ display: 'flex', justifyContent: 'center', gap: 8 }}>\n {[0,1,2].map((i) => <span key={i} style={{ width: 4, height: 4, borderRadius: '50%', background: '#CBD5E1' }} />)}\n </div>\n ) : label ? (\n <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>\n <span style={{ flex: 1, height: style === 'thick' ? 2 : 1, borderTop: style === 'dashed' ? `1px dashed #CBD5E1` : 'none', background: style !== 'dashed' ? '#E2E8F0' : 'none' }} />\n <span style={{ fontSize: 11, fontWeight: 700, letterSpacing: 1.5, color: '#94A3B8', textTransform: 'uppercase' }}>{label}</span>\n <span style={{ flex: 1, height: style === 'thick' ? 2 : 1, borderTop: style === 'dashed' ? `1px dashed #CBD5E1` : 'none', background: style !== 'dashed' ? '#E2E8F0' : 'none' }} />\n </div>\n ) : (\n <hr style={{ margin: 0, border: 0, borderTop: style === 'dashed' ? '1px dashed #CBD5E1' : `${style === 'thick' ? 2 : 1}px solid #E2E8F0` }} />\n )}\n </div>\n </section>\n ),\n};\n","// ThreeColumn — generic 3-col text layout. Lighter than PillarsRow\n// (which is icon + body cards). Use for parallel text features.\nexport const ThreeColumn = {\n label: 'Three columns',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n columns: {\n type: 'array', label: 'Columns',\n arrayFields: {\n title: { type: 'text', label: 'Column title' },\n body: { type: 'textarea', label: 'Column body', rows: 4 },\n },\n defaultItemProps: { title: 'Column', body: 'Body text.' },\n getItemSummary: (it, i) => it?.title || `Column ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: '',\n columns: [\n { title: 'For teams', body: 'A short, friendly description you can rewrite.' },\n { title: 'For leaders', body: 'A short, friendly description you can rewrite.' },\n { title: 'For founders', body: 'A short, friendly description you can rewrite.' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(260px, 100%), 1fr))', gap: 32 }}>\n {(columns || []).map((c, i) => (\n <div key={i}>\n <h3 style={{ fontSize: 18, fontWeight: 700, margin: '0 0 8px' }}>{c.title}</h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, fontSize: 15, margin: 0 }}>{c.body}</p>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// PressMentions — \"As featured in\" press logos. Same pattern as\n// LogoStrip but the heading copy and visual treatment match journalism.\nexport const PressMentions = {\n label: 'Press mentions',\n fields: {\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Outlets',\n arrayFields: {\n name: { type: 'text', label: 'Outlet name' },\n image_url: { type: 'text', label: 'Logo image URL (optional)' },\n link: { type: 'text', label: 'Article URL (optional)' },\n quote: { type: 'text', label: 'Pull-quote (optional)' },\n },\n defaultItemProps: { name: 'Outlet', image_url: '', link: '', quote: '' },\n getItemSummary: (it, i) => it?.name || `Outlet ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }],\n },\n },\n defaultProps: {\n heading: 'As featured in',\n items: [\n { name: 'Outlet One', image_url: '', link: '', quote: '' },\n { name: 'Outlet Two', image_url: '', link: '', quote: '' },\n { name: 'Outlet Three', image_url: '', link: '', quote: '' },\n ],\n background: 'soft',\n },\n render: ({ heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 48, paddingBottom: 48 }}>\n <div className=\"tps-container\" style={{ textAlign: 'center' }}>\n {heading && <div style={{ fontSize: 11, fontWeight: 700, letterSpacing: 2, color: 'var(--tps-muted)', marginBottom: 28, textTransform: 'uppercase' }}>{heading}</div>}\n <div style={{ display: 'flex', flexWrap: 'wrap', justifyContent: 'center', alignItems: 'center', gap: 40 }}>\n {(items || []).map((p, i) => {\n const inner = p.image_url ? (\n <img src={p.image_url} alt={p.name} style={{ height: 28, opacity: 0.7, filter: 'grayscale(100%)' }} />\n ) : (\n <span style={{ fontFamily: 'Georgia, serif', fontSize: 18, fontWeight: 600, color: 'var(--tps-ink)', fontStyle: 'italic' }}>{p.name}</span>\n );\n return p.link ? <a key={i} href={p.link} target=\"_blank\" rel=\"noreferrer\">{inner}</a> : <span key={i}>{inner}</span>;\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// Container — styled background + padding container for visually grouping\n// adjacent blocks. Doesn't accept children blocks (Puck DropZones add too\n// much complexity); instead this is a single decorative wrapper for one\n// title + one body of content.\nexport const Container = {\n label: 'Container box',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n body_html: { type: 'textarea', label: 'Body (HTML)', rows: 5 },\n background: {\n type: 'select', label: 'Box background',\n options: [\n { label: 'Soft', value: 'soft' },\n { label: 'Primary tint', value: 'primary' },\n { label: 'Dark', value: 'dark' },\n { label: 'White (with border)', value: 'white' },\n ],\n },\n align: {\n type: 'radio', label: 'Alignment',\n options: [{ label: 'Left', value: 'left' }, { label: 'Center', value: 'center' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: 'Important note',\n body_html: '<p>Use this box to highlight a callout or key takeaway.</p>',\n background: 'soft', align: 'left',\n },\n render: ({ eyebrow, heading, body_html, background, align }) => {\n const bg = {\n soft: { bg: 'var(--tps-bg-soft)', fg: 'var(--tps-ink)', border: '1px solid var(--tps-line)' },\n primary: { bg: 'rgba(15, 118, 110, 0.08)', fg: 'var(--tps-ink)', border: '1px solid rgba(15, 118, 110, 0.2)' },\n dark: { bg: '#0F172A', fg: '#fff', border: 'none' },\n white: { bg: '#fff', fg: 'var(--tps-ink)', border: '1px solid var(--tps-line)' },\n }[background] || { bg: 'var(--tps-bg-soft)', fg: 'var(--tps-ink)', border: '1px solid var(--tps-line)' };\n return (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n <div style={{ background: bg.bg, color: bg.fg, border: bg.border, borderRadius: 'var(--tps-radius)', padding: 32, textAlign: align }}>\n {eyebrow && <span className=\"tps-eyebrow\" style={{ color: background === 'dark' ? '#F59E0B' : undefined }}>{eyebrow}</span>}\n {heading && <h3 style={{ fontSize: 22, fontWeight: 700, margin: '8px 0 14px' }}>{heading}</h3>}\n {body_html && <div style={{ lineHeight: 1.7, fontSize: 15, opacity: background === 'dark' ? 0.92 : 1 }} dangerouslySetInnerHTML={{ __html: body_html }} />}\n </div>\n </div>\n </section>\n );\n },\n};\n","// withReveal — wraps a Puck block's render so it gets a default subtle\n// \"fade up on scroll\" entrance animation in production, with zero FOUC.\n//\n// SSR-safety: blocks render with `opacity: 1` in the initial HTML (no\n// invisible content shipped to the user). The animation only kicks in\n// AFTER hydration when the IntersectionObserver hook (mounted in the\n// marketing layout) adds `.tps-anim` to <html>. By that point IO has\n// already classified above-the-fold blocks as in-view, so they stay\n// visible without a flash; below-the-fold blocks get the gentle fade-up\n// as the user scrolls into them.\n//\n// Editor-safety: when Puck renders the block on the editor canvas\n// (`puck.isEditing === true`), we skip the wrapper entirely so the\n// drag-overlay stays clean and there's no animation on every preview\n// render.\n\nimport { Children, cloneElement, isValidElement } from 'react';\n\nexport function withReveal(component, animation = 'fade-up') {\n const RenderWrapped = (props) => {\n const node = component.render(props);\n // In the editor canvas, render plain — no animation chrome on top.\n if (props?.puck?.isEditing) return node;\n if (!isValidElement(node)) return node;\n // Add the data attribute the IO hook reads on the OUTER element of\n // the block so the whole section animates as one unit.\n const cls = ['tps-reveal', `tps-reveal--${animation}`, node.props.className]\n .filter(Boolean)\n .join(' ');\n return cloneElement(node, {\n className: cls,\n 'data-tps-reveal': animation,\n });\n };\n return { ...component, render: RenderWrapped };\n}\n\n// Expose Children as a convenience if a block needs to wrap multiple\n// roots — keeps consumers off React internals.\nexport const _Children = Children;\n","// SVG layout sketches for each block, shown in Puck's components panel.\n// Each preview is a stylised mini-diagram of the block's visual structure,\n// not a real render — fast, no AntD dependency, looks consistent across the\n// picker. The thumbnail viewBox is fixed so all blocks line up at the same\n// size in the picker.\n//\n// PRIMARY / PRIMARY_SOFT / ACCENT come from the active brand at render\n// time (we read --tps-primary etc. off the nearest ancestor with a\n// [data-brand] attribute, or :root otherwise). The thumbnails follow the\n// rest of the UI when the host swaps brands.\n\nimport { useState, useEffect } from 'react';\n\nconst BG = '#F8FAFC';\nconst BORDER = '#E2E8F0';\nconst TEXT = '#0F172A';\nconst MUTED = '#94A3B8';\n\nconst DEFAULT_BRAND_COLORS = {\n PRIMARY: '#0b60d8',\n PRIMARY_SOFT: '#dbeafe',\n ACCENT: '#F59E0B',\n};\n\nfunction readBrandColors() {\n if (typeof window === 'undefined') return DEFAULT_BRAND_COLORS;\n const root =\n document.querySelector('[data-brand]') || document.documentElement;\n const style = getComputedStyle(root);\n const get = (name, fallback) =>\n style.getPropertyValue(name).trim() || fallback;\n return {\n PRIMARY: get('--tps-primary', DEFAULT_BRAND_COLORS.PRIMARY),\n PRIMARY_SOFT: get('--tps-primary-soft', DEFAULT_BRAND_COLORS.PRIMARY_SOFT),\n ACCENT: get('--tps-accent', DEFAULT_BRAND_COLORS.ACCENT),\n };\n}\n\n// Refresh when the [data-brand] attribute on the nearest ancestor flips —\n// the showcase / host toggles it when the user picks a new brand, so the\n// picker thumbnails need to follow.\n//\n// The initial state is computed lazily from getComputedStyle so the very\n// first paint already uses the active brand. Without this, every preview\n// flashes the package-default teal for a frame before the post-mount\n// effect re-reads the variables.\nfunction useBrandColors() {\n const [colors, setColors] = useState(readBrandColors);\n useEffect(() => {\n setColors(readBrandColors());\n if (typeof window === 'undefined') return;\n const target =\n document.querySelector('[data-brand]') || document.documentElement;\n const observer = new MutationObserver(() => setColors(readBrandColors()));\n observer.observe(target, {\n attributes: true,\n attributeFilter: ['data-brand', 'style', 'class'],\n });\n return () => observer.disconnect();\n }, []);\n return colors;\n}\n\nconst FRAME_W = 120;\nconst FRAME_H = 70;\n\nfunction Frame({ children, soft = false }) {\n return (\n <svg\n viewBox={`0 0 ${FRAME_W} ${FRAME_H}`}\n width=\"100%\"\n height=\"auto\"\n preserveAspectRatio=\"xMidYMid meet\"\n style={{ display: 'block', borderRadius: 4 }}\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width={FRAME_W - 1}\n height={FRAME_H - 1}\n rx=\"3\"\n fill={soft ? '#F1F5F9' : BG}\n stroke={BORDER}\n strokeWidth=\"1\"\n />\n {children}\n </svg>\n );\n}\n\n// PREVIEWS is a function so the brand-dependent colors (PRIMARY,\n// PRIMARY_SOFT, ACCENT) can be passed in fresh on every render. The\n// destructure makes the JSX below identical to the static form — no\n// further per-element changes needed.\nfunction getPreviews(c) {\n const { PRIMARY, PRIMARY_SOFT, ACCENT } = c;\n return {\n Hero: (\n <Frame>\n <rect x=\"14\" y=\"14\" width=\"20\" height=\"3\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"14\" y=\"22\" width=\"92\" height=\"6\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"32\" width=\"80\" height=\"3\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"38\" width=\"60\" height=\"3\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"50\" width=\"32\" height=\"9\" rx=\"2\" fill={PRIMARY} />\n <rect x=\"50\" y=\"50\" width=\"32\" height=\"9\" rx=\"2\" fill=\"none\" stroke={TEXT} strokeWidth=\"0.8\" />\n </Frame>\n ),\n SectionHeader: (\n <Frame>\n <rect x=\"14\" y=\"22\" width=\"18\" height=\"3\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"14\" y=\"30\" width=\"78\" height=\"6\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"42\" width=\"64\" height=\"3\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n StatsStrip: (\n <Frame soft>\n {[14, 38, 62, 86].map((x, i) => (\n <g key={i}>\n <rect x={x} y=\"22\" width=\"20\" height=\"6\" rx=\"1.5\" fill={PRIMARY} opacity=\"0.85\" />\n <rect x={x + 2} y=\"32\" width=\"16\" height=\"3\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n RichText: (\n <Frame>\n {[14, 21, 28, 35, 42, 49, 56].map((y, i) => (\n <rect\n key={i}\n x=\"14\"\n y={y}\n width={i % 3 === 2 ? 64 : 92}\n height=\"2\"\n rx=\"1\"\n fill={i === 0 || i === 4 ? TEXT : MUTED}\n opacity={i === 0 || i === 4 ? 1 : 0.6}\n />\n ))}\n </Frame>\n ),\n PillarsRow: (\n <Frame soft>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect\n x={x}\n y=\"14\"\n width=\"32\"\n height=\"42\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.8\"\n />\n <circle cx={x + 8} cy=\"22\" r=\"3\" fill={PRIMARY} opacity=\"0.85\" />\n <rect x={x + 4} y=\"30\" width=\"20\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"36\" width=\"24\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x + 4} y=\"40\" width=\"22\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x + 4} y=\"44\" width=\"18\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n ApproachSteps: (\n <Frame>\n {[10, 38, 66, 94].map((x, i) => (\n <g key={i}>\n <text\n x={x}\n y=\"22\"\n fontSize=\"6\"\n fontWeight=\"700\"\n fill={ACCENT}\n fontFamily=\"system-ui\"\n >\n {`0${i + 1}`}\n </text>\n <rect x={x} y=\"28\" width=\"20\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x={x} y=\"36\" width=\"22\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"40\" width=\"18\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n ServicesGrid: (\n <Frame>\n {[\n [10, 12], [44, 12], [78, 12],\n [10, 38], [44, 38], [78, 38],\n ].map(([x, y], i) => (\n <g key={i}>\n <rect\n x={x}\n y={y}\n width=\"32\"\n height=\"20\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.8\"\n />\n <circle cx={x + 5} cy={y + 6} r=\"2\" fill={PRIMARY} opacity=\"0.85\" />\n <rect x={x + 4} y={y + 11} width=\"22\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y={y + 15} width=\"18\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n CTABanner: (\n <Frame soft>\n <rect x=\"14\" y=\"16\" width=\"14\" height=\"2.5\" rx=\"1\" fill={ACCENT} />\n <rect x=\"14\" y=\"22\" width=\"74\" height=\"6\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"32\" width=\"92\" height=\"3\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"44\" width=\"40\" height=\"11\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n PrinciplesList: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"14\" height=\"2.5\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"10\" y=\"20\" width=\"40\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"10\" y=\"30\" width=\"36\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"10\" y=\"34\" width=\"34\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect\n x=\"60\"\n y=\"14\"\n width=\"50\"\n height=\"48\"\n rx=\"2\"\n fill={PRIMARY_SOFT}\n opacity=\"0.5\"\n />\n {[20, 30, 40, 50].map((y, i) => (\n <g key={i}>\n <circle cx=\"66\" cy={y + 2} r=\"2\" fill={PRIMARY} />\n <rect x=\"71\" y={y + 1} width=\"32\" height=\"2\" rx=\"1\" fill={TEXT} opacity=\"0.8\" />\n </g>\n ))}\n </Frame>\n ),\n TwoColumn: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"48\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"10\" y=\"22\" width=\"42\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"10\" y=\"26\" width=\"46\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"10\" y=\"30\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"14\" width=\"48\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"62\" y=\"22\" width=\"42\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"26\" width=\"46\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"30\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n ContactSection: (\n <Frame>\n <rect x=\"10\" y=\"10\" width=\"20\" height=\"3\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"10\" y=\"16\" width=\"80\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"10\" y=\"28\" width=\"34\" height=\"32\" rx=\"2\" fill={PRIMARY_SOFT} opacity=\"0.5\" />\n <rect\n x=\"50\"\n y=\"28\"\n width=\"60\"\n height=\"32\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.8\"\n />\n <rect x=\"54\" y=\"32\" width=\"24\" height=\"3\" rx=\"1\" fill={MUTED} />\n <rect x=\"54\" y=\"38\" width=\"52\" height=\"3\" rx=\"1\" fill=\"#fff\" stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"54\" y=\"44\" width=\"52\" height=\"3\" rx=\"1\" fill=\"#fff\" stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"54\" y=\"50\" width=\"20\" height=\"6\" rx=\"1.5\" fill={PRIMARY} />\n </Frame>\n ),\n Spacer: (\n <Frame>\n <line\n x1=\"14\"\n y1=\"35\"\n x2=\"106\"\n y2=\"35\"\n stroke={MUTED}\n strokeWidth=\"1\"\n strokeDasharray=\"3 2\"\n />\n <text\n x=\"60\"\n y=\"48\"\n fontSize=\"6\"\n fill={MUTED}\n textAnchor=\"middle\"\n fontFamily=\"system-ui\"\n >\n space\n </text>\n </Frame>\n ),\n RawHtml: (\n <Frame>\n <text\n x=\"14\"\n y=\"42\"\n fontSize=\"22\"\n fontFamily=\"ui-monospace, monospace\"\n fill={MUTED}\n opacity=\"0.85\"\n >\n {'</>'}\n </text>\n <rect x=\"56\" y=\"22\" width=\"50\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"56\" y=\"28\" width=\"42\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"56\" y=\"34\" width=\"48\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"56\" y=\"40\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"56\" y=\"46\" width=\"44\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n ImageText: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"44\" height=\"42\" rx=\"2\" fill={PRIMARY_SOFT} />\n <line x1=\"20\" y1=\"22\" x2=\"44\" y2=\"48\" stroke={PRIMARY} strokeWidth=\"0.6\" opacity=\"0.6\" />\n <line x1=\"44\" y1=\"22\" x2=\"20\" y2=\"48\" stroke={PRIMARY} strokeWidth=\"0.6\" opacity=\"0.6\" />\n <rect x=\"62\" y=\"18\" width=\"14\" height=\"2.5\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"62\" y=\"24\" width=\"44\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"62\" y=\"34\" width=\"46\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"38\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"42\" width=\"42\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"50\" width=\"28\" height=\"6\" rx=\"1.5\" fill={PRIMARY} />\n </Frame>\n ),\n VideoEmbed: (\n <Frame>\n <rect x=\"20\" y=\"16\" width=\"80\" height=\"38\" rx=\"2\" fill=\"#0F172A\" />\n <polygon points=\"55,26 55,44 70,35\" fill=\"#fff\" opacity=\"0.95\" />\n <rect x=\"40\" y=\"60\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n LogoStrip: (\n <Frame soft>\n <rect x=\"48\" y=\"14\" width=\"24\" height=\"2\" rx=\"1\" fill={MUTED} />\n {[14, 36, 58, 80, 102].map((cx, i) => (\n <rect\n key={i}\n x={cx - 8}\n y=\"36\"\n width=\"16\"\n height=\"10\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.5\"\n />\n ))}\n </Frame>\n ),\n TestimonialQuote: (\n <Frame soft>\n <text\n x=\"20\"\n y=\"26\"\n fontSize=\"16\"\n fontFamily=\"Georgia\"\n fill={PRIMARY}\n opacity=\"0.6\"\n >\n \"\n </text>\n <rect x=\"14\" y=\"28\" width=\"92\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"34\" width=\"86\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"40\" width=\"60\" height=\"3\" rx=\"1\" fill={TEXT} />\n <circle cx=\"42\" cy=\"56\" r=\"4\" fill={PRIMARY} />\n <rect x=\"50\" y=\"52\" width=\"22\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"50\" y=\"56\" width=\"34\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n TestimonialGrid: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect\n x={x}\n y=\"14\"\n width=\"32\"\n height=\"42\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.8\"\n />\n <text x={x + 4} y=\"22\" fontSize=\"6\" fontFamily=\"Georgia\" fill={PRIMARY} opacity=\"0.6\">\"</text>\n <rect x={x + 4} y=\"24\" width=\"22\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"28\" width=\"24\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"32\" width=\"20\" height=\"2\" rx=\"1\" fill={TEXT} />\n <circle cx={x + 7} cy=\"46\" r=\"3\" fill={PRIMARY} />\n <rect x={x + 12} y=\"44\" width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x + 12} y=\"48\" width=\"18\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n FAQ: (\n <Frame>\n {[14, 30, 46].map((y, i) => (\n <g key={i}>\n <rect\n x=\"14\"\n y={y}\n width=\"92\"\n height=\"10\"\n rx=\"2\"\n fill={i === 0 ? PRIMARY_SOFT : '#fff'}\n stroke={BORDER}\n strokeWidth=\"0.6\"\n opacity={i === 0 ? 0.7 : 1}\n />\n <rect x=\"20\" y={y + 4} width=\"50\" height=\"2\" rx=\"1\" fill={TEXT} />\n <text\n x=\"98\"\n y={y + 7}\n fontSize=\"7\"\n fill={MUTED}\n textAnchor=\"middle\"\n fontFamily=\"system-ui\"\n >\n {i === 0 ? '−' : '+'}\n </text>\n </g>\n ))}\n </Frame>\n ),\n Timeline: (\n <Frame>\n <line x1=\"22\" y1=\"14\" x2=\"22\" y2=\"58\" stroke={BORDER} strokeWidth=\"1\" />\n {[16, 32, 48].map((y, i) => (\n <g key={i}>\n <circle cx=\"22\" cy={y} r=\"3\" fill={PRIMARY} />\n <rect x=\"32\" y={y - 5} width=\"14\" height=\"2\" rx=\"1\" fill={ACCENT} />\n <rect x=\"32\" y={y - 1} width=\"40\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"32\" y={y + 4} width=\"60\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n NewsletterSignup: (\n <Frame soft>\n <rect x=\"14\" y=\"14\" width=\"22\" height=\"2.5\" rx=\"1\" fill={ACCENT} />\n <rect x=\"14\" y=\"20\" width=\"76\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"30\" width=\"92\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"34\" width=\"80\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect\n x=\"14\"\n y=\"44\"\n width=\"64\"\n height=\"9\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <rect x=\"82\" y=\"44\" width=\"24\" height=\"9\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n TeamGrid: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect\n x={x}\n y=\"12\"\n width=\"32\"\n height=\"48\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <rect x={x} y=\"12\" width=\"32\" height=\"22\" rx=\"2\" fill={PRIMARY_SOFT} />\n <circle cx={x + 16} cy=\"22\" r=\"6\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x={x + 4} y=\"38\" width=\"20\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"44\" width=\"14\" height=\"2\" rx=\"1\" fill={ACCENT} />\n <rect x={x + 4} y=\"50\" width=\"22\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x + 4} y=\"54\" width=\"18\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n Banner: (\n <Frame>\n <rect x=\"0\" y=\"26\" width={FRAME_W} height=\"18\" fill={PRIMARY_SOFT} />\n <rect x=\"14\" y=\"32\" width=\"14\" height=\"6\" rx=\"1.5\" fill={PRIMARY} />\n <rect x=\"32\" y=\"33\" width=\"32\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"32\" y=\"38\" width=\"22\" height=\"2\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"80\" y=\"33\" width=\"22\" height=\"3\" rx=\"1\" fill={PRIMARY} />\n <text\n x=\"100\"\n y=\"38\"\n fontSize=\"6\"\n fill={PRIMARY}\n fontFamily=\"system-ui\"\n fontWeight=\"700\"\n >\n →\n </text>\n </Frame>\n ),\n ArticleFeatured: (\n <Frame>\n <rect x=\"62\" y=\"14\" width=\"44\" height=\"42\" rx=\"2\" fill={PRIMARY_SOFT} />\n <line x1=\"68\" y1=\"22\" x2=\"100\" y2=\"48\" stroke={PRIMARY} strokeWidth=\"0.4\" opacity=\"0.4\" />\n <line x1=\"100\" y1=\"22\" x2=\"68\" y2=\"48\" stroke={PRIMARY} strokeWidth=\"0.4\" opacity=\"0.4\" />\n <rect x=\"14\" y=\"14\" width=\"20\" height=\"4\" rx=\"1\" fill={PRIMARY} />\n <rect x=\"14\" y=\"22\" width=\"40\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"30\" width=\"44\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"34\" width=\"38\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"42\" width=\"32\" height=\"2\" rx=\"1\" fill={MUTED} opacity=\"0.7\" />\n <rect x=\"14\" y=\"50\" width=\"22\" height=\"6\" rx=\"1.5\" fill={PRIMARY} />\n </Frame>\n ),\n ArticleGrid: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect\n x={x}\n y=\"12\"\n width=\"32\"\n height=\"48\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <rect x={x} y=\"12\" width=\"32\" height=\"20\" rx=\"2\" fill={PRIMARY_SOFT} />\n <rect x={x + 4} y=\"36\" width=\"10\" height=\"2\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x={x + 4} y=\"40\" width=\"22\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"46\" width=\"20\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x + 4} y=\"49\" width=\"18\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x + 4} y=\"55\" width=\"14\" height=\"1.5\" rx=\"0.5\" fill={MUTED} opacity=\"0.7\" />\n </g>\n ))}\n </Frame>\n ),\n ArticleList: (\n <Frame>\n {[14, 28, 42, 56].map((y, i) => (\n <g key={i}>\n <line\n x1=\"14\"\n y1={y - 3}\n x2=\"106\"\n y2={y - 3}\n stroke={BORDER}\n strokeWidth=\"0.5\"\n />\n <rect x=\"14\" y={y} width=\"14\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"34\" y={y - 1} width=\"10\" height=\"2\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"48\" y={y - 1} width=\"50\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <text x=\"106\" y={y + 1} fontSize=\"6\" fill={MUTED} textAnchor=\"end\" fontFamily=\"system-ui\">→</text>\n </g>\n ))}\n </Frame>\n ),\n IconCards: (\n <Frame>\n {[\n [10, 12], [38, 12], [66, 12], [94, 12],\n ].map(([x, y], i) => (\n <g key={i}>\n <rect\n x={x - 4}\n y={y}\n width=\"24\"\n height=\"46\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <rect x={x - 1} y={y + 4} width=\"10\" height=\"10\" rx=\"2\" fill={PRIMARY_SOFT} />\n <circle cx={x + 4} cy={y + 9} r=\"2.5\" fill={PRIMARY} />\n <rect x={x - 1} y={y + 18} width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x - 1} y={y + 24} width=\"16\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x - 1} y={y + 28} width=\"14\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n MetricCards: (\n <Frame>\n {[\n [10, 12], [38, 12], [66, 12], [94, 12],\n ].map(([x, y], i) => (\n <g key={i}>\n <rect\n x={x - 4}\n y={y}\n width=\"24\"\n height=\"46\"\n rx=\"2\"\n fill=\"#fff\"\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <text\n x={x + 8}\n y={y + 18}\n fontSize=\"11\"\n fontWeight=\"800\"\n fill={PRIMARY}\n textAnchor=\"middle\"\n fontFamily=\"system-ui\"\n >\n {['80%', '8wk', '4.8', '0'][i]}\n </text>\n <rect x={x - 1} y={y + 25} width=\"20\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x - 1} y={y + 29} width=\"16\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect\n x={x}\n y={y + 36}\n width=\"14\"\n height=\"5\"\n rx=\"1.5\"\n fill=\"#DCFCE7\"\n opacity={i % 2 === 0 ? 1 : 0.5}\n />\n </g>\n ))}\n </Frame>\n ),\n ImageOverlayCards: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <defs>\n <linearGradient id={`oc-grad-${i}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={PRIMARY} stopOpacity=\"0.3\" />\n <stop offset=\"100%\" stopColor=\"#0F172A\" />\n </linearGradient>\n </defs>\n <rect x={x} y=\"12\" width=\"32\" height=\"48\" rx=\"2\" fill={`url(#oc-grad-${i})`} />\n <rect x={x + 4} y=\"38\" width=\"10\" height=\"2\" rx=\"1\" fill={ACCENT} />\n <rect x={x + 4} y=\"44\" width=\"22\" height=\"3\" rx=\"1\" fill=\"#fff\" />\n <rect x={x + 4} y=\"50\" width=\"20\" height=\"1.5\" rx=\"0.5\" fill=\"#fff\" opacity=\"0.85\" />\n <rect x={x + 4} y=\"53\" width=\"14\" height=\"1.5\" rx=\"0.5\" fill=\"#fff\" opacity=\"0.85\" />\n </g>\n ))}\n </Frame>\n ),\n PricingTable: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect x={x} y=\"10\" width=\"32\" height=\"50\" rx=\"2\" fill={i === 1 ? PRIMARY : '#fff'} stroke={BORDER} strokeWidth=\"0.6\" />\n <rect x={x + 4} y=\"14\" width=\"14\" height=\"2\" rx=\"1\" fill={i === 1 ? '#fff' : MUTED} />\n <rect x={x + 4} y=\"20\" width=\"18\" height=\"6\" rx=\"1.5\" fill={i === 1 ? '#fff' : TEXT} />\n {[32, 38, 44].map((y, j) => (\n <rect key={j} x={x + 4} y={y} width=\"22\" height=\"1.5\" rx=\"0.5\" fill={i === 1 ? '#fff' : MUTED} opacity={i === 1 ? 0.9 : 0.7} />\n ))}\n <rect x={x + 4} y=\"52\" width=\"22\" height=\"5\" rx=\"1.5\" fill={i === 1 ? '#fff' : PRIMARY} />\n </g>\n ))}\n </Frame>\n ),\n PricingComparison: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"100\" height=\"6\" fill={PRIMARY_SOFT} />\n <rect x=\"14\" y=\"16\" width=\"22\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"42\" y=\"16\" width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"62\" y=\"16\" width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"82\" y=\"16\" width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n {[26, 34, 42, 50].map((y, i) => (\n <g key={i}>\n <rect x=\"14\" y={y} width=\"22\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n {[42, 62, 82].map((cx, j) => (\n <text key={j} x={cx + 7} y={y + 2} fontSize=\"5\" fill={(i + j) % 2 ? PRIMARY : MUTED} textAnchor=\"middle\" fontFamily=\"system-ui\">\n {(i + j) % 2 ? '✓' : '·'}\n </text>\n ))}\n </g>\n ))}\n </Frame>\n ),\n AwardsBar: (\n <Frame>\n {[24, 60, 96].map((x, i) => (\n <g key={i}>\n <circle cx={x} cy=\"22\" r=\"6\" fill={ACCENT} opacity=\"0.85\" />\n <rect x={x - 12} y=\"32\" width=\"24\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <rect x={x - 8} y=\"38\" width=\"16\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x - 5} y=\"44\" width=\"10\" height=\"1.5\" rx=\"0.5\" fill={MUTED} opacity=\"0.6\" />\n </g>\n ))}\n </Frame>\n ),\n CountUpStats: (\n <Frame soft>\n {[24, 60, 96].map((x, i) => (\n <g key={i}>\n <text x={x} y=\"28\" fontSize=\"14\" fontWeight=\"800\" fill={PRIMARY} textAnchor=\"middle\" fontFamily=\"system-ui\">{['80', '50', '14'][i]}{['%', '+', ''][i]}</text>\n <rect x={x - 16} y=\"36\" width=\"32\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x - 12} y=\"42\" width=\"24\" height=\"2\" rx=\"1\" fill={MUTED} opacity=\"0.7\" />\n </g>\n ))}\n </Frame>\n ),\n ImageGallery: (\n <Frame>\n {[\n [10, 12, 32, 22], [44, 12, 32, 22], [78, 12, 32, 22],\n [10, 36, 32, 22], [44, 36, 32, 22], [78, 36, 32, 22],\n ].map(([x, y, w, h], i) => (\n <rect key={i} x={x} y={y} width={w} height={h} rx=\"2\" fill={PRIMARY_SOFT} stroke={BORDER} strokeWidth=\"0.5\" />\n ))}\n </Frame>\n ),\n ImageCaption: (\n <Frame>\n <rect x=\"20\" y=\"12\" width=\"80\" height=\"34\" rx=\"2\" fill={PRIMARY_SOFT} stroke={BORDER} strokeWidth=\"0.6\" />\n <line x1=\"30\" y1=\"20\" x2=\"90\" y2=\"38\" stroke={PRIMARY} strokeWidth=\"0.4\" opacity=\"0.4\" />\n <line x1=\"90\" y1=\"20\" x2=\"30\" y2=\"38\" stroke={PRIMARY} strokeWidth=\"0.4\" opacity=\"0.4\" />\n <rect x=\"34\" y=\"52\" width=\"52\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"42\" y=\"56\" width=\"36\" height=\"2\" rx=\"1\" fill={MUTED} opacity=\"0.7\" />\n </Frame>\n ),\n InlineCTA: (\n <Frame soft>\n <rect x=\"10\" y=\"22\" width=\"100\" height=\"26\" rx=\"3\" fill=\"#fff\" stroke={BORDER} strokeWidth=\"0.6\" />\n <rect x=\"16\" y=\"28\" width=\"50\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"16\" y=\"36\" width=\"58\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"80\" y=\"30\" width=\"24\" height=\"10\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n AnnouncementBar: (\n <Frame>\n <rect x=\"0\" y=\"20\" width={FRAME_W} height=\"14\" fill=\"#0F172A\" />\n <rect x=\"30\" y=\"25\" width=\"38\" height=\"2\" rx=\"1\" fill=\"#fff\" />\n <rect x=\"72\" y=\"25\" width=\"22\" height=\"2\" rx=\"1\" fill={ACCENT} />\n </Frame>\n ),\n Quote: (\n <Frame>\n <text x=\"14\" y=\"24\" fontSize=\"14\" fontFamily=\"Georgia\" fill={PRIMARY} opacity=\"0.6\">\"</text>\n <rect x=\"22\" y=\"24\" width=\"80\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"22\" y=\"32\" width=\"74\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"22\" y=\"40\" width=\"58\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"22\" y=\"50\" width=\"22\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n CodeBlock: (\n <Frame>\n <rect x=\"10\" y=\"12\" width=\"100\" height=\"48\" rx=\"2\" fill=\"#0F172A\" />\n <rect x=\"10\" y=\"12\" width=\"100\" height=\"8\" fill=\"#1E293B\" />\n <rect x=\"14\" y=\"14\" width=\"20\" height=\"3\" rx=\"0.5\" fill={MUTED} />\n <text x=\"14\" y=\"29\" fontSize=\"6\" fill=\"#7DD3FC\" fontFamily=\"ui-monospace, monospace\">$ make</text>\n <text x=\"14\" y=\"38\" fontSize=\"6\" fill=\"#86EFAC\" fontFamily=\"ui-monospace, monospace\"> build</text>\n <text x=\"14\" y=\"47\" fontSize=\"6\" fill=\"#FCA5A5\" fontFamily=\"ui-monospace, monospace\"> deploy</text>\n <text x=\"14\" y=\"56\" fontSize=\"6\" fill=\"#E2E8F0\" fontFamily=\"ui-monospace, monospace\">{`{ ok: true }`}</text>\n </Frame>\n ),\n KeyValueList: (\n <Frame>\n {[18, 30, 42, 54].map((y, i) => (\n <g key={i}>\n <line x1=\"14\" y1={y - 6} x2=\"106\" y2={y - 6} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y={y - 2} width=\"28\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"50\" y={y - 2} width=\"50\" height=\"2\" rx=\"1\" fill={TEXT} />\n </g>\n ))}\n </Frame>\n ),\n StepsVertical: (\n <Frame>\n <line x1=\"22\" y1=\"14\" x2=\"22\" y2=\"58\" stroke={BORDER} strokeWidth=\"0.6\" />\n {[16, 32, 48].map((y, i) => (\n <g key={i}>\n <circle cx=\"22\" cy={y} r=\"5\" fill={PRIMARY_SOFT} stroke={PRIMARY} strokeWidth=\"0.7\" />\n <text x=\"22\" y={y + 1.5} fontSize=\"5\" fontWeight=\"700\" fill={PRIMARY} textAnchor=\"middle\" fontFamily=\"system-ui\">{i + 1}</text>\n <rect x=\"34\" y={y - 2} width=\"28\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"34\" y={y + 4} width=\"48\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n TabsBlock: (\n <Frame>\n <rect x=\"14\" y=\"14\" width=\"20\" height=\"6\" rx=\"1\" fill={PRIMARY} />\n <rect x=\"36\" y=\"14\" width=\"20\" height=\"6\" rx=\"1\" fill=\"#fff\" stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"58\" y=\"14\" width=\"20\" height=\"6\" rx=\"1\" fill=\"#fff\" stroke={BORDER} strokeWidth=\"0.5\" />\n <line x1=\"14\" y1=\"22\" x2=\"106\" y2=\"22\" stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"28\" width=\"78\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"34\" width=\"86\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"40\" width=\"80\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"46\" width=\"60\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n AccordionBlock: (\n <Frame>\n {[14, 30, 46].map((y, i) => (\n <g key={i}>\n <rect x=\"14\" y={y} width=\"92\" height=\"10\" rx=\"2\" fill={i === 0 ? PRIMARY_SOFT : '#fff'} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"20\" y={y + 4} width=\"44\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <text x=\"100\" y={y + 7} fontSize=\"6\" fill={MUTED} textAnchor=\"middle\" fontFamily=\"system-ui\">{i === 0 ? '−' : '+'}</text>\n {i === 0 && (\n <>\n <rect x=\"20\" y={y + 12} width=\"68\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x=\"20\" y={y + 16} width=\"60\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n </>\n )}\n </g>\n ))}\n </Frame>\n ),\n SocialLinks: (\n <Frame>\n <rect x=\"40\" y=\"22\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n {[42, 54, 66, 78].map((x, i) => (\n <circle key={i} cx={x} cy=\"42\" r=\"5\" fill={PRIMARY_SOFT} stroke={PRIMARY} strokeWidth=\"0.5\" />\n ))}\n </Frame>\n ),\n ContactInfo: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"100\" height=\"46\" rx=\"2\" fill=\"#fff\" stroke={BORDER} strokeWidth=\"0.6\" />\n {[[18, 22], [62, 22], [18, 42], [62, 42]].map(([x, y], i) => (\n <g key={i}>\n <circle cx={x + 4} cy={y + 4} r=\"2.5\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x={x + 10} y={y} width=\"14\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x + 10} y={y + 4} width=\"22\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n </g>\n ))}\n </Frame>\n ),\n MapEmbed: (\n <Frame>\n <rect x=\"10\" y=\"12\" width=\"100\" height=\"44\" rx=\"2\" fill=\"#DCFCE7\" stroke={BORDER} strokeWidth=\"0.5\" />\n <path d=\"M 14 28 Q 30 14 50 28 T 90 28 L 106 22\" stroke={MUTED} strokeWidth=\"0.5\" fill=\"none\" />\n <path d=\"M 14 42 Q 40 32 70 44 L 106 38\" stroke={MUTED} strokeWidth=\"0.5\" fill=\"none\" />\n <circle cx=\"60\" cy=\"32\" r=\"3\" fill=\"#DC2626\" />\n <path d=\"M 60 35 L 58 40 L 62 40 Z\" fill=\"#DC2626\" />\n </Frame>\n ),\n EventsList: (\n <Frame>\n {[14, 30, 46].map((y, i) => (\n <g key={i}>\n <rect x=\"14\" y={y} width=\"92\" height=\"11\" rx=\"2\" fill=\"#fff\" stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"18\" y={y + 2} width=\"14\" height=\"7\" rx=\"1\" fill={PRIMARY_SOFT} />\n <text x=\"25\" y={y + 7} fontSize=\"4\" fontWeight=\"700\" fill={PRIMARY} textAnchor=\"middle\" fontFamily=\"system-ui\">{['MAR', 'APR', 'MAY'][i]}</text>\n <rect x=\"36\" y={y + 3} width=\"40\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"36\" y={y + 7} width=\"50\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <text x=\"100\" y={y + 7} fontSize=\"5\" fill={PRIMARY} textAnchor=\"middle\" fontFamily=\"system-ui\">→</text>\n </g>\n ))}\n </Frame>\n ),\n Divider: (\n <Frame>\n <line x1=\"14\" y1=\"35\" x2=\"50\" y2=\"35\" stroke={BORDER} strokeWidth=\"0.8\" />\n <text x=\"60\" y=\"38\" fontSize=\"6\" fill={MUTED} textAnchor=\"middle\" fontWeight=\"700\" fontFamily=\"system-ui\">— OR —</text>\n <line x1=\"70\" y1=\"35\" x2=\"106\" y2=\"35\" stroke={BORDER} strokeWidth=\"0.8\" />\n </Frame>\n ),\n ThreeColumn: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect x={x} y=\"14\" width=\"32\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x={x} y=\"22\" width=\"28\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"26\" width=\"32\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"30\" width=\"26\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"34\" width=\"30\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"38\" width=\"22\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n PressMentions: (\n <Frame soft>\n <rect x=\"40\" y=\"14\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n {[20, 50, 80].map((cx, i) => (\n <text key={i} x={cx} y=\"42\" fontSize=\"9\" fontFamily=\"Georgia\" fontStyle=\"italic\" fontWeight=\"600\" fill={MUTED} textAnchor=\"middle\">{['Forbes', 'WSJ', 'TechCrunch'][i]}</text>\n ))}\n </Frame>\n ),\n Container: (\n <Frame>\n <rect x=\"14\" y=\"14\" width=\"92\" height=\"46\" rx=\"3\" fill={PRIMARY_SOFT} stroke={PRIMARY} strokeWidth=\"0.5\" strokeDasharray=\"2 2\" />\n <rect x=\"22\" y=\"22\" width=\"20\" height=\"2.5\" rx=\"1\" fill={PRIMARY} />\n <rect x=\"22\" y=\"30\" width=\"60\" height=\"4\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"22\" y=\"40\" width=\"76\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"22\" y=\"44\" width=\"68\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"22\" y=\"48\" width=\"50\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n };\n}\n\nexport const BLOCK_DESCRIPTIONS = {\n Hero: 'Eyebrow, large heading, lede, and two CTAs. The opening section of any page.',\n SectionHeader: 'Eyebrow + heading + lede that introduces a major section.',\n StatsStrip: 'Horizontal row of 3–5 stat cards (number + label).',\n RichText: 'Body copy with HTML formatting — paragraphs, lists, links, headings.',\n PillarsRow: '2–4 column grid of icon + title + body cards.',\n ApproachSteps: 'Numbered step-by-step breakdown (e.g. 01 Diagnose / 02 Design).',\n ServicesGrid: 'Auto-rendered grid of all (or first N) service capability cards.',\n CTABanner: 'Full-width call-to-action with tagline, heading, body, and button.',\n PrinciplesList: 'Two-column layout: heading on the left, checkmark bullet list on the right.',\n TwoColumn: 'Generic side-by-side text columns with editable headings + body.',\n ContactSection: 'Hero + sidebar info cards + lead-capture form. Drops a working contact section in one block.',\n Spacer: 'Pure vertical whitespace between blocks.',\n RawHtml: 'Escape hatch — paste in any HTML when you need something the library doesn’t cover.',\n ImageText: 'Image on one side, eyebrow + heading + body + CTA on the other. Flip the image side per section.',\n VideoEmbed: 'Responsive YouTube or Vimeo embed with optional caption.',\n LogoStrip: '\"Trusted by\" row of client/partner logos. Falls back to brand-name text when no image is set.',\n TestimonialQuote: 'One large pull-quote with author photo, name, role, and company.',\n TestimonialGrid: '2- or 3-column grid of testimonial cards. Use for multi-voice social proof.',\n FAQ: 'Accordion of question / answer items. HTML allowed in answers; one open at a time.',\n Timeline: 'Vertical chronological list — date + title + body. Useful for company history or \"what happens next\".',\n NewsletterSignup: 'Single-field email capture. Submits to the leads endpoint with source=\"newsletter\".',\n TeamGrid: '2/3/4-column team cards with photo, role, short bio, and LinkedIn link.',\n Banner: 'Full-width announcement strip — info / success / warning / dark variants. Optional CTA link.',\n ArticleFeatured: 'Hero-style featured article — large image + tag + headline + excerpt + byline + CTA.',\n ArticleGrid: '2- or 3-column article cards (cover + tag + headline + excerpt + byline).',\n ArticleList: 'Text-heavy article list (date + tag + headline + excerpt). Best for archives.',\n IconCards: 'Compact icon + title + 1-line body cards. 2/3/4-col layouts.',\n MetricCards: 'Big-number cards with optional trend arrow + delta. The \"by the numbers\" section.',\n ImageOverlayCards: 'Full-bleed image cards with text overlay. Click-through \"category\" / \"explore\" pattern.',\n PricingTable: '3-tier pricing cards with feature lists and per-tier CTAs. Highlight one tier as popular.',\n PricingComparison: 'Feature × tier comparison table — checkmarks/Xs or values per cell.',\n AwardsBar: 'Row of certifications/awards with title + body + year. Trust signals for accreditations.',\n CountUpStats: 'Animated stat counters that tick from 0 to value when scrolled into view.',\n ImageGallery: 'Photo grid with click-to-enlarge lightbox. 2/3/4-col layouts.',\n ImageCaption: 'Single image with caption and optional photo credit.',\n InlineCTA: 'Compact one-line CTA strip — sits between content sections without dominating.',\n AnnouncementBar: 'Slim full-width strip for announcements, beta access, event invites — dark / primary / accent variants.',\n Quote: 'Editorial pull-quote with optional attribution. Left-bordered or centered.',\n CodeBlock: 'Monospace code snippet with title bar and language label.',\n KeyValueList: 'Definition list / specs table — for \"what\\'s included\", deal terms, technical specs.',\n StepsVertical: 'Large vertical numbered steps with title + body. Heavier than ApproachSteps.',\n TabsBlock: 'Tabbed content panel — switch between named sections of HTML content.',\n AccordionBlock: 'Generic accordion (one or many open). For multi-section content beyond strict FAQ.',\n SocialLinks: 'Row of social-network icon links — LinkedIn, X, YouTube, etc.',\n ContactInfo: 'Office address + email + phone + hours card. No form, just info.',\n MapEmbed: 'Google Maps iframe embed with caption.',\n EventsList: 'Upcoming events with date pill + title + venue + RSVP CTA.',\n Divider: 'Horizontal divider with optional centered label. Hairline / dashed / thick / dot styles.',\n ThreeColumn: 'Generic 3-col text layout. Lighter than PillarsRow.',\n PressMentions: '\"As featured in\" press logos. Italic serif text fallback when no logos.',\n Container: 'Decorative box (soft / primary / dark / white) wrapping a single titled callout.',\n};\n\nexport default function BlockThumbnail({ name }) {\n const colors = useBrandColors();\n const previews = getPreviews(colors);\n return (\n previews[name] || (\n <Frame>\n <text\n x=\"60\"\n y=\"40\"\n fontSize=\"8\"\n fill={MUTED}\n textAnchor=\"middle\"\n fontFamily=\"system-ui\"\n >\n {name}\n </text>\n </Frame>\n )\n );\n}\n","// Puck config builder. Exports the default block library + a `createPuckConfig`\n// factory so consumers can add their own blocks, replace categories, or strip\n// the library down to what they actually need.\n//\n// Adding a block: drop the file under `src/blocks/`, import it here, add it\n// to `defaultBlocks` + (optionally) a category. Consumers who want to extend\n// the library do the same with their own files and pass them via `blocks:`.\n\nimport { Hero } from './blocks/Hero';\nimport { StatsStrip } from './blocks/StatsStrip';\nimport { SectionHeader } from './blocks/SectionHeader';\nimport { RichText } from './blocks/RichText';\nimport { PillarsRow } from './blocks/PillarsRow';\nimport { ApproachSteps } from './blocks/ApproachSteps';\nimport { ServicesGrid } from './blocks/ServicesGrid';\nimport { CTABanner } from './blocks/CTABanner';\nimport { PrinciplesList } from './blocks/PrinciplesList';\nimport { TwoColumn } from './blocks/TwoColumn';\nimport { Spacer } from './blocks/Spacer';\nimport { RawHtml } from './blocks/RawHtml';\nimport { ContactSection } from './blocks/ContactSection';\nimport { ImageText } from './blocks/ImageText';\nimport { VideoEmbed } from './blocks/VideoEmbed';\nimport { LogoStrip } from './blocks/LogoStrip';\nimport { TestimonialQuote } from './blocks/TestimonialQuote';\nimport { TestimonialGrid } from './blocks/TestimonialGrid';\nimport { FAQ } from './blocks/FAQ';\nimport { Timeline } from './blocks/Timeline';\nimport { NewsletterSignup } from './blocks/NewsletterSignup';\nimport { TeamGrid } from './blocks/TeamGrid';\nimport { Banner } from './blocks/Banner';\nimport { ArticleFeatured } from './blocks/ArticleFeatured';\nimport { ArticleGrid } from './blocks/ArticleGrid';\nimport { ArticleList } from './blocks/ArticleList';\nimport { IconCards } from './blocks/IconCards';\nimport { MetricCards } from './blocks/MetricCards';\nimport { ImageOverlayCards } from './blocks/ImageOverlayCards';\nimport { PricingTable } from './blocks/PricingTable';\nimport { PricingComparison } from './blocks/PricingComparison';\nimport { AwardsBar } from './blocks/AwardsBar';\nimport { CountUpStats } from './blocks/CountUpStats';\nimport { ImageGallery } from './blocks/ImageGallery';\nimport { ImageCaption } from './blocks/ImageCaption';\nimport { InlineCTA } from './blocks/InlineCTA';\nimport { AnnouncementBar } from './blocks/AnnouncementBar';\nimport { Quote } from './blocks/Quote';\nimport { CodeBlock } from './blocks/CodeBlock';\nimport { KeyValueList } from './blocks/KeyValueList';\nimport { StepsVertical } from './blocks/StepsVertical';\nimport { TabsBlock } from './blocks/Tabs';\nimport { AccordionBlock } from './blocks/AccordionBlock';\nimport { SocialLinks } from './blocks/SocialLinks';\nimport { ContactInfo } from './blocks/ContactInfo';\nimport { MapEmbed } from './blocks/MapEmbed';\nimport { EventsList } from './blocks/EventsList';\nimport { Divider } from './blocks/Divider';\nimport { ThreeColumn } from './blocks/ThreeColumn';\nimport { PressMentions } from './blocks/PressMentions';\nimport { Container } from './blocks/Container';\nimport { withReveal } from './withReveal';\nimport BlockThumbnail, { BLOCK_DESCRIPTIONS } from './BlockThumbnail';\n\n// Default reveal animation per block. Heavier \"section\" blocks fade up;\n// secondary cards/grids do a gentler scale-in. Layout primitives stay static.\nconst DEFAULT_REVEAL = {\n Hero: 'fade-up',\n SectionHeader: 'fade-up',\n CTABanner: 'fade-up',\n Banner: null,\n RichText: 'fade-up',\n PrinciplesList: 'fade-up',\n TwoColumn: 'fade-up',\n ImageText: 'fade-up',\n StatsStrip: 'scale-in',\n PillarsRow: 'fade-up',\n ApproachSteps: 'fade-up',\n ServicesGrid: 'fade-up',\n TeamGrid: 'fade-up',\n LogoStrip: 'scale-in',\n TestimonialQuote: 'fade-up',\n TestimonialGrid: 'fade-up',\n FAQ: 'fade-up',\n Timeline: 'fade-up',\n VideoEmbed: 'scale-in',\n ContactSection: 'fade-up',\n NewsletterSignup: 'fade-up',\n ArticleFeatured: 'fade-up',\n ArticleGrid: 'fade-up',\n ArticleList: 'fade-up',\n IconCards: 'fade-up',\n MetricCards: 'fade-up',\n ImageOverlayCards: 'fade-up',\n PricingTable: 'fade-up',\n PricingComparison: 'fade-up',\n AwardsBar: 'fade-up',\n CountUpStats: 'fade-up',\n ImageGallery: 'fade-up',\n ImageCaption: 'fade-up',\n InlineCTA: 'fade-up',\n AnnouncementBar: null,\n Quote: 'fade-up',\n CodeBlock: 'fade-up',\n KeyValueList: 'fade-up',\n StepsVertical: 'fade-up',\n TabsBlock: 'fade-up',\n AccordionBlock: 'fade-up',\n SocialLinks: 'scale-in',\n ContactInfo: 'fade-up',\n MapEmbed: 'fade-up',\n EventsList: 'fade-up',\n Divider: null,\n ThreeColumn: 'fade-up',\n PressMentions: 'scale-in',\n Container: 'fade-up',\n Spacer: null,\n RawHtml: null,\n};\n\nexport const defaultBlocks = {\n Hero,\n SectionHeader,\n CTABanner,\n Banner,\n RichText,\n PrinciplesList,\n TwoColumn,\n ImageText,\n StatsStrip,\n PillarsRow,\n ApproachSteps,\n ServicesGrid,\n TeamGrid,\n LogoStrip,\n TestimonialQuote,\n TestimonialGrid,\n FAQ,\n Timeline,\n VideoEmbed,\n ContactSection,\n NewsletterSignup,\n ArticleFeatured,\n ArticleGrid,\n ArticleList,\n IconCards,\n MetricCards,\n ImageOverlayCards,\n PricingTable,\n PricingComparison,\n AwardsBar,\n CountUpStats,\n ImageGallery,\n ImageCaption,\n InlineCTA,\n AnnouncementBar,\n Quote,\n CodeBlock,\n KeyValueList,\n StepsVertical,\n TabsBlock,\n AccordionBlock,\n SocialLinks,\n ContactInfo,\n MapEmbed,\n EventsList,\n Divider,\n ThreeColumn,\n PressMentions,\n Container,\n Spacer,\n RawHtml,\n};\n\n// Sidebar grouping for Puck's components panel. Authors browse by category.\nexport const defaultCategories = {\n 'Page sections': {\n components: ['Hero', 'SectionHeader', 'CTABanner', 'Banner', 'AnnouncementBar', 'InlineCTA'],\n },\n Content: {\n components: ['RichText', 'PrinciplesList', 'TwoColumn', 'ThreeColumn', 'ImageText', 'Quote', 'KeyValueList', 'Container', 'CodeBlock'],\n },\n Cards: {\n components: ['IconCards', 'MetricCards', 'ImageOverlayCards'],\n },\n Pricing: {\n components: ['PricingTable', 'PricingComparison'],\n },\n Lists: {\n components: ['StatsStrip', 'CountUpStats', 'PillarsRow', 'ApproachSteps', 'StepsVertical', 'ServicesGrid', 'TeamGrid'],\n },\n Articles: {\n components: ['ArticleFeatured', 'ArticleGrid', 'ArticleList'],\n },\n Trust: {\n components: ['LogoStrip', 'PressMentions', 'AwardsBar', 'TestimonialQuote', 'TestimonialGrid'],\n },\n Interactive: {\n components: ['FAQ', 'AccordionBlock', 'TabsBlock', 'Timeline', 'EventsList'],\n },\n Media: {\n components: ['VideoEmbed', 'ImageGallery', 'ImageCaption', 'MapEmbed'],\n },\n Forms: {\n components: ['ContactSection', 'NewsletterSignup', 'ContactInfo', 'SocialLinks'],\n },\n Layout: {\n components: ['Spacer', 'Divider', 'RawHtml'],\n },\n};\n\nfunction prettyName(name) {\n return String(name || '')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/([a-zA-Z])(\\d)/g, '$1 $2');\n}\n\n// Default Puck overrides — replaces the drawer item with our block-card UI\n// (preview + name + description) backed by BlockThumbnail.\nexport const defaultOverrides = {\n drawerItem: ({ name }) => {\n const label = prettyName(name);\n const desc = BLOCK_DESCRIPTIONS[name] || '';\n return (\n <div className=\"tps-block-card\" title={desc}>\n <div className=\"tps-block-card__preview\">\n <BlockThumbnail name={name} />\n </div>\n <div className=\"tps-block-card__text\">\n <div className=\"tps-block-card__name\">{label}</div>\n {desc && <div className=\"tps-block-card__desc\">{desc}</div>}\n </div>\n </div>\n );\n },\n};\n\n// Default empty Puck payload — used when no saved data exists for a page yet.\nexport const emptyPuckData = {\n root: { props: { title: '' } },\n content: [],\n zones: {},\n};\n\n// Puck v0.20 keys every component in content[] by props.id (it's the lookup\n// into indexes.nodes). Seed/CMS payloads that omit ids — or that re-use the\n// same id across instances — cause Layer/DropZoneChild renders to crash with\n// \"Cannot read properties of undefined (reading 'data')\" and silently merge\n// dropped blocks into a single ghost node. We normalize defensively here so\n// hosts can author plain `{ type, props: {} }` entries without ceremony.\nfunction makeBlockId(type) {\n const suffix =\n typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'\n ? crypto.randomUUID().slice(0, 8)\n : Math.random().toString(36).slice(2, 10);\n return `${type || 'block'}-${suffix}`;\n}\n\n// Fill each content item's missing props from its config component's\n// defaultProps. Puck applies defaultProps only when a block is dragged in\n// via the drawer — saved/seeded payloads that store `{ type, props: {} }`\n// otherwise render (and edit) with empty fields. Existing props always win.\n//\n// Both the renderer and the editor call this on initial data so the field\n// panel is populated when the author clicks a block.\nexport function applyConfigDefaults(data, config) {\n if (!data || !Array.isArray(data.content) || !config?.components) return data;\n let mutated = false;\n const content = data.content.map((item) => {\n const defaults = config.components[item?.type]?.defaultProps;\n if (!defaults) return item;\n const next = { ...defaults, ...(item.props || {}) };\n if (next === item.props) return item;\n mutated = true;\n return { ...item, props: next };\n });\n return mutated ? { ...data, content } : data;\n}\n\nexport function normalizePuckData(input) {\n if (!input || typeof input !== 'object') return input;\n if (!Array.isArray(input.content)) return input;\n let mutated = false;\n const seen = new Set();\n const content = input.content.map((item) => {\n if (!item || typeof item !== 'object') return item;\n const props = item.props || {};\n const existing = typeof props.id === 'string' && props.id ? props.id : '';\n if (existing && !seen.has(existing)) {\n seen.add(existing);\n return item;\n }\n const id = makeBlockId(item.type);\n seen.add(id);\n mutated = true;\n return { ...item, props: { ...props, id } };\n });\n return mutated ? { ...input, content } : input;\n}\n\n// Factory: builds a Puck config from defaults + caller overrides. Consumers\n// can extend `blocks`, replace `categories`, or pass `reveal: null` to skip\n// the scroll-reveal wrapping entirely.\n//\n// `defaults` is the brand-injection point: a record keyed by block name whose\n// values shallow-merge over each block's intrinsic `defaultProps` when the\n// component first lands in the canvas. Lets hosts ship tenant-specific copy\n// (from DB or a static file) without forking the package's block files.\n// Shallow merge — pass the full replacement array for `items` / `stages` etc.\n//\n// Signature kept deliberately small. Tweak via spread; don't pass options we\n// can derive (e.g. categories use whatever component names exist in blocks).\nexport function createPuckConfig({\n blocks = defaultBlocks,\n categories = defaultCategories,\n reveal = DEFAULT_REVEAL,\n defaults,\n root = { fields: { title: { type: 'text', label: 'Page label (admin only)' } } },\n} = {}) {\n const components = {};\n for (const [name, block] of Object.entries(blocks)) {\n const animation = reveal && reveal[name];\n const override = defaults && defaults[name];\n const withDefaults = override\n ? { ...block, defaultProps: { ...(block.defaultProps || {}), ...override } }\n : block;\n components[name] = animation ? withReveal(withDefaults, animation) : withDefaults;\n }\n return { components, categories, root };\n}\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_antd","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_antd","import_icons","import_jsx_runtime","AntdApp","import_antd","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_antd","import_jsx_runtime","import_jsx_runtime","import_react","import_antd","import_icons","import_jsx_runtime","AntdApp","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_antd","import_icons","import_jsx_runtime","import_jsx_runtime","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","ICONS","ICON_OPTIONS","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_antd","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_antd","import_jsx_runtime","import_jsx_runtime","import_antd","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_antd","import_jsx_runtime","AntTabs","import_antd","import_jsx_runtime","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_jsx_runtime","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_jsx_runtime","import_jsx_runtime"]}
|
|
1
|
+
{"version":3,"sources":["../src/index.js","../src/context.jsx","../src/blocks/Hero.jsx","../src/blocks/StatsStrip.jsx","../src/blocks/SectionHeader.jsx","../src/blocks/RichText.jsx","../src/blocks/PillarsRow.jsx","../src/blocks/ApproachSteps.jsx","../src/blocks/ServicesGrid.jsx","../src/blocks/CTABanner.jsx","../src/blocks/PrinciplesList.jsx","../src/blocks/TwoColumn.jsx","../src/blocks/Spacer.jsx","../src/blocks/RawHtml.jsx","../src/blocks/ContactSection.jsx","../src/blocks/ImageText.jsx","../src/blocks/VideoEmbed.jsx","../src/blocks/LogoStrip.jsx","../src/blocks/TestimonialQuote.jsx","../src/blocks/TestimonialGrid.jsx","../src/blocks/FAQ.jsx","../src/blocks/Timeline.jsx","../src/blocks/NewsletterSignup.jsx","../src/blocks/TeamGrid.jsx","../src/blocks/Banner.jsx","../src/blocks/ArticleFeatured.jsx","../src/blocks/ArticleGrid.jsx","../src/blocks/ArticleList.jsx","../src/blocks/IconCards.jsx","../src/blocks/MetricCards.jsx","../src/blocks/ImageOverlayCards.jsx","../src/blocks/PricingTable.jsx","../src/blocks/PricingComparison.jsx","../src/blocks/AwardsBar.jsx","../src/blocks/CountUpStats.jsx","../src/blocks/ImageGallery.jsx","../src/blocks/ImageCaption.jsx","../src/blocks/InlineCTA.jsx","../src/blocks/AnnouncementBar.jsx","../src/blocks/Quote.jsx","../src/blocks/CodeBlock.jsx","../src/blocks/KeyValueList.jsx","../src/blocks/StepsVertical.jsx","../src/blocks/Tabs.jsx","../src/blocks/AccordionBlock.jsx","../src/blocks/SocialLinks.jsx","../src/blocks/ContactInfo.jsx","../src/blocks/MapEmbed.jsx","../src/blocks/_FormBlockBase.jsx","../src/blocks/_DynamicFormField.jsx","../src/blocks/FormContact.jsx","../src/blocks/FormLeadCapture.jsx","../src/blocks/FormNewsletter.jsx","../src/blocks/FormFeedback.jsx","../src/blocks/FormSurvey.jsx","../src/blocks/FormBooking.jsx","../src/blocks/FormRegistration.jsx","../src/blocks/FormQuoteRequest.jsx","../src/blocks/FormApplication.jsx","../src/blocks/FormSupport.jsx","../src/blocks/FormWaitlist.jsx","../src/blocks/FormAddress.jsx","../src/blocks/EventsList.jsx","../src/blocks/Divider.jsx","../src/blocks/ThreeColumn.jsx","../src/blocks/PressMentions.jsx","../src/blocks/Container.jsx","../src/withReveal.jsx","../src/withTheme.jsx","../src/BlockThumbnail.jsx","../src/config.jsx"],"sourcesContent":["// Public surface for @techrox/page-studio-blocks.\n//\n// Three groups of exports:\n// 1. The Puck config builder + defaults (what most consumers want).\n// 2. The block dictionary + helpers, for fine-grained extension.\n// 3. The context provider + hook, for hosts that inject Link, services,\n// analytics, etc. into the block tree.\n\nexport {\n createPuckConfig,\n defaultBlocks,\n defaultCategories,\n defaultOverrides,\n emptyPuckData,\n normalizePuckData,\n applyConfigDefaults,\n} from './config.jsx';\n\nexport { PageStudioProvider, useStudio, StudioLink } from './context.jsx';\n\nexport { withReveal } from './withReveal.jsx';\nexport { withTheme, themeField, THEME_OPTIONS } from './withTheme.jsx';\n\nexport {\n default as BlockThumbnail,\n BLOCK_DESCRIPTIONS,\n} from './BlockThumbnail.jsx';\n\n// Re-export every block by name so consumers can cherry-pick. Importing the\n// whole library is fine in practice — tsup tree-shakes anything not reached\n// by the consumer's import graph.\nexport { Hero } from './blocks/Hero.jsx';\nexport { SectionHeader } from './blocks/SectionHeader.jsx';\nexport { CTABanner } from './blocks/CTABanner.jsx';\nexport { Banner } from './blocks/Banner.jsx';\nexport { RichText } from './blocks/RichText.jsx';\nexport { PrinciplesList } from './blocks/PrinciplesList.jsx';\nexport { TwoColumn } from './blocks/TwoColumn.jsx';\nexport { ImageText } from './blocks/ImageText.jsx';\nexport { StatsStrip } from './blocks/StatsStrip.jsx';\nexport { PillarsRow } from './blocks/PillarsRow.jsx';\nexport { ApproachSteps } from './blocks/ApproachSteps.jsx';\nexport { ServicesGrid } from './blocks/ServicesGrid.jsx';\nexport { TeamGrid } from './blocks/TeamGrid.jsx';\nexport { LogoStrip } from './blocks/LogoStrip.jsx';\nexport { TestimonialQuote } from './blocks/TestimonialQuote.jsx';\nexport { TestimonialGrid } from './blocks/TestimonialGrid.jsx';\nexport { FAQ } from './blocks/FAQ.jsx';\nexport { Timeline } from './blocks/Timeline.jsx';\nexport { VideoEmbed } from './blocks/VideoEmbed.jsx';\nexport { ContactSection } from './blocks/ContactSection.jsx';\nexport { NewsletterSignup } from './blocks/NewsletterSignup.jsx';\nexport { FormContact } from './blocks/FormContact.jsx';\nexport { FormLeadCapture } from './blocks/FormLeadCapture.jsx';\nexport { FormNewsletter } from './blocks/FormNewsletter.jsx';\nexport { FormFeedback } from './blocks/FormFeedback.jsx';\nexport { FormSurvey } from './blocks/FormSurvey.jsx';\nexport { FormBooking } from './blocks/FormBooking.jsx';\nexport { FormRegistration } from './blocks/FormRegistration.jsx';\nexport { FormQuoteRequest } from './blocks/FormQuoteRequest.jsx';\nexport { FormApplication } from './blocks/FormApplication.jsx';\nexport { FormSupport } from './blocks/FormSupport.jsx';\nexport { FormWaitlist } from './blocks/FormWaitlist.jsx';\nexport { FormAddress } from './blocks/FormAddress.jsx';\nexport { ArticleFeatured } from './blocks/ArticleFeatured.jsx';\nexport { ArticleGrid } from './blocks/ArticleGrid.jsx';\nexport { ArticleList } from './blocks/ArticleList.jsx';\nexport { IconCards } from './blocks/IconCards.jsx';\nexport { MetricCards } from './blocks/MetricCards.jsx';\nexport { ImageOverlayCards } from './blocks/ImageOverlayCards.jsx';\nexport { PricingTable } from './blocks/PricingTable.jsx';\nexport { PricingComparison } from './blocks/PricingComparison.jsx';\nexport { AwardsBar } from './blocks/AwardsBar.jsx';\nexport { CountUpStats } from './blocks/CountUpStats.jsx';\nexport { ImageGallery } from './blocks/ImageGallery.jsx';\nexport { ImageCaption } from './blocks/ImageCaption.jsx';\nexport { InlineCTA } from './blocks/InlineCTA.jsx';\nexport { AnnouncementBar } from './blocks/AnnouncementBar.jsx';\nexport { Quote } from './blocks/Quote.jsx';\nexport { CodeBlock } from './blocks/CodeBlock.jsx';\nexport { KeyValueList } from './blocks/KeyValueList.jsx';\nexport { StepsVertical } from './blocks/StepsVertical.jsx';\nexport { TabsBlock } from './blocks/Tabs.jsx';\nexport { AccordionBlock } from './blocks/AccordionBlock.jsx';\nexport { SocialLinks } from './blocks/SocialLinks.jsx';\nexport { ContactInfo } from './blocks/ContactInfo.jsx';\nexport { MapEmbed } from './blocks/MapEmbed.jsx';\nexport { EventsList } from './blocks/EventsList.jsx';\nexport { Divider } from './blocks/Divider.jsx';\nexport { ThreeColumn } from './blocks/ThreeColumn.jsx';\nexport { PressMentions } from './blocks/PressMentions.jsx';\nexport { Container } from './blocks/Container.jsx';\nexport { Spacer } from './blocks/Spacer.jsx';\nexport { RawHtml } from './blocks/RawHtml.jsx';\n","// StudioContext — the single dependency-injection surface that block components\n// read from. Lets blocks stay framework-agnostic: a Next.js host can pass\n// `next/link`; a Vite host can pass a React Router `Link`; a server-only\n// renderer can leave it unset and fall back to plain `<a>`.\n//\n// Design rule: every entry in `StudioContextValue` MUST have a sensible\n// no-op default so a block can be used without the host configuring anything.\n\nimport { createContext, useContext } from 'react';\n\nconst DefaultLink = ({ href, children, ...rest }) => (\n <a href={href} {...rest}>{children}</a>\n);\n\nconst noop = () => {};\n\nconst notConfigured = (name) => async () => {\n throw new Error(\n `[page-studio] ${name}() called but no implementation was provided via <PageStudioProvider>.`,\n );\n};\n\nconst DEFAULTS = {\n // Framework-agnostic link component. Host passes next/link, RR Link, etc.\n Link: DefaultLink,\n // Site-wide brand/contact metadata. Read by blocks that surface contact info.\n site: { email: '', phone: '', social: {} },\n // Service / product catalogue. Used by ServicesGrid and ContactSection's\n // \"areas of interest\" select. Default: empty so blocks render gracefully.\n services: [],\n // Async function the form blocks call to submit a lead. Throws by default\n // — surfaces a clear message instead of failing silently if a host\n // accidentally drops a ContactSection on a page without wiring submitLead.\n submitLead: notConfigured('submitLead'),\n // Same shape — newsletter signups. Hosts can point both at the same backend.\n subscribeNewsletter: notConfigured('subscribeNewsletter'),\n // First-party analytics hook. Default no-op so dropping an instrumented\n // block in a host that doesn't track anything is silent.\n track: noop,\n};\n\nconst StudioContext = createContext(DEFAULTS);\n\nexport function PageStudioProvider({ value, children }) {\n const merged = { ...DEFAULTS, ...(value || {}) };\n return <StudioContext.Provider value={merged}>{children}</StudioContext.Provider>;\n}\n\nexport function useStudio() {\n return useContext(StudioContext);\n}\n\n// Convenience wrapper so block code can do\n// import { StudioLink as Link } from '../StudioLink';\n// and keep their JSX virtually unchanged.\nexport function StudioLink({ href, children, ...rest }) {\n const { Link } = useStudio();\n return <Link href={href} {...rest}>{children}</Link>;\n}\n","// Hero block — eyebrow + heading (HTML allowed) + lede + two CTAs.\n// Two visual variants:\n// - 'landing' (default): uses .tps-hero with the radial-gradient halo,\n// dot pattern, and bigger padding — matches the original landing page\n// hero so visitors see no visual shift after admin saves in Puck.\n// - 'simple': plain section padding for sub-page heroes.\n\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const Hero = {\n label: 'Hero',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading_html: {\n type: 'textarea',\n label: 'Heading (HTML allowed)',\n },\n lede: { type: 'textarea', label: 'Lede' },\n primary_cta_label: { type: 'text', label: 'Primary button label' },\n primary_cta_href: { type: 'text', label: 'Primary button link' },\n secondary_cta_label: { type: 'text', label: 'Secondary button label' },\n secondary_cta_href: { type: 'text', label: 'Secondary button link' },\n align: {\n type: 'radio',\n label: 'Alignment',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Center', value: 'center' },\n ],\n },\n variant: {\n type: 'radio',\n label: 'Visual style',\n options: [\n { label: 'Landing (gradient halo)', value: 'landing' },\n { label: 'Simple (plain section)', value: 'simple' },\n ],\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'Light', value: 'light' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Welcome',\n heading_html:\n 'Build something <em>worth keeping</em>.',\n lede:\n 'A short, friendly intro to your story. Replace this with the one sentence that makes someone want to read on.',\n primary_cta_label: 'Get in touch',\n primary_cta_href: '/contact',\n secondary_cta_label: 'Learn more',\n secondary_cta_href: '/about',\n align: 'left',\n variant: 'landing',\n background: 'light',\n },\n render: ({\n eyebrow,\n heading_html,\n lede,\n primary_cta_label,\n primary_cta_href,\n secondary_cta_label,\n secondary_cta_href,\n align,\n variant,\n background,\n }) => {\n const isLanding = variant === 'landing';\n const sectionClass = `${isLanding ? 'tps-hero' : 'tps-section'}${\n background === 'dark' ? ' tps-section-dark' : ''\n }`;\n const innerClass = isLanding ? 'tps-hero-inner' : 'tps-container';\n return (\n <section\n className={sectionClass}\n style={isLanding ? { textAlign: align } : { paddingTop: 96, paddingBottom: 56, textAlign: align }}\n >\n <div className={innerClass} style={isLanding ? undefined : { maxWidth: 940 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading_html && (\n <h1\n className=\"tps-h1\"\n style={{ marginTop: 12, maxWidth: align === 'left' ? 920 : undefined }}\n dangerouslySetInnerHTML={{ __html: heading_html }}\n />\n )}\n {lede && (\n <p\n className=\"tps-lede\"\n style={{\n marginTop: 16,\n maxWidth: align === 'center' ? 720 : 720,\n marginLeft: align === 'center' ? 'auto' : undefined,\n marginRight: align === 'center' ? 'auto' : undefined,\n }}\n >\n {lede}\n </p>\n )}\n {(primary_cta_label || secondary_cta_label) && (\n <div\n style={{\n display: 'flex',\n gap: 12,\n marginTop: 32,\n justifyContent: align === 'center' ? 'center' : 'flex-start',\n flexWrap: 'wrap',\n }}\n >\n {primary_cta_label && (\n <Link href={primary_cta_href || '/contact'}>\n <Button type=\"primary\" size=\"large\">\n {primary_cta_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n {secondary_cta_label && (\n <Link href={secondary_cta_href || '/services'}>\n <Button size=\"large\">{secondary_cta_label}</Button>\n </Link>\n )}\n </div>\n )}\n </div>\n </section>\n );\n },\n};\n","// StatsStrip — horizontal row of stat cards (value + label).\n\nexport const StatsStrip = {\n label: 'Stats strip',\n fields: {\n items: {\n type: 'array',\n label: 'Stats',\n arrayFields: {\n value: { type: 'text', label: 'Value (e.g. ISO · FSSC)' },\n label: { type: 'text', label: 'Label' },\n },\n defaultItemProps: { value: 'New stat', label: 'Caption' },\n getItemSummary: (item, i) => item?.value || `Stat ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'Soft', value: 'soft' },\n { label: 'White', value: 'white' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n items: [\n { value: '120+', label: 'Happy customers' },\n { value: '24/7', label: 'Support, always on' },\n { value: '99.9%', label: 'Uptime, year after year' },\n { value: '5★', label: 'Average review' },\n ],\n background: 'soft',\n },\n render: ({ items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 32, paddingBottom: 32 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(180px, 100%), 1fr))',\n gap: 24,\n textAlign: 'center',\n }}\n >\n {(items || []).map((it, i) => (\n <div key={i}>\n <div\n style={{\n fontSize: 22,\n fontWeight: 800,\n color: 'var(--tps-primary)',\n letterSpacing: '-0.01em',\n }}\n >\n {it.value}\n </div>\n <div\n style={{\n fontSize: 13,\n color: 'var(--tps-muted)',\n marginTop: 4,\n }}\n >\n {it.label}\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// SectionHeader — eyebrow + heading + optional lede. The standard \"what\n// follows is a major section\" introduction used across the site.\n\nexport const SectionHeader = {\n label: 'Section header',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading_html: {\n type: 'textarea',\n label: 'Heading (HTML allowed)',\n },\n lede: { type: 'textarea', label: 'Lede (optional)' },\n align: {\n type: 'radio',\n label: 'Alignment',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Center', value: 'center' },\n ],\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n spacing: {\n type: 'radio',\n label: 'Vertical spacing',\n options: [\n { label: 'Compact', value: 'compact' },\n { label: 'Standard', value: 'standard' },\n { label: 'Generous', value: 'generous' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'What we do',\n heading_html: 'Built for what’s next.',\n lede: '',\n align: 'left',\n background: 'white',\n spacing: 'standard',\n },\n render: ({ eyebrow, heading_html, lede, align, background, spacing }) => {\n const pad =\n spacing === 'compact' ? 32 : spacing === 'generous' ? 96 : 56;\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: pad, paddingBottom: pad }}\n >\n <div\n className=\"tps-container\"\n style={{ textAlign: align, maxWidth: align === 'center' ? 720 : undefined }}\n >\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading_html && (\n <h2\n className=\"tps-h2\"\n style={{ marginTop: 8 }}\n dangerouslySetInnerHTML={{ __html: heading_html }}\n />\n )}\n {lede && (\n <p className=\"tps-lede\" style={{ marginTop: 12 }}>\n {lede}\n </p>\n )}\n </div>\n </section>\n );\n },\n};\n","// RichText — paragraph(s) of body copy. Accepts HTML for inline emphasis,\n// links, lists. Use for intros, legal pages, free-form content.\n\nexport const RichText = {\n label: 'Rich text',\n fields: {\n html: {\n type: 'textarea',\n label: 'HTML content',\n },\n align: {\n type: 'radio',\n label: 'Alignment',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Center', value: 'center' },\n ],\n },\n maxWidth: {\n type: 'select',\n label: 'Max width',\n options: [\n { label: 'Narrow (680px)', value: 680 },\n { label: 'Comfortable (820px)', value: 820 },\n { label: 'Wide (940px)', value: 940 },\n { label: 'Full', value: 0 },\n ],\n },\n },\n defaultProps: {\n html: '<p>Body copy goes here. You can include <strong>bold</strong>, <em>italics</em>, <a href=\"#\">links</a>, and <code>inline</code> styles.</p>',\n align: 'left',\n maxWidth: 820,\n },\n render: ({ html, align, maxWidth }) => (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div\n className=\"tps-container\"\n style={{\n maxWidth: maxWidth || undefined,\n textAlign: align,\n color: 'var(--tps-ink-2)',\n lineHeight: 1.75,\n fontSize: 16.5,\n }}\n dangerouslySetInnerHTML={{ __html: html }}\n />\n </section>\n ),\n};\n","// PillarsRow — 2/3/4-column grid of icon + title + body cards.\n\nimport {\n ApartmentOutlined,\n ToolOutlined,\n ThunderboltOutlined,\n RocketOutlined,\n SafetyCertificateOutlined,\n CheckCircleFilled,\n TeamOutlined,\n GlobalOutlined,\n BarChartOutlined,\n BulbOutlined,\n} from '@ant-design/icons';\n\nconst ICONS = {\n ApartmentOutlined,\n ToolOutlined,\n ThunderboltOutlined,\n RocketOutlined,\n SafetyCertificateOutlined,\n CheckCircleFilled,\n TeamOutlined,\n GlobalOutlined,\n BarChartOutlined,\n BulbOutlined,\n};\n\nconst ICON_OPTIONS = Object.keys(ICONS).map((k) => ({ label: k, value: k }));\n\nexport const PillarsRow = {\n label: 'Pillars row',\n fields: {\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n { label: '4', value: 4 },\n ],\n },\n items: {\n type: 'array',\n label: 'Pillars',\n arrayFields: {\n icon: { type: 'select', label: 'Icon', options: ICON_OPTIONS },\n title: { type: 'text', label: 'Title' },\n text: { type: 'textarea', label: 'Body' },\n },\n defaultItemProps: {\n icon: 'ApartmentOutlined',\n title: 'New pillar',\n text: 'Short description of this pillar.',\n },\n getItemSummary: (item, i) => item?.title || `Pillar ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n columns: 3,\n items: [\n {\n icon: 'ApartmentOutlined',\n title: 'Built to last',\n text: 'Short, punchy supporting copy that you can rewrite.',\n },\n {\n icon: 'ToolOutlined',\n title: 'Speed where it counts',\n text: 'Short, punchy supporting copy that you can rewrite.',\n },\n {\n icon: 'ThunderboltOutlined',\n title: 'Designed in the open',\n text: 'Short, punchy supporting copy that you can rewrite.',\n },\n ],\n background: 'soft',\n },\n render: ({ items, columns, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${\n columns === 4 ? 220 : columns === 3 ? 280 : 360\n }px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(items || []).map((p, i) => {\n const Icon = ICONS[p.icon] || ApartmentOutlined;\n return (\n <div\n key={i}\n style={{\n background: 'var(--tps-bg)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n padding: 32,\n }}\n >\n <div className=\"tps-service-icon\" style={{ marginBottom: 20 }}>\n <Icon />\n </div>\n <h3 style={{ fontSize: 22, fontWeight: 700, marginBottom: 12 }}>\n {p.title}\n </h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, margin: 0 }}>\n {p.text}\n </p>\n </div>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// ApproachSteps — numbered step list with title + description.\n\nexport const ApproachSteps = {\n label: 'Approach steps',\n fields: {\n items: {\n type: 'array',\n label: 'Steps',\n arrayFields: {\n n: { type: 'text', label: 'Step number (e.g. 01)' },\n title: { type: 'text', label: 'Title' },\n text: { type: 'textarea', label: 'Description' },\n },\n defaultItemProps: {\n n: '01',\n title: 'New step',\n text: 'Short description of this step.',\n },\n getItemSummary: (item, i) =>\n item?.title ? `${item.n || i + 1}. ${item.title}` : `Step ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n items: [\n { n: '01', title: 'Listen', text: 'Short, punchy supporting copy that you can rewrite.' },\n { n: '02', title: 'Plan', text: 'Short, punchy supporting copy that you can rewrite.' },\n { n: '03', title: 'Build', text: 'Short, punchy supporting copy that you can rewrite.' },\n { n: '04', title: 'Launch', text: 'Short, punchy supporting copy that you can rewrite.' },\n ],\n background: 'white',\n },\n render: ({ items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(220px, 100%), 1fr))',\n gap: 24,\n }}\n >\n {(items || []).map((s, i) => (\n <div key={i} style={{ position: 'relative', paddingTop: 20 }}>\n <div\n style={{\n fontSize: 14,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n }}\n >\n {s.n}\n </div>\n <h3 style={{ fontSize: 20, fontWeight: 700, margin: '8px 0 8px' }}>\n {s.title}\n </h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, margin: 0 }}>\n {s.text}\n </p>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// ServicesGrid — auto-renders the 10 service capability cards from the\n// services data file. Editor only chooses how many to show + section chrome.\n\nimport { StudioLink as Link, useStudio } from '../context';\n\nexport const ServicesGrid = {\n label: 'Services grid',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n show: {\n type: 'radio',\n label: 'Show',\n options: [\n { label: 'All services', value: 'all' },\n { label: 'First 4', value: 4 },\n { label: 'First 6', value: 6 },\n { label: 'First 8', value: 8 },\n ],\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: '',\n heading: '',\n show: 'all',\n background: 'white',\n },\n render: ({ eyebrow, heading, show, background }) => {\n const { services } = useStudio();\n const list = show === 'all' ? services : services.slice(0, Number(show));\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && (\n <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>\n {heading}\n </h2>\n )}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(280px, 100%), 1fr))',\n gap: 16,\n }}\n >\n {list.map((s) => (\n <Link\n key={s.slug}\n href={`/services/${s.slug}`}\n style={{\n display: 'block',\n padding: 24,\n background: 'var(--tps-bg)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n transition: 'transform 120ms ease, box-shadow 120ms ease',\n }}\n >\n <div className=\"tps-service-icon\" style={{ marginBottom: 16 }}>\n <s.icon />\n </div>\n <div style={{ fontSize: 11, fontWeight: 700, letterSpacing: 1.5, color: 'var(--tps-accent-dark)' }}>\n {s.eyebrow}\n </div>\n <h3 style={{ fontSize: 18, fontWeight: 700, margin: '6px 0 8px' }}>\n {s.short}\n </h3>\n <p style={{ color: 'var(--tps-muted)', fontSize: 14, lineHeight: 1.6, margin: 0 }}>\n {s.summary}\n </p>\n </Link>\n ))}\n </div>\n </div>\n </section>\n );\n },\n};\n","// CTABanner — full-width call-to-action with tagline + heading + body + button.\n\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const CTABanner = {\n label: 'CTA banner',\n fields: {\n tagline: { type: 'text', label: 'Tagline (small caps)' },\n heading_html: { type: 'textarea', label: 'Heading (HTML allowed)' },\n body: { type: 'textarea', label: 'Body' },\n button_label: { type: 'text', label: 'Button label' },\n button_href: { type: 'text', label: 'Button link' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n tagline: 'READY WHEN YOU ARE',\n heading_html: 'Make it count.<br />Start the conversation.',\n body:\n 'A clear, friendly call to action. Replace this with the one thing you want a reader to do next.',\n button_label: 'Get in touch',\n button_href: '/contact',\n background: 'soft',\n },\n render: ({ tagline, heading_html, body, button_label, button_href, background }) => {\n const dark = background === 'dark';\n return (\n <section\n className={`tps-section ${!dark ? 'tps-section-soft' : 'tps-section-dark'}`}\n style={{ paddingTop: 80, paddingBottom: 80 }}\n >\n <div className=\"tps-container\" style={{ textAlign: 'center', maxWidth: 720 }}>\n {tagline && (\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 2,\n color: dark ? 'var(--tps-accent)' : 'var(--tps-accent-dark)',\n marginBottom: 12,\n }}\n >\n {tagline}\n </div>\n )}\n {heading_html && (\n <h2\n className=\"tps-h2\"\n dangerouslySetInnerHTML={{ __html: heading_html }}\n />\n )}\n {body && (\n <p className=\"tps-lede\" style={{ margin: '16px auto 32px' }}>\n {body}\n </p>\n )}\n {button_label && (\n <Link href={button_href || '/contact'}>\n <Button type=\"primary\" size=\"large\">\n {button_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n </div>\n </section>\n );\n },\n};\n","// PrinciplesList — checkmark bullets with editable items.\n\nimport { CheckCircleFilled } from '@ant-design/icons';\n\nexport const PrinciplesList = {\n label: 'Principles list',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading_html: { type: 'textarea', label: 'Heading (HTML, optional)' },\n lede: { type: 'textarea', label: 'Lede (optional)' },\n label: { type: 'text', label: 'List label (small caps, optional)' },\n items: {\n type: 'array',\n label: 'Principles',\n arrayFields: {\n text: { type: 'text', label: 'Principle' },\n },\n defaultItemProps: { text: 'A new principle' },\n getItemSummary: (item, i) => item?.text || `Principle ${i + 1}`,\n },\n layout: {\n type: 'radio',\n label: 'Layout',\n options: [\n { label: 'Two columns (heading + list)', value: 'split' },\n { label: 'List only', value: 'list-only' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'What we believe',\n heading_html: 'A simpler way<br />to ship great work.',\n lede: 'Replace this with the one belief that shapes everything you do.',\n label: 'EVERY PROJECT IS:',\n items: [\n { text: 'Designed in the open' },\n { text: 'Built to last' },\n { text: 'Made with care' },\n ],\n layout: 'split',\n },\n render: ({ eyebrow, heading_html, lede, label, items, layout }) => {\n const list = (\n <div\n style={{\n background: 'var(--tps-bg-soft)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n padding: 32,\n }}\n >\n {label && (\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 2,\n color: 'var(--tps-accent-dark)',\n marginBottom: 16,\n }}\n >\n {label}\n </div>\n )}\n {(items || []).map((p, i) => (\n <div\n key={i}\n style={{ display: 'flex', alignItems: 'flex-start', gap: 12, marginBottom: 16 }}\n >\n <CheckCircleFilled style={{ color: 'var(--tps-primary)', fontSize: 22 }} />\n <span style={{ fontSize: 17, fontWeight: 500 }}>{p.text}</span>\n </div>\n ))}\n </div>\n );\n return (\n <section className=\"tps-section\" style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\">\n {layout === 'split' ? (\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(360px, 100%), 1fr))',\n gap: 48,\n alignItems: 'center',\n }}\n >\n <div>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading_html && (\n <h2\n className=\"tps-h2\"\n style={{ marginTop: 8 }}\n dangerouslySetInnerHTML={{ __html: heading_html }}\n />\n )}\n {lede && <p className=\"tps-lede\">{lede}</p>}\n </div>\n {list}\n </div>\n ) : (\n <div style={{ maxWidth: 640, margin: '0 auto' }}>{list}</div>\n )}\n </div>\n </section>\n );\n },\n};\n","// TwoColumn — generic side-by-side text columns with editable headings + body.\n\nexport const TwoColumn = {\n label: 'Two columns',\n fields: {\n left_heading: { type: 'text', label: 'Left heading' },\n left_body: { type: 'textarea', label: 'Left body' },\n right_heading: { type: 'text', label: 'Right heading' },\n right_body: { type: 'textarea', label: 'Right body' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n left_heading: 'Column one',\n left_body: 'Body copy for the first column.',\n right_heading: 'Column two',\n right_body: 'Body copy for the second column.',\n background: 'white',\n },\n render: ({ left_heading, left_body, right_heading, right_body, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(320px, 100%), 1fr))',\n gap: 48,\n }}\n >\n <div>\n {left_heading && (\n <h3 style={{ fontSize: 24, fontWeight: 700, marginBottom: 12 }}>\n {left_heading}\n </h3>\n )}\n {left_body && (\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, fontSize: 16 }}>\n {left_body}\n </p>\n )}\n </div>\n <div>\n {right_heading && (\n <h3 style={{ fontSize: 24, fontWeight: 700, marginBottom: 12 }}>\n {right_heading}\n </h3>\n )}\n {right_body && (\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, fontSize: 16 }}>\n {right_body}\n </p>\n )}\n </div>\n </div>\n </div>\n </section>\n ),\n};\n","// Spacer — explicit vertical whitespace control between blocks.\n\nexport const Spacer = {\n label: 'Spacer',\n fields: {\n height: {\n type: 'select',\n label: 'Height',\n options: [\n { label: 'XS (16px)', value: 16 },\n { label: 'S (32px)', value: 32 },\n { label: 'M (56px)', value: 56 },\n { label: 'L (96px)', value: 96 },\n { label: 'XL (140px)', value: 140 },\n ],\n },\n },\n defaultProps: { height: 56 },\n render: ({ height }) => <div aria-hidden style={{ height }} />,\n};\n","// RawHtml — escape hatch for pasting in arbitrary markup (embeds, custom\n// layouts, etc.). Wrapped in a container so it inherits site spacing.\n\nexport const RawHtml = {\n label: 'Custom HTML',\n fields: {\n html: { type: 'textarea', label: 'HTML' },\n contained: {\n type: 'radio',\n label: 'Width',\n options: [\n { label: 'Inside container', value: 'contained' },\n { label: 'Full bleed', value: 'full' },\n ],\n },\n },\n defaultProps: {\n html: '<div style=\"padding: 24px; border: 1px dashed #cbd5e1; text-align: center; color: #64748b;\">Custom HTML block — replace with your own markup</div>',\n contained: 'contained',\n },\n render: ({ html, contained }) => {\n if (contained === 'full') {\n return <div dangerouslySetInnerHTML={{ __html: html }} />;\n }\n return (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\" dangerouslySetInnerHTML={{ __html: html }} />\n </section>\n );\n },\n};\n","'use client';\n\n// ContactSection — a self-contained contact-page block. Renders the hero,\n// the sidebar (email + LinkedIn + response card) and the lead-capture form\n// as one editable unit. Authors get fields for every visible label and\n// dropdown option; the form wiring (validation, submit, tracking) stays\n// internal so it works the same way on the public site as the legacy\n// schema-rendered contact page.\n\nimport { useState } from 'react';\nimport { Row, Col, Form, Input, Button, Select, Space, App as AntdApp } from 'antd';\nimport { SendOutlined, MailOutlined, LinkedinFilled } from '@ant-design/icons';\n\nimport { useStudio } from '../context';\n\nfunction ContactSectionRender({\n hero_eyebrow,\n hero_heading,\n hero_lede,\n sidebar_heading,\n response_label,\n response_body,\n form_submit_label,\n form_privacy_html,\n success_heading,\n success_body,\n stages,\n contact_email,\n}) {\n const [form] = Form.useForm();\n const { message } = AntdApp.useApp();\n const { services, site, submitLead, track } = useStudio();\n const [submitting, setSubmitting] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n const [started, setStarted] = useState(false);\n\n const stagesList = Array.isArray(stages) ? stages.filter(Boolean) : [];\n const email = contact_email || site.email;\n\n const onFirstInteraction = () => {\n if (started) return;\n setStarted(true);\n track('contact_form_start', { surface: 'contact_page' });\n };\n\n const onSubmit = async (values) => {\n setSubmitting(true);\n try {\n await submitLead({\n ...values,\n message: [\n values.stage ? `Stage: ${values.stage}` : null,\n values.interest ? `Interest: ${values.interest}` : null,\n values.message,\n ]\n .filter(Boolean)\n .join('\\n\\n'),\n source: 'contact_page',\n });\n track('contact_submit', { surface: 'contact_page' });\n message.success(\"Thank you — we'll reach out within one business day.\");\n form.resetFields();\n setSubmitted(true);\n } catch (err) {\n track('contact_error', { surface: 'contact_page', field: 'submit' });\n message.error(\n err?.message ||\n err?.response?.data?.error ||\n 'Something went wrong. Please try again or email us directly.',\n );\n } finally {\n setSubmitting(false);\n }\n };\n\n const onFinishFailed = ({ errorFields }) => {\n const firstField = errorFields?.[0]?.name?.[0];\n track('contact_error', { surface: 'contact_page', field: firstField || 'validation' });\n };\n\n return (\n <>\n <section className=\"tps-service-hero\">\n <div className=\"tps-container\">\n {hero_eyebrow && <span className=\"tps-eyebrow\">{hero_eyebrow}</span>}\n {hero_heading && (\n <h1 className=\"tps-h1\" style={{ maxWidth: 880 }}>\n {hero_heading}\n </h1>\n )}\n {hero_lede && <p className=\"tps-lede\">{hero_lede}</p>}\n </div>\n </section>\n\n <section className=\"tps-section\">\n <div className=\"tps-container\">\n <Row gutter={[48, 48]}>\n <Col xs={24} md={9}>\n {sidebar_heading && <h2 className=\"tps-h3\">{sidebar_heading}</h2>}\n <Space direction=\"vertical\" size={20} style={{ width: '100%', marginTop: 24 }}>\n <a\n href={`mailto:${email}`}\n style={{\n display: 'flex',\n gap: 14,\n padding: 16,\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n }}\n >\n <MailOutlined style={{ fontSize: 22, color: 'var(--tps-primary)' }} />\n <div>\n <div style={{ fontSize: 12, color: 'var(--tps-muted)' }}>Email</div>\n <div style={{ fontSize: 15, fontWeight: 600 }}>{email}</div>\n </div>\n </a>\n <a\n href={site.social?.linkedin || '#'}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{\n display: 'flex',\n gap: 14,\n padding: 16,\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n }}\n >\n <LinkedinFilled style={{ fontSize: 22, color: 'var(--tps-primary)' }} />\n <div>\n <div style={{ fontSize: 12, color: 'var(--tps-muted)' }}>LinkedIn</div>\n <div style={{ fontSize: 15, fontWeight: 600 }}>Page Studio</div>\n </div>\n </a>\n </Space>\n\n {(response_label || response_body) && (\n <div\n style={{\n marginTop: 32,\n padding: 20,\n background: 'var(--tps-bg-soft)',\n borderRadius: 'var(--tps-radius)',\n border: '1px solid var(--tps-line)',\n }}\n >\n {response_label && (\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n marginBottom: 8,\n }}\n >\n {response_label}\n </div>\n )}\n {response_body && (\n <p style={{ margin: 0, color: 'var(--tps-ink-2)', lineHeight: 1.6 }}>\n {response_body}\n </p>\n )}\n </div>\n )}\n </Col>\n\n <Col xs={24} md={15}>\n <div className=\"tps-form-card\">\n {submitted ? (\n <div style={{ textAlign: 'center', padding: '40px 20px' }}>\n <div\n style={{\n width: 72,\n height: 72,\n borderRadius: '50%',\n background: 'rgba(15, 118, 110, 0.1)',\n color: 'var(--tps-primary)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 32,\n marginBottom: 24,\n }}\n >\n ✓\n </div>\n {success_heading && <h2 className=\"tps-h3\">{success_heading}</h2>}\n {success_body && (\n <p className=\"tps-lede\" style={{ margin: '0 auto', maxWidth: 480 }}>\n {success_body}\n </p>\n )}\n <Button\n type=\"link\"\n onClick={() => setSubmitted(false)}\n style={{ marginTop: 16 }}\n >\n Send another message\n </Button>\n </div>\n ) : (\n <Form\n form={form}\n layout=\"vertical\"\n onFinish={onSubmit}\n onFinishFailed={onFinishFailed}\n onValuesChange={onFirstInteraction}\n requiredMark={false}\n >\n <Row gutter={16}>\n <Col xs={24} sm={12}>\n <Form.Item\n label=\"Full name\"\n name=\"full_name\"\n rules={[{ required: true, message: 'Please enter your name' }]}\n >\n <Input size=\"large\" placeholder=\"Your name\" />\n </Form.Item>\n </Col>\n <Col xs={24} sm={12}>\n <Form.Item\n label=\"Work email\"\n name=\"email\"\n rules={[\n { required: true, message: 'Email is required' },\n { type: 'email', message: 'Enter a valid email' },\n ]}\n >\n <Input size=\"large\" placeholder=\"you@company.com\" />\n </Form.Item>\n </Col>\n </Row>\n <Row gutter={16}>\n <Col xs={24} sm={12}>\n <Form.Item label=\"Phone\" name=\"phone\">\n <Input size=\"large\" placeholder=\"Optional\" />\n </Form.Item>\n </Col>\n <Col xs={24} sm={12}>\n <Form.Item\n label=\"Organization\"\n name=\"organization\"\n rules={[{ required: true, message: 'Organization is required' }]}\n >\n <Input size=\"large\" placeholder=\"Your company\" />\n </Form.Item>\n </Col>\n </Row>\n\n {stagesList.length > 0 && (\n <Form.Item label=\"Where are you in your journey?\" name=\"stage\">\n <Select\n size=\"large\"\n placeholder=\"Select the stage that best describes you\"\n options={stagesList.map((s) => {\n const v = typeof s === 'string' ? s : s?.text || String(s);\n return { value: v, label: v };\n })}\n />\n </Form.Item>\n )}\n\n <Form.Item label=\"Which capabilities interest you?\" name=\"interest\">\n <Select\n size=\"large\"\n mode=\"multiple\"\n placeholder=\"Pick one or more (optional)\"\n options={services.map((s) => ({ value: s.short || s.label || s.slug, label: s.short || s.label || s.slug }))}\n />\n </Form.Item>\n\n <Form.Item\n label=\"Tell us more\"\n name=\"message\"\n rules={[{ required: true, message: 'A short message helps us prepare' }]}\n >\n <Input.TextArea\n rows={5}\n placeholder=\"Your products, current systems, target markets, or specific challenges you'd like to discuss…\"\n />\n </Form.Item>\n\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={submitting}\n icon={<SendOutlined />}\n style={{ minWidth: 200, height: 48, fontWeight: 600 }}\n >\n {form_submit_label || 'Send message'}\n </Button>\n\n {form_privacy_html && (\n <p\n style={{\n fontSize: 13,\n color: 'var(--tps-muted)',\n marginTop: 16,\n marginBottom: 0,\n }}\n dangerouslySetInnerHTML={{ __html: form_privacy_html }}\n />\n )}\n </Form>\n )}\n </div>\n </Col>\n </Row>\n </div>\n </section>\n </>\n );\n}\n\nexport const ContactSection = {\n label: 'Contact section',\n fields: {\n hero_eyebrow: { type: 'text', label: 'Eyebrow' },\n hero_heading: { type: 'text', label: 'Heading' },\n hero_lede: { type: 'textarea', label: 'Lede' },\n sidebar_heading: { type: 'text', label: 'Sidebar heading' },\n response_label: { type: 'text', label: 'Response card label' },\n response_body: { type: 'textarea', label: 'Response card body' },\n form_submit_label: { type: 'text', label: 'Submit button label' },\n form_privacy_html: {\n type: 'textarea',\n label: 'Privacy footer (HTML allowed)',\n },\n success_heading: { type: 'text', label: 'Success heading' },\n success_body: { type: 'textarea', label: 'Success body' },\n stages: {\n type: 'array',\n label: 'Stage dropdown options',\n arrayFields: {\n text: { type: 'text', label: 'Stage' },\n },\n defaultItemProps: { text: 'New stage' },\n getItemSummary: (item, i) => item?.text || `Stage ${i + 1}`,\n },\n contact_email: { type: 'text', label: 'Public email' },\n },\n defaultProps: {\n hero_eyebrow: 'Contact',\n hero_heading: 'Say hello.',\n hero_lede:\n \"A short, friendly intro for the contact page. Tell visitors what kind of message you're hoping to get, and how soon you'll reply.\",\n sidebar_heading: 'Get in touch',\n response_label: 'RESPONSE TIME',\n response_body:\n \"We aim to reply within one business day. Replace this with your own promise.\",\n form_submit_label: 'Send message',\n form_privacy_html:\n 'We respect your privacy. See our <a href=\"/privacy\">privacy policy</a> for how we handle the information you share.',\n success_heading: 'Thank you.',\n success_body:\n \"We've received your message and will be in touch shortly.\",\n stages: [\n { text: 'Just exploring' },\n { text: 'Starting a new project' },\n { text: 'Improving an existing process' },\n { text: 'Need help with strategy' },\n { text: 'Other' },\n ],\n contact_email: '',\n },\n render: (props) => <ContactSectionRender {...props} />,\n};\n","// ImageText — image on one side, heading/body/CTA on the other. Classic\n// alternating \"feature\" section. Image position is editable so you can flip\n// it to break visual rhythm.\n\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const ImageText = {\n label: 'Image + text',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n body: { type: 'textarea', label: 'Body', rows: 4 },\n image_url: { type: 'text', label: 'Image URL' },\n image_alt: { type: 'text', label: 'Image alt text' },\n image_position: {\n type: 'radio',\n label: 'Image position',\n options: [\n { label: 'Left', value: 'left' },\n { label: 'Right', value: 'right' },\n ],\n },\n cta_label: { type: 'text', label: 'Button label' },\n cta_href: { type: 'text', label: 'Button link' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Feature',\n heading: 'A focused capability',\n body:\n 'Describe what this section is about — what value it delivers, and why it matters to the reader.',\n image_url: '',\n image_alt: '',\n image_position: 'left',\n cta_label: 'Learn more',\n cta_href: '/services',\n background: 'white',\n },\n render: ({\n eyebrow,\n heading,\n body,\n image_url,\n image_alt,\n image_position,\n cta_label,\n cta_href,\n background,\n }) => {\n const imageEl = image_url ? (\n <img\n src={image_url}\n alt={image_alt || ''}\n style={{\n width: '100%',\n height: 'auto',\n borderRadius: 'var(--tps-radius)',\n display: 'block',\n }}\n />\n ) : (\n <div\n style={{\n width: '100%',\n aspectRatio: '4 / 3',\n background: 'var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#94A3B8',\n fontSize: 13,\n }}\n >\n Image placeholder\n </div>\n );\n const textEl = (\n <div>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n {body && <p className=\"tps-lede\">{body}</p>}\n {cta_label && (\n <Link href={cta_href || '/contact'}>\n <Button type=\"primary\" size=\"large\" style={{ marginTop: 8 }}>\n {cta_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n </div>\n );\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(320px, 100%), 1fr))',\n gap: 48,\n alignItems: 'center',\n }}\n >\n {image_position === 'left' ? (\n <>\n {imageEl}\n {textEl}\n </>\n ) : (\n <>\n {textEl}\n {imageEl}\n </>\n )}\n </div>\n </div>\n </section>\n );\n },\n};\n","// VideoEmbed — YouTube or Vimeo embed with caption. Parses the URL to\n// extract the video ID and renders the standard responsive iframe.\n\nfunction parseVideoUrl(url) {\n if (!url) return null;\n // YouTube: youtube.com/watch?v=ID, youtu.be/ID, youtube.com/embed/ID\n const yt = url.match(\n /(?:youtube\\.com\\/(?:watch\\?v=|embed\\/|v\\/)|youtu\\.be\\/)([a-zA-Z0-9_-]{6,})/,\n );\n if (yt) return { provider: 'youtube', id: yt[1] };\n // Vimeo: vimeo.com/ID\n const vm = url.match(/vimeo\\.com\\/(?:video\\/)?(\\d+)/);\n if (vm) return { provider: 'vimeo', id: vm[1] };\n return null;\n}\n\nexport const VideoEmbed = {\n label: 'Video embed',\n fields: {\n video_url: {\n type: 'text',\n label: 'YouTube or Vimeo URL',\n },\n caption: { type: 'text', label: 'Caption (optional)' },\n max_width: {\n type: 'select',\n label: 'Max width',\n options: [\n { label: 'Narrow (720px)', value: 720 },\n { label: 'Comfortable (940px)', value: 940 },\n { label: 'Wide (1140px)', value: 1140 },\n ],\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n video_url: 'https://www.youtube.com/watch?v=dQw4w9WgXcQ',\n caption: '',\n max_width: 940,\n background: 'white',\n },\n render: ({ video_url, caption, max_width, background }) => {\n const parsed = parseVideoUrl(video_url);\n const src =\n parsed?.provider === 'youtube'\n ? `https://www.youtube-nocookie.com/embed/${parsed.id}`\n : parsed?.provider === 'vimeo'\n ? `https://player.vimeo.com/video/${parsed.id}`\n : null;\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 48, paddingBottom: 48 }}\n >\n <div className=\"tps-container\" style={{ maxWidth: max_width }}>\n <div\n style={{\n position: 'relative',\n paddingBottom: '56.25%',\n height: 0,\n overflow: 'hidden',\n borderRadius: 'var(--tps-radius)',\n background: '#0F172A',\n }}\n >\n {src ? (\n <iframe\n src={src}\n title={caption || 'Embedded video'}\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share\"\n allowFullScreen\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n border: 0,\n }}\n />\n ) : (\n <div\n style={{\n position: 'absolute',\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#94A3B8',\n fontSize: 13,\n }}\n >\n Paste a YouTube or Vimeo URL\n </div>\n )}\n </div>\n {caption && (\n <p\n style={{\n marginTop: 12,\n fontSize: 13,\n color: 'var(--tps-muted)',\n textAlign: 'center',\n }}\n >\n {caption}\n </p>\n )}\n </div>\n </section>\n );\n },\n};\n","// LogoStrip — \"Trusted by\" client/partner logos in a single row. Renders\n// each logo as an image OR (when no image_url is provided) as styled text,\n// so authors can use it before they've uploaded SVGs.\n\nexport const LogoStrip = {\n label: 'Logo strip',\n fields: {\n heading: { type: 'text', label: 'Heading (small caps, optional)' },\n items: {\n type: 'array',\n label: 'Logos',\n arrayFields: {\n name: { type: 'text', label: 'Brand name (text fallback)' },\n image_url: { type: 'text', label: 'Image URL (optional)' },\n link: { type: 'text', label: 'Link URL (optional)' },\n },\n defaultItemProps: { name: 'New brand', image_url: '', link: '' },\n getItemSummary: (item, i) => item?.name || `Logo ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n heading: 'TRUSTED BY',\n items: [\n { name: 'Brand One', image_url: '', link: '' },\n { name: 'Brand Two', image_url: '', link: '' },\n { name: 'Brand Three', image_url: '', link: '' },\n { name: 'Brand Four', image_url: '', link: '' },\n { name: 'Brand Five', image_url: '', link: '' },\n ],\n background: 'soft',\n },\n render: ({ heading, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 40, paddingBottom: 40 }}\n >\n <div className=\"tps-container\" style={{ textAlign: 'center' }}>\n {heading && (\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 2,\n color: 'var(--tps-muted)',\n marginBottom: 24,\n }}\n >\n {heading}\n </div>\n )}\n <div\n style={{\n display: 'flex',\n flexWrap: 'wrap',\n justifyContent: 'center',\n alignItems: 'center',\n gap: 40,\n }}\n >\n {(items || []).map((logo, i) => {\n const inner = logo.image_url ? (\n <img\n src={logo.image_url}\n alt={logo.name || ''}\n style={{\n height: 32,\n width: 'auto',\n objectFit: 'contain',\n filter: 'grayscale(100%)',\n opacity: 0.65,\n transition: 'all 200ms ease',\n }}\n />\n ) : (\n <span\n style={{\n fontSize: 16,\n fontWeight: 700,\n color: 'var(--tps-muted)',\n letterSpacing: '-0.01em',\n }}\n >\n {logo.name}\n </span>\n );\n return logo.link ? (\n <a\n key={i}\n href={logo.link}\n target=\"_blank\"\n rel=\"noreferrer\"\n style={{ textDecoration: 'none' }}\n >\n {inner}\n </a>\n ) : (\n <div key={i}>{inner}</div>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// TestimonialQuote — single large pull-quote with attribution. Use when\n// one testimonial deserves the full spotlight (e.g. lead case study).\n\nexport const TestimonialQuote = {\n label: 'Testimonial quote',\n fields: {\n quote: { type: 'textarea', label: 'Quote', rows: 4 },\n author_name: { type: 'text', label: 'Author name' },\n author_role: { type: 'text', label: 'Role' },\n author_company: { type: 'text', label: 'Company' },\n author_image: { type: 'text', label: 'Photo URL (optional)' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n quote:\n \"A short, glowing quote from a happy customer. Replace this with the testimonial you want front and center.\",\n author_name: 'Alex Rivera',\n author_role: 'Founder',\n author_company: 'Acme Co.',\n author_image: '',\n background: 'soft',\n },\n render: ({ quote, author_name, author_role, author_company, author_image, background }) => {\n const dark = background === 'dark';\n return (\n <section\n className={`tps-section ${!dark ? 'tps-section-soft' : ''}`}\n style={{\n paddingTop: 80,\n paddingBottom: 80,\n background: dark ? '#0F172A' : undefined,\n color: dark ? '#fff' : undefined,\n }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 820, textAlign: 'center' }}>\n <div\n style={{\n fontSize: 'clamp(40px, 10vw, 64px)',\n lineHeight: 1,\n color: dark ? '#F59E0B' : 'var(--tps-primary)',\n fontFamily: 'Georgia, serif',\n marginBottom: -16,\n opacity: 0.6,\n }}\n >\n “\n </div>\n <p\n style={{\n fontSize: 22,\n lineHeight: 1.55,\n fontWeight: 500,\n color: dark ? '#fff' : 'var(--tps-ink)',\n margin: '0 0 32px',\n }}\n >\n {quote}\n </p>\n <div\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 14,\n }}\n >\n {author_image ? (\n <img\n src={author_image}\n alt={author_name || ''}\n style={{\n width: 48,\n height: 48,\n borderRadius: '50%',\n objectFit: 'cover',\n }}\n />\n ) : (\n <div\n style={{\n width: 48,\n height: 48,\n borderRadius: '50%',\n background: dark ? 'rgba(255,255,255,0.1)' : 'var(--tps-primary)',\n color: '#fff',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 700,\n }}\n >\n {(author_name || '?').slice(0, 1).toUpperCase()}\n </div>\n )}\n <div style={{ textAlign: 'left' }}>\n <div\n style={{\n fontWeight: 700,\n color: dark ? '#fff' : 'var(--tps-ink)',\n }}\n >\n {author_name}\n </div>\n <div\n style={{\n fontSize: 13,\n color: dark ? 'rgba(255,255,255,0.7)' : 'var(--tps-muted)',\n }}\n >\n {[author_role, author_company].filter(Boolean).join(' · ')}\n </div>\n </div>\n </div>\n </div>\n </section>\n );\n },\n};\n","// TestimonialGrid — 2 or 3 testimonial cards in a row. Used when you want\n// social proof from multiple voices without a single quote dominating.\n\nexport const TestimonialGrid = {\n label: 'Testimonial grid',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n ],\n },\n items: {\n type: 'array',\n label: 'Testimonials',\n arrayFields: {\n quote: { type: 'textarea', label: 'Quote', rows: 4 },\n name: { type: 'text', label: 'Name' },\n role: { type: 'text', label: 'Role' },\n company: { type: 'text', label: 'Company' },\n },\n defaultItemProps: {\n quote: 'Add a short quote here.',\n name: 'Name',\n role: 'Role',\n company: 'Company',\n },\n getItemSummary: (item, i) => item?.name || `Testimonial ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Kind words',\n heading: 'Loved by people like you.',\n columns: 3,\n items: [\n {\n quote:\n 'A short, friendly quote from a happy customer. Replace this with your own.',\n name: 'Alex Rivera',\n role: 'Founder',\n company: 'Acme Co.',\n },\n {\n quote:\n 'A short, friendly quote from a happy customer. Replace this with your own.',\n name: 'Sam Lee',\n role: 'Product Lead',\n company: 'Northwind',\n },\n {\n quote:\n 'A short, friendly quote from a happy customer. Replace this with your own.',\n name: 'Jamie Chen',\n role: 'Operations',\n company: 'Lighthouse Labs',\n },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, columns, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ textAlign: 'center', marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${columns === 2 ? 360 : 280}px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(items || []).map((t, i) => (\n <div\n key={i}\n style={{\n background: 'var(--tps-bg)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n padding: 28,\n display: 'flex',\n flexDirection: 'column',\n gap: 20,\n }}\n >\n <p\n style={{\n fontSize: 16,\n lineHeight: 1.6,\n color: 'var(--tps-ink-2)',\n margin: 0,\n flex: 1,\n }}\n >\n “{t.quote}”\n </p>\n <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>\n <div\n style={{\n width: 40,\n height: 40,\n borderRadius: '50%',\n background: 'var(--tps-primary)',\n color: '#fff',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 700,\n fontSize: 14,\n }}\n >\n {(t.name || '?').slice(0, 1).toUpperCase()}\n </div>\n <div>\n <div style={{ fontWeight: 700, fontSize: 14 }}>{t.name}</div>\n <div style={{ fontSize: 12, color: 'var(--tps-muted)' }}>\n {[t.role, t.company].filter(Boolean).join(' · ')}\n </div>\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","'use client';\n\n// FAQ — accordion of question / answer items. Uses AntD Collapse so it gets\n// the accessibility + keyboard handling for free.\n\nimport { Collapse } from 'antd';\n\nexport const FAQ = {\n label: 'FAQ accordion',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n items: {\n type: 'array',\n label: 'Questions',\n arrayFields: {\n question: { type: 'text', label: 'Question' },\n answer_html: {\n type: 'textarea',\n label: 'Answer (HTML allowed)',\n rows: 5,\n },\n },\n defaultItemProps: {\n question: 'New question?',\n answer_html: '<p>Answer goes here.</p>',\n },\n getItemSummary: (item, i) => item?.question || `Question ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Frequently asked',\n heading: 'Quick answers.',\n items: [\n {\n question: 'What does a typical project look like?',\n answer_html:\n '<p>A short, friendly answer that you can rewrite to match your own process.</p>',\n },\n {\n question: 'How do we get started?',\n answer_html:\n '<p>A short, friendly answer that you can rewrite to match your own process.</p>',\n },\n {\n question: 'How much does it cost?',\n answer_html:\n '<p>A short, friendly answer that you can rewrite to match your own pricing.</p>',\n },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <Collapse\n accordion\n bordered={false}\n expandIconPosition=\"end\"\n style={{ background: 'transparent' }}\n items={(items || []).map((it, i) => ({\n key: String(i),\n label: (\n <span style={{ fontSize: 16, fontWeight: 600, color: 'var(--tps-ink)' }}>\n {it.question}\n </span>\n ),\n children: (\n <div\n style={{ color: 'var(--tps-ink-2)', lineHeight: 1.7, fontSize: 15 }}\n dangerouslySetInnerHTML={{ __html: it.answer_html || '' }}\n />\n ),\n style: {\n background: 'var(--tps-bg)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n marginBottom: 12,\n overflow: 'hidden',\n },\n }))}\n />\n </div>\n </section>\n ),\n};\n","// Timeline — vertical chronological events list. Each item has a date, a\n// title, and a body. Useful for company history, project milestones, or a\n// \"what happens after you contact us\" walkthrough.\n\nexport const Timeline = {\n label: 'Timeline',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n items: {\n type: 'array',\n label: 'Events',\n arrayFields: {\n date: { type: 'text', label: 'Date / label (e.g. 2024 Q1)' },\n title: { type: 'text', label: 'Title' },\n body: { type: 'textarea', label: 'Body', rows: 3 },\n },\n defaultItemProps: {\n date: 'New event',\n title: 'Title',\n body: 'Short description of what happened.',\n },\n getItemSummary: (item, i) =>\n item?.title ? `${item.date || ''} ${item.title}` : `Event ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Our story',\n heading: 'How we got here.',\n items: [\n { date: '2022', title: 'Founded', body: 'A short, friendly description of this milestone. Rewrite to match your story.' },\n { date: '2023', title: 'First customers', body: 'A short, friendly description of this milestone. Rewrite to match your story.' },\n { date: '2024', title: 'A growing team', body: 'A short, friendly description of this milestone. Rewrite to match your story.' },\n { date: '2025', title: 'Where good ideas grow', body: 'A short, friendly description of this milestone. Rewrite to match your story.' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 720 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <ol\n style={{\n listStyle: 'none',\n padding: 0,\n margin: 0,\n position: 'relative',\n paddingLeft: 32,\n }}\n >\n {/* Vertical line */}\n <div\n aria-hidden\n style={{\n position: 'absolute',\n left: 9,\n top: 6,\n bottom: 6,\n width: 2,\n background: 'var(--tps-line)',\n }}\n />\n {(items || []).map((it, i) => (\n <li\n key={i}\n style={{\n position: 'relative',\n paddingBottom: 28,\n }}\n >\n <div\n aria-hidden\n style={{\n position: 'absolute',\n left: -32 + 4,\n top: 6,\n width: 12,\n height: 12,\n borderRadius: '50%',\n background: 'var(--tps-primary)',\n boxShadow: '0 0 0 4px var(--tps-bg)',\n }}\n />\n <div\n style={{\n fontSize: 12,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n marginBottom: 4,\n }}\n >\n {it.date}\n </div>\n <h3 style={{ fontSize: 18, fontWeight: 700, margin: '0 0 6px' }}>\n {it.title}\n </h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, margin: 0 }}>\n {it.body}\n </p>\n </li>\n ))}\n </ol>\n </div>\n </section>\n ),\n};\n","'use client';\n\n// NewsletterSignup — single-field email capture. Submits through the\n// existing leads endpoint with source='newsletter' so subscribers land in\n// the same admin Leads list as contact-form submissions, but are filterable.\n\nimport { useState } from 'react';\nimport { Button, Input, Form, App as AntdApp } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nimport { useStudio } from '../context';\n\nfunction NewsletterSignupRender({\n eyebrow,\n heading,\n body,\n button_label,\n success_message,\n background,\n}) {\n const [form] = Form.useForm();\n const { message } = AntdApp.useApp();\n const { subscribeNewsletter } = useStudio();\n const [submitting, setSubmitting] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n\n const onSubmit = async ({ email }) => {\n setSubmitting(true);\n try {\n await subscribeNewsletter({ email, source: 'newsletter' });\n setSubmitted(true);\n form.resetFields();\n } catch (err) {\n message.error(err?.message || err?.response?.data?.error || 'Could not subscribe — please try again.');\n } finally {\n setSubmitting(false);\n }\n };\n\n const dark = background === 'dark';\n\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`}\n style={{\n paddingTop: 64,\n paddingBottom: 64,\n background: dark ? '#0F172A' : undefined,\n color: dark ? '#fff' : undefined,\n }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 640, textAlign: 'center' }}>\n {eyebrow && (\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 2,\n color: dark ? '#F59E0B' : 'var(--tps-accent-dark)',\n marginBottom: 12,\n }}\n >\n {eyebrow}\n </div>\n )}\n {heading && (\n <h2 className=\"tps-h2\" style={{ color: dark ? '#fff' : undefined }}>\n {heading}\n </h2>\n )}\n {body && (\n <p\n className=\"tps-lede\"\n style={{\n margin: '12px auto 28px',\n color: dark ? 'rgba(255,255,255,0.85)' : undefined,\n }}\n >\n {body}\n </p>\n )}\n {submitted ? (\n <div\n style={{\n padding: 20,\n borderRadius: 'var(--tps-radius)',\n background: dark ? 'rgba(255,255,255,0.05)' : 'rgba(15,118,110,0.08)',\n color: dark ? '#fff' : 'var(--tps-primary)',\n fontWeight: 600,\n }}\n >\n ✓ {success_message || \"You're subscribed.\"}\n </div>\n ) : (\n <Form\n form={form}\n onFinish={onSubmit}\n layout=\"inline\"\n style={{ justifyContent: 'center', flexWrap: 'nowrap', gap: 8 }}\n >\n <Form.Item\n name=\"email\"\n rules={[\n { required: true, message: 'Email required' },\n { type: 'email', message: 'Enter a valid email' },\n ]}\n style={{ flex: 1, maxWidth: 360, marginInlineEnd: 0 }}\n >\n <Input size=\"large\" placeholder=\"you@company.com\" />\n </Form.Item>\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={submitting}\n icon={<ArrowRightOutlined />}\n >\n {button_label || 'Subscribe'}\n </Button>\n </Form>\n )}\n </div>\n </section>\n );\n}\n\nexport const NewsletterSignup = {\n label: 'Newsletter signup',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n body: { type: 'textarea', label: 'Body' },\n button_label: { type: 'text', label: 'Button label' },\n success_message: { type: 'text', label: 'Success message' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'STAY IN THE LOOP',\n heading: 'Get the good stuff in your inbox.',\n body:\n 'A short, friendly pitch for the newsletter. One sentence on what subscribers get and how often.',\n button_label: 'Subscribe',\n success_message: \"You're in. Talk soon.\",\n background: 'soft',\n },\n render: (props) => <NewsletterSignupRender {...props} />,\n};\n","// TeamGrid — team member cards (photo, name, role, bio, LinkedIn link).\n\nimport { LinkedinFilled } from '@ant-design/icons';\n\nexport const TeamGrid = {\n label: 'Team grid',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n { label: '4', value: 4 },\n ],\n },\n members: {\n type: 'array',\n label: 'Team members',\n arrayFields: {\n name: { type: 'text', label: 'Name' },\n role: { type: 'text', label: 'Role' },\n bio: { type: 'textarea', label: 'Short bio', rows: 3 },\n image_url: { type: 'text', label: 'Photo URL' },\n linkedin: { type: 'text', label: 'LinkedIn URL' },\n },\n defaultItemProps: {\n name: 'New team member',\n role: 'Role',\n bio: 'A short bio (2–3 sentences).',\n image_url: '',\n linkedin: '',\n },\n getItemSummary: (item, i) => item?.name || `Member ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'The team',\n heading: 'The people behind the work.',\n columns: 3,\n members: [\n {\n name: 'Alex Morgan',\n role: 'Founder',\n bio: 'Spent a decade building product teams before starting the studio. Writes about craft, hiring, and shipping.',\n image_url: '',\n linkedin: '',\n },\n {\n name: 'Priya Shah',\n role: 'Head of design',\n bio: 'Leads the design practice across web, brand, and product. Previously at a design-led SaaS company.',\n image_url: '',\n linkedin: '',\n },\n {\n name: 'Jordan Lee',\n role: 'Engineering lead',\n bio: 'Front-end at heart, full-stack by necessity. Cares deeply about accessibility and performance.',\n image_url: '',\n linkedin: '',\n },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, members, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fill, minmax(min(${\n columns === 4 ? 220 : columns === 3 ? 260 : 320\n }px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(members || []).map((m, i) => (\n <div\n key={i}\n style={{\n background: 'var(--tps-bg)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n overflow: 'hidden',\n }}\n >\n <div\n style={{\n width: '100%',\n aspectRatio: '4 / 3',\n background: m.image_url ? `url(${m.image_url}) center/cover` : 'var(--tps-line)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#94A3B8',\n fontSize: 13,\n }}\n >\n {!m.image_url && (m.name || 'Photo')}\n </div>\n <div style={{ padding: 20 }}>\n <h3 style={{ fontSize: 18, fontWeight: 700, margin: '0 0 4px' }}>\n {m.name}\n </h3>\n <div\n style={{\n fontSize: 12,\n color: 'var(--tps-accent-dark)',\n fontWeight: 700,\n letterSpacing: 1,\n marginBottom: 12,\n textTransform: 'uppercase',\n }}\n >\n {m.role}\n </div>\n {m.bio && (\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.6, fontSize: 14, margin: 0 }}>\n {m.bio}\n </p>\n )}\n {m.linkedin && (\n <a\n href={m.linkedin}\n target=\"_blank\"\n rel=\"noreferrer\"\n aria-label={`${m.name} on LinkedIn`}\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n marginTop: 14,\n color: 'var(--tps-primary)',\n fontSize: 13,\n fontWeight: 600,\n textDecoration: 'none',\n }}\n >\n <LinkedinFilled /> LinkedIn\n </a>\n )}\n </div>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// Banner — full-width announcement strip. Use for \"we're hiring\", a new\n// service launch, an event invite, etc. Variant controls the colour\n// scheme; the optional link turns it into a clickable strip.\n\nimport { StudioLink as Link } from '../context';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\n// `info` is the \"brand-coloured\" variant. It reads --tps-primary-soft for the\n// background (so a brand without a soft tint defined falls back to the teal\n// palette) and --tps-primary for the foreground/accent.\nconst VARIANTS = {\n info: {\n bg: 'var(--tps-primary-soft, #E0F2F1)',\n fg: 'var(--tps-primary, #0b60d8)',\n accent: 'var(--tps-primary, #0b60d8)',\n },\n success: { bg: '#DCFCE7', fg: '#15803D', accent: '#15803D' },\n warning: { bg: '#FEF3C7', fg: '#92400E', accent: '#B45309' },\n dark: {\n bg: 'var(--tps-ink, #0F172A)',\n fg: '#FFFFFF',\n accent: 'var(--tps-accent, #F59E0B)',\n },\n};\n\nexport const Banner = {\n label: 'Banner',\n fields: {\n variant: {\n type: 'select',\n label: 'Style',\n options: [\n { label: 'Info (teal)', value: 'info' },\n { label: 'Success (green)', value: 'success' },\n { label: 'Warning (amber)', value: 'warning' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n label: { type: 'text', label: 'Small label (left, optional)' },\n title: { type: 'text', label: 'Title' },\n body: { type: 'text', label: 'Body (one line)' },\n link_label: { type: 'text', label: 'Link label (optional)' },\n link_href: { type: 'text', label: 'Link URL' },\n },\n defaultProps: {\n variant: 'info',\n label: 'NEW',\n title: 'Something fresh just landed',\n body: 'A short, one-line update you can rewrite.',\n link_label: 'Learn more',\n link_href: '/services',\n },\n render: ({ variant, label, title, body, link_label, link_href }) => {\n const v = VARIANTS[variant] || VARIANTS.info;\n return (\n <section\n style={{\n background: v.bg,\n color: v.fg,\n padding: '16px 24px',\n }}\n >\n <div\n style={{\n maxWidth: 1240,\n margin: '0 auto',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n flexWrap: 'wrap',\n gap: 12,\n fontSize: 14,\n textAlign: 'center',\n }}\n >\n {label && (\n <span\n style={{\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 1.5,\n padding: '3px 8px',\n borderRadius: 4,\n background: v.accent,\n color: '#fff',\n }}\n >\n {label}\n </span>\n )}\n {title && <strong style={{ fontWeight: 700 }}>{title}</strong>}\n {body && <span style={{ opacity: 0.9 }}>{body}</span>}\n {link_label && link_href && (\n <Link\n href={link_href}\n style={{\n color: v.accent,\n fontWeight: 700,\n textDecoration: 'none',\n display: 'inline-flex',\n alignItems: 'center',\n gap: 4,\n }}\n >\n {link_label} <ArrowRightOutlined />\n </Link>\n )}\n </div>\n </section>\n );\n },\n};\n","// ArticleFeatured — large hero-style featured article. Big image on one\n// side, tag/headline/excerpt/byline + CTA on the other. The \"lead story\"\n// of a blog or news section.\n\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const ArticleFeatured = {\n label: 'Article — featured',\n fields: {\n eyebrow: { type: 'text', label: 'Section eyebrow (optional)' },\n tag: { type: 'text', label: 'Article tag (small, coloured)' },\n headline: { type: 'text', label: 'Headline' },\n excerpt: { type: 'textarea', label: 'Excerpt', rows: 3 },\n image_url: { type: 'text', label: 'Cover image URL' },\n image_alt: { type: 'text', label: 'Image alt text' },\n author: { type: 'text', label: 'Author' },\n date: { type: 'text', label: 'Published date (e.g. Mar 2026)' },\n read_minutes: { type: 'text', label: 'Read time (e.g. 6 min)' },\n link_label: { type: 'text', label: 'Read button label' },\n link_href: { type: 'text', label: 'Article URL' },\n image_position: {\n type: 'radio',\n label: 'Image position',\n options: [\n { label: 'Right', value: 'right' },\n { label: 'Left', value: 'left' },\n ],\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Featured',\n tag: 'STORY',\n headline: 'A catchy headline that makes a reader want to click.',\n excerpt:\n 'A short, one-paragraph excerpt that previews the story. Replace this with your own.',\n image_url: '',\n image_alt: '',\n author: 'Author name',\n date: 'Mar 2026',\n read_minutes: '6 min',\n link_label: 'Read more',\n link_href: '#',\n image_position: 'right',\n background: 'white',\n },\n render: ({\n eyebrow,\n tag,\n headline,\n excerpt,\n image_url,\n image_alt,\n author,\n date,\n read_minutes,\n link_label,\n link_href,\n image_position,\n background,\n }) => {\n const image = (\n <div\n style={{\n width: '100%',\n aspectRatio: '4 / 3',\n background: image_url ? `url(${image_url}) center/cover no-repeat` : '#0F172A',\n borderRadius: 'var(--tps-radius)',\n backgroundClip: 'padding-box',\n }}\n role={image_url ? 'img' : undefined}\n aria-label={image_url ? image_alt || '' : undefined}\n >\n {!image_url && (\n <div\n style={{\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: '#94A3B8',\n fontSize: 14,\n }}\n >\n Cover image\n </div>\n )}\n </div>\n );\n const text = (\n <div>\n {tag && (\n <span\n style={{\n display: 'inline-block',\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: '#fff',\n background: 'var(--tps-primary)',\n padding: '4px 10px',\n borderRadius: 4,\n marginBottom: 16,\n }}\n >\n {tag}\n </span>\n )}\n <h2\n className=\"tps-h2\"\n style={{ marginTop: 0, marginBottom: 16, lineHeight: 1.15 }}\n >\n {headline}\n </h2>\n {excerpt && <p className=\"tps-lede\" style={{ marginBottom: 24 }}>{excerpt}</p>}\n <div\n style={{\n display: 'flex',\n gap: 14,\n alignItems: 'center',\n color: 'var(--tps-muted)',\n fontSize: 13,\n marginBottom: 24,\n }}\n >\n {author && <span style={{ fontWeight: 600 }}>{author}</span>}\n {date && (\n <>\n <span aria-hidden>·</span>\n <span>{date}</span>\n </>\n )}\n {read_minutes && (\n <>\n <span aria-hidden>·</span>\n <span>{read_minutes} read</span>\n </>\n )}\n </div>\n {link_label && (\n <Link href={link_href || '#'}>\n <Button type=\"primary\" size=\"large\">\n {link_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n </div>\n );\n\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${\n background === 'dark' ? ' tps-section-dark' : ''\n }`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {eyebrow && (\n <div style={{ marginBottom: 32 }}>\n <span className=\"tps-eyebrow\">{eyebrow}</span>\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(320px, 100%), 1fr))',\n gap: 48,\n alignItems: 'center',\n }}\n >\n {image_position === 'left' ? (\n <>\n {image}\n {text}\n </>\n ) : (\n <>\n {text}\n {image}\n </>\n )}\n </div>\n </div>\n </section>\n );\n },\n};\n","// ArticleGrid — grid of article cards (image + tag + headline + excerpt +\n// byline). Standard blog/news landing layout.\n\nimport { StudioLink as Link } from '../context';\n\nexport const ArticleGrid = {\n label: 'Article — grid',\n fields: {\n eyebrow: { type: 'text', label: 'Section eyebrow' },\n heading: { type: 'text', label: 'Section heading' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n ],\n },\n items: {\n type: 'array',\n label: 'Articles',\n arrayFields: {\n tag: { type: 'text', label: 'Tag' },\n headline: { type: 'text', label: 'Headline' },\n excerpt: { type: 'textarea', label: 'Excerpt', rows: 2 },\n image_url: { type: 'text', label: 'Cover image URL' },\n author: { type: 'text', label: 'Author' },\n date: { type: 'text', label: 'Date' },\n href: { type: 'text', label: 'Link URL' },\n },\n defaultItemProps: {\n tag: 'INSIGHT',\n headline: 'New article headline',\n excerpt: 'A short excerpt that gives the reader a reason to click through.',\n image_url: '',\n author: 'Author name',\n date: 'Mar 2026',\n href: '#',\n },\n getItemSummary: (item, i) => item?.headline || `Article ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Latest',\n heading: 'Where good ideas grow.',\n columns: 3,\n items: [\n {\n tag: 'STORY',\n headline: 'A catchy article headline goes here',\n excerpt: 'A short, friendly preview that you can rewrite.',\n image_url: '',\n author: 'Author name',\n date: 'Mar 2026',\n href: '#',\n },\n {\n tag: 'GUIDE',\n headline: 'Another headline that earns the click',\n excerpt: 'A short, friendly preview that you can rewrite.',\n image_url: '',\n author: 'Author name',\n date: 'Feb 2026',\n href: '#',\n },\n {\n tag: 'OPINION',\n headline: 'A third headline to round out the row',\n excerpt: 'A short, friendly preview that you can rewrite.',\n image_url: '',\n author: 'Author name',\n date: 'Jan 2026',\n href: '#',\n },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${columns === 2 ? 360 : 280}px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(items || []).map((a, i) => (\n <Link\n key={i}\n href={a.href || '#'}\n style={{\n display: 'flex',\n flexDirection: 'column',\n background: 'var(--tps-bg)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n overflow: 'hidden',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n transition: 'transform 200ms ease, box-shadow 200ms ease',\n }}\n className=\"tps-card-hover\"\n >\n <div\n style={{\n width: '100%',\n aspectRatio: '16 / 10',\n background: a.image_url ? `url(${a.image_url}) center/cover no-repeat` : 'var(--tps-line)',\n }}\n />\n <div style={{ padding: 24, display: 'flex', flexDirection: 'column', gap: 12, flex: 1 }}>\n {a.tag && (\n <span\n style={{\n fontSize: 10,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n }}\n >\n {a.tag}\n </span>\n )}\n <h3 style={{ fontSize: 19, fontWeight: 700, margin: 0, lineHeight: 1.3 }}>\n {a.headline}\n </h3>\n {a.excerpt && (\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.6, margin: 0, fontSize: 14, flex: 1 }}>\n {a.excerpt}\n </p>\n )}\n <div\n style={{\n display: 'flex',\n gap: 8,\n fontSize: 12,\n color: 'var(--tps-muted)',\n marginTop: 4,\n }}\n >\n {a.author && <span style={{ fontWeight: 600 }}>{a.author}</span>}\n {a.date && (\n <>\n <span aria-hidden>·</span>\n <span>{a.date}</span>\n </>\n )}\n </div>\n </div>\n </Link>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// ArticleList — text-heavy chronological list (no images). Best for an\n// archive page or sidebar \"more posts\" rail. Each row is a date + headline\n// + one-line excerpt.\n\nimport { StudioLink as Link } from '../context';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const ArticleList = {\n label: 'Article — list',\n fields: {\n eyebrow: { type: 'text', label: 'Section eyebrow' },\n heading: { type: 'text', label: 'Section heading' },\n items: {\n type: 'array',\n label: 'Articles',\n arrayFields: {\n date: { type: 'text', label: 'Date' },\n tag: { type: 'text', label: 'Tag (optional)' },\n headline: { type: 'text', label: 'Headline' },\n excerpt: { type: 'text', label: 'One-line excerpt' },\n href: { type: 'text', label: 'Link URL' },\n },\n defaultItemProps: {\n date: 'Mar 2026',\n tag: 'GUIDE',\n headline: 'New article',\n excerpt: 'One-line description.',\n href: '#',\n },\n getItemSummary: (item, i) => item?.headline || `Article ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Archive',\n heading: 'All articles.',\n items: [\n { date: 'Mar 2026', tag: 'STORY', headline: 'A catchy article headline goes here', excerpt: 'A one-line preview you can rewrite.', href: '#' },\n { date: 'Feb 2026', tag: 'GUIDE', headline: 'Another headline that earns the click', excerpt: 'A one-line preview you can rewrite.', href: '#' },\n { date: 'Jan 2026', tag: 'OPINION', headline: 'A third headline to fill out the list', excerpt: 'A one-line preview you can rewrite.', href: '#' },\n { date: 'Dec 2025', tag: 'STORY', headline: 'One more headline for good measure', excerpt: 'A one-line preview you can rewrite.', href: '#' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <ul style={{ listStyle: 'none', padding: 0, margin: 0 }}>\n {(items || []).map((a, i) => (\n <li\n key={i}\n style={{\n borderBottom: '1px solid var(--tps-line)',\n }}\n >\n <Link\n href={a.href || '#'}\n className=\"tps-row-stack\"\n style={{\n display: 'grid',\n gridTemplateColumns: '110px 1fr auto',\n alignItems: 'baseline',\n gap: 24,\n padding: '20px 0',\n textDecoration: 'none',\n color: 'var(--tps-ink)',\n }}\n >\n <div\n style={{\n fontSize: 12,\n color: 'var(--tps-muted)',\n fontWeight: 600,\n }}\n >\n {a.date}\n </div>\n <div>\n {a.tag && (\n <span\n style={{\n display: 'inline-block',\n fontSize: 10,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: 'var(--tps-accent-dark)',\n marginRight: 12,\n }}\n >\n {a.tag}\n </span>\n )}\n <span\n style={{\n fontSize: 17,\n fontWeight: 600,\n lineHeight: 1.4,\n }}\n >\n {a.headline}\n </span>\n {a.excerpt && (\n <div\n style={{\n marginTop: 4,\n color: 'var(--tps-muted)',\n fontSize: 14,\n }}\n >\n {a.excerpt}\n </div>\n )}\n </div>\n <ArrowRightOutlined style={{ color: 'var(--tps-muted)', fontSize: 14 }} />\n </Link>\n </li>\n ))}\n </ul>\n </div>\n </section>\n ),\n};\n","// IconCards — small icon + title + 1-line body, in a 3 / 4-column grid.\n// Lighter than PillarsRow — meant for sub-features or quick \"what you get\"\n// rundowns under a primary section.\n\nimport {\n CheckCircleOutlined,\n ApartmentOutlined,\n ToolOutlined,\n ThunderboltOutlined,\n RocketOutlined,\n SafetyCertificateOutlined,\n TeamOutlined,\n GlobalOutlined,\n BarChartOutlined,\n BulbOutlined,\n ClockCircleOutlined,\n TrophyOutlined,\n FileSearchOutlined,\n AuditOutlined,\n} from '@ant-design/icons';\n\nconst ICONS = {\n CheckCircleOutlined,\n ApartmentOutlined,\n ToolOutlined,\n ThunderboltOutlined,\n RocketOutlined,\n SafetyCertificateOutlined,\n TeamOutlined,\n GlobalOutlined,\n BarChartOutlined,\n BulbOutlined,\n ClockCircleOutlined,\n TrophyOutlined,\n FileSearchOutlined,\n AuditOutlined,\n};\nconst ICON_OPTIONS = Object.keys(ICONS).map((k) => ({ label: k, value: k }));\n\nexport const IconCards = {\n label: 'Icon cards',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n { label: '4', value: 4 },\n ],\n },\n items: {\n type: 'array',\n label: 'Cards',\n arrayFields: {\n icon: { type: 'select', label: 'Icon', options: ICON_OPTIONS },\n title: { type: 'text', label: 'Title' },\n body: { type: 'textarea', label: 'Body', rows: 2 },\n },\n defaultItemProps: {\n icon: 'CheckCircleOutlined',\n title: 'Card title',\n body: 'A short description (1–2 lines).',\n },\n getItemSummary: (item, i) => item?.title || `Card ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: '',\n heading: '',\n columns: 4,\n items: [\n { icon: 'CheckCircleOutlined', title: 'Built to last', body: 'Short, punchy supporting copy.' },\n { icon: 'ClockCircleOutlined', title: 'Quick to ship', body: 'Short, punchy supporting copy.' },\n { icon: 'TeamOutlined', title: 'Made with care', body: 'Short, punchy supporting copy.' },\n { icon: 'TrophyOutlined', title: 'Worth keeping', body: 'Short, punchy supporting copy.' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 56, paddingBottom: 56 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${\n columns === 4 ? 200 : columns === 3 ? 260 : 320\n }px, 100%), 1fr))`,\n gap: 24,\n }}\n >\n {(items || []).map((c, i) => {\n const Icon = ICONS[c.icon] || CheckCircleOutlined;\n return (\n <div\n key={i}\n style={{\n padding: 24,\n background: 'var(--tps-bg)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n }}\n >\n <div\n style={{\n width: 40,\n height: 40,\n borderRadius: 8,\n background: 'rgba(15, 118, 110, 0.1)',\n color: 'var(--tps-primary)',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontSize: 18,\n marginBottom: 16,\n }}\n >\n <Icon />\n </div>\n <h3 style={{ fontSize: 16, fontWeight: 700, margin: '0 0 6px' }}>\n {c.title}\n </h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.55, margin: 0, fontSize: 14 }}>\n {c.body}\n </p>\n </div>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// MetricCards — large-number cards with optional trend indicator. The\n// \"by the numbers\" section. Bigger, bolder, more visual than StatsStrip.\n\nimport { ArrowUpOutlined, ArrowDownOutlined } from '@ant-design/icons';\n\nexport const MetricCards = {\n label: 'Metric cards',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n items: {\n type: 'array',\n label: 'Metrics',\n arrayFields: {\n value: { type: 'text', label: 'Value (e.g. 80%, 4.8/5)' },\n label: { type: 'text', label: 'Label' },\n delta: { type: 'text', label: 'Trend label (e.g. +12 YoY)' },\n trend: {\n type: 'select',\n label: 'Trend direction',\n options: [\n { label: 'None', value: 'none' },\n { label: 'Up (positive)', value: 'up' },\n { label: 'Down (positive)', value: 'down' },\n ],\n },\n },\n defaultItemProps: { value: '0', label: 'New metric', delta: '', trend: 'none' },\n getItemSummary: (item, i) => item?.label || `Metric ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'By the numbers',\n heading: 'Results that speak for themselves.',\n items: [\n { value: '80%', label: 'A short, generic stat label you can rewrite', delta: '+12 YoY', trend: 'up' },\n { value: '4 wk', label: 'Median time to first ship', delta: '−2 wk vs avg.', trend: 'up' },\n { value: '4.8 / 5', label: 'Customer satisfaction', delta: '', trend: 'none' },\n { value: '0', label: 'Late deliveries this quarter', delta: '', trend: 'none' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => {\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${\n background === 'dark' ? ' tps-section-dark' : ''\n }`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && (\n <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>\n {heading}\n </h2>\n )}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: 'repeat(auto-fit, minmax(min(220px, 100%), 1fr))',\n gap: 16,\n }}\n >\n {(items || []).map((m, i) => (\n <div\n key={i}\n style={{\n padding: 28,\n background: 'var(--tps-bg)',\n border: '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n }}\n >\n <div\n style={{\n fontSize: 'clamp(28px, 6vw, 44px)',\n fontWeight: 800,\n color: 'var(--tps-primary)',\n letterSpacing: '-0.02em',\n lineHeight: 1.05,\n marginBottom: 12,\n }}\n >\n {m.value}\n </div>\n <div\n style={{\n fontSize: 14,\n color: 'var(--tps-ink-2)',\n lineHeight: 1.55,\n marginBottom: m.delta ? 12 : 0,\n }}\n >\n {m.label}\n </div>\n {m.delta && m.trend !== 'none' && (\n <div\n style={{\n display: 'inline-flex',\n alignItems: 'center',\n gap: 4,\n fontSize: 12,\n fontWeight: 700,\n padding: '4px 8px',\n borderRadius: 4,\n background:\n m.trend === 'up'\n ? 'rgba(15, 128, 61, 0.12)'\n : 'rgba(220, 38, 38, 0.12)',\n color: m.trend === 'up' ? '#15803D' : '#DC2626',\n }}\n >\n {m.trend === 'up' ? <ArrowUpOutlined /> : <ArrowDownOutlined />}\n {m.delta}\n </div>\n )}\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n },\n};\n","// ImageOverlayCards — full-bleed image cards with text overlay. The\n// \"category\" / \"explore\" pattern. Click-through to a destination URL.\n\nimport { StudioLink as Link } from '../context';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const ImageOverlayCards = {\n label: 'Image overlay cards',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow (optional)' },\n heading: { type: 'text', label: 'Heading (optional)' },\n columns: {\n type: 'radio',\n label: 'Columns',\n options: [\n { label: '2', value: 2 },\n { label: '3', value: 3 },\n ],\n },\n items: {\n type: 'array',\n label: 'Cards',\n arrayFields: {\n kicker: { type: 'text', label: 'Kicker (small label)' },\n title: { type: 'text', label: 'Title' },\n body: { type: 'textarea', label: 'Body', rows: 2 },\n image_url: { type: 'text', label: 'Background image URL' },\n href: { type: 'text', label: 'Link URL' },\n },\n defaultItemProps: {\n kicker: 'CATEGORY',\n title: 'New card',\n body: 'Short description.',\n image_url: '',\n href: '#',\n },\n getItemSummary: (item, i) => item?.title || `Card ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n },\n defaultProps: {\n eyebrow: 'Explore',\n heading: 'Pick a place to start.',\n columns: 3,\n items: [\n { kicker: 'CATEGORY', title: 'A category title', body: 'A short, friendly description.', image_url: '', href: '/services' },\n { kicker: 'CATEGORY', title: 'Another category', body: 'A short, friendly description.', image_url: '', href: '/services' },\n { kicker: 'CATEGORY', title: 'One more option', body: 'A short, friendly description.', image_url: '', href: '/services' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, items, background }) => (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`}\n style={{ paddingTop: 64, paddingBottom: 64 }}\n >\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(auto-fit, minmax(min(${columns === 2 ? 360 : 280}px, 100%), 1fr))`,\n gap: 16,\n }}\n >\n {(items || []).map((c, i) => (\n <Link\n key={i}\n href={c.href || '#'}\n style={{\n position: 'relative',\n display: 'block',\n aspectRatio: '4 / 5',\n borderRadius: 'var(--tps-radius)',\n overflow: 'hidden',\n textDecoration: 'none',\n color: '#fff',\n background: c.image_url\n ? `linear-gradient(180deg, rgba(15, 23, 42, 0.05) 0%, rgba(15, 23, 42, 0.85) 80%), url(${c.image_url}) center/cover no-repeat`\n : 'linear-gradient(180deg, var(--tps-primary, #0b60d8) 0%, var(--tps-ink, #0F172A) 100%)',\n }}\n className=\"tps-overlay-card\"\n >\n <div\n style={{\n position: 'absolute',\n inset: 0,\n padding: 24,\n display: 'flex',\n flexDirection: 'column',\n justifyContent: 'flex-end',\n }}\n >\n {c.kicker && (\n <div\n style={{\n fontSize: 11,\n fontWeight: 700,\n letterSpacing: 1.5,\n color: '#F59E0B',\n marginBottom: 8,\n }}\n >\n {c.kicker}\n </div>\n )}\n <h3\n style={{\n fontSize: 22,\n fontWeight: 700,\n margin: '0 0 8px',\n lineHeight: 1.2,\n }}\n >\n {c.title}\n </h3>\n {c.body && (\n <p\n style={{\n margin: 0,\n fontSize: 14,\n lineHeight: 1.5,\n color: 'rgba(255,255,255,0.85)',\n }}\n >\n {c.body}\n </p>\n )}\n <div\n style={{\n marginTop: 16,\n display: 'inline-flex',\n alignItems: 'center',\n gap: 6,\n fontSize: 13,\n fontWeight: 700,\n }}\n >\n Explore <ArrowRightOutlined />\n </div>\n </div>\n </Link>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// PricingTable — 3-tier pricing cards with feature lists.\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { CheckOutlined } from '@ant-design/icons';\n\nexport const PricingTable = {\n label: 'Pricing table',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n tiers: {\n type: 'array',\n label: 'Tiers',\n arrayFields: {\n name: { type: 'text', label: 'Tier name' },\n price: { type: 'text', label: 'Price (e.g. $499)' },\n period: { type: 'text', label: 'Period (e.g. /mo, one-time)' },\n description: { type: 'text', label: 'One-line description' },\n features: { type: 'textarea', label: 'Features (one per line)', rows: 6 },\n cta_label: { type: 'text', label: 'CTA label' },\n cta_href: { type: 'text', label: 'CTA URL' },\n highlighted: {\n type: 'radio',\n label: 'Highlight',\n options: [\n { label: 'No', value: false },\n { label: 'Yes', value: true },\n ],\n },\n },\n defaultItemProps: {\n name: 'New tier', price: '', period: '', description: '',\n features: '', cta_label: 'Get started', cta_href: '/contact', highlighted: false,\n },\n getItemSummary: (item, i) => item?.name || `Tier ${i + 1}`,\n },\n background: {\n type: 'radio',\n label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: 'Pricing',\n heading: 'Simple plans for every team.',\n tiers: [\n { name: 'Starter', price: '$19', period: '/mo', description: 'Everything you need to get going.', features: 'Up to 3 seats\\nCore features\\nEmail support', cta_label: 'Get started', cta_href: '/contact', highlighted: false },\n { name: 'Pro', price: '$49', period: '/mo', description: 'For growing teams that need more.', features: 'Up to 20 seats\\nAll Starter features\\nPriority support\\nAdvanced analytics', cta_label: 'Start free trial', cta_href: '/contact', highlighted: true },\n { name: 'Enterprise', price: 'Custom', period: 'annual', description: 'For teams with bigger needs.', features: 'Unlimited seats\\nAll Pro features\\nDedicated manager\\nCustom SLAs', cta_label: 'Talk to sales', cta_href: '/contact', highlighted: false },\n ],\n background: 'soft',\n },\n render: ({ eyebrow, heading, tiers, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 64, paddingBottom: 64 }}>\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ textAlign: 'center', marginBottom: 40 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(260px, 100%), 1fr))', gap: 16, alignItems: 'stretch' }}>\n {(tiers || []).map((t, i) => {\n const featList = (t.features || '').split('\\n').map((s) => s.trim()).filter(Boolean);\n return (\n <div key={i} style={{\n position: 'relative', padding: 28,\n background: t.highlighted ? 'var(--tps-primary)' : 'var(--tps-bg)',\n color: t.highlighted ? '#fff' : 'var(--tps-ink)',\n border: t.highlighted ? 'none' : '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n boxShadow: t.highlighted ? '0 16px 40px -16px rgba(15,118,110,0.45)' : 'none',\n display: 'flex', flexDirection: 'column', gap: 16,\n }}>\n {t.highlighted && (\n <div style={{ position: 'absolute', top: -10, left: '50%', transform: 'translateX(-50%)', background: '#F59E0B', color: '#0F172A', fontSize: 11, fontWeight: 700, letterSpacing: 1, padding: '3px 10px', borderRadius: 4 }}>POPULAR</div>\n )}\n <div>\n <div style={{ fontSize: 14, fontWeight: 700, opacity: 0.9 }}>{t.name}</div>\n <div style={{ display: 'flex', alignItems: 'baseline', gap: 6, marginTop: 6 }}>\n <span style={{ fontSize: 'clamp(28px, 6vw, 36px)', fontWeight: 800, letterSpacing: '-0.02em' }}>{t.price}</span>\n {t.period && <span style={{ fontSize: 13, opacity: 0.75 }}>{t.period}</span>}\n </div>\n {t.description && <p style={{ marginTop: 8, marginBottom: 0, fontSize: 14, opacity: 0.85, lineHeight: 1.5 }}>{t.description}</p>}\n </div>\n <ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: 8, flex: 1 }}>\n {featList.map((f, j) => (\n <li key={j} style={{ display: 'flex', gap: 8, alignItems: 'flex-start', fontSize: 14, lineHeight: 1.5 }}>\n <CheckOutlined style={{ color: t.highlighted ? '#F59E0B' : 'var(--tps-primary)', fontSize: 14, marginTop: 4 }} />\n <span>{f}</span>\n </li>\n ))}\n </ul>\n {t.cta_label && (\n <Link href={t.cta_href || '/contact'}>\n <Button block size=\"large\" type={t.highlighted ? 'default' : 'primary'} ghost={!t.highlighted ? false : true}>\n {t.cta_label}\n </Button>\n </Link>\n )}\n </div>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// PricingComparison — feature comparison table across N tiers. For \"what's\n// in / what's out\" matrices.\nimport { CheckOutlined, CloseOutlined } from '@ant-design/icons';\n\nexport const PricingComparison = {\n label: 'Pricing comparison',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n tiers: {\n type: 'array', label: 'Tier columns',\n arrayFields: {\n name: { type: 'text', label: 'Tier name' },\n },\n defaultItemProps: { name: 'Tier' },\n getItemSummary: (it, i) => it?.name || `Tier ${i + 1}`,\n },\n rows: {\n type: 'array', label: 'Feature rows',\n arrayFields: {\n feature: { type: 'text', label: 'Feature' },\n values: { type: 'text', label: 'Per-tier values (CSV; \"yes\"/\"no\" for ticks)' },\n },\n defaultItemProps: { feature: 'Feature', values: 'yes,yes,yes' },\n getItemSummary: (it, i) => it?.feature || `Row ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: 'Compare', heading: 'What you get at each tier.',\n tiers: [{ name: 'Starter' }, { name: 'Pro' }, { name: 'Enterprise' }],\n rows: [\n { feature: 'Core features', values: 'yes,yes,yes' },\n { feature: 'Priority support', values: 'no,yes,yes' },\n { feature: 'Advanced analytics', values: 'no,yes,yes' },\n { feature: 'Single sign-on', values: 'no,no,yes' },\n { feature: 'Dedicated manager', values: 'no,no,yes' },\n { feature: 'Custom SLAs', values: 'no,no,yes' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, tiers, rows, background }) => {\n const tierList = tiers || [];\n return (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ maxWidth: 940 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32, textAlign: 'center' }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div style={{ overflowX: 'auto', border: '1px solid var(--tps-line)', borderRadius: 'var(--tps-radius)', background: 'var(--tps-bg)' }}>\n <table style={{ width: '100%', borderCollapse: 'collapse' }}>\n <thead>\n <tr>\n <th style={{ textAlign: 'left', padding: '14px 16px', fontSize: 13, fontWeight: 700, color: 'var(--tps-muted)', borderBottom: '1px solid var(--tps-line)' }}>Feature</th>\n {tierList.map((t, i) => (\n <th key={i} style={{ textAlign: 'center', padding: '14px 16px', fontSize: 13, fontWeight: 700, color: 'var(--tps-ink)', borderBottom: '1px solid var(--tps-line)' }}>{t.name}</th>\n ))}\n </tr>\n </thead>\n <tbody>\n {(rows || []).map((r, i) => {\n const vals = (r.values || '').split(',').map((v) => v.trim());\n return (\n <tr key={i}>\n <td style={{ padding: '14px 16px', fontSize: 14, fontWeight: 500, borderBottom: '1px solid var(--tps-line)' }}>{r.feature}</td>\n {tierList.map((_, j) => {\n const v = vals[j] || '';\n const isYes = v.toLowerCase() === 'yes';\n const isNo = v.toLowerCase() === 'no';\n return (\n <td key={j} style={{ padding: '14px 16px', textAlign: 'center', borderBottom: '1px solid var(--tps-line)', fontSize: 14, color: isYes ? 'var(--tps-primary)' : isNo ? '#CBD5E1' : 'var(--tps-ink)' }}>\n {isYes ? <CheckOutlined /> : isNo ? <CloseOutlined /> : v}\n </td>\n );\n })}\n </tr>\n );\n })}\n </tbody>\n </table>\n </div>\n </div>\n </section>\n );\n },\n};\n","// AwardsBar — certifications/awards row. Same shape as LogoStrip but with\n// a more prominent label per award (year, body) suited for accreditation\n// strips like \"ISO 22000 · 2024 · DNV\".\nimport { TrophyOutlined } from '@ant-design/icons';\n\nexport const AwardsBar = {\n label: 'Awards / certifications',\n fields: {\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array',\n label: 'Awards',\n arrayFields: {\n title: { type: 'text', label: 'Title' },\n body: { type: 'text', label: 'Body / sub-line' },\n year: { type: 'text', label: 'Year (optional)' },\n },\n defaultItemProps: { title: 'New award', body: 'Issuing body', year: '' },\n getItemSummary: (it, i) => it?.title || `Award ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n heading: 'Recognised work',\n items: [\n { title: 'Award name', body: 'Issuing body', year: '2024' },\n { title: 'Another award', body: 'Issuing body', year: '2023' },\n { title: 'One more honour', body: 'Issuing body', year: '2023' },\n ],\n background: 'white',\n },\n render: ({ heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ textAlign: 'center' }}>\n {heading && <h3 style={{ fontSize: 13, fontWeight: 700, letterSpacing: 1.5, color: 'var(--tps-muted)', textTransform: 'uppercase', marginBottom: 32 }}>{heading}</h3>}\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(220px, 100%), 1fr))', gap: 24 }}>\n {(items || []).map((a, i) => (\n <div key={i} style={{ display: 'flex', flexDirection: 'column', alignItems: 'center', gap: 8, padding: 16 }}>\n <TrophyOutlined style={{ fontSize: 28, color: 'var(--tps-accent)' }} />\n <div style={{ fontWeight: 700, fontSize: 15 }}>{a.title}</div>\n {a.body && <div style={{ fontSize: 13, color: 'var(--tps-muted)' }}>{a.body}</div>}\n {a.year && <div style={{ fontSize: 11, color: 'var(--tps-muted)', letterSpacing: 1 }}>{a.year}</div>}\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","'use client';\n// CountUpStats — animated counter stats. Numbers tick from 0 to value\n// when scrolled into view. Subtle, used for \"by the numbers\" hero strips.\nimport { useEffect, useRef, useState } from 'react';\n\nfunction CountUp({ to, duration = 1200, prefix = '', suffix = '' }) {\n const [val, setVal] = useState(0);\n const ref = useRef(null);\n const started = useRef(false);\n useEffect(() => {\n if (!ref.current) return;\n const io = new IntersectionObserver(([e]) => {\n if (e.isIntersecting && !started.current) {\n started.current = true;\n const target = Number(to) || 0;\n const start = performance.now();\n const tick = (t) => {\n const p = Math.min(1, (t - start) / duration);\n const eased = 1 - Math.pow(1 - p, 3);\n setVal(Math.round(target * eased));\n if (p < 1) requestAnimationFrame(tick);\n };\n requestAnimationFrame(tick);\n }\n }, { threshold: 0.4 });\n io.observe(ref.current);\n return () => io.disconnect();\n }, [to, duration]);\n return <span ref={ref}>{prefix}{val.toLocaleString()}{suffix}</span>;\n}\n\nexport const CountUpStats = {\n label: 'Count-up stats',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Stats',\n arrayFields: {\n value: { type: 'text', label: 'Numeric value (e.g. 80)' },\n prefix: { type: 'text', label: 'Prefix (e.g. $, +)' },\n suffix: { type: 'text', label: 'Suffix (e.g. %, +)' },\n label: { type: 'text', label: 'Label' },\n },\n defaultItemProps: { value: '0', prefix: '', suffix: '', label: 'New stat' },\n getItemSummary: (it, i) => it?.label || `Stat ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: 'By the numbers',\n heading: '',\n items: [\n { value: '120', prefix: '', suffix: '+', label: 'Happy customers' },\n { value: '80', prefix: '', suffix: '%', label: 'Time saved on average' },\n { value: '24', prefix: '', suffix: '/7', label: 'Support, always on' },\n { value: '5', prefix: '', suffix: '★', label: 'Average review' },\n ],\n background: 'soft',\n },\n render: ({ eyebrow, heading, items, background }) => {\n const dark = background === 'dark';\n return (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}`} style={{ paddingTop: 64, paddingBottom: 64, background: dark ? '#0F172A' : undefined, color: dark ? '#fff' : undefined }}>\n <div className=\"tps-container\" style={{ textAlign: 'center' }}>\n {eyebrow && <span className=\"tps-eyebrow\" style={{ color: dark ? '#F59E0B' : undefined }}>{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8, color: dark ? '#fff' : undefined, marginBottom: 32 }}>{heading}</h2>}\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(180px, 100%), 1fr))', gap: 32, marginTop: heading ? 16 : 0 }}>\n {(items || []).map((s, i) => (\n <div key={i}>\n <div style={{ fontSize: 48, fontWeight: 800, color: dark ? '#fff' : 'var(--tps-primary)', letterSpacing: '-0.03em', lineHeight: 1 }}>\n <CountUp to={s.value} prefix={s.prefix || ''} suffix={s.suffix || ''} />\n </div>\n <div style={{ fontSize: 13, color: dark ? 'rgba(255,255,255,0.75)' : 'var(--tps-muted)', marginTop: 8, lineHeight: 1.4 }}>{s.label}</div>\n </div>\n ))}\n </div>\n </div>\n </section>\n );\n },\n};\n","// ImageGallery — responsive photo grid. Images displayed in a masonry-style\n// grid with lightbox on click via a simple modal.\n'use client';\nimport { useState } from 'react';\nimport { Image } from 'antd';\n\nexport const ImageGallery = {\n label: 'Image gallery',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n columns: {\n type: 'radio', label: 'Columns',\n options: [{ label: '2', value: 2 }, { label: '3', value: 3 }, { label: '4', value: 4 }],\n },\n items: {\n type: 'array', label: 'Images',\n arrayFields: {\n url: { type: 'text', label: 'Image URL' },\n alt: { type: 'text', label: 'Alt text' },\n caption: { type: 'text', label: 'Caption (optional)' },\n },\n defaultItemProps: { url: '', alt: '', caption: '' },\n getItemSummary: (it, i) => it?.alt || it?.caption || `Image ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: '', columns: 3, items: [\n { url: '', alt: 'Image 1', caption: '' },\n { url: '', alt: 'Image 2', caption: '' },\n { url: '', alt: 'Image 3', caption: '' },\n ], background: 'white',\n },\n render: ({ eyebrow, heading, columns, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <Image.PreviewGroup>\n <div style={{ display: 'grid', gridTemplateColumns: `repeat(auto-fit, minmax(min(${columns === 4 ? 200 : columns === 3 ? 280 : 360}px, 100%), 1fr))`, gap: 12 }}>\n {(items || []).map((img, i) => (\n <figure key={i} style={{ margin: 0 }}>\n {img.url ? (\n <Image\n src={img.url}\n alt={img.alt || ''}\n style={{ borderRadius: 'var(--tps-radius)', objectFit: 'cover', aspectRatio: '4 / 3', width: '100%' }}\n />\n ) : (\n <div style={{ aspectRatio: '4 / 3', background: 'var(--tps-line)', borderRadius: 'var(--tps-radius)', display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#94A3B8', fontSize: 12 }}>Image</div>\n )}\n {img.caption && <figcaption style={{ marginTop: 6, fontSize: 12, color: 'var(--tps-muted)' }}>{img.caption}</figcaption>}\n </figure>\n ))}\n </div>\n </Image.PreviewGroup>\n </div>\n </section>\n ),\n};\n","// ImageCaption — single image with caption + optional credit. For\n// editorial pages.\nexport const ImageCaption = {\n label: 'Image with caption',\n fields: {\n image_url: { type: 'text', label: 'Image URL' },\n alt: { type: 'text', label: 'Alt text' },\n caption: { type: 'text', label: 'Caption' },\n credit: { type: 'text', label: 'Photo credit (optional)' },\n max_width: {\n type: 'select', label: 'Max width',\n options: [\n { label: 'Narrow (640px)', value: 640 },\n { label: 'Comfortable (820px)', value: 820 },\n { label: 'Wide (940px)', value: 940 },\n { label: 'Full bleed', value: 0 },\n ],\n },\n },\n defaultProps: { image_url: '', alt: '', caption: 'A descriptive caption.', credit: '', max_width: 820 },\n render: ({ image_url, alt, caption, credit, max_width }) => (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className={max_width ? 'tps-container' : ''} style={{ maxWidth: max_width || undefined }}>\n {image_url ? (\n <img src={image_url} alt={alt || ''} style={{ display: 'block', width: '100%', height: 'auto', borderRadius: max_width ? 'var(--tps-radius)' : 0 }} />\n ) : (\n <div style={{ width: '100%', aspectRatio: '16 / 9', background: '#E2E8F0', borderRadius: max_width ? 'var(--tps-radius)' : 0, display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#94A3B8', fontSize: 13 }}>Image</div>\n )}\n {(caption || credit) && (\n <figcaption style={{ marginTop: 10, fontSize: 13, color: 'var(--tps-muted)', lineHeight: 1.5, textAlign: 'center', padding: max_width ? 0 : '0 16px' }}>\n {caption}\n {credit && <span style={{ marginLeft: 8, opacity: 0.7 }}>· {credit}</span>}\n </figcaption>\n )}\n </div>\n </section>\n ),\n};\n","// InlineCTA — compact one-line CTA strip. Smaller than CTABanner; sits\n// between content sections to nudge conversion without dominating.\nimport { StudioLink as Link } from '../context';\nimport { Button } from 'antd';\nimport { ArrowRightOutlined } from '@ant-design/icons';\n\nexport const InlineCTA = {\n label: 'Inline CTA',\n fields: {\n headline: { type: 'text', label: 'Headline' },\n body: { type: 'text', label: 'Body (one line)' },\n button_label: { type: 'text', label: 'Button label' },\n button_href: { type: 'text', label: 'Button URL' },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'Soft', value: 'soft' }, { label: 'Primary', value: 'primary' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n headline: 'Want to chat?',\n body: 'A short, friendly nudge that you can rewrite.',\n button_label: 'Get in touch',\n button_href: '/contact',\n background: 'soft',\n },\n render: ({ headline, body, button_label, button_href, background }) => {\n const primary = background === 'primary';\n return (\n <section className={`tps-section${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 24, paddingBottom: 24 }}>\n <div className=\"tps-container\">\n <div style={{\n display: 'flex', flexWrap: 'wrap', alignItems: 'center', justifyContent: 'space-between',\n gap: 16, padding: '20px 28px',\n background: primary ? 'var(--tps-primary)' : 'var(--tps-bg-soft)',\n color: primary ? '#fff' : 'var(--tps-ink)',\n border: primary ? 'none' : '1px solid var(--tps-line)',\n borderRadius: 'var(--tps-radius)',\n }}>\n <div style={{ flex: 1, minWidth: 'min(240px, 100%)' }}>\n {headline && <div style={{ fontSize: 18, fontWeight: 700, marginBottom: 2 }}>{headline}</div>}\n {body && <div style={{ fontSize: 14, opacity: 0.85 }}>{body}</div>}\n </div>\n {button_label && (\n <Link href={button_href || '/contact'}>\n <Button type={primary ? 'default' : 'primary'} size=\"large\">\n {button_label} <ArrowRightOutlined />\n </Button>\n </Link>\n )}\n </div>\n </div>\n </section>\n );\n },\n};\n","// AnnouncementBar — top-of-page slim strip. For event announcements,\n// new product, beta access etc. Compact and dismissible-looking but\n// statically rendered.\nimport { StudioLink as Link } from '../context';\n\nexport const AnnouncementBar = {\n label: 'Announcement bar',\n fields: {\n text: { type: 'text', label: 'Text' },\n link_label: { type: 'text', label: 'Inline link label (optional)' },\n link_href: { type: 'text', label: 'Link URL' },\n variant: {\n type: 'select', label: 'Style',\n options: [\n { label: 'Dark', value: 'dark' },\n { label: 'Primary', value: 'primary' },\n { label: 'Accent', value: 'accent' },\n ],\n },\n },\n defaultProps: {\n text: 'Something new is here.',\n link_label: 'Learn more',\n link_href: '/services',\n variant: 'dark',\n },\n render: ({ text, link_label, link_href, variant }) => {\n const palette = {\n dark: { bg: 'var(--tps-ink, #0F172A)', fg: '#fff', link: 'var(--tps-accent, #F59E0B)' },\n primary: { bg: 'var(--tps-primary, #0b60d8)', fg: '#fff', link: 'var(--tps-accent, #F59E0B)' },\n accent: { bg: 'var(--tps-accent, #F59E0B)', fg: 'var(--tps-ink, #0F172A)', link: 'var(--tps-primary, #0b60d8)' },\n }[variant] || { bg: 'var(--tps-ink, #0F172A)', fg: '#fff', link: 'var(--tps-accent, #F59E0B)' };\n return (\n <div style={{ background: palette.bg, color: palette.fg, padding: '8px 16px', textAlign: 'center', fontSize: 13 }}>\n <span>{text}</span>\n {link_label && link_href && (\n <Link href={link_href} style={{ color: palette.link, fontWeight: 700, marginLeft: 8, textDecoration: 'underline' }}>\n {link_label}\n </Link>\n )}\n </div>\n );\n },\n};\n","// Quote — simple pull-quote without testimonial framing. For editorial\n// emphasis inside long-form content.\nexport const Quote = {\n label: 'Pull quote',\n fields: {\n text: { type: 'textarea', label: 'Quote', rows: 4 },\n cite: { type: 'text', label: 'Attribution (optional)' },\n align: {\n type: 'radio', label: 'Alignment',\n options: [{ label: 'Left', value: 'left' }, { label: 'Center', value: 'center' }],\n },\n },\n defaultProps: {\n text: 'A short, memorable line that deserves the spotlight. Replace with your own.',\n cite: '',\n align: 'center',\n },\n render: ({ text, cite, align }) => (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\" style={{ maxWidth: 720, textAlign: align }}>\n <blockquote style={{\n margin: 0,\n fontSize: 'clamp(20px, 3.5vw, 26px)',\n fontWeight: 500,\n lineHeight: 1.45,\n color: 'var(--tps-ink)',\n borderLeft: align === 'left' ? '3px solid var(--tps-primary)' : 'none',\n paddingLeft: align === 'left' ? 24 : 0,\n }}>\n “{text}”\n </blockquote>\n {cite && (\n <cite style={{ display: 'block', marginTop: 12, fontStyle: 'normal', fontSize: 14, color: 'var(--tps-muted)' }}>— {cite}</cite>\n )}\n </div>\n </section>\n ),\n};\n","// CodeBlock — code snippet with optional title bar. No syntax highlighting\n// (no extra dependency); plain monospace with line wrapping.\nexport const CodeBlock = {\n label: 'Code block',\n fields: {\n title: { type: 'text', label: 'Title bar (e.g. terminal, Dockerfile)' },\n language: { type: 'text', label: 'Language label (e.g. bash, json)' },\n code: { type: 'textarea', label: 'Code', rows: 10 },\n },\n defaultProps: {\n title: 'terminal',\n language: 'bash',\n code: '$ make db-reset-pages\\n[seed] Reset complete: 18 pages.',\n },\n render: ({ title, language, code }) => (\n <section className=\"tps-section\" style={{ paddingTop: 24, paddingBottom: 24 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n <div style={{ background: '#0F172A', borderRadius: 'var(--tps-radius)', overflow: 'hidden', border: '1px solid #1E293B' }}>\n {(title || language) && (\n <div style={{ display: 'flex', justifyContent: 'space-between', alignItems: 'center', padding: '10px 16px', background: '#1E293B', color: '#94A3B8', fontSize: 12, fontFamily: 'ui-monospace, monospace' }}>\n <span>{title}</span>\n {language && <span style={{ fontSize: 10, fontWeight: 700, letterSpacing: 1, color: '#F59E0B' }}>{language.toUpperCase()}</span>}\n </div>\n )}\n <pre style={{ margin: 0, padding: 16, color: '#E2E8F0', fontSize: 13, lineHeight: 1.6, overflowX: 'auto', fontFamily: 'ui-monospace, SFMono-Regular, Menlo, monospace', whiteSpace: 'pre' }}>{code}</pre>\n </div>\n </div>\n </section>\n ),\n};\n","// KeyValueList — definition list / specs table. For \"what's included\",\n// product specs, deal terms.\nexport const KeyValueList = {\n label: 'Key / value list',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Rows',\n arrayFields: {\n key: { type: 'text', label: 'Key' },\n value: { type: 'text', label: 'Value' },\n },\n defaultItemProps: { key: 'New row', value: '—' },\n getItemSummary: (it, i) => it?.key || `Row ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: 'The details',\n items: [\n { key: 'Duration', value: '4–8 weeks' },\n { key: 'Format', value: 'Remote + on-site' },\n { key: 'Includes', value: 'Discovery · build · launch' },\n { key: 'Starts at', value: 'Talk to us' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 48, paddingBottom: 48 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 24 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <dl className=\"tps-row-stack\" style={{ margin: 0, display: 'grid', gridTemplateColumns: '180px 1fr', rowGap: 0 }}>\n {(items || []).map((row, i) => (\n <div key={i} style={{ display: 'contents' }}>\n <dt style={{ padding: '14px 0', borderTop: '1px solid var(--tps-line)', fontSize: 13, fontWeight: 700, color: 'var(--tps-muted)', letterSpacing: 0.5 }}>{row.key}</dt>\n <dd style={{ padding: '14px 0', borderTop: '1px solid var(--tps-line)', margin: 0, fontSize: 15, color: 'var(--tps-ink)' }}>{row.value}</dd>\n </div>\n ))}\n </dl>\n </div>\n </section>\n ),\n};\n","// StepsVertical — large vertical numbered steps with body. Heavier than\n// ApproachSteps (which is a horizontal grid). Best for \"how it works\"\n// or onboarding sequences.\nexport const StepsVertical = {\n label: 'Steps — vertical',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Steps',\n arrayFields: {\n title: { type: 'text', label: 'Title' },\n body: { type: 'textarea', label: 'Body', rows: 3 },\n },\n defaultItemProps: { title: 'New step', body: 'Description.' },\n getItemSummary: (it, i) => it?.title || `Step ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: 'How it works', heading: 'A simpler way to ship.',\n items: [\n { title: 'Get in touch', body: 'A short, friendly description that you can rewrite.' },\n { title: 'Plan together', body: 'A short, friendly description that you can rewrite.' },\n { title: 'Build the thing', body: 'A short, friendly description that you can rewrite.' },\n { title: 'Launch and learn', body: 'A short, friendly description that you can rewrite.' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <ol style={{ listStyle: 'none', margin: 0, padding: 0 }}>\n {(items || []).map((s, i) => (\n <li key={i} className=\"tps-row-stack\" style={{ display: 'grid', gridTemplateColumns: '64px 1fr', gap: 24, paddingBottom: 32, position: 'relative' }}>\n <div style={{ width: 48, height: 48, borderRadius: '50%', background: 'rgba(15, 118, 110, 0.1)', color: 'var(--tps-primary)', display: 'flex', alignItems: 'center', justifyContent: 'center', fontWeight: 800, fontSize: 18 }}>\n {String(i + 1).padStart(2, '0')}\n </div>\n <div>\n <h3 style={{ fontSize: 20, fontWeight: 700, margin: '6px 0 8px' }}>{s.title}</h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, margin: 0 }}>{s.body}</p>\n </div>\n </li>\n ))}\n </ol>\n </div>\n </section>\n ),\n};\n","'use client';\n// TabsBlock — tabbed content panel. Each tab has a label + HTML body.\nimport { Tabs as AntTabs } from 'antd';\n\nexport const TabsBlock = {\n label: 'Tabs',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Tabs',\n arrayFields: {\n label: { type: 'text', label: 'Tab label' },\n content_html: { type: 'textarea', label: 'Tab content (HTML)', rows: 6 },\n },\n defaultItemProps: { label: 'New tab', content_html: '<p>Tab content.</p>' },\n getItemSummary: (it, i) => it?.label || `Tab ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: '',\n items: [\n { label: 'For teams', content_html: '<p>A short, friendly description that you can rewrite.</p>' },\n { label: 'For leaders', content_html: '<p>A short, friendly description that you can rewrite.</p>' },\n { label: 'For founders', content_html: '<p>A short, friendly description that you can rewrite.</p>' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ maxWidth: 920 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <AntTabs\n items={(items || []).map((t, i) => ({\n key: String(i),\n label: t.label,\n children: <div style={{ padding: '12px 0', color: 'var(--tps-ink-2)', lineHeight: 1.7 }} dangerouslySetInnerHTML={{ __html: t.content_html || '' }} />,\n }))}\n />\n </div>\n </section>\n ),\n};\n","'use client';\n// AccordionBlock — generic accordion (siblings open simultaneously). Use\n// for product features lists, multi-section content. (FAQ block is the\n// strict question/answer variant.)\nimport { Collapse } from 'antd';\n\nexport const AccordionBlock = {\n label: 'Accordion',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Sections',\n arrayFields: {\n title: { type: 'text', label: 'Title' },\n content_html: { type: 'textarea', label: 'Content (HTML)', rows: 5 },\n },\n defaultItemProps: { title: 'New section', content_html: '<p>Content.</p>' },\n getItemSummary: (it, i) => it?.title || `Section ${i + 1}`,\n },\n multiple_open: {\n type: 'radio', label: 'Allow multiple open',\n options: [{ label: 'No', value: false }, { label: 'Yes', value: true }],\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: 'More details',\n items: [\n { title: 'A common question', content_html: '<p>A short, friendly answer you can rewrite.</p>' },\n { title: 'Another common question', content_html: '<p>A short, friendly answer you can rewrite.</p>' },\n ],\n multiple_open: false, background: 'white',\n },\n render: ({ eyebrow, heading, items, multiple_open, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 48, paddingBottom: 48 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 24 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <Collapse\n accordion={!multiple_open}\n bordered={false}\n expandIconPosition=\"end\"\n style={{ background: 'transparent' }}\n items={(items || []).map((it, i) => ({\n key: String(i),\n label: <span style={{ fontSize: 15, fontWeight: 600, color: 'var(--tps-ink)' }}>{it.title}</span>,\n children: <div style={{ color: 'var(--tps-ink-2)', lineHeight: 1.7 }} dangerouslySetInnerHTML={{ __html: it.content_html || '' }} />,\n style: { background: 'var(--tps-bg)', border: '1px solid var(--tps-line)', borderRadius: 'var(--tps-radius)', marginBottom: 10, overflow: 'hidden' },\n }))}\n />\n </div>\n </section>\n ),\n};\n","// SocialLinks — row of social media icons. Standalone block — site-wide\n// social URLs are stored on `site.globals` for the footer; this is for\n// ad-hoc placements on individual pages.\nimport {\n LinkedinFilled, FacebookFilled, YoutubeFilled, InstagramFilled,\n TwitterOutlined, GithubOutlined, MailOutlined, GlobalOutlined,\n} from '@ant-design/icons';\n\nconst NETWORKS = {\n linkedin: { icon: LinkedinFilled, label: 'LinkedIn' },\n facebook: { icon: FacebookFilled, label: 'Facebook' },\n youtube: { icon: YoutubeFilled, label: 'YouTube' },\n instagram: { icon: InstagramFilled, label: 'Instagram' },\n twitter: { icon: TwitterOutlined, label: 'Twitter / X' },\n github: { icon: GithubOutlined, label: 'GitHub' },\n email: { icon: MailOutlined, label: 'Email' },\n website: { icon: GlobalOutlined, label: 'Website' },\n};\n\nexport const SocialLinks = {\n label: 'Social links',\n fields: {\n label: { type: 'text', label: 'Label (e.g. Follow us)' },\n align: {\n type: 'radio', label: 'Alignment',\n options: [{ label: 'Left', value: 'left' }, { label: 'Center', value: 'center' }],\n },\n items: {\n type: 'array', label: 'Links',\n arrayFields: {\n network: {\n type: 'select', label: 'Network',\n options: Object.keys(NETWORKS).map((k) => ({ value: k, label: NETWORKS[k].label })),\n },\n href: { type: 'text', label: 'URL' },\n },\n defaultItemProps: { network: 'linkedin', href: '' },\n getItemSummary: (it, i) => NETWORKS[it?.network]?.label || `Link ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n label: 'Follow us', align: 'center',\n items: [\n { network: 'linkedin', href: '#' },\n { network: 'twitter', href: '#' },\n { network: 'youtube', href: '#' },\n ],\n background: 'white',\n },\n render: ({ label, align, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\" style={{ textAlign: align }}>\n {label && <div style={{ fontSize: 12, fontWeight: 700, letterSpacing: 1.5, color: 'var(--tps-muted)', textTransform: 'uppercase', marginBottom: 12 }}>{label}</div>}\n <div style={{ display: 'inline-flex', gap: 14 }}>\n {(items || []).filter((l) => l.href).map((l, i) => {\n const Icon = (NETWORKS[l.network] || NETWORKS.linkedin).icon;\n return (\n <a key={i} href={l.href} target=\"_blank\" rel=\"noreferrer\" aria-label={NETWORKS[l.network]?.label || l.network}\n style={{ width: 40, height: 40, borderRadius: '50%', background: 'rgba(15,118,110,0.08)', color: 'var(--tps-primary)', display: 'inline-flex', alignItems: 'center', justifyContent: 'center', fontSize: 18, transition: 'background 150ms ease' }}>\n <Icon />\n </a>\n );\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// ContactInfo — office address + email + phone + hours card. No form;\n// for a contact page or footer-adjacent placement.\nimport { MailOutlined, PhoneOutlined, EnvironmentOutlined, ClockCircleOutlined } from '@ant-design/icons';\n\nexport const ContactInfo = {\n label: 'Contact info card',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n email: { type: 'text', label: 'Email' },\n phone: { type: 'text', label: 'Phone' },\n address: { type: 'textarea', label: 'Address (multi-line)' },\n hours: { type: 'text', label: 'Hours' },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: 'Get in touch', heading: 'Say hello',\n email: 'hello@example.com',\n phone: '',\n address: 'Your street\\nYour city, Country',\n hours: 'Mon–Fri · 09:00–18:00',\n background: 'soft',\n },\n render: ({ eyebrow, heading, email, phone, address, hours, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 48, paddingBottom: 48 }}>\n <div className=\"tps-container\" style={{ maxWidth: 720 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 24 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div style={{ background: 'var(--tps-bg)', border: '1px solid var(--tps-line)', borderRadius: 'var(--tps-radius)', padding: 28 }}>\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(200px, 100%), 1fr))', gap: 20 }}>\n {email && (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, color: 'var(--tps-muted)', fontSize: 12, fontWeight: 700, letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>\n <MailOutlined /> Email\n </div>\n <a href={`mailto:${email}`} style={{ color: 'var(--tps-primary)', fontSize: 15, fontWeight: 600 }}>{email}</a>\n </div>\n )}\n {phone && (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, color: 'var(--tps-muted)', fontSize: 12, fontWeight: 700, letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>\n <PhoneOutlined /> Phone\n </div>\n <a href={`tel:${phone}`} style={{ color: 'var(--tps-ink)', fontSize: 15, fontWeight: 600 }}>{phone}</a>\n </div>\n )}\n {address && (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, color: 'var(--tps-muted)', fontSize: 12, fontWeight: 700, letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>\n <EnvironmentOutlined /> Address\n </div>\n <div style={{ color: 'var(--tps-ink)', fontSize: 14, whiteSpace: 'pre-line', lineHeight: 1.5 }}>{address}</div>\n </div>\n )}\n {hours && (\n <div>\n <div style={{ display: 'flex', alignItems: 'center', gap: 8, color: 'var(--tps-muted)', fontSize: 12, fontWeight: 700, letterSpacing: 1, textTransform: 'uppercase', marginBottom: 6 }}>\n <ClockCircleOutlined /> Hours\n </div>\n <div style={{ color: 'var(--tps-ink)', fontSize: 14 }}>{hours}</div>\n </div>\n )}\n </div>\n </div>\n </div>\n </section>\n ),\n};\n","// MapEmbed — Google Maps iframe embed. Author pastes a Maps embed URL\n// (the long iframe src from Maps \"Share > Embed a map > HTML\").\nexport const MapEmbed = {\n label: 'Map (Google Maps)',\n fields: {\n embed_url: { type: 'text', label: 'Google Maps embed URL' },\n height: {\n type: 'select', label: 'Height',\n options: [\n { label: 'Compact (280px)', value: 280 },\n { label: 'Standard (420px)', value: 420 },\n { label: 'Large (560px)', value: 560 },\n ],\n },\n caption: { type: 'text', label: 'Caption (optional)' },\n },\n defaultProps: {\n embed_url: 'https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d77622.9!2d77.5946!3d12.9716!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0x0!2zMTLCsDU4JzE3LjgiTiA3N8KwMzUnNDAuNCJF!5e0!3m2!1sen!2sin!4v0',\n height: 420,\n caption: '',\n },\n render: ({ embed_url, height, caption }) => (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\">\n <div style={{ borderRadius: 'var(--tps-radius)', overflow: 'hidden', border: '1px solid var(--tps-line)' }}>\n {embed_url ? (\n <iframe src={embed_url} title=\"Map\" width=\"100%\" height={height} style={{ border: 0, display: 'block' }} loading=\"lazy\" referrerPolicy=\"no-referrer-when-downgrade\" />\n ) : (\n <div style={{ height, background: '#E2E8F0', display: 'flex', alignItems: 'center', justifyContent: 'center', color: '#94A3B8', fontSize: 13 }}>\n Paste a Google Maps embed URL in the field on the right.\n </div>\n )}\n </div>\n {caption && <p style={{ marginTop: 10, fontSize: 13, color: 'var(--tps-muted)', textAlign: 'center' }}>{caption}</p>}\n </div>\n </section>\n ),\n};\n","import { useState } from 'react';\nimport { Form, Row, Col, Button, App as AntdApp } from 'antd';\nimport { SendOutlined, CheckCircleOutlined } from '@ant-design/icons';\nimport { useStudio } from '../context';\nimport { DynamicFormField } from './_DynamicFormField';\n\n// Puck array-field definition shared by every form block.\n// Authors configure form fields in the Puck sidebar — add, remove, reorder,\n// and edit each field's type, label, validation preset, and layout width.\nexport const FORM_FIELD_ARRAY_DEF = {\n type: 'array',\n label: 'Form fields',\n arrayFields: {\n field_type: {\n type: 'select',\n label: 'Field type',\n options: [\n { value: 'text', label: 'Text' },\n { value: 'email', label: 'Email' },\n { value: 'tel', label: 'Phone' },\n { value: 'textarea', label: 'Long text' },\n { value: 'number', label: 'Number' },\n { value: 'currency', label: 'Currency' },\n { value: 'select', label: 'Dropdown (single)' },\n { value: 'multiselect', label: 'Dropdown (multiple)' },\n { value: 'radio', label: 'Radio buttons' },\n { value: 'checkbox', label: 'Checkbox / agree' },\n { value: 'checkbox_group', label: 'Checkbox group' },\n { value: 'date', label: 'Date picker' },\n { value: 'rating', label: 'Star rating' },\n { value: 'upload', label: 'File upload' },\n { value: 'country', label: 'Country select' },\n { value: 'gender', label: 'Gender select' },\n { value: 'otp', label: 'OTP code' },\n ],\n },\n field_key: { type: 'text', label: 'Field key (unique identifier)' },\n label: { type: 'text', label: 'Label' },\n placeholder: { type: 'text', label: 'Placeholder text' },\n required: {\n type: 'radio',\n label: 'Required',\n options: [\n { value: 'no', label: 'No' },\n { value: 'yes', label: 'Yes' },\n ],\n },\n width: {\n type: 'radio',\n label: 'Width',\n options: [\n { value: 'full', label: 'Full width' },\n { value: 'half', label: 'Half width' },\n ],\n },\n options: {\n type: 'textarea',\n label: 'Options — one per line (dropdown, radio, checkboxes)',\n },\n default_value: { type: 'text', label: 'Default value' },\n help_text: { type: 'text', label: 'Help / hint text' },\n validation: {\n type: 'select',\n label: 'Validation preset',\n options: [\n { value: 'none', label: 'None' },\n { value: 'email', label: 'Email format' },\n { value: 'phone', label: 'Phone format' },\n { value: 'url', label: 'URL / website' },\n { value: 'number_positive', label: 'Positive number' },\n { value: 'min6', label: 'Min. 6 characters' },\n { value: 'min8', label: 'Min. 8 characters' },\n ],\n },\n },\n getItemSummary: (item, i) =>\n `${item?.label || item?.field_key || `Field ${i + 1}`} (${item?.field_type || 'text'})`,\n defaultItemProps: {\n field_type: 'text',\n field_key: '',\n label: 'New field',\n placeholder: '',\n required: 'no',\n width: 'full',\n options: '',\n default_value: '',\n help_text: '',\n validation: 'none',\n },\n};\n\n// Puck block fields shared by every form block (heading, submit, success state).\nexport const COMMON_FORM_FIELDS = {\n form_heading: { type: 'text', label: 'Heading' },\n form_lede: { type: 'textarea', label: 'Lede' },\n form_submit_label: { type: 'text', label: 'Submit button label' },\n form_privacy_html: { type: 'textarea', label: 'Privacy footer (HTML allowed)' },\n success_heading: { type: 'text', label: 'Success heading' },\n success_body: { type: 'textarea', label: 'Success body' },\n background: {\n type: 'radio',\n label: 'Background',\n options: [\n { label: 'White', value: 'white' },\n { label: 'Soft', value: 'soft' },\n { label: 'Dark', value: 'dark' },\n ],\n },\n fields: FORM_FIELD_ARRAY_DEF,\n};\n\nexport const COMMON_FORM_DEFAULTS = {\n form_heading: '',\n form_lede: '',\n form_submit_label: 'Submit',\n form_privacy_html:\n 'We respect your privacy. Your information is kept secure and never sold.',\n success_heading: 'Thank you.',\n success_body: \"We've received your submission and will be in touch shortly.\",\n background: 'white',\n};\n\n// Groups consecutive half-width fields into pairs; full-width fields get\n// their own row. Any trailing unpaired half-width field becomes full-width.\nfunction groupIntoRows(fields) {\n const rows = [];\n let buffer = [];\n for (const f of fields) {\n if (!f?.field_key) continue;\n if (f.width === 'half') {\n buffer.push(f);\n if (buffer.length === 2) {\n rows.push(buffer);\n buffer = [];\n }\n } else {\n if (buffer.length > 0) {\n rows.push(buffer);\n buffer = [];\n }\n rows.push([f]);\n }\n }\n if (buffer.length > 0) rows.push(buffer);\n return rows;\n}\n\nfunction SuccessState({ heading, body, onReset }) {\n return (\n <div style={{ textAlign: 'center', padding: '48px 24px' }}>\n <CheckCircleOutlined\n style={{ fontSize: 48, color: 'var(--tps-primary, #0b60d8)', marginBottom: 20 }}\n />\n {heading && (\n <h3 className=\"tps-h3\" style={{ marginBottom: 12 }}>\n {heading}\n </h3>\n )}\n {body && (\n <p className=\"tps-lede\" style={{ margin: '0 auto 24px', maxWidth: 480 }}>\n {body}\n </p>\n )}\n <Button type=\"link\" onClick={onReset} style={{ padding: 0 }}>\n Submit another response\n </Button>\n </div>\n );\n}\n\n// The shared render component used by every form block.\n// Each block passes its props here; the fields array drives the form layout.\nexport function FormBlockBase({\n form_heading,\n form_lede,\n form_submit_label,\n form_privacy_html,\n success_heading,\n success_body,\n background = 'white',\n fields = [],\n}) {\n const [form] = Form.useForm();\n const { message } = AntdApp.useApp();\n const { submitLead, track } = useStudio();\n const [submitting, setSubmitting] = useState(false);\n const [submitted, setSubmitted] = useState(false);\n const [started, setStarted] = useState(false);\n\n const validFields = Array.isArray(fields)\n ? fields.filter((f) => f?.field_key && f?.field_type)\n : [];\n const rows = groupIntoRows(validFields);\n\n const onFinish = async (values) => {\n setSubmitting(true);\n try {\n await submitLead({ ...values, source: 'form_block' });\n track('form_submit');\n form.resetFields();\n setSubmitted(true);\n } catch (err) {\n message.error(err?.message || 'Something went wrong. Please try again.');\n } finally {\n setSubmitting(false);\n }\n };\n\n const onValuesChange = () => {\n if (!started) {\n setStarted(true);\n track('form_start');\n }\n };\n\n return (\n <section\n className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${\n background === 'dark' ? ' tps-section-dark' : ''\n }`}\n >\n <div className=\"tps-container\">\n {(form_heading || form_lede) && (\n <div style={{ marginBottom: 40, maxWidth: 640 }}>\n {form_heading && <h2 className=\"tps-h2\">{form_heading}</h2>}\n {form_lede && (\n <p className=\"tps-lede\" style={{ marginBottom: 0 }}>\n {form_lede}\n </p>\n )}\n </div>\n )}\n\n <div className=\"tps-form-card\" style={{ maxWidth: 720 }}>\n {submitted ? (\n <SuccessState\n heading={success_heading}\n body={success_body}\n onReset={() => setSubmitted(false)}\n />\n ) : (\n <Form\n form={form}\n layout=\"vertical\"\n onFinish={onFinish}\n onValuesChange={onValuesChange}\n requiredMark={false}\n >\n {rows.map((row, ri) => (\n <Row key={ri} gutter={16}>\n {row.map((field) => (\n <Col key={field.field_key} xs={24} sm={row.length > 1 ? 12 : 24}>\n <DynamicFormField field={field} />\n </Col>\n ))}\n </Row>\n ))}\n\n <Form.Item style={{ marginTop: 8, marginBottom: 0 }}>\n <Button\n type=\"primary\"\n size=\"large\"\n htmlType=\"submit\"\n loading={submitting}\n icon={<SendOutlined />}\n style={{ minWidth: 180, height: 48, fontWeight: 600 }}\n >\n {form_submit_label || 'Submit'}\n </Button>\n </Form.Item>\n\n {form_privacy_html && (\n <p\n style={{\n fontSize: 13,\n color: 'var(--tps-muted)',\n marginTop: 16,\n marginBottom: 0,\n }}\n dangerouslySetInnerHTML={{ __html: form_privacy_html }}\n />\n )}\n </Form>\n )}\n </div>\n </div>\n </section>\n );\n}\n","import {\n Form,\n Input,\n Select,\n Radio,\n Checkbox,\n DatePicker,\n Rate,\n InputNumber,\n Upload,\n Button,\n} from 'antd';\nimport { UploadOutlined } from '@ant-design/icons';\n\nexport const COUNTRY_OPTIONS = [\n { value: 'AU', label: 'Australia' },\n { value: 'AT', label: 'Austria' },\n { value: 'BE', label: 'Belgium' },\n { value: 'BR', label: 'Brazil' },\n { value: 'CA', label: 'Canada' },\n { value: 'CN', label: 'China' },\n { value: 'DK', label: 'Denmark' },\n { value: 'EG', label: 'Egypt' },\n { value: 'FI', label: 'Finland' },\n { value: 'FR', label: 'France' },\n { value: 'DE', label: 'Germany' },\n { value: 'GH', label: 'Ghana' },\n { value: 'GR', label: 'Greece' },\n { value: 'HK', label: 'Hong Kong' },\n { value: 'IN', label: 'India' },\n { value: 'ID', label: 'Indonesia' },\n { value: 'IE', label: 'Ireland' },\n { value: 'IL', label: 'Israel' },\n { value: 'IT', label: 'Italy' },\n { value: 'JP', label: 'Japan' },\n { value: 'KE', label: 'Kenya' },\n { value: 'MY', label: 'Malaysia' },\n { value: 'MX', label: 'Mexico' },\n { value: 'NL', label: 'Netherlands' },\n { value: 'NZ', label: 'New Zealand' },\n { value: 'NG', label: 'Nigeria' },\n { value: 'NO', label: 'Norway' },\n { value: 'PK', label: 'Pakistan' },\n { value: 'PH', label: 'Philippines' },\n { value: 'PL', label: 'Poland' },\n { value: 'PT', label: 'Portugal' },\n { value: 'QA', label: 'Qatar' },\n { value: 'SA', label: 'Saudi Arabia' },\n { value: 'SG', label: 'Singapore' },\n { value: 'ZA', label: 'South Africa' },\n { value: 'KR', label: 'South Korea' },\n { value: 'ES', label: 'Spain' },\n { value: 'SE', label: 'Sweden' },\n { value: 'CH', label: 'Switzerland' },\n { value: 'TW', label: 'Taiwan' },\n { value: 'TH', label: 'Thailand' },\n { value: 'TR', label: 'Turkey' },\n { value: 'AE', label: 'UAE' },\n { value: 'GB', label: 'United Kingdom' },\n { value: 'US', label: 'United States' },\n { value: 'VN', label: 'Vietnam' },\n];\n\nconst GENDER_OPTIONS = [\n { value: 'male', label: 'Male' },\n { value: 'female', label: 'Female' },\n { value: 'nonbinary', label: 'Non-binary' },\n { value: 'prefer_not', label: 'Prefer not to say' },\n];\n\nfunction parseOptions(str) {\n if (!str) return [];\n return str\n .split('\\n')\n .map((s) => s.trim())\n .filter(Boolean)\n .map((s) => ({ value: s, label: s }));\n}\n\nfunction buildRules(field) {\n const isRequired = field.required === 'yes' || field.required === true;\n const rules = [];\n if (isRequired) {\n rules.push({ required: true, message: `${field.label || 'This field'} is required` });\n }\n switch (field.validation) {\n case 'email':\n rules.push({ type: 'email', message: 'Enter a valid email address' });\n break;\n case 'url':\n rules.push({ type: 'url', message: 'Enter a valid URL' });\n break;\n case 'phone':\n rules.push({ pattern: /^\\+?[\\d\\s\\-().]{7,20}$/, message: 'Enter a valid phone number' });\n break;\n case 'number_positive':\n rules.push({ type: 'number', min: 0, message: 'Must be a positive number' });\n break;\n case 'min6':\n rules.push({ min: 6, message: 'Must be at least 6 characters' });\n break;\n case 'min8':\n rules.push({ min: 8, message: 'Must be at least 8 characters' });\n break;\n default:\n break;\n }\n return rules;\n}\n\n// Renders a single form field based on the field config object.\n// Each form block passes its `fields` array items here one-by-one.\nexport function DynamicFormField({ field }) {\n const {\n field_type = 'text',\n field_key,\n label,\n placeholder,\n help_text,\n options,\n default_value,\n } = field;\n\n if (!field_key) return null;\n\n const rules = buildRules(field);\n const opts = parseOptions(options);\n const lg = { size: 'large' };\n\n // Upload needs valuePropName=\"fileList\"\n if (field_type === 'upload') {\n return (\n <Form.Item\n name={field_key}\n label={label}\n valuePropName=\"fileList\"\n getValueFromEvent={(e) => (Array.isArray(e) ? e : e?.fileList)}\n rules={rules}\n help={help_text || undefined}\n >\n <Upload beforeUpload={() => false}>\n <Button icon={<UploadOutlined />}>{placeholder || 'Choose file'}</Button>\n </Upload>\n </Form.Item>\n );\n }\n\n // Checkbox (single agree/consent) needs valuePropName=\"checked\"\n if (field_type === 'checkbox') {\n const isRequired = field.required === 'yes' || field.required === true;\n return (\n <Form.Item\n name={field_key}\n valuePropName=\"checked\"\n rules={\n isRequired\n ? [\n {\n validator: (_, value) =>\n value\n ? Promise.resolve()\n : Promise.reject(\n new Error(help_text || `${label || 'This field'} is required`),\n ),\n },\n ]\n : []\n }\n style={{ marginBottom: 16 }}\n >\n <Checkbox>{label}</Checkbox>\n </Form.Item>\n );\n }\n\n // DatePicker: don't pass string default_value — incompatible type\n const initialValue =\n field_type === 'date' || field_type === 'rating' ? undefined : default_value || undefined;\n\n let control;\n switch (field_type) {\n case 'email':\n control = <Input {...lg} placeholder={placeholder} type=\"email\" />;\n break;\n case 'tel':\n control = <Input {...lg} placeholder={placeholder} type=\"tel\" />;\n break;\n case 'textarea':\n control = <Input.TextArea rows={4} placeholder={placeholder} />;\n break;\n case 'number':\n control = <InputNumber size=\"large\" style={{ width: '100%' }} placeholder={placeholder} />;\n break;\n case 'currency':\n control = (\n <InputNumber\n size=\"large\"\n style={{ width: '100%' }}\n placeholder={placeholder}\n prefix=\"$\"\n precision={2}\n formatter={(v) => `${v}`.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',')}\n parser={(v) => v?.replace(/[^\\d.]/g, '')}\n />\n );\n break;\n case 'select':\n control = <Select {...lg} placeholder={placeholder} options={opts} />;\n break;\n case 'multiselect':\n control = <Select {...lg} mode=\"multiple\" placeholder={placeholder} options={opts} />;\n break;\n case 'radio':\n control = <Radio.Group options={opts} />;\n break;\n case 'checkbox_group':\n control = <Checkbox.Group options={opts} />;\n break;\n case 'date':\n control = <DatePicker size=\"large\" style={{ width: '100%' }} placeholder={placeholder} />;\n break;\n case 'rating':\n control = <Rate />;\n break;\n case 'country':\n control = (\n <Select\n {...lg}\n showSearch\n placeholder={placeholder || 'Select country'}\n options={COUNTRY_OPTIONS}\n filterOption={(input, opt) =>\n opt.label.toLowerCase().includes(input.toLowerCase())\n }\n />\n );\n break;\n case 'gender':\n control = (\n <Select {...lg} placeholder={placeholder || 'Select gender'} options={GENDER_OPTIONS} />\n );\n break;\n case 'otp':\n control = <Input.OTP length={6} />;\n break;\n default:\n control = <Input {...lg} placeholder={placeholder} />;\n }\n\n return (\n <Form.Item\n label={label}\n name={field_key}\n rules={rules}\n help={help_text || undefined}\n initialValue={initialValue}\n >\n {control}\n </Form.Item>\n );\n}\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Lightweight contact form — name, email, phone, company, message.\n// Use this when you need just the form; pair with a Hero block above for\n// a full contact-page layout. For the combined hero + sidebar + form layout\n// use ContactSection instead.\nexport const FormContact = {\n label: 'Contact form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Get in touch',\n form_lede:\n \"Have a question or want to work together? Fill in the form and we'll get back to you within one business day.\",\n form_submit_label: 'Send message',\n fields: [\n { field_type: 'text', field_key: 'full_name', label: 'Full name', placeholder: 'Your name', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'email', field_key: 'email', label: 'Work email', placeholder: 'you@company.com', required: 'yes', width: 'half', validation: 'email', options: '', default_value: '', help_text: '' },\n { field_type: 'tel', field_key: 'phone', label: 'Phone', placeholder: '+1 555 000 0000', required: 'no', width: 'half', validation: 'phone', options: '', default_value: '', help_text: 'Optional' },\n { field_type: 'text', field_key: 'organization', label: 'Organization', placeholder: 'Your company', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'textarea', field_key: 'message', label: 'Message', placeholder: \"What's on your mind?\", required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Lead-capture form — name, email, company, journey stage, interests, notes.\n// Drop above a pricing or services section to convert visitors into leads.\nexport const FormLeadCapture = {\n label: 'Lead capture form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Tell us about your project',\n form_lede:\n \"Share a few details and we'll come prepared with ideas specific to your situation.\",\n form_submit_label: 'Start the conversation',\n fields: [\n { field_type: 'text', field_key: 'full_name', label: 'Full name', placeholder: 'Your name', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'email', field_key: 'email', label: 'Work email', placeholder: 'you@company.com', required: 'yes', width: 'half', validation: 'email', options: '', default_value: '', help_text: '' },\n { field_type: 'text', field_key: 'company', label: 'Company', placeholder: 'Your organisation', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'tel', field_key: 'phone', label: 'Phone', placeholder: '+1 555 000 0000', required: 'no', width: 'half', validation: 'phone', options: '', default_value: '', help_text: 'Optional' },\n {\n field_type: 'select',\n field_key: 'stage',\n label: 'Where are you in your journey?',\n placeholder: 'Select the stage that fits best',\n required: 'no',\n width: 'full',\n validation: 'none',\n options: 'Just exploring\\nStarting a new project\\nImproving an existing process\\nNeed help with strategy\\nOther',\n default_value: '',\n help_text: '',\n },\n {\n field_type: 'multiselect',\n field_key: 'interests',\n label: 'Which capabilities interest you?',\n placeholder: 'Pick one or more (optional)',\n required: 'no',\n width: 'full',\n validation: 'none',\n options: 'Product design\\nEngineering\\nData & analytics\\nMarketing\\nStrategy\\nOther',\n default_value: '',\n help_text: '',\n },\n { field_type: 'textarea', field_key: 'message', label: 'Anything else to share?', placeholder: 'Current systems, target markets, challenges…', required: 'no', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Newsletter signup — name, email, optional consent checkbox.\n// Lighter than the full NewsletterSignup block (no hero imagery).\nexport const FormNewsletter = {\n label: 'Newsletter form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Stay in the loop',\n form_lede: 'Join our newsletter for updates, articles, and early access to new features.',\n form_submit_label: 'Subscribe',\n success_heading: \"You're subscribed.\",\n success_body: 'Thank you for subscribing. Check your inbox for a confirmation email.',\n fields: [\n { field_type: 'text', field_key: 'full_name', label: 'Name', placeholder: 'Your name', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'email', field_key: 'email', label: 'Email', placeholder: 'you@example.com', required: 'yes', width: 'half', validation: 'email', options: '', default_value: '', help_text: '' },\n { field_type: 'checkbox', field_key: 'consent', label: 'I agree to receive marketing emails. Unsubscribe any time.', placeholder: '', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Customer feedback — star rating, category, free-text comments, optional contact.\nexport const FormFeedback = {\n label: 'Feedback form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Share your feedback',\n form_lede: 'Your honest opinion helps us improve. Takes less than two minutes.',\n form_submit_label: 'Submit feedback',\n success_heading: 'Feedback received.',\n success_body: 'Thank you — every response shapes what we build next.',\n fields: [\n { field_type: 'rating', field_key: 'rating', label: 'Overall rating', placeholder: '', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '1 = poor, 5 = excellent' },\n {\n field_type: 'select',\n field_key: 'category',\n label: 'Feedback category',\n placeholder: \"What's this about?\",\n required: 'no',\n width: 'full',\n validation: 'none',\n options: 'Product quality\\nCustomer support\\nWebsite experience\\nPricing\\nOther',\n default_value: '',\n help_text: '',\n },\n { field_type: 'textarea', field_key: 'comments', label: 'Your comments', placeholder: 'Tell us what you loved or what we could do better…', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'text', field_key: 'full_name', label: 'Name', placeholder: 'Your name', required: 'no', width: 'half', validation: 'none', options: '', default_value: '', help_text: 'Optional' },\n { field_type: 'email', field_key: 'email', label: 'Email', placeholder: 'you@example.com', required: 'no', width: 'half', validation: 'email', options: '', default_value: '', help_text: \"Optional — if you'd like a reply\" },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Configurable survey — defaults to an NPS-style pulse survey.\n// Authors swap in their own questions via the fields array editor.\nexport const FormSurvey = {\n label: 'Survey form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Quick survey',\n form_lede: 'Three questions, under two minutes. Your answers help us get better.',\n form_submit_label: 'Submit survey',\n success_heading: 'Survey submitted.',\n success_body: 'Thank you for taking the time. Your input is genuinely valued.',\n fields: [\n { field_type: 'rating', field_key: 'satisfaction', label: 'How satisfied are you overall?', placeholder: '', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '1 = very dissatisfied · 5 = very satisfied' },\n {\n field_type: 'radio',\n field_key: 'recommend',\n label: 'Would you recommend us to a colleague?',\n placeholder: '',\n required: 'yes',\n width: 'full',\n validation: 'none',\n options: 'Definitely yes\\nProbably yes\\nNot sure\\nProbably not\\nDefinitely not',\n default_value: '',\n help_text: '',\n },\n { field_type: 'textarea', field_key: 'improvements', label: 'What could we do better?', placeholder: 'Any suggestions are welcome…', required: 'no', width: 'full', validation: 'none', options: '', default_value: '', help_text: 'Optional' },\n { field_type: 'text', field_key: 'full_name', label: 'Name', placeholder: 'Your name', required: 'no', width: 'half', validation: 'none', options: '', default_value: '', help_text: 'Optional' },\n { field_type: 'email', field_key: 'email', label: 'Email', placeholder: 'you@example.com', required: 'no', width: 'half', validation: 'email', options: '', default_value: '', help_text: 'Optional' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Demo / appointment booking — name, email, company, date preference, time slot, notes.\nexport const FormBooking = {\n label: 'Booking / demo form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Book a demo',\n form_lede:\n \"Pick a date and time that works for you. We'll send a calendar invite within a few hours.\",\n form_submit_label: 'Request booking',\n success_heading: 'Request received.',\n success_body: \"We'll confirm your booking by email within a few hours.\",\n fields: [\n { field_type: 'text', field_key: 'full_name', label: 'Full name', placeholder: 'Your name', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'email', field_key: 'email', label: 'Email', placeholder: 'you@company.com', required: 'yes', width: 'half', validation: 'email', options: '', default_value: '', help_text: '' },\n { field_type: 'text', field_key: 'company', label: 'Company', placeholder: 'Your organisation', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'date', field_key: 'preferred_date', label: 'Preferred date', placeholder: 'Pick a date', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n {\n field_type: 'select',\n field_key: 'preferred_time',\n label: 'Preferred time',\n placeholder: 'Select a slot',\n required: 'yes',\n width: 'half',\n validation: 'none',\n options: 'Morning (9 am – 12 pm)\\nAfternoon (12 pm – 5 pm)\\nEvening (5 pm – 7 pm)',\n default_value: '',\n help_text: '',\n },\n { field_type: 'textarea', field_key: 'notes', label: 'Anything to prepare?', placeholder: 'Topics, questions, or context that would help us tailor the session…', required: 'no', width: 'full', validation: 'none', options: '', default_value: '', help_text: 'Optional' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Event / conference registration — name, contact, role, dietary requirements.\nexport const FormRegistration = {\n label: 'Registration form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Register for the event',\n form_lede: \"Secure your spot. We'll email your confirmation and joining instructions.\",\n form_submit_label: 'Register now',\n success_heading: \"You're registered.\",\n success_body: 'Check your inbox for a confirmation email with all the details.',\n fields: [\n { field_type: 'text', field_key: 'full_name', label: 'Full name', placeholder: 'Your name', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'email', field_key: 'email', label: 'Email', placeholder: 'you@company.com', required: 'yes', width: 'half', validation: 'email', options: '', default_value: '', help_text: '' },\n { field_type: 'tel', field_key: 'phone', label: 'Phone', placeholder: '+1 555 000 0000', required: 'no', width: 'half', validation: 'phone', options: '', default_value: '', help_text: 'Optional' },\n { field_type: 'text', field_key: 'company', label: 'Organisation',placeholder: 'Your company', required: 'no', width: 'half', validation: 'none', options: '', default_value: '', help_text: 'Optional' },\n {\n field_type: 'select',\n field_key: 'role',\n label: 'Your role',\n placeholder: 'Select your role',\n required: 'no',\n width: 'half',\n validation: 'none',\n options: 'Developer\\nDesigner\\nProduct manager\\nMarketer\\nFounder / exec\\nStudent\\nOther',\n default_value: '',\n help_text: '',\n },\n {\n field_type: 'select',\n field_key: 'tshirt_size',\n label: 'T-shirt size',\n placeholder: 'Select size',\n required: 'no',\n width: 'half',\n validation: 'none',\n options: 'XS\\nS\\nM\\nL\\nXL\\nXXL',\n default_value: '',\n help_text: 'Optional — if swag is included',\n },\n {\n field_type: 'select',\n field_key: 'dietary',\n label: 'Dietary requirements',\n placeholder: 'Select one',\n required: 'no',\n width: 'full',\n validation: 'none',\n options: 'No restrictions\\nVegetarian\\nVegan\\nGluten-free\\nHalal\\nKosher\\nOther',\n default_value: 'No restrictions',\n help_text: '',\n },\n { field_type: 'textarea', field_key: 'notes', label: 'Additional notes', placeholder: 'Accessibility needs, questions, or anything else…', required: 'no', width: 'full', validation: 'none', options: '', default_value: '', help_text: 'Optional' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Quote / pricing request — company, contact, project type, budget range, requirements, timeline.\nexport const FormQuoteRequest = {\n label: 'Quote request form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Request a quote',\n form_lede:\n \"Tell us about your project and we'll put together a tailored proposal within two business days.\",\n form_submit_label: 'Request quote',\n success_heading: 'Request received.',\n success_body:\n \"We'll review your requirements and send a tailored proposal within two business days.\",\n fields: [\n { field_type: 'text', field_key: 'company', label: 'Company', placeholder: 'Your organisation', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'text', field_key: 'full_name', label: 'Your name', placeholder: 'Full name', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'email', field_key: 'email', label: 'Email', placeholder: 'you@company.com', required: 'yes', width: 'half', validation: 'email', options: '', default_value: '', help_text: '' },\n { field_type: 'tel', field_key: 'phone', label: 'Phone', placeholder: '+1 555 000 0000', required: 'no', width: 'half', validation: 'phone', options: '', default_value: '', help_text: 'Optional' },\n {\n field_type: 'select',\n field_key: 'project_type',\n label: 'Project type',\n placeholder: 'What are you building?',\n required: 'yes',\n width: 'half',\n validation: 'none',\n options: 'Website\\nMobile app\\nWeb application\\nBranding\\nMarketing campaign\\nData / analytics\\nOther',\n default_value: '',\n help_text: '',\n },\n {\n field_type: 'select',\n field_key: 'budget',\n label: 'Budget range',\n placeholder: 'Approximate budget',\n required: 'no',\n width: 'half',\n validation: 'none',\n options: 'Under $5k\\n$5k – $20k\\n$20k – $50k\\n$50k – $100k\\n$100k+\\nNot sure yet',\n default_value: '',\n help_text: '',\n },\n {\n field_type: 'select',\n field_key: 'timeline',\n label: 'Desired timeline',\n placeholder: 'When do you need this?',\n required: 'no',\n width: 'full',\n validation: 'none',\n options: 'As soon as possible\\n1 – 3 months\\n3 – 6 months\\n6+ months\\nFlexible',\n default_value: '',\n help_text: '',\n },\n { field_type: 'textarea', field_key: 'requirements', label: 'Project requirements', placeholder: 'Describe what you need — features, integrations, constraints, goals…', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Job / grant / programme application — personal details, role, cover note, CV upload.\nexport const FormApplication = {\n label: 'Application form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Apply now',\n form_lede: 'Tell us about yourself. We read every application carefully.',\n form_submit_label: 'Submit application',\n success_heading: 'Application submitted.',\n success_body:\n \"Thanks for applying. We'll review your application and be in touch within 5–7 business days.\",\n fields: [\n { field_type: 'text', field_key: 'full_name', label: 'Full name', placeholder: 'Your name', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'email', field_key: 'email', label: 'Email', placeholder: 'you@example.com', required: 'yes', width: 'half', validation: 'email', options: '', default_value: '', help_text: '' },\n { field_type: 'tel', field_key: 'phone', label: 'Phone', placeholder: '+1 555 000 0000', required: 'no', width: 'half', validation: 'phone', options: '', default_value: '', help_text: 'Optional' },\n { field_type: 'text', field_key: 'linkedin', label: 'LinkedIn', placeholder: 'linkedin.com/in/you', required: 'no', width: 'half', validation: 'url', options: '', default_value: '', help_text: 'Optional' },\n { field_type: 'text', field_key: 'portfolio', label: 'Portfolio / website', placeholder: 'https://yoursite.com', required: 'no', width: 'half', validation: 'url', options: '', default_value: '', help_text: 'Optional' },\n {\n field_type: 'select',\n field_key: 'role',\n label: 'Role applying for',\n placeholder: 'Select a role',\n required: 'yes',\n width: 'half',\n validation: 'none',\n options: 'Engineering\\nDesign\\nProduct\\nMarketing\\nOperations\\nOther',\n default_value: '',\n help_text: '',\n },\n { field_type: 'textarea', field_key: 'cover_note', label: 'Cover note', placeholder: 'Why are you interested? What would you bring to the role?', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'upload', field_key: 'cv', label: 'CV / résumé', placeholder: 'Upload CV (PDF preferred)', required: 'no', width: 'full', validation: 'none', options: '', default_value: '', help_text: 'PDF, DOC, or DOCX — max 5 MB' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Support ticket — name, email, category, priority, subject, description, optional attachment.\nexport const FormSupport = {\n label: 'Support ticket form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Open a support ticket',\n form_lede:\n \"Describe the issue and we'll get back to you as quickly as we can.\",\n form_submit_label: 'Submit ticket',\n success_heading: 'Ticket submitted.',\n success_body:\n \"We've logged your request. Expect a reply to your email within one business day.\",\n fields: [\n { field_type: 'text', field_key: 'full_name', label: 'Name', placeholder: 'Your name', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'email', field_key: 'email', label: 'Email', placeholder: 'you@company.com', required: 'yes', width: 'half', validation: 'email', options: '', default_value: '', help_text: '' },\n {\n field_type: 'select',\n field_key: 'category',\n label: 'Category',\n placeholder: \"What's this about?\",\n required: 'yes',\n width: 'half',\n validation: 'none',\n options: 'Technical issue\\nBilling\\nAccount access\\nFeature request\\nGeneral enquiry\\nOther',\n default_value: '',\n help_text: '',\n },\n {\n field_type: 'select',\n field_key: 'priority',\n label: 'Priority',\n placeholder: 'How urgent is this?',\n required: 'yes',\n width: 'half',\n validation: 'none',\n options: 'Low\\nMedium\\nHigh\\nUrgent',\n default_value: 'Medium',\n help_text: '',\n },\n { field_type: 'text', field_key: 'subject', label: 'Subject', placeholder: 'One-line summary of the issue', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'textarea', field_key: 'description', label: 'Description', placeholder: 'Steps to reproduce, error messages, expected vs actual behaviour…', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'upload', field_key: 'attachment', label: 'Attachment', placeholder: 'Upload a screenshot or file', required: 'no', width: 'full', validation: 'none', options: '', default_value: '', help_text: 'Optional — screenshots, logs, or related files' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Product waitlist — name, email, company, role, intended use case.\nexport const FormWaitlist = {\n label: 'Waitlist form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Join the waitlist',\n form_lede:\n \"We're rolling out access in batches. Sign up and we'll let you know when your spot is ready.\",\n form_submit_label: 'Join waitlist',\n success_heading: \"You're on the list.\",\n success_body: \"We'll email you as soon as your spot is available. No spam, ever.\",\n fields: [\n { field_type: 'text', field_key: 'full_name', label: 'Name', placeholder: 'Your name', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'email', field_key: 'email', label: 'Email', placeholder: 'you@example.com', required: 'yes', width: 'half', validation: 'email', options: '', default_value: '', help_text: '' },\n { field_type: 'text', field_key: 'company', label: 'Company', placeholder: 'Your organisation', required: 'no', width: 'half', validation: 'none', options: '', default_value: '', help_text: 'Optional' },\n {\n field_type: 'select',\n field_key: 'role',\n label: 'Your role',\n placeholder: 'Select your role',\n required: 'no',\n width: 'half',\n validation: 'none',\n options: 'Founder\\nProduct manager\\nDeveloper\\nDesigner\\nMarketer\\nOther',\n default_value: '',\n help_text: '',\n },\n { field_type: 'textarea', field_key: 'use_case', label: 'How would you use it?', placeholder: 'A sentence or two about your intended use case…', required: 'no', width: 'full', validation: 'none', options: '', default_value: '', help_text: 'Optional — helps us prioritise access' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","import { FormBlockBase, COMMON_FORM_FIELDS, COMMON_FORM_DEFAULTS } from './_FormBlockBase';\n\n// Address / location collection — name, street, city, state, country, postal code.\nexport const FormAddress = {\n label: 'Address form',\n fields: COMMON_FORM_FIELDS,\n defaultProps: {\n ...COMMON_FORM_DEFAULTS,\n form_heading: 'Your address',\n form_lede: 'Please provide your delivery or billing address.',\n form_submit_label: 'Save address',\n success_heading: 'Address saved.',\n success_body: 'Your address details have been recorded.',\n fields: [\n { field_type: 'text', field_key: 'full_name', label: 'Full name', placeholder: 'Recipient name', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'text', field_key: 'line1', label: 'Address line 1', placeholder: 'Street address', required: 'yes', width: 'full', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'text', field_key: 'line2', label: 'Address line 2', placeholder: 'Apartment, suite, unit…', required: 'no', width: 'full', validation: 'none', options: '', default_value: '', help_text: 'Optional' },\n { field_type: 'text', field_key: 'city', label: 'City', placeholder: 'City', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'text', field_key: 'state', label: 'State / region', placeholder: 'State or region', required: 'no', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'country', field_key: 'country', label: 'Country', placeholder: 'Select country', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n { field_type: 'text', field_key: 'pincode', label: 'Postal / ZIP code', placeholder: 'Postal code', required: 'yes', width: 'half', validation: 'none', options: '', default_value: '', help_text: '' },\n ],\n },\n render: (props) => <FormBlockBase {...props} />,\n};\n","// EventsList — upcoming events list. Date pill + title + venue + CTA.\nimport { StudioLink as Link } from '../context';\nimport { CalendarOutlined, EnvironmentOutlined } from '@ant-design/icons';\n\nexport const EventsList = {\n label: 'Events list',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Events',\n arrayFields: {\n date_short: { type: 'text', label: 'Date (e.g. MAR 12)' },\n date_long: { type: 'text', label: 'Date long-form (e.g. March 12, 2026)' },\n title: { type: 'text', label: 'Title' },\n body: { type: 'text', label: 'One-line description' },\n venue: { type: 'text', label: 'Venue / mode (e.g. Bengaluru, online)' },\n cta_label: { type: 'text', label: 'CTA label' },\n cta_href: { type: 'text', label: 'CTA URL' },\n },\n defaultItemProps: { date_short: 'MAR 12', date_long: 'March 12, 2026', title: 'New event', body: 'Description.', venue: 'Online', cta_label: 'Register', cta_href: '#' },\n getItemSummary: (it, i) => it?.title || `Event ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: 'Upcoming', heading: 'Where we’ll be next.',\n items: [\n { date_short: 'MAR 12', date_long: 'March 12, 2026', title: 'An event title goes here', body: 'A short, friendly description that you can rewrite.', venue: 'Online · 90 min', cta_label: 'Register', cta_href: '#' },\n { date_short: 'APR 04', date_long: 'April 4, 2026', title: 'Another event title', body: 'A short, friendly description that you can rewrite.', venue: 'In person', cta_label: 'RSVP', cta_href: '#' },\n { date_short: 'MAY 21', date_long: 'May 21, 2026', title: 'One more event for the calendar', body: 'A short, friendly description that you can rewrite.', venue: 'Online · 60 min', cta_label: 'Register', cta_href: '#' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\" style={{ maxWidth: 920 }}>\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: 12 }}>\n {(items || []).map((e, i) => (\n <li key={i} className=\"tps-row-stack\" style={{ display: 'grid', gridTemplateColumns: '88px 1fr auto', gap: 24, alignItems: 'center', padding: 20, background: 'var(--tps-bg)', border: '1px solid var(--tps-line)', borderRadius: 'var(--tps-radius)' }}>\n <div style={{ background: 'rgba(15,118,110,0.08)', color: 'var(--tps-primary)', padding: '12px 8px', borderRadius: 'var(--tps-radius)', textAlign: 'center', fontWeight: 700, fontSize: 13, lineHeight: 1.2, letterSpacing: 0.5 }}>\n <CalendarOutlined style={{ display: 'block', marginBottom: 4 }} />\n {e.date_short}\n </div>\n <div>\n <h3 style={{ fontSize: 17, fontWeight: 700, margin: '0 0 4px' }}>{e.title}</h3>\n {e.body && <p style={{ color: 'var(--tps-muted)', margin: '0 0 6px', fontSize: 14, lineHeight: 1.5 }}>{e.body}</p>}\n <div style={{ display: 'flex', gap: 14, fontSize: 12, color: 'var(--tps-muted)' }}>\n <span>{e.date_long}</span>\n {e.venue && <span><EnvironmentOutlined /> {e.venue}</span>}\n </div>\n </div>\n {e.cta_label && (\n <Link href={e.cta_href || '#'} style={{ color: 'var(--tps-primary)', fontWeight: 700, fontSize: 14, textDecoration: 'none', whiteSpace: 'nowrap' }}>\n {e.cta_label} →\n </Link>\n )}\n </li>\n ))}\n </ul>\n </div>\n </section>\n ),\n};\n","// Divider — horizontal divider with optional centered label.\nexport const Divider = {\n label: 'Divider',\n fields: {\n label: { type: 'text', label: 'Center label (optional)' },\n style: {\n type: 'select', label: 'Style',\n options: [\n { label: 'Hairline', value: 'hairline' },\n { label: 'Dashed', value: 'dashed' },\n { label: 'Thick', value: 'thick' },\n { label: 'Dot', value: 'dot' },\n ],\n },\n spacing: {\n type: 'select', label: 'Vertical spacing',\n options: [\n { label: 'Compact (24px)', value: 24 },\n { label: 'Standard (48px)', value: 48 },\n { label: 'Generous (96px)', value: 96 },\n ],\n },\n },\n defaultProps: { label: '', style: 'hairline', spacing: 48 },\n render: ({ label, style, spacing }) => (\n <section style={{ padding: `${spacing}px 24px` }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n {style === 'dot' ? (\n <div style={{ display: 'flex', justifyContent: 'center', gap: 8 }}>\n {[0,1,2].map((i) => <span key={i} style={{ width: 4, height: 4, borderRadius: '50%', background: '#CBD5E1' }} />)}\n </div>\n ) : label ? (\n <div style={{ display: 'flex', alignItems: 'center', gap: 12 }}>\n <span style={{ flex: 1, height: style === 'thick' ? 2 : 1, borderTop: style === 'dashed' ? `1px dashed #CBD5E1` : 'none', background: style !== 'dashed' ? '#E2E8F0' : 'none' }} />\n <span style={{ fontSize: 11, fontWeight: 700, letterSpacing: 1.5, color: '#94A3B8', textTransform: 'uppercase' }}>{label}</span>\n <span style={{ flex: 1, height: style === 'thick' ? 2 : 1, borderTop: style === 'dashed' ? `1px dashed #CBD5E1` : 'none', background: style !== 'dashed' ? '#E2E8F0' : 'none' }} />\n </div>\n ) : (\n <hr style={{ margin: 0, border: 0, borderTop: style === 'dashed' ? '1px dashed #CBD5E1' : `${style === 'thick' ? 2 : 1}px solid #E2E8F0` }} />\n )}\n </div>\n </section>\n ),\n};\n","// ThreeColumn — generic 3-col text layout. Lighter than PillarsRow\n// (which is icon + body cards). Use for parallel text features.\nexport const ThreeColumn = {\n label: 'Three columns',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n columns: {\n type: 'array', label: 'Columns',\n arrayFields: {\n title: { type: 'text', label: 'Column title' },\n body: { type: 'textarea', label: 'Column body', rows: 4 },\n },\n defaultItemProps: { title: 'Column', body: 'Body text.' },\n getItemSummary: (it, i) => it?.title || `Column ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: '',\n columns: [\n { title: 'For teams', body: 'A short, friendly description you can rewrite.' },\n { title: 'For leaders', body: 'A short, friendly description you can rewrite.' },\n { title: 'For founders', body: 'A short, friendly description you can rewrite.' },\n ],\n background: 'white',\n },\n render: ({ eyebrow, heading, columns, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 56, paddingBottom: 56 }}>\n <div className=\"tps-container\">\n {(eyebrow || heading) && (\n <div style={{ marginBottom: 32 }}>\n {eyebrow && <span className=\"tps-eyebrow\">{eyebrow}</span>}\n {heading && <h2 className=\"tps-h2\" style={{ marginTop: 8 }}>{heading}</h2>}\n </div>\n )}\n <div style={{ display: 'grid', gridTemplateColumns: 'repeat(auto-fit, minmax(min(260px, 100%), 1fr))', gap: 32 }}>\n {(columns || []).map((c, i) => (\n <div key={i}>\n <h3 style={{ fontSize: 18, fontWeight: 700, margin: '0 0 8px' }}>{c.title}</h3>\n <p style={{ color: 'var(--tps-muted)', lineHeight: 1.7, fontSize: 15, margin: 0 }}>{c.body}</p>\n </div>\n ))}\n </div>\n </div>\n </section>\n ),\n};\n","// PressMentions — \"As featured in\" press logos. Same pattern as\n// LogoStrip but the heading copy and visual treatment match journalism.\nexport const PressMentions = {\n label: 'Press mentions',\n fields: {\n heading: { type: 'text', label: 'Heading' },\n items: {\n type: 'array', label: 'Outlets',\n arrayFields: {\n name: { type: 'text', label: 'Outlet name' },\n image_url: { type: 'text', label: 'Logo image URL (optional)' },\n link: { type: 'text', label: 'Article URL (optional)' },\n quote: { type: 'text', label: 'Pull-quote (optional)' },\n },\n defaultItemProps: { name: 'Outlet', image_url: '', link: '', quote: '' },\n getItemSummary: (it, i) => it?.name || `Outlet ${i + 1}`,\n },\n background: {\n type: 'radio', label: 'Background',\n options: [{ label: 'White', value: 'white' }, { label: 'Soft', value: 'soft' }, { label: 'Dark', value: 'dark' }],\n },\n },\n defaultProps: {\n heading: 'As featured in',\n items: [\n { name: 'Outlet One', image_url: '', link: '', quote: '' },\n { name: 'Outlet Two', image_url: '', link: '', quote: '' },\n { name: 'Outlet Three', image_url: '', link: '', quote: '' },\n ],\n background: 'soft',\n },\n render: ({ heading, items, background }) => (\n <section className={`tps-section ${background === 'soft' ? 'tps-section-soft' : ''}${background === 'dark' ? ' tps-section-dark' : ''}`} style={{ paddingTop: 48, paddingBottom: 48 }}>\n <div className=\"tps-container\" style={{ textAlign: 'center' }}>\n {heading && <div style={{ fontSize: 11, fontWeight: 700, letterSpacing: 2, color: 'var(--tps-muted)', marginBottom: 28, textTransform: 'uppercase' }}>{heading}</div>}\n <div style={{ display: 'flex', flexWrap: 'wrap', justifyContent: 'center', alignItems: 'center', gap: 40 }}>\n {(items || []).map((p, i) => {\n const inner = p.image_url ? (\n <img src={p.image_url} alt={p.name} style={{ height: 28, opacity: 0.7, filter: 'grayscale(100%)' }} />\n ) : (\n <span style={{ fontFamily: 'Georgia, serif', fontSize: 18, fontWeight: 600, color: 'var(--tps-ink)', fontStyle: 'italic' }}>{p.name}</span>\n );\n return p.link ? <a key={i} href={p.link} target=\"_blank\" rel=\"noreferrer\">{inner}</a> : <span key={i}>{inner}</span>;\n })}\n </div>\n </div>\n </section>\n ),\n};\n","// Container — styled background + padding container for visually grouping\n// adjacent blocks. Doesn't accept children blocks (Puck DropZones add too\n// much complexity); instead this is a single decorative wrapper for one\n// title + one body of content.\nexport const Container = {\n label: 'Container box',\n fields: {\n eyebrow: { type: 'text', label: 'Eyebrow' },\n heading: { type: 'text', label: 'Heading' },\n body_html: { type: 'textarea', label: 'Body (HTML)', rows: 5 },\n background: {\n type: 'select', label: 'Box background',\n options: [\n { label: 'Soft', value: 'soft' },\n { label: 'Primary tint', value: 'primary' },\n { label: 'Dark', value: 'dark' },\n { label: 'White (with border)', value: 'white' },\n ],\n },\n align: {\n type: 'radio', label: 'Alignment',\n options: [{ label: 'Left', value: 'left' }, { label: 'Center', value: 'center' }],\n },\n },\n defaultProps: {\n eyebrow: '', heading: 'Important note',\n body_html: '<p>Use this box to highlight a callout or key takeaway.</p>',\n background: 'soft', align: 'left',\n },\n render: ({ eyebrow, heading, body_html, background, align }) => {\n const bg = {\n soft: { bg: 'var(--tps-bg-soft)', fg: 'var(--tps-ink)', border: '1px solid var(--tps-line)' },\n primary: { bg: 'rgba(15, 118, 110, 0.08)', fg: 'var(--tps-ink)', border: '1px solid rgba(15, 118, 110, 0.2)' },\n dark: { bg: '#0F172A', fg: '#fff', border: 'none' },\n white: { bg: '#fff', fg: 'var(--tps-ink)', border: '1px solid var(--tps-line)' },\n }[background] || { bg: 'var(--tps-bg-soft)', fg: 'var(--tps-ink)', border: '1px solid var(--tps-line)' };\n return (\n <section className=\"tps-section\" style={{ paddingTop: 32, paddingBottom: 32 }}>\n <div className=\"tps-container\" style={{ maxWidth: 820 }}>\n <div style={{ background: bg.bg, color: bg.fg, border: bg.border, borderRadius: 'var(--tps-radius)', padding: 32, textAlign: align }}>\n {eyebrow && <span className=\"tps-eyebrow\" style={{ color: background === 'dark' ? '#F59E0B' : undefined }}>{eyebrow}</span>}\n {heading && <h3 style={{ fontSize: 22, fontWeight: 700, margin: '8px 0 14px' }}>{heading}</h3>}\n {body_html && <div style={{ lineHeight: 1.7, fontSize: 15, opacity: background === 'dark' ? 0.92 : 1 }} dangerouslySetInnerHTML={{ __html: body_html }} />}\n </div>\n </div>\n </section>\n );\n },\n};\n","// withReveal — wraps a Puck block's render so it gets a default subtle\n// \"fade up on scroll\" entrance animation in production, with zero FOUC.\n//\n// SSR-safety: blocks render with `opacity: 1` in the initial HTML (no\n// invisible content shipped to the user). The animation only kicks in\n// AFTER hydration when the IntersectionObserver hook (mounted in the\n// marketing layout) adds `.tps-anim` to <html>. By that point IO has\n// already classified above-the-fold blocks as in-view, so they stay\n// visible without a flash; below-the-fold blocks get the gentle fade-up\n// as the user scrolls into them.\n//\n// Editor-safety: when Puck renders the block on the editor canvas\n// (`puck.isEditing === true`), we skip the wrapper entirely so the\n// drag-overlay stays clean and there's no animation on every preview\n// render.\n\nimport { Children, cloneElement, isValidElement } from 'react';\n\nexport function withReveal(component, animation = 'fade-up') {\n const RenderWrapped = (props) => {\n const node = component.render(props);\n // In the editor canvas, render plain — no animation chrome on top.\n if (props?.puck?.isEditing) return node;\n if (!isValidElement(node)) return node;\n // Add the data attribute the IO hook reads on the OUTER element of\n // the block so the whole section animates as one unit.\n const cls = ['tps-reveal', `tps-reveal--${animation}`, node.props.className]\n .filter(Boolean)\n .join(' ');\n return cloneElement(node, {\n className: cls,\n 'data-tps-reveal': animation,\n });\n };\n return { ...component, render: RenderWrapped };\n}\n\n// Expose Children as a convenience if a block needs to wrap multiple\n// roots — keeps consumers off React internals.\nexport const _Children = Children;\n","// withTheme — gives EVERY block a per-block theme control, for free.\n//\n// A theme is just a re-scope of the neutral --tps-* tokens (see the \"Themes\"\n// section in styles.css). Setting `data-tps-theme=\"<name>\"` on any element\n// re-paints it and its descendants through the CSS cascade — no per-block\n// code. This HOC does exactly that at the block level:\n//\n// 1. It injects a shared `theme` field into the block's field panel, so an\n// author can theme a single block independently of the page/site theme.\n// 2. On render it clones the block's outermost element and stamps\n// `data-tps-theme` onto it when the author picks a non-inherit value.\n//\n// Default is '' (\"Inherit\") — the block follows whatever theme the page or\n// site sets, which is the common case. Pick \"Dark\" on one block and only that\n// block flips, regardless of the surrounding theme.\n//\n// Adding a future theme (e.g. \"sepia\") is one entry in THEME_OPTIONS below\n// plus one CSS rule in styles.css. No block, and nothing here, changes.\n//\n// SSR-safe: no window/document. Works identically in the editor canvas and on\n// a rendered page (unlike withReveal, we do NOT skip in the editor — the\n// author needs to see the theme they picked while editing).\n\nimport { cloneElement, isValidElement } from 'react';\n\n// The single source of truth for which themes a block can be set to. Keep the\n// values in sync with the `[data-tps-theme=\"…\"]` rules in styles.css. The\n// empty value means \"inherit the surrounding theme\" and stamps no attribute.\nexport const THEME_OPTIONS = [\n { label: 'Inherit', value: '' },\n { label: 'Light', value: 'light' },\n { label: 'Dark', value: 'dark' },\n];\n\nexport const themeField = {\n type: 'select',\n label: 'Theme',\n options: THEME_OPTIONS,\n};\n\nexport function withTheme(component) {\n const fields = { ...(component.fields || {}), theme: themeField };\n const defaultProps = { theme: '', ...(component.defaultProps || {}) };\n\n const RenderThemed = (props) => {\n const node = component.render(props);\n const theme = props?.theme;\n // Inherit (or unset / unknown) → render untouched, follow the cascade.\n if (!theme || !isValidElement(node)) return node;\n return cloneElement(node, { 'data-tps-theme': theme });\n };\n\n return { ...component, fields, defaultProps, render: RenderThemed };\n}\n","// SVG layout sketches for each block, shown in Puck's components panel.\n// Each preview is a stylised mini-diagram of the block's visual structure,\n// not a real render — fast, no AntD dependency, looks consistent across the\n// picker. The thumbnail viewBox is fixed so all blocks line up at the same\n// size in the picker.\n//\n// The whole palette — brand hues AND neutral surfaces — comes from the active\n// --tps-* tokens at render time. We read them off the nearest ancestor with a\n// [data-brand] attribute (the showcase / host wrapper), or :root otherwise.\n// That element also carries data-tps-theme, so the tokens already reflect the\n// active theme: the thumbnails follow the UI when the host swaps brand OR flips\n// light/dark. Brand hues (PRIMARY/PRIMARY_SOFT/ACCENT) stay constant across\n// themes; the neutrals (BG/CARD/BORDER/TEXT/MUTED) re-scope so the mini-mockup\n// reads as a light page in light mode and a dark page in dark mode.\n\nimport { useState, useEffect } from 'react';\n\n// Light defaults — used for SSR and as the fallback when a token is unset.\n// BG is the page backdrop, CARD the raised surface on top of it, so a dark\n// theme keeps the same two-tone depth (e.g. #0a0a0a page / #141414 card).\nconst DEFAULT_COLORS = {\n PRIMARY: '#0b60d8',\n PRIMARY_SOFT: '#dbeafe',\n ACCENT: '#F59E0B',\n BG: '#F8FAFC',\n BG_SOFT: '#F1F5F9',\n CARD: '#ffffff',\n BORDER: '#E2E8F0',\n TEXT: '#0F172A',\n MUTED: '#94A3B8',\n};\n\nfunction readColors() {\n if (typeof window === 'undefined') return DEFAULT_COLORS;\n const root =\n document.querySelector('[data-brand]') || document.documentElement;\n const style = getComputedStyle(root);\n const get = (name, fallback) =>\n style.getPropertyValue(name).trim() || fallback;\n return {\n PRIMARY: get('--tps-primary', DEFAULT_COLORS.PRIMARY),\n PRIMARY_SOFT: get('--tps-primary-soft', DEFAULT_COLORS.PRIMARY_SOFT),\n ACCENT: get('--tps-accent', DEFAULT_COLORS.ACCENT),\n BG: get('--tps-bg-section', DEFAULT_COLORS.BG),\n BG_SOFT: get('--tps-bg-soft', DEFAULT_COLORS.BG_SOFT),\n CARD: get('--tps-bg', DEFAULT_COLORS.CARD),\n BORDER: get('--tps-line', DEFAULT_COLORS.BORDER),\n TEXT: get('--tps-ink', DEFAULT_COLORS.TEXT),\n MUTED: get('--tps-muted', DEFAULT_COLORS.MUTED),\n };\n}\n\n// Refresh when the brand OR theme on the nearest ancestor flips — the showcase\n// / host toggles data-brand when the user picks a new brand and data-tps-theme\n// when they flip light/dark, so the picker thumbnails need to follow both.\n//\n// The initial state is computed lazily from getComputedStyle so the very first\n// paint already uses the active brand + theme. Without this, every preview\n// flashes the package-default light palette for a frame before the post-mount\n// effect re-reads the variables.\nfunction useThemeColors() {\n const [colors, setColors] = useState(readColors);\n useEffect(() => {\n setColors(readColors());\n if (typeof window === 'undefined') return;\n const target =\n document.querySelector('[data-brand]') || document.documentElement;\n const observer = new MutationObserver(() => setColors(readColors()));\n observer.observe(target, {\n attributes: true,\n attributeFilter: ['data-brand', 'data-tps-theme', 'style', 'class'],\n });\n return () => observer.disconnect();\n }, []);\n return colors;\n}\n\nconst FRAME_W = 120;\nconst FRAME_H = 70;\n\n// PREVIEWS is a function so the live palette (brand hues + themed neutrals)\n// can be passed in fresh on every render. The destructure makes the JSX below\n// identical to the static form — no further per-element changes needed. Frame\n// is defined here too so it closes over the themed BG / BG_SOFT / BORDER.\nfunction getPreviews(c) {\n const { PRIMARY, PRIMARY_SOFT, ACCENT, BG, BG_SOFT, CARD, BORDER, TEXT, MUTED } = c;\n\n const Frame = ({ children, soft = false }) => (\n <svg\n viewBox={`0 0 ${FRAME_W} ${FRAME_H}`}\n width=\"100%\"\n height=\"auto\"\n preserveAspectRatio=\"xMidYMid meet\"\n style={{ display: 'block', borderRadius: 4 }}\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width={FRAME_W - 1}\n height={FRAME_H - 1}\n rx=\"3\"\n fill={soft ? BG_SOFT : BG}\n stroke={BORDER}\n strokeWidth=\"1\"\n />\n {children}\n </svg>\n );\n\n return {\n Hero: (\n <Frame>\n <rect x=\"14\" y=\"14\" width=\"20\" height=\"3\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"14\" y=\"22\" width=\"92\" height=\"6\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"32\" width=\"80\" height=\"3\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"38\" width=\"60\" height=\"3\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"50\" width=\"32\" height=\"9\" rx=\"2\" fill={PRIMARY} />\n <rect x=\"50\" y=\"50\" width=\"32\" height=\"9\" rx=\"2\" fill=\"none\" stroke={TEXT} strokeWidth=\"0.8\" />\n </Frame>\n ),\n SectionHeader: (\n <Frame>\n <rect x=\"14\" y=\"22\" width=\"18\" height=\"3\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"14\" y=\"30\" width=\"78\" height=\"6\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"42\" width=\"64\" height=\"3\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n StatsStrip: (\n <Frame soft>\n {[14, 38, 62, 86].map((x, i) => (\n <g key={i}>\n <rect x={x} y=\"22\" width=\"20\" height=\"6\" rx=\"1.5\" fill={PRIMARY} opacity=\"0.85\" />\n <rect x={x + 2} y=\"32\" width=\"16\" height=\"3\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n RichText: (\n <Frame>\n {[14, 21, 28, 35, 42, 49, 56].map((y, i) => (\n <rect\n key={i}\n x=\"14\"\n y={y}\n width={i % 3 === 2 ? 64 : 92}\n height=\"2\"\n rx=\"1\"\n fill={i === 0 || i === 4 ? TEXT : MUTED}\n opacity={i === 0 || i === 4 ? 1 : 0.6}\n />\n ))}\n </Frame>\n ),\n PillarsRow: (\n <Frame soft>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect\n x={x}\n y=\"14\"\n width=\"32\"\n height=\"42\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.8\"\n />\n <circle cx={x + 8} cy=\"22\" r=\"3\" fill={PRIMARY} opacity=\"0.85\" />\n <rect x={x + 4} y=\"30\" width=\"20\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"36\" width=\"24\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x + 4} y=\"40\" width=\"22\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x + 4} y=\"44\" width=\"18\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n ApproachSteps: (\n <Frame>\n {[10, 38, 66, 94].map((x, i) => (\n <g key={i}>\n <text\n x={x}\n y=\"22\"\n fontSize=\"6\"\n fontWeight=\"700\"\n fill={ACCENT}\n fontFamily=\"system-ui\"\n >\n {`0${i + 1}`}\n </text>\n <rect x={x} y=\"28\" width=\"20\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x={x} y=\"36\" width=\"22\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"40\" width=\"18\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n ServicesGrid: (\n <Frame>\n {[\n [10, 12], [44, 12], [78, 12],\n [10, 38], [44, 38], [78, 38],\n ].map(([x, y], i) => (\n <g key={i}>\n <rect\n x={x}\n y={y}\n width=\"32\"\n height=\"20\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.8\"\n />\n <circle cx={x + 5} cy={y + 6} r=\"2\" fill={PRIMARY} opacity=\"0.85\" />\n <rect x={x + 4} y={y + 11} width=\"22\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y={y + 15} width=\"18\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n CTABanner: (\n <Frame soft>\n <rect x=\"14\" y=\"16\" width=\"14\" height=\"2.5\" rx=\"1\" fill={ACCENT} />\n <rect x=\"14\" y=\"22\" width=\"74\" height=\"6\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"32\" width=\"92\" height=\"3\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"44\" width=\"40\" height=\"11\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n PrinciplesList: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"14\" height=\"2.5\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"10\" y=\"20\" width=\"40\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"10\" y=\"30\" width=\"36\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"10\" y=\"34\" width=\"34\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect\n x=\"60\"\n y=\"14\"\n width=\"50\"\n height=\"48\"\n rx=\"2\"\n fill={PRIMARY_SOFT}\n opacity=\"0.5\"\n />\n {[20, 30, 40, 50].map((y, i) => (\n <g key={i}>\n <circle cx=\"66\" cy={y + 2} r=\"2\" fill={PRIMARY} />\n <rect x=\"71\" y={y + 1} width=\"32\" height=\"2\" rx=\"1\" fill={TEXT} opacity=\"0.8\" />\n </g>\n ))}\n </Frame>\n ),\n TwoColumn: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"48\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"10\" y=\"22\" width=\"42\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"10\" y=\"26\" width=\"46\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"10\" y=\"30\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"14\" width=\"48\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"62\" y=\"22\" width=\"42\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"26\" width=\"46\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"30\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n ContactSection: (\n <Frame>\n <rect x=\"10\" y=\"10\" width=\"20\" height=\"3\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"10\" y=\"16\" width=\"80\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"10\" y=\"28\" width=\"34\" height=\"32\" rx=\"2\" fill={PRIMARY_SOFT} opacity=\"0.5\" />\n <rect\n x=\"50\"\n y=\"28\"\n width=\"60\"\n height=\"32\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.8\"\n />\n <rect x=\"54\" y=\"32\" width=\"24\" height=\"3\" rx=\"1\" fill={MUTED} />\n <rect x=\"54\" y=\"38\" width=\"52\" height=\"3\" rx=\"1\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"54\" y=\"44\" width=\"52\" height=\"3\" rx=\"1\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"54\" y=\"50\" width=\"20\" height=\"6\" rx=\"1.5\" fill={PRIMARY} />\n </Frame>\n ),\n Spacer: (\n <Frame>\n <line\n x1=\"14\"\n y1=\"35\"\n x2=\"106\"\n y2=\"35\"\n stroke={MUTED}\n strokeWidth=\"1\"\n strokeDasharray=\"3 2\"\n />\n <text\n x=\"60\"\n y=\"48\"\n fontSize=\"6\"\n fill={MUTED}\n textAnchor=\"middle\"\n fontFamily=\"system-ui\"\n >\n space\n </text>\n </Frame>\n ),\n RawHtml: (\n <Frame>\n <text\n x=\"14\"\n y=\"42\"\n fontSize=\"22\"\n fontFamily=\"ui-monospace, monospace\"\n fill={MUTED}\n opacity=\"0.85\"\n >\n {'</>'}\n </text>\n <rect x=\"56\" y=\"22\" width=\"50\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"56\" y=\"28\" width=\"42\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"56\" y=\"34\" width=\"48\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"56\" y=\"40\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"56\" y=\"46\" width=\"44\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n ImageText: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"44\" height=\"42\" rx=\"2\" fill={PRIMARY_SOFT} />\n <line x1=\"20\" y1=\"22\" x2=\"44\" y2=\"48\" stroke={PRIMARY} strokeWidth=\"0.6\" opacity=\"0.6\" />\n <line x1=\"44\" y1=\"22\" x2=\"20\" y2=\"48\" stroke={PRIMARY} strokeWidth=\"0.6\" opacity=\"0.6\" />\n <rect x=\"62\" y=\"18\" width=\"14\" height=\"2.5\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"62\" y=\"24\" width=\"44\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"62\" y=\"34\" width=\"46\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"38\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"42\" width=\"42\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"62\" y=\"50\" width=\"28\" height=\"6\" rx=\"1.5\" fill={PRIMARY} />\n </Frame>\n ),\n VideoEmbed: (\n <Frame>\n <rect x=\"20\" y=\"16\" width=\"80\" height=\"38\" rx=\"2\" fill=\"#0F172A\" />\n <polygon points=\"55,26 55,44 70,35\" fill=\"#ffffff\" opacity=\"0.95\" />\n <rect x=\"40\" y=\"60\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n LogoStrip: (\n <Frame soft>\n <rect x=\"48\" y=\"14\" width=\"24\" height=\"2\" rx=\"1\" fill={MUTED} />\n {[14, 36, 58, 80, 102].map((cx, i) => (\n <rect\n key={i}\n x={cx - 8}\n y=\"36\"\n width=\"16\"\n height=\"10\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.5\"\n />\n ))}\n </Frame>\n ),\n TestimonialQuote: (\n <Frame soft>\n <text\n x=\"20\"\n y=\"26\"\n fontSize=\"16\"\n fontFamily=\"Georgia\"\n fill={PRIMARY}\n opacity=\"0.6\"\n >\n \"\n </text>\n <rect x=\"14\" y=\"28\" width=\"92\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"34\" width=\"86\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"40\" width=\"60\" height=\"3\" rx=\"1\" fill={TEXT} />\n <circle cx=\"42\" cy=\"56\" r=\"4\" fill={PRIMARY} />\n <rect x=\"50\" y=\"52\" width=\"22\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"50\" y=\"56\" width=\"34\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n TestimonialGrid: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect\n x={x}\n y=\"14\"\n width=\"32\"\n height=\"42\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.8\"\n />\n <text x={x + 4} y=\"22\" fontSize=\"6\" fontFamily=\"Georgia\" fill={PRIMARY} opacity=\"0.6\">\"</text>\n <rect x={x + 4} y=\"24\" width=\"22\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"28\" width=\"24\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"32\" width=\"20\" height=\"2\" rx=\"1\" fill={TEXT} />\n <circle cx={x + 7} cy=\"46\" r=\"3\" fill={PRIMARY} />\n <rect x={x + 12} y=\"44\" width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x + 12} y=\"48\" width=\"18\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n FAQ: (\n <Frame>\n {[14, 30, 46].map((y, i) => (\n <g key={i}>\n <rect\n x=\"14\"\n y={y}\n width=\"92\"\n height=\"10\"\n rx=\"2\"\n fill={i === 0 ? PRIMARY_SOFT : CARD}\n stroke={BORDER}\n strokeWidth=\"0.6\"\n opacity={i === 0 ? 0.7 : 1}\n />\n <rect x=\"20\" y={y + 4} width=\"50\" height=\"2\" rx=\"1\" fill={TEXT} />\n <text\n x=\"98\"\n y={y + 7}\n fontSize=\"7\"\n fill={MUTED}\n textAnchor=\"middle\"\n fontFamily=\"system-ui\"\n >\n {i === 0 ? '−' : '+'}\n </text>\n </g>\n ))}\n </Frame>\n ),\n Timeline: (\n <Frame>\n <line x1=\"22\" y1=\"14\" x2=\"22\" y2=\"58\" stroke={BORDER} strokeWidth=\"1\" />\n {[16, 32, 48].map((y, i) => (\n <g key={i}>\n <circle cx=\"22\" cy={y} r=\"3\" fill={PRIMARY} />\n <rect x=\"32\" y={y - 5} width=\"14\" height=\"2\" rx=\"1\" fill={ACCENT} />\n <rect x=\"32\" y={y - 1} width=\"40\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"32\" y={y + 4} width=\"60\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n NewsletterSignup: (\n <Frame soft>\n <rect x=\"14\" y=\"14\" width=\"22\" height=\"2.5\" rx=\"1\" fill={ACCENT} />\n <rect x=\"14\" y=\"20\" width=\"76\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"30\" width=\"92\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"34\" width=\"80\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect\n x=\"14\"\n y=\"44\"\n width=\"64\"\n height=\"9\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <rect x=\"82\" y=\"44\" width=\"24\" height=\"9\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n TeamGrid: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect\n x={x}\n y=\"12\"\n width=\"32\"\n height=\"48\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <rect x={x} y=\"12\" width=\"32\" height=\"22\" rx=\"2\" fill={PRIMARY_SOFT} />\n <circle cx={x + 16} cy=\"22\" r=\"6\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x={x + 4} y=\"38\" width=\"20\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"44\" width=\"14\" height=\"2\" rx=\"1\" fill={ACCENT} />\n <rect x={x + 4} y=\"50\" width=\"22\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x + 4} y=\"54\" width=\"18\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n Banner: (\n <Frame>\n <rect x=\"0\" y=\"26\" width={FRAME_W} height=\"18\" fill={PRIMARY_SOFT} />\n <rect x=\"14\" y=\"32\" width=\"14\" height=\"6\" rx=\"1.5\" fill={PRIMARY} />\n <rect x=\"32\" y=\"33\" width=\"32\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"32\" y=\"38\" width=\"22\" height=\"2\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"80\" y=\"33\" width=\"22\" height=\"3\" rx=\"1\" fill={PRIMARY} />\n <text\n x=\"100\"\n y=\"38\"\n fontSize=\"6\"\n fill={PRIMARY}\n fontFamily=\"system-ui\"\n fontWeight=\"700\"\n >\n →\n </text>\n </Frame>\n ),\n ArticleFeatured: (\n <Frame>\n <rect x=\"62\" y=\"14\" width=\"44\" height=\"42\" rx=\"2\" fill={PRIMARY_SOFT} />\n <line x1=\"68\" y1=\"22\" x2=\"100\" y2=\"48\" stroke={PRIMARY} strokeWidth=\"0.4\" opacity=\"0.4\" />\n <line x1=\"100\" y1=\"22\" x2=\"68\" y2=\"48\" stroke={PRIMARY} strokeWidth=\"0.4\" opacity=\"0.4\" />\n <rect x=\"14\" y=\"14\" width=\"20\" height=\"4\" rx=\"1\" fill={PRIMARY} />\n <rect x=\"14\" y=\"22\" width=\"40\" height=\"5\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"14\" y=\"30\" width=\"44\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"34\" width=\"38\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"42\" width=\"32\" height=\"2\" rx=\"1\" fill={MUTED} opacity=\"0.7\" />\n <rect x=\"14\" y=\"50\" width=\"22\" height=\"6\" rx=\"1.5\" fill={PRIMARY} />\n </Frame>\n ),\n ArticleGrid: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect\n x={x}\n y=\"12\"\n width=\"32\"\n height=\"48\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <rect x={x} y=\"12\" width=\"32\" height=\"20\" rx=\"2\" fill={PRIMARY_SOFT} />\n <rect x={x + 4} y=\"36\" width=\"10\" height=\"2\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x={x + 4} y=\"40\" width=\"22\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x={x + 4} y=\"46\" width=\"20\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x + 4} y=\"49\" width=\"18\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x + 4} y=\"55\" width=\"14\" height=\"1.5\" rx=\"0.5\" fill={MUTED} opacity=\"0.7\" />\n </g>\n ))}\n </Frame>\n ),\n ArticleList: (\n <Frame>\n {[14, 28, 42, 56].map((y, i) => (\n <g key={i}>\n <line\n x1=\"14\"\n y1={y - 3}\n x2=\"106\"\n y2={y - 3}\n stroke={BORDER}\n strokeWidth=\"0.5\"\n />\n <rect x=\"14\" y={y} width=\"14\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"34\" y={y - 1} width=\"10\" height=\"2\" rx=\"1\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"48\" y={y - 1} width=\"50\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <text x=\"106\" y={y + 1} fontSize=\"6\" fill={MUTED} textAnchor=\"end\" fontFamily=\"system-ui\">→</text>\n </g>\n ))}\n </Frame>\n ),\n IconCards: (\n <Frame>\n {[\n [10, 12], [38, 12], [66, 12], [94, 12],\n ].map(([x, y], i) => (\n <g key={i}>\n <rect\n x={x - 4}\n y={y}\n width=\"24\"\n height=\"46\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <rect x={x - 1} y={y + 4} width=\"10\" height=\"10\" rx=\"2\" fill={PRIMARY_SOFT} />\n <circle cx={x + 4} cy={y + 9} r=\"2.5\" fill={PRIMARY} />\n <rect x={x - 1} y={y + 18} width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x={x - 1} y={y + 24} width=\"16\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x - 1} y={y + 28} width=\"14\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n MetricCards: (\n <Frame>\n {[\n [10, 12], [38, 12], [66, 12], [94, 12],\n ].map(([x, y], i) => (\n <g key={i}>\n <rect\n x={x - 4}\n y={y}\n width=\"24\"\n height=\"46\"\n rx=\"2\"\n fill={CARD}\n stroke={BORDER}\n strokeWidth=\"0.6\"\n />\n <text\n x={x + 8}\n y={y + 18}\n fontSize=\"11\"\n fontWeight=\"800\"\n fill={PRIMARY}\n textAnchor=\"middle\"\n fontFamily=\"system-ui\"\n >\n {['80%', '8wk', '4.8', '0'][i]}\n </text>\n <rect x={x - 1} y={y + 25} width=\"20\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x={x - 1} y={y + 29} width=\"16\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect\n x={x}\n y={y + 36}\n width=\"14\"\n height=\"5\"\n rx=\"1.5\"\n fill=\"#DCFCE7\"\n opacity={i % 2 === 0 ? 1 : 0.5}\n />\n </g>\n ))}\n </Frame>\n ),\n ImageOverlayCards: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <defs>\n <linearGradient id={`oc-grad-${i}`} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={PRIMARY} stopOpacity=\"0.3\" />\n <stop offset=\"100%\" stopColor=\"#0F172A\" />\n </linearGradient>\n </defs>\n <rect x={x} y=\"12\" width=\"32\" height=\"48\" rx=\"2\" fill={`url(#oc-grad-${i})`} />\n <rect x={x + 4} y=\"38\" width=\"10\" height=\"2\" rx=\"1\" fill={ACCENT} />\n <rect x={x + 4} y=\"44\" width=\"22\" height=\"3\" rx=\"1\" fill=\"#ffffff\" />\n <rect x={x + 4} y=\"50\" width=\"20\" height=\"1.5\" rx=\"0.5\" fill=\"#ffffff\" opacity=\"0.85\" />\n <rect x={x + 4} y=\"53\" width=\"14\" height=\"1.5\" rx=\"0.5\" fill=\"#ffffff\" opacity=\"0.85\" />\n </g>\n ))}\n </Frame>\n ),\n PricingTable: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect x={x} y=\"10\" width=\"32\" height=\"50\" rx=\"2\" fill={i === 1 ? PRIMARY : CARD} stroke={BORDER} strokeWidth=\"0.6\" />\n <rect x={x + 4} y=\"14\" width=\"14\" height=\"2\" rx=\"1\" fill={i === 1 ? '#fff' : MUTED} />\n <rect x={x + 4} y=\"20\" width=\"18\" height=\"6\" rx=\"1.5\" fill={i === 1 ? '#fff' : TEXT} />\n {[32, 38, 44].map((y, j) => (\n <rect key={j} x={x + 4} y={y} width=\"22\" height=\"1.5\" rx=\"0.5\" fill={i === 1 ? '#fff' : MUTED} opacity={i === 1 ? 0.9 : 0.7} />\n ))}\n <rect x={x + 4} y=\"52\" width=\"22\" height=\"5\" rx=\"1.5\" fill={i === 1 ? '#fff' : PRIMARY} />\n </g>\n ))}\n </Frame>\n ),\n PricingComparison: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"100\" height=\"6\" fill={PRIMARY_SOFT} />\n <rect x=\"14\" y=\"16\" width=\"22\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"42\" y=\"16\" width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"62\" y=\"16\" width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"82\" y=\"16\" width=\"14\" height=\"2\" rx=\"1\" fill={TEXT} />\n {[26, 34, 42, 50].map((y, i) => (\n <g key={i}>\n <rect x=\"14\" y={y} width=\"22\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n {[42, 62, 82].map((cx, j) => (\n <text key={j} x={cx + 7} y={y + 2} fontSize=\"5\" fill={(i + j) % 2 ? PRIMARY : MUTED} textAnchor=\"middle\" fontFamily=\"system-ui\">\n {(i + j) % 2 ? '✓' : '·'}\n </text>\n ))}\n </g>\n ))}\n </Frame>\n ),\n AwardsBar: (\n <Frame>\n {[24, 60, 96].map((x, i) => (\n <g key={i}>\n <circle cx={x} cy=\"22\" r=\"6\" fill={ACCENT} opacity=\"0.85\" />\n <rect x={x - 12} y=\"32\" width=\"24\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <rect x={x - 8} y=\"38\" width=\"16\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x - 5} y=\"44\" width=\"10\" height=\"1.5\" rx=\"0.5\" fill={MUTED} opacity=\"0.6\" />\n </g>\n ))}\n </Frame>\n ),\n CountUpStats: (\n <Frame soft>\n {[24, 60, 96].map((x, i) => (\n <g key={i}>\n <text x={x} y=\"28\" fontSize=\"14\" fontWeight=\"800\" fill={PRIMARY} textAnchor=\"middle\" fontFamily=\"system-ui\">{['80', '50', '14'][i]}{['%', '+', ''][i]}</text>\n <rect x={x - 16} y=\"36\" width=\"32\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x - 12} y=\"42\" width=\"24\" height=\"2\" rx=\"1\" fill={MUTED} opacity=\"0.7\" />\n </g>\n ))}\n </Frame>\n ),\n ImageGallery: (\n <Frame>\n {[\n [10, 12, 32, 22], [44, 12, 32, 22], [78, 12, 32, 22],\n [10, 36, 32, 22], [44, 36, 32, 22], [78, 36, 32, 22],\n ].map(([x, y, w, h], i) => (\n <rect key={i} x={x} y={y} width={w} height={h} rx=\"2\" fill={PRIMARY_SOFT} stroke={BORDER} strokeWidth=\"0.5\" />\n ))}\n </Frame>\n ),\n ImageCaption: (\n <Frame>\n <rect x=\"20\" y=\"12\" width=\"80\" height=\"34\" rx=\"2\" fill={PRIMARY_SOFT} stroke={BORDER} strokeWidth=\"0.6\" />\n <line x1=\"30\" y1=\"20\" x2=\"90\" y2=\"38\" stroke={PRIMARY} strokeWidth=\"0.4\" opacity=\"0.4\" />\n <line x1=\"90\" y1=\"20\" x2=\"30\" y2=\"38\" stroke={PRIMARY} strokeWidth=\"0.4\" opacity=\"0.4\" />\n <rect x=\"34\" y=\"52\" width=\"52\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"42\" y=\"56\" width=\"36\" height=\"2\" rx=\"1\" fill={MUTED} opacity=\"0.7\" />\n </Frame>\n ),\n InlineCTA: (\n <Frame soft>\n <rect x=\"10\" y=\"22\" width=\"100\" height=\"26\" rx=\"3\" fill={CARD} stroke={BORDER} strokeWidth=\"0.6\" />\n <rect x=\"16\" y=\"28\" width=\"50\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"16\" y=\"36\" width=\"58\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"80\" y=\"30\" width=\"24\" height=\"10\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n AnnouncementBar: (\n <Frame>\n <rect x=\"0\" y=\"20\" width={FRAME_W} height=\"14\" fill=\"#0F172A\" />\n <rect x=\"30\" y=\"25\" width=\"38\" height=\"2\" rx=\"1\" fill=\"#ffffff\" />\n <rect x=\"72\" y=\"25\" width=\"22\" height=\"2\" rx=\"1\" fill={ACCENT} />\n </Frame>\n ),\n Quote: (\n <Frame>\n <text x=\"14\" y=\"24\" fontSize=\"14\" fontFamily=\"Georgia\" fill={PRIMARY} opacity=\"0.6\">\"</text>\n <rect x=\"22\" y=\"24\" width=\"80\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"22\" y=\"32\" width=\"74\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"22\" y=\"40\" width=\"58\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x=\"22\" y=\"50\" width=\"22\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n CodeBlock: (\n <Frame>\n <rect x=\"10\" y=\"12\" width=\"100\" height=\"48\" rx=\"2\" fill=\"#0F172A\" />\n <rect x=\"10\" y=\"12\" width=\"100\" height=\"8\" fill=\"#1E293B\" />\n <rect x=\"14\" y=\"14\" width=\"20\" height=\"3\" rx=\"0.5\" fill={MUTED} />\n <text x=\"14\" y=\"29\" fontSize=\"6\" fill=\"#7DD3FC\" fontFamily=\"ui-monospace, monospace\">$ make</text>\n <text x=\"14\" y=\"38\" fontSize=\"6\" fill=\"#86EFAC\" fontFamily=\"ui-monospace, monospace\"> build</text>\n <text x=\"14\" y=\"47\" fontSize=\"6\" fill=\"#FCA5A5\" fontFamily=\"ui-monospace, monospace\"> deploy</text>\n <text x=\"14\" y=\"56\" fontSize=\"6\" fill=\"#E2E8F0\" fontFamily=\"ui-monospace, monospace\">{`{ ok: true }`}</text>\n </Frame>\n ),\n KeyValueList: (\n <Frame>\n {[18, 30, 42, 54].map((y, i) => (\n <g key={i}>\n <line x1=\"14\" y1={y - 6} x2=\"106\" y2={y - 6} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y={y - 2} width=\"28\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"50\" y={y - 2} width=\"50\" height=\"2\" rx=\"1\" fill={TEXT} />\n </g>\n ))}\n </Frame>\n ),\n StepsVertical: (\n <Frame>\n <line x1=\"22\" y1=\"14\" x2=\"22\" y2=\"58\" stroke={BORDER} strokeWidth=\"0.6\" />\n {[16, 32, 48].map((y, i) => (\n <g key={i}>\n <circle cx=\"22\" cy={y} r=\"5\" fill={PRIMARY_SOFT} stroke={PRIMARY} strokeWidth=\"0.7\" />\n <text x=\"22\" y={y + 1.5} fontSize=\"5\" fontWeight=\"700\" fill={PRIMARY} textAnchor=\"middle\" fontFamily=\"system-ui\">{i + 1}</text>\n <rect x=\"34\" y={y - 2} width=\"28\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"34\" y={y + 4} width=\"48\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n TabsBlock: (\n <Frame>\n <rect x=\"14\" y=\"14\" width=\"20\" height=\"6\" rx=\"1\" fill={PRIMARY} />\n <rect x=\"36\" y=\"14\" width=\"20\" height=\"6\" rx=\"1\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"58\" y=\"14\" width=\"20\" height=\"6\" rx=\"1\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <line x1=\"14\" y1=\"22\" x2=\"106\" y2=\"22\" stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"28\" width=\"78\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"34\" width=\"86\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"40\" width=\"80\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"46\" width=\"60\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n AccordionBlock: (\n <Frame>\n {[14, 30, 46].map((y, i) => (\n <g key={i}>\n <rect x=\"14\" y={y} width=\"92\" height=\"10\" rx=\"2\" fill={i === 0 ? PRIMARY_SOFT : CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"20\" y={y + 4} width=\"44\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n <text x=\"100\" y={y + 7} fontSize=\"6\" fill={MUTED} textAnchor=\"middle\" fontFamily=\"system-ui\">{i === 0 ? '−' : '+'}</text>\n {i === 0 && (\n <>\n <rect x=\"20\" y={y + 12} width=\"68\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <rect x=\"20\" y={y + 16} width=\"60\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n </>\n )}\n </g>\n ))}\n </Frame>\n ),\n SocialLinks: (\n <Frame>\n <rect x=\"40\" y=\"22\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n {[42, 54, 66, 78].map((x, i) => (\n <circle key={i} cx={x} cy=\"42\" r=\"5\" fill={PRIMARY_SOFT} stroke={PRIMARY} strokeWidth=\"0.5\" />\n ))}\n </Frame>\n ),\n ContactInfo: (\n <Frame>\n <rect x=\"10\" y=\"14\" width=\"100\" height=\"46\" rx=\"2\" fill={CARD} stroke={BORDER} strokeWidth=\"0.6\" />\n {[[18, 22], [62, 22], [18, 42], [62, 42]].map(([x, y], i) => (\n <g key={i}>\n <circle cx={x + 4} cy={y + 4} r=\"2.5\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x={x + 10} y={y} width=\"14\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x + 10} y={y + 4} width=\"22\" height=\"2.5\" rx=\"1\" fill={TEXT} />\n </g>\n ))}\n </Frame>\n ),\n MapEmbed: (\n <Frame>\n <rect x=\"10\" y=\"12\" width=\"100\" height=\"44\" rx=\"2\" fill=\"#DCFCE7\" stroke={BORDER} strokeWidth=\"0.5\" />\n <path d=\"M 14 28 Q 30 14 50 28 T 90 28 L 106 22\" stroke={MUTED} strokeWidth=\"0.5\" fill=\"none\" />\n <path d=\"M 14 42 Q 40 32 70 44 L 106 38\" stroke={MUTED} strokeWidth=\"0.5\" fill=\"none\" />\n <circle cx=\"60\" cy=\"32\" r=\"3\" fill=\"#DC2626\" />\n <path d=\"M 60 35 L 58 40 L 62 40 Z\" fill=\"#DC2626\" />\n </Frame>\n ),\n EventsList: (\n <Frame>\n {[14, 30, 46].map((y, i) => (\n <g key={i}>\n <rect x=\"14\" y={y} width=\"92\" height=\"11\" rx=\"2\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"18\" y={y + 2} width=\"14\" height=\"7\" rx=\"1\" fill={PRIMARY_SOFT} />\n <text x=\"25\" y={y + 7} fontSize=\"4\" fontWeight=\"700\" fill={PRIMARY} textAnchor=\"middle\" fontFamily=\"system-ui\">{['MAR', 'APR', 'MAY'][i]}</text>\n <rect x=\"36\" y={y + 3} width=\"40\" height=\"2\" rx=\"1\" fill={TEXT} />\n <rect x=\"36\" y={y + 7} width=\"50\" height=\"1.5\" rx=\"0.5\" fill={MUTED} />\n <text x=\"100\" y={y + 7} fontSize=\"5\" fill={PRIMARY} textAnchor=\"middle\" fontFamily=\"system-ui\">→</text>\n </g>\n ))}\n </Frame>\n ),\n Divider: (\n <Frame>\n <line x1=\"14\" y1=\"35\" x2=\"50\" y2=\"35\" stroke={BORDER} strokeWidth=\"0.8\" />\n <text x=\"60\" y=\"38\" fontSize=\"6\" fill={MUTED} textAnchor=\"middle\" fontWeight=\"700\" fontFamily=\"system-ui\">— OR —</text>\n <line x1=\"70\" y1=\"35\" x2=\"106\" y2=\"35\" stroke={BORDER} strokeWidth=\"0.8\" />\n </Frame>\n ),\n ThreeColumn: (\n <Frame>\n {[10, 44, 78].map((x, i) => (\n <g key={i}>\n <rect x={x} y=\"14\" width=\"32\" height=\"3.5\" rx=\"1\" fill={TEXT} />\n <rect x={x} y=\"22\" width=\"28\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"26\" width=\"32\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"30\" width=\"26\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"34\" width=\"30\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x={x} y=\"38\" width=\"22\" height=\"2\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n </Frame>\n ),\n PressMentions: (\n <Frame soft>\n <rect x=\"40\" y=\"14\" width=\"40\" height=\"2\" rx=\"1\" fill={MUTED} />\n {[20, 50, 80].map((cx, i) => (\n <text key={i} x={cx} y=\"42\" fontSize=\"9\" fontFamily=\"Georgia\" fontStyle=\"italic\" fontWeight=\"600\" fill={MUTED} textAnchor=\"middle\">{['Forbes', 'WSJ', 'TechCrunch'][i]}</text>\n ))}\n </Frame>\n ),\n Container: (\n <Frame>\n <rect x=\"14\" y=\"14\" width=\"92\" height=\"46\" rx=\"3\" fill={PRIMARY_SOFT} stroke={PRIMARY} strokeWidth=\"0.5\" strokeDasharray=\"2 2\" />\n <rect x=\"22\" y=\"22\" width=\"20\" height=\"2.5\" rx=\"1\" fill={PRIMARY} />\n <rect x=\"22\" y=\"30\" width=\"60\" height=\"4\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"22\" y=\"40\" width=\"76\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"22\" y=\"44\" width=\"68\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"22\" y=\"48\" width=\"50\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n\n // ── Form blocks ──────────────────────────────────────────────────────────\n FormContact: (\n <Frame>\n <rect x=\"14\" y=\"9\" width=\"46\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"17\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"17\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"27\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"27\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"37\" width=\"92\" height=\"18\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"59\" width=\"28\" height=\"8\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n FormLeadCapture: (\n <Frame>\n <rect x=\"14\" y=\"9\" width=\"52\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"17\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"17\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"27\" width=\"92\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"100\" y=\"31.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"14\" y=\"37\" width=\"92\" height=\"6\" rx=\"1.5\" fill={PRIMARY_SOFT} stroke={PRIMARY} strokeWidth=\"0.5\" opacity=\"0.7\" />\n <rect x=\"17\" y=\"39.5\" width=\"14\" height=\"2.5\" rx=\"1\" fill={PRIMARY} opacity=\"0.8\" />\n <rect x=\"33\" y=\"39.5\" width=\"18\" height=\"2.5\" rx=\"1\" fill={PRIMARY} opacity=\"0.8\" />\n <rect x=\"14\" y=\"47\" width=\"92\" height=\"11\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"62\" width=\"32\" height=\"6\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n FormNewsletter: (\n <Frame soft>\n <rect x=\"28\" y=\"9\" width=\"64\" height=\"4\" rx=\"1.5\" fill={TEXT} />\n <rect x=\"28\" y=\"17\" width=\"60\" height=\"2.5\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"28\" width=\"60\" height=\"8\" rx=\"2\" fill={CARD} stroke={BORDER} strokeWidth=\"0.6\" />\n <rect x=\"78\" y=\"28\" width=\"28\" height=\"8\" rx=\"2\" fill={PRIMARY} />\n <rect x=\"14\" y=\"42\" width=\"5\" height=\"5\" rx=\"1\" fill={CARD} stroke={BORDER} strokeWidth=\"0.6\" />\n <rect x=\"22\" y=\"43\" width=\"50\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"22\" y=\"48\" width=\"38\" height=\"2\" rx=\"1\" fill={MUTED} />\n </Frame>\n ),\n FormFeedback: (\n <Frame>\n <rect x=\"14\" y=\"9\" width=\"44\" height=\"3\" rx=\"1\" fill={TEXT} />\n {[14, 22, 30, 38, 46].map((x, i) => (\n <text key={i} x={x} y=\"22\" fontSize=\"8\" fill={i < 4 ? ACCENT : BORDER} fontFamily=\"system-ui\">★</text>\n ))}\n <rect x=\"14\" y=\"28\" width=\"92\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"100\" y=\"32.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"14\" y=\"38\" width=\"92\" height=\"18\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"60\" width=\"30\" height=\"7\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n FormSurvey: (\n <Frame>\n <rect x=\"14\" y=\"9\" width=\"40\" height=\"3\" rx=\"1\" fill={TEXT} />\n {[14, 22, 30, 38, 46].map((x, i) => (\n <text key={i} x={x} y=\"21\" fontSize=\"8\" fill={i < 3 ? ACCENT : BORDER} fontFamily=\"system-ui\">★</text>\n ))}\n {[27, 35, 43, 51].map((y, i) => (\n <g key={i}>\n <circle cx=\"19\" cy={y} r=\"2.5\" fill={i === 0 ? PRIMARY_SOFT : CARD} stroke={i === 0 ? PRIMARY : BORDER} strokeWidth=\"0.7\" />\n {i === 0 && <circle cx=\"19\" cy={y} r=\"1.2\" fill={PRIMARY} />}\n <rect x=\"25\" y={y - 1.5} width=\"30\" height=\"2.5\" rx=\"1\" fill={MUTED} />\n </g>\n ))}\n <rect x=\"14\" y=\"57\" width=\"92\" height=\"10\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n </Frame>\n ),\n FormBooking: (\n <Frame>\n <rect x=\"14\" y=\"9\" width=\"36\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"17\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"17\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"27\" width=\"92\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"37\" width=\"42\" height=\"6\" rx=\"1.5\" fill={PRIMARY_SOFT} stroke={PRIMARY} strokeWidth=\"0.5\" opacity=\"0.8\" />\n <rect x=\"16\" y=\"39\" width=\"8\" height=\"4\" rx=\"0.5\" fill={PRIMARY} opacity=\"0.7\" />\n <rect x=\"62\" y=\"37\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"100\" y=\"41.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"14\" y=\"47\" width=\"92\" height=\"12\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"63\" width=\"30\" height=\"6\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n FormRegistration: (\n <Frame>\n <rect x=\"14\" y=\"8\" width=\"50\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"16\" width=\"42\" height=\"5.5\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"16\" width=\"44\" height=\"5.5\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"25\" width=\"42\" height=\"5.5\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"25\" width=\"44\" height=\"5.5\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"34\" width=\"42\" height=\"5.5\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"49\" y=\"38.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"62\" y=\"34\" width=\"44\" height=\"5.5\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"100\" y=\"38.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"14\" y=\"43\" width=\"92\" height=\"5.5\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"100\" y=\"47.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"14\" y=\"53\" width=\"92\" height=\"8\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"63\" width=\"28\" height=\"6\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n FormQuoteRequest: (\n <Frame>\n <rect x=\"14\" y=\"9\" width=\"44\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"17\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"17\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"27\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"49\" y=\"31.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"62\" y=\"27\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"100\" y=\"31.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"14\" y=\"37\" width=\"92\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"100\" y=\"41.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"14\" y=\"47\" width=\"92\" height=\"14\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"63\" width=\"30\" height=\"5\" rx=\"1.5\" fill={PRIMARY} />\n </Frame>\n ),\n FormApplication: (\n <Frame>\n <rect x=\"14\" y=\"9\" width=\"36\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"17\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"17\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"27\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"27\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"37\" width=\"92\" height=\"12\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"53\" width=\"92\" height=\"11\" rx=\"2\" fill={PRIMARY_SOFT} stroke={PRIMARY} strokeWidth=\"0.5\" strokeDasharray=\"2 2\" />\n <text x=\"38\" y=\"61\" fontSize=\"6\" fill={PRIMARY} fontFamily=\"system-ui\" opacity=\"0.85\">↑ Upload CV</text>\n </Frame>\n ),\n FormSupport: (\n <Frame>\n <rect x=\"14\" y=\"9\" width=\"52\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"17\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"17\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"27\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"49\" y=\"31.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"62\" y=\"27\" width=\"44\" height=\"6\" rx=\"1.5\" fill={ACCENT} opacity=\"0.15\" stroke={ACCENT} strokeWidth=\"0.5\" />\n <rect x=\"65\" y=\"29.5\" width=\"18\" height=\"2\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"37\" width=\"92\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"47\" width=\"92\" height=\"16\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"65\" width=\"28\" height=\"5\" rx=\"1.5\" fill={PRIMARY} />\n </Frame>\n ),\n FormWaitlist: (\n <Frame soft>\n <rect x=\"14\" y=\"9\" width=\"44\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"15\" width=\"70\" height=\"2.5\" rx=\"1\" fill={MUTED} />\n <rect x=\"14\" y=\"23\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"23\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"33\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"33\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"100\" y=\"37.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"14\" y=\"43\" width=\"92\" height=\"14\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"61\" width=\"28\" height=\"7\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n FormAddress: (\n <Frame>\n <rect x=\"14\" y=\"9\" width=\"38\" height=\"3\" rx=\"1\" fill={TEXT} />\n <rect x=\"14\" y=\"17\" width=\"92\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"27\" width=\"92\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"37\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"62\" y=\"37\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"47\" width=\"42\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <text x=\"49\" y=\"51.5\" fontSize=\"5\" fill={MUTED} fontFamily=\"system-ui\">▼</text>\n <rect x=\"62\" y=\"47\" width=\"44\" height=\"6\" rx=\"1.5\" fill={CARD} stroke={BORDER} strokeWidth=\"0.5\" />\n <rect x=\"14\" y=\"57\" width=\"28\" height=\"8\" rx=\"2\" fill={PRIMARY} />\n </Frame>\n ),\n };\n}\n\nexport const BLOCK_DESCRIPTIONS = {\n Hero: 'Eyebrow, large heading, lede, and two CTAs. The opening section of any page.',\n SectionHeader: 'Eyebrow + heading + lede that introduces a major section.',\n StatsStrip: 'Horizontal row of 3–5 stat cards (number + label).',\n RichText: 'Body copy with HTML formatting — paragraphs, lists, links, headings.',\n PillarsRow: '2–4 column grid of icon + title + body cards.',\n ApproachSteps: 'Numbered step-by-step breakdown (e.g. 01 Diagnose / 02 Design).',\n ServicesGrid: 'Auto-rendered grid of all (or first N) service capability cards.',\n CTABanner: 'Full-width call-to-action with tagline, heading, body, and button.',\n PrinciplesList: 'Two-column layout: heading on the left, checkmark bullet list on the right.',\n TwoColumn: 'Generic side-by-side text columns with editable headings + body.',\n ContactSection: 'Hero + sidebar info cards + lead-capture form. Drops a working contact section in one block.',\n Spacer: 'Pure vertical whitespace between blocks.',\n RawHtml: 'Escape hatch — paste in any HTML when you need something the library doesn’t cover.',\n ImageText: 'Image on one side, eyebrow + heading + body + CTA on the other. Flip the image side per section.',\n VideoEmbed: 'Responsive YouTube or Vimeo embed with optional caption.',\n LogoStrip: '\"Trusted by\" row of client/partner logos. Falls back to brand-name text when no image is set.',\n TestimonialQuote: 'One large pull-quote with author photo, name, role, and company.',\n TestimonialGrid: '2- or 3-column grid of testimonial cards. Use for multi-voice social proof.',\n FAQ: 'Accordion of question / answer items. HTML allowed in answers; one open at a time.',\n Timeline: 'Vertical chronological list — date + title + body. Useful for company history or \"what happens next\".',\n NewsletterSignup: 'Single-field email capture. Submits to the leads endpoint with source=\"newsletter\".',\n TeamGrid: '2/3/4-column team cards with photo, role, short bio, and LinkedIn link.',\n Banner: 'Full-width announcement strip — info / success / warning / dark variants. Optional CTA link.',\n ArticleFeatured: 'Hero-style featured article — large image + tag + headline + excerpt + byline + CTA.',\n ArticleGrid: '2- or 3-column article cards (cover + tag + headline + excerpt + byline).',\n ArticleList: 'Text-heavy article list (date + tag + headline + excerpt). Best for archives.',\n IconCards: 'Compact icon + title + 1-line body cards. 2/3/4-col layouts.',\n MetricCards: 'Big-number cards with optional trend arrow + delta. The \"by the numbers\" section.',\n ImageOverlayCards: 'Full-bleed image cards with text overlay. Click-through \"category\" / \"explore\" pattern.',\n PricingTable: '3-tier pricing cards with feature lists and per-tier CTAs. Highlight one tier as popular.',\n PricingComparison: 'Feature × tier comparison table — checkmarks/Xs or values per cell.',\n AwardsBar: 'Row of certifications/awards with title + body + year. Trust signals for accreditations.',\n CountUpStats: 'Animated stat counters that tick from 0 to value when scrolled into view.',\n ImageGallery: 'Photo grid with click-to-enlarge lightbox. 2/3/4-col layouts.',\n ImageCaption: 'Single image with caption and optional photo credit.',\n InlineCTA: 'Compact one-line CTA strip — sits between content sections without dominating.',\n AnnouncementBar: 'Slim full-width strip for announcements, beta access, event invites — dark / primary / accent variants.',\n Quote: 'Editorial pull-quote with optional attribution. Left-bordered or centered.',\n CodeBlock: 'Monospace code snippet with title bar and language label.',\n KeyValueList: 'Definition list / specs table — for \"what\\'s included\", deal terms, technical specs.',\n StepsVertical: 'Large vertical numbered steps with title + body. Heavier than ApproachSteps.',\n TabsBlock: 'Tabbed content panel — switch between named sections of HTML content.',\n AccordionBlock: 'Generic accordion (one or many open). For multi-section content beyond strict FAQ.',\n SocialLinks: 'Row of social-network icon links — LinkedIn, X, YouTube, etc.',\n ContactInfo: 'Office address + email + phone + hours card. No form, just info.',\n MapEmbed: 'Google Maps iframe embed with caption.',\n EventsList: 'Upcoming events with date pill + title + venue + RSVP CTA.',\n Divider: 'Horizontal divider with optional centered label. Hairline / dashed / thick / dot styles.',\n ThreeColumn: 'Generic 3-col text layout. Lighter than PillarsRow.',\n PressMentions: '\"As featured in\" press logos. Italic serif text fallback when no logos.',\n Container: 'Decorative box (soft / primary / dark / white) wrapping a single titled callout.',\n FormContact: 'Lightweight contact form — name, email, phone, company, message. No hero or sidebar.',\n FormLeadCapture: 'Lead-gen form with journey-stage select, capability multi-select, and notes.',\n FormNewsletter: 'Newsletter signup with name, email, and consent checkbox.',\n FormFeedback: 'Customer feedback — star rating, category select, free-text comment, optional contact.',\n FormSurvey: 'Configurable survey — defaults to NPS-style with rating, recommend radio, and open text.',\n FormBooking: 'Demo / appointment request — name, email, company, date picker, time slot, notes.',\n FormRegistration: 'Event registration — name, contact, role, t-shirt size, dietary select.',\n FormQuoteRequest: 'Quote request — company, project type, budget range, timeline, requirements.',\n FormApplication: 'Job / programme application — contact, LinkedIn, portfolio, role, cover note, CV upload.',\n FormSupport: 'Support ticket — name, email, category, priority, subject, description, attachment.',\n FormWaitlist: 'Product waitlist — name, email, company, role, intended use case.',\n FormAddress: 'Address / location form — name, street, city, state, country select, postal code.',\n};\n\nexport default function BlockThumbnail({ name }) {\n const colors = useThemeColors();\n const previews = getPreviews(colors);\n if (previews[name]) return previews[name];\n // Fallback for an unmapped block — a plain framed label, themed to match.\n return (\n <svg\n viewBox={`0 0 ${FRAME_W} ${FRAME_H}`}\n width=\"100%\"\n height=\"auto\"\n preserveAspectRatio=\"xMidYMid meet\"\n style={{ display: 'block', borderRadius: 4 }}\n >\n <rect\n x=\"0.5\"\n y=\"0.5\"\n width={FRAME_W - 1}\n height={FRAME_H - 1}\n rx=\"3\"\n fill={colors.BG}\n stroke={colors.BORDER}\n strokeWidth=\"1\"\n />\n <text\n x=\"60\"\n y=\"40\"\n fontSize=\"8\"\n fill={colors.MUTED}\n textAnchor=\"middle\"\n fontFamily=\"system-ui\"\n >\n {name}\n </text>\n </svg>\n );\n}\n","// Puck config builder. Exports the default block library + a `createPuckConfig`\n// factory so consumers can add their own blocks, replace categories, or strip\n// the library down to what they actually need.\n//\n// Adding a block: drop the file under `src/blocks/`, import it here, add it\n// to `defaultBlocks` + (optionally) a category. Consumers who want to extend\n// the library do the same with their own files and pass them via `blocks:`.\n\nimport { Hero } from './blocks/Hero';\nimport { StatsStrip } from './blocks/StatsStrip';\nimport { SectionHeader } from './blocks/SectionHeader';\nimport { RichText } from './blocks/RichText';\nimport { PillarsRow } from './blocks/PillarsRow';\nimport { ApproachSteps } from './blocks/ApproachSteps';\nimport { ServicesGrid } from './blocks/ServicesGrid';\nimport { CTABanner } from './blocks/CTABanner';\nimport { PrinciplesList } from './blocks/PrinciplesList';\nimport { TwoColumn } from './blocks/TwoColumn';\nimport { Spacer } from './blocks/Spacer';\nimport { RawHtml } from './blocks/RawHtml';\nimport { ContactSection } from './blocks/ContactSection';\nimport { ImageText } from './blocks/ImageText';\nimport { VideoEmbed } from './blocks/VideoEmbed';\nimport { LogoStrip } from './blocks/LogoStrip';\nimport { TestimonialQuote } from './blocks/TestimonialQuote';\nimport { TestimonialGrid } from './blocks/TestimonialGrid';\nimport { FAQ } from './blocks/FAQ';\nimport { Timeline } from './blocks/Timeline';\nimport { NewsletterSignup } from './blocks/NewsletterSignup';\nimport { TeamGrid } from './blocks/TeamGrid';\nimport { Banner } from './blocks/Banner';\nimport { ArticleFeatured } from './blocks/ArticleFeatured';\nimport { ArticleGrid } from './blocks/ArticleGrid';\nimport { ArticleList } from './blocks/ArticleList';\nimport { IconCards } from './blocks/IconCards';\nimport { MetricCards } from './blocks/MetricCards';\nimport { ImageOverlayCards } from './blocks/ImageOverlayCards';\nimport { PricingTable } from './blocks/PricingTable';\nimport { PricingComparison } from './blocks/PricingComparison';\nimport { AwardsBar } from './blocks/AwardsBar';\nimport { CountUpStats } from './blocks/CountUpStats';\nimport { ImageGallery } from './blocks/ImageGallery';\nimport { ImageCaption } from './blocks/ImageCaption';\nimport { InlineCTA } from './blocks/InlineCTA';\nimport { AnnouncementBar } from './blocks/AnnouncementBar';\nimport { Quote } from './blocks/Quote';\nimport { CodeBlock } from './blocks/CodeBlock';\nimport { KeyValueList } from './blocks/KeyValueList';\nimport { StepsVertical } from './blocks/StepsVertical';\nimport { TabsBlock } from './blocks/Tabs';\nimport { AccordionBlock } from './blocks/AccordionBlock';\nimport { SocialLinks } from './blocks/SocialLinks';\nimport { ContactInfo } from './blocks/ContactInfo';\nimport { MapEmbed } from './blocks/MapEmbed';\nimport { FormContact } from './blocks/FormContact';\nimport { FormLeadCapture } from './blocks/FormLeadCapture';\nimport { FormNewsletter } from './blocks/FormNewsletter';\nimport { FormFeedback } from './blocks/FormFeedback';\nimport { FormSurvey } from './blocks/FormSurvey';\nimport { FormBooking } from './blocks/FormBooking';\nimport { FormRegistration } from './blocks/FormRegistration';\nimport { FormQuoteRequest } from './blocks/FormQuoteRequest';\nimport { FormApplication } from './blocks/FormApplication';\nimport { FormSupport } from './blocks/FormSupport';\nimport { FormWaitlist } from './blocks/FormWaitlist';\nimport { FormAddress } from './blocks/FormAddress';\nimport { EventsList } from './blocks/EventsList';\nimport { Divider } from './blocks/Divider';\nimport { ThreeColumn } from './blocks/ThreeColumn';\nimport { PressMentions } from './blocks/PressMentions';\nimport { Container } from './blocks/Container';\nimport { withReveal } from './withReveal';\nimport { withTheme } from './withTheme';\nimport BlockThumbnail, { BLOCK_DESCRIPTIONS } from './BlockThumbnail';\n\n// Default reveal animation per block. Heavier \"section\" blocks fade up;\n// secondary cards/grids do a gentler scale-in. Layout primitives stay static.\nconst DEFAULT_REVEAL = {\n Hero: 'fade-up',\n SectionHeader: 'fade-up',\n CTABanner: 'fade-up',\n Banner: null,\n RichText: 'fade-up',\n PrinciplesList: 'fade-up',\n TwoColumn: 'fade-up',\n ImageText: 'fade-up',\n StatsStrip: 'scale-in',\n PillarsRow: 'fade-up',\n ApproachSteps: 'fade-up',\n ServicesGrid: 'fade-up',\n TeamGrid: 'fade-up',\n LogoStrip: 'scale-in',\n TestimonialQuote: 'fade-up',\n TestimonialGrid: 'fade-up',\n FAQ: 'fade-up',\n Timeline: 'fade-up',\n VideoEmbed: 'scale-in',\n ContactSection: 'fade-up',\n NewsletterSignup: 'fade-up',\n FormContact: 'fade-up',\n FormLeadCapture: 'fade-up',\n FormNewsletter: 'fade-up',\n FormFeedback: 'fade-up',\n FormSurvey: 'fade-up',\n FormBooking: 'fade-up',\n FormRegistration: 'fade-up',\n FormQuoteRequest: 'fade-up',\n FormApplication: 'fade-up',\n FormSupport: 'fade-up',\n FormWaitlist: 'fade-up',\n FormAddress: 'fade-up',\n ArticleFeatured: 'fade-up',\n ArticleGrid: 'fade-up',\n ArticleList: 'fade-up',\n IconCards: 'fade-up',\n MetricCards: 'fade-up',\n ImageOverlayCards: 'fade-up',\n PricingTable: 'fade-up',\n PricingComparison: 'fade-up',\n AwardsBar: 'fade-up',\n CountUpStats: 'fade-up',\n ImageGallery: 'fade-up',\n ImageCaption: 'fade-up',\n InlineCTA: 'fade-up',\n AnnouncementBar: null,\n Quote: 'fade-up',\n CodeBlock: 'fade-up',\n KeyValueList: 'fade-up',\n StepsVertical: 'fade-up',\n TabsBlock: 'fade-up',\n AccordionBlock: 'fade-up',\n SocialLinks: 'scale-in',\n ContactInfo: 'fade-up',\n MapEmbed: 'fade-up',\n EventsList: 'fade-up',\n Divider: null,\n ThreeColumn: 'fade-up',\n PressMentions: 'scale-in',\n Container: 'fade-up',\n Spacer: null,\n RawHtml: null,\n};\n\nexport const defaultBlocks = {\n Hero,\n SectionHeader,\n CTABanner,\n Banner,\n RichText,\n PrinciplesList,\n TwoColumn,\n ImageText,\n StatsStrip,\n PillarsRow,\n ApproachSteps,\n ServicesGrid,\n TeamGrid,\n LogoStrip,\n TestimonialQuote,\n TestimonialGrid,\n FAQ,\n Timeline,\n VideoEmbed,\n ContactSection,\n NewsletterSignup,\n FormContact,\n FormLeadCapture,\n FormNewsletter,\n FormFeedback,\n FormSurvey,\n FormBooking,\n FormRegistration,\n FormQuoteRequest,\n FormApplication,\n FormSupport,\n FormWaitlist,\n FormAddress,\n ArticleFeatured,\n ArticleGrid,\n ArticleList,\n IconCards,\n MetricCards,\n ImageOverlayCards,\n PricingTable,\n PricingComparison,\n AwardsBar,\n CountUpStats,\n ImageGallery,\n ImageCaption,\n InlineCTA,\n AnnouncementBar,\n Quote,\n CodeBlock,\n KeyValueList,\n StepsVertical,\n TabsBlock,\n AccordionBlock,\n SocialLinks,\n ContactInfo,\n MapEmbed,\n EventsList,\n Divider,\n ThreeColumn,\n PressMentions,\n Container,\n Spacer,\n RawHtml,\n};\n\n// Sidebar grouping for Puck's components panel. Authors browse by category.\nexport const defaultCategories = {\n 'Page sections': {\n components: ['Hero', 'SectionHeader', 'CTABanner', 'Banner', 'AnnouncementBar', 'InlineCTA'],\n },\n Content: {\n components: ['RichText', 'PrinciplesList', 'TwoColumn', 'ThreeColumn', 'ImageText', 'Quote', 'KeyValueList', 'Container', 'CodeBlock'],\n },\n Cards: {\n components: ['IconCards', 'MetricCards', 'ImageOverlayCards'],\n },\n Pricing: {\n components: ['PricingTable', 'PricingComparison'],\n },\n Lists: {\n components: ['StatsStrip', 'CountUpStats', 'PillarsRow', 'ApproachSteps', 'StepsVertical', 'ServicesGrid', 'TeamGrid'],\n },\n Articles: {\n components: ['ArticleFeatured', 'ArticleGrid', 'ArticleList'],\n },\n Trust: {\n components: ['LogoStrip', 'PressMentions', 'AwardsBar', 'TestimonialQuote', 'TestimonialGrid'],\n },\n Interactive: {\n components: ['FAQ', 'AccordionBlock', 'TabsBlock', 'Timeline', 'EventsList'],\n },\n Media: {\n components: ['VideoEmbed', 'ImageGallery', 'ImageCaption', 'MapEmbed'],\n },\n Forms: {\n components: [\n 'ContactSection',\n 'NewsletterSignup',\n 'ContactInfo',\n 'SocialLinks',\n 'FormContact',\n 'FormLeadCapture',\n 'FormNewsletter',\n 'FormFeedback',\n 'FormSurvey',\n 'FormBooking',\n 'FormRegistration',\n 'FormQuoteRequest',\n 'FormApplication',\n 'FormSupport',\n 'FormWaitlist',\n 'FormAddress',\n ],\n },\n Layout: {\n components: ['Spacer', 'Divider', 'RawHtml'],\n },\n};\n\nfunction prettyName(name) {\n return String(name || '')\n .replace(/([a-z])([A-Z])/g, '$1 $2')\n .replace(/([a-zA-Z])(\\d)/g, '$1 $2');\n}\n\n// Default Puck overrides — replaces the drawer item with our block-card UI\n// (preview + name + description) backed by BlockThumbnail.\nexport const defaultOverrides = {\n drawerItem: ({ name }) => {\n const label = prettyName(name);\n const desc = BLOCK_DESCRIPTIONS[name] || '';\n return (\n <div className=\"tps-block-card\" title={desc}>\n <div className=\"tps-block-card__preview\">\n <BlockThumbnail name={name} />\n </div>\n <div className=\"tps-block-card__text\">\n <div className=\"tps-block-card__name\">{label}</div>\n {desc && <div className=\"tps-block-card__desc\">{desc}</div>}\n </div>\n </div>\n );\n },\n};\n\n// Default empty Puck payload — used when no saved data exists for a page yet.\nexport const emptyPuckData = {\n root: { props: { title: '' } },\n content: [],\n zones: {},\n};\n\n// Puck v0.20 keys every component in content[] by props.id (it's the lookup\n// into indexes.nodes). Seed/CMS payloads that omit ids — or that re-use the\n// same id across instances — cause Layer/DropZoneChild renders to crash with\n// \"Cannot read properties of undefined (reading 'data')\" and silently merge\n// dropped blocks into a single ghost node. We normalize defensively here so\n// hosts can author plain `{ type, props: {} }` entries without ceremony.\nfunction makeBlockId(type) {\n const suffix =\n typeof crypto !== 'undefined' && typeof crypto.randomUUID === 'function'\n ? crypto.randomUUID().slice(0, 8)\n : Math.random().toString(36).slice(2, 10);\n return `${type || 'block'}-${suffix}`;\n}\n\n// Fill each content item's missing props from its config component's\n// defaultProps. Puck applies defaultProps only when a block is dragged in\n// via the drawer — saved/seeded payloads that store `{ type, props: {} }`\n// otherwise render (and edit) with empty fields. Existing props always win.\n//\n// Both the renderer and the editor call this on initial data so the field\n// panel is populated when the author clicks a block.\nexport function applyConfigDefaults(data, config) {\n if (!data || !Array.isArray(data.content) || !config?.components) return data;\n let mutated = false;\n const content = data.content.map((item) => {\n const defaults = config.components[item?.type]?.defaultProps;\n if (!defaults) return item;\n const next = { ...defaults, ...(item.props || {}) };\n if (next === item.props) return item;\n mutated = true;\n return { ...item, props: next };\n });\n return mutated ? { ...data, content } : data;\n}\n\nexport function normalizePuckData(input) {\n if (!input || typeof input !== 'object') return input;\n if (!Array.isArray(input.content)) return input;\n let mutated = false;\n const seen = new Set();\n const content = input.content.map((item) => {\n if (!item || typeof item !== 'object') return item;\n const props = item.props || {};\n const existing = typeof props.id === 'string' && props.id ? props.id : '';\n if (existing && !seen.has(existing)) {\n seen.add(existing);\n return item;\n }\n const id = makeBlockId(item.type);\n seen.add(id);\n mutated = true;\n return { ...item, props: { ...props, id } };\n });\n return mutated ? { ...input, content } : input;\n}\n\n// Factory: builds a Puck config from defaults + caller overrides. Consumers\n// can extend `blocks`, replace `categories`, or pass `reveal: null` to skip\n// the scroll-reveal wrapping entirely.\n//\n// `defaults` is the brand-injection point: a record keyed by block name whose\n// values shallow-merge over each block's intrinsic `defaultProps` when the\n// component first lands in the canvas. Lets hosts ship tenant-specific copy\n// (from DB or a static file) without forking the package's block files.\n// Shallow merge — pass the full replacement array for `items` / `stages` etc.\n//\n// Signature kept deliberately small. Tweak via spread; don't pass options we\n// can derive (e.g. categories use whatever component names exist in blocks).\nexport function createPuckConfig({\n blocks = defaultBlocks,\n categories = defaultCategories,\n reveal = DEFAULT_REVEAL,\n defaults,\n root = { fields: { title: { type: 'text', label: 'Page label (admin only)' } } },\n} = {}) {\n const components = {};\n for (const [name, block] of Object.entries(blocks)) {\n const animation = reveal && reveal[name];\n const override = defaults && defaults[name];\n const withDefaults = override\n ? { ...block, defaultProps: { ...(block.defaultProps || {}), ...override } }\n : block;\n // Every block gets a per-block `theme` field + data-tps-theme stamping.\n // Wrapped INSIDE withReveal so both clones land on the same root element\n // and the theme is visible on the editor canvas (reveal isn't).\n const themed = withTheme(withDefaults);\n components[name] = animation ? withReveal(themed, animation) : themed;\n }\n return { components, categories, root };\n}\n"],"mappings":"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","names":["import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_antd","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_antd","import_icons","import_jsx_runtime","AntdApp","import_antd","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_antd","import_jsx_runtime","import_jsx_runtime","import_react","import_antd","import_icons","import_jsx_runtime","AntdApp","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_antd","import_icons","import_jsx_runtime","import_jsx_runtime","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","ICONS","ICON_OPTIONS","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_antd","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_react","import_jsx_runtime","import_react","import_antd","import_jsx_runtime","import_jsx_runtime","import_antd","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_antd","import_jsx_runtime","AntTabs","import_antd","import_jsx_runtime","import_icons","import_jsx_runtime","import_icons","import_jsx_runtime","import_jsx_runtime","import_react","import_antd","import_icons","import_antd","import_icons","import_jsx_runtime","import_jsx_runtime","AntdApp","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_icons","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_jsx_runtime","import_react","import_react","import_react","import_jsx_runtime","import_jsx_runtime"]}
|