@riverbankcms/sdk 0.60.1 → 0.60.3

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 (83) hide show
  1. package/dist/_dts/api/src/bookingRecords.d.ts +7 -0
  2. package/dist/_dts/api/src/communications.d.ts +1 -0
  3. package/dist/_dts/api/src/contentRuntime.d.ts +8 -0
  4. package/dist/_dts/api/src/endpoints.d.ts +17 -0
  5. package/dist/_dts/api/src/index.d.ts +1 -1
  6. package/dist/_dts/api/src/media.d.ts +1 -1
  7. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +45 -1
  8. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +24 -1
  9. package/dist/_dts/api/src/siteSettings.d.ts +7 -0
  10. package/dist/_dts/api/src/types.d.ts +1 -1
  11. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -0
  12. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +1 -0
  13. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.server.d.ts +4 -0
  14. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.shared.d.ts +38 -0
  15. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.view.d.ts +2 -1
  16. package/dist/_dts/core/src/business-address.d.ts +38 -0
  17. package/dist/_dts/core/src/index.d.ts +1 -0
  18. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +22 -0
  19. package/dist/_dts/preview-next/src/client/blocks/runOptimisticCustomizeAction.d.ts +44 -0
  20. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +7 -1
  21. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +12 -1
  22. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -1
  23. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +20 -0
  24. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +99 -0
  25. package/dist/_dts/sdk/src/public-api/contracts.d.ts +11 -1
  26. package/dist/_dts/sdk/src/version.d.ts +1 -1
  27. package/dist/_dts/theme-core/src/buttons/constants.d.ts +9 -1
  28. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +16 -11
  29. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +9 -16
  30. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  31. package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +11 -0
  32. package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +11 -0
  33. package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +11 -0
  34. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +14 -0
  35. package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +11 -0
  36. package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +11 -0
  37. package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +11 -0
  38. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +268 -0
  39. package/dist/_dts/theme-core/src/buttons/types.d.ts +253 -72
  40. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +69 -15
  41. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  42. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +28 -0
  43. package/dist/_dts/theme-core/src/palette/variants/high-contrast.d.ts +28 -0
  44. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +17 -0
  45. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +28 -0
  46. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +154 -0
  47. package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +28 -0
  48. package/dist/_dts/theme-core/src/schema.d.ts +122 -10
  49. package/dist/_dts/theme-core/src/site-styles/compatibility.d.ts +109 -0
  50. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +193 -0
  51. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  52. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -0
  53. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +43 -2
  54. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +23 -1
  55. package/dist/_dts/ui/src/badge.d.ts +1 -1
  56. package/dist/_dts/ui/src/callout.d.ts +1 -1
  57. package/dist/cli/index.mjs +1471 -263
  58. package/dist/client/bookings.mjs +294 -144
  59. package/dist/client/client.mjs +3483 -2219
  60. package/dist/client/hooks.mjs +2765 -1654
  61. package/dist/client/rendering/client.mjs +3251 -2134
  62. package/dist/client/rendering/islands.mjs +1842 -728
  63. package/dist/client/rendering.mjs +41242 -39978
  64. package/dist/preview-next/before-render.mjs +17 -0
  65. package/dist/preview-next/client/runtime.mjs +10110 -8271
  66. package/dist/preview-next/middleware.mjs +17 -0
  67. package/dist/server/components.mjs +3500 -2364
  68. package/dist/server/config-validation.mjs +2996 -1885
  69. package/dist/server/config.mjs +2996 -1885
  70. package/dist/server/data.mjs +2765 -1654
  71. package/dist/server/index.mjs +18 -1
  72. package/dist/server/next.mjs +3215 -2079
  73. package/dist/server/page-converter.mjs +2910 -1816
  74. package/dist/server/prebuild.mjs +1 -1
  75. package/dist/server/rendering/server.mjs +3500 -2364
  76. package/dist/server/rendering.mjs +3500 -2364
  77. package/dist/server/routing.mjs +2943 -1704
  78. package/dist/server/server.mjs +2766 -1655
  79. package/dist/server/theme-bridge.mjs +1435 -481
  80. package/dist/server/theme.mjs +1087 -492
  81. package/package.json +1 -1
  82. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.d.ts +0 -11
  83. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.state.d.ts +0 -43
@@ -86,7 +86,7 @@ function ze() {
86
86
  /* @__PURE__ */ Te(P)
87
87
  );
88
88
  }
