@riverbankcms/sdk 0.62.2 → 0.62.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (111) hide show
  1. package/dist/_dts/api/src/accessAdmin.d.ts +7 -0
  2. package/dist/_dts/api/src/bookingClosures.d.ts +106 -0
  3. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +18 -0
  4. package/dist/_dts/api/src/bookingRecords.d.ts +1 -1
  5. package/dist/_dts/api/src/calendar.d.ts +11 -1
  6. package/dist/_dts/api/src/contentRuntime.d.ts +2 -0
  7. package/dist/_dts/api/src/contentVersionHistory.d.ts +52 -0
  8. package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +45 -0
  9. package/dist/_dts/api/src/endpoints.d.ts +110 -6
  10. package/dist/_dts/api/src/index.d.ts +4 -1
  11. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +31 -7
  12. package/dist/_dts/api/src/siteMembers.d.ts +10 -1
  13. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +33 -12
  14. package/dist/_dts/api/src/types.d.ts +2 -1
  15. package/dist/_dts/api/src/url.d.ts +3 -3
  16. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  17. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +12 -0
  18. package/dist/_dts/blocks/src/system/runtime/shared/components/FieldValidationMessage.d.ts +19 -0
  19. package/dist/_dts/blocks/src/system/runtime/shared/components/TerminalPanel.d.ts +8 -2
  20. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +3 -1
  21. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  22. package/dist/_dts/blocks/src/system/transforms/registry/_utils/themeColorResolution.d.ts +7 -0
  23. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +24 -0
  24. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  25. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +1 -0
  26. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +1 -0
  27. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +208 -0
  28. package/dist/_dts/db/src/schemas/forms.d.ts +1 -0
  29. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +2 -1
  30. package/dist/_dts/preview-next/src/client/blocks/composer/composePageFromBlocks.d.ts +2 -1
  31. package/dist/_dts/preview-next/src/client/blocks/composer/index.d.ts +2 -2
  32. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +2 -1
  33. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +31 -8
  34. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +6 -5
  35. package/dist/_dts/preview-next/src/client/blocks/previewProjection/aiProposalProjection.d.ts +7 -0
  36. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +7 -0
  37. package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +4 -0
  38. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +5 -0
  39. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +72 -0
  40. package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
  41. package/dist/_dts/preview-next/src/client/layout/PreviewLayoutContext.d.ts +6 -5
  42. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +2 -1
  43. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +11 -1
  44. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -5
  45. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -1
  46. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +13 -2
  47. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +7 -1
  48. package/dist/_dts/preview-next/src/client/preview/previewCustomizeControlStyles.d.ts +1 -0
  49. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +1 -0
  50. package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +9 -1
  51. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +13 -0
  52. package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +8 -2
  53. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +49 -0
  54. package/dist/_dts/sdk/src/public-api/contracts.d.ts +3 -1
  55. package/dist/_dts/sdk/src/version.d.ts +1 -1
  56. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  57. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  58. package/dist/_dts/theme-core/src/index.d.ts +1 -1
  59. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +2 -21
  60. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +3 -67
  61. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +4 -62
  62. package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +1 -1
  63. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +24 -0
  64. package/dist/_dts/theme-core/src/site-styles/customizableSurfaces.d.ts +94 -0
  65. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +59 -0
  66. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +4 -0
  67. package/dist/_dts/theme-core/src/site-styles/headerCtaVariants.d.ts +3 -0
  68. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +155 -0
  69. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +15 -0
  70. package/dist/_dts/theme-core/src/site-styles/index.d.ts +6 -0
  71. package/dist/_dts/theme-core/src/site-styles/pageDesignAuthority.d.ts +7 -0
  72. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +25 -0
  73. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +15 -1
  74. package/dist/_dts/theme-core/src/site-styles/records.d.ts +1 -0
  75. package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +96 -0
  76. package/dist/_dts/theme-core/src/site-styles/types.d.ts +1 -2
  77. package/dist/_dts/theme-core/src/siteChrome.d.ts +44 -2
  78. package/dist/_dts/theme-core/src/tokens/colorTokenParts.d.ts +13 -0
  79. package/dist/_dts/theme-core/src/tokens/index.d.ts +2 -0
  80. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +29 -0
  81. package/dist/_dts/theme-core/src/utils/tokenOrColor.d.ts +27 -1
  82. package/dist/cli/index.mjs +1139 -471
  83. package/dist/client/bookings.mjs +519 -368
  84. package/dist/client/client.mjs +4507 -3535
  85. package/dist/client/hooks.mjs +2634 -2035
  86. package/dist/client/rendering/client.mjs +4413 -3549
  87. package/dist/client/rendering/islands.mjs +3456 -2589
  88. package/dist/client/rendering.mjs +4921 -3949
  89. package/dist/preview-next/before-render.mjs +138 -6
  90. package/dist/preview-next/client/runtime.mjs +3541 -1573
  91. package/dist/preview-next/editor-base.css +31 -0
  92. package/dist/preview-next/middleware.mjs +131 -6
  93. package/dist/server/components.mjs +3214 -2560
  94. package/dist/server/config-validation.mjs +2859 -2260
  95. package/dist/server/config.mjs +2859 -2260
  96. package/dist/server/data.mjs +2634 -2035
  97. package/dist/server/index.mjs +132 -7
  98. package/dist/server/next.mjs +2983 -2329
  99. package/dist/server/page-converter.mjs +2478 -2029
  100. package/dist/server/prebuild.mjs +1 -1
  101. package/dist/server/rendering/server.mjs +3214 -2560
  102. package/dist/server/rendering.mjs +3233 -2579
  103. package/dist/server/routing.mjs +2725 -2028
  104. package/dist/server/server.mjs +2636 -2037
  105. package/dist/server/theme-bridge.mjs +1250 -767
  106. package/dist/server/theme.mjs +623 -498
  107. package/dist/styles/index.css +33 -0
  108. package/package.json +1 -1
  109. package/dist/_dts/blocks/src/system/transforms/registry/_utils/colorResolution.d.ts +0 -13
  110. package/dist/_dts/preview-next/src/client/blocks/overlay.d.ts +0 -30
  111. package/dist/_dts/theme-core/src/site-styles/siteChromeAppearancePresets.d.ts +0 -67
@@ -77,6 +77,9 @@ function asBlockOrderIndex(value) {
77
77
  }
78
78
  return value;
79
79
  }
80
+ function asLayoutVariantKey(value) {
81
+ return brandNonEmptyString(value, "LayoutVariantKey");
82
+ }
80
83
  function asAppearancePresetId(value) {
81
84
  return brandNonEmptyString(value, "AppearancePresetId");
82
85
  }
@@ -550,84 +553,35 @@ var blockAppearancePresets = [
550
553
  })
551
554
  ];
552
555
 
553
- // ../theme-core/src/site-styles/siteChromeAppearancePresets.ts
554
- function defineSiteChromeAppearancePreset(preset) {
555
- return preset;
556
- }
557
- var siteChromeAppearancePresets = [
558
- defineSiteChromeAppearancePreset({
559
- kind: "site-chrome",
560
- id: "header-clean-base",
561
- target: "site-header",
562
- label: "Clean base header",
563
- header: {
564
- surface: {
565
- kind: "neutral-solid",
566
- token: "surface",
567
- textColorToken: "text"
568
- },
569
- navTreatment: "minimal",
570
- dropdownTreatment: "surface",
571
- ctaTreatment: "default",
572
- behavior: "default"
573
- }
574
- }),
575
- defineSiteChromeAppearancePreset({
576
- kind: "site-chrome",
577
- id: "site-header-brand-solid-inverted-cta",
578
- target: "site-header",
579
- label: "Brand solid header with inverted CTA",
580
- header: {
581
- surface: {
582
- kind: "brand-solid",
583
- token: "primary",
584
- textColorToken: "primaryForeground"
585
- },
586
- navTreatment: "uppercase-underline",
587
- dropdownTreatment: "matched-solid",
588
- ctaTreatment: "inverted",
589
- behavior: "sticky-shrink"
590
- }
591
- }),
592
- defineSiteChromeAppearancePreset({
593
- kind: "site-chrome",
594
- id: "footer-muted-grounding",
595
- target: "site-footer",
596
- label: "Muted grounding footer",
597
- footer: {
598
- kind: "grounding",
599
- surface: "muted-band",
600
- emphasis: "low"
601
- }
602
- }),
603
- defineSiteChromeAppearancePreset({
604
- kind: "site-chrome",
605
- id: "site-footer-brand-two-band",
606
- target: "site-footer",
607
- label: "Two-band brand footer",
608
- footer: {
609
- kind: "brand-two-band",
610
- surface: {
611
- token: "primary",
612
- shade: "800",
613
- textColorToken: "primaryForeground"
614
- },
615
- bottomBand: {
616
- token: "primary",
617
- shade: "900",
618
- textColorToken: "primaryForeground"
619
- },
620
- emphasis: "high"
621
- }
622
- })
623
- ];
624
-
625
556
  // ../theme-core/src/site-styles/appearancePresetCatalog.ts
626
557
  var appearancePresets = [
627
- ...blockAppearancePresets,
628
- ...siteChromeAppearancePresets
558
+ ...blockAppearancePresets
629
559
  ];
630
560
 
561
+ // ../theme-core/src/site-styles/headerCtaVariants.ts
562
+ function hasButtonVariant(theme, variantId) {
563
+ return theme.buttons?.variants.some((variant) => variant.enabled && variant.id === variantId) ?? false;
564
+ }
565
+ function resolveHeaderCtaVariant(theme, treatment) {
566
+ switch (treatment) {
567
+ case "default":
568
+ return void 0;
569
+ case "primary":
570
+ return "primary";
571
+ case "secondary":
572
+ return hasButtonVariant(theme, "secondary") ? "secondary" : "primary";
573
+ case "inverted":
574
+ if (hasButtonVariant(theme, "header")) return "header";
575
+ if (hasButtonVariant(theme, "secondary")) return "secondary";
576
+ if (hasButtonVariant(theme, "outline")) return "outline";
577
+ return "primary";
578
+ case "outline":
579
+ return hasButtonVariant(theme, "outline") ? "outline" : "secondary";
580
+ case "ghost":
581
+ return hasButtonVariant(theme, "ghost") ? "ghost" : "secondary";
582
+ }
583
+ }
584
+
631
585
  // ../theme-core/src/site-styles/pageDesignIntent.ts
632
586
  import { z } from "zod";
633
587
  var pageDesignIntentSchemaVersion = 1;
@@ -704,10 +658,141 @@ function boundaryKey(previousBlockId, nextBlockId) {
704
658
  }
705
659
 
706
660
  // ../theme-core/src/buttons/personalities/types.ts
707
- import { z as z4 } from "zod";
661
+ import { z as z5 } from "zod";
708
662
 
709
663
  // ../theme-core/src/buttons/types.ts
664
+ import { z as z3 } from "zod";
665
+
666
+ // ../theme-core/src/tokens/themeColorTokens.ts
710
667
  import { z as z2 } from "zod";
668
+
669
+ // ../theme-core/src/tokens/colorTokenParts.ts
670
+ function parseOpacityPercent(source) {
671
+ const trimmed = source.trim();
672
+ if (!trimmed) return null;
673
+ if (!/^\d{1,3}(?:\.\d+)?$/.test(trimmed)) return null;
674
+ const value = Number(trimmed);
675
+ if (!Number.isFinite(value)) return null;
676
+ if (value < 0 || value > 100) return null;
677
+ return value;
678
+ }
679
+ function parseColorTokenParts(source) {
680
+ const trimmed = source.trim();
681
+ if (trimmed.startsWith("raw:")) {
682
+ return { kind: "raw", value: trimmed.slice(4) };
683
+ }
684
+ const [token, opacityRaw, extra] = trimmed.split("/");
685
+ if (!token || extra !== void 0) {
686
+ return { kind: "invalid", token: trimmed };
687
+ }
688
+ if (opacityRaw === void 0) {
689
+ return { kind: "token", token, opacityPercent: null };
690
+ }
691
+ const opacityPercent = parseOpacityPercent(opacityRaw);
692
+ if (opacityPercent === null) {
693
+ return { kind: "invalid", token: trimmed };
694
+ }
695
+ return { kind: "token", token, opacityPercent };
696
+ }
697
+
698
+ // ../theme-core/src/tokens/blockColorTokens.ts
699
+ var blockColorTokenNames = [
700
+ "text",
701
+ "heading",
702
+ "mutedText",
703
+ "surface",
704
+ "background",
705
+ "foreground",
706
+ "border",
707
+ "primary",
708
+ "secondary",
709
+ "accent",
710
+ "success",
711
+ "warning",
712
+ "info",
713
+ "error",
714
+ "destructive",
715
+ "scrim",
716
+ "shadow",
717
+ // Common "on*" tokens used when rendering colored chips/badges.
718
+ "onPrimary",
719
+ "onSecondary",
720
+ "onAccent",
721
+ "onSuccess",
722
+ "onWarning",
723
+ "onInfo",
724
+ "onError",
725
+ "onDestructive",
726
+ "onSurface"
727
+ ];
728
+ var blockColorTokenNameSet = new Set(
729
+ blockColorTokenNames
730
+ );
731
+
732
+ // ../theme-core/src/tokens/themeColorTokens.ts
733
+ var PALETTE_TOKEN_NAMES = [
734
+ "primary",
735
+ "primaryForeground",
736
+ "secondary",
737
+ "accent",
738
+ "success",
739
+ "warning",
740
+ "destructive",
741
+ "background",
742
+ "surface",
743
+ "surfaceAlt",
744
+ "muted",
745
+ "text",
746
+ "border"
747
+ ];
748
+ var paletteTokenNameSchema = z2.enum(PALETTE_TOKEN_NAMES);
749
+ var themeColorBaseTokenNames = [
750
+ ...PALETTE_TOKEN_NAMES,
751
+ ...blockColorTokenNames,
752
+ // Existing generated themes can carry palette-local "white" tokens in
753
+ // token-only component fields. Keep it explicit until those rows are
754
+ // migrated to canonical foreground/background roles.
755
+ "white",
756
+ "neutral",
757
+ "primaryText",
758
+ "secondaryForeground",
759
+ "accentForeground"
760
+ ];
761
+ var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
762
+ var SHADE_STEPS = [
763
+ "50",
764
+ "100",
765
+ "200",
766
+ "300",
767
+ "400",
768
+ "500",
769
+ "600",
770
+ "700",
771
+ "800",
772
+ "900",
773
+ "950"
774
+ ];
775
+ var shadeStepSet = new Set(SHADE_STEPS);
776
+ function isKnownBaseToken(value) {
777
+ return themeColorBaseTokenSet.has(value);
778
+ }
779
+ function isKnownShadeToken(value) {
780
+ const match = value.match(/^([a-zA-Z][a-zA-Z0-9]*)(?:-([0-9]{2,3}))$/);
781
+ if (!match) return false;
782
+ const [, base, shade] = match;
783
+ return Boolean(base && shade && isKnownBaseToken(base) && shadeStepSet.has(shade));
784
+ }
785
+ function isThemeColorTokenBase(value) {
786
+ return isKnownBaseToken(value) || isKnownShadeToken(value);
787
+ }
788
+ function isThemeColorToken(value) {
789
+ if (typeof value !== "string") return false;
790
+ const parts = parseColorTokenParts(value);
791
+ return parts.kind === "token" && isThemeColorTokenBase(parts.token);
792
+ }
793
+ var themeColorTokenSchema = z2.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
794
+
795
+ // ../theme-core/src/buttons/types.ts
711
796
  var VARIANT_ROLES = [
712
797
  "primary",
713
798
  "secondary",
@@ -717,22 +802,22 @@ var VARIANT_ROLES = [
717
802
  "tertiary",
718
803
  "accent"
719
804
  ];
720
- var cornerStyleSchema = z2.enum(["square", "rounded", "pill"]);
721
- var shadowSizeSchema = z2.enum(["none", "low", "medium", "high"]);
722
- var textTransformSchema = z2.enum(["none", "uppercase", "lowercase", "capitalize"]);
723
- var fontWeightSchema = z2.union([z2.literal(500), z2.literal(600), z2.literal(700)]);
724
- var buttonTypographySchema = z2.enum(["body", "heading"]);
725
- var letterSpacingSchema = z2.enum(["tight", "normal", "loose"]);
726
- var hoverTransformSchema = z2.enum(["none", "lift", "scale", "press"]);
727
- var hoverColorSchema = z2.enum(["none", "brighten", "darken", "saturate", "token"]);
728
- var buttonPaddingPresetSchema = z2.enum(["compact", "default", "spacious"]);
729
- var gradientStyleSchema = z2.enum(["linear", "radial", "conic"]);
730
- var gradientSharpnessSchema = z2.enum(["smooth", "medium", "hard"]);
731
- var prioritySchema = z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]);
732
- var variantRoleSchema = z2.enum(VARIANT_ROLES);
733
- var buttonSizeNameSchema = z2.enum(["sm", "md", "lg", "xl"]);
805
+ var cornerStyleSchema = z3.enum(["square", "rounded", "pill"]);
806
+ var shadowSizeSchema = z3.enum(["none", "low", "medium", "high"]);
807
+ var textTransformSchema = z3.enum(["none", "uppercase", "lowercase", "capitalize"]);
808
+ var fontWeightSchema = z3.union([z3.literal(500), z3.literal(600), z3.literal(700)]);
809
+ var buttonTypographySchema = z3.enum(["body", "heading"]);
810
+ var letterSpacingSchema = z3.enum(["tight", "normal", "loose"]);
811
+ var hoverTransformSchema = z3.enum(["none", "lift", "scale", "press"]);
812
+ var hoverColorSchema = z3.enum(["none", "brighten", "darken", "saturate", "token"]);
813
+ var buttonPaddingPresetSchema = z3.enum(["compact", "default", "spacious"]);
814
+ var gradientStyleSchema = z3.enum(["linear", "radial", "conic"]);
815
+ var gradientSharpnessSchema = z3.enum(["smooth", "medium", "hard"]);
816
+ var prioritySchema = z3.union([z3.literal(1), z3.literal(2), z3.literal(3)]);
817
+ var variantRoleSchema = z3.enum(VARIANT_ROLES);
818
+ var buttonSizeNameSchema = z3.enum(["sm", "md", "lg", "xl"]);
734
819
  var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
