@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/config.mjs
CHANGED
|
@@ -7865,861 +7865,482 @@ function assertUniqueLayoutProfileKeys(profiles) {
|
|
|
7865
7865
|
}
|
|
7866
7866
|
}
|
|
7867
7867
|
|
|
7868
|
-
// ../theme-core/src/
|
|
7868
|
+
// ../theme-core/src/buttons/personalities/types.ts
|
|
7869
|
+
import { z as z11 } from "zod";
|
|
7870
|
+
|
|
7871
|
+
// ../theme-core/src/buttons/types.ts
|
|
7869
7872
|
import { z as z9 } from "zod";
|
|
7873
|
+
var VARIANT_ROLES = [
|
|
7874
|
+
"primary",
|
|
7875
|
+
"secondary",
|
|
7876
|
+
"outline",
|
|
7877
|
+
"ghost",
|
|
7878
|
+
"link",
|
|
7879
|
+
"tertiary",
|
|
7880
|
+
"accent"
|
|
7881
|
+
];
|
|
7882
|
+
var cornerStyleSchema = z9.enum(["square", "rounded", "pill"]);
|
|
7883
|
+
var shadowSizeSchema = z9.enum(["none", "low", "medium", "high"]);
|
|
7884
|
+
var textTransformSchema = z9.enum(["none", "uppercase", "lowercase", "capitalize"]);
|
|
7885
|
+
var fontWeightSchema = z9.union([z9.literal(500), z9.literal(600), z9.literal(700)]);
|
|
7886
|
+
var buttonTypographySchema = z9.enum(["body", "heading"]);
|
|
7887
|
+
var letterSpacingSchema = z9.enum(["tight", "normal", "loose"]);
|
|
7888
|
+
var hoverTransformSchema = z9.enum(["none", "lift", "scale", "press"]);
|
|
7889
|
+
var hoverColorSchema = z9.enum(["none", "brighten", "darken", "saturate", "token"]);
|
|
7890
|
+
var buttonPaddingPresetSchema = z9.enum(["compact", "default", "spacious"]);
|
|
7891
|
+
var gradientStyleSchema = z9.enum(["linear", "radial", "conic"]);
|
|
7892
|
+
var gradientSharpnessSchema = z9.enum(["smooth", "medium", "hard"]);
|
|
7893
|
+
var prioritySchema = z9.union([z9.literal(1), z9.literal(2), z9.literal(3)]);
|
|
7894
|
+
var variantRoleSchema = z9.enum(VARIANT_ROLES);
|
|
7895
|
+
var buttonSizeNameSchema = z9.enum(["sm", "md", "lg", "xl"]);
|
|
7896
|
+
var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
|
|
7897
|
+
var paddingShorthandSchema = z9.string().refine(
|
|
7898
|
+
(value) => {
|
|
7899
|
+
const parts = value.split(/\s+/).filter(Boolean);
|
|
7900
|
+
return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
|
|
7901
|
+
},
|
|
7902
|
+
{
|
|
7903
|
+
message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
|
|
7904
|
+
}
|
|
7905
|
+
);
|
|
7906
|
+
var buttonSizeConfigSchema = z9.object({
|
|
7907
|
+
padding: paddingShorthandSchema,
|
|
7908
|
+
fontSize: z9.string().optional()
|
|
7909
|
+
});
|
|
7910
|
+
var buttonSizesSchema = z9.object({
|
|
7911
|
+
sm: buttonSizeConfigSchema,
|
|
7912
|
+
md: buttonSizeConfigSchema,
|
|
7913
|
+
lg: buttonSizeConfigSchema,
|
|
7914
|
+
xl: buttonSizeConfigSchema.optional()
|
|
7915
|
+
}).transform(({ sm, md, lg, xl }) => ({
|
|
7916
|
+
sm,
|
|
7917
|
+
md,
|
|
7918
|
+
lg,
|
|
7919
|
+
xl: xl ?? lg
|
|
7920
|
+
}));
|
|
7921
|
+
var buttonGlobalSettingsSchema = z9.object({
|
|
7922
|
+
cornerStyle: cornerStyleSchema,
|
|
7923
|
+
cornerRadius: z9.number().min(0).max(24).optional(),
|
|
7924
|
+
shadow: shadowSizeSchema,
|
|
7925
|
+
textTransform: textTransformSchema,
|
|
7926
|
+
fontWeight: fontWeightSchema,
|
|
7927
|
+
/**
|
|
7928
|
+
* @deprecated Set per-variant via `variant.border.widthClass` instead.
|
|
7929
|
+
* Schema field is preserved so existing presets parse; the value is unread
|
|
7930
|
+
* by the current generator and will be removed once the legacy
|
|
7931
|
+
* `primitives/content/components/Button.tsx` slot exports are deleted.
|
|
7932
|
+
*/
|
|
7933
|
+
borderWidth: z9.union([z9.literal(1), z9.literal(2), z9.literal(3)]),
|
|
7934
|
+
// === Family-level typography ===
|
|
7935
|
+
// Typography source (body or heading) — selects which theme typography pool to inherit
|
|
7936
|
+
typography: buttonTypographySchema.optional(),
|
|
7937
|
+
// Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
|
|
7938
|
+
// Sized variants get this as default; fixed variants inherit unless they override.
|
|
7939
|
+
// Size class CSS may still override at run time for sized variants.
|
|
7940
|
+
fontSize: z9.string().optional(),
|
|
7941
|
+
// Letter spacing applied to all variants
|
|
7942
|
+
letterSpacing: letterSpacingSchema.optional(),
|
|
7943
|
+
// Italic style
|
|
7944
|
+
italic: z9.boolean().optional(),
|
|
7945
|
+
// Padding preset (applies to sized variants without a sizes config)
|
|
7946
|
+
paddingPreset: buttonPaddingPresetSchema.optional(),
|
|
7947
|
+
hoverTransform: hoverTransformSchema,
|
|
7948
|
+
hoverColor: hoverColorSchema,
|
|
7949
|
+
// When hoverColor is 'token', this specifies which token to use
|
|
7950
|
+
hoverColorToken: z9.string().optional(),
|
|
7951
|
+
// Gradient settings (if any variant uses gradients)
|
|
7952
|
+
gradientStyle: gradientStyleSchema.optional(),
|
|
7953
|
+
gradientAngle: z9.number().min(0).max(360).optional(),
|
|
7954
|
+
gradientSharpness: gradientSharpnessSchema.optional()
|
|
7955
|
+
});
|
|
7956
|
+
var gradientDirectionSchema = z9.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
7957
|
+
var buttonBackgroundSchema = z9.discriminatedUnion("type", [
|
|
7958
|
+
z9.object({ type: z9.literal("solid"), colorToken: z9.string() }),
|
|
7959
|
+
z9.object({
|
|
7960
|
+
type: z9.literal("gradient"),
|
|
7961
|
+
stops: z9.array(z9.string()).min(2),
|
|
7962
|
+
direction: gradientDirectionSchema
|
|
7963
|
+
}),
|
|
7964
|
+
z9.object({ type: z9.literal("transparent") })
|
|
7965
|
+
]);
|
|
7966
|
+
var effectApplicationSchema = z9.object({
|
|
7967
|
+
effectId: z9.string(),
|
|
7968
|
+
options: z9.record(z9.string(), z9.any()).optional()
|
|
7969
|
+
});
|
|
7970
|
+
var buttonBorderSchema = z9.object({
|
|
7971
|
+
widthClass: z9.string(),
|
|
7972
|
+
colorToken: z9.string()
|
|
7973
|
+
});
|
|
7974
|
+
var variantShadowSchema = z9.object({
|
|
7975
|
+
elevation: z9.enum(["none", "low", "medium", "high"]),
|
|
7976
|
+
softness: z9.enum(["crisp", "soft", "hard"]).nullable(),
|
|
7977
|
+
position: z9.enum(["bottom", "bottom-right"]).default("bottom")
|
|
7978
|
+
});
|
|
7979
|
+
var variantEffectsSchema = z9.object({
|
|
7980
|
+
base: z9.array(effectApplicationSchema).optional(),
|
|
7981
|
+
hover: z9.array(effectApplicationSchema).optional(),
|
|
7982
|
+
active: z9.array(effectApplicationSchema).optional(),
|
|
7983
|
+
focus: z9.array(effectApplicationSchema).optional()
|
|
7984
|
+
});
|
|
7985
|
+
var variantSizeOverridesSchema = z9.object({
|
|
7986
|
+
sm: buttonSizeConfigSchema.optional(),
|
|
7987
|
+
md: buttonSizeConfigSchema.optional(),
|
|
7988
|
+
lg: buttonSizeConfigSchema.optional(),
|
|
7989
|
+
xl: buttonSizeConfigSchema.optional()
|
|
7990
|
+
});
|
|
7991
|
+
var buttonVariantSchema = z9.object({
|
|
7992
|
+
id: z9.string(),
|
|
7993
|
+
name: z9.string().min(1).max(20),
|
|
7994
|
+
enabled: z9.boolean(),
|
|
7995
|
+
priority: prioritySchema,
|
|
7996
|
+
// Base appearance (token-based)
|
|
7997
|
+
background: buttonBackgroundSchema,
|
|
7998
|
+
textColorToken: z9.string(),
|
|
7999
|
+
/** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
|
|
8000
|
+
borderRadius: z9.string().optional(),
|
|
8001
|
+
// Optional shadow override (uses theme.shadow if not specified)
|
|
8002
|
+
shadow: variantShadowSchema.optional(),
|
|
8003
|
+
// Border (optional)
|
|
8004
|
+
border: buttonBorderSchema.optional(),
|
|
8005
|
+
// Hover background token (per-variant override, takes precedence over global hoverColorToken)
|
|
8006
|
+
hoverBackgroundToken: z9.string().optional(),
|
|
8007
|
+
// Effect composition
|
|
8008
|
+
effects: variantEffectsSchema.optional(),
|
|
8009
|
+
// Per-variant size overrides — see VariantSizeOverrides
|
|
8010
|
+
sizes: variantSizeOverridesSchema.optional()
|
|
8011
|
+
});
|
|
8012
|
+
var buttonSystemSchema = z9.object({
|
|
8013
|
+
global: buttonGlobalSettingsSchema,
|
|
8014
|
+
variants: z9.array(buttonVariantSchema).min(1).max(6),
|
|
8015
|
+
sizes: buttonSizesSchema.optional()
|
|
8016
|
+
});
|
|
8017
|
+
|
|
8018
|
+
// ../theme-core/src/site-styles/styleTags.ts
|
|
8019
|
+
import { z as z10 } from "zod";
|
|
7870
8020
|
var STYLE_AXIS_VALUES = {
|
|
7871
8021
|
tone: ["minimal", "classic", "bold"],
|
|
7872
8022
|
energy: ["calm", "vibrant"],
|
|
7873
8023
|
motion: ["subtle", "standard", "expressive"],
|
|
7874
8024
|
era: ["editorial", "modern", "organic", "technical", "retro"]
|
|
7875
8025
|
};
|
|
7876
|
-
var styleTagsSchema =
|
|
7877
|
-
tone:
|
|
7878
|
-
energy:
|
|
7879
|
-
motion:
|
|
7880
|
-
era:
|
|
8026
|
+
var styleTagsSchema = z10.object({
|
|
8027
|
+
tone: z10.enum(STYLE_AXIS_VALUES.tone).optional(),
|
|
8028
|
+
energy: z10.enum(STYLE_AXIS_VALUES.energy).optional(),
|
|
8029
|
+
motion: z10.enum(STYLE_AXIS_VALUES.motion).optional(),
|
|
8030
|
+
era: z10.enum(STYLE_AXIS_VALUES.era).optional()
|
|
7881
8031
|
});
|
|
7882
8032
|
|
|
7883
|
-
// ../theme-core/src/
|
|
7884
|
-
|
|
7885
|
-
|
|
7886
|
-
|
|
7887
|
-
panelFrame("raised"),
|
|
7888
|
-
flushPanelFrame({ bleed: "start" })
|
|
7889
|
-
];
|
|
7890
|
-
var userContentFrames = [
|
|
7891
|
-
...generatedContentFrames,
|
|
7892
|
-
panelFrame("editorial"),
|
|
7893
|
-
flushPanelFrame({ bleed: "end" }),
|
|
7894
|
-
flushPanelFrame({ bleed: "both" })
|
|
7895
|
-
];
|
|
7896
|
-
var generatedDesignOptionCatalog = {
|
|
7897
|
-
source: "generated",
|
|
7898
|
-
sectionSurfaces: ["base", "muted-band", "accent-band", "hero-image"],
|
|
7899
|
-
contentFrames: generatedContentFrames,
|
|
7900
|
-
itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
|
|
7901
|
-
transitions: ["none", "soft-fade-short", "soft-fade-long"],
|
|
7902
|
-
emphases: ["low", "medium", "high"],
|
|
7903
|
-
detachedCustom: false
|
|
7904
|
-
};
|
|
7905
|
-
var userDesignOptionCatalog = {
|
|
7906
|
-
source: "user",
|
|
7907
|
-
sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
7908
|
-
contentFrames: userContentFrames,
|
|
7909
|
-
itemSurfaces: [
|
|
7910
|
-
...generatedDesignOptionCatalog.itemSurfaces,
|
|
7911
|
-
"inset",
|
|
7912
|
-
"editorial"
|
|
7913
|
-
],
|
|
7914
|
-
transitions: [
|
|
7915
|
-
...generatedDesignOptionCatalog.transitions,
|
|
7916
|
-
"wave-edge",
|
|
7917
|
-
"angle-edge"
|
|
7918
|
-
],
|
|
7919
|
-
emphases: generatedDesignOptionCatalog.emphases,
|
|
7920
|
-
detachedCustom: false
|
|
7921
|
-
};
|
|
7922
|
-
var advancedDesignOptionCatalog = {
|
|
7923
|
-
source: "advanced",
|
|
7924
|
-
sectionSurfaces: userDesignOptionCatalog.sectionSurfaces,
|
|
7925
|
-
contentFrames: userDesignOptionCatalog.contentFrames,
|
|
7926
|
-
itemSurfaces: userDesignOptionCatalog.itemSurfaces,
|
|
7927
|
-
transitions: userDesignOptionCatalog.transitions,
|
|
7928
|
-
emphases: userDesignOptionCatalog.emphases,
|
|
7929
|
-
detachedCustom: true
|
|
7930
|
-
};
|
|
7931
|
-
|
|
7932
|
-
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
7933
|
-
var curatedSiteStyleIdValues = [
|
|
7934
|
-
"site-style:calm-studio",
|
|
7935
|
-
"site-style:clear-professional",
|
|
7936
|
-
"site-style:warm-editorial",
|
|
7937
|
-
"site-style:bright-community",
|
|
7938
|
-
"site-style:quiet-luxury",
|
|
7939
|
-
"site-style:practical-services",
|
|
7940
|
-
"site-style:modern-wellness",
|
|
7941
|
-
"site-style:bold-launch"
|
|
7942
|
-
];
|
|
7943
|
-
var quietBudget = {
|
|
7944
|
-
accentDensity: "low",
|
|
7945
|
-
panelDensity: "medium",
|
|
7946
|
-
transitionMix: "quiet",
|
|
7947
|
-
primaryCtaLimit: 2,
|
|
7948
|
-
mediaDensity: "medium",
|
|
7949
|
-
decorativeRepetition: "low"
|
|
7950
|
-
};
|
|
7951
|
-
var balancedBudget = {
|
|
7952
|
-
accentDensity: "medium",
|
|
7953
|
-
panelDensity: "medium",
|
|
7954
|
-
transitionMix: "balanced",
|
|
7955
|
-
primaryCtaLimit: 3,
|
|
7956
|
-
mediaDensity: "medium",
|
|
7957
|
-
decorativeRepetition: "medium"
|
|
7958
|
-
};
|
|
7959
|
-
var expressiveBudget = {
|
|
7960
|
-
accentDensity: "high",
|
|
7961
|
-
panelDensity: "high",
|
|
7962
|
-
transitionMix: "expressive",
|
|
7963
|
-
primaryCtaLimit: 3,
|
|
7964
|
-
mediaDensity: "high",
|
|
7965
|
-
decorativeRepetition: "medium"
|
|
7966
|
-
};
|
|
7967
|
-
function uniqueContentFrameKinds() {
|
|
7968
|
-
const kinds = [...new Set(
|
|
7969
|
-
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
7970
|
-
)];
|
|
7971
|
-
const firstKind = kinds[0];
|
|
7972
|
-
if (!firstKind) {
|
|
7973
|
-
throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
|
|
8033
|
+
// ../theme-core/src/buttons/personalities/types.ts
|
|
8034
|
+
function asButtonPersonalityId(value) {
|
|
8035
|
+
if (value.length === 0) {
|
|
8036
|
+
throw new Error("ButtonPersonalityId must be a non-empty string");
|
|
7974
8037
|
}
|
|
7975
|
-
return
|
|
8038
|
+
return value;
|
|
7976
8039
|
}
|
|
7977
|
-
var
|
|
7978
|
-
|
|
8040
|
+
var buttonPersonalityIdSchema = z11.string().min(1).transform((value) => asButtonPersonalityId(value));
|
|
8041
|
+
var buttonPersonalitySchema = z11.object({
|
|
8042
|
+
id: buttonPersonalityIdSchema,
|
|
8043
|
+
name: z11.string().min(1),
|
|
8044
|
+
description: z11.string().min(1),
|
|
8045
|
+
tags: styleTagsSchema,
|
|
8046
|
+
buttonSystem: buttonSystemSchema
|
|
8047
|
+
});
|
|
8048
|
+
function defineButtonPersonality(input) {
|
|
7979
8049
|
return {
|
|
7980
|
-
id:
|
|
8050
|
+
id: asButtonPersonalityId(input.id),
|
|
7981
8051
|
name: input.name,
|
|
7982
8052
|
description: input.description,
|
|
7983
|
-
|
|
7984
|
-
|
|
7985
|
-
template: {
|
|
7986
|
-
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
7987
|
-
name: input.name,
|
|
7988
|
-
version: 1,
|
|
7989
|
-
tokenRecipes: input.tokenRecipes,
|
|
7990
|
-
compositionBudget: input.compositionBudget,
|
|
7991
|
-
supportedSectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
7992
|
-
supportedContentFrames: generatedContentFrameKinds,
|
|
7993
|
-
supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
7994
|
-
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
7995
|
-
},
|
|
7996
|
-
// The library IDs are already branded at construction (`asButtonPersonalityId`
|
|
7997
|
-
// / `asPaletteVariantId`); the closed-union input type guarantees only
|
|
7998
|
-
// shipped IDs reach this branch.
|
|
7999
|
-
defaultButtonPersonalityId: input.defaultButtonPersonalityId,
|
|
8000
|
-
acceptedButtons: input.acceptedButtons,
|
|
8001
|
-
defaultPaletteVariantId: input.defaultPaletteVariantId,
|
|
8002
|
-
acceptedPalettes: input.acceptedPalettes
|
|
8053
|
+
tags: input.tags,
|
|
8054
|
+
buttonSystem: input.buttonSystem
|
|
8003
8055
|
};
|
|
8004
8056
|
}
|
|
8005
|
-
|
|
8006
|
-
|
|
8007
|
-
|
|
8008
|
-
|
|
8009
|
-
|
|
8010
|
-
|
|
8011
|
-
|
|
8012
|
-
|
|
8013
|
-
|
|
8014
|
-
|
|
8015
|
-
shadow: "
|
|
8016
|
-
|
|
8017
|
-
|
|
8018
|
-
|
|
8019
|
-
|
|
8020
|
-
|
|
8021
|
-
defaultButtonPersonalityId: "soft-pill",
|
|
8022
|
-
acceptedButtons: { tone: ["minimal", "classic"], era: ["organic", "editorial"] },
|
|
8023
|
-
defaultPaletteVariantId: "soft-natural-sage",
|
|
8024
|
-
acceptedPalettes: { tone: ["minimal", "classic"], era: ["organic"] }
|
|
8025
|
-
}),
|
|
8026
|
-
defineCuratedSiteStyle({
|
|
8027
|
-
id: "site-style:clear-professional",
|
|
8028
|
-
name: "Clear Professional",
|
|
8029
|
-
description: "Crisp, trustworthy, and direct for local services and consultancies.",
|
|
8030
|
-
generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
|
|
8031
|
-
tokenRecipes: {
|
|
8032
|
-
palette: "brand-led",
|
|
8033
|
-
contrast: "strong",
|
|
8034
|
-
radius: "soft",
|
|
8035
|
-
shadow: "subtle",
|
|
8036
|
-
typography: "clean-sans",
|
|
8037
|
-
spacing: "regular",
|
|
8038
|
-
motion: "subtle"
|
|
8057
|
+
|
|
8058
|
+
// ../theme-core/src/buttons/personalities/brushed-wash.ts
|
|
8059
|
+
var brushedWash = defineButtonPersonality({
|
|
8060
|
+
id: "brushed-wash",
|
|
8061
|
+
name: "Brushed Wash",
|
|
8062
|
+
description: "Watercolour-gradient buttons with soft shadows and generous padding.",
|
|
8063
|
+
tags: { tone: "classic", energy: "vibrant", motion: "standard", era: "organic" },
|
|
8064
|
+
buttonSystem: {
|
|
8065
|
+
global: {
|
|
8066
|
+
cornerStyle: "rounded",
|
|
8067
|
+
shadow: "low",
|
|
8068
|
+
textTransform: "none",
|
|
8069
|
+
fontWeight: 500,
|
|
8070
|
+
borderWidth: 1,
|
|
8071
|
+
hoverTransform: "none",
|
|
8072
|
+
hoverColor: "none"
|
|
8039
8073
|
},
|
|
8040
|
-
|
|
8041
|
-
|
|
8042
|
-
|
|
8043
|
-
|
|
8044
|
-
|
|
8045
|
-
}),
|
|
8046
|
-
defineCuratedSiteStyle({
|
|
8047
|
-
id: "site-style:warm-editorial",
|
|
8048
|
-
name: "Warm Editorial",
|
|
8049
|
-
description: "Story-led and textured for educators, makers, venues, and retreats.",
|
|
8050
|
-
generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
|
|
8051
|
-
tokenRecipes: {
|
|
8052
|
-
palette: "warm-neutral",
|
|
8053
|
-
contrast: "standard",
|
|
8054
|
-
radius: "square",
|
|
8055
|
-
shadow: "none",
|
|
8056
|
-
typography: "serif-editorial",
|
|
8057
|
-
spacing: "airy",
|
|
8058
|
-
motion: "subtle"
|
|
8074
|
+
sizes: {
|
|
8075
|
+
sm: { padding: "0.75rem 2rem", fontSize: "text-sm" },
|
|
8076
|
+
md: { padding: "1rem 2.5rem" },
|
|
8077
|
+
lg: { padding: "1.25rem 3rem", fontSize: "text-lg" },
|
|
8078
|
+
xl: { padding: "1.625rem 3.75rem", fontSize: "text-xl" }
|
|
8059
8079
|
},
|
|
8060
|
-
|
|
8061
|
-
|
|
8062
|
-
|
|
8063
|
-
|
|
8064
|
-
|
|
8065
|
-
|
|
8066
|
-
|
|
8067
|
-
|
|
8068
|
-
|
|
8069
|
-
|
|
8070
|
-
|
|
8071
|
-
|
|
8072
|
-
|
|
8073
|
-
|
|
8074
|
-
|
|
8075
|
-
|
|
8076
|
-
|
|
8077
|
-
|
|
8078
|
-
|
|
8080
|
+
variants: [
|
|
8081
|
+
{
|
|
8082
|
+
id: "primary",
|
|
8083
|
+
name: "Primary",
|
|
8084
|
+
enabled: true,
|
|
8085
|
+
priority: 1,
|
|
8086
|
+
background: {
|
|
8087
|
+
type: "gradient",
|
|
8088
|
+
stops: ["primary", "accent"],
|
|
8089
|
+
direction: "to-r"
|
|
8090
|
+
},
|
|
8091
|
+
textColorToken: "primaryForeground",
|
|
8092
|
+
borderRadius: "rounded-lg",
|
|
8093
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
8094
|
+
effects: {
|
|
8095
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
8096
|
+
}
|
|
8097
|
+
},
|
|
8098
|
+
{
|
|
8099
|
+
id: "secondary",
|
|
8100
|
+
name: "Secondary",
|
|
8101
|
+
enabled: true,
|
|
8102
|
+
priority: 2,
|
|
8103
|
+
background: {
|
|
8104
|
+
type: "gradient",
|
|
8105
|
+
stops: ["secondary", "accent"],
|
|
8106
|
+
direction: "to-br"
|
|
8107
|
+
},
|
|
8108
|
+
textColorToken: "primaryForeground",
|
|
8109
|
+
borderRadius: "rounded-lg",
|
|
8110
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
8111
|
+
effects: {
|
|
8112
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
|
|
8113
|
+
}
|
|
8114
|
+
},
|
|
8115
|
+
{
|
|
8116
|
+
id: "outline",
|
|
8117
|
+
name: "Outline",
|
|
8118
|
+
enabled: true,
|
|
8119
|
+
priority: 3,
|
|
8120
|
+
background: { type: "transparent" },
|
|
8121
|
+
textColorToken: "primary",
|
|
8122
|
+
borderRadius: "rounded-lg",
|
|
8123
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
8124
|
+
effects: {
|
|
8125
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
8126
|
+
}
|
|
8127
|
+
},
|
|
8128
|
+
{
|
|
8129
|
+
id: "ghost",
|
|
8130
|
+
name: "Ghost",
|
|
8131
|
+
enabled: true,
|
|
8132
|
+
priority: 3,
|
|
8133
|
+
background: { type: "transparent" },
|
|
8134
|
+
textColorToken: "text",
|
|
8135
|
+
borderRadius: "rounded-lg",
|
|
8136
|
+
effects: {
|
|
8137
|
+
hover: [
|
|
8138
|
+
{ effectId: "background-on-hover", options: { colorToken: "surface" } }
|
|
8139
|
+
]
|
|
8140
|
+
}
|
|
8141
|
+
}
|
|
8142
|
+
]
|
|
8143
|
+
}
|
|
8144
|
+
});
|
|
8145
|
+
|
|
8146
|
+
// ../theme-core/src/buttons/personalities/confident-chip.ts
|
|
8147
|
+
var confidentChip = defineButtonPersonality({
|
|
8148
|
+
id: "confident-chip",
|
|
8149
|
+
name: "Confident Chip",
|
|
8150
|
+
description: "Mid-radius solid buttons with a crisp hover.",
|
|
8151
|
+
tags: { tone: "classic", energy: "calm", motion: "standard", era: "modern" },
|
|
8152
|
+
buttonSystem: {
|
|
8153
|
+
global: {
|
|
8154
|
+
cornerStyle: "rounded",
|
|
8155
|
+
shadow: "medium",
|
|
8156
|
+
textTransform: "none",
|
|
8157
|
+
fontWeight: 600,
|
|
8158
|
+
borderWidth: 1,
|
|
8159
|
+
hoverTransform: "none",
|
|
8160
|
+
hoverColor: "none"
|
|
8079
8161
|
},
|
|
8080
|
-
|
|
8081
|
-
|
|
8082
|
-
|
|
8083
|
-
|
|
8084
|
-
|
|
8085
|
-
|
|
8086
|
-
|
|
8087
|
-
|
|
8088
|
-
|
|
8089
|
-
|
|
8090
|
-
|
|
8091
|
-
|
|
8092
|
-
|
|
8093
|
-
|
|
8094
|
-
|
|
8095
|
-
|
|
8096
|
-
|
|
8097
|
-
|
|
8098
|
-
|
|
8099
|
-
|
|
8100
|
-
|
|
8101
|
-
|
|
8162
|
+
variants: [
|
|
8163
|
+
{
|
|
8164
|
+
id: "primary",
|
|
8165
|
+
name: "Primary",
|
|
8166
|
+
enabled: true,
|
|
8167
|
+
priority: 1,
|
|
8168
|
+
background: { type: "solid", colorToken: "primary" },
|
|
8169
|
+
textColorToken: "primaryForeground",
|
|
8170
|
+
borderRadius: "rounded-md",
|
|
8171
|
+
shadow: { elevation: "medium", softness: "soft", position: "bottom" },
|
|
8172
|
+
effects: {
|
|
8173
|
+
hover: [{ effectId: "darken-background", options: { amount: 60 } }],
|
|
8174
|
+
active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
|
|
8175
|
+
}
|
|
8176
|
+
},
|
|
8177
|
+
{
|
|
8178
|
+
id: "secondary",
|
|
8179
|
+
name: "Secondary",
|
|
8180
|
+
enabled: true,
|
|
8181
|
+
priority: 2,
|
|
8182
|
+
background: { type: "solid", colorToken: "surface" },
|
|
8183
|
+
textColorToken: "text",
|
|
8184
|
+
borderRadius: "rounded-md",
|
|
8185
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
8186
|
+
effects: {
|
|
8187
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
|
|
8188
|
+
}
|
|
8189
|
+
},
|
|
8190
|
+
{
|
|
8191
|
+
id: "outline",
|
|
8192
|
+
name: "Outline",
|
|
8193
|
+
enabled: true,
|
|
8194
|
+
priority: 3,
|
|
8195
|
+
background: { type: "transparent" },
|
|
8196
|
+
textColorToken: "primary",
|
|
8197
|
+
borderRadius: "rounded-md",
|
|
8198
|
+
border: { widthClass: "border", colorToken: "primary" },
|
|
8199
|
+
effects: {
|
|
8200
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
8201
|
+
}
|
|
8202
|
+
},
|
|
8203
|
+
{
|
|
8204
|
+
id: "ghost",
|
|
8205
|
+
name: "Ghost",
|
|
8206
|
+
enabled: true,
|
|
8207
|
+
priority: 3,
|
|
8208
|
+
background: { type: "transparent" },
|
|
8209
|
+
textColorToken: "primary",
|
|
8210
|
+
borderRadius: "rounded-md",
|
|
8211
|
+
effects: {
|
|
8212
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
8213
|
+
}
|
|
8214
|
+
}
|
|
8215
|
+
]
|
|
8216
|
+
}
|
|
8217
|
+
});
|
|
8218
|
+
|
|
8219
|
+
// ../theme-core/src/buttons/personalities/editorial-link.ts
|
|
8220
|
+
var editorialLink = defineButtonPersonality({
|
|
8221
|
+
id: "editorial-link",
|
|
8222
|
+
name: "Editorial Link",
|
|
8223
|
+
description: "Link-style with a growing underline. Refined, typographic.",
|
|
8224
|
+
tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
|
|
8225
|
+
buttonSystem: {
|
|
8226
|
+
global: {
|
|
8227
|
+
cornerStyle: "square",
|
|
8102
8228
|
shadow: "none",
|
|
8103
|
-
|
|
8104
|
-
|
|
8105
|
-
|
|
8106
|
-
|
|
8107
|
-
|
|
8108
|
-
defaultButtonPersonalityId: "editorial-link",
|
|
8109
|
-
acceptedButtons: { tone: ["minimal", "classic"], era: ["editorial", "organic"] },
|
|
8110
|
-
defaultPaletteVariantId: "high-contrast-charcoal",
|
|
8111
|
-
acceptedPalettes: { tone: ["minimal", "classic"], era: ["editorial", "organic"] }
|
|
8112
|
-
}),
|
|
8113
|
-
defineCuratedSiteStyle({
|
|
8114
|
-
id: "site-style:practical-services",
|
|
8115
|
-
name: "Practical Services",
|
|
8116
|
-
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
8117
|
-
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
8118
|
-
selectionKeywords: [
|
|
8119
|
-
"repair",
|
|
8120
|
-
"plumb",
|
|
8121
|
-
"electric",
|
|
8122
|
-
"cleaning",
|
|
8123
|
-
"landscap",
|
|
8124
|
-
"contractor"
|
|
8125
|
-
],
|
|
8126
|
-
tokenRecipes: {
|
|
8127
|
-
palette: "brand-led",
|
|
8128
|
-
contrast: "maximum",
|
|
8129
|
-
radius: "soft",
|
|
8130
|
-
shadow: "subtle",
|
|
8131
|
-
typography: "clean-sans",
|
|
8132
|
-
spacing: "compact",
|
|
8133
|
-
motion: "none"
|
|
8134
|
-
},
|
|
8135
|
-
compositionBudget: quietBudget,
|
|
8136
|
-
defaultButtonPersonalityId: "confident-chip",
|
|
8137
|
-
acceptedButtons: { tone: ["minimal", "classic", "bold"], era: ["modern", "editorial"] },
|
|
8138
|
-
defaultPaletteVariantId: "brand-led-cool",
|
|
8139
|
-
acceptedPalettes: { tone: ["minimal", "classic", "bold"], era: ["modern", "editorial"] }
|
|
8140
|
-
}),
|
|
8141
|
-
defineCuratedSiteStyle({
|
|
8142
|
-
id: "site-style:modern-wellness",
|
|
8143
|
-
name: "Modern Wellness",
|
|
8144
|
-
description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
|
|
8145
|
-
generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
|
|
8146
|
-
tokenRecipes: {
|
|
8147
|
-
palette: "soft-natural",
|
|
8148
|
-
contrast: "standard",
|
|
8149
|
-
radius: "rounded",
|
|
8150
|
-
shadow: "subtle",
|
|
8151
|
-
typography: "clean-sans",
|
|
8152
|
-
spacing: "airy",
|
|
8153
|
-
motion: "subtle"
|
|
8229
|
+
textTransform: "none",
|
|
8230
|
+
fontWeight: 500,
|
|
8231
|
+
borderWidth: 1,
|
|
8232
|
+
hoverTransform: "none",
|
|
8233
|
+
hoverColor: "none"
|
|
8154
8234
|
},
|
|
8155
|
-
|
|
8156
|
-
|
|
8157
|
-
|
|
8158
|
-
|
|
8159
|
-
|
|
8160
|
-
|
|
8161
|
-
|
|
8162
|
-
|
|
8163
|
-
|
|
8164
|
-
|
|
8165
|
-
|
|
8166
|
-
|
|
8167
|
-
|
|
8168
|
-
|
|
8169
|
-
|
|
8170
|
-
|
|
8171
|
-
|
|
8172
|
-
|
|
8173
|
-
|
|
8174
|
-
|
|
8175
|
-
|
|
8176
|
-
|
|
8177
|
-
|
|
8178
|
-
|
|
8179
|
-
|
|
8180
|
-
|
|
8181
|
-
|
|
8182
|
-
|
|
8183
|
-
|
|
8184
|
-
|
|
8185
|
-
|
|
8186
|
-
|
|
8187
|
-
|
|
8188
|
-
|
|
8189
|
-
|
|
8190
|
-
|
|
8191
|
-
|
|
8192
|
-
|
|
8193
|
-
|
|
8194
|
-
|
|
8195
|
-
|
|
8196
|
-
|
|
8197
|
-
|
|
8198
|
-
|
|
8199
|
-
|
|
8200
|
-
|
|
8201
|
-
|
|
8202
|
-
|
|
8203
|
-
|
|
8204
|
-
|
|
8205
|
-
|
|
8206
|
-
|
|
8207
|
-
|
|
8208
|
-
|
|
8209
|
-
|
|
8210
|
-
|
|
8211
|
-
|
|
8212
|
-
|
|
8213
|
-
|
|
8214
|
-
|
|
8215
|
-
|
|
8216
|
-
|
|
8217
|
-
|
|
8218
|
-
|
|
8219
|
-
|
|
8220
|
-
|
|
8221
|
-
|
|
8222
|
-
|
|
8223
|
-
|
|
8224
|
-
|
|
8225
|
-
|
|
8226
|
-
|
|
8227
|
-
|
|
8228
|
-
|
|
8229
|
-
|
|
8230
|
-
|
|
8231
|
-
|
|
8232
|
-
|
|
8233
|
-
|
|
8234
|
-
|
|
8235
|
-
|
|
8236
|
-
|
|
8237
|
-
|
|
8238
|
-
|
|
8239
|
-
}
|
|
8240
|
-
var userPanelTreatments = uniqueNonEmpty(
|
|
8241
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
8242
|
-
);
|
|
8243
|
-
var userFlushTreatments = uniqueNonEmpty(
|
|
8244
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
8245
|
-
);
|
|
8246
|
-
var userFlushBleeds = uniqueNonEmpty(
|
|
8247
|
-
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
8248
|
-
);
|
|
8249
|
-
var contentFrameIntentSchema = z10.discriminatedUnion("kind", [
|
|
8250
|
-
z10.object({ kind: z10.literal("plain") }).strict(),
|
|
8251
|
-
z10.object({
|
|
8252
|
-
kind: z10.literal("panel"),
|
|
8253
|
-
treatment: z10.enum(userPanelTreatments)
|
|
8254
|
-
}).strict(),
|
|
8255
|
-
z10.object({
|
|
8256
|
-
kind: z10.literal("flush-panel"),
|
|
8257
|
-
treatment: z10.enum(userFlushTreatments),
|
|
8258
|
-
bleed: z10.enum(userFlushBleeds)
|
|
8259
|
-
}).strict()
|
|
8260
|
-
]);
|
|
8261
|
-
var blockDesignPlanSchema = z10.object({
|
|
8262
|
-
blockId: z10.string().min(1).transform(asDesignBlockId),
|
|
8263
|
-
blockKind: z10.string().min(1),
|
|
8264
|
-
purpose: z10.string().min(1),
|
|
8265
|
-
sectionSurface: z10.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
8266
|
-
contentFrame: contentFrameIntentSchema,
|
|
8267
|
-
itemSurface: z10.enum(userDesignOptionCatalog.itemSurfaces),
|
|
8268
|
-
transitionAfter: z10.enum(userDesignOptionCatalog.transitions),
|
|
8269
|
-
emphasis: z10.enum(userDesignOptionCatalog.emphases),
|
|
8270
|
-
heroLegibility: heroLegibilityStrategySchema.optional()
|
|
8271
|
-
}).strict();
|
|
8272
|
-
var styleAuthoritySchema = z10.discriminatedUnion("kind", [
|
|
8273
|
-
z10.object({
|
|
8274
|
-
kind: z10.literal("theme-v2"),
|
|
8275
|
-
source: designResolutionPolicySchema,
|
|
8276
|
-
siteStyleId: z10.string().min(1).transform(asSiteStyleId),
|
|
8277
|
-
templateId: z10.string().min(1).transform(asDesignSystemTemplateId),
|
|
8278
|
-
templateVersion: z10.number().int().nonnegative(),
|
|
8279
|
-
resolverVersion: z10.number().int().nonnegative()
|
|
8280
|
-
}).strict(),
|
|
8281
|
-
z10.object({
|
|
8282
|
-
kind: z10.literal("legacy-raw"),
|
|
8283
|
-
reason: z10.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
8284
|
-
}).strict(),
|
|
8285
|
-
z10.object({
|
|
8286
|
-
kind: z10.literal("advanced-detached"),
|
|
8287
|
-
reason: z10.literal("detached-custom-runtime-fields")
|
|
8288
|
-
}).strict()
|
|
8289
|
-
]);
|
|
8290
|
-
var blockRuntimeStyleAuthoritySchema = z10.object({
|
|
8291
|
-
unit: z10.literal("block-runtime-fields"),
|
|
8292
|
-
blockId: z10.string().min(1).transform(asDesignBlockId),
|
|
8293
|
-
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
8294
|
-
authority: styleAuthoritySchema
|
|
8295
|
-
}).strict();
|
|
8296
|
-
var persistedPageDesignStateV1Schema = z10.object({
|
|
8297
|
-
schemaVersion: z10.literal(themeV2DesignStateSchemaVersion),
|
|
8298
|
-
siteStyleId: z10.string().min(1).transform(asSiteStyleId),
|
|
8299
|
-
templateId: z10.string().min(1).transform(asDesignSystemTemplateId),
|
|
8300
|
-
templateVersion: z10.number().int().nonnegative(),
|
|
8301
|
-
resolverVersion: z10.number().int().nonnegative(),
|
|
8302
|
-
rhythmPresetId: z10.string().min(1),
|
|
8303
|
-
blocks: z10.array(blockDesignPlanSchema),
|
|
8304
|
-
styleAuthorities: z10.array(blockRuntimeStyleAuthoritySchema)
|
|
8305
|
-
}).strict();
|
|
8306
|
-
|
|
8307
|
-
// ../theme-core/src/site-styles/generatedSchemas.ts
|
|
8308
|
-
import { z as z11 } from "zod";
|
|
8309
|
-
function uniqueNonEmpty2(values) {
|
|
8310
|
-
const uniqueValues = [...new Set(values)];
|
|
8311
|
-
const firstValue = uniqueValues[0];
|
|
8312
|
-
if (!firstValue) {
|
|
8313
|
-
throw new Error("Expected at least one generated schema option.");
|
|
8314
|
-
}
|
|
8315
|
-
return [firstValue, ...uniqueValues.slice(1)];
|
|
8316
|
-
}
|
|
8317
|
-
var generatedPanelTreatments = uniqueNonEmpty2(
|
|
8318
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
8319
|
-
);
|
|
8320
|
-
var generatedFlushTreatments = uniqueNonEmpty2(
|
|
8321
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
8322
|
-
);
|
|
8323
|
-
var generatedFlushBleeds = uniqueNonEmpty2(
|
|
8324
|
-
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
8325
|
-
);
|
|
8326
|
-
var generatedPanelFrameSchema = z11.object({
|
|
8327
|
-
kind: z11.literal("panel"),
|
|
8328
|
-
treatment: z11.enum(generatedPanelTreatments)
|
|
8329
|
-
}).strict();
|
|
8330
|
-
var generatedFlushPanelFrameSchema = z11.object({
|
|
8331
|
-
kind: z11.literal("flush-panel"),
|
|
8332
|
-
treatment: z11.enum(generatedFlushTreatments),
|
|
8333
|
-
bleed: z11.enum(generatedFlushBleeds)
|
|
8334
|
-
}).strict();
|
|
8335
|
-
var generatedContentFrameIntentSchema = z11.discriminatedUnion("kind", [
|
|
8336
|
-
z11.object({ kind: z11.literal("plain") }).strict(),
|
|
8337
|
-
generatedPanelFrameSchema,
|
|
8338
|
-
generatedFlushPanelFrameSchema
|
|
8339
|
-
]);
|
|
8340
|
-
var generatedSiteStyleIdSchema = z11.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
|
|
8341
|
-
function generatedChoiceSchema(valueSchema) {
|
|
8342
|
-
return z11.discriminatedUnion("kind", [
|
|
8343
|
-
z11.object({
|
|
8344
|
-
source: z11.literal("generated"),
|
|
8345
|
-
kind: z11.literal("auto")
|
|
8346
|
-
}).strict(),
|
|
8347
|
-
z11.object({
|
|
8348
|
-
source: z11.literal("generated"),
|
|
8349
|
-
kind: z11.literal("explicit"),
|
|
8350
|
-
value: valueSchema
|
|
8351
|
-
}).strict()
|
|
8352
|
-
]);
|
|
8353
|
-
}
|
|
8354
|
-
var generatedBlockDesignIntentSchema = z11.object({
|
|
8355
|
-
sectionSurface: generatedChoiceSchema(
|
|
8356
|
-
z11.enum(generatedDesignOptionCatalog.sectionSurfaces)
|
|
8357
|
-
),
|
|
8358
|
-
contentFrame: generatedChoiceSchema(generatedContentFrameIntentSchema),
|
|
8359
|
-
itemSurface: generatedChoiceSchema(
|
|
8360
|
-
z11.enum(generatedDesignOptionCatalog.itemSurfaces)
|
|
8361
|
-
),
|
|
8362
|
-
transitionAfter: generatedChoiceSchema(
|
|
8363
|
-
z11.enum(generatedDesignOptionCatalog.transitions)
|
|
8364
|
-
),
|
|
8365
|
-
emphasis: generatedChoiceSchema(
|
|
8366
|
-
z11.enum(generatedDesignOptionCatalog.emphases)
|
|
8367
|
-
)
|
|
8368
|
-
}).strict();
|
|
8369
|
-
var generatedMediaCompositionIntentSchema = z11.enum([
|
|
8370
|
-
"none",
|
|
8371
|
-
"supporting",
|
|
8372
|
-
"dominant"
|
|
8373
|
-
]);
|
|
8374
|
-
var generatedDecorativeCompositionIntentSchema = z11.enum([
|
|
8375
|
-
"none",
|
|
8376
|
-
"supporting"
|
|
8377
|
-
]);
|
|
8378
|
-
var generatedHeroLegibilityStrategySchema = z11.enum([
|
|
8379
|
-
"none",
|
|
8380
|
-
"scrim-gradient"
|
|
8381
|
-
]);
|
|
8382
|
-
var generatedBlockMediaIntentSchema = z11.object({
|
|
8383
|
-
media: generatedMediaCompositionIntentSchema,
|
|
8384
|
-
decorative: generatedDecorativeCompositionIntentSchema,
|
|
8385
|
-
heroLegibility: generatedChoiceSchema(generatedHeroLegibilityStrategySchema)
|
|
8386
|
-
}).strict();
|
|
8387
|
-
var generatedBoundaryIntentSchema = z11.object({
|
|
8388
|
-
transitionAfter: generatedChoiceSchema(
|
|
8389
|
-
z11.enum(generatedDesignOptionCatalog.transitions)
|
|
8390
|
-
)
|
|
8391
|
-
}).strict();
|
|
8392
|
-
var generatedPageDesignBlockIntentSchema = z11.object({
|
|
8393
|
-
blockId: z11.string().min(1),
|
|
8394
|
-
blockKind: z11.string().min(1),
|
|
8395
|
-
purpose: z11.string().min(1),
|
|
8396
|
-
design: generatedBlockDesignIntentSchema,
|
|
8397
|
-
mediaIntent: generatedBlockMediaIntentSchema,
|
|
8398
|
-
boundaryIntent: generatedBoundaryIntentSchema
|
|
8399
|
-
}).strict();
|
|
8400
|
-
var generatedPageDesignIntentSchema = z11.object({
|
|
8401
|
-
siteStyleId: generatedSiteStyleIdSchema,
|
|
8402
|
-
blocks: z11.array(generatedPageDesignBlockIntentSchema)
|
|
8403
|
-
}).strict();
|
|
8404
|
-
|
|
8405
|
-
// ../theme-core/src/site-styles/pageDesignIntent.ts
|
|
8406
|
-
import { z as z12 } from "zod";
|
|
8407
|
-
var pageDesignIntentSchemaVersion = 1;
|
|
8408
|
-
var pageDesignUserPinnedAppearanceChoiceSchema = z12.object({
|
|
8409
|
-
kind: z12.literal("user-pinned"),
|
|
8410
|
-
value: z12.string().min(1).transform(asAppearancePresetId)
|
|
8411
|
-
}).strict();
|
|
8412
|
-
var pageDesignUserPinnedBoundaryChoiceSchema = z12.object({
|
|
8413
|
-
kind: z12.literal("user-pinned"),
|
|
8414
|
-
value: z12.string().min(1).transform(asBoundaryOptionId)
|
|
8415
|
-
}).strict();
|
|
8416
|
-
var pageDesignBlockLookPinSchema = z12.object({
|
|
8417
|
-
blockId: z12.string().min(1).transform(asDesignBlockId),
|
|
8418
|
-
blockKind: z12.string().min(1),
|
|
8419
|
-
choice: pageDesignUserPinnedAppearanceChoiceSchema
|
|
8420
|
-
}).strict();
|
|
8421
|
-
var pageDesignBoundaryPinSchema = z12.object({
|
|
8422
|
-
boundaryId: z12.string().min(1).transform(asDesignBoundaryId),
|
|
8423
|
-
previousBlockId: z12.string().min(1).transform(asDesignBlockId),
|
|
8424
|
-
nextBlockId: z12.string().min(1).transform(asDesignBlockId),
|
|
8425
|
-
choice: pageDesignUserPinnedBoundaryChoiceSchema
|
|
8426
|
-
}).strict().superRefine((pin, ctx) => {
|
|
8427
|
-
const expectedBoundaryId = makeBoundaryId(
|
|
8428
|
-
pin.previousBlockId,
|
|
8429
|
-
pin.nextBlockId
|
|
8430
|
-
);
|
|
8431
|
-
if (pin.boundaryId !== expectedBoundaryId) {
|
|
8432
|
-
ctx.addIssue({
|
|
8433
|
-
code: z12.ZodIssueCode.custom,
|
|
8434
|
-
path: ["boundaryId"],
|
|
8435
|
-
message: `Boundary id must match previousBlockId and nextBlockId. Expected ${expectedBoundaryId}.`
|
|
8436
|
-
});
|
|
8235
|
+
variants: [
|
|
8236
|
+
{
|
|
8237
|
+
id: "primary",
|
|
8238
|
+
name: "Primary",
|
|
8239
|
+
enabled: true,
|
|
8240
|
+
priority: 1,
|
|
8241
|
+
background: { type: "transparent" },
|
|
8242
|
+
textColorToken: "text",
|
|
8243
|
+
borderRadius: "rounded-none",
|
|
8244
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
8245
|
+
sizes: {
|
|
8246
|
+
sm: { padding: "0.25rem 0" },
|
|
8247
|
+
md: { padding: "0.5rem 0" },
|
|
8248
|
+
lg: { padding: "0.625rem 0" },
|
|
8249
|
+
xl: { padding: "0.75rem 0" }
|
|
8250
|
+
},
|
|
8251
|
+
effects: {
|
|
8252
|
+
base: [
|
|
8253
|
+
{ effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
|
|
8254
|
+
]
|
|
8255
|
+
}
|
|
8256
|
+
},
|
|
8257
|
+
{
|
|
8258
|
+
id: "secondary",
|
|
8259
|
+
name: "Secondary",
|
|
8260
|
+
enabled: true,
|
|
8261
|
+
priority: 2,
|
|
8262
|
+
background: { type: "transparent" },
|
|
8263
|
+
textColorToken: "mutedText",
|
|
8264
|
+
borderRadius: "rounded-none",
|
|
8265
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
8266
|
+
sizes: {
|
|
8267
|
+
sm: { padding: "0.25rem 0" },
|
|
8268
|
+
md: { padding: "0.5rem 0" },
|
|
8269
|
+
lg: { padding: "0.625rem 0" },
|
|
8270
|
+
xl: { padding: "0.75rem 0" }
|
|
8271
|
+
},
|
|
8272
|
+
effects: {
|
|
8273
|
+
base: [
|
|
8274
|
+
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
|
|
8275
|
+
]
|
|
8276
|
+
}
|
|
8277
|
+
},
|
|
8278
|
+
{
|
|
8279
|
+
id: "outline",
|
|
8280
|
+
name: "Outline",
|
|
8281
|
+
enabled: true,
|
|
8282
|
+
priority: 3,
|
|
8283
|
+
background: { type: "transparent" },
|
|
8284
|
+
textColorToken: "accent",
|
|
8285
|
+
borderRadius: "rounded-none",
|
|
8286
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
8287
|
+
sizes: {
|
|
8288
|
+
sm: { padding: "0.25rem 0" },
|
|
8289
|
+
md: { padding: "0.5rem 0" },
|
|
8290
|
+
lg: { padding: "0.625rem 0" },
|
|
8291
|
+
xl: { padding: "0.75rem 0" }
|
|
8292
|
+
},
|
|
8293
|
+
effects: {
|
|
8294
|
+
base: [
|
|
8295
|
+
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
|
|
8296
|
+
]
|
|
8297
|
+
}
|
|
8298
|
+
},
|
|
8299
|
+
{
|
|
8300
|
+
id: "ghost",
|
|
8301
|
+
name: "Ghost",
|
|
8302
|
+
enabled: true,
|
|
8303
|
+
priority: 3,
|
|
8304
|
+
background: { type: "transparent" },
|
|
8305
|
+
textColorToken: "mutedText",
|
|
8306
|
+
borderRadius: "rounded-none",
|
|
8307
|
+
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
8308
|
+
sizes: {
|
|
8309
|
+
sm: { padding: "0.25rem 0" },
|
|
8310
|
+
md: { padding: "0.5rem 0" },
|
|
8311
|
+
lg: { padding: "0.625rem 0" },
|
|
8312
|
+
xl: { padding: "0.75rem 0" }
|
|
8313
|
+
},
|
|
8314
|
+
effects: {
|
|
8315
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
|
|
8316
|
+
}
|
|
8317
|
+
}
|
|
8318
|
+
]
|
|
8437
8319
|
}
|
|
8438
8320
|
});
|
|
8439
|
-
var pageDesignIntentV1Schema = z12.object({
|
|
8440
|
-
schemaVersion: z12.literal(pageDesignIntentSchemaVersion),
|
|
8441
|
-
siteStyleId: z12.string().min(1).transform(asSiteStyleId),
|
|
8442
|
-
pageFlowPresetId: z12.string().min(1).transform(asPageFlowPresetId),
|
|
8443
|
-
blockLookPins: z12.array(pageDesignBlockLookPinSchema),
|
|
8444
|
-
boundaryPins: z12.array(pageDesignBoundaryPinSchema)
|
|
8445
|
-
}).strict().superRefine((intent, ctx) => {
|
|
8446
|
-
addDuplicateStringIssues(ctx, {
|
|
8447
|
-
values: intent.blockLookPins.map((pin) => pin.blockId),
|
|
8448
|
-
path: ["blockLookPins"],
|
|
8449
|
-
label: "block Look pin"
|
|
8450
|
-
});
|
|
8451
|
-
addDuplicateStringIssues(ctx, {
|
|
8452
|
-
values: intent.boundaryPins.map(
|
|
8453
|
-
(pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)
|
|
8454
|
-
),
|
|
8455
|
-
path: ["boundaryPins"],
|
|
8456
|
-
label: "boundary pin"
|
|
8457
|
-
});
|
|
8458
|
-
});
|
|
8459
|
-
function addDuplicateStringIssues(ctx, input) {
|
|
8460
|
-
const seen = /* @__PURE__ */ new Set();
|
|
8461
|
-
const duplicates = /* @__PURE__ */ new Set();
|
|
8462
|
-
for (const value of input.values) {
|
|
8463
|
-
if (seen.has(value)) {
|
|
8464
|
-
duplicates.add(value);
|
|
8465
|
-
}
|
|
8466
|
-
seen.add(value);
|
|
8467
|
-
}
|
|
8468
|
-
for (const duplicate of duplicates) {
|
|
8469
|
-
ctx.addIssue({
|
|
8470
|
-
code: z12.ZodIssueCode.custom,
|
|
8471
|
-
path: [...input.path],
|
|
8472
|
-
message: `Duplicate ${input.label}: ${duplicate}.`
|
|
8473
|
-
});
|
|
8474
|
-
}
|
|
8475
|
-
}
|
|
8476
|
-
function boundaryKey(previousBlockId, nextBlockId) {
|
|
8477
|
-
return makeBoundaryId(previousBlockId, nextBlockId);
|
|
8478
|
-
}
|
|
8479
|
-
|
|
8480
|
-
// ../theme-core/src/schema.ts
|
|
8481
|
-
import { z as z25 } from "zod";
|
|
8482
|
-
|
|
8483
|
-
// ../theme-core/src/lib/media.ts
|
|
8484
|
-
import z13 from "zod";
|
|
8485
|
-
var hotspotSchema = z13.object({
|
|
8486
|
-
x: z13.number().min(0).max(1),
|
|
8487
|
-
y: z13.number().min(0).max(1),
|
|
8488
|
-
radius: z13.number().optional()
|
|
8489
|
-
});
|
|
8490
|
-
var rotationSchema = z13.union([z13.literal(0), z13.literal(90), z13.literal(180), z13.literal(270)]);
|
|
8491
|
-
var rectSchema = z13.tuple([z13.number(), z13.number(), z13.number(), z13.number()]);
|
|
8492
|
-
var aspectCropSchema = z13.object({
|
|
8493
|
-
aspect: z13.preprocess((value) => value == null ? void 0 : value, z13.string().optional()),
|
|
8494
|
-
rect: z13.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
8495
|
-
hotspot: z13.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
8496
|
-
rotation: z13.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
8497
|
-
});
|
|
8498
|
-
var transformSchema = z13.object({
|
|
8499
|
-
aspectCrops: z13.preprocess((value) => {
|
|
8500
|
-
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
8501
|
-
return void 0;
|
|
8502
|
-
}
|
|
8503
|
-
return value;
|
|
8504
|
-
}, z13.record(z13.string(), aspectCropSchema.catch({}))).optional(),
|
|
8505
|
-
rect: rectSchema.optional(),
|
|
8506
|
-
hotspot: hotspotSchema.optional(),
|
|
8507
|
-
rotation: rotationSchema.optional()
|
|
8508
|
-
});
|
|
8509
|
-
var mediaSchema = z13.object({
|
|
8510
|
-
type: z13.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
|
|
8511
|
-
purpose: z13.string().optional(),
|
|
8512
|
-
placeholder: z13.boolean().default(true).optional(),
|
|
8513
|
-
assetId: z13.string().optional(),
|
|
8514
|
-
identifier: z13.string().optional(),
|
|
8515
|
-
src: z13.string().optional(),
|
|
8516
|
-
alt: z13.string().optional(),
|
|
8517
|
-
filename: z13.string().optional(),
|
|
8518
|
-
mimeType: z13.string().optional(),
|
|
8519
|
-
width: z13.number().optional(),
|
|
8520
|
-
height: z13.number().optional(),
|
|
8521
|
-
storageBucket: z13.string().optional(),
|
|
8522
|
-
storagePath: z13.string().optional(),
|
|
8523
|
-
transform: transformSchema.optional()
|
|
8524
|
-
});
|
|
8525
|
-
|
|
8526
|
-
// ../theme-core/src/buttons/types.ts
|
|
8527
|
-
import { z as z14 } from "zod";
|
|
8528
|
-
var VARIANT_ROLES = [
|
|
8529
|
-
"primary",
|
|
8530
|
-
"secondary",
|
|
8531
|
-
"outline",
|
|
8532
|
-
"ghost",
|
|
8533
|
-
"link",
|
|
8534
|
-
"tertiary",
|
|
8535
|
-
"accent"
|
|
8536
|
-
];
|
|
8537
|
-
var cornerStyleSchema = z14.enum(["square", "rounded", "pill"]);
|
|
8538
|
-
var shadowSizeSchema = z14.enum(["none", "low", "medium", "high"]);
|
|
8539
|
-
var textTransformSchema = z14.enum(["none", "uppercase", "lowercase", "capitalize"]);
|
|
8540
|
-
var fontWeightSchema = z14.union([z14.literal(500), z14.literal(600), z14.literal(700)]);
|
|
8541
|
-
var buttonTypographySchema = z14.enum(["body", "heading"]);
|
|
8542
|
-
var letterSpacingSchema = z14.enum(["tight", "normal", "loose"]);
|
|
8543
|
-
var hoverTransformSchema = z14.enum(["none", "lift", "scale", "press"]);
|
|
8544
|
-
var hoverColorSchema = z14.enum(["none", "brighten", "darken", "saturate", "token"]);
|
|
8545
|
-
var buttonPaddingPresetSchema = z14.enum(["compact", "default", "spacious"]);
|
|
8546
|
-
var gradientStyleSchema = z14.enum(["linear", "radial", "conic"]);
|
|
8547
|
-
var gradientSharpnessSchema = z14.enum(["smooth", "medium", "hard"]);
|
|
8548
|
-
var prioritySchema = z14.union([z14.literal(1), z14.literal(2), z14.literal(3)]);
|
|
8549
|
-
var variantRoleSchema = z14.enum(VARIANT_ROLES);
|
|
8550
|
-
var buttonSizeNameSchema = z14.enum(["sm", "md", "lg", "xl"]);
|
|
8551
|
-
var PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
|
|
8552
|
-
var paddingShorthandSchema = z14.string().refine(
|
|
8553
|
-
(value) => {
|
|
8554
|
-
const parts = value.split(/\s+/).filter(Boolean);
|
|
8555
|
-
return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
|
|
8556
|
-
},
|
|
8557
|
-
{
|
|
8558
|
-
message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
|
|
8559
|
-
}
|
|
8560
|
-
);
|
|
8561
|
-
var buttonSizeConfigSchema = z14.object({
|
|
8562
|
-
padding: paddingShorthandSchema,
|
|
8563
|
-
fontSize: z14.string().optional()
|
|
8564
|
-
});
|
|
8565
|
-
var buttonSizesSchema = z14.object({
|
|
8566
|
-
sm: buttonSizeConfigSchema,
|
|
8567
|
-
md: buttonSizeConfigSchema,
|
|
8568
|
-
lg: buttonSizeConfigSchema,
|
|
8569
|
-
xl: buttonSizeConfigSchema.optional()
|
|
8570
|
-
}).transform(({ sm, md, lg, xl }) => ({
|
|
8571
|
-
sm,
|
|
8572
|
-
md,
|
|
8573
|
-
lg,
|
|
8574
|
-
xl: xl ?? lg
|
|
8575
|
-
}));
|
|
8576
|
-
var buttonGlobalSettingsSchema = z14.object({
|
|
8577
|
-
cornerStyle: cornerStyleSchema,
|
|
8578
|
-
cornerRadius: z14.number().min(0).max(24).optional(),
|
|
8579
|
-
shadow: shadowSizeSchema,
|
|
8580
|
-
textTransform: textTransformSchema,
|
|
8581
|
-
fontWeight: fontWeightSchema,
|
|
8582
|
-
/**
|
|
8583
|
-
* @deprecated Set per-variant via `variant.border.widthClass` instead.
|
|
8584
|
-
* Schema field is preserved so existing presets parse; the value is unread
|
|
8585
|
-
* by the current generator and will be removed once the legacy
|
|
8586
|
-
* `primitives/content/components/Button.tsx` slot exports are deleted.
|
|
8587
|
-
*/
|
|
8588
|
-
borderWidth: z14.union([z14.literal(1), z14.literal(2), z14.literal(3)]),
|
|
8589
|
-
// === Family-level typography ===
|
|
8590
|
-
// Typography source (body or heading) — selects which theme typography pool to inherit
|
|
8591
|
-
typography: buttonTypographySchema.optional(),
|
|
8592
|
-
// Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
|
|
8593
|
-
// Sized variants get this as default; fixed variants inherit unless they override.
|
|
8594
|
-
// Size class CSS may still override at run time for sized variants.
|
|
8595
|
-
fontSize: z14.string().optional(),
|
|
8596
|
-
// Letter spacing applied to all variants
|
|
8597
|
-
letterSpacing: letterSpacingSchema.optional(),
|
|
8598
|
-
// Italic style
|
|
8599
|
-
italic: z14.boolean().optional(),
|
|
8600
|
-
// Padding preset (applies to sized variants without a sizes config)
|
|
8601
|
-
paddingPreset: buttonPaddingPresetSchema.optional(),
|
|
8602
|
-
hoverTransform: hoverTransformSchema,
|
|
8603
|
-
hoverColor: hoverColorSchema,
|
|
8604
|
-
// When hoverColor is 'token', this specifies which token to use
|
|
8605
|
-
hoverColorToken: z14.string().optional(),
|
|
8606
|
-
// Gradient settings (if any variant uses gradients)
|
|
8607
|
-
gradientStyle: gradientStyleSchema.optional(),
|
|
8608
|
-
gradientAngle: z14.number().min(0).max(360).optional(),
|
|
8609
|
-
gradientSharpness: gradientSharpnessSchema.optional()
|
|
8610
|
-
});
|
|
8611
|
-
var gradientDirectionSchema = z14.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
8612
|
-
var buttonBackgroundSchema = z14.discriminatedUnion("type", [
|
|
8613
|
-
z14.object({ type: z14.literal("solid"), colorToken: z14.string() }),
|
|
8614
|
-
z14.object({
|
|
8615
|
-
type: z14.literal("gradient"),
|
|
8616
|
-
stops: z14.array(z14.string()).min(2),
|
|
8617
|
-
direction: gradientDirectionSchema
|
|
8618
|
-
}),
|
|
8619
|
-
z14.object({ type: z14.literal("transparent") })
|
|
8620
|
-
]);
|
|
8621
|
-
var effectApplicationSchema = z14.object({
|
|
8622
|
-
effectId: z14.string(),
|
|
8623
|
-
options: z14.record(z14.string(), z14.any()).optional()
|
|
8624
|
-
});
|
|
8625
|
-
var buttonBorderSchema = z14.object({
|
|
8626
|
-
widthClass: z14.string(),
|
|
8627
|
-
colorToken: z14.string()
|
|
8628
|
-
});
|
|
8629
|
-
var variantShadowSchema = z14.object({
|
|
8630
|
-
elevation: z14.enum(["none", "low", "medium", "high"]),
|
|
8631
|
-
softness: z14.enum(["crisp", "soft", "hard"]).nullable(),
|
|
8632
|
-
position: z14.enum(["bottom", "bottom-right"]).default("bottom")
|
|
8633
|
-
});
|
|
8634
|
-
var variantEffectsSchema = z14.object({
|
|
8635
|
-
base: z14.array(effectApplicationSchema).optional(),
|
|
8636
|
-
hover: z14.array(effectApplicationSchema).optional(),
|
|
8637
|
-
active: z14.array(effectApplicationSchema).optional(),
|
|
8638
|
-
focus: z14.array(effectApplicationSchema).optional()
|
|
8639
|
-
});
|
|
8640
|
-
var variantSizeOverridesSchema = z14.object({
|
|
8641
|
-
sm: buttonSizeConfigSchema.optional(),
|
|
8642
|
-
md: buttonSizeConfigSchema.optional(),
|
|
8643
|
-
lg: buttonSizeConfigSchema.optional(),
|
|
8644
|
-
xl: buttonSizeConfigSchema.optional()
|
|
8645
|
-
});
|
|
8646
|
-
var buttonVariantSchema = z14.object({
|
|
8647
|
-
id: z14.string(),
|
|
8648
|
-
name: z14.string().min(1).max(20),
|
|
8649
|
-
enabled: z14.boolean(),
|
|
8650
|
-
priority: prioritySchema,
|
|
8651
|
-
// Base appearance (token-based)
|
|
8652
|
-
background: buttonBackgroundSchema,
|
|
8653
|
-
textColorToken: z14.string(),
|
|
8654
|
-
/** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
|
|
8655
|
-
borderRadius: z14.string().optional(),
|
|
8656
|
-
// Optional shadow override (uses theme.shadow if not specified)
|
|
8657
|
-
shadow: variantShadowSchema.optional(),
|
|
8658
|
-
// Border (optional)
|
|
8659
|
-
border: buttonBorderSchema.optional(),
|
|
8660
|
-
// Hover background token (per-variant override, takes precedence over global hoverColorToken)
|
|
8661
|
-
hoverBackgroundToken: z14.string().optional(),
|
|
8662
|
-
// Effect composition
|
|
8663
|
-
effects: variantEffectsSchema.optional(),
|
|
8664
|
-
// Per-variant size overrides — see VariantSizeOverrides
|
|
8665
|
-
sizes: variantSizeOverridesSchema.optional()
|
|
8666
|
-
});
|
|
8667
|
-
var buttonSystemSchema = z14.object({
|
|
8668
|
-
global: buttonGlobalSettingsSchema,
|
|
8669
|
-
variants: z14.array(buttonVariantSchema).min(1).max(6),
|
|
8670
|
-
sizes: buttonSizesSchema.optional()
|
|
8671
|
-
});
|
|
8672
|
-
|
|
8673
|
-
// ../theme-core/src/buttons/generateButtonCss.ts
|
|
8674
|
-
var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
8675
|
-
|
|
8676
|
-
// ../theme-core/src/buttons/personalities/types.ts
|
|
8677
|
-
import { z as z15 } from "zod";
|
|
8678
|
-
function asButtonPersonalityId(value) {
|
|
8679
|
-
if (value.length === 0) {
|
|
8680
|
-
throw new Error("ButtonPersonalityId must be a non-empty string");
|
|
8681
|
-
}
|
|
8682
|
-
return value;
|
|
8683
|
-
}
|
|
8684
|
-
var buttonPersonalityIdSchema = z15.string().min(1).transform((value) => asButtonPersonalityId(value));
|
|
8685
|
-
var buttonPersonalitySchema = z15.object({
|
|
8686
|
-
id: buttonPersonalityIdSchema,
|
|
8687
|
-
name: z15.string().min(1),
|
|
8688
|
-
description: z15.string().min(1),
|
|
8689
|
-
tags: styleTagsSchema,
|
|
8690
|
-
buttonSystem: buttonSystemSchema
|
|
8691
|
-
});
|
|
8692
|
-
function defineButtonPersonality(input) {
|
|
8693
|
-
return {
|
|
8694
|
-
id: asButtonPersonalityId(input.id),
|
|
8695
|
-
name: input.name,
|
|
8696
|
-
description: input.description,
|
|
8697
|
-
tags: input.tags,
|
|
8698
|
-
buttonSystem: input.buttonSystem
|
|
8699
|
-
};
|
|
8700
|
-
}
|
|
8701
8321
|
|
|
8702
|
-
// ../theme-core/src/buttons/personalities/
|
|
8703
|
-
var
|
|
8704
|
-
id: "
|
|
8705
|
-
name: "
|
|
8706
|
-
description: "
|
|
8707
|
-
tags: { tone: "
|
|
8322
|
+
// ../theme-core/src/buttons/personalities/ink-stamp.ts
|
|
8323
|
+
var inkStamp = defineButtonPersonality({
|
|
8324
|
+
id: "ink-stamp",
|
|
8325
|
+
name: "Ink Stamp",
|
|
8326
|
+
description: "Hand-stamped block-print buttons with a slight lift on hover.",
|
|
8327
|
+
tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
|
|
8708
8328
|
buttonSystem: {
|
|
8709
8329
|
global: {
|
|
8710
8330
|
cornerStyle: "rounded",
|
|
8711
|
-
shadow: "
|
|
8712
|
-
textTransform: "
|
|
8713
|
-
fontWeight:
|
|
8331
|
+
shadow: "none",
|
|
8332
|
+
textTransform: "uppercase",
|
|
8333
|
+
fontWeight: 600,
|
|
8714
8334
|
borderWidth: 1,
|
|
8715
8335
|
hoverTransform: "none",
|
|
8716
|
-
hoverColor: "none"
|
|
8336
|
+
hoverColor: "none",
|
|
8337
|
+
letterSpacing: "loose"
|
|
8717
8338
|
},
|
|
8718
8339
|
sizes: {
|
|
8719
|
-
sm: { padding: "0.
|
|
8720
|
-
md: { padding: "
|
|
8721
|
-
lg: { padding: "
|
|
8722
|
-
xl: { padding: "1.
|
|
8340
|
+
sm: { padding: "0.5rem 1.25rem", fontSize: "text-xs" },
|
|
8341
|
+
md: { padding: "0.75rem 1.75rem", fontSize: "text-sm" },
|
|
8342
|
+
lg: { padding: "0.875rem 2.25rem", fontSize: "text-base" },
|
|
8343
|
+
xl: { padding: "1.125rem 2.75rem", fontSize: "text-lg" }
|
|
8723
8344
|
},
|
|
8724
8345
|
variants: [
|
|
8725
8346
|
{
|
|
@@ -8727,16 +8348,15 @@ var brushedWash = defineButtonPersonality({
|
|
|
8727
8348
|
name: "Primary",
|
|
8728
8349
|
enabled: true,
|
|
8729
8350
|
priority: 1,
|
|
8730
|
-
background: {
|
|
8731
|
-
type: "gradient",
|
|
8732
|
-
stops: ["primary", "accent"],
|
|
8733
|
-
direction: "to-r"
|
|
8734
|
-
},
|
|
8351
|
+
background: { type: "solid", colorToken: "primary" },
|
|
8735
8352
|
textColorToken: "primaryForeground",
|
|
8736
|
-
borderRadius: "rounded-
|
|
8737
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
8353
|
+
borderRadius: "rounded-md",
|
|
8738
8354
|
effects: {
|
|
8739
|
-
hover: [
|
|
8355
|
+
hover: [
|
|
8356
|
+
{ effectId: "drop-shadow", options: { intensity: "medium" } },
|
|
8357
|
+
{ effectId: "scale-up", options: { scale: "1.02" } }
|
|
8358
|
+
],
|
|
8359
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
8740
8360
|
}
|
|
8741
8361
|
},
|
|
8742
8362
|
{
|
|
@@ -8744,16 +8364,12 @@ var brushedWash = defineButtonPersonality({
|
|
|
8744
8364
|
name: "Secondary",
|
|
8745
8365
|
enabled: true,
|
|
8746
8366
|
priority: 2,
|
|
8747
|
-
background: {
|
|
8748
|
-
|
|
8749
|
-
|
|
8750
|
-
|
|
8751
|
-
},
|
|
8752
|
-
textColorToken: "primaryForeground",
|
|
8753
|
-
borderRadius: "rounded-lg",
|
|
8754
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
8367
|
+
background: { type: "transparent" },
|
|
8368
|
+
textColorToken: "primary",
|
|
8369
|
+
borderRadius: "rounded-md",
|
|
8370
|
+
border: { widthClass: "border-2", colorToken: "primary" },
|
|
8755
8371
|
effects: {
|
|
8756
|
-
hover: [{ effectId: "
|
|
8372
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
8757
8373
|
}
|
|
8758
8374
|
},
|
|
8759
8375
|
{
|
|
@@ -8762,9 +8378,9 @@ var brushedWash = defineButtonPersonality({
|
|
|
8762
8378
|
enabled: true,
|
|
8763
8379
|
priority: 3,
|
|
8764
8380
|
background: { type: "transparent" },
|
|
8765
|
-
textColorToken: "
|
|
8766
|
-
borderRadius: "rounded-
|
|
8767
|
-
border: { widthClass: "border", colorToken: "
|
|
8381
|
+
textColorToken: "text",
|
|
8382
|
+
borderRadius: "rounded-md",
|
|
8383
|
+
border: { widthClass: "border-2", colorToken: "border" },
|
|
8768
8384
|
effects: {
|
|
8769
8385
|
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
8770
8386
|
}
|
|
@@ -8775,216 +8391,43 @@ var brushedWash = defineButtonPersonality({
|
|
|
8775
8391
|
enabled: true,
|
|
8776
8392
|
priority: 3,
|
|
8777
8393
|
background: { type: "transparent" },
|
|
8778
|
-
textColorToken: "
|
|
8779
|
-
borderRadius: "rounded-
|
|
8394
|
+
textColorToken: "accent",
|
|
8395
|
+
borderRadius: "rounded-none",
|
|
8396
|
+
sizes: {
|
|
8397
|
+
sm: { padding: "0.375rem 0", fontSize: "text-xs" },
|
|
8398
|
+
md: { padding: "0.5rem 0", fontSize: "text-sm" },
|
|
8399
|
+
lg: { padding: "0.625rem 0", fontSize: "text-base" },
|
|
8400
|
+
xl: { padding: "0.75rem 0", fontSize: "text-lg" }
|
|
8401
|
+
},
|
|
8780
8402
|
effects: {
|
|
8781
|
-
|
|
8782
|
-
{ effectId: "background-on-hover", options: { colorToken: "surface" } }
|
|
8783
|
-
]
|
|
8403
|
+
base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
|
|
8784
8404
|
}
|
|
8785
8405
|
}
|
|
8786
8406
|
]
|
|
8787
8407
|
}
|
|
8788
8408
|
});
|
|
8789
8409
|
|
|
8790
|
-
// ../theme-core/src/buttons/personalities/
|
|
8791
|
-
var
|
|
8792
|
-
id: "
|
|
8793
|
-
name: "
|
|
8794
|
-
description: "
|
|
8795
|
-
tags: { tone: "classic", energy: "calm", motion: "standard", era: "
|
|
8410
|
+
// ../theme-core/src/buttons/personalities/pebble.ts
|
|
8411
|
+
var pebble = defineButtonPersonality({
|
|
8412
|
+
id: "pebble",
|
|
8413
|
+
name: "Pebble",
|
|
8414
|
+
description: "Generous pill buttons with a soft hover lift.",
|
|
8415
|
+
tags: { tone: "classic", energy: "calm", motion: "standard", era: "organic" },
|
|
8796
8416
|
buttonSystem: {
|
|
8797
8417
|
global: {
|
|
8798
|
-
cornerStyle: "
|
|
8799
|
-
shadow: "
|
|
8418
|
+
cornerStyle: "pill",
|
|
8419
|
+
shadow: "none",
|
|
8800
8420
|
textTransform: "none",
|
|
8801
|
-
fontWeight:
|
|
8802
|
-
borderWidth:
|
|
8421
|
+
fontWeight: 500,
|
|
8422
|
+
borderWidth: 2,
|
|
8803
8423
|
hoverTransform: "none",
|
|
8804
8424
|
hoverColor: "none"
|
|
8805
8425
|
},
|
|
8806
|
-
variants: [
|
|
8807
|
-
{
|
|
8808
|
-
id: "primary",
|
|
8809
|
-
name: "Primary",
|
|
8810
|
-
enabled: true,
|
|
8811
|
-
priority: 1,
|
|
8812
|
-
background: { type: "solid", colorToken: "primary" },
|
|
8813
|
-
textColorToken: "primaryForeground",
|
|
8814
|
-
borderRadius: "rounded-md",
|
|
8815
|
-
shadow: { elevation: "medium", softness: "soft", position: "bottom" },
|
|
8816
|
-
effects: {
|
|
8817
|
-
hover: [{ effectId: "darken-background", options: { amount: 60 } }],
|
|
8818
|
-
active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
|
|
8819
|
-
}
|
|
8820
|
-
},
|
|
8821
|
-
{
|
|
8822
|
-
id: "secondary",
|
|
8823
|
-
name: "Secondary",
|
|
8824
|
-
enabled: true,
|
|
8825
|
-
priority: 2,
|
|
8826
|
-
background: { type: "solid", colorToken: "surface" },
|
|
8827
|
-
textColorToken: "text",
|
|
8828
|
-
borderRadius: "rounded-md",
|
|
8829
|
-
border: { widthClass: "border", colorToken: "border" },
|
|
8830
|
-
effects: {
|
|
8831
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
|
|
8832
|
-
}
|
|
8833
|
-
},
|
|
8834
|
-
{
|
|
8835
|
-
id: "outline",
|
|
8836
|
-
name: "Outline",
|
|
8837
|
-
enabled: true,
|
|
8838
|
-
priority: 3,
|
|
8839
|
-
background: { type: "transparent" },
|
|
8840
|
-
textColorToken: "primary",
|
|
8841
|
-
borderRadius: "rounded-md",
|
|
8842
|
-
border: { widthClass: "border", colorToken: "primary" },
|
|
8843
|
-
effects: {
|
|
8844
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
8845
|
-
}
|
|
8846
|
-
},
|
|
8847
|
-
{
|
|
8848
|
-
id: "ghost",
|
|
8849
|
-
name: "Ghost",
|
|
8850
|
-
enabled: true,
|
|
8851
|
-
priority: 3,
|
|
8852
|
-
background: { type: "transparent" },
|
|
8853
|
-
textColorToken: "primary",
|
|
8854
|
-
borderRadius: "rounded-md",
|
|
8855
|
-
effects: {
|
|
8856
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
8857
|
-
}
|
|
8858
|
-
}
|
|
8859
|
-
]
|
|
8860
|
-
}
|
|
8861
|
-
});
|
|
8862
|
-
|
|
8863
|
-
// ../theme-core/src/buttons/personalities/editorial-link.ts
|
|
8864
|
-
var editorialLink = defineButtonPersonality({
|
|
8865
|
-
id: "editorial-link",
|
|
8866
|
-
name: "Editorial Link",
|
|
8867
|
-
description: "Link-style with a growing underline. Refined, typographic.",
|
|
8868
|
-
tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
|
|
8869
|
-
buttonSystem: {
|
|
8870
|
-
global: {
|
|
8871
|
-
cornerStyle: "square",
|
|
8872
|
-
shadow: "none",
|
|
8873
|
-
textTransform: "none",
|
|
8874
|
-
fontWeight: 500,
|
|
8875
|
-
borderWidth: 1,
|
|
8876
|
-
hoverTransform: "none",
|
|
8877
|
-
hoverColor: "none"
|
|
8878
|
-
},
|
|
8879
|
-
variants: [
|
|
8880
|
-
{
|
|
8881
|
-
id: "primary",
|
|
8882
|
-
name: "Primary",
|
|
8883
|
-
enabled: true,
|
|
8884
|
-
priority: 1,
|
|
8885
|
-
background: { type: "transparent" },
|
|
8886
|
-
textColorToken: "text",
|
|
8887
|
-
borderRadius: "rounded-none",
|
|
8888
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
8889
|
-
sizes: {
|
|
8890
|
-
sm: { padding: "0.25rem 0" },
|
|
8891
|
-
md: { padding: "0.5rem 0" },
|
|
8892
|
-
lg: { padding: "0.625rem 0" },
|
|
8893
|
-
xl: { padding: "0.75rem 0" }
|
|
8894
|
-
},
|
|
8895
|
-
effects: {
|
|
8896
|
-
base: [
|
|
8897
|
-
{ effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
|
|
8898
|
-
]
|
|
8899
|
-
}
|
|
8900
|
-
},
|
|
8901
|
-
{
|
|
8902
|
-
id: "secondary",
|
|
8903
|
-
name: "Secondary",
|
|
8904
|
-
enabled: true,
|
|
8905
|
-
priority: 2,
|
|
8906
|
-
background: { type: "transparent" },
|
|
8907
|
-
textColorToken: "mutedText",
|
|
8908
|
-
borderRadius: "rounded-none",
|
|
8909
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
8910
|
-
sizes: {
|
|
8911
|
-
sm: { padding: "0.25rem 0" },
|
|
8912
|
-
md: { padding: "0.5rem 0" },
|
|
8913
|
-
lg: { padding: "0.625rem 0" },
|
|
8914
|
-
xl: { padding: "0.75rem 0" }
|
|
8915
|
-
},
|
|
8916
|
-
effects: {
|
|
8917
|
-
base: [
|
|
8918
|
-
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
|
|
8919
|
-
]
|
|
8920
|
-
}
|
|
8921
|
-
},
|
|
8922
|
-
{
|
|
8923
|
-
id: "outline",
|
|
8924
|
-
name: "Outline",
|
|
8925
|
-
enabled: true,
|
|
8926
|
-
priority: 3,
|
|
8927
|
-
background: { type: "transparent" },
|
|
8928
|
-
textColorToken: "accent",
|
|
8929
|
-
borderRadius: "rounded-none",
|
|
8930
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
8931
|
-
sizes: {
|
|
8932
|
-
sm: { padding: "0.25rem 0" },
|
|
8933
|
-
md: { padding: "0.5rem 0" },
|
|
8934
|
-
lg: { padding: "0.625rem 0" },
|
|
8935
|
-
xl: { padding: "0.75rem 0" }
|
|
8936
|
-
},
|
|
8937
|
-
effects: {
|
|
8938
|
-
base: [
|
|
8939
|
-
{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
|
|
8940
|
-
]
|
|
8941
|
-
}
|
|
8942
|
-
},
|
|
8943
|
-
{
|
|
8944
|
-
id: "ghost",
|
|
8945
|
-
name: "Ghost",
|
|
8946
|
-
enabled: true,
|
|
8947
|
-
priority: 3,
|
|
8948
|
-
background: { type: "transparent" },
|
|
8949
|
-
textColorToken: "mutedText",
|
|
8950
|
-
borderRadius: "rounded-none",
|
|
8951
|
-
shadow: { elevation: "none", softness: null, position: "bottom" },
|
|
8952
|
-
sizes: {
|
|
8953
|
-
sm: { padding: "0.25rem 0" },
|
|
8954
|
-
md: { padding: "0.5rem 0" },
|
|
8955
|
-
lg: { padding: "0.625rem 0" },
|
|
8956
|
-
xl: { padding: "0.75rem 0" }
|
|
8957
|
-
},
|
|
8958
|
-
effects: {
|
|
8959
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
|
|
8960
|
-
}
|
|
8961
|
-
}
|
|
8962
|
-
]
|
|
8963
|
-
}
|
|
8964
|
-
});
|
|
8965
|
-
|
|
8966
|
-
// ../theme-core/src/buttons/personalities/ink-stamp.ts
|
|
8967
|
-
var inkStamp = defineButtonPersonality({
|
|
8968
|
-
id: "ink-stamp",
|
|
8969
|
-
name: "Ink Stamp",
|
|
8970
|
-
description: "Hand-stamped block-print buttons with a slight lift on hover.",
|
|
8971
|
-
tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
|
|
8972
|
-
buttonSystem: {
|
|
8973
|
-
global: {
|
|
8974
|
-
cornerStyle: "rounded",
|
|
8975
|
-
shadow: "none",
|
|
8976
|
-
textTransform: "uppercase",
|
|
8977
|
-
fontWeight: 600,
|
|
8978
|
-
borderWidth: 1,
|
|
8979
|
-
hoverTransform: "none",
|
|
8980
|
-
hoverColor: "none",
|
|
8981
|
-
letterSpacing: "loose"
|
|
8982
|
-
},
|
|
8983
8426
|
sizes: {
|
|
8984
|
-
sm: { padding: "0.
|
|
8985
|
-
md: { padding: "0.
|
|
8986
|
-
lg: { padding: "
|
|
8987
|
-
xl: { padding: "1.
|
|
8427
|
+
sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
|
|
8428
|
+
md: { padding: "0.875rem 2.25rem" },
|
|
8429
|
+
lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
|
|
8430
|
+
xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
|
|
8988
8431
|
},
|
|
8989
8432
|
variants: [
|
|
8990
8433
|
{
|
|
@@ -8994,13 +8437,12 @@ var inkStamp = defineButtonPersonality({
|
|
|
8994
8437
|
priority: 1,
|
|
8995
8438
|
background: { type: "solid", colorToken: "primary" },
|
|
8996
8439
|
textColorToken: "primaryForeground",
|
|
8997
|
-
borderRadius: "rounded-
|
|
8440
|
+
borderRadius: "rounded-full",
|
|
8998
8441
|
effects: {
|
|
8999
8442
|
hover: [
|
|
9000
|
-
{ effectId: "
|
|
9001
|
-
{ effectId: "
|
|
9002
|
-
]
|
|
9003
|
-
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
8443
|
+
{ effectId: "scale-up", options: { scale: "1.03" } },
|
|
8444
|
+
{ effectId: "drop-shadow", options: { intensity: "medium" } }
|
|
8445
|
+
]
|
|
9004
8446
|
}
|
|
9005
8447
|
},
|
|
9006
8448
|
{
|
|
@@ -9010,10 +8452,10 @@ var inkStamp = defineButtonPersonality({
|
|
|
9010
8452
|
priority: 2,
|
|
9011
8453
|
background: { type: "transparent" },
|
|
9012
8454
|
textColorToken: "primary",
|
|
9013
|
-
borderRadius: "rounded-
|
|
9014
|
-
border: { widthClass: "border-2", colorToken: "
|
|
8455
|
+
borderRadius: "rounded-full",
|
|
8456
|
+
border: { widthClass: "border-2", colorToken: "accent" },
|
|
9015
8457
|
effects: {
|
|
9016
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "
|
|
8458
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "accent" } }]
|
|
9017
8459
|
}
|
|
9018
8460
|
},
|
|
9019
8461
|
{
|
|
@@ -9023,8 +8465,8 @@ var inkStamp = defineButtonPersonality({
|
|
|
9023
8465
|
priority: 3,
|
|
9024
8466
|
background: { type: "transparent" },
|
|
9025
8467
|
textColorToken: "text",
|
|
9026
|
-
borderRadius: "rounded-
|
|
9027
|
-
border: { widthClass: "border
|
|
8468
|
+
borderRadius: "rounded-full",
|
|
8469
|
+
border: { widthClass: "border", colorToken: "border" },
|
|
9028
8470
|
effects: {
|
|
9029
8471
|
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9030
8472
|
}
|
|
@@ -9035,44 +8477,38 @@ var inkStamp = defineButtonPersonality({
|
|
|
9035
8477
|
enabled: true,
|
|
9036
8478
|
priority: 3,
|
|
9037
8479
|
background: { type: "transparent" },
|
|
9038
|
-
textColorToken: "
|
|
9039
|
-
borderRadius: "rounded-
|
|
8480
|
+
textColorToken: "primary",
|
|
8481
|
+
borderRadius: "rounded-full",
|
|
9040
8482
|
sizes: {
|
|
9041
|
-
sm: { padding: "0.375rem 0", fontSize: "text-
|
|
9042
|
-
md: { padding: "0.5rem
|
|
9043
|
-
lg: { padding: "0.625rem
|
|
9044
|
-
xl: { padding: "0.75rem
|
|
8483
|
+
sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
|
|
8484
|
+
md: { padding: "0.5rem 1rem" },
|
|
8485
|
+
lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
|
|
8486
|
+
xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
|
|
9045
8487
|
},
|
|
9046
8488
|
effects: {
|
|
9047
|
-
|
|
8489
|
+
hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
|
|
9048
8490
|
}
|
|
9049
8491
|
}
|
|
9050
8492
|
]
|
|
9051
8493
|
}
|
|
9052
8494
|
});
|
|
9053
8495
|
|
|
9054
|
-
// ../theme-core/src/buttons/personalities/
|
|
9055
|
-
var
|
|
9056
|
-
id: "
|
|
9057
|
-
name: "
|
|
9058
|
-
description: "
|
|
9059
|
-
tags: { tone: "classic", energy: "calm", motion: "
|
|
8496
|
+
// ../theme-core/src/buttons/personalities/soft-pill.ts
|
|
8497
|
+
var softPill = defineButtonPersonality({
|
|
8498
|
+
id: "soft-pill",
|
|
8499
|
+
name: "Soft Pill",
|
|
8500
|
+
description: "Rounded pills with a gentle lift on hover. Quietly modern.",
|
|
8501
|
+
tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
|
|
9060
8502
|
buttonSystem: {
|
|
9061
8503
|
global: {
|
|
9062
8504
|
cornerStyle: "pill",
|
|
9063
|
-
shadow: "
|
|
8505
|
+
shadow: "low",
|
|
9064
8506
|
textTransform: "none",
|
|
9065
8507
|
fontWeight: 500,
|
|
9066
8508
|
borderWidth: 2,
|
|
9067
|
-
hoverTransform: "
|
|
8509
|
+
hoverTransform: "lift",
|
|
9068
8510
|
hoverColor: "none"
|
|
9069
8511
|
},
|
|
9070
|
-
sizes: {
|
|
9071
|
-
sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
|
|
9072
|
-
md: { padding: "0.875rem 2.25rem" },
|
|
9073
|
-
lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
|
|
9074
|
-
xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
|
|
9075
|
-
},
|
|
9076
8512
|
variants: [
|
|
9077
8513
|
{
|
|
9078
8514
|
id: "primary",
|
|
@@ -9082,11 +8518,10 @@ var pebble = defineButtonPersonality({
|
|
|
9082
8518
|
background: { type: "solid", colorToken: "primary" },
|
|
9083
8519
|
textColorToken: "primaryForeground",
|
|
9084
8520
|
borderRadius: "rounded-full",
|
|
8521
|
+
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
9085
8522
|
effects: {
|
|
9086
|
-
hover: [
|
|
9087
|
-
|
|
9088
|
-
{ effectId: "drop-shadow", options: { intensity: "medium" } }
|
|
9089
|
-
]
|
|
8523
|
+
hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
|
|
8524
|
+
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
9090
8525
|
}
|
|
9091
8526
|
},
|
|
9092
8527
|
{
|
|
@@ -9097,9 +8532,9 @@ var pebble = defineButtonPersonality({
|
|
|
9097
8532
|
background: { type: "transparent" },
|
|
9098
8533
|
textColorToken: "primary",
|
|
9099
8534
|
borderRadius: "rounded-full",
|
|
9100
|
-
border: { widthClass: "border-2", colorToken: "
|
|
8535
|
+
border: { widthClass: "border-2", colorToken: "primary" },
|
|
9101
8536
|
effects: {
|
|
9102
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "
|
|
8537
|
+
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9103
8538
|
}
|
|
9104
8539
|
},
|
|
9105
8540
|
{
|
|
@@ -9121,86 +8556,7 @@ var pebble = defineButtonPersonality({
|
|
|
9121
8556
|
enabled: true,
|
|
9122
8557
|
priority: 3,
|
|
9123
8558
|
background: { type: "transparent" },
|
|
9124
|
-
textColorToken: "
|
|
9125
|
-
borderRadius: "rounded-full",
|
|
9126
|
-
sizes: {
|
|
9127
|
-
sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
|
|
9128
|
-
md: { padding: "0.5rem 1rem" },
|
|
9129
|
-
lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
|
|
9130
|
-
xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
|
|
9131
|
-
},
|
|
9132
|
-
effects: {
|
|
9133
|
-
hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
|
|
9134
|
-
}
|
|
9135
|
-
}
|
|
9136
|
-
]
|
|
9137
|
-
}
|
|
9138
|
-
});
|
|
9139
|
-
|
|
9140
|
-
// ../theme-core/src/buttons/personalities/soft-pill.ts
|
|
9141
|
-
var softPill = defineButtonPersonality({
|
|
9142
|
-
id: "soft-pill",
|
|
9143
|
-
name: "Soft Pill",
|
|
9144
|
-
description: "Rounded pills with a gentle lift on hover. Quietly modern.",
|
|
9145
|
-
tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
|
|
9146
|
-
buttonSystem: {
|
|
9147
|
-
global: {
|
|
9148
|
-
cornerStyle: "pill",
|
|
9149
|
-
shadow: "low",
|
|
9150
|
-
textTransform: "none",
|
|
9151
|
-
fontWeight: 500,
|
|
9152
|
-
borderWidth: 2,
|
|
9153
|
-
hoverTransform: "lift",
|
|
9154
|
-
hoverColor: "none"
|
|
9155
|
-
},
|
|
9156
|
-
variants: [
|
|
9157
|
-
{
|
|
9158
|
-
id: "primary",
|
|
9159
|
-
name: "Primary",
|
|
9160
|
-
enabled: true,
|
|
9161
|
-
priority: 1,
|
|
9162
|
-
background: { type: "solid", colorToken: "primary" },
|
|
9163
|
-
textColorToken: "primaryForeground",
|
|
9164
|
-
borderRadius: "rounded-full",
|
|
9165
|
-
shadow: { elevation: "low", softness: "soft", position: "bottom" },
|
|
9166
|
-
effects: {
|
|
9167
|
-
hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
|
|
9168
|
-
active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
|
|
9169
|
-
}
|
|
9170
|
-
},
|
|
9171
|
-
{
|
|
9172
|
-
id: "secondary",
|
|
9173
|
-
name: "Secondary",
|
|
9174
|
-
enabled: true,
|
|
9175
|
-
priority: 2,
|
|
9176
|
-
background: { type: "transparent" },
|
|
9177
|
-
textColorToken: "primary",
|
|
9178
|
-
borderRadius: "rounded-full",
|
|
9179
|
-
border: { widthClass: "border-2", colorToken: "primary" },
|
|
9180
|
-
effects: {
|
|
9181
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9182
|
-
}
|
|
9183
|
-
},
|
|
9184
|
-
{
|
|
9185
|
-
id: "outline",
|
|
9186
|
-
name: "Outline",
|
|
9187
|
-
enabled: true,
|
|
9188
|
-
priority: 3,
|
|
9189
|
-
background: { type: "transparent" },
|
|
9190
|
-
textColorToken: "text",
|
|
9191
|
-
borderRadius: "rounded-full",
|
|
9192
|
-
border: { widthClass: "border", colorToken: "border" },
|
|
9193
|
-
effects: {
|
|
9194
|
-
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
9195
|
-
}
|
|
9196
|
-
},
|
|
9197
|
-
{
|
|
9198
|
-
id: "ghost",
|
|
9199
|
-
name: "Ghost",
|
|
9200
|
-
enabled: true,
|
|
9201
|
-
priority: 3,
|
|
9202
|
-
background: { type: "transparent" },
|
|
9203
|
-
textColorToken: "text",
|
|
8559
|
+
textColorToken: "text",
|
|
9204
8560
|
borderRadius: "rounded-full",
|
|
9205
8561
|
effects: {
|
|
9206
8562
|
hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
|
|
@@ -9223,49 +8579,101 @@ var personalitiesById = new Map(
|
|
|
9223
8579
|
buttonPersonalities.map((p) => [p.id, p])
|
|
9224
8580
|
);
|
|
9225
8581
|
|
|
8582
|
+
// ../theme-core/src/palette/variants/types.ts
|
|
8583
|
+
import { z as z23 } from "zod";
|
|
8584
|
+
|
|
8585
|
+
// ../theme-core/src/schema.ts
|
|
8586
|
+
import { z as z22 } from "zod";
|
|
8587
|
+
|
|
8588
|
+
// ../theme-core/src/lib/media.ts
|
|
8589
|
+
import z12 from "zod";
|
|
8590
|
+
var hotspotSchema = z12.object({
|
|
8591
|
+
x: z12.number().min(0).max(1),
|
|
8592
|
+
y: z12.number().min(0).max(1),
|
|
8593
|
+
radius: z12.number().optional()
|
|
8594
|
+
});
|
|
8595
|
+
var rotationSchema = z12.union([z12.literal(0), z12.literal(90), z12.literal(180), z12.literal(270)]);
|
|
8596
|
+
var rectSchema = z12.tuple([z12.number(), z12.number(), z12.number(), z12.number()]);
|
|
8597
|
+
var aspectCropSchema = z12.object({
|
|
8598
|
+
aspect: z12.preprocess((value) => value == null ? void 0 : value, z12.string().optional()),
|
|
8599
|
+
rect: z12.preprocess((value) => value == null ? void 0 : value, rectSchema.optional()),
|
|
8600
|
+
hotspot: z12.preprocess((value) => value == null ? void 0 : value, hotspotSchema.optional()),
|
|
8601
|
+
rotation: z12.preprocess((value) => value == null ? void 0 : value, rotationSchema.optional())
|
|
8602
|
+
});
|
|
8603
|
+
var transformSchema = z12.object({
|
|
8604
|
+
aspectCrops: z12.preprocess((value) => {
|
|
8605
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
8606
|
+
return void 0;
|
|
8607
|
+
}
|
|
8608
|
+
return value;
|
|
8609
|
+
}, z12.record(z12.string(), aspectCropSchema.catch({}))).optional(),
|
|
8610
|
+
rect: rectSchema.optional(),
|
|
8611
|
+
hotspot: hotspotSchema.optional(),
|
|
8612
|
+
rotation: rotationSchema.optional()
|
|
8613
|
+
});
|
|
8614
|
+
var mediaSchema = z12.object({
|
|
8615
|
+
type: z12.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
|
|
8616
|
+
purpose: z12.string().optional(),
|
|
8617
|
+
placeholder: z12.boolean().default(true).optional(),
|
|
8618
|
+
assetId: z12.string().optional(),
|
|
8619
|
+
identifier: z12.string().optional(),
|
|
8620
|
+
src: z12.string().optional(),
|
|
8621
|
+
alt: z12.string().optional(),
|
|
8622
|
+
filename: z12.string().optional(),
|
|
8623
|
+
mimeType: z12.string().optional(),
|
|
8624
|
+
width: z12.number().optional(),
|
|
8625
|
+
height: z12.number().optional(),
|
|
8626
|
+
storageBucket: z12.string().optional(),
|
|
8627
|
+
storagePath: z12.string().optional(),
|
|
8628
|
+
transform: transformSchema.optional()
|
|
8629
|
+
});
|
|
8630
|
+
|
|
8631
|
+
// ../theme-core/src/buttons/generateButtonCss.ts
|
|
8632
|
+
var BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
|
|
8633
|
+
|
|
9226
8634
|
// ../theme-core/src/cards/types.ts
|
|
9227
|
-
import { z as
|
|
9228
|
-
var cardSpacingSchema =
|
|
9229
|
-
var gradientDirectionSchema2 =
|
|
9230
|
-
var cardBackgroundSchema =
|
|
9231
|
-
|
|
9232
|
-
|
|
9233
|
-
type:
|
|
9234
|
-
fromToken:
|
|
9235
|
-
toToken:
|
|
8635
|
+
import { z as z13 } from "zod";
|
|
8636
|
+
var cardSpacingSchema = z13.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
|
|
8637
|
+
var gradientDirectionSchema2 = z13.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
|
|
8638
|
+
var cardBackgroundSchema = z13.discriminatedUnion("type", [
|
|
8639
|
+
z13.object({ type: z13.literal("solid"), colorToken: z13.string() }),
|
|
8640
|
+
z13.object({
|
|
8641
|
+
type: z13.literal("gradient"),
|
|
8642
|
+
fromToken: z13.string(),
|
|
8643
|
+
toToken: z13.string(),
|
|
9236
8644
|
direction: gradientDirectionSchema2
|
|
9237
8645
|
}),
|
|
9238
|
-
|
|
8646
|
+
z13.object({ type: z13.literal("transparent") })
|
|
9239
8647
|
]);
|
|
9240
|
-
var cardBorderSchema =
|
|
9241
|
-
widthClass:
|
|
9242
|
-
colorToken:
|
|
9243
|
-
});
|
|
9244
|
-
var cardVariantSchema =
|
|
9245
|
-
id:
|
|
9246
|
-
name:
|
|
9247
|
-
enabled:
|
|
9248
|
-
priority:
|
|
8648
|
+
var cardBorderSchema = z13.object({
|
|
8649
|
+
widthClass: z13.string(),
|
|
8650
|
+
colorToken: z13.string()
|
|
8651
|
+
});
|
|
8652
|
+
var cardVariantSchema = z13.object({
|
|
8653
|
+
id: z13.string(),
|
|
8654
|
+
name: z13.string().min(1).max(20),
|
|
8655
|
+
enabled: z13.boolean(),
|
|
8656
|
+
priority: z13.union([z13.literal(1), z13.literal(2), z13.literal(3)]),
|
|
9249
8657
|
// Appearance (token-based)
|
|
9250
8658
|
background: cardBackgroundSchema,
|
|
9251
8659
|
spacing: cardSpacingSchema,
|
|
9252
8660
|
// Optional overrides (uses theme defaults if not specified)
|
|
9253
|
-
shadow:
|
|
9254
|
-
elevation:
|
|
9255
|
-
softness:
|
|
9256
|
-
position:
|
|
8661
|
+
shadow: z13.object({
|
|
8662
|
+
elevation: z13.enum(["none", "low", "medium", "high"]),
|
|
8663
|
+
softness: z13.enum(["crisp", "soft", "hard"]).nullable(),
|
|
8664
|
+
position: z13.enum(["bottom", "bottom-right"]).default("bottom")
|
|
9257
8665
|
}).optional(),
|
|
9258
|
-
corners:
|
|
8666
|
+
corners: z13.enum(["square", "soft", "rounded", "pill"]).optional(),
|
|
9259
8667
|
// Border (optional)
|
|
9260
8668
|
border: cardBorderSchema.optional()
|
|
9261
8669
|
});
|
|
9262
|
-
var cardSystemSchema =
|
|
9263
|
-
variants:
|
|
8670
|
+
var cardSystemSchema = z13.object({
|
|
8671
|
+
variants: z13.array(cardVariantSchema).min(1).max(3)
|
|
9264
8672
|
});
|
|
9265
8673
|
|
|
9266
8674
|
// ../theme-core/src/accordions/types.ts
|
|
9267
|
-
import { z as
|
|
9268
|
-
var accordionIconSchema =
|
|
8675
|
+
import { z as z14 } from "zod";
|
|
8676
|
+
var accordionIconSchema = z14.enum([
|
|
9269
8677
|
"plus-minus",
|
|
9270
8678
|
// + becomes - (swap or rotate 90°)
|
|
9271
8679
|
"chevron",
|
|
@@ -9277,180 +8685,180 @@ var accordionIconSchema = z17.enum([
|
|
|
9277
8685
|
"circle-plus-minus"
|
|
9278
8686
|
// ⊕ becomes ⊖ (swap with fade)
|
|
9279
8687
|
]);
|
|
9280
|
-
var accordionSystemSchema =
|
|
8688
|
+
var accordionSystemSchema = z14.object({
|
|
9281
8689
|
// Visual styling (solid color only - gradients can be added later if needed)
|
|
9282
|
-
background:
|
|
9283
|
-
type:
|
|
9284
|
-
colorToken:
|
|
8690
|
+
background: z14.object({
|
|
8691
|
+
type: z14.literal("solid"),
|
|
8692
|
+
colorToken: z14.string()
|
|
9285
8693
|
}),
|
|
9286
8694
|
// Spacing (padding inside items)
|
|
9287
|
-
spacing:
|
|
8695
|
+
spacing: z14.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
|
|
9288
8696
|
// Border radius (null = inherit from theme.corners)
|
|
9289
|
-
corners:
|
|
8697
|
+
corners: z14.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
9290
8698
|
// Border styling (null = inherit from theme.border)
|
|
9291
|
-
border:
|
|
9292
|
-
widthClass:
|
|
8699
|
+
border: z14.object({
|
|
8700
|
+
widthClass: z14.string(),
|
|
9293
8701
|
// e.g., 'border', 'border-2', 'border-0'
|
|
9294
|
-
colorToken:
|
|
8702
|
+
colorToken: z14.string()
|
|
9295
8703
|
}).nullable(),
|
|
9296
8704
|
// Shadow (null = inherit from theme.shadow)
|
|
9297
|
-
shadow:
|
|
9298
|
-
elevation:
|
|
9299
|
-
softness:
|
|
9300
|
-
position:
|
|
8705
|
+
shadow: z14.object({
|
|
8706
|
+
elevation: z14.enum(["none", "low", "medium", "high"]),
|
|
8707
|
+
softness: z14.enum(["soft", "crisp", "hard"]).nullable(),
|
|
8708
|
+
position: z14.enum(["bottom", "bottom-right"])
|
|
9301
8709
|
}).nullable(),
|
|
9302
8710
|
// Icon style and animation
|
|
9303
|
-
icon:
|
|
8711
|
+
icon: z14.object({
|
|
9304
8712
|
style: accordionIconSchema,
|
|
9305
|
-
position:
|
|
9306
|
-
size:
|
|
8713
|
+
position: z14.enum(["left", "right"]),
|
|
8714
|
+
size: z14.enum(["sm", "md", "lg"])
|
|
9307
8715
|
}),
|
|
9308
8716
|
// Trigger (question) styling
|
|
9309
|
-
trigger:
|
|
9310
|
-
textColorToken:
|
|
9311
|
-
fontWeight:
|
|
8717
|
+
trigger: z14.object({
|
|
8718
|
+
textColorToken: z14.string(),
|
|
8719
|
+
fontWeight: z14.enum(["regular", "medium", "semibold", "bold"]).nullable()
|
|
9312
8720
|
// null = inherit from theme
|
|
9313
8721
|
}),
|
|
9314
8722
|
// Hover state styling
|
|
9315
|
-
hover:
|
|
9316
|
-
backgroundColorToken:
|
|
9317
|
-
textColorToken:
|
|
9318
|
-
borderColorToken:
|
|
8723
|
+
hover: z14.object({
|
|
8724
|
+
backgroundColorToken: z14.string().optional(),
|
|
8725
|
+
textColorToken: z14.string().optional(),
|
|
8726
|
+
borderColorToken: z14.string().optional()
|
|
9319
8727
|
}),
|
|
9320
8728
|
// Content (answer) styling
|
|
9321
|
-
content:
|
|
9322
|
-
textColorToken:
|
|
8729
|
+
content: z14.object({
|
|
8730
|
+
textColorToken: z14.string()
|
|
9323
8731
|
})
|
|
9324
8732
|
});
|
|
9325
8733
|
|
|
9326
8734
|
// ../theme-core/src/inputs/types.ts
|
|
9327
|
-
import { z as
|
|
9328
|
-
var inputSystemSchema =
|
|
8735
|
+
import { z as z15 } from "zod";
|
|
8736
|
+
var inputSystemSchema = z15.object({
|
|
9329
8737
|
// Base styling (applied to all inputs)
|
|
9330
|
-
base:
|
|
9331
|
-
background:
|
|
9332
|
-
|
|
9333
|
-
type:
|
|
9334
|
-
colorToken:
|
|
8738
|
+
base: z15.object({
|
|
8739
|
+
background: z15.union([
|
|
8740
|
+
z15.object({
|
|
8741
|
+
type: z15.literal("solid"),
|
|
8742
|
+
colorToken: z15.string()
|
|
9335
8743
|
}),
|
|
9336
|
-
|
|
9337
|
-
type:
|
|
8744
|
+
z15.object({
|
|
8745
|
+
type: z15.literal("transparent")
|
|
9338
8746
|
})
|
|
9339
8747
|
]),
|
|
9340
|
-
textColorToken:
|
|
9341
|
-
border:
|
|
9342
|
-
widthClass:
|
|
8748
|
+
textColorToken: z15.string(),
|
|
8749
|
+
border: z15.object({
|
|
8750
|
+
widthClass: z15.string(),
|
|
9343
8751
|
// e.g., 'border', 'border-2'
|
|
9344
|
-
colorToken:
|
|
9345
|
-
style:
|
|
8752
|
+
colorToken: z15.string(),
|
|
8753
|
+
style: z15.enum(["all", "underline"]).optional()
|
|
9346
8754
|
}),
|
|
9347
|
-
corners:
|
|
8755
|
+
corners: z15.enum(["square", "soft", "rounded", "pill"]).nullable(),
|
|
9348
8756
|
// null = inherit from theme.corners
|
|
9349
|
-
shadow:
|
|
9350
|
-
elevation:
|
|
9351
|
-
softness:
|
|
8757
|
+
shadow: z15.object({
|
|
8758
|
+
elevation: z15.enum(["none", "low", "medium"]),
|
|
8759
|
+
softness: z15.enum(["soft", "crisp", "hard"]).nullable()
|
|
9352
8760
|
}).nullable(),
|
|
9353
|
-
spacing:
|
|
8761
|
+
spacing: z15.enum(["compact", "cozy", "medium", "comfortable"]),
|
|
9354
8762
|
// padding inside inputs
|
|
9355
|
-
fontSize:
|
|
8763
|
+
fontSize: z15.enum(["sm", "base", "lg"])
|
|
9356
8764
|
}),
|
|
9357
8765
|
// Label styling
|
|
9358
|
-
label:
|
|
9359
|
-
textColorToken:
|
|
9360
|
-
fontWeight:
|
|
9361
|
-
fontSize:
|
|
9362
|
-
textTransform:
|
|
9363
|
-
letterSpacing:
|
|
9364
|
-
opacity:
|
|
8766
|
+
label: z15.object({
|
|
8767
|
+
textColorToken: z15.string(),
|
|
8768
|
+
fontWeight: z15.enum(["regular", "medium", "semibold", "bold", "black"]),
|
|
8769
|
+
fontSize: z15.enum(["2xs", "xs", "sm", "base"]),
|
|
8770
|
+
textTransform: z15.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
|
|
8771
|
+
letterSpacing: z15.enum(["normal", "wide", "wider", "widest"]).optional(),
|
|
8772
|
+
opacity: z15.number().min(0.2).max(1).optional()
|
|
9365
8773
|
}),
|
|
9366
8774
|
// Focus state
|
|
9367
|
-
focus:
|
|
9368
|
-
ringColorToken:
|
|
9369
|
-
ringWidth:
|
|
9370
|
-
borderColorToken:
|
|
8775
|
+
focus: z15.object({
|
|
8776
|
+
ringColorToken: z15.string(),
|
|
8777
|
+
ringWidth: z15.enum(["0", "1", "2", "3"]),
|
|
8778
|
+
borderColorToken: z15.string().optional()
|
|
9371
8779
|
// Change border color on focus
|
|
9372
8780
|
}),
|
|
9373
8781
|
// Error state (for validation feedback)
|
|
9374
|
-
error:
|
|
9375
|
-
borderColorToken:
|
|
9376
|
-
textColorToken:
|
|
8782
|
+
error: z15.object({
|
|
8783
|
+
borderColorToken: z15.string(),
|
|
8784
|
+
textColorToken: z15.string()
|
|
9377
8785
|
}),
|
|
9378
8786
|
// Disabled state
|
|
9379
|
-
disabled:
|
|
9380
|
-
backgroundColorToken:
|
|
9381
|
-
textColorToken:
|
|
9382
|
-
opacity:
|
|
8787
|
+
disabled: z15.object({
|
|
8788
|
+
backgroundColorToken: z15.string(),
|
|
8789
|
+
textColorToken: z15.string(),
|
|
8790
|
+
opacity: z15.number().min(0.3).max(0.7)
|
|
9383
8791
|
})
|
|
9384
8792
|
});
|
|
9385
8793
|
|
|
9386
8794
|
// ../theme-core/src/gradients/types.ts
|
|
9387
|
-
import { z as
|
|
9388
|
-
var gradientStopSchema =
|
|
9389
|
-
color:
|
|
8795
|
+
import { z as z16 } from "zod";
|
|
8796
|
+
var gradientStopSchema = z16.object({
|
|
8797
|
+
color: z16.string(),
|
|
9390
8798
|
// Theme color token name (e.g., 'primary-500')
|
|
9391
|
-
position:
|
|
8799
|
+
position: z16.number().min(0).max(100)
|
|
9392
8800
|
// Percentage 0-100
|
|
9393
8801
|
});
|
|
9394
|
-
var gradientConfigSchema =
|
|
9395
|
-
type:
|
|
9396
|
-
angle:
|
|
8802
|
+
var gradientConfigSchema = z16.object({
|
|
8803
|
+
type: z16.enum(["linear", "radial"]),
|
|
8804
|
+
angle: z16.number().min(0).max(360).optional(),
|
|
9397
8805
|
// For linear gradients (degrees)
|
|
9398
|
-
position:
|
|
8806
|
+
position: z16.string().optional(),
|
|
9399
8807
|
// For radial gradients ('center', 'top left', etc.)
|
|
9400
|
-
stops:
|
|
8808
|
+
stops: z16.array(gradientStopSchema).min(2)
|
|
9401
8809
|
});
|
|
9402
8810
|
|
|
9403
8811
|
// ../theme-core/src/navigation/types.ts
|
|
9404
|
-
import { z as
|
|
8812
|
+
import { z as z18 } from "zod";
|
|
9405
8813
|
|
|
9406
8814
|
// ../theme-core/src/interactive/baseSchema.ts
|
|
9407
|
-
import { z as
|
|
9408
|
-
var interactiveTypographySchema =
|
|
8815
|
+
import { z as z17 } from "zod";
|
|
8816
|
+
var interactiveTypographySchema = z17.object({
|
|
9409
8817
|
/** Font family source */
|
|
9410
|
-
typography:
|
|
8818
|
+
typography: z17.enum(["body", "heading"]).default("body"),
|
|
9411
8819
|
/** Font weight */
|
|
9412
|
-
fontWeight:
|
|
8820
|
+
fontWeight: z17.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
|
|
9413
8821
|
/** Text transform */
|
|
9414
|
-
textTransform:
|
|
8822
|
+
textTransform: z17.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
9415
8823
|
/** Italic style */
|
|
9416
|
-
italic:
|
|
8824
|
+
italic: z17.boolean().default(false)
|
|
9417
8825
|
});
|
|
9418
|
-
var effectApplicationSchema2 =
|
|
8826
|
+
var effectApplicationSchema2 = z17.object({
|
|
9419
8827
|
/** Effect preset ID */
|
|
9420
|
-
effectId:
|
|
8828
|
+
effectId: z17.string(),
|
|
9421
8829
|
/** User-provided customization options */
|
|
9422
|
-
options:
|
|
8830
|
+
options: z17.record(z17.string(), z17.any()).optional()
|
|
9423
8831
|
});
|
|
9424
|
-
var effectCompositionSchema =
|
|
8832
|
+
var effectCompositionSchema = z17.object({
|
|
9425
8833
|
/** Effects always applied */
|
|
9426
|
-
base:
|
|
8834
|
+
base: z17.array(effectApplicationSchema2).optional(),
|
|
9427
8835
|
/** Effects applied on hover */
|
|
9428
|
-
hover:
|
|
8836
|
+
hover: z17.array(effectApplicationSchema2).optional(),
|
|
9429
8837
|
/** Effects applied on active/pressed */
|
|
9430
|
-
active:
|
|
8838
|
+
active: z17.array(effectApplicationSchema2).optional(),
|
|
9431
8839
|
/** Effects applied on focus */
|
|
9432
|
-
focus:
|
|
8840
|
+
focus: z17.array(effectApplicationSchema2).optional()
|
|
9433
8841
|
});
|
|
9434
8842
|
|
|
9435
8843
|
// ../theme-core/src/navigation/types.ts
|
|
9436
|
-
var navLinkPaddingSchema =
|
|
9437
|
-
var navLinkPaddingXSchema =
|
|
9438
|
-
var navLinkBorderRadiusSchema =
|
|
9439
|
-
var navLinkTextSizeSchema =
|
|
9440
|
-
var navLinkLetterSpacingSchema =
|
|
9441
|
-
var navLinkStyleSchema =
|
|
8844
|
+
var navLinkPaddingSchema = z18.enum(["none", "compact", "default"]);
|
|
8845
|
+
var navLinkPaddingXSchema = z18.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
8846
|
+
var navLinkBorderRadiusSchema = z18.enum(["none", "sm", "md", "full"]);
|
|
8847
|
+
var navLinkTextSizeSchema = z18.enum(["xs", "sm", "base", "lg"]);
|
|
8848
|
+
var navLinkLetterSpacingSchema = z18.enum(["normal", "wide", "wider", "widest"]);
|
|
8849
|
+
var navLinkStyleSchema = z18.object({
|
|
9442
8850
|
/** Display name for the style */
|
|
9443
|
-
name:
|
|
8851
|
+
name: z18.string().min(1).max(30).optional(),
|
|
9444
8852
|
/** Typography settings (inherited from interactive base) */
|
|
9445
8853
|
...interactiveTypographySchema.shape,
|
|
9446
8854
|
/** Text color token */
|
|
9447
|
-
colorToken:
|
|
8855
|
+
colorToken: z18.string().default("text"),
|
|
9448
8856
|
/** Optional text size override */
|
|
9449
8857
|
textSize: navLinkTextSizeSchema.optional(),
|
|
9450
8858
|
/** Optional letter spacing override */
|
|
9451
8859
|
letterSpacing: navLinkLetterSpacingSchema.optional(),
|
|
9452
8860
|
/** Hover/active color token (for color-change effects) */
|
|
9453
|
-
hoverColorToken:
|
|
8861
|
+
hoverColorToken: z18.string().nullable().optional(),
|
|
9454
8862
|
/** Padding preset */
|
|
9455
8863
|
padding: navLinkPaddingSchema.default("compact"),
|
|
9456
8864
|
/** Horizontal padding override (overrides horizontal component of padding preset) */
|
|
@@ -9462,7 +8870,7 @@ var navLinkStyleSchema = z21.object({
|
|
|
9462
8870
|
});
|
|
9463
8871
|
|
|
9464
8872
|
// ../theme-core/src/customCss/validation.ts
|
|
9465
|
-
import { z as
|
|
8873
|
+
import { z as z19 } from "zod";
|
|
9466
8874
|
var FORBIDDEN_SELECTORS = [":root", "html", "body"];
|
|
9467
8875
|
var UNIVERSAL_SELECTOR = "*";
|
|
9468
8876
|
var REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
|
|
@@ -9504,7 +8912,7 @@ function containsForbiddenSelector(selector) {
|
|
|
9504
8912
|
}
|
|
9505
8913
|
return false;
|
|
9506
8914
|
}
|
|
9507
|
-
var selectorSchema =
|
|
8915
|
+
var selectorSchema = z19.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
|
|
9508
8916
|
(s) => !containsForbiddenSelector(s),
|
|
9509
8917
|
{ message: "Global selectors (:root, html, body, *) are not allowed" }
|
|
9510
8918
|
);
|
|
@@ -9514,38 +8922,38 @@ function containsRemoteUrl(value) {
|
|
|
9514
8922
|
function containsJavascriptUrl(value) {
|
|
9515
8923
|
return JAVASCRIPT_URL_PATTERN.test(value);
|
|
9516
8924
|
}
|
|
9517
|
-
var declarationValueSchema =
|
|
8925
|
+
var declarationValueSchema = z19.string().max(500, "Declaration value too long (max 500 characters)").refine(
|
|
9518
8926
|
(v) => !containsRemoteUrl(v),
|
|
9519
8927
|
{ message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
|
|
9520
8928
|
).refine(
|
|
9521
8929
|
(v) => !containsJavascriptUrl(v),
|
|
9522
8930
|
{ message: "javascript: URLs are not allowed" }
|
|
9523
8931
|
);
|
|
9524
|
-
var declarationsSchema =
|
|
9525
|
-
|
|
8932
|
+
var declarationsSchema = z19.record(
|
|
8933
|
+
z19.string().min(1).max(100),
|
|
9526
8934
|
// property name
|
|
9527
8935
|
declarationValueSchema
|
|
9528
8936
|
// property value
|
|
9529
8937
|
);
|
|
9530
|
-
var customCssRuleSchema =
|
|
9531
|
-
id:
|
|
8938
|
+
var customCssRuleSchema = z19.object({
|
|
8939
|
+
id: z19.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
|
|
9532
8940
|
selector: selectorSchema,
|
|
9533
8941
|
declarations: declarationsSchema
|
|
9534
8942
|
});
|
|
9535
8943
|
var blockCustomCssRuleSchema = customCssRuleSchema.extend({
|
|
9536
|
-
blockKind:
|
|
8944
|
+
blockKind: z19.string().min(1, "Block kind is required").max(50, "Block kind too long")
|
|
9537
8945
|
});
|
|
9538
|
-
var customCssRulesSchema =
|
|
9539
|
-
var blockCustomCssRulesSchema =
|
|
8946
|
+
var customCssRulesSchema = z19.array(customCssRuleSchema).optional();
|
|
8947
|
+
var blockCustomCssRulesSchema = z19.array(blockCustomCssRuleSchema).optional();
|
|
9540
8948
|
|
|
9541
8949
|
// ../theme-core/src/customCss/atRuleValidation.ts
|
|
9542
|
-
import { z as
|
|
8950
|
+
import { z as z20 } from "zod";
|
|
9543
8951
|
var KEYFRAME_OFFSET_PATTERN = /^(from|to|\d{1,3}%)$/i;
|
|
9544
8952
|
var ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
|
|
9545
8953
|
var BLOCKED_AT_RULES = ["@import", "@charset"];
|
|
9546
8954
|
var BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
|
|
9547
|
-
var ruleIdSchema =
|
|
9548
|
-
var nestedRuleSchema =
|
|
8955
|
+
var ruleIdSchema = z20.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
|
|
8956
|
+
var nestedRuleSchema = z20.object({
|
|
9549
8957
|
selector: selectorSchema,
|
|
9550
8958
|
declarations: declarationsSchema
|
|
9551
8959
|
});
|
|
@@ -9557,146 +8965,146 @@ function isValidKeyframeOffset(offset) {
|
|
|
9557
8965
|
const value = parseInt(match[1], 10);
|
|
9558
8966
|
return value >= 0 && value <= 100;
|
|
9559
8967
|
}
|
|
9560
|
-
var keyframeOffsetSchema =
|
|
8968
|
+
var keyframeOffsetSchema = z20.string().transform((offset) => offset.trim()).refine(
|
|
9561
8969
|
(offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
|
|
9562
8970
|
{ message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
|
|
9563
8971
|
).refine(
|
|
9564
8972
|
isValidKeyframeOffset,
|
|
9565
8973
|
{ message: "Keyframe offset must be between 0% and 100%" }
|
|
9566
8974
|
);
|
|
9567
|
-
var animationNameSchema =
|
|
8975
|
+
var animationNameSchema = z20.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
|
|
9568
8976
|
(name) => ANIMATION_NAME_PATTERN.test(name),
|
|
9569
8977
|
{ message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
|
|
9570
8978
|
);
|
|
9571
|
-
var keyframeSchema =
|
|
8979
|
+
var keyframeSchema = z20.object({
|
|
9572
8980
|
offset: keyframeOffsetSchema,
|
|
9573
8981
|
declarations: declarationsSchema
|
|
9574
8982
|
});
|
|
9575
|
-
var keyframesAtRuleSchema =
|
|
8983
|
+
var keyframesAtRuleSchema = z20.object({
|
|
9576
8984
|
id: ruleIdSchema,
|
|
9577
|
-
type:
|
|
8985
|
+
type: z20.literal("keyframes"),
|
|
9578
8986
|
name: animationNameSchema,
|
|
9579
|
-
frames:
|
|
8987
|
+
frames: z20.array(keyframeSchema).min(1, "At least one keyframe is required")
|
|
9580
8988
|
});
|
|
9581
|
-
var fontFaceDeclarationsSchema =
|
|
8989
|
+
var fontFaceDeclarationsSchema = z20.record(z20.string().min(1).max(100), declarationValueSchema).refine(
|
|
9582
8990
|
(decls) => "fontFamily" in decls || "font-family" in decls,
|
|
9583
8991
|
{ message: "font-family is required in @font-face" }
|
|
9584
8992
|
);
|
|
9585
|
-
var fontFaceAtRuleSchema =
|
|
8993
|
+
var fontFaceAtRuleSchema = z20.object({
|
|
9586
8994
|
id: ruleIdSchema,
|
|
9587
|
-
type:
|
|
8995
|
+
type: z20.literal("font-face"),
|
|
9588
8996
|
declarations: fontFaceDeclarationsSchema
|
|
9589
8997
|
});
|
|
9590
|
-
var mediaQuerySchema =
|
|
9591
|
-
var mediaAtRuleSchema =
|
|
8998
|
+
var mediaQuerySchema = z20.string().min(1, "Media query is required").max(200, "Media query too long");
|
|
8999
|
+
var mediaAtRuleSchema = z20.object({
|
|
9592
9000
|
id: ruleIdSchema,
|
|
9593
|
-
type:
|
|
9001
|
+
type: z20.literal("media"),
|
|
9594
9002
|
query: mediaQuerySchema,
|
|
9595
|
-
rules:
|
|
9003
|
+
rules: z20.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
9596
9004
|
});
|
|
9597
|
-
var supportsConditionSchema =
|
|
9598
|
-
var supportsAtRuleSchema =
|
|
9005
|
+
var supportsConditionSchema = z20.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
|
|
9006
|
+
var supportsAtRuleSchema = z20.object({
|
|
9599
9007
|
id: ruleIdSchema,
|
|
9600
|
-
type:
|
|
9008
|
+
type: z20.literal("supports"),
|
|
9601
9009
|
condition: supportsConditionSchema,
|
|
9602
|
-
rules:
|
|
9010
|
+
rules: z20.array(nestedRuleSchema).min(1, "At least one rule is required")
|
|
9603
9011
|
});
|
|
9604
9012
|
function containsBlockedAtRule(css) {
|
|
9605
9013
|
return BLOCKED_AT_RULE_PATTERN.test(css);
|
|
9606
9014
|
}
|
|
9607
|
-
var rawCssSchema =
|
|
9015
|
+
var rawCssSchema = z20.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
|
|
9608
9016
|
(css) => css.trim().startsWith("@"),
|
|
9609
9017
|
{ message: "Raw at-rule must start with @" }
|
|
9610
9018
|
).refine(
|
|
9611
9019
|
(css) => !containsBlockedAtRule(css),
|
|
9612
9020
|
{ message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
|
|
9613
9021
|
);
|
|
9614
|
-
var rawAtRuleSchema =
|
|
9022
|
+
var rawAtRuleSchema = z20.object({
|
|
9615
9023
|
id: ruleIdSchema,
|
|
9616
|
-
type:
|
|
9024
|
+
type: z20.literal("raw"),
|
|
9617
9025
|
css: rawCssSchema
|
|
9618
9026
|
});
|
|
9619
|
-
var customCssAtRuleSchema =
|
|
9027
|
+
var customCssAtRuleSchema = z20.discriminatedUnion("type", [
|
|
9620
9028
|
keyframesAtRuleSchema,
|
|
9621
9029
|
fontFaceAtRuleSchema,
|
|
9622
9030
|
mediaAtRuleSchema,
|
|
9623
9031
|
supportsAtRuleSchema,
|
|
9624
9032
|
rawAtRuleSchema
|
|
9625
9033
|
]);
|
|
9626
|
-
var customCssAtRulesSchema =
|
|
9034
|
+
var customCssAtRulesSchema = z20.array(customCssAtRuleSchema).optional();
|
|
9627
9035
|
|
|
9628
9036
|
// ../theme-core/src/shared/componentStyles.ts
|
|
9629
|
-
import { z as
|
|
9630
|
-
var componentBorderSchema =
|
|
9631
|
-
width:
|
|
9632
|
-
style:
|
|
9633
|
-
colorToken:
|
|
9037
|
+
import { z as z21 } from "zod";
|
|
9038
|
+
var componentBorderSchema = z21.object({
|
|
9039
|
+
width: z21.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
|
|
9040
|
+
style: z21.enum(["solid", "dashed"]).default("solid"),
|
|
9041
|
+
colorToken: z21.string().optional()
|
|
9634
9042
|
// defaults to "border" if not set
|
|
9635
9043
|
});
|
|
9636
|
-
var componentShadowSchema =
|
|
9637
|
-
elevation:
|
|
9044
|
+
var componentShadowSchema = z21.object({
|
|
9045
|
+
elevation: z21.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
|
|
9638
9046
|
});
|
|
9639
9047
|
|
|
9640
9048
|
// ../theme-core/src/schema.ts
|
|
9641
|
-
var axesSchema =
|
|
9642
|
-
tone:
|
|
9643
|
-
energy:
|
|
9644
|
-
density:
|
|
9645
|
-
mediaBias:
|
|
9646
|
-
conversionBias:
|
|
9647
|
-
motion:
|
|
9648
|
-
});
|
|
9649
|
-
var colourHexString =
|
|
9650
|
-
var paletteColorSchema =
|
|
9651
|
-
name:
|
|
9049
|
+
var axesSchema = z22.object({
|
|
9050
|
+
tone: z22.enum(["minimal", "classic", "bold"]),
|
|
9051
|
+
energy: z22.enum(["calm", "vibrant"]),
|
|
9052
|
+
density: z22.enum(["airy", "regular", "compact"]),
|
|
9053
|
+
mediaBias: z22.enum(["text", "media", "mixed"]),
|
|
9054
|
+
conversionBias: z22.enum(["low", "med", "high"]),
|
|
9055
|
+
motion: z22.enum(["subtle", "standard", "expressive"])
|
|
9056
|
+
});
|
|
9057
|
+
var colourHexString = z22.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
|
|
9058
|
+
var paletteColorSchema = z22.object({
|
|
9059
|
+
name: z22.string().min(1),
|
|
9652
9060
|
hex: colourHexString
|
|
9653
9061
|
});
|
|
9654
|
-
var paletteMetaSchema =
|
|
9655
|
-
mode:
|
|
9062
|
+
var paletteMetaSchema = z22.object({
|
|
9063
|
+
mode: z22.enum(["light", "dark"])
|
|
9656
9064
|
});
|
|
9657
|
-
var paletteSchema =
|
|
9658
|
-
colors:
|
|
9065
|
+
var paletteSchema = z22.object({
|
|
9066
|
+
colors: z22.array(paletteColorSchema),
|
|
9659
9067
|
meta: paletteMetaSchema
|
|
9660
9068
|
});
|
|
9661
|
-
var typographyStyleSchema =
|
|
9662
|
-
family:
|
|
9663
|
-
weight:
|
|
9664
|
-
letterSpacing:
|
|
9665
|
-
lineHeight:
|
|
9069
|
+
var typographyStyleSchema = z22.object({
|
|
9070
|
+
family: z22.string().min(1),
|
|
9071
|
+
weight: z22.enum(["light", "regular", "medium", "semibold", "bold"]),
|
|
9072
|
+
letterSpacing: z22.enum(["tight", "normal", "loose"]),
|
|
9073
|
+
lineHeight: z22.enum(["normal", "relaxed", "loose"])
|
|
9666
9074
|
});
|
|
9667
9075
|
var bodyTypographyStyleSchema = typographyStyleSchema.extend({
|
|
9668
|
-
size:
|
|
9076
|
+
size: z22.enum(["md", "lg", "xl"])
|
|
9669
9077
|
});
|
|
9670
|
-
var headingSizeSchema =
|
|
9671
|
-
var headingTypographyOverridesSchema =
|
|
9672
|
-
weight:
|
|
9673
|
-
letterSpacing:
|
|
9078
|
+
var headingSizeSchema = z22.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
|
|
9079
|
+
var headingTypographyOverridesSchema = z22.object({
|
|
9080
|
+
weight: z22.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
|
|
9081
|
+
letterSpacing: z22.enum(["tight", "normal", "loose"]).nullable().optional(),
|
|
9674
9082
|
size: headingSizeSchema.nullable().optional(),
|
|
9675
|
-
lineHeight:
|
|
9676
|
-
italic:
|
|
9677
|
-
colorToken:
|
|
9083
|
+
lineHeight: z22.enum(["normal", "relaxed", "loose"]).nullable().optional(),
|
|
9084
|
+
italic: z22.boolean().nullable().optional(),
|
|
9085
|
+
colorToken: z22.string().min(1).nullable().optional()
|
|
9678
9086
|
// Palette token name for heading color
|
|
9679
9087
|
});
|
|
9680
9088
|
var headingTypographyStyleSchema = typographyStyleSchema.extend({
|
|
9681
|
-
case:
|
|
9682
|
-
italic:
|
|
9683
|
-
colorToken:
|
|
9089
|
+
case: z22.enum(["uppercase", "normal", "smallCaps"]).nullable(),
|
|
9090
|
+
italic: z22.boolean().nullable(),
|
|
9091
|
+
colorToken: z22.string().min(1).nullable().optional()
|
|
9684
9092
|
// Palette token name for heading color
|
|
9685
9093
|
});
|
|
9686
|
-
var proseLinkUnderlineStyleSchema =
|
|
9687
|
-
var proseLinkUnderlineThicknessSchema =
|
|
9688
|
-
var proseLinkUnderlineOffsetSchema =
|
|
9689
|
-
var proseLinkStyleSchema =
|
|
9690
|
-
colorToken:
|
|
9691
|
-
hoverColorToken:
|
|
9692
|
-
underline:
|
|
9693
|
-
decorationColorToken:
|
|
9694
|
-
hoverDecorationColorToken:
|
|
9094
|
+
var proseLinkUnderlineStyleSchema = z22.enum(["solid", "dotted", "dashed"]);
|
|
9095
|
+
var proseLinkUnderlineThicknessSchema = z22.enum(["auto", "fromFont", "thin", "medium", "thick"]);
|
|
9096
|
+
var proseLinkUnderlineOffsetSchema = z22.enum(["auto", "tight", "normal", "loose"]);
|
|
9097
|
+
var proseLinkStyleSchema = z22.object({
|
|
9098
|
+
colorToken: z22.string().min(1).optional(),
|
|
9099
|
+
hoverColorToken: z22.string().min(1).optional(),
|
|
9100
|
+
underline: z22.boolean().optional(),
|
|
9101
|
+
decorationColorToken: z22.string().min(1).optional(),
|
|
9102
|
+
hoverDecorationColorToken: z22.string().min(1).optional(),
|
|
9695
9103
|
underlineStyle: proseLinkUnderlineStyleSchema.optional(),
|
|
9696
9104
|
underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
|
|
9697
9105
|
underlineOffset: proseLinkUnderlineOffsetSchema.optional()
|
|
9698
9106
|
});
|
|
9699
|
-
var semanticSpacingSchema =
|
|
9107
|
+
var semanticSpacingSchema = z22.enum([
|
|
9700
9108
|
"none",
|
|
9701
9109
|
"compact",
|
|
9702
9110
|
"cozy",
|
|
@@ -9704,62 +9112,62 @@ var semanticSpacingSchema = z25.enum([
|
|
|
9704
9112
|
"comfortable",
|
|
9705
9113
|
"spacious"
|
|
9706
9114
|
]);
|
|
9707
|
-
var boxRoundedSchema =
|
|
9708
|
-
var boxBackgroundOverlaySchema =
|
|
9709
|
-
type:
|
|
9710
|
-
color:
|
|
9711
|
-
gradient:
|
|
9712
|
-
opacity:
|
|
9713
|
-
});
|
|
9714
|
-
var boxBackgroundSchema =
|
|
9715
|
-
type:
|
|
9716
|
-
color:
|
|
9717
|
-
gradient:
|
|
9115
|
+
var boxRoundedSchema = z22.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
|
|
9116
|
+
var boxBackgroundOverlaySchema = z22.object({
|
|
9117
|
+
type: z22.enum(["none", "color", "gradient"]).nullable().optional(),
|
|
9118
|
+
color: z22.string().nullable().optional(),
|
|
9119
|
+
gradient: z22.string().nullable().optional(),
|
|
9120
|
+
opacity: z22.number().min(0).max(1).nullable().optional()
|
|
9121
|
+
});
|
|
9122
|
+
var boxBackgroundSchema = z22.object({
|
|
9123
|
+
type: z22.enum(["color", "gradient", "image"]).optional(),
|
|
9124
|
+
color: z22.string().nullable().optional(),
|
|
9125
|
+
gradient: z22.string().nullable().optional(),
|
|
9718
9126
|
image: mediaSchema.nullable().optional(),
|
|
9719
|
-
objectFit:
|
|
9720
|
-
scale:
|
|
9721
|
-
position:
|
|
9722
|
-
opacity:
|
|
9127
|
+
objectFit: z22.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
|
|
9128
|
+
scale: z22.string().nullable().optional(),
|
|
9129
|
+
position: z22.string().nullable().optional(),
|
|
9130
|
+
opacity: z22.number().min(0).max(1).nullable().optional(),
|
|
9723
9131
|
overlay: boxBackgroundOverlaySchema.nullable().optional(),
|
|
9724
|
-
textColor:
|
|
9725
|
-
headingColor:
|
|
9132
|
+
textColor: z22.string().nullable().optional(),
|
|
9133
|
+
headingColor: z22.string().nullable().optional()
|
|
9726
9134
|
});
|
|
9727
|
-
var sectionStylesOverrideSchema =
|
|
9135
|
+
var sectionStylesOverrideSchema = z22.object({
|
|
9728
9136
|
background: boxBackgroundSchema.nullable().optional(),
|
|
9729
9137
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
9730
|
-
minHeight:
|
|
9138
|
+
minHeight: z22.enum(["none", "hero", "immersive"]).nullable().optional()
|
|
9731
9139
|
});
|
|
9732
|
-
var containerStylesOverrideSchema =
|
|
9140
|
+
var containerStylesOverrideSchema = z22.object({
|
|
9733
9141
|
background: boxBackgroundSchema.nullable().optional(),
|
|
9734
9142
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
9735
|
-
raised:
|
|
9143
|
+
raised: z22.boolean().nullable().optional(),
|
|
9736
9144
|
rounded: boxRoundedSchema.nullable().optional(),
|
|
9737
|
-
fullWidth:
|
|
9145
|
+
fullWidth: z22.boolean().nullable().optional()
|
|
9738
9146
|
});
|
|
9739
|
-
var cardBorderOverrideSchema =
|
|
9740
|
-
enabled:
|
|
9741
|
-
width:
|
|
9742
|
-
colorToken:
|
|
9147
|
+
var cardBorderOverrideSchema = z22.object({
|
|
9148
|
+
enabled: z22.boolean().nullable().optional(),
|
|
9149
|
+
width: z22.enum(["none", "1", "2", "3"]).nullable().optional(),
|
|
9150
|
+
colorToken: z22.string().nullable().optional()
|
|
9743
9151
|
});
|
|
9744
|
-
var cardStylesOverrideSchema =
|
|
9152
|
+
var cardStylesOverrideSchema = z22.object({
|
|
9745
9153
|
background: boxBackgroundSchema.nullable().optional(),
|
|
9746
9154
|
border: cardBorderOverrideSchema.nullable().optional(),
|
|
9747
9155
|
spacing: semanticSpacingSchema.nullable().optional(),
|
|
9748
|
-
raised:
|
|
9156
|
+
raised: z22.boolean().nullable().optional(),
|
|
9749
9157
|
rounded: boxRoundedSchema.nullable().optional()
|
|
9750
9158
|
});
|
|
9751
|
-
var blockStyleOverridesSchema =
|
|
9159
|
+
var blockStyleOverridesSchema = z22.object({
|
|
9752
9160
|
sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
|
|
9753
9161
|
containerStyles: containerStylesOverrideSchema.nullable().optional(),
|
|
9754
9162
|
cardStyles: cardStylesOverrideSchema.nullable().optional()
|
|
9755
9163
|
});
|
|
9756
|
-
var blockThemeOverrideSchema =
|
|
9757
|
-
typography:
|
|
9164
|
+
var blockThemeOverrideSchema = z22.object({
|
|
9165
|
+
typography: z22.object({
|
|
9758
9166
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
9759
9167
|
}).optional(),
|
|
9760
9168
|
styles: blockStyleOverridesSchema.optional()
|
|
9761
9169
|
});
|
|
9762
|
-
var typographyScaleSchema =
|
|
9170
|
+
var typographyScaleSchema = z22.enum([
|
|
9763
9171
|
// New intuitive names
|
|
9764
9172
|
"compact",
|
|
9765
9173
|
// ratio 1.2 (was minorThird)
|
|
@@ -9772,9 +9180,9 @@ var typographyScaleSchema = z25.enum([
|
|
|
9772
9180
|
"majorThird",
|
|
9773
9181
|
"perfectFourth"
|
|
9774
9182
|
]);
|
|
9775
|
-
var typographySchema =
|
|
9183
|
+
var typographySchema = z22.object({
|
|
9776
9184
|
body: bodyTypographyStyleSchema,
|
|
9777
|
-
headings:
|
|
9185
|
+
headings: z22.object({
|
|
9778
9186
|
default: headingTypographyStyleSchema,
|
|
9779
9187
|
h1: headingTypographyOverridesSchema,
|
|
9780
9188
|
h2: headingTypographyOverridesSchema,
|
|
@@ -9787,41 +9195,41 @@ var typographySchema = z25.object({
|
|
|
9787
9195
|
scale: typographyScaleSchema,
|
|
9788
9196
|
proseLinkStyle: proseLinkStyleSchema.optional()
|
|
9789
9197
|
});
|
|
9790
|
-
var spaceSchema =
|
|
9791
|
-
var corners =
|
|
9792
|
-
var shadow =
|
|
9793
|
-
elevation:
|
|
9794
|
-
softness:
|
|
9795
|
-
position:
|
|
9198
|
+
var spaceSchema = z22.enum(["comfortable", "standard", "dense"]);
|
|
9199
|
+
var corners = z22.enum(["square", "soft", "rounded", "pill"]);
|
|
9200
|
+
var shadow = z22.object({
|
|
9201
|
+
elevation: z22.enum(["none", "low", "medium", "high"]),
|
|
9202
|
+
softness: z22.enum(["crisp", "soft", "hard"]).nullable(),
|
|
9203
|
+
position: z22.enum(["bottom", "bottom-right"]).default("bottom")
|
|
9796
9204
|
});
|
|
9797
|
-
var border =
|
|
9798
|
-
width:
|
|
9799
|
-
style:
|
|
9205
|
+
var border = z22.object({
|
|
9206
|
+
width: z22.enum(["none", "hairline", "thin", "thick"]),
|
|
9207
|
+
style: z22.enum(["solid", "dashed"])
|
|
9800
9208
|
});
|
|
9801
|
-
var motion =
|
|
9802
|
-
level:
|
|
9803
|
-
easing:
|
|
9209
|
+
var motion = z22.object({
|
|
9210
|
+
level: z22.enum(["off", "low", "medium", "high"]),
|
|
9211
|
+
easing: z22.enum(["standard", "snappy", "gentle"]).nullable()
|
|
9804
9212
|
});
|
|
9805
|
-
var buttonStyle =
|
|
9213
|
+
var buttonStyle = z22.object({
|
|
9806
9214
|
shape: corners
|
|
9807
9215
|
// Used for --radius-control CSS variable
|
|
9808
9216
|
});
|
|
9809
|
-
var cardStyle =
|
|
9810
|
-
elevation:
|
|
9811
|
-
border:
|
|
9217
|
+
var cardStyle = z22.object({
|
|
9218
|
+
elevation: z22.enum(["none", "low", "medium", "high"]),
|
|
9219
|
+
border: z22.enum(["none", "subtle", "defined"]),
|
|
9812
9220
|
shape: corners,
|
|
9813
|
-
headerStyle:
|
|
9814
|
-
mediaTreatment:
|
|
9221
|
+
headerStyle: z22.enum(["plain", "accentBar", "subtleBg"]).nullable(),
|
|
9222
|
+
mediaTreatment: z22.enum(["square", "rounded", "bleed"]).nullable()
|
|
9815
9223
|
});
|
|
9816
|
-
var inputStyle =
|
|
9224
|
+
var inputStyle = z22.object({
|
|
9817
9225
|
shape: corners,
|
|
9818
|
-
border:
|
|
9819
|
-
focus:
|
|
9820
|
-
label:
|
|
9226
|
+
border: z22.enum(["subtle", "defined", "underline"]),
|
|
9227
|
+
focus: z22.enum(["glow", "ring", "underline"]),
|
|
9228
|
+
label: z22.enum(["inside", "above"])
|
|
9821
9229
|
});
|
|
9822
|
-
var headerVariant =
|
|
9823
|
-
var headerPositioning =
|
|
9824
|
-
var headerNavStyle =
|
|
9230
|
+
var headerVariant = z22.enum(["classic", "centered", "transparent", "floating", "editorial"]);
|
|
9231
|
+
var headerPositioning = z22.enum(["static", "sticky", "fixed"]);
|
|
9232
|
+
var headerNavStyle = z22.enum([
|
|
9825
9233
|
"minimal",
|
|
9826
9234
|
"underline",
|
|
9827
9235
|
"underline-grow",
|
|
@@ -9830,82 +9238,82 @@ var headerNavStyle = z25.enum([
|
|
|
9830
9238
|
"frosted",
|
|
9831
9239
|
"solid"
|
|
9832
9240
|
]);
|
|
9833
|
-
var navFontWeight =
|
|
9834
|
-
var headerMaxWidth =
|
|
9835
|
-
var headerContainerSchema =
|
|
9836
|
-
rounded:
|
|
9837
|
-
border:
|
|
9838
|
-
shadow:
|
|
9839
|
-
padding:
|
|
9840
|
-
tint:
|
|
9841
|
-
opacity:
|
|
9241
|
+
var navFontWeight = z22.enum(["regular", "medium", "semibold", "bold"]);
|
|
9242
|
+
var headerMaxWidth = z22.enum(["container", "full"]);
|
|
9243
|
+
var headerContainerSchema = z22.object({
|
|
9244
|
+
rounded: z22.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
|
|
9245
|
+
border: z22.boolean().default(true),
|
|
9246
|
+
shadow: z22.boolean().default(true),
|
|
9247
|
+
padding: z22.enum(["sm", "md", "lg"]).default("md"),
|
|
9248
|
+
tint: z22.string().nullable().optional(),
|
|
9249
|
+
opacity: z22.number().min(0).max(1).default(0.12)
|
|
9842
9250
|
}).optional();
|
|
9843
9251
|
var headerBorderSchema = componentBorderSchema.extend({
|
|
9844
|
-
position:
|
|
9252
|
+
position: z22.enum(["bottom", "top", "both", "none"]).default("bottom")
|
|
9845
9253
|
}).optional();
|
|
9846
|
-
var logoStyleSchema =
|
|
9847
|
-
fontFamily:
|
|
9848
|
-
letterSpacing:
|
|
9849
|
-
gradient:
|
|
9254
|
+
var logoStyleSchema = z22.object({
|
|
9255
|
+
fontFamily: z22.enum(["heading", "body"]).default("heading"),
|
|
9256
|
+
letterSpacing: z22.enum(["normal", "wide", "wider", "widest"]).default("normal"),
|
|
9257
|
+
gradient: z22.boolean().default(false)
|
|
9850
9258
|
}).optional();
|
|
9851
|
-
var headerLogoTextSchema =
|
|
9852
|
-
mobileWrapLines:
|
|
9853
|
-
mobileMaxWidth:
|
|
9854
|
-
hideOnShrink:
|
|
9259
|
+
var headerLogoTextSchema = z22.object({
|
|
9260
|
+
mobileWrapLines: z22.union([z22.literal(1), z22.literal(2)]).optional(),
|
|
9261
|
+
mobileMaxWidth: z22.enum(["xs", "sm", "md"]).optional(),
|
|
9262
|
+
hideOnShrink: z22.boolean().optional()
|
|
9855
9263
|
}).optional();
|
|
9856
|
-
var navEffectsSchema =
|
|
9857
|
-
underlineGradient:
|
|
9858
|
-
glow:
|
|
9859
|
-
glowColor:
|
|
9860
|
-
neumorphic:
|
|
9264
|
+
var navEffectsSchema = z22.object({
|
|
9265
|
+
underlineGradient: z22.boolean().default(false),
|
|
9266
|
+
glow: z22.boolean().default(false),
|
|
9267
|
+
glowColor: z22.string().optional(),
|
|
9268
|
+
neumorphic: z22.boolean().default(false)
|
|
9861
9269
|
}).optional();
|
|
9862
|
-
var dropdownStyleSchema =
|
|
9270
|
+
var dropdownStyleSchema = z22.object({
|
|
9863
9271
|
// Container styling
|
|
9864
|
-
background:
|
|
9272
|
+
background: z22.string().default("surface"),
|
|
9865
9273
|
// color token
|
|
9866
|
-
textColor:
|
|
9274
|
+
textColor: z22.string().default("text"),
|
|
9867
9275
|
// color token
|
|
9868
|
-
borderColor:
|
|
9276
|
+
borderColor: z22.string().nullable().default("border"),
|
|
9869
9277
|
// null = no border
|
|
9870
|
-
shadow:
|
|
9871
|
-
borderRadius:
|
|
9278
|
+
shadow: z22.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
9279
|
+
borderRadius: z22.enum(["none", "sm", "md", "lg"]).default("md"),
|
|
9872
9280
|
// Link hover states (explicit control)
|
|
9873
|
-
hoverBackground:
|
|
9281
|
+
hoverBackground: z22.string().nullable().optional(),
|
|
9874
9282
|
// color token, null = transparent
|
|
9875
|
-
hoverTextColor:
|
|
9283
|
+
hoverTextColor: z22.string().nullable().optional(),
|
|
9876
9284
|
// color token, null = inherit
|
|
9877
9285
|
// Typography
|
|
9878
|
-
textTransform:
|
|
9879
|
-
letterSpacing:
|
|
9880
|
-
fontWeight:
|
|
9286
|
+
textTransform: z22.enum(["none", "uppercase", "capitalize"]).default("none"),
|
|
9287
|
+
letterSpacing: z22.enum(["normal", "wide", "wider"]).default("normal"),
|
|
9288
|
+
fontWeight: z22.enum(["regular", "medium", "semibold", "bold"]).optional(),
|
|
9881
9289
|
// optional = inherit from navWeight
|
|
9882
|
-
textSize:
|
|
9290
|
+
textSize: z22.enum(["xs", "sm", "base", "lg"]).optional()
|
|
9883
9291
|
// optional = no override (browser default)
|
|
9884
9292
|
}).optional();
|
|
9885
|
-
var headerCtaGapSchema =
|
|
9886
|
-
var navContainerSchema =
|
|
9887
|
-
type:
|
|
9888
|
-
tint:
|
|
9889
|
-
opacity:
|
|
9293
|
+
var headerCtaGapSchema = z22.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
9294
|
+
var navContainerSchema = z22.object({
|
|
9295
|
+
type: z22.enum(["none", "pill", "glass"]).default("none"),
|
|
9296
|
+
tint: z22.string().nullable().optional(),
|
|
9297
|
+
opacity: z22.number().min(0).max(1).default(0.15)
|
|
9890
9298
|
}).default({ type: "none", tint: null, opacity: 0.15 });
|
|
9891
|
-
var headerBackgroundSchema =
|
|
9892
|
-
type:
|
|
9893
|
-
color:
|
|
9299
|
+
var headerBackgroundSchema = z22.object({
|
|
9300
|
+
type: z22.enum(["color", "gradient", "image"]),
|
|
9301
|
+
color: z22.string().nullable().optional(),
|
|
9894
9302
|
gradient: gradientConfigSchema.nullable().optional(),
|
|
9895
9303
|
image: mediaSchema.nullable().optional(),
|
|
9896
|
-
textColor:
|
|
9304
|
+
textColor: z22.string().nullable().optional()
|
|
9897
9305
|
});
|
|
9898
|
-
var headerSchema =
|
|
9306
|
+
var headerSchema = z22.object({
|
|
9899
9307
|
variant: headerVariant,
|
|
9900
9308
|
positioning: headerPositioning,
|
|
9901
|
-
shrinkOnScroll:
|
|
9309
|
+
shrinkOnScroll: z22.boolean(),
|
|
9902
9310
|
maxWidth: headerMaxWidth,
|
|
9903
9311
|
logoOverride: mediaSchema.nullable().optional(),
|
|
9904
9312
|
background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
|
|
9905
|
-
textColor:
|
|
9313
|
+
textColor: z22.string().nullable().optional(),
|
|
9906
9314
|
// Site title and general header text
|
|
9907
9315
|
navStyle: headerNavStyle,
|
|
9908
|
-
navColor:
|
|
9316
|
+
navColor: z22.string().nullable().optional(),
|
|
9909
9317
|
// Nav links (inherits textColor if not set)
|
|
9910
9318
|
navWeight: navFontWeight.default("medium"),
|
|
9911
9319
|
// New fields for header system enhancement
|
|
@@ -9924,50 +9332,50 @@ var headerSchema = z25.object({
|
|
|
9924
9332
|
// Dropdown menu styling (nav dropdowns and mobile drawer)
|
|
9925
9333
|
dropdownStyle: dropdownStyleSchema
|
|
9926
9334
|
});
|
|
9927
|
-
var footerVariant =
|
|
9928
|
-
var footerMaxWidth =
|
|
9929
|
-
var footerMode =
|
|
9930
|
-
var footerNavLayoutMode =
|
|
9931
|
-
var footerNavLayoutAlign =
|
|
9932
|
-
var footerSpacing =
|
|
9933
|
-
var footerLogoPlacement =
|
|
9934
|
-
var footerLogoSize =
|
|
9935
|
-
var footerLogoMaxHeight =
|
|
9936
|
-
var footerBottomTextLinkStyleSchema =
|
|
9937
|
-
colorToken:
|
|
9938
|
-
hoverColorToken:
|
|
9939
|
-
decorationColorToken:
|
|
9940
|
-
underline:
|
|
9941
|
-
});
|
|
9942
|
-
var footerBottomBarSchema =
|
|
9943
|
-
enabled:
|
|
9944
|
-
fullBleed:
|
|
9335
|
+
var footerVariant = z22.enum(["simple", "columns", "split"]);
|
|
9336
|
+
var footerMaxWidth = z22.enum(["container", "full"]);
|
|
9337
|
+
var footerMode = z22.enum(["default", "blocks", "default+blocks", "none"]);
|
|
9338
|
+
var footerNavLayoutMode = z22.enum(["stack", "inline", "inline-wrap"]);
|
|
9339
|
+
var footerNavLayoutAlign = z22.enum(["start", "center", "end", "space-between"]);
|
|
9340
|
+
var footerSpacing = z22.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
|
|
9341
|
+
var footerLogoPlacement = z22.enum(["left", "right", "above", "below"]);
|
|
9342
|
+
var footerLogoSize = z22.enum(["sm", "md", "lg", "xl"]);
|
|
9343
|
+
var footerLogoMaxHeight = z22.enum(["sm", "md", "lg", "xl"]);
|
|
9344
|
+
var footerBottomTextLinkStyleSchema = z22.object({
|
|
9345
|
+
colorToken: z22.string().optional(),
|
|
9346
|
+
hoverColorToken: z22.string().nullable().optional(),
|
|
9347
|
+
decorationColorToken: z22.string().nullable().optional(),
|
|
9348
|
+
underline: z22.boolean().optional()
|
|
9349
|
+
});
|
|
9350
|
+
var footerBottomBarSchema = z22.object({
|
|
9351
|
+
enabled: z22.boolean().optional(),
|
|
9352
|
+
fullBleed: z22.boolean().optional(),
|
|
9945
9353
|
background: headerBackgroundSchema.optional(),
|
|
9946
|
-
textColor:
|
|
9947
|
-
textAlign:
|
|
9354
|
+
textColor: z22.string().nullable().optional(),
|
|
9355
|
+
textAlign: z22.enum(["left", "center", "right"]).optional(),
|
|
9948
9356
|
paddingY: footerSpacing.optional(),
|
|
9949
9357
|
paddingX: footerSpacing.optional(),
|
|
9950
|
-
borderTop:
|
|
9951
|
-
colorToken:
|
|
9952
|
-
width:
|
|
9358
|
+
borderTop: z22.object({
|
|
9359
|
+
colorToken: z22.string().nullable().optional(),
|
|
9360
|
+
width: z22.enum(["none", "thin", "medium", "thick"]).optional()
|
|
9953
9361
|
}).optional()
|
|
9954
9362
|
});
|
|
9955
|
-
var footerNavLayoutSchema =
|
|
9363
|
+
var footerNavLayoutSchema = z22.object({
|
|
9956
9364
|
layout: footerNavLayoutMode.optional(),
|
|
9957
9365
|
align: footerNavLayoutAlign.optional(),
|
|
9958
9366
|
gapX: footerSpacing.optional(),
|
|
9959
9367
|
gapY: footerSpacing.optional(),
|
|
9960
|
-
columns:
|
|
9368
|
+
columns: z22.number().int().min(1).max(6).optional()
|
|
9961
9369
|
});
|
|
9962
|
-
var footerLogoSchema =
|
|
9963
|
-
showLogo:
|
|
9964
|
-
showLogoText:
|
|
9370
|
+
var footerLogoSchema = z22.object({
|
|
9371
|
+
showLogo: z22.boolean().default(true),
|
|
9372
|
+
showLogoText: z22.boolean().optional(),
|
|
9965
9373
|
placement: footerLogoPlacement.optional(),
|
|
9966
9374
|
size: footerLogoSize.optional(),
|
|
9967
9375
|
maxHeight: footerLogoMaxHeight.optional(),
|
|
9968
|
-
align:
|
|
9376
|
+
align: z22.enum(["start", "center", "end"]).optional()
|
|
9969
9377
|
});
|
|
9970
|
-
var footerSchema =
|
|
9378
|
+
var footerSchema = z22.object({
|
|
9971
9379
|
/**
|
|
9972
9380
|
* SDK-only footer rendering mode.
|
|
9973
9381
|
*
|
|
@@ -9976,11 +9384,11 @@ var footerSchema = z25.object({
|
|
|
9976
9384
|
mode: footerMode.optional(),
|
|
9977
9385
|
variant: footerVariant,
|
|
9978
9386
|
maxWidth: footerMaxWidth,
|
|
9979
|
-
showLogoText:
|
|
9387
|
+
showLogoText: z22.boolean().optional(),
|
|
9980
9388
|
background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
|
|
9981
9389
|
// Footer nav styling (independent from header)
|
|
9982
9390
|
navStyle: headerNavStyle.default("minimal"),
|
|
9983
|
-
navColor:
|
|
9391
|
+
navColor: z22.string().nullable().optional(),
|
|
9984
9392
|
navWeight: navFontWeight.default("medium"),
|
|
9985
9393
|
// Full nav link customization (overrides navStyle if set)
|
|
9986
9394
|
navLinkStyle: navLinkStyleSchema.optional(),
|
|
@@ -9991,15 +9399,15 @@ var footerSchema = z25.object({
|
|
|
9991
9399
|
logo: footerLogoSchema.optional(),
|
|
9992
9400
|
bottomBar: footerBottomBarSchema.optional()
|
|
9993
9401
|
});
|
|
9994
|
-
var containerPaddingPresetSchema =
|
|
9995
|
-
var layoutSchema =
|
|
9996
|
-
containerPadding:
|
|
9402
|
+
var containerPaddingPresetSchema = z22.enum(["tight", "compact", "default", "relaxed"]);
|
|
9403
|
+
var layoutSchema = z22.object({
|
|
9404
|
+
containerPadding: z22.object({
|
|
9997
9405
|
mobile: containerPaddingPresetSchema.optional(),
|
|
9998
9406
|
tablet: containerPaddingPresetSchema.optional(),
|
|
9999
9407
|
desktop: containerPaddingPresetSchema.optional()
|
|
10000
9408
|
}).optional()
|
|
10001
9409
|
}).optional();
|
|
10002
|
-
var heroTypographySizeSchema =
|
|
9410
|
+
var heroTypographySizeSchema = z22.enum([
|
|
10003
9411
|
"sm",
|
|
10004
9412
|
"base",
|
|
10005
9413
|
"lg",
|
|
@@ -10010,14 +9418,14 @@ var heroTypographySizeSchema = z25.enum([
|
|
|
10010
9418
|
"5xl",
|
|
10011
9419
|
"6xl"
|
|
10012
9420
|
]);
|
|
10013
|
-
var heroTypographyLineHeightSchema =
|
|
10014
|
-
var heroResponsiveTypographySchema =
|
|
9421
|
+
var heroTypographyLineHeightSchema = z22.enum(["tight", "snug", "normal", "relaxed"]);
|
|
9422
|
+
var heroResponsiveTypographySchema = z22.object({
|
|
10015
9423
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
10016
9424
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
10017
9425
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
10018
9426
|
subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
|
|
10019
9427
|
});
|
|
10020
|
-
var heroTypographySchema =
|
|
9428
|
+
var heroTypographySchema = z22.object({
|
|
10021
9429
|
headlineSize: heroTypographySizeSchema.optional(),
|
|
10022
9430
|
headlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
10023
9431
|
subheadlineSize: heroTypographySizeSchema.optional(),
|
|
@@ -10026,24 +9434,24 @@ var heroTypographySchema = z25.object({
|
|
|
10026
9434
|
microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
10027
9435
|
microSubheadlineSize: heroTypographySizeSchema.optional(),
|
|
10028
9436
|
microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
|
|
10029
|
-
responsive:
|
|
9437
|
+
responsive: z22.object({
|
|
10030
9438
|
tablet: heroResponsiveTypographySchema.optional(),
|
|
10031
9439
|
mobile: heroResponsiveTypographySchema.optional()
|
|
10032
9440
|
}).optional()
|
|
10033
9441
|
});
|
|
10034
|
-
var heroSchema =
|
|
9442
|
+
var heroSchema = z22.object({
|
|
10035
9443
|
typography: heroTypographySchema.optional()
|
|
10036
9444
|
}).optional();
|
|
10037
|
-
var gradientsSchema =
|
|
10038
|
-
button:
|
|
10039
|
-
hero:
|
|
10040
|
-
background:
|
|
10041
|
-
});
|
|
10042
|
-
var themeSchema =
|
|
10043
|
-
name:
|
|
10044
|
-
description:
|
|
10045
|
-
rationale:
|
|
10046
|
-
siteStyleId:
|
|
9445
|
+
var gradientsSchema = z22.object({
|
|
9446
|
+
button: z22.string().min(1).nullable().optional(),
|
|
9447
|
+
hero: z22.string().min(1).nullable().optional(),
|
|
9448
|
+
background: z22.string().min(1).nullable().optional()
|
|
9449
|
+
});
|
|
9450
|
+
var themeSchema = z22.object({
|
|
9451
|
+
name: z22.string().min(1).max(30),
|
|
9452
|
+
description: z22.string().min(1).max(400),
|
|
9453
|
+
rationale: z22.string().min(1).max(400),
|
|
9454
|
+
siteStyleId: z22.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
|
|
10047
9455
|
axes: axesSchema,
|
|
10048
9456
|
palette: paletteSchema,
|
|
10049
9457
|
typography: typographySchema,
|
|
@@ -10070,16 +9478,16 @@ var themeSchema = z25.object({
|
|
|
10070
9478
|
// Block-specific customization (Tier 3)
|
|
10071
9479
|
// blockCustomVars: Per-block CSS variable overrides as bare values
|
|
10072
9480
|
// Example: { "event-registration": { "--step-color": "#6d28d9" } }
|
|
10073
|
-
blockCustomVars:
|
|
10074
|
-
|
|
9481
|
+
blockCustomVars: z22.record(
|
|
9482
|
+
z22.string(),
|
|
10075
9483
|
// block kind (matches data-block attribute)
|
|
10076
|
-
|
|
9484
|
+
z22.record(z22.string(), z22.string())
|
|
10077
9485
|
// { '--var-name': 'value' }
|
|
10078
9486
|
).optional(),
|
|
10079
9487
|
// Structured block-kind theme overrides (v1: typography prose-link style only)
|
|
10080
9488
|
// Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
|
|
10081
|
-
blockOverrides:
|
|
10082
|
-
|
|
9489
|
+
blockOverrides: z22.record(
|
|
9490
|
+
z22.string(),
|
|
10083
9491
|
blockThemeOverrideSchema
|
|
10084
9492
|
).optional(),
|
|
10085
9493
|
// Structured custom CSS rules
|
|
@@ -10115,22 +9523,21 @@ var themeSchema = z25.object({
|
|
|
10115
9523
|
* }
|
|
10116
9524
|
* ```
|
|
10117
9525
|
*/
|
|
10118
|
-
styleGroups:
|
|
9526
|
+
styleGroups: z22.record(z22.string(), z22.array(z22.string())).optional()
|
|
10119
9527
|
});
|
|
10120
|
-
var themesTurnSchema =
|
|
10121
|
-
message:
|
|
10122
|
-
themes:
|
|
9528
|
+
var themesTurnSchema = z22.object({
|
|
9529
|
+
message: z22.string().min(1),
|
|
9530
|
+
themes: z22.array(themeSchema).length(3)
|
|
10123
9531
|
});
|
|
10124
9532
|
|
|
10125
9533
|
// ../theme-core/src/palette/variants/types.ts
|
|
10126
|
-
import { z as z26 } from "zod";
|
|
10127
9534
|
function asPaletteVariantId(value) {
|
|
10128
9535
|
if (value.length === 0) {
|
|
10129
9536
|
throw new Error("PaletteVariantId must be a non-empty string");
|
|
10130
9537
|
}
|
|
10131
9538
|
return value;
|
|
10132
9539
|
}
|
|
10133
|
-
var paletteVariantIdSchema =
|
|
9540
|
+
var paletteVariantIdSchema = z23.string().min(1).transform((value) => asPaletteVariantId(value));
|
|
10134
9541
|
var PALETTE_TOKEN_NAMES = [
|
|
10135
9542
|
"primary",
|
|
10136
9543
|
"primaryForeground",
|
|
@@ -10146,19 +9553,19 @@ var PALETTE_TOKEN_NAMES = [
|
|
|
10146
9553
|
"text",
|
|
10147
9554
|
"border"
|
|
10148
9555
|
];
|
|
10149
|
-
var paletteTokenNameSchema =
|
|
9556
|
+
var paletteTokenNameSchema = z23.enum(PALETTE_TOKEN_NAMES);
|
|
10150
9557
|
var HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
|
|
10151
|
-
var hexColorSchema =
|
|
9558
|
+
var hexColorSchema = z23.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
|
|
10152
9559
|
var variantPaletteColorSchema = paletteColorSchema.extend({
|
|
10153
9560
|
name: paletteTokenNameSchema
|
|
10154
9561
|
});
|
|
10155
|
-
var paletteVariantSchema =
|
|
9562
|
+
var paletteVariantSchema = z23.object({
|
|
10156
9563
|
id: paletteVariantIdSchema,
|
|
10157
|
-
name:
|
|
10158
|
-
description:
|
|
9564
|
+
name: z23.string().min(1),
|
|
9565
|
+
description: z23.string().min(1),
|
|
10159
9566
|
tags: styleTagsSchema,
|
|
10160
|
-
mode:
|
|
10161
|
-
colors:
|
|
9567
|
+
mode: z23.enum(["light", "dark"]),
|
|
9568
|
+
colors: z23.array(variantPaletteColorSchema).min(1)
|
|
10162
9569
|
});
|
|
10163
9570
|
function definePaletteVariant(input) {
|
|
10164
9571
|
return {
|
|
@@ -10170,7 +9577,7 @@ function definePaletteVariant(input) {
|
|
|
10170
9577
|
colors: input.colors
|
|
10171
9578
|
};
|
|
10172
9579
|
}
|
|
10173
|
-
var paletteOverridesSchema =
|
|
9580
|
+
var paletteOverridesSchema = z23.object({
|
|
10174
9581
|
primary: hexColorSchema.optional(),
|
|
10175
9582
|
primaryForeground: hexColorSchema.optional(),
|
|
10176
9583
|
secondary: hexColorSchema.optional(),
|
|
@@ -10458,28 +9865,679 @@ var warmNeutralForest = definePaletteVariant({
|
|
|
10458
9865
|
]
|
|
10459
9866
|
});
|
|
10460
9867
|
|
|
10461
|
-
// ../theme-core/src/palette/variants/index.ts
|
|
10462
|
-
var paletteVariants = [
|
|
10463
|
-
// Brand-led family
|
|
10464
|
-
brandLedCool,
|
|
10465
|
-
brandLedWarm,
|
|
10466
|
-
brandLedJewel,
|
|
10467
|
-
// Warm-neutral family
|
|
10468
|
-
warmNeutralClay,
|
|
10469
|
-
warmNeutralCream,
|
|
10470
|
-
warmNeutralForest,
|
|
10471
|
-
// High-contrast family
|
|
10472
|
-
highContrastInk,
|
|
10473
|
-
highContrastCharcoal,
|
|
10474
|
-
highContrastMonochrome,
|
|
10475
|
-
// Soft-natural family
|
|
10476
|
-
softNaturalSage,
|
|
10477
|
-
softNaturalStone,
|
|
10478
|
-
softNaturalWatercolor
|
|
9868
|
+
// ../theme-core/src/palette/variants/index.ts
|
|
9869
|
+
var paletteVariants = [
|
|
9870
|
+
// Brand-led family
|
|
9871
|
+
brandLedCool,
|
|
9872
|
+
brandLedWarm,
|
|
9873
|
+
brandLedJewel,
|
|
9874
|
+
// Warm-neutral family
|
|
9875
|
+
warmNeutralClay,
|
|
9876
|
+
warmNeutralCream,
|
|
9877
|
+
warmNeutralForest,
|
|
9878
|
+
// High-contrast family
|
|
9879
|
+
highContrastInk,
|
|
9880
|
+
highContrastCharcoal,
|
|
9881
|
+
highContrastMonochrome,
|
|
9882
|
+
// Soft-natural family
|
|
9883
|
+
softNaturalSage,
|
|
9884
|
+
softNaturalStone,
|
|
9885
|
+
softNaturalWatercolor
|
|
9886
|
+
];
|
|
9887
|
+
var paletteVariantsById = new Map(
|
|
9888
|
+
paletteVariants.map((v) => [v.id, v])
|
|
9889
|
+
);
|
|
9890
|
+
|
|
9891
|
+
// ../theme-core/src/site-styles/sourceCatalogs.ts
|
|
9892
|
+
var generatedContentFrames = [
|
|
9893
|
+
plainFrame,
|
|
9894
|
+
panelFrame("inset"),
|
|
9895
|
+
panelFrame("raised"),
|
|
9896
|
+
flushPanelFrame({ bleed: "start" })
|
|
9897
|
+
];
|
|
9898
|
+
var userContentFrames = [
|
|
9899
|
+
...generatedContentFrames,
|
|
9900
|
+
panelFrame("editorial"),
|
|
9901
|
+
flushPanelFrame({ bleed: "end" }),
|
|
9902
|
+
flushPanelFrame({ bleed: "both" })
|
|
9903
|
+
];
|
|
9904
|
+
var generatedDesignOptionCatalog = {
|
|
9905
|
+
source: "generated",
|
|
9906
|
+
sectionSurfaces: ["base", "muted-band", "accent-band", "hero-image"],
|
|
9907
|
+
contentFrames: generatedContentFrames,
|
|
9908
|
+
itemSurfaces: ["none", "default", "flat", "outlined", "raised"],
|
|
9909
|
+
transitions: ["none", "soft-fade-short", "soft-fade-long"],
|
|
9910
|
+
emphases: ["low", "medium", "high"],
|
|
9911
|
+
detachedCustom: false
|
|
9912
|
+
};
|
|
9913
|
+
var userDesignOptionCatalog = {
|
|
9914
|
+
source: "user",
|
|
9915
|
+
sectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
9916
|
+
contentFrames: userContentFrames,
|
|
9917
|
+
itemSurfaces: [
|
|
9918
|
+
...generatedDesignOptionCatalog.itemSurfaces,
|
|
9919
|
+
"inset",
|
|
9920
|
+
"editorial"
|
|
9921
|
+
],
|
|
9922
|
+
transitions: [
|
|
9923
|
+
...generatedDesignOptionCatalog.transitions,
|
|
9924
|
+
"wave-edge",
|
|
9925
|
+
"angle-edge"
|
|
9926
|
+
],
|
|
9927
|
+
emphases: generatedDesignOptionCatalog.emphases,
|
|
9928
|
+
detachedCustom: false
|
|
9929
|
+
};
|
|
9930
|
+
var advancedDesignOptionCatalog = {
|
|
9931
|
+
source: "advanced",
|
|
9932
|
+
sectionSurfaces: userDesignOptionCatalog.sectionSurfaces,
|
|
9933
|
+
contentFrames: userDesignOptionCatalog.contentFrames,
|
|
9934
|
+
itemSurfaces: userDesignOptionCatalog.itemSurfaces,
|
|
9935
|
+
transitions: userDesignOptionCatalog.transitions,
|
|
9936
|
+
emphases: userDesignOptionCatalog.emphases,
|
|
9937
|
+
detachedCustom: true
|
|
9938
|
+
};
|
|
9939
|
+
|
|
9940
|
+
// ../theme-core/src/site-styles/curatedSiteStyles.ts
|
|
9941
|
+
var curatedSiteStyleIdValues = [
|
|
9942
|
+
"site-style:calm-studio",
|
|
9943
|
+
"site-style:clear-professional",
|
|
9944
|
+
"site-style:warm-editorial",
|
|
9945
|
+
"site-style:bright-community",
|
|
9946
|
+
"site-style:quiet-luxury",
|
|
9947
|
+
"site-style:practical-services",
|
|
9948
|
+
"site-style:modern-wellness",
|
|
9949
|
+
"site-style:bold-launch"
|
|
9950
|
+
];
|
|
9951
|
+
var quietBudget = {
|
|
9952
|
+
accentDensity: "low",
|
|
9953
|
+
panelDensity: "medium",
|
|
9954
|
+
transitionMix: "quiet",
|
|
9955
|
+
primaryCtaLimit: 2,
|
|
9956
|
+
mediaDensity: "medium",
|
|
9957
|
+
decorativeRepetition: "low"
|
|
9958
|
+
};
|
|
9959
|
+
var balancedBudget = {
|
|
9960
|
+
accentDensity: "medium",
|
|
9961
|
+
panelDensity: "medium",
|
|
9962
|
+
transitionMix: "balanced",
|
|
9963
|
+
primaryCtaLimit: 3,
|
|
9964
|
+
mediaDensity: "medium",
|
|
9965
|
+
decorativeRepetition: "medium"
|
|
9966
|
+
};
|
|
9967
|
+
var expressiveBudget = {
|
|
9968
|
+
accentDensity: "high",
|
|
9969
|
+
panelDensity: "high",
|
|
9970
|
+
transitionMix: "expressive",
|
|
9971
|
+
primaryCtaLimit: 3,
|
|
9972
|
+
mediaDensity: "high",
|
|
9973
|
+
decorativeRepetition: "medium"
|
|
9974
|
+
};
|
|
9975
|
+
function uniqueContentFrameKinds() {
|
|
9976
|
+
const kinds = [...new Set(
|
|
9977
|
+
generatedDesignOptionCatalog.contentFrames.map((frame) => frame.kind)
|
|
9978
|
+
)];
|
|
9979
|
+
const firstKind = kinds[0];
|
|
9980
|
+
if (!firstKind) {
|
|
9981
|
+
throw new Error("Expected generated design option catalog to expose at least one content frame kind.");
|
|
9982
|
+
}
|
|
9983
|
+
return [firstKind, ...kinds.slice(1)];
|
|
9984
|
+
}
|
|
9985
|
+
var generatedContentFrameKinds = uniqueContentFrameKinds();
|
|
9986
|
+
function defineCuratedSiteStyle(input) {
|
|
9987
|
+
return {
|
|
9988
|
+
id: asSiteStyleId(input.id),
|
|
9989
|
+
name: input.name,
|
|
9990
|
+
description: input.description,
|
|
9991
|
+
generationBrief: input.generationBrief,
|
|
9992
|
+
selectionKeywords: input.selectionKeywords ?? [],
|
|
9993
|
+
template: {
|
|
9994
|
+
id: asDesignSystemTemplateId(`template:${input.id.replace("site-style:", "")}`),
|
|
9995
|
+
name: input.name,
|
|
9996
|
+
version: 1,
|
|
9997
|
+
tokenRecipes: input.tokenRecipes,
|
|
9998
|
+
compositionBudget: input.compositionBudget,
|
|
9999
|
+
supportedSectionSurfaces: generatedDesignOptionCatalog.sectionSurfaces,
|
|
10000
|
+
supportedContentFrames: generatedContentFrameKinds,
|
|
10001
|
+
supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
|
|
10002
|
+
supportedTransitions: generatedDesignOptionCatalog.transitions
|
|
10003
|
+
},
|
|
10004
|
+
buttonPersonalityChoices: input.buttonPersonalityChoices,
|
|
10005
|
+
paletteVariantChoices: input.paletteVariantChoices
|
|
10006
|
+
};
|
|
10007
|
+
}
|
|
10008
|
+
function buttonChoice(id, note) {
|
|
10009
|
+
return note ? { id: asButtonPersonalityId(id), note } : { id: asButtonPersonalityId(id) };
|
|
10010
|
+
}
|
|
10011
|
+
function paletteChoice(id, note) {
|
|
10012
|
+
return note ? { id: asPaletteVariantId(id), note } : { id: asPaletteVariantId(id) };
|
|
10013
|
+
}
|
|
10014
|
+
var curatedSiteStyles = [
|
|
10015
|
+
defineCuratedSiteStyle({
|
|
10016
|
+
id: "site-style:calm-studio",
|
|
10017
|
+
name: "Calm Studio",
|
|
10018
|
+
description: "Soft, measured, and spacious for intimate appointment or class businesses.",
|
|
10019
|
+
generationBrief: "Use calm pacing, concise copy, generous breathing room, and natural imagery. Keep calls to action steady rather than urgent.",
|
|
10020
|
+
tokenRecipes: {
|
|
10021
|
+
palette: "soft-natural",
|
|
10022
|
+
contrast: "standard",
|
|
10023
|
+
radius: "soft",
|
|
10024
|
+
shadow: "subtle",
|
|
10025
|
+
typography: "friendly-sans",
|
|
10026
|
+
spacing: "airy",
|
|
10027
|
+
motion: "subtle"
|
|
10028
|
+
},
|
|
10029
|
+
compositionBudget: quietBudget,
|
|
10030
|
+
buttonPersonalityChoices: [
|
|
10031
|
+
buttonChoice("soft-pill"),
|
|
10032
|
+
buttonChoice("pebble"),
|
|
10033
|
+
buttonChoice("editorial-link"),
|
|
10034
|
+
buttonChoice("brushed-wash")
|
|
10035
|
+
],
|
|
10036
|
+
paletteVariantChoices: [
|
|
10037
|
+
paletteChoice("soft-natural-sage"),
|
|
10038
|
+
paletteChoice("soft-natural-stone"),
|
|
10039
|
+
paletteChoice("warm-neutral-clay"),
|
|
10040
|
+
paletteChoice("soft-natural-watercolor")
|
|
10041
|
+
]
|
|
10042
|
+
}),
|
|
10043
|
+
defineCuratedSiteStyle({
|
|
10044
|
+
id: "site-style:clear-professional",
|
|
10045
|
+
name: "Clear Professional",
|
|
10046
|
+
description: "Crisp, trustworthy, and direct for local services and consultancies.",
|
|
10047
|
+
generationBrief: "Prioritize clarity, proof, service detail, and easy next steps. Keep visuals polished and specific, with restrained decorative treatment.",
|
|
10048
|
+
tokenRecipes: {
|
|
10049
|
+
palette: "brand-led",
|
|
10050
|
+
contrast: "strong",
|
|
10051
|
+
radius: "soft",
|
|
10052
|
+
shadow: "subtle",
|
|
10053
|
+
typography: "clean-sans",
|
|
10054
|
+
spacing: "regular",
|
|
10055
|
+
motion: "subtle"
|
|
10056
|
+
},
|
|
10057
|
+
compositionBudget: balancedBudget,
|
|
10058
|
+
buttonPersonalityChoices: [
|
|
10059
|
+
buttonChoice("confident-chip"),
|
|
10060
|
+
buttonChoice("soft-pill"),
|
|
10061
|
+
buttonChoice("editorial-link")
|
|
10062
|
+
],
|
|
10063
|
+
paletteVariantChoices: [
|
|
10064
|
+
paletteChoice("brand-led-cool"),
|
|
10065
|
+
paletteChoice("high-contrast-ink"),
|
|
10066
|
+
paletteChoice("brand-led-jewel")
|
|
10067
|
+
]
|
|
10068
|
+
}),
|
|
10069
|
+
defineCuratedSiteStyle({
|
|
10070
|
+
id: "site-style:warm-editorial",
|
|
10071
|
+
name: "Warm Editorial",
|
|
10072
|
+
description: "Story-led and textured for educators, makers, venues, and retreats.",
|
|
10073
|
+
generationBrief: "Let the copy feel thoughtful and grounded. Favor narrative sections, supporting media, and a small number of editorial panels.",
|
|
10074
|
+
tokenRecipes: {
|
|
10075
|
+
palette: "warm-neutral",
|
|
10076
|
+
contrast: "standard",
|
|
10077
|
+
radius: "square",
|
|
10078
|
+
shadow: "none",
|
|
10079
|
+
typography: "serif-editorial",
|
|
10080
|
+
spacing: "airy",
|
|
10081
|
+
motion: "subtle"
|
|
10082
|
+
},
|
|
10083
|
+
compositionBudget: balancedBudget,
|
|
10084
|
+
buttonPersonalityChoices: [
|
|
10085
|
+
buttonChoice("editorial-link"),
|
|
10086
|
+
buttonChoice("soft-pill"),
|
|
10087
|
+
buttonChoice("brushed-wash")
|
|
10088
|
+
],
|
|
10089
|
+
paletteVariantChoices: [
|
|
10090
|
+
paletteChoice("warm-neutral-cream"),
|
|
10091
|
+
paletteChoice("warm-neutral-clay"),
|
|
10092
|
+
paletteChoice("warm-neutral-forest"),
|
|
10093
|
+
paletteChoice("soft-natural-stone")
|
|
10094
|
+
]
|
|
10095
|
+
}),
|
|
10096
|
+
defineCuratedSiteStyle({
|
|
10097
|
+
id: "site-style:bright-community",
|
|
10098
|
+
name: "Bright Community",
|
|
10099
|
+
description: "Friendly, welcoming, and active for groups, classes, and neighborhood offers.",
|
|
10100
|
+
generationBrief: "Use welcoming language, clear event or booking routes, and optimistic imagery. Let accents appear, but avoid noisy decoration.",
|
|
10101
|
+
tokenRecipes: {
|
|
10102
|
+
palette: "brand-led",
|
|
10103
|
+
contrast: "standard",
|
|
10104
|
+
radius: "rounded",
|
|
10105
|
+
shadow: "subtle",
|
|
10106
|
+
typography: "friendly-sans",
|
|
10107
|
+
spacing: "regular",
|
|
10108
|
+
motion: "expressive"
|
|
10109
|
+
},
|
|
10110
|
+
compositionBudget: balancedBudget,
|
|
10111
|
+
buttonPersonalityChoices: [
|
|
10112
|
+
buttonChoice("pebble"),
|
|
10113
|
+
buttonChoice("brushed-wash"),
|
|
10114
|
+
buttonChoice("confident-chip")
|
|
10115
|
+
],
|
|
10116
|
+
paletteVariantChoices: [
|
|
10117
|
+
paletteChoice("brand-led-warm"),
|
|
10118
|
+
paletteChoice("brand-led-jewel"),
|
|
10119
|
+
paletteChoice("soft-natural-watercolor")
|
|
10120
|
+
]
|
|
10121
|
+
}),
|
|
10122
|
+
defineCuratedSiteStyle({
|
|
10123
|
+
id: "site-style:quiet-luxury",
|
|
10124
|
+
name: "Quiet Luxury",
|
|
10125
|
+
description: "Minimal, confident, and refined for premium experiences and private services.",
|
|
10126
|
+
generationBrief: "Use fewer claims, more specificity, and restrained sensory detail. Favor elegant media and low repetition over dense panels.",
|
|
10127
|
+
selectionKeywords: [
|
|
10128
|
+
"luxury",
|
|
10129
|
+
"premium",
|
|
10130
|
+
"boutique",
|
|
10131
|
+
"bespoke",
|
|
10132
|
+
"exclusive"
|
|
10133
|
+
],
|
|
10134
|
+
tokenRecipes: {
|
|
10135
|
+
palette: "high-contrast",
|
|
10136
|
+
contrast: "strong",
|
|
10137
|
+
radius: "square",
|
|
10138
|
+
shadow: "none",
|
|
10139
|
+
typography: "classic-serif",
|
|
10140
|
+
spacing: "airy",
|
|
10141
|
+
motion: "none"
|
|
10142
|
+
},
|
|
10143
|
+
compositionBudget: quietBudget,
|
|
10144
|
+
buttonPersonalityChoices: [
|
|
10145
|
+
buttonChoice("editorial-link"),
|
|
10146
|
+
buttonChoice("confident-chip"),
|
|
10147
|
+
buttonChoice("soft-pill")
|
|
10148
|
+
],
|
|
10149
|
+
paletteVariantChoices: [
|
|
10150
|
+
paletteChoice("high-contrast-charcoal"),
|
|
10151
|
+
paletteChoice("high-contrast-ink"),
|
|
10152
|
+
paletteChoice("warm-neutral-cream")
|
|
10153
|
+
]
|
|
10154
|
+
}),
|
|
10155
|
+
defineCuratedSiteStyle({
|
|
10156
|
+
id: "site-style:practical-services",
|
|
10157
|
+
name: "Practical Services",
|
|
10158
|
+
description: "Efficient, plainspoken, and conversion-focused for trades and everyday services.",
|
|
10159
|
+
generationBrief: "Make services, location, trust signals, and contact paths obvious. Keep copy brief and avoid ornate visual treatments.",
|
|
10160
|
+
selectionKeywords: [
|
|
10161
|
+
"repair",
|
|
10162
|
+
"plumb",
|
|
10163
|
+
"electric",
|
|
10164
|
+
"cleaning",
|
|
10165
|
+
"landscap",
|
|
10166
|
+
"contractor"
|
|
10167
|
+
],
|
|
10168
|
+
tokenRecipes: {
|
|
10169
|
+
palette: "brand-led",
|
|
10170
|
+
contrast: "maximum",
|
|
10171
|
+
radius: "soft",
|
|
10172
|
+
shadow: "subtle",
|
|
10173
|
+
typography: "clean-sans",
|
|
10174
|
+
spacing: "compact",
|
|
10175
|
+
motion: "none"
|
|
10176
|
+
},
|
|
10177
|
+
compositionBudget: quietBudget,
|
|
10178
|
+
buttonPersonalityChoices: [
|
|
10179
|
+
buttonChoice("confident-chip"),
|
|
10180
|
+
buttonChoice("pebble"),
|
|
10181
|
+
buttonChoice("ink-stamp")
|
|
10182
|
+
],
|
|
10183
|
+
paletteVariantChoices: [
|
|
10184
|
+
paletteChoice("brand-led-cool"),
|
|
10185
|
+
paletteChoice("high-contrast-ink"),
|
|
10186
|
+
paletteChoice("brand-led-warm")
|
|
10187
|
+
]
|
|
10188
|
+
}),
|
|
10189
|
+
defineCuratedSiteStyle({
|
|
10190
|
+
id: "site-style:modern-wellness",
|
|
10191
|
+
name: "Modern Wellness",
|
|
10192
|
+
description: "Natural, current, and reassuring for practitioners, studios, and wellbeing offers.",
|
|
10193
|
+
generationBrief: "Keep the tone warm and practical. Use gentle section variation, natural materials, and inclusive copy without making medical claims.",
|
|
10194
|
+
tokenRecipes: {
|
|
10195
|
+
palette: "soft-natural",
|
|
10196
|
+
contrast: "standard",
|
|
10197
|
+
radius: "rounded",
|
|
10198
|
+
shadow: "subtle",
|
|
10199
|
+
typography: "clean-sans",
|
|
10200
|
+
spacing: "airy",
|
|
10201
|
+
motion: "subtle"
|
|
10202
|
+
},
|
|
10203
|
+
compositionBudget: balancedBudget,
|
|
10204
|
+
buttonPersonalityChoices: [
|
|
10205
|
+
buttonChoice("soft-pill"),
|
|
10206
|
+
buttonChoice("pebble"),
|
|
10207
|
+
buttonChoice("confident-chip")
|
|
10208
|
+
],
|
|
10209
|
+
paletteVariantChoices: [
|
|
10210
|
+
paletteChoice("soft-natural-sage"),
|
|
10211
|
+
paletteChoice("soft-natural-stone"),
|
|
10212
|
+
paletteChoice("warm-neutral-forest")
|
|
10213
|
+
]
|
|
10214
|
+
}),
|
|
10215
|
+
defineCuratedSiteStyle({
|
|
10216
|
+
id: "site-style:bold-launch",
|
|
10217
|
+
name: "Bold Launch",
|
|
10218
|
+
description: "High-energy and punchy for launches, campaigns, and creative offers.",
|
|
10219
|
+
generationBrief: "Use crisp positioning, bold hero structure, strong calls to action, and confident visual rhythm. Keep it precise, not shouty.",
|
|
10220
|
+
selectionKeywords: [
|
|
10221
|
+
"launch",
|
|
10222
|
+
"campaign",
|
|
10223
|
+
"preorder",
|
|
10224
|
+
"pre-order",
|
|
10225
|
+
"waitlist",
|
|
10226
|
+
"drop"
|
|
10227
|
+
],
|
|
10228
|
+
tokenRecipes: {
|
|
10229
|
+
palette: "high-contrast",
|
|
10230
|
+
contrast: "maximum",
|
|
10231
|
+
radius: "pill",
|
|
10232
|
+
shadow: "layered",
|
|
10233
|
+
typography: "clean-sans",
|
|
10234
|
+
spacing: "regular",
|
|
10235
|
+
motion: "expressive"
|
|
10236
|
+
},
|
|
10237
|
+
compositionBudget: expressiveBudget,
|
|
10238
|
+
buttonPersonalityChoices: [
|
|
10239
|
+
buttonChoice("ink-stamp"),
|
|
10240
|
+
buttonChoice("confident-chip"),
|
|
10241
|
+
buttonChoice("brushed-wash"),
|
|
10242
|
+
buttonChoice("pebble")
|
|
10243
|
+
],
|
|
10244
|
+
paletteVariantChoices: [
|
|
10245
|
+
paletteChoice("high-contrast-monochrome"),
|
|
10246
|
+
paletteChoice("high-contrast-ink"),
|
|
10247
|
+
paletteChoice("brand-led-jewel"),
|
|
10248
|
+
paletteChoice("brand-led-warm")
|
|
10249
|
+
]
|
|
10250
|
+
})
|
|
10251
|
+
];
|
|
10252
|
+
var curatedSiteStylesById = new Map(
|
|
10253
|
+
curatedSiteStyles.map((style) => [style.id, style])
|
|
10254
|
+
);
|
|
10255
|
+
|
|
10256
|
+
// ../theme-core/src/site-styles/designState.ts
|
|
10257
|
+
import { z as z24 } from "zod";
|
|
10258
|
+
|
|
10259
|
+
// ../theme-core/src/site-styles/rawStyleFields.ts
|
|
10260
|
+
var themeV2RuntimeStyleFieldNames = [
|
|
10261
|
+
"_frameStyles",
|
|
10262
|
+
"_sectionStyles",
|
|
10263
|
+
"_containerStyles",
|
|
10264
|
+
"_cardStyles",
|
|
10265
|
+
// styleGroup is legacy runtime transition wiring rather than a nested
|
|
10266
|
+
// override object, but normal editors should still never see it directly.
|
|
10267
|
+
"styleGroup"
|
|
10479
10268
|
];
|
|
10480
|
-
var
|
|
10481
|
-
|
|
10269
|
+
var themeV2BlockSpecificRawStyleFieldNames = [
|
|
10270
|
+
"_contentCardStyles",
|
|
10271
|
+
"_textCardStyles"
|
|
10272
|
+
];
|
|
10273
|
+
var themeV2NormalEditorRawStyleFieldNames = [
|
|
10274
|
+
...themeV2RuntimeStyleFieldNames,
|
|
10275
|
+
...themeV2BlockSpecificRawStyleFieldNames
|
|
10276
|
+
];
|
|
10277
|
+
var themeV2NormalEditorRawStyleFieldNameSet = new Set(
|
|
10278
|
+
themeV2NormalEditorRawStyleFieldNames
|
|
10279
|
+
);
|
|
10280
|
+
|
|
10281
|
+
// ../theme-core/src/site-styles/designState.ts
|
|
10282
|
+
var themeV2DesignStateSchemaVersion = 1;
|
|
10283
|
+
var designResolutionPolicySchema = z24.enum(["generated", "user", "admin", "sdk"]);
|
|
10284
|
+
var runtimeStyleFieldNameSchema = z24.enum(themeV2RuntimeStyleFieldNames);
|
|
10285
|
+
var nonEmptyRuntimeStyleFieldNamesSchema = z24.array(runtimeStyleFieldNameSchema).min(1).transform((fields3) => [
|
|
10286
|
+
fields3[0],
|
|
10287
|
+
...fields3.slice(1)
|
|
10288
|
+
]);
|
|
10289
|
+
var heroLegibilityStrategySchema = z24.enum([
|
|
10290
|
+
"none",
|
|
10291
|
+
"scrim-gradient",
|
|
10292
|
+
"solid-panel"
|
|
10293
|
+
]);
|
|
10294
|
+
function uniqueNonEmpty(values) {
|
|
10295
|
+
const uniqueValues = [...new Set(values)];
|
|
10296
|
+
const firstValue = uniqueValues[0];
|
|
10297
|
+
if (!firstValue) {
|
|
10298
|
+
throw new Error("Expected at least one Theme V2 design state option.");
|
|
10299
|
+
}
|
|
10300
|
+
return [firstValue, ...uniqueValues.slice(1)];
|
|
10301
|
+
}
|
|
10302
|
+
var userPanelTreatments = uniqueNonEmpty(
|
|
10303
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
10304
|
+
);
|
|
10305
|
+
var userFlushTreatments = uniqueNonEmpty(
|
|
10306
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
10307
|
+
);
|
|
10308
|
+
var userFlushBleeds = uniqueNonEmpty(
|
|
10309
|
+
userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
10310
|
+
);
|
|
10311
|
+
var contentFrameIntentSchema = z24.discriminatedUnion("kind", [
|
|
10312
|
+
z24.object({ kind: z24.literal("plain") }).strict(),
|
|
10313
|
+
z24.object({
|
|
10314
|
+
kind: z24.literal("panel"),
|
|
10315
|
+
treatment: z24.enum(userPanelTreatments)
|
|
10316
|
+
}).strict(),
|
|
10317
|
+
z24.object({
|
|
10318
|
+
kind: z24.literal("flush-panel"),
|
|
10319
|
+
treatment: z24.enum(userFlushTreatments),
|
|
10320
|
+
bleed: z24.enum(userFlushBleeds)
|
|
10321
|
+
}).strict()
|
|
10322
|
+
]);
|
|
10323
|
+
var blockDesignPlanSchema = z24.object({
|
|
10324
|
+
blockId: z24.string().min(1).transform(asDesignBlockId),
|
|
10325
|
+
blockKind: z24.string().min(1),
|
|
10326
|
+
purpose: z24.string().min(1),
|
|
10327
|
+
sectionSurface: z24.enum(userDesignOptionCatalog.sectionSurfaces),
|
|
10328
|
+
contentFrame: contentFrameIntentSchema,
|
|
10329
|
+
itemSurface: z24.enum(userDesignOptionCatalog.itemSurfaces),
|
|
10330
|
+
transitionAfter: z24.enum(userDesignOptionCatalog.transitions),
|
|
10331
|
+
emphasis: z24.enum(userDesignOptionCatalog.emphases),
|
|
10332
|
+
heroLegibility: heroLegibilityStrategySchema.optional()
|
|
10333
|
+
}).strict();
|
|
10334
|
+
var styleAuthoritySchema = z24.discriminatedUnion("kind", [
|
|
10335
|
+
z24.object({
|
|
10336
|
+
kind: z24.literal("theme-v2"),
|
|
10337
|
+
source: designResolutionPolicySchema,
|
|
10338
|
+
siteStyleId: z24.string().min(1).transform(asSiteStyleId),
|
|
10339
|
+
templateId: z24.string().min(1).transform(asDesignSystemTemplateId),
|
|
10340
|
+
templateVersion: z24.number().int().nonnegative(),
|
|
10341
|
+
resolverVersion: z24.number().int().nonnegative()
|
|
10342
|
+
}).strict(),
|
|
10343
|
+
z24.object({
|
|
10344
|
+
kind: z24.literal("legacy-raw"),
|
|
10345
|
+
reason: z24.enum(["pre-theme-v2", "manual-runtime-fields"])
|
|
10346
|
+
}).strict(),
|
|
10347
|
+
z24.object({
|
|
10348
|
+
kind: z24.literal("advanced-detached"),
|
|
10349
|
+
reason: z24.literal("detached-custom-runtime-fields")
|
|
10350
|
+
}).strict()
|
|
10351
|
+
]);
|
|
10352
|
+
var blockRuntimeStyleAuthoritySchema = z24.object({
|
|
10353
|
+
unit: z24.literal("block-runtime-fields"),
|
|
10354
|
+
blockId: z24.string().min(1).transform(asDesignBlockId),
|
|
10355
|
+
fields: nonEmptyRuntimeStyleFieldNamesSchema,
|
|
10356
|
+
authority: styleAuthoritySchema
|
|
10357
|
+
}).strict();
|
|
10358
|
+
var persistedPageDesignStateV1Schema = z24.object({
|
|
10359
|
+
schemaVersion: z24.literal(themeV2DesignStateSchemaVersion),
|
|
10360
|
+
siteStyleId: z24.string().min(1).transform(asSiteStyleId),
|
|
10361
|
+
templateId: z24.string().min(1).transform(asDesignSystemTemplateId),
|
|
10362
|
+
templateVersion: z24.number().int().nonnegative(),
|
|
10363
|
+
resolverVersion: z24.number().int().nonnegative(),
|
|
10364
|
+
rhythmPresetId: z24.string().min(1),
|
|
10365
|
+
blocks: z24.array(blockDesignPlanSchema),
|
|
10366
|
+
styleAuthorities: z24.array(blockRuntimeStyleAuthoritySchema)
|
|
10367
|
+
}).strict();
|
|
10368
|
+
|
|
10369
|
+
// ../theme-core/src/site-styles/generatedSchemas.ts
|
|
10370
|
+
import { z as z25 } from "zod";
|
|
10371
|
+
function uniqueNonEmpty2(values) {
|
|
10372
|
+
const uniqueValues = [...new Set(values)];
|
|
10373
|
+
const firstValue = uniqueValues[0];
|
|
10374
|
+
if (!firstValue) {
|
|
10375
|
+
throw new Error("Expected at least one generated schema option.");
|
|
10376
|
+
}
|
|
10377
|
+
return [firstValue, ...uniqueValues.slice(1)];
|
|
10378
|
+
}
|
|
10379
|
+
var generatedPanelTreatments = uniqueNonEmpty2(
|
|
10380
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
|
|
10482
10381
|
);
|
|
10382
|
+
var generatedFlushTreatments = uniqueNonEmpty2(
|
|
10383
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment)
|
|
10384
|
+
);
|
|
10385
|
+
var generatedFlushBleeds = uniqueNonEmpty2(
|
|
10386
|
+
generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed)
|
|
10387
|
+
);
|
|
10388
|
+
var generatedPanelFrameSchema = z25.object({
|
|
10389
|
+
kind: z25.literal("panel"),
|
|
10390
|
+
treatment: z25.enum(generatedPanelTreatments)
|
|
10391
|
+
}).strict();
|
|
10392
|
+
var generatedFlushPanelFrameSchema = z25.object({
|
|
10393
|
+
kind: z25.literal("flush-panel"),
|
|
10394
|
+
treatment: z25.enum(generatedFlushTreatments),
|
|
10395
|
+
bleed: z25.enum(generatedFlushBleeds)
|
|
10396
|
+
}).strict();
|
|
10397
|
+
var generatedContentFrameIntentSchema = z25.discriminatedUnion("kind", [
|
|
10398
|
+
z25.object({ kind: z25.literal("plain") }).strict(),
|
|
10399
|
+
generatedPanelFrameSchema,
|
|
10400
|
+
generatedFlushPanelFrameSchema
|
|
10401
|
+
]);
|
|
10402
|
+
var generatedSiteStyleIdSchema = z25.enum(curatedSiteStyleIdValues).transform(asSiteStyleId);
|
|
10403
|
+
function generatedChoiceSchema(valueSchema) {
|
|
10404
|
+
return z25.discriminatedUnion("kind", [
|
|
10405
|
+
z25.object({
|
|
10406
|
+
source: z25.literal("generated"),
|
|
10407
|
+
kind: z25.literal("auto")
|
|
10408
|
+
}).strict(),
|
|
10409
|
+
z25.object({
|
|
10410
|
+
source: z25.literal("generated"),
|
|
10411
|
+
kind: z25.literal("explicit"),
|
|
10412
|
+
value: valueSchema
|
|
10413
|
+
}).strict()
|
|
10414
|
+
]);
|
|
10415
|
+
}
|
|
10416
|
+
var generatedBlockDesignIntentSchema = z25.object({
|
|
10417
|
+
sectionSurface: generatedChoiceSchema(
|
|
10418
|
+
z25.enum(generatedDesignOptionCatalog.sectionSurfaces)
|
|
10419
|
+
),
|
|
10420
|
+
contentFrame: generatedChoiceSchema(generatedContentFrameIntentSchema),
|
|
10421
|
+
itemSurface: generatedChoiceSchema(
|
|
10422
|
+
z25.enum(generatedDesignOptionCatalog.itemSurfaces)
|
|
10423
|
+
),
|
|
10424
|
+
transitionAfter: generatedChoiceSchema(
|
|
10425
|
+
z25.enum(generatedDesignOptionCatalog.transitions)
|
|
10426
|
+
),
|
|
10427
|
+
emphasis: generatedChoiceSchema(
|
|
10428
|
+
z25.enum(generatedDesignOptionCatalog.emphases)
|
|
10429
|
+
)
|
|
10430
|
+
}).strict();
|
|
10431
|
+
var generatedMediaCompositionIntentSchema = z25.enum([
|
|
10432
|
+
"none",
|
|
10433
|
+
"supporting",
|
|
10434
|
+
"dominant"
|
|
10435
|
+
]);
|
|
10436
|
+
var generatedDecorativeCompositionIntentSchema = z25.enum([
|
|
10437
|
+
"none",
|
|
10438
|
+
"supporting"
|
|
10439
|
+
]);
|
|
10440
|
+
var generatedHeroLegibilityStrategySchema = z25.enum([
|
|
10441
|
+
"none",
|
|
10442
|
+
"scrim-gradient"
|
|
10443
|
+
]);
|
|
10444
|
+
var generatedBlockMediaIntentSchema = z25.object({
|
|
10445
|
+
media: generatedMediaCompositionIntentSchema,
|
|
10446
|
+
decorative: generatedDecorativeCompositionIntentSchema,
|
|
10447
|
+
heroLegibility: generatedChoiceSchema(generatedHeroLegibilityStrategySchema)
|
|
10448
|
+
}).strict();
|
|
10449
|
+
var generatedBoundaryIntentSchema = z25.object({
|
|
10450
|
+
transitionAfter: generatedChoiceSchema(
|
|
10451
|
+
z25.enum(generatedDesignOptionCatalog.transitions)
|
|
10452
|
+
)
|
|
10453
|
+
}).strict();
|
|
10454
|
+
var generatedPageDesignBlockIntentSchema = z25.object({
|
|
10455
|
+
blockId: z25.string().min(1),
|
|
10456
|
+
blockKind: z25.string().min(1),
|
|
10457
|
+
purpose: z25.string().min(1),
|
|
10458
|
+
design: generatedBlockDesignIntentSchema,
|
|
10459
|
+
mediaIntent: generatedBlockMediaIntentSchema,
|
|
10460
|
+
boundaryIntent: generatedBoundaryIntentSchema
|
|
10461
|
+
}).strict();
|
|
10462
|
+
var generatedPageDesignIntentSchema = z25.object({
|
|
10463
|
+
siteStyleId: generatedSiteStyleIdSchema,
|
|
10464
|
+
blocks: z25.array(generatedPageDesignBlockIntentSchema)
|
|
10465
|
+
}).strict();
|
|
10466
|
+
|
|
10467
|
+
// ../theme-core/src/site-styles/pageDesignIntent.ts
|
|
10468
|
+
import { z as z26 } from "zod";
|
|
10469
|
+
var pageDesignIntentSchemaVersion = 1;
|
|
10470
|
+
var pageDesignUserPinnedAppearanceChoiceSchema = z26.object({
|
|
10471
|
+
kind: z26.literal("user-pinned"),
|
|
10472
|
+
value: z26.string().min(1).transform(asAppearancePresetId)
|
|
10473
|
+
}).strict();
|
|
10474
|
+
var pageDesignUserPinnedBoundaryChoiceSchema = z26.object({
|
|
10475
|
+
kind: z26.literal("user-pinned"),
|
|
10476
|
+
value: z26.string().min(1).transform(asBoundaryOptionId)
|
|
10477
|
+
}).strict();
|
|
10478
|
+
var pageDesignBlockLookPinSchema = z26.object({
|
|
10479
|
+
blockId: z26.string().min(1).transform(asDesignBlockId),
|
|
10480
|
+
blockKind: z26.string().min(1),
|
|
10481
|
+
choice: pageDesignUserPinnedAppearanceChoiceSchema
|
|
10482
|
+
}).strict();
|
|
10483
|
+
var pageDesignBoundaryPinSchema = z26.object({
|
|
10484
|
+
boundaryId: z26.string().min(1).transform(asDesignBoundaryId),
|
|
10485
|
+
previousBlockId: z26.string().min(1).transform(asDesignBlockId),
|
|
10486
|
+
nextBlockId: z26.string().min(1).transform(asDesignBlockId),
|
|
10487
|
+
choice: pageDesignUserPinnedBoundaryChoiceSchema
|
|
10488
|
+
}).strict().superRefine((pin, ctx) => {
|
|
10489
|
+
const expectedBoundaryId = makeBoundaryId(
|
|
10490
|
+
pin.previousBlockId,
|
|
10491
|
+
pin.nextBlockId
|
|
10492
|
+
);
|
|
10493
|
+
if (pin.boundaryId !== expectedBoundaryId) {
|
|
10494
|
+
ctx.addIssue({
|
|
10495
|
+
code: z26.ZodIssueCode.custom,
|
|
10496
|
+
path: ["boundaryId"],
|
|
10497
|
+
message: `Boundary id must match previousBlockId and nextBlockId. Expected ${expectedBoundaryId}.`
|
|
10498
|
+
});
|
|
10499
|
+
}
|
|
10500
|
+
});
|
|
10501
|
+
var pageDesignIntentV1Schema = z26.object({
|
|
10502
|
+
schemaVersion: z26.literal(pageDesignIntentSchemaVersion),
|
|
10503
|
+
siteStyleId: z26.string().min(1).transform(asSiteStyleId),
|
|
10504
|
+
pageFlowPresetId: z26.string().min(1).transform(asPageFlowPresetId),
|
|
10505
|
+
blockLookPins: z26.array(pageDesignBlockLookPinSchema),
|
|
10506
|
+
boundaryPins: z26.array(pageDesignBoundaryPinSchema)
|
|
10507
|
+
}).strict().superRefine((intent, ctx) => {
|
|
10508
|
+
addDuplicateStringIssues(ctx, {
|
|
10509
|
+
values: intent.blockLookPins.map((pin) => pin.blockId),
|
|
10510
|
+
path: ["blockLookPins"],
|
|
10511
|
+
label: "block Look pin"
|
|
10512
|
+
});
|
|
10513
|
+
addDuplicateStringIssues(ctx, {
|
|
10514
|
+
values: intent.boundaryPins.map(
|
|
10515
|
+
(pin) => boundaryKey(pin.previousBlockId, pin.nextBlockId)
|
|
10516
|
+
),
|
|
10517
|
+
path: ["boundaryPins"],
|
|
10518
|
+
label: "boundary pin"
|
|
10519
|
+
});
|
|
10520
|
+
});
|
|
10521
|
+
function addDuplicateStringIssues(ctx, input) {
|
|
10522
|
+
const seen = /* @__PURE__ */ new Set();
|
|
10523
|
+
const duplicates = /* @__PURE__ */ new Set();
|
|
10524
|
+
for (const value of input.values) {
|
|
10525
|
+
if (seen.has(value)) {
|
|
10526
|
+
duplicates.add(value);
|
|
10527
|
+
}
|
|
10528
|
+
seen.add(value);
|
|
10529
|
+
}
|
|
10530
|
+
for (const duplicate of duplicates) {
|
|
10531
|
+
ctx.addIssue({
|
|
10532
|
+
code: z26.ZodIssueCode.custom,
|
|
10533
|
+
path: [...input.path],
|
|
10534
|
+
message: `Duplicate ${input.label}: ${duplicate}.`
|
|
10535
|
+
});
|
|
10536
|
+
}
|
|
10537
|
+
}
|
|
10538
|
+
function boundaryKey(previousBlockId, nextBlockId) {
|
|
10539
|
+
return makeBoundaryId(previousBlockId, nextBlockId);
|
|
10540
|
+
}
|
|
10483
10541
|
|
|
10484
10542
|
// ../theme-core/src/site-styles/runtimeCompiler.ts
|
|
10485
10543
|
function defineDesignRuntimeRules(rules) {
|
|
@@ -11824,7 +11882,8 @@ function ctaButton(opts) {
|
|
|
11824
11882
|
},
|
|
11825
11883
|
size: {
|
|
11826
11884
|
$bind: {
|
|
11827
|
-
from: sizePath
|
|
11885
|
+
from: sizePath,
|
|
11886
|
+
fallback: opts?.sizeFallback ?? "md"
|
|
11828
11887
|
}
|
|
11829
11888
|
},
|
|
11830
11889
|
...opts?.className ? { className: opts.className } : {},
|
|
@@ -17853,14 +17912,16 @@ var headerCta = ctaButton({
|
|
|
17853
17912
|
whenPath: "menu.ctaItem.label",
|
|
17854
17913
|
variantPath: "menu.ctaItem.variant",
|
|
17855
17914
|
linkPath: "menu.ctaItem.link",
|
|
17856
|
-
|
|
17915
|
+
sizeFallback: "sm",
|
|
17916
|
+
className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
|
|
17857
17917
|
});
|
|
17858
17918
|
var mobileCta = ctaButton({
|
|
17859
17919
|
basePath: "menu.ctaItem",
|
|
17860
17920
|
whenPath: "menu.ctaItem.label",
|
|
17861
17921
|
variantPath: "menu.ctaItem.variant",
|
|
17862
17922
|
linkPath: "menu.ctaItem.link",
|
|
17863
|
-
|
|
17923
|
+
sizeFallback: "md",
|
|
17924
|
+
className: "nav-mobile-cta rb-w-full"
|
|
17864
17925
|
});
|
|
17865
17926
|
var mobileToggleIcon = stack({ gap: "xs", className: "nav-mobile-icon" }, [
|
|
17866
17927
|
{
|