@riverbankcms/sdk 0.60.11 → 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 (96) hide show
  1. package/README.md +10 -7
  2. package/dist/_dts/api/src/accessAdmin.d.ts +102 -0
  3. package/dist/_dts/api/src/bookingConfig.d.ts +31 -1
  4. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +38 -1
  5. package/dist/_dts/api/src/bookingOperations.d.ts +3 -0
  6. package/dist/_dts/api/src/bookingRecords.d.ts +45 -0
  7. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +4 -4
  8. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +1 -5
  9. package/dist/_dts/api/src/common/envelope.d.ts +1 -1
  10. package/dist/_dts/api/src/communications.d.ts +1 -1
  11. package/dist/_dts/api/src/contentRuntime.d.ts +1 -1
  12. package/dist/_dts/api/src/domains.d.ts +14 -13
  13. package/dist/_dts/api/src/endpoints.d.ts +121 -9
  14. package/dist/_dts/api/src/index.d.ts +3 -2
  15. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
  16. package/dist/_dts/api/src/seoEndpoints.d.ts +2 -0
  17. package/dist/_dts/api/src/siteAssets.d.ts +0 -10
  18. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +15 -1
  19. package/dist/_dts/api/src/types.d.ts +1 -1
  20. package/dist/_dts/blocks/src/PageRenderer.d.ts +1 -0
  21. package/dist/_dts/blocks/src/index.d.ts +1 -0
  22. package/dist/_dts/blocks/src/portal/types.d.ts +1 -1
  23. package/dist/_dts/blocks/src/server.d.ts +1 -0
  24. package/dist/_dts/blocks/src/subroutes/fold.d.ts +40 -0
  25. package/dist/_dts/blocks/src/subroutes/formatDate.d.ts +12 -0
  26. package/dist/_dts/blocks/src/subroutes/index.d.ts +3 -0
  27. package/dist/_dts/blocks/src/subroutes/kinds.d.ts +32 -0
  28. package/dist/_dts/blocks/src/system/fields/boxStyles.d.ts +3 -1
  29. package/dist/_dts/blocks/src/system/helpers/resolveBackground.d.ts +2 -0
  30. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +1 -0
  31. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +1 -0
  32. package/dist/_dts/blocks/src/system/spacing.d.ts +2 -1
  33. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +5 -0
  34. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +5 -1
  35. package/dist/_dts/core/src/booking-refunds.d.ts +8 -0
  36. package/dist/_dts/core/src/participant-identity.d.ts +1 -1
  37. package/dist/_dts/core/src/participants.d.ts +19 -7
  38. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +284 -96
  39. package/dist/_dts/db/src/schemas/forms.d.ts +135 -24
  40. package/dist/_dts/preview-next/src/client/preview/EntryEditorPanel.d.ts +3 -3
  41. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +3 -3
  42. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +3 -3
  43. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +3 -3
  44. package/dist/_dts/preview-next/src/client/preview/SubrouteNoticePanel.d.ts +13 -0
  45. package/dist/_dts/preview-next/src/client/preview/subrouteNotice.d.ts +26 -0
  46. package/dist/_dts/sdk/src/contracts/page.d.ts +1 -0
  47. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -1
  48. package/dist/_dts/sdk/src/rendering/islands/types.d.ts +1 -0
  49. package/dist/_dts/sdk/src/routing/resolvePageContent.d.ts +4 -5
  50. package/dist/_dts/sdk/src/version.d.ts +1 -1
  51. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  52. package/dist/_dts/theme-core/src/buttons/personalities/showtime-pill.d.ts +17 -0
  53. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -1
  54. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  55. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +66 -30
  56. package/dist/_dts/theme-core/src/palette/variants/brand-led.d.ts +16 -0
  57. package/dist/_dts/theme-core/src/palette/variants/index.d.ts +15 -0
  58. package/dist/_dts/theme-core/src/palette/variants/types.d.ts +3 -3
  59. package/dist/_dts/theme-core/src/schema.d.ts +174 -6
  60. package/dist/_dts/theme-core/src/site-styles/appearancePresets.d.ts +328 -15
  61. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +54 -2
  62. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +124 -0
  63. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  64. package/dist/_dts/theme-core/src/site-styles/index.d.ts +1 -0
  65. package/dist/_dts/theme-core/src/site-styles/lookResolution.d.ts +21 -0
  66. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +2 -1
  67. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +1 -1
  68. package/dist/_dts/theme-core/src/site-styles/types.d.ts +135 -2
  69. package/dist/_dts/ui/src/badge.d.ts +1 -1
  70. package/dist/_dts/ui/src/button.d.ts +1 -1
  71. package/dist/cli/index.mjs +801 -115
  72. package/dist/client/bookings.mjs +115 -1
  73. package/dist/client/client.mjs +905 -166
  74. package/dist/client/hooks.mjs +794 -111
  75. package/dist/client/rendering/client.mjs +179 -39
  76. package/dist/client/rendering/islands.mjs +179 -38
  77. package/dist/client/rendering.mjs +904 -165
  78. package/dist/preview-next/before-render.mjs +160 -16
  79. package/dist/preview-next/client/runtime.mjs +1674 -260
  80. package/dist/preview-next/middleware.mjs +160 -16
  81. package/dist/server/components.mjs +895 -165
  82. package/dist/server/config-validation.mjs +794 -111
  83. package/dist/server/config.mjs +794 -111
  84. package/dist/server/data.mjs +794 -111
  85. package/dist/server/index.mjs +163 -17
  86. package/dist/server/next.mjs +898 -167
  87. package/dist/server/page-converter.mjs +589 -82
  88. package/dist/server/prebuild.mjs +1 -1
  89. package/dist/server/rendering/server.mjs +895 -165
  90. package/dist/server/rendering.mjs +895 -165
  91. package/dist/server/routing.mjs +828 -117
  92. package/dist/server/server.mjs +795 -112
  93. package/dist/server/theme-bridge.mjs +216 -39
  94. package/dist/server/theme.mjs +139 -37
  95. package/dist/styles/index.css +44 -2
  96. package/package.json +1 -1
