@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
@@ -691,71 +691,10 @@ var init_participants = __esm({
691
691
  });
692
692
 
693
693
  // ../core/src/participant-identity.ts
694
- var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD, PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS;
695
694
  var init_participant_identity = __esm({
696
695
  "../core/src/participant-identity.ts"() {
697
696
  "use strict";
698
697
  init_assertNever();
699
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
700
- participant_id: {
701
- field: "participant_id",
702
- role: "canonical_link",
703
- canonicalSource: "booking_participants.id",
704
- contractAction: "tighten_in_839",
705
- notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
706
- },
707
- display_name: {
708
- field: "display_name",
709
- role: "contextual_snapshot",
710
- canonicalSource: "booking_participants.display_name for live identity",
711
- contractAction: "retain_as_snapshot",
712
- notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
713
- },
714
- email: {
715
- field: "email",
716
- role: "contextual_snapshot",
717
- canonicalSource: "booking_participants.email_normalized for live email identity",
718
- contractAction: "retain_as_snapshot",
719
- notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
720
- },
721
- email_normalized: {
722
- field: "email_normalized",
723
- role: "contextual_snapshot",
724
- canonicalSource: "booking_participants.email_normalized for live email identity",
725
- contractAction: "retain_as_snapshot",
726
- notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
727
- },
728
- phone: {
729
- field: "phone",
730
- role: "contextual_snapshot",
731
- canonicalSource: "booking_participants.phone for live phone identity",
732
- contractAction: "retain_as_snapshot",
733
- notes: "Participation-time phone context. Live identity belongs to the participant row."
734
- },
735
- identity_state: {
736
- field: "identity_state",
737
- role: "materialization_state",
738
- canonicalSource: "booking_participants.identity_state for subject state",
739
- contractAction: "review_for_later_contract_cleanup",
740
- notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
741
- },
742
- event_attendee_guest_id: {
743
- field: "event_attendee_guest_id",
744
- role: "compatibility_projection",
745
- canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
746
- contractAction: "retain_as_projection",
747
- notes: "Compatibility FK for event guest read models. It is not person identity authority."
748
- }
749
- };
750
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
751
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
752
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
753
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
754
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
755
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
756
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
757
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
758
- ];
759
698
  }
760
699
  });
761
700
 
@@ -2489,7 +2428,8 @@ var init_course_registration_interactive = __esm({
2489
2428
  run: z10.object({
2490
2429
  courseId: z10.string(),
2491
2430
  seriesId: z10.string(),
2492
- runSlug: z10.string()
2431
+ runSlug: z10.string(),
2432
+ runName: z10.string().nullable()
2493
2433
  })
2494
2434
  }),
