@riverbankcms/sdk 0.60.16 → 0.62.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_dts/api/src/accessAdmin.d.ts +7 -0
- package/dist/_dts/api/src/bookingClosures.d.ts +106 -0
- package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +59 -1
- package/dist/_dts/api/src/bookingRecords.d.ts +101 -4
- package/dist/_dts/api/src/bookings.d.ts +2 -1
- package/dist/_dts/api/src/calendar.d.ts +11 -1
- package/dist/_dts/api/src/contentRuntime.d.ts +2 -0
- package/dist/_dts/api/src/contentVersionHistory.d.ts +52 -0
- package/dist/_dts/api/src/contentVersionHistoryClient.d.ts +45 -0
- package/dist/_dts/api/src/endpoints.d.ts +206 -6
- package/dist/_dts/api/src/index.d.ts +9 -2
- package/dist/_dts/api/src/participantMessaging.d.ts +113 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +31 -7
- package/dist/_dts/api/src/siteMembers.d.ts +10 -1
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +76 -51
- package/dist/_dts/api/src/types.d.ts +3 -1
- package/dist/_dts/api/src/url.d.ts +3 -3
- package/dist/_dts/blocks/src/bindings/index.d.ts +2 -2
- 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/newsletter-form.client.state.d.ts +12 -0
- package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +7 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/FieldValidationMessage.d.ts +19 -0
- package/dist/_dts/blocks/src/system/runtime/shared/components/TerminalPanel.d.ts +8 -2
- package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +3 -1
- package/dist/_dts/blocks/src/system/runtime/shared/index.d.ts +2 -2
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/themeColorResolution.d.ts +7 -0
- package/dist/_dts/content-editor/src/hooks/useDebouncedLatestSave.d.ts +24 -0
- package/dist/_dts/content-editor/src/index.d.ts +1 -0
- package/dist/_dts/content-editor/src/ui/stores/autosaveStore.d.ts +1 -0
- package/dist/_dts/content-editor/src/ui/stores/types.d.ts +1 -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 +242 -6
- package/dist/_dts/db/src/schemas/forms.d.ts +1 -0
- 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/BlockToolbar.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/composePageFromBlocks.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/index.d.ts +2 -2
- package/dist/_dts/preview-next/src/client/blocks/composer/mergeDrafts.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +31 -8
- package/dist/_dts/preview-next/src/client/blocks/customizeFacetControls.d.ts +9 -0
- package/dist/_dts/preview-next/src/client/blocks/pageDesignRuntimePreview.d.ts +6 -5
- package/dist/_dts/preview-next/src/client/blocks/previewCustomizeActions.d.ts +14 -0
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/aiProposalProjection.d.ts +7 -0
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/applyPreviewProjections.d.ts +7 -0
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/index.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/runtimeContentDecoration.d.ts +5 -0
- package/dist/_dts/preview-next/src/client/blocks/previewProjection/types.d.ts +72 -0
- package/dist/_dts/preview-next/src/client/index.d.ts +1 -1
- package/dist/_dts/preview-next/src/client/layout/PreviewLayoutContext.d.ts +8 -5
- package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +2 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +11 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +9 -5
- package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -1
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +13 -2
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +7 -1
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeControlStyles.d.ts +1 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeHistory.d.ts +7 -3
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +9 -1
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeWorkflowState.d.ts +13 -0
- package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +8 -2
- package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +49 -0
- 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/public-api/contracts.d.ts +3 -1
- 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/surfaces/src/index.d.ts +1 -0
- 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/palette/variants/types.d.ts +2 -21
- package/dist/_dts/theme-core/src/schema.d.ts +25 -0
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +451 -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 +61 -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 +30 -0
- package/dist/_dts/theme-core/src/site-styles/customizableSurfaces.d.ts +94 -0
- package/dist/_dts/theme-core/src/site-styles/designState.d.ts +12 -0
- package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +59 -0
- package/dist/_dts/theme-core/src/site-styles/generatedDesignPipeline.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/headerCtaVariants.d.ts +3 -0
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +155 -0
- package/dist/_dts/theme-core/src/site-styles/headerOpeningSection.d.ts +15 -0
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +6 -0
- package/dist/_dts/theme-core/src/site-styles/pageDesignAuthority.d.ts +7 -0
- package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +25 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +15 -1
- package/dist/_dts/theme-core/src/site-styles/records.d.ts +1 -0
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +8 -0
- package/dist/_dts/theme-core/src/site-styles/siteStyleBlockPolicies.d.ts +96 -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 +23 -5
- package/dist/_dts/theme-core/src/siteChrome.d.ts +53 -0
- package/dist/_dts/theme-core/src/tokens/colorTokenParts.d.ts +13 -0
- package/dist/_dts/theme-core/src/tokens/index.d.ts +2 -0
- package/dist/_dts/theme-core/src/tokens/themeColorTokens.d.ts +29 -0
- package/dist/_dts/theme-core/src/utils/tokenOrColor.d.ts +27 -1
- package/dist/cli/index.mjs +5149 -3635
- package/dist/client/bookings.mjs +711 -560
- package/dist/client/client.mjs +10110 -8168
- package/dist/client/hooks.mjs +3861 -2739
- package/dist/client/rendering/client.mjs +8606 -7009
- package/dist/client/rendering/islands.mjs +25202 -23768
- package/dist/client/rendering.mjs +10661 -8713
- package/dist/preview-next/before-render.mjs +256 -6
- package/dist/preview-next/client/runtime.mjs +7700 -4016
- package/dist/preview-next/editor-base.css +31 -0
- package/dist/preview-next/middleware.mjs +267 -6
- package/dist/server/components.mjs +4501 -3270
- package/dist/server/config-validation.mjs +4089 -2967
- package/dist/server/config.mjs +4089 -2967
- package/dist/server/data.mjs +3861 -2739
- package/dist/server/index.mjs +322 -24
- package/dist/server/next.mjs +4274 -3041
- package/dist/server/page-converter.mjs +3520 -2717
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +4500 -3270
- package/dist/server/rendering.mjs +4526 -3291
- package/dist/server/routing.mjs +4006 -2723
- package/dist/server/server.mjs +3897 -2772
- package/dist/server/theme-bridge.mjs +1435 -788
- package/dist/server/theme.mjs +628 -497
- package/dist/styles/index.css +61 -9
- package/package.json +1 -1
- package/dist/_dts/blocks/src/system/transforms/registry/_utils/colorResolution.d.ts +0 -13
- package/dist/_dts/preview-next/src/client/blocks/overlay.d.ts +0 -30
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 z12(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, z12(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), z12(_);
|
|
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), z12(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), z12(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
|
+
z12(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), z12(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
|
+
z12(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), z12(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), z12(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
|
+
z12(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), z12(_), z12(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 z12(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,8 +2806,139 @@ function clsx() {
|
|
|
2806
2806
|
}
|
|
2807
2807
|
var clsx_default = clsx;
|
|
2808
2808
|
|
|
2809
|
+
// ../theme-core/src/tokens/colorTokenParts.ts
|
|
2810
|
+
function parseOpacityPercent(source) {
|
|
2811
|
+
const trimmed = source.trim();
|
|
2812
|
+
if (!trimmed) return null;
|
|
2813
|
+
if (!/^\d{1,3}(?:\.\d+)?$/.test(trimmed)) return null;
|
|
2814
|
+
const value = Number(trimmed);
|
|
2815
|
+
if (!Number.isFinite(value)) return null;
|
|
2816
|
+
if (value < 0 || value > 100) return null;
|
|
2817
|
+
return value;
|
|
2818
|
+
}
|
|
2819
|
+
function parseColorTokenParts(source) {
|
|
2820
|
+
const trimmed = source.trim();
|
|
2821
|
+
if (trimmed.startsWith("raw:")) {
|
|
2822
|
+
return { kind: "raw", value: trimmed.slice(4) };
|
|
2823
|
+
}
|
|
2824
|
+
const [token, opacityRaw, extra] = trimmed.split("/");
|
|
2825
|
+
if (!token || extra !== void 0) {
|
|
2826
|
+
return { kind: "invalid", token: trimmed };
|
|
2827
|
+
}
|
|
2828
|
+
if (opacityRaw === void 0) {
|
|
2829
|
+
return { kind: "token", token, opacityPercent: null };
|
|
2830
|
+
}
|
|
2831
|
+
const opacityPercent = parseOpacityPercent(opacityRaw);
|
|
2832
|
+
if (opacityPercent === null) {
|
|
2833
|
+
return { kind: "invalid", token: trimmed };
|
|
2834
|
+
}
|
|
2835
|
+
return { kind: "token", token, opacityPercent };
|
|
2836
|
+
}
|
|
2837
|
+
|
|
2809
2838
|
// ../theme-core/src/buttons/types.ts
|
|
2839
|
+
import { z as z2 } from "zod";
|
|
2840
|
+
|
|
2841
|
+
// ../theme-core/src/tokens/themeColorTokens.ts
|
|
2810
2842
|
import { z } from "zod";
|
|
2843
|
+
|
|
2844
|
+
// ../theme-core/src/tokens/blockColorTokens.ts
|
|
2845
|
+
var blockColorTokenNames = [
|
|
2846
|
+
"text",
|
|
2847
|
+
"heading",
|
|
2848
|
+
"mutedText",
|
|
2849
|
+
"surface",
|
|
2850
|
+
"background",
|
|
2851
|
+
"foreground",
|
|
2852
|
+
"border",
|
|
2853
|
+
"primary",
|
|
2854
|
+
"secondary",
|
|
2855
|
+
"accent",
|
|
2856
|
+
"success",
|
|
2857
|
+
"warning",
|
|
2858
|
+
"info",
|
|
2859
|
+
"error",
|
|
2860
|
+
"destructive",
|
|
2861
|
+
"scrim",
|
|
2862
|
+
"shadow",
|
|
2863
|
+
// Common "on*" tokens used when rendering colored chips/badges.
|
|
2864
|
+
"onPrimary",
|
|
2865
|
+
"onSecondary",
|
|
2866
|
+
"onAccent",
|
|
2867
|
+
"onSuccess",
|
|
2868
|
+
"onWarning",
|
|
2869
|
+
"onInfo",
|
|
2870
|
+
"onError",
|
|
2871
|
+
"onDestructive",
|
|
2872
|
+
"onSurface"
|
|
2873
|
+
];
|
|
2874
|
+
var blockColorTokenNameSet = new Set(
|
|
2875
|
+
blockColorTokenNames
|
|
2876
|
+
);
|
|
2877
|
+
|
|
2878
|
+
// ../theme-core/src/tokens/themeColorTokens.ts
|
|
2879
|
+
var PALETTE_TOKEN_NAMES = [
|
|
2880
|
+
"primary",
|
|
2881
|
+
"primaryForeground",
|
|
2882
|
+
"secondary",
|
|
2883
|
+
"accent",
|
|
2884
|
+
"success",
|
|
2885
|
+
"warning",
|
|
2886
|
+
"destructive",
|
|
2887
|
+
"background",
|
|
2888
|
+
"surface",
|
|
2889
|
+
"surfaceAlt",
|
|
2890
|
+
"muted",
|
|
2891
|
+
"text",
|
|
2892
|
+
"border"
|
|
2893
|
+
];
|
|
2894
|
+
var paletteTokenNameSchema = z.enum(PALETTE_TOKEN_NAMES);
|
|
2895
|
+
var themeColorBaseTokenNames = [
|
|
2896
|
+
...PALETTE_TOKEN_NAMES,
|
|
2897
|
+
...blockColorTokenNames,
|
|
2898
|
+
// Existing generated themes can carry palette-local "white" tokens in
|
|
2899
|
+
// token-only component fields. Keep it explicit until those rows are
|
|
2900
|
+
// migrated to canonical foreground/background roles.
|
|
2901
|
+
"white",
|
|
2902
|
+
"neutral",
|
|
2903
|
+
"primaryText",
|
|
2904
|
+
"secondaryForeground",
|
|
2905
|
+
"accentForeground"
|
|
2906
|
+
];
|
|
2907
|
+
var themeColorBaseTokenSet = new Set(themeColorBaseTokenNames);
|
|
2908
|
+
var SHADE_STEPS = [
|
|
2909
|
+
"50",
|
|
2910
|
+
"100",
|
|
2911
|
+
"200",
|
|
2912
|
+
"300",
|
|
2913
|
+
"400",
|
|
2914
|
+
"500",
|
|
2915
|
+
"600",
|
|
2916
|
+
"700",
|
|
2917
|
+
"800",
|
|
2918
|
+
"900",
|
|
2919
|
+
"950"
|
|
2920
|
+
];
|
|
2921
|
+
var shadeStepSet = new Set(SHADE_STEPS);
|
|
2922
|
+
function isKnownBaseToken(value) {
|
|
2923
|
+
return themeColorBaseTokenSet.has(value);
|
|
2924
|
+
}
|
|
2925
|
+
function isKnownShadeToken(value) {
|
|
2926
|
+
const match = value.match(/^([a-zA-Z][a-zA-Z0-9]*)(?:-([0-9]{2,3}))$/);
|
|
2927
|
+
if (!match) return false;
|
|
2928
|
+
const [, base, shade] = match;
|
|
2929
|
+
return Boolean(base && shade && isKnownBaseToken(base) && shadeStepSet.has(shade));
|
|
2930
|
+
}
|
|
2931
|
+
function isThemeColorTokenBase(value) {
|
|
2932
|
+
return isKnownBaseToken(value) || isKnownShadeToken(value);
|
|
2933
|
+
}
|
|
2934
|
+
function isThemeColorToken(value) {
|
|
2935
|
+
if (typeof value !== "string") return false;
|
|
2936
|
+
const parts = parseColorTokenParts(value);
|
|
2937
|
+
return parts.kind === "token" && isThemeColorTokenBase(parts.token);
|
|
2938
|
+
}
|
|
2939
|
+
var themeColorTokenSchema = z.string().min(1).refine((value) => Boolean(isThemeColorToken(value)), "Expected a known Theme V2 color token");
|
|
2940
|
+
|
|
2941
|
+
// ../theme-core/src/buttons/types.ts
|
|
2811
2942
|
var VARIANT_ROLES = [
|
|
2812
2943
|
"primary",
|
|
2813
2944
|
"secondary",
|
|
@@ -2818,22 +2949,22 @@ var VARIANT_ROLES = [
|
|
|
2818
2949
|
"accent"
|
|
2819
2950
|
];
|
|
2820
2951
|
var DEFAULT_VARIANT_ALIAS_ID = "default";
|
|
2821
|
-
var cornerStyleSchema =
|
|
2822
|
-
var shadowSizeSchema =
|
|
2823
|
-
var textTransformSchema =
|
|
2824
|
-
var fontWeightSchema =
|
|
2825
|
-
var buttonTypographySchema =
|
|
2826
|
-
var letterSpacingSchema =
|
|
2827
|
-
var hoverTransformSchema =
|
|
2828
|
-
var hoverColorSchema =
|
|
2829
|
-
var buttonPaddingPresetSchema =
|
|
2830
|
-
var gradientStyleSchema =
|
|
2831
|
-
var gradientSharpnessSchema =
|
|
2832
|
-
var prioritySchema =
|
|
2833
|
-
var variantRoleSchema =
|
|
2834
|
-
var buttonSizeNameSchema =
|
|
2952
|
+
var cornerStyleSchema = z2.enum(["square", "rounded", "pill"]);
|
|
2953
|
+
var shadowSizeSchema = z2.enum(["none", "low", "medium", "high"]);
|
|
2954
|
+
var textTransformSchema = z2.enum(["none", "uppercase", "lowercase", "capitalize"]);
|
|
2955
|
+
var fontWeightSchema = z2.union([z2.literal(500), z2.literal(600), z2.literal(700)]);
|
|
2956
|
+
var buttonTypographySchema = z2.enum(["body", "heading"]);
|
|
2957
|
+
var letterSpacingSchema = z2.enum(["tight", "normal", "loose"]);
|
|
2958
|
+
var hoverTransformSchema = z2.enum(["none", "lift", "scale", "press"]);
|
|
2959
|
+
var hoverColorSchema = z2.enum(["none", "brighten", "darken", "saturate", "token"]);
|
|
2960
|
+
var buttonPaddingPresetSchema = z2.enum(["compact", "default", "spacious"]);
|
|
2961
|
+
var gradientStyleSchema = z2.enum(["linear", "radial", "conic"]);
|
|
2962
|
+
var gradientSharpnessSchema = z2.enum(["smooth", "medium", "hard"]);
|
|
2963
|
+
var prioritySchema = z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]);
|
|
2964
|
+
var variantRoleSchema = z2.enum(VARIANT_ROLES);
|
|
2965
|
+
var buttonSizeNameSchema = z2.enum(["sm", "md", "lg", "xl"]);
|
|
2835
2966
|
var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
|
|
2836
|
-
var paddingShorthandSchema =
|
|
2967
|
+
var paddingShorthandSchema = z2.string().refine(
|
|
2837
2968
|
(value) => {
|
|
2838
2969
|
const parts = value.split(/\s+/).filter(Boolean);
|
|
2839
2970
|
return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
|
|
@@ -2842,11 +2973,11 @@ var paddingShorthandSchema = z.string().refine(
|
|
|
2842
2973
|
message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
|
|
2843
2974
|
}
|
|
2844
2975
|
);
|
|
2845
|
-
var buttonSizeConfigSchema =
|
|
2976
|
+
var buttonSizeConfigSchema = z2.object({
|
|
2846
2977
|
padding: paddingShorthandSchema,
|
|
2847
|
-
fontSize:
|
|
2978
|
+
fontSize: z2.string().optional()
|
|
2848
2979
|
});
|
|
2849
|
-
var buttonSizesSchema =
|
|
2980
|
+
var buttonSizesSchema = z2.object({
|
|
2850
2981
|
sm: buttonSizeConfigSchema,
|
|
2851
2982
|
md: buttonSizeConfigSchema,
|
|
2852
2983
|
lg: buttonSizeConfigSchema,
|
|
@@ -2857,9 +2988,9 @@ var buttonSizesSchema = z.object({
|
|
|
2857
2988
|
lg,
|
|
2858
2989
|
xl: xl ?? lg
|
|
2859
2990
|
}));
|
|
2860
|
-
var buttonGlobalSettingsSchema =
|
|
2991
|
+
var buttonGlobalSettingsSchema = z2.object({
|
|
2861
2992
|
cornerStyle: cornerStyleSchema,
|
|
2862
|
-
cornerRadius:
|
|
2993
|
+
cornerRadius: z2.number().min(0).max(24).optional(),
|
|
2863
2994
|
shadow: shadowSizeSchema,
|
|
2864
2995
|
textTransform: textTransformSchema,
|
|
2865
2996
|
fontWeight: fontWeightSchema,
|
|
@@ -2869,88 +3000,88 @@ var buttonGlobalSettingsSchema = z.object({
|
|
|
2869
3000
|
* by the current generator and will be removed once the legacy
|
|
2870
3001
|
* `primitives/content/components/Button.tsx` slot exports are deleted.
|
|
2871
3002
|
*/
|
|
2872
|
-
borderWidth:
|
|
3003
|
+
borderWidth: z2.union([z2.literal(1), z2.literal(2), z2.literal(3)]),
|
|
2873
3004
|
// === Family-level typography ===
|
|
2874
3005
|
// Typography source (body or heading) — selects which theme typography pool to inherit
|
|
2875
3006
|
typography: buttonTypographySchema.optional(),
|
|
2876
3007
|
// Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
|
|
2877
3008
|
// Sized variants get this as default; fixed variants inherit unless they override.
|
|
2878
3009
|
// Size class CSS may still override at run time for sized variants.
|
|
2879
|
-
fontSize:
|
|
3010
|
+
fontSize: z2.string().optional(),
|
|
2880
3011
|
// Letter spacing applied to all variants
|
|
2881
3012
|
letterSpacing: letterSpacingSchema.optional(),
|
|
2882
3013
|
// Italic style
|
|
2883
|
-
italic:
|
|
3014
|
+
italic: z2.boolean().optional(),
|
|
2884
3015
|
// Padding preset (applies to sized variants without a sizes config)
|
|
2885
3016
|
paddingPreset: buttonPaddingPresetSchema.optional(),
|
|
2886
3017
|
hoverTransform: hoverTransformSchema,
|
|
2887
3018
|
hoverColor: hoverColorSchema,
|
|
2888
3019
|
// When hoverColor is 'token', this specifies which token to use
|
|
2889
|
-
hoverColorToken:
|
|
3020
|
+
hoverColorToken: themeColorTokenSchema.optional(),
|
|
2890
3021
|
// Gradient settings (if any variant uses gradients)
|
|
2891
3022
|
gradientStyle: gradientStyleSchema.optional(),
|
|
2892
|
-
gradientAngle:
|
|
3023
|
+
gradientAngle: z2.number().min(0).max(360).optional(),
|
|
2893
3024
|
gradientSharpness: gradientSharpnessSchema.optional()
|
|
2894
3025
|
});
|
|
2895
|
-
var gradientDirectionSchema =
|
|
2896
|
-
var buttonBackgroundSchema =
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
type:
|
|
2900
|
-
stops:
|
|
3026
|
+
var gradientDirectionSchema = z2.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
3027
|
+
var buttonBackgroundSchema = z2.discriminatedUnion("type", [
|
|
3028
|
+
z2.object({ type: z2.literal("solid"), colorToken: themeColorTokenSchema }),
|
|
3029
|
+
z2.object({
|
|
3030
|
+
type: z2.literal("gradient"),
|
|
3031
|
+
stops: z2.array(themeColorTokenSchema).min(2),
|
|
2901
3032
|
direction: gradientDirectionSchema
|
|
2902
3033
|
}),
|
|
2903
|
-
|
|
3034
|
+
z2.object({ type: z2.literal("transparent") })
|
|
2904
3035
|
]);
|
|
2905
|
-
var effectApplicationSchema =
|
|
2906
|
-
effectId:
|
|
2907
|
-
options:
|
|
3036
|
+
var effectApplicationSchema = z2.object({
|
|
3037
|
+
effectId: z2.string(),
|
|
3038
|
+
options: z2.record(z2.string(), z2.any()).optional()
|
|
2908
3039
|
});
|
|
2909
|
-
var buttonBorderSchema =
|
|
2910
|
-
widthClass:
|
|
2911
|
-
colorToken:
|
|
3040
|
+
var buttonBorderSchema = z2.object({
|
|
3041
|
+
widthClass: z2.string(),
|
|
3042
|
+
colorToken: themeColorTokenSchema
|
|
2912
3043
|
});
|
|
2913
|
-
var variantShadowSchema =
|
|
2914
|
-
elevation:
|
|
2915
|
-
softness:
|
|
2916
|
-
position:
|
|
3044
|
+
var variantShadowSchema = z2.object({
|
|
3045
|
+
elevation: z2.enum(["none", "low", "medium", "high"]),
|
|
3046
|
+
softness: z2.enum(["crisp", "soft", "hard"]).nullable(),
|
|
3047
|
+
position: z2.enum(["bottom", "bottom-right"]).default("bottom")
|
|
2917
3048
|
});
|
|
2918
|
-
var variantEffectsSchema =
|
|
2919
|
-
base:
|
|
2920
|
-
hover:
|
|
2921
|
-
active:
|
|
2922
|
-
focus:
|
|
3049
|
+
var variantEffectsSchema = z2.object({
|
|
3050
|
+
base: z2.array(effectApplicationSchema).optional(),
|
|
3051
|
+
hover: z2.array(effectApplicationSchema).optional(),
|
|
3052
|
+
active: z2.array(effectApplicationSchema).optional(),
|
|
3053
|
+
focus: z2.array(effectApplicationSchema).optional()
|
|
2923
3054
|
});
|
|
2924
|
-
var variantSizeOverridesSchema =
|
|
3055
|
+
var variantSizeOverridesSchema = z2.object({
|
|
2925
3056
|
sm: buttonSizeConfigSchema.optional(),
|
|
2926
3057
|
md: buttonSizeConfigSchema.optional(),
|
|
2927
3058
|
lg: buttonSizeConfigSchema.optional(),
|
|
2928
3059
|
xl: buttonSizeConfigSchema.optional()
|
|
2929
3060
|
});
|
|
2930
|
-
var buttonVariantSchema =
|
|
2931
|
-
id:
|
|
2932
|
-
name:
|
|
2933
|
-
enabled:
|
|
3061
|
+
var buttonVariantSchema = z2.object({
|
|
3062
|
+
id: z2.string(),
|
|
3063
|
+
name: z2.string().min(1).max(20),
|
|
3064
|
+
enabled: z2.boolean(),
|
|
2934
3065
|
priority: prioritySchema,
|
|
2935
3066
|
// Base appearance (token-based)
|
|
2936
3067
|
background: buttonBackgroundSchema,
|
|
2937
|
-
textColorToken:
|
|
3068
|
+
textColorToken: themeColorTokenSchema,
|
|
2938
3069
|
/** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
|
|
2939
|
-
borderRadius:
|
|
3070
|
+
borderRadius: z2.string().optional(),
|
|
2940
3071
|
// Optional shadow override (uses theme.shadow if not specified)
|
|
2941
3072
|
shadow: variantShadowSchema.optional(),
|
|
2942
3073
|
// Border (optional)
|
|
2943
3074
|
border: buttonBorderSchema.optional(),
|
|
2944
3075
|
// Hover background token (per-variant override, takes precedence over global hoverColorToken)
|
|
2945
|
-
hoverBackgroundToken:
|
|
3076
|
+
hoverBackgroundToken: z2.string().optional(),
|
|
2946
3077
|
// Effect composition
|
|
2947
3078
|
effects: variantEffectsSchema.optional(),
|
|
2948
3079
|
// Per-variant size overrides — see VariantSizeOverrides
|
|
2949
3080
|
sizes: variantSizeOverridesSchema.optional()
|
|
2950
3081
|
});
|
|
2951
|
-
var buttonSystemSchema =
|
|
3082
|
+
var buttonSystemSchema = z2.object({
|
|
2952
3083
|
global: buttonGlobalSettingsSchema,
|
|
2953
|
-
variants:
|
|
3084
|
+
variants: z2.array(buttonVariantSchema).min(1).max(6),
|
|
2954
3085
|
sizes: buttonSizesSchema.optional()
|
|
2955
3086
|
});
|
|
2956
3087
|
|
|
@@ -2977,21 +3108,21 @@ function themeButtonClassName(spec) {
|
|
|
2977
3108
|
var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
2978
3109
|
|
|
2979
3110
|
// ../theme-core/src/buttons/personalities/types.ts
|
|
2980
|
-
import { z as
|
|
3111
|
+
import { z as z4 } from "zod";
|
|
2981
3112
|
|
|
2982
3113
|
// ../theme-core/src/site-styles/styleTags.ts
|
|
2983
|
-
import { z as
|
|
3114
|
+
import { z as z3 } from "zod";
|
|
2984
3115
|
var STYLE_AXIS_VALUES = {
|
|
2985
3116
|
tone: ["minimal", "classic", "bold"],
|
|
2986
3117
|
energy: ["calm", "vibrant"],
|
|
2987
3118
|
motion: ["subtle", "standard", "expressive"],
|
|
2988
3119
|
era: ["editorial", "modern", "organic", "technical", "retro"]
|
|
2989
3120
|
};
|
|
2990
|
-
var styleTagsSchema =
|
|
2991
|
-
tone:
|
|
2992
|
-
energy:
|
|
2993
|
-
motion:
|
|
2994
|
-
era:
|
|
3121
|
+
var styleTagsSchema = z3.object({
|
|
3122
|
+
tone: z3.enum(STYLE_AXIS_VALUES.tone).optional(),
|
|
3123
|
+
energy: z3.enum(STYLE_AXIS_VALUES.energy).optional(),
|
|
3124
|
+
motion: z3.enum(STYLE_AXIS_VALUES.motion).optional(),
|
|
3125
|
+
era: z3.enum(STYLE_AXIS_VALUES.era).optional()
|
|
2995
3126
|
});
|
|
2996
3127
|
|
|
2997
3128
|
// ../theme-core/src/buttons/personalities/types.ts
|
|
@@ -3001,11 +3132,11 @@ function asButtonPersonalityId(value) {
|
|
|
3001
3132
|
}
|
|
3002
3133
|
return value;
|
|
3003
3134
|
}
|
|
3004
|
-
var buttonPersonalityIdSchema =
|
|
3005
|
-
var buttonPersonalitySchema =
|
|
3135
|
+
var buttonPersonalityIdSchema = z4.string().min(1).transform((value) => asButtonPersonalityId(value));
|
|
3136
|
+
var buttonPersonalitySchema = z4.object({
|
|
3006
3137
|
id: buttonPersonalityIdSchema,
|
|
3007
|
-
name:
|
|
3008
|
-
description:
|
|
3138
|
+
name: z4.string().min(1),
|
|
3139
|
+
description: z4.string().min(1),
|
|
3009
3140
|
tags: styleTagsSchema,
|
|
3010
3141
|
buttonSystem: buttonSystemSchema
|
|
3011
3142
|
});
|
|
@@ -3859,8 +3990,8 @@ function addLocalScheduleDays(date, days) {
|
|
|
3859
3990
|
}
|
|
3860
3991
|
|
|
3861
3992
|
// ../theme-core/src/accordions/types.ts
|
|
3862
|
-
import { z as
|
|
3863
|
-
var accordionIconSchema =
|
|
3993
|
+
import { z as z5 } from "zod";
|
|
3994
|
+
var accordionIconSchema = z5.enum([
|
|
3864
3995
|
"plus-minus",
|
|
3865
3996
|
// + becomes - (swap or rotate 90°)
|
|
3866
3997
|
"chevron",
|
|
@@ -3872,49 +4003,49 @@ var accordionIconSchema = z4.enum([
|
|
|
3872
4003
|
"circle-plus-minus"
|
|
3873
4004
|
// ⊕ becomes ⊖ (swap with fade)
|
|
3874
4005
|
]);
|
|
3875
|
-
var accordionSystemSchema =
|
|
4006
|
+
var accordionSystemSchema = z5.object({
|
|
3876
4007
|
// Visual styling (solid color only - gradients can be added later if needed)
|
|
3877
|
-
background:
|
|
3878
|
-
type:
|
|
3879
|
-
colorToken:
|
|
4008
|
+
background: z5.object({
|
|
4009
|
+
type: z5.literal("solid"),
|
|
4010
|
+
colorToken: themeColorTokenSchema
|
|
3880
4011
|
}),
|
|
3881
4012
|
// Spacing (padding inside items)
|
|
3882
|
-
spacing:
|
|
4013
|
+
spacing: z5.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
|
|
3883
4014
|
// Border radius (null = inherit from theme.corners)
|
|
3884
|
-
corners:
|
|
4015
|
+
corners: z5.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
3885
4016
|
// Border styling (null = inherit from theme.border)
|
|
3886
|
-
border:
|
|
3887
|
-
widthClass:
|
|
4017
|
+
border: z5.object({
|
|
4018
|
+
widthClass: z5.string(),
|
|
3888
4019
|
// e.g., 'border', 'border-2', 'border-0'
|
|
3889
|
-
colorToken:
|
|
4020
|
+
colorToken: themeColorTokenSchema
|
|
3890
4021
|
}).nullable(),
|
|
3891
4022
|
// Shadow (null = inherit from theme.shadow)
|
|
3892
|
-
shadow:
|
|
3893
|
-
elevation:
|
|
3894
|
-
softness:
|
|
3895
|
-
position:
|
|
4023
|
+
shadow: z5.object({
|
|
4024
|
+
elevation: z5.enum(["none", "low", "medium", "high"]),
|
|
4025
|
+
softness: z5.enum(["soft", "crisp", "hard"]).nullable(),
|
|
4026
|
+
position: z5.enum(["bottom", "bottom-right"])
|
|
3896
4027
|
}).nullable(),
|
|
3897
4028
|
// Icon style and animation
|
|
3898
|
-
icon:
|
|
4029
|
+
icon: z5.object({
|
|
3899
4030
|
style: accordionIconSchema,
|
|
3900
|
-
position:
|
|
3901
|
-
size:
|
|
4031
|
+
position: z5.enum(["left", "right"]),
|
|
4032
|
+
size: z5.enum(["sm", "md", "lg"])
|
|
3902
4033
|
}),
|
|
3903
4034
|
// Trigger (question) styling
|
|
3904
|
-
trigger:
|
|
3905
|
-
textColorToken:
|
|
3906
|
-
fontWeight:
|
|
4035
|
+
trigger: z5.object({
|
|
4036
|
+
textColorToken: themeColorTokenSchema,
|
|
4037
|
+
fontWeight: z5.enum(["regular", "medium", "semibold", "bold"]).nullable()
|
|
3907
4038
|
// null = inherit from theme
|
|
3908
4039
|
}),
|
|
3909
4040
|
// Hover state styling
|
|
3910
|
-
hover:
|
|
3911
|
-
backgroundColorToken:
|
|
3912
|
-
textColorToken:
|
|
3913
|
-
borderColorToken:
|
|
4041
|
+
hover: z5.object({
|
|
4042
|
+
backgroundColorToken: themeColorTokenSchema.optional(),
|
|
4043
|
+
textColorToken: themeColorTokenSchema.optional(),
|
|
4044
|
+
borderColorToken: themeColorTokenSchema.optional()
|
|
3914
4045
|
}),
|
|
3915
4046
|
// Content (answer) styling
|
|
3916
|
-
content:
|
|
3917
|
-
textColorToken:
|
|
4047
|
+
content: z5.object({
|
|
4048
|
+
textColorToken: themeColorTokenSchema
|
|
3918
4049
|
})
|
|
3919
4050
|
});
|
|
3920
4051
|
|
|
@@ -4397,39 +4528,302 @@ function getBookingSuccessMessage(successMessage) {
|
|
|
4397
4528
|
return successMessage?.trim() || "Your appointment has been booked! Check your email for confirmation.";
|
|
4398
4529
|
}
|
|
4399
4530
|
|
|
4400
|
-
// ../theme-core/src/
|
|
4401
|
-
|
|
4402
|
-
|
|
4403
|
-
|
|
4404
|
-
|
|
4405
|
-
|
|
4406
|
-
|
|
4407
|
-
|
|
4408
|
-
|
|
4409
|
-
|
|
4410
|
-
|
|
4411
|
-
|
|
4412
|
-
|
|
4413
|
-
|
|
4414
|
-
|
|
4415
|
-
|
|
4416
|
-
|
|
4417
|
-
|
|
4418
|
-
|
|
4419
|
-
|
|
4420
|
-
|
|
4421
|
-
|
|
4422
|
-
|
|
4423
|
-
|
|
4424
|
-
|
|
4425
|
-
|
|
4426
|
-
|
|
4427
|
-
|
|
4428
|
-
|
|
4429
|
-
]
|
|
4430
|
-
|
|
4431
|
-
|
|
4531
|
+
// ../theme-core/src/inputs/types.ts
|
|
4532
|
+
import { z as z6 } from "zod";
|
|
4533
|
+
var inputSystemSchema = z6.object({
|
|
4534
|
+
// Base styling (applied to all inputs)
|
|
4535
|
+
base: z6.object({
|
|
4536
|
+
background: z6.union([
|
|
4537
|
+
z6.object({
|
|
4538
|
+
type: z6.literal("solid"),
|
|
4539
|
+
colorToken: themeColorTokenSchema
|
|
4540
|
+
}),
|
|
4541
|
+
z6.object({
|
|
4542
|
+
type: z6.literal("transparent")
|
|
4543
|
+
})
|
|
4544
|
+
]),
|
|
4545
|
+
textColorToken: themeColorTokenSchema,
|
|
4546
|
+
border: z6.object({
|
|
4547
|
+
widthClass: z6.string(),
|
|
4548
|
+
// e.g., 'border', 'border-2'
|
|
4549
|
+
colorToken: themeColorTokenSchema,
|
|
4550
|
+
style: z6.enum(["all", "underline"]).optional()
|
|
4551
|
+
}),
|
|
4552
|
+
corners: z6.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
4553
|
+
// null = inherit from theme.corners
|
|
4554
|
+
shadow: z6.object({
|
|
4555
|
+
elevation: z6.enum(["none", "low", "medium"]),
|
|
4556
|
+
softness: z6.enum(["soft", "crisp", "hard"]).nullable()
|
|
4557
|
+
}).nullable(),
|
|
4558
|
+
spacing: z6.enum(["compact", "cozy", "medium", "comfortable"]),
|
|
4559
|
+
// padding inside inputs
|
|
4560
|
+
fontSize: z6.enum(["sm", "base", "lg"])
|
|
4561
|
+
}),
|
|
4562
|
+
// Label styling
|
|
4563
|
+
label: z6.object({
|
|
4564
|
+
textColorToken: themeColorTokenSchema,
|
|
4565
|
+
fontWeight: z6.enum(["regular", "medium", "semibold", "bold", "black"]),
|
|
4566
|
+
fontSize: z6.enum(["2xs", "xs", "sm", "base"]),
|
|
4567
|
+
textTransform: z6.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
|
|
4568
|
+
letterSpacing: z6.enum(["normal", "wide", "wider", "widest"]).optional(),
|
|
4569
|
+
opacity: z6.number().min(0.2).max(1).optional()
|
|
4570
|
+
}),
|
|
4571
|
+
// Focus state
|
|
4572
|
+
focus: z6.object({
|
|
4573
|
+
ringColorToken: themeColorTokenSchema,
|
|
4574
|
+
ringWidth: z6.enum(["0", "1", "2", "3"]),
|
|
4575
|
+
borderColorToken: themeColorTokenSchema.optional()
|
|
4576
|
+
// Change border color on focus
|
|
4577
|
+
}),
|
|
4578
|
+
// Error state (for validation feedback)
|
|
4579
|
+
error: z6.object({
|
|
4580
|
+
borderColorToken: themeColorTokenSchema,
|
|
4581
|
+
textColorToken: themeColorTokenSchema
|
|
4582
|
+
}),
|
|
4583
|
+
// Disabled state
|
|
4584
|
+
disabled: z6.object({
|
|
4585
|
+
backgroundColorToken: themeColorTokenSchema,
|
|
4586
|
+
textColorToken: themeColorTokenSchema,
|
|
4587
|
+
opacity: z6.number().min(0.3).max(0.7)
|
|
4588
|
+
})
|
|
4589
|
+
});
|
|
4590
|
+
|
|
4591
|
+
// ../theme-core/src/navigation/types.ts
|
|
4592
|
+
import { z as z8 } from "zod";
|
|
4593
|
+
|
|
4594
|
+
// ../theme-core/src/interactive/baseSchema.ts
|
|
4595
|
+
import { z as z7 } from "zod";
|
|
4596
|
+
var interactiveTypographySchema = z7.object({
|
|
4597
|
+
/** Font family source */
|
|
4598
|
+
typography: z7.enum(["body", "heading"]).default("body"),
|
|
4599
|
+
/** Font weight */
|
|
4600
|
+
fontWeight: z7.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
|
|
4601
|
+
/** Text transform */
|
|
4602
|
+
textTransform: z7.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
4603
|
+
/** Italic style */
|
|
4604
|
+
italic: z7.boolean().default(false)
|
|
4605
|
+
});
|
|
4606
|
+
var effectApplicationSchema2 = z7.object({
|
|
4607
|
+
/** Effect preset ID */
|
|
4608
|
+
effectId: z7.string(),
|
|
4609
|
+
/** User-provided customization options */
|
|
4610
|
+
options: z7.record(z7.string(), z7.any()).optional()
|
|
4611
|
+
});
|
|
4612
|
+
var effectCompositionSchema = z7.object({
|
|
4613
|
+
/** Effects always applied */
|
|
4614
|
+
base: z7.array(effectApplicationSchema2).optional(),
|
|
4615
|
+
/** Effects applied on hover */
|
|
4616
|
+
hover: z7.array(effectApplicationSchema2).optional(),
|
|
4617
|
+
/** Effects applied on active/pressed */
|
|
4618
|
+
active: z7.array(effectApplicationSchema2).optional(),
|
|
4619
|
+
/** Effects applied on focus */
|
|
4620
|
+
focus: z7.array(effectApplicationSchema2).optional()
|
|
4621
|
+
});
|
|
4622
|
+
|
|
4623
|
+
// ../theme-core/src/navigation/types.ts
|
|
4624
|
+
var navLinkPaddingSchema = z8.enum(["none", "compact", "default"]);
|
|
4625
|
+
var navLinkPaddingXSchema = z8.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
4626
|
+
var navLinkBorderRadiusSchema = z8.enum(["none", "sm", "md", "full"]);
|
|
4627
|
+
var navLinkTextSizeSchema = z8.enum(["xs", "sm", "base", "lg"]);
|
|
4628
|
+
var navLinkLetterSpacingSchema = z8.enum(["normal", "wide", "wider", "widest"]);
|
|
4629
|
+
var navLinkStyleSchema = z8.object({
|
|
4630
|
+
/** Display name for the style */
|
|
4631
|
+
name: z8.string().min(1).max(30).optional(),
|
|
4632
|
+
/** Typography settings (inherited from interactive base) */
|
|
4633
|
+
...interactiveTypographySchema.shape,
|
|
4634
|
+
/** Text color token */
|
|
4635
|
+
colorToken: themeColorTokenSchema.default("text"),
|
|
4636
|
+
/** Optional text size override */
|
|
4637
|
+
textSize: navLinkTextSizeSchema.optional(),
|
|
4638
|
+
/** Optional letter spacing override */
|
|
4639
|
+
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
4640
|
+
/** Hover/active color token (for color-change effects) */
|
|
4641
|
+
hoverColorToken: themeColorTokenSchema.nullable().optional(),
|
|
4642
|
+
/** Padding preset */
|
|
4643
|
+
padding: navLinkPaddingSchema.default("compact"),
|
|
4644
|
+
/** Horizontal padding override (overrides horizontal component of padding preset) */
|
|
4645
|
+
paddingX: navLinkPaddingXSchema.optional(),
|
|
4646
|
+
/** Border radius (for capsule/pill styles) */
|
|
4647
|
+
borderRadius: navLinkBorderRadiusSchema.default("none"),
|
|
4648
|
+
/** Composable effects */
|
|
4649
|
+
effects: effectCompositionSchema.optional()
|
|
4650
|
+
});
|
|
4651
|
+
|
|
4652
|
+
// ../theme-core/src/customCss/validation.ts
|
|
4653
|
+
import { z as z9 } from "zod";
|
|
4654
|
+
var FORBIDDEN_SELECTORS = [":root", "html", "body"];
|
|
4655
|
+
var UNIVERSAL_SELECTOR = "*";
|
|
4656
|
+
var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
|
|
4657
|
+
var JAVASCRIPT_URL_PATTERN = /javascript\s*:/i;
|
|
4658
|
+
function isForbiddenSelectorPart(part) {
|
|
4659
|
+
const normalized = part.toLowerCase().trim();
|
|
4660
|
+
if (!normalized) return true;
|
|
4661
|
+
if (normalized === UNIVERSAL_SELECTOR || normalized.startsWith("* ") || normalized.endsWith(" *") || normalized.includes(" * ")) {
|
|
4662
|
+
return true;
|
|
4663
|
+
}
|
|
4664
|
+
for (const forbidden of FORBIDDEN_SELECTORS) {
|
|
4665
|
+
if (normalized === forbidden) return true;
|
|
4666
|
+
if (normalized.startsWith(forbidden + " ")) return true;
|
|
4667
|
+
if (normalized.startsWith(forbidden + ">")) return true;
|
|
4668
|
+
if (normalized.startsWith(forbidden + "+")) return true;
|
|
4669
|
+
if (normalized.startsWith(forbidden + "~")) return true;
|
|
4670
|
+
if (normalized.startsWith(forbidden + ".")) return true;
|
|
4671
|
+
if (normalized.startsWith(forbidden + "#")) return true;
|
|
4672
|
+
if (normalized.startsWith(forbidden + "[")) return true;
|
|
4673
|
+
if (normalized.startsWith(forbidden + ":") && !normalized.startsWith(forbidden + "::")) return true;
|
|
4674
|
+
}
|
|
4675
|
+
return false;
|
|
4676
|
+
}
|
|
4677
|
+
function hasScopeEscapingSiblingCombinator(selector) {
|
|
4678
|
+
const normalized = selector.trim();
|
|
4679
|
+
return /&\s*[+~]/.test(normalized);
|
|
4680
|
+
}
|
|
4681
|
+
function containsForbiddenSelector(selector) {
|
|
4682
|
+
const normalized = selector.toLowerCase().trim();
|
|
4683
|
+
if (!normalized) return true;
|
|
4684
|
+
if (hasScopeEscapingSiblingCombinator(selector)) {
|
|
4685
|
+
return true;
|
|
4686
|
+
}
|
|
4687
|
+
const parts = normalized.split(",");
|
|
4688
|
+
for (const part of parts) {
|
|
4689
|
+
if (isForbiddenSelectorPart(part)) {
|
|
4690
|
+
return true;
|
|
4691
|
+
}
|
|
4692
|
+
}
|
|
4693
|
+
return false;
|
|
4694
|
+
}
|
|
4695
|
+
var selectorSchema = z9.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
|
|
4696
|
+
(s) => !containsForbiddenSelector(s),
|
|
4697
|
+
{ message: "Global selectors (:root, html, body, *) are not allowed" }
|
|
4698
|
+
);
|
|
4699
|
+
function containsRemoteUrl(value) {
|
|
4700
|
+
return REMOTE_URL_PATTERN.test(value);
|
|
4701
|
+
}
|
|
4702
|
+
function containsJavascriptUrl(value) {
|
|
4703
|
+
return JAVASCRIPT_URL_PATTERN.test(value);
|
|
4704
|
+
}
|
|
4705
|
+
var declarationValueSchema = z9.string().max(500, "Declaration value too long (max 500 characters)").refine(
|
|
4706
|
+
(v) => !containsRemoteUrl(v),
|
|
4707
|
+
{ message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
|
|
4708
|
+
).refine(
|
|
4709
|
+
(v) => !containsJavascriptUrl(v),
|
|
4710
|
+
{ message: "javascript: URLs are not allowed" }
|
|
4711
|
+
);
|
|
4712
|
+
var declarationsSchema = z9.record(
|
|
4713
|
+
z9.string().min(1).max(100),
|
|
4714
|
+
// property name
|
|
4715
|
+
declarationValueSchema
|
|
4716
|
+
// property value
|
|
4717
|
+
);
|
|
4718
|
+
var customCssRuleSchema = z9.object({
|
|
4719
|
+
id: z9.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
|
|
4720
|
+
selector: selectorSchema,
|
|
4721
|
+
declarations: declarationsSchema
|
|
4722
|
+
});
|
|
4723
|
+
var blockCustomCssRuleSchema = customCssRuleSchema.extend({
|
|
4724
|
+
blockKind: z9.string().min(1, "Block kind is required").max(50, "Block kind too long")
|
|
4725
|
+
});
|
|
4726
|
+
var customCssRulesSchema = z9.array(customCssRuleSchema).optional();
|
|
4727
|
+
var blockCustomCssRulesSchema = z9.array(blockCustomCssRuleSchema).optional();
|
|
4728
|
+
|
|
4729
|
+
// ../theme-core/src/customCss/atRuleValidation.ts
|
|
4730
|
+
import { z as z10 } from "zod";
|
|
4731
|
+
var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
|
|
4732
|
+
var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
|
|
4733
|
+
var BLOCKED_AT_RULES = ["@import", "@charset"];
|
|
4734
|
+
var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
|
|
4735
|
+
var ruleIdSchema = z10.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
|
|
4736
|
+
var nestedRuleSchema = z10.object({
|
|
4737
|
+
selector: selectorSchema,
|
|
4738
|
+
declarations: declarationsSchema
|
|
4739
|
+
});
|
|
4740
|
+
function isValidKeyframeOffset(offset) {
|
|
4741
|
+
const trimmed = offset.trim().toLowerCase();
|
|
4742
|
+
if (trimmed === "from" || trimmed === "to") return true;
|
|
4743
|
+
const match = trimmed.match(/^(\d{1,3})%$/);
|
|
4744
|
+
if (!match || match[1] === void 0) return false;
|
|
4745
|
+
const value = parseInt(match[1], 10);
|
|
4746
|
+
return value >= 0 && value <= 100;
|
|
4747
|
+
}
|
|
4748
|
+
var keyframeOffsetSchema = z10.string().transform((offset) => offset.trim()).refine(
|
|
4749
|
+
(offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
|
|
4750
|
+
{ message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
|
|
4751
|
+
).refine(
|
|
4752
|
+
isValidKeyframeOffset,
|
|
4753
|
+
{ message: "Keyframe offset must be between 0% and 100%" }
|
|
4754
|
+
);
|
|
4755
|
+
var animationNameSchema = z10.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
|
|
4756
|
+
(name) => ANIMATION_NAME_PATTERN.test(name),
|
|
4757
|
+
{ message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
|
|
4758
|
+
);
|
|
4759
|
+
var keyframeSchema = z10.object({
|
|
4760
|
+
offset: keyframeOffsetSchema,
|
|
4761
|
+
declarations: declarationsSchema
|
|
4762
|
+
});
|
|
4763
|
+
var keyframesAtRuleSchema = z10.object({
|
|
4764
|
+
id: ruleIdSchema,
|
|
4765
|
+
type: z10.literal("keyframes"),
|
|
4766
|
+
name: animationNameSchema,
|
|
4767
|
+
frames: z10.array(keyframeSchema).min(1, "At least one keyframe is required")
|
|
4768
|
+
});
|
|
4769
|
+
var fontFaceDeclarationsSchema = z10.record(z10.string().min(1).max(100), declarationValueSchema).refine(
|
|
4770
|
+
(decls) => "fontFamily" in decls || "font-family" in decls,
|
|
4771
|
+
{ message: "font-family is required in @font-face" }
|
|
4772
|
+
);
|
|
4773
|
+
var fontFaceAtRuleSchema = z10.object({
|
|
4774
|
+
id: ruleIdSchema,
|
|
4775
|
+
type: z10.literal("font-face"),
|
|
4776
|
+
declarations: fontFaceDeclarationsSchema
|
|
4777
|
+
});
|
|
4778
|
+
var mediaQuerySchema = z10.string().min(1, "Media query is required").max(200, "Media query too long");
|
|
4779
|
+
var mediaAtRuleSchema = z10.object({
|
|
4780
|
+
id: ruleIdSchema,
|
|
4781
|
+
type: z10.literal("media"),
|
|
4782
|
+
query: mediaQuerySchema,
|
|
4783
|
+
rules: z10.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
4784
|
+
});
|
|
4785
|
+
var supportsConditionSchema = z10.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
|
|
4786
|
+
var supportsAtRuleSchema = z10.object({
|
|
4787
|
+
id: ruleIdSchema,
|
|
4788
|
+
type: z10.literal("supports"),
|
|
4789
|
+
condition: supportsConditionSchema,
|
|
4790
|
+
rules: z10.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
4791
|
+
});
|
|
4792
|
+
function containsBlockedAtRule(css) {
|
|
4793
|
+
return BLOCKED_AT_RULE_PATTERN.test(css);
|
|
4794
|
+
}
|
|
4795
|
+
var rawCssSchema = z10.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
|
|
4796
|
+
(css) => css.trim().startsWith("@"),
|
|
4797
|
+
{ message: "Raw at-rule must start with @" }
|
|
4798
|
+
).refine(
|
|
4799
|
+
(css) => !containsBlockedAtRule(css),
|
|
4800
|
+
{ message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
|
|
4432
4801
|
);
|
|
4802
|
+
var rawAtRuleSchema = z10.object({
|
|
4803
|
+
id: ruleIdSchema,
|
|
4804
|
+
type: z10.literal("raw"),
|
|
4805
|
+
css: rawCssSchema
|
|
4806
|
+
});
|
|
4807
|
+
var customCssAtRuleSchema = z10.discriminatedUnion("type", [
|
|
4808
|
+
keyframesAtRuleSchema,
|
|
4809
|
+
fontFaceAtRuleSchema,
|
|
4810
|
+
mediaAtRuleSchema,
|
|
4811
|
+
supportsAtRuleSchema,
|
|
4812
|
+
rawAtRuleSchema
|
|
4813
|
+
]);
|
|
4814
|
+
var customCssAtRulesSchema = z10.array(customCssAtRuleSchema).optional();
|
|
4815
|
+
|
|
4816
|
+
// ../theme-core/src/shared/componentStyles.ts
|
|
4817
|
+
import { z as z11 } from "zod";
|
|
4818
|
+
var componentBorderSchema = z11.object({
|
|
4819
|
+
width: z11.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
|
|
4820
|
+
style: z11.enum(["solid", "dashed"]).default("solid"),
|
|
4821
|
+
colorToken: themeColorTokenSchema.optional()
|
|
4822
|
+
// defaults to "border" if not set
|
|
4823
|
+
});
|
|
4824
|
+
var componentShadowSchema = z11.object({
|
|
4825
|
+
elevation: z11.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
|
|
4826
|
+
});
|
|
4433
4827
|
|
|
4434
4828
|
// ../theme-core/src/responsive/breakpoints.ts
|
|
4435
4829
|
var BREAKPOINT_SM = 640;
|
|
@@ -4459,6 +4853,38 @@ var MQ_TABLET_ONLY = mqBetween(BREAKPOINT_SM, BREAKPOINT_LG_DOWN);
|
|
|
4459
4853
|
var MQ_MAX_640 = mqDown(BREAKPOINT_SM);
|
|
4460
4854
|
var MQ_MAX_768 = mqDown(BREAKPOINT_MD);
|
|
4461
4855
|
|
|
4856
|
+
// ../blocks/src/system/runtime/shared/components/FeedbackMessage.tsx
|
|
4857
|
+
import { jsx as jsx3, jsxs as jsxs2 } from "react/jsx-runtime";
|
|
4858
|
+
function joinClasses(...parts) {
|
|
4859
|
+
return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
|
|
4860
|
+
}
|
|
4861
|
+
function FeedbackMessage({
|
|
4862
|
+
tone,
|
|
4863
|
+
children,
|
|
4864
|
+
className,
|
|
4865
|
+
title,
|
|
4866
|
+
titleClassName,
|
|
4867
|
+
bodyClassName,
|
|
4868
|
+
role = "status",
|
|
4869
|
+
live
|
|
4870
|
+
}) {
|
|
4871
|
+
const resolvedLive = live ?? (role === "alert" ? "assertive" : "polite");
|
|
4872
|
+
const shouldWrapBody = Boolean(title || bodyClassName);
|
|
4873
|
+
return /* @__PURE__ */ jsxs2(
|
|
4874
|
+
"div",
|
|
4875
|
+
{
|
|
4876
|
+
className,
|
|
4877
|
+
"data-feedback-tone": tone,
|
|
4878
|
+
role,
|
|
4879
|
+
"aria-live": resolvedLive === "off" ? void 0 : resolvedLive,
|
|
4880
|
+
children: [
|
|
4881
|
+
title ? /* @__PURE__ */ jsx3("p", { className: joinClasses(titleClassName), "data-feedback-title": true, children: title }) : null,
|
|
4882
|
+
shouldWrapBody ? /* @__PURE__ */ jsx3("div", { className: joinClasses(bodyClassName), "data-feedback-body": true, children }) : children
|
|
4883
|
+
]
|
|
4884
|
+
}
|
|
4885
|
+
);
|
|
4886
|
+
}
|
|
4887
|
+
|
|
4462
4888
|
// ../blocks/src/system/runtime/nodes/booking-form.client.tsx
|
|
4463
4889
|
import React7, { useCallback as useCallback6, useRef as useRef6, useState as useState7 } from "react";
|
|
4464
4890
|
|
|
@@ -4475,7 +4901,7 @@ var logger = {
|
|
|
4475
4901
|
|
|
4476
4902
|
// ../altcha/src/AltchaWidget.tsx
|
|
4477
4903
|
import { useEffect, useRef, useState } from "react";
|
|
4478
|
-
import { jsx as
|
|
4904
|
+
import { jsx as jsx4 } from "react/jsx-runtime";
|
|
4479
4905
|
function AltchaWidget({
|
|
4480
4906
|
challengeUrl,
|
|
4481
4907
|
onSolutionChange,
|
|
@@ -4521,7 +4947,7 @@ function AltchaWidget({
|
|
|
4521
4947
|
}
|
|
4522
4948
|
};
|
|
4523
4949
|
}, [challengeUrl, auto, hidelogo, className, onSolutionChange]);
|
|
4524
|
-
return /* @__PURE__ */
|
|
4950
|
+
return /* @__PURE__ */ jsx4("div", { ref: containerRef });
|
|
4525
4951
|
}
|
|
4526
4952
|
|
|
4527
4953
|
// ../altcha/src/client.ts
|
|
@@ -4840,7 +5266,7 @@ function useMultiStep({
|
|
|
4840
5266
|
}
|
|
4841
5267
|
|
|
4842
5268
|
// ../blocks/src/system/runtime/components/multi-step/MultiStepForm.tsx
|
|
4843
|
-
import { jsx as
|
|
5269
|
+
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
4844
5270
|
function MultiStepForm({
|
|
4845
5271
|
steps,
|
|
4846
5272
|
initialData,
|
|
@@ -4876,7 +5302,7 @@ function MultiStepForm({
|
|
|
4876
5302
|
} = context;
|
|
4877
5303
|
const currentStep = visibleSteps[currentStepIndex];
|
|
4878
5304
|
if (!currentStep) {
|
|
4879
|
-
return /* @__PURE__ */
|
|
5305
|
+
return /* @__PURE__ */ jsx5("div", { className: "rb-text-center rb-py-12", children: /* @__PURE__ */ jsx5("p", { className: "status-muted", children: "No steps available" }) });
|
|
4880
5306
|
}
|
|
4881
5307
|
const stepComponent = isValidElement(currentStep.component) ? cloneElement(
|
|
4882
5308
|
currentStep.component,
|
|
@@ -4890,8 +5316,8 @@ function MultiStepForm({
|
|
|
4890
5316
|
const showNextButton = !currentStep.isTerminal;
|
|
4891
5317
|
const nextButtonLabel = isLastStep ? currentStep.nextLabel || "Complete" : currentStep.nextLabel || "Continue";
|
|
4892
5318
|
const backButtonLabel = currentStep.backLabel || "Back";
|
|
4893
|
-
return /* @__PURE__ */
|
|
4894
|
-
progressStyle !== "none" && /* @__PURE__ */
|
|
5319
|
+
return /* @__PURE__ */ jsx5(MultiStepContext.Provider, { value: context, children: /* @__PURE__ */ jsxs3("div", { className: `multi-step-form ${className}`, children: [
|
|
5320
|
+
progressStyle !== "none" && /* @__PURE__ */ jsx5("div", { className: "rb-mb-8", children: /* @__PURE__ */ jsx5(
|
|
4895
5321
|
ProgressIndicator,
|
|
4896
5322
|
{
|
|
4897
5323
|
steps: visibleSteps,
|
|
@@ -4900,13 +5326,13 @@ function MultiStepForm({
|
|
|
4900
5326
|
onStepClick: allowSkip ? goToStep : void 0
|
|
4901
5327
|
}
|
|
4902
5328
|
) }),
|
|
4903
|
-
/* @__PURE__ */
|
|
4904
|
-
Object.keys(errors).length > 0 && /* @__PURE__ */
|
|
4905
|
-
errors._form && /* @__PURE__ */
|
|
4906
|
-
Object.entries(errors).filter(([key]) => key !== "_form").map(([key, message]) => /* @__PURE__ */
|
|
5329
|
+
/* @__PURE__ */ jsx5("div", { className: "step-content", children: stepComponent }),
|
|
5330
|
+
Object.keys(errors).length > 0 && /* @__PURE__ */ jsxs3(FeedbackMessage, { tone: "error", className: "rb-mt-6 alert alert-error", role: "alert", children: [
|
|
5331
|
+
errors._form && /* @__PURE__ */ jsx5("p", { className: "rb-caption", children: /* @__PURE__ */ jsx5("strong", { children: errors._form }) }),
|
|
5332
|
+
Object.entries(errors).filter(([key]) => key !== "_form").map(([key, message]) => /* @__PURE__ */ jsx5("p", { className: "rb-caption", children: message }, key))
|
|
4907
5333
|
] }),
|
|
4908
|
-
(showBackButton || showNextButton) && /* @__PURE__ */
|
|
4909
|
-
showBackButton && /* @__PURE__ */
|
|
5334
|
+
(showBackButton || showNextButton) && /* @__PURE__ */ jsxs3("div", { className: "rb-flex rb-gap-3 rb-mt-8", children: [
|
|
5335
|
+
showBackButton && /* @__PURE__ */ jsx5(
|
|
4910
5336
|
"button",
|
|
4911
5337
|
{
|
|
4912
5338
|
type: "button",
|
|
@@ -4916,7 +5342,7 @@ function MultiStepForm({
|
|
|
4916
5342
|
children: backButtonLabel
|
|
4917
5343
|
}
|
|
4918
5344
|
),
|
|
4919
|
-
showNextButton && /* @__PURE__ */
|
|
5345
|
+
showNextButton && /* @__PURE__ */ jsxs3(
|
|
4920
5346
|
"button",
|
|
4921
5347
|
{
|
|
4922
5348
|
type: "button",
|
|
@@ -4928,7 +5354,7 @@ function MultiStepForm({
|
|
|
4928
5354
|
extraClassName: "rb-flex-1"
|
|
4929
5355
|
}),
|
|
4930
5356
|
children: [
|
|
4931
|
-
(isValidating || isSubmitting) && /* @__PURE__ */
|
|
5357
|
+
(isValidating || isSubmitting) && /* @__PURE__ */ jsx5(
|
|
4932
5358
|
SpinnerNode,
|
|
4933
5359
|
{
|
|
4934
5360
|
size: "sm",
|
|
@@ -4953,11 +5379,11 @@ function ProgressIndicator({
|
|
|
4953
5379
|
onStepClick
|
|
4954
5380
|
}) {
|
|
4955
5381
|
if (style === "dots") {
|
|
4956
|
-
return /* @__PURE__ */
|
|
5382
|
+
return /* @__PURE__ */ jsx5("div", { className: "rb-flex rb-items-center rb-justify-center rb-gap-2", children: steps.map((step, index) => {
|
|
4957
5383
|
const isActive = index === currentIndex;
|
|
4958
5384
|
const isCompleted = index < currentIndex;
|
|
4959
5385
|
const isClickable = onStepClick && index <= currentIndex;
|
|
4960
|
-
return /* @__PURE__ */
|
|
5386
|
+
return /* @__PURE__ */ jsx5(
|
|
4961
5387
|
"button",
|
|
4962
5388
|
{
|
|
4963
5389
|
type: "button",
|
|
@@ -4976,13 +5402,13 @@ function ProgressIndicator({
|
|
|
4976
5402
|
}) });
|
|
4977
5403
|
}
|
|
4978
5404
|
if (style === "steps") {
|
|
4979
|
-
return /* @__PURE__ */
|
|
5405
|
+
return /* @__PURE__ */ jsx5("div", { className: "rb-flex rb-items-center rb-justify-between", children: steps.map((step, index) => {
|
|
4980
5406
|
const isActive = index === currentIndex;
|
|
4981
5407
|
const isCompleted = index < currentIndex;
|
|
4982
5408
|
const isClickable = onStepClick && index <= currentIndex;
|
|
4983
5409
|
const isLast = index === steps.length - 1;
|
|
4984
|
-
return /* @__PURE__ */
|
|
4985
|
-
/* @__PURE__ */
|
|
5410
|
+
return /* @__PURE__ */ jsxs3("div", { className: "rb-flex rb-items-center rb-flex-1", children: [
|
|
5411
|
+
/* @__PURE__ */ jsxs3(
|
|
4986
5412
|
"button",
|
|
4987
5413
|
{
|
|
4988
5414
|
type: "button",
|
|
@@ -4993,7 +5419,7 @@ function ProgressIndicator({
|
|
|
4993
5419
|
${isClickable ? "rb-cursor-pointer" : "rb-cursor-default"}
|
|
4994
5420
|
`,
|
|
4995
5421
|
children: [
|
|
4996
|
-
/* @__PURE__ */
|
|
5422
|
+
/* @__PURE__ */ jsx5(
|
|
4997
5423
|
"div",
|
|
4998
5424
|
{
|
|
4999
5425
|
className: `
|
|
@@ -5004,7 +5430,7 @@ function ProgressIndicator({
|
|
|
5004
5430
|
children: isCompleted ? "\u2713" : index + 1
|
|
5005
5431
|
}
|
|
5006
5432
|
),
|
|
5007
|
-
/* @__PURE__ */
|
|
5433
|
+
/* @__PURE__ */ jsx5(
|
|
5008
5434
|
"span",
|
|
5009
5435
|
{
|
|
5010
5436
|
className: `
|
|
@@ -5017,59 +5443,28 @@ function ProgressIndicator({
|
|
|
5017
5443
|
]
|
|
5018
5444
|
}
|
|
5019
5445
|
),
|
|
5020
|
-
!isLast && /* @__PURE__ */
|
|
5446
|
+
!isLast && /* @__PURE__ */ jsx5("div", { className: "step-connector rb-ml-2 rb-mr-2 rb-hidden rb-sm-block" })
|
|
5021
5447
|
] }, step.id);
|
|
5022
5448
|
}) });
|
|
5023
5449
|
}
|
|
5024
5450
|
const progress = (currentIndex + 1) / steps.length * 100;
|
|
5025
|
-
return /* @__PURE__ */
|
|
5026
|
-
/* @__PURE__ */
|
|
5027
|
-
/* @__PURE__ */
|
|
5451
|
+
return /* @__PURE__ */ jsxs3("div", { className: "rb-space-y-2", children: [
|
|
5452
|
+
/* @__PURE__ */ jsxs3("div", { className: "rb-flex rb-justify-between rb-caption status-muted", children: [
|
|
5453
|
+
/* @__PURE__ */ jsxs3("span", { children: [
|
|
5028
5454
|
"Step ",
|
|
5029
5455
|
currentIndex + 1,
|
|
5030
5456
|
" of ",
|
|
5031
5457
|
steps.length
|
|
5032
5458
|
] }),
|
|
5033
|
-
/* @__PURE__ */
|
|
5459
|
+
/* @__PURE__ */ jsxs3("span", { children: [
|
|
5034
5460
|
Math.round(progress),
|
|
5035
5461
|
"%"
|
|
5036
5462
|
] })
|
|
5037
5463
|
] }),
|
|
5038
|
-
/* @__PURE__ */
|
|
5464
|
+
/* @__PURE__ */ jsx5("div", { className: "progress-bar", children: /* @__PURE__ */ jsx5("div", { className: "progress-fill", style: { width: `${progress}%` } }) })
|
|
5039
5465
|
] });
|
|
5040
5466
|
}
|
|
5041
5467
|
|
|
5042
|
-
// ../blocks/src/system/runtime/shared/components/FeedbackMessage.tsx
|
|
5043
|
-
import { jsx as jsx5, jsxs as jsxs3 } from "react/jsx-runtime";
|
|
5044
|
-
function joinClasses(...parts) {
|
|
5045
|
-
return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
|
|
5046
|
-
}
|
|
5047
|
-
function FeedbackMessage({
|
|
5048
|
-
tone,
|
|
5049
|
-
children,
|
|
5050
|
-
className,
|
|
5051
|
-
title,
|
|
5052
|
-
titleClassName,
|
|
5053
|
-
bodyClassName,
|
|
5054
|
-
role = "status",
|
|
5055
|
-
live
|
|
5056
|
-
}) {
|
|
5057
|
-
const resolvedLive = live ?? (role === "alert" ? "assertive" : "polite");
|
|
5058
|
-
return /* @__PURE__ */ jsxs3(
|
|
5059
|
-
"div",
|
|
5060
|
-
{
|
|
5061
|
-
className,
|
|
5062
|
-
"data-feedback-tone": tone,
|
|
5063
|
-
role,
|
|
5064
|
-
"aria-live": resolvedLive === "off" ? void 0 : resolvedLive,
|
|
5065
|
-
children: [
|
|
5066
|
-
title ? /* @__PURE__ */ jsx5("p", { className: joinClasses(titleClassName), "data-feedback-title": true, children: title }) : null,
|
|
5067
|
-
/* @__PURE__ */ jsx5("div", { className: joinClasses(bodyClassName), "data-feedback-body": true, children })
|
|
5068
|
-
]
|
|
5069
|
-
}
|
|
5070
|
-
);
|
|
5071
|
-
}
|
|
5072
|
-
|
|
5073
5468
|
// ../blocks/src/system/runtime/components/booking/SuccessMessage.tsx
|
|
5074
5469
|
import { Fragment, jsx as jsx6, jsxs as jsxs4 } from "react/jsx-runtime";
|
|
5075
5470
|
var SuccessMessage = ({
|
|
@@ -5347,7 +5742,7 @@ function ServiceResourceSelector({
|
|
|
5347
5742
|
/* @__PURE__ */ jsx7(SpinnerNode, { size: "md", srLabel: "Loading practitioners" }),
|
|
5348
5743
|
/* @__PURE__ */ jsx7("p", { className: "ab-text ab-text--muted", children: "Loading practitioners..." })
|
|
5349
5744
|
] }),
|
|
5350
|
-
resourceError && /* @__PURE__ */ jsx7("
|
|
5745
|
+
resourceError && /* @__PURE__ */ jsx7(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: resourceError }),
|
|
5351
5746
|
/* @__PURE__ */ jsxs5("div", { className: "ab-actions", children: [
|
|
5352
5747
|
onBack && /* @__PURE__ */ jsx7(
|
|
5353
5748
|
"button",
|
|
@@ -5493,7 +5888,7 @@ var DatePicker = ({
|
|
|
5493
5888
|
"Select Date",
|
|
5494
5889
|
required && /* @__PURE__ */ jsx9("span", { className: "ab-required", children: "*" })
|
|
5495
5890
|
] }),
|
|
5496
|
-
/* @__PURE__ */ jsx9("
|
|
5891
|
+
/* @__PURE__ */ jsx9(FeedbackMessage, { tone: "warning", className: "ab-alert ab-alert--warning", role: "status", children: /* @__PURE__ */ jsxs6("p", { className: "ab-text", children: [
|
|
5497
5892
|
"No available dates in this period.",
|
|
5498
5893
|
hasMore && onLoadMore && /* @__PURE__ */ jsx9(
|
|
5499
5894
|
"button",
|
|
@@ -5552,7 +5947,7 @@ var TimeSlotSelector = ({
|
|
|
5552
5947
|
"Select Time",
|
|
5553
5948
|
required && /* @__PURE__ */ jsx10("span", { className: "ab-required", children: "*" })
|
|
5554
5949
|
] }),
|
|
5555
|
-
isLoading ? /* @__PURE__ */ jsx10("
|
|
5950
|
+
isLoading ? /* @__PURE__ */ jsx10(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info ab-center", role: "status", children: "Loading available times..." }) : slots.length === 0 ? /* @__PURE__ */ jsx10(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info ab-center", role: "status", children: "No available times for this date" }) : /* @__PURE__ */ jsxs7(
|
|
5556
5951
|
"select",
|
|
5557
5952
|
{
|
|
5558
5953
|
id: "booking-slot",
|
|
@@ -5792,7 +6187,7 @@ function DateTimeSelectionStep({
|
|
|
5792
6187
|
" minutes"
|
|
5793
6188
|
] })
|
|
5794
6189
|
] }),
|
|
5795
|
-
error && /* @__PURE__ */ jsx11("
|
|
6190
|
+
error && /* @__PURE__ */ jsx11(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: error }),
|
|
5796
6191
|
/* @__PURE__ */ jsx11(
|
|
5797
6192
|
DatePicker,
|
|
5798
6193
|
{
|
|
@@ -6172,7 +6567,7 @@ function PaymentOptionSelectionStep({
|
|
|
6172
6567
|
}
|
|
6173
6568
|
}, [appointmentPackages, data.selectedAppointmentPackageId, updateData]);
|
|
6174
6569
|
if (resolution.mode === "unsupported" || !service) {
|
|
6175
|
-
return /* @__PURE__ */ jsx12("
|
|
6570
|
+
return /* @__PURE__ */ jsx12(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: resolution.errorMessage ?? "Payment options are unavailable for this service right now." });
|
|
6176
6571
|
}
|
|
6177
6572
|
const viewModel = buildBookingPaymentSelectionViewModel({
|
|
6178
6573
|
serviceTitle: service.title,
|
|
@@ -6188,8 +6583,8 @@ function PaymentOptionSelectionStep({
|
|
|
6188
6583
|
/* @__PURE__ */ jsx12("h3", { className: "ab-subtitle", children: viewModel.sectionTitle }),
|
|
6189
6584
|
/* @__PURE__ */ jsx12("p", { className: "ab-text ab-text--muted", children: service.title })
|
|
6190
6585
|
] }),
|
|
6191
|
-
appointmentPackages.tag === "loading" ? /* @__PURE__ */ jsx12("
|
|
6192
|
-
appointmentPackages.tag === "error" ? /* @__PURE__ */ jsxs9("
|
|
6586
|
+
appointmentPackages.tag === "loading" ? /* @__PURE__ */ jsx12(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info", role: "status", children: "Checking package credits..." }) : null,
|
|
6587
|
+
appointmentPackages.tag === "error" ? /* @__PURE__ */ jsxs9(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info", role: "status", children: [
|
|
6193
6588
|
appointmentPackages.message,
|
|
6194
6589
|
" You can continue with the normal payment option."
|
|
6195
6590
|
] }) : null,
|
|
@@ -6281,8 +6676,44 @@ function PaymentOptionSelectionStep({
|
|
|
6281
6676
|
}
|
|
6282
6677
|
|
|
6283
6678
|
// ../blocks/src/system/runtime/components/multi-step/DynamicFormFields.tsx
|
|
6284
|
-
import { useState as useState5, useCallback as useCallback4 } from "react";
|
|
6285
|
-
|
|
6679
|
+
import { useState as useState5, useCallback as useCallback4 } from "react";
|
|
6680
|
+
|
|
6681
|
+
// ../blocks/src/system/runtime/shared/components/FieldValidationMessage.tsx
|
|
6682
|
+
import { jsx as jsx13 } from "react/jsx-runtime";
|
|
6683
|
+
function getFieldValidationControlProps({
|
|
6684
|
+
message,
|
|
6685
|
+
messageId,
|
|
6686
|
+
describedBy
|
|
6687
|
+
}) {
|
|
6688
|
+
const hasMessage = Boolean(message);
|
|
6689
|
+
const ariaDescribedBy = [describedBy, hasMessage ? messageId : void 0].filter((part) => typeof part === "string" && part.length > 0).join(" ");
|
|
6690
|
+
return {
|
|
6691
|
+
"aria-invalid": hasMessage ? "true" : void 0,
|
|
6692
|
+
"aria-describedby": ariaDescribedBy || void 0
|
|
6693
|
+
};
|
|
6694
|
+
}
|
|
6695
|
+
function FieldValidationMessage({
|
|
6696
|
+
id,
|
|
6697
|
+
children,
|
|
6698
|
+
className,
|
|
6699
|
+
live = "assertive"
|
|
6700
|
+
}) {
|
|
6701
|
+
return /* @__PURE__ */ jsx13(
|
|
6702
|
+
"p",
|
|
6703
|
+
{
|
|
6704
|
+
id,
|
|
6705
|
+
className,
|
|
6706
|
+
"data-field-validation-message": true,
|
|
6707
|
+
"data-field-validation-tone": "error",
|
|
6708
|
+
role: "alert",
|
|
6709
|
+
"aria-live": live === "off" ? void 0 : live,
|
|
6710
|
+
children
|
|
6711
|
+
}
|
|
6712
|
+
);
|
|
6713
|
+
}
|
|
6714
|
+
|
|
6715
|
+
// ../blocks/src/system/runtime/components/multi-step/DynamicFormFields.tsx
|
|
6716
|
+
import { jsx as jsx14, jsxs as jsxs10 } from "react/jsx-runtime";
|
|
6286
6717
|
function DynamicFormFields({
|
|
6287
6718
|
fields,
|
|
6288
6719
|
showLabels = true,
|
|
@@ -6359,26 +6790,30 @@ function DynamicFormFields({
|
|
|
6359
6790
|
},
|
|
6360
6791
|
[data, touched]
|
|
6361
6792
|
);
|
|
6362
|
-
return /* @__PURE__ */
|
|
6793
|
+
return /* @__PURE__ */ jsx14("div", { className: `rb-space-y-6 ${className}`, children: fields.map((field) => {
|
|
6363
6794
|
const error = getFieldError(field);
|
|
6364
6795
|
const value = data[field.id] ?? "";
|
|
6796
|
+
const helpId = field.helpText ? `${field.id}-help` : void 0;
|
|
6797
|
+
const errorId = `${field.id}-error`;
|
|
6365
6798
|
return /* @__PURE__ */ jsxs10("div", { className: "rb-space-y-2", children: [
|
|
6366
6799
|
showLabels && /* @__PURE__ */ jsxs10("label", { htmlFor: field.id, className: "form-label", children: [
|
|
6367
6800
|
field.label,
|
|
6368
|
-
field.required && /* @__PURE__ */
|
|
6801
|
+
field.required && /* @__PURE__ */ jsx14("span", { className: "required-marker", children: "*" })
|
|
6369
6802
|
] }),
|
|
6370
|
-
field.helpText && /* @__PURE__ */
|
|
6371
|
-
/* @__PURE__ */
|
|
6803
|
+
field.helpText && /* @__PURE__ */ jsx14("p", { id: helpId, className: "rb-caption status-muted", children: field.helpText }),
|
|
6804
|
+
/* @__PURE__ */ jsx14(
|
|
6372
6805
|
FieldInput,
|
|
6373
6806
|
{
|
|
6374
6807
|
field,
|
|
6375
6808
|
value,
|
|
6376
6809
|
onChange: (val) => handleChange(field.id, val),
|
|
6377
6810
|
onBlur: () => handleBlur(field.id),
|
|
6378
|
-
error
|
|
6811
|
+
error,
|
|
6812
|
+
errorId,
|
|
6813
|
+
describedBy: helpId
|
|
6379
6814
|
}
|
|
6380
6815
|
),
|
|
6381
|
-
error && /* @__PURE__ */
|
|
6816
|
+
error && /* @__PURE__ */ jsx14(FieldValidationMessage, { id: errorId, className: "rb-caption status-error", children: error })
|
|
6382
6817
|
] }, field.id);
|
|
6383
6818
|
}) });
|
|
6384
6819
|
}
|
|
@@ -6387,7 +6822,9 @@ function FieldInput({
|
|
|
6387
6822
|
value,
|
|
6388
6823
|
onChange,
|
|
6389
6824
|
onBlur,
|
|
6390
|
-
error
|
|
6825
|
+
error,
|
|
6826
|
+
errorId,
|
|
6827
|
+
describedBy
|
|
6391
6828
|
}) {
|
|
6392
6829
|
const inputClass = "form-input";
|
|
6393
6830
|
const textareaClass = "form-textarea";
|
|
@@ -6395,9 +6832,14 @@ function FieldInput({
|
|
|
6395
6832
|
const checkboxClass = "form-checkbox";
|
|
6396
6833
|
const radioClass = "form-radio";
|
|
6397
6834
|
const strValue = typeof value === "string" ? value : String(value ?? "");
|
|
6835
|
+
const validationProps = getFieldValidationControlProps({
|
|
6836
|
+
message: error,
|
|
6837
|
+
messageId: errorId,
|
|
6838
|
+
describedBy
|
|
6839
|
+
});
|
|
6398
6840
|
switch (field.type) {
|
|
6399
6841
|
case "textarea":
|
|
6400
|
-
return /* @__PURE__ */
|
|
6842
|
+
return /* @__PURE__ */ jsx14(
|
|
6401
6843
|
"textarea",
|
|
6402
6844
|
{
|
|
6403
6845
|
id: field.id,
|
|
@@ -6410,13 +6852,13 @@ function FieldInput({
|
|
|
6410
6852
|
minLength: field.minLength,
|
|
6411
6853
|
maxLength: field.maxLength,
|
|
6412
6854
|
rows: 4,
|
|
6413
|
-
|
|
6855
|
+
...validationProps,
|
|
6414
6856
|
className: textareaClass
|
|
6415
6857
|
}
|
|
6416
6858
|
);
|
|
6417
6859
|
case "select":
|
|
6418
6860
|
if (field.multiple) {
|
|
6419
|
-
return /* @__PURE__ */
|
|
6861
|
+
return /* @__PURE__ */ jsx14(
|
|
6420
6862
|
"select",
|
|
6421
6863
|
{
|
|
6422
6864
|
id: field.id,
|
|
@@ -6429,9 +6871,9 @@ function FieldInput({
|
|
|
6429
6871
|
onBlur,
|
|
6430
6872
|
required: field.required,
|
|
6431
6873
|
multiple: true,
|
|
6432
|
-
|
|
6874
|
+
...validationProps,
|
|
6433
6875
|
className: `${selectClass} rb-h-32`,
|
|
6434
|
-
children: field.options?.map((opt) => /* @__PURE__ */
|
|
6876
|
+
children: field.options?.map((opt) => /* @__PURE__ */ jsx14("option", { value: opt.value, children: opt.label }, opt.value))
|
|
6435
6877
|
}
|
|
6436
6878
|
);
|
|
6437
6879
|
}
|
|
@@ -6444,17 +6886,17 @@ function FieldInput({
|
|
|
6444
6886
|
onChange: (e) => onChange(e.target.value),
|
|
6445
6887
|
onBlur,
|
|
6446
6888
|
required: field.required,
|
|
6447
|
-
|
|
6889
|
+
...validationProps,
|
|
6448
6890
|
className: selectClass,
|
|
6449
6891
|
children: [
|
|
6450
|
-
/* @__PURE__ */
|
|
6451
|
-
field.options?.map((opt) => /* @__PURE__ */
|
|
6892
|
+
/* @__PURE__ */ jsx14("option", { value: "", children: "Select an option..." }),
|
|
6893
|
+
field.options?.map((opt) => /* @__PURE__ */ jsx14("option", { value: opt.value, children: opt.label }, opt.value))
|
|
6452
6894
|
]
|
|
6453
6895
|
}
|
|
6454
6896
|
);
|
|
6455
6897
|
case "radio":
|
|
6456
|
-
return /* @__PURE__ */
|
|
6457
|
-
/* @__PURE__ */
|
|
6898
|
+
return /* @__PURE__ */ jsx14("div", { className: "rb-space-y-2", children: field.options?.map((opt) => /* @__PURE__ */ jsxs10("label", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer", children: [
|
|
6899
|
+
/* @__PURE__ */ jsx14(
|
|
6458
6900
|
"input",
|
|
6459
6901
|
{
|
|
6460
6902
|
type: "radio",
|
|
@@ -6464,16 +6906,17 @@ function FieldInput({
|
|
|
6464
6906
|
onChange: (e) => onChange(e.target.value),
|
|
6465
6907
|
onBlur,
|
|
6466
6908
|
required: field.required,
|
|
6909
|
+
...validationProps,
|
|
6467
6910
|
className: radioClass
|
|
6468
6911
|
}
|
|
6469
6912
|
),
|
|
6470
|
-
/* @__PURE__ */
|
|
6913
|
+
/* @__PURE__ */ jsx14("span", { className: "rb-caption", children: opt.label })
|
|
6471
6914
|
] }, opt.value)) });
|
|
6472
6915
|
case "checkbox":
|
|
6473
6916
|
if (field.options && field.options.length > 1) {
|
|
6474
6917
|
const checkedValues = Array.isArray(value) ? value : [];
|
|
6475
|
-
return /* @__PURE__ */
|
|
6476
|
-
/* @__PURE__ */
|
|
6918
|
+
return /* @__PURE__ */ jsx14("div", { className: "rb-space-y-2", children: field.options.map((opt) => /* @__PURE__ */ jsxs10("label", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer", children: [
|
|
6919
|
+
/* @__PURE__ */ jsx14(
|
|
6477
6920
|
"input",
|
|
6478
6921
|
{
|
|
6479
6922
|
type: "checkbox",
|
|
@@ -6485,14 +6928,15 @@ function FieldInput({
|
|
|
6485
6928
|
onChange(newValues);
|
|
6486
6929
|
},
|
|
6487
6930
|
onBlur,
|
|
6931
|
+
...validationProps,
|
|
6488
6932
|
className: checkboxClass
|
|
6489
6933
|
}
|
|
6490
6934
|
),
|
|
6491
|
-
/* @__PURE__ */
|
|
6935
|
+
/* @__PURE__ */ jsx14("span", { className: "rb-caption", children: opt.label })
|
|
6492
6936
|
] }, opt.value)) });
|
|
6493
6937
|
}
|
|
6494
6938
|
return /* @__PURE__ */ jsxs10("label", { className: "rb-flex rb-items-center rb-gap-2 rb-cursor-pointer", children: [
|
|
6495
|
-
/* @__PURE__ */
|
|
6939
|
+
/* @__PURE__ */ jsx14(
|
|
6496
6940
|
"input",
|
|
6497
6941
|
{
|
|
6498
6942
|
type: "checkbox",
|
|
@@ -6502,14 +6946,15 @@ function FieldInput({
|
|
|
6502
6946
|
onChange: (e) => onChange(e.target.checked),
|
|
6503
6947
|
onBlur,
|
|
6504
6948
|
required: field.required,
|
|
6949
|
+
...validationProps,
|
|
6505
6950
|
className: checkboxClass
|
|
6506
6951
|
}
|
|
6507
6952
|
),
|
|
6508
|
-
/* @__PURE__ */
|
|
6953
|
+
/* @__PURE__ */ jsx14("span", { className: "rb-caption", children: field.placeholder || field.label })
|
|
6509
6954
|
] });
|
|
6510
6955
|
case "booking_requirement_consent":
|
|
6511
6956
|
return /* @__PURE__ */ jsxs10("label", { className: "rb-flex rb-items-start rb-gap-2 rb-cursor-pointer", children: [
|
|
6512
|
-
/* @__PURE__ */
|
|
6957
|
+
/* @__PURE__ */ jsx14(
|
|
6513
6958
|
"input",
|
|
6514
6959
|
{
|
|
6515
6960
|
type: "checkbox",
|
|
@@ -6519,13 +6964,14 @@ function FieldInput({
|
|
|
6519
6964
|
onChange: (e) => onChange(e.target.checked),
|
|
6520
6965
|
onBlur,
|
|
6521
6966
|
required: field.required,
|
|
6967
|
+
...validationProps,
|
|
6522
6968
|
className: `${checkboxClass} rb-mt-0.5`
|
|
6523
6969
|
}
|
|
6524
6970
|
),
|
|
6525
|
-
/* @__PURE__ */
|
|
6971
|
+
/* @__PURE__ */ jsx14("span", { className: "rb-caption", children: field.placeholder || field.label })
|
|
6526
6972
|
] });
|
|
6527
6973
|
case "number":
|
|
6528
|
-
return /* @__PURE__ */
|
|
6974
|
+
return /* @__PURE__ */ jsx14(
|
|
6529
6975
|
"input",
|
|
6530
6976
|
{
|
|
6531
6977
|
type: "number",
|
|
@@ -6538,12 +6984,12 @@ function FieldInput({
|
|
|
6538
6984
|
required: field.required,
|
|
6539
6985
|
min: field.min,
|
|
6540
6986
|
max: field.max,
|
|
6541
|
-
|
|
6987
|
+
...validationProps,
|
|
6542
6988
|
className: inputClass
|
|
6543
6989
|
}
|
|
6544
6990
|
);
|
|
6545
6991
|
case "date":
|
|
6546
|
-
return /* @__PURE__ */
|
|
6992
|
+
return /* @__PURE__ */ jsx14(
|
|
6547
6993
|
"input",
|
|
6548
6994
|
{
|
|
6549
6995
|
type: "date",
|
|
@@ -6555,12 +7001,12 @@ function FieldInput({
|
|
|
6555
7001
|
required: field.required,
|
|
6556
7002
|
min: field.min ? String(field.min) : void 0,
|
|
6557
7003
|
max: field.max ? String(field.max) : void 0,
|
|
6558
|
-
|
|
7004
|
+
...validationProps,
|
|
6559
7005
|
className: inputClass
|
|
6560
7006
|
}
|
|
6561
7007
|
);
|
|
6562
7008
|
case "time":
|
|
6563
|
-
return /* @__PURE__ */
|
|
7009
|
+
return /* @__PURE__ */ jsx14(
|
|
6564
7010
|
"input",
|
|
6565
7011
|
{
|
|
6566
7012
|
type: "time",
|
|
@@ -6570,13 +7016,13 @@ function FieldInput({
|
|
|
6570
7016
|
onChange: (e) => onChange(e.target.value),
|
|
6571
7017
|
onBlur,
|
|
6572
7018
|
required: field.required,
|
|
6573
|
-
|
|
7019
|
+
...validationProps,
|
|
6574
7020
|
className: inputClass
|
|
6575
7021
|
}
|
|
6576
7022
|
);
|
|
6577
7023
|
// text, email, tel, url
|
|
6578
7024
|
default:
|
|
6579
|
-
return /* @__PURE__ */
|
|
7025
|
+
return /* @__PURE__ */ jsx14(
|
|
6580
7026
|
"input",
|
|
6581
7027
|
{
|
|
6582
7028
|
type: field.type,
|
|
@@ -6590,7 +7036,7 @@ function FieldInput({
|
|
|
6590
7036
|
minLength: field.minLength,
|
|
6591
7037
|
maxLength: field.maxLength,
|
|
6592
7038
|
pattern: field.pattern,
|
|
6593
|
-
|
|
7039
|
+
...validationProps,
|
|
6594
7040
|
className: inputClass
|
|
6595
7041
|
}
|
|
6596
7042
|
);
|
|
@@ -7048,7 +7494,7 @@ function useBookingSubmission(_siteId) {
|
|
|
7048
7494
|
}
|
|
7049
7495
|
|
|
7050
7496
|
// ../blocks/src/system/runtime/nodes/course-registration/DiscountCodeSection.tsx
|
|
7051
|
-
import { jsx as
|
|
7497
|
+
import { jsx as jsx15, jsxs as jsxs11 } from "react/jsx-runtime";
|
|
7052
7498
|
function DiscountCodeSection({
|
|
7053
7499
|
isOpen,
|
|
7054
7500
|
code,
|
|
@@ -7056,10 +7502,10 @@ function DiscountCodeSection({
|
|
|
7056
7502
|
onChange,
|
|
7057
7503
|
onRemove
|
|
7058
7504
|
}) {
|
|
7059
|
-
return /* @__PURE__ */
|
|
7060
|
-
/* @__PURE__ */
|
|
7505
|
+
return /* @__PURE__ */ jsx15("div", { className: "cr-discount", children: !isOpen ? /* @__PURE__ */ jsx15("button", { type: "button", className: "cr-discount__toggle", onClick: onOpen, children: "Have a discount code?" }) : /* @__PURE__ */ jsxs11("div", { className: "cr-discount__form", children: [
|
|
7506
|
+
/* @__PURE__ */ jsx15("label", { htmlFor: "cr-discount-code", className: "cr-discount__label", children: "Discount code" }),
|
|
7061
7507
|
/* @__PURE__ */ jsxs11("div", { className: "cr-discount__row", children: [
|
|
7062
|
-
/* @__PURE__ */
|
|
7508
|
+
/* @__PURE__ */ jsx15(
|
|
7063
7509
|
"input",
|
|
7064
7510
|
{
|
|
7065
7511
|
id: "cr-discount-code",
|
|
@@ -7070,9 +7516,9 @@ function DiscountCodeSection({
|
|
|
7070
7516
|
autoComplete: "off"
|
|
7071
7517
|
}
|
|
7072
7518
|
),
|
|
7073
|
-
/* @__PURE__ */
|
|
7519
|
+
/* @__PURE__ */ jsx15("button", { type: "button", className: "cr-discount__remove", onClick: onRemove, children: "Remove" })
|
|
7074
7520
|
] }),
|
|
7075
|
-
/* @__PURE__ */
|
|
7521
|
+
/* @__PURE__ */ jsx15("p", { className: "cr-discount__hint", children: "Applied at checkout." })
|
|
7076
7522
|
] }) });
|
|
7077
7523
|
}
|
|
7078
7524
|
|
|
@@ -7160,7 +7606,7 @@ function scrollToBlock(anchorId) {
|
|
|
7160
7606
|
}
|
|
7161
7607
|
|
|
7162
7608
|
// ../blocks/src/system/runtime/nodes/booking-form.client.tsx
|
|
7163
|
-
import { jsx as
|
|
7609
|
+
import { jsx as jsx16, jsxs as jsxs12 } from "react/jsx-runtime";
|
|
7164
7610
|
var PORTAL_REBOOK_QUERY_PARAM = "rebook";
|
|
7165
7611
|
var PORTAL_REBOOK_QUERY_VALUE = "1";
|
|
7166
7612
|
var REBOOK_COMPLETION_MODE_VERIFIED_CHECKOUT = "verified_checkout";
|
|
@@ -7296,11 +7742,13 @@ var BookingFormClient = ({
|
|
|
7296
7742
|
viewState.kind
|
|
7297
7743
|
]);
|
|
7298
7744
|
if (render.display.state === "missing" || !form || !render.hydration.formId) {
|
|
7299
|
-
return /* @__PURE__ */
|
|
7300
|
-
|
|
7745
|
+
return /* @__PURE__ */ jsx16(
|
|
7746
|
+
FeedbackMessage,
|
|
7301
7747
|
{
|
|
7748
|
+
tone: "error",
|
|
7302
7749
|
className: `ab-alert ab-alert--error ${render.display.className ?? ""}`.trim(),
|
|
7303
|
-
|
|
7750
|
+
role: "alert",
|
|
7751
|
+
children: /* @__PURE__ */ jsx16("p", { className: "ab-text", children: render.display.message ?? "Booking form not found. Please check your configuration." })
|
|
7304
7752
|
}
|
|
7305
7753
|
);
|
|
7306
7754
|
}
|
|
@@ -7342,7 +7790,7 @@ var BookingFormClient = ({
|
|
|
7342
7790
|
window.location.href = result.data.checkoutUrl;
|
|
7343
7791
|
};
|
|
7344
7792
|
if (viewState.kind === "success") {
|
|
7345
|
-
return /* @__PURE__ */
|
|
7793
|
+
return /* @__PURE__ */ jsx16(
|
|
7346
7794
|
SuccessMessage,
|
|
7347
7795
|
{
|
|
7348
7796
|
message: getBookingSuccessMessage(render.display.successMessage),
|
|
@@ -7352,18 +7800,18 @@ var BookingFormClient = ({
|
|
|
7352
7800
|
);
|
|
7353
7801
|
}
|
|
7354
7802
|
if (viewState.kind === "verifying") {
|
|
7355
|
-
return /* @__PURE__ */
|
|
7803
|
+
return /* @__PURE__ */ jsx16(
|
|
7356
7804
|
"div",
|
|
7357
7805
|
{
|
|
7358
7806
|
id: bookingAnchorId,
|
|
7359
7807
|
className: render.display.className ?? void 0,
|
|
7360
|
-
children: /* @__PURE__ */
|
|
7808
|
+
children: /* @__PURE__ */ jsx16(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info", role: "status", children: /* @__PURE__ */ jsx16("p", { className: "ab-text", children: viewState.message }) })
|
|
7361
7809
|
}
|
|
7362
7810
|
);
|
|
7363
7811
|
}
|
|
7364
7812
|
return /* @__PURE__ */ jsxs12("div", { id: bookingAnchorId, className: render.display.className ?? void 0, children: [
|
|
7365
|
-
render.hydration.noticeMessage ? /* @__PURE__ */
|
|
7366
|
-
/* @__PURE__ */
|
|
7813
|
+
render.hydration.noticeMessage ? /* @__PURE__ */ jsx16(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info rb-mb-4", role: "status", children: /* @__PURE__ */ jsx16("p", { className: "ab-text", children: render.hydration.noticeMessage }) }) : null,
|
|
7814
|
+
/* @__PURE__ */ jsx16(
|
|
7367
7815
|
MultiStepForm,
|
|
7368
7816
|
{
|
|
7369
7817
|
steps,
|
|
@@ -7380,7 +7828,7 @@ var BookingFormClient = ({
|
|
|
7380
7828
|
}
|
|
7381
7829
|
),
|
|
7382
7830
|
shouldShowDiscountSection ? /* @__PURE__ */ jsxs12("div", { className: "rb-mt-6", children: [
|
|
7383
|
-
discountUi.manualCodeEntryAllowed ? /* @__PURE__ */
|
|
7831
|
+
discountUi.manualCodeEntryAllowed ? /* @__PURE__ */ jsx16(
|
|
7384
7832
|
DiscountCodeSection,
|
|
7385
7833
|
{
|
|
7386
7834
|
isOpen: discountUi.discountUiOpen,
|
|
@@ -7393,16 +7841,16 @@ var BookingFormClient = ({
|
|
|
7393
7841
|
}
|
|
7394
7842
|
}
|
|
7395
7843
|
) : null,
|
|
7396
|
-
discountUi.autoAppliedDiscount && discountUi.discountCode.trim().length === 0 ? /* @__PURE__ */
|
|
7844
|
+
discountUi.autoAppliedDiscount && discountUi.discountCode.trim().length === 0 ? /* @__PURE__ */ jsx16(FeedbackMessage, { tone: "info", className: "ab-alert ab-alert--info rb-mt-4", role: "status", children: /* @__PURE__ */ jsxs12("p", { className: "ab-text", children: [
|
|
7397
7845
|
"Discount available: ",
|
|
7398
7846
|
discountUi.autoAppliedDiscount.publicLabel,
|
|
7399
7847
|
" ",
|
|
7400
7848
|
"will apply automatically at checkout."
|
|
7401
7849
|
] }) }) : null
|
|
7402
7850
|
] }) : null,
|
|
7403
|
-
feedback.tag === "error" ? /* @__PURE__ */ jsxs12("
|
|
7404
|
-
/* @__PURE__ */
|
|
7405
|
-
/* @__PURE__ */
|
|
7851
|
+
feedback.tag === "error" ? /* @__PURE__ */ jsxs12(FeedbackMessage, { tone: "error", className: "ab-alert ab-alert--error", role: "alert", children: [
|
|
7852
|
+
/* @__PURE__ */ jsx16("p", { className: "ab-text", children: feedback.message }),
|
|
7853
|
+
/* @__PURE__ */ jsx16(
|
|
7406
7854
|
"button",
|
|
7407
7855
|
{
|
|
7408
7856
|
type: "button",
|
|
@@ -7412,7 +7860,7 @@ var BookingFormClient = ({
|
|
|
7412
7860
|
}
|
|
7413
7861
|
)
|
|
7414
7862
|
] }) : null,
|
|
7415
|
-
showSpamProtection && /* @__PURE__ */
|
|
7863
|
+
showSpamProtection && /* @__PURE__ */ jsx16("div", { className: "ab-altcha", children: /* @__PURE__ */ jsx16(
|
|
7416
7864
|
AltchaWidget,
|
|
7417
7865
|
{
|
|
7418
7866
|
challengeUrl: getChallengeUrl(),
|
|
@@ -7425,127 +7873,6 @@ var BookingFormClient = ({
|
|
|
7425
7873
|
// ../theme-core/src/ClientThemeScope.tsx
|
|
7426
7874
|
import { useMemo as useMemo6 } from "react";
|
|
7427
7875
|
|
|
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
7876
|
// ../theme-core/src/navigation/presets.ts
|
|
7550
7877
|
var NAV_LINK_PRESETS = {
|
|
7551
7878
|
/**
|
|
@@ -7690,18 +8017,6 @@ var NAV_LINK_PRESETS = {
|
|
|
7690
8017
|
};
|
|
7691
8018
|
var NAV_LINK_PRESET_IDS = Object.keys(NAV_LINK_PRESETS);
|
|
7692
8019
|
|
|
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
8020
|
// ../theme-core/src/layout/generateLayoutCss.ts
|
|
7706
8021
|
var waveTransitionMask = svgDataUrl(
|
|
7707
8022
|
"<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 +8474,6 @@ blockVarRegistry.set("testimonials", generateTestimonialsVars);
|
|
|
8159
8474
|
blockVarRegistry.set("course-details", generateCourseDetailsVars);
|
|
8160
8475
|
blockVarRegistry.set("course-registration", generateCourseRegistrationVars);
|
|
8161
8476
|
|
|
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
8477
|
// ../theme-core/src/responsiveMode.ts
|
|
8327
8478
|
var THEME_RESPONSIVE_MODE_ATTR = "data-rb-responsive-mode";
|
|
8328
8479
|
function escapeRegExp(value) {
|
|
@@ -8351,10 +8502,10 @@ function buildResponsiveScopeRulePatternSource() {
|
|
|
8351
8502
|
}
|
|
8352
8503
|
|
|
8353
8504
|
// ../theme-core/src/ThemeScopeCore.tsx
|
|
8354
|
-
import { jsx as
|
|
8505
|
+
import { jsx as jsx17, jsxs as jsxs13 } from "react/jsx-runtime";
|
|
8355
8506
|
|
|
8356
8507
|
// ../theme-core/src/ClientThemeScope.tsx
|
|
8357
|
-
import { jsx as
|
|
8508
|
+
import { jsx as jsx18 } from "react/jsx-runtime";
|
|
8358
8509
|
|
|
8359
8510
|
// ../blocks/src/system/runtime/hooks/useBookingFormConfig.ts
|
|
8360
8511
|
import { useState as useState8, useEffect as useEffect9 } from "react";
|