@riverbankcms/sdk 0.135.0 → 0.136.0

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 (153) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +4 -8
  3. package/dist/{PreviewEditorSidebar-roNY0GVy.mjs → PreviewEditorSidebar-BU5ZlhQR.mjs} +4 -4
  4. package/dist/{PreviewEditorUI-KboDbEh_.mjs → PreviewEditorUI-9XkHL-bC.mjs} +3 -3
  5. package/dist/{PreviewQueryProvider-DcgaESkm.mjs → PreviewQueryProvider-wbEpXryy.mjs} +1 -1
  6. package/dist/{SdkPreviewModeRuntime-DBrF7Caa.mjs → SdkPreviewModeRuntime-CnWmj-2B.mjs} +50 -99
  7. package/dist/{SiteChromeCustomizeContext-DrIEpJKn.mjs → SiteChromeCustomizeContext-B6d5zkog.mjs} +2334 -1173
  8. package/dist/_dts/ai/src/contracts/proposals.d.ts +8 -554
  9. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +401 -2312
  10. package/dist/_dts/api/src/contentRuntime.d.ts +6 -0
  11. package/dist/_dts/api/src/endpoints.d.ts +7 -0
  12. package/dist/_dts/api/src/index.d.ts +1 -0
  13. package/dist/_dts/api/src/publicEventEndpointDefinitions.d.ts +7 -0
  14. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +26 -0
  15. package/dist/_dts/api/src/sdkBlockContentAdmission.d.ts +5 -0
  16. package/dist/_dts/api/src/sdkThemeWire.d.ts +6 -432
  17. package/dist/_dts/block-form/src/blockDraftSaveability.d.ts +2 -3
  18. package/dist/_dts/block-form/src/utils/slug.d.ts +6 -0
  19. package/dist/_dts/blocks/src/PageRenderer.d.ts +12 -6
  20. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +48 -0
  21. package/dist/_dts/blocks/src/definitions.d.ts +14 -0
  22. package/dist/_dts/blocks/src/index.d.ts +4 -3
  23. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +40 -0
  24. package/dist/_dts/blocks/src/server.d.ts +2 -2
  25. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +25 -0
  26. package/dist/_dts/blocks/src/system/data/index.d.ts +2 -0
  27. package/dist/_dts/blocks/src/system/data/publicLoaderCachePolicy.d.ts +78 -0
  28. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +2 -18
  29. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +103 -16
  30. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +1 -1
  31. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +2 -1
  32. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +8 -0
  33. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +1 -1
  34. package/dist/_dts/blocks/src/system/runtime/api/types/events.d.ts +19 -0
  35. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +52 -0
  36. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +24 -0
  37. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +44 -18
  38. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +20 -3
  39. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/VerifyingTimeoutStep.d.ts +3 -1
  40. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationStripeReturn.d.ts +1 -0
  41. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.client.d.ts +2 -2
  42. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +40 -0
  43. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +2 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +43 -0
  45. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarDayCell.d.ts +3 -1
  46. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/CalendarNavigationChevron.d.ts +4 -0
  47. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/DayEventsModal.d.ts +2 -1
  48. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/EventModalContext.d.ts +3 -2
  49. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekAgendaView.d.ts +3 -0
  50. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +31 -3
  51. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekTimetableView.d.ts +3 -1
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +19 -1
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/timetableModel.d.ts +4 -3
  54. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/utils.d.ts +3 -3
  55. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +0 -1
  56. package/dist/_dts/calendar/src/grid.d.ts +24 -66
  57. package/dist/_dts/calendar/src/index.d.ts +2 -2
  58. package/dist/_dts/calendar/src/timetable.d.ts +5 -9
  59. package/dist/_dts/commerce/src/purchase/allocation.d.ts +11 -0
  60. package/dist/_dts/commerce/src/purchase/index.d.ts +2 -0
  61. package/dist/_dts/commerce/src/purchase/settlement.d.ts +33 -0
  62. package/dist/_dts/commerce/src/purchase/stripeCheckoutReturnUrl.d.ts +8 -0
  63. package/dist/_dts/content-model/src/templates/defaults.d.ts +6 -0
  64. package/dist/_dts/core/src/slug.d.ts +20 -5
  65. package/dist/_dts/preview-next/src/client/blocks/EditablePageRenderer.d.ts +1 -1
  66. package/dist/_dts/preview-next/src/client/preview/headerInteractionPaletteSurfaceState.d.ts +2 -1
  67. package/dist/_dts/sdk/src/client/publicLoaderCacheAccess.d.ts +6 -0
  68. package/dist/_dts/sdk/src/public-api/contracts.d.ts +5 -1
  69. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +10 -6
  70. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +0 -1
  71. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +4 -4
  72. package/dist/_dts/sdk/src/rendering/helpers/footerPageOutline.d.ts +3 -0
  73. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +3 -0
  74. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +1 -1
  75. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +17 -0
  76. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +9 -3
  77. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +1 -1
  78. package/dist/_dts/sdk/src/rendering/index.d.ts +2 -2
  79. package/dist/_dts/sdk/src/rendering/overrideResolution.d.ts +7 -4
  80. package/dist/_dts/sdk/src/version.d.ts +1 -1
  81. package/dist/_dts/theme-core/src/cards/types.d.ts +8 -8
  82. package/dist/_dts/theme-core/src/data.d.ts +12 -0
  83. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  84. package/dist/_dts/theme-core/src/header/legacyHeaderVariant.d.ts +2 -6
  85. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +6 -807
  86. package/dist/_dts/theme-core/src/schema.d.ts +452 -1278
  87. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +213 -1
  88. package/dist/_dts/theme-core/src/site-styles/headerLayoutCatalog.d.ts +0 -29
  89. package/dist/_dts/theme-core/src/site-styles/headerLayoutStyles.d.ts +10 -0
  90. package/dist/_dts/theme-core/src/site-styles/headerLayoutTypes.d.ts +8 -5
  91. package/dist/_dts/theme-core/src/site-styles/headerOpeningForeground.d.ts +4 -4
  92. package/dist/_dts/theme-core/src/site-styles/headerStyleCompiler.d.ts +16 -2
  93. package/dist/_dts/theme-core/src/site-styles/headerStyleDefaults.d.ts +465 -0
  94. package/dist/_dts/theme-core/src/site-styles/headerStyleRecipe.d.ts +161 -0
  95. package/dist/client/{BookingConsentAgreement-BQqwi8Oa.mjs → BookingConsentAgreement-DCch21a6.mjs} +2 -2
  96. package/dist/client/{DiscountCodeDisclosure-B97aMo0V.mjs → DiscountCodeDisclosure-DIj1T59K.mjs} +1 -1
  97. package/dist/client/{EventCombined.client-Bs2Iw9Q6.mjs → EventCombined.client-BWVNlXTx.mjs} +226 -206
  98. package/dist/client/{EventListing.client-C4QUQdmg.mjs → EventListing.client-DVFCDe3i.mjs} +2 -2
  99. package/dist/client/{LeafletStaticMap-CwWRk69M.mjs → LeafletStaticMap-BY5mIHw9.mjs} +1 -1
  100. package/dist/client/{accordion-BA0j8Mpw.mjs → accordion-CK29E8rG.mjs} +1 -1
  101. package/dist/client/{bookingForm-Br2e41H0.mjs → bookingForm-DFvnet-N.mjs} +5 -5
  102. package/dist/client/bookings.mjs +87 -47
  103. package/dist/client/{carousel-B4dmwnpD.mjs → carousel-BVU5NQlb.mjs} +1 -1
  104. package/dist/client/{cart-B_ckGW4b.mjs → cart-BNItcZVa.mjs} +3 -3
  105. package/dist/client/{checkout-DAyspHdf.mjs → checkout-Bu6iCdkP.mjs} +3 -3
  106. package/dist/client/client.mjs +1985 -1055
  107. package/dist/client/{context-DljQn8L5.mjs → context-BImarOAq.mjs} +12 -0
  108. package/dist/client/{eventCalendar-pJu3FUod.mjs → eventCalendar-DS2h-UXD.mjs} +256 -114
  109. package/dist/client/{eventCombined-B6Kacm9F.mjs → eventCombined-Drt4Oq9p.mjs} +3 -3
  110. package/dist/client/{eventDetails-CaX9z1pv.mjs → eventDetails-Bl2vWgTX.mjs} +4 -3
  111. package/dist/client/{eventListing-B9aXPO-I.mjs → eventListing-CS7PHY7v.mjs} +3 -3
  112. package/dist/client/{eventRegistration-CBSovBkg.mjs → eventRegistration-D-j8eNy2.mjs} +85 -41
  113. package/dist/client/{form-Cm0tu_7o.mjs → form-RMpoLTyr.mjs} +2 -2
  114. package/dist/client/{headerSection-OgRtHeKS.mjs → headerSection-BYE3Lb3k.mjs} +2 -2
  115. package/dist/client/hooks.mjs +2254 -298
  116. package/dist/client/{locationMap-DmjcYqNM.mjs → locationMap-BxSr7Kkh.mjs} +2 -2
  117. package/dist/client/{newsletterForm-D08OZQAC.mjs → newsletterForm-DerbXwFC.mjs} +2 -2
  118. package/dist/client/{productDetail-BqZeu2P4.mjs → productDetail-4SZCLhAf.mjs} +3 -3
  119. package/dist/client/{productList-mNyIF9FG.mjs → productList-D7AP4GNq.mjs} +3 -3
  120. package/dist/client/{propsDecoder-DwHXRm9X.mjs → propsDecoder-pzBeCh14.mjs} +123 -46
  121. package/dist/client/rendering/client.mjs +793 -488
  122. package/dist/client/rendering/islands.mjs +17 -17
  123. package/dist/client/rendering.mjs +2161 -1268
  124. package/dist/client/{scrollToBlock-DtmdM3v-.mjs → scrollToBlock-CduAKf8T.mjs} +1 -1
  125. package/dist/client/{shop-CNjZK16F.mjs → shop-Cp5p_kGe.mjs} +6 -6
  126. package/dist/client/{shop-commerce-DkNNao1J.mjs → shop-commerce-DicXYaYX.mjs} +5 -5
  127. package/dist/client/{shop-commerce-store-9WA--zuW.mjs → shop-commerce-store-CGWnpY4K.mjs} +1 -1
  128. package/dist/client/{shopShared-CHCVfccY.mjs → shopShared-BDf9ljkm.mjs} +3 -3
  129. package/dist/client/{useEventFilters-DvuaB4ZN.mjs → useEventFilters-DeeyGYuk.mjs} +3 -3
  130. package/dist/preview-next/before-render.mjs +7 -0
  131. package/dist/preview-next/client/runtime.mjs +4 -4
  132. package/dist/preview-next/keepAlive.mjs +7 -0
  133. package/dist/preview-next/middleware.mjs +7 -0
  134. package/dist/{previewAuthStore-C7ksxt5b.mjs → previewAuthStore-DbqBol0V.mjs} +7 -0
  135. package/dist/{sdk-runtime-3GhW4knb.mjs → sdk-runtime-19MO27F0.mjs} +2 -2
  136. package/dist/{separator-D3bCWYYb.mjs → separator-DaPLtJ1f.mjs} +1 -1
  137. package/dist/server/components.mjs +1562 -917
  138. package/dist/server/config-validation.mjs +94 -135
  139. package/dist/server/config.mjs +94 -135
  140. package/dist/server/data.mjs +94 -134
  141. package/dist/server/index.mjs +122 -4
  142. package/dist/server/manifest.mjs +0 -1
  143. package/dist/server/next.mjs +1467 -732
  144. package/dist/server/page-converter.mjs +87 -113
  145. package/dist/server/prebuild.mjs +1 -1
  146. package/dist/server/rendering/server.mjs +1717 -939
  147. package/dist/server/rendering.mjs +1729 -1044
  148. package/dist/server/routing.mjs +3229 -1835
  149. package/dist/server/server.mjs +21739 -19801
  150. package/dist/server/theme-bridge.mjs +656 -264
  151. package/dist/server/theme.mjs +2 -17
  152. package/dist/styles/index.css +609 -181
  153. package/package.json +1 -1
