@riverbankcms/sdk 0.60.16 → 0.62.2
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/bookingManagementEndpoints.d.ts +41 -1
- package/dist/_dts/api/src/bookingRecords.d.ts +100 -3
- package/dist/_dts/api/src/bookings.d.ts +2 -1
- package/dist/_dts/api/src/endpoints.d.ts +96 -0
- package/dist/_dts/api/src/index.d.ts +5 -1
- package/dist/_dts/api/src/participantMessaging.d.ts +113 -0
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +51 -47
- package/dist/_dts/api/src/types.d.ts +1 -0
- package/dist/_dts/blocks/src/index.d.ts +66 -62
- package/dist/_dts/blocks/src/lib/media.d.ts +60 -0
- package/dist/_dts/blocks/src/system/blocks/appointment-booking.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/audio-player.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/blog-listing.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/blog-post.d.ts +0 -21
- package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +2 -6
- package/dist/_dts/blocks/src/system/blocks/cart.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/checkout.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/collection.d.ts +0 -10
- package/dist/_dts/blocks/src/system/blocks/columns.d.ts +0 -10
- package/dist/_dts/blocks/src/system/blocks/course-details.d.ts +0 -20
- package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +0 -20
- package/dist/_dts/blocks/src/system/blocks/courses/shared/schemas.d.ts +15 -15
- package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +5 -10
- package/dist/_dts/blocks/src/system/blocks/embed.d.ts +0 -11
- package/dist/_dts/blocks/src/system/blocks/event-details.d.ts +0 -20
- package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +0 -20
- package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +43 -27
- package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +24 -15
- package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +132 -12
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +3 -2
- package/dist/_dts/blocks/src/system/blocks/faq.d.ts +2 -10
- package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/form.d.ts +2 -24
- package/dist/_dts/blocks/src/system/blocks/gifting.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/hero.d.ts +2 -3
- package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +0 -13
- package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +17 -17
- package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +2 -10
- package/dist/_dts/blocks/src/system/blocks/product-detail.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/product-list.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/shared/bookingPaymentTerms.d.ts +9 -9
- package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/single-button.d.ts +16 -15
- package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +2 -6
- package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +0 -11
- package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -3
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +2 -2
- package/dist/_dts/blocks/src/system/constants/events.d.ts +18 -0
- package/dist/_dts/blocks/src/system/customize/facets.d.ts +105 -0
- package/dist/_dts/blocks/src/system/defineBlock.d.ts +29 -5
- package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +2 -1
- package/dist/_dts/blocks/src/system/fragments/library/blogFeaturedPost.d.ts +0 -24
- package/dist/_dts/blocks/src/system/fragments/library/bodyCopy.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/bookingForm.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/card.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/library/columnContent.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/library/ctaCopy.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/ctaRow.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/faqAccordion.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/faqHeading.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/feedbackCallout.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/library/footerBottomText.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/formCopy.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/formEmbed.d.ts +0 -18
- package/dist/_dts/blocks/src/system/fragments/library/headerCta.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/heading.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/library/heroCopy.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/heroLayoutControls.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/image.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/library/newsletterCopy.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/newsletterForm.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/quote.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/library/richText.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/library/sectionState.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/library/singleButton.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/spinner.d.ts +0 -5
- package/dist/_dts/blocks/src/system/fragments/library/teamMember.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +0 -31
- package/dist/_dts/blocks/src/system/fragments/library/testimonialsHeading.d.ts +0 -4
- package/dist/_dts/blocks/src/system/fragments/library/videoEmbed.d.ts +0 -6
- package/dist/_dts/blocks/src/system/fragments/types.d.ts +11 -3
- package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +4 -0
- package/dist/_dts/blocks/src/system/index.d.ts +1 -0
- package/dist/_dts/blocks/src/system/manifest/derivedContent.d.ts +3 -3
- package/dist/_dts/blocks/src/system/manifest/schema.d.ts +10 -10
- package/dist/_dts/blocks/src/system/media/constrainedVideoMedia.d.ts +13 -0
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -0
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +4 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/media.d.ts +1 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -0
- package/dist/_dts/content-model/src/contentManifest.d.ts +2 -2
- package/dist/_dts/content-model/src/referenceFields.d.ts +7 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +34 -6
- package/dist/_dts/editor-blocks/src/media/MediaField.d.ts +2 -0
- package/dist/_dts/editor-blocks/src/widgets/entry-picker/EntryPickerWidgetProvider.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/widgets/entry-picker/loaders.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/entry-picker/types.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/link/LinkPicker.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/link/LinkWidgetContext.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/link/loaders.d.ts +2 -1
- package/dist/_dts/editor-blocks/src/widgets/link/types.d.ts +3 -2
- package/dist/_dts/editor-blocks/src/widgets/reference/dynamicAdapters.d.ts +9 -0
- package/dist/_dts/editor-blocks/src/widgets/reference/loaders.d.ts +5 -1
- package/dist/_dts/media-core/src/index.d.ts +1 -0
- package/dist/_dts/media-core/src/videoSlotPolicy.d.ts +38 -0
- package/dist/_dts/media-editor/src/MediaEditor.d.ts +3 -1
- package/dist/_dts/media-editor/src/MediaPickerDialog.d.ts +7 -0
- package/dist/_dts/preview-next/src/client/blocks/customizeFacetControls.d.ts +9 -0
- package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +14 -0
- package/dist/_dts/preview-next/src/client/layout/PreviewLayoutContext.d.ts +9 -7
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +6 -3
- package/dist/_dts/preview-next/src/client/widgets/widgetAdapters.d.ts +1 -1
- package/dist/_dts/sdk/src/contracts/content.d.ts +10 -0
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +1 -1
- package/dist/_dts/sdk/src/manifest/prompt/examples/features-grid.d.ts +1 -1
- package/dist/_dts/sdk/src/manifest/prompt/examples/pricing.d.ts +5 -5
- package/dist/_dts/sdk/src/rendering/helpers/bindings.d.ts +1 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/index.d.ts +1 -0
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +3 -0
- package/dist/_dts/theme-core/src/schema.d.ts +25 -0
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +515 -0
- package/dist/_dts/theme-core/src/site-styles/appearancePresetResolution.d.ts +12 -0
- package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +119 -0
- package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +5 -563
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +448 -0
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +6 -0
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +12 -0
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +8 -0
- package/dist/_dts/theme-core/src/site-styles/siteChromeAppearancePresets.d.ts +67 -0
- package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +6 -6
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +22 -3
- package/dist/_dts/theme-core/src/siteChrome.d.ts +11 -0
- package/dist/cli/index.mjs +4310 -3464
- package/dist/client/bookings.mjs +310 -310
- package/dist/client/client.mjs +61329 -60359
- package/dist/client/hooks.mjs +1254 -731
- package/dist/client/rendering/client.mjs +5959 -5226
- package/dist/client/rendering/islands.mjs +3842 -3275
- package/dist/client/rendering.mjs +7495 -6519
- package/dist/preview-next/before-render.mjs +118 -0
- package/dist/preview-next/client/runtime.mjs +4489 -2773
- package/dist/preview-next/middleware.mjs +136 -0
- package/dist/server/components.mjs +1342 -765
- package/dist/server/config-validation.mjs +1256 -733
- package/dist/server/config.mjs +1256 -733
- package/dist/server/data.mjs +1254 -731
- package/dist/server/index.mjs +191 -18
- package/dist/server/next.mjs +1339 -760
- package/dist/server/page-converter.mjs +1088 -734
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +1338 -762
- package/dist/server/rendering.mjs +1351 -770
- package/dist/server/routing.mjs +1340 -754
- package/dist/server/server.mjs +1260 -734
- package/dist/server/theme-bridge.mjs +198 -34
- package/dist/server/theme.mjs +6 -0
- package/dist/styles/index.css +28 -9
- package/package.json +1 -1
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 z11(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, z11(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), z11(_);
|
|
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), z11(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), z11(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
|
+
z11(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), z11(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
|
+
z11(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), z11(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), z11(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
|
+
z11(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), z11(_), z11(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 z11(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
|
},
|
|
@@ -4397,6 +4397,303 @@ function getBookingSuccessMessage(successMessage) {
|
|
|
4397
4397
|
return successMessage?.trim() || "Your appointment has been booked! Check your email for confirmation.";
|
|
4398
4398
|
}
|
|
4399
4399
|
|
|
4400
|
+
// ../theme-core/src/inputs/types.ts
|
|
4401
|
+
import { z as z5 } from "zod";
|
|
4402
|
+
var inputSystemSchema = z5.object({
|
|
4403
|
+
// Base styling (applied to all inputs)
|
|
4404
|
+
base: z5.object({
|
|
4405
|
+
background: z5.union([
|
|
4406
|
+
z5.object({
|
|
4407
|
+
type: z5.literal("solid"),
|
|
4408
|
+
colorToken: z5.string()
|
|
4409
|
+
}),
|
|
4410
|
+
z5.object({
|
|
4411
|
+
type: z5.literal("transparent")
|
|
4412
|
+
})
|
|
4413
|
+
]),
|
|
4414
|
+
textColorToken: z5.string(),
|
|
4415
|
+
border: z5.object({
|
|
4416
|
+
widthClass: z5.string(),
|
|
4417
|
+
// e.g., 'border', 'border-2'
|
|
4418
|
+
colorToken: z5.string(),
|
|
4419
|
+
style: z5.enum(["all", "underline"]).optional()
|
|
4420
|
+
}),
|
|
4421
|
+
corners: z5.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
4422
|
+
// null = inherit from theme.corners
|
|
4423
|
+
shadow: z5.object({
|
|
4424
|
+
elevation: z5.enum(["none", "low", "medium"]),
|
|
4425
|
+
softness: z5.enum(["soft", "crisp", "hard"]).nullable()
|
|
4426
|
+
}).nullable(),
|
|
4427
|
+
spacing: z5.enum(["compact", "cozy", "medium", "comfortable"]),
|
|
4428
|
+
// padding inside inputs
|
|
4429
|
+
fontSize: z5.enum(["sm", "base", "lg"])
|
|
4430
|
+
}),
|
|
4431
|
+
// Label styling
|
|
4432
|
+
label: z5.object({
|
|
4433
|
+
textColorToken: z5.string(),
|
|
4434
|
+
fontWeight: z5.enum(["regular", "medium", "semibold", "bold", "black"]),
|
|
4435
|
+
fontSize: z5.enum(["2xs", "xs", "sm", "base"]),
|
|
4436
|
+
textTransform: z5.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
|
|
4437
|
+
letterSpacing: z5.enum(["normal", "wide", "wider", "widest"]).optional(),
|
|
4438
|
+
opacity: z5.number().min(0.2).max(1).optional()
|
|
4439
|
+
}),
|
|
4440
|
+
// Focus state
|
|
4441
|
+
focus: z5.object({
|
|
4442
|
+
ringColorToken: z5.string(),
|
|
4443
|
+
ringWidth: z5.enum(["0", "1", "2", "3"]),
|
|
4444
|
+
borderColorToken: z5.string().optional()
|
|
4445
|
+
// Change border color on focus
|
|
4446
|
+
}),
|
|
4447
|
+
// Error state (for validation feedback)
|
|
4448
|
+
error: z5.object({
|
|
4449
|
+
borderColorToken: z5.string(),
|
|
4450
|
+
textColorToken: z5.string()
|
|
4451
|
+
}),
|
|
4452
|
+
// Disabled state
|
|
4453
|
+
disabled: z5.object({
|
|
4454
|
+
backgroundColorToken: z5.string(),
|
|
4455
|
+
textColorToken: z5.string(),
|
|
4456
|
+
opacity: z5.number().min(0.3).max(0.7)
|
|
4457
|
+
})
|
|
4458
|
+
});
|
|
4459
|
+
|
|
4460
|
+
// ../theme-core/src/navigation/types.ts
|
|
4461
|
+
import { z as z7 } from "zod";
|
|
4462
|
+
|
|
4463
|
+
// ../theme-core/src/interactive/baseSchema.ts
|
|
4464
|
+
import { z as z6 } from "zod";
|
|
4465
|
+
var interactiveTypographySchema = z6.object({
|
|
4466
|
+
/** Font family source */
|
|
4467
|
+
typography: z6.enum(["body", "heading"]).default("body"),
|
|
4468
|
+
/** Font weight */
|
|
4469
|
+
fontWeight: z6.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
|
|
4470
|
+
/** Text transform */
|
|
4471
|
+
textTransform: z6.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
4472
|
+
/** Italic style */
|
|
4473
|
+
italic: z6.boolean().default(false)
|
|
4474
|
+
});
|
|
4475
|
+
var effectApplicationSchema2 = z6.object({
|
|
4476
|
+
/** Effect preset ID */
|
|
4477
|
+
effectId: z6.string(),
|
|
4478
|
+
/** User-provided customization options */
|
|
4479
|
+
options: z6.record(z6.string(), z6.any()).optional()
|
|
4480
|
+
});
|
|
4481
|
+
var effectCompositionSchema = z6.object({
|
|
4482
|
+
/** Effects always applied */
|
|
4483
|
+
base: z6.array(effectApplicationSchema2).optional(),
|
|
4484
|
+
/** Effects applied on hover */
|
|
4485
|
+
hover: z6.array(effectApplicationSchema2).optional(),
|
|
4486
|
+
/** Effects applied on active/pressed */
|
|
4487
|
+
active: z6.array(effectApplicationSchema2).optional(),
|
|
4488
|
+
/** Effects applied on focus */
|
|
4489
|
+
focus: z6.array(effectApplicationSchema2).optional()
|
|
4490
|
+
});
|
|
4491
|
+
|
|
4492
|
+
// ../theme-core/src/navigation/types.ts
|
|
4493
|
+
var navLinkPaddingSchema = z7.enum(["none", "compact", "default"]);
|
|
4494
|
+
var navLinkPaddingXSchema = z7.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
4495
|
+
var navLinkBorderRadiusSchema = z7.enum(["none", "sm", "md", "full"]);
|
|
4496
|
+
var navLinkTextSizeSchema = z7.enum(["xs", "sm", "base", "lg"]);
|
|
4497
|
+
var navLinkLetterSpacingSchema = z7.enum(["normal", "wide", "wider", "widest"]);
|
|
4498
|
+
var navLinkStyleSchema = z7.object({
|
|
4499
|
+
/** Display name for the style */
|
|
4500
|
+
name: z7.string().min(1).max(30).optional(),
|
|
4501
|
+
/** Typography settings (inherited from interactive base) */
|
|
4502
|
+
...interactiveTypographySchema.shape,
|
|
4503
|
+
/** Text color token */
|
|
4504
|
+
colorToken: z7.string().default("text"),
|
|
4505
|
+
/** Optional text size override */
|
|
4506
|
+
textSize: navLinkTextSizeSchema.optional(),
|
|
4507
|
+
/** Optional letter spacing override */
|
|
4508
|
+
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
4509
|
+
/** Hover/active color token (for color-change effects) */
|
|
4510
|
+
hoverColorToken: z7.string().nullable().optional(),
|
|
4511
|
+
/** Padding preset */
|
|
4512
|
+
padding: navLinkPaddingSchema.default("compact"),
|
|
4513
|
+
/** Horizontal padding override (overrides horizontal component of padding preset) */
|
|
4514
|
+
paddingX: navLinkPaddingXSchema.optional(),
|
|
4515
|
+
/** Border radius (for capsule/pill styles) */
|
|
4516
|
+
borderRadius: navLinkBorderRadiusSchema.default("none"),
|
|
4517
|
+
/** Composable effects */
|
|
4518
|
+
effects: effectCompositionSchema.optional()
|
|
4519
|
+
});
|
|
4520
|
+
|
|
4521
|
+
// ../theme-core/src/customCss/validation.ts
|
|
4522
|
+
import { z as z8 } from "zod";
|
|
4523
|
+
var FORBIDDEN_SELECTORS = [":root", "html", "body"];
|
|
4524
|
+
var UNIVERSAL_SELECTOR = "*";
|
|
4525
|
+
var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
|
|
4526
|
+
var JAVASCRIPT_URL_PATTERN = /javascript\s*:/i;
|
|
4527
|
+
function isForbiddenSelectorPart(part) {
|
|
4528
|
+
const normalized = part.toLowerCase().trim();
|
|
4529
|
+
if (!normalized) return true;
|
|
4530
|
+
if (normalized === UNIVERSAL_SELECTOR || normalized.startsWith("* ") || normalized.endsWith(" *") || normalized.includes(" * ")) {
|
|
4531
|
+
return true;
|
|
4532
|
+
}
|
|
4533
|
+
for (const forbidden of FORBIDDEN_SELECTORS) {
|
|
4534
|
+
if (normalized === forbidden) return true;
|
|
4535
|
+
if (normalized.startsWith(forbidden + " ")) return true;
|
|
4536
|
+
if (normalized.startsWith(forbidden + ">")) return true;
|
|
4537
|
+
if (normalized.startsWith(forbidden + "+")) return true;
|
|
4538
|
+
if (normalized.startsWith(forbidden + "~")) return true;
|
|
4539
|
+
if (normalized.startsWith(forbidden + ".")) return true;
|
|
4540
|
+
if (normalized.startsWith(forbidden + "#")) return true;
|
|
4541
|
+
if (normalized.startsWith(forbidden + "[")) return true;
|
|
4542
|
+
if (normalized.startsWith(forbidden + ":") && !normalized.startsWith(forbidden + "::")) return true;
|
|
4543
|
+
}
|
|
4544
|
+
return false;
|
|
4545
|
+
}
|
|
4546
|
+
function hasScopeEscapingSiblingCombinator(selector) {
|
|
4547
|
+
const normalized = selector.trim();
|
|
4548
|
+
return /&\s*[+~]/.test(normalized);
|
|
4549
|
+
}
|
|
4550
|
+
function containsForbiddenSelector(selector) {
|
|
4551
|
+
const normalized = selector.toLowerCase().trim();
|
|
4552
|
+
if (!normalized) return true;
|
|
4553
|
+
if (hasScopeEscapingSiblingCombinator(selector)) {
|
|
4554
|
+
return true;
|
|
4555
|
+
}
|
|
4556
|
+
const parts = normalized.split(",");
|
|
4557
|
+
for (const part of parts) {
|
|
4558
|
+
if (isForbiddenSelectorPart(part)) {
|
|
4559
|
+
return true;
|
|
4560
|
+
}
|
|
4561
|
+
}
|
|
4562
|
+
return false;
|
|
4563
|
+
}
|
|
4564
|
+
var selectorSchema = z8.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
|
|
4565
|
+
(s) => !containsForbiddenSelector(s),
|
|
4566
|
+
{ message: "Global selectors (:root, html, body, *) are not allowed" }
|
|
4567
|
+
);
|
|
4568
|
+
function containsRemoteUrl(value) {
|
|
4569
|
+
return REMOTE_URL_PATTERN.test(value);
|
|
4570
|
+
}
|
|
4571
|
+
function containsJavascriptUrl(value) {
|
|
4572
|
+
return JAVASCRIPT_URL_PATTERN.test(value);
|
|
4573
|
+
}
|
|
4574
|
+
var declarationValueSchema = z8.string().max(500, "Declaration value too long (max 500 characters)").refine(
|
|
4575
|
+
(v) => !containsRemoteUrl(v),
|
|
4576
|
+
{ message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
|
|
4577
|
+
).refine(
|
|
4578
|
+
(v) => !containsJavascriptUrl(v),
|
|
4579
|
+
{ message: "javascript: URLs are not allowed" }
|
|
4580
|
+
);
|
|
4581
|
+
var declarationsSchema = z8.record(
|
|
4582
|
+
z8.string().min(1).max(100),
|
|
4583
|
+
// property name
|
|
4584
|
+
declarationValueSchema
|
|
4585
|
+
// property value
|
|
4586
|
+
);
|
|
4587
|
+
var customCssRuleSchema = z8.object({
|
|
4588
|
+
id: z8.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
|
|
4589
|
+
selector: selectorSchema,
|
|
4590
|
+
declarations: declarationsSchema
|
|
4591
|
+
});
|
|
4592
|
+
var blockCustomCssRuleSchema = customCssRuleSchema.extend({
|
|
4593
|
+
blockKind: z8.string().min(1, "Block kind is required").max(50, "Block kind too long")
|
|
4594
|
+
});
|
|
4595
|
+
var customCssRulesSchema = z8.array(customCssRuleSchema).optional();
|
|
4596
|
+
var blockCustomCssRulesSchema = z8.array(blockCustomCssRuleSchema).optional();
|
|
4597
|
+
|
|
4598
|
+
// ../theme-core/src/customCss/atRuleValidation.ts
|
|
4599
|
+
import { z as z9 } from "zod";
|
|
4600
|
+
var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
|
|
4601
|
+
var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
|
|
4602
|
+
var BLOCKED_AT_RULES = ["@import", "@charset"];
|
|
4603
|
+
var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
|
|
4604
|
+
var ruleIdSchema = z9.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
|
|
4605
|
+
var nestedRuleSchema = z9.object({
|
|
4606
|
+
selector: selectorSchema,
|
|
4607
|
+
declarations: declarationsSchema
|
|
4608
|
+
});
|
|
4609
|
+
function isValidKeyframeOffset(offset) {
|
|
4610
|
+
const trimmed = offset.trim().toLowerCase();
|
|
4611
|
+
if (trimmed === "from" || trimmed === "to") return true;
|
|
4612
|
+
const match = trimmed.match(/^(\d{1,3})%$/);
|
|
4613
|
+
if (!match || match[1] === void 0) return false;
|
|
4614
|
+
const value = parseInt(match[1], 10);
|
|
4615
|
+
return value >= 0 && value <= 100;
|
|
4616
|
+
}
|
|
4617
|
+
var keyframeOffsetSchema = z9.string().transform((offset) => offset.trim()).refine(
|
|
4618
|
+
(offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
|
|
4619
|
+
{ message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
|
|
4620
|
+
).refine(
|
|
4621
|
+
isValidKeyframeOffset,
|
|
4622
|
+
{ message: "Keyframe offset must be between 0% and 100%" }
|
|
4623
|
+
);
|
|
4624
|
+
var animationNameSchema = z9.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
|
|
4625
|
+
(name) => ANIMATION_NAME_PATTERN.test(name),
|
|
4626
|
+
{ message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
|
|
4627
|
+
);
|
|
4628
|
+
var keyframeSchema = z9.object({
|
|
4629
|
+
offset: keyframeOffsetSchema,
|
|
4630
|
+
declarations: declarationsSchema
|
|
4631
|
+
});
|
|
4632
|
+
var keyframesAtRuleSchema = z9.object({
|
|
4633
|
+
id: ruleIdSchema,
|
|
4634
|
+
type: z9.literal("keyframes"),
|
|
4635
|
+
name: animationNameSchema,
|
|
4636
|
+
frames: z9.array(keyframeSchema).min(1, "At least one keyframe is required")
|
|
4637
|
+
});
|
|
4638
|
+
var fontFaceDeclarationsSchema = z9.record(z9.string().min(1).max(100), declarationValueSchema).refine(
|
|
4639
|
+
(decls) => "fontFamily" in decls || "font-family" in decls,
|
|
4640
|
+
{ message: "font-family is required in @font-face" }
|
|
4641
|
+
);
|
|
4642
|
+
var fontFaceAtRuleSchema = z9.object({
|
|
4643
|
+
id: ruleIdSchema,
|
|
4644
|
+
type: z9.literal("font-face"),
|
|
4645
|
+
declarations: fontFaceDeclarationsSchema
|
|
4646
|
+
});
|
|
4647
|
+
var mediaQuerySchema = z9.string().min(1, "Media query is required").max(200, "Media query too long");
|
|
4648
|
+
var mediaAtRuleSchema = z9.object({
|
|
4649
|
+
id: ruleIdSchema,
|
|
4650
|
+
type: z9.literal("media"),
|
|
4651
|
+
query: mediaQuerySchema,
|
|
4652
|
+
rules: z9.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
4653
|
+
});
|
|
4654
|
+
var supportsConditionSchema = z9.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
|
|
4655
|
+
var supportsAtRuleSchema = z9.object({
|
|
4656
|
+
id: ruleIdSchema,
|
|
4657
|
+
type: z9.literal("supports"),
|
|
4658
|
+
condition: supportsConditionSchema,
|
|
4659
|
+
rules: z9.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
4660
|
+
});
|
|
4661
|
+
function containsBlockedAtRule(css) {
|
|
4662
|
+
return BLOCKED_AT_RULE_PATTERN.test(css);
|
|
4663
|
+
}
|
|
4664
|
+
var rawCssSchema = z9.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
|
|
4665
|
+
(css) => css.trim().startsWith("@"),
|
|
4666
|
+
{ message: "Raw at-rule must start with @" }
|
|
4667
|
+
).refine(
|
|
4668
|
+
(css) => !containsBlockedAtRule(css),
|
|
4669
|
+
{ message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
|
|
4670
|
+
);
|
|
4671
|
+
var rawAtRuleSchema = z9.object({
|
|
4672
|
+
id: ruleIdSchema,
|
|
4673
|
+
type: z9.literal("raw"),
|
|
4674
|
+
css: rawCssSchema
|
|
4675
|
+
});
|
|
4676
|
+
var customCssAtRuleSchema = z9.discriminatedUnion("type", [
|
|
4677
|
+
keyframesAtRuleSchema,
|
|
4678
|
+
fontFaceAtRuleSchema,
|
|
4679
|
+
mediaAtRuleSchema,
|
|
4680
|
+
supportsAtRuleSchema,
|
|
4681
|
+
rawAtRuleSchema
|
|
4682
|
+
]);
|
|
4683
|
+
var customCssAtRulesSchema = z9.array(customCssAtRuleSchema).optional();
|
|
4684
|
+
|
|
4685
|
+
// ../theme-core/src/shared/componentStyles.ts
|
|
4686
|
+
import { z as z10 } from "zod";
|
|
4687
|
+
var componentBorderSchema = z10.object({
|
|
4688
|
+
width: z10.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
|
|
4689
|
+
style: z10.enum(["solid", "dashed"]).default("solid"),
|
|
4690
|
+
colorToken: z10.string().optional()
|
|
4691
|
+
// defaults to "border" if not set
|
|
4692
|
+
});
|
|
4693
|
+
var componentShadowSchema = z10.object({
|
|
4694
|
+
elevation: z10.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
|
|
4695
|
+
});
|
|
4696
|
+
|
|
4400
4697
|
// ../theme-core/src/tokens/blockColorTokens.ts
|
|
4401
4698
|
var blockColorTokenNames = [
|
|
4402
4699
|
"text",
|
|
@@ -7425,127 +7722,6 @@ var BookingFormClient = ({
|
|
|
7425
7722
|
// ../theme-core/src/ClientThemeScope.tsx
|
|
7426
7723
|
import { useMemo as useMemo6 } from "react";
|
|
7427
7724
|
|
|
7428
|
-
// ../theme-core/src/inputs/types.ts
|
|
7429
|
-
import { z as z6 } from "zod";
|
|
7430
|
-
var inputSystemSchema = z6.object({
|
|
7431
|
-
// Base styling (applied to all inputs)
|
|
7432
|
-
base: z6.object({
|
|
7433
|
-
background: z6.union([
|
|
7434
|
-
z6.object({
|
|
7435
|
-
type: z6.literal("solid"),
|
|
7436
|
-
colorToken: z6.string()
|
|
7437
|
-
}),
|
|
7438
|
-
z6.object({
|
|
7439
|
-
type: z6.literal("transparent")
|
|
7440
|
-
})
|
|
7441
|
-
]),
|
|
7442
|
-
textColorToken: z6.string(),
|
|
7443
|
-
border: z6.object({
|
|
7444
|
-
widthClass: z6.string(),
|
|
7445
|
-
// e.g., 'border', 'border-2'
|
|
7446
|
-
colorToken: z6.string(),
|
|
7447
|
-
style: z6.enum(["all", "underline"]).optional()
|
|
7448
|
-
}),
|
|
7449
|
-
corners: z6.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
7450
|
-
// null = inherit from theme.corners
|
|
7451
|
-
shadow: z6.object({
|
|
7452
|
-
elevation: z6.enum(["none", "low", "medium"]),
|
|
7453
|
-
softness: z6.enum(["soft", "crisp", "hard"]).nullable()
|
|
7454
|
-
}).nullable(),
|
|
7455
|
-
spacing: z6.enum(["compact", "cozy", "medium", "comfortable"]),
|
|
7456
|
-
// padding inside inputs
|
|
7457
|
-
fontSize: z6.enum(["sm", "base", "lg"])
|
|
7458
|
-
}),
|
|
7459
|
-
// Label styling
|
|
7460
|
-
label: z6.object({
|
|
7461
|
-
textColorToken: z6.string(),
|
|
7462
|
-
fontWeight: z6.enum(["regular", "medium", "semibold", "bold", "black"]),
|
|
7463
|
-
fontSize: z6.enum(["2xs", "xs", "sm", "base"]),
|
|
7464
|
-
textTransform: z6.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
|
|
7465
|
-
letterSpacing: z6.enum(["normal", "wide", "wider", "widest"]).optional(),
|
|
7466
|
-
opacity: z6.number().min(0.2).max(1).optional()
|
|
7467
|
-
}),
|
|
7468
|
-
// Focus state
|
|
7469
|
-
focus: z6.object({
|
|
7470
|
-
ringColorToken: z6.string(),
|
|
7471
|
-
ringWidth: z6.enum(["0", "1", "2", "3"]),
|
|
7472
|
-
borderColorToken: z6.string().optional()
|
|
7473
|
-
// Change border color on focus
|
|
7474
|
-
}),
|
|
7475
|
-
// Error state (for validation feedback)
|
|
7476
|
-
error: z6.object({
|
|
7477
|
-
borderColorToken: z6.string(),
|
|
7478
|
-
textColorToken: z6.string()
|
|
7479
|
-
}),
|
|
7480
|
-
// Disabled state
|
|
7481
|
-
disabled: z6.object({
|
|
7482
|
-
backgroundColorToken: z6.string(),
|
|
7483
|
-
textColorToken: z6.string(),
|
|
7484
|
-
opacity: z6.number().min(0.3).max(0.7)
|
|
7485
|
-
})
|
|
7486
|
-
});
|
|
7487
|
-
|
|
7488
|
-
// ../theme-core/src/navigation/types.ts
|
|
7489
|
-
import { z as z8 } from "zod";
|
|
7490
|
-
|
|
7491
|
-
// ../theme-core/src/interactive/baseSchema.ts
|
|
7492
|
-
import { z as z7 } from "zod";
|
|
7493
|
-
var interactiveTypographySchema = z7.object({
|
|
7494
|
-
/** Font family source */
|
|
7495
|
-
typography: z7.enum(["body", "heading"]).default("body"),
|
|
7496
|
-
/** Font weight */
|
|
7497
|
-
fontWeight: z7.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
|
|
7498
|
-
/** Text transform */
|
|
7499
|
-
textTransform: z7.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
7500
|
-
/** Italic style */
|
|
7501
|
-
italic: z7.boolean().default(false)
|
|
7502
|
-
});
|
|
7503
|
-
var effectApplicationSchema2 = z7.object({
|
|
7504
|
-
/** Effect preset ID */
|
|
7505
|
-
effectId: z7.string(),
|
|
7506
|
-
/** User-provided customization options */
|
|
7507
|
-
options: z7.record(z7.string(), z7.any()).optional()
|
|
7508
|
-
});
|
|
7509
|
-
var effectCompositionSchema = z7.object({
|
|
7510
|
-
/** Effects always applied */
|
|
7511
|
-
base: z7.array(effectApplicationSchema2).optional(),
|
|
7512
|
-
/** Effects applied on hover */
|
|
7513
|
-
hover: z7.array(effectApplicationSchema2).optional(),
|
|
7514
|
-
/** Effects applied on active/pressed */
|
|
7515
|
-
active: z7.array(effectApplicationSchema2).optional(),
|
|
7516
|
-
/** Effects applied on focus */
|
|
7517
|
-
focus: z7.array(effectApplicationSchema2).optional()
|
|
7518
|
-
});
|
|
7519
|
-
|
|
7520
|
-
// ../theme-core/src/navigation/types.ts
|
|
7521
|
-
var navLinkPaddingSchema = z8.enum(["none", "compact", "default"]);
|
|
7522
|
-
var navLinkPaddingXSchema = z8.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
7523
|
-
var navLinkBorderRadiusSchema = z8.enum(["none", "sm", "md", "full"]);
|
|
7524
|
-
var navLinkTextSizeSchema = z8.enum(["xs", "sm", "base", "lg"]);
|
|
7525
|
-
var navLinkLetterSpacingSchema = z8.enum(["normal", "wide", "wider", "widest"]);
|
|
7526
|
-
var navLinkStyleSchema = z8.object({
|
|
7527
|
-
/** Display name for the style */
|
|
7528
|
-
name: z8.string().min(1).max(30).optional(),
|
|
7529
|
-
/** Typography settings (inherited from interactive base) */
|
|
7530
|
-
...interactiveTypographySchema.shape,
|
|
7531
|
-
/** Text color token */
|
|
7532
|
-
colorToken: z8.string().default("text"),
|
|
7533
|
-
/** Optional text size override */
|
|
7534
|
-
textSize: navLinkTextSizeSchema.optional(),
|
|
7535
|
-
/** Optional letter spacing override */
|
|
7536
|
-
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
7537
|
-
/** Hover/active color token (for color-change effects) */
|
|
7538
|
-
hoverColorToken: z8.string().nullable().optional(),
|
|
7539
|
-
/** Padding preset */
|
|
7540
|
-
padding: navLinkPaddingSchema.default("compact"),
|
|
7541
|
-
/** Horizontal padding override (overrides horizontal component of padding preset) */
|
|
7542
|
-
paddingX: navLinkPaddingXSchema.optional(),
|
|
7543
|
-
/** Border radius (for capsule/pill styles) */
|
|
7544
|
-
borderRadius: navLinkBorderRadiusSchema.default("none"),
|
|
7545
|
-
/** Composable effects */
|
|
7546
|
-
effects: effectCompositionSchema.optional()
|
|
7547
|
-
});
|
|
7548
|
-
|
|
7549
7725
|
// ../theme-core/src/navigation/presets.ts
|
|
7550
7726
|
var NAV_LINK_PRESETS = {
|
|
7551
7727
|
/**
|
|
@@ -7690,18 +7866,6 @@ var NAV_LINK_PRESETS = {
|
|
|
7690
7866
|
};
|
|
7691
7867
|
var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
|
|
7692
7868
|
|
|
7693
|
-
// ../theme-core/src/shared/componentStyles.ts
|
|
7694
|
-
import { z as z9 } from "zod";
|
|
7695
|
-
var componentBorderSchema = z9.object({
|
|
7696
|
-
width: z9.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
|
|
7697
|
-
style: z9.enum(["solid", "dashed"]).default("solid"),
|
|
7698
|
-
colorToken: z9.string().optional()
|
|
7699
|
-
// defaults to "border" if not set
|
|
7700
|
-
});
|
|
7701
|
-
var componentShadowSchema = z9.object({
|
|
7702
|
-
elevation: z9.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
|
|
7703
|
-
});
|
|
7704
|
-
|
|
7705
7869
|
// ../theme-core/src/layout/generateLayoutCss.ts
|
|
7706
7870
|
var waveTransitionMask = svgDataUrl(
|
|
7707
7871
|
"<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V46C130 55 260 24 420 30C590 36 690 62 860 42C1035 21 1160 47 1305 36C1365 31 1415 33 1440 38V72H0Z' fill='white'/></svg>"
|
|
@@ -8159,170 +8323,6 @@ blockVarRegistry.set("testimonials", generateTestimonialsVars);
|
|
|
8159
8323
|
blockVarRegistry.set("course-details", generateCourseDetailsVars);
|
|
8160
8324
|
blockVarRegistry.set("course-registration", generateCourseRegistrationVars);
|
|
8161
8325
|
|
|
8162
|
-
// ../theme-core/src/customCss/validation.ts
|
|
8163
|
-
import { z as z10 } from "zod";
|
|
8164
|
-
var FORBIDDEN_SELECTORS = [":root", "html", "body"];
|
|
8165
|
-
var UNIVERSAL_SELECTOR = "*";
|
|
8166
|
-
var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
|
|
8167
|
-
var JAVASCRIPT_URL_PATTERN = /javascript\s*:/i;
|
|
8168
|
-
function isForbiddenSelectorPart(part) {
|
|
8169
|
-
const normalized = part.toLowerCase().trim();
|
|
8170
|
-
if (!normalized) return true;
|
|
8171
|
-
if (normalized === UNIVERSAL_SELECTOR || normalized.startsWith("* ") || normalized.endsWith(" *") || normalized.includes(" * ")) {
|
|
8172
|
-
return true;
|
|
8173
|
-
}
|
|
8174
|
-
for (const forbidden of FORBIDDEN_SELECTORS) {
|
|
8175
|
-
if (normalized === forbidden) return true;
|
|
8176
|
-
if (normalized.startsWith(forbidden + " ")) return true;
|
|
8177
|
-
if (normalized.startsWith(forbidden + ">")) return true;
|
|
8178
|
-
if (normalized.startsWith(forbidden + "+")) return true;
|
|
8179
|
-
if (normalized.startsWith(forbidden + "~")) return true;
|
|
8180
|
-
if (normalized.startsWith(forbidden + ".")) return true;
|
|
8181
|
-
if (normalized.startsWith(forbidden + "#")) return true;
|
|
8182
|
-
if (normalized.startsWith(forbidden + "[")) return true;
|
|
8183
|
-
if (normalized.startsWith(forbidden + ":") && !normalized.startsWith(forbidden + "::")) return true;
|
|
8184
|
-
}
|
|
8185
|
-
return false;
|
|
8186
|
-
}
|
|
8187
|
-
function hasScopeEscapingSiblingCombinator(selector) {
|
|
8188
|
-
const normalized = selector.trim();
|
|
8189
|
-
return /&\s*[+~]/.test(normalized);
|
|
8190
|
-
}
|
|
8191
|
-
function containsForbiddenSelector(selector) {
|
|
8192
|
-
const normalized = selector.toLowerCase().trim();
|
|
8193
|
-
if (!normalized) return true;
|
|
8194
|
-
if (hasScopeEscapingSiblingCombinator(selector)) {
|
|
8195
|
-
return true;
|
|
8196
|
-
}
|
|
8197
|
-
const parts = normalized.split(",");
|
|
8198
|
-
for (const part of parts) {
|
|
8199
|
-
if (isForbiddenSelectorPart(part)) {
|
|
8200
|
-
return true;
|
|
8201
|
-
}
|
|
8202
|
-
}
|
|
8203
|
-
return false;
|
|
8204
|
-
}
|
|
8205
|
-
var selectorSchema = z10.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
|
|
8206
|
-
(s) => !containsForbiddenSelector(s),
|
|
8207
|
-
{ message: "Global selectors (:root, html, body, *) are not allowed" }
|
|
8208
|
-
);
|
|
8209
|
-
function containsRemoteUrl(value) {
|
|
8210
|
-
return REMOTE_URL_PATTERN.test(value);
|
|
8211
|
-
}
|
|
8212
|
-
function containsJavascriptUrl(value) {
|
|
8213
|
-
return JAVASCRIPT_URL_PATTERN.test(value);
|
|
8214
|
-
}
|
|
8215
|
-
var declarationValueSchema = z10.string().max(500, "Declaration value too long (max 500 characters)").refine(
|
|
8216
|
-
(v) => !containsRemoteUrl(v),
|
|
8217
|
-
{ message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
|
|
8218
|
-
).refine(
|
|
8219
|
-
(v) => !containsJavascriptUrl(v),
|
|
8220
|
-
{ message: "javascript: URLs are not allowed" }
|
|
8221
|
-
);
|
|
8222
|
-
var declarationsSchema = z10.record(
|
|
8223
|
-
z10.string().min(1).max(100),
|
|
8224
|
-
// property name
|
|
8225
|
-
declarationValueSchema
|
|
8226
|
-
// property value
|
|
8227
|
-
);
|
|
8228
|
-
var customCssRuleSchema = z10.object({
|
|
8229
|
-
id: z10.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
|
|
8230
|
-
selector: selectorSchema,
|
|
8231
|
-
declarations: declarationsSchema
|
|
8232
|
-
});
|
|
8233
|
-
var blockCustomCssRuleSchema = customCssRuleSchema.extend({
|
|
8234
|
-
blockKind: z10.string().min(1, "Block kind is required").max(50, "Block kind too long")
|
|
8235
|
-
});
|
|
8236
|
-
var customCssRulesSchema = z10.array(customCssRuleSchema).optional();
|
|
8237
|
-
var blockCustomCssRulesSchema = z10.array(blockCustomCssRuleSchema).optional();
|
|
8238
|
-
|
|
8239
|
-
// ../theme-core/src/customCss/atRuleValidation.ts
|
|
8240
|
-
import { z as z11 } from "zod";
|
|
8241
|
-
var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
|
|
8242
|
-
var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
|
|
8243
|
-
var BLOCKED_AT_RULES = ["@import", "@charset"];
|
|
8244
|
-
var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
|
|
8245
|
-
var ruleIdSchema = z11.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
|
|
8246
|
-
var nestedRuleSchema = z11.object({
|
|
8247
|
-
selector: selectorSchema,
|
|
8248
|
-
declarations: declarationsSchema
|
|
8249
|
-
});
|
|
8250
|
-
function isValidKeyframeOffset(offset) {
|
|
8251
|
-
const trimmed = offset.trim().toLowerCase();
|
|
8252
|
-
if (trimmed === "from" || trimmed === "to") return true;
|
|
8253
|
-
const match = trimmed.match(/^(\d{1,3})%$/);
|
|
8254
|
-
if (!match || match[1] === void 0) return false;
|
|
8255
|
-
const value = parseInt(match[1], 10);
|
|
8256
|
-
return value >= 0 && value <= 100;
|
|
8257
|
-
}
|
|
8258
|
-
var keyframeOffsetSchema = z11.string().transform((offset) => offset.trim()).refine(
|
|
8259
|
-
(offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
|
|
8260
|
-
{ message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
|
|
8261
|
-
).refine(
|
|
8262
|
-
isValidKeyframeOffset,
|
|
8263
|
-
{ message: "Keyframe offset must be between 0% and 100%" }
|
|
8264
|
-
);
|
|
8265
|
-
var animationNameSchema = z11.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
|
|
8266
|
-
(name) => ANIMATION_NAME_PATTERN.test(name),
|
|
8267
|
-
{ message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
|
|
8268
|
-
);
|
|
8269
|
-
var keyframeSchema = z11.object({
|
|
8270
|
-
offset: keyframeOffsetSchema,
|
|
8271
|
-
declarations: declarationsSchema
|
|
8272
|
-
});
|
|
8273
|
-
var keyframesAtRuleSchema = z11.object({
|
|
8274
|
-
id: ruleIdSchema,
|
|
8275
|
-
type: z11.literal("keyframes"),
|
|
8276
|
-
name: animationNameSchema,
|
|
8277
|
-
frames: z11.array(keyframeSchema).min(1, "At least one keyframe is required")
|
|
8278
|
-
});
|
|
8279
|
-
var fontFaceDeclarationsSchema = z11.record(z11.string().min(1).max(100), declarationValueSchema).refine(
|
|
8280
|
-
(decls) => "fontFamily" in decls || "font-family" in decls,
|
|
8281
|
-
{ message: "font-family is required in @font-face" }
|
|
8282
|
-
);
|
|
8283
|
-
var fontFaceAtRuleSchema = z11.object({
|
|
8284
|
-
id: ruleIdSchema,
|
|
8285
|
-
type: z11.literal("font-face"),
|
|
8286
|
-
declarations: fontFaceDeclarationsSchema
|
|
8287
|
-
});
|
|
8288
|
-
var mediaQuerySchema = z11.string().min(1, "Media query is required").max(200, "Media query too long");
|
|
8289
|
-
var mediaAtRuleSchema = z11.object({
|
|
8290
|
-
id: ruleIdSchema,
|
|
8291
|
-
type: z11.literal("media"),
|
|
8292
|
-
query: mediaQuerySchema,
|
|
8293
|
-
rules: z11.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
8294
|
-
});
|
|
8295
|
-
var supportsConditionSchema = z11.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
|
|
8296
|
-
var supportsAtRuleSchema = z11.object({
|
|
8297
|
-
id: ruleIdSchema,
|
|
8298
|
-
type: z11.literal("supports"),
|
|
8299
|
-
condition: supportsConditionSchema,
|
|
8300
|
-
rules: z11.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
8301
|
-
});
|
|
8302
|
-
function containsBlockedAtRule(css) {
|
|
8303
|
-
return BLOCKED_AT_RULE_PATTERN.test(css);
|
|
8304
|
-
}
|
|
8305
|
-
var rawCssSchema = z11.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
|
|
8306
|
-
(css) => css.trim().startsWith("@"),
|
|
8307
|
-
{ message: "Raw at-rule must start with @" }
|
|
8308
|
-
).refine(
|
|
8309
|
-
(css) => !containsBlockedAtRule(css),
|
|
8310
|
-
{ message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
|
|
8311
|
-
);
|
|
8312
|
-
var rawAtRuleSchema = z11.object({
|
|
8313
|
-
id: ruleIdSchema,
|
|
8314
|
-
type: z11.literal("raw"),
|
|
8315
|
-
css: rawCssSchema
|
|
8316
|
-
});
|
|
8317
|
-
var customCssAtRuleSchema = z11.discriminatedUnion("type", [
|
|
8318
|
-
keyframesAtRuleSchema,
|
|
8319
|
-
fontFaceAtRuleSchema,
|
|
8320
|
-
mediaAtRuleSchema,
|
|
8321
|
-
supportsAtRuleSchema,
|
|
8322
|
-
rawAtRuleSchema
|
|
8323
|
-
]);
|
|
8324
|
-
var customCssAtRulesSchema = z11.array(customCssAtRuleSchema).optional();
|
|
8325
|
-
|
|
8326
8326
|
// ../theme-core/src/responsiveMode.ts
|
|
8327
8327
|
var THEME_RESPONSIVE_MODE_ATTR = "data-rb-responsive-mode";
|
|
8328
8328
|
function escapeRegExp(value) {
|