@riverbankcms/sdk 0.60.16 → 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 (232) 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 +59 -1
  4. package/dist/_dts/api/src/bookingRecords.d.ts +101 -4
  5. package/dist/_dts/api/src/bookings.d.ts +2 -1
  6. package/dist/_dts/api/src/calendar.d.ts +11 -1
  7. package/dist/_dts/api/src/contentRuntime.d.ts +2 -0
  8. package/dist/_dts/api/src/contentVersionHistory.d.ts +52 -0
  9. package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +45 -0
  10. package/dist/_dts/api/src/endpoints.d.ts +206 -6
  11. package/dist/_dts/api/src/index.d.ts +9 -2
  12. package/dist/_dts/api/src/participantMessaging.d.ts +113 -0
  13. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +31 -7
  14. package/dist/_dts/api/src/siteMembers.d.ts +10 -1
  15. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +76 -51
  16. package/dist/_dts/api/src/types.d.ts +3 -1
  17. package/dist/_dts/api/src/url.d.ts +3 -3
  18. package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
  19. package/dist/_dts/blocks/src/index.d.ts +66 -62
  20. package/dist/_dts/blocks/src/lib/media.d.ts +60 -0
  21. package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +2 -2
  22. package/dist/_dts/blocks/src/system/blocks/audio-player.d.ts +2 -2
  23. package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +2 -2
  24. package/dist/_dts/blocks/src/system/blocks/blog-post.d.ts +0 -21
  25. package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +2 -6
  26. package/dist/_dts/blocks/src/system/blocks/cart.d.ts +2 -2
  27. package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +2 -2
  28. package/dist/_dts/blocks/src/system/blocks/collection.d.ts +0 -10
  29. package/dist/_dts/blocks/src/system/blocks/columns.d.ts +0 -10
  30. package/dist/_dts/blocks/src/system/blocks/course-details.d.ts +0 -20
  31. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +0 -20
  32. package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +15 -15
  33. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +5 -10
  34. package/dist/_dts/blocks/src/system/blocks/embed.d.ts +0 -11
  35. package/dist/_dts/blocks/src/system/blocks/event-details.d.ts +0 -20
  36. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +0 -20
  37. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +43 -27
  38. package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +24 -15
  39. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -2
  40. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +132 -12
  41. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +3 -2
  42. package/dist/_dts/blocks/src/system/blocks/faq.d.ts +2 -10
  43. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +2 -2
  44. package/dist/_dts/blocks/src/system/blocks/form.d.ts +2 -24
  45. package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +2 -2
  46. package/dist/_dts/blocks/src/system/blocks/hero.d.ts +2 -3
  47. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +2 -2
  48. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +0 -13
  49. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +17 -17
  50. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +2 -10
  51. package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +2 -2
  52. package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +2 -2
  53. package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +9 -9
  54. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
  55. package/dist/_dts/blocks/src/system/blocks/single-button.d.ts +16 -15
  56. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +2 -6
  57. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +0 -11
  58. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -3
  59. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +2 -2
  60. package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +2 -2
  61. package/dist/_dts/blocks/src/system/constants/events.d.ts +18 -0
  62. package/dist/_dts/blocks/src/system/customize/facets.d.ts +105 -0
  63. package/dist/_dts/blocks/src/system/defineBlock.d.ts +29 -5
  64. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
  65. package/dist/_dts/blocks/src/system/fragments/library/blogFeaturedPost.d.ts +0 -24
  66. package/dist/_dts/blocks/src/system/fragments/library/bodyCopy.d.ts +0 -4
  67. package/dist/_dts/blocks/src/system/fragments/library/bookingForm.d.ts +0 -4
  68. package/dist/_dts/blocks/src/system/fragments/library/card.d.ts +0 -6
  69. package/dist/_dts/blocks/src/system/fragments/library/columnContent.d.ts +0 -6
  70. package/dist/_dts/blocks/src/system/fragments/library/ctaCopy.d.ts +0 -4
  71. package/dist/_dts/blocks/src/system/fragments/library/ctaRow.d.ts +0 -4
  72. package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +0 -4
  73. package/dist/_dts/blocks/src/system/fragments/library/faqHeading.d.ts +0 -4
  74. package/dist/_dts/blocks/src/system/fragments/library/feedbackCallout.d.ts +0 -6
  75. package/dist/_dts/blocks/src/system/fragments/library/footerBottomText.d.ts +0 -4
  76. package/dist/_dts/blocks/src/system/fragments/library/formCopy.d.ts +0 -4
  77. package/dist/_dts/blocks/src/system/fragments/library/formEmbed.d.ts +0 -18
  78. package/dist/_dts/blocks/src/system/fragments/library/headerCta.d.ts +0 -4
  79. package/dist/_dts/blocks/src/system/fragments/library/heading.d.ts +0 -6
  80. package/dist/_dts/blocks/src/system/fragments/library/heroCopy.d.ts +0 -4
  81. package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +0 -4
  82. package/dist/_dts/blocks/src/system/fragments/library/heroLayoutControls.d.ts +0 -4
  83. package/dist/_dts/blocks/src/system/fragments/library/image.d.ts +0 -6
  84. package/dist/_dts/blocks/src/system/fragments/library/newsletterCopy.d.ts +0 -4
  85. package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +0 -4
  86. package/dist/_dts/blocks/src/system/fragments/library/quote.d.ts +0 -6
  87. package/dist/_dts/blocks/src/system/fragments/library/richText.d.ts +0 -6
  88. package/dist/_dts/blocks/src/system/fragments/library/sectionState.d.ts +0 -6
  89. package/dist/_dts/blocks/src/system/fragments/library/singleButton.d.ts +0 -4
  90. package/dist/_dts/blocks/src/system/fragments/library/spinner.d.ts +0 -5
  91. package/dist/_dts/blocks/src/system/fragments/library/teamMember.d.ts +0 -6
  92. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +0 -31
  93. package/dist/_dts/blocks/src/system/fragments/library/testimonialsHeading.d.ts +0 -4
  94. package/dist/_dts/blocks/src/system/fragments/library/videoEmbed.d.ts +0 -6
  95. package/dist/_dts/blocks/src/system/fragments/types.d.ts +11 -3
  96. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +4 -0
  97. package/dist/_dts/blocks/src/system/index.d.ts +1 -0
  98. package/dist/_dts/blocks/src/system/manifest/derivedContent.d.ts +3 -3
  99. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +10 -10
  100. package/dist/_dts/blocks/src/system/media/constrainedVideoMedia.d.ts +13 -0
  101. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -0
  102. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -0
  103. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +4 -0
  104. package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +1 -0
  105. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.state.d.ts +12 -0
  106. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -0
  107. package/dist/_dts/blocks/src/system/runtime/shared/components/FieldValidationMessage.d.ts +19 -0
  108. package/dist/_dts/blocks/src/system/runtime/shared/components/TerminalPanel.d.ts +8 -2
  109. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +3 -1
  110. package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
  111. package/dist/_dts/blocks/src/system/transforms/registry/_utils/themeColorResolution.d.ts +7 -0
  112. package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +24 -0
  113. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  114. package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +1 -0
  115. package/dist/_dts/content-editor/src/ui/stores/types.d.ts +1 -0
  116. package/dist/_dts/content-model/src/contentManifest.d.ts +2 -2
  117. package/dist/_dts/content-model/src/referenceFields.d.ts +7 -1
  118. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +242 -6
  119. package/dist/_dts/db/src/schemas/forms.d.ts +1 -0
  120. package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -0
  121. package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerWidgetProvider.d.ts +3 -2
  122. package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +2 -1
  123. package/dist/_dts/editor-blocks/src/widgets/entry-picker/types.d.ts +2 -1
  124. package/dist/_dts/editor-blocks/src/widgets/link/LinkPicker.d.ts +2 -1
  125. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +2 -1
  126. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidgetContext.d.ts +2 -1
  127. package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +2 -1
  128. package/dist/_dts/editor-blocks/src/widgets/link/types.d.ts +3 -2
  129. package/dist/_dts/editor-blocks/src/widgets/reference/dynamicAdapters.d.ts +9 -0
  130. package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +5 -1
  131. package/dist/_dts/media-core/src/index.d.ts +1 -0
  132. package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +38 -0
  133. package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -1
  134. package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +7 -0
  135. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +2 -1
  136. package/dist/_dts/preview-next/src/client/blocks/composer/composePageFromBlocks.d.ts +2 -1
  137. package/dist/_dts/preview-next/src/client/blocks/composer/index.d.ts +2 -2
  138. package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +2 -1
  139. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +31 -8
  140. package/dist/_dts/preview-next/src/client/blocks/customizeFacetControls.d.ts +9 -0
  141. package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +6 -5
  142. package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +14 -0
  143. package/dist/_dts/preview-next/src/client/blocks/previewProjection/aiProposalProjection.d.ts +7 -0
  144. package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +7 -0
  145. package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +4 -0
  146. package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +5 -0
  147. package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +72 -0
  148. package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
  149. package/dist/_dts/preview-next/src/client/layout/PreviewLayoutContext.d.ts +8 -5
  150. package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +2 -1
  151. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +11 -1
  152. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -5
  153. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -1
  154. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +13 -2
  155. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +7 -1
  156. package/dist/_dts/preview-next/src/client/preview/previewCustomizeControlStyles.d.ts +1 -0
  157. package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +7 -3
  158. package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +9 -1
  159. package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +13 -0
  160. package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +8 -2
  161. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +49 -0
  162. package/dist/_dts/preview-next/src/client/widgets/widgetAdapters.d.ts +1 -1
  163. package/dist/_dts/sdk/src/contracts/content.d.ts +10 -0
  164. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +1 -1
  165. package/dist/_dts/sdk/src/manifest/prompt/examples/features-grid.d.ts +1 -1
  166. package/dist/_dts/sdk/src/manifest/prompt/examples/pricing.d.ts +5 -5
  167. package/dist/_dts/sdk/src/public-api/contracts.d.ts +3 -1
  168. package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +1 -0
  169. package/dist/_dts/sdk/src/version.d.ts +1 -1
  170. package/dist/_dts/surfaces/src/index.d.ts +1 -0
  171. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  172. package/dist/_dts/theme-core/src/index.d.ts +1 -0
  173. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -0
  174. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +2 -21
  175. package/dist/_dts/theme-core/src/schema.d.ts +25 -0
  176. package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +451 -0
  177. package/dist/_dts/theme-core/src/site-styles/appearancePresetResolution.d.ts +12 -0
  178. package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +61 -0
  179. package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +5 -563
  180. package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +448 -0
  181. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +30 -0
  182. package/dist/_dts/theme-core/src/site-styles/customizableSurfaces.d.ts +94 -0
  183. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +12 -0
  184. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +59 -0
  185. package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +4 -0
  186. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -0
  187. package/dist/_dts/theme-core/src/site-styles/headerCtaVariants.d.ts +3 -0
  188. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +155 -0
  189. package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +15 -0
  190. package/dist/_dts/theme-core/src/site-styles/index.d.ts +6 -0
  191. package/dist/_dts/theme-core/src/site-styles/pageDesignAuthority.d.ts +7 -0
  192. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +25 -0
  193. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +15 -1
  194. package/dist/_dts/theme-core/src/site-styles/records.d.ts +1 -0
  195. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +8 -0
  196. package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +96 -0
  197. package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +6 -6
  198. package/dist/_dts/theme-core/src/site-styles/types.d.ts +23 -5
  199. package/dist/_dts/theme-core/src/siteChrome.d.ts +53 -0
  200. package/dist/_dts/theme-core/src/tokens/colorTokenParts.d.ts +13 -0
  201. package/dist/_dts/theme-core/src/tokens/index.d.ts +2 -0
  202. package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +29 -0
  203. package/dist/_dts/theme-core/src/utils/tokenOrColor.d.ts +27 -1
  204. package/dist/cli/index.mjs +5149 -3635
  205. package/dist/client/bookings.mjs +711 -560
  206. package/dist/client/client.mjs +10110 -8168
  207. package/dist/client/hooks.mjs +3861 -2739
  208. package/dist/client/rendering/client.mjs +8606 -7009
  209. package/dist/client/rendering/islands.mjs +25202 -23768
  210. package/dist/client/rendering.mjs +10661 -8713
  211. package/dist/preview-next/before-render.mjs +256 -6
  212. package/dist/preview-next/client/runtime.mjs +7700 -4016
  213. package/dist/preview-next/editor-base.css +31 -0
  214. package/dist/preview-next/middleware.mjs +267 -6
  215. package/dist/server/components.mjs +4501 -3270
  216. package/dist/server/config-validation.mjs +4089 -2967
  217. package/dist/server/config.mjs +4089 -2967
  218. package/dist/server/data.mjs +3861 -2739
  219. package/dist/server/index.mjs +322 -24
  220. package/dist/server/next.mjs +4274 -3041
  221. package/dist/server/page-converter.mjs +3520 -2717
  222. package/dist/server/prebuild.mjs +1 -1
  223. package/dist/server/rendering/server.mjs +4500 -3270
  224. package/dist/server/rendering.mjs +4526 -3291
  225. package/dist/server/routing.mjs +4006 -2723
  226. package/dist/server/server.mjs +3897 -2772
  227. package/dist/server/theme-bridge.mjs +1435 -788
  228. package/dist/server/theme.mjs +628 -497
  229. package/dist/styles/index.css +61 -9
  230. package/package.json +1 -1
  231. package/dist/_dts/blocks/src/system/transforms/registry/_utils/colorResolution.d.ts +0 -13
  232. package/dist/_dts/preview-next/src/client/blocks/overlay.d.ts +0 -30
