@riverbankcms/sdk 0.145.0 → 0.146.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 (159) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/dist/{PreviewEditorSidebar-O-V6Pl5a.mjs → PreviewEditorSidebar-kg2r2Fyi.mjs} +4 -4
  3. package/dist/{PreviewEditorUI-1UlX_9cw.mjs → PreviewEditorUI-sWMLp5dT.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-BxGwdOCV.mjs → PreviewQueryProvider-Cg51xq1w.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-DYbA_4iv.mjs → SdkPreviewModeRuntime-h2ti3Hch.mjs} +280 -182
  6. package/dist/{SiteChromeCustomizeContext-CNTKQ9nx.mjs → SiteChromeCustomizeContext-DEACFH9m.mjs} +1330 -734
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +924 -0
  8. package/dist/_dts/ai/src/contracts/siteStyleProposalSchemas.d.ts +84 -0
  9. package/dist/_dts/api/src/bookingConfig.d.ts +8 -1
  10. package/dist/_dts/api/src/bookingManagementEndpoints.d.ts +8 -14
  11. package/dist/_dts/api/src/bookingManagementEventEndpointTypes.d.ts +45 -1
  12. package/dist/_dts/api/src/clientErrorReporting.d.ts +50 -0
  13. package/dist/_dts/api/src/communications.d.ts +20 -4
  14. package/dist/_dts/api/src/contentRuntime.d.ts +3 -7
  15. package/dist/_dts/api/src/endpoints.d.ts +223 -88
  16. package/dist/_dts/api/src/event-visibility.d.ts +20 -0
  17. package/dist/_dts/api/src/eventManagementContracts.d.ts +56 -3
  18. package/dist/_dts/api/src/eventManagementEndpointDefinitions.d.ts +24 -0
  19. package/dist/_dts/api/src/eventPageWords.d.ts +19 -0
  20. package/dist/_dts/api/src/eventSeriesRegistrationEndpointDefinitions.d.ts +14 -0
  21. package/dist/_dts/api/src/index.d.ts +7 -1
  22. package/dist/_dts/api/src/indexCoreTypes.d.ts +1 -1
  23. package/dist/_dts/api/src/indexExtendedTypes.d.ts +1 -1
  24. package/dist/_dts/api/src/launchReadiness.d.ts +20 -2
  25. package/dist/_dts/api/src/launchRequirementPriority.d.ts +3 -0
  26. package/dist/_dts/api/src/newsletterCampaignCommandEndpoints.d.ts +13 -0
  27. package/dist/_dts/api/src/newsletterEndpointDefinitions.d.ts +42 -0
  28. package/dist/_dts/api/src/occurrenceScheduling.d.ts +10 -0
  29. package/dist/_dts/api/src/pageSurfaceEndpoints.d.ts +44 -0
  30. package/dist/_dts/api/src/participantMessaging.d.ts +11 -1
  31. package/dist/_dts/api/src/sdk-event-upsert.d.ts +40 -1
  32. package/dist/_dts/api/src/sdkContracts.d.ts +3 -42
  33. package/dist/_dts/api/src/sdkCourseBooking.d.ts +30 -0
  34. package/dist/_dts/api/src/sdkEventEndpointDefinitions.d.ts +76 -0
  35. package/dist/_dts/api/src/sdkEventLifecycle.d.ts +37 -0
  36. package/dist/_dts/api/src/sdkManagedEventContracts.d.ts +18 -0
  37. package/dist/_dts/api/src/sdkPageDesign.d.ts +388 -0
  38. package/dist/_dts/api/src/sdkPageDesignEndpointDefinitions.d.ts +22 -0
  39. package/dist/_dts/api/src/sdkPullEventContracts.d.ts +46 -0
  40. package/dist/_dts/api/src/siteAddressEndpoints.d.ts +29 -0
  41. package/dist/_dts/api/src/siteManagementEndpointDefinitions.d.ts +49 -0
  42. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +2 -32
  43. package/dist/_dts/api/src/siteOnboarding.d.ts +75 -9
  44. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +1 -1
  45. package/dist/_dts/api/src/types.d.ts +7 -1
  46. package/dist/_dts/api/src/wholeSeriesRuns.d.ts +14 -0
  47. package/dist/_dts/blocks/src/index.d.ts +2 -0
  48. package/dist/_dts/blocks/src/pageRenderAdmission.d.ts +10 -0
  49. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -1
  50. package/dist/_dts/blocks/src/system/blocks/events/shared/schemas.d.ts +27 -5
  51. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +14 -1
  52. package/dist/_dts/blocks/src/system/icons/social.d.ts +1 -1
  53. package/dist/_dts/blocks/src/system/registry.d.ts +1 -1
  54. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/eventSourceRecovery.d.ts +1 -0
  55. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +20 -4
  56. package/dist/_dts/blocks/src/system/runtime/nodes/form.fields.d.ts +5 -0
  57. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.block-submission.d.ts +36 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.client.d.ts +1 -1
  59. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.interactive.d.ts +6 -1
  60. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.parts.d.ts +46 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  62. package/dist/_dts/blocks/src/system/runtime/resolver.d.ts +2 -1
  63. package/dist/_dts/blocks/src/system/runtime/shared/components/CheckboxChoice.d.ts +18 -0
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +1 -0
  65. package/dist/_dts/content-editor/src/index.d.ts +1 -0
  66. package/dist/_dts/content-editor/src/primitives/previewEditableOutline.d.ts +2 -0
  67. package/dist/_dts/content-editor/src/ui/editorBlockEquality.d.ts +3 -0
  68. package/dist/_dts/content-editor/src/ui/editorSnapshot.d.ts +3 -5
  69. package/dist/_dts/core/src/block-content-identity.d.ts +5 -0
  70. package/dist/_dts/core/src/editor-state.d.ts +2 -7
  71. package/dist/_dts/core/src/index.d.ts +1 -0
  72. package/dist/_dts/core/src/mailing-list-submission.d.ts +3 -1
  73. package/dist/_dts/core/src/public-event-booking-availability.d.ts +20 -1
  74. package/dist/_dts/core/src/public-profile.d.ts +3 -1
  75. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +49 -2
  76. package/dist/_dts/editor-blocks/src/BlockEditor.d.ts +3 -0
  77. package/dist/_dts/editor-blocks/src/block-editor/EmptyState.d.ts +13 -1
  78. package/dist/_dts/editor-blocks/src/block-editor/types.d.ts +2 -8
  79. package/dist/_dts/editor-blocks/src/index.d.ts +1 -0
  80. package/dist/_dts/preview-next/src/client/blocks/composer/types.d.ts +3 -4
  81. package/dist/_dts/preview-next/src/client/preview/PreviewEntryControllerProvider.d.ts +1 -2
  82. package/dist/_dts/sdk/src/next/renderSdkContent.d.ts +0 -1
  83. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +2 -2
  84. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -2
  85. package/dist/_dts/sdk/src/rendering/helpers/loadContent.d.ts +6 -1
  86. package/dist/_dts/sdk/src/rendering/helpers/loadPage.d.ts +5 -2
  87. package/dist/_dts/sdk/src/rendering/helpers/pageRuntimeSupport.d.ts +6 -1
  88. package/dist/_dts/sdk/src/rendering/helpers/templateContent.d.ts +2 -0
  89. package/dist/_dts/sdk/src/rendering/hooks/useContent.d.ts +5 -1
  90. package/dist/_dts/sdk/src/rendering/hooks/usePage.d.ts +5 -1
  91. package/dist/_dts/sdk/src/version.d.ts +1 -1
  92. package/dist/_dts/surfaces/src/index.d.ts +9 -0
  93. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/inputs/checkable.d.ts +42 -0
  95. package/dist/_dts/theme-core/src/inputs/inputGroup.d.ts +19 -0
  96. package/dist/_dts/ui/src/navigation-tabs.d.ts +2 -1
  97. package/dist/client/{BookingConsentAgreement-DlVOmpW4.mjs → BookingConsentAgreement-BQKL045f.mjs} +2 -2
  98. package/dist/client/CheckboxChoice--W2n6yKs.mjs +24 -0
  99. package/dist/client/{DiscountCodeDisclosure-T9q623PQ.mjs → DiscountCodeDisclosure-CsOtjFY7.mjs} +1 -1
  100. package/dist/client/{EventCombined.client-DnsUeONl.mjs → EventCombined.client-BdRjVbhH.mjs} +6 -6
  101. package/dist/client/{EventListing.client-CNBFqJS4.mjs → EventListing.client-DBxC6xOU.mjs} +2 -2
  102. package/dist/client/{LeafletStaticMap-C7higg52.mjs → LeafletStaticMap-mHEJKrTs.mjs} +1 -1
  103. package/dist/client/{ThemedButton-LAJTNrS8.mjs → ThemedButton-CE5KYT6z.mjs} +1 -1
  104. package/dist/client/{accordion-BcNF9TjX.mjs → accordion-BEQNSptH.mjs} +1 -1
  105. package/dist/client/{bookingForm-BUaQ3S03.mjs → bookingForm-AMr-s5vw.mjs} +33 -52
  106. package/dist/client/bookings.mjs +48 -46
  107. package/dist/client/{carousel-CTdF6e0V.mjs → carousel-Bbt_QgJy.mjs} +1 -1
  108. package/dist/client/{cart-pGtyf_XU.mjs → cart-CnWi30zJ.mjs} +3 -3
  109. package/dist/client/{checkout-Da9WSn7Y.mjs → checkout-f3nkWgd4.mjs} +3 -3
  110. package/dist/client/client.mjs +1611 -815
  111. package/dist/client/{context-BFeY_Wbm.mjs → context-Bc8T6pCe.mjs} +1 -1
  112. package/dist/client/{dates-BhwVSxDg.mjs → dates-DUsCEzLb.mjs} +2 -3
  113. package/dist/client/{eventCalendar-BAtdnR4s.mjs → eventCalendar-CKwgXui5.mjs} +9 -9
  114. package/dist/client/{eventCombined-RksA3tRC.mjs → eventCombined-CBAOSTGR.mjs} +4 -4
  115. package/dist/client/{eventDetails-BB9hB4wR.mjs → eventDetails-Dh-_WiBD.mjs} +4 -4
  116. package/dist/client/{eventListing-BpJBkviM.mjs → eventListing-CA3frIH5.mjs} +4 -4
  117. package/dist/client/{eventRegistration-B18jFq_o.mjs → eventRegistration-BHtsgdcg.mjs} +21 -22
  118. package/dist/client/{form-Dodt8Y8t.mjs → form-C2h3YAcg.mjs} +135 -104
  119. package/dist/client/{headerSection-B0qj9ttg.mjs → headerSection-lwMuMTH9.mjs} +3 -3
  120. package/dist/client/hooks.mjs +489 -65
  121. package/dist/client/{locationMap-gn-iMk7a.mjs → locationMap-DJ2bLODV.mjs} +3 -3
  122. package/dist/client/{newsletterForm-oByLdFkr.mjs → newsletterForm-8Pu5K32g.mjs} +203 -101
  123. package/dist/client/{pricing-BOU0_Hai.mjs → pricing-HHx3IgBz.mjs} +1 -1
  124. package/dist/client/{productDetail-D9v1zH2j.mjs → productDetail-C_1odnAf.mjs} +3 -3
  125. package/dist/client/{productList-D-mItx1n.mjs → productList-CtCv-Nmx.mjs} +3 -3
  126. package/dist/client/{propsDecoder-C3TP_z4x.mjs → propsDecoder-Dcgsncxb.mjs} +40 -23
  127. package/dist/client/rendering/client.mjs +490 -457
  128. package/dist/client/rendering/islands.mjs +17 -17
  129. package/dist/client/rendering.mjs +1515 -628
  130. package/dist/client/{routeIslandApiConfig-DzN1W0sq.mjs → routeIslandApiConfig-CWLP7wu3.mjs} +1 -1
  131. package/dist/client/{scrollToBlock-CWs8EIdo.mjs → scrollToBlock-BNgaEUpo.mjs} +1 -1
  132. package/dist/client/{shop-Dufw7N7o.mjs → shop-DQXrQ8kJ.mjs} +7 -7
  133. package/dist/client/{shop-commerce-gklw_hLF.mjs → shop-commerce-B88zmWWo.mjs} +6 -6
  134. package/dist/client/{shop-commerce-store-Sf1eyTaZ.mjs → shop-commerce-store-DtSfkKuX.mjs} +1 -1
  135. package/dist/client/{shopShared-B5nyA41S.mjs → shopShared-cuaONpkJ.mjs} +4 -4
  136. package/dist/client/{useEventFilters-CLL829vy.mjs → useEventFilters-Bukew6Gb.mjs} +6 -6
  137. package/dist/preview-next/before-render.mjs +368 -103
  138. package/dist/preview-next/client/runtime.mjs +4 -4
  139. package/dist/preview-next/editor-base.css +11 -0
  140. package/dist/preview-next/keepAlive.mjs +328 -103
  141. package/dist/preview-next/middleware.mjs +329 -103
  142. package/dist/{previewAuthStore-BxAFlu-j.mjs → previewAuthStore-h5IgbSp4.mjs} +353 -103
  143. package/dist/{sdk-runtime-D0uZFev7.mjs → sdk-runtime-DTc1uIXn.mjs} +2 -2
  144. package/dist/{separator-EvdCAn4V.mjs → separator-BpHS1KZK.mjs} +1 -1
  145. package/dist/server/components.mjs +1376 -331
  146. package/dist/server/config-validation.mjs +405 -27
  147. package/dist/server/config.mjs +405 -27
  148. package/dist/server/data.mjs +405 -27
  149. package/dist/server/index.mjs +370 -104
  150. package/dist/server/next.mjs +1430 -463
  151. package/dist/server/page-converter.mjs +36 -25
  152. package/dist/server/prebuild.mjs +1 -1
  153. package/dist/server/rendering/server.mjs +1374 -331
  154. package/dist/server/rendering.mjs +1436 -364
  155. package/dist/server/routing.mjs +476 -43
  156. package/dist/server/server.mjs +504 -169
  157. package/dist/server/theme-bridge.mjs +467 -111
  158. package/dist/styles/index.css +186 -65
  159. package/package.json +1 -1
