@frontlit/page-builder 0.1.0-alpha.4 → 0.1.0-alpha.6

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 (46) hide show
  1. package/dist/blocks/index.d.ts +18 -3
  2. package/dist/blocks/index.js +3 -3
  3. package/dist/builder/index.d.ts +4 -1
  4. package/dist/builder/index.js +6 -6
  5. package/dist/{chunk-BBI7UHOA.js → chunk-BWOGREWJ.js} +3 -3
  6. package/dist/{chunk-BBI7UHOA.js.map → chunk-BWOGREWJ.js.map} +1 -1
  7. package/dist/{chunk-K4WCLHMS.js → chunk-FZBLE44D.js} +317 -66
  8. package/dist/chunk-FZBLE44D.js.map +1 -0
  9. package/dist/{chunk-J7Z4UW45.js → chunk-OEQJQ4OA.js} +112 -5
  10. package/dist/chunk-OEQJQ4OA.js.map +1 -0
  11. package/dist/{chunk-GIKTOAQS.js → chunk-PQTDUFKU.js} +9 -9
  12. package/dist/chunk-PQTDUFKU.js.map +1 -0
  13. package/dist/{chunk-36QHCIPM.js → chunk-QMUIISN3.js} +5 -93
  14. package/dist/chunk-QMUIISN3.js.map +1 -0
  15. package/dist/{chunk-IU4KATI2.js → chunk-YXLOVEQZ.js} +6 -6
  16. package/dist/{chunk-IU4KATI2.js.map → chunk-YXLOVEQZ.js.map} +1 -1
  17. package/dist/components/index.d.ts +1 -1
  18. package/dist/components/index.js +3 -3
  19. package/dist/{image-Bk8kPXwP.d.ts → image-Cv0aSUHD.d.ts} +3 -1
  20. package/dist/index.d.ts +1 -1
  21. package/dist/index.js +6 -6
  22. package/dist/primitives/index.d.ts +2 -0
  23. package/dist/primitives/index.js +1 -1
  24. package/dist/renderer/index.js +5 -5
  25. package/dist/server/index.js +151 -53
  26. package/dist/server/index.js.map +1 -1
  27. package/dist/server/islands/header-github-stars.d.ts +12 -0
  28. package/dist/server/islands/header-github-stars.js +31 -0
  29. package/dist/server/islands/header-github-stars.js.map +1 -0
  30. package/dist/server/islands/pricing-period-switch.d.ts +20 -0
  31. package/dist/server/islands/pricing-period-switch.js +151 -0
  32. package/dist/server/islands/pricing-period-switch.js.map +1 -0
  33. package/dist/server/primitives.d.ts +2 -0
  34. package/dist/server/primitives.js +53 -30
  35. package/dist/server/primitives.js.map +1 -1
  36. package/dist/server/schema.d.ts +38 -0
  37. package/dist/server/schema.js +17 -2
  38. package/dist/server/schema.js.map +1 -1
  39. package/dist/styles.css +12 -0
  40. package/package.json +1 -1
  41. package/schema/page.v1.json +29 -1
  42. package/schema/site.v1.json +8 -0
  43. package/dist/chunk-36QHCIPM.js.map +0 -1
  44. package/dist/chunk-GIKTOAQS.js.map +0 -1
  45. package/dist/chunk-J7Z4UW45.js.map +0 -1
  46. package/dist/chunk-K4WCLHMS.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/primitives/components/ui/badge.tsx","../../src/primitives/lib/utils.ts","../../src/primitives/badge.tsx","../../src/primitives/components/ui/button.tsx","../../src/primitives/button.tsx","../../src/primitives/caption.tsx","../../src/primitives/heading.tsx","../../src/primitives/header4.tsx","../../src/primitives/card.tsx","../../src/primitives/display.tsx","../../src/primitives/header1.tsx","../../src/primitives/header2.tsx","../../src/primitives/header3.tsx","../../src/primitives/image.tsx","../../src/primitives/input.tsx","../../src/primitives/components/ui/input.tsx","../../src/primitives/label.tsx","../../src/primitives/components/ui/label.tsx","../../src/primitives/link.tsx","../../src/primitives/preheader.tsx","../../src/primitives/section.tsx","../../src/models/media.ts","../../src/primitives/subheader1.tsx","../../src/primitives/subheader2.tsx","../../src/primitives/text1.tsx","../../src/primitives/text2.tsx","../../src/primitives/textarea.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport {\n Badge as ShadcnBadge,\n type BadgeProps as ShadcnBadgeProps,\n} from \"./components/ui/badge\";\nimport { cn } from \"./lib/utils\";\n\nexport interface BadgeProps extends Omit<ShadcnBadgeProps, \"variant\"> {\n theme?: ThemeStyle;\n style?: Record<string, string>;\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\";\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = \"default\",\n children,\n className = \"\",\n style = {},\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.caption;\n const buttonStyles = theme?.interactives?.button;\n\n const classes = cn(\n // Base styles\n // \"bg-secondary\",\n // Theme typography from caption\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n buttonStyles?.border?.width,\n buttonStyles?.border?.radius,\n buttonStyles?.border?.style,\n className,\n );\n\n return (\n <ShadcnBadge\n variant={variant}\n className={classes}\n style={{\n ...style,\n backgroundColor: style.backgroundColor,\n color: style.color,\n }}\n {...props}\n >\n {children}\n </ShadcnBadge>\n );\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport {\n Button as ShadcnButton,\n type ButtonProps as ShadcnButtonProps,\n} from \"./components/ui/button\";\nimport { cn } from \"./lib/utils\";\n\nexport interface ButtonProps extends ShadcnButtonProps {\n theme?: ThemeStyle;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = \"default\",\n size = \"default\",\n disabled = false,\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const buttonStyles = theme?.interactives?.button;\n const typographyStyles = theme?.typography?.button;\n const isIcon = size === \"icon\";\n\n const classes = cn(\n // Base styles\n \"\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity. Icon buttons stay square — CTA padding\n // would stretch them off the size=\"icon\" box.\n !isIcon && buttonStyles?.padding?.x,\n !isIcon && buttonStyles?.padding?.y,\n buttonStyles?.border?.width,\n buttonStyles?.border?.radius,\n buttonStyles?.border?.style,\n // buttonStyles?.border?.color,\n buttonStyles?.shadow,\n // Theme disabled states\n disabled && buttonStyles?.disabled?.opacity,\n disabled && buttonStyles?.disabled?.cursor,\n disabled && buttonStyles?.disabled?.color,\n disabled && buttonStyles?.disabled?.background,\n disabled && buttonStyles?.disabled?.border,\n // User overrides\n buttonStyles?.custom,\n className,\n );\n\n return (\n <ShadcnButton\n variant={variant}\n size={size}\n disabled={disabled}\n className={classes}\n {...props}\n >\n {children}\n </ShadcnButton>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Caption: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.caption;\n const classes = cn(\n // Base styles\n \"text-xs leading-7 text-muted-foreground\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport type { ThemeStyle, Typography } from \"../models\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport type HeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\";\n\nexport interface HeadingProps extends TypographyProps {\n /** Element to render. Lets a block pick its heading level independently of its look. */\n as?: HeadingTag;\n /**\n * Font-size classes that override the theme size. Kept apart from\n * `className` so they are merged before the theme's line-height, which\n * tailwind-merge would otherwise drop.\n */\n sizeClassName?: string;\n}\n\n// Phone and desktop widths the fluid size interpolates between.\nconst FLUID_MIN_VIEWPORT = 360;\nconst FLUID_MAX_VIEWPORT = 1280;\n\n/** px size of each Tailwind text size class. */\nexport const TAILWIND_TEXT_PX: Record<string, number> = {\n \"text-xs\": 12,\n \"text-sm\": 14,\n \"text-base\": 16,\n \"text-lg\": 18,\n \"text-xl\": 20,\n \"text-2xl\": 24,\n \"text-3xl\": 30,\n \"text-4xl\": 36,\n \"text-5xl\": 48,\n \"text-6xl\": 60,\n \"text-7xl\": 72,\n \"text-8xl\": 96,\n \"text-9xl\": 128,\n};\n\nconst rem = (px: number) => `${+(px / 16).toFixed(4)}rem`;\n\n/** CSS `clamp()` growing from `min` px on a phone to `max` px on a desktop. */\nexport function fluidFontSize({ min, max }: { min: number; max: number }): string {\n const slope = (max - min) / (FLUID_MAX_VIEWPORT - FLUID_MIN_VIEWPORT);\n const intercept = min - slope * FLUID_MIN_VIEWPORT;\n return `clamp(${rem(Math.min(min, max))}, ${rem(intercept)} + ${+(slope * 100).toFixed(4)}vw, ${rem(Math.max(min, max))})`;\n}\n\n/**\n * The theme's size for a level as a CSS value, exposed as `--pb-theme-size`\n * so a block's per-breakpoint overrides can fall back to it.\n */\nfunction themeSize(typography?: Typography): string | undefined {\n if (typography?.fluid) return fluidFontSize(typography.fluid);\n const px = TAILWIND_TEXT_PX[typography?.fontSize ?? \"\"];\n return px ? rem(px) : undefined;\n}\n\nexport function createHeading(\n displayName: string,\n defaultTag: HeadingTag,\n baseClasses: string,\n getTypography: (theme?: ThemeStyle) => Typography | undefined,\n): React.FC<HeadingProps> {\n const Heading: React.FC<HeadingProps> = ({\n children,\n className = \"\",\n theme,\n as: Tag = defaultTag,\n sizeClassName,\n style,\n ...props\n }) => {\n const typography = getTypography(theme);\n const fluid = typography?.fluid;\n const classes = cn(\n baseClasses,\n typography?.fontSize,\n // A class (not an inline font-size) so `sizeClassName` still wins.\n fluid && \"text-[length:var(--pb-theme-size)]\",\n sizeClassName,\n typography?.fontFamily,\n typography?.fontWeight,\n typography?.lineHeight,\n typography?.letterSpacing,\n typography?.textTransform,\n typography?.textDecoration,\n typography?.textOverflow,\n className,\n );\n\n return (\n <Tag\n className={classes}\n style={\n { \"--pb-theme-size\": themeSize(typography), ...style } as React.CSSProperties\n }\n {...props}\n >\n {children}\n </Tag>\n );\n };\n Heading.displayName = displayName;\n return Heading;\n}\n","import { createHeading } from \"./heading\";\n\nexport const Header4 = createHeading(\n \"Header4\",\n \"h4\",\n \"scroll-m-20 text-xl font-semibold tracking-normal\",\n (theme) => theme?.typography?.header4,\n);\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Header4 } from \"./header4\";\nimport { cn } from \"./lib/utils\";\n\nexport interface PageCardProps extends React.HTMLAttributes<HTMLDivElement> {\n isLink?: boolean;\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt: string;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport const PageCard: React.FC<PageCardProps> = ({\n isLink,\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"bg-card text-card-foreground\",\n // Theme interactivity\n cardStyles?.border?.width,\n cardStyles?.border?.radius,\n cardStyles?.border?.style,\n cardStyles?.shadow,\n isLink ? \"cursor-pointer\" : \"\",\n // User overrides\n cardStyles?.custom,\n className,\n );\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};\n\nexport const PageCardImage: React.FC<PageCardImageProps> = ({\n src,\n alt,\n className = \"\",\n theme,\n ...props\n}) => {\n // const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"w-full\",\n className,\n );\n\n return <img src={src} alt={alt} className={classes} {...props} />;\n};\n\nexport const PageCardContent: React.FC<PageCardContentProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"p-4\",\n // Theme interactivity\n cardStyles?.padding?.x,\n cardStyles?.padding?.y,\n className,\n );\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};\n\nexport const PageCardHeader: React.FC<PageCardHeaderProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const classes = cn(\n // Base styles\n \"pb-4\",\n className,\n );\n\n return (\n <div className={classes} {...props}>\n <Header4 theme={theme}>{children}</Header4>\n </div>\n );\n};\n","import { createHeading } from \"./heading\";\n\n/** Hero-sized headline, styled separately from section H1s. */\nexport const Display = createHeading(\n \"Display\",\n \"h1\",\n \"scroll-m-20 text-balance text-5xl font-bold tracking-tight\",\n (theme) => theme?.typography?.display ?? theme?.typography?.header1,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header1 = createHeading(\n \"Header1\",\n \"h1\",\n \"scroll-m-20 text-balance text-4xl font-bold tracking-tight\",\n (theme) => theme?.typography?.header1,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header2 = createHeading(\n \"Header2\",\n \"h2\",\n \"scroll-m-20 text-balance text-3xl font-bold tracking-tight\",\n (theme) => theme?.typography?.header2,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header3 = createHeading(\n \"Header3\",\n \"h3\",\n \"scroll-m-20 text-2xl font-semibold tracking-normal\",\n (theme) => theme?.typography?.header3,\n);\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt?: string;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"\",\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\"w-full object-cover\", cardStyles?.border?.radius, className);\n\n return <img src={src} alt={alt} className={classes} {...props} />;\n};\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Input as ShadcnInput } from \"./components/ui/input\";\nimport { cn } from \"./lib/utils\";\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n theme?: ThemeStyle;\n error?: boolean;\n // style?: React.CSSProperties;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className = \"\", theme, error = false, /*style = {},*/ ...props }, ref) => {\n const inputStyles = theme?.interactives?.input;\n const typographyStyles = theme?.typography?.input;\n\n const classes = cn(\n // Base styles\n // \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity\n inputStyles?.padding?.x,\n inputStyles?.padding?.y,\n inputStyles?.border?.width,\n inputStyles?.border?.style,\n inputStyles?.border?.radius,\n // inputStyles?.border?.color,\n inputStyles?.shadow,\n // Theme disabled states\n props.disabled && inputStyles?.disabled?.opacity,\n props.disabled && inputStyles?.disabled?.cursor,\n props.disabled && inputStyles?.disabled?.color,\n props.disabled && inputStyles?.disabled?.background,\n props.disabled && inputStyles?.disabled?.border,\n // Error state\n error && \"border-red-300 focus:border-red-500 focus:ring-red-500\",\n // User overrides\n inputStyles?.custom,\n className,\n );\n\n return <ShadcnInput ref={ref} className={classes} {...props} />;\n },\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Label as ShadcnLabel } from \"./components/ui/label\";\nimport { cn } from \"./lib/utils\";\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n theme?: ThemeStyle;\n error?: boolean;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className = \"\", theme, error = false, ...props }, ref) => {\n const typographyStyles = theme?.typography?.text2;\n\n const classes = cn(\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Error state\n error && \"text-red-500\",\n className,\n );\n\n return <ShadcnLabel ref={ref} className={classes} {...props} />;\n },\n);\n\nLabel.displayName = \"Label\";\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n disabled?: boolean;\n style?: React.CSSProperties;\n}\n\nexport const Link: React.FC<LinkProps> = ({\n children,\n className = \"\",\n theme,\n disabled = false,\n style,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.link;\n const linkStyles = theme?.interactives?.link;\n const classes = cn(\n // Base styles\n \"font-medium cursor-pointer\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity\n linkStyles?.padding?.x,\n linkStyles?.padding?.y,\n linkStyles?.border?.width,\n linkStyles?.border?.radius,\n linkStyles?.border?.style,\n // Theme disabled states\n disabled && linkStyles?.disabled?.color,\n disabled && linkStyles?.disabled?.background,\n disabled && linkStyles?.disabled?.border,\n disabled && linkStyles?.disabled?.opacity,\n disabled && linkStyles?.disabled?.cursor,\n // User overrides\n linkStyles?.custom,\n className,\n );\n\n return (\n <span\n className={classes}\n style={{\n ...style,\n textShadow: linkStyles?.textShadow || undefined,\n }}\n {...props}\n >\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Preheader: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.preheader;\n const classes = cn(\n // Base styles\n \"text-sm font-medium uppercase tracking-wide\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return (\n <p className={classes} {...props}>\n {children}\n </p>\n );\n};\n","import React from \"react\";\nimport type { SectionBackground, ThemeStyle } from \"../models\";\nimport { getMediaUrl } from \"../models/media\";\nimport { cn } from \"./lib/utils\";\n\ninterface SectionProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n component?: \"header\" | \"footer\" | \"section\";\n background?: SectionBackground;\n}\n\ntype CssVars = React.CSSProperties & Record<`--${string}`, string | undefined>;\n\n/**\n * Dark-mode variants are resolved in CSS (`dark:` utilities reading custom\n * properties) rather than in JS, so a server-rendered section paints the\n * right palette without knowing the visitor's colour mode.\n */\nfunction resolveBackgroundLayer(background: SectionBackground): {\n className?: string;\n style: CssVars;\n} {\n const attachment = background.backgroundAttachment || \"scroll\";\n\n if (background.type === \"color\") {\n return {\n className:\n \"[background-color:var(--pb-bg)] dark:[background-color:var(--pb-bg-dark,var(--pb-bg))]\",\n style: {\n \"--pb-bg\": background.backgroundColor,\n \"--pb-bg-dark\": background.backgroundColorDark,\n },\n };\n }\n\n if (background.type === \"image\") {\n const bgUrl = getMediaUrl(background.media);\n return {\n style: {\n backgroundImage: bgUrl ? `url(${bgUrl})` : undefined,\n backgroundSize: background.backgroundSize || \"cover\",\n backgroundPosition: background.backgroundPosition || \"center\",\n backgroundRepeat: background.backgroundRepeat || \"no-repeat\",\n backgroundAttachment: attachment,\n maskImage: background.maskImage,\n WebkitMaskImage: background.maskImage,\n },\n };\n }\n\n // Pattern / gradient\n return {\n className:\n \"[background-image:var(--pb-bg-image)] dark:[background-image:var(--pb-bg-image-dark,var(--pb-bg-image))]\",\n style: {\n \"--pb-bg-image\": background.backgroundImage,\n \"--pb-bg-image-dark\": background.backgroundImageDark,\n backgroundSize: background.gradientBackgroundSize || \"cover\",\n backgroundPosition: background.gradientBackgroundPosition || \"center\",\n backgroundRepeat: background.gradientBackgroundRepeat || \"no-repeat\",\n backgroundAttachment: attachment,\n maskImage: background.gradientMaskImage,\n WebkitMaskImage: background.gradientMaskImage,\n },\n };\n}\n\nexport const Section: React.FC<SectionProps> = ({\n children,\n className = \"\",\n theme,\n background,\n component = \"section\",\n ...props\n}) => {\n const classes = cn(\n \"bg-background text-foreground relative\",\n component === \"section\" &&\n theme?.structure?.section?.dividers &&\n \"border-t border-border\",\n className,\n );\n const backgroundLayer = background ? resolveBackgroundLayer(background) : null;\n const isFixed =\n background &&\n background.type !== \"color\" &&\n background.backgroundAttachment === \"fixed\";\n\n return (\n <>\n {React.createElement(\n component as React.ElementType,\n {\n // `overflow-clip` keeps a fixed-attachment layer painted\n // only within the section bounds without creating a new\n // scroll container (unlike overflow-hidden in some cases).\n className: cn(classes, isFixed && \"overflow-clip\"),\n ...props,\n },\n <>\n {backgroundLayer && (\n <div\n aria-hidden\n className={cn(\n \"pointer-events-none absolute inset-0 z-0\",\n backgroundLayer.className,\n )}\n style={backgroundLayer.style}\n />\n )}\n {background && background.type === \"image\" && (\n <div\n aria-hidden\n className=\"pointer-events-none absolute inset-0 z-[1] [background-color:var(--pb-overlay)] dark:[background-color:var(--pb-overlay-dark,var(--pb-overlay))]\"\n style={\n {\n \"--pb-overlay\": background?.overlay?.color,\n \"--pb-overlay-dark\": background?.overlay?.colorDark,\n opacity: background?.overlay?.opacity\n ? background.overlay.opacity / 10\n : 0,\n mixBlendMode: background?.overlay?.blendMode,\n } as CssVars\n }\n />\n )}\n {background && background.type === \"image\" && (\n <div\n aria-hidden\n className=\"pointer-events-none absolute inset-0 z-[2]\"\n style={{\n backdropFilter: background?.blur\n ? `blur(${background?.blur}px)`\n : undefined,\n }}\n />\n )}\n <div\n className={cn(\n \"mx-auto z-[3] relative overflow-hidden\",\n `lg:${theme?.structure?.page?.width || \"max-w-6xl\"}`,\n theme?.structure?.section?.padding?.x || \"px-4\",\n theme?.structure?.section?.padding?.y || \"py-4\",\n )}\n >\n {children}\n </div>\n </>,\n )}\n </>\n );\n};\n","export interface Media {\n [key: string]: unknown;\n mediaId?: string;\n originalFileName?: string;\n fileName?: string;\n mimeType?: string;\n size?: number;\n caption?: string;\n alt?: string;\n /** Public URL of the asset (MediaLit format or generic URL format). */\n file?: string;\n url?: string;\n src?: string;\n /** Thumbnail URL, falls back to `file` or `url` when absent. */\n thumbnail?: string;\n thumbnailUrl?: string;\n}\n\nexport function getMediaUrl(media: unknown): string | null {\n if (!media) return null;\n if (typeof media === \"string\") return media.trim() || null;\n if (typeof media === \"object\") {\n const obj = media as Record<string, unknown>;\n const url = obj.url ?? obj.file ?? obj.src;\n return typeof url === \"string\" && url.trim() ? url.trim() : null;\n }\n return null;\n}\n\nexport function getMediaAlt(media: unknown): string {\n if (!media || typeof media !== \"object\") return \"\";\n const obj = media as Record<string, unknown>;\n const alt = obj.alt ?? obj.caption ?? obj.title;\n return typeof alt === \"string\" ? alt : \"\";\n}\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Subheader1: React.FC<TypographyProps & { component?: \"h5\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"h5\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.subheader1;\n const classes = cn(\n typographyStyles?.fontFamily || \"font-sans\",\n typographyStyles?.fontSize || \"text-lg\",\n typographyStyles?.fontWeight || \"font-medium\",\n typographyStyles?.lineHeight || \"leading-relaxed\",\n typographyStyles?.letterSpacing || \"tracking-normal\",\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"h5\" ? (\n <h5 className={classes} {...props}>\n {children}\n </h5>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Subheader2: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.subheader2;\n const classes = [\n typographyStyles?.fontFamily || \"font-sans\",\n typographyStyles?.fontSize || \"text-base\",\n typographyStyles?.fontWeight || \"font-medium\",\n typographyStyles?.lineHeight || \"leading-relaxed\",\n typographyStyles?.letterSpacing || \"tracking-normal\",\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <h6 className={classes} {...props}>\n {children}\n </h6>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Text1: React.FC<TypographyProps & { component?: \"p\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"p\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.text1;\n const classes = cn(\n // Base styles\n \"text-base\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"p\" ? (\n <p className={classes} {...props}>\n {children}\n </p>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Text2: React.FC<TypographyProps & { component?: \"p\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"p\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.text2;\n const classes = cn(\n // Base styles\n \"text-sm\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"p\" ? (\n <p className={classes} {...props}>\n {children}\n </p>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n theme?: ThemeStyle;\n error?: boolean;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className = \"\", theme, error = false, ...props }, ref) => {\n const inputStyles = theme?.interactives?.input;\n const typographyStyles = theme?.typography?.input;\n const classes = cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50\",\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n inputStyles?.padding?.x,\n inputStyles?.padding?.y,\n inputStyles?.border?.width,\n inputStyles?.border?.style,\n inputStyles?.border?.radius,\n inputStyles?.shadow,\n props.disabled && inputStyles?.disabled?.opacity,\n props.disabled && inputStyles?.disabled?.cursor,\n error && \"border-red-300 focus:border-red-500 focus:ring-red-500\",\n inputStyles?.custom,\n className,\n );\n\n return <textarea ref={ref} className={classes} {...props} />;\n },\n);\n\nTextarea.displayName = \"Textarea\";\n"],"mappings":"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","names":["jsx","Badge","cva","jsx","cva","jsx","Button","jsx","jsx","jsx","jsx","React","React","jsx","jsx","Input","React","React","cva","React","jsx","cva","jsx","Label","React","jsx","jsx","React","jsx","React","jsx","jsx","jsx","jsx","React","jsx","React"]}
1
+ {"version":3,"sources":["../../src/primitives/components/ui/badge.tsx","../../src/primitives/lib/utils.ts","../../src/primitives/badge.tsx","../../src/primitives/components/ui/button.tsx","../../src/primitives/button.tsx","../../src/primitives/caption.tsx","../../src/primitives/heading.tsx","../../src/primitives/header4.tsx","../../src/primitives/card.tsx","../../src/primitives/display.tsx","../../src/primitives/header1.tsx","../../src/primitives/header2.tsx","../../src/primitives/header3.tsx","../../src/components/image.tsx","../../src/primitives/image.tsx","../../src/primitives/input.tsx","../../src/primitives/components/ui/input.tsx","../../src/primitives/label.tsx","../../src/primitives/components/ui/label.tsx","../../src/primitives/link.tsx","../../src/primitives/preheader.tsx","../../src/primitives/section.tsx","../../src/models/media.ts","../../src/primitives/subheader1.tsx","../../src/primitives/subheader2.tsx","../../src/primitives/text1.tsx","../../src/primitives/text2.tsx","../../src/primitives/textarea.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport {\n Badge as ShadcnBadge,\n type BadgeProps as ShadcnBadgeProps,\n} from \"./components/ui/badge\";\nimport { cn } from \"./lib/utils\";\n\nexport interface BadgeProps extends Omit<ShadcnBadgeProps, \"variant\"> {\n theme?: ThemeStyle;\n style?: Record<string, string>;\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\";\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = \"default\",\n children,\n className = \"\",\n style = {},\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.caption;\n const buttonStyles = theme?.interactives?.button;\n\n const classes = cn(\n // Base styles\n // \"bg-secondary\",\n // Theme typography from caption\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n buttonStyles?.border?.width,\n buttonStyles?.border?.radius,\n buttonStyles?.border?.style,\n className,\n );\n\n return (\n <ShadcnBadge\n variant={variant}\n className={classes}\n style={{\n ...style,\n backgroundColor: style.backgroundColor,\n color: style.color,\n }}\n {...props}\n >\n {children}\n </ShadcnBadge>\n );\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport {\n Button as ShadcnButton,\n type ButtonProps as ShadcnButtonProps,\n} from \"./components/ui/button\";\nimport { cn } from \"./lib/utils\";\n\nexport interface ButtonProps extends ShadcnButtonProps {\n theme?: ThemeStyle;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = \"default\",\n size = \"default\",\n disabled = false,\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const buttonStyles = theme?.interactives?.button;\n const typographyStyles = theme?.typography?.button;\n const isIcon = size === \"icon\";\n\n const classes = cn(\n // Base styles\n \"\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity. Icon buttons stay square — CTA padding\n // would stretch them off the size=\"icon\" box.\n !isIcon && buttonStyles?.padding?.x,\n !isIcon && buttonStyles?.padding?.y,\n buttonStyles?.border?.width,\n buttonStyles?.border?.radius,\n buttonStyles?.border?.style,\n // buttonStyles?.border?.color,\n buttonStyles?.shadow,\n // Theme disabled states\n disabled && buttonStyles?.disabled?.opacity,\n disabled && buttonStyles?.disabled?.cursor,\n disabled && buttonStyles?.disabled?.color,\n disabled && buttonStyles?.disabled?.background,\n disabled && buttonStyles?.disabled?.border,\n // User overrides\n buttonStyles?.custom,\n className,\n );\n\n return (\n <ShadcnButton\n variant={variant}\n size={size}\n disabled={disabled}\n className={classes}\n {...props}\n >\n {children}\n </ShadcnButton>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Caption: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.caption;\n const classes = cn(\n // Base styles\n \"text-xs leading-7 text-muted-foreground\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport type { ThemeStyle, Typography } from \"../models\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport type HeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\";\n\nexport interface HeadingProps extends TypographyProps {\n /** Element to render. Lets a block pick its heading level independently of its look. */\n as?: HeadingTag;\n /**\n * Font-size classes that override the theme size. Kept apart from\n * `className` so they are merged before the theme's line-height, which\n * tailwind-merge would otherwise drop.\n */\n sizeClassName?: string;\n}\n\n// Phone and desktop widths the fluid size interpolates between.\nconst FLUID_MIN_VIEWPORT = 360;\nconst FLUID_MAX_VIEWPORT = 1280;\n\n/** px size of each Tailwind text size class. */\nexport const TAILWIND_TEXT_PX: Record<string, number> = {\n \"text-xs\": 12,\n \"text-sm\": 14,\n \"text-base\": 16,\n \"text-lg\": 18,\n \"text-xl\": 20,\n \"text-2xl\": 24,\n \"text-3xl\": 30,\n \"text-4xl\": 36,\n \"text-5xl\": 48,\n \"text-6xl\": 60,\n \"text-7xl\": 72,\n \"text-8xl\": 96,\n \"text-9xl\": 128,\n};\n\nconst rem = (px: number) => `${+(px / 16).toFixed(4)}rem`;\n\n/** CSS `clamp()` growing from `min` px on a phone to `max` px on a desktop. */\nexport function fluidFontSize({ min, max }: { min: number; max: number }): string {\n const slope = (max - min) / (FLUID_MAX_VIEWPORT - FLUID_MIN_VIEWPORT);\n const intercept = min - slope * FLUID_MIN_VIEWPORT;\n return `clamp(${rem(Math.min(min, max))}, ${rem(intercept)} + ${+(slope * 100).toFixed(4)}vw, ${rem(Math.max(min, max))})`;\n}\n\n/**\n * The theme's size for a level as a CSS value, exposed as `--pb-theme-size`\n * so a block's per-breakpoint overrides can fall back to it.\n */\nfunction themeSize(typography?: Typography): string | undefined {\n if (typography?.fluid) return fluidFontSize(typography.fluid);\n const px = TAILWIND_TEXT_PX[typography?.fontSize ?? \"\"];\n return px ? rem(px) : undefined;\n}\n\nexport function createHeading(\n displayName: string,\n defaultTag: HeadingTag,\n baseClasses: string,\n getTypography: (theme?: ThemeStyle) => Typography | undefined,\n): React.FC<HeadingProps> {\n const Heading: React.FC<HeadingProps> = ({\n children,\n className = \"\",\n theme,\n as: Tag = defaultTag,\n sizeClassName,\n style,\n ...props\n }) => {\n const typography = getTypography(theme);\n const fluid = typography?.fluid;\n const classes = cn(\n baseClasses,\n typography?.fontSize,\n // A class (not an inline font-size) so `sizeClassName` still wins.\n fluid && \"text-[length:var(--pb-theme-size)]\",\n sizeClassName,\n typography?.fontFamily,\n typography?.fontWeight,\n typography?.lineHeight,\n typography?.letterSpacing,\n typography?.textTransform,\n typography?.textDecoration,\n typography?.textOverflow,\n className,\n );\n\n return (\n <Tag\n className={classes}\n style={\n { \"--pb-theme-size\": themeSize(typography), ...style } as React.CSSProperties\n }\n {...props}\n >\n {children}\n </Tag>\n );\n };\n Heading.displayName = displayName;\n return Heading;\n}\n","import { createHeading } from \"./heading\";\n\nexport const Header4 = createHeading(\n \"Header4\",\n \"h4\",\n \"scroll-m-20 text-xl font-semibold tracking-normal\",\n (theme) => theme?.typography?.header4,\n);\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Header4 } from \"./header4\";\nimport { cn } from \"./lib/utils\";\n\nexport interface PageCardProps extends React.HTMLAttributes<HTMLDivElement> {\n isLink?: boolean;\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt: string;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport const PageCard: React.FC<PageCardProps> = ({\n isLink,\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"bg-card text-card-foreground\",\n // Theme interactivity\n cardStyles?.border?.width,\n cardStyles?.border?.radius,\n cardStyles?.border?.style,\n cardStyles?.shadow,\n isLink ? \"cursor-pointer\" : \"\",\n // User overrides\n cardStyles?.custom,\n className,\n );\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};\n\nexport const PageCardImage: React.FC<PageCardImageProps> = ({\n src,\n alt,\n className = \"\",\n theme,\n ...props\n}) => {\n // const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"w-full\",\n className,\n );\n\n return <img src={src} alt={alt} className={classes} {...props} />;\n};\n\nexport const PageCardContent: React.FC<PageCardContentProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"p-4\",\n // Theme interactivity\n cardStyles?.padding?.x,\n cardStyles?.padding?.y,\n className,\n );\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};\n\nexport const PageCardHeader: React.FC<PageCardHeaderProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const classes = cn(\n // Base styles\n \"pb-4\",\n className,\n );\n\n return (\n <div className={classes} {...props}>\n <Header4 theme={theme}>{children}</Header4>\n </div>\n );\n};\n","import { createHeading } from \"./heading\";\n\n/** Hero-sized headline, styled separately from section H1s. */\nexport const Display = createHeading(\n \"Display\",\n \"h1\",\n \"scroll-m-20 text-balance text-5xl font-bold tracking-tight\",\n (theme) => theme?.typography?.display ?? theme?.typography?.header1,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header1 = createHeading(\n \"Header1\",\n \"h1\",\n \"scroll-m-20 text-balance text-4xl font-bold tracking-tight\",\n (theme) => theme?.typography?.header1,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header2 = createHeading(\n \"Header2\",\n \"h2\",\n \"scroll-m-20 text-balance text-3xl font-bold tracking-tight\",\n (theme) => theme?.typography?.header2,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header3 = createHeading(\n \"Header3\",\n \"h3\",\n \"scroll-m-20 text-2xl font-semibold tracking-normal\",\n (theme) => theme?.typography?.header3,\n);\n","import type React from \"react\";\nimport { cn } from \"../primitives/lib/utils\";\n\nexport interface ImageAttributesInput {\n src: string;\n alt: string;\n sizes?: string;\n /** Above-the-fold image (e.g. LCP): fetched eagerly at high priority. */\n priority: boolean;\n}\n\n/**\n * Lets a host swap an image's `src`/`srcSet` for its own optimizer's URLs\n * (e.g. Next.js's `getImageProps`) without this package depending on the\n * host framework. Return `null` to keep the original URL.\n */\nexport type ImageAttributesResolver = (\n input: ImageAttributesInput,\n) => React.ImgHTMLAttributes<HTMLImageElement> | null;\n\n// Kept on `globalThis`: each package entry (`/server`, `/primitives/server`)\n// bundles its own copy of this module, and they must share one resolver.\nconst registry = globalThis as {\n __frontlitImageResolver?: ImageAttributesResolver | null;\n};\n\n/**\n * Registers the host's resolver. Call once at server start-up; renders that\n * run without one emit the original URL.\n */\nexport function setImageAttributesResolver(resolver: ImageAttributesResolver | null) {\n registry.__frontlitImageResolver = resolver;\n}\n\n/** The registered resolver's attributes for an image, if any. */\nexport function resolveImageAttributes(\n input: ImageAttributesInput,\n): React.ImgHTMLAttributes<HTMLImageElement> | null {\n return registry.__frontlitImageResolver?.(input) ?? null;\n}\n\nexport type ImageObjectFit = \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n\nexport const 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\ninterface ImgProps {\n src: string;\n classes?: string;\n alt?: string;\n defaultImage?: string;\n loading?: \"eager\" | \"lazy\";\n /** Marks the image as likely LCP: eager load with high fetch priority. */\n priority?: boolean;\n height?: string;\n sizes?: string;\n width?: string;\n borderRadius?: number | string;\n noDefaultImage?: boolean;\n className?: string;\n objectFit?: ImageObjectFit;\n}\n\nconst objectFitClass: Record<ImageObjectFit, string> = {\n cover: \"object-cover\",\n contain: \"object-contain\",\n fill: \"object-fill\",\n none: \"object-none\",\n \"scale-down\": \"object-scale-down\",\n};\n\nexport const Image = (props: ImgProps) => {\n const {\n src,\n alt = \"\",\n defaultImage,\n priority = false,\n loading = priority ? \"eager\" : \"lazy\",\n sizes,\n noDefaultImage = false,\n className = \"\",\n classes = \"\",\n width = \"w-full\",\n height = \"h-auto\",\n objectFit = \"cover\",\n borderRadius,\n } = props;\n const source = src || defaultImage;\n\n const radiusClass =\n typeof borderRadius === \"number\"\n ? (roundedMap[borderRadius] ?? \"rounded\")\n : borderRadius;\n\n if (!source) {\n if (noDefaultImage) return null;\n return (\n <div\n className={cn(\n \"relative aspect-video overflow-hidden bg-muted\",\n width,\n height,\n radiusClass,\n classes,\n className,\n )}\n />\n );\n }\n\n const optimized = resolveImageAttributes({ src: source, alt, sizes, priority });\n\n return (\n <div\n className={cn(\n \"relative aspect-video overflow-hidden\",\n width,\n height,\n radiusClass,\n classes,\n className,\n )}\n >\n <img\n src={source}\n alt={alt}\n sizes={sizes}\n loading={loading}\n decoding=\"async\"\n fetchPriority={priority ? \"high\" : undefined}\n {...optimized}\n className={cn(\n \"absolute inset-0 h-full w-full\",\n radiusClass,\n objectFitClass[objectFit],\n )}\n />\n </div>\n );\n};\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { resolveImageAttributes } from \"../components/image\";\nimport { cn } from \"./lib/utils\";\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt?: string;\n className?: string;\n theme?: ThemeStyle;\n /** Above-the-fold image (e.g. LCP): fetched eagerly at high priority. */\n priority?: boolean;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"\",\n className = \"\",\n theme,\n priority = false,\n sizes,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\"w-full object-cover\", cardStyles?.border?.radius, className);\n // The host's optimizer (if registered) serves a resized, modern-format copy.\n const optimized = resolveImageAttributes({ src, alt, sizes, priority });\n\n return (\n <img\n src={src}\n alt={alt}\n sizes={sizes}\n loading={priority ? \"eager\" : \"lazy\"}\n decoding=\"async\"\n fetchPriority={priority ? \"high\" : undefined}\n className={classes}\n {...props}\n {...optimized}\n />\n );\n};\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Input as ShadcnInput } from \"./components/ui/input\";\nimport { cn } from \"./lib/utils\";\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n theme?: ThemeStyle;\n error?: boolean;\n // style?: React.CSSProperties;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className = \"\", theme, error = false, /*style = {},*/ ...props }, ref) => {\n const inputStyles = theme?.interactives?.input;\n const typographyStyles = theme?.typography?.input;\n\n const classes = cn(\n // Base styles\n // \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity\n inputStyles?.padding?.x,\n inputStyles?.padding?.y,\n inputStyles?.border?.width,\n inputStyles?.border?.style,\n inputStyles?.border?.radius,\n // inputStyles?.border?.color,\n inputStyles?.shadow,\n // Theme disabled states\n props.disabled && inputStyles?.disabled?.opacity,\n props.disabled && inputStyles?.disabled?.cursor,\n props.disabled && inputStyles?.disabled?.color,\n props.disabled && inputStyles?.disabled?.background,\n props.disabled && inputStyles?.disabled?.border,\n // Error state\n error && \"border-red-300 focus:border-red-500 focus:ring-red-500\",\n // User overrides\n inputStyles?.custom,\n className,\n );\n\n return <ShadcnInput ref={ref} className={classes} {...props} />;\n },\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Label as ShadcnLabel } from \"./components/ui/label\";\nimport { cn } from \"./lib/utils\";\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n theme?: ThemeStyle;\n error?: boolean;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className = \"\", theme, error = false, ...props }, ref) => {\n const typographyStyles = theme?.typography?.text2;\n\n const classes = cn(\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Error state\n error && \"text-red-500\",\n className,\n );\n\n return <ShadcnLabel ref={ref} className={classes} {...props} />;\n },\n);\n\nLabel.displayName = \"Label\";\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n disabled?: boolean;\n style?: React.CSSProperties;\n}\n\nexport const Link: React.FC<LinkProps> = ({\n children,\n className = \"\",\n theme,\n disabled = false,\n style,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.link;\n const linkStyles = theme?.interactives?.link;\n const classes = cn(\n // Base styles\n \"font-medium cursor-pointer\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity\n linkStyles?.padding?.x,\n linkStyles?.padding?.y,\n linkStyles?.border?.width,\n linkStyles?.border?.radius,\n linkStyles?.border?.style,\n // Theme disabled states\n disabled && linkStyles?.disabled?.color,\n disabled && linkStyles?.disabled?.background,\n disabled && linkStyles?.disabled?.border,\n disabled && linkStyles?.disabled?.opacity,\n disabled && linkStyles?.disabled?.cursor,\n // User overrides\n linkStyles?.custom,\n className,\n );\n\n return (\n <span\n className={classes}\n style={{\n ...style,\n textShadow: linkStyles?.textShadow || undefined,\n }}\n {...props}\n >\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Preheader: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.preheader;\n const classes = cn(\n // Base styles\n \"text-sm font-medium uppercase tracking-wide\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return (\n <p className={classes} {...props}>\n {children}\n </p>\n );\n};\n","import React from \"react\";\nimport type { SectionBackground, ThemeStyle } from \"../models\";\nimport { getMediaUrl } from \"../models/media\";\nimport { cn } from \"./lib/utils\";\n\ninterface SectionProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n component?: \"header\" | \"footer\" | \"section\";\n background?: SectionBackground;\n}\n\ntype CssVars = React.CSSProperties & Record<`--${string}`, string | undefined>;\n\n/**\n * Dark-mode variants are resolved in CSS (`dark:` utilities reading custom\n * properties) rather than in JS, so a server-rendered section paints the\n * right palette without knowing the visitor's colour mode.\n */\nfunction resolveBackgroundLayer(background: SectionBackground): {\n className?: string;\n style: CssVars;\n} {\n const attachment = background.backgroundAttachment || \"scroll\";\n\n if (background.type === \"color\") {\n return {\n className:\n \"[background-color:var(--pb-bg)] dark:[background-color:var(--pb-bg-dark,var(--pb-bg))]\",\n style: {\n \"--pb-bg\": background.backgroundColor,\n \"--pb-bg-dark\": background.backgroundColorDark,\n },\n };\n }\n\n if (background.type === \"image\") {\n const bgUrl = getMediaUrl(background.media);\n return {\n style: {\n backgroundImage: bgUrl ? `url(${bgUrl})` : undefined,\n backgroundSize: background.backgroundSize || \"cover\",\n backgroundPosition: background.backgroundPosition || \"center\",\n backgroundRepeat: background.backgroundRepeat || \"no-repeat\",\n backgroundAttachment: attachment,\n maskImage: background.maskImage,\n WebkitMaskImage: background.maskImage,\n },\n };\n }\n\n // Pattern / gradient\n return {\n className:\n \"[background-image:var(--pb-bg-image)] dark:[background-image:var(--pb-bg-image-dark,var(--pb-bg-image))]\",\n style: {\n \"--pb-bg-image\": background.backgroundImage,\n \"--pb-bg-image-dark\": background.backgroundImageDark,\n backgroundSize: background.gradientBackgroundSize || \"cover\",\n backgroundPosition: background.gradientBackgroundPosition || \"center\",\n backgroundRepeat: background.gradientBackgroundRepeat || \"no-repeat\",\n backgroundAttachment: attachment,\n maskImage: background.gradientMaskImage,\n WebkitMaskImage: background.gradientMaskImage,\n },\n };\n}\n\nexport const Section: React.FC<SectionProps> = ({\n children,\n className = \"\",\n theme,\n background,\n component = \"section\",\n ...props\n}) => {\n const classes = cn(\n \"bg-background text-foreground relative\",\n component === \"section\" &&\n theme?.structure?.section?.dividers &&\n \"border-t border-border\",\n className,\n );\n const backgroundLayer = background ? resolveBackgroundLayer(background) : null;\n const isFixed =\n background &&\n background.type !== \"color\" &&\n background.backgroundAttachment === \"fixed\";\n\n return (\n <>\n {React.createElement(\n component as React.ElementType,\n {\n // `overflow-clip` keeps a fixed-attachment layer painted\n // only within the section bounds without creating a new\n // scroll container (unlike overflow-hidden in some cases).\n className: cn(classes, isFixed && \"overflow-clip\"),\n ...props,\n },\n <>\n {backgroundLayer && (\n <div\n aria-hidden\n className={cn(\n \"pointer-events-none absolute inset-0 z-0\",\n backgroundLayer.className,\n )}\n style={backgroundLayer.style}\n />\n )}\n {background && background.type === \"image\" && (\n <div\n aria-hidden\n className=\"pointer-events-none absolute inset-0 z-[1] [background-color:var(--pb-overlay)] dark:[background-color:var(--pb-overlay-dark,var(--pb-overlay))]\"\n style={\n {\n \"--pb-overlay\": background?.overlay?.color,\n \"--pb-overlay-dark\": background?.overlay?.colorDark,\n opacity: background?.overlay?.opacity\n ? background.overlay.opacity / 10\n : 0,\n mixBlendMode: background?.overlay?.blendMode,\n } as CssVars\n }\n />\n )}\n {background && background.type === \"image\" && (\n <div\n aria-hidden\n className=\"pointer-events-none absolute inset-0 z-[2]\"\n style={{\n backdropFilter: background?.blur\n ? `blur(${background?.blur}px)`\n : undefined,\n }}\n />\n )}\n <div\n className={cn(\n \"mx-auto z-[3] relative overflow-hidden\",\n `lg:${theme?.structure?.page?.width || \"max-w-6xl\"}`,\n theme?.structure?.section?.padding?.x || \"px-4\",\n theme?.structure?.section?.padding?.y || \"py-4\",\n )}\n >\n {children}\n </div>\n </>,\n )}\n </>\n );\n};\n","export interface Media {\n [key: string]: unknown;\n mediaId?: string;\n originalFileName?: string;\n fileName?: string;\n mimeType?: string;\n size?: number;\n caption?: string;\n alt?: string;\n /** Public URL of the asset (MediaLit format or generic URL format). */\n file?: string;\n url?: string;\n src?: string;\n /** Thumbnail URL, falls back to `file` or `url` when absent. */\n thumbnail?: string;\n thumbnailUrl?: string;\n}\n\nexport function getMediaUrl(media: unknown): string | null {\n if (!media) return null;\n if (typeof media === \"string\") return media.trim() || null;\n if (typeof media === \"object\") {\n const obj = media as Record<string, unknown>;\n const url = obj.url ?? obj.file ?? obj.src;\n return typeof url === \"string\" && url.trim() ? url.trim() : null;\n }\n return null;\n}\n\nexport function getMediaAlt(media: unknown): string {\n if (!media || typeof media !== \"object\") return \"\";\n const obj = media as Record<string, unknown>;\n const alt = obj.alt ?? obj.caption ?? obj.title;\n return typeof alt === \"string\" ? alt : \"\";\n}\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Subheader1: React.FC<TypographyProps & { component?: \"h5\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"h5\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.subheader1;\n const classes = cn(\n typographyStyles?.fontFamily || \"font-sans\",\n typographyStyles?.fontSize || \"text-lg\",\n typographyStyles?.fontWeight || \"font-medium\",\n typographyStyles?.lineHeight || \"leading-relaxed\",\n typographyStyles?.letterSpacing || \"tracking-normal\",\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"h5\" ? (\n <h5 className={classes} {...props}>\n {children}\n </h5>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Subheader2: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.subheader2;\n const classes = [\n typographyStyles?.fontFamily || \"font-sans\",\n typographyStyles?.fontSize || \"text-base\",\n typographyStyles?.fontWeight || \"font-medium\",\n typographyStyles?.lineHeight || \"leading-relaxed\",\n typographyStyles?.letterSpacing || \"tracking-normal\",\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <h6 className={classes} {...props}>\n {children}\n </h6>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Text1: React.FC<TypographyProps & { component?: \"p\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"p\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.text1;\n const classes = cn(\n // Base styles\n \"text-base\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"p\" ? (\n <p className={classes} {...props}>\n {children}\n </p>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Text2: React.FC<TypographyProps & { component?: \"p\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"p\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.text2;\n const classes = cn(\n // Base styles\n \"text-sm\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"p\" ? (\n <p className={classes} {...props}>\n {children}\n </p>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n theme?: ThemeStyle;\n error?: boolean;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className = \"\", theme, error = false, ...props }, ref) => {\n const inputStyles = theme?.interactives?.input;\n const typographyStyles = theme?.typography?.input;\n const classes = cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50\",\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n inputStyles?.padding?.x,\n inputStyles?.padding?.y,\n inputStyles?.border?.width,\n inputStyles?.border?.style,\n inputStyles?.border?.radius,\n inputStyles?.shadow,\n props.disabled && inputStyles?.disabled?.opacity,\n props.disabled && inputStyles?.disabled?.cursor,\n error && \"border-red-300 focus:border-red-500 focus:ring-red-500\",\n inputStyles?.custom,\n className,\n );\n\n return <textarea ref={ref} className={classes} {...props} />;\n },\n);\n\nTextarea.displayName = \"Textarea\";\n"],"mappings":"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","names":["jsx","Badge","cva","jsx","cva","jsx","Button","jsx","jsx","jsx","jsx","jsx","React","React","jsx","jsx","Input","React","React","cva","React","jsx","cva","jsx","Label","React","jsx","jsx","React","jsx","React","jsx","jsx","jsx","jsx","React","jsx","React"]}
@@ -44,6 +44,8 @@ declare function blockSettingsSchemas(k: FieldKinds): {
44
44
  linkAlignment: z.ZodOptional<z.ZodEnum<["left", "center", "right"]>>;
45
45
  backdropBlur: z.ZodOptional<z.ZodBoolean>;
46
46
  logoCorners: z.ZodOptional<z.ZodNumber>;
47
+ githubRepo: z.ZodOptional<z.ZodString>;
48
+ showGithubStars: z.ZodOptional<z.ZodBoolean>;
47
49
  cssId: z.ZodOptional<z.ZodString>;
48
50
  verticalPadding: z.ZodOptional<z.ZodEnum<["py-0", "py-4", "py-6", "py-8", "py-10", "py-12", "py-16", "py-20", "py-24", "py-32", "py-40", "py-48", "py-56", "py-64"]>>;
49
51
  maxWidth: z.ZodOptional<z.ZodEnum<["max-w-2xl", "max-w-3xl", "max-w-4xl", "max-w-5xl", "max-w-6xl"]>>;
@@ -162,6 +164,8 @@ declare function blockSettingsSchemas(k: FieldKinds): {
162
164
  ctaHref?: string;
163
165
  linkAlignment?: "left" | "center" | "right";
164
166
  backdropBlur?: boolean;
167
+ githubRepo?: string;
168
+ showGithubStars?: boolean;
165
169
  }, {
166
170
  layout?: "fixed" | "centered" | "floating";
167
171
  cssId?: string;
@@ -197,6 +201,8 @@ declare function blockSettingsSchemas(k: FieldKinds): {
197
201
  ctaHref?: string;
198
202
  linkAlignment?: "left" | "center" | "right";
199
203
  backdropBlur?: boolean;
204
+ githubRepo?: string;
205
+ showGithubStars?: boolean;
200
206
  }>;
201
207
  hero: z.ZodObject<{
202
208
  description: z.ZodOptional<z.ZodTypeAny>;
@@ -1514,13 +1520,19 @@ declare function blockSettingsSchemas(k: FieldKinds): {
1514
1520
  pricing: z.ZodObject<{
1515
1521
  description: z.ZodOptional<z.ZodTypeAny>;
1516
1522
  headerAlignment: z.ZodOptional<z.ZodEnum<["left", "center", "right", "top", "bottom"]>>;
1523
+ pricingSwitcher: z.ZodOptional<z.ZodBoolean>;
1524
+ monthlyPriceCaption: z.ZodOptional<z.ZodString>;
1525
+ yearlyPriceCaption: z.ZodOptional<z.ZodString>;
1526
+ defaultPeriod: z.ZodOptional<z.ZodEnum<["monthly", "yearly"]>>;
1517
1527
  tiers: z.ZodOptional<z.ZodArray<z.ZodObject<{
1518
1528
  name: z.ZodString;
1519
1529
  price: z.ZodString;
1530
+ priceYearly: z.ZodOptional<z.ZodString>;
1520
1531
  description: z.ZodOptional<z.ZodString>;
1521
1532
  features: z.ZodArray<z.ZodString, "many">;
1522
1533
  buttonCaption: z.ZodOptional<z.ZodString>;
1523
1534
  buttonAction: z.ZodOptional<z.ZodString>;
1535
+ buttonActionYearly: z.ZodOptional<z.ZodString>;
1524
1536
  highlighted: z.ZodOptional<z.ZodBoolean>;
1525
1537
  }, "strict", z.ZodTypeAny, {
1526
1538
  description?: string;
@@ -1529,7 +1541,9 @@ declare function blockSettingsSchemas(k: FieldKinds): {
1529
1541
  name?: string;
1530
1542
  highlighted?: boolean;
1531
1543
  price?: string;
1544
+ priceYearly?: string;
1532
1545
  features?: string[];
1546
+ buttonActionYearly?: string;
1533
1547
  }, {
1534
1548
  description?: string;
1535
1549
  buttonCaption?: string;
@@ -1537,7 +1551,9 @@ declare function blockSettingsSchemas(k: FieldKinds): {
1537
1551
  name?: string;
1538
1552
  highlighted?: boolean;
1539
1553
  price?: string;
1554
+ priceYearly?: string;
1540
1555
  features?: string[];
1556
+ buttonActionYearly?: string;
1541
1557
  }>, "many">>;
1542
1558
  titleLevel: z.ZodOptional<z.ZodEnum<["h1", "h2", "h3"]>>;
1543
1559
  titleSize: z.ZodOptional<z.ZodObject<{
@@ -1683,8 +1699,14 @@ declare function blockSettingsSchemas(k: FieldKinds): {
1683
1699
  name?: string;
1684
1700
  highlighted?: boolean;
1685
1701
  price?: string;
1702
+ priceYearly?: string;
1686
1703
  features?: string[];
1704
+ buttonActionYearly?: string;
1687
1705
  }[];
1706
+ pricingSwitcher?: boolean;
1707
+ monthlyPriceCaption?: string;
1708
+ yearlyPriceCaption?: string;
1709
+ defaultPeriod?: "monthly" | "yearly";
1688
1710
  }, {
1689
1711
  title?: string;
1690
1712
  description?: any;
@@ -1730,8 +1752,14 @@ declare function blockSettingsSchemas(k: FieldKinds): {
1730
1752
  name?: string;
1731
1753
  highlighted?: boolean;
1732
1754
  price?: string;
1755
+ priceYearly?: string;
1733
1756
  features?: string[];
1757
+ buttonActionYearly?: string;
1734
1758
  }[];
1759
+ pricingSwitcher?: boolean;
1760
+ monthlyPriceCaption?: string;
1761
+ yearlyPriceCaption?: string;
1762
+ defaultPeriod?: "monthly" | "yearly";
1735
1763
  }>;
1736
1764
  faq: z.ZodObject<{
1737
1765
  headerAlignment: z.ZodOptional<z.ZodEnum<["left", "center", "right", "top", "bottom"]>>;
@@ -6587,6 +6615,8 @@ declare const siteFileSchema: z.ZodObject<{
6587
6615
  linkAlignment: z.ZodOptional<z.ZodEnum<["left", "center", "right"]>>;
6588
6616
  backdropBlur: z.ZodOptional<z.ZodBoolean>;
6589
6617
  logoCorners: z.ZodOptional<z.ZodNumber>;
6618
+ githubRepo: z.ZodOptional<z.ZodString>;
6619
+ showGithubStars: z.ZodOptional<z.ZodBoolean>;
6590
6620
  cssId: z.ZodOptional<z.ZodString>;
6591
6621
  verticalPadding: z.ZodOptional<z.ZodEnum<["py-0", "py-4", "py-6", "py-8", "py-10", "py-12", "py-16", "py-20", "py-24", "py-32", "py-40", "py-48", "py-56", "py-64"]>>;
6592
6622
  maxWidth: z.ZodOptional<z.ZodEnum<["max-w-2xl", "max-w-3xl", "max-w-4xl", "max-w-5xl", "max-w-6xl"]>>;
@@ -6705,6 +6735,8 @@ declare const siteFileSchema: z.ZodObject<{
6705
6735
  ctaHref?: string;
6706
6736
  linkAlignment?: "left" | "center" | "right";
6707
6737
  backdropBlur?: boolean;
6738
+ githubRepo?: string;
6739
+ showGithubStars?: boolean;
6708
6740
  }, {
6709
6741
  layout?: "fixed" | "centered" | "floating";
6710
6742
  cssId?: string;
@@ -6740,6 +6772,8 @@ declare const siteFileSchema: z.ZodObject<{
6740
6772
  ctaHref?: string;
6741
6773
  linkAlignment?: "left" | "center" | "right";
6742
6774
  backdropBlur?: boolean;
6775
+ githubRepo?: string;
6776
+ showGithubStars?: boolean;
6743
6777
  }>>;
6744
6778
  footer: z.ZodOptional<z.ZodObject<{
6745
6779
  layout: z.ZodOptional<z.ZodEnum<["columns", "centered", "minimal"]>>;
@@ -6946,6 +6980,8 @@ declare const siteFileSchema: z.ZodObject<{
6946
6980
  ctaHref?: string;
6947
6981
  linkAlignment?: "left" | "center" | "right";
6948
6982
  backdropBlur?: boolean;
6983
+ githubRepo?: string;
6984
+ showGithubStars?: boolean;
6949
6985
  };
6950
6986
  footer?: {
6951
6987
  layout?: "columns" | "centered" | "minimal";
@@ -7472,6 +7508,8 @@ declare const siteFileSchema: z.ZodObject<{
7472
7508
  ctaHref?: string;
7473
7509
  linkAlignment?: "left" | "center" | "right";
7474
7510
  backdropBlur?: boolean;
7511
+ githubRepo?: string;
7512
+ showGithubStars?: boolean;
7475
7513
  };
7476
7514
  footer?: {
7477
7515
  layout?: "columns" | "centered" | "minimal";
@@ -5449,7 +5449,11 @@ function blockSettingsSchemas(k) {
5449
5449
  ctaHref: hrefSchema.optional(),
5450
5450
  linkAlignment: horizontalAlignmentSchema.optional(),
5451
5451
  backdropBlur: external_exports.boolean().optional(),
5452
- logoCorners: radius.optional()
5452
+ logoCorners: radius.optional(),
5453
+ githubRepo: external_exports.string().optional().describe(
5454
+ 'GitHub repository as "owner/repo" or a github.com URL. Shows a GitHub icon link; other values are ignored.'
5455
+ ),
5456
+ showGithubStars: external_exports.boolean().optional().describe("Show the repository's star count next to the GitHub icon.")
5453
5457
  }).strict(),
5454
5458
  hero: external_exports.object({
5455
5459
  ...common,
@@ -5559,14 +5563,25 @@ function blockSettingsSchemas(k) {
5559
5563
  ...titleSettingsShape,
5560
5564
  description: k.richText.optional(),
5561
5565
  headerAlignment: alignmentSchema.optional(),
5566
+ pricingSwitcher: external_exports.boolean().optional().describe("Show a Monthly/Yearly switch above the plans."),
5567
+ monthlyPriceCaption: external_exports.string().optional().describe('Defaults to "Monthly".'),
5568
+ yearlyPriceCaption: external_exports.string().optional().describe('Defaults to "Yearly", e.g. "Yearly (2 months free)".'),
5569
+ defaultPeriod: external_exports.enum(["monthly", "yearly"]).optional().describe("Period selected on load. Defaults to yearly."),
5562
5570
  tiers: external_exports.array(
5563
5571
  external_exports.object({
5564
5572
  name: external_exports.string(),
5565
- price: external_exports.string().describe('Display string, e.g. "$29/mo".'),
5573
+ price: external_exports.string().describe(
5574
+ 'Display string, e.g. "$29/month". The monthly price when pricingSwitcher is on.'
5575
+ ),
5576
+ priceYearly: external_exports.string().optional().describe(
5577
+ 'Shown when the switch is on Yearly, e.g. "$290/year". Falls back to price.'
5578
+ ),
5566
5579
  description: external_exports.string().optional(),
5567
5580
  features: external_exports.array(external_exports.string()),
5568
5581
  buttonCaption: external_exports.string().optional(),
5569
5582
  buttonAction: hrefSchema.optional(),
5583
+ // Yearly button link. Falls back to buttonAction.
5584
+ buttonActionYearly: hrefSchema.optional(),
5570
5585
  highlighted: external_exports.boolean().optional()
5571
5586
  }).strict()
5572
5587
  ).optional()