@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
@@ -4959,6 +4959,24 @@ const API_ENDPOINTS$1 = {
4959
4959
  auth: "user",
4960
4960
  responseKind: "json"
4961
4961
  },
4962
+ publishEventOfferingPageSurface: {
4963
+ path: "/sites/{siteId}/page-surfaces/{pageSurfaceId}/publication",
4964
+ method: "POST",
4965
+ errors: [
4966
+ "auth:forbidden",
4967
+ "validation:invalid_input",
4968
+ "resource:not_found",
4969
+ "resource:conflict",
4970
+ "server:internal_error"
4971
+ ],
4972
+ tags: [
4973
+ TAG_TEMPLATES.siteCollection,
4974
+ TAG_TEMPLATES.siteRoutableContent,
4975
+ TAG_TEMPLATES.pageSurfaceById
4976
+ ],
4977
+ auth: "user",
4978
+ responseKind: "json"
4979
+ },
4962
4980
  runSdkWorkflow: {
4963
4981
  path: "/sites/{siteId}/content/{type}/{entryId}/workflows/{workflowId}/run",
4964
4982
  method: "POST",
@@ -8821,8 +8839,8 @@ const API_ENDPOINTS$1 = {
8821
8839
  auth: "user",
8822
8840
  responseKind: "blob"
8823
8841
  },
8824
- adminSiteCost: {
8825
- path: "/admin/sites/{siteId}/cost",
8842
+ adminSiteBillingArrangement: {
8843
+ path: "/admin/sites/{siteId}/billing/arrangement",
8826
8844
  method: "GET",
8827
8845
  tags: [
8828
8846
  "admin",
@@ -8830,10 +8848,16 @@ const API_ENDPOINTS$1 = {
8830
8848
  "billing"
8831
8849
  ],
8832
8850
  auth: "admin",
8833
- responseKind: "json"
8851
+ responseKind: "json",
8852
+ errors: [
8853
+ "validation:invalid_input",
8854
+ "auth:forbidden",
8855
+ "resource:not_found",
8856
+ "server:internal_error"
8857
+ ]
8834
8858
  },
8835
- adminUpdateSiteCost: {
8836
- path: "/admin/sites/{siteId}/cost",
8859
+ adminUpdateSiteBillingArrangement: {
8860
+ path: "/admin/sites/{siteId}/billing/arrangement",
8837
8861
  method: "POST",
8838
8862
  tags: [
8839
8863
  "admin",
@@ -8841,7 +8865,14 @@ const API_ENDPOINTS$1 = {
8841
8865
  "billing"
8842
8866
  ],
8843
8867
  auth: "admin",
8844
- responseKind: "json"
8868
+ responseKind: "json",
8869
+ errors: [
8870
+ "validation:invalid_input",
8871
+ "auth:forbidden",
8872
+ "resource:not_found",
8873
+ "resource:conflict",
8874
+ "server:internal_error"
8875
+ ]
8845
8876
  },
8846
8877
  adminScheduleBillingComponentEnd: {
8847
8878
  path: "/admin/sites/{siteId}/billing/components/{componentId}/end",
@@ -10229,7 +10260,7 @@ function formatKeyAsLabel(key) {
10229
10260
  return key.replace(/([A-Z])/g, " $1").replace(/[-_]/g, " ").trim().split(" ").map((word) => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase()).join(" ");
10230
10261
  }
10231
10262
  var init_augmentManifest = __esmMin((() => {}));
10232
- var init_types$18 = __esmMin((() => {}));
10263
+ var init_types$17 = __esmMin((() => {}));
10233
10264
  //#endregion
10234
10265
  //#region ../media-core/src/fileSafety.ts
10235
10266
  function containsUnsafePathSegmentCharacter(value) {
@@ -10891,7 +10922,7 @@ var init_legacyMediaValue = __esmMin((() => {}));
10891
10922
  //#endregion
10892
10923
  //#region ../media-core/src/index.ts
10893
10924
  var init_src$3 = __esmMin((() => {
10894
- init_types$18();
10925
+ init_types$17();
10895
10926
  init_fileDomain();
10896
10927
  init_fileStorage();
10897
10928
  init_storagePathDomain();
@@ -14399,7 +14430,7 @@ function defineBlockDesignCapability(capability) {
14399
14430
  };
14400
14431
  }
14401
14432
  var plainFrame, tileTreatmentValues, eventListTreatmentValues, eyebrowTreatmentValues, visibleHeadingDecorationFamilyValues, headingDecorationOverrideValues, headingDecorationColorTokenValues, noHeadingDecoration, accordionIconSetValues, accordionIconColorTokenValues, accordionIconMotionValues;
14402
- var init_types$17 = __esmMin((() => {
14433
+ var init_types$16 = __esmMin((() => {
14403
14434
  plainFrame = { kind: "plain" };
14404
14435
  tileTreatmentValues = [
14405
14436
  "default",
@@ -14464,14 +14495,14 @@ function defineBlockAppearancePreset(preset) {
14464
14495
  return preset;
14465
14496
  }
14466
14497
  var init_appearancePresetResolution = __esmMin((() => {
14467
- init_types$17();
14498
+ init_types$16();
14468
14499
  }));
14469
14500
  //#endregion
14470
14501
  //#region ../theme-core/src/site-styles/blockAppearancePresets.ts
14471
14502
  var blockAppearancePresets;
14472
14503
  var init_blockAppearancePresets = __esmMin((() => {
14473
14504
  init_appearancePresetResolution();
14474
- init_types$17();
14505
+ init_types$16();
14475
14506
  blockAppearancePresets = [
14476
14507
  defineBlockAppearancePreset({
14477
14508
  kind: "block-design",
@@ -15284,7 +15315,7 @@ function assertUniqueLayoutProfileKeys(profiles) {
15284
15315
  if (duplicates.length > 0) throw new Error(`Duplicate block layout design profiles: ${duplicates.join(", ")}`);
15285
15316
  }
15286
15317
  var init_blockFlow = __esmMin((() => {
15287
- init_types$17();
15318
+ init_types$16();
15288
15319
  }));
15289
15320
  var init_classic_professional = __esmMin((() => {}));
15290
15321
  var init_modern_minimal = __esmMin((() => {}));
@@ -15596,7 +15627,7 @@ var init_all = __esmMin((() => {
15596
15627
  }));
15597
15628
  //#endregion
15598
15629
  //#region ../theme-core/src/palette/types.ts
15599
- var init_types$16 = __esmMin((() => {}));
15630
+ var init_types$15 = __esmMin((() => {}));
15600
15631
  //#endregion
15601
15632
  //#region ../../node_modules/.pnpm/@vibrant+image@4.0.4/node_modules/@vibrant/image/dist/esm/histogram.js
15602
15633
  var Histogram;
@@ -17049,7 +17080,7 @@ function defineCuratedPalette(input) {
17049
17080
  };
17050
17081
  }
17051
17082
  var curatedPaletteAuthoringKeySchema;
17052
- var init_types$15 = __esmMin((() => {
17083
+ var init_types$14 = __esmMin((() => {
17053
17084
  init_styleTags();
17054
17085
  init_themeColorTokens();
17055
17086
  init_colors();
@@ -17090,7 +17121,7 @@ var init_types$15 = __esmMin((() => {
17090
17121
  //#region ../theme-core/src/palette/curated/brand-led.ts
17091
17122
  var brandLedCool, brandLedWarm, brandLedJewel, brandLedSpruce, brandLedBurgundyGold;
17092
17123
  var init_brand_led = __esmMin((() => {
17093
- init_types$15();
17124
+ init_types$14();
17094
17125
  brandLedCool = defineCuratedPalette({
17095
17126
  authoringKey: "brand-led-cool",
17096
17127
  name: "Brand-led — Cool",
@@ -17421,7 +17452,7 @@ var init_brand_led = __esmMin((() => {
17421
17452
  //#region ../theme-core/src/palette/curated/high-contrast.ts
17422
17453
  var highContrastInk, highContrastCharcoal, highContrastMonochrome;
17423
17454
  var init_high_contrast = __esmMin((() => {
17424
- init_types$15();
17455
+ init_types$14();
17425
17456
  highContrastInk = defineCuratedPalette({
17426
17457
  authoringKey: "high-contrast-ink",
17427
17458
  name: "High Contrast — Ink",
@@ -17622,7 +17653,7 @@ var init_high_contrast = __esmMin((() => {
17622
17653
  //#region ../theme-core/src/palette/curated/soft-natural.ts
17623
17654
  var softNaturalSage, softNaturalStone, softNaturalWatercolor, softNaturalLilac;
17624
17655
  var init_soft_natural = __esmMin((() => {
17625
- init_types$15();
17656
+ init_types$14();
17626
17657
  softNaturalSage = defineCuratedPalette({
17627
17658
  authoringKey: "soft-natural-sage",
17628
17659
  name: "Soft Natural — Sage",
@@ -17888,7 +17919,7 @@ var init_soft_natural = __esmMin((() => {
17888
17919
  //#region ../theme-core/src/palette/curated/warm-neutral.ts
17889
17920
  var warmNeutralClay, warmNeutralCream, warmNeutralSoftEarth, warmNeutralForest;
17890
17921
  var init_warm_neutral = __esmMin((() => {
17891
- init_types$15();
17922
+ init_types$14();
17892
17923
  warmNeutralClay = defineCuratedPalette({
17893
17924
  authoringKey: "warm-neutral-clay",
17894
17925
  name: "Warm Neutral — Clay",
@@ -18154,7 +18185,7 @@ var init_warm_neutral = __esmMin((() => {
18154
18185
  //#region ../theme-core/src/palette/curated/warm-dark.ts
18155
18186
  var warmDarkEmber, warmDarkKirtanGold;
18156
18187
  var init_warm_dark = __esmMin((() => {
18157
- init_types$15();
18188
+ init_types$14();
18158
18189
  warmDarkEmber = defineCuratedPalette({
18159
18190
  authoringKey: "warm-dark-ember",
18160
18191
  name: "Warm Dark — Ember",
@@ -18320,7 +18351,7 @@ var init_curated = __esmMin((() => {
18320
18351
  init_soft_natural();
18321
18352
  init_warm_neutral();
18322
18353
  init_warm_dark();
18323
- init_types$15();
18354
+ init_types$14();
18324
18355
  curatedPalettes = [
18325
18356
  admitCuratedPaletteDefinition(brandLedCool),
18326
18357
  admitCuratedPaletteDefinition(brandLedWarm),
@@ -18366,7 +18397,7 @@ var init_curated = __esmMin((() => {
18366
18397
  var init_resolveSelection = __esmMin((() => {
18367
18398
  init_curated();
18368
18399
  })), sitePaletteIdSchema, sitePaletteVersionSchema, paletteSelectionSchema, onboardingPaletteOriginSchema, curatedForkPaletteOriginSchema, manualPaletteOriginSchema, legacyCustomizedPaletteOriginSchema, sitePaletteOriginSchema, editorSitePaletteOriginSchema, paletteCommandSchema;
18369
- var init_selection = __esmMin((() => {
18400
+ var init_selection$1 = __esmMin((() => {
18370
18401
  init_colors();
18371
18402
  init_curated();
18372
18403
  sitePaletteIdSchema = z$1.string().uuid().transform((value) => value);
@@ -18433,12 +18464,12 @@ var init_persistenceReadSource = __esmMin((() => {
18433
18464
  init_curated();
18434
18465
  init_colors();
18435
18466
  init_resolveSelection();
18436
- init_selection();
18467
+ init_selection$1();
18437
18468
  }));
18438
18469
  var init_sitePalettePersistence = __esmMin((() => {
18439
18470
  init_curated();
18440
18471
  init_colors();
18441
- init_selection();
18472
+ init_selection$1();
18442
18473
  }));
18443
18474
  var init_fromVibrant = __esmMin((() => {
18444
18475
  init_utils$6();
@@ -18452,7 +18483,7 @@ var init_palette = __esmMin((() => {
18452
18483
  init_generateCssVars();
18453
18484
  init_generateShades();
18454
18485
  init_neutralScale();
18455
- init_types$16();
18486
+ init_types$15();
18456
18487
  init_utils$6();
18457
18488
  init_paletteAccess();
18458
18489
  init_extractPalette();
@@ -18461,7 +18492,7 @@ var init_palette = __esmMin((() => {
18461
18492
  init_libraryModel();
18462
18493
  init_persistenceReadSource();
18463
18494
  init_resolveSelection();
18464
- init_selection();
18495
+ init_selection$1();
18465
18496
  init_sitePalettePersistence();
18466
18497
  init_fromVibrant();
18467
18498
  init_suggestRecipes();
@@ -18625,7 +18656,7 @@ var init_backgroundAppearance = __esmMin((() => {
18625
18656
  backgroundAppearanceColorTokenNameSet = new Set(backgroundAppearanceColorTokenNames);
18626
18657
  }));
18627
18658
  var init_compositionBudget = __esmMin((() => {
18628
- init_types$17();
18659
+ init_types$16();
18629
18660
  }));
18630
18661
  var init_schemaVersionedJson = __esmMin((() => {}));
18631
18662
  //#endregion
@@ -18640,7 +18671,7 @@ function boundaryRuntimeMetrics(family, size, heightExpression) {
18640
18671
  }
18641
18672
  var noneBoundaryOption, softBoundaryOption, spaciousBoundaryOption;
18642
18673
  var init_sectionTransitions = __esmMin((() => {
18643
- init_types$17();
18674
+ init_types$16();
18644
18675
  boundaryRuntimeMetrics("gradient", "medium", "6rem + 2px"), boundaryRuntimeMetrics("gradient", "spacious", "10rem"), boundaryRuntimeMetrics("gradient", "expansive", "14rem"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("wave", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("wave", "large", "7rem + 2px"), boundaryRuntimeMetrics("wave", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "medium", "6rem + 2px"), boundaryRuntimeMetrics("angle", "compact", "4.5rem + 2px"), boundaryRuntimeMetrics("angle", "large", "7rem + 2px");
18645
18676
  noneBoundaryOption = {
18646
18677
  id: asBoundaryOptionId("break:none"),
@@ -18716,7 +18747,7 @@ function boundaryKey$1(previousBlockId, nextBlockId) {
18716
18747
  }
18717
18748
  var pageDesignUserPinnedAppearanceChoiceSchema, pageDesignUserPinnedBoundaryChoiceSchema, pageDesignBoundaryTreatmentSchema, pageDesignUserPinnedBoundaryTreatmentChoiceSchema, pageDesignBlockLookPinSchema, pageDesignBoundaryPinSchema, legacyPageDesignBoundaryPinSchema;
18718
18749
  var init_pageDesignIntent = __esmMin((() => {
18719
- init_types$17();
18750
+ init_types$16();
18720
18751
  init_schemaVersionedJson();
18721
18752
  init_sectionTransitions();
18722
18753
  asBoundaryOptionId("break:unknown");
@@ -18821,7 +18852,7 @@ var init_pageDesignIntent = __esmMin((() => {
18821
18852
  var init_contentTemplateDesignIntent = __esmMin((() => {
18822
18853
  init_pageDesignIntent();
18823
18854
  init_sectionTransitions();
18824
- init_types$17();
18855
+ init_types$16();
18825
18856
  }));
18826
18857
  //#endregion
18827
18858
  //#region ../theme-core/src/buttons/effectClassification.ts
@@ -19079,7 +19110,7 @@ function isUnknownArray$4(value) {
19079
19110
  return Array.isArray(value);
19080
19111
  }
19081
19112
  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;
19082
- var init_types$14 = __esmMin((() => {
19113
+ var init_types$13 = __esmMin((() => {
19083
19114
  init_effectClassification();
19084
19115
  init_themeColorTokens();
19085
19116
  init_colorTokenParts();
@@ -19314,269 +19345,460 @@ var init_types$14 = __esmMin((() => {
19314
19345
  });
19315
19346
  }));
19316
19347
  //#endregion
19317
- //#region ../theme-core/src/buttons/personalities/types.ts
19318
- function asButtonPersonalityId(value) {
19319
- if (value.length === 0) throw new Error("ButtonPersonalityId must be a non-empty string");
19320
- return value;
19348
+ //#region ../theme-core/src/buttons/styles/domain.ts
19349
+ function defineButtonStyleRecipe(recipe) {
19350
+ return recipe;
19321
19351
  }
19322
- /**
19323
- * Helper for personality file modules to keep the call site short and
19324
- * type-safe. `as const satisfies ...` would also work but produces wider
19325
- * types at use sites.
19326
- */
19327
- function defineButtonPersonality(input) {
19352
+ function materializeButtonRoles(definitions) {
19353
+ const primary = materializeCompleteRole("primary", definitions.primary.appearance);
19354
+ const secondary = materializeCompleteRole("secondary", definitions.secondary.appearance);
19355
+ const completeRoles = {
19356
+ primary,
19357
+ secondary
19358
+ };
19328
19359
  return {
19329
- id: asButtonPersonalityId(input.id),
19330
- name: input.name,
19331
- description: input.description,
19332
- tags: input.tags,
19333
- buttonSystem: buttonSystemSchema.parse(input.buttonSystem)
19360
+ primary,
19361
+ secondary,
19362
+ outline: materializeSupportingRole("outline", definitions.outline, completeRoles),
19363
+ ghost: materializeSupportingRole("ghost", definitions.ghost, completeRoles),
19364
+ accent: materializeSupportingRole("accent", definitions.accent, completeRoles)
19334
19365
  };
19335
19366
  }
19336
- var buttonPersonalityIdSchema;
19337
- var init_types$13 = __esmMin((() => {
19338
- init_types$14();
19339
- init_styleTags();
19340
- buttonPersonalityIdSchema = z$1.string().min(1).transform((value) => asButtonPersonalityId(value));
19341
- z$1.object({
19342
- id: buttonPersonalityIdSchema,
19343
- name: z$1.string().min(1),
19344
- description: z$1.string().min(1),
19345
- tags: styleTagsSchema,
19346
- buttonSystem: buttonSystemSchema
19347
- });
19367
+ function resolveButtonStyleRecipe(recipe, parameters) {
19368
+ const parsedParameters = recipe.parameterSchema.safeParse(parameters);
19369
+ if (!parsedParameters.success) return {
19370
+ kind: "error",
19371
+ error: {
19372
+ kind: "invalid-parameters",
19373
+ styleId: recipe.id,
19374
+ issues: parsedParameters.error.issues.map((issue) => issue.message)
19375
+ }
19376
+ };
19377
+ const definition = recipe.defineSystem(parsedParameters.data);
19378
+ const roles = materializeButtonRoles(definition.roles);
19379
+ const buttonSystem = {
19380
+ global: definition.global,
19381
+ variants: PUBLIC_BUTTON_ROLES.map((role) => roles[role]),
19382
+ ...definition.sizes ? { sizes: definition.sizes } : {}
19383
+ };
19384
+ const parsedButtonSystem = buttonSystemSchema.safeParse(buttonSystem);
19385
+ if (!parsedButtonSystem.success) return {
19386
+ kind: "error",
19387
+ error: {
19388
+ kind: "invalid-button-system",
19389
+ styleId: recipe.id,
19390
+ issues: parsedButtonSystem.error.issues.map((issue) => issue.message)
19391
+ }
19392
+ };
19393
+ return {
19394
+ kind: "resolved",
19395
+ buttonSystem: parsedButtonSystem.data
19396
+ };
19397
+ }
19398
+ function materializeSupportingRole(role, definition, completeRoles) {
19399
+ if (definition.kind === "complete") return materializeCompleteRole(role, definition.appearance);
19400
+ return {
19401
+ ...completeRoles[definition.from],
19402
+ ...definition.overrides,
19403
+ id: role,
19404
+ name: roleName(role),
19405
+ enabled: true,
19406
+ priority: 3
19407
+ };
19408
+ }
19409
+ function materializeCompleteRole(role, appearance) {
19410
+ return {
19411
+ ...appearance,
19412
+ id: role,
19413
+ name: roleName(role),
19414
+ enabled: true,
19415
+ priority: rolePriority(role)
19416
+ };
19417
+ }
19418
+ function roleName(role) {
19419
+ return role.charAt(0).toUpperCase() + role.slice(1);
19420
+ }
19421
+ function rolePriority(role) {
19422
+ if (role === "primary") return 1;
19423
+ if (role === "secondary") return 2;
19424
+ return 3;
19425
+ }
19426
+ var PUBLIC_BUTTON_ROLES;
19427
+ var init_domain = __esmMin((() => {
19428
+ init_types$13();
19429
+ PUBLIC_BUTTON_ROLES = [
19430
+ "primary",
19431
+ "secondary",
19432
+ "outline",
19433
+ "ghost",
19434
+ "accent"
19435
+ ];
19348
19436
  }));
19349
19437
  //#endregion
19350
- //#region ../theme-core/src/buttons/personalities/brushed-wash.ts
19351
- var brushedWash;
19352
- var init_brushed_wash = __esmMin((() => {
19438
+ //#region ../theme-core/src/buttons/styles/selection.ts
19439
+ function selectionBranch(styleId, parameters) {
19440
+ return z$1.object({
19441
+ styleId: z$1.literal(styleId),
19442
+ parameters
19443
+ }).strict();
19444
+ }
19445
+ function createDefaultButtonStyleSelection(styleId) {
19446
+ return buttonStyleSelectionSchema.parse({
19447
+ styleId,
19448
+ parameters: styleId === "quiet-arrow" ? { secondaryTreatment: "outlined" } : {}
19449
+ });
19450
+ }
19451
+ function isButtonStyleId(value) {
19452
+ return BUTTON_STYLE_IDS.includes(value);
19453
+ }
19454
+ var BUTTON_STYLE_IDS, quietArrowParametersSchema, emptyParametersSchema$1, buttonStyleSelectionWireSchema, buttonStyleSelectionSchema;
19455
+ var init_selection = __esmMin((() => {
19456
+ BUTTON_STYLE_IDS = [
19457
+ "soft-pill",
19458
+ "earth-pill",
19459
+ "confident-chip",
19460
+ "editorial-link",
19461
+ "pebble",
19462
+ "ink-stamp",
19463
+ "flat-ink",
19464
+ "brushed-wash",
19465
+ "showtime-pill",
19466
+ "joy-stamp",
19467
+ "ornate-ritual",
19468
+ "quiet-arrow"
19469
+ ];
19470
+ quietArrowParametersSchema = z$1.object({ secondaryTreatment: z$1.enum(["outlined", "solid-accent"]) }).strict();
19471
+ emptyParametersSchema$1 = z$1.object({}).strict();
19472
+ buttonStyleSelectionWireSchema = z$1.discriminatedUnion("styleId", [
19473
+ selectionBranch("soft-pill", emptyParametersSchema$1),
19474
+ selectionBranch("earth-pill", emptyParametersSchema$1),
19475
+ selectionBranch("confident-chip", emptyParametersSchema$1),
19476
+ selectionBranch("editorial-link", emptyParametersSchema$1),
19477
+ selectionBranch("pebble", emptyParametersSchema$1),
19478
+ selectionBranch("ink-stamp", emptyParametersSchema$1),
19479
+ selectionBranch("flat-ink", emptyParametersSchema$1),
19480
+ selectionBranch("brushed-wash", emptyParametersSchema$1),
19481
+ selectionBranch("showtime-pill", emptyParametersSchema$1),
19482
+ selectionBranch("joy-stamp", emptyParametersSchema$1),
19483
+ selectionBranch("ornate-ritual", emptyParametersSchema$1),
19484
+ selectionBranch("quiet-arrow", quietArrowParametersSchema)
19485
+ ]);
19486
+ buttonStyleSelectionSchema = buttonStyleSelectionWireSchema;
19487
+ }));
19488
+ //#endregion
19489
+ //#region ../theme-core/src/buttons/styles/recipes/quietArrow.ts
19490
+ var quietArrowRecipe;
19491
+ var init_quietArrow = __esmMin((() => {
19492
+ init_domain();
19353
19493
  init_types$13();
19354
- brushedWash = defineButtonPersonality({
19355
- id: "brushed-wash",
19356
- name: "Brushed Wash",
19357
- description: "Watercolour-gradient buttons with soft shadows and generous padding.",
19494
+ init_selection();
19495
+ quietArrowRecipe = defineButtonStyleRecipe({
19496
+ id: "quiet-arrow",
19497
+ accessibilityLabel: "Wide uppercase buttons with trailing arrows",
19358
19498
  tags: {
19359
19499
  tone: "classic",
19360
- energy: "vibrant",
19361
- motion: "standard",
19362
- era: "organic"
19500
+ energy: "calm",
19501
+ motion: "subtle",
19502
+ era: "editorial"
19363
19503
  },
19364
- buttonSystem: {
19504
+ parameterSchema: quietArrowParametersSchema,
19505
+ defaultParameters: { secondaryTreatment: "outlined" },
19506
+ controls: [{
19507
+ kind: "choice",
19508
+ parameter: "secondaryTreatment",
19509
+ label: "Secondary button treatment",
19510
+ options: [{
19511
+ value: "outlined",
19512
+ label: "Outlined"
19513
+ }, {
19514
+ value: "solid-accent",
19515
+ label: "Solid accent"
19516
+ }]
19517
+ }],
19518
+ defineSystem: (parameters) => ({
19365
19519
  global: {
19366
19520
  cornerStyle: "rounded",
19367
- shadow: "low",
19368
- textTransform: "none",
19521
+ textTransform: "uppercase",
19369
19522
  fontWeight: 500,
19370
19523
  borderWidth: 1,
19524
+ typography: "body",
19525
+ fontSize: "text-sm",
19526
+ letterSpacing: "loose",
19371
19527
  hoverTransform: "none",
19372
19528
  hoverColor: "none"
19373
19529
  },
19374
19530
  sizes: {
19375
19531
  sm: {
19376
- padding: "0.75rem 2rem",
19532
+ padding: "0.625rem 1.25rem",
19533
+ fontSize: "text-xs"
19534
+ },
19535
+ md: {
19536
+ padding: "0.8125rem 1.75rem",
19377
19537
  fontSize: "text-sm"
19378
19538
  },
19379
- md: { padding: "1rem 2.5rem" },
19380
19539
  lg: {
19381
- padding: "1.25rem 3rem",
19382
- fontSize: "text-lg"
19540
+ padding: "0.9375rem 2.125rem",
19541
+ fontSize: "text-sm"
19383
19542
  },
19384
19543
  xl: {
19385
- padding: "1.625rem 3.75rem",
19386
- fontSize: "text-xl"
19544
+ padding: "1.0625rem 2.5rem",
19545
+ fontSize: "text-base"
19387
19546
  }
19388
19547
  },
19389
- variants: [
19390
- {
19391
- id: "primary",
19392
- name: "Primary",
19393
- enabled: true,
19394
- priority: 1,
19395
- background: {
19396
- type: "gradient",
19397
- stops: ["primary", "accent"],
19398
- direction: "to-r",
19399
- foregroundToken: "primaryForeground"
19400
- },
19401
- borderRadius: "rounded-lg",
19402
- shadow: {
19403
- elevation: "low",
19404
- softness: "soft",
19405
- position: "bottom"
19548
+ roles: {
19549
+ primary: {
19550
+ kind: "complete",
19551
+ appearance: {
19552
+ background: {
19553
+ type: "solid",
19554
+ colorToken: unsafeAsOpaqueButtonColourToken("primary")
19555
+ },
19556
+ borderRadius: "rounded-xl",
19557
+ affordance: { iconId: "ArrowRight" },
19558
+ effects: { hover: [{
19559
+ effectId: "darken-background",
19560
+ options: { amount: 100 }
19561
+ }] }
19406
19562
  }
19407
19563
  },
19408
- {
19409
- id: "secondary",
19410
- name: "Secondary",
19411
- enabled: true,
19412
- priority: 2,
19413
- background: {
19414
- type: "gradient",
19415
- stops: ["secondary", "accent"],
19416
- direction: "to-br",
19417
- foregroundToken: "primaryForeground"
19418
- },
19419
- borderRadius: "rounded-lg",
19420
- shadow: {
19421
- elevation: "low",
19422
- softness: "soft",
19423
- position: "bottom"
19564
+ secondary: {
19565
+ kind: "complete",
19566
+ appearance: parameters.secondaryTreatment === "solid-accent" ? {
19567
+ background: {
19568
+ type: "solid",
19569
+ colorToken: unsafeAsOpaqueButtonColourToken("accent")
19570
+ },
19571
+ borderRadius: "rounded-xl",
19572
+ affordance: { iconId: "ArrowRight" },
19573
+ effects: { hover: [{
19574
+ effectId: "darken-background",
19575
+ options: { amount: 100 }
19576
+ }] }
19577
+ } : {
19578
+ background: {
19579
+ type: "surface",
19580
+ role: "link"
19581
+ },
19582
+ borderRadius: "rounded-xl",
19583
+ border: { widthClass: "border" },
19584
+ affordance: { iconId: "ArrowRight" },
19585
+ effects: { hover: [{
19586
+ effectId: "background-on-hover",
19587
+ options: { colorToken: "surfaceAlt" }
19588
+ }] }
19424
19589
  }
19425
19590
  },
19426
- {
19427
- id: "outline",
19428
- name: "Outline",
19429
- enabled: true,
19430
- priority: 3,
19431
- background: {
19432
- type: "surface",
19433
- role: "link"
19434
- },
19435
- borderRadius: "rounded-lg",
19436
- border: { widthClass: "border" },
19437
- effects: { hover: [{
19438
- effectId: "background-on-hover",
19439
- options: { colorToken: "surface" }
19440
- }] }
19591
+ outline: {
19592
+ kind: "complete",
19593
+ appearance: {
19594
+ background: {
19595
+ type: "surface",
19596
+ role: "link"
19597
+ },
19598
+ borderRadius: "rounded-xl",
19599
+ border: { widthClass: "border" }
19600
+ }
19441
19601
  },
19442
- {
19443
- id: "ghost",
19444
- name: "Ghost",
19445
- enabled: true,
19446
- priority: 3,
19447
- background: {
19448
- type: "surface",
19449
- role: "link"
19450
- },
19451
- borderRadius: "rounded-lg",
19452
- effects: { hover: [{
19453
- effectId: "background-on-hover",
19454
- options: { colorToken: "surface" }
19455
- }] }
19602
+ ghost: {
19603
+ kind: "complete",
19604
+ appearance: {
19605
+ background: {
19606
+ type: "surface",
19607
+ role: "link"
19608
+ },
19609
+ borderRadius: "rounded-xl"
19610
+ }
19611
+ },
19612
+ accent: {
19613
+ kind: "derive",
19614
+ from: "primary",
19615
+ overrides: { background: {
19616
+ type: "solid",
19617
+ colorToken: unsafeAsOpaqueButtonColourToken("accent")
19618
+ } }
19456
19619
  }
19457
- ]
19458
- }
19620
+ }
19621
+ })
19459
19622
  });
19460
19623
  }));
19461
19624
  //#endregion
19462
- //#region ../theme-core/src/buttons/personalities/confident-chip.ts
19463
- var confidentChip;
19464
- var init_confident_chip = __esmMin((() => {
19625
+ //#region ../theme-core/src/buttons/styles/recipes/defineStaticButtonStyleRecipe.ts
19626
+ function defineStaticButtonStyleRecipe(input) {
19627
+ const system = normalizeSystem(input.system);
19628
+ return defineButtonStyleRecipe({
19629
+ id: input.id,
19630
+ accessibilityLabel: input.accessibilityLabel,
19631
+ tags: input.tags,
19632
+ parameterSchema: emptyParametersSchema,
19633
+ defaultParameters: {},
19634
+ controls: [],
19635
+ defineSystem: () => system
19636
+ });
19637
+ }
19638
+ function normalizeSystem(input) {
19639
+ return {
19640
+ global: buttonGlobalSettingsSchema.parse(input.global),
19641
+ ...input.sizes ? { sizes: input.sizes } : {},
19642
+ roles: {
19643
+ primary: normalizeCompleteRole(input.roles.primary),
19644
+ secondary: normalizeCompleteRole(input.roles.secondary),
19645
+ outline: normalizeSupportingRole(input.roles.outline),
19646
+ ghost: normalizeSupportingRole(input.roles.ghost),
19647
+ accent: normalizeSupportingRole(input.roles.accent)
19648
+ }
19649
+ };
19650
+ }
19651
+ function normalizeCompleteRole(role) {
19652
+ return {
19653
+ kind: "complete",
19654
+ appearance: normalizeAppearance(role.appearance)
19655
+ };
19656
+ }
19657
+ function normalizeSupportingRole(role) {
19658
+ if (role.kind === "complete") return normalizeCompleteRole(role);
19659
+ return {
19660
+ kind: "derive",
19661
+ from: role.from,
19662
+ ...role.overrides ? { overrides: normalizeAppearanceOverrides(role.overrides) } : {}
19663
+ };
19664
+ }
19665
+ function normalizeAppearance(appearance) {
19666
+ const { background, hoverBackgroundToken, ...rest } = appearance;
19667
+ return {
19668
+ ...rest,
19669
+ background: buttonColourTreatmentSchema.parse(background),
19670
+ ...hoverBackgroundToken ? { hoverBackgroundToken: opaqueButtonColourTokenSchema.parse(hoverBackgroundToken) } : {}
19671
+ };
19672
+ }
19673
+ function normalizeAppearanceOverrides(overrides) {
19674
+ const { background, hoverBackgroundToken, ...rest } = overrides;
19675
+ return {
19676
+ ...rest,
19677
+ ...background ? { background: buttonColourTreatmentSchema.parse(background) } : {},
19678
+ ...hoverBackgroundToken ? { hoverBackgroundToken: opaqueButtonColourTokenSchema.parse(hoverBackgroundToken) } : {}
19679
+ };
19680
+ }
19681
+ var emptyParametersSchema;
19682
+ var init_defineStaticButtonStyleRecipe = __esmMin((() => {
19465
19683
  init_types$13();
19466
- confidentChip = defineButtonPersonality({
19467
- id: "confident-chip",
19468
- name: "Confident Chip",
19469
- description: "Mid-radius solid buttons with a crisp hover.",
19684
+ init_domain();
19685
+ emptyParametersSchema = z$1.object({}).strict();
19686
+ }));
19687
+ //#endregion
19688
+ //#region ../theme-core/src/buttons/styles/recipes/staticRecipes.ts
19689
+ var softPillRecipe, earthPillRecipe, confidentChipRecipe, editorialSizes, editorialLinkRecipe, pebbleRecipe, brushedWashRecipe, inkStampRecipe, flatInkRecipe, showtimePillRecipe, joyStampRecipe, ornateGhostSizes, ornateRitualRecipe;
19690
+ var init_staticRecipes = __esmMin((() => {
19691
+ init_defineStaticButtonStyleRecipe();
19692
+ softPillRecipe = defineStaticButtonStyleRecipe({
19693
+ id: "soft-pill",
19694
+ accessibilityLabel: "Rounded pill buttons with a gentle hover lift",
19470
19695
  tags: {
19471
19696
  tone: "classic",
19472
19697
  energy: "calm",
19473
- motion: "standard",
19474
- era: "modern"
19698
+ motion: "subtle",
19699
+ era: "organic"
19475
19700
  },
19476
- buttonSystem: {
19701
+ system: {
19477
19702
  global: {
19478
- cornerStyle: "rounded",
19479
- shadow: "medium",
19703
+ cornerStyle: "pill",
19704
+ shadow: "low",
19480
19705
  textTransform: "none",
19481
- fontWeight: 600,
19482
- borderWidth: 1,
19483
- hoverTransform: "none",
19706
+ fontWeight: 500,
19707
+ borderWidth: 2,
19708
+ hoverTransform: "lift",
19484
19709
  hoverColor: "none"
19485
19710
  },
19486
- variants: [
19487
- {
19488
- id: "primary",
19489
- name: "Primary",
19490
- enabled: true,
19491
- priority: 1,
19492
- background: {
19493
- type: "solid",
19494
- colorToken: "primary"
19495
- },
19496
- borderRadius: "rounded-md",
19497
- shadow: {
19498
- elevation: "medium",
19499
- softness: "soft",
19500
- position: "bottom"
19501
- },
19502
- effects: {
19503
- hover: [{
19504
- effectId: "darken-background",
19505
- options: { amount: 100 }
19506
- }],
19507
- active: [{
19508
- effectId: "scale-down",
19509
- options: { scale: "0.97" }
19510
- }]
19711
+ roles: {
19712
+ primary: {
19713
+ kind: "complete",
19714
+ appearance: {
19715
+ background: {
19716
+ type: "solid",
19717
+ colorToken: "primary"
19718
+ },
19719
+ borderRadius: "rounded-full",
19720
+ shadow: {
19721
+ elevation: "low",
19722
+ softness: "soft",
19723
+ position: "bottom"
19724
+ },
19725
+ effects: {
19726
+ hover: [{
19727
+ effectId: "lift",
19728
+ options: { translateY: "-1px" }
19729
+ }],
19730
+ active: [{
19731
+ effectId: "scale-down",
19732
+ options: { scale: "0.98" }
19733
+ }]
19734
+ }
19511
19735
  }
19512
19736
  },
19513
- {
19514
- id: "secondary",
19515
- name: "Secondary",
19516
- enabled: true,
19517
- priority: 2,
19518
- background: {
19519
- type: "solid",
19520
- colorToken: "surface"
19521
- },
19522
- borderRadius: "rounded-md",
19523
- border: { widthClass: "border" },
19524
- effects: { hover: [{
19525
- effectId: "background-on-hover",
19526
- options: { colorToken: "background" }
19527
- }] }
19737
+ secondary: {
19738
+ kind: "complete",
19739
+ appearance: {
19740
+ background: {
19741
+ type: "surface",
19742
+ role: "link"
19743
+ },
19744
+ borderRadius: "rounded-full",
19745
+ border: { widthClass: "border-2" },
19746
+ effects: { hover: [{
19747
+ effectId: "background-on-hover",
19748
+ options: { colorToken: "surface" }
19749
+ }] }
19750
+ }
19528
19751
  },
19529
- {
19530
- id: "outline",
19531
- name: "Outline",
19532
- enabled: true,
19533
- priority: 3,
19534
- background: {
19535
- type: "surface",
19536
- role: "link"
19537
- },
19538
- borderRadius: "rounded-md",
19539
- border: { widthClass: "border" },
19540
- effects: { hover: [{
19541
- effectId: "background-on-hover",
19542
- options: { colorToken: "surface" }
19543
- }] }
19752
+ outline: {
19753
+ kind: "complete",
19754
+ appearance: {
19755
+ background: {
19756
+ type: "surface",
19757
+ role: "link"
19758
+ },
19759
+ borderRadius: "rounded-full",
19760
+ border: { widthClass: "border" },
19761
+ effects: { hover: [{
19762
+ effectId: "background-on-hover",
19763
+ options: { colorToken: "surface" }
19764
+ }] }
19765
+ }
19544
19766
  },
19545
- {
19546
- id: "ghost",
19547
- name: "Ghost",
19548
- enabled: true,
19549
- priority: 3,
19550
- background: {
19551
- type: "surface",
19552
- role: "link"
19553
- },
19554
- borderRadius: "rounded-md",
19555
- effects: { hover: [{
19556
- effectId: "background-on-hover",
19557
- options: { colorToken: "surface" }
19558
- }] }
19767
+ ghost: {
19768
+ kind: "complete",
19769
+ appearance: {
19770
+ background: {
19771
+ type: "surface",
19772
+ role: "link"
19773
+ },
19774
+ borderRadius: "rounded-full",
19775
+ effects: { hover: [{
19776
+ effectId: "background-on-hover",
19777
+ options: { colorToken: "surface" }
19778
+ }] }
19779
+ }
19780
+ },
19781
+ accent: {
19782
+ kind: "derive",
19783
+ from: "primary",
19784
+ overrides: { background: {
19785
+ type: "solid",
19786
+ colorToken: "accent"
19787
+ } }
19559
19788
  }
19560
- ]
19789
+ }
19561
19790
  }
19562
19791
  });
19563
- }));
19564
- //#endregion
19565
- //#region ../theme-core/src/buttons/personalities/earth-pill.ts
19566
- var earthPill;
19567
- var init_earth_pill = __esmMin((() => {
19568
- init_types$13();
19569
- earthPill = defineButtonPersonality({
19792
+ earthPillRecipe = defineStaticButtonStyleRecipe({
19570
19793
  id: "earth-pill",
19571
- name: "Earth Pill",
19572
- description: "Compact terracotta pills with quiet primary-coloured ghost CTAs.",
19794
+ accessibilityLabel: "Compact rounded buttons with a quiet hover lift",
19573
19795
  tags: {
19574
19796
  tone: "classic",
19575
19797
  energy: "calm",
19576
19798
  motion: "subtle",
19577
19799
  era: "organic"
19578
19800
  },
19579
- buttonSystem: {
19801
+ system: {
19580
19802
  global: {
19581
19803
  cornerStyle: "pill",
19582
19804
  shadow: "low",
@@ -19603,566 +19825,547 @@ var init_earth_pill = __esmMin((() => {
19603
19825
  fontSize: "text-xl"
19604
19826
  }
19605
19827
  },
19606
- variants: [
19607
- {
19608
- id: "primary",
19609
- name: "Primary",
19610
- enabled: true,
19611
- priority: 1,
19612
- background: {
19613
- type: "solid",
19614
- colorToken: "primary"
19615
- },
19616
- borderRadius: "rounded-full",
19617
- shadow: {
19618
- elevation: "low",
19619
- softness: "soft",
19620
- position: "bottom"
19621
- },
19622
- effects: {
19623
- hover: [{
19624
- effectId: "lift",
19625
- options: { translateY: "-1px" }
19626
- }, {
19627
- effectId: "background-on-hover",
19628
- options: { colorToken: "accent" }
19629
- }],
19630
- active: [{
19631
- effectId: "scale-down",
19632
- options: { scale: "0.98" }
19633
- }]
19828
+ roles: {
19829
+ primary: {
19830
+ kind: "complete",
19831
+ appearance: {
19832
+ background: {
19833
+ type: "solid",
19834
+ colorToken: "primary"
19835
+ },
19836
+ borderRadius: "rounded-full",
19837
+ shadow: {
19838
+ elevation: "low",
19839
+ softness: "soft",
19840
+ position: "bottom"
19841
+ },
19842
+ effects: {
19843
+ hover: [{
19844
+ effectId: "lift",
19845
+ options: { translateY: "-1px" }
19846
+ }, {
19847
+ effectId: "background-on-hover",
19848
+ options: { colorToken: "accent" }
19849
+ }],
19850
+ active: [{
19851
+ effectId: "scale-down",
19852
+ options: { scale: "0.98" }
19853
+ }]
19854
+ }
19634
19855
  }
19635
19856
  },
19636
- {
19637
- id: "secondary",
19638
- name: "Secondary",
19639
- enabled: true,
19640
- priority: 2,
19641
- background: {
19642
- type: "surface",
19643
- role: "link"
19644
- },
19645
- borderRadius: "rounded-full",
19646
- border: { widthClass: "border" },
19647
- effects: { hover: [{
19648
- effectId: "background-on-hover",
19649
- options: { colorToken: "muted" }
19650
- }] }
19857
+ secondary: {
19858
+ kind: "complete",
19859
+ appearance: {
19860
+ background: {
19861
+ type: "surface",
19862
+ role: "link"
19863
+ },
19864
+ borderRadius: "rounded-full",
19865
+ border: { widthClass: "border" },
19866
+ effects: { hover: [{
19867
+ effectId: "background-on-hover",
19868
+ options: { colorToken: "muted" }
19869
+ }] }
19870
+ }
19651
19871
  },
19652
- {
19653
- id: "outline",
19654
- name: "Outline",
19655
- enabled: true,
19656
- priority: 3,
19657
- background: {
19658
- type: "surface",
19659
- role: "link"
19660
- },
19661
- borderRadius: "rounded-full",
19662
- border: { widthClass: "border" },
19663
- effects: { hover: [{
19664
- effectId: "background-on-hover",
19665
- options: { colorToken: "surfaceAlt" }
19666
- }] }
19872
+ outline: {
19873
+ kind: "complete",
19874
+ appearance: {
19875
+ background: {
19876
+ type: "surface",
19877
+ role: "link"
19878
+ },
19879
+ borderRadius: "rounded-full",
19880
+ border: { widthClass: "border" },
19881
+ effects: { hover: [{
19882
+ effectId: "background-on-hover",
19883
+ options: { colorToken: "surfaceAlt" }
19884
+ }] }
19885
+ }
19667
19886
  },
19668
- {
19669
- id: "ghost",
19670
- name: "Ghost",
19671
- enabled: true,
19672
- priority: 3,
19673
- background: {
19674
- type: "surface",
19675
- role: "link"
19676
- },
19677
- borderRadius: "rounded-full",
19678
- shadow: {
19679
- elevation: "none",
19680
- softness: null,
19681
- position: "bottom"
19682
- },
19683
- sizes: {
19684
- sm: {
19685
- padding: "0.25rem 0",
19686
- fontSize: "text-sm"
19887
+ ghost: {
19888
+ kind: "complete",
19889
+ appearance: {
19890
+ background: {
19891
+ type: "surface",
19892
+ role: "link"
19687
19893
  },
19688
- md: { padding: "0.375rem 0" },
19689
- lg: {
19690
- padding: "0.5rem 0",
19691
- fontSize: "text-lg"
19894
+ borderRadius: "rounded-full",
19895
+ shadow: {
19896
+ elevation: "none",
19897
+ softness: null,
19898
+ position: "bottom"
19692
19899
  },
19693
- xl: {
19694
- padding: "0.625rem 0",
19695
- fontSize: "text-xl"
19900
+ sizes: {
19901
+ sm: {
19902
+ padding: "0.25rem 0",
19903
+ fontSize: "text-sm"
19904
+ },
19905
+ md: { padding: "0.375rem 0" },
19906
+ lg: {
19907
+ padding: "0.5rem 0",
19908
+ fontSize: "text-lg"
19909
+ },
19910
+ xl: {
19911
+ padding: "0.625rem 0",
19912
+ fontSize: "text-xl"
19913
+ }
19696
19914
  }
19697
19915
  }
19916
+ },
19917
+ accent: {
19918
+ kind: "derive",
19919
+ from: "primary",
19920
+ overrides: { background: {
19921
+ type: "solid",
19922
+ colorToken: "accent"
19923
+ } }
19698
19924
  }
19699
- ]
19925
+ }
19700
19926
  }
19701
19927
  });
19702
- }));
19703
- //#endregion
19704
- //#region ../theme-core/src/buttons/personalities/editorial-link.ts
19705
- var editorialLink;
19706
- var init_editorial_link = __esmMin((() => {
19707
- init_types$13();
19708
- editorialLink = defineButtonPersonality({
19709
- id: "editorial-link",
19710
- name: "Editorial Link",
19711
- description: "Link-style with a growing underline. Refined, typographic.",
19928
+ confidentChipRecipe = defineStaticButtonStyleRecipe({
19929
+ id: "confident-chip",
19930
+ accessibilityLabel: "Moderately rounded solid buttons with a crisp hover",
19712
19931
  tags: {
19713
- tone: "minimal",
19932
+ tone: "classic",
19714
19933
  energy: "calm",
19715
- motion: "subtle",
19716
- era: "editorial"
19934
+ motion: "standard",
19935
+ era: "modern"
19717
19936
  },
19718
- buttonSystem: {
19937
+ system: {
19719
19938
  global: {
19720
- cornerStyle: "square",
19939
+ cornerStyle: "rounded",
19940
+ shadow: "medium",
19721
19941
  textTransform: "none",
19722
- fontWeight: 500,
19942
+ fontWeight: 600,
19723
19943
  borderWidth: 1,
19724
19944
  hoverTransform: "none",
19725
19945
  hoverColor: "none"
19726
19946
  },
19727
- variants: [
19728
- {
19729
- id: "primary",
19730
- name: "Primary",
19731
- enabled: true,
19732
- priority: 1,
19733
- background: {
19734
- type: "surface",
19735
- role: "link"
19736
- },
19737
- borderRadius: "rounded-none",
19738
- sizes: {
19739
- sm: { padding: "0.25rem 0" },
19740
- md: { padding: "0.5rem 0" },
19741
- lg: { padding: "0.625rem 0" },
19742
- xl: { padding: "0.75rem 0" }
19743
- },
19744
- effects: { base: [{
19745
- effectId: "border-bottom-grow",
19746
- options: {
19747
- height: 2,
19748
- colorToken: "text",
19749
- origin: "left"
19947
+ roles: {
19948
+ primary: {
19949
+ kind: "complete",
19950
+ appearance: {
19951
+ background: {
19952
+ type: "solid",
19953
+ colorToken: "primary"
19954
+ },
19955
+ borderRadius: "rounded-md",
19956
+ shadow: {
19957
+ elevation: "medium",
19958
+ softness: "soft",
19959
+ position: "bottom"
19960
+ },
19961
+ effects: {
19962
+ hover: [{
19963
+ effectId: "darken-background",
19964
+ options: { amount: 100 }
19965
+ }],
19966
+ active: [{
19967
+ effectId: "scale-down",
19968
+ options: { scale: "0.97" }
19969
+ }]
19750
19970
  }
19751
- }] }
19971
+ }
19752
19972
  },
19753
- {
19754
- id: "secondary",
19755
- name: "Secondary",
19756
- enabled: true,
19757
- priority: 2,
19758
- background: {
19759
- type: "surface",
19760
- role: "link"
19761
- },
19762
- borderRadius: "rounded-none",
19763
- sizes: {
19764
- sm: { padding: "0.25rem 0" },
19765
- md: { padding: "0.5rem 0" },
19766
- lg: { padding: "0.625rem 0" },
19767
- xl: { padding: "0.75rem 0" }
19768
- },
19769
- effects: { base: [{
19770
- effectId: "border-bottom-grow",
19771
- options: {
19772
- height: 1,
19773
- colorToken: "mutedText",
19774
- origin: "left"
19775
- }
19776
- }] }
19973
+ secondary: {
19974
+ kind: "complete",
19975
+ appearance: {
19976
+ background: {
19977
+ type: "solid",
19978
+ colorToken: "surface"
19979
+ },
19980
+ borderRadius: "rounded-md",
19981
+ border: { widthClass: "border" },
19982
+ effects: { hover: [{
19983
+ effectId: "background-on-hover",
19984
+ options: { colorToken: "background" }
19985
+ }] }
19986
+ }
19777
19987
  },
19778
- {
19779
- id: "outline",
19780
- name: "Outline",
19781
- enabled: true,
19782
- priority: 3,
19783
- background: {
19784
- type: "surface",
19785
- role: "link"
19786
- },
19787
- borderRadius: "rounded-none",
19788
- sizes: {
19789
- sm: { padding: "0.25rem 0" },
19790
- md: { padding: "0.5rem 0" },
19791
- lg: { padding: "0.625rem 0" },
19792
- xl: { padding: "0.75rem 0" }
19793
- },
19794
- effects: { base: [{
19795
- effectId: "border-bottom-grow",
19796
- options: {
19797
- height: 1,
19798
- colorToken: "accent",
19799
- origin: "left"
19800
- }
19801
- }] }
19988
+ outline: {
19989
+ kind: "complete",
19990
+ appearance: {
19991
+ background: {
19992
+ type: "surface",
19993
+ role: "link"
19994
+ },
19995
+ borderRadius: "rounded-md",
19996
+ border: { widthClass: "border" },
19997
+ effects: { hover: [{
19998
+ effectId: "background-on-hover",
19999
+ options: { colorToken: "surface" }
20000
+ }] }
20001
+ }
19802
20002
  },
19803
- {
19804
- id: "ghost",
19805
- name: "Ghost",
19806
- enabled: true,
19807
- priority: 3,
19808
- background: {
19809
- type: "surface",
19810
- role: "link"
19811
- },
19812
- borderRadius: "rounded-none",
19813
- sizes: {
19814
- sm: { padding: "0.25rem 0" },
19815
- md: { padding: "0.5rem 0" },
19816
- lg: { padding: "0.625rem 0" },
19817
- xl: { padding: "0.75rem 0" }
20003
+ ghost: {
20004
+ kind: "complete",
20005
+ appearance: {
20006
+ background: {
20007
+ type: "surface",
20008
+ role: "link"
20009
+ },
20010
+ borderRadius: "rounded-md",
20011
+ effects: { hover: [{
20012
+ effectId: "background-on-hover",
20013
+ options: { colorToken: "surface" }
20014
+ }] }
19818
20015
  }
20016
+ },
20017
+ accent: {
20018
+ kind: "derive",
20019
+ from: "primary",
20020
+ overrides: { background: {
20021
+ type: "solid",
20022
+ colorToken: "accent"
20023
+ } }
19819
20024
  }
19820
- ]
20025
+ }
19821
20026
  }
19822
20027
  });
19823
- }));
19824
- //#endregion
19825
- //#region ../theme-core/src/buttons/personalities/flat-ink.ts
19826
- var flatInk;
19827
- var init_flat_ink = __esmMin((() => {
19828
- init_types$13();
19829
- flatInk = defineButtonPersonality({
19830
- id: "flat-ink",
19831
- name: "Flat Ink",
19832
- description: "Flat solid-ink primary, hairline ghost secondary, and a single amber accent climax — modest radius, no shadow.",
20028
+ editorialSizes = {
20029
+ sm: { padding: "0.25rem 0" },
20030
+ md: { padding: "0.5rem 0" },
20031
+ lg: { padding: "0.625rem 0" },
20032
+ xl: { padding: "0.75rem 0" }
20033
+ };
20034
+ editorialLinkRecipe = defineStaticButtonStyleRecipe({
20035
+ id: "editorial-link",
20036
+ accessibilityLabel: "Flat typographic buttons with an underline treatment",
19833
20037
  tags: {
19834
- tone: "classic",
20038
+ tone: "minimal",
19835
20039
  energy: "calm",
19836
20040
  motion: "subtle",
19837
20041
  era: "editorial"
19838
20042
  },
19839
- buttonSystem: {
20043
+ system: {
19840
20044
  global: {
19841
- cornerStyle: "rounded",
20045
+ cornerStyle: "square",
19842
20046
  textTransform: "none",
19843
- fontWeight: 600,
20047
+ fontWeight: 500,
19844
20048
  borderWidth: 1,
19845
- typography: "body",
19846
- letterSpacing: "tight",
19847
- paddingPreset: "default",
19848
- hoverTransform: "lift",
20049
+ hoverTransform: "none",
19849
20050
  hoverColor: "none"
19850
20051
  },
19851
- sizes: {
19852
- sm: {
19853
- padding: "0.625rem 1.125rem",
19854
- fontSize: "text-sm"
20052
+ roles: {
20053
+ primary: {
20054
+ kind: "complete",
20055
+ appearance: {
20056
+ background: {
20057
+ type: "surface",
20058
+ role: "link"
20059
+ },
20060
+ borderRadius: "rounded-none",
20061
+ sizes: editorialSizes,
20062
+ effects: { base: [{
20063
+ effectId: "border-bottom-grow",
20064
+ options: {
20065
+ height: 2,
20066
+ colorToken: "text",
20067
+ origin: "left"
20068
+ }
20069
+ }] }
20070
+ }
19855
20071
  },
19856
- md: { padding: "0.8125rem 1.375rem" },
19857
- lg: {
19858
- padding: "0.9375rem 1.625rem",
19859
- fontSize: "text-lg"
20072
+ secondary: {
20073
+ kind: "complete",
20074
+ appearance: {
20075
+ background: {
20076
+ type: "surface",
20077
+ role: "link"
20078
+ },
20079
+ borderRadius: "rounded-none",
20080
+ sizes: editorialSizes,
20081
+ effects: { base: [{
20082
+ effectId: "border-bottom-grow",
20083
+ options: {
20084
+ height: 1,
20085
+ colorToken: "mutedText",
20086
+ origin: "left"
20087
+ }
20088
+ }] }
20089
+ }
19860
20090
  },
19861
- xl: {
19862
- padding: "1.0625rem 2rem",
19863
- fontSize: "text-xl"
19864
- }
19865
- },
19866
- variants: [
19867
- {
19868
- id: "primary",
19869
- name: "Primary",
19870
- enabled: true,
19871
- priority: 1,
19872
- background: {
19873
- type: "solid",
19874
- colorToken: "primary"
19875
- },
19876
- borderRadius: "rounded-lg",
19877
- affordance: { iconId: "ArrowRight" },
19878
- effects: { hover: [{
19879
- effectId: "lift",
19880
- options: { translateY: "-2px" }
19881
- }, {
19882
- effectId: "background-on-hover",
19883
- options: { colorToken: "secondary" }
19884
- }] }
20091
+ outline: {
20092
+ kind: "complete",
20093
+ appearance: {
20094
+ background: {
20095
+ type: "surface",
20096
+ role: "link"
20097
+ },
20098
+ borderRadius: "rounded-none",
20099
+ sizes: editorialSizes,
20100
+ effects: { base: [{
20101
+ effectId: "border-bottom-grow",
20102
+ options: {
20103
+ height: 1,
20104
+ colorToken: "accent",
20105
+ origin: "left"
20106
+ }
20107
+ }] }
20108
+ }
19885
20109
  },
19886
- {
19887
- id: "secondary",
19888
- name: "Secondary",
19889
- enabled: true,
19890
- priority: 2,
19891
- background: {
19892
- type: "surface",
19893
- role: "link"
19894
- },
19895
- borderRadius: "rounded-lg",
19896
- border: { widthClass: "border" },
19897
- effects: { hover: [{
19898
- effectId: "lift",
19899
- options: { translateY: "-2px" }
19900
- }, {
19901
- effectId: "background-on-hover",
19902
- options: { colorToken: "surfaceAlt" }
19903
- }] }
20110
+ ghost: {
20111
+ kind: "complete",
20112
+ appearance: {
20113
+ background: {
20114
+ type: "surface",
20115
+ role: "link"
20116
+ },
20117
+ borderRadius: "rounded-none",
20118
+ sizes: editorialSizes
20119
+ }
19904
20120
  },
19905
- {
19906
- id: "accent",
19907
- name: "Accent",
19908
- enabled: true,
19909
- priority: 3,
19910
- background: {
19911
- type: "solid",
19912
- colorToken: "accent"
19913
- },
19914
- borderRadius: "rounded-lg",
19915
- affordance: { iconId: "ArrowRight" },
19916
- effects: { hover: [{
19917
- effectId: "lift",
19918
- options: { translateY: "-2px" }
19919
- }] }
20121
+ accent: {
20122
+ kind: "derive",
20123
+ from: "primary",
20124
+ overrides: { effects: { base: [{
20125
+ effectId: "border-bottom-grow",
20126
+ options: {
20127
+ height: 2,
20128
+ colorToken: "accent",
20129
+ origin: "left"
20130
+ }
20131
+ }] } }
19920
20132
  }
19921
- ]
20133
+ }
19922
20134
  }
19923
20135
  });
19924
- }));
19925
- //#endregion
19926
- //#region ../theme-core/src/buttons/personalities/ink-stamp.ts
19927
- var inkStamp;
19928
- var init_ink_stamp = __esmMin((() => {
19929
- init_types$13();
19930
- inkStamp = defineButtonPersonality({
19931
- id: "ink-stamp",
19932
- name: "Ink Stamp",
19933
- description: "Hand-stamped block-print buttons with a slight lift on hover.",
20136
+ pebbleRecipe = defineStaticButtonStyleRecipe({
20137
+ id: "pebble",
20138
+ accessibilityLabel: "Generously padded pill buttons",
19934
20139
  tags: {
19935
- tone: "bold",
19936
- energy: "vibrant",
20140
+ tone: "classic",
20141
+ energy: "calm",
19937
20142
  motion: "standard",
19938
20143
  era: "organic"
19939
20144
  },
19940
- buttonSystem: {
20145
+ system: {
19941
20146
  global: {
19942
- cornerStyle: "rounded",
19943
- textTransform: "uppercase",
19944
- fontWeight: 600,
19945
- borderWidth: 1,
20147
+ cornerStyle: "pill",
20148
+ textTransform: "none",
20149
+ fontWeight: 500,
20150
+ borderWidth: 2,
19946
20151
  hoverTransform: "none",
19947
- hoverColor: "none",
19948
- letterSpacing: "loose"
20152
+ hoverColor: "none"
19949
20153
  },
19950
20154
  sizes: {
19951
20155
  sm: {
19952
- padding: "0.5rem 1.25rem",
19953
- fontSize: "text-xs"
19954
- },
19955
- md: {
19956
- padding: "0.75rem 1.75rem",
20156
+ padding: "0.625rem 1.75rem",
19957
20157
  fontSize: "text-sm"
19958
20158
  },
20159
+ md: { padding: "0.875rem 2.25rem" },
19959
20160
  lg: {
19960
- padding: "0.875rem 2.25rem",
19961
- fontSize: "text-base"
19962
- },
19963
- xl: {
19964
20161
  padding: "1.125rem 2.75rem",
19965
20162
  fontSize: "text-lg"
20163
+ },
20164
+ xl: {
20165
+ padding: "1.5rem 3.5rem",
20166
+ fontSize: "text-xl"
19966
20167
  }
19967
20168
  },
19968
- variants: [
19969
- {
19970
- id: "primary",
19971
- name: "Primary",
19972
- enabled: true,
19973
- priority: 1,
19974
- background: {
19975
- type: "solid",
19976
- colorToken: "primary"
19977
- },
19978
- borderRadius: "rounded-md",
19979
- effects: {
19980
- hover: [{
19981
- effectId: "drop-shadow",
19982
- options: { intensity: "medium" }
19983
- }, {
19984
- effectId: "scale-up",
19985
- options: { scale: "1.02" }
19986
- }],
19987
- active: [{
19988
- effectId: "scale-down",
19989
- options: { scale: "0.98" }
19990
- }]
20169
+ roles: {
20170
+ primary: {
20171
+ kind: "complete",
20172
+ appearance: {
20173
+ background: {
20174
+ type: "solid",
20175
+ colorToken: "primary"
20176
+ },
20177
+ borderRadius: "rounded-full",
20178
+ effects: { hover: [{
20179
+ effectId: "darken-background",
20180
+ options: { amount: 100 }
20181
+ }] }
19991
20182
  }
19992
20183
  },
19993
- {
19994
- id: "secondary",
19995
- name: "Secondary",
19996
- enabled: true,
19997
- priority: 2,
19998
- background: {
19999
- type: "surface",
20000
- role: "link"
20001
- },
20002
- borderRadius: "rounded-md",
20003
- border: { widthClass: "border-2" },
20004
- effects: { hover: [{
20005
- effectId: "background-on-hover",
20006
- options: { colorToken: "surface" }
20007
- }] }
20008
- },
20009
- {
20010
- id: "outline",
20011
- name: "Outline",
20012
- enabled: true,
20013
- priority: 3,
20014
- background: {
20015
- type: "surface",
20016
- role: "link"
20017
- },
20018
- borderRadius: "rounded-md",
20019
- border: { widthClass: "border-2" },
20020
- effects: { hover: [{
20021
- effectId: "background-on-hover",
20022
- options: { colorToken: "surface" }
20023
- }] }
20024
- },
20025
- {
20026
- id: "ghost",
20027
- name: "Ghost",
20028
- enabled: true,
20029
- priority: 3,
20030
- background: {
20031
- type: "surface",
20032
- role: "link"
20033
- },
20034
- borderRadius: "rounded-none",
20035
- sizes: {
20036
- sm: {
20037
- padding: "0.375rem 0",
20038
- fontSize: "text-xs"
20184
+ secondary: {
20185
+ kind: "complete",
20186
+ appearance: {
20187
+ background: {
20188
+ type: "surface",
20189
+ role: "link"
20039
20190
  },
20040
- md: {
20041
- padding: "0.5rem 0",
20042
- fontSize: "text-sm"
20191
+ borderRadius: "rounded-full",
20192
+ border: { widthClass: "border-2" },
20193
+ effects: { hover: [{
20194
+ effectId: "background-on-hover",
20195
+ options: { colorToken: "accent" }
20196
+ }] }
20197
+ }
20198
+ },
20199
+ outline: {
20200
+ kind: "complete",
20201
+ appearance: {
20202
+ background: {
20203
+ type: "surface",
20204
+ role: "link"
20043
20205
  },
20044
- lg: {
20045
- padding: "0.625rem 0",
20046
- fontSize: "text-base"
20206
+ borderRadius: "rounded-full",
20207
+ border: { widthClass: "border" },
20208
+ effects: { hover: [{
20209
+ effectId: "background-on-hover",
20210
+ options: { colorToken: "surface" }
20211
+ }] }
20212
+ }
20213
+ },
20214
+ ghost: {
20215
+ kind: "complete",
20216
+ appearance: {
20217
+ background: {
20218
+ type: "surface",
20219
+ role: "link"
20047
20220
  },
20048
- xl: {
20049
- padding: "0.75rem 0",
20050
- fontSize: "text-lg"
20051
- }
20052
- },
20053
- effects: { base: [{
20054
- effectId: "border-bottom-grow",
20055
- options: {
20056
- height: 1,
20057
- colorToken: "accent",
20058
- origin: "left"
20221
+ borderRadius: "rounded-full",
20222
+ sizes: {
20223
+ sm: {
20224
+ padding: "0.375rem 0.875rem",
20225
+ fontSize: "text-sm"
20226
+ },
20227
+ md: { padding: "0.5rem 1rem" },
20228
+ lg: {
20229
+ padding: "0.625rem 1.25rem",
20230
+ fontSize: "text-lg"
20231
+ },
20232
+ xl: {
20233
+ padding: "0.75rem 1.5rem",
20234
+ fontSize: "text-xl"
20235
+ }
20059
20236
  }
20060
- }] }
20237
+ }
20238
+ },
20239
+ accent: {
20240
+ kind: "derive",
20241
+ from: "primary",
20242
+ overrides: { background: {
20243
+ type: "solid",
20244
+ colorToken: "accent"
20245
+ } }
20061
20246
  }
20062
- ]
20247
+ }
20063
20248
  }
20064
20249
  });
20065
- }));
20066
- //#endregion
20067
- //#region ../theme-core/src/buttons/personalities/joy-stamp.ts
20068
- var joyStamp;
20069
- var init_joy_stamp = __esmMin((() => {
20070
- init_types$13();
20071
- joyStamp = defineButtonPersonality({
20072
- id: "joy-stamp",
20073
- name: "Joy Stamp",
20074
- description: "Pill buttons with a hard, brand-coloured offset shadow that presses in on hover.",
20250
+ brushedWashRecipe = defineStaticButtonStyleRecipe({
20251
+ id: "brushed-wash",
20252
+ accessibilityLabel: "Generously padded gradient buttons with soft shadows",
20075
20253
  tags: {
20076
- tone: "bold",
20254
+ tone: "classic",
20077
20255
  energy: "vibrant",
20078
- motion: "expressive",
20256
+ motion: "standard",
20079
20257
  era: "organic"
20080
20258
  },
20081
- buttonSystem: {
20259
+ system: {
20082
20260
  global: {
20083
- cornerStyle: "pill",
20084
- shadow: "high",
20261
+ cornerStyle: "rounded",
20262
+ shadow: "low",
20085
20263
  textTransform: "none",
20086
- typography: "heading",
20087
- fontWeight: 700,
20088
- fontSize: "text-lg",
20089
- borderWidth: 2,
20264
+ fontWeight: 500,
20265
+ borderWidth: 1,
20090
20266
  hoverTransform: "none",
20091
20267
  hoverColor: "none"
20092
20268
  },
20093
20269
  sizes: {
20094
20270
  sm: {
20095
- padding: "0.625rem 1.25rem",
20096
- fontSize: "text-base"
20097
- },
20098
- md: {
20099
- padding: "0.875rem 1.75rem",
20100
- fontSize: "text-lg"
20271
+ padding: "0.75rem 2rem",
20272
+ fontSize: "text-sm"
20101
20273
  },
20274
+ md: { padding: "1rem 2.5rem" },
20102
20275
  lg: {
20103
- padding: "1.125rem 2.25rem",
20104
- fontSize: "text-xl"
20276
+ padding: "1.25rem 3rem",
20277
+ fontSize: "text-lg"
20105
20278
  },
20106
20279
  xl: {
20107
- padding: "1.25rem 2.75rem",
20108
- fontSize: "text-2xl"
20280
+ padding: "1.625rem 3.75rem",
20281
+ fontSize: "text-xl"
20109
20282
  }
20110
20283
  },
20111
- variants: [{
20112
- id: "primary",
20113
- name: "Primary",
20114
- enabled: true,
20115
- priority: 1,
20116
- background: {
20117
- type: "solid",
20118
- colorToken: "primary"
20284
+ roles: {
20285
+ primary: {
20286
+ kind: "complete",
20287
+ appearance: {
20288
+ background: {
20289
+ type: "gradient",
20290
+ stops: ["primary", "accent"],
20291
+ direction: "to-r",
20292
+ foregroundToken: "primaryForeground"
20293
+ },
20294
+ borderRadius: "rounded-lg",
20295
+ shadow: {
20296
+ elevation: "low",
20297
+ softness: "soft",
20298
+ position: "bottom"
20299
+ }
20300
+ }
20119
20301
  },
20120
- borderRadius: "rounded-full",
20121
- shadow: {
20122
- elevation: "high",
20123
- softness: "hard",
20124
- position: "bottom-right",
20125
- colorToken: "text"
20302
+ secondary: {
20303
+ kind: "complete",
20304
+ appearance: {
20305
+ background: {
20306
+ type: "gradient",
20307
+ stops: ["secondary", "accent"],
20308
+ direction: "to-br",
20309
+ foregroundToken: "primaryForeground"
20310
+ },
20311
+ borderRadius: "rounded-lg",
20312
+ shadow: {
20313
+ elevation: "low",
20314
+ softness: "soft",
20315
+ position: "bottom"
20316
+ }
20317
+ }
20126
20318
  },
20127
- effects: { hover: [{ effectId: "press-down" }] }
20128
- }, {
20129
- id: "secondary",
20130
- name: "Secondary",
20131
- enabled: true,
20132
- priority: 2,
20133
- background: {
20134
- type: "surface",
20135
- role: "link"
20319
+ outline: {
20320
+ kind: "complete",
20321
+ appearance: {
20322
+ background: {
20323
+ type: "surface",
20324
+ role: "link"
20325
+ },
20326
+ borderRadius: "rounded-lg",
20327
+ border: { widthClass: "border" },
20328
+ effects: { hover: [{
20329
+ effectId: "background-on-hover",
20330
+ options: { colorToken: "surface" }
20331
+ }] }
20332
+ }
20136
20333
  },
20137
- borderRadius: "rounded-full",
20138
- border: { widthClass: "border-2" },
20139
- shadow: {
20140
- elevation: "high",
20141
- softness: "hard",
20142
- position: "bottom-right",
20143
- colorToken: "secondary"
20334
+ ghost: {
20335
+ kind: "complete",
20336
+ appearance: {
20337
+ background: {
20338
+ type: "surface",
20339
+ role: "link"
20340
+ },
20341
+ borderRadius: "rounded-lg",
20342
+ effects: { hover: [{
20343
+ effectId: "background-on-hover",
20344
+ options: { colorToken: "surface" }
20345
+ }] }
20346
+ }
20144
20347
  },
20145
- effects: { hover: [{ effectId: "press-down" }] }
20146
- }]
20348
+ accent: {
20349
+ kind: "derive",
20350
+ from: "primary",
20351
+ overrides: { background: {
20352
+ type: "solid",
20353
+ colorToken: "accent"
20354
+ } }
20355
+ }
20356
+ }
20147
20357
  }
20148
20358
  });
20149
- }));
20150
- //#endregion
20151
- //#region ../theme-core/src/buttons/personalities/ornate-ritual.ts
20152
- var ornateRitual;
20153
- var init_ornate_ritual = __esmMin((() => {
20154
- init_types$13();
20155
- ornateRitual = defineButtonPersonality({
20156
- id: "ornate-ritual",
20157
- name: "Ornate Ritual",
20158
- description: "Ceremonial framed buttons with jewel-toned fills and quiet color-change hover states.",
20359
+ inkStampRecipe = defineStaticButtonStyleRecipe({
20360
+ id: "ink-stamp",
20361
+ accessibilityLabel: "Uppercase block-print buttons with a playful hover",
20159
20362
  tags: {
20160
- tone: "classic",
20363
+ tone: "bold",
20161
20364
  energy: "vibrant",
20162
- motion: "subtle",
20365
+ motion: "standard",
20163
20366
  era: "organic"
20164
20367
  },
20165
- buttonSystem: {
20368
+ system: {
20166
20369
  global: {
20167
20370
  cornerStyle: "rounded",
20168
20371
  textTransform: "uppercase",
@@ -20174,357 +20377,256 @@ var init_ornate_ritual = __esmMin((() => {
20174
20377
  },
20175
20378
  sizes: {
20176
20379
  sm: {
20177
- padding: "0.5625rem 1.25rem",
20380
+ padding: "0.5rem 1.25rem",
20178
20381
  fontSize: "text-xs"
20179
20382
  },
20180
20383
  md: {
20181
20384
  padding: "0.75rem 1.75rem",
20182
- fontSize: "text-xs"
20385
+ fontSize: "text-sm"
20183
20386
  },
20184
20387
  lg: {
20185
20388
  padding: "0.875rem 2.25rem",
20186
- fontSize: "text-sm"
20187
- },
20188
- xl: {
20189
- padding: "1rem 2.75rem",
20190
20389
  fontSize: "text-base"
20191
- }
20192
- },
20193
- variants: [
20194
- {
20195
- id: "primary",
20196
- name: "Primary",
20197
- enabled: true,
20198
- priority: 1,
20199
- background: {
20200
- type: "solid",
20201
- colorToken: "primary"
20202
- },
20203
- borderRadius: "rounded-md",
20204
- border: { widthClass: "border" },
20205
- effects: {
20206
- hover: [{
20207
- effectId: "background-on-hover",
20208
- options: { colorToken: "primary-100" }
20209
- }],
20210
- active: [{
20211
- effectId: "scale-down",
20212
- options: { scale: "0.98" }
20213
- }]
20214
- }
20215
- },
20216
- {
20217
- id: "secondary",
20218
- name: "Secondary",
20219
- enabled: true,
20220
- priority: 2,
20221
- background: {
20222
- type: "solid",
20223
- colorToken: "secondary"
20224
- },
20225
- borderRadius: "rounded-md",
20226
- border: { widthClass: "border" },
20227
- effects: { hover: [{
20228
- effectId: "background-on-hover",
20229
- options: { colorToken: "surface" }
20230
- }] }
20231
- },
20232
- {
20233
- id: "outline",
20234
- name: "Outline",
20235
- enabled: true,
20236
- priority: 3,
20237
- background: {
20238
- type: "surface",
20239
- role: "link"
20240
- },
20241
- borderRadius: "rounded-md",
20242
- border: { widthClass: "border" },
20243
- effects: { hover: [{
20244
- effectId: "background-on-hover",
20245
- options: { colorToken: "muted" }
20246
- }] }
20247
- },
20248
- {
20249
- id: "ghost",
20250
- name: "Ghost",
20251
- enabled: true,
20252
- priority: 3,
20253
- background: {
20254
- type: "surface",
20255
- role: "link"
20256
- },
20257
- borderRadius: "rounded-none",
20258
- sizes: {
20259
- sm: {
20260
- padding: "0.375rem 0",
20261
- fontSize: "text-xs"
20262
- },
20263
- md: {
20264
- padding: "0.5rem 0",
20265
- fontSize: "text-sm"
20266
- },
20267
- lg: {
20268
- padding: "0.625rem 0",
20269
- fontSize: "text-base"
20270
- },
20271
- xl: {
20272
- padding: "0.75rem 0",
20273
- fontSize: "text-lg"
20274
- }
20275
- },
20276
- effects: { base: [{
20277
- effectId: "border-bottom-grow",
20278
- options: {
20279
- height: 1,
20280
- colorToken: "accent",
20281
- origin: "left"
20282
- }
20283
- }] }
20284
- }
20285
- ]
20286
- }
20287
- });
20288
- }));
20289
- //#endregion
20290
- //#region ../theme-core/src/buttons/personalities/pebble.ts
20291
- var pebble;
20292
- var init_pebble = __esmMin((() => {
20293
- init_types$13();
20294
- pebble = defineButtonPersonality({
20295
- id: "pebble",
20296
- name: "Pebble",
20297
- description: "Generous pill buttons with a quiet colour-softening hover.",
20298
- tags: {
20299
- tone: "classic",
20300
- energy: "calm",
20301
- motion: "standard",
20302
- era: "organic"
20303
- },
20304
- buttonSystem: {
20305
- global: {
20306
- cornerStyle: "pill",
20307
- textTransform: "none",
20308
- fontWeight: 500,
20309
- borderWidth: 2,
20310
- hoverTransform: "none",
20311
- hoverColor: "none"
20312
- },
20313
- sizes: {
20314
- sm: {
20315
- padding: "0.625rem 1.75rem",
20316
- fontSize: "text-sm"
20317
20390
  },
20318
- md: { padding: "0.875rem 2.25rem" },
20319
- lg: {
20391
+ xl: {
20320
20392
  padding: "1.125rem 2.75rem",
20321
20393
  fontSize: "text-lg"
20322
- },
20323
- xl: {
20324
- padding: "1.5rem 3.5rem",
20325
- fontSize: "text-xl"
20326
20394
  }
20327
20395
  },
20328
- variants: [
20329
- {
20330
- id: "primary",
20331
- name: "Primary",
20332
- enabled: true,
20333
- priority: 1,
20334
- background: {
20335
- type: "solid",
20336
- colorToken: "primary"
20337
- },
20338
- borderRadius: "rounded-full",
20339
- effects: { hover: [{
20340
- effectId: "darken-background",
20341
- options: { amount: 100 }
20342
- }] }
20396
+ roles: {
20397
+ primary: {
20398
+ kind: "complete",
20399
+ appearance: {
20400
+ background: {
20401
+ type: "solid",
20402
+ colorToken: "primary"
20403
+ },
20404
+ borderRadius: "rounded-md",
20405
+ effects: {
20406
+ hover: [{
20407
+ effectId: "drop-shadow",
20408
+ options: { intensity: "medium" }
20409
+ }, {
20410
+ effectId: "scale-up",
20411
+ options: { scale: "1.02" }
20412
+ }],
20413
+ active: [{
20414
+ effectId: "scale-down",
20415
+ options: { scale: "0.98" }
20416
+ }]
20417
+ }
20418
+ }
20343
20419
  },
20344
- {
20345
- id: "secondary",
20346
- name: "Secondary",
20347
- enabled: true,
20348
- priority: 2,
20349
- background: {
20350
- type: "surface",
20351
- role: "link"
20352
- },
20353
- borderRadius: "rounded-full",
20354
- border: { widthClass: "border-2" },
20355
- effects: { hover: [{
20356
- effectId: "background-on-hover",
20357
- options: { colorToken: "accent" }
20358
- }] }
20420
+ secondary: {
20421
+ kind: "complete",
20422
+ appearance: {
20423
+ background: {
20424
+ type: "surface",
20425
+ role: "link"
20426
+ },
20427
+ borderRadius: "rounded-md",
20428
+ border: { widthClass: "border-2" },
20429
+ effects: { hover: [{
20430
+ effectId: "background-on-hover",
20431
+ options: { colorToken: "surface" }
20432
+ }] }
20433
+ }
20359
20434
  },
20360
- {
20361
- id: "outline",
20362
- name: "Outline",
20363
- enabled: true,
20364
- priority: 3,
20365
- background: {
20366
- type: "surface",
20367
- role: "link"
20368
- },
20369
- borderRadius: "rounded-full",
20370
- border: { widthClass: "border" },
20371
- effects: { hover: [{
20372
- effectId: "background-on-hover",
20373
- options: { colorToken: "surface" }
20374
- }] }
20435
+ outline: {
20436
+ kind: "complete",
20437
+ appearance: {
20438
+ background: {
20439
+ type: "surface",
20440
+ role: "link"
20441
+ },
20442
+ borderRadius: "rounded-md",
20443
+ border: { widthClass: "border-2" },
20444
+ effects: { hover: [{
20445
+ effectId: "background-on-hover",
20446
+ options: { colorToken: "surface" }
20447
+ }] }
20448
+ }
20375
20449
  },
20376
- {
20377
- id: "ghost",
20378
- name: "Ghost",
20379
- enabled: true,
20380
- priority: 3,
20381
- background: {
20382
- type: "surface",
20383
- role: "link"
20384
- },
20385
- borderRadius: "rounded-full",
20386
- sizes: {
20387
- sm: {
20388
- padding: "0.375rem 0.875rem",
20389
- fontSize: "text-sm"
20450
+ ghost: {
20451
+ kind: "complete",
20452
+ appearance: {
20453
+ background: {
20454
+ type: "surface",
20455
+ role: "link"
20390
20456
  },
20391
- md: { padding: "0.5rem 1rem" },
20392
- lg: {
20393
- padding: "0.625rem 1.25rem",
20394
- fontSize: "text-lg"
20457
+ borderRadius: "rounded-none",
20458
+ sizes: {
20459
+ sm: {
20460
+ padding: "0.375rem 0",
20461
+ fontSize: "text-xs"
20462
+ },
20463
+ md: {
20464
+ padding: "0.5rem 0",
20465
+ fontSize: "text-sm"
20466
+ },
20467
+ lg: {
20468
+ padding: "0.625rem 0",
20469
+ fontSize: "text-base"
20470
+ },
20471
+ xl: {
20472
+ padding: "0.75rem 0",
20473
+ fontSize: "text-lg"
20474
+ }
20395
20475
  },
20396
- xl: {
20397
- padding: "0.75rem 1.5rem",
20398
- fontSize: "text-xl"
20399
- }
20476
+ effects: { base: [{
20477
+ effectId: "border-bottom-grow",
20478
+ options: {
20479
+ height: 1,
20480
+ colorToken: "accent",
20481
+ origin: "left"
20482
+ }
20483
+ }] }
20400
20484
  }
20485
+ },
20486
+ accent: {
20487
+ kind: "derive",
20488
+ from: "primary",
20489
+ overrides: { background: {
20490
+ type: "solid",
20491
+ colorToken: "accent"
20492
+ } }
20401
20493
  }
20402
- ]
20494
+ }
20403
20495
  }
20404
20496
  });
20405
- }));
20406
- //#endregion
20407
- //#region ../theme-core/src/buttons/personalities/quiet-arrow.ts
20408
- var quietArrow;
20409
- var init_quiet_arrow = __esmMin((() => {
20410
- init_types$13();
20411
- quietArrow = defineButtonPersonality({
20412
- id: "quiet-arrow",
20413
- name: "Quiet Arrow",
20414
- description: "Wide, flat arrow buttons with a solid primary and a primary-colour outlined secondary.",
20497
+ flatInkRecipe = defineStaticButtonStyleRecipe({
20498
+ id: "flat-ink",
20499
+ accessibilityLabel: "Flat rounded buttons with arrow affordances",
20415
20500
  tags: {
20416
20501
  tone: "classic",
20417
20502
  energy: "calm",
20418
20503
  motion: "subtle",
20419
20504
  era: "editorial"
20420
20505
  },
20421
- buttonSystem: {
20506
+ system: {
20422
20507
  global: {
20423
20508
  cornerStyle: "rounded",
20424
- textTransform: "uppercase",
20425
- fontWeight: 500,
20509
+ textTransform: "none",
20510
+ fontWeight: 600,
20426
20511
  borderWidth: 1,
20427
20512
  typography: "body",
20428
- fontSize: "text-sm",
20429
- letterSpacing: "loose",
20430
- hoverTransform: "none",
20513
+ letterSpacing: "tight",
20514
+ paddingPreset: "default",
20515
+ hoverTransform: "lift",
20431
20516
  hoverColor: "none"
20432
20517
  },
20433
20518
  sizes: {
20434
20519
  sm: {
20435
- padding: "0.625rem 1.25rem",
20436
- fontSize: "text-xs"
20437
- },
20438
- md: {
20439
- padding: "0.8125rem 1.75rem",
20520
+ padding: "0.625rem 1.125rem",
20440
20521
  fontSize: "text-sm"
20441
20522
  },
20523
+ md: { padding: "0.8125rem 1.375rem" },
20442
20524
  lg: {
20443
- padding: "0.9375rem 2.125rem",
20444
- fontSize: "text-sm"
20525
+ padding: "0.9375rem 1.625rem",
20526
+ fontSize: "text-lg"
20445
20527
  },
20446
20528
  xl: {
20447
- padding: "1.0625rem 2.5rem",
20448
- fontSize: "text-base"
20529
+ padding: "1.0625rem 2rem",
20530
+ fontSize: "text-xl"
20449
20531
  }
20450
20532
  },
20451
- variants: [
20452
- {
20453
- id: "primary",
20454
- name: "Primary",
20455
- enabled: true,
20456
- priority: 1,
20457
- background: {
20458
- type: "solid",
20459
- colorToken: "primary"
20460
- },
20461
- borderRadius: "rounded-xl",
20462
- affordance: { iconId: "ArrowRight" },
20463
- effects: { hover: [{
20464
- effectId: "darken-background",
20465
- options: { amount: 100 }
20466
- }] }
20533
+ roles: {
20534
+ primary: {
20535
+ kind: "complete",
20536
+ appearance: {
20537
+ background: {
20538
+ type: "solid",
20539
+ colorToken: "primary"
20540
+ },
20541
+ borderRadius: "rounded-lg",
20542
+ affordance: { iconId: "ArrowRight" },
20543
+ effects: { hover: [{
20544
+ effectId: "lift",
20545
+ options: { translateY: "-2px" }
20546
+ }, {
20547
+ effectId: "background-on-hover",
20548
+ options: { colorToken: "secondary" }
20549
+ }] }
20550
+ }
20467
20551
  },
20468
- {
20469
- id: "secondary",
20470
- name: "Secondary",
20471
- enabled: true,
20472
- priority: 2,
20473
- background: {
20474
- type: "surface",
20475
- role: "link"
20476
- },
20477
- borderRadius: "rounded-xl",
20478
- border: { widthClass: "border" },
20479
- affordance: { iconId: "ArrowRight" },
20480
- effects: { hover: [{
20481
- effectId: "background-on-hover",
20482
- options: { colorToken: "surfaceAlt" }
20483
- }] }
20552
+ secondary: {
20553
+ kind: "complete",
20554
+ appearance: {
20555
+ background: {
20556
+ type: "surface",
20557
+ role: "link"
20558
+ },
20559
+ borderRadius: "rounded-lg",
20560
+ border: { widthClass: "border" },
20561
+ effects: { hover: [{
20562
+ effectId: "lift",
20563
+ options: { translateY: "-2px" }
20564
+ }, {
20565
+ effectId: "background-on-hover",
20566
+ options: { colorToken: "surfaceAlt" }
20567
+ }] }
20568
+ }
20484
20569
  },
20485
- {
20486
- id: "outline",
20487
- name: "Outline",
20488
- enabled: true,
20489
- priority: 3,
20490
- background: {
20491
- type: "surface",
20492
- role: "link"
20493
- },
20494
- borderRadius: "rounded-xl",
20495
- border: { widthClass: "border" }
20570
+ outline: {
20571
+ kind: "complete",
20572
+ appearance: {
20573
+ background: {
20574
+ type: "surface",
20575
+ role: "link"
20576
+ },
20577
+ borderRadius: "rounded-lg",
20578
+ border: { widthClass: "border" },
20579
+ effects: { hover: [{
20580
+ effectId: "lift",
20581
+ options: { translateY: "-2px" }
20582
+ }, {
20583
+ effectId: "background-on-hover",
20584
+ options: { colorToken: "surfaceAlt" }
20585
+ }] }
20586
+ }
20496
20587
  },
20497
- {
20498
- id: "ghost",
20499
- name: "Ghost",
20500
- enabled: true,
20501
- priority: 3,
20502
- background: {
20503
- type: "surface",
20504
- role: "link"
20505
- },
20506
- borderRadius: "rounded-xl"
20588
+ ghost: {
20589
+ kind: "complete",
20590
+ appearance: {
20591
+ background: {
20592
+ type: "surface",
20593
+ role: "link"
20594
+ },
20595
+ borderRadius: "rounded-lg",
20596
+ effects: { hover: [{
20597
+ effectId: "lift",
20598
+ options: { translateY: "-2px" }
20599
+ }] }
20600
+ }
20601
+ },
20602
+ accent: {
20603
+ kind: "complete",
20604
+ appearance: {
20605
+ background: {
20606
+ type: "solid",
20607
+ colorToken: "accent"
20608
+ },
20609
+ borderRadius: "rounded-lg",
20610
+ affordance: { iconId: "ArrowRight" },
20611
+ effects: { hover: [{
20612
+ effectId: "lift",
20613
+ options: { translateY: "-2px" }
20614
+ }] }
20615
+ }
20507
20616
  }
20508
- ]
20617
+ }
20509
20618
  }
20510
20619
  });
20511
- }));
20512
- //#endregion
20513
- //#region ../theme-core/src/buttons/personalities/showtime-pill.ts
20514
- var showtimePill;
20515
- var init_showtime_pill = __esmMin((() => {
20516
- init_types$13();
20517
- showtimePill = defineButtonPersonality({
20620
+ showtimePillRecipe = defineStaticButtonStyleRecipe({
20518
20621
  id: "showtime-pill",
20519
- name: "Showtime Pill",
20520
- description: "Bold pill buttons with uppercase labels, generous padding, and a playful pop.",
20622
+ accessibilityLabel: "Bold uppercase pill buttons with playful movement",
20521
20623
  tags: {
20522
20624
  tone: "bold",
20523
20625
  energy: "vibrant",
20524
20626
  motion: "expressive",
20525
20627
  era: "modern"
20526
20628
  },
20527
- buttonSystem: {
20629
+ system: {
20528
20630
  global: {
20529
20631
  cornerStyle: "pill",
20530
20632
  shadow: "low",
@@ -20555,282 +20657,371 @@ var init_showtime_pill = __esmMin((() => {
20555
20657
  fontSize: "1.125rem"
20556
20658
  }
20557
20659
  },
20558
- variants: [
20559
- {
20560
- id: "primary",
20561
- name: "Primary",
20562
- enabled: true,
20563
- priority: 1,
20564
- background: {
20565
- type: "solid",
20566
- colorToken: "primary"
20567
- },
20568
- borderRadius: "rounded-full",
20569
- effects: { hover: [{ effectId: "pop" }] }
20570
- },
20571
- {
20572
- id: "secondary",
20573
- name: "Secondary",
20574
- enabled: true,
20575
- priority: 2,
20576
- background: {
20577
- type: "surface",
20578
- role: "link"
20579
- },
20580
- borderRadius: "rounded-full",
20581
- border: { widthClass: "border-2" },
20582
- effects: { hover: [{ effectId: "pop" }] }
20660
+ roles: {
20661
+ primary: {
20662
+ kind: "complete",
20663
+ appearance: {
20664
+ background: {
20665
+ type: "solid",
20666
+ colorToken: "primary"
20667
+ },
20668
+ borderRadius: "rounded-full",
20669
+ effects: { hover: [{ effectId: "pop" }] }
20670
+ }
20583
20671
  },
20584
- {
20585
- id: "hero",
20586
- name: "Hero",
20587
- enabled: true,
20588
- priority: 1,
20589
- background: {
20590
- type: "solid",
20591
- colorToken: "secondary"
20592
- },
20593
- borderRadius: "rounded-full",
20594
- effects: { hover: [{ effectId: "pop" }] }
20672
+ secondary: {
20673
+ kind: "complete",
20674
+ appearance: {
20675
+ background: {
20676
+ type: "surface",
20677
+ role: "link"
20678
+ },
20679
+ borderRadius: "rounded-full",
20680
+ border: { widthClass: "border-2" },
20681
+ effects: { hover: [{ effectId: "pop" }] }
20682
+ }
20595
20683
  },
20596
- {
20597
- id: "header",
20598
- name: "Header",
20599
- enabled: true,
20600
- priority: 2,
20601
- background: {
20602
- type: "solid",
20603
- colorToken: "background"
20604
- },
20605
- borderRadius: "rounded-full",
20606
- border: { widthClass: "border-2" },
20607
- effects: { hover: [{
20608
- effectId: "background-on-hover",
20609
- options: { colorToken: "surface" }
20610
- }] }
20684
+ outline: {
20685
+ kind: "complete",
20686
+ appearance: {
20687
+ background: {
20688
+ type: "surface",
20689
+ role: "link"
20690
+ },
20691
+ borderRadius: "rounded-full",
20692
+ border: { widthClass: "border-2" },
20693
+ effects: { hover: [{
20694
+ effectId: "background-on-hover",
20695
+ options: { colorToken: "background" }
20696
+ }] }
20697
+ }
20611
20698
  },
20612
- {
20613
- id: "outline",
20614
- name: "Outline",
20615
- enabled: true,
20616
- priority: 3,
20617
- background: {
20618
- type: "surface",
20619
- role: "link"
20620
- },
20621
- borderRadius: "rounded-full",
20622
- border: { widthClass: "border-2" },
20623
- effects: { hover: [{
20624
- effectId: "background-on-hover",
20625
- options: { colorToken: "background" }
20626
- }] }
20699
+ ghost: {
20700
+ kind: "complete",
20701
+ appearance: {
20702
+ background: {
20703
+ type: "surface",
20704
+ role: "link"
20705
+ },
20706
+ borderRadius: "rounded-full",
20707
+ effects: { hover: [{
20708
+ effectId: "background-on-hover",
20709
+ options: { colorToken: "surface" }
20710
+ }] }
20711
+ }
20627
20712
  },
20628
- {
20629
- id: "ghost",
20630
- name: "Ghost",
20631
- enabled: true,
20632
- priority: 3,
20633
- background: {
20634
- type: "surface",
20635
- role: "link"
20636
- },
20637
- borderRadius: "rounded-full",
20638
- effects: { hover: [{
20639
- effectId: "background-on-hover",
20640
- options: { colorToken: "surface" }
20641
- }] }
20713
+ accent: {
20714
+ kind: "complete",
20715
+ appearance: {
20716
+ background: {
20717
+ type: "solid",
20718
+ colorToken: "secondary"
20719
+ },
20720
+ borderRadius: "rounded-full",
20721
+ effects: { hover: [{ effectId: "pop" }] }
20722
+ }
20642
20723
  }
20643
- ]
20724
+ }
20644
20725
  }
20645
20726
  });
20646
- }));
20647
- //#endregion
20648
- //#region ../theme-core/src/buttons/personalities/soft-pill.ts
20649
- var softPill;
20650
- var init_soft_pill = __esmMin((() => {
20651
- init_types$13();
20652
- softPill = defineButtonPersonality({
20653
- id: "soft-pill",
20654
- name: "Soft Pill",
20655
- description: "Rounded pills with a gentle lift on hover. Quietly modern.",
20727
+ joyStampRecipe = defineStaticButtonStyleRecipe({
20728
+ id: "joy-stamp",
20729
+ accessibilityLabel: "Bold pill buttons with a hard offset shadow",
20656
20730
  tags: {
20657
- tone: "classic",
20658
- energy: "calm",
20659
- motion: "subtle",
20731
+ tone: "bold",
20732
+ energy: "vibrant",
20733
+ motion: "expressive",
20660
20734
  era: "organic"
20661
20735
  },
20662
- buttonSystem: {
20736
+ system: {
20663
20737
  global: {
20664
20738
  cornerStyle: "pill",
20665
- shadow: "low",
20739
+ shadow: "high",
20666
20740
  textTransform: "none",
20667
- fontWeight: 500,
20741
+ typography: "heading",
20742
+ fontWeight: 700,
20743
+ fontSize: "text-lg",
20668
20744
  borderWidth: 2,
20669
- hoverTransform: "lift",
20745
+ hoverTransform: "none",
20670
20746
  hoverColor: "none"
20671
20747
  },
20672
- variants: [
20673
- {
20674
- id: "primary",
20675
- name: "Primary",
20676
- enabled: true,
20677
- priority: 1,
20678
- background: {
20679
- type: "solid",
20680
- colorToken: "primary"
20681
- },
20682
- borderRadius: "rounded-full",
20683
- shadow: {
20684
- elevation: "low",
20685
- softness: "soft",
20686
- position: "bottom"
20687
- },
20688
- effects: {
20689
- hover: [{
20690
- effectId: "lift",
20691
- options: { translateY: "-1px" }
20692
- }],
20693
- active: [{
20694
- effectId: "scale-down",
20695
- options: { scale: "0.98" }
20696
- }]
20748
+ sizes: {
20749
+ sm: {
20750
+ padding: "0.625rem 1.25rem",
20751
+ fontSize: "text-base"
20752
+ },
20753
+ md: {
20754
+ padding: "0.875rem 1.75rem",
20755
+ fontSize: "text-lg"
20756
+ },
20757
+ lg: {
20758
+ padding: "1.125rem 2.25rem",
20759
+ fontSize: "text-xl"
20760
+ },
20761
+ xl: {
20762
+ padding: "1.25rem 2.75rem",
20763
+ fontSize: "text-2xl"
20764
+ }
20765
+ },
20766
+ roles: {
20767
+ primary: {
20768
+ kind: "complete",
20769
+ appearance: {
20770
+ background: {
20771
+ type: "solid",
20772
+ colorToken: "primary"
20773
+ },
20774
+ borderRadius: "rounded-full",
20775
+ shadow: {
20776
+ elevation: "high",
20777
+ softness: "hard",
20778
+ position: "bottom-right",
20779
+ colorToken: "text"
20780
+ },
20781
+ effects: { hover: [{ effectId: "press-down" }] }
20697
20782
  }
20698
20783
  },
20699
- {
20700
- id: "secondary",
20701
- name: "Secondary",
20702
- enabled: true,
20703
- priority: 2,
20704
- background: {
20705
- type: "surface",
20706
- role: "link"
20707
- },
20708
- borderRadius: "rounded-full",
20709
- border: { widthClass: "border-2" },
20710
- effects: { hover: [{
20711
- effectId: "background-on-hover",
20712
- options: { colorToken: "surface" }
20713
- }] }
20784
+ secondary: {
20785
+ kind: "complete",
20786
+ appearance: {
20787
+ background: {
20788
+ type: "surface",
20789
+ role: "link"
20790
+ },
20791
+ borderRadius: "rounded-full",
20792
+ border: { widthClass: "border-2" },
20793
+ shadow: {
20794
+ elevation: "high",
20795
+ softness: "hard",
20796
+ position: "bottom-right",
20797
+ colorToken: "secondary"
20798
+ },
20799
+ effects: { hover: [{ effectId: "press-down" }] }
20800
+ }
20714
20801
  },
20715
- {
20716
- id: "outline",
20717
- name: "Outline",
20718
- enabled: true,
20719
- priority: 3,
20720
- background: {
20721
- type: "surface",
20722
- role: "link"
20723
- },
20724
- borderRadius: "rounded-full",
20725
- border: { widthClass: "border" },
20726
- effects: { hover: [{
20727
- effectId: "background-on-hover",
20728
- options: { colorToken: "surface" }
20729
- }] }
20802
+ outline: {
20803
+ kind: "derive",
20804
+ from: "secondary"
20730
20805
  },
20731
- {
20732
- id: "ghost",
20733
- name: "Ghost",
20734
- enabled: true,
20735
- priority: 3,
20736
- background: {
20737
- type: "surface",
20738
- role: "link"
20739
- },
20740
- borderRadius: "rounded-full",
20741
- effects: { hover: [{
20742
- effectId: "background-on-hover",
20743
- options: { colorToken: "surface" }
20744
- }] }
20806
+ ghost: {
20807
+ kind: "complete",
20808
+ appearance: {
20809
+ background: {
20810
+ type: "surface",
20811
+ role: "link"
20812
+ },
20813
+ borderRadius: "rounded-full",
20814
+ effects: { hover: [{ effectId: "press-down" }] }
20815
+ }
20816
+ },
20817
+ accent: {
20818
+ kind: "derive",
20819
+ from: "primary",
20820
+ overrides: { background: {
20821
+ type: "solid",
20822
+ colorToken: "accent"
20823
+ } }
20745
20824
  }
20746
- ]
20825
+ }
20747
20826
  }
20748
20827
  });
20749
- }));
20750
- //#endregion
20751
- //#region ../theme-core/src/buttons/personalities/two-tone-pill.ts
20752
- var solidSecondary, twoTonePill;
20753
- var init_two_tone_pill = __esmMin((() => {
20754
- init_types$14();
20755
- init_soft_pill();
20756
- init_types$13();
20757
- solidSecondary = {
20758
- id: "secondary",
20759
- name: "Secondary",
20760
- enabled: true,
20761
- priority: 2,
20762
- background: {
20763
- type: "solid",
20764
- colorToken: unsafeAsOpaqueButtonColourToken("secondary")
20828
+ ornateGhostSizes = {
20829
+ sm: {
20830
+ padding: "0.375rem 0",
20831
+ fontSize: "text-xs"
20765
20832
  },
20766
- borderRadius: "rounded-full",
20767
- shadow: {
20768
- elevation: "none",
20769
- softness: null,
20770
- position: "bottom"
20833
+ md: {
20834
+ padding: "0.5rem 0",
20835
+ fontSize: "text-sm"
20771
20836
  },
20772
- effects: {
20773
- hover: [{
20774
- effectId: "background-on-hover-alpha",
20775
- options: {
20776
- colorToken: "secondary",
20777
- opacity: 88
20837
+ lg: {
20838
+ padding: "0.625rem 0",
20839
+ fontSize: "text-base"
20840
+ },
20841
+ xl: {
20842
+ padding: "0.75rem 0",
20843
+ fontSize: "text-lg"
20844
+ }
20845
+ };
20846
+ ornateRitualRecipe = defineStaticButtonStyleRecipe({
20847
+ id: "ornate-ritual",
20848
+ accessibilityLabel: "Uppercase framed buttons with restrained movement",
20849
+ tags: {
20850
+ tone: "classic",
20851
+ energy: "vibrant",
20852
+ motion: "subtle",
20853
+ era: "organic"
20854
+ },
20855
+ system: {
20856
+ global: {
20857
+ cornerStyle: "rounded",
20858
+ textTransform: "uppercase",
20859
+ fontWeight: 600,
20860
+ borderWidth: 1,
20861
+ hoverTransform: "none",
20862
+ hoverColor: "none",
20863
+ letterSpacing: "loose"
20864
+ },
20865
+ sizes: {
20866
+ sm: {
20867
+ padding: "0.5625rem 1.25rem",
20868
+ fontSize: "text-xs"
20869
+ },
20870
+ md: {
20871
+ padding: "0.75rem 1.75rem",
20872
+ fontSize: "text-xs"
20873
+ },
20874
+ lg: {
20875
+ padding: "0.875rem 2.25rem",
20876
+ fontSize: "text-sm"
20877
+ },
20878
+ xl: {
20879
+ padding: "1rem 2.75rem",
20880
+ fontSize: "text-base"
20778
20881
  }
20779
- }],
20780
- active: [{
20781
- effectId: "scale-down",
20782
- options: { scale: "0.98" }
20783
- }]
20882
+ },
20883
+ roles: {
20884
+ primary: {
20885
+ kind: "complete",
20886
+ appearance: {
20887
+ background: {
20888
+ type: "solid",
20889
+ colorToken: "primary"
20890
+ },
20891
+ borderRadius: "rounded-md",
20892
+ border: { widthClass: "border" },
20893
+ effects: {
20894
+ hover: [{
20895
+ effectId: "background-on-hover",
20896
+ options: { colorToken: "primary-100" }
20897
+ }],
20898
+ active: [{
20899
+ effectId: "scale-down",
20900
+ options: { scale: "0.98" }
20901
+ }]
20902
+ }
20903
+ }
20904
+ },
20905
+ secondary: {
20906
+ kind: "complete",
20907
+ appearance: {
20908
+ background: {
20909
+ type: "solid",
20910
+ colorToken: "secondary"
20911
+ },
20912
+ borderRadius: "rounded-md",
20913
+ border: { widthClass: "border" },
20914
+ effects: { hover: [{
20915
+ effectId: "background-on-hover",
20916
+ options: { colorToken: "surface" }
20917
+ }] }
20918
+ }
20919
+ },
20920
+ outline: {
20921
+ kind: "complete",
20922
+ appearance: {
20923
+ background: {
20924
+ type: "surface",
20925
+ role: "link"
20926
+ },
20927
+ borderRadius: "rounded-md",
20928
+ border: { widthClass: "border" },
20929
+ effects: { hover: [{
20930
+ effectId: "background-on-hover",
20931
+ options: { colorToken: "muted" }
20932
+ }] }
20933
+ }
20934
+ },
20935
+ ghost: {
20936
+ kind: "complete",
20937
+ appearance: {
20938
+ background: {
20939
+ type: "surface",
20940
+ role: "link"
20941
+ },
20942
+ borderRadius: "rounded-none",
20943
+ sizes: ornateGhostSizes,
20944
+ effects: { base: [{
20945
+ effectId: "border-bottom-grow",
20946
+ options: {
20947
+ height: 1,
20948
+ colorToken: "accent",
20949
+ origin: "left"
20950
+ }
20951
+ }] }
20952
+ }
20953
+ },
20954
+ accent: {
20955
+ kind: "derive",
20956
+ from: "primary",
20957
+ overrides: { background: {
20958
+ type: "solid",
20959
+ colorToken: "accent"
20960
+ } }
20961
+ }
20962
+ }
20784
20963
  }
20964
+ });
20965
+ }));
20966
+ //#endregion
20967
+ //#region ../theme-core/src/buttons/styles/registry.ts
20968
+ function findButtonStyleRecipe(id) {
20969
+ const recipe = recipesById.get(id);
20970
+ if (recipe === void 0) throw new Error(`Button style registry is missing known style ${id}`);
20971
+ return recipe;
20972
+ }
20973
+ function resolveButtonStyleSelection(selection) {
20974
+ switch (selection.styleId) {
20975
+ case "soft-pill": return resolveButtonStyleRecipe(softPillRecipe, selection.parameters);
20976
+ case "earth-pill": return resolveButtonStyleRecipe(earthPillRecipe, selection.parameters);
20977
+ case "confident-chip": return resolveButtonStyleRecipe(confidentChipRecipe, selection.parameters);
20978
+ case "editorial-link": return resolveButtonStyleRecipe(editorialLinkRecipe, selection.parameters);
20979
+ case "pebble": return resolveButtonStyleRecipe(pebbleRecipe, selection.parameters);
20980
+ case "ink-stamp": return resolveButtonStyleRecipe(inkStampRecipe, selection.parameters);
20981
+ case "flat-ink": return resolveButtonStyleRecipe(flatInkRecipe, selection.parameters);
20982
+ case "brushed-wash": return resolveButtonStyleRecipe(brushedWashRecipe, selection.parameters);
20983
+ case "showtime-pill": return resolveButtonStyleRecipe(showtimePillRecipe, selection.parameters);
20984
+ case "joy-stamp": return resolveButtonStyleRecipe(joyStampRecipe, selection.parameters);
20985
+ case "ornate-ritual": return resolveButtonStyleRecipe(ornateRitualRecipe, selection.parameters);
20986
+ case "quiet-arrow": return resolveButtonStyleRecipe(quietArrowRecipe, selection.parameters);
20987
+ }
20988
+ }
20989
+ function defaultButtonStyleSelectionFor(styleId) {
20990
+ return {
20991
+ styleId,
20992
+ parameters: findButtonStyleRecipe(styleId).defaultParameters
20785
20993
  };
20786
- twoTonePill = defineButtonPersonality({
20787
- id: "two-tone-pill",
20788
- name: "Two-tone Pill",
20789
- description: "Rounded pills with distinct solid primary and secondary brand colours.",
20790
- tags: softPill.tags,
20791
- buttonSystem: {
20792
- ...softPill.buttonSystem,
20793
- variants: softPill.buttonSystem.variants.map((variant) => variant.id === "secondary" ? solidSecondary : variant)
20794
- }
20795
- });
20796
- }));
20797
- //#endregion
20798
- //#region ../theme-core/src/buttons/personalities/index.ts
20799
- function findButtonPersonality(id) {
20800
- return personalitiesById.get(id);
20801
- }
20802
- var buttonPersonalities, personalitiesById;
20803
- var init_personalities = __esmMin((() => {
20804
- init_brushed_wash();
20805
- init_confident_chip();
20806
- init_earth_pill();
20807
- init_editorial_link();
20808
- init_flat_ink();
20809
- init_ink_stamp();
20810
- init_joy_stamp();
20811
- init_ornate_ritual();
20812
- init_pebble();
20813
- init_quiet_arrow();
20814
- init_showtime_pill();
20815
- init_soft_pill();
20816
- init_two_tone_pill();
20817
- init_types$13();
20818
- buttonPersonalities = [
20819
- softPill,
20820
- twoTonePill,
20821
- earthPill,
20822
- confidentChip,
20823
- editorialLink,
20824
- pebble,
20825
- inkStamp,
20826
- flatInk,
20827
- brushedWash,
20828
- showtimePill,
20829
- joyStamp,
20830
- ornateRitual,
20831
- quietArrow
20994
+ }
20995
+ var buttonStyleRecipes, recipesById, registeredIds;
20996
+ var init_registry$2 = __esmMin((() => {
20997
+ init_domain();
20998
+ init_selection();
20999
+ init_quietArrow();
21000
+ init_staticRecipes();
21001
+ buttonStyleRecipes = [
21002
+ softPillRecipe,
21003
+ earthPillRecipe,
21004
+ confidentChipRecipe,
21005
+ editorialLinkRecipe,
21006
+ pebbleRecipe,
21007
+ inkStampRecipe,
21008
+ flatInkRecipe,
21009
+ brushedWashRecipe,
21010
+ showtimePillRecipe,
21011
+ joyStampRecipe,
21012
+ ornateRitualRecipe,
21013
+ quietArrowRecipe
20832
21014
  ];
20833
- personalitiesById = new Map(buttonPersonalities.map((p) => [p.id, p]));
21015
+ recipesById = new Map(buttonStyleRecipes.map((recipe) => [recipe.id, recipe]));
21016
+ registeredIds = buttonStyleRecipes.map((recipe) => recipe.id);
21017
+ 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");
21018
+ }));
21019
+ //#endregion
21020
+ //#region ../theme-core/src/buttons/styles/index.ts
21021
+ var init_styles = __esmMin((() => {
21022
+ init_domain();
21023
+ init_registry$2();
21024
+ init_selection();
20834
21025
  }));
20835
21026
  //#endregion
20836
21027
  //#region ../theme-core/src/accordions/siteStyleDefaults.ts
@@ -21420,10 +21611,10 @@ var init_gradients = __esmMin((() => {
21420
21611
  init_utils$4();
21421
21612
  }));
21422
21613
  var init_customizableSurfaces = __esmMin((() => {
21423
- init_types$17();
21614
+ init_types$16();
21424
21615
  })), logoTextConfidenceValues, logoAssetShapeValues, logoKindValues, logoDensityValues, logoContainsTextSchema, logoAnalysisSourceSchema, brandDisplayModeValues, logoAccommodationPatternValues, logoSizePolicyValues;
21425
21616
  var init_logoBranding = __esmMin((() => {
21426
- init_types$17();
21617
+ init_types$16();
21427
21618
  logoTextConfidenceValues = [
21428
21619
  "low",
21429
21620
  "medium",
@@ -21905,7 +22096,7 @@ var init_headerLooks = __esmMin((() => {
21905
22096
  init_headerCtaVariants();
21906
22097
  init_customizableSurfaces();
21907
22098
  init_logoBranding();
21908
- init_types$17();
22099
+ init_types$16();
21909
22100
  titleOnlyLogoAccommodation = {
21910
22101
  pattern: "title-only",
21911
22102
  supportedShapes: [
@@ -22545,25 +22736,9 @@ var init_headerLooks = __esmMin((() => {
22545
22736
  function asFooterLookId(value) {
22546
22737
  return value;
22547
22738
  }
22548
- function asFooterLayoutId(value) {
22549
- return value;
22550
- }
22551
- function asFooterStyleId(value) {
22552
- return value;
22553
- }
22554
- /**
22555
- * No-nav-safe identity footer: brand and legal/supporting copy carry the
22556
- * footer without implying missing navigation.
22557
- */
22558
- function identityQuietFooter(theme) {
22739
+ function quietFooterLinks(theme) {
22559
22740
  return {
22560
22741
  ...theme.footer,
22561
- variant: "simple",
22562
- maxWidth: "container",
22563
- background: {
22564
- type: "color",
22565
- color: "surface"
22566
- },
22567
22742
  navStyle: "minimal",
22568
22743
  navWeight: "regular",
22569
22744
  navColor: "text",
@@ -22576,344 +22751,45 @@ function identityQuietFooter(theme) {
22576
22751
  hoverColorToken: "primary",
22577
22752
  padding: "none",
22578
22753
  borderRadius: "none"
22579
- },
22580
- navLayout: {
22581
- layout: "inline-wrap",
22582
- align: "start",
22583
- gapX: "default",
22584
- gapY: "tight"
22585
- },
22586
- logo: {
22587
- showLogo: true,
22588
- showLogoText: true,
22589
- placement: "left",
22590
- size: "sm",
22591
- align: "start"
22592
- },
22593
- bottomBar: {
22594
- enabled: false,
22595
- fullBleed: false,
22596
- textAlign: "left",
22597
- paddingX: "default",
22598
- paddingY: "compact",
22599
- borderTop: { width: "none" }
22600
22754
  }
22601
22755
  };
22602
22756
  }
22603
- /**
22604
- * Back-compat alias for the previous default footer Look. It keeps existing
22605
- * persisted selections valid while staying hidden from the new layout/style UI.
22606
- */
22607
- function mutedGroundingFooter(theme) {
22608
- return {
22609
- ...identityQuietFooter(theme),
22610
- background: theme.footer.background,
22611
- navStyle: theme.footer.navStyle,
22612
- navColor: theme.footer.navColor,
22613
- navWeight: theme.footer.navWeight,
22614
- navLinkStyle: theme.footer.navLinkStyle,
22615
- bottomTextLinkStyle: theme.footer.bottomTextLinkStyle
22616
- };
22617
- }
22618
- /** Applies a high-contrast brand band with a darker full-bleed bottom bar. */
22619
- function brandTwoBandFooter(theme) {
22757
+ function emphasizedFooterLinks(theme) {
22620
22758
  return {
22621
22759
  ...theme.footer,
22622
- variant: "split",
22623
- maxWidth: "container",
22624
- background: {
22625
- type: "color",
22626
- color: "primary-800"
22627
- },
22628
22760
  navStyle: "minimal",
22629
22761
  navWeight: "medium",
22630
- navColor: "primaryForeground",
22631
- navLinkStyle: {
22632
- typography: "body",
22633
- fontWeight: "medium",
22634
- textTransform: "none",
22635
- italic: false,
22636
- colorToken: "primaryForeground",
22637
- hoverColorToken: "secondary",
22638
- padding: "none",
22639
- borderRadius: "none"
22640
- },
22641
- bottomTextLinkStyle: {
22642
- colorToken: "secondary",
22643
- decorationColorToken: "secondary"
22644
- },
22645
- navLayout: {
22646
- layout: "inline-wrap",
22647
- align: "start",
22648
- gapX: "default",
22649
- gapY: "tight"
22650
- },
22651
- logo: {
22652
- showLogo: true,
22653
- showLogoText: false,
22654
- placement: "left",
22655
- size: "sm",
22656
- align: "start"
22657
- },
22658
- bottomBar: {
22659
- enabled: true,
22660
- fullBleed: true,
22661
- background: {
22662
- type: "color",
22663
- color: "primary-900"
22664
- },
22665
- textColor: "primaryForeground",
22666
- textAlign: "center",
22667
- paddingX: "default",
22668
- paddingY: "compact",
22669
- borderTop: { width: "none" }
22670
- }
22671
- };
22672
- }
22673
- /**
22674
- * Centered stack on a softly tinted band: logo, inline nav, address, and a
22675
- * hairline-topped copyright line, all centered.
22676
- */
22677
- function centeredCalmFooter(theme) {
22678
- return {
22679
- ...theme.footer,
22680
- variant: "simple",
22681
- maxWidth: "container",
22682
- background: {
22683
- type: "color",
22684
- color: "surfaceAlt"
22685
- },
22686
- navStyle: "minimal",
22687
- navWeight: "regular",
22688
22762
  navColor: "text",
22689
22763
  navLinkStyle: {
22690
22764
  typography: "body",
22691
- fontWeight: "regular",
22692
- textTransform: "none",
22693
- italic: false,
22694
- colorToken: "text",
22695
- hoverColorToken: "primary",
22696
- padding: "none",
22697
- borderRadius: "none"
22698
- },
22699
- navLayout: {
22700
- layout: "inline-wrap",
22701
- align: "center",
22702
- gapX: "relaxed",
22703
- gapY: "tight"
22704
- },
22705
- logo: {
22706
- showLogo: true,
22707
- showLogoText: false,
22708
- placement: "above",
22709
- size: "sm",
22710
- align: "center"
22711
- },
22712
- bottomBar: {
22713
- enabled: true,
22714
- fullBleed: false,
22715
- textAlign: "center",
22716
- paddingX: "default",
22717
- paddingY: "compact",
22718
- borderTop: { width: "thin" }
22719
- }
22720
- };
22721
- }
22722
- /** Editorial split footer: compact nav on one side, brand signoff on the other. */
22723
- function splitEditorialFooter(theme) {
22724
- return {
22725
- ...theme.footer,
22726
- variant: "split",
22727
- maxWidth: "container",
22728
- background: {
22729
- type: "color",
22730
- color: "surface"
22731
- },
22732
- navStyle: "minimal",
22733
- navWeight: "regular",
22734
- navColor: "text",
22735
- navLinkStyle: {
22736
- typography: "body",
22737
- fontWeight: "regular",
22738
- textTransform: "none",
22739
- italic: false,
22740
- colorToken: "text",
22741
- hoverColorToken: "primary",
22742
- padding: "none",
22743
- borderRadius: "none"
22744
- },
22745
- navLayout: {
22746
- layout: "inline-wrap",
22747
- align: "start",
22748
- gapX: "relaxed",
22749
- gapY: "tight"
22750
- },
22751
- logo: {
22752
- showLogo: true,
22753
- showLogoText: true,
22754
- placement: "right",
22755
- size: "sm",
22756
- align: "end"
22757
- },
22758
- bottomBar: {
22759
- enabled: true,
22760
- fullBleed: false,
22761
- textAlign: "left",
22762
- paddingX: "default",
22763
- paddingY: "compact",
22764
- borderTop: { width: "thin" }
22765
- }
22766
- };
22767
- }
22768
- /**
22769
- * Editorial columns: site name and supporting copy on the left, inline nav on
22770
- * the right, with a hairline-topped bottom line. Uses the footer block's
22771
- * columns layout.
22772
- */
22773
- function editorialColumnsFooter(theme) {
22774
- return {
22775
- ...theme.footer,
22776
- variant: "columns",
22777
- maxWidth: "container",
22778
- background: {
22779
- type: "color",
22780
- color: "surface"
22781
- },
22782
- navStyle: "minimal",
22783
- navWeight: "regular",
22784
- navColor: "text",
22785
- navLinkStyle: {
22786
- typography: "body",
22787
- fontWeight: "regular",
22765
+ fontWeight: "medium",
22788
22766
  textTransform: "none",
22789
22767
  italic: false,
22790
22768
  colorToken: "text",
22791
22769
  hoverColorToken: "primary",
22792
22770
  padding: "none",
22793
22771
  borderRadius: "none"
22794
- },
22795
- logo: {
22796
- showLogo: true,
22797
- showLogoText: true,
22798
- placement: "left",
22799
- size: "sm",
22800
- align: "start"
22801
- },
22802
- bottomBar: {
22803
- enabled: true,
22804
- fullBleed: false,
22805
- textAlign: "center",
22806
- paddingX: "default",
22807
- paddingY: "compact",
22808
- borderTop: { width: "thin" }
22809
22772
  }
22810
22773
  };
22811
22774
  }
22812
22775
  function findFooterLook(id) {
22813
22776
  return footerLooksById.get(id);
22814
22777
  }
22815
- var guaranteedFallbackFooterLookId, footerLayoutCatalog, footerStyleCatalog, footerLookCatalog, footerLooksById;
22778
+ var guaranteedFallbackFooterLookId, footerLookCatalog, footerLooksById;
22816
22779
  var init_footerLooks = __esmMin((() => {
22817
- init_customizableSurfaces();
22818
- init_types$17();
22819
- guaranteedFallbackFooterLookId = asFooterLookId("footer-identity-quiet");
22820
- footerLayoutCatalog = defineExactCatalog()([
22821
- {
22822
- id: asFooterLayoutId("identity"),
22823
- label: "Identity",
22824
- description: "Logo, site text, address, and legal copy without relying on footer navigation."
22825
- },
22826
- {
22827
- id: asFooterLayoutId("centered"),
22828
- label: "Centered",
22829
- description: "A calm centered stack for identity, short copy, and optional compact navigation.",
22830
- maxRecommendedNavDensity: "sparse"
22831
- },
22832
- {
22833
- id: asFooterLayoutId("split"),
22834
- label: "Split",
22835
- description: "Navigation and brand signoff separated into a wider split footer.",
22836
- requiresFooterNav: true,
22837
- maxRecommendedNavDensity: "balanced"
22838
- },
22839
- {
22840
- id: asFooterLayoutId("columns"),
22841
- label: "Columns",
22842
- description: "Grouped footer navigation columns with a supporting bottom line.",
22843
- requiresFooterNav: true,
22844
- requiresFooterNavGroups: true
22845
- }
22846
- ]);
22847
- footerStyleCatalog = defineExactCatalog()([
22848
- {
22849
- id: asFooterStyleId("quiet"),
22850
- label: "Quiet",
22851
- description: "Lightweight, practical footer treatment."
22852
- },
22853
- {
22854
- id: asFooterStyleId("calm"),
22855
- label: "Calm",
22856
- description: "Soft centered treatment with restrained dividers."
22857
- },
22858
- {
22859
- id: asFooterStyleId("editorial"),
22860
- label: "Editorial",
22861
- description: "Text-forward treatment with fine-line structure."
22862
- },
22863
- {
22864
- id: asFooterStyleId("brand-band"),
22865
- label: "Brand band",
22866
- description: "High-contrast brand treatment with a stronger bottom bar."
22867
- }
22868
- ]);
22869
- new Map(footerLayoutCatalog.map((layout) => [layout.id, layout]));
22870
- new Map(footerStyleCatalog.map((style) => [style.id, style]));
22871
- footerLookCatalog = defineExactCatalog()([
22872
- {
22873
- id: asFooterLookId("footer-identity-quiet"),
22874
- label: "Identity footer",
22875
- layoutId: asFooterLayoutId("identity"),
22876
- styleId: asFooterStyleId("quiet"),
22877
- compile: identityQuietFooter
22878
- },
22879
- {
22880
- id: asFooterLookId("footer-muted-grounding"),
22881
- label: "Muted grounding footer",
22882
- layoutId: asFooterLayoutId("identity"),
22883
- styleId: asFooterStyleId("quiet"),
22884
- hiddenFromLayoutStyleControls: true,
22885
- compile: mutedGroundingFooter
22886
- },
22887
- {
22888
- id: asFooterLookId("footer-centered-calm"),
22889
- label: "Centered calm footer",
22890
- layoutId: asFooterLayoutId("centered"),
22891
- styleId: asFooterStyleId("calm"),
22892
- compile: centeredCalmFooter
22893
- },
22894
- {
22895
- id: asFooterLookId("footer-split-editorial"),
22896
- label: "Split editorial footer",
22897
- layoutId: asFooterLayoutId("split"),
22898
- styleId: asFooterStyleId("editorial"),
22899
- compile: splitEditorialFooter
22900
- },
22901
- {
22902
- id: asFooterLookId("footer-editorial-columns"),
22903
- label: "Editorial columns footer",
22904
- layoutId: asFooterLayoutId("columns"),
22905
- styleId: asFooterStyleId("editorial"),
22906
- compile: editorialColumnsFooter
22907
- },
22908
- {
22909
- id: asFooterLookId("site-footer-brand-two-band"),
22910
- label: "Two-band brand footer",
22911
- layoutId: asFooterLayoutId("split"),
22912
- styleId: asFooterStyleId("brand-band"),
22913
- allowedContentPresence: ["default-footer", "default-and-blocks"],
22914
- compile: brandTwoBandFooter
22915
- }
22916
- ]);
22780
+ init_types$16();
22781
+ guaranteedFallbackFooterLookId = asFooterLookId("footer-links-quiet");
22782
+ footerLookCatalog = defineExactCatalog()([{
22783
+ id: asFooterLookId("footer-links-quiet"),
22784
+ label: "Quiet links",
22785
+ description: "Regular-weight footer navigation with a restrained hover.",
22786
+ compile: quietFooterLinks
22787
+ }, {
22788
+ id: asFooterLookId("footer-links-emphasized"),
22789
+ label: "Emphasized links",
22790
+ description: "Medium-weight footer navigation with a clearer emphasis.",
22791
+ compile: emphasizedFooterLinks
22792
+ }]);
22917
22793
  footerLooksById = new Map(footerLookCatalog.map((look) => [look.id, look]));
22918
22794
  }));
22919
22795
  //#endregion
@@ -22923,7 +22799,7 @@ function defaultCuratedChoice(choices) {
22923
22799
  }
22924
22800
  var init_curatedChoices = __esmMin((() => {})), generatedContentFrames, userContentFrames, generatedDesignOptionCatalog, userDesignOptionCatalog;
22925
22801
  var init_sourceCatalogs = __esmMin((() => {
22926
- init_types$17();
22802
+ init_types$16();
22927
22803
  generatedContentFrames = [
22928
22804
  plainFrame,
22929
22805
  panelFrame("inset"),
@@ -23535,7 +23411,7 @@ function themeButtonClassName(spec) {
23535
23411
  ].filter(Boolean).join(" ");
23536
23412
  }
23537
23413
  var init_classNames = __esmMin((() => {
23538
- init_types$14();
23414
+ init_types$13();
23539
23415
  }));
23540
23416
  var init_generateBaseCSS = __esmMin((() => {}));
23541
23417
  //#endregion
@@ -24779,7 +24655,7 @@ var init_registry$1 = __esmMin((() => {
24779
24655
  init_registry$1();
24780
24656
  }));
24781
24657
  var init_generateDefaultButtonSystem = __esmMin((() => {
24782
- init_types$14();
24658
+ init_types$13();
24783
24659
  }));
24784
24660
  var init_affordanceIcons = __esmMin((() => {}));
24785
24661
  var init_foregroundRoles = __esmMin((() => {}));
@@ -24844,7 +24720,7 @@ var init_resolveButtonColourStates = __esmMin((() => {
24844
24720
  init_colorConversion();
24845
24721
  init_onColor();
24846
24722
  init_foregroundContract();
24847
- init_types$14();
24723
+ init_types$13();
24848
24724
  init_constants$2();
24849
24725
  init_effectClassification();
24850
24726
  BUTTON_CONTRAST_POLICY = {
@@ -24856,7 +24732,7 @@ var init_resolveButtonColourStates = __esmMin((() => {
24856
24732
  };
24857
24733
  })), init_resolvedButtonCss = __esmMin((() => {})), AFFORDANCE_SUPPRESS_CLASS;
24858
24734
  var init_generateButtonCss = __esmMin((() => {
24859
- init_types$14();
24735
+ init_types$13();
24860
24736
  init_classNames();
24861
24737
  init_resolver$1();
24862
24738
  init_generateBaseCSS();
@@ -24871,29 +24747,33 @@ var init_generateButtonCss = __esmMin((() => {
24871
24747
  AFFORDANCE_SUPPRESS_CLASS = "rb-affordance-off";
24872
24748
  buttonSizeNameSchema.options;
24873
24749
  }));
24874
- function presetCategory(personality) {
24875
- switch (personality.tags.era) {
24750
+ function presetCategory(recipe) {
24751
+ switch (recipe.tags.era) {
24876
24752
  case "retro": return "retro";
24877
24753
  case "editorial": return "minimal";
24878
24754
  case "organic": return "artistic";
24879
- case "modern": return personality.tags.tone === "bold" ? "modern" : "technical";
24755
+ case "modern": return recipe.tags.tone === "bold" ? "modern" : "technical";
24880
24756
  case "technical": return "technical";
24881
24757
  case void 0: return "modern";
24882
24758
  }
24883
24759
  }
24884
24760
  var init_presets = __esmMin((() => {
24885
- init_personalities();
24886
- buttonPersonalities.map((personality) => ({
24887
- id: personality.id,
24888
- name: personality.name,
24889
- description: personality.description,
24890
- category: presetCategory(personality),
24891
- buttonSystem: personality.buttonSystem,
24892
- compatibility: {
24893
- ...personality.tags.tone ? { tones: [personality.tags.tone] } : {},
24894
- ...personality.tags.energy ? { energies: [personality.tags.energy] } : {}
24895
- }
24896
- }));
24761
+ init_styles();
24762
+ buttonStyleRecipes.map((recipe) => {
24763
+ const resolved = resolveButtonStyleSelection(defaultButtonStyleSelectionFor(recipe.id));
24764
+ if (resolved.kind === "error") throw new Error(`Invalid registered button style ${recipe.id}: ${resolved.error.issues.join(", ")}`);
24765
+ return {
24766
+ id: recipe.id,
24767
+ name: recipe.accessibilityLabel,
24768
+ description: recipe.accessibilityLabel,
24769
+ category: presetCategory(recipe),
24770
+ buttonSystem: resolved.buttonSystem,
24771
+ compatibility: {
24772
+ ...recipe.tags.tone ? { tones: [recipe.tags.tone] } : {},
24773
+ ...recipe.tags.energy ? { energies: [recipe.tags.energy] } : {}
24774
+ }
24775
+ };
24776
+ });
24897
24777
  }));
24898
24778
  //#endregion
24899
24779
  //#region ../theme-core/src/buttons/effects/types.ts
@@ -24901,12 +24781,12 @@ var init_types$11 = __esmMin((() => {}));
24901
24781
  var init_core$2 = __esmMin((() => {
24902
24782
  init_resolveButtonColourStates();
24903
24783
  init_resolvedButtonCss();
24904
- init_types$14();
24784
+ init_types$13();
24905
24785
  }));
24906
24786
  //#endregion
24907
24787
  //#region ../theme-core/src/buttons/index.ts
24908
24788
  var init_buttons = __esmMin((() => {
24909
- init_types$14();
24789
+ init_types$13();
24910
24790
  init_classNames();
24911
24791
  init_generateButtonCss();
24912
24792
  init_resolveButtonColourStates();
@@ -24914,7 +24794,7 @@ var init_buttons = __esmMin((() => {
24914
24794
  init_generateDefaultButtonSystem();
24915
24795
  init_constants$2();
24916
24796
  init_presets();
24917
- init_personalities();
24797
+ init_styles();
24918
24798
  init_types$11();
24919
24799
  init_registry$1();
24920
24800
  init_transform();
@@ -25844,7 +25724,7 @@ var init_schema = __esmMin((() => {
25844
25724
  init_validation$2();
25845
25725
  init_atRuleValidation();
25846
25726
  init_shared$5();
25847
- init_types$17();
25727
+ init_types$16();
25848
25728
  init_logoBranding();
25849
25729
  init_rawStyleFields();
25850
25730
  init_themeColorTokens();
@@ -26702,7 +26582,7 @@ function uniqueNonEmpty$1(values) {
26702
26582
  var designResolutionPolicySchema, runtimeStyleFieldNameSchema, nonEmptyRuntimeStyleFieldNamesSchema, heroLegibilityStrategySchema, heroCompositionIntentSchema, heroTypographyScaleIntentSchema, sectionHeightIntentSchema, imageSurfaceTreatmentIntensitySchema, imageSurfaceMotionSchema, imageSurfaceTreatmentSchema, testimonialCardTreatmentSchema, tileTreatmentSchema, eventListTreatmentSchema, eyebrowTreatmentSchema, userPanelTreatments, userFlushTreatments, userFlushBleeds, contentFrameIntentSchema, blockDesignPlanSchema, styleAuthoritySchema, blockRuntimeStyleAuthoritySchema;
26703
26583
  var init_designState = __esmMin((() => {
26704
26584
  init_sourceCatalogs();
26705
- init_types$17();
26585
+ init_types$16();
26706
26586
  init_schemaVersionedJson();
26707
26587
  init_rawStyleFields();
26708
26588
  designResolutionPolicySchema = z$1.enum([
@@ -26878,10 +26758,10 @@ var init_runtimeCompiler = __esmMin((() => {
26878
26758
  init_schema();
26879
26759
  init_modern_minimal();
26880
26760
  init_expandPalette();
26881
- init_personalities();
26761
+ init_styles();
26882
26762
  init_colors();
26883
26763
  init_designState();
26884
- init_types$17();
26764
+ init_types$16();
26885
26765
  init_accessibleSurfaces();
26886
26766
  init_sectionTransitions();
26887
26767
  init_tokens();
@@ -27120,23 +27000,31 @@ function defineCuratedSiteStyle(input) {
27120
27000
  })),
27121
27001
  recommendedHeaderLookIds: legacyHeaderLookIds.map(asHeaderLookId),
27122
27002
  recommendedFooterLookIds: (input.recommendedFooterLookIds ?? []).map(asFooterLookId),
27123
- buttonPersonalityChoices: input.buttonPersonalityChoices,
27003
+ buttonStyleChoices: input.buttonStyleChoices,
27124
27004
  paletteRecommendations: input.paletteRecommendations,
27125
27005
  typography: input.typography ?? defaultTypographyForRecipe(input.tokenRecipes.typography),
27126
27006
  ...input.heroTypography ? { heroTypography: input.heroTypography } : {}
27127
27007
  };
27128
27008
  }
27129
- function defaultButtonPersonalityForSiteStyle(siteStyle) {
27130
- return defaultCuratedChoice(siteStyle.buttonPersonalityChoices);
27009
+ function defaultButtonStyleSelectionForSiteStyle(siteStyle) {
27010
+ const { styleId, parameters } = siteStyle.buttonStyleChoices[0];
27011
+ return buttonStyleSelectionSchema.parse({
27012
+ styleId,
27013
+ parameters
27014
+ });
27131
27015
  }
27132
27016
  function defaultPaletteForSiteStyle(siteStyle) {
27133
27017
  return defaultCuratedChoice(siteStyle.paletteRecommendations);
27134
27018
  }
27135
- function buttonChoice(id, note) {
27019
+ function buttonChoice(styleId, note, parameters) {
27020
+ const selection = parameters === void 0 ? defaultButtonStyleSelectionFor(styleId) : buttonStyleSelectionSchema.parse({
27021
+ styleId,
27022
+ parameters
27023
+ });
27136
27024
  return note ? {
27137
- id: asButtonPersonalityId(id),
27025
+ ...selection,
27138
27026
  note
27139
- } : { id: asButtonPersonalityId(id) };
27027
+ } : selection;
27140
27028
  }
27141
27029
  function paletteRecommendation(authoringKey, note) {
27142
27030
  const valueKey = requireCuratedPaletteValueKey(asCuratedPaletteAuthoringKey(authoringKey));
@@ -27292,7 +27180,7 @@ function getCuratedSiteStyle(id) {
27292
27180
  }
27293
27181
  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;
27294
27182
  var init_curatedSiteStyles = __esmMin((() => {
27295
- init_personalities();
27183
+ init_styles();
27296
27184
  init_curated();
27297
27185
  init_siteStyleDefaults$1();
27298
27186
  init_siteStyleDefaults();
@@ -27302,7 +27190,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27302
27190
  init_footerLooks();
27303
27191
  init_curatedChoices();
27304
27192
  init_sourceCatalogs();
27305
- init_types$17();
27193
+ init_types$16();
27306
27194
  init_siteStyleTypography();
27307
27195
  init_runtimeCompiler();
27308
27196
  SOFT_EARTH_SITE_STYLE_ID_VALUE = "site-style:soft-earth";
@@ -27526,9 +27414,8 @@ var init_curatedSiteStyles = __esmMin((() => {
27526
27414
  "minimal-transparent",
27527
27415
  "clean-base"
27528
27416
  ],
27529
- buttonPersonalityChoices: [
27417
+ buttonStyleChoices: [
27530
27418
  buttonChoice("soft-pill"),
27531
- buttonChoice("two-tone-pill"),
27532
27419
  buttonChoice("pebble"),
27533
27420
  buttonChoice("editorial-link"),
27534
27421
  buttonChoice("brushed-wash")
@@ -27564,7 +27451,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27564
27451
  "brand-solid",
27565
27452
  "clean-base"
27566
27453
  ],
27567
- buttonPersonalityChoices: [
27454
+ buttonStyleChoices: [
27568
27455
  buttonChoice("confident-chip"),
27569
27456
  buttonChoice("soft-pill"),
27570
27457
  buttonChoice("editorial-link")
@@ -27603,7 +27490,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27603
27490
  "minimal-transparent",
27604
27491
  "centered-calm"
27605
27492
  ],
27606
- buttonPersonalityChoices: [
27493
+ buttonStyleChoices: [
27607
27494
  buttonChoice("editorial-link"),
27608
27495
  buttonChoice("soft-pill"),
27609
27496
  buttonChoice("brushed-wash")
@@ -27643,7 +27530,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27643
27530
  "practical-utility",
27644
27531
  "clean-base"
27645
27532
  ],
27646
- buttonPersonalityChoices: [
27533
+ buttonStyleChoices: [
27647
27534
  buttonChoice("pebble"),
27648
27535
  buttonChoice("brushed-wash"),
27649
27536
  buttonChoice("confident-chip")
@@ -27704,7 +27591,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27704
27591
  "serif-line",
27705
27592
  "clean-base"
27706
27593
  ],
27707
- buttonPersonalityChoices: [
27594
+ buttonStyleChoices: [
27708
27595
  buttonChoice("editorial-link"),
27709
27596
  buttonChoice("confident-chip"),
27710
27597
  buttonChoice("soft-pill")
@@ -27766,7 +27653,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27766
27653
  "brand-solid",
27767
27654
  "clean-base"
27768
27655
  ],
27769
- buttonPersonalityChoices: [
27656
+ buttonStyleChoices: [
27770
27657
  buttonChoice("confident-chip"),
27771
27658
  buttonChoice("pebble"),
27772
27659
  buttonChoice("ink-stamp")
@@ -27805,7 +27692,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27805
27692
  "minimal-transparent",
27806
27693
  "clean-base"
27807
27694
  ],
27808
- buttonPersonalityChoices: [
27695
+ buttonStyleChoices: [
27809
27696
  buttonChoice("soft-pill"),
27810
27697
  buttonChoice("pebble"),
27811
27698
  buttonChoice("confident-chip")
@@ -27878,7 +27765,7 @@ var init_curatedSiteStyles = __esmMin((() => {
27878
27765
  "clean-base",
27879
27766
  "centered-calm"
27880
27767
  ],
27881
- buttonPersonalityChoices: [
27768
+ buttonStyleChoices: [
27882
27769
  buttonChoice("pebble"),
27883
27770
  buttonChoice("soft-pill"),
27884
27771
  buttonChoice("editorial-link")
@@ -27997,12 +27884,8 @@ var init_curatedSiteStyles = __esmMin((() => {
27997
27884
  "serif-line",
27998
27885
  "minimal-transparent"
27999
27886
  ],
28000
- recommendedFooterLookIds: [
28001
- "footer-centered-calm",
28002
- "footer-editorial-columns",
28003
- "footer-muted-grounding"
28004
- ],
28005
- buttonPersonalityChoices: [
27887
+ recommendedFooterLookIds: ["footer-links-quiet"],
27888
+ buttonStyleChoices: [
28006
27889
  buttonChoice("soft-pill"),
28007
27890
  buttonChoice("pebble"),
28008
27891
  buttonChoice("editorial-link")
@@ -28076,7 +27959,7 @@ var init_curatedSiteStyles = __esmMin((() => {
28076
27959
  "centered-calm",
28077
27960
  "minimal-transparent"
28078
27961
  ],
28079
- buttonPersonalityChoices: [
27962
+ buttonStyleChoices: [
28080
27963
  buttonChoice("editorial-link"),
28081
27964
  buttonChoice("soft-pill"),
28082
27965
  buttonChoice("brushed-wash")
@@ -28149,8 +28032,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28149
28032
  "practical-utility",
28150
28033
  "clean-base"
28151
28034
  ],
28152
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
28153
- buttonPersonalityChoices: [
28035
+ recommendedFooterLookIds: ["footer-links-emphasized", "footer-links-quiet"],
28036
+ buttonStyleChoices: [
28154
28037
  buttonChoice("pebble"),
28155
28038
  buttonChoice("confident-chip"),
28156
28039
  buttonChoice("ink-stamp"),
@@ -28271,8 +28154,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28271
28154
  "minimal-transparent",
28272
28155
  "serif-line"
28273
28156
  ],
28274
- recommendedFooterLookIds: ["footer-muted-grounding", "site-footer-brand-two-band"],
28275
- buttonPersonalityChoices: [
28157
+ recommendedFooterLookIds: ["footer-links-quiet", "footer-links-emphasized"],
28158
+ buttonStyleChoices: [
28276
28159
  buttonChoice("earth-pill"),
28277
28160
  buttonChoice("soft-pill"),
28278
28161
  buttonChoice("pebble"),
@@ -28343,7 +28226,7 @@ var init_curatedSiteStyles = __esmMin((() => {
28343
28226
  "floating-glass",
28344
28227
  "brand-solid"
28345
28228
  ],
28346
- buttonPersonalityChoices: [
28229
+ buttonStyleChoices: [
28347
28230
  buttonChoice("ink-stamp"),
28348
28231
  buttonChoice("confident-chip"),
28349
28232
  buttonChoice("brushed-wash"),
@@ -28398,8 +28281,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28398
28281
  "transparent-overlay",
28399
28282
  "practical-utility"
28400
28283
  ],
28401
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
28402
- buttonPersonalityChoices: [
28284
+ recommendedFooterLookIds: ["footer-links-emphasized", "footer-links-quiet"],
28285
+ buttonStyleChoices: [
28403
28286
  buttonChoice("showtime-pill"),
28404
28287
  buttonChoice("confident-chip"),
28405
28288
  buttonChoice("ink-stamp"),
@@ -28480,8 +28363,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28480
28363
  headerStyleChoice("glass")
28481
28364
  ] },
28482
28365
  recommendedHeaderLookIds: ["minimal-transparent"],
28483
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
28484
- buttonPersonalityChoices: [
28366
+ recommendedFooterLookIds: ["footer-links-emphasized", "footer-links-quiet"],
28367
+ buttonStyleChoices: [
28485
28368
  buttonChoice("ornate-ritual"),
28486
28369
  buttonChoice("joy-stamp"),
28487
28370
  buttonChoice("ink-stamp")
@@ -28534,8 +28417,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28534
28417
  headerStyleChoice("glass")
28535
28418
  ] },
28536
28419
  recommendedHeaderLookIds: ["minimal-transparent"],
28537
- recommendedFooterLookIds: ["site-footer-brand-two-band", "footer-muted-grounding"],
28538
- buttonPersonalityChoices: [
28420
+ recommendedFooterLookIds: ["footer-links-emphasized", "footer-links-quiet"],
28421
+ buttonStyleChoices: [
28539
28422
  buttonChoice("joy-stamp"),
28540
28423
  buttonChoice("ink-stamp"),
28541
28424
  buttonChoice("showtime-pill")
@@ -28625,8 +28508,8 @@ var init_curatedSiteStyles = __esmMin((() => {
28625
28508
  "centered-calm",
28626
28509
  "clean-base"
28627
28510
  ],
28628
- recommendedFooterLookIds: ["footer-editorial-columns", "footer-muted-grounding"],
28629
- buttonPersonalityChoices: [
28511
+ recommendedFooterLookIds: ["footer-links-quiet"],
28512
+ buttonStyleChoices: [
28630
28513
  buttonChoice("flat-ink"),
28631
28514
  buttonChoice("confident-chip"),
28632
28515
  buttonChoice("editorial-link")
@@ -28703,14 +28586,9 @@ var init_curatedSiteStyles = __esmMin((() => {
28703
28586
  "serif-line",
28704
28587
  "clean-base"
28705
28588
  ],
28706
- recommendedFooterLookIds: [
28707
- "footer-editorial-columns",
28708
- "footer-muted-grounding",
28709
- "footer-identity-quiet"
28710
- ],
28711
- buttonPersonalityChoices: [
28712
- buttonChoice("quiet-arrow"),
28713
- buttonChoice("two-tone-pill"),
28589
+ recommendedFooterLookIds: ["footer-links-quiet"],
28590
+ buttonStyleChoices: [
28591
+ buttonChoice("quiet-arrow", void 0, { secondaryTreatment: "solid-accent" }),
28714
28592
  buttonChoice("flat-ink"),
28715
28593
  buttonChoice("editorial-link")
28716
28594
  ],
@@ -28726,13 +28604,13 @@ var init_curatedSiteStyles = __esmMin((() => {
28726
28604
  curatedSiteStylesById = new Map(curatedSiteStyles.map((style) => [style.id, style]));
28727
28605
  })), init_lookResolution = __esmMin((() => {
28728
28606
  init_appearancePresets();
28729
- init_types$17();
28607
+ init_types$16();
28730
28608
  }));
28731
28609
  var init_siteStyleBlockPolicies = __esmMin((() => {
28732
28610
  init_lookResolution();
28733
28611
  init_appearancePresets();
28734
28612
  init_pageDesignIntent();
28735
- init_types$17();
28613
+ init_types$16();
28736
28614
  init_sectionTransitions();
28737
28615
  asPageFlowPresetId("generated-default");
28738
28616
  asSiteStyleId("site-style:south-west-twerk-school");
@@ -28745,12 +28623,12 @@ var init_siteStyleBlockPolicies = __esmMin((() => {
28745
28623
  init_lookResolution();
28746
28624
  init_siteStyleBlockPolicies();
28747
28625
  init_pageDesignIntent();
28748
- init_types$17();
28626
+ init_types$16();
28749
28627
  init_sectionTransitions();
28750
28628
  asPageFlowPresetId("flow:quiet"), noneBoundaryOption.id, asPageFlowPresetId("flow:balanced"), softBoundaryOption.id, asPageFlowPresetId("flow:expressive"), spaciousBoundaryOption.id;
28751
28629
  }));
28752
28630
  var init_resolver = __esmMin((() => {
28753
- init_types$17();
28631
+ init_types$16();
28754
28632
  }));
28755
28633
  var init_siteStyleThemeCompiler = __esmMin((() => {
28756
28634
  init_schema();
@@ -28760,19 +28638,17 @@ var init_siteStyleThemeCompiler = __esmMin((() => {
28760
28638
  init_resolveSelection();
28761
28639
  }));
28762
28640
  var init_previewCustomization = __esmMin((() => {
28763
- init_types$17();
28641
+ init_types$16();
28764
28642
  }));
28765
28643
  var init_previewCompiler = __esmMin((() => {
28766
28644
  init_schema();
28767
28645
  init_onColor();
28768
28646
  init_tokens();
28769
- init_personalities();
28770
28647
  init_curated();
28771
28648
  init_resolveSelection();
28772
- init_curatedChoices();
28773
28649
  init_curatedSiteStyles();
28774
28650
  init_resolver();
28775
- init_types$17();
28651
+ init_types$16();
28776
28652
  init_footerLooks();
28777
28653
  init_headerLooks();
28778
28654
  init_runtimeCompiler();
@@ -28782,6 +28658,7 @@ var init_previewCompiler = __esmMin((() => {
28782
28658
  init_pageDesignEditorModel();
28783
28659
  init_pageDesignIntent();
28784
28660
  init_previewCustomization();
28661
+ init_curatedChoices();
28785
28662
  }));
28786
28663
  var init_contentTemplateRuntimeCompiler = __esmMin((() => {
28787
28664
  init_pageDesignEditorModel();
@@ -28810,7 +28687,7 @@ var generatedPanelTreatments, generatedFlushTreatments, generatedFlushBleeds, ge
28810
28687
  var init_generatedSchemas = __esmMin((() => {
28811
28688
  init_curatedSiteStyles();
28812
28689
  init_sourceCatalogs();
28813
- init_types$17();
28690
+ init_types$16();
28814
28691
  generatedPanelTreatments = uniqueNonEmpty(generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "panel").map((frame) => frame.treatment));
28815
28692
  generatedFlushTreatments = uniqueNonEmpty(generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.treatment));
28816
28693
  generatedFlushBleeds = uniqueNonEmpty(generatedDesignOptionCatalog.contentFrames.filter((frame) => frame.kind === "flush-panel").map((frame) => frame.bleed));
@@ -28877,7 +28754,7 @@ var init_generatedDesignPipeline = __esmMin((() => {
28877
28754
  init_headerOpeningSection();
28878
28755
  init_resolver();
28879
28756
  init_runtimeCompiler();
28880
- init_types$17();
28757
+ init_types$16();
28881
28758
  }));
28882
28759
  function validateBlockSequence(snapshots, ctx) {
28883
28760
  for (const issue of collectBlockSequenceIssues(snapshots)) ctx.addIssue(issue);
@@ -28912,7 +28789,7 @@ function collectBlockSequenceIssues(snapshots) {
28912
28789
  }
28913
28790
  var nonEmptyStringSchema, blockContentVersionIdSchema, designBlockIdSchema, designPageIdSchema, designEntryIdSchema, blockOrderIndexSchema, publishedPageBlockSnapshotSchema, draftPageBlockSnapshotSchema, missingPageBlockSnapshotSchema, pageBlockSnapshotSchema, publishedPageBlockSequenceSchema, draftPageBlockSequenceSchema, publishedPageDesignVersionDataV1Schema, draftPageDesignVersionDataV1Schema;
28914
28791
  var init_pageDesignAuthority = __esmMin((() => {
28915
- init_types$17();
28792
+ init_types$16();
28916
28793
  init_pageDesignIntent();
28917
28794
  nonEmptyStringSchema = z$1.string().min(1);
28918
28795
  blockContentVersionIdSchema = nonEmptyStringSchema.transform(asBlockContentVersionId);
@@ -29183,7 +29060,7 @@ var init_site_styles = __esmMin((() => {
29183
29060
  init_tokenRecipes();
29184
29061
  init_siteStyleTypography();
29185
29062
  init_themeParity();
29186
- init_types$17();
29063
+ init_types$16();
29187
29064
  }));
29188
29065
  //#endregion
29189
29066
  //#region ../blocks/src/system/designCapabilities.ts
@@ -32019,6 +31896,37 @@ var init_heroCopy = __esmMin((() => {
32019
31896
  });
32020
31897
  }));
32021
31898
  //#endregion
31899
+ //#region ../blocks/src/system/constants/buttonRoles.ts
31900
+ /**
31901
+ * Temporary rollout boundary for persisted content written before issue #1220.
31902
+ * Authoring remains strict through `blockButtonRoleSchema`; this parser exists
31903
+ * only until the post-deploy role rewrite has been audited in production.
31904
+ */
31905
+ function canonicalizePersistedBlockButtonRole(value) {
31906
+ return value === "link" || value === "tertiary" ? "ghost" : value;
31907
+ }
31908
+ function isBlockButtonRole(value) {
31909
+ return blockButtonRoleSchema.safeParse(value).success;
31910
+ }
31911
+ var BLOCK_BUTTON_ROLES, blockButtonRoleSchema, persistedBlockButtonRoleSchema, BLOCK_BUTTON_ROLE_LABELS, BLOCK_BUTTON_ROLE_OPTIONS;
31912
+ var init_buttonRoles = __esmMin((() => {
31913
+ init_buttons();
31914
+ BLOCK_BUTTON_ROLES = PUBLIC_BUTTON_ROLES;
31915
+ blockButtonRoleSchema = z$1.enum(BLOCK_BUTTON_ROLES);
31916
+ persistedBlockButtonRoleSchema = z$1.preprocess((value) => typeof value === "string" ? canonicalizePersistedBlockButtonRole(value) : value, blockButtonRoleSchema);
31917
+ BLOCK_BUTTON_ROLE_LABELS = {
31918
+ primary: "Primary",
31919
+ secondary: "Secondary",
31920
+ outline: "Outline",
31921
+ ghost: "Ghost",
31922
+ accent: "Accent"
31923
+ };
31924
+ BLOCK_BUTTON_ROLE_OPTIONS = BLOCK_BUTTON_ROLES.map((value) => ({
31925
+ value,
31926
+ label: BLOCK_BUTTON_ROLE_LABELS[value]
31927
+ }));
31928
+ }));
31929
+ //#endregion
32022
31930
  //#region ../blocks/src/system/fields/button.ts
32023
31931
  function createButtonVariantField(options = {}) {
32024
31932
  return {
@@ -32037,20 +31945,7 @@ function createButtonVariantField(options = {}) {
32037
31945
  };
32038
31946
  }
32039
31947
  function createButtonGroup(options = {}) {
32040
- const { variants = [
32041
- {
32042
- value: "primary",
32043
- label: "Primary"
32044
- },
32045
- {
32046
- value: "secondary",
32047
- label: "Secondary"
32048
- },
32049
- {
32050
- value: "outline",
32051
- label: "Outline"
32052
- }
32053
- ], defaultVariant, includeSize = true, defaultSize = "md", showGroupLabel = false, groupId = "button", groupLabel = "Button", flattenInRepeater = true } = options;
31948
+ const { variants = BLOCK_BUTTON_ROLE_OPTIONS, defaultVariant, includeSize = true, defaultSize = "md", showGroupLabel = false, groupId = "button", groupLabel = "Button", flattenInRepeater = true } = options;
32054
31949
  const mainFields = [
32055
31950
  {
32056
31951
  id: "label",
@@ -32155,24 +32050,8 @@ function createButtonGroup(options = {}) {
32155
32050
  }
32156
32051
  var DEFAULT_THEME_BUTTON_VARIANTS;
32157
32052
  var init_button = __esmMin((() => {
32158
- DEFAULT_THEME_BUTTON_VARIANTS = [
32159
- {
32160
- value: "primary",
32161
- label: "Primary"
32162
- },
32163
- {
32164
- value: "secondary",
32165
- label: "Secondary"
32166
- },
32167
- {
32168
- value: "outline",
32169
- label: "Outline"
32170
- },
32171
- {
32172
- value: "link",
32173
- label: "Link"
32174
- }
32175
- ];
32053
+ init_buttonRoles();
32054
+ DEFAULT_THEME_BUTTON_VARIANTS = BLOCK_BUTTON_ROLE_OPTIONS;
32176
32055
  }));
32177
32056
  //#endregion
32178
32057
  //#region ../blocks/src/system/fields/ctas.ts
@@ -32215,29 +32094,7 @@ var init_ctaRow = __esmMin((() => {
32215
32094
  fields: [createCtasRepeater({
32216
32095
  label: "Calls to action",
32217
32096
  itemLabel: "CTA",
32218
- maxItems: 3,
32219
- button: { variants: [
32220
- {
32221
- value: "primary",
32222
- label: "Primary"
32223
- },
32224
- {
32225
- value: "secondary",
32226
- label: "Secondary"
32227
- },
32228
- {
32229
- value: "outline",
32230
- label: "Outline"
32231
- },
32232
- {
32233
- value: "link",
32234
- label: "Link"
32235
- },
32236
- {
32237
- value: "accent",
32238
- label: "Accent"
32239
- }
32240
- ] }
32097
+ maxItems: 3
32241
32098
  })],
32242
32099
  layout: [ctaRow({
32243
32100
  collectionPath: "content.ctas",
@@ -32260,10 +32117,6 @@ var init_heroCtaRow = __esmMin((() => {
32260
32117
  defaultValue: [],
32261
32118
  button: {
32262
32119
  variants: [
32263
- {
32264
- value: "default",
32265
- label: "Default"
32266
- },
32267
32120
  {
32268
32121
  value: "primary",
32269
32122
  label: "Primary"
@@ -32275,9 +32128,17 @@ var init_heroCtaRow = __esmMin((() => {
32275
32128
  {
32276
32129
  value: "outline",
32277
32130
  label: "Outline"
32131
+ },
32132
+ {
32133
+ value: "ghost",
32134
+ label: "Ghost"
32135
+ },
32136
+ {
32137
+ value: "accent",
32138
+ label: "Accent"
32278
32139
  }
32279
32140
  ],
32280
- defaultVariant: "default",
32141
+ defaultVariant: "primary",
32281
32142
  includeSize: true,
32282
32143
  defaultSize: "lg"
32283
32144
  }
@@ -33105,11 +32966,13 @@ var init_blogFeaturedPost = __esmMin((() => {
33105
32966
  as: "p",
33106
32967
  style: textColorStyle("text/80")
33107
32968
  }, bind("post.excerpt", { fallback: "Select a blog post to display its preview." })),
33108
- link({
33109
- className: "rb-inline-flex rb-items-center rb-caption rb-hover-opacity-80",
33110
- style: textColorStyle("primary"),
33111
- href: { $bind: { from: "post.path" } }
33112
- }, [text({ as: "strong" }, props({ value: "Read more →" }))])
32969
+ button({
32970
+ className: "rb-self-start",
32971
+ href: { $bind: { from: "post.path" } },
32972
+ variantId: "ghost",
32973
+ size: "sm",
32974
+ linkRequired: true
32975
+ }, [text({ as: "span" }, props({ value: "Read more" }))])
33113
32976
  ])], when("post")), stack({
33114
32977
  gap: "sm",
33115
32978
  className: "rb-rounded-xl rb-border rb-border-dashed rb-p-6",
@@ -34500,21 +34363,7 @@ var init_newsletterForm$1 = __esmMin((() => {
34500
34363
  createButtonVariantField({
34501
34364
  id: "buttonVariant",
34502
34365
  label: "Button style",
34503
- defaultValue: "primary",
34504
- variants: [
34505
- {
34506
- value: "primary",
34507
- label: "Primary"
34508
- },
34509
- {
34510
- value: "secondary",
34511
- label: "Secondary"
34512
- },
34513
- {
34514
- value: "outline",
34515
- label: "Outline"
34516
- }
34517
- ]
34366
+ defaultValue: "primary"
34518
34367
  }),
34519
34368
  {
34520
34369
  id: "successMessage",
@@ -35515,7 +35364,8 @@ function postExcerpt(className) {
35515
35364
  function postReadMore() {
35516
35365
  return button({
35517
35366
  href: { $bind: { from: "post.path" } },
35518
- className: "rb-self-start"
35367
+ className: "rb-self-start",
35368
+ variantId: "ghost"
35519
35369
  }, [text({ as: "span" }, bind("content.readMoreText", { fallback: "Read more" }), when("content.readMoreText")), text({
35520
35370
  as: "span",
35521
35371
  value: "Read more"
@@ -37175,7 +37025,7 @@ const uiTransforms = [
37175
37025
  ];
37176
37026
  //#endregion
37177
37027
  //#region ../theme-core/src/siteChromePlacement.ts
37178
- init_types$17();
37028
+ init_types$16();
37179
37029
  const SITE_CHROME_PLACEMENT_CLASSES = [
37180
37030
  "rb-sticky",
37181
37031
  "rb-fixed",
@@ -39436,31 +39286,7 @@ const featureCardsBlockDefinition = { manifest: createBlockManifest({
39436
39286
  label: "Calls to action",
39437
39287
  itemLabel: "CTA",
39438
39288
  maxItems: 1,
39439
- button: {
39440
- variants: [
39441
- {
39442
- value: "primary",
39443
- label: "Primary"
39444
- },
39445
- {
39446
- value: "secondary",
39447
- label: "Secondary"
39448
- },
39449
- {
39450
- value: "outline",
39451
- label: "Outline"
39452
- },
39453
- {
39454
- value: "ghost",
39455
- label: "Ghost"
39456
- },
39457
- {
39458
- value: "link",
39459
- label: "Link"
39460
- }
39461
- ],
39462
- defaultVariant: "ghost"
39463
- }
39289
+ button: { defaultVariant: "ghost" }
39464
39290
  })
39465
39291
  ] }
39466
39292
  },
@@ -41666,18 +41492,10 @@ var init_pricing$1 = __esmMin((() => {
41666
41492
  var previewStageSchema, registrationButtonVariantSchema, eventButtonVariantSchema, eventLayoutSchema, eventCalendarDisplayModeSchema, eventCalendarDefaultViewSchema, columnOptionSchema, weekStartSchema, filterAutoShowSchema, calendarTabViewsSchema;
41667
41493
  var init_contract_schemas = __esmMin((() => {
41668
41494
  init_events$1();
41495
+ init_buttonRoles();
41669
41496
  previewStageSchema = z$1.enum(["preview", "published"]);
41670
- registrationButtonVariantSchema = z$1.enum([
41671
- "primary",
41672
- "secondary",
41673
- "outline"
41674
- ]);
41675
- eventButtonVariantSchema = z$1.enum([
41676
- "primary",
41677
- "secondary",
41678
- "outline",
41679
- "link"
41680
- ]);
41497
+ registrationButtonVariantSchema = blockButtonRoleSchema;
41498
+ eventButtonVariantSchema = persistedBlockButtonRoleSchema;
41681
41499
  eventLayoutSchema = z$1.enum(eventCalendarListLayoutValues);
41682
41500
  eventCalendarDisplayModeSchema = z$1.enum(eventCalendarDisplayModeValues);
41683
41501
  eventCalendarDefaultViewSchema = z$1.enum(eventCalendarDefaultViewValues);
@@ -42153,23 +41971,7 @@ const eventRegistrationBlockDefinition = {
42153
41971
  defaultValue: "Complete Registration",
42154
41972
  maxLength: 40
42155
41973
  },
42156
- createButtonVariantField({
42157
- description: "Choose a button style from your theme",
42158
- variants: [
42159
- {
42160
- value: "primary",
42161
- label: "Primary"
42162
- },
42163
- {
42164
- value: "secondary",
42165
- label: "Secondary"
42166
- },
42167
- {
42168
- value: "outline",
42169
- label: "Outline"
42170
- }
42171
- ]
42172
- })
41974
+ createButtonVariantField()
42173
41975
  ],
42174
41976
  layout: [styledSection({
42175
41977
  baseClass: "",
@@ -42703,23 +42505,7 @@ const courseRegistrationBlockDefinition = {
42703
42505
  defaultValue: "Sign up",
42704
42506
  maxLength: 40
42705
42507
  },
42706
- createButtonVariantField({
42707
- description: "Choose a button style from your theme",
42708
- variants: [
42709
- {
42710
- value: "primary",
42711
- label: "Primary"
42712
- },
42713
- {
42714
- value: "secondary",
42715
- label: "Secondary"
42716
- },
42717
- {
42718
- value: "outline",
42719
- label: "Outline"
42720
- }
42721
- ]
42722
- })
42508
+ createButtonVariantField()
42723
42509
  ],
42724
42510
  layout: [styledSection({
42725
42511
  baseClass: "",
@@ -48130,6 +47916,8 @@ init_fragments$1();
48130
47916
  init_boxStyles$1();
48131
47917
  init_defineBlock();
48132
47918
  init_shared$4();
47919
+ init_buttonRoles();
47920
+ init_button();
48133
47921
  init_shared$3();
48134
47922
  const publicRouteCandidatesSchema = z$1.object({ routes: z$1.array(z$1.object({
48135
47923
  entityId: z$1.string(),
@@ -48312,36 +48100,7 @@ const offeringsPreviewFields = [
48312
48100
  ui: { intent: "content" },
48313
48101
  schema: { fields: groupOverrideFields }
48314
48102
  },
48315
- {
48316
- id: "buttonVariant",
48317
- type: "select",
48318
- label: "Button style",
48319
- required: false,
48320
- multiple: false,
48321
- defaultValue: "primary",
48322
- options: [
48323
- {
48324
- value: "primary",
48325
- label: "Primary"
48326
- },
48327
- {
48328
- value: "secondary",
48329
- label: "Secondary"
48330
- },
48331
- {
48332
- value: "outline",
48333
- label: "Outline"
48334
- },
48335
- {
48336
- value: "link",
48337
- label: "Link"
48338
- }
48339
- ],
48340
- ui: {
48341
- intent: "display",
48342
- widget: "buttonVariant"
48343
- }
48344
- },
48103
+ createButtonVariantField(),
48345
48104
  {
48346
48105
  id: "buttonText",
48347
48106
  type: "text",
@@ -48547,7 +48306,7 @@ function normalizeOfferingsPreviewGroupOverride(value) {
48547
48306
  return [override];
48548
48307
  }
48549
48308
  function isButtonVariant(value) {
48550
- return value === "primary" || value === "secondary" || value === "outline" || value === "link" || value === null;
48309
+ return value === null || isBlockButtonRole(value);
48551
48310
  }
48552
48311
  function normalizeCardStylesContent(value) {
48553
48312
  return isRecord$37(value) || value === null ? value : void 0;
@@ -50624,6 +50383,7 @@ function getShopDisplayForItems(render, items) {
50624
50383
  }
50625
50384
  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;
50626
50385
  var init_shop_interactive = __esmMin((() => {
50386
+ init_buttonRoles();
50627
50387
  init_shop_shared();
50628
50388
  init_shared$1();
50629
50389
  init_display();
@@ -50661,12 +50421,7 @@ var init_shop_interactive = __esmMin((() => {
50661
50421
  showPrices: z$1.boolean().optional(),
50662
50422
  showValidityPeriod: z$1.boolean().optional(),
50663
50423
  showPricePerCredit: z$1.boolean().nullable().optional(),
50664
- buttonVariant: z$1.enum([
50665
- "primary",
50666
- "secondary",
50667
- "outline",
50668
- "link"
50669
- ]).optional(),
50424
+ buttonVariant: blockButtonRoleSchema.optional(),
50670
50425
  passesHeading: z$1.string().optional(),
50671
50426
  membershipsHeading: z$1.string().optional(),
50672
50427
  buyButtonText: z$1.string().optional(),
@@ -50811,12 +50566,7 @@ var init_shop_interactive = __esmMin((() => {
50811
50566
  passes: z$1.array(publicPassProductSchema),
50812
50567
  memberships: z$1.array(publicMembershipProductSchema),
50813
50568
  passPurchaseMode: z$1.enum(["add_to_cart", "buy_now"]),
50814
- buttonVariant: z$1.enum([
50815
- "primary",
50816
- "secondary",
50817
- "outline",
50818
- "link"
50819
- ])
50569
+ buttonVariant: blockButtonRoleSchema
50820
50570
  });
50821
50571
  productListHydrationSchema = z$1.object({
50822
50572
  products: z$1.array(publicProductSchema),
@@ -52290,6 +52040,7 @@ var init_newsletter_form_interactive = __esmMin((() => {
52290
52040
  init_runtime();
52291
52041
  init_newsletter_signup_destination();
52292
52042
  init_newsletter_form_types();
52043
+ init_buttonRoles();
52293
52044
  newsletterPresetSchema = z$1.enum([
52294
52045
  "emailOnly",
52295
52046
  "emailName",
@@ -52297,11 +52048,7 @@ var init_newsletter_form_interactive = __esmMin((() => {
52297
52048
  "emailNameCompany"
52298
52049
  ]);
52299
52050
  newsletterDestinationProviderSchema = z$1.enum(["riverbank", "mailchimp"]);
52300
- newsletterButtonVariantSchema = z$1.enum([
52301
- "primary",
52302
- "secondary",
52303
- "outline"
52304
- ]);
52051
+ newsletterButtonVariantSchema = blockButtonRoleSchema;
52305
52052
  newsletterFieldSchema = z$1.object({
52306
52053
  id: z$1.string(),
52307
52054
  type: z$1.enum(["email", "text"]),
@@ -55206,6 +54953,7 @@ function renderMark(mark, key, child) {
55206
54953
  //#endregion
55207
54954
  //#region ../blocks/src/system/runtime/nodes/basic.tsx
55208
54955
  init_buttons();
54956
+ init_buttonRoles();
55209
54957
  const TextNode = ({ value, children, blockId: _blockId, blockKind: _blockKind, blockContent, fragmentRegistry: _fragmentRegistry, pathBase: _pathBase, inlineTextFallbackPath, ...rest }) => {
55210
54958
  const inlineText = parseInlineTextFromUnknown(value);
55211
54959
  if (inlineText.ok && !isInlineTextEmpty(inlineText.value)) return /* @__PURE__ */ jsx(Text$2, {
@@ -55264,7 +55012,7 @@ const ButtonNode = ({ value, children, href, variantId = "primary", size = "md",
55264
55012
  return null;
55265
55013
  }
55266
55014
  const extraClassName = affordanceIcon ? [className, AFFORDANCE_SUPPRESS_CLASS].filter(Boolean).join(" ") : className;
55267
- const resolvedVariantId = parseThemeButtonVariantId(variantId);
55015
+ const resolvedVariantId = parseThemeButtonVariantId(canonicalizePersistedBlockButtonRole(variantId));
55268
55016
  const combinedClassName = resolvedVariantId ? themeButtonClassName({
55269
55017
  variant: resolvedVariantId,
55270
55018
  size,
@@ -55372,12 +55120,7 @@ init_colorStyles();
55372
55120
  init_media$1();
55373
55121
  init_buttons();
55374
55122
  init_media();
55375
- const FILE_DOWNLOAD_BUTTON_VARIANTS = [
55376
- "primary",
55377
- "secondary",
55378
- "outline",
55379
- "link"
55380
- ];
55123
+ init_buttonRoles();
55381
55124
  function isDownloadableMediaType(type) {
55382
55125
  return typeof type === "string" && PUBLIC_DOWNLOAD_MEDIA_TYPES.includes(type);
55383
55126
  }
@@ -55409,7 +55152,7 @@ function iconForMediaType(type) {
55409
55152
  }
55410
55153
  }
55411
55154
  function normalizeButtonVariant(value) {
55412
- return typeof value === "string" && FILE_DOWNLOAD_BUTTON_VARIANTS.includes(value) ? value : "primary";
55155
+ return isBlockButtonRole(value) ? value : "primary";
55413
55156
  }
55414
55157
  function FileDownloadNode({ value, title, description, buttonLabel, buttonVariant, className }) {
55415
55158
  if (!value || !isDownloadableMediaType(value.type)) return null;
@@ -59923,8 +59666,11 @@ function LocationMapView({ addressText, location, zoom, heightPx, showAddressTex
59923
59666
  href: directionsUrl,
59924
59667
  target: "_blank",
59925
59668
  rel: "noreferrer",
59926
- 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",
59927
- style: mergeStyles(borderColorStyle("border"), backgroundColorStyle("surface"), textColorStyle("text")),
59669
+ className: themeButtonClassName({
59670
+ variant: "ghost",
59671
+ size: "sm",
59672
+ extraClassName: "rb-w-fit"
59673
+ }),
59928
59674
  children: directionsLabel
59929
59675
  }) : null
59930
59676
  ]
@@ -59932,6 +59678,7 @@ function LocationMapView({ addressText, location, zoom, heightPx, showAddressTex
59932
59678
  }
59933
59679
  var init_location_map_view = __esmMin((() => {
59934
59680
  init_colorStyles();
59681
+ init_buttons();
59935
59682
  init_location_map_shared();
59936
59683
  }));
59937
59684
  //#endregion
@@ -61299,6 +61046,7 @@ function cardTreatmentClass(value) {
61299
61046
  }
61300
61047
  //#endregion
61301
61048
  //#region ../blocks/src/system/runtime/nodes/weekly-slot-availability.view.tsx
61049
+ init_buttons();
61302
61050
  function pluralizeWeeks(count) {
61303
61051
  return count === 1 ? "1 upcoming week" : `${count} upcoming weeks`;
61304
61052
  }
@@ -61374,7 +61122,11 @@ function WeeklySlotAvailabilityView({ availability, loading = false, error, empt
61374
61122
  ]
61375
61123
  }),
61376
61124
  resolvedCtaUrl ? /* @__PURE__ */ jsx("a", {
61377
- className: "weekly-slot-availability__cta",
61125
+ className: themeButtonClassName({
61126
+ variant: "ghost",
61127
+ size: "sm",
61128
+ extraClassName: "weekly-slot-availability__cta"
61129
+ }),
61378
61130
  href: buildSlotCtaUrl(resolvedCtaUrl, slot),
61379
61131
  "aria-label": buildSlotCtaLabel(resolvedCtaText, slot),
61380
61132
  children: resolvedCtaText
@@ -66269,7 +66021,7 @@ z$1.object({
66269
66021
  }).passthrough();
66270
66022
  //#endregion
66271
66023
  //#region ../theme-core/src/siteChrome.tsx
66272
- init_types$17();
66024
+ init_types$16();
66273
66025
  //#endregion
66274
66026
  //#region ../blocks/src/system/runtime/bindings.ts
66275
66027
  init_node();
@@ -66519,6 +66271,7 @@ function parseBackgroundColorToken(value) {
66519
66271
  }
66520
66272
  //#endregion
66521
66273
  //#region ../blocks/src/index.ts
66274
+ init_buttonRoles();
66522
66275
  init_palette();
66523
66276
  init_generateShades();
66524
66277
  init_utils$6();
@@ -79840,6 +79593,7 @@ function normalizedPagePath(slug) {
79840
79593
  //#endregion
79841
79594
  //#region ../site-commands/src/commands.ts
79842
79595
  init_palette();
79596
+ init_buttons();
79843
79597
  const commandRefSchema = z$1.string().regex(commandRefPattern).transform((value) => value);
79844
79598
  const siteCommandSiteRefSchema = z$1.string().regex(siteCommandSiteRefPattern).transform((value) => value);
79845
79599
  const resourceRefSchema = (kind) => z$1.string().regex(new RegExp(`^${kind}:[a-z0-9][a-z0-9-]*$`, "u")).transform((value) => value);
@@ -80107,8 +79861,8 @@ const siteStyleSelectionChangeSchema = z$1.discriminatedUnion("kind", [
80107
79861
  siteStyleId: siteStyleRefSchema
80108
79862
  }).strict(),
80109
79863
  z$1.object({
80110
- kind: z$1.literal("set-button-personality"),
80111
- buttonPersonalityId: styleCatalogIdSchema.nullable()
79864
+ kind: z$1.literal("set-button-style"),
79865
+ buttonStyleSelection: buttonStyleSelectionSchema.nullable()
80112
79866
  }).strict(),
80113
79867
  z$1.object({
80114
79868
  kind: z$1.literal("set-palette"),
@@ -152573,7 +152327,7 @@ function resolveHasCoursePayment(pricing) {
152573
152327
  if (pricing.selectedOption) return pricing.selectedRequiresPayment;
152574
152328
  return pricing.hasPaidSelection;
152575
152329
  }
152576
- function useCourseRegistrationWizard(props) {
152330
+ function useCourseRegistrationWizard(props, options = {}) {
152577
152331
  const api = useBlockApi();
152578
152332
  const { contentEntry, courses, entrySubrouteContext, subject } = props;
152579
152333
  const scopedCourses = useMemo(() => {
@@ -152820,21 +152574,34 @@ function useCourseRegistrationWizard(props) {
152820
152574
  setStep("enter-details");
152821
152575
  };
152822
152576
  const handleSubmit = async () => {
152823
- if (!selectedCourse) return;
152824
- if (!handleValidateForm()) return;
152577
+ if (!selectedCourse) return {
152578
+ kind: "blocked",
152579
+ message: "Choose an available set of dates to continue."
152580
+ };
152581
+ if (!handleValidateForm()) return { kind: "validation-failed" };
152825
152582
  if (missingPricingSelectionMessage) {
152826
152583
  setErrorMessage(missingPricingSelectionMessage);
152827
152584
  setStep("error");
152828
- return;
152585
+ return {
152586
+ kind: "blocked",
152587
+ message: missingPricingSelectionMessage
152588
+ };
152829
152589
  }
152830
152590
  const requiresPayment = selectedCoursePricing?.selectedRequiresPayment ?? false;
152831
152591
  const canUseMembership = requiresPayment && selectedCourse.acceptsMemberships && portalAuthState === "authenticated" && eligibleMemberships.length > 0;
152832
152592
  if (showSpamProtection && !altchaSolution) {
152833
- setErrorMessage("Please complete the verification check.");
152593
+ const message = "Please complete the verification check.";
152594
+ setErrorMessage(message);
152834
152595
  setStep("error");
152835
- return;
152596
+ return {
152597
+ kind: "blocked",
152598
+ message
152599
+ };
152836
152600
  }
152837
- if (!waitlistClaim.claim && courseEligibility?.isFull && !courseEligibility.canJoinWaitlist && showSoldOutCourseError()) return;
152601
+ if (!waitlistClaim.claim && courseEligibility?.isFull && !courseEligibility.canJoinWaitlist && showSoldOutCourseError()) return {
152602
+ kind: "blocked",
152603
+ message: courseEligibility.reason ?? "This course is fully booked."
152604
+ };
152838
152605
  if (courseEligibility?.canJoinWaitlist) {
152839
152606
  setStep("submitting");
152840
152607
  try {
@@ -152855,15 +152622,20 @@ function useCourseRegistrationWizard(props) {
152855
152622
  usedMembership: false
152856
152623
  });
152857
152624
  setStep(result.status === "waitlist" ? "waitlist" : "success");
152625
+ return { kind: "state-updated" };
152858
152626
  } catch (error) {
152859
- setErrorMessage(error instanceof Error ? error.message : "Booking failed");
152627
+ const message = error instanceof Error ? error.message : "Booking failed";
152628
+ setErrorMessage(message);
152860
152629
  setStep("error");
152630
+ return {
152631
+ kind: "failed",
152632
+ message
152633
+ };
152861
152634
  }
152862
- return;
152863
152635
  }
152864
152636
  if (requiresPayment && canUseMembership) {
152865
152637
  setStep("select-payment");
152866
- return;
152638
+ return { kind: "state-updated" };
152867
152639
  }
152868
152640
  if (requiresPayment) {
152869
152641
  setStep("submitting");
@@ -152889,16 +152661,24 @@ function useCourseRegistrationWizard(props) {
152889
152661
  usedMembership: false
152890
152662
  });
152891
152663
  setStep("success");
152892
- return;
152664
+ return { kind: "state-updated" };
152893
152665
  }
152894
152666
  if (!checkoutResult.checkoutUrl) throw new Error("Checkout URL missing");
152895
152667
  setStep("redirecting");
152896
- window.location.href = checkoutResult.checkoutUrl;
152897
- return;
152668
+ if (options.onCheckoutRedirect) options.onCheckoutRedirect(checkoutResult.checkoutUrl);
152669
+ else window.location.href = checkoutResult.checkoutUrl;
152670
+ return {
152671
+ kind: "checkout-redirect",
152672
+ checkoutUrl: checkoutResult.checkoutUrl
152673
+ };
152898
152674
  } catch (error) {
152899
- setErrorMessage(error instanceof Error ? error.message : "Checkout failed");
152675
+ const message = error instanceof Error ? error.message : "Checkout failed";
152676
+ setErrorMessage(message);
152900
152677
  setStep("error");
152901
- return;
152678
+ return {
152679
+ kind: "failed",
152680
+ message
152681
+ };
152902
152682
  }
152903
152683
  }
152904
152684
  setStep("submitting");
@@ -152920,35 +152700,58 @@ function useCourseRegistrationWizard(props) {
152920
152700
  usedMembership: result.paymentMethod === "membership"
152921
152701
  });
152922
152702
  setStep(result.status === "waitlist" ? "waitlist" : "success");
152703
+ return { kind: "state-updated" };
152923
152704
  } catch (error) {
152924
- setErrorMessage(error instanceof Error ? error.message : "Booking failed");
152705
+ const message = error instanceof Error ? error.message : "Booking failed";
152706
+ setErrorMessage(message);
152925
152707
  setStep("error");
152708
+ return {
152709
+ kind: "failed",
152710
+ message
152711
+ };
152926
152712
  }
152927
152713
  };
152928
152714
  const handlePaymentContinue = async () => {
152929
- if (!selectedCourse) return;
152930
- if (!handleValidateForm()) return;
152715
+ if (!selectedCourse) return {
152716
+ kind: "blocked",
152717
+ message: "Choose an available set of dates to continue."
152718
+ };
152719
+ if (!handleValidateForm()) return { kind: "validation-failed" };
152931
152720
  if (missingPricingSelectionMessage) {
152932
152721
  setErrorMessage(missingPricingSelectionMessage);
152933
152722
  setStep("error");
152934
- return;
152723
+ return {
152724
+ kind: "blocked",
152725
+ message: missingPricingSelectionMessage
152726
+ };
152935
152727
  }
152936
152728
  const requiresPayment = selectedCoursePricing?.selectedRequiresPayment ?? false;
152937
- if (!waitlistClaim.claim && courseEligibility?.isFull && !courseEligibility.canJoinWaitlist && showSoldOutCourseError()) return;
152729
+ if (!waitlistClaim.claim && courseEligibility?.isFull && !courseEligibility.canJoinWaitlist && showSoldOutCourseError()) return {
152730
+ kind: "blocked",
152731
+ message: courseEligibility.reason ?? "This course is fully booked."
152732
+ };
152938
152733
  if (!requiresPayment) {
152939
152734
  setStep("enter-details");
152940
- return;
152735
+ return { kind: "state-updated" };
152941
152736
  }
152942
152737
  if (showSpamProtection && !altchaSolution) {
152943
- setErrorMessage("Please complete the verification check.");
152738
+ const message = "Please complete the verification check.";
152739
+ setErrorMessage(message);
152944
152740
  setStep("error");
152945
- return;
152741
+ return {
152742
+ kind: "blocked",
152743
+ message
152744
+ };
152946
152745
  }
152947
152746
  if (paymentChoice === "membership") {
152948
152747
  if (!selectedMembershipId) {
152949
- setErrorMessage("Select a membership to enroll.");
152748
+ const message = "Select a membership to sign up.";
152749
+ setErrorMessage(message);
152950
152750
  setStep("error");
152951
- return;
152751
+ return {
152752
+ kind: "blocked",
152753
+ message
152754
+ };
152952
152755
  }
152953
152756
  setStep("submitting");
152954
152757
  try {
@@ -152970,11 +152773,16 @@ function useCourseRegistrationWizard(props) {
152970
152773
  usedMembership: true
152971
152774
  });
152972
152775
  setStep(result.status === "waitlist" ? "waitlist" : "success");
152776
+ return { kind: "state-updated" };
152973
152777
  } catch (error) {
152974
- setErrorMessage(error instanceof Error ? error.message : "Booking failed");
152778
+ const message = error instanceof Error ? error.message : "Booking failed";
152779
+ setErrorMessage(message);
152975
152780
  setStep("error");
152781
+ return {
152782
+ kind: "failed",
152783
+ message
152784
+ };
152976
152785
  }
152977
- return;
152978
152786
  }
152979
152787
  setStep("submitting");
152980
152788
  try {
@@ -152999,14 +152807,24 @@ function useCourseRegistrationWizard(props) {
152999
152807
  usedMembership: false
153000
152808
  });
153001
152809
  setStep("success");
153002
- return;
152810
+ return { kind: "state-updated" };
153003
152811
  }
153004
152812
  if (!checkoutResult.checkoutUrl) throw new Error("Checkout URL missing");
153005
152813
  setStep("redirecting");
153006
- window.location.href = checkoutResult.checkoutUrl;
152814
+ if (options.onCheckoutRedirect) options.onCheckoutRedirect(checkoutResult.checkoutUrl);
152815
+ else window.location.href = checkoutResult.checkoutUrl;
152816
+ return {
152817
+ kind: "checkout-redirect",
152818
+ checkoutUrl: checkoutResult.checkoutUrl
152819
+ };
153007
152820
  } catch (error) {
153008
- setErrorMessage(error instanceof Error ? error.message : "Checkout failed");
152821
+ const message = error instanceof Error ? error.message : "Checkout failed";
152822
+ setErrorMessage(message);
153009
152823
  setStep("error");
152824
+ return {
152825
+ kind: "failed",
152826
+ message
152827
+ };
153010
152828
  }
153011
152829
  };
153012
152830
  const handleRetry = () => {
@@ -153543,11 +153361,20 @@ var init_course_registration_client = __esmMin((() => {
153543
153361
  init_CourseRegistrationErrorBoundary();
153544
153362
  init_CourseRegistrationWizard();
153545
153363
  }));
153364
+ var init_whole_series_registration_headless_planning = __esmMin((() => {}));
153365
+ var init_useHeadlessWholeSeriesRegistrationFlow = __esmMin((() => {
153366
+ init_src();
153367
+ init_api();
153368
+ init_useCourseRegistrationWizard();
153369
+ init_whole_series_registration_headless_planning();
153370
+ }));
153546
153371
  //#endregion
153547
153372
  //#region ../blocks/src/client/course-registration.ts
153548
153373
  var init_course_registration = __esmMin((() => {
153549
153374
  init_api();
153550
153375
  init_course_registration_client();
153376
+ init_useHeadlessWholeSeriesRegistrationFlow();
153377
+ init_client();
153551
153378
  }));
153552
153379
  //#endregion
153553
153380
  //#region src/rendering/islands/enhancers/courseRegistration.tsx
@@ -155768,7 +155595,7 @@ var SimpleCache = class {
155768
155595
  * 1. This constant
155769
155596
  * 2. The "version" field in package.json
155770
155597
  */
155771
- const SDK_VERSION = "0.109.0";
155598
+ const SDK_VERSION = "0.111.0";
155772
155599
  //#endregion
155773
155600
  //#region src/client/error.ts
155774
155601
  /**
@@ -163996,7 +163823,7 @@ function buildStyleSelectionApplyInputFromOptions(options) {
163996
163823
  const siteStyle = getCuratedSiteStyle(asSiteStyleId(options.siteStyleId));
163997
163824
  if (!siteStyle) throw new Error(`Unknown curated site style: ${options.siteStyleId}`);
163998
163825
  return buildStyleSelectionInputFromOptions(options, {
163999
- buttonPersonalityId: null,
163826
+ buttonStyleSelection: null,
164000
163827
  typography: siteStyle.typography,
164001
163828
  headerLookId: null,
164002
163829
  headerLayoutId: siteStyle?.defaultHeaderSelection.layoutId ?? guaranteedFallbackHeaderLayoutId,
@@ -164019,8 +163846,8 @@ function buildStyleSelectionInputFromOptions(options, defaults, paletteCommand,
164019
163846
  siteStyleId: options.siteStyleId
164020
163847
  },
164021
163848
  {
164022
- kind: "set-button-personality",
164023
- buttonPersonalityId: options.buttonPersonalityId ?? defaults.buttonPersonalityId
163849
+ kind: "set-button-style",
163850
+ buttonStyleSelection: parseButtonStyleSelection(options, defaults)
164024
163851
  },
164025
163852
  {
164026
163853
  kind: "set-palette",
@@ -164048,9 +163875,28 @@ function buildStyleSelectionInputFromOptions(options, defaults, paletteCommand,
164048
163875
  selectionId
164049
163876
  };
164050
163877
  }
163878
+ function parseButtonStyleSelection(options, defaults) {
163879
+ if (options.buttonStyleId === void 0) {
163880
+ if (options.buttonStyleParameters !== void 0) throw new Error("--button-style-parameters requires --button-style-id");
163881
+ return defaults.buttonStyleSelection;
163882
+ }
163883
+ if (!isButtonStyleId(options.buttonStyleId)) throw new Error(`Unknown button style: ${options.buttonStyleId}`);
163884
+ if (options.buttonStyleParameters === void 0) return createDefaultButtonStyleSelection(options.buttonStyleId);
163885
+ let parameters;
163886
+ try {
163887
+ parameters = JSON.parse(options.buttonStyleParameters);
163888
+ } catch (error) {
163889
+ const detail = error instanceof Error ? error.message : String(error);
163890
+ throw new Error(`Invalid --button-style-parameters JSON: ${detail}`);
163891
+ }
163892
+ return buttonStyleSelectionSchema.parse({
163893
+ styleId: options.buttonStyleId,
163894
+ parameters
163895
+ });
163896
+ }
164051
163897
  function styleSelectionInitializationDefaults(siteStyle) {
164052
163898
  return {
164053
- buttonPersonalityId: defaultButtonPersonalityForSiteStyle(siteStyle),
163899
+ buttonStyleSelection: defaultButtonStyleSelectionForSiteStyle(siteStyle),
164054
163900
  typography: siteStyle.typography,
164055
163901
  headerLookId: findLegacyHeaderLookIdForSelection(siteStyle.defaultHeaderSelection),
164056
163902
  headerLayoutId: siteStyle.defaultHeaderSelection.layoutId,
@@ -164096,9 +163942,9 @@ function buildStyleCatalogListRows(styles = curatedSiteStyles, options = {}) {
164096
163942
  id: choice.id,
164097
163943
  label: findCuratedPalette(choice.id)?.name ?? choice.id
164098
163944
  })),
164099
- buttonPersonalities: style.buttonPersonalityChoices.map((choice) => ({
164100
- id: choice.id,
164101
- label: findButtonPersonality(choice.id)?.name ?? choice.id
163945
+ buttonStyles: style.buttonStyleChoices.map((choice) => ({
163946
+ id: choice.styleId,
163947
+ label: findButtonStyleRecipe(choice.styleId)?.accessibilityLabel ?? choice.styleId
164102
163948
  })),
164103
163949
  typography: {
164104
163950
  body: style.typography.body.family,
@@ -164127,7 +163973,7 @@ function formatStyleCatalogListRow(row) {
164127
163973
  row.siteStyleId,
164128
163974
  row.name,
164129
163975
  formatChoiceList(row.palettes),
164130
- formatChoiceList(row.buttonPersonalities),
163976
+ formatChoiceList(row.buttonStyles),
164131
163977
  `${row.typography.heading} / ${row.typography.body}`,
164132
163978
  formatChoiceList(row.headerLayouts),
164133
163979
  formatChoiceList(row.headerStyles),
@@ -164184,7 +164030,7 @@ const listCommand = new Command("list").description("List curated site styles an
164184
164030
  "Footer Looks"
164185
164031
  ], rows.map(formatStyleCatalogListRow));
164186
164032
  }));
164187
- const applyCommand = new Command("apply").description("Apply a curated site-style selection").requiredOption("--site-style-id <id>", "Site style ID, e.g. site-style:calm-studio").requiredOption("--base-selection-version <version>", "Current style selection version").option("--selection-id <id>", "Current style selection row ID").option("--button-personality-id <id>", "Button personality ID").option("--palette-command <json>", "Palette command JSON").option("--typography <json>", "Complete typography JSON (defaults to the site style typography)").option("--header-look-id <id>", "Legacy header look bridge ID").option("--header-layout-id <id>", "Header layout ID").option("--header-style-id <id>", "Header style ID").option("--footer-look-id <id>", "Footer look ID").action(withErrorHandling(async (options, command) => {
164033
+ const applyCommand = new Command("apply").description("Apply a curated site-style selection").requiredOption("--site-style-id <id>", "Site style ID, e.g. site-style:calm-studio").requiredOption("--base-selection-version <version>", "Current style selection version").option("--selection-id <id>", "Current style selection row ID").option("--button-style-id <id>", "Button style ID").option("--button-style-parameters <json>", "Button style parameter object as JSON").option("--palette-command <json>", "Palette command JSON").option("--typography <json>", "Complete typography JSON (defaults to the site style typography)").option("--header-look-id <id>", "Legacy header look bridge ID").option("--header-layout-id <id>", "Header layout ID").option("--header-style-id <id>", "Header style ID").option("--footer-look-id <id>", "Footer look ID").action(withErrorHandling(async (options, command) => {
164188
164034
  const { output, client } = createCommandContext(command);
164189
164035
  const input = buildStyleSelectionApplyInputFromOptions(options);
164190
164036
  const commandIr = buildApplySiteStyleSelectionCommand(input);
@@ -164198,7 +164044,7 @@ const applyCommand = new Command("apply").description("Apply a curated site-styl
164198
164044
  savedAt: result.savedAt
164199
164045
  });
164200
164046
  }));
164201
- const initCommand = new Command("init").description("Initialize a fresh SDK site with a curated site style").requiredOption("--site-style-id <id>", "Site style ID, e.g. site-style:calm-studio").option("--button-personality-id <id>", "Button personality ID").option("--palette-command <json>", "Complete manual create-site palette command JSON").option("--typography <json>", "Complete typography JSON (defaults to the site style typography)").option("--header-look-id <id>", "Legacy header look bridge ID").option("--header-layout-id <id>", "Header layout ID").option("--header-style-id <id>", "Header style ID").option("--footer-look-id <id>", "Footer look ID").action(withErrorHandling(executeStyleInit));
164047
+ const initCommand = new Command("init").description("Initialize a fresh SDK site with a curated site style").requiredOption("--site-style-id <id>", "Site style ID, e.g. site-style:calm-studio").option("--button-style-id <id>", "Button style ID").option("--button-style-parameters <json>", "Button style parameter object as JSON").option("--palette-command <json>", "Complete manual create-site palette command JSON").option("--typography <json>", "Complete typography JSON (defaults to the site style typography)").option("--header-look-id <id>", "Legacy header look bridge ID").option("--header-layout-id <id>", "Header layout ID").option("--header-style-id <id>", "Header style ID").option("--footer-look-id <id>", "Footer look ID").action(withErrorHandling(executeStyleInit));
164202
164048
  const styleCommand = new Command("style").description("Manage curated site styles").addHelpText("after", `
164203
164049
  Examples:
164204
164050
  $ riverbankcms style init --site-style-id site-style:calm-studio