@@ -325,6 +325,9 @@
325
325
  .rb-h-4 {
326
326
  height: 1rem;
327
327
  }
328
+ .rb-h-5 {
329
+ height: 1.25rem;
330
+ }
328
331
  .rb-h-8 {
329
332
  height: 2rem;
330
333
  }
@@ -4232,6 +4235,10 @@
4232
4235
  margin-bottom: 0.25rem;
4233
4236
  }
4234
4237
 
4238
+ :where(.theme-scope) :where([data-block='event-registration']) .er-consent-check {
4239
+ margin-top: 0.75rem;
4240
+ }
4241
+
4235
4242
  :where(.theme-scope) :where([data-block='event-registration']) .er-required {
4236
4243
  color: var(--er-required);
4237
4244
  }
@@ -8934,13 +8941,6 @@
8934
8941
  margin: 0;
8935
8942
  }
8936
8943
 
8937
- /* Inline field (checkbox, radio with label) */
8938
- :where(.theme-scope) :where([data-block="form"]) .fb-inline {
8939
- display: flex;
8940
- align-items: center;
8941
- gap: 0.5rem;
8942
- }
8943
-
8944
8944
  /* Success state */
8945
8945
  :where(.theme-scope) :where([data-block="form"]) .fb-success {
8946
8946
  background-color: var(--fb-success-bg);
@@ -11052,9 +11052,11 @@
11052
11052
  */
11053
11053
 
11054
11054
  /* Newsletter copy styling */
11055
+ /* Size only: weight, family and colour come from the theme's heading styles */
11055
11056
  :where(.theme-scope) :where([data-block="newsletter-signup"]) .newsletter-copy-title {
11056
- font-size: 1.5rem;
11057
- font-weight: 600;
11057
+ font-size: clamp(1.75rem, 1.35rem + 1.6vw, 2.5rem);
11058
+ line-height: 1.15;
11059
+ text-wrap: balance;
11058
11060
  }
11059
11061
 
11060
11062
  :where(.theme-scope) :where([data-block="newsletter-signup"]) .newsletter-copy-subtitle {
@@ -11078,37 +11080,150 @@
11078
11080
  gap: var(--rb-gap-sm, 0.75rem);
11079
11081
  }
11080
11082
 
11081
- /* Individual field styling */
11083
+ /* Extra preset fields (name, company...). Labels are visually hidden, so
11084
+ these sit in a row above the email entry. */
11085
+ :where(.theme-scope) .newsletter-extra-fields {
11086
+ display: grid;
11087
+ grid-template-columns: repeat(auto-fit, minmax(min(12rem, 100%), 1fr));
11088
+ gap: 0.5rem;
11089
+ }
11090
+
11082
11091
  :where(.theme-scope) .newsletter-field {
11083
11092
  display: flex;
11084
11093
  flex-direction: column;
11085
11094
  gap: 0.25rem;
11095
+ text-align: left;
11086
11096
  }
11087
11097
 
11088
- /* Topic choices (visitor picks what to hear about). Same treatment as the
11089
- form block's .fb-fieldset / .fb-inline, defined here because the newsletter
11090
- form also renders inside contact-newsletter and the site footer. */
11091
- :where(.theme-scope) .newsletter-topics {
11098
+ /* Email entry: the email field and the themed submit button share one shell.
11099
+ The shell's look (background, border, corners, focus ring) comes from the
11100
+ theme's input system via .form-input-group; this only handles layout. */
11101
+ :where(.theme-scope) .newsletter-entry {
11102
+ container-type: inline-size;
11092
11103
  display: flex;
11093
11104
  flex-direction: column;
11094
- gap: 0.5rem;
11105
+ gap: 0.375rem;
11106
+ text-align: left;
11107
+ }
11108
+
11109
+ :where(.theme-scope) .newsletter-entry-group > button {
11110
+ white-space: nowrap;
11111
+ }
11112
+
11113
+ /* Too narrow for field and button side by side (phones, footer columns):
11114
+ stack them inside the shell and keep pill themes from turning the taller
11115
+ shell into a capsule. */
11116
+ @container (max-width: 22rem) {
11117
+ :where(.theme-scope) .newsletter-entry .newsletter-entry-group {
11118
+ flex-direction: column;
11119
+ border-radius: min(var(--rb-input-radius, 0.5rem), 1rem);
11120
+ }
11121
+
11122
+ :where(.theme-scope) .newsletter-entry .newsletter-entry-group > button {
11123
+ width: 100%;
11124
+ justify-content: center;
11125
+ }
11126
+ }
11127
+
11128
+ /* Topic choices (visitor picks what to hear about) as toggle chips. Each chip
11129
+ is a real checkbox underneath; the chip is its visible face. */
11130
+ :where(.theme-scope) .newsletter-topics {
11095
11131
  border: none;
11096
11132
  padding: 0;
11097
11133
  margin: 0;
11098
11134
  min-width: 0;
11099
11135
  }
11100
11136
 
11101
- :where(.theme-scope) .newsletter-topics > legend {
11137
+ :where(.theme-scope) .newsletter-topics-legend {
11102
11138
  padding: 0;
11103
- margin-bottom: 0.25rem;
11139
+ margin-bottom: 0.625rem;
11140
+ font-size: 0.9375rem;
11141
+ color: var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39)));
11104
11142
  }
