@riverbankcms/sdk 0.60.1 → 0.60.3

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.
Files changed (83) hide show
  1. package/dist/_dts/api/src/bookingRecords.d.ts +7 -0
  2. package/dist/_dts/api/src/communications.d.ts +1 -0
  3. package/dist/_dts/api/src/contentRuntime.d.ts +8 -0
  4. package/dist/_dts/api/src/endpoints.d.ts +17 -0
  5. package/dist/_dts/api/src/index.d.ts +1 -1
  6. package/dist/_dts/api/src/media.d.ts +1 -1
  7. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +45 -1
  8. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +24 -1
  9. package/dist/_dts/api/src/siteSettings.d.ts +7 -0
  10. package/dist/_dts/api/src/types.d.ts +1 -1
  11. package/dist/_dts/blocks/src/system/blocks/location-map.d.ts +3 -0
  12. package/dist/_dts/blocks/src/system/blocks/site-footer.d.ts +1 -0
  13. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.server.d.ts +4 -0
  14. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.shared.d.ts +38 -0
  15. package/dist/_dts/blocks/src/system/runtime/nodes/location-map.view.d.ts +2 -1
  16. package/dist/_dts/core/src/business-address.d.ts +38 -0
  17. package/dist/_dts/core/src/index.d.ts +1 -0
  18. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +22 -0
  19. package/dist/_dts/preview-next/src/client/blocks/runOptimisticCustomizeAction.d.ts +44 -0
  20. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +7 -1
  21. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +12 -1
  22. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -1
  23. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +20 -0
  24. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +99 -0
  25. package/dist/_dts/sdk/src/public-api/contracts.d.ts +11 -1
  26. package/dist/_dts/sdk/src/version.d.ts +1 -1
  27. package/dist/_dts/theme-core/src/buttons/constants.d.ts +9 -1
  28. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +16 -11
  29. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +9 -16
  30. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  31. package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +11 -0
  32. package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +11 -0
  33. package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +11 -0
  34. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +14 -0
  35. package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +11 -0
  36. package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +11 -0
  37. package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +11 -0
  38. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +268 -0
  39. package/dist/_dts/theme-core/src/buttons/types.d.ts +253 -72
  40. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +69 -15
  41. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  42. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +28 -0
  43. package/dist/_dts/theme-core/src/palette/variants/high-contrast.d.ts +28 -0
  44. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +17 -0
  45. package/dist/_dts/theme-core/src/palette/variants/soft-natural.d.ts +28 -0
  46. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +154 -0
  47. package/dist/_dts/theme-core/src/palette/variants/warm-neutral.d.ts +28 -0
  48. package/dist/_dts/theme-core/src/schema.d.ts +122 -10
  49. package/dist/_dts/theme-core/src/site-styles/compatibility.d.ts +109 -0
  50. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +193 -0
  51. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  52. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +4 -0
  53. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +43 -2
  54. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +23 -1
  55. package/dist/_dts/ui/src/badge.d.ts +1 -1
  56. package/dist/_dts/ui/src/callout.d.ts +1 -1
  57. package/dist/cli/index.mjs +1471 -263
  58. package/dist/client/bookings.mjs +294 -144
  59. package/dist/client/client.mjs +3483 -2219
  60. package/dist/client/hooks.mjs +2765 -1654
  61. package/dist/client/rendering/client.mjs +3251 -2134
  62. package/dist/client/rendering/islands.mjs +1842 -728
  63. package/dist/client/rendering.mjs +41242 -39978
  64. package/dist/preview-next/before-render.mjs +17 -0
  65. package/dist/preview-next/client/runtime.mjs +10110 -8271
  66. package/dist/preview-next/middleware.mjs +17 -0
  67. package/dist/server/components.mjs +3500 -2364
  68. package/dist/server/config-validation.mjs +2996 -1885
  69. package/dist/server/config.mjs +2996 -1885
  70. package/dist/server/data.mjs +2765 -1654
  71. package/dist/server/index.mjs +18 -1
  72. package/dist/server/next.mjs +3215 -2079
  73. package/dist/server/page-converter.mjs +2910 -1816
  74. package/dist/server/prebuild.mjs +1 -1
  75. package/dist/server/rendering/server.mjs +3500 -2364
  76. package/dist/server/rendering.mjs +3500 -2364
  77. package/dist/server/routing.mjs +2943 -1704
  78. package/dist/server/server.mjs +2766 -1655
  79. package/dist/server/theme-bridge.mjs +1435 -481
  80. package/dist/server/theme.mjs +1087 -492
  81. package/package.json +1 -1
  82. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.d.ts +0 -11
  83. package/dist/_dts/preview-next/src/client/preview/PreviewSiteStyleSwitcher.state.d.ts +0 -43
@@ -628,6 +628,13 @@ var init_location = __esm({
628
628
  }
629
629
  });
630
630
 
631
+ // ../core/src/business-address.ts
632
+ var init_business_address = __esm({
633
+ "../core/src/business-address.ts"() {
634
+ "use strict";
635
+ }
636
+ });
637
+
631
638
  // ../core/src/assert-never.ts
