@frontlit/page-builder 0.1.0-alpha.7 → 0.1.0-alpha.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks/index.js +2 -2
- package/dist/builder/index.js +5 -5
- package/dist/{chunk-HEKBPKGS.js → chunk-2GDCOSXP.js} +6 -6
- package/dist/{chunk-HEKBPKGS.js.map → chunk-2GDCOSXP.js.map} +1 -1
- package/dist/{chunk-XQE4RVNO.js → chunk-5THGEJHP.js} +26 -10
- package/dist/chunk-5THGEJHP.js.map +1 -0
- package/dist/{chunk-KRQWGGAJ.js → chunk-BLCA5IS5.js} +4 -3
- package/dist/chunk-BLCA5IS5.js.map +1 -0
- package/dist/{chunk-LL6CG6KH.js → chunk-QXCELWTN.js} +3 -3
- package/dist/{chunk-LL6CG6KH.js.map → chunk-QXCELWTN.js.map} +1 -1
- package/dist/{chunk-I2LRKHSL.js → chunk-X7EPINZ7.js} +5 -5
- package/dist/{chunk-I2LRKHSL.js.map → chunk-X7EPINZ7.js.map} +1 -1
- package/dist/components/index.js +2 -2
- package/dist/index.js +5 -5
- package/dist/primitives/index.d.ts +22 -20
- package/dist/primitives/index.js +1 -1
- package/dist/renderer/index.js +4 -4
- package/dist/server/index.js +25 -8
- package/dist/server/index.js.map +1 -1
- package/dist/server/primitives.d.ts +22 -20
- package/dist/server/primitives.js +2 -1
- package/dist/server/primitives.js.map +1 -1
- package/dist/server/schema.d.ts +15 -1
- package/dist/server/schema.js +166 -41
- package/dist/server/schema.js.map +1 -1
- package/dist/styles.css +265 -0
- package/package.json +2 -2
- package/schema/site.v1.json +5 -0
- package/dist/chunk-KRQWGGAJ.js.map +0 -1
- package/dist/chunk-XQE4RVNO.js.map +0 -1
|
@@ -79,6 +79,26 @@ interface TypographyProps extends React__default.HTMLAttributes<HTMLElement> {
|
|
|
79
79
|
|
|
80
80
|
declare const Caption: React__default.FC<TypographyProps>;
|
|
81
81
|
|
|
82
|
+
type HeadingTag = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | "div";
|
|
83
|
+
interface HeadingProps extends TypographyProps {
|
|
84
|
+
/** Element to render. Lets a block pick its heading level independently of its look. */
|
|
85
|
+
as?: HeadingTag;
|
|
86
|
+
/**
|
|
87
|
+
* Font-size classes that override the theme size. Kept apart from
|
|
88
|
+
* `className` so they are merged before the theme's line-height, which
|
|
89
|
+
* tailwind-merge would otherwise drop.
|
|
90
|
+
*/
|
|
91
|
+
sizeClassName?: string;
|
|
92
|
+
}
|
|
93
|
+
/** px size of each Tailwind text size class. */
|
|
94
|
+
declare const TAILWIND_TEXT_PX: Record<string, number>;
|
|
95
|
+
/** CSS `clamp()` growing from `min` px on a phone to `max` px on a desktop. */
|
|
96
|
+
declare function fluidFontSize({ min, max }: {
|
|
97
|
+
min: number;
|
|
98
|
+
max: number;
|
|
99
|
+
}): string;
|
|
100
|
+
declare function createHeading(displayName: string, defaultTag: HeadingTag, baseClasses: string, getTypography: (theme?: ThemeStyle) => Typography | undefined): React__default.FC<HeadingProps>;
|
|
101
|
+
|
|
82
102
|
interface PageCardProps extends React__default.HTMLAttributes<HTMLDivElement> {
|
|
83
103
|
isLink?: boolean;
|
|
84
104
|
children: React__default.ReactNode;
|
|
@@ -100,6 +120,8 @@ interface PageCardHeaderProps extends React__default.HTMLAttributes<HTMLDivEleme
|
|
|
100
120
|
children: React__default.ReactNode;
|
|
101
121
|
className?: string;
|
|
102
122
|
theme?: ThemeStyle;
|
|
123
|
+
/** Element for the header text; defaults to `h4`. */
|
|
124
|
+
as?: HeadingTag;
|
|
103
125
|
}
|
|
104
126
|
declare const PageCard: React__default.FC<PageCardProps>;
|
|
105
127
|
declare const PageCardImage: React__default.FC<PageCardImageProps>;
|
|
@@ -132,26 +154,6 @@ interface CollapsibleProps {
|
|
|
132
154
|
/** A disclosure built on native `<details>`: works without JavaScript. */
|
|
133
155
|
declare function Collapsible({ summary, children, defaultOpen, variant, id, theme, className, }: CollapsibleProps): React__default.JSX.Element;
|
|
134
156
|
|
|
135
|
-
type HeadingTag = "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "span" | "div";
|
|
136
|
-
interface HeadingProps extends TypographyProps {
|
|
137
|
-
/** Element to render. Lets a block pick its heading level independently of its look. */
|
|
138
|
-
as?: HeadingTag;
|
|
139
|
-
/**
|
|
140
|
-
* Font-size classes that override the theme size. Kept apart from
|
|
141
|
-
* `className` so they are merged before the theme's line-height, which
|
|
142
|
-
* tailwind-merge would otherwise drop.
|
|
143
|
-
*/
|
|
144
|
-
sizeClassName?: string;
|
|
145
|
-
}
|
|
146
|
-
/** px size of each Tailwind text size class. */
|
|
147
|
-
declare const TAILWIND_TEXT_PX: Record<string, number>;
|
|
148
|
-
/** CSS `clamp()` growing from `min` px on a phone to `max` px on a desktop. */
|
|
149
|
-
declare function fluidFontSize({ min, max }: {
|
|
150
|
-
min: number;
|
|
151
|
-
max: number;
|
|
152
|
-
}): string;
|
|
153
|
-
declare function createHeading(displayName: string, defaultTag: HeadingTag, baseClasses: string, getTypography: (theme?: ThemeStyle) => Typography | undefined): React__default.FC<HeadingProps>;
|
|
154
|
-
|
|
155
157
|
/** Hero-sized headline, styled separately from section H1s. */
|
|
156
158
|
declare const Display: React.FC<HeadingProps>;
|
|
157
159
|
|
|
@@ -341,6 +341,7 @@ var PageCardHeader = ({
|
|
|
341
341
|
children,
|
|
342
342
|
className = "",
|
|
343
343
|
theme,
|
|
344
|
+
as,
|
|
344
345
|
...props
|
|
345
346
|
}) => {
|
|
346
347
|
const classes = cn(
|
|
@@ -348,7 +349,7 @@ var PageCardHeader = ({
|
|
|
348
349
|
"pb-4",
|
|
349
350
|
className
|
|
350
351
|
);
|
|
351
|
-
return /* @__PURE__ */ jsx7("div", { className: classes, ...props, children: /* @__PURE__ */ jsx7(Header4, { theme, children }) });
|
|
352
|
+
return /* @__PURE__ */ jsx7("div", { className: classes, ...props, children: /* @__PURE__ */ jsx7(Header4, { theme, as, children }) });
|
|
352
353
|
};
|
|
353
354
|
|
|
354
355
|
// src/server/primitives.ts
|
|
@@ -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/server/primitives.ts","../../src/primitives/collapsible.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/inline-code.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/native-select.tsx","../../src/primitives/preheader.tsx","../../src/primitives/section.tsx","../../src/models/media.ts","../../src/primitives/subheader1.tsx","../../src/primitives/subheader2.tsx","../../src/primitives/table.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","/**\n * The hook-free primitives. Unlike `@frontlit/page-builder/primitives` (one\n * client bundle shared with the builder and every Radix control), this entry\n * is callable from server components and, being small, cheap to import from\n * client components too. Interactive primitives (dialog, drawer, select, …)\n * stay in the main entry. `CodeSnippet` and `Tabs` are client islands.\n */\nexport * from \"../primitives/badge\";\nexport * from \"../primitives/button\";\nexport * from \"../primitives/caption\";\nexport * from \"../primitives/card\";\nexport * from \"../primitives/code-snippet\";\nexport * from \"../primitives/collapsible\";\nexport * from \"../primitives/display\";\nexport * from \"../primitives/heading\";\nexport * from \"../primitives/header1\";\nexport * from \"../primitives/header2\";\nexport * from \"../primitives/header3\";\nexport * from \"../primitives/header4\";\nexport * from \"../primitives/image\";\nexport * from \"../primitives/inline-code\";\nexport * from \"../primitives/input\";\nexport * from \"../primitives/label\";\nexport * from \"../primitives/link\";\nexport * from \"../primitives/native-select\";\nexport * from \"../primitives/preheader\";\nexport * from \"../primitives/section\";\nexport * from \"../primitives/subheader1\";\nexport * from \"../primitives/subheader2\";\nexport * from \"../primitives/table\";\nexport * from \"../primitives/tabs\";\nexport * from \"../primitives/text1\";\nexport * from \"../primitives/text2\";\nexport * from \"../primitives/textarea\";\n","import type React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface CollapsibleProps {\n summary: React.ReactNode;\n children: React.ReactNode;\n defaultOpen?: boolean;\n /** `bordered` draws a card-like box; `plain` only the toggle row. */\n variant?: \"bordered\" | \"plain\";\n id?: string;\n theme?: ThemeStyle;\n className?: string;\n}\n\n/** A disclosure built on native `<details>`: works without JavaScript. */\nexport function Collapsible({\n summary,\n children,\n defaultOpen,\n variant = \"bordered\",\n id,\n theme,\n className,\n}: CollapsibleProps) {\n const card = theme?.interactives?.card;\n const typography = theme?.typography?.text2;\n return (\n <details\n id={id}\n open={defaultOpen}\n className={cn(\n \"group min-w-0\",\n variant === \"bordered\" && [\n \"border border-border bg-card text-card-foreground\",\n card?.border?.radius ?? \"rounded-md\",\n ],\n className,\n )}\n >\n <summary\n className={cn(\n \"flex cursor-pointer list-none items-center gap-2 text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&::-webkit-details-marker]:hidden\",\n variant === \"bordered\" ? \"px-3 py-2\" : \"py-1\",\n typography?.fontFamily,\n typography?.fontSize ?? \"text-sm\",\n typography?.letterSpacing,\n )}\n >\n <ChevronRight\n aria-hidden=\"true\"\n className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform group-open:rotate-90\"\n />\n <span className=\"min-w-0 flex-1\">{summary}</span>\n </summary>\n <div\n className={cn(\n variant === \"bordered\" ? \"border-t border-border p-3\" : \"pl-6 pt-1\",\n )}\n >\n {children}\n </div>\n </details>\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 type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface InlineCodeProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n theme?: ThemeStyle;\n /** `muted` drops the background, for secondary details like types. */\n variant?: \"default\" | \"muted\";\n}\n\n/** Code inside running text: identifiers, paths, field names and values. */\nexport function InlineCode({\n children,\n theme,\n variant = \"default\",\n className,\n ...props\n}: InlineCodeProps) {\n const typography = theme?.typography?.code;\n return (\n <code\n className={cn(\n // Code is literal: never inherit a theme's uppercase captions.\n \"break-words normal-case\",\n typography?.fontFamily ?? \"font-jetbrains-mono\",\n // Relative to the surrounding text; the theme's code size is for blocks.\n \"text-[0.875em]\",\n typography?.letterSpacing,\n variant === \"default\"\n ? \"rounded bg-muted px-1 py-0.5 text-foreground\"\n : \"text-muted-foreground\",\n className,\n )}\n {...props}\n >\n {children}\n </code>\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 React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface NativeSelectProps\n extends React.SelectHTMLAttributes<HTMLSelectElement> {\n theme?: ThemeStyle;\n}\n\n/**\n * A themed native `<select>`. Use it where a page must stay light (it ships\n * no JavaScript); `Select` is the richer Radix-based control.\n */\nexport const NativeSelect = React.forwardRef<HTMLSelectElement, NativeSelectProps>(\n ({ className, theme, children, ...props }, ref) => {\n const input = theme?.interactives?.input;\n const typography = theme?.typography?.input;\n return (\n <select\n ref={ref}\n className={cn(\n \"flex min-h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base leading-normal text-foreground ring-offset-background 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 typography?.fontFamily,\n typography?.fontSize,\n typography?.fontWeight,\n typography?.letterSpacing,\n input?.padding?.x,\n input?.padding?.y,\n input?.border?.width,\n input?.border?.style,\n input?.border?.radius,\n input?.shadow,\n input?.custom,\n className,\n )}\n {...props}\n >\n {children}\n </select>\n );\n },\n);\nNativeSelect.displayName = \"NativeSelect\";\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 // Clips like overflow-hidden without becoming a scroll\n // container, so sticky children (docs sidebars) still stick.\n \"mx-auto z-[3] relative overflow-clip\",\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 type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface TableColumn {\n key: string;\n label: string;\n className?: string;\n}\n\nexport interface TableProps {\n columns: TableColumn[];\n rows: Record<string, React.ReactNode>[];\n theme?: ThemeStyle;\n className?: string;\n}\n\n/**\n * A themed data table. On narrow screens each row stacks into a block, with\n * the column name shown before every value.\n */\nexport function Table({ columns, rows, theme, className }: TableProps) {\n const typography = theme?.typography?.text2;\n const card = theme?.interactives?.card;\n const text = cn(\n typography?.fontFamily,\n typography?.fontSize ?? \"text-sm\",\n typography?.lineHeight,\n typography?.letterSpacing,\n );\n return (\n <div\n className={cn(\n \"w-full min-w-0 overflow-hidden border border-border\",\n card?.border?.radius ?? \"rounded-md\",\n className,\n )}\n >\n <table className={cn(\"block w-full border-collapse md:table\", text)}>\n <thead className=\"hidden md:table-header-group\">\n <tr className=\"border-b border-border bg-muted/50\">\n {columns.map((column) => (\n <th\n key={column.key}\n scope=\"col\"\n className={cn(\n \"px-3 py-2 text-left font-medium text-muted-foreground\",\n column.className,\n )}\n >\n {column.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"block md:table-row-group\">\n {rows.map((row, index) => (\n <tr\n key={index}\n className=\"block border-b border-border px-3 py-2 last:border-b-0 md:table-row md:p-0\"\n >\n {columns.map((column) => (\n <td\n key={column.key}\n data-label={column.label}\n className={cn(\n \"block min-w-0 break-words py-1 align-top text-foreground before:mr-2 before:text-muted-foreground before:content-[attr(data-label)':'] md:table-cell md:px-3 md:py-2 md:before:content-none\",\n column.className,\n )}\n >\n {row[column.key]}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\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","jsx","jsx","React","React","jsx","jsx","Input","React","React","cva","React","jsx","cva","jsx","Label","React","jsx","React","jsx","React","jsx","React","jsx","jsxs","React","jsx","jsx","jsx","jsxs","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/server/primitives.ts","../../src/primitives/collapsible.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/inline-code.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/native-select.tsx","../../src/primitives/preheader.tsx","../../src/primitives/section.tsx","../../src/models/media.ts","../../src/primitives/subheader1.tsx","../../src/primitives/subheader2.tsx","../../src/primitives/table.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 type { HeadingTag } from \"./heading\";\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 /** Element for the header text; defaults to `h4`. */\n as?: HeadingTag;\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 as,\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} as={as}>\n {children}\n </Header4>\n </div>\n );\n};\n","/**\n * The hook-free primitives. Unlike `@frontlit/page-builder/primitives` (one\n * client bundle shared with the builder and every Radix control), this entry\n * is callable from server components and, being small, cheap to import from\n * client components too. Interactive primitives (dialog, drawer, select, …)\n * stay in the main entry. `CodeSnippet` and `Tabs` are client islands.\n */\nexport * from \"../primitives/badge\";\nexport * from \"../primitives/button\";\nexport * from \"../primitives/caption\";\nexport * from \"../primitives/card\";\nexport * from \"../primitives/code-snippet\";\nexport * from \"../primitives/collapsible\";\nexport * from \"../primitives/display\";\nexport * from \"../primitives/heading\";\nexport * from \"../primitives/header1\";\nexport * from \"../primitives/header2\";\nexport * from \"../primitives/header3\";\nexport * from \"../primitives/header4\";\nexport * from \"../primitives/image\";\nexport * from \"../primitives/inline-code\";\nexport * from \"../primitives/input\";\nexport * from \"../primitives/label\";\nexport * from \"../primitives/link\";\nexport * from \"../primitives/native-select\";\nexport * from \"../primitives/preheader\";\nexport * from \"../primitives/section\";\nexport * from \"../primitives/subheader1\";\nexport * from \"../primitives/subheader2\";\nexport * from \"../primitives/table\";\nexport * from \"../primitives/tabs\";\nexport * from \"../primitives/text1\";\nexport * from \"../primitives/text2\";\nexport * from \"../primitives/textarea\";\n","import type React from \"react\";\nimport { ChevronRight } from \"lucide-react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface CollapsibleProps {\n summary: React.ReactNode;\n children: React.ReactNode;\n defaultOpen?: boolean;\n /** `bordered` draws a card-like box; `plain` only the toggle row. */\n variant?: \"bordered\" | \"plain\";\n id?: string;\n theme?: ThemeStyle;\n className?: string;\n}\n\n/** A disclosure built on native `<details>`: works without JavaScript. */\nexport function Collapsible({\n summary,\n children,\n defaultOpen,\n variant = \"bordered\",\n id,\n theme,\n className,\n}: CollapsibleProps) {\n const card = theme?.interactives?.card;\n const typography = theme?.typography?.text2;\n return (\n <details\n id={id}\n open={defaultOpen}\n className={cn(\n \"group min-w-0\",\n variant === \"bordered\" && [\n \"border border-border bg-card text-card-foreground\",\n card?.border?.radius ?? \"rounded-md\",\n ],\n className,\n )}\n >\n <summary\n className={cn(\n \"flex cursor-pointer list-none items-center gap-2 text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring [&::-webkit-details-marker]:hidden\",\n variant === \"bordered\" ? \"px-3 py-2\" : \"py-1\",\n typography?.fontFamily,\n typography?.fontSize ?? \"text-sm\",\n typography?.letterSpacing,\n )}\n >\n <ChevronRight\n aria-hidden=\"true\"\n className=\"h-4 w-4 shrink-0 text-muted-foreground transition-transform group-open:rotate-90\"\n />\n <span className=\"min-w-0 flex-1\">{summary}</span>\n </summary>\n <div\n className={cn(\n variant === \"bordered\" ? \"border-t border-border p-3\" : \"pl-6 pt-1\",\n )}\n >\n {children}\n </div>\n </details>\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 type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface InlineCodeProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n theme?: ThemeStyle;\n /** `muted` drops the background, for secondary details like types. */\n variant?: \"default\" | \"muted\";\n}\n\n/** Code inside running text: identifiers, paths, field names and values. */\nexport function InlineCode({\n children,\n theme,\n variant = \"default\",\n className,\n ...props\n}: InlineCodeProps) {\n const typography = theme?.typography?.code;\n return (\n <code\n className={cn(\n // Code is literal: never inherit a theme's uppercase captions.\n \"break-words normal-case\",\n typography?.fontFamily ?? \"font-jetbrains-mono\",\n // Relative to the surrounding text; the theme's code size is for blocks.\n \"text-[0.875em]\",\n typography?.letterSpacing,\n variant === \"default\"\n ? \"rounded bg-muted px-1 py-0.5 text-foreground\"\n : \"text-muted-foreground\",\n className,\n )}\n {...props}\n >\n {children}\n </code>\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 React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface NativeSelectProps\n extends React.SelectHTMLAttributes<HTMLSelectElement> {\n theme?: ThemeStyle;\n}\n\n/**\n * A themed native `<select>`. Use it where a page must stay light (it ships\n * no JavaScript); `Select` is the richer Radix-based control.\n */\nexport const NativeSelect = React.forwardRef<HTMLSelectElement, NativeSelectProps>(\n ({ className, theme, children, ...props }, ref) => {\n const input = theme?.interactives?.input;\n const typography = theme?.typography?.input;\n return (\n <select\n ref={ref}\n className={cn(\n \"flex min-h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base leading-normal text-foreground ring-offset-background 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 typography?.fontFamily,\n typography?.fontSize,\n typography?.fontWeight,\n typography?.letterSpacing,\n input?.padding?.x,\n input?.padding?.y,\n input?.border?.width,\n input?.border?.style,\n input?.border?.radius,\n input?.shadow,\n input?.custom,\n className,\n )}\n {...props}\n >\n {children}\n </select>\n );\n },\n);\nNativeSelect.displayName = \"NativeSelect\";\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 // Clips like overflow-hidden without becoming a scroll\n // container, so sticky children (docs sidebars) still stick.\n \"mx-auto z-[3] relative overflow-clip\",\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 type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface TableColumn {\n key: string;\n label: string;\n className?: string;\n}\n\nexport interface TableProps {\n columns: TableColumn[];\n rows: Record<string, React.ReactNode>[];\n theme?: ThemeStyle;\n className?: string;\n}\n\n/**\n * A themed data table. On narrow screens each row stacks into a block, with\n * the column name shown before every value.\n */\nexport function Table({ columns, rows, theme, className }: TableProps) {\n const typography = theme?.typography?.text2;\n const card = theme?.interactives?.card;\n const text = cn(\n typography?.fontFamily,\n typography?.fontSize ?? \"text-sm\",\n typography?.lineHeight,\n typography?.letterSpacing,\n );\n return (\n <div\n className={cn(\n \"w-full min-w-0 overflow-hidden border border-border\",\n card?.border?.radius ?? \"rounded-md\",\n className,\n )}\n >\n <table className={cn(\"block w-full border-collapse md:table\", text)}>\n <thead className=\"hidden md:table-header-group\">\n <tr className=\"border-b border-border bg-muted/50\">\n {columns.map((column) => (\n <th\n key={column.key}\n scope=\"col\"\n className={cn(\n \"px-3 py-2 text-left font-medium text-muted-foreground\",\n column.className,\n )}\n >\n {column.label}\n </th>\n ))}\n </tr>\n </thead>\n <tbody className=\"block md:table-row-group\">\n {rows.map((row, index) => (\n <tr\n key={index}\n className=\"block border-b border-border px-3 py-2 last:border-b-0 md:table-row md:p-0\"\n >\n {columns.map((column) => (\n <td\n key={column.key}\n data-label={column.label}\n className={cn(\n \"block min-w-0 break-words py-1 align-top text-foreground before:mr-2 before:text-muted-foreground before:content-[attr(data-label)':'] md:table-cell md:px-3 md:py-2 md:before:content-none\",\n column.className,\n )}\n >\n {row[column.key]}\n </td>\n ))}\n </tr>\n ))}\n </tbody>\n </table>\n </div>\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","jsx","jsx","React","React","jsx","jsx","Input","React","React","cva","React","jsx","cva","jsx","Label","React","jsx","React","jsx","React","jsx","React","jsx","jsxs","React","jsx","jsx","jsx","jsxs","jsx","jsx","React","jsx","React"]}
|
package/dist/server/schema.d.ts
CHANGED
|
@@ -3202,6 +3202,9 @@ interface SiteDocument {
|
|
|
3202
3202
|
header?: Record<string, unknown>;
|
|
3203
3203
|
footer?: Record<string, unknown>;
|
|
3204
3204
|
redirects?: Redirect[];
|
|
3205
|
+
/** Markdown for AI agents: what the site is for and when to use it.
|
|
3206
|
+
* Served as its own section of `/llms.txt`. */
|
|
3207
|
+
agentInstructions?: string;
|
|
3205
3208
|
}
|
|
3206
3209
|
/** Built-in block defaults, in file form. */
|
|
3207
3210
|
declare const fileBlockDefaults: Record<BlockName, Record<string, unknown>>;
|
|
@@ -6944,6 +6947,7 @@ declare const siteFileSchema: z.ZodObject<{
|
|
|
6944
6947
|
to?: string;
|
|
6945
6948
|
permanent?: boolean;
|
|
6946
6949
|
}>, "many">>;
|
|
6950
|
+
agentInstructions: z.ZodOptional<z.ZodString>;
|
|
6947
6951
|
}, "strict", z.ZodTypeAny, {
|
|
6948
6952
|
header?: {
|
|
6949
6953
|
layout?: "fixed" | "centered" | "floating";
|
|
@@ -7472,6 +7476,7 @@ declare const siteFileSchema: z.ZodObject<{
|
|
|
7472
7476
|
to?: string;
|
|
7473
7477
|
permanent?: boolean;
|
|
7474
7478
|
}[];
|
|
7479
|
+
agentInstructions?: string;
|
|
7475
7480
|
}, {
|
|
7476
7481
|
header?: {
|
|
7477
7482
|
layout?: "fixed" | "centered" | "floating";
|
|
@@ -8000,12 +8005,21 @@ declare const siteFileSchema: z.ZodObject<{
|
|
|
8000
8005
|
to?: string;
|
|
8001
8006
|
permanent?: boolean;
|
|
8002
8007
|
}[];
|
|
8008
|
+
agentInstructions?: string;
|
|
8003
8009
|
}>;
|
|
8004
8010
|
/** Parses `site.json` into a canonical `SiteDocument`. */
|
|
8005
8011
|
declare function parseSiteFile(source: string | unknown): SiteDocument;
|
|
8006
8012
|
/** Serializes site chrome in canonical form. */
|
|
8007
8013
|
declare function serializeSiteFile(site: SiteDocument): string;
|
|
8008
8014
|
|
|
8015
|
+
/**
|
|
8016
|
+
* A published page layout as Markdown, for agents (`Accept: text/markdown`
|
|
8017
|
+
* and `<path>.md`): headings, text, buttons as links and cards as lists.
|
|
8018
|
+
* `slot` renders FrontLit's content feed (the blog, docs or changelog list)
|
|
8019
|
+
* where the page places it. Blocks that fail to read are skipped.
|
|
8020
|
+
*/
|
|
8021
|
+
declare function layoutToMarkdown(layout: StoredBlock[], slot?: () => string): string;
|
|
8022
|
+
|
|
8009
8023
|
/** Runtime schema for `ThemeStyle`. */
|
|
8010
8024
|
declare const themeStyleSchema: z.ZodObject<{
|
|
8011
8025
|
colors: z.ZodObject<{
|
|
@@ -11343,4 +11357,4 @@ declare const themeStyleSchema: z.ZodObject<{
|
|
|
11343
11357
|
};
|
|
11344
11358
|
}>;
|
|
11345
11359
|
|
|
11346
|
-
export { type BlockName, CHROME_BLOCK_NAMES, CONTENT_FEED_BLOCK, DATA_SLOT_BLOCK, type FieldKinds, PAGE_SCHEMA_URL, type PageDocument, type Redirect, SITE_SCHEMA_URL, type SchemaDiagnostic, SchemaValidationError, type SiteDocument, type StoredBlock, blockDefaults, blockSettingsSchemas, canonicalizeLayout, canonicalizeSettings, exportKinds, fileBlockDefaults, fileKinds, fileMediaSchema, formatDiagnostic, fromFileSettings, pageFileSchema, parsePageFile, parseSiteFile, serializePageFile, serializeSiteFile, siteFileSchema, themeStyleSchema, toFileSettings };
|
|
11360
|
+
export { type BlockName, CHROME_BLOCK_NAMES, CONTENT_FEED_BLOCK, DATA_SLOT_BLOCK, type FieldKinds, PAGE_SCHEMA_URL, type PageDocument, type Redirect, SITE_SCHEMA_URL, type SchemaDiagnostic, SchemaValidationError, type SiteDocument, type StoredBlock, blockDefaults, blockSettingsSchemas, canonicalizeLayout, canonicalizeSettings, exportKinds, fileBlockDefaults, fileKinds, fileMediaSchema, formatDiagnostic, fromFileSettings, layoutToMarkdown, pageFileSchema, parsePageFile, parseSiteFile, serializePageFile, serializeSiteFile, siteFileSchema, themeStyleSchema, toFileSettings };
|