11105
11143
 
11106
- :where(.theme-scope) .newsletter-topic-choice {
11144
+ :where(.theme-scope) .newsletter-topic-chips {
11107
11145
  display: flex;
11108
- align-items: center;
11146
+ flex-wrap: wrap;
11109
11147
  gap: 0.5rem;
11110
11148
  }
11111
11149
 
11150
+ :where(.theme-scope) .newsletter-stacked .newsletter-topics-legend {
11151
+ width: 100%;
11152
+ }
11153
+
11154
+ :where(.theme-scope) .newsletter-stacked .newsletter-topic-chips {
11155
+ justify-content: center;
11156
+ }
11157
+
11158
+ :where(.theme-scope) .newsletter-topic-chip {
11159
+ position: relative;
11160
+ display: inline-flex;
11161
+ }
11162
+
11163
+ :where(.theme-scope) .newsletter-topic-chip > input {
11164
+ position: absolute;
11165
+ inset: 0;
11166
+ width: 100%;
11167
+ height: 100%;
11168
+ margin: 0;
11169
+ opacity: 0;
11170
+ cursor: pointer;
11171
+ }
11172
+
11173
+ :where(.theme-scope) .newsletter-topic-chip > span {
11174
+ display: inline-flex;
11175
+ align-items: center;
11176
+ gap: 0.375rem;
11177
+ padding: 0.4375rem 0.9375rem;
11178
+ border: 1px solid color-mix(in srgb, currentColor 35%, transparent);
11179
+ border-radius: var(--rb-button-radius, var(--rb-input-radius, 9999px));
11180
+ font-size: 0.9375rem;
11181
+ line-height: 1.3;
11182
+ color: var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39)));
11183
+ transition: background-color 0.15s ease, border-color 0.15s ease, color 0.15s ease;
11184
+ }
11185
+
11186
+ /* Tick that grows in when the chip is on */
11187
+ :where(.theme-scope) .newsletter-topic-chip > span::before {
11188
+ content: "";
11189
+ width: 0;
11190
+ height: 0.7em;
11191
+ background-color: currentColor;
11192
+ clip-path: polygon(14% 52%, 0 67%, 38% 100%, 100% 22%, 85% 8%, 37% 70%);
11193
+ transition: width 0.15s ease;
11194
+ }
11195
+
11196
+ :where(.theme-scope) .newsletter-topic-chip:hover > span {
11197
+ border-color: currentColor;
11198
+ }
11199
+
11200
+ /* Same accent and mark colours as the theme's checkboxes */
11201
+ :where(.theme-scope) .newsletter-topic-chip > input:checked + span {
11202
+ background-color: var(--rb-check-accent, rgb(var(--tb-primary)));
11203
+ border-color: var(--rb-check-accent, rgb(var(--tb-primary)));
11204
+ color: var(--rb-check-mark, rgb(var(--tb-onPrimary, 255 255 255)));
11205
+ }
11206
+
11207
+ :where(.theme-scope) .newsletter-topic-chip > input:checked + span::before {
11208
+ width: 0.7em;
11209
+ }
11210
+
11211
+ :where(.theme-scope) .newsletter-topic-chip > input:focus-visible + span {
11212
+ outline: 2px solid var(--rb-check-accent, rgb(var(--tb-primary)));
11213
+ outline-offset: 2px;
11214
+ }
11215
+
11216
+ :where(.theme-scope) .newsletter-topic-chip > input:disabled + span {
11217
+ opacity: 0.6;
11218
+ }
11219
+
11220
+ @media (prefers-reduced-motion: reduce) {
11221
+ :where(.theme-scope) .newsletter-topic-chip > span,
11222
+ :where(.theme-scope) .newsletter-topic-chip > span::before {
11223
+ transition: none;
11224
+ }
11225
+ }
11226
+
11112
11227
  /* Error panel and field notes. The form block scopes these to its own
11113
11228
  data-block, so the newsletter form (which also renders in the footer)
11114
11229
  needs its own copy of the treatment. */
