@riverbankcms/sdk 0.109.0 → 0.111.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 (186) hide show
  1. package/dist/{PreviewEditorSidebar-DWqwfy3_.mjs → PreviewEditorSidebar-CTR6LUhN.mjs} +178 -117
  2. package/dist/{PreviewEditorUI-B7OL4sfR.mjs → PreviewEditorUI-DZg15Zip.mjs} +3 -4
  3. package/dist/{PreviewQueryProvider-D0y2l8JN.mjs → PreviewQueryProvider-kkmjklLG.mjs} +1 -1
  4. package/dist/{SdkPreviewModeRuntime-D8Gt9Gbe.mjs → SdkPreviewModeRuntime-DeOTAFvR.mjs} +229 -219
  5. package/dist/{SiteChromeCustomizeContext-DUpalEdL.mjs → SiteChromeCustomizeContext-DOSDLCiJ.mjs} +1695 -2169
  6. package/dist/_dts/ai/src/contracts/proposals.d.ts +1716 -76
  7. package/dist/_dts/api/src/commercePortalEndpoints.d.ts +5 -5
  8. package/dist/_dts/api/src/contentRuntime.d.ts +4 -1
  9. package/dist/_dts/api/src/courses.d.ts +30 -15
  10. package/dist/_dts/api/src/endpoints.d.ts +14 -4
  11. package/dist/_dts/api/src/index.d.ts +2 -2
  12. package/dist/_dts/api/src/sdkContracts.d.ts +23 -11
  13. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +5 -1
  14. package/dist/_dts/api/src/siteOperations.d.ts +11 -19
  15. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +6 -6
  16. package/dist/_dts/api/src/webhooks.d.ts +98 -1
  17. package/dist/_dts/billing/src/site-arrangements.d.ts +3 -0
  18. package/dist/_dts/blocks/src/client/course-registration.d.ts +4 -1
  19. package/dist/_dts/blocks/src/client.d.ts +4 -1
  20. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
  21. package/dist/_dts/blocks/src/index.d.ts +3 -1
  22. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +2 -1
  23. package/dist/_dts/blocks/src/system/blocks/courses/shared/types.d.ts +2 -1
  24. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +2 -4
  25. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +2 -1
  26. package/dist/_dts/blocks/src/system/blocks/events/event-listing.d.ts +2 -1
  27. package/dist/_dts/blocks/src/system/blocks/events/event-spotlight.d.ts +2 -1
  28. package/dist/_dts/blocks/src/system/blocks/events/recurring-schedule.d.ts +3 -2
  29. package/dist/_dts/blocks/src/system/blocks/events/shared/types.d.ts +2 -1
  30. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +2 -1
  31. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +2 -1
  32. package/dist/_dts/blocks/src/system/blocks/shop.d.ts +2 -1
  33. package/dist/_dts/blocks/src/system/blocks/single-button.d.ts +2 -1
  34. package/dist/_dts/blocks/src/system/constants/buttonRoles.d.ts +35 -0
  35. package/dist/_dts/blocks/src/system/fields/button.d.ts +10 -21
  36. package/dist/_dts/blocks/src/system/fields/ctas.d.ts +2 -1
  37. package/dist/_dts/blocks/src/system/fragments/library/heroCtaRow.d.ts +9 -5
  38. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +18 -18
  39. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +9 -9
  40. package/dist/_dts/blocks/src/system/runtime/hooks/useHeadlessWholeSeriesRegistrationFlow.d.ts +29 -0
  41. package/dist/_dts/blocks/src/system/runtime/nodes/buttonAffordance.d.ts +1 -1
  42. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/ErrorStep.d.ts +2 -1
  43. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/PaymentFailedStep.d.ts +2 -1
  44. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/VerifyingTimeoutStep.d.ts +2 -1
  45. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/types.d.ts +21 -0
  46. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/useCourseRegistrationWizard.d.ts +4 -4
  47. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/whole-series-registration.headless.contract.d.ts +326 -0
  48. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration/whole-series-registration.headless.planning.d.ts +27 -0
  49. package/dist/_dts/blocks/src/system/runtime/nodes/course-registration.interactive.d.ts +5 -4
  50. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/event-registration.headless.contract.d.ts +3 -2
  51. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration/types.d.ts +2 -1
  52. package/dist/_dts/blocks/src/system/runtime/nodes/event-registration.interactive.d.ts +5 -4
  53. package/dist/_dts/blocks/src/system/runtime/nodes/file-download.d.ts +2 -3
  54. package/dist/_dts/blocks/src/system/runtime/nodes/newsletter-form.types.d.ts +2 -1
  55. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +6 -3
  56. package/dist/_dts/blocks/src/system/runtime/nodes/shop.interactive.d.ts +7 -6
  57. package/dist/_dts/blocks/src/system/runtime/nodes/shop.types.d.ts +2 -1
  58. package/dist/_dts/blocks/src/system/runtime/shared/types.d.ts +2 -1
  59. package/dist/_dts/content-editor/src/FooterComposerPanel.d.ts +4 -2
  60. package/dist/_dts/content-editor/src/index.d.ts +12 -12
  61. package/dist/_dts/content-editor/src/ui/editorUiStore.d.ts +17 -2
  62. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +221 -53
  63. package/dist/_dts/editor-blocks/src/widgets/button/context.d.ts +3 -2
  64. package/dist/_dts/preview-next/src/client/index.d.ts +3 -2
  65. package/dist/_dts/preview-next/src/client/preview/ButtonStylePicker.d.ts +16 -0
  66. package/dist/_dts/preview-next/src/client/preview/PageBlockEditorPanel.d.ts +2 -3
  67. package/dist/_dts/preview-next/src/client/preview/PreviewDesignOpenRequestContext.d.ts +7 -0
  68. package/dist/_dts/preview-next/src/client/preview/PreviewEditorSidebar.d.ts +5 -11
  69. package/dist/_dts/preview-next/src/client/preview/PreviewShell.d.ts +5 -6
  70. package/dist/_dts/preview-next/src/client/preview/PreviewShellLayout.d.ts +6 -7
  71. package/dist/_dts/preview-next/src/client/preview/SiteChromeCustomizeContext.d.ts +7 -9
  72. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.d.ts +4 -11
  73. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +7 -7
  74. package/dist/_dts/preview-next/src/client/preview/sidebarTabPreference.d.ts +0 -8
  75. package/dist/_dts/preview-next/src/client/preview/siteChromeLookRows.d.ts +1 -11
  76. package/dist/_dts/preview-next/src/client/preview/siteChromeQuickControlHistoryState.d.ts +1 -5
  77. package/dist/_dts/preview-next/src/client/preview/siteChromeSavePlan.d.ts +2 -3
  78. package/dist/_dts/preview-next/src/client/preview/siteStylePreviewPlanner.d.ts +3 -4
  79. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorSnapshot.d.ts +3 -5
  80. package/dist/_dts/sdk/src/bookings/index.d.ts +5 -4
  81. package/dist/_dts/sdk/src/bookings/types.d.ts +3 -3
  82. package/dist/_dts/sdk/src/cli/commands/style.d.ts +3 -2
  83. package/dist/_dts/sdk/src/client/management/types.d.ts +2 -1
  84. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +12 -15
  85. package/dist/_dts/sdk/src/public-api/contracts.d.ts +1 -1
  86. package/dist/_dts/sdk/src/version.d.ts +1 -1
  87. package/dist/_dts/sdk/src/webhooks/index.d.ts +1 -1
  88. package/dist/_dts/sdk/src/webhooks/verify.d.ts +3 -3
  89. package/dist/_dts/site-commands/src/commands.d.ts +129 -6
  90. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/buttons/styles/domain.d.ts +80 -0
  92. package/dist/_dts/theme-core/src/buttons/styles/index.d.ts +3 -0
  93. package/dist/_dts/theme-core/src/buttons/styles/recipes/defineStaticButtonStyleRecipe.d.ts +49 -0
  94. package/dist/_dts/theme-core/src/buttons/styles/recipes/quietArrow.d.ts +67 -0
  95. package/dist/_dts/theme-core/src/buttons/styles/recipes/staticRecipes.d.ts +649 -0
  96. package/dist/_dts/theme-core/src/buttons/styles/registry.d.ts +753 -0
  97. package/dist/_dts/theme-core/src/buttons/styles/selection.d.ts +69 -0
  98. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +26 -24
  99. package/dist/_dts/theme-core/src/site-styles/footerLooks.d.ts +19 -153
  100. package/dist/_dts/theme-core/src/site-styles/headerCtaVariants.d.ts +3 -1
  101. package/dist/_dts/theme-core/src/site-styles/previewCompiler.d.ts +8 -9
  102. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +4 -4
  103. package/dist/_dts/ui/src/palette/hex.d.ts +3 -3
  104. package/dist/cli/index.mjs +1760 -1914
  105. package/dist/cli/init-docs/content/workflow-isr-revalidation.md +1 -1
  106. package/dist/client/{DiscountCodeDisclosure-DU1ygxU2.mjs → DiscountCodeDisclosure-C4xvTBux.mjs} +1 -1
  107. package/dist/client/{EventCombined.client-DB5zagCo.mjs → EventCombined.client-Cr7G131j.mjs} +2 -3
  108. package/dist/client/{EventListing.client-CTX9JHBL.mjs → EventListing.client-CAjbseNy.mjs} +2 -2
  109. package/dist/client/{LeafletStaticMap-BYImhgiB.mjs → LeafletStaticMap-BMlWfwz3.mjs} +1 -1
  110. package/dist/client/{MagicLinkForm-CRkw_M3l.mjs → MagicLinkForm-ChdFz96y.mjs} +1 -2
  111. package/dist/client/{StepIndicator-BnmVBJJh.mjs → StepIndicator-7D3GaBeM.mjs} +2 -2
  112. package/dist/client/{accordion-CeGreumd.mjs → accordion-D8JTs2Si.mjs} +1 -1
  113. package/dist/client/{bookingForm-CSzFNrpN.mjs → bookingForm-H3DCRBHs.mjs} +6 -7
  114. package/dist/client/bookings.mjs +3069 -1447
  115. package/dist/client/{carousel-B2jDtogf.mjs → carousel-DMr_QWlz.mjs} +1 -1
  116. package/dist/client/{cart-D-jZ-vaY.mjs → cart-DWMbfBdR.mjs} +3 -3
  117. package/dist/client/{checkout-Dza-LA7N.mjs → checkout-zmfdkXLx.mjs} +3 -3
  118. package/dist/client/client.mjs +1732 -1913
  119. package/dist/client/{colorStyles-CrgzoXsm.mjs → colorStyles-gcTh5yZT.mjs} +2 -12
  120. package/dist/client/{colorTokenParts-CMugwvX_.mjs → colorTokenParts-FSS3al6l.mjs} +31 -1
  121. package/dist/client/{courseRegistration-TYkNychb.mjs → courseRegistration-Z_mn18jy.mjs} +100 -37
  122. package/dist/client/{eventCalendar-BI_90SsT.mjs → eventCalendar-CYp0YJGF.mjs} +4 -5
  123. package/dist/client/{eventCombined-mNrpryE9.mjs → eventCombined-rKyYZUa9.mjs} +2 -2
  124. package/dist/client/{eventDetails-D4GVlCIY.mjs → eventDetails-X0ZaUuMj.mjs} +3 -3
  125. package/dist/client/{eventListing-YhKN018y.mjs → eventListing-W1SuL7EP.mjs} +2 -2
  126. package/dist/client/{eventRegistration-CdHGtilr.mjs → eventRegistration-ClWricui.mjs} +6 -7
  127. package/dist/client/{form-AcAL45rA.mjs → form--eKPwAAD.mjs} +1 -2
  128. package/dist/client/{headerSection-uEC52ueD.mjs → headerSection-BSeGr-FS.mjs} +2 -3
  129. package/dist/client/hooks.mjs +1554 -1871
  130. package/dist/client/{locationMap-_wJDSUYe.mjs → locationMap-BpOrtNYn.mjs} +8 -5
  131. package/dist/client/{media-BK0O3b-U.mjs → media-DoF0dcVx.mjs} +2 -2
  132. package/dist/client/{newsletterForm-DrArsb2B.mjs → newsletterForm-Bt7it7Dy.mjs} +1 -2
  133. package/dist/client/{pricing-BSYVghwo.mjs → pricing-BTjSDDr4.mjs} +1 -1
  134. package/dist/client/{productDetail-Dyk90sMs.mjs → productDetail-ICnVTcCg.mjs} +3 -3
  135. package/dist/client/{productList-BCKThwAI.mjs → productList-ZHr6D604.mjs} +3 -3
  136. package/dist/client/{propsDecoder-CkXxkdSR.mjs → propsDecoder-wWN0tBDF.mjs} +2351 -129
  137. package/dist/client/rendering/client.mjs +1664 -1824
  138. package/dist/client/rendering/islands.mjs +20 -20
  139. package/dist/client/rendering.mjs +1697 -1909
  140. package/dist/client/{shop-DeltVH10.mjs → shop-C1u_BUn0.mjs} +5 -6
  141. package/dist/client/{shop-commerce-BD9Jsm2Z.mjs → shop-commerce-CleZdRha.mjs} +5 -6
  142. package/dist/client/{shop-commerce-store-CmXD6FDS.mjs → shop-commerce-store-ycnoB2Ce.mjs} +1 -1
  143. package/dist/client/{shopShared-B8v-lH_F.mjs → shopShared-CPhByt2a.mjs} +3 -3
  144. package/dist/client/{useDiscountCodeUi-DbWJN8ld.mjs → useDiscountCodeUi-cStSQI6C.mjs} +1 -1
  145. package/dist/client/{useEventFilters-EJIMUnqT.mjs → useEventFilters-DKPN7hSY.mjs} +26 -27
  146. package/dist/client/{usePolling-Cmh14fc7.mjs → usePolling-BKAd6pkZ.mjs} +2 -2
  147. package/dist/preview-next/before-render.mjs +37 -6
  148. package/dist/preview-next/client/runtime.mjs +4 -4
  149. package/dist/preview-next/middleware.mjs +37 -6
  150. package/dist/{previewAuthStore-CTO7CRPk.mjs → previewAuthStore-BkT1D06A.mjs} +37 -6
  151. package/dist/{sdk-runtime-Dou0GAav.mjs → sdk-runtime-hu3wr3ng.mjs} +2 -2
  152. package/dist/{separator-CI5wZNXT.mjs → separator-Bln8izQ9.mjs} +1 -1
  153. package/dist/server/components.mjs +1472 -1788
  154. package/dist/server/config-validation.mjs +1559 -1876
  155. package/dist/server/config.mjs +1559 -1876
  156. package/dist/server/data.mjs +1554 -1871
  157. package/dist/server/index.mjs +38 -7
  158. package/dist/server/next/revalidate.mjs +53 -1
  159. package/dist/server/next.mjs +1584 -1869
  160. package/dist/server/page-converter.mjs +1543 -1860
  161. package/dist/server/prebuild.mjs +1 -1
  162. package/dist/server/rendering/server.mjs +1472 -1788
  163. package/dist/server/rendering.mjs +1472 -1788
  164. package/dist/server/routing.mjs +1600 -1891
  165. package/dist/server/server.mjs +1574 -1860
  166. package/dist/server/theme-bridge.mjs +1436 -1619
  167. package/dist/server/theme.mjs +1345 -1241
  168. package/dist/server/webhooks.mjs +54 -2
  169. package/package.json +1 -1
  170. package/dist/_dts/theme-core/src/buttons/personalities/brushed-wash.d.ts +0 -16
  171. package/dist/_dts/theme-core/src/buttons/personalities/confident-chip.d.ts +0 -16
  172. package/dist/_dts/theme-core/src/buttons/personalities/earth-pill.d.ts +0 -16
  173. package/dist/_dts/theme-core/src/buttons/personalities/editorial-link.d.ts +0 -16
  174. package/dist/_dts/theme-core/src/buttons/personalities/flat-ink.d.ts +0 -20
  175. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +0 -172
  176. package/dist/_dts/theme-core/src/buttons/personalities/ink-stamp.d.ts +0 -16
  177. package/dist/_dts/theme-core/src/buttons/personalities/joy-stamp.d.ts +0 -22
  178. package/dist/_dts/theme-core/src/buttons/personalities/ornate-ritual.d.ts +0 -16
  179. package/dist/_dts/theme-core/src/buttons/personalities/pebble.d.ts +0 -16
  180. package/dist/_dts/theme-core/src/buttons/personalities/quiet-arrow.d.ts +0 -17
  181. package/dist/_dts/theme-core/src/buttons/personalities/showtime-pill.d.ts +0 -17
  182. package/dist/_dts/theme-core/src/buttons/personalities/soft-pill.d.ts +0 -16
  183. package/dist/_dts/theme-core/src/buttons/personalities/two-tone-pill.d.ts +0 -17
  184. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +0 -285
  185. package/dist/client/buttons-DoFV7KDL.mjs +0 -2115
  186. package/dist/client/foregroundContract-xICPq59x.mjs +0 -31
@@ -2265,6 +2265,24 @@ const API_ENDPOINTS$1 = {
2265
2265
  auth: "user",
2266
2266
  responseKind: "json"
2267
2267
  },
