@riverbankcms/sdk 0.60.12 → 0.60.14

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 (91) hide show
  1. package/README.md +10 -7
  2. package/dist/_dts/api/src/bookingConfig.d.ts +31 -1
  3. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +38 -1
  4. package/dist/_dts/api/src/bookingOperations.d.ts +3 -0
  5. package/dist/_dts/api/src/bookingRecords.d.ts +45 -0
  6. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +4 -4
  7. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +1 -5
  8. package/dist/_dts/api/src/communications.d.ts +1 -1
  9. package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
  10. package/dist/_dts/api/src/endpoints.d.ts +89 -9
  11. package/dist/_dts/api/src/index.d.ts +2 -1
  12. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
  13. package/dist/_dts/api/src/seoEndpoints.d.ts +2 -0
  14. package/dist/_dts/api/src/siteAssets.d.ts +0 -10
  15. package/dist/_dts/api/src/types.d.ts +1 -1
  16. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -0
  17. package/dist/_dts/blocks/src/index.d.ts +1 -0
  18. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  19. package/dist/_dts/blocks/src/server.d.ts +1 -0
  20. package/dist/_dts/blocks/src/subroutes/fold.d.ts +40 -0
  21. package/dist/_dts/blocks/src/subroutes/formatDate.d.ts +12 -0
  22. package/dist/_dts/blocks/src/subroutes/index.d.ts +3 -0
  23. package/dist/_dts/blocks/src/subroutes/kinds.d.ts +32 -0
  24. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +3 -1
  25. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +2 -0
  26. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +1 -0
  27. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +1 -0
  28. package/dist/_dts/blocks/src/system/spacing.d.ts +2 -1
  29. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +5 -0
  30. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +5 -1
  31. package/dist/_dts/core/src/booking-refunds.d.ts +8 -0
  32. package/dist/_dts/core/src/participant-identity.d.ts +1 -73
  33. package/dist/_dts/core/src/participants.d.ts +19 -7
  34. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +188 -36
  35. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +3 -3
  36. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -3
  37. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -3
  38. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -3
  39. package/dist/_dts/preview-next/src/client/preview/SubrouteNoticePanel.d.ts +13 -0
  40. package/dist/_dts/preview-next/src/client/preview/subrouteNotice.d.ts +26 -0
  41. package/dist/_dts/sdk/src/contracts/page.d.ts +1 -0
  42. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -0
  43. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +1 -0
  44. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +4 -5
  45. package/dist/_dts/sdk/src/version.d.ts +1 -1
  46. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  47. package/dist/_dts/theme-core/src/buttons/personalities/showtime-pill.d.ts +17 -0
  48. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -1
  49. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  50. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +66 -30
  51. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +16 -0
  52. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  53. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  54. package/dist/_dts/theme-core/src/schema.d.ts +174 -6
  55. package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +328 -15
  56. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +54 -2
  57. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +124 -0
  58. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  59. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  60. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +21 -0
  61. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +2 -1
  62. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  63. package/dist/_dts/theme-core/src/site-styles/types.d.ts +135 -2
  64. package/dist/_dts/ui/src/badge.d.ts +1 -1
  65. package/dist/_dts/ui/src/button.d.ts +1 -1
  66. package/dist/cli/index.mjs +744 -176
  67. package/dist/client/bookings.mjs +115 -63
  68. package/dist/client/client.mjs +848 -227
  69. package/dist/client/hooks.mjs +737 -173
  70. package/dist/client/rendering/client.mjs +179 -100
  71. package/dist/client/rendering/islands.mjs +179 -99
  72. package/dist/client/rendering.mjs +847 -226
  73. package/dist/preview-next/before-render.mjs +103 -16
  74. package/dist/preview-next/client/runtime.mjs +1615 -319
  75. package/dist/preview-next/middleware.mjs +103 -16
  76. package/dist/server/components.mjs +838 -227
  77. package/dist/server/config-validation.mjs +737 -173
  78. package/dist/server/config.mjs +737 -173
  79. package/dist/server/data.mjs +737 -173
  80. package/dist/server/index.mjs +106 -79
  81. package/dist/server/next.mjs +841 -229
  82. package/dist/server/page-converter.mjs +589 -144
  83. package/dist/server/prebuild.mjs +1 -1
  84. package/dist/server/rendering/server.mjs +838 -227
  85. package/dist/server/rendering.mjs +838 -227
  86. package/dist/server/routing.mjs +771 -178
  87. package/dist/server/server.mjs +738 -174
  88. package/dist/server/theme-bridge.mjs +216 -39
  89. package/dist/server/theme.mjs +139 -37
  90. package/dist/styles/index.css +44 -2
  91. package/package.json +1 -1
