@riverbankcms/sdk 0.143.0 → 0.144.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 (161) hide show
  1. package/dist/{PreviewEditorSidebar-DROGfMKi.mjs → PreviewEditorSidebar-CQZNnFiM.mjs} +19 -25
  2. package/dist/{PreviewEditorUI-BaRjhFu-.mjs → PreviewEditorUI-DCNxnmI0.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-OIABYLES.mjs → SdkPreviewModeRuntime-BJolUbr1.mjs} +15 -6
  4. package/dist/{SiteChromeCustomizeContext-ohjTvZbc.mjs → SiteChromeCustomizeContext-CKgEpoxi.mjs} +1915 -1463
  5. package/dist/_dts/api/src/billing.d.ts +1 -1
  6. package/dist/_dts/api/src/billingEndpointTypes.d.ts +8 -2
  7. package/dist/_dts/api/src/bookingConfig.d.ts +3 -1
  8. package/dist/_dts/api/src/index.d.ts +1 -1
  9. package/dist/_dts/api/src/navigation/dashboardBookingsNav.d.ts +4 -4
  10. package/dist/_dts/api/src/publicExperience/eventEndpoints.d.ts +1 -0
  11. package/dist/_dts/api/src/sdkContracts.d.ts +1 -1
  12. package/dist/_dts/api/src/sdkSettingsContracts.d.ts +8 -0
  13. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +2 -8
  14. package/dist/_dts/api/src/siteSettings.d.ts +17 -7
  15. package/dist/_dts/billing/src/membership/index.d.ts +3 -0
  16. package/dist/_dts/block-form/src/backend/types.d.ts +14 -0
  17. package/dist/_dts/block-form/src/client/index.d.ts +1 -0
  18. package/dist/_dts/block-form/src/context/RepeaterHostActionsContext.d.ts +30 -0
  19. package/dist/_dts/block-form/src/context/index.d.ts +1 -0
  20. package/dist/_dts/block-form/src/index.d.ts +1 -0
  21. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterList.d.ts +4 -1
  22. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRow.d.ts +5 -2
  23. package/dist/_dts/block-form/src/widgets/RepeaterField/components/RepeaterRowActions.d.ts +11 -1
  24. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/index.d.ts +1 -0
  25. package/dist/_dts/block-form/src/widgets/RepeaterField/hooks/useEmptyStateFocusAfterRemoval.d.ts +8 -0
  26. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/buildSummary.d.ts +15 -1
  27. package/dist/_dts/block-form/src/widgets/RepeaterField/utils/repeaterRowActionsDomain.d.ts +5 -2
  28. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +34 -10
  29. package/dist/_dts/blocks/src/pageRendererContracts.d.ts +3 -0
  30. package/dist/_dts/blocks/src/system/constants/events.d.ts +10 -0
  31. package/dist/_dts/blocks/src/system/runtime/api/client.d.ts +5 -0
  32. package/dist/_dts/blocks/src/system/runtime/api/context.d.ts +3 -3
  33. package/dist/_dts/blocks/src/system/runtime/api/endpoints.d.ts +10 -0
  34. package/dist/_dts/blocks/src/system/runtime/api/index.d.ts +3 -2
  35. package/dist/_dts/blocks/src/system/runtime/api/readAuthority.d.ts +11 -0
  36. package/dist/_dts/blocks/src/system/runtime/api/types/core.d.ts +9 -0
  37. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +7 -13
  38. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -6
  39. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.d.ts +9 -4
  40. package/dist/_dts/blocks/src/system/runtime/hooks/useCalendarEvents.state.d.ts +0 -1
  41. package/dist/_dts/blocks/src/system/runtime/hooks/useEventPagination.d.ts +1 -3
  42. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +7 -24
  43. package/dist/_dts/blocks/src/system/runtime/nodes/cart.server.d.ts +1 -0
  44. package/dist/_dts/blocks/src/system/runtime/nodes/checkout.server.d.ts +1 -0
  45. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationBookingLayer.d.ts +2 -1
  46. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationSurface.d.ts +2 -1
  47. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/EventRegistrationWizardActions.d.ts +2 -1
  48. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +2 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.override.d.ts +2 -1
  50. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/useEventRegistrationWizard.d.ts +2 -2
  51. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +8 -0
  52. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCalendar.interactive.d.ts +4 -5
  53. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.client.d.ts +7 -2
  54. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventCombined.interactive.d.ts +7 -5
  55. package/dist/_dts/blocks/src/system/runtime/nodes/events/EventListing.interactive.d.ts +5 -6
  56. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCollectionContract.d.ts +3 -1
  57. package/dist/_dts/blocks/src/system/runtime/nodes/header-control.d.ts +10 -0
  58. package/dist/_dts/blocks/src/system/runtime/nodes/layout.d.ts +6 -21
  59. package/dist/_dts/blocks/src/system/runtime/nodes/product-detail.server.d.ts +1 -0
  60. package/dist/_dts/blocks/src/system/runtime/nodes/product-list.server.d.ts +1 -0
  61. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +13 -0
  62. package/dist/_dts/blocks/src/system/runtime/nodes/shop.server.d.ts +1 -0
  63. package/dist/_dts/blocks/src/system/runtime/shared/components/ThemedButton.d.ts +58 -0
  64. package/dist/_dts/blocks/src/system/runtime/shared/components/index.d.ts +2 -0
  65. package/dist/_dts/blocks/src/system/transforms/registry/chromeLogo.d.ts +23 -0
  66. package/dist/_dts/blocks/src/system/transforms/registry/index.d.ts +2 -1
  67. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +3 -1
  68. package/dist/_dts/blocks/src/system/transforms/typed.d.ts +4 -1
  69. package/dist/_dts/core/src/event-catalogue.d.ts +27 -0
  70. package/dist/_dts/core/src/event-preset-vocabulary.d.ts +7 -0
  71. package/dist/_dts/core/src/index.d.ts +2 -0
  72. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +13 -0
  73. package/dist/_dts/db/src/schemas/forms.d.ts +286 -2
  74. package/dist/_dts/editor-blocks/src/block-editor/{BlockCardHeader.d.ts → BlockCardFrame.d.ts} +11 -3
  75. package/dist/_dts/logger/src/console.d.ts +3 -0
  76. package/dist/_dts/sdk/src/client/publicEventReadOperations.d.ts +1 -0
  77. package/dist/_dts/sdk/src/client/types.d.ts +3 -0
  78. package/dist/_dts/sdk/src/navigation/index.d.ts +27 -0
  79. package/dist/_dts/sdk/src/public-api/contracts.d.ts +15 -7
  80. package/dist/_dts/sdk/src/rendering/blocks-page-renderer.d.ts +1 -0
  81. package/dist/_dts/sdk/src/rendering/client.d.ts +1 -0
  82. package/dist/_dts/sdk/src/rendering/components/Block.shared.d.ts +1 -0
  83. package/dist/_dts/sdk/src/rendering/components/Layout.d.ts +7 -1
  84. package/dist/_dts/sdk/src/rendering/components/pageShared.d.ts +2 -0
  85. package/dist/_dts/sdk/src/rendering/islands/enhancers/routeIslandApiConfig.d.ts +3 -2
  86. package/dist/_dts/sdk/src/rendering/islands/enhancers/shopShared.d.ts +2 -0
  87. package/dist/_dts/sdk/src/rendering/overrides.d.ts +1 -0
  88. package/dist/_dts/sdk/src/version.d.ts +1 -1
  89. package/dist/_dts/theme-core/src/buttons/affordanceSuppression.d.ts +1 -1
  90. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +3 -13
  91. package/dist/_dts/theme-core/src/customCss/index.d.ts +1 -1
  92. package/dist/_dts/theme-core/src/customCss/patch.d.ts +0 -5
  93. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  94. package/dist/_dts/theme-core/src/surfaces/index.d.ts +1 -0
  95. package/dist/_dts/theme-core/src/surfaces/logoVariant.d.ts +26 -0
  96. package/dist/_dts/theme-core/src/utils/colorStyles.d.ts +10 -0
  97. package/dist/_dts/ui/src/editor-item-card.d.ts +116 -0
  98. package/dist/_dts/ui/src/index.d.ts +1 -0
  99. package/dist/client/{BookingConsentAgreement-BoCtvzzu.mjs → BookingConsentAgreement-DoAILrkN.mjs} +4 -55
  100. package/dist/client/{DiscountCodeDisclosure-B5S30nZk.mjs → DiscountCodeDisclosure-X528hUTf.mjs} +27 -17
  101. package/dist/client/{EventCombined.client-CeZ2-zSt.mjs → EventCombined.client-DSBVwq5m.mjs} +54 -46
  102. package/dist/client/{EventListing.client-DJN3j8B3.mjs → EventListing.client-DmFAX7Vb.mjs} +3 -4
  103. package/dist/client/{LeafletStaticMap-RjtGzDQT.mjs → LeafletStaticMap-BAqXdfhq.mjs} +1 -1
  104. package/dist/client/ThemedButton-BwNFVwi4.mjs +412 -0
  105. package/dist/client/{accordion-DOmnDoyg.mjs → accordion-DRhMdkbd.mjs} +1 -1
  106. package/dist/client/{bookingForm-C0vk7pgS.mjs → bookingForm-iJ_nCsNF.mjs} +26 -32
  107. package/dist/client/bookings.mjs +201 -118
  108. package/dist/client/{carousel-BZJ7pno3.mjs → carousel-D8zuffZr.mjs} +2 -2
  109. package/dist/client/{carousel.client-DQTjCVQT.mjs → carousel.client-jahpU9Vz.mjs} +1 -1
  110. package/dist/client/{cart-CaeVAHJl.mjs → cart-DeMGJViN.mjs} +3 -3
  111. package/dist/client/{checkout-7wmoNDtG.mjs → checkout-DXc06Km2.mjs} +3 -3
  112. package/dist/client/{checkoutUrls-FL6lRkrt.mjs → checkoutUrls-CW3-78uu.mjs} +1 -1
  113. package/dist/client/client.mjs +2271 -1983
  114. package/dist/client/{colorStyles-3013aRAY.mjs → colorStyles-CuJBiS-1.mjs} +16 -4
  115. package/dist/client/{context-BOimxE3U.mjs → context-CDLCfDep.mjs} +24 -8
  116. package/dist/client/{dates-BnzVksi4.mjs → dates-ClFx7Epy.mjs} +2 -2
  117. package/dist/client/{eventCalendar-l-fpaslC.mjs → eventCalendar-BaGpnOGN.mjs} +39 -50
  118. package/dist/client/{eventCombined-DGGvssK6.mjs → eventCombined-ywONOx2m.mjs} +5 -4
  119. package/dist/client/{eventDetails-DRiCm_hL.mjs → eventDetails-B2LlOTYY.mjs} +4 -4
  120. package/dist/client/{eventListing-dph8loYX.mjs → eventListing-CMgxWpqP.mjs} +5 -4
  121. package/dist/client/{eventRegistration-ClBohmbY.mjs → eventRegistration-BarLDNHR.mjs} +83 -68
  122. package/dist/client/{form-BLVVAnd3.mjs → form-BjqKaBJ7.mjs} +9 -10
  123. package/dist/client/{headerSection-DHy4C8Ix.mjs → headerSection-CP4XDwz1.mjs} +23 -30
  124. package/dist/client/hooks.mjs +257 -63
  125. package/dist/client/{locationMap-6HuS28ck.mjs → locationMap-C5gW-d-w.mjs} +9 -10
  126. package/dist/client/{media-DHpfFwd3.mjs → media-BtJ37tzS.mjs} +1 -1
  127. package/dist/client/{newsletterForm-xOdcOhZP.mjs → newsletterForm-afXlVSA0.mjs} +8 -9
  128. package/dist/client/{pricing-ChinRYFt.mjs → pricing-Bl1CAl28.mjs} +1 -1
  129. package/dist/client/{productDetail-0chA5gbK.mjs → productDetail-CvQ3jWQe.mjs} +3 -3
  130. package/dist/client/{productList-OoINA0h1.mjs → productList-U874PGO7.mjs} +3 -3
  131. package/dist/client/{propsDecoder-CIZ-hbIG.mjs → propsDecoder-DPXtCZWP.mjs} +87 -29
  132. package/dist/client/rendering/client.mjs +1891 -1740
  133. package/dist/client/rendering/islands.mjs +19 -19
  134. package/dist/client/rendering.mjs +2225 -1913
  135. package/dist/client/{routeIslandApiConfig-UNsfPcYq.mjs → routeIslandApiConfig-NGYiUWXu.mjs} +8 -1
  136. package/dist/client/{scrollToBlock-BPZl0gPZ.mjs → scrollToBlock-0-C3DVhK.mjs} +1 -1
  137. package/dist/client/{shop-CLJFqNIq.mjs → shop-BXjXhM9P.mjs} +45 -58
  138. package/dist/client/{shop-commerce-PpANg5wB.mjs → shop-commerce-BZ6UlWJ7.mjs} +42 -55
  139. package/dist/client/{shop-commerce-store-TA_Kz2ku.mjs → shop-commerce-store-DlSBXb3D.mjs} +1 -1
  140. package/dist/client/{shopShared-DzcFcA5g.mjs → shopShared-kkEOiLPA.mjs} +6 -5
  141. package/dist/client/{useEventFilters-CFU21QZo.mjs → useEventFilters-zvnnE1ro.mjs} +66 -355
  142. package/dist/preview-next/client/runtime.mjs +3 -3
  143. package/dist/preview-next/editor-chrome.css +8 -0
  144. package/dist/{sdk-runtime-CDKl0Fr7.mjs → sdk-runtime-DFJlQt3q.mjs} +1 -1
  145. package/dist/{separator-BTp96X32.mjs → separator-o8GHb1xh.mjs} +1 -1
  146. package/dist/server/components.mjs +828 -623
  147. package/dist/server/config-validation.mjs +257 -63
  148. package/dist/server/config.mjs +257 -63
  149. package/dist/server/data.mjs +257 -63
  150. package/dist/server/index.mjs +9 -5
  151. package/dist/server/navigation.mjs +28 -1
  152. package/dist/server/next.mjs +14129 -13947
  153. package/dist/server/page-converter.mjs +110 -59
  154. package/dist/server/prebuild.mjs +1 -1
  155. package/dist/server/rendering/server.mjs +832 -624
  156. package/dist/server/rendering.mjs +830 -624
  157. package/dist/server/routing.mjs +294 -69
  158. package/dist/server/server.mjs +266 -68
  159. package/dist/server/theme-bridge.mjs +40 -1
  160. package/dist/styles/index.css +6 -0
  161. package/package.json +1 -1