@@ -5006,12 +5006,8 @@ const legacyHeaderVariantValues = Object.keys(legacyHeaderVariants);
5006
5006
  * `@riverbankcms/api` is `z.input<typeof themeSchema>`, so a widened input here
5007
5007
  * would leak straight into a public type.
5008
5008
  *
5009
- * Not every read of a persisted theme goes through the schema:
5010
- * `resolveRuntimeTheme` in
5011
- * `apps/dashboard/src/server/services/sites/runtimeSiteResponse.ts` returns the
5012
- * raw database JSON asserted as `Theme` with no parse, so a theme still
5013
- * carrying a legacy spelling reaches the theme editor un-aliased. That gap
5014
- * predates this alias and is harmless while persisted usage is zero.
5009
+ * Persisted runtime themes are admitted through `parseThemeForPersistence`
5010
+ * before reaching consumers, so legacy spellings normalize at that boundary.
5015
5011
  */
5016
5012
  const headerVariantWithLegacyAliasSchema = z.enum([...headerVariantValues, ...legacyHeaderVariantValues]).transform((value) => value in legacyHeaderVariants ? legacyHeaderVariants[value] : value);
5017
5013
  const BREAKPOINT_LG = 1024;
@@ -5470,7 +5466,6 @@ const navFontWeight = z.enum([
5470
5466
  "bold"
5471
5467
  ]);
5472
5468
  const headerMaxWidth = z.enum(["container", "full"]);