@@ -2475,6 +2475,118 @@ var init_pebble = __esm({
2475
2475
  }
2476
2476
  });
2477
2477
 
2478
+ // ../theme-core/src/buttons/personalities/showtime-pill.ts
2479
+ var showtimePill;
2480
+ var init_showtime_pill = __esm({
2481
+ "../theme-core/src/buttons/personalities/showtime-pill.ts"() {
2482
+ "use strict";
2483
+ init_types2();
2484
+ showtimePill = defineButtonPersonality({
2485
+ id: "showtime-pill",
2486
+ name: "Showtime Pill",
2487
+ description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
2488
+ tags: { tone: "bold", energy: "vibrant", motion: "expressive", era: "modern" },
2489
+ buttonSystem: {
2490
+ global: {
2491
+ cornerStyle: "pill",
2492
+ shadow: "low",
2493
+ textTransform: "uppercase",
2494
+ fontWeight: 700,
2495
+ borderWidth: 2,
2496
+ hoverTransform: "lift",
2497
+ hoverColor: "darken",
2498
+ typography: "body",
2499
+ paddingPreset: "spacious",
2500
+ italic: false
2501
+ },
2502
+ sizes: {
2503
+ sm: { padding: "0.625rem 1.25rem", fontSize: "0.875rem" },
2504
+ md: { padding: "0.875rem 1.75rem", fontSize: "1rem" },
2505
+ lg: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" },
2506
+ xl: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" }
2507
+ },
2508
+ variants: [
2509
+ {
2510
+ id: "primary",
2511
+ name: "Primary",
2512
+ enabled: true,
2513
+ priority: 1,
2514
+ background: { type: "solid", colorToken: "primary" },
2515
+ textColorToken: "background",
2516
+ borderRadius: "rounded-full",
2517
+ effects: {
2518
+ hover: [{ effectId: "pop" }]
2519
+ }
2520
+ },
2521
+ {
2522
+ id: "secondary",
2523
+ name: "Secondary",
2524
+ enabled: true,
2525
+ priority: 2,
2526
+ background: { type: "transparent" },
2527
+ textColorToken: "primary",
2528
+ borderRadius: "rounded-full",
2529
+ border: { widthClass: "border-2", colorToken: "primary" },
2530
+ effects: {
2531
+ hover: [{ effectId: "pop" }]
2532
+ }
2533
+ },
2534
+ {
2535
+ id: "hero",
2536
+ name: "Hero",
2537
+ enabled: true,
2538
+ priority: 1,
2539
+ background: { type: "solid", colorToken: "secondary" },
2540
+ textColorToken: "primary",
2541
+ borderRadius: "rounded-full",
2542
+ effects: {
2543
+ hover: [{ effectId: "pop" }]
2544
+ }
2545
+ },
2546
+ {
2547
+ id: "header",
2548
+ name: "Header",
2549
+ enabled: true,
2550
+ priority: 2,
2551
+ background: { type: "solid", colorToken: "background" },
2552
+ textColorToken: "primary",
2553
+ borderRadius: "rounded-full",
2554
+ border: { widthClass: "border-2", colorToken: "primary" },
2555
+ effects: {
2556
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
2557
+ }
2558
+ },
2559
+ {
2560
+ id: "outline",
2561
+ name: "Outline",
2562
+ enabled: true,
2563
+ priority: 3,
2564
+ background: { type: "transparent" },
2565
+ textColorToken: "primary",
2566
+ borderRadius: "rounded-full",
2567
+ border: { widthClass: "border-2", colorToken: "primary" },
2568
+ effects: {
2569
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
2570
+ }
2571
+ },
2572
+ {
2573
+ id: "ghost",
2574
+ name: "Ghost",
2575
+ enabled: true,
2576
+ priority: 3,
2577
+ background: { type: "transparent" },
2578
+ textColorToken: "primary",
2579
+ borderRadius: "rounded-full",
2580
+ effects: {
2581
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
2582
+ }
2583
+ }
2584
+ ]
2585
+ }
2586
+ });
2587
+ }
2588
+ });
2589
+
2478
2590
  // ../theme-core/src/buttons/personalities/soft-pill.ts