735
- var paddingShorthandSchema = z2.string().refine(
820
+ var paddingShorthandSchema = z3.string().refine(
736
821
  (value) => {
737
822
  const parts = value.split(/\s+/).filter(Boolean);
738
823
  return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
@@ -741,11 +826,11 @@ var paddingShorthandSchema = z2.string().refine(
741
826
  message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
742
827
  }
743
828
  );
744
- var buttonSizeConfigSchema = z2.object({
829
+ var buttonSizeConfigSchema = z3.object({
745
830
  padding: paddingShorthandSchema,
746
- fontSize: z2.string().optional()
831
+ fontSize: z3.string().optional()
747
832
  });
748
- var buttonSizesSchema = z2.object({
833
+ var buttonSizesSchema = z3.object({
749
834
  sm: buttonSizeConfigSchema,
750
835
  md: buttonSizeConfigSchema,
751
836
  lg: buttonSizeConfigSchema,
@@ -756,9 +841,9 @@ var buttonSizesSchema = z2.object({
756
841
  lg,
757
842
  xl: xl ?? lg
758
843
  }));
759
- var buttonGlobalSettingsSchema = z2.object({
844
+ var buttonGlobalSettingsSchema = z3.object({
760
845
  cornerStyle: cornerStyleSchema,
761
- cornerRadius: z2.number().min(0).max(24).optional(),
846
+ cornerRadius: z3.number().min(0).max(24).optional(),
762
847
  shadow: shadowSizeSchema,
763
848
  textTransform: textTransformSchema,
764
849
  fontWeight: fontWeightSchema,
@@ -768,104 +853,104 @@ var buttonGlobalSettingsSchema = z2.object({
768
853
  * by the current generator and will be removed once the legacy
769
854
  * `primitives/content/components/Button.tsx` slot exports are deleted.
770
855
  */
771
- borderWidth: z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]),
856
+ borderWidth: z3.union([z3.literal(1), z3.literal(2), z3.literal(3)]),
772
857
  // === Family-level typography ===
773
858
  // Typography source (body or heading) — selects which theme typography pool to inherit
774
859
  typography: buttonTypographySchema.optional(),
775
860
  // Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
776
861
  // Sized variants get this as default; fixed variants inherit unless they override.
777
862
  // Size class CSS may still override at run time for sized variants.
778
- fontSize: z2.string().optional(),
863
+ fontSize: z3.string().optional(),
779
864
  // Letter spacing applied to all variants
780
865
  letterSpacing: letterSpacingSchema.optional(),
781
866
  // Italic style
782
- italic: z2.boolean().optional(),
867
+ italic: z3.boolean().optional(),
783
868
  // Padding preset (applies to sized variants without a sizes config)
784
869
  paddingPreset: buttonPaddingPresetSchema.optional(),
785
870
  hoverTransform: hoverTransformSchema,
786
871
  hoverColor: hoverColorSchema,
787
872
  // When hoverColor is 'token', this specifies which token to use
788
- hoverColorToken: z2.string().optional(),
873
+ hoverColorToken: themeColorTokenSchema.optional(),
789
874
  // Gradient settings (if any variant uses gradients)
790
875
  gradientStyle: gradientStyleSchema.optional(),
791
- gradientAngle: z2.number().min(0).max(360).optional(),
876
+ gradientAngle: z3.number().min(0).max(360).optional(),
792
877
  gradientSharpness: gradientSharpnessSchema.optional()
793
878
  });
794
- var gradientDirectionSchema = z2.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
795
- var buttonBackgroundSchema = z2.discriminatedUnion("type", [
796
- z2.object({ type: z2.literal("solid"), colorToken: z2.string() }),
797
- z2.object({
798
- type: z2.literal("gradient"),
799
- stops: z2.array(z2.string()).min(2),
879
+ var gradientDirectionSchema = z3.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
880
+ var buttonBackgroundSchema = z3.discriminatedUnion("type", [
881
+ z3.object({ type: z3.literal("solid"), colorToken: themeColorTokenSchema }),
882
+ z3.object({
883
+ type: z3.literal("gradient"),
884
+ stops: z3.array(themeColorTokenSchema).min(2),
800
885
  direction: gradientDirectionSchema
801
886
  }),
802
- z2.object({ type: z2.literal("transparent") })
887
+ z3.object({ type: z3.literal("transparent") })
803
888
  ]);
804
- var effectApplicationSchema = z2.object({
805
- effectId: z2.string(),
806
- options: z2.record(z2.string(), z2.any()).optional()
889
+ var effectApplicationSchema = z3.object({
890
+ effectId: z3.string(),
891
+ options: z3.record(z3.string(), z3.any()).optional()
807
892
  });
808
- var buttonBorderSchema = z2.object({
809
- widthClass: z2.string(),
810
- colorToken: z2.string()
893
+ var buttonBorderSchema = z3.object({
894
+ widthClass: z3.string(),
895
+ colorToken: themeColorTokenSchema
811
896
  });
812
- var variantShadowSchema = z2.object({
813
- elevation: z2.enum(["none", "low", "medium", "high"]),
814
- softness: z2.enum(["crisp", "soft", "hard"]).nullable(),
815
- position: z2.enum(["bottom", "bottom-right"]).default("bottom")
897
+ var variantShadowSchema = z3.object({
898
+ elevation: z3.enum(["none", "low", "medium", "high"]),
899
+ softness: z3.enum(["crisp", "soft", "hard"]).nullable(),
900
+ position: z3.enum(["bottom", "bottom-right"]).default("bottom")
816
901
  });
817
- var variantEffectsSchema = z2.object({
818
- base: z2.array(effectApplicationSchema).optional(),
819
- hover: z2.array(effectApplicationSchema).optional(),
820
- active: z2.array(effectApplicationSchema).optional(),
821
- focus: z2.array(effectApplicationSchema).optional()
902
+ var variantEffectsSchema = z3.object({
903
+ base: z3.array(effectApplicationSchema).optional(),
904
+ hover: z3.array(effectApplicationSchema).optional(),
905
+ active: z3.array(effectApplicationSchema).optional(),
906
+ focus: z3.array(effectApplicationSchema).optional()
822
907
  });
823
- var variantSizeOverridesSchema = z2.object({
908
+ var variantSizeOverridesSchema = z3.object({
824
909
  sm: buttonSizeConfigSchema.optional(),
825
910
  md: buttonSizeConfigSchema.optional(),
826
911
  lg: buttonSizeConfigSchema.optional(),
827
912
  xl: buttonSizeConfigSchema.optional()
828
913
  });
829
- var buttonVariantSchema = z2.object({
830
- id: z2.string(),
831
- name: z2.string().min(1).max(20),
832
- enabled: z2.boolean(),
914
+ var buttonVariantSchema = z3.object({
915
+ id: z3.string(),
916
+ name: z3.string().min(1).max(20),
917
+ enabled: z3.boolean(),
833
918
  priority: prioritySchema,
834
919
  // Base appearance (token-based)
835
920
  background: buttonBackgroundSchema,
836
- textColorToken: z2.string(),
921
+ textColorToken: themeColorTokenSchema,
837
922
  /** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
838
- borderRadius: z2.string().optional(),
923
+ borderRadius: z3.string().optional(),
839
924
  // Optional shadow override (uses theme.shadow if not specified)
840
925
  shadow: variantShadowSchema.optional(),
841
926
  // Border (optional)
842
927
  border: buttonBorderSchema.optional(),
843
928
  // Hover background token (per-variant override, takes precedence over global hoverColorToken)
844
- hoverBackgroundToken: z2.string().optional(),
929
+ hoverBackgroundToken: z3.string().optional(),
845
930
  // Effect composition
846
931
  effects: variantEffectsSchema.optional(),
847
932
  // Per-variant size overrides — see VariantSizeOverrides
848
933
  sizes: variantSizeOverridesSchema.optional()
849
934
  });
850
- var buttonSystemSchema = z2.object({
935
+ var buttonSystemSchema = z3.object({
851
936
  global: buttonGlobalSettingsSchema,
852
- variants: z2.array(buttonVariantSchema).min(1).max(6),
937
+ variants: z3.array(buttonVariantSchema).min(1).max(6),
853
938
  sizes: buttonSizesSchema.optional()
854
939
  });
855
940
 
856
941
  // ../theme-core/src/site-styles/styleTags.ts
857
- import { z as z3 } from "zod";
942
+ import { z as z4 } from "zod";
858
943
  var STYLE_AXIS_VALUES = {
859
944
  tone: ["minimal", "classic", "bold"],
860
945
  energy: ["calm", "vibrant"],
861
946
  motion: ["subtle", "standard", "expressive"],
862
947
  era: ["editorial", "modern", "organic", "technical", "retro"]
863
948
  };
864
- var styleTagsSchema = z3.object({
865
- tone: z3.enum(STYLE_AXIS_VALUES.tone).optional(),
866
- energy: z3.enum(STYLE_AXIS_VALUES.energy).optional(),
867
- motion: z3.enum(STYLE_AXIS_VALUES.motion).optional(),
868
- era: z3.enum(STYLE_AXIS_VALUES.era).optional()
949
+ var styleTagsSchema = z4.object({
950
+ tone: z4.enum(STYLE_AXIS_VALUES.tone).optional(),
951
+ energy: z4.enum(STYLE_AXIS_VALUES.energy).optional(),
952
+ motion: z4.enum(STYLE_AXIS_VALUES.motion).optional(),
953
+ era: z4.enum(STYLE_AXIS_VALUES.era).optional()
869
954
  });
870
955
 
871
956
  // ../theme-core/src/buttons/personalities/types.ts
@@ -875,11 +960,11 @@ function asButtonPersonalityId(value) {
875
960
  }
876
961
  return value;
877
962
  }
878
- var buttonPersonalityIdSchema = z4.string().min(1).transform((value) => asButtonPersonalityId(value));
879
- var buttonPersonalitySchema = z4.object({
963
+ var buttonPersonalityIdSchema = z5.string().min(1).transform((value) => asButtonPersonalityId(value));
964
+ var buttonPersonalitySchema = z5.object({
880
965
  id: buttonPersonalityIdSchema,
881
- name: z4.string().min(1),
882
- description: z4.string().min(1),
966
+ name: z5.string().min(1),
967
+ description: z5.string().min(1),
883
968
  tags: styleTagsSchema,
884
969
  buttonSystem: buttonSystemSchema
885
970
  });
@@ -1524,51 +1609,51 @@ var personalitiesById = new Map(
1524
1609
  );
1525
1610
 
1526
1611
  // ../theme-core/src/palette/variants/types.ts
1527
- import { z as z16 } from "zod";
1612
+ import { z as z18 } from "zod";
1528
1613
 
1529
1614
  // ../theme-core/src/schema.ts
1530
- import { z as z15 } from "zod";
1615
+ import { z as z17 } from "zod";
1531
1616
 
1532
1617
  // ../theme-core/src/lib/media.ts
1533
- import z5 from "zod";
1534
- var hotspotSchema = z5.object({
1535
- x: z5.number().min(0).max(1),
1536
- y: z5.number().min(0).max(1),
1537
- radius: z5.number().optional()
1618
+ import z6 from "zod";
1619
+ var hotspotSchema = z6.object({
1620
+ x: z6.number().min(0).max(1),
1621
+ y: z6.number().min(0).max(1),
1622
+ radius: z6.number().optional()
1538
1623
  });
1539
- var rotationSchema = z5.union([z5.literal(0), z5.literal(90), z5.literal(180), z5.literal(270)]);
1540
- var rectSchema = z5.tuple([z5.number(), z5.number(), z5.number(), z5.number()]);
1541
- var aspectCropSchema = z5.object({
1542
- aspect: z5.preprocess((value) => value == null ? void 0 : value, z5.string().optional()),
1543
- rect: z5.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
1544
- hotspot: z5.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
1545
- rotation: z5.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
1624
+ var rotationSchema = z6.union([z6.literal(0), z6.literal(90), z6.literal(180), z6.literal(270)]);
1625
+ var rectSchema = z6.tuple([z6.number(), z6.number(), z6.number(), z6.number()]);
1626
+ var aspectCropSchema = z6.object({
1627
+ aspect: z6.preprocess((value) => value == null ? void 0 : value, z6.string().optional()),
1628
+ rect: z6.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
1629
+ hotspot: z6.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
1630
+ rotation: z6.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
1546
1631
  });
1547
- var transformSchema = z5.object({
1548
- aspectCrops: z5.preprocess((value) => {
1632
+ var transformSchema = z6.object({
1633
+ aspectCrops: z6.preprocess((value) => {
1549
1634
  if (!value || typeof value !== "object" || Array.isArray(value)) {
1550
1635
  return void 0;
1551
1636
  }
1552
1637
  return value;
1553
- }, z5.record(z5.string(), aspectCropSchema.catch({}))).optional(),
1638
+ }, z6.record(z6.string(), aspectCropSchema.catch({}))).optional(),
1554
1639
  rect: rectSchema.optional(),
1555
1640
  hotspot: hotspotSchema.optional(),
1556
1641
  rotation: rotationSchema.optional()
1557
1642
  });
1558
- var mediaSchema = z5.object({
1559
- type: z5.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
1560
- purpose: z5.string().optional(),
1561
- placeholder: z5.boolean().default(true).optional(),
1562
- assetId: z5.string().optional(),
1563
- identifier: z5.string().optional(),
1564
- src: z5.string().optional(),
1565
- alt: z5.string().optional(),
1566
- filename: z5.string().optional(),
1567
- mimeType: z5.string().optional(),
1568
- width: z5.number().optional(),
1569
- height: z5.number().optional(),
1570
- storageBucket: z5.string().optional(),
1571
- storagePath: z5.string().optional(),
1643
+ var mediaSchema = z6.object({
1644
+ type: z6.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
1645
+ purpose: z6.string().optional(),
1646
+ placeholder: z6.boolean().default(true).optional(),
1647
+ assetId: z6.string().optional(),
1648
+ identifier: z6.string().optional(),
1649
+ src: z6.string().optional(),
1650
+ alt: z6.string().optional(),
1651
+ filename: z6.string().optional(),
1652
+ mimeType: z6.string().optional(),
1653
+ width: z6.number().optional(),
1654
+ height: z6.number().optional(),
1655
+ storageBucket: z6.string().optional(),
1656
+ storagePath: z6.string().optional(),
1572
1657
  transform: transformSchema.optional()
1573
1658
  });
1574
1659
 
@@ -1702,43 +1787,43 @@ function getDefaultButtonVariants() {
1702
1787
  }
1703
1788
 
1704
1789
  // ../theme-core/src/cards/types.ts
1705
- import { z as z6 } from "zod";
1706
- var cardSpacingSchema = z6.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
1707
- var gradientDirectionSchema2 = z6.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
1708
- var cardBackgroundSchema = z6.discriminatedUnion("type", [
1709
- z6.object({ type: z6.literal("solid"), colorToken: z6.string() }),
1710
- z6.object({
1711
- type: z6.literal("gradient"),
1712
- fromToken: z6.string(),
1713
- toToken: z6.string(),
1790
+ import { z as z7 } from "zod";
1791
+ var cardSpacingSchema = z7.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
1792
+ var gradientDirectionSchema2 = z7.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
1793
+ var cardBackgroundSchema = z7.discriminatedUnion("type", [
1794
+ z7.object({ type: z7.literal("solid"), colorToken: themeColorTokenSchema }),
1795
+ z7.object({
1796
+ type: z7.literal("gradient"),
1797
+ fromToken: themeColorTokenSchema,
1798
+ toToken: themeColorTokenSchema,
1714
1799
  direction: gradientDirectionSchema2
1715
1800
  }),
1716
- z6.object({ type: z6.literal("transparent") })
1801
+ z7.object({ type: z7.literal("transparent") })
1717
1802
  ]);
1718
- var cardBorderSchema = z6.object({
1719
- widthClass: z6.string(),
1720
- colorToken: z6.string()
1803
+ var cardBorderSchema = z7.object({
1804
+ widthClass: z7.string(),
1805
+ colorToken: themeColorTokenSchema
1721
1806
  });
1722
- var cardVariantSchema = z6.object({
1723
- id: z6.string(),
1724
- name: z6.string().min(1).max(20),
1725
- enabled: z6.boolean(),
1726
- priority: z6.union([z6.literal(1), z6.literal(2), z6.literal(3)]),
1807
+ var cardVariantSchema = z7.object({
1808
+ id: z7.string(),
1809
+ name: z7.string().min(1).max(20),
1810
+ enabled: z7.boolean(),
1811
+ priority: z7.union([z7.literal(1), z7.literal(2), z7.literal(3)]),
1727
1812
  // Appearance (token-based)
1728
1813
  background: cardBackgroundSchema,
1729
1814
  spacing: cardSpacingSchema,
1730
1815
  // Optional overrides (uses theme defaults if not specified)
1731
- shadow: z6.object({
1732
- elevation: z6.enum(["none", "low", "medium", "high"]),
1733
- softness: z6.enum(["crisp", "soft", "hard"]).nullable(),
1734
- position: z6.enum(["bottom", "bottom-right"]).default("bottom")
1816
+ shadow: z7.object({
1817
+ elevation: z7.enum(["none", "low", "medium", "high"]),
1818
+ softness: z7.enum(["crisp", "soft", "hard"]).nullable(),
1819
+ position: z7.enum(["bottom", "bottom-right"]).default("bottom")
1735
1820
  }).optional(),
1736
- corners: z6.enum(["square", "soft", "rounded", "pill"]).optional(),
1821
+ corners: z7.enum(["square", "soft", "rounded", "pill"]).optional(),
1737
1822
  // Border (optional)
1738
1823
  border: cardBorderSchema.optional()
1739
1824
  });
1740
- var cardSystemSchema = z6.object({
1741
- variants: z6.array(cardVariantSchema).min(1).max(3)
1825
+ var cardSystemSchema = z7.object({
1826
+ variants: z7.array(cardVariantSchema).min(1).max(3)
1742
1827
  });
1743
1828
 
1744
1829
  // ../theme-core/src/cards/core.ts
@@ -1860,8 +1945,8 @@ function getDefaultCardVariants() {
1860
1945
  }
1861
1946
 
1862
1947
  // ../theme-core/src/accordions/types.ts
1863
- import { z as z7 } from "zod";
1864
- var accordionIconSchema = z7.enum([
1948
+ import { z as z8 } from "zod";
1949
+ var accordionIconSchema = z8.enum([
1865
1950
  "plus-minus",
1866
1951
  // + becomes - (swap or rotate 90°)
1867
1952
  "chevron",
@@ -1873,180 +1958,179 @@ var accordionIconSchema = z7.enum([
1873
1958
  "circle-plus-minus"
1874
1959
  // ⊕ becomes ⊖ (swap with fade)
1875
1960
  ]);
1876
- var accordionSystemSchema = z7.object({
1961
+ var accordionSystemSchema = z8.object({
1877
1962
  // Visual styling (solid color only - gradients can be added later if needed)
1878
- background: z7.object({
1879
- type: z7.literal("solid"),
1880
- colorToken: z7.string()
1963
+ background: z8.object({
1964
+ type: z8.literal("solid"),
1965
+ colorToken: themeColorTokenSchema
1881
1966
  }),
1882
1967
  // Spacing (padding inside items)
1883
- spacing: z7.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
1968
+ spacing: z8.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
1884
1969
  // Border radius (null = inherit from theme.corners)
1885
- corners: z7.enum(["square", "soft", "rounded", "pill"]).nullable(),
1970
+ corners: z8.enum(["square", "soft", "rounded", "pill"]).nullable(),
1886
1971
  // Border styling (null = inherit from theme.border)
1887
- border: z7.object({
1888
- widthClass: z7.string(),
1972
+ border: z8.object({
1973
+ widthClass: z8.string(),
1889
1974
  // e.g., 'border', 'border-2', 'border-0'
1890
- colorToken: z7.string()
1975
+ colorToken: themeColorTokenSchema
1891
1976
  }).nullable(),
1892
1977
  // Shadow (null = inherit from theme.shadow)
1893
- shadow: z7.object({
1894
- elevation: z7.enum(["none", "low", "medium", "high"]),
1895
- softness: z7.enum(["soft", "crisp", "hard"]).nullable(),
1896
- position: z7.enum(["bottom", "bottom-right"])
1978
+ shadow: z8.object({
1979
+ elevation: z8.enum(["none", "low", "medium", "high"]),
1980
+ softness: z8.enum(["soft", "crisp", "hard"]).nullable(),
1981
+ position: z8.enum(["bottom", "bottom-right"])
1897
1982
  }).nullable(),
1898
1983
  // Icon style and animation
1899
- icon: z7.object({
1984
+ icon: z8.object({
1900
1985
  style: accordionIconSchema,
1901
- position: z7.enum(["left", "right"]),
1902
- size: z7.enum(["sm", "md", "lg"])
1986
+ position: z8.enum(["left", "right"]),
1987
+ size: z8.enum(["sm", "md", "lg"])
1903
1988
  }),
1904
1989
  // Trigger (question) styling
1905
- trigger: z7.object({
1906
- textColorToken: z7.string(),
1907
- fontWeight: z7.enum(["regular", "medium", "semibold", "bold"]).nullable()
1990
+ trigger: z8.object({
1991
+ textColorToken: themeColorTokenSchema,
1992
+ fontWeight: z8.enum(["regular", "medium", "semibold", "bold"]).nullable()
1908
1993
  // null = inherit from theme
1909
1994
  }),
1910
1995
  // Hover state styling
1911
- hover: z7.object({
1912
- backgroundColorToken: z7.string().optional(),
1913
- textColorToken: z7.string().optional(),
1914
- borderColorToken: z7.string().optional()
1996
+ hover: z8.object({
1997
+ backgroundColorToken: themeColorTokenSchema.optional(),
1998
+ textColorToken: themeColorTokenSchema.optional(),
1999
+ borderColorToken: themeColorTokenSchema.optional()
1915
2000
  }),
1916
2001
  // Content (answer) styling
1917
- content: z7.object({
1918
- textColorToken: z7.string()
2002
+ content: z8.object({
2003
+ textColorToken: themeColorTokenSchema
1919
2004
  })
1920
2005
  });
1921
2006
 
1922
2007
  // ../theme-core/src/inputs/types.ts
1923
- import { z as z8 } from "zod";
1924
- var inputSystemSchema = z8.object({
2008
+ import { z as z9 } from "zod";
2009
+ var inputSystemSchema = z9.object({
1925
2010
  // Base styling (applied to all inputs)
1926
- base: z8.object({
1927
- background: z8.union([
1928
- z8.object({
1929
- type: z8.literal("solid"),
1930
- colorToken: z8.string()
2011
+ base: z9.object({
2012
+ background: z9.union([
2013
+ z9.object({
2014
+ type: z9.literal("solid"),
2015
+ colorToken: themeColorTokenSchema
1931
2016
  }),
1932
- z8.object({
1933
- type: z8.literal("transparent")
2017
+ z9.object({
2018
+ type: z9.literal("transparent")
1934
2019
  })
1935
2020
  ]),
1936
- textColorToken: z8.string(),
1937
- border: z8.object({
1938
- widthClass: z8.string(),
2021
+ textColorToken: themeColorTokenSchema,
2022
+ border: z9.object({
2023
+ widthClass: z9.string(),
1939
2024
  // e.g., 'border', 'border-2'
1940
- colorToken: z8.string(),
1941
- style: z8.enum(["all", "underline"]).optional()
2025
+ colorToken: themeColorTokenSchema,
2026
+ style: z9.enum(["all", "underline"]).optional()
1942
2027
  }),
1943
- corners: z8.enum(["square", "soft", "rounded", "pill"]).nullable(),
2028
+ corners: z9.enum(["square", "soft", "rounded", "pill"]).nullable(),
1944
2029
  // null = inherit from theme.corners
1945
- shadow: z8.object({
1946
- elevation: z8.enum(["none", "low", "medium"]),
1947
- softness: z8.enum(["soft", "crisp", "hard"]).nullable()
2030
+ shadow: z9.object({
2031
+ elevation: z9.enum(["none", "low", "medium"]),
2032
+ softness: z9.enum(["soft", "crisp", "hard"]).nullable()
1948
2033
  }).nullable(),
1949
- spacing: z8.enum(["compact", "cozy", "medium", "comfortable"]),
2034
+ spacing: z9.enum(["compact", "cozy", "medium", "comfortable"]),
1950
2035
  // padding inside inputs
1951
- fontSize: z8.enum(["sm", "base", "lg"])
2036
+ fontSize: z9.enum(["sm", "base", "lg"])
1952
2037
  }),
1953
2038
  // Label styling
1954
- label: z8.object({
1955
- textColorToken: z8.string(),
1956
- fontWeight: z8.enum(["regular", "medium", "semibold", "bold", "black"]),
1957
- fontSize: z8.enum(["2xs", "xs", "sm", "base"]),
1958
- textTransform: z8.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
1959
- letterSpacing: z8.enum(["normal", "wide", "wider", "widest"]).optional(),
1960
- opacity: z8.number().min(0.2).max(1).optional()
2039
+ label: z9.object({
2040
+ textColorToken: themeColorTokenSchema,
2041
+ fontWeight: z9.enum(["regular", "medium", "semibold", "bold", "black"]),
2042
+ fontSize: z9.enum(["2xs", "xs", "sm", "base"]),
2043
+ textTransform: z9.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
2044
+ letterSpacing: z9.enum(["normal", "wide", "wider", "widest"]).optional(),
2045
+ opacity: z9.number().min(0.2).max(1).optional()
1961
2046
  }),
1962
2047
  // Focus state
1963
- focus: z8.object({
1964
- ringColorToken: z8.string(),
1965
- ringWidth: z8.enum(["0", "1", "2", "3"]),
1966
- borderColorToken: z8.string().optional()
2048
+ focus: z9.object({
2049
+ ringColorToken: themeColorTokenSchema,
2050
+ ringWidth: z9.enum(["0", "1", "2", "3"]),
2051
+ borderColorToken: themeColorTokenSchema.optional()
1967
2052
  // Change border color on focus
1968
2053
  }),
1969
2054
  // Error state (for validation feedback)
1970
- error: z8.object({
1971
- borderColorToken: z8.string(),
1972
- textColorToken: z8.string()
2055
+ error: z9.object({
2056
+ borderColorToken: themeColorTokenSchema,
2057
+ textColorToken: themeColorTokenSchema
1973
2058
  }),
1974
2059
  // Disabled state
1975
- disabled: z8.object({
1976
- backgroundColorToken: z8.string(),
1977
- textColorToken: z8.string(),
1978
- opacity: z8.number().min(0.3).max(0.7)
2060
+ disabled: z9.object({
2061
+ backgroundColorToken: themeColorTokenSchema,
2062
+ textColorToken: themeColorTokenSchema,
2063
+ opacity: z9.number().min(0.3).max(0.7)
1979
2064
  })
1980
2065
  });
1981
2066
 
1982
2067
  // ../theme-core/src/gradients/types.ts
1983
- import { z as z9 } from "zod";
1984
- var gradientStopSchema = z9.object({
1985
- color: z9.string(),
1986
- // Theme color token name (e.g., 'primary-500')
1987
- position: z9.number().min(0).max(100)
2068
+ import { z as z10 } from "zod";
2069
+ var gradientStopSchema = z10.object({
2070
+ color: themeColorTokenSchema,
2071
+ position: z10.number().min(0).max(100)
1988
2072
  // Percentage 0-100
1989
2073
  });
1990
- var gradientConfigSchema = z9.object({
1991
- type: z9.enum(["linear", "radial"]),
1992
- angle: z9.number().min(0).max(360).optional(),
2074
+ var gradientConfigSchema = z10.object({
2075
+ type: z10.enum(["linear", "radial"]),
2076
+ angle: z10.number().min(0).max(360).optional(),
1993
2077
  // For linear gradients (degrees)
1994
- position: z9.string().optional(),
2078
+ position: z10.string().optional(),
1995
2079
  // For radial gradients ('center', 'top left', etc.)
1996
- stops: z9.array(gradientStopSchema).min(2)
2080
+ stops: z10.array(gradientStopSchema).min(2)
1997
2081
  });
1998
2082
 
1999
2083
  // ../theme-core/src/navigation/types.ts
2000
- import { z as z11 } from "zod";
2084
+ import { z as z12 } from "zod";
2001
2085
 
2002
2086
  // ../theme-core/src/interactive/baseSchema.ts
2003
- import { z as z10 } from "zod";
2004
- var interactiveTypographySchema = z10.object({
2087
+ import { z as z11 } from "zod";
2088
+ var interactiveTypographySchema = z11.object({
2005
2089
  /** Font family source */
2006
- typography: z10.enum(["body", "heading"]).default("body"),
2090
+ typography: z11.enum(["body", "heading"]).default("body"),
2007
2091
  /** Font weight */
2008
- fontWeight: z10.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
2092
+ fontWeight: z11.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
2009
2093
  /** Text transform */
2010
- textTransform: z10.enum(["none", "uppercase", "capitalize"]).default("none"),
2094
+ textTransform: z11.enum(["none", "uppercase", "capitalize"]).default("none"),
2011
2095
  /** Italic style */
2012
- italic: z10.boolean().default(false)
2096
+ italic: z11.boolean().default(false)
2013
2097
  });
2014
- var effectApplicationSchema2 = z10.object({
2098
+ var effectApplicationSchema2 = z11.object({
2015
2099
  /** Effect preset ID */
2016
- effectId: z10.string(),
2100
+ effectId: z11.string(),
2017
2101
  /** User-provided customization options */
2018
- options: z10.record(z10.string(), z10.any()).optional()
2102
+ options: z11.record(z11.string(), z11.any()).optional()
2019
2103
  });
2020
- var effectCompositionSchema = z10.object({
2104
+ var effectCompositionSchema = z11.object({
2021
2105
  /** Effects always applied */
2022
- base: z10.array(effectApplicationSchema2).optional(),
2106
+ base: z11.array(effectApplicationSchema2).optional(),
2023
2107
  /** Effects applied on hover */
2024
- hover: z10.array(effectApplicationSchema2).optional(),
2108
+ hover: z11.array(effectApplicationSchema2).optional(),
2025
2109
  /** Effects applied on active/pressed */
2026
- active: z10.array(effectApplicationSchema2).optional(),
2110
+ active: z11.array(effectApplicationSchema2).optional(),
2027
2111
  /** Effects applied on focus */
2028
- focus: z10.array(effectApplicationSchema2).optional()
2112
+ focus: z11.array(effectApplicationSchema2).optional()
2029
2113
  });
2030
2114
 
2031
2115
  // ../theme-core/src/navigation/types.ts
2032
- var navLinkPaddingSchema = z11.enum(["none", "compact", "default"]);
2033
- var navLinkPaddingXSchema = z11.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
2034
- var navLinkBorderRadiusSchema = z11.enum(["none", "sm", "md", "full"]);
2035
- var navLinkTextSizeSchema = z11.enum(["xs", "sm", "base", "lg"]);
2036
- var navLinkLetterSpacingSchema = z11.enum(["normal", "wide", "wider", "widest"]);
2037
- var navLinkStyleSchema = z11.object({
2116
+ var navLinkPaddingSchema = z12.enum(["none", "compact", "default"]);
2117
+ var navLinkPaddingXSchema = z12.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
2118
+ var navLinkBorderRadiusSchema = z12.enum(["none", "sm", "md", "full"]);
2119
+ var navLinkTextSizeSchema = z12.enum(["xs", "sm", "base", "lg"]);
2120
+ var navLinkLetterSpacingSchema = z12.enum(["normal", "wide", "wider", "widest"]);
2121
+ var navLinkStyleSchema = z12.object({
2038
2122
  /** Display name for the style */
2039
- name: z11.string().min(1).max(30).optional(),
2123
+ name: z12.string().min(1).max(30).optional(),
2040
2124
  /** Typography settings (inherited from interactive base) */
2041
2125
  ...interactiveTypographySchema.shape,
2042
2126
  /** Text color token */
2043
- colorToken: z11.string().default("text"),
2127
+ colorToken: themeColorTokenSchema.default("text"),
2044
2128
  /** Optional text size override */
2045
2129
  textSize: navLinkTextSizeSchema.optional(),
2046
2130
  /** Optional letter spacing override */
2047
2131
  letterSpacing: navLinkLetterSpacingSchema.optional(),
2048
2132
  /** Hover/active color token (for color-change effects) */
2049
- hoverColorToken: z11.string().nullable().optional(),
2133
+ hoverColorToken: themeColorTokenSchema.nullable().optional(),
2050
2134
  /** Padding preset */
2051
2135
  padding: navLinkPaddingSchema.default("compact"),
2052
2136
  /** Horizontal padding override (overrides horizontal component of padding preset) */
@@ -2058,7 +2142,7 @@ var navLinkStyleSchema = z11.object({
2058
2142
  });
2059
2143
 
2060
2144
  // ../theme-core/src/customCss/validation.ts
2061
- import { z as z12 } from "zod";
2145
+ import { z as z13 } from "zod";
2062
2146
  var FORBIDDEN_SELECTORS = [":root", "html", "body"];
2063
2147
  var UNIVERSAL_SELECTOR = "*";
2064
2148
  var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
@@ -2100,7 +2184,7 @@ function containsForbiddenSelector(selector) {
2100
2184
  }
2101
2185
  return false;
2102
2186
  }
2103
- var selectorSchema = z12.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
2187
+ var selectorSchema = z13.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
2104
2188
  (s) => !containsForbiddenSelector(s),
2105
2189
  { message: "Global selectors (:root, html, body, *) are not allowed" }
2106
2190
  );
@@ -2110,38 +2194,38 @@ function containsRemoteUrl(value) {
2110
2194
  function containsJavascriptUrl(value) {
2111
2195
  return JAVASCRIPT_URL_PATTERN.test(value);
2112
2196
  }
2113
- var declarationValueSchema = z12.string().max(500, "Declaration value too long (max 500 characters)").refine(
2197
+ var declarationValueSchema = z13.string().max(500, "Declaration value too long (max 500 characters)").refine(
2114
2198
  (v) => !containsRemoteUrl(v),
2115
2199
  { message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
2116
2200
  ).refine(
2117
2201
  (v) => !containsJavascriptUrl(v),
2118
2202
  { message: "javascript: URLs are not allowed" }
2119
2203
  );
2120
- var declarationsSchema = z12.record(
2121
- z12.string().min(1).max(100),
2204
+ var declarationsSchema = z13.record(
2205
+ z13.string().min(1).max(100),
2122
2206
  // property name
2123
2207
  declarationValueSchema
2124
2208
  // property value
2125
2209
  );
2126
- var customCssRuleSchema = z12.object({
2127
- id: z12.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
2210
+ var customCssRuleSchema = z13.object({
2211
+ id: z13.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
2128
2212
  selector: selectorSchema,
2129
2213
  declarations: declarationsSchema
2130
2214
  });
2131
2215
  var blockCustomCssRuleSchema = customCssRuleSchema.extend({
2132
- blockKind: z12.string().min(1, "Block kind is required").max(50, "Block kind too long")
2216
+ blockKind: z13.string().min(1, "Block kind is required").max(50, "Block kind too long")
2133
2217
  });
2134
- var customCssRulesSchema = z12.array(customCssRuleSchema).optional();
2135
- var blockCustomCssRulesSchema = z12.array(blockCustomCssRuleSchema).optional();
2218
+ var customCssRulesSchema = z13.array(customCssRuleSchema).optional();
2219
+ var blockCustomCssRulesSchema = z13.array(blockCustomCssRuleSchema).optional();
2136
2220
 
2137
2221
  // ../theme-core/src/customCss/atRuleValidation.ts
2138
- import { z as z13 } from "zod";
2222
+ import { z as z14 } from "zod";
2139
2223
  var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
2140
2224
  var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
2141
2225
  var BLOCKED_AT_RULES = ["@import", "@charset"];
2142
2226
  var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
2143
- var ruleIdSchema = z13.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
2144
- var nestedRuleSchema = z13.object({
2227
+ var ruleIdSchema = z14.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
2228
+ var nestedRuleSchema = z14.object({
2145
2229
  selector: selectorSchema,
2146
2230
  declarations: declarationsSchema
2147
2231
  });
@@ -2153,206 +2237,208 @@ function isValidKeyframeOffset(offset) {
2153
2237
  const value = parseInt(match[1], 10);
2154
2238
  return value >= 0 && value <= 100;
2155
2239
  }
2156
- var keyframeOffsetSchema = z13.string().transform((offset) => offset.trim()).refine(
2240
+ var keyframeOffsetSchema = z14.string().transform((offset) => offset.trim()).refine(
2157
2241
  (offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
2158
2242
  { message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
2159
2243
  ).refine(
2160
2244
  isValidKeyframeOffset,
2161
2245
  { message: "Keyframe offset must be between 0% and 100%" }
2162
2246
  );
2163
- var animationNameSchema = z13.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
2247
+ var animationNameSchema = z14.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
2164
2248
  (name) => ANIMATION_NAME_PATTERN.test(name),
2165
2249
  { message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
2166
2250
  );
2167
- var keyframeSchema = z13.object({
2251
+ var keyframeSchema = z14.object({
2168
2252
  offset: keyframeOffsetSchema,
2169
2253
  declarations: declarationsSchema
2170
2254
  });
2171
- var keyframesAtRuleSchema = z13.object({
2255
+ var keyframesAtRuleSchema = z14.object({
2172
2256
  id: ruleIdSchema,
2173
- type: z13.literal("keyframes"),
2257
+ type: z14.literal("keyframes"),
2174
2258
  name: animationNameSchema,
2175
- frames: z13.array(keyframeSchema).min(1, "At least one keyframe is required")
2259
+ frames: z14.array(keyframeSchema).min(1, "At least one keyframe is required")
2176
2260
  });
2177
- var fontFaceDeclarationsSchema = z13.record(z13.string().min(1).max(100), declarationValueSchema).refine(
2261
+ var fontFaceDeclarationsSchema = z14.record(z14.string().min(1).max(100), declarationValueSchema).refine(
2178
2262
  (decls) => "fontFamily" in decls || "font-family" in decls,
2179
2263
  { message: "font-family is required in @font-face" }
2180
2264
  );
2181
- var fontFaceAtRuleSchema = z13.object({
2265
+ var fontFaceAtRuleSchema = z14.object({
2182
2266
  id: ruleIdSchema,
2183
- type: z13.literal("font-face"),
2267
+ type: z14.literal("font-face"),
2184
2268
  declarations: fontFaceDeclarationsSchema
2185
2269
  });
2186
- var mediaQuerySchema = z13.string().min(1, "Media query is required").max(200, "Media query too long");
2187
- var mediaAtRuleSchema = z13.object({
2270
+ var mediaQuerySchema = z14.string().min(1, "Media query is required").max(200, "Media query too long");
2271
+ var mediaAtRuleSchema = z14.object({
2188
2272
  id: ruleIdSchema,
2189
- type: z13.literal("media"),
2273
+ type: z14.literal("media"),
2190
2274
  query: mediaQuerySchema,
2191
- rules: z13.array(nestedRuleSchema).min(1, "At least one rule is required")
2275
+ rules: z14.array(nestedRuleSchema).min(1, "At least one rule is required")
2192
2276
  });
2193
- var supportsConditionSchema = z13.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
2194
- var supportsAtRuleSchema = z13.object({
2277
+ var supportsConditionSchema = z14.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
2278
+ var supportsAtRuleSchema = z14.object({
2195
2279
  id: ruleIdSchema,
2196
- type: z13.literal("supports"),
2280
+ type: z14.literal("supports"),
2197
2281
  condition: supportsConditionSchema,
2198
- rules: z13.array(nestedRuleSchema).min(1, "At least one rule is required")
2282
+ rules: z14.array(nestedRuleSchema).min(1, "At least one rule is required")
2199
2283
  });
2200
2284
  function containsBlockedAtRule(css) {
2201
2285
  return BLOCKED_AT_RULE_PATTERN.test(css);
2202
2286
  }
2203
- var rawCssSchema = z13.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
2287
+ var rawCssSchema = z14.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
2204
2288
  (css) => css.trim().startsWith("@"),
2205
2289
  { message: "Raw at-rule must start with @" }
2206
2290
  ).refine(
2207
2291
  (css) => !containsBlockedAtRule(css),
2208
2292
  { message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
2209
2293
  );
2210
- var rawAtRuleSchema = z13.object({
2294
+ var rawAtRuleSchema = z14.object({
2211
2295
  id: ruleIdSchema,
2212
- type: z13.literal("raw"),
2296
+ type: z14.literal("raw"),
2213
2297
  css: rawCssSchema
2214
2298
  });
2215
- var customCssAtRuleSchema = z13.discriminatedUnion("type", [
2299
+ var customCssAtRuleSchema = z14.discriminatedUnion("type", [
2216
2300
  keyframesAtRuleSchema,
2217
2301
  fontFaceAtRuleSchema,
2218
2302
  mediaAtRuleSchema,
2219
2303
  supportsAtRuleSchema,
2220
2304
  rawAtRuleSchema
2221
2305
  ]);
2222
- var customCssAtRulesSchema = z13.array(customCssAtRuleSchema).optional();
2306
+ var customCssAtRulesSchema = z14.array(customCssAtRuleSchema).optional();
2223
2307
 
2224
2308
  // ../theme-core/src/shared/componentStyles.ts
2225
- import { z as z14 } from "zod";
2226
- var componentBorderSchema = z14.object({
2227
- width: z14.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
2228
- style: z14.enum(["solid", "dashed"]).default("solid"),
2229
- colorToken: z14.string().optional()
2309
+ import { z as z15 } from "zod";
2310
+ var componentBorderSchema = z15.object({
2311
+ width: z15.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
2312
+ style: z15.enum(["solid", "dashed"]).default("solid"),
2313
+ colorToken: themeColorTokenSchema.optional()
2230
2314
  // defaults to "border" if not set
2231
2315
  });
2232
- var componentShadowSchema = z14.object({
2233
- elevation: z14.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
2316
+ var componentShadowSchema = z15.object({
2317
+ elevation: z15.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
2234
2318
  });
2235
2319
 
2320
+ // ../theme-core/src/utils/tokenOrColor.ts
2321
+ import { z as z16 } from "zod";
2322
+ var tokenOrCssColorValueSchema = z16.string();
2323
+
2236
2324
  // ../theme-core/src/schema.ts
2237
- var axesSchema = z15.object({
2238
- tone: z15.enum(["minimal", "classic", "bold"]),
2239
- energy: z15.enum(["calm", "vibrant"]),
2240
- density: z15.enum(["airy", "regular", "compact"]),
2241
- mediaBias: z15.enum(["text", "media", "mixed"]),
2242
- conversionBias: z15.enum(["low", "med", "high"]),
2243
- motion: z15.enum(["subtle", "standard", "expressive"])
2325
+ var axesSchema = z17.object({
2326
+ tone: z17.enum(["minimal", "classic", "bold"]),
2327
+ energy: z17.enum(["calm", "vibrant"]),
2328
+ density: z17.enum(["airy", "regular", "compact"]),
2329
+ mediaBias: z17.enum(["text", "media", "mixed"]),
2330
+ conversionBias: z17.enum(["low", "med", "high"]),
2331
+ motion: z17.enum(["subtle", "standard", "expressive"])
2244
2332
  });
2245
- var colourHexString = z15.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
2246
- var paletteColorSchema = z15.object({
2247
- name: z15.string().min(1),
2333
+ var colourHexString = z17.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
2334
+ var paletteColorSchema = z17.object({
2335
+ name: z17.string().min(1),
2248
2336
  hex: colourHexString
2249
2337
  });
2250
- var paletteMetaSchema = z15.object({
2251
- mode: z15.enum(["light", "dark"])
2338
+ var paletteMetaSchema = z17.object({
2339
+ mode: z17.enum(["light", "dark"])
2252
2340
  });
2253
- var paletteSchema = z15.object({
2254
- colors: z15.array(paletteColorSchema),
2341
+ var paletteSchema = z17.object({
2342
+ colors: z17.array(paletteColorSchema),
2255
2343
  meta: paletteMetaSchema
2256
2344
  });
2257
- var typographyStyleSchema = z15.object({
2258
- family: z15.string().min(1),
2259
- weight: z15.enum(["light", "regular", "medium", "semibold", "bold"]),
2260
- letterSpacing: z15.enum(["tight", "normal", "loose"]),
2261
- lineHeight: z15.enum(["normal", "relaxed", "loose"])
2345
+ var typographyStyleSchema = z17.object({
2346
+ family: z17.string().min(1),
2347
+ weight: z17.enum(["light", "regular", "medium", "semibold", "bold"]),
2348
+ letterSpacing: z17.enum(["tight", "normal", "loose"]),
2349
+ lineHeight: z17.enum(["normal", "relaxed", "loose"])
2262
2350
  });
2263
2351
  var bodyTypographyStyleSchema = typographyStyleSchema.extend({
2264
- size: z15.enum(["md", "lg", "xl"])
2352
+ size: z17.enum(["md", "lg", "xl"])
2265
2353
  });
2266
- var headingSizeSchema = z15.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
2267
- var headingTypographyOverridesSchema = z15.object({
2268
- weight: z15.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
2269
- letterSpacing: z15.enum(["tight", "normal", "loose"]).nullable().optional(),
2354
+ var headingSizeSchema = z17.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
2355
+ var headingTypographyOverridesSchema = z17.object({
2356
+ weight: z17.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
2357
+ letterSpacing: z17.enum(["tight", "normal", "loose"]).nullable().optional(),
2270
2358
  size: headingSizeSchema.nullable().optional(),
2271
- lineHeight: z15.enum(["normal", "relaxed", "loose"]).nullable().optional(),
2272
- italic: z15.boolean().nullable().optional(),
2273
- colorToken: z15.string().min(1).nullable().optional()
2274
- // Palette token name for heading color
2359
+ lineHeight: z17.enum(["normal", "relaxed", "loose"]).nullable().optional(),
2360
+ italic: z17.boolean().nullable().optional(),
2361
+ colorToken: themeColorTokenSchema.nullable().optional()
2275
2362
  });
2276
2363
  var headingTypographyStyleSchema = typographyStyleSchema.extend({
2277
- case: z15.enum(["uppercase", "normal", "smallCaps"]).nullable(),
2278
- italic: z15.boolean().nullable(),
2279
- colorToken: z15.string().min(1).nullable().optional()
2280
- // Palette token name for heading color
2364
+ case: z17.enum(["uppercase", "normal", "smallCaps"]).nullable(),
2365
+ italic: z17.boolean().nullable(),
2366
+ colorToken: themeColorTokenSchema.nullable().optional()
2281
2367
  });
2282
- var proseLinkUnderlineStyleSchema = z15.enum(["solid", "dotted", "dashed"]);
2283
- var proseLinkUnderlineThicknessSchema = z15.enum(["auto", "fromFont", "thin", "medium", "thick"]);
2284
- var proseLinkUnderlineOffsetSchema = z15.enum(["auto", "tight", "normal", "loose"]);
2285
- var proseLinkStyleSchema = z15.object({
2286
- colorToken: z15.string().min(1).optional(),
2287
- hoverColorToken: z15.string().min(1).optional(),
2288
- underline: z15.boolean().optional(),
2289
- decorationColorToken: z15.string().min(1).optional(),
2290
- hoverDecorationColorToken: z15.string().min(1).optional(),
2368
+ var proseLinkUnderlineStyleSchema = z17.enum(["solid", "dotted", "dashed"]);
2369
+ var proseLinkUnderlineThicknessSchema = z17.enum(["auto", "fromFont", "thin", "medium", "thick"]);
2370
+ var proseLinkUnderlineOffsetSchema = z17.enum(["auto", "tight", "normal", "loose"]);
2371
+ var proseLinkStyleSchema = z17.object({
2372
+ colorToken: themeColorTokenSchema.optional(),
2373
+ hoverColorToken: themeColorTokenSchema.optional(),
2374
+ underline: z17.boolean().optional(),
2375
+ decorationColorToken: themeColorTokenSchema.optional(),
2376
+ hoverDecorationColorToken: themeColorTokenSchema.optional(),
2291
2377
  underlineStyle: proseLinkUnderlineStyleSchema.optional(),
2292
2378
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
2293
2379
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
2294
2380
  });
2295
- var semanticSpacingSchema = z15.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
2296
- var boxRoundedSchema = z15.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
2297
- var boxBackgroundOverlaySchema = z15.object({
2298
- type: z15.enum(["none", "color", "gradient"]).nullable().optional(),
2299
- color: z15.string().nullable().optional(),
2300
- gradient: z15.string().nullable().optional(),
2301
- opacity: z15.number().min(0).max(1).nullable().optional()
2381
+ var semanticSpacingSchema = z17.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
2382
+ var boxRoundedSchema = z17.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
2383
+ var boxBackgroundOverlaySchema = z17.object({
2384
+ type: z17.enum(["none", "color", "gradient"]).nullable().optional(),
2385
+ color: tokenOrCssColorValueSchema.nullable().optional(),
2386
+ gradient: z17.string().nullable().optional(),
2387
+ opacity: z17.number().min(0).max(1).nullable().optional()
2302
2388
  });
2303
- var boxBackgroundSchema = z15.object({
2304
- type: z15.enum(["color", "gradient", "image"]).optional(),
2305
- color: z15.string().nullable().optional(),
2306
- gradient: z15.string().nullable().optional(),
2389
+ var boxBackgroundSchema = z17.object({
2390
+ type: z17.enum(["color", "gradient", "image"]).optional(),
2391
+ color: tokenOrCssColorValueSchema.nullable().optional(),
2392
+ gradient: z17.string().nullable().optional(),
2307
2393
  image: mediaSchema.nullable().optional(),
2308
- objectFit: z15.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
2309
- scale: z15.string().nullable().optional(),
2310
- position: z15.string().nullable().optional(),
2311
- opacity: z15.number().min(0).max(1).nullable().optional(),
2312
- motion: z15.enum(["static", "fixed-frame"]).nullable().optional(),
2394
+ objectFit: z17.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
2395
+ scale: z17.string().nullable().optional(),
2396
+ position: z17.string().nullable().optional(),
2397
+ opacity: z17.number().min(0).max(1).nullable().optional(),
2398
+ motion: z17.enum(["static", "fixed-frame"]).nullable().optional(),
2313
2399
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
2314
- textColor: z15.string().nullable().optional(),
2315
- headingColor: z15.string().nullable().optional()
2400
+ textColor: tokenOrCssColorValueSchema.nullable().optional(),
2401
+ headingColor: tokenOrCssColorValueSchema.nullable().optional()
2316
2402
  });
2317
- var sectionStylesOverrideSchema = z15.object({
2403
+ var sectionStylesOverrideSchema = z17.object({
2318
2404
  background: boxBackgroundSchema.nullable().optional(),
2319
2405
  spacing: semanticSpacingSchema.nullable().optional(),
2320
- minHeight: z15.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
2321
- tileTreatment: z15.enum(tileTreatmentValues).nullable().optional(),
2322
- eyebrowTreatment: z15.enum(eyebrowTreatmentValues).nullable().optional()
2406
+ minHeight: z17.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
2407
+ tileTreatment: z17.enum(tileTreatmentValues).nullable().optional(),
2408
+ eyebrowTreatment: z17.enum(eyebrowTreatmentValues).nullable().optional()
2323
2409
  });
2324
- var containerStylesOverrideSchema = z15.object({
2410
+ var containerStylesOverrideSchema = z17.object({
2325
2411
  background: boxBackgroundSchema.nullable().optional(),
2326
2412
  spacing: semanticSpacingSchema.nullable().optional(),
2327
- raised: z15.boolean().nullable().optional(),
2413
+ raised: z17.boolean().nullable().optional(),
2328
2414
  rounded: boxRoundedSchema.nullable().optional(),
2329
- fullWidth: z15.boolean().nullable().optional()
2415
+ fullWidth: z17.boolean().nullable().optional()
2330
2416
  });
2331
- var cardBorderOverrideSchema = z15.object({
2332
- enabled: z15.boolean().nullable().optional(),
2333
- width: z15.enum(["none", "1", "2", "3"]).nullable().optional(),
2334
- colorToken: z15.string().nullable().optional()
2417
+ var cardBorderOverrideSchema = z17.object({
2418
+ enabled: z17.boolean().nullable().optional(),
2419
+ width: z17.enum(["none", "1", "2", "3"]).nullable().optional(),
2420
+ colorToken: themeColorTokenSchema.nullable().optional()
2335
2421
  });
2336
- var cardStylesOverrideSchema = z15.object({
2422
+ var cardStylesOverrideSchema = z17.object({
2337
2423
  background: boxBackgroundSchema.nullable().optional(),
2338
2424
  border: cardBorderOverrideSchema.nullable().optional(),
2339
2425
  spacing: semanticSpacingSchema.nullable().optional(),
2340
- raised: z15.boolean().nullable().optional(),
2426
+ raised: z17.boolean().nullable().optional(),
2341
2427
  rounded: boxRoundedSchema.nullable().optional(),
2342
- treatment: z15.enum(["accent-quote"]).nullable().optional()
2428
+ treatment: z17.enum(["accent-quote"]).nullable().optional()
2343
2429
  });
2344
- var blockStyleOverridesSchema = z15.object({
2430
+ var blockStyleOverridesSchema = z17.object({
2345
2431
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
2346
2432
  containerStyles: containerStylesOverrideSchema.nullable().optional(),
2347
2433
  cardStyles: cardStylesOverrideSchema.nullable().optional()
2348
2434
  });
2349
- var blockThemeOverrideSchema = z15.object({
2350
- typography: z15.object({
2435
+ var blockThemeOverrideSchema = z17.object({
2436
+ typography: z17.object({
2351
2437
  proseLinkStyle: proseLinkStyleSchema.optional()
2352
2438
  }).optional(),
2353
2439
  styles: blockStyleOverridesSchema.optional()
2354
2440
  });
2355
- var typographyScaleSchema = z15.enum([
2441
+ var typographyScaleSchema = z17.enum([
2356
2442
  // New intuitive names
2357
2443
  "compact",
2358
2444
  // ratio 1.2 (was minorThird)
@@ -2365,9 +2451,9 @@ var typographyScaleSchema = z15.enum([
2365
2451
  "majorThird",
2366
2452
  "perfectFourth"
2367
2453
  ]);
2368
- var typographySchema = z15.object({
2454
+ var typographySchema = z17.object({
2369
2455
  body: bodyTypographyStyleSchema,
2370
- headings: z15.object({
2456
+ headings: z17.object({
2371
2457
  default: headingTypographyStyleSchema,
2372
2458
  h1: headingTypographyOverridesSchema,
2373
2459
  h2: headingTypographyOverridesSchema,
@@ -2380,122 +2466,115 @@ var typographySchema = z15.object({
2380
2466
  scale: typographyScaleSchema,
2381
2467
  proseLinkStyle: proseLinkStyleSchema.optional()
2382
2468
  });
2383
- var spaceSchema = z15.enum(["comfortable", "standard", "dense"]);
2384
- var corners = z15.enum(["square", "soft", "rounded", "pill"]);
2385
- var shadow = z15.object({
2386
- elevation: z15.enum(["none", "low", "medium", "high"]),
2387
- softness: z15.enum(["crisp", "soft", "hard"]).nullable(),
2388
- position: z15.enum(["bottom", "bottom-right"]).default("bottom")
2469
+ var spaceSchema = z17.enum(["comfortable", "standard", "dense"]);
2470
+ var corners = z17.enum(["square", "soft", "rounded", "pill"]);
2471
+ var shadow = z17.object({
2472
+ elevation: z17.enum(["none", "low", "medium", "high"]),
2473
+ softness: z17.enum(["crisp", "soft", "hard"]).nullable(),
2474
+ position: z17.enum(["bottom", "bottom-right"]).default("bottom")
2389
2475
  });
2390
- var border = z15.object({
2391
- width: z15.enum(["none", "hairline", "thin", "thick"]),
2392
- style: z15.enum(["solid", "dashed"])
2476
+ var border = z17.object({
2477
+ width: z17.enum(["none", "hairline", "thin", "thick"]),
2478
+ style: z17.enum(["solid", "dashed"])
2393
2479
  });
2394
- var motion = z15.object({
2395
- level: z15.enum(["off", "low", "medium", "high"]),
2396
- easing: z15.enum(["standard", "snappy", "gentle"]).nullable()
2480
+ var motion = z17.object({
2481
+ level: z17.enum(["off", "low", "medium", "high"]),
2482
+ easing: z17.enum(["standard", "snappy", "gentle"]).nullable()
2397
2483
  });
2398
- var buttonStyle = z15.object({
2484
+ var buttonStyle = z17.object({
2399
2485
  shape: corners
2400
2486
  // Used for --radius-control CSS variable
2401
2487
  });
2402
- var cardStyle = z15.object({
2403
- elevation: z15.enum(["none", "low", "medium", "high"]),
2404
- border: z15.enum(["none", "subtle", "defined"]),
2488
+ var cardStyle = z17.object({
2489
+ elevation: z17.enum(["none", "low", "medium", "high"]),
2490
+ border: z17.enum(["none", "subtle", "defined"]),
2405
2491
  shape: corners,
2406
- headerStyle: z15.enum(["plain", "accentBar", "subtleBg"]).nullable(),
2407
- mediaTreatment: z15.enum(["square", "rounded", "bleed"]).nullable()
2492
+ headerStyle: z17.enum(["plain", "accentBar", "subtleBg"]).nullable(),
2493
+ mediaTreatment: z17.enum(["square", "rounded", "bleed"]).nullable()
2408
2494
  });
2409
- var inputStyle = z15.object({
2495
+ var inputStyle = z17.object({
2410
2496
  shape: corners,
2411
- border: z15.enum(["subtle", "defined", "underline"]),
2412
- focus: z15.enum(["glow", "ring", "underline"]),
2413
- label: z15.enum(["inside", "above"])
2497
+ border: z17.enum(["subtle", "defined", "underline"]),
2498
+ focus: z17.enum(["glow", "ring", "underline"]),
2499
+ label: z17.enum(["inside", "above"])
2414
2500
  });
2415
- var headerVariant = z15.enum(["classic", "centered", "transparent", "floating", "editorial"]);
2416
- var headerPositioning = z15.enum(["static", "sticky", "fixed"]);
2417
- var headerNavStyle = z15.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
2418
- var navFontWeight = z15.enum(["regular", "medium", "semibold", "bold"]);
2419
- var headerMaxWidth = z15.enum(["container", "full"]);
2420
- var headerContainerSchema = z15.object({
2421
- rounded: z15.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
2422
- border: z15.boolean().default(true),
2423
- shadow: z15.boolean().default(true),
2424
- padding: z15.enum(["sm", "md", "lg"]).default("md"),
2425
- tint: z15.string().nullable().optional(),
2426
- opacity: z15.number().min(0).max(1).default(0.12)
2501
+ var headerVariant = z17.enum(["classic", "centered", "transparent", "floating", "editorial"]);
2502
+ var headerPositioning = z17.enum(["static", "sticky", "fixed"]);
2503
+ var headerNavStyle = z17.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
2504
+ var navFontWeight = z17.enum(["regular", "medium", "semibold", "bold"]);
2505
+ var headerMaxWidth = z17.enum(["container", "full"]);
2506
+ var headerContainerSchema = z17.object({
2507
+ rounded: z17.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
2508
+ border: z17.boolean().default(true),
2509
+ shadow: z17.boolean().default(true),
2510
+ padding: z17.enum(["sm", "md", "lg"]).default("md"),
2511
+ tint: z17.string().nullable().optional(),
2512
+ opacity: z17.number().min(0).max(1).default(0.12)
2427
2513
  }).optional();
2428
2514
  var headerBorderSchema = componentBorderSchema.extend({
2429
- position: z15.enum(["bottom", "top", "both", "none"]).default("bottom")
2515
+ position: z17.enum(["bottom", "top", "both", "none"]).default("bottom")
2430
2516
  }).optional();
2431
- var logoStyleSchema = z15.object({
2432
- fontFamily: z15.enum(["heading", "body"]).default("heading"),
2433
- letterSpacing: z15.enum(["normal", "wide", "wider", "widest"]).default("normal"),
2434
- gradient: z15.boolean().default(false)
2517
+ var logoStyleSchema = z17.object({
2518
+ fontFamily: z17.enum(["heading", "body"]).default("heading"),
2519
+ letterSpacing: z17.enum(["normal", "wide", "wider", "widest"]).default("normal"),
2520
+ gradient: z17.boolean().default(false)
2435
2521
  }).optional();
2436
- var headerLogoTextSchema = z15.object({
2437
- mobileWrapLines: z15.union([z15.literal(1), z15.literal(2)]).optional(),
2438
- mobileMaxWidth: z15.enum(["xs", "sm", "md"]).optional(),
2439
- hideOnShrink: z15.boolean().optional()
2522
+ var headerLogoTextSchema = z17.object({
2523
+ mobileWrapLines: z17.union([z17.literal(1), z17.literal(2)]).optional(),
2524
+ mobileMaxWidth: z17.enum(["xs", "sm", "md"]).optional(),
2525
+ hideOnShrink: z17.boolean().optional()
2440
2526
  }).optional();
2441
- var navEffectsSchema = z15.object({
2442
- underlineGradient: z15.boolean().default(false),
2443
- glow: z15.boolean().default(false),
2444
- glowColor: z15.string().optional(),
2445
- neumorphic: z15.boolean().default(false)
2527
+ var navEffectsSchema = z17.object({
2528
+ underlineGradient: z17.boolean().default(false),
2529
+ glow: z17.boolean().default(false),
2530
+ glowColor: z17.string().optional(),
2531
+ neumorphic: z17.boolean().default(false)
2446
2532
  }).optional();
2447
- var dropdownStyleSchema = z15.object({
2533
+ var dropdownStyleSchema = z17.object({
2448
2534
  // Container styling
2449
- background: z15.string().default("surface"),
2450
- // color token
2451
- textColor: z15.string().default("text"),
2452
- // color token
2453
- borderColor: z15.string().nullable().default("border"),
2454
- // null = no border
2455
- shadow: z15.enum(["none", "sm", "md", "lg"]).default("md"),
2456
- borderRadius: z15.enum(["none", "sm", "md", "lg"]).default("md"),
2535
+ background: themeColorTokenSchema.default("surface"),
2536
+ textColor: themeColorTokenSchema.default("text"),
2537
+ borderColor: themeColorTokenSchema.nullable().default("border"),
2538
+ shadow: z17.enum(["none", "sm", "md", "lg"]).default("md"),
2539
+ borderRadius: z17.enum(["none", "sm", "md", "lg"]).default("md"),
2457
2540
  // Link hover states (explicit control)
2458
- hoverBackground: z15.string().nullable().optional(),
2459
- // color token, null = transparent
2460
- hoverTextColor: z15.string().nullable().optional(),
2461
- // color token, null = inherit
2541
+ hoverBackground: themeColorTokenSchema.nullable().optional(),
2542
+ hoverTextColor: themeColorTokenSchema.nullable().optional(),
2462
2543
  // Typography
2463
- textTransform: z15.enum(["none", "uppercase", "capitalize"]).default("none"),
2464
- letterSpacing: z15.enum(["normal", "wide", "wider"]).default("normal"),
2465
- fontWeight: z15.enum(["regular", "medium", "semibold", "bold"]).optional(),
2544
+ textTransform: z17.enum(["none", "uppercase", "capitalize"]).default("none"),
2545
+ letterSpacing: z17.enum(["normal", "wide", "wider"]).default("normal"),
2546
+ fontWeight: z17.enum(["regular", "medium", "semibold", "bold"]).optional(),
2466
2547
  // optional = inherit from navWeight
2467
- textSize: z15.enum(["xs", "sm", "base", "lg"]).optional()
2548
+ textSize: z17.enum(["xs", "sm", "base", "lg"]).optional()
2468
2549
  // optional = no override (browser default)
2469
2550
  }).optional();
2470
- var headerCtaGapSchema = z15.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
2471
- var headerCtaTreatmentSchema = z15.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
2472
- var navContainerSchema = z15.object({
2473
- type: z15.enum(["none", "pill", "glass"]).default("none"),
2474
- tint: z15.string().nullable().optional(),
2475
- opacity: z15.number().min(0).max(1).default(0.15)
2551
+ var headerCtaGapSchema = z17.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
2552
+ var headerCtaTreatmentSchema = z17.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
2553
+ var navContainerSchema = z17.object({
2554
+ type: z17.enum(["none", "pill", "glass"]).default("none"),
2555
+ tint: z17.string().nullable().optional(),
2556
+ opacity: z17.number().min(0).max(1).default(0.15)
2476
2557
  }).default({ type: "none", tint: null, opacity: 0.15 });
2477
- var headerBackgroundSchema = z15.object({
2478
- type: z15.enum(["color", "gradient", "image"]),
2479
- color: z15.string().nullable().optional(),
2558
+ var headerBackgroundSchema = z17.object({
2559
+ type: z17.enum(["color", "gradient", "image"]),
2560
+ color: tokenOrCssColorValueSchema.nullable().optional(),
2480
2561
  gradient: gradientConfigSchema.nullable().optional(),
2481
2562
  image: mediaSchema.nullable().optional(),
2482
- textColor: z15.string().nullable().optional()
2563
+ textColor: tokenOrCssColorValueSchema.nullable().optional()
2483
2564
  });
2484
- var headerSchema = z15.object({
2565
+ var headerSchema = z17.object({
2485
2566
  variant: headerVariant,
2486
2567
  positioning: headerPositioning,
2487
- shrinkOnScroll: z15.boolean(),
2568
+ shrinkOnScroll: z17.boolean(),
2488
2569
  maxWidth: headerMaxWidth,
2489
2570
  logoOverride: mediaSchema.nullable().optional(),
2490
2571
  background: headerBackgroundSchema.default({
2491
2572
  type: "color",
2492
2573
  color: "surface"
2493
2574
  }),
2494
- textColor: z15.string().nullable().optional(),
2495
- // Site title and general header text
2575
+ textColor: themeColorTokenSchema.nullable().optional(),
2496
2576
  navStyle: headerNavStyle,
2497
- navColor: z15.string().nullable().optional(),
2498
- // Nav links (inherits textColor if not set)
2577
+ navColor: themeColorTokenSchema.nullable().optional(),
2499
2578
  navWeight: navFontWeight.default("medium"),
2500
2579
  // New fields for header system enhancement
2501
2580
  container: headerContainerSchema,
@@ -2516,54 +2595,54 @@ var headerSchema = z15.object({
2516
2595
  // Optional theme-level CTA variant for header/nav CTA buttons.
2517
2596
  // Internal runtime bridge for the block renderer; prefer ctaTreatment in
2518
2597
  // authored Theme V2 concepts.
2519
- ctaVariant: z15.string().min(1).optional(),
2598
+ ctaVariant: z17.string().min(1).optional(),
2520
2599
  // Dropdown menu styling (nav dropdowns and mobile drawer)
2521
2600
  dropdownStyle: dropdownStyleSchema
2522
2601
  });
2523
- var footerVariant = z15.enum(["simple", "columns", "split"]);
2524
- var footerMaxWidth = z15.enum(["container", "full"]);
2525
- var footerMode = z15.enum(["default", "blocks", "default+blocks", "none"]);
2526
- var footerNavLayoutMode = z15.enum(["stack", "inline", "inline-wrap"]);
2527
- var footerNavLayoutAlign = z15.enum(["start", "center", "end", "space-between"]);
2528
- var footerSpacing = z15.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
2529
- var footerLogoPlacement = z15.enum(["left", "right", "above", "below"]);
2530
- var footerLogoSize = z15.enum(["sm", "md", "lg", "xl"]);
2531
- var footerLogoMaxHeight = z15.enum(["sm", "md", "lg", "xl"]);
2532
- var footerBottomTextLinkStyleSchema = z15.object({
2533
- colorToken: z15.string().optional(),
2534
- hoverColorToken: z15.string().nullable().optional(),
2535
- decorationColorToken: z15.string().nullable().optional(),
2536
- underline: z15.boolean().optional()
2602
+ var footerVariant = z17.enum(["simple", "columns", "split"]);
2603
+ var footerMaxWidth = z17.enum(["container", "full"]);
2604
+ var footerMode = z17.enum(["default", "blocks", "default+blocks", "none"]);
2605
+ var footerNavLayoutMode = z17.enum(["stack", "inline", "inline-wrap"]);
2606
+ var footerNavLayoutAlign = z17.enum(["start", "center", "end", "space-between"]);
2607
+ var footerSpacing = z17.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
2608
+ var footerLogoPlacement = z17.enum(["left", "right", "above", "below"]);
2609
+ var footerLogoSize = z17.enum(["sm", "md", "lg", "xl"]);
2610
+ var footerLogoMaxHeight = z17.enum(["sm", "md", "lg", "xl"]);
2611
+ var footerBottomTextLinkStyleSchema = z17.object({
2612
+ colorToken: themeColorTokenSchema.optional(),
2613
+ hoverColorToken: themeColorTokenSchema.nullable().optional(),
2614
+ decorationColorToken: themeColorTokenSchema.nullable().optional(),
2615
+ underline: z17.boolean().optional()
2537
2616
  });
2538
- var footerBottomBarSchema = z15.object({
2539
- enabled: z15.boolean().optional(),
2540
- fullBleed: z15.boolean().optional(),
2617
+ var footerBottomBarSchema = z17.object({
2618
+ enabled: z17.boolean().optional(),
2619
+ fullBleed: z17.boolean().optional(),
2541
2620
  background: headerBackgroundSchema.optional(),
2542
- textColor: z15.string().nullable().optional(),
2543
- textAlign: z15.enum(["left", "center", "right"]).optional(),
2621
+ textColor: themeColorTokenSchema.nullable().optional(),
2622
+ textAlign: z17.enum(["left", "center", "right"]).optional(),
2544
2623
  paddingY: footerSpacing.optional(),
2545
2624
  paddingX: footerSpacing.optional(),
2546
- borderTop: z15.object({
2547
- colorToken: z15.string().nullable().optional(),
2548
- width: z15.enum(["none", "thin", "medium", "thick"]).optional()
2625
+ borderTop: z17.object({
2626
+ colorToken: themeColorTokenSchema.nullable().optional(),
2627
+ width: z17.enum(["none", "thin", "medium", "thick"]).optional()
2549
2628
  }).optional()
2550
2629
  });
2551
- var footerNavLayoutSchema = z15.object({
2630
+ var footerNavLayoutSchema = z17.object({
2552
2631
  layout: footerNavLayoutMode.optional(),
2553
2632
  align: footerNavLayoutAlign.optional(),
2554
2633
  gapX: footerSpacing.optional(),
2555
2634
  gapY: footerSpacing.optional(),
2556
- columns: z15.number().int().min(1).max(6).optional()
2635
+ columns: z17.number().int().min(1).max(6).optional()
2557
2636
  });
2558
- var footerLogoSchema = z15.object({
2559
- showLogo: z15.boolean().default(true),
2560
- showLogoText: z15.boolean().optional(),
2637
+ var footerLogoSchema = z17.object({
2638
+ showLogo: z17.boolean().default(true),
2639
+ showLogoText: z17.boolean().optional(),
2561
2640
  placement: footerLogoPlacement.optional(),
2562
2641
  size: footerLogoSize.optional(),
2563
2642
  maxHeight: footerLogoMaxHeight.optional(),
2564
- align: z15.enum(["start", "center", "end"]).optional()
2643
+ align: z17.enum(["start", "center", "end"]).optional()
2565
2644
  });
2566
- var footerSchema = z15.object({
2645
+ var footerSchema = z17.object({
2567
2646
  /**
2568
2647
  * SDK-only footer rendering mode.
2569
2648
  *
@@ -2572,14 +2651,14 @@ var footerSchema = z15.object({
2572
2651
  mode: footerMode.optional(),
2573
2652
  variant: footerVariant,
2574
2653
  maxWidth: footerMaxWidth,
2575
- showLogoText: z15.boolean().optional(),
2654
+ showLogoText: z17.boolean().optional(),
2576
2655
  background: headerBackgroundSchema.default({
2577
2656
  type: "color",
2578
2657
  color: "surface"
2579
2658
  }),
2580
2659
  // Footer nav styling (independent from header)
2581
2660
  navStyle: headerNavStyle.default("minimal"),
2582
- navColor: z15.string().nullable().optional(),
2661
+ navColor: themeColorTokenSchema.nullable().optional(),
2583
2662
  navWeight: navFontWeight.default("medium"),
2584
2663
  // Full nav link customization (overrides navStyle if set)
2585
2664
  navLinkStyle: navLinkStyleSchema.optional(),
@@ -2590,23 +2669,23 @@ var footerSchema = z15.object({
2590
2669
  logo: footerLogoSchema.optional(),
2591
2670
  bottomBar: footerBottomBarSchema.optional()
2592
2671
  });
2593
- var containerPaddingPresetSchema = z15.enum(["tight", "compact", "default", "relaxed"]);
2594
- var layoutSchema = z15.object({
2595
- containerPadding: z15.object({
2672
+ var containerPaddingPresetSchema = z17.enum(["tight", "compact", "default", "relaxed"]);
2673
+ var layoutSchema = z17.object({
2674
+ containerPadding: z17.object({
2596
2675
  mobile: containerPaddingPresetSchema.optional(),
2597
2676
  tablet: containerPaddingPresetSchema.optional(),
2598
2677
  desktop: containerPaddingPresetSchema.optional()
2599
2678
  }).optional()
2600
2679
  }).optional();
2601
- var heroTypographySizeSchema = z15.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
2602
- var heroTypographyLineHeightSchema = z15.enum(["tight", "snug", "normal", "relaxed"]);
2603
- var heroResponsiveTypographySchema = z15.object({
2680
+ var heroTypographySizeSchema = z17.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
2681
+ var heroTypographyLineHeightSchema = z17.enum(["tight", "snug", "normal", "relaxed"]);
2682
+ var heroResponsiveTypographySchema = z17.object({
2604
2683
  headlineSize: heroTypographySizeSchema.optional(),
2605
2684
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
2606
2685
  subheadlineSize: heroTypographySizeSchema.optional(),
2607
2686
  subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
2608
2687
  });
2609
- var heroTypographySchema = z15.object({
2688
+ var heroTypographySchema = z17.object({
2610
2689
  headlineSize: heroTypographySizeSchema.optional(),
2611
2690
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
2612
2691
  subheadlineSize: heroTypographySizeSchema.optional(),
@@ -2615,31 +2694,31 @@ var heroTypographySchema = z15.object({
2615
2694
  microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
2616
2695
  microSubheadlineSize: heroTypographySizeSchema.optional(),
2617
2696
  microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
2618
- responsive: z15.object({
2697
+ responsive: z17.object({
2619
2698
  tablet: heroResponsiveTypographySchema.optional(),
2620
2699
  mobile: heroResponsiveTypographySchema.optional()
2621
2700
  }).optional()
2622
2701
  });
2623
- var heroSchema = z15.object({
2702
+ var heroSchema = z17.object({
2624
2703
  typography: heroTypographySchema.optional()
2625
2704
  }).optional();
2626
- var bodyTextIntroTypographySizeSchema = z15.enum(["default", "editorial"]);
2627
- var bodyTextSchema = z15.object({
2628
- intro: z15.object({
2705
+ var bodyTextIntroTypographySizeSchema = z17.enum(["default", "editorial"]);
2706
+ var bodyTextSchema = z17.object({
2707
+ intro: z17.object({
2629
2708
  paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
2630
2709
  headingSize: bodyTextIntroTypographySizeSchema.optional()
2631
2710
  }).optional()
2632
2711
  }).optional();
2633
- var gradientsSchema = z15.object({
2634
- button: z15.string().min(1).nullable().optional(),
2635
- hero: z15.string().min(1).nullable().optional(),
2636
- background: z15.string().min(1).nullable().optional()
2712
+ var gradientsSchema = z17.object({
2713
+ button: z17.string().min(1).nullable().optional(),
2714
+ hero: z17.string().min(1).nullable().optional(),
2715
+ background: z17.string().min(1).nullable().optional()
2637
2716
  });
2638
- var themeSchema = z15.object({
2639
- name: z15.string().min(1).max(30),
2640
- description: z15.string().min(1).max(400),
2641
- rationale: z15.string().min(1).max(400),
2642
- siteStyleId: z15.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
2717
+ var themeSchema = z17.object({
2718
+ name: z17.string().min(1).max(30),
2719
+ description: z17.string().min(1).max(400),
2720
+ rationale: z17.string().min(1).max(400),
2721
+ siteStyleId: z17.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
2643
2722
  axes: axesSchema,
2644
2723
  palette: paletteSchema,
2645
2724
  typography: typographySchema,
@@ -2667,15 +2746,15 @@ var themeSchema = z15.object({
2667
2746
  // Block-specific customization (Tier 3)
2668
2747
  // blockCustomVars: Per-block CSS variable overrides as bare values
2669
2748
  // Example: { "event-registration": { "--step-color": "#6d28d9" } }
2670
- blockCustomVars: z15.record(
2671
- z15.string(),
2749
+ blockCustomVars: z17.record(
2750
+ z17.string(),
2672
2751
  // block kind (matches data-block attribute)
2673
- z15.record(z15.string(), z15.string())
2752
+ z17.record(z17.string(), z17.string())
2674
2753
  // { '--var-name': 'value' }
2675
2754
  ).optional(),
2676
2755
  // Structured block-kind theme overrides (v1: typography prose-link style only)
2677
2756
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
2678
- blockOverrides: z15.record(z15.string(), blockThemeOverrideSchema).optional(),
2757
+ blockOverrides: z17.record(z17.string(), blockThemeOverrideSchema).optional(),
2679
2758
  // Structured custom CSS rules
2680
2759
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
2681
2760
  customCssRules: customCssRulesSchema,
@@ -2709,11 +2788,11 @@ var themeSchema = z15.object({
2709
2788
  * }
2710
2789
  * ```
2711
2790
  */
2712
- styleGroups: z15.record(z15.string(), z15.array(z15.string())).optional()
2791
+ styleGroups: z17.record(z17.string(), z17.array(z17.string())).optional()
2713
2792
  });
2714
- var themesTurnSchema = z15.object({
2715
- message: z15.string().min(1),
2716
- themes: z15.array(themeSchema).length(3)
2793
+ var themesTurnSchema = z17.object({
2794
+ message: z17.string().min(1),
2795
+ themes: z17.array(themeSchema).length(3)
2717
2796
  });
2718
2797
 
2719
2798
  // ../theme-core/src/palette/variants/types.ts
@@ -2723,35 +2802,19 @@ function asPaletteVariantId(value) {
2723
2802
  }
2724
2803
  return value;
2725
2804
  }
2726
- var paletteVariantIdSchema = z16.string().min(1).transform((value) => asPaletteVariantId(value));
2727
- var PALETTE_TOKEN_NAMES = [
2728
- "primary",
2729
- "primaryForeground",
2730
- "secondary",
2731
- "accent",
2732
- "success",
2733
- "warning",
2734
- "destructive",
2735
- "background",
2736
- "surface",
2737
- "surfaceAlt",
2738
- "muted",
2739
- "text",
2740
- "border"
2741
- ];
2742
- var paletteTokenNameSchema = z16.enum(PALETTE_TOKEN_NAMES);
2805
+ var paletteVariantIdSchema = z18.string().min(1).transform((value) => asPaletteVariantId(value));
2743
2806
  var HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
2744
- var hexColorSchema = z16.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
2807
+ var hexColorSchema = z18.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
2745
2808
  var variantPaletteColorSchema = paletteColorSchema.extend({
2746
2809
  name: paletteTokenNameSchema
2747
2810
  });
2748
- var paletteVariantSchema = z16.object({
2811
+ var paletteVariantSchema = z18.object({
2749
2812
  id: paletteVariantIdSchema,
2750
- name: z16.string().min(1),
2751
- description: z16.string().min(1),
2813
+ name: z18.string().min(1),
2814
+ description: z18.string().min(1),
2752
2815
  tags: styleTagsSchema,
2753
- mode: z16.enum(["light", "dark"]),
2754
- colors: z16.array(variantPaletteColorSchema).min(1)
2816
+ mode: z18.enum(["light", "dark"]),
2817
+ colors: z18.array(variantPaletteColorSchema).min(1)
2755
2818
  });
2756
2819
  function definePaletteVariant(input) {
2757
2820
  return {
@@ -2763,7 +2826,7 @@ function definePaletteVariant(input) {
2763
2826
  colors: input.colors
2764
2827
  };
2765
2828
  }
2766
- var paletteOverridesSchema = z16.object({
2829
+ var paletteOverridesSchema = z18.object({
2767
2830
  primary: hexColorSchema.optional(),
2768
2831
  primaryForeground: hexColorSchema.optional(),
2769
2832
  secondary: hexColorSchema.optional(),
@@ -3097,6 +3160,409 @@ var paletteVariantsById = new Map(
3097
3160
  paletteVariants.map((v) => [v.id, v])
3098
3161
  );
3099
3162
 
3163
+ // ../theme-core/src/site-styles/headerLooks.ts
3164
+ function asHeaderLookId(value) {
3165
+ return value;
3166
+ }
3167
+ function baseHeader(theme) {
3168
+ return {
3169
+ ...theme.header,
3170
+ navLinkStyle: void 0,
3171
+ dropdownStyle: void 0,
3172
+ ctaVariant: void 0
3173
+ };
3174
+ }
3175
+ function solidBrandHeader(theme) {
3176
+ const ctaVariant = resolveHeaderCtaVariant(theme, "inverted");
3177
+ return {
3178
+ ...baseHeader(theme),
3179
+ variant: "classic",
3180
+ positioning: "sticky",
3181
+ shrinkOnScroll: true,
3182
+ background: {
3183
+ type: "color",
3184
+ color: "primary"
3185
+ },
3186
+ textColor: "primaryForeground",
3187
+ navColor: "primaryForeground",
3188
+ navStyle: "underline-grow",
3189
+ navWeight: "bold",
3190
+ navLinkStyle: {
3191
+ typography: "body",
3192
+ fontWeight: "bold",
3193
+ textTransform: "uppercase",
3194
+ italic: false,
3195
+ colorToken: "primaryForeground",
3196
+ hoverColorToken: "secondary",
3197
+ textSize: "sm",
3198
+ letterSpacing: "wider",
3199
+ padding: "compact",
3200
+ paddingX: "compact",
3201
+ borderRadius: "none",
3202
+ effects: {
3203
+ hover: [
3204
+ { effectId: "text-color-change", options: { hoverColorToken: "secondary" } },
3205
+ { effectId: "nav-underline", options: { style: "grow", colorToken: "secondary" } }
3206
+ ]
3207
+ }
3208
+ },
3209
+ dropdownStyle: {
3210
+ background: "primary-700",
3211
+ textColor: "primaryForeground",
3212
+ borderColor: null,
3213
+ shadow: "md",
3214
+ borderRadius: "md",
3215
+ hoverBackground: "primary-900",
3216
+ hoverTextColor: "secondary",
3217
+ textTransform: "uppercase",
3218
+ letterSpacing: "wider",
3219
+ fontWeight: "bold",
3220
+ textSize: "sm"
3221
+ },
3222
+ border: {
3223
+ style: "solid",
3224
+ width: "none",
3225
+ position: "none"
3226
+ },
3227
+ logoText: {
3228
+ hideOnShrink: true,
3229
+ mobileMaxWidth: "sm",
3230
+ mobileWrapLines: 2
3231
+ },
3232
+ ctaGap: "compact",
3233
+ ctaTreatment: "inverted",
3234
+ ...ctaVariant ? { ctaVariant } : {}
3235
+ };
3236
+ }
3237
+ function cleanBaseHeader(theme) {
3238
+ return {
3239
+ ...baseHeader(theme),
3240
+ variant: "classic",
3241
+ positioning: "sticky",
3242
+ shrinkOnScroll: false,
3243
+ background: {
3244
+ type: "color",
3245
+ color: "surface"
3246
+ },
3247
+ textColor: "text",
3248
+ navColor: "text",
3249
+ navStyle: "minimal",
3250
+ navWeight: "medium",
3251
+ border: {
3252
+ style: "solid",
3253
+ width: "thin",
3254
+ position: "bottom",
3255
+ colorToken: "border"
3256
+ },
3257
+ ctaTreatment: "default",
3258
+ ctaGap: "default"
3259
+ };
3260
+ }
3261
+ function editorialLineHeader(theme) {
3262
+ return {
3263
+ ...baseHeader(theme),
3264
+ variant: "editorial",
3265
+ positioning: "sticky",
3266
+ shrinkOnScroll: false,
3267
+ background: {
3268
+ type: "color",
3269
+ color: "background"
3270
+ },
3271
+ textColor: "text",
3272
+ navColor: "text",
3273
+ navStyle: "underline-grow",
3274
+ navWeight: "medium",
3275
+ logo: {
3276
+ fontFamily: "heading",
3277
+ letterSpacing: "wide",
3278
+ gradient: false
3279
+ },
3280
+ ctaTreatment: "outline",
3281
+ ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
3282
+ ctaGap: "relaxed"
3283
+ };
3284
+ }
3285
+ function centeredCalmHeader(theme) {
3286
+ return {
3287
+ ...baseHeader(theme),
3288
+ variant: "centered",
3289
+ positioning: "static",
3290
+ shrinkOnScroll: false,
3291
+ background: {
3292
+ type: "color",
3293
+ color: "surface"
3294
+ },
3295
+ textColor: "text",
3296
+ navColor: "text",
3297
+ navStyle: "minimal",
3298
+ navWeight: "medium",
3299
+ ctaTreatment: "ghost",
3300
+ ctaVariant: resolveHeaderCtaVariant(theme, "ghost"),
3301
+ ctaGap: "none"
3302
+ };
3303
+ }
3304
+ function practicalUtilityHeader(theme) {
3305
+ return {
3306
+ ...baseHeader(theme),
3307
+ variant: "classic",
3308
+ positioning: "sticky",
3309
+ shrinkOnScroll: true,
3310
+ background: {
3311
+ type: "color",
3312
+ color: "surface"
3313
+ },
3314
+ textColor: "text",
3315
+ navColor: "text",
3316
+ navStyle: "solid",
3317
+ navWeight: "semibold",
3318
+ shadow: {
3319
+ elevation: "sm"
3320
+ },
3321
+ border: {
3322
+ style: "solid",
3323
+ width: "thin",
3324
+ position: "bottom",
3325
+ colorToken: "border"
3326
+ },
3327
+ ctaTreatment: "primary",
3328
+ ctaVariant: resolveHeaderCtaVariant(theme, "primary"),
3329
+ ctaGap: "compact",
3330
+ logoText: {
3331
+ mobileMaxWidth: "sm",
3332
+ mobileWrapLines: 1,
3333
+ hideOnShrink: false
3334
+ }
3335
+ };
3336
+ }
3337
+ function minimalTransparentHeader(theme) {
3338
+ return {
3339
+ ...baseHeader(theme),
3340
+ variant: "classic",
3341
+ positioning: "static",
3342
+ shrinkOnScroll: false,
3343
+ background: {
3344
+ type: "color",
3345
+ color: "transparent"
3346
+ },
3347
+ textColor: "text",
3348
+ navColor: "text",
3349
+ navStyle: "underline",
3350
+ navWeight: "medium",
3351
+ border: {
3352
+ style: "solid",
3353
+ width: "none",
3354
+ position: "none"
3355
+ },
3356
+ ctaTreatment: "outline",
3357
+ ctaVariant: resolveHeaderCtaVariant(theme, "outline"),
3358
+ ctaGap: "default"
3359
+ };
3360
+ }
3361
+ function transparentOverlayHeader(theme) {
3362
+ return {
3363
+ ...baseHeader(theme),
3364
+ variant: "transparent",
3365
+ positioning: "fixed",
3366
+ shrinkOnScroll: true,
3367
+ background: {
3368
+ type: "color",
3369
+ color: "transparent"
3370
+ },
3371
+ textColor: "background",
3372
+ navColor: "background",
3373
+ navStyle: "frosted",
3374
+ navWeight: "semibold",
3375
+ border: {
3376
+ style: "solid",
3377
+ width: "none",
3378
+ position: "none"
3379
+ },
3380
+ ctaTreatment: "inverted",
3381
+ ctaVariant: resolveHeaderCtaVariant(theme, "inverted"),
3382
+ ctaGap: "compact"
3383
+ };
3384
+ }
3385
+ function floatingGlassHeader(theme) {
3386
+ return {
3387
+ ...transparentOverlayHeader(theme),
3388
+ variant: "floating",
3389
+ navStyle: "frosted",
3390
+ navContainer: {
3391
+ type: "glass",
3392
+ tint: "text",
3393
+ opacity: 0.16
3394
+ },
3395
+ container: {
3396
+ rounded: "2xl",
3397
+ border: true,
3398
+ shadow: true,
3399
+ padding: "sm",
3400
+ tint: "background",
3401
+ opacity: 0.12
3402
+ }
3403
+ };
3404
+ }
3405
+ var headerLookCatalog = [
3406
+ {
3407
+ id: asHeaderLookId("clean-base"),
3408
+ label: "Clean base",
3409
+ visualTreatment: "solid-neutral",
3410
+ layoutBehavior: "sticky",
3411
+ openingRequirement: "none",
3412
+ compile: cleanBaseHeader
3413
+ },
3414
+ {
3415
+ id: asHeaderLookId("brand-solid"),
3416
+ label: "Brand solid",
3417
+ visualTreatment: "solid-brand",
3418
+ layoutBehavior: "sticky-shrink",
3419
+ openingRequirement: "none",
3420
+ compile: solidBrandHeader
3421
+ },
3422
+ {
3423
+ id: asHeaderLookId("editorial-line"),
3424
+ label: "Editorial line",
3425
+ visualTreatment: "light-editorial",
3426
+ layoutBehavior: "sticky",
3427
+ openingRequirement: "none",
3428
+ maxRecommendedNavItems: 6,
3429
+ compile: editorialLineHeader
3430
+ },
3431
+ {
3432
+ id: asHeaderLookId("centered-calm"),
3433
+ label: "Centered calm",
3434
+ visualTreatment: "light-editorial",
3435
+ layoutBehavior: "normal-flow",
3436
+ openingRequirement: "none",
3437
+ maxRecommendedNavItems: 5,
3438
+ allowedLogoShapes: ["none", "text-only", "horizontal", "square"],
3439
+ compile: centeredCalmHeader
3440
+ },
3441
+ {
3442
+ id: asHeaderLookId("practical-utility"),
3443
+ label: "Practical utility",
3444
+ visualTreatment: "solid-neutral",
3445
+ layoutBehavior: "sticky-shrink",
3446
+ openingRequirement: "none",
3447
+ requiresProminentCta: true,
3448
+ compile: practicalUtilityHeader
3449
+ },
3450
+ {
3451
+ id: asHeaderLookId("minimal-transparent"),
3452
+ label: "Minimal transparent",
3453
+ visualTreatment: "minimal-transparent",
3454
+ layoutBehavior: "normal-flow",
3455
+ openingRequirement: "reserved-space-ok",
3456
+ compile: minimalTransparentHeader
3457
+ },
3458
+ {
3459
+ id: asHeaderLookId("transparent-overlay"),
3460
+ label: "Transparent overlay",
3461
+ visualTreatment: "transparent-overlay",
3462
+ layoutBehavior: "fixed-overlay",
3463
+ openingRequirement: "requires-image-hero-with-contrast-overlay",
3464
+ maxRecommendedNavItems: 5,
3465
+ allowedLogoShapes: ["none", "text-only", "horizontal"],
3466
+ compile: transparentOverlayHeader
3467
+ },
3468
+ {
3469
+ id: asHeaderLookId("floating-glass"),
3470
+ label: "Floating glass",
3471
+ visualTreatment: "floating-glass",
3472
+ layoutBehavior: "fixed-floating",
3473
+ openingRequirement: "requires-image-hero-with-contrast-overlay",
3474
+ maxRecommendedNavItems: 5,
3475
+ allowedLogoShapes: ["none", "text-only", "horizontal"],
3476
+ compile: floatingGlassHeader
3477
+ }
3478
+ ];
3479
+ var guaranteedFallbackHeaderLookId = asHeaderLookId("clean-base");
3480
+ var headerLooksById = new Map(
3481
+ headerLookCatalog.map((look) => [look.id, look])
3482
+ );
3483
+
3484
+ // ../theme-core/src/site-styles/footerLooks.ts
3485
+ function asFooterLookId(value) {
3486
+ return value;
3487
+ }
3488
+ var guaranteedFallbackFooterLookId = asFooterLookId("footer-muted-grounding");
3489
+ function mutedGroundingFooter(theme) {
3490
+ return theme.footer;
3491
+ }
3492
+ function brandTwoBandFooter(theme) {
3493
+ return {
3494
+ ...theme.footer,
3495
+ variant: "split",
3496
+ maxWidth: "container",
3497
+ background: {
3498
+ type: "color",
3499
+ color: "primary-800"
3500
+ },
3501
+ navStyle: "minimal",
3502
+ navWeight: "medium",
3503
+ navColor: "primaryForeground",
3504
+ navLinkStyle: {
3505
+ typography: "body",
3506
+ fontWeight: "medium",
3507
+ textTransform: "none",
3508
+ italic: false,
3509
+ colorToken: "primaryForeground",
3510
+ hoverColorToken: "secondary",
3511
+ padding: "none",
3512
+ borderRadius: "none"
3513
+ },
3514
+ bottomTextLinkStyle: {
3515
+ colorToken: "secondary",
3516
+ decorationColorToken: "secondary"
3517
+ },
3518
+ navLayout: {
3519
+ layout: "inline-wrap",
3520
+ align: "start",
3521
+ gapX: "default",
3522
+ gapY: "tight"
3523
+ },
3524
+ logo: {
3525
+ showLogo: true,
3526
+ showLogoText: false,
3527
+ placement: "left",
3528
+ size: "sm",
3529
+ align: "start"
3530
+ },
3531
+ bottomBar: {
3532
+ enabled: true,
3533
+ fullBleed: true,
3534
+ background: {
3535
+ type: "color",
3536
+ color: "primary-900"
3537
+ },
3538
+ textColor: "primaryForeground",
3539
+ textAlign: "center",
3540
+ paddingX: "default",
3541
+ paddingY: "compact",
3542
+ borderTop: {
3543
+ width: "none"
3544
+ }
3545
+ }
3546
+ };
3547
+ }
3548
+ var footerLookCatalog = [
3549
+ {
3550
+ id: asFooterLookId("footer-muted-grounding"),
3551
+ label: "Muted grounding footer",
3552
+ compile: mutedGroundingFooter
3553
+ },
3554
+ {
3555
+ id: asFooterLookId("site-footer-brand-two-band"),
3556
+ label: "Two-band brand footer",
3557
+ maxRecommendedNavDensity: "balanced",
3558
+ allowedContentPresence: ["default-footer", "default-and-blocks"],
3559
+ compile: brandTwoBandFooter
3560
+ }
3561
+ ];
3562
+ var footerLooksById = new Map(
3563
+ footerLookCatalog.map((look) => [look.id, look])
3564
+ );
3565
+
3100
3566
  // ../theme-core/src/site-styles/sourceCatalogs.ts
3101
3567
  var generatedContentFrames = [
3102
3568
  plainFrame,
@@ -3250,6 +3716,9 @@ function defineCuratedSiteStyle(input) {
3250
3716
  },
3251
3717
  ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
3252
3718
  recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
3719
+ recommendedHeaderLookIds: (input.recommendedHeaderLookIds ?? ["clean-base"]).map(asHeaderLookId),
3720
+ // Empty is intentional: resolveFooterLook always appends its guaranteed fallback.
3721
+ recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(asFooterLookId),
3253
3722
  buttonPersonalityChoices: input.buttonPersonalityChoices,
3254
3723
  paletteVariantChoices: input.paletteVariantChoices
3255
3724
  };
@@ -3276,6 +3745,7 @@ var curatedSiteStyles = [
3276
3745
  motion: "subtle"
3277
3746
  },
3278
3747
  compositionBudget: quietBudget,
3748
+ recommendedHeaderLookIds: ["centered-calm", "minimal-transparent", "clean-base"],
3279
3749
  buttonPersonalityChoices: [
3280
3750
  buttonChoice("soft-pill"),
3281
3751
  buttonChoice("pebble"),
@@ -3304,6 +3774,7 @@ var curatedSiteStyles = [
3304
3774
  motion: "subtle"
3305
3775
  },
3306
3776
  compositionBudget: balancedBudget,
3777
+ recommendedHeaderLookIds: ["practical-utility", "brand-solid", "clean-base"],
3307
3778
  buttonPersonalityChoices: [
3308
3779
  buttonChoice("confident-chip"),
3309
3780
  buttonChoice("soft-pill"),
@@ -3330,6 +3801,7 @@ var curatedSiteStyles = [
3330
3801
  motion: "subtle"
3331
3802
  },
3332
3803
  compositionBudget: balancedBudget,
3804
+ recommendedHeaderLookIds: ["editorial-line", "minimal-transparent", "centered-calm"],
3333
3805
  buttonPersonalityChoices: [
3334
3806
  buttonChoice("editorial-link"),
3335
3807
  buttonChoice("soft-pill"),
@@ -3357,6 +3829,7 @@ var curatedSiteStyles = [
3357
3829
  motion: "expressive"
3358
3830
  },
3359
3831
  compositionBudget: balancedBudget,
3832
+ recommendedHeaderLookIds: ["brand-solid", "practical-utility", "clean-base"],
3360
3833
  buttonPersonalityChoices: [
3361
3834
  buttonChoice("pebble"),
3362
3835
  buttonChoice("brushed-wash"),
@@ -3390,6 +3863,7 @@ var curatedSiteStyles = [
3390
3863
  motion: "none"
3391
3864
  },
3392
3865
  compositionBudget: quietBudget,
3866
+ recommendedHeaderLookIds: ["minimal-transparent", "editorial-line", "clean-base"],
3393
3867
  buttonPersonalityChoices: [
3394
3868
  buttonChoice("editorial-link"),
3395
3869
  buttonChoice("confident-chip"),
@@ -3424,6 +3898,7 @@ var curatedSiteStyles = [
3424
3898
  motion: "none"
3425
3899
  },
3426
3900
  compositionBudget: quietBudget,
3901
+ recommendedHeaderLookIds: ["practical-utility", "brand-solid", "clean-base"],
3427
3902
  buttonPersonalityChoices: [
3428
3903
  buttonChoice("confident-chip"),
3429
3904
  buttonChoice("pebble"),
@@ -3450,6 +3925,7 @@ var curatedSiteStyles = [
3450
3925
  motion: "subtle"
3451
3926
  },
3452
3927
  compositionBudget: balancedBudget,
3928
+ recommendedHeaderLookIds: ["centered-calm", "minimal-transparent", "clean-base"],
3453
3929
  buttonPersonalityChoices: [
3454
3930
  buttonChoice("soft-pill"),
3455
3931
  buttonChoice("pebble"),
@@ -3484,6 +3960,7 @@ var curatedSiteStyles = [
3484
3960
  motion: "expressive"
3485
3961
  },
3486
3962
  compositionBudget: expressiveBudget,
3963
+ recommendedHeaderLookIds: ["transparent-overlay", "floating-glass", "brand-solid"],
3487
3964
  buttonPersonalityChoices: [
3488
3965
  buttonChoice("ink-stamp"),
3489
3966
  buttonChoice("confident-chip"),
@@ -3573,14 +4050,14 @@ var curatedSiteStyles = [
3573
4050
  inputs: expressiveUnderlineInputs
3574
4051
  },
3575
4052
  recommendedAppearancePresetIds: [
3576
- "site-header-brand-solid-inverted-cta",
3577
- "site-footer-brand-two-band",
3578
4053
  "hero-brand-scrim-fixed-frame",
3579
4054
  "body-text-editorial-intro",
3580
4055
  "schedule-details-brand-depth",
3581
4056
  "testimonials-accent-quote-proof",
3582
4057
  "contact-form-brand-depth-card"
3583
4058
  ],
4059
+ recommendedHeaderLookIds: ["brand-solid", "transparent-overlay", "practical-utility"],
4060
+ recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
3584
4061
  buttonPersonalityChoices: [
3585
4062
  buttonChoice("showtime-pill"),
3586
4063
  buttonChoice("confident-chip"),
@@ -3599,6 +4076,14 @@ var curatedSiteStylesById = new Map(
3599
4076
  curatedSiteStyles.map((style) => [style.id, style])
3600
4077
  );
3601
4078
 
4079
+ // ../theme-core/src/site-styles/siteStyleBlockPolicies.ts
4080
+ var defaultPolicyPageFlowPresetId = asPageFlowPresetId("generated-default");
4081
+ var southWestTwerkSchoolSiteStyleId = asSiteStyleId("site-style:south-west-twerk-school");
4082
+ var heroBrandScrimFixedFrameLookId = asAppearancePresetId("hero-brand-scrim-fixed-frame");
4083
+ var classicHeroLayoutVariantKey = asLayoutVariantKey("classic");
4084
+ var microHeroLayoutVariantKey = asLayoutVariantKey("micro");
4085
+ var waveBoundaryOptionId = asBoundaryOptionId("break:wave");
4086
+
3602
4087
  // ../theme-core/src/site-styles/pageDesignEditorModel.ts
3603
4088
  var noneBoundaryOption = {
3604
4089
  id: asBoundaryOptionId("break:none"),
@@ -3642,7 +4127,7 @@ var pageFlowPresets = [
3642
4127
  ];
3643
4128
 
3644
4129
  // ../theme-core/src/site-styles/designState.ts
3645
- import { z as z17 } from "zod";
4130
+ import { z as z19 } from "zod";
3646
4131
 
3647
4132
  // ../theme-core/src/site-styles/rawStyleFields.ts
3648
4133
  var themeV2RuntimeStyleFieldNames = [
@@ -3668,53 +4153,53 @@ var themeV2NormalEditorRawStyleFieldNameSet = new Set(
3668
4153
 
3669
4154
  // ../theme-core/src/site-styles/designState.ts
3670
4155
  var themeV2DesignStateSchemaVersion = 1;
3671
- var designResolutionPolicySchema = z17.enum(["generated", "user", "admin", "sdk"]);
3672
- var runtimeStyleFieldNameSchema = z17.enum(themeV2RuntimeStyleFieldNames);
3673
- var nonEmptyRuntimeStyleFieldNamesSchema = z17.array(runtimeStyleFieldNameSchema).min(1).transform((fields) => [
4156
+ var designResolutionPolicySchema = z19.enum(["generated", "user", "admin", "sdk"]);
4157
+ var runtimeStyleFieldNameSchema = z19.enum(themeV2RuntimeStyleFieldNames);
4158
+ var nonEmptyRuntimeStyleFieldNamesSchema = z19.array(runtimeStyleFieldNameSchema).min(1).transform((fields) => [
3674
4159
  fields[0],
3675
4160
  ...fields.slice(1)
3676
4161
  ]);
3677
- var heroLegibilityStrategySchema = z17.enum([
4162
+ var heroLegibilityStrategySchema = z19.enum([
3678
4163
  "none",
3679
4164
  "scrim-gradient",
3680
4165
  "solid-panel"
3681
4166
  ]);
3682
- var sectionHeightIntentSchema = z17.enum([
4167
+ var sectionHeightIntentSchema = z19.enum([
3683
4168
  "default",
3684
4169
  "banner",
3685
4170
  "hero",
3686
4171
  "immersive"
3687
4172
  ]);
3688
- var imageSurfaceTreatmentIntensitySchema = z17.enum(["soft", "balanced", "strong"]);
3689
- var imageSurfaceMotionSchema = z17.enum(["static", "fixed-frame"]);
3690
- var imageSurfaceTreatmentSchema = z17.discriminatedUnion("kind", [
3691
- z17.object({ kind: z17.literal("none") }).strict(),
3692
- z17.object({
3693
- kind: z17.literal("brand-scrim"),
3694
- token: z17.enum(["primary", "secondary", "accent"]),
4173
+ var imageSurfaceTreatmentIntensitySchema = z19.enum(["soft", "balanced", "strong"]);
4174
+ var imageSurfaceMotionSchema = z19.enum(["static", "fixed-frame"]);
4175
+ var imageSurfaceTreatmentSchema = z19.discriminatedUnion("kind", [
4176
+ z19.object({ kind: z19.literal("none") }).strict(),
4177
+ z19.object({
4178
+ kind: z19.literal("brand-scrim"),
4179
+ token: z19.enum(["primary", "secondary", "accent"]),
3695
4180
  intensity: imageSurfaceTreatmentIntensitySchema.optional()
3696
4181
  }).strict(),
3697
- z17.object({
3698
- kind: z17.literal("brand-wash"),
3699
- token: z17.enum(["primary", "secondary", "accent"]),
4182
+ z19.object({
4183
+ kind: z19.literal("brand-wash"),
4184
+ token: z19.enum(["primary", "secondary", "accent"]),
3700
4185
  intensity: imageSurfaceTreatmentIntensitySchema.optional()
3701
4186
  }).strict(),
3702
- z17.object({
3703
- kind: z17.literal("neutral-scrim"),
4187
+ z19.object({
4188
+ kind: z19.literal("neutral-scrim"),
3704
4189
  intensity: imageSurfaceTreatmentIntensitySchema.optional()
3705
4190
  }).strict(),
3706
- z17.object({
3707
- kind: z17.literal("neutral-wash"),
4191
+ z19.object({
4192
+ kind: z19.literal("neutral-wash"),
3708
4193
  intensity: imageSurfaceTreatmentIntensitySchema.optional()
3709
4194
  }).strict(),
3710
- z17.object({
3711
- kind: z17.literal("solid-panel"),
4195
+ z19.object({
4196
+ kind: z19.literal("solid-panel"),
3712
4197
  intensity: imageSurfaceTreatmentIntensitySchema.optional()
3713
4198
  }).strict()
3714
4199
  ]);
3715
- var testimonialCardTreatmentSchema = z17.enum(["default", "accent-quote"]);
3716
- var tileTreatmentSchema = z17.enum(tileTreatmentValues);
3717
- var eyebrowTreatmentSchema = z17.enum(eyebrowTreatmentValues);
4200
+ var testimonialCardTreatmentSchema = z19.enum(["default", "accent-quote"]);
4201
+ var tileTreatmentSchema = z19.enum(tileTreatmentValues);
4202
+ var eyebrowTreatmentSchema = z19.enum(eyebrowTreatmentValues);
3718
4203
  function uniqueNonEmpty(values) {
3719
4204
  const uniqueValues = [...new Set(values)];
3720
4205
  const firstValue = uniqueValues[0];
@@ -3732,27 +4217,27 @@ var userFlushTreatments = uniqueNonEmpty(
3732
4217
  var userFlushBleeds = uniqueNonEmpty(
3733
4218
  userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
3734
4219
  );
3735
- var contentFrameIntentSchema = z17.discriminatedUnion("kind", [
3736
- z17.object({ kind: z17.literal("plain") }).strict(),
3737
- z17.object({
3738
- kind: z17.literal("panel"),
3739
- treatment: z17.enum(userPanelTreatments)
4220
+ var contentFrameIntentSchema = z19.discriminatedUnion("kind", [
4221
+ z19.object({ kind: z19.literal("plain") }).strict(),
4222
+ z19.object({
4223
+ kind: z19.literal("panel"),
4224
+ treatment: z19.enum(userPanelTreatments)
3740
4225
  }).strict(),
3741
- z17.object({
3742
- kind: z17.literal("flush-panel"),
3743
- treatment: z17.enum(userFlushTreatments),
3744
- bleed: z17.enum(userFlushBleeds)
4226
+ z19.object({
4227
+ kind: z19.literal("flush-panel"),
4228
+ treatment: z19.enum(userFlushTreatments),
4229
+ bleed: z19.enum(userFlushBleeds)
3745
4230
  }).strict()
3746
4231
  ]);
3747
- var blockDesignPlanSchema = z17.object({
3748
- blockId: z17.string().min(1).transform(asDesignBlockId),
3749
- blockKind: z17.string().min(1),
3750
- purpose: z17.string().min(1),
3751
- sectionSurface: z17.enum(userDesignOptionCatalog.sectionSurfaces),
4232
+ var blockDesignPlanSchema = z19.object({
4233
+ blockId: z19.string().min(1).transform(asDesignBlockId),
4234
+ blockKind: z19.string().min(1),
4235
+ purpose: z19.string().min(1),
4236
+ sectionSurface: z19.enum(userDesignOptionCatalog.sectionSurfaces),
3752
4237
  contentFrame: contentFrameIntentSchema,
3753
- itemSurface: z17.enum(userDesignOptionCatalog.itemSurfaces),
3754
- transitionAfter: z17.enum(userDesignOptionCatalog.transitions),
3755
- emphasis: z17.enum(userDesignOptionCatalog.emphases),
4238
+ itemSurface: z19.enum(userDesignOptionCatalog.itemSurfaces),
4239
+ transitionAfter: z19.enum(userDesignOptionCatalog.transitions),
4240
+ emphasis: z19.enum(userDesignOptionCatalog.emphases),
3756
4241
  sectionHeight: sectionHeightIntentSchema.optional(),
3757
4242
  heroLegibility: heroLegibilityStrategySchema.optional(),
3758
4243
  imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
@@ -3761,39 +4246,39 @@ var blockDesignPlanSchema = z17.object({
3761
4246
  tileTreatment: tileTreatmentSchema.optional(),
3762
4247
  eyebrowTreatment: eyebrowTreatmentSchema.optional()
3763
4248
  }).strict();
3764
- var styleAuthoritySchema = z17.discriminatedUnion("kind", [
3765
- z17.object({
3766
- kind: z17.literal("theme-v2"),
4249
+ var styleAuthoritySchema = z19.discriminatedUnion("kind", [
4250
+ z19.object({
4251
+ kind: z19.literal("theme-v2"),
3767
4252
  source: designResolutionPolicySchema,
3768
- siteStyleId: z17.string().min(1).transform(asSiteStyleId),
3769
- templateId: z17.string().min(1).transform(asDesignSystemTemplateId),
3770
- templateVersion: z17.number().int().nonnegative(),
3771
- resolverVersion: z17.number().int().nonnegative()
4253
+ siteStyleId: z19.string().min(1).transform(asSiteStyleId),
4254
+ templateId: z19.string().min(1).transform(asDesignSystemTemplateId),
4255
+ templateVersion: z19.number().int().nonnegative(),
4256
+ resolverVersion: z19.number().int().nonnegative()
3772
4257
  }).strict(),
3773
- z17.object({
3774
- kind: z17.literal("legacy-raw"),
3775
- reason: z17.enum(["pre-theme-v2", "manual-runtime-fields"])
4258
+ z19.object({
4259
+ kind: z19.literal("legacy-raw"),
4260
+ reason: z19.enum(["pre-theme-v2", "manual-runtime-fields"])
3776
4261
  }).strict(),
3777
- z17.object({
3778
- kind: z17.literal("advanced-detached"),
3779
- reason: z17.literal("detached-custom-runtime-fields")
4262
+ z19.object({
4263
+ kind: z19.literal("advanced-detached"),
4264
+ reason: z19.literal("detached-custom-runtime-fields")
3780
4265
  }).strict()
3781
4266
  ]);
3782
- var blockRuntimeStyleAuthoritySchema = z17.object({
3783
- unit: z17.literal("block-runtime-fields"),
3784
- blockId: z17.string().min(1).transform(asDesignBlockId),
4267
+ var blockRuntimeStyleAuthoritySchema = z19.object({
4268
+ unit: z19.literal("block-runtime-fields"),
4269
+ blockId: z19.string().min(1).transform(asDesignBlockId),
3785
4270
  fields: nonEmptyRuntimeStyleFieldNamesSchema,
3786
4271
  authority: styleAuthoritySchema
3787
4272
  }).strict();
3788
- var persistedPageDesignStateV1Schema = z17.object({
3789
- schemaVersion: z17.literal(themeV2DesignStateSchemaVersion),
3790
- siteStyleId: z17.string().min(1).transform(asSiteStyleId),
3791
- templateId: z17.string().min(1).transform(asDesignSystemTemplateId),
3792
- templateVersion: z17.number().int().nonnegative(),
3793
- resolverVersion: z17.number().int().nonnegative(),
3794
- rhythmPresetId: z17.string().min(1),
3795
- blocks: z17.array(blockDesignPlanSchema),
3796
- styleAuthorities: z17.array(blockRuntimeStyleAuthoritySchema)
4273
+ var persistedPageDesignStateV1Schema = z19.object({
4274
+ schemaVersion: z19.literal(themeV2DesignStateSchemaVersion),
4275
+ siteStyleId: z19.string().min(1).transform(asSiteStyleId),
4276
+ templateId: z19.string().min(1).transform(asDesignSystemTemplateId),
4277
+ templateVersion: z19.number().int().nonnegative(),
4278
+ resolverVersion: z19.number().int().nonnegative(),
4279
+ rhythmPresetId: z19.string().min(1),
4280
+ blocks: z19.array(blockDesignPlanSchema),
4281
+ styleAuthorities: z19.array(blockRuntimeStyleAuthoritySchema)
3797
4282
  }).strict();
3798
4283
 
3799
4284
  // ../theme-core/src/site-styles/runtimeCompiler.ts
@@ -3946,7 +4431,7 @@ var defaultComponentRuntimeRules = defineComponentRuntimeRules({
3946
4431
  });
3947
4432
 
3948
4433
  // ../theme-core/src/site-styles/generatedSchemas.ts
3949
- import { z as z18 } from "zod";
4434
+ import { z as z20 } from "zod";
3950
4435
  function uniqueNonEmpty2(values) {
3951
4436
  const uniqueValues = [...new Set(values)];
3952
4437
  const firstValue = uniqueValues[0];
@@ -3964,155 +4449,155 @@ var generatedFlushTreatments = uniqueNonEmpty2(
3964
4449
  var generatedFlushBleeds = uniqueNonEmpty2(
3965
4450
  generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
3966
4451
  );
3967
- var generatedPanelFrameSchema = z18.object({
3968
- kind: z18.literal("panel"),
3969
- treatment: z18.enum(generatedPanelTreatments)
4452
+ var generatedPanelFrameSchema = z20.object({
4453
+ kind: z20.literal("panel"),
4454
+ treatment: z20.enum(generatedPanelTreatments)
3970
4455
  }).strict();
3971
- var generatedFlushPanelFrameSchema = z18.object({
3972
- kind: z18.literal("flush-panel"),
3973
- treatment: z18.enum(generatedFlushTreatments),
3974
- bleed: z18.enum(generatedFlushBleeds)
4456
+ var generatedFlushPanelFrameSchema = z20.object({
4457
+ kind: z20.literal("flush-panel"),
4458
+ treatment: z20.enum(generatedFlushTreatments),
4459
+ bleed: z20.enum(generatedFlushBleeds)
3975
4460
  }).strict();
3976
- var generatedContentFrameIntentSchema = z18.discriminatedUnion("kind", [
3977
- z18.object({ kind: z18.literal("plain") }).strict(),
4461
+ var generatedContentFrameIntentSchema = z20.discriminatedUnion("kind", [
4462
+ z20.object({ kind: z20.literal("plain") }).strict(),
3978
4463
  generatedPanelFrameSchema,
3979
4464
  generatedFlushPanelFrameSchema
3980
4465
  ]);
3981
- var generatedSiteStyleIdSchema = z18.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
4466
+ var generatedSiteStyleIdSchema = z20.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
3982
4467
  function generatedChoiceSchema(valueSchema) {
3983
- return z18.discriminatedUnion("kind", [
3984
- z18.object({
3985
- source: z18.literal("generated"),
3986
- kind: z18.literal("auto")
4468
+ return z20.discriminatedUnion("kind", [
4469
+ z20.object({
4470
+ source: z20.literal("generated"),
4471
+ kind: z20.literal("auto")
3987
4472
  }).strict(),
3988
- z18.object({
3989
- source: z18.literal("generated"),
3990
- kind: z18.literal("explicit"),
4473
+ z20.object({
4474
+ source: z20.literal("generated"),
4475
+ kind: z20.literal("explicit"),
3991
4476
  value: valueSchema
3992
4477
  }).strict()
3993
4478
  ]);
3994
4479
  }
3995
- var generatedBlockDesignIntentSchema = z18.object({
4480
+ var generatedBlockDesignIntentSchema = z20.object({
3996
4481
  sectionSurface: generatedChoiceSchema(
3997
- z18.enum(generatedDesignOptionCatalog.sectionSurfaces)
4482
+ z20.enum(generatedDesignOptionCatalog.sectionSurfaces)
3998
4483
  ),
3999
4484
  contentFrame: generatedChoiceSchema(generatedContentFrameIntentSchema),
4000
4485
  itemSurface: generatedChoiceSchema(
4001
- z18.enum(generatedDesignOptionCatalog.itemSurfaces)
4486
+ z20.enum(generatedDesignOptionCatalog.itemSurfaces)
4002
4487
  ),
4003
4488
  transitionAfter: generatedChoiceSchema(
4004
- z18.enum(generatedDesignOptionCatalog.transitions)
4489
+ z20.enum(generatedDesignOptionCatalog.transitions)
4005
4490
  ),
4006
4491
  emphasis: generatedChoiceSchema(
4007
- z18.enum(generatedDesignOptionCatalog.emphases)
4492
+ z20.enum(generatedDesignOptionCatalog.emphases)
4008
4493
  )
4009
4494
  }).strict();
4010
- var generatedMediaCompositionIntentSchema = z18.enum([
4495
+ var generatedMediaCompositionIntentSchema = z20.enum([
4011
4496
  "none",
4012
4497
  "supporting",
4013
4498
  "dominant"
4014
4499
  ]);
4015
- var generatedDecorativeCompositionIntentSchema = z18.enum([
4500
+ var generatedDecorativeCompositionIntentSchema = z20.enum([
4016
4501
  "none",
4017
4502
  "supporting"
4018
4503
  ]);
4019
- var generatedHeroLegibilityStrategySchema = z18.enum([
4504
+ var generatedHeroLegibilityStrategySchema = z20.enum([
4020
4505
  "none",
4021
4506
  "scrim-gradient"
4022
4507
  ]);
4023
- var generatedBlockMediaIntentSchema = z18.object({
4508
+ var generatedBlockMediaIntentSchema = z20.object({
4024
4509
  media: generatedMediaCompositionIntentSchema,
4025
4510
  decorative: generatedDecorativeCompositionIntentSchema,
4026
4511
  heroLegibility: generatedChoiceSchema(generatedHeroLegibilityStrategySchema)
4027
4512
  }).strict();
4028
- var generatedBoundaryIntentSchema = z18.object({
4513
+ var generatedBoundaryIntentSchema = z20.object({
4029
4514
  transitionAfter: generatedChoiceSchema(
4030
- z18.enum(generatedDesignOptionCatalog.transitions)
4515
+ z20.enum(generatedDesignOptionCatalog.transitions)
4031
4516
  )
4032
4517
  }).strict();
4033
- var generatedPageDesignBlockIntentSchema = z18.object({
4034
- blockId: z18.string().min(1),
4035
- blockKind: z18.string().min(1),
4036
- purpose: z18.string().min(1),
4518
+ var generatedPageDesignBlockIntentSchema = z20.object({
4519
+ blockId: z20.string().min(1),
4520
+ blockKind: z20.string().min(1),
4521
+ purpose: z20.string().min(1),
4037
4522
  design: generatedBlockDesignIntentSchema,
4038
4523
  mediaIntent: generatedBlockMediaIntentSchema,
4039
4524
  boundaryIntent: generatedBoundaryIntentSchema
4040
4525
  }).strict();
4041
- var generatedPageDesignIntentSchema = z18.object({
4526
+ var generatedPageDesignIntentSchema = z20.object({
4042
4527
  siteStyleId: generatedSiteStyleIdSchema,
4043
- blocks: z18.array(generatedPageDesignBlockIntentSchema)
4528
+ blocks: z20.array(generatedPageDesignBlockIntentSchema)
4044
4529
  }).strict();
4045
4530
 
4046
4531
  // ../theme-core/src/site-styles/pageDesignAuthority.ts
4047
- import { z as z19 } from "zod";
4048
- var nonEmptyStringSchema = z19.string().min(1);
4532
+ import { z as z21 } from "zod";
4533
+ var nonEmptyStringSchema = z21.string().min(1);
4049
4534
  var blockContentVersionIdSchema = nonEmptyStringSchema.transform(asBlockContentVersionId);
4050
4535
  var designBlockIdSchema = nonEmptyStringSchema.transform(asDesignBlockId);
4051
4536
  var designPageIdSchema = nonEmptyStringSchema.transform(asDesignPageId);
4052
4537
  var designEntryIdSchema = nonEmptyStringSchema.transform(asDesignEntryId);
4053
- var blockOrderIndexSchema = z19.number().int().nonnegative().transform(asBlockOrderIndex);
4054
- var publishedPageBlockSnapshotSchema = z19.object({
4055
- kind: z19.literal("published-block-content"),
4538
+ var blockOrderIndexSchema = z21.number().int().nonnegative().transform(asBlockOrderIndex);
4539
+ var publishedPageBlockSnapshotSchema = z21.object({
4540
+ kind: z21.literal("published-block-content"),
4056
4541
  blockId: designBlockIdSchema,
4057
4542
  contentVersionId: blockContentVersionIdSchema,
4058
- identifier: z19.string().nullable(),
4543
+ identifier: z21.string().nullable(),
4059
4544
  blockKind: nonEmptyStringSchema,
4060
4545
  orderIndex: blockOrderIndexSchema
4061
4546
  }).strict();
4062
- var draftPageBlockSnapshotSchema = z19.object({
4063
- kind: z19.literal("draft-block-content"),
4547
+ var draftPageBlockSnapshotSchema = z21.object({
4548
+ kind: z21.literal("draft-block-content"),
4064
4549
  blockId: designBlockIdSchema,
4065
4550
  contentVersionId: blockContentVersionIdSchema.nullable(),
4066
- identifier: z19.string().nullable(),
4551
+ identifier: z21.string().nullable(),
4067
4552
  blockKind: nonEmptyStringSchema,
4068
4553
  orderIndex: blockOrderIndexSchema
4069
4554
  }).strict();
4070
- var missingPageBlockSnapshotSchema = z19.object({
4071
- kind: z19.literal("missing-block-content"),
4555
+ var missingPageBlockSnapshotSchema = z21.object({
4556
+ kind: z21.literal("missing-block-content"),
4072
4557
  blockId: designBlockIdSchema,
4073
- identifier: z19.string().nullable(),
4558
+ identifier: z21.string().nullable(),
4074
4559
  blockKind: nonEmptyStringSchema,
4075
4560
  orderIndex: blockOrderIndexSchema,
4076
- reason: z19.enum([
4561
+ reason: z21.enum([
4077
4562
  "new-block",
4078
4563
  "deleted-content-version",
4079
4564
  "unpublished-block"
4080
4565
  ])
4081
4566
  }).strict();
4082
- var pageBlockSnapshotSchema = z19.discriminatedUnion("kind", [
4567
+ var pageBlockSnapshotSchema = z21.discriminatedUnion("kind", [
4083
4568
  publishedPageBlockSnapshotSchema,
4084
4569
  draftPageBlockSnapshotSchema,
4085
4570
  missingPageBlockSnapshotSchema
4086
4571
  ]);
4087
- var publishedPageBlockSequenceSchema = z19.array(publishedPageBlockSnapshotSchema).superRefine(validateBlockSequence);
4088
- var draftPageBlockSequenceSchema = z19.array(pageBlockSnapshotSchema).superRefine(validateBlockSequence);
4089
- var publishedPageDesignVersionDataV1Schema = z19.object({
4090
- schemaVersion: z19.literal(1),
4091
- stage: z19.literal("published"),
4572
+ var publishedPageBlockSequenceSchema = z21.array(publishedPageBlockSnapshotSchema).superRefine(validateBlockSequence);
4573
+ var draftPageBlockSequenceSchema = z21.array(pageBlockSnapshotSchema).superRefine(validateBlockSequence);
4574
+ var publishedPageDesignVersionDataV1Schema = z21.object({
4575
+ schemaVersion: z21.literal(1),
4576
+ stage: z21.literal("published"),
4092
4577
  pageId: designPageIdSchema,
4093
4578
  blockSequence: publishedPageBlockSequenceSchema
4094
4579
  }).strict();
4095
- var draftPageDesignVersionDataV1Schema = z19.object({
4096
- schemaVersion: z19.literal(1),
4097
- stage: z19.literal("draft"),
4580
+ var draftPageDesignVersionDataV1Schema = z21.object({
4581
+ schemaVersion: z21.literal(1),
4582
+ stage: z21.literal("draft"),
4098
4583
  pageId: designPageIdSchema,
4099
4584
  blockSequence: draftPageBlockSequenceSchema
4100
4585
  }).strict();
4101
- var pageDesignVersionDataV1Schema = z19.discriminatedUnion("stage", [
4586
+ var pageDesignVersionDataV1Schema = z21.discriminatedUnion("stage", [
4102
4587
  publishedPageDesignVersionDataV1Schema,
4103
4588
  draftPageDesignVersionDataV1Schema
4104
4589
  ]);
4105
- var contentVersionOwnerSchema = z19.discriminatedUnion("kind", [
4106
- z19.object({
4107
- kind: z19.literal("block"),
4590
+ var contentVersionOwnerSchema = z21.discriminatedUnion("kind", [
4591
+ z21.object({
4592
+ kind: z21.literal("block"),
4108
4593
  blockId: designBlockIdSchema
4109
4594
  }).strict(),
4110
- z19.object({
4111
- kind: z19.literal("entry"),
4595
+ z21.object({
4596
+ kind: z21.literal("entry"),
4112
4597
  entryId: designEntryIdSchema
4113
4598
  }).strict(),
4114
- z19.object({
4115
- kind: z19.literal("page"),
4599
+ z21.object({
4600
+ kind: z21.literal("page"),
4116
4601
  pageId: designPageIdSchema
4117
4602
  }).strict()
4118
4603
  ]);
@@ -4129,7 +4614,7 @@ function collectBlockSequenceIssues(snapshots) {
4129
4614
  snapshots.forEach((snapshot, index) => {
4130
4615
  if (seenBlockIds.has(snapshot.blockId)) {
4131
4616
  issues.push({
4132
- code: z19.ZodIssueCode.custom,
4617
+ code: z21.ZodIssueCode.custom,
4133
4618
  message: `Duplicate blockId in page design blockSequence: ${snapshot.blockId}`,
4134
4619
  path: [index, "blockId"]
4135
4620
  });
@@ -4138,7 +4623,7 @@ function collectBlockSequenceIssues(snapshots) {
4138
4623
  const orderIndex = snapshot.orderIndex;
4139
4624
  if (seenOrderIndexes.has(orderIndex)) {
4140
4625
  issues.push({
4141
- code: z19.ZodIssueCode.custom,
4626
+ code: z21.ZodIssueCode.custom,
4142
4627
  message: `Duplicate orderIndex in page design blockSequence: ${String(orderIndex)}`,
4143
4628
  path: [index, "orderIndex"]
4144
4629
  });
@@ -4146,7 +4631,7 @@ function collectBlockSequenceIssues(snapshots) {
4146
4631
  seenOrderIndexes.add(orderIndex);
4147
4632
  if (previousOrderIndex !== null && orderIndex <= previousOrderIndex) {
4148
4633
  issues.push({
4149
- code: z19.ZodIssueCode.custom,
4634
+ code: z21.ZodIssueCode.custom,
4150
4635
  message: `Expected orderIndex greater than ${String(previousOrderIndex)} for blockSequence position ${String(index)}; received ${String(orderIndex)}.`,
4151
4636
  path: [index, "orderIndex"]
4152
4637
  });
@@ -4157,7 +4642,7 @@ function collectBlockSequenceIssues(snapshots) {
4157
4642
  }
4158
4643
 
4159
4644
  // ../theme-core/src/site-styles/tokenRecipes.ts
4160
- import { z as z20 } from "zod";
4645
+ import { z as z22 } from "zod";
4161
4646
  var themeTokenRecipeOptions = {
4162
4647
  palette: ["brand-led", "warm-neutral", "high-contrast", "soft-natural"],
4163
4648
  contrast: ["standard", "strong", "maximum"],
@@ -4172,50 +4657,16 @@ var themeTokenRecipeOptions = {
4172
4657
  spacing: ["compact", "regular", "airy"],
4173
4658
  motion: ["none", "subtle", "expressive"]
4174
4659
  };
4175
- var themeTokenRecipesSchema = z20.object({
4176
- palette: z20.enum(themeTokenRecipeOptions.palette),
4177
- contrast: z20.enum(themeTokenRecipeOptions.contrast),
4178
- radius: z20.enum(themeTokenRecipeOptions.radius),
4179
- shadow: z20.enum(themeTokenRecipeOptions.shadow),
4180
- typography: z20.enum(themeTokenRecipeOptions.typography),
4181
- spacing: z20.enum(themeTokenRecipeOptions.spacing),
4182
- motion: z20.enum(themeTokenRecipeOptions.motion)
4660
+ var themeTokenRecipesSchema = z22.object({
4661
+ palette: z22.enum(themeTokenRecipeOptions.palette),
4662
+ contrast: z22.enum(themeTokenRecipeOptions.contrast),
4663
+ radius: z22.enum(themeTokenRecipeOptions.radius),
4664
+ shadow: z22.enum(themeTokenRecipeOptions.shadow),
4665
+ typography: z22.enum(themeTokenRecipeOptions.typography),
4666
+ spacing: z22.enum(themeTokenRecipeOptions.spacing),
4667
+ motion: z22.enum(themeTokenRecipeOptions.motion)
4183
4668
  });
4184
4669
 
4185
- // ../theme-core/src/tokens/blockColorTokens.ts
4186
- var blockColorTokenNames = [
4187
- "text",
4188
- "heading",
4189
- "mutedText",
4190
- "surface",
4191
- "background",
4192
- "foreground",
4193
- "border",
4194
- "primary",
4195
- "secondary",
4196
- "accent",
4197
- "success",
4198
- "warning",
4199
- "info",
4200
- "error",
4201
- "destructive",
4202
- "scrim",
4203
- "shadow",
4204
- // Common "on*" tokens used when rendering colored chips/badges.
4205
- "onPrimary",
4206
- "onSecondary",
4207
- "onAccent",
4208
- "onSuccess",
4209
- "onWarning",
4210
- "onInfo",
4211
- "onError",
4212
- "onDestructive",
4213
- "onSurface"
4214
- ];
4215
- var blockColorTokenNameSet = new Set(
4216
- blockColorTokenNames
4217
- );
4218
-
4219
4670
  // ../theme-core/src/palette/utils/colorConversion.ts
4220
4671
  function hexToRgb(hex) {
4221
4672
  const h = hex.replace(/^#/, "");
@@ -9516,6 +9967,12 @@ var containerResponsiveThemeCss = `/*
9516
9967
  padding: 2rem;
9517
9968
  }
9518
9969
 
9970
+ :where(.theme-scope) :where([data-block="event-registration"]) .er-icon {
9971
+ display: flex;
9972
+ justify-content: center;
9973
+ margin-bottom: 1rem;
9974
+ }
9975
+
9519
9976
  :where(.theme-scope) :where([data-block="event-registration"]) .er-actions {
9520
9977
  display: flex;
9521
9978
  justify-content: space-between;
@@ -15203,6 +15660,32 @@ var containerResponsiveThemeCss = `/*
15203
15660
  :where(.theme-scope) :where([data-rb-background-video="true"]) {
15204
15661
  display: none !important;
15205
15662
  }
15663
+ }
15664
+
15665
+ :where(.theme-scope) [data-block="gifting"] .gifting-feedback {
15666
+ border: 1px solid rgb(var(--tb-text, 17 24 39) / 0.12);
15667
+ border-radius: 1rem;
15668
+ padding: 0.875rem 1rem;
15669
+ background: rgb(var(--tb-surface, 255 255 255) / 0.92);
15670
+ color: rgb(var(--tb-text, 17 24 39));
15671
+ }
15672
+
15673
+ :where(.theme-scope) [data-block="gifting"] .gifting-feedback[data-feedback-tone="success"] {
15674
+ border-color: rgba(var(--tb-success, 34 197 94), 0.3);
15675
+ background: rgba(var(--tb-success, 34 197 94), 0.1);
15676
+ color: rgb(var(--tb-success, 34 197 94));
15677
+ }
15678
+
15679
+ :where(.theme-scope) [data-block="gifting"] .gifting-feedback[data-feedback-tone="warning"] {
15680
+ border-color: rgba(var(--tb-warning, 245 158 11), 0.35);
15681
+ background: rgba(var(--tb-warning, 245 158 11), 0.12);
15682
+ color: rgb(var(--tb-warning, 245 158 11));
15683
+ }
15684
+
15685
+ :where(.theme-scope) [data-block="gifting"] .gifting-feedback[data-feedback-tone="error"] {
15686
+ border-color: rgba(var(--tb-destructive, 239 68 68), 0.3);
15687
+ background: rgba(var(--tb-destructive, 239 68 68), 0.1);
15688
+ color: rgb(var(--tb-destructive, 239 68 68));
15206
15689
  }`;
15207
15690
 
15208
15691
  // ../theme-core/src/ThemeScopeCore.tsx
@@ -15474,7 +15957,7 @@ function buildThemeRuntimeFromBridge(config) {
15474
15957
  }
15475
15958
 
15476
15959
  // ../theme-core/src/siteChrome.tsx
15477
- import { Fragment as Fragment2, jsxs as jsxs5 } from "react/jsx-runtime";
15960
+ import { Fragment as Fragment2, jsx as jsx6, jsxs as jsxs5 } from "react/jsx-runtime";
15478
15961
 
15479
15962
  // src/theme-bridge/generateCssVars.ts
15480
15963
  var SCOPE_ID = "sdk";
@@ -15660,7 +16143,7 @@ function generateOverrideCss(overrides) {
15660
16143
  }
15661
16144
 
15662
16145
  // src/theme-bridge/ThemeBridgeProvider.tsx
15663
- import { jsx as jsx6 } from "react/jsx-runtime";
16146
+ import { jsx as jsx7 } from "react/jsx-runtime";
15664
16147
  function ThemeBridgeProvider({
15665
16148
  config,
15666
16149
  children,
@@ -15681,7 +16164,7 @@ function ThemeBridgeProvider({
15681
16164
  }
15682
16165
  return style;
15683
16166
  }, [cssVars]);
15684
- return /* @__PURE__ */ jsx6(
16167
+ return /* @__PURE__ */ jsx7(
15685
16168
  ThemeScopeCore,
15686
16169
  {
15687
16170
  cssVars: cssVarsStyle,