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