@@ -11126,13 +11241,7 @@
11126
11241
  color: var(--fb-error-text);
11127
11242
  }
11128
11243
 
11129
- /* Required indicator */
11130
- :where(.theme-scope) .newsletter-required {
11131
- color: rgb(var(--tb-primary));
11132
- margin-left: 0.125rem;
11133
- }
11134
-
11135
- /* Submit button container */
11244
+ /* Submit button container (only when a preset has no email field) */
11136
11245
  :where(.theme-scope) .newsletter-submit {
11137
11246
  margin-top: 0.5rem;
11138
11247
  }
@@ -11144,50 +11253,29 @@
11144
11253
  justify-content: center;
11145
11254
  }
11146
11255
 
11147
- /* Privacy note */
11256
+ /* Privacy note: quieter than the intro so the entry row leads */
11148
11257
  :where(.theme-scope) .newsletter-privacy-note {
11149
11258
  margin-top: 0.75rem;
11150
- font-size: 1rem;
11151
- line-height: 1.6;
11152
- color: var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39)));
11259
+ font-size: 0.8125rem;
11260
+ line-height: 1.5;
11261
+ color: var(--rb-surface-supporting-color, var(--rb-surface-text-color, rgb(var(--tb-text, 17 24 39))));
11262
+ opacity: 0.85;
11153
11263
  text-align: center;