@@ -14,6 +14,11 @@ function brandNonEmptyString(value, label) {
14
14
  }
15
15
  return value;
16
16
  }
17
+ var tileTreatmentValues = [
18
+ "default",
19
+ "quiet",
20
+ "brand-depth"
21
+ ];
17
22
  var eyebrowTreatmentValues = [
18
23
  "plain",
19
24
  "pill",
@@ -23,10 +28,141 @@ var eyebrowTreatmentValues = [
23
28
  ];
24
29
 
25
30
  // ../theme-core/src/buttons/personalities/types.ts
26
- import { z as z3 } from "zod";
31
+ import { z as z4 } from "zod";
27
32
 
28
33
  // ../theme-core/src/buttons/types.ts
34
+ import { z as z2 } from "zod";
35
+
36
+ // ../theme-core/src/tokens/themeColorTokens.ts
29
37
  import { z } from "zod";
38
+
39
+ // ../theme-core/src/tokens/colorTokenParts.ts
40
+ function parseOpacityPercent(source) {
41
+ const trimmed = source.trim();
42
+ if (!trimmed) return null;
43
+ if (!/^\d{1,3}(?:\.\d+)?$/.test(trimmed)) return null;
44
+ const value = Number(trimmed);
45
+ if (!Number.isFinite(value)) return null;
46
+ if (value < 0 || value > 100) return null;
47
+ return value;
48
+ }
49
+ function parseColorTokenParts(source) {
50
+ const trimmed = source.trim();
51
+ if (trimmed.startsWith("raw:")) {
52
+ return { kind: "raw", value: trimmed.slice(4) };
53
+ }
54
+ const [token, opacityRaw, extra] = trimmed.split("/");
55
+ if (!token || extra !== void 0) {
56
+ return { kind: "invalid", token: trimmed };
57
+ }
58
+ if (opacityRaw === void 0) {
59
+ return { kind: "token", token, opacityPercent: null };
60
+ }
61
+ const opacityPercent = parseOpacityPercent(opacityRaw);
62
+ if (opacityPercent === null) {
63
+ return { kind: "invalid", token: trimmed };
64
+ }
65
+ return { kind: "token", token, opacityPercent };
66
+ }
67
+
68
+ // ../theme-core/src/tokens/blockColorTokens.ts
69
+ var blockColorTokenNames = [
70
+ "text",
71
+ "heading",
72
+ "mutedText",
73
+ "surface",
74
+ "background",
75
+ "foreground",
76
+ "border",
77
+ "primary",
78
+ "secondary",
79
+ "accent",
80
+ "success",
81
+ "warning",
82
+ "info",
83
+ "error",
84
+ "destructive",
85
+ "scrim",
86
+ "shadow",
87
+ // Common "on*" tokens used when rendering colored chips/badges.
88
+ "onPrimary",
89
+ "onSecondary",
90
+ "onAccent",
91
+ "onSuccess",
92
+ "onWarning",
93
+ "onInfo",
94
+ "onError",
95
+ "onDestructive",
96
+ "onSurface"
97
+ ];
98
+ var blockColorTokenNameSet = new Set(
99
+ blockColorTokenNames
100
+ );
101
+
102
+ // ../theme-core/src/tokens/themeColorTokens.ts
103
+ var PALETTE_TOKEN_NAMES = [
104
+ "primary",
105
+ "primaryForeground",
106
+ "secondary",
107
+ "accent",
108
+ "success",
109
+ "warning",
110
+ "destructive",
111
+ "background",
112
+ "surface",
113
+ "surfaceAlt",
114
+ "muted",
115
+ "text",
116
+ "border"
117
+ ];
118
+ var paletteTokenNameSchema = z.enum(PALETTE_TOKEN_NAMES);
119
+ var themeColorBaseTokenNames = [
120
+ ...PALETTE_TOKEN_NAMES,
121
+ ...blockColorTokenNames,
122
+ // Existing generated themes can carry palette-local "white" tokens in
123
+ // token-only component fields. Keep it explicit until those rows are
124
+ // migrated to canonical foreground/background roles.
125
+ "white",
126
+ "neutral",
127
+ "primaryText",
128
+ "secondaryForeground",
129
+ "accentForeground"
130
+ ];
131
+ var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
132
+ var SHADE_STEPS = [
133
+ "50",
134
+ "100",
135
+ "200",
136
+ "300",
137
+ "400",
138
+ "500",
139
+ "600",
140
+ "700",
141
+ "800",
142
+ "900",
143
+ "950"
144
+ ];
145
+ var shadeStepSet = new Set(SHADE_STEPS);
146
+ function isKnownBaseToken(value) {
147
+ return themeColorBaseTokenSet.has(value);
148
+ }
149
+ function isKnownShadeToken(value) {
150
+ const match = value.match(/^([a-zA-Z][a-zA-Z0-9]*)(?:-([0-9]{2,3}))$/);
151
+ if (!match) return false;
152
+ const [, base, shade] = match;
153
+ return Boolean(base && shade && isKnownBaseToken(base) && shadeStepSet.has(shade));
154
+ }
155
+ function isThemeColorTokenBase(value) {
156
+ return isKnownBaseToken(value) || isKnownShadeToken(value);
157
+ }
158
+ function isThemeColorToken(value) {
159
+ if (typeof value !== "string") return false;
160
+ const parts = parseColorTokenParts(value);
161
+ return parts.kind === "token" && isThemeColorTokenBase(parts.token);
162
+ }
163
+ var themeColorTokenSchema = z.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
164
+
165
+ // ../theme-core/src/buttons/types.ts
30
166
  var VARIANT_ROLES = [
31
167
  "primary",
32
168
  "secondary",
@@ -36,22 +172,22 @@ var VARIANT_ROLES = [
36
172
  "tertiary",
37
173
  "accent"
38
174
  ];
39
- var cornerStyleSchema = z.enum(["square", "rounded", "pill"]);
40
- var shadowSizeSchema = z.enum(["none", "low", "medium", "high"]);
41
- var textTransformSchema = z.enum(["none", "uppercase", "lowercase", "capitalize"]);
42
- var fontWeightSchema = z.union([z.literal(500), z.literal(600), z.literal(700)]);
43
- var buttonTypographySchema = z.enum(["body", "heading"]);
44
- var letterSpacingSchema = z.enum(["tight", "normal", "loose"]);
45
- var hoverTransformSchema = z.enum(["none", "lift", "scale", "press"]);
46
- var hoverColorSchema = z.enum(["none", "brighten", "darken", "saturate", "token"]);
47
- var buttonPaddingPresetSchema = z.enum(["compact", "default", "spacious"]);
48
- var gradientStyleSchema = z.enum(["linear", "radial", "conic"]);
49
- var gradientSharpnessSchema = z.enum(["smooth", "medium", "hard"]);
50
- var prioritySchema = z.union([z.literal(1), z.literal(2), z.literal(3)]);
51
- var variantRoleSchema = z.enum(VARIANT_ROLES);
52
- var buttonSizeNameSchema = z.enum(["sm", "md", "lg", "xl"]);
175
+ var cornerStyleSchema = z2.enum(["square", "rounded", "pill"]);
176
+ var shadowSizeSchema = z2.enum(["none", "low", "medium", "high"]);
177
+ var textTransformSchema = z2.enum(["none", "uppercase", "lowercase", "capitalize"]);
178
+ var fontWeightSchema = z2.union([z2.literal(500), z2.literal(600), z2.literal(700)]);
179
+ var buttonTypographySchema = z2.enum(["body", "heading"]);
180
+ var letterSpacingSchema = z2.enum(["tight", "normal", "loose"]);
181
+ var hoverTransformSchema = z2.enum(["none", "lift", "scale", "press"]);
182
+ var hoverColorSchema = z2.enum(["none", "brighten", "darken", "saturate", "token"]);
183
+ var buttonPaddingPresetSchema = z2.enum(["compact", "default", "spacious"]);
184
+ var gradientStyleSchema = z2.enum(["linear", "radial", "conic"]);
185
+ var gradientSharpnessSchema = z2.enum(["smooth", "medium", "hard"]);
186
+ var prioritySchema = z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]);
187
+ var variantRoleSchema = z2.enum(VARIANT_ROLES);
188
+ var buttonSizeNameSchema = z2.enum(["sm", "md", "lg", "xl"]);
53
189
  var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