632
639
  var init_assert_never = __esm({
633
640
  "../core/src/assert-never.ts"() {
@@ -712,6 +719,7 @@ var init_src = __esm({
712
719
  init_person_records();
713
720
  init_rectification();
714
721
  init_location();
722
+ init_business_address();
715
723
  init_result();
716
724
  init_assert_never();
717
725
  init_try_async();
@@ -8111,27 +8119,999 @@ function useBlockApi() {
8111
8119
  "useBlockApi must be used within a BlockApiProvider. Make sure your component is wrapped with <BlockApiProvider>."
8112
8120
  );
8113
8121
  }
8114
- return client;
8115
- }
8116
- function useBlockApiOptional() {
8117
- return useContext(BlockApiContext);
8118
- }
8119
- var BlockApiContext;
8120
- var init_context = __esm({
8121
- "../blocks/src/system/runtime/api/context.tsx"() {
8122
+ return client;
8123
+ }
8124
+ function useBlockApiOptional() {
8125
+ return useContext(BlockApiContext);
8126
+ }
8127
+ var BlockApiContext;
8128
+ var init_context = __esm({
8129
+ "../blocks/src/system/runtime/api/context.tsx"() {
8130
+ "use strict";
8131
+ "use client";
8132
+ init_client();
8133
+ BlockApiContext = getGlobalContext();
8134
+ }
8135
+ });
8136
+
8137
+ // ../blocks/src/system/runtime/api/index.ts
8138
+ var init_api = __esm({
8139
+ "../blocks/src/system/runtime/api/index.ts"() {
8140
+ "use strict";
8141
+ init_client();
8142
+ init_context();
8143
+ }
8144
+ });
8145
+
8146
+ // ../theme-core/src/buttons/types.ts
8147
+ import { z as z21 } from "zod";
8148
+ var VARIANT_ROLES, cornerStyleSchema, shadowSizeSchema, textTransformSchema, fontWeightSchema, buttonTypographySchema, letterSpacingSchema, hoverTransformSchema, hoverColorSchema, buttonPaddingPresetSchema, gradientStyleSchema, gradientSharpnessSchema, prioritySchema, variantRoleSchema, buttonSizeNameSchema, PADDING_TOKEN_PATTERN, paddingShorthandSchema, buttonSizeConfigSchema, buttonSizesSchema, buttonGlobalSettingsSchema, gradientDirectionSchema, buttonBackgroundSchema, effectApplicationSchema, buttonBorderSchema, variantShadowSchema, variantEffectsSchema, variantSizeOverridesSchema, buttonVariantSchema, buttonSystemSchema;
8149
+ var init_types4 = __esm({
8150
+ "../theme-core/src/buttons/types.ts"() {
8151
+ "use strict";
8152
+ VARIANT_ROLES = [
8153
+ "primary",
8154
+ "secondary",
8155
+ "outline",
8156
+ "ghost",
8157
+ "link",
8158
+ "tertiary",
8159
+ "accent"
8160
+ ];
8161
+ cornerStyleSchema = z21.enum(["square", "rounded", "pill"]);
8162
+ shadowSizeSchema = z21.enum(["none", "low", "medium", "high"]);
8163
+ textTransformSchema = z21.enum(["none", "uppercase", "lowercase", "capitalize"]);
8164
+ fontWeightSchema = z21.union([z21.literal(500), z21.literal(600), z21.literal(700)]);
8165
+ buttonTypographySchema = z21.enum(["body", "heading"]);
8166
+ letterSpacingSchema = z21.enum(["tight", "normal", "loose"]);
8167
+ hoverTransformSchema = z21.enum(["none", "lift", "scale", "press"]);
8168
+ hoverColorSchema = z21.enum(["none", "brighten", "darken", "saturate", "token"]);
8169
+ buttonPaddingPresetSchema = z21.enum(["compact", "default", "spacious"]);
8170
+ gradientStyleSchema = z21.enum(["linear", "radial", "conic"]);
8171
+ gradientSharpnessSchema = z21.enum(["smooth", "medium", "hard"]);
8172
+ prioritySchema = z21.union([z21.literal(1), z21.literal(2), z21.literal(3)]);
8173
+ variantRoleSchema = z21.enum(VARIANT_ROLES);
8174
+ buttonSizeNameSchema = z21.enum(["sm", "md", "lg", "xl"]);
8175
+ PADDING_TOKEN_PATTERN = /^(?:0|\d+(?:\.\d+)?(?:rem|em|px|%))$/;
8176
+ paddingShorthandSchema = z21.string().refine(
8177
+ (value) => {
8178
+ const parts = value.split(/\s+/).filter(Boolean);
8179
+ return parts.length === 2 && parts.every((token) => PADDING_TOKEN_PATTERN.test(token));
8180
+ },
8181
+ {
8182
+ message: 'Padding must be two space-separated CSS length tokens (e.g. "0.5rem 1rem"). Use `0` for zero.'
8183
+ }
8184
+ );
8185
+ buttonSizeConfigSchema = z21.object({
8186
+ padding: paddingShorthandSchema,
8187
+ fontSize: z21.string().optional()
8188
+ });
8189
+ buttonSizesSchema = z21.object({
8190
+ sm: buttonSizeConfigSchema,
8191
+ md: buttonSizeConfigSchema,
8192
+ lg: buttonSizeConfigSchema,
8193
+ xl: buttonSizeConfigSchema.optional()
8194
+ }).transform(({ sm, md, lg, xl }) => ({
8195
+ sm,
8196
+ md,
8197
+ lg,
8198
+ xl: xl ?? lg
8199
+ }));
8200
+ buttonGlobalSettingsSchema = z21.object({
8201
+ cornerStyle: cornerStyleSchema,
8202
+ cornerRadius: z21.number().min(0).max(24).optional(),
8203
+ shadow: shadowSizeSchema,
8204
+ textTransform: textTransformSchema,
8205
+ fontWeight: fontWeightSchema,
8206
+ /**
8207
+ * @deprecated Set per-variant via `variant.border.widthClass` instead.
8208
+ * Schema field is preserved so existing presets parse; the value is unread
8209
+ * by the current generator and will be removed once the legacy
8210
+ * `primitives/content/components/Button.tsx` slot exports are deleted.
8211
+ */
8212
+ borderWidth: z21.union([z21.literal(1), z21.literal(2), z21.literal(3)]),
8213
+ // === Family-level typography ===
8214
+ // Typography source (body or heading) — selects which theme typography pool to inherit
8215
+ typography: buttonTypographySchema.optional(),
8216
+ // Font size for all variants in the family (Tailwind token, e.g. "text-xs", "text-sm")
8217
+ // Sized variants get this as default; fixed variants inherit unless they override.
8218
+ // Size class CSS may still override at run time for sized variants.
8219
+ fontSize: z21.string().optional(),
8220
+ // Letter spacing applied to all variants
8221
+ letterSpacing: letterSpacingSchema.optional(),
8222
+ // Italic style
8223
+ italic: z21.boolean().optional(),
8224
+ // Padding preset (applies to sized variants without a sizes config)
8225
+ paddingPreset: buttonPaddingPresetSchema.optional(),
8226
+ hoverTransform: hoverTransformSchema,
8227
+ hoverColor: hoverColorSchema,
8228
+ // When hoverColor is 'token', this specifies which token to use
8229
+ hoverColorToken: z21.string().optional(),
8230
+ // Gradient settings (if any variant uses gradients)
8231
+ gradientStyle: gradientStyleSchema.optional(),
8232
+ gradientAngle: z21.number().min(0).max(360).optional(),
8233
+ gradientSharpness: gradientSharpnessSchema.optional()
8234
+ });
8235
+ gradientDirectionSchema = z21.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
8236
+ buttonBackgroundSchema = z21.discriminatedUnion("type", [
8237
+ z21.object({ type: z21.literal("solid"), colorToken: z21.string() }),
8238
+ z21.object({
8239
+ type: z21.literal("gradient"),
8240
+ stops: z21.array(z21.string()).min(2),
8241
+ direction: gradientDirectionSchema
8242
+ }),
8243
+ z21.object({ type: z21.literal("transparent") })
8244
+ ]);
8245
+ effectApplicationSchema = z21.object({
8246
+ effectId: z21.string(),
8247
+ options: z21.record(z21.string(), z21.any()).optional()
8248
+ });
8249
+ buttonBorderSchema = z21.object({
8250
+ widthClass: z21.string(),
8251
+ colorToken: z21.string()
8252
+ });
8253
+ variantShadowSchema = z21.object({
8254
+ elevation: z21.enum(["none", "low", "medium", "high"]),
8255
+ softness: z21.enum(["crisp", "soft", "hard"]).nullable(),
8256
+ position: z21.enum(["bottom", "bottom-right"]).default("bottom")
8257
+ });
8258
+ variantEffectsSchema = z21.object({
8259
+ base: z21.array(effectApplicationSchema).optional(),
8260
+ hover: z21.array(effectApplicationSchema).optional(),
8261
+ active: z21.array(effectApplicationSchema).optional(),
8262
+ focus: z21.array(effectApplicationSchema).optional()
8263
+ });
8264
+ variantSizeOverridesSchema = z21.object({
8265
+ sm: buttonSizeConfigSchema.optional(),
8266
+ md: buttonSizeConfigSchema.optional(),
8267
+ lg: buttonSizeConfigSchema.optional(),
8268
+ xl: buttonSizeConfigSchema.optional()
8269
+ });
8270
+ buttonVariantSchema = z21.object({
8271
+ id: z21.string(),
8272
+ name: z21.string().min(1).max(20),
8273
+ enabled: z21.boolean(),
8274
+ priority: prioritySchema,
8275
+ // Base appearance (token-based)
8276
+ background: buttonBackgroundSchema,
8277
+ textColorToken: z21.string(),
8278
+ /** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
8279
+ borderRadius: z21.string().optional(),
8280
+ // Optional shadow override (uses theme.shadow if not specified)
8281
+ shadow: variantShadowSchema.optional(),
8282
+ // Border (optional)
8283
+ border: buttonBorderSchema.optional(),
8284
+ // Hover background token (per-variant override, takes precedence over global hoverColorToken)
8285
+ hoverBackgroundToken: z21.string().optional(),
8286
+ // Effect composition
8287
+ effects: variantEffectsSchema.optional(),
8288
+ // Per-variant size overrides — see VariantSizeOverrides
8289
+ sizes: variantSizeOverridesSchema.optional()
8290
+ });
8291
+ buttonSystemSchema = z21.object({
8292
+ global: buttonGlobalSettingsSchema,
8293
+ variants: z21.array(buttonVariantSchema).min(1).max(6),
8294
+ sizes: buttonSizesSchema.optional()
8295
+ });
8296
+ }
8297
+ });
8298
+
8299
+ // ../theme-core/src/tokens/resolver.ts
8300
+ var init_resolver = __esm({
8301
+ "../theme-core/src/tokens/resolver.ts"() {
8302
+ "use strict";
8303
+ }
8304
+ });
8305
+
8306
+ // ../theme-core/src/buttons/effects/presets/background.ts
8307
+ var init_background = __esm({
8308
+ "../theme-core/src/buttons/effects/presets/background.ts"() {
8309
+ "use strict";
8310
+ }
8311
+ });
8312
+
8313
+ // ../theme-core/src/buttons/effects/cssUtils.ts
8314
+ var init_cssUtils = __esm({
8315
+ "../theme-core/src/buttons/effects/cssUtils.ts"() {
8316
+ "use strict";
8317
+ }
8318
+ });
8319
+
8320
+ // ../theme-core/src/buttons/effects/presets/shadow.ts
8321
+ var init_shadow = __esm({
8322
+ "../theme-core/src/buttons/effects/presets/shadow.ts"() {
8323
+ "use strict";
8324
+ init_cssUtils();
8325
+ }
8326
+ });
8327
+
8328
+ // ../theme-core/src/buttons/effects/presets/transform.ts
8329
+ var init_transform = __esm({
8330
+ "../theme-core/src/buttons/effects/presets/transform.ts"() {
8331
+ "use strict";
8332
+ init_cssUtils();
8333
+ }
8334
+ });
8335
+
8336
+ // ../theme-core/src/buttons/effects/presets/overlay.ts
8337
+ var init_overlay = __esm({
8338
+ "../theme-core/src/buttons/effects/presets/overlay.ts"() {
8339
+ "use strict";
8340
+ }
8341
+ });
8342
+
8343
+ // ../theme-core/src/buttons/effects/presets/text.ts
8344
+ var init_text = __esm({
8345
+ "../theme-core/src/buttons/effects/presets/text.ts"() {
8346
+ "use strict";
8347
+ }
8348
+ });
8349
+
8350
+ // ../theme-core/src/buttons/effects/presets/border.ts
8351
+ var init_border = __esm({
8352
+ "../theme-core/src/buttons/effects/presets/border.ts"() {
8353
+ "use strict";
8354
+ }
8355
+ });
8356
+
8357
+ // ../theme-core/src/buttons/effects/presets/animation.ts
8358
+ var init_animation = __esm({
8359
+ "../theme-core/src/buttons/effects/presets/animation.ts"() {
8360
+ "use strict";
8361
+ }
8362
+ });
8363
+
8364
+ // ../theme-core/src/interactive/effects/nav-underline.ts
8365
+ var init_nav_underline = __esm({
8366
+ "../theme-core/src/interactive/effects/nav-underline.ts"() {
8367
+ "use strict";
8368
+ }
8369
+ });
8370
+
8371
+ // ../theme-core/src/interactive/effects/nav-frosted.ts
8372
+ var init_nav_frosted = __esm({
8373
+ "../theme-core/src/interactive/effects/nav-frosted.ts"() {
8374
+ "use strict";
8375
+ }
8376
+ });
8377
+
8378
+ // ../theme-core/src/interactive/effects/index.ts
8379
+ var init_effects = __esm({
8380
+ "../theme-core/src/interactive/effects/index.ts"() {
8381
+ "use strict";
8382
+ init_nav_underline();
8383
+ init_nav_frosted();
8384
+ }
8385
+ });
8386
+
8387
+ // ../theme-core/src/buttons/effects/registry.ts
8388
+ var init_registry = __esm({
8389
+ "../theme-core/src/buttons/effects/registry.ts"() {
8390
+ "use strict";
8391
+ init_background();
8392
+ init_shadow();
8393
+ init_transform();
8394
+ init_overlay();
8395
+ init_text();
8396
+ init_border();
8397
+ init_animation();
8398
+ init_effects();
8399
+ }
8400
+ });
8401
+
8402
+ // ../theme-core/src/interactive/generateEffectsCSS.ts
8403
+ var init_generateEffectsCSS = __esm({
8404
+ "../theme-core/src/interactive/generateEffectsCSS.ts"() {
8405
+ "use strict";
8406
+ init_registry();
8407
+ }
8408
+ });
8409
+
8410
+ // ../theme-core/src/buttons/constants.ts
8411
+ var init_constants = __esm({
8412
+ "../theme-core/src/buttons/constants.ts"() {
8413
+ "use strict";
8414
+ }
8415
+ });
8416
+
8417
+ // ../theme-core/src/buttons/utils/contrast.ts
8418
+ var init_contrast2 = __esm({
8419
+ "../theme-core/src/buttons/utils/contrast.ts"() {
8420
+ "use strict";
8421
+ }
8422
+ });
8423
+
8424
+ // ../theme-core/src/buttons/generateDefaultButtonSystem.ts
8425
+ var init_generateDefaultButtonSystem = __esm({
8426
+ "../theme-core/src/buttons/generateDefaultButtonSystem.ts"() {
8427
+ "use strict";
8428
+ init_contrast2();
8429
+ }
8430
+ });
8431
+
8432
+ // ../theme-core/src/buttons/generateButtonCss.ts
8433
+ var BUTTON_SIZE_NAMES;
8434
+ var init_generateButtonCss = __esm({
8435
+ "../theme-core/src/buttons/generateButtonCss.ts"() {
8436
+ "use strict";
8437
+ init_types4();
8438
+ init_resolver();
8439
+ init_generateEffectsCSS();
8440
+ init_constants();
8441
+ init_generateDefaultButtonSystem();
8442
+ BUTTON_SIZE_NAMES = buttonSizeNameSchema.options;
8443
+ }
8444
+ });
8445
+
8446
+ // ../theme-core/src/buttons/presets.ts
8447
+ var init_presets = __esm({
8448
+ "../theme-core/src/buttons/presets.ts"() {
8449
+ "use strict";
8450
+ }
8451
+ });
8452
+
8453
+ // ../theme-core/src/site-styles/compatibility.ts
8454
+ import { z as z22 } from "zod";
8455
+ var STYLE_AXIS_VALUES, styleTagsSchema;
8456
+ var init_compatibility = __esm({
8457
+ "../theme-core/src/site-styles/compatibility.ts"() {
8458
+ "use strict";
8459
+ STYLE_AXIS_VALUES = {
8460
+ tone: ["minimal", "classic", "bold"],
8461
+ energy: ["calm", "vibrant"],
8462
+ motion: ["subtle", "standard", "expressive"],
8463
+ era: ["editorial", "modern", "organic", "technical", "retro"]
8464
+ };
8465
+ styleTagsSchema = z22.object({
8466
+ tone: z22.enum(STYLE_AXIS_VALUES.tone).optional(),
8467
+ energy: z22.enum(STYLE_AXIS_VALUES.energy).optional(),
8468
+ motion: z22.enum(STYLE_AXIS_VALUES.motion).optional(),
8469
+ era: z22.enum(STYLE_AXIS_VALUES.era).optional()
8470
+ });
8471
+ }
8472
+ });
8473
+
8474
+ // ../theme-core/src/buttons/personalities/types.ts
8475
+ import { z as z23 } from "zod";
8476
+ function asButtonPersonalityId(value) {
8477
+ if (value.length === 0) {
8478
+ throw new Error("ButtonPersonalityId must be a non-empty string");
8479
+ }
8480
+ return value;
8481
+ }
8482
+ function defineButtonPersonality(input) {
8483
+ return {
8484
+ id: asButtonPersonalityId(input.id),
8485
+ name: input.name,
8486
+ description: input.description,
8487
+ tags: input.tags,
8488
+ buttonSystem: input.buttonSystem
8489
+ };
8490
+ }
8491
+ var buttonPersonalityIdSchema, buttonPersonalitySchema;
8492
+ var init_types5 = __esm({
8493
+ "../theme-core/src/buttons/personalities/types.ts"() {
8494
+ "use strict";
8495
+ init_types4();
8496
+ init_compatibility();
8497
+ buttonPersonalityIdSchema = z23.string().min(1).transform((value) => asButtonPersonalityId(value));
8498
+ buttonPersonalitySchema = z23.object({
8499
+ id: buttonPersonalityIdSchema,
8500
+ name: z23.string().min(1),
8501
+ description: z23.string().min(1),
8502
+ tags: styleTagsSchema,
8503
+ buttonSystem: buttonSystemSchema
8504
+ });
8505
+ }
8506
+ });
8507
+
8508
+ // ../theme-core/src/buttons/personalities/brushed-wash.ts
8509
+ var brushedWash;
8510
+ var init_brushed_wash = __esm({
8511
+ "../theme-core/src/buttons/personalities/brushed-wash.ts"() {
8512
+ "use strict";
8513
+ init_types5();
8514
+ brushedWash = defineButtonPersonality({
8515
+ id: "brushed-wash",
8516
+ name: "Brushed Wash",
8517
+ description: "Watercolour-gradient buttons with soft shadows and generous padding.",
8518
+ tags: { tone: "classic", energy: "vibrant", motion: "standard", era: "organic" },
8519
+ buttonSystem: {
8520
+ global: {
8521
+ cornerStyle: "rounded",
8522
+ shadow: "low",
8523
+ textTransform: "none",
8524
+ fontWeight: 500,
8525
+ borderWidth: 1,
8526
+ hoverTransform: "none",
8527
+ hoverColor: "none"
8528
+ },
8529
+ sizes: {
8530
+ sm: { padding: "0.75rem 2rem", fontSize: "text-sm" },
8531
+ md: { padding: "1rem 2.5rem" },
8532
+ lg: { padding: "1.25rem 3rem", fontSize: "text-lg" },
8533
+ xl: { padding: "1.625rem 3.75rem", fontSize: "text-xl" }
8534
+ },
8535
+ variants: [
8536
+ {
8537
+ id: "primary",
8538
+ name: "Primary",
8539
+ enabled: true,
8540
+ priority: 1,
8541
+ background: {
8542
+ type: "gradient",
8543
+ stops: ["primary", "accent"],
8544
+ direction: "to-r"
8545
+ },
8546
+ textColorToken: "primaryForeground",
8547
+ borderRadius: "rounded-lg",
8548
+ shadow: { elevation: "low", softness: "soft", position: "bottom" },
8549
+ effects: {
8550
+ hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
8551
+ }
8552
+ },
8553
+ {
8554
+ id: "secondary",
8555
+ name: "Secondary",
8556
+ enabled: true,
8557
+ priority: 2,
8558
+ background: {
8559
+ type: "gradient",
8560
+ stops: ["secondary", "accent"],
8561
+ direction: "to-br"
8562
+ },
8563
+ textColorToken: "primaryForeground",
8564
+ borderRadius: "rounded-lg",
8565
+ shadow: { elevation: "low", softness: "soft", position: "bottom" },
8566
+ effects: {
8567
+ hover: [{ effectId: "opacity-reduce", options: { reduction: -15 } }]
8568
+ }
8569
+ },
8570
+ {
8571
+ id: "outline",
8572
+ name: "Outline",
8573
+ enabled: true,
8574
+ priority: 3,
8575
+ background: { type: "transparent" },
8576
+ textColorToken: "primary",
8577
+ borderRadius: "rounded-lg",
8578
+ border: { widthClass: "border", colorToken: "primary" },
8579
+ effects: {
8580
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
8581
+ }
8582
+ },
8583
+ {
8584
+ id: "ghost",
8585
+ name: "Ghost",
8586
+ enabled: true,
8587
+ priority: 3,
8588
+ background: { type: "transparent" },
8589
+ textColorToken: "text",
8590
+ borderRadius: "rounded-lg",
8591
+ effects: {
8592
+ hover: [
8593
+ { effectId: "background-on-hover", options: { colorToken: "surface" } }
8594
+ ]
8595
+ }
8596
+ }
8597
+ ]
8598
+ }
8599
+ });
8600
+ }
8601
+ });
8602
+
8603
+ // ../theme-core/src/buttons/personalities/confident-chip.ts
8604
+ var confidentChip;
8605
+ var init_confident_chip = __esm({
8606
+ "../theme-core/src/buttons/personalities/confident-chip.ts"() {
8607
+ "use strict";
8608
+ init_types5();
8609
+ confidentChip = defineButtonPersonality({
8610
+ id: "confident-chip",
8611
+ name: "Confident Chip",
8612
+ description: "Mid-radius solid buttons with a crisp hover.",
8613
+ tags: { tone: "classic", energy: "calm", motion: "standard", era: "modern" },
8614
+ buttonSystem: {
8615
+ global: {
8616
+ cornerStyle: "rounded",
8617
+ shadow: "medium",
8618
+ textTransform: "none",
8619
+ fontWeight: 600,
8620
+ borderWidth: 1,
8621
+ hoverTransform: "none",
8622
+ hoverColor: "none"
8623
+ },
8624
+ variants: [
8625
+ {
8626
+ id: "primary",
8627
+ name: "Primary",
8628
+ enabled: true,
8629
+ priority: 1,
8630
+ background: { type: "solid", colorToken: "primary" },
8631
+ textColorToken: "primaryForeground",
8632
+ borderRadius: "rounded-md",
8633
+ shadow: { elevation: "medium", softness: "soft", position: "bottom" },
8634
+ effects: {
8635
+ hover: [{ effectId: "darken-background", options: { amount: 60 } }],
8636
+ active: [{ effectId: "scale-down", options: { scale: "0.97" } }]
8637
+ }
8638
+ },
8639
+ {
8640
+ id: "secondary",
8641
+ name: "Secondary",
8642
+ enabled: true,
8643
+ priority: 2,
8644
+ background: { type: "solid", colorToken: "surface" },
8645
+ textColorToken: "text",
8646
+ borderRadius: "rounded-md",
8647
+ border: { widthClass: "border", colorToken: "border" },
8648
+ effects: {
8649
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
8650
+ }
8651
+ },
8652
+ {
8653
+ id: "outline",
8654
+ name: "Outline",
8655
+ enabled: true,
8656
+ priority: 3,
8657
+ background: { type: "transparent" },
8658
+ textColorToken: "primary",
8659
+ borderRadius: "rounded-md",
8660
+ border: { widthClass: "border", colorToken: "primary" },
8661
+ effects: {
8662
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
8663
+ }
8664
+ },
8665
+ {
8666
+ id: "ghost",
8667
+ name: "Ghost",
8668
+ enabled: true,
8669
+ priority: 3,
8670
+ background: { type: "transparent" },
8671
+ textColorToken: "primary",
8672
+ borderRadius: "rounded-md",
8673
+ effects: {
8674
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
8675
+ }
8676
+ }
8677
+ ]
8678
+ }
8679
+ });
8680
+ }
8681
+ });
8682
+
8683
+ // ../theme-core/src/buttons/personalities/editorial-link.ts
8684
+ var editorialLink;
8685
+ var init_editorial_link = __esm({
8686
+ "../theme-core/src/buttons/personalities/editorial-link.ts"() {
8687
+ "use strict";
8688
+ init_types5();
8689
+ editorialLink = defineButtonPersonality({
8690
+ id: "editorial-link",
8691
+ name: "Editorial Link",
8692
+ description: "Link-style with a growing underline. Refined, typographic.",
8693
+ tags: { tone: "minimal", energy: "calm", motion: "subtle", era: "editorial" },
8694
+ buttonSystem: {
8695
+ global: {
8696
+ cornerStyle: "square",
8697
+ shadow: "none",
8698
+ textTransform: "none",
8699
+ fontWeight: 500,
8700
+ borderWidth: 1,
8701
+ hoverTransform: "none",
8702
+ hoverColor: "none"
8703
+ },
8704
+ variants: [
8705
+ {
8706
+ id: "primary",
8707
+ name: "Primary",
8708
+ enabled: true,
8709
+ priority: 1,
8710
+ background: { type: "transparent" },
8711
+ textColorToken: "text",
8712
+ borderRadius: "rounded-none",
8713
+ shadow: { elevation: "none", softness: null, position: "bottom" },
8714
+ sizes: {
8715
+ sm: { padding: "0.25rem 0" },
8716
+ md: { padding: "0.5rem 0" },
8717
+ lg: { padding: "0.625rem 0" },
8718
+ xl: { padding: "0.75rem 0" }
8719
+ },
8720
+ effects: {
8721
+ base: [
8722
+ { effectId: "border-bottom-grow", options: { height: 2, colorToken: "text", origin: "left" } }
8723
+ ]
8724
+ }
8725
+ },
8726
+ {
8727
+ id: "secondary",
8728
+ name: "Secondary",
8729
+ enabled: true,
8730
+ priority: 2,
8731
+ background: { type: "transparent" },
8732
+ textColorToken: "mutedText",
8733
+ borderRadius: "rounded-none",
8734
+ shadow: { elevation: "none", softness: null, position: "bottom" },
8735
+ sizes: {
8736
+ sm: { padding: "0.25rem 0" },
8737
+ md: { padding: "0.5rem 0" },
8738
+ lg: { padding: "0.625rem 0" },
8739
+ xl: { padding: "0.75rem 0" }
8740
+ },
8741
+ effects: {
8742
+ base: [
8743
+ { effectId: "border-bottom-grow", options: { height: 1, colorToken: "mutedText", origin: "left" } }
8744
+ ]
8745
+ }
8746
+ },
8747
+ {
8748
+ id: "outline",
8749
+ name: "Outline",
8750
+ enabled: true,
8751
+ priority: 3,
8752
+ background: { type: "transparent" },
8753
+ textColorToken: "accent",
8754
+ borderRadius: "rounded-none",
8755
+ shadow: { elevation: "none", softness: null, position: "bottom" },
8756
+ sizes: {
8757
+ sm: { padding: "0.25rem 0" },
8758
+ md: { padding: "0.5rem 0" },
8759
+ lg: { padding: "0.625rem 0" },
8760
+ xl: { padding: "0.75rem 0" }
8761
+ },
8762
+ effects: {
8763
+ base: [
8764
+ { effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }
8765
+ ]
8766
+ }
8767
+ },
8768
+ {
8769
+ id: "ghost",
8770
+ name: "Ghost",
8771
+ enabled: true,
8772
+ priority: 3,
8773
+ background: { type: "transparent" },
8774
+ textColorToken: "mutedText",
8775
+ borderRadius: "rounded-none",
8776
+ shadow: { elevation: "none", softness: null, position: "bottom" },
8777
+ sizes: {
8778
+ sm: { padding: "0.25rem 0" },
8779
+ md: { padding: "0.5rem 0" },
8780
+ lg: { padding: "0.625rem 0" },
8781
+ xl: { padding: "0.75rem 0" }
8782
+ },
8783
+ effects: {
8784
+ hover: [{ effectId: "opacity-reduce", options: { reduction: -20 } }]
8785
+ }
8786
+ }
8787
+ ]
8788
+ }
8789
+ });
8790
+ }
8791
+ });
8792
+
8793
+ // ../theme-core/src/buttons/personalities/ink-stamp.ts
8794
+ var inkStamp;
8795
+ var init_ink_stamp = __esm({
8796
+ "../theme-core/src/buttons/personalities/ink-stamp.ts"() {
8797
+ "use strict";
8798
+ init_types5();
8799
+ inkStamp = defineButtonPersonality({
8800
+ id: "ink-stamp",
8801
+ name: "Ink Stamp",
8802
+ description: "Hand-stamped block-print buttons with a slight lift on hover.",
8803
+ tags: { tone: "bold", energy: "vibrant", motion: "standard", era: "organic" },
8804
+ buttonSystem: {
8805
+ global: {
8806
+ cornerStyle: "rounded",
8807
+ shadow: "none",
8808
+ textTransform: "uppercase",
8809
+ fontWeight: 600,
8810
+ borderWidth: 1,
8811
+ hoverTransform: "none",
8812
+ hoverColor: "none",
8813
+ letterSpacing: "loose"
8814
+ },
8815
+ sizes: {
8816
+ sm: { padding: "0.5rem 1.25rem", fontSize: "text-xs" },
8817
+ md: { padding: "0.75rem 1.75rem", fontSize: "text-sm" },
8818
+ lg: { padding: "0.875rem 2.25rem", fontSize: "text-base" },
8819
+ xl: { padding: "1.125rem 2.75rem", fontSize: "text-lg" }
8820
+ },
8821
+ variants: [
8822
+ {
8823
+ id: "primary",
8824
+ name: "Primary",
8825
+ enabled: true,
8826
+ priority: 1,
8827
+ background: { type: "solid", colorToken: "primary" },
8828
+ textColorToken: "primaryForeground",
8829
+ borderRadius: "rounded-md",
8830
+ effects: {
8831
+ hover: [
8832
+ { effectId: "drop-shadow", options: { intensity: "medium" } },
8833
+ { effectId: "scale-up", options: { scale: "1.02" } }
8834
+ ],
8835
+ active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
8836
+ }
8837
+ },
8838
+ {
8839
+ id: "secondary",
8840
+ name: "Secondary",
8841
+ enabled: true,
8842
+ priority: 2,
8843
+ background: { type: "transparent" },
8844
+ textColorToken: "primary",
8845
+ borderRadius: "rounded-md",
8846
+ border: { widthClass: "border-2", colorToken: "primary" },
8847
+ effects: {
8848
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
8849
+ }
8850
+ },
8851
+ {
8852
+ id: "outline",
8853
+ name: "Outline",
8854
+ enabled: true,
8855
+ priority: 3,
8856
+ background: { type: "transparent" },
8857
+ textColorToken: "text",
8858
+ borderRadius: "rounded-md",
8859
+ border: { widthClass: "border-2", colorToken: "border" },
8860
+ effects: {
8861
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
8862
+ }
8863
+ },
8864
+ {
8865
+ id: "ghost",
8866
+ name: "Ghost",
8867
+ enabled: true,
8868
+ priority: 3,
8869
+ background: { type: "transparent" },
8870
+ textColorToken: "accent",
8871
+ borderRadius: "rounded-none",
8872
+ sizes: {
8873
+ sm: { padding: "0.375rem 0", fontSize: "text-xs" },
8874
+ md: { padding: "0.5rem 0", fontSize: "text-sm" },
8875
+ lg: { padding: "0.625rem 0", fontSize: "text-base" },
8876
+ xl: { padding: "0.75rem 0", fontSize: "text-lg" }
8877
+ },
8878
+ effects: {
8879
+ base: [{ effectId: "border-bottom-grow", options: { height: 1, colorToken: "accent", origin: "left" } }]
8880
+ }
8881
+ }
8882
+ ]
8883
+ }
8884
+ });
8885
+ }
8886
+ });
8887
+
8888
+ // ../theme-core/src/buttons/personalities/pebble.ts
8889
+ var pebble;
8890
+ var init_pebble = __esm({
8891
+ "../theme-core/src/buttons/personalities/pebble.ts"() {
8892
+ "use strict";
8893
+ init_types5();
8894
+ pebble = defineButtonPersonality({
8895
+ id: "pebble",
8896
+ name: "Pebble",
8897
+ description: "Generous pill buttons with a soft hover lift.",
8898
+ tags: { tone: "classic", energy: "calm", motion: "standard", era: "organic" },
8899
+ buttonSystem: {
8900
+ global: {
8901
+ cornerStyle: "pill",
8902
+ shadow: "none",
8903
+ textTransform: "none",
8904
+ fontWeight: 500,
8905
+ borderWidth: 2,
8906
+ hoverTransform: "none",
8907
+ hoverColor: "none"
8908
+ },
8909
+ sizes: {
8910
+ sm: { padding: "0.625rem 1.75rem", fontSize: "text-sm" },
8911
+ md: { padding: "0.875rem 2.25rem" },
8912
+ lg: { padding: "1.125rem 2.75rem", fontSize: "text-lg" },
8913
+ xl: { padding: "1.5rem 3.5rem", fontSize: "text-xl" }
8914
+ },
8915
+ variants: [
8916
+ {
8917
+ id: "primary",
8918
+ name: "Primary",
8919
+ enabled: true,
8920
+ priority: 1,
8921
+ background: { type: "solid", colorToken: "primary" },
8922
+ textColorToken: "primaryForeground",
8923
+ borderRadius: "rounded-full",
8924
+ effects: {
8925
+ hover: [
8926
+ { effectId: "scale-up", options: { scale: "1.03" } },
8927
+ { effectId: "drop-shadow", options: { intensity: "medium" } }
8928
+ ]
8929
+ }
8930
+ },
8931
+ {
8932
+ id: "secondary",
8933
+ name: "Secondary",
8934
+ enabled: true,
8935
+ priority: 2,
8936
+ background: { type: "transparent" },
8937
+ textColorToken: "primary",
8938
+ borderRadius: "rounded-full",
8939
+ border: { widthClass: "border-2", colorToken: "accent" },
8940
+ effects: {
8941
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "accent" } }]
8942
+ }
8943
+ },
8944
+ {
8945
+ id: "outline",
8946
+ name: "Outline",
8947
+ enabled: true,
8948
+ priority: 3,
8949
+ background: { type: "transparent" },
8950
+ textColorToken: "text",
8951
+ borderRadius: "rounded-full",
8952
+ border: { widthClass: "border", colorToken: "border" },
8953
+ effects: {
8954
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
8955
+ }
8956
+ },
8957
+ {
8958
+ id: "ghost",
8959
+ name: "Ghost",
8960
+ enabled: true,
8961
+ priority: 3,
8962
+ background: { type: "transparent" },
8963
+ textColorToken: "primary",
8964
+ borderRadius: "rounded-full",
8965
+ sizes: {
8966
+ sm: { padding: "0.375rem 0.875rem", fontSize: "text-sm" },
8967
+ md: { padding: "0.5rem 1rem" },
8968
+ lg: { padding: "0.625rem 1.25rem", fontSize: "text-lg" },
8969
+ xl: { padding: "0.75rem 1.5rem", fontSize: "text-xl" }
8970
+ },
8971
+ effects: {
8972
+ hover: [{ effectId: "opacity-reduce", options: { reduction: 30 } }]
8973
+ }
8974
+ }
8975
+ ]
8976
+ }
8977
+ });
8978
+ }
8979
+ });
8980
+
8981
+ // ../theme-core/src/buttons/personalities/soft-pill.ts
8982
+ var softPill;
8983
+ var init_soft_pill = __esm({
8984
+ "../theme-core/src/buttons/personalities/soft-pill.ts"() {
8985
+ "use strict";
8986
+ init_types5();
8987
+ softPill = defineButtonPersonality({
8988
+ id: "soft-pill",
8989
+ name: "Soft Pill",
8990
+ description: "Rounded pills with a gentle lift on hover. Quietly modern.",
8991
+ tags: { tone: "classic", energy: "calm", motion: "subtle", era: "organic" },
8992
+ buttonSystem: {
8993
+ global: {
8994
+ cornerStyle: "pill",
8995
+ shadow: "low",
8996
+ textTransform: "none",
8997
+ fontWeight: 500,
8998
+ borderWidth: 2,
8999
+ hoverTransform: "lift",
9000
+ hoverColor: "none"
9001
+ },
9002
+ variants: [
9003
+ {
9004
+ id: "primary",
9005
+ name: "Primary",
9006
+ enabled: true,
9007
+ priority: 1,
9008
+ background: { type: "solid", colorToken: "primary" },
9009
+ textColorToken: "primaryForeground",
9010
+ borderRadius: "rounded-full",
9011
+ shadow: { elevation: "low", softness: "soft", position: "bottom" },
9012
+ effects: {
9013
+ hover: [{ effectId: "lift", options: { translateY: "-1px" } }],
9014
+ active: [{ effectId: "scale-down", options: { scale: "0.98" } }]
9015
+ }
9016
+ },
9017
+ {
9018
+ id: "secondary",
9019
+ name: "Secondary",
9020
+ enabled: true,
9021
+ priority: 2,
9022
+ background: { type: "transparent" },
9023
+ textColorToken: "primary",
9024
+ borderRadius: "rounded-full",
9025
+ border: { widthClass: "border-2", colorToken: "primary" },
9026
+ effects: {
9027
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
9028
+ }
9029
+ },
9030
+ {
9031
+ id: "outline",
9032
+ name: "Outline",
9033
+ enabled: true,
9034
+ priority: 3,
9035
+ background: { type: "transparent" },
9036
+ textColorToken: "text",
9037
+ borderRadius: "rounded-full",
9038
+ border: { widthClass: "border", colorToken: "border" },
9039
+ effects: {
9040
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
9041
+ }
9042
+ },
9043
+ {
9044
+ id: "ghost",
9045
+ name: "Ghost",
9046
+ enabled: true,
9047
+ priority: 3,
9048
+ background: { type: "transparent" },
9049
+ textColorToken: "text",
9050
+ borderRadius: "rounded-full",
9051
+ effects: {
9052
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
9053
+ }
9054
+ }
9055
+ ]
9056
+ }
9057
+ });
9058
+ }
9059
+ });
9060
+
9061
+ // ../theme-core/src/buttons/personalities/index.ts
9062
+ var buttonPersonalities, personalitiesById;
9063
+ var init_personalities = __esm({
9064
+ "../theme-core/src/buttons/personalities/index.ts"() {
9065
+ "use strict";
9066
+ init_brushed_wash();
9067
+ init_confident_chip();
9068
+ init_editorial_link();
9069
+ init_ink_stamp();
9070
+ init_pebble();
9071
+ init_soft_pill();
9072
+ init_types5();
9073
+ buttonPersonalities = [
9074
+ softPill,
9075
+ confidentChip,
9076
+ editorialLink,
9077
+ pebble,
9078
+ inkStamp,
9079
+ brushedWash
9080
+ ];
9081
+ personalitiesById = new Map(
9082
+ buttonPersonalities.map((p) => [p.id, p])
9083
+ );
9084
+ }
9085
+ });
9086
+
9087
+ // ../theme-core/src/buttons/effects/types.ts
9088
+ var init_types6 = __esm({
9089
+ "../theme-core/src/buttons/effects/types.ts"() {
8122
9090
  "use strict";
8123
- "use client";
8124
- init_client();
8125
- BlockApiContext = getGlobalContext();
8126
9091
  }
8127
9092
  });
8128
9093
 
8129
- // ../blocks/src/system/runtime/api/index.ts
8130
- var init_api = __esm({
8131
- "../blocks/src/system/runtime/api/index.ts"() {
9094
+ // ../theme-core/src/buttons/core.ts
9095
+ var init_core = __esm({
9096
+ "../theme-core/src/buttons/core.ts"() {
8132
9097
  "use strict";
8133
- init_client();
8134
- init_context();
9098
+ }
9099
+ });
9100
+
9101
+ // ../theme-core/src/buttons/index.ts
9102
+ var init_buttons = __esm({
9103
+ "../theme-core/src/buttons/index.ts"() {
9104
+ "use strict";
9105
+ init_types4();
9106
+ init_generateButtonCss();
9107
+ init_generateDefaultButtonSystem();
9108
+ init_constants();
9109
+ init_presets();
9110
+ init_personalities();
9111
+ init_types6();
9112
+ init_registry();
9113
+ init_transform();
9114
+ init_core();
8135
9115
  }
8136
9116
  });
8137
9117
 
@@ -8675,12 +9655,12 @@ var init_carousel_shared = __esm({
8675
9655
  });
8676
9656
 
8677
9657
  // ../theme-core/src/accordions/types.ts
8678
- import { z as z21 } from "zod";
9658
+ import { z as z24 } from "zod";
8679
9659
  var accordionIconSchema, accordionSystemSchema;
8680
- var init_types4 = __esm({
9660
+ var init_types7 = __esm({
8681
9661
  "../theme-core/src/accordions/types.ts"() {
8682
9662
  "use strict";
8683
- accordionIconSchema = z21.enum([
9663
+ accordionIconSchema = z24.enum([
8684
9664
  "plus-minus",
8685
9665
  // + becomes - (swap or rotate 90°)
8686
9666
  "chevron",
@@ -8692,49 +9672,49 @@ var init_types4 = __esm({
8692
9672
  "circle-plus-minus"
8693
9673
  // ⊕ becomes ⊖ (swap with fade)
8694
9674
  ]);
8695
- accordionSystemSchema = z21.object({
9675
+ accordionSystemSchema = z24.object({
8696
9676
  // Visual styling (solid color only - gradients can be added later if needed)
8697
- background: z21.object({
8698
- type: z21.literal("solid"),
8699
- colorToken: z21.string()
9677
+ background: z24.object({
9678
+ type: z24.literal("solid"),
9679
+ colorToken: z24.string()
8700
9680
  }),
8701
9681
  // Spacing (padding inside items)
8702
- spacing: z21.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
9682
+ spacing: z24.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]),
8703
9683
  // Border radius (null = inherit from theme.corners)
8704
- corners: z21.enum(["square", "soft", "rounded", "pill"]).nullable(),
9684
+ corners: z24.enum(["square", "soft", "rounded", "pill"]).nullable(),
8705
9685
  // Border styling (null = inherit from theme.border)
8706
- border: z21.object({
8707
- widthClass: z21.string(),
9686
+ border: z24.object({
9687
+ widthClass: z24.string(),
8708
9688
  // e.g., 'border', 'border-2', 'border-0'
8709
- colorToken: z21.string()
9689
+ colorToken: z24.string()
8710
9690
  }).nullable(),
8711
9691
  // Shadow (null = inherit from theme.shadow)
8712
- shadow: z21.object({
8713
- elevation: z21.enum(["none", "low", "medium", "high"]),
8714
- softness: z21.enum(["soft", "crisp", "hard"]).nullable(),
8715
- position: z21.enum(["bottom", "bottom-right"])
9692
+ shadow: z24.object({
9693
+ elevation: z24.enum(["none", "low", "medium", "high"]),
9694
+ softness: z24.enum(["soft", "crisp", "hard"]).nullable(),
9695
+ position: z24.enum(["bottom", "bottom-right"])
8716
9696
  }).nullable(),
8717
9697
  // Icon style and animation
8718
- icon: z21.object({
9698
+ icon: z24.object({
8719
9699
  style: accordionIconSchema,
8720
- position: z21.enum(["left", "right"]),
8721
- size: z21.enum(["sm", "md", "lg"])
9700
+ position: z24.enum(["left", "right"]),
9701
+ size: z24.enum(["sm", "md", "lg"])
8722
9702
  }),
8723
9703
  // Trigger (question) styling
8724
- trigger: z21.object({
8725
- textColorToken: z21.string(),
8726
- fontWeight: z21.enum(["regular", "medium", "semibold", "bold"]).nullable()
9704
+ trigger: z24.object({
9705
+ textColorToken: z24.string(),
9706
+ fontWeight: z24.enum(["regular", "medium", "semibold", "bold"]).nullable()
8727
9707
  // null = inherit from theme
8728
9708
  }),
8729
9709
  // Hover state styling
8730
- hover: z21.object({
8731
- backgroundColorToken: z21.string().optional(),
8732
- textColorToken: z21.string().optional(),
8733
- borderColorToken: z21.string().optional()
9710
+ hover: z24.object({
9711
+ backgroundColorToken: z24.string().optional(),
9712
+ textColorToken: z24.string().optional(),
9713
+ borderColorToken: z24.string().optional()
8734
9714
  }),
8735
9715
  // Content (answer) styling
8736
- content: z21.object({
8737
- textColorToken: z21.string()
9716
+ content: z24.object({
9717
+ textColorToken: z24.string()
8738
9718
  })
8739
9719
  });
8740
9720
  }
@@ -9110,8 +10090,9 @@ function normalizeBoolean(value, fallback) {
9110
10090
  return fallback;
9111
10091
  }
9112
10092
  function normalizeLocationMapValueRecord(record) {
10093
+ const addressText = typeof record.addressText === "string" ? record.addressText : typeof record.displayAddress === "string" ? record.displayAddress : null;
9113
10094
  const normalized = {
9114
- addressText: normalizeLocationAddressText(typeof record.addressText === "string" ? record.addressText : null),
10095
+ addressText: normalizeLocationAddressText(addressText),
9115
10096
  lat: normalizeOptionalNumber(record.lat),
9116
10097
  lng: normalizeOptionalNumber(record.lng)
9117
10098
  };
@@ -9126,11 +10107,49 @@ function normalizeLocationMapValue(value) {
9126
10107
  }
9127
10108
  return normalizeLocationMapValueRecord(value);
9128
10109
  }
9129
- function normalizeLocationMapProps(input) {
10110
+ function normalizeLocationMapSource(value) {
10111
+ return value === "business_address" || value === "venue" ? value : "custom";
10112
+ }
10113
+ function resolveLocationMapLocation(input) {
10114
+ const source = normalizeLocationMapSource(input.locationSource);
10115
+ if (source === "business_address") {
10116
+ const locationValue2 = normalizeLocationMapValue(input.businessAddress ?? input.location);
10117
+ return locationValue2 ? { kind: "business_address", locationValue: locationValue2 } : { kind: "unresolved", source, reason: "missing_business_address" };
10118
+ }
10119
+ if (source === "venue") {
10120
+ const venueId = typeof input.venueId === "string" && input.venueId.trim() ? input.venueId.trim() : null;
10121
+ if (!venueId) {
10122
+ return { kind: "unresolved", source, reason: "missing_venue_id" };
10123
+ }
10124
+ const locationValue2 = input.venuesById ? normalizeLocationMapValue(input.venuesById[venueId] ?? null) : null;
10125
+ return locationValue2 ? { kind: "venue", venueId, locationValue: locationValue2 } : { kind: "unresolved", source, reason: "missing_venue_location" };
10126
+ }
9130
10127
  const locationValue = normalizeLocationMapValue(input.location);
10128
+ return locationValue ? { kind: "custom", locationValue } : { kind: "unresolved", source, reason: "missing_custom_location" };
10129
+ }
10130
+ function describeUnresolvedLocationMapLocation(resolvedLocation) {
10131
+ if (resolvedLocation.kind !== "unresolved") {
10132
+ return null;
10133
+ }
10134
+ switch (resolvedLocation.reason) {
10135
+ case "missing_business_address":
10136
+ return "Business address details are not configured yet.";
10137
+ case "missing_venue_id":
10138
+ return "Choose a venue to show this map.";
10139
+ case "missing_venue_location":
10140
+ return "The selected venue does not have location details yet.";
10141
+ case "missing_custom_location":
10142
+ return "Location details coming soon.";
10143
+ }
10144
+ }
10145
+ function normalizeLocationMapProps(input) {
10146
+ const resolvedLocation = resolveLocationMapLocation(input);
10147
+ const locationValue = resolvedLocation.kind === "unresolved" ? null : resolvedLocation.locationValue;
9131
10148
  const directionsLabel = normalizeLocationAddressText(input.directionsLabel) ?? LOCATION_MAP_DEFAULTS.directionsLabel;
9132
10149
  return {
10150
+ resolvedLocation,
9133
10151
  locationValue,
10152
+ unresolvedMessage: describeUnresolvedLocationMapLocation(resolvedLocation),
9134
10153
  addressText: locationValue?.addressText ?? null,
9135
10154
  location: toLocationCoordinates(locationValue),
9136
10155
  zoom: Math.min(
@@ -9192,11 +10211,12 @@ function LocationMapView({
9192
10211
  showAddressText,
9193
10212
  showDirections,
9194
10213
  directionsLabel,
10214
+ unresolvedMessage,
9195
10215
  renderMap
9196
10216
  }) {
9197
10217
  const directionsUrl = buildGoogleMapsDirectionsUrl({ addressText, location: location2 });
9198
10218
  if (!location2 && !addressText && !directionsUrl) {
9199
- return /* @__PURE__ */ jsx13("p", { className: "rb-caption", style: textColorStyle("mutedText"), children: "Location details coming soon." });
10219
+ return /* @__PURE__ */ jsx13("p", { className: "rb-caption", style: textColorStyle("mutedText"), children: unresolvedMessage ?? "Location details coming soon." });
9200
10220
  }
9201
10221
  return /* @__PURE__ */ jsxs9("div", { className: "rb-flex rb-flex-col rb-gap-4 rb-text-left", children: [
9202
10222
  location2 && renderMap ? renderMap({
@@ -9819,7 +10839,7 @@ function ze() {
9819
10839
  /* @__PURE__ */ Te(P)
9820
10840
  );
9821
10841
  }
9822
- function z22(e) {
10842
+ function z25(e) {
9823
10843
  if (L) {
9824
10844
  if (/* @__PURE__ */ Te(P) !== null)
9825
10845
  throw Tt(), Je;
@@ -11848,12 +12868,12 @@ function ha(e, t) {
11848
12868
  var mt = we(Dr, 2);
11849
12869
  let Pr;
11850
12870
  var We = X(mt);
11851
- en(We), We.__change = ui, z22(mt);
12871
+ en(We), We.__change = ui, z25(mt);
11852
12872
  var Ut = we(mt, 2), wi = X(Ut);
11853
12873
  {
11854
12874
  var pi = (n) => {
11855
12875
  var u = na(), _ = Gr(u), y = X(_);
11856
- Ge(y, () => c(re).verified), z22(_);
12876
+ Ge(y, () => c(re).verified), z25(_);
11857
12877
  var T = we(_, 2);
11858
12878
  en(T), Pe(() => {
11859
12879
  se(T, "name", V()), jo(T, c(Le));
@@ -11862,10 +12882,10 @@ function ha(e, t) {
11862
12882
  {
11863
12883
  var _ = (T) => {
11864
12884
  var E = ia(), p = X(E);
11865
- Ge(p, () => c(re).verifying), z22(E), ne(T, E);
12885
+ Ge(p, () => c(re).verifying), z25(E), ne(T, E);
11866
12886
  }, y = (T) => {
11867
12887
  var E = oa(), p = X(E);
11868
- Ge(p, () => c(re).label), z22(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
12888
+ Ge(p, () => c(re).label), z25(E), Pe(() => se(E, "for", c(cr))), ne(T, E);
11869
12889
  };
11870
12890
  $e(
11871
12891
  n,
@@ -11880,18 +12900,18 @@ function ha(e, t) {
11880
12900
  c(C) === b.VERIFIED ? n(pi) : n(bi, false);
11881
12901
  });
11882
12902
  }
11883
- z22(Ut);
12903
+ z25(Ut);
11884
12904
  var yi = we(Ut, 2);
11885
12905
  {
11886
12906
  var Ei = (n) => {
11887
12907
  var u = aa(), _ = X(u);
11888
- se(_, "href", sr), z22(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
12908
+ se(_, "href", sr), z25(u), Pe(() => se(_, "aria-label", c(re).ariaLinkLabel)), ne(n, u);
11889
12909
  };
11890
12910
  $e(yi, (n) => {
11891
12911
  (N() !== true || c(Dt)) && n(Ei);
11892
12912
  });
11893
12913
  }
11894
- z22(Mt);
12914
+ z25(Mt);
11895
12915
  var Or = we(Mt, 2);
11896
12916
  {
11897
12917
  var xi = (n) => {
@@ -11899,16 +12919,16 @@ function ha(e, t) {
11899
12919
  {
11900
12920
  var y = (E) => {
11901
12921
  var p = la(), x = X(p);
11902
- Ge(x, () => c(re).expired), z22(p), Pe(() => se(p, "title", c(He))), ne(E, p);
12922
+ Ge(x, () => c(re).expired), z25(p), Pe(() => se(p, "title", c(He))), ne(E, p);
11903
12923
  }, T = (E) => {
11904
12924
  var p = sa(), x = X(p);
11905
- Ge(x, () => c(re).error), z22(p), Pe(() => se(p, "title", c(He))), ne(E, p);
12925
+ Ge(x, () => c(re).error), z25(p), Pe(() => se(p, "title", c(He))), ne(E, p);
11906
12926
  };
11907
12927
  $e(_, (E) => {
11908
12928
  c(C) === b.EXPIRED ? E(y) : E(T, false);
11909
12929
  });
11910
12930
  }
11911
- z22(u), ne(n, u);
12931
+ z25(u), ne(n, u);
11912
12932
  };
11913
12933
  $e(Or, (n) => {
11914
12934
  (c(He) || c(C) === b.EXPIRED) && n(xi);
@@ -11918,7 +12938,7 @@ function ha(e, t) {
11918
12938
  {
11919
12939
  var $i = (n) => {
11920
12940
  var u = ua(), _ = X(u), y = X(_);
11921
- Ge(y, () => c(re).footer), z22(_), z22(u), ne(n, u);
12941
+ Ge(y, () => c(re).footer), z25(_), z25(u), ne(n, u);
11922
12942
  };
11923
12943
  $e(Fr, (n) => {
11924
12944
  c(re).footer && (k() !== true || c(Dt)) && n($i);
@@ -11934,7 +12954,7 @@ function ha(e, t) {
11934
12954
  v() && n(Ci);
11935
12955
  });
11936
12956
  }
11937
- return z22(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
12957
+ return z25(ot), nn(ot, (n) => D(B, n), () => c(B)), Pe(
11938
12958
  (n) => {
11939
12959
  se(ot, "data-state", c(C)), se(ot, "data-floating", v()), Pr = Fo(mt, 1, "altcha-checkbox", null, Pr, n), se(We, "id", c(cr)), We.required = r2() !== "onsubmit" && (!v() || r2() !== "off");
11940
12960
  },
@@ -14033,7 +15053,7 @@ var init_bookingPaymentOptionCopy = __esm({
14033
15053
 
14034
15054
  // ../blocks/src/system/runtime/shared/types.ts
14035
15055
  var DEFAULT_CURRENCY;
14036
- var init_types5 = __esm({
15056
+ var init_types8 = __esm({
14037
15057
  "../blocks/src/system/runtime/shared/types.ts"() {
14038
15058
  "use strict";
14039
15059
  DEFAULT_CURRENCY = "GBP";
@@ -14050,7 +15070,7 @@ function formatPrice(cents, currency = DEFAULT_CURRENCY, locale) {
14050
15070
  var init_formatting = __esm({
14051
15071
  "../blocks/src/system/runtime/shared/utils/formatting.ts"() {
14052
15072
  "use strict";
14053
- init_types5();
15073
+ init_types8();
14054
15074
  }
14055
15075
  });
14056
15076
 
@@ -16533,7 +17553,7 @@ var init_registrationStateMachine = __esm({
16533
17553
  });
16534
17554
 
16535
17555
  // ../blocks/src/system/runtime/nodes/event-registration/types.ts
16536
- var init_types6 = __esm({
17556
+ var init_types9 = __esm({
16537
17557
  "../blocks/src/system/runtime/nodes/event-registration/types.ts"() {
16538
17558
  "use strict";
16539
17559
  }
@@ -18047,7 +19067,7 @@ var init_VerifyingTimeoutStep = __esm({
18047
19067
  var init_event_registration = __esm({
18048
19068
  "../blocks/src/system/runtime/nodes/event-registration/index.ts"() {
18049
19069
  "use strict";
18050
- init_types6();
19070
+ init_types9();
18051
19071
  init_utils3();
18052
19072
  init_hooks();
18053
19073
  init_sessionStorage();
@@ -21844,6 +22864,7 @@ function LocationMapClient(props) {
21844
22864
  showAddressText: normalized.showAddressText,
21845
22865
  showDirections: normalized.showDirections,
21846
22866
  directionsLabel: normalized.directionsLabel,
22867
+ unresolvedMessage: normalized.unresolvedMessage,
21847
22868
  renderMap: ({ addressText, className, height, location: location2, zoom }) => /* @__PURE__ */ jsx75(
21848
22869
  LeafletStaticMap,
21849
22870
  {
@@ -28712,153 +29733,9 @@ var init_generateCssVars = __esm({
28712
29733
  });
28713
29734
 
28714
29735
  // ../theme-core/src/styles/shadow.ts
28715
- var init_shadow = __esm({
28716
- "../theme-core/src/styles/shadow.ts"() {
28717
- "use strict";
28718
- }
28719
- });
28720
-
28721
- // ../theme-core/src/tokens/resolver.ts
28722
- var init_resolver = __esm({
28723
- "../theme-core/src/tokens/resolver.ts"() {
28724
- "use strict";
28725
- }
28726
- });
28727
-
28728
- // ../theme-core/src/buttons/effects/presets/background.ts
28729
- var init_background = __esm({
28730
- "../theme-core/src/buttons/effects/presets/background.ts"() {
28731
- "use strict";
28732
- }
28733
- });
28734
-
28735
- // ../theme-core/src/buttons/effects/cssUtils.ts
28736
- var init_cssUtils = __esm({
28737
- "../theme-core/src/buttons/effects/cssUtils.ts"() {
28738
- "use strict";
28739
- }
28740
- });
28741
-
28742
- // ../theme-core/src/buttons/effects/presets/shadow.ts
28743
29736
  var init_shadow2 = __esm({
28744
- "../theme-core/src/buttons/effects/presets/shadow.ts"() {
28745
- "use strict";
28746
- init_cssUtils();
28747
- }
28748
- });
28749
-
28750
- // ../theme-core/src/buttons/effects/presets/transform.ts
28751
- var init_transform = __esm({
28752
- "../theme-core/src/buttons/effects/presets/transform.ts"() {
28753
- "use strict";
28754
- init_cssUtils();
28755
- }
28756
- });
28757
-
28758
- // ../theme-core/src/buttons/effects/presets/overlay.ts
28759
- var init_overlay = __esm({
28760
- "../theme-core/src/buttons/effects/presets/overlay.ts"() {
28761
- "use strict";
28762
- }
28763
- });
28764
-
28765
- // ../theme-core/src/buttons/effects/presets/text.ts
28766
- var init_text = __esm({
28767
- "../theme-core/src/buttons/effects/presets/text.ts"() {
28768
- "use strict";
28769
- }
28770
- });
28771
-
28772
- // ../theme-core/src/buttons/effects/presets/border.ts
28773
- var init_border = __esm({
28774
- "../theme-core/src/buttons/effects/presets/border.ts"() {
28775
- "use strict";
28776
- }
28777
- });
28778
-
28779
- // ../theme-core/src/buttons/effects/presets/animation.ts
28780
- var init_animation = __esm({
28781
- "../theme-core/src/buttons/effects/presets/animation.ts"() {
28782
- "use strict";
28783
- }
28784
- });
28785
-
28786
- // ../theme-core/src/interactive/effects/nav-underline.ts
28787
- var init_nav_underline = __esm({
28788
- "../theme-core/src/interactive/effects/nav-underline.ts"() {
28789
- "use strict";
28790
- }
28791
- });
28792
-
28793
- // ../theme-core/src/interactive/effects/nav-frosted.ts
28794
- var init_nav_frosted = __esm({
28795
- "../theme-core/src/interactive/effects/nav-frosted.ts"() {
28796
- "use strict";
28797
- }
28798
- });
28799
-
28800
- // ../theme-core/src/interactive/effects/index.ts
28801
- var init_effects = __esm({
28802
- "../theme-core/src/interactive/effects/index.ts"() {
28803
- "use strict";
28804
- init_nav_underline();
28805
- init_nav_frosted();
28806
- }
28807
- });
28808
-
28809
- // ../theme-core/src/buttons/effects/registry.ts
28810
- var init_registry = __esm({
28811
- "../theme-core/src/buttons/effects/registry.ts"() {
28812
- "use strict";
28813
- init_background();
28814
- init_shadow2();
28815
- init_transform();
28816
- init_overlay();
28817
- init_text();
28818
- init_border();
28819
- init_animation();
28820
- init_effects();
28821
- }
28822
- });
28823
-
28824
- // ../theme-core/src/interactive/generateEffectsCSS.ts
28825
- var init_generateEffectsCSS = __esm({
28826
- "../theme-core/src/interactive/generateEffectsCSS.ts"() {
28827
- "use strict";
28828
- init_registry();
28829
- }
28830
- });
28831
-
28832
- // ../theme-core/src/buttons/constants.ts
28833
- var init_constants = __esm({
28834
- "../theme-core/src/buttons/constants.ts"() {
28835
- "use strict";
28836
- }
28837
- });
28838
-
28839
- // ../theme-core/src/buttons/utils/contrast.ts
28840
- var init_contrast2 = __esm({
28841
- "../theme-core/src/buttons/utils/contrast.ts"() {
28842
- "use strict";
28843
- }
28844
- });
28845
-
28846
- // ../theme-core/src/buttons/generateDefaultButtonSystem.ts
28847
- var init_generateDefaultButtonSystem = __esm({
28848
- "../theme-core/src/buttons/generateDefaultButtonSystem.ts"() {
28849
- "use strict";
28850
- init_contrast2();
28851
- }
28852
- });
28853
-
28854
- // ../theme-core/src/buttons/generateButtonCss.ts
28855
- var init_generateButtonCss = __esm({
28856
- "../theme-core/src/buttons/generateButtonCss.ts"() {
29737
+ "../theme-core/src/styles/shadow.ts"() {
28857
29738
  "use strict";
28858
- init_resolver();
28859
- init_generateEffectsCSS();
28860
- init_constants();
28861
- init_generateDefaultButtonSystem();
28862
29739
  }
28863
29740
  });
28864
29741
 
@@ -28897,7 +29774,7 @@ var init_border2 = __esm({
28897
29774
  var init_generateAccordionCss = __esm({
28898
29775
  "../theme-core/src/accordions/generateAccordionCss.ts"() {
28899
29776
  "use strict";
28900
- init_types4();
29777
+ init_types7();
28901
29778
  init_constants2();
28902
29779
  init_border2();
28903
29780
  }
@@ -28911,66 +29788,66 @@ var init_defaults = __esm({
28911
29788
  });
28912
29789
 
28913
29790
  // ../theme-core/src/inputs/types.ts
28914
- import { z as z23 } from "zod";
29791
+ import { z as z26 } from "zod";
28915
29792
  var inputSystemSchema;
28916
- var init_types7 = __esm({
29793
+ var init_types10 = __esm({
28917
29794
  "../theme-core/src/inputs/types.ts"() {
28918
29795
  "use strict";
28919
- inputSystemSchema = z23.object({
29796
+ inputSystemSchema = z26.object({
28920
29797
  // Base styling (applied to all inputs)
28921
- base: z23.object({
28922
- background: z23.union([
28923
- z23.object({
28924
- type: z23.literal("solid"),
28925
- colorToken: z23.string()
29798
+ base: z26.object({
29799
+ background: z26.union([
29800
+ z26.object({
29801
+ type: z26.literal("solid"),
29802
+ colorToken: z26.string()
28926
29803
  }),
28927
- z23.object({
28928
- type: z23.literal("transparent")
29804
+ z26.object({
29805
+ type: z26.literal("transparent")
28929
29806
  })
28930
29807
  ]),
28931
- textColorToken: z23.string(),
28932
- border: z23.object({
28933
- widthClass: z23.string(),
29808
+ textColorToken: z26.string(),
29809
+ border: z26.object({
29810
+ widthClass: z26.string(),
28934
29811
  // e.g., 'border', 'border-2'
28935
- colorToken: z23.string(),
28936
- style: z23.enum(["all", "underline"]).optional()
29812
+ colorToken: z26.string(),
29813
+ style: z26.enum(["all", "underline"]).optional()
28937
29814
  }),
28938
- corners: z23.enum(["square", "soft", "rounded", "pill"]).nullable(),
29815
+ corners: z26.enum(["square", "soft", "rounded", "pill"]).nullable(),
28939
29816
  // null = inherit from theme.corners
28940
- shadow: z23.object({
28941
- elevation: z23.enum(["none", "low", "medium"]),
28942
- softness: z23.enum(["soft", "crisp", "hard"]).nullable()
29817
+ shadow: z26.object({
29818
+ elevation: z26.enum(["none", "low", "medium"]),
29819
+ softness: z26.enum(["soft", "crisp", "hard"]).nullable()
28943
29820
  }).nullable(),
28944
- spacing: z23.enum(["compact", "cozy", "medium", "comfortable"]),
29821
+ spacing: z26.enum(["compact", "cozy", "medium", "comfortable"]),
28945
29822
  // padding inside inputs
28946
- fontSize: z23.enum(["sm", "base", "lg"])
29823
+ fontSize: z26.enum(["sm", "base", "lg"])
28947
29824
  }),
28948
29825
  // Label styling
28949
- label: z23.object({
28950
- textColorToken: z23.string(),
28951
- fontWeight: z23.enum(["regular", "medium", "semibold", "bold", "black"]),
28952
- fontSize: z23.enum(["2xs", "xs", "sm", "base"]),
28953
- textTransform: z23.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
28954
- letterSpacing: z23.enum(["normal", "wide", "wider", "widest"]).optional(),
28955
- opacity: z23.number().min(0.2).max(1).optional()
29826
+ label: z26.object({
29827
+ textColorToken: z26.string(),
29828
+ fontWeight: z26.enum(["regular", "medium", "semibold", "bold", "black"]),
29829
+ fontSize: z26.enum(["2xs", "xs", "sm", "base"]),
29830
+ textTransform: z26.enum(["none", "uppercase", "lowercase", "capitalize"]).optional(),
29831
+ letterSpacing: z26.enum(["normal", "wide", "wider", "widest"]).optional(),
29832
+ opacity: z26.number().min(0.2).max(1).optional()
28956
29833
  }),
28957
29834
  // Focus state
28958
- focus: z23.object({
28959
- ringColorToken: z23.string(),
28960
- ringWidth: z23.enum(["0", "1", "2", "3"]),
28961
- borderColorToken: z23.string().optional()
29835
+ focus: z26.object({
29836
+ ringColorToken: z26.string(),
29837
+ ringWidth: z26.enum(["0", "1", "2", "3"]),
29838
+ borderColorToken: z26.string().optional()
28962
29839
  // Change border color on focus
28963
29840
  }),
28964
29841
  // Error state (for validation feedback)
28965
- error: z23.object({
28966
- borderColorToken: z23.string(),
28967
- textColorToken: z23.string()
29842
+ error: z26.object({
29843
+ borderColorToken: z26.string(),
29844
+ textColorToken: z26.string()
28968
29845
  }),
28969
29846
  // Disabled state
28970
- disabled: z23.object({
28971
- backgroundColorToken: z23.string(),
28972
- textColorToken: z23.string(),
28973
- opacity: z23.number().min(0.3).max(0.7)
29847
+ disabled: z26.object({
29848
+ backgroundColorToken: z26.string(),
29849
+ textColorToken: z26.string(),
29850
+ opacity: z26.number().min(0.3).max(0.7)
28974
29851
  })
28975
29852
  });
28976
29853
  }
@@ -28980,7 +29857,7 @@ var init_types7 = __esm({
28980
29857
  var init_generateInputCss = __esm({
28981
29858
  "../theme-core/src/inputs/generateInputCss.ts"() {
28982
29859
  "use strict";
28983
- init_types7();
29860
+ init_types10();
28984
29861
  init_constants();
28985
29862
  init_border2();
28986
29863
  }
@@ -28994,65 +29871,65 @@ var init_defaults2 = __esm({
28994
29871
  });
28995
29872
 
28996
29873
  // ../theme-core/src/interactive/baseSchema.ts
28997
- import { z as z24 } from "zod";
28998
- var interactiveTypographySchema, effectApplicationSchema, effectCompositionSchema;
29874
+ import { z as z27 } from "zod";
29875
+ var interactiveTypographySchema, effectApplicationSchema2, effectCompositionSchema;
28999
29876
  var init_baseSchema = __esm({
29000
29877
  "../theme-core/src/interactive/baseSchema.ts"() {
29001
29878
  "use strict";
29002
- interactiveTypographySchema = z24.object({
29879
+ interactiveTypographySchema = z27.object({
29003
29880
  /** Font family source */
29004
- typography: z24.enum(["body", "heading"]).default("body"),
29881
+ typography: z27.enum(["body", "heading"]).default("body"),
29005
29882
  /** Font weight */
29006
- fontWeight: z24.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
29883
+ fontWeight: z27.enum(["regular", "medium", "semibold", "bold"]).default("medium"),
29007
29884
  /** Text transform */
29008
- textTransform: z24.enum(["none", "uppercase", "capitalize"]).default("none"),
29885
+ textTransform: z27.enum(["none", "uppercase", "capitalize"]).default("none"),
29009
29886
  /** Italic style */
29010
- italic: z24.boolean().default(false)
29887
+ italic: z27.boolean().default(false)
29011
29888
  });
29012
- effectApplicationSchema = z24.object({
29889
+ effectApplicationSchema2 = z27.object({
29013
29890
  /** Effect preset ID */
29014
- effectId: z24.string(),
29891
+ effectId: z27.string(),
29015
29892
  /** User-provided customization options */
29016
- options: z24.record(z24.string(), z24.any()).optional()
29893
+ options: z27.record(z27.string(), z27.any()).optional()
29017
29894
  });
29018
- effectCompositionSchema = z24.object({
29895
+ effectCompositionSchema = z27.object({
29019
29896
  /** Effects always applied */
29020
- base: z24.array(effectApplicationSchema).optional(),
29897
+ base: z27.array(effectApplicationSchema2).optional(),
29021
29898
  /** Effects applied on hover */
29022
- hover: z24.array(effectApplicationSchema).optional(),
29899
+ hover: z27.array(effectApplicationSchema2).optional(),
29023
29900
  /** Effects applied on active/pressed */
29024
- active: z24.array(effectApplicationSchema).optional(),
29901
+ active: z27.array(effectApplicationSchema2).optional(),
29025
29902
  /** Effects applied on focus */
29026
- focus: z24.array(effectApplicationSchema).optional()
29903
+ focus: z27.array(effectApplicationSchema2).optional()
29027
29904
  });
29028
29905
  }
29029
29906
  });
29030
29907
 
29031
29908
  // ../theme-core/src/navigation/types.ts
29032
- import { z as z25 } from "zod";
29909
+ import { z as z28 } from "zod";
29033
29910
  var navLinkPaddingSchema, navLinkPaddingXSchema, navLinkBorderRadiusSchema, navLinkTextSizeSchema, navLinkLetterSpacingSchema, navLinkStyleSchema;
29034
- var init_types8 = __esm({
29911
+ var init_types11 = __esm({
29035
29912
  "../theme-core/src/navigation/types.ts"() {
29036
29913
  "use strict";
29037
29914
  init_baseSchema();
29038
- navLinkPaddingSchema = z25.enum(["none", "compact", "default"]);
29039
- navLinkPaddingXSchema = z25.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
29040
- navLinkBorderRadiusSchema = z25.enum(["none", "sm", "md", "full"]);
29041
- navLinkTextSizeSchema = z25.enum(["xs", "sm", "base", "lg"]);
29042
- navLinkLetterSpacingSchema = z25.enum(["normal", "wide", "wider", "widest"]);
29043
- navLinkStyleSchema = z25.object({
29915
+ navLinkPaddingSchema = z28.enum(["none", "compact", "default"]);
29916
+ navLinkPaddingXSchema = z28.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
29917
+ navLinkBorderRadiusSchema = z28.enum(["none", "sm", "md", "full"]);
29918
+ navLinkTextSizeSchema = z28.enum(["xs", "sm", "base", "lg"]);
29919
+ navLinkLetterSpacingSchema = z28.enum(["normal", "wide", "wider", "widest"]);
29920
+ navLinkStyleSchema = z28.object({
29044
29921
  /** Display name for the style */
29045
- name: z25.string().min(1).max(30).optional(),
29922
+ name: z28.string().min(1).max(30).optional(),
29046
29923
  /** Typography settings (inherited from interactive base) */
29047
29924
  ...interactiveTypographySchema.shape,
29048
29925
  /** Text color token */
29049
- colorToken: z25.string().default("text"),
29926
+ colorToken: z28.string().default("text"),
29050
29927
  /** Optional text size override */
29051
29928
  textSize: navLinkTextSizeSchema.optional(),
29052
29929
  /** Optional letter spacing override */
29053
29930
  letterSpacing: navLinkLetterSpacingSchema.optional(),
29054
29931
  /** Hover/active color token (for color-change effects) */
29055
- hoverColorToken: z25.string().nullable().optional(),
29932
+ hoverColorToken: z28.string().nullable().optional(),
29056
29933
  /** Padding preset */
29057
29934
  padding: navLinkPaddingSchema.default("compact"),
29058
29935
  /** Horizontal padding override (overrides horizontal component of padding preset) */
@@ -29076,7 +29953,7 @@ var init_generateBaseCSS = __esm({
29076
29953
  var init_generateNavLinkCSS = __esm({
29077
29954
  "../theme-core/src/navigation/generateNavLinkCSS.ts"() {
29078
29955
  "use strict";
29079
- init_types8();
29956
+ init_types11();
29080
29957
  init_generateBaseCSS();
29081
29958
  init_generateEffectsCSS();
29082
29959
  }
@@ -29084,7 +29961,7 @@ var init_generateNavLinkCSS = __esm({
29084
29961
 
29085
29962
  // ../theme-core/src/navigation/presets.ts
29086
29963
  var NAV_LINK_PRESETS, NAV_LINK_PRESET_IDS;
29087
- var init_presets = __esm({
29964
+ var init_presets2 = __esm({
29088
29965
  "../theme-core/src/navigation/presets.ts"() {
29089
29966
  "use strict";
29090
29967
  NAV_LINK_PRESETS = {
@@ -29233,19 +30110,19 @@ var init_presets = __esm({
29233
30110
  });
29234
30111
 
29235
30112
  // ../theme-core/src/shared/componentStyles.ts
29236
- import { z as z26 } from "zod";
30113
+ import { z as z29 } from "zod";
29237
30114
  var componentBorderSchema, componentShadowSchema;
29238
30115
  var init_componentStyles = __esm({
29239
30116
  "../theme-core/src/shared/componentStyles.ts"() {
29240
30117
  "use strict";
29241
- componentBorderSchema = z26.object({
29242
- width: z26.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
29243
- style: z26.enum(["solid", "dashed"]).default("solid"),
29244
- colorToken: z26.string().optional()
30118
+ componentBorderSchema = z29.object({
30119
+ width: z29.enum(["none", "hairline", "thin", "medium", "thick"]).default("none"),
30120
+ style: z29.enum(["solid", "dashed"]).default("solid"),
30121
+ colorToken: z29.string().optional()
29245
30122
  // defaults to "border" if not set
29246
30123
  });
29247
- componentShadowSchema = z26.object({
29248
- elevation: z26.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
30124
+ componentShadowSchema = z29.object({
30125
+ elevation: z29.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("sm")
29249
30126
  });
29250
30127
  }
29251
30128
  });
@@ -29264,7 +30141,7 @@ var init_generateHeaderCss = __esm({
29264
30141
  "use strict";
29265
30142
  init_resolver();
29266
30143
  init_generateNavLinkCSS();
29267
- init_presets();
30144
+ init_presets2();
29268
30145
  init_shared6();
29269
30146
  init_breakpoints();
29270
30147
  }
@@ -29284,7 +30161,7 @@ var init_generateFooterCss = __esm({
29284
30161
  "use strict";
29285
30162
  init_resolver();
29286
30163
  init_generateNavLinkCSS();
29287
- init_presets();
30164
+ init_presets2();
29288
30165
  }
29289
30166
  });
29290
30167
 
@@ -29938,7 +30815,7 @@ var init_blockOverrides = __esm({
29938
30815
  });
29939
30816
 
29940
30817
  // ../theme-core/src/customCss/validation.ts
29941
- import { z as z27 } from "zod";
30818
+ import { z as z30 } from "zod";
29942
30819
  function isForbiddenSelectorPart(part) {
29943
30820
  const normalized = part.toLowerCase().trim();
29944
30821
  if (!normalized) return true;
@@ -29990,38 +30867,38 @@ var init_validation3 = __esm({
29990
30867
  UNIVERSAL_SELECTOR = "*";
29991
30868
  REMOTE_URL_PATTERN = /url\s*\(\s*['"]?(https?:|\/\/)/i;
29992
30869
  JAVASCRIPT_URL_PATTERN = /javascript\s*:/i;
29993
- selectorSchema = z27.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
30870
+ selectorSchema = z30.string().min(1, "Selector cannot be empty").max(200, "Selector too long (max 200 characters)").refine(
29994
30871
  (s) => !containsForbiddenSelector(s),
29995
30872
  { message: "Global selectors (:root, html, body, *) are not allowed" }
29996
30873
  );
29997
- declarationValueSchema = z27.string().max(500, "Declaration value too long (max 500 characters)").refine(
30874
+ declarationValueSchema = z30.string().max(500, "Declaration value too long (max 500 characters)").refine(
29998
30875
  (v) => !containsRemoteUrl(v),
29999
30876
  { message: "Remote url() references are not allowed. Use local paths, data URIs, or fragment IDs." }
30000
30877
  ).refine(
30001
30878
  (v) => !containsJavascriptUrl(v),
30002
30879
  { message: "javascript: URLs are not allowed" }
30003
30880
  );
30004
- declarationsSchema = z27.record(
30005
- z27.string().min(1).max(100),
30881
+ declarationsSchema = z30.record(
30882
+ z30.string().min(1).max(100),
30006
30883
  // property name
30007
30884
  declarationValueSchema
30008
30885
  // property value
30009
30886
  );
30010
- customCssRuleSchema = z27.object({
30011
- id: z27.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
30887
+ customCssRuleSchema = z30.object({
30888
+ id: z30.string().min(1, "Rule ID is required").max(50, "Rule ID too long"),
30012
30889
  selector: selectorSchema,
30013
30890
  declarations: declarationsSchema
30014
30891
  });
30015
30892
  blockCustomCssRuleSchema = customCssRuleSchema.extend({
30016
- blockKind: z27.string().min(1, "Block kind is required").max(50, "Block kind too long")
30893
+ blockKind: z30.string().min(1, "Block kind is required").max(50, "Block kind too long")
30017
30894
  });
30018
- customCssRulesSchema = z27.array(customCssRuleSchema).optional();
30019
- blockCustomCssRulesSchema = z27.array(blockCustomCssRuleSchema).optional();
30895
+ customCssRulesSchema = z30.array(customCssRuleSchema).optional();
30896
+ blockCustomCssRulesSchema = z30.array(blockCustomCssRuleSchema).optional();
30020
30897
  }
30021
30898
  });
30022
30899
 
30023
30900
  // ../theme-core/src/customCss/atRuleValidation.ts
30024
- import { z as z28 } from "zod";
30901
+ import { z as z31 } from "zod";
30025
30902
  function isValidKeyframeOffset(offset) {
30026
30903
  const trimmed = offset.trim().toLowerCase();
30027
30904
  if (trimmed === "from" || trimmed === "to") return true;
@@ -30042,75 +30919,75 @@ var init_atRuleValidation = __esm({
30042
30919
  ANIMATION_NAME_PATTERN = /^[a-zA-Z_-][a-zA-Z0-9_-]*$/;
30043
30920
  BLOCKED_AT_RULES = ["@import", "@charset"];
30044
30921
  BLOCKED_AT_RULE_PATTERN = /@(?:import|charset)\b/i;
30045
- ruleIdSchema = z28.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
30046
- nestedRuleSchema = z28.object({
30922
+ ruleIdSchema = z31.string().min(1, "Rule ID is required").max(50, "Rule ID too long");
30923
+ nestedRuleSchema = z31.object({
30047
30924
  selector: selectorSchema,
30048
30925
  declarations: declarationsSchema
30049
30926
  });
30050
- keyframeOffsetSchema = z28.string().transform((offset) => offset.trim()).refine(
30927
+ keyframeOffsetSchema = z31.string().transform((offset) => offset.trim()).refine(
30051
30928
  (offset) => KEYFRAME_OFFSET_PATTERN.test(offset),
30052
30929
  { message: 'Invalid keyframe offset. Use percentages (0%, 50%, 100%) or "from"/"to"' }
30053
30930
  ).refine(
30054
30931
  isValidKeyframeOffset,
30055
30932
  { message: "Keyframe offset must be between 0% and 100%" }
30056
30933
  );
30057
- animationNameSchema = z28.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
30934
+ animationNameSchema = z31.string().min(1, "Animation name is required").max(50, "Animation name too long").refine(
30058
30935
  (name) => ANIMATION_NAME_PATTERN.test(name),
30059
30936
  { message: "Invalid animation name. Use letters, numbers, dashes, underscores (start with letter, dash, or underscore)" }
30060
30937
  );
30061
- keyframeSchema = z28.object({
30938
+ keyframeSchema = z31.object({
30062
30939
  offset: keyframeOffsetSchema,
30063
30940
  declarations: declarationsSchema
30064
30941
  });
30065
- keyframesAtRuleSchema = z28.object({
30942
+ keyframesAtRuleSchema = z31.object({
30066
30943
  id: ruleIdSchema,
30067
- type: z28.literal("keyframes"),
30944
+ type: z31.literal("keyframes"),
30068
30945
  name: animationNameSchema,
30069
- frames: z28.array(keyframeSchema).min(1, "At least one keyframe is required")
30946
+ frames: z31.array(keyframeSchema).min(1, "At least one keyframe is required")
30070
30947
  });
30071
- fontFaceDeclarationsSchema = z28.record(z28.string().min(1).max(100), declarationValueSchema).refine(
30948
+ fontFaceDeclarationsSchema = z31.record(z31.string().min(1).max(100), declarationValueSchema).refine(
30072
30949
  (decls) => "fontFamily" in decls || "font-family" in decls,
30073
30950
  { message: "font-family is required in @font-face" }
30074
30951
  );
30075
- fontFaceAtRuleSchema = z28.object({
30952
+ fontFaceAtRuleSchema = z31.object({
30076
30953
  id: ruleIdSchema,
30077
- type: z28.literal("font-face"),
30954
+ type: z31.literal("font-face"),
30078
30955
  declarations: fontFaceDeclarationsSchema
30079
30956
  });
30080
- mediaQuerySchema = z28.string().min(1, "Media query is required").max(200, "Media query too long");
30081
- mediaAtRuleSchema = z28.object({
30957
+ mediaQuerySchema = z31.string().min(1, "Media query is required").max(200, "Media query too long");
30958
+ mediaAtRuleSchema = z31.object({
30082
30959
  id: ruleIdSchema,
30083
- type: z28.literal("media"),
30960
+ type: z31.literal("media"),
30084
30961
  query: mediaQuerySchema,
30085
- rules: z28.array(nestedRuleSchema).min(1, "At least one rule is required")
30962
+ rules: z31.array(nestedRuleSchema).min(1, "At least one rule is required")
30086
30963
  });
30087
- supportsConditionSchema = z28.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
30088
- supportsAtRuleSchema = z28.object({
30964
+ supportsConditionSchema = z31.string().min(1, "Supports condition is required").max(200, "Supports condition too long");
30965
+ supportsAtRuleSchema = z31.object({
30089
30966
  id: ruleIdSchema,
30090
- type: z28.literal("supports"),
30967
+ type: z31.literal("supports"),
30091
30968
  condition: supportsConditionSchema,
30092
- rules: z28.array(nestedRuleSchema).min(1, "At least one rule is required")
30969
+ rules: z31.array(nestedRuleSchema).min(1, "At least one rule is required")
30093
30970
  });
30094
- rawCssSchema = z28.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
30971
+ rawCssSchema = z31.string().min(1, "CSS is required").max(5e3, "Raw CSS too long (max 5000 characters)").refine(
30095
30972
  (css) => css.trim().startsWith("@"),
30096
30973
  { message: "Raw at-rule must start with @" }
30097
30974
  ).refine(
30098
30975
  (css) => !containsBlockedAtRule(css),
30099
30976
  { message: `Blocked at-rules: ${BLOCKED_AT_RULES.join(", ")}. Use typed at-rules or local assets instead.` }
30100
30977
  );
30101
- rawAtRuleSchema = z28.object({
30978
+ rawAtRuleSchema = z31.object({
30102
30979
  id: ruleIdSchema,
30103
- type: z28.literal("raw"),
30980
+ type: z31.literal("raw"),
30104
30981
  css: rawCssSchema
30105
30982
  });
30106
- customCssAtRuleSchema = z28.discriminatedUnion("type", [
30983
+ customCssAtRuleSchema = z31.discriminatedUnion("type", [
30107
30984
  keyframesAtRuleSchema,
30108
30985
  fontFaceAtRuleSchema,
30109
30986
  mediaAtRuleSchema,
30110
30987
  supportsAtRuleSchema,
30111
30988
  rawAtRuleSchema
30112
30989
  ]);
30113
- customCssAtRulesSchema = z28.array(customCssAtRuleSchema).optional();
30990
+ customCssAtRulesSchema = z31.array(customCssAtRuleSchema).optional();
30114
30991
  }
30115
30992
  });
30116
30993
 
@@ -30205,7 +31082,7 @@ var init_buildThemeRuntime = __esm({
30205
31082
  init_expandPalette();
30206
31083
  init_fontFamily();
30207
31084
  init_generateCssVars();
30208
- init_shadow();
31085
+ init_shadow2();
30209
31086
  init_generateButtonCss();
30210
31087
  init_generateCardCss();
30211
31088
  init_generateAccordionCss();
@@ -31244,216 +32121,92 @@ function brandNonEmptyString(value, label) {
31244
32121
  }
31245
32122
 
31246
32123
  // ../theme-core/src/schema.ts
31247
- import { z as z33 } from "zod";
32124
+ import { z as z35 } from "zod";
31248
32125
 
31249
32126
  // ../theme-core/src/lib/media.ts
31250
- import z29 from "zod";
31251
- var hotspotSchema2 = z29.object({
31252
- x: z29.number().min(0).max(1),
31253
- y: z29.number().min(0).max(1),
31254
- radius: z29.number().optional()
31255
- });
31256
- var rotationSchema2 = z29.union([z29.literal(0), z29.literal(90), z29.literal(180), z29.literal(270)]);
31257
- var rectSchema2 = z29.tuple([z29.number(), z29.number(), z29.number(), z29.number()]);
31258
- var aspectCropSchema2 = z29.object({
31259
- aspect: z29.preprocess((value) => value == null ? void 0 : value, z29.string().optional()),
31260
- rect: z29.preprocess((value) => value == null ? void 0 : value, rectSchema2.optional()),
31261
- hotspot: z29.preprocess((value) => value == null ? void 0 : value, hotspotSchema2.optional()),
31262
- rotation: z29.preprocess((value) => value == null ? void 0 : value, rotationSchema2.optional())
31263
- });
31264
- var transformSchema2 = z29.object({
31265
- aspectCrops: z29.preprocess((value) => {
32127
+ import z32 from "zod";
32128
+ var hotspotSchema2 = z32.object({
32129
+ x: z32.number().min(0).max(1),
32130
+ y: z32.number().min(0).max(1),
32131
+ radius: z32.number().optional()
32132
+ });
32133
+ var rotationSchema2 = z32.union([z32.literal(0), z32.literal(90), z32.literal(180), z32.literal(270)]);
32134
+ var rectSchema2 = z32.tuple([z32.number(), z32.number(), z32.number(), z32.number()]);
32135
+ var aspectCropSchema2 = z32.object({
32136
+ aspect: z32.preprocess((value) => value == null ? void 0 : value, z32.string().optional()),
32137
+ rect: z32.preprocess((value) => value == null ? void 0 : value, rectSchema2.optional()),
32138
+ hotspot: z32.preprocess((value) => value == null ? void 0 : value, hotspotSchema2.optional()),
32139
+ rotation: z32.preprocess((value) => value == null ? void 0 : value, rotationSchema2.optional())
32140
+ });
32141
+ var transformSchema2 = z32.object({
32142
+ aspectCrops: z32.preprocess((value) => {
31266
32143
  if (!value || typeof value !== "object" || Array.isArray(value)) {
31267
32144
  return void 0;
31268
32145
  }
31269
32146
  return value;
31270
- }, z29.record(z29.string(), aspectCropSchema2.catch({}))).optional(),
32147
+ }, z32.record(z32.string(), aspectCropSchema2.catch({}))).optional(),
31271
32148
  rect: rectSchema2.optional(),
31272
32149
  hotspot: hotspotSchema2.optional(),
31273
32150
  rotation: rotationSchema2.optional()
31274
32151
  });
31275
- var mediaSchema2 = z29.object({
31276
- type: z29.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
31277
- purpose: z29.string().optional(),
31278
- placeholder: z29.boolean().default(true).optional(),
31279
- assetId: z29.string().optional(),
31280
- identifier: z29.string().optional(),
31281
- src: z29.string().optional(),
31282
- alt: z29.string().optional(),
31283
- filename: z29.string().optional(),
31284
- mimeType: z29.string().optional(),
31285
- width: z29.number().optional(),
31286
- height: z29.number().optional(),
31287
- storageBucket: z29.string().optional(),
31288
- storagePath: z29.string().optional(),
32152
+ var mediaSchema2 = z32.object({
32153
+ type: z32.enum(["image", "video", "audio", "document", "spreadsheet", "archive"]),
32154
+ purpose: z32.string().optional(),
32155
+ placeholder: z32.boolean().default(true).optional(),
32156
+ assetId: z32.string().optional(),
32157
+ identifier: z32.string().optional(),
32158
+ src: z32.string().optional(),
32159
+ alt: z32.string().optional(),
32160
+ filename: z32.string().optional(),
32161
+ mimeType: z32.string().optional(),
32162
+ width: z32.number().optional(),
32163
+ height: z32.number().optional(),
32164
+ storageBucket: z32.string().optional(),
32165
+ storagePath: z32.string().optional(),
31289
32166
  transform: transformSchema2.optional()
31290
32167
  });
31291
32168
 
31292
- // ../theme-core/src/buttons/types.ts
31293
- import { z as z30 } from "zod";
31294
- var cornerStyleSchema = z30.enum(["square", "rounded", "pill"]);
31295
- var shadowSizeSchema = z30.enum(["none", "low", "medium", "high"]);
31296
- var textTransformSchema = z30.enum(["none", "uppercase", "lowercase", "capitalize"]);
31297
- var fontWeightSchema = z30.union([z30.literal(500), z30.literal(600), z30.literal(700)]);
31298
- var buttonTypographySchema = z30.enum(["body", "heading"]);
31299
- var hoverTransformSchema = z30.enum(["none", "lift", "scale", "press"]);
31300
- var hoverColorSchema = z30.enum(["none", "brighten", "darken", "saturate", "token"]);
31301
- var buttonPaddingPresetSchema = z30.enum(["compact", "default", "spacious"]);
31302
- var gradientStyleSchema = z30.enum(["linear", "radial", "conic"]);
31303
- var gradientSharpnessSchema = z30.enum(["smooth", "medium", "hard"]);
31304
- var buttonSizeNameSchema = z30.enum(["sm", "md", "lg", "xl"]);
31305
- var buttonSizeConfigSchema = z30.object({
31306
- padding: z30.string(),
31307
- fontSize: z30.string().optional()
31308
- });
31309
- var buttonSizesSchema = z30.object({
31310
- sm: buttonSizeConfigSchema,
31311
- md: buttonSizeConfigSchema,
31312
- lg: buttonSizeConfigSchema,
31313
- xl: buttonSizeConfigSchema.optional()
31314
- });
31315
- var backgroundTreatmentSchema = z30.enum(["solid", "gradient", "outline", "ghost"]);
31316
- var outlineHoverEffectSchema = z30.enum([
31317
- "border-glow",
31318
- "border-shift",
31319
- "border-grow",
31320
- "fill-transition",
31321
- "border-trace"
31322
- ]);
31323
- var buttonGlobalSettingsSchema = z30.object({
31324
- cornerStyle: cornerStyleSchema,
31325
- cornerRadius: z30.number().min(0).max(24).optional(),
31326
- shadow: shadowSizeSchema,
31327
- textTransform: textTransformSchema,
31328
- fontWeight: fontWeightSchema,
31329
- borderWidth: z30.union([z30.literal(1), z30.literal(2), z30.literal(3)]),
31330
- // Typography source (body or heading)
31331
- typography: buttonTypographySchema.optional(),
31332
- // Italic style
31333
- italic: z30.boolean().optional(),
31334
- // Padding preset (applies to all variants unless overridden)
31335
- paddingPreset: buttonPaddingPresetSchema.optional(),
31336
- hoverTransform: hoverTransformSchema,
31337
- hoverColor: hoverColorSchema,
31338
- // When hoverColor is 'token', this specifies which token to use
31339
- hoverColorToken: z30.string().optional(),
31340
- // Gradient settings (if any variant uses gradients)
31341
- gradientStyle: gradientStyleSchema.optional(),
31342
- gradientAngle: z30.number().min(0).max(360).optional(),
31343
- gradientSharpness: gradientSharpnessSchema.optional()
31344
- });
31345
- var gradientDirectionSchema = z30.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
31346
- var buttonBackgroundSchema = z30.discriminatedUnion("type", [
31347
- z30.object({ type: z30.literal("solid"), colorToken: z30.string() }),
31348
- z30.object({
31349
- type: z30.literal("gradient"),
31350
- stops: z30.array(z30.string()).min(2),
31351
- direction: gradientDirectionSchema
31352
- }),
31353
- z30.object({ type: z30.literal("transparent") })
31354
- ]);
31355
- var effectApplicationSchema2 = z30.object({
31356
- effectId: z30.string(),
31357
- options: z30.record(z30.string(), z30.any()).optional()
31358
- });
31359
- var buttonBorderSchema = z30.object({
31360
- widthClass: z30.string(),
31361
- colorToken: z30.string()
31362
- });
31363
- var buttonVariantLegacySchema = z30.object({
31364
- id: z30.string(),
31365
- name: z30.string().min(1).max(20),
31366
- enabled: z30.boolean(),
31367
- priority: z30.union([z30.literal(1), z30.literal(2), z30.literal(3)]),
31368
- backgroundTreatment: backgroundTreatmentSchema,
31369
- color: z30.string().optional(),
31370
- gradientColors: z30.tuple([z30.string(), z30.string()]).optional(),
31371
- borderColor: z30.string().optional(),
31372
- outlineHoverEffect: outlineHoverEffectSchema.optional(),
31373
- effectPreset: z30.string().optional()
31374
- });
31375
- var buttonVariantSchema = z30.object({
31376
- id: z30.string(),
31377
- name: z30.string().min(1).max(20),
31378
- enabled: z30.boolean(),
31379
- priority: z30.union([z30.literal(1), z30.literal(2), z30.literal(3)]),
31380
- // Base appearance (token-based)
31381
- background: buttonBackgroundSchema,
31382
- textColorToken: z30.string(),
31383
- borderRadius: z30.string(),
31384
- // Optional shadow override (uses theme.shadow if not specified)
31385
- shadow: z30.object({
31386
- elevation: z30.enum(["none", "low", "medium", "high"]),
31387
- softness: z30.enum(["crisp", "soft", "hard"]).nullable(),
31388
- position: z30.enum(["bottom", "bottom-right"]).default("bottom")
31389
- }).optional(),
31390
- // Border (optional)
31391
- border: buttonBorderSchema.optional(),
31392
- // Padding (optional, defaults to "0.5rem 1rem")
31393
- padding: z30.string().optional(),
31394
- // Font size (optional, Tailwind text size class)
31395
- fontSize: z30.string().optional(),
31396
- // Hover background token (per-variant override, takes precedence over global hoverColorToken)
31397
- hoverBackgroundToken: z30.string().optional(),
31398
- // Effect composition
31399
- effects: z30.object({
31400
- base: z30.array(effectApplicationSchema2).optional(),
31401
- hover: z30.array(effectApplicationSchema2).optional(),
31402
- active: z30.array(effectApplicationSchema2).optional(),
31403
- focus: z30.array(effectApplicationSchema2).optional()
31404
- }).optional()
31405
- });
31406
- var buttonSystemSchema = z30.object({
31407
- global: buttonGlobalSettingsSchema,
31408
- variants: z30.array(buttonVariantSchema).min(1).max(6),
31409
- sizes: buttonSizesSchema.optional()
31410
- });
31411
-
31412
- // ../theme-core/src/buttons/index.ts
31413
- init_generateButtonCss();
31414
- init_generateDefaultButtonSystem();
31415
- init_constants();
31416
- init_registry();
31417
- init_transform();
32169
+ // ../theme-core/src/schema.ts
32170
+ init_buttons();
31418
32171
 
31419
32172
  // ../theme-core/src/cards/types.ts
31420
- import { z as z31 } from "zod";
31421
- var cardSpacingSchema = z31.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
31422
- var gradientDirectionSchema2 = z31.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
31423
- var cardBackgroundSchema = z31.discriminatedUnion("type", [
31424
- z31.object({ type: z31.literal("solid"), colorToken: z31.string() }),
31425
- z31.object({
31426
- type: z31.literal("gradient"),
31427
- fromToken: z31.string(),
31428
- toToken: z31.string(),
32173
+ import { z as z33 } from "zod";
32174
+ var cardSpacingSchema = z33.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
32175
+ var gradientDirectionSchema2 = z33.enum(["to-r", "to-l", "to-t", "to-b", "to-tr", "to-tl", "to-br", "to-bl"]);
32176
+ var cardBackgroundSchema = z33.discriminatedUnion("type", [
32177
+ z33.object({ type: z33.literal("solid"), colorToken: z33.string() }),
32178
+ z33.object({
32179
+ type: z33.literal("gradient"),
32180
+ fromToken: z33.string(),
32181
+ toToken: z33.string(),
31429
32182
  direction: gradientDirectionSchema2
31430
32183
  }),
31431
- z31.object({ type: z31.literal("transparent") })
32184
+ z33.object({ type: z33.literal("transparent") })
31432
32185
  ]);
31433
- var cardBorderSchema = z31.object({
31434
- widthClass: z31.string(),
31435
- colorToken: z31.string()
31436
- });
31437
- var cardVariantSchema2 = z31.object({
31438
- id: z31.string(),
31439
- name: z31.string().min(1).max(20),
31440
- enabled: z31.boolean(),
31441
- priority: z31.union([z31.literal(1), z31.literal(2), z31.literal(3)]),
32186
+ var cardBorderSchema = z33.object({
32187
+ widthClass: z33.string(),
32188
+ colorToken: z33.string()
32189
+ });
32190
+ var cardVariantSchema2 = z33.object({
32191
+ id: z33.string(),
32192
+ name: z33.string().min(1).max(20),
32193
+ enabled: z33.boolean(),
32194
+ priority: z33.union([z33.literal(1), z33.literal(2), z33.literal(3)]),
31442
32195
  // Appearance (token-based)
31443
32196
  background: cardBackgroundSchema,
31444
32197
  spacing: cardSpacingSchema,
31445
32198
  // Optional overrides (uses theme defaults if not specified)
31446
- shadow: z31.object({
31447
- elevation: z31.enum(["none", "low", "medium", "high"]),
31448
- softness: z31.enum(["crisp", "soft", "hard"]).nullable(),
31449
- position: z31.enum(["bottom", "bottom-right"]).default("bottom")
32199
+ shadow: z33.object({
32200
+ elevation: z33.enum(["none", "low", "medium", "high"]),
32201
+ softness: z33.enum(["crisp", "soft", "hard"]).nullable(),
32202
+ position: z33.enum(["bottom", "bottom-right"]).default("bottom")
31450
32203
  }).optional(),
31451
- corners: z31.enum(["square", "soft", "rounded", "pill"]).optional(),
32204
+ corners: z33.enum(["square", "soft", "rounded", "pill"]).optional(),
31452
32205
  // Border (optional)
31453
32206
  border: cardBorderSchema.optional()
31454
32207
  });
31455
- var cardSystemSchema = z31.object({
31456
- variants: z31.array(cardVariantSchema2).min(1).max(3)
32208
+ var cardSystemSchema = z33.object({
32209
+ variants: z33.array(cardVariantSchema2).min(1).max(3)
31457
32210
  });
31458
32211
 
31459
32212
  // ../theme-core/src/cards/index.ts
@@ -31462,90 +32215,90 @@ init_generateCardCss();
31462
32215
  init_generateDefaultCardSystem();
31463
32216
 
31464
32217
  // ../theme-core/src/schema.ts
31465
- init_types4();
31466
32218
  init_types7();
32219
+ init_types10();
31467
32220
 
31468
32221
  // ../theme-core/src/gradients/types.ts
31469
- import { z as z32 } from "zod";
31470
- var gradientStopSchema = z32.object({
31471
- color: z32.string(),
32222
+ import { z as z34 } from "zod";
32223
+ var gradientStopSchema = z34.object({
32224
+ color: z34.string(),
31472
32225
  // Theme color token name (e.g., 'primary-500')
31473
- position: z32.number().min(0).max(100)
32226
+ position: z34.number().min(0).max(100)
31474
32227
  // Percentage 0-100
31475
32228
  });
31476
- var gradientConfigSchema = z32.object({
31477
- type: z32.enum(["linear", "radial"]),
31478
- angle: z32.number().min(0).max(360).optional(),
32229
+ var gradientConfigSchema = z34.object({
32230
+ type: z34.enum(["linear", "radial"]),
32231
+ angle: z34.number().min(0).max(360).optional(),
31479
32232
  // For linear gradients (degrees)
31480
- position: z32.string().optional(),
32233
+ position: z34.string().optional(),
31481
32234
  // For radial gradients ('center', 'top left', etc.)
31482
- stops: z32.array(gradientStopSchema).min(2)
32235
+ stops: z34.array(gradientStopSchema).min(2)
31483
32236
  });
31484
32237
 
31485
32238
  // ../theme-core/src/schema.ts
31486
- init_types8();
32239
+ init_types11();
31487
32240
  init_validation3();
31488
32241
  init_atRuleValidation();
31489
32242
  init_shared6();
31490
- var axesSchema = z33.object({
31491
- tone: z33.enum(["minimal", "classic", "bold"]),
31492
- energy: z33.enum(["calm", "vibrant"]),
31493
- density: z33.enum(["airy", "regular", "compact"]),
31494
- mediaBias: z33.enum(["text", "media", "mixed"]),
31495
- conversionBias: z33.enum(["low", "med", "high"]),
31496
- motion: z33.enum(["subtle", "standard", "expressive"])
31497
- });
31498
- var colourHexString = z33.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
31499
- var paletteColorSchema = z33.object({
31500
- name: z33.string().min(1),
32243
+ var axesSchema = z35.object({
32244
+ tone: z35.enum(["minimal", "classic", "bold"]),
32245
+ energy: z35.enum(["calm", "vibrant"]),
32246
+ density: z35.enum(["airy", "regular", "compact"]),
32247
+ mediaBias: z35.enum(["text", "media", "mixed"]),
32248
+ conversionBias: z35.enum(["low", "med", "high"]),
32249
+ motion: z35.enum(["subtle", "standard", "expressive"])
32250
+ });
32251
+ var colourHexString = z35.string().regex(/^#([0-9A-Fa-f]{3}){1,2}$/);
32252
+ var paletteColorSchema = z35.object({
32253
+ name: z35.string().min(1),
31501
32254
  hex: colourHexString
31502
32255
  });
31503
- var paletteMetaSchema = z33.object({
31504
- mode: z33.enum(["light", "dark"])
32256
+ var paletteMetaSchema = z35.object({
32257
+ mode: z35.enum(["light", "dark"])
31505
32258
  });
31506
- var paletteSchema = z33.object({
31507
- colors: z33.array(paletteColorSchema),
32259
+ var paletteSchema = z35.object({
32260
+ colors: z35.array(paletteColorSchema),
31508
32261
  meta: paletteMetaSchema
31509
32262
  });
31510
- var typographyStyleSchema = z33.object({
31511
- family: z33.string().min(1),
31512
- weight: z33.enum(["light", "regular", "medium", "semibold", "bold"]),
31513
- letterSpacing: z33.enum(["tight", "normal", "loose"]),
31514
- lineHeight: z33.enum(["normal", "relaxed", "loose"])
32263
+ var typographyStyleSchema = z35.object({
32264
+ family: z35.string().min(1),
32265
+ weight: z35.enum(["light", "regular", "medium", "semibold", "bold"]),
32266
+ letterSpacing: z35.enum(["tight", "normal", "loose"]),
32267
+ lineHeight: z35.enum(["normal", "relaxed", "loose"])
31515
32268
  });
31516
32269
  var bodyTypographyStyleSchema = typographyStyleSchema.extend({
31517
- size: z33.enum(["md", "lg", "xl"])
32270
+ size: z35.enum(["md", "lg", "xl"])
31518
32271
  });
31519
- var headingSizeSchema = z33.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
31520
- var headingTypographyOverridesSchema = z33.object({
31521
- weight: z33.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
31522
- letterSpacing: z33.enum(["tight", "normal", "loose"]).nullable().optional(),
32272
+ var headingSizeSchema = z35.enum(["xs", "sm", "md", "lg", "xl", "2xl"]);
32273
+ var headingTypographyOverridesSchema = z35.object({
32274
+ weight: z35.enum(["light", "regular", "medium", "semibold", "bold"]).nullable().optional(),
32275
+ letterSpacing: z35.enum(["tight", "normal", "loose"]).nullable().optional(),
31523
32276
  size: headingSizeSchema.nullable().optional(),
31524
- lineHeight: z33.enum(["normal", "relaxed", "loose"]).nullable().optional(),
31525
- italic: z33.boolean().nullable().optional(),
31526
- colorToken: z33.string().min(1).nullable().optional()
32277
+ lineHeight: z35.enum(["normal", "relaxed", "loose"]).nullable().optional(),
32278
+ italic: z35.boolean().nullable().optional(),
32279
+ colorToken: z35.string().min(1).nullable().optional()
31527
32280
  // Palette token name for heading color
31528
32281
  });
31529
32282
  var headingTypographyStyleSchema = typographyStyleSchema.extend({
31530
- case: z33.enum(["uppercase", "normal", "smallCaps"]).nullable(),
31531
- italic: z33.boolean().nullable(),
31532
- colorToken: z33.string().min(1).nullable().optional()
32283
+ case: z35.enum(["uppercase", "normal", "smallCaps"]).nullable(),
32284
+ italic: z35.boolean().nullable(),
32285
+ colorToken: z35.string().min(1).nullable().optional()
31533
32286
  // Palette token name for heading color
31534
32287
  });
31535
- var proseLinkUnderlineStyleSchema = z33.enum(["solid", "dotted", "dashed"]);
31536
- var proseLinkUnderlineThicknessSchema = z33.enum(["auto", "fromFont", "thin", "medium", "thick"]);
31537
- var proseLinkUnderlineOffsetSchema = z33.enum(["auto", "tight", "normal", "loose"]);
31538
- var proseLinkStyleSchema = z33.object({
31539
- colorToken: z33.string().min(1).optional(),
31540
- hoverColorToken: z33.string().min(1).optional(),
31541
- underline: z33.boolean().optional(),
31542
- decorationColorToken: z33.string().min(1).optional(),
31543
- hoverDecorationColorToken: z33.string().min(1).optional(),
32288
+ var proseLinkUnderlineStyleSchema = z35.enum(["solid", "dotted", "dashed"]);
32289
+ var proseLinkUnderlineThicknessSchema = z35.enum(["auto", "fromFont", "thin", "medium", "thick"]);
32290
+ var proseLinkUnderlineOffsetSchema = z35.enum(["auto", "tight", "normal", "loose"]);
32291
+ var proseLinkStyleSchema = z35.object({
32292
+ colorToken: z35.string().min(1).optional(),
32293
+ hoverColorToken: z35.string().min(1).optional(),
32294
+ underline: z35.boolean().optional(),
32295
+ decorationColorToken: z35.string().min(1).optional(),
32296
+ hoverDecorationColorToken: z35.string().min(1).optional(),
31544
32297
  underlineStyle: proseLinkUnderlineStyleSchema.optional(),
31545
32298
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
31546
32299
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
31547
32300
  });
31548
- var semanticSpacingSchema = z33.enum([
32301
+ var semanticSpacingSchema = z35.enum([
31549
32302
  "none",
31550
32303
  "compact",
31551
32304
  "cozy",
@@ -31553,62 +32306,62 @@ var semanticSpacingSchema = z33.enum([
31553
32306
  "comfortable",
31554
32307
  "spacious"
31555
32308
  ]);
31556
- var boxRoundedSchema = z33.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
31557
- var boxBackgroundOverlaySchema = z33.object({
31558
- type: z33.enum(["none", "color", "gradient"]).nullable().optional(),
31559
- color: z33.string().nullable().optional(),
31560
- gradient: z33.string().nullable().optional(),
31561
- opacity: z33.number().min(0).max(1).nullable().optional()
31562
- });
31563
- var boxBackgroundSchema = z33.object({
31564
- type: z33.enum(["color", "gradient", "image"]).optional(),
31565
- color: z33.string().nullable().optional(),
31566
- gradient: z33.string().nullable().optional(),
32309
+ var boxRoundedSchema = z35.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
32310
+ var boxBackgroundOverlaySchema = z35.object({
32311
+ type: z35.enum(["none", "color", "gradient"]).nullable().optional(),
32312
+ color: z35.string().nullable().optional(),
32313
+ gradient: z35.string().nullable().optional(),
32314
+ opacity: z35.number().min(0).max(1).nullable().optional()
32315
+ });
32316
+ var boxBackgroundSchema = z35.object({
32317
+ type: z35.enum(["color", "gradient", "image"]).optional(),
32318
+ color: z35.string().nullable().optional(),
32319
+ gradient: z35.string().nullable().optional(),
31567
32320
  image: mediaSchema2.nullable().optional(),
31568
- objectFit: z33.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
31569
- scale: z33.string().nullable().optional(),
31570
- position: z33.string().nullable().optional(),
31571
- opacity: z33.number().min(0).max(1).nullable().optional(),
32321
+ objectFit: z35.enum(["fill", "fit", "original", "custom"]).nullable().optional(),
32322
+ scale: z35.string().nullable().optional(),
32323
+ position: z35.string().nullable().optional(),
32324
+ opacity: z35.number().min(0).max(1).nullable().optional(),
31572
32325
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
31573
- textColor: z33.string().nullable().optional(),
31574
- headingColor: z33.string().nullable().optional()
32326
+ textColor: z35.string().nullable().optional(),
32327
+ headingColor: z35.string().nullable().optional()
31575
32328
  });
31576
- var sectionStylesOverrideSchema = z33.object({
32329
+ var sectionStylesOverrideSchema = z35.object({
31577
32330
  background: boxBackgroundSchema.nullable().optional(),
31578
32331
  spacing: semanticSpacingSchema.nullable().optional(),
31579
- minHeight: z33.enum(["none", "hero", "immersive"]).nullable().optional()
32332
+ minHeight: z35.enum(["none", "hero", "immersive"]).nullable().optional()
31580
32333
  });
31581
- var containerStylesOverrideSchema = z33.object({
32334
+ var containerStylesOverrideSchema = z35.object({
31582
32335
  background: boxBackgroundSchema.nullable().optional(),
31583
32336
  spacing: semanticSpacingSchema.nullable().optional(),
31584
- raised: z33.boolean().nullable().optional(),
32337
+ raised: z35.boolean().nullable().optional(),
31585
32338
  rounded: boxRoundedSchema.nullable().optional(),
31586
- fullWidth: z33.boolean().nullable().optional()
32339
+ fullWidth: z35.boolean().nullable().optional()
31587
32340
  });
31588
- var cardBorderOverrideSchema = z33.object({
31589
- enabled: z33.boolean().nullable().optional(),
31590
- width: z33.enum(["none", "1", "2", "3"]).nullable().optional(),
31591
- colorToken: z33.string().nullable().optional()
32341
+ var cardBorderOverrideSchema = z35.object({
32342
+ enabled: z35.boolean().nullable().optional(),
32343
+ width: z35.enum(["none", "1", "2", "3"]).nullable().optional(),
32344
+ colorToken: z35.string().nullable().optional()
31592
32345
  });
31593
- var cardStylesOverrideSchema = z33.object({
32346
+ var cardStylesOverrideSchema = z35.object({
31594
32347
  background: boxBackgroundSchema.nullable().optional(),
31595
32348
  border: cardBorderOverrideSchema.nullable().optional(),
31596
32349
  spacing: semanticSpacingSchema.nullable().optional(),
31597
- raised: z33.boolean().nullable().optional(),
32350
+ raised: z35.boolean().nullable().optional(),
31598
32351
  rounded: boxRoundedSchema.nullable().optional()
31599
32352
  });
31600
- var blockStyleOverridesSchema = z33.object({
32353
+ var blockStyleOverridesSchema = z35.object({
31601
32354
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
31602
32355
  containerStyles: containerStylesOverrideSchema.nullable().optional(),
31603
32356
  cardStyles: cardStylesOverrideSchema.nullable().optional()
31604
32357
  });
31605
- var blockThemeOverrideSchema = z33.object({
31606
- typography: z33.object({
32358
+ var blockThemeOverrideSchema = z35.object({
32359
+ typography: z35.object({
31607
32360
  proseLinkStyle: proseLinkStyleSchema.optional()
31608
32361
  }).optional(),
31609
32362
  styles: blockStyleOverridesSchema.optional()
31610
32363
  });
31611
- var typographyScaleSchema = z33.enum([
32364
+ var typographyScaleSchema = z35.enum([
31612
32365
  // New intuitive names
31613
32366
  "compact",
31614
32367
  // ratio 1.2 (was minorThird)
@@ -31621,9 +32374,9 @@ var typographyScaleSchema = z33.enum([
31621
32374
  "majorThird",
31622
32375
  "perfectFourth"
31623
32376
  ]);
31624
- var typographySchema = z33.object({
32377
+ var typographySchema = z35.object({
31625
32378
  body: bodyTypographyStyleSchema,
31626
- headings: z33.object({
32379
+ headings: z35.object({
31627
32380
  default: headingTypographyStyleSchema,
31628
32381
  h1: headingTypographyOverridesSchema,
31629
32382
  h2: headingTypographyOverridesSchema,
@@ -31636,41 +32389,41 @@ var typographySchema = z33.object({
31636
32389
  scale: typographyScaleSchema,
31637
32390
  proseLinkStyle: proseLinkStyleSchema.optional()
31638
32391
  });
31639
- var spaceSchema = z33.enum(["comfortable", "standard", "dense"]);
31640
- var corners = z33.enum(["square", "soft", "rounded", "pill"]);
31641
- var shadow = z33.object({
31642
- elevation: z33.enum(["none", "low", "medium", "high"]),
31643
- softness: z33.enum(["crisp", "soft", "hard"]).nullable(),
31644
- position: z33.enum(["bottom", "bottom-right"]).default("bottom")
32392
+ var spaceSchema = z35.enum(["comfortable", "standard", "dense"]);
32393
+ var corners = z35.enum(["square", "soft", "rounded", "pill"]);
32394
+ var shadow = z35.object({
32395
+ elevation: z35.enum(["none", "low", "medium", "high"]),
32396
+ softness: z35.enum(["crisp", "soft", "hard"]).nullable(),
32397
+ position: z35.enum(["bottom", "bottom-right"]).default("bottom")
31645
32398
  });
31646
- var border = z33.object({
31647
- width: z33.enum(["none", "hairline", "thin", "thick"]),
31648
- style: z33.enum(["solid", "dashed"])
32399
+ var border = z35.object({
32400
+ width: z35.enum(["none", "hairline", "thin", "thick"]),
32401
+ style: z35.enum(["solid", "dashed"])
31649
32402
  });
31650
- var motion = z33.object({
31651
- level: z33.enum(["off", "low", "medium", "high"]),
31652
- easing: z33.enum(["standard", "snappy", "gentle"]).nullable()
32403
+ var motion = z35.object({
32404
+ level: z35.enum(["off", "low", "medium", "high"]),
32405
+ easing: z35.enum(["standard", "snappy", "gentle"]).nullable()
31653
32406
  });
31654
- var buttonStyle = z33.object({
32407
+ var buttonStyle = z35.object({
31655
32408
  shape: corners
31656
32409
  // Used for --radius-control CSS variable
31657
32410
  });
31658
- var cardStyle = z33.object({
31659
- elevation: z33.enum(["none", "low", "medium", "high"]),
31660
- border: z33.enum(["none", "subtle", "defined"]),
32411
+ var cardStyle = z35.object({
32412
+ elevation: z35.enum(["none", "low", "medium", "high"]),
32413
+ border: z35.enum(["none", "subtle", "defined"]),
31661
32414
  shape: corners,
31662
- headerStyle: z33.enum(["plain", "accentBar", "subtleBg"]).nullable(),
31663
- mediaTreatment: z33.enum(["square", "rounded", "bleed"]).nullable()
32415
+ headerStyle: z35.enum(["plain", "accentBar", "subtleBg"]).nullable(),
32416
+ mediaTreatment: z35.enum(["square", "rounded", "bleed"]).nullable()
31664
32417
  });
31665
- var inputStyle = z33.object({
32418
+ var inputStyle = z35.object({
31666
32419
  shape: corners,
31667
- border: z33.enum(["subtle", "defined", "underline"]),
31668
- focus: z33.enum(["glow", "ring", "underline"]),
31669
- label: z33.enum(["inside", "above"])
32420
+ border: z35.enum(["subtle", "defined", "underline"]),
32421
+ focus: z35.enum(["glow", "ring", "underline"]),
32422
+ label: z35.enum(["inside", "above"])
31670
32423
  });
31671
- var headerVariant = z33.enum(["classic", "centered", "transparent", "floating", "editorial"]);
31672
- var headerPositioning = z33.enum(["static", "sticky", "fixed"]);
31673
- var headerNavStyle = z33.enum([
32424
+ var headerVariant = z35.enum(["classic", "centered", "transparent", "floating", "editorial"]);
32425
+ var headerPositioning = z35.enum(["static", "sticky", "fixed"]);
32426
+ var headerNavStyle = z35.enum([
31674
32427
  "minimal",
31675
32428
  "underline",
31676
32429
  "underline-grow",
@@ -31679,82 +32432,82 @@ var headerNavStyle = z33.enum([
31679
32432
  "frosted",
31680
32433
  "solid"
31681
32434
  ]);
31682
- var navFontWeight = z33.enum(["regular", "medium", "semibold", "bold"]);
31683
- var headerMaxWidth = z33.enum(["container", "full"]);
31684
- var headerContainerSchema = z33.object({
31685
- rounded: z33.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
31686
- border: z33.boolean().default(true),
31687
- shadow: z33.boolean().default(true),
31688
- padding: z33.enum(["sm", "md", "lg"]).default("md"),
31689
- tint: z33.string().nullable().optional(),
31690
- opacity: z33.number().min(0).max(1).default(0.12)
32435
+ var navFontWeight = z35.enum(["regular", "medium", "semibold", "bold"]);
32436
+ var headerMaxWidth = z35.enum(["container", "full"]);
32437
+ var headerContainerSchema = z35.object({
32438
+ rounded: z35.enum(["none", "sm", "md", "lg", "xl", "2xl"]).default("xl"),
32439
+ border: z35.boolean().default(true),
32440
+ shadow: z35.boolean().default(true),
32441
+ padding: z35.enum(["sm", "md", "lg"]).default("md"),
32442
+ tint: z35.string().nullable().optional(),
32443
+ opacity: z35.number().min(0).max(1).default(0.12)
31691
32444
  }).optional();
31692
32445
  var headerBorderSchema = componentBorderSchema.extend({
31693
- position: z33.enum(["bottom", "top", "both", "none"]).default("bottom")
32446
+ position: z35.enum(["bottom", "top", "both", "none"]).default("bottom")
31694
32447
  }).optional();
31695
- var logoStyleSchema = z33.object({
31696
- fontFamily: z33.enum(["heading", "body"]).default("heading"),
31697
- letterSpacing: z33.enum(["normal", "wide", "wider", "widest"]).default("normal"),
31698
- gradient: z33.boolean().default(false)
32448
+ var logoStyleSchema = z35.object({
32449
+ fontFamily: z35.enum(["heading", "body"]).default("heading"),
32450
+ letterSpacing: z35.enum(["normal", "wide", "wider", "widest"]).default("normal"),
32451
+ gradient: z35.boolean().default(false)
31699
32452
  }).optional();
31700
- var headerLogoTextSchema = z33.object({
31701
- mobileWrapLines: z33.union([z33.literal(1), z33.literal(2)]).optional(),
31702
- mobileMaxWidth: z33.enum(["xs", "sm", "md"]).optional(),
31703
- hideOnShrink: z33.boolean().optional()
32453
+ var headerLogoTextSchema = z35.object({
32454
+ mobileWrapLines: z35.union([z35.literal(1), z35.literal(2)]).optional(),
32455
+ mobileMaxWidth: z35.enum(["xs", "sm", "md"]).optional(),
32456
+ hideOnShrink: z35.boolean().optional()
31704
32457
  }).optional();
31705
- var navEffectsSchema = z33.object({
31706
- underlineGradient: z33.boolean().default(false),
31707
- glow: z33.boolean().default(false),
31708
- glowColor: z33.string().optional(),
31709
- neumorphic: z33.boolean().default(false)
32458
+ var navEffectsSchema = z35.object({
32459
+ underlineGradient: z35.boolean().default(false),
32460
+ glow: z35.boolean().default(false),
32461
+ glowColor: z35.string().optional(),
32462
+ neumorphic: z35.boolean().default(false)
31710
32463
  }).optional();
31711
- var dropdownStyleSchema = z33.object({
32464
+ var dropdownStyleSchema = z35.object({
31712
32465
  // Container styling
31713
- background: z33.string().default("surface"),
32466
+ background: z35.string().default("surface"),
31714
32467
  // color token
31715
- textColor: z33.string().default("text"),
32468
+ textColor: z35.string().default("text"),
31716
32469
  // color token
31717
- borderColor: z33.string().nullable().default("border"),
32470
+ borderColor: z35.string().nullable().default("border"),
31718
32471
  // null = no border
31719
- shadow: z33.enum(["none", "sm", "md", "lg"]).default("md"),
31720
- borderRadius: z33.enum(["none", "sm", "md", "lg"]).default("md"),
32472
+ shadow: z35.enum(["none", "sm", "md", "lg"]).default("md"),
32473
+ borderRadius: z35.enum(["none", "sm", "md", "lg"]).default("md"),
31721
32474
  // Link hover states (explicit control)
31722
- hoverBackground: z33.string().nullable().optional(),
32475
+ hoverBackground: z35.string().nullable().optional(),
31723
32476
  // color token, null = transparent
31724
- hoverTextColor: z33.string().nullable().optional(),
32477
+ hoverTextColor: z35.string().nullable().optional(),
31725
32478
  // color token, null = inherit
31726
32479
  // Typography
31727
- textTransform: z33.enum(["none", "uppercase", "capitalize"]).default("none"),
31728
- letterSpacing: z33.enum(["normal", "wide", "wider"]).default("normal"),
31729
- fontWeight: z33.enum(["regular", "medium", "semibold", "bold"]).optional(),
32480
+ textTransform: z35.enum(["none", "uppercase", "capitalize"]).default("none"),
32481
+ letterSpacing: z35.enum(["normal", "wide", "wider"]).default("normal"),
32482
+ fontWeight: z35.enum(["regular", "medium", "semibold", "bold"]).optional(),
31730
32483
  // optional = inherit from navWeight
31731
- textSize: z33.enum(["xs", "sm", "base", "lg"]).optional()
32484
+ textSize: z35.enum(["xs", "sm", "base", "lg"]).optional()
31732
32485
  // optional = no override (browser default)
31733
32486
  }).optional();
31734
- var headerCtaGapSchema = z33.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
31735
- var navContainerSchema = z33.object({
31736
- type: z33.enum(["none", "pill", "glass"]).default("none"),
31737
- tint: z33.string().nullable().optional(),
31738
- opacity: z33.number().min(0).max(1).default(0.15)
32487
+ var headerCtaGapSchema = z35.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
32488
+ var navContainerSchema = z35.object({
32489
+ type: z35.enum(["none", "pill", "glass"]).default("none"),
32490
+ tint: z35.string().nullable().optional(),
32491
+ opacity: z35.number().min(0).max(1).default(0.15)
31739
32492
  }).default({ type: "none", tint: null, opacity: 0.15 });
31740
- var headerBackgroundSchema = z33.object({
31741
- type: z33.enum(["color", "gradient", "image"]),
31742
- color: z33.string().nullable().optional(),
32493
+ var headerBackgroundSchema = z35.object({
32494
+ type: z35.enum(["color", "gradient", "image"]),
32495
+ color: z35.string().nullable().optional(),
31743
32496
  gradient: gradientConfigSchema.nullable().optional(),
31744
32497
  image: mediaSchema2.nullable().optional(),
31745
- textColor: z33.string().nullable().optional()
32498
+ textColor: z35.string().nullable().optional()
31746
32499
  });
31747
- var headerSchema = z33.object({
32500
+ var headerSchema = z35.object({
31748
32501
  variant: headerVariant,
31749
32502
  positioning: headerPositioning,
31750
- shrinkOnScroll: z33.boolean(),
32503
+ shrinkOnScroll: z35.boolean(),
31751
32504
  maxWidth: headerMaxWidth,
31752
32505
  logoOverride: mediaSchema2.nullable().optional(),
31753
32506
  background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
31754
- textColor: z33.string().nullable().optional(),
32507
+ textColor: z35.string().nullable().optional(),
31755
32508
  // Site title and general header text
31756
32509
  navStyle: headerNavStyle,
31757
- navColor: z33.string().nullable().optional(),
32510
+ navColor: z35.string().nullable().optional(),
31758
32511
  // Nav links (inherits textColor if not set)
31759
32512
  navWeight: navFontWeight.default("medium"),
31760
32513
  // New fields for header system enhancement
@@ -31773,50 +32526,50 @@ var headerSchema = z33.object({
31773
32526
  // Dropdown menu styling (nav dropdowns and mobile drawer)
31774
32527
  dropdownStyle: dropdownStyleSchema
31775
32528
  });
31776
- var footerVariant = z33.enum(["simple", "columns", "split"]);
31777
- var footerMaxWidth = z33.enum(["container", "full"]);
31778
- var footerMode = z33.enum(["default", "blocks", "default+blocks", "none"]);
31779
- var footerNavLayoutMode = z33.enum(["stack", "inline", "inline-wrap"]);
31780
- var footerNavLayoutAlign = z33.enum(["start", "center", "end", "space-between"]);
31781
- var footerSpacing = z33.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
31782
- var footerLogoPlacement = z33.enum(["left", "right", "above", "below"]);
31783
- var footerLogoSize = z33.enum(["sm", "md", "lg", "xl"]);
31784
- var footerLogoMaxHeight = z33.enum(["sm", "md", "lg", "xl"]);
31785
- var footerBottomTextLinkStyleSchema = z33.object({
31786
- colorToken: z33.string().optional(),
31787
- hoverColorToken: z33.string().nullable().optional(),
31788
- decorationColorToken: z33.string().nullable().optional(),
31789
- underline: z33.boolean().optional()
31790
- });
31791
- var footerBottomBarSchema = z33.object({
31792
- enabled: z33.boolean().optional(),
31793
- fullBleed: z33.boolean().optional(),
32529
+ var footerVariant = z35.enum(["simple", "columns", "split"]);
32530
+ var footerMaxWidth = z35.enum(["container", "full"]);
32531
+ var footerMode = z35.enum(["default", "blocks", "default+blocks", "none"]);
32532
+ var footerNavLayoutMode = z35.enum(["stack", "inline", "inline-wrap"]);
32533
+ var footerNavLayoutAlign = z35.enum(["start", "center", "end", "space-between"]);
32534
+ var footerSpacing = z35.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
32535
+ var footerLogoPlacement = z35.enum(["left", "right", "above", "below"]);
32536
+ var footerLogoSize = z35.enum(["sm", "md", "lg", "xl"]);
32537
+ var footerLogoMaxHeight = z35.enum(["sm", "md", "lg", "xl"]);
32538
+ var footerBottomTextLinkStyleSchema = z35.object({
32539
+ colorToken: z35.string().optional(),
32540
+ hoverColorToken: z35.string().nullable().optional(),
32541
+ decorationColorToken: z35.string().nullable().optional(),
32542
+ underline: z35.boolean().optional()
32543
+ });
32544
+ var footerBottomBarSchema = z35.object({
32545
+ enabled: z35.boolean().optional(),
32546
+ fullBleed: z35.boolean().optional(),
31794
32547
  background: headerBackgroundSchema.optional(),
31795
- textColor: z33.string().nullable().optional(),
31796
- textAlign: z33.enum(["left", "center", "right"]).optional(),
32548
+ textColor: z35.string().nullable().optional(),
32549
+ textAlign: z35.enum(["left", "center", "right"]).optional(),
31797
32550
  paddingY: footerSpacing.optional(),
31798
32551
  paddingX: footerSpacing.optional(),
31799
- borderTop: z33.object({
31800
- colorToken: z33.string().nullable().optional(),
31801
- width: z33.enum(["none", "thin", "medium", "thick"]).optional()
32552
+ borderTop: z35.object({
32553
+ colorToken: z35.string().nullable().optional(),
32554
+ width: z35.enum(["none", "thin", "medium", "thick"]).optional()
31802
32555
  }).optional()
31803
32556
  });
31804
- var footerNavLayoutSchema = z33.object({
32557
+ var footerNavLayoutSchema = z35.object({
31805
32558
  layout: footerNavLayoutMode.optional(),
31806
32559
  align: footerNavLayoutAlign.optional(),
31807
32560
  gapX: footerSpacing.optional(),
31808
32561
  gapY: footerSpacing.optional(),
31809
- columns: z33.number().int().min(1).max(6).optional()
32562
+ columns: z35.number().int().min(1).max(6).optional()
31810
32563
  });
31811
- var footerLogoSchema = z33.object({
31812
- showLogo: z33.boolean().default(true),
31813
- showLogoText: z33.boolean().optional(),
32564
+ var footerLogoSchema = z35.object({
32565
+ showLogo: z35.boolean().default(true),
32566
+ showLogoText: z35.boolean().optional(),
31814
32567
  placement: footerLogoPlacement.optional(),
31815
32568
  size: footerLogoSize.optional(),
31816
32569
  maxHeight: footerLogoMaxHeight.optional(),
31817
- align: z33.enum(["start", "center", "end"]).optional()
32570
+ align: z35.enum(["start", "center", "end"]).optional()
31818
32571
  });
31819
- var footerSchema = z33.object({
32572
+ var footerSchema = z35.object({
31820
32573
  /**
31821
32574
  * SDK-only footer rendering mode.
31822
32575
  *
@@ -31825,11 +32578,11 @@ var footerSchema = z33.object({
31825
32578
  mode: footerMode.optional(),
31826
32579
  variant: footerVariant,
31827
32580
  maxWidth: footerMaxWidth,
31828
- showLogoText: z33.boolean().optional(),
32581
+ showLogoText: z35.boolean().optional(),
31829
32582
  background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
31830
32583
  // Footer nav styling (independent from header)
31831
32584
  navStyle: headerNavStyle.default("minimal"),
31832
- navColor: z33.string().nullable().optional(),
32585
+ navColor: z35.string().nullable().optional(),
31833
32586
  navWeight: navFontWeight.default("medium"),
31834
32587
  // Full nav link customization (overrides navStyle if set)
31835
32588
  navLinkStyle: navLinkStyleSchema.optional(),
@@ -31840,15 +32593,15 @@ var footerSchema = z33.object({
31840
32593
  logo: footerLogoSchema.optional(),
31841
32594
  bottomBar: footerBottomBarSchema.optional()
31842
32595
  });
31843
- var containerPaddingPresetSchema = z33.enum(["tight", "compact", "default", "relaxed"]);
31844
- var layoutSchema = z33.object({
31845
- containerPadding: z33.object({
32596
+ var containerPaddingPresetSchema = z35.enum(["tight", "compact", "default", "relaxed"]);
32597
+ var layoutSchema = z35.object({
32598
+ containerPadding: z35.object({
31846
32599
  mobile: containerPaddingPresetSchema.optional(),
31847
32600
  tablet: containerPaddingPresetSchema.optional(),
31848
32601
  desktop: containerPaddingPresetSchema.optional()
31849
32602
  }).optional()
31850
32603
  }).optional();
31851
- var heroTypographySizeSchema = z33.enum([
32604
+ var heroTypographySizeSchema = z35.enum([
31852
32605
  "sm",
31853
32606
  "base",
31854
32607
  "lg",
@@ -31859,14 +32612,14 @@ var heroTypographySizeSchema = z33.enum([
31859
32612
  "5xl",
31860
32613
  "6xl"
31861
32614
  ]);
31862
- var heroTypographyLineHeightSchema = z33.enum(["tight", "snug", "normal", "relaxed"]);
31863
- var heroResponsiveTypographySchema = z33.object({
32615
+ var heroTypographyLineHeightSchema = z35.enum(["tight", "snug", "normal", "relaxed"]);
32616
+ var heroResponsiveTypographySchema = z35.object({
31864
32617
  headlineSize: heroTypographySizeSchema.optional(),
31865
32618
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
31866
32619
  subheadlineSize: heroTypographySizeSchema.optional(),
31867
32620
  subheadlineLineHeight: heroTypographyLineHeightSchema.optional()
31868
32621
  });
31869
- var heroTypographySchema = z33.object({
32622
+ var heroTypographySchema = z35.object({
31870
32623
  headlineSize: heroTypographySizeSchema.optional(),
31871
32624
  headlineLineHeight: heroTypographyLineHeightSchema.optional(),
31872
32625
  subheadlineSize: heroTypographySizeSchema.optional(),
@@ -31875,24 +32628,24 @@ var heroTypographySchema = z33.object({
31875
32628
  microHeadlineLineHeight: heroTypographyLineHeightSchema.optional(),
31876
32629
  microSubheadlineSize: heroTypographySizeSchema.optional(),
31877
32630
  microSubheadlineLineHeight: heroTypographyLineHeightSchema.optional(),
31878
- responsive: z33.object({
32631
+ responsive: z35.object({
31879
32632
  tablet: heroResponsiveTypographySchema.optional(),
31880
32633
  mobile: heroResponsiveTypographySchema.optional()
31881
32634
  }).optional()
31882
32635
  });
31883
- var heroSchema = z33.object({
32636
+ var heroSchema = z35.object({
31884
32637
  typography: heroTypographySchema.optional()
31885
32638
  }).optional();
31886
- var gradientsSchema = z33.object({
31887
- button: z33.string().min(1).nullable().optional(),
31888
- hero: z33.string().min(1).nullable().optional(),
31889
- background: z33.string().min(1).nullable().optional()
31890
- });
31891
- var themeSchema = z33.object({
31892
- name: z33.string().min(1).max(30),
31893
- description: z33.string().min(1).max(400),
31894
- rationale: z33.string().min(1).max(400),
31895
- siteStyleId: z33.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
32639
+ var gradientsSchema = z35.object({
32640
+ button: z35.string().min(1).nullable().optional(),
32641
+ hero: z35.string().min(1).nullable().optional(),
32642
+ background: z35.string().min(1).nullable().optional()
32643
+ });
32644
+ var themeSchema = z35.object({
32645
+ name: z35.string().min(1).max(30),
32646
+ description: z35.string().min(1).max(400),
32647
+ rationale: z35.string().min(1).max(400),
32648
+ siteStyleId: z35.string().min(1).transform((value) => asSiteStyleId(value)).optional(),
31896
32649
  axes: axesSchema,
31897
32650
  palette: paletteSchema,
31898
32651
  typography: typographySchema,
@@ -31919,16 +32672,16 @@ var themeSchema = z33.object({
31919
32672
  // Block-specific customization (Tier 3)
31920
32673
  // blockCustomVars: Per-block CSS variable overrides as bare values
31921
32674
  // Example: { "event-registration": { "--step-color": "#6d28d9" } }
31922
- blockCustomVars: z33.record(
31923
- z33.string(),
32675
+ blockCustomVars: z35.record(
32676
+ z35.string(),
31924
32677
  // block kind (matches data-block attribute)
31925
- z33.record(z33.string(), z33.string())
32678
+ z35.record(z35.string(), z35.string())
31926
32679
  // { '--var-name': 'value' }
31927
32680
  ).optional(),
31928
32681
  // Structured block-kind theme overrides (v1: typography prose-link style only)
31929
32682
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
31930
- blockOverrides: z33.record(
31931
- z33.string(),
32683
+ blockOverrides: z35.record(
32684
+ z35.string(),
31932
32685
  blockThemeOverrideSchema
31933
32686
  ).optional(),
31934
32687
  // Structured custom CSS rules
@@ -31964,13 +32717,373 @@ var themeSchema = z33.object({
31964
32717
  * }
31965
32718
  * ```
31966
32719
  */
31967
- styleGroups: z33.record(z33.string(), z33.array(z33.string())).optional()
32720
+ styleGroups: z35.record(z35.string(), z35.array(z35.string())).optional()
31968
32721
  });
31969
- var themesTurnSchema = z33.object({
31970
- message: z33.string().min(1),
31971
- themes: z33.array(themeSchema).length(3)
32722
+ var themesTurnSchema = z35.object({
32723
+ message: z35.string().min(1),
32724
+ themes: z35.array(themeSchema).length(3)
31972
32725
  });
31973
32726
 
32727
+ // ../theme-core/src/palette/variants/types.ts
32728
+ init_compatibility();
32729
+ import { z as z36 } from "zod";
32730
+ function asPaletteVariantId(value) {
32731
+ if (value.length === 0) {
32732
+ throw new Error("PaletteVariantId must be a non-empty string");
32733
+ }
32734
+ return value;
32735
+ }
32736
+ var paletteVariantIdSchema = z36.string().min(1).transform((value) => asPaletteVariantId(value));
32737
+ var PALETTE_TOKEN_NAMES = [
32738
+ "primary",
32739
+ "primaryForeground",
32740
+ "secondary",
32741
+ "accent",
32742
+ "success",
32743
+ "warning",
32744
+ "destructive",
32745
+ "background",
32746
+ "surface",
32747
+ "surfaceAlt",
32748
+ "muted",
32749
+ "text",
32750
+ "border"
32751
+ ];
32752
+ var paletteTokenNameSchema = z36.enum(PALETTE_TOKEN_NAMES);
32753
+ var HEX_COLOR_REGEX = /^#[0-9a-f]{6}$/;
32754
+ var hexColorSchema = z36.string().regex(HEX_COLOR_REGEX, "Hex must be #RRGGBB (lowercase)").transform((value) => value);
32755
+ var variantPaletteColorSchema = paletteColorSchema.extend({
32756
+ name: paletteTokenNameSchema
32757
+ });
32758
+ var paletteVariantSchema = z36.object({
32759
+ id: paletteVariantIdSchema,
32760
+ name: z36.string().min(1),
32761
+ description: z36.string().min(1),
32762
+ tags: styleTagsSchema,
32763
+ mode: z36.enum(["light", "dark"]),
32764
+ colors: z36.array(variantPaletteColorSchema).min(1)
32765
+ });
32766
+ function definePaletteVariant(input) {
32767
+ return {
32768
+ id: asPaletteVariantId(input.id),
32769
+ name: input.name,
32770
+ description: input.description,
32771
+ tags: input.tags,
32772
+ mode: input.mode,
32773
+ colors: input.colors
32774
+ };
32775
+ }
32776
+ var paletteOverridesSchema = z36.object({
32777
+ primary: hexColorSchema.optional(),
32778
+ primaryForeground: hexColorSchema.optional(),
32779
+ secondary: hexColorSchema.optional(),
32780
+ accent: hexColorSchema.optional(),
32781
+ success: hexColorSchema.optional(),
32782
+ warning: hexColorSchema.optional(),
32783
+ destructive: hexColorSchema.optional(),
32784
+ background: hexColorSchema.optional(),
32785
+ surface: hexColorSchema.optional(),
32786
+ surfaceAlt: hexColorSchema.optional(),
32787
+ muted: hexColorSchema.optional(),
32788
+ text: hexColorSchema.optional(),
32789
+ border: hexColorSchema.optional()
32790
+ }).strict().transform((value) => value);
32791
+
32792
+ // ../theme-core/src/palette/variants/brand-led.ts
32793
+ var brandLedCool = definePaletteVariant({
32794
+ id: "brand-led-cool",
32795
+ name: "Brand-led \u2014 Cool",
32796
+ description: "Confident blue primary with slate neutrals.",
32797
+ tags: { tone: "classic", energy: "calm", era: "modern" },
32798
+ mode: "light",
32799
+ colors: [
32800
+ { name: "primary", hex: "#2563eb" },
32801
+ { name: "secondary", hex: "#64748b" },
32802
+ { name: "accent", hex: "#0f766e" },
32803
+ { name: "success", hex: "#16a34a" },
32804
+ { name: "warning", hex: "#d97706" },
32805
+ { name: "destructive", hex: "#dc2626" },
32806
+ { name: "background", hex: "#ffffff" },
32807
+ { name: "surface", hex: "#ffffff" },
32808
+ { name: "surfaceAlt", hex: "#f8fafc" },
32809
+ { name: "muted", hex: "#f1f5f9" },
32810
+ { name: "text", hex: "#0f172a" },
32811
+ { name: "primaryForeground", hex: "#ffffff" },
32812
+ { name: "border", hex: "#cbd5e1" }
32813
+ ]
32814
+ });
32815
+ var brandLedWarm = definePaletteVariant({
32816
+ id: "brand-led-warm",
32817
+ name: "Brand-led \u2014 Warm",
32818
+ description: "Sunset orange primary with warm grey neutrals.",
32819
+ tags: { tone: "classic", energy: "vibrant", era: "modern" },
32820
+ mode: "light",
32821
+ colors: [
32822
+ { name: "primary", hex: "#ea580c" },
32823
+ { name: "secondary", hex: "#78716c" },
32824
+ { name: "accent", hex: "#a16207" },
32825
+ { name: "success", hex: "#16a34a" },
32826
+ { name: "warning", hex: "#d97706" },
32827
+ { name: "destructive", hex: "#b91c1c" },
32828
+ { name: "background", hex: "#fffaf3" },
32829
+ { name: "surface", hex: "#ffffff" },
32830
+ { name: "surfaceAlt", hex: "#fbeee0" },
32831
+ { name: "muted", hex: "#f4e2cd" },
32832
+ { name: "text", hex: "#1c1917" },
32833
+ { name: "primaryForeground", hex: "#fffaf3" },
32834
+ { name: "border", hex: "#d6c4ad" }
32835
+ ]
32836
+ });
32837
+ var brandLedJewel = definePaletteVariant({
32838
+ id: "brand-led-jewel",
32839
+ name: "Brand-led \u2014 Jewel",
32840
+ description: "Deep emerald primary with rich neutrals.",
32841
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
32842
+ mode: "light",
32843
+ colors: [
32844
+ { name: "primary", hex: "#047857" },
32845
+ { name: "secondary", hex: "#4b5563" },
32846
+ { name: "accent", hex: "#7c3aed" },
32847
+ { name: "success", hex: "#15803d" },
32848
+ { name: "warning", hex: "#b45309" },
32849
+ { name: "destructive", hex: "#b91c1c" },
32850
+ { name: "background", hex: "#ffffff" },
32851
+ { name: "surface", hex: "#ffffff" },
32852
+ { name: "surfaceAlt", hex: "#f5f5f4" },
32853
+ { name: "muted", hex: "#e7e5e4" },
32854
+ { name: "text", hex: "#0c0a09" },
32855
+ { name: "primaryForeground", hex: "#ffffff" },
32856
+ { name: "border", hex: "#a8a29e" }
32857
+ ]
32858
+ });
32859
+
32860
+ // ../theme-core/src/palette/variants/high-contrast.ts
32861
+ var highContrastInk = definePaletteVariant({
32862
+ id: "high-contrast-ink",
32863
+ name: "High Contrast \u2014 Ink",
32864
+ description: "Near-black primary with cool greys.",
32865
+ tags: { tone: "bold", energy: "calm", era: "editorial" },
32866
+ mode: "light",
32867
+ colors: [
32868
+ { name: "primary", hex: "#111827" },
32869
+ { name: "secondary", hex: "#374151" },
32870
+ { name: "accent", hex: "#1d4ed8" },
32871
+ { name: "success", hex: "#047857" },
32872
+ { name: "warning", hex: "#b45309" },
32873
+ { name: "destructive", hex: "#b91c1c" },
32874
+ { name: "background", hex: "#ffffff" },
32875
+ { name: "surface", hex: "#ffffff" },
32876
+ { name: "surfaceAlt", hex: "#f3f4f6" },
32877
+ { name: "muted", hex: "#e5e7eb" },
32878
+ { name: "text", hex: "#030712" },
32879
+ { name: "primaryForeground", hex: "#ffffff" },
32880
+ { name: "border", hex: "#6b7280" }
32881
+ ]
32882
+ });
32883
+ var highContrastCharcoal = definePaletteVariant({
32884
+ id: "high-contrast-charcoal",
32885
+ name: "High Contrast \u2014 Charcoal",
32886
+ description: "Warm charcoal primary on a soft cream ground.",
32887
+ tags: { tone: "minimal", energy: "calm", era: "editorial" },
32888
+ mode: "light",
32889
+ colors: [
32890
+ { name: "primary", hex: "#1f2937" },
32891
+ { name: "secondary", hex: "#52525b" },
32892
+ { name: "accent", hex: "#a16207" },
32893
+ { name: "success", hex: "#15803d" },
32894
+ { name: "warning", hex: "#b45309" },
32895
+ { name: "destructive", hex: "#991b1b" },
32896
+ { name: "background", hex: "#fafaf9" },
32897
+ { name: "surface", hex: "#ffffff" },
32898
+ { name: "surfaceAlt", hex: "#f5f5f4" },
32899
+ { name: "muted", hex: "#e7e5e4" },
32900
+ { name: "text", hex: "#0c0a09" },
32901
+ { name: "primaryForeground", hex: "#fafaf9" },
32902
+ { name: "border", hex: "#a8a29e" }
32903
+ ]
32904
+ });
32905
+ var highContrastMonochrome = definePaletteVariant({
32906
+ id: "high-contrast-monochrome",
32907
+ name: "High Contrast \u2014 Monochrome",
32908
+ description: "Pure black-on-white with a single saturated accent.",
32909
+ tags: { tone: "bold", energy: "vibrant", era: "editorial" },
32910
+ mode: "light",
32911
+ colors: [
32912
+ { name: "primary", hex: "#000000" },
32913
+ { name: "secondary", hex: "#404040" },
32914
+ { name: "accent", hex: "#dc2626" },
32915
+ { name: "success", hex: "#000000" },
32916
+ { name: "warning", hex: "#000000" },
32917
+ { name: "destructive", hex: "#dc2626" },
32918
+ { name: "background", hex: "#ffffff" },
32919
+ { name: "surface", hex: "#ffffff" },
32920
+ { name: "surfaceAlt", hex: "#f5f5f5" },
32921
+ { name: "muted", hex: "#e5e5e5" },
32922
+ { name: "text", hex: "#000000" },
32923
+ { name: "primaryForeground", hex: "#ffffff" },
32924
+ { name: "border", hex: "#525252" }
32925
+ ]
32926
+ });
32927
+
32928
+ // ../theme-core/src/palette/variants/soft-natural.ts
32929
+ var softNaturalSage = definePaletteVariant({
32930
+ id: "soft-natural-sage",
32931
+ name: "Soft Natural \u2014 Sage",
32932
+ description: "Olive sage primary on an off-white ground.",
32933
+ tags: { tone: "classic", energy: "calm", era: "organic" },
32934
+ mode: "light",
32935
+ colors: [
32936
+ { name: "primary", hex: "#3f6212" },
32937
+ { name: "secondary", hex: "#6b7280" },
32938
+ { name: "accent", hex: "#0f766e" },
32939
+ { name: "success", hex: "#15803d" },
32940
+ { name: "warning", hex: "#a16207" },
32941
+ { name: "destructive", hex: "#b91c1c" },
32942
+ { name: "background", hex: "#fbfdf7" },
32943
+ { name: "surface", hex: "#ffffff" },
32944
+ { name: "surfaceAlt", hex: "#eef5e8" },
32945
+ { name: "muted", hex: "#e7efdf" },
32946
+ { name: "text", hex: "#1f2a1d" },
32947
+ { name: "primaryForeground", hex: "#ffffff" },
32948
+ { name: "border", hex: "#cbd8c0" }
32949
+ ]
32950
+ });
32951
+ var softNaturalStone = definePaletteVariant({
32952
+ id: "soft-natural-stone",
32953
+ name: "Soft Natural \u2014 Stone",
32954
+ description: "River-stone grey-green primary with cool neutrals.",
32955
+ tags: { tone: "minimal", energy: "calm", era: "organic" },
32956
+ mode: "light",
32957
+ colors: [
32958
+ { name: "primary", hex: "#5a7a5d" },
32959
+ { name: "secondary", hex: "#8a9a8c" },
32960
+ { name: "accent", hex: "#c9b88f" },
32961
+ { name: "success", hex: "#5a7a5d" },
32962
+ { name: "warning", hex: "#a89466" },
32963
+ { name: "destructive", hex: "#a3503e" },
32964
+ { name: "background", hex: "#faf6ec" },
32965
+ { name: "surface", hex: "#ffffff" },
32966
+ { name: "surfaceAlt", hex: "#f0ecdf" },
32967
+ { name: "muted", hex: "#e6e1d0" },
32968
+ { name: "text", hex: "#2f3d31" },
32969
+ { name: "primaryForeground", hex: "#faf6ec" },
32970
+ { name: "border", hex: "#c9c1ad" }
32971
+ ]
32972
+ });
32973
+ var softNaturalWatercolor = definePaletteVariant({
32974
+ id: "soft-natural-watercolor",
32975
+ name: "Soft Natural \u2014 Watercolor",
32976
+ description: "Soft sand primary with watercolour sage accents.",
32977
+ tags: { tone: "classic", energy: "vibrant", era: "organic" },
32978
+ mode: "light",
32979
+ colors: [
32980
+ { name: "primary", hex: "#a8825f" },
32981
+ { name: "secondary", hex: "#88a888" },
32982
+ { name: "accent", hex: "#c8a78e" },
32983
+ { name: "success", hex: "#7d8a5f" },
32984
+ { name: "warning", hex: "#c89a4d" },
32985
+ { name: "destructive", hex: "#a3503e" },
32986
+ { name: "background", hex: "#fefdfa" },
32987
+ { name: "surface", hex: "#ffffff" },
32988
+ { name: "surfaceAlt", hex: "#f6f1e6" },
32989
+ { name: "muted", hex: "#eee7d1" },
32990
+ { name: "text", hex: "#4a3d30" },
32991
+ { name: "primaryForeground", hex: "#fefdfa" },
32992
+ { name: "border", hex: "#d8c9a8" }
32993
+ ]
32994
+ });
32995
+
32996
+ // ../theme-core/src/palette/variants/warm-neutral.ts
32997
+ var warmNeutralClay = definePaletteVariant({
32998
+ id: "warm-neutral-clay",
32999
+ name: "Warm Neutral \u2014 Clay",
33000
+ description: "Terracotta primary on a cream ground.",
33001
+ tags: { tone: "classic", energy: "calm", era: "organic" },
33002
+ mode: "light",
33003
+ colors: [
33004
+ { name: "primary", hex: "#8b5e34" },
33005
+ { name: "secondary", hex: "#7c6f64" },
33006
+ { name: "accent", hex: "#a15c38" },
33007
+ { name: "success", hex: "#527853" },
33008
+ { name: "warning", hex: "#b7791f" },
33009
+ { name: "destructive", hex: "#b91c1c" },
33010
+ { name: "background", hex: "#fffaf3" },
33011
+ { name: "surface", hex: "#ffffff" },
33012
+ { name: "surfaceAlt", hex: "#f5eadc" },
33013
+ { name: "muted", hex: "#efe2d0" },
33014
+ { name: "text", hex: "#2f241c" },
33015
+ { name: "primaryForeground", hex: "#fffaf3" },
33016
+ { name: "border", hex: "#d8c6b3" }
33017
+ ]
33018
+ });
33019
+ var warmNeutralCream = definePaletteVariant({
33020
+ id: "warm-neutral-cream",
33021
+ name: "Warm Neutral \u2014 Cream",
33022
+ description: "Soft sand primary with pale cream surfaces.",
33023
+ tags: { tone: "minimal", energy: "calm", era: "organic" },
33024
+ mode: "light",
33025
+ colors: [
33026
+ { name: "primary", hex: "#b08864" },
33027
+ { name: "secondary", hex: "#9a8c7e" },
33028
+ { name: "accent", hex: "#c2956a" },
33029
+ { name: "success", hex: "#7d8a5f" },
33030
+ { name: "warning", hex: "#c89a4d" },
33031
+ { name: "destructive", hex: "#a3503e" },
33032
+ { name: "background", hex: "#fdf8ee" },
33033
+ { name: "surface", hex: "#ffffff" },
33034
+ { name: "surfaceAlt", hex: "#f4ebd9" },
33035
+ { name: "muted", hex: "#ede3cf" },
33036
+ { name: "text", hex: "#3b2f24" },
33037
+ { name: "primaryForeground", hex: "#fdf8ee" },
33038
+ { name: "border", hex: "#e0d2b8" }
33039
+ ]
33040
+ });
33041
+ var warmNeutralForest = definePaletteVariant({
33042
+ id: "warm-neutral-forest",
33043
+ name: "Warm Neutral \u2014 Forest",
33044
+ description: "Deep forest green primary with earthy neutrals.",
33045
+ tags: { tone: "classic", energy: "calm", era: "organic" },
33046
+ mode: "light",
33047
+ colors: [
33048
+ { name: "primary", hex: "#3d5840" },
33049
+ { name: "secondary", hex: "#7a6f5d" },
33050
+ { name: "accent", hex: "#b06b50" },
33051
+ { name: "success", hex: "#5a7a5d" },
33052
+ { name: "warning", hex: "#b7791f" },
33053
+ { name: "destructive", hex: "#b91c1c" },
33054
+ { name: "background", hex: "#fbf8f0" },
33055
+ { name: "surface", hex: "#ffffff" },
33056
+ { name: "surfaceAlt", hex: "#f2ecdb" },
33057
+ { name: "muted", hex: "#ebe3cc" },
33058
+ { name: "text", hex: "#2a2a2a" },
33059
+ { name: "primaryForeground", hex: "#fbf8f0" },
33060
+ { name: "border", hex: "#cdc1a4" }
33061
+ ]
33062
+ });
33063
+
33064
+ // ../theme-core/src/palette/variants/index.ts
33065
+ var paletteVariants = [
33066
+ // Brand-led family
33067
+ brandLedCool,
33068
+ brandLedWarm,
33069
+ brandLedJewel,
33070
+ // Warm-neutral family
33071
+ warmNeutralClay,
33072
+ warmNeutralCream,
33073
+ warmNeutralForest,
33074
+ // High-contrast family
33075
+ highContrastInk,
33076
+ highContrastCharcoal,
33077
+ highContrastMonochrome,
33078
+ // Soft-natural family
33079
+ softNaturalSage,
33080
+ softNaturalStone,
33081
+ softNaturalWatercolor
33082
+ ];
33083
+ var paletteVariantsById = new Map(
33084
+ paletteVariants.map((v) => [v.id, v])
33085
+ );
33086
+
31974
33087
  // ../theme-core/src/palette/utils/paletteAccess.ts
31975
33088
  init_colorConversion();
31976
33089
 
@@ -33248,7 +34361,7 @@ var pipeline = new BasicPipeline().filter.register(
33248
34361
  Vibrant.use(pipeline);
33249
34362
 
33250
34363
  // ../theme-core/src/styles/buttons.ts
33251
- init_shadow();
34364
+ init_shadow2();
33252
34365
  init_colorStyles();
33253
34366
 
33254
34367
  // ../blocks/src/index.ts
@@ -33258,6 +34371,7 @@ init_generateShades();
33258
34371
  init_expandPalette();
33259
34372
 
33260
34373
  // ../blocks/src/index.ts
34374
+ init_buttons();
33261
34375
  init_tokens2();
33262
34376
 
33263
34377
  // ../theme-core/src/ThemeScope.tsx
@@ -33279,7 +34393,7 @@ init_buildThemeRuntime();
33279
34393
 
33280
34394
  // ../theme-core/src/runtime/buildThemeRuntimeFromBridge.ts
33281
34395
  init_colorConversion();
33282
- init_shadow();
34396
+ init_shadow2();
33283
34397
 
33284
34398
  // ../blocks/src/index.ts
33285
34399
  init_blocks();