11154
11264
  }
11155
11265
 
11156
11266
  /* =============================================================================
11157
- * Inline Variant - Horizontal layout
11267
+ * Inline Variant - left-aligned, wider entry row
11158
11268
  * =============================================================================
11159
11269
  */
11160
11270
 
11161
- :where(.theme-scope) .newsletter-inline .newsletter-form-fields {
11162
- flex-direction: row;
11163
- align-items: flex-end;
11164
- flex-wrap: wrap;
11165
- gap: var(--rb-gap-sm, 0.75rem);
11166
- }
11167
-
11168
- :where(.theme-scope) .newsletter-inline .newsletter-field {
11169
- flex: 1 1 auto;
11170
- min-width: 10rem;
11171
- }
11172
-
11173
- :where(.theme-scope) .newsletter-inline .newsletter-submit {
11174
- margin-top: 0;
11175
- flex-shrink: 0;
11176
- }
11177
-
11178
- :where(.theme-scope) .newsletter-inline .newsletter-topics {
11179
- flex-basis: 100%;
11271
+ :where(.theme-scope) .newsletter-inline .newsletter-form {
11272
+ max-width: 40rem;
11273
+ margin-left: 0;
11274
+ margin-right: 0;
11180
11275
  }
11181
11276
 
11182
- /* Mobile fallback for inline variant */
11183
- @media (max-width: 640px) {
11184
- :where(.theme-scope) .newsletter-inline .newsletter-form-fields {
11185
- flex-direction: column;
11186
- }
11187
-
11188
- :where(.theme-scope) .newsletter-inline .newsletter-field {
11189
- min-width: 100%;
11190
- }
11277
+ :where(.theme-scope) .newsletter-inline .newsletter-privacy-note {
11278
+ text-align: left;
11191
11279
  }
11192
11280
 
11193
11281
  /* =============================================================================
@@ -11324,12 +11412,6 @@
11324
11412
  margin: 0;
11325
11413
  }
11326
11414
 
11327
- :where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-inline {
11328
- display: flex;
11329
- align-items: center;
11330
- gap: 0.5rem;
11331
- }
11332
-
11333
11415
  :where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-success,
11334
11416
  :where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-error,
11335
11417
  :where(.theme-scope) :where([data-block="contact-newsletter"]) .fb-empty {
@@ -13222,3 +13304,42 @@
13222
13304
  }
13223
13305
 
13224
13306
 
13307
+ /* =============================================================================
13308
+ * Site footer: social links
13309
+ *
13310
+ * Icon links get a 40px tap target with a hairline ring drawn from the link's
13311
+ * own colour, so it follows the footer's text colour on any surface. Links
13312
+ * without an icon (unknown platforms) stay plain text.
13313
+ * =============================================================================
13314
+ */
13315
+
13316
+ :where(.theme-scope) .rb-footer-socials {
13317
+ display: flex;
13318
+ flex-wrap: wrap;
13319
+ align-items: center;
13320
+ gap: 0.75rem 1.25rem;
13321
+ }
13322
+
13323
+ :where(.theme-scope) .rb-footer-social-link:has(> .rb-footer-social-icon) {
13324
+ display: inline-grid;
13325
+ place-items: center;
13326
+ width: 2.5rem;
13327
+ height: 2.5rem;
13328
+ border: 1px solid color-mix(in srgb, currentColor 22%, transparent);
13329
+ border-radius: 9999px;
13330
+ }
13331
+
13332
+ :where(.theme-scope) .rb-footer-socials:has(.rb-footer-social-icon) {
13333
+ gap: 0.5rem;
13334
+ }
13335
+
13336
+ :where(.theme-scope) .rb-footer-social-link:has(> .rb-footer-social-icon):hover {
13337
+ border-color: currentColor;
13338
+ }
13339
+
13340
+ :where(.theme-scope) .rb-footer-social-icon {
13341
+ width: 1.5rem;
13342
+ height: 1.5rem;
13343
+ }
13344
+
13345
+
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.145.0",
3
+ "version": "0.146.0",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",