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