5473
- const headerBarFrame = z.enum(["full-bleed", "inset-shell"]);
5474
5469
  const headerBorderSchema = componentBorderSchema.extend({ position: z.enum([
5475
5470
  "bottom",
5476
5471
  "top",
@@ -5499,12 +5494,6 @@ const headerLogoTextSchema = z.object({
5499
5494
  ]).optional(),
5500
5495
  hideOnShrink: z.boolean().optional()
5501
5496
  }).optional();
5502
- const navEffectsSchema = z.object({
5503
- underlineGradient: z.boolean().default(false),
5504
- glow: z.boolean().default(false),
5505
- glowColor: z.string().optional(),
5506
- neumorphic: z.boolean().default(false)
5507
- }).optional();
5508
5497
  const dropdownStyleSchema = z.object({
5509
5498
  background: themeColorTokenSchema.default("surface"),
5510
5499
  textColor: themeColorTokenSchema.default("text"),
@@ -5596,9 +5585,7 @@ const headerSchema = z.object({
5596
5585
  positioning: headerPositioning,
5597
5586
  shrinkOnScroll: z.boolean(),
5598
5587
  maxWidth: headerMaxWidth,
5599
- barFrame: headerBarFrame.optional(),
5600
5588
  scrollTreatment: headerScrollTreatmentSchema,
5601
- logoOverride: mediaSchema.nullable().optional(),
5602
5589
  background: headerBackgroundSchema.default({
5603
5590
  type: "color",
5604
5591
  color: "surface"
@@ -5610,13 +5597,11 @@ const headerSchema = z.object({
5610
5597
  navFontRole: z.enum(["body", "heading"]).optional(),
5611
5598
  navTextSize: navLinkStyleSchema.shape.textSize,
5612
5599
  interactionPalette: headerInteractionPaletteSchema.optional(),
5613
- navPlacement: z.enum(["end", "center"]).optional(),
5614
5600
  container: headerContainerSchema,
5615
5601
  border: headerBorderSchema,
5616
5602
  shadow: componentShadowSchema.optional(),
5617
5603
  logo: logoStyleSchema,
5618
5604
  logoText: headerLogoTextSchema,
5619
- navEffects: navEffectsSchema,
5620
5605
  navContainer: navContainerSchema,
5621
5606
  navLinkStyle: navLinkStyleSchema.optional(),
5622
5607
  ctaGap: headerCtaGapSchema.optional(),
@@ -8011,38 +7996,6 @@ function asHeaderStyleId(value) {
8011
7996
  return value;
8012
7997
  }
8013
7998
  //#endregion
8014
- //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8015
- function defineLookOptionGroup(group) {
8016
- defaultOption(group);
8017
- return group;
8018
- }
8019
- function defaultOption(group) {
8020
- const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8021
- if (option) return option;
8022
- throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8023
- }
8024
- //#endregion
8025
- //#region ../theme-core/src/site-styles/headerInteractionPalette.ts
8026
- const clearSplitInteractionPalette = defineLookOptionGroup({
8027
- id: "interaction-palette",
8028
- label: "Hover colour",
8029
- defaultOptionId: "accent",
8030
- options: [
8031
- {
8032
- id: "accent",
8033
- label: "Accent"
8034
- },
8035
- {
8036
- id: "primary",
8037
- label: "Primary"
8038
- },
8039
- {
8040
- id: "secondary",
8041
- label: "Secondary"
8042
- }
8043
- ]
8044
- });
8045
- //#endregion
8046
7999
  //#region ../theme-core/src/site-styles/headerLayoutCatalog.ts
8047
8000
  const titleOnlyLogoAccommodation = {
8048
8001
  pattern: "title-only",
@@ -8202,43 +8155,37 @@ const headerStyleCatalog = defineExactCatalog()([
8202
8155
  id: asHeaderStyleId("minimal"),
8203
8156
  label: "Minimal",
8204
8157
  description: "Quiet surface with simple color-change navigation.",
8205
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8206
- navTypography: "plain"
8158
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
8207
8159
  },
8208
8160
  {
8209
8161
  id: asHeaderStyleId("fine-line"),
8210
8162
  label: "Seamless",
8211
8163
  description: "Borderless surface with underline hover for a quieter page transition.",
8212
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8213
- navTypography: "plain"
8164
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
8214
8165
  },
8215
8166
  {
8216
8167
  id: asHeaderStyleId("soft-bar"),
8217
8168
  label: "Soft Bar",
8218
8169
  description: "Soft tinted surface with gentle pill hover states.",
8219
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8220
- navTypography: "plain"
8170
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
8221
8171
  },
8222
8172
  {
8223
8173
  id: asHeaderStyleId("pill-nav"),
8224
8174
  label: "Pill Nav",
8225
8175
  description: "A calm pill navigation rail over a neutral header.",
8226
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8227
- navTypography: "plain"
8176
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
8228
8177
  },
8229
8178
  {
8230
8179
  id: asHeaderStyleId("brand-bar"),
8231
8180
  label: "Brand Bar",
8232
8181
  description: "Solid brand surface with high-contrast navigation.",
8233
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8234
- navTypography: "brand-caps"
8182
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
8235
8183
  },
8236
8184
  {
8237
8185
  id: asHeaderStyleId("brand-underline"),
8238
8186
  label: "Brand Underline",
8239
8187
  description: "Brand surface with underline-grow navigation.",
8240
- supportedLayoutIds: supportedLayouts(["classic"]),
8241
- navTypography: "brand-caps"
8188
+ supportedLayoutIds: supportedLayouts(["classic"])
8242
8189
  },
8243
8190
  {
8244
8191
  id: asHeaderStyleId("brand-pill"),
@@ -8248,74 +8195,90 @@ const headerStyleCatalog = defineExactCatalog()([
8248
8195
  "classic",
8249
8196
  "centered",
8250
8197
  "floating"
8251
- ]),
8252
- navTypography: "brand-caps"
8198
+ ])
8253
8199
  },
8254
8200
  {
8255
8201
  id: asHeaderStyleId("brand-capsule"),
8256
8202
  label: "Brand Capsule",
8257
8203
  description: "Solid brand chrome designed as a floating capsule, with quiet-caps nav, a soft pill active state, and an inverted CTA pill.",
8258
- supportedLayoutIds: supportedLayouts(["classic"]),
8259
- navTypography: "quiet-caps"
8204
+ supportedLayoutIds: supportedLayouts(["classic"])
8260
8205
  },
8261
8206
  {
8262
8207
  id: asHeaderStyleId("serif-line"),
8263
8208
  label: "Serif Line",
8264
8209
  description: "Typographic logo treatment with understated underline navigation.",
8265
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8266
- navTypography: "heading"
8210
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
8267
8211
  },
8268
8212
  {
8269
8213
  id: asHeaderStyleId("flat-tabs"),
8270
8214
  label: "Flat Tabs",
8271
8215
  description: "Flat block hover and active states with a Swiss utility feel.",
8272
- supportedLayoutIds: supportedLayouts(["classic", "centered"]),
8273
- navTypography: "quiet-caps"
8216
+ supportedLayoutIds: supportedLayouts(["classic", "centered"])
8274
8217
  },
8275
8218
  {
8276
8219
  id: asHeaderStyleId("glass"),
8277
8220
  label: "Glass",
8278
8221
  description: "Translucent chrome with frosted navigation backing.",
8279
- supportedLayoutIds: supportedLayouts(["floating"]),
8280
- navTypography: "plain"
8222
+ supportedLayoutIds: supportedLayouts(["floating"])
8281
8223
  },
8282
8224
  {
8283
8225
  id: asHeaderStyleId("minimal-surface"),
8284
8226
  label: "Clear Split",
8285
8227
  description: "Floating logo with transparent navigation and no shared shell.",
8286
- supportedLayoutIds: supportedLayouts(["floating"]),
8287
- navTypography: "plain",
8288
- openingForegroundTarget: "all",
8289
- scrollTreatment: "contrast-glass",
8290
- interactionPalette: clearSplitInteractionPalette
8228
+ supportedLayoutIds: supportedLayouts(["floating"])
8291
8229
  },
8292
8230
  {
8293
8231
  id: asHeaderStyleId("soft-shell"),
8294
8232
  label: "Soft Shell",
8295
8233
  description: "Floating rounded shell with soft pill navigation states.",
8296
- supportedLayoutIds: supportedLayouts(["floating"]),
8297
- navTypography: "plain"
8234
+ supportedLayoutIds: supportedLayouts(["floating"])
8298
8235
  },
8299
8236
  {
8300
8237
  id: asHeaderStyleId("split-glass"),
8301
8238
  label: "Split Glass",
8302
8239
  description: "Logo floats independently while the navigation sits in a glass rail.",
8303
- supportedLayoutIds: supportedLayouts(["floating"]),
8304
- navTypography: "quiet-caps",
8305
- openingForegroundTarget: "brand-only"
8240
+ supportedLayoutIds: supportedLayouts(["floating"])
8306
8241
  },
8307
8242
  {
8308
8243
  id: asHeaderStyleId("split-pill"),
8309
8244
  label: "Split Pill",
8310
8245
  description: "Logo floats independently with a soft pill-backed navigation rail.",
8311
- supportedLayoutIds: supportedLayouts(["floating"]),
8312
- navTypography: "heading",
8313
- openingForegroundTarget: "brand-only"
8246
+ supportedLayoutIds: supportedLayouts(["floating"])
8314
8247
  }
8315
8248
  ]);
8316
8249
  new Map(headerLayoutCatalog.map((layout) => [layout.id, layout]));
8317
8250
  new Map(headerStyleCatalog.map((style) => [style.id, style]));
8318
8251
  //#endregion
8252
+ //#region ../theme-core/src/site-styles/lookOptionGroups.ts
8253
+ function defineLookOptionGroup(group) {
8254
+ defaultOption(group);
8255
+ return group;
8256
+ }
8257
+ function defaultOption(group) {
8258
+ const option = group.options.find((candidate) => candidate.id === group.defaultOptionId);
8259
+ if (option) return option;
8260
+ throw new Error(`Look option group "${group.id}" defaults to missing option "${group.defaultOptionId}".`);
8261
+ }
8262
+ defineLookOptionGroup({
8263
+ id: "interaction-palette",
8264
+ label: "Hover colour",
8265
+ defaultOptionId: "accent",
8266
+ options: [
8267
+ {
8268
+ id: "accent",
8269
+ label: "Accent"
8270
+ },
8271
+ {
8272
+ id: "primary",
8273
+ label: "Primary"
8274
+ },
8275
+ {
8276
+ id: "secondary",
8277
+ label: "Secondary"
8278
+ }
8279
+ ]
8280
+ });
8281
+ //#endregion
8319
8282
  //#region ../theme-core/src/site-styles/footerLooks.ts
8320
8283
  function asFooterLookId(value) {
8321
8284
  return value;
@@ -18178,31 +18141,37 @@ const containerResponsiveThemeCss = `/*
18178
18141
  */
18179
18142
 
18180
18143
  /* Main container */
18181
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar {
18144
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-calendar {
18182
18145
  width: 100%;
18183
18146
  }
18184
18147
 
18185
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-container {
18148
+ :where(.theme-scope)
18149
+ :where([data-block='event-calendar'])
18150
+ .event-calendar-container {
18186
18151
  border: 1px solid var(--ec-border);
18187
18152
  border-radius: var(--rb-block-radius);
18188
18153
  overflow: hidden;
18189
18154
  }
18190
18155
 
18191
18156
  /* Calendar navigation */
18192
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-header {
18157
+ :where(.theme-scope)
18158
+ :where([data-block='event-calendar'])
18159
+ .event-calendar-header {
18193
18160
  display: flex;
18194
18161
  align-items: center;
18195
18162
  justify-content: space-between;
18196
18163
  margin-bottom: 1rem;
18197
18164
  }
18198
18165
 
18199
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-nav {
18166
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-calendar-nav {
18200
18167
  display: flex;
18201
18168
  align-items: center;
18202
18169
  gap: 0.5rem;
18203
18170
  }
18204
18171
 
18205
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-nav-btn {
18172
+ :where(.theme-scope)
18173
+ :where([data-block='event-calendar'])
18174
+ .event-calendar-nav-btn {
18206
18175
  display: flex;
18207
18176
  align-items: center;
18208
18177
  justify-content: center;
@@ -18217,11 +18186,15 @@ const containerResponsiveThemeCss = `/*
18217
18186
  transition: background-color var(--rb-block-transition) ease;
18218
18187
  }
18219
18188
 
18220
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-nav-btn:hover {
18189
+ :where(.theme-scope)
18190
+ :where([data-block='event-calendar'])
18191
+ .event-calendar-nav-btn:hover {
18221
18192
  background-color: var(--ec-nav-hover-bg);
18222
18193
  }
18223
18194
 
18224
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-title {
18195
+ :where(.theme-scope)
18196
+ :where([data-block='event-calendar'])
18197
+ .event-calendar-title {
18225
18198
  font-size: 1.125rem;
18226
18199
  font-weight: 600;
18227
18200
  min-width: 200px;
@@ -18229,13 +18202,17 @@ const containerResponsiveThemeCss = `/*
18229
18202
  }
18230
18203
 
18231
18204
  /* Day headers */
18232
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-headers {
18205
+ :where(.theme-scope)
18206
+ :where([data-block='event-calendar'])
18207
+ .event-calendar-day-headers {
18233
18208
  display: grid;
18234
18209
  grid-template-columns: repeat(7, minmax(0, 1fr));
18235
18210
  background-color: var(--ec-header-bg);
18236
18211
  }
18237
18212
 
18238
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-header {
18213
+ :where(.theme-scope)
18214
+ :where([data-block='event-calendar'])
18215
+ .event-calendar-day-header {
18239
18216
  text-align: center;
18240
18217
  padding: 0.5rem;
18241
18218
  font-size: 0.875rem;
@@ -18245,33 +18222,43 @@ const containerResponsiveThemeCss = `/*
18245
18222
  }
18246
18223
 
18247
18224
  /* Calendar grid */
18248
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-grid {
18225
+ :where(.theme-scope)
18226
+ :where([data-block='event-calendar'])
18227
+ .event-calendar-grid {
18249
18228
  display: grid;
18250
18229
  grid-template-columns: repeat(7, minmax(0, 1fr));
18251
18230
  }
18252
18231
 
18253
18232
  /* Day cells */
18254
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day {
18233
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-calendar-day {
18255
18234
  min-height: 100px;
18256
18235
  border-bottom: 1px solid var(--ec-border-subtle);
18257
18236
  border-right: 1px solid var(--ec-border-subtle);
18258
18237
  padding: 0.25rem;
18259
18238
  }
18260
18239
 
18261
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day:nth-child(7n) {
18240
+ :where(.theme-scope)
18241
+ :where([data-block='event-calendar'])
18242
+ .event-calendar-day:nth-child(7n) {
18262
18243
  border-right: none;
18263
18244
  }
18264
18245
 
18265
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day--today {
18246
+ :where(.theme-scope)
18247
+ :where([data-block='event-calendar'])
18248
+ .event-calendar-day--today {
18266
18249
  background-color: var(--ec-today-bg);
18267
18250
  }
18268
18251
 
18269
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day--other-month {
18252
+ :where(.theme-scope)
18253
+ :where([data-block='event-calendar'])
18254
+ .event-calendar-day--other-month {
18270
18255
  opacity: var(--ec-other-month-opacity);
18271
18256
  }
18272
18257
 
18273
18258
  /* Day number */
18274
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-number {
18259
+ :where(.theme-scope)
18260
+ :where([data-block='event-calendar'])
18261
+ .event-calendar-day-number {
18275
18262
  font-size: 0.875rem;
18276
18263
  font-weight: 500;
18277
18264
  margin-bottom: 0.25rem;
@@ -18279,21 +18266,28 @@ const containerResponsiveThemeCss = `/*
18279
18266
  opacity: var(--ec-day-number-opacity);
18280
18267
  }
18281
18268
 
18282
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day--today .event-calendar-day-number {
18269
+ :where(.theme-scope)
18270
+ :where([data-block='event-calendar'])
18271
+ .event-calendar-day--today
18272
+ .event-calendar-day-number {
18283
18273
  font-weight: 700;
18284
18274
  opacity: 1;
18285
18275
  color: var(--ec-today-text);
18286
18276
  }
18287
18277
 
18288
18278
  /* Events list */
18289
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-events {
18279
+ :where(.theme-scope)
18280
+ :where([data-block='event-calendar'])
18281
+ .event-calendar-events {
18290
18282
  display: flex;
18291
18283
  flex-direction: column;
18292
18284
  gap: 0.25rem;
18293
18285
  }
18294
18286
 
18295
18287
  /* Event item - solid primary background */
18296
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event {
18288
+ :where(.theme-scope)
18289
+ :where([data-block='event-calendar'])
18290
+ .event-calendar-event {
18297
18291
  display: flex;
18298
18292
  align-items: center;
18299
18293
  gap: 0.375rem;
@@ -18314,24 +18308,32 @@ const containerResponsiveThemeCss = `/*
18314
18308
  transform var(--rb-block-transition) ease;
18315
18309
  }
18316
18310
 
18317
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event:hover {
18311
+ :where(.theme-scope)
18312
+ :where([data-block='event-calendar'])
18313
+ .event-calendar-event:hover {
18318
18314
  background-color: var(--ec-event-solid-hover-bg);
18319
18315
  transform: translateY(-1px);
18320
18316
  }
18321
18317
 
18322
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event:focus-visible {
18318
+ :where(.theme-scope)
18319
+ :where([data-block='event-calendar'])
18320
+ .event-calendar-event:focus-visible {
18323
18321
  outline: 2px solid var(--ec-event-solid-bg);
18324
18322
  outline-offset: 2px;
18325
18323
  }
18326
18324
 
18327
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event-time {
18325
+ :where(.theme-scope)
18326
+ :where([data-block='event-calendar'])
18327
+ .event-calendar-event-time {
18328
18328
  flex-shrink: 0;
18329
18329
  white-space: nowrap;
18330
18330
  font-weight: 600;
18331
18331
  opacity: 0.9;
18332
18332
  }
18333
18333
 
18334
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event-title {
18334
+ :where(.theme-scope)
18335
+ :where([data-block='event-calendar'])
18336
+ .event-calendar-event-title {
18335
18337
  min-width: 0;
18336
18338
  overflow: hidden;
18337
18339
  text-overflow: ellipsis;
@@ -18339,7 +18341,9 @@ const containerResponsiveThemeCss = `/*
18339
18341
  }
18340
18342
 
18341
18343
  /* More indicator - clickable button style */
18342
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-more {
18344
+ :where(.theme-scope)
18345
+ :where([data-block='event-calendar'])
18346
+ .event-calendar-more {
18343
18347
  font-size: 0.75rem;
18344
18348
  padding: 0.25rem 0.5rem;
18345
18349
  color: rgb(var(--tb-primary));
@@ -18351,16 +18355,22 @@ const containerResponsiveThemeCss = `/*
18351
18355
  transition: background-color var(--rb-block-transition) ease;
18352
18356
  }
18353
18357
 
18354
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-more:hover {
18358
+ :where(.theme-scope)
18359
+ :where([data-block='event-calendar'])
18360
+ .event-calendar-more:hover {
18355
18361
  background-color: rgba(var(--tb-primary), 0.1);
18356
18362
  }
18357
18363
 
18358
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-more:focus-visible {
18364
+ :where(.theme-scope)
18365
+ :where([data-block='event-calendar'])
18366
+ .event-calendar-more:focus-visible {
18359
18367
  outline: 2px solid rgb(var(--tb-primary));
18360
18368
  outline-offset: 2px;
18361
18369
  }
18362
18370
 
18363
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-empty {
18371
+ :where(.theme-scope)
18372
+ :where([data-block='event-calendar'])
18373
+ .event-calendar-empty {
18364
18374
  text-align: center;
18365
18375
  font-size: 0.875rem;
18366
18376
  opacity: var(--ec-empty-opacity);
@@ -18368,21 +18378,21 @@ const containerResponsiveThemeCss = `/*
18368
18378
  }
18369
18379
 
18370
18380
  /* Filters container */
18371
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filters {
18381
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-filters {
18372
18382
  display: flex;
18373
18383
  flex-wrap: wrap;
18374
18384
  gap: 1rem;
18375
18385
  margin-bottom: 1.5rem;
18376
18386
  }
18377
18387
 
18378
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filter {
18388
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-filter {
18379
18389
  display: flex;
18380
18390
  flex-direction: column;
18381
18391
  gap: 0.375rem;
18382
18392
  min-width: 180px;
18383
18393
  }
18384
18394
 
18385
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filter-label {
18395
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-filter-label {
18386
18396
  font-size: 0.75rem;
18387
18397
  font-weight: 500;
18388
18398
  text-transform: uppercase;
@@ -18391,19 +18401,23 @@ const containerResponsiveThemeCss = `/*
18391
18401
  }
18392
18402
 
18393
18403
  /* Event filter select inherits base styling from .form-select, only block-specific overrides here */
18394
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filter-select {
18404
+ :where(.theme-scope)
18405
+ :where([data-block='event-calendar'])
18406
+ .event-filter-select {
18395
18407
  /* Use theme input radius instead of block radius for consistency with other form inputs */
18396
18408
  border-radius: var(--rb-input-radius, var(--rb-block-radius));
18397
18409
  }
18398
18410
 
18399
18411
  /* Category filter buttons */
18400
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-buttons {
18412
+ :where(.theme-scope)
18413
+ :where([data-block='event-calendar'])
18414
+ .event-category-buttons {
18401
18415
  display: flex;
18402
18416
  flex-wrap: wrap;
18403
18417
  gap: 0.5rem;
18404
18418
  }
18405
18419
 
18406
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn {
18420
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-category-btn {
18407
18421
  padding: 0.5rem 1rem;
18408
18422
  font-size: 0.875rem;
18409
18423
  font-weight: 500;
@@ -18415,50 +18429,66 @@ const containerResponsiveThemeCss = `/*
18415
18429
  transition: all var(--rb-block-transition) ease;
18416
18430
  }
18417
18431
 
18418
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn:hover:not(:disabled) {
18432
+ :where(.theme-scope)
18433
+ :where([data-block='event-calendar'])
18434
+ .event-category-btn:hover:not(:disabled) {
18419
18435
  border-color: rgba(var(--tb-primary), 0.5);
18420
18436
  }
18421
18437
 
18422
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn:focus-visible {
18438
+ :where(.theme-scope)
18439
+ :where([data-block='event-calendar'])
18440
+ .event-category-btn:focus-visible {
18423
18441
  outline: 2px solid rgb(var(--tb-primary));
18424
18442
  outline-offset: 2px;
18425
18443
  }
18426
18444
 
18427
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn--active {
18445
+ :where(.theme-scope)
18446
+ :where([data-block='event-calendar'])
18447
+ .event-category-btn--active {
18428
18448
  background-color: rgb(var(--tb-primary));
18429
18449
  border-color: rgb(var(--tb-primary));
18430
18450
  color: var(--ec-event-solid-text);
18431
18451
  }
18432
18452
 
18433
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-category-btn:disabled {
18453
+ :where(.theme-scope)
18454
+ :where([data-block='event-calendar'])
18455
+ .event-category-btn:disabled {
18434
18456
  opacity: 0.5;
18435
18457
  cursor: not-allowed;
18436
18458
  }
18437
18459
 
18438
18460
  /* Allow category filter to be wider for button group */
18439
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-filter:has(.event-category-buttons) {
18461
+ :where(.theme-scope)
18462
+ :where([data-block='event-calendar'])
18463
+ .event-filter:has(.event-category-buttons) {
18440
18464
  min-width: auto;
18441
18465
  flex: 1 1 auto;
18442
18466
  }
18443
18467
 
18444
18468
  /* Combined mode container */
18445
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-combined {
18469
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-combined {
18446
18470
  width: 100%;
18447
18471
  }
18448
18472
 
18449
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-combined-content {
18473
+ :where(.theme-scope)
18474
+ :where([data-block='event-calendar'])
18475
+ .event-combined-content {
18450
18476
  display: flex;
18451
18477
  flex-direction: column;
18452
18478
  }
18453
18479
 
18454
18480
  /* Calendar view toggle (Month/Week) in Combined mode */
18455
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-view-toggle {
18481
+ :where(.theme-scope)
18482
+ :where([data-block='event-calendar'])
18483
+ .event-calendar-view-toggle {
18456
18484
  display: flex;
18457
18485
  gap: 0.25rem;
18458
18486
  margin-bottom: 1rem;
18459
18487
  }
18460
18488
 
18461
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-view-btn {
18489
+ :where(.theme-scope)
18490
+ :where([data-block='event-calendar'])
18491
+ .event-calendar-view-btn {
18462
18492
  padding: 0.5rem 1rem;
18463
18493
  font-size: 0.875rem;
18464
18494
  font-weight: 500;
@@ -18471,12 +18501,16 @@ const containerResponsiveThemeCss = `/*
18471
18501
  transition: all var(--rb-block-transition) ease;
18472
18502
  }
18473
18503
 
18474
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-view-btn:hover {
18504
+ :where(.theme-scope)
18505
+ :where([data-block='event-calendar'])
18506
+ .event-calendar-view-btn:hover {
18475
18507
  opacity: 1;
18476
18508
  border-color: rgba(var(--tb-primary), 0.5);
18477
18509
  }
18478
18510
 
18479
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-view-btn--active {
18511
+ :where(.theme-scope)
18512
+ :where([data-block='event-calendar'])
18513
+ .event-calendar-view-btn--active {
18480
18514
  opacity: 1;
18481
18515
  background-color: rgb(var(--tb-primary));
18482
18516
  border-color: rgb(var(--tb-primary));
@@ -18489,29 +18523,35 @@ const containerResponsiveThemeCss = `/*
18489
18523
  * ----------------------------------------------------------------------------- */
18490
18524
 
18491
18525
  /* Agenda week container */
18492
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-week {
18526
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-agenda-week {
18493
18527
  display: flex;
18494
18528
  flex-direction: column;
18495
18529
  gap: 0;
18496
18530
  }
18497
18531
 
18498
18532
  /* Individual day section */
18499
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day {
18533
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-agenda-day {
18500
18534
  border-bottom: 1px solid var(--ec-border-subtle);
18501
18535
  }
18502
18536
 
18503
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day:last-child {
18537
+ :where(.theme-scope)
18538
+ :where([data-block='event-calendar'])
18539
+ .event-agenda-day:last-child {
18504
18540
  border-bottom: none;
18505
18541
  }
18506
18542
 
18507
18543
  /* Day header */
18508
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-header {
18544
+ :where(.theme-scope)
18545
+ :where([data-block='event-calendar'])
18546
+ .event-agenda-day-header {
18509
18547
  padding: 0.75rem 0;
18510
18548
  background-color: var(--ec-header-bg);
18511
18549
  border-bottom: 1px solid var(--ec-border-subtle);
18512
18550
  }
18513
18551
 
18514
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-title {
18552
+ :where(.theme-scope)
18553
+ :where([data-block='event-calendar'])
18554
+ .event-agenda-day-title {
18515
18555
  font-size: 0.875rem;
18516
18556
  font-weight: 600;
18517
18557
  margin: 0;
@@ -18521,7 +18561,9 @@ const containerResponsiveThemeCss = `/*
18521
18561
  }
18522
18562
 
18523
18563
  /* Today badge */
18524
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-today-badge {
18564
+ :where(.theme-scope)
18565
+ :where([data-block='event-calendar'])
18566
+ .event-agenda-day-today-badge {
18525
18567
  display: inline-flex;
18526
18568
  align-items: center;
18527
18569
  padding: 0.125rem 0.5rem;
@@ -18535,24 +18577,33 @@ const containerResponsiveThemeCss = `/*
18535
18577
  }
18536
18578
 
18537
18579
  /* Today highlight for entire day section */
18538
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day--today .event-agenda-day-header {
18580
+ :where(.theme-scope)
18581
+ :where([data-block='event-calendar'])
18582
+ .event-agenda-day--today
18583
+ .event-agenda-day-header {
18539
18584
  background-color: var(--ec-today-bg);
18540
18585
  }
18541
18586
 
18542
18587
  /* Day content area */
18543
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-content {
18588
+ :where(.theme-scope)
18589
+ :where([data-block='event-calendar'])
18590
+ .event-agenda-day-content {
18544
18591
  padding: 0.75rem 0;
18545
18592
  }
18546
18593
 
18547
18594
  /* Events list within a day */
18548
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-events {
18595
+ :where(.theme-scope)
18596
+ :where([data-block='event-calendar'])
18597
+ .event-agenda-day-events {
18549
18598
  display: flex;
18550
18599
  flex-direction: column;
18551
18600
  gap: 0.5rem;
18552
18601
  }
18553
18602
 
18554
18603
  /* Empty day message */
18555
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-day-empty {
18604
+ :where(.theme-scope)
18605
+ :where([data-block='event-calendar'])
18606
+ .event-agenda-day-empty {
18556
18607
  font-size: 0.875rem;
18557
18608
  opacity: var(--ec-empty-opacity);
18558
18609
  margin: 0;
@@ -18564,7 +18615,7 @@ const containerResponsiveThemeCss = `/*
18564
18615
  * Rich event card for agenda view
18565
18616
  * ----------------------------------------------------------------------------- */
18566
18617
 
18567
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card {
18618
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-agenda-card {
18568
18619
  display: flex;
18569
18620
  align-items: flex-start;
18570
18621
  gap: 0.75rem;
@@ -18577,13 +18628,17 @@ const containerResponsiveThemeCss = `/*
18577
18628
  transition: all var(--rb-block-transition) ease;
18578
18629
  }
18579
18630
 
18580
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card:hover {
18631
+ :where(.theme-scope)
18632
+ :where([data-block='event-calendar'])
18633
+ .event-agenda-card:hover {
18581
18634
  border-color: rgba(var(--tb-primary), 0.5);
18582
18635
  background-color: var(--ec-event-bg);
18583
18636
  }
18584
18637
 
18585
18638
  /* Category color indicator */
18586
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-indicator {
18639
+ :where(.theme-scope)
18640
+ :where([data-block='event-calendar'])
18641
+ .event-agenda-card-indicator {
18587
18642
  flex-shrink: 0;
18588
18643
  width: 4px;
18589
18644
  align-self: stretch;
@@ -18592,7 +18647,9 @@ const containerResponsiveThemeCss = `/*
18592
18647
  }
18593
18648
 
18594
18649
  /* Card content wrapper */
18595
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-content {
18650
+ :where(.theme-scope)
18651
+ :where([data-block='event-calendar'])
18652
+ .event-agenda-card-content {
18596
18653
  flex: 1;
18597
18654
  min-width: 0;
18598
18655
  display: flex;
@@ -18601,28 +18658,36 @@ const containerResponsiveThemeCss = `/*
18601
18658
  }
18602
18659
 
18603
18660
  /* Header row: time + title */
18604
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-header {
18661
+ :where(.theme-scope)
18662
+ :where([data-block='event-calendar'])
18663
+ .event-agenda-card-header {
18605
18664
  display: flex;
18606
18665
  align-items: baseline;
18607
18666
  gap: 0.5rem;
18608
18667
  flex-wrap: wrap;
18609
18668
  }
18610
18669
 
18611
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-time {
18670
+ :where(.theme-scope)
18671
+ :where([data-block='event-calendar'])
18672
+ .event-agenda-card-time {
18612
18673
  font-size: 0.75rem;
18613
18674
  font-weight: 600;
18614
18675
  opacity: var(--ec-time-opacity);
18615
18676
  white-space: nowrap;
18616
18677
  }
18617
18678
 
18618
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-title {
18679
+ :where(.theme-scope)
18680
+ :where([data-block='event-calendar'])
18681
+ .event-agenda-card-title {
18619
18682
  font-size: 0.875rem;
18620
18683
  font-weight: 500;
18621
18684
  line-height: 1.3;
18622
18685
  }
18623
18686
 
18624
18687
  /* Details row: venue, price, capacity */
18625
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-details {
18688
+ :where(.theme-scope)
18689
+ :where([data-block='event-calendar'])
18690
+ .event-agenda-card-details {
18626
18691
  display: flex;
18627
18692
  align-items: center;
18628
18693
  gap: 0.75rem;
@@ -18631,26 +18696,36 @@ const containerResponsiveThemeCss = `/*
18631
18696
  opacity: 0.7;
18632
18697
  }
18633
18698
 
18634
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-venue {
18699
+ :where(.theme-scope)
18700
+ :where([data-block='event-calendar'])
18701
+ .event-agenda-card-venue {
18635
18702
  display: inline-flex;
18636
18703
  align-items: center;
18637
18704
  gap: 0.25rem;
18638
18705
  }
18639
18706
 
18640
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-icon {
18707
+ :where(.theme-scope)
18708
+ :where([data-block='event-calendar'])
18709
+ .event-agenda-card-icon {
18641
18710
  flex-shrink: 0;
18642
18711
  opacity: 0.7;
18643
18712
  }
18644
18713
 
18645
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-price {
18714
+ :where(.theme-scope)
18715
+ :where([data-block='event-calendar'])
18716
+ .event-agenda-card-price {
18646
18717
  font-weight: 500;
18647
18718
  }
18648
18719
 
18649
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-capacity {
18720
+ :where(.theme-scope)
18721
+ :where([data-block='event-calendar'])
18722
+ .event-agenda-card-capacity {
18650
18723
  font-weight: 500;
18651
18724
  }
18652
18725
 
18653
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-agenda-card-capacity--full {
18726
+ :where(.theme-scope)
18727
+ :where([data-block='event-calendar'])
18728
+ .event-agenda-card-capacity--full {
18654
18729
  color: rgb(var(--tb-error, 239 68 68));
18655
18730
  opacity: 1;
18656
18731
  }
@@ -18660,20 +18735,24 @@ const containerResponsiveThemeCss = `/*
18660
18735
  * Time-grid layout for recurring class schedules
18661
18736
  * ----------------------------------------------------------------------------- */
18662
18737
 
18663
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable {
18738
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-timetable {
18664
18739
  display: flex;
18665
18740
  flex-direction: column;
18666
18741
  gap: 0.75rem;
18667
18742
  }
18668
18743
 
18669
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-selector {
18744
+ :where(.theme-scope)
18745
+ :where([data-block='event-calendar'])
18746
+ .event-timetable-day-selector {
18670
18747
  display: none;
18671
18748
  gap: 0.375rem;
18672
18749
  overflow-x: auto;
18673
18750
  padding-bottom: 0.125rem;
18674
18751
  }
18675
18752
 
18676
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-tab {
18753
+ :where(.theme-scope)
18754
+ :where([data-block='event-calendar'])
18755
+ .event-timetable-day-tab {
18677
18756
  flex: 0 0 auto;
18678
18757
  padding: 0.5rem 0.75rem;
18679
18758
  border: 1px solid var(--ec-border);
@@ -18688,35 +18767,49 @@ const containerResponsiveThemeCss = `/*
18688
18767
  border-color var(--rb-block-transition) ease;
18689
18768
  }
18690
18769
 
18691
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-tab--active {
18770
+ :where(.theme-scope)
18771
+ :where([data-block='event-calendar'])
18772
+ .event-timetable-day-tab--active {
18692
18773
  background-color: rgb(var(--tb-primary));
18693
18774
  border-color: rgb(var(--tb-primary));
18694
18775
  color: rgb(var(--tb-primaryText, 255 255 255));
18695
18776
  }
18696
18777
 
18697
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-container {
18778
+ :where(.theme-scope)
18779
+ :where([data-block='event-calendar'])
18780
+ .event-timetable-container {
18698
18781
  border: 1px solid var(--ec-border);
18699
18782
  border-radius: var(--rb-block-radius);
18700
18783
  overflow-x: auto;
18701
18784
  overflow-y: hidden;
18702
18785
  }
18703
18786
 
18704
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-grid {
18787
+ :where(.theme-scope)
18788
+ :where([data-block='event-calendar'])
18789
+ .event-timetable-grid {
18705
18790
  display: grid;
18706
18791
  grid-template-columns: 4.5rem repeat(7, minmax(8rem, 1fr));
18707
18792
  min-width: 62rem;
18708
18793
  }
18709
18794
 
18710
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-rail,
18711
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day {
18795
+ :where(.theme-scope)
18796
+ :where([data-block='event-calendar'])
18797
+ .event-timetable-time-rail,
18798
+ :where(.theme-scope)
18799
+ :where([data-block='event-calendar'])
18800
+ .event-timetable-day {
18712
18801
  border-right: 1px solid var(--ec-border-subtle);
18713
18802
  }
18714
18803
 
18715
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day:last-child {
18804
+ :where(.theme-scope)
18805
+ :where([data-block='event-calendar'])
18806
+ .event-timetable-day:last-child {
18716
18807
  border-right: none;
18717
18808
  }
18718
18809
 
18719
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-heading {
18810
+ :where(.theme-scope)
18811
+ :where([data-block='event-calendar'])
18812
+ .event-timetable-day-heading {
18720
18813
  min-height: 3.25rem;
18721
18814
  margin: 0;
18722
18815
  padding: 0.75rem 0.5rem;
@@ -18731,12 +18824,17 @@ const containerResponsiveThemeCss = `/*
18731
18824
  font-weight: 600;
18732
18825
  }
18733
18826
 
18734
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day--today .event-timetable-day-heading {
18827
+ :where(.theme-scope)
18828
+ :where([data-block='event-calendar'])
18829
+ .event-timetable-day--today
18830
+ .event-timetable-day-heading {
18735
18831
  background-color: var(--ec-today-bg);
18736
18832
  color: var(--ec-today-text);
18737
18833
  }
18738
18834
 
18739
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-today-badge {
18835
+ :where(.theme-scope)
18836
+ :where([data-block='event-calendar'])
18837
+ .event-timetable-today-badge {
18740
18838
  padding: 0.125rem 0.375rem;
18741
18839
  border-radius: var(--rb-button-radius);
18742
18840
  background-color: rgb(var(--tb-primary));
@@ -18746,17 +18844,29 @@ const containerResponsiveThemeCss = `/*
18746
18844
  text-transform: uppercase;
18747
18845
  }
18748
18846
 
18749
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-body,
18750
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-body {
18847
+ :where(.theme-scope)
18848
+ :where([data-block='event-calendar'])
18849
+ .event-timetable-time-body,
18850
+ :where(.theme-scope)
18851
+ :where([data-block='event-calendar'])
18852
+ .event-timetable-day-body {
18751
18853
  position: relative;
18752
- height: clamp(34rem, calc(var(--event-timetable-range-minutes, 900) * 0.055rem), 56rem);
18854
+ height: clamp(
18855
+ 34rem,
18856
+ calc(var(--event-timetable-range-minutes, 900) * 0.055rem),
18857
+ 56rem
18858
+ );
18753
18859
  }
18754
18860
 
18755
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-body {
18861
+ :where(.theme-scope)
18862
+ :where([data-block='event-calendar'])
18863
+ .event-timetable-time-body {
18756
18864
  background-color: var(--ec-header-bg);
18757
18865
  }
18758
18866
 
18759
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-label {
18867
+ :where(.theme-scope)
18868
+ :where([data-block='event-calendar'])
18869
+ .event-timetable-time-label {
18760
18870
  position: absolute;
18761
18871
  left: 0.625rem;
18762
18872
  transform: translateY(-50%);
@@ -18765,14 +18875,18 @@ const containerResponsiveThemeCss = `/*
18765
18875
  white-space: nowrap;
18766
18876
  }
18767
18877
 
18768
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-hour-line {
18878
+ :where(.theme-scope)
18879
+ :where([data-block='event-calendar'])
18880
+ .event-timetable-hour-line {
18769
18881
  position: absolute;
18770
18882
  left: 0;
18771
18883
  right: 0;
18772
18884
  border-top: 1px solid var(--ec-border-subtle);
18773
18885
  }
18774
18886
 
18775
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event {
18887
+ :where(.theme-scope)
18888
+ :where([data-block='event-calendar'])
18889
+ .event-timetable-event {
18776
18890
  position: absolute;
18777
18891
  min-height: 2.75rem;
18778
18892
  padding: 0.375rem 0.5rem;
@@ -18792,21 +18906,35 @@ const containerResponsiveThemeCss = `/*
18792
18906
  transform var(--rb-block-transition) ease;
18793
18907
  }
18794
18908
 
18795
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event:hover {
18909
+ :where(.theme-scope)
18910
+ :where([data-block='event-calendar'])
18911
+ .event-timetable-event:hover {
18796
18912
  box-shadow: 0 4px 12px rgba(var(--tb-text), 0.12);
18797
18913
  transform: translateY(-1px);
18798
18914
  }
18799
18915
 
18800
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event:focus-visible {
18916
+ :where(.theme-scope)
18917
+ :where([data-block='event-calendar'])
18918
+ .event-timetable-event:focus-visible {
18801
18919
  outline: 2px solid rgb(var(--tb-primary));
18802
18920
  outline-offset: 2px;
18803
18921
  }
18804
18922
 
18805
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-time,
18806
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-title,
18807
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-teacher,
18808
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-meta,
18809
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-capacity {
18923
+ :where(.theme-scope)
18924
+ :where([data-block='event-calendar'])
18925
+ .event-timetable-event-time,
18926
+ :where(.theme-scope)
18927
+ :where([data-block='event-calendar'])
18928
+ .event-timetable-event-title,
18929
+ :where(.theme-scope)
18930
+ :where([data-block='event-calendar'])
18931
+ .event-timetable-event-teacher,
18932
+ :where(.theme-scope)
18933
+ :where([data-block='event-calendar'])
18934
+ .event-timetable-event-meta,
18935
+ :where(.theme-scope)
18936
+ :where([data-block='event-calendar'])
18937
+ .event-timetable-event-capacity {
18810
18938
  display: block;
18811
18939
  min-width: 0;
18812
18940
  overflow: hidden;
@@ -18814,36 +18942,50 @@ const containerResponsiveThemeCss = `/*
18814
18942
  white-space: nowrap;
18815
18943
  }
18816
18944
 
18817
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-time {
18945
+ :where(.theme-scope)
18946
+ :where([data-block='event-calendar'])
18947
+ .event-timetable-event-time {
18818
18948
  font-size: 0.6875rem;
18819
18949
  font-weight: 700;
18820
18950
  opacity: var(--ec-time-opacity);
18821
18951
  }
18822
18952
 
18823
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-title {
18953
+ :where(.theme-scope)
18954
+ :where([data-block='event-calendar'])
18955
+ .event-timetable-event-title {
18824
18956
  font-size: 0.8125rem;
18825
18957
  font-weight: 700;
18826
18958
  line-height: 1.25;
18827
18959
  }
18828
18960
 
18829
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-teacher,
18830
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-meta {
18961
+ :where(.theme-scope)
18962
+ :where([data-block='event-calendar'])
18963
+ .event-timetable-event-teacher,
18964
+ :where(.theme-scope)
18965
+ :where([data-block='event-calendar'])
18966
+ .event-timetable-event-meta {
18831
18967
  font-size: 0.6875rem;
18832
18968
  opacity: 0.72;
18833
18969
  }
18834
18970
 
18835
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-capacity {
18971
+ :where(.theme-scope)
18972
+ :where([data-block='event-calendar'])
18973
+ .event-timetable-event-capacity {
18836
18974
  font-size: 0.6875rem;
18837
18975
  font-weight: 600;
18838
18976
  opacity: 0.85;
18839
18977
  }
18840
18978
 
18841
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-event-capacity--full {
18979
+ :where(.theme-scope)
18980
+ :where([data-block='event-calendar'])
18981
+ .event-timetable-event-capacity--full {
18842
18982
  color: rgb(var(--tb-danger, 220 38 38));
18843
18983
  opacity: 1;
18844
18984
  }
18845
18985
 
18846
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-empty {
18986
+ :where(.theme-scope)
18987
+ :where([data-block='event-calendar'])
18988
+ .event-timetable-day-empty {
18847
18989
  margin: 0;
18848
18990
  padding: 1rem 0.5rem;
18849
18991
  text-align: center;
@@ -18851,7 +18993,9 @@ const containerResponsiveThemeCss = `/*
18851
18993
  opacity: var(--ec-empty-opacity);
18852
18994
  }
18853
18995
 
18854
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-empty {
18996
+ :where(.theme-scope)
18997
+ :where([data-block='event-calendar'])
18998
+ .event-timetable-empty {
18855
18999
  margin: 0.25rem 0 0;
18856
19000
  text-align: center;
18857
19001
  font-size: 0.875rem;
@@ -18860,32 +19004,46 @@ const containerResponsiveThemeCss = `/*
18860
19004
 
18861
19005
  @container rb-site (max-width: 767px) {
18862
19006
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
18863
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-selector {
19007
+ :where(.theme-scope)
19008
+ :where([data-block='event-calendar'])
19009
+ .event-timetable-day-selector {
18864
19010
  display: flex;
18865
19011
  }
18866
19012
 
18867
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-container {
19013
+ :where(.theme-scope)
19014
+ :where([data-block='event-calendar'])
19015
+ .event-timetable-container {
18868
19016
  overflow: hidden;
18869
19017
  }
18870
19018
 
18871
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-grid {
19019
+ :where(.theme-scope)
19020
+ :where([data-block='event-calendar'])
19021
+ .event-timetable-grid {
18872
19022
  grid-template-columns: 4rem minmax(0, 1fr);
18873
19023
  min-width: 0;
18874
19024
  }
18875
19025
 
18876
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day[data-selected="false"] {
19026
+ :where(.theme-scope)
19027
+ :where([data-block='event-calendar'])
19028
+ .event-timetable-day[data-selected='false'] {
18877
19029
  display: none;
18878
19030
  }
18879
19031
 
18880
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day {
19032
+ :where(.theme-scope)
19033
+ :where([data-block='event-calendar'])
19034
+ .event-timetable-day {
18881
19035
  border-right: none;
18882
19036
  }
18883
19037
 
18884
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-time-rail {
19038
+ :where(.theme-scope)
19039
+ :where([data-block='event-calendar'])
19040
+ .event-timetable-time-rail {
18885
19041
  border-right: 1px solid var(--ec-border-subtle);
18886
19042
  }
18887
19043
 
18888
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-timetable-day-heading {
19044
+ :where(.theme-scope)
19045
+ :where([data-block='event-calendar'])
19046
+ .event-timetable-day-heading {
18889
19047
  justify-content: flex-start;
18890
19048
  padding-inline: 0.75rem;
18891
19049
  }
@@ -18898,7 +19056,7 @@ const containerResponsiveThemeCss = `/*
18898
19056
  * three-state availability (available / filling / waitlist), and a footer CTA.
18899
19057
  * ----------------------------------------------------------------------------- */
18900
19058
 
18901
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board {
19059
+ :where(.theme-scope) :where([data-block='event-calendar']) .event-week-board {
18902
19060
  /* Status accent tokens — map the three availability states onto theme colours.
18903
19061
  * available -> secondary, filling -> accent, waitlist -> muted text. */
18904
19062
  --ec-status-available: rgb(var(--tb-secondary));
@@ -18915,17 +19073,20 @@ const containerResponsiveThemeCss = `/*
18915
19073
 
18916
19074
  /* Opt-in raised look: a soft drop shadow so the board lifts off the page.
18917
19075
  * Generic default (no [data-elevated]) stays flat. */
18918
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board[data-elevated] {
19076
+ :where(.theme-scope)
19077
+ :where([data-block='event-calendar'])
19078
+ .event-week-board[data-elevated] {
18919
19079
  box-shadow: 0 14px 34px -24px rgba(var(--tb-text), 0.35);
18920
19080
  }
18921
19081
 
18922
- /* Top bar: title + legend */
18923
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-top {
18924
- display: flex;
19082
+ /* Top bar: authored title + week navigation + legend */
19083
+ :where(.theme-scope)
19084
+ :where([data-block='event-calendar'])
19085
+ .event-week-board-top {
19086
+ display: grid;
19087
+ grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);
18925
19088
  align-items: center;
18926
- justify-content: space-between;
18927
19089
  gap: 1rem;
18928
- flex-wrap: wrap;
18929
19090
  padding: 1.1rem 1.5rem;
18930
19091
  /* surfaceAlt gives the header/footer a legible tint against the white day-grid
18931
19092
  * body — the faint \`--ec-header-bg\` (5% text) is invisible on light palettes. */
@@ -18933,7 +19094,10 @@ const containerResponsiveThemeCss = `/*
18933
19094
  border-bottom: 1px solid var(--ec-border-subtle);
18934
19095
  }
18935
19096
 
18936
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-title {
19097
+ :where(.theme-scope)
19098
+ :where([data-block='event-calendar'])
19099
+ .event-week-board-title {
19100
+ grid-column: 1;
18937
19101
  font-size: 0.8125rem;
18938
19102
  font-weight: 600;
18939
19103
  letter-spacing: 0.12em;
@@ -18941,7 +19105,67 @@ const containerResponsiveThemeCss = `/*
18941
19105
  color: rgb(var(--tb-primary));
18942
19106
  }
18943
19107
 
18944
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend {
19108
+ :where(.theme-scope)
19109
+ :where([data-block='event-calendar'])
19110
+ .event-week-board-navigation {
19111
+ grid-column: 2;
19112
+ display: flex;
19113
+ align-items: center;
19114
+ justify-content: center;
19115
+ gap: 0.65rem;
19116
+ }
19117
+
19118
+ :where(.theme-scope)
19119
+ :where([data-block='event-calendar'])
19120
+ .event-week-board-nav-button {
19121
+ display: inline-flex;
19122
+ align-items: center;
19123
+ justify-content: center;
19124
+ width: 2.25rem;
19125
+ height: 2.25rem;
19126
+ padding: 0;
19127
+ border: 1px solid var(--ec-border);
19128
+ border-radius: 999px;
19129
+ background: transparent;
19130
+ color: inherit;
19131
+ cursor: pointer;
19132
+ }
19133
+
19134
+ :where(.theme-scope)
19135
+ :where([data-block='event-calendar'])
19136
+ .event-week-board-nav-button:hover {
19137
+ background-color: var(--ec-hover-bg);
19138
+ }
19139
+
19140
+ :where(.theme-scope)
19141
+ :where([data-block='event-calendar'])
19142
+ .event-week-board-nav-button:focus-visible {
19143
+ outline: 2px solid rgb(var(--tb-primary));
19144
+ outline-offset: 2px;
19145
+ }
19146
+
19147
+ :where(.theme-scope)
19148
+ :where([data-block='event-calendar'])
19149
+ .event-week-board-range {
19150
+ min-width: 12rem;
19151
+ margin: 0;
19152
+ text-align: center;
19153
+ font-size: 0.875rem;
19154
+ font-weight: 600;
19155
+ }
19156
+
19157
+ :where(.theme-scope)
19158
+ :where([data-block='event-calendar'])
19159
+ .event-week-board-loading {
19160
+ font-weight: 400;
19161
+ opacity: 0.65;
19162
+ }
19163
+
19164
+ :where(.theme-scope)
19165
+ :where([data-block='event-calendar'])
19166
+ .event-week-board-legend {
19167
+ grid-column: 3;
19168
+ justify-self: end;
18945
19169
  display: flex;
18946
19170
  align-items: center;
18947
19171
  gap: 1.1rem;
@@ -18951,38 +19175,72 @@ const containerResponsiveThemeCss = `/*
18951
19175
  opacity: 0.75;
18952
19176
  }
18953
19177
 
18954
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-item {
19178
+ :where(.theme-scope)
19179
+ :where([data-block='event-calendar'])
19180
+ .event-week-board-error {
19181
+ display: flex;
19182
+ align-items: center;
19183
+ justify-content: center;
19184
+ gap: 0.75rem;
19185
+ padding: 0.75rem 1.5rem;
19186
+ border-bottom: 1px solid var(--ec-border-subtle);
19187
+ color: rgb(var(--tb-error, var(--tb-text)));
19188
+ }
19189
+
19190
+ :where(.theme-scope)
19191
+ :where([data-block='event-calendar'])
19192
+ .event-week-board-error
19193
+ p {
19194
+ margin: 0;
19195
+ font-size: 0.8125rem;
19196
+ }
19197
+
19198
+ :where(.theme-scope)
19199
+ :where([data-block='event-calendar'])
19200
+ .event-week-board-legend-item {
18955
19201
  display: inline-flex;
18956
19202
  align-items: center;
18957
19203
  gap: 0.4rem;
18958
19204
  }
18959
19205
 
18960
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-dot {
19206
+ :where(.theme-scope)
19207
+ :where([data-block='event-calendar'])
19208
+ .event-week-board-legend-dot {
18961
19209
  width: 0.55rem;
18962
19210
  height: 0.55rem;
18963
19211
  border-radius: 50%;
18964
19212
  display: inline-block;
18965
19213
  }
18966
19214
 
18967
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-dot[data-status="available"] {
19215
+ :where(.theme-scope)
19216
+ :where([data-block='event-calendar'])
19217
+ .event-week-board-legend-dot[data-status='available'] {
18968
19218
  background-color: var(--ec-status-available);
18969
19219
  }
18970
19220
 
18971
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-dot[data-status="filling"] {
19221
+ :where(.theme-scope)
19222
+ :where([data-block='event-calendar'])
19223
+ .event-week-board-legend-dot[data-status='filling'] {
18972
19224
  background-color: var(--ec-status-filling);
18973
19225
  }
18974
19226
 
18975
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend-dot[data-status="waitlist"] {
19227
+ :where(.theme-scope)
19228
+ :where([data-block='event-calendar'])
19229
+ .event-week-board-legend-dot[data-status='waitlist'] {
18976
19230
  background-color: var(--ec-status-waitlist);
18977
19231
  }
18978
19232
 
18979
19233
  /* Day columns grid */
18980
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-grid {
19234
+ :where(.theme-scope)
19235
+ :where([data-block='event-calendar'])
19236
+ .event-week-board-grid {
18981
19237
  display: grid;
18982
19238
  grid-template-columns: repeat(var(--event-week-board-cols), minmax(0, 1fr));
18983
19239
  }
18984
19240
 
18985
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day {
19241
+ :where(.theme-scope)
19242
+ :where([data-block='event-calendar'])
19243
+ .event-week-board-day {
18986
19244
  display: flex;
18987
19245
  flex-direction: column;
18988
19246
  min-height: 15rem;
@@ -18992,11 +19250,15 @@ const containerResponsiveThemeCss = `/*
18992
19250
  border-right: var(--rb-border-width, 1px) solid rgb(var(--tb-border));
18993
19251
  }
18994
19252
 
18995
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day:last-child {
19253
+ :where(.theme-scope)
19254
+ :where([data-block='event-calendar'])
19255
+ .event-week-board-day:last-child {
18996
19256
  border-right: none;
18997
19257
  }
18998
19258
 
18999
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-head {
19259
+ :where(.theme-scope)
19260
+ :where([data-block='event-calendar'])
19261
+ .event-week-board-day-head {
19000
19262
  display: flex;
19001
19263
  align-items: baseline;
19002
19264
  gap: 0.4rem;
@@ -19005,11 +19267,16 @@ const containerResponsiveThemeCss = `/*
19005
19267
  border-bottom: var(--rb-border-width, 1px) solid rgb(var(--tb-border));
19006
19268
  }
19007
19269
 
19008
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day--today .event-week-board-day-head {
19270
+ :where(.theme-scope)
19271
+ :where([data-block='event-calendar'])
19272
+ .event-week-board-day--today
19273
+ .event-week-board-day-head {
19009
19274
  background-color: var(--ec-today-bg);
19010
19275
  }
19011
19276
 
19012
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-abbr {
19277
+ :where(.theme-scope)
19278
+ :where([data-block='event-calendar'])
19279
+ .event-week-board-day-abbr {
19013
19280
  font-size: 0.6875rem;
19014
19281
  font-weight: 600;
19015
19282
  letter-spacing: 0.1em;
@@ -19017,18 +19284,25 @@ const containerResponsiveThemeCss = `/*
19017
19284
  opacity: 0.65;
19018
19285
  }
19019
19286
 
19020
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day--today .event-week-board-day-abbr {
19287
+ :where(.theme-scope)
19288
+ :where([data-block='event-calendar'])
19289
+ .event-week-board-day--today
19290
+ .event-week-board-day-abbr {
19021
19291
  opacity: 1;
19022
19292
  color: var(--ec-today-text);
19023
19293
  }
19024
19294
 
19025
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-num {
19295
+ :where(.theme-scope)
19296
+ :where([data-block='event-calendar'])
19297
+ .event-week-board-day-num {
19026
19298
  font-size: 0.8125rem;
19027
19299
  font-weight: 600;
19028
19300
  opacity: 0.5;
19029
19301
  }
19030
19302
 
19031
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-body {
19303
+ :where(.theme-scope)
19304
+ :where([data-block='event-calendar'])
19305
+ .event-week-board-day-body {
19032
19306
  display: flex;
19033
19307
  flex-direction: column;
19034
19308
  gap: 0.65rem;
@@ -19037,7 +19311,9 @@ const containerResponsiveThemeCss = `/*
19037
19311
  }
19038
19312
 
19039
19313
  /* Class card */
19040
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card {
19314
+ :where(.theme-scope)
19315
+ :where([data-block='event-calendar'])
19316
+ .event-week-board-card {
19041
19317
  display: flex;
19042
19318
  flex-direction: column;
19043
19319
  gap: 0.45rem;
@@ -19057,40 +19333,54 @@ const containerResponsiveThemeCss = `/*
19057
19333
  border-color var(--rb-block-transition) ease;
19058
19334
  }
19059
19335
 
19060
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card[data-status="filling"] {
19336
+ :where(.theme-scope)
19337
+ :where([data-block='event-calendar'])
19338
+ .event-week-board-card[data-status='filling'] {
19061
19339
  border-left-color: var(--ec-status-filling);
19062
19340
  }
19063
19341
 
19064
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card[data-status="waitlist"] {
19342
+ :where(.theme-scope)
19343
+ :where([data-block='event-calendar'])
19344
+ .event-week-board-card[data-status='waitlist'] {
19065
19345
  border-left-color: var(--ec-status-waitlist);
19066
19346
  }
19067
19347
 
19068
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card:hover {
19348
+ :where(.theme-scope)
19349
+ :where([data-block='event-calendar'])
19350
+ .event-week-board-card:hover {
19069
19351
  transform: translateY(-2px);
19070
19352
  box-shadow: 0 6px 16px -8px rgba(var(--tb-text), 0.28);
19071
19353
  border-color: rgba(var(--tb-primary), 0.4);
19072
19354
  }
19073
19355
 
19074
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card:focus-visible {
19356
+ :where(.theme-scope)
19357
+ :where([data-block='event-calendar'])
19358
+ .event-week-board-card:focus-visible {
19075
19359
  outline: 2px solid rgb(var(--tb-primary));
19076
19360
  outline-offset: 2px;
19077
19361
  }
19078
19362
 
19079
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-title {
19363
+ :where(.theme-scope)
19364
+ :where([data-block='event-calendar'])
19365
+ .event-week-board-card-title {
19080
19366
  font-family: var(--font-heading, inherit);
19081
19367
  font-size: 0.9375rem;
19082
19368
  font-weight: 600;
19083
19369
  line-height: 1.2;
19084
19370
  }
19085
19371
 
19086
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-time {
19372
+ :where(.theme-scope)
19373
+ :where([data-block='event-calendar'])
19374
+ .event-week-board-card-time {
19087
19375
  font-size: 0.75rem;
19088
19376
  letter-spacing: 0.01em;
19089
19377
  opacity: 0.7;
19090
19378
  }
19091
19379
 
19092
19380
  /* Capacity pill */
19093
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-pill {
19381
+ :where(.theme-scope)
19382
+ :where([data-block='event-calendar'])
19383
+ .event-week-board-card-pill {
19094
19384
  align-self: flex-start;
19095
19385
  display: inline-flex;
19096
19386
  align-items: center;
@@ -19108,20 +19398,26 @@ const containerResponsiveThemeCss = `/*
19108
19398
  border-color: var(--ec-border);
19109
19399
  }
19110
19400
 
19111
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-pill[data-status="filling"] {
19401
+ :where(.theme-scope)
19402
+ :where([data-block='event-calendar'])
19403
+ .event-week-board-card-pill[data-status='filling'] {
19112
19404
  background-color: rgba(var(--tb-accent), 0.14);
19113
19405
  color: var(--ec-status-filling);
19114
19406
  border-color: rgba(var(--tb-accent), 0.32);
19115
19407
  }
19116
19408
 
19117
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card-pill[data-status="waitlist"] {
19409
+ :where(.theme-scope)
19410
+ :where([data-block='event-calendar'])
19411
+ .event-week-board-card-pill[data-status='waitlist'] {
19118
19412
  background-color: transparent;
19119
19413
  color: rgba(var(--tb-text), 0.6);
19120
19414
  border-color: var(--ec-border);
19121
19415
  }
19122
19416
 
19123
19417
  /* Footer */
19124
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-foot {
19418
+ :where(.theme-scope)
19419
+ :where([data-block='event-calendar'])
19420
+ .event-week-board-foot {
19125
19421
  display: flex;
19126
19422
  align-items: center;
19127
19423
  justify-content: space-between;
@@ -19133,7 +19429,9 @@ const containerResponsiveThemeCss = `/*
19133
19429
  border-top: 1px solid var(--ec-border-subtle);
19134
19430
  }
19135
19431
 
19136
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-foot-note {
19432
+ :where(.theme-scope)
19433
+ :where([data-block='event-calendar'])
19434
+ .event-week-board-foot-note {
19137
19435
  margin: 0;
19138
19436
  font-size: 0.875rem;
19139
19437
  opacity: 0.75;
@@ -19142,36 +19440,69 @@ const containerResponsiveThemeCss = `/*
19142
19440
  /* Responsive: collapse day columns to a stacked list on narrow viewports */
19143
19441
  @container rb-site (max-width: 1023px) {
19144
19442
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
19145
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-grid {
19443
+ :where(.theme-scope)
19444
+ :where([data-block='event-calendar'])
19445
+ .event-week-board-top {
19146
19446
  grid-template-columns: 1fr;
19147
19447
  }
19148
19448
 
19149
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day {
19449
+ :where(.theme-scope)
19450
+ :where([data-block='event-calendar'])
19451
+ .event-week-board-title,
19452
+ :where(.theme-scope)
19453
+ :where([data-block='event-calendar'])
19454
+ .event-week-board-navigation,
19455
+ :where(.theme-scope)
19456
+ :where([data-block='event-calendar'])
19457
+ .event-week-board-legend {
19458
+ grid-column: 1;
19459
+ justify-self: center;
19460
+ }
19461
+
19462
+ :where(.theme-scope)
19463
+ :where([data-block='event-calendar'])
19464
+ .event-week-board-grid {
19465
+ grid-template-columns: 1fr;
19466
+ }
19467
+
19468
+ :where(.theme-scope)
19469
+ :where([data-block='event-calendar'])
19470
+ .event-week-board-day {
19150
19471
  min-height: 0;
19151
19472
  border-right: none;
19152
19473
  border-bottom: var(--rb-border-width, 1px) solid rgb(var(--tb-border));
19153
19474
  }
19154
19475
 
19155
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day:last-child {
19476
+ :where(.theme-scope)
19477
+ :where([data-block='event-calendar'])
19478
+ .event-week-board-day:last-child {
19156
19479
  border-bottom: none;
19157
19480
  }
19158
19481
 
19159
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day--empty {
19482
+ :where(.theme-scope)
19483
+ :where([data-block='event-calendar'])
19484
+ .event-week-board-day--empty {
19160
19485
  display: none;
19161
19486
  }
19162
19487
 
19163
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-head {
19488
+ :where(.theme-scope)
19489
+ :where([data-block='event-calendar'])
19490
+ .event-week-board-day-head {
19164
19491
  border-bottom: none;
19165
19492
  padding-bottom: 0.25rem;
19166
19493
  }
19167
19494
 
19168
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-day-body {
19495
+ :where(.theme-scope)
19496
+ :where([data-block='event-calendar'])
19497
+ .event-week-board-day-body {
19169
19498
  flex-direction: row;
19170
19499
  flex-wrap: wrap;
19171
19500
  padding-top: 0.35rem;
19172
19501
  }
19173
19502
 
19174
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card {
19503
+ :where(.theme-scope)
19504
+ :where([data-block='event-calendar'])
19505
+ .event-week-board-card {
19175
19506
  flex: 1 1 14rem;
19176
19507
  }
19177
19508
  }
@@ -19179,11 +19510,37 @@ const containerResponsiveThemeCss = `/*
19179
19510
 
19180
19511
  @container rb-site (max-width: 639px) {
19181
19512
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
19182
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-legend {
19513
+ :where(.theme-scope)
19514
+ :where([data-block='event-calendar'])
19515
+ .event-week-board-navigation {
19516
+ display: grid;
19517
+ grid-template-columns: 2.25rem minmax(0, 1fr) 2.25rem;
19518
+ width: 100%;
19519
+ }
19520
+
19521
+ :where(.theme-scope)
19522
+ :where([data-block='event-calendar'])
19523
+ .event-week-board-navigation
19524
+ > :last-child {
19525
+ grid-column: 1 / -1;
19526
+ justify-self: center;
19527
+ }
19528
+
19529
+ :where(.theme-scope)
19530
+ :where([data-block='event-calendar'])
19531
+ .event-week-board-range {
19532
+ min-width: 0;
19533
+ }
19534
+
19535
+ :where(.theme-scope)
19536
+ :where([data-block='event-calendar'])
19537
+ .event-week-board-legend {
19183
19538
  display: none;
19184
19539
  }
19185
19540
 
19186
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-week-board-card {
19541
+ :where(.theme-scope)
19542
+ :where([data-block='event-calendar'])
19543
+ .event-week-board-card {
19187
19544
  flex: 1 1 100%;
19188
19545
  }
19189
19546
  }
@@ -19200,8 +19557,9 @@ const containerResponsiveThemeCss = `/*
19200
19557
  * Opt-in only: the band paints when the board root carries [data-banded];
19201
19558
  * the generic default is bandless.
19202
19559
  * ----------------------------------------------------------------------------- */
19203
- :where(.theme-scope) [data-slot="section"]:has(.event-calendar--week-board[data-banded])::before {
19204
- content: "";
19560
+ :where(.theme-scope)
19561
+ [data-slot='section']:has(.event-calendar--week-board[data-banded])::before {
19562
+ content: '';
19205
19563
  position: absolute;
19206
19564
  inset: 0;
19207
19565
  z-index: -9;
@@ -19255,7 +19613,7 @@ const containerResponsiveThemeCss = `/*
19255
19613
  * ----------------------------------------------------------------------------- */
19256
19614
 
19257
19615
  /* Modal overlay */
19258
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-overlay {
19616
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-overlay {
19259
19617
  position: fixed;
19260
19618
  inset: 0;
19261
19619
  background: var(--ec-modal-overlay-bg);
@@ -19269,12 +19627,16 @@ const containerResponsiveThemeCss = `/*
19269
19627
  }
19270
19628
 
19271
19629
  @keyframes ec-modal-fade-in {
19272
- from { opacity: 0; }
19273
- to { opacity: 1; }
19630
+ from {
19631
+ opacity: 0;
19632
+ }
19633
+ to {
19634
+ opacity: 1;
19635
+ }
19274
19636
  }
19275
19637
 
19276
19638
  /* Modal dialog */
19277
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal {
19639
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal {
19278
19640
  position: relative;
19279
19641
  background: var(--ec-modal-bg);
19280
19642
  border-radius: var(--rb-block-radius);
@@ -19298,17 +19660,17 @@ const containerResponsiveThemeCss = `/*
19298
19660
  }
19299
19661
 
19300
19662
  /* Event modal - constrained width for card */
19301
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal--event {
19663
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal--event {
19302
19664
  max-width: 26rem;
19303
19665
  }
19304
19666
 
19305
19667
  /* Day modal */
19306
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal--day {
19668
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal--day {
19307
19669
  max-width: 28rem;
19308
19670
  }
19309
19671
 
19310
19672
  /* Close button */
19311
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-close {
19673
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-close {
19312
19674
  position: absolute;
19313
19675
  top: 0.75rem;
19314
19676
  right: 0.75rem;
@@ -19329,31 +19691,35 @@ const containerResponsiveThemeCss = `/*
19329
19691
  z-index: 10;
19330
19692
  }
19331
19693
 
19332
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-close:hover {
19694
+ :where(.theme-scope)
19695
+ :where([data-block='event-calendar'])
19696
+ .ec-modal-close:hover {
19333
19697
  opacity: 1;
19334
19698
  background-color: rgba(var(--tb-text), 0.1);
19335
19699
  }
19336
19700
 
19337
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-close:focus-visible {
19701
+ :where(.theme-scope)
19702
+ :where([data-block='event-calendar'])
19703
+ .ec-modal-close:focus-visible {
19338
19704
  outline: 2px solid rgb(var(--tb-primary));
19339
19705
  outline-offset: 2px;
19340
19706
  }
19341
19707
 
19342
19708
  /* Modal header (for day modal) */
19343
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-header {
19709
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-header {
19344
19710
  padding: 1.5rem 1.5rem 1rem;
19345
19711
  padding-right: 3rem; /* Space for close button */
19346
19712
  border-bottom: 1px solid var(--ec-border);
19347
19713
  }
19348
19714
 
19349
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-title {
19715
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-title {
19350
19716
  font-size: 1.125rem;
19351
19717
  font-weight: 600;
19352
19718
  color: var(--ec-text);
19353
19719
  margin: 0;
19354
19720
  }
19355
19721
 
19356
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-subtitle {
19722
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-subtitle {
19357
19723
  font-size: 0.875rem;
19358
19724
  color: var(--ec-text);
19359
19725
  opacity: 0.7;
@@ -19361,17 +19727,20 @@ const containerResponsiveThemeCss = `/*
19361
19727
  }
19362
19728
 
19363
19729
  /* Modal content */
19364
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal-content {
19730
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal-content {
19365
19731
  padding: 1rem;
19366
19732
  }
19367
19733
 
19368
19734
  /* Event modal: tighter padding for card */
19369
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal--event .ec-modal-content {
19735
+ :where(.theme-scope)
19736
+ :where([data-block='event-calendar'])
19737
+ .ec-modal--event
19738
+ .ec-modal-content {
19370
19739
  padding: 0.5rem;
19371
19740
  }
19372
19741
 
19373
19742
  /* Day events list */
19374
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-day-events-list {
19743
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-day-events-list {
19375
19744
  display: flex;
19376
19745
  flex-direction: column;
19377
19746
  gap: 0.5rem;
@@ -19379,7 +19748,9 @@ const containerResponsiveThemeCss = `/*
19379
19748
  }
19380
19749
 
19381
19750
  /* AgendaEventCard in button mode inherits most styles, just needs cursor */
19382
- :where(.theme-scope) :where([data-block="event-calendar"]) button.event-agenda-card {
19751
+ :where(.theme-scope)
19752
+ :where([data-block='event-calendar'])
19753
+ button.event-agenda-card {
19383
19754
  cursor: pointer;
19384
19755
  text-align: left;
19385
19756
  font-family: inherit;
@@ -19388,7 +19759,9 @@ const containerResponsiveThemeCss = `/*
19388
19759
  /* Responsive adjustments */
19389
19760
  @container rb-site (max-width: 640px) {
19390
19761
  @scope ([data-rb-responsive-mode="container"]) to (:scope [data-rb-responsive-mode]) {
19391
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-container {
19762
+ :where(.theme-scope)
19763
+ :where([data-block='event-calendar'])
19764
+ .event-calendar-container {
19392
19765
  margin-left: -1.5rem;
19393
19766
  margin-right: -1.5rem;
19394
19767
  border-left: none;
@@ -19396,28 +19769,38 @@ const containerResponsiveThemeCss = `/*
19396
19769
  border-radius: 0;
19397
19770
  }
19398
19771
 
19399
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-header {
19772
+ :where(.theme-scope)
19773
+ :where([data-block='event-calendar'])
19774
+ .event-calendar-day-header {
19400
19775
  font-size: 0.75rem;
19401
19776
  padding: 0.375rem 0.125rem;
19402
19777
  }
19403
19778
 
19404
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day {
19779
+ :where(.theme-scope)
19780
+ :where([data-block='event-calendar'])
19781
+ .event-calendar-day {
19405
19782
  min-height: 88px;
19406
19783
  padding: 0.125rem;
19407
19784
  }
19408
19785
 
19409
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-title {
19786
+ :where(.theme-scope)
19787
+ :where([data-block='event-calendar'])
19788
+ .event-calendar-title {
19410
19789
  font-size: 0.9375rem;
19411
19790
  min-width: 0;
19412
19791
  }
19413
19792
 
19414
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-day-number {
19793
+ :where(.theme-scope)
19794
+ :where([data-block='event-calendar'])
19795
+ .event-calendar-day-number {
19415
19796
  font-size: 0.75rem;
19416
19797
  margin-bottom: 0.125rem;
19417
19798
  padding: 0 0.125rem;
19418
19799
  }
19419
19800
 
19420
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event {
19801
+ :where(.theme-scope)
19802
+ :where([data-block='event-calendar'])
19803
+ .event-calendar-event {
19421
19804
  justify-content: center;
19422
19805
  gap: 0.25rem;
19423
19806
  padding: 0.1875rem 0.25rem;
@@ -19425,25 +19808,34 @@ const containerResponsiveThemeCss = `/*
19425
19808
  border-radius: calc(var(--rb-block-radius) / 3);
19426
19809
  }
19427
19810
 
19428
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event-time {
19811
+ :where(.theme-scope)
19812
+ :where([data-block='event-calendar'])
19813
+ .event-calendar-event-time {
19429
19814
  text-align: center;
19430
19815
  font-size: 0.625rem;
19431
19816
  }
19432
19817
 
19433
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-event-title {
19818
+ :where(.theme-scope)
19819
+ :where([data-block='event-calendar'])
19820
+ .event-calendar-event-title {
19434
19821
  display: none;
19435
19822
  }
19436
19823
 
19437
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-more {
19824
+ :where(.theme-scope)
19825
+ :where([data-block='event-calendar'])
19826
+ .event-calendar-more {
19438
19827
  padding: 0.125rem 0.25rem;
19439
19828
  font-size: 0.6875rem;
19440
19829
  }
19441
19830
 
19442
- :where(.theme-scope) :where([data-block="event-calendar"]) .event-calendar-header > button {
19831
+ :where(.theme-scope)
19832
+ :where([data-block='event-calendar'])
19833
+ .event-calendar-header
19834
+ > button {
19443
19835
  margin-right: 0.25rem;
19444
19836
  }
19445
19837
 
19446
- :where(.theme-scope) :where([data-block="event-calendar"]) .ec-modal {
19838
+ :where(.theme-scope) :where([data-block='event-calendar']) .ec-modal {
19447
19839
  max-width: 100%;
19448
19840
  max-height: 85vh;
19449
19841
  margin: 0 0.5rem;