@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
package/dist/server/server.mjs
CHANGED
|
@@ -6116,7 +6116,7 @@ var SimpleCache = class {
|
|
|
6116
6116
|
};
|
|
6117
6117
|
|
|
6118
6118
|
// src/version.ts
|
|
6119
|
-
var SDK_VERSION = "0.60.
|
|
6119
|
+
var SDK_VERSION = "0.60.6";
|
|
6120
6120
|
|
|
6121
6121
|
// src/client/error.ts
|
|
6122
6122
|
var RiverbankApiError = class _RiverbankApiError extends Error {
|
|
@@ -6910,19 +6910,20 @@ function createRiverbankClient(config) {
|
|
|
6910
6910
|
}
|
|
6911
6911
|
return {
|
|
6912
6912
|
async getSite(params) {
|
|
6913
|
-
const { slug, domain, id, signal, force } = params;
|
|
6913
|
+
const { slug, domain, id, signal, force, currentPath } = params;
|
|
6914
6914
|
if (!slug && !domain && !id) {
|
|
6915
6915
|
throw new Error(
|
|
6916
6916
|
`getSite() requires at least one identifier: slug, domain, or id. Received: ${JSON.stringify(params)}`
|
|
6917
6917
|
);
|
|
6918
6918
|
}
|
|
6919
|
-
const cacheKey = `site:${slug || domain || id}`;
|
|
6919
|
+
const cacheKey = `site:${slug || domain || id}:${currentPath ?? ""}`;
|
|
6920
6920
|
const siteId = id || slug || domain;
|
|
6921
6921
|
return resilientFetch(cacheKey, async (sig) => {
|
|
6922
6922
|
const apiParams = {};
|
|
6923
6923
|
if (params.slug) apiParams.slug = params.slug;
|
|
6924
6924
|
if (params.domain) apiParams.domain = params.domain;
|
|
6925
6925
|
if (params.id) apiParams.id = params.id;
|
|
6926
|
+
if (currentPath) apiParams.currentPath = currentPath;
|
|
6926
6927
|
if (force) apiParams.force = "true";
|
|
6927
6928
|
return await apiClient({
|
|
6928
6929
|
endpoint: "getSite",
|
|
@@ -9407,861 +9408,482 @@ function assertUniqueLayoutProfileKeys(profiles) {
|
|
|
9407
9408
|
}
|
|
9408
9409
|
}
|
|
9409
9410
|
|
|
9410
|
-
// ../theme-core/src/
|
|
9411
|
+
// ../theme-core/src/buttons/personalities/types.ts
|
|
9412
|
+
import { z as z11 } from "zod";
|
|
9413
|
+
|
|
9414
|
+
// ../theme-core/src/buttons/types.ts
|
|
9411
9415
|
import { z as z9 } from "zod";
|
|
9416
|
+
var VARIANT_ROLES = [
|
|
9417
|
+
"primary",
|
|
9418
|
+
"secondary",
|
|
9419
|
+
"outline",
|
|
9420
|
+
"ghost",
|
|
9421
|
+
"link",
|
|
9422
|
+
"tertiary",
|
|
9423
|
+
"accent"
|
|
9424
|
+
];
|
|
9425
|
+
var cornerStyleSchema = z9.enum(["square", "rounded", "pill"]);
|
|
9426
|
+
var shadowSizeSchema = z9.enum(["none", "low", "medium", "high"]);
|
|
9427
|
+
var textTransformSchema = z9.enum(["none", "uppercase", "lowercase", "capitalize"]);
|
|
9428
|
+
var fontWeightSchema = z9.union([z9.literal(500), z9.literal(600), z9.literal(700)]);
|
|
9429
|
+
var buttonTypographySchema = z9.enum(["body", "heading"]);
|
|
9430
|
+
var letterSpacingSchema = z9.enum(["tight", "normal", "loose"]);
|
|
9431
|
+
var hoverTransformSchema = z9.enum(["none", "lift", "scale", "press"]);
|
|
9432
|
+
var hoverColorSchema = z9.enum(["none", "brighten", "darken", "saturate", "token"]);
|
|
9433
|
+
var buttonPaddingPresetSchema = z9.enum(["compact", "default", "spacious"]);
|
|
9434
|
+
var gradientStyleSchema = z9.enum(["linear", "radial", "conic"]);
|
|
9435
|
+
var gradientSharpnessSchema = z9.enum(["smooth", "medium", "hard"]);
|
|
9436
|
+
var prioritySchema = z9.union([z9.literal(1), z9.literal(2), z9.literal(3)]);
|
|
9437
|
+
var variantRoleSchema = z9.enum(VARIANT_ROLES);
|
|
9438
|
+
var buttonSizeNameSchema = z9.enum(["sm", "md", "lg", "xl"]);
|
|
9439
|
+
var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
|
|
9440
|
+
var paddingShorthandSchema = z9.string().refine(
|
|
9441
|
+
(value) => {
|
|
9442
|
+
const parts = value.split(/\s+/).filter(Boolean);
|
|
9443
|
+
return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
|
|
9444
|
+
},
|
|
9445
|
+
{
|
|
9446
|
+
message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
|
|
9447
|
+
}
|
|
9448
|
+
);
|
|
9449
|
+
var buttonSizeConfigSchema = z9.object({
|
|
9450
|
+
padding: paddingShorthandSchema,
|
|
9451
|
+
fontSize: z9.string().optional()
|
|
9452
|
+
});
|
|
9453
|
+
var buttonSizesSchema = z9.object({
|
|
9454
|
+
sm: buttonSizeConfigSchema,
|
|
9455
|
+
md: buttonSizeConfigSchema,
|
|
9456
|
+
lg: buttonSizeConfigSchema,
|
|
9457
|
+
xl: buttonSizeConfigSchema.optional()
|
|
9458
|
+
}).transform(({ sm, md, lg, xl }) => ({
|
|
9459
|
+
sm,
|
|
9460
|
+
md,
|
|
9461
|
+
lg,
|
|
9462
|
+
xl: xl ?? lg
|
|
9463
|
+
}));
|
|
9464
|
+
var buttonGlobalSettingsSchema = z9.object({
|
|
9465
|
+
cornerStyle: cornerStyleSchema,
|
|
9466
|
+
cornerRadius: z9.number().min(0).max(24).optional(),
|
|
9467
|
+
shadow: shadowSizeSchema,
|
|
9468
|
+
textTransform: textTransformSchema,
|
|
9469
|
+
fontWeight: fontWeightSchema,
|
|
9470
|
+
/**
|
|
9471
|
+
* @deprecated Set per-variant via `variant.border.widthClass` instead.
|
|
9472
|
+
* Schema field is preserved so existing presets parse; the value is unread
|
|
9473
|
+
* by the current generator and will be removed once the legacy
|
|
9474
|
+
* `primitives/content/components/Button.tsx` slot exports are deleted.
|
|
9475
|
+
*/
|
|
9476
|
+
borderWidth: z9.union([z9.literal(1), z9.literal(2), z9.literal(3)]),
|
|
9477
|
+
// === Family-level typography ===
|
|
9478
|
+
// Typography source (body or heading) — selects which theme typography pool to inherit
|
|
9479
|
+
typography: buttonTypographySchema.optional(),
|
|
9480
|
+
// Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
|
|
9481
|
+
// Sized variants get this as default; fixed variants inherit unless they override.
|
|
9482
|
+
// Size class CSS may still override at run time for sized variants.
|
|
9483
|
+
fontSize: z9.string().optional(),
|
|
9484
|
+
// Letter spacing applied to all variants
|
|
9485
|
+
letterSpacing: letterSpacingSchema.optional(),
|
|
9486
|
+
// Italic style
|
|
9487
|
+
italic: z9.boolean().optional(),
|
|
9488
|
+
// Padding preset (applies to sized variants without a sizes config)
|
|
9489
|
+
paddingPreset: buttonPaddingPresetSchema.optional(),
|
|
9490
|
+
hoverTransform: hoverTransformSchema,
|
|
9491
|
+
hoverColor: hoverColorSchema,
|
|
9492
|
+
// When hoverColor is 'token', this specifies which token to use
|
|
9493
|
+
hoverColorToken: z9.string().optional(),
|
|
9494
|
+
// Gradient settings (if any variant uses gradients)
|
|
9495
|
+
gradientStyle: gradientStyleSchema.optional(),
|
|
9496
|
+
gradientAngle: z9.number().min(0).max(360).optional(),
|
|
9497
|
+
gradientSharpness: gradientSharpnessSchema.optional()
|
|
9498
|
+
});
|
|
9499
|
+
var gradientDirectionSchema = z9.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
9500
|
+
var buttonBackgroundSchema = z9.discriminatedUnion("type", [
|
|
9501
|
+
z9.object({ type: z9.literal("solid"), colorToken: z9.string() }),
|
|
9502
|
+
z9.object({
|
|
9503
|
+
type: z9.literal("gradient"),
|
|
9504
|
+
stops: z9.array(z9.string()).min(2),
|
|
9505
|
+
direction: gradientDirectionSchema
|
|
9506
|
+
}),
|
|
9507
|
+
z9.object({ type: z9.literal("transparent") })
|
|
9508
|
+
]);
|
|
9509
|
+
var effectApplicationSchema = z9.object({
|
|
9510
|
+
effectId: z9.string(),
|
|
9511
|
+
options: z9.record(z9.string(), z9.any()).optional()
|
|
9512
|
+
});
|
|
9513
|
+
var buttonBorderSchema = z9.object({
|
|
9514
|
+
widthClass: z9.string(),
|
|
9515
|
+
colorToken: z9.string()
|
|
9516
|
+
});
|
|
9517
|
+
var variantShadowSchema = z9.object({
|
|
9518
|
+
elevation: z9.enum(["none", "low", "medium", "high"]),
|
|
9519
|
+
softness: z9.enum(["crisp", "soft", "hard"]).nullable(),
|
|
9520
|
+
position: z9.enum(["bottom", "bottom-right"]).default("bottom")
|
|
9521
|
+
});
|
|
9522
|
+
var variantEffectsSchema = z9.object({
|
|
9523
|
+
base: z9.array(effectApplicationSchema).optional(),
|
|
9524
|
+
hover: z9.array(effectApplicationSchema).optional(),
|
|
9525
|
+
active: z9.array(effectApplicationSchema).optional(),
|
|
9526
|
+
focus: z9.array(effectApplicationSchema).optional()
|
|
9527
|
+
});
|
|
9528
|
+
var variantSizeOverridesSchema = z9.object({
|
|
9529
|
+
sm: buttonSizeConfigSchema.optional(),
|
|
9530
|
+
md: buttonSizeConfigSchema.optional(),
|
|
9531
|
+
lg: buttonSizeConfigSchema.optional(),
|
|
9532
|
+
xl: buttonSizeConfigSchema.optional()
|
|
9533
|
+
});
|
|
9534
|
+
var buttonVariantSchema = z9.object({
|
|
9535
|
+
id: z9.string(),
|
|
9536
|
+
name: z9.string().min(1).max(20),
|
|
9537
|
+
enabled: z9.boolean(),
|
|
9538
|
+
priority: prioritySchema,
|
|
9539
|
+
// Base appearance (token-based)
|
|
9540
|
+
background: buttonBackgroundSchema,
|
|
9541
|
+
textColorToken: z9.string(),
|
|
9542
|
+
/** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
|
|
9543
|
+
borderRadius: z9.string().optional(),
|
|
9544
|
+
// Optional shadow override (uses theme.shadow if not specified)
|
|
9545
|
+
shadow: variantShadowSchema.optional(),
|
|
9546
|
+
// Border (optional)
|
|
9547
|
+
border: buttonBorderSchema.optional(),
|
|
9548
|
+
// Hover background token (per-variant override, takes precedence over global hoverColorToken)
|
|
9549
|
+
hoverBackgroundToken: z9.string().optional(),
|
|
9550
|
+
// Effect composition
|
|
9551
|
+
effects: variantEffectsSchema.optional(),
|
|
9552
|
+
// Per-variant size overrides — see VariantSizeOverrides
|
|
9553
|
+
sizes: variantSizeOverridesSchema.optional()
|
|
9554
|
+
});
|
|
9555
|
+
var buttonSystemSchema = z9.object({
|
|
9556
|
+
global: buttonGlobalSettingsSchema,
|
|
9557
|
+
variants: z9.array(buttonVariantSchema).min(1).max(6),
|
|
9558
|
+
sizes: buttonSizesSchema.optional()
|
|
9559
|
+
});
|
|
9560
|
+
|
|
9561
|
+
// ../theme-core/src/site-styles/styleTags.ts
|
|
9562
|
+
import { z as z10 } from "zod";
|
|
9412
9563
|
var STYLE_AXIS_VALUES = {
|
|
9413
9564
|
tone: ["minimal", "classic", "bold"],
|
|
9414
9565
|
energy: ["calm", "vibrant"],
|
|
9415
9566
|
motion: ["subtle", "standard", "expressive"],
|
|
9416
9567
|
era: ["editorial", "modern", "organic", "technical", "retro"]
|
|
9417
9568
|
};
|
|
9418
|
-
var styleTagsSchema =
|
|
9419
|
-
tone:
|
|
9420
|
-
energy:
|
|
9421
|
-
motion:
|
|
9422
|
-
era:
|
|
9569
|
+
var styleTagsSchema = z10.object({
|
|
9570
|
+
tone: z10.enum(STYLE_AXIS_VALUES.tone).optional(),
|
|
9571
|
+
energy: z10.enum(STYLE_AXIS_VALUES.energy).optional(),
|
|
9572
|
+
motion: z10.enum(STYLE_AXIS_VALUES.motion).optional(),
|
|
9573
|
+
era: z10.enum(STYLE_AXIS_VALUES.era).optional()
|
|
9423
9574
|
});
|
|
9424
9575
|
|
|
9425
|
-
// ../theme-core/src/
|
|
9426
|
-
|
|
9427
|
-
|
|
9428
|
-
|
|
9429
|
-
panelFrame("raised"),
|
|
9430
|
-
flushPanelFrame({ bleed: "start" })
|
|
9431
|
-
];
|
|
9432
|
-
var userContentFrames = [
|
|
9433
|
-
...generatedContentFrames,
|
|
9434
|
-
panelFrame("editorial"),
|
|
9435
|
-
flushPanelFrame({ bleed: "end" }),
|
|
9436
|
-
flushPanelFrame({ bleed: "both" })
|
|
9437
|
-
];
|
|
9438
|
-
var generatedDesignOptionCatalog = {
|
|
9439
|
-
source: "generated",
|
|
9440
|
-
sectionSurfaces: ["base", "muted-band", "accent-band", "hero-image"],
|
|
9441
|
-
contentFrames: generatedContentFrames,
|
|
9442
|
-
itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
|
|
9443
|
-
transitions: ["none", "soft-fade-short", "soft-fade-long"],
|
|
9444
|
-
emphases: ["low", "medium", "high"],
|
|
9445
|
-
detachedCustom: false
|
|
9446
|
-
};
|
|
9447
|
-
var userDesignOptionCatalog = {
|
|
9448
|
-
source: "user",
|
|
9449
|
-
sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
9450
|
-
contentFrames: userContentFrames,
|
|
9451
|
-
itemSurfaces: [
|
|
9452
|
-
...generatedDesignOptionCatalog.itemSurfaces,
|
|
9453
|
-
"inset",
|
|
9454
|
-
"editorial"
|
|
9455
|
-
],
|
|
9456
|
-
transitions: [
|
|
9457
|
-
...generatedDesignOptionCatalog.transitions,
|
|
9458
|
-
"wave-edge",
|
|
9459
|
-
"angle-edge"
|
|
9460
|
-
],
|
|
9461
|
-
emphases: generatedDesignOptionCatalog.emphases,
|
|
9462
|
-
detachedCustom: false
|
|
9463
|
-
};
|
|
9464
|
-
var advancedDesignOptionCatalog = {
|
|
9465
|
-
source: "advanced",
|
|
9466
|
-
sectionSurfaces: userDesignOptionCatalog.sectionSurfaces,
|
|
9467
|
-
contentFrames: userDesignOptionCatalog.contentFrames,
|
|
9468
|
-
itemSurfaces: userDesignOptionCatalog.itemSurfaces,
|
|
9469
|
-
transitions: userDesignOptionCatalog.transitions,
|
|
9470
|
-
emphases: userDesignOptionCatalog.emphases,
|
|
9471
|
-
detachedCustom: true
|
|
9472
|
-
};
|
|
9473
|
-
|
|
9474
|
-
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
9475
|
-
var curatedSiteStyleIdValues = [
|
|
9476
|
-
"site-style:calm-studio",
|
|
9477
|
-
"site-style:clear-professional",
|
|
9478
|
-
"site-style:warm-editorial",
|
|
9479
|
-
"site-style:bright-community",
|
|
9480
|
-
"site-style:quiet-luxury",
|
|
9481
|
-
"site-style:practical-services",
|
|
9482
|
-
"site-style:modern-wellness",
|
|
9483
|
-
"site-style:bold-launch"
|
|
9484
|
-
];
|
|
9485
|
-
var quietBudget = {
|
|
9486
|
-
accentDensity: "low",
|
|
9487
|
-
panelDensity: "medium",
|
|
9488
|
-
transitionMix: "quiet",
|
|
9489
|
-
primaryCtaLimit: 2,
|
|
9490
|
-
mediaDensity: "medium",
|
|
9491
|
-
decorativeRepetition: "low"
|
|
9492
|
-
};
|
|
9493
|
-
var balancedBudget = {
|
|
9494
|
-
accentDensity: "medium",
|
|
9495
|
-
panelDensity: "medium",
|
|
9496
|
-
transitionMix: "balanced",
|
|
9497
|
-
primaryCtaLimit: 3,
|
|
9498
|
-
mediaDensity: "medium",
|
|
9499
|
-
decorativeRepetition: "medium"
|
|
9500
|
-
};
|
|
9501
|
-
var expressiveBudget = {
|
|
9502
|
-
accentDensity: "high",
|
|
9503
|
-
panelDensity: "high",
|
|
9504
|
-
transitionMix: "expressive",
|
|
9505
|
-
primaryCtaLimit: 3,
|
|
9506
|
-
mediaDensity: "high",
|
|
9507
|
-
decorativeRepetition: "medium"
|
|
9508
|
-
};
|
|
9509
|
-
function uniqueContentFrameKinds() {
|
|
9510
|
-
const kinds = [...new Set(
|
|
9511
|
-
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
9512
|
-
)];
|
|
9513
|
-
const firstKind = kinds[0];
|
|
9514
|
-
if (!firstKind) {
|
|
9515
|
-
throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
|
|
9576
|
+
// ../theme-core/src/buttons/personalities/types.ts
|
|
9577
|
+
function asButtonPersonalityId(value) {
|
|
9578
|
+
if (value.length === 0) {
|
|
9579
|
+
throw new Error("ButtonPersonalityId must be a non-empty string");
|
|
9516
9580
|
}
|
|
9517
|
-
return
|
|
9581
|
+
return value;
|
|
9518
9582
|
}
|
|
9519
|
-
var
|
|
9520
|
-
|
|
9583
|
+
var buttonPersonalityIdSchema = z11.string().min(1).transform((value) => asButtonPersonalityId(value));
|
|
9584
|
+
var buttonPersonalitySchema = z11.object({
|
|
9585
|
+
id: buttonPersonalityIdSchema,
|
|
9586
|
+
name: z11.string().min(1),
|
|
9587
|
+
description: z11.string().min(1),
|
|
9588
|
+
tags: styleTagsSchema,
|
|
9589
|
+
buttonSystem: buttonSystemSchema
|
|
9590
|
+
});
|
|
9591
|
+
function defineButtonPersonality(input) {
|
|
9521
9592
|
return {
|
|
9522
|
-
id:
|
|
9593
|
+
id: asButtonPersonalityId(input.id),
|
|
9523
9594
|
name: input.name,
|
|
9524
9595
|
description: input.description,
|
|
9525
|
-
|
|
9526
|
-
|
|
9527
|
-
template: {
|
|
9528
|
-
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
9529
|
-
name: input.name,
|
|
9530
|
-
version: 1,
|
|
9531
|
-
tokenRecipes: input.tokenRecipes,
|
|
9532
|
-
compositionBudget: input.compositionBudget,
|
|
9533
|
-
supportedSectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
9534
|
-
supportedContentFrames: generatedContentFrameKinds,
|
|
9535
|
-
supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
9536
|
-
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
9537
|
-
},
|
|
9538
|
-
// The library IDs are already branded at construction (`asButtonPersonalityId`
|
|
9539
|
-
// / `asPaletteVariantId`); the closed-union input type guarantees only
|
|
9540
|
-
// shipped IDs reach this branch.
|
|
9541
|
-
defaultButtonPersonalityId: input.defaultButtonPersonalityId,
|
|
9542
|
-
acceptedButtons: input.acceptedButtons,
|
|
9543
|
-
defaultPaletteVariantId: input.defaultPaletteVariantId,
|
|
9544
|
-
acceptedPalettes: input.acceptedPalettes
|
|
9596
|
+
tags: input.tags,
|
|
9597
|
+
buttonSystem: input.buttonSystem
|
|
9545
9598
|
};
|
|
9546
9599
|
}
|
|
9547
|
-
|
|
9548
|
-
|
|
9549
|
-
|
|
9550
|
-
|
|
9551
|
-
|
|
9552
|
-
|
|
9553
|
-
|
|
9554
|
-
|
|
9555
|
-
|
|
9556
|
-
|
|
9557
|
-
shadow: "
|
|
9558
|
-
|
|
9559
|
-
|
|
9560
|
-
|
|
9561
|
-
|
|
9562
|
-
|
|
9563
|
-
defaultButtonPersonalityId: "soft-pill",
|
|
9564
|
-
acceptedButtons: { tone: ["minimal", "classic"], era: ["organic", "editorial"] },
|
|
9565
|
-
defaultPaletteVariantId: "soft-natural-sage",
|
|
9566
|
-
acceptedPalettes: { tone: ["minimal", "classic"], era: ["organic"] }
|
|
9567
|
-
}),
|
|
9568
|
-
defineCuratedSiteStyle({
|
|
9569
|
-
id: "site-style:clear-professional",
|
|
9570
|
-
name: "Clear Professional",
|
|
9571
|
-
description: "Crisp, trustworthy, and direct for local services and consultancies.",
|
|
9572
|
-
generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
|
|
9573
|
-
tokenRecipes: {
|
|
9574
|
-
palette: "brand-led",
|
|
9575
|
-
contrast: "strong",
|
|
9576
|
-
radius: "soft",
|
|
9577
|
-
shadow: "subtle",
|
|
9578
|
-
typography: "clean-sans",
|
|
9579
|
-
spacing: "regular",
|
|
9580
|
-
motion: "subtle"
|
|
9600
|
+
|
|
9601
|
+
// ../theme-core/src/buttons/personalities/brushed-wash.ts
|
|
9602
|
+
var brushedWash = defineButtonPersonality({
|
|
9603
|
+
id: "brushed-wash",
|
|
9604
|
+
name: "Brushed Wash",
|
|
9605
|
+
description: "Watercolour-gradient buttons with soft shadows and generous padding.",
|
|
9606
|
+
tags: { tone: "classic", energy: "vibrant", motion: "standard", era: "organic" },
|
|
9607
|
+
buttonSystem: {
|
|
9608
|
+
global: {
|
|
9609
|
+
cornerStyle: "rounded",
|
|
9610
|
+
shadow: "low",
|
|
9611
|
+
textTransform: "none",
|
|
9612
|
+
fontWeight: 500,
|
|
9613
|
+
borderWidth: 1,
|
|
9614
|
+
hoverTransform: "none",
|
|
9615
|
+
hoverColor: "none"
|
|
9581
9616
|
},
|
|
9582
|
-
|
|
9583
|
-
|
|
9584
|
-
|
|
9585
|
-
|
|
9586
|
-
|
|
9587
|
-
}),
|
|
9588
|
-
defineCuratedSiteStyle({
|
|
9589
|
-
id: "site-style:warm-editorial",
|
|
9590
|
-
name: "Warm Editorial",
|
|
9591
|
-
description: "Story-led and textured for educators, makers, venues, and retreats.",
|
|
9592
|
-
generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
|
|
9593
|
-
tokenRecipes: {
|
|
9594
|
-
palette: "warm-neutral",
|
|
9595
|
-
contrast: "standard",
|
|
9596
|
-
radius: "square",
|
|
9597
|
-
shadow: "none",
|
|
9598
|
-
typography: "serif-editorial",
|
|
9599
|
-
spacing: "airy",
|
|
9600
|
-
motion: "subtle"
|
|
9617
|
+
sizes: {
|
|
9618
|
+
sm: { padding: "0.75rem 2rem", fontSize: "text-sm" },
|
|
9619
|
+
md: { padding: "1rem 2.5rem" },
|
|
9620
|
+
lg: { padding: "1.25rem 3rem", fontSize: "text-lg" },
|
|
9621
|
+
xl: { padding: "1.625rem 3.75rem", fontSize: "text-xl" }
|
|
9601
9622
|
},
|
|
9602
|
-
|
|
9603
|
-
|
|
9604
|
-
|
|
9605
|
-
|
|
9606
|
-
|
|
9607
|
-
|
|
9608
|
-
|
|
9609
|
-
|
|
9610
|
-
|
|
9611
|
-
|
|
9612
|
-
|
|
9613
|
-
|
|
9614
|
-
|
|
9615
|
-
|
|
9616
|
-
|
|
9617
|
-
|
|
9618
|
-
|
|
9619
|
-
|
|
9620
|
-
|
|
9623
|
+
variants: [
|
|
9624
|
+
{
|
|
9625
|
+
id: "primary",
|
|
9626
|
+
name: "Primary",
|
|
9627
|
+
enabled: true,
|
|
9628
|
+
priority: 1,
|
|
9629
|
+
background: {
|
|
9630
|
+
type: "gradient",
|
|
9631
|
+
stops: ["primary", "accent"],
|
|
9632
|
+
direction: "to-r"
|
|
9633
|
+
},
|
|
9634
|
+
textColorToken: "primaryForeground",
|
|
9635
|
+
borderRadius: "rounded-lg",
|
|
9636
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
9637
|
+
effects: {
|
|
9638
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
9639
|
+
}
|
|
9640
|
+
},
|
|
9641
|
+
{
|
|
9642
|
+
id: "secondary",
|
|
9643
|
+
name: "Secondary",
|
|
9644
|
+
enabled: true,
|
|
9645
|
+
priority: 2,
|
|
9646
|
+
background: {
|
|
9647
|
+
type: "gradient",
|
|
9648
|
+
stops: ["secondary", "accent"],
|
|
9649
|
+
direction: "to-br"
|
|
9650
|
+
},
|
|
9651
|
+
textColorToken: "primaryForeground",
|
|
9652
|
+
borderRadius: "rounded-lg",
|
|
9653
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
9654
|
+
effects: {
|
|
9655
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
9656
|
+
}
|
|
9657
|
+
},
|
|
9658
|
+
{
|
|
9659
|
+
id: "outline",
|
|
9660
|
+
name: "Outline",
|
|
9661
|
+
enabled: true,
|
|
9662
|
+
priority: 3,
|
|
9663
|
+
background: { type: "transparent" },
|
|
9664
|
+
textColorToken: "primary",
|
|
9665
|
+
borderRadius: "rounded-lg",
|
|
9666
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
9667
|
+
effects: {
|
|
9668
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9669
|
+
}
|
|
9670
|
+
},
|
|
9671
|
+
{
|
|
9672
|
+
id: "ghost",
|
|
9673
|
+
name: "Ghost",
|
|
9674
|
+
enabled: true,
|
|
9675
|
+
priority: 3,
|
|
9676
|
+
background: { type: "transparent" },
|
|
9677
|
+
textColorToken: "text",
|
|
9678
|
+
borderRadius: "rounded-lg",
|
|
9679
|
+
effects: {
|
|
9680
|
+
hover: [
|
|
9681
|
+
{ effectId: "background-on-hover", options: { colorToken: "surface" } }
|
|
9682
|
+
]
|
|
9683
|
+
}
|
|
9684
|
+
}
|
|
9685
|
+
]
|
|
9686
|
+
}
|
|
9687
|
+
});
|
|
9688
|
+
|
|
9689
|
+
// ../theme-core/src/buttons/personalities/confident-chip.ts
|
|
9690
|
+
var confidentChip = defineButtonPersonality({
|
|
9691
|
+
id: "confident-chip",
|
|
9692
|
+
name: "Confident Chip",
|
|
9693
|
+
description: "Mid-radius solid buttons with a crisp hover.",
|
|
9694
|
+
tags: { tone: "classic", energy: "calm", motion: "standard", era: "modern" },
|
|
9695
|
+
buttonSystem: {
|
|
9696
|
+
global: {
|
|
9697
|
+
cornerStyle: "rounded",
|
|
9698
|
+
shadow: "medium",
|
|
9699
|
+
textTransform: "none",
|
|
9700
|
+
fontWeight: 600,
|
|
9701
|
+
borderWidth: 1,
|
|
9702
|
+
hoverTransform: "none",
|
|
9703
|
+
hoverColor: "none"
|
|
9621
9704
|
},
|
|
9622
|
-
|
|
9623
|
-
|
|
9624
|
-
|
|
9625
|
-
|
|
9626
|
-
|
|
9627
|
-
|
|
9628
|
-
|
|
9629
|
-
|
|
9630
|
-
|
|
9631
|
-
|
|
9632
|
-
|
|
9633
|
-
|
|
9634
|
-
|
|
9635
|
-
|
|
9636
|
-
|
|
9637
|
-
|
|
9638
|
-
|
|
9639
|
-
|
|
9640
|
-
|
|
9641
|
-
|
|
9642
|
-
|
|
9643
|
-
|
|
9705
|
+
variants: [
|
|
9706
|
+
{
|
|
9707
|
+
id: "primary",
|
|
9708
|
+
name: "Primary",
|
|
9709
|
+
enabled: true,
|
|
9710
|
+
priority: 1,
|
|
9711
|
+
background: { type: "solid", colorToken: "primary" },
|
|
9712
|
+
textColorToken: "primaryForeground",
|
|
9713
|
+
borderRadius: "rounded-md",
|
|
9714
|
+
shadow: { elevation: "medium", softness: "soft", position: "bottom" },
|
|
9715
|
+
effects: {
|
|
9716
|
+
hover: [{ effectId: "darken-background", options: { amount: 60 } }],
|
|
9717
|
+
active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
|
|
9718
|
+
}
|
|
9719
|
+
},
|
|
9720
|
+
{
|
|
9721
|
+
id: "secondary",
|
|
9722
|
+
name: "Secondary",
|
|
9723
|
+
enabled: true,
|
|
9724
|
+
priority: 2,
|
|
9725
|
+
background: { type: "solid", colorToken: "surface" },
|
|
9726
|
+
textColorToken: "text",
|
|
9727
|
+
borderRadius: "rounded-md",
|
|
9728
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
9729
|
+
effects: {
|
|
9730
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
|
|
9731
|
+
}
|
|
9732
|
+
},
|
|
9733
|
+
{
|
|
9734
|
+
id: "outline",
|
|
9735
|
+
name: "Outline",
|
|
9736
|
+
enabled: true,
|
|
9737
|
+
priority: 3,
|
|
9738
|
+
background: { type: "transparent" },
|
|
9739
|
+
textColorToken: "primary",
|
|
9740
|
+
borderRadius: "rounded-md",
|
|
9741
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
9742
|
+
effects: {
|
|
9743
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9744
|
+
}
|
|
9745
|
+
},
|
|
9746
|
+
{
|
|
9747
|
+
id: "ghost",
|
|
9748
|
+
name: "Ghost",
|
|
9749
|
+
enabled: true,
|
|
9750
|
+
priority: 3,
|
|
9751
|
+
background: { type: "transparent" },
|
|
9752
|
+
textColorToken: "primary",
|
|
9753
|
+
borderRadius: "rounded-md",
|
|
9754
|
+
effects: {
|
|
9755
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9756
|
+
}
|
|
9757
|
+
}
|
|
9758
|
+
]
|
|
9759
|
+
}
|
|
9760
|
+
});
|
|
9761
|
+
|
|
9762
|
+
// ../theme-core/src/buttons/personalities/editorial-link.ts
|
|
9763
|
+
var editorialLink = defineButtonPersonality({
|
|
9764
|
+
id: "editorial-link",
|
|
9765
|
+
name: "Editorial Link",
|
|
9766
|
+
description: "Link-style with a growing underline. Refined, typographic.",
|
|
9767
|
+
tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
|
|
9768
|
+
buttonSystem: {
|
|
9769
|
+
global: {
|
|
9770
|
+
cornerStyle: "square",
|
|
9644
9771
|
shadow: "none",
|
|
9645
|
-
|
|
9646
|
-
|
|
9647
|
-
|
|
9648
|
-
|
|
9649
|
-
|
|
9650
|
-
defaultButtonPersonalityId: "editorial-link",
|
|
9651
|
-
acceptedButtons: { tone: ["minimal", "classic"], era: ["editorial", "organic"] },
|
|
9652
|
-
defaultPaletteVariantId: "high-contrast-charcoal",
|
|
9653
|
-
acceptedPalettes: { tone: ["minimal", "classic"], era: ["editorial", "organic"] }
|
|
9654
|
-
}),
|
|
9655
|
-
defineCuratedSiteStyle({
|
|
9656
|
-
id: "site-style:practical-services",
|
|
9657
|
-
name: "Practical Services",
|
|
9658
|
-
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
9659
|
-
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
9660
|
-
selectionKeywords: [
|
|
9661
|
-
"repair",
|
|
9662
|
-
"plumb",
|
|
9663
|
-
"electric",
|
|
9664
|
-
"cleaning",
|
|
9665
|
-
"landscap",
|
|
9666
|
-
"contractor"
|
|
9667
|
-
],
|
|
9668
|
-
tokenRecipes: {
|
|
9669
|
-
palette: "brand-led",
|
|
9670
|
-
contrast: "maximum",
|
|
9671
|
-
radius: "soft",
|
|
9672
|
-
shadow: "subtle",
|
|
9673
|
-
typography: "clean-sans",
|
|
9674
|
-
spacing: "compact",
|
|
9675
|
-
motion: "none"
|
|
9676
|
-
},
|
|
9677
|
-
compositionBudget: quietBudget,
|
|
9678
|
-
defaultButtonPersonalityId: "confident-chip",
|
|
9679
|
-
acceptedButtons: { tone: ["minimal", "classic", "bold"], era: ["modern", "editorial"] },
|
|
9680
|
-
defaultPaletteVariantId: "brand-led-cool",
|
|
9681
|
-
acceptedPalettes: { tone: ["minimal", "classic", "bold"], era: ["modern", "editorial"] }
|
|
9682
|
-
}),
|
|
9683
|
-
defineCuratedSiteStyle({
|
|
9684
|
-
id: "site-style:modern-wellness",
|
|
9685
|
-
name: "Modern Wellness",
|
|
9686
|
-
description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
|
|
9687
|
-
generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
|
|
9688
|
-
tokenRecipes: {
|
|
9689
|
-
palette: "soft-natural",
|
|
9690
|
-
contrast: "standard",
|
|
9691
|
-
radius: "rounded",
|
|
9692
|
-
shadow: "subtle",
|
|
9693
|
-
typography: "clean-sans",
|
|
9694
|
-
spacing: "airy",
|
|
9695
|
-
motion: "subtle"
|
|
9772
|
+
textTransform: "none",
|
|
9773
|
+
fontWeight: 500,
|
|
9774
|
+
borderWidth: 1,
|
|
9775
|
+
hoverTransform: "none",
|
|
9776
|
+
hoverColor: "none"
|
|
9696
9777
|
},
|
|
9697
|
-
|
|
9698
|
-
|
|
9699
|
-
|
|
9700
|
-
|
|
9701
|
-
|
|
9702
|
-
|
|
9703
|
-
|
|
9704
|
-
|
|
9705
|
-
|
|
9706
|
-
|
|
9707
|
-
|
|
9708
|
-
|
|
9709
|
-
|
|
9710
|
-
|
|
9711
|
-
|
|
9712
|
-
|
|
9713
|
-
|
|
9714
|
-
|
|
9715
|
-
|
|
9716
|
-
|
|
9717
|
-
|
|
9718
|
-
|
|
9719
|
-
|
|
9720
|
-
|
|
9721
|
-
|
|
9722
|
-
|
|
9723
|
-
|
|
9724
|
-
|
|
9725
|
-
|
|
9726
|
-
|
|
9727
|
-
|
|
9728
|
-
|
|
9729
|
-
|
|
9730
|
-
|
|
9731
|
-
|
|
9732
|
-
|
|
9733
|
-
|
|
9734
|
-
|
|
9735
|
-
|
|
9736
|
-
|
|
9737
|
-
|
|
9738
|
-
|
|
9739
|
-
|
|
9740
|
-
|
|
9741
|
-
|
|
9742
|
-
|
|
9743
|
-
|
|
9744
|
-
|
|
9745
|
-
|
|
9746
|
-
|
|
9747
|
-
|
|
9748
|
-
|
|
9749
|
-
|
|
9750
|
-
|
|
9751
|
-
|
|
9752
|
-
|
|
9753
|
-
|
|
9754
|
-
|
|
9755
|
-
|
|
9756
|
-
|
|
9757
|
-
|
|
9758
|
-
|
|
9759
|
-
|
|
9760
|
-
|
|
9761
|
-
|
|
9762
|
-
|
|
9763
|
-
|
|
9764
|
-
|
|
9765
|
-
|
|
9766
|
-
|
|
9767
|
-
|
|
9768
|
-
|
|
9769
|
-
|
|
9770
|
-
|
|
9771
|
-
|
|
9772
|
-
|
|
9773
|
-
|
|
9774
|
-
|
|
9775
|
-
|
|
9776
|
-
|
|
9777
|
-
|
|
9778
|
-
|
|
9779
|
-
|
|
9780
|
-
|
|
9781
|
-
}
|
|
9782
|
-
var userPanelTreatments = uniqueNonEmpty(
|
|
9783
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
9784
|
-
);
|
|
9785
|
-
var userFlushTreatments = uniqueNonEmpty(
|
|
9786
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
9787
|
-
);
|
|
9788
|
-
var userFlushBleeds = uniqueNonEmpty(
|
|
9789
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
9790
|
-
);
|
|
9791
|
-
var contentFrameIntentSchema = z10.discriminatedUnion("kind", [
|
|
9792
|
-
z10.object({ kind: z10.literal("plain") }).strict(),
|
|
9793
|
-
z10.object({
|
|
9794
|
-
kind: z10.literal("panel"),
|
|
9795
|
-
treatment: z10.enum(userPanelTreatments)
|
|
9796
|
-
}).strict(),
|
|
9797
|
-
z10.object({
|
|
9798
|
-
kind: z10.literal("flush-panel"),
|
|
9799
|
-
treatment: z10.enum(userFlushTreatments),
|
|
9800
|
-
bleed: z10.enum(userFlushBleeds)
|
|
9801
|
-
}).strict()
|
|
9802
|
-
]);
|
|
9803
|
-
var blockDesignPlanSchema = z10.object({
|
|
9804
|
-
blockId: z10.string().min(1).transform(asDesignBlockId),
|
|
9805
|
-
blockKind: z10.string().min(1),
|
|
9806
|
-
purpose: z10.string().min(1),
|
|
9807
|
-
sectionSurface: z10.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
9808
|
-
contentFrame: contentFrameIntentSchema,
|
|
9809
|
-
itemSurface: z10.enum(userDesignOptionCatalog.itemSurfaces),
|
|
9810
|
-
transitionAfter: z10.enum(userDesignOptionCatalog.transitions),
|
|
9811
|
-
emphasis: z10.enum(userDesignOptionCatalog.emphases),
|
|
9812
|
-
heroLegibility: heroLegibilityStrategySchema.optional()
|
|
9813
|
-
}).strict();
|
|
9814
|
-
var styleAuthoritySchema = z10.discriminatedUnion("kind", [
|
|
9815
|
-
z10.object({
|
|
9816
|
-
kind: z10.literal("theme-v2"),
|
|
9817
|
-
source: designResolutionPolicySchema,
|
|
9818
|
-
siteStyleId: z10.string().min(1).transform(asSiteStyleId),
|
|
9819
|
-
templateId: z10.string().min(1).transform(asDesignSystemTemplateId),
|
|
9820
|
-
templateVersion: z10.number().int().nonnegative(),
|
|
9821
|
-
resolverVersion: z10.number().int().nonnegative()
|
|
9822
|
-
}).strict(),
|
|
9823
|
-
z10.object({
|
|
9824
|
-
kind: z10.literal("legacy-raw"),
|
|
9825
|
-
reason: z10.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
9826
|
-
}).strict(),
|
|
9827
|
-
z10.object({
|
|
9828
|
-
kind: z10.literal("advanced-detached"),
|
|
9829
|
-
reason: z10.literal("detached-custom-runtime-fields")
|
|
9830
|
-
}).strict()
|
|
9831
|
-
]);
|
|
9832
|
-
var blockRuntimeStyleAuthoritySchema = z10.object({
|
|
9833
|
-
unit: z10.literal("block-runtime-fields"),
|
|
9834
|
-
blockId: z10.string().min(1).transform(asDesignBlockId),
|
|
9835
|
-
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
9836
|
-
authority: styleAuthoritySchema
|
|
9837
|
-
}).strict();
|
|
9838
|
-
var persistedPageDesignStateV1Schema = z10.object({
|
|
9839
|
-
schemaVersion: z10.literal(themeV2DesignStateSchemaVersion),
|
|
9840
|
-
siteStyleId: z10.string().min(1).transform(asSiteStyleId),
|
|
9841
|
-
templateId: z10.string().min(1).transform(asDesignSystemTemplateId),
|
|
9842
|
-
templateVersion: z10.number().int().nonnegative(),
|
|
9843
|
-
resolverVersion: z10.number().int().nonnegative(),
|
|
9844
|
-
rhythmPresetId: z10.string().min(1),
|
|
9845
|
-
blocks: z10.array(blockDesignPlanSchema),
|
|
9846
|
-
styleAuthorities: z10.array(blockRuntimeStyleAuthoritySchema)
|
|
9847
|
-
}).strict();
|
|
9848
|
-
|
|
9849
|
-
// ../theme-core/src/site-styles/generatedSchemas.ts
|
|
9850
|
-
import { z as z11 } from "zod";
|
|
9851
|
-
function uniqueNonEmpty2(values) {
|
|
9852
|
-
const uniqueValues = [...new Set(values)];
|
|
9853
|
-
const firstValue = uniqueValues[0];
|
|
9854
|
-
if (!firstValue) {
|
|
9855
|
-
throw new Error("Expected at least one generated schema option.");
|
|
9856
|
-
}
|
|
9857
|
-
return [firstValue, ...uniqueValues.slice(1)];
|
|
9858
|
-
}
|
|
9859
|
-
var generatedPanelTreatments = uniqueNonEmpty2(
|
|
9860
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
9861
|
-
);
|
|
9862
|
-
var generatedFlushTreatments = uniqueNonEmpty2(
|
|
9863
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
9864
|
-
);
|
|
9865
|
-
var generatedFlushBleeds = uniqueNonEmpty2(
|
|
9866
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
9867
|
-
);
|
|
9868
|
-
var generatedPanelFrameSchema = z11.object({
|
|
9869
|
-
kind: z11.literal("panel"),
|
|
9870
|
-
treatment: z11.enum(generatedPanelTreatments)
|
|
9871
|
-
}).strict();
|
|
9872
|
-
var generatedFlushPanelFrameSchema = z11.object({
|
|
9873
|
-
kind: z11.literal("flush-panel"),
|
|
9874
|
-
treatment: z11.enum(generatedFlushTreatments),
|
|
9875
|
-
bleed: z11.enum(generatedFlushBleeds)
|
|
9876
|
-
}).strict();
|
|
9877
|
-
var generatedContentFrameIntentSchema = z11.discriminatedUnion("kind", [
|
|
9878
|
-
z11.object({ kind: z11.literal("plain") }).strict(),
|
|
9879
|
-
generatedPanelFrameSchema,
|
|
9880
|
-
generatedFlushPanelFrameSchema
|
|
9881
|
-
]);
|
|
9882
|
-
var generatedSiteStyleIdSchema = z11.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
|
|
9883
|
-
function generatedChoiceSchema(valueSchema) {
|
|
9884
|
-
return z11.discriminatedUnion("kind", [
|
|
9885
|
-
z11.object({
|
|
9886
|
-
source: z11.literal("generated"),
|
|
9887
|
-
kind: z11.literal("auto")
|
|
9888
|
-
}).strict(),
|
|
9889
|
-
z11.object({
|
|
9890
|
-
source: z11.literal("generated"),
|
|
9891
|
-
kind: z11.literal("explicit"),
|
|
9892
|
-
value: valueSchema
|
|
9893
|
-
}).strict()
|
|
9894
|
-
]);
|
|
9895
|
-
}
|
|
9896
|
-
var generatedBlockDesignIntentSchema = z11.object({
|
|
9897
|
-
sectionSurface: generatedChoiceSchema(
|
|
9898
|
-
z11.enum(generatedDesignOptionCatalog.sectionSurfaces)
|
|
9899
|
-
),
|
|
9900
|
-
contentFrame: generatedChoiceSchema(generatedContentFrameIntentSchema),
|
|
9901
|
-
itemSurface: generatedChoiceSchema(
|
|
9902
|
-
z11.enum(generatedDesignOptionCatalog.itemSurfaces)
|
|
9903
|
-
),
|
|
9904
|
-
transitionAfter: generatedChoiceSchema(
|
|
9905
|
-
z11.enum(generatedDesignOptionCatalog.transitions)
|
|
9906
|
-
),
|
|
9907
|
-
emphasis: generatedChoiceSchema(
|
|
9908
|
-
z11.enum(generatedDesignOptionCatalog.emphases)
|
|
9909
|
-
)
|
|
9910
|
-
}).strict();
|
|
9911
|
-
var generatedMediaCompositionIntentSchema = z11.enum([
|
|
9912
|
-
"none",
|
|
9913
|
-
"supporting",
|
|
9914
|
-
"dominant"
|
|
9915
|
-
]);
|
|
9916
|
-
var generatedDecorativeCompositionIntentSchema = z11.enum([
|
|
9917
|
-
"none",
|
|
9918
|
-
"supporting"
|
|
9919
|
-
]);
|
|
9920
|
-
var generatedHeroLegibilityStrategySchema = z11.enum([
|
|
9921
|
-
"none",
|
|
9922
|
-
"scrim-gradient"
|
|
9923
|
-
]);
|
|
9924
|
-
var generatedBlockMediaIntentSchema = z11.object({
|
|
9925
|
-
media: generatedMediaCompositionIntentSchema,
|
|
9926
|
-
decorative: generatedDecorativeCompositionIntentSchema,
|
|
9927
|
-
heroLegibility: generatedChoiceSchema(generatedHeroLegibilityStrategySchema)
|
|
9928
|
-
}).strict();
|
|
9929
|
-
var generatedBoundaryIntentSchema = z11.object({
|
|
9930
|
-
transitionAfter: generatedChoiceSchema(
|
|
9931
|
-
z11.enum(generatedDesignOptionCatalog.transitions)
|
|
9932
|
-
)
|
|
9933
|
-
}).strict();
|
|
9934
|
-
var generatedPageDesignBlockIntentSchema = z11.object({
|
|
9935
|
-
blockId: z11.string().min(1),
|
|
9936
|
-
blockKind: z11.string().min(1),
|
|
9937
|
-
purpose: z11.string().min(1),
|
|
9938
|
-
design: generatedBlockDesignIntentSchema,
|
|
9939
|
-
mediaIntent: generatedBlockMediaIntentSchema,
|
|
9940
|
-
boundaryIntent: generatedBoundaryIntentSchema
|
|
9941
|
-
}).strict();
|
|
9942
|
-
var generatedPageDesignIntentSchema = z11.object({
|
|
9943
|
-
siteStyleId: generatedSiteStyleIdSchema,
|
|
9944
|
-
blocks: z11.array(generatedPageDesignBlockIntentSchema)
|
|
9945
|
-
}).strict();
|
|
9946
|
-
|
|
9947
|
-
// ../theme-core/src/site-styles/pageDesignIntent.ts
|
|
9948
|
-
import { z as z12 } from "zod";
|
|
9949
|
-
var pageDesignIntentSchemaVersion = 1;
|
|
9950
|
-
var pageDesignUserPinnedAppearanceChoiceSchema = z12.object({
|
|
9951
|
-
kind: z12.literal("user-pinned"),
|
|
9952
|
-
value: z12.string().min(1).transform(asAppearancePresetId)
|
|
9953
|
-
}).strict();
|
|
9954
|
-
var pageDesignUserPinnedBoundaryChoiceSchema = z12.object({
|
|
9955
|
-
kind: z12.literal("user-pinned"),
|
|
9956
|
-
value: z12.string().min(1).transform(asBoundaryOptionId)
|
|
9957
|
-
}).strict();
|
|
9958
|
-
var pageDesignBlockLookPinSchema = z12.object({
|
|
9959
|
-
blockId: z12.string().min(1).transform(asDesignBlockId),
|
|
9960
|
-
blockKind: z12.string().min(1),
|
|
9961
|
-
choice: pageDesignUserPinnedAppearanceChoiceSchema
|
|
9962
|
-
}).strict();
|
|
9963
|
-
var pageDesignBoundaryPinSchema = z12.object({
|
|
9964
|
-
boundaryId: z12.string().min(1).transform(asDesignBoundaryId),
|
|
9965
|
-
previousBlockId: z12.string().min(1).transform(asDesignBlockId),
|
|
9966
|
-
nextBlockId: z12.string().min(1).transform(asDesignBlockId),
|
|
9967
|
-
choice: pageDesignUserPinnedBoundaryChoiceSchema
|
|
9968
|
-
}).strict().superRefine((pin, ctx) => {
|
|
9969
|
-
const expectedBoundaryId = makeBoundaryId(
|
|
9970
|
-
pin.previousBlockId,
|
|
9971
|
-
pin.nextBlockId
|
|
9972
|
-
);
|
|
9973
|
-
if (pin.boundaryId !== expectedBoundaryId) {
|
|
9974
|
-
ctx.addIssue({
|
|
9975
|
-
code: z12.ZodIssueCode.custom,
|
|
9976
|
-
path: ["boundaryId"],
|
|
9977
|
-
message: `Boundary id must match previousBlockId and nextBlockId. Expected ${expectedBoundaryId}.`
|
|
9978
|
-
});
|
|
9778
|
+
variants: [
|
|
9779
|
+
{
|
|
9780
|
+
id: "primary",
|
|
9781
|
+
name: "Primary",
|
|
9782
|
+
enabled: true,
|
|
9783
|
+
priority: 1,
|
|
9784
|
+
background: { type: "transparent" },
|
|
9785
|
+
textColorToken: "text",
|
|
9786
|
+
borderRadius: "rounded-none",
|
|
9787
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
9788
|
+
sizes: {
|
|
9789
|
+
sm: { padding: "0.25rem 0" },
|
|
9790
|
+
md: { padding: "0.5rem 0" },
|
|
9791
|
+
lg: { padding: "0.625rem 0" },
|
|
9792
|
+
xl: { padding: "0.75rem 0" }
|
|
9793
|
+
},
|
|
9794
|
+
effects: {
|
|
9795
|
+
base: [
|
|
9796
|
+
{ effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
|
|
9797
|
+
]
|
|
9798
|
+
}
|
|
9799
|
+
},
|
|
9800
|
+
{
|
|
9801
|
+
id: "secondary",
|
|
9802
|
+
name: "Secondary",
|
|
9803
|
+
enabled: true,
|
|
9804
|
+
priority: 2,
|
|
9805
|
+
background: { type: "transparent" },
|
|
9806
|
+
textColorToken: "mutedText",
|
|
9807
|
+
borderRadius: "rounded-none",
|
|
9808
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
9809
|
+
sizes: {
|
|
9810
|
+
sm: { padding: "0.25rem 0" },
|
|
9811
|
+
md: { padding: "0.5rem 0" },
|
|
9812
|
+
lg: { padding: "0.625rem 0" },
|
|
9813
|
+
xl: { padding: "0.75rem 0" }
|
|
9814
|
+
},
|
|
9815
|
+
effects: {
|
|
9816
|
+
base: [
|
|
9817
|
+
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
|
|
9818
|
+
]
|
|
9819
|
+
}
|
|
9820
|
+
},
|
|
9821
|
+
{
|
|
9822
|
+
id: "outline",
|
|
9823
|
+
name: "Outline",
|
|
9824
|
+
enabled: true,
|
|
9825
|
+
priority: 3,
|
|
9826
|
+
background: { type: "transparent" },
|
|
9827
|
+
textColorToken: "accent",
|
|
9828
|
+
borderRadius: "rounded-none",
|
|
9829
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
9830
|
+
sizes: {
|
|
9831
|
+
sm: { padding: "0.25rem 0" },
|
|
9832
|
+
md: { padding: "0.5rem 0" },
|
|
9833
|
+
lg: { padding: "0.625rem 0" },
|
|
9834
|
+
xl: { padding: "0.75rem 0" }
|
|
9835
|
+
},
|
|
9836
|
+
effects: {
|
|
9837
|
+
base: [
|
|
9838
|
+
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
|
|
9839
|
+
]
|
|
9840
|
+
}
|
|
9841
|
+
},
|
|
9842
|
+
{
|
|
9843
|
+
id: "ghost",
|
|
9844
|
+
name: "Ghost",
|
|
9845
|
+
enabled: true,
|
|
9846
|
+
priority: 3,
|
|
9847
|
+
background: { type: "transparent" },
|
|
9848
|
+
textColorToken: "mutedText",
|
|
9849
|
+
borderRadius: "rounded-none",
|
|
9850
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
9851
|
+
sizes: {
|
|
9852
|
+
sm: { padding: "0.25rem 0" },
|
|
9853
|
+
md: { padding: "0.5rem 0" },
|
|
9854
|
+
lg: { padding: "0.625rem 0" },
|
|
9855
|
+
xl: { padding: "0.75rem 0" }
|
|
9856
|
+
},
|
|
9857
|
+
effects: {
|
|
9858
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
|
|
9859
|
+
}
|
|
9860
|
+
}
|
|
9861
|
+
]
|
|
9979
9862
|
}
|
|
9980
9863
|
});
|
|
9981
|
-
var pageDesignIntentV1Schema = z12.object({
|
|
9982
|
-
schemaVersion: z12.literal(pageDesignIntentSchemaVersion),
|
|
9983
|
-
siteStyleId: z12.string().min(1).transform(asSiteStyleId),
|
|
9984
|
-
pageFlowPresetId: z12.string().min(1).transform(asPageFlowPresetId),
|
|
9985
|
-
blockLookPins: z12.array(pageDesignBlockLookPinSchema),
|
|
9986
|
-
boundaryPins: z12.array(pageDesignBoundaryPinSchema)
|
|
9987
|
-
}).strict().superRefine((intent, ctx) => {
|
|
9988
|
-
addDuplicateStringIssues(ctx, {
|
|
9989
|
-
values: intent.blockLookPins.map((pin) => pin.blockId),
|
|
9990
|
-
path: ["blockLookPins"],
|
|
9991
|
-
label: "block Look pin"
|
|
9992
|
-
});
|
|
9993
|
-
addDuplicateStringIssues(ctx, {
|
|
9994
|
-
values: intent.boundaryPins.map(
|
|
9995
|
-
(pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)
|
|
9996
|
-
),
|
|
9997
|
-
path: ["boundaryPins"],
|
|
9998
|
-
label: "boundary pin"
|
|
9999
|
-
});
|
|
10000
|
-
});
|
|
10001
|
-
function addDuplicateStringIssues(ctx, input) {
|
|
10002
|
-
const seen = /* @__PURE__ */ new Set();
|
|
10003
|
-
const duplicates = /* @__PURE__ */ new Set();
|
|
10004
|
-
for (const value of input.values) {
|
|
10005
|
-
if (seen.has(value)) {
|
|
10006
|
-
duplicates.add(value);
|
|
10007
|
-
}
|
|
10008
|
-
seen.add(value);
|
|
10009
|
-
}
|
|
10010
|
-
for (const duplicate of duplicates) {
|
|
10011
|
-
ctx.addIssue({
|
|
10012
|
-
code: z12.ZodIssueCode.custom,
|
|
10013
|
-
path: [...input.path],
|
|
10014
|
-
message: `Duplicate ${input.label}: ${duplicate}.`
|
|
10015
|
-
});
|
|
10016
|
-
}
|
|
10017
|
-
}
|
|
10018
|
-
function boundaryKey(previousBlockId, nextBlockId) {
|
|
10019
|
-
return makeBoundaryId(previousBlockId, nextBlockId);
|
|
10020
|
-
}
|
|
10021
|
-
|
|
10022
|
-
// ../theme-core/src/schema.ts
|
|
10023
|
-
import { z as z25 } from "zod";
|
|
10024
|
-
|
|
10025
|
-
// ../theme-core/src/lib/media.ts
|
|
10026
|
-
import z13 from "zod";
|
|
10027
|
-
var hotspotSchema = z13.object({
|
|
10028
|
-
x: z13.number().min(0).max(1),
|
|
10029
|
-
y: z13.number().min(0).max(1),
|
|
10030
|
-
radius: z13.number().optional()
|
|
10031
|
-
});
|
|
10032
|
-
var rotationSchema = z13.union([z13.literal(0), z13.literal(90), z13.literal(180), z13.literal(270)]);
|
|
10033
|
-
var rectSchema = z13.tuple([z13.number(), z13.number(), z13.number(), z13.number()]);
|
|
10034
|
-
var aspectCropSchema = z13.object({
|
|
10035
|
-
aspect: z13.preprocess((value) => value == null ? void 0 : value, z13.string().optional()),
|
|
10036
|
-
rect: z13.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
10037
|
-
hotspot: z13.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
10038
|
-
rotation: z13.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
10039
|
-
});
|
|
10040
|
-
var transformSchema = z13.object({
|
|
10041
|
-
aspectCrops: z13.preprocess((value) => {
|
|
10042
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
10043
|
-
return void 0;
|
|
10044
|
-
}
|
|
10045
|
-
return value;
|
|
10046
|
-
}, z13.record(z13.string(), aspectCropSchema.catch({}))).optional(),
|
|
10047
|
-
rect: rectSchema.optional(),
|
|
10048
|
-
hotspot: hotspotSchema.optional(),
|
|
10049
|
-
rotation: rotationSchema.optional()
|
|
10050
|
-
});
|
|
10051
|
-
var mediaSchema = z13.object({
|
|
10052
|
-
type: z13.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
|
|
10053
|
-
purpose: z13.string().optional(),
|
|
10054
|
-
placeholder: z13.boolean().default(true).optional(),
|
|
10055
|
-
assetId: z13.string().optional(),
|
|
10056
|
-
identifier: z13.string().optional(),
|
|
10057
|
-
src: z13.string().optional(),
|
|
10058
|
-
alt: z13.string().optional(),
|
|
10059
|
-
filename: z13.string().optional(),
|
|
10060
|
-
mimeType: z13.string().optional(),
|
|
10061
|
-
width: z13.number().optional(),
|
|
10062
|
-
height: z13.number().optional(),
|
|
10063
|
-
storageBucket: z13.string().optional(),
|
|
10064
|
-
storagePath: z13.string().optional(),
|
|
10065
|
-
transform: transformSchema.optional()
|
|
10066
|
-
});
|
|
10067
|
-
|
|
10068
|
-
// ../theme-core/src/buttons/types.ts
|
|
10069
|
-
import { z as z14 } from "zod";
|
|
10070
|
-
var VARIANT_ROLES = [
|
|
10071
|
-
"primary",
|
|
10072
|
-
"secondary",
|
|
10073
|
-
"outline",
|
|
10074
|
-
"ghost",
|
|
10075
|
-
"link",
|
|
10076
|
-
"tertiary",
|
|
10077
|
-
"accent"
|
|
10078
|
-
];
|
|
10079
|
-
var cornerStyleSchema = z14.enum(["square", "rounded", "pill"]);
|
|
10080
|
-
var shadowSizeSchema = z14.enum(["none", "low", "medium", "high"]);
|
|
10081
|
-
var textTransformSchema = z14.enum(["none", "uppercase", "lowercase", "capitalize"]);
|
|
10082
|
-
var fontWeightSchema = z14.union([z14.literal(500), z14.literal(600), z14.literal(700)]);
|
|
10083
|
-
var buttonTypographySchema = z14.enum(["body", "heading"]);
|
|
10084
|
-
var letterSpacingSchema = z14.enum(["tight", "normal", "loose"]);
|
|
10085
|
-
var hoverTransformSchema = z14.enum(["none", "lift", "scale", "press"]);
|
|
10086
|
-
var hoverColorSchema = z14.enum(["none", "brighten", "darken", "saturate", "token"]);
|
|
10087
|
-
var buttonPaddingPresetSchema = z14.enum(["compact", "default", "spacious"]);
|
|
10088
|
-
var gradientStyleSchema = z14.enum(["linear", "radial", "conic"]);
|
|
10089
|
-
var gradientSharpnessSchema = z14.enum(["smooth", "medium", "hard"]);
|
|
10090
|
-
var prioritySchema = z14.union([z14.literal(1), z14.literal(2), z14.literal(3)]);
|
|
10091
|
-
var variantRoleSchema = z14.enum(VARIANT_ROLES);
|
|
10092
|
-
var buttonSizeNameSchema = z14.enum(["sm", "md", "lg", "xl"]);
|
|
10093
|
-
var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
|
|
10094
|
-
var paddingShorthandSchema = z14.string().refine(
|
|
10095
|
-
(value) => {
|
|
10096
|
-
const parts = value.split(/\s+/).filter(Boolean);
|
|
10097
|
-
return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
|
|
10098
|
-
},
|
|
10099
|
-
{
|
|
10100
|
-
message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
|
|
10101
|
-
}
|
|
10102
|
-
);
|
|
10103
|
-
var buttonSizeConfigSchema = z14.object({
|
|
10104
|
-
padding: paddingShorthandSchema,
|
|
10105
|
-
fontSize: z14.string().optional()
|
|
10106
|
-
});
|
|
10107
|
-
var buttonSizesSchema = z14.object({
|
|
10108
|
-
sm: buttonSizeConfigSchema,
|
|
10109
|
-
md: buttonSizeConfigSchema,
|
|
10110
|
-
lg: buttonSizeConfigSchema,
|
|
10111
|
-
xl: buttonSizeConfigSchema.optional()
|
|
10112
|
-
}).transform(({ sm, md, lg, xl }) => ({
|
|
10113
|
-
sm,
|
|
10114
|
-
md,
|
|
10115
|
-
lg,
|
|
10116
|
-
xl: xl ?? lg
|
|
10117
|
-
}));
|
|
10118
|
-
var buttonGlobalSettingsSchema = z14.object({
|
|
10119
|
-
cornerStyle: cornerStyleSchema,
|
|
10120
|
-
cornerRadius: z14.number().min(0).max(24).optional(),
|
|
10121
|
-
shadow: shadowSizeSchema,
|
|
10122
|
-
textTransform: textTransformSchema,
|
|
10123
|
-
fontWeight: fontWeightSchema,
|
|
10124
|
-
/**
|
|
10125
|
-
* @deprecated Set per-variant via `variant.border.widthClass` instead.
|
|
10126
|
-
* Schema field is preserved so existing presets parse; the value is unread
|
|
10127
|
-
* by the current generator and will be removed once the legacy
|
|
10128
|
-
* `primitives/content/components/Button.tsx` slot exports are deleted.
|
|
10129
|
-
*/
|
|
10130
|
-
borderWidth: z14.union([z14.literal(1), z14.literal(2), z14.literal(3)]),
|
|
10131
|
-
// === Family-level typography ===
|
|
10132
|
-
// Typography source (body or heading) — selects which theme typography pool to inherit
|
|
10133
|
-
typography: buttonTypographySchema.optional(),
|
|
10134
|
-
// Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
|
|
10135
|
-
// Sized variants get this as default; fixed variants inherit unless they override.
|
|
10136
|
-
// Size class CSS may still override at run time for sized variants.
|
|
10137
|
-
fontSize: z14.string().optional(),
|
|
10138
|
-
// Letter spacing applied to all variants
|
|
10139
|
-
letterSpacing: letterSpacingSchema.optional(),
|
|
10140
|
-
// Italic style
|
|
10141
|
-
italic: z14.boolean().optional(),
|
|
10142
|
-
// Padding preset (applies to sized variants without a sizes config)
|
|
10143
|
-
paddingPreset: buttonPaddingPresetSchema.optional(),
|
|
10144
|
-
hoverTransform: hoverTransformSchema,
|
|
10145
|
-
hoverColor: hoverColorSchema,
|
|
10146
|
-
// When hoverColor is 'token', this specifies which token to use
|
|
10147
|
-
hoverColorToken: z14.string().optional(),
|
|
10148
|
-
// Gradient settings (if any variant uses gradients)
|
|
10149
|
-
gradientStyle: gradientStyleSchema.optional(),
|
|
10150
|
-
gradientAngle: z14.number().min(0).max(360).optional(),
|
|
10151
|
-
gradientSharpness: gradientSharpnessSchema.optional()
|
|
10152
|
-
});
|
|
10153
|
-
var gradientDirectionSchema = z14.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
10154
|
-
var buttonBackgroundSchema = z14.discriminatedUnion("type", [
|
|
10155
|
-
z14.object({ type: z14.literal("solid"), colorToken: z14.string() }),
|
|
10156
|
-
z14.object({
|
|
10157
|
-
type: z14.literal("gradient"),
|
|
10158
|
-
stops: z14.array(z14.string()).min(2),
|
|
10159
|
-
direction: gradientDirectionSchema
|
|
10160
|
-
}),
|
|
10161
|
-
z14.object({ type: z14.literal("transparent") })
|
|
10162
|
-
]);
|
|
10163
|
-
var effectApplicationSchema = z14.object({
|
|
10164
|
-
effectId: z14.string(),
|
|
10165
|
-
options: z14.record(z14.string(), z14.any()).optional()
|
|
10166
|
-
});
|
|
10167
|
-
var buttonBorderSchema = z14.object({
|
|
10168
|
-
widthClass: z14.string(),
|
|
10169
|
-
colorToken: z14.string()
|
|
10170
|
-
});
|
|
10171
|
-
var variantShadowSchema = z14.object({
|
|
10172
|
-
elevation: z14.enum(["none", "low", "medium", "high"]),
|
|
10173
|
-
softness: z14.enum(["crisp", "soft", "hard"]).nullable(),
|
|
10174
|
-
position: z14.enum(["bottom", "bottom-right"]).default("bottom")
|
|
10175
|
-
});
|
|
10176
|
-
var variantEffectsSchema = z14.object({
|
|
10177
|
-
base: z14.array(effectApplicationSchema).optional(),
|
|
10178
|
-
hover: z14.array(effectApplicationSchema).optional(),
|
|
10179
|
-
active: z14.array(effectApplicationSchema).optional(),
|
|
10180
|
-
focus: z14.array(effectApplicationSchema).optional()
|
|
10181
|
-
});
|
|
10182
|
-
var variantSizeOverridesSchema = z14.object({
|
|
10183
|
-
sm: buttonSizeConfigSchema.optional(),
|
|
10184
|
-
md: buttonSizeConfigSchema.optional(),
|
|
10185
|
-
lg: buttonSizeConfigSchema.optional(),
|
|
10186
|
-
xl: buttonSizeConfigSchema.optional()
|
|
10187
|
-
});
|
|
10188
|
-
var buttonVariantSchema = z14.object({
|
|
10189
|
-
id: z14.string(),
|
|
10190
|
-
name: z14.string().min(1).max(20),
|
|
10191
|
-
enabled: z14.boolean(),
|
|
10192
|
-
priority: prioritySchema,
|
|
10193
|
-
// Base appearance (token-based)
|
|
10194
|
-
background: buttonBackgroundSchema,
|
|
10195
|
-
textColorToken: z14.string(),
|
|
10196
|
-
/** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
|
|
10197
|
-
borderRadius: z14.string().optional(),
|
|
10198
|
-
// Optional shadow override (uses theme.shadow if not specified)
|
|
10199
|
-
shadow: variantShadowSchema.optional(),
|
|
10200
|
-
// Border (optional)
|
|
10201
|
-
border: buttonBorderSchema.optional(),
|
|
10202
|
-
// Hover background token (per-variant override, takes precedence over global hoverColorToken)
|
|
10203
|
-
hoverBackgroundToken: z14.string().optional(),
|
|
10204
|
-
// Effect composition
|
|
10205
|
-
effects: variantEffectsSchema.optional(),
|
|
10206
|
-
// Per-variant size overrides — see VariantSizeOverrides
|
|
10207
|
-
sizes: variantSizeOverridesSchema.optional()
|
|
10208
|
-
});
|
|
10209
|
-
var buttonSystemSchema = z14.object({
|
|
10210
|
-
global: buttonGlobalSettingsSchema,
|
|
10211
|
-
variants: z14.array(buttonVariantSchema).min(1).max(6),
|
|
10212
|
-
sizes: buttonSizesSchema.optional()
|
|
10213
|
-
});
|
|
10214
|
-
|
|
10215
|
-
// ../theme-core/src/buttons/generateButtonCss.ts
|
|
10216
|
-
var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
10217
|
-
|
|
10218
|
-
// ../theme-core/src/buttons/personalities/types.ts
|
|
10219
|
-
import { z as z15 } from "zod";
|
|
10220
|
-
function asButtonPersonalityId(value) {
|
|
10221
|
-
if (value.length === 0) {
|
|
10222
|
-
throw new Error("ButtonPersonalityId must be a non-empty string");
|
|
10223
|
-
}
|
|
10224
|
-
return value;
|
|
10225
|
-
}
|
|
10226
|
-
var buttonPersonalityIdSchema = z15.string().min(1).transform((value) => asButtonPersonalityId(value));
|
|
10227
|
-
var buttonPersonalitySchema = z15.object({
|
|
10228
|
-
id: buttonPersonalityIdSchema,
|
|
10229
|
-
name: z15.string().min(1),
|
|
10230
|
-
description: z15.string().min(1),
|
|
10231
|
-
tags: styleTagsSchema,
|
|
10232
|
-
buttonSystem: buttonSystemSchema
|
|
10233
|
-
});
|
|
10234
|
-
function defineButtonPersonality(input) {
|
|
10235
|
-
return {
|
|
10236
|
-
id: asButtonPersonalityId(input.id),
|
|
10237
|
-
name: input.name,
|
|
10238
|
-
description: input.description,
|
|
10239
|
-
tags: input.tags,
|
|
10240
|
-
buttonSystem: input.buttonSystem
|
|
10241
|
-
};
|
|
10242
|
-
}
|
|
10243
9864
|
|
|
10244
|
-
// ../theme-core/src/buttons/personalities/
|
|
10245
|
-
var
|
|
10246
|
-
id: "
|
|
10247
|
-
name: "
|
|
10248
|
-
description: "
|
|
10249
|
-
tags: { tone: "
|
|
9865
|
+
// ../theme-core/src/buttons/personalities/ink-stamp.ts
|
|
9866
|
+
var inkStamp = defineButtonPersonality({
|
|
9867
|
+
id: "ink-stamp",
|
|
9868
|
+
name: "Ink Stamp",
|
|
9869
|
+
description: "Hand-stamped block-print buttons with a slight lift on hover.",
|
|
9870
|
+
tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
|
|
10250
9871
|
buttonSystem: {
|
|
10251
9872
|
global: {
|
|
10252
9873
|
cornerStyle: "rounded",
|
|
10253
|
-
shadow: "
|
|
10254
|
-
textTransform: "
|
|
10255
|
-
fontWeight:
|
|
9874
|
+
shadow: "none",
|
|
9875
|
+
textTransform: "uppercase",
|
|
9876
|
+
fontWeight: 600,
|
|
10256
9877
|
borderWidth: 1,
|
|
10257
9878
|
hoverTransform: "none",
|
|
10258
|
-
hoverColor: "none"
|
|
9879
|
+
hoverColor: "none",
|
|
9880
|
+
letterSpacing: "loose"
|
|
10259
9881
|
},
|
|
10260
9882
|
sizes: {
|
|
10261
|
-
sm: { padding: "0.
|
|
10262
|
-
md: { padding: "
|
|
10263
|
-
lg: { padding: "
|
|
10264
|
-
xl: { padding: "1.
|
|
9883
|
+
sm: { padding: "0.5rem 1.25rem", fontSize: "text-xs" },
|
|
9884
|
+
md: { padding: "0.75rem 1.75rem", fontSize: "text-sm" },
|
|
9885
|
+
lg: { padding: "0.875rem 2.25rem", fontSize: "text-base" },
|
|
9886
|
+
xl: { padding: "1.125rem 2.75rem", fontSize: "text-lg" }
|
|
10265
9887
|
},
|
|
10266
9888
|
variants: [
|
|
10267
9889
|
{
|
|
@@ -10269,16 +9891,15 @@ var brushedWash = defineButtonPersonality({
|
|
|
10269
9891
|
name: "Primary",
|
|
10270
9892
|
enabled: true,
|
|
10271
9893
|
priority: 1,
|
|
10272
|
-
background: {
|
|
10273
|
-
type: "gradient",
|
|
10274
|
-
stops: ["primary", "accent"],
|
|
10275
|
-
direction: "to-r"
|
|
10276
|
-
},
|
|
9894
|
+
background: { type: "solid", colorToken: "primary" },
|
|
10277
9895
|
textColorToken: "primaryForeground",
|
|
10278
|
-
borderRadius: "rounded-
|
|
10279
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
9896
|
+
borderRadius: "rounded-md",
|
|
10280
9897
|
effects: {
|
|
10281
|
-
hover: [
|
|
9898
|
+
hover: [
|
|
9899
|
+
{ effectId: "drop-shadow", options: { intensity: "medium" } },
|
|
9900
|
+
{ effectId: "scale-up", options: { scale: "1.02" } }
|
|
9901
|
+
],
|
|
9902
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
10282
9903
|
}
|
|
10283
9904
|
},
|
|
10284
9905
|
{
|
|
@@ -10286,16 +9907,12 @@ var brushedWash = defineButtonPersonality({
|
|
|
10286
9907
|
name: "Secondary",
|
|
10287
9908
|
enabled: true,
|
|
10288
9909
|
priority: 2,
|
|
10289
|
-
background: {
|
|
10290
|
-
|
|
10291
|
-
|
|
10292
|
-
|
|
10293
|
-
},
|
|
10294
|
-
textColorToken: "primaryForeground",
|
|
10295
|
-
borderRadius: "rounded-lg",
|
|
10296
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
9910
|
+
background: { type: "transparent" },
|
|
9911
|
+
textColorToken: "primary",
|
|
9912
|
+
borderRadius: "rounded-md",
|
|
9913
|
+
border: { widthClass: "border-2", colorToken: "primary" },
|
|
10297
9914
|
effects: {
|
|
10298
|
-
hover: [{ effectId: "
|
|
9915
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10299
9916
|
}
|
|
10300
9917
|
},
|
|
10301
9918
|
{
|
|
@@ -10304,9 +9921,9 @@ var brushedWash = defineButtonPersonality({
|
|
|
10304
9921
|
enabled: true,
|
|
10305
9922
|
priority: 3,
|
|
10306
9923
|
background: { type: "transparent" },
|
|
10307
|
-
textColorToken: "
|
|
10308
|
-
borderRadius: "rounded-
|
|
10309
|
-
border: { widthClass: "border", colorToken: "
|
|
9924
|
+
textColorToken: "text",
|
|
9925
|
+
borderRadius: "rounded-md",
|
|
9926
|
+
border: { widthClass: "border-2", colorToken: "border" },
|
|
10310
9927
|
effects: {
|
|
10311
9928
|
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10312
9929
|
}
|
|
@@ -10317,216 +9934,43 @@ var brushedWash = defineButtonPersonality({
|
|
|
10317
9934
|
enabled: true,
|
|
10318
9935
|
priority: 3,
|
|
10319
9936
|
background: { type: "transparent" },
|
|
10320
|
-
textColorToken: "
|
|
10321
|
-
borderRadius: "rounded-
|
|
9937
|
+
textColorToken: "accent",
|
|
9938
|
+
borderRadius: "rounded-none",
|
|
9939
|
+
sizes: {
|
|
9940
|
+
sm: { padding: "0.375rem 0", fontSize: "text-xs" },
|
|
9941
|
+
md: { padding: "0.5rem 0", fontSize: "text-sm" },
|
|
9942
|
+
lg: { padding: "0.625rem 0", fontSize: "text-base" },
|
|
9943
|
+
xl: { padding: "0.75rem 0", fontSize: "text-lg" }
|
|
9944
|
+
},
|
|
10322
9945
|
effects: {
|
|
10323
|
-
|
|
10324
|
-
{ effectId: "background-on-hover", options: { colorToken: "surface" } }
|
|
10325
|
-
]
|
|
9946
|
+
base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
|
|
10326
9947
|
}
|
|
10327
9948
|
}
|
|
10328
9949
|
]
|
|
10329
9950
|
}
|
|
10330
9951
|
});
|
|
10331
9952
|
|
|
10332
|
-
// ../theme-core/src/buttons/personalities/
|
|
10333
|
-
var
|
|
10334
|
-
id: "
|
|
10335
|
-
name: "
|
|
10336
|
-
description: "
|
|
10337
|
-
tags: { tone: "classic", energy: "calm", motion: "standard", era: "
|
|
9953
|
+
// ../theme-core/src/buttons/personalities/pebble.ts
|
|
9954
|
+
var pebble = defineButtonPersonality({
|
|
9955
|
+
id: "pebble",
|
|
9956
|
+
name: "Pebble",
|
|
9957
|
+
description: "Generous pill buttons with a soft hover lift.",
|
|
9958
|
+
tags: { tone: "classic", energy: "calm", motion: "standard", era: "organic" },
|
|
10338
9959
|
buttonSystem: {
|
|
10339
9960
|
global: {
|
|
10340
|
-
cornerStyle: "
|
|
10341
|
-
shadow: "
|
|
9961
|
+
cornerStyle: "pill",
|
|
9962
|
+
shadow: "none",
|
|
10342
9963
|
textTransform: "none",
|
|
10343
|
-
fontWeight:
|
|
10344
|
-
borderWidth:
|
|
9964
|
+
fontWeight: 500,
|
|
9965
|
+
borderWidth: 2,
|
|
10345
9966
|
hoverTransform: "none",
|
|
10346
9967
|
hoverColor: "none"
|
|
10347
9968
|
},
|
|
10348
|
-
variants: [
|
|
10349
|
-
{
|
|
10350
|
-
id: "primary",
|
|
10351
|
-
name: "Primary",
|
|
10352
|
-
enabled: true,
|
|
10353
|
-
priority: 1,
|
|
10354
|
-
background: { type: "solid", colorToken: "primary" },
|
|
10355
|
-
textColorToken: "primaryForeground",
|
|
10356
|
-
borderRadius: "rounded-md",
|
|
10357
|
-
shadow: { elevation: "medium", softness: "soft", position: "bottom" },
|
|
10358
|
-
effects: {
|
|
10359
|
-
hover: [{ effectId: "darken-background", options: { amount: 60 } }],
|
|
10360
|
-
active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
|
|
10361
|
-
}
|
|
10362
|
-
},
|
|
10363
|
-
{
|
|
10364
|
-
id: "secondary",
|
|
10365
|
-
name: "Secondary",
|
|
10366
|
-
enabled: true,
|
|
10367
|
-
priority: 2,
|
|
10368
|
-
background: { type: "solid", colorToken: "surface" },
|
|
10369
|
-
textColorToken: "text",
|
|
10370
|
-
borderRadius: "rounded-md",
|
|
10371
|
-
border: { widthClass: "border", colorToken: "border" },
|
|
10372
|
-
effects: {
|
|
10373
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
|
|
10374
|
-
}
|
|
10375
|
-
},
|
|
10376
|
-
{
|
|
10377
|
-
id: "outline",
|
|
10378
|
-
name: "Outline",
|
|
10379
|
-
enabled: true,
|
|
10380
|
-
priority: 3,
|
|
10381
|
-
background: { type: "transparent" },
|
|
10382
|
-
textColorToken: "primary",
|
|
10383
|
-
borderRadius: "rounded-md",
|
|
10384
|
-
border: { widthClass: "border", colorToken: "primary" },
|
|
10385
|
-
effects: {
|
|
10386
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10387
|
-
}
|
|
10388
|
-
},
|
|
10389
|
-
{
|
|
10390
|
-
id: "ghost",
|
|
10391
|
-
name: "Ghost",
|
|
10392
|
-
enabled: true,
|
|
10393
|
-
priority: 3,
|
|
10394
|
-
background: { type: "transparent" },
|
|
10395
|
-
textColorToken: "primary",
|
|
10396
|
-
borderRadius: "rounded-md",
|
|
10397
|
-
effects: {
|
|
10398
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10399
|
-
}
|
|
10400
|
-
}
|
|
10401
|
-
]
|
|
10402
|
-
}
|
|
10403
|
-
});
|
|
10404
|
-
|
|
10405
|
-
// ../theme-core/src/buttons/personalities/editorial-link.ts
|
|
10406
|
-
var editorialLink = defineButtonPersonality({
|
|
10407
|
-
id: "editorial-link",
|
|
10408
|
-
name: "Editorial Link",
|
|
10409
|
-
description: "Link-style with a growing underline. Refined, typographic.",
|
|
10410
|
-
tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
|
|
10411
|
-
buttonSystem: {
|
|
10412
|
-
global: {
|
|
10413
|
-
cornerStyle: "square",
|
|
10414
|
-
shadow: "none",
|
|
10415
|
-
textTransform: "none",
|
|
10416
|
-
fontWeight: 500,
|
|
10417
|
-
borderWidth: 1,
|
|
10418
|
-
hoverTransform: "none",
|
|
10419
|
-
hoverColor: "none"
|
|
10420
|
-
},
|
|
10421
|
-
variants: [
|
|
10422
|
-
{
|
|
10423
|
-
id: "primary",
|
|
10424
|
-
name: "Primary",
|
|
10425
|
-
enabled: true,
|
|
10426
|
-
priority: 1,
|
|
10427
|
-
background: { type: "transparent" },
|
|
10428
|
-
textColorToken: "text",
|
|
10429
|
-
borderRadius: "rounded-none",
|
|
10430
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
10431
|
-
sizes: {
|
|
10432
|
-
sm: { padding: "0.25rem 0" },
|
|
10433
|
-
md: { padding: "0.5rem 0" },
|
|
10434
|
-
lg: { padding: "0.625rem 0" },
|
|
10435
|
-
xl: { padding: "0.75rem 0" }
|
|
10436
|
-
},
|
|
10437
|
-
effects: {
|
|
10438
|
-
base: [
|
|
10439
|
-
{ effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
|
|
10440
|
-
]
|
|
10441
|
-
}
|
|
10442
|
-
},
|
|
10443
|
-
{
|
|
10444
|
-
id: "secondary",
|
|
10445
|
-
name: "Secondary",
|
|
10446
|
-
enabled: true,
|
|
10447
|
-
priority: 2,
|
|
10448
|
-
background: { type: "transparent" },
|
|
10449
|
-
textColorToken: "mutedText",
|
|
10450
|
-
borderRadius: "rounded-none",
|
|
10451
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
10452
|
-
sizes: {
|
|
10453
|
-
sm: { padding: "0.25rem 0" },
|
|
10454
|
-
md: { padding: "0.5rem 0" },
|
|
10455
|
-
lg: { padding: "0.625rem 0" },
|
|
10456
|
-
xl: { padding: "0.75rem 0" }
|
|
10457
|
-
},
|
|
10458
|
-
effects: {
|
|
10459
|
-
base: [
|
|
10460
|
-
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
|
|
10461
|
-
]
|
|
10462
|
-
}
|
|
10463
|
-
},
|
|
10464
|
-
{
|
|
10465
|
-
id: "outline",
|
|
10466
|
-
name: "Outline",
|
|
10467
|
-
enabled: true,
|
|
10468
|
-
priority: 3,
|
|
10469
|
-
background: { type: "transparent" },
|
|
10470
|
-
textColorToken: "accent",
|
|
10471
|
-
borderRadius: "rounded-none",
|
|
10472
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
10473
|
-
sizes: {
|
|
10474
|
-
sm: { padding: "0.25rem 0" },
|
|
10475
|
-
md: { padding: "0.5rem 0" },
|
|
10476
|
-
lg: { padding: "0.625rem 0" },
|
|
10477
|
-
xl: { padding: "0.75rem 0" }
|
|
10478
|
-
},
|
|
10479
|
-
effects: {
|
|
10480
|
-
base: [
|
|
10481
|
-
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
|
|
10482
|
-
]
|
|
10483
|
-
}
|
|
10484
|
-
},
|
|
10485
|
-
{
|
|
10486
|
-
id: "ghost",
|
|
10487
|
-
name: "Ghost",
|
|
10488
|
-
enabled: true,
|
|
10489
|
-
priority: 3,
|
|
10490
|
-
background: { type: "transparent" },
|
|
10491
|
-
textColorToken: "mutedText",
|
|
10492
|
-
borderRadius: "rounded-none",
|
|
10493
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
10494
|
-
sizes: {
|
|
10495
|
-
sm: { padding: "0.25rem 0" },
|
|
10496
|
-
md: { padding: "0.5rem 0" },
|
|
10497
|
-
lg: { padding: "0.625rem 0" },
|
|
10498
|
-
xl: { padding: "0.75rem 0" }
|
|
10499
|
-
},
|
|
10500
|
-
effects: {
|
|
10501
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
|
|
10502
|
-
}
|
|
10503
|
-
}
|
|
10504
|
-
]
|
|
10505
|
-
}
|
|
10506
|
-
});
|
|
10507
|
-
|
|
10508
|
-
// ../theme-core/src/buttons/personalities/ink-stamp.ts
|
|
10509
|
-
var inkStamp = defineButtonPersonality({
|
|
10510
|
-
id: "ink-stamp",
|
|
10511
|
-
name: "Ink Stamp",
|
|
10512
|
-
description: "Hand-stamped block-print buttons with a slight lift on hover.",
|
|
10513
|
-
tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
|
|
10514
|
-
buttonSystem: {
|
|
10515
|
-
global: {
|
|
10516
|
-
cornerStyle: "rounded",
|
|
10517
|
-
shadow: "none",
|
|
10518
|
-
textTransform: "uppercase",
|
|
10519
|
-
fontWeight: 600,
|
|
10520
|
-
borderWidth: 1,
|
|
10521
|
-
hoverTransform: "none",
|
|
10522
|
-
hoverColor: "none",
|
|
10523
|
-
letterSpacing: "loose"
|
|
10524
|
-
},
|
|
10525
9969
|
sizes: {
|
|
10526
|
-
sm: { padding: "0.
|
|
10527
|
-
md: { padding: "0.
|
|
10528
|
-
lg: { padding: "
|
|
10529
|
-
xl: { padding: "1.
|
|
9970
|
+
sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
|
|
9971
|
+
md: { padding: "0.875rem 2.25rem" },
|
|
9972
|
+
lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
|
|
9973
|
+
xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
|
|
10530
9974
|
},
|
|
10531
9975
|
variants: [
|
|
10532
9976
|
{
|
|
@@ -10536,13 +9980,12 @@ var inkStamp = defineButtonPersonality({
|
|
|
10536
9980
|
priority: 1,
|
|
10537
9981
|
background: { type: "solid", colorToken: "primary" },
|
|
10538
9982
|
textColorToken: "primaryForeground",
|
|
10539
|
-
borderRadius: "rounded-
|
|
9983
|
+
borderRadius: "rounded-full",
|
|
10540
9984
|
effects: {
|
|
10541
9985
|
hover: [
|
|
10542
|
-
{ effectId: "
|
|
10543
|
-
{ effectId: "
|
|
10544
|
-
]
|
|
10545
|
-
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
9986
|
+
{ effectId: "scale-up", options: { scale: "1.03" } },
|
|
9987
|
+
{ effectId: "drop-shadow", options: { intensity: "medium" } }
|
|
9988
|
+
]
|
|
10546
9989
|
}
|
|
10547
9990
|
},
|
|
10548
9991
|
{
|
|
@@ -10552,10 +9995,10 @@ var inkStamp = defineButtonPersonality({
|
|
|
10552
9995
|
priority: 2,
|
|
10553
9996
|
background: { type: "transparent" },
|
|
10554
9997
|
textColorToken: "primary",
|
|
10555
|
-
borderRadius: "rounded-
|
|
10556
|
-
border: { widthClass: "border-2", colorToken: "
|
|
9998
|
+
borderRadius: "rounded-full",
|
|
9999
|
+
border: { widthClass: "border-2", colorToken: "accent" },
|
|
10557
10000
|
effects: {
|
|
10558
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "
|
|
10001
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "accent" } }]
|
|
10559
10002
|
}
|
|
10560
10003
|
},
|
|
10561
10004
|
{
|
|
@@ -10565,8 +10008,8 @@ var inkStamp = defineButtonPersonality({
|
|
|
10565
10008
|
priority: 3,
|
|
10566
10009
|
background: { type: "transparent" },
|
|
10567
10010
|
textColorToken: "text",
|
|
10568
|
-
borderRadius: "rounded-
|
|
10569
|
-
border: { widthClass: "border
|
|
10011
|
+
borderRadius: "rounded-full",
|
|
10012
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
10570
10013
|
effects: {
|
|
10571
10014
|
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10572
10015
|
}
|
|
@@ -10577,44 +10020,38 @@ var inkStamp = defineButtonPersonality({
|
|
|
10577
10020
|
enabled: true,
|
|
10578
10021
|
priority: 3,
|
|
10579
10022
|
background: { type: "transparent" },
|
|
10580
|
-
textColorToken: "
|
|
10581
|
-
borderRadius: "rounded-
|
|
10023
|
+
textColorToken: "primary",
|
|
10024
|
+
borderRadius: "rounded-full",
|
|
10582
10025
|
sizes: {
|
|
10583
|
-
sm: { padding: "0.375rem 0", fontSize: "text-
|
|
10584
|
-
md: { padding: "0.5rem
|
|
10585
|
-
lg: { padding: "0.625rem
|
|
10586
|
-
xl: { padding: "0.75rem
|
|
10026
|
+
sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
|
|
10027
|
+
md: { padding: "0.5rem 1rem" },
|
|
10028
|
+
lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
|
|
10029
|
+
xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
|
|
10587
10030
|
},
|
|
10588
10031
|
effects: {
|
|
10589
|
-
|
|
10032
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
|
|
10590
10033
|
}
|
|
10591
10034
|
}
|
|
10592
10035
|
]
|
|
10593
10036
|
}
|
|
10594
10037
|
});
|
|
10595
10038
|
|
|
10596
|
-
// ../theme-core/src/buttons/personalities/
|
|
10597
|
-
var
|
|
10598
|
-
id: "
|
|
10599
|
-
name: "
|
|
10600
|
-
description: "
|
|
10601
|
-
tags: { tone: "classic", energy: "calm", motion: "
|
|
10039
|
+
// ../theme-core/src/buttons/personalities/soft-pill.ts
|
|
10040
|
+
var softPill = defineButtonPersonality({
|
|
10041
|
+
id: "soft-pill",
|
|
10042
|
+
name: "Soft Pill",
|
|
10043
|
+
description: "Rounded pills with a gentle lift on hover. Quietly modern.",
|
|
10044
|
+
tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
|
|
10602
10045
|
buttonSystem: {
|
|
10603
10046
|
global: {
|
|
10604
10047
|
cornerStyle: "pill",
|
|
10605
|
-
shadow: "
|
|
10048
|
+
shadow: "low",
|
|
10606
10049
|
textTransform: "none",
|
|
10607
10050
|
fontWeight: 500,
|
|
10608
10051
|
borderWidth: 2,
|
|
10609
|
-
hoverTransform: "
|
|
10052
|
+
hoverTransform: "lift",
|
|
10610
10053
|
hoverColor: "none"
|
|
10611
10054
|
},
|
|
10612
|
-
sizes: {
|
|
10613
|
-
sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
|
|
10614
|
-
md: { padding: "0.875rem 2.25rem" },
|
|
10615
|
-
lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
|
|
10616
|
-
xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
|
|
10617
|
-
},
|
|
10618
10055
|
variants: [
|
|
10619
10056
|
{
|
|
10620
10057
|
id: "primary",
|
|
@@ -10624,11 +10061,10 @@ var pebble = defineButtonPersonality({
|
|
|
10624
10061
|
background: { type: "solid", colorToken: "primary" },
|
|
10625
10062
|
textColorToken: "primaryForeground",
|
|
10626
10063
|
borderRadius: "rounded-full",
|
|
10064
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
10627
10065
|
effects: {
|
|
10628
|
-
hover: [
|
|
10629
|
-
|
|
10630
|
-
{ effectId: "drop-shadow", options: { intensity: "medium" } }
|
|
10631
|
-
]
|
|
10066
|
+
hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
|
|
10067
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
10632
10068
|
}
|
|
10633
10069
|
},
|
|
10634
10070
|
{
|
|
@@ -10639,9 +10075,9 @@ var pebble = defineButtonPersonality({
|
|
|
10639
10075
|
background: { type: "transparent" },
|
|
10640
10076
|
textColorToken: "primary",
|
|
10641
10077
|
borderRadius: "rounded-full",
|
|
10642
|
-
border: { widthClass: "border-2", colorToken: "
|
|
10078
|
+
border: { widthClass: "border-2", colorToken: "primary" },
|
|
10643
10079
|
effects: {
|
|
10644
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "
|
|
10080
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10645
10081
|
}
|
|
10646
10082
|
},
|
|
10647
10083
|
{
|
|
@@ -10663,86 +10099,7 @@ var pebble = defineButtonPersonality({
|
|
|
10663
10099
|
enabled: true,
|
|
10664
10100
|
priority: 3,
|
|
10665
10101
|
background: { type: "transparent" },
|
|
10666
|
-
textColorToken: "
|
|
10667
|
-
borderRadius: "rounded-full",
|
|
10668
|
-
sizes: {
|
|
10669
|
-
sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
|
|
10670
|
-
md: { padding: "0.5rem 1rem" },
|
|
10671
|
-
lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
|
|
10672
|
-
xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
|
|
10673
|
-
},
|
|
10674
|
-
effects: {
|
|
10675
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
|
|
10676
|
-
}
|
|
10677
|
-
}
|
|
10678
|
-
]
|
|
10679
|
-
}
|
|
10680
|
-
});
|
|
10681
|
-
|
|
10682
|
-
// ../theme-core/src/buttons/personalities/soft-pill.ts
|
|
10683
|
-
var softPill = defineButtonPersonality({
|
|
10684
|
-
id: "soft-pill",
|
|
10685
|
-
name: "Soft Pill",
|
|
10686
|
-
description: "Rounded pills with a gentle lift on hover. Quietly modern.",
|
|
10687
|
-
tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
|
|
10688
|
-
buttonSystem: {
|
|
10689
|
-
global: {
|
|
10690
|
-
cornerStyle: "pill",
|
|
10691
|
-
shadow: "low",
|
|
10692
|
-
textTransform: "none",
|
|
10693
|
-
fontWeight: 500,
|
|
10694
|
-
borderWidth: 2,
|
|
10695
|
-
hoverTransform: "lift",
|
|
10696
|
-
hoverColor: "none"
|
|
10697
|
-
},
|
|
10698
|
-
variants: [
|
|
10699
|
-
{
|
|
10700
|
-
id: "primary",
|
|
10701
|
-
name: "Primary",
|
|
10702
|
-
enabled: true,
|
|
10703
|
-
priority: 1,
|
|
10704
|
-
background: { type: "solid", colorToken: "primary" },
|
|
10705
|
-
textColorToken: "primaryForeground",
|
|
10706
|
-
borderRadius: "rounded-full",
|
|
10707
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
10708
|
-
effects: {
|
|
10709
|
-
hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
|
|
10710
|
-
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
10711
|
-
}
|
|
10712
|
-
},
|
|
10713
|
-
{
|
|
10714
|
-
id: "secondary",
|
|
10715
|
-
name: "Secondary",
|
|
10716
|
-
enabled: true,
|
|
10717
|
-
priority: 2,
|
|
10718
|
-
background: { type: "transparent" },
|
|
10719
|
-
textColorToken: "primary",
|
|
10720
|
-
borderRadius: "rounded-full",
|
|
10721
|
-
border: { widthClass: "border-2", colorToken: "primary" },
|
|
10722
|
-
effects: {
|
|
10723
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10724
|
-
}
|
|
10725
|
-
},
|
|
10726
|
-
{
|
|
10727
|
-
id: "outline",
|
|
10728
|
-
name: "Outline",
|
|
10729
|
-
enabled: true,
|
|
10730
|
-
priority: 3,
|
|
10731
|
-
background: { type: "transparent" },
|
|
10732
|
-
textColorToken: "text",
|
|
10733
|
-
borderRadius: "rounded-full",
|
|
10734
|
-
border: { widthClass: "border", colorToken: "border" },
|
|
10735
|
-
effects: {
|
|
10736
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
10737
|
-
}
|
|
10738
|
-
},
|
|
10739
|
-
{
|
|
10740
|
-
id: "ghost",
|
|
10741
|
-
name: "Ghost",
|
|
10742
|
-
enabled: true,
|
|
10743
|
-
priority: 3,
|
|
10744
|
-
background: { type: "transparent" },
|
|
10745
|
-
textColorToken: "text",
|
|
10102
|
+
textColorToken: "text",
|
|
10746
10103
|
borderRadius: "rounded-full",
|
|
10747
10104
|
effects: {
|
|
10748
10105
|
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
@@ -10765,49 +10122,101 @@ var personalitiesById = new Map(
|
|
|
10765
10122
|
buttonPersonalities.map((p) => [p.id, p])
|
|
10766
10123
|
);
|
|
10767
10124
|
|
|
10125
|
+
// ../theme-core/src/palette/variants/types.ts
|
|
10126
|
+
import { z as z23 } from "zod";
|
|
10127
|
+
|
|
10128
|
+
// ../theme-core/src/schema.ts
|
|
10129
|
+
import { z as z22 } from "zod";
|
|
10130
|
+
|
|
10131
|
+
// ../theme-core/src/lib/media.ts
|
|
10132
|
+
import z12 from "zod";
|
|
10133
|
+
var hotspotSchema = z12.object({
|
|
10134
|
+
x: z12.number().min(0).max(1),
|
|
10135
|
+
y: z12.number().min(0).max(1),
|
|
10136
|
+
radius: z12.number().optional()
|
|
10137
|
+
});
|
|
10138
|
+
var rotationSchema = z12.union([z12.literal(0), z12.literal(90), z12.literal(180), z12.literal(270)]);
|
|
10139
|
+
var rectSchema = z12.tuple([z12.number(), z12.number(), z12.number(), z12.number()]);
|
|
10140
|
+
var aspectCropSchema = z12.object({
|
|
10141
|
+
aspect: z12.preprocess((value) => value == null ? void 0 : value, z12.string().optional()),
|
|
10142
|
+
rect: z12.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
10143
|
+
hotspot: z12.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
10144
|
+
rotation: z12.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
10145
|
+
});
|
|
10146
|
+
var transformSchema = z12.object({
|
|
10147
|
+
aspectCrops: z12.preprocess((value) => {
|
|
10148
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
10149
|
+
return void 0;
|
|
10150
|
+
}
|
|
10151
|
+
return value;
|
|
10152
|
+
}, z12.record(z12.string(), aspectCropSchema.catch({}))).optional(),
|
|
10153
|
+
rect: rectSchema.optional(),
|
|
10154
|
+
hotspot: hotspotSchema.optional(),
|
|
10155
|
+
rotation: rotationSchema.optional()
|
|
10156
|
+
});
|
|
10157
|
+
var mediaSchema = z12.object({
|
|
10158
|
+
type: z12.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
|
|
10159
|
+
purpose: z12.string().optional(),
|
|
10160
|
+
placeholder: z12.boolean().default(true).optional(),
|
|
10161
|
+
assetId: z12.string().optional(),
|
|
10162
|
+
identifier: z12.string().optional(),
|
|
10163
|
+
src: z12.string().optional(),
|
|
10164
|
+
alt: z12.string().optional(),
|
|
10165
|
+
filename: z12.string().optional(),
|
|
10166
|
+
mimeType: z12.string().optional(),
|
|
10167
|
+
width: z12.number().optional(),
|
|
10168
|
+
height: z12.number().optional(),
|
|
10169
|
+
storageBucket: z12.string().optional(),
|
|
10170
|
+
storagePath: z12.string().optional(),
|
|
10171
|
+
transform: transformSchema.optional()
|
|
10172
|
+
});
|
|
10173
|
+
|
|
10174
|
+
// ../theme-core/src/buttons/generateButtonCss.ts
|
|
10175
|
+
var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
10176
|
+
|
|
10768
10177
|
// ../theme-core/src/cards/types.ts
|
|
10769
|
-
import { z as
|
|
10770
|
-
var cardSpacingSchema =
|
|
10771
|
-
var gradientDirectionSchema2 =
|
|
10772
|
-
var cardBackgroundSchema =
|
|
10773
|
-
|
|
10774
|
-
|
|
10775
|
-
type:
|
|
10776
|
-
fromToken:
|
|
10777
|
-
toToken:
|
|
10178
|
+
import { z as z13 } from "zod";
|
|
10179
|
+
var cardSpacingSchema = z13.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
|
|
10180
|
+
var gradientDirectionSchema2 = z13.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
10181
|
+
var cardBackgroundSchema = z13.discriminatedUnion("type", [
|
|
10182
|
+
z13.object({ type: z13.literal("solid"), colorToken: z13.string() }),
|
|
10183
|
+
z13.object({
|
|
10184
|
+
type: z13.literal("gradient"),
|
|
10185
|
+
fromToken: z13.string(),
|
|
10186
|
+
toToken: z13.string(),
|
|
10778
10187
|
direction: gradientDirectionSchema2
|
|
10779
10188
|
}),
|
|
10780
|
-
|
|
10189
|
+
z13.object({ type: z13.literal("transparent") })
|
|
10781
10190
|
]);
|
|
10782
|
-
var cardBorderSchema =
|
|
10783
|
-
widthClass:
|
|
10784
|
-
colorToken:
|
|
10785
|
-
});
|
|
10786
|
-
var cardVariantSchema =
|
|
10787
|
-
id:
|
|
10788
|
-
name:
|
|
10789
|
-
enabled:
|
|
10790
|
-
priority:
|
|
10191
|
+
var cardBorderSchema = z13.object({
|
|
10192
|
+
widthClass: z13.string(),
|
|
10193
|
+
colorToken: z13.string()
|
|
10194
|
+
});
|
|
10195
|
+
var cardVariantSchema = z13.object({
|
|
10196
|
+
id: z13.string(),
|
|
10197
|
+
name: z13.string().min(1).max(20),
|
|
10198
|
+
enabled: z13.boolean(),
|
|
10199
|
+
priority: z13.union([z13.literal(1), z13.literal(2), z13.literal(3)]),
|
|
10791
10200
|
// Appearance (token-based)
|
|
10792
10201
|
background: cardBackgroundSchema,
|
|
10793
10202
|
spacing: cardSpacingSchema,
|
|
10794
10203
|
// Optional overrides (uses theme defaults if not specified)
|
|
10795
|
-
shadow:
|
|
10796
|
-
elevation:
|
|
10797
|
-
softness:
|
|
10798
|
-
position:
|
|
10204
|
+
shadow: z13.object({
|
|
10205
|
+
elevation: z13.enum(["none", "low", "medium", "high"]),
|
|
10206
|
+
softness: z13.enum(["crisp", "soft", "hard"]).nullable(),
|
|
10207
|
+
position: z13.enum(["bottom", "bottom-right"]).default("bottom")
|
|
10799
10208
|
}).optional(),
|
|
10800
|
-
corners:
|
|
10209
|
+
corners: z13.enum(["square", "soft", "rounded", "pill"]).optional(),
|
|
10801
10210
|
// Border (optional)
|
|
10802
10211
|
border: cardBorderSchema.optional()
|
|
10803
10212
|
});
|
|
10804
|
-
var cardSystemSchema =
|
|
10805
|
-
variants:
|
|
10213
|
+
var cardSystemSchema = z13.object({
|
|
10214
|
+
variants: z13.array(cardVariantSchema).min(1).max(3)
|
|
10806
10215
|
});
|
|
10807
10216
|
|
|
10808
10217
|
// ../theme-core/src/accordions/types.ts
|
|
10809
|
-
import { z as
|
|
10810
|
-
var accordionIconSchema =
|
|
10218
|
+
import { z as z14 } from "zod";
|
|
10219
|
+
var accordionIconSchema = z14.enum([
|
|
10811
10220
|
"plus-minus",
|
|
10812
10221
|
// + becomes - (swap or rotate 90°)
|
|
10813
10222
|
"chevron",
|
|
@@ -10819,180 +10228,180 @@ var accordionIconSchema = z17.enum([
|
|
|
10819
10228
|
"circle-plus-minus"
|
|
10820
10229
|
// ⊕ becomes ⊖ (swap with fade)
|
|
10821
10230
|
]);
|
|
10822
|
-
var accordionSystemSchema =
|
|
10231
|
+
var accordionSystemSchema = z14.object({
|
|
10823
10232
|
// Visual styling (solid color only - gradients can be added later if needed)
|
|
10824
|
-
background:
|
|
10825
|
-
type:
|
|
10826
|
-
colorToken:
|
|
10233
|
+
background: z14.object({
|
|
10234
|
+
type: z14.literal("solid"),
|
|
10235
|
+
colorToken: z14.string()
|
|
10827
10236
|
}),
|
|
10828
10237
|
// Spacing (padding inside items)
|
|
10829
|
-
spacing:
|
|
10238
|
+
spacing: z14.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
|
|
10830
10239
|
// Border radius (null = inherit from theme.corners)
|
|
10831
|
-
corners:
|
|
10240
|
+
corners: z14.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
10832
10241
|
// Border styling (null = inherit from theme.border)
|
|
10833
|
-
border:
|
|
10834
|
-
widthClass:
|
|
10242
|
+
border: z14.object({
|
|
10243
|
+
widthClass: z14.string(),
|
|
10835
10244
|
// e.g., 'border', 'border-2', 'border-0'
|
|
10836
|
-
colorToken:
|
|
10245
|
+
colorToken: z14.string()
|
|
10837
10246
|
}).nullable(),
|
|
10838
10247
|
// Shadow (null = inherit from theme.shadow)
|
|
10839
|
-
shadow:
|
|
10840
|
-
elevation:
|
|
10841
|
-
softness:
|
|
10842
|
-
position:
|
|
10248
|
+
shadow: z14.object({
|
|
10249
|
+
elevation: z14.enum(["none", "low", "medium", "high"]),
|
|
10250
|
+
softness: z14.enum(["soft", "crisp", "hard"]).nullable(),
|
|
10251
|
+
position: z14.enum(["bottom", "bottom-right"])
|
|
10843
10252
|
}).nullable(),
|
|
10844
10253
|
// Icon style and animation
|
|
10845
|
-
icon:
|
|
10254
|
+
icon: z14.object({
|
|
10846
10255
|
style: accordionIconSchema,
|
|
10847
|
-
position:
|
|
10848
|
-
size:
|
|
10256
|
+
position: z14.enum(["left", "right"]),
|
|
10257
|
+
size: z14.enum(["sm", "md", "lg"])
|
|
10849
10258
|
}),
|
|
10850
10259
|
// Trigger (question) styling
|
|
10851
|
-
trigger:
|
|
10852
|
-
textColorToken:
|
|
10853
|
-
fontWeight:
|
|
10260
|
+
trigger: z14.object({
|
|
10261
|
+
textColorToken: z14.string(),
|
|
10262
|
+
fontWeight: z14.enum(["regular", "medium", "semibold", "bold"]).nullable()
|
|
10854
10263
|
// null = inherit from theme
|
|
10855
10264
|
}),
|
|
10856
10265
|
// Hover state styling
|
|
10857
|
-
hover:
|
|
10858
|
-
backgroundColorToken:
|
|
10859
|
-
textColorToken:
|
|
10860
|
-
borderColorToken:
|
|
10266
|
+
hover: z14.object({
|
|
10267
|
+
backgroundColorToken: z14.string().optional(),
|
|
10268
|
+
textColorToken: z14.string().optional(),
|
|
10269
|
+
borderColorToken: z14.string().optional()
|
|
10861
10270
|
}),
|
|
10862
10271
|
// Content (answer) styling
|
|
10863
|
-
content:
|
|
10864
|
-
textColorToken:
|
|
10272
|
+
content: z14.object({
|
|
10273
|
+
textColorToken: z14.string()
|
|
10865
10274
|
})
|
|
10866
10275
|
});
|
|
10867
10276
|
|
|
10868
10277
|
// ../theme-core/src/inputs/types.ts
|
|
10869
|
-
import { z as
|
|
10870
|
-
var inputSystemSchema =
|
|
10278
|
+
import { z as z15 } from "zod";
|
|
10279
|
+
var inputSystemSchema = z15.object({
|
|
10871
10280
|
// Base styling (applied to all inputs)
|
|
10872
|
-
base:
|
|
10873
|
-
background:
|
|
10874
|
-
|
|
10875
|
-
type:
|
|
10876
|
-
colorToken:
|
|
10281
|
+
base: z15.object({
|
|
10282
|
+
background: z15.union([
|
|
10283
|
+
z15.object({
|
|
10284
|
+
type: z15.literal("solid"),
|
|
10285
|
+
colorToken: z15.string()
|
|
10877
10286
|
}),
|
|
10878
|
-
|
|
10879
|
-
type:
|
|
10287
|
+
z15.object({
|
|
10288
|
+
type: z15.literal("transparent")
|
|
10880
10289
|
})
|
|
10881
10290
|
]),
|
|
10882
|
-
textColorToken:
|
|
10883
|
-
border:
|
|
10884
|
-
widthClass:
|
|
10291
|
+
textColorToken: z15.string(),
|
|
10292
|
+
border: z15.object({
|
|
10293
|
+
widthClass: z15.string(),
|
|
10885
10294
|
// e.g., 'border', 'border-2'
|
|
10886
|
-
colorToken:
|
|
10887
|
-
style:
|
|
10295
|
+
colorToken: z15.string(),
|
|
10296
|
+
style: z15.enum(["all", "underline"]).optional()
|
|
10888
10297
|
}),
|
|
10889
|
-
corners:
|
|
10298
|
+
corners: z15.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
10890
10299
|
// null = inherit from theme.corners
|
|
10891
|
-
shadow:
|
|
10892
|
-
elevation:
|
|
10893
|
-
softness:
|
|
10300
|
+
shadow: z15.object({
|
|
10301
|
+
elevation: z15.enum(["none", "low", "medium"]),
|
|
10302
|
+
softness: z15.enum(["soft", "crisp", "hard"]).nullable()
|
|
10894
10303
|
}).nullable(),
|
|
10895
|
-
spacing:
|
|
10304
|
+
spacing: z15.enum(["compact", "cozy", "medium", "comfortable"]),
|
|
10896
10305
|
// padding inside inputs
|
|
10897
|
-
fontSize:
|
|
10306
|
+
fontSize: z15.enum(["sm", "base", "lg"])
|
|
10898
10307
|
}),
|
|
10899
10308
|
// Label styling
|
|
10900
|
-
label:
|
|
10901
|
-
textColorToken:
|
|
10902
|
-
fontWeight:
|
|
10903
|
-
fontSize:
|
|
10904
|
-
textTransform:
|
|
10905
|
-
letterSpacing:
|
|
10906
|
-
opacity:
|
|
10309
|
+
label: z15.object({
|
|
10310
|
+
textColorToken: z15.string(),
|
|
10311
|
+
fontWeight: z15.enum(["regular", "medium", "semibold", "bold", "black"]),
|
|
10312
|
+
fontSize: z15.enum(["2xs", "xs", "sm", "base"]),
|
|
10313
|
+
textTransform: z15.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
|
|
10314
|
+
letterSpacing: z15.enum(["normal", "wide", "wider", "widest"]).optional(),
|
|
10315
|
+
opacity: z15.number().min(0.2).max(1).optional()
|
|
10907
10316
|
}),
|
|
10908
10317
|
// Focus state
|
|
10909
|
-
focus:
|
|
10910
|
-
ringColorToken:
|
|
10911
|
-
ringWidth:
|
|
10912
|
-
borderColorToken:
|
|
10318
|
+
focus: z15.object({
|
|
10319
|
+
ringColorToken: z15.string(),
|
|
10320
|
+
ringWidth: z15.enum(["0", "1", "2", "3"]),
|
|
10321
|
+
borderColorToken: z15.string().optional()
|
|
10913
10322
|
// Change border color on focus
|
|
10914
10323
|
}),
|
|
10915
10324
|
// Error state (for validation feedback)
|
|
10916
|
-
error:
|
|
10917
|
-
borderColorToken:
|
|
10918
|
-
textColorToken:
|
|
10325
|
+
error: z15.object({
|
|
10326
|
+
borderColorToken: z15.string(),
|
|
10327
|
+
textColorToken: z15.string()
|
|
10919
10328
|
}),
|
|
10920
10329
|
// Disabled state
|
|
10921
|
-
disabled:
|
|
10922
|
-
backgroundColorToken:
|
|
10923
|
-
textColorToken:
|
|
10924
|
-
opacity:
|
|
10330
|
+
disabled: z15.object({
|
|
10331
|
+
backgroundColorToken: z15.string(),
|
|
10332
|
+
textColorToken: z15.string(),
|
|
10333
|
+
opacity: z15.number().min(0.3).max(0.7)
|
|
10925
10334
|
})
|
|
10926
10335
|
});
|
|
10927
10336
|
|
|
10928
10337
|
// ../theme-core/src/gradients/types.ts
|
|
10929
|
-
import { z as
|
|
10930
|
-
var gradientStopSchema =
|
|
10931
|
-
color:
|
|
10338
|
+
import { z as z16 } from "zod";
|
|
10339
|
+
var gradientStopSchema = z16.object({
|
|
10340
|
+
color: z16.string(),
|
|
10932
10341
|
// Theme color token name (e.g., 'primary-500')
|
|
10933
|
-
position:
|
|
10342
|
+
position: z16.number().min(0).max(100)
|
|
10934
10343
|
// Percentage 0-100
|
|
10935
10344
|
});
|
|
10936
|
-
var gradientConfigSchema =
|
|
10937
|
-
type:
|
|
10938
|
-
angle:
|
|
10345
|
+
var gradientConfigSchema = z16.object({
|
|
10346
|
+
type: z16.enum(["linear", "radial"]),
|
|
10347
|
+
angle: z16.number().min(0).max(360).optional(),
|
|
10939
10348
|
// For linear gradients (degrees)
|
|
10940
|
-
position:
|
|
10349
|
+
position: z16.string().optional(),
|
|
10941
10350
|
// For radial gradients ('center', 'top left', etc.)
|
|
10942
|
-
stops:
|
|
10351
|
+
stops: z16.array(gradientStopSchema).min(2)
|
|
10943
10352
|
});
|
|
10944
10353
|
|
|
10945
10354
|
// ../theme-core/src/navigation/types.ts
|
|
10946
|
-
import { z as
|
|
10355
|
+
import { z as z18 } from "zod";
|
|
10947
10356
|
|
|
10948
10357
|
// ../theme-core/src/interactive/baseSchema.ts
|
|
10949
|
-
import { z as
|
|
10950
|
-
var interactiveTypographySchema =
|
|
10358
|
+
import { z as z17 } from "zod";
|
|
10359
|
+
var interactiveTypographySchema = z17.object({
|
|
10951
10360
|
/** Font family source */
|
|
10952
|
-
typography:
|
|
10361
|
+
typography: z17.enum(["body", "heading"]).default("body"),
|
|
10953
10362
|
/** Font weight */
|
|
10954
|
-
fontWeight:
|
|
10363
|
+
fontWeight: z17.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
|
|
10955
10364
|
/** Text transform */
|
|
10956
|
-
textTransform:
|
|
10365
|
+
textTransform: z17.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
10957
10366
|
/** Italic style */
|
|
10958
|
-
italic:
|
|
10367
|
+
italic: z17.boolean().default(false)
|
|
10959
10368
|
});
|
|
10960
|
-
var effectApplicationSchema2 =
|
|
10369
|
+
var effectApplicationSchema2 = z17.object({
|
|
10961
10370
|
/** Effect preset ID */
|
|
10962
|
-
effectId:
|
|
10371
|
+
effectId: z17.string(),
|
|
10963
10372
|
/** User-provided customization options */
|
|
10964
|
-
options:
|
|
10373
|
+
options: z17.record(z17.string(), z17.any()).optional()
|
|
10965
10374
|
});
|
|
10966
|
-
var effectCompositionSchema =
|
|
10375
|
+
var effectCompositionSchema = z17.object({
|
|
10967
10376
|
/** Effects always applied */
|
|
10968
|
-
base:
|
|
10377
|
+
base: z17.array(effectApplicationSchema2).optional(),
|
|
10969
10378
|
/** Effects applied on hover */
|
|
10970
|
-
hover:
|
|
10379
|
+
hover: z17.array(effectApplicationSchema2).optional(),
|
|
10971
10380
|
/** Effects applied on active/pressed */
|
|
10972
|
-
active:
|
|
10381
|
+
active: z17.array(effectApplicationSchema2).optional(),
|
|
10973
10382
|
/** Effects applied on focus */
|
|
10974
|
-
focus:
|
|
10383
|
+
focus: z17.array(effectApplicationSchema2).optional()
|
|
10975
10384
|
});
|
|
10976
10385
|
|
|
10977
10386
|
// ../theme-core/src/navigation/types.ts
|
|
10978
|
-
var navLinkPaddingSchema =
|
|
10979
|
-
var navLinkPaddingXSchema =
|
|
10980
|
-
var navLinkBorderRadiusSchema =
|
|
10981
|
-
var navLinkTextSizeSchema =
|
|
10982
|
-
var navLinkLetterSpacingSchema =
|
|
10983
|
-
var navLinkStyleSchema =
|
|
10387
|
+
var navLinkPaddingSchema = z18.enum(["none", "compact", "default"]);
|
|
10388
|
+
var navLinkPaddingXSchema = z18.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
10389
|
+
var navLinkBorderRadiusSchema = z18.enum(["none", "sm", "md", "full"]);
|
|
10390
|
+
var navLinkTextSizeSchema = z18.enum(["xs", "sm", "base", "lg"]);
|
|
10391
|
+
var navLinkLetterSpacingSchema = z18.enum(["normal", "wide", "wider", "widest"]);
|
|
10392
|
+
var navLinkStyleSchema = z18.object({
|
|
10984
10393
|
/** Display name for the style */
|
|
10985
|
-
name:
|
|
10394
|
+
name: z18.string().min(1).max(30).optional(),
|
|
10986
10395
|
/** Typography settings (inherited from interactive base) */
|
|
10987
10396
|
...interactiveTypographySchema.shape,
|
|
10988
10397
|
/** Text color token */
|
|
10989
|
-
colorToken:
|
|
10398
|
+
colorToken: z18.string().default("text"),
|
|
10990
10399
|
/** Optional text size override */
|
|
10991
10400
|
textSize: navLinkTextSizeSchema.optional(),
|
|
10992
10401
|
/** Optional letter spacing override */
|
|
10993
10402
|
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
10994
10403
|
/** Hover/active color token (for color-change effects) */
|
|
10995
|
-
hoverColorToken:
|
|
10404
|
+
hoverColorToken: z18.string().nullable().optional(),
|
|
10996
10405
|
/** Padding preset */
|
|
10997
10406
|
padding: navLinkPaddingSchema.default("compact"),
|
|
10998
10407
|
/** Horizontal padding override (overrides horizontal component of padding preset) */
|
|
@@ -11004,7 +10413,7 @@ var navLinkStyleSchema = z21.object({
|
|
|
11004
10413
|
});
|
|
11005
10414
|
|
|
11006
10415
|
// ../theme-core/src/customCss/validation.ts
|
|
11007
|
-
import { z as
|
|
10416
|
+
import { z as z19 } from "zod";
|
|
11008
10417
|
var FORBIDDEN_SELECTORS = [":root", "html", "body"];
|
|
11009
10418
|
var UNIVERSAL_SELECTOR = "*";
|
|
11010
10419
|
var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
|
|
@@ -11046,7 +10455,7 @@ function containsForbiddenSelector(selector) {
|
|
|
11046
10455
|
}
|
|
11047
10456
|
return false;
|
|
11048
10457
|
}
|
|
11049
|
-
var selectorSchema =
|
|
10458
|
+
var selectorSchema = z19.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
|
|
11050
10459
|
(s) => !containsForbiddenSelector(s),
|
|
11051
10460
|
{ message: "Global selectors (:root, html, body, *) are not allowed" }
|
|
11052
10461
|
);
|
|
@@ -11056,38 +10465,38 @@ function containsRemoteUrl(value) {
|
|
|
11056
10465
|
function containsJavascriptUrl(value) {
|
|
11057
10466
|
return JAVASCRIPT_URL_PATTERN.test(value);
|
|
11058
10467
|
}
|
|
11059
|
-
var declarationValueSchema =
|
|
10468
|
+
var declarationValueSchema = z19.string().max(500, "Declaration value too long (max 500 characters)").refine(
|
|
11060
10469
|
(v) => !containsRemoteUrl(v),
|
|
11061
10470
|
{ message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
|
|
11062
10471
|
).refine(
|
|
11063
10472
|
(v) => !containsJavascriptUrl(v),
|
|
11064
10473
|
{ message: "javascript: URLs are not allowed" }
|
|
11065
10474
|
);
|
|
11066
|
-
var declarationsSchema =
|
|
11067
|
-
|
|
10475
|
+
var declarationsSchema = z19.record(
|
|
10476
|
+
z19.string().min(1).max(100),
|
|
11068
10477
|
// property name
|
|
11069
10478
|
declarationValueSchema
|
|
11070
10479
|
// property value
|
|
11071
10480
|
);
|
|
11072
|
-
var customCssRuleSchema =
|
|
11073
|
-
id:
|
|
10481
|
+
var customCssRuleSchema = z19.object({
|
|
10482
|
+
id: z19.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
|
|
11074
10483
|
selector: selectorSchema,
|
|
11075
10484
|
declarations: declarationsSchema
|
|
11076
10485
|
});
|
|
11077
10486
|
var blockCustomCssRuleSchema = customCssRuleSchema.extend({
|
|
11078
|
-
blockKind:
|
|
10487
|
+
blockKind: z19.string().min(1, "Block kind is required").max(50, "Block kind too long")
|
|
11079
10488
|
});
|
|
11080
|
-
var customCssRulesSchema =
|
|
11081
|
-
var blockCustomCssRulesSchema =
|
|
10489
|
+
var customCssRulesSchema = z19.array(customCssRuleSchema).optional();
|
|
10490
|
+
var blockCustomCssRulesSchema = z19.array(blockCustomCssRuleSchema).optional();
|
|
11082
10491
|
|
|
11083
10492
|
// ../theme-core/src/customCss/atRuleValidation.ts
|
|
11084
|
-
import { z as
|
|
10493
|
+
import { z as z20 } from "zod";
|
|
11085
10494
|
var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
|
|
11086
10495
|
var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
|
|
11087
10496
|
var BLOCKED_AT_RULES = ["@import", "@charset"];
|
|
11088
10497
|
var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
|
|
11089
|
-
var ruleIdSchema =
|
|
11090
|
-
var nestedRuleSchema =
|
|
10498
|
+
var ruleIdSchema = z20.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
|
|
10499
|
+
var nestedRuleSchema = z20.object({
|
|
11091
10500
|
selector: selectorSchema,
|
|
11092
10501
|
declarations: declarationsSchema
|
|
11093
10502
|
});
|
|
@@ -11099,146 +10508,146 @@ function isValidKeyframeOffset(offset) {
|
|
|
11099
10508
|
const value = parseInt(match[1], 10);
|
|
11100
10509
|
return value >= 0 && value <= 100;
|
|
11101
10510
|
}
|
|
11102
|
-
var keyframeOffsetSchema =
|
|
10511
|
+
var keyframeOffsetSchema = z20.string().transform((offset) => offset.trim()).refine(
|
|
11103
10512
|
(offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
|
|
11104
10513
|
{ message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
|
|
11105
10514
|
).refine(
|
|
11106
10515
|
isValidKeyframeOffset,
|
|
11107
10516
|
{ message: "Keyframe offset must be between 0% and 100%" }
|
|
11108
10517
|
);
|
|
11109
|
-
var animationNameSchema =
|
|
10518
|
+
var animationNameSchema = z20.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
|
|
11110
10519
|
(name) => ANIMATION_NAME_PATTERN.test(name),
|
|
11111
10520
|
{ message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
|
|
11112
10521
|
);
|
|
11113
|
-
var keyframeSchema =
|
|
10522
|
+
var keyframeSchema = z20.object({
|
|
11114
10523
|
offset: keyframeOffsetSchema,
|
|
11115
10524
|
declarations: declarationsSchema
|
|
11116
10525
|
});
|
|
11117
|
-
var keyframesAtRuleSchema =
|
|
10526
|
+
var keyframesAtRuleSchema = z20.object({
|
|
11118
10527
|
id: ruleIdSchema,
|
|
11119
|
-
type:
|
|
10528
|
+
type: z20.literal("keyframes"),
|
|
11120
10529
|
name: animationNameSchema,
|
|
11121
|
-
frames:
|
|
10530
|
+
frames: z20.array(keyframeSchema).min(1, "At least one keyframe is required")
|
|
11122
10531
|
});
|
|
11123
|
-
var fontFaceDeclarationsSchema =
|
|
10532
|
+
var fontFaceDeclarationsSchema = z20.record(z20.string().min(1).max(100), declarationValueSchema).refine(
|
|
11124
10533
|
(decls) => "fontFamily" in decls || "font-family" in decls,
|
|
11125
10534
|
{ message: "font-family is required in @font-face" }
|
|
11126
10535
|
);
|
|
11127
|
-
var fontFaceAtRuleSchema =
|
|
10536
|
+
var fontFaceAtRuleSchema = z20.object({
|
|
11128
10537
|
id: ruleIdSchema,
|
|
11129
|
-
type:
|
|
10538
|
+
type: z20.literal("font-face"),
|
|
11130
10539
|
declarations: fontFaceDeclarationsSchema
|
|
11131
10540
|
});
|
|
11132
|
-
var mediaQuerySchema =
|
|
11133
|
-
var mediaAtRuleSchema =
|
|
10541
|
+
var mediaQuerySchema = z20.string().min(1, "Media query is required").max(200, "Media query too long");
|
|
10542
|
+
var mediaAtRuleSchema = z20.object({
|
|
11134
10543
|
id: ruleIdSchema,
|
|
11135
|
-
type:
|
|
10544
|
+
type: z20.literal("media"),
|
|
11136
10545
|
query: mediaQuerySchema,
|
|
11137
|
-
rules:
|
|
10546
|
+
rules: z20.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
11138
10547
|
});
|
|
11139
|
-
var supportsConditionSchema =
|
|
11140
|
-
var supportsAtRuleSchema =
|
|
10548
|
+
var supportsConditionSchema = z20.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
|
|
10549
|
+
var supportsAtRuleSchema = z20.object({
|
|
11141
10550
|
id: ruleIdSchema,
|
|
11142
|
-
type:
|
|
10551
|
+
type: z20.literal("supports"),
|
|
11143
10552
|
condition: supportsConditionSchema,
|
|
11144
|
-
rules:
|
|
10553
|
+
rules: z20.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
11145
10554
|
});
|
|
11146
10555
|
function containsBlockedAtRule(css) {
|
|
11147
10556
|
return BLOCKED_AT_RULE_PATTERN.test(css);
|
|
11148
10557
|
}
|
|
11149
|
-
var rawCssSchema =
|
|
10558
|
+
var rawCssSchema = z20.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
|
|
11150
10559
|
(css) => css.trim().startsWith("@"),
|
|
11151
10560
|
{ message: "Raw at-rule must start with @" }
|
|
11152
10561
|
).refine(
|
|
11153
10562
|
(css) => !containsBlockedAtRule(css),
|
|
11154
10563
|
{ message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
|
|
11155
10564
|
);
|
|
11156
|
-
var rawAtRuleSchema =
|
|
10565
|
+
var rawAtRuleSchema = z20.object({
|
|
11157
10566
|
id: ruleIdSchema,
|
|
11158
|
-
type:
|
|
10567
|
+
type: z20.literal("raw"),
|
|
11159
10568
|
css: rawCssSchema
|
|
11160
10569
|
});
|
|
11161
|
-
var customCssAtRuleSchema =
|
|
10570
|
+
var customCssAtRuleSchema = z20.discriminatedUnion("type", [
|
|
11162
10571
|
keyframesAtRuleSchema,
|
|
11163
10572
|
fontFaceAtRuleSchema,
|
|
11164
10573
|
mediaAtRuleSchema,
|
|
11165
10574
|
supportsAtRuleSchema,
|
|
11166
10575
|
rawAtRuleSchema
|
|
11167
10576
|
]);
|
|
11168
|
-
var customCssAtRulesSchema =
|
|
10577
|
+
var customCssAtRulesSchema = z20.array(customCssAtRuleSchema).optional();
|
|
11169
10578
|
|
|
11170
10579
|
// ../theme-core/src/shared/componentStyles.ts
|
|
11171
|
-
import { z as
|
|
11172
|
-
var componentBorderSchema =
|
|
11173
|
-
width:
|
|
11174
|
-
style:
|
|
11175
|
-
colorToken:
|
|
10580
|
+
import { z as z21 } from "zod";
|
|
10581
|
+
var componentBorderSchema = z21.object({
|
|
10582
|
+
width: z21.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
|
|
10583
|
+
style: z21.enum(["solid", "dashed"]).default("solid"),
|
|
10584
|
+
colorToken: z21.string().optional()
|
|
11176
10585
|
// defaults to "border" if not set
|
|
11177
10586
|
});
|
|
11178
|
-
var componentShadowSchema =
|
|
11179
|
-
elevation:
|
|
10587
|
+
var componentShadowSchema = z21.object({
|
|
10588
|
+
elevation: z21.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
|
|
11180
10589
|
});
|
|
11181
10590
|
|
|
11182
10591
|
// ../theme-core/src/schema.ts
|
|
11183
|
-
var axesSchema =
|
|
11184
|
-
tone:
|
|
11185
|
-
energy:
|
|
11186
|
-
density:
|
|
11187
|
-
mediaBias:
|
|
11188
|
-
conversionBias:
|
|
11189
|
-
motion:
|
|
11190
|
-
});
|
|
11191
|
-
var colourHexString =
|
|
11192
|
-
var paletteColorSchema =
|
|
11193
|
-
name:
|
|
10592
|
+
var axesSchema = z22.object({
|
|
10593
|
+
tone: z22.enum(["minimal", "classic", "bold"]),
|
|
10594
|
+
energy: z22.enum(["calm", "vibrant"]),
|
|
10595
|
+
density: z22.enum(["airy", "regular", "compact"]),
|
|
10596
|
+
mediaBias: z22.enum(["text", "media", "mixed"]),
|
|
10597
|
+
conversionBias: z22.enum(["low", "med", "high"]),
|
|
10598
|
+
motion: z22.enum(["subtle", "standard", "expressive"])
|
|
10599
|
+
});
|
|
10600
|
+
var colourHexString = z22.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
|
|
10601
|
+
var paletteColorSchema = z22.object({
|
|
10602
|
+
name: z22.string().min(1),
|
|
11194
10603
|
hex: colourHexString
|
|
11195
10604
|
});
|
|
11196
|
-
var paletteMetaSchema =
|
|
11197
|
-
mode:
|
|
10605
|
+
var paletteMetaSchema = z22.object({
|
|
10606
|
+
mode: z22.enum(["light", "dark"])
|
|
11198
10607
|
});
|
|
11199
|
-
var paletteSchema =
|
|
11200
|
-
colors:
|
|
10608
|
+
var paletteSchema = z22.object({
|
|
10609
|
+
colors: z22.array(paletteColorSchema),
|
|
11201
10610
|
meta: paletteMetaSchema
|
|
11202
10611
|
});
|
|
11203
|
-
var typographyStyleSchema =
|
|
11204
|
-
family:
|
|
11205
|
-
weight:
|
|
11206
|
-
letterSpacing:
|
|
11207
|
-
lineHeight:
|
|
10612
|
+
var typographyStyleSchema = z22.object({
|
|
10613
|
+
family: z22.string().min(1),
|
|
10614
|
+
weight: z22.enum(["light", "regular", "medium", "semibold", "bold"]),
|
|
10615
|
+
letterSpacing: z22.enum(["tight", "normal", "loose"]),
|
|
10616
|
+
lineHeight: z22.enum(["normal", "relaxed", "loose"])
|
|
11208
10617
|
});
|
|
11209
10618
|
var bodyTypographyStyleSchema = typographyStyleSchema.extend({
|
|
11210
|
-
size:
|
|
10619
|
+
size: z22.enum(["md", "lg", "xl"])
|
|
11211
10620
|
});
|
|
11212
|
-
var headingSizeSchema =
|
|
11213
|
-
var headingTypographyOverridesSchema =
|
|
11214
|
-
weight:
|
|
11215
|
-
letterSpacing:
|
|
10621
|
+
var headingSizeSchema = z22.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
|
|
10622
|
+
var headingTypographyOverridesSchema = z22.object({
|
|
10623
|
+
weight: z22.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
|
|
10624
|
+
letterSpacing: z22.enum(["tight", "normal", "loose"]).nullable().optional(),
|
|
11216
10625
|
size: headingSizeSchema.nullable().optional(),
|
|
11217
|
-
lineHeight:
|
|
11218
|
-
italic:
|
|
11219
|
-
colorToken:
|
|
10626
|
+
lineHeight: z22.enum(["normal", "relaxed", "loose"]).nullable().optional(),
|
|
10627
|
+
italic: z22.boolean().nullable().optional(),
|
|
10628
|
+
colorToken: z22.string().min(1).nullable().optional()
|
|
11220
10629
|
// Palette token name for heading color
|
|
11221
10630
|
});
|
|
11222
10631
|
var headingTypographyStyleSchema = typographyStyleSchema.extend({
|
|
11223
|
-
case:
|
|
11224
|
-
italic:
|
|
11225
|
-
colorToken:
|
|
10632
|
+
case: z22.enum(["uppercase", "normal", "smallCaps"]).nullable(),
|
|
10633
|
+
italic: z22.boolean().nullable(),
|
|
10634
|
+
colorToken: z22.string().min(1).nullable().optional()
|
|
11226
10635
|
// Palette token name for heading color
|
|
11227
10636
|
});
|
|
11228
|
-
var proseLinkUnderlineStyleSchema =
|
|
11229
|
-
var proseLinkUnderlineThicknessSchema =
|
|
11230
|
-
var proseLinkUnderlineOffsetSchema =
|
|
11231
|
-
var proseLinkStyleSchema =
|
|
11232
|
-
colorToken:
|
|
11233
|
-
hoverColorToken:
|
|
11234
|
-
underline:
|
|
11235
|
-
decorationColorToken:
|
|
11236
|
-
hoverDecorationColorToken:
|
|
10637
|
+
var proseLinkUnderlineStyleSchema = z22.enum(["solid", "dotted", "dashed"]);
|
|
10638
|
+
var proseLinkUnderlineThicknessSchema = z22.enum(["auto", "fromFont", "thin", "medium", "thick"]);
|
|
10639
|
+
var proseLinkUnderlineOffsetSchema = z22.enum(["auto", "tight", "normal", "loose"]);
|
|
10640
|
+
var proseLinkStyleSchema = z22.object({
|
|
10641
|
+
colorToken: z22.string().min(1).optional(),
|
|
10642
|
+
hoverColorToken: z22.string().min(1).optional(),
|
|
10643
|
+
underline: z22.boolean().optional(),
|
|
10644
|
+
decorationColorToken: z22.string().min(1).optional(),
|
|
10645
|
+
hoverDecorationColorToken: z22.string().min(1).optional(),
|
|
11237
10646
|
underlineStyle: proseLinkUnderlineStyleSchema.optional(),
|
|
11238
10647
|
underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
|
|
11239
10648
|
underlineOffset: proseLinkUnderlineOffsetSchema.optional()
|
|
11240
10649
|
});
|
|
11241
|
-
var semanticSpacingSchema =
|
|
10650
|
+
var semanticSpacingSchema = z22.enum([
|
|
11242
10651
|
"none",
|
|
11243
10652
|
"compact",
|
|
11244
10653
|
"cozy",
|
|
@@ -11246,62 +10655,62 @@ var semanticSpacingSchema = z25.enum([
|
|
|
11246
10655
|
"comfortable",
|
|
11247
10656
|
"spacious"
|
|
11248
10657
|
]);
|
|
11249
|
-
var boxRoundedSchema =
|
|
11250
|
-
var boxBackgroundOverlaySchema =
|
|
11251
|
-
type:
|
|
11252
|
-
color:
|
|
11253
|
-
gradient:
|
|
11254
|
-
opacity:
|
|
11255
|
-
});
|
|
11256
|
-
var boxBackgroundSchema =
|
|
11257
|
-
type:
|
|
11258
|
-
color:
|
|
11259
|
-
gradient:
|
|
10658
|
+
var boxRoundedSchema = z22.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
|
|
10659
|
+
var boxBackgroundOverlaySchema = z22.object({
|
|
10660
|
+
type: z22.enum(["none", "color", "gradient"]).nullable().optional(),
|
|
10661
|
+
color: z22.string().nullable().optional(),
|
|
10662
|
+
gradient: z22.string().nullable().optional(),
|
|
10663
|
+
opacity: z22.number().min(0).max(1).nullable().optional()
|
|
10664
|
+
});
|
|
10665
|
+
var boxBackgroundSchema = z22.object({
|
|
10666
|
+
type: z22.enum(["color", "gradient", "image"]).optional(),
|
|
10667
|
+
color: z22.string().nullable().optional(),
|
|
10668
|
+
gradient: z22.string().nullable().optional(),
|
|
11260
10669
|
image: mediaSchema.nullable().optional(),
|
|
11261
|
-
objectFit:
|
|
11262
|
-
scale:
|
|
11263
|
-
position:
|
|
11264
|
-
opacity:
|
|
10670
|
+
objectFit: z22.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
|
|
10671
|
+
scale: z22.string().nullable().optional(),
|
|
10672
|
+
position: z22.string().nullable().optional(),
|
|
10673
|
+
opacity: z22.number().min(0).max(1).nullable().optional(),
|
|
11265
10674
|
overlay: boxBackgroundOverlaySchema.nullable().optional(),
|
|
11266
|
-
textColor:
|
|
11267
|
-
headingColor:
|
|
10675
|
+
textColor: z22.string().nullable().optional(),
|
|
10676
|
+
headingColor: z22.string().nullable().optional()
|
|
11268
10677
|
});
|
|
11269
|
-
var sectionStylesOverrideSchema =
|
|
10678
|
+
var sectionStylesOverrideSchema = z22.object({
|
|
11270
10679
|
background: boxBackgroundSchema.nullable().optional(),
|
|
11271
10680
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
11272
|
-
minHeight:
|
|
10681
|
+
minHeight: z22.enum(["none", "hero", "immersive"]).nullable().optional()
|
|
11273
10682
|
});
|
|
11274
|
-
var containerStylesOverrideSchema =
|
|
10683
|
+
var containerStylesOverrideSchema = z22.object({
|
|
11275
10684
|
background: boxBackgroundSchema.nullable().optional(),
|
|
11276
10685
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
11277
|
-
raised:
|
|
10686
|
+
raised: z22.boolean().nullable().optional(),
|
|
11278
10687
|
rounded: boxRoundedSchema.nullable().optional(),
|
|
11279
|
-
fullWidth:
|
|
10688
|
+
fullWidth: z22.boolean().nullable().optional()
|
|
11280
10689
|
});
|
|
11281
|
-
var cardBorderOverrideSchema =
|
|
11282
|
-
enabled:
|
|
11283
|
-
width:
|
|
11284
|
-
colorToken:
|
|
10690
|
+
var cardBorderOverrideSchema = z22.object({
|
|
10691
|
+
enabled: z22.boolean().nullable().optional(),
|
|
10692
|
+
width: z22.enum(["none", "1", "2", "3"]).nullable().optional(),
|
|
10693
|
+
colorToken: z22.string().nullable().optional()
|
|
11285
10694
|
});
|
|
11286
|
-
var cardStylesOverrideSchema =
|
|
10695
|
+
var cardStylesOverrideSchema = z22.object({
|
|
11287
10696
|
background: boxBackgroundSchema.nullable().optional(),
|
|
11288
10697
|
border: cardBorderOverrideSchema.nullable().optional(),
|
|
11289
10698
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
11290
|
-
raised:
|
|
10699
|
+
raised: z22.boolean().nullable().optional(),
|
|
11291
10700
|
rounded: boxRoundedSchema.nullable().optional()
|
|
11292
10701
|
});
|
|
11293
|
-
var blockStyleOverridesSchema =
|
|
10702
|
+
var blockStyleOverridesSchema = z22.object({
|
|
11294
10703
|
sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
|
|
11295
10704
|
containerStyles: containerStylesOverrideSchema.nullable().optional(),
|
|
11296
10705
|
cardStyles: cardStylesOverrideSchema.nullable().optional()
|
|
11297
10706
|
});
|
|
11298
|
-
var blockThemeOverrideSchema =
|
|
11299
|
-
typography:
|
|
10707
|
+
var blockThemeOverrideSchema = z22.object({
|
|
10708
|
+
typography: z22.object({
|
|
11300
10709
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
11301
10710
|
}).optional(),
|
|
11302
10711
|
styles: blockStyleOverridesSchema.optional()
|
|
11303
10712
|
});
|
|
11304
|
-
var typographyScaleSchema =
|
|
10713
|
+
var typographyScaleSchema = z22.enum([
|
|
11305
10714
|
// New intuitive names
|
|
11306
10715
|
"compact",
|
|
11307
10716
|
// ratio 1.2 (was minorThird)
|
|
@@ -11314,9 +10723,9 @@ var typographyScaleSchema = z25.enum([
|
|
|
11314
10723
|
"majorThird",
|
|
11315
10724
|
"perfectFourth"
|
|
11316
10725
|
]);
|
|
11317
|
-
var typographySchema =
|
|
10726
|
+
var typographySchema = z22.object({
|
|
11318
10727
|
body: bodyTypographyStyleSchema,
|
|
11319
|
-
headings:
|
|
10728
|
+
headings: z22.object({
|
|
11320
10729
|
default: headingTypographyStyleSchema,
|
|
11321
10730
|
h1: headingTypographyOverridesSchema,
|
|
11322
10731
|
h2: headingTypographyOverridesSchema,
|
|
@@ -11329,41 +10738,41 @@ var typographySchema = z25.object({
|
|
|
11329
10738
|
scale: typographyScaleSchema,
|
|
11330
10739
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
11331
10740
|
});
|
|
11332
|
-
var spaceSchema =
|
|
11333
|
-
var corners =
|
|
11334
|
-
var shadow =
|
|
11335
|
-
elevation:
|
|
11336
|
-
softness:
|
|
11337
|
-
position:
|
|
10741
|
+
var spaceSchema = z22.enum(["comfortable", "standard", "dense"]);
|
|
10742
|
+
var corners = z22.enum(["square", "soft", "rounded", "pill"]);
|
|
10743
|
+
var shadow = z22.object({
|
|
10744
|
+
elevation: z22.enum(["none", "low", "medium", "high"]),
|
|
10745
|
+
softness: z22.enum(["crisp", "soft", "hard"]).nullable(),
|
|
10746
|
+
position: z22.enum(["bottom", "bottom-right"]).default("bottom")
|
|
11338
10747
|
});
|
|
11339
|
-
var border =
|
|
11340
|
-
width:
|
|
11341
|
-
style:
|
|
10748
|
+
var border = z22.object({
|
|
10749
|
+
width: z22.enum(["none", "hairline", "thin", "thick"]),
|
|
10750
|
+
style: z22.enum(["solid", "dashed"])
|
|
11342
10751
|
});
|
|
11343
|
-
var motion =
|
|
11344
|
-
level:
|
|
11345
|
-
easing:
|
|
10752
|
+
var motion = z22.object({
|
|
10753
|
+
level: z22.enum(["off", "low", "medium", "high"]),
|
|
10754
|
+
easing: z22.enum(["standard", "snappy", "gentle"]).nullable()
|
|
11346
10755
|
});
|
|
11347
|
-
var buttonStyle =
|
|
10756
|
+
var buttonStyle = z22.object({
|
|
11348
10757
|
shape: corners
|
|
11349
10758
|
// Used for --radius-control CSS variable
|
|
11350
10759
|
});
|
|
11351
|
-
var cardStyle =
|
|
11352
|
-
elevation:
|
|
11353
|
-
border:
|
|
10760
|
+
var cardStyle = z22.object({
|
|
10761
|
+
elevation: z22.enum(["none", "low", "medium", "high"]),
|
|
10762
|
+
border: z22.enum(["none", "subtle", "defined"]),
|
|
11354
10763
|
shape: corners,
|
|
11355
|
-
headerStyle:
|
|
11356
|
-
mediaTreatment:
|
|
10764
|
+
headerStyle: z22.enum(["plain", "accentBar", "subtleBg"]).nullable(),
|
|
10765
|
+
mediaTreatment: z22.enum(["square", "rounded", "bleed"]).nullable()
|
|
11357
10766
|
});
|
|
11358
|
-
var inputStyle =
|
|
10767
|
+
var inputStyle = z22.object({
|
|
11359
10768
|
shape: corners,
|
|
11360
|
-
border:
|
|
11361
|
-
focus:
|
|
11362
|
-
label:
|
|
10769
|
+
border: z22.enum(["subtle", "defined", "underline"]),
|
|
10770
|
+
focus: z22.enum(["glow", "ring", "underline"]),
|
|
10771
|
+
label: z22.enum(["inside", "above"])
|
|
11363
10772
|
});
|
|
11364
|
-
var headerVariant =
|
|
11365
|
-
var headerPositioning =
|
|
11366
|
-
var headerNavStyle =
|
|
10773
|
+
var headerVariant = z22.enum(["classic", "centered", "transparent", "floating", "editorial"]);
|
|
10774
|
+
var headerPositioning = z22.enum(["static", "sticky", "fixed"]);
|
|
10775
|
+
var headerNavStyle = z22.enum([
|
|
11367
10776
|
"minimal",
|
|
11368
10777
|
"underline",
|
|
11369
10778
|
"underline-grow",
|
|
@@ -11372,82 +10781,82 @@ var headerNavStyle = z25.enum([
|
|
|
11372
10781
|
"frosted",
|
|
11373
10782
|
"solid"
|
|
11374
10783
|
]);
|
|
11375
|
-
var navFontWeight =
|
|
11376
|
-
var headerMaxWidth =
|
|
11377
|
-
var headerContainerSchema =
|
|
11378
|
-
rounded:
|
|
11379
|
-
border:
|
|
11380
|
-
shadow:
|
|
11381
|
-
padding:
|
|
11382
|
-
tint:
|
|
11383
|
-
opacity:
|
|
10784
|
+
var navFontWeight = z22.enum(["regular", "medium", "semibold", "bold"]);
|
|
10785
|
+
var headerMaxWidth = z22.enum(["container", "full"]);
|
|
10786
|
+
var headerContainerSchema = z22.object({
|
|
10787
|
+
rounded: z22.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
|
|
10788
|
+
border: z22.boolean().default(true),
|
|
10789
|
+
shadow: z22.boolean().default(true),
|
|
10790
|
+
padding: z22.enum(["sm", "md", "lg"]).default("md"),
|
|
10791
|
+
tint: z22.string().nullable().optional(),
|
|
10792
|
+
opacity: z22.number().min(0).max(1).default(0.12)
|
|
11384
10793
|
}).optional();
|
|
11385
10794
|
var headerBorderSchema = componentBorderSchema.extend({
|
|
11386
|
-
position:
|
|
10795
|
+
position: z22.enum(["bottom", "top", "both", "none"]).default("bottom")
|
|
11387
10796
|
}).optional();
|
|
11388
|
-
var logoStyleSchema =
|
|
11389
|
-
fontFamily:
|
|
11390
|
-
letterSpacing:
|
|
11391
|
-
gradient:
|
|
10797
|
+
var logoStyleSchema = z22.object({
|
|
10798
|
+
fontFamily: z22.enum(["heading", "body"]).default("heading"),
|
|
10799
|
+
letterSpacing: z22.enum(["normal", "wide", "wider", "widest"]).default("normal"),
|
|
10800
|
+
gradient: z22.boolean().default(false)
|
|
11392
10801
|
}).optional();
|
|
11393
|
-
var headerLogoTextSchema =
|
|
11394
|
-
mobileWrapLines:
|
|
11395
|
-
mobileMaxWidth:
|
|
11396
|
-
hideOnShrink:
|
|
10802
|
+
var headerLogoTextSchema = z22.object({
|
|
10803
|
+
mobileWrapLines: z22.union([z22.literal(1), z22.literal(2)]).optional(),
|
|
10804
|
+
mobileMaxWidth: z22.enum(["xs", "sm", "md"]).optional(),
|
|
10805
|
+
hideOnShrink: z22.boolean().optional()
|
|
11397
10806
|
}).optional();
|
|
11398
|
-
var navEffectsSchema =
|
|
11399
|
-
underlineGradient:
|
|
11400
|
-
glow:
|
|
11401
|
-
glowColor:
|
|
11402
|
-
neumorphic:
|
|
10807
|
+
var navEffectsSchema = z22.object({
|
|
10808
|
+
underlineGradient: z22.boolean().default(false),
|
|
10809
|
+
glow: z22.boolean().default(false),
|
|
10810
|
+
glowColor: z22.string().optional(),
|
|
10811
|
+
neumorphic: z22.boolean().default(false)
|
|
11403
10812
|
}).optional();
|
|
11404
|
-
var dropdownStyleSchema =
|
|
10813
|
+
var dropdownStyleSchema = z22.object({
|
|
11405
10814
|
// Container styling
|
|
11406
|
-
background:
|
|
10815
|
+
background: z22.string().default("surface"),
|
|
11407
10816
|
// color token
|
|
11408
|
-
textColor:
|
|
10817
|
+
textColor: z22.string().default("text"),
|
|
11409
10818
|
// color token
|
|
11410
|
-
borderColor:
|
|
10819
|
+
borderColor: z22.string().nullable().default("border"),
|
|
11411
10820
|
// null = no border
|
|
11412
|
-
shadow:
|
|
11413
|
-
borderRadius:
|
|
10821
|
+
shadow: z22.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
10822
|
+
borderRadius: z22.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
11414
10823
|
// Link hover states (explicit control)
|
|
11415
|
-
hoverBackground:
|
|
10824
|
+
hoverBackground: z22.string().nullable().optional(),
|
|
11416
10825
|
// color token, null = transparent
|
|
11417
|
-
hoverTextColor:
|
|
10826
|
+
hoverTextColor: z22.string().nullable().optional(),
|
|
11418
10827
|
// color token, null = inherit
|
|
11419
10828
|
// Typography
|
|
11420
|
-
textTransform:
|
|
11421
|
-
letterSpacing:
|
|
11422
|
-
fontWeight:
|
|
10829
|
+
textTransform: z22.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
10830
|
+
letterSpacing: z22.enum(["normal", "wide", "wider"]).default("normal"),
|
|
10831
|
+
fontWeight: z22.enum(["regular", "medium", "semibold", "bold"]).optional(),
|
|
11423
10832
|
// optional = inherit from navWeight
|
|
11424
|
-
textSize:
|
|
10833
|
+
textSize: z22.enum(["xs", "sm", "base", "lg"]).optional()
|
|
11425
10834
|
// optional = no override (browser default)
|
|
11426
10835
|
}).optional();
|
|
11427
|
-
var headerCtaGapSchema =
|
|
11428
|
-
var navContainerSchema =
|
|
11429
|
-
type:
|
|
11430
|
-
tint:
|
|
11431
|
-
opacity:
|
|
10836
|
+
var headerCtaGapSchema = z22.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
10837
|
+
var navContainerSchema = z22.object({
|
|
10838
|
+
type: z22.enum(["none", "pill", "glass"]).default("none"),
|
|
10839
|
+
tint: z22.string().nullable().optional(),
|
|
10840
|
+
opacity: z22.number().min(0).max(1).default(0.15)
|
|
11432
10841
|
}).default({ type: "none", tint: null, opacity: 0.15 });
|
|
11433
|
-
var headerBackgroundSchema =
|
|
11434
|
-
type:
|
|
11435
|
-
color:
|
|
10842
|
+
var headerBackgroundSchema = z22.object({
|
|
10843
|
+
type: z22.enum(["color", "gradient", "image"]),
|
|
10844
|
+
color: z22.string().nullable().optional(),
|
|
11436
10845
|
gradient: gradientConfigSchema.nullable().optional(),
|
|
11437
10846
|
image: mediaSchema.nullable().optional(),
|
|
11438
|
-
textColor:
|
|
10847
|
+
textColor: z22.string().nullable().optional()
|
|
11439
10848
|
});
|
|
11440
|
-
var headerSchema =
|
|
10849
|
+
var headerSchema = z22.object({
|
|
11441
10850
|
variant: headerVariant,
|
|
11442
10851
|
positioning: headerPositioning,
|
|
11443
|
-
shrinkOnScroll:
|
|
10852
|
+
shrinkOnScroll: z22.boolean(),
|
|
11444
10853
|
maxWidth: headerMaxWidth,
|
|
11445
10854
|
logoOverride: mediaSchema.nullable().optional(),
|
|
11446
10855
|
background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
|
|
11447
|
-
textColor:
|
|
10856
|
+
textColor: z22.string().nullable().optional(),
|
|
11448
10857
|
// Site title and general header text
|
|
11449
10858
|
navStyle: headerNavStyle,
|
|
11450
|
-
navColor:
|
|
10859
|
+
navColor: z22.string().nullable().optional(),
|
|
11451
10860
|
// Nav links (inherits textColor if not set)
|
|
11452
10861
|
navWeight: navFontWeight.default("medium"),
|
|
11453
10862
|
// New fields for header system enhancement
|
|
@@ -11466,50 +10875,50 @@ var headerSchema = z25.object({
|
|
|
11466
10875
|
// Dropdown menu styling (nav dropdowns and mobile drawer)
|
|
11467
10876
|
dropdownStyle: dropdownStyleSchema
|
|
11468
10877
|
});
|
|
11469
|
-
var footerVariant =
|
|
11470
|
-
var footerMaxWidth =
|
|
11471
|
-
var footerMode =
|
|
11472
|
-
var footerNavLayoutMode =
|
|
11473
|
-
var footerNavLayoutAlign =
|
|
11474
|
-
var footerSpacing =
|
|
11475
|
-
var footerLogoPlacement =
|
|
11476
|
-
var footerLogoSize =
|
|
11477
|
-
var footerLogoMaxHeight =
|
|
11478
|
-
var footerBottomTextLinkStyleSchema =
|
|
11479
|
-
colorToken:
|
|
11480
|
-
hoverColorToken:
|
|
11481
|
-
decorationColorToken:
|
|
11482
|
-
underline:
|
|
11483
|
-
});
|
|
11484
|
-
var footerBottomBarSchema =
|
|
11485
|
-
enabled:
|
|
11486
|
-
fullBleed:
|
|
10878
|
+
var footerVariant = z22.enum(["simple", "columns", "split"]);
|
|
10879
|
+
var footerMaxWidth = z22.enum(["container", "full"]);
|
|
10880
|
+
var footerMode = z22.enum(["default", "blocks", "default+blocks", "none"]);
|
|
10881
|
+
var footerNavLayoutMode = z22.enum(["stack", "inline", "inline-wrap"]);
|
|
10882
|
+
var footerNavLayoutAlign = z22.enum(["start", "center", "end", "space-between"]);
|
|
10883
|
+
var footerSpacing = z22.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
10884
|
+
var footerLogoPlacement = z22.enum(["left", "right", "above", "below"]);
|
|
10885
|
+
var footerLogoSize = z22.enum(["sm", "md", "lg", "xl"]);
|
|
10886
|
+
var footerLogoMaxHeight = z22.enum(["sm", "md", "lg", "xl"]);
|
|
10887
|
+
var footerBottomTextLinkStyleSchema = z22.object({
|
|
10888
|
+
colorToken: z22.string().optional(),
|
|
10889
|
+
hoverColorToken: z22.string().nullable().optional(),
|
|
10890
|
+
decorationColorToken: z22.string().nullable().optional(),
|
|
10891
|
+
underline: z22.boolean().optional()
|
|
10892
|
+
});
|
|
10893
|
+
var footerBottomBarSchema = z22.object({
|
|
10894
|
+
enabled: z22.boolean().optional(),
|
|
10895
|
+
fullBleed: z22.boolean().optional(),
|
|
11487
10896
|
background: headerBackgroundSchema.optional(),
|
|
11488
|
-
textColor:
|
|
11489
|
-
textAlign:
|
|
10897
|
+
textColor: z22.string().nullable().optional(),
|
|
10898
|
+
textAlign: z22.enum(["left", "center", "right"]).optional(),
|
|
11490
10899
|
paddingY: footerSpacing.optional(),
|
|
11491
10900
|
paddingX: footerSpacing.optional(),
|
|
11492
|
-
borderTop:
|
|
11493
|
-
colorToken:
|
|
11494
|
-
width:
|
|
10901
|
+
borderTop: z22.object({
|
|
10902
|
+
colorToken: z22.string().nullable().optional(),
|
|
10903
|
+
width: z22.enum(["none", "thin", "medium", "thick"]).optional()
|
|
11495
10904
|
}).optional()
|
|
11496
10905
|
});
|
|
11497
|
-
var footerNavLayoutSchema =
|
|
10906
|
+
var footerNavLayoutSchema = z22.object({
|
|
11498
10907
|
layout: footerNavLayoutMode.optional(),
|
|
11499
10908
|
align: footerNavLayoutAlign.optional(),
|
|
11500
10909
|
gapX: footerSpacing.optional(),
|
|
11501
10910
|
gapY: footerSpacing.optional(),
|
|
11502
|
-
columns:
|
|
10911
|
+
columns: z22.number().int().min(1).max(6).optional()
|
|
11503
10912
|
});
|
|
11504
|
-
var footerLogoSchema =
|
|
11505
|
-
showLogo:
|
|
11506
|
-
showLogoText:
|
|
10913
|
+
var footerLogoSchema = z22.object({
|
|
10914
|
+
showLogo: z22.boolean().default(true),
|
|
10915
|
+
showLogoText: z22.boolean().optional(),
|
|
11507
10916
|
placement: footerLogoPlacement.optional(),
|
|
11508
10917
|
size: footerLogoSize.optional(),
|
|
11509
10918
|
maxHeight: footerLogoMaxHeight.optional(),
|
|
11510
|
-
align:
|
|
10919
|
+
align: z22.enum(["start", "center", "end"]).optional()
|
|
11511
10920
|
});
|
|
11512
|
-
var footerSchema =
|
|
10921
|
+
var footerSchema = z22.object({
|
|
11513
10922
|
/**
|
|
11514
10923
|
* SDK-only footer rendering mode.
|
|
11515
10924
|
*
|
|
@@ -11518,11 +10927,11 @@ var footerSchema = z25.object({
|
|
|
11518
10927
|
mode: footerMode.optional(),
|
|
11519
10928
|
variant: footerVariant,
|
|
11520
10929
|
maxWidth: footerMaxWidth,
|
|
11521
|
-
showLogoText:
|
|
10930
|
+
showLogoText: z22.boolean().optional(),
|
|
11522
10931
|
background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
|
|
11523
10932
|
// Footer nav styling (independent from header)
|
|
11524
10933
|
navStyle: headerNavStyle.default("minimal"),
|
|
11525
|
-
navColor:
|
|
10934
|
+
navColor: z22.string().nullable().optional(),
|
|
11526
10935
|
navWeight: navFontWeight.default("medium"),
|
|
11527
10936
|
// Full nav link customization (overrides navStyle if set)
|
|
11528
10937
|
navLinkStyle: navLinkStyleSchema.optional(),
|
|
@@ -11533,15 +10942,15 @@ var footerSchema = z25.object({
|
|
|
11533
10942
|
logo: footerLogoSchema.optional(),
|
|
11534
10943
|
bottomBar: footerBottomBarSchema.optional()
|
|
11535
10944
|
});
|
|
11536
|
-
var containerPaddingPresetSchema =
|
|
11537
|
-
var layoutSchema =
|
|
11538
|
-
containerPadding:
|
|
10945
|
+
var containerPaddingPresetSchema = z22.enum(["tight", "compact", "default", "relaxed"]);
|
|
10946
|
+
var layoutSchema = z22.object({
|
|
10947
|
+
containerPadding: z22.object({
|
|
11539
10948
|
mobile: containerPaddingPresetSchema.optional(),
|
|
11540
10949
|
tablet: containerPaddingPresetSchema.optional(),
|
|
11541
10950
|
desktop: containerPaddingPresetSchema.optional()
|
|
11542
10951
|
}).optional()
|
|
11543
10952
|
}).optional();
|
|
11544
|
-
var heroTypographySizeSchema =
|
|
10953
|
+
var heroTypographySizeSchema = z22.enum([
|
|
11545
10954
|
"sm",
|
|
11546
10955
|
"base",
|
|
11547
10956
|
"lg",
|
|
@@ -11552,14 +10961,14 @@ var heroTypographySizeSchema = z25.enum([
|
|
|
11552
10961
|
"5xl",
|
|
11553
10962
|
"6xl"
|
|
11554
10963
|
]);
|
|
11555
|
-
var heroTypographyLineHeightSchema =
|
|
11556
|
-
var heroResponsiveTypographySchema =
|
|
10964
|
+
var heroTypographyLineHeightSchema = z22.enum(["tight", "snug", "normal", "relaxed"]);
|
|
10965
|
+
var heroResponsiveTypographySchema = z22.object({
|
|
11557
10966
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
11558
10967
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
11559
10968
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
11560
10969
|
subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
|
|
11561
10970
|
});
|
|
11562
|
-
var heroTypographySchema =
|
|
10971
|
+
var heroTypographySchema = z22.object({
|
|
11563
10972
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
11564
10973
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
11565
10974
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
@@ -11568,24 +10977,24 @@ var heroTypographySchema = z25.object({
|
|
|
11568
10977
|
microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
11569
10978
|
microSubheadlineSize: heroTypographySizeSchema.optional(),
|
|
11570
10979
|
microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
11571
|
-
responsive:
|
|
10980
|
+
responsive: z22.object({
|
|
11572
10981
|
tablet: heroResponsiveTypographySchema.optional(),
|
|
11573
10982
|
mobile: heroResponsiveTypographySchema.optional()
|
|
11574
10983
|
}).optional()
|
|
11575
10984
|
});
|
|
11576
|
-
var heroSchema =
|
|
10985
|
+
var heroSchema = z22.object({
|
|
11577
10986
|
typography: heroTypographySchema.optional()
|
|
11578
10987
|
}).optional();
|
|
11579
|
-
var gradientsSchema =
|
|
11580
|
-
button:
|
|
11581
|
-
hero:
|
|
11582
|
-
background:
|
|
11583
|
-
});
|
|
11584
|
-
var themeSchema =
|
|
11585
|
-
name:
|
|
11586
|
-
description:
|
|
11587
|
-
rationale:
|
|
11588
|
-
siteStyleId:
|
|
10988
|
+
var gradientsSchema = z22.object({
|
|
10989
|
+
button: z22.string().min(1).nullable().optional(),
|
|
10990
|
+
hero: z22.string().min(1).nullable().optional(),
|
|
10991
|
+
background: z22.string().min(1).nullable().optional()
|
|
10992
|
+
});
|
|
10993
|
+
var themeSchema = z22.object({
|
|
10994
|
+
name: z22.string().min(1).max(30),
|
|
10995
|
+
description: z22.string().min(1).max(400),
|
|
10996
|
+
rationale: z22.string().min(1).max(400),
|
|
10997
|
+
siteStyleId: z22.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
|
|
11589
10998
|
axes: axesSchema,
|
|
11590
10999
|
palette: paletteSchema,
|
|
11591
11000
|
typography: typographySchema,
|
|
@@ -11612,16 +11021,16 @@ var themeSchema = z25.object({
|
|
|
11612
11021
|
// Block-specific customization (Tier 3)
|
|
11613
11022
|
// blockCustomVars: Per-block CSS variable overrides as bare values
|
|
11614
11023
|
// Example: { "event-registration": { "--step-color": "#6d28d9" } }
|
|
11615
|
-
blockCustomVars:
|
|
11616
|
-
|
|
11024
|
+
blockCustomVars: z22.record(
|
|
11025
|
+
z22.string(),
|
|
11617
11026
|
// block kind (matches data-block attribute)
|
|
11618
|
-
|
|
11027
|
+
z22.record(z22.string(), z22.string())
|
|
11619
11028
|
// { '--var-name': 'value' }
|
|
11620
11029
|
).optional(),
|
|
11621
11030
|
// Structured block-kind theme overrides (v1: typography prose-link style only)
|
|
11622
11031
|
// Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
|
|
11623
|
-
blockOverrides:
|
|
11624
|
-
|
|
11032
|
+
blockOverrides: z22.record(
|
|
11033
|
+
z22.string(),
|
|
11625
11034
|
blockThemeOverrideSchema
|
|
11626
11035
|
).optional(),
|
|
11627
11036
|
// Structured custom CSS rules
|
|
@@ -11657,22 +11066,21 @@ var themeSchema = z25.object({
|
|
|
11657
11066
|
* }
|
|
11658
11067
|
* ```
|
|
11659
11068
|
*/
|
|
11660
|
-
styleGroups:
|
|
11069
|
+
styleGroups: z22.record(z22.string(), z22.array(z22.string())).optional()
|
|
11661
11070
|
});
|
|
11662
|
-
var themesTurnSchema =
|
|
11663
|
-
message:
|
|
11664
|
-
themes:
|
|
11071
|
+
var themesTurnSchema = z22.object({
|
|
11072
|
+
message: z22.string().min(1),
|
|
11073
|
+
themes: z22.array(themeSchema).length(3)
|
|
11665
11074
|
});
|
|
11666
11075
|
|
|
11667
11076
|
// ../theme-core/src/palette/variants/types.ts
|
|
11668
|
-
import { z as z26 } from "zod";
|
|
11669
11077
|
function asPaletteVariantId(value) {
|
|
11670
11078
|
if (value.length === 0) {
|
|
11671
11079
|
throw new Error("PaletteVariantId must be a non-empty string");
|
|
11672
11080
|
}
|
|
11673
11081
|
return value;
|
|
11674
11082
|
}
|
|
11675
|
-
var paletteVariantIdSchema =
|
|
11083
|
+
var paletteVariantIdSchema = z23.string().min(1).transform((value) => asPaletteVariantId(value));
|
|
11676
11084
|
var PALETTE_TOKEN_NAMES = [
|
|
11677
11085
|
"primary",
|
|
11678
11086
|
"primaryForeground",
|
|
@@ -11688,19 +11096,19 @@ var PALETTE_TOKEN_NAMES = [
|
|
|
11688
11096
|
"text",
|
|
11689
11097
|
"border"
|
|
11690
11098
|
];
|
|
11691
|
-
var paletteTokenNameSchema =
|
|
11099
|
+
var paletteTokenNameSchema = z23.enum(PALETTE_TOKEN_NAMES);
|
|
11692
11100
|
var HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
|
|
11693
|
-
var hexColorSchema =
|
|
11101
|
+
var hexColorSchema = z23.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
|
|
11694
11102
|
var variantPaletteColorSchema = paletteColorSchema.extend({
|
|
11695
11103
|
name: paletteTokenNameSchema
|
|
11696
11104
|
});
|
|
11697
|
-
var paletteVariantSchema =
|
|
11105
|
+
var paletteVariantSchema = z23.object({
|
|
11698
11106
|
id: paletteVariantIdSchema,
|
|
11699
|
-
name:
|
|
11700
|
-
description:
|
|
11107
|
+
name: z23.string().min(1),
|
|
11108
|
+
description: z23.string().min(1),
|
|
11701
11109
|
tags: styleTagsSchema,
|
|
11702
|
-
mode:
|
|
11703
|
-
colors:
|
|
11110
|
+
mode: z23.enum(["light", "dark"]),
|
|
11111
|
+
colors: z23.array(variantPaletteColorSchema).min(1)
|
|
11704
11112
|
});
|
|
11705
11113
|
function definePaletteVariant(input) {
|
|
11706
11114
|
return {
|
|
@@ -11712,7 +11120,7 @@ function definePaletteVariant(input) {
|
|
|
11712
11120
|
colors: input.colors
|
|
11713
11121
|
};
|
|
11714
11122
|
}
|
|
11715
|
-
var paletteOverridesSchema =
|
|
11123
|
+
var paletteOverridesSchema = z23.object({
|
|
11716
11124
|
primary: hexColorSchema.optional(),
|
|
11717
11125
|
primaryForeground: hexColorSchema.optional(),
|
|
11718
11126
|
secondary: hexColorSchema.optional(),
|
|
@@ -12000,28 +11408,679 @@ var warmNeutralForest = definePaletteVariant({
|
|
|
12000
11408
|
]
|
|
12001
11409
|
});
|
|
12002
11410
|
|
|
12003
|
-
// ../theme-core/src/palette/variants/index.ts
|
|
12004
|
-
var paletteVariants = [
|
|
12005
|
-
// Brand-led family
|
|
12006
|
-
brandLedCool,
|
|
12007
|
-
brandLedWarm,
|
|
12008
|
-
brandLedJewel,
|
|
12009
|
-
// Warm-neutral family
|
|
12010
|
-
warmNeutralClay,
|
|
12011
|
-
warmNeutralCream,
|
|
12012
|
-
warmNeutralForest,
|
|
12013
|
-
// High-contrast family
|
|
12014
|
-
highContrastInk,
|
|
12015
|
-
highContrastCharcoal,
|
|
12016
|
-
highContrastMonochrome,
|
|
12017
|
-
// Soft-natural family
|
|
12018
|
-
softNaturalSage,
|
|
12019
|
-
softNaturalStone,
|
|
12020
|
-
softNaturalWatercolor
|
|
11411
|
+
// ../theme-core/src/palette/variants/index.ts
|
|
11412
|
+
var paletteVariants = [
|
|
11413
|
+
// Brand-led family
|
|
11414
|
+
brandLedCool,
|
|
11415
|
+
brandLedWarm,
|
|
11416
|
+
brandLedJewel,
|
|
11417
|
+
// Warm-neutral family
|
|
11418
|
+
warmNeutralClay,
|
|
11419
|
+
warmNeutralCream,
|
|
11420
|
+
warmNeutralForest,
|
|
11421
|
+
// High-contrast family
|
|
11422
|
+
highContrastInk,
|
|
11423
|
+
highContrastCharcoal,
|
|
11424
|
+
highContrastMonochrome,
|
|
11425
|
+
// Soft-natural family
|
|
11426
|
+
softNaturalSage,
|
|
11427
|
+
softNaturalStone,
|
|
11428
|
+
softNaturalWatercolor
|
|
11429
|
+
];
|
|
11430
|
+
var paletteVariantsById = new Map(
|
|
11431
|
+
paletteVariants.map((v) => [v.id, v])
|
|
11432
|
+
);
|
|
11433
|
+
|
|
11434
|
+
// ../theme-core/src/site-styles/sourceCatalogs.ts
|
|
11435
|
+
var generatedContentFrames = [
|
|
11436
|
+
plainFrame,
|
|
11437
|
+
panelFrame("inset"),
|
|
11438
|
+
panelFrame("raised"),
|
|
11439
|
+
flushPanelFrame({ bleed: "start" })
|
|
11440
|
+
];
|
|
11441
|
+
var userContentFrames = [
|
|
11442
|
+
...generatedContentFrames,
|
|
11443
|
+
panelFrame("editorial"),
|
|
11444
|
+
flushPanelFrame({ bleed: "end" }),
|
|
11445
|
+
flushPanelFrame({ bleed: "both" })
|
|
11446
|
+
];
|
|
11447
|
+
var generatedDesignOptionCatalog = {
|
|
11448
|
+
source: "generated",
|
|
11449
|
+
sectionSurfaces: ["base", "muted-band", "accent-band", "hero-image"],
|
|
11450
|
+
contentFrames: generatedContentFrames,
|
|
11451
|
+
itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
|
|
11452
|
+
transitions: ["none", "soft-fade-short", "soft-fade-long"],
|
|
11453
|
+
emphases: ["low", "medium", "high"],
|
|
11454
|
+
detachedCustom: false
|
|
11455
|
+
};
|
|
11456
|
+
var userDesignOptionCatalog = {
|
|
11457
|
+
source: "user",
|
|
11458
|
+
sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
11459
|
+
contentFrames: userContentFrames,
|
|
11460
|
+
itemSurfaces: [
|
|
11461
|
+
...generatedDesignOptionCatalog.itemSurfaces,
|
|
11462
|
+
"inset",
|
|
11463
|
+
"editorial"
|
|
11464
|
+
],
|
|
11465
|
+
transitions: [
|
|
11466
|
+
...generatedDesignOptionCatalog.transitions,
|
|
11467
|
+
"wave-edge",
|
|
11468
|
+
"angle-edge"
|
|
11469
|
+
],
|
|
11470
|
+
emphases: generatedDesignOptionCatalog.emphases,
|
|
11471
|
+
detachedCustom: false
|
|
11472
|
+
};
|
|
11473
|
+
var advancedDesignOptionCatalog = {
|
|
11474
|
+
source: "advanced",
|
|
11475
|
+
sectionSurfaces: userDesignOptionCatalog.sectionSurfaces,
|
|
11476
|
+
contentFrames: userDesignOptionCatalog.contentFrames,
|
|
11477
|
+
itemSurfaces: userDesignOptionCatalog.itemSurfaces,
|
|
11478
|
+
transitions: userDesignOptionCatalog.transitions,
|
|
11479
|
+
emphases: userDesignOptionCatalog.emphases,
|
|
11480
|
+
detachedCustom: true
|
|
11481
|
+
};
|
|
11482
|
+
|
|
11483
|
+
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
11484
|
+
var curatedSiteStyleIdValues = [
|
|
11485
|
+
"site-style:calm-studio",
|
|
11486
|
+
"site-style:clear-professional",
|
|
11487
|
+
"site-style:warm-editorial",
|
|
11488
|
+
"site-style:bright-community",
|
|
11489
|
+
"site-style:quiet-luxury",
|
|
11490
|
+
"site-style:practical-services",
|
|
11491
|
+
"site-style:modern-wellness",
|
|
11492
|
+
"site-style:bold-launch"
|
|
11493
|
+
];
|
|
11494
|
+
var quietBudget = {
|
|
11495
|
+
accentDensity: "low",
|
|
11496
|
+
panelDensity: "medium",
|
|
11497
|
+
transitionMix: "quiet",
|
|
11498
|
+
primaryCtaLimit: 2,
|
|
11499
|
+
mediaDensity: "medium",
|
|
11500
|
+
decorativeRepetition: "low"
|
|
11501
|
+
};
|
|
11502
|
+
var balancedBudget = {
|
|
11503
|
+
accentDensity: "medium",
|
|
11504
|
+
panelDensity: "medium",
|
|
11505
|
+
transitionMix: "balanced",
|
|
11506
|
+
primaryCtaLimit: 3,
|
|
11507
|
+
mediaDensity: "medium",
|
|
11508
|
+
decorativeRepetition: "medium"
|
|
11509
|
+
};
|
|
11510
|
+
var expressiveBudget = {
|
|
11511
|
+
accentDensity: "high",
|
|
11512
|
+
panelDensity: "high",
|
|
11513
|
+
transitionMix: "expressive",
|
|
11514
|
+
primaryCtaLimit: 3,
|
|
11515
|
+
mediaDensity: "high",
|
|
11516
|
+
decorativeRepetition: "medium"
|
|
11517
|
+
};
|
|
11518
|
+
function uniqueContentFrameKinds() {
|
|
11519
|
+
const kinds = [...new Set(
|
|
11520
|
+
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
11521
|
+
)];
|
|
11522
|
+
const firstKind = kinds[0];
|
|
11523
|
+
if (!firstKind) {
|
|
11524
|
+
throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
|
|
11525
|
+
}
|
|
11526
|
+
return [firstKind, ...kinds.slice(1)];
|
|
11527
|
+
}
|
|
11528
|
+
var generatedContentFrameKinds = uniqueContentFrameKinds();
|
|
11529
|
+
function defineCuratedSiteStyle(input) {
|
|
11530
|
+
return {
|
|
11531
|
+
id: asSiteStyleId(input.id),
|
|
11532
|
+
name: input.name,
|
|
11533
|
+
description: input.description,
|
|
11534
|
+
generationBrief: input.generationBrief,
|
|
11535
|
+
selectionKeywords: input.selectionKeywords ?? [],
|
|
11536
|
+
template: {
|
|
11537
|
+
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
11538
|
+
name: input.name,
|
|
11539
|
+
version: 1,
|
|
11540
|
+
tokenRecipes: input.tokenRecipes,
|
|
11541
|
+
compositionBudget: input.compositionBudget,
|
|
11542
|
+
supportedSectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
11543
|
+
supportedContentFrames: generatedContentFrameKinds,
|
|
11544
|
+
supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
11545
|
+
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
11546
|
+
},
|
|
11547
|
+
buttonPersonalityChoices: input.buttonPersonalityChoices,
|
|
11548
|
+
paletteVariantChoices: input.paletteVariantChoices
|
|
11549
|
+
};
|
|
11550
|
+
}
|
|
11551
|
+
function buttonChoice(id, note) {
|
|
11552
|
+
return note ? { id: asButtonPersonalityId(id), note } : { id: asButtonPersonalityId(id) };
|
|
11553
|
+
}
|
|
11554
|
+
function paletteChoice(id, note) {
|
|
11555
|
+
return note ? { id: asPaletteVariantId(id), note } : { id: asPaletteVariantId(id) };
|
|
11556
|
+
}
|
|
11557
|
+
var curatedSiteStyles = [
|
|
11558
|
+
defineCuratedSiteStyle({
|
|
11559
|
+
id: "site-style:calm-studio",
|
|
11560
|
+
name: "Calm Studio",
|
|
11561
|
+
description: "Soft, measured, and spacious for intimate appointment or class businesses.",
|
|
11562
|
+
generationBrief: "Use calm pacing, concise copy, generous breathing room, and natural imagery. Keep calls to action steady rather than urgent.",
|
|
11563
|
+
tokenRecipes: {
|
|
11564
|
+
palette: "soft-natural",
|
|
11565
|
+
contrast: "standard",
|
|
11566
|
+
radius: "soft",
|
|
11567
|
+
shadow: "subtle",
|
|
11568
|
+
typography: "friendly-sans",
|
|
11569
|
+
spacing: "airy",
|
|
11570
|
+
motion: "subtle"
|
|
11571
|
+
},
|
|
11572
|
+
compositionBudget: quietBudget,
|
|
11573
|
+
buttonPersonalityChoices: [
|
|
11574
|
+
buttonChoice("soft-pill"),
|
|
11575
|
+
buttonChoice("pebble"),
|
|
11576
|
+
buttonChoice("editorial-link"),
|
|
11577
|
+
buttonChoice("brushed-wash")
|
|
11578
|
+
],
|
|
11579
|
+
paletteVariantChoices: [
|
|
11580
|
+
paletteChoice("soft-natural-sage"),
|
|
11581
|
+
paletteChoice("soft-natural-stone"),
|
|
11582
|
+
paletteChoice("warm-neutral-clay"),
|
|
11583
|
+
paletteChoice("soft-natural-watercolor")
|
|
11584
|
+
]
|
|
11585
|
+
}),
|
|
11586
|
+
defineCuratedSiteStyle({
|
|
11587
|
+
id: "site-style:clear-professional",
|
|
11588
|
+
name: "Clear Professional",
|
|
11589
|
+
description: "Crisp, trustworthy, and direct for local services and consultancies.",
|
|
11590
|
+
generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
|
|
11591
|
+
tokenRecipes: {
|
|
11592
|
+
palette: "brand-led",
|
|
11593
|
+
contrast: "strong",
|
|
11594
|
+
radius: "soft",
|
|
11595
|
+
shadow: "subtle",
|
|
11596
|
+
typography: "clean-sans",
|
|
11597
|
+
spacing: "regular",
|
|
11598
|
+
motion: "subtle"
|
|
11599
|
+
},
|
|
11600
|
+
compositionBudget: balancedBudget,
|
|
11601
|
+
buttonPersonalityChoices: [
|
|
11602
|
+
buttonChoice("confident-chip"),
|
|
11603
|
+
buttonChoice("soft-pill"),
|
|
11604
|
+
buttonChoice("editorial-link")
|
|
11605
|
+
],
|
|
11606
|
+
paletteVariantChoices: [
|
|
11607
|
+
paletteChoice("brand-led-cool"),
|
|
11608
|
+
paletteChoice("high-contrast-ink"),
|
|
11609
|
+
paletteChoice("brand-led-jewel")
|
|
11610
|
+
]
|
|
11611
|
+
}),
|
|
11612
|
+
defineCuratedSiteStyle({
|
|
11613
|
+
id: "site-style:warm-editorial",
|
|
11614
|
+
name: "Warm Editorial",
|
|
11615
|
+
description: "Story-led and textured for educators, makers, venues, and retreats.",
|
|
11616
|
+
generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
|
|
11617
|
+
tokenRecipes: {
|
|
11618
|
+
palette: "warm-neutral",
|
|
11619
|
+
contrast: "standard",
|
|
11620
|
+
radius: "square",
|
|
11621
|
+
shadow: "none",
|
|
11622
|
+
typography: "serif-editorial",
|
|
11623
|
+
spacing: "airy",
|
|
11624
|
+
motion: "subtle"
|
|
11625
|
+
},
|
|
11626
|
+
compositionBudget: balancedBudget,
|
|
11627
|
+
buttonPersonalityChoices: [
|
|
11628
|
+
buttonChoice("editorial-link"),
|
|
11629
|
+
buttonChoice("soft-pill"),
|
|
11630
|
+
buttonChoice("brushed-wash")
|
|
11631
|
+
],
|
|
11632
|
+
paletteVariantChoices: [
|
|
11633
|
+
paletteChoice("warm-neutral-cream"),
|
|
11634
|
+
paletteChoice("warm-neutral-clay"),
|
|
11635
|
+
paletteChoice("warm-neutral-forest"),
|
|
11636
|
+
paletteChoice("soft-natural-stone")
|
|
11637
|
+
]
|
|
11638
|
+
}),
|
|
11639
|
+
defineCuratedSiteStyle({
|
|
11640
|
+
id: "site-style:bright-community",
|
|
11641
|
+
name: "Bright Community",
|
|
11642
|
+
description: "Friendly, welcoming, and active for groups, classes, and neighborhood offers.",
|
|
11643
|
+
generationBrief: "Use welcoming language, clear event or booking routes, and optimistic imagery. Let accents appear, but avoid noisy decoration.",
|
|
11644
|
+
tokenRecipes: {
|
|
11645
|
+
palette: "brand-led",
|
|
11646
|
+
contrast: "standard",
|
|
11647
|
+
radius: "rounded",
|
|
11648
|
+
shadow: "subtle",
|
|
11649
|
+
typography: "friendly-sans",
|
|
11650
|
+
spacing: "regular",
|
|
11651
|
+
motion: "expressive"
|
|
11652
|
+
},
|
|
11653
|
+
compositionBudget: balancedBudget,
|
|
11654
|
+
buttonPersonalityChoices: [
|
|
11655
|
+
buttonChoice("pebble"),
|
|
11656
|
+
buttonChoice("brushed-wash"),
|
|
11657
|
+
buttonChoice("confident-chip")
|
|
11658
|
+
],
|
|
11659
|
+
paletteVariantChoices: [
|
|
11660
|
+
paletteChoice("brand-led-warm"),
|
|
11661
|
+
paletteChoice("brand-led-jewel"),
|
|
11662
|
+
paletteChoice("soft-natural-watercolor")
|
|
11663
|
+
]
|
|
11664
|
+
}),
|
|
11665
|
+
defineCuratedSiteStyle({
|
|
11666
|
+
id: "site-style:quiet-luxury",
|
|
11667
|
+
name: "Quiet Luxury",
|
|
11668
|
+
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
11669
|
+
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
11670
|
+
selectionKeywords: [
|
|
11671
|
+
"luxury",
|
|
11672
|
+
"premium",
|
|
11673
|
+
"boutique",
|
|
11674
|
+
"bespoke",
|
|
11675
|
+
"exclusive"
|
|
11676
|
+
],
|
|
11677
|
+
tokenRecipes: {
|
|
11678
|
+
palette: "high-contrast",
|
|
11679
|
+
contrast: "strong",
|
|
11680
|
+
radius: "square",
|
|
11681
|
+
shadow: "none",
|
|
11682
|
+
typography: "classic-serif",
|
|
11683
|
+
spacing: "airy",
|
|
11684
|
+
motion: "none"
|
|
11685
|
+
},
|
|
11686
|
+
compositionBudget: quietBudget,
|
|
11687
|
+
buttonPersonalityChoices: [
|
|
11688
|
+
buttonChoice("editorial-link"),
|
|
11689
|
+
buttonChoice("confident-chip"),
|
|
11690
|
+
buttonChoice("soft-pill")
|
|
11691
|
+
],
|
|
11692
|
+
paletteVariantChoices: [
|
|
11693
|
+
paletteChoice("high-contrast-charcoal"),
|
|
11694
|
+
paletteChoice("high-contrast-ink"),
|
|
11695
|
+
paletteChoice("warm-neutral-cream")
|
|
11696
|
+
]
|
|
11697
|
+
}),
|
|
11698
|
+
defineCuratedSiteStyle({
|
|
11699
|
+
id: "site-style:practical-services",
|
|
11700
|
+
name: "Practical Services",
|
|
11701
|
+
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
11702
|
+
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
11703
|
+
selectionKeywords: [
|
|
11704
|
+
"repair",
|
|
11705
|
+
"plumb",
|
|
11706
|
+
"electric",
|
|
11707
|
+
"cleaning",
|
|
11708
|
+
"landscap",
|
|
11709
|
+
"contractor"
|
|
11710
|
+
],
|
|
11711
|
+
tokenRecipes: {
|
|
11712
|
+
palette: "brand-led",
|
|
11713
|
+
contrast: "maximum",
|
|
11714
|
+
radius: "soft",
|
|
11715
|
+
shadow: "subtle",
|
|
11716
|
+
typography: "clean-sans",
|
|
11717
|
+
spacing: "compact",
|
|
11718
|
+
motion: "none"
|
|
11719
|
+
},
|
|
11720
|
+
compositionBudget: quietBudget,
|
|
11721
|
+
buttonPersonalityChoices: [
|
|
11722
|
+
buttonChoice("confident-chip"),
|
|
11723
|
+
buttonChoice("pebble"),
|
|
11724
|
+
buttonChoice("ink-stamp")
|
|
11725
|
+
],
|
|
11726
|
+
paletteVariantChoices: [
|
|
11727
|
+
paletteChoice("brand-led-cool"),
|
|
11728
|
+
paletteChoice("high-contrast-ink"),
|
|
11729
|
+
paletteChoice("brand-led-warm")
|
|
11730
|
+
]
|
|
11731
|
+
}),
|
|
11732
|
+
defineCuratedSiteStyle({
|
|
11733
|
+
id: "site-style:modern-wellness",
|
|
11734
|
+
name: "Modern Wellness",
|
|
11735
|
+
description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
|
|
11736
|
+
generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
|
|
11737
|
+
tokenRecipes: {
|
|
11738
|
+
palette: "soft-natural",
|
|
11739
|
+
contrast: "standard",
|
|
11740
|
+
radius: "rounded",
|
|
11741
|
+
shadow: "subtle",
|
|
11742
|
+
typography: "clean-sans",
|
|
11743
|
+
spacing: "airy",
|
|
11744
|
+
motion: "subtle"
|
|
11745
|
+
},
|
|
11746
|
+
compositionBudget: balancedBudget,
|
|
11747
|
+
buttonPersonalityChoices: [
|
|
11748
|
+
buttonChoice("soft-pill"),
|
|
11749
|
+
buttonChoice("pebble"),
|
|
11750
|
+
buttonChoice("confident-chip")
|
|
11751
|
+
],
|
|
11752
|
+
paletteVariantChoices: [
|
|
11753
|
+
paletteChoice("soft-natural-sage"),
|
|
11754
|
+
paletteChoice("soft-natural-stone"),
|
|
11755
|
+
paletteChoice("warm-neutral-forest")
|
|
11756
|
+
]
|
|
11757
|
+
}),
|
|
11758
|
+
defineCuratedSiteStyle({
|
|
11759
|
+
id: "site-style:bold-launch",
|
|
11760
|
+
name: "Bold Launch",
|
|
11761
|
+
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
11762
|
+
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
11763
|
+
selectionKeywords: [
|
|
11764
|
+
"launch",
|
|
11765
|
+
"campaign",
|
|
11766
|
+
"preorder",
|
|
11767
|
+
"pre-order",
|
|
11768
|
+
"waitlist",
|
|
11769
|
+
"drop"
|
|
11770
|
+
],
|
|
11771
|
+
tokenRecipes: {
|
|
11772
|
+
palette: "high-contrast",
|
|
11773
|
+
contrast: "maximum",
|
|
11774
|
+
radius: "pill",
|
|
11775
|
+
shadow: "layered",
|
|
11776
|
+
typography: "clean-sans",
|
|
11777
|
+
spacing: "regular",
|
|
11778
|
+
motion: "expressive"
|
|
11779
|
+
},
|
|
11780
|
+
compositionBudget: expressiveBudget,
|
|
11781
|
+
buttonPersonalityChoices: [
|
|
11782
|
+
buttonChoice("ink-stamp"),
|
|
11783
|
+
buttonChoice("confident-chip"),
|
|
11784
|
+
buttonChoice("brushed-wash"),
|
|
11785
|
+
buttonChoice("pebble")
|
|
11786
|
+
],
|
|
11787
|
+
paletteVariantChoices: [
|
|
11788
|
+
paletteChoice("high-contrast-monochrome"),
|
|
11789
|
+
paletteChoice("high-contrast-ink"),
|
|
11790
|
+
paletteChoice("brand-led-jewel"),
|
|
11791
|
+
paletteChoice("brand-led-warm")
|
|
11792
|
+
]
|
|
11793
|
+
})
|
|
11794
|
+
];
|
|
11795
|
+
var curatedSiteStylesById = new Map(
|
|
11796
|
+
curatedSiteStyles.map((style) => [style.id, style])
|
|
11797
|
+
);
|
|
11798
|
+
|
|
11799
|
+
// ../theme-core/src/site-styles/designState.ts
|
|
11800
|
+
import { z as z24 } from "zod";
|
|
11801
|
+
|
|
11802
|
+
// ../theme-core/src/site-styles/rawStyleFields.ts
|
|
11803
|
+
var themeV2RuntimeStyleFieldNames = [
|
|
11804
|
+
"_frameStyles",
|
|
11805
|
+
"_sectionStyles",
|
|
11806
|
+
"_containerStyles",
|
|
11807
|
+
"_cardStyles",
|
|
11808
|
+
// styleGroup is legacy runtime transition wiring rather than a nested
|
|
11809
|
+
// override object, but normal editors should still never see it directly.
|
|
11810
|
+
"styleGroup"
|
|
12021
11811
|
];
|
|
12022
|
-
var
|
|
12023
|
-
|
|
11812
|
+
var themeV2BlockSpecificRawStyleFieldNames = [
|
|
11813
|
+
"_contentCardStyles",
|
|
11814
|
+
"_textCardStyles"
|
|
11815
|
+
];
|
|
11816
|
+
var themeV2NormalEditorRawStyleFieldNames = [
|
|
11817
|
+
...themeV2RuntimeStyleFieldNames,
|
|
11818
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
11819
|
+
];
|
|
11820
|
+
var themeV2NormalEditorRawStyleFieldNameSet = new Set(
|
|
11821
|
+
themeV2NormalEditorRawStyleFieldNames
|
|
11822
|
+
);
|
|
11823
|
+
|
|
11824
|
+
// ../theme-core/src/site-styles/designState.ts
|
|
11825
|
+
var themeV2DesignStateSchemaVersion = 1;
|
|
11826
|
+
var designResolutionPolicySchema = z24.enum(["generated", "user", "admin", "sdk"]);
|
|
11827
|
+
var runtimeStyleFieldNameSchema = z24.enum(themeV2RuntimeStyleFieldNames);
|
|
11828
|
+
var nonEmptyRuntimeStyleFieldNamesSchema = z24.array(runtimeStyleFieldNameSchema).min(1).transform((fields3) => [
|
|
11829
|
+
fields3[0],
|
|
11830
|
+
...fields3.slice(1)
|
|
11831
|
+
]);
|
|
11832
|
+
var heroLegibilityStrategySchema = z24.enum([
|
|
11833
|
+
"none",
|
|
11834
|
+
"scrim-gradient",
|
|
11835
|
+
"solid-panel"
|
|
11836
|
+
]);
|
|
11837
|
+
function uniqueNonEmpty(values) {
|
|
11838
|
+
const uniqueValues = [...new Set(values)];
|
|
11839
|
+
const firstValue = uniqueValues[0];
|
|
11840
|
+
if (!firstValue) {
|
|
11841
|
+
throw new Error("Expected at least one Theme V2 design state option.");
|
|
11842
|
+
}
|
|
11843
|
+
return [firstValue, ...uniqueValues.slice(1)];
|
|
11844
|
+
}
|
|
11845
|
+
var userPanelTreatments = uniqueNonEmpty(
|
|
11846
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
11847
|
+
);
|
|
11848
|
+
var userFlushTreatments = uniqueNonEmpty(
|
|
11849
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
11850
|
+
);
|
|
11851
|
+
var userFlushBleeds = uniqueNonEmpty(
|
|
11852
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
11853
|
+
);
|
|
11854
|
+
var contentFrameIntentSchema = z24.discriminatedUnion("kind", [
|
|
11855
|
+
z24.object({ kind: z24.literal("plain") }).strict(),
|
|
11856
|
+
z24.object({
|
|
11857
|
+
kind: z24.literal("panel"),
|
|
11858
|
+
treatment: z24.enum(userPanelTreatments)
|
|
11859
|
+
}).strict(),
|
|
11860
|
+
z24.object({
|
|
11861
|
+
kind: z24.literal("flush-panel"),
|
|
11862
|
+
treatment: z24.enum(userFlushTreatments),
|
|
11863
|
+
bleed: z24.enum(userFlushBleeds)
|
|
11864
|
+
}).strict()
|
|
11865
|
+
]);
|
|
11866
|
+
var blockDesignPlanSchema = z24.object({
|
|
11867
|
+
blockId: z24.string().min(1).transform(asDesignBlockId),
|
|
11868
|
+
blockKind: z24.string().min(1),
|
|
11869
|
+
purpose: z24.string().min(1),
|
|
11870
|
+
sectionSurface: z24.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
11871
|
+
contentFrame: contentFrameIntentSchema,
|
|
11872
|
+
itemSurface: z24.enum(userDesignOptionCatalog.itemSurfaces),
|
|
11873
|
+
transitionAfter: z24.enum(userDesignOptionCatalog.transitions),
|
|
11874
|
+
emphasis: z24.enum(userDesignOptionCatalog.emphases),
|
|
11875
|
+
heroLegibility: heroLegibilityStrategySchema.optional()
|
|
11876
|
+
}).strict();
|
|
11877
|
+
var styleAuthoritySchema = z24.discriminatedUnion("kind", [
|
|
11878
|
+
z24.object({
|
|
11879
|
+
kind: z24.literal("theme-v2"),
|
|
11880
|
+
source: designResolutionPolicySchema,
|
|
11881
|
+
siteStyleId: z24.string().min(1).transform(asSiteStyleId),
|
|
11882
|
+
templateId: z24.string().min(1).transform(asDesignSystemTemplateId),
|
|
11883
|
+
templateVersion: z24.number().int().nonnegative(),
|
|
11884
|
+
resolverVersion: z24.number().int().nonnegative()
|
|
11885
|
+
}).strict(),
|
|
11886
|
+
z24.object({
|
|
11887
|
+
kind: z24.literal("legacy-raw"),
|
|
11888
|
+
reason: z24.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
11889
|
+
}).strict(),
|
|
11890
|
+
z24.object({
|
|
11891
|
+
kind: z24.literal("advanced-detached"),
|
|
11892
|
+
reason: z24.literal("detached-custom-runtime-fields")
|
|
11893
|
+
}).strict()
|
|
11894
|
+
]);
|
|
11895
|
+
var blockRuntimeStyleAuthoritySchema = z24.object({
|
|
11896
|
+
unit: z24.literal("block-runtime-fields"),
|
|
11897
|
+
blockId: z24.string().min(1).transform(asDesignBlockId),
|
|
11898
|
+
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
11899
|
+
authority: styleAuthoritySchema
|
|
11900
|
+
}).strict();
|
|
11901
|
+
var persistedPageDesignStateV1Schema = z24.object({
|
|
11902
|
+
schemaVersion: z24.literal(themeV2DesignStateSchemaVersion),
|
|
11903
|
+
siteStyleId: z24.string().min(1).transform(asSiteStyleId),
|
|
11904
|
+
templateId: z24.string().min(1).transform(asDesignSystemTemplateId),
|
|
11905
|
+
templateVersion: z24.number().int().nonnegative(),
|
|
11906
|
+
resolverVersion: z24.number().int().nonnegative(),
|
|
11907
|
+
rhythmPresetId: z24.string().min(1),
|
|
11908
|
+
blocks: z24.array(blockDesignPlanSchema),
|
|
11909
|
+
styleAuthorities: z24.array(blockRuntimeStyleAuthoritySchema)
|
|
11910
|
+
}).strict();
|
|
11911
|
+
|
|
11912
|
+
// ../theme-core/src/site-styles/generatedSchemas.ts
|
|
11913
|
+
import { z as z25 } from "zod";
|
|
11914
|
+
function uniqueNonEmpty2(values) {
|
|
11915
|
+
const uniqueValues = [...new Set(values)];
|
|
11916
|
+
const firstValue = uniqueValues[0];
|
|
11917
|
+
if (!firstValue) {
|
|
11918
|
+
throw new Error("Expected at least one generated schema option.");
|
|
11919
|
+
}
|
|
11920
|
+
return [firstValue, ...uniqueValues.slice(1)];
|
|
11921
|
+
}
|
|
11922
|
+
var generatedPanelTreatments = uniqueNonEmpty2(
|
|
11923
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
12024
11924
|
);
|
|
11925
|
+
var generatedFlushTreatments = uniqueNonEmpty2(
|
|
11926
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
11927
|
+
);
|
|
11928
|
+
var generatedFlushBleeds = uniqueNonEmpty2(
|
|
11929
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
11930
|
+
);
|
|
11931
|
+
var generatedPanelFrameSchema = z25.object({
|
|
11932
|
+
kind: z25.literal("panel"),
|
|
11933
|
+
treatment: z25.enum(generatedPanelTreatments)
|
|
11934
|
+
}).strict();
|
|
11935
|
+
var generatedFlushPanelFrameSchema = z25.object({
|
|
11936
|
+
kind: z25.literal("flush-panel"),
|
|
11937
|
+
treatment: z25.enum(generatedFlushTreatments),
|
|
11938
|
+
bleed: z25.enum(generatedFlushBleeds)
|
|
11939
|
+
}).strict();
|
|
11940
|
+
var generatedContentFrameIntentSchema = z25.discriminatedUnion("kind", [
|
|
11941
|
+
z25.object({ kind: z25.literal("plain") }).strict(),
|
|
11942
|
+
generatedPanelFrameSchema,
|
|
11943
|
+
generatedFlushPanelFrameSchema
|
|
11944
|
+
]);
|
|
11945
|
+
var generatedSiteStyleIdSchema = z25.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
|
|
11946
|
+
function generatedChoiceSchema(valueSchema) {
|
|
11947
|
+
return z25.discriminatedUnion("kind", [
|
|
11948
|
+
z25.object({
|
|
11949
|
+
source: z25.literal("generated"),
|
|
11950
|
+
kind: z25.literal("auto")
|
|
11951
|
+
}).strict(),
|
|
11952
|
+
z25.object({
|
|
11953
|
+
source: z25.literal("generated"),
|
|
11954
|
+
kind: z25.literal("explicit"),
|
|
11955
|
+
value: valueSchema
|
|
11956
|
+
}).strict()
|
|
11957
|
+
]);
|
|
11958
|
+
}
|
|
11959
|
+
var generatedBlockDesignIntentSchema = z25.object({
|
|
11960
|
+
sectionSurface: generatedChoiceSchema(
|
|
11961
|
+
z25.enum(generatedDesignOptionCatalog.sectionSurfaces)
|
|
11962
|
+
),
|
|
11963
|
+
contentFrame: generatedChoiceSchema(generatedContentFrameIntentSchema),
|
|
11964
|
+
itemSurface: generatedChoiceSchema(
|
|
11965
|
+
z25.enum(generatedDesignOptionCatalog.itemSurfaces)
|
|
11966
|
+
),
|
|
11967
|
+
transitionAfter: generatedChoiceSchema(
|
|
11968
|
+
z25.enum(generatedDesignOptionCatalog.transitions)
|
|
11969
|
+
),
|
|
11970
|
+
emphasis: generatedChoiceSchema(
|
|
11971
|
+
z25.enum(generatedDesignOptionCatalog.emphases)
|
|
11972
|
+
)
|
|
11973
|
+
}).strict();
|
|
11974
|
+
var generatedMediaCompositionIntentSchema = z25.enum([
|
|
11975
|
+
"none",
|
|
11976
|
+
"supporting",
|
|
11977
|
+
"dominant"
|
|
11978
|
+
]);
|
|
11979
|
+
var generatedDecorativeCompositionIntentSchema = z25.enum([
|
|
11980
|
+
"none",
|
|
11981
|
+
"supporting"
|
|
11982
|
+
]);
|
|
11983
|
+
var generatedHeroLegibilityStrategySchema = z25.enum([
|
|
11984
|
+
"none",
|
|
11985
|
+
"scrim-gradient"
|
|
11986
|
+
]);
|
|
11987
|
+
var generatedBlockMediaIntentSchema = z25.object({
|
|
11988
|
+
media: generatedMediaCompositionIntentSchema,
|
|
11989
|
+
decorative: generatedDecorativeCompositionIntentSchema,
|
|
11990
|
+
heroLegibility: generatedChoiceSchema(generatedHeroLegibilityStrategySchema)
|
|
11991
|
+
}).strict();
|
|
11992
|
+
var generatedBoundaryIntentSchema = z25.object({
|
|
11993
|
+
transitionAfter: generatedChoiceSchema(
|
|
11994
|
+
z25.enum(generatedDesignOptionCatalog.transitions)
|
|
11995
|
+
)
|
|
11996
|
+
}).strict();
|
|
11997
|
+
var generatedPageDesignBlockIntentSchema = z25.object({
|
|
11998
|
+
blockId: z25.string().min(1),
|
|
11999
|
+
blockKind: z25.string().min(1),
|
|
12000
|
+
purpose: z25.string().min(1),
|
|
12001
|
+
design: generatedBlockDesignIntentSchema,
|
|
12002
|
+
mediaIntent: generatedBlockMediaIntentSchema,
|
|
12003
|
+
boundaryIntent: generatedBoundaryIntentSchema
|
|
12004
|
+
}).strict();
|
|
12005
|
+
var generatedPageDesignIntentSchema = z25.object({
|
|
12006
|
+
siteStyleId: generatedSiteStyleIdSchema,
|
|
12007
|
+
blocks: z25.array(generatedPageDesignBlockIntentSchema)
|
|
12008
|
+
}).strict();
|
|
12009
|
+
|
|
12010
|
+
// ../theme-core/src/site-styles/pageDesignIntent.ts
|
|
12011
|
+
import { z as z26 } from "zod";
|
|
12012
|
+
var pageDesignIntentSchemaVersion = 1;
|
|
12013
|
+
var pageDesignUserPinnedAppearanceChoiceSchema = z26.object({
|
|
12014
|
+
kind: z26.literal("user-pinned"),
|
|
12015
|
+
value: z26.string().min(1).transform(asAppearancePresetId)
|
|
12016
|
+
}).strict();
|
|
12017
|
+
var pageDesignUserPinnedBoundaryChoiceSchema = z26.object({
|
|
12018
|
+
kind: z26.literal("user-pinned"),
|
|
12019
|
+
value: z26.string().min(1).transform(asBoundaryOptionId)
|
|
12020
|
+
}).strict();
|
|
12021
|
+
var pageDesignBlockLookPinSchema = z26.object({
|
|
12022
|
+
blockId: z26.string().min(1).transform(asDesignBlockId),
|
|
12023
|
+
blockKind: z26.string().min(1),
|
|
12024
|
+
choice: pageDesignUserPinnedAppearanceChoiceSchema
|
|
12025
|
+
}).strict();
|
|
12026
|
+
var pageDesignBoundaryPinSchema = z26.object({
|
|
12027
|
+
boundaryId: z26.string().min(1).transform(asDesignBoundaryId),
|
|
12028
|
+
previousBlockId: z26.string().min(1).transform(asDesignBlockId),
|
|
12029
|
+
nextBlockId: z26.string().min(1).transform(asDesignBlockId),
|
|
12030
|
+
choice: pageDesignUserPinnedBoundaryChoiceSchema
|
|
12031
|
+
}).strict().superRefine((pin, ctx) => {
|
|
12032
|
+
const expectedBoundaryId = makeBoundaryId(
|
|
12033
|
+
pin.previousBlockId,
|
|
12034
|
+
pin.nextBlockId
|
|
12035
|
+
);
|
|
12036
|
+
if (pin.boundaryId !== expectedBoundaryId) {
|
|
12037
|
+
ctx.addIssue({
|
|
12038
|
+
code: z26.ZodIssueCode.custom,
|
|
12039
|
+
path: ["boundaryId"],
|
|
12040
|
+
message: `Boundary id must match previousBlockId and nextBlockId. Expected ${expectedBoundaryId}.`
|
|
12041
|
+
});
|
|
12042
|
+
}
|
|
12043
|
+
});
|
|
12044
|
+
var pageDesignIntentV1Schema = z26.object({
|
|
12045
|
+
schemaVersion: z26.literal(pageDesignIntentSchemaVersion),
|
|
12046
|
+
siteStyleId: z26.string().min(1).transform(asSiteStyleId),
|
|
12047
|
+
pageFlowPresetId: z26.string().min(1).transform(asPageFlowPresetId),
|
|
12048
|
+
blockLookPins: z26.array(pageDesignBlockLookPinSchema),
|
|
12049
|
+
boundaryPins: z26.array(pageDesignBoundaryPinSchema)
|
|
12050
|
+
}).strict().superRefine((intent, ctx) => {
|
|
12051
|
+
addDuplicateStringIssues(ctx, {
|
|
12052
|
+
values: intent.blockLookPins.map((pin) => pin.blockId),
|
|
12053
|
+
path: ["blockLookPins"],
|
|
12054
|
+
label: "block Look pin"
|
|
12055
|
+
});
|
|
12056
|
+
addDuplicateStringIssues(ctx, {
|
|
12057
|
+
values: intent.boundaryPins.map(
|
|
12058
|
+
(pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)
|
|
12059
|
+
),
|
|
12060
|
+
path: ["boundaryPins"],
|
|
12061
|
+
label: "boundary pin"
|
|
12062
|
+
});
|
|
12063
|
+
});
|
|
12064
|
+
function addDuplicateStringIssues(ctx, input) {
|
|
12065
|
+
const seen = /* @__PURE__ */ new Set();
|
|
12066
|
+
const duplicates = /* @__PURE__ */ new Set();
|
|
12067
|
+
for (const value of input.values) {
|
|
12068
|
+
if (seen.has(value)) {
|
|
12069
|
+
duplicates.add(value);
|
|
12070
|
+
}
|
|
12071
|
+
seen.add(value);
|
|
12072
|
+
}
|
|
12073
|
+
for (const duplicate of duplicates) {
|
|
12074
|
+
ctx.addIssue({
|
|
12075
|
+
code: z26.ZodIssueCode.custom,
|
|
12076
|
+
path: [...input.path],
|
|
12077
|
+
message: `Duplicate ${input.label}: ${duplicate}.`
|
|
12078
|
+
});
|
|
12079
|
+
}
|
|
12080
|
+
}
|
|
12081
|
+
function boundaryKey(previousBlockId, nextBlockId) {
|
|
12082
|
+
return makeBoundaryId(previousBlockId, nextBlockId);
|
|
12083
|
+
}
|
|
12025
12084
|
|
|
12026
12085
|
// ../theme-core/src/site-styles/runtimeCompiler.ts
|
|
12027
12086
|
function defineDesignRuntimeRules(rules) {
|
|
@@ -13366,7 +13425,8 @@ function ctaButton(opts) {
|
|
|
13366
13425
|
},
|
|
13367
13426
|
size: {
|
|
13368
13427
|
$bind: {
|
|
13369
|
-
from: sizePath
|
|
13428
|
+
from: sizePath,
|
|
13429
|
+
fallback: opts?.sizeFallback ?? "md"
|
|
13370
13430
|
}
|
|
13371
13431
|
},
|
|
13372
13432
|
...opts?.className ? { className: opts.className } : {},
|
|
@@ -19406,14 +19466,16 @@ var headerCta = ctaButton({
|
|
|
19406
19466
|
whenPath: "menu.ctaItem.label",
|
|
19407
19467
|
variantPath: "menu.ctaItem.variant",
|
|
19408
19468
|
linkPath: "menu.ctaItem.link",
|
|
19409
|
-
|
|
19469
|
+
sizeFallback: "sm",
|
|
19470
|
+
className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
|
|
19410
19471
|
});
|
|
19411
19472
|
var mobileCta = ctaButton({
|
|
19412
19473
|
basePath: "menu.ctaItem",
|
|
19413
19474
|
whenPath: "menu.ctaItem.label",
|
|
19414
19475
|
variantPath: "menu.ctaItem.variant",
|
|
19415
19476
|
linkPath: "menu.ctaItem.link",
|
|
19416
|
-
|
|
19477
|
+
sizeFallback: "md",
|
|
19478
|
+
className: "nav-mobile-cta rb-w-full"
|
|
19417
19479
|
});
|
|
19418
19480
|
var mobileToggleIcon = stack({ gap: "xs", className: "nav-mobile-icon" }, [
|
|
19419
19481
|
{
|