89
- function z2(e) {
89
+ function z3(e) {
90
90
  if (L) {
91
91
  if (/* @__PURE__ */ Te(P) !== null)
92
92
  throw Tt(), Je;
@@ -2115,12 +2115,12 @@ function ha(e, t) {
2115
2115
  var mt = we(Dr, 2);
2116
2116
  let Pr;
2117
2117
  var We = X(mt);
2118
- en(We), We.__change = ui, z2(mt);
2118
+ en(We), We.__change = ui, z3(mt);
2119
2119
  var Ut = we(mt, 2), wi = X(Ut);
2120
2120
  {
2121
2121
  var pi = (n) => {
2122
2122
  var u = na(), _ = Gr(u), y = X(_);
2123
- Ge(y, () => c(re).verified), z2(_);
2123
+ Ge(y, () => c(re).verified), z3(_);
2124
2124
  var T = we(_, 2);
2125
2125
  en(T), Pe(() => {
2126
2126
  se(T, "name", V()), jo(T, c(Le));
@@ -2129,10 +2129,10 @@ function ha(e, t) {
2129
2129
  {
2130
2130
  var _ = (T) => {
2131
2131
  var E = ia(), p = X(E);
2132
- Ge(p, () => c(re).verifying), z2(E), ne(T, E);
2132
+ Ge(p, () => c(re).verifying), z3(E), ne(T, E);
2133
2133
  }, y = (T) => {
2134
2134
  var E = oa(), p = X(E);
2135
- Ge(p, () => c(re).label), z2(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
2135
+ Ge(p, () => c(re).label), z3(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
2136
2136
  };
2137
2137
  $e(
2138
2138
  n,
@@ -2147,18 +2147,18 @@ function ha(e, t) {
2147
2147
  c(C) === b.VERIFIED ? n(pi) : n(bi, false);
2148
2148
  });
2149
2149
  }
2150
- z2(Ut);
2150
+ z3(Ut);
2151
2151
  var yi = we(Ut, 2);
2152
2152
  {
2153
2153
  var Ei = (n) => {
2154
2154
  var u = aa(), _ = X(u);
2155
- se(_, "href", sr), z2(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
2155
+ se(_, "href", sr), z3(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
2156
2156
  };
2157
2157
  $e(yi, (n) => {
2158
2158
  (N() !== true || c(Dt)) && n(Ei);
2159
2159
  });
2160
2160
  }
2161
- z2(Mt);
2161
+ z3(Mt);
2162
2162
  var Or = we(Mt, 2);
2163
2163
  {
2164
2164
  var xi = (n) => {
@@ -2166,16 +2166,16 @@ function ha(e, t) {
2166
2166
  {
2167
2167
  var y = (E) => {
2168
2168
  var p = la(), x = X(p);
2169
- Ge(x, () => c(re).expired), z2(p), Pe(() => se(p, "title", c(He))), ne(E, p);
2169
+ Ge(x, () => c(re).expired), z3(p), Pe(() => se(p, "title", c(He))), ne(E, p);
2170
2170
  }, T = (E) => {
2171
2171
  var p = sa(), x = X(p);
2172
- Ge(x, () => c(re).error), z2(p), Pe(() => se(p, "title", c(He))), ne(E, p);
2172
+ Ge(x, () => c(re).error), z3(p), Pe(() => se(p, "title", c(He))), ne(E, p);
2173
2173
  };
2174
2174
  $e(_, (E) => {
2175
2175
  c(C) === b.EXPIRED ? E(y) : E(T, false);
2176
2176
  });
2177
2177
  }
2178
- z2(u), ne(n, u);
2178
+ z3(u), ne(n, u);
2179
2179
  };
2180
2180
  $e(Or, (n) => {
2181
2181
  (c(He) || c(C) === b.EXPIRED) && n(xi);
@@ -2185,7 +2185,7 @@ function ha(e, t) {
2185
2185
  {
2186
2186
  var $i = (n) => {
2187
2187
  var u = ua(), _ = X(u), y = X(_);
2188
- Ge(y, () => c(re).footer), z2(_), z2(u), ne(n, u);
2188
+ Ge(y, () => c(re).footer), z3(_), z3(u), ne(n, u);
2189
2189
  };
2190
2190
  $e(Fr, (n) => {
2191
2191
  c(re).footer && (k() !== true || c(Dt)) && n($i);
@@ -2201,7 +2201,7 @@ function ha(e, t) {
2201
2201
  v() && n(Ci);
2202
2202
  });
2203
2203
  }
2204
- return z2(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
2204
+ return z3(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
2205
2205
  (n) => {
2206
2206
  se(ot, "data-state", c(C)), se(ot, "data-floating", v()), Pr = Fo(mt, 1, "altcha-checkbox", null, Pr, n), se(We, "id", c(cr)), We.required = r2() !== "onsubmit" && (!v() || r2() !== "off");
2207
2207
  },
@@ -2806,6 +2806,156 @@ function clsx() {
2806
2806
  }
2807
2807
  var clsx_default = clsx;
2808
2808
 
2809
+ // ../theme-core/src/buttons/types.ts
2810
+ import { z } from "zod";
2811
+ var VARIANT_ROLES = [
2812
+ "primary",
2813
+ "secondary",
2814
+ "outline",
2815
+ "ghost",
2816
+ "link",
2817
+ "tertiary",
2818
+ "accent"
2819
+ ];
2820
+ var cornerStyleSchema = z.enum(["square", "rounded", "pill"]);
2821
+ var shadowSizeSchema = z.enum(["none", "low", "medium", "high"]);
2822
+ var textTransformSchema = z.enum(["none", "uppercase", "lowercase", "capitalize"]);
2823
+ var fontWeightSchema = z.union([z.literal(500), z.literal(600), z.literal(700)]);
2824
+ var buttonTypographySchema = z.enum(["body", "heading"]);
2825
+ var letterSpacingSchema = z.enum(["tight", "normal", "loose"]);
2826
+ var hoverTransformSchema = z.enum(["none", "lift", "scale", "press"]);
2827
+ var hoverColorSchema = z.enum(["none", "brighten", "darken", "saturate", "token"]);
2828
+ var buttonPaddingPresetSchema = z.enum(["compact", "default", "spacious"]);
2829
+ var gradientStyleSchema = z.enum(["linear", "radial", "conic"]);
2830
+ var gradientSharpnessSchema = z.enum(["smooth", "medium", "hard"]);
2831
+ var prioritySchema = z.union([z.literal(1), z.literal(2), z.literal(3)]);
2832
+ var variantRoleSchema = z.enum(VARIANT_ROLES);
2833
+ var buttonSizeNameSchema = z.enum(["sm", "md", "lg", "xl"]);
2834
+ var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
2835
+ var paddingShorthandSchema = z.string().refine(
2836
+ (value) => {
2837
+ const parts = value.split(/\s+/).filter(Boolean);
2838
+ return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
2839
+ },
2840
+ {
2841
+ message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
2842
+ }
2843
+ );
2844
+ var buttonSizeConfigSchema = z.object({
2845
+ padding: paddingShorthandSchema,
2846
+ fontSize: z.string().optional()
2847
+ });
2848
+ var buttonSizesSchema = z.object({
2849
+ sm: buttonSizeConfigSchema,
2850
+ md: buttonSizeConfigSchema,
2851
+ lg: buttonSizeConfigSchema,
2852
+ xl: buttonSizeConfigSchema.optional()
2853
+ }).transform(({ sm, md, lg, xl }) => ({
2854
+ sm,
2855
+ md,
2856
+ lg,
2857
+ xl: xl ?? lg
2858
+ }));
2859
+ var buttonGlobalSettingsSchema = z.object({
2860
+ cornerStyle: cornerStyleSchema,
2861
+ cornerRadius: z.number().min(0).max(24).optional(),
2862
+ shadow: shadowSizeSchema,
2863
+ textTransform: textTransformSchema,
2864
+ fontWeight: fontWeightSchema,
2865
+ /**
2866
+ * @deprecated Set per-variant via `variant.border.widthClass` instead.
2867
+ * Schema field is preserved so existing presets parse; the value is unread
2868
+ * by the current generator and will be removed once the legacy
2869
+ * `primitives/content/components/Button.tsx` slot exports are deleted.
2870
+ */
2871
+ borderWidth: z.union([z.literal(1), z.literal(2), z.literal(3)]),
2872
+ // === Family-level typography ===
2873
+ // Typography source (body or heading) — selects which theme typography pool to inherit
2874
+ typography: buttonTypographySchema.optional(),
2875
+ // Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
2876
+ // Sized variants get this as default; fixed variants inherit unless they override.
2877
+ // Size class CSS may still override at run time for sized variants.
2878
+ fontSize: z.string().optional(),
2879
+ // Letter spacing applied to all variants
2880
+ letterSpacing: letterSpacingSchema.optional(),
2881
+ // Italic style
2882
+ italic: z.boolean().optional(),
2883
+ // Padding preset (applies to sized variants without a sizes config)
2884
+ paddingPreset: buttonPaddingPresetSchema.optional(),
2885
+ hoverTransform: hoverTransformSchema,
2886
+ hoverColor: hoverColorSchema,
2887
+ // When hoverColor is 'token', this specifies which token to use
2888
+ hoverColorToken: z.string().optional(),
2889
+ // Gradient settings (if any variant uses gradients)
2890
+ gradientStyle: gradientStyleSchema.optional(),
2891
+ gradientAngle: z.number().min(0).max(360).optional(),
2892
+ gradientSharpness: gradientSharpnessSchema.optional()
2893
+ });
2894
+ var gradientDirectionSchema = z.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
2895
+ var buttonBackgroundSchema = z.discriminatedUnion("type", [
2896
+ z.object({ type: z.literal("solid"), colorToken: z.string() }),
2897
+ z.object({
2898
+ type: z.literal("gradient"),
2899
+ stops: z.array(z.string()).min(2),
2900
+ direction: gradientDirectionSchema
2901
+ }),
2902
+ z.object({ type: z.literal("transparent") })
2903
+ ]);
2904
+ var effectApplicationSchema = z.object({
2905
+ effectId: z.string(),
2906
+ options: z.record(z.string(), z.any()).optional()
2907
+ });
2908
+ var buttonBorderSchema = z.object({
2909
+ widthClass: z.string(),
2910
+ colorToken: z.string()
2911
+ });
2912
+ var variantShadowSchema = z.object({
2913
+ elevation: z.enum(["none", "low", "medium", "high"]),
2914
+ softness: z.enum(["crisp", "soft", "hard"]).nullable(),
2915
+ position: z.enum(["bottom", "bottom-right"]).default("bottom")
2916
+ });
2917
+ var variantEffectsSchema = z.object({
2918
+ base: z.array(effectApplicationSchema).optional(),
2919
+ hover: z.array(effectApplicationSchema).optional(),
2920
+ active: z.array(effectApplicationSchema).optional(),
2921
+ focus: z.array(effectApplicationSchema).optional()
2922
+ });
2923
+ var variantSizeOverridesSchema = z.object({
2924
+ sm: buttonSizeConfigSchema.optional(),
2925
+ md: buttonSizeConfigSchema.optional(),
2926
+ lg: buttonSizeConfigSchema.optional(),
2927
+ xl: buttonSizeConfigSchema.optional()
2928
+ });
2929
+ var buttonVariantSchema = z.object({
2930
+ id: z.string(),
2931
+ name: z.string().min(1).max(20),
2932
+ enabled: z.boolean(),
2933
+ priority: prioritySchema,
2934
+ // Base appearance (token-based)
2935
+ background: buttonBackgroundSchema,
2936
+ textColorToken: z.string(),
2937
+ /** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
2938
+ borderRadius: z.string().optional(),
2939
+ // Optional shadow override (uses theme.shadow if not specified)
2940
+ shadow: variantShadowSchema.optional(),
2941
+ // Border (optional)
2942
+ border: buttonBorderSchema.optional(),
2943
+ // Hover background token (per-variant override, takes precedence over global hoverColorToken)
2944
+ hoverBackgroundToken: z.string().optional(),
2945
+ // Effect composition
2946
+ effects: variantEffectsSchema.optional(),
2947
+ // Per-variant size overrides — see VariantSizeOverrides
2948
+ sizes: variantSizeOverridesSchema.optional()
2949
+ });
2950
+ var buttonSystemSchema = z.object({
2951
+ global: buttonGlobalSettingsSchema,
2952
+ variants: z.array(buttonVariantSchema).min(1).max(6),
2953
+ sizes: buttonSizesSchema.optional()
2954
+ });
2955
+
2956
+ // ../theme-core/src/buttons/generateButtonCss.ts
2957
+ var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
2958
+
2809
2959
  // ../core/src/branded.ts
2810
2960
  var asAppointmentResourceId = (id) => id;
2811
2961
 
@@ -3016,8 +3166,8 @@ function addLocalScheduleDays(date, days) {
3016
3166
  }
3017
3167
 
3018
3168
  // ../theme-core/src/accordions/types.ts
3019
- import { z } from "zod";
3020
- var accordionIconSchema = z.enum([
3169
+ import { z as z2 } from "zod";
3170
+ var accordionIconSchema = z2.enum([
3021
3171
  "plus-minus",
3022
3172
  // + becomes - (swap or rotate 90°)
3023
3173
  "chevron",
@@ -3029,49 +3179,49 @@ var accordionIconSchema = z.enum([
3029
3179
  "circle-plus-minus"
3030
3180
  // ⊕ becomes ⊖ (swap with fade)
3031
3181
  ]);
3032
- var accordionSystemSchema = z.object({
3182
+ var accordionSystemSchema = z2.object({
3033
3183
  // Visual styling (solid color only - gradients can be added later if needed)
3034
- background: z.object({
3035
- type: z.literal("solid"),
3036
- colorToken: z.string()
3184
+ background: z2.object({
3185
+ type: z2.literal("solid"),
3186
+ colorToken: z2.string()
3037
3187
  }),
3038
3188
  // Spacing (padding inside items)
3039
- spacing: z.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
3189
+ spacing: z2.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
3040
3190
  // Border radius (null = inherit from theme.corners)
3041
- corners: z.enum(["square", "soft", "rounded", "pill"]).nullable(),
3191
+ corners: z2.enum(["square", "soft", "rounded", "pill"]).nullable(),
3042
3192
  // Border styling (null = inherit from theme.border)
3043
- border: z.object({
3044
- widthClass: z.string(),
3193
+ border: z2.object({
3194
+ widthClass: z2.string(),
3045
3195
  // e.g., 'border', 'border-2', 'border-0'
3046
- colorToken: z.string()
3196
+ colorToken: z2.string()
3047
3197
  }).nullable(),
3048
3198
  // Shadow (null = inherit from theme.shadow)
3049
- shadow: z.object({
3050
- elevation: z.enum(["none", "low", "medium", "high"]),
3051
- softness: z.enum(["soft", "crisp", "hard"]).nullable(),
3052
- position: z.enum(["bottom", "bottom-right"])
3199
+ shadow: z2.object({
3200
+ elevation: z2.enum(["none", "low", "medium", "high"]),
3201
+ softness: z2.enum(["soft", "crisp", "hard"]).nullable(),
3202
+ position: z2.enum(["bottom", "bottom-right"])
3053
3203
  }).nullable(),
3054
3204
  // Icon style and animation
3055
- icon: z.object({
3205
+ icon: z2.object({
3056
3206
  style: accordionIconSchema,
3057
- position: z.enum(["left", "right"]),
3058
- size: z.enum(["sm", "md", "lg"])
3207
+ position: z2.enum(["left", "right"]),
3208
+ size: z2.enum(["sm", "md", "lg"])
3059
3209
  }),
3060
3210
  // Trigger (question) styling
3061
- trigger: z.object({
3062
- textColorToken: z.string(),
3063
- fontWeight: z.enum(["regular", "medium", "semibold", "bold"]).nullable()
3211
+ trigger: z2.object({
3212
+ textColorToken: z2.string(),
3213
+ fontWeight: z2.enum(["regular", "medium", "semibold", "bold"]).nullable()
3064
3214
  // null = inherit from theme
3065
3215
  }),
3066
3216
  // Hover state styling
3067
- hover: z.object({
3068
- backgroundColorToken: z.string().optional(),
3069
- textColorToken: z.string().optional(),
3070
- borderColorToken: z.string().optional()
3217
+ hover: z2.object({
3218
+ backgroundColorToken: z2.string().optional(),
3219
+ textColorToken: z2.string().optional(),
3220
+ borderColorToken: z2.string().optional()
3071
3221
  }),
3072
3222
  // Content (answer) styling
3073
- content: z.object({
3074
- textColorToken: z.string()
3223
+ content: z2.object({
3224
+ textColorToken: z2.string()
3075
3225
  })
3076
3226
  });
3077
3227
 
@@ -6573,116 +6723,116 @@ var BookingFormClient = ({
6573
6723
  import { useMemo as useMemo6 } from "react";
6574
6724
 
6575
6725
  // ../theme-core/src/inputs/types.ts
6576
- import { z as z3 } from "zod";
6577
- var inputSystemSchema = z3.object({
6726
+ import { z as z4 } from "zod";
6727
+ var inputSystemSchema = z4.object({
6578
6728
  // Base styling (applied to all inputs)
6579
- base: z3.object({
6580
- background: z3.union([
6581
- z3.object({
6582
- type: z3.literal("solid"),
6583
- colorToken: z3.string()
6729
+ base: z4.object({
6730
+ background: z4.union([
6731
+ z4.object({
6732
+ type: z4.literal("solid"),
6733
+ colorToken: z4.string()
6584
6734
  }),
6585
- z3.object({
6586
- type: z3.literal("transparent")
6735
+ z4.object({
6736
+ type: z4.literal("transparent")
6587
6737
  })
6588
6738
  ]),
6589
- textColorToken: z3.string(),
6590
- border: z3.object({
6591
- widthClass: z3.string(),
6739
+ textColorToken: z4.string(),
6740
+ border: z4.object({
6741
+ widthClass: z4.string(),
6592
6742
  // e.g., 'border', 'border-2'
6593
- colorToken: z3.string(),
6594
- style: z3.enum(["all", "underline"]).optional()
6743
+ colorToken: z4.string(),
6744
+ style: z4.enum(["all", "underline"]).optional()
6595
6745
  }),
6596
- corners: z3.enum(["square", "soft", "rounded", "pill"]).nullable(),
6746
+ corners: z4.enum(["square", "soft", "rounded", "pill"]).nullable(),
6597
6747
  // null = inherit from theme.corners
6598
- shadow: z3.object({
6599
- elevation: z3.enum(["none", "low", "medium"]),
6600
- softness: z3.enum(["soft", "crisp", "hard"]).nullable()
6748
+ shadow: z4.object({
6749
+ elevation: z4.enum(["none", "low", "medium"]),
6750
+ softness: z4.enum(["soft", "crisp", "hard"]).nullable()
6601
6751
  }).nullable(),
6602
- spacing: z3.enum(["compact", "cozy", "medium", "comfortable"]),
6752
+ spacing: z4.enum(["compact", "cozy", "medium", "comfortable"]),
6603
6753
  // padding inside inputs
6604
- fontSize: z3.enum(["sm", "base", "lg"])
6754
+ fontSize: z4.enum(["sm", "base", "lg"])
6605
6755
  }),
6606
6756
  // Label styling
6607
- label: z3.object({
6608
- textColorToken: z3.string(),
6609
- fontWeight: z3.enum(["regular", "medium", "semibold", "bold", "black"]),
6610
- fontSize: z3.enum(["2xs", "xs", "sm", "base"]),
6611
- textTransform: z3.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
6612
- letterSpacing: z3.enum(["normal", "wide", "wider", "widest"]).optional(),
6613
- opacity: z3.number().min(0.2).max(1).optional()
6757
+ label: z4.object({
6758
+ textColorToken: z4.string(),
6759
+ fontWeight: z4.enum(["regular", "medium", "semibold", "bold", "black"]),
6760
+ fontSize: z4.enum(["2xs", "xs", "sm", "base"]),
6761
+ textTransform: z4.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
6762
+ letterSpacing: z4.enum(["normal", "wide", "wider", "widest"]).optional(),
6763
+ opacity: z4.number().min(0.2).max(1).optional()
6614
6764
  }),
6615
6765
  // Focus state
6616
- focus: z3.object({
6617
- ringColorToken: z3.string(),
6618
- ringWidth: z3.enum(["0", "1", "2", "3"]),
6619
- borderColorToken: z3.string().optional()
6766
+ focus: z4.object({
6767
+ ringColorToken: z4.string(),
6768
+ ringWidth: z4.enum(["0", "1", "2", "3"]),
6769
+ borderColorToken: z4.string().optional()
6620
6770
  // Change border color on focus
6621
6771
  }),
6622
6772
  // Error state (for validation feedback)
6623
- error: z3.object({
6624
- borderColorToken: z3.string(),
6625
- textColorToken: z3.string()
6773
+ error: z4.object({
6774
+ borderColorToken: z4.string(),
6775
+ textColorToken: z4.string()
6626
6776
  }),
6627
6777
  // Disabled state
6628
- disabled: z3.object({
6629
- backgroundColorToken: z3.string(),
6630
- textColorToken: z3.string(),
6631
- opacity: z3.number().min(0.3).max(0.7)
6778
+ disabled: z4.object({
6779
+ backgroundColorToken: z4.string(),
6780
+ textColorToken: z4.string(),
6781
+ opacity: z4.number().min(0.3).max(0.7)
6632
6782
  })
6633
6783
  });
6634
6784
 
6635
6785
  // ../theme-core/src/navigation/types.ts
6636
- import { z as z5 } from "zod";
6786
+ import { z as z6 } from "zod";
6637
6787
 
6638
6788
  // ../theme-core/src/interactive/baseSchema.ts
6639
- import { z as z4 } from "zod";
6640
- var interactiveTypographySchema = z4.object({
6789
+ import { z as z5 } from "zod";
6790
+ var interactiveTypographySchema = z5.object({
6641
6791
  /** Font family source */
6642
- typography: z4.enum(["body", "heading"]).default("body"),
6792
+ typography: z5.enum(["body", "heading"]).default("body"),
6643
6793
  /** Font weight */
6644
- fontWeight: z4.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
6794
+ fontWeight: z5.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
6645
6795
  /** Text transform */
6646
- textTransform: z4.enum(["none", "uppercase", "capitalize"]).default("none"),
6796
+ textTransform: z5.enum(["none", "uppercase", "capitalize"]).default("none"),
6647
6797
  /** Italic style */
6648
- italic: z4.boolean().default(false)
6798
+ italic: z5.boolean().default(false)
6649
6799
  });
6650
- var effectApplicationSchema = z4.object({
6800
+ var effectApplicationSchema2 = z5.object({
6651
6801
  /** Effect preset ID */
6652
- effectId: z4.string(),
6802
+ effectId: z5.string(),
6653
6803
  /** User-provided customization options */
6654
- options: z4.record(z4.string(), z4.any()).optional()
6804
+ options: z5.record(z5.string(), z5.any()).optional()
6655
6805
  });
6656
- var effectCompositionSchema = z4.object({
6806
+ var effectCompositionSchema = z5.object({
6657
6807
  /** Effects always applied */
6658
- base: z4.array(effectApplicationSchema).optional(),
6808
+ base: z5.array(effectApplicationSchema2).optional(),
6659
6809
  /** Effects applied on hover */
6660
- hover: z4.array(effectApplicationSchema).optional(),
6810
+ hover: z5.array(effectApplicationSchema2).optional(),
6661
6811
  /** Effects applied on active/pressed */
6662
- active: z4.array(effectApplicationSchema).optional(),
6812
+ active: z5.array(effectApplicationSchema2).optional(),
6663
6813
  /** Effects applied on focus */
6664
- focus: z4.array(effectApplicationSchema).optional()
6814
+ focus: z5.array(effectApplicationSchema2).optional()
6665
6815
  });
6666
6816
 
6667
6817
  // ../theme-core/src/navigation/types.ts
6668
- var navLinkPaddingSchema = z5.enum(["none", "compact", "default"]);
6669
- var navLinkPaddingXSchema = z5.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
6670
- var navLinkBorderRadiusSchema = z5.enum(["none", "sm", "md", "full"]);
6671
- var navLinkTextSizeSchema = z5.enum(["xs", "sm", "base", "lg"]);
6672
- var navLinkLetterSpacingSchema = z5.enum(["normal", "wide", "wider", "widest"]);
6673
- var navLinkStyleSchema = z5.object({
6818
+ var navLinkPaddingSchema = z6.enum(["none", "compact", "default"]);
6819
+ var navLinkPaddingXSchema = z6.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
6820
+ var navLinkBorderRadiusSchema = z6.enum(["none", "sm", "md", "full"]);
6821
+ var navLinkTextSizeSchema = z6.enum(["xs", "sm", "base", "lg"]);
6822
+ var navLinkLetterSpacingSchema = z6.enum(["normal", "wide", "wider", "widest"]);
6823
+ var navLinkStyleSchema = z6.object({
6674
6824
  /** Display name for the style */
6675
- name: z5.string().min(1).max(30).optional(),
6825
+ name: z6.string().min(1).max(30).optional(),
6676
6826
  /** Typography settings (inherited from interactive base) */
6677
6827
  ...interactiveTypographySchema.shape,
6678
6828
  /** Text color token */
6679
- colorToken: z5.string().default("text"),
6829
+ colorToken: z6.string().default("text"),
6680
6830
  /** Optional text size override */
6681
6831
  textSize: navLinkTextSizeSchema.optional(),
6682
6832
  /** Optional letter spacing override */
6683
6833
  letterSpacing: navLinkLetterSpacingSchema.optional(),
6684
6834
  /** Hover/active color token (for color-change effects) */
6685
- hoverColorToken: z5.string().nullable().optional(),
6835
+ hoverColorToken: z6.string().nullable().optional(),
6686
6836
  /** Padding preset */
6687
6837
  padding: navLinkPaddingSchema.default("compact"),
6688
6838
  /** Horizontal padding override (overrides horizontal component of padding preset) */
@@ -6838,15 +6988,15 @@ var NAV_LINK_PRESETS = {
6838
6988
  var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
6839
6989
 
6840
6990
  // ../theme-core/src/shared/componentStyles.ts
6841
- import { z as z6 } from "zod";
6842
- var componentBorderSchema = z6.object({
6843
- width: z6.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
6844
- style: z6.enum(["solid", "dashed"]).default("solid"),
6845
- colorToken: z6.string().optional()
6991
+ import { z as z7 } from "zod";
6992
+ var componentBorderSchema = z7.object({
6993
+ width: z7.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
6994
+ style: z7.enum(["solid", "dashed"]).default("solid"),
6995
+ colorToken: z7.string().optional()
6846
6996
  // defaults to "border" if not set
6847
6997
  });
6848
- var componentShadowSchema = z6.object({
6849
- elevation: z6.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
6998
+ var componentShadowSchema = z7.object({
6999
+ elevation: z7.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
6850
7000
  });
6851
7001
 
6852
7002
  // ../theme-core/src/blocks/vars/event-registration.ts
@@ -7300,7 +7450,7 @@ blockVarRegistry.set("course-details", generateCourseDetailsVars);
7300
7450
  blockVarRegistry.set("course-registration", generateCourseRegistrationVars);
7301
7451
 
7302
7452
  // ../theme-core/src/customCss/validation.ts
7303
- import { z as z7 } from "zod";
7453
+ import { z as z8 } from "zod";
7304
7454
  var FORBIDDEN_SELECTORS = [":root", "html", "body"];
7305
7455
  var UNIVERSAL_SELECTOR = "*";
7306
7456
  var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
@@ -7342,7 +7492,7 @@ function containsForbiddenSelector(selector) {
7342
7492
  }
7343
7493
  return false;
7344
7494
  }
7345
- var selectorSchema = z7.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
7495
+ var selectorSchema = z8.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
7346
7496
  (s) => !containsForbiddenSelector(s),
7347
7497
  { message: "Global selectors (:root, html, body, *) are not allowed" }
7348
7498
  );
@@ -7352,38 +7502,38 @@ function containsRemoteUrl(value) {
7352
7502
  function containsJavascriptUrl(value) {
7353
7503
  return JAVASCRIPT_URL_PATTERN.test(value);
7354
7504
  }
7355
- var declarationValueSchema = z7.string().max(500, "Declaration value too long (max 500 characters)").refine(
7505
+ var declarationValueSchema = z8.string().max(500, "Declaration value too long (max 500 characters)").refine(
7356
7506
  (v) => !containsRemoteUrl(v),
7357
7507
  { message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
7358
7508
  ).refine(
7359
7509
  (v) => !containsJavascriptUrl(v),
7360
7510
  { message: "javascript: URLs are not allowed" }
7361
7511
  );
7362
- var declarationsSchema = z7.record(
7363
- z7.string().min(1).max(100),
7512
+ var declarationsSchema = z8.record(
7513
+ z8.string().min(1).max(100),
7364
7514
  // property name
7365
7515
  declarationValueSchema
7366
7516
  // property value
7367
7517
  );
7368
- var customCssRuleSchema = z7.object({
7369
- id: z7.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
7518
+ var customCssRuleSchema = z8.object({
7519
+ id: z8.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
7370
7520
  selector: selectorSchema,
7371
7521
  declarations: declarationsSchema
7372
7522
  });
7373
7523
  var blockCustomCssRuleSchema = customCssRuleSchema.extend({
7374
- blockKind: z7.string().min(1, "Block kind is required").max(50, "Block kind too long")
7524
+ blockKind: z8.string().min(1, "Block kind is required").max(50, "Block kind too long")
7375
7525
  });
7376
- var customCssRulesSchema = z7.array(customCssRuleSchema).optional();
7377
- var blockCustomCssRulesSchema = z7.array(blockCustomCssRuleSchema).optional();
7526
+ var customCssRulesSchema = z8.array(customCssRuleSchema).optional();
7527
+ var blockCustomCssRulesSchema = z8.array(blockCustomCssRuleSchema).optional();
7378
7528
 
7379
7529
  // ../theme-core/src/customCss/atRuleValidation.ts
7380
- import { z as z8 } from "zod";
7530
+ import { z as z9 } from "zod";
7381
7531
  var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
7382
7532
  var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
7383
7533
  var BLOCKED_AT_RULES = ["@import", "@charset"];
7384
7534
  var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
7385
- var ruleIdSchema = z8.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
7386
- var nestedRuleSchema = z8.object({
7535
+ var ruleIdSchema = z9.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
7536
+ var nestedRuleSchema = z9.object({
7387
7537
  selector: selectorSchema,
7388
7538
  declarations: declarationsSchema
7389
7539
  });
@@ -7395,73 +7545,73 @@ function isValidKeyframeOffset(offset) {
7395
7545
  const value = parseInt(match[1], 10);
7396
7546
  return value >= 0 && value <= 100;
7397
7547
  }
7398
- var keyframeOffsetSchema = z8.string().transform((offset) => offset.trim()).refine(
7548
+ var keyframeOffsetSchema = z9.string().transform((offset) => offset.trim()).refine(
7399
7549
  (offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
7400
7550
  { message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
7401
7551
  ).refine(
7402
7552
  isValidKeyframeOffset,
7403
7553
  { message: "Keyframe offset must be between 0% and 100%" }
7404
7554
  );
7405
- var animationNameSchema = z8.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
7555
+ var animationNameSchema = z9.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
7406
7556
  (name) => ANIMATION_NAME_PATTERN.test(name),
7407
7557
  { message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
7408
7558
  );
7409
- var keyframeSchema = z8.object({
7559
+ var keyframeSchema = z9.object({
7410
7560
  offset: keyframeOffsetSchema,
7411
7561
  declarations: declarationsSchema
7412
7562
  });
7413
- var keyframesAtRuleSchema = z8.object({
7563
+ var keyframesAtRuleSchema = z9.object({
7414
7564
  id: ruleIdSchema,
7415
- type: z8.literal("keyframes"),
7565
+ type: z9.literal("keyframes"),
7416
7566
  name: animationNameSchema,
7417
- frames: z8.array(keyframeSchema).min(1, "At least one keyframe is required")
7567
+ frames: z9.array(keyframeSchema).min(1, "At least one keyframe is required")
7418
7568
  });
7419
- var fontFaceDeclarationsSchema = z8.record(z8.string().min(1).max(100), declarationValueSchema).refine(
7569
+ var fontFaceDeclarationsSchema = z9.record(z9.string().min(1).max(100), declarationValueSchema).refine(
7420
7570
  (decls) => "fontFamily" in decls || "font-family" in decls,
7421
7571
  { message: "font-family is required in @font-face" }
7422
7572
  );
7423
- var fontFaceAtRuleSchema = z8.object({
7573
+ var fontFaceAtRuleSchema = z9.object({
7424
7574
  id: ruleIdSchema,
7425
- type: z8.literal("font-face"),
7575
+ type: z9.literal("font-face"),
7426
7576
  declarations: fontFaceDeclarationsSchema
7427
7577
  });
7428
- var mediaQuerySchema = z8.string().min(1, "Media query is required").max(200, "Media query too long");
7429
- var mediaAtRuleSchema = z8.object({
7578
+ var mediaQuerySchema = z9.string().min(1, "Media query is required").max(200, "Media query too long");
7579
+ var mediaAtRuleSchema = z9.object({
7430
7580
  id: ruleIdSchema,
7431
- type: z8.literal("media"),
7581
+ type: z9.literal("media"),
7432
7582
  query: mediaQuerySchema,
7433
- rules: z8.array(nestedRuleSchema).min(1, "At least one rule is required")
7583
+ rules: z9.array(nestedRuleSchema).min(1, "At least one rule is required")
7434
7584
  });
7435
- var supportsConditionSchema = z8.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
7436
- var supportsAtRuleSchema = z8.object({
7585
+ var supportsConditionSchema = z9.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
7586
+ var supportsAtRuleSchema = z9.object({
7437
7587
  id: ruleIdSchema,
7438
- type: z8.literal("supports"),
7588
+ type: z9.literal("supports"),
7439
7589
  condition: supportsConditionSchema,
7440
- rules: z8.array(nestedRuleSchema).min(1, "At least one rule is required")
7590
+ rules: z9.array(nestedRuleSchema).min(1, "At least one rule is required")
7441
7591
  });
7442
7592
  function containsBlockedAtRule(css) {
7443
7593
  return BLOCKED_AT_RULE_PATTERN.test(css);
7444
7594
  }
7445
- var rawCssSchema = z8.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
7595
+ var rawCssSchema = z9.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
7446
7596
  (css) => css.trim().startsWith("@"),
7447
7597
  { message: "Raw at-rule must start with @" }
7448
7598
  ).refine(
7449
7599
  (css) => !containsBlockedAtRule(css),
7450
7600
  { message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
7451
7601
  );
7452
- var rawAtRuleSchema = z8.object({
7602
+ var rawAtRuleSchema = z9.object({
7453
7603
  id: ruleIdSchema,
7454
- type: z8.literal("raw"),
7604
+ type: z9.literal("raw"),
7455
7605
  css: rawCssSchema
7456
7606
  });
7457
- var customCssAtRuleSchema = z8.discriminatedUnion("type", [
7607
+ var customCssAtRuleSchema = z9.discriminatedUnion("type", [
7458
7608
  keyframesAtRuleSchema,
7459
7609
  fontFaceAtRuleSchema,
7460
7610
  mediaAtRuleSchema,
7461
7611
  supportsAtRuleSchema,
7462
7612
  rawAtRuleSchema
7463
7613
  ]);
7464
- var customCssAtRulesSchema = z8.array(customCssAtRuleSchema).optional();
7614
+ var customCssAtRulesSchema = z9.array(customCssAtRuleSchema).optional();
7465
7615
 
7466
7616
  // ../theme-core/src/responsiveMode.ts
7467
7617
  var THEME_RESPONSIVE_MODE_ATTR = "data-rb-responsive-mode";