@frontlit/page-builder 0.1.0-alpha.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.
Files changed (98) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +97 -0
  3. package/dist/alignment-dZDzN96G.d.ts +5 -0
  4. package/dist/blocks/index.d.ts +255 -0
  5. package/dist/blocks/index.js +6 -0
  6. package/dist/blocks/index.js.map +1 -0
  7. package/dist/builder/index.d.ts +240 -0
  8. package/dist/builder/index.js +8 -0
  9. package/dist/builder/index.js.map +1 -0
  10. package/dist/button-C3VrMJkr.d.ts +20 -0
  11. package/dist/chunk-7KIX4WAO.js +4229 -0
  12. package/dist/chunk-7KIX4WAO.js.map +1 -0
  13. package/dist/chunk-7W6Q4WA7.js +515 -0
  14. package/dist/chunk-7W6Q4WA7.js.map +1 -0
  15. package/dist/chunk-GTY75HW2.js +22 -0
  16. package/dist/chunk-GTY75HW2.js.map +1 -0
  17. package/dist/chunk-MO76KZY2.js +3580 -0
  18. package/dist/chunk-MO76KZY2.js.map +1 -0
  19. package/dist/chunk-RBJBODQP.js +2011 -0
  20. package/dist/chunk-RBJBODQP.js.map +1 -0
  21. package/dist/chunk-RUYOL7JZ.js +4 -0
  22. package/dist/chunk-RUYOL7JZ.js.map +1 -0
  23. package/dist/chunk-SSQWYMQR.js +393 -0
  24. package/dist/chunk-SSQWYMQR.js.map +1 -0
  25. package/dist/color-mode-DIEEt9WP.d.ts +3 -0
  26. package/dist/components/index.d.ts +36 -0
  27. package/dist/components/index.js +5 -0
  28. package/dist/components/index.js.map +1 -0
  29. package/dist/data-slots.d.ts +25 -0
  30. package/dist/data-slots.js +3 -0
  31. package/dist/data-slots.js.map +1 -0
  32. package/dist/fonts/alegreya/alegreya-latin-variable.woff2 +0 -0
  33. package/dist/fonts/bebas-neue/bebas-neue-latin-400-normal.woff2 +0 -0
  34. package/dist/fonts/inter/inter-latin-variable.woff2 +0 -0
  35. package/dist/fonts/lato/lato-latin-100-normal.woff2 +0 -0
  36. package/dist/fonts/lato/lato-latin-300-normal.woff2 +0 -0
  37. package/dist/fonts/lato/lato-latin-400-normal.woff2 +0 -0
  38. package/dist/fonts/lato/lato-latin-700-normal.woff2 +0 -0
  39. package/dist/fonts/lato/lato-latin-900-normal.woff2 +0 -0
  40. package/dist/fonts/merriweather/merriweather-latin-variable.woff2 +0 -0
  41. package/dist/fonts/montserrat/montserrat-latin-100-normal.woff2 +0 -0
  42. package/dist/fonts/montserrat/montserrat-latin-200-normal.woff2 +0 -0
  43. package/dist/fonts/montserrat/montserrat-latin-300-normal.woff2 +0 -0
  44. package/dist/fonts/montserrat/montserrat-latin-400-normal.woff2 +0 -0
  45. package/dist/fonts/montserrat/montserrat-latin-500-normal.woff2 +0 -0
  46. package/dist/fonts/montserrat/montserrat-latin-600-normal.woff2 +0 -0
  47. package/dist/fonts/montserrat/montserrat-latin-700-normal.woff2 +0 -0
  48. package/dist/fonts/montserrat/montserrat-latin-800-normal.woff2 +0 -0
  49. package/dist/fonts/montserrat/montserrat-latin-900-normal.woff2 +0 -0
  50. package/dist/fonts/montserrat/montserrat-latin-variable.woff2 +0 -0
  51. package/dist/fonts/mulish/mulish-latin-variable.woff2 +0 -0
  52. package/dist/fonts/noto-sans/noto-sans-latin-variable.woff2 +0 -0
  53. package/dist/fonts/nunito/nunito-latin-variable.woff2 +0 -0
  54. package/dist/fonts/open-sans/open-sans-latin-variable.woff2 +0 -0
  55. package/dist/fonts/oswald/oswald-latin-variable.woff2 +0 -0
  56. package/dist/fonts/playfair-display/playfair-display-latin-variable.woff2 +0 -0
  57. package/dist/fonts/poppins/poppins-latin-100-normal.woff2 +0 -0
  58. package/dist/fonts/poppins/poppins-latin-200-normal.woff2 +0 -0
  59. package/dist/fonts/poppins/poppins-latin-300-normal.woff2 +0 -0
  60. package/dist/fonts/poppins/poppins-latin-400-normal.woff2 +0 -0
  61. package/dist/fonts/poppins/poppins-latin-500-normal.woff2 +0 -0
  62. package/dist/fonts/poppins/poppins-latin-600-normal.woff2 +0 -0
  63. package/dist/fonts/poppins/poppins-latin-700-normal.woff2 +0 -0
  64. package/dist/fonts/poppins/poppins-latin-800-normal.woff2 +0 -0
  65. package/dist/fonts/poppins/poppins-latin-900-normal.woff2 +0 -0
  66. package/dist/fonts/pt-sans/pt-sans-latin-400-normal.woff2 +0 -0
  67. package/dist/fonts/pt-sans/pt-sans-latin-700-normal.woff2 +0 -0
  68. package/dist/fonts/quicksand/quicksand-latin-variable.woff2 +0 -0
  69. package/dist/fonts/raleway/raleway-latin-variable.woff2 +0 -0
  70. package/dist/fonts/roboto/roboto-latin-variable.woff2 +0 -0
  71. package/dist/fonts/roboto-slab/roboto-slab-latin-variable.woff2 +0 -0
  72. package/dist/fonts/rubik/rubik-latin-variable.woff2 +0 -0
  73. package/dist/fonts/source-sans-3/source-sans-3-latin-400-normal.woff2 +0 -0
  74. package/dist/fonts/source-sans-3/source-sans-3-latin-variable.woff2 +0 -0
  75. package/dist/fonts/source-serif-4/source-serif-4-latin-variable.woff2 +0 -0
  76. package/dist/fonts/work-sans/work-sans-latin-variable.woff2 +0 -0
  77. package/dist/image-D7GlnOio.d.ts +30 -0
  78. package/dist/index.d.ts +59 -0
  79. package/dist/index.js +10 -0
  80. package/dist/index.js.map +1 -0
  81. package/dist/media-Njv378j7.d.ts +13 -0
  82. package/dist/models/index.d.ts +8 -0
  83. package/dist/models/index.js +4 -0
  84. package/dist/models/index.js.map +1 -0
  85. package/dist/nav-link-BfxvQ1s6.d.ts +37 -0
  86. package/dist/page-DfVl_aHX.d.ts +26 -0
  87. package/dist/primitives/index.d.ts +140 -0
  88. package/dist/primitives/index.js +4 -0
  89. package/dist/primitives/index.js.map +1 -0
  90. package/dist/renderer/index.d.ts +81 -0
  91. package/dist/renderer/index.js +7 -0
  92. package/dist/renderer/index.js.map +1 -0
  93. package/dist/section-background-BgOCp5l3.d.ts +50 -0
  94. package/dist/styles.css +15322 -0
  95. package/dist/theme-style-39nxXQy0.d.ts +141 -0
  96. package/dist/theme.css +242 -0
  97. package/dist/widget--uEOpdq3.d.ts +105 -0
  98. package/package.json +142 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/blocks/header/metadata.ts","../src/utils/is-video.ts","../src/utils/generate-unique-id.ts","../src/blocks/header/widget.tsx","../src/blocks/_shared/fields.tsx","../src/blocks/header/editor.tsx","../src/blocks/header/defaults.ts","../src/blocks/header/index.ts","../src/blocks/hero/metadata.ts","../src/blocks/hero/widget.tsx","../src/blocks/hero/editor.tsx","../src/blocks/hero/defaults.ts","../src/blocks/hero/index.ts","../src/blocks/content/metadata.ts","../src/blocks/content/widget.tsx","../src/blocks/content/editor.tsx","../src/blocks/content/defaults.ts","../src/blocks/content/index.ts","../src/blocks/featured/metadata.ts","../src/blocks/featured/widget.tsx","../src/blocks/featured/editor.tsx","../src/blocks/featured/defaults.ts","../src/blocks/featured/index.ts","../src/blocks/faq/metadata.ts","../src/blocks/faq/widget.tsx","../src/blocks/faq/editor.tsx","../src/blocks/faq/defaults.ts","../src/blocks/faq/index.ts","../src/blocks/pricing/metadata.ts","../src/blocks/pricing/widget.tsx","../src/blocks/pricing/editor.tsx","../src/blocks/pricing/defaults.ts","../src/blocks/pricing/index.ts","../src/blocks/banner/metadata.ts","../src/blocks/banner/widget.tsx","../src/blocks/banner/editor.tsx","../src/blocks/banner/defaults.ts","../src/blocks/banner/index.ts","../src/blocks/email-form/metadata.ts","../src/blocks/email-form/widget.tsx","../src/blocks/email-form/editor.tsx","../src/blocks/email-form/defaults.ts","../src/blocks/email-form/index.ts","../src/blocks/support-form/metadata.ts","../src/blocks/support-form/widget.tsx","../src/blocks/support-form/editor.tsx","../src/blocks/support-form/defaults.ts","../src/blocks/support-form/index.ts","../src/blocks/footer/metadata.ts","../src/blocks/footer/widget.tsx","../src/blocks/footer/editor.tsx","../src/blocks/footer/defaults.ts","../src/blocks/footer/index.ts","../src/blocks/rich-text/metadata.ts","../src/blocks/rich-text/widget.tsx","../src/blocks/rich-text/editor.tsx","../src/blocks/rich-text/defaults.ts","../src/blocks/rich-text/index.ts","../src/blocks/grid/metadata.ts","../src/blocks/grid/widget.tsx","../src/blocks/grid/editor.tsx","../src/blocks/grid/defaults.ts","../src/blocks/grid/index.ts","../src/blocks/media/metadata.ts","../src/blocks/media/widget.tsx","../src/blocks/media/editor.tsx","../src/blocks/media/defaults.ts","../src/blocks/media/index.ts","../src/blocks/marquee/metadata.ts","../src/blocks/marquee/marquee-track.tsx","../src/blocks/marquee/widget.tsx","../src/blocks/marquee/editor.tsx","../src/blocks/marquee/defaults.ts","../src/blocks/marquee/index.ts","../src/blocks/embed/metadata.ts","../src/blocks/embed/widget.tsx","../src/blocks/embed/editor.tsx","../src/blocks/embed/defaults.ts","../src/blocks/embed/index.ts","../src/blocks/data-slot/metadata.ts","../src/blocks/data-slot/widget.tsx","../src/blocks/data-slot/index.ts"],"names":["Button","clsx","jsxs","jsx","createItem","roundedMap","Editor","emptyDoc","Fragment","useState","resolveIcon","Icons","useRef","useId","useEffect","React"],"mappings":"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","file":"chunk-7KIX4WAO.js","sourcesContent":["import type { WidgetMetadata } from \"../../models\";\n\nexport const headerMetadata: WidgetMetadata = {\n name: \"header\",\n displayName: \"Header\",\n description: \"The site navigation bar, pinned to the top of every page.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import type { Media } from \"../models\";\n\nexport function isVideo(youtubeLink?: string, media?: Partial<Media>) {\n return Boolean(\n youtubeLink || (media && RegExp(\"video/\").test(media?.mimeType || \"\")),\n );\n}\n","export function generateUniqueId(): string {\n return Math.random().toString(36).slice(2) + Date.now().toString(36);\n}\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport { MenuIcon } from \"lucide-react\";\nimport type { WidgetProps, ThemeStyle } from \"../../models\";\nimport type { HeaderNavLink, HeaderSettings } from \"./settings\";\nimport { Image, NavLink, ThemeModeSwitcher } from \"../../components\";\nimport {\n Button,\n Drawer,\n Header4,\n Link as PrimitiveLink,\n Section,\n} from \"../../primitives\";\n\nfunction HeaderLink({\n link,\n theme,\n onClick,\n}: {\n link: HeaderNavLink;\n theme?: ThemeStyle;\n onClick?: () => void;\n}) {\n if (link.isButton) {\n return (\n <NavLink href={link.href} onClick={onClick}>\n <Button size=\"sm\" theme={theme}>\n {link.label}\n </Button>\n </NavLink>\n );\n }\n\n return (\n <NavLink href={link.href} onClick={onClick} className=\"no-underline\">\n <PrimitiveLink theme={theme} className=\"no-underline\">\n {link.label}\n </PrimitiveLink>\n </NavLink>\n );\n}\n\nexport function HeaderWidget({\n settings: {\n logoText,\n logoImage,\n links = [],\n ctaLabel,\n ctaHref,\n linkAlignment = \"left\",\n layout = \"fixed\",\n backdropBlur = false,\n showThemeSwitcher = true,\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n pageData,\n nextTheme,\n toggleTheme,\n}: WidgetProps<HeaderSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n const [mobileNavOpen, setMobileNavOpen] = useState(false);\n const isFloating = layout === \"floating\";\n const isCentered = layout === \"centered\";\n const isFixed = !isFloating;\n const primaryLinks = links.filter((link) => !link.isButton);\n const buttonLinks = links.filter((link) => link.isButton);\n // On a published tenant site, branding is owned by the site settings,\n // not the header instance. Retain the block-local image for standalone\n // renderer and builder previews where no tenant logo is supplied.\n const resolvedLogoImage = pageData.siteLogoUrl || logoImage;\n const resolvedLogoAlt = pageData.siteLogoAlt || logoText || \"\";\n\n const logo = (\n <NavLink href=\"/\" className=\"no-underline\">\n <div className=\"flex items-center gap-2\">\n {resolvedLogoImage && (\n <Image\n src={resolvedLogoImage}\n alt={resolvedLogoAlt}\n width=\"w-8\"\n height=\"h-8\"\n borderRadius={2}\n />\n )}\n {logoText && (\n <Header4 theme={overriddenTheme}>{logoText}</Header4>\n )}\n </div>\n </NavLink>\n );\n\n const colorModeControl =\n showThemeSwitcher && toggleTheme ? (\n <ThemeModeSwitcher\n resolved={nextTheme ?? \"light\"}\n onToggle={toggleTheme}\n theme={overriddenTheme}\n size=\"sm\"\n variant=\"outline\"\n />\n ) : null;\n\n const ctaAndMenu = (\n <div className=\"flex items-center gap-3\">\n {colorModeControl}\n {buttonLinks.map((link) => (\n <div className=\"hidden lg:!block\" key={link.id}>\n <HeaderLink link={link} theme={overriddenTheme} />\n </div>\n ))}\n {ctaLabel && ctaHref && (\n <div className=\"hidden lg:!block\">\n <NavLink href={ctaHref}>\n <Button theme={overriddenTheme} size=\"sm\">\n {ctaLabel}\n </Button>\n </NavLink>\n </div>\n )}\n <div className=\"lg:hidden\">\n <Drawer\n open={mobileNavOpen}\n setOpen={setMobileNavOpen}\n side=\"right\"\n theme={overriddenTheme}\n trigger={\n <Button\n variant=\"outline\"\n size=\"sm\"\n theme={overriddenTheme}\n >\n <MenuIcon className=\"h-4 w-4\" />\n <span className=\"sr-only\">Toggle menu</span>\n </Button>\n }\n >\n <div className=\"mt-6 flex flex-col gap-4\">\n {links.map((link) => (\n <HeaderLink\n key={link.id}\n link={link}\n theme={overriddenTheme}\n onClick={() => setMobileNavOpen(false)}\n />\n ))}\n {ctaLabel && ctaHref && (\n <NavLink\n href={ctaHref}\n onClick={() => setMobileNavOpen(false)}\n >\n <Button\n theme={overriddenTheme}\n className=\"w-full\"\n >\n {ctaLabel}\n </Button>\n </NavLink>\n )}\n </div>\n </Drawer>\n </div>\n </div>\n );\n\n let mainContent: React.ReactNode;\n if (isCentered) {\n // Logo centered, nav links split evenly left and right of it — the\n // symmetric header pattern seen on many modern SaaS marketing sites.\n const half = Math.ceil(primaryLinks.length / 2);\n const leftLinks = primaryLinks.slice(0, half);\n const rightLinks = primaryLinks.slice(half);\n mainContent = (\n <div className=\"grid w-full grid-cols-[1fr_auto_1fr] items-center gap-4\">\n <div className=\"hidden items-center justify-end gap-6 lg:!flex\">\n {leftLinks.map((link) => (\n <HeaderLink\n key={link.id}\n link={link}\n theme={overriddenTheme}\n />\n ))}\n </div>\n <div className=\"flex justify-center\">{logo}</div>\n <div className=\"flex items-center justify-end gap-3\">\n <div className=\"hidden items-center gap-6 lg:!flex\">\n {rightLinks.map((link) => (\n <HeaderLink\n key={link.id}\n link={link}\n theme={overriddenTheme}\n />\n ))}\n </div>\n {ctaAndMenu}\n </div>\n </div>\n );\n } else {\n mainContent = (\n <div className=\"flex w-full items-center justify-between gap-4\">\n {logo}\n <div\n className={clsx(\n \"hidden items-center gap-6 lg:!flex lg:!grow\",\n linkAlignment === \"right\"\n ? \"justify-end\"\n : linkAlignment === \"center\"\n ? \"justify-center\"\n : \"justify-start\",\n )}\n >\n {primaryLinks.map((link) => (\n <HeaderLink\n key={link.id}\n link={link}\n theme={overriddenTheme}\n />\n ))}\n </div>\n {ctaAndMenu}\n </div>\n );\n }\n\n return (\n <Section\n theme={overriddenTheme}\n component=\"header\"\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n className={clsx(\n \"sticky top-0 z-20\",\n isFixed && \"border-b\",\n isFixed && backdropBlur && \"bg-transparent backdrop-blur-2xl\",\n isFixed && !backdropBlur && \"bg-background\",\n !isFixed && \"bg-transparent\",\n )}\n >\n {isFloating ? (\n <div\n className={clsx(\n \"p-2\",\n overriddenTheme.interactives?.card?.border?.width ??\n \"border\",\n overriddenTheme.interactives?.card?.border?.radius ??\n \"rounded-xl\",\n overriddenTheme.interactives?.card?.border?.style,\n overriddenTheme.interactives?.card?.shadow ??\n \"shadow-md\",\n backdropBlur\n ? \"bg-transparent backdrop-blur-2xl\"\n : \"bg-card text-card-foreground\",\n )}\n >\n {mainContent}\n </div>\n ) : (\n mainContent\n )}\n </Section>\n );\n}\n","\"use client\";\n\nimport React, { useId } from \"react\";\nimport { Plus } from \"lucide-react\";\nimport { cn } from \"../../primitives/lib/utils\";\n\n/**\n * Lightweight, dependency-free form field primitives shared by every block's\n * settings editor. These intentionally stay simple (no media library, no\n * rich color pickers) so the page-builder package works without a backend.\n */\n\nexport function FieldGroup({\n title,\n children,\n}: {\n title?: string;\n children: React.ReactNode;\n}) {\n return (\n <div className=\"mb-6 flex min-w-0 max-w-full flex-col gap-4 border-b border-border/80 pb-6 last:mb-0 last:border-0 last:pb-0\">\n {title && (\n <div className=\"flex items-center gap-2\">\n <span className=\"h-1.5 w-1.5 rounded-full bg-primary\" />\n <p className=\"text-[10px] font-bold uppercase tracking-[0.16em] text-muted-foreground\">\n {title}\n </p>\n </div>\n )}\n {children}\n </div>\n );\n}\n\nexport function TextField({\n label,\n value,\n onChange,\n placeholder,\n multiline,\n}: {\n label: string;\n value?: string;\n onChange: (value: string) => void;\n placeholder?: string;\n multiline?: boolean;\n}) {\n const generatedId = useId();\n const inputId = `field-${generatedId.replace(/:/g, \"\")}`;\n\n return (\n <label htmlFor={inputId} className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"text-xs font-semibold text-foreground\">\n {label}\n </span>\n {multiline ? (\n <textarea\n id={inputId}\n className=\"min-h-24 resize-y rounded-lg border border-input bg-muted/20 px-3 py-2.5 text-sm text-foreground outline-none transition-colors placeholder:text-muted-foreground/70 focus:border-ring focus:bg-background focus:ring-2 focus:ring-ring/20\"\n value={value ?? \"\"}\n placeholder={placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n ) : (\n <input\n id={inputId}\n className=\"h-9 rounded-lg border border-input bg-muted/20 px-3 py-2 text-sm text-foreground outline-none transition-colors placeholder:text-muted-foreground/70 focus:border-ring focus:bg-background focus:ring-2 focus:ring-ring/20\"\n value={value ?? \"\"}\n placeholder={placeholder}\n onChange={(e) => onChange(e.target.value)}\n />\n )}\n </label>\n );\n}\n\nexport function NumberField({\n label,\n value,\n onChange,\n min,\n max,\n}: {\n label: string;\n value?: number;\n onChange: (value: number) => void;\n min?: number;\n max?: number;\n}) {\n const generatedId = useId();\n const inputId = `field-${generatedId.replace(/:/g, \"\")}`;\n\n return (\n <label htmlFor={inputId} className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"text-xs font-semibold text-foreground\">\n {label}\n </span>\n <input\n id={inputId}\n type=\"number\"\n className=\"h-9 rounded-lg border border-input bg-muted/20 px-3 py-2 text-sm text-foreground outline-none transition-colors focus:border-ring focus:bg-background focus:ring-2 focus:ring-ring/20\"\n value={value ?? \"\"}\n min={min}\n max={max}\n onChange={(e) => onChange(Number(e.target.value))}\n />\n </label>\n );\n}\n\nexport function SelectField<T extends string>({\n label,\n value,\n onChange,\n options,\n}: {\n label: string;\n value?: T;\n onChange: (value: T) => void;\n options: { label: string; value: T }[];\n}) {\n const generatedId = useId();\n const inputId = `field-${generatedId.replace(/:/g, \"\")}`;\n\n return (\n <label htmlFor={inputId} className=\"flex flex-col gap-1.5 text-sm\">\n <span className=\"text-xs font-semibold text-foreground\">\n {label}\n </span>\n <select\n id={inputId}\n className=\"h-9 w-full rounded-lg border border-input bg-muted/20 px-3 py-2 text-sm text-foreground outline-none transition-colors focus:border-ring focus:bg-background focus:ring-2 focus:ring-ring/20\"\n value={value ?? \"\"}\n onChange={(e) => onChange(e.target.value as T)}\n >\n {options.map((option) => (\n <option key={option.value} value={option.value}>\n {option.label}\n </option>\n ))}\n </select>\n </label>\n );\n}\n\nexport function ToggleField({\n label,\n value,\n onChange,\n}: {\n label: string;\n value?: boolean;\n onChange: (value: boolean) => void;\n}) {\n return (\n <label className=\"flex cursor-pointer items-center justify-between gap-3 rounded-lg border border-border/80 bg-muted/20 px-3 py-2.5 text-sm transition-colors hover:bg-muted/50\">\n <span className=\"text-xs font-semibold text-foreground\">\n {label}\n </span>\n <input\n type=\"checkbox\"\n className=\"peer sr-only\"\n checked={Boolean(value)}\n onChange={(e) => onChange(e.target.checked)}\n />\n <span\n aria-hidden=\"true\"\n className={cn(\n \"relative h-5 w-9 shrink-0 rounded-full bg-muted-foreground/25 transition-colors after:absolute after:left-0.5 after:top-0.5 after:h-4 after:w-4 after:rounded-full after:bg-background after:shadow-sm after:transition-transform peer-focus-visible:ring-2 peer-focus-visible:ring-ring peer-focus-visible:ring-offset-2\",\n value && \"bg-primary after:translate-x-4\",\n )}\n />\n </label>\n );\n}\n\nexport function ListField<T>({\n label,\n items,\n onChange,\n renderItem,\n createItem,\n addLabel = \"Add item\",\n}: {\n label: string;\n items: T[];\n onChange: (items: T[]) => void;\n renderItem: (\n item: T,\n update: (next: Partial<T>) => void,\n remove: () => void,\n index: number,\n ) => React.ReactNode;\n createItem: () => T;\n addLabel?: string;\n}) {\n return (\n <div className=\"flex flex-col gap-2.5 text-sm\">\n <div className=\"flex items-center justify-between gap-3\">\n <span className=\"text-xs font-semibold text-foreground\">\n {label}\n </span>\n <span className=\"text-[10px] font-medium uppercase tracking-wider text-muted-foreground\">\n {items.length} {items.length === 1 ? \"item\" : \"items\"}\n </span>\n </div>\n <div className=\"flex flex-col gap-2.5\">\n {items.map((item, index) => (\n <div\n key={index}\n className=\"flex flex-col gap-3 rounded-xl border border-border/80 bg-muted/15 p-3.5 [&>button]:self-end [&>button]:rounded-md [&>button]:px-2 [&>button]:py-1 [&>button]:text-[11px] [&>button]:font-semibold [&>button]:transition-colors [&>button]:hover:bg-destructive/10\"\n >\n <div className=\"flex items-center justify-between border-b border-border/60 pb-2\">\n <span className=\"text-[10px] font-bold uppercase tracking-[0.14em] text-muted-foreground\">\n Item {String(index + 1).padStart(2, \"0\")}\n </span>\n </div>\n {renderItem(\n item,\n (next) => {\n const copy = items.slice();\n copy[index] = { ...item, ...next };\n onChange(copy);\n },\n () => {\n onChange(items.filter((_, i) => i !== index));\n },\n index,\n )}\n </div>\n ))}\n </div>\n <button\n type=\"button\"\n className=\"inline-flex h-9 w-full items-center justify-center gap-2 rounded-lg border border-dashed border-input text-xs font-semibold text-muted-foreground transition-colors hover:border-primary/50 hover:bg-primary/5 hover:text-foreground\"\n onClick={() => onChange([...items, createItem()])}\n >\n <Plus className=\"h-3.5 w-3.5\" aria-hidden=\"true\" />\n {addLabel}\n </button>\n </div>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { HeaderNavLink, HeaderSettings } from \"./settings\";\nimport { generateUniqueId } from \"../../utils\";\nimport {\n FieldGroup,\n ListField,\n SelectField,\n TextField,\n ToggleField,\n} from \"../_shared/fields\";\n\nexport function HeaderEditor({\n settings,\n onChange,\n}: WidgetEditorProps<HeaderSettings>) {\n const update = (partial: Partial<HeaderSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Logo\">\n <TextField\n label=\"Logo text\"\n value={settings.logoText}\n onChange={(logoText) => update({ logoText })}\n />\n <TextField\n label=\"Logo image URL\"\n value={settings.logoImage}\n placeholder=\"https://...\"\n onChange={(logoImage) => update({ logoImage })}\n />\n </FieldGroup>\n <FieldGroup title=\"Navigation links\">\n <ListField<HeaderNavLink>\n label=\"Links\"\n items={settings.links ?? []}\n onChange={(links) => update({ links })}\n createItem={() => ({\n id: generateUniqueId(),\n label: \"New link\",\n href: \"#\",\n })}\n addLabel=\"Add link\"\n renderItem={(link, updateLink, remove) => (\n <>\n <TextField\n label=\"Label\"\n value={link.label}\n onChange={(label) => updateLink({ label })}\n />\n <TextField\n label=\"Link\"\n value={link.href}\n onChange={(href) => updateLink({ href })}\n />\n <ToggleField\n label=\"Show as button\"\n value={link.isButton}\n onChange={(isButton) =>\n updateLink({ isButton })\n }\n />\n <button\n type=\"button\"\n className=\"self-start text-xs text-destructive\"\n onClick={remove}\n >\n Remove\n </button>\n </>\n )}\n />\n </FieldGroup>\n <FieldGroup title=\"Call to action\">\n <TextField\n label=\"Button text\"\n value={settings.ctaLabel}\n onChange={(ctaLabel) => update({ ctaLabel })}\n />\n <TextField\n label=\"Button link\"\n value={settings.ctaHref}\n onChange={(ctaHref) => update({ ctaHref })}\n />\n </FieldGroup>\n <FieldGroup title=\"Layout\">\n <SelectField\n label=\"Link alignment\"\n value={settings.linkAlignment ?? \"left\"}\n onChange={(linkAlignment) => update({ linkAlignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ]}\n />\n <ToggleField\n label=\"Backdrop blur\"\n value={settings.backdropBlur}\n onChange={(backdropBlur) => update({ backdropBlur })}\n />\n <ToggleField\n label=\"Color mode switcher\"\n value={settings.showThemeSwitcher !== false}\n onChange={(showThemeSwitcher) =>\n update({ showThemeSwitcher })\n }\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { HeaderSettings } from \"./settings\";\nimport { generateUniqueId } from \"../../utils\";\n\nexport const headerDefaults: Partial<HeaderSettings> = {\n logoText: \"FrontLit\",\n links: [\n { id: generateUniqueId(), label: \"Features\", href: \"/#features\" },\n { id: generateUniqueId(), label: \"Pricing\", href: \"/#pricing\" },\n { id: generateUniqueId(), label: \"Docs\", href: \"/docs\" },\n { id: generateUniqueId(), label: \"Blog\", href: \"/blog\" },\n ],\n ctaLabel: \"Get started\",\n ctaHref: \"/help\",\n linkAlignment: \"left\",\n layout: \"fixed\",\n backdropBlur: false,\n showThemeSwitcher: true,\n // Slider value 1. Keeps a new header compact instead of inheriting the\n // theme's content-section padding (`py-12` / slider 5 on most themes).\n verticalPadding: \"py-4\",\n};\n","import type { Widget } from \"../../models\";\nimport { headerMetadata } from \"./metadata\";\nimport { HeaderWidget } from \"./widget\";\nimport { HeaderEditor } from \"./editor\";\nimport { headerDefaults } from \"./defaults\";\nimport type { HeaderSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Header: Widget<HeaderSettings> = {\n metadata: headerMetadata,\n widget: HeaderWidget,\n editor: HeaderEditor,\n getDefaultSettings: () => headerDefaults,\n layouts: [\n { id: \"fixed\", name: \"Fixed\" },\n { id: \"floating\", name: \"Floating\" },\n { id: \"centered\", name: \"Centered logo\" },\n ],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const heroMetadata: WidgetMetadata = {\n name: \"hero\",\n displayName: \"Hero\",\n description: \"A large introductory section with a title, copy and CTAs.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import React from \"react\";\nimport type { WidgetProps } from \"../../models\";\nimport type { ThemeStyle } from \"../../models\";\nimport type { HeroSettings } from \"./settings\";\nimport {\n Image,\n NavLink,\n TextRenderer,\n VideoWithPreview,\n} from \"../../components\";\nimport { isVideo } from \"../../utils\";\nimport clsx from \"clsx\";\nimport {\n Button,\n Header1,\n Preheader,\n Subheader1,\n Section,\n PageCard,\n PageCardContent,\n} from \"../../primitives\";\n\nconst roundedMap: Record<number, string> = {\n 0: \"rounded-none\",\n 1: \"rounded-sm\",\n 2: \"rounded\",\n 3: \"rounded-md\",\n 4: \"rounded-lg\",\n 5: \"rounded-xl\",\n 6: \"rounded-2xl\",\n 7: \"rounded-3xl\",\n 8: \"rounded-full\",\n};\n\nexport function HeroWidget({\n settings: {\n preTitle,\n title,\n description,\n buttonCaption,\n buttonAction,\n media,\n youtubeLink,\n alignment = \"right\",\n mediaRadius = 3,\n contentAlignment = \"left\",\n secondaryButtonAction,\n secondaryButtonCaption,\n cssId,\n maxWidth,\n verticalPadding,\n background,\n layout = \"normal\",\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<HeroSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n const hasHeroGraphic = youtubeLink || (media && media.mediaId);\n const direction =\n alignment === \"right\" ? \"md:!flex-row-reverse\" : \"md:!flex-row\";\n const isCentered = layout === \"centered\" || layout === \"media-below\";\n\n const graphic = hasHeroGraphic && (\n <div\n className={`w-full overflow-hidden ${roundedMap[mediaRadius] ?? \"rounded-md\"}`}\n >\n {isVideo(youtubeLink, media) ? (\n <VideoWithPreview\n videoUrl={youtubeLink || media?.file || \"\"}\n title={media?.caption || \"\"}\n thumbnailUrl={media?.thumbnail || \"\"}\n />\n ) : (\n <Image\n src={media?.file || \"\"}\n alt={media?.caption || \"\"}\n borderRadius={mediaRadius}\n />\n )}\n </div>\n );\n\n const textContent = (\n <div\n className={clsx(\n \"flex flex-col gap-4\",\n isCentered || contentAlignment === \"center\"\n ? \"items-center text-center\"\n : \"items-start justify-center h-full\",\n )}\n >\n {preTitle && (\n <Preheader\n theme={overriddenTheme}\n className=\"text-muted-foreground\"\n >\n {preTitle}\n </Preheader>\n )}\n <Header1 theme={overriddenTheme}>{title}</Header1>\n {description && (\n <Subheader1 theme={overriddenTheme} component=\"span\">\n <TextRenderer json={description} theme={overriddenTheme} />\n </Subheader1>\n )}\n <div\n className={clsx(\n \"flex flex-col md:!flex-row gap-2 w-full\",\n (isCentered || contentAlignment === \"center\") &&\n \"md:!justify-center\",\n )}\n >\n {buttonAction && buttonCaption && (\n <NavLink href={buttonAction}>\n <Button\n theme={overriddenTheme}\n className=\"w-full md:min-w-[150px]\"\n >\n {buttonCaption}\n </Button>\n </NavLink>\n )}\n {secondaryButtonAction && secondaryButtonCaption && (\n <NavLink href={secondaryButtonAction}>\n <Button\n theme={overriddenTheme}\n variant=\"secondary\"\n className=\"w-full md:min-w-[150px]\"\n >\n {secondaryButtonCaption}\n </Button>\n </NavLink>\n )}\n </div>\n </div>\n );\n\n let mainContent: React.ReactNode;\n if (layout === \"centered\") {\n // Text-only, no media — the minimalist SaaS hero (Linear, Vercel).\n mainContent = (\n <div className=\"mx-auto flex max-w-2xl flex-col gap-4\">\n {textContent}\n </div>\n );\n } else if (layout === \"media-below\") {\n // Centered headline with a large screenshot/media beneath it — the\n // classic \"product hero\" pattern (Stripe, Vercel, Linear).\n mainContent = (\n <div className=\"flex flex-col gap-10\">\n <div className=\"mx-auto flex max-w-2xl flex-col gap-4\">\n {textContent}\n </div>\n {graphic && <div className=\"w-full\">{graphic}</div>}\n </div>\n );\n } else {\n mainContent = (\n <div className={clsx(\"flex flex-col gap-8\", direction)}>\n {graphic && (\n <div className=\"w-full md:w-1/2 flex items-center\">\n {graphic}\n </div>\n )}\n <div className={`w-full ${hasHeroGraphic ? \"md:w-1/2\" : \"\"}`}>\n {textContent}\n </div>\n </div>\n );\n }\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n {layout === \"card\" ? (\n <PageCard theme={overriddenTheme}>\n <PageCardContent theme={overriddenTheme}>\n {mainContent}\n </PageCardContent>\n </PageCard>\n ) : (\n mainContent\n )}\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { HeroSettings } from \"./settings\";\nimport { Editor, emptyDoc } from \"@frontlit/text-editor\";\nimport { FieldGroup, SelectField, TextField } from \"../_shared/fields\";\n\nexport function HeroEditor({\n settings,\n onChange,\n}: WidgetEditorProps<HeroSettings>) {\n const update = (partial: Partial<HeroSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Content\">\n <TextField\n label=\"Eyebrow\"\n value={settings.preTitle}\n placeholder=\"e.g. Careers\"\n onChange={(preTitle) => update({ preTitle })}\n />\n <TextField\n label=\"Title\"\n value={settings.title}\n onChange={(title) => update({ title })}\n />\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"font-medium text-foreground\">\n Description\n </span>\n <Editor\n initialContent={settings.description ?? emptyDoc}\n onChange={(description: any) => update({ description })}\n showToolbar={false}\n editorClassName=\"min-h-[100px]\"\n />\n </div>\n </FieldGroup>\n <FieldGroup title=\"Media\">\n <TextField\n label=\"Image URL\"\n value={settings.media?.file}\n placeholder=\"https://...\"\n onChange={(file) =>\n update({\n media: file ? { mediaId: file, file } : undefined,\n })\n }\n />\n <TextField\n label=\"YouTube / Vimeo link\"\n value={settings.youtubeLink}\n placeholder=\"https://youtube.com/watch?v=...\"\n onChange={(youtubeLink) => update({ youtubeLink })}\n />\n </FieldGroup>\n <FieldGroup title=\"Calls to action\">\n <TextField\n label=\"Primary button text\"\n value={settings.buttonCaption}\n onChange={(buttonCaption) => update({ buttonCaption })}\n />\n <TextField\n label=\"Primary button link\"\n value={settings.buttonAction}\n onChange={(buttonAction) => update({ buttonAction })}\n />\n <TextField\n label=\"Secondary button text\"\n value={settings.secondaryButtonCaption}\n onChange={(secondaryButtonCaption) =>\n update({ secondaryButtonCaption })\n }\n />\n <TextField\n label=\"Secondary button link\"\n value={settings.secondaryButtonAction}\n onChange={(secondaryButtonAction) =>\n update({ secondaryButtonAction })\n }\n />\n </FieldGroup>\n <FieldGroup title=\"Layout\">\n <SelectField\n label=\"Media position\"\n value={settings.alignment ?? \"right\"}\n onChange={(alignment) => update({ alignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Right\", value: \"right\" },\n ]}\n />\n <SelectField\n label=\"Content alignment\"\n value={settings.contentAlignment ?? \"left\"}\n onChange={(contentAlignment) =>\n update({ contentAlignment })\n }\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n ]}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { HeroSettings } from \"./settings\";\n\nexport const heroDefaults: Partial<HeroSettings> = {\n title: \"Run your whole business from one front office\",\n buttonCaption: \"See features\",\n buttonAction: \"/#features\",\n secondaryButtonCaption: \"Read the docs\",\n secondaryButtonAction: \"/docs\",\n alignment: \"right\",\n contentAlignment: \"left\",\n mediaRadius: 3,\n layout: \"normal\",\n};\n","import type { Widget } from \"../../models\";\nimport { heroMetadata } from \"./metadata\";\nimport { HeroWidget } from \"./widget\";\nimport { HeroEditor } from \"./editor\";\nimport { heroDefaults } from \"./defaults\";\nimport type { HeroSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Hero: Widget<HeroSettings> = {\n metadata: heroMetadata,\n widget: HeroWidget,\n editor: HeroEditor,\n getDefaultSettings: () => heroDefaults,\n layouts: [\n { id: \"normal\", name: \"Standard\" },\n { id: \"card\", name: \"Card\" },\n { id: \"centered\", name: \"Centered\" },\n { id: \"media-below\", name: \"Media below\" },\n ],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const contentMetadata: WidgetMetadata = {\n name: \"content\",\n displayName: \"Content\",\n description:\n \"A rich-text section with an optional image, for things like an about-us or feature explainer.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport type { WidgetProps, ThemeStyle } from \"../../models\";\nimport type { ContentSettings } from \"./settings\";\nimport { Image, TextRenderer } from \"../../components\";\nimport { Header2, Section } from \"../../primitives\";\n\nconst roundedMap: Record<number, string> = {\n 0: \"rounded-none\",\n 1: \"rounded-sm\",\n 2: \"rounded\",\n 3: \"rounded-md\",\n 4: \"rounded-lg\",\n 5: \"rounded-xl\",\n 6: \"rounded-2xl\",\n 7: \"rounded-3xl\",\n 8: \"rounded-full\",\n};\n\nexport function ContentWidget({\n settings: {\n title,\n body,\n media,\n alignment = \"left\",\n headerAlignment = \"left\",\n mediaRadius = 3,\n layout = \"side\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<ContentSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n const hasMedia = Boolean(media && media.file);\n const sideBySide = layout !== \"stacked\" && layout !== \"overlay\";\n const direction =\n alignment === \"right\" ? \"md:!flex-row-reverse\" : \"md:!flex-row\";\n\n if (layout === \"overlay\") {\n // Media fills the section as a background; the text sits in a card\n // on top — a \"feature spotlight\" pattern common on product pages.\n const textPosition =\n alignment === \"right\"\n ? \"items-end text-right\"\n : \"items-start text-left\";\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div className=\"relative min-h-[420px] w-full overflow-hidden rounded-xl\">\n {hasMedia && (\n <Image\n src={media?.file || \"\"}\n alt={media?.caption || \"\"}\n width=\"w-full\"\n height=\"h-full\"\n className=\"absolute inset-0\"\n borderRadius={0}\n />\n )}\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/70 via-black/20 to-transparent\" />\n <div\n className={clsx(\n \"relative flex h-full flex-col justify-end gap-4 p-6 md:p-10\",\n textPosition,\n )}\n >\n <div className=\"max-w-lg text-white\">\n {title && (\n <Header2 theme={overriddenTheme}>\n {title}\n </Header2>\n )}\n {body && (\n <TextRenderer\n json={body}\n theme={overriddenTheme}\n />\n )}\n </div>\n </div>\n </div>\n </Section>\n );\n }\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div\n className={clsx(\"flex flex-col gap-8\", sideBySide && direction)}\n >\n {hasMedia && (\n <div\n className={clsx(\n \"flex w-full items-center\",\n sideBySide && \"md:w-1/2\",\n )}\n >\n <div\n className={`w-full overflow-hidden ${\n roundedMap[mediaRadius] ?? \"rounded-md\"\n }`}\n >\n <Image\n src={media?.file || \"\"}\n alt={media?.caption || \"\"}\n borderRadius={mediaRadius}\n />\n </div>\n </div>\n )}\n <div\n className={clsx(\n \"w-full\",\n hasMedia && sideBySide && \"md:w-1/2\",\n )}\n >\n <div\n className={clsx(\n \"flex h-full flex-col justify-center gap-4\",\n headerAlignment === \"center\"\n ? \"items-center text-center\"\n : \"items-start\",\n )}\n >\n {title && (\n <Header2 theme={overriddenTheme}>{title}</Header2>\n )}\n {body && (\n <TextRenderer json={body} theme={overriddenTheme} />\n )}\n </div>\n </div>\n </div>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { ContentSettings } from \"./settings\";\nimport { Editor, emptyDoc } from \"@frontlit/text-editor\";\nimport {\n FieldGroup,\n NumberField,\n SelectField,\n TextField,\n} from \"../_shared/fields\";\n\nexport function ContentEditor({\n settings,\n onChange,\n}: WidgetEditorProps<ContentSettings>) {\n const update = (partial: Partial<ContentSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Content\">\n <TextField\n label=\"Title\"\n value={settings.title}\n onChange={(title) => update({ title })}\n />\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"font-medium text-foreground\">Body</span>\n <Editor\n initialContent={settings.body ?? emptyDoc}\n onChange={(body: any) => update({ body })}\n editorClassName=\"min-h-[160px]\"\n />\n </div>\n </FieldGroup>\n <FieldGroup title=\"Media\">\n <TextField\n label=\"Image URL\"\n value={settings.media?.file}\n placeholder=\"https://...\"\n onChange={(file) =>\n update({\n media: file ? { mediaId: file, file } : undefined,\n })\n }\n />\n <NumberField\n label=\"Image corner radius\"\n value={settings.mediaRadius}\n min={0}\n max={8}\n onChange={(mediaRadius) => update({ mediaRadius })}\n />\n </FieldGroup>\n <FieldGroup title=\"Layout\">\n <SelectField\n label=\"Media position\"\n value={settings.alignment ?? \"left\"}\n onChange={(alignment) => update({ alignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Right\", value: \"right\" },\n ]}\n />\n <SelectField\n label=\"Header alignment\"\n value={settings.headerAlignment ?? \"left\"}\n onChange={(headerAlignment) => update({ headerAlignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n ]}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { ContentSettings } from \"./settings\";\n\nexport const contentDefaults: Partial<ContentSettings> = {\n title: \"One dashboard, every channel\",\n body: {\n type: \"doc\",\n content: [\n {\n type: \"paragraph\",\n content: [\n {\n type: \"text\",\n text: \"FrontLit brings your website, content, customer support, and audience engagement into one connected front office.\",\n },\n ],\n },\n ],\n },\n alignment: \"left\",\n headerAlignment: \"left\",\n mediaRadius: 3,\n};\n","import type { Widget } from \"../../models\";\nimport { contentMetadata } from \"./metadata\";\nimport { ContentWidget } from \"./widget\";\nimport { ContentEditor } from \"./editor\";\nimport { contentDefaults } from \"./defaults\";\nimport type { ContentSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Content: Widget<ContentSettings> = {\n metadata: contentMetadata,\n widget: ContentWidget,\n editor: ContentEditor,\n getDefaultSettings: () => contentDefaults,\n layouts: [\n { id: \"side\", name: \"Media beside\" },\n { id: \"stacked\", name: \"Media on top\" },\n { id: \"overlay\", name: \"Overlay\" },\n ],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const featuredMetadata: WidgetMetadata = {\n name: \"featured\",\n displayName: \"Feature grid\",\n description:\n \"A grid of feature highlights, each with an icon, title and description.\",\n compatibleWith: [\"site\", \"landing\", \"custom\"],\n};\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport * as Icons from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport type { ThemeStyle, WidgetProps } from \"../../models\";\nimport type { FeaturedSettings } from \"./settings\";\nimport { TextRenderer } from \"../../components\";\nimport {\n Header1,\n Header4,\n PageCard,\n PageCardContent,\n Section,\n Subheader1,\n Text2,\n} from \"../../primitives\";\n\n/**\n * Resolves a lucide-react icon by name, falling back to a safe default when\n * the configured name doesn't match a known icon (e.g. a typo in settings).\n */\nfunction resolveIcon(name?: string): LucideIcon {\n if (!name) return Icons.Sparkles;\n const icon = (Icons as unknown as Record<string, LucideIcon>)[name];\n // Lucide icons are `React.forwardRef` components (objects), not plain\n // functions, so we can't gate on `typeof icon === \"function\"` here.\n return icon ?? Icons.Sparkles;\n}\n\nexport function FeaturedWidget({\n settings: {\n title,\n description,\n headerAlignment = \"center\",\n items,\n layout = \"grid\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<FeaturedSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div className=\"flex flex-col gap-8\">\n <div\n className={clsx(\n \"flex flex-col gap-4\",\n headerAlignment === \"center\"\n ? \"items-center text-center\"\n : \"items-start\",\n )}\n >\n <Header1 theme={overriddenTheme}>{title}</Header1>\n {description && (\n <Subheader1 theme={overriddenTheme} component=\"span\">\n <TextRenderer\n json={description}\n theme={overriddenTheme}\n />\n </Subheader1>\n )}\n </div>\n {items && items.length > 0 && layout === \"numbered\" && (\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8\">\n {items.map((item, index) => (\n <div key={index} className=\"flex flex-col gap-2\">\n <span className=\"text-3xl font-bold text-primary/30\">\n {String(index + 1).padStart(2, \"0\")}\n </span>\n <Header4 theme={overriddenTheme}>\n {item.title}\n </Header4>\n {item.description && (\n <Text2 theme={overriddenTheme}>\n {item.description}\n </Text2>\n )}\n </div>\n ))}\n </div>\n )}\n {items && items.length > 0 && layout !== \"numbered\" && (\n <div\n className={clsx(\n layout === \"list\" && \"flex flex-col gap-4\",\n layout === \"compact\" &&\n \"grid grid-cols-2 md:grid-cols-4 gap-4 items-stretch\",\n layout !== \"list\" &&\n layout !== \"compact\" &&\n \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 items-stretch\",\n )}\n >\n {items.map((item, index) => {\n const Icon = resolveIcon(item.icon);\n return (\n <PageCard key={index} theme={overriddenTheme}>\n <PageCardContent\n theme={overriddenTheme}\n className={clsx(\n \"h-full flex gap-3\",\n layout === \"list\"\n ? \"flex-row items-start\"\n : \"flex-col\",\n layout === \"compact\" &&\n \"items-center text-center gap-2\",\n )}\n >\n <div\n className={clsx(\n \"flex shrink-0 items-center justify-center rounded-md bg-primary/10 text-primary\",\n layout === \"compact\"\n ? \"h-8 w-8\"\n : \"h-10 w-10\",\n )}\n >\n <Icon className=\"h-5 w-5\" />\n </div>\n <div\n className={clsx(\n \"flex flex-col gap-2\",\n layout === \"compact\" &&\n \"items-center gap-1\",\n )}\n >\n <Header4 theme={overriddenTheme}>\n {item.title}\n </Header4>\n {item.description &&\n layout !== \"compact\" && (\n <Text2\n theme={overriddenTheme}\n >\n {item.description}\n </Text2>\n )}\n </div>\n </PageCardContent>\n </PageCard>\n );\n })}\n </div>\n )}\n </div>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { FeatureItem, FeaturedSettings } from \"./settings\";\nimport { Editor, emptyDoc } from \"@frontlit/text-editor\";\nimport {\n FieldGroup,\n ListField,\n SelectField,\n TextField,\n} from \"../_shared/fields\";\n\nconst createItem = (): FeatureItem => ({\n title: \"New feature\",\n description: \"\",\n icon: \"Sparkles\",\n});\n\nexport function FeaturedEditor({\n settings,\n onChange,\n}: WidgetEditorProps<FeaturedSettings>) {\n const update = (partial: Partial<FeaturedSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Content\">\n <TextField\n label=\"Title\"\n value={settings.title}\n onChange={(title) => update({ title })}\n />\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"font-medium text-foreground\">\n Description\n </span>\n <Editor\n initialContent={settings.description ?? emptyDoc}\n onChange={(description: any) => update({ description })}\n showToolbar={false}\n editorClassName=\"min-h-[80px]\"\n />\n </div>\n <SelectField\n label=\"Header alignment\"\n value={settings.headerAlignment ?? \"center\"}\n onChange={(headerAlignment) => update({ headerAlignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n ]}\n />\n </FieldGroup>\n <FieldGroup title=\"Features\">\n <ListField<FeatureItem>\n label=\"Feature items\"\n items={settings.items ?? []}\n onChange={(items) => update({ items })}\n createItem={createItem}\n addLabel=\"Add feature\"\n renderItem={(item, updateItem, remove) => (\n <>\n <TextField\n label=\"Title\"\n value={item.title}\n onChange={(title) => updateItem({ title })}\n />\n <TextField\n label=\"Description\"\n value={item.description}\n multiline\n onChange={(description) =>\n updateItem({ description })\n }\n />\n <TextField\n label=\"Icon (lucide-react name)\"\n value={item.icon}\n placeholder=\"Globe\"\n onChange={(icon) => updateItem({ icon })}\n />\n <button\n type=\"button\"\n className=\"self-start text-xs font-medium text-destructive hover:underline\"\n onClick={remove}\n >\n Remove feature\n </button>\n </>\n )}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { FeaturedSettings } from \"./settings\";\n\nexport const featuredDefaults: Partial<FeaturedSettings> = {\n title: \"Everything you need to run your business online\",\n headerAlignment: \"center\",\n items: [\n {\n title: \"Website\",\n description:\n \"Design and publish beautiful pages with a drag-and-drop editor.\",\n icon: \"Globe\",\n },\n {\n title: \"Content\",\n description:\n \"Publish articles, documentation, and product updates from one content system.\",\n icon: \"Newspaper\",\n },\n {\n title: \"Support\",\n description:\n \"Support customers with a shared inbox, ticketing, help center, and AI answers.\",\n icon: \"LifeBuoy\",\n },\n {\n title: \"Engage\",\n description:\n \"Grow your audience and send email without leaving FrontLit.\",\n icon: \"Mail\",\n },\n ],\n};\n","import type { Widget } from \"../../models\";\nimport { featuredMetadata } from \"./metadata\";\nimport { FeaturedWidget } from \"./widget\";\nimport { FeaturedEditor } from \"./editor\";\nimport { featuredDefaults } from \"./defaults\";\nimport type { FeaturedSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Featured: Widget<FeaturedSettings> = {\n metadata: featuredMetadata,\n widget: FeaturedWidget,\n editor: FeaturedEditor,\n getDefaultSettings: () => featuredDefaults,\n layouts: [\n { id: \"grid\", name: \"Grid\" },\n { id: \"list\", name: \"List\" },\n { id: \"compact\", name: \"Compact\" },\n { id: \"numbered\", name: \"Numbered\" },\n ],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const faqMetadata: WidgetMetadata = {\n name: \"faq\",\n displayName: \"FAQs\",\n description:\n \"A list of frequently asked questions, rendered as an accordion.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","\"use client\";\n\nimport React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport { ChevronDown } from \"lucide-react\";\nimport type { WidgetProps, ThemeStyle } from \"../../models\";\nimport type { FaqSettings } from \"./settings\";\nimport { Header2, Section, Text1 } from \"../../primitives\";\n\nexport function FaqWidget({\n settings: {\n title,\n headerAlignment = \"left\",\n items = [],\n layout = \"list\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<FaqSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n const [expandedIndex, setExpandedIndex] = useState<number | null>(\n items.length > 0 ? 0 : null,\n );\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div className=\"flex flex-col gap-6\">\n {title && (\n <div\n className={clsx(\n \"flex flex-col\",\n headerAlignment === \"center\"\n ? \"items-center text-center\"\n : \"items-start\",\n )}\n >\n <Header2 theme={overriddenTheme}>{title}</Header2>\n </div>\n )}\n {items.length > 0 &&\n (() => {\n const renderItem = (\n item: (typeof items)[number],\n index: number,\n ) => {\n const isOpen = expandedIndex === index;\n return (\n <div\n key={item.id}\n className={\n layout === \"cards\"\n ? \"rounded-lg border border-border bg-card px-4 py-4\"\n : layout === \"columns\"\n ? \"border-b border-border py-4\"\n : \"py-4\"\n }\n >\n <button\n type=\"button\"\n className=\"flex w-full items-center justify-between gap-4 text-left\"\n onClick={() =>\n setExpandedIndex(\n isOpen ? null : index,\n )\n }\n aria-expanded={isOpen}\n >\n <Text1\n theme={overriddenTheme}\n className=\"font-medium\"\n >\n {item.question}\n </Text1>\n <ChevronDown\n className={clsx(\n \"h-4 w-4 shrink-0 transition-transform\",\n isOpen && \"rotate-180\",\n )}\n />\n </button>\n {isOpen && (\n <div className=\"pt-3\">\n <Text1\n theme={overriddenTheme}\n className=\"text-muted-foreground\"\n >\n {item.answer}\n </Text1>\n </div>\n )}\n </div>\n );\n };\n\n if (layout === \"columns\") {\n // Two side-by-side lists — the left column gets\n // the first half of items, the right column the\n // rest, a common layout for FAQ sections with\n // many questions.\n const half = Math.ceil(items.length / 2);\n const left = items.slice(0, half);\n const right = items.slice(half);\n return (\n <div className=\"grid grid-cols-1 gap-x-10 md:grid-cols-2\">\n <div className=\"flex flex-col\">\n {left.map((item, i) =>\n renderItem(item, i),\n )}\n </div>\n <div className=\"flex flex-col\">\n {right.map((item, i) =>\n renderItem(item, half + i),\n )}\n </div>\n </div>\n );\n }\n\n return (\n <div\n className={\n layout === \"cards\"\n ? \"flex flex-col gap-3\"\n : \"flex flex-col divide-y divide-border border-b border-t border-border\"\n }\n >\n {items.map((item, index) =>\n renderItem(item, index),\n )}\n </div>\n );\n })()}\n </div>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { FaqItem, FaqSettings } from \"./settings\";\nimport { generateUniqueId } from \"../../utils\";\nimport {\n FieldGroup,\n ListField,\n SelectField,\n TextField,\n} from \"../_shared/fields\";\n\nexport function FaqEditor({\n settings,\n onChange,\n}: WidgetEditorProps<FaqSettings>) {\n const update = (partial: Partial<FaqSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Header\">\n <TextField\n label=\"Title\"\n value={settings.title}\n onChange={(title) => update({ title })}\n />\n <SelectField\n label=\"Header alignment\"\n value={settings.headerAlignment ?? \"left\"}\n onChange={(headerAlignment) => update({ headerAlignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n ]}\n />\n </FieldGroup>\n <FieldGroup title=\"Questions\">\n <ListField<FaqItem>\n label=\"Items\"\n items={settings.items ?? []}\n onChange={(items) => update({ items })}\n createItem={() => ({\n id: generateUniqueId(),\n question: \"New question\",\n answer: \"\",\n })}\n addLabel=\"Add question\"\n renderItem={(item, updateItem, remove) => (\n <>\n <TextField\n label=\"Question\"\n value={item.question}\n onChange={(question) =>\n updateItem({ question })\n }\n />\n <TextField\n label=\"Answer\"\n value={item.answer}\n multiline\n onChange={(answer) => updateItem({ answer })}\n />\n <button\n type=\"button\"\n className=\"self-start text-xs text-destructive\"\n onClick={remove}\n >\n Remove\n </button>\n </>\n )}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { FaqSettings } from \"./settings\";\nimport { generateUniqueId } from \"../../utils\";\n\nexport const faqDefaults: Partial<FaqSettings> = {\n title: \"Frequently asked questions\",\n headerAlignment: \"left\",\n items: [\n {\n id: generateUniqueId(),\n question: \"What can I build with FrontLit?\",\n answer: \"A marketing website, articles, documentation, product updates, customer support, and email — all from one connected dashboard.\",\n },\n {\n id: generateUniqueId(),\n question: \"Do I need to know how to code?\",\n answer: \"No. Every page is assembled from ready-made blocks like this one, and you can customize copy, media and layout without touching code.\",\n },\n {\n id: generateUniqueId(),\n question: \"Can I use my own domain?\",\n answer: \"Yes, every FrontLit site can be connected to a custom domain in a few clicks.\",\n },\n {\n id: generateUniqueId(),\n question: \"Is there a free plan?\",\n answer: \"Yes, you can get started for free and upgrade as your audience grows.\",\n },\n ],\n};\n","import type { Widget } from \"../../models\";\nimport { faqMetadata } from \"./metadata\";\nimport { FaqWidget } from \"./widget\";\nimport { FaqEditor } from \"./editor\";\nimport { faqDefaults } from \"./defaults\";\nimport type { FaqSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Faq: Widget<FaqSettings> = {\n metadata: faqMetadata,\n widget: FaqWidget,\n editor: FaqEditor,\n getDefaultSettings: () => faqDefaults,\n layouts: [\n { id: \"list\", name: \"List\" },\n { id: \"cards\", name: \"Cards\" },\n { id: \"columns\", name: \"Columns\" },\n ],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const pricingMetadata: WidgetMetadata = {\n name: \"pricing\",\n displayName: \"Pricing\",\n description: \"A grid of pricing tiers with features and calls to action.\",\n compatibleWith: [\"site\", \"landing\", \"custom\"],\n};\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport type { ThemeStyle, WidgetProps } from \"../../models\";\nimport type { PricingSettings } from \"./settings\";\nimport { NavLink, TextRenderer } from \"../../components\";\nimport {\n Badge,\n Button,\n Header1,\n PageCard,\n PageCardContent,\n PageCardHeader,\n Preheader,\n Section,\n Subheader1,\n Text1,\n Text2,\n} from \"../../primitives\";\n\nexport function PricingWidget({\n settings: {\n title,\n description,\n headerAlignment = \"center\",\n tiers,\n layout = \"grid\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<PricingSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div className=\"flex flex-col gap-8\">\n <div\n className={clsx(\n \"flex flex-col gap-4\",\n headerAlignment === \"center\"\n ? \"items-center text-center\"\n : \"items-start\",\n )}\n >\n <Header1 theme={overriddenTheme}>{title}</Header1>\n {description && (\n <Subheader1 theme={overriddenTheme} component=\"span\">\n <TextRenderer\n json={description}\n theme={overriddenTheme}\n />\n </Subheader1>\n )}\n </div>\n {tiers && tiers.length > 0 && (\n <div\n className={\n layout === \"stacked\"\n ? \"mx-auto flex w-full max-w-xl flex-col gap-6\"\n : \"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6 items-stretch\"\n }\n >\n {tiers.map((tier, index) => (\n <PageCard\n key={index}\n theme={overriddenTheme}\n className={clsx(\n tier.highlighted && \"ring-2 ring-primary\",\n layout === \"highlight\" &&\n tier.highlighted &&\n \"relative z-10 shadow-xl md:-translate-y-3\",\n )}\n >\n <PageCardContent\n theme={overriddenTheme}\n className=\"h-full flex flex-col gap-4\"\n >\n <div className=\"flex items-center justify-between gap-2\">\n <Preheader theme={overriddenTheme}>\n {tier.name}\n </Preheader>\n {tier.highlighted && (\n <Badge theme={overriddenTheme}>\n Most popular\n </Badge>\n )}\n </div>\n <PageCardHeader theme={overriddenTheme}>\n {tier.price}\n </PageCardHeader>\n {tier.description && (\n <Text1 theme={overriddenTheme}>\n {tier.description}\n </Text1>\n )}\n {tier.features &&\n tier.features.length > 0 && (\n <div className=\"grow flex flex-col gap-2\">\n {tier.features.map(\n (feature, i) => (\n <Text2\n key={i}\n theme={\n overriddenTheme\n }\n >\n {feature}\n </Text2>\n ),\n )}\n </div>\n )}\n {tier.buttonAction &&\n tier.buttonCaption && (\n <NavLink\n href={tier.buttonAction}\n className=\"w-full mt-auto\"\n >\n <Button\n theme={overriddenTheme}\n variant={\n tier.highlighted\n ? \"default\"\n : \"secondary\"\n }\n className=\"w-full\"\n >\n {tier.buttonCaption}\n </Button>\n </NavLink>\n )}\n </PageCardContent>\n </PageCard>\n ))}\n </div>\n )}\n </div>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { PricingSettings, PricingTier } from \"./settings\";\nimport { Editor, emptyDoc } from \"@frontlit/text-editor\";\nimport {\n FieldGroup,\n ListField,\n SelectField,\n TextField,\n ToggleField,\n} from \"../_shared/fields\";\n\nconst createTier = (): PricingTier => ({\n name: \"New plan\",\n price: \"$0/mo\",\n description: \"\",\n features: [],\n buttonCaption: \"Get started\",\n buttonAction: \"#\",\n});\n\nexport function PricingEditor({\n settings,\n onChange,\n}: WidgetEditorProps<PricingSettings>) {\n const update = (partial: Partial<PricingSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Content\">\n <TextField\n label=\"Title\"\n value={settings.title}\n onChange={(title) => update({ title })}\n />\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"font-medium text-foreground\">\n Description\n </span>\n <Editor\n initialContent={settings.description ?? emptyDoc}\n onChange={(description: any) => update({ description })}\n showToolbar={false}\n editorClassName=\"min-h-[80px]\"\n />\n </div>\n <SelectField\n label=\"Header alignment\"\n value={settings.headerAlignment ?? \"center\"}\n onChange={(headerAlignment) => update({ headerAlignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n ]}\n />\n </FieldGroup>\n <FieldGroup title=\"Pricing tiers\">\n <ListField<PricingTier>\n label=\"Tiers\"\n items={settings.tiers ?? []}\n onChange={(tiers) => update({ tiers })}\n createItem={createTier}\n addLabel=\"Add tier\"\n renderItem={(tier, updateTier, remove) => (\n <>\n <TextField\n label=\"Name\"\n value={tier.name}\n onChange={(name) => updateTier({ name })}\n />\n <TextField\n label=\"Price\"\n value={tier.price}\n placeholder=\"$29/mo\"\n onChange={(price) => updateTier({ price })}\n />\n <TextField\n label=\"Description\"\n value={tier.description}\n multiline\n onChange={(description) =>\n updateTier({ description })\n }\n />\n <TextField\n label=\"Features (one per line)\"\n value={(tier.features ?? []).join(\"\\n\")}\n multiline\n onChange={(value) =>\n updateTier({\n features: value\n .split(\"\\n\")\n .map((f) => f.trim())\n .filter(Boolean),\n })\n }\n />\n <TextField\n label=\"Button text\"\n value={tier.buttonCaption}\n onChange={(buttonCaption) =>\n updateTier({ buttonCaption })\n }\n />\n <TextField\n label=\"Button link\"\n value={tier.buttonAction}\n onChange={(buttonAction) =>\n updateTier({ buttonAction })\n }\n />\n <ToggleField\n label=\"Highlight this tier\"\n value={tier.highlighted}\n onChange={(highlighted) =>\n updateTier({ highlighted })\n }\n />\n <button\n type=\"button\"\n className=\"self-start text-xs font-medium text-destructive hover:underline\"\n onClick={remove}\n >\n Remove tier\n </button>\n </>\n )}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { PricingSettings } from \"./settings\";\n\nexport const pricingDefaults: Partial<PricingSettings> = {\n title: \"Simple, transparent pricing\",\n headerAlignment: \"center\",\n tiers: [\n {\n name: \"Starter\",\n price: \"$0/mo\",\n description: \"For hobby sites and side projects.\",\n features: [\"1 website\", \"FrontLit branding\", \"Community support\"],\n buttonCaption: \"Get started\",\n buttonAction: \"/help\",\n },\n {\n name: \"Pro\",\n price: \"$29/mo\",\n description: \"For growing businesses that need more.\",\n features: [\n \"5 websites\",\n \"Custom domain\",\n \"Blog + Email\",\n \"Priority support\",\n ],\n buttonCaption: \"Talk to us\",\n buttonAction: \"/help\",\n highlighted: true,\n },\n {\n name: \"Business\",\n price: \"$79/mo\",\n description: \"For teams that need scale and control.\",\n features: [\n \"Unlimited websites\",\n \"Help desk & chatbot\",\n \"Team seats\",\n \"Dedicated support\",\n ],\n buttonCaption: \"Contact sales\",\n buttonAction: \"/help\",\n },\n ],\n};\n","import type { Widget } from \"../../models\";\nimport { pricingMetadata } from \"./metadata\";\nimport { PricingWidget } from \"./widget\";\nimport { PricingEditor } from \"./editor\";\nimport { pricingDefaults } from \"./defaults\";\nimport type { PricingSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Pricing: Widget<PricingSettings> = {\n metadata: pricingMetadata,\n widget: PricingWidget,\n editor: PricingEditor,\n getDefaultSettings: () => pricingDefaults,\n layouts: [\n { id: \"grid\", name: \"Grid\" },\n { id: \"stacked\", name: \"Stacked\" },\n { id: \"highlight\", name: \"Highlight\" },\n ],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const bannerMetadata: WidgetMetadata = {\n name: \"banner\",\n displayName: \"Banner\",\n description: \"A strong, punchy call-to-action strip.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport type { ThemeStyle, WidgetProps } from \"../../models\";\nimport type { BannerSettings } from \"./settings\";\nimport { NavLink, TextRenderer } from \"../../components\";\nimport {\n Button,\n Header1,\n PageCard,\n PageCardContent,\n Section,\n Subheader1,\n} from \"../../primitives\";\n\nexport function BannerWidget({\n settings: {\n title,\n description,\n buttonCaption,\n buttonAction,\n secondaryButtonCaption,\n secondaryButtonAction,\n contentAlignment = \"center\",\n layout = \"stacked\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<BannerSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n const isCentered = contentAlignment === \"center\";\n const isSplit = layout === \"split\";\n const isBoxed = layout === \"boxed\";\n\n const heading = (\n <>\n <Header1 theme={overriddenTheme}>{title}</Header1>\n {description && (\n <Subheader1 theme={overriddenTheme} component=\"span\">\n <TextRenderer json={description} theme={overriddenTheme} />\n </Subheader1>\n )}\n </>\n );\n\n const buttons = (buttonAction || secondaryButtonAction) && (\n <div\n className={clsx(\n \"flex flex-col md:!flex-row gap-2 w-full md:w-auto\",\n isSplit ? \"shrink-0\" : \"mt-2\",\n !isSplit && isCentered ? \"md:!justify-center\" : \"\",\n )}\n >\n {buttonAction && buttonCaption && (\n <NavLink href={buttonAction}>\n <Button\n theme={overriddenTheme}\n className=\"w-full md:min-w-[150px]\"\n >\n {buttonCaption}\n </Button>\n </NavLink>\n )}\n {secondaryButtonAction && secondaryButtonCaption && (\n <NavLink href={secondaryButtonAction}>\n <Button\n theme={overriddenTheme}\n variant=\"secondary\"\n className=\"w-full md:min-w-[150px]\"\n >\n {secondaryButtonCaption}\n </Button>\n </NavLink>\n )}\n </div>\n );\n\n const content = isSplit ? (\n <div className=\"flex flex-col gap-6 md:!flex-row md:items-center md:justify-between\">\n <div className=\"flex flex-col items-start gap-4\">{heading}</div>\n {buttons}\n </div>\n ) : (\n <div\n className={clsx(\n \"flex flex-col gap-4\",\n isCentered ? \"items-center text-center\" : \"items-start\",\n )}\n >\n {heading}\n {buttons}\n </div>\n );\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n {isBoxed ? (\n <PageCard theme={overriddenTheme} className=\"mx-auto max-w-3xl\">\n <PageCardContent\n theme={overriddenTheme}\n className=\"items-center p-8 text-center md:p-12\"\n >\n {content}\n </PageCardContent>\n </PageCard>\n ) : (\n content\n )}\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { BannerSettings } from \"./settings\";\nimport { Editor, emptyDoc } from \"@frontlit/text-editor\";\nimport { FieldGroup, SelectField, TextField } from \"../_shared/fields\";\n\nexport function BannerEditor({\n settings,\n onChange,\n}: WidgetEditorProps<BannerSettings>) {\n const update = (partial: Partial<BannerSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Content\">\n <TextField\n label=\"Title\"\n value={settings.title}\n onChange={(title) => update({ title })}\n />\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"font-medium text-foreground\">\n Description\n </span>\n <Editor\n initialContent={settings.description ?? emptyDoc}\n onChange={(description: any) => update({ description })}\n showToolbar={false}\n editorClassName=\"min-h-[80px]\"\n />\n </div>\n </FieldGroup>\n <FieldGroup title=\"Calls to action\">\n <TextField\n label=\"Primary button text\"\n value={settings.buttonCaption}\n onChange={(buttonCaption) => update({ buttonCaption })}\n />\n <TextField\n label=\"Primary button link\"\n value={settings.buttonAction}\n onChange={(buttonAction) => update({ buttonAction })}\n />\n <TextField\n label=\"Secondary button text\"\n value={settings.secondaryButtonCaption}\n onChange={(secondaryButtonCaption) =>\n update({ secondaryButtonCaption })\n }\n />\n <TextField\n label=\"Secondary button link\"\n value={settings.secondaryButtonAction}\n onChange={(secondaryButtonAction) =>\n update({ secondaryButtonAction })\n }\n />\n </FieldGroup>\n <FieldGroup title=\"Layout\">\n <SelectField\n label=\"Content alignment\"\n value={settings.contentAlignment ?? \"center\"}\n onChange={(contentAlignment) =>\n update({ contentAlignment })\n }\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n ]}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { BannerSettings } from \"./settings\";\n\nexport const bannerDefaults: Partial<BannerSettings> = {\n title: \"Ready to launch your site?\",\n buttonCaption: \"Contact us\",\n buttonAction: \"/help\",\n secondaryButtonCaption: \"Read the docs\",\n secondaryButtonAction: \"/docs\",\n contentAlignment: \"center\",\n};\n","import type { Widget } from \"../../models\";\nimport { bannerMetadata } from \"./metadata\";\nimport { BannerWidget } from \"./widget\";\nimport { BannerEditor } from \"./editor\";\nimport { bannerDefaults } from \"./defaults\";\nimport type { BannerSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Banner: Widget<BannerSettings> = {\n metadata: bannerMetadata,\n widget: BannerWidget,\n editor: BannerEditor,\n getDefaultSettings: () => bannerDefaults,\n layouts: [\n { id: \"stacked\", name: \"Stacked\" },\n { id: \"split\", name: \"Split\" },\n { id: \"boxed\", name: \"Boxed\" },\n ],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const emailFormMetadata: WidgetMetadata = {\n name: \"email-form\",\n displayName: \"Email signup\",\n description:\n \"An email signup form with a title, description and email input.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import React, { useState } from \"react\";\nimport clsx from \"clsx\";\nimport type { PageData, ThemeStyle, WidgetProps } from \"../../models\";\nimport type { EmailFormSettings } from \"./settings\";\nimport { TextRenderer } from \"../../components\";\nimport {\n Button,\n Header1,\n Input,\n Label,\n Section,\n Subheader1,\n Text2,\n} from \"../../primitives\";\n\n/**\n * Captures a lead via FrontLit's public, unauthenticated lead-capture\n * endpoint (architecture.md §10.2), which enqueues a SendLit contact-sync\n * job and returns immediately — capture never depends on SendLit being\n * reachable. Falls back to a local-only success (no network call) when the\n * page isn't wired to a live team/API, e.g. an isolated component preview.\n */\nasync function subscribeEmail(\n email: string,\n pageData: PageData,\n): Promise<{ success: boolean }> {\n if (!pageData.teamId || !pageData.publicApiBaseUrl) {\n await new Promise((resolve) => setTimeout(resolve, 600));\n return { success: Boolean(email) };\n }\n\n try {\n const res = await fetch(\n `${pageData.publicApiBaseUrl}/public/${pageData.teamId}/leads`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({\n email,\n sourcePath: pageData.pageSlug\n ? `/${pageData.pageSlug}`\n : undefined,\n }),\n },\n );\n if (!res.ok) return { success: false };\n const body = (await res.json()) as { accepted: boolean };\n return { success: body.accepted };\n } catch {\n return { success: false };\n }\n}\n\nexport function EmailFormWidget({\n settings: {\n title,\n description,\n buttonCaption = \"Subscribe\",\n successMessage = \"Thanks for subscribing!\",\n alignment = \"left\",\n layout = \"stacked\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n pageData,\n editing,\n nextTheme,\n}: WidgetProps<EmailFormSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n const [email, setEmail] = useState(\"\");\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [success, setSuccess] = useState(false);\n\n const isCentered = alignment === \"center\";\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (editing) return;\n\n setIsSubmitting(true);\n try {\n const result = await subscribeEmail(email, pageData);\n if (result.success) {\n setSuccess(true);\n setEmail(\"\");\n }\n } finally {\n setIsSubmitting(false);\n }\n };\n\n if (layout === \"inline\") {\n // Single-row minimal prompt — title/description beside a bare\n // input+button, no label. Common for a compact in-page nudge\n // rather than a dedicated email section.\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <form\n onSubmit={onSubmit}\n className=\"flex flex-col items-start gap-4 md:!flex-row md:items-center md:justify-between\"\n >\n <div className=\"flex flex-col gap-1\">\n <Header1 theme={overriddenTheme} className=\"text-xl\">\n {title}\n </Header1>\n {description && (\n <Subheader1\n theme={overriddenTheme}\n component=\"span\"\n >\n <TextRenderer\n json={description}\n theme={overriddenTheme}\n />\n </Subheader1>\n )}\n </div>\n {success ? (\n <Text2 theme={overriddenTheme}>{successMessage}</Text2>\n ) : (\n <div className=\"flex w-full flex-col gap-2 sm:!flex-row md:w-auto md:shrink-0\">\n <Input\n theme={overriddenTheme}\n id=\"email\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder=\"Enter your email\"\n type=\"email\"\n required\n className=\"md:w-64\"\n />\n <Button\n theme={overriddenTheme}\n type=\"submit\"\n disabled={!editing && (isSubmitting || !email)}\n >\n {buttonCaption}\n </Button>\n </div>\n )}\n </form>\n </Section>\n );\n }\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <form\n onSubmit={onSubmit}\n className={clsx(\n \"flex gap-4\",\n layout === \"split\"\n ? \"flex-col md:!flex-row md:items-center md:justify-between md:gap-10\"\n : clsx(\n \"flex-col\",\n isCentered\n ? \"items-center text-center\"\n : \"items-start\",\n ),\n )}\n >\n <div\n className={clsx(\n \"flex flex-col gap-4\",\n layout === \"split\" ? \"items-start\" : \"contents\",\n )}\n >\n <Header1 theme={overriddenTheme}>{title}</Header1>\n {description && (\n <Subheader1 theme={overriddenTheme} component=\"span\">\n <TextRenderer\n json={description}\n theme={overriddenTheme}\n />\n </Subheader1>\n )}\n </div>\n {success ? (\n <Text2 theme={overriddenTheme}>{successMessage}</Text2>\n ) : (\n <div\n className={clsx(\n \"flex flex-col md:!flex-row md:!items-end gap-2\",\n layout === \"split\" ? \"md:shrink-0\" : \"w-full\",\n layout !== \"split\" && isCentered\n ? \"md:!justify-center\"\n : \"\",\n )}\n >\n <div className=\"flex flex-col gap-1 items-start\">\n <Label theme={overriddenTheme} htmlFor=\"email\">\n Email\n </Label>\n <Input\n theme={overriddenTheme}\n id=\"email\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder=\"Enter your email\"\n type=\"email\"\n required\n />\n </div>\n <Button\n theme={overriddenTheme}\n type=\"submit\"\n disabled={!editing && (isSubmitting || !email)}\n >\n {buttonCaption}\n </Button>\n </div>\n )}\n </form>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { EmailFormSettings } from \"./settings\";\nimport { Editor, emptyDoc } from \"@frontlit/text-editor\";\nimport { FieldGroup, SelectField, TextField } from \"../_shared/fields\";\n\nexport function EmailFormEditor({\n settings,\n onChange,\n}: WidgetEditorProps<EmailFormSettings>) {\n const update = (partial: Partial<EmailFormSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Content\">\n <TextField\n label=\"Title\"\n value={settings.title}\n onChange={(title) => update({ title })}\n />\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"font-medium text-foreground\">\n Description\n </span>\n <Editor\n initialContent={settings.description ?? emptyDoc}\n onChange={(description: any) => update({ description })}\n showToolbar={false}\n editorClassName=\"min-h-[80px]\"\n />\n </div>\n </FieldGroup>\n <FieldGroup title=\"Form\">\n <TextField\n label=\"Button text\"\n value={settings.buttonCaption}\n onChange={(buttonCaption) => update({ buttonCaption })}\n />\n <TextField\n label=\"Success message\"\n value={settings.successMessage}\n onChange={(successMessage) => update({ successMessage })}\n />\n </FieldGroup>\n <FieldGroup title=\"Layout\">\n <SelectField\n label=\"Alignment\"\n value={settings.alignment ?? \"left\"}\n onChange={(alignment) => update({ alignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n ]}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { EmailFormSettings } from \"./settings\";\n\nexport const emailFormDefaults: Partial<EmailFormSettings> = {\n title: \"Get product updates in your inbox\",\n buttonCaption: \"Subscribe\",\n successMessage: \"Thanks for subscribing! Check your inbox soon.\",\n alignment: \"left\",\n};\n","import type { Widget } from \"../../models\";\nimport { emailFormMetadata } from \"./metadata\";\nimport { EmailFormWidget } from \"./widget\";\nimport { EmailFormEditor } from \"./editor\";\nimport { emailFormDefaults } from \"./defaults\";\nimport type { EmailFormSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const EmailForm: Widget<EmailFormSettings> = {\n metadata: emailFormMetadata,\n widget: EmailFormWidget,\n editor: EmailFormEditor,\n getDefaultSettings: () => emailFormDefaults,\n layouts: [\n { id: \"stacked\", name: \"Stacked\" },\n { id: \"split\", name: \"Split\" },\n { id: \"inline\", name: \"Inline\" },\n ],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const supportFormMetadata: WidgetMetadata = {\n name: \"support-form\",\n displayName: \"Support form\",\n description:\n \"Raises a support ticket, suggesting matching help articles before the visitor submits.\",\n compatibleWith: [\"site\", \"landing\", \"custom\"],\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport clsx from \"clsx\";\nimport type { PageData, ThemeStyle, WidgetProps } from \"../../models\";\nimport type { SupportFormSettings } from \"./settings\";\nimport { TextRenderer } from \"../../components\";\nimport {\n Button,\n Header1,\n Input,\n Label,\n Section,\n Subheader1,\n Text2,\n} from \"../../primitives\";\nimport { cn } from \"../../primitives/lib/utils\";\n\ninterface DocumentationSuggestion {\n documentId: string;\n slug: string;\n title: string | null;\n kind?: \"blog\" | \"doc\" | \"changelog\";\n}\n\nfunction suggestionHref(item: DocumentationSuggestion) {\n if (item.kind === \"blog\") return `/blog/${item.slug}`;\n if (item.kind === \"changelog\") return `/changelog`;\n return `/docs/${item.slug}`;\n}\n\n/** Documentation deflection (architecture.md §6.4/§11.2): searches the\n * team's published docs as the visitor types a subject, before they ever\n * submit a ticket. No-ops in isolated previews with no live team/API. */\nasync function searchDocumentation(\n query: string,\n pageData: PageData,\n): Promise<DocumentationSuggestion[]> {\n if (\n !pageData.teamId ||\n !pageData.publicApiBaseUrl ||\n query.trim().length < 3\n )\n return [];\n\n try {\n const res = await fetch(\n `${pageData.publicApiBaseUrl}/public/${pageData.teamId}/content/documentation/search?q=${encodeURIComponent(query)}&k=3`,\n );\n if (!res.ok) return [];\n const body = (await res.json()) as {\n items: DocumentationSuggestion[];\n };\n const seen = new Set<string>();\n return body.items.filter((item) =>\n seen.has(item.documentId)\n ? false\n : (seen.add(item.documentId), true),\n );\n } catch {\n return [];\n }\n}\n\n/** Raises a support ticket via FrontLit's public, unauthenticated ticket\n * endpoint (architecture.md §11.2) — one of the three submission doors,\n * source: \"form\". Falls back to a local-only success in isolated previews. */\nasync function submitTicket(\n input: { subject: string; message: string; email: string; name?: string },\n pageData: PageData,\n): Promise<{ success: boolean }> {\n if (!pageData.teamId || !pageData.publicApiBaseUrl) {\n await new Promise((resolve) => setTimeout(resolve, 600));\n return { success: true };\n }\n\n try {\n const res = await fetch(\n `${pageData.publicApiBaseUrl}/public/${pageData.teamId}/tickets`,\n {\n method: \"POST\",\n headers: { \"content-type\": \"application/json\" },\n body: JSON.stringify({ ...input, source: \"form\" }),\n },\n );\n return { success: res.ok };\n } catch {\n return { success: false };\n }\n}\n\nexport function SupportFormWidget({\n settings: {\n title,\n description,\n buttonCaption = \"Submit ticket\",\n successMessage = \"Thanks — we've got your ticket and will reply by email soon.\",\n alignment = \"left\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n pageData,\n editing,\n nextTheme,\n}: WidgetProps<SupportFormSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n const [subject, setSubject] = useState(\"\");\n const [message, setMessage] = useState(\"\");\n const [email, setEmail] = useState(\"\");\n const [name, setName] = useState(\"\");\n const [suggestions, setSuggestions] = useState<DocumentationSuggestion[]>(\n [],\n );\n const [isSubmitting, setIsSubmitting] = useState(false);\n const [success, setSuccess] = useState(false);\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (editing) return;\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n searchDocumentation(subject, pageData).then(setSuggestions);\n }, 400);\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subject]);\n\n const onSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (editing) return;\n\n setIsSubmitting(true);\n try {\n const result = await submitTicket(\n { subject, message, email, name: name || undefined },\n pageData,\n );\n if (result.success) {\n setSuccess(true);\n setSubject(\"\");\n setMessage(\"\");\n setEmail(\"\");\n setName(\"\");\n setSuggestions([]);\n }\n } finally {\n setIsSubmitting(false);\n }\n };\n\n const isCentered = alignment === \"center\";\n const inputStyles = overriddenTheme.interactives.input;\n const inputTypography = overriddenTheme.typography.input;\n const cardStyles = overriddenTheme.interactives.card;\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div\n className={clsx(\n \"flex flex-col gap-4\",\n isCentered ? \"items-center text-center\" : \"items-start\",\n )}\n >\n <Header1 theme={overriddenTheme}>{title}</Header1>\n {description && (\n <Subheader1 theme={overriddenTheme} component=\"span\">\n <TextRenderer\n json={description}\n theme={overriddenTheme}\n />\n </Subheader1>\n )}\n </div>\n\n {success ? (\n <Text2 theme={overriddenTheme} className=\"mt-4\">\n {successMessage}\n </Text2>\n ) : (\n <form\n onSubmit={onSubmit}\n className=\"mt-4 flex w-full max-w-lg flex-col gap-3\"\n >\n <div className=\"flex flex-col gap-1 items-start\">\n <Label theme={overriddenTheme} htmlFor=\"subject\">\n Subject\n </Label>\n <Input\n theme={overriddenTheme}\n id=\"subject\"\n value={subject}\n onChange={(e) => setSubject(e.target.value)}\n placeholder=\"What do you need help with?\"\n required\n className=\"w-full\"\n />\n </div>\n\n {suggestions.length > 0 && (\n <div\n className={cn(\n \"rounded-lg border border-border bg-card p-3 text-sm text-card-foreground shadow-sm\",\n cardStyles.border?.width,\n cardStyles.border?.radius,\n cardStyles.border?.style,\n cardStyles.shadow,\n )}\n >\n <p className=\"mb-1 font-medium\">This might help:</p>\n <ul className=\"list-inside list-disc\">\n {suggestions.map((doc) => (\n <li key={doc.documentId}>\n <a\n href={suggestionHref(doc)}\n target=\"_blank\"\n rel=\"noreferrer\"\n className=\"underline\"\n >\n {doc.title ?? doc.slug}\n </a>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n <div className=\"flex flex-col gap-1 items-start\">\n <Label theme={overriddenTheme} htmlFor=\"message\">\n Message\n </Label>\n <textarea\n id=\"message\"\n value={message}\n onChange={(e) => setMessage(e.target.value)}\n placeholder=\"Describe the issue…\"\n required\n rows={4}\n className={cn(\n \"w-full border border-input bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring\",\n inputTypography.fontFamily,\n inputTypography.fontSize,\n inputTypography.fontWeight,\n inputTypography.lineHeight,\n inputTypography.letterSpacing,\n inputStyles.border?.width,\n inputStyles.border?.style,\n inputStyles.border?.radius,\n inputStyles.shadow,\n inputStyles.custom,\n )}\n />\n </div>\n\n <div className=\"flex flex-col gap-3 sm:!flex-row\">\n <div className=\"flex flex-1 flex-col gap-1 items-start\">\n <Label theme={overriddenTheme} htmlFor=\"email\">\n Email\n </Label>\n <Input\n theme={overriddenTheme}\n id=\"email\"\n type=\"email\"\n value={email}\n onChange={(e) => setEmail(e.target.value)}\n placeholder=\"you@example.com\"\n required\n className=\"w-full\"\n />\n </div>\n <div className=\"flex flex-1 flex-col gap-1 items-start\">\n <Label theme={overriddenTheme} htmlFor=\"name\">\n Name (optional)\n </Label>\n <Input\n theme={overriddenTheme}\n id=\"name\"\n value={name}\n onChange={(e) => setName(e.target.value)}\n placeholder=\"Your name\"\n className=\"w-full\"\n />\n </div>\n </div>\n\n <Button\n theme={overriddenTheme}\n type=\"submit\"\n disabled={\n !editing &&\n (isSubmitting || !subject || !message || !email)\n }\n className=\"self-start\"\n >\n {buttonCaption}\n </Button>\n </form>\n )}\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { SupportFormSettings } from \"./settings\";\nimport { Editor, emptyDoc } from \"@frontlit/text-editor\";\nimport { FieldGroup, SelectField, TextField } from \"../_shared/fields\";\n\nexport function SupportFormEditor({\n settings,\n onChange,\n}: WidgetEditorProps<SupportFormSettings>) {\n const update = (partial: Partial<SupportFormSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Content\">\n <TextField\n label=\"Title\"\n value={settings.title}\n onChange={(title) => update({ title })}\n />\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"font-medium text-foreground\">\n Description\n </span>\n <Editor\n initialContent={settings.description ?? emptyDoc}\n onChange={(description: any) => update({ description })}\n showToolbar={false}\n editorClassName=\"min-h-[80px]\"\n />\n </div>\n </FieldGroup>\n <FieldGroup title=\"Form\">\n <TextField\n label=\"Button text\"\n value={settings.buttonCaption}\n onChange={(buttonCaption) => update({ buttonCaption })}\n />\n <TextField\n label=\"Success message\"\n value={settings.successMessage}\n onChange={(successMessage) => update({ successMessage })}\n />\n </FieldGroup>\n <FieldGroup title=\"Layout\">\n <SelectField\n label=\"Alignment\"\n value={settings.alignment ?? \"left\"}\n onChange={(alignment) => update({ alignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n ]}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { SupportFormSettings } from \"./settings\";\n\nexport const supportFormDefaults: Partial<SupportFormSettings> = {\n title: \"Need help?\",\n buttonCaption: \"Submit ticket\",\n successMessage:\n \"Thanks — we've got your ticket and will reply by email soon.\",\n alignment: \"left\",\n};\n","import type { Widget } from \"../../models\";\nimport { supportFormMetadata } from \"./metadata\";\nimport { SupportFormWidget } from \"./widget\";\nimport { SupportFormEditor } from \"./editor\";\nimport { supportFormDefaults } from \"./defaults\";\nimport type { SupportFormSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const SupportForm: Widget<SupportFormSettings> = {\n metadata: supportFormMetadata,\n widget: SupportFormWidget,\n editor: SupportFormEditor,\n getDefaultSettings: () => supportFormDefaults,\n layouts: [{ id: \"stacked\", name: \"Stacked\" }],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const footerMetadata: WidgetMetadata = {\n name: \"footer\",\n displayName: \"Footer\",\n description: \"The site footer, pinned to the bottom of every page.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import React from \"react\";\nimport type { WidgetProps, ThemeStyle } from \"../../models\";\nimport type { FooterSettings } from \"./settings\";\nimport { NavLink } from \"../../components\";\nimport {\n Caption,\n Header3,\n Header4,\n Link as PrimitiveLink,\n Section,\n Text2,\n} from \"../../primitives\";\n\nexport function FooterWidget({\n settings: {\n logoText,\n tagline,\n columns = [],\n copyrightText,\n layout = \"columns\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<FooterSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n return (\n <Section\n theme={overriddenTheme}\n component=\"footer\"\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n className=\"border-t\"\n >\n {layout === \"minimal\" ? (\n <div className=\"flex w-full flex-wrap items-center justify-between gap-4\">\n {logoText && (\n <Header4 theme={overriddenTheme}>{logoText}</Header4>\n )}\n <div className=\"flex flex-wrap items-center gap-x-6 gap-y-2\">\n {columns.flatMap((column) =>\n column.links.map((link) => (\n <NavLink\n key={`${column.id}-${link.id}`}\n href={link.href}\n className=\"no-underline\"\n >\n <PrimitiveLink\n theme={overriddenTheme}\n className=\"text-xs\"\n >\n {link.label}\n </PrimitiveLink>\n </NavLink>\n )),\n )}\n {copyrightText && (\n <Caption theme={overriddenTheme}>\n {copyrightText}\n </Caption>\n )}\n </div>\n </div>\n ) : layout === \"centered\" ? (\n <div className=\"flex w-full flex-col items-center gap-6 text-center\">\n <div className=\"flex max-w-sm flex-col items-center gap-3\">\n {logoText && (\n <Header3 theme={overriddenTheme}>\n {logoText}\n </Header3>\n )}\n {tagline && (\n <Text2 theme={overriddenTheme}>{tagline}</Text2>\n )}\n </div>\n <div className=\"flex flex-wrap justify-center gap-x-6 gap-y-2\">\n {columns.flatMap((column) =>\n column.links.map((link) => (\n <NavLink\n key={`${column.id}-${link.id}`}\n href={link.href}\n className=\"no-underline\"\n >\n <PrimitiveLink\n theme={overriddenTheme}\n className=\"text-xs\"\n >\n {link.label}\n </PrimitiveLink>\n </NavLink>\n )),\n )}\n </div>\n </div>\n ) : (\n <div className=\"flex w-full flex-col gap-8 lg:!flex-row lg:justify-between\">\n <div className=\"flex max-w-sm flex-col gap-3\">\n {logoText && (\n <Header3 theme={overriddenTheme}>\n {logoText}\n </Header3>\n )}\n {tagline && (\n <Text2 theme={overriddenTheme}>{tagline}</Text2>\n )}\n </div>\n <div className=\"flex flex-col flex-wrap gap-8 lg:!flex-row\">\n {columns.map((column) => (\n <div\n key={column.id}\n className=\"flex flex-col gap-3 lg:min-w-[140px]\"\n >\n <Header4\n theme={overriddenTheme}\n className=\"text-sm\"\n >\n {column.title}\n </Header4>\n <div className=\"flex flex-col gap-2\">\n {column.links.map((link) => (\n <NavLink\n key={link.id}\n href={link.href}\n className=\"no-underline\"\n >\n <PrimitiveLink\n theme={overriddenTheme}\n className=\"text-xs\"\n >\n {link.label}\n </PrimitiveLink>\n </NavLink>\n ))}\n </div>\n </div>\n ))}\n </div>\n </div>\n )}\n {copyrightText && layout !== \"minimal\" && (\n <div\n className={\n layout === \"centered\"\n ? \"mt-8 border-t pt-6 text-center\"\n : \"mt-8 border-t pt-6\"\n }\n >\n <Caption theme={overriddenTheme}>{copyrightText}</Caption>\n </div>\n )}\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { FooterColumn, FooterLink, FooterSettings } from \"./settings\";\nimport { generateUniqueId } from \"../../utils\";\nimport { FieldGroup, ListField, TextField } from \"../_shared/fields\";\n\nexport function FooterEditor({\n settings,\n onChange,\n}: WidgetEditorProps<FooterSettings>) {\n const update = (partial: Partial<FooterSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Brand\">\n <TextField\n label=\"Logo text\"\n value={settings.logoText}\n onChange={(logoText) => update({ logoText })}\n />\n <TextField\n label=\"Tagline\"\n value={settings.tagline}\n multiline\n onChange={(tagline) => update({ tagline })}\n />\n </FieldGroup>\n <FieldGroup title=\"Link columns\">\n <ListField<FooterColumn>\n label=\"Columns\"\n items={settings.columns ?? []}\n onChange={(columns) => update({ columns })}\n createItem={() => ({\n id: generateUniqueId(),\n title: \"New column\",\n links: [],\n })}\n addLabel=\"Add column\"\n renderItem={(column, updateColumn, removeColumn) => (\n <>\n <TextField\n label=\"Column title\"\n value={column.title}\n onChange={(title) => updateColumn({ title })}\n />\n <ListField<FooterLink>\n label=\"Links\"\n items={column.links}\n onChange={(links) => updateColumn({ links })}\n createItem={() => ({\n id: generateUniqueId(),\n label: \"New link\",\n href: \"#\",\n })}\n addLabel=\"Add link\"\n renderItem={(link, updateLink, removeLink) => (\n <>\n <TextField\n label=\"Label\"\n value={link.label}\n onChange={(label) =>\n updateLink({ label })\n }\n />\n <TextField\n label=\"Link\"\n value={link.href}\n onChange={(href) =>\n updateLink({ href })\n }\n />\n <button\n type=\"button\"\n className=\"self-start text-xs text-destructive\"\n onClick={removeLink}\n >\n Remove link\n </button>\n </>\n )}\n />\n <button\n type=\"button\"\n className=\"self-start text-xs text-destructive\"\n onClick={removeColumn}\n >\n Remove column\n </button>\n </>\n )}\n />\n </FieldGroup>\n <FieldGroup title=\"Copyright\">\n <TextField\n label=\"Copyright text\"\n value={settings.copyrightText}\n onChange={(copyrightText) => update({ copyrightText })}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { FooterSettings } from \"./settings\";\nimport { generateUniqueId } from \"../../utils\";\n\nexport const footerDefaults: Partial<FooterSettings> = {\n logoText: \"FrontLit\",\n tagline:\n \"Build your website, publish content, support users, and grow your audience from one dashboard.\",\n columns: [\n {\n id: generateUniqueId(),\n title: \"Product\",\n links: [\n {\n id: generateUniqueId(),\n label: \"Features\",\n href: \"/#features\",\n },\n { id: generateUniqueId(), label: \"Pricing\", href: \"/#pricing\" },\n {\n id: generateUniqueId(),\n label: \"Changelog\",\n href: \"/changelog\",\n },\n ],\n },\n {\n id: generateUniqueId(),\n title: \"Resources\",\n links: [\n { id: generateUniqueId(), label: \"Blog\", href: \"/blog\" },\n { id: generateUniqueId(), label: \"Help center\", href: \"/help\" },\n { id: generateUniqueId(), label: \"Docs\", href: \"/docs\" },\n ],\n },\n {\n id: generateUniqueId(),\n title: \"Legal\",\n links: [\n {\n id: generateUniqueId(),\n label: \"Terms of use\",\n href: \"/terms\",\n },\n {\n id: generateUniqueId(),\n label: \"Privacy policy\",\n href: \"/privacy\",\n },\n ],\n },\n ],\n copyrightText: \"© FrontLit. All rights reserved.\",\n};\n","import type { Widget } from \"../../models\";\nimport { footerMetadata } from \"./metadata\";\nimport { FooterWidget } from \"./widget\";\nimport { FooterEditor } from \"./editor\";\nimport { footerDefaults } from \"./defaults\";\nimport type { FooterSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Footer: Widget<FooterSettings> = {\n metadata: footerMetadata,\n widget: FooterWidget,\n editor: FooterEditor,\n getDefaultSettings: () => footerDefaults,\n layouts: [\n { id: \"columns\", name: \"Columns\" },\n { id: \"centered\", name: \"Centered\" },\n { id: \"minimal\", name: \"Minimal\" },\n ],\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const richTextMetadata: WidgetMetadata = {\n name: \"rich-text\",\n displayName: \"Rich text\",\n description:\n \"A block of formatted text — paragraphs, headings, lists and links — with no title or media.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import React from \"react\";\nimport type { ThemeStyle, WidgetProps } from \"../../models\";\nimport type { RichTextSettings } from \"./settings\";\nimport { TextRenderer } from \"../../components\";\nimport { Section, Text1 } from \"../../primitives\";\n\nexport function RichTextWidget({\n settings: {\n text,\n alignment = \"left\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<RichTextSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n if (!text) return null;\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div style={{ textAlign: alignment }}>\n <Text1 theme={overriddenTheme} component=\"span\">\n <TextRenderer json={text} theme={overriddenTheme} />\n </Text1>\n </div>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { RichTextSettings } from \"./settings\";\nimport { Editor, emptyDoc } from \"@frontlit/text-editor\";\nimport { FieldGroup, SelectField } from \"../_shared/fields\";\n\nexport function RichTextEditor({\n settings,\n onChange,\n}: WidgetEditorProps<RichTextSettings>) {\n const update = (partial: Partial<RichTextSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Content\">\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"font-medium text-foreground\">Text</span>\n <Editor\n initialContent={settings.text ?? emptyDoc}\n onChange={(text: any) => update({ text })}\n editorClassName=\"min-h-[160px]\"\n />\n </div>\n <SelectField\n label=\"Alignment\"\n value={settings.alignment ?? \"left\"}\n onChange={(alignment) => update({ alignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n { label: \"Right\", value: \"right\" },\n ]}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { RichTextSettings } from \"./settings\";\n\nexport const richTextDefaults: Partial<RichTextSettings> = {\n text: {\n type: \"doc\",\n content: [\n {\n type: \"paragraph\",\n content: [\n {\n type: \"text\",\n text: \"Write anything here — an announcement, a longer explanation, or a passage of prose that doesn't need a title or media.\",\n },\n ],\n },\n ],\n },\n alignment: \"left\",\n};\n","import type { Widget } from \"../../models\";\nimport { richTextMetadata } from \"./metadata\";\nimport { RichTextWidget } from \"./widget\";\nimport { RichTextEditor } from \"./editor\";\nimport { richTextDefaults } from \"./defaults\";\nimport type { RichTextSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const RichText: Widget<RichTextSettings> = {\n metadata: richTextMetadata,\n widget: RichTextWidget,\n editor: RichTextEditor,\n getDefaultSettings: () => richTextDefaults,\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const gridMetadata: WidgetMetadata = {\n name: \"grid\",\n displayName: \"Grid\",\n description:\n \"A header with a page-level call to action, plus a responsive grid of cards — each with its own icon or image, title, description and link.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import React from \"react\";\nimport clsx from \"clsx\";\nimport * as Icons from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport type { ThemeStyle, WidgetProps } from \"../../models\";\nimport type { GridItem, GridSettings } from \"./settings\";\nimport { Image, NavLink, TextRenderer } from \"../../components\";\nimport {\n Button,\n Header1,\n Header4,\n PageCard,\n PageCardContent,\n Section,\n Subheader1,\n Text2,\n} from \"../../primitives\";\n\nfunction resolveIcon(name?: string): LucideIcon | null {\n if (!name) return null;\n return (Icons as unknown as Record<string, LucideIcon>)[name] ?? null;\n}\n\nfunction GridItemCard({ item, theme }: { item: GridItem; theme: ThemeStyle }) {\n const Icon = resolveIcon(item.icon);\n const hasMedia = Boolean(item.media?.file);\n const isOverlay = item.mediaAlignment === \"overlay\";\n const mediaFirst = item.mediaAlignment !== \"bottom\";\n\n if (isOverlay) {\n const card = (\n <PageCard theme={theme} isLink={Boolean(item.buttonAction)}>\n <div className=\"relative aspect-[4/5] w-full overflow-hidden\">\n {hasMedia && (\n <Image\n src={item.media?.file || \"\"}\n alt={item.media?.caption || \"\"}\n className=\"absolute inset-0\"\n width=\"w-full\"\n height=\"h-full\"\n objectFit=\"cover\"\n borderRadius={0}\n />\n )}\n <div className=\"absolute inset-0 bg-gradient-to-t from-black/70 via-black/10 to-transparent\" />\n <div className=\"absolute inset-x-0 bottom-0 p-4\">\n <Header4 theme={theme} className=\"text-white\">\n {item.title}\n </Header4>\n </div>\n </div>\n </PageCard>\n );\n\n return item.buttonAction ? (\n <NavLink href={item.buttonAction} className=\"block\">\n {card}\n </NavLink>\n ) : (\n card\n );\n }\n\n const media = hasMedia ? (\n <div className=\"overflow-hidden rounded-md\">\n <Image\n src={item.media?.file || \"\"}\n alt={item.media?.caption || \"\"}\n />\n </div>\n ) : Icon ? (\n <div className=\"flex h-10 w-10 items-center justify-center rounded-md bg-primary/10 text-primary\">\n <Icon className=\"h-5 w-5\" />\n </div>\n ) : null;\n\n const text = (\n <div className=\"flex flex-col gap-2\">\n <Header4 theme={theme}>{item.title}</Header4>\n {item.description && (\n <Text2 theme={theme}>{item.description}</Text2>\n )}\n {item.buttonAction && item.buttonCaption && (\n <NavLink href={item.buttonAction} className=\"mt-2\">\n <Button theme={theme} variant=\"secondary\" size=\"sm\">\n {item.buttonCaption}\n </Button>\n </NavLink>\n )}\n </div>\n );\n\n return (\n <PageCard theme={theme}>\n <PageCardContent\n theme={theme}\n className=\"flex h-full flex-col gap-3\"\n >\n {mediaFirst ? (\n <>\n {media}\n {text}\n </>\n ) : (\n <>\n {text}\n {media}\n </>\n )}\n </PageCardContent>\n </PageCard>\n );\n}\n\nexport function GridWidget({\n settings: {\n title,\n description,\n headerAlignment = \"center\",\n buttonCaption,\n buttonAction,\n items,\n columns = 3,\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<GridSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div className=\"flex flex-col gap-8\">\n <div\n className={clsx(\n \"flex flex-col gap-4\",\n headerAlignment === \"center\"\n ? \"items-center text-center\"\n : \"items-start\",\n )}\n >\n <Header1 theme={overriddenTheme}>{title}</Header1>\n {description && (\n <Subheader1 theme={overriddenTheme} component=\"span\">\n <TextRenderer\n json={description}\n theme={overriddenTheme}\n />\n </Subheader1>\n )}\n {buttonAction && buttonCaption && (\n <NavLink href={buttonAction} className=\"mt-2\">\n <Button theme={overriddenTheme}>\n {buttonCaption}\n </Button>\n </NavLink>\n )}\n </div>\n {items && items.length > 0 && (\n <div\n className={clsx(\n \"grid grid-cols-1 md:grid-cols-2 gap-6 items-stretch\",\n columns === 3 ? \"lg:grid-cols-3\" : \"lg:grid-cols-2\",\n )}\n >\n {items.map((item, index) => (\n <GridItemCard\n key={index}\n item={item}\n theme={overriddenTheme}\n />\n ))}\n </div>\n )}\n </div>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { GridItem, GridSettings } from \"./settings\";\nimport { Editor, emptyDoc } from \"@frontlit/text-editor\";\nimport {\n FieldGroup,\n ListField,\n NumberField,\n SelectField,\n TextField,\n} from \"../_shared/fields\";\n\nexport function GridEditor({\n settings,\n onChange,\n}: WidgetEditorProps<GridSettings>) {\n const update = (partial: Partial<GridSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Header\">\n <TextField\n label=\"Title\"\n value={settings.title}\n onChange={(title) => update({ title })}\n />\n <div className=\"flex flex-col gap-1 text-sm\">\n <span className=\"font-medium text-foreground\">\n Description\n </span>\n <Editor\n initialContent={settings.description ?? emptyDoc}\n onChange={(description: any) => update({ description })}\n editorClassName=\"min-h-[100px]\"\n />\n </div>\n <SelectField\n label=\"Header alignment\"\n value={settings.headerAlignment ?? \"center\"}\n onChange={(headerAlignment) => update({ headerAlignment })}\n options={[\n { label: \"Left\", value: \"left\" },\n { label: \"Center\", value: \"center\" },\n ]}\n />\n </FieldGroup>\n <FieldGroup title=\"Call to action\">\n <TextField\n label=\"Button text\"\n value={settings.buttonCaption}\n onChange={(buttonCaption) => update({ buttonCaption })}\n />\n <TextField\n label=\"Button link\"\n value={settings.buttonAction}\n placeholder=\"https://...\"\n onChange={(buttonAction) => update({ buttonAction })}\n />\n </FieldGroup>\n <FieldGroup title=\"Items\">\n <NumberField\n label=\"Columns\"\n value={settings.columns ?? 3}\n min={2}\n max={3}\n onChange={(columns) =>\n update({ columns: columns as 2 | 3 })\n }\n />\n <ListField<GridItem>\n label=\"Cards\"\n items={settings.items ?? []}\n onChange={(items) => update({ items })}\n createItem={() => ({\n title: \"New item\",\n mediaAlignment: \"top\",\n })}\n addLabel=\"Add card\"\n renderItem={(item, updateItem, remove) => (\n <>\n <TextField\n label=\"Title\"\n value={item.title}\n onChange={(title) => updateItem({ title })}\n />\n <TextField\n label=\"Description\"\n value={item.description}\n multiline\n onChange={(description) =>\n updateItem({ description })\n }\n />\n <TextField\n label=\"Icon (lucide-react name)\"\n value={item.icon}\n placeholder=\"e.g. Globe\"\n onChange={(icon) => updateItem({ icon })}\n />\n <TextField\n label=\"Image URL (overrides icon)\"\n value={item.media?.file}\n placeholder=\"https://...\"\n onChange={(file) =>\n updateItem({\n media: file\n ? { mediaId: file, file }\n : undefined,\n })\n }\n />\n <SelectField\n label=\"Image position\"\n value={item.mediaAlignment ?? \"top\"}\n onChange={(mediaAlignment) =>\n updateItem({ mediaAlignment })\n }\n options={[\n { label: \"Above title\", value: \"top\" },\n { label: \"Below content\", value: \"bottom\" },\n {\n label: \"Overlay (title over image)\",\n value: \"overlay\",\n },\n ]}\n />\n <TextField\n label=\"Button text\"\n value={item.buttonCaption}\n onChange={(buttonCaption) =>\n updateItem({ buttonCaption })\n }\n />\n <TextField\n label=\"Button link\"\n value={item.buttonAction}\n placeholder=\"https://...\"\n onChange={(buttonAction) =>\n updateItem({ buttonAction })\n }\n />\n <button\n type=\"button\"\n className=\"self-start text-xs text-destructive\"\n onClick={remove}\n >\n Remove\n </button>\n </>\n )}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { GridSettings } from \"./settings\";\n\nexport const gridDefaults: Partial<GridSettings> = {\n title: \"Everything you need, in one place\",\n headerAlignment: \"center\",\n columns: 3,\n items: [\n {\n title: \"Website builder\",\n description:\n \"Design and publish pages with a drag-and-drop editor.\",\n icon: \"LayoutTemplate\",\n mediaAlignment: \"top\",\n buttonCaption: \"See features\",\n buttonAction: \"/#features\",\n },\n {\n title: \"Blog\",\n description: \"Publish articles and grow your audience.\",\n icon: \"Newspaper\",\n mediaAlignment: \"top\",\n buttonCaption: \"Read articles\",\n buttonAction: \"/blog\",\n },\n {\n title: \"Help desk\",\n description: \"Support your customers with a shared inbox.\",\n icon: \"Headset\",\n mediaAlignment: \"top\",\n buttonCaption: \"Contact us\",\n buttonAction: \"/help\",\n },\n ],\n};\n","import type { Widget } from \"../../models\";\nimport { gridMetadata } from \"./metadata\";\nimport { GridWidget } from \"./widget\";\nimport { GridEditor } from \"./editor\";\nimport { gridDefaults } from \"./defaults\";\nimport type { GridSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Grid: Widget<GridSettings> = {\n metadata: gridMetadata,\n widget: GridWidget,\n editor: GridEditor,\n getDefaultSettings: () => gridDefaults,\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const mediaMetadata: WidgetMetadata = {\n name: \"media\",\n displayName: \"Media\",\n description:\n \"A single image or video — YouTube, Vimeo or self-hosted — with an optional click-to-play preview.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import React from \"react\";\nimport type { ThemeStyle, WidgetProps } from \"../../models\";\nimport type { MediaSettings } from \"./settings\";\nimport { Image, VideoWithPreview } from \"../../components\";\nimport { isVideo } from \"../../utils\";\nimport { Section } from \"../../primitives\";\nimport { cn } from \"../../primitives/lib/utils\";\n\nconst roundedMap: Record<number, string> = {\n 0: \"rounded-none\",\n 1: \"rounded-sm\",\n 2: \"rounded\",\n 3: \"rounded-md\",\n 4: \"rounded-lg\",\n 5: \"rounded-xl\",\n 6: \"rounded-2xl\",\n 7: \"rounded-3xl\",\n 8: \"rounded-full\",\n};\n\nexport function MediaWidget({\n settings: {\n media,\n youtubeLink,\n mediaRadius = 2,\n aspectRatio = \"16/9\",\n objectFit = \"cover\",\n hasBorder = true,\n playVideoInModal = false,\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<MediaSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n const isVideoContent = isVideo(youtubeLink, media);\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div\n className={cn(\n \"overflow-hidden\",\n roundedMap[mediaRadius] ?? \"rounded\",\n hasBorder &&\n (overriddenTheme.interactives?.card?.border?.width ||\n \"border\"),\n )}\n >\n {isVideoContent ? (\n <VideoWithPreview\n videoUrl={youtubeLink || media?.file || \"\"}\n title={media?.caption || \"\"}\n thumbnailUrl={media?.thumbnail || \"\"}\n aspectRatio={aspectRatio}\n modal={playVideoInModal}\n />\n ) : (\n <Image\n src={media?.file || \"\"}\n alt={media?.caption || \"\"}\n objectFit={objectFit}\n borderRadius={mediaRadius}\n />\n )}\n </div>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { MediaSettings } from \"./settings\";\nimport { isVideo } from \"../../utils\";\nimport {\n FieldGroup,\n NumberField,\n SelectField,\n TextField,\n ToggleField,\n} from \"../_shared/fields\";\n\nexport function MediaEditor({\n settings,\n onChange,\n}: WidgetEditorProps<MediaSettings>) {\n const update = (partial: Partial<MediaSettings>) =>\n onChange({ ...settings, ...partial });\n const isVideoContent = isVideo(settings.youtubeLink, settings.media);\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Media\">\n <TextField\n label=\"Image URL\"\n value={settings.media?.file}\n placeholder=\"https://...\"\n onChange={(file) =>\n update({\n media: file ? { mediaId: file, file } : undefined,\n })\n }\n />\n <TextField\n label=\"YouTube / Vimeo link\"\n value={settings.youtubeLink}\n placeholder=\"https://youtube.com/watch?v=...\"\n onChange={(youtubeLink) => update({ youtubeLink })}\n />\n {isVideoContent ? (\n <>\n <ToggleField\n label=\"Play video in a pop-up\"\n value={settings.playVideoInModal}\n onChange={(playVideoInModal) =>\n update({ playVideoInModal })\n }\n />\n <SelectField\n label=\"Aspect ratio\"\n value={settings.aspectRatio ?? \"16/9\"}\n onChange={(aspectRatio) => update({ aspectRatio })}\n options={[\n { label: \"Widescreen (16:9)\", value: \"16/9\" },\n { label: \"Standard (4:3)\", value: \"4/3\" },\n { label: \"Square (1:1)\", value: \"1/1\" },\n { label: \"Vertical (9:16)\", value: \"9/16\" },\n ]}\n />\n </>\n ) : (\n <SelectField\n label=\"Object fit\"\n value={settings.objectFit ?? \"cover\"}\n onChange={(objectFit) => update({ objectFit })}\n options={[\n { label: \"Cover\", value: \"cover\" },\n { label: \"Contain\", value: \"contain\" },\n { label: \"Fill\", value: \"fill\" },\n { label: \"None\", value: \"none\" },\n { label: \"Scale down\", value: \"scale-down\" },\n ]}\n />\n )}\n </FieldGroup>\n <FieldGroup title=\"Appearance\">\n <NumberField\n label=\"Corner radius\"\n value={settings.mediaRadius}\n min={0}\n max={8}\n onChange={(mediaRadius) => update({ mediaRadius })}\n />\n <ToggleField\n label=\"Border\"\n value={settings.hasBorder}\n onChange={(hasBorder) => update({ hasBorder })}\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { MediaSettings } from \"./settings\";\n\nexport const mediaDefaults: Partial<MediaSettings> = {\n mediaRadius: 2,\n aspectRatio: \"16/9\",\n objectFit: \"cover\",\n hasBorder: true,\n playVideoInModal: false,\n};\n","import type { Widget } from \"../../models\";\nimport { mediaMetadata } from \"./metadata\";\nimport { MediaWidget } from \"./widget\";\nimport { MediaEditor } from \"./editor\";\nimport { mediaDefaults } from \"./defaults\";\nimport type { MediaSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const MediaBlock: Widget<MediaSettings> = {\n metadata: mediaMetadata,\n widget: MediaWidget,\n editor: MediaEditor,\n getDefaultSettings: () => mediaDefaults,\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const marqueeMetadata: WidgetMetadata = {\n name: \"marquee\",\n displayName: \"Marquee\",\n description:\n \"An infinite horizontally-scrolling row of text or icons — useful for logo clouds or highlight tickers.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","\"use client\";\n\nimport React, { useEffect, useId, useRef, useState } from \"react\";\nimport { cn } from \"../../primitives/lib/utils\";\n\n/**\n * Infinite horizontal scroller. Measures the width of one copy of the\n * content, then renders enough duplicate copies to always cover at least\n * twice the container's width, and animates a translateX loop across\n * exactly one content-width — because the duplicates repeat the same\n * sequence, the loop point is visually seamless regardless of how the\n * content width compares to the container width.\n */\nexport function MarqueeTrack({\n children,\n speed,\n direction,\n pauseOnHover,\n}: {\n children: React.ReactNode;\n speed: number;\n direction: \"left\" | \"right\";\n pauseOnHover?: boolean;\n}) {\n const containerRef = useRef<HTMLDivElement>(null);\n const contentRef = useRef<HTMLDivElement>(null);\n const [containerWidth, setContainerWidth] = useState(0);\n const [contentWidth, setContentWidth] = useState(0);\n const animationName = `pb-marquee-${useId().replace(/[^a-zA-Z0-9]/g, \"\")}`;\n\n useEffect(() => {\n const measure = () => {\n setContainerWidth(containerRef.current?.offsetWidth ?? 0);\n setContentWidth(contentRef.current?.offsetWidth ?? 0);\n };\n measure();\n window.addEventListener(\"resize\", measure);\n return () => window.removeEventListener(\"resize\", measure);\n }, [children, speed]);\n\n const duration = contentWidth > 0 ? contentWidth / speed : 0;\n const duplicatesNeeded =\n contentWidth > 0\n ? Math.max(2, Math.ceil((containerWidth * 2) / contentWidth))\n : 2;\n\n return (\n <div ref={containerRef} className=\"w-full overflow-hidden\">\n {contentWidth > 0 && (\n <style>{`\n @keyframes ${animationName} {\n from { transform: translateX(0); }\n to { transform: translateX(-${contentWidth}px); }\n }\n `}</style>\n )}\n <div\n className={cn(\n \"inline-flex w-max\",\n pauseOnHover && \"hover:[animation-play-state:paused]\",\n )}\n style={\n contentWidth > 0\n ? {\n animation: `${animationName} ${duration}s linear infinite`,\n animationDirection:\n direction === \"left\" ? \"reverse\" : \"normal\",\n }\n : undefined\n }\n >\n <div ref={contentRef} className=\"inline-flex shrink-0\">\n {children}\n </div>\n {Array.from({ length: duplicatesNeeded }).map((_, i) => (\n <div key={i} className=\"inline-flex shrink-0\" aria-hidden>\n {children}\n </div>\n ))}\n </div>\n </div>\n );\n}\n","\"use client\";\n\nimport React from \"react\";\nimport * as Icons from \"lucide-react\";\nimport type { LucideIcon } from \"lucide-react\";\nimport type { ThemeStyle, WidgetProps } from \"../../models\";\nimport type { MarqueeSettings } from \"./settings\";\nimport { NavLink } from \"../../components\";\nimport { Section } from \"../../primitives\";\nimport { MarqueeTrack } from \"./marquee-track\";\n\nfunction resolveIcon(name?: string): LucideIcon | null {\n if (!name) return null;\n return (Icons as unknown as Record<string, LucideIcon>)[name] ?? null;\n}\n\nexport function MarqueeWidget({\n settings: {\n items = [],\n direction = \"right\",\n speed = 60,\n pauseOnHover = true,\n fadeWidth = 50,\n itemBackgroundColor,\n itemForegroundColor,\n itemBorderColor,\n itemBorderRadius = 12,\n itemBorderWidth = 1,\n itemBorderStyle = \"solid\",\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n nextTheme,\n}: WidgetProps<MarqueeSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n if (items.length === 0) return null;\n\n const itemStyle: React.CSSProperties = {\n backgroundColor: itemBackgroundColor || undefined,\n color: itemForegroundColor || undefined,\n borderColor: itemBorderColor || undefined,\n borderRadius: itemBorderRadius,\n borderWidth: itemBorderStyle === \"none\" ? 0 : itemBorderWidth,\n borderStyle: itemBorderStyle === \"none\" ? undefined : itemBorderStyle,\n };\n\n const renderItem = (item: (typeof items)[number]) => {\n const Icon = resolveIcon(item.icon);\n const content = (\n <div\n className=\"mx-2 flex min-h-[80px] min-w-[160px] items-center justify-center px-6\"\n style={itemStyle}\n >\n {Icon ? (\n <Icon className=\"h-8 w-8\" />\n ) : (\n <span className=\"whitespace-nowrap text-sm font-medium\">\n {item.text}\n </span>\n )}\n </div>\n );\n return item.href ? (\n <NavLink key={item.id} href={item.href} openInSameTab={false}>\n {content}\n </NavLink>\n ) : (\n <React.Fragment key={item.id}>{content}</React.Fragment>\n );\n };\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div className=\"relative\" aria-hidden=\"true\">\n <MarqueeTrack\n speed={speed}\n direction={direction}\n pauseOnHover={pauseOnHover}\n >\n {items.map(renderItem)}\n </MarqueeTrack>\n {fadeWidth > 0 && (\n <>\n <div\n className=\"pointer-events-none absolute inset-y-0 left-0 z-10\"\n style={{\n width: fadeWidth,\n background:\n \"linear-gradient(to right, var(--background), transparent)\",\n }}\n />\n <div\n className=\"pointer-events-none absolute inset-y-0 right-0 z-10\"\n style={{\n width: fadeWidth,\n background:\n \"linear-gradient(to left, var(--background), transparent)\",\n }}\n />\n </>\n )}\n </div>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { MarqueeItem, MarqueeSettings } from \"./settings\";\nimport { generateUniqueId } from \"../../utils\";\nimport {\n FieldGroup,\n ListField,\n NumberField,\n SelectField,\n TextField,\n ToggleField,\n} from \"../_shared/fields\";\n\nexport function MarqueeEditor({\n settings,\n onChange,\n}: WidgetEditorProps<MarqueeSettings>) {\n const update = (partial: Partial<MarqueeSettings>) =>\n onChange({ ...settings, ...partial });\n\n return (\n <div className=\"flex flex-col\">\n <FieldGroup title=\"Items\">\n <ListField<MarqueeItem>\n label=\"Items\"\n items={settings.items ?? []}\n onChange={(items) => update({ items })}\n createItem={() => ({\n id: generateUniqueId(),\n text: \"New item\",\n })}\n addLabel=\"Add item\"\n renderItem={(item, updateItem, remove) => (\n <>\n <TextField\n label=\"Text\"\n value={item.text}\n onChange={(text) => updateItem({ text })}\n />\n <TextField\n label=\"Icon (lucide-react name)\"\n value={item.icon}\n placeholder=\"e.g. Globe — overrides text\"\n onChange={(icon) => updateItem({ icon })}\n />\n <TextField\n label=\"Link (optional)\"\n value={item.href}\n placeholder=\"https://...\"\n onChange={(href) => updateItem({ href })}\n />\n <button\n type=\"button\"\n className=\"self-start text-xs text-destructive\"\n onClick={remove}\n >\n Remove\n </button>\n </>\n )}\n />\n </FieldGroup>\n <FieldGroup title=\"Scroll\">\n <SelectField\n label=\"Direction\"\n value={settings.direction ?? \"right\"}\n onChange={(direction) => update({ direction })}\n options={[\n { label: \"Right to left\", value: \"right\" },\n { label: \"Left to right\", value: \"left\" },\n ]}\n />\n <NumberField\n label=\"Speed (px/sec)\"\n value={settings.speed}\n min={10}\n max={200}\n onChange={(speed) => update({ speed })}\n />\n <ToggleField\n label=\"Pause on hover\"\n value={settings.pauseOnHover}\n onChange={(pauseOnHover) => update({ pauseOnHover })}\n />\n <NumberField\n label=\"Edge fade width (px)\"\n value={settings.fadeWidth}\n min={0}\n max={200}\n onChange={(fadeWidth) => update({ fadeWidth })}\n />\n </FieldGroup>\n <FieldGroup title=\"Item style\">\n <TextField\n label=\"Background color\"\n value={settings.itemBackgroundColor}\n placeholder=\"#ffffff\"\n onChange={(itemBackgroundColor) =>\n update({ itemBackgroundColor })\n }\n />\n <TextField\n label=\"Foreground color\"\n value={settings.itemForegroundColor}\n placeholder=\"#000000\"\n onChange={(itemForegroundColor) =>\n update({ itemForegroundColor })\n }\n />\n <TextField\n label=\"Border color\"\n value={settings.itemBorderColor}\n placeholder=\"#e2e8f0\"\n onChange={(itemBorderColor) => update({ itemBorderColor })}\n />\n <SelectField\n label=\"Border style\"\n value={settings.itemBorderStyle ?? \"solid\"}\n onChange={(itemBorderStyle) => update({ itemBorderStyle })}\n options={[\n { label: \"Solid\", value: \"solid\" },\n { label: \"Dashed\", value: \"dashed\" },\n { label: \"Dotted\", value: \"dotted\" },\n { label: \"Double\", value: \"double\" },\n { label: \"None\", value: \"none\" },\n ]}\n />\n <NumberField\n label=\"Border width\"\n value={settings.itemBorderWidth}\n min={0}\n max={10}\n onChange={(itemBorderWidth) => update({ itemBorderWidth })}\n />\n <NumberField\n label=\"Border radius\"\n value={settings.itemBorderRadius}\n min={0}\n max={50}\n onChange={(itemBorderRadius) =>\n update({ itemBorderRadius })\n }\n />\n </FieldGroup>\n </div>\n );\n}\n","import type { MarqueeSettings } from \"./settings\";\nimport { generateUniqueId } from \"../../utils\";\n\nexport const marqueeDefaults: Partial<MarqueeSettings> = {\n items: [\n { id: generateUniqueId(), text: \"Website\" },\n { id: generateUniqueId(), text: \"Content\" },\n { id: generateUniqueId(), text: \"Support\" },\n { id: generateUniqueId(), text: \"Engage\" },\n ],\n direction: \"right\",\n speed: 60,\n pauseOnHover: true,\n fadeWidth: 50,\n itemForegroundColor: \"\",\n itemBackgroundColor: \"\",\n itemBorderColor: \"\",\n itemBorderRadius: 12,\n itemBorderWidth: 1,\n itemBorderStyle: \"solid\",\n};\n","import type { Widget } from \"../../models\";\nimport { marqueeMetadata } from \"./metadata\";\nimport { MarqueeWidget } from \"./widget\";\nimport { MarqueeEditor } from \"./editor\";\nimport { marqueeDefaults } from \"./defaults\";\nimport type { MarqueeSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Marquee: Widget<MarqueeSettings> = {\n metadata: marqueeMetadata,\n widget: MarqueeWidget,\n editor: MarqueeEditor,\n getDefaultSettings: () => marqueeDefaults,\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const embedMetadata: WidgetMetadata = {\n name: \"embed\",\n displayName: \"Embed\",\n description:\n \"Embed a URL in an iframe, or paste a script/iframe snippet from a third-party tool.\",\n compatibleWith: [\"site\", \"landing\", \"blog\", \"post\", \"custom\"],\n};\n","import React from \"react\";\nimport { Code2 } from \"lucide-react\";\nimport type { ThemeStyle, WidgetProps } from \"../../models\";\nimport type { EmbedSettings } from \"./settings\";\nimport { SandboxedEmbed } from \"../../components\";\nimport { Section } from \"../../primitives\";\n\nconst aspectRatioMap: Record<string, number> = {\n \"16:9\": 16 / 9,\n \"4:3\": 4 / 3,\n \"1:1\": 1,\n};\n\nexport function EmbedWidget({\n settings: {\n contentType = \"url\",\n content,\n aspectRatio = \"default\",\n height = 500,\n cssId,\n maxWidth,\n verticalPadding,\n background,\n },\n state: { theme },\n editing,\n nextTheme,\n}: WidgetProps<EmbedSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n if (!content) {\n if (!editing) return null;\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div className=\"flex min-h-48 flex-col items-center justify-center gap-3 rounded-lg border border-dashed border-border bg-muted/30 px-6 py-12 text-center\">\n <span className=\"flex h-10 w-10 items-center justify-center rounded-full border border-border bg-background text-muted-foreground\">\n <Code2 className=\"h-4 w-4\" />\n </span>\n <div>\n <p className=\"font-semibold text-foreground\">\n Embed external content\n </p>\n <p className=\"mt-1 max-w-md text-sm text-muted-foreground\">\n Paste an embed URL or script snippet in the block\n settings.\n </p>\n </div>\n </div>\n </Section>\n );\n }\n\n const isScript = contentType === \"script\";\n const ratio =\n aspectRatio !== \"default\" ? aspectRatioMap[aspectRatio] : undefined;\n\n const containerStyle: React.CSSProperties = ratio\n ? { position: \"relative\", paddingTop: `${100 / ratio}%` }\n : !isScript\n ? { height }\n : {};\n\n const iframeStyle: React.CSSProperties = ratio\n ? { position: \"absolute\", inset: 0, width: \"100%\", height: \"100%\" }\n : isScript\n ? { width: \"100%\", height }\n : { width: \"100%\", height: \"100%\" };\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n <div style={containerStyle}>\n {isScript ? (\n <SandboxedEmbed content={content} style={iframeStyle} />\n ) : (\n <iframe\n src={content}\n style={iframeStyle}\n allow=\"accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\"\n allowFullScreen\n title=\"Embedded content\"\n />\n )}\n </div>\n </Section>\n );\n}\n","import React from \"react\";\nimport type { WidgetEditorProps } from \"../../models\";\nimport type { EmbedSettings } from \"./settings\";\nimport {\n FieldGroup,\n NumberField,\n SelectField,\n TextField,\n} from \"../_shared/fields\";\n\nexport function EmbedEditor({\n settings,\n onChange,\n}: WidgetEditorProps<EmbedSettings>) {\n const update = (partial: Partial<EmbedSettings>) =>\n onChange({ ...settings, ...partial });\n const contentType = settings.contentType ?? \"url\";\n const aspectRatio = settings.aspectRatio ?? \"default\";\n\n return (\n <div className=\"flex flex-col\">\n <div className=\"mx-1 mb-3 rounded-md border border-destructive/40 bg-destructive/5 p-3 text-xs text-destructive\">\n Embedding external content may expose visitors to scripts and\n trackers you don&apos;t control. Only embed sources you trust.\n </div>\n <FieldGroup title=\"Content\">\n <SelectField\n label=\"Type\"\n value={contentType}\n onChange={(value) => update({ contentType: value })}\n options={[\n { label: \"URL\", value: \"url\" },\n { label: \"Script / iframe snippet\", value: \"script\" },\n ]}\n />\n {contentType === \"url\" ? (\n <TextField\n label=\"URL\"\n value={settings.content}\n placeholder=\"https://...\"\n onChange={(content) => update({ content })}\n />\n ) : (\n <TextField\n label=\"Snippet\"\n multiline\n value={settings.content}\n placeholder=\"<script>...</script> or <iframe>...</iframe>\"\n onChange={(content) => update({ content })}\n />\n )}\n </FieldGroup>\n <FieldGroup title=\"Sizing\">\n <SelectField\n label=\"Aspect ratio\"\n value={aspectRatio}\n onChange={(value) => update({ aspectRatio: value })}\n options={[\n { label: \"Default (fixed height)\", value: \"default\" },\n { label: \"Widescreen (16:9)\", value: \"16:9\" },\n { label: \"Standard (4:3)\", value: \"4:3\" },\n { label: \"Square (1:1)\", value: \"1:1\" },\n ]}\n />\n {aspectRatio === \"default\" && (\n <NumberField\n label=\"Height (px)\"\n value={settings.height}\n min={100}\n max={2000}\n onChange={(height) => update({ height })}\n />\n )}\n </FieldGroup>\n </div>\n );\n}\n","import type { EmbedSettings } from \"./settings\";\n\nexport const embedDefaults: Partial<EmbedSettings> = {\n contentType: \"url\",\n content: \"\",\n aspectRatio: \"default\",\n height: 500,\n};\n","import type { Widget } from \"../../models\";\nimport { embedMetadata } from \"./metadata\";\nimport { EmbedWidget } from \"./widget\";\nimport { EmbedEditor } from \"./editor\";\nimport { embedDefaults } from \"./defaults\";\nimport type { EmbedSettings } from \"./settings\";\n\nexport * from \"./settings\";\n\nexport const Embed: Widget<EmbedSettings> = {\n metadata: embedMetadata,\n widget: EmbedWidget,\n editor: EmbedEditor,\n getDefaultSettings: () => embedDefaults,\n};\n","import type { WidgetMetadata } from \"../../models\";\n\nexport const dataSlotMetadata: WidgetMetadata = {\n name: \"data-slot\",\n displayName: \"Data slot\",\n description:\n \"A host-resolved data region. Its data source and presentation belong to the embedding application.\",\n compatibleWith: [\"site\", \"blog\", \"landing\", \"post\", \"custom\"],\n};\n","import React from \"react\";\nimport { LockKeyhole } from \"lucide-react\";\nimport type {\n ThemeStyle,\n WidgetDefaultSettings,\n WidgetProps,\n} from \"../../models\";\nimport { Section } from \"../../primitives\";\n\nexport interface DataSlotSettings extends WidgetDefaultSettings {\n /** Name matched against the host application's data-slot loaders. */\n slot: string;\n}\n\n/**\n * A reserved, host-resolved data region. The host passes its rendered result\n * through `PageRenderer`; the builder shows a generic placeholder instead.\n * Live content uses the same `Section` shell as other blocks so it shares\n * the theme's page width instead of shrink-wrapping to the feed's copy.\n */\nexport function DataSlotWidget({\n data,\n editing,\n settings: { slot, cssId, maxWidth, verticalPadding, background },\n state: { theme },\n nextTheme,\n}: WidgetProps<DataSlotSettings>) {\n const overriddenTheme: ThemeStyle = JSON.parse(JSON.stringify(theme.theme));\n overriddenTheme.structure.page.width =\n maxWidth || theme.theme.structure.page.width;\n overriddenTheme.structure.section.padding.y =\n verticalPadding || theme.theme.structure.section.padding.y;\n\n if (data !== undefined) {\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n >\n {data}\n </Section>\n );\n }\n if (!editing) return null;\n\n return (\n <Section\n theme={overriddenTheme}\n id={cssId}\n background={background}\n nextTheme={nextTheme}\n className=\"border-y border-dashed border-border bg-muted/30\"\n >\n <div className=\"flex flex-col items-center gap-3 text-center\">\n <span className=\"flex h-10 w-10 items-center justify-center rounded-full border border-border bg-background text-muted-foreground\">\n <LockKeyhole className=\"h-4 w-4\" />\n </span>\n <div>\n <p className=\"font-semibold text-foreground\">Data slot</p>\n <p className=\"mt-1 text-sm text-muted-foreground\">\n The embedding application resolves data for{\" \"}\n {String(slot || \"this slot\")} here.\n </p>\n </div>\n </div>\n </Section>\n );\n}\n","import type { Widget } from \"../../models\";\nimport { dataSlotMetadata } from \"./metadata\";\nimport { DataSlotWidget, type DataSlotSettings } from \"./widget\";\n\nexport const DataSlot: Widget<DataSlotSettings> = {\n metadata: dataSlotMetadata,\n widget: DataSlotWidget,\n};\n\nexport type { DataSlotSettings } from \"./widget\";\n"]}