@@ -944,10 +944,175 @@ export type FormSlug = string & {
944
944
  readonly [formSlugBrand]: 'FormSlug';
945
945
  };
946
946
  export declare const formSlugSchema: z.ZodPipe<z.ZodString, z.ZodTransform<FormSlug, string>>;
947
+ /**
948
+ * A form's fields as sent to the Forms API: the generic contract, or the
949
+ * booking-questions contract (which adds file uploads). Which one a form may
950
+ * use depends on its type, which the service checks — on update the type
951
+ * lives on the stored form, not the request.
952
+ */
953
+ export declare const formPayloadFieldsSchema: z.ZodUnion<readonly [z.ZodObject<{
954
+ version: z.ZodDefault<z.ZodString>;
955
+ fields: z.ZodArray<z.ZodObject<{
956
+ id: z.ZodString;
957
+ label: z.ZodString;
958
+ type: z.ZodEnum<{
959
+ number: "number";
960
+ date: "date";
961
+ time: "time";
962
+ text: "text";
963
+ email: "email";
964
+ url: "url";
965
+ textarea: "textarea";
966
+ select: "select";
967
+ checkbox: "checkbox";
968
+ radio: "radio";
969
+ tel: "tel";
970
+ consent: "consent";
971
+ }>;
972
+ required: z.ZodDefault<z.ZodBoolean>;
973
+ placeholder: z.ZodOptional<z.ZodString>;
974
+ helpText: z.ZodOptional<z.ZodString>;
975
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
976
+ value: z.ZodString;
977
+ label: z.ZodString;
978
+ }, z.core.$strict>>>;
979
+ multiple: z.ZodOptional<z.ZodBoolean>;
980
+ minLength: z.ZodOptional<z.ZodNumber>;
981
+ maxLength: z.ZodOptional<z.ZodNumber>;
982
+ pattern: z.ZodOptional<z.ZodString>;
983
+ min: z.ZodOptional<z.ZodNumber>;
984
+ max: z.ZodOptional<z.ZodNumber>;
985
+ layout: z.ZodOptional<z.ZodObject<{
986
+ width: z.ZodDefault<z.ZodEnum<{
987
+ full: "full";
988
+ half: "half";
989
+ }>>;
990
+ }, z.core.$strict>>;
991
+ }, z.core.$strict>>;
992
+ }, z.core.$strict>, z.ZodUnion<readonly [z.ZodObject<{
993
+ version: z.ZodDefault<z.ZodString>;
994
+ fields: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
995
+ id: z.ZodString;
996
+ label: z.ZodString;
997
+ required: z.ZodDefault<z.ZodBoolean>;
998
+ placeholder: z.ZodOptional<z.ZodString>;
999
+ helpText: z.ZodOptional<z.ZodString>;
1000
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
1001
+ value: z.ZodString;
1002
+ label: z.ZodString;
1003
+ }, z.core.$strict>>>;
1004
+ multiple: z.ZodOptional<z.ZodBoolean>;
1005
+ minLength: z.ZodOptional<z.ZodNumber>;
1006
+ maxLength: z.ZodOptional<z.ZodNumber>;
1007
+ pattern: z.ZodOptional<z.ZodString>;
1008
+ min: z.ZodOptional<z.ZodNumber>;
1009
+ max: z.ZodOptional<z.ZodNumber>;
1010
+ layout: z.ZodOptional<z.ZodObject<{
1011
+ width: z.ZodDefault<z.ZodEnum<{
1012
+ full: "full";
1013
+ half: "half";
1014
+ }>>;
1015
+ }, z.core.$strict>>;
1016
+ type: z.ZodEnum<{
1017
+ number: "number";
1018
+ date: "date";
1019
+ time: "time";
1020
+ text: "text";
1021
+ email: "email";
1022
+ url: "url";
1023
+ textarea: "textarea";
1024
+ select: "select";
1025
+ checkbox: "checkbox";
1026
+ radio: "radio";
1027
+ tel: "tel";
1028
+ }>;
1029
+ }, z.core.$strict>, z.ZodObject<{
1030
+ id: z.ZodString;
1031
+ label: z.ZodString;
1032
+ type: z.ZodLiteral<"document_upload">;
1033
+ required: z.ZodDefault<z.ZodBoolean>;
1034
+ placeholder: z.ZodOptional<z.ZodString>;
1035
+ helpText: z.ZodOptional<z.ZodString>;
1036
+ layout: z.ZodOptional<z.ZodObject<{
1037
+ width: z.ZodDefault<z.ZodEnum<{
1038
+ full: "full";
1039
+ half: "half";
1040
+ }>>;
1041
+ }, z.core.$strict>>;
1042
+ allowedFileTypes: z.ZodDefault<z.ZodArray<z.ZodEnum<{
1043
+ image: "image";
1044
+ pdf: "pdf";
1045
+ docx: "docx";
1046
+ }>>>;
1047
+ maxBytes: z.ZodDefault<z.ZodNumber>;
1048
+ }, z.core.$strict>], "type">>;
1049
+ }, z.core.$strict>, z.ZodObject<{
1050
+ schemaVersion: z.ZodLiteral<2>;
1051
+ sections: z.ZodArray<z.ZodObject<{
1052
+ id: z.ZodString;
1053
+ title: z.ZodString;
1054
+ description: z.ZodOptional<z.ZodString>;
1055
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1056
+ id: z.ZodString;
1057
+ label: z.ZodString;
1058
+ required: z.ZodDefault<z.ZodBoolean>;
1059
+ placeholder: z.ZodOptional<z.ZodString>;
1060
+ helpText: z.ZodOptional<z.ZodString>;
1061
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
1062
+ value: z.ZodString;
1063
+ label: z.ZodString;
1064
+ }, z.core.$strict>>>;
1065
+ multiple: z.ZodOptional<z.ZodBoolean>;
1066
+ minLength: z.ZodOptional<z.ZodNumber>;
1067
+ maxLength: z.ZodOptional<z.ZodNumber>;
1068
+ pattern: z.ZodOptional<z.ZodString>;
1069
+ min: z.ZodOptional<z.ZodNumber>;
1070
+ max: z.ZodOptional<z.ZodNumber>;
1071
+ layout: z.ZodOptional<z.ZodObject<{
1072
+ width: z.ZodDefault<z.ZodEnum<{
1073
+ full: "full";
1074
+ half: "half";
1075
+ }>>;
1076
+ }, z.core.$strict>>;
1077
+ type: z.ZodEnum<{
1078
+ number: "number";
1079
+ date: "date";
1080
+ time: "time";
1081
+ text: "text";
1082
+ email: "email";
1083
+ url: "url";
1084
+ textarea: "textarea";
1085
+ select: "select";
1086
+ checkbox: "checkbox";
1087
+ radio: "radio";
1088
+ tel: "tel";
1089
+ }>;
1090
+ }, z.core.$strict>, z.ZodObject<{
1091
+ id: z.ZodString;
1092
+ label: z.ZodString;
1093
+ type: z.ZodLiteral<"document_upload">;
1094
+ required: z.ZodDefault<z.ZodBoolean>;
1095
+ placeholder: z.ZodOptional<z.ZodString>;
1096
+ helpText: z.ZodOptional<z.ZodString>;
1097
+ layout: z.ZodOptional<z.ZodObject<{
1098
+ width: z.ZodDefault<z.ZodEnum<{
1099
+ full: "full";
1100
+ half: "half";
1101
+ }>>;
1102
+ }, z.core.$strict>>;
1103
+ allowedFileTypes: z.ZodDefault<z.ZodArray<z.ZodEnum<{
1104
+ image: "image";
1105
+ pdf: "pdf";
1106
+ docx: "docx";
1107
+ }>>>;
1108
+ maxBytes: z.ZodDefault<z.ZodNumber>;
1109
+ }, z.core.$strict>], "type">>;
1110
+ }, z.core.$strict>>;
1111
+ }, z.core.$strict>]>]>;
947
1112
  export declare const createFormPayloadSchema: z.ZodObject<{
948
1113
  name: z.ZodString;
949
1114
  slug: z.ZodPipe<z.ZodString, z.ZodTransform<FormSlug, string>>;
950
- schema: z.ZodObject<{
1115
+ schema: z.ZodUnion<readonly [z.ZodObject<{
951
1116
  version: z.ZodDefault<z.ZodString>;
952
1117
  fields: z.ZodArray<z.ZodObject<{
953
1118
  id: z.ZodString;
@@ -986,7 +1151,126 @@ export declare const createFormPayloadSchema: z.ZodObject<{
986
1151
  }>>;
987
1152
  }, z.core.$strict>>;
988
1153
  }, z.core.$strict>>;
989
- }, z.core.$strict>;
1154
+ }, z.core.$strict>, z.ZodUnion<readonly [z.ZodObject<{
1155
+ version: z.ZodDefault<z.ZodString>;
1156
+ fields: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1157
+ id: z.ZodString;
1158
+ label: z.ZodString;
1159
+ required: z.ZodDefault<z.ZodBoolean>;
1160
+ placeholder: z.ZodOptional<z.ZodString>;
1161
+ helpText: z.ZodOptional<z.ZodString>;
1162
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
1163
+ value: z.ZodString;
1164
+ label: z.ZodString;
1165
+ }, z.core.$strict>>>;
1166
+ multiple: z.ZodOptional<z.ZodBoolean>;
1167
+ minLength: z.ZodOptional<z.ZodNumber>;
1168
+ maxLength: z.ZodOptional<z.ZodNumber>;
1169
+ pattern: z.ZodOptional<z.ZodString>;
1170
+ min: z.ZodOptional<z.ZodNumber>;
1171
+ max: z.ZodOptional<z.ZodNumber>;
1172
+ layout: z.ZodOptional<z.ZodObject<{
1173
+ width: z.ZodDefault<z.ZodEnum<{
1174
+ full: "full";
1175
+ half: "half";
1176
+ }>>;
1177
+ }, z.core.$strict>>;
1178
+ type: z.ZodEnum<{
1179
+ number: "number";
1180
+ date: "date";
1181
+ time: "time";
1182
+ text: "text";
1183
+ email: "email";
1184
+ url: "url";
1185
+ textarea: "textarea";
1186
+ select: "select";
1187
+ checkbox: "checkbox";
1188
+ radio: "radio";
1189
+ tel: "tel";
1190
+ }>;
1191
+ }, z.core.$strict>, z.ZodObject<{
1192
+ id: z.ZodString;
1193
+ label: z.ZodString;
1194
+ type: z.ZodLiteral<"document_upload">;
1195
+ required: z.ZodDefault<z.ZodBoolean>;
1196
+ placeholder: z.ZodOptional<z.ZodString>;
1197
+ helpText: z.ZodOptional<z.ZodString>;
1198
+ layout: z.ZodOptional<z.ZodObject<{
1199
+ width: z.ZodDefault<z.ZodEnum<{
1200
+ full: "full";
1201
+ half: "half";
1202
+ }>>;
1203
+ }, z.core.$strict>>;
1204
+ allowedFileTypes: z.ZodDefault<z.ZodArray<z.ZodEnum<{
1205
+ image: "image";
1206
+ pdf: "pdf";
1207
+ docx: "docx";
1208
+ }>>>;
1209
+ maxBytes: z.ZodDefault<z.ZodNumber>;
1210
+ }, z.core.$strict>], "type">>;
1211
+ }, z.core.$strict>, z.ZodObject<{
1212
+ schemaVersion: z.ZodLiteral<2>;
1213
+ sections: z.ZodArray<z.ZodObject<{
1214
+ id: z.ZodString;
1215
+ title: z.ZodString;
1216
+ description: z.ZodOptional<z.ZodString>;
1217
+ items: z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
1218
+ id: z.ZodString;
1219
+ label: z.ZodString;
1220
+ required: z.ZodDefault<z.ZodBoolean>;
1221
+ placeholder: z.ZodOptional<z.ZodString>;
1222
+ helpText: z.ZodOptional<z.ZodString>;
1223
+ options: z.ZodOptional<z.ZodArray<z.ZodObject<{
1224
+ value: z.ZodString;
1225
+ label: z.ZodString;
1226
+ }, z.core.$strict>>>;
1227
+ multiple: z.ZodOptional<z.ZodBoolean>;
1228
+ minLength: z.ZodOptional<z.ZodNumber>;
1229
+ maxLength: z.ZodOptional<z.ZodNumber>;
1230
+ pattern: z.ZodOptional<z.ZodString>;
1231
+ min: z.ZodOptional<z.ZodNumber>;
1232
+ max: z.ZodOptional<z.ZodNumber>;
1233
+ layout: z.ZodOptional<z.ZodObject<{
1234
+ width: z.ZodDefault<z.ZodEnum<{
1235
+ full: "full";
1236
+ half: "half";
1237
+ }>>;
1238
+ }, z.core.$strict>>;
1239
+ type: z.ZodEnum<{
1240
+ number: "number";
1241
+ date: "date";
1242
+ time: "time";
1243
+ text: "text";
1244
+ email: "email";
1245
+ url: "url";
1246
+ textarea: "textarea";
1247
+ select: "select";
1248
+ checkbox: "checkbox";
1249
+ radio: "radio";
1250
+ tel: "tel";
1251
+ }>;
1252
+ }, z.core.$strict>, z.ZodObject<{
1253
+ id: z.ZodString;
1254
+ label: z.ZodString;
1255
+ type: z.ZodLiteral<"document_upload">;
1256
+ required: z.ZodDefault<z.ZodBoolean>;
1257
+ placeholder: z.ZodOptional<z.ZodString>;
1258
+ helpText: z.ZodOptional<z.ZodString>;
1259
+ layout: z.ZodOptional<z.ZodObject<{
1260
+ width: z.ZodDefault<z.ZodEnum<{
1261
+ full: "full";
1262
+ half: "half";
1263
+ }>>;
1264
+ }, z.core.$strict>>;
1265
+ allowedFileTypes: z.ZodDefault<z.ZodArray<z.ZodEnum<{
1266
+ image: "image";
1267
+ pdf: "pdf";
1268
+ docx: "docx";
1269
+ }>>>;
1270
+ maxBytes: z.ZodDefault<z.ZodNumber>;
1271
+ }, z.core.$strict>], "type">>;
1272
+ }, z.core.$strict>>;
1273
+ }, z.core.$strict>]>]>;
990
1274
  settings: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