2268
+ publishEventOfferingPageSurface: {
2269
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
2270
+ method: "POST",
2271
+ errors: [
2272
+ "auth:forbidden",
2273
+ "validation:invalid_input",
2274
+ "resource:not_found",
2275
+ "resource:conflict",
2276
+ "server:internal_error"
2277
+ ],
2278
+ tags: [
2279
+ TAG_TEMPLATES.siteCollection,
2280
+ TAG_TEMPLATES.siteRoutableContent,
2281
+ TAG_TEMPLATES.pageSurfaceById
2282
+ ],
2283
+ auth: "user",
2284
+ responseKind: "json"
2285
+ },
2268
2286
  runSdkWorkflow: {
2269
2287
  path: "/sites/{siteId}/content/{type}/{entryId}/workflows/{workflowId}/run",
2270
2288
  method: "POST",
@@ -6127,8 +6145,8 @@ const API_ENDPOINTS$1 = {
6127
6145
  auth: "user",
6128
6146
  responseKind: "blob"
6129
6147
  },
6130
- adminSiteCost: {
6131
- path: "/admin/sites/{siteId}/cost",
6148
+ adminSiteBillingArrangement: {
6149
+ path: "/admin/sites/{siteId}/billing/arrangement",
6132
6150
  method: "GET",
6133
6151
  tags: [
6134
6152
  "admin",
@@ -6136,10 +6154,16 @@ const API_ENDPOINTS$1 = {
6136
6154
  "billing"
6137
6155
  ],
6138
6156
  auth: "admin",
6139
- responseKind: "json"
6157
+ responseKind: "json",
6158
+ errors: [
6159
+ "validation:invalid_input",
6160
+ "auth:forbidden",
6161
+ "resource:not_found",
6162
+ "server:internal_error"
6163
+ ]
6140
6164
  },
6141
- adminUpdateSiteCost: {
6142
- path: "/admin/sites/{siteId}/cost",
6165
+ adminUpdateSiteBillingArrangement: {
6166
+ path: "/admin/sites/{siteId}/billing/arrangement",
6143
6167
  method: "POST",
6144
6168
  tags: [
6145
6169
  "admin",
@@ -6147,7 +6171,14 @@ const API_ENDPOINTS$1 = {
6147
6171
  "billing"
6148
6172
  ],
6149
6173
  auth: "admin",
6150
- responseKind: "json"
6174
+ responseKind: "json",
6175
+ errors: [
6176
+ "validation:invalid_input",
6177
+ "auth:forbidden",
6178
+ "resource:not_found",
6179
+ "resource:conflict",
6180
+ "server:internal_error"
6181
+ ]
6151
6182
  },
6152
6183
  adminScheduleBillingComponentEnd: {
6153
6184
  path: "/admin/sites/{siteId}/billing/components/{componentId}/end",
@@ -8338,7 +8369,7 @@ function formatKeyAsLabel(key) {
8338
8369
  return key.replace(/([A-Z])/g, " $1").replace(/[-_]/g, " ").trim().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
8339
8370
  }
8340
8371
  var init_augmentManifest = __esmMin((() => {}));
8341
- var init_types$18 = __esmMin((() => {}));
8372
+ var init_types$17 = __esmMin((() => {}));
8342
8373
  //#endregion
8343
8374
  //#region ../media-core/src/fileSafety.ts
8344
8375
  function containsUnsafePathSegmentCharacter(value) {
@@ -8965,7 +8996,7 @@ var init_legacyMediaValue = __esmMin((() => {}));
8965
8996
  //#endregion
8966
8997
  //#region ../media-core/src/index.ts
8967
8998
  var init_src$2 = __esmMin((() => {
8968
- init_types$18();
8999
+ init_types$17();
8969
9000
  init_fileDomain();
8970
9001
  init_fileStorage();
8971
9002
  init_storagePathDomain();
@@ -12437,7 +12468,7 @@ function defineBlockDesignCapability(capability) {
12437
12468
  };
12438
12469
  }
12439
12470
  var plainFrame, tileTreatmentValues, eventListTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues, headingDecorationOverrideValues, headingDecorationColorTokenValues, noHeadingDecoration, accordionIconSetValues, accordionIconColorTokenValues, accordionIconMotionValues;
12440
- var init_types$17 = __esmMin((() => {
12471
+ var init_types$16 = __esmMin((() => {
12441
12472
  plainFrame = { kind: "plain" };
12442
12473
  tileTreatmentValues = [
12443
12474
  "default",
@@ -12502,14 +12533,14 @@ function defineBlockAppearancePreset(preset) {
12502
12533
  return preset;
12503
12534
  }
12504
12535
  var init_appearancePresetResolution = __esmMin((() => {
12505
- init_types$17();
12536
+ init_types$16();
12506
12537
  }));
12507
12538
  //#endregion
12508
12539
  //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
12509
12540
  var blockAppearancePresets;
12510
12541
  var init_blockAppearancePresets = __esmMin((() => {
12511
12542
  init_appearancePresetResolution();
12512
- init_types$17();
12543
+ init_types$16();
12513
12544
  blockAppearancePresets = [
12514
12545
  defineBlockAppearancePreset({
12515
12546
  kind: "block-design",
@@ -13322,7 +13353,7 @@ function assertUniqueLayoutProfileKeys(profiles) {
13322
13353
  if (duplicates.length > 0) throw new Error(`Duplicate block layout design profiles: ${duplicates.join(", ")}`);
13323
13354
  }
13324
13355
  var init_blockFlow = __esmMin((() => {
13325
- init_types$17();
13356
+ init_types$16();
13326
13357
  }));
13327
13358
  var init_classic_professional = __esmMin((() => {}));
13328
13359
  //#endregion
@@ -13809,7 +13840,7 @@ var init_all = __esmMin((() => {
13809
13840
  }));
13810
13841
  //#endregion
13811
13842
  //#region ../theme-core/src/palette/types.ts
13812
- var init_types$16 = __esmMin((() => {}));
13843
+ var init_types$15 = __esmMin((() => {}));
13813
13844
  //#endregion
13814
13845
  //#region ../../node_modules/.pnpm/@vibrant+image@4.0.4/node_modules/@vibrant/image/dist/esm/histogram.js
13815
13846
  var Histogram;
@@ -15262,7 +15293,7 @@ function defineCuratedPalette(input) {
15262
15293
  };
15263
15294
  }
15264
15295
  var curatedPaletteAuthoringKeySchema;
15265
- var init_types$15 = __esmMin((() => {
15296
+ var init_types$14 = __esmMin((() => {
15266
15297
  init_styleTags();
15267
15298
  init_themeColorTokens();
15268
15299
  init_colors();
@@ -15303,7 +15334,7 @@ var init_types$15 = __esmMin((() => {
15303
15334
  //#region ../theme-core/src/palette/curated/brand-led.ts
15304
15335
  var brandLedCool, brandLedWarm, brandLedJewel, brandLedSpruce, brandLedBurgundyGold;
15305
15336
  var init_brand_led = __esmMin((() => {
15306
- init_types$15();
15337
+ init_types$14();
15307
15338
  brandLedCool = defineCuratedPalette({
15308
15339
  authoringKey: "brand-led-cool",
15309
15340
  name: "Brand-led — Cool",
@@ -15634,7 +15665,7 @@ var init_brand_led = __esmMin((() => {
15634
15665
  //#region ../theme-core/src/palette/curated/high-contrast.ts
15635
15666
  var highContrastInk, highContrastCharcoal, highContrastMonochrome;
15636
15667
  var init_high_contrast = __esmMin((() => {
15637
- init_types$15();
15668
+ init_types$14();
15638
15669
  highContrastInk = defineCuratedPalette({
15639
15670
  authoringKey: "high-contrast-ink",
15640
15671
  name: "High Contrast — Ink",
@@ -15835,7 +15866,7 @@ var init_high_contrast = __esmMin((() => {
15835
15866
  //#region ../theme-core/src/palette/curated/soft-natural.ts
15836
15867
  var softNaturalSage, softNaturalStone, softNaturalWatercolor, softNaturalLilac;
15837
15868
  var init_soft_natural = __esmMin((() => {
15838
- init_types$15();
15869
+ init_types$14();
15839
15870
  softNaturalSage = defineCuratedPalette({
15840
15871
  authoringKey: "soft-natural-sage",
15841
15872
  name: "Soft Natural — Sage",
@@ -16101,7 +16132,7 @@ var init_soft_natural = __esmMin((() => {
16101
16132
  //#region ../theme-core/src/palette/curated/warm-neutral.ts
16102
16133
  var warmNeutralClay, warmNeutralCream, warmNeutralSoftEarth, warmNeutralForest;
16103
16134
  var init_warm_neutral = __esmMin((() => {
16104
- init_types$15();
16135
+ init_types$14();
16105
16136
  warmNeutralClay = defineCuratedPalette({
16106
16137
  authoringKey: "warm-neutral-clay",
16107
16138
  name: "Warm Neutral — Clay",
@@ -16367,7 +16398,7 @@ var init_warm_neutral = __esmMin((() => {
16367
16398
  //#region ../theme-core/src/palette/curated/warm-dark.ts
16368
16399
  var warmDarkEmber, warmDarkKirtanGold;
16369
16400
  var init_warm_dark = __esmMin((() => {
16370
- init_types$15();
16401
+ init_types$14();
16371
16402
  warmDarkEmber = defineCuratedPalette({
16372
16403
  authoringKey: "warm-dark-ember",
16373
16404
  name: "Warm Dark — Ember",
@@ -16533,7 +16564,7 @@ var init_curated = __esmMin((() => {
16533
16564
  init_soft_natural();
16534
16565
  init_warm_neutral();
16535
16566
  init_warm_dark();
16536
- init_types$15();
16567
+ init_types$14();
16537
16568
  curatedPalettes = [
16538
16569
  admitCuratedPaletteDefinition(brandLedCool),
16539
16570
  admitCuratedPaletteDefinition(brandLedWarm),
@@ -16579,7 +16610,7 @@ var init_curated = __esmMin((() => {
16579
16610
  var init_resolveSelection = __esmMin((() => {
16580
16611
  init_curated();
16581
16612
  })), sitePaletteIdSchema, sitePaletteVersionSchema, paletteSelectionSchema, onboardingPaletteOriginSchema, curatedForkPaletteOriginSchema, manualPaletteOriginSchema, legacyCustomizedPaletteOriginSchema, sitePaletteOriginSchema, editorSitePaletteOriginSchema;
16582
- var init_selection = __esmMin((() => {
16613
+ var init_selection$1 = __esmMin((() => {
16583
16614
  init_colors();
16584
16615
  init_curated();
16585
16616
  sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
@@ -16646,12 +16677,12 @@ var init_persistenceReadSource = __esmMin((() => {
16646
16677
  init_curated();
16647
16678
  init_colors();
16648
16679
  init_resolveSelection();
16649
- init_selection();
16680
+ init_selection$1();
16650
16681
  }));
16651
16682
  var init_sitePalettePersistence = __esmMin((() => {
16652
16683
  init_curated();
16653
16684
  init_colors();
16654
- init_selection();
16685
+ init_selection$1();
16655
16686
  }));
16656
16687
  var init_fromVibrant = __esmMin((() => {
16657
16688
  init_utils$6();
@@ -16665,7 +16696,7 @@ var init_palette$1 = __esmMin((() => {
16665
16696
  init_generateCssVars();
16666
16697
  init_generateShades();
16667
16698
  init_neutralScale();
16668
- init_types$16();
16699
+ init_types$15();
16669
16700
  init_utils$6();
16670
16701
  init_paletteAccess();
16671
16702
  init_extractPalette();
@@ -16674,7 +16705,7 @@ var init_palette$1 = __esmMin((() => {
16674
16705
  init_libraryModel();
16675
16706
  init_persistenceReadSource();
16676
16707
  init_resolveSelection();
16677
- init_selection();
16708
+ init_selection$1();
16678
16709
  init_sitePalettePersistence();
16679
16710
  init_fromVibrant();
16680
16711
  init_suggestRecipes();
@@ -16906,7 +16937,7 @@ var init_backgroundAppearance = __esmMin((() => {
16906
16937
  backgroundAppearanceColorTokenNameSet = new Set(backgroundAppearanceColorTokenNames);
16907
16938
  }));
16908
16939
  var init_compositionBudget = __esmMin((() => {
16909
- init_types$17();
16940
+ init_types$16();
16910
16941
  }));
16911
16942
  var init_schemaVersionedJson = __esmMin((() => {}));
16912
16943
  //#endregion
@@ -16924,7 +16955,7 @@ function boundaryRuntimeMetricsForTransition(transition) {
16924
16955
  }
16925
16956
  var sectionBoundaryRuntimeMetricsByTransition, noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
16926
16957
  var init_sectionTransitions = __esmMin((() => {
16927
- init_types$17();
16958
+ init_types$16();
16928
16959
  sectionBoundaryRuntimeMetricsByTransition = {
16929
16960
  none: null,
16930
16961
  "soft-fade-short": boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"),
@@ -17013,7 +17044,7 @@ function boundaryKey$1(previousBlockId, nextBlockId) {
17013
17044
  }
17014
17045
  var pageDesignUserPinnedAppearanceChoiceSchema, pageDesignUserPinnedBoundaryChoiceSchema, pageDesignBoundaryTreatmentSchema, pageDesignUserPinnedBoundaryTreatmentChoiceSchema, pageDesignBlockLookPinSchema, pageDesignBoundaryPinSchema, legacyPageDesignBoundaryPinSchema;
17015
17046
  var init_pageDesignIntent = __esmMin((() => {
17016
- init_types$17();
17047
+ init_types$16();
17017
17048
  init_schemaVersionedJson();
17018
17049
  init_sectionTransitions();
17019
17050
  asBoundaryOptionId("break:unknown");
@@ -17118,7 +17149,7 @@ var init_pageDesignIntent = __esmMin((() => {
17118
17149
  var init_contentTemplateDesignIntent = __esmMin((() => {
17119
17150
  init_pageDesignIntent();
17120
17151
  init_sectionTransitions();
17121
- init_types$17();
17152
+ init_types$16();
17122
17153
  }));
17123
17154
  //#endregion
17124
17155
  //#region ../theme-core/src/buttons/effectClassification.ts
@@ -17376,7 +17407,7 @@ function isUnknownArray$3(value) {
17376
17407
  return Array.isArray(value);
17377
17408
  }
17378
17409
  var VARIANT_ROLES, DEFAULT_VARIANT_ALIAS_ID, opaqueButtonColourTokenSchema, cornerStyleSchema, shadowSizeSchema, textTransformSchema, fontWeightSchema, buttonTypographySchema, letterSpacingSchema, hoverTransformSchema, hoverColorSchema, buttonPaddingPresetSchema, gradientStyleSchema, gradientSharpnessSchema, prioritySchema, buttonSizeNameSchema, PADDING_TOKEN_PATTERN, paddingShorthandSchema, buttonSizeConfigSchema, buttonSizesSchema, canonicalButtonGlobalSettingsSchema, buttonGlobalSettingsSchema, gradientDirectionSchema$1, buttonColourTreatmentSchema, buttonBackgroundSchema, effectApplicationSchema$1, buttonBorderSchema, buttonVariantAffordanceSchema, variantShadowSchema, variantEffectsSchema, variantSizeOverridesSchema, canonicalButtonVariantSchema, buttonVariantSchema, buttonSystemSchema;
17379
- var init_types$14 = __esmMin((() => {
17410
+ var init_types$13 = __esmMin((() => {
17380
17411
  init_effectClassification();
17381
17412
  init_themeColorTokens();
17382
17413
  init_colorTokenParts();
@@ -17611,269 +17642,451 @@ var init_types$14 = __esmMin((() => {
17611
17642
  });
17612
17643
  }));
17613
17644
  //#endregion
17614
- //#region ../theme-core/src/buttons/personalities/types.ts
17615
- function asButtonPersonalityId(value) {
17616
- if (value.length === 0) throw new Error("ButtonPersonalityId must be a non-empty string");
17617
- return value;
17645
+ //#region ../theme-core/src/buttons/styles/domain.ts
17646
+ function defineButtonStyleRecipe(recipe) {
17647
+ return recipe;
17618
17648
  }
17619
- /**
17620
- * Helper for personality file modules to keep the call site short and
17621
- * type-safe. `as const satisfies ...` would also work but produces wider
17622
- * types at use sites.
17623
- */
17624
- function defineButtonPersonality(input) {
17649
+ function materializeButtonRoles(definitions) {
17650
+ const primary = materializeCompleteRole("primary", definitions.primary.appearance);
17651
+ const secondary = materializeCompleteRole("secondary", definitions.secondary.appearance);
17652
+ const completeRoles = {
17653
+ primary,
17654
+ secondary
17655
+ };
17625
17656
  return {
17626
- id: asButtonPersonalityId(input.id),
17627
- name: input.name,
17628
- description: input.description,
17629
- tags: input.tags,
17630
- buttonSystem: buttonSystemSchema.parse(input.buttonSystem)
17657
+ primary,
17658
+ secondary,
17659
+ outline: materializeSupportingRole("outline", definitions.outline, completeRoles),
17660
+ ghost: materializeSupportingRole("ghost", definitions.ghost, completeRoles),
17661
+ accent: materializeSupportingRole("accent", definitions.accent, completeRoles)
17631
17662
  };
17632
17663
  }
17633
- var buttonPersonalityIdSchema;
17634
- var init_types$13 = __esmMin((() => {
17635
- init_types$14();
17636
- init_styleTags();
17637
- buttonPersonalityIdSchema = z$1.string().min(1).transform((value) => asButtonPersonalityId(value));
17638
- z$1.object({
17639
- id: buttonPersonalityIdSchema,
17640
- name: z$1.string().min(1),
17641
- description: z$1.string().min(1),
17642
- tags: styleTagsSchema,
17643
- buttonSystem: buttonSystemSchema
17644
- });
17664
+ function resolveButtonStyleRecipe(recipe, parameters) {
17665
+ const parsedParameters = recipe.parameterSchema.safeParse(parameters);
17666
+ if (!parsedParameters.success) return {
17667
+ kind: "error",
17668
+ error: {
17669
+ kind: "invalid-parameters",
17670
+ styleId: recipe.id,
17671
+ issues: parsedParameters.error.issues.map((issue) => issue.message)
17672
+ }
17673
+ };
17674
+ const definition = recipe.defineSystem(parsedParameters.data);
17675
+ const roles = materializeButtonRoles(definition.roles);
17676
+ const buttonSystem = {
17677
+ global: definition.global,
17678
+ variants: PUBLIC_BUTTON_ROLES.map((role) => roles[role]),
17679
+ ...definition.sizes ? { sizes: definition.sizes } : {}
17680
+ };
17681
+ const parsedButtonSystem = buttonSystemSchema.safeParse(buttonSystem);
17682
+ if (!parsedButtonSystem.success) return {
17683
+ kind: "error",
17684
+ error: {
17685
+ kind: "invalid-button-system",
17686
+ styleId: recipe.id,
17687
+ issues: parsedButtonSystem.error.issues.map((issue) => issue.message)
17688
+ }
17689
+ };
17690
+ return {
17691
+ kind: "resolved",
17692
+ buttonSystem: parsedButtonSystem.data
17693
+ };
17694
+ }
17695
+ function materializeSupportingRole(role, definition, completeRoles) {
17696
+ if (definition.kind === "complete") return materializeCompleteRole(role, definition.appearance);
17697
+ return {
17698
+ ...completeRoles[definition.from],
17699
+ ...definition.overrides,
17700
+ id: role,
17701
+ name: roleName(role),
17702
+ enabled: true,
17703
+ priority: 3
17704
+ };
17705
+ }
17706
+ function materializeCompleteRole(role, appearance) {
17707
+ return {
17708
+ ...appearance,
17709
+ id: role,
17710
+ name: roleName(role),
17711
+ enabled: true,
17712
+ priority: rolePriority(role)
17713
+ };
17714
+ }
17715
+ function roleName(role) {
17716
+ return role.charAt(0).toUpperCase() + role.slice(1);
17717
+ }
17718
+ function rolePriority(role) {
17719
+ if (role === "primary") return 1;
17720
+ if (role === "secondary") return 2;
17721
+ return 3;
17722
+ }
17723
+ var PUBLIC_BUTTON_ROLES;
17724
+ var init_domain = __esmMin((() => {
17725
+ init_types$13();
17726
+ PUBLIC_BUTTON_ROLES = [
17727
+ "primary",
17728
+ "secondary",
17729
+ "outline",
17730
+ "ghost",
17731
+ "accent"
17732
+ ];
17645
17733
  }));
17646
17734
  //#endregion
17647
- //#region ../theme-core/src/buttons/personalities/brushed-wash.ts
17648
- var brushedWash;
17649
- var init_brushed_wash = __esmMin((() => {
17735
+ //#region ../theme-core/src/buttons/styles/selection.ts
17736
+ function selectionBranch(styleId, parameters) {
17737
+ return z$1.object({
17738
+ styleId: z$1.literal(styleId),
17739
+ parameters
17740
+ }).strict();
17741
+ }
17742
+ var BUTTON_STYLE_IDS, quietArrowParametersSchema, emptyParametersSchema$1, buttonStyleSelectionWireSchema, buttonStyleSelectionSchema;
17743
+ var init_selection = __esmMin((() => {
17744
+ BUTTON_STYLE_IDS = [
17745
+ "soft-pill",
17746
+ "earth-pill",
17747
+ "confident-chip",
17748
+ "editorial-link",
17749
+ "pebble",
17750
+ "ink-stamp",
17751
+ "flat-ink",
17752
+ "brushed-wash",
17753
+ "showtime-pill",
17754
+ "joy-stamp",
17755
+ "ornate-ritual",
17756
+ "quiet-arrow"
17757
+ ];
17758
+ quietArrowParametersSchema = z$1.object({ secondaryTreatment: z$1.enum(["outlined", "solid-accent"]) }).strict();
17759
+ emptyParametersSchema$1 = z$1.object({}).strict();
17760
+ buttonStyleSelectionWireSchema = z$1.discriminatedUnion("styleId", [
17761
+ selectionBranch("soft-pill", emptyParametersSchema$1),
17762
+ selectionBranch("earth-pill", emptyParametersSchema$1),
17763
+ selectionBranch("confident-chip", emptyParametersSchema$1),
17764
+ selectionBranch("editorial-link", emptyParametersSchema$1),
17765
+ selectionBranch("pebble", emptyParametersSchema$1),
17766
+ selectionBranch("ink-stamp", emptyParametersSchema$1),
17767
+ selectionBranch("flat-ink", emptyParametersSchema$1),
17768
+ selectionBranch("brushed-wash", emptyParametersSchema$1),
17769
+ selectionBranch("showtime-pill", emptyParametersSchema$1),
17770
+ selectionBranch("joy-stamp", emptyParametersSchema$1),
17771
+ selectionBranch("ornate-ritual", emptyParametersSchema$1),
17772
+ selectionBranch("quiet-arrow", quietArrowParametersSchema)
17773
+ ]);
17774
+ buttonStyleSelectionSchema = buttonStyleSelectionWireSchema;
17775
+ }));
17776
+ //#endregion
17777
+ //#region ../theme-core/src/buttons/styles/recipes/quietArrow.ts
17778
+ var quietArrowRecipe;
17779
+ var init_quietArrow = __esmMin((() => {
17780
+ init_domain();
17650
17781
  init_types$13();
17651
- brushedWash = defineButtonPersonality({
17652
- id: "brushed-wash",
17653
- name: "Brushed Wash",
17654
- description: "Watercolour-gradient buttons with soft shadows and generous padding.",
17782
+ init_selection();
17783
+ quietArrowRecipe = defineButtonStyleRecipe({
17784
+ id: "quiet-arrow",
17785
+ accessibilityLabel: "Wide uppercase buttons with trailing arrows",
17655
17786
  tags: {
17656
17787
  tone: "classic",
17657
- energy: "vibrant",
17658
- motion: "standard",
17659
- era: "organic"
17788
+ energy: "calm",
17789
+ motion: "subtle",
17790
+ era: "editorial"
17660
17791
  },
17661
- buttonSystem: {
17792
+ parameterSchema: quietArrowParametersSchema,
17793
+ defaultParameters: { secondaryTreatment: "outlined" },
17794
+ controls: [{
17795
+ kind: "choice",
17796
+ parameter: "secondaryTreatment",
17797
+ label: "Secondary button treatment",
17798
+ options: [{
17799
+ value: "outlined",
17800
+ label: "Outlined"
17801
+ }, {
17802
+ value: "solid-accent",
17803
+ label: "Solid accent"
17804
+ }]
17805
+ }],
17806
+ defineSystem: (parameters) => ({
17662
17807
  global: {
17663
17808
  cornerStyle: "rounded",
17664
- shadow: "low",
17665
- textTransform: "none",
17809
+ textTransform: "uppercase",
17666
17810
  fontWeight: 500,
17667
17811
  borderWidth: 1,
17812
+ typography: "body",
17813
+ fontSize: "text-sm",
17814
+ letterSpacing: "loose",
17668
17815
  hoverTransform: "none",
17669
17816
  hoverColor: "none"
17670
17817
  },
17671
17818
  sizes: {
17672
17819
  sm: {
17673
- padding: "0.75rem 2rem",
17820
+ padding: "0.625rem 1.25rem",
17821
+ fontSize: "text-xs"
17822
+ },
17823
+ md: {
17824
+ padding: "0.8125rem 1.75rem",
17674
17825
  fontSize: "text-sm"
17675
17826
  },
17676
- md: { padding: "1rem 2.5rem" },
17677
17827
  lg: {
17678
- padding: "1.25rem 3rem",
17679
- fontSize: "text-lg"
17828
+ padding: "0.9375rem 2.125rem",
17829
+ fontSize: "text-sm"
17680
17830
  },
17681
17831
  xl: {
17682
- padding: "1.625rem 3.75rem",
17683
- fontSize: "text-xl"
17832
+ padding: "1.0625rem 2.5rem",
17833
+ fontSize: "text-base"
17684
17834
  }
17685
17835
  },
17686
- variants: [
17687
- {
17688
- id: "primary",
17689
- name: "Primary",
17690
- enabled: true,
17691
- priority: 1,
17692
- background: {
17693
- type: "gradient",
17694
- stops: ["primary", "accent"],
17695
- direction: "to-r",
17696
- foregroundToken: "primaryForeground"
17697
- },
17698
- borderRadius: "rounded-lg",
17699
- shadow: {
17700
- elevation: "low",
17701
- softness: "soft",
17702
- position: "bottom"
17836
+ roles: {
17837
+ primary: {
17838
+ kind: "complete",
17839
+ appearance: {
17840
+ background: {
17841
+ type: "solid",
17842
+ colorToken: unsafeAsOpaqueButtonColourToken("primary")
17843
+ },
17844
+ borderRadius: "rounded-xl",
17845
+ affordance: { iconId: "ArrowRight" },
17846
+ effects: { hover: [{
17847
+ effectId: "darken-background",
17848
+ options: { amount: 100 }
17849
+ }] }
17703
17850
  }
17704
17851
  },
17705
- {
17706
- id: "secondary",
17707
- name: "Secondary",
17708
- enabled: true,
17709
- priority: 2,
17710
- background: {
17711
- type: "gradient",
17712
- stops: ["secondary", "accent"],
17713
- direction: "to-br",
17714
- foregroundToken: "primaryForeground"
17715
- },
17716
- borderRadius: "rounded-lg",
17717
- shadow: {
17718
- elevation: "low",
17719
- softness: "soft",
17720
- position: "bottom"
17852
+ secondary: {
17853
+ kind: "complete",
17854
+ appearance: parameters.secondaryTreatment === "solid-accent" ? {
17855
+ background: {
17856
+ type: "solid",
17857
+ colorToken: unsafeAsOpaqueButtonColourToken("accent")
17858
+ },
17859
+ borderRadius: "rounded-xl",
17860
+ affordance: { iconId: "ArrowRight" },
17861
+ effects: { hover: [{
17862
+ effectId: "darken-background",
17863
+ options: { amount: 100 }
17864
+ }] }
17865
+ } : {
17866
+ background: {
17867
+ type: "surface",
17868
+ role: "link"
17869
+ },
17870
+ borderRadius: "rounded-xl",
17871
+ border: { widthClass: "border" },
17872
+ affordance: { iconId: "ArrowRight" },
17873
+ effects: { hover: [{
17874
+ effectId: "background-on-hover",
17875
+ options: { colorToken: "surfaceAlt" }
17876
+ }] }
17721
17877
  }
17722
17878
  },
17723
- {
17724
- id: "outline",
17725
- name: "Outline",
17726
- enabled: true,
17727
- priority: 3,
17728
- background: {
17729
- type: "surface",
17730
- role: "link"
17731
- },
17732
- borderRadius: "rounded-lg",
17733
- border: { widthClass: "border" },
17734
- effects: { hover: [{
17735
- effectId: "background-on-hover",
17736
- options: { colorToken: "surface" }
17737
- }] }
17879
+ outline: {
17880
+ kind: "complete",
17881
+ appearance: {
17882
+ background: {
17883
+ type: "surface",
17884
+ role: "link"
17885
+ },
17886
+ borderRadius: "rounded-xl",
17887
+ border: { widthClass: "border" }
17888
+ }
17738
17889
  },
17739
- {
17740
- id: "ghost",
17741
- name: "Ghost",
17742
- enabled: true,
17743
- priority: 3,
17744
- background: {
17745
- type: "surface",
17746
- role: "link"
17747
- },
17748
- borderRadius: "rounded-lg",
17749
- effects: { hover: [{
17750
- effectId: "background-on-hover",
17751
- options: { colorToken: "surface" }
17752
- }] }
17890
+ ghost: {
17891
+ kind: "complete",
17892
+ appearance: {
17893
+ background: {
17894
+ type: "surface",
17895
+ role: "link"
17896
+ },
17897
+ borderRadius: "rounded-xl"
17898
+ }
17899
+ },
17900
+ accent: {
17901
+ kind: "derive",
17902
+ from: "primary",
17903
+ overrides: { background: {
17904
+ type: "solid",
17905
+ colorToken: unsafeAsOpaqueButtonColourToken("accent")
17906
+ } }
17753
17907
  }
17754
- ]
17755
- }
17908
+ }
17909
+ })
17756
17910
  });
17757
17911
  }));
17758
17912
  //#endregion
17759
- //#region ../theme-core/src/buttons/personalities/confident-chip.ts
17760
- var confidentChip;
17761
- var init_confident_chip = __esmMin((() => {
17913
+ //#region ../theme-core/src/buttons/styles/recipes/defineStaticButtonStyleRecipe.ts
17914
+ function defineStaticButtonStyleRecipe(input) {
17915
+ const system = normalizeSystem(input.system);
17916
+ return defineButtonStyleRecipe({
17917
+ id: input.id,
17918
+ accessibilityLabel: input.accessibilityLabel,
17919
+ tags: input.tags,
17920
+ parameterSchema: emptyParametersSchema,
17921
+ defaultParameters: {},
17922
+ controls: [],
17923
+ defineSystem: () => system
17924
+ });
17925
+ }
17926
+ function normalizeSystem(input) {
17927
+ return {
17928
+ global: buttonGlobalSettingsSchema.parse(input.global),
17929
+ ...input.sizes ? { sizes: input.sizes } : {},
17930
+ roles: {
17931
+ primary: normalizeCompleteRole(input.roles.primary),
17932
+ secondary: normalizeCompleteRole(input.roles.secondary),
17933
+ outline: normalizeSupportingRole(input.roles.outline),
17934
+ ghost: normalizeSupportingRole(input.roles.ghost),
17935
+ accent: normalizeSupportingRole(input.roles.accent)
17936
+ }
17937
+ };
17938
+ }
17939
+ function normalizeCompleteRole(role) {
17940
+ return {
17941
+ kind: "complete",
17942
+ appearance: normalizeAppearance(role.appearance)
17943
+ };
17944
+ }
17945
+ function normalizeSupportingRole(role) {
17946
+ if (role.kind === "complete") return normalizeCompleteRole(role);
17947
+ return {
17948
+ kind: "derive",
17949
+ from: role.from,
17950
+ ...role.overrides ? { overrides: normalizeAppearanceOverrides(role.overrides) } : {}
17951
+ };
17952
+ }
17953
+ function normalizeAppearance(appearance) {
17954
+ const { background, hoverBackgroundToken, ...rest } = appearance;
17955
+ return {
17956
+ ...rest,
17957
+ background: buttonColourTreatmentSchema.parse(background),
17958
+ ...hoverBackgroundToken ? { hoverBackgroundToken: opaqueButtonColourTokenSchema.parse(hoverBackgroundToken) } : {}
17959
+ };
17960
+ }
17961
+ function normalizeAppearanceOverrides(overrides) {
17962
+ const { background, hoverBackgroundToken, ...rest } = overrides;
17963
+ return {
17964
+ ...rest,
17965
+ ...background ? { background: buttonColourTreatmentSchema.parse(background) } : {},
17966
+ ...hoverBackgroundToken ? { hoverBackgroundToken: opaqueButtonColourTokenSchema.parse(hoverBackgroundToken) } : {}
17967
+ };
17968
+ }
17969
+ var emptyParametersSchema;
17970
+ var init_defineStaticButtonStyleRecipe = __esmMin((() => {
17762
17971
  init_types$13();
17763
- confidentChip = defineButtonPersonality({
17764
- id: "confident-chip",
17765
- name: "Confident Chip",
17766
- description: "Mid-radius solid buttons with a crisp hover.",
17972
+ init_domain();
17973
+ emptyParametersSchema = z$1.object({}).strict();
17974
+ }));
17975
+ //#endregion
17976
+ //#region ../theme-core/src/buttons/styles/recipes/staticRecipes.ts
17977
+ var softPillRecipe, earthPillRecipe, confidentChipRecipe, editorialSizes, editorialLinkRecipe, pebbleRecipe, brushedWashRecipe, inkStampRecipe, flatInkRecipe, showtimePillRecipe, joyStampRecipe, ornateGhostSizes, ornateRitualRecipe;
17978
+ var init_staticRecipes = __esmMin((() => {
17979
+ init_defineStaticButtonStyleRecipe();
17980
+ softPillRecipe = defineStaticButtonStyleRecipe({
17981
+ id: "soft-pill",
17982
+ accessibilityLabel: "Rounded pill buttons with a gentle hover lift",
17767
17983
  tags: {
17768
17984
  tone: "classic",
17769
17985
  energy: "calm",
17770
- motion: "standard",
17771
- era: "modern"
17986
+ motion: "subtle",
17987
+ era: "organic"
17772
17988
  },
17773
- buttonSystem: {
17989
+ system: {
17774
17990
  global: {
17775
- cornerStyle: "rounded",
17776
- shadow: "medium",
17991
+ cornerStyle: "pill",
17992
+ shadow: "low",
17777
17993
  textTransform: "none",
17778
- fontWeight: 600,
17779
- borderWidth: 1,
17780
- hoverTransform: "none",
17994
+ fontWeight: 500,
17995
+ borderWidth: 2,
17996
+ hoverTransform: "lift",
17781
17997
  hoverColor: "none"
17782
17998
  },
17783
- variants: [
17784
- {
17785
- id: "primary",
17786
- name: "Primary",
17787
- enabled: true,
17788
- priority: 1,
17789
- background: {
17790
- type: "solid",
17791
- colorToken: "primary"
17792
- },
17793
- borderRadius: "rounded-md",
17794
- shadow: {
17795
- elevation: "medium",
17796
- softness: "soft",
17797
- position: "bottom"
17798
- },
17799
- effects: {
17800
- hover: [{
17801
- effectId: "darken-background",
17802
- options: { amount: 100 }
17803
- }],
17804
- active: [{
17805
- effectId: "scale-down",
17806
- options: { scale: "0.97" }
17807
- }]
17999
+ roles: {
18000
+ primary: {
18001
+ kind: "complete",
18002
+ appearance: {
18003
+ background: {
18004
+ type: "solid",
18005
+ colorToken: "primary"
18006
+ },
18007
+ borderRadius: "rounded-full",
18008
+ shadow: {
18009
+ elevation: "low",
18010
+ softness: "soft",
18011
+ position: "bottom"
18012
+ },
18013
+ effects: {
18014
+ hover: [{
18015
+ effectId: "lift",
18016
+ options: { translateY: "-1px" }
18017
+ }],
18018
+ active: [{
18019
+ effectId: "scale-down",
18020
+ options: { scale: "0.98" }
18021
+ }]
18022
+ }
17808
18023
  }
17809
18024
  },
17810
- {
17811
- id: "secondary",
17812
- name: "Secondary",
17813
- enabled: true,
17814
- priority: 2,
17815
- background: {
17816
- type: "solid",
17817
- colorToken: "surface"
17818
- },
17819
- borderRadius: "rounded-md",
17820
- border: { widthClass: "border" },
17821
- effects: { hover: [{
17822
- effectId: "background-on-hover",
17823
- options: { colorToken: "background" }
17824
- }] }
18025
+ secondary: {
18026
+ kind: "complete",
18027
+ appearance: {
18028
+ background: {
18029
+ type: "surface",
18030
+ role: "link"
18031
+ },
18032
+ borderRadius: "rounded-full",
18033
+ border: { widthClass: "border-2" },
18034
+ effects: { hover: [{
18035
+ effectId: "background-on-hover",
18036
+ options: { colorToken: "surface" }
18037
+ }] }
18038
+ }
17825
18039
  },
17826
- {
17827
- id: "outline",
17828
- name: "Outline",
17829
- enabled: true,
17830
- priority: 3,
17831
- background: {
17832
- type: "surface",
17833
- role: "link"
17834
- },
17835
- borderRadius: "rounded-md",
17836
- border: { widthClass: "border" },
17837
- effects: { hover: [{
17838
- effectId: "background-on-hover",
17839
- options: { colorToken: "surface" }
17840
- }] }
18040
+ outline: {
18041
+ kind: "complete",
18042
+ appearance: {
18043
+ background: {
18044
+ type: "surface",
18045
+ role: "link"
18046
+ },
18047
+ borderRadius: "rounded-full",
18048
+ border: { widthClass: "border" },
18049
+ effects: { hover: [{
18050
+ effectId: "background-on-hover",
18051
+ options: { colorToken: "surface" }
18052
+ }] }
18053
+ }
17841
18054
  },
17842
- {
17843
- id: "ghost",
17844
- name: "Ghost",
17845
- enabled: true,
17846
- priority: 3,
17847
- background: {
17848
- type: "surface",
17849
- role: "link"
17850
- },
17851
- borderRadius: "rounded-md",
17852
- effects: { hover: [{
17853
- effectId: "background-on-hover",
17854
- options: { colorToken: "surface" }
17855
- }] }
18055
+ ghost: {
18056
+ kind: "complete",
18057
+ appearance: {
18058
+ background: {
18059
+ type: "surface",
18060
+ role: "link"
18061
+ },
18062
+ borderRadius: "rounded-full",
18063
+ effects: { hover: [{
18064
+ effectId: "background-on-hover",
18065
+ options: { colorToken: "surface" }
18066
+ }] }
18067
+ }
18068
+ },
18069
+ accent: {
18070
+ kind: "derive",
18071
+ from: "primary",
18072
+ overrides: { background: {
18073
+ type: "solid",
18074
+ colorToken: "accent"
18075
+ } }
17856
18076
  }
17857
- ]
18077
+ }
17858
18078
  }
17859
18079
  });
17860
- }));
17861
- //#endregion
17862
- //#region ../theme-core/src/buttons/personalities/earth-pill.ts
17863
- var earthPill;
17864
- var init_earth_pill = __esmMin((() => {
17865
- init_types$13();
17866
- earthPill = defineButtonPersonality({
18080
+ earthPillRecipe = defineStaticButtonStyleRecipe({
17867
18081
  id: "earth-pill",
17868
- name: "Earth Pill",
17869
- description: "Compact terracotta pills with quiet primary-coloured ghost CTAs.",
18082
+ accessibilityLabel: "Compact rounded buttons with a quiet hover lift",
17870
18083
  tags: {
17871
18084
  tone: "classic",
17872
18085
  energy: "calm",
17873
18086
  motion: "subtle",
17874
18087
  era: "organic"
17875
18088
  },
17876
- buttonSystem: {
18089
+ system: {
17877
18090
  global: {
17878
18091
  cornerStyle: "pill",
17879
18092
  shadow: "low",
@@ -17900,119 +18113,222 @@ var init_earth_pill = __esmMin((() => {
17900
18113
  fontSize: "text-xl"
17901
18114
  }
17902
18115
  },
17903
- variants: [
17904
- {
17905
- id: "primary",
17906
- name: "Primary",
17907
- enabled: true,
17908
- priority: 1,
17909
- background: {
17910
- type: "solid",
17911
- colorToken: "primary"
17912
- },
17913
- borderRadius: "rounded-full",
17914
- shadow: {
17915
- elevation: "low",
17916
- softness: "soft",
17917
- position: "bottom"
17918
- },
17919
- effects: {
17920
- hover: [{
17921
- effectId: "lift",
17922
- options: { translateY: "-1px" }
17923
- }, {
18116
+ roles: {
18117
+ primary: {
18118
+ kind: "complete",
18119
+ appearance: {
18120
+ background: {
18121
+ type: "solid",
18122
+ colorToken: "primary"
18123
+ },
18124
+ borderRadius: "rounded-full",
18125
+ shadow: {
18126
+ elevation: "low",
18127
+ softness: "soft",
18128
+ position: "bottom"
18129
+ },
18130
+ effects: {
18131
+ hover: [{
18132
+ effectId: "lift",
18133
+ options: { translateY: "-1px" }
18134
+ }, {
18135
+ effectId: "background-on-hover",
18136
+ options: { colorToken: "accent" }
18137
+ }],
18138
+ active: [{
18139
+ effectId: "scale-down",
18140
+ options: { scale: "0.98" }
18141
+ }]
18142
+ }
18143
+ }
18144
+ },
18145
+ secondary: {
18146
+ kind: "complete",
18147
+ appearance: {
18148
+ background: {
18149
+ type: "surface",
18150
+ role: "link"
18151
+ },
18152
+ borderRadius: "rounded-full",
18153
+ border: { widthClass: "border" },
18154
+ effects: { hover: [{
17924
18155
  effectId: "background-on-hover",
17925
- options: { colorToken: "accent" }
17926
- }],
17927
- active: [{
17928
- effectId: "scale-down",
17929
- options: { scale: "0.98" }
17930
- }]
18156
+ options: { colorToken: "muted" }
18157
+ }] }
17931
18158
  }
17932
18159
  },
17933
- {
17934
- id: "secondary",
17935
- name: "Secondary",
17936
- enabled: true,
17937
- priority: 2,
17938
- background: {
17939
- type: "surface",
17940
- role: "link"
17941
- },
17942
- borderRadius: "rounded-full",
17943
- border: { widthClass: "border" },
17944
- effects: { hover: [{
17945
- effectId: "background-on-hover",
17946
- options: { colorToken: "muted" }
17947
- }] }
18160
+ outline: {
18161
+ kind: "complete",
18162
+ appearance: {
18163
+ background: {
18164
+ type: "surface",
18165
+ role: "link"
18166
+ },
18167
+ borderRadius: "rounded-full",
18168
+ border: { widthClass: "border" },
18169
+ effects: { hover: [{
18170
+ effectId: "background-on-hover",
18171
+ options: { colorToken: "surfaceAlt" }
18172
+ }] }
18173
+ }
17948
18174
  },
17949
- {
17950
- id: "outline",
17951
- name: "Outline",
17952
- enabled: true,
17953
- priority: 3,
17954
- background: {
17955
- type: "surface",
17956
- role: "link"
17957
- },
17958
- borderRadius: "rounded-full",
17959
- border: { widthClass: "border" },
17960
- effects: { hover: [{
17961
- effectId: "background-on-hover",
17962
- options: { colorToken: "surfaceAlt" }
17963
- }] }
18175
+ ghost: {
18176
+ kind: "complete",
18177
+ appearance: {
18178
+ background: {
18179
+ type: "surface",
18180
+ role: "link"
18181
+ },
18182
+ borderRadius: "rounded-full",
18183
+ shadow: {
18184
+ elevation: "none",
18185
+ softness: null,
18186
+ position: "bottom"
18187
+ },
18188
+ sizes: {
18189
+ sm: {
18190
+ padding: "0.25rem 0",
18191
+ fontSize: "text-sm"
18192
+ },
18193
+ md: { padding: "0.375rem 0" },
18194
+ lg: {
18195
+ padding: "0.5rem 0",
18196
+ fontSize: "text-lg"
18197
+ },
18198
+ xl: {
18199
+ padding: "0.625rem 0",
18200
+ fontSize: "text-xl"
18201
+ }
18202
+ }
18203
+ }
17964
18204
  },
17965
- {
17966
- id: "ghost",
17967
- name: "Ghost",
17968
- enabled: true,
17969
- priority: 3,
17970
- background: {
17971
- type: "surface",
17972
- role: "link"
17973
- },
17974
- borderRadius: "rounded-full",
17975
- shadow: {
17976
- elevation: "none",
17977
- softness: null,
17978
- position: "bottom"
17979
- },
17980
- sizes: {
17981
- sm: {
17982
- padding: "0.25rem 0",
17983
- fontSize: "text-sm"
18205
+ accent: {
18206
+ kind: "derive",
18207
+ from: "primary",
18208
+ overrides: { background: {
18209
+ type: "solid",
18210
+ colorToken: "accent"
18211
+ } }
18212
+ }
18213
+ }
18214
+ }
18215
+ });
18216
+ confidentChipRecipe = defineStaticButtonStyleRecipe({
18217
+ id: "confident-chip",
18218
+ accessibilityLabel: "Moderately rounded solid buttons with a crisp hover",
18219
+ tags: {
18220
+ tone: "classic",
18221
+ energy: "calm",
18222
+ motion: "standard",
18223
+ era: "modern"
18224
+ },
18225
+ system: {
18226
+ global: {
18227
+ cornerStyle: "rounded",
18228
+ shadow: "medium",
18229
+ textTransform: "none",
18230
+ fontWeight: 600,
18231
+ borderWidth: 1,
18232
+ hoverTransform: "none",
18233
+ hoverColor: "none"
18234
+ },
18235
+ roles: {
18236
+ primary: {
18237
+ kind: "complete",
18238
+ appearance: {
18239
+ background: {
18240
+ type: "solid",
18241
+ colorToken: "primary"
17984
18242
  },
17985
- md: { padding: "0.375rem 0" },
17986
- lg: {
17987
- padding: "0.5rem 0",
17988
- fontSize: "text-lg"
18243
+ borderRadius: "rounded-md",
18244
+ shadow: {
18245
+ elevation: "medium",
18246
+ softness: "soft",
18247
+ position: "bottom"
17989
18248
  },
17990
- xl: {
17991
- padding: "0.625rem 0",
17992
- fontSize: "text-xl"
18249
+ effects: {
18250
+ hover: [{
18251
+ effectId: "darken-background",
18252
+ options: { amount: 100 }
18253
+ }],
18254
+ active: [{
18255
+ effectId: "scale-down",
18256
+ options: { scale: "0.97" }
18257
+ }]
17993
18258
  }
17994
18259
  }
18260
+ },
18261
+ secondary: {
18262
+ kind: "complete",
18263
+ appearance: {
18264
+ background: {
18265
+ type: "solid",
18266
+ colorToken: "surface"
18267
+ },
18268
+ borderRadius: "rounded-md",
18269
+ border: { widthClass: "border" },
18270
+ effects: { hover: [{
18271
+ effectId: "background-on-hover",
18272
+ options: { colorToken: "background" }
18273
+ }] }
18274
+ }
18275
+ },
18276
+ outline: {
18277
+ kind: "complete",
18278
+ appearance: {
18279
+ background: {
18280
+ type: "surface",
18281
+ role: "link"
18282
+ },
18283
+ borderRadius: "rounded-md",
18284
+ border: { widthClass: "border" },
18285
+ effects: { hover: [{
18286
+ effectId: "background-on-hover",
18287
+ options: { colorToken: "surface" }
18288
+ }] }
18289
+ }
18290
+ },
18291
+ ghost: {
18292
+ kind: "complete",
18293
+ appearance: {
18294
+ background: {
18295
+ type: "surface",
18296
+ role: "link"
18297
+ },
18298
+ borderRadius: "rounded-md",
18299
+ effects: { hover: [{
18300
+ effectId: "background-on-hover",
18301
+ options: { colorToken: "surface" }
18302
+ }] }
18303
+ }
18304
+ },
18305
+ accent: {
18306
+ kind: "derive",
18307
+ from: "primary",
18308
+ overrides: { background: {
18309
+ type: "solid",
18310
+ colorToken: "accent"
18311
+ } }
17995
18312
  }
17996
- ]
18313
+ }
17997
18314
  }
17998
18315
  });
17999
- }));
18000
- //#endregion
18001
- //#region ../theme-core/src/buttons/personalities/editorial-link.ts
18002
- var editorialLink;
18003
- var init_editorial_link = __esmMin((() => {
18004
- init_types$13();
18005
- editorialLink = defineButtonPersonality({
18316
+ editorialSizes = {
18317
+ sm: { padding: "0.25rem 0" },
18318
+ md: { padding: "0.5rem 0" },
18319
+ lg: { padding: "0.625rem 0" },
18320
+ xl: { padding: "0.75rem 0" }
18321
+ };
18322
+ editorialLinkRecipe = defineStaticButtonStyleRecipe({
18006
18323
  id: "editorial-link",
18007
- name: "Editorial Link",
18008
- description: "Link-style with a growing underline. Refined, typographic.",
18324
+ accessibilityLabel: "Flat typographic buttons with an underline treatment",
18009
18325
  tags: {
18010
18326
  tone: "minimal",
18011
18327
  energy: "calm",
18012
18328
  motion: "subtle",
18013
18329
  era: "editorial"
18014
18330
  },
18015
- buttonSystem: {
18331
+ system: {
18016
18332
  global: {
18017
18333
  cornerStyle: "square",
18018
18334
  textTransform: "none",
@@ -18021,220 +18337,323 @@ var init_editorial_link = __esmMin((() => {
18021
18337
  hoverTransform: "none",
18022
18338
  hoverColor: "none"
18023
18339
  },
18024
- variants: [
18025
- {
18026
- id: "primary",
18027
- name: "Primary",
18028
- enabled: true,
18029
- priority: 1,
18030
- background: {
18031
- type: "surface",
18032
- role: "link"
18033
- },
18034
- borderRadius: "rounded-none",
18035
- sizes: {
18036
- sm: { padding: "0.25rem 0" },
18037
- md: { padding: "0.5rem 0" },
18038
- lg: { padding: "0.625rem 0" },
18039
- xl: { padding: "0.75rem 0" }
18040
- },
18041
- effects: { base: [{
18042
- effectId: "border-bottom-grow",
18043
- options: {
18044
- height: 2,
18045
- colorToken: "text",
18046
- origin: "left"
18047
- }
18048
- }] }
18340
+ roles: {
18341
+ primary: {
18342
+ kind: "complete",
18343
+ appearance: {
18344
+ background: {
18345
+ type: "surface",
18346
+ role: "link"
18347
+ },
18348
+ borderRadius: "rounded-none",
18349
+ sizes: editorialSizes,
18350
+ effects: { base: [{
18351
+ effectId: "border-bottom-grow",
18352
+ options: {
18353
+ height: 2,
18354
+ colorToken: "text",
18355
+ origin: "left"
18356
+ }
18357
+ }] }
18358
+ }
18049
18359
  },
18050
- {
18051
- id: "secondary",
18052
- name: "Secondary",
18053
- enabled: true,
18054
- priority: 2,
18055
- background: {
18056
- type: "surface",
18057
- role: "link"
18058
- },
18059
- borderRadius: "rounded-none",
18060
- sizes: {
18061
- sm: { padding: "0.25rem 0" },
18062
- md: { padding: "0.5rem 0" },
18063
- lg: { padding: "0.625rem 0" },
18064
- xl: { padding: "0.75rem 0" }
18065
- },
18066
- effects: { base: [{
18067
- effectId: "border-bottom-grow",
18068
- options: {
18069
- height: 1,
18070
- colorToken: "mutedText",
18071
- origin: "left"
18072
- }
18073
- }] }
18360
+ secondary: {
18361
+ kind: "complete",
18362
+ appearance: {
18363
+ background: {
18364
+ type: "surface",
18365
+ role: "link"
18366
+ },
18367
+ borderRadius: "rounded-none",
18368
+ sizes: editorialSizes,
18369
+ effects: { base: [{
18370
+ effectId: "border-bottom-grow",
18371
+ options: {
18372
+ height: 1,
18373
+ colorToken: "mutedText",
18374
+ origin: "left"
18375
+ }
18376
+ }] }
18377
+ }
18074
18378
  },
18075
- {
18076
- id: "outline",
18077
- name: "Outline",
18078
- enabled: true,
18079
- priority: 3,
18080
- background: {
18081
- type: "surface",
18082
- role: "link"
18083
- },
18084
- borderRadius: "rounded-none",
18085
- sizes: {
18086
- sm: { padding: "0.25rem 0" },
18087
- md: { padding: "0.5rem 0" },
18088
- lg: { padding: "0.625rem 0" },
18089
- xl: { padding: "0.75rem 0" }
18090
- },
18091
- effects: { base: [{
18379
+ outline: {
18380
+ kind: "complete",
18381
+ appearance: {
18382
+ background: {
18383
+ type: "surface",
18384
+ role: "link"
18385
+ },
18386
+ borderRadius: "rounded-none",
18387
+ sizes: editorialSizes,
18388
+ effects: { base: [{
18389
+ effectId: "border-bottom-grow",
18390
+ options: {
18391
+ height: 1,
18392
+ colorToken: "accent",
18393
+ origin: "left"
18394
+ }
18395
+ }] }
18396
+ }
18397
+ },
18398
+ ghost: {
18399
+ kind: "complete",
18400
+ appearance: {
18401
+ background: {
18402
+ type: "surface",
18403
+ role: "link"
18404
+ },
18405
+ borderRadius: "rounded-none",
18406
+ sizes: editorialSizes
18407
+ }
18408
+ },
18409
+ accent: {
18410
+ kind: "derive",
18411
+ from: "primary",
18412
+ overrides: { effects: { base: [{
18092
18413
  effectId: "border-bottom-grow",
18093
18414
  options: {
18094
- height: 1,
18415
+ height: 2,
18095
18416
  colorToken: "accent",
18096
18417
  origin: "left"
18097
18418
  }
18098
- }] }
18419
+ }] } }
18420
+ }
18421
+ }
18422
+ }
18423
+ });
18424
+ pebbleRecipe = defineStaticButtonStyleRecipe({
18425
+ id: "pebble",
18426
+ accessibilityLabel: "Generously padded pill buttons",
18427
+ tags: {
18428
+ tone: "classic",
18429
+ energy: "calm",
18430
+ motion: "standard",
18431
+ era: "organic"
18432
+ },
18433
+ system: {
18434
+ global: {
18435
+ cornerStyle: "pill",
18436
+ textTransform: "none",
18437
+ fontWeight: 500,
18438
+ borderWidth: 2,
18439
+ hoverTransform: "none",
18440
+ hoverColor: "none"
18441
+ },
18442
+ sizes: {
18443
+ sm: {
18444
+ padding: "0.625rem 1.75rem",
18445
+ fontSize: "text-sm"
18099
18446
  },
18100
- {
18101
- id: "ghost",
18102
- name: "Ghost",
18103
- enabled: true,
18104
- priority: 3,
18105
- background: {
18106
- type: "surface",
18107
- role: "link"
18108
- },
18109
- borderRadius: "rounded-none",
18110
- sizes: {
18111
- sm: { padding: "0.25rem 0" },
18112
- md: { padding: "0.5rem 0" },
18113
- lg: { padding: "0.625rem 0" },
18114
- xl: { padding: "0.75rem 0" }
18447
+ md: { padding: "0.875rem 2.25rem" },
18448
+ lg: {
18449
+ padding: "1.125rem 2.75rem",
18450
+ fontSize: "text-lg"
18451
+ },
18452
+ xl: {
18453
+ padding: "1.5rem 3.5rem",
18454
+ fontSize: "text-xl"
18455
+ }
18456
+ },
18457
+ roles: {
18458
+ primary: {
18459
+ kind: "complete",
18460
+ appearance: {
18461
+ background: {
18462
+ type: "solid",
18463
+ colorToken: "primary"
18464
+ },
18465
+ borderRadius: "rounded-full",
18466
+ effects: { hover: [{
18467
+ effectId: "darken-background",
18468
+ options: { amount: 100 }
18469
+ }] }
18470
+ }
18471
+ },
18472
+ secondary: {
18473
+ kind: "complete",
18474
+ appearance: {
18475
+ background: {
18476
+ type: "surface",
18477
+ role: "link"
18478
+ },
18479
+ borderRadius: "rounded-full",
18480
+ border: { widthClass: "border-2" },
18481
+ effects: { hover: [{
18482
+ effectId: "background-on-hover",
18483
+ options: { colorToken: "accent" }
18484
+ }] }
18115
18485
  }
18486
+ },
18487
+ outline: {
18488
+ kind: "complete",
18489
+ appearance: {
18490
+ background: {
18491
+ type: "surface",
18492
+ role: "link"
18493
+ },
18494
+ borderRadius: "rounded-full",
18495
+ border: { widthClass: "border" },
18496
+ effects: { hover: [{
18497
+ effectId: "background-on-hover",
18498
+ options: { colorToken: "surface" }
18499
+ }] }
18500
+ }
18501
+ },
18502
+ ghost: {
18503
+ kind: "complete",
18504
+ appearance: {
18505
+ background: {
18506
+ type: "surface",
18507
+ role: "link"
18508
+ },
18509
+ borderRadius: "rounded-full",
18510
+ sizes: {
18511
+ sm: {
18512
+ padding: "0.375rem 0.875rem",
18513
+ fontSize: "text-sm"
18514
+ },
18515
+ md: { padding: "0.5rem 1rem" },
18516
+ lg: {
18517
+ padding: "0.625rem 1.25rem",
18518
+ fontSize: "text-lg"
18519
+ },
18520
+ xl: {
18521
+ padding: "0.75rem 1.5rem",
18522
+ fontSize: "text-xl"
18523
+ }
18524
+ }
18525
+ }
18526
+ },
18527
+ accent: {
18528
+ kind: "derive",
18529
+ from: "primary",
18530
+ overrides: { background: {
18531
+ type: "solid",
18532
+ colorToken: "accent"
18533
+ } }
18116
18534
  }
18117
- ]
18535
+ }
18118
18536
  }
18119
18537
  });
18120
- }));
18121
- //#endregion
18122
- //#region ../theme-core/src/buttons/personalities/flat-ink.ts
18123
- var flatInk;
18124
- var init_flat_ink = __esmMin((() => {
18125
- init_types$13();
18126
- flatInk = defineButtonPersonality({
18127
- id: "flat-ink",
18128
- name: "Flat Ink",
18129
- description: "Flat solid-ink primary, hairline ghost secondary, and a single amber accent climax — modest radius, no shadow.",
18538
+ brushedWashRecipe = defineStaticButtonStyleRecipe({
18539
+ id: "brushed-wash",
18540
+ accessibilityLabel: "Generously padded gradient buttons with soft shadows",
18130
18541
  tags: {
18131
18542
  tone: "classic",
18132
- energy: "calm",
18133
- motion: "subtle",
18134
- era: "editorial"
18543
+ energy: "vibrant",
18544
+ motion: "standard",
18545
+ era: "organic"
18135
18546
  },
18136
- buttonSystem: {
18547
+ system: {
18137
18548
  global: {
18138
18549
  cornerStyle: "rounded",
18550
+ shadow: "low",
18139
18551
  textTransform: "none",
18140
- fontWeight: 600,
18552
+ fontWeight: 500,
18141
18553
  borderWidth: 1,
18142
- typography: "body",
18143
- letterSpacing: "tight",
18144
- paddingPreset: "default",
18145
- hoverTransform: "lift",
18554
+ hoverTransform: "none",
18146
18555
  hoverColor: "none"
18147
18556
  },
18148
18557
  sizes: {
18149
18558
  sm: {
18150
- padding: "0.625rem 1.125rem",
18559
+ padding: "0.75rem 2rem",
18151
18560
  fontSize: "text-sm"
18152
18561
  },
18153
- md: { padding: "0.8125rem 1.375rem" },
18562
+ md: { padding: "1rem 2.5rem" },
18154
18563
  lg: {
18155
- padding: "0.9375rem 1.625rem",
18564
+ padding: "1.25rem 3rem",
18156
18565
  fontSize: "text-lg"
18157
18566
  },
18158
18567
  xl: {
18159
- padding: "1.0625rem 2rem",
18568
+ padding: "1.625rem 3.75rem",
18160
18569
  fontSize: "text-xl"
18161
18570
  }
18162
18571
  },
18163
- variants: [
18164
- {
18165
- id: "primary",
18166
- name: "Primary",
18167
- enabled: true,
18168
- priority: 1,
18169
- background: {
18170
- type: "solid",
18171
- colorToken: "primary"
18172
- },
18173
- borderRadius: "rounded-lg",
18174
- affordance: { iconId: "ArrowRight" },
18175
- effects: { hover: [{
18176
- effectId: "lift",
18177
- options: { translateY: "-2px" }
18178
- }, {
18179
- effectId: "background-on-hover",
18180
- options: { colorToken: "secondary" }
18181
- }] }
18572
+ roles: {
18573
+ primary: {
18574
+ kind: "complete",
18575
+ appearance: {
18576
+ background: {
18577
+ type: "gradient",
18578
+ stops: ["primary", "accent"],
18579
+ direction: "to-r",
18580
+ foregroundToken: "primaryForeground"
18581
+ },
18582
+ borderRadius: "rounded-lg",
18583
+ shadow: {
18584
+ elevation: "low",
18585
+ softness: "soft",
18586
+ position: "bottom"
18587
+ }
18588
+ }
18182
18589
  },
18183
- {
18184
- id: "secondary",
18185
- name: "Secondary",
18186
- enabled: true,
18187
- priority: 2,
18188
- background: {
18189
- type: "surface",
18190
- role: "link"
18191
- },
18192
- borderRadius: "rounded-lg",
18193
- border: { widthClass: "border" },
18194
- effects: { hover: [{
18195
- effectId: "lift",
18196
- options: { translateY: "-2px" }
18197
- }, {
18198
- effectId: "background-on-hover",
18199
- options: { colorToken: "surfaceAlt" }
18200
- }] }
18590
+ secondary: {
18591
+ kind: "complete",
18592
+ appearance: {
18593
+ background: {
18594
+ type: "gradient",
18595
+ stops: ["secondary", "accent"],
18596
+ direction: "to-br",
18597
+ foregroundToken: "primaryForeground"
18598
+ },
18599
+ borderRadius: "rounded-lg",
18600
+ shadow: {
18601
+ elevation: "low",
18602
+ softness: "soft",
18603
+ position: "bottom"
18604
+ }
18605
+ }
18201
18606
  },
18202
- {
18203
- id: "accent",
18204
- name: "Accent",
18205
- enabled: true,
18206
- priority: 3,
18207
- background: {
18607
+ outline: {
18608
+ kind: "complete",
18609
+ appearance: {
18610
+ background: {
18611
+ type: "surface",
18612
+ role: "link"
18613
+ },
18614
+ borderRadius: "rounded-lg",
18615
+ border: { widthClass: "border" },
18616
+ effects: { hover: [{
18617
+ effectId: "background-on-hover",
18618
+ options: { colorToken: "surface" }
18619
+ }] }
18620
+ }
18621
+ },
18622
+ ghost: {
18623
+ kind: "complete",
18624
+ appearance: {
18625
+ background: {
18626
+ type: "surface",
18627
+ role: "link"
18628
+ },
18629
+ borderRadius: "rounded-lg",
18630
+ effects: { hover: [{
18631
+ effectId: "background-on-hover",
18632
+ options: { colorToken: "surface" }
18633
+ }] }
18634
+ }
18635
+ },
18636
+ accent: {
18637
+ kind: "derive",
18638
+ from: "primary",
18639
+ overrides: { background: {
18208
18640
  type: "solid",
18209
18641
  colorToken: "accent"
18210
- },
18211
- borderRadius: "rounded-lg",
18212
- affordance: { iconId: "ArrowRight" },
18213
- effects: { hover: [{
18214
- effectId: "lift",
18215
- options: { translateY: "-2px" }
18216
- }] }
18642
+ } }
18217
18643
  }
18218
- ]
18644
+ }
18219
18645
  }
18220
18646
  });
18221
- }));
18222
- //#endregion
18223
- //#region ../theme-core/src/buttons/personalities/ink-stamp.ts
18224
- var inkStamp;
18225
- var init_ink_stamp = __esmMin((() => {
18226
- init_types$13();
18227
- inkStamp = defineButtonPersonality({
18647
+ inkStampRecipe = defineStaticButtonStyleRecipe({
18228
18648
  id: "ink-stamp",
18229
- name: "Ink Stamp",
18230
- description: "Hand-stamped block-print buttons with a slight lift on hover.",
18649
+ accessibilityLabel: "Uppercase block-print buttons with a playful hover",
18231
18650
  tags: {
18232
18651
  tone: "bold",
18233
18652
  energy: "vibrant",
18234
18653
  motion: "standard",
18235
18654
  era: "organic"
18236
18655
  },
18237
- buttonSystem: {
18656
+ system: {
18238
18657
  global: {
18239
18658
  cornerStyle: "rounded",
18240
18659
  textTransform: "uppercase",
@@ -18262,120 +18681,347 @@ var init_ink_stamp = __esmMin((() => {
18262
18681
  fontSize: "text-lg"
18263
18682
  }
18264
18683
  },
18265
- variants: [
18266
- {
18267
- id: "primary",
18268
- name: "Primary",
18269
- enabled: true,
18270
- priority: 1,
18271
- background: {
18684
+ roles: {
18685
+ primary: {
18686
+ kind: "complete",
18687
+ appearance: {
18688
+ background: {
18689
+ type: "solid",
18690
+ colorToken: "primary"
18691
+ },
18692
+ borderRadius: "rounded-md",
18693
+ effects: {
18694
+ hover: [{
18695
+ effectId: "drop-shadow",
18696
+ options: { intensity: "medium" }
18697
+ }, {
18698
+ effectId: "scale-up",
18699
+ options: { scale: "1.02" }
18700
+ }],
18701
+ active: [{
18702
+ effectId: "scale-down",
18703
+ options: { scale: "0.98" }
18704
+ }]
18705
+ }
18706
+ }
18707
+ },
18708
+ secondary: {
18709
+ kind: "complete",
18710
+ appearance: {
18711
+ background: {
18712
+ type: "surface",
18713
+ role: "link"
18714
+ },
18715
+ borderRadius: "rounded-md",
18716
+ border: { widthClass: "border-2" },
18717
+ effects: { hover: [{
18718
+ effectId: "background-on-hover",
18719
+ options: { colorToken: "surface" }
18720
+ }] }
18721
+ }
18722
+ },
18723
+ outline: {
18724
+ kind: "complete",
18725
+ appearance: {
18726
+ background: {
18727
+ type: "surface",
18728
+ role: "link"
18729
+ },
18730
+ borderRadius: "rounded-md",
18731
+ border: { widthClass: "border-2" },
18732
+ effects: { hover: [{
18733
+ effectId: "background-on-hover",
18734
+ options: { colorToken: "surface" }
18735
+ }] }
18736
+ }
18737
+ },
18738
+ ghost: {
18739
+ kind: "complete",
18740
+ appearance: {
18741
+ background: {
18742
+ type: "surface",
18743
+ role: "link"
18744
+ },
18745
+ borderRadius: "rounded-none",
18746
+ sizes: {
18747
+ sm: {
18748
+ padding: "0.375rem 0",
18749
+ fontSize: "text-xs"
18750
+ },
18751
+ md: {
18752
+ padding: "0.5rem 0",
18753
+ fontSize: "text-sm"
18754
+ },
18755
+ lg: {
18756
+ padding: "0.625rem 0",
18757
+ fontSize: "text-base"
18758
+ },
18759
+ xl: {
18760
+ padding: "0.75rem 0",
18761
+ fontSize: "text-lg"
18762
+ }
18763
+ },
18764
+ effects: { base: [{
18765
+ effectId: "border-bottom-grow",
18766
+ options: {
18767
+ height: 1,
18768
+ colorToken: "accent",
18769
+ origin: "left"
18770
+ }
18771
+ }] }
18772
+ }
18773
+ },
18774
+ accent: {
18775
+ kind: "derive",
18776
+ from: "primary",
18777
+ overrides: { background: {
18272
18778
  type: "solid",
18273
- colorToken: "primary"
18274
- },
18275
- borderRadius: "rounded-md",
18276
- effects: {
18277
- hover: [{
18278
- effectId: "drop-shadow",
18279
- options: { intensity: "medium" }
18779
+ colorToken: "accent"
18780
+ } }
18781
+ }
18782
+ }
18783
+ }
18784
+ });
18785
+ flatInkRecipe = defineStaticButtonStyleRecipe({
18786
+ id: "flat-ink",
18787
+ accessibilityLabel: "Flat rounded buttons with arrow affordances",
18788
+ tags: {
18789
+ tone: "classic",
18790
+ energy: "calm",
18791
+ motion: "subtle",
18792
+ era: "editorial"
18793
+ },
18794
+ system: {
18795
+ global: {
18796
+ cornerStyle: "rounded",
18797
+ textTransform: "none",
18798
+ fontWeight: 600,
18799
+ borderWidth: 1,
18800
+ typography: "body",
18801
+ letterSpacing: "tight",
18802
+ paddingPreset: "default",
18803
+ hoverTransform: "lift",
18804
+ hoverColor: "none"
18805
+ },
18806
+ sizes: {
18807
+ sm: {
18808
+ padding: "0.625rem 1.125rem",
18809
+ fontSize: "text-sm"
18810
+ },
18811
+ md: { padding: "0.8125rem 1.375rem" },
18812
+ lg: {
18813
+ padding: "0.9375rem 1.625rem",
18814
+ fontSize: "text-lg"
18815
+ },
18816
+ xl: {
18817
+ padding: "1.0625rem 2rem",
18818
+ fontSize: "text-xl"
18819
+ }
18820
+ },
18821
+ roles: {
18822
+ primary: {
18823
+ kind: "complete",
18824
+ appearance: {
18825
+ background: {
18826
+ type: "solid",
18827
+ colorToken: "primary"
18828
+ },
18829
+ borderRadius: "rounded-lg",
18830
+ affordance: { iconId: "ArrowRight" },
18831
+ effects: { hover: [{
18832
+ effectId: "lift",
18833
+ options: { translateY: "-2px" }
18280
18834
  }, {
18281
- effectId: "scale-up",
18282
- options: { scale: "1.02" }
18283
- }],
18284
- active: [{
18285
- effectId: "scale-down",
18286
- options: { scale: "0.98" }
18287
- }]
18835
+ effectId: "background-on-hover",
18836
+ options: { colorToken: "secondary" }
18837
+ }] }
18288
18838
  }
18289
18839
  },
18290
- {
18291
- id: "secondary",
18292
- name: "Secondary",
18293
- enabled: true,
18294
- priority: 2,
18295
- background: {
18296
- type: "surface",
18297
- role: "link"
18298
- },
18299
- borderRadius: "rounded-md",
18300
- border: { widthClass: "border-2" },
18301
- effects: { hover: [{
18302
- effectId: "background-on-hover",
18303
- options: { colorToken: "surface" }
18304
- }] }
18840
+ secondary: {
18841
+ kind: "complete",
18842
+ appearance: {
18843
+ background: {
18844
+ type: "surface",
18845
+ role: "link"
18846
+ },
18847
+ borderRadius: "rounded-lg",
18848
+ border: { widthClass: "border" },
18849
+ effects: { hover: [{
18850
+ effectId: "lift",
18851
+ options: { translateY: "-2px" }
18852
+ }, {
18853
+ effectId: "background-on-hover",
18854
+ options: { colorToken: "surfaceAlt" }
18855
+ }] }
18856
+ }
18305
18857
  },
18306
- {
18307
- id: "outline",
18308
- name: "Outline",
18309
- enabled: true,
18310
- priority: 3,
18311
- background: {
18312
- type: "surface",
18313
- role: "link"
18314
- },
18315
- borderRadius: "rounded-md",
18316
- border: { widthClass: "border-2" },
18317
- effects: { hover: [{
18318
- effectId: "background-on-hover",
18319
- options: { colorToken: "surface" }
18320
- }] }
18858
+ outline: {
18859
+ kind: "complete",
18860
+ appearance: {
18861
+ background: {
18862
+ type: "surface",
18863
+ role: "link"
18864
+ },
18865
+ borderRadius: "rounded-lg",
18866
+ border: { widthClass: "border" },
18867
+ effects: { hover: [{
18868
+ effectId: "lift",
18869
+ options: { translateY: "-2px" }
18870
+ }, {
18871
+ effectId: "background-on-hover",
18872
+ options: { colorToken: "surfaceAlt" }
18873
+ }] }
18874
+ }
18321
18875
  },
18322
- {
18323
- id: "ghost",
18324
- name: "Ghost",
18325
- enabled: true,
18326
- priority: 3,
18327
- background: {
18328
- type: "surface",
18329
- role: "link"
18330
- },
18331
- borderRadius: "rounded-none",
18332
- sizes: {
18333
- sm: {
18334
- padding: "0.375rem 0",
18335
- fontSize: "text-xs"
18876
+ ghost: {
18877
+ kind: "complete",
18878
+ appearance: {
18879
+ background: {
18880
+ type: "surface",
18881
+ role: "link"
18336
18882
  },
18337
- md: {
18338
- padding: "0.5rem 0",
18339
- fontSize: "text-sm"
18883
+ borderRadius: "rounded-lg",
18884
+ effects: { hover: [{
18885
+ effectId: "lift",
18886
+ options: { translateY: "-2px" }
18887
+ }] }
18888
+ }
18889
+ },
18890
+ accent: {
18891
+ kind: "complete",
18892
+ appearance: {
18893
+ background: {
18894
+ type: "solid",
18895
+ colorToken: "accent"
18340
18896
  },
18341
- lg: {
18342
- padding: "0.625rem 0",
18343
- fontSize: "text-base"
18897
+ borderRadius: "rounded-lg",
18898
+ affordance: { iconId: "ArrowRight" },
18899
+ effects: { hover: [{
18900
+ effectId: "lift",
18901
+ options: { translateY: "-2px" }
18902
+ }] }
18903
+ }
18904
+ }
18905
+ }
18906
+ }
18907
+ });
18908
+ showtimePillRecipe = defineStaticButtonStyleRecipe({
18909
+ id: "showtime-pill",
18910
+ accessibilityLabel: "Bold uppercase pill buttons with playful movement",
18911
+ tags: {
18912
+ tone: "bold",
18913
+ energy: "vibrant",
18914
+ motion: "expressive",
18915
+ era: "modern"
18916
+ },
18917
+ system: {
18918
+ global: {
18919
+ cornerStyle: "pill",
18920
+ shadow: "low",
18921
+ textTransform: "uppercase",
18922
+ fontWeight: 700,
18923
+ borderWidth: 2,
18924
+ hoverTransform: "lift",
18925
+ hoverColor: "darken",
18926
+ typography: "body",
18927
+ paddingPreset: "spacious",
18928
+ italic: false
18929
+ },
18930
+ sizes: {
18931
+ sm: {
18932
+ padding: "0.625rem 1.25rem",
18933
+ fontSize: "0.875rem"
18934
+ },
18935
+ md: {
18936
+ padding: "0.875rem 1.75rem",
18937
+ fontSize: "1rem"
18938
+ },
18939
+ lg: {
18940
+ padding: "1.125rem 2.25rem",
18941
+ fontSize: "1.125rem"
18942
+ },
18943
+ xl: {
18944
+ padding: "1.125rem 2.25rem",
18945
+ fontSize: "1.125rem"
18946
+ }
18947
+ },
18948
+ roles: {
18949
+ primary: {
18950
+ kind: "complete",
18951
+ appearance: {
18952
+ background: {
18953
+ type: "solid",
18954
+ colorToken: "primary"
18344
18955
  },
18345
- xl: {
18346
- padding: "0.75rem 0",
18347
- fontSize: "text-lg"
18348
- }
18349
- },
18350
- effects: { base: [{
18351
- effectId: "border-bottom-grow",
18352
- options: {
18353
- height: 1,
18354
- colorToken: "accent",
18355
- origin: "left"
18356
- }
18357
- }] }
18956
+ borderRadius: "rounded-full",
18957
+ effects: { hover: [{ effectId: "pop" }] }
18958
+ }
18959
+ },
18960
+ secondary: {
18961
+ kind: "complete",
18962
+ appearance: {
18963
+ background: {
18964
+ type: "surface",
18965
+ role: "link"
18966
+ },
18967
+ borderRadius: "rounded-full",
18968
+ border: { widthClass: "border-2" },
18969
+ effects: { hover: [{ effectId: "pop" }] }
18970
+ }
18971
+ },
18972
+ outline: {
18973
+ kind: "complete",
18974
+ appearance: {
18975
+ background: {
18976
+ type: "surface",
18977
+ role: "link"
18978
+ },
18979
+ borderRadius: "rounded-full",
18980
+ border: { widthClass: "border-2" },
18981
+ effects: { hover: [{
18982
+ effectId: "background-on-hover",
18983
+ options: { colorToken: "background" }
18984
+ }] }
18985
+ }
18986
+ },
18987
+ ghost: {
18988
+ kind: "complete",
18989
+ appearance: {
18990
+ background: {
18991
+ type: "surface",
18992
+ role: "link"
18993
+ },
18994
+ borderRadius: "rounded-full",
18995
+ effects: { hover: [{
18996
+ effectId: "background-on-hover",
18997
+ options: { colorToken: "surface" }
18998
+ }] }
18999
+ }
19000
+ },
19001
+ accent: {
19002
+ kind: "complete",
19003
+ appearance: {
19004
+ background: {
19005
+ type: "solid",
19006
+ colorToken: "secondary"
19007
+ },
19008
+ borderRadius: "rounded-full",
19009
+ effects: { hover: [{ effectId: "pop" }] }
19010
+ }
18358
19011
  }
18359
- ]
19012
+ }
18360
19013
  }
18361
19014
  });
18362
- }));
18363
- //#endregion
18364
- //#region ../theme-core/src/buttons/personalities/joy-stamp.ts
18365
- var joyStamp;
18366
- var init_joy_stamp = __esmMin((() => {
18367
- init_types$13();
18368
- joyStamp = defineButtonPersonality({
19015
+ joyStampRecipe = defineStaticButtonStyleRecipe({
18369
19016
  id: "joy-stamp",
18370
- name: "Joy Stamp",
18371
- description: "Pill buttons with a hard, brand-coloured offset shadow that presses in on hover.",
19017
+ accessibilityLabel: "Bold pill buttons with a hard offset shadow",
18372
19018
  tags: {
18373
19019
  tone: "bold",
18374
19020
  energy: "vibrant",
18375
19021
  motion: "expressive",
18376
19022
  era: "organic"
18377
19023
  },
18378
- buttonSystem: {
19024
+ system: {
18379
19025
  global: {
18380
19026
  cornerStyle: "pill",
18381
19027
  shadow: "high",
@@ -18405,61 +19051,96 @@ var init_joy_stamp = __esmMin((() => {
18405
19051
  fontSize: "text-2xl"
18406
19052
  }
18407
19053
  },
18408
- variants: [{
18409
- id: "primary",
18410
- name: "Primary",
18411
- enabled: true,
18412
- priority: 1,
18413
- background: {
18414
- type: "solid",
18415
- colorToken: "primary"
19054
+ roles: {
19055
+ primary: {
19056
+ kind: "complete",
19057
+ appearance: {
19058
+ background: {
19059
+ type: "solid",
19060
+ colorToken: "primary"
19061
+ },
19062
+ borderRadius: "rounded-full",
19063
+ shadow: {
19064
+ elevation: "high",
19065
+ softness: "hard",
19066
+ position: "bottom-right",
19067
+ colorToken: "text"
19068
+ },
19069
+ effects: { hover: [{ effectId: "press-down" }] }
19070
+ }
18416
19071
  },
18417
- borderRadius: "rounded-full",
18418
- shadow: {
18419
- elevation: "high",
18420
- softness: "hard",
18421
- position: "bottom-right",
18422
- colorToken: "text"
19072
+ secondary: {
19073
+ kind: "complete",
19074
+ appearance: {
19075
+ background: {
19076
+ type: "surface",
19077
+ role: "link"
19078
+ },
19079
+ borderRadius: "rounded-full",
19080
+ border: { widthClass: "border-2" },
19081
+ shadow: {
19082
+ elevation: "high",
19083
+ softness: "hard",
19084
+ position: "bottom-right",
19085
+ colorToken: "secondary"
19086
+ },
19087
+ effects: { hover: [{ effectId: "press-down" }] }
19088
+ }
18423
19089
  },
18424
- effects: { hover: [{ effectId: "press-down" }] }
18425
- }, {
18426
- id: "secondary",
18427
- name: "Secondary",
18428
- enabled: true,
18429
- priority: 2,
18430
- background: {
18431
- type: "surface",
18432
- role: "link"
19090
+ outline: {
19091
+ kind: "derive",
19092
+ from: "secondary"
18433
19093
  },
18434
- borderRadius: "rounded-full",
18435
- border: { widthClass: "border-2" },
18436
- shadow: {
18437
- elevation: "high",
18438
- softness: "hard",
18439
- position: "bottom-right",
18440
- colorToken: "secondary"
19094
+ ghost: {
19095
+ kind: "complete",
19096
+ appearance: {
19097
+ background: {
19098
+ type: "surface",
19099
+ role: "link"
19100
+ },
19101
+ borderRadius: "rounded-full",
19102
+ effects: { hover: [{ effectId: "press-down" }] }
19103
+ }
18441
19104
  },
18442
- effects: { hover: [{ effectId: "press-down" }] }
18443
- }]
19105
+ accent: {
19106
+ kind: "derive",
19107
+ from: "primary",
19108
+ overrides: { background: {
19109
+ type: "solid",
19110
+ colorToken: "accent"
19111
+ } }
19112
+ }
19113
+ }
18444
19114
  }
18445
19115
  });
18446
- }));
18447
- //#endregion
18448
- //#region ../theme-core/src/buttons/personalities/ornate-ritual.ts
18449
- var ornateRitual;
18450
- var init_ornate_ritual = __esmMin((() => {
18451
- init_types$13();
18452
- ornateRitual = defineButtonPersonality({
19116
+ ornateGhostSizes = {
19117
+ sm: {
19118
+ padding: "0.375rem 0",
19119
+ fontSize: "text-xs"
19120
+ },
19121
+ md: {
19122
+ padding: "0.5rem 0",
19123
+ fontSize: "text-sm"
19124
+ },
19125
+ lg: {
19126
+ padding: "0.625rem 0",
19127
+ fontSize: "text-base"
19128
+ },
19129
+ xl: {
19130
+ padding: "0.75rem 0",
19131
+ fontSize: "text-lg"
19132
+ }
19133
+ };
19134
+ ornateRitualRecipe = defineStaticButtonStyleRecipe({
18453
19135
  id: "ornate-ritual",
18454
- name: "Ornate Ritual",
18455
- description: "Ceremonial framed buttons with jewel-toned fills and quiet color-change hover states.",
19136
+ accessibilityLabel: "Uppercase framed buttons with restrained movement",
18456
19137
  tags: {
18457
19138
  tone: "classic",
18458
19139
  energy: "vibrant",
18459
19140
  motion: "subtle",
18460
19141
  era: "organic"
18461
19142
  },
18462
- buttonSystem: {
19143
+ system: {
18463
19144
  global: {
18464
19145
  cornerStyle: "rounded",
18465
19146
  textTransform: "uppercase",
@@ -18487,641 +19168,148 @@ var init_ornate_ritual = __esmMin((() => {
18487
19168
  fontSize: "text-base"
18488
19169
  }
18489
19170
  },
18490
- variants: [
18491
- {
18492
- id: "primary",
18493
- name: "Primary",
18494
- enabled: true,
18495
- priority: 1,
18496
- background: {
18497
- type: "solid",
18498
- colorToken: "primary"
18499
- },
18500
- borderRadius: "rounded-md",
18501
- border: { widthClass: "border" },
18502
- effects: {
18503
- hover: [{
18504
- effectId: "background-on-hover",
18505
- options: { colorToken: "primary-100" }
18506
- }],
18507
- active: [{
18508
- effectId: "scale-down",
18509
- options: { scale: "0.98" }
18510
- }]
18511
- }
18512
- },
18513
- {
18514
- id: "secondary",
18515
- name: "Secondary",
18516
- enabled: true,
18517
- priority: 2,
18518
- background: {
18519
- type: "solid",
18520
- colorToken: "secondary"
18521
- },
18522
- borderRadius: "rounded-md",
18523
- border: { widthClass: "border" },
18524
- effects: { hover: [{
18525
- effectId: "background-on-hover",
18526
- options: { colorToken: "surface" }
18527
- }] }
18528
- },
18529
- {
18530
- id: "outline",
18531
- name: "Outline",
18532
- enabled: true,
18533
- priority: 3,
18534
- background: {
18535
- type: "surface",
18536
- role: "link"
18537
- },
18538
- borderRadius: "rounded-md",
18539
- border: { widthClass: "border" },
18540
- effects: { hover: [{
18541
- effectId: "background-on-hover",
18542
- options: { colorToken: "muted" }
18543
- }] }
18544
- },
18545
- {
18546
- id: "ghost",
18547
- name: "Ghost",
18548
- enabled: true,
18549
- priority: 3,
18550
- background: {
18551
- type: "surface",
18552
- role: "link"
18553
- },
18554
- borderRadius: "rounded-none",
18555
- sizes: {
18556
- sm: {
18557
- padding: "0.375rem 0",
18558
- fontSize: "text-xs"
18559
- },
18560
- md: {
18561
- padding: "0.5rem 0",
18562
- fontSize: "text-sm"
19171
+ roles: {
19172
+ primary: {
19173
+ kind: "complete",
19174
+ appearance: {
19175
+ background: {
19176
+ type: "solid",
19177
+ colorToken: "primary"
18563
19178
  },
18564
- lg: {
18565
- padding: "0.625rem 0",
18566
- fontSize: "text-base"
18567
- },
18568
- xl: {
18569
- padding: "0.75rem 0",
18570
- fontSize: "text-lg"
18571
- }
18572
- },
18573
- effects: { base: [{
18574
- effectId: "border-bottom-grow",
18575
- options: {
18576
- height: 1,
18577
- colorToken: "accent",
18578
- origin: "left"
19179
+ borderRadius: "rounded-md",
19180
+ border: { widthClass: "border" },
19181
+ effects: {
19182
+ hover: [{
19183
+ effectId: "background-on-hover",
19184
+ options: { colorToken: "primary-100" }
19185
+ }],
19186
+ active: [{
19187
+ effectId: "scale-down",
19188
+ options: { scale: "0.98" }
19189
+ }]
18579
19190
  }
18580
- }] }
18581
- }
18582
- ]
18583
- }
18584
- });
18585
- }));
18586
- //#endregion
18587
- //#region ../theme-core/src/buttons/personalities/pebble.ts
18588
- var pebble;
18589
- var init_pebble = __esmMin((() => {
18590
- init_types$13();
18591
- pebble = defineButtonPersonality({
18592
- id: "pebble",
18593
- name: "Pebble",
18594
- description: "Generous pill buttons with a quiet colour-softening hover.",
18595
- tags: {
18596
- tone: "classic",
18597
- energy: "calm",
18598
- motion: "standard",
18599
- era: "organic"
18600
- },
18601
- buttonSystem: {
18602
- global: {
18603
- cornerStyle: "pill",
18604
- textTransform: "none",
18605
- fontWeight: 500,
18606
- borderWidth: 2,
18607
- hoverTransform: "none",
18608
- hoverColor: "none"
18609
- },
18610
- sizes: {
18611
- sm: {
18612
- padding: "0.625rem 1.75rem",
18613
- fontSize: "text-sm"
18614
- },
18615
- md: { padding: "0.875rem 2.25rem" },
18616
- lg: {
18617
- padding: "1.125rem 2.75rem",
18618
- fontSize: "text-lg"
18619
- },
18620
- xl: {
18621
- padding: "1.5rem 3.5rem",
18622
- fontSize: "text-xl"
18623
- }
18624
- },
18625
- variants: [
18626
- {
18627
- id: "primary",
18628
- name: "Primary",
18629
- enabled: true,
18630
- priority: 1,
18631
- background: {
18632
- type: "solid",
18633
- colorToken: "primary"
18634
- },
18635
- borderRadius: "rounded-full",
18636
- effects: { hover: [{
18637
- effectId: "darken-background",
18638
- options: { amount: 100 }
18639
- }] }
18640
- },
18641
- {
18642
- id: "secondary",
18643
- name: "Secondary",
18644
- enabled: true,
18645
- priority: 2,
18646
- background: {
18647
- type: "surface",
18648
- role: "link"
18649
- },
18650
- borderRadius: "rounded-full",
18651
- border: { widthClass: "border-2" },
18652
- effects: { hover: [{
18653
- effectId: "background-on-hover",
18654
- options: { colorToken: "accent" }
18655
- }] }
18656
- },
18657
- {
18658
- id: "outline",
18659
- name: "Outline",
18660
- enabled: true,
18661
- priority: 3,
18662
- background: {
18663
- type: "surface",
18664
- role: "link"
18665
- },
18666
- borderRadius: "rounded-full",
18667
- border: { widthClass: "border" },
18668
- effects: { hover: [{
18669
- effectId: "background-on-hover",
18670
- options: { colorToken: "surface" }
18671
- }] }
19191
+ }
18672
19192
  },
18673
- {
18674
- id: "ghost",
18675
- name: "Ghost",
18676
- enabled: true,
18677
- priority: 3,
18678
- background: {
18679
- type: "surface",
18680
- role: "link"
18681
- },
18682
- borderRadius: "rounded-full",
18683
- sizes: {
18684
- sm: {
18685
- padding: "0.375rem 0.875rem",
18686
- fontSize: "text-sm"
19193
+ secondary: {
19194
+ kind: "complete",
19195
+ appearance: {
19196
+ background: {
19197
+ type: "solid",
19198
+ colorToken: "secondary"
18687
19199
  },
18688
- md: { padding: "0.5rem 1rem" },
18689
- lg: {
18690
- padding: "0.625rem 1.25rem",
18691
- fontSize: "text-lg"
18692
- },
18693
- xl: {
18694
- padding: "0.75rem 1.5rem",
18695
- fontSize: "text-xl"
18696
- }
19200
+ borderRadius: "rounded-md",
19201
+ border: { widthClass: "border" },
19202
+ effects: { hover: [{
19203
+ effectId: "background-on-hover",
19204
+ options: { colorToken: "surface" }
19205
+ }] }
18697
19206
  }
18698
- }
18699
- ]
18700
- }
18701
- });
18702
- }));
18703
- //#endregion
18704
- //#region ../theme-core/src/buttons/personalities/quiet-arrow.ts
18705
- var quietArrow;
18706
- var init_quiet_arrow = __esmMin((() => {
18707
- init_types$13();
18708
- quietArrow = defineButtonPersonality({
18709
- id: "quiet-arrow",
18710
- name: "Quiet Arrow",
18711
- description: "Wide, flat arrow buttons with a solid primary and a primary-colour outlined secondary.",
18712
- tags: {
18713
- tone: "classic",
18714
- energy: "calm",
18715
- motion: "subtle",
18716
- era: "editorial"
18717
- },
18718
- buttonSystem: {
18719
- global: {
18720
- cornerStyle: "rounded",
18721
- textTransform: "uppercase",
18722
- fontWeight: 500,
18723
- borderWidth: 1,
18724
- typography: "body",
18725
- fontSize: "text-sm",
18726
- letterSpacing: "loose",
18727
- hoverTransform: "none",
18728
- hoverColor: "none"
18729
- },
18730
- sizes: {
18731
- sm: {
18732
- padding: "0.625rem 1.25rem",
18733
- fontSize: "text-xs"
18734
- },
18735
- md: {
18736
- padding: "0.8125rem 1.75rem",
18737
- fontSize: "text-sm"
18738
- },
18739
- lg: {
18740
- padding: "0.9375rem 2.125rem",
18741
- fontSize: "text-sm"
18742
- },
18743
- xl: {
18744
- padding: "1.0625rem 2.5rem",
18745
- fontSize: "text-base"
18746
- }
18747
- },
18748
- variants: [
18749
- {
18750
- id: "primary",
18751
- name: "Primary",
18752
- enabled: true,
18753
- priority: 1,
18754
- background: {
18755
- type: "solid",
18756
- colorToken: "primary"
18757
- },
18758
- borderRadius: "rounded-xl",
18759
- affordance: { iconId: "ArrowRight" },
18760
- effects: { hover: [{
18761
- effectId: "darken-background",
18762
- options: { amount: 100 }
18763
- }] }
18764
- },
18765
- {
18766
- id: "secondary",
18767
- name: "Secondary",
18768
- enabled: true,
18769
- priority: 2,
18770
- background: {
18771
- type: "surface",
18772
- role: "link"
18773
- },
18774
- borderRadius: "rounded-xl",
18775
- border: { widthClass: "border" },
18776
- affordance: { iconId: "ArrowRight" },
18777
- effects: { hover: [{
18778
- effectId: "background-on-hover",
18779
- options: { colorToken: "surfaceAlt" }
18780
- }] }
18781
- },
18782
- {
18783
- id: "outline",
18784
- name: "Outline",
18785
- enabled: true,
18786
- priority: 3,
18787
- background: {
18788
- type: "surface",
18789
- role: "link"
18790
- },
18791
- borderRadius: "rounded-xl",
18792
- border: { widthClass: "border" }
18793
19207
  },
18794
- {
18795
- id: "ghost",
18796
- name: "Ghost",
18797
- enabled: true,
18798
- priority: 3,
18799
- background: {
18800
- type: "surface",
18801
- role: "link"
18802
- },
18803
- borderRadius: "rounded-xl"
18804
- }
18805
- ]
18806
- }
18807
- });
18808
- }));
18809
- //#endregion
18810
- //#region ../theme-core/src/buttons/personalities/showtime-pill.ts
18811
- var showtimePill;
18812
- var init_showtime_pill = __esmMin((() => {
18813
- init_types$13();
18814
- showtimePill = defineButtonPersonality({
18815
- id: "showtime-pill",
18816
- name: "Showtime Pill",
18817
- description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
18818
- tags: {
18819
- tone: "bold",
18820
- energy: "vibrant",
18821
- motion: "expressive",
18822
- era: "modern"
18823
- },
18824
- buttonSystem: {
18825
- global: {
18826
- cornerStyle: "pill",
18827
- shadow: "low",
18828
- textTransform: "uppercase",
18829
- fontWeight: 700,
18830
- borderWidth: 2,
18831
- hoverTransform: "lift",
18832
- hoverColor: "darken",
18833
- typography: "body",
18834
- paddingPreset: "spacious",
18835
- italic: false
18836
- },
18837
- sizes: {
18838
- sm: {
18839
- padding: "0.625rem 1.25rem",
18840
- fontSize: "0.875rem"
18841
- },
18842
- md: {
18843
- padding: "0.875rem 1.75rem",
18844
- fontSize: "1rem"
18845
- },
18846
- lg: {
18847
- padding: "1.125rem 2.25rem",
18848
- fontSize: "1.125rem"
18849
- },
18850
- xl: {
18851
- padding: "1.125rem 2.25rem",
18852
- fontSize: "1.125rem"
18853
- }
18854
- },
18855
- variants: [
18856
- {
18857
- id: "primary",
18858
- name: "Primary",
18859
- enabled: true,
18860
- priority: 1,
18861
- background: {
18862
- type: "solid",
18863
- colorToken: "primary"
18864
- },
18865
- borderRadius: "rounded-full",
18866
- effects: { hover: [{ effectId: "pop" }] }
18867
- },
18868
- {
18869
- id: "secondary",
18870
- name: "Secondary",
18871
- enabled: true,
18872
- priority: 2,
18873
- background: {
18874
- type: "surface",
18875
- role: "link"
18876
- },
18877
- borderRadius: "rounded-full",
18878
- border: { widthClass: "border-2" },
18879
- effects: { hover: [{ effectId: "pop" }] }
18880
- },
18881
- {
18882
- id: "hero",
18883
- name: "Hero",
18884
- enabled: true,
18885
- priority: 1,
18886
- background: {
18887
- type: "solid",
18888
- colorToken: "secondary"
18889
- },
18890
- borderRadius: "rounded-full",
18891
- effects: { hover: [{ effectId: "pop" }] }
18892
- },
18893
- {
18894
- id: "header",
18895
- name: "Header",
18896
- enabled: true,
18897
- priority: 2,
18898
- background: {
18899
- type: "solid",
18900
- colorToken: "background"
18901
- },
18902
- borderRadius: "rounded-full",
18903
- border: { widthClass: "border-2" },
18904
- effects: { hover: [{
18905
- effectId: "background-on-hover",
18906
- options: { colorToken: "surface" }
18907
- }] }
18908
- },
18909
- {
18910
- id: "outline",
18911
- name: "Outline",
18912
- enabled: true,
18913
- priority: 3,
18914
- background: {
18915
- type: "surface",
18916
- role: "link"
18917
- },
18918
- borderRadius: "rounded-full",
18919
- border: { widthClass: "border-2" },
18920
- effects: { hover: [{
18921
- effectId: "background-on-hover",
18922
- options: { colorToken: "background" }
18923
- }] }
18924
- },
18925
- {
18926
- id: "ghost",
18927
- name: "Ghost",
18928
- enabled: true,
18929
- priority: 3,
18930
- background: {
18931
- type: "surface",
18932
- role: "link"
18933
- },
18934
- borderRadius: "rounded-full",
18935
- effects: { hover: [{
18936
- effectId: "background-on-hover",
18937
- options: { colorToken: "surface" }
18938
- }] }
18939
- }
18940
- ]
18941
- }
18942
- });
18943
- }));
18944
- //#endregion
18945
- //#region ../theme-core/src/buttons/personalities/soft-pill.ts
18946
- var softPill;
18947
- var init_soft_pill = __esmMin((() => {
18948
- init_types$13();
18949
- softPill = defineButtonPersonality({
18950
- id: "soft-pill",
18951
- name: "Soft Pill",
18952
- description: "Rounded pills with a gentle lift on hover. Quietly modern.",
18953
- tags: {
18954
- tone: "classic",
18955
- energy: "calm",
18956
- motion: "subtle",
18957
- era: "organic"
18958
- },
18959
- buttonSystem: {
18960
- global: {
18961
- cornerStyle: "pill",
18962
- shadow: "low",
18963
- textTransform: "none",
18964
- fontWeight: 500,
18965
- borderWidth: 2,
18966
- hoverTransform: "lift",
18967
- hoverColor: "none"
18968
- },
18969
- variants: [
18970
- {
18971
- id: "primary",
18972
- name: "Primary",
18973
- enabled: true,
18974
- priority: 1,
18975
- background: {
18976
- type: "solid",
18977
- colorToken: "primary"
18978
- },
18979
- borderRadius: "rounded-full",
18980
- shadow: {
18981
- elevation: "low",
18982
- softness: "soft",
18983
- position: "bottom"
18984
- },
18985
- effects: {
18986
- hover: [{
18987
- effectId: "lift",
18988
- options: { translateY: "-1px" }
18989
- }],
18990
- active: [{
18991
- effectId: "scale-down",
18992
- options: { scale: "0.98" }
18993
- }]
19208
+ outline: {
19209
+ kind: "complete",
19210
+ appearance: {
19211
+ background: {
19212
+ type: "surface",
19213
+ role: "link"
19214
+ },
19215
+ borderRadius: "rounded-md",
19216
+ border: { widthClass: "border" },
19217
+ effects: { hover: [{
19218
+ effectId: "background-on-hover",
19219
+ options: { colorToken: "muted" }
19220
+ }] }
18994
19221
  }
18995
19222
  },
18996
- {
18997
- id: "secondary",
18998
- name: "Secondary",
18999
- enabled: true,
19000
- priority: 2,
19001
- background: {
19002
- type: "surface",
19003
- role: "link"
19004
- },
19005
- borderRadius: "rounded-full",
19006
- border: { widthClass: "border-2" },
19007
- effects: { hover: [{
19008
- effectId: "background-on-hover",
19009
- options: { colorToken: "surface" }
19010
- }] }
19011
- },
19012
- {
19013
- id: "outline",
19014
- name: "Outline",
19015
- enabled: true,
19016
- priority: 3,
19017
- background: {
19018
- type: "surface",
19019
- role: "link"
19020
- },
19021
- borderRadius: "rounded-full",
19022
- border: { widthClass: "border" },
19023
- effects: { hover: [{
19024
- effectId: "background-on-hover",
19025
- options: { colorToken: "surface" }
19026
- }] }
19223
+ ghost: {
19224
+ kind: "complete",
19225
+ appearance: {
19226
+ background: {
19227
+ type: "surface",
19228
+ role: "link"
19229
+ },
19230
+ borderRadius: "rounded-none",
19231
+ sizes: ornateGhostSizes,
19232
+ effects: { base: [{
19233
+ effectId: "border-bottom-grow",
19234
+ options: {
19235
+ height: 1,
19236
+ colorToken: "accent",
19237
+ origin: "left"
19238
+ }
19239
+ }] }
19240
+ }
19027
19241
  },
19028
- {
19029
- id: "ghost",
19030
- name: "Ghost",
19031
- enabled: true,
19032
- priority: 3,
19033
- background: {
19034
- type: "surface",
19035
- role: "link"
19036
- },
19037
- borderRadius: "rounded-full",
19038
- effects: { hover: [{
19039
- effectId: "background-on-hover",
19040
- options: { colorToken: "surface" }
19041
- }] }
19242
+ accent: {
19243
+ kind: "derive",
19244
+ from: "primary",
19245
+ overrides: { background: {
19246
+ type: "solid",
19247
+ colorToken: "accent"
19248
+ } }
19042
19249
  }
19043
- ]
19250
+ }
19044
19251
  }
19045
19252
  });
19046
19253
  }));
19047
19254
  //#endregion
19048
- //#region ../theme-core/src/buttons/personalities/two-tone-pill.ts
19049
- var solidSecondary, twoTonePill;
19050
- var init_two_tone_pill = __esmMin((() => {
19051
- init_types$14();
19052
- init_soft_pill();
19053
- init_types$13();
19054
- solidSecondary = {
19055
- id: "secondary",
19056
- name: "Secondary",
19057
- enabled: true,
19058
- priority: 2,
19059
- background: {
19060
- type: "solid",
19061
- colorToken: unsafeAsOpaqueButtonColourToken("secondary")
19062
- },
19063
- borderRadius: "rounded-full",
19064
- shadow: {
19065
- elevation: "none",
19066
- softness: null,
19067
- position: "bottom"
19068
- },
19069
- effects: {
19070
- hover: [{
19071
- effectId: "background-on-hover-alpha",
19072
- options: {
19073
- colorToken: "secondary",
19074
- opacity: 88
19075
- }
19076
- }],
19077
- active: [{
19078
- effectId: "scale-down",
19079
- options: { scale: "0.98" }
19080
- }]
19081
- }
19255
+ //#region ../theme-core/src/buttons/styles/registry.ts
19256
+ function findButtonStyleRecipe(id) {
19257
+ const recipe = recipesById.get(id);
19258
+ if (recipe === void 0) throw new Error(`Button style registry is missing known style ${id}`);
19259
+ return recipe;
19260
+ }
19261
+ function resolveButtonStyleSelection(selection) {
19262
+ switch (selection.styleId) {
19263
+ case "soft-pill": return resolveButtonStyleRecipe(softPillRecipe, selection.parameters);
19264
+ case "earth-pill": return resolveButtonStyleRecipe(earthPillRecipe, selection.parameters);
19265
+ case "confident-chip": return resolveButtonStyleRecipe(confidentChipRecipe, selection.parameters);
19266
+ case "editorial-link": return resolveButtonStyleRecipe(editorialLinkRecipe, selection.parameters);
19267
+ case "pebble": return resolveButtonStyleRecipe(pebbleRecipe, selection.parameters);
19268
+ case "ink-stamp": return resolveButtonStyleRecipe(inkStampRecipe, selection.parameters);
19269
+ case "flat-ink": return resolveButtonStyleRecipe(flatInkRecipe, selection.parameters);
19270
+ case "brushed-wash": return resolveButtonStyleRecipe(brushedWashRecipe, selection.parameters);
19271
+ case "showtime-pill": return resolveButtonStyleRecipe(showtimePillRecipe, selection.parameters);
19272
+ case "joy-stamp": return resolveButtonStyleRecipe(joyStampRecipe, selection.parameters);
19273
+ case "ornate-ritual": return resolveButtonStyleRecipe(ornateRitualRecipe, selection.parameters);
19274
+ case "quiet-arrow": return resolveButtonStyleRecipe(quietArrowRecipe, selection.parameters);
19275
+ }
19276
+ }
19277
+ function defaultButtonStyleSelectionFor(styleId) {
19278
+ return {
19279
+ styleId,
19280
+ parameters: findButtonStyleRecipe(styleId).defaultParameters
19082
19281
  };
19083
- twoTonePill = defineButtonPersonality({
19084
- id: "two-tone-pill",
19085
- name: "Two-tone Pill",
19086
- description: "Rounded pills with distinct solid primary and secondary brand colours.",
19087
- tags: softPill.tags,
19088
- buttonSystem: {
19089
- ...softPill.buttonSystem,
19090
- variants: softPill.buttonSystem.variants.map((variant) => variant.id === "secondary" ? solidSecondary : variant)
19091
- }
19092
- });
19093
- })), buttonPersonalities;
19094
- var init_personalities = __esmMin((() => {
19095
- init_brushed_wash();
19096
- init_confident_chip();
19097
- init_earth_pill();
19098
- init_editorial_link();
19099
- init_flat_ink();
19100
- init_ink_stamp();
19101
- init_joy_stamp();
19102
- init_ornate_ritual();
19103
- init_pebble();
19104
- init_quiet_arrow();
19105
- init_showtime_pill();
19106
- init_soft_pill();
19107
- init_two_tone_pill();
19108
- init_types$13();
19109
- buttonPersonalities = [
19110
- softPill,
19111
- twoTonePill,
19112
- earthPill,
19113
- confidentChip,
19114
- editorialLink,
19115
- pebble,
19116
- inkStamp,
19117
- flatInk,
19118
- brushedWash,
19119
- showtimePill,
19120
- joyStamp,
19121
- ornateRitual,
19122
- quietArrow
19123
- ];
19124
- new Map(buttonPersonalities.map((p) => [p.id, p]));
19282
+ }
19283
+ var buttonStyleRecipes, recipesById, registeredIds;
19284
+ var init_registry$2 = __esmMin((() => {
19285
+ init_domain();
19286
+ init_selection();
19287
+ init_quietArrow();
19288
+ init_staticRecipes();
19289
+ buttonStyleRecipes = [
19290
+ softPillRecipe,
19291
+ earthPillRecipe,
19292
+ confidentChipRecipe,
19293
+ editorialLinkRecipe,
19294
+ pebbleRecipe,
19295
+ inkStampRecipe,
19296
+ flatInkRecipe,
19297
+ brushedWashRecipe,
19298
+ showtimePillRecipe,
19299
+ joyStampRecipe,
19300
+ ornateRitualRecipe,
19301
+ quietArrowRecipe
19302
+ ];
19303
+ recipesById = new Map(buttonStyleRecipes.map((recipe) => [recipe.id, recipe]));
19304
+ registeredIds = buttonStyleRecipes.map((recipe) => recipe.id);
19305
+ if (registeredIds.length !== BUTTON_STYLE_IDS.length || BUTTON_STYLE_IDS.some((id) => !recipesById.has(id))) throw new Error("Button style registry and ButtonStyleId catalog are out of sync");
19306
+ }));
19307
+ //#endregion
19308
+ //#region ../theme-core/src/buttons/styles/index.ts
19309
+ var init_styles = __esmMin((() => {
19310
+ init_domain();
19311
+ init_registry$2();
19312
+ init_selection();
19125
19313
  }));
19126
19314
  //#endregion
19127
19315
  //#region ../theme-core/src/accordions/siteStyleDefaults.ts
@@ -19711,10 +19899,10 @@ var init_gradients = __esmMin((() => {
19711
19899
  init_utils$4();
19712
19900
  }));
19713
19901
  var init_customizableSurfaces = __esmMin((() => {
19714
- init_types$17();
19902
+ init_types$16();
19715
19903
  })), logoTextConfidenceValues, logoAssetShapeValues, logoKindValues, logoDensityValues, logoContainsTextSchema, logoAnalysisSourceSchema, brandDisplayModeValues, logoAccommodationPatternValues, logoSizePolicyValues;
19716
19904
  var init_logoBranding = __esmMin((() => {
19717
- init_types$17();
19905
+ init_types$16();
19718
19906
  logoTextConfidenceValues = [
19719
19907
  "low",
19720
19908
  "medium",
@@ -20187,7 +20375,7 @@ var init_headerLooks = __esmMin((() => {
20187
20375
  init_headerCtaVariants();
20188
20376
  init_customizableSurfaces();
20189
20377
  init_logoBranding();
20190
- init_types$17();
20378
+ init_types$16();
20191
20379
  titleOnlyLogoAccommodation = {
20192
20380
  pattern: "title-only",
20193
20381
  supportedShapes: [
@@ -20825,25 +21013,9 @@ var init_headerLooks = __esmMin((() => {
20825
21013
  function asFooterLookId(value) {
20826
21014
  return value;
20827
21015
  }
20828
- function asFooterLayoutId(value) {
20829
- return value;
20830
- }
20831
- function asFooterStyleId(value) {
20832
- return value;
20833
- }
20834
- /**
20835
- * No-nav-safe identity footer: brand and legal/supporting copy carry the
20836
- * footer without implying missing navigation.
20837
- */
20838
- function identityQuietFooter(theme) {
21016
+ function quietFooterLinks(theme) {
20839
21017
  return {
20840
21018
  ...theme.footer,
20841
- variant: "simple",
20842
- maxWidth: "container",
20843
- background: {
20844
- type: "color",
20845
- color: "surface"
20846
- },
20847
21019
  navStyle: "minimal",
20848
21020
  navWeight: "regular",
20849
21021
  navColor: "text",
@@ -20856,345 +21028,46 @@ function identityQuietFooter(theme) {
20856
21028
  hoverColorToken: "primary",
20857
21029
  padding: "none",
20858
21030
  borderRadius: "none"
20859
- },
20860
- navLayout: {
20861
- layout: "inline-wrap",
20862
- align: "start",
20863
- gapX: "default",
20864
- gapY: "tight"
20865
- },
20866
- logo: {
20867
- showLogo: true,
20868
- showLogoText: true,
20869
- placement: "left",
20870
- size: "sm",
20871
- align: "start"
20872
- },
20873
- bottomBar: {
20874
- enabled: false,
20875
- fullBleed: false,
20876
- textAlign: "left",
20877
- paddingX: "default",
20878
- paddingY: "compact",
20879
- borderTop: { width: "none" }
20880
21031
  }
20881
21032
  };
20882
21033
  }
20883
- /**
20884
- * Back-compat alias for the previous default footer Look. It keeps existing
20885
- * persisted selections valid while staying hidden from the new layout/style UI.
20886
- */
20887
- function mutedGroundingFooter(theme) {
20888
- return {
20889
- ...identityQuietFooter(theme),
20890
- background: theme.footer.background,
20891
- navStyle: theme.footer.navStyle,
20892
- navColor: theme.footer.navColor,
20893
- navWeight: theme.footer.navWeight,
20894
- navLinkStyle: theme.footer.navLinkStyle,
20895
- bottomTextLinkStyle: theme.footer.bottomTextLinkStyle
20896
- };
20897
- }
20898
- /** Applies a high-contrast brand band with a darker full-bleed bottom bar. */
20899
- function brandTwoBandFooter(theme) {
21034
+ function emphasizedFooterLinks(theme) {
20900
21035
  return {
20901
21036
  ...theme.footer,
20902
- variant: "split",
20903
- maxWidth: "container",
20904
- background: {
20905
- type: "color",
20906
- color: "primary-800"
20907
- },
20908
21037
  navStyle: "minimal",
20909
21038
  navWeight: "medium",
20910
- navColor: "primaryForeground",
20911
- navLinkStyle: {
20912
- typography: "body",
20913
- fontWeight: "medium",
20914
- textTransform: "none",
20915
- italic: false,
20916
- colorToken: "primaryForeground",
20917
- hoverColorToken: "secondary",
20918
- padding: "none",
20919
- borderRadius: "none"
20920
- },
20921
- bottomTextLinkStyle: {
20922
- colorToken: "secondary",
20923
- decorationColorToken: "secondary"
20924
- },
20925
- navLayout: {
20926
- layout: "inline-wrap",
20927
- align: "start",
20928
- gapX: "default",
20929
- gapY: "tight"
20930
- },
20931
- logo: {
20932
- showLogo: true,
20933
- showLogoText: false,
20934
- placement: "left",
20935
- size: "sm",
20936
- align: "start"
20937
- },
20938
- bottomBar: {
20939
- enabled: true,
20940
- fullBleed: true,
20941
- background: {
20942
- type: "color",
20943
- color: "primary-900"
20944
- },
20945
- textColor: "primaryForeground",
20946
- textAlign: "center",
20947
- paddingX: "default",
20948
- paddingY: "compact",
20949
- borderTop: { width: "none" }
20950
- }
20951
- };
20952
- }
20953
- /**
20954
- * Centered stack on a softly tinted band: logo, inline nav, address, and a
20955
- * hairline-topped copyright line, all centered.
20956
- */
20957
- function centeredCalmFooter(theme) {
20958
- return {
20959
- ...theme.footer,
20960
- variant: "simple",
20961
- maxWidth: "container",
20962
- background: {
20963
- type: "color",
20964
- color: "surfaceAlt"
20965
- },
20966
- navStyle: "minimal",
20967
- navWeight: "regular",
20968
- navColor: "text",
20969
- navLinkStyle: {
20970
- typography: "body",
20971
- fontWeight: "regular",
20972
- textTransform: "none",
20973
- italic: false,
20974
- colorToken: "text",
20975
- hoverColorToken: "primary",
20976
- padding: "none",
20977
- borderRadius: "none"
20978
- },
20979
- navLayout: {
20980
- layout: "inline-wrap",
20981
- align: "center",
20982
- gapX: "relaxed",
20983
- gapY: "tight"
20984
- },
20985
- logo: {
20986
- showLogo: true,
20987
- showLogoText: false,
20988
- placement: "above",
20989
- size: "sm",
20990
- align: "center"
20991
- },
20992
- bottomBar: {
20993
- enabled: true,
20994
- fullBleed: false,
20995
- textAlign: "center",
20996
- paddingX: "default",
20997
- paddingY: "compact",
20998
- borderTop: { width: "thin" }
20999
- }
21000
- };
21001
- }
21002
- /** Editorial split footer: compact nav on one side, brand signoff on the other. */
21003
- function splitEditorialFooter(theme) {
21004
- return {
21005
- ...theme.footer,
21006
- variant: "split",
21007
- maxWidth: "container",
21008
- background: {
21009
- type: "color",
21010
- color: "surface"
21011
- },
21012
- navStyle: "minimal",
21013
- navWeight: "regular",
21014
- navColor: "text",
21015
- navLinkStyle: {
21016
- typography: "body",
21017
- fontWeight: "regular",
21018
- textTransform: "none",
21019
- italic: false,
21020
- colorToken: "text",
21021
- hoverColorToken: "primary",
21022
- padding: "none",
21023
- borderRadius: "none"
21024
- },
21025
- navLayout: {
21026
- layout: "inline-wrap",
21027
- align: "start",
21028
- gapX: "relaxed",
21029
- gapY: "tight"
21030
- },
21031
- logo: {
21032
- showLogo: true,
21033
- showLogoText: true,
21034
- placement: "right",
21035
- size: "sm",
21036
- align: "end"
21037
- },
21038
- bottomBar: {
21039
- enabled: true,
21040
- fullBleed: false,
21041
- textAlign: "left",
21042
- paddingX: "default",
21043
- paddingY: "compact",
21044
- borderTop: { width: "thin" }
21045
- }
21046
- };
21047
- }
21048
- /**
21049
- * Editorial columns: site name and supporting copy on the left, inline nav on
21050
- * the right, with a hairline-topped bottom line. Uses the footer block's
21051
- * columns layout.
21052
- */
21053
- function editorialColumnsFooter(theme) {
21054
- return {
21055
- ...theme.footer,
21056
- variant: "columns",
21057
- maxWidth: "container",
21058
- background: {
21059
- type: "color",
21060
- color: "surface"
21061
- },
21062
- navStyle: "minimal",
21063
- navWeight: "regular",
21064
21039
  navColor: "text",
21065
21040
  navLinkStyle: {
21066
21041
  typography: "body",
21067
- fontWeight: "regular",
21042
+ fontWeight: "medium",
21068
21043
  textTransform: "none",
21069
21044
  italic: false,
21070
21045
  colorToken: "text",
21071
21046
  hoverColorToken: "primary",
21072
21047
  padding: "none",
21073
21048
  borderRadius: "none"
21074
- },
21075
- logo: {
21076
- showLogo: true,
21077
- showLogoText: true,
21078
- placement: "left",
21079
- size: "sm",
21080
- align: "start"
21081
- },
21082
- bottomBar: {
21083
- enabled: true,
21084
- fullBleed: false,
21085
- textAlign: "center",
21086
- paddingX: "default",
21087
- paddingY: "compact",
21088
- borderTop: { width: "thin" }
21089
21049
  }
21090
21050
  };
21091
21051
  }
21092
- var footerLayoutCatalog, footerStyleCatalog, footerLookCatalog;
21052
+ var footerLookCatalog;
21093
21053
  var init_footerLooks = __esmMin((() => {
21094
- init_customizableSurfaces();
21095
- init_types$17();
21096
- footerLayoutCatalog = defineExactCatalog()([
21097
- {
21098
- id: asFooterLayoutId("identity"),
21099
- label: "Identity",
21100
- description: "Logo, site text, address, and legal copy without relying on footer navigation."
21101
- },
21102
- {
21103
- id: asFooterLayoutId("centered"),
21104
- label: "Centered",
21105
- description: "A calm centered stack for identity, short copy, and optional compact navigation.",
21106
- maxRecommendedNavDensity: "sparse"
21107
- },
21108
- {
21109
- id: asFooterLayoutId("split"),
21110
- label: "Split",
21111
- description: "Navigation and brand signoff separated into a wider split footer.",
21112
- requiresFooterNav: true,
21113
- maxRecommendedNavDensity: "balanced"
21114
- },
21115
- {
21116
- id: asFooterLayoutId("columns"),
21117
- label: "Columns",
21118
- description: "Grouped footer navigation columns with a supporting bottom line.",
21119
- requiresFooterNav: true,
21120
- requiresFooterNavGroups: true
21121
- }
21122
- ]);
21123
- footerStyleCatalog = defineExactCatalog()([
21124
- {
21125
- id: asFooterStyleId("quiet"),
21126
- label: "Quiet",
21127
- description: "Lightweight, practical footer treatment."
21128
- },
21129
- {
21130
- id: asFooterStyleId("calm"),
21131
- label: "Calm",
21132
- description: "Soft centered treatment with restrained dividers."
21133
- },
21134
- {
21135
- id: asFooterStyleId("editorial"),
21136
- label: "Editorial",
21137
- description: "Text-forward treatment with fine-line structure."
21138
- },
21139
- {
21140
- id: asFooterStyleId("brand-band"),
21141
- label: "Brand band",
21142
- description: "High-contrast brand treatment with a stronger bottom bar."
21143
- }
21144
- ]);
21145
- new Map(footerLayoutCatalog.map((layout) => [layout.id, layout]));
21146
- new Map(footerStyleCatalog.map((style) => [style.id, style]));
21147
- footerLookCatalog = defineExactCatalog()([
21148
- {
21149
- id: asFooterLookId("footer-identity-quiet"),
21150
- label: "Identity footer",
21151
- layoutId: asFooterLayoutId("identity"),
21152
- styleId: asFooterStyleId("quiet"),
21153
- compile: identityQuietFooter
21154
- },
21155
- {
21156
- id: asFooterLookId("footer-muted-grounding"),
21157
- label: "Muted grounding footer",
21158
- layoutId: asFooterLayoutId("identity"),
21159
- styleId: asFooterStyleId("quiet"),
21160
- hiddenFromLayoutStyleControls: true,
21161
- compile: mutedGroundingFooter
21162
- },
21163
- {
21164
- id: asFooterLookId("footer-centered-calm"),
21165
- label: "Centered calm footer",
21166
- layoutId: asFooterLayoutId("centered"),
21167
- styleId: asFooterStyleId("calm"),
21168
- compile: centeredCalmFooter
21169
- },
21170
- {
21171
- id: asFooterLookId("footer-split-editorial"),
21172
- label: "Split editorial footer",
21173
- layoutId: asFooterLayoutId("split"),
21174
- styleId: asFooterStyleId("editorial"),
21175
- compile: splitEditorialFooter
21176
- },
21177
- {
21178
- id: asFooterLookId("footer-editorial-columns"),
21179
- label: "Editorial columns footer",
21180
- layoutId: asFooterLayoutId("columns"),
21181
- styleId: asFooterStyleId("editorial"),
21182
- compile: editorialColumnsFooter
21183
- },
21184
- {
21185
- id: asFooterLookId("site-footer-brand-two-band"),
21186
- label: "Two-band brand footer",
21187
- layoutId: asFooterLayoutId("split"),
21188
- styleId: asFooterStyleId("brand-band"),
21189
- allowedContentPresence: ["default-footer", "default-and-blocks"],
21190
- compile: brandTwoBandFooter
21191
- }
21192
- ]);
21054
+ init_types$16();
21055
+ footerLookCatalog = defineExactCatalog()([{
21056
+ id: asFooterLookId("footer-links-quiet"),
21057
+ label: "Quiet links",
21058
+ description: "Regular-weight footer navigation with a restrained hover.",
21059
+ compile: quietFooterLinks
21060
+ }, {
21061
+ id: asFooterLookId("footer-links-emphasized"),
21062
+ label: "Emphasized links",
21063
+ description: "Medium-weight footer navigation with a clearer emphasis.",
21064
+ compile: emphasizedFooterLinks
21065
+ }]);
21193
21066
  new Map(footerLookCatalog.map((look) => [look.id, look]));
21194
21067
  }));
21195
21068
  var init_curatedChoices = __esmMin((() => {})), generatedContentFrames, userContentFrames, generatedDesignOptionCatalog, userDesignOptionCatalog;
21196
21069
  var init_sourceCatalogs = __esmMin((() => {
21197
- init_types$17();
21070
+ init_types$16();
21198
21071
  generatedContentFrames = [
21199
21072
  plainFrame,
21200
21073
  panelFrame("inset"),
@@ -21811,7 +21684,7 @@ function themeButtonClassName(spec) {
21811
21684
  ].filter(Boolean).join(" ");
21812
21685
  }
21813
21686
  var init_classNames = __esmMin((() => {
21814
- init_types$14();
21687
+ init_types$13();
21815
21688
  }));
21816
21689
  //#endregion
21817
21690
  //#region ../theme-core/src/interactive/generateBaseCSS.ts
@@ -23366,7 +23239,7 @@ function generateDefaultButtonSystem(theme) {
23366
23239
  }
23367
23240
  var BORDER_WIDTH_TO_CLASS_MAP, VALID_CORNER_STYLES;
23368
23241
  var init_generateDefaultButtonSystem = __esmMin((() => {
23369
- init_types$14();
23242
+ init_types$13();
23370
23243
  BORDER_WIDTH_TO_CLASS_MAP = {
23371
23244
  none: "border-0",
23372
23245
  hairline: "border",
@@ -23822,7 +23695,7 @@ var init_resolveButtonColourStates = __esmMin((() => {
23822
23695
  init_colorConversion();
23823
23696
  init_onColor();
23824
23697
  init_foregroundContract();
23825
- init_types$14();
23698
+ init_types$13();
23826
23699
  init_constants$2();
23827
23700
  init_effectClassification();
23828
23701
  BUTTON_VISUAL_STATES = [
@@ -24210,7 +24083,7 @@ function resolveBoxShadow(variant, global, theme, tokens) {
24210
24083
  }
24211
24084
  var AFFORDANCE_SUPPRESS_CLASS, BUTTON_SIZE_NAMES, LETTER_SPACING_MAP, STRUCTURAL_DECLARATIONS;
24212
24085
  var init_generateButtonCss = __esmMin((() => {
24213
- init_types$14();
24086
+ init_types$13();
24214
24087
  init_classNames();
24215
24088
  init_resolver$1();
24216
24089
  init_generateBaseCSS();
@@ -24238,29 +24111,33 @@ var init_generateButtonCss = __esmMin((() => {
24238
24111
  ["outline", "none"]
24239
24112
  ];
24240
24113
  }));
24241
- function presetCategory(personality) {
24242
- switch (personality.tags.era) {
24114
+ function presetCategory(recipe) {
24115
+ switch (recipe.tags.era) {
24243
24116
  case "retro": return "retro";
24244
24117
  case "editorial": return "minimal";
24245
24118
  case "organic": return "artistic";
24246
- case "modern": return personality.tags.tone === "bold" ? "modern" : "technical";
24119
+ case "modern": return recipe.tags.tone === "bold" ? "modern" : "technical";
24247
24120
  case "technical": return "technical";
24248
24121
  case void 0: return "modern";
24249
24122
  }
24250
24123
  }
24251
24124
  var init_presets = __esmMin((() => {
24252
- init_personalities();
24253
- buttonPersonalities.map((personality) => ({
24254
- id: personality.id,
24255
- name: personality.name,
24256
- description: personality.description,
24257
- category: presetCategory(personality),
24258
- buttonSystem: personality.buttonSystem,
24259
- compatibility: {
24260
- ...personality.tags.tone ? { tones: [personality.tags.tone] } : {},
24261
- ...personality.tags.energy ? { energies: [personality.tags.energy] } : {}
24262
- }
24263
- }));
24125
+ init_styles();
24126
+ buttonStyleRecipes.map((recipe) => {
24127
+ const resolved = resolveButtonStyleSelection(defaultButtonStyleSelectionFor(recipe.id));
24128
+ if (resolved.kind === "error") throw new Error(`Invalid registered button style ${recipe.id}: ${resolved.error.issues.join(", ")}`);
24129
+ return {
24130
+ id: recipe.id,
24131
+ name: recipe.accessibilityLabel,
24132
+ description: recipe.accessibilityLabel,
24133
+ category: presetCategory(recipe),
24134
+ buttonSystem: resolved.buttonSystem,
24135
+ compatibility: {
24136
+ ...recipe.tags.tone ? { tones: [recipe.tags.tone] } : {},
24137
+ ...recipe.tags.energy ? { energies: [recipe.tags.energy] } : {}
24138
+ }
24139
+ };
24140
+ });
24264
24141
  }));
24265
24142
  //#endregion
24266
24143
  //#region ../theme-core/src/buttons/effects/types.ts
@@ -24268,12 +24145,12 @@ var init_types$11 = __esmMin((() => {}));
24268
24145
  var init_core$2 = __esmMin((() => {
24269
24146
  init_resolveButtonColourStates();
24270
24147
  init_resolvedButtonCss();
24271
- init_types$14();
24148
+ init_types$13();
24272
24149
  }));
24273
24150
  //#endregion
24274
24151
  //#region ../theme-core/src/buttons/index.ts
24275
24152
  var init_buttons = __esmMin((() => {
24276
- init_types$14();
24153
+ init_types$13();
24277
24154
  init_classNames();
24278
24155
  init_generateButtonCss();
24279
24156
  init_resolveButtonColourStates();
@@ -24281,7 +24158,7 @@ var init_buttons = __esmMin((() => {
24281
24158
  init_generateDefaultButtonSystem();
24282
24159
  init_constants$2();
24283
24160
  init_presets();
24284
- init_personalities();
24161
+ init_styles();
24285
24162
  init_types$11();
24286
24163
  init_registry$1();
24287
24164
  init_transform();
@@ -25613,7 +25490,7 @@ var init_schema = __esmMin((() => {
25613
25490
  init_validation$2();
25614
25491
  init_atRuleValidation();
25615
25492
  init_shared$5();
25616
- init_types$17();
25493
+ init_types$16();
25617
25494
  init_logoBranding();
25618
25495
  init_rawStyleFields();
25619
25496
  init_themeColorTokens();
@@ -26471,7 +26348,7 @@ function uniqueNonEmpty$1(values) {
26471
26348
  var designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, heroCompositionIntentSchema, heroTypographyScaleIntentSchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eventListTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema;
26472
26349
  var init_designState = __esmMin((() => {
26473
26350
  init_sourceCatalogs();
26474
- init_types$17();
26351
+ init_types$16();
26475
26352
  init_schemaVersionedJson();
26476
26353
  init_rawStyleFields();
26477
26354
  designResolutionPolicySchema = z$1.enum([
@@ -26647,10 +26524,10 @@ var init_runtimeCompiler = __esmMin((() => {
26647
26524
  init_schema();
26648
26525
  init_modern_minimal();
26649
26526
  init_expandPalette();
26650
- init_personalities();
26527
+ init_styles();
26651
26528
  init_colors();
26652
26529
  init_designState();
26653
- init_types$17();
26530
+ init_types$16();
26654
26531
  init_accessibleSurfaces();
26655
26532
  init_sectionTransitions();
26656
26533
  init_tokens();
@@ -26889,17 +26766,21 @@ function defineCuratedSiteStyle(input) {
26889
26766
  })),
26890
26767
  recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
26891
26768
  recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(asFooterLookId),
26892
- buttonPersonalityChoices: input.buttonPersonalityChoices,
26769
+ buttonStyleChoices: input.buttonStyleChoices,
26893
26770
  paletteRecommendations: input.paletteRecommendations,
26894
26771
  typography: input.typography ?? defaultTypographyForRecipe(input.tokenRecipes.typography),
26895
26772
  ...input.heroTypography ? { heroTypography: input.heroTypography } : {}
26896
26773
  };
26897
26774
  }
26898
- function buttonChoice(id, note) {
26775
+ function buttonChoice(styleId, note, parameters) {
26776
+ const selection = parameters === void 0 ? defaultButtonStyleSelectionFor(styleId) : buttonStyleSelectionSchema.parse({
26777
+ styleId,
26778
+ parameters
26779
+ });
26899
26780
  return note ? {
26900
- id: asButtonPersonalityId(id),
26781
+ ...selection,
26901
26782
  note
26902
- } : { id: asButtonPersonalityId(id) };
26783
+ } : selection;
26903
26784
  }
26904
26785
  function paletteRecommendation(authoringKey, note) {
26905
26786
  const valueKey = requireCuratedPaletteValueKey(asCuratedPaletteAuthoringKey(authoringKey));
@@ -27055,7 +26936,7 @@ function getCuratedSiteStyle(id) {
27055
26936
  }
27056
26937
  var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, curatedSiteStyleIdValues, quietBudget, accentLedQuietBudget, balancedBudget, expressiveBudget, kirtanOrnateDesignRuntimeRules, primaryGlowGradientPresetId, fulcrumDesignRuntimeRules, expressiveUnderlineInputs, ornateDarkInputs, generatedContentFrameKinds, curatedSiteStyles, curatedSiteStylesById;
27057
26938
  var init_curatedSiteStyles = __esmMin((() => {
27058
- init_personalities();
26939
+ init_styles();
27059
26940
  init_curated();
27060
26941
  init_siteStyleDefaults$1();
27061
26942
  init_siteStyleDefaults();
@@ -27065,7 +26946,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27065
26946
  init_footerLooks();
27066
26947
  init_curatedChoices();
27067
26948
  init_sourceCatalogs();
27068
- init_types$17();
26949
+ init_types$16();
27069
26950
  init_siteStyleTypography();
27070
26951
  init_runtimeCompiler();
27071
26952
  SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
@@ -27289,9 +27170,8 @@ var init_curatedSiteStyles = __esmMin((() => {
27289
27170
  "minimal-transparent",
27290
27171
  "clean-base"
27291
27172
  ],
27292
- buttonPersonalityChoices: [
27173
+ buttonStyleChoices: [
27293
27174
  buttonChoice("soft-pill"),
27294
- buttonChoice("two-tone-pill"),
27295
27175
  buttonChoice("pebble"),
27296
27176
  buttonChoice("editorial-link"),
27297
27177
  buttonChoice("brushed-wash")
@@ -27327,7 +27207,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27327
27207
  "brand-solid",
27328
27208
  "clean-base"
27329
27209
  ],
27330
- buttonPersonalityChoices: [
27210
+ buttonStyleChoices: [
27331
27211
  buttonChoice("confident-chip"),
27332
27212
  buttonChoice("soft-pill"),
27333
27213
  buttonChoice("editorial-link")
@@ -27366,7 +27246,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27366
27246
  "minimal-transparent",
27367
27247
  "centered-calm"
27368
27248
  ],
27369
- buttonPersonalityChoices: [
27249
+ buttonStyleChoices: [
27370
27250
  buttonChoice("editorial-link"),
27371
27251
  buttonChoice("soft-pill"),
27372
27252
  buttonChoice("brushed-wash")
@@ -27406,7 +27286,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27406
27286
  "practical-utility",
27407
27287
  "clean-base"
27408
27288
  ],
27409
- buttonPersonalityChoices: [
27289
+ buttonStyleChoices: [
27410
27290
  buttonChoice("pebble"),
27411
27291
  buttonChoice("brushed-wash"),
27412
27292
  buttonChoice("confident-chip")
@@ -27467,7 +27347,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27467
27347
  "serif-line",
27468
27348
  "clean-base"
27469
27349
  ],
27470
- buttonPersonalityChoices: [
27350
+ buttonStyleChoices: [
27471
27351
  buttonChoice("editorial-link"),
27472
27352
  buttonChoice("confident-chip"),
27473
27353
  buttonChoice("soft-pill")
@@ -27529,7 +27409,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27529
27409
  "brand-solid",
27530
27410
  "clean-base"
27531
27411
  ],
27532
- buttonPersonalityChoices: [
27412
+ buttonStyleChoices: [
27533
27413
  buttonChoice("confident-chip"),
27534
27414
  buttonChoice("pebble"),
27535
27415
  buttonChoice("ink-stamp")
@@ -27568,7 +27448,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27568
27448
  "minimal-transparent",
27569
27449
  "clean-base"
27570
27450
  ],
27571
- buttonPersonalityChoices: [
27451
+ buttonStyleChoices: [
27572
27452
  buttonChoice("soft-pill"),
27573
27453
  buttonChoice("pebble"),
27574
27454
  buttonChoice("confident-chip")
@@ -27641,7 +27521,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27641
27521
  "clean-base",
27642
27522
  "centered-calm"
27643
27523
  ],
27644
- buttonPersonalityChoices: [
27524
+ buttonStyleChoices: [
27645
27525
  buttonChoice("pebble"),
27646
27526
  buttonChoice("soft-pill"),
27647
27527
  buttonChoice("editorial-link")
@@ -27760,12 +27640,8 @@ var init_curatedSiteStyles = __esmMin((() => {
27760
27640
  "serif-line",
27761
27641
  "minimal-transparent"
27762
27642
  ],
27763
- recommendedFooterLookIds: [
27764
- "footer-centered-calm",
27765
- "footer-editorial-columns",
27766
- "footer-muted-grounding"
27767
- ],
27768
- buttonPersonalityChoices: [
27643
+ recommendedFooterLookIds: ["footer-links-quiet"],
27644
+ buttonStyleChoices: [
27769
27645
  buttonChoice("soft-pill"),
27770
27646
  buttonChoice("pebble"),
27771
27647
  buttonChoice("editorial-link")
@@ -27839,7 +27715,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27839
27715
  "centered-calm",
27840
27716
  "minimal-transparent"
27841
27717
  ],
27842
- buttonPersonalityChoices: [
27718
+ buttonStyleChoices: [
27843
27719
  buttonChoice("editorial-link"),
27844
27720
  buttonChoice("soft-pill"),
27845
27721
  buttonChoice("brushed-wash")
@@ -27912,8 +27788,8 @@ var init_curatedSiteStyles = __esmMin((() => {
27912
27788
  "practical-utility",
27913
27789
  "clean-base"
27914
27790
  ],
27915
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
27916
- buttonPersonalityChoices: [
27791
+ recommendedFooterLookIds: ["footer-links-emphasized", "footer-links-quiet"],
27792
+ buttonStyleChoices: [
27917
27793
  buttonChoice("pebble"),
27918
27794
  buttonChoice("confident-chip"),
27919
27795
  buttonChoice("ink-stamp"),
@@ -28034,8 +27910,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28034
27910
  "minimal-transparent",
28035
27911
  "serif-line"
28036
27912
  ],
28037
- recommendedFooterLookIds: ["footer-muted-grounding", "site-footer-brand-two-band"],
28038
- buttonPersonalityChoices: [
27913
+ recommendedFooterLookIds: ["footer-links-quiet", "footer-links-emphasized"],
27914
+ buttonStyleChoices: [
28039
27915
  buttonChoice("earth-pill"),
28040
27916
  buttonChoice("soft-pill"),
28041
27917
  buttonChoice("pebble"),
@@ -28106,7 +27982,7 @@ var init_curatedSiteStyles = __esmMin((() => {
28106
27982
  "floating-glass",
28107
27983
  "brand-solid"
28108
27984
  ],
28109
- buttonPersonalityChoices: [
27985
+ buttonStyleChoices: [
28110
27986
  buttonChoice("ink-stamp"),
28111
27987
  buttonChoice("confident-chip"),
28112
27988
  buttonChoice("brushed-wash"),
@@ -28161,8 +28037,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28161
28037
  "transparent-overlay",
28162
28038
  "practical-utility"
28163
28039
  ],
28164
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
28165
- buttonPersonalityChoices: [
28040
+ recommendedFooterLookIds: ["footer-links-emphasized", "footer-links-quiet"],
28041
+ buttonStyleChoices: [
28166
28042
  buttonChoice("showtime-pill"),
28167
28043
  buttonChoice("confident-chip"),
28168
28044
  buttonChoice("ink-stamp"),
@@ -28243,8 +28119,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28243
28119
  headerStyleChoice("glass")
28244
28120
  ] },
28245
28121
  recommendedHeaderLookIds: ["minimal-transparent"],
28246
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
28247
- buttonPersonalityChoices: [
28122
+ recommendedFooterLookIds: ["footer-links-emphasized", "footer-links-quiet"],
28123
+ buttonStyleChoices: [
28248
28124
  buttonChoice("ornate-ritual"),
28249
28125
  buttonChoice("joy-stamp"),
28250
28126
  buttonChoice("ink-stamp")
@@ -28297,8 +28173,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28297
28173
  headerStyleChoice("glass")
28298
28174
  ] },
28299
28175
  recommendedHeaderLookIds: ["minimal-transparent"],
28300
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
28301
- buttonPersonalityChoices: [
28176
+ recommendedFooterLookIds: ["footer-links-emphasized", "footer-links-quiet"],
28177
+ buttonStyleChoices: [
28302
28178
  buttonChoice("joy-stamp"),
28303
28179
  buttonChoice("ink-stamp"),
28304
28180
  buttonChoice("showtime-pill")
@@ -28388,8 +28264,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28388
28264
  "centered-calm",
28389
28265
  "clean-base"
28390
28266
  ],
28391
- recommendedFooterLookIds: ["footer-editorial-columns", "footer-muted-grounding"],
28392
- buttonPersonalityChoices: [
28267
+ recommendedFooterLookIds: ["footer-links-quiet"],
28268
+ buttonStyleChoices: [
28393
28269
  buttonChoice("flat-ink"),
28394
28270
  buttonChoice("confident-chip"),
28395
28271
  buttonChoice("editorial-link")
@@ -28466,14 +28342,9 @@ var init_curatedSiteStyles = __esmMin((() => {
28466
28342
  "serif-line",
28467
28343
  "clean-base"
28468
28344
  ],
28469
- recommendedFooterLookIds: [
28470
- "footer-editorial-columns",
28471
- "footer-muted-grounding",
28472
- "footer-identity-quiet"
28473
- ],
28474
- buttonPersonalityChoices: [
28475
- buttonChoice("quiet-arrow"),
28476
- buttonChoice("two-tone-pill"),
28345
+ recommendedFooterLookIds: ["footer-links-quiet"],
28346
+ buttonStyleChoices: [
28347
+ buttonChoice("quiet-arrow", void 0, { secondaryTreatment: "solid-accent" }),
28477
28348
  buttonChoice("flat-ink"),
28478
28349
  buttonChoice("editorial-link")
28479
28350
  ],
@@ -28489,13 +28360,13 @@ var init_curatedSiteStyles = __esmMin((() => {
28489
28360
  curatedSiteStylesById = new Map(curatedSiteStyles.map((style) => [style.id, style]));
28490
28361
  })), init_lookResolution = __esmMin((() => {
28491
28362
  init_appearancePresets();
28492
- init_types$17();
28363
+ init_types$16();
28493
28364
  }));
28494
28365
  var init_siteStyleBlockPolicies = __esmMin((() => {
28495
28366
  init_lookResolution();
28496
28367
  init_appearancePresets();
28497
28368
  init_pageDesignIntent();
28498
- init_types$17();
28369
+ init_types$16();
28499
28370
  init_sectionTransitions();
28500
28371
  asPageFlowPresetId("generated-default");
28501
28372
  asSiteStyleId("site-style:south-west-twerk-school");
@@ -28508,12 +28379,12 @@ var init_siteStyleBlockPolicies = __esmMin((() => {
28508
28379
  init_lookResolution();
28509
28380
  init_siteStyleBlockPolicies();
28510
28381
  init_pageDesignIntent();
28511
- init_types$17();
28382
+ init_types$16();
28512
28383
  init_sectionTransitions();
28513
28384
  asPageFlowPresetId("flow:quiet"), noneBoundaryOption.id, asPageFlowPresetId("flow:balanced"), softBoundaryOption.id, asPageFlowPresetId("flow:expressive"), spaciousBoundaryOption.id;
28514
28385
  }));
28515
28386
  var init_resolver = __esmMin((() => {
28516
- init_types$17();
28387
+ init_types$16();
28517
28388
  }));
28518
28389
  var init_siteStyleThemeCompiler = __esmMin((() => {
28519
28390
  init_schema();
@@ -28523,19 +28394,17 @@ var init_siteStyleThemeCompiler = __esmMin((() => {
28523
28394
  init_resolveSelection();
28524
28395
  }));
28525
28396
  var init_previewCustomization = __esmMin((() => {
28526
- init_types$17();
28397
+ init_types$16();
28527
28398
  }));
28528
28399
  var init_previewCompiler = __esmMin((() => {
28529
28400
  init_schema();
28530
28401
  init_onColor();
28531
28402
  init_tokens();
28532
- init_personalities();
28533
28403
  init_curated();
28534
28404
  init_resolveSelection();
28535
- init_curatedChoices();
28536
28405
  init_curatedSiteStyles();
28537
28406
  init_resolver();
28538
- init_types$17();
28407
+ init_types$16();
28539
28408
  init_footerLooks();
28540
28409
  init_headerLooks();
28541
28410
  init_runtimeCompiler();
@@ -28545,6 +28414,7 @@ var init_previewCompiler = __esmMin((() => {
28545
28414
  init_pageDesignEditorModel();
28546
28415
  init_pageDesignIntent();
28547
28416
  init_previewCustomization();
28417
+ init_curatedChoices();
28548
28418
  }));
28549
28419
  var init_contentTemplateRuntimeCompiler = __esmMin((() => {
28550
28420
  init_pageDesignEditorModel();
@@ -28573,7 +28443,7 @@ var generatedPanelTreatments, generatedFlushTreatments, generatedFlushBleeds, ge
28573
28443
  var init_generatedSchemas = __esmMin((() => {
28574
28444
  init_curatedSiteStyles();
28575
28445
  init_sourceCatalogs();
28576
- init_types$17();
28446
+ init_types$16();
28577
28447
  generatedPanelTreatments = uniqueNonEmpty(generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment));
28578
28448
  generatedFlushTreatments = uniqueNonEmpty(generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment));
28579
28449
  generatedFlushBleeds = uniqueNonEmpty(generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed));
@@ -28640,7 +28510,7 @@ var init_generatedDesignPipeline = __esmMin((() => {
28640
28510
  init_headerOpeningSection();
28641
28511
  init_resolver();
28642
28512
  init_runtimeCompiler();
28643
- init_types$17();
28513
+ init_types$16();
28644
28514
  }));
28645
28515
  function validateBlockSequence(snapshots, ctx) {
28646
28516
  for (const issue of collectBlockSequenceIssues(snapshots)) ctx.addIssue(issue);
@@ -28675,7 +28545,7 @@ function collectBlockSequenceIssues(snapshots) {
28675
28545
  }
28676
28546
  var nonEmptyStringSchema, blockContentVersionIdSchema, designBlockIdSchema, designPageIdSchema, designEntryIdSchema, blockOrderIndexSchema, publishedPageBlockSnapshotSchema, draftPageBlockSnapshotSchema, missingPageBlockSnapshotSchema, pageBlockSnapshotSchema, publishedPageBlockSequenceSchema, draftPageBlockSequenceSchema, publishedPageDesignVersionDataV1Schema, draftPageDesignVersionDataV1Schema;
28677
28547
  var init_pageDesignAuthority = __esmMin((() => {
28678
- init_types$17();
28548
+ init_types$16();
28679
28549
  init_pageDesignIntent();
28680
28550
  nonEmptyStringSchema = z$1.string().min(1);
28681
28551
  blockContentVersionIdSchema = nonEmptyStringSchema.transform(asBlockContentVersionId);
@@ -28971,7 +28841,7 @@ var init_site_styles = __esmMin((() => {
28971
28841
  init_tokenRecipes();
28972
28842
  init_siteStyleTypography();
28973
28843
  init_themeParity();
28974
- init_types$17();
28844
+ init_types$16();
28975
28845
  }));
28976
28846
  //#endregion
28977
28847
  //#region ../blocks/src/system/designCapabilities.ts
@@ -31803,6 +31673,37 @@ var init_heroCopy = __esmMin((() => {
31803
31673
  });
31804
31674
  }));
31805
31675
  //#endregion
31676
+ //#region ../blocks/src/system/constants/buttonRoles.ts
31677
+ /**
31678
+ * Temporary rollout boundary for persisted content written before issue #1220.
31679
+ * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
31680
+ * only until the post-deploy role rewrite has been audited in production.
31681
+ */
31682
+ function canonicalizePersistedBlockButtonRole(value) {
31683
+ return value === "link" || value === "tertiary" ? "ghost" : value;
31684
+ }
31685
+ function isBlockButtonRole(value) {
31686
+ return blockButtonRoleSchema.safeParse(value).success;
31687
+ }
31688
+ var BLOCK_BUTTON_ROLES, blockButtonRoleSchema, persistedBlockButtonRoleSchema, BLOCK_BUTTON_ROLE_LABELS, BLOCK_BUTTON_ROLE_OPTIONS;
31689
+ var init_buttonRoles = __esmMin((() => {
31690
+ init_buttons();
31691
+ BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
31692
+ blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
31693
+ persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
31694
+ BLOCK_BUTTON_ROLE_LABELS = {
31695
+ primary: "Primary",
31696
+ secondary: "Secondary",
31697
+ outline: "Outline",
31698
+ ghost: "Ghost",
31699
+ accent: "Accent"
31700
+ };
31701
+ BLOCK_BUTTON_ROLE_OPTIONS = BLOCK_BUTTON_ROLES.map((value) => ({
31702
+ value,
31703
+ label: BLOCK_BUTTON_ROLE_LABELS[value]
31704
+ }));
31705
+ }));
31706
+ //#endregion
31806
31707
  //#region ../blocks/src/system/fields/button.ts
31807
31708
  function createButtonVariantField(options = {}) {
31808
31709
  return {
@@ -31821,20 +31722,7 @@ function createButtonVariantField(options = {}) {
31821
31722
  };
31822
31723
  }
31823
31724
  function createButtonGroup(options = {}) {
31824
- const { variants = [
31825
- {
31826
- value: "primary",
31827
- label: "Primary"
31828
- },
31829
- {
31830
- value: "secondary",
31831
- label: "Secondary"
31832
- },
31833
- {
31834
- value: "outline",
31835
- label: "Outline"
31836
- }
31837
- ], defaultVariant, includeSize = true, defaultSize = "md", showGroupLabel = false, groupId = "button", groupLabel = "Button", flattenInRepeater = true } = options;
31725
+ const { variants = BLOCK_BUTTON_ROLE_OPTIONS, defaultVariant, includeSize = true, defaultSize = "md", showGroupLabel = false, groupId = "button", groupLabel = "Button", flattenInRepeater = true } = options;
31838
31726
  const mainFields = [
31839
31727
  {
31840
31728
  id: "label",
@@ -31939,24 +31827,8 @@ function createButtonGroup(options = {}) {
31939
31827
  }
31940
31828
  var DEFAULT_THEME_BUTTON_VARIANTS;
31941
31829
  var init_button = __esmMin((() => {
31942
- DEFAULT_THEME_BUTTON_VARIANTS = [
31943
- {
31944
- value: "primary",
31945
- label: "Primary"
31946
- },
31947
- {
31948
- value: "secondary",
31949
- label: "Secondary"
31950
- },
31951
- {
31952
- value: "outline",
31953
- label: "Outline"
31954
- },
31955
- {
31956
- value: "link",
31957
- label: "Link"
31958
- }
31959
- ];
31830
+ init_buttonRoles();
31831
+ DEFAULT_THEME_BUTTON_VARIANTS = BLOCK_BUTTON_ROLE_OPTIONS;
31960
31832
  }));
31961
31833
  //#endregion
31962
31834
  //#region ../blocks/src/system/fields/ctas.ts
@@ -31999,29 +31871,7 @@ var init_ctaRow = __esmMin((() => {
31999
31871
  fields: [createCtasRepeater({
32000
31872
  label: "Calls to action",
32001
31873
  itemLabel: "CTA",
32002
- maxItems: 3,
32003
- button: { variants: [
32004
- {
32005
- value: "primary",
32006
- label: "Primary"
32007
- },
32008
- {
32009
- value: "secondary",
32010
- label: "Secondary"
32011
- },
32012
- {
32013
- value: "outline",
32014
- label: "Outline"
32015
- },
32016
- {
32017
- value: "link",
32018
- label: "Link"
32019
- },
32020
- {
32021
- value: "accent",
32022
- label: "Accent"
32023
- }
32024
- ] }
31874
+ maxItems: 3
32025
31875
  })],
32026
31876
  layout: [ctaRow({
32027
31877
  collectionPath: "content.ctas",
@@ -32044,10 +31894,6 @@ var init_heroCtaRow = __esmMin((() => {
32044
31894
  defaultValue: [],
32045
31895
  button: {
32046
31896
  variants: [
32047
- {
32048
- value: "default",
32049
- label: "Default"
32050
- },
32051
31897
  {
32052
31898
  value: "primary",
32053
31899
  label: "Primary"
@@ -32059,9 +31905,17 @@ var init_heroCtaRow = __esmMin((() => {
32059
31905
  {
32060
31906
  value: "outline",
32061
31907
  label: "Outline"
31908
+ },
31909
+ {
31910
+ value: "ghost",
31911
+ label: "Ghost"
31912
+ },
31913
+ {
31914
+ value: "accent",
31915
+ label: "Accent"
32062
31916
  }
32063
31917
  ],
32064
- defaultVariant: "default",
31918
+ defaultVariant: "primary",
32065
31919
  includeSize: true,
32066
31920
  defaultSize: "lg"
32067
31921
  }
@@ -32889,11 +32743,13 @@ var init_blogFeaturedPost = __esmMin((() => {
32889
32743
  as: "p",
32890
32744
  style: textColorStyle("text/80")
32891
32745
  }, bind("post.excerpt", { fallback: "Select a blog post to display its preview." })),
32892
- link({
32893
- className: "rb-inline-flex rb-items-center rb-caption rb-hover-opacity-80",
32894
- style: textColorStyle("primary"),
32895
- href: { $bind: { from: "post.path" } }
32896
- }, [text({ as: "strong" }, props({ value: "Read more →" }))])
32746
+ button({
32747
+ className: "rb-self-start",
32748
+ href: { $bind: { from: "post.path" } },
32749
+ variantId: "ghost",
32750
+ size: "sm",
32751
+ linkRequired: true
32752
+ }, [text({ as: "span" }, props({ value: "Read more" }))])
32897
32753
  ])], when("post")), stack({
32898
32754
  gap: "sm",
32899
32755
  className: "rb-rounded-xl rb-border rb-border-dashed rb-p-6",
@@ -34284,21 +34140,7 @@ var init_newsletterForm$1 = __esmMin((() => {
34284
34140
  createButtonVariantField({
34285
34141
  id: "buttonVariant",
34286
34142
  label: "Button style",
34287
- defaultValue: "primary",
34288
- variants: [
34289
- {
34290
- value: "primary",
34291
- label: "Primary"
34292
- },
34293
- {
34294
- value: "secondary",
34295
- label: "Secondary"
34296
- },
34297
- {
34298
- value: "outline",
34299
- label: "Outline"
34300
- }
34301
- ]
34143
+ defaultValue: "primary"
34302
34144
  }),
34303
34145
  {
34304
34146
  id: "successMessage",
@@ -35299,7 +35141,8 @@ function postExcerpt(className) {
35299
35141
  function postReadMore() {
35300
35142
  return button({
35301
35143
  href: { $bind: { from: "post.path" } },
35302
- className: "rb-self-start"
35144
+ className: "rb-self-start",
35145
+ variantId: "ghost"
35303
35146
  }, [text({ as: "span" }, bind("content.readMoreText", { fallback: "Read more" }), when("content.readMoreText")), text({
35304
35147
  as: "span",
35305
35148
  value: "Read more"
@@ -36959,7 +36802,7 @@ const uiTransforms = [
36959
36802
  ];
36960
36803
  //#endregion
36961
36804
  //#region ../theme-core/src/siteChromePlacement.ts
36962
- init_types$17();
36805
+ init_types$16();
36963
36806
  const SITE_CHROME_PLACEMENT_CLASSES = [
36964
36807
  "rb-sticky",
36965
36808
  "rb-fixed",
@@ -39220,31 +39063,7 @@ const featureCardsBlockDefinition = { manifest: createBlockManifest({
39220
39063
  label: "Calls to action",
39221
39064
  itemLabel: "CTA",
39222
39065
  maxItems: 1,
39223
- button: {
39224
- variants: [
39225
- {
39226
- value: "primary",
39227
- label: "Primary"
39228
- },
39229
- {
39230
- value: "secondary",
39231
- label: "Secondary"
39232
- },
39233
- {
39234
- value: "outline",
39235
- label: "Outline"
39236
- },
39237
- {
39238
- value: "ghost",
39239
- label: "Ghost"
39240
- },
39241
- {
39242
- value: "link",
39243
- label: "Link"
39244
- }
39245
- ],
39246
- defaultVariant: "ghost"
39247
- }
39066
+ button: { defaultVariant: "ghost" }
39248
39067
  })
39249
39068
  ] }
39250
39069
  },
@@ -41450,18 +41269,10 @@ var init_pricing$1 = __esmMin((() => {
41450
41269
  var previewStageSchema, registrationButtonVariantSchema, eventButtonVariantSchema, eventLayoutSchema, eventCalendarDisplayModeSchema, eventCalendarDefaultViewSchema, columnOptionSchema, weekStartSchema, filterAutoShowSchema, calendarTabViewsSchema;
41451
41270
  var init_contract_schemas = __esmMin((() => {
41452
41271
  init_events$1();
41272
+ init_buttonRoles();
41453
41273
  previewStageSchema = z$1.enum(["preview", "published"]);
41454
- registrationButtonVariantSchema = z$1.enum([
41455
- "primary",
41456
- "secondary",
41457
- "outline"
41458
- ]);
41459
- eventButtonVariantSchema = z$1.enum([
41460
- "primary",
41461
- "secondary",
41462
- "outline",
41463
- "link"
41464
- ]);
41274
+ registrationButtonVariantSchema = blockButtonRoleSchema;
41275
+ eventButtonVariantSchema = persistedBlockButtonRoleSchema;
41465
41276
  eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
41466
41277
  eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
41467
41278
  eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -41937,23 +41748,7 @@ const eventRegistrationBlockDefinition = {
41937
41748
  defaultValue: "Complete Registration",
41938
41749
  maxLength: 40
41939
41750
  },
41940
- createButtonVariantField({
41941
- description: "Choose a button style from your theme",
41942
- variants: [
41943
- {
41944
- value: "primary",
41945
- label: "Primary"
41946
- },
41947
- {
41948
- value: "secondary",
41949
- label: "Secondary"
41950
- },
41951
- {
41952
- value: "outline",
41953
- label: "Outline"
41954
- }
41955
- ]
41956
- })
41751
+ createButtonVariantField()
41957
41752
  ],
41958
41753
  layout: [styledSection({
41959
41754
  baseClass: "",
@@ -42487,23 +42282,7 @@ const courseRegistrationBlockDefinition = {
42487
42282
  defaultValue: "Sign up",
42488
42283
  maxLength: 40
42489
42284
  },
42490
- createButtonVariantField({
42491
- description: "Choose a button style from your theme",
42492
- variants: [
42493
- {
42494
- value: "primary",
42495
- label: "Primary"
42496
- },
42497
- {
42498
- value: "secondary",
42499
- label: "Secondary"
42500
- },
42501
- {
42502
- value: "outline",
42503
- label: "Outline"
42504
- }
42505
- ]
42506
- })
42285
+ createButtonVariantField()
42507
42286
  ],
42508
42287
  layout: [styledSection({
42509
42288
  baseClass: "",
@@ -48198,6 +47977,8 @@ init_fragments$1();
48198
47977
  init_boxStyles$1();
48199
47978
  init_defineBlock();
48200
47979
  init_shared$4();
47980
+ init_buttonRoles();
47981
+ init_button();
48201
47982
  init_shared$3();
48202
47983
  const publicRouteCandidatesSchema = z$1.object({ routes: z$1.array(z$1.object({
48203
47984
  entityId: z$1.string(),
@@ -48380,36 +48161,7 @@ const offeringsPreviewFields = [
48380
48161
  ui: { intent: "content" },
48381
48162
  schema: { fields: groupOverrideFields }
48382
48163
  },
48383
- {
48384
- id: "buttonVariant",
48385
- type: "select",
48386
- label: "Button style",
48387
- required: false,
48388
- multiple: false,
48389
- defaultValue: "primary",
48390
- options: [
48391
- {
48392
- value: "primary",
48393
- label: "Primary"
48394
- },
48395
- {
48396
- value: "secondary",
48397
- label: "Secondary"
48398
- },
48399
- {
48400
- value: "outline",
48401
- label: "Outline"
48402
- },
48403
- {
48404
- value: "link",
48405
- label: "Link"
48406
- }
48407
- ],
48408
- ui: {
48409
- intent: "display",
48410
- widget: "buttonVariant"
48411
- }
48412
- },
48164
+ createButtonVariantField(),
48413
48165
  {
48414
48166
  id: "buttonText",
48415
48167
  type: "text",
@@ -48615,7 +48367,7 @@ function normalizeOfferingsPreviewGroupOverride(value) {
48615
48367
  return [override];
48616
48368
  }
48617
48369
  function isButtonVariant(value) {
48618
- return value === "primary" || value === "secondary" || value === "outline" || value === "link" || value === null;
48370
+ return value === null || isBlockButtonRole(value);
48619
48371
  }
48620
48372
  function normalizeCardStylesContent(value) {
48621
48373
  return isRecord$17(value) || value === null ? value : void 0;
@@ -50692,6 +50444,7 @@ function getShopDisplayForItems(render, items) {
50692
50444
  }
50693
50445
  var shopModeSchema, contentEntrySchema, shopSourceSchema, productVariantOptionDisplaySchema, productCardDisplaySchema, productListDisplaySchema, productDetailDisplaySchema, passCardDisplaySchema, membershipCardDisplaySchema, passesMembershipsDisplaySchema, cartLineDisplaySchema, cartDisplaySchema, checkoutDisplaySchema, passesMembershipsHydrationSchema, productListHydrationSchema, productDetailHydrationSchema, cartHydrationSchema, checkoutHydrationSchema, passesMembershipsRenderSchema, productListRenderSchema, productDetailRenderSchema, cartRenderSchema, checkoutRenderSchema, shopIslandMetaCodec, shopIslandMetaKeys, shopBlockRuntime, productListBlockRuntime, productDetailBlockRuntime, cartBlockRuntime, checkoutBlockRuntime, shopInteractiveIslandPropsCodec, productListInteractiveIslandPropsCodec, productDetailInteractiveIslandPropsCodec, cartInteractiveIslandPropsCodec, checkoutInteractiveIslandPropsCodec;
50694
50446
  var init_shop_interactive = __esmMin((() => {
50447
+ init_buttonRoles();
50695
50448
  init_shop_shared();
50696
50449
  init_shared$1();
50697
50450
  init_display();
@@ -50729,12 +50482,7 @@ var init_shop_interactive = __esmMin((() => {
50729
50482
  showPrices: z$1.boolean().optional(),
50730
50483
  showValidityPeriod: z$1.boolean().optional(),
50731
50484
  showPricePerCredit: z$1.boolean().nullable().optional(),
50732
- buttonVariant: z$1.enum([
50733
- "primary",
50734
- "secondary",
50735
- "outline",
50736
- "link"
50737
- ]).optional(),
50485
+ buttonVariant: blockButtonRoleSchema.optional(),
50738
50486
  passesHeading: z$1.string().optional(),
50739
50487
  membershipsHeading: z$1.string().optional(),
50740
50488
  buyButtonText: z$1.string().optional(),
@@ -50879,12 +50627,7 @@ var init_shop_interactive = __esmMin((() => {
50879
50627
  passes: z$1.array(publicPassProductSchema),
50880
50628
  memberships: z$1.array(publicMembershipProductSchema),
50881
50629
  passPurchaseMode: z$1.enum(["add_to_cart", "buy_now"]),
50882
- buttonVariant: z$1.enum([
50883
- "primary",
50884
- "secondary",
50885
- "outline",
50886
- "link"
50887
- ])
50630
+ buttonVariant: blockButtonRoleSchema
50888
50631
  });
50889
50632
  productListHydrationSchema = z$1.object({
50890
50633
  products: z$1.array(publicProductSchema),
@@ -52358,6 +52101,7 @@ var init_newsletter_form_interactive = __esmMin((() => {
52358
52101
  init_runtime();
52359
52102
  init_newsletter_signup_destination();
52360
52103
  init_newsletter_form_types();
52104
+ init_buttonRoles();
52361
52105
  newsletterPresetSchema = z$1.enum([
52362
52106
  "emailOnly",
52363
52107
  "emailName",
@@ -52365,11 +52109,7 @@ var init_newsletter_form_interactive = __esmMin((() => {
52365
52109
  "emailNameCompany"
52366
52110
  ]);
52367
52111
  newsletterDestinationProviderSchema = z$1.enum(["riverbank", "mailchimp"]);
52368
- newsletterButtonVariantSchema = z$1.enum([
52369
- "primary",
52370
- "secondary",
52371
- "outline"
52372
- ]);
52112
+ newsletterButtonVariantSchema = blockButtonRoleSchema;
52373
52113
  newsletterFieldSchema = z$1.object({
52374
52114
  id: z$1.string(),
52375
52115
  type: z$1.enum(["email", "text"]),
@@ -55406,6 +55146,7 @@ function renderMark(mark, key, child) {
55406
55146
  //#endregion
55407
55147
  //#region ../blocks/src/system/runtime/nodes/basic.tsx
55408
55148
  init_buttons();
55149
+ init_buttonRoles();
55409
55150
  const TextNode = ({ value, children, blockId: _blockId, blockKind: _blockKind, blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, inlineTextFallbackPath, ...rest }) => {
55410
55151
  const inlineText = parseInlineTextFromUnknown(value);
55411
55152
  if (inlineText.ok && !isInlineTextEmpty(inlineText.value)) return /* @__PURE__ */ jsx(Text$2, {
@@ -55464,7 +55205,7 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
55464
55205
  return null;
55465
55206
  }
55466
55207
  const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
55467
- const resolvedVariantId = parseThemeButtonVariantId(variantId);
55208
+ const resolvedVariantId = parseThemeButtonVariantId(canonicalizePersistedBlockButtonRole(variantId));
55468
55209
  const combinedClassName = resolvedVariantId ? themeButtonClassName({
55469
55210
  variant: resolvedVariantId,
55470
55211
  size,
@@ -55572,12 +55313,7 @@ init_colorStyles();
55572
55313
  init_media$1();
55573
55314
  init_buttons();
55574
55315
  init_media();
55575
- const FILE_DOWNLOAD_BUTTON_VARIANTS = [
55576
- "primary",
55577
- "secondary",
55578
- "outline",
55579
- "link"
55580
- ];
55316
+ init_buttonRoles();
55581
55317
  function isDownloadableMediaType(type) {
55582
55318
  return typeof type === "string" && PUBLIC_DOWNLOAD_MEDIA_TYPES.includes(type);
55583
55319
  }
@@ -55609,7 +55345,7 @@ function iconForMediaType(type) {
55609
55345
  }
55610
55346
  }
55611
55347
  function normalizeButtonVariant(value) {
55612
- return typeof value === "string" && FILE_DOWNLOAD_BUTTON_VARIANTS.includes(value) ? value : "primary";
55348
+ return isBlockButtonRole(value) ? value : "primary";
55613
55349
  }
55614
55350
  function FileDownloadNode({ value, title, description, buttonLabel, buttonVariant, className }) {
55615
55351
  if (!value || !isDownloadableMediaType(value.type)) return null;
@@ -57606,8 +57342,11 @@ function LocationMapView({ addressText, location, zoom, heightPx, showAddressTex
57606
57342
  href: directionsUrl,
57607
57343
  target: "_blank",
57608
57344
  rel: "noreferrer",
57609
- className: "rb-inline-flex rb-w-fit rb-items-center rb-justify-center rb-rounded-md rb-border rb-px-4 rb-py-2 rb-text-sm rb-font-medium rb-no-underline transition-theme-standard rb-hover-opacity-90",
57610
- style: mergeStyles(borderColorStyle("border"), backgroundColorStyle("surface"), textColorStyle("text")),
57345
+ className: themeButtonClassName({
57346
+ variant: "ghost",
57347
+ size: "sm",
57348
+ extraClassName: "rb-w-fit"
57349
+ }),
57611
57350
  children: directionsLabel
57612
57351
  }) : null
57613
57352
  ]
@@ -57615,6 +57354,7 @@ function LocationMapView({ addressText, location, zoom, heightPx, showAddressTex
57615
57354
  }
57616
57355
  var init_location_map_view = __esmMin((() => {
57617
57356
  init_colorStyles();
57357
+ init_buttons();
57618
57358
  init_location_map_shared();
57619
57359
  }));
57620
57360
  //#endregion
@@ -58982,6 +58722,7 @@ function cardTreatmentClass(value) {
58982
58722
  }
58983
58723
  //#endregion
58984
58724
  //#region ../blocks/src/system/runtime/nodes/weekly-slot-availability.view.tsx
58725
+ init_buttons();
58985
58726
  function pluralizeWeeks(count) {
58986
58727
  return count === 1 ? "1 upcoming week" : `${count} upcoming weeks`;
58987
58728
  }
@@ -59057,7 +58798,11 @@ function WeeklySlotAvailabilityView({ availability, loading = false, error, empt
59057
58798
  ]
59058
58799
  }),
59059
58800
  resolvedCtaUrl ? /* @__PURE__ */ jsx("a", {
59060
- className: "weekly-slot-availability__cta",
58801
+ className: themeButtonClassName({
58802
+ variant: "ghost",
58803
+ size: "sm",
58804
+ extraClassName: "weekly-slot-availability__cta"
58805
+ }),
59061
58806
  href: buildSlotCtaUrl(resolvedCtaUrl, slot),
59062
58807
  "aria-label": buildSlotCtaLabel(resolvedCtaText, slot),
59063
58808
  children: resolvedCtaText
@@ -80192,7 +79937,7 @@ z$1.object({
80192
79937
  }).passthrough();
80193
79938
  //#endregion
80194
79939
  //#region ../theme-core/src/siteChrome.tsx
80195
- init_types$17();
79940
+ init_types$16();
80196
79941
  //#endregion
80197
79942
  //#region ../blocks/src/system/runtime/bindings.ts
80198
79943
  init_node();
@@ -80648,6 +80393,7 @@ function parseBackgroundColorToken(value) {
80648
80393
  }
80649
80394
  //#endregion
80650
80395
  //#region ../blocks/src/index.ts
80396
+ init_buttonRoles();
80651
80397
  init_palette$1();
80652
80398
  init_generateShades();
80653
80399
  init_utils$6();
@@ -156719,7 +156465,7 @@ function resolveHasCoursePayment(pricing) {
156719
156465
  if (pricing.selectedOption) return pricing.selectedRequiresPayment;
156720
156466
  return pricing.hasPaidSelection;
156721
156467
  }
156722
- function useCourseRegistrationWizard(props) {
156468
+ function useCourseRegistrationWizard(props, options = {}) {
156723
156469
  const api = useBlockApi();
156724
156470
  const { contentEntry, courses, entrySubrouteContext, subject } = props;
156725
156471
  const scopedCourses = useMemo(() => {
@@ -156966,21 +156712,34 @@ function useCourseRegistrationWizard(props) {
156966
156712
  setStep("enter-details");
156967
156713
  };
156968
156714
  const handleSubmit = async () => {
156969
- if (!selectedCourse) return;
156970
- if (!handleValidateForm()) return;
156715
+ if (!selectedCourse) return {
156716
+ kind: "blocked",
156717
+ message: "Choose an available set of dates to continue."
156718
+ };
156719
+ if (!handleValidateForm()) return { kind: "validation-failed" };
156971
156720
  if (missingPricingSelectionMessage) {
156972
156721
  setErrorMessage(missingPricingSelectionMessage);
156973
156722
  setStep("error");
156974
- return;
156723
+ return {
156724
+ kind: "blocked",
156725
+ message: missingPricingSelectionMessage
156726
+ };
156975
156727
  }
156976
156728
  const requiresPayment = selectedCoursePricing?.selectedRequiresPayment ?? false;
156977
156729
  const canUseMembership = requiresPayment && selectedCourse.acceptsMemberships && portalAuthState === "authenticated" && eligibleMemberships.length > 0;
156978
156730
  if (showSpamProtection && !altchaSolution) {
156979
- setErrorMessage("Please complete the verification check.");
156731
+ const message = "Please complete the verification check.";
156732
+ setErrorMessage(message);
156980
156733
  setStep("error");
156981
- return;
156734
+ return {
156735
+ kind: "blocked",
156736
+ message
156737
+ };
156982
156738
  }
156983
- if (!waitlistClaim.claim && courseEligibility?.isFull && !courseEligibility.canJoinWaitlist && showSoldOutCourseError()) return;
156739
+ if (!waitlistClaim.claim && courseEligibility?.isFull && !courseEligibility.canJoinWaitlist && showSoldOutCourseError()) return {
156740
+ kind: "blocked",
156741
+ message: courseEligibility.reason ?? "This course is fully booked."
156742
+ };
156984
156743
  if (courseEligibility?.canJoinWaitlist) {
156985
156744
  setStep("submitting");
156986
156745
  try {
@@ -157001,15 +156760,20 @@ function useCourseRegistrationWizard(props) {
157001
156760
  usedMembership: false
157002
156761
  });
157003
156762
  setStep(result.status === "waitlist" ? "waitlist" : "success");
156763
+ return { kind: "state-updated" };
157004
156764
  } catch (error) {
157005
- setErrorMessage(error instanceof Error ? error.message : "Booking failed");
156765
+ const message = error instanceof Error ? error.message : "Booking failed";
156766
+ setErrorMessage(message);
157006
156767
  setStep("error");
156768
+ return {
156769
+ kind: "failed",
156770
+ message
156771
+ };
157007
156772
  }
157008
- return;
157009
156773
  }
157010
156774
  if (requiresPayment && canUseMembership) {
157011
156775
  setStep("select-payment");
157012
- return;
156776
+ return { kind: "state-updated" };
157013
156777
  }
157014
156778
  if (requiresPayment) {
157015
156779
  setStep("submitting");
@@ -157035,16 +156799,24 @@ function useCourseRegistrationWizard(props) {
157035
156799
  usedMembership: false
157036
156800
  });
157037
156801
  setStep("success");
157038
- return;
156802
+ return { kind: "state-updated" };
157039
156803
  }
157040
156804
  if (!checkoutResult.checkoutUrl) throw new Error("Checkout URL missing");
157041
156805
  setStep("redirecting");
157042
- window.location.href = checkoutResult.checkoutUrl;
157043
- return;
156806
+ if (options.onCheckoutRedirect) options.onCheckoutRedirect(checkoutResult.checkoutUrl);
156807
+ else window.location.href = checkoutResult.checkoutUrl;
156808
+ return {
156809
+ kind: "checkout-redirect",
156810
+ checkoutUrl: checkoutResult.checkoutUrl
156811
+ };
157044
156812
  } catch (error) {
157045
- setErrorMessage(error instanceof Error ? error.message : "Checkout failed");
156813
+ const message = error instanceof Error ? error.message : "Checkout failed";
156814
+ setErrorMessage(message);
157046
156815
  setStep("error");
157047
- return;
156816
+ return {
156817
+ kind: "failed",
156818
+ message
156819
+ };
157048
156820
  }
157049
156821
  }
157050
156822
  setStep("submitting");
@@ -157066,35 +156838,58 @@ function useCourseRegistrationWizard(props) {
157066
156838
  usedMembership: result.paymentMethod === "membership"
157067
156839
  });
157068
156840
  setStep(result.status === "waitlist" ? "waitlist" : "success");
156841
+ return { kind: "state-updated" };
157069
156842
  } catch (error) {
157070
- setErrorMessage(error instanceof Error ? error.message : "Booking failed");
156843
+ const message = error instanceof Error ? error.message : "Booking failed";
156844
+ setErrorMessage(message);
157071
156845
  setStep("error");
156846
+ return {
156847
+ kind: "failed",
156848
+ message
156849
+ };
157072
156850
  }
157073
156851
  };
157074
156852
  const handlePaymentContinue = async () => {
157075
- if (!selectedCourse) return;
157076
- if (!handleValidateForm()) return;
156853
+ if (!selectedCourse) return {
156854
+ kind: "blocked",
156855
+ message: "Choose an available set of dates to continue."
156856
+ };
156857
+ if (!handleValidateForm()) return { kind: "validation-failed" };
157077
156858
  if (missingPricingSelectionMessage) {
157078
156859
  setErrorMessage(missingPricingSelectionMessage);
157079
156860
  setStep("error");
157080
- return;
156861
+ return {
156862
+ kind: "blocked",
156863
+ message: missingPricingSelectionMessage
156864
+ };
157081
156865
  }
157082
156866
  const requiresPayment = selectedCoursePricing?.selectedRequiresPayment ?? false;
157083
- if (!waitlistClaim.claim && courseEligibility?.isFull && !courseEligibility.canJoinWaitlist && showSoldOutCourseError()) return;
156867
+ if (!waitlistClaim.claim && courseEligibility?.isFull && !courseEligibility.canJoinWaitlist && showSoldOutCourseError()) return {
156868
+ kind: "blocked",
156869
+ message: courseEligibility.reason ?? "This course is fully booked."
156870
+ };
157084
156871
  if (!requiresPayment) {
157085
156872
  setStep("enter-details");
157086
- return;
156873
+ return { kind: "state-updated" };
157087
156874
  }
157088
156875
  if (showSpamProtection && !altchaSolution) {
157089
- setErrorMessage("Please complete the verification check.");
156876
+ const message = "Please complete the verification check.";
156877
+ setErrorMessage(message);
157090
156878
  setStep("error");
157091
- return;
156879
+ return {
156880
+ kind: "blocked",
156881
+ message
156882
+ };
157092
156883
  }
157093
156884
  if (paymentChoice === "membership") {
157094
156885
  if (!selectedMembershipId) {
157095
- setErrorMessage("Select a membership to enroll.");
156886
+ const message = "Select a membership to sign up.";
156887
+ setErrorMessage(message);
157096
156888
  setStep("error");
157097
- return;
156889
+ return {
156890
+ kind: "blocked",
156891
+ message
156892
+ };
157098
156893
  }
157099
156894
  setStep("submitting");
157100
156895
  try {
@@ -157116,11 +156911,16 @@ function useCourseRegistrationWizard(props) {
157116
156911
  usedMembership: true
157117
156912
  });
157118
156913
  setStep(result.status === "waitlist" ? "waitlist" : "success");
156914
+ return { kind: "state-updated" };
157119
156915
  } catch (error) {
157120
- setErrorMessage(error instanceof Error ? error.message : "Booking failed");
156916
+ const message = error instanceof Error ? error.message : "Booking failed";
156917
+ setErrorMessage(message);
157121
156918
  setStep("error");
156919
+ return {
156920
+ kind: "failed",
156921
+ message
156922
+ };
157122
156923
  }
157123
- return;
157124
156924
  }
157125
156925
  setStep("submitting");
157126
156926
  try {
@@ -157145,14 +156945,24 @@ function useCourseRegistrationWizard(props) {
157145
156945
  usedMembership: false
157146
156946
  });
157147
156947
  setStep("success");
157148
- return;
156948
+ return { kind: "state-updated" };
157149
156949
  }
157150
156950
  if (!checkoutResult.checkoutUrl) throw new Error("Checkout URL missing");
157151
156951
  setStep("redirecting");
157152
- window.location.href = checkoutResult.checkoutUrl;
156952
+ if (options.onCheckoutRedirect) options.onCheckoutRedirect(checkoutResult.checkoutUrl);
156953
+ else window.location.href = checkoutResult.checkoutUrl;
156954
+ return {
156955
+ kind: "checkout-redirect",
156956
+ checkoutUrl: checkoutResult.checkoutUrl
156957
+ };
157153
156958
  } catch (error) {
157154
- setErrorMessage(error instanceof Error ? error.message : "Checkout failed");
156959
+ const message = error instanceof Error ? error.message : "Checkout failed";
156960
+ setErrorMessage(message);
157155
156961
  setStep("error");
156962
+ return {
156963
+ kind: "failed",
156964
+ message
156965
+ };
157156
156966
  }
157157
156967
  };
157158
156968
  const handleRetry = () => {
@@ -157689,11 +157499,20 @@ var init_course_registration_client = __esmMin((() => {
157689
157499
  init_CourseRegistrationErrorBoundary();
157690
157500
  init_CourseRegistrationWizard();
157691
157501
  }));
157502
+ var init_whole_series_registration_headless_planning = __esmMin((() => {}));
157503
+ var init_useHeadlessWholeSeriesRegistrationFlow = __esmMin((() => {
157504
+ init_src();
157505
+ init_api();
157506
+ init_useCourseRegistrationWizard();
157507
+ init_whole_series_registration_headless_planning();
157508
+ }));
157692
157509
  //#endregion
157693
157510
  //#region ../blocks/src/client/course-registration.ts
157694
157511
  var init_course_registration = __esmMin((() => {
157695
157512
  init_api();
157696
157513
  init_course_registration_client();
157514
+ init_useHeadlessWholeSeriesRegistrationFlow();
157515
+ init_client();
157697
157516
  }));
157698
157517
  //#endregion
157699
157518
  //#region src/rendering/islands/enhancers/courseRegistration.tsx
@@ -160225,7 +160044,7 @@ var SimpleCache = class {
160225
160044
  * 1. This constant
160226
160045
  * 2. The "version" field in package.json
160227
160046
  */
160228
- const SDK_VERSION = "0.109.0";
160047
+ const SDK_VERSION = "0.111.0";
160229
160048
  //#endregion
160230
160049
  //#region src/client/error.ts
160231
160050
  let _Symbol$for;