@riverbankcms/sdk 0.60.3 → 0.60.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_dts/api/src/bookingVerticals.d.ts +1 -0
- package/dist/_dts/api/src/siteManagementEndpoints.d.ts +3 -39
- package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +2 -0
- package/dist/_dts/blocks/src/system/node/fragments/ctaButton.d.ts +2 -0
- package/dist/_dts/blocks/src/system/runtime/shared/themedButtonClass.d.ts +11 -0
- package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +10 -2
- package/dist/_dts/core/src/participants.d.ts +32 -1
- package/dist/_dts/core/src/rectification.d.ts +79 -0
- package/dist/_dts/db/src/generated/supabase/database.types.d.ts +6 -6
- package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +17 -15
- package/dist/_dts/sdk/src/client/types.d.ts +1 -0
- package/dist/_dts/sdk/src/version.d.ts +1 -1
- package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +86 -5
- package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +7 -2
- package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +10 -10
- package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +33 -9
- package/dist/_dts/theme-core/src/palette/variants/high-contrast.d.ts +33 -9
- package/dist/_dts/theme-core/src/palette/variants/index.d.ts +200 -4
- package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +33 -9
- package/dist/_dts/theme-core/src/palette/variants/types.d.ts +10 -10
- package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +33 -9
- package/dist/_dts/theme-core/src/site-styles/curatedChoices.d.ts +27 -0
- package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +48 -194
- package/dist/_dts/theme-core/src/site-styles/index.d.ts +2 -1
- package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +12 -14
- package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +46 -0
- package/dist/_dts/ui/src/palette/ColorChooserDialog.d.ts +47 -0
- package/dist/_dts/ui/src/palette/ColorSlotButton.d.ts +15 -0
- package/dist/_dts/ui/src/palette/ColorSwatchButton.d.ts +15 -0
- package/dist/_dts/ui/src/palette/PaletteTokenEditor.d.ts +50 -0
- package/dist/_dts/ui/src/palette/hex.d.ts +23 -0
- package/dist/_dts/ui/src/palette/index.d.ts +14 -0
- package/dist/cli/index.mjs +1023 -923
- package/dist/client/client.mjs +3410 -3221
- package/dist/client/hooks.mjs +1625 -1564
- package/dist/client/rendering/client.mjs +132 -37
- package/dist/client/rendering/islands.mjs +91 -30
- package/dist/client/rendering.mjs +1237 -1049
- package/dist/preview-next/client/runtime.mjs +3095 -2736
- package/dist/server/components.mjs +2381 -2255
- package/dist/server/config-validation.mjs +1625 -1564
- package/dist/server/config.mjs +1625 -1564
- package/dist/server/data.mjs +1625 -1564
- package/dist/server/index.mjs +4 -3
- package/dist/server/next.mjs +3233 -3106
- package/dist/server/page-converter.mjs +1625 -1564
- package/dist/server/prebuild.mjs +1 -1
- package/dist/server/rendering/server.mjs +2381 -2255
- package/dist/server/rendering.mjs +2381 -2255
- package/dist/server/routing.mjs +2340 -2271
- package/dist/server/server.mjs +1629 -1567
- package/dist/server/theme-bridge.mjs +130 -126
- package/dist/server/theme.mjs +131 -129
- package/package.json +1 -1
- package/dist/_dts/theme-core/src/site-styles/compatibility.d.ts +0 -109
|
@@ -1210,861 +1210,482 @@ function assertUniqueLayoutProfileKeys(profiles) {
|
|
|
1210
1210
|
}
|
|
1211
1211
|
}
|
|
1212
1212
|
|
|
1213
|
-
// ../theme-core/src/
|
|
1213
|
+
// ../theme-core/src/buttons/personalities/types.ts
|
|
1214
|
+
import { z as z5 } from "zod";
|
|
1215
|
+
|
|
1216
|
+
// ../theme-core/src/buttons/types.ts
|
|
1214
1217
|
import { z as z3 } from "zod";
|
|
1218
|
+
var VARIANT_ROLES = [
|
|
1219
|
+
"primary",
|
|
1220
|
+
"secondary",
|
|
1221
|
+
"outline",
|
|
1222
|
+
"ghost",
|
|
1223
|
+
"link",
|
|
1224
|
+
"tertiary",
|
|
1225
|
+
"accent"
|
|
1226
|
+
];
|
|
1227
|
+
var cornerStyleSchema = z3.enum(["square", "rounded", "pill"]);
|
|
1228
|
+
var shadowSizeSchema = z3.enum(["none", "low", "medium", "high"]);
|
|
1229
|
+
var textTransformSchema = z3.enum(["none", "uppercase", "lowercase", "capitalize"]);
|
|
1230
|
+
var fontWeightSchema = z3.union([z3.literal(500), z3.literal(600), z3.literal(700)]);
|
|
1231
|
+
var buttonTypographySchema = z3.enum(["body", "heading"]);
|
|
1232
|
+
var letterSpacingSchema = z3.enum(["tight", "normal", "loose"]);
|
|
1233
|
+
var hoverTransformSchema = z3.enum(["none", "lift", "scale", "press"]);
|
|
1234
|
+
var hoverColorSchema = z3.enum(["none", "brighten", "darken", "saturate", "token"]);
|
|
1235
|
+
var buttonPaddingPresetSchema = z3.enum(["compact", "default", "spacious"]);
|
|
1236
|
+
var gradientStyleSchema = z3.enum(["linear", "radial", "conic"]);
|
|
1237
|
+
var gradientSharpnessSchema = z3.enum(["smooth", "medium", "hard"]);
|
|
1238
|
+
var prioritySchema = z3.union([z3.literal(1), z3.literal(2), z3.literal(3)]);
|
|
1239
|
+
var variantRoleSchema = z3.enum(VARIANT_ROLES);
|
|
1240
|
+
var buttonSizeNameSchema = z3.enum(["sm", "md", "lg", "xl"]);
|
|
1241
|
+
var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
|
|
1242
|
+
var paddingShorthandSchema = z3.string().refine(
|
|
1243
|
+
(value) => {
|
|
1244
|
+
const parts = value.split(/\s+/).filter(Boolean);
|
|
1245
|
+
return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
|
|
1246
|
+
},
|
|
1247
|
+
{
|
|
1248
|
+
message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
|
|
1249
|
+
}
|
|
1250
|
+
);
|
|
1251
|
+
var buttonSizeConfigSchema = z3.object({
|
|
1252
|
+
padding: paddingShorthandSchema,
|
|
1253
|
+
fontSize: z3.string().optional()
|
|
1254
|
+
});
|
|
1255
|
+
var buttonSizesSchema = z3.object({
|
|
1256
|
+
sm: buttonSizeConfigSchema,
|
|
1257
|
+
md: buttonSizeConfigSchema,
|
|
1258
|
+
lg: buttonSizeConfigSchema,
|
|
1259
|
+
xl: buttonSizeConfigSchema.optional()
|
|
1260
|
+
}).transform(({ sm, md, lg, xl }) => ({
|
|
1261
|
+
sm,
|
|
1262
|
+
md,
|
|
1263
|
+
lg,
|
|
1264
|
+
xl: xl ?? lg
|
|
1265
|
+
}));
|
|
1266
|
+
var buttonGlobalSettingsSchema = z3.object({
|
|
1267
|
+
cornerStyle: cornerStyleSchema,
|
|
1268
|
+
cornerRadius: z3.number().min(0).max(24).optional(),
|
|
1269
|
+
shadow: shadowSizeSchema,
|
|
1270
|
+
textTransform: textTransformSchema,
|
|
1271
|
+
fontWeight: fontWeightSchema,
|
|
1272
|
+
/**
|
|
1273
|
+
* @deprecated Set per-variant via `variant.border.widthClass` instead.
|
|
1274
|
+
* Schema field is preserved so existing presets parse; the value is unread
|
|
1275
|
+
* by the current generator and will be removed once the legacy
|
|
1276
|
+
* `primitives/content/components/Button.tsx` slot exports are deleted.
|
|
1277
|
+
*/
|
|
1278
|
+
borderWidth: z3.union([z3.literal(1), z3.literal(2), z3.literal(3)]),
|
|
1279
|
+
// === Family-level typography ===
|
|
1280
|
+
// Typography source (body or heading) — selects which theme typography pool to inherit
|
|
1281
|
+
typography: buttonTypographySchema.optional(),
|
|
1282
|
+
// Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
|
|
1283
|
+
// Sized variants get this as default; fixed variants inherit unless they override.
|
|
1284
|
+
// Size class CSS may still override at run time for sized variants.
|
|
1285
|
+
fontSize: z3.string().optional(),
|
|
1286
|
+
// Letter spacing applied to all variants
|
|
1287
|
+
letterSpacing: letterSpacingSchema.optional(),
|
|
1288
|
+
// Italic style
|
|
1289
|
+
italic: z3.boolean().optional(),
|
|
1290
|
+
// Padding preset (applies to sized variants without a sizes config)
|
|
1291
|
+
paddingPreset: buttonPaddingPresetSchema.optional(),
|
|
1292
|
+
hoverTransform: hoverTransformSchema,
|
|
1293
|
+
hoverColor: hoverColorSchema,
|
|
1294
|
+
// When hoverColor is 'token', this specifies which token to use
|
|
1295
|
+
hoverColorToken: z3.string().optional(),
|
|
1296
|
+
// Gradient settings (if any variant uses gradients)
|
|
1297
|
+
gradientStyle: gradientStyleSchema.optional(),
|
|
1298
|
+
gradientAngle: z3.number().min(0).max(360).optional(),
|
|
1299
|
+
gradientSharpness: gradientSharpnessSchema.optional()
|
|
1300
|
+
});
|
|
1301
|
+
var gradientDirectionSchema = z3.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
1302
|
+
var buttonBackgroundSchema = z3.discriminatedUnion("type", [
|
|
1303
|
+
z3.object({ type: z3.literal("solid"), colorToken: z3.string() }),
|
|
1304
|
+
z3.object({
|
|
1305
|
+
type: z3.literal("gradient"),
|
|
1306
|
+
stops: z3.array(z3.string()).min(2),
|
|
1307
|
+
direction: gradientDirectionSchema
|
|
1308
|
+
}),
|
|
1309
|
+
z3.object({ type: z3.literal("transparent") })
|
|
1310
|
+
]);
|
|
1311
|
+
var effectApplicationSchema = z3.object({
|
|
1312
|
+
effectId: z3.string(),
|
|
1313
|
+
options: z3.record(z3.string(), z3.any()).optional()
|
|
1314
|
+
});
|
|
1315
|
+
var buttonBorderSchema = z3.object({
|
|
1316
|
+
widthClass: z3.string(),
|
|
1317
|
+
colorToken: z3.string()
|
|
1318
|
+
});
|
|
1319
|
+
var variantShadowSchema = z3.object({
|
|
1320
|
+
elevation: z3.enum(["none", "low", "medium", "high"]),
|
|
1321
|
+
softness: z3.enum(["crisp", "soft", "hard"]).nullable(),
|
|
1322
|
+
position: z3.enum(["bottom", "bottom-right"]).default("bottom")
|
|
1323
|
+
});
|
|
1324
|
+
var variantEffectsSchema = z3.object({
|
|
1325
|
+
base: z3.array(effectApplicationSchema).optional(),
|
|
1326
|
+
hover: z3.array(effectApplicationSchema).optional(),
|
|
1327
|
+
active: z3.array(effectApplicationSchema).optional(),
|
|
1328
|
+
focus: z3.array(effectApplicationSchema).optional()
|
|
1329
|
+
});
|
|
1330
|
+
var variantSizeOverridesSchema = z3.object({
|
|
1331
|
+
sm: buttonSizeConfigSchema.optional(),
|
|
1332
|
+
md: buttonSizeConfigSchema.optional(),
|
|
1333
|
+
lg: buttonSizeConfigSchema.optional(),
|
|
1334
|
+
xl: buttonSizeConfigSchema.optional()
|
|
1335
|
+
});
|
|
1336
|
+
var buttonVariantSchema = z3.object({
|
|
1337
|
+
id: z3.string(),
|
|
1338
|
+
name: z3.string().min(1).max(20),
|
|
1339
|
+
enabled: z3.boolean(),
|
|
1340
|
+
priority: prioritySchema,
|
|
1341
|
+
// Base appearance (token-based)
|
|
1342
|
+
background: buttonBackgroundSchema,
|
|
1343
|
+
textColorToken: z3.string(),
|
|
1344
|
+
/** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
|
|
1345
|
+
borderRadius: z3.string().optional(),
|
|
1346
|
+
// Optional shadow override (uses theme.shadow if not specified)
|
|
1347
|
+
shadow: variantShadowSchema.optional(),
|
|
1348
|
+
// Border (optional)
|
|
1349
|
+
border: buttonBorderSchema.optional(),
|
|
1350
|
+
// Hover background token (per-variant override, takes precedence over global hoverColorToken)
|
|
1351
|
+
hoverBackgroundToken: z3.string().optional(),
|
|
1352
|
+
// Effect composition
|
|
1353
|
+
effects: variantEffectsSchema.optional(),
|
|
1354
|
+
// Per-variant size overrides — see VariantSizeOverrides
|
|
1355
|
+
sizes: variantSizeOverridesSchema.optional()
|
|
1356
|
+
});
|
|
1357
|
+
var buttonSystemSchema = z3.object({
|
|
1358
|
+
global: buttonGlobalSettingsSchema,
|
|
1359
|
+
variants: z3.array(buttonVariantSchema).min(1).max(6),
|
|
1360
|
+
sizes: buttonSizesSchema.optional()
|
|
1361
|
+
});
|
|
1362
|
+
|
|
1363
|
+
// ../theme-core/src/site-styles/styleTags.ts
|
|
1364
|
+
import { z as z4 } from "zod";
|
|
1215
1365
|
var STYLE_AXIS_VALUES = {
|
|
1216
1366
|
tone: ["minimal", "classic", "bold"],
|
|
1217
1367
|
energy: ["calm", "vibrant"],
|
|
1218
1368
|
motion: ["subtle", "standard", "expressive"],
|
|
1219
1369
|
era: ["editorial", "modern", "organic", "technical", "retro"]
|
|
1220
1370
|
};
|
|
1221
|
-
var styleTagsSchema =
|
|
1222
|
-
tone:
|
|
1223
|
-
energy:
|
|
1224
|
-
motion:
|
|
1225
|
-
era:
|
|
1371
|
+
var styleTagsSchema = z4.object({
|
|
1372
|
+
tone: z4.enum(STYLE_AXIS_VALUES.tone).optional(),
|
|
1373
|
+
energy: z4.enum(STYLE_AXIS_VALUES.energy).optional(),
|
|
1374
|
+
motion: z4.enum(STYLE_AXIS_VALUES.motion).optional(),
|
|
1375
|
+
era: z4.enum(STYLE_AXIS_VALUES.era).optional()
|
|
1226
1376
|
});
|
|
1227
1377
|
|
|
1228
|
-
// ../theme-core/src/
|
|
1229
|
-
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
panelFrame("raised"),
|
|
1233
|
-
flushPanelFrame({ bleed: "start" })
|
|
1234
|
-
];
|
|
1235
|
-
var userContentFrames = [
|
|
1236
|
-
...generatedContentFrames,
|
|
1237
|
-
panelFrame("editorial"),
|
|
1238
|
-
flushPanelFrame({ bleed: "end" }),
|
|
1239
|
-
flushPanelFrame({ bleed: "both" })
|
|
1240
|
-
];
|
|
1241
|
-
var generatedDesignOptionCatalog = {
|
|
1242
|
-
source: "generated",
|
|
1243
|
-
sectionSurfaces: ["base", "muted-band", "accent-band", "hero-image"],
|
|
1244
|
-
contentFrames: generatedContentFrames,
|
|
1245
|
-
itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
|
|
1246
|
-
transitions: ["none", "soft-fade-short", "soft-fade-long"],
|
|
1247
|
-
emphases: ["low", "medium", "high"],
|
|
1248
|
-
detachedCustom: false
|
|
1249
|
-
};
|
|
1250
|
-
var userDesignOptionCatalog = {
|
|
1251
|
-
source: "user",
|
|
1252
|
-
sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
1253
|
-
contentFrames: userContentFrames,
|
|
1254
|
-
itemSurfaces: [
|
|
1255
|
-
...generatedDesignOptionCatalog.itemSurfaces,
|
|
1256
|
-
"inset",
|
|
1257
|
-
"editorial"
|
|
1258
|
-
],
|
|
1259
|
-
transitions: [
|
|
1260
|
-
...generatedDesignOptionCatalog.transitions,
|
|
1261
|
-
"wave-edge",
|
|
1262
|
-
"angle-edge"
|
|
1263
|
-
],
|
|
1264
|
-
emphases: generatedDesignOptionCatalog.emphases,
|
|
1265
|
-
detachedCustom: false
|
|
1266
|
-
};
|
|
1267
|
-
var advancedDesignOptionCatalog = {
|
|
1268
|
-
source: "advanced",
|
|
1269
|
-
sectionSurfaces: userDesignOptionCatalog.sectionSurfaces,
|
|
1270
|
-
contentFrames: userDesignOptionCatalog.contentFrames,
|
|
1271
|
-
itemSurfaces: userDesignOptionCatalog.itemSurfaces,
|
|
1272
|
-
transitions: userDesignOptionCatalog.transitions,
|
|
1273
|
-
emphases: userDesignOptionCatalog.emphases,
|
|
1274
|
-
detachedCustom: true
|
|
1275
|
-
};
|
|
1276
|
-
|
|
1277
|
-
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
1278
|
-
var curatedSiteStyleIdValues = [
|
|
1279
|
-
"site-style:calm-studio",
|
|
1280
|
-
"site-style:clear-professional",
|
|
1281
|
-
"site-style:warm-editorial",
|
|
1282
|
-
"site-style:bright-community",
|
|
1283
|
-
"site-style:quiet-luxury",
|
|
1284
|
-
"site-style:practical-services",
|
|
1285
|
-
"site-style:modern-wellness",
|
|
1286
|
-
"site-style:bold-launch"
|
|
1287
|
-
];
|
|
1288
|
-
var quietBudget = {
|
|
1289
|
-
accentDensity: "low",
|
|
1290
|
-
panelDensity: "medium",
|
|
1291
|
-
transitionMix: "quiet",
|
|
1292
|
-
primaryCtaLimit: 2,
|
|
1293
|
-
mediaDensity: "medium",
|
|
1294
|
-
decorativeRepetition: "low"
|
|
1295
|
-
};
|
|
1296
|
-
var balancedBudget = {
|
|
1297
|
-
accentDensity: "medium",
|
|
1298
|
-
panelDensity: "medium",
|
|
1299
|
-
transitionMix: "balanced",
|
|
1300
|
-
primaryCtaLimit: 3,
|
|
1301
|
-
mediaDensity: "medium",
|
|
1302
|
-
decorativeRepetition: "medium"
|
|
1303
|
-
};
|
|
1304
|
-
var expressiveBudget = {
|
|
1305
|
-
accentDensity: "high",
|
|
1306
|
-
panelDensity: "high",
|
|
1307
|
-
transitionMix: "expressive",
|
|
1308
|
-
primaryCtaLimit: 3,
|
|
1309
|
-
mediaDensity: "high",
|
|
1310
|
-
decorativeRepetition: "medium"
|
|
1311
|
-
};
|
|
1312
|
-
function uniqueContentFrameKinds() {
|
|
1313
|
-
const kinds = [...new Set(
|
|
1314
|
-
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
1315
|
-
)];
|
|
1316
|
-
const firstKind = kinds[0];
|
|
1317
|
-
if (!firstKind) {
|
|
1318
|
-
throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
|
|
1378
|
+
// ../theme-core/src/buttons/personalities/types.ts
|
|
1379
|
+
function asButtonPersonalityId(value) {
|
|
1380
|
+
if (value.length === 0) {
|
|
1381
|
+
throw new Error("ButtonPersonalityId must be a non-empty string");
|
|
1319
1382
|
}
|
|
1320
|
-
return
|
|
1383
|
+
return value;
|
|
1321
1384
|
}
|
|
1322
|
-
var
|
|
1323
|
-
|
|
1385
|
+
var buttonPersonalityIdSchema = z5.string().min(1).transform((value) => asButtonPersonalityId(value));
|
|
1386
|
+
var buttonPersonalitySchema = z5.object({
|
|
1387
|
+
id: buttonPersonalityIdSchema,
|
|
1388
|
+
name: z5.string().min(1),
|
|
1389
|
+
description: z5.string().min(1),
|
|
1390
|
+
tags: styleTagsSchema,
|
|
1391
|
+
buttonSystem: buttonSystemSchema
|
|
1392
|
+
});
|
|
1393
|
+
function defineButtonPersonality(input) {
|
|
1324
1394
|
return {
|
|
1325
|
-
id:
|
|
1395
|
+
id: asButtonPersonalityId(input.id),
|
|
1326
1396
|
name: input.name,
|
|
1327
1397
|
description: input.description,
|
|
1328
|
-
|
|
1329
|
-
|
|
1330
|
-
template: {
|
|
1331
|
-
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
1332
|
-
name: input.name,
|
|
1333
|
-
version: 1,
|
|
1334
|
-
tokenRecipes: input.tokenRecipes,
|
|
1335
|
-
compositionBudget: input.compositionBudget,
|
|
1336
|
-
supportedSectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
1337
|
-
supportedContentFrames: generatedContentFrameKinds,
|
|
1338
|
-
supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
1339
|
-
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
1340
|
-
},
|
|
1341
|
-
// The library IDs are already branded at construction (`asButtonPersonalityId`
|
|
1342
|
-
// / `asPaletteVariantId`); the closed-union input type guarantees only
|
|
1343
|
-
// shipped IDs reach this branch.
|
|
1344
|
-
defaultButtonPersonalityId: input.defaultButtonPersonalityId,
|
|
1345
|
-
acceptedButtons: input.acceptedButtons,
|
|
1346
|
-
defaultPaletteVariantId: input.defaultPaletteVariantId,
|
|
1347
|
-
acceptedPalettes: input.acceptedPalettes
|
|
1398
|
+
tags: input.tags,
|
|
1399
|
+
buttonSystem: input.buttonSystem
|
|
1348
1400
|
};
|
|
1349
1401
|
}
|
|
1350
|
-
|
|
1351
|
-
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1355
|
-
|
|
1356
|
-
|
|
1357
|
-
|
|
1358
|
-
|
|
1359
|
-
|
|
1360
|
-
shadow: "
|
|
1361
|
-
|
|
1362
|
-
|
|
1363
|
-
|
|
1364
|
-
|
|
1365
|
-
|
|
1366
|
-
defaultButtonPersonalityId: "soft-pill",
|
|
1367
|
-
acceptedButtons: { tone: ["minimal", "classic"], era: ["organic", "editorial"] },
|
|
1368
|
-
defaultPaletteVariantId: "soft-natural-sage",
|
|
1369
|
-
acceptedPalettes: { tone: ["minimal", "classic"], era: ["organic"] }
|
|
1370
|
-
}),
|
|
1371
|
-
defineCuratedSiteStyle({
|
|
1372
|
-
id: "site-style:clear-professional",
|
|
1373
|
-
name: "Clear Professional",
|
|
1374
|
-
description: "Crisp, trustworthy, and direct for local services and consultancies.",
|
|
1375
|
-
generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
|
|
1376
|
-
tokenRecipes: {
|
|
1377
|
-
palette: "brand-led",
|
|
1378
|
-
contrast: "strong",
|
|
1379
|
-
radius: "soft",
|
|
1380
|
-
shadow: "subtle",
|
|
1381
|
-
typography: "clean-sans",
|
|
1382
|
-
spacing: "regular",
|
|
1383
|
-
motion: "subtle"
|
|
1402
|
+
|
|
1403
|
+
// ../theme-core/src/buttons/personalities/brushed-wash.ts
|
|
1404
|
+
var brushedWash = defineButtonPersonality({
|
|
1405
|
+
id: "brushed-wash",
|
|
1406
|
+
name: "Brushed Wash",
|
|
1407
|
+
description: "Watercolour-gradient buttons with soft shadows and generous padding.",
|
|
1408
|
+
tags: { tone: "classic", energy: "vibrant", motion: "standard", era: "organic" },
|
|
1409
|
+
buttonSystem: {
|
|
1410
|
+
global: {
|
|
1411
|
+
cornerStyle: "rounded",
|
|
1412
|
+
shadow: "low",
|
|
1413
|
+
textTransform: "none",
|
|
1414
|
+
fontWeight: 500,
|
|
1415
|
+
borderWidth: 1,
|
|
1416
|
+
hoverTransform: "none",
|
|
1417
|
+
hoverColor: "none"
|
|
1384
1418
|
},
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
}),
|
|
1391
|
-
defineCuratedSiteStyle({
|
|
1392
|
-
id: "site-style:warm-editorial",
|
|
1393
|
-
name: "Warm Editorial",
|
|
1394
|
-
description: "Story-led and textured for educators, makers, venues, and retreats.",
|
|
1395
|
-
generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
|
|
1396
|
-
tokenRecipes: {
|
|
1397
|
-
palette: "warm-neutral",
|
|
1398
|
-
contrast: "standard",
|
|
1399
|
-
radius: "square",
|
|
1400
|
-
shadow: "none",
|
|
1401
|
-
typography: "serif-editorial",
|
|
1402
|
-
spacing: "airy",
|
|
1403
|
-
motion: "subtle"
|
|
1419
|
+
sizes: {
|
|
1420
|
+
sm: { padding: "0.75rem 2rem", fontSize: "text-sm" },
|
|
1421
|
+
md: { padding: "1rem 2.5rem" },
|
|
1422
|
+
lg: { padding: "1.25rem 3rem", fontSize: "text-lg" },
|
|
1423
|
+
xl: { padding: "1.625rem 3.75rem", fontSize: "text-xl" }
|
|
1404
1424
|
},
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1412
|
-
|
|
1413
|
-
|
|
1414
|
-
|
|
1415
|
-
|
|
1416
|
-
|
|
1417
|
-
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1423
|
-
|
|
1425
|
+
variants: [
|
|
1426
|
+
{
|
|
1427
|
+
id: "primary",
|
|
1428
|
+
name: "Primary",
|
|
1429
|
+
enabled: true,
|
|
1430
|
+
priority: 1,
|
|
1431
|
+
background: {
|
|
1432
|
+
type: "gradient",
|
|
1433
|
+
stops: ["primary", "accent"],
|
|
1434
|
+
direction: "to-r"
|
|
1435
|
+
},
|
|
1436
|
+
textColorToken: "primaryForeground",
|
|
1437
|
+
borderRadius: "rounded-lg",
|
|
1438
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
1439
|
+
effects: {
|
|
1440
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
1441
|
+
}
|
|
1442
|
+
},
|
|
1443
|
+
{
|
|
1444
|
+
id: "secondary",
|
|
1445
|
+
name: "Secondary",
|
|
1446
|
+
enabled: true,
|
|
1447
|
+
priority: 2,
|
|
1448
|
+
background: {
|
|
1449
|
+
type: "gradient",
|
|
1450
|
+
stops: ["secondary", "accent"],
|
|
1451
|
+
direction: "to-br"
|
|
1452
|
+
},
|
|
1453
|
+
textColorToken: "primaryForeground",
|
|
1454
|
+
borderRadius: "rounded-lg",
|
|
1455
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
1456
|
+
effects: {
|
|
1457
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
1458
|
+
}
|
|
1459
|
+
},
|
|
1460
|
+
{
|
|
1461
|
+
id: "outline",
|
|
1462
|
+
name: "Outline",
|
|
1463
|
+
enabled: true,
|
|
1464
|
+
priority: 3,
|
|
1465
|
+
background: { type: "transparent" },
|
|
1466
|
+
textColorToken: "primary",
|
|
1467
|
+
borderRadius: "rounded-lg",
|
|
1468
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
1469
|
+
effects: {
|
|
1470
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
1471
|
+
}
|
|
1472
|
+
},
|
|
1473
|
+
{
|
|
1474
|
+
id: "ghost",
|
|
1475
|
+
name: "Ghost",
|
|
1476
|
+
enabled: true,
|
|
1477
|
+
priority: 3,
|
|
1478
|
+
background: { type: "transparent" },
|
|
1479
|
+
textColorToken: "text",
|
|
1480
|
+
borderRadius: "rounded-lg",
|
|
1481
|
+
effects: {
|
|
1482
|
+
hover: [
|
|
1483
|
+
{ effectId: "background-on-hover", options: { colorToken: "surface" } }
|
|
1484
|
+
]
|
|
1485
|
+
}
|
|
1486
|
+
}
|
|
1487
|
+
]
|
|
1488
|
+
}
|
|
1489
|
+
});
|
|
1490
|
+
|
|
1491
|
+
// ../theme-core/src/buttons/personalities/confident-chip.ts
|
|
1492
|
+
var confidentChip = defineButtonPersonality({
|
|
1493
|
+
id: "confident-chip",
|
|
1494
|
+
name: "Confident Chip",
|
|
1495
|
+
description: "Mid-radius solid buttons with a crisp hover.",
|
|
1496
|
+
tags: { tone: "classic", energy: "calm", motion: "standard", era: "modern" },
|
|
1497
|
+
buttonSystem: {
|
|
1498
|
+
global: {
|
|
1499
|
+
cornerStyle: "rounded",
|
|
1500
|
+
shadow: "medium",
|
|
1501
|
+
textTransform: "none",
|
|
1502
|
+
fontWeight: 600,
|
|
1503
|
+
borderWidth: 1,
|
|
1504
|
+
hoverTransform: "none",
|
|
1505
|
+
hoverColor: "none"
|
|
1424
1506
|
},
|
|
1425
|
-
|
|
1426
|
-
|
|
1427
|
-
|
|
1428
|
-
|
|
1429
|
-
|
|
1430
|
-
|
|
1431
|
-
|
|
1432
|
-
|
|
1433
|
-
|
|
1434
|
-
|
|
1435
|
-
|
|
1436
|
-
|
|
1437
|
-
|
|
1438
|
-
|
|
1439
|
-
|
|
1440
|
-
|
|
1441
|
-
|
|
1442
|
-
|
|
1443
|
-
|
|
1444
|
-
|
|
1445
|
-
|
|
1446
|
-
|
|
1507
|
+
variants: [
|
|
1508
|
+
{
|
|
1509
|
+
id: "primary",
|
|
1510
|
+
name: "Primary",
|
|
1511
|
+
enabled: true,
|
|
1512
|
+
priority: 1,
|
|
1513
|
+
background: { type: "solid", colorToken: "primary" },
|
|
1514
|
+
textColorToken: "primaryForeground",
|
|
1515
|
+
borderRadius: "rounded-md",
|
|
1516
|
+
shadow: { elevation: "medium", softness: "soft", position: "bottom" },
|
|
1517
|
+
effects: {
|
|
1518
|
+
hover: [{ effectId: "darken-background", options: { amount: 60 } }],
|
|
1519
|
+
active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
|
|
1520
|
+
}
|
|
1521
|
+
},
|
|
1522
|
+
{
|
|
1523
|
+
id: "secondary",
|
|
1524
|
+
name: "Secondary",
|
|
1525
|
+
enabled: true,
|
|
1526
|
+
priority: 2,
|
|
1527
|
+
background: { type: "solid", colorToken: "surface" },
|
|
1528
|
+
textColorToken: "text",
|
|
1529
|
+
borderRadius: "rounded-md",
|
|
1530
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
1531
|
+
effects: {
|
|
1532
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
|
|
1533
|
+
}
|
|
1534
|
+
},
|
|
1535
|
+
{
|
|
1536
|
+
id: "outline",
|
|
1537
|
+
name: "Outline",
|
|
1538
|
+
enabled: true,
|
|
1539
|
+
priority: 3,
|
|
1540
|
+
background: { type: "transparent" },
|
|
1541
|
+
textColorToken: "primary",
|
|
1542
|
+
borderRadius: "rounded-md",
|
|
1543
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
1544
|
+
effects: {
|
|
1545
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
1546
|
+
}
|
|
1547
|
+
},
|
|
1548
|
+
{
|
|
1549
|
+
id: "ghost",
|
|
1550
|
+
name: "Ghost",
|
|
1551
|
+
enabled: true,
|
|
1552
|
+
priority: 3,
|
|
1553
|
+
background: { type: "transparent" },
|
|
1554
|
+
textColorToken: "primary",
|
|
1555
|
+
borderRadius: "rounded-md",
|
|
1556
|
+
effects: {
|
|
1557
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
1558
|
+
}
|
|
1559
|
+
}
|
|
1560
|
+
]
|
|
1561
|
+
}
|
|
1562
|
+
});
|
|
1563
|
+
|
|
1564
|
+
// ../theme-core/src/buttons/personalities/editorial-link.ts
|
|
1565
|
+
var editorialLink = defineButtonPersonality({
|
|
1566
|
+
id: "editorial-link",
|
|
1567
|
+
name: "Editorial Link",
|
|
1568
|
+
description: "Link-style with a growing underline. Refined, typographic.",
|
|
1569
|
+
tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
|
|
1570
|
+
buttonSystem: {
|
|
1571
|
+
global: {
|
|
1572
|
+
cornerStyle: "square",
|
|
1447
1573
|
shadow: "none",
|
|
1448
|
-
|
|
1449
|
-
|
|
1450
|
-
|
|
1451
|
-
|
|
1452
|
-
|
|
1453
|
-
defaultButtonPersonalityId: "editorial-link",
|
|
1454
|
-
acceptedButtons: { tone: ["minimal", "classic"], era: ["editorial", "organic"] },
|
|
1455
|
-
defaultPaletteVariantId: "high-contrast-charcoal",
|
|
1456
|
-
acceptedPalettes: { tone: ["minimal", "classic"], era: ["editorial", "organic"] }
|
|
1457
|
-
}),
|
|
1458
|
-
defineCuratedSiteStyle({
|
|
1459
|
-
id: "site-style:practical-services",
|
|
1460
|
-
name: "Practical Services",
|
|
1461
|
-
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
1462
|
-
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
1463
|
-
selectionKeywords: [
|
|
1464
|
-
"repair",
|
|
1465
|
-
"plumb",
|
|
1466
|
-
"electric",
|
|
1467
|
-
"cleaning",
|
|
1468
|
-
"landscap",
|
|
1469
|
-
"contractor"
|
|
1470
|
-
],
|
|
1471
|
-
tokenRecipes: {
|
|
1472
|
-
palette: "brand-led",
|
|
1473
|
-
contrast: "maximum",
|
|
1474
|
-
radius: "soft",
|
|
1475
|
-
shadow: "subtle",
|
|
1476
|
-
typography: "clean-sans",
|
|
1477
|
-
spacing: "compact",
|
|
1478
|
-
motion: "none"
|
|
1479
|
-
},
|
|
1480
|
-
compositionBudget: quietBudget,
|
|
1481
|
-
defaultButtonPersonalityId: "confident-chip",
|
|
1482
|
-
acceptedButtons: { tone: ["minimal", "classic", "bold"], era: ["modern", "editorial"] },
|
|
1483
|
-
defaultPaletteVariantId: "brand-led-cool",
|
|
1484
|
-
acceptedPalettes: { tone: ["minimal", "classic", "bold"], era: ["modern", "editorial"] }
|
|
1485
|
-
}),
|
|
1486
|
-
defineCuratedSiteStyle({
|
|
1487
|
-
id: "site-style:modern-wellness",
|
|
1488
|
-
name: "Modern Wellness",
|
|
1489
|
-
description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
|
|
1490
|
-
generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
|
|
1491
|
-
tokenRecipes: {
|
|
1492
|
-
palette: "soft-natural",
|
|
1493
|
-
contrast: "standard",
|
|
1494
|
-
radius: "rounded",
|
|
1495
|
-
shadow: "subtle",
|
|
1496
|
-
typography: "clean-sans",
|
|
1497
|
-
spacing: "airy",
|
|
1498
|
-
motion: "subtle"
|
|
1574
|
+
textTransform: "none",
|
|
1575
|
+
fontWeight: 500,
|
|
1576
|
+
borderWidth: 1,
|
|
1577
|
+
hoverTransform: "none",
|
|
1578
|
+
hoverColor: "none"
|
|
1499
1579
|
},
|
|
1500
|
-
|
|
1501
|
-
|
|
1502
|
-
|
|
1503
|
-
|
|
1504
|
-
|
|
1505
|
-
|
|
1506
|
-
|
|
1507
|
-
|
|
1508
|
-
|
|
1509
|
-
|
|
1510
|
-
|
|
1511
|
-
|
|
1512
|
-
|
|
1513
|
-
|
|
1514
|
-
|
|
1515
|
-
|
|
1516
|
-
|
|
1517
|
-
|
|
1518
|
-
|
|
1519
|
-
|
|
1520
|
-
|
|
1521
|
-
|
|
1522
|
-
|
|
1523
|
-
|
|
1524
|
-
|
|
1525
|
-
|
|
1526
|
-
|
|
1527
|
-
|
|
1528
|
-
|
|
1529
|
-
|
|
1530
|
-
|
|
1531
|
-
|
|
1532
|
-
|
|
1533
|
-
|
|
1534
|
-
|
|
1535
|
-
|
|
1536
|
-
|
|
1537
|
-
|
|
1538
|
-
|
|
1539
|
-
|
|
1540
|
-
|
|
1541
|
-
|
|
1542
|
-
|
|
1543
|
-
|
|
1544
|
-
|
|
1545
|
-
|
|
1546
|
-
|
|
1547
|
-
|
|
1548
|
-
|
|
1549
|
-
|
|
1550
|
-
|
|
1551
|
-
|
|
1552
|
-
|
|
1553
|
-
|
|
1554
|
-
|
|
1555
|
-
|
|
1556
|
-
|
|
1557
|
-
|
|
1558
|
-
|
|
1559
|
-
|
|
1560
|
-
|
|
1561
|
-
|
|
1562
|
-
|
|
1563
|
-
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1581
|
-
|
|
1582
|
-
|
|
1583
|
-
|
|
1584
|
-
}
|
|
1585
|
-
var userPanelTreatments = uniqueNonEmpty(
|
|
1586
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
1587
|
-
);
|
|
1588
|
-
var userFlushTreatments = uniqueNonEmpty(
|
|
1589
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
1590
|
-
);
|
|
1591
|
-
var userFlushBleeds = uniqueNonEmpty(
|
|
1592
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
1593
|
-
);
|
|
1594
|
-
var contentFrameIntentSchema = z4.discriminatedUnion("kind", [
|
|
1595
|
-
z4.object({ kind: z4.literal("plain") }).strict(),
|
|
1596
|
-
z4.object({
|
|
1597
|
-
kind: z4.literal("panel"),
|
|
1598
|
-
treatment: z4.enum(userPanelTreatments)
|
|
1599
|
-
}).strict(),
|
|
1600
|
-
z4.object({
|
|
1601
|
-
kind: z4.literal("flush-panel"),
|
|
1602
|
-
treatment: z4.enum(userFlushTreatments),
|
|
1603
|
-
bleed: z4.enum(userFlushBleeds)
|
|
1604
|
-
}).strict()
|
|
1605
|
-
]);
|
|
1606
|
-
var blockDesignPlanSchema = z4.object({
|
|
1607
|
-
blockId: z4.string().min(1).transform(asDesignBlockId),
|
|
1608
|
-
blockKind: z4.string().min(1),
|
|
1609
|
-
purpose: z4.string().min(1),
|
|
1610
|
-
sectionSurface: z4.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
1611
|
-
contentFrame: contentFrameIntentSchema,
|
|
1612
|
-
itemSurface: z4.enum(userDesignOptionCatalog.itemSurfaces),
|
|
1613
|
-
transitionAfter: z4.enum(userDesignOptionCatalog.transitions),
|
|
1614
|
-
emphasis: z4.enum(userDesignOptionCatalog.emphases),
|
|
1615
|
-
heroLegibility: heroLegibilityStrategySchema.optional()
|
|
1616
|
-
}).strict();
|
|
1617
|
-
var styleAuthoritySchema = z4.discriminatedUnion("kind", [
|
|
1618
|
-
z4.object({
|
|
1619
|
-
kind: z4.literal("theme-v2"),
|
|
1620
|
-
source: designResolutionPolicySchema,
|
|
1621
|
-
siteStyleId: z4.string().min(1).transform(asSiteStyleId),
|
|
1622
|
-
templateId: z4.string().min(1).transform(asDesignSystemTemplateId),
|
|
1623
|
-
templateVersion: z4.number().int().nonnegative(),
|
|
1624
|
-
resolverVersion: z4.number().int().nonnegative()
|
|
1625
|
-
}).strict(),
|
|
1626
|
-
z4.object({
|
|
1627
|
-
kind: z4.literal("legacy-raw"),
|
|
1628
|
-
reason: z4.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
1629
|
-
}).strict(),
|
|
1630
|
-
z4.object({
|
|
1631
|
-
kind: z4.literal("advanced-detached"),
|
|
1632
|
-
reason: z4.literal("detached-custom-runtime-fields")
|
|
1633
|
-
}).strict()
|
|
1634
|
-
]);
|
|
1635
|
-
var blockRuntimeStyleAuthoritySchema = z4.object({
|
|
1636
|
-
unit: z4.literal("block-runtime-fields"),
|
|
1637
|
-
blockId: z4.string().min(1).transform(asDesignBlockId),
|
|
1638
|
-
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
1639
|
-
authority: styleAuthoritySchema
|
|
1640
|
-
}).strict();
|
|
1641
|
-
var persistedPageDesignStateV1Schema = z4.object({
|
|
1642
|
-
schemaVersion: z4.literal(themeV2DesignStateSchemaVersion),
|
|
1643
|
-
siteStyleId: z4.string().min(1).transform(asSiteStyleId),
|
|
1644
|
-
templateId: z4.string().min(1).transform(asDesignSystemTemplateId),
|
|
1645
|
-
templateVersion: z4.number().int().nonnegative(),
|
|
1646
|
-
resolverVersion: z4.number().int().nonnegative(),
|
|
1647
|
-
rhythmPresetId: z4.string().min(1),
|
|
1648
|
-
blocks: z4.array(blockDesignPlanSchema),
|
|
1649
|
-
styleAuthorities: z4.array(blockRuntimeStyleAuthoritySchema)
|
|
1650
|
-
}).strict();
|
|
1651
|
-
|
|
1652
|
-
// ../theme-core/src/site-styles/generatedSchemas.ts
|
|
1653
|
-
import { z as z5 } from "zod";
|
|
1654
|
-
function uniqueNonEmpty2(values) {
|
|
1655
|
-
const uniqueValues = [...new Set(values)];
|
|
1656
|
-
const firstValue = uniqueValues[0];
|
|
1657
|
-
if (!firstValue) {
|
|
1658
|
-
throw new Error("Expected at least one generated schema option.");
|
|
1659
|
-
}
|
|
1660
|
-
return [firstValue, ...uniqueValues.slice(1)];
|
|
1661
|
-
}
|
|
1662
|
-
var generatedPanelTreatments = uniqueNonEmpty2(
|
|
1663
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
1664
|
-
);
|
|
1665
|
-
var generatedFlushTreatments = uniqueNonEmpty2(
|
|
1666
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
1667
|
-
);
|
|
1668
|
-
var generatedFlushBleeds = uniqueNonEmpty2(
|
|
1669
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
1670
|
-
);
|
|
1671
|
-
var generatedPanelFrameSchema = z5.object({
|
|
1672
|
-
kind: z5.literal("panel"),
|
|
1673
|
-
treatment: z5.enum(generatedPanelTreatments)
|
|
1674
|
-
}).strict();
|
|
1675
|
-
var generatedFlushPanelFrameSchema = z5.object({
|
|
1676
|
-
kind: z5.literal("flush-panel"),
|
|
1677
|
-
treatment: z5.enum(generatedFlushTreatments),
|
|
1678
|
-
bleed: z5.enum(generatedFlushBleeds)
|
|
1679
|
-
}).strict();
|
|
1680
|
-
var generatedContentFrameIntentSchema = z5.discriminatedUnion("kind", [
|
|
1681
|
-
z5.object({ kind: z5.literal("plain") }).strict(),
|
|
1682
|
-
generatedPanelFrameSchema,
|
|
1683
|
-
generatedFlushPanelFrameSchema
|
|
1684
|
-
]);
|
|
1685
|
-
var generatedSiteStyleIdSchema = z5.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
|
|
1686
|
-
function generatedChoiceSchema(valueSchema) {
|
|
1687
|
-
return z5.discriminatedUnion("kind", [
|
|
1688
|
-
z5.object({
|
|
1689
|
-
source: z5.literal("generated"),
|
|
1690
|
-
kind: z5.literal("auto")
|
|
1691
|
-
}).strict(),
|
|
1692
|
-
z5.object({
|
|
1693
|
-
source: z5.literal("generated"),
|
|
1694
|
-
kind: z5.literal("explicit"),
|
|
1695
|
-
value: valueSchema
|
|
1696
|
-
}).strict()
|
|
1697
|
-
]);
|
|
1698
|
-
}
|
|
1699
|
-
var generatedBlockDesignIntentSchema = z5.object({
|
|
1700
|
-
sectionSurface: generatedChoiceSchema(
|
|
1701
|
-
z5.enum(generatedDesignOptionCatalog.sectionSurfaces)
|
|
1702
|
-
),
|
|
1703
|
-
contentFrame: generatedChoiceSchema(generatedContentFrameIntentSchema),
|
|
1704
|
-
itemSurface: generatedChoiceSchema(
|
|
1705
|
-
z5.enum(generatedDesignOptionCatalog.itemSurfaces)
|
|
1706
|
-
),
|
|
1707
|
-
transitionAfter: generatedChoiceSchema(
|
|
1708
|
-
z5.enum(generatedDesignOptionCatalog.transitions)
|
|
1709
|
-
),
|
|
1710
|
-
emphasis: generatedChoiceSchema(
|
|
1711
|
-
z5.enum(generatedDesignOptionCatalog.emphases)
|
|
1712
|
-
)
|
|
1713
|
-
}).strict();
|
|
1714
|
-
var generatedMediaCompositionIntentSchema = z5.enum([
|
|
1715
|
-
"none",
|
|
1716
|
-
"supporting",
|
|
1717
|
-
"dominant"
|
|
1718
|
-
]);
|
|
1719
|
-
var generatedDecorativeCompositionIntentSchema = z5.enum([
|
|
1720
|
-
"none",
|
|
1721
|
-
"supporting"
|
|
1722
|
-
]);
|
|
1723
|
-
var generatedHeroLegibilityStrategySchema = z5.enum([
|
|
1724
|
-
"none",
|
|
1725
|
-
"scrim-gradient"
|
|
1726
|
-
]);
|
|
1727
|
-
var generatedBlockMediaIntentSchema = z5.object({
|
|
1728
|
-
media: generatedMediaCompositionIntentSchema,
|
|
1729
|
-
decorative: generatedDecorativeCompositionIntentSchema,
|
|
1730
|
-
heroLegibility: generatedChoiceSchema(generatedHeroLegibilityStrategySchema)
|
|
1731
|
-
}).strict();
|
|
1732
|
-
var generatedBoundaryIntentSchema = z5.object({
|
|
1733
|
-
transitionAfter: generatedChoiceSchema(
|
|
1734
|
-
z5.enum(generatedDesignOptionCatalog.transitions)
|
|
1735
|
-
)
|
|
1736
|
-
}).strict();
|
|
1737
|
-
var generatedPageDesignBlockIntentSchema = z5.object({
|
|
1738
|
-
blockId: z5.string().min(1),
|
|
1739
|
-
blockKind: z5.string().min(1),
|
|
1740
|
-
purpose: z5.string().min(1),
|
|
1741
|
-
design: generatedBlockDesignIntentSchema,
|
|
1742
|
-
mediaIntent: generatedBlockMediaIntentSchema,
|
|
1743
|
-
boundaryIntent: generatedBoundaryIntentSchema
|
|
1744
|
-
}).strict();
|
|
1745
|
-
var generatedPageDesignIntentSchema = z5.object({
|
|
1746
|
-
siteStyleId: generatedSiteStyleIdSchema,
|
|
1747
|
-
blocks: z5.array(generatedPageDesignBlockIntentSchema)
|
|
1748
|
-
}).strict();
|
|
1749
|
-
|
|
1750
|
-
// ../theme-core/src/site-styles/pageDesignIntent.ts
|
|
1751
|
-
import { z as z6 } from "zod";
|
|
1752
|
-
var pageDesignIntentSchemaVersion = 1;
|
|
1753
|
-
var pageDesignUserPinnedAppearanceChoiceSchema = z6.object({
|
|
1754
|
-
kind: z6.literal("user-pinned"),
|
|
1755
|
-
value: z6.string().min(1).transform(asAppearancePresetId)
|
|
1756
|
-
}).strict();
|
|
1757
|
-
var pageDesignUserPinnedBoundaryChoiceSchema = z6.object({
|
|
1758
|
-
kind: z6.literal("user-pinned"),
|
|
1759
|
-
value: z6.string().min(1).transform(asBoundaryOptionId)
|
|
1760
|
-
}).strict();
|
|
1761
|
-
var pageDesignBlockLookPinSchema = z6.object({
|
|
1762
|
-
blockId: z6.string().min(1).transform(asDesignBlockId),
|
|
1763
|
-
blockKind: z6.string().min(1),
|
|
1764
|
-
choice: pageDesignUserPinnedAppearanceChoiceSchema
|
|
1765
|
-
}).strict();
|
|
1766
|
-
var pageDesignBoundaryPinSchema = z6.object({
|
|
1767
|
-
boundaryId: z6.string().min(1).transform(asDesignBoundaryId),
|
|
1768
|
-
previousBlockId: z6.string().min(1).transform(asDesignBlockId),
|
|
1769
|
-
nextBlockId: z6.string().min(1).transform(asDesignBlockId),
|
|
1770
|
-
choice: pageDesignUserPinnedBoundaryChoiceSchema
|
|
1771
|
-
}).strict().superRefine((pin, ctx) => {
|
|
1772
|
-
const expectedBoundaryId = makeBoundaryId(
|
|
1773
|
-
pin.previousBlockId,
|
|
1774
|
-
pin.nextBlockId
|
|
1775
|
-
);
|
|
1776
|
-
if (pin.boundaryId !== expectedBoundaryId) {
|
|
1777
|
-
ctx.addIssue({
|
|
1778
|
-
code: z6.ZodIssueCode.custom,
|
|
1779
|
-
path: ["boundaryId"],
|
|
1780
|
-
message: `Boundary id must match previousBlockId and nextBlockId. Expected ${expectedBoundaryId}.`
|
|
1781
|
-
});
|
|
1580
|
+
variants: [
|
|
1581
|
+
{
|
|
1582
|
+
id: "primary",
|
|
1583
|
+
name: "Primary",
|
|
1584
|
+
enabled: true,
|
|
1585
|
+
priority: 1,
|
|
1586
|
+
background: { type: "transparent" },
|
|
1587
|
+
textColorToken: "text",
|
|
1588
|
+
borderRadius: "rounded-none",
|
|
1589
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
1590
|
+
sizes: {
|
|
1591
|
+
sm: { padding: "0.25rem 0" },
|
|
1592
|
+
md: { padding: "0.5rem 0" },
|
|
1593
|
+
lg: { padding: "0.625rem 0" },
|
|
1594
|
+
xl: { padding: "0.75rem 0" }
|
|
1595
|
+
},
|
|
1596
|
+
effects: {
|
|
1597
|
+
base: [
|
|
1598
|
+
{ effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
|
|
1599
|
+
]
|
|
1600
|
+
}
|
|
1601
|
+
},
|
|
1602
|
+
{
|
|
1603
|
+
id: "secondary",
|
|
1604
|
+
name: "Secondary",
|
|
1605
|
+
enabled: true,
|
|
1606
|
+
priority: 2,
|
|
1607
|
+
background: { type: "transparent" },
|
|
1608
|
+
textColorToken: "mutedText",
|
|
1609
|
+
borderRadius: "rounded-none",
|
|
1610
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
1611
|
+
sizes: {
|
|
1612
|
+
sm: { padding: "0.25rem 0" },
|
|
1613
|
+
md: { padding: "0.5rem 0" },
|
|
1614
|
+
lg: { padding: "0.625rem 0" },
|
|
1615
|
+
xl: { padding: "0.75rem 0" }
|
|
1616
|
+
},
|
|
1617
|
+
effects: {
|
|
1618
|
+
base: [
|
|
1619
|
+
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
|
|
1620
|
+
]
|
|
1621
|
+
}
|
|
1622
|
+
},
|
|
1623
|
+
{
|
|
1624
|
+
id: "outline",
|
|
1625
|
+
name: "Outline",
|
|
1626
|
+
enabled: true,
|
|
1627
|
+
priority: 3,
|
|
1628
|
+
background: { type: "transparent" },
|
|
1629
|
+
textColorToken: "accent",
|
|
1630
|
+
borderRadius: "rounded-none",
|
|
1631
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
1632
|
+
sizes: {
|
|
1633
|
+
sm: { padding: "0.25rem 0" },
|
|
1634
|
+
md: { padding: "0.5rem 0" },
|
|
1635
|
+
lg: { padding: "0.625rem 0" },
|
|
1636
|
+
xl: { padding: "0.75rem 0" }
|
|
1637
|
+
},
|
|
1638
|
+
effects: {
|
|
1639
|
+
base: [
|
|
1640
|
+
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
|
|
1641
|
+
]
|
|
1642
|
+
}
|
|
1643
|
+
},
|
|
1644
|
+
{
|
|
1645
|
+
id: "ghost",
|
|
1646
|
+
name: "Ghost",
|
|
1647
|
+
enabled: true,
|
|
1648
|
+
priority: 3,
|
|
1649
|
+
background: { type: "transparent" },
|
|
1650
|
+
textColorToken: "mutedText",
|
|
1651
|
+
borderRadius: "rounded-none",
|
|
1652
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
1653
|
+
sizes: {
|
|
1654
|
+
sm: { padding: "0.25rem 0" },
|
|
1655
|
+
md: { padding: "0.5rem 0" },
|
|
1656
|
+
lg: { padding: "0.625rem 0" },
|
|
1657
|
+
xl: { padding: "0.75rem 0" }
|
|
1658
|
+
},
|
|
1659
|
+
effects: {
|
|
1660
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
|
|
1661
|
+
}
|
|
1662
|
+
}
|
|
1663
|
+
]
|
|
1782
1664
|
}
|
|
1783
1665
|
});
|
|
1784
|
-
var pageDesignIntentV1Schema = z6.object({
|
|
1785
|
-
schemaVersion: z6.literal(pageDesignIntentSchemaVersion),
|
|
1786
|
-
siteStyleId: z6.string().min(1).transform(asSiteStyleId),
|
|
1787
|
-
pageFlowPresetId: z6.string().min(1).transform(asPageFlowPresetId),
|
|
1788
|
-
blockLookPins: z6.array(pageDesignBlockLookPinSchema),
|
|
1789
|
-
boundaryPins: z6.array(pageDesignBoundaryPinSchema)
|
|
1790
|
-
}).strict().superRefine((intent, ctx) => {
|
|
1791
|
-
addDuplicateStringIssues(ctx, {
|
|
1792
|
-
values: intent.blockLookPins.map((pin) => pin.blockId),
|
|
1793
|
-
path: ["blockLookPins"],
|
|
1794
|
-
label: "block Look pin"
|
|
1795
|
-
});
|
|
1796
|
-
addDuplicateStringIssues(ctx, {
|
|
1797
|
-
values: intent.boundaryPins.map(
|
|
1798
|
-
(pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)
|
|
1799
|
-
),
|
|
1800
|
-
path: ["boundaryPins"],
|
|
1801
|
-
label: "boundary pin"
|
|
1802
|
-
});
|
|
1803
|
-
});
|
|
1804
|
-
function addDuplicateStringIssues(ctx, input) {
|
|
1805
|
-
const seen = /* @__PURE__ */ new Set();
|
|
1806
|
-
const duplicates = /* @__PURE__ */ new Set();
|
|
1807
|
-
for (const value of input.values) {
|
|
1808
|
-
if (seen.has(value)) {
|
|
1809
|
-
duplicates.add(value);
|
|
1810
|
-
}
|
|
1811
|
-
seen.add(value);
|
|
1812
|
-
}
|
|
1813
|
-
for (const duplicate of duplicates) {
|
|
1814
|
-
ctx.addIssue({
|
|
1815
|
-
code: z6.ZodIssueCode.custom,
|
|
1816
|
-
path: [...input.path],
|
|
1817
|
-
message: `Duplicate ${input.label}: ${duplicate}.`
|
|
1818
|
-
});
|
|
1819
|
-
}
|
|
1820
|
-
}
|
|
1821
|
-
function boundaryKey(previousBlockId, nextBlockId) {
|
|
1822
|
-
return makeBoundaryId(previousBlockId, nextBlockId);
|
|
1823
|
-
}
|
|
1824
|
-
|
|
1825
|
-
// ../theme-core/src/schema.ts
|
|
1826
|
-
import { z as z19 } from "zod";
|
|
1827
|
-
|
|
1828
|
-
// ../theme-core/src/lib/media.ts
|
|
1829
|
-
import z7 from "zod";
|
|
1830
|
-
var hotspotSchema = z7.object({
|
|
1831
|
-
x: z7.number().min(0).max(1),
|
|
1832
|
-
y: z7.number().min(0).max(1),
|
|
1833
|
-
radius: z7.number().optional()
|
|
1834
|
-
});
|
|
1835
|
-
var rotationSchema = z7.union([z7.literal(0), z7.literal(90), z7.literal(180), z7.literal(270)]);
|
|
1836
|
-
var rectSchema = z7.tuple([z7.number(), z7.number(), z7.number(), z7.number()]);
|
|
1837
|
-
var aspectCropSchema = z7.object({
|
|
1838
|
-
aspect: z7.preprocess((value) => value == null ? void 0 : value, z7.string().optional()),
|
|
1839
|
-
rect: z7.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
1840
|
-
hotspot: z7.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
1841
|
-
rotation: z7.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
1842
|
-
});
|
|
1843
|
-
var transformSchema = z7.object({
|
|
1844
|
-
aspectCrops: z7.preprocess((value) => {
|
|
1845
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
1846
|
-
return void 0;
|
|
1847
|
-
}
|
|
1848
|
-
return value;
|
|
1849
|
-
}, z7.record(z7.string(), aspectCropSchema.catch({}))).optional(),
|
|
1850
|
-
rect: rectSchema.optional(),
|
|
1851
|
-
hotspot: hotspotSchema.optional(),
|
|
1852
|
-
rotation: rotationSchema.optional()
|
|
1853
|
-
});
|
|
1854
|
-
var mediaSchema = z7.object({
|
|
1855
|
-
type: z7.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
|
|
1856
|
-
purpose: z7.string().optional(),
|
|
1857
|
-
placeholder: z7.boolean().default(true).optional(),
|
|
1858
|
-
assetId: z7.string().optional(),
|
|
1859
|
-
identifier: z7.string().optional(),
|
|
1860
|
-
src: z7.string().optional(),
|
|
1861
|
-
alt: z7.string().optional(),
|
|
1862
|
-
filename: z7.string().optional(),
|
|
1863
|
-
mimeType: z7.string().optional(),
|
|
1864
|
-
width: z7.number().optional(),
|
|
1865
|
-
height: z7.number().optional(),
|
|
1866
|
-
storageBucket: z7.string().optional(),
|
|
1867
|
-
storagePath: z7.string().optional(),
|
|
1868
|
-
transform: transformSchema.optional()
|
|
1869
|
-
});
|
|
1870
|
-
|
|
1871
|
-
// ../theme-core/src/buttons/types.ts
|
|
1872
|
-
import { z as z8 } from "zod";
|
|
1873
|
-
var VARIANT_ROLES = [
|
|
1874
|
-
"primary",
|
|
1875
|
-
"secondary",
|
|
1876
|
-
"outline",
|
|
1877
|
-
"ghost",
|
|
1878
|
-
"link",
|
|
1879
|
-
"tertiary",
|
|
1880
|
-
"accent"
|
|
1881
|
-
];
|
|
1882
|
-
var cornerStyleSchema = z8.enum(["square", "rounded", "pill"]);
|
|
1883
|
-
var shadowSizeSchema = z8.enum(["none", "low", "medium", "high"]);
|
|
1884
|
-
var textTransformSchema = z8.enum(["none", "uppercase", "lowercase", "capitalize"]);
|
|
1885
|
-
var fontWeightSchema = z8.union([z8.literal(500), z8.literal(600), z8.literal(700)]);
|
|
1886
|
-
var buttonTypographySchema = z8.enum(["body", "heading"]);
|
|
1887
|
-
var letterSpacingSchema = z8.enum(["tight", "normal", "loose"]);
|
|
1888
|
-
var hoverTransformSchema = z8.enum(["none", "lift", "scale", "press"]);
|
|
1889
|
-
var hoverColorSchema = z8.enum(["none", "brighten", "darken", "saturate", "token"]);
|
|
1890
|
-
var buttonPaddingPresetSchema = z8.enum(["compact", "default", "spacious"]);
|
|
1891
|
-
var gradientStyleSchema = z8.enum(["linear", "radial", "conic"]);
|
|
1892
|
-
var gradientSharpnessSchema = z8.enum(["smooth", "medium", "hard"]);
|
|
1893
|
-
var prioritySchema = z8.union([z8.literal(1), z8.literal(2), z8.literal(3)]);
|
|
1894
|
-
var variantRoleSchema = z8.enum(VARIANT_ROLES);
|
|
1895
|
-
var buttonSizeNameSchema = z8.enum(["sm", "md", "lg", "xl"]);
|
|
1896
|
-
var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
|
|
1897
|
-
var paddingShorthandSchema = z8.string().refine(
|
|
1898
|
-
(value) => {
|
|
1899
|
-
const parts = value.split(/\s+/).filter(Boolean);
|
|
1900
|
-
return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
|
|
1901
|
-
},
|
|
1902
|
-
{
|
|
1903
|
-
message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
|
|
1904
|
-
}
|
|
1905
|
-
);
|
|
1906
|
-
var buttonSizeConfigSchema = z8.object({
|
|
1907
|
-
padding: paddingShorthandSchema,
|
|
1908
|
-
fontSize: z8.string().optional()
|
|
1909
|
-
});
|
|
1910
|
-
var buttonSizesSchema = z8.object({
|
|
1911
|
-
sm: buttonSizeConfigSchema,
|
|
1912
|
-
md: buttonSizeConfigSchema,
|
|
1913
|
-
lg: buttonSizeConfigSchema,
|
|
1914
|
-
xl: buttonSizeConfigSchema.optional()
|
|
1915
|
-
}).transform(({ sm, md, lg, xl }) => ({
|
|
1916
|
-
sm,
|
|
1917
|
-
md,
|
|
1918
|
-
lg,
|
|
1919
|
-
xl: xl ?? lg
|
|
1920
|
-
}));
|
|
1921
|
-
var buttonGlobalSettingsSchema = z8.object({
|
|
1922
|
-
cornerStyle: cornerStyleSchema,
|
|
1923
|
-
cornerRadius: z8.number().min(0).max(24).optional(),
|
|
1924
|
-
shadow: shadowSizeSchema,
|
|
1925
|
-
textTransform: textTransformSchema,
|
|
1926
|
-
fontWeight: fontWeightSchema,
|
|
1927
|
-
/**
|
|
1928
|
-
* @deprecated Set per-variant via `variant.border.widthClass` instead.
|
|
1929
|
-
* Schema field is preserved so existing presets parse; the value is unread
|
|
1930
|
-
* by the current generator and will be removed once the legacy
|
|
1931
|
-
* `primitives/content/components/Button.tsx` slot exports are deleted.
|
|
1932
|
-
*/
|
|
1933
|
-
borderWidth: z8.union([z8.literal(1), z8.literal(2), z8.literal(3)]),
|
|
1934
|
-
// === Family-level typography ===
|
|
1935
|
-
// Typography source (body or heading) — selects which theme typography pool to inherit
|
|
1936
|
-
typography: buttonTypographySchema.optional(),
|
|
1937
|
-
// Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
|
|
1938
|
-
// Sized variants get this as default; fixed variants inherit unless they override.
|
|
1939
|
-
// Size class CSS may still override at run time for sized variants.
|
|
1940
|
-
fontSize: z8.string().optional(),
|
|
1941
|
-
// Letter spacing applied to all variants
|
|
1942
|
-
letterSpacing: letterSpacingSchema.optional(),
|
|
1943
|
-
// Italic style
|
|
1944
|
-
italic: z8.boolean().optional(),
|
|
1945
|
-
// Padding preset (applies to sized variants without a sizes config)
|
|
1946
|
-
paddingPreset: buttonPaddingPresetSchema.optional(),
|
|
1947
|
-
hoverTransform: hoverTransformSchema,
|
|
1948
|
-
hoverColor: hoverColorSchema,
|
|
1949
|
-
// When hoverColor is 'token', this specifies which token to use
|
|
1950
|
-
hoverColorToken: z8.string().optional(),
|
|
1951
|
-
// Gradient settings (if any variant uses gradients)
|
|
1952
|
-
gradientStyle: gradientStyleSchema.optional(),
|
|
1953
|
-
gradientAngle: z8.number().min(0).max(360).optional(),
|
|
1954
|
-
gradientSharpness: gradientSharpnessSchema.optional()
|
|
1955
|
-
});
|
|
1956
|
-
var gradientDirectionSchema = z8.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
1957
|
-
var buttonBackgroundSchema = z8.discriminatedUnion("type", [
|
|
1958
|
-
z8.object({ type: z8.literal("solid"), colorToken: z8.string() }),
|
|
1959
|
-
z8.object({
|
|
1960
|
-
type: z8.literal("gradient"),
|
|
1961
|
-
stops: z8.array(z8.string()).min(2),
|
|
1962
|
-
direction: gradientDirectionSchema
|
|
1963
|
-
}),
|
|
1964
|
-
z8.object({ type: z8.literal("transparent") })
|
|
1965
|
-
]);
|
|
1966
|
-
var effectApplicationSchema = z8.object({
|
|
1967
|
-
effectId: z8.string(),
|
|
1968
|
-
options: z8.record(z8.string(), z8.any()).optional()
|
|
1969
|
-
});
|
|
1970
|
-
var buttonBorderSchema = z8.object({
|
|
1971
|
-
widthClass: z8.string(),
|
|
1972
|
-
colorToken: z8.string()
|
|
1973
|
-
});
|
|
1974
|
-
var variantShadowSchema = z8.object({
|
|
1975
|
-
elevation: z8.enum(["none", "low", "medium", "high"]),
|
|
1976
|
-
softness: z8.enum(["crisp", "soft", "hard"]).nullable(),
|
|
1977
|
-
position: z8.enum(["bottom", "bottom-right"]).default("bottom")
|
|
1978
|
-
});
|
|
1979
|
-
var variantEffectsSchema = z8.object({
|
|
1980
|
-
base: z8.array(effectApplicationSchema).optional(),
|
|
1981
|
-
hover: z8.array(effectApplicationSchema).optional(),
|
|
1982
|
-
active: z8.array(effectApplicationSchema).optional(),
|
|
1983
|
-
focus: z8.array(effectApplicationSchema).optional()
|
|
1984
|
-
});
|
|
1985
|
-
var variantSizeOverridesSchema = z8.object({
|
|
1986
|
-
sm: buttonSizeConfigSchema.optional(),
|
|
1987
|
-
md: buttonSizeConfigSchema.optional(),
|
|
1988
|
-
lg: buttonSizeConfigSchema.optional(),
|
|
1989
|
-
xl: buttonSizeConfigSchema.optional()
|
|
1990
|
-
});
|
|
1991
|
-
var buttonVariantSchema = z8.object({
|
|
1992
|
-
id: z8.string(),
|
|
1993
|
-
name: z8.string().min(1).max(20),
|
|
1994
|
-
enabled: z8.boolean(),
|
|
1995
|
-
priority: prioritySchema,
|
|
1996
|
-
// Base appearance (token-based)
|
|
1997
|
-
background: buttonBackgroundSchema,
|
|
1998
|
-
textColorToken: z8.string(),
|
|
1999
|
-
/** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
|
|
2000
|
-
borderRadius: z8.string().optional(),
|
|
2001
|
-
// Optional shadow override (uses theme.shadow if not specified)
|
|
2002
|
-
shadow: variantShadowSchema.optional(),
|
|
2003
|
-
// Border (optional)
|
|
2004
|
-
border: buttonBorderSchema.optional(),
|
|
2005
|
-
// Hover background token (per-variant override, takes precedence over global hoverColorToken)
|
|
2006
|
-
hoverBackgroundToken: z8.string().optional(),
|
|
2007
|
-
// Effect composition
|
|
2008
|
-
effects: variantEffectsSchema.optional(),
|
|
2009
|
-
// Per-variant size overrides — see VariantSizeOverrides
|
|
2010
|
-
sizes: variantSizeOverridesSchema.optional()
|
|
2011
|
-
});
|
|
2012
|
-
var buttonSystemSchema = z8.object({
|
|
2013
|
-
global: buttonGlobalSettingsSchema,
|
|
2014
|
-
variants: z8.array(buttonVariantSchema).min(1).max(6),
|
|
2015
|
-
sizes: buttonSizesSchema.optional()
|
|
2016
|
-
});
|
|
2017
|
-
|
|
2018
|
-
// ../theme-core/src/buttons/generateButtonCss.ts
|
|
2019
|
-
var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
2020
|
-
|
|
2021
|
-
// ../theme-core/src/buttons/personalities/types.ts
|
|
2022
|
-
import { z as z9 } from "zod";
|
|
2023
|
-
function asButtonPersonalityId(value) {
|
|
2024
|
-
if (value.length === 0) {
|
|
2025
|
-
throw new Error("ButtonPersonalityId must be a non-empty string");
|
|
2026
|
-
}
|
|
2027
|
-
return value;
|
|
2028
|
-
}
|
|
2029
|
-
var buttonPersonalityIdSchema = z9.string().min(1).transform((value) => asButtonPersonalityId(value));
|
|
2030
|
-
var buttonPersonalitySchema = z9.object({
|
|
2031
|
-
id: buttonPersonalityIdSchema,
|
|
2032
|
-
name: z9.string().min(1),
|
|
2033
|
-
description: z9.string().min(1),
|
|
2034
|
-
tags: styleTagsSchema,
|
|
2035
|
-
buttonSystem: buttonSystemSchema
|
|
2036
|
-
});
|
|
2037
|
-
function defineButtonPersonality(input) {
|
|
2038
|
-
return {
|
|
2039
|
-
id: asButtonPersonalityId(input.id),
|
|
2040
|
-
name: input.name,
|
|
2041
|
-
description: input.description,
|
|
2042
|
-
tags: input.tags,
|
|
2043
|
-
buttonSystem: input.buttonSystem
|
|
2044
|
-
};
|
|
2045
|
-
}
|
|
2046
1666
|
|
|
2047
|
-
// ../theme-core/src/buttons/personalities/
|
|
2048
|
-
var
|
|
2049
|
-
id: "
|
|
2050
|
-
name: "
|
|
2051
|
-
description: "
|
|
2052
|
-
tags: { tone: "
|
|
1667
|
+
// ../theme-core/src/buttons/personalities/ink-stamp.ts
|
|
1668
|
+
var inkStamp = defineButtonPersonality({
|
|
1669
|
+
id: "ink-stamp",
|
|
1670
|
+
name: "Ink Stamp",
|
|
1671
|
+
description: "Hand-stamped block-print buttons with a slight lift on hover.",
|
|
1672
|
+
tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
|
|
2053
1673
|
buttonSystem: {
|
|
2054
1674
|
global: {
|
|
2055
1675
|
cornerStyle: "rounded",
|
|
2056
|
-
shadow: "
|
|
2057
|
-
textTransform: "
|
|
2058
|
-
fontWeight:
|
|
1676
|
+
shadow: "none",
|
|
1677
|
+
textTransform: "uppercase",
|
|
1678
|
+
fontWeight: 600,
|
|
2059
1679
|
borderWidth: 1,
|
|
2060
1680
|
hoverTransform: "none",
|
|
2061
|
-
hoverColor: "none"
|
|
1681
|
+
hoverColor: "none",
|
|
1682
|
+
letterSpacing: "loose"
|
|
2062
1683
|
},
|
|
2063
1684
|
sizes: {
|
|
2064
|
-
sm: { padding: "0.
|
|
2065
|
-
md: { padding: "
|
|
2066
|
-
lg: { padding: "
|
|
2067
|
-
xl: { padding: "1.
|
|
1685
|
+
sm: { padding: "0.5rem 1.25rem", fontSize: "text-xs" },
|
|
1686
|
+
md: { padding: "0.75rem 1.75rem", fontSize: "text-sm" },
|
|
1687
|
+
lg: { padding: "0.875rem 2.25rem", fontSize: "text-base" },
|
|
1688
|
+
xl: { padding: "1.125rem 2.75rem", fontSize: "text-lg" }
|
|
2068
1689
|
},
|
|
2069
1690
|
variants: [
|
|
2070
1691
|
{
|
|
@@ -2072,16 +1693,15 @@ var brushedWash = defineButtonPersonality({
|
|
|
2072
1693
|
name: "Primary",
|
|
2073
1694
|
enabled: true,
|
|
2074
1695
|
priority: 1,
|
|
2075
|
-
background: {
|
|
2076
|
-
type: "gradient",
|
|
2077
|
-
stops: ["primary", "accent"],
|
|
2078
|
-
direction: "to-r"
|
|
2079
|
-
},
|
|
1696
|
+
background: { type: "solid", colorToken: "primary" },
|
|
2080
1697
|
textColorToken: "primaryForeground",
|
|
2081
|
-
borderRadius: "rounded-
|
|
2082
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
1698
|
+
borderRadius: "rounded-md",
|
|
2083
1699
|
effects: {
|
|
2084
|
-
hover: [
|
|
1700
|
+
hover: [
|
|
1701
|
+
{ effectId: "drop-shadow", options: { intensity: "medium" } },
|
|
1702
|
+
{ effectId: "scale-up", options: { scale: "1.02" } }
|
|
1703
|
+
],
|
|
1704
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
2085
1705
|
}
|
|
2086
1706
|
},
|
|
2087
1707
|
{
|
|
@@ -2089,16 +1709,12 @@ var brushedWash = defineButtonPersonality({
|
|
|
2089
1709
|
name: "Secondary",
|
|
2090
1710
|
enabled: true,
|
|
2091
1711
|
priority: 2,
|
|
2092
|
-
background: {
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
},
|
|
2097
|
-
textColorToken: "primaryForeground",
|
|
2098
|
-
borderRadius: "rounded-lg",
|
|
2099
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
1712
|
+
background: { type: "transparent" },
|
|
1713
|
+
textColorToken: "primary",
|
|
1714
|
+
borderRadius: "rounded-md",
|
|
1715
|
+
border: { widthClass: "border-2", colorToken: "primary" },
|
|
2100
1716
|
effects: {
|
|
2101
|
-
hover: [{ effectId: "
|
|
1717
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
2102
1718
|
}
|
|
2103
1719
|
},
|
|
2104
1720
|
{
|
|
@@ -2107,9 +1723,9 @@ var brushedWash = defineButtonPersonality({
|
|
|
2107
1723
|
enabled: true,
|
|
2108
1724
|
priority: 3,
|
|
2109
1725
|
background: { type: "transparent" },
|
|
2110
|
-
textColorToken: "
|
|
2111
|
-
borderRadius: "rounded-
|
|
2112
|
-
border: { widthClass: "border", colorToken: "
|
|
1726
|
+
textColorToken: "text",
|
|
1727
|
+
borderRadius: "rounded-md",
|
|
1728
|
+
border: { widthClass: "border-2", colorToken: "border" },
|
|
2113
1729
|
effects: {
|
|
2114
1730
|
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
2115
1731
|
}
|
|
@@ -2120,216 +1736,43 @@ var brushedWash = defineButtonPersonality({
|
|
|
2120
1736
|
enabled: true,
|
|
2121
1737
|
priority: 3,
|
|
2122
1738
|
background: { type: "transparent" },
|
|
2123
|
-
textColorToken: "
|
|
2124
|
-
borderRadius: "rounded-
|
|
1739
|
+
textColorToken: "accent",
|
|
1740
|
+
borderRadius: "rounded-none",
|
|
1741
|
+
sizes: {
|
|
1742
|
+
sm: { padding: "0.375rem 0", fontSize: "text-xs" },
|
|
1743
|
+
md: { padding: "0.5rem 0", fontSize: "text-sm" },
|
|
1744
|
+
lg: { padding: "0.625rem 0", fontSize: "text-base" },
|
|
1745
|
+
xl: { padding: "0.75rem 0", fontSize: "text-lg" }
|
|
1746
|
+
},
|
|
2125
1747
|
effects: {
|
|
2126
|
-
|
|
2127
|
-
{ effectId: "background-on-hover", options: { colorToken: "surface" } }
|
|
2128
|
-
]
|
|
1748
|
+
base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
|
|
2129
1749
|
}
|
|
2130
1750
|
}
|
|
2131
1751
|
]
|
|
2132
1752
|
}
|
|
2133
1753
|
});
|
|
2134
1754
|
|
|
2135
|
-
// ../theme-core/src/buttons/personalities/
|
|
2136
|
-
var
|
|
2137
|
-
id: "
|
|
2138
|
-
name: "
|
|
2139
|
-
description: "
|
|
2140
|
-
tags: { tone: "classic", energy: "calm", motion: "standard", era: "
|
|
1755
|
+
// ../theme-core/src/buttons/personalities/pebble.ts
|
|
1756
|
+
var pebble = defineButtonPersonality({
|
|
1757
|
+
id: "pebble",
|
|
1758
|
+
name: "Pebble",
|
|
1759
|
+
description: "Generous pill buttons with a soft hover lift.",
|
|
1760
|
+
tags: { tone: "classic", energy: "calm", motion: "standard", era: "organic" },
|
|
2141
1761
|
buttonSystem: {
|
|
2142
1762
|
global: {
|
|
2143
|
-
cornerStyle: "
|
|
2144
|
-
shadow: "
|
|
1763
|
+
cornerStyle: "pill",
|
|
1764
|
+
shadow: "none",
|
|
2145
1765
|
textTransform: "none",
|
|
2146
|
-
fontWeight:
|
|
2147
|
-
borderWidth:
|
|
1766
|
+
fontWeight: 500,
|
|
1767
|
+
borderWidth: 2,
|
|
2148
1768
|
hoverTransform: "none",
|
|
2149
1769
|
hoverColor: "none"
|
|
2150
1770
|
},
|
|
2151
|
-
variants: [
|
|
2152
|
-
{
|
|
2153
|
-
id: "primary",
|
|
2154
|
-
name: "Primary",
|
|
2155
|
-
enabled: true,
|
|
2156
|
-
priority: 1,
|
|
2157
|
-
background: { type: "solid", colorToken: "primary" },
|
|
2158
|
-
textColorToken: "primaryForeground",
|
|
2159
|
-
borderRadius: "rounded-md",
|
|
2160
|
-
shadow: { elevation: "medium", softness: "soft", position: "bottom" },
|
|
2161
|
-
effects: {
|
|
2162
|
-
hover: [{ effectId: "darken-background", options: { amount: 60 } }],
|
|
2163
|
-
active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
|
|
2164
|
-
}
|
|
2165
|
-
},
|
|
2166
|
-
{
|
|
2167
|
-
id: "secondary",
|
|
2168
|
-
name: "Secondary",
|
|
2169
|
-
enabled: true,
|
|
2170
|
-
priority: 2,
|
|
2171
|
-
background: { type: "solid", colorToken: "surface" },
|
|
2172
|
-
textColorToken: "text",
|
|
2173
|
-
borderRadius: "rounded-md",
|
|
2174
|
-
border: { widthClass: "border", colorToken: "border" },
|
|
2175
|
-
effects: {
|
|
2176
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
|
|
2177
|
-
}
|
|
2178
|
-
},
|
|
2179
|
-
{
|
|
2180
|
-
id: "outline",
|
|
2181
|
-
name: "Outline",
|
|
2182
|
-
enabled: true,
|
|
2183
|
-
priority: 3,
|
|
2184
|
-
background: { type: "transparent" },
|
|
2185
|
-
textColorToken: "primary",
|
|
2186
|
-
borderRadius: "rounded-md",
|
|
2187
|
-
border: { widthClass: "border", colorToken: "primary" },
|
|
2188
|
-
effects: {
|
|
2189
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
2190
|
-
}
|
|
2191
|
-
},
|
|
2192
|
-
{
|
|
2193
|
-
id: "ghost",
|
|
2194
|
-
name: "Ghost",
|
|
2195
|
-
enabled: true,
|
|
2196
|
-
priority: 3,
|
|
2197
|
-
background: { type: "transparent" },
|
|
2198
|
-
textColorToken: "primary",
|
|
2199
|
-
borderRadius: "rounded-md",
|
|
2200
|
-
effects: {
|
|
2201
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
2202
|
-
}
|
|
2203
|
-
}
|
|
2204
|
-
]
|
|
2205
|
-
}
|
|
2206
|
-
});
|
|
2207
|
-
|
|
2208
|
-
// ../theme-core/src/buttons/personalities/editorial-link.ts
|
|
2209
|
-
var editorialLink = defineButtonPersonality({
|
|
2210
|
-
id: "editorial-link",
|
|
2211
|
-
name: "Editorial Link",
|
|
2212
|
-
description: "Link-style with a growing underline. Refined, typographic.",
|
|
2213
|
-
tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
|
|
2214
|
-
buttonSystem: {
|
|
2215
|
-
global: {
|
|
2216
|
-
cornerStyle: "square",
|
|
2217
|
-
shadow: "none",
|
|
2218
|
-
textTransform: "none",
|
|
2219
|
-
fontWeight: 500,
|
|
2220
|
-
borderWidth: 1,
|
|
2221
|
-
hoverTransform: "none",
|
|
2222
|
-
hoverColor: "none"
|
|
2223
|
-
},
|
|
2224
|
-
variants: [
|
|
2225
|
-
{
|
|
2226
|
-
id: "primary",
|
|
2227
|
-
name: "Primary",
|
|
2228
|
-
enabled: true,
|
|
2229
|
-
priority: 1,
|
|
2230
|
-
background: { type: "transparent" },
|
|
2231
|
-
textColorToken: "text",
|
|
2232
|
-
borderRadius: "rounded-none",
|
|
2233
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
2234
|
-
sizes: {
|
|
2235
|
-
sm: { padding: "0.25rem 0" },
|
|
2236
|
-
md: { padding: "0.5rem 0" },
|
|
2237
|
-
lg: { padding: "0.625rem 0" },
|
|
2238
|
-
xl: { padding: "0.75rem 0" }
|
|
2239
|
-
},
|
|
2240
|
-
effects: {
|
|
2241
|
-
base: [
|
|
2242
|
-
{ effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
|
|
2243
|
-
]
|
|
2244
|
-
}
|
|
2245
|
-
},
|
|
2246
|
-
{
|
|
2247
|
-
id: "secondary",
|
|
2248
|
-
name: "Secondary",
|
|
2249
|
-
enabled: true,
|
|
2250
|
-
priority: 2,
|
|
2251
|
-
background: { type: "transparent" },
|
|
2252
|
-
textColorToken: "mutedText",
|
|
2253
|
-
borderRadius: "rounded-none",
|
|
2254
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
2255
|
-
sizes: {
|
|
2256
|
-
sm: { padding: "0.25rem 0" },
|
|
2257
|
-
md: { padding: "0.5rem 0" },
|
|
2258
|
-
lg: { padding: "0.625rem 0" },
|
|
2259
|
-
xl: { padding: "0.75rem 0" }
|
|
2260
|
-
},
|
|
2261
|
-
effects: {
|
|
2262
|
-
base: [
|
|
2263
|
-
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
|
|
2264
|
-
]
|
|
2265
|
-
}
|
|
2266
|
-
},
|
|
2267
|
-
{
|
|
2268
|
-
id: "outline",
|
|
2269
|
-
name: "Outline",
|
|
2270
|
-
enabled: true,
|
|
2271
|
-
priority: 3,
|
|
2272
|
-
background: { type: "transparent" },
|
|
2273
|
-
textColorToken: "accent",
|
|
2274
|
-
borderRadius: "rounded-none",
|
|
2275
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
2276
|
-
sizes: {
|
|
2277
|
-
sm: { padding: "0.25rem 0" },
|
|
2278
|
-
md: { padding: "0.5rem 0" },
|
|
2279
|
-
lg: { padding: "0.625rem 0" },
|
|
2280
|
-
xl: { padding: "0.75rem 0" }
|
|
2281
|
-
},
|
|
2282
|
-
effects: {
|
|
2283
|
-
base: [
|
|
2284
|
-
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
|
|
2285
|
-
]
|
|
2286
|
-
}
|
|
2287
|
-
},
|
|
2288
|
-
{
|
|
2289
|
-
id: "ghost",
|
|
2290
|
-
name: "Ghost",
|
|
2291
|
-
enabled: true,
|
|
2292
|
-
priority: 3,
|
|
2293
|
-
background: { type: "transparent" },
|
|
2294
|
-
textColorToken: "mutedText",
|
|
2295
|
-
borderRadius: "rounded-none",
|
|
2296
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
2297
|
-
sizes: {
|
|
2298
|
-
sm: { padding: "0.25rem 0" },
|
|
2299
|
-
md: { padding: "0.5rem 0" },
|
|
2300
|
-
lg: { padding: "0.625rem 0" },
|
|
2301
|
-
xl: { padding: "0.75rem 0" }
|
|
2302
|
-
},
|
|
2303
|
-
effects: {
|
|
2304
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
|
|
2305
|
-
}
|
|
2306
|
-
}
|
|
2307
|
-
]
|
|
2308
|
-
}
|
|
2309
|
-
});
|
|
2310
|
-
|
|
2311
|
-
// ../theme-core/src/buttons/personalities/ink-stamp.ts
|
|
2312
|
-
var inkStamp = defineButtonPersonality({
|
|
2313
|
-
id: "ink-stamp",
|
|
2314
|
-
name: "Ink Stamp",
|
|
2315
|
-
description: "Hand-stamped block-print buttons with a slight lift on hover.",
|
|
2316
|
-
tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
|
|
2317
|
-
buttonSystem: {
|
|
2318
|
-
global: {
|
|
2319
|
-
cornerStyle: "rounded",
|
|
2320
|
-
shadow: "none",
|
|
2321
|
-
textTransform: "uppercase",
|
|
2322
|
-
fontWeight: 600,
|
|
2323
|
-
borderWidth: 1,
|
|
2324
|
-
hoverTransform: "none",
|
|
2325
|
-
hoverColor: "none",
|
|
2326
|
-
letterSpacing: "loose"
|
|
2327
|
-
},
|
|
2328
1771
|
sizes: {
|
|
2329
|
-
sm: { padding: "0.
|
|
2330
|
-
md: { padding: "0.
|
|
2331
|
-
lg: { padding: "
|
|
2332
|
-
xl: { padding: "1.
|
|
1772
|
+
sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
|
|
1773
|
+
md: { padding: "0.875rem 2.25rem" },
|
|
1774
|
+
lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
|
|
1775
|
+
xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
|
|
2333
1776
|
},
|
|
2334
1777
|
variants: [
|
|
2335
1778
|
{
|
|
@@ -2339,13 +1782,12 @@ var inkStamp = defineButtonPersonality({
|
|
|
2339
1782
|
priority: 1,
|
|
2340
1783
|
background: { type: "solid", colorToken: "primary" },
|
|
2341
1784
|
textColorToken: "primaryForeground",
|
|
2342
|
-
borderRadius: "rounded-
|
|
1785
|
+
borderRadius: "rounded-full",
|
|
2343
1786
|
effects: {
|
|
2344
1787
|
hover: [
|
|
2345
|
-
{ effectId: "
|
|
2346
|
-
{ effectId: "
|
|
2347
|
-
]
|
|
2348
|
-
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
1788
|
+
{ effectId: "scale-up", options: { scale: "1.03" } },
|
|
1789
|
+
{ effectId: "drop-shadow", options: { intensity: "medium" } }
|
|
1790
|
+
]
|
|
2349
1791
|
}
|
|
2350
1792
|
},
|
|
2351
1793
|
{
|
|
@@ -2355,10 +1797,10 @@ var inkStamp = defineButtonPersonality({
|
|
|
2355
1797
|
priority: 2,
|
|
2356
1798
|
background: { type: "transparent" },
|
|
2357
1799
|
textColorToken: "primary",
|
|
2358
|
-
borderRadius: "rounded-
|
|
2359
|
-
border: { widthClass: "border-2", colorToken: "
|
|
1800
|
+
borderRadius: "rounded-full",
|
|
1801
|
+
border: { widthClass: "border-2", colorToken: "accent" },
|
|
2360
1802
|
effects: {
|
|
2361
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "
|
|
1803
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "accent" } }]
|
|
2362
1804
|
}
|
|
2363
1805
|
},
|
|
2364
1806
|
{
|
|
@@ -2368,8 +1810,8 @@ var inkStamp = defineButtonPersonality({
|
|
|
2368
1810
|
priority: 3,
|
|
2369
1811
|
background: { type: "transparent" },
|
|
2370
1812
|
textColorToken: "text",
|
|
2371
|
-
borderRadius: "rounded-
|
|
2372
|
-
border: { widthClass: "border
|
|
1813
|
+
borderRadius: "rounded-full",
|
|
1814
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
2373
1815
|
effects: {
|
|
2374
1816
|
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
2375
1817
|
}
|
|
@@ -2380,44 +1822,38 @@ var inkStamp = defineButtonPersonality({
|
|
|
2380
1822
|
enabled: true,
|
|
2381
1823
|
priority: 3,
|
|
2382
1824
|
background: { type: "transparent" },
|
|
2383
|
-
textColorToken: "
|
|
2384
|
-
borderRadius: "rounded-
|
|
1825
|
+
textColorToken: "primary",
|
|
1826
|
+
borderRadius: "rounded-full",
|
|
2385
1827
|
sizes: {
|
|
2386
|
-
sm: { padding: "0.375rem 0", fontSize: "text-
|
|
2387
|
-
md: { padding: "0.5rem
|
|
2388
|
-
lg: { padding: "0.625rem
|
|
2389
|
-
xl: { padding: "0.75rem
|
|
1828
|
+
sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
|
|
1829
|
+
md: { padding: "0.5rem 1rem" },
|
|
1830
|
+
lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
|
|
1831
|
+
xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
|
|
2390
1832
|
},
|
|
2391
1833
|
effects: {
|
|
2392
|
-
|
|
1834
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
|
|
2393
1835
|
}
|
|
2394
1836
|
}
|
|
2395
1837
|
]
|
|
2396
1838
|
}
|
|
2397
1839
|
});
|
|
2398
1840
|
|
|
2399
|
-
// ../theme-core/src/buttons/personalities/
|
|
2400
|
-
var
|
|
2401
|
-
id: "
|
|
2402
|
-
name: "
|
|
2403
|
-
description: "
|
|
2404
|
-
tags: { tone: "classic", energy: "calm", motion: "
|
|
1841
|
+
// ../theme-core/src/buttons/personalities/soft-pill.ts
|
|
1842
|
+
var softPill = defineButtonPersonality({
|
|
1843
|
+
id: "soft-pill",
|
|
1844
|
+
name: "Soft Pill",
|
|
1845
|
+
description: "Rounded pills with a gentle lift on hover. Quietly modern.",
|
|
1846
|
+
tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
|
|
2405
1847
|
buttonSystem: {
|
|
2406
1848
|
global: {
|
|
2407
1849
|
cornerStyle: "pill",
|
|
2408
|
-
shadow: "
|
|
1850
|
+
shadow: "low",
|
|
2409
1851
|
textTransform: "none",
|
|
2410
1852
|
fontWeight: 500,
|
|
2411
1853
|
borderWidth: 2,
|
|
2412
|
-
hoverTransform: "
|
|
1854
|
+
hoverTransform: "lift",
|
|
2413
1855
|
hoverColor: "none"
|
|
2414
1856
|
},
|
|
2415
|
-
sizes: {
|
|
2416
|
-
sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
|
|
2417
|
-
md: { padding: "0.875rem 2.25rem" },
|
|
2418
|
-
lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
|
|
2419
|
-
xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
|
|
2420
|
-
},
|
|
2421
1857
|
variants: [
|
|
2422
1858
|
{
|
|
2423
1859
|
id: "primary",
|
|
@@ -2427,11 +1863,10 @@ var pebble = defineButtonPersonality({
|
|
|
2427
1863
|
background: { type: "solid", colorToken: "primary" },
|
|
2428
1864
|
textColorToken: "primaryForeground",
|
|
2429
1865
|
borderRadius: "rounded-full",
|
|
1866
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
2430
1867
|
effects: {
|
|
2431
|
-
hover: [
|
|
2432
|
-
|
|
2433
|
-
{ effectId: "drop-shadow", options: { intensity: "medium" } }
|
|
2434
|
-
]
|
|
1868
|
+
hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
|
|
1869
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
2435
1870
|
}
|
|
2436
1871
|
},
|
|
2437
1872
|
{
|
|
@@ -2442,9 +1877,9 @@ var pebble = defineButtonPersonality({
|
|
|
2442
1877
|
background: { type: "transparent" },
|
|
2443
1878
|
textColorToken: "primary",
|
|
2444
1879
|
borderRadius: "rounded-full",
|
|
2445
|
-
border: { widthClass: "border-2", colorToken: "
|
|
1880
|
+
border: { widthClass: "border-2", colorToken: "primary" },
|
|
2446
1881
|
effects: {
|
|
2447
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "
|
|
1882
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
2448
1883
|
}
|
|
2449
1884
|
},
|
|
2450
1885
|
{
|
|
@@ -2466,86 +1901,7 @@ var pebble = defineButtonPersonality({
|
|
|
2466
1901
|
enabled: true,
|
|
2467
1902
|
priority: 3,
|
|
2468
1903
|
background: { type: "transparent" },
|
|
2469
|
-
textColorToken: "
|
|
2470
|
-
borderRadius: "rounded-full",
|
|
2471
|
-
sizes: {
|
|
2472
|
-
sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
|
|
2473
|
-
md: { padding: "0.5rem 1rem" },
|
|
2474
|
-
lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
|
|
2475
|
-
xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
|
|
2476
|
-
},
|
|
2477
|
-
effects: {
|
|
2478
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
|
|
2479
|
-
}
|
|
2480
|
-
}
|
|
2481
|
-
]
|
|
2482
|
-
}
|
|
2483
|
-
});
|
|
2484
|
-
|
|
2485
|
-
// ../theme-core/src/buttons/personalities/soft-pill.ts
|
|
2486
|
-
var softPill = defineButtonPersonality({
|
|
2487
|
-
id: "soft-pill",
|
|
2488
|
-
name: "Soft Pill",
|
|
2489
|
-
description: "Rounded pills with a gentle lift on hover. Quietly modern.",
|
|
2490
|
-
tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
|
|
2491
|
-
buttonSystem: {
|
|
2492
|
-
global: {
|
|
2493
|
-
cornerStyle: "pill",
|
|
2494
|
-
shadow: "low",
|
|
2495
|
-
textTransform: "none",
|
|
2496
|
-
fontWeight: 500,
|
|
2497
|
-
borderWidth: 2,
|
|
2498
|
-
hoverTransform: "lift",
|
|
2499
|
-
hoverColor: "none"
|
|
2500
|
-
},
|
|
2501
|
-
variants: [
|
|
2502
|
-
{
|
|
2503
|
-
id: "primary",
|
|
2504
|
-
name: "Primary",
|
|
2505
|
-
enabled: true,
|
|
2506
|
-
priority: 1,
|
|
2507
|
-
background: { type: "solid", colorToken: "primary" },
|
|
2508
|
-
textColorToken: "primaryForeground",
|
|
2509
|
-
borderRadius: "rounded-full",
|
|
2510
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
2511
|
-
effects: {
|
|
2512
|
-
hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
|
|
2513
|
-
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
2514
|
-
}
|
|
2515
|
-
},
|
|
2516
|
-
{
|
|
2517
|
-
id: "secondary",
|
|
2518
|
-
name: "Secondary",
|
|
2519
|
-
enabled: true,
|
|
2520
|
-
priority: 2,
|
|
2521
|
-
background: { type: "transparent" },
|
|
2522
|
-
textColorToken: "primary",
|
|
2523
|
-
borderRadius: "rounded-full",
|
|
2524
|
-
border: { widthClass: "border-2", colorToken: "primary" },
|
|
2525
|
-
effects: {
|
|
2526
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
2527
|
-
}
|
|
2528
|
-
},
|
|
2529
|
-
{
|
|
2530
|
-
id: "outline",
|
|
2531
|
-
name: "Outline",
|
|
2532
|
-
enabled: true,
|
|
2533
|
-
priority: 3,
|
|
2534
|
-
background: { type: "transparent" },
|
|
2535
|
-
textColorToken: "text",
|
|
2536
|
-
borderRadius: "rounded-full",
|
|
2537
|
-
border: { widthClass: "border", colorToken: "border" },
|
|
2538
|
-
effects: {
|
|
2539
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
2540
|
-
}
|
|
2541
|
-
},
|
|
2542
|
-
{
|
|
2543
|
-
id: "ghost",
|
|
2544
|
-
name: "Ghost",
|
|
2545
|
-
enabled: true,
|
|
2546
|
-
priority: 3,
|
|
2547
|
-
background: { type: "transparent" },
|
|
2548
|
-
textColorToken: "text",
|
|
1904
|
+
textColorToken: "text",
|
|
2549
1905
|
borderRadius: "rounded-full",
|
|
2550
1906
|
effects: {
|
|
2551
1907
|
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
@@ -2568,49 +1924,101 @@ var personalitiesById = new Map(
|
|
|
2568
1924
|
buttonPersonalities.map((p) => [p.id, p])
|
|
2569
1925
|
);
|
|
2570
1926
|
|
|
1927
|
+
// ../theme-core/src/palette/variants/types.ts
|
|
1928
|
+
import { z as z17 } from "zod";
|
|
1929
|
+
|
|
1930
|
+
// ../theme-core/src/schema.ts
|
|
1931
|
+
import { z as z16 } from "zod";
|
|
1932
|
+
|
|
1933
|
+
// ../theme-core/src/lib/media.ts
|
|
1934
|
+
import z6 from "zod";
|
|
1935
|
+
var hotspotSchema = z6.object({
|
|
1936
|
+
x: z6.number().min(0).max(1),
|
|
1937
|
+
y: z6.number().min(0).max(1),
|
|
1938
|
+
radius: z6.number().optional()
|
|
1939
|
+
});
|
|
1940
|
+
var rotationSchema = z6.union([z6.literal(0), z6.literal(90), z6.literal(180), z6.literal(270)]);
|
|
1941
|
+
var rectSchema = z6.tuple([z6.number(), z6.number(), z6.number(), z6.number()]);
|
|
1942
|
+
var aspectCropSchema = z6.object({
|
|
1943
|
+
aspect: z6.preprocess((value) => value == null ? void 0 : value, z6.string().optional()),
|
|
1944
|
+
rect: z6.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
1945
|
+
hotspot: z6.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
1946
|
+
rotation: z6.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
1947
|
+
});
|
|
1948
|
+
var transformSchema = z6.object({
|
|
1949
|
+
aspectCrops: z6.preprocess((value) => {
|
|
1950
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
1951
|
+
return void 0;
|
|
1952
|
+
}
|
|
1953
|
+
return value;
|
|
1954
|
+
}, z6.record(z6.string(), aspectCropSchema.catch({}))).optional(),
|
|
1955
|
+
rect: rectSchema.optional(),
|
|
1956
|
+
hotspot: hotspotSchema.optional(),
|
|
1957
|
+
rotation: rotationSchema.optional()
|
|
1958
|
+
});
|
|
1959
|
+
var mediaSchema = z6.object({
|
|
1960
|
+
type: z6.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
|
|
1961
|
+
purpose: z6.string().optional(),
|
|
1962
|
+
placeholder: z6.boolean().default(true).optional(),
|
|
1963
|
+
assetId: z6.string().optional(),
|
|
1964
|
+
identifier: z6.string().optional(),
|
|
1965
|
+
src: z6.string().optional(),
|
|
1966
|
+
alt: z6.string().optional(),
|
|
1967
|
+
filename: z6.string().optional(),
|
|
1968
|
+
mimeType: z6.string().optional(),
|
|
1969
|
+
width: z6.number().optional(),
|
|
1970
|
+
height: z6.number().optional(),
|
|
1971
|
+
storageBucket: z6.string().optional(),
|
|
1972
|
+
storagePath: z6.string().optional(),
|
|
1973
|
+
transform: transformSchema.optional()
|
|
1974
|
+
});
|
|
1975
|
+
|
|
1976
|
+
// ../theme-core/src/buttons/generateButtonCss.ts
|
|
1977
|
+
var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
1978
|
+
|
|
2571
1979
|
// ../theme-core/src/cards/types.ts
|
|
2572
|
-
import { z as
|
|
2573
|
-
var cardSpacingSchema =
|
|
2574
|
-
var gradientDirectionSchema2 =
|
|
2575
|
-
var cardBackgroundSchema =
|
|
2576
|
-
|
|
2577
|
-
|
|
2578
|
-
type:
|
|
2579
|
-
fromToken:
|
|
2580
|
-
toToken:
|
|
1980
|
+
import { z as z7 } from "zod";
|
|
1981
|
+
var cardSpacingSchema = z7.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
|
|
1982
|
+
var gradientDirectionSchema2 = z7.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
1983
|
+
var cardBackgroundSchema = z7.discriminatedUnion("type", [
|
|
1984
|
+
z7.object({ type: z7.literal("solid"), colorToken: z7.string() }),
|
|
1985
|
+
z7.object({
|
|
1986
|
+
type: z7.literal("gradient"),
|
|
1987
|
+
fromToken: z7.string(),
|
|
1988
|
+
toToken: z7.string(),
|
|
2581
1989
|
direction: gradientDirectionSchema2
|
|
2582
1990
|
}),
|
|
2583
|
-
|
|
1991
|
+
z7.object({ type: z7.literal("transparent") })
|
|
2584
1992
|
]);
|
|
2585
|
-
var cardBorderSchema =
|
|
2586
|
-
widthClass:
|
|
2587
|
-
colorToken:
|
|
2588
|
-
});
|
|
2589
|
-
var cardVariantSchema =
|
|
2590
|
-
id:
|
|
2591
|
-
name:
|
|
2592
|
-
enabled:
|
|
2593
|
-
priority:
|
|
1993
|
+
var cardBorderSchema = z7.object({
|
|
1994
|
+
widthClass: z7.string(),
|
|
1995
|
+
colorToken: z7.string()
|
|
1996
|
+
});
|
|
1997
|
+
var cardVariantSchema = z7.object({
|
|
1998
|
+
id: z7.string(),
|
|
1999
|
+
name: z7.string().min(1).max(20),
|
|
2000
|
+
enabled: z7.boolean(),
|
|
2001
|
+
priority: z7.union([z7.literal(1), z7.literal(2), z7.literal(3)]),
|
|
2594
2002
|
// Appearance (token-based)
|
|
2595
2003
|
background: cardBackgroundSchema,
|
|
2596
2004
|
spacing: cardSpacingSchema,
|
|
2597
2005
|
// Optional overrides (uses theme defaults if not specified)
|
|
2598
|
-
shadow:
|
|
2599
|
-
elevation:
|
|
2600
|
-
softness:
|
|
2601
|
-
position:
|
|
2006
|
+
shadow: z7.object({
|
|
2007
|
+
elevation: z7.enum(["none", "low", "medium", "high"]),
|
|
2008
|
+
softness: z7.enum(["crisp", "soft", "hard"]).nullable(),
|
|
2009
|
+
position: z7.enum(["bottom", "bottom-right"]).default("bottom")
|
|
2602
2010
|
}).optional(),
|
|
2603
|
-
corners:
|
|
2011
|
+
corners: z7.enum(["square", "soft", "rounded", "pill"]).optional(),
|
|
2604
2012
|
// Border (optional)
|
|
2605
2013
|
border: cardBorderSchema.optional()
|
|
2606
2014
|
});
|
|
2607
|
-
var cardSystemSchema =
|
|
2608
|
-
variants:
|
|
2015
|
+
var cardSystemSchema = z7.object({
|
|
2016
|
+
variants: z7.array(cardVariantSchema).min(1).max(3)
|
|
2609
2017
|
});
|
|
2610
2018
|
|
|
2611
2019
|
// ../theme-core/src/accordions/types.ts
|
|
2612
|
-
import { z as
|
|
2613
|
-
var accordionIconSchema =
|
|
2020
|
+
import { z as z8 } from "zod";
|
|
2021
|
+
var accordionIconSchema = z8.enum([
|
|
2614
2022
|
"plus-minus",
|
|
2615
2023
|
// + becomes - (swap or rotate 90°)
|
|
2616
2024
|
"chevron",
|
|
@@ -2622,180 +2030,180 @@ var accordionIconSchema = z11.enum([
|
|
|
2622
2030
|
"circle-plus-minus"
|
|
2623
2031
|
// ⊕ becomes ⊖ (swap with fade)
|
|
2624
2032
|
]);
|
|
2625
|
-
var accordionSystemSchema =
|
|
2033
|
+
var accordionSystemSchema = z8.object({
|
|
2626
2034
|
// Visual styling (solid color only - gradients can be added later if needed)
|
|
2627
|
-
background:
|
|
2628
|
-
type:
|
|
2629
|
-
colorToken:
|
|
2035
|
+
background: z8.object({
|
|
2036
|
+
type: z8.literal("solid"),
|
|
2037
|
+
colorToken: z8.string()
|
|
2630
2038
|
}),
|
|
2631
2039
|
// Spacing (padding inside items)
|
|
2632
|
-
spacing:
|
|
2040
|
+
spacing: z8.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
|
|
2633
2041
|
// Border radius (null = inherit from theme.corners)
|
|
2634
|
-
corners:
|
|
2042
|
+
corners: z8.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
2635
2043
|
// Border styling (null = inherit from theme.border)
|
|
2636
|
-
border:
|
|
2637
|
-
widthClass:
|
|
2044
|
+
border: z8.object({
|
|
2045
|
+
widthClass: z8.string(),
|
|
2638
2046
|
// e.g., 'border', 'border-2', 'border-0'
|
|
2639
|
-
colorToken:
|
|
2047
|
+
colorToken: z8.string()
|
|
2640
2048
|
}).nullable(),
|
|
2641
2049
|
// Shadow (null = inherit from theme.shadow)
|
|
2642
|
-
shadow:
|
|
2643
|
-
elevation:
|
|
2644
|
-
softness:
|
|
2645
|
-
position:
|
|
2050
|
+
shadow: z8.object({
|
|
2051
|
+
elevation: z8.enum(["none", "low", "medium", "high"]),
|
|
2052
|
+
softness: z8.enum(["soft", "crisp", "hard"]).nullable(),
|
|
2053
|
+
position: z8.enum(["bottom", "bottom-right"])
|
|
2646
2054
|
}).nullable(),
|
|
2647
2055
|
// Icon style and animation
|
|
2648
|
-
icon:
|
|
2056
|
+
icon: z8.object({
|
|
2649
2057
|
style: accordionIconSchema,
|
|
2650
|
-
position:
|
|
2651
|
-
size:
|
|
2058
|
+
position: z8.enum(["left", "right"]),
|
|
2059
|
+
size: z8.enum(["sm", "md", "lg"])
|
|
2652
2060
|
}),
|
|
2653
2061
|
// Trigger (question) styling
|
|
2654
|
-
trigger:
|
|
2655
|
-
textColorToken:
|
|
2656
|
-
fontWeight:
|
|
2062
|
+
trigger: z8.object({
|
|
2063
|
+
textColorToken: z8.string(),
|
|
2064
|
+
fontWeight: z8.enum(["regular", "medium", "semibold", "bold"]).nullable()
|
|
2657
2065
|
// null = inherit from theme
|
|
2658
2066
|
}),
|
|
2659
2067
|
// Hover state styling
|
|
2660
|
-
hover:
|
|
2661
|
-
backgroundColorToken:
|
|
2662
|
-
textColorToken:
|
|
2663
|
-
borderColorToken:
|
|
2068
|
+
hover: z8.object({
|
|
2069
|
+
backgroundColorToken: z8.string().optional(),
|
|
2070
|
+
textColorToken: z8.string().optional(),
|
|
2071
|
+
borderColorToken: z8.string().optional()
|
|
2664
2072
|
}),
|
|
2665
2073
|
// Content (answer) styling
|
|
2666
|
-
content:
|
|
2667
|
-
textColorToken:
|
|
2074
|
+
content: z8.object({
|
|
2075
|
+
textColorToken: z8.string()
|
|
2668
2076
|
})
|
|
2669
2077
|
});
|
|
2670
2078
|
|
|
2671
2079
|
// ../theme-core/src/inputs/types.ts
|
|
2672
|
-
import { z as
|
|
2673
|
-
var inputSystemSchema =
|
|
2080
|
+
import { z as z9 } from "zod";
|
|
2081
|
+
var inputSystemSchema = z9.object({
|
|
2674
2082
|
// Base styling (applied to all inputs)
|
|
2675
|
-
base:
|
|
2676
|
-
background:
|
|
2677
|
-
|
|
2678
|
-
type:
|
|
2679
|
-
colorToken:
|
|
2083
|
+
base: z9.object({
|
|
2084
|
+
background: z9.union([
|
|
2085
|
+
z9.object({
|
|
2086
|
+
type: z9.literal("solid"),
|
|
2087
|
+
colorToken: z9.string()
|
|
2680
2088
|
}),
|
|
2681
|
-
|
|
2682
|
-
type:
|
|
2089
|
+
z9.object({
|
|
2090
|
+
type: z9.literal("transparent")
|
|
2683
2091
|
})
|
|
2684
2092
|
]),
|
|
2685
|
-
textColorToken:
|
|
2686
|
-
border:
|
|
2687
|
-
widthClass:
|
|
2093
|
+
textColorToken: z9.string(),
|
|
2094
|
+
border: z9.object({
|
|
2095
|
+
widthClass: z9.string(),
|
|
2688
2096
|
// e.g., 'border', 'border-2'
|
|
2689
|
-
colorToken:
|
|
2690
|
-
style:
|
|
2097
|
+
colorToken: z9.string(),
|
|
2098
|
+
style: z9.enum(["all", "underline"]).optional()
|
|
2691
2099
|
}),
|
|
2692
|
-
corners:
|
|
2100
|
+
corners: z9.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
2693
2101
|
// null = inherit from theme.corners
|
|
2694
|
-
shadow:
|
|
2695
|
-
elevation:
|
|
2696
|
-
softness:
|
|
2102
|
+
shadow: z9.object({
|
|
2103
|
+
elevation: z9.enum(["none", "low", "medium"]),
|
|
2104
|
+
softness: z9.enum(["soft", "crisp", "hard"]).nullable()
|
|
2697
2105
|
}).nullable(),
|
|
2698
|
-
spacing:
|
|
2106
|
+
spacing: z9.enum(["compact", "cozy", "medium", "comfortable"]),
|
|
2699
2107
|
// padding inside inputs
|
|
2700
|
-
fontSize:
|
|
2108
|
+
fontSize: z9.enum(["sm", "base", "lg"])
|
|
2701
2109
|
}),
|
|
2702
2110
|
// Label styling
|
|
2703
|
-
label:
|
|
2704
|
-
textColorToken:
|
|
2705
|
-
fontWeight:
|
|
2706
|
-
fontSize:
|
|
2707
|
-
textTransform:
|
|
2708
|
-
letterSpacing:
|
|
2709
|
-
opacity:
|
|
2111
|
+
label: z9.object({
|
|
2112
|
+
textColorToken: z9.string(),
|
|
2113
|
+
fontWeight: z9.enum(["regular", "medium", "semibold", "bold", "black"]),
|
|
2114
|
+
fontSize: z9.enum(["2xs", "xs", "sm", "base"]),
|
|
2115
|
+
textTransform: z9.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
|
|
2116
|
+
letterSpacing: z9.enum(["normal", "wide", "wider", "widest"]).optional(),
|
|
2117
|
+
opacity: z9.number().min(0.2).max(1).optional()
|
|
2710
2118
|
}),
|
|
2711
2119
|
// Focus state
|
|
2712
|
-
focus:
|
|
2713
|
-
ringColorToken:
|
|
2714
|
-
ringWidth:
|
|
2715
|
-
borderColorToken:
|
|
2120
|
+
focus: z9.object({
|
|
2121
|
+
ringColorToken: z9.string(),
|
|
2122
|
+
ringWidth: z9.enum(["0", "1", "2", "3"]),
|
|
2123
|
+
borderColorToken: z9.string().optional()
|
|
2716
2124
|
// Change border color on focus
|
|
2717
2125
|
}),
|
|
2718
2126
|
// Error state (for validation feedback)
|
|
2719
|
-
error:
|
|
2720
|
-
borderColorToken:
|
|
2721
|
-
textColorToken:
|
|
2127
|
+
error: z9.object({
|
|
2128
|
+
borderColorToken: z9.string(),
|
|
2129
|
+
textColorToken: z9.string()
|
|
2722
2130
|
}),
|
|
2723
2131
|
// Disabled state
|
|
2724
|
-
disabled:
|
|
2725
|
-
backgroundColorToken:
|
|
2726
|
-
textColorToken:
|
|
2727
|
-
opacity:
|
|
2132
|
+
disabled: z9.object({
|
|
2133
|
+
backgroundColorToken: z9.string(),
|
|
2134
|
+
textColorToken: z9.string(),
|
|
2135
|
+
opacity: z9.number().min(0.3).max(0.7)
|
|
2728
2136
|
})
|
|
2729
2137
|
});
|
|
2730
2138
|
|
|
2731
2139
|
// ../theme-core/src/gradients/types.ts
|
|
2732
|
-
import { z as
|
|
2733
|
-
var gradientStopSchema =
|
|
2734
|
-
color:
|
|
2140
|
+
import { z as z10 } from "zod";
|
|
2141
|
+
var gradientStopSchema = z10.object({
|
|
2142
|
+
color: z10.string(),
|
|
2735
2143
|
// Theme color token name (e.g., 'primary-500')
|
|
2736
|
-
position:
|
|
2144
|
+
position: z10.number().min(0).max(100)
|
|
2737
2145
|
// Percentage 0-100
|
|
2738
2146
|
});
|
|
2739
|
-
var gradientConfigSchema =
|
|
2740
|
-
type:
|
|
2741
|
-
angle:
|
|
2147
|
+
var gradientConfigSchema = z10.object({
|
|
2148
|
+
type: z10.enum(["linear", "radial"]),
|
|
2149
|
+
angle: z10.number().min(0).max(360).optional(),
|
|
2742
2150
|
// For linear gradients (degrees)
|
|
2743
|
-
position:
|
|
2151
|
+
position: z10.string().optional(),
|
|
2744
2152
|
// For radial gradients ('center', 'top left', etc.)
|
|
2745
|
-
stops:
|
|
2153
|
+
stops: z10.array(gradientStopSchema).min(2)
|
|
2746
2154
|
});
|
|
2747
2155
|
|
|
2748
2156
|
// ../theme-core/src/navigation/types.ts
|
|
2749
|
-
import { z as
|
|
2157
|
+
import { z as z12 } from "zod";
|
|
2750
2158
|
|
|
2751
2159
|
// ../theme-core/src/interactive/baseSchema.ts
|
|
2752
|
-
import { z as
|
|
2753
|
-
var interactiveTypographySchema =
|
|
2160
|
+
import { z as z11 } from "zod";
|
|
2161
|
+
var interactiveTypographySchema = z11.object({
|
|
2754
2162
|
/** Font family source */
|
|
2755
|
-
typography:
|
|
2163
|
+
typography: z11.enum(["body", "heading"]).default("body"),
|
|
2756
2164
|
/** Font weight */
|
|
2757
|
-
fontWeight:
|
|
2165
|
+
fontWeight: z11.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
|
|
2758
2166
|
/** Text transform */
|
|
2759
|
-
textTransform:
|
|
2167
|
+
textTransform: z11.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
2760
2168
|
/** Italic style */
|
|
2761
|
-
italic:
|
|
2169
|
+
italic: z11.boolean().default(false)
|
|
2762
2170
|
});
|
|
2763
|
-
var effectApplicationSchema2 =
|
|
2171
|
+
var effectApplicationSchema2 = z11.object({
|
|
2764
2172
|
/** Effect preset ID */
|
|
2765
|
-
effectId:
|
|
2173
|
+
effectId: z11.string(),
|
|
2766
2174
|
/** User-provided customization options */
|
|
2767
|
-
options:
|
|
2175
|
+
options: z11.record(z11.string(), z11.any()).optional()
|
|
2768
2176
|
});
|
|
2769
|
-
var effectCompositionSchema =
|
|
2177
|
+
var effectCompositionSchema = z11.object({
|
|
2770
2178
|
/** Effects always applied */
|
|
2771
|
-
base:
|
|
2179
|
+
base: z11.array(effectApplicationSchema2).optional(),
|
|
2772
2180
|
/** Effects applied on hover */
|
|
2773
|
-
hover:
|
|
2181
|
+
hover: z11.array(effectApplicationSchema2).optional(),
|
|
2774
2182
|
/** Effects applied on active/pressed */
|
|
2775
|
-
active:
|
|
2183
|
+
active: z11.array(effectApplicationSchema2).optional(),
|
|
2776
2184
|
/** Effects applied on focus */
|
|
2777
|
-
focus:
|
|
2185
|
+
focus: z11.array(effectApplicationSchema2).optional()
|
|
2778
2186
|
});
|
|
2779
2187
|
|
|
2780
2188
|
// ../theme-core/src/navigation/types.ts
|
|
2781
|
-
var navLinkPaddingSchema =
|
|
2782
|
-
var navLinkPaddingXSchema =
|
|
2783
|
-
var navLinkBorderRadiusSchema =
|
|
2784
|
-
var navLinkTextSizeSchema =
|
|
2785
|
-
var navLinkLetterSpacingSchema =
|
|
2786
|
-
var navLinkStyleSchema =
|
|
2189
|
+
var navLinkPaddingSchema = z12.enum(["none", "compact", "default"]);
|
|
2190
|
+
var navLinkPaddingXSchema = z12.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
2191
|
+
var navLinkBorderRadiusSchema = z12.enum(["none", "sm", "md", "full"]);
|
|
2192
|
+
var navLinkTextSizeSchema = z12.enum(["xs", "sm", "base", "lg"]);
|
|
2193
|
+
var navLinkLetterSpacingSchema = z12.enum(["normal", "wide", "wider", "widest"]);
|
|
2194
|
+
var navLinkStyleSchema = z12.object({
|
|
2787
2195
|
/** Display name for the style */
|
|
2788
|
-
name:
|
|
2196
|
+
name: z12.string().min(1).max(30).optional(),
|
|
2789
2197
|
/** Typography settings (inherited from interactive base) */
|
|
2790
2198
|
...interactiveTypographySchema.shape,
|
|
2791
2199
|
/** Text color token */
|
|
2792
|
-
colorToken:
|
|
2200
|
+
colorToken: z12.string().default("text"),
|
|
2793
2201
|
/** Optional text size override */
|
|
2794
2202
|
textSize: navLinkTextSizeSchema.optional(),
|
|
2795
2203
|
/** Optional letter spacing override */
|
|
2796
2204
|
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
2797
2205
|
/** Hover/active color token (for color-change effects) */
|
|
2798
|
-
hoverColorToken:
|
|
2206
|
+
hoverColorToken: z12.string().nullable().optional(),
|
|
2799
2207
|
/** Padding preset */
|
|
2800
2208
|
padding: navLinkPaddingSchema.default("compact"),
|
|
2801
2209
|
/** Horizontal padding override (overrides horizontal component of padding preset) */
|
|
@@ -2807,7 +2215,7 @@ var navLinkStyleSchema = z15.object({
|
|
|
2807
2215
|
});
|
|
2808
2216
|
|
|
2809
2217
|
// ../theme-core/src/customCss/validation.ts
|
|
2810
|
-
import { z as
|
|
2218
|
+
import { z as z13 } from "zod";
|
|
2811
2219
|
var FORBIDDEN_SELECTORS = [":root", "html", "body"];
|
|
2812
2220
|
var UNIVERSAL_SELECTOR = "*";
|
|
2813
2221
|
var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
|
|
@@ -2849,7 +2257,7 @@ function containsForbiddenSelector(selector) {
|
|
|
2849
2257
|
}
|
|
2850
2258
|
return false;
|
|
2851
2259
|
}
|
|
2852
|
-
var selectorSchema =
|
|
2260
|
+
var selectorSchema = z13.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
|
|
2853
2261
|
(s) => !containsForbiddenSelector(s),
|
|
2854
2262
|
{ message: "Global selectors (:root, html, body, *) are not allowed" }
|
|
2855
2263
|
);
|
|
@@ -2859,38 +2267,38 @@ function containsRemoteUrl(value) {
|
|
|
2859
2267
|
function containsJavascriptUrl(value) {
|
|
2860
2268
|
return JAVASCRIPT_URL_PATTERN.test(value);
|
|
2861
2269
|
}
|
|
2862
|
-
var declarationValueSchema =
|
|
2270
|
+
var declarationValueSchema = z13.string().max(500, "Declaration value too long (max 500 characters)").refine(
|
|
2863
2271
|
(v) => !containsRemoteUrl(v),
|
|
2864
2272
|
{ message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
|
|
2865
2273
|
).refine(
|
|
2866
2274
|
(v) => !containsJavascriptUrl(v),
|
|
2867
2275
|
{ message: "javascript: URLs are not allowed" }
|
|
2868
2276
|
);
|
|
2869
|
-
var declarationsSchema =
|
|
2870
|
-
|
|
2277
|
+
var declarationsSchema = z13.record(
|
|
2278
|
+
z13.string().min(1).max(100),
|
|
2871
2279
|
// property name
|
|
2872
2280
|
declarationValueSchema
|
|
2873
2281
|
// property value
|
|
2874
2282
|
);
|
|
2875
|
-
var customCssRuleSchema =
|
|
2876
|
-
id:
|
|
2283
|
+
var customCssRuleSchema = z13.object({
|
|
2284
|
+
id: z13.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
|
|
2877
2285
|
selector: selectorSchema,
|
|
2878
2286
|
declarations: declarationsSchema
|
|
2879
2287
|
});
|
|
2880
2288
|
var blockCustomCssRuleSchema = customCssRuleSchema.extend({
|
|
2881
|
-
blockKind:
|
|
2289
|
+
blockKind: z13.string().min(1, "Block kind is required").max(50, "Block kind too long")
|
|
2882
2290
|
});
|
|
2883
|
-
var customCssRulesSchema =
|
|
2884
|
-
var blockCustomCssRulesSchema =
|
|
2291
|
+
var customCssRulesSchema = z13.array(customCssRuleSchema).optional();
|
|
2292
|
+
var blockCustomCssRulesSchema = z13.array(blockCustomCssRuleSchema).optional();
|
|
2885
2293
|
|
|
2886
2294
|
// ../theme-core/src/customCss/atRuleValidation.ts
|
|
2887
|
-
import { z as
|
|
2295
|
+
import { z as z14 } from "zod";
|
|
2888
2296
|
var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
|
|
2889
2297
|
var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
|
|
2890
2298
|
var BLOCKED_AT_RULES = ["@import", "@charset"];
|
|
2891
2299
|
var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
|
|
2892
|
-
var ruleIdSchema =
|
|
2893
|
-
var nestedRuleSchema =
|
|
2300
|
+
var ruleIdSchema = z14.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
|
|
2301
|
+
var nestedRuleSchema = z14.object({
|
|
2894
2302
|
selector: selectorSchema,
|
|
2895
2303
|
declarations: declarationsSchema
|
|
2896
2304
|
});
|
|
@@ -2902,146 +2310,146 @@ function isValidKeyframeOffset(offset) {
|
|
|
2902
2310
|
const value = parseInt(match[1], 10);
|
|
2903
2311
|
return value >= 0 && value <= 100;
|
|
2904
2312
|
}
|
|
2905
|
-
var keyframeOffsetSchema =
|
|
2313
|
+
var keyframeOffsetSchema = z14.string().transform((offset) => offset.trim()).refine(
|
|
2906
2314
|
(offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
|
|
2907
2315
|
{ message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
|
|
2908
2316
|
).refine(
|
|
2909
2317
|
isValidKeyframeOffset,
|
|
2910
2318
|
{ message: "Keyframe offset must be between 0% and 100%" }
|
|
2911
2319
|
);
|
|
2912
|
-
var animationNameSchema =
|
|
2320
|
+
var animationNameSchema = z14.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
|
|
2913
2321
|
(name) => ANIMATION_NAME_PATTERN.test(name),
|
|
2914
2322
|
{ message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
|
|
2915
2323
|
);
|
|
2916
|
-
var keyframeSchema =
|
|
2324
|
+
var keyframeSchema = z14.object({
|
|
2917
2325
|
offset: keyframeOffsetSchema,
|
|
2918
2326
|
declarations: declarationsSchema
|
|
2919
2327
|
});
|
|
2920
|
-
var keyframesAtRuleSchema =
|
|
2328
|
+
var keyframesAtRuleSchema = z14.object({
|
|
2921
2329
|
id: ruleIdSchema,
|
|
2922
|
-
type:
|
|
2330
|
+
type: z14.literal("keyframes"),
|
|
2923
2331
|
name: animationNameSchema,
|
|
2924
|
-
frames:
|
|
2332
|
+
frames: z14.array(keyframeSchema).min(1, "At least one keyframe is required")
|
|
2925
2333
|
});
|
|
2926
|
-
var fontFaceDeclarationsSchema =
|
|
2334
|
+
var fontFaceDeclarationsSchema = z14.record(z14.string().min(1).max(100), declarationValueSchema).refine(
|
|
2927
2335
|
(decls) => "fontFamily" in decls || "font-family" in decls,
|
|
2928
2336
|
{ message: "font-family is required in @font-face" }
|
|
2929
2337
|
);
|
|
2930
|
-
var fontFaceAtRuleSchema =
|
|
2338
|
+
var fontFaceAtRuleSchema = z14.object({
|
|
2931
2339
|
id: ruleIdSchema,
|
|
2932
|
-
type:
|
|
2340
|
+
type: z14.literal("font-face"),
|
|
2933
2341
|
declarations: fontFaceDeclarationsSchema
|
|
2934
2342
|
});
|
|
2935
|
-
var mediaQuerySchema =
|
|
2936
|
-
var mediaAtRuleSchema =
|
|
2343
|
+
var mediaQuerySchema = z14.string().min(1, "Media query is required").max(200, "Media query too long");
|
|
2344
|
+
var mediaAtRuleSchema = z14.object({
|
|
2937
2345
|
id: ruleIdSchema,
|
|
2938
|
-
type:
|
|
2346
|
+
type: z14.literal("media"),
|
|
2939
2347
|
query: mediaQuerySchema,
|
|
2940
|
-
rules:
|
|
2348
|
+
rules: z14.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
2941
2349
|
});
|
|
2942
|
-
var supportsConditionSchema =
|
|
2943
|
-
var supportsAtRuleSchema =
|
|
2350
|
+
var supportsConditionSchema = z14.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
|
|
2351
|
+
var supportsAtRuleSchema = z14.object({
|
|
2944
2352
|
id: ruleIdSchema,
|
|
2945
|
-
type:
|
|
2353
|
+
type: z14.literal("supports"),
|
|
2946
2354
|
condition: supportsConditionSchema,
|
|
2947
|
-
rules:
|
|
2355
|
+
rules: z14.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
2948
2356
|
});
|
|
2949
2357
|
function containsBlockedAtRule(css) {
|
|
2950
2358
|
return BLOCKED_AT_RULE_PATTERN.test(css);
|
|
2951
2359
|
}
|
|
2952
|
-
var rawCssSchema =
|
|
2360
|
+
var rawCssSchema = z14.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
|
|
2953
2361
|
(css) => css.trim().startsWith("@"),
|
|
2954
2362
|
{ message: "Raw at-rule must start with @" }
|
|
2955
2363
|
).refine(
|
|
2956
2364
|
(css) => !containsBlockedAtRule(css),
|
|
2957
2365
|
{ message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
|
|
2958
2366
|
);
|
|
2959
|
-
var rawAtRuleSchema =
|
|
2367
|
+
var rawAtRuleSchema = z14.object({
|
|
2960
2368
|
id: ruleIdSchema,
|
|
2961
|
-
type:
|
|
2369
|
+
type: z14.literal("raw"),
|
|
2962
2370
|
css: rawCssSchema
|
|
2963
2371
|
});
|
|
2964
|
-
var customCssAtRuleSchema =
|
|
2372
|
+
var customCssAtRuleSchema = z14.discriminatedUnion("type", [
|
|
2965
2373
|
keyframesAtRuleSchema,
|
|
2966
2374
|
fontFaceAtRuleSchema,
|
|
2967
2375
|
mediaAtRuleSchema,
|
|
2968
2376
|
supportsAtRuleSchema,
|
|
2969
2377
|
rawAtRuleSchema
|
|
2970
2378
|
]);
|
|
2971
|
-
var customCssAtRulesSchema =
|
|
2379
|
+
var customCssAtRulesSchema = z14.array(customCssAtRuleSchema).optional();
|
|
2972
2380
|
|
|
2973
2381
|
// ../theme-core/src/shared/componentStyles.ts
|
|
2974
|
-
import { z as
|
|
2975
|
-
var componentBorderSchema =
|
|
2976
|
-
width:
|
|
2977
|
-
style:
|
|
2978
|
-
colorToken:
|
|
2382
|
+
import { z as z15 } from "zod";
|
|
2383
|
+
var componentBorderSchema = z15.object({
|
|
2384
|
+
width: z15.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
|
|
2385
|
+
style: z15.enum(["solid", "dashed"]).default("solid"),
|
|
2386
|
+
colorToken: z15.string().optional()
|
|
2979
2387
|
// defaults to "border" if not set
|
|
2980
2388
|
});
|
|
2981
|
-
var componentShadowSchema =
|
|
2982
|
-
elevation:
|
|
2389
|
+
var componentShadowSchema = z15.object({
|
|
2390
|
+
elevation: z15.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
|
|
2983
2391
|
});
|
|
2984
2392
|
|
|
2985
2393
|
// ../theme-core/src/schema.ts
|
|
2986
|
-
var axesSchema =
|
|
2987
|
-
tone:
|
|
2988
|
-
energy:
|
|
2989
|
-
density:
|
|
2990
|
-
mediaBias:
|
|
2991
|
-
conversionBias:
|
|
2992
|
-
motion:
|
|
2993
|
-
});
|
|
2994
|
-
var colourHexString =
|
|
2995
|
-
var paletteColorSchema =
|
|
2996
|
-
name:
|
|
2394
|
+
var axesSchema = z16.object({
|
|
2395
|
+
tone: z16.enum(["minimal", "classic", "bold"]),
|
|
2396
|
+
energy: z16.enum(["calm", "vibrant"]),
|
|
2397
|
+
density: z16.enum(["airy", "regular", "compact"]),
|
|
2398
|
+
mediaBias: z16.enum(["text", "media", "mixed"]),
|
|
2399
|
+
conversionBias: z16.enum(["low", "med", "high"]),
|
|
2400
|
+
motion: z16.enum(["subtle", "standard", "expressive"])
|
|
2401
|
+
});
|
|
2402
|
+
var colourHexString = z16.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
|
|
2403
|
+
var paletteColorSchema = z16.object({
|
|
2404
|
+
name: z16.string().min(1),
|
|
2997
2405
|
hex: colourHexString
|
|
2998
2406
|
});
|
|
2999
|
-
var paletteMetaSchema =
|
|
3000
|
-
mode:
|
|
2407
|
+
var paletteMetaSchema = z16.object({
|
|
2408
|
+
mode: z16.enum(["light", "dark"])
|
|
3001
2409
|
});
|
|
3002
|
-
var paletteSchema =
|
|
3003
|
-
colors:
|
|
2410
|
+
var paletteSchema = z16.object({
|
|
2411
|
+
colors: z16.array(paletteColorSchema),
|
|
3004
2412
|
meta: paletteMetaSchema
|
|
3005
2413
|
});
|
|
3006
|
-
var typographyStyleSchema =
|
|
3007
|
-
family:
|
|
3008
|
-
weight:
|
|
3009
|
-
letterSpacing:
|
|
3010
|
-
lineHeight:
|
|
2414
|
+
var typographyStyleSchema = z16.object({
|
|
2415
|
+
family: z16.string().min(1),
|
|
2416
|
+
weight: z16.enum(["light", "regular", "medium", "semibold", "bold"]),
|
|
2417
|
+
letterSpacing: z16.enum(["tight", "normal", "loose"]),
|
|
2418
|
+
lineHeight: z16.enum(["normal", "relaxed", "loose"])
|
|
3011
2419
|
});
|
|
3012
2420
|
var bodyTypographyStyleSchema = typographyStyleSchema.extend({
|
|
3013
|
-
size:
|
|
2421
|
+
size: z16.enum(["md", "lg", "xl"])
|
|
3014
2422
|
});
|
|
3015
|
-
var headingSizeSchema =
|
|
3016
|
-
var headingTypographyOverridesSchema =
|
|
3017
|
-
weight:
|
|
3018
|
-
letterSpacing:
|
|
2423
|
+
var headingSizeSchema = z16.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
|
|
2424
|
+
var headingTypographyOverridesSchema = z16.object({
|
|
2425
|
+
weight: z16.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
|
|
2426
|
+
letterSpacing: z16.enum(["tight", "normal", "loose"]).nullable().optional(),
|
|
3019
2427
|
size: headingSizeSchema.nullable().optional(),
|
|
3020
|
-
lineHeight:
|
|
3021
|
-
italic:
|
|
3022
|
-
colorToken:
|
|
2428
|
+
lineHeight: z16.enum(["normal", "relaxed", "loose"]).nullable().optional(),
|
|
2429
|
+
italic: z16.boolean().nullable().optional(),
|
|
2430
|
+
colorToken: z16.string().min(1).nullable().optional()
|
|
3023
2431
|
// Palette token name for heading color
|
|
3024
2432
|
});
|
|
3025
2433
|
var headingTypographyStyleSchema = typographyStyleSchema.extend({
|
|
3026
|
-
case:
|
|
3027
|
-
italic:
|
|
3028
|
-
colorToken:
|
|
2434
|
+
case: z16.enum(["uppercase", "normal", "smallCaps"]).nullable(),
|
|
2435
|
+
italic: z16.boolean().nullable(),
|
|
2436
|
+
colorToken: z16.string().min(1).nullable().optional()
|
|
3029
2437
|
// Palette token name for heading color
|
|
3030
2438
|
});
|
|
3031
|
-
var proseLinkUnderlineStyleSchema =
|
|
3032
|
-
var proseLinkUnderlineThicknessSchema =
|
|
3033
|
-
var proseLinkUnderlineOffsetSchema =
|
|
3034
|
-
var proseLinkStyleSchema =
|
|
3035
|
-
colorToken:
|
|
3036
|
-
hoverColorToken:
|
|
3037
|
-
underline:
|
|
3038
|
-
decorationColorToken:
|
|
3039
|
-
hoverDecorationColorToken:
|
|
2439
|
+
var proseLinkUnderlineStyleSchema = z16.enum(["solid", "dotted", "dashed"]);
|
|
2440
|
+
var proseLinkUnderlineThicknessSchema = z16.enum(["auto", "fromFont", "thin", "medium", "thick"]);
|
|
2441
|
+
var proseLinkUnderlineOffsetSchema = z16.enum(["auto", "tight", "normal", "loose"]);
|
|
2442
|
+
var proseLinkStyleSchema = z16.object({
|
|
2443
|
+
colorToken: z16.string().min(1).optional(),
|
|
2444
|
+
hoverColorToken: z16.string().min(1).optional(),
|
|
2445
|
+
underline: z16.boolean().optional(),
|
|
2446
|
+
decorationColorToken: z16.string().min(1).optional(),
|
|
2447
|
+
hoverDecorationColorToken: z16.string().min(1).optional(),
|
|
3040
2448
|
underlineStyle: proseLinkUnderlineStyleSchema.optional(),
|
|
3041
2449
|
underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
|
|
3042
2450
|
underlineOffset: proseLinkUnderlineOffsetSchema.optional()
|
|
3043
2451
|
});
|
|
3044
|
-
var semanticSpacingSchema =
|
|
2452
|
+
var semanticSpacingSchema = z16.enum([
|
|
3045
2453
|
"none",
|
|
3046
2454
|
"compact",
|
|
3047
2455
|
"cozy",
|
|
@@ -3049,62 +2457,62 @@ var semanticSpacingSchema = z19.enum([
|
|
|
3049
2457
|
"comfortable",
|
|
3050
2458
|
"spacious"
|
|
3051
2459
|
]);
|
|
3052
|
-
var boxRoundedSchema =
|
|
3053
|
-
var boxBackgroundOverlaySchema =
|
|
3054
|
-
type:
|
|
3055
|
-
color:
|
|
3056
|
-
gradient:
|
|
3057
|
-
opacity:
|
|
3058
|
-
});
|
|
3059
|
-
var boxBackgroundSchema =
|
|
3060
|
-
type:
|
|
3061
|
-
color:
|
|
3062
|
-
gradient:
|
|
2460
|
+
var boxRoundedSchema = z16.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
|
|
2461
|
+
var boxBackgroundOverlaySchema = z16.object({
|
|
2462
|
+
type: z16.enum(["none", "color", "gradient"]).nullable().optional(),
|
|
2463
|
+
color: z16.string().nullable().optional(),
|
|
2464
|
+
gradient: z16.string().nullable().optional(),
|
|
2465
|
+
opacity: z16.number().min(0).max(1).nullable().optional()
|
|
2466
|
+
});
|
|
2467
|
+
var boxBackgroundSchema = z16.object({
|
|
2468
|
+
type: z16.enum(["color", "gradient", "image"]).optional(),
|
|
2469
|
+
color: z16.string().nullable().optional(),
|
|
2470
|
+
gradient: z16.string().nullable().optional(),
|
|
3063
2471
|
image: mediaSchema.nullable().optional(),
|
|
3064
|
-
objectFit:
|
|
3065
|
-
scale:
|
|
3066
|
-
position:
|
|
3067
|
-
opacity:
|
|
2472
|
+
objectFit: z16.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
|
|
2473
|
+
scale: z16.string().nullable().optional(),
|
|
2474
|
+
position: z16.string().nullable().optional(),
|
|
2475
|
+
opacity: z16.number().min(0).max(1).nullable().optional(),
|
|
3068
2476
|
overlay: boxBackgroundOverlaySchema.nullable().optional(),
|
|
3069
|
-
textColor:
|
|
3070
|
-
headingColor:
|
|
2477
|
+
textColor: z16.string().nullable().optional(),
|
|
2478
|
+
headingColor: z16.string().nullable().optional()
|
|
3071
2479
|
});
|
|
3072
|
-
var sectionStylesOverrideSchema =
|
|
2480
|
+
var sectionStylesOverrideSchema = z16.object({
|
|
3073
2481
|
background: boxBackgroundSchema.nullable().optional(),
|
|
3074
2482
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
3075
|
-
minHeight:
|
|
2483
|
+
minHeight: z16.enum(["none", "hero", "immersive"]).nullable().optional()
|
|
3076
2484
|
});
|
|
3077
|
-
var containerStylesOverrideSchema =
|
|
2485
|
+
var containerStylesOverrideSchema = z16.object({
|
|
3078
2486
|
background: boxBackgroundSchema.nullable().optional(),
|
|
3079
2487
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
3080
|
-
raised:
|
|
2488
|
+
raised: z16.boolean().nullable().optional(),
|
|
3081
2489
|
rounded: boxRoundedSchema.nullable().optional(),
|
|
3082
|
-
fullWidth:
|
|
2490
|
+
fullWidth: z16.boolean().nullable().optional()
|
|
3083
2491
|
});
|
|
3084
|
-
var cardBorderOverrideSchema =
|
|
3085
|
-
enabled:
|
|
3086
|
-
width:
|
|
3087
|
-
colorToken:
|
|
2492
|
+
var cardBorderOverrideSchema = z16.object({
|
|
2493
|
+
enabled: z16.boolean().nullable().optional(),
|
|
2494
|
+
width: z16.enum(["none", "1", "2", "3"]).nullable().optional(),
|
|
2495
|
+
colorToken: z16.string().nullable().optional()
|
|
3088
2496
|
});
|
|
3089
|
-
var cardStylesOverrideSchema =
|
|
2497
|
+
var cardStylesOverrideSchema = z16.object({
|
|
3090
2498
|
background: boxBackgroundSchema.nullable().optional(),
|
|
3091
2499
|
border: cardBorderOverrideSchema.nullable().optional(),
|
|
3092
2500
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
3093
|
-
raised:
|
|
2501
|
+
raised: z16.boolean().nullable().optional(),
|
|
3094
2502
|
rounded: boxRoundedSchema.nullable().optional()
|
|
3095
2503
|
});
|
|
3096
|
-
var blockStyleOverridesSchema =
|
|
2504
|
+
var blockStyleOverridesSchema = z16.object({
|
|
3097
2505
|
sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
|
|
3098
2506
|
containerStyles: containerStylesOverrideSchema.nullable().optional(),
|
|
3099
2507
|
cardStyles: cardStylesOverrideSchema.nullable().optional()
|
|
3100
2508
|
});
|
|
3101
|
-
var blockThemeOverrideSchema =
|
|
3102
|
-
typography:
|
|
2509
|
+
var blockThemeOverrideSchema = z16.object({
|
|
2510
|
+
typography: z16.object({
|
|
3103
2511
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
3104
2512
|
}).optional(),
|
|
3105
2513
|
styles: blockStyleOverridesSchema.optional()
|
|
3106
2514
|
});
|
|
3107
|
-
var typographyScaleSchema =
|
|
2515
|
+
var typographyScaleSchema = z16.enum([
|
|
3108
2516
|
// New intuitive names
|
|
3109
2517
|
"compact",
|
|
3110
2518
|
// ratio 1.2 (was minorThird)
|
|
@@ -3117,9 +2525,9 @@ var typographyScaleSchema = z19.enum([
|
|
|
3117
2525
|
"majorThird",
|
|
3118
2526
|
"perfectFourth"
|
|
3119
2527
|
]);
|
|
3120
|
-
var typographySchema =
|
|
2528
|
+
var typographySchema = z16.object({
|
|
3121
2529
|
body: bodyTypographyStyleSchema,
|
|
3122
|
-
headings:
|
|
2530
|
+
headings: z16.object({
|
|
3123
2531
|
default: headingTypographyStyleSchema,
|
|
3124
2532
|
h1: headingTypographyOverridesSchema,
|
|
3125
2533
|
h2: headingTypographyOverridesSchema,
|
|
@@ -3132,41 +2540,41 @@ var typographySchema = z19.object({
|
|
|
3132
2540
|
scale: typographyScaleSchema,
|
|
3133
2541
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
3134
2542
|
});
|
|
3135
|
-
var spaceSchema =
|
|
3136
|
-
var corners =
|
|
3137
|
-
var shadow =
|
|
3138
|
-
elevation:
|
|
3139
|
-
softness:
|
|
3140
|
-
position:
|
|
2543
|
+
var spaceSchema = z16.enum(["comfortable", "standard", "dense"]);
|
|
2544
|
+
var corners = z16.enum(["square", "soft", "rounded", "pill"]);
|
|
2545
|
+
var shadow = z16.object({
|
|
2546
|
+
elevation: z16.enum(["none", "low", "medium", "high"]),
|
|
2547
|
+
softness: z16.enum(["crisp", "soft", "hard"]).nullable(),
|
|
2548
|
+
position: z16.enum(["bottom", "bottom-right"]).default("bottom")
|
|
3141
2549
|
});
|
|
3142
|
-
var border =
|
|
3143
|
-
width:
|
|
3144
|
-
style:
|
|
2550
|
+
var border = z16.object({
|
|
2551
|
+
width: z16.enum(["none", "hairline", "thin", "thick"]),
|
|
2552
|
+
style: z16.enum(["solid", "dashed"])
|
|
3145
2553
|
});
|
|
3146
|
-
var motion =
|
|
3147
|
-
level:
|
|
3148
|
-
easing:
|
|
2554
|
+
var motion = z16.object({
|
|
2555
|
+
level: z16.enum(["off", "low", "medium", "high"]),
|
|
2556
|
+
easing: z16.enum(["standard", "snappy", "gentle"]).nullable()
|
|
3149
2557
|
});
|
|
3150
|
-
var buttonStyle =
|
|
2558
|
+
var buttonStyle = z16.object({
|
|
3151
2559
|
shape: corners
|
|
3152
2560
|
// Used for --radius-control CSS variable
|
|
3153
2561
|
});
|
|
3154
|
-
var cardStyle =
|
|
3155
|
-
elevation:
|
|
3156
|
-
border:
|
|
2562
|
+
var cardStyle = z16.object({
|
|
2563
|
+
elevation: z16.enum(["none", "low", "medium", "high"]),
|
|
2564
|
+
border: z16.enum(["none", "subtle", "defined"]),
|
|
3157
2565
|
shape: corners,
|
|
3158
|
-
headerStyle:
|
|
3159
|
-
mediaTreatment:
|
|
2566
|
+
headerStyle: z16.enum(["plain", "accentBar", "subtleBg"]).nullable(),
|
|
2567
|
+
mediaTreatment: z16.enum(["square", "rounded", "bleed"]).nullable()
|
|
3160
2568
|
});
|
|
3161
|
-
var inputStyle =
|
|
2569
|
+
var inputStyle = z16.object({
|
|
3162
2570
|
shape: corners,
|
|
3163
|
-
border:
|
|
3164
|
-
focus:
|
|
3165
|
-
label:
|
|
2571
|
+
border: z16.enum(["subtle", "defined", "underline"]),
|
|
2572
|
+
focus: z16.enum(["glow", "ring", "underline"]),
|
|
2573
|
+
label: z16.enum(["inside", "above"])
|
|
3166
2574
|
});
|
|
3167
|
-
var headerVariant =
|
|
3168
|
-
var headerPositioning =
|
|
3169
|
-
var headerNavStyle =
|
|
2575
|
+
var headerVariant = z16.enum(["classic", "centered", "transparent", "floating", "editorial"]);
|
|
2576
|
+
var headerPositioning = z16.enum(["static", "sticky", "fixed"]);
|
|
2577
|
+
var headerNavStyle = z16.enum([
|
|
3170
2578
|
"minimal",
|
|
3171
2579
|
"underline",
|
|
3172
2580
|
"underline-grow",
|
|
@@ -3175,82 +2583,82 @@ var headerNavStyle = z19.enum([
|
|
|
3175
2583
|
"frosted",
|
|
3176
2584
|
"solid"
|
|
3177
2585
|
]);
|
|
3178
|
-
var navFontWeight =
|
|
3179
|
-
var headerMaxWidth =
|
|
3180
|
-
var headerContainerSchema =
|
|
3181
|
-
rounded:
|
|
3182
|
-
border:
|
|
3183
|
-
shadow:
|
|
3184
|
-
padding:
|
|
3185
|
-
tint:
|
|
3186
|
-
opacity:
|
|
2586
|
+
var navFontWeight = z16.enum(["regular", "medium", "semibold", "bold"]);
|
|
2587
|
+
var headerMaxWidth = z16.enum(["container", "full"]);
|
|
2588
|
+
var headerContainerSchema = z16.object({
|
|
2589
|
+
rounded: z16.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
|
|
2590
|
+
border: z16.boolean().default(true),
|
|
2591
|
+
shadow: z16.boolean().default(true),
|
|
2592
|
+
padding: z16.enum(["sm", "md", "lg"]).default("md"),
|
|
2593
|
+
tint: z16.string().nullable().optional(),
|
|
2594
|
+
opacity: z16.number().min(0).max(1).default(0.12)
|
|
3187
2595
|
}).optional();
|
|
3188
2596
|
var headerBorderSchema = componentBorderSchema.extend({
|
|
3189
|
-
position:
|
|
2597
|
+
position: z16.enum(["bottom", "top", "both", "none"]).default("bottom")
|
|
3190
2598
|
}).optional();
|
|
3191
|
-
var logoStyleSchema =
|
|
3192
|
-
fontFamily:
|
|
3193
|
-
letterSpacing:
|
|
3194
|
-
gradient:
|
|
2599
|
+
var logoStyleSchema = z16.object({
|
|
2600
|
+
fontFamily: z16.enum(["heading", "body"]).default("heading"),
|
|
2601
|
+
letterSpacing: z16.enum(["normal", "wide", "wider", "widest"]).default("normal"),
|
|
2602
|
+
gradient: z16.boolean().default(false)
|
|
3195
2603
|
}).optional();
|
|
3196
|
-
var headerLogoTextSchema =
|
|
3197
|
-
mobileWrapLines:
|
|
3198
|
-
mobileMaxWidth:
|
|
3199
|
-
hideOnShrink:
|
|
2604
|
+
var headerLogoTextSchema = z16.object({
|
|
2605
|
+
mobileWrapLines: z16.union([z16.literal(1), z16.literal(2)]).optional(),
|
|
2606
|
+
mobileMaxWidth: z16.enum(["xs", "sm", "md"]).optional(),
|
|
2607
|
+
hideOnShrink: z16.boolean().optional()
|
|
3200
2608
|
}).optional();
|
|
3201
|
-
var navEffectsSchema =
|
|
3202
|
-
underlineGradient:
|
|
3203
|
-
glow:
|
|
3204
|
-
glowColor:
|
|
3205
|
-
neumorphic:
|
|
2609
|
+
var navEffectsSchema = z16.object({
|
|
2610
|
+
underlineGradient: z16.boolean().default(false),
|
|
2611
|
+
glow: z16.boolean().default(false),
|
|
2612
|
+
glowColor: z16.string().optional(),
|
|
2613
|
+
neumorphic: z16.boolean().default(false)
|
|
3206
2614
|
}).optional();
|
|
3207
|
-
var dropdownStyleSchema =
|
|
2615
|
+
var dropdownStyleSchema = z16.object({
|
|
3208
2616
|
// Container styling
|
|
3209
|
-
background:
|
|
2617
|
+
background: z16.string().default("surface"),
|
|
3210
2618
|
// color token
|
|
3211
|
-
textColor:
|
|
2619
|
+
textColor: z16.string().default("text"),
|
|
3212
2620
|
// color token
|
|
3213
|
-
borderColor:
|
|
2621
|
+
borderColor: z16.string().nullable().default("border"),
|
|
3214
2622
|
// null = no border
|
|
3215
|
-
shadow:
|
|
3216
|
-
borderRadius:
|
|
2623
|
+
shadow: z16.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
2624
|
+
borderRadius: z16.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
3217
2625
|
// Link hover states (explicit control)
|
|
3218
|
-
hoverBackground:
|
|
2626
|
+
hoverBackground: z16.string().nullable().optional(),
|
|
3219
2627
|
// color token, null = transparent
|
|
3220
|
-
hoverTextColor:
|
|
2628
|
+
hoverTextColor: z16.string().nullable().optional(),
|
|
3221
2629
|
// color token, null = inherit
|
|
3222
2630
|
// Typography
|
|
3223
|
-
textTransform:
|
|
3224
|
-
letterSpacing:
|
|
3225
|
-
fontWeight:
|
|
2631
|
+
textTransform: z16.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
2632
|
+
letterSpacing: z16.enum(["normal", "wide", "wider"]).default("normal"),
|
|
2633
|
+
fontWeight: z16.enum(["regular", "medium", "semibold", "bold"]).optional(),
|
|
3226
2634
|
// optional = inherit from navWeight
|
|
3227
|
-
textSize:
|
|
2635
|
+
textSize: z16.enum(["xs", "sm", "base", "lg"]).optional()
|
|
3228
2636
|
// optional = no override (browser default)
|
|
3229
2637
|
}).optional();
|
|
3230
|
-
var headerCtaGapSchema =
|
|
3231
|
-
var navContainerSchema =
|
|
3232
|
-
type:
|
|
3233
|
-
tint:
|
|
3234
|
-
opacity:
|
|
2638
|
+
var headerCtaGapSchema = z16.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
2639
|
+
var navContainerSchema = z16.object({
|
|
2640
|
+
type: z16.enum(["none", "pill", "glass"]).default("none"),
|
|
2641
|
+
tint: z16.string().nullable().optional(),
|
|
2642
|
+
opacity: z16.number().min(0).max(1).default(0.15)
|
|
3235
2643
|
}).default({ type: "none", tint: null, opacity: 0.15 });
|
|
3236
|
-
var headerBackgroundSchema =
|
|
3237
|
-
type:
|
|
3238
|
-
color:
|
|
2644
|
+
var headerBackgroundSchema = z16.object({
|
|
2645
|
+
type: z16.enum(["color", "gradient", "image"]),
|
|
2646
|
+
color: z16.string().nullable().optional(),
|
|
3239
2647
|
gradient: gradientConfigSchema.nullable().optional(),
|
|
3240
2648
|
image: mediaSchema.nullable().optional(),
|
|
3241
|
-
textColor:
|
|
2649
|
+
textColor: z16.string().nullable().optional()
|
|
3242
2650
|
});
|
|
3243
|
-
var headerSchema =
|
|
2651
|
+
var headerSchema = z16.object({
|
|
3244
2652
|
variant: headerVariant,
|
|
3245
2653
|
positioning: headerPositioning,
|
|
3246
|
-
shrinkOnScroll:
|
|
2654
|
+
shrinkOnScroll: z16.boolean(),
|
|
3247
2655
|
maxWidth: headerMaxWidth,
|
|
3248
2656
|
logoOverride: mediaSchema.nullable().optional(),
|
|
3249
2657
|
background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
|
|
3250
|
-
textColor:
|
|
2658
|
+
textColor: z16.string().nullable().optional(),
|
|
3251
2659
|
// Site title and general header text
|
|
3252
2660
|
navStyle: headerNavStyle,
|
|
3253
|
-
navColor:
|
|
2661
|
+
navColor: z16.string().nullable().optional(),
|
|
3254
2662
|
// Nav links (inherits textColor if not set)
|
|
3255
2663
|
navWeight: navFontWeight.default("medium"),
|
|
3256
2664
|
// New fields for header system enhancement
|
|
@@ -3269,50 +2677,50 @@ var headerSchema = z19.object({
|
|
|
3269
2677
|
// Dropdown menu styling (nav dropdowns and mobile drawer)
|
|
3270
2678
|
dropdownStyle: dropdownStyleSchema
|
|
3271
2679
|
});
|
|
3272
|
-
var footerVariant =
|
|
3273
|
-
var footerMaxWidth =
|
|
3274
|
-
var footerMode =
|
|
3275
|
-
var footerNavLayoutMode =
|
|
3276
|
-
var footerNavLayoutAlign =
|
|
3277
|
-
var footerSpacing =
|
|
3278
|
-
var footerLogoPlacement =
|
|
3279
|
-
var footerLogoSize =
|
|
3280
|
-
var footerLogoMaxHeight =
|
|
3281
|
-
var footerBottomTextLinkStyleSchema =
|
|
3282
|
-
colorToken:
|
|
3283
|
-
hoverColorToken:
|
|
3284
|
-
decorationColorToken:
|
|
3285
|
-
underline:
|
|
3286
|
-
});
|
|
3287
|
-
var footerBottomBarSchema =
|
|
3288
|
-
enabled:
|
|
3289
|
-
fullBleed:
|
|
2680
|
+
var footerVariant = z16.enum(["simple", "columns", "split"]);
|
|
2681
|
+
var footerMaxWidth = z16.enum(["container", "full"]);
|
|
2682
|
+
var footerMode = z16.enum(["default", "blocks", "default+blocks", "none"]);
|
|
2683
|
+
var footerNavLayoutMode = z16.enum(["stack", "inline", "inline-wrap"]);
|
|
2684
|
+
var footerNavLayoutAlign = z16.enum(["start", "center", "end", "space-between"]);
|
|
2685
|
+
var footerSpacing = z16.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
2686
|
+
var footerLogoPlacement = z16.enum(["left", "right", "above", "below"]);
|
|
2687
|
+
var footerLogoSize = z16.enum(["sm", "md", "lg", "xl"]);
|
|
2688
|
+
var footerLogoMaxHeight = z16.enum(["sm", "md", "lg", "xl"]);
|
|
2689
|
+
var footerBottomTextLinkStyleSchema = z16.object({
|
|
2690
|
+
colorToken: z16.string().optional(),
|
|
2691
|
+
hoverColorToken: z16.string().nullable().optional(),
|
|
2692
|
+
decorationColorToken: z16.string().nullable().optional(),
|
|
2693
|
+
underline: z16.boolean().optional()
|
|
2694
|
+
});
|
|
2695
|
+
var footerBottomBarSchema = z16.object({
|
|
2696
|
+
enabled: z16.boolean().optional(),
|
|
2697
|
+
fullBleed: z16.boolean().optional(),
|
|
3290
2698
|
background: headerBackgroundSchema.optional(),
|
|
3291
|
-
textColor:
|
|
3292
|
-
textAlign:
|
|
2699
|
+
textColor: z16.string().nullable().optional(),
|
|
2700
|
+
textAlign: z16.enum(["left", "center", "right"]).optional(),
|
|
3293
2701
|
paddingY: footerSpacing.optional(),
|
|
3294
2702
|
paddingX: footerSpacing.optional(),
|
|
3295
|
-
borderTop:
|
|
3296
|
-
colorToken:
|
|
3297
|
-
width:
|
|
2703
|
+
borderTop: z16.object({
|
|
2704
|
+
colorToken: z16.string().nullable().optional(),
|
|
2705
|
+
width: z16.enum(["none", "thin", "medium", "thick"]).optional()
|
|
3298
2706
|
}).optional()
|
|
3299
2707
|
});
|
|
3300
|
-
var footerNavLayoutSchema =
|
|
2708
|
+
var footerNavLayoutSchema = z16.object({
|
|
3301
2709
|
layout: footerNavLayoutMode.optional(),
|
|
3302
2710
|
align: footerNavLayoutAlign.optional(),
|
|
3303
2711
|
gapX: footerSpacing.optional(),
|
|
3304
2712
|
gapY: footerSpacing.optional(),
|
|
3305
|
-
columns:
|
|
2713
|
+
columns: z16.number().int().min(1).max(6).optional()
|
|
3306
2714
|
});
|
|
3307
|
-
var footerLogoSchema =
|
|
3308
|
-
showLogo:
|
|
3309
|
-
showLogoText:
|
|
2715
|
+
var footerLogoSchema = z16.object({
|
|
2716
|
+
showLogo: z16.boolean().default(true),
|
|
2717
|
+
showLogoText: z16.boolean().optional(),
|
|
3310
2718
|
placement: footerLogoPlacement.optional(),
|
|
3311
2719
|
size: footerLogoSize.optional(),
|
|
3312
2720
|
maxHeight: footerLogoMaxHeight.optional(),
|
|
3313
|
-
align:
|
|
2721
|
+
align: z16.enum(["start", "center", "end"]).optional()
|
|
3314
2722
|
});
|
|
3315
|
-
var footerSchema =
|
|
2723
|
+
var footerSchema = z16.object({
|
|
3316
2724
|
/**
|
|
3317
2725
|
* SDK-only footer rendering mode.
|
|
3318
2726
|
*
|
|
@@ -3321,11 +2729,11 @@ var footerSchema = z19.object({
|
|
|
3321
2729
|
mode: footerMode.optional(),
|
|
3322
2730
|
variant: footerVariant,
|
|
3323
2731
|
maxWidth: footerMaxWidth,
|
|
3324
|
-
showLogoText:
|
|
2732
|
+
showLogoText: z16.boolean().optional(),
|
|
3325
2733
|
background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
|
|
3326
2734
|
// Footer nav styling (independent from header)
|
|
3327
2735
|
navStyle: headerNavStyle.default("minimal"),
|
|
3328
|
-
navColor:
|
|
2736
|
+
navColor: z16.string().nullable().optional(),
|
|
3329
2737
|
navWeight: navFontWeight.default("medium"),
|
|
3330
2738
|
// Full nav link customization (overrides navStyle if set)
|
|
3331
2739
|
navLinkStyle: navLinkStyleSchema.optional(),
|
|
@@ -3336,15 +2744,15 @@ var footerSchema = z19.object({
|
|
|
3336
2744
|
logo: footerLogoSchema.optional(),
|
|
3337
2745
|
bottomBar: footerBottomBarSchema.optional()
|
|
3338
2746
|
});
|
|
3339
|
-
var containerPaddingPresetSchema =
|
|
3340
|
-
var layoutSchema =
|
|
3341
|
-
containerPadding:
|
|
2747
|
+
var containerPaddingPresetSchema = z16.enum(["tight", "compact", "default", "relaxed"]);
|
|
2748
|
+
var layoutSchema = z16.object({
|
|
2749
|
+
containerPadding: z16.object({
|
|
3342
2750
|
mobile: containerPaddingPresetSchema.optional(),
|
|
3343
2751
|
tablet: containerPaddingPresetSchema.optional(),
|
|
3344
2752
|
desktop: containerPaddingPresetSchema.optional()
|
|
3345
2753
|
}).optional()
|
|
3346
2754
|
}).optional();
|
|
3347
|
-
var heroTypographySizeSchema =
|
|
2755
|
+
var heroTypographySizeSchema = z16.enum([
|
|
3348
2756
|
"sm",
|
|
3349
2757
|
"base",
|
|
3350
2758
|
"lg",
|
|
@@ -3355,14 +2763,14 @@ var heroTypographySizeSchema = z19.enum([
|
|
|
3355
2763
|
"5xl",
|
|
3356
2764
|
"6xl"
|
|
3357
2765
|
]);
|
|
3358
|
-
var heroTypographyLineHeightSchema =
|
|
3359
|
-
var heroResponsiveTypographySchema =
|
|
2766
|
+
var heroTypographyLineHeightSchema = z16.enum(["tight", "snug", "normal", "relaxed"]);
|
|
2767
|
+
var heroResponsiveTypographySchema = z16.object({
|
|
3360
2768
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
3361
2769
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
3362
2770
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
3363
2771
|
subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
|
|
3364
2772
|
});
|
|
3365
|
-
var heroTypographySchema =
|
|
2773
|
+
var heroTypographySchema = z16.object({
|
|
3366
2774
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
3367
2775
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
3368
2776
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
@@ -3371,24 +2779,24 @@ var heroTypographySchema = z19.object({
|
|
|
3371
2779
|
microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
3372
2780
|
microSubheadlineSize: heroTypographySizeSchema.optional(),
|
|
3373
2781
|
microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
3374
|
-
responsive:
|
|
2782
|
+
responsive: z16.object({
|
|
3375
2783
|
tablet: heroResponsiveTypographySchema.optional(),
|
|
3376
2784
|
mobile: heroResponsiveTypographySchema.optional()
|
|
3377
2785
|
}).optional()
|
|
3378
2786
|
});
|
|
3379
|
-
var heroSchema =
|
|
2787
|
+
var heroSchema = z16.object({
|
|
3380
2788
|
typography: heroTypographySchema.optional()
|
|
3381
2789
|
}).optional();
|
|
3382
|
-
var gradientsSchema =
|
|
3383
|
-
button:
|
|
3384
|
-
hero:
|
|
3385
|
-
background:
|
|
3386
|
-
});
|
|
3387
|
-
var themeSchema =
|
|
3388
|
-
name:
|
|
3389
|
-
description:
|
|
3390
|
-
rationale:
|
|
3391
|
-
siteStyleId:
|
|
2790
|
+
var gradientsSchema = z16.object({
|
|
2791
|
+
button: z16.string().min(1).nullable().optional(),
|
|
2792
|
+
hero: z16.string().min(1).nullable().optional(),
|
|
2793
|
+
background: z16.string().min(1).nullable().optional()
|
|
2794
|
+
});
|
|
2795
|
+
var themeSchema = z16.object({
|
|
2796
|
+
name: z16.string().min(1).max(30),
|
|
2797
|
+
description: z16.string().min(1).max(400),
|
|
2798
|
+
rationale: z16.string().min(1).max(400),
|
|
2799
|
+
siteStyleId: z16.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
|
|
3392
2800
|
axes: axesSchema,
|
|
3393
2801
|
palette: paletteSchema,
|
|
3394
2802
|
typography: typographySchema,
|
|
@@ -3415,16 +2823,16 @@ var themeSchema = z19.object({
|
|
|
3415
2823
|
// Block-specific customization (Tier 3)
|
|
3416
2824
|
// blockCustomVars: Per-block CSS variable overrides as bare values
|
|
3417
2825
|
// Example: { "event-registration": { "--step-color": "#6d28d9" } }
|
|
3418
|
-
blockCustomVars:
|
|
3419
|
-
|
|
2826
|
+
blockCustomVars: z16.record(
|
|
2827
|
+
z16.string(),
|
|
3420
2828
|
// block kind (matches data-block attribute)
|
|
3421
|
-
|
|
2829
|
+
z16.record(z16.string(), z16.string())
|
|
3422
2830
|
// { '--var-name': 'value' }
|
|
3423
2831
|
).optional(),
|
|
3424
2832
|
// Structured block-kind theme overrides (v1: typography prose-link style only)
|
|
3425
2833
|
// Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
|
|
3426
|
-
blockOverrides:
|
|
3427
|
-
|
|
2834
|
+
blockOverrides: z16.record(
|
|
2835
|
+
z16.string(),
|
|
3428
2836
|
blockThemeOverrideSchema
|
|
3429
2837
|
).optional(),
|
|
3430
2838
|
// Structured custom CSS rules
|
|
@@ -3460,22 +2868,21 @@ var themeSchema = z19.object({
|
|
|
3460
2868
|
* }
|
|
3461
2869
|
* ```
|
|
3462
2870
|
*/
|
|
3463
|
-
styleGroups:
|
|
2871
|
+
styleGroups: z16.record(z16.string(), z16.array(z16.string())).optional()
|
|
3464
2872
|
});
|
|
3465
|
-
var themesTurnSchema =
|
|
3466
|
-
message:
|
|
3467
|
-
themes:
|
|
2873
|
+
var themesTurnSchema = z16.object({
|
|
2874
|
+
message: z16.string().min(1),
|
|
2875
|
+
themes: z16.array(themeSchema).length(3)
|
|
3468
2876
|
});
|
|
3469
2877
|
|
|
3470
2878
|
// ../theme-core/src/palette/variants/types.ts
|
|
3471
|
-
import { z as z20 } from "zod";
|
|
3472
2879
|
function asPaletteVariantId(value) {
|
|
3473
2880
|
if (value.length === 0) {
|
|
3474
2881
|
throw new Error("PaletteVariantId must be a non-empty string");
|
|
3475
2882
|
}
|
|
3476
2883
|
return value;
|
|
3477
2884
|
}
|
|
3478
|
-
var paletteVariantIdSchema =
|
|
2885
|
+
var paletteVariantIdSchema = z17.string().min(1).transform((value) => asPaletteVariantId(value));
|
|
3479
2886
|
var PALETTE_TOKEN_NAMES = [
|
|
3480
2887
|
"primary",
|
|
3481
2888
|
"primaryForeground",
|
|
@@ -3491,19 +2898,19 @@ var PALETTE_TOKEN_NAMES = [
|
|
|
3491
2898
|
"text",
|
|
3492
2899
|
"border"
|
|
3493
2900
|
];
|
|
3494
|
-
var paletteTokenNameSchema =
|
|
2901
|
+
var paletteTokenNameSchema = z17.enum(PALETTE_TOKEN_NAMES);
|
|
3495
2902
|
var HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
|
|
3496
|
-
var hexColorSchema =
|
|
2903
|
+
var hexColorSchema = z17.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
|
|
3497
2904
|
var variantPaletteColorSchema = paletteColorSchema.extend({
|
|
3498
2905
|
name: paletteTokenNameSchema
|
|
3499
2906
|
});
|
|
3500
|
-
var paletteVariantSchema =
|
|
2907
|
+
var paletteVariantSchema = z17.object({
|
|
3501
2908
|
id: paletteVariantIdSchema,
|
|
3502
|
-
name:
|
|
3503
|
-
description:
|
|
2909
|
+
name: z17.string().min(1),
|
|
2910
|
+
description: z17.string().min(1),
|
|
3504
2911
|
tags: styleTagsSchema,
|
|
3505
|
-
mode:
|
|
3506
|
-
colors:
|
|
2912
|
+
mode: z17.enum(["light", "dark"]),
|
|
2913
|
+
colors: z17.array(variantPaletteColorSchema).min(1)
|
|
3507
2914
|
});
|
|
3508
2915
|
function definePaletteVariant(input) {
|
|
3509
2916
|
return {
|
|
@@ -3515,7 +2922,7 @@ function definePaletteVariant(input) {
|
|
|
3515
2922
|
colors: input.colors
|
|
3516
2923
|
};
|
|
3517
2924
|
}
|
|
3518
|
-
var paletteOverridesSchema =
|
|
2925
|
+
var paletteOverridesSchema = z17.object({
|
|
3519
2926
|
primary: hexColorSchema.optional(),
|
|
3520
2927
|
primaryForeground: hexColorSchema.optional(),
|
|
3521
2928
|
secondary: hexColorSchema.optional(),
|
|
@@ -3803,28 +3210,679 @@ var warmNeutralForest = definePaletteVariant({
|
|
|
3803
3210
|
]
|
|
3804
3211
|
});
|
|
3805
3212
|
|
|
3806
|
-
// ../theme-core/src/palette/variants/index.ts
|
|
3807
|
-
var paletteVariants = [
|
|
3808
|
-
// Brand-led family
|
|
3809
|
-
brandLedCool,
|
|
3810
|
-
brandLedWarm,
|
|
3811
|
-
brandLedJewel,
|
|
3812
|
-
// Warm-neutral family
|
|
3813
|
-
warmNeutralClay,
|
|
3814
|
-
warmNeutralCream,
|
|
3815
|
-
warmNeutralForest,
|
|
3816
|
-
// High-contrast family
|
|
3817
|
-
highContrastInk,
|
|
3818
|
-
highContrastCharcoal,
|
|
3819
|
-
highContrastMonochrome,
|
|
3820
|
-
// Soft-natural family
|
|
3821
|
-
softNaturalSage,
|
|
3822
|
-
softNaturalStone,
|
|
3823
|
-
softNaturalWatercolor
|
|
3213
|
+
// ../theme-core/src/palette/variants/index.ts
|
|
3214
|
+
var paletteVariants = [
|
|
3215
|
+
// Brand-led family
|
|
3216
|
+
brandLedCool,
|
|
3217
|
+
brandLedWarm,
|
|
3218
|
+
brandLedJewel,
|
|
3219
|
+
// Warm-neutral family
|
|
3220
|
+
warmNeutralClay,
|
|
3221
|
+
warmNeutralCream,
|
|
3222
|
+
warmNeutralForest,
|
|
3223
|
+
// High-contrast family
|
|
3224
|
+
highContrastInk,
|
|
3225
|
+
highContrastCharcoal,
|
|
3226
|
+
highContrastMonochrome,
|
|
3227
|
+
// Soft-natural family
|
|
3228
|
+
softNaturalSage,
|
|
3229
|
+
softNaturalStone,
|
|
3230
|
+
softNaturalWatercolor
|
|
3231
|
+
];
|
|
3232
|
+
var paletteVariantsById = new Map(
|
|
3233
|
+
paletteVariants.map((v) => [v.id, v])
|
|
3234
|
+
);
|
|
3235
|
+
|
|
3236
|
+
// ../theme-core/src/site-styles/sourceCatalogs.ts
|
|
3237
|
+
var generatedContentFrames = [
|
|
3238
|
+
plainFrame,
|
|
3239
|
+
panelFrame("inset"),
|
|
3240
|
+
panelFrame("raised"),
|
|
3241
|
+
flushPanelFrame({ bleed: "start" })
|
|
3242
|
+
];
|
|
3243
|
+
var userContentFrames = [
|
|
3244
|
+
...generatedContentFrames,
|
|
3245
|
+
panelFrame("editorial"),
|
|
3246
|
+
flushPanelFrame({ bleed: "end" }),
|
|
3247
|
+
flushPanelFrame({ bleed: "both" })
|
|
3248
|
+
];
|
|
3249
|
+
var generatedDesignOptionCatalog = {
|
|
3250
|
+
source: "generated",
|
|
3251
|
+
sectionSurfaces: ["base", "muted-band", "accent-band", "hero-image"],
|
|
3252
|
+
contentFrames: generatedContentFrames,
|
|
3253
|
+
itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
|
|
3254
|
+
transitions: ["none", "soft-fade-short", "soft-fade-long"],
|
|
3255
|
+
emphases: ["low", "medium", "high"],
|
|
3256
|
+
detachedCustom: false
|
|
3257
|
+
};
|
|
3258
|
+
var userDesignOptionCatalog = {
|
|
3259
|
+
source: "user",
|
|
3260
|
+
sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
3261
|
+
contentFrames: userContentFrames,
|
|
3262
|
+
itemSurfaces: [
|
|
3263
|
+
...generatedDesignOptionCatalog.itemSurfaces,
|
|
3264
|
+
"inset",
|
|
3265
|
+
"editorial"
|
|
3266
|
+
],
|
|
3267
|
+
transitions: [
|
|
3268
|
+
...generatedDesignOptionCatalog.transitions,
|
|
3269
|
+
"wave-edge",
|
|
3270
|
+
"angle-edge"
|
|
3271
|
+
],
|
|
3272
|
+
emphases: generatedDesignOptionCatalog.emphases,
|
|
3273
|
+
detachedCustom: false
|
|
3274
|
+
};
|
|
3275
|
+
var advancedDesignOptionCatalog = {
|
|
3276
|
+
source: "advanced",
|
|
3277
|
+
sectionSurfaces: userDesignOptionCatalog.sectionSurfaces,
|
|
3278
|
+
contentFrames: userDesignOptionCatalog.contentFrames,
|
|
3279
|
+
itemSurfaces: userDesignOptionCatalog.itemSurfaces,
|
|
3280
|
+
transitions: userDesignOptionCatalog.transitions,
|
|
3281
|
+
emphases: userDesignOptionCatalog.emphases,
|
|
3282
|
+
detachedCustom: true
|
|
3283
|
+
};
|
|
3284
|
+
|
|
3285
|
+
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
3286
|
+
var curatedSiteStyleIdValues = [
|
|
3287
|
+
"site-style:calm-studio",
|
|
3288
|
+
"site-style:clear-professional",
|
|
3289
|
+
"site-style:warm-editorial",
|
|
3290
|
+
"site-style:bright-community",
|
|
3291
|
+
"site-style:quiet-luxury",
|
|
3292
|
+
"site-style:practical-services",
|
|
3293
|
+
"site-style:modern-wellness",
|
|
3294
|
+
"site-style:bold-launch"
|
|
3295
|
+
];
|
|
3296
|
+
var quietBudget = {
|
|
3297
|
+
accentDensity: "low",
|
|
3298
|
+
panelDensity: "medium",
|
|
3299
|
+
transitionMix: "quiet",
|
|
3300
|
+
primaryCtaLimit: 2,
|
|
3301
|
+
mediaDensity: "medium",
|
|
3302
|
+
decorativeRepetition: "low"
|
|
3303
|
+
};
|
|
3304
|
+
var balancedBudget = {
|
|
3305
|
+
accentDensity: "medium",
|
|
3306
|
+
panelDensity: "medium",
|
|
3307
|
+
transitionMix: "balanced",
|
|
3308
|
+
primaryCtaLimit: 3,
|
|
3309
|
+
mediaDensity: "medium",
|
|
3310
|
+
decorativeRepetition: "medium"
|
|
3311
|
+
};
|
|
3312
|
+
var expressiveBudget = {
|
|
3313
|
+
accentDensity: "high",
|
|
3314
|
+
panelDensity: "high",
|
|
3315
|
+
transitionMix: "expressive",
|
|
3316
|
+
primaryCtaLimit: 3,
|
|
3317
|
+
mediaDensity: "high",
|
|
3318
|
+
decorativeRepetition: "medium"
|
|
3319
|
+
};
|
|
3320
|
+
function uniqueContentFrameKinds() {
|
|
3321
|
+
const kinds = [...new Set(
|
|
3322
|
+
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
3323
|
+
)];
|
|
3324
|
+
const firstKind = kinds[0];
|
|
3325
|
+
if (!firstKind) {
|
|
3326
|
+
throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
|
|
3327
|
+
}
|
|
3328
|
+
return [firstKind, ...kinds.slice(1)];
|
|
3329
|
+
}
|
|
3330
|
+
var generatedContentFrameKinds = uniqueContentFrameKinds();
|
|
3331
|
+
function defineCuratedSiteStyle(input) {
|
|
3332
|
+
return {
|
|
3333
|
+
id: asSiteStyleId(input.id),
|
|
3334
|
+
name: input.name,
|
|
3335
|
+
description: input.description,
|
|
3336
|
+
generationBrief: input.generationBrief,
|
|
3337
|
+
selectionKeywords: input.selectionKeywords ?? [],
|
|
3338
|
+
template: {
|
|
3339
|
+
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
3340
|
+
name: input.name,
|
|
3341
|
+
version: 1,
|
|
3342
|
+
tokenRecipes: input.tokenRecipes,
|
|
3343
|
+
compositionBudget: input.compositionBudget,
|
|
3344
|
+
supportedSectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
3345
|
+
supportedContentFrames: generatedContentFrameKinds,
|
|
3346
|
+
supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
3347
|
+
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
3348
|
+
},
|
|
3349
|
+
buttonPersonalityChoices: input.buttonPersonalityChoices,
|
|
3350
|
+
paletteVariantChoices: input.paletteVariantChoices
|
|
3351
|
+
};
|
|
3352
|
+
}
|
|
3353
|
+
function buttonChoice(id, note) {
|
|
3354
|
+
return note ? { id: asButtonPersonalityId(id), note } : { id: asButtonPersonalityId(id) };
|
|
3355
|
+
}
|
|
3356
|
+
function paletteChoice(id, note) {
|
|
3357
|
+
return note ? { id: asPaletteVariantId(id), note } : { id: asPaletteVariantId(id) };
|
|
3358
|
+
}
|
|
3359
|
+
var curatedSiteStyles = [
|
|
3360
|
+
defineCuratedSiteStyle({
|
|
3361
|
+
id: "site-style:calm-studio",
|
|
3362
|
+
name: "Calm Studio",
|
|
3363
|
+
description: "Soft, measured, and spacious for intimate appointment or class businesses.",
|
|
3364
|
+
generationBrief: "Use calm pacing, concise copy, generous breathing room, and natural imagery. Keep calls to action steady rather than urgent.",
|
|
3365
|
+
tokenRecipes: {
|
|
3366
|
+
palette: "soft-natural",
|
|
3367
|
+
contrast: "standard",
|
|
3368
|
+
radius: "soft",
|
|
3369
|
+
shadow: "subtle",
|
|
3370
|
+
typography: "friendly-sans",
|
|
3371
|
+
spacing: "airy",
|
|
3372
|
+
motion: "subtle"
|
|
3373
|
+
},
|
|
3374
|
+
compositionBudget: quietBudget,
|
|
3375
|
+
buttonPersonalityChoices: [
|
|
3376
|
+
buttonChoice("soft-pill"),
|
|
3377
|
+
buttonChoice("pebble"),
|
|
3378
|
+
buttonChoice("editorial-link"),
|
|
3379
|
+
buttonChoice("brushed-wash")
|
|
3380
|
+
],
|
|
3381
|
+
paletteVariantChoices: [
|
|
3382
|
+
paletteChoice("soft-natural-sage"),
|
|
3383
|
+
paletteChoice("soft-natural-stone"),
|
|
3384
|
+
paletteChoice("warm-neutral-clay"),
|
|
3385
|
+
paletteChoice("soft-natural-watercolor")
|
|
3386
|
+
]
|
|
3387
|
+
}),
|
|
3388
|
+
defineCuratedSiteStyle({
|
|
3389
|
+
id: "site-style:clear-professional",
|
|
3390
|
+
name: "Clear Professional",
|
|
3391
|
+
description: "Crisp, trustworthy, and direct for local services and consultancies.",
|
|
3392
|
+
generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
|
|
3393
|
+
tokenRecipes: {
|
|
3394
|
+
palette: "brand-led",
|
|
3395
|
+
contrast: "strong",
|
|
3396
|
+
radius: "soft",
|
|
3397
|
+
shadow: "subtle",
|
|
3398
|
+
typography: "clean-sans",
|
|
3399
|
+
spacing: "regular",
|
|
3400
|
+
motion: "subtle"
|
|
3401
|
+
},
|
|
3402
|
+
compositionBudget: balancedBudget,
|
|
3403
|
+
buttonPersonalityChoices: [
|
|
3404
|
+
buttonChoice("confident-chip"),
|
|
3405
|
+
buttonChoice("soft-pill"),
|
|
3406
|
+
buttonChoice("editorial-link")
|
|
3407
|
+
],
|
|
3408
|
+
paletteVariantChoices: [
|
|
3409
|
+
paletteChoice("brand-led-cool"),
|
|
3410
|
+
paletteChoice("high-contrast-ink"),
|
|
3411
|
+
paletteChoice("brand-led-jewel")
|
|
3412
|
+
]
|
|
3413
|
+
}),
|
|
3414
|
+
defineCuratedSiteStyle({
|
|
3415
|
+
id: "site-style:warm-editorial",
|
|
3416
|
+
name: "Warm Editorial",
|
|
3417
|
+
description: "Story-led and textured for educators, makers, venues, and retreats.",
|
|
3418
|
+
generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
|
|
3419
|
+
tokenRecipes: {
|
|
3420
|
+
palette: "warm-neutral",
|
|
3421
|
+
contrast: "standard",
|
|
3422
|
+
radius: "square",
|
|
3423
|
+
shadow: "none",
|
|
3424
|
+
typography: "serif-editorial",
|
|
3425
|
+
spacing: "airy",
|
|
3426
|
+
motion: "subtle"
|
|
3427
|
+
},
|
|
3428
|
+
compositionBudget: balancedBudget,
|
|
3429
|
+
buttonPersonalityChoices: [
|
|
3430
|
+
buttonChoice("editorial-link"),
|
|
3431
|
+
buttonChoice("soft-pill"),
|
|
3432
|
+
buttonChoice("brushed-wash")
|
|
3433
|
+
],
|
|
3434
|
+
paletteVariantChoices: [
|
|
3435
|
+
paletteChoice("warm-neutral-cream"),
|
|
3436
|
+
paletteChoice("warm-neutral-clay"),
|
|
3437
|
+
paletteChoice("warm-neutral-forest"),
|
|
3438
|
+
paletteChoice("soft-natural-stone")
|
|
3439
|
+
]
|
|
3440
|
+
}),
|
|
3441
|
+
defineCuratedSiteStyle({
|
|
3442
|
+
id: "site-style:bright-community",
|
|
3443
|
+
name: "Bright Community",
|
|
3444
|
+
description: "Friendly, welcoming, and active for groups, classes, and neighborhood offers.",
|
|
3445
|
+
generationBrief: "Use welcoming language, clear event or booking routes, and optimistic imagery. Let accents appear, but avoid noisy decoration.",
|
|
3446
|
+
tokenRecipes: {
|
|
3447
|
+
palette: "brand-led",
|
|
3448
|
+
contrast: "standard",
|
|
3449
|
+
radius: "rounded",
|
|
3450
|
+
shadow: "subtle",
|
|
3451
|
+
typography: "friendly-sans",
|
|
3452
|
+
spacing: "regular",
|
|
3453
|
+
motion: "expressive"
|
|
3454
|
+
},
|
|
3455
|
+
compositionBudget: balancedBudget,
|
|
3456
|
+
buttonPersonalityChoices: [
|
|
3457
|
+
buttonChoice("pebble"),
|
|
3458
|
+
buttonChoice("brushed-wash"),
|
|
3459
|
+
buttonChoice("confident-chip")
|
|
3460
|
+
],
|
|
3461
|
+
paletteVariantChoices: [
|
|
3462
|
+
paletteChoice("brand-led-warm"),
|
|
3463
|
+
paletteChoice("brand-led-jewel"),
|
|
3464
|
+
paletteChoice("soft-natural-watercolor")
|
|
3465
|
+
]
|
|
3466
|
+
}),
|
|
3467
|
+
defineCuratedSiteStyle({
|
|
3468
|
+
id: "site-style:quiet-luxury",
|
|
3469
|
+
name: "Quiet Luxury",
|
|
3470
|
+
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
3471
|
+
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
3472
|
+
selectionKeywords: [
|
|
3473
|
+
"luxury",
|
|
3474
|
+
"premium",
|
|
3475
|
+
"boutique",
|
|
3476
|
+
"bespoke",
|
|
3477
|
+
"exclusive"
|
|
3478
|
+
],
|
|
3479
|
+
tokenRecipes: {
|
|
3480
|
+
palette: "high-contrast",
|
|
3481
|
+
contrast: "strong",
|
|
3482
|
+
radius: "square",
|
|
3483
|
+
shadow: "none",
|
|
3484
|
+
typography: "classic-serif",
|
|
3485
|
+
spacing: "airy",
|
|
3486
|
+
motion: "none"
|
|
3487
|
+
},
|
|
3488
|
+
compositionBudget: quietBudget,
|
|
3489
|
+
buttonPersonalityChoices: [
|
|
3490
|
+
buttonChoice("editorial-link"),
|
|
3491
|
+
buttonChoice("confident-chip"),
|
|
3492
|
+
buttonChoice("soft-pill")
|
|
3493
|
+
],
|
|
3494
|
+
paletteVariantChoices: [
|
|
3495
|
+
paletteChoice("high-contrast-charcoal"),
|
|
3496
|
+
paletteChoice("high-contrast-ink"),
|
|
3497
|
+
paletteChoice("warm-neutral-cream")
|
|
3498
|
+
]
|
|
3499
|
+
}),
|
|
3500
|
+
defineCuratedSiteStyle({
|
|
3501
|
+
id: "site-style:practical-services",
|
|
3502
|
+
name: "Practical Services",
|
|
3503
|
+
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
3504
|
+
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
3505
|
+
selectionKeywords: [
|
|
3506
|
+
"repair",
|
|
3507
|
+
"plumb",
|
|
3508
|
+
"electric",
|
|
3509
|
+
"cleaning",
|
|
3510
|
+
"landscap",
|
|
3511
|
+
"contractor"
|
|
3512
|
+
],
|
|
3513
|
+
tokenRecipes: {
|
|
3514
|
+
palette: "brand-led",
|
|
3515
|
+
contrast: "maximum",
|
|
3516
|
+
radius: "soft",
|
|
3517
|
+
shadow: "subtle",
|
|
3518
|
+
typography: "clean-sans",
|
|
3519
|
+
spacing: "compact",
|
|
3520
|
+
motion: "none"
|
|
3521
|
+
},
|
|
3522
|
+
compositionBudget: quietBudget,
|
|
3523
|
+
buttonPersonalityChoices: [
|
|
3524
|
+
buttonChoice("confident-chip"),
|
|
3525
|
+
buttonChoice("pebble"),
|
|
3526
|
+
buttonChoice("ink-stamp")
|
|
3527
|
+
],
|
|
3528
|
+
paletteVariantChoices: [
|
|
3529
|
+
paletteChoice("brand-led-cool"),
|
|
3530
|
+
paletteChoice("high-contrast-ink"),
|
|
3531
|
+
paletteChoice("brand-led-warm")
|
|
3532
|
+
]
|
|
3533
|
+
}),
|
|
3534
|
+
defineCuratedSiteStyle({
|
|
3535
|
+
id: "site-style:modern-wellness",
|
|
3536
|
+
name: "Modern Wellness",
|
|
3537
|
+
description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
|
|
3538
|
+
generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
|
|
3539
|
+
tokenRecipes: {
|
|
3540
|
+
palette: "soft-natural",
|
|
3541
|
+
contrast: "standard",
|
|
3542
|
+
radius: "rounded",
|
|
3543
|
+
shadow: "subtle",
|
|
3544
|
+
typography: "clean-sans",
|
|
3545
|
+
spacing: "airy",
|
|
3546
|
+
motion: "subtle"
|
|
3547
|
+
},
|
|
3548
|
+
compositionBudget: balancedBudget,
|
|
3549
|
+
buttonPersonalityChoices: [
|
|
3550
|
+
buttonChoice("soft-pill"),
|
|
3551
|
+
buttonChoice("pebble"),
|
|
3552
|
+
buttonChoice("confident-chip")
|
|
3553
|
+
],
|
|
3554
|
+
paletteVariantChoices: [
|
|
3555
|
+
paletteChoice("soft-natural-sage"),
|
|
3556
|
+
paletteChoice("soft-natural-stone"),
|
|
3557
|
+
paletteChoice("warm-neutral-forest")
|
|
3558
|
+
]
|
|
3559
|
+
}),
|
|
3560
|
+
defineCuratedSiteStyle({
|
|
3561
|
+
id: "site-style:bold-launch",
|
|
3562
|
+
name: "Bold Launch",
|
|
3563
|
+
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
3564
|
+
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
3565
|
+
selectionKeywords: [
|
|
3566
|
+
"launch",
|
|
3567
|
+
"campaign",
|
|
3568
|
+
"preorder",
|
|
3569
|
+
"pre-order",
|
|
3570
|
+
"waitlist",
|
|
3571
|
+
"drop"
|
|
3572
|
+
],
|
|
3573
|
+
tokenRecipes: {
|
|
3574
|
+
palette: "high-contrast",
|
|
3575
|
+
contrast: "maximum",
|
|
3576
|
+
radius: "pill",
|
|
3577
|
+
shadow: "layered",
|
|
3578
|
+
typography: "clean-sans",
|
|
3579
|
+
spacing: "regular",
|
|
3580
|
+
motion: "expressive"
|
|
3581
|
+
},
|
|
3582
|
+
compositionBudget: expressiveBudget,
|
|
3583
|
+
buttonPersonalityChoices: [
|
|
3584
|
+
buttonChoice("ink-stamp"),
|
|
3585
|
+
buttonChoice("confident-chip"),
|
|
3586
|
+
buttonChoice("brushed-wash"),
|
|
3587
|
+
buttonChoice("pebble")
|
|
3588
|
+
],
|
|
3589
|
+
paletteVariantChoices: [
|
|
3590
|
+
paletteChoice("high-contrast-monochrome"),
|
|
3591
|
+
paletteChoice("high-contrast-ink"),
|
|
3592
|
+
paletteChoice("brand-led-jewel"),
|
|
3593
|
+
paletteChoice("brand-led-warm")
|
|
3594
|
+
]
|
|
3595
|
+
})
|
|
3596
|
+
];
|
|
3597
|
+
var curatedSiteStylesById = new Map(
|
|
3598
|
+
curatedSiteStyles.map((style) => [style.id, style])
|
|
3599
|
+
);
|
|
3600
|
+
|
|
3601
|
+
// ../theme-core/src/site-styles/designState.ts
|
|
3602
|
+
import { z as z18 } from "zod";
|
|
3603
|
+
|
|
3604
|
+
// ../theme-core/src/site-styles/rawStyleFields.ts
|
|
3605
|
+
var themeV2RuntimeStyleFieldNames = [
|
|
3606
|
+
"_frameStyles",
|
|
3607
|
+
"_sectionStyles",
|
|
3608
|
+
"_containerStyles",
|
|
3609
|
+
"_cardStyles",
|
|
3610
|
+
// styleGroup is legacy runtime transition wiring rather than a nested
|
|
3611
|
+
// override object, but normal editors should still never see it directly.
|
|
3612
|
+
"styleGroup"
|
|
3824
3613
|
];
|
|
3825
|
-
var
|
|
3826
|
-
|
|
3614
|
+
var themeV2BlockSpecificRawStyleFieldNames = [
|
|
3615
|
+
"_contentCardStyles",
|
|
3616
|
+
"_textCardStyles"
|
|
3617
|
+
];
|
|
3618
|
+
var themeV2NormalEditorRawStyleFieldNames = [
|
|
3619
|
+
...themeV2RuntimeStyleFieldNames,
|
|
3620
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
3621
|
+
];
|
|
3622
|
+
var themeV2NormalEditorRawStyleFieldNameSet = new Set(
|
|
3623
|
+
themeV2NormalEditorRawStyleFieldNames
|
|
3624
|
+
);
|
|
3625
|
+
|
|
3626
|
+
// ../theme-core/src/site-styles/designState.ts
|
|
3627
|
+
var themeV2DesignStateSchemaVersion = 1;
|
|
3628
|
+
var designResolutionPolicySchema = z18.enum(["generated", "user", "admin", "sdk"]);
|
|
3629
|
+
var runtimeStyleFieldNameSchema = z18.enum(themeV2RuntimeStyleFieldNames);
|
|
3630
|
+
var nonEmptyRuntimeStyleFieldNamesSchema = z18.array(runtimeStyleFieldNameSchema).min(1).transform((fields3) => [
|
|
3631
|
+
fields3[0],
|
|
3632
|
+
...fields3.slice(1)
|
|
3633
|
+
]);
|
|
3634
|
+
var heroLegibilityStrategySchema = z18.enum([
|
|
3635
|
+
"none",
|
|
3636
|
+
"scrim-gradient",
|
|
3637
|
+
"solid-panel"
|
|
3638
|
+
]);
|
|
3639
|
+
function uniqueNonEmpty(values) {
|
|
3640
|
+
const uniqueValues = [...new Set(values)];
|
|
3641
|
+
const firstValue = uniqueValues[0];
|
|
3642
|
+
if (!firstValue) {
|
|
3643
|
+
throw new Error("Expected at least one Theme V2 design state option.");
|
|
3644
|
+
}
|
|
3645
|
+
return [firstValue, ...uniqueValues.slice(1)];
|
|
3646
|
+
}
|
|
3647
|
+
var userPanelTreatments = uniqueNonEmpty(
|
|
3648
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
3649
|
+
);
|
|
3650
|
+
var userFlushTreatments = uniqueNonEmpty(
|
|
3651
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
3652
|
+
);
|
|
3653
|
+
var userFlushBleeds = uniqueNonEmpty(
|
|
3654
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
3655
|
+
);
|
|
3656
|
+
var contentFrameIntentSchema = z18.discriminatedUnion("kind", [
|
|
3657
|
+
z18.object({ kind: z18.literal("plain") }).strict(),
|
|
3658
|
+
z18.object({
|
|
3659
|
+
kind: z18.literal("panel"),
|
|
3660
|
+
treatment: z18.enum(userPanelTreatments)
|
|
3661
|
+
}).strict(),
|
|
3662
|
+
z18.object({
|
|
3663
|
+
kind: z18.literal("flush-panel"),
|
|
3664
|
+
treatment: z18.enum(userFlushTreatments),
|
|
3665
|
+
bleed: z18.enum(userFlushBleeds)
|
|
3666
|
+
}).strict()
|
|
3667
|
+
]);
|
|
3668
|
+
var blockDesignPlanSchema = z18.object({
|
|
3669
|
+
blockId: z18.string().min(1).transform(asDesignBlockId),
|
|
3670
|
+
blockKind: z18.string().min(1),
|
|
3671
|
+
purpose: z18.string().min(1),
|
|
3672
|
+
sectionSurface: z18.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
3673
|
+
contentFrame: contentFrameIntentSchema,
|
|
3674
|
+
itemSurface: z18.enum(userDesignOptionCatalog.itemSurfaces),
|
|
3675
|
+
transitionAfter: z18.enum(userDesignOptionCatalog.transitions),
|
|
3676
|
+
emphasis: z18.enum(userDesignOptionCatalog.emphases),
|
|
3677
|
+
heroLegibility: heroLegibilityStrategySchema.optional()
|
|
3678
|
+
}).strict();
|
|
3679
|
+
var styleAuthoritySchema = z18.discriminatedUnion("kind", [
|
|
3680
|
+
z18.object({
|
|
3681
|
+
kind: z18.literal("theme-v2"),
|
|
3682
|
+
source: designResolutionPolicySchema,
|
|
3683
|
+
siteStyleId: z18.string().min(1).transform(asSiteStyleId),
|
|
3684
|
+
templateId: z18.string().min(1).transform(asDesignSystemTemplateId),
|
|
3685
|
+
templateVersion: z18.number().int().nonnegative(),
|
|
3686
|
+
resolverVersion: z18.number().int().nonnegative()
|
|
3687
|
+
}).strict(),
|
|
3688
|
+
z18.object({
|
|
3689
|
+
kind: z18.literal("legacy-raw"),
|
|
3690
|
+
reason: z18.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
3691
|
+
}).strict(),
|
|
3692
|
+
z18.object({
|
|
3693
|
+
kind: z18.literal("advanced-detached"),
|
|
3694
|
+
reason: z18.literal("detached-custom-runtime-fields")
|
|
3695
|
+
}).strict()
|
|
3696
|
+
]);
|
|
3697
|
+
var blockRuntimeStyleAuthoritySchema = z18.object({
|
|
3698
|
+
unit: z18.literal("block-runtime-fields"),
|
|
3699
|
+
blockId: z18.string().min(1).transform(asDesignBlockId),
|
|
3700
|
+
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
3701
|
+
authority: styleAuthoritySchema
|
|
3702
|
+
}).strict();
|
|
3703
|
+
var persistedPageDesignStateV1Schema = z18.object({
|
|
3704
|
+
schemaVersion: z18.literal(themeV2DesignStateSchemaVersion),
|
|
3705
|
+
siteStyleId: z18.string().min(1).transform(asSiteStyleId),
|
|
3706
|
+
templateId: z18.string().min(1).transform(asDesignSystemTemplateId),
|
|
3707
|
+
templateVersion: z18.number().int().nonnegative(),
|
|
3708
|
+
resolverVersion: z18.number().int().nonnegative(),
|
|
3709
|
+
rhythmPresetId: z18.string().min(1),
|
|
3710
|
+
blocks: z18.array(blockDesignPlanSchema),
|
|
3711
|
+
styleAuthorities: z18.array(blockRuntimeStyleAuthoritySchema)
|
|
3712
|
+
}).strict();
|
|
3713
|
+
|
|
3714
|
+
// ../theme-core/src/site-styles/generatedSchemas.ts
|
|
3715
|
+
import { z as z19 } from "zod";
|
|
3716
|
+
function uniqueNonEmpty2(values) {
|
|
3717
|
+
const uniqueValues = [...new Set(values)];
|
|
3718
|
+
const firstValue = uniqueValues[0];
|
|
3719
|
+
if (!firstValue) {
|
|
3720
|
+
throw new Error("Expected at least one generated schema option.");
|
|
3721
|
+
}
|
|
3722
|
+
return [firstValue, ...uniqueValues.slice(1)];
|
|
3723
|
+
}
|
|
3724
|
+
var generatedPanelTreatments = uniqueNonEmpty2(
|
|
3725
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
3827
3726
|
);
|
|
3727
|
+
var generatedFlushTreatments = uniqueNonEmpty2(
|
|
3728
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
3729
|
+
);
|
|
3730
|
+
var generatedFlushBleeds = uniqueNonEmpty2(
|
|
3731
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
3732
|
+
);
|
|
3733
|
+
var generatedPanelFrameSchema = z19.object({
|
|
3734
|
+
kind: z19.literal("panel"),
|
|
3735
|
+
treatment: z19.enum(generatedPanelTreatments)
|
|
3736
|
+
}).strict();
|
|
3737
|
+
var generatedFlushPanelFrameSchema = z19.object({
|
|
3738
|
+
kind: z19.literal("flush-panel"),
|
|
3739
|
+
treatment: z19.enum(generatedFlushTreatments),
|
|
3740
|
+
bleed: z19.enum(generatedFlushBleeds)
|
|
3741
|
+
}).strict();
|
|
3742
|
+
var generatedContentFrameIntentSchema = z19.discriminatedUnion("kind", [
|
|
3743
|
+
z19.object({ kind: z19.literal("plain") }).strict(),
|
|
3744
|
+
generatedPanelFrameSchema,
|
|
3745
|
+
generatedFlushPanelFrameSchema
|
|
3746
|
+
]);
|
|
3747
|
+
var generatedSiteStyleIdSchema = z19.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
|
|
3748
|
+
function generatedChoiceSchema(valueSchema) {
|
|
3749
|
+
return z19.discriminatedUnion("kind", [
|
|
3750
|
+
z19.object({
|
|
3751
|
+
source: z19.literal("generated"),
|
|
3752
|
+
kind: z19.literal("auto")
|
|
3753
|
+
}).strict(),
|
|
3754
|
+
z19.object({
|
|
3755
|
+
source: z19.literal("generated"),
|
|
3756
|
+
kind: z19.literal("explicit"),
|
|
3757
|
+
value: valueSchema
|
|
3758
|
+
}).strict()
|
|
3759
|
+
]);
|
|
3760
|
+
}
|
|
3761
|
+
var generatedBlockDesignIntentSchema = z19.object({
|
|
3762
|
+
sectionSurface: generatedChoiceSchema(
|
|
3763
|
+
z19.enum(generatedDesignOptionCatalog.sectionSurfaces)
|
|
3764
|
+
),
|
|
3765
|
+
contentFrame: generatedChoiceSchema(generatedContentFrameIntentSchema),
|
|
3766
|
+
itemSurface: generatedChoiceSchema(
|
|
3767
|
+
z19.enum(generatedDesignOptionCatalog.itemSurfaces)
|
|
3768
|
+
),
|
|
3769
|
+
transitionAfter: generatedChoiceSchema(
|
|
3770
|
+
z19.enum(generatedDesignOptionCatalog.transitions)
|
|
3771
|
+
),
|
|
3772
|
+
emphasis: generatedChoiceSchema(
|
|
3773
|
+
z19.enum(generatedDesignOptionCatalog.emphases)
|
|
3774
|
+
)
|
|
3775
|
+
}).strict();
|
|
3776
|
+
var generatedMediaCompositionIntentSchema = z19.enum([
|
|
3777
|
+
"none",
|
|
3778
|
+
"supporting",
|
|
3779
|
+
"dominant"
|
|
3780
|
+
]);
|
|
3781
|
+
var generatedDecorativeCompositionIntentSchema = z19.enum([
|
|
3782
|
+
"none",
|
|
3783
|
+
"supporting"
|
|
3784
|
+
]);
|
|
3785
|
+
var generatedHeroLegibilityStrategySchema = z19.enum([
|
|
3786
|
+
"none",
|
|
3787
|
+
"scrim-gradient"
|
|
3788
|
+
]);
|
|
3789
|
+
var generatedBlockMediaIntentSchema = z19.object({
|
|
3790
|
+
media: generatedMediaCompositionIntentSchema,
|
|
3791
|
+
decorative: generatedDecorativeCompositionIntentSchema,
|
|
3792
|
+
heroLegibility: generatedChoiceSchema(generatedHeroLegibilityStrategySchema)
|
|
3793
|
+
}).strict();
|
|
3794
|
+
var generatedBoundaryIntentSchema = z19.object({
|
|
3795
|
+
transitionAfter: generatedChoiceSchema(
|
|
3796
|
+
z19.enum(generatedDesignOptionCatalog.transitions)
|
|
3797
|
+
)
|
|
3798
|
+
}).strict();
|
|
3799
|
+
var generatedPageDesignBlockIntentSchema = z19.object({
|
|
3800
|
+
blockId: z19.string().min(1),
|
|
3801
|
+
blockKind: z19.string().min(1),
|
|
3802
|
+
purpose: z19.string().min(1),
|
|
3803
|
+
design: generatedBlockDesignIntentSchema,
|
|
3804
|
+
mediaIntent: generatedBlockMediaIntentSchema,
|
|
3805
|
+
boundaryIntent: generatedBoundaryIntentSchema
|
|
3806
|
+
}).strict();
|
|
3807
|
+
var generatedPageDesignIntentSchema = z19.object({
|
|
3808
|
+
siteStyleId: generatedSiteStyleIdSchema,
|
|
3809
|
+
blocks: z19.array(generatedPageDesignBlockIntentSchema)
|
|
3810
|
+
}).strict();
|
|
3811
|
+
|
|
3812
|
+
// ../theme-core/src/site-styles/pageDesignIntent.ts
|
|
3813
|
+
import { z as z20 } from "zod";
|
|
3814
|
+
var pageDesignIntentSchemaVersion = 1;
|
|
3815
|
+
var pageDesignUserPinnedAppearanceChoiceSchema = z20.object({
|
|
3816
|
+
kind: z20.literal("user-pinned"),
|
|
3817
|
+
value: z20.string().min(1).transform(asAppearancePresetId)
|
|
3818
|
+
}).strict();
|
|
3819
|
+
var pageDesignUserPinnedBoundaryChoiceSchema = z20.object({
|
|
3820
|
+
kind: z20.literal("user-pinned"),
|
|
3821
|
+
value: z20.string().min(1).transform(asBoundaryOptionId)
|
|
3822
|
+
}).strict();
|
|
3823
|
+
var pageDesignBlockLookPinSchema = z20.object({
|
|
3824
|
+
blockId: z20.string().min(1).transform(asDesignBlockId),
|
|
3825
|
+
blockKind: z20.string().min(1),
|
|
3826
|
+
choice: pageDesignUserPinnedAppearanceChoiceSchema
|
|
3827
|
+
}).strict();
|
|
3828
|
+
var pageDesignBoundaryPinSchema = z20.object({
|
|
3829
|
+
boundaryId: z20.string().min(1).transform(asDesignBoundaryId),
|
|
3830
|
+
previousBlockId: z20.string().min(1).transform(asDesignBlockId),
|
|
3831
|
+
nextBlockId: z20.string().min(1).transform(asDesignBlockId),
|
|
3832
|
+
choice: pageDesignUserPinnedBoundaryChoiceSchema
|
|
3833
|
+
}).strict().superRefine((pin, ctx) => {
|
|
3834
|
+
const expectedBoundaryId = makeBoundaryId(
|
|
3835
|
+
pin.previousBlockId,
|
|
3836
|
+
pin.nextBlockId
|
|
3837
|
+
);
|
|
3838
|
+
if (pin.boundaryId !== expectedBoundaryId) {
|
|
3839
|
+
ctx.addIssue({
|
|
3840
|
+
code: z20.ZodIssueCode.custom,
|
|
3841
|
+
path: ["boundaryId"],
|
|
3842
|
+
message: `Boundary id must match previousBlockId and nextBlockId. Expected ${expectedBoundaryId}.`
|
|
3843
|
+
});
|
|
3844
|
+
}
|
|
3845
|
+
});
|
|
3846
|
+
var pageDesignIntentV1Schema = z20.object({
|
|
3847
|
+
schemaVersion: z20.literal(pageDesignIntentSchemaVersion),
|
|
3848
|
+
siteStyleId: z20.string().min(1).transform(asSiteStyleId),
|
|
3849
|
+
pageFlowPresetId: z20.string().min(1).transform(asPageFlowPresetId),
|
|
3850
|
+
blockLookPins: z20.array(pageDesignBlockLookPinSchema),
|
|
3851
|
+
boundaryPins: z20.array(pageDesignBoundaryPinSchema)
|
|
3852
|
+
}).strict().superRefine((intent, ctx) => {
|
|
3853
|
+
addDuplicateStringIssues(ctx, {
|
|
3854
|
+
values: intent.blockLookPins.map((pin) => pin.blockId),
|
|
3855
|
+
path: ["blockLookPins"],
|
|
3856
|
+
label: "block Look pin"
|
|
3857
|
+
});
|
|
3858
|
+
addDuplicateStringIssues(ctx, {
|
|
3859
|
+
values: intent.boundaryPins.map(
|
|
3860
|
+
(pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)
|
|
3861
|
+
),
|
|
3862
|
+
path: ["boundaryPins"],
|
|
3863
|
+
label: "boundary pin"
|
|
3864
|
+
});
|
|
3865
|
+
});
|
|
3866
|
+
function addDuplicateStringIssues(ctx, input) {
|
|
3867
|
+
const seen = /* @__PURE__ */ new Set();
|
|
3868
|
+
const duplicates = /* @__PURE__ */ new Set();
|
|
3869
|
+
for (const value of input.values) {
|
|
3870
|
+
if (seen.has(value)) {
|
|
3871
|
+
duplicates.add(value);
|
|
3872
|
+
}
|
|
3873
|
+
seen.add(value);
|
|
3874
|
+
}
|
|
3875
|
+
for (const duplicate of duplicates) {
|
|
3876
|
+
ctx.addIssue({
|
|
3877
|
+
code: z20.ZodIssueCode.custom,
|
|
3878
|
+
path: [...input.path],
|
|
3879
|
+
message: `Duplicate ${input.label}: ${duplicate}.`
|
|
3880
|
+
});
|
|
3881
|
+
}
|
|
3882
|
+
}
|
|
3883
|
+
function boundaryKey(previousBlockId, nextBlockId) {
|
|
3884
|
+
return makeBoundaryId(previousBlockId, nextBlockId);
|
|
3885
|
+
}
|
|
3828
3886
|
|
|
3829
3887
|
// ../theme-core/src/site-styles/runtimeCompiler.ts
|
|
3830
3888
|
function defineDesignRuntimeRules(rules) {
|
|
@@ -5091,7 +5149,8 @@ function ctaButton(opts) {
|
|
|
5091
5149
|
},
|
|
5092
5150
|
size: {
|
|
5093
5151
|
$bind: {
|
|
5094
|
-
from: sizePath
|
|
5152
|
+
from: sizePath,
|
|
5153
|
+
fallback: opts?.sizeFallback ?? "md"
|
|
5095
5154
|
}
|
|
5096
5155
|
},
|
|
5097
5156
|
...opts?.className ? { className: opts.className } : {},
|
|
@@ -9450,14 +9509,16 @@ var headerCta = ctaButton({
|
|
|
9450
9509
|
whenPath: "menu.ctaItem.label",
|
|
9451
9510
|
variantPath: "menu.ctaItem.variant",
|
|
9452
9511
|
linkPath: "menu.ctaItem.link",
|
|
9453
|
-
|
|
9512
|
+
sizeFallback: "sm",
|
|
9513
|
+
className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
|
|
9454
9514
|
});
|
|
9455
9515
|
var mobileCta = ctaButton({
|
|
9456
9516
|
basePath: "menu.ctaItem",
|
|
9457
9517
|
whenPath: "menu.ctaItem.label",
|
|
9458
9518
|
variantPath: "menu.ctaItem.variant",
|
|
9459
9519
|
linkPath: "menu.ctaItem.link",
|
|
9460
|
-
|
|
9520
|
+
sizeFallback: "md",
|
|
9521
|
+
className: "nav-mobile-cta rb-w-full"
|
|
9461
9522
|
});
|
|
9462
9523
|
var mobileToggleIcon = stack({ gap: "xs", className: "nav-mobile-icon" }, [
|
|
9463
9524
|
{
|