54
- var paddingShorthandSchema = z.string().refine(
190
+ var paddingShorthandSchema = z2.string().refine(
55
191
  (value) => {
56
192
  const parts = value.split(/\s+/).filter(Boolean);
57
193
  return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
@@ -60,11 +196,11 @@ var paddingShorthandSchema = z.string().refine(
60
196
  message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
61
197
  }
62
198
  );
63
- var buttonSizeConfigSchema = z.object({
199
+ var buttonSizeConfigSchema = z2.object({
64
200
  padding: paddingShorthandSchema,
65
- fontSize: z.string().optional()
201
+ fontSize: z2.string().optional()
66
202
  });
67
- var buttonSizesSchema = z.object({
203
+ var buttonSizesSchema = z2.object({
68
204
  sm: buttonSizeConfigSchema,
69
205
  md: buttonSizeConfigSchema,
70
206
  lg: buttonSizeConfigSchema,
@@ -75,9 +211,9 @@ var buttonSizesSchema = z.object({
75
211
  lg,
76
212
  xl: xl ?? lg
77
213
  }));
78
- var buttonGlobalSettingsSchema = z.object({
214
+ var buttonGlobalSettingsSchema = z2.object({
79
215
  cornerStyle: cornerStyleSchema,
80
- cornerRadius: z.number().min(0).max(24).optional(),
216
+ cornerRadius: z2.number().min(0).max(24).optional(),
81
217
  shadow: shadowSizeSchema,
82
218
  textTransform: textTransformSchema,
83
219
  fontWeight: fontWeightSchema,
@@ -87,104 +223,104 @@ var buttonGlobalSettingsSchema = z.object({
87
223
  * by the current generator and will be removed once the legacy
88
224
  * `primitives/content/components/Button.tsx` slot exports are deleted.
89
225
  */
90
- borderWidth: z.union([z.literal(1), z.literal(2), z.literal(3)]),
226
+ borderWidth: z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]),
91
227
  // === Family-level typography ===
92
228
  // Typography source (body or heading) — selects which theme typography pool to inherit
93
229
  typography: buttonTypographySchema.optional(),
94
230
  // Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
95
231
  // Sized variants get this as default; fixed variants inherit unless they override.
96
232
  // Size class CSS may still override at run time for sized variants.
97
- fontSize: z.string().optional(),
233
+ fontSize: z2.string().optional(),
98
234
  // Letter spacing applied to all variants
99
235
  letterSpacing: letterSpacingSchema.optional(),
100
236
  // Italic style
101
- italic: z.boolean().optional(),
237
+ italic: z2.boolean().optional(),
102
238
  // Padding preset (applies to sized variants without a sizes config)
103
239
  paddingPreset: buttonPaddingPresetSchema.optional(),
104
240
  hoverTransform: hoverTransformSchema,
105
241
  hoverColor: hoverColorSchema,
106
242
  // When hoverColor is 'token', this specifies which token to use
107
- hoverColorToken: z.string().optional(),
243
+ hoverColorToken: themeColorTokenSchema.optional(),
108
244
  // Gradient settings (if any variant uses gradients)
109
245
  gradientStyle: gradientStyleSchema.optional(),
110
- gradientAngle: z.number().min(0).max(360).optional(),
246
+ gradientAngle: z2.number().min(0).max(360).optional(),
111
247
  gradientSharpness: gradientSharpnessSchema.optional()
112
248
  });
113
- var gradientDirectionSchema = z.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
114
- var buttonBackgroundSchema = z.discriminatedUnion("type", [
115
- z.object({ type: z.literal("solid"), colorToken: z.string() }),
116
- z.object({
117
- type: z.literal("gradient"),
118
- stops: z.array(z.string()).min(2),
249
+ var gradientDirectionSchema = z2.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
250
+ var buttonBackgroundSchema = z2.discriminatedUnion("type", [
251
+ z2.object({ type: z2.literal("solid"), colorToken: themeColorTokenSchema }),
252
+ z2.object({
253
+ type: z2.literal("gradient"),
254
+ stops: z2.array(themeColorTokenSchema).min(2),
119
255
  direction: gradientDirectionSchema
120
256
  }),
121
- z.object({ type: z.literal("transparent") })
257
+ z2.object({ type: z2.literal("transparent") })
122
258
  ]);
123
- var effectApplicationSchema = z.object({
124
- effectId: z.string(),
125
- options: z.record(z.string(), z.any()).optional()
126
- });
127
- var buttonBorderSchema = z.object({
128
- widthClass: z.string(),
129
- colorToken: z.string()
130
- });
131
- var variantShadowSchema = z.object({
132
- elevation: z.enum(["none", "low", "medium", "high"]),
133
- softness: z.enum(["crisp", "soft", "hard"]).nullable(),
134
- position: z.enum(["bottom", "bottom-right"]).default("bottom")
135
- });
136
- var variantEffectsSchema = z.object({
137
- base: z.array(effectApplicationSchema).optional(),
138
- hover: z.array(effectApplicationSchema).optional(),
139
- active: z.array(effectApplicationSchema).optional(),
140
- focus: z.array(effectApplicationSchema).optional()
141
- });
142
- var variantSizeOverridesSchema = z.object({
259
+ var effectApplicationSchema = z2.object({
260
+ effectId: z2.string(),
261
+ options: z2.record(z2.string(), z2.any()).optional()
262
+ });
263
+ var buttonBorderSchema = z2.object({
264
+ widthClass: z2.string(),
265
+ colorToken: themeColorTokenSchema
266
+ });
267
+ var variantShadowSchema = z2.object({
268
+ elevation: z2.enum(["none", "low", "medium", "high"]),
269
+ softness: z2.enum(["crisp", "soft", "hard"]).nullable(),
270
+ position: z2.enum(["bottom", "bottom-right"]).default("bottom")
271
+ });
272
+ var variantEffectsSchema = z2.object({
273
+ base: z2.array(effectApplicationSchema).optional(),
274
+ hover: z2.array(effectApplicationSchema).optional(),
275
+ active: z2.array(effectApplicationSchema).optional(),
276
+ focus: z2.array(effectApplicationSchema).optional()
277
+ });
278
+ var variantSizeOverridesSchema = z2.object({
143
279
  sm: buttonSizeConfigSchema.optional(),
144
280
  md: buttonSizeConfigSchema.optional(),
145
281
  lg: buttonSizeConfigSchema.optional(),
146
282
  xl: buttonSizeConfigSchema.optional()
147
283
  });
148
- var buttonVariantSchema = z.object({
149
- id: z.string(),
150
- name: z.string().min(1).max(20),
151
- enabled: z.boolean(),
284
+ var buttonVariantSchema = z2.object({
285
+ id: z2.string(),
286
+ name: z2.string().min(1).max(20),
287
+ enabled: z2.boolean(),
152
288
  priority: prioritySchema,
153
289
  // Base appearance (token-based)
154
290
  background: buttonBackgroundSchema,
155
- textColorToken: z.string(),
291
+ textColorToken: themeColorTokenSchema,
156
292
  /** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
157
- borderRadius: z.string().optional(),
293
+ borderRadius: z2.string().optional(),
158
294
  // Optional shadow override (uses theme.shadow if not specified)
159
295
  shadow: variantShadowSchema.optional(),
160
296
  // Border (optional)
161
297
  border: buttonBorderSchema.optional(),
162
298
  // Hover background token (per-variant override, takes precedence over global hoverColorToken)
163
- hoverBackgroundToken: z.string().optional(),
299
+ hoverBackgroundToken: z2.string().optional(),
164
300
  // Effect composition
165
301
  effects: variantEffectsSchema.optional(),
166
302
  // Per-variant size overrides — see VariantSizeOverrides
167
303
  sizes: variantSizeOverridesSchema.optional()
168
304
  });
169
- var buttonSystemSchema = z.object({
305
+ var buttonSystemSchema = z2.object({
170
306
  global: buttonGlobalSettingsSchema,
171
- variants: z.array(buttonVariantSchema).min(1).max(6),
307
+ variants: z2.array(buttonVariantSchema).min(1).max(6),
172
308
  sizes: buttonSizesSchema.optional()
173
309
  });
174
310
 
175
311
  // ../theme-core/src/site-styles/styleTags.ts
176
- import { z as z2 } from "zod";
312
+ import { z as z3 } from "zod";
177
313
  var STYLE_AXIS_VALUES = {
178
314
  tone: ["minimal", "classic", "bold"],
179
315
  energy: ["calm", "vibrant"],
180
316
  motion: ["subtle", "standard", "expressive"],
181
317
  era: ["editorial", "modern", "organic", "technical", "retro"]
182
318
  };
183
- var styleTagsSchema = z2.object({
184
- tone: z2.enum(STYLE_AXIS_VALUES.tone).optional(),
185
- energy: z2.enum(STYLE_AXIS_VALUES.energy).optional(),
186
- motion: z2.enum(STYLE_AXIS_VALUES.motion).optional(),
187
- era: z2.enum(STYLE_AXIS_VALUES.era).optional()
319
+ var styleTagsSchema = z3.object({
320
+ tone: z3.enum(STYLE_AXIS_VALUES.tone).optional(),
321
+ energy: z3.enum(STYLE_AXIS_VALUES.energy).optional(),
322
+ motion: z3.enum(STYLE_AXIS_VALUES.motion).optional(),
323
+ era: z3.enum(STYLE_AXIS_VALUES.era).optional()
188
324
  });
189
325
 
190
326
  // ../theme-core/src/buttons/personalities/types.ts
@@ -194,11 +330,11 @@ function asButtonPersonalityId(value) {
194
330
  }
195
331
  return value;
196
332
  }
197
- var buttonPersonalityIdSchema = z3.string().min(1).transform((value) => asButtonPersonalityId(value));
198
- var buttonPersonalitySchema = z3.object({
333
+ var buttonPersonalityIdSchema = z4.string().min(1).transform((value) => asButtonPersonalityId(value));
334
+ var buttonPersonalitySchema = z4.object({
199
335
  id: buttonPersonalityIdSchema,
200
- name: z3.string().min(1),
201
- description: z3.string().min(1),
336
+ name: z4.string().min(1),
337
+ description: z4.string().min(1),
202
338
  tags: styleTagsSchema,
203
339
  buttonSystem: buttonSystemSchema
204
340
  });
@@ -843,48 +979,48 @@ var personalitiesById = new Map(
843
979
  );
844
980
 
845
981
  // ../theme-core/src/schema.ts
846
- import { z as z14 } from "zod";
982
+ import { z as z16 } from "zod";
847
983
 
848
984
  // ../theme-core/src/lib/media.ts
849
- import z4 from "zod";
850
- var hotspotSchema = z4.object({
851
- x: z4.number().min(0).max(1),
852
- y: z4.number().min(0).max(1),
853
- radius: z4.number().optional()
854
- });
855
- var rotationSchema = z4.union([z4.literal(0), z4.literal(90), z4.literal(180), z4.literal(270)]);
856
- var rectSchema = z4.tuple([z4.number(), z4.number(), z4.number(), z4.number()]);
857
- var aspectCropSchema = z4.object({
858
- aspect: z4.preprocess((value) => value == null ? void 0 : value, z4.string().optional()),
859
- rect: z4.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
860
- hotspot: z4.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
861
- rotation: z4.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
862
- });
863
- var transformSchema = z4.object({
864
- aspectCrops: z4.preprocess((value) => {
985
+ import z5 from "zod";
986
+ var hotspotSchema = z5.object({
987
+ x: z5.number().min(0).max(1),
988
+ y: z5.number().min(0).max(1),
989
+ radius: z5.number().optional()
990
+ });
991
+ var rotationSchema = z5.union([z5.literal(0), z5.literal(90), z5.literal(180), z5.literal(270)]);
992
+ var rectSchema = z5.tuple([z5.number(), z5.number(), z5.number(), z5.number()]);
993
+ var aspectCropSchema = z5.object({
994
+ aspect: z5.preprocess((value) => value == null ? void 0 : value, z5.string().optional()),
995
+ rect: z5.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
996
+ hotspot: z5.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
997
+ rotation: z5.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
998
+ });
999
+ var transformSchema = z5.object({
1000
+ aspectCrops: z5.preprocess((value) => {
865
1001
  if (!value || typeof value !== "object" || Array.isArray(value)) {
866
1002
  return void 0;
867
1003
  }
868
1004
  return value;
869
- }, z4.record(z4.string(), aspectCropSchema.catch({}))).optional(),
1005
+ }, z5.record(z5.string(), aspectCropSchema.catch({}))).optional(),
870
1006
  rect: rectSchema.optional(),
871
1007
  hotspot: hotspotSchema.optional(),
872
1008
  rotation: rotationSchema.optional()
873
1009
  });
874
- var mediaSchema = z4.object({
875
- type: z4.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
876
- purpose: z4.string().optional(),
877
- placeholder: z4.boolean().default(true).optional(),
878
- assetId: z4.string().optional(),
879
- identifier: z4.string().optional(),
880
- src: z4.string().optional(),
881
- alt: z4.string().optional(),
882
- filename: z4.string().optional(),
883
- mimeType: z4.string().optional(),
884
- width: z4.number().optional(),
885
- height: z4.number().optional(),
886
- storageBucket: z4.string().optional(),
887
- storagePath: z4.string().optional(),
1010
+ var mediaSchema = z5.object({
1011
+ type: z5.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
1012
+ purpose: z5.string().optional(),
1013
+ placeholder: z5.boolean().default(true).optional(),
1014
+ assetId: z5.string().optional(),
1015
+ identifier: z5.string().optional(),
1016
+ src: z5.string().optional(),
1017
+ alt: z5.string().optional(),
1018
+ filename: z5.string().optional(),
1019
+ mimeType: z5.string().optional(),
1020
+ width: z5.number().optional(),
1021
+ height: z5.number().optional(),
1022
+ storageBucket: z5.string().optional(),
1023
+ storagePath: z5.string().optional(),
888
1024
  transform: transformSchema.optional()
889
1025
  });
890
1026
 
@@ -892,48 +1028,48 @@ var mediaSchema = z4.object({
892
1028
  var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
893
1029
 
894
1030
  // ../theme-core/src/cards/types.ts
895
- import { z as z5 } from "zod";
896
- var cardSpacingSchema = z5.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
897
- var gradientDirectionSchema2 = z5.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
898
- var cardBackgroundSchema = z5.discriminatedUnion("type", [
899
- z5.object({ type: z5.literal("solid"), colorToken: z5.string() }),
900
- z5.object({
901
- type: z5.literal("gradient"),
902
- fromToken: z5.string(),
903
- toToken: z5.string(),
1031
+ import { z as z6 } from "zod";
1032
+ var cardSpacingSchema = z6.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
1033
+ var gradientDirectionSchema2 = z6.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
1034
+ var cardBackgroundSchema = z6.discriminatedUnion("type", [
1035
+ z6.object({ type: z6.literal("solid"), colorToken: themeColorTokenSchema }),
1036
+ z6.object({
1037
+ type: z6.literal("gradient"),
1038
+ fromToken: themeColorTokenSchema,
1039
+ toToken: themeColorTokenSchema,
904
1040
  direction: gradientDirectionSchema2
905
1041
  }),
906
- z5.object({ type: z5.literal("transparent") })
1042
+ z6.object({ type: z6.literal("transparent") })
907
1043
  ]);
908
- var cardBorderSchema = z5.object({
909
- widthClass: z5.string(),
910
- colorToken: z5.string()
911
- });
912
- var cardVariantSchema = z5.object({
913
- id: z5.string(),
914
- name: z5.string().min(1).max(20),
915
- enabled: z5.boolean(),
916
- priority: z5.union([z5.literal(1), z5.literal(2), z5.literal(3)]),
1044
+ var cardBorderSchema = z6.object({
1045
+ widthClass: z6.string(),
1046
+ colorToken: themeColorTokenSchema
1047
+ });
1048
+ var cardVariantSchema = z6.object({
1049
+ id: z6.string(),
1050
+ name: z6.string().min(1).max(20),
1051
+ enabled: z6.boolean(),
1052
+ priority: z6.union([z6.literal(1), z6.literal(2), z6.literal(3)]),
917
1053
  // Appearance (token-based)
918
1054
  background: cardBackgroundSchema,
919
1055
  spacing: cardSpacingSchema,
920
1056
  // Optional overrides (uses theme defaults if not specified)
921
- shadow: z5.object({
922
- elevation: z5.enum(["none", "low", "medium", "high"]),
923
- softness: z5.enum(["crisp", "soft", "hard"]).nullable(),
924
- position: z5.enum(["bottom", "bottom-right"]).default("bottom")
1057
+ shadow: z6.object({
1058
+ elevation: z6.enum(["none", "low", "medium", "high"]),
1059
+ softness: z6.enum(["crisp", "soft", "hard"]).nullable(),
1060
+ position: z6.enum(["bottom", "bottom-right"]).default("bottom")
925
1061
  }).optional(),
926
- corners: z5.enum(["square", "soft", "rounded", "pill"]).optional(),
1062
+ corners: z6.enum(["square", "soft", "rounded", "pill"]).optional(),
927
1063
  // Border (optional)
928
1064
  border: cardBorderSchema.optional()
929
1065
  });
930
- var cardSystemSchema = z5.object({
931
- variants: z5.array(cardVariantSchema).min(1).max(3)
1066
+ var cardSystemSchema = z6.object({
1067
+ variants: z6.array(cardVariantSchema).min(1).max(3)
932
1068
  });
933
1069
 
934
1070
  // ../theme-core/src/accordions/types.ts
935
- import { z as z6 } from "zod";
936
- var accordionIconSchema = z6.enum([
1071
+ import { z as z7 } from "zod";
1072
+ var accordionIconSchema = z7.enum([
937
1073
  "plus-minus",
938
1074
  // + becomes - (swap or rotate 90°)
939
1075
  "chevron",
@@ -945,180 +1081,179 @@ var accordionIconSchema = z6.enum([
945
1081
  "circle-plus-minus"
946
1082
  // ⊕ becomes ⊖ (swap with fade)
947
1083
  ]);
948
- var accordionSystemSchema = z6.object({
1084
+ var accordionSystemSchema = z7.object({
949
1085
  // Visual styling (solid color only - gradients can be added later if needed)
950
- background: z6.object({
951
- type: z6.literal("solid"),
952
- colorToken: z6.string()
1086
+ background: z7.object({
1087
+ type: z7.literal("solid"),
1088
+ colorToken: themeColorTokenSchema
953
1089
  }),
954
1090
  // Spacing (padding inside items)
955
- spacing: z6.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
1091
+ spacing: z7.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
956
1092
  // Border radius (null = inherit from theme.corners)
957
- corners: z6.enum(["square", "soft", "rounded", "pill"]).nullable(),
1093
+ corners: z7.enum(["square", "soft", "rounded", "pill"]).nullable(),
958
1094
  // Border styling (null = inherit from theme.border)
959
- border: z6.object({
960
- widthClass: z6.string(),
1095
+ border: z7.object({
1096
+ widthClass: z7.string(),
961
1097
  // e.g., 'border', 'border-2', 'border-0'
962
- colorToken: z6.string()
1098
+ colorToken: themeColorTokenSchema
963
1099
  }).nullable(),
964
1100
  // Shadow (null = inherit from theme.shadow)
965
- shadow: z6.object({
966
- elevation: z6.enum(["none", "low", "medium", "high"]),
967
- softness: z6.enum(["soft", "crisp", "hard"]).nullable(),
968
- position: z6.enum(["bottom", "bottom-right"])
1101
+ shadow: z7.object({
1102
+ elevation: z7.enum(["none", "low", "medium", "high"]),
1103
+ softness: z7.enum(["soft", "crisp", "hard"]).nullable(),
1104
+ position: z7.enum(["bottom", "bottom-right"])
969
1105
  }).nullable(),
970
1106
  // Icon style and animation
971
- icon: z6.object({
1107
+ icon: z7.object({
972
1108
  style: accordionIconSchema,
973
- position: z6.enum(["left", "right"]),
974
- size: z6.enum(["sm", "md", "lg"])
1109
+ position: z7.enum(["left", "right"]),
1110
+ size: z7.enum(["sm", "md", "lg"])
975
1111
  }),
976
1112
  // Trigger (question) styling
977
- trigger: z6.object({
978
- textColorToken: z6.string(),
979
- fontWeight: z6.enum(["regular", "medium", "semibold", "bold"]).nullable()
1113
+ trigger: z7.object({
1114
+ textColorToken: themeColorTokenSchema,
1115
+ fontWeight: z7.enum(["regular", "medium", "semibold", "bold"]).nullable()
980
1116
  // null = inherit from theme
981
1117
  }),
982
1118
  // Hover state styling
983
- hover: z6.object({
984
- backgroundColorToken: z6.string().optional(),
985
- textColorToken: z6.string().optional(),
986
- borderColorToken: z6.string().optional()
1119
+ hover: z7.object({
1120
+ backgroundColorToken: themeColorTokenSchema.optional(),
1121
+ textColorToken: themeColorTokenSchema.optional(),
1122
+ borderColorToken: themeColorTokenSchema.optional()
987
1123
  }),
988
1124
  // Content (answer) styling
989
- content: z6.object({
990
- textColorToken: z6.string()
1125
+ content: z7.object({
1126
+ textColorToken: themeColorTokenSchema
991
1127
  })
992
1128
  });
993
1129
 
994
1130
  // ../theme-core/src/inputs/types.ts
995
- import { z as z7 } from "zod";
996
- var inputSystemSchema = z7.object({
1131
+ import { z as z8 } from "zod";
1132
+ var inputSystemSchema = z8.object({
997
1133
  // Base styling (applied to all inputs)
998
- base: z7.object({
999
- background: z7.union([
1000
- z7.object({
1001
- type: z7.literal("solid"),
1002
- colorToken: z7.string()
1134
+ base: z8.object({
1135
+ background: z8.union([
1136
+ z8.object({
1137
+ type: z8.literal("solid"),
1138
+ colorToken: themeColorTokenSchema
1003
1139
  }),
1004
- z7.object({
1005
- type: z7.literal("transparent")
1140
+ z8.object({
1141
+ type: z8.literal("transparent")
1006
1142
  })
1007
1143
  ]),
1008
- textColorToken: z7.string(),
1009
- border: z7.object({
1010
- widthClass: z7.string(),
1144
+ textColorToken: themeColorTokenSchema,
1145
+ border: z8.object({
1146
+ widthClass: z8.string(),
1011
1147
  // e.g., 'border', 'border-2'
1012
- colorToken: z7.string(),
1013
- style: z7.enum(["all", "underline"]).optional()
1148
+ colorToken: themeColorTokenSchema,
1149
+ style: z8.enum(["all", "underline"]).optional()
1014
1150
  }),
1015
- corners: z7.enum(["square", "soft", "rounded", "pill"]).nullable(),
1151
+ corners: z8.enum(["square", "soft", "rounded", "pill"]).nullable(),
1016
1152
  // null = inherit from theme.corners
1017
- shadow: z7.object({
1018
- elevation: z7.enum(["none", "low", "medium"]),
1019
- softness: z7.enum(["soft", "crisp", "hard"]).nullable()
1153
+ shadow: z8.object({
1154
+ elevation: z8.enum(["none", "low", "medium"]),
1155
+ softness: z8.enum(["soft", "crisp", "hard"]).nullable()
1020
1156
  }).nullable(),
1021
- spacing: z7.enum(["compact", "cozy", "medium", "comfortable"]),
1157
+ spacing: z8.enum(["compact", "cozy", "medium", "comfortable"]),
1022
1158
  // padding inside inputs
1023
- fontSize: z7.enum(["sm", "base", "lg"])
1159
+ fontSize: z8.enum(["sm", "base", "lg"])
1024
1160
  }),
1025
1161
  // Label styling
1026
- label: z7.object({
1027
- textColorToken: z7.string(),
1028
- fontWeight: z7.enum(["regular", "medium", "semibold", "bold", "black"]),
1029
- fontSize: z7.enum(["2xs", "xs", "sm", "base"]),
1030
- textTransform: z7.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
1031
- letterSpacing: z7.enum(["normal", "wide", "wider", "widest"]).optional(),
1032
- opacity: z7.number().min(0.2).max(1).optional()
1162
+ label: z8.object({
1163
+ textColorToken: themeColorTokenSchema,
1164
+ fontWeight: z8.enum(["regular", "medium", "semibold", "bold", "black"]),
1165
+ fontSize: z8.enum(["2xs", "xs", "sm", "base"]),
1166
+ textTransform: z8.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
1167
+ letterSpacing: z8.enum(["normal", "wide", "wider", "widest"]).optional(),
1168
+ opacity: z8.number().min(0.2).max(1).optional()
1033
1169
  }),
1034
1170
  // Focus state
1035
- focus: z7.object({
1036
- ringColorToken: z7.string(),
1037
- ringWidth: z7.enum(["0", "1", "2", "3"]),
1038
- borderColorToken: z7.string().optional()
1171
+ focus: z8.object({
1172
+ ringColorToken: themeColorTokenSchema,
1173
+ ringWidth: z8.enum(["0", "1", "2", "3"]),
1174
+ borderColorToken: themeColorTokenSchema.optional()
1039
1175
  // Change border color on focus
1040
1176
  }),
1041
1177
  // Error state (for validation feedback)
1042
- error: z7.object({
1043
- borderColorToken: z7.string(),
1044
- textColorToken: z7.string()
1178
+ error: z8.object({
1179
+ borderColorToken: themeColorTokenSchema,
1180
+ textColorToken: themeColorTokenSchema
1045
1181
  }),
1046
1182
  // Disabled state
1047
- disabled: z7.object({
1048
- backgroundColorToken: z7.string(),
1049
- textColorToken: z7.string(),
1050
- opacity: z7.number().min(0.3).max(0.7)
1183
+ disabled: z8.object({
1184
+ backgroundColorToken: themeColorTokenSchema,
1185
+ textColorToken: themeColorTokenSchema,
1186
+ opacity: z8.number().min(0.3).max(0.7)
1051
1187
  })
1052
1188
  });
1053
1189
 
1054
1190
  // ../theme-core/src/gradients/types.ts
1055
- import { z as z8 } from "zod";
1056
- var gradientStopSchema = z8.object({
1057
- color: z8.string(),
1058
- // Theme color token name (e.g., 'primary-500')
1059
- position: z8.number().min(0).max(100)
1191
+ import { z as z9 } from "zod";
1192
+ var gradientStopSchema = z9.object({
1193
+ color: themeColorTokenSchema,
1194
+ position: z9.number().min(0).max(100)
1060
1195
  // Percentage 0-100
1061
1196
  });
1062
- var gradientConfigSchema = z8.object({
1063
- type: z8.enum(["linear", "radial"]),
1064
- angle: z8.number().min(0).max(360).optional(),
1197
+ var gradientConfigSchema = z9.object({
1198
+ type: z9.enum(["linear", "radial"]),
1199
+ angle: z9.number().min(0).max(360).optional(),
1065
1200
  // For linear gradients (degrees)
1066
- position: z8.string().optional(),
1201
+ position: z9.string().optional(),
1067
1202
  // For radial gradients ('center', 'top left', etc.)
1068
- stops: z8.array(gradientStopSchema).min(2)
1203
+ stops: z9.array(gradientStopSchema).min(2)
1069
1204
  });
1070
1205
 
1071
1206
  // ../theme-core/src/navigation/types.ts
1072
- import { z as z10 } from "zod";
1207
+ import { z as z11 } from "zod";
1073
1208
 
1074
1209
  // ../theme-core/src/interactive/baseSchema.ts
1075
- import { z as z9 } from "zod";
1076
- var interactiveTypographySchema = z9.object({
1210
+ import { z as z10 } from "zod";
1211
+ var interactiveTypographySchema = z10.object({
1077
1212
  /** Font family source */
1078
- typography: z9.enum(["body", "heading"]).default("body"),
1213
+ typography: z10.enum(["body", "heading"]).default("body"),
1079
1214
  /** Font weight */
1080
- fontWeight: z9.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
1215
+ fontWeight: z10.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
1081
1216
  /** Text transform */
1082
- textTransform: z9.enum(["none", "uppercase", "capitalize"]).default("none"),
1217
+ textTransform: z10.enum(["none", "uppercase", "capitalize"]).default("none"),
1083
1218
  /** Italic style */
1084
- italic: z9.boolean().default(false)
1219
+ italic: z10.boolean().default(false)
1085
1220
  });
1086
- var effectApplicationSchema2 = z9.object({
1221
+ var effectApplicationSchema2 = z10.object({
1087
1222
  /** Effect preset ID */
1088
- effectId: z9.string(),
1223
+ effectId: z10.string(),
1089
1224
  /** User-provided customization options */
1090
- options: z9.record(z9.string(), z9.any()).optional()
1225
+ options: z10.record(z10.string(), z10.any()).optional()
1091
1226
  });
1092
- var effectCompositionSchema = z9.object({
1227
+ var effectCompositionSchema = z10.object({
1093
1228
  /** Effects always applied */
1094
- base: z9.array(effectApplicationSchema2).optional(),
1229
+ base: z10.array(effectApplicationSchema2).optional(),
1095
1230
  /** Effects applied on hover */
1096
- hover: z9.array(effectApplicationSchema2).optional(),
1231
+ hover: z10.array(effectApplicationSchema2).optional(),
1097
1232
  /** Effects applied on active/pressed */
1098
- active: z9.array(effectApplicationSchema2).optional(),
1233
+ active: z10.array(effectApplicationSchema2).optional(),
1099
1234
  /** Effects applied on focus */
1100
- focus: z9.array(effectApplicationSchema2).optional()
1235
+ focus: z10.array(effectApplicationSchema2).optional()
1101
1236
  });
1102
1237
 
1103
1238
  // ../theme-core/src/navigation/types.ts
1104
- var navLinkPaddingSchema = z10.enum(["none", "compact", "default"]);
1105
- var navLinkPaddingXSchema = z10.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1106
- var navLinkBorderRadiusSchema = z10.enum(["none", "sm", "md", "full"]);
1107
- var navLinkTextSizeSchema = z10.enum(["xs", "sm", "base", "lg"]);
1108
- var navLinkLetterSpacingSchema = z10.enum(["normal", "wide", "wider", "widest"]);
1109
- var navLinkStyleSchema = z10.object({
1239
+ var navLinkPaddingSchema = z11.enum(["none", "compact", "default"]);
1240
+ var navLinkPaddingXSchema = z11.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1241
+ var navLinkBorderRadiusSchema = z11.enum(["none", "sm", "md", "full"]);
1242
+ var navLinkTextSizeSchema = z11.enum(["xs", "sm", "base", "lg"]);
1243
+ var navLinkLetterSpacingSchema = z11.enum(["normal", "wide", "wider", "widest"]);
1244
+ var navLinkStyleSchema = z11.object({
1110
1245
  /** Display name for the style */
1111
- name: z10.string().min(1).max(30).optional(),
1246
+ name: z11.string().min(1).max(30).optional(),
1112
1247
  /** Typography settings (inherited from interactive base) */
1113
1248
  ...interactiveTypographySchema.shape,
1114
1249
  /** Text color token */
1115
- colorToken: z10.string().default("text"),
1250
+ colorToken: themeColorTokenSchema.default("text"),
1116
1251
  /** Optional text size override */
1117
1252
  textSize: navLinkTextSizeSchema.optional(),
1118
1253
  /** Optional letter spacing override */
1119
1254
  letterSpacing: navLinkLetterSpacingSchema.optional(),
1120
1255
  /** Hover/active color token (for color-change effects) */
1121
- hoverColorToken: z10.string().nullable().optional(),
1256
+ hoverColorToken: themeColorTokenSchema.nullable().optional(),
1122
1257
  /** Padding preset */
1123
1258
  padding: navLinkPaddingSchema.default("compact"),
1124
1259
  /** Horizontal padding override (overrides horizontal component of padding preset) */
@@ -1130,7 +1265,7 @@ var navLinkStyleSchema = z10.object({
1130
1265
  });
1131
1266
 
1132
1267
  // ../theme-core/src/customCss/validation.ts
1133
- import { z as z11 } from "zod";
1268
+ import { z as z12 } from "zod";
1134
1269
  var FORBIDDEN_SELECTORS = [":root", "html", "body"];
1135
1270
  var UNIVERSAL_SELECTOR = "*";
1136
1271
  var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
@@ -1172,7 +1307,7 @@ function containsForbiddenSelector(selector) {
1172
1307
  }
1173
1308
  return false;
1174
1309
  }
1175
- var selectorSchema = z11.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
1310
+ var selectorSchema = z12.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
1176
1311
  (s) => !containsForbiddenSelector(s),
1177
1312
  { message: "Global selectors (:root, html, body, *) are not allowed" }
1178
1313
  );
@@ -1182,38 +1317,38 @@ function containsRemoteUrl(value) {
1182
1317
  function containsJavascriptUrl(value) {
1183
1318
  return JAVASCRIPT_URL_PATTERN.test(value);
1184
1319
  }
1185
- var declarationValueSchema = z11.string().max(500, "Declaration value too long (max 500 characters)").refine(
1320
+ var declarationValueSchema = z12.string().max(500, "Declaration value too long (max 500 characters)").refine(
1186
1321
  (v) => !containsRemoteUrl(v),
1187
1322
  { message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
1188
1323
  ).refine(
1189
1324
  (v) => !containsJavascriptUrl(v),
1190
1325
  { message: "javascript: URLs are not allowed" }
1191
1326
  );
1192
- var declarationsSchema = z11.record(
1193
- z11.string().min(1).max(100),
1327
+ var declarationsSchema = z12.record(
1328
+ z12.string().min(1).max(100),
1194
1329
  // property name
1195
1330
  declarationValueSchema
1196
1331
  // property value
1197
1332
  );
1198
- var customCssRuleSchema = z11.object({
1199
- id: z11.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
1333
+ var customCssRuleSchema = z12.object({
1334
+ id: z12.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
1200
1335
  selector: selectorSchema,
1201
1336
  declarations: declarationsSchema
1202
1337
  });
1203
1338
  var blockCustomCssRuleSchema = customCssRuleSchema.extend({
1204
- blockKind: z11.string().min(1, "Block kind is required").max(50, "Block kind too long")
1339
+ blockKind: z12.string().min(1, "Block kind is required").max(50, "Block kind too long")
1205
1340
  });
1206
- var customCssRulesSchema = z11.array(customCssRuleSchema).optional();
1207
- var blockCustomCssRulesSchema = z11.array(blockCustomCssRuleSchema).optional();
1341
+ var customCssRulesSchema = z12.array(customCssRuleSchema).optional();
1342
+ var blockCustomCssRulesSchema = z12.array(blockCustomCssRuleSchema).optional();
1208
1343
 
1209
1344
  // ../theme-core/src/customCss/atRuleValidation.ts
1210
- import { z as z12 } from "zod";
1345
+ import { z as z13 } from "zod";
1211
1346
  var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
1212
1347
  var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
1213
1348
  var BLOCKED_AT_RULES = ["@import", "@charset"];
1214
1349
  var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
1215
- var ruleIdSchema = z12.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
1216
- var nestedRuleSchema = z12.object({
1350
+ var ruleIdSchema = z13.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
1351
+ var nestedRuleSchema = z13.object({
1217
1352
  selector: selectorSchema,
1218
1353
  declarations: declarationsSchema
1219
1354
  });
@@ -1225,205 +1360,208 @@ function isValidKeyframeOffset(offset) {
1225
1360
  const value = parseInt(match[1], 10);
1226
1361
  return value >= 0 && value <= 100;
1227
1362
  }
1228
- var keyframeOffsetSchema = z12.string().transform((offset) => offset.trim()).refine(
1363
+ var keyframeOffsetSchema = z13.string().transform((offset) => offset.trim()).refine(
1229
1364
  (offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
1230
1365
  { message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
1231
1366
  ).refine(
1232
1367
  isValidKeyframeOffset,
1233
1368
  { message: "Keyframe offset must be between 0% and 100%" }
1234
1369
  );
1235
- var animationNameSchema = z12.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
1370
+ var animationNameSchema = z13.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
1236
1371
  (name) => ANIMATION_NAME_PATTERN.test(name),
1237
1372
  { message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
1238
1373
  );
1239
- var keyframeSchema = z12.object({
1374
+ var keyframeSchema = z13.object({
1240
1375
  offset: keyframeOffsetSchema,
1241
1376
  declarations: declarationsSchema
1242
1377
  });
1243
- var keyframesAtRuleSchema = z12.object({
1378
+ var keyframesAtRuleSchema = z13.object({
1244
1379
  id: ruleIdSchema,
1245
- type: z12.literal("keyframes"),
1380
+ type: z13.literal("keyframes"),
1246
1381
  name: animationNameSchema,
1247
- frames: z12.array(keyframeSchema).min(1, "At least one keyframe is required")
1382
+ frames: z13.array(keyframeSchema).min(1, "At least one keyframe is required")
1248
1383
  });
1249
- var fontFaceDeclarationsSchema = z12.record(z12.string().min(1).max(100), declarationValueSchema).refine(
1384
+ var fontFaceDeclarationsSchema = z13.record(z13.string().min(1).max(100), declarationValueSchema).refine(
1250
1385
  (decls) => "fontFamily" in decls || "font-family" in decls,
1251
1386
  { message: "font-family is required in @font-face" }
1252
1387
  );
1253
- var fontFaceAtRuleSchema = z12.object({
1388
+ var fontFaceAtRuleSchema = z13.object({
1254
1389
  id: ruleIdSchema,
1255
- type: z12.literal("font-face"),
1390
+ type: z13.literal("font-face"),
1256
1391
  declarations: fontFaceDeclarationsSchema
1257
1392
  });
1258
- var mediaQuerySchema = z12.string().min(1, "Media query is required").max(200, "Media query too long");
1259
- var mediaAtRuleSchema = z12.object({
1393
+ var mediaQuerySchema = z13.string().min(1, "Media query is required").max(200, "Media query too long");
1394
+ var mediaAtRuleSchema = z13.object({
1260
1395
  id: ruleIdSchema,
1261
- type: z12.literal("media"),
1396
+ type: z13.literal("media"),
1262
1397
  query: mediaQuerySchema,
1263
- rules: z12.array(nestedRuleSchema).min(1, "At least one rule is required")
1398
+ rules: z13.array(nestedRuleSchema).min(1, "At least one rule is required")
1264
1399
  });
1265
- var supportsConditionSchema = z12.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
1266
- var supportsAtRuleSchema = z12.object({
1400
+ var supportsConditionSchema = z13.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
1401
+ var supportsAtRuleSchema = z13.object({
1267
1402
  id: ruleIdSchema,
1268
- type: z12.literal("supports"),
1403
+ type: z13.literal("supports"),
1269
1404
  condition: supportsConditionSchema,
1270
- rules: z12.array(nestedRuleSchema).min(1, "At least one rule is required")
1405
+ rules: z13.array(nestedRuleSchema).min(1, "At least one rule is required")
1271
1406
  });
1272
1407
  function containsBlockedAtRule(css) {
1273
1408
  return BLOCKED_AT_RULE_PATTERN.test(css);
1274
1409
  }
1275
- var rawCssSchema = z12.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
1410
+ var rawCssSchema = z13.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
1276
1411
  (css) => css.trim().startsWith("@"),
1277
1412
  { message: "Raw at-rule must start with @" }
1278
1413
  ).refine(
1279
1414
  (css) => !containsBlockedAtRule(css),
1280
1415
  { message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
1281
1416
  );
1282
- var rawAtRuleSchema = z12.object({
1417
+ var rawAtRuleSchema = z13.object({
1283
1418
  id: ruleIdSchema,
1284
- type: z12.literal("raw"),
1419
+ type: z13.literal("raw"),
1285
1420
  css: rawCssSchema
1286
1421
  });
1287
- var customCssAtRuleSchema = z12.discriminatedUnion("type", [
1422
+ var customCssAtRuleSchema = z13.discriminatedUnion("type", [
1288
1423
  keyframesAtRuleSchema,
1289
1424
  fontFaceAtRuleSchema,
1290
1425
  mediaAtRuleSchema,
1291
1426
  supportsAtRuleSchema,
1292
1427
  rawAtRuleSchema
1293
1428
  ]);
1294
- var customCssAtRulesSchema = z12.array(customCssAtRuleSchema).optional();
1429
+ var customCssAtRulesSchema = z13.array(customCssAtRuleSchema).optional();
1295
1430
 
1296
1431
  // ../theme-core/src/shared/componentStyles.ts
1297
- import { z as z13 } from "zod";
1298
- var componentBorderSchema = z13.object({
1299
- width: z13.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
1300
- style: z13.enum(["solid", "dashed"]).default("solid"),
1301
- colorToken: z13.string().optional()
1432
+ import { z as z14 } from "zod";
1433
+ var componentBorderSchema = z14.object({
1434
+ width: z14.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
1435
+ style: z14.enum(["solid", "dashed"]).default("solid"),
1436
+ colorToken: themeColorTokenSchema.optional()
1302
1437
  // defaults to "border" if not set
1303
1438
  });
1304
- var componentShadowSchema = z13.object({
1305
- elevation: z13.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
1439
+ var componentShadowSchema = z14.object({
1440
+ elevation: z14.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
1306
1441
  });
1307
1442
 
1443
+ // ../theme-core/src/utils/tokenOrColor.ts
1444
+ import { z as z15 } from "zod";
1445
+ var tokenOrCssColorValueSchema = z15.string();
1446
+
1308
1447
  // ../theme-core/src/schema.ts
1309
- var axesSchema = z14.object({
1310
- tone: z14.enum(["minimal", "classic", "bold"]),
1311
- energy: z14.enum(["calm", "vibrant"]),
1312
- density: z14.enum(["airy", "regular", "compact"]),
1313
- mediaBias: z14.enum(["text", "media", "mixed"]),
1314
- conversionBias: z14.enum(["low", "med", "high"]),
1315
- motion: z14.enum(["subtle", "standard", "expressive"])
1316
- });
1317
- var colourHexString = z14.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
1318
- var paletteColorSchema = z14.object({
1319
- name: z14.string().min(1),
1448
+ var axesSchema = z16.object({
1449
+ tone: z16.enum(["minimal", "classic", "bold"]),
1450
+ energy: z16.enum(["calm", "vibrant"]),
1451
+ density: z16.enum(["airy", "regular", "compact"]),
1452
+ mediaBias: z16.enum(["text", "media", "mixed"]),
1453
+ conversionBias: z16.enum(["low", "med", "high"]),
1454
+ motion: z16.enum(["subtle", "standard", "expressive"])
1455
+ });
1456
+ var colourHexString = z16.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
1457
+ var paletteColorSchema = z16.object({
1458
+ name: z16.string().min(1),
1320
1459
  hex: colourHexString
1321
1460
  });
1322
- var paletteMetaSchema = z14.object({
1323
- mode: z14.enum(["light", "dark"])
1461
+ var paletteMetaSchema = z16.object({
1462
+ mode: z16.enum(["light", "dark"])
1324
1463
  });
1325
- var paletteSchema = z14.object({
1326
- colors: z14.array(paletteColorSchema),
1464
+ var paletteSchema = z16.object({
1465
+ colors: z16.array(paletteColorSchema),
1327
1466
  meta: paletteMetaSchema
1328
1467
  });
1329
- var typographyStyleSchema = z14.object({
1330
- family: z14.string().min(1),
1331
- weight: z14.enum(["light", "regular", "medium", "semibold", "bold"]),
1332
- letterSpacing: z14.enum(["tight", "normal", "loose"]),
1333
- lineHeight: z14.enum(["normal", "relaxed", "loose"])
1468
+ var typographyStyleSchema = z16.object({
1469
+ family: z16.string().min(1),
1470
+ weight: z16.enum(["light", "regular", "medium", "semibold", "bold"]),
1471
+ letterSpacing: z16.enum(["tight", "normal", "loose"]),
1472
+ lineHeight: z16.enum(["normal", "relaxed", "loose"])
1334
1473
  });
1335
1474
  var bodyTypographyStyleSchema = typographyStyleSchema.extend({
1336
- size: z14.enum(["md", "lg", "xl"])
1475
+ size: z16.enum(["md", "lg", "xl"])
1337
1476
  });
1338
- var headingSizeSchema = z14.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
1339
- var headingTypographyOverridesSchema = z14.object({
1340
- weight: z14.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
1341
- letterSpacing: z14.enum(["tight", "normal", "loose"]).nullable().optional(),
1477
+ var headingSizeSchema = z16.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
1478
+ var headingTypographyOverridesSchema = z16.object({
1479
+ weight: z16.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
1480
+ letterSpacing: z16.enum(["tight", "normal", "loose"]).nullable().optional(),
1342
1481
  size: headingSizeSchema.nullable().optional(),
1343
- lineHeight: z14.enum(["normal", "relaxed", "loose"]).nullable().optional(),
1344
- italic: z14.boolean().nullable().optional(),
1345
- colorToken: z14.string().min(1).nullable().optional()
1346
- // Palette token name for heading color
1482
+ lineHeight: z16.enum(["normal", "relaxed", "loose"]).nullable().optional(),
1483
+ italic: z16.boolean().nullable().optional(),
1484
+ colorToken: themeColorTokenSchema.nullable().optional()
1347
1485
  });
1348
1486
  var headingTypographyStyleSchema = typographyStyleSchema.extend({
1349
- case: z14.enum(["uppercase", "normal", "smallCaps"]).nullable(),
1350
- italic: z14.boolean().nullable(),
1351
- colorToken: z14.string().min(1).nullable().optional()
1352
- // Palette token name for heading color
1353
- });
1354
- var proseLinkUnderlineStyleSchema = z14.enum(["solid", "dotted", "dashed"]);
1355
- var proseLinkUnderlineThicknessSchema = z14.enum(["auto", "fromFont", "thin", "medium", "thick"]);
1356
- var proseLinkUnderlineOffsetSchema = z14.enum(["auto", "tight", "normal", "loose"]);
1357
- var proseLinkStyleSchema = z14.object({
1358
- colorToken: z14.string().min(1).optional(),
1359
- hoverColorToken: z14.string().min(1).optional(),
1360
- underline: z14.boolean().optional(),
1361
- decorationColorToken: z14.string().min(1).optional(),
1362
- hoverDecorationColorToken: z14.string().min(1).optional(),
1487
+ case: z16.enum(["uppercase", "normal", "smallCaps"]).nullable(),
1488
+ italic: z16.boolean().nullable(),
1489
+ colorToken: themeColorTokenSchema.nullable().optional()
1490
+ });
1491
+ var proseLinkUnderlineStyleSchema = z16.enum(["solid", "dotted", "dashed"]);
1492
+ var proseLinkUnderlineThicknessSchema = z16.enum(["auto", "fromFont", "thin", "medium", "thick"]);
1493
+ var proseLinkUnderlineOffsetSchema = z16.enum(["auto", "tight", "normal", "loose"]);
1494
+ var proseLinkStyleSchema = z16.object({
1495
+ colorToken: themeColorTokenSchema.optional(),
1496
+ hoverColorToken: themeColorTokenSchema.optional(),
1497
+ underline: z16.boolean().optional(),
1498
+ decorationColorToken: themeColorTokenSchema.optional(),
1499
+ hoverDecorationColorToken: themeColorTokenSchema.optional(),
1363
1500
  underlineStyle: proseLinkUnderlineStyleSchema.optional(),
1364
1501
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
1365
1502
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
1366
1503
  });
1367
- var semanticSpacingSchema = z14.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
1368
- var boxRoundedSchema = z14.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
1369
- var boxBackgroundOverlaySchema = z14.object({
1370
- type: z14.enum(["none", "color", "gradient"]).nullable().optional(),
1371
- color: z14.string().nullable().optional(),
1372
- gradient: z14.string().nullable().optional(),
1373
- opacity: z14.number().min(0).max(1).nullable().optional()
1374
- });
1375
- var boxBackgroundSchema = z14.object({
1376
- type: z14.enum(["color", "gradient", "image"]).optional(),
1377
- color: z14.string().nullable().optional(),
1378
- gradient: z14.string().nullable().optional(),
1504
+ var semanticSpacingSchema = z16.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
1505
+ var boxRoundedSchema = z16.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
1506
+ var boxBackgroundOverlaySchema = z16.object({
1507
+ type: z16.enum(["none", "color", "gradient"]).nullable().optional(),
1508
+ color: tokenOrCssColorValueSchema.nullable().optional(),
1509
+ gradient: z16.string().nullable().optional(),
1510
+ opacity: z16.number().min(0).max(1).nullable().optional()
1511
+ });
1512
+ var boxBackgroundSchema = z16.object({
1513
+ type: z16.enum(["color", "gradient", "image"]).optional(),
1514
+ color: tokenOrCssColorValueSchema.nullable().optional(),
1515
+ gradient: z16.string().nullable().optional(),
1379
1516
  image: mediaSchema.nullable().optional(),
1380
- objectFit: z14.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
1381
- scale: z14.string().nullable().optional(),
1382
- position: z14.string().nullable().optional(),
1383
- opacity: z14.number().min(0).max(1).nullable().optional(),
1384
- motion: z14.enum(["static", "fixed-frame"]).nullable().optional(),
1517
+ objectFit: z16.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
1518
+ scale: z16.string().nullable().optional(),
1519
+ position: z16.string().nullable().optional(),
1520
+ opacity: z16.number().min(0).max(1).nullable().optional(),
1521
+ motion: z16.enum(["static", "fixed-frame"]).nullable().optional(),
1385
1522
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
1386
- textColor: z14.string().nullable().optional(),
1387
- headingColor: z14.string().nullable().optional()
1523
+ textColor: tokenOrCssColorValueSchema.nullable().optional(),
1524
+ headingColor: tokenOrCssColorValueSchema.nullable().optional()
1388
1525
  });
1389
- var sectionStylesOverrideSchema = z14.object({
1526
+ var sectionStylesOverrideSchema = z16.object({
1390
1527
  background: boxBackgroundSchema.nullable().optional(),
1391
1528
  spacing: semanticSpacingSchema.nullable().optional(),
1392
- minHeight: z14.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
1393
- eyebrowTreatment: z14.enum(eyebrowTreatmentValues).nullable().optional()
1529
+ minHeight: z16.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
1530
+ tileTreatment: z16.enum(tileTreatmentValues).nullable().optional(),
1531
+ eyebrowTreatment: z16.enum(eyebrowTreatmentValues).nullable().optional()
1394
1532
  });
1395
- var containerStylesOverrideSchema = z14.object({
1533
+ var containerStylesOverrideSchema = z16.object({
1396
1534
  background: boxBackgroundSchema.nullable().optional(),
1397
1535
  spacing: semanticSpacingSchema.nullable().optional(),
1398
- raised: z14.boolean().nullable().optional(),
1536
+ raised: z16.boolean().nullable().optional(),
1399
1537
  rounded: boxRoundedSchema.nullable().optional(),
1400
- fullWidth: z14.boolean().nullable().optional()
1538
+ fullWidth: z16.boolean().nullable().optional()
1401
1539
  });
1402
- var cardBorderOverrideSchema = z14.object({
1403
- enabled: z14.boolean().nullable().optional(),
1404
- width: z14.enum(["none", "1", "2", "3"]).nullable().optional(),
1405
- colorToken: z14.string().nullable().optional()
1540
+ var cardBorderOverrideSchema = z16.object({
1541
+ enabled: z16.boolean().nullable().optional(),
1542
+ width: z16.enum(["none", "1", "2", "3"]).nullable().optional(),
1543
+ colorToken: themeColorTokenSchema.nullable().optional()
1406
1544
  });
1407
- var cardStylesOverrideSchema = z14.object({
1545
+ var cardStylesOverrideSchema = z16.object({
1408
1546
  background: boxBackgroundSchema.nullable().optional(),
1409
1547
  border: cardBorderOverrideSchema.nullable().optional(),
1410
1548
  spacing: semanticSpacingSchema.nullable().optional(),
1411
- raised: z14.boolean().nullable().optional(),
1549
+ raised: z16.boolean().nullable().optional(),
1412
1550
  rounded: boxRoundedSchema.nullable().optional(),
1413
- treatment: z14.enum(["accent-quote"]).nullable().optional()
1551
+ treatment: z16.enum(["accent-quote"]).nullable().optional()
1414
1552
  });
1415
- var blockStyleOverridesSchema = z14.object({
1553
+ var blockStyleOverridesSchema = z16.object({
1416
1554
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
1417
1555
  containerStyles: containerStylesOverrideSchema.nullable().optional(),
1418
1556
  cardStyles: cardStylesOverrideSchema.nullable().optional()
1419
1557
  });
1420
- var blockThemeOverrideSchema = z14.object({
1421
- typography: z14.object({
1558
+ var blockThemeOverrideSchema = z16.object({
1559
+ typography: z16.object({
1422
1560
  proseLinkStyle: proseLinkStyleSchema.optional()
1423
1561
  }).optional(),
1424
1562
  styles: blockStyleOverridesSchema.optional()
1425
1563
  });
1426
- var typographyScaleSchema = z14.enum([
1564
+ var typographyScaleSchema = z16.enum([
1427
1565
  // New intuitive names
1428
1566
  "compact",
1429
1567
  // ratio 1.2 (was minorThird)
@@ -1436,9 +1574,9 @@ var typographyScaleSchema = z14.enum([
1436
1574
  "majorThird",
1437
1575
  "perfectFourth"
1438
1576
  ]);
1439
- var typographySchema = z14.object({
1577
+ var typographySchema = z16.object({
1440
1578
  body: bodyTypographyStyleSchema,
1441
- headings: z14.object({
1579
+ headings: z16.object({
1442
1580
  default: headingTypographyStyleSchema,
1443
1581
  h1: headingTypographyOverridesSchema,
1444
1582
  h2: headingTypographyOverridesSchema,
@@ -1451,122 +1589,115 @@ var typographySchema = z14.object({
1451
1589
  scale: typographyScaleSchema,
1452
1590
  proseLinkStyle: proseLinkStyleSchema.optional()
1453
1591
  });
1454
- var spaceSchema = z14.enum(["comfortable", "standard", "dense"]);
1455
- var corners = z14.enum(["square", "soft", "rounded", "pill"]);
1456
- var shadow = z14.object({
1457
- elevation: z14.enum(["none", "low", "medium", "high"]),
1458
- softness: z14.enum(["crisp", "soft", "hard"]).nullable(),
1459
- position: z14.enum(["bottom", "bottom-right"]).default("bottom")
1592
+ var spaceSchema = z16.enum(["comfortable", "standard", "dense"]);
1593
+ var corners = z16.enum(["square", "soft", "rounded", "pill"]);
1594
+ var shadow = z16.object({
1595
+ elevation: z16.enum(["none", "low", "medium", "high"]),
1596
+ softness: z16.enum(["crisp", "soft", "hard"]).nullable(),
1597
+ position: z16.enum(["bottom", "bottom-right"]).default("bottom")
1460
1598
  });
1461
- var border = z14.object({
1462
- width: z14.enum(["none", "hairline", "thin", "thick"]),
1463
- style: z14.enum(["solid", "dashed"])
1599
+ var border = z16.object({
1600
+ width: z16.enum(["none", "hairline", "thin", "thick"]),
1601
+ style: z16.enum(["solid", "dashed"])
1464
1602
  });
1465
- var motion = z14.object({
1466
- level: z14.enum(["off", "low", "medium", "high"]),
1467
- easing: z14.enum(["standard", "snappy", "gentle"]).nullable()
1603
+ var motion = z16.object({
1604
+ level: z16.enum(["off", "low", "medium", "high"]),
1605
+ easing: z16.enum(["standard", "snappy", "gentle"]).nullable()
1468
1606
  });
1469
- var buttonStyle = z14.object({
1607
+ var buttonStyle = z16.object({
1470
1608
  shape: corners
1471
1609
  // Used for --radius-control CSS variable
1472
1610
  });
1473
- var cardStyle = z14.object({
1474
- elevation: z14.enum(["none", "low", "medium", "high"]),
1475
- border: z14.enum(["none", "subtle", "defined"]),
1611
+ var cardStyle = z16.object({
1612
+ elevation: z16.enum(["none", "low", "medium", "high"]),
1613
+ border: z16.enum(["none", "subtle", "defined"]),
1476
1614
  shape: corners,
1477
- headerStyle: z14.enum(["plain", "accentBar", "subtleBg"]).nullable(),
1478
- mediaTreatment: z14.enum(["square", "rounded", "bleed"]).nullable()
1615
+ headerStyle: z16.enum(["plain", "accentBar", "subtleBg"]).nullable(),
1616
+ mediaTreatment: z16.enum(["square", "rounded", "bleed"]).nullable()
1479
1617
  });
1480
- var inputStyle = z14.object({
1618
+ var inputStyle = z16.object({
1481
1619
  shape: corners,
1482
- border: z14.enum(["subtle", "defined", "underline"]),
1483
- focus: z14.enum(["glow", "ring", "underline"]),
1484
- label: z14.enum(["inside", "above"])
1485
- });
1486
- var headerVariant = z14.enum(["classic", "centered", "transparent", "floating", "editorial"]);
1487
- var headerPositioning = z14.enum(["static", "sticky", "fixed"]);
1488
- var headerNavStyle = z14.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
1489
- var navFontWeight = z14.enum(["regular", "medium", "semibold", "bold"]);
1490
- var headerMaxWidth = z14.enum(["container", "full"]);
1491
- var headerContainerSchema = z14.object({
1492
- rounded: z14.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
1493
- border: z14.boolean().default(true),
1494
- shadow: z14.boolean().default(true),
1495
- padding: z14.enum(["sm", "md", "lg"]).default("md"),
1496
- tint: z14.string().nullable().optional(),
1497
- opacity: z14.number().min(0).max(1).default(0.12)
1620
+ border: z16.enum(["subtle", "defined", "underline"]),
1621
+ focus: z16.enum(["glow", "ring", "underline"]),
1622
+ label: z16.enum(["inside", "above"])
1623
+ });
1624
+ var headerVariant = z16.enum(["classic", "centered", "transparent", "floating", "editorial"]);
1625
+ var headerPositioning = z16.enum(["static", "sticky", "fixed"]);
1626
+ var headerNavStyle = z16.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
1627
+ var navFontWeight = z16.enum(["regular", "medium", "semibold", "bold"]);
1628
+ var headerMaxWidth = z16.enum(["container", "full"]);
1629
+ var headerContainerSchema = z16.object({
1630
+ rounded: z16.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
1631
+ border: z16.boolean().default(true),
1632
+ shadow: z16.boolean().default(true),
1633
+ padding: z16.enum(["sm", "md", "lg"]).default("md"),
1634
+ tint: z16.string().nullable().optional(),
1635
+ opacity: z16.number().min(0).max(1).default(0.12)
1498
1636
  }).optional();
1499
1637
  var headerBorderSchema = componentBorderSchema.extend({
1500
- position: z14.enum(["bottom", "top", "both", "none"]).default("bottom")
1638
+ position: z16.enum(["bottom", "top", "both", "none"]).default("bottom")
1501
1639
  }).optional();
1502
- var logoStyleSchema = z14.object({
1503
- fontFamily: z14.enum(["heading", "body"]).default("heading"),
1504
- letterSpacing: z14.enum(["normal", "wide", "wider", "widest"]).default("normal"),
1505
- gradient: z14.boolean().default(false)
1640
+ var logoStyleSchema = z16.object({
1641
+ fontFamily: z16.enum(["heading", "body"]).default("heading"),
1642
+ letterSpacing: z16.enum(["normal", "wide", "wider", "widest"]).default("normal"),
1643
+ gradient: z16.boolean().default(false)
1506
1644
  }).optional();
1507
- var headerLogoTextSchema = z14.object({
1508
- mobileWrapLines: z14.union([z14.literal(1), z14.literal(2)]).optional(),
1509
- mobileMaxWidth: z14.enum(["xs", "sm", "md"]).optional(),
1510
- hideOnShrink: z14.boolean().optional()
1645
+ var headerLogoTextSchema = z16.object({
1646
+ mobileWrapLines: z16.union([z16.literal(1), z16.literal(2)]).optional(),
1647
+ mobileMaxWidth: z16.enum(["xs", "sm", "md"]).optional(),
1648
+ hideOnShrink: z16.boolean().optional()
1511
1649
  }).optional();
1512
- var navEffectsSchema = z14.object({
1513
- underlineGradient: z14.boolean().default(false),
1514
- glow: z14.boolean().default(false),
1515
- glowColor: z14.string().optional(),
1516
- neumorphic: z14.boolean().default(false)
1650
+ var navEffectsSchema = z16.object({
1651
+ underlineGradient: z16.boolean().default(false),
1652
+ glow: z16.boolean().default(false),
1653
+ glowColor: z16.string().optional(),
1654
+ neumorphic: z16.boolean().default(false)
1517
1655
  }).optional();
1518
- var dropdownStyleSchema = z14.object({
1656
+ var dropdownStyleSchema = z16.object({
1519
1657
  // Container styling
1520
- background: z14.string().default("surface"),
1521
- // color token
1522
- textColor: z14.string().default("text"),
1523
- // color token
1524
- borderColor: z14.string().nullable().default("border"),
1525
- // null = no border
1526
- shadow: z14.enum(["none", "sm", "md", "lg"]).default("md"),
1527
- borderRadius: z14.enum(["none", "sm", "md", "lg"]).default("md"),
1658
+ background: themeColorTokenSchema.default("surface"),
1659
+ textColor: themeColorTokenSchema.default("text"),
1660
+ borderColor: themeColorTokenSchema.nullable().default("border"),
1661
+ shadow: z16.enum(["none", "sm", "md", "lg"]).default("md"),
1662
+ borderRadius: z16.enum(["none", "sm", "md", "lg"]).default("md"),
1528
1663
  // Link hover states (explicit control)
1529
- hoverBackground: z14.string().nullable().optional(),
1530
- // color token, null = transparent
1531
- hoverTextColor: z14.string().nullable().optional(),
1532
- // color token, null = inherit
1664
+ hoverBackground: themeColorTokenSchema.nullable().optional(),
1665
+ hoverTextColor: themeColorTokenSchema.nullable().optional(),
1533
1666
  // Typography
1534
- textTransform: z14.enum(["none", "uppercase", "capitalize"]).default("none"),
1535
- letterSpacing: z14.enum(["normal", "wide", "wider"]).default("normal"),
1536
- fontWeight: z14.enum(["regular", "medium", "semibold", "bold"]).optional(),
1667
+ textTransform: z16.enum(["none", "uppercase", "capitalize"]).default("none"),
1668
+ letterSpacing: z16.enum(["normal", "wide", "wider"]).default("normal"),
1669
+ fontWeight: z16.enum(["regular", "medium", "semibold", "bold"]).optional(),
1537
1670
  // optional = inherit from navWeight
1538
- textSize: z14.enum(["xs", "sm", "base", "lg"]).optional()
1671
+ textSize: z16.enum(["xs", "sm", "base", "lg"]).optional()
1539
1672
  // optional = no override (browser default)
1540
1673
  }).optional();
1541
- var headerCtaGapSchema = z14.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1542
- var headerCtaTreatmentSchema = z14.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
1543
- var navContainerSchema = z14.object({
1544
- type: z14.enum(["none", "pill", "glass"]).default("none"),
1545
- tint: z14.string().nullable().optional(),
1546
- opacity: z14.number().min(0).max(1).default(0.15)
1674
+ var headerCtaGapSchema = z16.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1675
+ var headerCtaTreatmentSchema = z16.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
1676
+ var navContainerSchema = z16.object({
1677
+ type: z16.enum(["none", "pill", "glass"]).default("none"),
1678
+ tint: z16.string().nullable().optional(),
1679
+ opacity: z16.number().min(0).max(1).default(0.15)
1547
1680
  }).default({ type: "none", tint: null, opacity: 0.15 });
1548
- var headerBackgroundSchema = z14.object({
1549
- type: z14.enum(["color", "gradient", "image"]),
1550
- color: z14.string().nullable().optional(),
1681
+ var headerBackgroundSchema = z16.object({
1682
+ type: z16.enum(["color", "gradient", "image"]),
1683
+ color: tokenOrCssColorValueSchema.nullable().optional(),
1551
1684
  gradient: gradientConfigSchema.nullable().optional(),
1552
1685
  image: mediaSchema.nullable().optional(),
1553
- textColor: z14.string().nullable().optional()
1686
+ textColor: tokenOrCssColorValueSchema.nullable().optional()
1554
1687
  });
1555
- var headerSchema = z14.object({
1688
+ var headerSchema = z16.object({
1556
1689
  variant: headerVariant,
1557
1690
  positioning: headerPositioning,
1558
- shrinkOnScroll: z14.boolean(),
1691
+ shrinkOnScroll: z16.boolean(),
1559
1692
  maxWidth: headerMaxWidth,
1560
1693
  logoOverride: mediaSchema.nullable().optional(),
1561
1694
  background: headerBackgroundSchema.default({
1562
1695
  type: "color",
1563
1696
  color: "surface"
1564
1697
  }),
1565
- textColor: z14.string().nullable().optional(),
1566
- // Site title and general header text
1698
+ textColor: themeColorTokenSchema.nullable().optional(),
1567
1699
  navStyle: headerNavStyle,
1568
- navColor: z14.string().nullable().optional(),
1569
- // Nav links (inherits textColor if not set)
1700
+ navColor: themeColorTokenSchema.nullable().optional(),
1570
1701
  navWeight: navFontWeight.default("medium"),
1571
1702
  // New fields for header system enhancement
1572
1703
  container: headerContainerSchema,
@@ -1587,54 +1718,54 @@ var headerSchema = z14.object({
1587
1718
  // Optional theme-level CTA variant for header/nav CTA buttons.
1588
1719
  // Internal runtime bridge for the block renderer; prefer ctaTreatment in
1589
1720
  // authored Theme V2 concepts.
1590
- ctaVariant: z14.string().min(1).optional(),
1721
+ ctaVariant: z16.string().min(1).optional(),
1591
1722
  // Dropdown menu styling (nav dropdowns and mobile drawer)
1592
1723
  dropdownStyle: dropdownStyleSchema
1593
1724
  });
1594
- var footerVariant = z14.enum(["simple", "columns", "split"]);
1595
- var footerMaxWidth = z14.enum(["container", "full"]);
1596
- var footerMode = z14.enum(["default", "blocks", "default+blocks", "none"]);
1597
- var footerNavLayoutMode = z14.enum(["stack", "inline", "inline-wrap"]);
1598
- var footerNavLayoutAlign = z14.enum(["start", "center", "end", "space-between"]);
1599
- var footerSpacing = z14.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1600
- var footerLogoPlacement = z14.enum(["left", "right", "above", "below"]);
1601
- var footerLogoSize = z14.enum(["sm", "md", "lg", "xl"]);
1602
- var footerLogoMaxHeight = z14.enum(["sm", "md", "lg", "xl"]);
1603
- var footerBottomTextLinkStyleSchema = z14.object({
1604
- colorToken: z14.string().optional(),
1605
- hoverColorToken: z14.string().nullable().optional(),
1606
- decorationColorToken: z14.string().nullable().optional(),
1607
- underline: z14.boolean().optional()
1608
- });
1609
- var footerBottomBarSchema = z14.object({
1610
- enabled: z14.boolean().optional(),
1611
- fullBleed: z14.boolean().optional(),
1725
+ var footerVariant = z16.enum(["simple", "columns", "split"]);
1726
+ var footerMaxWidth = z16.enum(["container", "full"]);
1727
+ var footerMode = z16.enum(["default", "blocks", "default+blocks", "none"]);
1728
+ var footerNavLayoutMode = z16.enum(["stack", "inline", "inline-wrap"]);
1729
+ var footerNavLayoutAlign = z16.enum(["start", "center", "end", "space-between"]);
1730
+ var footerSpacing = z16.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
1731
+ var footerLogoPlacement = z16.enum(["left", "right", "above", "below"]);
1732
+ var footerLogoSize = z16.enum(["sm", "md", "lg", "xl"]);
1733
+ var footerLogoMaxHeight = z16.enum(["sm", "md", "lg", "xl"]);
1734
+ var footerBottomTextLinkStyleSchema = z16.object({
1735
+ colorToken: themeColorTokenSchema.optional(),
1736
+ hoverColorToken: themeColorTokenSchema.nullable().optional(),
1737
+ decorationColorToken: themeColorTokenSchema.nullable().optional(),
1738
+ underline: z16.boolean().optional()
1739
+ });
1740
+ var footerBottomBarSchema = z16.object({
1741
+ enabled: z16.boolean().optional(),
1742
+ fullBleed: z16.boolean().optional(),
1612
1743
  background: headerBackgroundSchema.optional(),
1613
- textColor: z14.string().nullable().optional(),
1614
- textAlign: z14.enum(["left", "center", "right"]).optional(),
1744
+ textColor: themeColorTokenSchema.nullable().optional(),
1745
+ textAlign: z16.enum(["left", "center", "right"]).optional(),
1615
1746
  paddingY: footerSpacing.optional(),
1616
1747
  paddingX: footerSpacing.optional(),
1617
- borderTop: z14.object({
1618
- colorToken: z14.string().nullable().optional(),
1619
- width: z14.enum(["none", "thin", "medium", "thick"]).optional()
1748
+ borderTop: z16.object({
1749
+ colorToken: themeColorTokenSchema.nullable().optional(),
1750
+ width: z16.enum(["none", "thin", "medium", "thick"]).optional()
1620
1751
  }).optional()
1621
1752
  });
1622
- var footerNavLayoutSchema = z14.object({
1753
+ var footerNavLayoutSchema = z16.object({
1623
1754
  layout: footerNavLayoutMode.optional(),
1624
1755
  align: footerNavLayoutAlign.optional(),
1625
1756
  gapX: footerSpacing.optional(),
1626
1757
  gapY: footerSpacing.optional(),
1627
- columns: z14.number().int().min(1).max(6).optional()
1758
+ columns: z16.number().int().min(1).max(6).optional()
1628
1759
  });
1629
- var footerLogoSchema = z14.object({
1630
- showLogo: z14.boolean().default(true),
1631
- showLogoText: z14.boolean().optional(),
1760
+ var footerLogoSchema = z16.object({
1761
+ showLogo: z16.boolean().default(true),
1762
+ showLogoText: z16.boolean().optional(),
1632
1763
  placement: footerLogoPlacement.optional(),
1633
1764
  size: footerLogoSize.optional(),
1634
1765
  maxHeight: footerLogoMaxHeight.optional(),
1635
- align: z14.enum(["start", "center", "end"]).optional()
1766
+ align: z16.enum(["start", "center", "end"]).optional()
1636
1767
  });
1637
- var footerSchema = z14.object({
1768
+ var footerSchema = z16.object({
1638
1769
  /**
1639
1770
  * SDK-only footer rendering mode.
1640
1771
  *
@@ -1643,14 +1774,14 @@ var footerSchema = z14.object({
1643
1774
  mode: footerMode.optional(),
1644
1775
  variant: footerVariant,
1645
1776
  maxWidth: footerMaxWidth,
1646
- showLogoText: z14.boolean().optional(),
1777
+ showLogoText: z16.boolean().optional(),
1647
1778
  background: headerBackgroundSchema.default({
1648
1779
  type: "color",
1649
1780
  color: "surface"
1650
1781
  }),
1651
1782
  // Footer nav styling (independent from header)
1652
1783
  navStyle: headerNavStyle.default("minimal"),
1653
- navColor: z14.string().nullable().optional(),
1784
+ navColor: themeColorTokenSchema.nullable().optional(),
1654
1785
  navWeight: navFontWeight.default("medium"),
1655
1786
  // Full nav link customization (overrides navStyle if set)
1656
1787
  navLinkStyle: navLinkStyleSchema.optional(),
@@ -1661,23 +1792,23 @@ var footerSchema = z14.object({
1661
1792
  logo: footerLogoSchema.optional(),
1662
1793
  bottomBar: footerBottomBarSchema.optional()
1663
1794
  });
1664
- var containerPaddingPresetSchema = z14.enum(["tight", "compact", "default", "relaxed"]);
1665
- var layoutSchema = z14.object({
1666
- containerPadding: z14.object({
1795
+ var containerPaddingPresetSchema = z16.enum(["tight", "compact", "default", "relaxed"]);
1796
+ var layoutSchema = z16.object({
1797
+ containerPadding: z16.object({
1667
1798
  mobile: containerPaddingPresetSchema.optional(),
1668
1799
  tablet: containerPaddingPresetSchema.optional(),
1669
1800
  desktop: containerPaddingPresetSchema.optional()
1670
1801
  }).optional()
1671
1802
  }).optional();
1672
- var heroTypographySizeSchema = z14.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
1673
- var heroTypographyLineHeightSchema = z14.enum(["tight", "snug", "normal", "relaxed"]);
1674
- var heroResponsiveTypographySchema = z14.object({
1803
+ var heroTypographySizeSchema = z16.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
1804
+ var heroTypographyLineHeightSchema = z16.enum(["tight", "snug", "normal", "relaxed"]);
1805
+ var heroResponsiveTypographySchema = z16.object({
1675
1806
  headlineSize: heroTypographySizeSchema.optional(),
1676
1807
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
1677
1808
  subheadlineSize: heroTypographySizeSchema.optional(),
1678
1809
  subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
1679
1810
  });
1680
- var heroTypographySchema = z14.object({
1811
+ var heroTypographySchema = z16.object({
1681
1812
  headlineSize: heroTypographySizeSchema.optional(),
1682
1813
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
1683
1814
  subheadlineSize: heroTypographySizeSchema.optional(),
@@ -1686,31 +1817,31 @@ var heroTypographySchema = z14.object({
1686
1817
  microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
1687
1818
  microSubheadlineSize: heroTypographySizeSchema.optional(),
1688
1819
  microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
1689
- responsive: z14.object({
1820
+ responsive: z16.object({
1690
1821
  tablet: heroResponsiveTypographySchema.optional(),
1691
1822
  mobile: heroResponsiveTypographySchema.optional()
1692
1823
  }).optional()
1693
1824
  });
1694
- var heroSchema = z14.object({
1825
+ var heroSchema = z16.object({
1695
1826
  typography: heroTypographySchema.optional()
1696
1827
  }).optional();
1697
- var bodyTextIntroTypographySizeSchema = z14.enum(["default", "editorial"]);
1698
- var bodyTextSchema = z14.object({
1699
- intro: z14.object({
1828
+ var bodyTextIntroTypographySizeSchema = z16.enum(["default", "editorial"]);
1829
+ var bodyTextSchema = z16.object({
1830
+ intro: z16.object({
1700
1831
  paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
1701
1832
  headingSize: bodyTextIntroTypographySizeSchema.optional()
1702
1833
  }).optional()
1703
1834
  }).optional();
1704
- var gradientsSchema = z14.object({
1705
- button: z14.string().min(1).nullable().optional(),
1706
- hero: z14.string().min(1).nullable().optional(),
1707
- background: z14.string().min(1).nullable().optional()
1708
- });
1709
- var themeSchema = z14.object({
1710
- name: z14.string().min(1).max(30),
1711
- description: z14.string().min(1).max(400),
1712
- rationale: z14.string().min(1).max(400),
1713
- siteStyleId: z14.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
1835
+ var gradientsSchema = z16.object({
1836
+ button: z16.string().min(1).nullable().optional(),
1837
+ hero: z16.string().min(1).nullable().optional(),
1838
+ background: z16.string().min(1).nullable().optional()
1839
+ });
1840
+ var themeSchema = z16.object({
1841
+ name: z16.string().min(1).max(30),
1842
+ description: z16.string().min(1).max(400),
1843
+ rationale: z16.string().min(1).max(400),
1844
+ siteStyleId: z16.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
1714
1845
  axes: axesSchema,
1715
1846
  palette: paletteSchema,
1716
1847
  typography: typographySchema,
@@ -1738,15 +1869,15 @@ var themeSchema = z14.object({
1738
1869
  // Block-specific customization (Tier 3)
1739
1870
  // blockCustomVars: Per-block CSS variable overrides as bare values
1740
1871
  // Example: { "event-registration": { "--step-color": "#6d28d9" } }
1741
- blockCustomVars: z14.record(
1742
- z14.string(),
1872
+ blockCustomVars: z16.record(
1873
+ z16.string(),
1743
1874
  // block kind (matches data-block attribute)
1744
- z14.record(z14.string(), z14.string())
1875
+ z16.record(z16.string(), z16.string())
1745
1876
  // { '--var-name': 'value' }
1746
1877
  ).optional(),
1747
1878
  // Structured block-kind theme overrides (v1: typography prose-link style only)
1748
1879
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
1749
- blockOverrides: z14.record(z14.string(), blockThemeOverrideSchema).optional(),
1880
+ blockOverrides: z16.record(z16.string(), blockThemeOverrideSchema).optional(),
1750
1881
  // Structured custom CSS rules
1751
1882
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
1752
1883
  customCssRules: customCssRulesSchema,
@@ -1780,11 +1911,11 @@ var themeSchema = z14.object({
1780
1911
  * }
1781
1912
  * ```
1782
1913
  */
1783
- styleGroups: z14.record(z14.string(), z14.array(z14.string())).optional()
1914
+ styleGroups: z16.record(z16.string(), z16.array(z16.string())).optional()
1784
1915
  });
1785
- var themesTurnSchema = z14.object({
1786
- message: z14.string().min(1),
1787
- themes: z14.array(themeSchema).length(3)
1916
+ var themesTurnSchema = z16.object({
1917
+ message: z16.string().min(1),
1918
+ themes: z16.array(themeSchema).length(3)
1788
1919
  });
1789
1920
 
1790
1921
  // src/theme/loader.ts