991
1275
  type: z.ZodLiteral<"contact">;
992
1276
  successMessage: z.ZodOptional<z.ZodString>;
@@ -1,3 +1,4 @@
1
+ import { type ReactNode } from 'react';
1
2
  import type { SyntheticListenerMap } from '@dnd-kit/core/dist/hooks/utilities';
2
3
  import type { FieldWidgetComponent } from '../../../block-form/src/index';
3
4
  import { type SiteIconStyleGuideVersionId, type SystemBlockDefinition, type Theme } from '../../../blocks/src/index';
@@ -8,11 +9,15 @@ import { type GeneratedIconSetGenerateInput, type GeneratedIconSetGenerateResult
8
9
  import { type GeneratedIconApplyState } from './generatedIconApplyCoordination';
9
10
  /** Drag listener props from dnd-kit */
10
11
  type DragListeners = SyntheticListenerMap | undefined;
11
- type BlockCardHeaderStore = UiStore<GeneratedIconApplyState & Pick<UiSlice, 'focusRequest' | 'clearFocus'> & {
12
+ type BlockCardFrameStore = UiStore<GeneratedIconApplyState & Pick<UiSlice, 'focusRequest' | 'clearFocus'> & {
12
13
  drafts: Pick<DraftsSlice, 'getBlockSnapshot' | 'getCurrentValues' | 'initNewBlock' | 'updateBlockBaseline' | 'clearError' | 'setAtPath' | 'getAtPath'>;
13
14
  arrayKeys: ArrayKeysManager;
14
15
  }>;
15
- export declare function BlockCardHeader({ interactionReady, block, manifest, isFirst, isLast, isMoving, onMove, onDuplicate, onDelete, dragListeners, canReorder, collapsed, onToggleCollapsed, contentId, uiStore, widgetOverrides, theme, hideThemeV2RawStyleFields, reorderControlMode, actionPresentation, currentStyleGuideVersionId, iconStyleGuideSummary, iconStyleGuideEditHref, onGenerateIconSet, }: {
16
+ /**
17
+ * One block in the block editor: the shared editor item card, with the
18
+ * block's own actions, dialogs and body.
19
+ */
20
+ export declare function BlockCardFrame({ interactionReady, block, manifest, isFirst, isLast, isMoving, onMove, onDuplicate, onDelete, dragListeners, canReorder, collapsed, onToggleCollapsed, contentId, uiStore, widgetOverrides, theme, hideThemeV2RawStyleFields, reorderControlMode, actionPresentation, currentStyleGuideVersionId, iconStyleGuideSummary, iconStyleGuideEditHref, onGenerateIconSet, highlighted, children, }: {
16
21
  interactionReady: boolean;
17
22
  block: BlockItem;
18
23
  manifest: SystemBlockDefinition['manifest'];
@@ -27,7 +32,10 @@ export declare function BlockCardHeader({ interactionReady, block, manifest, isF
27
32
  collapsed: boolean;
28
33
  onToggleCollapsed: () => void;
29
34
  contentId?: string;
30
- uiStore: BlockCardHeaderStore;
35
+ highlighted?: boolean;
36
+ /** The block's body, shown when expanded. */
37
+ children?: ReactNode;
38
+ uiStore: BlockCardFrameStore;
31
39
  /** Optional widget overrides for block customization form fields */
32
40
  widgetOverrides?: Record<string, FieldWidgetComponent>;
33
41
  theme?: Theme | null;
@@ -0,0 +1,3 @@
1
+ import type { AppLogger } from './api';
2
+ export declare const logger: AppLogger;
3
+ export type { AppLogger, LogFields } from './api';
@@ -6,6 +6,7 @@ type PublicEventReadDeps = Readonly<{
6
6
  resilientFetchData: <T>(policyEndpoint: PublicReadEndpoint, cacheKey: string, fetcher: (signal: AbortSignal) => Promise<ApiResult<T>>, options: Readonly<{
7
7
  signal?: AbortSignal;
8
8
  force?: boolean;
9
+ preview?: boolean;
9
10
  }>) => Promise<T>;
10
11
  }>;
11
12
  type PublicEventReadOperations = Pick<RiverbankClient, 'resolveEventOccurrence' | 'resolveEventRun' | 'listPublicEventCalendarWindow'>;
@@ -574,12 +574,15 @@ export interface RiverbankClient {
574
574
  siteId: string;
575
575
  subject: EventPageSurfaceSubjectRefWire;
576
576
  segment: string;
577
+ /** Include draft subroutes; the API still validates preview credentials. */
578
+ preview?: boolean;
577
579
  } & SdkMethodOptions): Promise<ResolveEventOccurrenceResponse>;
578
580
  /** Resolve one run slug within a canonical parent Event. */
579
581
  resolveEventRun(params: {
580
582
  siteId: string;
581
583
  subject: EventPageSurfaceSubjectRefWire;
582
584
  segment: string;
585
+ preview?: boolean;
583
586
  } & SdkMethodOptions): Promise<ResolveEventRunResponse>;
584
587
  /**
585
588
  * Check if a path has a configured redirect rule
@@ -415,4 +415,31 @@ export declare function resolveNavigationLinkHref(link: LinkPayload | null, rout
415
415
  * ```
416
416
  */
417
417
  export declare function buildLogo(logo: Partial<LogoSource> | null, fallbackAlt: string | null | undefined): Logo;
418
+ /** Both site logos, for chrome that picks one per surface. */
419
+ export type LogoVariants = {
420
+ forLightBackgrounds: Logo;
421
+ forDarkBackgrounds: Logo;
422
+ };
423
+ /**
424
+ * Build both site logos from layout data. The default header and footer choose
425
+ * between them by the surface they sit on; custom chrome can do the same.
426
+ *
427
+ * @example
428
+ * ```ts
429
+ * const logoVariants = buildLogoVariants(siteData.layout, siteData.site.title);
430
+ * ```
431
+ */
432
+ export declare function buildLogoVariants(layout: Readonly<{
433
+ logo?: Partial<LogoSource> | null;
434
+ logoForDarkBackgrounds?: Partial<LogoSource> | null;
435
+ }> | null | undefined, fallbackAlt: string | null | undefined): LogoVariants;
436
+ /**
437
+ * Header/footer block content for the site logos. `logo` stays populated with
438
+ * whichever logo exists so presence checks keep working; `logoVariants` is
439
+ * what the blocks select from at render.
440
+ */
441
+ export declare function buildChromeLogoContent(layout: Parameters<typeof buildLogoVariants>[0], fallbackAlt: string | null | undefined): {
442
+ logo: Logo;
443
+ logoVariants: LogoVariants;
444
+ };
418
445
  export type { NavigationMenuWithItems, NavigationItemRecord, LinkPayload } from '../public-api/contracts';
@@ -184,14 +184,22 @@ export type SiteLayoutSettingsPayload = {
184
184
  header: SiteHeaderContent;
185
185
  footer: SiteFooterContent;
186
186
  };
187
+ export type SiteLayoutLogoPayload = {
188
+ assetId: string | null;
189
+ url: string | null;
190
+ alt: string | null;
191
+ width?: number | null;
192
+ height?: number | null;
193
+ };
187
194
  export type SiteLayoutResolvedPayload = SiteLayoutSettingsPayload & {
188
- logo?: {
189
- assetId: string | null;
190
- url: string | null;
191
- alt: string | null;
192
- width?: number | null;
193
- height?: number | null;
194
- };
195
+ /** The site logo, designed for light backgrounds. */
196
+ logo?: SiteLayoutLogoPayload;
197
+ /**
198
+ * Optional logo designed for dark backgrounds. The default header and
199
+ * footer draw it on surfaces whose text colour resolves light. Absent or
200
+ * null when the site has not set one.
201
+ */
202
+ logoForDarkBackgrounds?: SiteLayoutLogoPayload | null;
195
203
  };
196
204
  export interface SiteAnalyticsCookieBannerCopyOverrides {
197
205
  title?: string;
@@ -44,6 +44,7 @@ export type PageRendererDataContext = {
44
44
  apiBaseUrl?: string;
45
45
  portalToken?: string | null;
46
46
  previewToken?: string | null;
47
+ readAuthority?: import('../../../blocks/src/api').BrowserReadAuthority;
47
48
  eventRegistrationOverlayEnabled?: boolean;
48
49
  };
49
50
  export type BlocksPageRendererDataContext = Omit<PageRendererDataContext, 'mediaAssets' | 'imageResolveContext'> & {
@@ -10,6 +10,7 @@ export type BlockApiAuth = Readonly<{
10
10
  type: 'none';
11
11
  }>;
12
12
  export type BlockApiConfig = Readonly<{
13
+ readAuthority?: import('../../../blocks/src/api').BrowserReadAuthority;
13
14
  baseUrl: string;
14
15
  auth: BlockApiAuth;
15
16
  siteId?: string;
@@ -34,6 +34,7 @@ type BlockCommonProps = {
34
34
  * Portal token for customer portal Bearer auth.
35
35
  */
36
36
  portalToken?: string | null;
37
+ readAuthority?: import('../../../../blocks/src/api').BrowserReadAuthority;
37
38
  /** Route lookup for CMS links inside block content. */
38
39
  routeMap?: RouteMap;
39
40
  /** Page identifier to routeId lookup for { kind: 'page' } links. */
@@ -3,14 +3,17 @@
3
3
  *
4
4
  * Renders site header and footer around content. Fetches site data if not provided.
5
5
  */
6
- import { buildMenu, buildFooterMenu, buildFooterMenuForRole, buildLogo } from '../../navigation';
6
+ import { buildMenu, buildFooterMenu, buildFooterMenuForRole, type buildLogo, type buildLogoVariants } from '../../navigation';
7
7
  import type { RiverbankClient, SiteResponse } from '../../client/types';
8
8
  import type { Theme } from '../../contracts';
9
9
  import { type SdkThemeRuntime } from '../themeRuntime';
10
10
  import { type SdkOverrideOnlyRendering } from '../renderingMode';
11
11
  export type CustomHeaderData = {
12
12
  menu: ReturnType<typeof buildMenu>;
13
+ /** The site logo (for light backgrounds), or the dark-background one if it is the only logo set. */
13
14
  logo: ReturnType<typeof buildLogo>;
15
+ /** Both logos, so a custom header can pick by its own surface. */
16
+ logoVariants: ReturnType<typeof buildLogoVariants>;
14
17
  site: SiteResponse['site'];
15
18
  routes: SiteResponse['routes'];
16
19
  };
@@ -18,7 +21,10 @@ export type CustomFooterData = {
18
21
  menu: ReturnType<typeof buildMenu>;
19
22
  footerMenu: ReturnType<typeof buildFooterMenu>;
20
23
  legalFooterMenu: ReturnType<typeof buildFooterMenuForRole>;
24
+ /** The site logo (for light backgrounds), or the dark-background one if it is the only logo set. */
21
25
  logo: ReturnType<typeof buildLogo>;
26
+ /** Both logos, so a custom footer can pick by its own surface. */
27
+ logoVariants: ReturnType<typeof buildLogoVariants>;
22
28
  site: SiteResponse['site'];
23
29
  routes: SiteResponse['routes'];
24
30
  };
@@ -55,11 +55,13 @@ type PageCommonProps = {
55
55
  * Optional because normal published rendering does not have or need one.
56
56
  */
57
57
  previewToken?: string | null;
58
+ readAuthority?: import('../../../../blocks/src/api').BrowserReadAuthority;
58
59
  /**
59
60
  * Additional context data for content entry pages.
60
61
  * Used to pass occurrence context and content entry data to blocks.
61
62
  */
62
63
  dataContext?: {
64
+ readAuthority?: import('../../../../blocks/src/api').BrowserReadAuthority;
63
65
  /** Mailing-list runtime projected for the placements on this page. */
64
66
  mailingList?: import('../../../../core/src/index').MailingListRuntimeContext;
65
67
  /** Occurrence context for event pages (from URL like /events/yoga/2025-01-15) */
@@ -1,9 +1,10 @@
1
- import type { BlockApiConfig } from '../../../../../blocks/src/api';
1
+ import { type BlockApiConfig, type BrowserReadAuthority } from '../../../../../blocks/src/api';
2
2
  export type RouteIslandApiConfigInput = Readonly<{
3
3
  apiBaseUrl: string;
4
4
  portalToken?: string | null;
5
5
  previewToken?: string | null;
6
6
  siteId: string;
7
7
  stage?: 'preview' | 'published';
8
+ readAuthority?: BrowserReadAuthority;
8
9
  }>;
9
- export declare function buildRouteIslandApiConfig({ apiBaseUrl, portalToken, previewToken, siteId, stage, }: RouteIslandApiConfigInput): BlockApiConfig;
10
+ export declare function buildRouteIslandApiConfig({ apiBaseUrl, portalToken, previewToken, siteId, stage, readAuthority, }: RouteIslandApiConfigInput): BlockApiConfig;
@@ -1,7 +1,9 @@
1
1
  import { type ComponentType } from 'react';
2
+ import type { BrowserReadAuthority } from '../../../../../blocks/src/api';
2
3
  type IslandPropsWithApi = Readonly<{
3
4
  siteId?: string;
4
5
  apiBaseUrl?: string;
6
+ readAuthority?: BrowserReadAuthority;
5
7
  stage?: 'preview' | 'published';
6
8
  }>;
7
9
  export declare function mountShopBlockIsland<TProps extends IslandPropsWithApi>(root: HTMLElement, props: TProps, Component: ComponentType<TProps>, label: string): (() => void) | undefined;
@@ -17,6 +17,7 @@ export type BlockOverrideProps<TContent = Record<string, unknown>, TData = Recor
17
17
  apiBaseUrl?: string;
18
18
  portalToken?: string | null;
19
19
  previewToken?: string | null;
20
+ readAuthority?: import('../../../blocks/src/api').BrowserReadAuthority;
20
21
  stage?: 'published' | 'preview';
21
22
  occurrenceContext?: OccurrenceContextData | null;
22
23
  entrySubrouteContext?: EntrySubrouteContextData | null;
@@ -8,4 +8,4 @@
8
8
  * 1. This constant
9
9
  * 2. The "version" field in package.json
10
10
  */
11
- export declare const SDK_VERSION = "0.143.0";
11
+ export declare const SDK_VERSION = "0.144.0";
@@ -12,6 +12,6 @@
12
12
  * overriding the twelve styles that deliberately declare none. Whether a button
13
13
  * carries a trailing affordance is the style's decision; the only caller that
14
14
  * legitimately opts out is the authored-button renderer, which reaches it
15
- * through `themeButtonClassNameWithTrailingIcon`.
15
+ * through `themeButtonExtraClassesWithTrailingIcon`.
16
16
  */
17
17
  export declare const AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
@@ -1,14 +1,6 @@
1
1
  import { type ButtonSizeName, type DefaultVariantAliasId, type VariantId } from './types';
2
2
  export type ThemeButtonVariantId = VariantId | DefaultVariantAliasId;
3
- export type ThemeButtonClassName = string & {
4
- readonly __brand: 'ThemeButtonClassName';
5
- };
6
3
  export type ThemeButtonSizeClassName = `btn-${ButtonSizeName}`;
7
- export type ThemeButtonClassSpec = Readonly<{
8
- variant: ThemeButtonVariantId;
9
- size: ButtonSizeName;
10
- extraClassName?: string | null;
11
- }>;
12
4
  /**
13
5
  * Parse content/runtime variant identifiers into the closed theme-button class
14
6
  * contract. Empty input is the intentional local/unstyled escape hatch used by
@@ -18,12 +10,10 @@ export declare function parseThemeButtonVariantId(value: string | null | undefin
18
10
  export declare function themeButtonVariantClassNames(variant: ThemeButtonVariantId): readonly [string] | readonly [string, string];
19
11
  export declare function themeButtonSizeClassName(size: ButtonSizeName): ThemeButtonSizeClassName;
20
12
  export declare function themeButtonSelector(variant: ThemeButtonVariantId, size?: ButtonSizeName): string;
21
- export declare function themeButtonClassName(spec: ThemeButtonClassSpec): ThemeButtonClassName;
22
13
  /**
23
- * Button classes for an authored button that renders its own trailing icon.
14
+ * Extra classes for an authored button that renders its own trailing icon.
24
15
  *
25
- * A separate function rather than a flag on `themeButtonClassName`, because
26
- * there is exactly one caller and it should stay visible in a diff. The name
16
+ * This intent-named function has exactly one caller. The name
27
17
  * states what the caller knows to be true of its own markup — that it renders a
28
18
  * trailing icon — rather than what the theme does about it. The consequence is
29
19
  * the theme's to decide and to change; a caller naming the consequence would be
@@ -34,4 +24,4 @@ export declare function themeButtonClassName(spec: ThemeButtonClassSpec): ThemeB
34
24
  * affordance is declared by the button style, and a block overriding that is the
35
25
  * defect this replaced.
36
26
  */
37
- export declare function themeButtonClassNameWithTrailingIcon(spec: ThemeButtonClassSpec): ThemeButtonClassName;
27
+ export declare function themeButtonExtraClassesWithTrailingIcon(): string;
@@ -9,4 +9,4 @@ export { selectorSchema, declarationValueSchema, declarationsSchema, customCssRu
9
9
  export { keyframesAtRuleSchema, fontFaceAtRuleSchema, mediaAtRuleSchema, supportsAtRuleSchema, rawAtRuleSchema, customCssAtRuleSchema, customCssAtRulesSchema, type KeyframesAtRuleInput, type FontFaceAtRuleInput, type MediaAtRuleInput, type SupportsAtRuleInput, type RawAtRuleInput, type CustomCssAtRuleInput, } from './atRuleValidation';
10
10
  export { compileCustomCssRules, compileBlockCustomCssRules, } from './compile';
11
11
  export { compileCustomCssAtRules } from './compileAtRules';
12
- export { type CssRulePatch, generateCssRuleId, applyCssRulePatch, applyCssRulePatches, diffCssRules, } from './patch';
12
+ export { type CssRulePatch, applyCssRulePatch, applyCssRulePatches, diffCssRules, } from './patch';
@@ -19,11 +19,6 @@ export type CssRulePatch = {
19
19
  ruleId: string;
20
20
  changes: Partial<Omit<CustomCssRule, 'id'>>;
21
21
  };
22
- /**
23
- * Generate a unique ID for a new CSS rule.
24
- * Uses timestamp + random suffix for uniqueness.
25
- */
26
- export declare function generateCssRuleId(): string;
27
22
  /**
28
23
  * Apply a single patch operation to a rules array.
29
24
  *