2479
2591
  var softPill;
2480
2592
  var init_soft_pill = __esm({
@@ -2565,6 +2677,7 @@ var init_personalities = __esm({
2565
2677
  init_editorial_link();
2566
2678
  init_ink_stamp();
2567
2679
  init_pebble();
2680
+ init_showtime_pill();
2568
2681
  init_soft_pill();
2569
2682
  init_types2();
2570
2683
  buttonPersonalities = [
@@ -2573,7 +2686,8 @@ var init_personalities = __esm({
2573
2686
  editorialLink,
2574
2687
  pebble,
2575
2688
  inkStamp,
2576
- brushedWash
2689
+ brushedWash,
2690
+ showtimePill
2577
2691
  ];
2578
2692
  personalitiesById = new Map(
2579
2693
  buttonPersonalities.map((p) => [p.id, p])
@@ -3250,71 +3364,10 @@ var init_participants = __esm({
3250
3364
  });
3251
3365
 
3252
3366
  // ../core/src/participant-identity.ts
3253
- var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD, PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS;
3254
3367
  var init_participant_identity = __esm({
3255
3368
  "../core/src/participant-identity.ts"() {
3256
3369
  "use strict";
3257
3370
  init_assertNever();
3258
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
3259
- participant_id: {
3260
- field: "participant_id",
3261
- role: "canonical_link",
3262
- canonicalSource: "booking_participants.id",
3263
- contractAction: "tighten_in_839",
3264
- notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
3265
- },
3266
- display_name: {
3267
- field: "display_name",
3268
- role: "contextual_snapshot",
3269
- canonicalSource: "booking_participants.display_name for live identity",
3270
- contractAction: "retain_as_snapshot",
3271
- notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
3272
- },
3273
- email: {
3274
- field: "email",
3275
- role: "contextual_snapshot",
3276
- canonicalSource: "booking_participants.email_normalized for live email identity",
3277
- contractAction: "retain_as_snapshot",
3278
- notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
3279
- },
3280
- email_normalized: {
3281
- field: "email_normalized",
3282
- role: "contextual_snapshot",
3283
- canonicalSource: "booking_participants.email_normalized for live email identity",
3284
- contractAction: "retain_as_snapshot",
3285
- notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
3286
- },
3287
- phone: {
3288
- field: "phone",
3289
- role: "contextual_snapshot",
3290
- canonicalSource: "booking_participants.phone for live phone identity",
3291
- contractAction: "retain_as_snapshot",
3292
- notes: "Participation-time phone context. Live identity belongs to the participant row."
3293
- },
3294
- identity_state: {
3295
- field: "identity_state",
3296
- role: "materialization_state",
3297
- canonicalSource: "booking_participants.identity_state for subject state",
3298
- contractAction: "review_for_later_contract_cleanup",
3299
- notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
3300
- },
3301
- event_attendee_guest_id: {
3302
- field: "event_attendee_guest_id",
3303
- role: "compatibility_projection",
3304
- canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
3305
- contractAction: "retain_as_projection",
3306
- notes: "Compatibility FK for event guest read models. It is not person identity authority."
3307
- }
3308
- };
3309
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
3310
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
3311
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
3312
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
3313
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
3314
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
3315
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
3316
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
3317
- ];
3318
3371
  }
3319
3372
  });
3320
3373
 
@@ -13832,7 +13885,6 @@ var init_testimonialsCarousel = __esm({
13832
13885
  "../blocks/src/system/fragments/library/testimonialsCarousel.ts"() {
13833
13886
  "use strict";
13834
13887
  init_types9();
13835
- init_colorStyles();
13836
13888
  testimonialsCarouselFragment = defineFragment({
13837
13889
  id: "testimonialsCarousel",
13838
13890
  title: "Testimonials",
@@ -17130,7 +17182,8 @@ var init_course_registration_interactive = __esm({
17130
17182
  run: z20.object({
17131
17183
  courseId: z20.string(),
17132
17184
  seriesId: z20.string(),
17133
- runSlug: z20.string()
17185
+ runSlug: z20.string(),
17186
+ runName: z20.string().nullable()
17134
17187
  })
17135
17188
  }),
17136
17189
  z20.object({
@@ -43579,10 +43632,17 @@ var init_footer = __esm({
43579
43632
  });
43580
43633
 
43581
43634
  // ../theme-core/src/layout/generateLayoutCss.ts
43635
+ function svgDataUrl(svg) {
43636
+ return `data:image/svg+xml,${encodeURIComponent(svg)}`;
43637
+ }
43638
+ var waveTransitionMask;
43582
43639
  var init_generateLayoutCss = __esm({
43583
43640
  "../theme-core/src/layout/generateLayoutCss.ts"() {
43584
43641
  "use strict";
43585
43642
  init_breakpoints();
43643
+ waveTransitionMask = svgDataUrl(
43644
+ "<svg viewBox='0 0 1440 72' xmlns='http://www.w3.org/2000/svg' preserveAspectRatio='none'><path d='M0 72V46C130 55 260 24 420 30C590 36 690 62 860 42C1035 21 1160 47 1305 36C1365 31 1415 33 1440 38V72H0Z' fill='white'/></svg>"
43645
+ );
43586
43646
  }
43587
43647
  });
43588
43648
 
@@ -45836,14 +45896,7 @@ var proseLinkStyleSchema = z42.object({
45836
45896
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
45837
45897
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
45838
45898
  });
45839
- var semanticSpacingSchema = z42.enum([
45840
- "none",
45841
- "compact",
45842
- "cozy",
45843
- "medium",
45844
- "comfortable",
45845
- "spacious"
45846
- ]);
45899
+ var semanticSpacingSchema = z42.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
45847
45900
  var boxRoundedSchema = z42.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
45848
45901
  var boxBackgroundOverlaySchema = z42.object({
45849
45902
  type: z42.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -45860,6 +45913,7 @@ var boxBackgroundSchema = z42.object({
45860
45913
  scale: z42.string().nullable().optional(),
45861
45914
  position: z42.string().nullable().optional(),
45862
45915
  opacity: z42.number().min(0).max(1).nullable().optional(),
45916
+ motion: z42.enum(["static", "fixed-frame"]).nullable().optional(),
45863
45917
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
45864
45918
  textColor: z42.string().nullable().optional(),
45865
45919
  headingColor: z42.string().nullable().optional()
@@ -45867,7 +45921,7 @@ var boxBackgroundSchema = z42.object({
45867
45921
  var sectionStylesOverrideSchema = z42.object({
45868
45922
  background: boxBackgroundSchema.nullable().optional(),
45869
45923
  spacing: semanticSpacingSchema.nullable().optional(),
45870
- minHeight: z42.enum(["none", "hero", "immersive"]).nullable().optional()
45924
+ minHeight: z42.enum(["none", "banner", "hero", "immersive"]).nullable().optional()
45871
45925
  });
45872
45926
  var containerStylesOverrideSchema = z42.object({
45873
45927
  background: boxBackgroundSchema.nullable().optional(),
@@ -45886,7 +45940,8 @@ var cardStylesOverrideSchema = z42.object({
45886
45940
  border: cardBorderOverrideSchema.nullable().optional(),
45887
45941
  spacing: semanticSpacingSchema.nullable().optional(),
45888
45942
  raised: z42.boolean().nullable().optional(),
45889
- rounded: boxRoundedSchema.nullable().optional()
45943
+ rounded: boxRoundedSchema.nullable().optional(),
45944
+ treatment: z42.enum(["accent-quote"]).nullable().optional()
45890
45945
  });
45891
45946
  var blockStyleOverridesSchema = z42.object({
45892
45947
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
@@ -45961,15 +46016,7 @@ var inputStyle2 = z42.object({
45961
46016
  });
45962
46017
  var headerVariant = z42.enum(["classic", "centered", "transparent", "floating", "editorial"]);
45963
46018
  var headerPositioning = z42.enum(["static", "sticky", "fixed"]);
45964
- var headerNavStyle = z42.enum([
45965
- "minimal",
45966
- "underline",
45967
- "underline-grow",
45968
- "capsule",
45969
- "scale",
45970
- "frosted",
45971
- "solid"
45972
- ]);
46019
+ var headerNavStyle = z42.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
45973
46020
  var navFontWeight = z42.enum(["regular", "medium", "semibold", "bold"]);
45974
46021
  var headerMaxWidth = z42.enum(["container", "full"]);
45975
46022
  var headerContainerSchema = z42.object({
@@ -46023,6 +46070,7 @@ var dropdownStyleSchema = z42.object({
46023
46070
  // optional = no override (browser default)
46024
46071
  }).optional();
46025
46072
  var headerCtaGapSchema = z42.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
46073
+ var headerCtaTreatmentSchema = z42.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
46026
46074
  var navContainerSchema = z42.object({
46027
46075
  type: z42.enum(["none", "pill", "glass"]).default("none"),
46028
46076
  tint: z42.string().nullable().optional(),
@@ -46041,7 +46089,10 @@ var headerSchema = z42.object({
46041
46089
  shrinkOnScroll: z42.boolean(),
46042
46090
  maxWidth: headerMaxWidth,
46043
46091
  logoOverride: mediaSchema2.nullable().optional(),
46044
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
46092
+ background: headerBackgroundSchema.default({
46093
+ type: "color",
46094
+ color: "surface"
46095
+ }),
46045
46096
  textColor: z42.string().nullable().optional(),
46046
46097
  // Site title and general header text
46047
46098
  navStyle: headerNavStyle,
@@ -46061,6 +46112,13 @@ var headerSchema = z42.object({
46061
46112
  navLinkStyle: navLinkStyleSchema.optional(),
46062
46113
  // CTA button spacing (desktop left margin)
46063
46114
  ctaGap: headerCtaGapSchema.optional(),
46115
+ // Semantic CTA treatment for header/nav CTA buttons. The Theme V2 compiler
46116
+ // materializes this to ctaVariant against the active button personality.
46117
+ ctaTreatment: headerCtaTreatmentSchema.optional(),
46118
+ // Optional theme-level CTA variant for header/nav CTA buttons.
46119
+ // Internal runtime bridge for the block renderer; prefer ctaTreatment in
46120
+ // authored Theme V2 concepts.
46121
+ ctaVariant: z42.string().min(1).optional(),
46064
46122
  // Dropdown menu styling (nav dropdowns and mobile drawer)
46065
46123
  dropdownStyle: dropdownStyleSchema
46066
46124
  });
@@ -46117,7 +46175,10 @@ var footerSchema = z42.object({
46117
46175
  variant: footerVariant,
46118
46176
  maxWidth: footerMaxWidth,
46119
46177
  showLogoText: z42.boolean().optional(),
46120
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
46178
+ background: headerBackgroundSchema.default({
46179
+ type: "color",
46180
+ color: "surface"
46181
+ }),
46121
46182
  // Footer nav styling (independent from header)
46122
46183
  navStyle: headerNavStyle.default("minimal"),
46123
46184
  navColor: z42.string().nullable().optional(),
@@ -46139,17 +46200,7 @@ var layoutSchema = z42.object({
46139
46200
  desktop: containerPaddingPresetSchema.optional()
46140
46201
  }).optional()
46141
46202
  }).optional();
46142
- var heroTypographySizeSchema = z42.enum([
46143
- "sm",
46144
- "base",
46145
- "lg",
46146
- "xl",
46147
- "2xl",
46148
- "3xl",
46149
- "4xl",
46150
- "5xl",
46151
- "6xl"
46152
- ]);
46203
+ var heroTypographySizeSchema = z42.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
46153
46204
  var heroTypographyLineHeightSchema = z42.enum(["tight", "snug", "normal", "relaxed"]);
46154
46205
  var heroResponsiveTypographySchema = z42.object({
46155
46206
  headlineSize: heroTypographySizeSchema.optional(),
@@ -46174,6 +46225,13 @@ var heroTypographySchema = z42.object({
46174
46225
  var heroSchema = z42.object({
46175
46226
  typography: heroTypographySchema.optional()
46176
46227
  }).optional();
46228
+ var bodyTextIntroTypographySizeSchema = z42.enum(["default", "editorial"]);
46229
+ var bodyTextSchema = z42.object({
46230
+ intro: z42.object({
46231
+ paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
46232
+ headingSize: bodyTextIntroTypographySizeSchema.optional()
46233
+ }).optional()
46234
+ }).optional();
46177
46235
  var gradientsSchema = z42.object({
46178
46236
  button: z42.string().min(1).nullable().optional(),
46179
46237
  hero: z42.string().min(1).nullable().optional(),
@@ -46195,6 +46253,7 @@ var themeSchema = z42.object({
46195
46253
  gradients: gradientsSchema.optional(),
46196
46254
  layout: layoutSchema,
46197
46255
  hero: heroSchema,
46256
+ bodyText: bodyTextSchema,
46198
46257
  header: headerSchema,
46199
46258
  footer: footerSchema,
46200
46259
  buttons: buttonSystemSchema.optional(),
@@ -46218,10 +46277,7 @@ var themeSchema = z42.object({
46218
46277
  ).optional(),
46219
46278
  // Structured block-kind theme overrides (v1: typography prose-link style only)
46220
46279
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
46221
- blockOverrides: z42.record(
46222
- z42.string(),
46223
- blockThemeOverrideSchema
46224
- ).optional(),
46280
+ blockOverrides: z42.record(z42.string(), blockThemeOverrideSchema).optional(),
46225
46281
  // Structured custom CSS rules
46226
46282
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
46227
46283
  customCssRules: customCssRulesSchema,
@@ -46392,6 +46448,28 @@ var brandLedJewel = definePaletteVariant({
46392
46448
  { name: "border", hex: "#a8a29e" }
46393
46449
  ]
46394
46450
  });
46451
+ var brandLedBurgundyGold = definePaletteVariant({
46452
+ id: "brand-led-burgundy-gold",
46453
+ name: "Brand-led \u2014 Burgundy Gold",
46454
+ description: "Deep burgundy with warm gold accents and soft neutral grounds.",
46455
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
46456
+ mode: "light",
46457
+ colors: [
46458
+ { name: "primary", hex: "#7c2e38" },
46459
+ { name: "secondary", hex: "#d4af37" },
46460
+ { name: "accent", hex: "#b8e19a" },
46461
+ { name: "success", hex: "#10b981" },
46462
+ { name: "warning", hex: "#f59e0b" },
46463
+ { name: "destructive", hex: "#ef4444" },
46464
+ { name: "background", hex: "#f1dfd0" },
46465
+ { name: "surface", hex: "#f5e6db" },
46466
+ { name: "surfaceAlt", hex: "#f8ece3" },
46467
+ { name: "muted", hex: "#c9b8a8" },
46468
+ { name: "text", hex: "#400000" },
46469
+ { name: "primaryForeground", hex: "#ffffff" },
46470
+ { name: "border", hex: "#c9b8a8" }
46471
+ ]
46472
+ });
46395
46473
 
46396
46474
  // ../theme-core/src/palette/variants/high-contrast.ts
46397
46475
  var highContrastInk = definePaletteVariant({
@@ -46603,6 +46681,7 @@ var paletteVariants = [
46603
46681
  brandLedCool,
46604
46682
  brandLedWarm,
46605
46683
  brandLedJewel,
46684
+ brandLedBurgundyGold,
46606
46685
  // Warm-neutral family
46607
46686
  warmNeutralClay,
46608
46687
  warmNeutralCream,