@frontlit/page-builder 0.1.0-alpha.5 → 0.1.0-alpha.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks/index.d.ts +1 -1
- package/dist/blocks/index.js +3 -3
- package/dist/builder/index.js +6 -6
- package/dist/{chunk-BBI7UHOA.js → chunk-BWOGREWJ.js} +3 -3
- package/dist/{chunk-BBI7UHOA.js.map → chunk-BWOGREWJ.js.map} +1 -1
- package/dist/{chunk-5J6TLS5U.js → chunk-FZBLE44D.js} +4 -4
- package/dist/{chunk-5J6TLS5U.js.map → chunk-FZBLE44D.js.map} +1 -1
- package/dist/{chunk-J7Z4UW45.js → chunk-OEQJQ4OA.js} +112 -5
- package/dist/chunk-OEQJQ4OA.js.map +1 -0
- package/dist/{chunk-LMCEOWQG.js → chunk-PQTDUFKU.js} +6 -6
- package/dist/{chunk-LMCEOWQG.js.map → chunk-PQTDUFKU.js.map} +1 -1
- package/dist/{chunk-36QHCIPM.js → chunk-QMUIISN3.js} +5 -93
- package/dist/chunk-QMUIISN3.js.map +1 -0
- package/dist/{chunk-USPQ3AOW.js → chunk-YXLOVEQZ.js} +6 -6
- package/dist/{chunk-USPQ3AOW.js.map → chunk-YXLOVEQZ.js.map} +1 -1
- package/dist/components/index.d.ts +1 -1
- package/dist/components/index.js +3 -3
- package/dist/{image-Bk8kPXwP.d.ts → image-Cv0aSUHD.d.ts} +3 -1
- package/dist/index.js +6 -6
- package/dist/primitives/index.d.ts +2 -0
- package/dist/primitives/index.js +1 -1
- package/dist/renderer/index.js +5 -5
- package/dist/server/index.js +6 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/primitives.d.ts +2 -0
- package/dist/server/primitives.js +53 -30
- package/dist/server/primitives.js.map +1 -1
- package/package.json +1 -1
- package/dist/chunk-36QHCIPM.js.map +0 -1
- package/dist/chunk-J7Z4UW45.js.map +0 -1
|
@@ -142,6 +142,8 @@ interface ImageProps extends React__default.ImgHTMLAttributes<HTMLImageElement>
|
|
|
142
142
|
alt?: string;
|
|
143
143
|
className?: string;
|
|
144
144
|
theme?: ThemeStyle;
|
|
145
|
+
/** Above-the-fold image (e.g. LCP): fetched eagerly at high priority. */
|
|
146
|
+
priority?: boolean;
|
|
145
147
|
}
|
|
146
148
|
declare const Image: React__default.FC<ImageProps>;
|
|
147
149
|
|
|
@@ -383,18 +383,41 @@ var Header3 = createHeading(
|
|
|
383
383
|
(theme) => theme?.typography?.header3
|
|
384
384
|
);
|
|
385
385
|
|
|
386
|
-
// src/
|
|
386
|
+
// src/components/image.tsx
|
|
387
387
|
import { jsx as jsx8 } from "react/jsx-runtime";
|
|
388
|
+
var registry = globalThis;
|
|
389
|
+
function resolveImageAttributes(input) {
|
|
390
|
+
return registry.__frontlitImageResolver?.(input) ?? null;
|
|
391
|
+
}
|
|
392
|
+
|
|
393
|
+
// src/primitives/image.tsx
|
|
394
|
+
import { jsx as jsx9 } from "react/jsx-runtime";
|
|
388
395
|
var Image = ({
|
|
389
396
|
src,
|
|
390
397
|
alt = "",
|
|
391
398
|
className = "",
|
|
392
399
|
theme,
|
|
400
|
+
priority = false,
|
|
401
|
+
sizes,
|
|
393
402
|
...props
|
|
394
403
|
}) => {
|
|
395
404
|
const cardStyles = theme?.interactives?.card;
|
|
396
405
|
const classes = cn("w-full object-cover", cardStyles?.border?.radius, className);
|
|
397
|
-
|
|
406
|
+
const optimized = resolveImageAttributes({ src, alt, sizes, priority });
|
|
407
|
+
return /* @__PURE__ */ jsx9(
|
|
408
|
+
"img",
|
|
409
|
+
{
|
|
410
|
+
src,
|
|
411
|
+
alt,
|
|
412
|
+
sizes,
|
|
413
|
+
loading: priority ? "eager" : "lazy",
|
|
414
|
+
decoding: "async",
|
|
415
|
+
fetchPriority: priority ? "high" : void 0,
|
|
416
|
+
className: classes,
|
|
417
|
+
...props,
|
|
418
|
+
...optimized
|
|
419
|
+
}
|
|
420
|
+
);
|
|
398
421
|
};
|
|
399
422
|
|
|
400
423
|
// src/primitives/input.tsx
|
|
@@ -402,10 +425,10 @@ import React3 from "react";
|
|
|
402
425
|
|
|
403
426
|
// src/primitives/components/ui/input.tsx
|
|
404
427
|
import * as React2 from "react";
|
|
405
|
-
import { jsx as
|
|
428
|
+
import { jsx as jsx10 } from "react/jsx-runtime";
|
|
406
429
|
var Input = React2.forwardRef(
|
|
407
430
|
({ className, type, ...props }, ref) => {
|
|
408
|
-
return /* @__PURE__ */
|
|
431
|
+
return /* @__PURE__ */ jsx10(
|
|
409
432
|
"input",
|
|
410
433
|
{
|
|
411
434
|
type,
|
|
@@ -422,7 +445,7 @@ var Input = React2.forwardRef(
|
|
|
422
445
|
Input.displayName = "Input";
|
|
423
446
|
|
|
424
447
|
// src/primitives/input.tsx
|
|
425
|
-
import { jsx as
|
|
448
|
+
import { jsx as jsx11 } from "react/jsx-runtime";
|
|
426
449
|
var Input2 = React3.forwardRef(
|
|
427
450
|
({
|
|
428
451
|
className = "",
|
|
@@ -465,7 +488,7 @@ var Input2 = React3.forwardRef(
|
|
|
465
488
|
inputStyles?.custom,
|
|
466
489
|
className
|
|
467
490
|
);
|
|
468
|
-
return /* @__PURE__ */
|
|
491
|
+
return /* @__PURE__ */ jsx11(Input, { ref, className: classes, ...props });
|
|
469
492
|
}
|
|
470
493
|
);
|
|
471
494
|
Input2.displayName = "Input";
|
|
@@ -477,11 +500,11 @@ import React5 from "react";
|
|
|
477
500
|
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
478
501
|
import { cva as cva3 } from "class-variance-authority";
|
|
479
502
|
import * as React4 from "react";
|
|
480
|
-
import { jsx as
|
|
503
|
+
import { jsx as jsx12 } from "react/jsx-runtime";
|
|
481
504
|
var labelVariants = cva3(
|
|
482
505
|
"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70"
|
|
483
506
|
);
|
|
484
|
-
var Label = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
507
|
+
var Label = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx12(
|
|
485
508
|
LabelPrimitive.Root,
|
|
486
509
|
{
|
|
487
510
|
ref,
|
|
@@ -492,7 +515,7 @@ var Label = React4.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */
|
|
|
492
515
|
Label.displayName = LabelPrimitive.Root.displayName;
|
|
493
516
|
|
|
494
517
|
// src/primitives/label.tsx
|
|
495
|
-
import { jsx as
|
|
518
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
496
519
|
var Label2 = React5.forwardRef(
|
|
497
520
|
({ className = "", theme, error = false, ...props }, ref) => {
|
|
498
521
|
const typographyStyles = theme?.typography?.text2;
|
|
@@ -510,13 +533,13 @@ var Label2 = React5.forwardRef(
|
|
|
510
533
|
error && "text-red-500",
|
|
511
534
|
className
|
|
512
535
|
);
|
|
513
|
-
return /* @__PURE__ */
|
|
536
|
+
return /* @__PURE__ */ jsx13(Label, { ref, className: classes, ...props });
|
|
514
537
|
}
|
|
515
538
|
);
|
|
516
539
|
Label2.displayName = "Label";
|
|
517
540
|
|
|
518
541
|
// src/primitives/link.tsx
|
|
519
|
-
import { jsx as
|
|
542
|
+
import { jsx as jsx14 } from "react/jsx-runtime";
|
|
520
543
|
var Link = ({
|
|
521
544
|
children,
|
|
522
545
|
className = "",
|
|
@@ -555,7 +578,7 @@ var Link = ({
|
|
|
555
578
|
linkStyles?.custom,
|
|
556
579
|
className
|
|
557
580
|
);
|
|
558
|
-
return /* @__PURE__ */
|
|
581
|
+
return /* @__PURE__ */ jsx14(
|
|
559
582
|
"span",
|
|
560
583
|
{
|
|
561
584
|
className: classes,
|
|
@@ -570,7 +593,7 @@ var Link = ({
|
|
|
570
593
|
};
|
|
571
594
|
|
|
572
595
|
// src/primitives/preheader.tsx
|
|
573
|
-
import { jsx as
|
|
596
|
+
import { jsx as jsx15 } from "react/jsx-runtime";
|
|
574
597
|
var Preheader = ({
|
|
575
598
|
children,
|
|
576
599
|
className = "",
|
|
@@ -592,7 +615,7 @@ var Preheader = ({
|
|
|
592
615
|
typographyStyles?.textOverflow,
|
|
593
616
|
className
|
|
594
617
|
);
|
|
595
|
-
return /* @__PURE__ */
|
|
618
|
+
return /* @__PURE__ */ jsx15("p", { className: classes, ...props, children });
|
|
596
619
|
};
|
|
597
620
|
|
|
598
621
|
// src/primitives/section.tsx
|
|
@@ -611,7 +634,7 @@ function getMediaUrl(media) {
|
|
|
611
634
|
}
|
|
612
635
|
|
|
613
636
|
// src/primitives/section.tsx
|
|
614
|
-
import { Fragment, jsx as
|
|
637
|
+
import { Fragment, jsx as jsx16, jsxs } from "react/jsx-runtime";
|
|
615
638
|
function resolveBackgroundLayer(background) {
|
|
616
639
|
const attachment = background.backgroundAttachment || "scroll";
|
|
617
640
|
if (background.type === "color") {
|
|
@@ -666,7 +689,7 @@ var Section = ({
|
|
|
666
689
|
);
|
|
667
690
|
const backgroundLayer = background ? resolveBackgroundLayer(background) : null;
|
|
668
691
|
const isFixed = background && background.type !== "color" && background.backgroundAttachment === "fixed";
|
|
669
|
-
return /* @__PURE__ */
|
|
692
|
+
return /* @__PURE__ */ jsx16(Fragment, { children: React6.createElement(
|
|
670
693
|
component,
|
|
671
694
|
{
|
|
672
695
|
// `overflow-clip` keeps a fixed-attachment layer painted
|
|
@@ -676,7 +699,7 @@ var Section = ({
|
|
|
676
699
|
...props
|
|
677
700
|
},
|
|
678
701
|
/* @__PURE__ */ jsxs(Fragment, { children: [
|
|
679
|
-
backgroundLayer && /* @__PURE__ */
|
|
702
|
+
backgroundLayer && /* @__PURE__ */ jsx16(
|
|
680
703
|
"div",
|
|
681
704
|
{
|
|
682
705
|
"aria-hidden": true,
|
|
@@ -687,7 +710,7 @@ var Section = ({
|
|
|
687
710
|
style: backgroundLayer.style
|
|
688
711
|
}
|
|
689
712
|
),
|
|
690
|
-
background && background.type === "image" && /* @__PURE__ */
|
|
713
|
+
background && background.type === "image" && /* @__PURE__ */ jsx16(
|
|
691
714
|
"div",
|
|
692
715
|
{
|
|
693
716
|
"aria-hidden": true,
|
|
@@ -700,7 +723,7 @@ var Section = ({
|
|
|
700
723
|
}
|
|
701
724
|
}
|
|
702
725
|
),
|
|
703
|
-
background && background.type === "image" && /* @__PURE__ */
|
|
726
|
+
background && background.type === "image" && /* @__PURE__ */ jsx16(
|
|
704
727
|
"div",
|
|
705
728
|
{
|
|
706
729
|
"aria-hidden": true,
|
|
@@ -710,7 +733,7 @@ var Section = ({
|
|
|
710
733
|
}
|
|
711
734
|
}
|
|
712
735
|
),
|
|
713
|
-
/* @__PURE__ */
|
|
736
|
+
/* @__PURE__ */ jsx16(
|
|
714
737
|
"div",
|
|
715
738
|
{
|
|
716
739
|
className: cn(
|
|
@@ -727,7 +750,7 @@ var Section = ({
|
|
|
727
750
|
};
|
|
728
751
|
|
|
729
752
|
// src/primitives/subheader1.tsx
|
|
730
|
-
import { jsx as
|
|
753
|
+
import { jsx as jsx17 } from "react/jsx-runtime";
|
|
731
754
|
var Subheader1 = ({
|
|
732
755
|
children,
|
|
733
756
|
className = "",
|
|
@@ -747,11 +770,11 @@ var Subheader1 = ({
|
|
|
747
770
|
typographyStyles?.textOverflow,
|
|
748
771
|
className
|
|
749
772
|
);
|
|
750
|
-
return component === "h5" ? /* @__PURE__ */
|
|
773
|
+
return component === "h5" ? /* @__PURE__ */ jsx17("h5", { className: classes, ...props, children }) : /* @__PURE__ */ jsx17("span", { className: classes, ...props, children });
|
|
751
774
|
};
|
|
752
775
|
|
|
753
776
|
// src/primitives/subheader2.tsx
|
|
754
|
-
import { jsx as
|
|
777
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
755
778
|
var Subheader2 = ({
|
|
756
779
|
children,
|
|
757
780
|
className = "",
|
|
@@ -770,11 +793,11 @@ var Subheader2 = ({
|
|
|
770
793
|
typographyStyles?.textOverflow,
|
|
771
794
|
className
|
|
772
795
|
].filter(Boolean).join(" ");
|
|
773
|
-
return /* @__PURE__ */
|
|
796
|
+
return /* @__PURE__ */ jsx18("h6", { className: classes, ...props, children });
|
|
774
797
|
};
|
|
775
798
|
|
|
776
799
|
// src/primitives/text1.tsx
|
|
777
|
-
import { jsx as
|
|
800
|
+
import { jsx as jsx19 } from "react/jsx-runtime";
|
|
778
801
|
var Text1 = ({
|
|
779
802
|
children,
|
|
780
803
|
className = "",
|
|
@@ -797,11 +820,11 @@ var Text1 = ({
|
|
|
797
820
|
typographyStyles?.textOverflow,
|
|
798
821
|
className
|
|
799
822
|
);
|
|
800
|
-
return component === "p" ? /* @__PURE__ */
|
|
823
|
+
return component === "p" ? /* @__PURE__ */ jsx19("p", { className: classes, ...props, children }) : /* @__PURE__ */ jsx19("span", { className: classes, ...props, children });
|
|
801
824
|
};
|
|
802
825
|
|
|
803
826
|
// src/primitives/text2.tsx
|
|
804
|
-
import { jsx as
|
|
827
|
+
import { jsx as jsx20 } from "react/jsx-runtime";
|
|
805
828
|
var Text2 = ({
|
|
806
829
|
children,
|
|
807
830
|
className = "",
|
|
@@ -824,12 +847,12 @@ var Text2 = ({
|
|
|
824
847
|
typographyStyles?.textOverflow,
|
|
825
848
|
className
|
|
826
849
|
);
|
|
827
|
-
return component === "p" ? /* @__PURE__ */
|
|
850
|
+
return component === "p" ? /* @__PURE__ */ jsx20("p", { className: classes, ...props, children }) : /* @__PURE__ */ jsx20("span", { className: classes, ...props, children });
|
|
828
851
|
};
|
|
829
852
|
|
|
830
853
|
// src/primitives/textarea.tsx
|
|
831
854
|
import React7 from "react";
|
|
832
|
-
import { jsx as
|
|
855
|
+
import { jsx as jsx21 } from "react/jsx-runtime";
|
|
833
856
|
var Textarea = React7.forwardRef(
|
|
834
857
|
({ className = "", theme, error = false, ...props }, ref) => {
|
|
835
858
|
const inputStyles = theme?.interactives?.input;
|
|
@@ -853,7 +876,7 @@ var Textarea = React7.forwardRef(
|
|
|
853
876
|
inputStyles?.custom,
|
|
854
877
|
className
|
|
855
878
|
);
|
|
856
|
-
return /* @__PURE__ */
|
|
879
|
+
return /* @__PURE__ */ jsx21("textarea", { ref, className: classes, ...props });
|
|
857
880
|
}
|
|
858
881
|
);
|
|
859
882
|
Textarea.displayName = "Textarea";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/primitives/components/ui/badge.tsx","../../src/primitives/lib/utils.ts","../../src/primitives/badge.tsx","../../src/primitives/components/ui/button.tsx","../../src/primitives/button.tsx","../../src/primitives/caption.tsx","../../src/primitives/heading.tsx","../../src/primitives/header4.tsx","../../src/primitives/card.tsx","../../src/primitives/display.tsx","../../src/primitives/header1.tsx","../../src/primitives/header2.tsx","../../src/primitives/header3.tsx","../../src/primitives/image.tsx","../../src/primitives/input.tsx","../../src/primitives/components/ui/input.tsx","../../src/primitives/label.tsx","../../src/primitives/components/ui/label.tsx","../../src/primitives/link.tsx","../../src/primitives/preheader.tsx","../../src/primitives/section.tsx","../../src/models/media.ts","../../src/primitives/subheader1.tsx","../../src/primitives/subheader2.tsx","../../src/primitives/text1.tsx","../../src/primitives/text2.tsx","../../src/primitives/textarea.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport {\n Badge as ShadcnBadge,\n type BadgeProps as ShadcnBadgeProps,\n} from \"./components/ui/badge\";\nimport { cn } from \"./lib/utils\";\n\nexport interface BadgeProps extends Omit<ShadcnBadgeProps, \"variant\"> {\n theme?: ThemeStyle;\n style?: Record<string, string>;\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\";\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = \"default\",\n children,\n className = \"\",\n style = {},\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.caption;\n const buttonStyles = theme?.interactives?.button;\n\n const classes = cn(\n // Base styles\n // \"bg-secondary\",\n // Theme typography from caption\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n buttonStyles?.border?.width,\n buttonStyles?.border?.radius,\n buttonStyles?.border?.style,\n className,\n );\n\n return (\n <ShadcnBadge\n variant={variant}\n className={classes}\n style={{\n ...style,\n backgroundColor: style.backgroundColor,\n color: style.color,\n }}\n {...props}\n >\n {children}\n </ShadcnBadge>\n );\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport {\n Button as ShadcnButton,\n type ButtonProps as ShadcnButtonProps,\n} from \"./components/ui/button\";\nimport { cn } from \"./lib/utils\";\n\nexport interface ButtonProps extends ShadcnButtonProps {\n theme?: ThemeStyle;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = \"default\",\n size = \"default\",\n disabled = false,\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const buttonStyles = theme?.interactives?.button;\n const typographyStyles = theme?.typography?.button;\n const isIcon = size === \"icon\";\n\n const classes = cn(\n // Base styles\n \"\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity. Icon buttons stay square — CTA padding\n // would stretch them off the size=\"icon\" box.\n !isIcon && buttonStyles?.padding?.x,\n !isIcon && buttonStyles?.padding?.y,\n buttonStyles?.border?.width,\n buttonStyles?.border?.radius,\n buttonStyles?.border?.style,\n // buttonStyles?.border?.color,\n buttonStyles?.shadow,\n // Theme disabled states\n disabled && buttonStyles?.disabled?.opacity,\n disabled && buttonStyles?.disabled?.cursor,\n disabled && buttonStyles?.disabled?.color,\n disabled && buttonStyles?.disabled?.background,\n disabled && buttonStyles?.disabled?.border,\n // User overrides\n buttonStyles?.custom,\n className,\n );\n\n return (\n <ShadcnButton\n variant={variant}\n size={size}\n disabled={disabled}\n className={classes}\n {...props}\n >\n {children}\n </ShadcnButton>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Caption: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.caption;\n const classes = cn(\n // Base styles\n \"text-xs leading-7 text-muted-foreground\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport type { ThemeStyle, Typography } from \"../models\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport type HeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\";\n\nexport interface HeadingProps extends TypographyProps {\n /** Element to render. Lets a block pick its heading level independently of its look. */\n as?: HeadingTag;\n /**\n * Font-size classes that override the theme size. Kept apart from\n * `className` so they are merged before the theme's line-height, which\n * tailwind-merge would otherwise drop.\n */\n sizeClassName?: string;\n}\n\n// Phone and desktop widths the fluid size interpolates between.\nconst FLUID_MIN_VIEWPORT = 360;\nconst FLUID_MAX_VIEWPORT = 1280;\n\n/** px size of each Tailwind text size class. */\nexport const TAILWIND_TEXT_PX: Record<string, number> = {\n \"text-xs\": 12,\n \"text-sm\": 14,\n \"text-base\": 16,\n \"text-lg\": 18,\n \"text-xl\": 20,\n \"text-2xl\": 24,\n \"text-3xl\": 30,\n \"text-4xl\": 36,\n \"text-5xl\": 48,\n \"text-6xl\": 60,\n \"text-7xl\": 72,\n \"text-8xl\": 96,\n \"text-9xl\": 128,\n};\n\nconst rem = (px: number) => `${+(px / 16).toFixed(4)}rem`;\n\n/** CSS `clamp()` growing from `min` px on a phone to `max` px on a desktop. */\nexport function fluidFontSize({ min, max }: { min: number; max: number }): string {\n const slope = (max - min) / (FLUID_MAX_VIEWPORT - FLUID_MIN_VIEWPORT);\n const intercept = min - slope * FLUID_MIN_VIEWPORT;\n return `clamp(${rem(Math.min(min, max))}, ${rem(intercept)} + ${+(slope * 100).toFixed(4)}vw, ${rem(Math.max(min, max))})`;\n}\n\n/**\n * The theme's size for a level as a CSS value, exposed as `--pb-theme-size`\n * so a block's per-breakpoint overrides can fall back to it.\n */\nfunction themeSize(typography?: Typography): string | undefined {\n if (typography?.fluid) return fluidFontSize(typography.fluid);\n const px = TAILWIND_TEXT_PX[typography?.fontSize ?? \"\"];\n return px ? rem(px) : undefined;\n}\n\nexport function createHeading(\n displayName: string,\n defaultTag: HeadingTag,\n baseClasses: string,\n getTypography: (theme?: ThemeStyle) => Typography | undefined,\n): React.FC<HeadingProps> {\n const Heading: React.FC<HeadingProps> = ({\n children,\n className = \"\",\n theme,\n as: Tag = defaultTag,\n sizeClassName,\n style,\n ...props\n }) => {\n const typography = getTypography(theme);\n const fluid = typography?.fluid;\n const classes = cn(\n baseClasses,\n typography?.fontSize,\n // A class (not an inline font-size) so `sizeClassName` still wins.\n fluid && \"text-[length:var(--pb-theme-size)]\",\n sizeClassName,\n typography?.fontFamily,\n typography?.fontWeight,\n typography?.lineHeight,\n typography?.letterSpacing,\n typography?.textTransform,\n typography?.textDecoration,\n typography?.textOverflow,\n className,\n );\n\n return (\n <Tag\n className={classes}\n style={\n { \"--pb-theme-size\": themeSize(typography), ...style } as React.CSSProperties\n }\n {...props}\n >\n {children}\n </Tag>\n );\n };\n Heading.displayName = displayName;\n return Heading;\n}\n","import { createHeading } from \"./heading\";\n\nexport const Header4 = createHeading(\n \"Header4\",\n \"h4\",\n \"scroll-m-20 text-xl font-semibold tracking-normal\",\n (theme) => theme?.typography?.header4,\n);\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Header4 } from \"./header4\";\nimport { cn } from \"./lib/utils\";\n\nexport interface PageCardProps extends React.HTMLAttributes<HTMLDivElement> {\n isLink?: boolean;\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt: string;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport const PageCard: React.FC<PageCardProps> = ({\n isLink,\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"bg-card text-card-foreground\",\n // Theme interactivity\n cardStyles?.border?.width,\n cardStyles?.border?.radius,\n cardStyles?.border?.style,\n cardStyles?.shadow,\n isLink ? \"cursor-pointer\" : \"\",\n // User overrides\n cardStyles?.custom,\n className,\n );\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};\n\nexport const PageCardImage: React.FC<PageCardImageProps> = ({\n src,\n alt,\n className = \"\",\n theme,\n ...props\n}) => {\n // const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"w-full\",\n className,\n );\n\n return <img src={src} alt={alt} className={classes} {...props} />;\n};\n\nexport const PageCardContent: React.FC<PageCardContentProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"p-4\",\n // Theme interactivity\n cardStyles?.padding?.x,\n cardStyles?.padding?.y,\n className,\n );\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};\n\nexport const PageCardHeader: React.FC<PageCardHeaderProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const classes = cn(\n // Base styles\n \"pb-4\",\n className,\n );\n\n return (\n <div className={classes} {...props}>\n <Header4 theme={theme}>{children}</Header4>\n </div>\n );\n};\n","import { createHeading } from \"./heading\";\n\n/** Hero-sized headline, styled separately from section H1s. */\nexport const Display = createHeading(\n \"Display\",\n \"h1\",\n \"scroll-m-20 text-balance text-5xl font-bold tracking-tight\",\n (theme) => theme?.typography?.display ?? theme?.typography?.header1,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header1 = createHeading(\n \"Header1\",\n \"h1\",\n \"scroll-m-20 text-balance text-4xl font-bold tracking-tight\",\n (theme) => theme?.typography?.header1,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header2 = createHeading(\n \"Header2\",\n \"h2\",\n \"scroll-m-20 text-balance text-3xl font-bold tracking-tight\",\n (theme) => theme?.typography?.header2,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header3 = createHeading(\n \"Header3\",\n \"h3\",\n \"scroll-m-20 text-2xl font-semibold tracking-normal\",\n (theme) => theme?.typography?.header3,\n);\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt?: string;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"\",\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\"w-full object-cover\", cardStyles?.border?.radius, className);\n\n return <img src={src} alt={alt} className={classes} {...props} />;\n};\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Input as ShadcnInput } from \"./components/ui/input\";\nimport { cn } from \"./lib/utils\";\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n theme?: ThemeStyle;\n error?: boolean;\n // style?: React.CSSProperties;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className = \"\", theme, error = false, /*style = {},*/ ...props }, ref) => {\n const inputStyles = theme?.interactives?.input;\n const typographyStyles = theme?.typography?.input;\n\n const classes = cn(\n // Base styles\n // \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity\n inputStyles?.padding?.x,\n inputStyles?.padding?.y,\n inputStyles?.border?.width,\n inputStyles?.border?.style,\n inputStyles?.border?.radius,\n // inputStyles?.border?.color,\n inputStyles?.shadow,\n // Theme disabled states\n props.disabled && inputStyles?.disabled?.opacity,\n props.disabled && inputStyles?.disabled?.cursor,\n props.disabled && inputStyles?.disabled?.color,\n props.disabled && inputStyles?.disabled?.background,\n props.disabled && inputStyles?.disabled?.border,\n // Error state\n error && \"border-red-300 focus:border-red-500 focus:ring-red-500\",\n // User overrides\n inputStyles?.custom,\n className,\n );\n\n return <ShadcnInput ref={ref} className={classes} {...props} />;\n },\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Label as ShadcnLabel } from \"./components/ui/label\";\nimport { cn } from \"./lib/utils\";\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n theme?: ThemeStyle;\n error?: boolean;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className = \"\", theme, error = false, ...props }, ref) => {\n const typographyStyles = theme?.typography?.text2;\n\n const classes = cn(\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Error state\n error && \"text-red-500\",\n className,\n );\n\n return <ShadcnLabel ref={ref} className={classes} {...props} />;\n },\n);\n\nLabel.displayName = \"Label\";\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n disabled?: boolean;\n style?: React.CSSProperties;\n}\n\nexport const Link: React.FC<LinkProps> = ({\n children,\n className = \"\",\n theme,\n disabled = false,\n style,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.link;\n const linkStyles = theme?.interactives?.link;\n const classes = cn(\n // Base styles\n \"font-medium cursor-pointer\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity\n linkStyles?.padding?.x,\n linkStyles?.padding?.y,\n linkStyles?.border?.width,\n linkStyles?.border?.radius,\n linkStyles?.border?.style,\n // Theme disabled states\n disabled && linkStyles?.disabled?.color,\n disabled && linkStyles?.disabled?.background,\n disabled && linkStyles?.disabled?.border,\n disabled && linkStyles?.disabled?.opacity,\n disabled && linkStyles?.disabled?.cursor,\n // User overrides\n linkStyles?.custom,\n className,\n );\n\n return (\n <span\n className={classes}\n style={{\n ...style,\n textShadow: linkStyles?.textShadow || undefined,\n }}\n {...props}\n >\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Preheader: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.preheader;\n const classes = cn(\n // Base styles\n \"text-sm font-medium uppercase tracking-wide\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return (\n <p className={classes} {...props}>\n {children}\n </p>\n );\n};\n","import React from \"react\";\nimport type { SectionBackground, ThemeStyle } from \"../models\";\nimport { getMediaUrl } from \"../models/media\";\nimport { cn } from \"./lib/utils\";\n\ninterface SectionProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n component?: \"header\" | \"footer\" | \"section\";\n background?: SectionBackground;\n}\n\ntype CssVars = React.CSSProperties & Record<`--${string}`, string | undefined>;\n\n/**\n * Dark-mode variants are resolved in CSS (`dark:` utilities reading custom\n * properties) rather than in JS, so a server-rendered section paints the\n * right palette without knowing the visitor's colour mode.\n */\nfunction resolveBackgroundLayer(background: SectionBackground): {\n className?: string;\n style: CssVars;\n} {\n const attachment = background.backgroundAttachment || \"scroll\";\n\n if (background.type === \"color\") {\n return {\n className:\n \"[background-color:var(--pb-bg)] dark:[background-color:var(--pb-bg-dark,var(--pb-bg))]\",\n style: {\n \"--pb-bg\": background.backgroundColor,\n \"--pb-bg-dark\": background.backgroundColorDark,\n },\n };\n }\n\n if (background.type === \"image\") {\n const bgUrl = getMediaUrl(background.media);\n return {\n style: {\n backgroundImage: bgUrl ? `url(${bgUrl})` : undefined,\n backgroundSize: background.backgroundSize || \"cover\",\n backgroundPosition: background.backgroundPosition || \"center\",\n backgroundRepeat: background.backgroundRepeat || \"no-repeat\",\n backgroundAttachment: attachment,\n maskImage: background.maskImage,\n WebkitMaskImage: background.maskImage,\n },\n };\n }\n\n // Pattern / gradient\n return {\n className:\n \"[background-image:var(--pb-bg-image)] dark:[background-image:var(--pb-bg-image-dark,var(--pb-bg-image))]\",\n style: {\n \"--pb-bg-image\": background.backgroundImage,\n \"--pb-bg-image-dark\": background.backgroundImageDark,\n backgroundSize: background.gradientBackgroundSize || \"cover\",\n backgroundPosition: background.gradientBackgroundPosition || \"center\",\n backgroundRepeat: background.gradientBackgroundRepeat || \"no-repeat\",\n backgroundAttachment: attachment,\n maskImage: background.gradientMaskImage,\n WebkitMaskImage: background.gradientMaskImage,\n },\n };\n}\n\nexport const Section: React.FC<SectionProps> = ({\n children,\n className = \"\",\n theme,\n background,\n component = \"section\",\n ...props\n}) => {\n const classes = cn(\n \"bg-background text-foreground relative\",\n component === \"section\" &&\n theme?.structure?.section?.dividers &&\n \"border-t border-border\",\n className,\n );\n const backgroundLayer = background ? resolveBackgroundLayer(background) : null;\n const isFixed =\n background &&\n background.type !== \"color\" &&\n background.backgroundAttachment === \"fixed\";\n\n return (\n <>\n {React.createElement(\n component as React.ElementType,\n {\n // `overflow-clip` keeps a fixed-attachment layer painted\n // only within the section bounds without creating a new\n // scroll container (unlike overflow-hidden in some cases).\n className: cn(classes, isFixed && \"overflow-clip\"),\n ...props,\n },\n <>\n {backgroundLayer && (\n <div\n aria-hidden\n className={cn(\n \"pointer-events-none absolute inset-0 z-0\",\n backgroundLayer.className,\n )}\n style={backgroundLayer.style}\n />\n )}\n {background && background.type === \"image\" && (\n <div\n aria-hidden\n className=\"pointer-events-none absolute inset-0 z-[1] [background-color:var(--pb-overlay)] dark:[background-color:var(--pb-overlay-dark,var(--pb-overlay))]\"\n style={\n {\n \"--pb-overlay\": background?.overlay?.color,\n \"--pb-overlay-dark\": background?.overlay?.colorDark,\n opacity: background?.overlay?.opacity\n ? background.overlay.opacity / 10\n : 0,\n mixBlendMode: background?.overlay?.blendMode,\n } as CssVars\n }\n />\n )}\n {background && background.type === \"image\" && (\n <div\n aria-hidden\n className=\"pointer-events-none absolute inset-0 z-[2]\"\n style={{\n backdropFilter: background?.blur\n ? `blur(${background?.blur}px)`\n : undefined,\n }}\n />\n )}\n <div\n className={cn(\n \"mx-auto z-[3] relative overflow-hidden\",\n `lg:${theme?.structure?.page?.width || \"max-w-6xl\"}`,\n theme?.structure?.section?.padding?.x || \"px-4\",\n theme?.structure?.section?.padding?.y || \"py-4\",\n )}\n >\n {children}\n </div>\n </>,\n )}\n </>\n );\n};\n","export interface Media {\n [key: string]: unknown;\n mediaId?: string;\n originalFileName?: string;\n fileName?: string;\n mimeType?: string;\n size?: number;\n caption?: string;\n alt?: string;\n /** Public URL of the asset (MediaLit format or generic URL format). */\n file?: string;\n url?: string;\n src?: string;\n /** Thumbnail URL, falls back to `file` or `url` when absent. */\n thumbnail?: string;\n thumbnailUrl?: string;\n}\n\nexport function getMediaUrl(media: unknown): string | null {\n if (!media) return null;\n if (typeof media === \"string\") return media.trim() || null;\n if (typeof media === \"object\") {\n const obj = media as Record<string, unknown>;\n const url = obj.url ?? obj.file ?? obj.src;\n return typeof url === \"string\" && url.trim() ? url.trim() : null;\n }\n return null;\n}\n\nexport function getMediaAlt(media: unknown): string {\n if (!media || typeof media !== \"object\") return \"\";\n const obj = media as Record<string, unknown>;\n const alt = obj.alt ?? obj.caption ?? obj.title;\n return typeof alt === \"string\" ? alt : \"\";\n}\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Subheader1: React.FC<TypographyProps & { component?: \"h5\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"h5\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.subheader1;\n const classes = cn(\n typographyStyles?.fontFamily || \"font-sans\",\n typographyStyles?.fontSize || \"text-lg\",\n typographyStyles?.fontWeight || \"font-medium\",\n typographyStyles?.lineHeight || \"leading-relaxed\",\n typographyStyles?.letterSpacing || \"tracking-normal\",\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"h5\" ? (\n <h5 className={classes} {...props}>\n {children}\n </h5>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Subheader2: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.subheader2;\n const classes = [\n typographyStyles?.fontFamily || \"font-sans\",\n typographyStyles?.fontSize || \"text-base\",\n typographyStyles?.fontWeight || \"font-medium\",\n typographyStyles?.lineHeight || \"leading-relaxed\",\n typographyStyles?.letterSpacing || \"tracking-normal\",\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <h6 className={classes} {...props}>\n {children}\n </h6>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Text1: React.FC<TypographyProps & { component?: \"p\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"p\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.text1;\n const classes = cn(\n // Base styles\n \"text-base\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"p\" ? (\n <p className={classes} {...props}>\n {children}\n </p>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Text2: React.FC<TypographyProps & { component?: \"p\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"p\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.text2;\n const classes = cn(\n // Base styles\n \"text-sm\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"p\" ? (\n <p className={classes} {...props}>\n {children}\n </p>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n theme?: ThemeStyle;\n error?: boolean;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className = \"\", theme, error = false, ...props }, ref) => {\n const inputStyles = theme?.interactives?.input;\n const typographyStyles = theme?.typography?.input;\n const classes = cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50\",\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n inputStyles?.padding?.x,\n inputStyles?.padding?.y,\n inputStyles?.border?.width,\n inputStyles?.border?.style,\n inputStyles?.border?.radius,\n inputStyles?.shadow,\n props.disabled && inputStyles?.disabled?.opacity,\n props.disabled && inputStyles?.disabled?.cursor,\n error && \"border-red-300 focus:border-red-500 focus:ring-red-500\",\n inputStyles?.custom,\n className,\n );\n\n return <textarea ref={ref} className={classes} {...props} />;\n },\n);\n\nTextarea.displayName = \"Textarea\";\n"],"mappings":"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","names":["jsx","Badge","cva","jsx","cva","jsx","Button","jsx","jsx","jsx","jsx","React","React","jsx","jsx","Input","React","React","cva","React","jsx","cva","jsx","Label","React","jsx","jsx","React","jsx","React","jsx","jsx","jsx","jsx","React","jsx","React"]}
|
|
1
|
+
{"version":3,"sources":["../../src/primitives/components/ui/badge.tsx","../../src/primitives/lib/utils.ts","../../src/primitives/badge.tsx","../../src/primitives/components/ui/button.tsx","../../src/primitives/button.tsx","../../src/primitives/caption.tsx","../../src/primitives/heading.tsx","../../src/primitives/header4.tsx","../../src/primitives/card.tsx","../../src/primitives/display.tsx","../../src/primitives/header1.tsx","../../src/primitives/header2.tsx","../../src/primitives/header3.tsx","../../src/components/image.tsx","../../src/primitives/image.tsx","../../src/primitives/input.tsx","../../src/primitives/components/ui/input.tsx","../../src/primitives/label.tsx","../../src/primitives/components/ui/label.tsx","../../src/primitives/link.tsx","../../src/primitives/preheader.tsx","../../src/primitives/section.tsx","../../src/models/media.ts","../../src/primitives/subheader1.tsx","../../src/primitives/subheader2.tsx","../../src/primitives/text1.tsx","../../src/primitives/text2.tsx","../../src/primitives/textarea.tsx"],"sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport type * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst badgeVariants = cva(\n \"inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-semibold transition-colors focus:outline-none focus:ring-2 focus:ring-ring focus:ring-offset-2\",\n {\n variants: {\n variant: {\n default:\n \"border-transparent bg-primary text-primary-foreground hover:bg-primary/80\",\n secondary:\n \"border-transparent bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n destructive:\n \"border-transparent bg-destructive text-destructive-foreground hover:bg-destructive/80\",\n outline: \"text-foreground\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n },\n },\n);\n\nexport interface BadgeProps\n extends React.HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof badgeVariants> {}\n\nfunction Badge({ className, variant, ...props }: BadgeProps) {\n return <div className={cn(badgeVariants({ variant }), className)} {...props} />;\n}\n\nexport { Badge, badgeVariants };\n","import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport {\n Badge as ShadcnBadge,\n type BadgeProps as ShadcnBadgeProps,\n} from \"./components/ui/badge\";\nimport { cn } from \"./lib/utils\";\n\nexport interface BadgeProps extends Omit<ShadcnBadgeProps, \"variant\"> {\n theme?: ThemeStyle;\n style?: Record<string, string>;\n variant?: \"default\" | \"secondary\" | \"destructive\" | \"outline\";\n}\n\nexport const Badge: React.FC<BadgeProps> = ({\n variant = \"default\",\n children,\n className = \"\",\n style = {},\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.caption;\n const buttonStyles = theme?.interactives?.button;\n\n const classes = cn(\n // Base styles\n // \"bg-secondary\",\n // Theme typography from caption\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n buttonStyles?.border?.width,\n buttonStyles?.border?.radius,\n buttonStyles?.border?.style,\n className,\n );\n\n return (\n <ShadcnBadge\n variant={variant}\n className={classes}\n style={{\n ...style,\n backgroundColor: style.backgroundColor,\n color: style.color,\n }}\n {...props}\n >\n {children}\n </ShadcnBadge>\n );\n};\n","import { Slot } from \"@radix-ui/react-slot\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0\",\n {\n variants: {\n variant: {\n default: \"bg-primary text-primary-foreground hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background hover:bg-accent hover:text-accent-foreground\",\n secondary: \"bg-secondary text-secondary-foreground hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n },\n size: {\n default: \"h-10 px-4 py-2\",\n sm: \"h-9 rounded-md px-3\",\n lg: \"h-11 rounded-md px-8\",\n icon: \"h-10 w-10\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n },\n);\n\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {\n asChild?: boolean;\n}\n\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : \"button\";\n return (\n <Comp\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n );\n },\n);\nButton.displayName = \"Button\";\n\nexport { Button, buttonVariants };\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport {\n Button as ShadcnButton,\n type ButtonProps as ShadcnButtonProps,\n} from \"./components/ui/button\";\nimport { cn } from \"./lib/utils\";\n\nexport interface ButtonProps extends ShadcnButtonProps {\n theme?: ThemeStyle;\n}\n\nexport const Button: React.FC<ButtonProps> = ({\n variant = \"default\",\n size = \"default\",\n disabled = false,\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const buttonStyles = theme?.interactives?.button;\n const typographyStyles = theme?.typography?.button;\n const isIcon = size === \"icon\";\n\n const classes = cn(\n // Base styles\n \"\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity. Icon buttons stay square — CTA padding\n // would stretch them off the size=\"icon\" box.\n !isIcon && buttonStyles?.padding?.x,\n !isIcon && buttonStyles?.padding?.y,\n buttonStyles?.border?.width,\n buttonStyles?.border?.radius,\n buttonStyles?.border?.style,\n // buttonStyles?.border?.color,\n buttonStyles?.shadow,\n // Theme disabled states\n disabled && buttonStyles?.disabled?.opacity,\n disabled && buttonStyles?.disabled?.cursor,\n disabled && buttonStyles?.disabled?.color,\n disabled && buttonStyles?.disabled?.background,\n disabled && buttonStyles?.disabled?.border,\n // User overrides\n buttonStyles?.custom,\n className,\n );\n\n return (\n <ShadcnButton\n variant={variant}\n size={size}\n disabled={disabled}\n className={classes}\n {...props}\n >\n {children}\n </ShadcnButton>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Caption: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.caption;\n const classes = cn(\n // Base styles\n \"text-xs leading-7 text-muted-foreground\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport type { ThemeStyle, Typography } from \"../models\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport type HeadingTag = \"h1\" | \"h2\" | \"h3\" | \"h4\" | \"h5\" | \"h6\" | \"p\" | \"span\" | \"div\";\n\nexport interface HeadingProps extends TypographyProps {\n /** Element to render. Lets a block pick its heading level independently of its look. */\n as?: HeadingTag;\n /**\n * Font-size classes that override the theme size. Kept apart from\n * `className` so they are merged before the theme's line-height, which\n * tailwind-merge would otherwise drop.\n */\n sizeClassName?: string;\n}\n\n// Phone and desktop widths the fluid size interpolates between.\nconst FLUID_MIN_VIEWPORT = 360;\nconst FLUID_MAX_VIEWPORT = 1280;\n\n/** px size of each Tailwind text size class. */\nexport const TAILWIND_TEXT_PX: Record<string, number> = {\n \"text-xs\": 12,\n \"text-sm\": 14,\n \"text-base\": 16,\n \"text-lg\": 18,\n \"text-xl\": 20,\n \"text-2xl\": 24,\n \"text-3xl\": 30,\n \"text-4xl\": 36,\n \"text-5xl\": 48,\n \"text-6xl\": 60,\n \"text-7xl\": 72,\n \"text-8xl\": 96,\n \"text-9xl\": 128,\n};\n\nconst rem = (px: number) => `${+(px / 16).toFixed(4)}rem`;\n\n/** CSS `clamp()` growing from `min` px on a phone to `max` px on a desktop. */\nexport function fluidFontSize({ min, max }: { min: number; max: number }): string {\n const slope = (max - min) / (FLUID_MAX_VIEWPORT - FLUID_MIN_VIEWPORT);\n const intercept = min - slope * FLUID_MIN_VIEWPORT;\n return `clamp(${rem(Math.min(min, max))}, ${rem(intercept)} + ${+(slope * 100).toFixed(4)}vw, ${rem(Math.max(min, max))})`;\n}\n\n/**\n * The theme's size for a level as a CSS value, exposed as `--pb-theme-size`\n * so a block's per-breakpoint overrides can fall back to it.\n */\nfunction themeSize(typography?: Typography): string | undefined {\n if (typography?.fluid) return fluidFontSize(typography.fluid);\n const px = TAILWIND_TEXT_PX[typography?.fontSize ?? \"\"];\n return px ? rem(px) : undefined;\n}\n\nexport function createHeading(\n displayName: string,\n defaultTag: HeadingTag,\n baseClasses: string,\n getTypography: (theme?: ThemeStyle) => Typography | undefined,\n): React.FC<HeadingProps> {\n const Heading: React.FC<HeadingProps> = ({\n children,\n className = \"\",\n theme,\n as: Tag = defaultTag,\n sizeClassName,\n style,\n ...props\n }) => {\n const typography = getTypography(theme);\n const fluid = typography?.fluid;\n const classes = cn(\n baseClasses,\n typography?.fontSize,\n // A class (not an inline font-size) so `sizeClassName` still wins.\n fluid && \"text-[length:var(--pb-theme-size)]\",\n sizeClassName,\n typography?.fontFamily,\n typography?.fontWeight,\n typography?.lineHeight,\n typography?.letterSpacing,\n typography?.textTransform,\n typography?.textDecoration,\n typography?.textOverflow,\n className,\n );\n\n return (\n <Tag\n className={classes}\n style={\n { \"--pb-theme-size\": themeSize(typography), ...style } as React.CSSProperties\n }\n {...props}\n >\n {children}\n </Tag>\n );\n };\n Heading.displayName = displayName;\n return Heading;\n}\n","import { createHeading } from \"./heading\";\n\nexport const Header4 = createHeading(\n \"Header4\",\n \"h4\",\n \"scroll-m-20 text-xl font-semibold tracking-normal\",\n (theme) => theme?.typography?.header4,\n);\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Header4 } from \"./header4\";\nimport { cn } from \"./lib/utils\";\n\nexport interface PageCardProps extends React.HTMLAttributes<HTMLDivElement> {\n isLink?: boolean;\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt: string;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardContentProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport interface PageCardHeaderProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n}\n\nexport const PageCard: React.FC<PageCardProps> = ({\n isLink,\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"bg-card text-card-foreground\",\n // Theme interactivity\n cardStyles?.border?.width,\n cardStyles?.border?.radius,\n cardStyles?.border?.style,\n cardStyles?.shadow,\n isLink ? \"cursor-pointer\" : \"\",\n // User overrides\n cardStyles?.custom,\n className,\n );\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};\n\nexport const PageCardImage: React.FC<PageCardImageProps> = ({\n src,\n alt,\n className = \"\",\n theme,\n ...props\n}) => {\n // const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"w-full\",\n className,\n );\n\n return <img src={src} alt={alt} className={classes} {...props} />;\n};\n\nexport const PageCardContent: React.FC<PageCardContentProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\n // Base styles\n \"p-4\",\n // Theme interactivity\n cardStyles?.padding?.x,\n cardStyles?.padding?.y,\n className,\n );\n\n return (\n <div className={classes} {...props}>\n {children}\n </div>\n );\n};\n\nexport const PageCardHeader: React.FC<PageCardHeaderProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const classes = cn(\n // Base styles\n \"pb-4\",\n className,\n );\n\n return (\n <div className={classes} {...props}>\n <Header4 theme={theme}>{children}</Header4>\n </div>\n );\n};\n","import { createHeading } from \"./heading\";\n\n/** Hero-sized headline, styled separately from section H1s. */\nexport const Display = createHeading(\n \"Display\",\n \"h1\",\n \"scroll-m-20 text-balance text-5xl font-bold tracking-tight\",\n (theme) => theme?.typography?.display ?? theme?.typography?.header1,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header1 = createHeading(\n \"Header1\",\n \"h1\",\n \"scroll-m-20 text-balance text-4xl font-bold tracking-tight\",\n (theme) => theme?.typography?.header1,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header2 = createHeading(\n \"Header2\",\n \"h2\",\n \"scroll-m-20 text-balance text-3xl font-bold tracking-tight\",\n (theme) => theme?.typography?.header2,\n);\n","import { createHeading } from \"./heading\";\n\nexport const Header3 = createHeading(\n \"Header3\",\n \"h3\",\n \"scroll-m-20 text-2xl font-semibold tracking-normal\",\n (theme) => theme?.typography?.header3,\n);\n","import type React from \"react\";\nimport { cn } from \"../primitives/lib/utils\";\n\nexport interface ImageAttributesInput {\n src: string;\n alt: string;\n sizes?: string;\n /** Above-the-fold image (e.g. LCP): fetched eagerly at high priority. */\n priority: boolean;\n}\n\n/**\n * Lets a host swap an image's `src`/`srcSet` for its own optimizer's URLs\n * (e.g. Next.js's `getImageProps`) without this package depending on the\n * host framework. Return `null` to keep the original URL.\n */\nexport type ImageAttributesResolver = (\n input: ImageAttributesInput,\n) => React.ImgHTMLAttributes<HTMLImageElement> | null;\n\n// Kept on `globalThis`: each package entry (`/server`, `/primitives/server`)\n// bundles its own copy of this module, and they must share one resolver.\nconst registry = globalThis as {\n __frontlitImageResolver?: ImageAttributesResolver | null;\n};\n\n/**\n * Registers the host's resolver. Call once at server start-up; renders that\n * run without one emit the original URL.\n */\nexport function setImageAttributesResolver(resolver: ImageAttributesResolver | null) {\n registry.__frontlitImageResolver = resolver;\n}\n\n/** The registered resolver's attributes for an image, if any. */\nexport function resolveImageAttributes(\n input: ImageAttributesInput,\n): React.ImgHTMLAttributes<HTMLImageElement> | null {\n return registry.__frontlitImageResolver?.(input) ?? null;\n}\n\nexport type ImageObjectFit = \"cover\" | \"contain\" | \"fill\" | \"none\" | \"scale-down\";\n\nexport const roundedMap: Record<number, string> = {\n 0: \"rounded-none\",\n 1: \"rounded-sm\",\n 2: \"rounded\",\n 3: \"rounded-md\",\n 4: \"rounded-lg\",\n 5: \"rounded-xl\",\n 6: \"rounded-2xl\",\n 7: \"rounded-3xl\",\n 8: \"rounded-full\",\n};\n\ninterface ImgProps {\n src: string;\n classes?: string;\n alt?: string;\n defaultImage?: string;\n loading?: \"eager\" | \"lazy\";\n /** Marks the image as likely LCP: eager load with high fetch priority. */\n priority?: boolean;\n height?: string;\n sizes?: string;\n width?: string;\n borderRadius?: number | string;\n noDefaultImage?: boolean;\n className?: string;\n objectFit?: ImageObjectFit;\n}\n\nconst objectFitClass: Record<ImageObjectFit, string> = {\n cover: \"object-cover\",\n contain: \"object-contain\",\n fill: \"object-fill\",\n none: \"object-none\",\n \"scale-down\": \"object-scale-down\",\n};\n\nexport const Image = (props: ImgProps) => {\n const {\n src,\n alt = \"\",\n defaultImage,\n priority = false,\n loading = priority ? \"eager\" : \"lazy\",\n sizes,\n noDefaultImage = false,\n className = \"\",\n classes = \"\",\n width = \"w-full\",\n height = \"h-auto\",\n objectFit = \"cover\",\n borderRadius,\n } = props;\n const source = src || defaultImage;\n\n const radiusClass =\n typeof borderRadius === \"number\"\n ? (roundedMap[borderRadius] ?? \"rounded\")\n : borderRadius;\n\n if (!source) {\n if (noDefaultImage) return null;\n return (\n <div\n className={cn(\n \"relative aspect-video overflow-hidden bg-muted\",\n width,\n height,\n radiusClass,\n classes,\n className,\n )}\n />\n );\n }\n\n const optimized = resolveImageAttributes({ src: source, alt, sizes, priority });\n\n return (\n <div\n className={cn(\n \"relative aspect-video overflow-hidden\",\n width,\n height,\n radiusClass,\n classes,\n className,\n )}\n >\n <img\n src={source}\n alt={alt}\n sizes={sizes}\n loading={loading}\n decoding=\"async\"\n fetchPriority={priority ? \"high\" : undefined}\n {...optimized}\n className={cn(\n \"absolute inset-0 h-full w-full\",\n radiusClass,\n objectFitClass[objectFit],\n )}\n />\n </div>\n );\n};\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { resolveImageAttributes } from \"../components/image\";\nimport { cn } from \"./lib/utils\";\n\nexport interface ImageProps extends React.ImgHTMLAttributes<HTMLImageElement> {\n src: string;\n alt?: string;\n className?: string;\n theme?: ThemeStyle;\n /** Above-the-fold image (e.g. LCP): fetched eagerly at high priority. */\n priority?: boolean;\n}\n\nexport const Image: React.FC<ImageProps> = ({\n src,\n alt = \"\",\n className = \"\",\n theme,\n priority = false,\n sizes,\n ...props\n}) => {\n const cardStyles = theme?.interactives?.card;\n const classes = cn(\"w-full object-cover\", cardStyles?.border?.radius, className);\n // The host's optimizer (if registered) serves a resized, modern-format copy.\n const optimized = resolveImageAttributes({ src, alt, sizes, priority });\n\n return (\n <img\n src={src}\n alt={alt}\n sizes={sizes}\n loading={priority ? \"eager\" : \"lazy\"}\n decoding=\"async\"\n fetchPriority={priority ? \"high\" : undefined}\n className={classes}\n {...props}\n {...optimized}\n />\n );\n};\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Input as ShadcnInput } from \"./components/ui/input\";\nimport { cn } from \"./lib/utils\";\n\nexport interface InputProps extends React.InputHTMLAttributes<HTMLInputElement> {\n theme?: ThemeStyle;\n error?: boolean;\n // style?: React.CSSProperties;\n}\n\nexport const Input = React.forwardRef<HTMLInputElement, InputProps>(\n ({ className = \"\", theme, error = false, /*style = {},*/ ...props }, ref) => {\n const inputStyles = theme?.interactives?.input;\n const typographyStyles = theme?.typography?.input;\n\n const classes = cn(\n // Base styles\n // \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity\n inputStyles?.padding?.x,\n inputStyles?.padding?.y,\n inputStyles?.border?.width,\n inputStyles?.border?.style,\n inputStyles?.border?.radius,\n // inputStyles?.border?.color,\n inputStyles?.shadow,\n // Theme disabled states\n props.disabled && inputStyles?.disabled?.opacity,\n props.disabled && inputStyles?.disabled?.cursor,\n props.disabled && inputStyles?.disabled?.color,\n props.disabled && inputStyles?.disabled?.background,\n props.disabled && inputStyles?.disabled?.border,\n // Error state\n error && \"border-red-300 focus:border-red-500 focus:ring-red-500\",\n // User overrides\n inputStyles?.custom,\n className,\n );\n\n return <ShadcnInput ref={ref} className={classes} {...props} />;\n },\n);\n\nInput.displayName = \"Input\";\n","import * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst Input = React.forwardRef<HTMLInputElement, React.ComponentProps<\"input\">>(\n ({ className, type, ...props }, ref) => {\n return (\n <input\n type={type}\n className={cn(\n \"flex h-10 w-full rounded-md border border-input bg-background px-3 py-2 text-base ring-offset-background file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:cursor-not-allowed disabled:opacity-50 md:text-sm\",\n className,\n )}\n ref={ref}\n {...props}\n />\n );\n },\n);\nInput.displayName = \"Input\";\n\nexport { Input };\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { Label as ShadcnLabel } from \"./components/ui/label\";\nimport { cn } from \"./lib/utils\";\n\nexport interface LabelProps extends React.LabelHTMLAttributes<HTMLLabelElement> {\n theme?: ThemeStyle;\n error?: boolean;\n}\n\nexport const Label = React.forwardRef<HTMLLabelElement, LabelProps>(\n ({ className = \"\", theme, error = false, ...props }, ref) => {\n const typographyStyles = theme?.typography?.text2;\n\n const classes = cn(\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Error state\n error && \"text-red-500\",\n className,\n );\n\n return <ShadcnLabel ref={ref} className={classes} {...props} />;\n },\n);\n\nLabel.displayName = \"Label\";\n","import * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, type VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\n\nimport { cn } from \"../../lib/utils\";\n\nconst labelVariants = cva(\n \"text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70\",\n);\n\nconst Label = React.forwardRef<\n React.ElementRef<typeof LabelPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof LabelPrimitive.Root> &\n VariantProps<typeof labelVariants>\n>(({ className, ...props }, ref) => (\n <LabelPrimitive.Root\n ref={ref}\n className={cn(labelVariants(), className)}\n {...props}\n />\n));\nLabel.displayName = LabelPrimitive.Root.displayName;\n\nexport { Label };\n","import type React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface LinkProps extends React.AnchorHTMLAttributes<HTMLAnchorElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n disabled?: boolean;\n style?: React.CSSProperties;\n}\n\nexport const Link: React.FC<LinkProps> = ({\n children,\n className = \"\",\n theme,\n disabled = false,\n style,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.link;\n const linkStyles = theme?.interactives?.link;\n const classes = cn(\n // Base styles\n \"font-medium cursor-pointer\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n // Theme interactivity\n linkStyles?.padding?.x,\n linkStyles?.padding?.y,\n linkStyles?.border?.width,\n linkStyles?.border?.radius,\n linkStyles?.border?.style,\n // Theme disabled states\n disabled && linkStyles?.disabled?.color,\n disabled && linkStyles?.disabled?.background,\n disabled && linkStyles?.disabled?.border,\n disabled && linkStyles?.disabled?.opacity,\n disabled && linkStyles?.disabled?.cursor,\n // User overrides\n linkStyles?.custom,\n className,\n );\n\n return (\n <span\n className={classes}\n style={{\n ...style,\n textShadow: linkStyles?.textShadow || undefined,\n }}\n {...props}\n >\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Preheader: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.preheader;\n const classes = cn(\n // Base styles\n \"text-sm font-medium uppercase tracking-wide\",\n // Theme typography\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return (\n <p className={classes} {...props}>\n {children}\n </p>\n );\n};\n","import React from \"react\";\nimport type { SectionBackground, ThemeStyle } from \"../models\";\nimport { getMediaUrl } from \"../models/media\";\nimport { cn } from \"./lib/utils\";\n\ninterface SectionProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode;\n className?: string;\n theme?: ThemeStyle;\n component?: \"header\" | \"footer\" | \"section\";\n background?: SectionBackground;\n}\n\ntype CssVars = React.CSSProperties & Record<`--${string}`, string | undefined>;\n\n/**\n * Dark-mode variants are resolved in CSS (`dark:` utilities reading custom\n * properties) rather than in JS, so a server-rendered section paints the\n * right palette without knowing the visitor's colour mode.\n */\nfunction resolveBackgroundLayer(background: SectionBackground): {\n className?: string;\n style: CssVars;\n} {\n const attachment = background.backgroundAttachment || \"scroll\";\n\n if (background.type === \"color\") {\n return {\n className:\n \"[background-color:var(--pb-bg)] dark:[background-color:var(--pb-bg-dark,var(--pb-bg))]\",\n style: {\n \"--pb-bg\": background.backgroundColor,\n \"--pb-bg-dark\": background.backgroundColorDark,\n },\n };\n }\n\n if (background.type === \"image\") {\n const bgUrl = getMediaUrl(background.media);\n return {\n style: {\n backgroundImage: bgUrl ? `url(${bgUrl})` : undefined,\n backgroundSize: background.backgroundSize || \"cover\",\n backgroundPosition: background.backgroundPosition || \"center\",\n backgroundRepeat: background.backgroundRepeat || \"no-repeat\",\n backgroundAttachment: attachment,\n maskImage: background.maskImage,\n WebkitMaskImage: background.maskImage,\n },\n };\n }\n\n // Pattern / gradient\n return {\n className:\n \"[background-image:var(--pb-bg-image)] dark:[background-image:var(--pb-bg-image-dark,var(--pb-bg-image))]\",\n style: {\n \"--pb-bg-image\": background.backgroundImage,\n \"--pb-bg-image-dark\": background.backgroundImageDark,\n backgroundSize: background.gradientBackgroundSize || \"cover\",\n backgroundPosition: background.gradientBackgroundPosition || \"center\",\n backgroundRepeat: background.gradientBackgroundRepeat || \"no-repeat\",\n backgroundAttachment: attachment,\n maskImage: background.gradientMaskImage,\n WebkitMaskImage: background.gradientMaskImage,\n },\n };\n}\n\nexport const Section: React.FC<SectionProps> = ({\n children,\n className = \"\",\n theme,\n background,\n component = \"section\",\n ...props\n}) => {\n const classes = cn(\n \"bg-background text-foreground relative\",\n component === \"section\" &&\n theme?.structure?.section?.dividers &&\n \"border-t border-border\",\n className,\n );\n const backgroundLayer = background ? resolveBackgroundLayer(background) : null;\n const isFixed =\n background &&\n background.type !== \"color\" &&\n background.backgroundAttachment === \"fixed\";\n\n return (\n <>\n {React.createElement(\n component as React.ElementType,\n {\n // `overflow-clip` keeps a fixed-attachment layer painted\n // only within the section bounds without creating a new\n // scroll container (unlike overflow-hidden in some cases).\n className: cn(classes, isFixed && \"overflow-clip\"),\n ...props,\n },\n <>\n {backgroundLayer && (\n <div\n aria-hidden\n className={cn(\n \"pointer-events-none absolute inset-0 z-0\",\n backgroundLayer.className,\n )}\n style={backgroundLayer.style}\n />\n )}\n {background && background.type === \"image\" && (\n <div\n aria-hidden\n className=\"pointer-events-none absolute inset-0 z-[1] [background-color:var(--pb-overlay)] dark:[background-color:var(--pb-overlay-dark,var(--pb-overlay))]\"\n style={\n {\n \"--pb-overlay\": background?.overlay?.color,\n \"--pb-overlay-dark\": background?.overlay?.colorDark,\n opacity: background?.overlay?.opacity\n ? background.overlay.opacity / 10\n : 0,\n mixBlendMode: background?.overlay?.blendMode,\n } as CssVars\n }\n />\n )}\n {background && background.type === \"image\" && (\n <div\n aria-hidden\n className=\"pointer-events-none absolute inset-0 z-[2]\"\n style={{\n backdropFilter: background?.blur\n ? `blur(${background?.blur}px)`\n : undefined,\n }}\n />\n )}\n <div\n className={cn(\n \"mx-auto z-[3] relative overflow-hidden\",\n `lg:${theme?.structure?.page?.width || \"max-w-6xl\"}`,\n theme?.structure?.section?.padding?.x || \"px-4\",\n theme?.structure?.section?.padding?.y || \"py-4\",\n )}\n >\n {children}\n </div>\n </>,\n )}\n </>\n );\n};\n","export interface Media {\n [key: string]: unknown;\n mediaId?: string;\n originalFileName?: string;\n fileName?: string;\n mimeType?: string;\n size?: number;\n caption?: string;\n alt?: string;\n /** Public URL of the asset (MediaLit format or generic URL format). */\n file?: string;\n url?: string;\n src?: string;\n /** Thumbnail URL, falls back to `file` or `url` when absent. */\n thumbnail?: string;\n thumbnailUrl?: string;\n}\n\nexport function getMediaUrl(media: unknown): string | null {\n if (!media) return null;\n if (typeof media === \"string\") return media.trim() || null;\n if (typeof media === \"object\") {\n const obj = media as Record<string, unknown>;\n const url = obj.url ?? obj.file ?? obj.src;\n return typeof url === \"string\" && url.trim() ? url.trim() : null;\n }\n return null;\n}\n\nexport function getMediaAlt(media: unknown): string {\n if (!media || typeof media !== \"object\") return \"\";\n const obj = media as Record<string, unknown>;\n const alt = obj.alt ?? obj.caption ?? obj.title;\n return typeof alt === \"string\" ? alt : \"\";\n}\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Subheader1: React.FC<TypographyProps & { component?: \"h5\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"h5\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.subheader1;\n const classes = cn(\n typographyStyles?.fontFamily || \"font-sans\",\n typographyStyles?.fontSize || \"text-lg\",\n typographyStyles?.fontWeight || \"font-medium\",\n typographyStyles?.lineHeight || \"leading-relaxed\",\n typographyStyles?.letterSpacing || \"tracking-normal\",\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"h5\" ? (\n <h5 className={classes} {...props}>\n {children}\n </h5>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Subheader2: React.FC<TypographyProps> = ({\n children,\n className = \"\",\n theme,\n ...props\n}) => {\n const typographyStyles = theme?.typography?.subheader2;\n const classes = [\n typographyStyles?.fontFamily || \"font-sans\",\n typographyStyles?.fontSize || \"text-base\",\n typographyStyles?.fontWeight || \"font-medium\",\n typographyStyles?.lineHeight || \"leading-relaxed\",\n typographyStyles?.letterSpacing || \"tracking-normal\",\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n ]\n .filter(Boolean)\n .join(\" \");\n\n return (\n <h6 className={classes} {...props}>\n {children}\n </h6>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Text1: React.FC<TypographyProps & { component?: \"p\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"p\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.text1;\n const classes = cn(\n // Base styles\n \"text-base\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"p\" ? (\n <p className={classes} {...props}>\n {children}\n </p>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import type React from \"react\";\nimport { cn } from \"./lib/utils\";\nimport type { TypographyProps } from \"./typography\";\n\nexport const Text2: React.FC<TypographyProps & { component?: \"p\" | \"span\" }> = ({\n children,\n className = \"\",\n theme,\n component = \"p\",\n ...props\n}) => {\n const typographyStyles = theme?.typography?.text2;\n const classes = cn(\n // Base styles\n \"text-sm\",\n // Theme overrides\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n typographyStyles?.textTransform,\n typographyStyles?.textDecoration,\n typographyStyles?.textOverflow,\n className,\n );\n\n return component === \"p\" ? (\n <p className={classes} {...props}>\n {children}\n </p>\n ) : (\n <span className={classes} {...props}>\n {children}\n </span>\n );\n};\n","import React from \"react\";\nimport type { ThemeStyle } from \"../models\";\nimport { cn } from \"./lib/utils\";\n\nexport interface TextareaProps\n extends React.TextareaHTMLAttributes<HTMLTextAreaElement> {\n theme?: ThemeStyle;\n error?: boolean;\n}\n\nexport const Textarea = React.forwardRef<HTMLTextAreaElement, TextareaProps>(\n ({ className = \"\", theme, error = false, ...props }, ref) => {\n const inputStyles = theme?.interactives?.input;\n const typographyStyles = theme?.typography?.input;\n const classes = cn(\n \"flex min-h-[80px] w-full rounded-md border border-input bg-background px-3 py-2 text-sm outline-none placeholder:text-muted-foreground focus-visible:ring-2 focus-visible:ring-ring/30 disabled:cursor-not-allowed disabled:opacity-50\",\n typographyStyles?.fontFamily,\n typographyStyles?.fontSize,\n typographyStyles?.fontWeight,\n typographyStyles?.lineHeight,\n typographyStyles?.letterSpacing,\n inputStyles?.padding?.x,\n inputStyles?.padding?.y,\n inputStyles?.border?.width,\n inputStyles?.border?.style,\n inputStyles?.border?.radius,\n inputStyles?.shadow,\n props.disabled && inputStyles?.disabled?.opacity,\n props.disabled && inputStyles?.disabled?.cursor,\n error && \"border-red-300 focus:border-red-500 focus:ring-red-500\",\n inputStyles?.custom,\n className,\n );\n\n return <textarea ref={ref} className={classes} {...props} />;\n },\n);\n\nTextarea.displayName = \"Textarea\";\n"],"mappings":"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","names":["jsx","Badge","cva","jsx","cva","jsx","Button","jsx","jsx","jsx","jsx","jsx","React","React","jsx","jsx","Input","React","React","cva","React","jsx","cva","jsx","Label","React","jsx","jsx","React","jsx","React","jsx","jsx","jsx","jsx","React","jsx","React"]}
|