@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
@@ -643,7 +643,7 @@ var ENDPOINT_DEFINITIONS = {
643
643
  method: "GET",
644
644
  tags: [TAG_TEMPLATES.site, TAG_TEMPLATES.siteNewsletter],
645
645
  auth: "user",
646
- responseKind: "text"
646
+ responseKind: "blob"
647
647
  },
648
648
  getNewsletterSubscriber: {
649
649
  path: "/sites/{siteId}/newsletter/subscribers/{subscriberId}",
@@ -974,12 +974,7 @@ var ENDPOINT_DEFINITIONS = {
974
974
  ],
975
975
  auth: "user",
976
976
  responseKind: "json",
977
- errors: [
978
- "validation:invalid_input",
979
- "resource:not_found",
980
- "resource:conflict",
981
- "server:internal_error"
982
- ]
977
+ errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"]
983
978
  },
984
979
  unpublishTeamMemberProfile: {
985
980
  path: "/sites/{siteId}/bookings/resources/{resourceId}/profile/{entryId}/unpublish",
@@ -1232,6 +1227,13 @@ var ENDPOINT_DEFINITIONS = {
1232
1227
  auth: "user",
1233
1228
  responseKind: "json"
1234
1229
  },
1230
+ exportBookingAppointmentsCsv: {
1231
+ path: "/sites/{siteId}/bookings/appointments/export.csv",
1232
+ method: "GET",
1233
+ auth: "user",
1234
+ errors: [],
1235
+ responseKind: "blob"
1236
+ },
1235
1237
  createAppointment: {
1236
1238
  path: "/sites/{siteId}/bookings/appointments",
1237
1239
  method: "POST",
@@ -1359,6 +1361,13 @@ var ENDPOINT_DEFINITIONS = {
1359
1361
  auth: "user",
1360
1362
  responseKind: "json"
1361
1363
  },
1364
+ exportCourseEnrollmentsCsv: {
1365
+ path: "/sites/{siteId}/bookings/courses/{courseId}/enrollments/export.csv",
1366
+ method: "GET",
1367
+ auth: "user",
1368
+ errors: [],
1369
+ responseKind: "blob"
1370
+ },
1362
1371
  listCourseWaitlist: {
1363
1372
  path: "/sites/{siteId}/bookings/courses/{courseId}/waitlist",
1364
1373
  method: "GET",
@@ -2721,6 +2730,14 @@ var ENDPOINT_DEFINITIONS = {
2721
2730
  auth: "user",
2722
2731
  responseKind: "json"
2723
2732
  },
2733
+ exportSeoPagesCsv: {
2734
+ path: "/sites/{siteId}/seo/pages",
2735
+ method: "GET",
2736
+ tags: ["site-{siteId}", "seo-pages-{siteId}"],
2737
+ auth: "user",
2738
+ responseKind: "blob",
2739
+ errors: []
2740
+ },
2724
2741
  getSeoQueries: {
2725
2742
  path: "/sites/{siteId}/seo/queries",
2726
2743
  method: "GET",
@@ -2729,6 +2746,14 @@ var ENDPOINT_DEFINITIONS = {
2729
2746
  auth: "user",
2730
2747
  responseKind: "json"
2731
2748
  },
2749
+ exportSeoQueriesCsv: {
2750
+ path: "/sites/{siteId}/seo/queries",
2751
+ method: "GET",
2752
+ tags: ["site-{siteId}", "seo-queries-{siteId}"],
2753
+ auth: "user",
2754
+ responseKind: "blob",
2755
+ errors: []
2756
+ },
2732
2757
  getPerformanceOverview: {
2733
2758
  path: "/sites/{siteId}/performance/overview",
2734
2759
  method: "GET",
@@ -2777,7 +2802,12 @@ var ENDPOINT_DEFINITIONS = {
2777
2802
  path: "/media/{assetId}/canonical-crop",
2778
2803
  method: "POST",
2779
2804
  tags: ["media", "media-{assetId}"],
2780
- errors: ["validation:invalid_input", "resource:not_found", "resource:conflict", "server:internal_error"],
2805
+ errors: [
2806
+ "validation:invalid_input",
2807
+ "resource:not_found",
2808
+ "resource:conflict",
2809
+ "server:internal_error"
2810
+ ],
2781
2811
  auth: "user",
2782
2812
  responseKind: "json"
2783
2813
  },
@@ -3109,7 +3139,7 @@ var ENDPOINT_DEFINITIONS = {
3109
3139
  method: "GET",
3110
3140
  tags: [TAG_TEMPLATES.siteForms, TAG_TEMPLATES.formSubmissionsBySlug],
3111
3141
  auth: "user",
3112
- responseKind: "text"
3142
+ responseKind: "blob"
3113
3143
  },
3114
3144
  // Public submit
3115
3145
  submitForm: {
@@ -3992,6 +4022,14 @@ var ENDPOINT_DEFINITIONS = {
3992
4022
  auth: "user",
3993
4023
  responseKind: "json"
3994
4024
  },
4025
+ exportEventSeriesAttendeesCsv: {
4026
+ path: "/sites/{siteId}/bookings/event-series/{seriesId}/attendees/export.csv",
4027
+ method: "GET",
4028
+ tags: ["site-{siteId}", "event-series-{seriesId}"],
4029
+ auth: "user",
4030
+ errors: [],
4031
+ responseKind: "blob"
4032
+ },
3995
4033
  listEventSeriesWaitlist: {
3996
4034
  path: "/sites/{siteId}/bookings/event-series/{seriesId}/waitlist",
3997
4035
  method: "GET",
@@ -4555,6 +4593,14 @@ var ENDPOINT_DEFINITIONS = {
4555
4593
  auth: "user",
4556
4594
  responseKind: "json"
4557
4595
  },
4596
+ exportBookingCustomersCsv: {
4597
+ path: "/sites/{siteId}/bookings/customers/export.csv",
4598
+ method: "GET",
4599
+ tags: ["site-{siteId}", "customers-{siteId}"],
4600
+ auth: "user",
4601
+ errors: [],
4602
+ responseKind: "blob"
4603
+ },
4558
4604
  createBookingCustomer: {
4559
4605
  path: "/sites/{siteId}/bookings/customers",
4560
4606
  method: "POST",
@@ -4582,6 +4628,21 @@ var ENDPOINT_DEFINITIONS = {
4582
4628
  "server:internal_error"
4583
4629
  ]
4584
4630
  },
4631
+ rectifyBookingParticipantIdentity: {
4632
+ path: "/sites/{siteId}/bookings/participants/{participantId}/identity",
4633
+ method: "PATCH",
4634
+ tags: ["site-{siteId}", "customers-{siteId}"],
4635
+ auth: "user",
4636
+ responseKind: "json",
4637
+ errors: [
4638
+ "validation:invalid_input",
4639
+ "auth:forbidden",
4640
+ "resource:not_found",
4641
+ "resource:already_exists",
4642
+ "resource:conflict",
4643
+ "server:internal_error"
4644
+ ]
4645
+ },
4585
4646
  listCustomerPasses: {
4586
4647
  path: "/sites/{siteId}/bookings/customers/{customerId}/passes",
4587
4648
  method: "GET",
@@ -4716,13 +4777,46 @@ var ENDPOINT_DEFINITIONS = {
4716
4777
  auth: "user",
4717
4778
  responseKind: "json"
4718
4779
  },
4780
+ exportMoneyPaymentsCsv: {
4781
+ path: "/sites/{siteId}/bookings/money/payments/export.csv",
4782
+ method: "GET",
4783
+ tags: ["site-{siteId}", "bookings", "money-payments-{siteId}"],
4784
+ errors: [],
4785
+ auth: "user",
4786
+ responseKind: "blob"
4787
+ },
4788
+ exportMoneyBreakdownsCsv: {
4789
+ path: "/sites/{siteId}/bookings/money/report/breakdowns/export.csv",
4790
+ method: "GET",
4791
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
4792
+ errors: [],
4793
+ auth: "user",
4794
+ responseKind: "blob"
4795
+ },
4796
+ exportMoneyTimeSeriesCsv: {
4797
+ path: "/sites/{siteId}/bookings/money/report/time-series/export.csv",
4798
+ method: "GET",
4799
+ tags: ["site-{siteId}", "bookings", "money-report-{siteId}"],
4800
+ errors: [],
4801
+ auth: "user",
4802
+ responseKind: "blob"
4803
+ },
4719
4804
  listBookingActivity: {
4720
4805
  path: "/sites/{siteId}/bookings/activity",
4721
4806
  method: "GET",
4722
4807
  tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
4808
+ errors: [],
4723
4809
  auth: "user",
4724
4810
  responseKind: "json"
4725
4811
  },
4812
+ exportBookingActivityCsv: {
4813
+ path: "/sites/{siteId}/bookings/activity/export.csv",
4814
+ method: "GET",
4815
+ tags: ["site-{siteId}", "bookings", "activity-{siteId}"],
4816
+ errors: [],
4817
+ auth: "user",
4818
+ responseKind: "blob"
4819
+ },
4726
4820
  // Site logs
4727
4821
  listSiteActivityLogs: {
4728
4822
  path: "/sites/{siteId}/logs/activity",
@@ -4874,13 +4968,6 @@ var ENDPOINT_DEFINITIONS = {
4874
4968
  auth: "user",
4875
4969
  responseKind: "blob"
4876
4970
  },
4877
- exportSeoCsv: {
4878
- path: "/sites/{siteId}/seo/export",
4879
- method: "GET",
4880
- tags: ["site-{siteId}", "seo"],
4881
- auth: "user",
4882
- responseKind: "blob"
4883
- },
4884
4971
  // Admin site cost (for admin panel)
4885
4972
  adminSiteCost: {
4886
4973
  path: "/admin/sites/{siteId}/cost",
@@ -6319,7 +6406,7 @@ var SimpleCache = class {
6319
6406
  };
6320
6407
 
6321
6408
  // src/version.ts
6322
- var SDK_VERSION = "0.60.12";
6409
+ var SDK_VERSION = "0.60.14";
6323
6410
 
6324
6411
  // src/client/error.ts
6325
6412
  var RiverbankApiError = class _RiverbankApiError extends Error {
@@ -7610,68 +7697,6 @@ function toLocationCoordinates(value) {
7610
7697
  };
7611
7698
  }
7612
7699
 
7613
- // ../core/src/participant-identity.ts
7614
- var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD = {
7615
- participant_id: {
7616
- field: "participant_id",
7617
- role: "canonical_link",
7618
- canonicalSource: "booking_participants.id",
7619
- contractAction: "tighten_in_839",
7620
- notes: "Canonical person-subject link for a participation. #839 should enforce this once preflight is clean."
7621
- },
7622
- display_name: {
7623
- field: "display_name",
7624
- role: "contextual_snapshot",
7625
- canonicalSource: "booking_participants.display_name for live identity",
7626
- contractAction: "retain_as_snapshot",
7627
- notes: "Participation-time display context. Readers must not treat it as mutable live participant identity."
7628
- },
7629
- email: {
7630
- field: "email",
7631
- role: "contextual_snapshot",
7632
- canonicalSource: "booking_participants.email_normalized for live email identity",
7633
- contractAction: "retain_as_snapshot",
7634
- notes: "Participation-time contact snapshot used for notifications/context. Live identity belongs to the participant row."
7635
- },
7636
- email_normalized: {
7637
- field: "email_normalized",
7638
- role: "contextual_snapshot",
7639
- canonicalSource: "booking_participants.email_normalized for live email identity",
7640
- contractAction: "retain_as_snapshot",
7641
- notes: "Normalized snapshot/dedupe helper for the participation slot, not live person authority."
7642
- },
7643
- phone: {
7644
- field: "phone",
7645
- role: "contextual_snapshot",
7646
- canonicalSource: "booking_participants.phone for live phone identity",
7647
- contractAction: "retain_as_snapshot",
7648
- notes: "Participation-time phone context. Live identity belongs to the participant row."
7649
- },
7650
- identity_state: {
7651
- field: "identity_state",
7652
- role: "materialization_state",
7653
- canonicalSource: "booking_participants.identity_state for subject state",
7654
- contractAction: "review_for_later_contract_cleanup",
7655
- notes: "Slot materialization state: booker_supplied, contactable, portal_claimed, or staff_verified."
7656
- },
7657
- event_attendee_guest_id: {
7658
- field: "event_attendee_guest_id",
7659
- role: "compatibility_projection",
7660
- canonicalSource: "canonical participant slot plus #838 event guest compatibility projection",
7661
- contractAction: "retain_as_projection",
7662
- notes: "Compatibility FK for event guest read models. It is not person identity authority."
7663
- }
7664
- };
7665
- var PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATIONS = [
7666
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.participant_id,
7667
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.display_name,
7668
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email,
7669
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.email_normalized,
7670
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.phone,
7671
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.identity_state,
7672
- PARTICIPANT_PARTICIPATION_IDENTITY_FIELD_CLASSIFICATION_BY_FIELD.event_attendee_guest_id
7673
- ];
7674
-
7675
7700
  // ../media-core/src/transformRect.ts
7676
7701
  function isValidTransformRectStructure(rect) {
7677
7702
  if (!Array.isArray(rect) || rect.length !== 4) return false;
@@ -8810,6 +8835,8 @@ var CUSTOMER_MEMBERSHIP_PAYMENT_REFUND_FAILED_CODES = [
8810
8835
  var STANDARD_LINE_ITEM_REFUND_INVALID_CODES = [
8811
8836
  "missing_amount",
8812
8837
  "amount_exceeds_remaining",
8838
+ "credit_refunds_disabled",
8839
+ "missing_credit_customer",
8813
8840
  "deposit_refund_override_required",
8814
8841
  "refund_revoke_requires_full_line_refund",
8815
8842
  "unified_order_link_required"
@@ -9394,12 +9421,29 @@ function defineFrameCapability(capability) {
9394
9421
  function defineBlockDesignCapability(capability) {
9395
9422
  return {
9396
9423
  ...capability,
9397
- kind: "designed"
9424
+ kind: "designed",
9425
+ sectionHeights: capability.sectionHeights ?? ["default"],
9426
+ imageSurfaceTreatments: capability.imageSurfaceTreatments ?? ["none"],
9427
+ imageSurfaceMotions: capability.imageSurfaceMotions ?? ["static"],
9428
+ testimonialCardTreatments: capability.testimonialCardTreatments ?? ["default"]
9398
9429
  };
9399
9430
  }
9400
9431
 
9401
9432
  // ../theme-core/src/site-styles/appearancePresets.ts
9433
+ function assertValidOptionGroups(preset2) {
9434
+ preset2.optionGroups?.forEach((group) => {
9435
+ const selectedOption = group.options.find(
9436
+ (option) => option.id === group.selectedOptionId
9437
+ );
9438
+ if (!selectedOption) {
9439
+ throw new Error(
9440
+ `Appearance preset "${preset2.id}" option group "${group.id}" selects missing option "${group.selectedOptionId}".`
9441
+ );
9442
+ }
9443
+ });
9444
+ }
9402
9445
  function defineBlockAppearancePreset(preset2) {
9446
+ assertValidOptionGroups(preset2);
9403
9447
  return preset2;
9404
9448
  }
9405
9449
  function defineSiteChromeAppearancePreset(preset2) {
@@ -9412,13 +9456,122 @@ var appearancePresets = [
9412
9456
  target: "hero",
9413
9457
  label: "Immersive image hero",
9414
9458
  blockKinds: ["block.hero"],
9459
+ constraints: {
9460
+ layoutFamilies: ["centered", "compact"]
9461
+ },
9462
+ design: {
9463
+ sectionSurface: "hero-image",
9464
+ contentFrame: plainFrame,
9465
+ itemSurface: "none",
9466
+ transitionAfter: "soft-fade-short",
9467
+ emphasis: "high",
9468
+ sectionHeight: "hero",
9469
+ imageSurfaceTreatment: { kind: "neutral-wash" }
9470
+ }
9471
+ }),
9472
+ defineBlockAppearancePreset({
9473
+ kind: "block-design",
9474
+ id: "hero-brand-scrim",
9475
+ target: "hero",
9476
+ label: "Brand scrim image hero",
9477
+ blockKinds: ["block.hero"],
9478
+ constraints: {
9479
+ layoutFamilies: ["centered", "compact"]
9480
+ },
9481
+ optionGroups: [
9482
+ {
9483
+ id: "image-surface-treatment",
9484
+ label: "Treatment",
9485
+ selectedOptionId: "brand-scrim-primary",
9486
+ options: [
9487
+ {
9488
+ id: "brand-scrim-primary",
9489
+ label: "Brand scrim",
9490
+ designPatch: {
9491
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
9492
+ }
9493
+ },
9494
+ {
9495
+ id: "neutral-scrim",
9496
+ label: "Neutral scrim",
9497
+ designPatch: {
9498
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
9499
+ }
9500
+ }
9501
+ ]
9502
+ }
9503
+ ],
9504
+ layoutPatches: [
9505
+ {
9506
+ constraints: {
9507
+ layoutVariantKeys: ["micro"]
9508
+ },
9509
+ designPatch: {
9510
+ sectionHeight: "banner"
9511
+ }
9512
+ }
9513
+ ],
9415
9514
  design: {
9416
9515
  sectionSurface: "hero-image",
9417
9516
  contentFrame: plainFrame,
9418
9517
  itemSurface: "none",
9419
9518
  transitionAfter: "soft-fade-short",
9420
9519
  emphasis: "high",
9421
- heroLegibility: "scrim-gradient"
9520
+ sectionHeight: "immersive",
9521
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
9522
+ }
9523
+ }),
9524
+ defineBlockAppearancePreset({
9525
+ kind: "block-design",
9526
+ id: "hero-brand-scrim-fixed-frame",
9527
+ target: "hero",
9528
+ label: "Fixed-frame brand scrim hero",
9529
+ blockKinds: ["block.hero"],
9530
+ constraints: {
9531
+ layoutFamilies: ["centered", "compact"]
9532
+ },
9533
+ optionGroups: [
9534
+ {
9535
+ id: "image-surface-treatment",
9536
+ label: "Treatment",
9537
+ selectedOptionId: "brand-scrim-primary",
9538
+ options: [
9539
+ {
9540
+ id: "brand-scrim-primary",
9541
+ label: "Brand scrim",
9542
+ designPatch: {
9543
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" }
9544
+ }
9545
+ },
9546
+ {
9547
+ id: "neutral-scrim",
9548
+ label: "Neutral scrim",
9549
+ designPatch: {
9550
+ imageSurfaceTreatment: { kind: "neutral-scrim" }
9551
+ }
9552
+ }
9553
+ ]
9554
+ }
9555
+ ],
9556
+ layoutPatches: [
9557
+ {
9558
+ constraints: {
9559
+ layoutVariantKeys: ["micro"]
9560
+ },
9561
+ designPatch: {
9562
+ sectionHeight: "banner"
9563
+ }
9564
+ }
9565
+ ],
9566
+ design: {
9567
+ sectionSurface: "hero-image",
9568
+ contentFrame: plainFrame,
9569
+ itemSurface: "none",
9570
+ transitionAfter: "soft-fade-short",
9571
+ emphasis: "high",
9572
+ sectionHeight: "immersive",
9573
+ imageSurfaceTreatment: { kind: "brand-scrim", token: "primary" },
9574
+ imageSurfaceMotion: "fixed-frame"
9422
9575
  }
9423
9576
  }),
9424
9577
  defineBlockAppearancePreset({
@@ -9435,17 +9588,26 @@ var appearancePresets = [
9435
9588
  emphasis: "high"
9436
9589
  }
9437
9590
  }),
9591
+ defineBlockAppearancePreset({
9592
+ kind: "block-design",
9593
+ id: "body-text-editorial-intro",
9594
+ target: "body-text",
9595
+ label: "Editorial intro copy",
9596
+ blockKinds: ["block.body-text"],
9597
+ design: {
9598
+ sectionSurface: "base",
9599
+ contentFrame: plainFrame,
9600
+ itemSurface: "none",
9601
+ transitionAfter: "soft-fade-short",
9602
+ emphasis: "high"
9603
+ }
9604
+ }),
9438
9605
  defineBlockAppearancePreset({
9439
9606
  kind: "block-design",
9440
9607
  id: "offerings-calm-list",
9441
9608
  target: "offerings",
9442
9609
  label: "Calm offerings list",
9443
- blockKinds: [
9444
- "block.event-listing",
9445
- "block.event-calendar",
9446
- "block.event-spotlight",
9447
- "block.product-list"
9448
- ],
9610
+ blockKinds: ["block.event-listing", "block.event-calendar", "block.event-spotlight", "block.product-list"],
9449
9611
  design: {
9450
9612
  sectionSurface: "muted-band",
9451
9613
  contentFrame: plainFrame,
@@ -9524,6 +9686,35 @@ var appearancePresets = [
9524
9686
  emphasis: "high"
9525
9687
  }
9526
9688
  }),
9689
+ defineBlockAppearancePreset({
9690
+ kind: "block-design",
9691
+ id: "testimonials-dark-proof",
9692
+ target: "testimonials",
9693
+ label: "Dark proof panel",
9694
+ blockKinds: ["block.testimonials"],
9695
+ design: {
9696
+ sectionSurface: "accent-band",
9697
+ contentFrame: panelFrame("raised"),
9698
+ itemSurface: "raised",
9699
+ transitionAfter: "soft-fade-short",
9700
+ emphasis: "high"
9701
+ }
9702
+ }),
9703
+ defineBlockAppearancePreset({
9704
+ kind: "block-design",
9705
+ id: "testimonials-accent-quote-proof",
9706
+ target: "testimonials",
9707
+ label: "Accent quote proof",
9708
+ blockKinds: ["block.testimonials"],
9709
+ design: {
9710
+ sectionSurface: "accent-band",
9711
+ contentFrame: plainFrame,
9712
+ itemSurface: "raised",
9713
+ transitionAfter: "soft-fade-short",
9714
+ emphasis: "high",
9715
+ testimonialCardTreatment: "accent-quote"
9716
+ }
9717
+ }),
9527
9718
  defineBlockAppearancePreset({
9528
9719
  kind: "block-design",
9529
9720
  id: "faq-contained-help",
@@ -9552,6 +9743,20 @@ var appearancePresets = [
9552
9743
  emphasis: "medium"
9553
9744
  }
9554
9745
  }),
9746
+ defineBlockAppearancePreset({
9747
+ kind: "block-design",
9748
+ id: "contact-form-dark-card",
9749
+ target: "contact-form",
9750
+ label: "Dark form card",
9751
+ blockKinds: ["block.form"],
9752
+ design: {
9753
+ sectionSurface: "accent-band",
9754
+ contentFrame: panelFrame("raised"),
9755
+ itemSurface: "none",
9756
+ transitionAfter: "soft-fade-short",
9757
+ emphasis: "high"
9758
+ }
9759
+ }),
9555
9760
  defineBlockAppearancePreset({
9556
9761
  kind: "block-design",
9557
9762
  id: "cta-accent-band",
@@ -9571,9 +9776,33 @@ var appearancePresets = [
9571
9776
  id: "header-clean-base",
9572
9777
  target: "site-header",
9573
9778
  label: "Clean base header",
9574
- chrome: {
9575
- surface: "base",
9576
- emphasis: "medium"
9779
+ header: {
9780
+ surface: {
9781
+ kind: "neutral-solid",
9782
+ token: "surface",
9783
+ textColorToken: "text"
9784
+ },
9785
+ navTreatment: "minimal",
9786
+ dropdownTreatment: "surface",
9787
+ ctaTreatment: "default",
9788
+ behavior: "default"
9789
+ }
9790
+ }),
9791
+ defineSiteChromeAppearancePreset({
9792
+ kind: "site-chrome",
9793
+ id: "site-header-brand-solid-inverted-cta",
9794
+ target: "site-header",
9795
+ label: "Brand solid header with inverted CTA",
9796
+ header: {
9797
+ surface: {
9798
+ kind: "brand-solid",
9799
+ token: "primary",
9800
+ textColorToken: "primaryForeground"
9801
+ },
9802
+ navTreatment: "uppercase-underline",
9803
+ dropdownTreatment: "matched-solid",
9804
+ ctaTreatment: "inverted",
9805
+ behavior: "sticky-shrink"
9577
9806
  }
9578
9807
  }),
9579
9808
  defineSiteChromeAppearancePreset({
@@ -9581,10 +9810,31 @@ var appearancePresets = [
9581
9810
  id: "footer-muted-grounding",
9582
9811
  target: "site-footer",
9583
9812
  label: "Muted grounding footer",
9584
- chrome: {
9813
+ footer: {
9814
+ kind: "grounding",
9585
9815
  surface: "muted-band",
9586
9816
  emphasis: "low"
9587
9817
  }
9818
+ }),
9819
+ defineSiteChromeAppearancePreset({
9820
+ kind: "site-chrome",
9821
+ id: "site-footer-brand-two-band",
9822
+ target: "site-footer",
9823
+ label: "Two-band brand footer",
9824
+ footer: {
9825
+ kind: "brand-two-band",
9826
+ surface: {
9827
+ token: "primary",
9828
+ shade: "800",
9829
+ textColorToken: "primaryForeground"
9830
+ },
9831
+ bottomBand: {
9832
+ token: "primary",
9833
+ shade: "900",
9834
+ textColorToken: "primaryForeground"
9835
+ },
9836
+ emphasis: "high"
9837
+ }
9588
9838
  })
9589
9839
  ];
9590
9840
 
@@ -10244,6 +10494,111 @@ var pebble = defineButtonPersonality({
10244
10494
  }
10245
10495
  });
10246
10496
 
10497
+ // ../theme-core/src/buttons/personalities/showtime-pill.ts
10498
+ var showtimePill = defineButtonPersonality({
10499
+ id: "showtime-pill",
10500
+ name: "Showtime Pill",
10501
+ description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
10502
+ tags: { tone: "bold", energy: "vibrant", motion: "expressive", era: "modern" },
10503
+ buttonSystem: {
10504
+ global: {
10505
+ cornerStyle: "pill",
10506
+ shadow: "low",
10507
+ textTransform: "uppercase",
10508
+ fontWeight: 700,
10509
+ borderWidth: 2,
10510
+ hoverTransform: "lift",
10511
+ hoverColor: "darken",
10512
+ typography: "body",
10513
+ paddingPreset: "spacious",
10514
+ italic: false
10515
+ },
10516
+ sizes: {
10517
+ sm: { padding: "0.625rem 1.25rem", fontSize: "0.875rem" },
10518
+ md: { padding: "0.875rem 1.75rem", fontSize: "1rem" },
10519
+ lg: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" },
10520
+ xl: { padding: "1.125rem 2.25rem", fontSize: "1.125rem" }
10521
+ },
10522
+ variants: [
10523
+ {
10524
+ id: "primary",
10525
+ name: "Primary",
10526
+ enabled: true,
10527
+ priority: 1,
10528
+ background: { type: "solid", colorToken: "primary" },
10529
+ textColorToken: "background",
10530
+ borderRadius: "rounded-full",
10531
+ effects: {
10532
+ hover: [{ effectId: "pop" }]
10533
+ }
10534
+ },
10535
+ {
10536
+ id: "secondary",
10537
+ name: "Secondary",
10538
+ enabled: true,
10539
+ priority: 2,
10540
+ background: { type: "transparent" },
10541
+ textColorToken: "primary",
10542
+ borderRadius: "rounded-full",
10543
+ border: { widthClass: "border-2", colorToken: "primary" },
10544
+ effects: {
10545
+ hover: [{ effectId: "pop" }]
10546
+ }
10547
+ },
10548
+ {
10549
+ id: "hero",
10550
+ name: "Hero",
10551
+ enabled: true,
10552
+ priority: 1,
10553
+ background: { type: "solid", colorToken: "secondary" },
10554
+ textColorToken: "primary",
10555
+ borderRadius: "rounded-full",
10556
+ effects: {
10557
+ hover: [{ effectId: "pop" }]
10558
+ }
10559
+ },
10560
+ {
10561
+ id: "header",
10562
+ name: "Header",
10563
+ enabled: true,
10564
+ priority: 2,
10565
+ background: { type: "solid", colorToken: "background" },
10566
+ textColorToken: "primary",
10567
+ borderRadius: "rounded-full",
10568
+ border: { widthClass: "border-2", colorToken: "primary" },
10569
+ effects: {
10570
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
10571
+ }
10572
+ },
10573
+ {
10574
+ id: "outline",
10575
+ name: "Outline",
10576
+ enabled: true,
10577
+ priority: 3,
10578
+ background: { type: "transparent" },
10579
+ textColorToken: "primary",
10580
+ borderRadius: "rounded-full",
10581
+ border: { widthClass: "border-2", colorToken: "primary" },
10582
+ effects: {
10583
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "background" } }]
10584
+ }
10585
+ },
10586
+ {
10587
+ id: "ghost",
10588
+ name: "Ghost",
10589
+ enabled: true,
10590
+ priority: 3,
10591
+ background: { type: "transparent" },
10592
+ textColorToken: "primary",
10593
+ borderRadius: "rounded-full",
10594
+ effects: {
10595
+ hover: [{ effectId: "background-on-hover", options: { colorToken: "surface" } }]
10596
+ }
10597
+ }
10598
+ ]
10599
+ }
10600
+ });
10601
+
10247
10602
  // ../theme-core/src/buttons/personalities/soft-pill.ts
10248
10603
  var softPill = defineButtonPersonality({
10249
10604
  id: "soft-pill",
@@ -10324,7 +10679,8 @@ var buttonPersonalities = [
10324
10679
  editorialLink,
10325
10680
  pebble,
10326
10681
  inkStamp,
10327
- brushedWash
10682
+ brushedWash,
10683
+ showtimePill
10328
10684
  ];
10329
10685
  var personalitiesById = new Map(
10330
10686
  buttonPersonalities.map((p) => [p.id, p])
@@ -10855,14 +11211,7 @@ var proseLinkStyleSchema = z21.object({
10855
11211
  underlineThickness: proseLinkUnderlineThicknessSchema.optional(),
10856
11212
  underlineOffset: proseLinkUnderlineOffsetSchema.optional()
10857
11213
  });
10858
- var semanticSpacingSchema = z21.enum([
10859
- "none",
10860
- "compact",
10861
- "cozy",
10862
- "medium",
10863
- "comfortable",
10864
- "spacious"
10865
- ]);
11214
+ var semanticSpacingSchema = z21.enum(["none", "compact", "cozy", "medium", "comfortable", "spacious"]);
10866
11215
  var boxRoundedSchema = z21.enum(["none", "sm", "md", "lg", "xl", "2xl", "full"]);
10867
11216
  var boxBackgroundOverlaySchema = z21.object({
10868
11217
  type: z21.enum(["none", "color", "gradient"]).nullable().optional(),
@@ -10879,6 +11228,7 @@ var boxBackgroundSchema = z21.object({
10879
11228
  scale: z21.string().nullable().optional(),
10880
11229
  position: z21.string().nullable().optional(),
10881
11230
  opacity: z21.number().min(0).max(1).nullable().optional(),
11231
+ motion: z21.enum(["static", "fixed-frame"]).nullable().optional(),
10882
11232
  overlay: boxBackgroundOverlaySchema.nullable().optional(),
10883
11233
  textColor: z21.string().nullable().optional(),
10884
11234
  headingColor: z21.string().nullable().optional()
@@ -10886,7 +11236,7 @@ var boxBackgroundSchema = z21.object({
10886
11236
  var sectionStylesOverrideSchema = z21.object({
10887
11237
  background: boxBackgroundSchema.nullable().optional(),
10888
11238
  spacing: semanticSpacingSchema.nullable().optional(),
10889
- minHeight: z21.enum(["none", "hero", "immersive"]).nullable().optional()
11239
+ minHeight: z21.enum(["none", "banner", "hero", "immersive"]).nullable().optional()
10890
11240
  });
10891
11241
  var containerStylesOverrideSchema = z21.object({
10892
11242
  background: boxBackgroundSchema.nullable().optional(),
@@ -10905,7 +11255,8 @@ var cardStylesOverrideSchema = z21.object({
10905
11255
  border: cardBorderOverrideSchema.nullable().optional(),
10906
11256
  spacing: semanticSpacingSchema.nullable().optional(),
10907
11257
  raised: z21.boolean().nullable().optional(),
10908
- rounded: boxRoundedSchema.nullable().optional()
11258
+ rounded: boxRoundedSchema.nullable().optional(),
11259
+ treatment: z21.enum(["accent-quote"]).nullable().optional()
10909
11260
  });
10910
11261
  var blockStyleOverridesSchema = z21.object({
10911
11262
  sectionStyles: sectionStylesOverrideSchema.nullable().optional(),
@@ -10980,15 +11331,7 @@ var inputStyle = z21.object({
10980
11331
  });
10981
11332
  var headerVariant = z21.enum(["classic", "centered", "transparent", "floating", "editorial"]);
10982
11333
  var headerPositioning = z21.enum(["static", "sticky", "fixed"]);
10983
- var headerNavStyle = z21.enum([
10984
- "minimal",
10985
- "underline",
10986
- "underline-grow",
10987
- "capsule",
10988
- "scale",
10989
- "frosted",
10990
- "solid"
10991
- ]);
11334
+ var headerNavStyle = z21.enum(["minimal", "underline", "underline-grow", "capsule", "scale", "frosted", "solid"]);
10992
11335
  var navFontWeight = z21.enum(["regular", "medium", "semibold", "bold"]);
10993
11336
  var headerMaxWidth = z21.enum(["container", "full"]);
10994
11337
  var headerContainerSchema = z21.object({
@@ -11042,6 +11385,7 @@ var dropdownStyleSchema = z21.object({
11042
11385
  // optional = no override (browser default)
11043
11386
  }).optional();
11044
11387
  var headerCtaGapSchema = z21.enum(["none", "tight", "compact", "default", "relaxed", "spacious"]);
11388
+ var headerCtaTreatmentSchema = z21.enum(["default", "primary", "secondary", "inverted", "outline", "ghost"]);
11045
11389
  var navContainerSchema = z21.object({
11046
11390
  type: z21.enum(["none", "pill", "glass"]).default("none"),
11047
11391
  tint: z21.string().nullable().optional(),
@@ -11060,7 +11404,10 @@ var headerSchema = z21.object({
11060
11404
  shrinkOnScroll: z21.boolean(),
11061
11405
  maxWidth: headerMaxWidth,
11062
11406
  logoOverride: mediaSchema.nullable().optional(),
11063
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
11407
+ background: headerBackgroundSchema.default({
11408
+ type: "color",
11409
+ color: "surface"
11410
+ }),
11064
11411
  textColor: z21.string().nullable().optional(),
11065
11412
  // Site title and general header text
11066
11413
  navStyle: headerNavStyle,
@@ -11080,6 +11427,13 @@ var headerSchema = z21.object({
11080
11427
  navLinkStyle: navLinkStyleSchema.optional(),
11081
11428
  // CTA button spacing (desktop left margin)
11082
11429
  ctaGap: headerCtaGapSchema.optional(),
11430
+ // Semantic CTA treatment for header/nav CTA buttons. The Theme V2 compiler
11431
+ // materializes this to ctaVariant against the active button personality.
11432
+ ctaTreatment: headerCtaTreatmentSchema.optional(),
11433
+ // Optional theme-level CTA variant for header/nav CTA buttons.
11434
+ // Internal runtime bridge for the block renderer; prefer ctaTreatment in
11435
+ // authored Theme V2 concepts.
11436
+ ctaVariant: z21.string().min(1).optional(),
11083
11437
  // Dropdown menu styling (nav dropdowns and mobile drawer)
11084
11438
  dropdownStyle: dropdownStyleSchema
11085
11439
  });
@@ -11136,7 +11490,10 @@ var footerSchema = z21.object({
11136
11490
  variant: footerVariant,
11137
11491
  maxWidth: footerMaxWidth,
11138
11492
  showLogoText: z21.boolean().optional(),
11139
- background: headerBackgroundSchema.default({ type: "color", color: "surface" }),
11493
+ background: headerBackgroundSchema.default({
11494
+ type: "color",
11495
+ color: "surface"
11496
+ }),
11140
11497
  // Footer nav styling (independent from header)
11141
11498
  navStyle: headerNavStyle.default("minimal"),
11142
11499
  navColor: z21.string().nullable().optional(),
@@ -11158,17 +11515,7 @@ var layoutSchema = z21.object({
11158
11515
  desktop: containerPaddingPresetSchema.optional()
11159
11516
  }).optional()
11160
11517
  }).optional();
11161
- var heroTypographySizeSchema = z21.enum([
11162
- "sm",
11163
- "base",
11164
- "lg",
11165
- "xl",
11166
- "2xl",
11167
- "3xl",
11168
- "4xl",
11169
- "5xl",
11170
- "6xl"
11171
- ]);
11518
+ var heroTypographySizeSchema = z21.enum(["sm", "base", "lg", "xl", "2xl", "3xl", "4xl", "5xl", "6xl", "editorial"]);
11172
11519
  var heroTypographyLineHeightSchema = z21.enum(["tight", "snug", "normal", "relaxed"]);
11173
11520
  var heroResponsiveTypographySchema = z21.object({
11174
11521
  headlineSize: heroTypographySizeSchema.optional(),
@@ -11193,6 +11540,13 @@ var heroTypographySchema = z21.object({
11193
11540
  var heroSchema = z21.object({
11194
11541
  typography: heroTypographySchema.optional()
11195
11542
  }).optional();
11543
+ var bodyTextIntroTypographySizeSchema = z21.enum(["default", "editorial"]);
11544
+ var bodyTextSchema = z21.object({
11545
+ intro: z21.object({
11546
+ paragraphSize: bodyTextIntroTypographySizeSchema.optional(),
11547
+ headingSize: bodyTextIntroTypographySizeSchema.optional()
11548
+ }).optional()
11549
+ }).optional();
11196
11550
  var gradientsSchema = z21.object({
11197
11551
  button: z21.string().min(1).nullable().optional(),
11198
11552
  hero: z21.string().min(1).nullable().optional(),
@@ -11214,6 +11568,7 @@ var themeSchema = z21.object({
11214
11568
  gradients: gradientsSchema.optional(),
11215
11569
  layout: layoutSchema,
11216
11570
  hero: heroSchema,
11571
+ bodyText: bodyTextSchema,
11217
11572
  header: headerSchema,
11218
11573
  footer: footerSchema,
11219
11574
  buttons: buttonSystemSchema.optional(),
@@ -11237,10 +11592,7 @@ var themeSchema = z21.object({
11237
11592
  ).optional(),
11238
11593
  // Structured block-kind theme overrides (v1: typography prose-link style only)
11239
11594
  // Keyed by block kind (usually data-block value like "hero"; "block.hero" also accepted)
11240
- blockOverrides: z21.record(
11241
- z21.string(),
11242
- blockThemeOverrideSchema
11243
- ).optional(),
11595
+ blockOverrides: z21.record(z21.string(), blockThemeOverrideSchema).optional(),
11244
11596
  // Structured custom CSS rules
11245
11597
  // Validated, scoped, and safe by construction - no @import, remote url(), or global selectors
11246
11598
  customCssRules: customCssRulesSchema,
@@ -11411,6 +11763,28 @@ var brandLedJewel = definePaletteVariant({
11411
11763
  { name: "border", hex: "#a8a29e" }
11412
11764
  ]
11413
11765
  });
11766
+ var brandLedBurgundyGold = definePaletteVariant({
11767
+ id: "brand-led-burgundy-gold",
11768
+ name: "Brand-led \u2014 Burgundy Gold",
11769
+ description: "Deep burgundy with warm gold accents and soft neutral grounds.",
11770
+ tags: { tone: "bold", energy: "vibrant", era: "modern" },
11771
+ mode: "light",
11772
+ colors: [
11773
+ { name: "primary", hex: "#7c2e38" },
11774
+ { name: "secondary", hex: "#d4af37" },
11775
+ { name: "accent", hex: "#b8e19a" },
11776
+ { name: "success", hex: "#10b981" },
11777
+ { name: "warning", hex: "#f59e0b" },
11778
+ { name: "destructive", hex: "#ef4444" },
11779
+ { name: "background", hex: "#f1dfd0" },
11780
+ { name: "surface", hex: "#f5e6db" },
11781
+ { name: "surfaceAlt", hex: "#f8ece3" },
11782
+ { name: "muted", hex: "#c9b8a8" },
11783
+ { name: "text", hex: "#400000" },
11784
+ { name: "primaryForeground", hex: "#ffffff" },
11785
+ { name: "border", hex: "#c9b8a8" }
11786
+ ]
11787
+ });
11414
11788
 
11415
11789
  // ../theme-core/src/palette/variants/high-contrast.ts
11416
11790
  var highContrastInk = definePaletteVariant({
@@ -11622,6 +11996,7 @@ var paletteVariants = [
11622
11996
  brandLedCool,
11623
11997
  brandLedWarm,
11624
11998
  brandLedJewel,
11999
+ brandLedBurgundyGold,
11625
12000
  // Warm-neutral family
11626
12001
  warmNeutralClay,
11627
12002
  warmNeutralCream,
@@ -11697,7 +12072,8 @@ var curatedSiteStyleIdValues = [
11697
12072
  "site-style:quiet-luxury",
11698
12073
  "site-style:practical-services",
11699
12074
  "site-style:modern-wellness",
11700
- "site-style:bold-launch"
12075
+ "site-style:bold-launch",
12076
+ "site-style:south-west-twerk-school"
11701
12077
  ];
11702
12078
  var quietBudget = {
11703
12079
  accentDensity: "low",
@@ -11752,6 +12128,8 @@ function defineCuratedSiteStyle(input) {
11752
12128
  supportedItemSurfaces: generatedDesignOptionCatalog.itemSurfaces,
11753
12129
  supportedTransitions: generatedDesignOptionCatalog.transitions
11754
12130
  },
12131
+ ...input.themeOverrides ? { themeOverrides: input.themeOverrides } : {},
12132
+ recommendedAppearancePresetIds: (input.recommendedAppearancePresetIds ?? []).map(asAppearancePresetId),
11755
12133
  buttonPersonalityChoices: input.buttonPersonalityChoices,
11756
12134
  paletteVariantChoices: input.paletteVariantChoices
11757
12135
  };
@@ -11998,6 +12376,101 @@ var curatedSiteStyles = [
11998
12376
  paletteChoice("brand-led-jewel"),
11999
12377
  paletteChoice("brand-led-warm")
12000
12378
  ]
12379
+ }),
12380
+ defineCuratedSiteStyle({
12381
+ id: "site-style:south-west-twerk-school",
12382
+ name: "South West Twerk School",
12383
+ description: "Energetic, editorial, and high-contrast for a branded dance school presence.",
12384
+ 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.",
12385
+ selectionKeywords: [
12386
+ "dance",
12387
+ "classes",
12388
+ "workshop",
12389
+ "school",
12390
+ "movement",
12391
+ "performance",
12392
+ "community"
12393
+ ],
12394
+ tokenRecipes: {
12395
+ palette: "brand-led",
12396
+ contrast: "maximum",
12397
+ radius: "soft",
12398
+ shadow: "layered",
12399
+ typography: "clean-sans",
12400
+ spacing: "airy",
12401
+ motion: "expressive"
12402
+ },
12403
+ compositionBudget: expressiveBudget,
12404
+ themeOverrides: {
12405
+ typography: {
12406
+ body: {
12407
+ family: "Manrope, system-ui, sans-serif",
12408
+ size: "lg",
12409
+ weight: "regular",
12410
+ lineHeight: "relaxed",
12411
+ letterSpacing: "normal"
12412
+ },
12413
+ headings: {
12414
+ default: {
12415
+ family: '"TAN - PEARL", sans-serif',
12416
+ weight: "bold",
12417
+ lineHeight: "normal",
12418
+ letterSpacing: "tight",
12419
+ colorToken: "primary",
12420
+ italic: null,
12421
+ case: null
12422
+ },
12423
+ h1: {
12424
+ size: "xl",
12425
+ weight: "bold",
12426
+ lineHeight: "normal",
12427
+ letterSpacing: "tight",
12428
+ italic: null
12429
+ },
12430
+ h2: {
12431
+ size: "lg",
12432
+ weight: "bold",
12433
+ lineHeight: "normal",
12434
+ letterSpacing: "normal",
12435
+ italic: null
12436
+ },
12437
+ h3: {
12438
+ size: "md",
12439
+ weight: "bold",
12440
+ lineHeight: "normal",
12441
+ letterSpacing: "normal",
12442
+ italic: null
12443
+ }
12444
+ },
12445
+ scale: "balanced"
12446
+ },
12447
+ bodyText: {
12448
+ intro: {
12449
+ paragraphSize: "editorial",
12450
+ headingSize: "editorial"
12451
+ }
12452
+ }
12453
+ },
12454
+ recommendedAppearancePresetIds: [
12455
+ "site-header-brand-solid-inverted-cta",
12456
+ "site-footer-brand-two-band",
12457
+ "hero-brand-scrim-fixed-frame",
12458
+ "body-text-editorial-intro",
12459
+ "testimonials-accent-quote-proof",
12460
+ "contact-form-dark-card"
12461
+ ],
12462
+ buttonPersonalityChoices: [
12463
+ buttonChoice("showtime-pill"),
12464
+ buttonChoice("confident-chip"),
12465
+ buttonChoice("ink-stamp"),
12466
+ buttonChoice("brushed-wash")
12467
+ ],
12468
+ paletteVariantChoices: [
12469
+ paletteChoice("brand-led-burgundy-gold"),
12470
+ paletteChoice("brand-led-jewel"),
12471
+ paletteChoice("brand-led-warm"),
12472
+ paletteChoice("high-contrast-ink")
12473
+ ]
12001
12474
  })
12002
12475
  ];
12003
12476
  var curatedSiteStylesById = new Map(
@@ -12042,6 +12515,40 @@ var heroLegibilityStrategySchema = z23.enum([
12042
12515
  "scrim-gradient",
12043
12516
  "solid-panel"
12044
12517
  ]);
12518
+ var sectionHeightIntentSchema = z23.enum([
12519
+ "default",
12520
+ "banner",
12521
+ "hero",
12522
+ "immersive"
12523
+ ]);
12524
+ var imageSurfaceTreatmentIntensitySchema = z23.enum(["soft", "balanced", "strong"]);
12525
+ var imageSurfaceMotionSchema = z23.enum(["static", "fixed-frame"]);
12526
+ var imageSurfaceTreatmentSchema = z23.discriminatedUnion("kind", [
12527
+ z23.object({ kind: z23.literal("none") }).strict(),
12528
+ z23.object({
12529
+ kind: z23.literal("brand-scrim"),
12530
+ token: z23.enum(["primary", "secondary", "accent"]),
12531
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12532
+ }).strict(),
12533
+ z23.object({
12534
+ kind: z23.literal("brand-wash"),
12535
+ token: z23.enum(["primary", "secondary", "accent"]),
12536
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12537
+ }).strict(),
12538
+ z23.object({
12539
+ kind: z23.literal("neutral-scrim"),
12540
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12541
+ }).strict(),
12542
+ z23.object({
12543
+ kind: z23.literal("neutral-wash"),
12544
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12545
+ }).strict(),
12546
+ z23.object({
12547
+ kind: z23.literal("solid-panel"),
12548
+ intensity: imageSurfaceTreatmentIntensitySchema.optional()
12549
+ }).strict()
12550
+ ]);
12551
+ var testimonialCardTreatmentSchema = z23.enum(["default", "accent-quote"]);
12045
12552
  function uniqueNonEmpty(values) {
12046
12553
  const uniqueValues = [...new Set(values)];
12047
12554
  const firstValue = uniqueValues[0];
@@ -12080,7 +12587,11 @@ var blockDesignPlanSchema = z23.object({
12080
12587
  itemSurface: z23.enum(userDesignOptionCatalog.itemSurfaces),
12081
12588
  transitionAfter: z23.enum(userDesignOptionCatalog.transitions),
12082
12589
  emphasis: z23.enum(userDesignOptionCatalog.emphases),
12083
- heroLegibility: heroLegibilityStrategySchema.optional()
12590
+ sectionHeight: sectionHeightIntentSchema.optional(),
12591
+ heroLegibility: heroLegibilityStrategySchema.optional(),
12592
+ imageSurfaceTreatment: imageSurfaceTreatmentSchema.optional(),
12593
+ imageSurfaceMotion: imageSurfaceMotionSchema.optional(),
12594
+ testimonialCardTreatment: testimonialCardTreatmentSchema.optional()
12084
12595
  }).strict();
12085
12596
  var styleAuthoritySchema = z23.discriminatedUnion("kind", [
12086
12597
  z23.object({
@@ -13506,6 +14017,7 @@ var SEMANTIC_SPACING_VALUES = [
13506
14017
  ];
13507
14018
  var SECTION_MIN_HEIGHT_VALUES = [
13508
14019
  "none",
14020
+ "banner",
13509
14021
  "hero",
13510
14022
  "immersive"
13511
14023
  ];
@@ -13533,6 +14045,7 @@ var CONTAINER_SPACING_MAP = {
13533
14045
  };
13534
14046
  var SECTION_MIN_HEIGHT_MAP = {
13535
14047
  none: "",
14048
+ banner: "rb-section-min-h-banner",
13536
14049
  hero: "rb-section-min-h-hero",
13537
14050
  immersive: "rb-section-min-h-immersive"
13538
14051
  };
@@ -14323,6 +14836,9 @@ var boxStylesCompositeTransform = {
14323
14836
  classes.push(roundedResult);
14324
14837
  }
14325
14838
  }
14839
+ if (input.treatment === "accent-quote") {
14840
+ classes.push("rb-card-treatment-accent-quote");
14841
+ }
14326
14842
  return classes.join(" ").trim() || "";
14327
14843
  }
14328
14844
  };
@@ -14420,7 +14936,7 @@ var sectionClassNameTransform = {
14420
14936
  minHeight = input.minHeight;
14421
14937
  } else if (process.env.NODE_ENV !== "production") {
14422
14938
  console.warn(
14423
- `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, hero, immersive.`
14939
+ `[sectionStyles] Invalid minHeight value in _sectionStyles: "${input.minHeight}". Expected one of: none, banner, hero, immersive.`
14424
14940
  );
14425
14941
  }
14426
14942
  }
@@ -14743,23 +15259,6 @@ function styledCard(children, opts, ...mods) {
14743
15259
  );
14744
15260
  }
14745
15261
 
14746
- // ../blocks/src/system/node/fragments/typography.ts
14747
- function mergeClassName(base, extra) {
14748
- return [base, extra ?? ""].filter(Boolean).join(" ");
14749
- }
14750
- function captionText(opts, ...mods) {
14751
- const {
14752
- as: asProp,
14753
- className: classNameProp,
14754
- color,
14755
- ...rest
14756
- } = opts ?? {};
14757
- const as = asProp ?? "p";
14758
- const className = mergeClassName("rb-caption", classNameProp);
14759
- const style = textColorStyle(color ?? "mutedText");
14760
- return text({ ...rest, as, className, style }, ...mods);
14761
- }
14762
-
14763
15262
  // ../blocks/src/system/node/fragments/feedbackCallout.ts
14764
15263
  function joinClasses(...parts) {
14765
15264
  return parts.filter((part) => typeof part === "string" && part.length > 0).join(" ");
@@ -15664,18 +16163,17 @@ function buildAttributionNodes() {
15664
16163
  const name = text(
15665
16164
  {
15666
16165
  as: "strong",
15667
- className: "rb-block",
15668
- style: textColorStyle("text")
16166
+ className: "rb-block"
15669
16167
  },
15670
16168
  bind("testimonial.content.name", { fallback: "Anonymous" })
15671
16169
  );
15672
- const jobTitle = captionText(
15673
- null,
16170
+ const jobTitle = text(
16171
+ { as: "p", className: "rb-caption" },
15674
16172
  when("testimonial.content.jobTitle"),
15675
16173
  bind("testimonial.content.jobTitle")
15676
16174
  );
15677
- const company = captionText(
15678
- null,
16175
+ const company = text(
16176
+ { as: "p", className: "rb-caption" },
15679
16177
  when("testimonial.content.company"),
15680
16178
  bind("testimonial.content.company")
15681
16179
  );
@@ -15709,8 +16207,7 @@ function buildTestimonialCard(...mods) {
15709
16207
  );
15710
16208
  const body = richText(
15711
16209
  {
15712
- className: "rb-prose rb-max-w-none",
15713
- style: textColorStyle("text")
16210
+ className: "rb-prose rb-max-w-none"
15714
16211
  },
15715
16212
  bind("testimonial.content.body"),
15716
16213
  when("testimonial.content.body")
@@ -17340,6 +17837,7 @@ function heroContentCard(children, gap) {
17340
17837
  return styledContainer({
17341
17838
  bindFrom: "_contentCardStyles",
17342
17839
  constrainWidth: false,
17840
+ baseClassName: "rb-relative rb-isolate",
17343
17841
  rootType: "stack",
17344
17842
  rootProps: {
17345
17843
  gap
@@ -17370,6 +17868,7 @@ function heroContentWrapper(children, gap, fallbackClassName) {
17370
17868
  function heroContainerStack(children, gap) {
17371
17869
  return styledContainer({
17372
17870
  rootType: "stack",
17871
+ baseClassName: "rb-relative rb-isolate",
17373
17872
  rootProps: {
17374
17873
  gap: "none",
17375
17874
  justify: {
@@ -18588,7 +19087,7 @@ function resolveHeroVerticalAlignment(content) {
18588
19087
  if (raw === "top" || raw === "center" || raw === "bottom") return raw;
18589
19088
  const sectionStyles = asPartialObject(content._sectionStyles);
18590
19089
  const minHeight = sectionStyles?.minHeight;
18591
- if (minHeight === "hero" || minHeight === "immersive") return "center";
19090
+ if (minHeight === "banner" || minHeight === "hero" || minHeight === "immersive") return "center";
18592
19091
  const variant = resolveHeroVariant(content);
18593
19092
  if (variant === "split" || variant === "splitReverse") return "center";
18594
19093
  return "top";
@@ -19346,6 +19845,26 @@ var footerSplitNavSingleClassTransform = {
19346
19845
  ]);
19347
19846
  }
19348
19847
  };
19848
+ var footerSplitMainClassSchema = z35.object({
19849
+ base: z35.string().optional(),
19850
+ reverseClass: z35.string().optional()
19851
+ });
19852
+ var footerSplitMainClassTransform = {
19853
+ id: "layout.footerSplitMainClass",
19854
+ kind: "string",
19855
+ summary: "Compose split-footer main row classes from footer logo placement",
19856
+ schema: footerSplitMainClassSchema,
19857
+ run: (value, options) => {
19858
+ const logo = asPartialObject(value);
19859
+ const placement = logo?.placement ?? "right";
19860
+ const shouldPlaceLogoFirst = placement === "left" || placement === "above";
19861
+ 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";
19862
+ return joinClasses4([
19863
+ options.base ?? baseClass,
19864
+ shouldPlaceLogoFirst ? options.reverseClass ?? "rb-md-flex-row-reverse" : null
19865
+ ]);
19866
+ }
19867
+ };
19349
19868
  var footerLogoClassSchema = z35.object({
19350
19869
  base: z35.string().optional()
19351
19870
  });
@@ -19356,14 +19875,11 @@ var footerLogoClassTransform = {
19356
19875
  schema: footerLogoClassSchema,
19357
19876
  run: (value, options) => {
19358
19877
  const logo = asPartialObject(value);
19359
- const placement = logo?.placement ?? "right";
19360
19878
  const align = logo?.align ?? "end";
19361
19879
  const hiddenClass = logo?.showLogo === false ? "rb-hidden" : null;
19362
- const orderClass = placement === "left" || placement === "above" ? "rb-md-order-first" : "rb-md-order-last";
19363
19880
  const selfAlignClass = align === "start" ? "rb-self-start rb-text-left" : align === "center" ? "rb-self-center rb-text-center" : "rb-self-end rb-text-right";
19364
19881
  return joinClasses4([
19365
19882
  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",
19366
- orderClass,
19367
19883
  selfAlignClass,
19368
19884
  hiddenClass
19369
19885
  ]);
@@ -19418,6 +19934,7 @@ var layoutTransforms = [
19418
19934
  footerBottomBarContainerClassTransform,
19419
19935
  footerBottomBarStyleTransform,
19420
19936
  footerSplitNavSingleClassTransform,
19937
+ footerSplitMainClassTransform,
19421
19938
  footerLogoClassTransform,
19422
19939
  footerLogoMediaClassTransform,
19423
19940
  footerLogoTextVisibleTransform
@@ -19694,7 +20211,7 @@ var createNavRow = (className, align = "end") => navRow({
19694
20211
  var headerCta = ctaButton({
19695
20212
  basePath: "menu.ctaItem",
19696
20213
  whenPath: "menu.ctaItem.label",
19697
- variantPath: "menu.ctaItem.variant",
20214
+ variantPath: "$root.theme.header.ctaVariant",
19698
20215
  linkPath: "menu.ctaItem.link",
19699
20216
  sizeFallback: "sm",
19700
20217
  className: `header-cta ${desktopOnlyDisplay("inline-flex")} rb-ml-6`
@@ -19702,7 +20219,7 @@ var headerCta = ctaButton({
19702
20219
  var mobileCta = ctaButton({
19703
20220
  basePath: "menu.ctaItem",
19704
20221
  whenPath: "menu.ctaItem.label",
19705
- variantPath: "menu.ctaItem.variant",
20222
+ variantPath: "$root.theme.header.ctaVariant",
19706
20223
  linkPath: "menu.ctaItem.link",
19707
20224
  sizeFallback: "md",
19708
20225
  className: "nav-mobile-cta rb-w-full"
@@ -20163,7 +20680,13 @@ var splitFooterLayout = stack(
20163
20680
  [
20164
20681
  inline(
20165
20682
  {
20166
- 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"
20683
+ className: {
20684
+ $bind: {
20685
+ from: "$root.theme.footer.logo",
20686
+ transforms: [{ id: "layout.footerSplitMainClass" }],
20687
+ 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"
20688
+ }
20689
+ }
20167
20690
  },
20168
20691
  [
20169
20692
  stack(
@@ -22251,7 +22774,8 @@ var courseEntrySubrouteContextSchema = z47.union([
22251
22774
  run: z47.object({
22252
22775
  courseId: z47.string(),
22253
22776
  seriesId: z47.string(),
22254
- runSlug: z47.string()
22777
+ runSlug: z47.string(),
22778
+ runName: z47.string().nullable()
22255
22779
  })
22256
22780
  }),
22257
22781
  z47.object({
@@ -28198,6 +28722,34 @@ function panelCapable() {
28198
28722
  itemSurfaces: "unsupported"
28199
28723
  });
28200
28724
  }
28725
+ var heroSectionHeights = [
28726
+ "default",
28727
+ "banner",
28728
+ "hero",
28729
+ "immersive"
28730
+ ];
28731
+ var heroImageSurfaceTreatments = [
28732
+ "none",
28733
+ "brand-scrim",
28734
+ "brand-wash",
28735
+ "neutral-scrim",
28736
+ "neutral-wash",
28737
+ "solid-panel"
28738
+ ];
28739
+ var heroImageSurfaceMotions = [
28740
+ "static",
28741
+ "fixed-frame"
28742
+ ];
28743
+ function heroCapable() {
28744
+ return declareBlockDesignCapability({
28745
+ sectionSurfaces: "supported",
28746
+ contentFrames: ["plain", "panel"],
28747
+ itemSurfaces: "unsupported",
28748
+ sectionHeights: heroSectionHeights,
28749
+ imageSurfaceTreatments: heroImageSurfaceTreatments,
28750
+ imageSurfaceMotions: heroImageSurfaceMotions
28751
+ });
28752
+ }
28201
28753
  function plainItemsCapable() {
28202
28754
  return declareBlockDesignCapability({
28203
28755
  sectionSurfaces: "supported",
@@ -28314,7 +28866,7 @@ function withDesignCapability(blockKind, definition, designCapability, designMet
28314
28866
  };
28315
28867
  }
28316
28868
  var systemBlockDefinitionsRaw = [
28317
- withDesignCapability("block.hero", heroBlockDefinition, panelCapable(), defineBlockDesignMetadata({
28869
+ withDesignCapability("block.hero", heroBlockDefinition, heroCapable(), defineBlockDesignMetadata({
28318
28870
  flow: heroFlow,
28319
28871
  layoutProfiles: [
28320
28872
  layoutProfile({
@@ -28418,7 +28970,12 @@ var systemBlockDefinitionsRaw = [
28418
28970
  flow: siteChromeFlow,
28419
28971
  layoutProfiles: []
28420
28972
  })),
28421
- withDesignCapability("block.testimonials", testimonialsBlockDefinition, panelAndItemsCapable(), defineBlockDesignMetadata({
28973
+ withDesignCapability("block.testimonials", testimonialsBlockDefinition, declareBlockDesignCapability({
28974
+ sectionSurfaces: "supported",
28975
+ contentFrames: ["plain", "panel"],
28976
+ itemSurfaces: "supported",
28977
+ testimonialCardTreatments: ["default", "accent-quote"]
28978
+ }), defineBlockDesignMetadata({
28422
28979
  flow: proofFlow,
28423
28980
  layoutProfiles: [
28424
28981
  layoutProfile({
@@ -28730,8 +29287,15 @@ function parseOpacity(value) {
28730
29287
  }
28731
29288
  return opacity <= 1 ? opacity : opacity / 100;
28732
29289
  }
28733
- function appendOptionalClasses(baseClassName, optionalClassName) {
28734
- return optionalClassName ? `${baseClassName} ${optionalClassName}` : baseClassName;
29290
+ function backgroundMotionClassNames(input) {
29291
+ return input.motion === "fixed-frame" ? "rb-bg-motion-fixed-frame" : "";
29292
+ }
29293
+ function appendBackgroundMediaClasses(baseClassName, input) {
29294
+ return [
29295
+ baseClassName,
29296
+ backgroundMotionClassNames(input),
29297
+ backgroundVideoMobileClassNames(input)
29298
+ ].filter(Boolean).join(" ");
28735
29299
  }
28736
29300
  var resolveImageStyleTransform = {
28737
29301
  id: "background.resolveImageStyle",
@@ -28808,9 +29372,9 @@ var resolveImageClassNameTransform = {
28808
29372
  const objectFit = isString(input.objectFit) ? input.objectFit.trim() : null;
28809
29373
  const position = isString(input.position) ? input.position.trim() : null;
28810
29374
  if (objectFit === "fill" || objectFit === "fit" || objectFit === null) {
28811
- return appendOptionalClasses(
29375
+ return appendBackgroundMediaClasses(
28812
29376
  `${baseClass} rb-inset-0 rb-h-full rb-w-full rb-object-${objectFit === "fit" ? "contain" : "cover"}`,
28813
- backgroundVideoMobileClassNames(input)
29377
+ input
28814
29378
  );
28815
29379
  }
28816
29380
  let needsAnchoring = false;
@@ -28823,18 +29387,18 @@ var resolveImageClassNameTransform = {
28823
29387
  }
28824
29388
  }
28825
29389
  if (!needsAnchoring) {
28826
- return appendOptionalClasses(
29390
+ return appendBackgroundMediaClasses(
28827
29391
  `${baseClass} rb-inset-0 rb-h-full rb-w-full`,
28828
- backgroundVideoMobileClassNames(input)
29392
+ input
28829
29393
  );
28830
29394
  }
28831
29395
  const isPreset = position && BACKGROUND_POSITION_PRESET_VALUES.includes(position);
28832
29396
  const isCustom = position && !isPreset;
28833
29397
  if (isCustom) {
28834
- return appendOptionalClasses(baseClass, backgroundVideoMobileClassNames(input));
29398
+ return appendBackgroundMediaClasses(baseClass, input);
28835
29399
  }
28836
29400
  const anchorClasses = getAnchorClasses(position);
28837
- return appendOptionalClasses(`${baseClass} ${anchorClasses}`, backgroundVideoMobileClassNames(input));
29401
+ return appendBackgroundMediaClasses(`${baseClass} ${anchorClasses}`, input);
28838
29402
  }
28839
29403
  };
28840
29404
  var resolveOverlayStyleTransform = {