@riverbankcms/sdk 0.60.1 → 0.60.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_dts/api/src/bookingRecords.d.ts +7 -0
- package/dist/_dts/api/src/bookingVerticals.d.ts +1 -0
- package/dist/_dts/api/src/communications.d.ts +1 -0
- package/dist/_dts/api/src/contentRuntime.d.ts +8 -0
- package/dist/_dts/api/src/endpoints.d.ts +17 -0
- package/dist/_dts/api/src/index.d.ts +1 -1
- package/dist/_dts/api/src/media.d.ts +1 -1
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +10 -2
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +26 -1
- package/dist/_dts/api/src/siteSettings.d.ts +7 -0
- package/dist/_dts/api/src/types.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -0
- package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +1 -0
- package/dist/_dts/blocks/src/system/node/fragments/ctaButton.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/location-map.server.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/location-map.shared.d.ts +38 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/location-map.view.d.ts +2 -1
- package/dist/_dts/blocks/src/system/runtime/shared/themedButtonClass.d.ts +11 -0
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +10 -2
- package/dist/_dts/core/src/business-address.d.ts +38 -0
- package/dist/_dts/core/src/index.d.ts +1 -0
- package/dist/_dts/core/src/participants.d.ts +32 -1
- package/dist/_dts/core/src/rectification.d.ts +79 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +28 -6
- package/dist/_dts/preview-next/src/client/blocks/runOptimisticCustomizeAction.d.ts +44 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +7 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +12 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -1
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +20 -0
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +101 -0
- package/dist/_dts/sdk/src/client/types.d.ts +1 -0
- package/dist/_dts/sdk/src/public-api/contracts.d.ts +11 -1
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/constants.d.ts +9 -1
- package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +16 -11
- package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +9 -16
- package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +95 -0
- package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +16 -0
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +268 -0
- package/dist/_dts/theme-core/src/buttons/types.d.ts +253 -72
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +69 -15
- package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +52 -0
- package/dist/_dts/theme-core/src/palette/variants/high-contrast.d.ts +52 -0
- package/dist/_dts/theme-core/src/palette/variants/index.d.ts +213 -0
- package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +52 -0
- package/dist/_dts/theme-core/src/palette/variants/types.d.ts +154 -0
- package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +52 -0
- package/dist/_dts/theme-core/src/schema.d.ts +122 -10
- package/dist/_dts/theme-core/src/site-styles/curatedChoices.d.ts +27 -0
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +48 -1
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +42 -3
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +23 -1
- package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +46 -0
- package/dist/_dts/ui/src/badge.d.ts +1 -1
- package/dist/_dts/ui/src/callout.d.ts +1 -1
- package/dist/_dts/ui/src/palette/ColorChooserDialog.d.ts +47 -0
- package/dist/_dts/ui/src/palette/ColorSlotButton.d.ts +15 -0
- package/dist/_dts/ui/src/palette/ColorSwatchButton.d.ts +15 -0
- package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +50 -0
- package/dist/_dts/ui/src/palette/hex.d.ts +23 -0
- package/dist/_dts/ui/src/palette/index.d.ts +14 -0
- package/dist/cli/index.mjs +2255 -947
- package/dist/client/bookings.mjs +294 -144
- package/dist/client/client.mjs +4053 -2600
- package/dist/client/hooks.mjs +3248 -2076
- package/dist/client/rendering/client.mjs +3377 -2165
- package/dist/client/rendering/islands.mjs +1911 -736
- package/dist/client/rendering.mjs +41897 -40445
- package/dist/preview-next/before-render.mjs +17 -0
- package/dist/preview-next/client/runtime.mjs +13511 -11313
- package/dist/preview-next/middleware.mjs +17 -0
- package/dist/server/components.mjs +4434 -3172
- package/dist/server/config-validation.mjs +3479 -2307
- package/dist/server/config.mjs +3479 -2307
- package/dist/server/data.mjs +3248 -2076
- package/dist/server/index.mjs +21 -3
- package/dist/server/next.mjs +3989 -2726
- package/dist/server/page-converter.mjs +3393 -2238
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +4434 -3172
- package/dist/server/rendering.mjs +4434 -3172
- package/dist/server/routing.mjs +3582 -2274
- package/dist/server/server.mjs +3252 -2079
- package/dist/server/theme-bridge.mjs +1454 -496
- package/dist/server/theme.mjs +1102 -505
- package/package.json +1 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.d.ts +0 -11
- package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.state.d.ts +0 -43
package/dist/client/bookings.mjs
CHANGED
|
@@ -86,7 +86,7 @@ function ze() {
|
|
|
86
86
|
/* @__PURE__ */ Te(P)
|
|
87
87
|
);
|
|
88
88
|
}
|
|
89
|
-
function
|
|
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,
|
|
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),
|
|
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),
|
|
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),
|
|
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
|
-
|
|
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),
|
|
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
|
-
|
|
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),
|
|
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),
|
|
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
|
-
|
|
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),
|
|
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
|
|
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 =
|
|
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 =
|
|
3182
|
+
var accordionSystemSchema = z2.object({
|
|
3033
3183
|
// Visual styling (solid color only - gradients can be added later if needed)
|
|
3034
|
-
background:
|
|
3035
|
-
type:
|
|
3036
|
-
colorToken:
|
|
3184
|
+
background: z2.object({
|
|
3185
|
+
type: z2.literal("solid"),
|
|
3186
|
+
colorToken: z2.string()
|
|
3037
3187
|
}),
|
|
3038
3188
|
// Spacing (padding inside items)
|
|
3039
|
-
spacing:
|
|
3189
|
+
spacing: z2.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
|
|
3040
3190
|
// Border radius (null = inherit from theme.corners)
|
|
3041
|
-
corners:
|
|
3191
|
+
corners: z2.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
3042
3192
|
// Border styling (null = inherit from theme.border)
|
|
3043
|
-
border:
|
|
3044
|
-
widthClass:
|
|
3193
|
+
border: z2.object({
|
|
3194
|
+
widthClass: z2.string(),
|
|
3045
3195
|
// e.g., 'border', 'border-2', 'border-0'
|
|
3046
|
-
colorToken:
|
|
3196
|
+
colorToken: z2.string()
|
|
3047
3197
|
}).nullable(),
|
|
3048
3198
|
// Shadow (null = inherit from theme.shadow)
|
|
3049
|
-
shadow:
|
|
3050
|
-
elevation:
|
|
3051
|
-
softness:
|
|
3052
|
-
position:
|
|
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:
|
|
3205
|
+
icon: z2.object({
|
|
3056
3206
|
style: accordionIconSchema,
|
|
3057
|
-
position:
|
|
3058
|
-
size:
|
|
3207
|
+
position: z2.enum(["left", "right"]),
|
|
3208
|
+
size: z2.enum(["sm", "md", "lg"])
|
|
3059
3209
|
}),
|
|
3060
3210
|
// Trigger (question) styling
|
|
3061
|
-
trigger:
|
|
3062
|
-
textColorToken:
|
|
3063
|
-
fontWeight:
|
|
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:
|
|
3068
|
-
backgroundColorToken:
|
|
3069
|
-
textColorToken:
|
|
3070
|
-
borderColorToken:
|
|
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:
|
|
3074
|
-
textColorToken:
|
|
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
|
|
6577
|
-
var inputSystemSchema =
|
|
6726
|
+
import { z as z4 } from "zod";
|
|
6727
|
+
var inputSystemSchema = z4.object({
|
|
6578
6728
|
// Base styling (applied to all inputs)
|
|
6579
|
-
base:
|
|
6580
|
-
background:
|
|
6581
|
-
|
|
6582
|
-
type:
|
|
6583
|
-
colorToken:
|
|
6729
|
+
base: z4.object({
|
|
6730
|
+
background: z4.union([
|
|
6731
|
+
z4.object({
|
|
6732
|
+
type: z4.literal("solid"),
|
|
6733
|
+
colorToken: z4.string()
|
|
6584
6734
|
}),
|
|
6585
|
-
|
|
6586
|
-
type:
|
|
6735
|
+
z4.object({
|
|
6736
|
+
type: z4.literal("transparent")
|
|
6587
6737
|
})
|
|
6588
6738
|
]),
|
|
6589
|
-
textColorToken:
|
|
6590
|
-
border:
|
|
6591
|
-
widthClass:
|
|
6739
|
+
textColorToken: z4.string(),
|
|
6740
|
+
border: z4.object({
|
|
6741
|
+
widthClass: z4.string(),
|
|
6592
6742
|
// e.g., 'border', 'border-2'
|
|
6593
|
-
colorToken:
|
|
6594
|
-
style:
|
|
6743
|
+
colorToken: z4.string(),
|
|
6744
|
+
style: z4.enum(["all", "underline"]).optional()
|
|
6595
6745
|
}),
|
|
6596
|
-
corners:
|
|
6746
|
+
corners: z4.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
6597
6747
|
// null = inherit from theme.corners
|
|
6598
|
-
shadow:
|
|
6599
|
-
elevation:
|
|
6600
|
-
softness:
|
|
6748
|
+
shadow: z4.object({
|
|
6749
|
+
elevation: z4.enum(["none", "low", "medium"]),
|
|
6750
|
+
softness: z4.enum(["soft", "crisp", "hard"]).nullable()
|
|
6601
6751
|
}).nullable(),
|
|
6602
|
-
spacing:
|
|
6752
|
+
spacing: z4.enum(["compact", "cozy", "medium", "comfortable"]),
|
|
6603
6753
|
// padding inside inputs
|
|
6604
|
-
fontSize:
|
|
6754
|
+
fontSize: z4.enum(["sm", "base", "lg"])
|
|
6605
6755
|
}),
|
|
6606
6756
|
// Label styling
|
|
6607
|
-
label:
|
|
6608
|
-
textColorToken:
|
|
6609
|
-
fontWeight:
|
|
6610
|
-
fontSize:
|
|
6611
|
-
textTransform:
|
|
6612
|
-
letterSpacing:
|
|
6613
|
-
opacity:
|
|
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:
|
|
6617
|
-
ringColorToken:
|
|
6618
|
-
ringWidth:
|
|
6619
|
-
borderColorToken:
|
|
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:
|
|
6624
|
-
borderColorToken:
|
|
6625
|
-
textColorToken:
|
|
6773
|
+
error: z4.object({
|
|
6774
|
+
borderColorToken: z4.string(),
|
|
6775
|
+
textColorToken: z4.string()
|
|
6626
6776
|
}),
|
|
6627
6777
|
// Disabled state
|
|
6628
|
-
disabled:
|
|
6629
|
-
backgroundColorToken:
|
|
6630
|
-
textColorToken:
|
|
6631
|
-
opacity:
|
|
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
|
|
6786
|
+
import { z as z6 } from "zod";
|
|
6637
6787
|
|
|
6638
6788
|
// ../theme-core/src/interactive/baseSchema.ts
|
|
6639
|
-
import { z as
|
|
6640
|
-
var interactiveTypographySchema =
|
|
6789
|
+
import { z as z5 } from "zod";
|
|
6790
|
+
var interactiveTypographySchema = z5.object({
|
|
6641
6791
|
/** Font family source */
|
|
6642
|
-
typography:
|
|
6792
|
+
typography: z5.enum(["body", "heading"]).default("body"),
|
|
6643
6793
|
/** Font weight */
|
|
6644
|
-
fontWeight:
|
|
6794
|
+
fontWeight: z5.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
|
|
6645
6795
|
/** Text transform */
|
|
6646
|
-
textTransform:
|
|
6796
|
+
textTransform: z5.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
6647
6797
|
/** Italic style */
|
|
6648
|
-
italic:
|
|
6798
|
+
italic: z5.boolean().default(false)
|
|
6649
6799
|
});
|
|
6650
|
-
var
|
|
6800
|
+
var effectApplicationSchema2 = z5.object({
|
|
6651
6801
|
/** Effect preset ID */
|
|
6652
|
-
effectId:
|
|
6802
|
+
effectId: z5.string(),
|
|
6653
6803
|
/** User-provided customization options */
|
|
6654
|
-
options:
|
|
6804
|
+
options: z5.record(z5.string(), z5.any()).optional()
|
|
6655
6805
|
});
|
|
6656
|
-
var effectCompositionSchema =
|
|
6806
|
+
var effectCompositionSchema = z5.object({
|
|
6657
6807
|
/** Effects always applied */
|
|
6658
|
-
base:
|
|
6808
|
+
base: z5.array(effectApplicationSchema2).optional(),
|
|
6659
6809
|
/** Effects applied on hover */
|
|
6660
|
-
hover:
|
|
6810
|
+
hover: z5.array(effectApplicationSchema2).optional(),
|
|
6661
6811
|
/** Effects applied on active/pressed */
|
|
6662
|
-
active:
|
|
6812
|
+
active: z5.array(effectApplicationSchema2).optional(),
|
|
6663
6813
|
/** Effects applied on focus */
|
|
6664
|
-
focus:
|
|
6814
|
+
focus: z5.array(effectApplicationSchema2).optional()
|
|
6665
6815
|
});
|
|
6666
6816
|
|
|
6667
6817
|
// ../theme-core/src/navigation/types.ts
|
|
6668
|
-
var navLinkPaddingSchema =
|
|
6669
|
-
var navLinkPaddingXSchema =
|
|
6670
|
-
var navLinkBorderRadiusSchema =
|
|
6671
|
-
var navLinkTextSizeSchema =
|
|
6672
|
-
var navLinkLetterSpacingSchema =
|
|
6673
|
-
var navLinkStyleSchema =
|
|
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:
|
|
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:
|
|
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:
|
|
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
|
|
6842
|
-
var componentBorderSchema =
|
|
6843
|
-
width:
|
|
6844
|
-
style:
|
|
6845
|
-
colorToken:
|
|
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 =
|
|
6849
|
-
elevation:
|
|
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
|
|
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 =
|
|
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 =
|
|
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 =
|
|
7363
|
-
|
|
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 =
|
|
7369
|
-
id:
|
|
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:
|
|
7524
|
+
blockKind: z8.string().min(1, "Block kind is required").max(50, "Block kind too long")
|
|
7375
7525
|
});
|
|
7376
|
-
var customCssRulesSchema =
|
|
7377
|
-
var blockCustomCssRulesSchema =
|
|
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
|
|
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 =
|
|
7386
|
-
var nestedRuleSchema =
|
|
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 =
|
|
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 =
|
|
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 =
|
|
7559
|
+
var keyframeSchema = z9.object({
|
|
7410
7560
|
offset: keyframeOffsetSchema,
|
|
7411
7561
|
declarations: declarationsSchema
|
|
7412
7562
|
});
|
|
7413
|
-
var keyframesAtRuleSchema =
|
|
7563
|
+
var keyframesAtRuleSchema = z9.object({
|
|
7414
7564
|
id: ruleIdSchema,
|
|
7415
|
-
type:
|
|
7565
|
+
type: z9.literal("keyframes"),
|
|
7416
7566
|
name: animationNameSchema,
|
|
7417
|
-
frames:
|
|
7567
|
+
frames: z9.array(keyframeSchema).min(1, "At least one keyframe is required")
|
|
7418
7568
|
});
|
|
7419
|
-
var fontFaceDeclarationsSchema =
|
|
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 =
|
|
7573
|
+
var fontFaceAtRuleSchema = z9.object({
|
|
7424
7574
|
id: ruleIdSchema,
|
|
7425
|
-
type:
|
|
7575
|
+
type: z9.literal("font-face"),
|
|
7426
7576
|
declarations: fontFaceDeclarationsSchema
|
|
7427
7577
|
});
|
|
7428
|
-
var mediaQuerySchema =
|
|
7429
|
-
var mediaAtRuleSchema =
|
|
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:
|
|
7581
|
+
type: z9.literal("media"),
|
|
7432
7582
|
query: mediaQuerySchema,
|
|
7433
|
-
rules:
|
|
7583
|
+
rules: z9.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
7434
7584
|
});
|
|
7435
|
-
var supportsConditionSchema =
|
|
7436
|
-
var supportsAtRuleSchema =
|
|
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:
|
|
7588
|
+
type: z9.literal("supports"),
|
|
7439
7589
|
condition: supportsConditionSchema,
|
|
7440
|
-
rules:
|
|
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 =
|
|
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 =
|
|
7602
|
+
var rawAtRuleSchema = z9.object({
|
|
7453
7603
|
id: ruleIdSchema,
|
|
7454
|
-
type:
|
|
7604
|
+
type: z9.literal("raw"),
|
|
7455
7605
|
css: rawCssSchema
|
|
7456
7606
|
});
|
|
7457
|
-
var customCssAtRuleSchema =
|
|
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 =
|
|
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";
|