@@ -609,7 +609,7 @@ var init_endpoints = __esm({
609
609
  method: "GET",
610
610
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
611
611
  auth: "user",
612
- responseKind: "text"
612
+ responseKind: "blob"
613
613
  },
614
614
  getNewsletterSubscriber: {
615
615
  path: "/sites/{siteId}/newsletter/subscribers/{subscriberId}",
@@ -940,12 +940,7 @@ var init_endpoints = __esm({
940
940
  ],
941
941
  auth: "user",
942
942
  responseKind: "json",
943
- errors: [
944
- "validation:invalid_input",
945
- "resource:not_found",
946
- "resource:conflict",
947
- "server:internal_error"
948
- ]
943
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
949
944
  },
950
945
  unpublishTeamMemberProfile: {
951
946
  path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/unpublish",
@@ -1198,6 +1193,13 @@ var init_endpoints = __esm({
1198
1193
  auth: "user",
1199
1194
  responseKind: "json"
1200
1195
  },
1196
+ exportBookingAppointmentsCsv: {
1197
+ path: "/sites/{siteId}/bookings/appointments/export.csv",
1198
+ method: "GET",
1199
+ auth: "user",
1200
+ errors: [],
1201
+ responseKind: "blob"
1202
+ },
1201
1203
  createAppointment: {
1202
1204
  path: "/sites/{siteId}/bookings/appointments",
1203
1205
  method: "POST",
@@ -1325,6 +1327,13 @@ var init_endpoints = __esm({
1325
1327
  auth: "user",
1326
1328
  responseKind: "json"
1327
1329
  },
1330
+ exportCourseEnrollmentsCsv: {
1331
+ path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/export.csv",
1332
+ method: "GET",
1333
+ auth: "user",
1334
+ errors: [],
1335
+ responseKind: "blob"
1336
+ },
1328
1337
  listCourseWaitlist: {
1329
1338
  path: "/sites/{siteId}/bookings/courses/{courseId}/waitlist",
1330
1339
  method: "GET",
@@ -2083,6 +2092,63 @@ var init_endpoints = __esm({
2083
2092
  auth: "user",
2084
2093
  responseKind: "json"
2085
2094
  },
2095
+ updateRegisteredDomainContact: {
2096
+ path: "/domains/{domainId}/registrar/contact",
2097
+ method: "POST",
2098
+ errors: [
2099
+ "validation:invalid_input",
2100
+ "resource:not_found",
2101
+ "auth:forbidden",
2102
+ "external:service_error",
2103
+ "external:registrar_orphaned_contact_profile",
2104
+ "server:internal_error"
2105
+ ],
2106
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2107
+ auth: "user",
2108
+ responseKind: "json"
2109
+ },
2110
+ setRegisteredDomainPrivacy: {
2111
+ path: "/domains/{domainId}/registrar/privacy",
2112
+ method: "POST",
2113
+ errors: [
2114
+ "validation:invalid_input",
2115
+ "resource:not_found",
2116
+ "auth:forbidden",
2117
+ "external:service_error",
2118
+ "server:internal_error"
2119
+ ],
2120
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2121
+ auth: "user",
2122
+ responseKind: "json"
2123
+ },
2124
+ setRegisteredDomainAutoRenew: {
2125
+ path: "/domains/{domainId}/registrar/auto-renew",
2126
+ method: "POST",
2127
+ errors: [
2128
+ "validation:invalid_input",
2129
+ "resource:not_found",
2130
+ "auth:forbidden",
2131
+ "external:service_error",
2132
+ "server:internal_error"
2133
+ ],
2134
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2135
+ auth: "user",
2136
+ responseKind: "json"
2137
+ },
2138
+ getRegisteredDomainRenewalPosture: {
2139
+ path: "/domains/{domainId}/registrar/renewal",
2140
+ method: "GET",
2141
+ errors: [
2142
+ "validation:invalid_input",
2143
+ "resource:not_found",
2144
+ "auth:forbidden",
2145
+ "external:service_error",
2146
+ "server:internal_error"
2147
+ ],
2148
+ tags: ["domains", "domain-{domainId}", "domain-registrar"],
2149
+ auth: "user",
2150
+ responseKind: "json"
2151
+ },
2086
2152
  retryDomainVercel: {
2087
2153
  path: "/domains/{domainId}/vercel",
2088
2154
  method: "POST",
@@ -2630,6 +2696,14 @@ var init_endpoints = __esm({
2630
2696
  auth: "user",
2631
2697
  responseKind: "json"
2632
2698
  },
2699
+ exportSeoPagesCsv: {
2700
+ path: "/sites/{siteId}/seo/pages",
2701
+ method: "GET",
2702
+ tags: ["site-{siteId}", "seo-pages-{siteId}"],
2703
+ auth: "user",
2704
+ responseKind: "blob",
2705
+ errors: []
2706
+ },
2633
2707
  getSeoQueries: {
2634
2708
  path: "/sites/{siteId}/seo/queries",
2635
2709
  method: "GET",
@@ -2638,6 +2712,14 @@ var init_endpoints = __esm({
2638
2712
  auth: "user",
2639
2713
  responseKind: "json"
2640
2714
  },
2715
+ exportSeoQueriesCsv: {
2716
+ path: "/sites/{siteId}/seo/queries",
2717
+ method: "GET",
2718
+ tags: ["site-{siteId}", "seo-queries-{siteId}"],
2719
+ auth: "user",
2720
+ responseKind: "blob",
2721
+ errors: []
2722
+ },
2641
2723
  getPerformanceOverview: {
2642
2724
  path: "/sites/{siteId}/performance/overview",
2643
2725
  method: "GET",
@@ -2686,7 +2768,12 @@ var init_endpoints = __esm({
2686
2768
  path: "/media/{assetId}/canonical-crop",
2687
2769
  method: "POST",
2688
2770
  tags: ["media", "media-{assetId}"],
2689
- errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"],
2771
+ errors: [
2772
+ "validation:invalid_input",
2773
+ "resource:not_found",
2774
+ "resource:conflict",
2775
+ "server:internal_error"
2776
+ ],
2690
2777
  auth: "user",
2691
2778
  responseKind: "json"
2692
2779
  },
@@ -3018,7 +3105,7 @@ var init_endpoints = __esm({
3018
3105
  method: "GET",
3019
3106
  tags: [TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug],
3020
3107
  auth: "user",
3021
- responseKind: "text"
3108
+ responseKind: "blob"
3022
3109
  },
3023
3110
  // Public submit
3024
3111
  submitForm: {
@@ -3901,6 +3988,14 @@ var init_endpoints = __esm({
3901
3988
  auth: "user",
3902
3989
  responseKind: "json"
3903
3990
  },
3991
+ exportEventSeriesAttendeesCsv: {
3992
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/attendees/export.csv",
3993
+ method: "GET",
3994
+ tags: ["site-{siteId}", "event-series-{seriesId}"],
3995
+ auth: "user",
3996
+ errors: [],
3997
+ responseKind: "blob"
3998
+ },
3904
3999
  listEventSeriesWaitlist: {
3905
4000
  path: "/sites/{siteId}/bookings/event-series/{seriesId}/waitlist",
3906
4001
  method: "GET",
@@ -4464,6 +4559,14 @@ var init_endpoints = __esm({
4464
4559
  auth: "user",
4465
4560
  responseKind: "json"
4466
4561
  },
4562
+ exportBookingCustomersCsv: {
4563
+ path: "/sites/{siteId}/bookings/customers/export.csv",
4564
+ method: "GET",
4565
+ tags: ["site-{siteId}", "customers-{siteId}"],
4566
+ auth: "user",
4567
+ errors: [],
4568
+ responseKind: "blob"
4569
+ },
4467
4570
  createBookingCustomer: {
4468
4571
  path: "/sites/{siteId}/bookings/customers",
4469
4572
  method: "POST",
@@ -4491,6 +4594,21 @@ var init_endpoints = __esm({
4491
4594
  "server:internal_error"
4492
4595
  ]
4493
4596
  },
4597
+ rectifyBookingParticipantIdentity: {
4598
+ path: "/sites/{siteId}/bookings/participants/{participantId}/identity",
4599
+ method: "PATCH",
4600
+ tags: ["site-{siteId}", "customers-{siteId}"],
4601
+ auth: "user",
4602
+ responseKind: "json",
4603
+ errors: [
4604
+ "validation:invalid_input",
4605
+ "auth:forbidden",
4606
+ "resource:not_found",
4607
+ "resource:already_exists",
4608
+ "resource:conflict",
4609
+ "server:internal_error"
4610
+ ]
4611
+ },
4494
4612
  listCustomerPasses: {
4495
4613
  path: "/sites/{siteId}/bookings/customers/{customerId}/passes",
4496
4614
  method: "GET",
@@ -4625,13 +4743,46 @@ var init_endpoints = __esm({
4625
4743
  auth: "user",
4626
4744
  responseKind: "json"
4627
4745
  },
4746
+ exportMoneyPaymentsCsv: {
4747
+ path: "/sites/{siteId}/bookings/money/payments/export.csv",
4748
+ method: "GET",
4749
+ tags: ["site-{siteId}", "bookings", "money-payments-{siteId}"],
4750
+ errors: [],
4751
+ auth: "user",
4752
+ responseKind: "blob"
4753
+ },
4754
+ exportMoneyBreakdownsCsv: {
4755
+ path: "/sites/{siteId}/bookings/money/report/breakdowns/export.csv",
4756
+ method: "GET",
4757
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
4758
+ errors: [],
4759
+ auth: "user",
4760
+ responseKind: "blob"
4761
+ },
4762
+ exportMoneyTimeSeriesCsv: {
4763
+ path: "/sites/{siteId}/bookings/money/report/time-series/export.csv",
4764
+ method: "GET",
4765
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
4766
+ errors: [],
4767
+ auth: "user",
4768
+ responseKind: "blob"
4769
+ },
4628
4770
  listBookingActivity: {
4629
4771
  path: "/sites/{siteId}/bookings/activity",
4630
4772
  method: "GET",
4631
4773
  tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
4774
+ errors: [],
4632
4775
  auth: "user",
4633
4776
  responseKind: "json"
4634
4777
  },
4778
+ exportBookingActivityCsv: {
4779
+ path: "/sites/{siteId}/bookings/activity/export.csv",
4780
+ method: "GET",
4781
+ tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
4782
+ errors: [],
4783
+ auth: "user",
4784
+ responseKind: "blob"
4785
+ },
4635
4786
  // Site logs
4636
4787
  listSiteActivityLogs: {
4637
4788
  path: "/sites/{siteId}/logs/activity",
@@ -4783,13 +4934,6 @@ var init_endpoints = __esm({
4783
4934
  auth: "user",
4784
4935
  responseKind: "blob"
4785
4936
  },
4786
- exportSeoCsv: {
4787
- path: "/sites/{siteId}/seo/export",
4788
- method: "GET",
4789
- tags: ["site-{siteId}", "seo"],
4790
- auth: "user",
4791
- responseKind: "blob"
4792
- },
4793
4937
  // Admin site cost (for admin panel)
4794
4938
  adminSiteCost: {
4795
4939
  path: "/admin/sites/{siteId}/cost",
@@ -7661,6 +7805,8 @@ var init_bookingRefundOutcomes = __esm({
7661
7805
  STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
7662
7806
  "missing_amount",
7663
7807
  "amount_exceeds_remaining",
7808
+ "credit_refunds_disabled",
7809
+ "missing_credit_customer",
7664
7810
  "deposit_refund_override_required",
7665
7811
  "refund_revoke_requires_full_line_refund",
7666
7812
  "unified_order_link_required"
@@ -8313,6 +8459,13 @@ var init_routes = __esm({
8313
8459
  }
8314
8460
  });
8315
8461
 
8462
+ // ../api/src/bookingConfig.ts
8463
+ var init_bookingConfig = __esm({
8464
+ "../api/src/bookingConfig.ts"() {
8465
+ "use strict";
8466
+ }
8467
+ });
8468
+
8316
8469
  // ../api/src/emailSettings.ts
8317
8470
  var init_emailSettings = __esm({
8318
8471
  "../api/src/emailSettings.ts"() {
@@ -8582,7 +8735,11 @@ function defineFrameCapability(capability) {
8582
8735
  function defineBlockDesignCapability(capability) {
8583
8736
  return {
8584
8737
  ...capability,
8585
- kind: "designed"
8738
+ kind: "designed",
8739
+ sectionHeights: capability.sectionHeights ?? ["default"],
8740
+ imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
8741
+ imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
8742
+ testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"]
8586
8743
  };
8587
8744
  }
8588
8745
  var plainFrame;
@@ -8596,7 +8753,20 @@ var init_types3 = __esm({
8596
8753
  });
8597
8754
 
8598
8755
  // ../theme-core/src/site-styles/appearancePresets.ts
8756
+ function assertValidOptionGroups(preset2) {
8757
+ preset2.optionGroups?.forEach((group) => {
8758
+ const selectedOption = group.options.find(
8759
+ (option) => option.id === group.selectedOptionId
8760
+ );
8761
+ if (!selectedOption) {
8762
+ throw new Error(
8763
+ `Appearance preset "${preset2.id}" option group "${group.id}" selects missing option "${group.selectedOptionId}".`
8764
+ );
8765
+ }
8766
+ });
8767
+ }
8599
8768
  function defineBlockAppearancePreset(preset2) {
8769
+ assertValidOptionGroups(preset2);
8600
8770
  return preset2;
8601
8771
  }
8602
8772
  function defineSiteChromeAppearancePreset(preset2) {
@@ -8614,13 +8784,122 @@ var init_appearancePresets = __esm({
8614
8784
  target: "hero",
8615
8785
  label: "Immersive image hero",
8616
8786
  blockKinds: ["block.hero"],
8787
+ constraints: {
8788
+ layoutFamilies: ["centered", "compact"]
8789
+ },
8790
+ design: {
8791
+ sectionSurface: "hero-image",
8792
+ contentFrame: plainFrame,
8793
+ itemSurface: "none",
8794
+ transitionAfter: "soft-fade-short",
8795
+ emphasis: "high",
8796
+ sectionHeight: "hero",
8797
+ imageSurfaceTreatment: { kind: "neutral-wash" }
8798
+ }
8799
+ }),
8800
+ defineBlockAppearancePreset({
8801
+ kind: "block-design",
8802
+ id: "hero-brand-scrim",
8803
+ target: "hero",
8804
+ label: "Brand scrim image hero",
8805
+ blockKinds: ["block.hero"],
8806
+ constraints: {
8807
+ layoutFamilies: ["centered", "compact"]
8808
+ },
8809
+ optionGroups: [
8810
+ {
8811
+ id: "image-surface-treatment",
8812
+ label: "Treatment",
8813
+ selectedOptionId: "brand-scrim-primary",
8814
+ options: [
8815
+ {
8816
+ id: "brand-scrim-primary",
8817
+ label: "Brand scrim",
8818
+ designPatch: {
8819
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
8820
+ }
8821
+ },
8822
+ {
8823
+ id: "neutral-scrim",
8824
+ label: "Neutral scrim",
8825
+ designPatch: {
8826
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
8827
+ }
8828
+ }
8829
+ ]
8830
+ }
8831
+ ],
8832
+ layoutPatches: [
8833
+ {
8834
+ constraints: {
8835
+ layoutVariantKeys: ["micro"]
8836
+ },
8837
+ designPatch: {
8838
+ sectionHeight: "banner"
8839
+ }
8840
+ }
8841
+ ],
8617
8842
  design: {
8618
8843
  sectionSurface: "hero-image",
8619
8844
  contentFrame: plainFrame,
8620
8845
  itemSurface: "none",
8621
8846
  transitionAfter: "soft-fade-short",
8622
8847
  emphasis: "high",
8623
- heroLegibility: "scrim-gradient"
8848
+ sectionHeight: "immersive",
8849
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
8850
+ }
8851
+ }),
8852
+ defineBlockAppearancePreset({
8853
+ kind: "block-design",
8854
+ id: "hero-brand-scrim-fixed-frame",
8855
+ target: "hero",
8856
+ label: "Fixed-frame brand scrim hero",
8857
+ blockKinds: ["block.hero"],
8858
+ constraints: {
8859
+ layoutFamilies: ["centered", "compact"]
8860
+ },
8861
+ optionGroups: [
8862
+ {
8863
+ id: "image-surface-treatment",
8864
+ label: "Treatment",
8865
+ selectedOptionId: "brand-scrim-primary",
8866
+ options: [
8867
+ {
8868
+ id: "brand-scrim-primary",
8869
+ label: "Brand scrim",
8870
+ designPatch: {
8871
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
8872
+ }
8873
+ },
8874
+ {
8875
+ id: "neutral-scrim",
8876
+ label: "Neutral scrim",
8877
+ designPatch: {
8878
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
8879
+ }
8880
+ }
8881
+ ]
8882
+ }
8883
+ ],
8884
+ layoutPatches: [
8885
+ {
8886
+ constraints: {
8887
+ layoutVariantKeys: ["micro"]
8888
+ },
8889
+ designPatch: {
8890
+ sectionHeight: "banner"
8891
+ }
8892
+ }
8893
+ ],
8894
+ design: {
8895
+ sectionSurface: "hero-image",
8896
+ contentFrame: plainFrame,
8897
+ itemSurface: "none",
8898
+ transitionAfter: "soft-fade-short",
8899
+ emphasis: "high",
8900
+ sectionHeight: "immersive",
8901
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
8902
+ imageSurfaceMotion: "fixed-frame"
8624
8903
  }
8625
8904
  }),
8626
8905
  defineBlockAppearancePreset({
@@ -8637,17 +8916,26 @@ var init_appearancePresets = __esm({
8637
8916
  emphasis: "high"
8638
8917
  }
8639
8918
  }),
8919
+ defineBlockAppearancePreset({
8920
+ kind: "block-design",
8921
+ id: "body-text-editorial-intro",
8922
+ target: "body-text",
8923
+ label: "Editorial intro copy",
8924
+ blockKinds: ["block.body-text"],
8925
+ design: {
8926
+ sectionSurface: "base",
8927
+ contentFrame: plainFrame,
8928
+ itemSurface: "none",
8929
+ transitionAfter: "soft-fade-short",
8930
+ emphasis: "high"
8931
+ }
8932
+ }),
8640
8933
  defineBlockAppearancePreset({
8641
8934
  kind: "block-design",
8642
8935
  id: "offerings-calm-list",
8643
8936
  target: "offerings",
8644
8937
  label: "Calm offerings list",
8645
- blockKinds: [
8646
- "block.event-listing",
8647
- "block.event-calendar",
8648
- "block.event-spotlight",
8649
- "block.product-list"
8650
- ],
8938
+ blockKinds: ["block.event-listing", "block.event-calendar", "block.event-spotlight", "block.product-list"],
8651
8939
  design: {
8652
8940
  sectionSurface: "muted-band",
8653
8941
  contentFrame: plainFrame,
@@ -8726,6 +9014,35 @@ var init_appearancePresets = __esm({
8726
9014
  emphasis: "high"
8727
9015
  }
8728
9016
  }),
9017
+ defineBlockAppearancePreset({
9018
+ kind: "block-design",
9019
+ id: "testimonials-dark-proof",
9020
+ target: "testimonials",
9021
+ label: "Dark proof panel",
9022
+ blockKinds: ["block.testimonials"],
9023
+ design: {
9024
+ sectionSurface: "accent-band",
9025
+ contentFrame: panelFrame("raised"),
9026
+ itemSurface: "raised",
9027
+ transitionAfter: "soft-fade-short",
9028
+ emphasis: "high"
9029
+ }
9030
+ }),
9031
+ defineBlockAppearancePreset({
9032
+ kind: "block-design",
9033
+ id: "testimonials-accent-quote-proof",
9034
+ target: "testimonials",
9035
+ label: "Accent quote proof",
9036
+ blockKinds: ["block.testimonials"],
9037
+ design: {
9038
+ sectionSurface: "accent-band",
9039
+ contentFrame: plainFrame,
9040
+ itemSurface: "raised",
9041
+ transitionAfter: "soft-fade-short",
9042
+ emphasis: "high",
9043
+ testimonialCardTreatment: "accent-quote"
9044
+ }
9045
+ }),
8729
9046
  defineBlockAppearancePreset({
8730
9047
  kind: "block-design",
8731
9048
  id: "faq-contained-help",
@@ -8754,6 +9071,20 @@ var init_appearancePresets = __esm({
8754
9071
  emphasis: "medium"
8755
9072
  }
8756
9073
  }),
9074
+ defineBlockAppearancePreset({
9075
+ kind: "block-design",
9076
+ id: "contact-form-dark-card",
9077
+ target: "contact-form",
9078
+ label: "Dark form card",
9079
+ blockKinds: ["block.form"],
9080
+ design: {
9081
+ sectionSurface: "accent-band",
9082
+ contentFrame: panelFrame("raised"),
9083
+ itemSurface: "none",
9084
+ transitionAfter: "soft-fade-short",
9085
+ emphasis: "high"
9086
+ }
9087
+ }),
8757
9088
  defineBlockAppearancePreset({
8758
9089
  kind: "block-design",
8759
9090
  id: "cta-accent-band",
@@ -8773,9 +9104,33 @@ var init_appearancePresets = __esm({
8773
9104
  id: "header-clean-base",
8774
9105
  target: "site-header",
8775
9106
  label: "Clean base header",
8776
- chrome: {
8777
- surface: "base",
8778
- emphasis: "medium"
9107
+ header: {
9108
+ surface: {
9109
+ kind: "neutral-solid",
9110
+ token: "surface",
9111
+ textColorToken: "text"
9112
+ },
9113
+ navTreatment: "minimal",
9114
+ dropdownTreatment: "surface",
9115
+ ctaTreatment: "default",
9116
+ behavior: "default"
9117
+ }
9118
+ }),
9119
+ defineSiteChromeAppearancePreset({
9120
+ kind: "site-chrome",
9121
+ id: "site-header-brand-solid-inverted-cta",
9122
+ target: "site-header",
9123
+ label: "Brand solid header with inverted CTA",
9124
+ header: {
9125
+ surface: {
9126
+ kind: "brand-solid",
9127
+ token: "primary",
9128
+ textColorToken: "primaryForeground"
9129
+ },
9130
+ navTreatment: "uppercase-underline",
9131
+ dropdownTreatment: "matched-solid",
9132
+ ctaTreatment: "inverted",
9133
+ behavior: "sticky-shrink"
8779
9134
  }
8780
9135
  }),
8781
9136
  defineSiteChromeAppearancePreset({
@@ -8783,10 +9138,31 @@ var init_appearancePresets = __esm({
8783
9138
  id: "footer-muted-grounding",
8784
9139
  target: "site-footer",
8785
9140
  label: "Muted grounding footer",
8786
- chrome: {
9141
+ footer: {
9142
+ kind: "grounding",
8787
9143
  surface: "muted-band",
8788
9144
  emphasis: "low"
8789
9145
  }
9146
+ }),
9147
+ defineSiteChromeAppearancePreset({
9148
+ kind: "site-chrome",
9149
+ id: "site-footer-brand-two-band",
9150
+ target: "site-footer",
9151
+ label: "Two-band brand footer",
9152
+ footer: {
9153
+ kind: "brand-two-band",
9154
+ surface: {
9155
+ token: "primary",
9156
+ shade: "800",
9157
+ textColorToken: "primaryForeground"
9158
+ },
9159
+ bottomBand: {
9160
+ token: "primary",
9161
+ shade: "900",
9162
+ textColorToken: "primaryForeground"
9163
+ },
9164
+ emphasis: "high"
9165
+ }
8790
9166
  })
8791
9167
  ];
8792
9168
  }
@@ -9522,6 +9898,118 @@ var init_pebble = __esm({
9522
9898
  }
9523
9899
  });
9524
9900
 
9901
+ // ../theme-core/src/buttons/personalities/showtime-pill.ts
9902
+ var showtimePill;
9903
+ var init_showtime_pill = __esm({
9904
+ "../theme-core/src/buttons/personalities/showtime-pill.ts"() {
9905
+ "use strict";
9906
+ init_types5();
9907
+ showtimePill = defineButtonPersonality({
9908
+ id: "showtime-pill",
9909
+ name: "Showtime Pill",
9910
+ description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
9911
+ tags: { tone: "bold", energy: "vibrant", motion: "expressive", era: "modern" },
9912
+ buttonSystem: {
9913
+ global: {
9914
+ cornerStyle: "pill",
9915
+ shadow: "low",
9916
+ textTransform: "uppercase",
9917
+ fontWeight: 700,
9918
+ borderWidth: 2,
9919
+ hoverTransform: "lift",
9920
+ hoverColor: "darken",
9921
+ typography: "body",
9922
+ paddingPreset: "spacious",
9923
+ italic: false
9924
+ },
9925
+ sizes: {
9926
+ sm: { padding: "0.625rem 1.25rem", fontSize: "0.875rem" },
9927
+ md: { padding: "0.875rem 1.75rem", fontSize: "1rem" },
9928
+ lg: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" },
9929
+ xl: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" }
9930
+ },
9931
+ variants: [
9932
+ {
9933
+ id: "primary",
9934
+ name: "Primary",
9935
+ enabled: true,
9936
+ priority: 1,
9937
+ background: { type: "solid", colorToken: "primary" },
9938
+ textColorToken: "background",
9939
+ borderRadius: "rounded-full",
9940
+ effects: {
9941
+ hover: [{ effectId: "pop" }]
9942
+ }
9943
+ },
9944
+ {
9945
+ id: "secondary",
9946
+ name: "Secondary",
9947
+ enabled: true,
9948
+ priority: 2,
9949
+ background: { type: "transparent" },
9950
+ textColorToken: "primary",
9951
+ borderRadius: "rounded-full",
9952
+ border: { widthClass: "border-2", colorToken: "primary" },
9953
+ effects: {
9954
+ hover: [{ effectId: "pop" }]
9955
+ }
9956
+ },
9957
+ {
9958
+ id: "hero",
9959
+ name: "Hero",
9960
+ enabled: true,
9961
+ priority: 1,
9962
+ background: { type: "solid", colorToken: "secondary" },
9963
+ textColorToken: "primary",
9964
+ borderRadius: "rounded-full",
9965
+ effects: {
9966
+ hover: [{ effectId: "pop" }]
9967
+ }
9968
+ },
9969
+ {
9970
+ id: "header",
9971
+ name: "Header",
9972
+ enabled: true,
9973
+ priority: 2,
9974
+ background: { type: "solid", colorToken: "background" },
9975
+ textColorToken: "primary",
9976
+ borderRadius: "rounded-full",
9977
+ border: { widthClass: "border-2", colorToken: "primary" },
9978
+ effects: {
9979
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
9980
+ }
9981
+ },
9982
+ {
9983
+ id: "outline",
9984
+ name: "Outline",
9985
+ enabled: true,
9986
+ priority: 3,
9987
+ background: { type: "transparent" },
9988
+ textColorToken: "primary",
9989
+ borderRadius: "rounded-full",
9990
+ border: { widthClass: "border-2", colorToken: "primary" },
9991
+ effects: {
9992
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
9993
+ }
9994
+ },
9995
+ {
9996
+ id: "ghost",
9997
+ name: "Ghost",
9998
+ enabled: true,
9999
+ priority: 3,
10000
+ background: { type: "transparent" },
10001
+ textColorToken: "primary",
10002
+ borderRadius: "rounded-full",
10003
+ effects: {
10004
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
10005
+ }
10006
+ }
10007
+ ]
10008
+ }
10009
+ });
10010
+ }
10011
+ });
10012
+
9525
10013
  // ../theme-core/src/buttons/personalities/soft-pill.ts
9526
10014
  var softPill;
9527
10015
  var init_soft_pill = __esm({
@@ -9612,6 +10100,7 @@ var init_personalities = __esm({
9612
10100
  init_editorial_link();
9613
10101
  init_ink_stamp();
9614
10102
  init_pebble();
10103
+ init_showtime_pill();
9615
10104
  init_soft_pill();
9616
10105
  init_types5();
9617
10106
  buttonPersonalities = [
@@ -9620,7 +10109,8 @@ var init_personalities = __esm({
9620
10109
  editorialLink,
9621
10110
  pebble,
9622
10111
  inkStamp,
9623
- brushedWash
10112
+ brushedWash,
10113
+ showtimePill
9624
10114
  ];
9625
10115
  personalitiesById = new Map(
9626
10116
  buttonPersonalities.map((p) => [p.id, p])
@@ -10393,7 +10883,7 @@ var init_shared = __esm({
10393
10883
 
10394
10884
  // ../theme-core/src/schema.ts
10395
10885
  import { z as z23 } from "zod";
10396
- var axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, buttonStyle, cardStyle, inputStyle, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, gradientsSchema, themeSchema, themesTurnSchema;
10886
+ var axesSchema, colourHexString, paletteColorSchema, paletteMetaSchema, paletteSchema, typographyStyleSchema, bodyTypographyStyleSchema, headingSizeSchema, headingTypographyOverridesSchema, headingTypographyStyleSchema, proseLinkUnderlineStyleSchema, proseLinkUnderlineThicknessSchema, proseLinkUnderlineOffsetSchema, proseLinkStyleSchema, semanticSpacingSchema, boxRoundedSchema, boxBackgroundOverlaySchema, boxBackgroundSchema, sectionStylesOverrideSchema, containerStylesOverrideSchema, cardBorderOverrideSchema, cardStylesOverrideSchema, blockStyleOverridesSchema, blockThemeOverrideSchema, typographyScaleSchema, typographySchema, spaceSchema, corners, shadow, border, motion, buttonStyle, cardStyle, inputStyle, headerVariant, headerPositioning, headerNavStyle, navFontWeight, headerMaxWidth, headerContainerSchema, headerBorderSchema, logoStyleSchema, headerLogoTextSchema, navEffectsSchema, dropdownStyleSchema, headerCtaGapSchema, headerCtaTreatmentSchema, navContainerSchema, headerBackgroundSchema, headerSchema, footerVariant, footerMaxWidth, footerMode, footerNavLayoutMode, footerNavLayoutAlign, footerSpacing, footerLogoPlacement, footerLogoSize, footerLogoMaxHeight, footerBottomTextLinkStyleSchema, footerBottomBarSchema, footerNavLayoutSchema, footerLogoSchema, footerSchema, containerPaddingPresetSchema, layoutSchema, heroTypographySizeSchema, heroTypographyLineHeightSchema, heroResponsiveTypographySchema, heroTypographySchema, heroSchema, bodyTextIntroTypographySizeSchema, bodyTextSchema, gradientsSchema, themeSchema, themesTurnSchema;
10397
10887
  var init_schema3 = __esm({
10398
10888
  "../theme-core/src/schema.ts"() {
10399
10889
  "use strict";
@@ -10466,14 +10956,7 @@ var init_schema3 = __esm({
10466
10956
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
10467
10957
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
10468
10958
  });
10469
- semanticSpacingSchema = z23.enum([
10470
- "none",
10471
- "compact",
10472
- "cozy",
10473
- "medium",
10474
- "comfortable",
10475
- "spacious"
10476
- ]);
10959
+ semanticSpacingSchema = z23.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
10477
10960
  boxRoundedSchema = z23.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
10478
10961
  boxBackgroundOverlaySchema = z23.object({
10479
10962
  type: z23.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -10490,6 +10973,7 @@ var init_schema3 = __esm({
10490
10973
  scale: z23.string().nullable().optional(),
10491
10974
  position: z23.string().nullable().optional(),
10492
10975
  opacity: z23.number().min(0).max(1).nullable().optional(),
10976
+ motion: z23.enum(["static", "fixed-frame"]).nullable().optional(),
10493
10977
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
10494
10978
  textColor: z23.string().nullable().optional(),
10495
10979
  headingColor: z23.string().nullable().optional()
@@ -10497,7 +10981,7 @@ var init_schema3 = __esm({
10497
10981
  sectionStylesOverrideSchema = z23.object({
10498
10982
  background: boxBackgroundSchema.nullable().optional(),
10499
10983
  spacing: semanticSpacingSchema.nullable().optional(),
10500
- minHeight: z23.enum(["none", "hero", "immersive"]).nullable().optional()
10984
+ minHeight: z23.enum(["none", "banner", "hero", "immersive"]).nullable().optional()
10501
10985
  });
10502
10986
  containerStylesOverrideSchema = z23.object({
10503
10987
  background: boxBackgroundSchema.nullable().optional(),
@@ -10516,7 +11000,8 @@ var init_schema3 = __esm({
10516
11000
  border: cardBorderOverrideSchema.nullable().optional(),
10517
11001
  spacing: semanticSpacingSchema.nullable().optional(),
10518
11002
  raised: z23.boolean().nullable().optional(),
10519
- rounded: boxRoundedSchema.nullable().optional()
11003
+ rounded: boxRoundedSchema.nullable().optional(),
11004
+ treatment: z23.enum(["accent-quote"]).nullable().optional()
10520
11005
  });
10521
11006
  blockStyleOverridesSchema = z23.object({
10522
11007
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
@@ -10591,15 +11076,7 @@ var init_schema3 = __esm({
10591
11076
  });
10592
11077
  headerVariant = z23.enum(["classic", "centered", "transparent", "floating", "editorial"]);
10593
11078
  headerPositioning = z23.enum(["static", "sticky", "fixed"]);
10594
- headerNavStyle = z23.enum([
10595
- "minimal",
10596
- "underline",
10597
- "underline-grow",
10598
- "capsule",
10599
- "scale",
10600
- "frosted",
10601
- "solid"
10602
- ]);
11079
+ headerNavStyle = z23.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
10603
11080
  navFontWeight = z23.enum(["regular", "medium", "semibold", "bold"]);
10604
11081
  headerMaxWidth = z23.enum(["container", "full"]);
10605
11082
  headerContainerSchema = z23.object({
@@ -10653,6 +11130,7 @@ var init_schema3 = __esm({
10653
11130
  // optional = no override (browser default)
10654
11131
  }).optional();
10655
11132
  headerCtaGapSchema = z23.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
11133
+ headerCtaTreatmentSchema = z23.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
10656
11134
  navContainerSchema = z23.object({
10657
11135
  type: z23.enum(["none", "pill", "glass"]).default("none"),
10658
11136
  tint: z23.string().nullable().optional(),
@@ -10671,7 +11149,10 @@ var init_schema3 = __esm({
10671
11149
  shrinkOnScroll: z23.boolean(),
10672
11150
  maxWidth: headerMaxWidth,
10673
11151
  logoOverride: mediaSchema.nullable().optional(),
10674
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
11152
+ background: headerBackgroundSchema.default({
11153
+ type: "color",
11154
+ color: "surface"
11155
+ }),
10675
11156
  textColor: z23.string().nullable().optional(),
10676
11157
  // Site title and general header text
10677
11158
  navStyle: headerNavStyle,
@@ -10691,6 +11172,13 @@ var init_schema3 = __esm({
10691
11172
  navLinkStyle: navLinkStyleSchema.optional(),
10692
11173
  // CTA button spacing (desktop left margin)
10693
11174
  ctaGap: headerCtaGapSchema.optional(),
11175
+ // Semantic CTA treatment for header/nav CTA buttons. The Theme V2 compiler
11176
+ // materializes this to ctaVariant against the active button personality.
11177
+ ctaTreatment: headerCtaTreatmentSchema.optional(),
11178
+ // Optional theme-level CTA variant for header/nav CTA buttons.
11179
+ // Internal runtime bridge for the block renderer; prefer ctaTreatment in
11180
+ // authored Theme V2 concepts.
11181
+ ctaVariant: z23.string().min(1).optional(),
10694
11182
  // Dropdown menu styling (nav dropdowns and mobile drawer)
10695
11183
  dropdownStyle: dropdownStyleSchema
10696
11184
  });
@@ -10747,7 +11235,10 @@ var init_schema3 = __esm({
10747
11235
  variant: footerVariant,
10748
11236
  maxWidth: footerMaxWidth,
10749
11237
  showLogoText: z23.boolean().optional(),
10750
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
11238
+ background: headerBackgroundSchema.default({
11239
+ type: "color",
11240
+ color: "surface"
11241
+ }),
10751
11242
  // Footer nav styling (independent from header)
10752
11243
  navStyle: headerNavStyle.default("minimal"),
10753
11244
  navColor: z23.string().nullable().optional(),
@@ -10769,17 +11260,7 @@ var init_schema3 = __esm({
10769
11260
  desktop: containerPaddingPresetSchema.optional()
10770
11261
  }).optional()
10771
11262
  }).optional();
10772
- heroTypographySizeSchema = z23.enum([
10773
- "sm",
10774
- "base",
10775
- "lg",
10776
- "xl",
10777
- "2xl",
10778
- "3xl",
10779
- "4xl",
10780
- "5xl",
10781
- "6xl"
10782
- ]);
11263
+ heroTypographySizeSchema = z23.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
10783
11264
  heroTypographyLineHeightSchema = z23.enum(["tight", "snug", "normal", "relaxed"]);
10784
11265
  heroResponsiveTypographySchema = z23.object({
10785
11266
  headlineSize: heroTypographySizeSchema.optional(),
@@ -10804,6 +11285,13 @@ var init_schema3 = __esm({
10804
11285
  heroSchema = z23.object({
10805
11286
  typography: heroTypographySchema.optional()
10806
11287
  }).optional();
11288
+ bodyTextIntroTypographySizeSchema = z23.enum(["default", "editorial"]);
11289
+ bodyTextSchema = z23.object({
11290
+ intro: z23.object({
11291
+ paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
11292
+ headingSize: bodyTextIntroTypographySizeSchema.optional()
11293
+ }).optional()
11294
+ }).optional();
10807
11295
  gradientsSchema = z23.object({
10808
11296
  button: z23.string().min(1).nullable().optional(),
10809
11297
  hero: z23.string().min(1).nullable().optional(),
@@ -10825,6 +11313,7 @@ var init_schema3 = __esm({
10825
11313
  gradients: gradientsSchema.optional(),
10826
11314
  layout: layoutSchema,
10827
11315
  hero: heroSchema,
11316
+ bodyText: bodyTextSchema,
10828
11317
  header: headerSchema,
10829
11318
  footer: footerSchema,
10830
11319
  buttons: buttonSystemSchema.optional(),
@@ -10848,10 +11337,7 @@ var init_schema3 = __esm({
10848
11337
  ).optional(),
10849
11338
  // Structured block-kind theme overrides (v1: typography prose-link style only)
10850
11339
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
10851
- blockOverrides: z23.record(
10852
- z23.string(),
10853
- blockThemeOverrideSchema
10854
- ).optional(),
11340
+ blockOverrides: z23.record(z23.string(), blockThemeOverrideSchema).optional(),
10855
11341
  // Structured custom CSS rules
10856
11342
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
10857
11343
  customCssRules: customCssRulesSchema,
@@ -10967,7 +11453,7 @@ var init_types12 = __esm({
10967
11453
  });
10968
11454
 
10969
11455
  // ../theme-core/src/palette/variants/brand-led.ts
10970
- var brandLedCool, brandLedWarm, brandLedJewel;
11456
+ var brandLedCool, brandLedWarm, brandLedJewel, brandLedBurgundyGold;
10971
11457
  var init_brand_led = __esm({
10972
11458
  "../theme-core/src/palette/variants/brand-led.ts"() {
10973
11459
  "use strict";
@@ -11038,6 +11524,28 @@ var init_brand_led = __esm({
11038
11524
  { name: "border", hex: "#a8a29e" }
11039
11525
  ]
11040
11526
  });
11527
+ brandLedBurgundyGold = definePaletteVariant({
11528
+ id: "brand-led-burgundy-gold",
11529
+ name: "Brand-led \u2014 Burgundy Gold",
11530
+ description: "Deep burgundy with warm gold accents and soft neutral grounds.",
11531
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
11532
+ mode: "light",
11533
+ colors: [
11534
+ { name: "primary", hex: "#7c2e38" },
11535
+ { name: "secondary", hex: "#d4af37" },
11536
+ { name: "accent", hex: "#b8e19a" },
11537
+ { name: "success", hex: "#10b981" },
11538
+ { name: "warning", hex: "#f59e0b" },
11539
+ { name: "destructive", hex: "#ef4444" },
11540
+ { name: "background", hex: "#f1dfd0" },
11541
+ { name: "surface", hex: "#f5e6db" },
11542
+ { name: "surfaceAlt", hex: "#f8ece3" },
11543
+ { name: "muted", hex: "#c9b8a8" },
11544
+ { name: "text", hex: "#400000" },
11545
+ { name: "primaryForeground", hex: "#ffffff" },
11546
+ { name: "border", hex: "#c9b8a8" }
11547
+ ]
11548
+ });
11041
11549
  }
11042
11550
  });
11043
11551
 
@@ -11281,6 +11789,7 @@ var init_variants = __esm({
11281
11789
  brandLedCool,
11282
11790
  brandLedWarm,
11283
11791
  brandLedJewel,
11792
+ brandLedBurgundyGold,
11284
11793
  // Warm-neutral family
11285
11794
  warmNeutralClay,
11286
11795
  warmNeutralCream,
@@ -11385,6 +11894,8 @@ function defineCuratedSiteStyle(input) {
11385
11894
  supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
11386
11895
  supportedTransitions: generatedDesignOptionCatalog.transitions
11387
11896
  },
11897
+ ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
11898
+ recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
11388
11899
  buttonPersonalityChoices: input.buttonPersonalityChoices,
11389
11900
  paletteVariantChoices: input.paletteVariantChoices
11390
11901
  };
@@ -11412,7 +11923,8 @@ var init_curatedSiteStyles = __esm({
11412
11923
  "site-style:quiet-luxury",
11413
11924
  "site-style:practical-services",
11414
11925
  "site-style:modern-wellness",
11415
- "site-style:bold-launch"
11926
+ "site-style:bold-launch",
11927
+ "site-style:south-west-twerk-school"
11416
11928
  ];
11417
11929
  quietBudget = {
11418
11930
  accentDensity: "low",
@@ -11675,6 +12187,101 @@ var init_curatedSiteStyles = __esm({
11675
12187
  paletteChoice("brand-led-jewel"),
11676
12188
  paletteChoice("brand-led-warm")
11677
12189
  ]
12190
+ }),
12191
+ defineCuratedSiteStyle({
12192
+ id: "site-style:south-west-twerk-school",
12193
+ name: "South West Twerk School",
12194
+ description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
12195
+ generationBrief: "Use confident rhythm, bold burgundy-and-gold accents, large editorial intro copy, strong booking routes, and dark feature sections where proof or forms need emphasis.",
12196
+ selectionKeywords: [
12197
+ "dance",
12198
+ "classes",
12199
+ "workshop",
12200
+ "school",
12201
+ "movement",
12202
+ "performance",
12203
+ "community"
12204
+ ],
12205
+ tokenRecipes: {
12206
+ palette: "brand-led",
12207
+ contrast: "maximum",
12208
+ radius: "soft",
12209
+ shadow: "layered",
12210
+ typography: "clean-sans",
12211
+ spacing: "airy",
12212
+ motion: "expressive"
12213
+ },
12214
+ compositionBudget: expressiveBudget,
12215
+ themeOverrides: {
12216
+ typography: {
12217
+ body: {
12218
+ family: "Manrope, system-ui, sans-serif",
12219
+ size: "lg",
12220
+ weight: "regular",
12221
+ lineHeight: "relaxed",
12222
+ letterSpacing: "normal"
12223
+ },
12224
+ headings: {
12225
+ default: {
12226
+ family: '"TAN - PEARL", sans-serif',
12227
+ weight: "bold",
12228
+ lineHeight: "normal",
12229
+ letterSpacing: "tight",
12230
+ colorToken: "primary",
12231
+ italic: null,
12232
+ case: null
12233
+ },
12234
+ h1: {
12235
+ size: "xl",
12236
+ weight: "bold",
12237
+ lineHeight: "normal",
12238
+ letterSpacing: "tight",
12239
+ italic: null
12240
+ },
12241
+ h2: {
12242
+ size: "lg",
12243
+ weight: "bold",
12244
+ lineHeight: "normal",
12245
+ letterSpacing: "normal",
12246
+ italic: null
12247
+ },
12248
+ h3: {
12249
+ size: "md",
12250
+ weight: "bold",
12251
+ lineHeight: "normal",
12252
+ letterSpacing: "normal",
12253
+ italic: null
12254
+ }
12255
+ },
12256
+ scale: "balanced"
12257
+ },
12258
+ bodyText: {
12259
+ intro: {
12260
+ paragraphSize: "editorial",
12261
+ headingSize: "editorial"
12262
+ }
12263
+ }
12264
+ },
12265
+ recommendedAppearancePresetIds: [
12266
+ "site-header-brand-solid-inverted-cta",
12267
+ "site-footer-brand-two-band",
12268
+ "hero-brand-scrim-fixed-frame",
12269
+ "body-text-editorial-intro",
12270
+ "testimonials-accent-quote-proof",
12271
+ "contact-form-dark-card"
12272
+ ],
12273
+ buttonPersonalityChoices: [
12274
+ buttonChoice("showtime-pill"),
12275
+ buttonChoice("confident-chip"),
12276
+ buttonChoice("ink-stamp"),
12277
+ buttonChoice("brushed-wash")
12278
+ ],
12279
+ paletteVariantChoices: [
12280
+ paletteChoice("brand-led-burgundy-gold"),
12281
+ paletteChoice("brand-led-jewel"),
12282
+ paletteChoice("brand-led-warm"),
12283
+ paletteChoice("high-contrast-ink")
12284
+ ]
11678
12285
  })
11679
12286
  ];
11680
12287
  curatedSiteStylesById = new Map(
@@ -11728,7 +12335,7 @@ function uniqueNonEmpty(values) {
11728
12335
  }
11729
12336
  return [firstValue, ...uniqueValues.slice(1)];
11730
12337
  }
11731
- var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema, persistedPageDesignStateV1Schema;
12338
+ var themeV2DesignStateSchemaVersion, designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema, persistedPageDesignStateV1Schema;
11732
12339
  var init_designState = __esm({
11733
12340
  "../theme-core/src/site-styles/designState.ts"() {
11734
12341
  "use strict";
@@ -11749,6 +12356,40 @@ var init_designState = __esm({
11749
12356
  "scrim-gradient",
11750
12357
  "solid-panel"
11751
12358
  ]);
12359
+ sectionHeightIntentSchema = z25.enum([
12360
+ "default",
12361
+ "banner",
12362
+ "hero",
12363
+ "immersive"
12364
+ ]);
12365
+ imageSurfaceTreatmentIntensitySchema = z25.enum(["soft", "balanced", "strong"]);
12366
+ imageSurfaceMotionSchema = z25.enum(["static", "fixed-frame"]);
12367
+ imageSurfaceTreatmentSchema = z25.discriminatedUnion("kind", [
12368
+ z25.object({ kind: z25.literal("none") }).strict(),
12369
+ z25.object({
12370
+ kind: z25.literal("brand-scrim"),
12371
+ token: z25.enum(["primary", "secondary", "accent"]),
12372
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12373
+ }).strict(),
12374
+ z25.object({
12375
+ kind: z25.literal("brand-wash"),
12376
+ token: z25.enum(["primary", "secondary", "accent"]),
12377
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12378
+ }).strict(),
12379
+ z25.object({
12380
+ kind: z25.literal("neutral-scrim"),
12381
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12382
+ }).strict(),
12383
+ z25.object({
12384
+ kind: z25.literal("neutral-wash"),
12385
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12386
+ }).strict(),
12387
+ z25.object({
12388
+ kind: z25.literal("solid-panel"),
12389
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12390
+ }).strict()
12391
+ ]);
12392
+ testimonialCardTreatmentSchema = z25.enum(["default", "accent-quote"]);
11752
12393
  userPanelTreatments = uniqueNonEmpty(
11753
12394
  userDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment)
11754
12395
  );
@@ -11779,7 +12420,11 @@ var init_designState = __esm({
11779
12420
  itemSurface: z25.enum(userDesignOptionCatalog.itemSurfaces),
11780
12421
  transitionAfter: z25.enum(userDesignOptionCatalog.transitions),
11781
12422
  emphasis: z25.enum(userDesignOptionCatalog.emphases),
11782
- heroLegibility: heroLegibilityStrategySchema.optional()
12423
+ sectionHeight: sectionHeightIntentSchema.optional(),
12424
+ heroLegibility: heroLegibilityStrategySchema.optional(),
12425
+ imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
12426
+ imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
12427
+ testimonialCardTreatment: testimonialCardTreatmentSchema.optional()
11783
12428
  }).strict();
11784
12429
  styleAuthoritySchema = z25.discriminatedUnion("kind", [
11785
12430
  z25.object({
@@ -12008,6 +12653,15 @@ var init_pageDesignIntent = __esm({
12008
12653
  }
12009
12654
  });
12010
12655
 
12656
+ // ../theme-core/src/site-styles/lookResolution.ts
12657
+ var init_lookResolution = __esm({
12658
+ "../theme-core/src/site-styles/lookResolution.ts"() {
12659
+ "use strict";
12660
+ init_appearancePresets();
12661
+ init_types3();
12662
+ }
12663
+ });
12664
+
12011
12665
  // ../theme-core/src/site-styles/resolver.ts
12012
12666
  var init_resolver2 = __esm({
12013
12667
  "../theme-core/src/site-styles/resolver.ts"() {
@@ -12184,6 +12838,7 @@ var init_generatedDesignPipeline = __esm({
12184
12838
  init_designState();
12185
12839
  init_generatedSchemas();
12186
12840
  init_pageDesignIntent();
12841
+ init_lookResolution();
12187
12842
  init_resolver2();
12188
12843
  init_runtimeCompiler();
12189
12844
  init_types3();
@@ -12323,7 +12978,8 @@ var noneBoundaryOption, softBoundaryOption, waveBoundaryOption, spaciousBoundary
12323
12978
  var init_pageDesignEditorModel = __esm({
12324
12979
  "../theme-core/src/site-styles/pageDesignEditorModel.ts"() {
12325
12980
  "use strict";
12326
- init_appearancePresets();
12981
+ init_curatedSiteStyles();
12982
+ init_lookResolution();
12327
12983
  init_pageDesignIntent();
12328
12984
  init_types3();
12329
12985
  noneBoundaryOption = {
@@ -12421,6 +13077,7 @@ var init_site_styles = __esm({
12421
13077
  init_designState();
12422
13078
  init_generatedSchemas();
12423
13079
  init_generatedDesignPipeline();
13080
+ init_lookResolution();
12424
13081
  init_pageDesignAuthority();
12425
13082
  init_pageDesignEditorErrors();
12426
13083
  init_pageDesignEditorModel();
@@ -13426,6 +14083,7 @@ var init_spacing = __esm({
13426
14083
  ];
13427
14084
  SECTION_MIN_HEIGHT_VALUES = [
13428
14085
  "none",
14086
+ "banner",
13429
14087
  "hero",
13430
14088
  "immersive"
13431
14089
  ];
@@ -13447,6 +14105,7 @@ var init_spacing = __esm({
13447
14105
  };
13448
14106
  SECTION_MIN_HEIGHT_MAP = {
13449
14107
  none: "",
14108
+ banner: "rb-section-min-h-banner",
13450
14109
  hero: "rb-section-min-h-hero",
13451
14110
  immersive: "rb-section-min-h-immersive"
13452
14111
  };
@@ -14339,6 +14998,9 @@ var init_boxStyles2 = __esm({
14339
14998
  classes.push(roundedResult);
14340
14999
  }
14341
15000
  }
15001
+ if (input.treatment === "accent-quote") {
15002
+ classes.push("rb-card-treatment-accent-quote");
15003
+ }
14342
15004
  return classes.join(" ").trim() || "";
14343
15005
  }
14344
15006
  };
@@ -14408,7 +15070,7 @@ var init_boxStyles2 = __esm({
14408
15070
  minHeight = input.minHeight;
14409
15071
  } else if (process.env.NODE_ENV !== "production") {
14410
15072
  console.warn(
14411
- `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, hero, immersive.`
15073
+ `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, banner, hero, immersive.`
14412
15074
  );
14413
15075
  }
14414
15076
  }
@@ -14748,25 +15410,9 @@ var init_styledCard = __esm({
14748
15410
  });
14749
15411
 
14750
15412
  // ../blocks/src/system/node/fragments/typography.ts
14751
- function mergeClassName(base, extra) {
14752
- return [base, extra ?? ""].filter(Boolean).join(" ");
14753
- }
14754
- function captionText(opts, ...mods) {
14755
- const {
14756
- as: asProp,
14757
- className: classNameProp,
14758
- color,
14759
- ...rest
14760
- } = opts ?? {};
14761
- const as = asProp ?? "p";
14762
- const className = mergeClassName("rb-caption", classNameProp);
14763
- const style = textColorStyle(color ?? "mutedText");
14764
- return text({ ...rest, as, className, style }, ...mods);
14765
- }
14766
15413
  var init_typography = __esm({
14767
15414
  "../blocks/src/system/node/fragments/typography.ts"() {
14768
15415
  "use strict";
14769
- init_builder();
14770
15416
  init_colorStyles();
14771
15417
  }
14772
15418
  });
@@ -15800,18 +16446,17 @@ function buildAttributionNodes() {
15800
16446
  const name = text(
15801
16447
  {
15802
16448
  as: "strong",
15803
- className: "rb-block",
15804
- style: textColorStyle("text")
16449
+ className: "rb-block"
15805
16450
  },
15806
16451
  bind("testimonial.content.name", { fallback: "Anonymous" })
15807
16452
  );
15808
- const jobTitle = captionText(
15809
- null,
16453
+ const jobTitle = text(
16454
+ { as: "p", className: "rb-caption" },
15810
16455
  when("testimonial.content.jobTitle"),
15811
16456
  bind("testimonial.content.jobTitle")
15812
16457
  );
15813
- const company = captionText(
15814
- null,
16458
+ const company = text(
16459
+ { as: "p", className: "rb-caption" },
15815
16460
  when("testimonial.content.company"),
15816
16461
  bind("testimonial.content.company")
15817
16462
  );
@@ -15845,8 +16490,7 @@ function buildTestimonialCard(...mods) {
15845
16490
  );
15846
16491
  const body = richText(
15847
16492
  {
15848
- className: "rb-prose rb-max-w-none",
15849
- style: textColorStyle("text")
16493
+ className: "rb-prose rb-max-w-none"
15850
16494
  },
15851
16495
  bind("testimonial.content.body"),
15852
16496
  when("testimonial.content.body")
@@ -15931,7 +16575,6 @@ var init_testimonialsCarousel = __esm({
15931
16575
  "use strict";
15932
16576
  init_types14();
15933
16577
  init_builder();
15934
- init_colorStyles();
15935
16578
  init_fragments();
15936
16579
  grid = (props2, children, ...mods) => el("grid", props2 ?? void 0, children ?? void 0, ...mods);
15937
16580
  testimonialsCarouselFragment = defineFragment({
@@ -17993,6 +18636,7 @@ function heroContentCard(children, gap) {
17993
18636
  return styledContainer({
17994
18637
  bindFrom: "_contentCardStyles",
17995
18638
  constrainWidth: false,
18639
+ baseClassName: "rb-relative rb-isolate",
17996
18640
  rootType: "stack",
17997
18641
  rootProps: {
17998
18642
  gap
@@ -18023,6 +18667,7 @@ function heroContentWrapper(children, gap, fallbackClassName) {
18023
18667
  function heroContainerStack(children, gap) {
18024
18668
  return styledContainer({
18025
18669
  rootType: "stack",
18670
+ baseClassName: "rb-relative rb-isolate",
18026
18671
  rootProps: {
18027
18672
  gap: "none",
18028
18673
  justify: {
@@ -19284,7 +19929,7 @@ function resolveHeroVerticalAlignment(content) {
19284
19929
  if (raw === "top" || raw === "center" || raw === "bottom") return raw;
19285
19930
  const sectionStyles = asPartialObject(content._sectionStyles);
19286
19931
  const minHeight = sectionStyles?.minHeight;
19287
- if (minHeight === "hero" || minHeight === "immersive") return "center";
19932
+ if (minHeight === "banner" || minHeight === "hero" || minHeight === "immersive") return "center";
19288
19933
  const variant = resolveHeroVariant(content);
19289
19934
  if (variant === "split" || variant === "splitReverse") return "center";
19290
19935
  return "top";
@@ -19849,7 +20494,7 @@ function extractBackgroundColorToken(background, fallback) {
19849
20494
  }
19850
20495
  return fallback;
19851
20496
  }
19852
- var joinClasses4, maxWidthClassSchema, maxWidthClassTransform, headerRootClassSchema, headerRootClassTransform, footerRootClassSchema, footerRootClassTransform, headerRootStyleTransform, footerRootStyleTransform, footerSpacingClassXMap, footerSpacingClassYMap, footerGapXClassMap, footerGapYClassMap, footerAlignClassMap, footerBottomBarClassSchema, footerBottomBarClassTransform, footerBottomBarContainerClassSchema, footerBottomBarContainerClassTransform, footerBottomBarStyleTransform, footerSplitNavSingleClassTransform, footerLogoClassSchema, footerLogoClassTransform, footerLogoMediaClassSchema, footerLogoMediaClassTransform, footerLogoTextVisibleTransform, layoutTransforms;
20497
+ var joinClasses4, maxWidthClassSchema, maxWidthClassTransform, headerRootClassSchema, headerRootClassTransform, footerRootClassSchema, footerRootClassTransform, headerRootStyleTransform, footerRootStyleTransform, footerSpacingClassXMap, footerSpacingClassYMap, footerGapXClassMap, footerGapYClassMap, footerAlignClassMap, footerBottomBarClassSchema, footerBottomBarClassTransform, footerBottomBarContainerClassSchema, footerBottomBarContainerClassTransform, footerBottomBarStyleTransform, footerSplitNavSingleClassTransform, footerSplitMainClassSchema, footerSplitMainClassTransform, footerLogoClassSchema, footerLogoClassTransform, footerLogoMediaClassSchema, footerLogoMediaClassTransform, footerLogoTextVisibleTransform, layoutTransforms;
19853
20498
  var init_layout = __esm({
19854
20499
  "../blocks/src/system/transforms/registry/layout.ts"() {
19855
20500
  "use strict";
@@ -20156,6 +20801,26 @@ var init_layout = __esm({
20156
20801
  ]);
20157
20802
  }
20158
20803
  };
20804
+ footerSplitMainClassSchema = z37.object({
20805
+ base: z37.string().optional(),
20806
+ reverseClass: z37.string().optional()
20807
+ });
20808
+ footerSplitMainClassTransform = {
20809
+ id: "layout.footerSplitMainClass",
20810
+ kind: "string",
20811
+ summary: "Compose split-footer main row classes from footer logo placement",
20812
+ schema: footerSplitMainClassSchema,
20813
+ run: (value, options) => {
20814
+ const logo = asPartialObject(value);
20815
+ const placement = logo?.placement ?? "right";
20816
+ const shouldPlaceLogoFirst = placement === "left" || placement === "above";
20817
+ const baseClass = shouldPlaceLogoFirst ? "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-end rb-gap-8 rb-md-flex-row rb-md-items-end" : "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-between rb-gap-8 rb-md-flex-row rb-md-items-end";
20818
+ return joinClasses4([
20819
+ options.base ?? baseClass,
20820
+ shouldPlaceLogoFirst ? options.reverseClass ?? "rb-md-flex-row-reverse" : null
20821
+ ]);
20822
+ }
20823
+ };
20159
20824
  footerLogoClassSchema = z37.object({
20160
20825
  base: z37.string().optional()
20161
20826
  });
@@ -20166,14 +20831,11 @@ var init_layout = __esm({
20166
20831
  schema: footerLogoClassSchema,
20167
20832
  run: (value, options) => {
20168
20833
  const logo = asPartialObject(value);
20169
- const placement = logo?.placement ?? "right";
20170
20834
  const align = logo?.align ?? "end";
20171
20835
  const hiddenClass = logo?.showLogo === false ? "rb-hidden" : null;
20172
- const orderClass = placement === "left" || placement === "above" ? "rb-md-order-first" : "rb-md-order-last";
20173
20836
  const selfAlignClass = align === "start" ? "rb-self-start rb-text-left" : align === "center" ? "rb-self-center rb-text-center" : "rb-self-end rb-text-right";
20174
20837
  return joinClasses4([
20175
20838
  options.base ?? "footer-logo rb-inline-flex rb-items-center rb-justify-end rb-gap-3 rb-no-underline rb-transition-opacity rb-hover-opacity-80",
20176
- orderClass,
20177
20839
  selfAlignClass,
20178
20840
  hiddenClass
20179
20841
  ]);
@@ -20210,6 +20872,7 @@ var init_layout = __esm({
20210
20872
  footerBottomBarContainerClassTransform,
20211
20873
  footerBottomBarStyleTransform,
20212
20874
  footerSplitNavSingleClassTransform,
20875
+ footerSplitMainClassTransform,
20213
20876
  footerLogoClassTransform,
20214
20877
  footerLogoMediaClassTransform,
20215
20878
  footerLogoTextVisibleTransform
@@ -20533,7 +21196,7 @@ var init_site_header = __esm({
20533
21196
  headerCta = ctaButton({
20534
21197
  basePath: "menu.ctaItem",
20535
21198
  whenPath: "menu.ctaItem.label",
20536
- variantPath: "menu.ctaItem.variant",
21199
+ variantPath: "$root.theme.header.ctaVariant",
20537
21200
  linkPath: "menu.ctaItem.link",
20538
21201
  sizeFallback: "sm",
20539
21202
  className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
@@ -20541,7 +21204,7 @@ var init_site_header = __esm({
20541
21204
  mobileCta = ctaButton({
20542
21205
  basePath: "menu.ctaItem",
20543
21206
  whenPath: "menu.ctaItem.label",
20544
- variantPath: "menu.ctaItem.variant",
21207
+ variantPath: "$root.theme.header.ctaVariant",
20545
21208
  linkPath: "menu.ctaItem.link",
20546
21209
  sizeFallback: "md",
20547
21210
  className: "nav-mobile-cta rb-w-full"
@@ -21022,7 +21685,13 @@ var init_site_footer = __esm({
21022
21685
  [
21023
21686
  inline(
21024
21687
  {
21025
- className: "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-between rb-gap-8 rb-md-flex-row rb-md-items-end"
21688
+ className: {
21689
+ $bind: {
21690
+ from: "$root.theme.footer.logo",
21691
+ transforms: [{ id: "layout.footerSplitMainClass" }],
21692
+ fallback: "rb-flex rb-w-full rb-flex-col rb-items-start rb-justify-between rb-gap-8 rb-md-flex-row rb-md-items-end"
21693
+ }
21694
+ }
21026
21695
  },
21027
21696
  [
21028
21697
  stack(
@@ -23339,7 +24008,8 @@ var init_course_registration_interactive = __esm({
23339
24008
  run: z49.object({
23340
24009
  courseId: z49.string(),
23341
24010
  seriesId: z49.string(),
23342
- runSlug: z49.string()
24011
+ runSlug: z49.string(),
24012
+ runName: z49.string().nullable()
23343
24013
  })
23344
24014
  }),
23345
24015
  z49.object({
@@ -29661,6 +30331,16 @@ function panelCapable() {
29661
30331
  itemSurfaces: "unsupported"
29662
30332
  });
29663
30333
  }
30334
+ function heroCapable() {
30335
+ return declareBlockDesignCapability({
30336
+ sectionSurfaces: "supported",
30337
+ contentFrames: ["plain", "panel"],
30338
+ itemSurfaces: "unsupported",
30339
+ sectionHeights: heroSectionHeights,
30340
+ imageSurfaceTreatments: heroImageSurfaceTreatments,
30341
+ imageSurfaceMotions: heroImageSurfaceMotions
30342
+ });
30343
+ }
29664
30344
  function plainItemsCapable() {
29665
30345
  return declareBlockDesignCapability({
29666
30346
  sectionSurfaces: "supported",
@@ -29720,7 +30400,7 @@ function ensureSystemBlockDefinitionsRegistered() {
29720
30400
  registerBlockDefinition(definition);
29721
30401
  }
29722
30402
  }
29723
- var allSectionSurfaces, heroSectionSurfaces, heroFlow, bodyFlow, mediaFlow, proofFlow, offeringsFlow, conversionFlow, siteChromeFlow, transactionalFlow, utilityFlow, systemBlockDefinitionsRaw, systemBlockDefinitions, defaultsRegistered;
30403
+ var heroSectionHeights, heroImageSurfaceTreatments, heroImageSurfaceMotions, allSectionSurfaces, heroSectionSurfaces, heroFlow, bodyFlow, mediaFlow, proofFlow, offeringsFlow, conversionFlow, siteChromeFlow, transactionalFlow, utilityFlow, systemBlockDefinitionsRaw, systemBlockDefinitions, defaultsRegistered;
29724
30404
  var init_blocks2 = __esm({
29725
30405
  "../blocks/src/system/blocks/index.ts"() {
29726
30406
  "use strict";
@@ -29795,6 +30475,24 @@ var init_blocks2 = __esm({
29795
30475
  init_checkout();
29796
30476
  init_gifting();
29797
30477
  init_newsletter_signup();
30478
+ heroSectionHeights = [
30479
+ "default",
30480
+ "banner",
30481
+ "hero",
30482
+ "immersive"
30483
+ ];
30484
+ heroImageSurfaceTreatments = [
30485
+ "none",
30486
+ "brand-scrim",
30487
+ "brand-wash",
30488
+ "neutral-scrim",
30489
+ "neutral-wash",
30490
+ "solid-panel"
30491
+ ];
30492
+ heroImageSurfaceMotions = [
30493
+ "static",
30494
+ "fixed-frame"
30495
+ ];
29798
30496
  allSectionSurfaces = [
29799
30497
  "base",
29800
30498
  "muted-band",
@@ -29861,7 +30559,7 @@ var init_blocks2 = __esm({
29861
30559
  boundaryPreference: "soft"
29862
30560
  };
29863
30561
  systemBlockDefinitionsRaw = [
29864
- withDesignCapability("block.hero", heroBlockDefinition, panelCapable(), defineBlockDesignMetadata({
30562
+ withDesignCapability("block.hero", heroBlockDefinition, heroCapable(), defineBlockDesignMetadata({
29865
30563
  flow: heroFlow,
29866
30564
  layoutProfiles: [
29867
30565
  layoutProfile({
@@ -29965,7 +30663,12 @@ var init_blocks2 = __esm({
29965
30663
  flow: siteChromeFlow,
29966
30664
  layoutProfiles: []
29967
30665
  })),
29968
- withDesignCapability("block.testimonials", testimonialsBlockDefinition, panelAndItemsCapable(), defineBlockDesignMetadata({
30666
+ withDesignCapability("block.testimonials", testimonialsBlockDefinition, declareBlockDesignCapability({
30667
+ sectionSurfaces: "supported",
30668
+ contentFrames: ["plain", "panel"],
30669
+ itemSurfaces: "supported",
30670
+ testimonialCardTreatments: ["default", "accent-quote"]
30671
+ }), defineBlockDesignMetadata({
29969
30672
  flow: proofFlow,
29970
30673
  layoutProfiles: [
29971
30674
  layoutProfile({
@@ -30306,8 +31009,15 @@ function parseOpacity(value) {
30306
31009
  }
30307
31010
  return opacity <= 1 ? opacity : opacity / 100;
30308
31011
  }
30309
- function appendOptionalClasses(baseClassName, optionalClassName) {
30310
- return optionalClassName ? `${baseClassName} ${optionalClassName}` : baseClassName;
31012
+ function backgroundMotionClassNames(input) {
31013
+ return input.motion === "fixed-frame" ? "rb-bg-motion-fixed-frame" : "";
31014
+ }
31015
+ function appendBackgroundMediaClasses(baseClassName, input) {
31016
+ return [
31017
+ baseClassName,
31018
+ backgroundMotionClassNames(input),
31019
+ backgroundVideoMobileClassNames(input)
31020
+ ].filter(Boolean).join(" ");
30311
31021
  }
30312
31022
  var isString, isNumber, resolveImageStyleTransform, resolveImageClassNameTransform, resolveOverlayStyleTransform, backgroundTransforms;
30313
31023
  var init_background4 = __esm({
@@ -30394,9 +31104,9 @@ var init_background4 = __esm({
30394
31104
  const objectFit = isString(input.objectFit) ? input.objectFit.trim() : null;
30395
31105
  const position = isString(input.position) ? input.position.trim() : null;
30396
31106
  if (objectFit === "fill" || objectFit === "fit" || objectFit === null) {
30397
- return appendOptionalClasses(
31107
+ return appendBackgroundMediaClasses(
30398
31108
  `${baseClass} rb-inset-0 rb-h-full rb-w-full rb-object-${objectFit === "fit" ? "contain" : "cover"}`,
30399
- backgroundVideoMobileClassNames(input)
31109
+ input
30400
31110
  );
30401
31111
  }
30402
31112
  let needsAnchoring = false;
@@ -30409,18 +31119,18 @@ var init_background4 = __esm({
30409
31119
  }
30410
31120
  }
30411
31121
  if (!needsAnchoring) {
30412
- return appendOptionalClasses(
31122
+ return appendBackgroundMediaClasses(
30413
31123
  `${baseClass} rb-inset-0 rb-h-full rb-w-full`,
30414
- backgroundVideoMobileClassNames(input)
31124
+ input
30415
31125
  );
30416
31126
  }
30417
31127
  const isPreset = position && BACKGROUND_POSITION_PRESET_VALUES.includes(position);
30418
31128
  const isCustom = position && !isPreset;
30419
31129
  if (isCustom) {
30420
- return appendOptionalClasses(baseClass, backgroundVideoMobileClassNames(input));
31130
+ return appendBackgroundMediaClasses(baseClass, input);
30421
31131
  }
30422
31132
  const anchorClasses = getAnchorClasses(position);
30423
- return appendOptionalClasses(`${baseClass} ${anchorClasses}`, backgroundVideoMobileClassNames(input));
31133
+ return appendBackgroundMediaClasses(`${baseClass} ${anchorClasses}`, input);
30424
31134
  }
30425
31135
  };
30426
31136
  resolveOverlayStyleTransform = {
@@ -31390,6 +32100,7 @@ var init_src3 = __esm({
31390
32100
  init_pages();
31391
32101
  init_routes();
31392
32102
  init_bookings();
32103
+ init_bookingConfig();
31393
32104
  init_emailSettings();
31394
32105
  init_eventEmailTemplates();
31395
32106
  init_resources();