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