2495
2435
  z10.object({
@@ -5536,6 +5476,118 @@ var init_pebble = __esm({
5536
5476
  }
5537
5477
  });
5538
5478
 
5479
+ // ../theme-core/src/buttons/personalities/showtime-pill.ts
5480
+ var showtimePill;
5481
+ var init_showtime_pill = __esm({
5482
+ "../theme-core/src/buttons/personalities/showtime-pill.ts"() {
5483
+ "use strict";
5484
+ init_types5();
5485
+ showtimePill = defineButtonPersonality({
5486
+ id: "showtime-pill",
5487
+ name: "Showtime Pill",
5488
+ description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
5489
+ tags: { tone: "bold", energy: "vibrant", motion: "expressive", era: "modern" },
5490
+ buttonSystem: {
5491
+ global: {
5492
+ cornerStyle: "pill",
5493
+ shadow: "low",
5494
+ textTransform: "uppercase",
5495
+ fontWeight: 700,
5496
+ borderWidth: 2,
5497
+ hoverTransform: "lift",
5498
+ hoverColor: "darken",
5499
+ typography: "body",
5500
+ paddingPreset: "spacious",
5501
+ italic: false
5502
+ },
5503
+ sizes: {
5504
+ sm: { padding: "0.625rem 1.25rem", fontSize: "0.875rem" },
5505
+ md: { padding: "0.875rem 1.75rem", fontSize: "1rem" },
5506
+ lg: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" },
5507
+ xl: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" }
5508
+ },
5509
+ variants: [
5510
+ {
5511
+ id: "primary",
5512
+ name: "Primary",
5513
+ enabled: true,
5514
+ priority: 1,
5515
+ background: { type: "solid", colorToken: "primary" },
5516
+ textColorToken: "background",
5517
+ borderRadius: "rounded-full",
5518
+ effects: {
5519
+ hover: [{ effectId: "pop" }]
5520
+ }
5521
+ },
5522
+ {
5523
+ id: "secondary",
5524
+ name: "Secondary",
5525
+ enabled: true,
5526
+ priority: 2,
5527
+ background: { type: "transparent" },
5528
+ textColorToken: "primary",
5529
+ borderRadius: "rounded-full",
5530
+ border: { widthClass: "border-2", colorToken: "primary" },
5531
+ effects: {
5532
+ hover: [{ effectId: "pop" }]
5533
+ }
5534
+ },
5535
+ {
5536
+ id: "hero",
5537
+ name: "Hero",
5538
+ enabled: true,
5539
+ priority: 1,
5540
+ background: { type: "solid", colorToken: "secondary" },
5541
+ textColorToken: "primary",
5542
+ borderRadius: "rounded-full",
5543
+ effects: {
5544
+ hover: [{ effectId: "pop" }]
5545
+ }
5546
+ },
5547
+ {
5548
+ id: "header",
5549
+ name: "Header",
5550
+ enabled: true,
5551
+ priority: 2,
5552
+ background: { type: "solid", colorToken: "background" },
5553
+ textColorToken: "primary",
5554
+ borderRadius: "rounded-full",
5555
+ border: { widthClass: "border-2", colorToken: "primary" },
5556
+ effects: {
5557
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
5558
+ }
5559
+ },
5560
+ {
5561
+ id: "outline",
5562
+ name: "Outline",
5563
+ enabled: true,
5564
+ priority: 3,
5565
+ background: { type: "transparent" },
5566
+ textColorToken: "primary",
5567
+ borderRadius: "rounded-full",
5568
+ border: { widthClass: "border-2", colorToken: "primary" },
5569
+ effects: {
5570
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
5571
+ }
5572
+ },
5573
+ {
5574
+ id: "ghost",
5575
+ name: "Ghost",
5576
+ enabled: true,
5577
+ priority: 3,
5578
+ background: { type: "transparent" },
5579
+ textColorToken: "primary",
5580
+ borderRadius: "rounded-full",
5581
+ effects: {
5582
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
5583
+ }
5584
+ }
5585
+ ]
5586
+ }
5587
+ });
5588
+ }
5589
+ });
5590
+
5539
5591
  // ../theme-core/src/buttons/personalities/soft-pill.ts
5540
5592
  var softPill;
5541
5593
  var init_soft_pill = __esm({
@@ -5626,6 +5678,7 @@ var init_personalities = __esm({
5626
5678
  init_editorial_link();
5627
5679
  init_ink_stamp();
5628
5680
  init_pebble();
5681
+ init_showtime_pill();
5629
5682
  init_soft_pill();
5630
5683
  init_types5();
5631
5684
  buttonPersonalities = [
@@ -5634,7 +5687,8 @@ var init_personalities = __esm({
5634
5687
  editorialLink,
5635
5688
  pebble,
5636
5689
  inkStamp,
5637
- brushedWash
5690
+ brushedWash,
5691
+ showtimePill
5638
5692
  ];
5639
5693
  personalitiesById = new Map(
5640
5694
  buttonPersonalities.map((p) => [p.id, p])
@@ -30502,10 +30556,17 @@ var init_footer = __esm({
30502
30556
  });
30503
30557
 
30504
30558
  // ../theme-core/src/layout/generateLayoutCss.ts
30559
+ function svgDataUrl(svg) {
30560
+ return `data:image/svg+xml,${encodeURIComponent(svg)}`;
30561
+ }
30562
+ var waveTransitionMask;
30505
30563
  var init_generateLayoutCss = __esm({
30506
30564
  "../theme-core/src/layout/generateLayoutCss.ts"() {
30507
30565
  "use strict";
30508
30566
  init_breakpoints();
30567
+ waveTransitionMask = svgDataUrl(
30568
+ "<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>"
30569
+ );
30509
30570
  }
30510
30571
  });
30511
30572
 
@@ -32630,14 +32691,7 @@ var proseLinkStyleSchema = z35.object({
32630
32691
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
32631
32692
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
32632
32693
  });
32633
- var semanticSpacingSchema = z35.enum([
32634
- "none",
32635
- "compact",
32636
- "cozy",
32637
- "medium",
32638
- "comfortable",
32639
- "spacious"
32640
- ]);
32694
+ var semanticSpacingSchema = z35.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
32641
32695
  var boxRoundedSchema = z35.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
32642
32696
  var boxBackgroundOverlaySchema = z35.object({
32643
32697
  type: z35.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -32654,6 +32708,7 @@ var boxBackgroundSchema = z35.object({
32654
32708
  scale: z35.string().nullable().optional(),
32655
32709
  position: z35.string().nullable().optional(),
32656
32710
  opacity: z35.number().min(0).max(1).nullable().optional(),
32711
+ motion: z35.enum(["static", "fixed-frame"]).nullable().optional(),
32657
32712
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
32658
32713
  textColor: z35.string().nullable().optional(),
32659
32714
  headingColor: z35.string().nullable().optional()
@@ -32661,7 +32716,7 @@ var boxBackgroundSchema = z35.object({
32661
32716
  var sectionStylesOverrideSchema = z35.object({
32662
32717
  background: boxBackgroundSchema.nullable().optional(),
32663
32718
  spacing: semanticSpacingSchema.nullable().optional(),
32664
- minHeight: z35.enum(["none", "hero", "immersive"]).nullable().optional()
32719
+ minHeight: z35.enum(["none", "banner", "hero", "immersive"]).nullable().optional()
32665
32720
  });
32666
32721
  var containerStylesOverrideSchema = z35.object({
32667
32722
  background: boxBackgroundSchema.nullable().optional(),
@@ -32680,7 +32735,8 @@ var cardStylesOverrideSchema = z35.object({
32680
32735
  border: cardBorderOverrideSchema.nullable().optional(),
32681
32736
  spacing: semanticSpacingSchema.nullable().optional(),
32682
32737
  raised: z35.boolean().nullable().optional(),
32683
- rounded: boxRoundedSchema.nullable().optional()
32738
+ rounded: boxRoundedSchema.nullable().optional(),
32739
+ treatment: z35.enum(["accent-quote"]).nullable().optional()
32684
32740
  });
32685
32741
  var blockStyleOverridesSchema = z35.object({
32686
32742
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
@@ -32755,15 +32811,7 @@ var inputStyle = z35.object({
32755
32811
  });
32756
32812
  var headerVariant = z35.enum(["classic", "centered", "transparent", "floating", "editorial"]);
32757
32813
  var headerPositioning = z35.enum(["static", "sticky", "fixed"]);
32758
- var headerNavStyle = z35.enum([
32759
- "minimal",
32760
- "underline",
32761
- "underline-grow",
32762
- "capsule",
32763
- "scale",
32764
- "frosted",
32765
- "solid"
32766
- ]);
32814
+ var headerNavStyle = z35.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
32767
32815
  var navFontWeight = z35.enum(["regular", "medium", "semibold", "bold"]);
32768
32816
  var headerMaxWidth = z35.enum(["container", "full"]);
32769
32817
  var headerContainerSchema = z35.object({
@@ -32817,6 +32865,7 @@ var dropdownStyleSchema = z35.object({
32817
32865
  // optional = no override (browser default)
32818
32866
  }).optional();
32819
32867
  var headerCtaGapSchema = z35.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
32868
+ var headerCtaTreatmentSchema = z35.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
32820
32869
  var navContainerSchema = z35.object({
32821
32870
  type: z35.enum(["none", "pill", "glass"]).default("none"),
32822
32871
  tint: z35.string().nullable().optional(),
@@ -32835,7 +32884,10 @@ var headerSchema = z35.object({
32835
32884
  shrinkOnScroll: z35.boolean(),
32836
32885
  maxWidth: headerMaxWidth,
32837
32886
  logoOverride: mediaSchema2.nullable().optional(),
32838
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
32887
+ background: headerBackgroundSchema.default({
32888
+ type: "color",
32889
+ color: "surface"
32890
+ }),
32839
32891
  textColor: z35.string().nullable().optional(),
32840
32892
  // Site title and general header text
32841
32893
  navStyle: headerNavStyle,
@@ -32855,6 +32907,13 @@ var headerSchema = z35.object({
32855
32907
  navLinkStyle: navLinkStyleSchema.optional(),
32856
32908
  // CTA button spacing (desktop left margin)
32857
32909
  ctaGap: headerCtaGapSchema.optional(),
32910
+ // Semantic CTA treatment for header/nav CTA buttons. The Theme V2 compiler
32911
+ // materializes this to ctaVariant against the active button personality.
32912
+ ctaTreatment: headerCtaTreatmentSchema.optional(),
32913
+ // Optional theme-level CTA variant for header/nav CTA buttons.
32914
+ // Internal runtime bridge for the block renderer; prefer ctaTreatment in
32915
+ // authored Theme V2 concepts.
32916
+ ctaVariant: z35.string().min(1).optional(),
32858
32917
  // Dropdown menu styling (nav dropdowns and mobile drawer)
32859
32918
  dropdownStyle: dropdownStyleSchema
32860
32919
  });
@@ -32911,7 +32970,10 @@ var footerSchema = z35.object({
32911
32970
  variant: footerVariant,
32912
32971
  maxWidth: footerMaxWidth,
32913
32972
  showLogoText: z35.boolean().optional(),
32914
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
32973
+ background: headerBackgroundSchema.default({
32974
+ type: "color",
32975
+ color: "surface"
32976
+ }),
32915
32977
  // Footer nav styling (independent from header)
32916
32978
  navStyle: headerNavStyle.default("minimal"),
32917
32979
  navColor: z35.string().nullable().optional(),
@@ -32933,17 +32995,7 @@ var layoutSchema = z35.object({
32933
32995
  desktop: containerPaddingPresetSchema.optional()
32934
32996
  }).optional()
32935
32997
  }).optional();
32936
- var heroTypographySizeSchema = z35.enum([
32937
- "sm",
32938
- "base",
32939
- "lg",
32940
- "xl",
32941
- "2xl",
32942
- "3xl",
32943
- "4xl",
32944
- "5xl",
32945
- "6xl"
32946
- ]);
32998
+ var heroTypographySizeSchema = z35.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
32947
32999
  var heroTypographyLineHeightSchema = z35.enum(["tight", "snug", "normal", "relaxed"]);
32948
33000
  var heroResponsiveTypographySchema = z35.object({
32949
33001
  headlineSize: heroTypographySizeSchema.optional(),
@@ -32968,6 +33020,13 @@ var heroTypographySchema = z35.object({
32968
33020
  var heroSchema = z35.object({
32969
33021
  typography: heroTypographySchema.optional()
32970
33022
  }).optional();
33023
+ var bodyTextIntroTypographySizeSchema = z35.enum(["default", "editorial"]);
33024
+ var bodyTextSchema = z35.object({
33025
+ intro: z35.object({
33026
+ paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
33027
+ headingSize: bodyTextIntroTypographySizeSchema.optional()
33028
+ }).optional()
33029
+ }).optional();
32971
33030
  var gradientsSchema = z35.object({
32972
33031
  button: z35.string().min(1).nullable().optional(),
32973
33032
  hero: z35.string().min(1).nullable().optional(),
@@ -32989,6 +33048,7 @@ var themeSchema = z35.object({
32989
33048
  gradients: gradientsSchema.optional(),
32990
33049
  layout: layoutSchema,
32991
33050
  hero: heroSchema,
33051
+ bodyText: bodyTextSchema,
32992
33052
  header: headerSchema,
32993
33053
  footer: footerSchema,
32994
33054
  buttons: buttonSystemSchema.optional(),
@@ -33012,10 +33072,7 @@ var themeSchema = z35.object({
33012
33072
  ).optional(),
33013
33073
  // Structured block-kind theme overrides (v1: typography prose-link style only)
33014
33074
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
33015
- blockOverrides: z35.record(
33016
- z35.string(),
33017
- blockThemeOverrideSchema
33018
- ).optional(),
33075
+ blockOverrides: z35.record(z35.string(), blockThemeOverrideSchema).optional(),
33019
33076
  // Structured custom CSS rules
33020
33077
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
33021
33078
  customCssRules: customCssRulesSchema,
@@ -33186,6 +33243,28 @@ var brandLedJewel = definePaletteVariant({
33186
33243
  { name: "border", hex: "#a8a29e" }
33187
33244
  ]
33188
33245
  });
33246
+ var brandLedBurgundyGold = definePaletteVariant({
33247
+ id: "brand-led-burgundy-gold",
33248
+ name: "Brand-led \u2014 Burgundy Gold",
33249
+ description: "Deep burgundy with warm gold accents and soft neutral grounds.",
33250
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
33251
+ mode: "light",
33252
+ colors: [
33253
+ { name: "primary", hex: "#7c2e38" },
33254
+ { name: "secondary", hex: "#d4af37" },
33255
+ { name: "accent", hex: "#b8e19a" },
33256
+ { name: "success", hex: "#10b981" },
33257
+ { name: "warning", hex: "#f59e0b" },
33258
+ { name: "destructive", hex: "#ef4444" },
33259
+ { name: "background", hex: "#f1dfd0" },
33260
+ { name: "surface", hex: "#f5e6db" },
33261
+ { name: "surfaceAlt", hex: "#f8ece3" },
33262
+ { name: "muted", hex: "#c9b8a8" },
33263
+ { name: "text", hex: "#400000" },
33264
+ { name: "primaryForeground", hex: "#ffffff" },
33265
+ { name: "border", hex: "#c9b8a8" }
33266
+ ]
33267
+ });
33189
33268
 
33190
33269
  // ../theme-core/src/palette/variants/high-contrast.ts
33191
33270
  var highContrastInk = definePaletteVariant({
@@ -33397,6 +33476,7 @@ var paletteVariants = [
33397
33476
  brandLedCool,
33398
33477
  brandLedWarm,
33399
33478
  brandLedJewel,
33479
+ brandLedBurgundyGold,
33400
33480
  // Warm-neutral family
33401
33481
  warmNeutralClay,
33402
33482
  warmNeutralCream,