@riverbankcms/sdk 0.79.0 → 0.80.0
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/PreviewEditorSidebar-QZG37QIF.mjs +2655 -0
- package/dist/{PreviewEditorUI-27KJVEET.mjs → PreviewEditorUI-AXIKSMZA.mjs} +27 -4
- package/dist/SdkPreviewModeRuntime-XE5M4UKM.mjs +8 -0
- package/dist/_dts/ai/src/contracts/proposals.d.ts +20 -0
- package/dist/_dts/api/src/endpoints.d.ts +24 -0
- package/dist/_dts/api/src/index.d.ts +1 -1
- package/dist/_dts/api/src/siteInfrastructure.d.ts +124 -0
- package/dist/_dts/api/src/siteOnboarding.d.ts +13 -0
- package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +10 -1
- package/dist/_dts/block-form/src/client/index.d.ts +2 -0
- package/dist/_dts/block-form/src/index.d.ts +2 -0
- package/dist/_dts/block-form/src/utils/evaluateVisibility.d.ts +2 -1
- package/dist/_dts/blocks/src/client/header.d.ts +1 -1
- package/dist/_dts/blocks/src/client.d.ts +12 -12
- package/dist/_dts/blocks/src/index.d.ts +1 -1
- package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +2 -2
- package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -1
- package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +4 -1
- package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
- package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +21 -12
- package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +4 -2
- package/dist/_dts/blocks/src/system/fragments/library/faqHeading.d.ts +1 -0
- package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +5 -0
- package/dist/_dts/blocks/src/system/node/fragments/headingDecoration.d.ts +1 -4
- package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
- package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +7 -7
- package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
- package/dist/_dts/blocks/src/system/runtime/header/enhanceHeaderSection.d.ts +10 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +5 -5
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.server.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/EventSpotlight.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventCard.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventDetailModal.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModals.d.ts +2 -2
- package/dist/_dts/blocks/src/system/runtime/nodes/header-section.client.d.ts +2 -2
- package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -0
- package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +9 -0
- package/dist/_dts/blocks/src/system/transforms/typed.d.ts +14 -1
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +9 -3
- package/dist/_dts/editor-blocks/src/block-editor/BlockCard.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardBody.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/block-editor/BlockCardHeader.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/block-editor/FeatureCardIconsPanel.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/block-editor/GeneratedIconSetDialog.d.ts +6 -4
- package/dist/_dts/editor-blocks/src/block-editor/SortableBlockItem.d.ts +2 -6
- package/dist/_dts/editor-blocks/src/index.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +5 -1
- package/dist/_dts/preview-next/src/client/blocks/previewCustomizeControlPlan.d.ts +24 -0
- package/dist/_dts/preview-next/src/client/blocks/useBlockCustomizeControls.d.ts +34 -0
- package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -5
- package/dist/_dts/preview-next/src/client/preview/PageDesignEditorStateContext.d.ts +4 -1
- package/dist/_dts/preview-next/src/client/preview/PreviewBlockCustomizeSelectionContext.d.ts +20 -0
- package/dist/_dts/preview-next/src/client/preview/PreviewOpenEditorButton.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/SelectedBlockCustomizePanel.d.ts +13 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeEditorDraftPatch.d.ts +13 -0
- package/dist/_dts/preview-next/src/client/preview/previewCustomizeRuntimePatch.d.ts +2 -0
- package/dist/_dts/preview-next/src/client/preview/storeTypes.d.ts +4 -0
- package/dist/_dts/preview-next/src/client/widgets/widgetOverrides.d.ts +3 -1
- package/dist/_dts/sdk/src/cli/commands/webhooks.d.ts +44 -0
- package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
- package/dist/_dts/sdk/src/client/management/types.d.ts +56 -0
- package/dist/_dts/sdk/src/client/management/webhooks.d.ts +3 -0
- package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +6 -3
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/accordions/siteStyleDefaults.d.ts +220 -0
- package/dist/_dts/theme-core/src/accordions/types.d.ts +45 -2
- package/dist/_dts/theme-core/src/blockOverrides.d.ts +8 -0
- package/dist/_dts/theme-core/src/blocks/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/blocks/vars/testimonials.d.ts +4 -1
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/cards/core.d.ts +20 -0
- package/dist/_dts/theme-core/src/cards/generateDefaultCardSystem.d.ts +6 -3
- package/dist/_dts/theme-core/src/cards/siteStyleDefaults.d.ts +105 -0
- package/dist/_dts/theme-core/src/cards/types.d.ts +177 -0
- package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
- package/dist/_dts/theme-core/src/mock-themes/all.d.ts +156 -18
- package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
- package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +16 -0
- package/dist/_dts/theme-core/src/palette/variants/types.d.ts +1 -1
- package/dist/_dts/theme-core/src/schema.d.ts +446 -52
- package/dist/_dts/theme-core/src/site-styles/appearancePresetCatalog.d.ts +86 -17
- package/dist/_dts/theme-core/src/site-styles/appearancePresetTypes.d.ts +2 -3
- package/dist/_dts/theme-core/src/site-styles/blockAppearancePresets.d.ts +86 -17
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +110 -1
- package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +20 -1
- package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -0
- package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +286 -6
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/logoBranding.d.ts +193 -0
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +2 -8
- package/dist/_dts/theme-core/src/site-styles/rawStyleFields.d.ts +2 -0
- package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +10 -7
- package/dist/_dts/theme-core/src/site-styles/siteStyleThemeCompiler.d.ts +11 -0
- package/dist/_dts/theme-core/src/site-styles/sourceCatalogs.d.ts +2 -2
- package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/testimonialQuotePresets.d.ts +15 -0
- package/dist/_dts/theme-core/src/site-styles/tokenRecipes.d.ts +1 -1
- package/dist/_dts/theme-core/src/site-styles/types.d.ts +7 -29
- package/dist/{PreviewEditorSidebar-56NMJMIK.mjs → chunk-5NZGBSJF.mjs} +1423 -2451
- package/dist/{chunk-4HCW7FHJ.mjs → chunk-7PCYG6YV.mjs} +215 -137
- package/dist/{chunk-K2IIF34C.mjs → chunk-BBLZSQEY.mjs} +24 -0
- package/dist/{chunk-V47ZU33I.mjs → chunk-GYXKAUFV.mjs} +2785 -785
- package/dist/{chunk-GP555I66.mjs → chunk-HTB4BMKD.mjs} +94 -46
- package/dist/{chunk-A3HHFKVT.mjs → chunk-MPBNEVPB.mjs} +1 -1
- package/dist/cli/index.mjs +2100 -545
- package/dist/cli/init-docs/content/workflow-isr-revalidation.md +16 -4
- package/dist/client/{accordion-QLA7KBYO.mjs → accordion-QFZMNB7O.mjs} +1 -1
- package/dist/client/{bookingForm-PYZIPA5G.mjs → bookingForm-NCIXFWIG.mjs} +3 -3
- package/dist/client/bookings.mjs +1144 -329
- package/dist/client/{carousel-5EIULWBI.mjs → carousel-EO4BJMWD.mjs} +2 -2
- package/dist/client/{cart-DOP3FNI4.mjs → cart-FTYCLYUW.mjs} +5 -5
- package/dist/client/{checkout-BVMF6FBV.mjs → checkout-NFGLVCOX.mjs} +5 -5
- package/dist/client/{chunk-TYONZMST.mjs → chunk-4W66ALYT.mjs} +1 -1
- package/dist/client/{chunk-44K2U3QI.mjs → chunk-6GVVWSPU.mjs} +4 -4
- package/dist/client/{chunk-UDS3NTWA.mjs → chunk-IWFZSQNZ.mjs} +1 -1
- package/dist/client/{chunk-R5ESWNKX.mjs → chunk-PUOELU4O.mjs} +89 -5
- package/dist/client/{chunk-YLDYVRZL.mjs → chunk-PYRBIURC.mjs} +4 -4
- package/dist/client/{chunk-GG4M2NP6.mjs → chunk-T6UIP6UZ.mjs} +1 -1
- package/dist/client/{chunk-V6M5FCR5.mjs → chunk-VDS5YFLX.mjs} +1 -1
- package/dist/client/{chunk-CCNTDRCF.mjs → chunk-Y37KDO7P.mjs} +1 -1
- package/dist/client/client.mjs +4205 -2324
- package/dist/client/{courseRegistration-E6EAA6NL.mjs → courseRegistration-2EORROPS.mjs} +3 -3
- package/dist/client/{eventCalendar-HBG3HAK6.mjs → eventCalendar-WZI4VL6N.mjs} +5 -5
- package/dist/client/{eventCombined-6K5ZZWAK.mjs → eventCombined-QCB2TCNL.mjs} +5 -5
- package/dist/client/{eventDetails-Q75ICXLT.mjs → eventDetails-TFTATAPH.mjs} +5 -5
- package/dist/client/{eventListing-27P5F7DZ.mjs → eventListing-A2CQEHEQ.mjs} +5 -5
- package/dist/client/{eventRegistration-IQ7AMASR.mjs → eventRegistration-OELPVLUY.mjs} +5 -5
- package/dist/client/{form-JRTD65FN.mjs → form-NTIFD6WQ.mjs} +1 -1
- package/dist/client/{headerSection-7FPSSZHS.mjs → headerSection-7TBNKCLA.mjs} +65 -24
- package/dist/client/hooks.mjs +3354 -2006
- package/dist/client/{locationMap-7NGFNYBH.mjs → locationMap-LRLB5A3H.mjs} +1 -1
- package/dist/client/{newsletterForm-F3BADCI2.mjs → newsletterForm-XI52RZSN.mjs} +1 -1
- package/dist/client/{productDetail-V3HP7ITJ.mjs → productDetail-GSNKBFLY.mjs} +5 -5
- package/dist/client/{productList-L3EGJUF2.mjs → productList-BGCGT4KZ.mjs} +5 -5
- package/dist/client/rendering/client.mjs +2570 -1657
- package/dist/client/rendering/islands.mjs +18 -18
- package/dist/client/rendering.mjs +4275 -2394
- package/dist/client/{shop-DQUB5E2C.mjs → shop-RQHUCLNY.mjs} +5 -5
- package/dist/preview-next/before-render.mjs +24 -0
- package/dist/preview-next/client/runtime.mjs +5 -5
- package/dist/preview-next/middleware.mjs +24 -0
- package/dist/{sdk-runtime-AF6KXJU4.mjs → sdk-runtime-A4LHT2RS.mjs} +6 -6
- package/dist/server/components.mjs +4063 -2293
- package/dist/server/config-validation.mjs +3525 -2176
- package/dist/server/config.mjs +3525 -2176
- package/dist/server/data.mjs +3354 -2006
- package/dist/server/index.mjs +25 -1
- package/dist/server/next.mjs +4006 -2236
- package/dist/server/page-converter.mjs +2747 -1816
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +4063 -2293
- package/dist/server/rendering.mjs +4063 -2293
- package/dist/server/routing.mjs +3508 -2111
- package/dist/server/server.mjs +3372 -2024
- package/dist/server/theme-bridge.mjs +1436 -310
- package/dist/server/theme.mjs +409 -219
- package/dist/styles/index.css +300 -33
- package/package.json +1 -1
- package/dist/SdkPreviewModeRuntime-H4BSP6E7.mjs +0 -8
- package/dist/chunk-LCY32PXF.mjs +0 -1175
package/dist/server/theme.mjs
CHANGED
|
@@ -34,14 +34,8 @@ var visibleHeadingDecorationFamilyValues = [
|
|
|
34
34
|
"organic-squiggle",
|
|
35
35
|
"short-center-rule"
|
|
36
36
|
];
|
|
37
|
-
var visibleHeadingDecorationPlacementValues = [
|
|
38
|
-
"after-heading",
|
|
39
|
-
"between-heading-and-body",
|
|
40
|
-
"under-centered-heading"
|
|
41
|
-
];
|
|
42
37
|
var headingDecorationOverrideValues = [
|
|
43
38
|
"site-default",
|
|
44
|
-
"on",
|
|
45
39
|
"off"
|
|
46
40
|
];
|
|
47
41
|
var headingDecorationColorTokenValues = [
|
|
@@ -1116,7 +1110,7 @@ var personalitiesById = new Map(
|
|
|
1116
1110
|
);
|
|
1117
1111
|
|
|
1118
1112
|
// ../theme-core/src/schema.ts
|
|
1119
|
-
import { z as
|
|
1113
|
+
import { z as z17 } from "zod";
|
|
1120
1114
|
|
|
1121
1115
|
// ../theme-core/src/lib/media.ts
|
|
1122
1116
|
import z5 from "zod";
|
|
@@ -1166,8 +1160,15 @@ var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
|
1166
1160
|
|
|
1167
1161
|
// ../theme-core/src/cards/types.ts
|
|
1168
1162
|
import { z as z6 } from "zod";
|
|
1163
|
+
var cardVariantRoleValues = ["default", "alternative"];
|
|
1164
|
+
var boxlessCardVariantValue = "none";
|
|
1169
1165
|
var cardSpacingSchema = z6.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
|
|
1170
1166
|
var gradientDirectionSchema2 = z6.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
1167
|
+
var cardVariantRoleSchema = z6.enum(cardVariantRoleValues);
|
|
1168
|
+
var boxStylesCardVariantSchema = z6.enum([
|
|
1169
|
+
...cardVariantRoleValues,
|
|
1170
|
+
boxlessCardVariantValue
|
|
1171
|
+
]);
|
|
1171
1172
|
var cardBackgroundSchema = z6.discriminatedUnion("type", [
|
|
1172
1173
|
z6.object({ type: z6.literal("solid"), colorToken: themeColorTokenSchema }),
|
|
1173
1174
|
z6.object({
|
|
@@ -1182,6 +1183,24 @@ var cardBorderSchema = z6.object({
|
|
|
1182
1183
|
widthClass: z6.string(),
|
|
1183
1184
|
colorToken: themeColorTokenSchema
|
|
1184
1185
|
});
|
|
1186
|
+
var cardCornerValueSchema = z6.enum([
|
|
1187
|
+
"square",
|
|
1188
|
+
"soft",
|
|
1189
|
+
"rounded",
|
|
1190
|
+
"pill",
|
|
1191
|
+
"expressive"
|
|
1192
|
+
]);
|
|
1193
|
+
var cardAccentEdgeSchema = z6.object({
|
|
1194
|
+
edge: z6.enum(["left", "top", "right", "bottom"]),
|
|
1195
|
+
colorToken: themeColorTokenSchema,
|
|
1196
|
+
width: z6.enum(["thin", "medium", "thick", "heavy"])
|
|
1197
|
+
});
|
|
1198
|
+
var cardCornerRadiiSchema = z6.object({
|
|
1199
|
+
topLeft: cardCornerValueSchema.optional(),
|
|
1200
|
+
topRight: cardCornerValueSchema.optional(),
|
|
1201
|
+
bottomLeft: cardCornerValueSchema.optional(),
|
|
1202
|
+
bottomRight: cardCornerValueSchema.optional()
|
|
1203
|
+
});
|
|
1185
1204
|
var cardVariantSchema = z6.object({
|
|
1186
1205
|
id: z6.string(),
|
|
1187
1206
|
name: z6.string().min(1).max(20),
|
|
@@ -1190,6 +1209,8 @@ var cardVariantSchema = z6.object({
|
|
|
1190
1209
|
// Appearance (token-based)
|
|
1191
1210
|
background: cardBackgroundSchema,
|
|
1192
1211
|
spacing: cardSpacingSchema,
|
|
1212
|
+
// Optional foreground (card text) color, for cards on a strong fill.
|
|
1213
|
+
foregroundToken: themeColorTokenSchema.optional(),
|
|
1193
1214
|
// Optional overrides (uses theme defaults if not specified)
|
|
1194
1215
|
shadow: z6.object({
|
|
1195
1216
|
elevation: z6.enum(["none", "low", "medium", "high"]),
|
|
@@ -1197,8 +1218,12 @@ var cardVariantSchema = z6.object({
|
|
|
1197
1218
|
position: z6.enum(["bottom", "bottom-right"]).default("bottom")
|
|
1198
1219
|
}).optional(),
|
|
1199
1220
|
corners: z6.enum(["square", "soft", "rounded", "pill"]).optional(),
|
|
1221
|
+
// Per-corner radius override; wins over `corners` when set.
|
|
1222
|
+
cornerRadii: cardCornerRadiiSchema.optional(),
|
|
1200
1223
|
// Border (optional)
|
|
1201
|
-
border: cardBorderSchema.optional()
|
|
1224
|
+
border: cardBorderSchema.optional(),
|
|
1225
|
+
// Single accent edge; replaces `border` when set.
|
|
1226
|
+
accentEdge: cardAccentEdgeSchema.optional()
|
|
1202
1227
|
});
|
|
1203
1228
|
var cardSystemSchema = z6.object({
|
|
1204
1229
|
variants: z6.array(cardVariantSchema).min(1).max(3)
|
|
@@ -1219,11 +1244,13 @@ var accordionIconSchema = z7.enum([
|
|
|
1219
1244
|
// ⊕ becomes ⊖ (swap with fade)
|
|
1220
1245
|
]);
|
|
1221
1246
|
var accordionSystemSchema = z7.object({
|
|
1222
|
-
// Visual styling (solid color only - gradients can be added later if needed)
|
|
1247
|
+
// Visual styling (solid color only - gradients can be added later if needed).
|
|
1248
|
+
// null = no fill, so the accordion sits transparently on the section
|
|
1249
|
+
// surface (used by open, boxless "divided" looks).
|
|
1223
1250
|
background: z7.object({
|
|
1224
1251
|
type: z7.literal("solid"),
|
|
1225
1252
|
colorToken: themeColorTokenSchema
|
|
1226
|
-
}),
|
|
1253
|
+
}).nullable(),
|
|
1227
1254
|
// Spacing (padding inside items)
|
|
1228
1255
|
spacing: z7.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
|
|
1229
1256
|
// Border radius (null = inherit from theme.corners)
|
|
@@ -1250,8 +1277,16 @@ var accordionSystemSchema = z7.object({
|
|
|
1250
1277
|
// Trigger (question) styling
|
|
1251
1278
|
trigger: z7.object({
|
|
1252
1279
|
textColorToken: themeColorTokenSchema,
|
|
1253
|
-
fontWeight: z7.enum(["regular", "medium", "semibold", "bold"]).nullable()
|
|
1280
|
+
fontWeight: z7.enum(["regular", "medium", "semibold", "bold"]).nullable(),
|
|
1254
1281
|
// null = inherit from theme
|
|
1282
|
+
// Question typography. Defaults keep the historical body-font look; set
|
|
1283
|
+
// fontFamily 'heading' + a larger scale to give questions real presence.
|
|
1284
|
+
fontFamily: z7.enum(["body", "heading"]).optional(),
|
|
1285
|
+
// default 'body'
|
|
1286
|
+
fontScale: z7.enum(["body", "md", "lg"]).optional(),
|
|
1287
|
+
// default 'body'
|
|
1288
|
+
letterSpacing: z7.enum(["normal", "tight", "wide"]).optional(),
|
|
1289
|
+
textTransform: z7.enum(["none", "uppercase"]).optional()
|
|
1255
1290
|
}),
|
|
1256
1291
|
// Hover state styling
|
|
1257
1292
|
hover: z7.object({
|
|
@@ -1259,6 +1294,17 @@ var accordionSystemSchema = z7.object({
|
|
|
1259
1294
|
textColorToken: themeColorTokenSchema.optional(),
|
|
1260
1295
|
borderColorToken: themeColorTokenSchema.optional()
|
|
1261
1296
|
}),
|
|
1297
|
+
// Open-state emphasis: how an expanded item is visually rewarded. All
|
|
1298
|
+
// optional; omit for the historical "only the text recolors" behaviour.
|
|
1299
|
+
openState: z7.object({
|
|
1300
|
+
backgroundColorToken: themeColorTokenSchema.optional(),
|
|
1301
|
+
triggerColorToken: themeColorTokenSchema.optional(),
|
|
1302
|
+
accent: z7.object({
|
|
1303
|
+
edge: z7.enum(["left", "top", "bottom"]),
|
|
1304
|
+
colorToken: themeColorTokenSchema,
|
|
1305
|
+
thickness: z7.enum(["thin", "medium", "thick"])
|
|
1306
|
+
}).optional()
|
|
1307
|
+
}).optional(),
|
|
1262
1308
|
// Content (answer) styling
|
|
1263
1309
|
content: z7.object({
|
|
1264
1310
|
textColorToken: themeColorTokenSchema
|
|
@@ -1581,79 +1627,190 @@ var componentShadowSchema = z14.object({
|
|
|
1581
1627
|
elevation: z14.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
|
|
1582
1628
|
});
|
|
1583
1629
|
|
|
1584
|
-
// ../theme-core/src/
|
|
1630
|
+
// ../theme-core/src/site-styles/logoBranding.ts
|
|
1585
1631
|
import { z as z15 } from "zod";
|
|
1586
|
-
var
|
|
1632
|
+
var logoTextConfidenceValues = ["low", "medium", "high"];
|
|
1633
|
+
var logoAssetShapeValues = [
|
|
1634
|
+
"none",
|
|
1635
|
+
"horizontal",
|
|
1636
|
+
"square",
|
|
1637
|
+
"portrait",
|
|
1638
|
+
"tall"
|
|
1639
|
+
];
|
|
1640
|
+
var logoKindValues = [
|
|
1641
|
+
"mark",
|
|
1642
|
+
"wordmark",
|
|
1643
|
+
"lockup",
|
|
1644
|
+
"badge",
|
|
1645
|
+
"stacked-wordmark",
|
|
1646
|
+
"unknown"
|
|
1647
|
+
];
|
|
1648
|
+
var logoDensityValues = ["simple", "detailed", "unknown"];
|
|
1649
|
+
var logoContainsTextSchema = z15.discriminatedUnion("kind", [
|
|
1650
|
+
z15.object({
|
|
1651
|
+
kind: z15.literal("contains-text"),
|
|
1652
|
+
confidence: z15.enum(logoTextConfidenceValues),
|
|
1653
|
+
text: z15.string().trim().min(1).max(200).optional()
|
|
1654
|
+
}),
|
|
1655
|
+
z15.object({
|
|
1656
|
+
kind: z15.literal("no-text"),
|
|
1657
|
+
confidence: z15.enum(logoTextConfidenceValues)
|
|
1658
|
+
}),
|
|
1659
|
+
z15.object({
|
|
1660
|
+
kind: z15.literal("unknown"),
|
|
1661
|
+
reason: z15.enum([
|
|
1662
|
+
"analysis-unavailable",
|
|
1663
|
+
"unsupported-file",
|
|
1664
|
+
"low-confidence"
|
|
1665
|
+
])
|
|
1666
|
+
})
|
|
1667
|
+
]);
|
|
1668
|
+
var logoAnalysisSourceSchema = z15.discriminatedUnion("kind", [
|
|
1669
|
+
z15.object({ kind: z15.literal("none") }),
|
|
1670
|
+
z15.object({
|
|
1671
|
+
kind: z15.literal("deterministic"),
|
|
1672
|
+
reason: z15.enum(["dimensions", "fallback"])
|
|
1673
|
+
}),
|
|
1674
|
+
z15.object({
|
|
1675
|
+
kind: z15.literal("llm"),
|
|
1676
|
+
model: z15.literal("gpt-5.4-mini"),
|
|
1677
|
+
analyzedAt: z15.string().trim().min(1).max(80).optional()
|
|
1678
|
+
}),
|
|
1679
|
+
z15.object({ kind: z15.literal("manual-override") })
|
|
1680
|
+
]);
|
|
1681
|
+
var logoFactsSchema = z15.object({
|
|
1682
|
+
shape: z15.enum(logoAssetShapeValues),
|
|
1683
|
+
containsText: logoContainsTextSchema,
|
|
1684
|
+
kind: z15.enum(logoKindValues),
|
|
1685
|
+
density: z15.enum(logoDensityValues),
|
|
1686
|
+
source: logoAnalysisSourceSchema
|
|
1687
|
+
});
|
|
1688
|
+
var brandDisplayModeValues = [
|
|
1689
|
+
"auto",
|
|
1690
|
+
"logo-only",
|
|
1691
|
+
"logo-plus-title",
|
|
1692
|
+
"title-only"
|
|
1693
|
+
];
|
|
1694
|
+
var logoAccommodationPatternValues = [
|
|
1695
|
+
"title-only",
|
|
1696
|
+
"inline-logo-only",
|
|
1697
|
+
"inline-wordmark",
|
|
1698
|
+
"inline-mark-with-title",
|
|
1699
|
+
"logo-plate",
|
|
1700
|
+
"centered-badge",
|
|
1701
|
+
"popout-badge",
|
|
1702
|
+
"centered-masthead",
|
|
1703
|
+
"hero-badge"
|
|
1704
|
+
];
|
|
1705
|
+
var logoSizePolicyValues = [
|
|
1706
|
+
"auto",
|
|
1707
|
+
"compact",
|
|
1708
|
+
"standard",
|
|
1709
|
+
"generous",
|
|
1710
|
+
"display"
|
|
1711
|
+
];
|
|
1712
|
+
|
|
1713
|
+
// ../theme-core/src/site-styles/rawStyleFields.ts
|
|
1714
|
+
var themeV2RuntimeStyleFieldNames = [
|
|
1715
|
+
"_frameStyles",
|
|
1716
|
+
"_sectionStyles",
|
|
1717
|
+
"_containerStyles",
|
|
1718
|
+
"_cardStyles",
|
|
1719
|
+
// styleGroup is legacy runtime transition wiring rather than a nested
|
|
1720
|
+
// override object, but normal editors should still never see it directly.
|
|
1721
|
+
"styleGroup"
|
|
1722
|
+
];
|
|
1723
|
+
var themeV2BlockSpecificRawStyleFieldNames = [
|
|
1724
|
+
"_contentCardStyles",
|
|
1725
|
+
"_heroLayoutStyles",
|
|
1726
|
+
"_textCardStyles"
|
|
1727
|
+
];
|
|
1728
|
+
var themeV2NormalEditorRawStyleFieldNames = [
|
|
1729
|
+
...themeV2RuntimeStyleFieldNames,
|
|
1730
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
1731
|
+
];
|
|
1732
|
+
var themeV2NormalEditorRawStyleFieldNameSet = new Set(
|
|
1733
|
+
themeV2NormalEditorRawStyleFieldNames
|
|
1734
|
+
);
|
|
1735
|
+
var themeV2CompilerOwnedFieldNames = [
|
|
1736
|
+
...themeV2RuntimeStyleFieldNames,
|
|
1737
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
1738
|
+
];
|
|
1739
|
+
var pageDesignEditorBackgroundOverrideOwner = "page-design-editor";
|
|
1740
|
+
|
|
1741
|
+
// ../theme-core/src/utils/tokenOrColor.ts
|
|
1742
|
+
import { z as z16 } from "zod";
|
|
1743
|
+
var tokenOrCssColorValueSchema = z16.string();
|
|
1587
1744
|
|
|
1588
1745
|
// ../theme-core/src/schema.ts
|
|
1589
|
-
var axesSchema =
|
|
1590
|
-
tone:
|
|
1591
|
-
energy:
|
|
1592
|
-
density:
|
|
1593
|
-
mediaBias:
|
|
1594
|
-
conversionBias:
|
|
1595
|
-
motion:
|
|
1596
|
-
});
|
|
1597
|
-
var colourHexString =
|
|
1598
|
-
var paletteColorSchema =
|
|
1599
|
-
name:
|
|
1746
|
+
var axesSchema = z17.object({
|
|
1747
|
+
tone: z17.enum(["minimal", "classic", "bold"]),
|
|
1748
|
+
energy: z17.enum(["calm", "vibrant"]),
|
|
1749
|
+
density: z17.enum(["airy", "regular", "compact"]),
|
|
1750
|
+
mediaBias: z17.enum(["text", "media", "mixed"]),
|
|
1751
|
+
conversionBias: z17.enum(["low", "med", "high"]),
|
|
1752
|
+
motion: z17.enum(["subtle", "standard", "expressive"])
|
|
1753
|
+
});
|
|
1754
|
+
var colourHexString = z17.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
|
|
1755
|
+
var paletteColorSchema = z17.object({
|
|
1756
|
+
name: z17.string().min(1),
|
|
1600
1757
|
hex: colourHexString
|
|
1601
1758
|
});
|
|
1602
|
-
var paletteMetaSchema =
|
|
1603
|
-
mode:
|
|
1759
|
+
var paletteMetaSchema = z17.object({
|
|
1760
|
+
mode: z17.enum(["light", "dark"])
|
|
1604
1761
|
});
|
|
1605
|
-
var paletteSchema =
|
|
1606
|
-
colors:
|
|
1762
|
+
var paletteSchema = z17.object({
|
|
1763
|
+
colors: z17.array(paletteColorSchema),
|
|
1607
1764
|
meta: paletteMetaSchema
|
|
1608
1765
|
});
|
|
1609
|
-
var typographyStyleSchema =
|
|
1610
|
-
family:
|
|
1611
|
-
weight:
|
|
1612
|
-
letterSpacing:
|
|
1613
|
-
lineHeight:
|
|
1766
|
+
var typographyStyleSchema = z17.object({
|
|
1767
|
+
family: z17.string().min(1),
|
|
1768
|
+
weight: z17.enum(["light", "regular", "medium", "semibold", "bold"]),
|
|
1769
|
+
letterSpacing: z17.enum(["tight", "normal", "loose"]),
|
|
1770
|
+
lineHeight: z17.enum(["normal", "relaxed", "loose"])
|
|
1614
1771
|
});
|
|
1615
1772
|
var bodyTypographyStyleSchema = typographyStyleSchema.extend({
|
|
1616
|
-
size:
|
|
1773
|
+
size: z17.enum(["md", "lg", "xl"])
|
|
1617
1774
|
});
|
|
1618
|
-
var headingSizeSchema =
|
|
1619
|
-
var headingTypographyOverridesSchema =
|
|
1620
|
-
weight:
|
|
1621
|
-
letterSpacing:
|
|
1775
|
+
var headingSizeSchema = z17.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
|
|
1776
|
+
var headingTypographyOverridesSchema = z17.object({
|
|
1777
|
+
weight: z17.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
|
|
1778
|
+
letterSpacing: z17.enum(["tight", "normal", "loose"]).nullable().optional(),
|
|
1622
1779
|
size: headingSizeSchema.nullable().optional(),
|
|
1623
|
-
lineHeight:
|
|
1624
|
-
italic:
|
|
1780
|
+
lineHeight: z17.enum(["normal", "relaxed", "loose"]).nullable().optional(),
|
|
1781
|
+
italic: z17.boolean().nullable().optional(),
|
|
1625
1782
|
colorToken: themeColorTokenSchema.nullable().optional()
|
|
1626
1783
|
});
|
|
1627
1784
|
var headingTypographyStyleSchema = typographyStyleSchema.extend({
|
|
1628
|
-
case:
|
|
1629
|
-
italic:
|
|
1785
|
+
case: z17.enum(["uppercase", "normal", "smallCaps"]).nullable(),
|
|
1786
|
+
italic: z17.boolean().nullable(),
|
|
1630
1787
|
colorToken: themeColorTokenSchema.nullable().optional()
|
|
1631
1788
|
});
|
|
1632
|
-
var proseLinkUnderlineStyleSchema =
|
|
1633
|
-
var proseLinkUnderlineThicknessSchema =
|
|
1789
|
+
var proseLinkUnderlineStyleSchema = z17.enum(["solid", "dotted", "dashed"]);
|
|
1790
|
+
var proseLinkUnderlineThicknessSchema = z17.enum([
|
|
1634
1791
|
"auto",
|
|
1635
1792
|
"fromFont",
|
|
1636
1793
|
"thin",
|
|
1637
1794
|
"medium",
|
|
1638
1795
|
"thick"
|
|
1639
1796
|
]);
|
|
1640
|
-
var proseLinkUnderlineOffsetSchema =
|
|
1797
|
+
var proseLinkUnderlineOffsetSchema = z17.enum([
|
|
1641
1798
|
"auto",
|
|
1642
1799
|
"tight",
|
|
1643
1800
|
"normal",
|
|
1644
1801
|
"loose"
|
|
1645
1802
|
]);
|
|
1646
|
-
var proseLinkStyleSchema =
|
|
1803
|
+
var proseLinkStyleSchema = z17.object({
|
|
1647
1804
|
colorToken: themeColorTokenSchema.optional(),
|
|
1648
1805
|
hoverColorToken: themeColorTokenSchema.optional(),
|
|
1649
|
-
underline:
|
|
1806
|
+
underline: z17.boolean().optional(),
|
|
1650
1807
|
decorationColorToken: themeColorTokenSchema.optional(),
|
|
1651
1808
|
hoverDecorationColorToken: themeColorTokenSchema.optional(),
|
|
1652
1809
|
underlineStyle: proseLinkUnderlineStyleSchema.optional(),
|
|
1653
1810
|
underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
|
|
1654
1811
|
underlineOffset: proseLinkUnderlineOffsetSchema.optional()
|
|
1655
1812
|
});
|
|
1656
|
-
var semanticSpacingSchema =
|
|
1813
|
+
var semanticSpacingSchema = z17.enum([
|
|
1657
1814
|
"none",
|
|
1658
1815
|
"compact",
|
|
1659
1816
|
"cozy",
|
|
@@ -1661,91 +1818,108 @@ var semanticSpacingSchema = z16.enum([
|
|
|
1661
1818
|
"comfortable",
|
|
1662
1819
|
"spacious"
|
|
1663
1820
|
]);
|
|
1664
|
-
var boxRoundedSchema =
|
|
1665
|
-
var boxBackgroundOverlaySchema =
|
|
1666
|
-
type:
|
|
1821
|
+
var boxRoundedSchema = z17.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
|
|
1822
|
+
var boxBackgroundOverlaySchema = z17.object({
|
|
1823
|
+
type: z17.enum(["none", "color", "gradient"]).nullable().optional(),
|
|
1667
1824
|
color: tokenOrCssColorValueSchema.nullable().optional(),
|
|
1668
|
-
gradient:
|
|
1669
|
-
opacity:
|
|
1825
|
+
gradient: z17.string().nullable().optional(),
|
|
1826
|
+
opacity: z17.number().min(0).max(1).nullable().optional()
|
|
1670
1827
|
});
|
|
1671
|
-
var boxBackgroundSchema =
|
|
1672
|
-
type:
|
|
1828
|
+
var boxBackgroundSchema = z17.object({
|
|
1829
|
+
type: z17.enum(["color", "gradient", "image"]).optional(),
|
|
1830
|
+
contentOwner: z17.literal(pageDesignEditorBackgroundOverrideOwner).optional(),
|
|
1673
1831
|
color: tokenOrCssColorValueSchema.nullable().optional(),
|
|
1674
|
-
gradient:
|
|
1832
|
+
gradient: z17.string().nullable().optional(),
|
|
1833
|
+
gradientPresetId: z17.string().min(1).nullable().optional(),
|
|
1675
1834
|
image: mediaSchema.nullable().optional(),
|
|
1676
|
-
objectFit:
|
|
1677
|
-
scale:
|
|
1678
|
-
position:
|
|
1679
|
-
opacity:
|
|
1680
|
-
motion:
|
|
1835
|
+
objectFit: z17.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
|
|
1836
|
+
scale: z17.string().nullable().optional(),
|
|
1837
|
+
position: z17.string().nullable().optional(),
|
|
1838
|
+
opacity: z17.number().min(0).max(1).nullable().optional(),
|
|
1839
|
+
motion: z17.enum(["static", "fixed-frame"]).nullable().optional(),
|
|
1681
1840
|
overlay: boxBackgroundOverlaySchema.nullable().optional(),
|
|
1682
1841
|
textColor: tokenOrCssColorValueSchema.nullable().optional(),
|
|
1683
1842
|
headingColor: tokenOrCssColorValueSchema.nullable().optional()
|
|
1684
1843
|
});
|
|
1685
|
-
var noHeadingDecorationSchema =
|
|
1686
|
-
family:
|
|
1687
|
-
placement: z16.literal("none")
|
|
1844
|
+
var noHeadingDecorationSchema = z17.object({
|
|
1845
|
+
family: z17.literal("none")
|
|
1688
1846
|
});
|
|
1689
|
-
var visibleHeadingDecorationSchema =
|
|
1690
|
-
family:
|
|
1691
|
-
|
|
1692
|
-
colorToken: z16.enum(headingDecorationColorTokenValues).optional()
|
|
1847
|
+
var visibleHeadingDecorationSchema = z17.object({
|
|
1848
|
+
family: z17.enum(visibleHeadingDecorationFamilyValues),
|
|
1849
|
+
colorToken: z17.enum(headingDecorationColorTokenValues).optional()
|
|
1693
1850
|
});
|
|
1694
|
-
var headingDecorationSchema =
|
|
1851
|
+
var headingDecorationSchema = z17.union([
|
|
1695
1852
|
noHeadingDecorationSchema,
|
|
1696
1853
|
visibleHeadingDecorationSchema
|
|
1697
1854
|
]);
|
|
1698
|
-
var
|
|
1699
|
-
|
|
1700
|
-
|
|
1701
|
-
|
|
1702
|
-
|
|
1855
|
+
var headingDecorationOverrideSchema = z17.union([
|
|
1856
|
+
z17.enum(headingDecorationOverrideValues),
|
|
1857
|
+
// Legacy authoring value from the earlier model. In the render-time model
|
|
1858
|
+
// "on" cannot force a fragment into a block, so it is equivalent to default.
|
|
1859
|
+
z17.literal("on").transform(() => "site-default")
|
|
1860
|
+
]);
|
|
1861
|
+
var accordionIconTreatmentSchema = z17.object({
|
|
1862
|
+
iconSet: z17.enum(accordionIconSetValues),
|
|
1863
|
+
colorToken: z17.enum(accordionIconColorTokenValues),
|
|
1864
|
+
openColorToken: z17.enum(accordionIconColorTokenValues).optional(),
|
|
1865
|
+
motion: z17.enum(accordionIconMotionValues)
|
|
1703
1866
|
});
|
|
1704
|
-
var sectionStylesOverrideSchema =
|
|
1867
|
+
var sectionStylesOverrideSchema = z17.object({
|
|
1705
1868
|
background: boxBackgroundSchema.nullable().optional(),
|
|
1706
1869
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
1707
|
-
minHeight:
|
|
1708
|
-
tileTreatment:
|
|
1709
|
-
eventListTreatment:
|
|
1710
|
-
eyebrowTreatment:
|
|
1870
|
+
minHeight: z17.enum(["none", "banner", "hero", "immersive"]).nullable().optional(),
|
|
1871
|
+
tileTreatment: z17.enum(tileTreatmentValues).nullable().optional(),
|
|
1872
|
+
eventListTreatment: z17.enum(eventListTreatmentValues).nullable().optional(),
|
|
1873
|
+
eyebrowTreatment: z17.enum(eyebrowTreatmentValues).nullable().optional(),
|
|
1711
1874
|
headingDecoration: headingDecorationSchema.nullable().optional(),
|
|
1712
|
-
// Author-level
|
|
1713
|
-
//
|
|
1714
|
-
|
|
1875
|
+
// Author-level opt-out consumed by render-time theme projection. Persisted
|
|
1876
|
+
// content may also carry legacy `headingDecoration` / `on` values; those are
|
|
1877
|
+
// tolerated at the schema boundary but the renderer treats the compiled theme
|
|
1878
|
+
// as the only source of the resolved signature.
|
|
1879
|
+
headingDecorationOverride: headingDecorationOverrideSchema.nullable().optional(),
|
|
1715
1880
|
accordionIconTreatment: accordionIconTreatmentSchema.nullable().optional()
|
|
1716
1881
|
});
|
|
1717
|
-
var containerStylesOverrideSchema =
|
|
1882
|
+
var containerStylesOverrideSchema = z17.object({
|
|
1718
1883
|
background: boxBackgroundSchema.nullable().optional(),
|
|
1719
1884
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
1720
|
-
raised:
|
|
1885
|
+
raised: z17.boolean().nullable().optional(),
|
|
1721
1886
|
rounded: boxRoundedSchema.nullable().optional(),
|
|
1722
|
-
fullWidth:
|
|
1887
|
+
fullWidth: z17.boolean().nullable().optional()
|
|
1723
1888
|
});
|
|
1724
|
-
var cardBorderOverrideSchema =
|
|
1725
|
-
enabled:
|
|
1726
|
-
width:
|
|
1889
|
+
var cardBorderOverrideSchema = z17.object({
|
|
1890
|
+
enabled: z17.boolean().nullable().optional(),
|
|
1891
|
+
width: z17.enum(["none", "1", "2", "3"]).nullable().optional(),
|
|
1727
1892
|
colorToken: themeColorTokenSchema.nullable().optional()
|
|
1728
1893
|
});
|
|
1729
|
-
var cardStylesOverrideSchema =
|
|
1894
|
+
var cardStylesOverrideSchema = z17.object({
|
|
1730
1895
|
background: boxBackgroundSchema.nullable().optional(),
|
|
1731
1896
|
border: cardBorderOverrideSchema.nullable().optional(),
|
|
1732
1897
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
1733
|
-
raised:
|
|
1898
|
+
raised: z17.boolean().nullable().optional(),
|
|
1734
1899
|
rounded: boxRoundedSchema.nullable().optional(),
|
|
1735
|
-
treatment:
|
|
1736
|
-
|
|
1737
|
-
|
|
1900
|
+
treatment: z17.enum([
|
|
1901
|
+
"accent-quote",
|
|
1902
|
+
"editorial-rule",
|
|
1903
|
+
"soft-panel",
|
|
1904
|
+
"editorial-serif-quote",
|
|
1905
|
+
"editorial-open"
|
|
1906
|
+
]).nullable().optional(),
|
|
1907
|
+
// Which site-style card variant the card adopts (emits a `.card-{id}` class).
|
|
1908
|
+
// 'none' is boxless. Driven by the block look via testimonialCardTreatment.
|
|
1909
|
+
cardVariant: boxStylesCardVariantSchema.nullable().optional()
|
|
1910
|
+
});
|
|
1911
|
+
var blockStyleOverridesSchema = z17.object({
|
|
1738
1912
|
sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
|
|
1739
1913
|
containerStyles: containerStylesOverrideSchema.nullable().optional(),
|
|
1740
1914
|
cardStyles: cardStylesOverrideSchema.nullable().optional()
|
|
1741
1915
|
});
|
|
1742
|
-
var blockThemeOverrideSchema =
|
|
1743
|
-
typography:
|
|
1916
|
+
var blockThemeOverrideSchema = z17.object({
|
|
1917
|
+
typography: z17.object({
|
|
1744
1918
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
1745
1919
|
}).optional(),
|
|
1746
1920
|
styles: blockStyleOverridesSchema.optional()
|
|
1747
1921
|
});
|
|
1748
|
-
var typographyScaleSchema =
|
|
1922
|
+
var typographyScaleSchema = z17.enum([
|
|
1749
1923
|
// New intuitive names
|
|
1750
1924
|
"compact",
|
|
1751
1925
|
// ratio 1.2 (was minorThird)
|
|
@@ -1758,9 +1932,9 @@ var typographyScaleSchema = z16.enum([
|
|
|
1758
1932
|
"majorThird",
|
|
1759
1933
|
"perfectFourth"
|
|
1760
1934
|
]);
|
|
1761
|
-
var typographySchema =
|
|
1935
|
+
var typographySchema = z17.object({
|
|
1762
1936
|
body: bodyTypographyStyleSchema,
|
|
1763
|
-
headings:
|
|
1937
|
+
headings: z17.object({
|
|
1764
1938
|
default: headingTypographyStyleSchema,
|
|
1765
1939
|
h1: headingTypographyOverridesSchema,
|
|
1766
1940
|
h2: headingTypographyOverridesSchema,
|
|
@@ -1773,41 +1947,41 @@ var typographySchema = z16.object({
|
|
|
1773
1947
|
scale: typographyScaleSchema,
|
|
1774
1948
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
1775
1949
|
});
|
|
1776
|
-
var spaceSchema =
|
|
1777
|
-
var corners =
|
|
1778
|
-
var shadow =
|
|
1779
|
-
elevation:
|
|
1780
|
-
softness:
|
|
1781
|
-
position:
|
|
1950
|
+
var spaceSchema = z17.enum(["comfortable", "standard", "dense"]);
|
|
1951
|
+
var corners = z17.enum(["square", "soft", "rounded", "pill"]);
|
|
1952
|
+
var shadow = z17.object({
|
|
1953
|
+
elevation: z17.enum(["none", "low", "medium", "high"]),
|
|
1954
|
+
softness: z17.enum(["crisp", "soft", "hard"]).nullable(),
|
|
1955
|
+
position: z17.enum(["bottom", "bottom-right"]).default("bottom")
|
|
1782
1956
|
});
|
|
1783
|
-
var border =
|
|
1784
|
-
width:
|
|
1785
|
-
style:
|
|
1957
|
+
var border = z17.object({
|
|
1958
|
+
width: z17.enum(["none", "hairline", "thin", "thick"]),
|
|
1959
|
+
style: z17.enum(["solid", "dashed"])
|
|
1786
1960
|
});
|
|
1787
|
-
var motion =
|
|
1788
|
-
level:
|
|
1789
|
-
easing:
|
|
1961
|
+
var motion = z17.object({
|
|
1962
|
+
level: z17.enum(["off", "low", "medium", "high"]),
|
|
1963
|
+
easing: z17.enum(["standard", "snappy", "gentle"]).nullable()
|
|
1790
1964
|
});
|
|
1791
|
-
var buttonStyle =
|
|
1965
|
+
var buttonStyle = z17.object({
|
|
1792
1966
|
shape: corners
|
|
1793
1967
|
// Used for --radius-control CSS variable
|
|
1794
1968
|
});
|
|
1795
|
-
var cardStyle =
|
|
1796
|
-
elevation:
|
|
1797
|
-
border:
|
|
1969
|
+
var cardStyle = z17.object({
|
|
1970
|
+
elevation: z17.enum(["none", "low", "medium", "high"]),
|
|
1971
|
+
border: z17.enum(["none", "subtle", "defined"]),
|
|
1798
1972
|
shape: corners,
|
|
1799
|
-
headerStyle:
|
|
1800
|
-
mediaTreatment:
|
|
1973
|
+
headerStyle: z17.enum(["plain", "accentBar", "subtleBg"]).nullable(),
|
|
1974
|
+
mediaTreatment: z17.enum(["square", "rounded", "bleed"]).nullable()
|
|
1801
1975
|
});
|
|
1802
|
-
var inputStyle =
|
|
1976
|
+
var inputStyle = z17.object({
|
|
1803
1977
|
shape: corners,
|
|
1804
|
-
border:
|
|
1805
|
-
focus:
|
|
1806
|
-
label:
|
|
1978
|
+
border: z17.enum(["subtle", "defined", "underline"]),
|
|
1979
|
+
focus: z17.enum(["glow", "ring", "underline"]),
|
|
1980
|
+
label: z17.enum(["inside", "above"])
|
|
1807
1981
|
});
|
|
1808
|
-
var headerVariant =
|
|
1809
|
-
var headerPositioning =
|
|
1810
|
-
var headerNavStyle =
|
|
1982
|
+
var headerVariant = z17.enum(["classic", "centered", "transparent", "floating"]);
|
|
1983
|
+
var headerPositioning = z17.enum(["static", "sticky", "fixed"]);
|
|
1984
|
+
var headerNavStyle = z17.enum([
|
|
1811
1985
|
"minimal",
|
|
1812
1986
|
"underline",
|
|
1813
1987
|
"underline-grow",
|
|
@@ -1816,54 +1990,57 @@ var headerNavStyle = z16.enum([
|
|
|
1816
1990
|
"frosted",
|
|
1817
1991
|
"solid"
|
|
1818
1992
|
]);
|
|
1819
|
-
var navFontWeight =
|
|
1820
|
-
var headerMaxWidth =
|
|
1821
|
-
var headerContainerSchema =
|
|
1822
|
-
rounded:
|
|
1823
|
-
border:
|
|
1824
|
-
shadow:
|
|
1825
|
-
padding:
|
|
1826
|
-
tint:
|
|
1827
|
-
opacity:
|
|
1993
|
+
var navFontWeight = z17.enum(["regular", "medium", "semibold", "bold"]);
|
|
1994
|
+
var headerMaxWidth = z17.enum(["container", "full"]);
|
|
1995
|
+
var headerContainerSchema = z17.object({
|
|
1996
|
+
rounded: z17.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
|
|
1997
|
+
border: z17.boolean().default(true),
|
|
1998
|
+
shadow: z17.boolean().default(true),
|
|
1999
|
+
padding: z17.enum(["sm", "md", "lg"]).default("md"),
|
|
2000
|
+
tint: z17.string().nullable().optional(),
|
|
2001
|
+
opacity: z17.number().min(0).max(1).default(0.12)
|
|
1828
2002
|
}).optional();
|
|
1829
2003
|
var headerBorderSchema = componentBorderSchema.extend({
|
|
1830
|
-
position:
|
|
2004
|
+
position: z17.enum(["bottom", "top", "both", "none"]).default("bottom")
|
|
1831
2005
|
}).optional();
|
|
1832
|
-
var logoStyleSchema =
|
|
1833
|
-
fontFamily:
|
|
1834
|
-
letterSpacing:
|
|
1835
|
-
gradient:
|
|
2006
|
+
var logoStyleSchema = z17.object({
|
|
2007
|
+
fontFamily: z17.enum(["heading", "body"]).default("heading"),
|
|
2008
|
+
letterSpacing: z17.enum(["normal", "wide", "wider", "widest"]).default("normal"),
|
|
2009
|
+
gradient: z17.boolean().default(false),
|
|
2010
|
+
brandDisplay: z17.enum(brandDisplayModeValues).optional(),
|
|
2011
|
+
size: z17.enum(logoSizePolicyValues).optional(),
|
|
2012
|
+
accommodation: z17.enum(logoAccommodationPatternValues).optional()
|
|
1836
2013
|
}).optional();
|
|
1837
|
-
var headerLogoTextSchema =
|
|
1838
|
-
mobileWrapLines:
|
|
1839
|
-
mobileMaxWidth:
|
|
1840
|
-
hideOnShrink:
|
|
2014
|
+
var headerLogoTextSchema = z17.object({
|
|
2015
|
+
mobileWrapLines: z17.union([z17.literal(1), z17.literal(2)]).optional(),
|
|
2016
|
+
mobileMaxWidth: z17.enum(["xs", "sm", "md"]).optional(),
|
|
2017
|
+
hideOnShrink: z17.boolean().optional()
|
|
1841
2018
|
}).optional();
|
|
1842
|
-
var navEffectsSchema =
|
|
1843
|
-
underlineGradient:
|
|
1844
|
-
glow:
|
|
1845
|
-
glowColor:
|
|
1846
|
-
neumorphic:
|
|
2019
|
+
var navEffectsSchema = z17.object({
|
|
2020
|
+
underlineGradient: z17.boolean().default(false),
|
|
2021
|
+
glow: z17.boolean().default(false),
|
|
2022
|
+
glowColor: z17.string().optional(),
|
|
2023
|
+
neumorphic: z17.boolean().default(false)
|
|
1847
2024
|
}).optional();
|
|
1848
|
-
var dropdownStyleSchema =
|
|
2025
|
+
var dropdownStyleSchema = z17.object({
|
|
1849
2026
|
// Container styling
|
|
1850
2027
|
background: themeColorTokenSchema.default("surface"),
|
|
1851
2028
|
textColor: themeColorTokenSchema.default("text"),
|
|
1852
2029
|
borderColor: themeColorTokenSchema.nullable().default("border"),
|
|
1853
|
-
shadow:
|
|
1854
|
-
borderRadius:
|
|
2030
|
+
shadow: z17.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
2031
|
+
borderRadius: z17.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
1855
2032
|
// Link hover states (explicit control)
|
|
1856
2033
|
hoverBackground: themeColorTokenSchema.nullable().optional(),
|
|
1857
2034
|
hoverTextColor: themeColorTokenSchema.nullable().optional(),
|
|
1858
2035
|
// Typography
|
|
1859
|
-
textTransform:
|
|
1860
|
-
letterSpacing:
|
|
1861
|
-
fontWeight:
|
|
2036
|
+
textTransform: z17.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
2037
|
+
letterSpacing: z17.enum(["normal", "wide", "wider"]).default("normal"),
|
|
2038
|
+
fontWeight: z17.enum(["regular", "medium", "semibold", "bold"]).optional(),
|
|
1862
2039
|
// optional = inherit from navWeight
|
|
1863
|
-
textSize:
|
|
2040
|
+
textSize: z17.enum(["xs", "sm", "base", "lg"]).optional()
|
|
1864
2041
|
// optional = no override (browser default)
|
|
1865
2042
|
}).optional();
|
|
1866
|
-
var headerCtaGapSchema =
|
|
2043
|
+
var headerCtaGapSchema = z17.enum([
|
|
1867
2044
|
"none",
|
|
1868
2045
|
"tight",
|
|
1869
2046
|
"compact",
|
|
@@ -1871,7 +2048,7 @@ var headerCtaGapSchema = z16.enum([
|
|
|
1871
2048
|
"relaxed",
|
|
1872
2049
|
"spacious"
|
|
1873
2050
|
]);
|
|
1874
|
-
var headerCtaTreatmentSchema =
|
|
2051
|
+
var headerCtaTreatmentSchema = z17.enum([
|
|
1875
2052
|
"default",
|
|
1876
2053
|
"primary",
|
|
1877
2054
|
"secondary",
|
|
@@ -1879,22 +2056,22 @@ var headerCtaTreatmentSchema = z16.enum([
|
|
|
1879
2056
|
"outline",
|
|
1880
2057
|
"ghost"
|
|
1881
2058
|
]);
|
|
1882
|
-
var navContainerSchema =
|
|
1883
|
-
type:
|
|
1884
|
-
tint:
|
|
1885
|
-
opacity:
|
|
2059
|
+
var navContainerSchema = z17.object({
|
|
2060
|
+
type: z17.enum(["none", "pill", "glass"]).default("none"),
|
|
2061
|
+
tint: z17.string().nullable().optional(),
|
|
2062
|
+
opacity: z17.number().min(0).max(1).default(0.15)
|
|
1886
2063
|
}).default({ type: "none", tint: null, opacity: 0.15 });
|
|
1887
|
-
var headerBackgroundSchema =
|
|
1888
|
-
type:
|
|
2064
|
+
var headerBackgroundSchema = z17.object({
|
|
2065
|
+
type: z17.enum(["color", "gradient", "image"]),
|
|
1889
2066
|
color: tokenOrCssColorValueSchema.nullable().optional(),
|
|
1890
2067
|
gradient: gradientConfigSchema.nullable().optional(),
|
|
1891
2068
|
image: mediaSchema.nullable().optional(),
|
|
1892
2069
|
textColor: tokenOrCssColorValueSchema.nullable().optional()
|
|
1893
2070
|
});
|
|
1894
|
-
var headerSchema =
|
|
2071
|
+
var headerSchema = z17.object({
|
|
1895
2072
|
variant: headerVariant,
|
|
1896
2073
|
positioning: headerPositioning,
|
|
1897
|
-
shrinkOnScroll:
|
|
2074
|
+
shrinkOnScroll: z17.boolean(),
|
|
1898
2075
|
maxWidth: headerMaxWidth,
|
|
1899
2076
|
logoOverride: mediaSchema.nullable().optional(),
|
|
1900
2077
|
background: headerBackgroundSchema.default({
|
|
@@ -1924,16 +2101,16 @@ var headerSchema = z16.object({
|
|
|
1924
2101
|
// Optional theme-level CTA variant for header/nav CTA buttons.
|
|
1925
2102
|
// Internal runtime bridge for the block renderer; prefer ctaTreatment in
|
|
1926
2103
|
// authored Theme V2 concepts.
|
|
1927
|
-
ctaVariant:
|
|
2104
|
+
ctaVariant: z17.string().min(1).optional(),
|
|
1928
2105
|
// Dropdown menu styling (nav dropdowns and mobile drawer)
|
|
1929
2106
|
dropdownStyle: dropdownStyleSchema
|
|
1930
2107
|
});
|
|
1931
|
-
var footerVariant =
|
|
1932
|
-
var footerMaxWidth =
|
|
1933
|
-
var footerMode =
|
|
1934
|
-
var footerNavLayoutMode =
|
|
1935
|
-
var footerNavLayoutAlign =
|
|
1936
|
-
var footerSpacing =
|
|
2108
|
+
var footerVariant = z17.enum(["simple", "columns", "split"]);
|
|
2109
|
+
var footerMaxWidth = z17.enum(["container", "full"]);
|
|
2110
|
+
var footerMode = z17.enum(["default", "blocks", "default+blocks", "none"]);
|
|
2111
|
+
var footerNavLayoutMode = z17.enum(["stack", "inline", "inline-wrap"]);
|
|
2112
|
+
var footerNavLayoutAlign = z17.enum(["start", "center", "end", "space-between"]);
|
|
2113
|
+
var footerSpacing = z17.enum([
|
|
1937
2114
|
"none",
|
|
1938
2115
|
"tight",
|
|
1939
2116
|
"compact",
|
|
@@ -1941,44 +2118,44 @@ var footerSpacing = z16.enum([
|
|
|
1941
2118
|
"relaxed",
|
|
1942
2119
|
"spacious"
|
|
1943
2120
|
]);
|
|
1944
|
-
var footerLogoPlacement =
|
|
1945
|
-
var footerLogoSize =
|
|
1946
|
-
var footerLogoMaxHeight =
|
|
1947
|
-
var footerBottomTextLinkStyleSchema =
|
|
2121
|
+
var footerLogoPlacement = z17.enum(["left", "right", "above", "below"]);
|
|
2122
|
+
var footerLogoSize = z17.enum(["sm", "md", "lg", "xl"]);
|
|
2123
|
+
var footerLogoMaxHeight = z17.enum(["sm", "md", "lg", "xl"]);
|
|
2124
|
+
var footerBottomTextLinkStyleSchema = z17.object({
|
|
1948
2125
|
colorToken: themeColorTokenSchema.optional(),
|
|
1949
2126
|
hoverColorToken: themeColorTokenSchema.nullable().optional(),
|
|
1950
2127
|
decorationColorToken: themeColorTokenSchema.nullable().optional(),
|
|
1951
|
-
underline:
|
|
2128
|
+
underline: z17.boolean().optional()
|
|
1952
2129
|
});
|
|
1953
|
-
var footerBottomBarSchema =
|
|
1954
|
-
enabled:
|
|
1955
|
-
fullBleed:
|
|
2130
|
+
var footerBottomBarSchema = z17.object({
|
|
2131
|
+
enabled: z17.boolean().optional(),
|
|
2132
|
+
fullBleed: z17.boolean().optional(),
|
|
1956
2133
|
background: headerBackgroundSchema.optional(),
|
|
1957
2134
|
textColor: themeColorTokenSchema.nullable().optional(),
|
|
1958
|
-
textAlign:
|
|
2135
|
+
textAlign: z17.enum(["left", "center", "right"]).optional(),
|
|
1959
2136
|
paddingY: footerSpacing.optional(),
|
|
1960
2137
|
paddingX: footerSpacing.optional(),
|
|
1961
|
-
borderTop:
|
|
2138
|
+
borderTop: z17.object({
|
|
1962
2139
|
colorToken: themeColorTokenSchema.nullable().optional(),
|
|
1963
|
-
width:
|
|
2140
|
+
width: z17.enum(["none", "thin", "medium", "thick"]).optional()
|
|
1964
2141
|
}).optional()
|
|
1965
2142
|
});
|
|
1966
|
-
var footerNavLayoutSchema =
|
|
2143
|
+
var footerNavLayoutSchema = z17.object({
|
|
1967
2144
|
layout: footerNavLayoutMode.optional(),
|
|
1968
2145
|
align: footerNavLayoutAlign.optional(),
|
|
1969
2146
|
gapX: footerSpacing.optional(),
|
|
1970
2147
|
gapY: footerSpacing.optional(),
|
|
1971
|
-
columns:
|
|
2148
|
+
columns: z17.number().int().min(1).max(6).optional()
|
|
1972
2149
|
});
|
|
1973
|
-
var footerLogoSchema =
|
|
1974
|
-
showLogo:
|
|
1975
|
-
showLogoText:
|
|
2150
|
+
var footerLogoSchema = z17.object({
|
|
2151
|
+
showLogo: z17.boolean().default(true),
|
|
2152
|
+
showLogoText: z17.boolean().optional(),
|
|
1976
2153
|
placement: footerLogoPlacement.optional(),
|
|
1977
2154
|
size: footerLogoSize.optional(),
|
|
1978
2155
|
maxHeight: footerLogoMaxHeight.optional(),
|
|
1979
|
-
align:
|
|
2156
|
+
align: z17.enum(["start", "center", "end"]).optional()
|
|
1980
2157
|
});
|
|
1981
|
-
var footerSchema =
|
|
2158
|
+
var footerSchema = z17.object({
|
|
1982
2159
|
/**
|
|
1983
2160
|
* SDK-only footer rendering mode.
|
|
1984
2161
|
*
|
|
@@ -1987,7 +2164,7 @@ var footerSchema = z16.object({
|
|
|
1987
2164
|
mode: footerMode.optional(),
|
|
1988
2165
|
variant: footerVariant,
|
|
1989
2166
|
maxWidth: footerMaxWidth,
|
|
1990
|
-
showLogoText:
|
|
2167
|
+
showLogoText: z17.boolean().optional(),
|
|
1991
2168
|
background: headerBackgroundSchema.default({
|
|
1992
2169
|
type: "color",
|
|
1993
2170
|
color: "surface"
|
|
@@ -2005,20 +2182,20 @@ var footerSchema = z16.object({
|
|
|
2005
2182
|
logo: footerLogoSchema.optional(),
|
|
2006
2183
|
bottomBar: footerBottomBarSchema.optional()
|
|
2007
2184
|
});
|
|
2008
|
-
var containerPaddingPresetSchema =
|
|
2185
|
+
var containerPaddingPresetSchema = z17.enum([
|
|
2009
2186
|
"tight",
|
|
2010
2187
|
"compact",
|
|
2011
2188
|
"default",
|
|
2012
2189
|
"relaxed"
|
|
2013
2190
|
]);
|
|
2014
|
-
var layoutSchema =
|
|
2015
|
-
containerPadding:
|
|
2191
|
+
var layoutSchema = z17.object({
|
|
2192
|
+
containerPadding: z17.object({
|
|
2016
2193
|
mobile: containerPaddingPresetSchema.optional(),
|
|
2017
2194
|
tablet: containerPaddingPresetSchema.optional(),
|
|
2018
2195
|
desktop: containerPaddingPresetSchema.optional()
|
|
2019
2196
|
}).optional()
|
|
2020
2197
|
}).optional();
|
|
2021
|
-
var heroTypographySizeSchema =
|
|
2198
|
+
var heroTypographySizeSchema = z17.enum([
|
|
2022
2199
|
"sm",
|
|
2023
2200
|
"base",
|
|
2024
2201
|
"lg",
|
|
@@ -2030,19 +2207,19 @@ var heroTypographySizeSchema = z16.enum([
|
|
|
2030
2207
|
"6xl",
|
|
2031
2208
|
"editorial"
|
|
2032
2209
|
]);
|
|
2033
|
-
var heroTypographyLineHeightSchema =
|
|
2210
|
+
var heroTypographyLineHeightSchema = z17.enum([
|
|
2034
2211
|
"tight",
|
|
2035
2212
|
"snug",
|
|
2036
2213
|
"normal",
|
|
2037
2214
|
"relaxed"
|
|
2038
2215
|
]);
|
|
2039
|
-
var heroResponsiveTypographySchema =
|
|
2216
|
+
var heroResponsiveTypographySchema = z17.object({
|
|
2040
2217
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
2041
2218
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
2042
2219
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
2043
2220
|
subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
|
|
2044
2221
|
});
|
|
2045
|
-
var heroTypographySchema =
|
|
2222
|
+
var heroTypographySchema = z17.object({
|
|
2046
2223
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
2047
2224
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
2048
2225
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
@@ -2051,31 +2228,38 @@ var heroTypographySchema = z16.object({
|
|
|
2051
2228
|
microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
2052
2229
|
microSubheadlineSize: heroTypographySizeSchema.optional(),
|
|
2053
2230
|
microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
2054
|
-
responsive:
|
|
2231
|
+
responsive: z17.object({
|
|
2055
2232
|
tablet: heroResponsiveTypographySchema.optional(),
|
|
2056
2233
|
mobile: heroResponsiveTypographySchema.optional()
|
|
2057
2234
|
}).optional()
|
|
2058
2235
|
});
|
|
2059
|
-
var heroSchema =
|
|
2236
|
+
var heroSchema = z17.object({
|
|
2060
2237
|
typography: heroTypographySchema.optional()
|
|
2061
2238
|
}).optional();
|
|
2062
|
-
var bodyTextIntroTypographySizeSchema =
|
|
2063
|
-
var bodyTextSchema =
|
|
2064
|
-
intro:
|
|
2239
|
+
var bodyTextIntroTypographySizeSchema = z17.enum(["default", "editorial"]);
|
|
2240
|
+
var bodyTextSchema = z17.object({
|
|
2241
|
+
intro: z17.object({
|
|
2065
2242
|
paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
|
|
2066
2243
|
headingSize: bodyTextIntroTypographySizeSchema.optional()
|
|
2067
2244
|
}).optional()
|
|
2068
2245
|
}).optional();
|
|
2069
|
-
var gradientsSchema =
|
|
2070
|
-
button:
|
|
2071
|
-
hero:
|
|
2072
|
-
background:
|
|
2073
|
-
});
|
|
2074
|
-
var
|
|
2075
|
-
|
|
2076
|
-
|
|
2077
|
-
|
|
2078
|
-
|
|
2246
|
+
var gradientsSchema = z17.object({
|
|
2247
|
+
button: z17.string().min(1).nullable().optional(),
|
|
2248
|
+
hero: z17.string().min(1).nullable().optional(),
|
|
2249
|
+
background: z17.string().min(1).nullable().optional()
|
|
2250
|
+
});
|
|
2251
|
+
var testimonialQuoteTreatmentSchema = z17.object({
|
|
2252
|
+
style: z17.enum(["serif-display", "accent-glyph", "none"]),
|
|
2253
|
+
fontFamily: z17.enum(["heading", "body"]).optional(),
|
|
2254
|
+
scale: z17.enum(["sm", "md", "lg", "xl"]).optional(),
|
|
2255
|
+
colorToken: themeColorTokenSchema.optional(),
|
|
2256
|
+
opacity: z17.number().min(0).max(1).optional()
|
|
2257
|
+
});
|
|
2258
|
+
var themeSchema = z17.object({
|
|
2259
|
+
name: z17.string().min(1).max(30),
|
|
2260
|
+
description: z17.string().min(1).max(400),
|
|
2261
|
+
rationale: z17.string().min(1).max(400),
|
|
2262
|
+
siteStyleId: z17.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
|
|
2079
2263
|
axes: axesSchema,
|
|
2080
2264
|
palette: paletteSchema,
|
|
2081
2265
|
typography: typographySchema,
|
|
@@ -2096,6 +2280,8 @@ var themeSchema = z16.object({
|
|
|
2096
2280
|
// Card variant system (optional for backwards compatibility)
|
|
2097
2281
|
accordions: accordionSystemSchema.optional(),
|
|
2098
2282
|
// Accordion system (optional - generated if not provided)
|
|
2283
|
+
testimonialQuote: testimonialQuoteTreatmentSchema.optional(),
|
|
2284
|
+
// Testimonial quote-mark treatment (site-style-owned)
|
|
2099
2285
|
inputs: inputSystemSchema.optional(),
|
|
2100
2286
|
// Input system (optional - generated if not provided)
|
|
2101
2287
|
inputStyle: inputStyle.optional(),
|
|
@@ -2103,15 +2289,19 @@ var themeSchema = z16.object({
|
|
|
2103
2289
|
// Block-specific customization (Tier 3)
|
|
2104
2290
|
// blockCustomVars: Per-block CSS variable overrides as bare values
|
|
2105
2291
|
// Example: { "event-registration": { "--step-color": "#6d28d9" } }
|
|
2106
|
-
blockCustomVars:
|
|
2107
|
-
|
|
2292
|
+
blockCustomVars: z17.record(
|
|
2293
|
+
z17.string(),
|
|
2108
2294
|
// block kind (matches data-block attribute)
|
|
2109
|
-
|
|
2295
|
+
z17.record(z17.string(), z17.string())
|
|
2110
2296
|
// { '--var-name': 'value' }
|
|
2111
2297
|
).optional(),
|
|
2112
2298
|
// Structured block-kind theme overrides (v1: typography prose-link style only)
|
|
2113
2299
|
// Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
|
|
2114
|
-
blockOverrides:
|
|
2300
|
+
blockOverrides: z17.record(z17.string(), blockThemeOverrideSchema).optional(),
|
|
2301
|
+
// Site-wide heading decoration signature (family + colour). Set once per Look
|
|
2302
|
+
// and projected transiently onto eligible block headings at render time.
|
|
2303
|
+
// Alignment is inherited from the heading, so no placement is stored.
|
|
2304
|
+
headingDecoration: headingDecorationSchema.optional(),
|
|
2115
2305
|
// Structured custom CSS rules
|
|
2116
2306
|
// Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
|
|
2117
2307
|
customCssRules: customCssRulesSchema,
|
|
@@ -2145,11 +2335,11 @@ var themeSchema = z16.object({
|
|
|
2145
2335
|
* }
|
|
2146
2336
|
* ```
|
|
2147
2337
|
*/
|
|
2148
|
-
styleGroups:
|
|
2338
|
+
styleGroups: z17.record(z17.string(), z17.array(z17.string())).optional()
|
|
2149
2339
|
});
|
|
2150
|
-
var themesTurnSchema =
|
|
2151
|
-
message:
|
|
2152
|
-
themes:
|
|
2340
|
+
var themesTurnSchema = z17.object({
|
|
2341
|
+
message: z17.string().min(1),
|
|
2342
|
+
themes: z17.array(themeSchema).length(3)
|
|
2153
2343
|
});
|
|
2154
2344
|
|
|
2155
2345
|
// src/theme/loader.ts
|