@riverbankcms/sdk 0.108.0 → 0.109.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 (189) hide show
  1. package/README.md +21 -1
  2. package/dist/{PreviewEditorSidebar-BBT-kZAM.mjs → PreviewEditorSidebar-DWqwfy3_.mjs} +7 -22
  3. package/dist/{PreviewEditorUI-D69xNKT2.mjs → PreviewEditorUI-B7OL4sfR.mjs} +3 -3
  4. package/dist/{PreviewQueryProvider-RRu7wyQ5.mjs → PreviewQueryProvider-D0y2l8JN.mjs} +1 -1
  5. package/dist/{SdkPreviewModeRuntime-CuDjXH6o.mjs → SdkPreviewModeRuntime-D8Gt9Gbe.mjs} +212 -153
  6. package/dist/{SiteChromeCustomizeContext-BQUY2dEk.mjs → SiteChromeCustomizeContext-DUpalEdL.mjs} +1919 -1032
  7. package/dist/_dts/ai/src/contracts/proposals.d.ts +11244 -10741
  8. package/dist/_dts/api/src/bookingAdjustments.d.ts +5 -0
  9. package/dist/_dts/api/src/bookingOperations.d.ts +4 -0
  10. package/dist/_dts/api/src/bookingRecords.d.ts +2 -17
  11. package/dist/_dts/api/src/bookingRefundOutcomes.d.ts +6 -6
  12. package/dist/_dts/api/src/common/envelope.d.ts +7 -0
  13. package/dist/_dts/api/src/courses.d.ts +1 -0
  14. package/dist/_dts/api/src/customerMembershipOutcomes.d.ts +5 -5
  15. package/dist/_dts/api/src/endpoints.d.ts +35 -0
  16. package/dist/_dts/api/src/index.d.ts +2 -2
  17. package/dist/_dts/api/src/participantMessaging.d.ts +18 -12
  18. package/dist/_dts/api/src/publicExperienceEndpoints.d.ts +1 -0
  19. package/dist/_dts/api/src/sdkContracts.d.ts +247 -1
  20. package/dist/_dts/api/src/siteInfrastructure.d.ts +13 -0
  21. package/dist/_dts/api/src/siteManagementEndpoints.d.ts +1 -5
  22. package/dist/_dts/api/src/sitePlatformEndpoints.d.ts +29 -1
  23. package/dist/_dts/api/src/siteRuntimeEndpoints.d.ts +33 -27
  24. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientField.d.ts +9 -0
  25. package/dist/_dts/block-form/src/widgets/BackgroundGradientWidget/BackgroundGradientWidget.d.ts +3 -4
  26. package/dist/_dts/blocks/src/contracts/proof-block-islands.d.ts +4 -4
  27. package/dist/_dts/blocks/src/index.d.ts +1 -1
  28. package/dist/_dts/blocks/src/system/blocks/audio-player.d.ts +3 -0
  29. package/dist/_dts/blocks/src/system/blocks/body-text.d.ts +3 -0
  30. package/dist/_dts/blocks/src/system/blocks/contact-newsletter.d.ts +3 -0
  31. package/dist/_dts/blocks/src/system/blocks/course-registration.d.ts +1 -22
  32. package/dist/_dts/blocks/src/system/blocks/cta-full.d.ts +3 -0
  33. package/dist/_dts/blocks/src/system/blocks/event-registration.d.ts +1 -22
  34. package/dist/_dts/blocks/src/system/blocks/file-download.d.ts +3 -0
  35. package/dist/_dts/blocks/src/system/blocks/form.d.ts +3 -0
  36. package/dist/_dts/blocks/src/system/blocks/image-gallery.d.ts +3 -0
  37. package/dist/_dts/blocks/src/system/blocks/media-text.d.ts +3 -0
  38. package/dist/_dts/blocks/src/system/blocks/newsletter-signup.d.ts +3 -0
  39. package/dist/_dts/blocks/src/system/blocks/site-header.d.ts +3 -0
  40. package/dist/_dts/blocks/src/system/blocks/team-members.d.ts +3 -0
  41. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +3 -0
  42. package/dist/_dts/blocks/src/system/blocks/video-grid.d.ts +3 -0
  43. package/dist/_dts/blocks/src/system/constants/background.d.ts +1 -1
  44. package/dist/_dts/blocks/src/system/customize/backgrounds.d.ts +16 -6
  45. package/dist/_dts/blocks/src/system/defineBlock.d.ts +9 -1
  46. package/dist/_dts/blocks/src/system/fields/ctas.d.ts +8 -0
  47. package/dist/_dts/blocks/src/system/manifest/schema.d.ts +31 -0
  48. package/dist/_dts/blocks/src/system/runtime/components/registry.client.d.ts +6 -6
  49. package/dist/_dts/blocks/src/system/runtime/components/runtime-backed-blocks.d.ts +3 -3
  50. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +1 -1
  51. package/dist/_dts/content-model/src/content-types/entryValidation.d.ts +31 -0
  52. package/dist/_dts/content-model/src/content-types/scaffold.d.ts +58 -0
  53. package/dist/_dts/content-model/src/content-types/sentinels.d.ts +36 -0
  54. package/dist/_dts/content-model/src/index.d.ts +3 -0
  55. package/dist/_dts/core/src/booking-date-time.d.ts +8 -0
  56. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +3071 -3157
  57. package/dist/_dts/media-core/src/fileMimeDetection.d.ts +16 -0
  58. package/dist/_dts/media-core/src/fileStorage.d.ts +8 -0
  59. package/dist/_dts/media-core/src/storagePathDomain.d.ts +2 -0
  60. package/dist/_dts/media-core/src/uploadVerificationContract.d.ts +3 -0
  61. package/dist/_dts/preview-next/src/client/blocks/BlockToolbar.d.ts +2 -0
  62. package/dist/_dts/preview-next/src/client/preview/StyleConfigurator.state.d.ts +1 -0
  63. package/dist/_dts/preview-next/src/client/preview/styleConfiguratorApplyPayload.d.ts +1 -1
  64. package/dist/_dts/sdk/src/cli/commands/audit.d.ts +1 -1
  65. package/dist/_dts/sdk/src/cli/commands/compare.d.ts +1 -1
  66. package/dist/_dts/sdk/src/cli/commands/deploy.d.ts +1 -1
  67. package/dist/_dts/sdk/src/cli/commands/drafts.d.ts +18 -0
  68. package/dist/_dts/sdk/src/cli/commands/entry.d.ts +15 -0
  69. package/dist/_dts/sdk/src/cli/commands/init-docs.d.ts +2 -2
  70. package/dist/_dts/sdk/src/cli/commands/publish-all.d.ts +1 -1
  71. package/dist/_dts/sdk/src/cli/commands/pull.d.ts +1 -0
  72. package/dist/_dts/sdk/src/cli/commands/push/execute/diff.d.ts +1 -1
  73. package/dist/_dts/sdk/src/cli/commands/push/options.d.ts +3 -0
  74. package/dist/_dts/sdk/src/cli/commands/push-execute.d.ts +12 -1
  75. package/dist/_dts/sdk/src/cli/commands/setup.d.ts +1 -0
  76. package/dist/_dts/sdk/src/cli/commands/verify.d.ts +1 -0
  77. package/dist/_dts/sdk/src/cli/helpers.d.ts +22 -1
  78. package/dist/_dts/sdk/src/cli/index.d.ts +4 -0
  79. package/dist/_dts/sdk/src/cli/output.d.ts +88 -0
  80. package/dist/_dts/sdk/src/cli/program.d.ts +29 -0
  81. package/dist/_dts/sdk/src/cli/push-config.d.ts +1 -1
  82. package/dist/_dts/sdk/src/client/management/catalog.d.ts +10 -0
  83. package/dist/_dts/sdk/src/client/management/http.d.ts +7 -1
  84. package/dist/_dts/sdk/src/client/management/index.d.ts +1 -1
  85. package/dist/_dts/sdk/src/client/management/types.d.ts +43 -19
  86. package/dist/_dts/sdk/src/date-time/index.d.ts +68 -0
  87. package/dist/_dts/sdk/src/public-api/contracts.d.ts +2 -0
  88. package/dist/_dts/sdk/src/version.d.ts +1 -1
  89. package/dist/_dts/site-commands/src/commands.d.ts +893 -823
  90. package/dist/_dts/theme-core/src/accordions/types.d.ts +1 -1
  91. package/dist/_dts/theme-core/src/buttons/core.d.ts +15 -46
  92. package/dist/_dts/theme-core/src/buttons/effectClassification.d.ts +147 -0
  93. package/dist/_dts/theme-core/src/buttons/effects/types.d.ts +2 -3
  94. package/dist/_dts/theme-core/src/buttons/generateDefaultButtonSystem.d.ts +1 -1
  95. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  96. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +44 -32
  97. package/dist/_dts/theme-core/src/buttons/presets.d.ts +4 -25
  98. package/dist/_dts/theme-core/src/buttons/resolveButtonColourStates.d.ts +100 -0
  99. package/dist/_dts/theme-core/src/buttons/resolvedButtonCss.d.ts +16 -0
  100. package/dist/_dts/theme-core/src/buttons/types.d.ts +101 -83
  101. package/dist/_dts/theme-core/src/cards/types.d.ts +16 -16
  102. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  103. package/dist/_dts/theme-core/src/gradients/presets.d.ts +200 -8
  104. package/dist/_dts/theme-core/src/gradients/utils.d.ts +6 -2
  105. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +87 -126
  106. package/dist/_dts/theme-core/src/mock-themes/modern-minimal.d.ts +1 -1
  107. package/dist/_dts/theme-core/src/navigation/types.d.ts +2 -2
  108. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +2 -2
  109. package/dist/_dts/theme-core/src/palette/curated/types.d.ts +5 -8
  110. package/dist/_dts/theme-core/src/palette/index.d.ts +0 -1
  111. package/dist/_dts/theme-core/src/schema.d.ts +112 -138
  112. package/dist/_dts/theme-core/src/site-styles/backgroundAppearance.d.ts +2 -2
  113. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +10 -10
  114. package/dist/_dts/theme-core/src/site-styles/pageDesignEditorModel.d.ts +3 -2
  115. package/dist/_dts/theme-core/src/site-styles/pageDesignIntent.d.ts +13 -6
  116. package/dist/_dts/theme-core/src/site-styles/runtimeCompiler.d.ts +29 -8
  117. package/dist/_dts/theme-core/src/site-styles/styleTags.d.ts +2 -2
  118. package/dist/cli/index.mjs +67956 -66745
  119. package/dist/cli/init-docs/content/cli-reference.md +50 -7
  120. package/dist/cli/init-docs/content/content-management.md +7 -4
  121. package/dist/cli/init-docs/content/workflow-publish.md +5 -1
  122. package/dist/client/{DiscountCodeDisclosure-D6TOf6Hi.mjs → DiscountCodeDisclosure-DU1ygxU2.mjs} +1 -1
  123. package/dist/client/{EventCombined.client-Dao3zxRk.mjs → EventCombined.client-DB5zagCo.mjs} +3 -3
  124. package/dist/client/{EventListing.client-B2NNt4y1.mjs → EventListing.client-CTX9JHBL.mjs} +2 -2
  125. package/dist/client/{LeafletStaticMap-BhwFo16w.mjs → LeafletStaticMap-BYImhgiB.mjs} +1 -1
  126. package/dist/client/{MagicLinkForm-BWnB7cMR.mjs → MagicLinkForm-CRkw_M3l.mjs} +2 -2
  127. package/dist/client/{StepIndicator-TzRiQ0BY.mjs → StepIndicator-BnmVBJJh.mjs} +2 -2
  128. package/dist/client/{accordion-BPy-AJ4_.mjs → accordion-CeGreumd.mjs} +1 -1
  129. package/dist/client/{bookingForm-BL4PGZds.mjs → bookingForm-CSzFNrpN.mjs} +6 -6
  130. package/dist/client/bookings.mjs +512 -252
  131. package/dist/client/{buttons-EBjyslaX.mjs → buttons-DoFV7KDL.mjs} +493 -230
  132. package/dist/client/{carousel-C2b7Cn9-.mjs → carousel-B2jDtogf.mjs} +1 -1
  133. package/dist/client/{cart-BQcbXIVD.mjs → cart-D-jZ-vaY.mjs} +3 -3
  134. package/dist/client/{checkout-DEmpGRJu.mjs → checkout-Dza-LA7N.mjs} +3 -3
  135. package/dist/client/client.mjs +1673 -785
  136. package/dist/client/{colorStyles-jZS6KfkP.mjs → colorStyles-CrgzoXsm.mjs} +1 -30
  137. package/dist/client/{courseRegistration-BqRZPmsq.mjs → courseRegistration-TYkNychb.mjs} +7 -7
  138. package/dist/client/{eventCalendar-B8N_tSl5.mjs → eventCalendar-BI_90SsT.mjs} +5 -5
  139. package/dist/client/{eventCombined-Gjn6gtq7.mjs → eventCombined-mNrpryE9.mjs} +2 -2
  140. package/dist/client/{eventDetails-M-VCxA-r.mjs → eventDetails-D4GVlCIY.mjs} +3 -3
  141. package/dist/client/{eventListing-DR19hqYi.mjs → eventListing-YhKN018y.mjs} +2 -2
  142. package/dist/client/{eventRegistration-BR02a0k3.mjs → eventRegistration-CdHGtilr.mjs} +7 -7
  143. package/dist/client/foregroundContract-xICPq59x.mjs +31 -0
  144. package/dist/client/{form-LY2xIbwg.mjs → form-AcAL45rA.mjs} +2 -2
  145. package/dist/client/{headerSection-CYwwXJfh.mjs → headerSection-uEC52ueD.mjs} +3 -3
  146. package/dist/client/hooks.mjs +890 -497
  147. package/dist/client/{locationMap-DWnBXrFq.mjs → locationMap-_wJDSUYe.mjs} +3 -3
  148. package/dist/client/{media-DHtSxS5V.mjs → media-BK0O3b-U.mjs} +3 -2
  149. package/dist/client/{newsletterForm-D9s-fQ2P.mjs → newsletterForm-DrArsb2B.mjs} +2 -2
  150. package/dist/client/{pricing-DDq80oYc.mjs → pricing-BSYVghwo.mjs} +1 -1
  151. package/dist/client/{productDetail-B0SbWd45.mjs → productDetail-Dyk90sMs.mjs} +3 -3
  152. package/dist/client/{productList-PwYlZn0y.mjs → productList-BCKThwAI.mjs} +3 -3
  153. package/dist/client/{propsDecoder-BRWBiH7i.mjs → propsDecoder-CkXxkdSR.mjs} +63 -24
  154. package/dist/client/rendering/client.mjs +1034 -486
  155. package/dist/client/rendering/islands.mjs +19 -19
  156. package/dist/client/rendering.mjs +1832 -760
  157. package/dist/client/{shop-CMwZPYME.mjs → shop-DeltVH10.mjs} +6 -6
  158. package/dist/client/{shop-commerce-BuxsFate.mjs → shop-commerce-BD9Jsm2Z.mjs} +6 -6
  159. package/dist/client/{shop-commerce-store-boYlEJ91.mjs → shop-commerce-store-CmXD6FDS.mjs} +1 -1
  160. package/dist/client/{shopShared-D2naaOes.mjs → shopShared-B8v-lH_F.mjs} +2 -2
  161. package/dist/client/{useDiscountCodeUi-D9RHpVoj.mjs → useDiscountCodeUi-DbWJN8ld.mjs} +1 -1
  162. package/dist/client/{useEventFilters-igGiK1re.mjs → useEventFilters-EJIMUnqT.mjs} +46 -69
  163. package/dist/client/{usePolling-CI7MbsFB.mjs → usePolling-Cmh14fc7.mjs} +2 -2
  164. package/dist/preview-next/before-render.mjs +35 -0
  165. package/dist/preview-next/client/runtime.mjs +4 -4
  166. package/dist/preview-next/middleware.mjs +35 -0
  167. package/dist/{previewAuthStore-a_cBD28m.mjs → previewAuthStore-CTO7CRPk.mjs} +35 -0
  168. package/dist/{sdk-runtime-MBzD-GmP.mjs → sdk-runtime-Dou0GAav.mjs} +2 -2
  169. package/dist/{separator-5ahRBC85.mjs → separator-CI5wZNXT.mjs} +1 -1
  170. package/dist/server/components.mjs +1832 -784
  171. package/dist/server/config-validation.mjs +890 -497
  172. package/dist/server/config.mjs +890 -497
  173. package/dist/server/data.mjs +890 -497
  174. package/dist/server/date-time.mjs +386 -0
  175. package/dist/server/index.mjs +36 -1
  176. package/dist/server/next.mjs +1868 -785
  177. package/dist/server/page-converter.mjs +849 -285
  178. package/dist/server/prebuild.mjs +1 -1
  179. package/dist/server/rendering/server.mjs +1553 -718
  180. package/dist/server/rendering.mjs +1832 -784
  181. package/dist/server/routing.mjs +933 -522
  182. package/dist/server/server.mjs +929 -501
  183. package/dist/server/theme-bridge.mjs +1408 -392
  184. package/dist/server/theme.mjs +471 -228
  185. package/dist/styles/index.css +5 -0
  186. package/package.json +7 -1
  187. package/dist/_dts/theme-core/src/buttons/presets/types.d.ts +0 -88
  188. package/dist/_dts/theme-core/src/buttons/utils/contrast.d.ts +0 -38
  189. package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +0 -57
@@ -840,18 +840,25 @@ var init_booking_instalments = __esmMin((() => {}));
840
840
  //#endregion
841
841
  //#region ../core/src/booking-date-time.ts
842
842
  function isValidTimeZone(timeZone) {
843
+ const cached = timeZoneValidityCache.get(timeZone);
844
+ if (cached !== void 0) return cached;
845
+ let isValid;
843
846
  try {
844
847
  new Intl.DateTimeFormat(DEFAULT_LOCALE, { timeZone }).format(/* @__PURE__ */ new Date());
845
- return true;
848
+ isValid = true;
846
849
  } catch {
847
- return false;
850
+ isValid = false;
848
851
  }
852
+ if (timeZoneValidityCache.size >= DATE_TIME_FORMATTER_CACHE_LIMIT) timeZoneValidityCache.clear();
853
+ timeZoneValidityCache.set(timeZone, isValid);
854
+ return isValid;
849
855
  }
850
856
  function getSafeTimeZone(timeZone) {
851
857
  const normalized = typeof timeZone === "string" ? timeZone.trim() : "";
852
858
  return normalized.length > 0 && isValidTimeZone(normalized) ? normalized : FALLBACK_TIMEZONE;
853
859
  }
854
860
  function parseStrictBookingTimeZone(timeZone) {
861
+ if (typeof timeZone !== "string") return null;
855
862
  const normalized = timeZone.trim();
856
863
  if (normalized.length === 0 || !isValidTimeZone(normalized)) return null;
857
864
  return normalized;
@@ -864,10 +871,19 @@ function formatParseError(error) {
864
871
  }
865
872
  }
866
873
  function formatToPartsLookup(date, locale, timeZone, format) {
867
- return new Map(new Intl.DateTimeFormat(locale, {
874
+ return new Map(getCachedDateTimeFormatter(locale, timeZone, format).formatToParts(date).map((part) => [part.type, part.value]));
875
+ }
876
+ function getCachedDateTimeFormatter(locale, timeZone, format) {
877
+ const key = `${locale}\u0000${timeZone}\u0000${JSON.stringify(Object.entries(format).sort(([left], [right]) => left.localeCompare(right)))}`;
878
+ const cached = dateTimeFormatterCache.get(key);
879
+ if (cached !== void 0) return cached;
880
+ const formatter = new Intl.DateTimeFormat(locale, {
868
881
  ...format,
869
882
  timeZone
870
- }).formatToParts(date).map((part) => [part.type, part.value]));
883
+ });
884
+ if (dateTimeFormatterCache.size >= DATE_TIME_FORMATTER_CACHE_LIMIT) dateTimeFormatterCache.clear();
885
+ dateTimeFormatterCache.set(key, formatter);
886
+ return formatter;
871
887
  }
872
888
  function getZonedDateTimeParts(date, timeZone) {
873
889
  const parts = formatToPartsLookup(date, "en-GB", timeZone, {
@@ -910,23 +926,9 @@ function toUtcIsoDateTimeString(value) {
910
926
  return parsed.value;
911
927
  }
912
928
  function parseScheduledBookingDateTime(input) {
929
+ let startsAt;
913
930
  try {
914
- const startsAt = toUtcIsoDateTimeString(input.startsAt);
915
- const timeZone = parseStrictBookingTimeZone(input.timeZone);
916
- if (timeZone === null) return {
917
- ok: false,
918
- field: "timeZone",
919
- reason: "invalid_time_zone",
920
- value: input.timeZone
921
- };
922
- return {
923
- ok: true,
924
- value: {
925
- startsAt,
926
- timeZone,
927
- locale: input.locale
928
- }
929
- };
931
+ startsAt = toUtcIsoDateTimeString(input.startsAt);
930
932
  } catch {
931
933
  return {
932
934
  ok: false,
@@ -935,6 +937,21 @@ function parseScheduledBookingDateTime(input) {
935
937
  value: input.startsAt
936
938
  };
937
939
  }
940
+ const timeZone = parseStrictBookingTimeZone(input.timeZone);
941
+ if (timeZone === null) return {
942
+ ok: false,
943
+ field: "timeZone",
944
+ reason: "invalid_time_zone",
945
+ value: typeof input.timeZone === "string" ? input.timeZone : ""
946
+ };
947
+ return {
948
+ ok: true,
949
+ value: {
950
+ startsAt,
951
+ timeZone,
952
+ locale: input.locale
953
+ }
954
+ };
938
955
  }
939
956
  function toScheduledBookingDateTime(input) {
940
957
  const result = parseScheduledBookingDateTime(input);
@@ -952,11 +969,14 @@ function getLocalScheduleDate(date, timeZone) {
952
969
  day: parts.day
953
970
  };
954
971
  }
955
- var DEFAULT_LOCALE, FALLBACK_TIMEZONE;
972
+ var DEFAULT_LOCALE, FALLBACK_TIMEZONE, DATE_TIME_FORMATTER_CACHE_LIMIT, dateTimeFormatterCache, timeZoneValidityCache;
956
973
  var init_booking_date_time = __esmMin((() => {
957
974
  init_result();
958
975
  DEFAULT_LOCALE = "en-US";
959
976
  FALLBACK_TIMEZONE = "UTC";
977
+ DATE_TIME_FORMATTER_CACHE_LIMIT = 100;
978
+ dateTimeFormatterCache = /* @__PURE__ */ new Map();
979
+ timeZoneValidityCache = /* @__PURE__ */ new Map();
960
980
  }));
961
981
  //#endregion
962
982
  //#region ../core/src/dated-offering-settlement.ts
@@ -4307,12 +4327,6 @@ var init_sitePalettePersistence = __esmMin((() => {
4307
4327
  init_selection();
4308
4328
  }));
4309
4329
  //#endregion
4310
- //#region ../theme-core/src/palette/themePaletteCompatibility.ts
4311
- var init_themePaletteCompatibility = __esmMin((() => {
4312
- init_themeColorTokens();
4313
- init_colors();
4314
- }));
4315
- //#endregion
4316
4330
  //#region ../theme-core/src/palette/utils/fromVibrant.ts
4317
4331
  var init_fromVibrant = __esmMin((() => {
4318
4332
  init_utils$4();
@@ -4337,7 +4351,6 @@ var init_palette = __esmMin((() => {
4337
4351
  init_resolveSelection();
4338
4352
  init_selection();
4339
4353
  init_sitePalettePersistence();
4340
- init_themePaletteCompatibility();
4341
4354
  init_fromVibrant();
4342
4355
  init_suggestRecipes();
4343
4356
  init_allRecipes();
@@ -4597,9 +4610,260 @@ var init_media$3 = __esmMin((() => {
4597
4610
  storagePath: z.string().optional(),
4598
4611
  transform: transformSchema$1.optional()
4599
4612
  });
4600
- })), VARIANT_ROLES, cornerStyleSchema, shadowSizeSchema, textTransformSchema, fontWeightSchema, buttonTypographySchema, letterSpacingSchema, hoverTransformSchema, hoverColorSchema, buttonPaddingPresetSchema, gradientStyleSchema, gradientSharpnessSchema, prioritySchema, buttonSizeNameSchema, PADDING_TOKEN_PATTERN, paddingShorthandSchema, buttonSizeConfigSchema, buttonSizesSchema, buttonGlobalSettingsSchema, gradientDirectionSchema$1, buttonBackgroundSchema, effectApplicationSchema$1, buttonBorderSchema, buttonVariantAffordanceSchema, variantShadowSchema, variantEffectsSchema, variantSizeOverridesSchema, buttonVariantSchema, buttonSystemSchema;
4613
+ }));
4614
+ //#endregion
4615
+ //#region ../theme-core/src/buttons/effectClassification.ts
4616
+ function getButtonEffectPolicy(effectId) {
4617
+ return Object.prototype.hasOwnProperty.call(BUTTON_EFFECT_POLICIES, effectId) ? BUTTON_EFFECT_POLICIES[effectId] : null;
4618
+ }
4619
+ function classifyButtonEffectId(effectId) {
4620
+ return getButtonEffectPolicy(effectId)?.classification ?? "unknown";
4621
+ }
4622
+ var BUTTON_EFFECT_POLICIES;
4623
+ var init_effectClassification = __esmMin((() => {
4624
+ BUTTON_EFFECT_POLICIES = {
4625
+ "darken-background": {
4626
+ classification: "colour-transition",
4627
+ transition: {
4628
+ kind: "adjust-shade",
4629
+ direction: "darker"
4630
+ }
4631
+ },
4632
+ "lighten-background": {
4633
+ classification: "colour-transition",
4634
+ transition: {
4635
+ kind: "adjust-shade",
4636
+ direction: "lighter"
4637
+ }
4638
+ },
4639
+ "background-on-hover": {
4640
+ classification: "colour-transition",
4641
+ transition: { kind: "replace-background" }
4642
+ },
4643
+ "background-on-hover-alpha": {
4644
+ classification: "unsupported-colour",
4645
+ reason: "alpha_requires_surface"
4646
+ },
4647
+ "fade-background": {
4648
+ classification: "unsupported-colour",
4649
+ reason: "changes_element_opacity"
4650
+ },
4651
+ "opacity-reduce": {
4652
+ classification: "unsupported-colour",
4653
+ reason: "changes_element_opacity"
4654
+ },
4655
+ "gradient-text": {
4656
+ classification: "unsupported-colour",
4657
+ reason: "changes_foreground"
4658
+ },
4659
+ "text-color-change": {
4660
+ classification: "unsupported-colour",
4661
+ reason: "changes_foreground"
4662
+ },
4663
+ "border-color-change": {
4664
+ classification: "unsupported-colour",
4665
+ reason: "changes_border"
4666
+ },
4667
+ "aurora-glow": {
4668
+ classification: "unsupported-background-overlay",
4669
+ reason: "unresolved_background_overlay"
4670
+ },
4671
+ "cosmic-stardust": {
4672
+ classification: "unsupported-background-overlay",
4673
+ reason: "unresolved_background_overlay"
4674
+ },
4675
+ "gradient-border-fill": {
4676
+ classification: "unsupported-background-overlay",
4677
+ reason: "unresolved_background_overlay"
4678
+ },
4679
+ "animated-gradient-border-fill": {
4680
+ classification: "unsupported-background-overlay",
4681
+ reason: "unresolved_background_overlay"
4682
+ },
4683
+ "nav-underline": {
4684
+ classification: "not-button",
4685
+ reason: "not_button_effect"
4686
+ },
4687
+ "nav-frosted-base": {
4688
+ classification: "not-button",
4689
+ reason: "not_button_effect"
4690
+ },
4691
+ "nav-frosted-hover": {
4692
+ classification: "not-button",
4693
+ reason: "not_button_effect"
4694
+ },
4695
+ "nav-frosted-active": {
4696
+ classification: "not-button",
4697
+ reason: "not_button_effect"
4698
+ },
4699
+ "animated-gradient": { classification: "non-colour" },
4700
+ "border-glow": { classification: "non-colour" },
4701
+ "drop-shadow": { classification: "non-colour" },
4702
+ "inner-shadow": { classification: "non-colour" },
4703
+ "neumorphic-shadow": { classification: "non-colour" },
4704
+ "outer-glow": { classification: "non-colour" },
4705
+ "retro-3d-shadow": { classification: "non-colour" },
4706
+ "scale-up": { classification: "non-colour" },
4707
+ "scale-down": { classification: "non-colour" },
4708
+ lift: { classification: "non-colour" },
4709
+ "press-down": { classification: "non-colour" },
4710
+ pop: { classification: "non-colour" },
4711
+ "border-bottom-grow": { classification: "non-colour" },
4712
+ "sketchy-border": { classification: "non-colour" },
4713
+ "pulse-animation": { classification: "non-colour" }
4714
+ };
4715
+ }));
4716
+ //#endregion
4717
+ //#region ../theme-core/src/buttons/types.ts
4718
+ function parseOpaqueButtonColourToken(value) {
4719
+ const token = parseThemeColorToken(value);
4720
+ if (token === null) return null;
4721
+ const parts = parseColorTokenParts(token);
4722
+ return parts.kind === "token" && parts.opacityPercent === null ? token : null;
4723
+ }
4724
+ function unsafeAsOpaqueButtonColourToken(value) {
4725
+ return value;
4726
+ }
4727
+ function normalizeLegacyButtonVariantInput(input) {
4728
+ if (!isUnknownRecord(input)) return input;
4729
+ const background = input.background;
4730
+ if (!isUnknownRecord(background)) return input;
4731
+ if (!(background.type === "transparent" || Object.prototype.hasOwnProperty.call(input, "textColorToken") || isUnknownRecord(input.border) && Object.prototype.hasOwnProperty.call(input.border, "colorToken") || hasLegacyButtonEffects(input.effects) || hasLegacyAlphaToken(input, background))) return input;
4732
+ const { textColorToken, ...withoutLegacyText } = input;
4733
+ const normalizedBorder = isUnknownRecord(input.border) && typeof input.border.widthClass === "string" ? { widthClass: input.border.widthClass } : input.border;
4734
+ const normalizedAffordance = isUnknownRecord(input.affordance) && typeof input.affordance.iconId === "string" ? { iconId: input.affordance.iconId } : input.affordance;
4735
+ const normalizedEffects = normalizeLegacyButtonEffects(input.effects, background.type);
4736
+ const hoverBackgroundToken = stripLegacyTokenAlpha(input.hoverBackgroundToken);
4737
+ if (background.type === "transparent") return {
4738
+ ...withoutLegacyText,
4739
+ background: {
4740
+ type: "surface",
4741
+ role: "link"
4742
+ },
4743
+ border: normalizedBorder,
4744
+ affordance: normalizedAffordance,
4745
+ effects: normalizedEffects,
4746
+ hoverBackgroundToken
4747
+ };
4748
+ if (background.type === "gradient") {
4749
+ const stops = Array.isArray(background.stops) ? background.stops.map(stripLegacyTokenAlpha) : background.stops;
4750
+ return {
4751
+ ...withoutLegacyText,
4752
+ background: {
4753
+ ...background,
4754
+ stops,
4755
+ foregroundToken: stripLegacyTokenAlpha(background.foregroundToken ?? textColorToken)
4756
+ },
4757
+ border: normalizedBorder,
4758
+ affordance: normalizedAffordance,
4759
+ effects: normalizedEffects,
4760
+ hoverBackgroundToken
4761
+ };
4762
+ }
4763
+ return {
4764
+ ...withoutLegacyText,
4765
+ background: background.type === "solid" ? {
4766
+ ...background,
4767
+ colorToken: stripLegacyTokenAlpha(background.colorToken)
4768
+ } : background,
4769
+ border: normalizedBorder,
4770
+ affordance: normalizedAffordance,
4771
+ effects: normalizedEffects,
4772
+ hoverBackgroundToken
4773
+ };
4774
+ }
4775
+ function normalizeLegacyButtonGlobalInput(input) {
4776
+ if (!isUnknownRecord(input)) return input;
4777
+ const hoverColorToken = stripLegacyTokenAlpha(input.hoverColorToken);
4778
+ return hoverColorToken === input.hoverColorToken ? input : {
4779
+ ...input,
4780
+ hoverColorToken
4781
+ };
4782
+ }
4783
+ function hasLegacyAlphaToken(input, background) {
4784
+ const stops = isUnknownArray(background.stops) ? background.stops : [];
4785
+ return [
4786
+ input.hoverBackgroundToken,
4787
+ background.colorToken,
4788
+ background.foregroundToken,
4789
+ ...stops
4790
+ ].some((token) => stripLegacyTokenAlpha(token) !== token);
4791
+ }
4792
+ function stripLegacyTokenAlpha(value) {
4793
+ if (typeof value !== "string") return value;
4794
+ const slashIndex = value.indexOf("/");
4795
+ return slashIndex < 0 ? value : value.slice(0, slashIndex);
4796
+ }
4797
+ function hasLegacyButtonEffects(input) {
4798
+ if (!isUnknownRecord(input)) return false;
4799
+ return [
4800
+ "base",
4801
+ "hover",
4802
+ "active",
4803
+ "focus"
4804
+ ].some((state) => {
4805
+ const effects = input[state];
4806
+ return Array.isArray(effects) && effects.some((effect) => {
4807
+ if (!isUnknownRecord(effect) || typeof effect.effectId !== "string") return true;
4808
+ const classification = classifyButtonEffectId(effect.effectId);
4809
+ if (classification !== "colour-transition" && classification !== "non-colour") return true;
4810
+ return effect.effectId === "background-on-hover" && isUnknownRecord(effect.options) && stripLegacyTokenAlpha(effect.options.colorToken) !== effect.options.colorToken;
4811
+ });
4812
+ });
4813
+ }
4814
+ function normalizeLegacyButtonEffects(input, backgroundType) {
4815
+ if (!isUnknownRecord(input)) return input;
4816
+ const normalized = {};
4817
+ for (const state of [
4818
+ "base",
4819
+ "hover",
4820
+ "active",
4821
+ "focus"
4822
+ ]) {
4823
+ const effects = input[state];
4824
+ if (!Array.isArray(effects)) continue;
4825
+ const safeEffects = effects.flatMap((effect) => {
4826
+ if (!isUnknownRecord(effect) || typeof effect.effectId !== "string") return [];
4827
+ const classification = classifyButtonEffectId(effect.effectId);
4828
+ if (classification === "non-colour") return [effect];
4829
+ if (classification !== "colour-transition") return [];
4830
+ if (effect.effectId === "background-on-hover") {
4831
+ const options = isUnknownRecord(effect.options) ? effect.options : null;
4832
+ const colorToken = options === null ? null : parseOpaqueButtonColourToken(stripLegacyTokenAlpha(options.colorToken));
4833
+ return colorToken === null ? [] : [{
4834
+ ...effect,
4835
+ options: {
4836
+ ...options,
4837
+ colorToken
4838
+ }
4839
+ }];
4840
+ }
4841
+ if (backgroundType !== "solid") return [];
4842
+ const rawAmount = isUnknownRecord(effect.options) ? effect.options.amount : void 0;
4843
+ const amount = typeof rawAmount === "number" && rawAmount > 0 ? Math.max(100, Math.round(rawAmount / 100) * 100) : 100;
4844
+ return [{
4845
+ ...effect,
4846
+ options: {
4847
+ ...isUnknownRecord(effect.options) ? effect.options : {},
4848
+ amount
4849
+ }
4850
+ }];
4851
+ });
4852
+ if (safeEffects.length > 0) normalized[state] = safeEffects;
4853
+ }
4854
+ return Object.keys(normalized).length === 0 ? void 0 : normalized;
4855
+ }
4856
+ function isUnknownRecord(value) {
4857
+ return typeof value === "object" && value !== null && !Array.isArray(value);
4858
+ }
4859
+ function isUnknownArray(value) {
4860
+ return Array.isArray(value);
4861
+ }
4862
+ var VARIANT_ROLES, 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;
4601
4863
  var init_types$15 = __esmMin((() => {
4864
+ init_effectClassification();
4602
4865
  init_themeColorTokens();
4866
+ init_colorTokenParts();
4603
4867
  VARIANT_ROLES = [
4604
4868
  "primary",
4605
4869
  "secondary",
@@ -4609,6 +4873,11 @@ var init_types$15 = __esmMin((() => {
4609
4873
  "tertiary",
4610
4874
  "accent"
4611
4875
  ];
4876
+ opaqueButtonColourTokenSchema = themeColorTokenSchema.refine((value) => parseOpaqueButtonColourToken(value) !== null, "Button colour tokens must be opaque").transform((value) => {
4877
+ const token = parseOpaqueButtonColourToken(value);
4878
+ if (token === null) throw new Error("Invariant: opaque button token passed its schema");
4879
+ return token;
4880
+ });
4612
4881
  cornerStyleSchema = z$1.enum([
4613
4882
  "square",
4614
4883
  "rounded",
@@ -4697,7 +4966,7 @@ var init_types$15 = __esmMin((() => {
4697
4966
  lg,
4698
4967
  xl: xl ?? lg
4699
4968
  }));
4700
- buttonGlobalSettingsSchema = z$1.object({
4969
+ canonicalButtonGlobalSettingsSchema = z$1.object({
4701
4970
  cornerStyle: cornerStyleSchema,
4702
4971
  cornerRadius: z$1.number().min(0).max(24).optional(),
4703
4972
  /**
@@ -4728,11 +4997,12 @@ var init_types$15 = __esmMin((() => {
4728
4997
  paddingPreset: buttonPaddingPresetSchema.optional(),
4729
4998
  hoverTransform: hoverTransformSchema,
4730
4999
  hoverColor: hoverColorSchema,
4731
- hoverColorToken: themeColorTokenSchema.optional(),
5000
+ hoverColorToken: opaqueButtonColourTokenSchema.optional(),
4732
5001
  gradientStyle: gradientStyleSchema.optional(),
4733
5002
  gradientAngle: z$1.number().min(0).max(360).optional(),
4734
5003
  gradientSharpness: gradientSharpnessSchema.optional()
4735
5004
  });
5005
+ buttonGlobalSettingsSchema = z$1.preprocess(normalizeLegacyButtonGlobalInput, canonicalButtonGlobalSettingsSchema);
4736
5006
  gradientDirectionSchema$1 = z$1.enum([
4737
5007
  "to-r",
4738
5008
  "to-l",
@@ -4743,30 +5013,37 @@ var init_types$15 = __esmMin((() => {
4743
5013
  "to-br",
4744
5014
  "to-bl"
4745
5015
  ]);
4746
- buttonBackgroundSchema = z$1.discriminatedUnion("type", [
5016
+ buttonColourTreatmentSchema = z$1.discriminatedUnion("type", [
4747
5017
  z$1.object({
4748
5018
  type: z$1.literal("solid"),
4749
- colorToken: themeColorTokenSchema
5019
+ colorToken: opaqueButtonColourTokenSchema
4750
5020
  }),
4751
5021
  z$1.object({
4752
5022
  type: z$1.literal("gradient"),
4753
- stops: z$1.array(themeColorTokenSchema).min(2),
4754
- direction: gradientDirectionSchema$1
5023
+ stops: z$1.array(opaqueButtonColourTokenSchema).min(2).transform((stops) => {
5024
+ const [first, second, ...rest] = stops;
5025
+ if (first === void 0 || second === void 0) throw new Error("Invariant: gradient stops passed the minimum length schema");
5026
+ return [
5027
+ first,
5028
+ second,
5029
+ ...rest
5030
+ ];
5031
+ }),
5032
+ direction: gradientDirectionSchema$1,
5033
+ foregroundToken: opaqueButtonColourTokenSchema
4755
5034
  }),
4756
- z$1.object({ type: z$1.literal("transparent") })
5035
+ z$1.object({
5036
+ type: z$1.literal("surface"),
5037
+ role: z$1.literal("link")
5038
+ })
4757
5039
  ]);
5040
+ buttonBackgroundSchema = buttonColourTreatmentSchema;
4758
5041
  effectApplicationSchema$1 = z$1.object({
4759
5042
  effectId: z$1.string(),
4760
- options: z$1.record(z$1.string(), z$1.any()).optional()
4761
- });
4762
- buttonBorderSchema = z$1.object({
4763
- widthClass: z$1.string(),
4764
- colorToken: themeColorTokenSchema
4765
- });
4766
- buttonVariantAffordanceSchema = z$1.object({
4767
- iconId: z$1.string().min(1),
4768
- colorToken: themeColorTokenSchema.optional()
5043
+ options: z$1.record(z$1.string(), z$1.json()).optional()
4769
5044
  });
5045
+ buttonBorderSchema = z$1.object({ widthClass: z$1.string() });
5046
+ buttonVariantAffordanceSchema = z$1.object({ iconId: z$1.string().min(1) });
4770
5047
  variantShadowSchema = z$1.object({
4771
5048
  elevation: z$1.enum([
4772
5049
  "none",
@@ -4794,22 +5071,22 @@ var init_types$15 = __esmMin((() => {
4794
5071
  lg: buttonSizeConfigSchema.optional(),
4795
5072
  xl: buttonSizeConfigSchema.optional()
4796
5073
  });
4797
- buttonVariantSchema = z$1.object({
5074
+ canonicalButtonVariantSchema = z$1.object({
4798
5075
  id: z$1.string(),
4799
5076
  name: z$1.string().min(1).max(20),
4800
5077
  enabled: z$1.boolean(),
4801
5078
  priority: prioritySchema,
4802
5079
  background: buttonBackgroundSchema,
4803
- textColorToken: themeColorTokenSchema,
4804
5080
  /** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
4805
5081
  borderRadius: z$1.string().optional(),
4806
5082
  shadow: variantShadowSchema.optional(),
4807
5083
  border: buttonBorderSchema.optional(),
4808
- hoverBackgroundToken: z$1.string().optional(),
5084
+ hoverBackgroundToken: opaqueButtonColourTokenSchema.optional(),
4809
5085
  effects: variantEffectsSchema.optional(),
4810
5086
  sizes: variantSizeOverridesSchema.optional(),
4811
5087
  affordance: buttonVariantAffordanceSchema.optional()
4812
5088
  });
5089
+ buttonVariantSchema = z$1.preprocess(normalizeLegacyButtonVariantInput, canonicalButtonVariantSchema);
4813
5090
  buttonSystemSchema = z$1.object({
4814
5091
  global: buttonGlobalSettingsSchema,
4815
5092
  variants: z$1.array(buttonVariantSchema).min(1).max(6),
@@ -4832,19 +5109,26 @@ var init_transform = __esmMin((() => {}));
4832
5109
  var init_registry$7 = __esmMin((() => {}));
4833
5110
  //#endregion
4834
5111
  //#region ../theme-core/src/buttons/generateDefaultButtonSystem.ts
4835
- var init_generateDefaultButtonSystem = __esmMin((() => {}));
5112
+ var init_generateDefaultButtonSystem = __esmMin((() => {
5113
+ init_types$15();
5114
+ }));
4836
5115
  //#endregion
4837
5116
  //#region ../theme-core/src/buttons/affordanceIcons.ts
4838
5117
  var init_affordanceIcons = __esmMin((() => {}));
5118
+ //#endregion
5119
+ //#region ../theme-core/src/buttons/resolveButtonColourStates.ts
5120
+ var init_resolveButtonColourStates = __esmMin((() => {
5121
+ init_types$15();
5122
+ init_effectClassification();
5123
+ }));
4839
5124
  var init_generateButtonCss = __esmMin((() => {
4840
5125
  init_types$15();
4841
5126
  init_classNames();
5127
+ init_generateDefaultButtonSystem();
5128
+ init_resolveButtonColourStates();
4842
5129
  buttonSizeNameSchema.options;
4843
5130
  }));
4844
5131
  //#endregion
4845
- //#region ../theme-core/src/buttons/presets.ts
4846
- var init_presets$3 = __esmMin((() => {}));
4847
- //#endregion
4848
5132
  //#region ../theme-core/src/buttons/personalities/types.ts
4849
5133
  function asButtonPersonalityId(value) {
4850
5134
  if (value.length === 0) throw new Error("ButtonPersonalityId must be a non-empty string");
@@ -4861,7 +5145,7 @@ function defineButtonPersonality(input) {
4861
5145
  name: input.name,
4862
5146
  description: input.description,
4863
5147
  tags: input.tags,
4864
- buttonSystem: input.buttonSystem
5148
+ buttonSystem: buttonSystemSchema.parse(input.buttonSystem)
4865
5149
  };
4866
5150
  }
4867
5151
  var buttonPersonalityIdSchema;
@@ -4926,19 +5210,15 @@ var init_brushed_wash = __esmMin((() => {
4926
5210
  background: {
4927
5211
  type: "gradient",
4928
5212
  stops: ["primary", "accent"],
4929
- direction: "to-r"
5213
+ direction: "to-r",
5214
+ foregroundToken: "primaryForeground"
4930
5215
  },
4931
- textColorToken: "primaryForeground",
4932
5216
  borderRadius: "rounded-lg",
4933
5217
  shadow: {
4934
5218
  elevation: "low",
4935
5219
  softness: "soft",
4936
5220
  position: "bottom"
4937
- },
4938
- effects: { hover: [{
4939
- effectId: "opacity-reduce",
4940
- options: { reduction: -15 }
4941
- }] }
5221
+ }
4942
5222
  },
4943
5223
  {
4944
5224
  id: "secondary",
@@ -4948,32 +5228,27 @@ var init_brushed_wash = __esmMin((() => {
4948
5228
  background: {
4949
5229
  type: "gradient",
4950
5230
  stops: ["secondary", "accent"],
4951
- direction: "to-br"
5231
+ direction: "to-br",
5232
+ foregroundToken: "primaryForeground"
4952
5233
  },
4953
- textColorToken: "primaryForeground",
4954
5234
  borderRadius: "rounded-lg",
4955
5235
  shadow: {
4956
5236
  elevation: "low",
4957
5237
  softness: "soft",
4958
5238
  position: "bottom"
4959
- },
4960
- effects: { hover: [{
4961
- effectId: "opacity-reduce",
4962
- options: { reduction: -15 }
4963
- }] }
5239
+ }
4964
5240
  },
4965
5241
  {
4966
5242
  id: "outline",
4967
5243
  name: "Outline",
4968
5244
  enabled: true,
4969
5245
  priority: 3,
4970
- background: { type: "transparent" },
4971
- textColorToken: "primary",
4972
- borderRadius: "rounded-lg",
4973
- border: {
4974
- widthClass: "border",
4975
- colorToken: "primary"
5246
+ background: {
5247
+ type: "surface",
5248
+ role: "link"
4976
5249
  },
5250
+ borderRadius: "rounded-lg",
5251
+ border: { widthClass: "border" },
4977
5252
  effects: { hover: [{
4978
5253
  effectId: "background-on-hover",
4979
5254
  options: { colorToken: "surface" }
@@ -4984,8 +5259,10 @@ var init_brushed_wash = __esmMin((() => {
4984
5259
  name: "Ghost",
4985
5260
  enabled: true,
4986
5261
  priority: 3,
4987
- background: { type: "transparent" },
4988
- textColorToken: "text",
5262
+ background: {
5263
+ type: "surface",
5264
+ role: "link"
5265
+ },
4989
5266
  borderRadius: "rounded-lg",
4990
5267
  effects: { hover: [{
4991
5268
  effectId: "background-on-hover",
@@ -5031,7 +5308,6 @@ var init_confident_chip = __esmMin((() => {
5031
5308
  type: "solid",
5032
5309
  colorToken: "primary"
5033
5310
  },
5034
- textColorToken: "primaryForeground",
5035
5311
  borderRadius: "rounded-md",
5036
5312
  shadow: {
5037
5313
  elevation: "medium",
@@ -5041,7 +5317,7 @@ var init_confident_chip = __esmMin((() => {
5041
5317
  effects: {
5042
5318
  hover: [{
5043
5319
  effectId: "darken-background",
5044
- options: { amount: 60 }
5320
+ options: { amount: 100 }
5045
5321
  }],
5046
5322
  active: [{
5047
5323
  effectId: "scale-down",
@@ -5058,12 +5334,8 @@ var init_confident_chip = __esmMin((() => {
5058
5334
  type: "solid",
5059
5335
  colorToken: "surface"
5060
5336
  },
5061
- textColorToken: "text",
5062
5337
  borderRadius: "rounded-md",
5063
- border: {
5064
- widthClass: "border",
5065
- colorToken: "border"
5066
- },
5338
+ border: { widthClass: "border" },
5067
5339
  effects: { hover: [{
5068
5340
  effectId: "background-on-hover",
5069
5341
  options: { colorToken: "background" }
@@ -5074,13 +5346,12 @@ var init_confident_chip = __esmMin((() => {
5074
5346
  name: "Outline",
5075
5347
  enabled: true,
5076
5348
  priority: 3,
5077
- background: { type: "transparent" },
5078
- textColorToken: "primary",
5079
- borderRadius: "rounded-md",
5080
- border: {
5081
- widthClass: "border",
5082
- colorToken: "primary"
5349
+ background: {
5350
+ type: "surface",
5351
+ role: "link"
5083
5352
  },
5353
+ borderRadius: "rounded-md",
5354
+ border: { widthClass: "border" },
5084
5355
  effects: { hover: [{
5085
5356
  effectId: "background-on-hover",
5086
5357
  options: { colorToken: "surface" }
@@ -5091,8 +5362,10 @@ var init_confident_chip = __esmMin((() => {
5091
5362
  name: "Ghost",
5092
5363
  enabled: true,
5093
5364
  priority: 3,
5094
- background: { type: "transparent" },
5095
- textColorToken: "primary",
5365
+ background: {
5366
+ type: "surface",
5367
+ role: "link"
5368
+ },
5096
5369
  borderRadius: "rounded-md",
5097
5370
  effects: { hover: [{
5098
5371
  effectId: "background-on-hover",
@@ -5155,7 +5428,6 @@ var init_earth_pill = __esmMin((() => {
5155
5428
  type: "solid",
5156
5429
  colorToken: "primary"
5157
5430
  },
5158
- textColorToken: "primaryForeground",
5159
5431
  borderRadius: "rounded-full",
5160
5432
  shadow: {
5161
5433
  elevation: "low",
@@ -5181,13 +5453,12 @@ var init_earth_pill = __esmMin((() => {
5181
5453
  name: "Secondary",
5182
5454
  enabled: true,
5183
5455
  priority: 2,
5184
- background: { type: "transparent" },
5185
- textColorToken: "primary",
5186
- borderRadius: "rounded-full",
5187
- border: {
5188
- widthClass: "border",
5189
- colorToken: "primary"
5456
+ background: {
5457
+ type: "surface",
5458
+ role: "link"
5190
5459
  },
5460
+ borderRadius: "rounded-full",
5461
+ border: { widthClass: "border" },
5191
5462
  effects: { hover: [{
5192
5463
  effectId: "background-on-hover",
5193
5464
  options: { colorToken: "muted" }
@@ -5198,13 +5469,12 @@ var init_earth_pill = __esmMin((() => {
5198
5469
  name: "Outline",
5199
5470
  enabled: true,
5200
5471
  priority: 3,
5201
- background: { type: "transparent" },
5202
- textColorToken: "text",
5203
- borderRadius: "rounded-full",
5204
- border: {
5205
- widthClass: "border",
5206
- colorToken: "border"
5472
+ background: {
5473
+ type: "surface",
5474
+ role: "link"
5207
5475
  },
5476
+ borderRadius: "rounded-full",
5477
+ border: { widthClass: "border" },
5208
5478
  effects: { hover: [{
5209
5479
  effectId: "background-on-hover",
5210
5480
  options: { colorToken: "surfaceAlt" }
@@ -5215,8 +5485,10 @@ var init_earth_pill = __esmMin((() => {
5215
5485
  name: "Ghost",
5216
5486
  enabled: true,
5217
5487
  priority: 3,
5218
- background: { type: "transparent" },
5219
- textColorToken: "primary",
5488
+ background: {
5489
+ type: "surface",
5490
+ role: "link"
5491
+ },
5220
5492
  borderRadius: "rounded-full",
5221
5493
  shadow: {
5222
5494
  elevation: "none",
@@ -5237,11 +5509,7 @@ var init_earth_pill = __esmMin((() => {
5237
5509
  padding: "0.625rem 0",
5238
5510
  fontSize: "text-xl"
5239
5511
  }
5240
- },
5241
- effects: { hover: [{
5242
- effectId: "opacity-reduce",
5243
- options: { reduction: 25 }
5244
- }] }
5512
+ }
5245
5513
  }
5246
5514
  ]
5247
5515
  }
@@ -5277,8 +5545,10 @@ var init_editorial_link = __esmMin((() => {
5277
5545
  name: "Primary",
5278
5546
  enabled: true,
5279
5547
  priority: 1,
5280
- background: { type: "transparent" },
5281
- textColorToken: "text",
5548
+ background: {
5549
+ type: "surface",
5550
+ role: "link"
5551
+ },
5282
5552
  borderRadius: "rounded-none",
5283
5553
  sizes: {
5284
5554
  sm: { padding: "0.25rem 0" },
@@ -5300,8 +5570,10 @@ var init_editorial_link = __esmMin((() => {
5300
5570
  name: "Secondary",
5301
5571
  enabled: true,
5302
5572
  priority: 2,
5303
- background: { type: "transparent" },
5304
- textColorToken: "mutedText",
5573
+ background: {
5574
+ type: "surface",
5575
+ role: "link"
5576
+ },
5305
5577
  borderRadius: "rounded-none",
5306
5578
  sizes: {
5307
5579
  sm: { padding: "0.25rem 0" },
@@ -5323,8 +5595,10 @@ var init_editorial_link = __esmMin((() => {
5323
5595
  name: "Outline",
5324
5596
  enabled: true,
5325
5597
  priority: 3,
5326
- background: { type: "transparent" },
5327
- textColorToken: "accent",
5598
+ background: {
5599
+ type: "surface",
5600
+ role: "link"
5601
+ },
5328
5602
  borderRadius: "rounded-none",
5329
5603
  sizes: {
5330
5604
  sm: { padding: "0.25rem 0" },
@@ -5346,19 +5620,17 @@ var init_editorial_link = __esmMin((() => {
5346
5620
  name: "Ghost",
5347
5621
  enabled: true,
5348
5622
  priority: 3,
5349
- background: { type: "transparent" },
5350
- textColorToken: "mutedText",
5623
+ background: {
5624
+ type: "surface",
5625
+ role: "link"
5626
+ },
5351
5627
  borderRadius: "rounded-none",
5352
5628
  sizes: {
5353
5629
  sm: { padding: "0.25rem 0" },
5354
5630
  md: { padding: "0.5rem 0" },
5355
5631
  lg: { padding: "0.625rem 0" },
5356
5632
  xl: { padding: "0.75rem 0" }
5357
- },
5358
- effects: { hover: [{
5359
- effectId: "opacity-reduce",
5360
- options: { reduction: -20 }
5361
- }] }
5633
+ }
5362
5634
  }
5363
5635
  ]
5364
5636
  }
@@ -5416,12 +5688,8 @@ var init_flat_ink = __esmMin((() => {
5416
5688
  type: "solid",
5417
5689
  colorToken: "primary"
5418
5690
  },
5419
- textColorToken: "primaryForeground",
5420
5691
  borderRadius: "rounded-lg",
5421
- affordance: {
5422
- iconId: "ArrowRight",
5423
- colorToken: "accent"
5424
- },
5692
+ affordance: { iconId: "ArrowRight" },
5425
5693
  effects: { hover: [{
5426
5694
  effectId: "lift",
5427
5695
  options: { translateY: "-2px" }
@@ -5435,13 +5703,12 @@ var init_flat_ink = __esmMin((() => {
5435
5703
  name: "Secondary",
5436
5704
  enabled: true,
5437
5705
  priority: 2,
5438
- background: { type: "transparent" },
5439
- textColorToken: "primary",
5440
- borderRadius: "rounded-lg",
5441
- border: {
5442
- widthClass: "border",
5443
- colorToken: "border"
5706
+ background: {
5707
+ type: "surface",
5708
+ role: "link"
5444
5709
  },
5710
+ borderRadius: "rounded-lg",
5711
+ border: { widthClass: "border" },
5445
5712
  effects: { hover: [{
5446
5713
  effectId: "lift",
5447
5714
  options: { translateY: "-2px" }
@@ -5459,12 +5726,8 @@ var init_flat_ink = __esmMin((() => {
5459
5726
  type: "solid",
5460
5727
  colorToken: "accent"
5461
5728
  },
5462
- textColorToken: "accentForeground",
5463
5729
  borderRadius: "rounded-lg",
5464
- affordance: {
5465
- iconId: "ArrowRight",
5466
- colorToken: "accentForeground"
5467
- },
5730
+ affordance: { iconId: "ArrowRight" },
5468
5731
  effects: { hover: [{
5469
5732
  effectId: "lift",
5470
5733
  options: { translateY: "-2px" }
@@ -5527,7 +5790,6 @@ var init_ink_stamp = __esmMin((() => {
5527
5790
  type: "solid",
5528
5791
  colorToken: "primary"
5529
5792
  },
5530
- textColorToken: "primaryForeground",
5531
5793
  borderRadius: "rounded-md",
5532
5794
  effects: {
5533
5795
  hover: [{
@@ -5548,13 +5810,12 @@ var init_ink_stamp = __esmMin((() => {
5548
5810
  name: "Secondary",
5549
5811
  enabled: true,
5550
5812
  priority: 2,
5551
- background: { type: "transparent" },
5552
- textColorToken: "primary",
5553
- borderRadius: "rounded-md",
5554
- border: {
5555
- widthClass: "border-2",
5556
- colorToken: "primary"
5813
+ background: {
5814
+ type: "surface",
5815
+ role: "link"
5557
5816
  },
5817
+ borderRadius: "rounded-md",
5818
+ border: { widthClass: "border-2" },
5558
5819
  effects: { hover: [{
5559
5820
  effectId: "background-on-hover",
5560
5821
  options: { colorToken: "surface" }
@@ -5565,13 +5826,12 @@ var init_ink_stamp = __esmMin((() => {
5565
5826
  name: "Outline",
5566
5827
  enabled: true,
5567
5828
  priority: 3,
5568
- background: { type: "transparent" },
5569
- textColorToken: "text",
5570
- borderRadius: "rounded-md",
5571
- border: {
5572
- widthClass: "border-2",
5573
- colorToken: "border"
5829
+ background: {
5830
+ type: "surface",
5831
+ role: "link"
5574
5832
  },
5833
+ borderRadius: "rounded-md",
5834
+ border: { widthClass: "border-2" },
5575
5835
  effects: { hover: [{
5576
5836
  effectId: "background-on-hover",
5577
5837
  options: { colorToken: "surface" }
@@ -5582,8 +5842,10 @@ var init_ink_stamp = __esmMin((() => {
5582
5842
  name: "Ghost",
5583
5843
  enabled: true,
5584
5844
  priority: 3,
5585
- background: { type: "transparent" },
5586
- textColorToken: "accent",
5845
+ background: {
5846
+ type: "surface",
5847
+ role: "link"
5848
+ },
5587
5849
  borderRadius: "rounded-none",
5588
5850
  sizes: {
5589
5851
  sm: {
@@ -5670,7 +5932,6 @@ var init_joy_stamp = __esmMin((() => {
5670
5932
  type: "solid",
5671
5933
  colorToken: "primary"
5672
5934
  },
5673
- textColorToken: "primaryForeground",
5674
5935
  borderRadius: "rounded-full",
5675
5936
  shadow: {
5676
5937
  elevation: "high",
@@ -5684,13 +5945,12 @@ var init_joy_stamp = __esmMin((() => {
5684
5945
  name: "Secondary",
5685
5946
  enabled: true,
5686
5947
  priority: 2,
5687
- background: { type: "transparent" },
5688
- textColorToken: "text",
5689
- borderRadius: "rounded-full",
5690
- border: {
5691
- widthClass: "border-2",
5692
- colorToken: "text"
5948
+ background: {
5949
+ type: "surface",
5950
+ role: "link"
5693
5951
  },
5952
+ borderRadius: "rounded-full",
5953
+ border: { widthClass: "border-2" },
5694
5954
  shadow: {
5695
5955
  elevation: "high",
5696
5956
  softness: "hard",
@@ -5755,12 +6015,8 @@ var init_ornate_ritual = __esmMin((() => {
5755
6015
  type: "solid",
5756
6016
  colorToken: "primary"
5757
6017
  },
5758
- textColorToken: "primaryForeground",
5759
6018
  borderRadius: "rounded-md",
5760
- border: {
5761
- widthClass: "border",
5762
- colorToken: "primary"
5763
- },
6019
+ border: { widthClass: "border" },
5764
6020
  effects: {
5765
6021
  hover: [{
5766
6022
  effectId: "background-on-hover",
@@ -5781,12 +6037,8 @@ var init_ornate_ritual = __esmMin((() => {
5781
6037
  type: "solid",
5782
6038
  colorToken: "secondary"
5783
6039
  },
5784
- textColorToken: "primaryForeground",
5785
6040
  borderRadius: "rounded-md",
5786
- border: {
5787
- widthClass: "border",
5788
- colorToken: "primary"
5789
- },
6041
+ border: { widthClass: "border" },
5790
6042
  effects: { hover: [{
5791
6043
  effectId: "background-on-hover",
5792
6044
  options: { colorToken: "surface" }
@@ -5797,13 +6049,12 @@ var init_ornate_ritual = __esmMin((() => {
5797
6049
  name: "Outline",
5798
6050
  enabled: true,
5799
6051
  priority: 3,
5800
- background: { type: "transparent" },
5801
- textColorToken: "primary",
5802
- borderRadius: "rounded-md",
5803
- border: {
5804
- widthClass: "border",
5805
- colorToken: "primary"
6052
+ background: {
6053
+ type: "surface",
6054
+ role: "link"
5806
6055
  },
6056
+ borderRadius: "rounded-md",
6057
+ border: { widthClass: "border" },
5807
6058
  effects: { hover: [{
5808
6059
  effectId: "background-on-hover",
5809
6060
  options: { colorToken: "muted" }
@@ -5814,8 +6065,10 @@ var init_ornate_ritual = __esmMin((() => {
5814
6065
  name: "Ghost",
5815
6066
  enabled: true,
5816
6067
  priority: 3,
5817
- background: { type: "transparent" },
5818
- textColorToken: "accent",
6068
+ background: {
6069
+ type: "surface",
6070
+ role: "link"
6071
+ },
5819
6072
  borderRadius: "rounded-none",
5820
6073
  sizes: {
5821
6074
  sm: {
@@ -5897,14 +6150,10 @@ var init_pebble = __esmMin((() => {
5897
6150
  type: "solid",
5898
6151
  colorToken: "primary"
5899
6152
  },
5900
- textColorToken: "primaryForeground",
5901
6153
  borderRadius: "rounded-full",
5902
6154
  effects: { hover: [{
5903
- effectId: "background-on-hover-alpha",
5904
- options: {
5905
- colorToken: "primary",
5906
- opacity: 88
5907
- }
6155
+ effectId: "darken-background",
6156
+ options: { amount: 100 }
5908
6157
  }] }
5909
6158
  },
5910
6159
  {
@@ -5912,13 +6161,12 @@ var init_pebble = __esmMin((() => {
5912
6161
  name: "Secondary",
5913
6162
  enabled: true,
5914
6163
  priority: 2,
5915
- background: { type: "transparent" },
5916
- textColorToken: "primary",
5917
- borderRadius: "rounded-full",
5918
- border: {
5919
- widthClass: "border-2",
5920
- colorToken: "accent"
6164
+ background: {
6165
+ type: "surface",
6166
+ role: "link"
5921
6167
  },
6168
+ borderRadius: "rounded-full",
6169
+ border: { widthClass: "border-2" },
5922
6170
  effects: { hover: [{
5923
6171
  effectId: "background-on-hover",
5924
6172
  options: { colorToken: "accent" }
@@ -5929,13 +6177,12 @@ var init_pebble = __esmMin((() => {
5929
6177
  name: "Outline",
5930
6178
  enabled: true,
5931
6179
  priority: 3,
5932
- background: { type: "transparent" },
5933
- textColorToken: "text",
5934
- borderRadius: "rounded-full",
5935
- border: {
5936
- widthClass: "border",
5937
- colorToken: "border"
6180
+ background: {
6181
+ type: "surface",
6182
+ role: "link"
5938
6183
  },
6184
+ borderRadius: "rounded-full",
6185
+ border: { widthClass: "border" },
5939
6186
  effects: { hover: [{
5940
6187
  effectId: "background-on-hover",
5941
6188
  options: { colorToken: "surface" }
@@ -5946,8 +6193,10 @@ var init_pebble = __esmMin((() => {
5946
6193
  name: "Ghost",
5947
6194
  enabled: true,
5948
6195
  priority: 3,
5949
- background: { type: "transparent" },
5950
- textColorToken: "primary",
6196
+ background: {
6197
+ type: "surface",
6198
+ role: "link"
6199
+ },
5951
6200
  borderRadius: "rounded-full",
5952
6201
  sizes: {
5953
6202
  sm: {
@@ -5963,11 +6212,7 @@ var init_pebble = __esmMin((() => {
5963
6212
  padding: "0.75rem 1.5rem",
5964
6213
  fontSize: "text-xl"
5965
6214
  }
5966
- },
5967
- effects: { hover: [{
5968
- effectId: "opacity-reduce",
5969
- options: { reduction: 30 }
5970
- }] }
6215
+ }
5971
6216
  }
5972
6217
  ]
5973
6218
  }
@@ -6028,15 +6273,11 @@ var init_quiet_arrow = __esmMin((() => {
6028
6273
  type: "solid",
6029
6274
  colorToken: "primary"
6030
6275
  },
6031
- textColorToken: "primaryForeground",
6032
6276
  borderRadius: "rounded-xl",
6033
6277
  affordance: { iconId: "ArrowRight" },
6034
6278
  effects: { hover: [{
6035
- effectId: "background-on-hover-alpha",
6036
- options: {
6037
- colorToken: "primary",
6038
- opacity: 90
6039
- }
6279
+ effectId: "darken-background",
6280
+ options: { amount: 100 }
6040
6281
  }] }
6041
6282
  },
6042
6283
  {
@@ -6044,13 +6285,12 @@ var init_quiet_arrow = __esmMin((() => {
6044
6285
  name: "Secondary",
6045
6286
  enabled: true,
6046
6287
  priority: 2,
6047
- background: { type: "transparent" },
6048
- textColorToken: "primary",
6049
- borderRadius: "rounded-xl",
6050
- border: {
6051
- widthClass: "border",
6052
- colorToken: "primary"
6288
+ background: {
6289
+ type: "surface",
6290
+ role: "link"
6053
6291
  },
6292
+ borderRadius: "rounded-xl",
6293
+ border: { widthClass: "border" },
6054
6294
  affordance: { iconId: "ArrowRight" },
6055
6295
  effects: { hover: [{
6056
6296
  effectId: "background-on-hover",
@@ -6062,21 +6302,22 @@ var init_quiet_arrow = __esmMin((() => {
6062
6302
  name: "Outline",
6063
6303
  enabled: true,
6064
6304
  priority: 3,
6065
- background: { type: "transparent" },
6066
- textColorToken: "primary",
6305
+ background: {
6306
+ type: "surface",
6307
+ role: "link"
6308
+ },
6067
6309
  borderRadius: "rounded-xl",
6068
- border: {
6069
- widthClass: "border",
6070
- colorToken: "primary"
6071
- }
6310
+ border: { widthClass: "border" }
6072
6311
  },
6073
6312
  {
6074
6313
  id: "ghost",
6075
6314
  name: "Ghost",
6076
6315
  enabled: true,
6077
6316
  priority: 3,
6078
- background: { type: "transparent" },
6079
- textColorToken: "primary",
6317
+ background: {
6318
+ type: "surface",
6319
+ role: "link"
6320
+ },
6080
6321
  borderRadius: "rounded-xl"
6081
6322
  }
6082
6323
  ]
@@ -6139,7 +6380,6 @@ var init_showtime_pill = __esmMin((() => {
6139
6380
  type: "solid",
6140
6381
  colorToken: "primary"
6141
6382
  },
6142
- textColorToken: "background",
6143
6383
  borderRadius: "rounded-full",
6144
6384
  effects: { hover: [{ effectId: "pop" }] }
6145
6385
  },
@@ -6148,13 +6388,12 @@ var init_showtime_pill = __esmMin((() => {
6148
6388
  name: "Secondary",
6149
6389
  enabled: true,
6150
6390
  priority: 2,
6151
- background: { type: "transparent" },
6152
- textColorToken: "primary",
6153
- borderRadius: "rounded-full",
6154
- border: {
6155
- widthClass: "border-2",
6156
- colorToken: "primary"
6391
+ background: {
6392
+ type: "surface",
6393
+ role: "link"
6157
6394
  },
6395
+ borderRadius: "rounded-full",
6396
+ border: { widthClass: "border-2" },
6158
6397
  effects: { hover: [{ effectId: "pop" }] }
6159
6398
  },
6160
6399
  {
@@ -6166,7 +6405,6 @@ var init_showtime_pill = __esmMin((() => {
6166
6405
  type: "solid",
6167
6406
  colorToken: "secondary"
6168
6407
  },
6169
- textColorToken: "primary",
6170
6408
  borderRadius: "rounded-full",
6171
6409
  effects: { hover: [{ effectId: "pop" }] }
6172
6410
  },
@@ -6179,12 +6417,8 @@ var init_showtime_pill = __esmMin((() => {
6179
6417
  type: "solid",
6180
6418
  colorToken: "background"
6181
6419
  },
6182
- textColorToken: "primary",
6183
6420
  borderRadius: "rounded-full",
6184
- border: {
6185
- widthClass: "border-2",
6186
- colorToken: "primary"
6187
- },
6421
+ border: { widthClass: "border-2" },
6188
6422
  effects: { hover: [{
6189
6423
  effectId: "background-on-hover",
6190
6424
  options: { colorToken: "surface" }
@@ -6195,13 +6429,12 @@ var init_showtime_pill = __esmMin((() => {
6195
6429
  name: "Outline",
6196
6430
  enabled: true,
6197
6431
  priority: 3,
6198
- background: { type: "transparent" },
6199
- textColorToken: "primary",
6200
- borderRadius: "rounded-full",
6201
- border: {
6202
- widthClass: "border-2",
6203
- colorToken: "primary"
6432
+ background: {
6433
+ type: "surface",
6434
+ role: "link"
6204
6435
  },
6436
+ borderRadius: "rounded-full",
6437
+ border: { widthClass: "border-2" },
6205
6438
  effects: { hover: [{
6206
6439
  effectId: "background-on-hover",
6207
6440
  options: { colorToken: "background" }
@@ -6212,8 +6445,10 @@ var init_showtime_pill = __esmMin((() => {
6212
6445
  name: "Ghost",
6213
6446
  enabled: true,
6214
6447
  priority: 3,
6215
- background: { type: "transparent" },
6216
- textColorToken: "primary",
6448
+ background: {
6449
+ type: "surface",
6450
+ role: "link"
6451
+ },
6217
6452
  borderRadius: "rounded-full",
6218
6453
  effects: { hover: [{
6219
6454
  effectId: "background-on-hover",
@@ -6259,7 +6494,6 @@ var init_soft_pill = __esmMin((() => {
6259
6494
  type: "solid",
6260
6495
  colorToken: "primary"
6261
6496
  },
6262
- textColorToken: "primaryForeground",
6263
6497
  borderRadius: "rounded-full",
6264
6498
  shadow: {
6265
6499
  elevation: "low",
@@ -6282,13 +6516,12 @@ var init_soft_pill = __esmMin((() => {
6282
6516
  name: "Secondary",
6283
6517
  enabled: true,
6284
6518
  priority: 2,
6285
- background: { type: "transparent" },
6286
- textColorToken: "primary",
6287
- borderRadius: "rounded-full",
6288
- border: {
6289
- widthClass: "border-2",
6290
- colorToken: "primary"
6519
+ background: {
6520
+ type: "surface",
6521
+ role: "link"
6291
6522
  },
6523
+ borderRadius: "rounded-full",
6524
+ border: { widthClass: "border-2" },
6292
6525
  effects: { hover: [{
6293
6526
  effectId: "background-on-hover",
6294
6527
  options: { colorToken: "surface" }
@@ -6299,13 +6532,12 @@ var init_soft_pill = __esmMin((() => {
6299
6532
  name: "Outline",
6300
6533
  enabled: true,
6301
6534
  priority: 3,
6302
- background: { type: "transparent" },
6303
- textColorToken: "text",
6304
- borderRadius: "rounded-full",
6305
- border: {
6306
- widthClass: "border",
6307
- colorToken: "border"
6535
+ background: {
6536
+ type: "surface",
6537
+ role: "link"
6308
6538
  },
6539
+ borderRadius: "rounded-full",
6540
+ border: { widthClass: "border" },
6309
6541
  effects: { hover: [{
6310
6542
  effectId: "background-on-hover",
6311
6543
  options: { colorToken: "surface" }
@@ -6316,8 +6548,10 @@ var init_soft_pill = __esmMin((() => {
6316
6548
  name: "Ghost",
6317
6549
  enabled: true,
6318
6550
  priority: 3,
6319
- background: { type: "transparent" },
6320
- textColorToken: "text",
6551
+ background: {
6552
+ type: "surface",
6553
+ role: "link"
6554
+ },
6321
6555
  borderRadius: "rounded-full",
6322
6556
  effects: { hover: [{
6323
6557
  effectId: "background-on-hover",
@@ -6332,6 +6566,7 @@ var init_soft_pill = __esmMin((() => {
6332
6566
  //#region ../theme-core/src/buttons/personalities/two-tone-pill.ts
6333
6567
  var solidSecondary, twoTonePill;
6334
6568
  var init_two_tone_pill = __esmMin((() => {
6569
+ init_types$15();
6335
6570
  init_soft_pill();
6336
6571
  init_types$14();
6337
6572
  solidSecondary = {
@@ -6341,9 +6576,8 @@ var init_two_tone_pill = __esmMin((() => {
6341
6576
  priority: 2,
6342
6577
  background: {
6343
6578
  type: "solid",
6344
- colorToken: "secondary"
6579
+ colorToken: unsafeAsOpaqueButtonColourToken("secondary")
6345
6580
  },
6346
- textColorToken: "onSecondary",
6347
6581
  borderRadius: "rounded-full",
6348
6582
  shadow: {
6349
6583
  elevation: "none",
@@ -6408,17 +6642,47 @@ var init_personalities = __esmMin((() => {
6408
6642
  new Map(buttonPersonalities.map((p) => [p.id, p]));
6409
6643
  }));
6410
6644
  //#endregion
6645
+ //#region ../theme-core/src/buttons/presets.ts
6646
+ function presetCategory(personality) {
6647
+ switch (personality.tags.era) {
6648
+ case "retro": return "retro";
6649
+ case "editorial": return "minimal";
6650
+ case "organic": return "artistic";
6651
+ case "modern": return personality.tags.tone === "bold" ? "modern" : "technical";
6652
+ case "technical": return "technical";
6653
+ case void 0: return "modern";
6654
+ }
6655
+ }
6656
+ var init_presets$3 = __esmMin((() => {
6657
+ init_personalities();
6658
+ buttonPersonalities.map((personality) => ({
6659
+ id: personality.id,
6660
+ name: personality.name,
6661
+ description: personality.description,
6662
+ category: presetCategory(personality),
6663
+ buttonSystem: personality.buttonSystem,
6664
+ compatibility: {
6665
+ ...personality.tags.tone ? { tones: [personality.tags.tone] } : {},
6666
+ ...personality.tags.energy ? { energies: [personality.tags.energy] } : {}
6667
+ }
6668
+ }));
6669
+ }));
6670
+ //#endregion
6411
6671
  //#region ../theme-core/src/buttons/effects/types.ts
6412
6672
  var init_types$13 = __esmMin((() => {}));
6413
6673
  //#endregion
6414
6674
  //#region ../theme-core/src/buttons/core.ts
6415
- var init_core$2 = __esmMin((() => {}));
6675
+ var init_core$2 = __esmMin((() => {
6676
+ init_resolveButtonColourStates();
6677
+ init_types$15();
6678
+ }));
6416
6679
  //#endregion
6417
6680
  //#region ../theme-core/src/buttons/index.ts
6418
6681
  var init_buttons = __esmMin((() => {
6419
6682
  init_types$15();
6420
6683
  init_classNames();
6421
6684
  init_generateButtonCss();
6685
+ init_resolveButtonColourStates();
6422
6686
  init_affordanceIcons();
6423
6687
  init_generateDefaultButtonSystem();
6424
6688
  init_constants$1();
@@ -9839,6 +10103,251 @@ var init_testimonialQuotePresets = __esmMin((() => {
9839
10103
  accentGlyphQuote = { style: "accent-glyph" };
9840
10104
  }));
9841
10105
  //#endregion
10106
+ //#region ../theme-core/src/gradients/presets.ts
10107
+ function parseGradientPresetId(value) {
10108
+ if (typeof value !== "string") return null;
10109
+ const normalized = value.trim();
10110
+ if (!gradientPresetIdSet.has(normalized)) return null;
10111
+ return normalized;
10112
+ }
10113
+ function getGradientPreset(id) {
10114
+ return gradientPresetById[id];
10115
+ }
10116
+ var rawGradientPresets, GRADIENT_PRESETS, GRADIENT_PRESET_IDS, gradientPresetIdSet, gradientPresetById;
10117
+ var init_presets$2 = __esmMin((() => {
10118
+ rawGradientPresets = [
10119
+ {
10120
+ id: "primary-secondary",
10121
+ name: "Primary to Secondary",
10122
+ description: "Blend your primary and secondary brand colors",
10123
+ type: "linear",
10124
+ angle: 135,
10125
+ stops: [{
10126
+ color: "primary-500",
10127
+ position: 0
10128
+ }, {
10129
+ color: "secondary-500",
10130
+ position: 100
10131
+ }]
10132
+ },
10133
+ {
10134
+ id: "primary-accent",
10135
+ name: "Primary to Accent",
10136
+ description: "Energetic gradient from primary to accent",
10137
+ type: "linear",
10138
+ angle: 135,
10139
+ stops: [{
10140
+ color: "primary-500",
10141
+ position: 0
10142
+ }, {
10143
+ color: "accent-500",
10144
+ position: 100
10145
+ }]
10146
+ },
10147
+ {
10148
+ id: "secondary-accent",
10149
+ name: "Secondary to Accent",
10150
+ description: "Vibrant secondary to accent blend",
10151
+ type: "linear",
10152
+ angle: 135,
10153
+ stops: [{
10154
+ color: "secondary-500",
10155
+ position: 0
10156
+ }, {
10157
+ color: "accent-500",
10158
+ position: 100
10159
+ }]
10160
+ },
10161
+ {
10162
+ id: "primary-light-dark",
10163
+ name: "Primary Light to Dark",
10164
+ description: "Subtle primary color fade",
10165
+ type: "linear",
10166
+ angle: 180,
10167
+ stops: [{
10168
+ color: "primary-500",
10169
+ position: 0
10170
+ }, {
10171
+ color: "primary-900",
10172
+ position: 100
10173
+ }]
10174
+ },
10175
+ {
10176
+ id: "primary-dark-light",
10177
+ name: "Primary Dark to Light",
10178
+ description: "Reverse primary fade",
10179
+ type: "linear",
10180
+ angle: 180,
10181
+ stops: [{
10182
+ color: "primary-900",
10183
+ position: 0
10184
+ }, {
10185
+ color: "primary-50",
10186
+ position: 100
10187
+ }]
10188
+ },
10189
+ {
10190
+ id: "secondary-light-dark",
10191
+ name: "Secondary Light to Dark",
10192
+ description: "Subtle secondary color fade",
10193
+ type: "linear",
10194
+ angle: 180,
10195
+ stops: [{
10196
+ color: "secondary-500",
10197
+ position: 0
10198
+ }, {
10199
+ color: "secondary-900",
10200
+ position: 100
10201
+ }]
10202
+ },
10203
+ {
10204
+ id: "accent-light-dark",
10205
+ name: "Accent Light to Dark",
10206
+ description: "Accent color depth fade",
10207
+ type: "linear",
10208
+ angle: 180,
10209
+ stops: [{
10210
+ color: "accent-500",
10211
+ position: 0
10212
+ }, {
10213
+ color: "accent-900",
10214
+ position: 100
10215
+ }]
10216
+ },
10217
+ {
10218
+ id: "background-surface",
10219
+ name: "Background to Surface",
10220
+ description: "Subtle depth using base colors",
10221
+ type: "linear",
10222
+ angle: 180,
10223
+ stops: [{
10224
+ color: "background",
10225
+ position: 0
10226
+ }, {
10227
+ color: "surface",
10228
+ position: 100
10229
+ }]
10230
+ },
10231
+ {
10232
+ id: "neutral-fade",
10233
+ name: "Neutral Gradient",
10234
+ description: "Elegant neutral color fade",
10235
+ type: "linear",
10236
+ angle: 180,
10237
+ stops: [{
10238
+ color: "neutral-900",
10239
+ position: 0
10240
+ }, {
10241
+ color: "neutral-50",
10242
+ position: 100
10243
+ }]
10244
+ },
10245
+ {
10246
+ id: "primary-glow",
10247
+ name: "Primary glow",
10248
+ description: "A soft top-centred glow using your primary palette",
10249
+ type: "radial",
10250
+ shape: "ellipse",
10251
+ position: "top center",
10252
+ stops: [{
10253
+ color: "primary-900",
10254
+ position: 0
10255
+ }, {
10256
+ color: "primary-950",
10257
+ position: 100
10258
+ }],
10259
+ foreground: {
10260
+ textColor: "onPrimary900",
10261
+ headingColor: "onPrimary900",
10262
+ linkColor: "onPrimary900",
10263
+ supportingColor: "onPrimary900"
10264
+ }
10265
+ },
10266
+ {
10267
+ id: "accent-glow",
10268
+ name: "Accent glow",
10269
+ description: "A soft top-centred glow using your accent palette",
10270
+ type: "radial",
10271
+ shape: "ellipse",
10272
+ position: "top center",
10273
+ stops: [{
10274
+ color: "accent-900",
10275
+ position: 0
10276
+ }, {
10277
+ color: "accent-950",
10278
+ position: 100
10279
+ }],
10280
+ foreground: {
10281
+ textColor: "onAccent900",
10282
+ headingColor: "onAccent900",
10283
+ linkColor: "onAccent900",
10284
+ supportingColor: "onAccent900"
10285
+ }
10286
+ },
10287
+ {
10288
+ id: "primary-secondary-accent",
10289
+ name: "Brand Trio",
10290
+ description: "All three brand colors in harmony",
10291
+ type: "linear",
10292
+ angle: 135,
10293
+ stops: [
10294
+ {
10295
+ color: "primary-500",
10296
+ position: 0
10297
+ },
10298
+ {
10299
+ color: "secondary-500",
10300
+ position: 50
10301
+ },
10302
+ {
10303
+ color: "accent-500",
10304
+ position: 100
10305
+ }
10306
+ ]
10307
+ }
10308
+ ];
10309
+ GRADIENT_PRESETS = rawGradientPresets.map((preset) => ({
10310
+ ...preset,
10311
+ id: preset.id,
10312
+ stops: preset.stops
10313
+ }));
10314
+ GRADIENT_PRESET_IDS = GRADIENT_PRESETS.map((preset) => preset.id);
10315
+ gradientPresetIdSet = new Set(GRADIENT_PRESET_IDS);
10316
+ gradientPresetById = Object.fromEntries(GRADIENT_PRESETS.map((preset) => [preset.id, preset]));
10317
+ }));
10318
+ //#endregion
10319
+ //#region ../theme-core/src/gradients/utils.ts
10320
+ /**
10321
+ * Convert a GradientConfig to a CSS gradient string
10322
+ *
10323
+ * @param config - The gradient configuration using theme tokens
10324
+ * @param tokens - Map of theme color tokens to hex values
10325
+ * @returns CSS gradient string (e.g., "linear-gradient(180deg, #3b82f6 0%, #f59e0b 100%)")
10326
+ */
10327
+ function gradientToCss(config, tokens) {
10328
+ const stops = config.stops.map((stop) => {
10329
+ return `${tokens[stop.color] ?? "#000000"} ${stop.position}%`;
10330
+ }).join(", ");
10331
+ const type = config.type ?? "linear";
10332
+ if (type === "radial") {
10333
+ const position = config.position ?? "center";
10334
+ return `radial-gradient(${config.shape ?? "circle"} at ${position}, ${stops})`;
10335
+ }
10336
+ if (type === "conic") {
10337
+ const position = config.position ?? "center";
10338
+ return `conic-gradient(from ${config.angle ?? 0}deg at ${position}, ${stops})`;
10339
+ }
10340
+ return `linear-gradient(${config.angle ?? 180}deg, ${stops})`;
10341
+ }
10342
+ var init_utils$2 = __esmMin((() => {}));
10343
+ //#endregion
10344
+ //#region ../theme-core/src/gradients/index.ts
10345
+ var init_gradients = __esmMin((() => {
10346
+ init_types$9();
10347
+ init_presets$2();
10348
+ init_utils$2();
10349
+ }));
10350
+ //#endregion
9842
10351
  //#region ../theme-core/src/site-styles/customizableSurfaces.ts
9843
10352
  var init_customizableSurfaces = __esmMin((() => {}));
9844
10353
  //#endregion
@@ -11909,6 +12418,19 @@ var init_designState = __esmMin((() => {
11909
12418
  }));
11910
12419
  //#endregion
11911
12420
  //#region ../theme-core/src/site-styles/runtimeCompiler.ts
12421
+ function defineSectionForegroundRuntimeTokens(input) {
12422
+ return {
12423
+ textColor: requireThemeColorToken(input.textColor),
12424
+ headingColor: requireThemeColorToken(input.headingColor),
12425
+ linkColor: requireThemeColorToken(input.linkColor),
12426
+ supportingColor: requireThemeColorToken(input.supportingColor)
12427
+ };
12428
+ }
12429
+ function requireThemeColorToken(value) {
12430
+ const token = parseThemeColorToken(value);
12431
+ if (!token) throw new Error(`Invalid section foreground Theme color token: ${String(value)}`);
12432
+ return token;
12433
+ }
11912
12434
  function defineDesignRuntimeRules(rules) {
11913
12435
  return rules;
11914
12436
  }
@@ -11930,6 +12452,8 @@ var init_runtimeCompiler = __esmMin((() => {
11930
12452
  init_colors();
11931
12453
  init_designState();
11932
12454
  init_sectionTransitions();
12455
+ init_tokens();
12456
+ init_gradients();
11933
12457
  defaultDesignRuntimeRules = defineDesignRuntimeRules({
11934
12458
  sectionSurfaces: {
11935
12459
  base: {},
@@ -12325,13 +12849,14 @@ function inferHeaderCurationFromLegacyLooks(lookIds, recipes) {
12325
12849
  recommendedHeaderStyleChoicesByLayout: stylesByLayout
12326
12850
  };
12327
12851
  }
12328
- var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, curatedSiteStyleIdValues, quietBudget, accentLedQuietBudget, balancedBudget, expressiveBudget, kirtanOrnateDesignRuntimeRules, expressiveUnderlineInputs, ornateDarkInputs, generatedContentFrameKinds, curatedSiteStyles;
12852
+ var SOFT_EARTH_SITE_STYLE_ID_VALUE, SOFT_EARTH_SITE_STYLE_ID, curatedSiteStyleIdValues, quietBudget, accentLedQuietBudget, balancedBudget, expressiveBudget, kirtanOrnateDesignRuntimeRules, primaryGlowGradientPresetId, fulcrumDesignRuntimeRules, expressiveUnderlineInputs, ornateDarkInputs, generatedContentFrameKinds, curatedSiteStyles;
12329
12853
  var init_curatedSiteStyles = __esmMin((() => {
12330
12854
  init_personalities();
12331
12855
  init_curated();
12332
12856
  init_siteStyleDefaults$1();
12333
12857
  init_siteStyleDefaults();
12334
12858
  init_testimonialQuotePresets();
12859
+ init_gradients();
12335
12860
  init_headerLooks();
12336
12861
  init_footerLooks();
12337
12862
  init_sourceCatalogs();
@@ -12398,24 +12923,24 @@ var init_curatedSiteStyles = __esmMin((() => {
12398
12923
  type: "color",
12399
12924
  color: "muted"
12400
12925
  },
12401
- foreground: {
12926
+ foreground: defineSectionForegroundRuntimeTokens({
12402
12927
  textColor: "text",
12403
12928
  headingColor: "primary",
12404
12929
  linkColor: "primary",
12405
12930
  supportingColor: "text"
12406
- }
12931
+ })
12407
12932
  },
12408
12933
  "brand-depth-band": {
12409
12934
  background: {
12410
12935
  type: "color",
12411
12936
  color: "primary-800"
12412
12937
  },
12413
- foreground: {
12938
+ foreground: defineSectionForegroundRuntimeTokens({
12414
12939
  textColor: "text",
12415
12940
  headingColor: "primary",
12416
12941
  linkColor: "primary",
12417
12942
  supportingColor: "text"
12418
- }
12943
+ })
12419
12944
  },
12420
12945
  "hero-image": {
12421
12946
  background: {
@@ -12423,12 +12948,32 @@ var init_curatedSiteStyles = __esmMin((() => {
12423
12948
  opacity: 1,
12424
12949
  position: "center center"
12425
12950
  },
12426
- foreground: {
12951
+ foreground: defineSectionForegroundRuntimeTokens({
12427
12952
  textColor: "text",
12428
12953
  headingColor: "primary",
12429
12954
  linkColor: "primary",
12430
12955
  supportingColor: "text"
12431
- }
12956
+ })
12957
+ }
12958
+ }
12959
+ });
12960
+ primaryGlowGradientPresetId = parseGradientPresetId("primary-glow");
12961
+ if (!primaryGlowGradientPresetId) throw new Error("Expected primary-glow in the Theme Core gradient catalog");
12962
+ fulcrumDesignRuntimeRules = defineDesignRuntimeRules({
12963
+ ...defaultDesignRuntimeRules,
12964
+ sectionSurfaces: {
12965
+ ...defaultDesignRuntimeRules.sectionSurfaces,
12966
+ "accent-band": {
12967
+ background: {
12968
+ type: "gradient",
12969
+ gradientPresetId: primaryGlowGradientPresetId
12970
+ },
12971
+ foreground: defineSectionForegroundRuntimeTokens({
12972
+ textColor: "primaryForeground",
12973
+ headingColor: "primaryForeground",
12974
+ linkColor: "primaryForeground",
12975
+ supportingColor: "primaryForeground"
12976
+ })
12432
12977
  }
12433
12978
  }
12434
12979
  });
@@ -13605,6 +14150,8 @@ var init_curatedSiteStyles = __esmMin((() => {
13605
14150
  },
13606
14151
  compositionBudget: quietBudget,
13607
14152
  typography: fulcrumTypography,
14153
+ designRuntimeRules: fulcrumDesignRuntimeRules,
14154
+ recommendedAppearancePresetIds: ["cta-accent-band"],
13608
14155
  themeOverrides: {
13609
14156
  shadow: { colorToken: "primary" },
13610
14157
  accordions: {
@@ -14132,220 +14679,6 @@ var init_site_styles = __esmMin((() => {
14132
14679
  init_types$7();
14133
14680
  }));
14134
14681
  //#endregion
14135
- //#region ../theme-core/src/gradients/presets.ts
14136
- var GRADIENT_PRESETS;
14137
- var init_presets$2 = __esmMin((() => {
14138
- GRADIENT_PRESETS = [
14139
- {
14140
- id: "primary-secondary",
14141
- name: "Primary to Secondary",
14142
- description: "Blend your primary and secondary brand colors",
14143
- type: "linear",
14144
- angle: 135,
14145
- stops: [{
14146
- color: "primary-500",
14147
- position: 0
14148
- }, {
14149
- color: "secondary-500",
14150
- position: 100
14151
- }]
14152
- },
14153
- {
14154
- id: "primary-accent",
14155
- name: "Primary to Accent",
14156
- description: "Energetic gradient from primary to accent",
14157
- type: "linear",
14158
- angle: 135,
14159
- stops: [{
14160
- color: "primary-500",
14161
- position: 0
14162
- }, {
14163
- color: "accent-500",
14164
- position: 100
14165
- }]
14166
- },
14167
- {
14168
- id: "secondary-accent",
14169
- name: "Secondary to Accent",
14170
- description: "Vibrant secondary to accent blend",
14171
- type: "linear",
14172
- angle: 135,
14173
- stops: [{
14174
- color: "secondary-500",
14175
- position: 0
14176
- }, {
14177
- color: "accent-500",
14178
- position: 100
14179
- }]
14180
- },
14181
- {
14182
- id: "primary-light-dark",
14183
- name: "Primary Light to Dark",
14184
- description: "Subtle primary color fade",
14185
- type: "linear",
14186
- angle: 180,
14187
- stops: [{
14188
- color: "primary-500",
14189
- position: 0
14190
- }, {
14191
- color: "primary-900",
14192
- position: 100
14193
- }]
14194
- },
14195
- {
14196
- id: "primary-dark-light",
14197
- name: "Primary Dark to Light",
14198
- description: "Reverse primary fade",
14199
- type: "linear",
14200
- angle: 180,
14201
- stops: [{
14202
- color: "primary-900",
14203
- position: 0
14204
- }, {
14205
- color: "primary-50",
14206
- position: 100
14207
- }]
14208
- },
14209
- {
14210
- id: "secondary-light-dark",
14211
- name: "Secondary Light to Dark",
14212
- description: "Subtle secondary color fade",
14213
- type: "linear",
14214
- angle: 180,
14215
- stops: [{
14216
- color: "secondary-500",
14217
- position: 0
14218
- }, {
14219
- color: "secondary-900",
14220
- position: 100
14221
- }]
14222
- },
14223
- {
14224
- id: "accent-light-dark",
14225
- name: "Accent Light to Dark",
14226
- description: "Accent color depth fade",
14227
- type: "linear",
14228
- angle: 180,
14229
- stops: [{
14230
- color: "accent-500",
14231
- position: 0
14232
- }, {
14233
- color: "accent-900",
14234
- position: 100
14235
- }]
14236
- },
14237
- {
14238
- id: "background-surface",
14239
- name: "Background to Surface",
14240
- description: "Subtle depth using base colors",
14241
- type: "linear",
14242
- angle: 180,
14243
- stops: [{
14244
- color: "background",
14245
- position: 0
14246
- }, {
14247
- color: "surface",
14248
- position: 100
14249
- }]
14250
- },
14251
- {
14252
- id: "neutral-fade",
14253
- name: "Neutral Gradient",
14254
- description: "Elegant neutral color fade",
14255
- type: "linear",
14256
- angle: 180,
14257
- stops: [{
14258
- color: "neutral-900",
14259
- position: 0
14260
- }, {
14261
- color: "neutral-50",
14262
- position: 100
14263
- }]
14264
- },
14265
- {
14266
- id: "primary-radial",
14267
- name: "Primary Spotlight",
14268
- description: "Radial primary gradient from center",
14269
- type: "radial",
14270
- position: "center",
14271
- stops: [{
14272
- color: "primary-500",
14273
- position: 0
14274
- }, {
14275
- color: "primary-900",
14276
- position: 100
14277
- }]
14278
- },
14279
- {
14280
- id: "accent-radial",
14281
- name: "Accent Spotlight",
14282
- description: "Radial accent gradient from center",
14283
- type: "radial",
14284
- position: "center",
14285
- stops: [{
14286
- color: "accent-500",
14287
- position: 0
14288
- }, {
14289
- color: "accent-900",
14290
- position: 100
14291
- }]
14292
- },
14293
- {
14294
- id: "primary-secondary-accent",
14295
- name: "Brand Trio",
14296
- description: "All three brand colors in harmony",
14297
- type: "linear",
14298
- angle: 135,
14299
- stops: [
14300
- {
14301
- color: "primary-500",
14302
- position: 0
14303
- },
14304
- {
14305
- color: "secondary-500",
14306
- position: 50
14307
- },
14308
- {
14309
- color: "accent-500",
14310
- position: 100
14311
- }
14312
- ]
14313
- }
14314
- ];
14315
- }));
14316
- //#endregion
14317
- //#region ../theme-core/src/gradients/utils.ts
14318
- /**
14319
- * Convert a GradientConfig to a CSS gradient string
14320
- *
14321
- * @param config - The gradient configuration using theme tokens
14322
- * @param tokens - Map of theme color tokens to hex values
14323
- * @returns CSS gradient string (e.g., "linear-gradient(180deg, #3b82f6 0%, #f59e0b 100%)")
14324
- */
14325
- function gradientToCss(config, tokens) {
14326
- const stops = config.stops.map((stop) => {
14327
- return `${tokens[stop.color] ?? "#000000"} ${stop.position}%`;
14328
- }).join(", ");
14329
- const type = config.type ?? "linear";
14330
- if (type === "radial") {
14331
- const position = config.position ?? "center";
14332
- return `radial-gradient(${config.shape ?? "circle"} at ${position}, ${stops})`;
14333
- }
14334
- if (type === "conic") {
14335
- const position = config.position ?? "center";
14336
- return `conic-gradient(from ${config.angle ?? 0}deg at ${position}, ${stops})`;
14337
- }
14338
- return `linear-gradient(${config.angle ?? 180}deg, ${stops})`;
14339
- }
14340
- var init_utils$2 = __esmMin((() => {}));
14341
- //#endregion
14342
- //#region ../theme-core/src/gradients/index.ts
14343
- var init_gradients = __esmMin((() => {
14344
- init_types$9();
14345
- init_presets$2();
14346
- init_utils$2();
14347
- }));
14348
- //#endregion
14349
14682
  //#region ../theme-core/src/footer/mode.ts
14350
14683
  var init_mode = __esmMin((() => {}));
14351
14684
  //#endregion
@@ -15412,6 +15745,7 @@ var init_fonts = __esmMin((() => {}));
15412
15745
  var init_buildThemeRuntimeFromBridge = __esmMin((() => {
15413
15746
  init_shadow();
15414
15747
  init_customCss();
15748
+ init_core$2();
15415
15749
  init_core$1();
15416
15750
  init_status();
15417
15751
  init_blocks$2();
@@ -16216,7 +16550,7 @@ function createSdkSelectField(input) {
16216
16550
  }
16217
16551
  }));
16218
16552
  }
16219
- var visibilityLevels, MEDIA_KINDS, DISPLAY_MEDIA_KINDS, PUBLIC_FILE_FIELD_KINDS, siteOptionSources, mediaDeliverySchema, selectOptionSchema, selectSourceSchema, visibleWhenPredicateSchema, visibleWhenSchema, uiSchema, baseFieldSchema, textFieldSchema, richTextFieldSchema, inlineTextFieldSchema, mediaFieldSchema, fileFieldSchema, booleanFieldSchema, dateFieldSchema, timeFieldSchema, dateTimeFieldSchema, slugFieldSchema, urlFieldSchema, linkFieldSchema, selectFieldSchema, referenceFieldSchema, itemTypeSchema, repeaterFieldSchema, groupFieldSchema, modalFieldSchema, numberFieldSchema, tabDefinitionSchema, tabGroupFieldSchema, presetOptionSchema, presetOrCustomFieldSchema, contentTypeSelectFieldSchema, entryPickerFieldSchema, _fieldSchemaInternal, fieldSchema, slotSchema, typographyTokens, colorTokens, spacingTokens, radiusTokens, styleTokenSchema, behaviourSchema, quickFieldPrioritySchema, previewCustomizeManifestCurationSchema, blockCategoryEnum;
16553
+ var visibilityLevels, MEDIA_KINDS, DISPLAY_MEDIA_KINDS, PUBLIC_FILE_FIELD_KINDS, siteOptionSources, mediaDeliverySchema, selectOptionSchema, selectSourceSchema, visibleWhenPredicateSchema, visibleWhenSchema, uiSchema, baseFieldSchema, textFieldSchema, richTextFieldSchema, inlineTextFieldSchema, mediaFieldSchema, fileFieldSchema, booleanFieldSchema, dateFieldSchema, timeFieldSchema, dateTimeFieldSchema, slugFieldSchema, urlFieldSchema, linkFieldSchema, selectFieldSchema, referenceFieldSchema, itemTypeSchema, repeaterFieldSchema, groupFieldSchema, modalFieldSchema, numberFieldSchema, tabDefinitionSchema, tabGroupFieldSchema, presetOptionSchema, presetOrCustomFieldSchema, contentTypeSelectFieldSchema, entryPickerFieldSchema, _fieldSchemaInternal, fieldSchema, slotSchema, typographyTokens, colorTokens, spacingTokens, radiusTokens, styleTokenSchema, behaviourSchema, quickFieldPrioritySchema, previewCustomizeManifestCurationSchema, blockCategoryEnum, blockContentSourceKinds, blockContentSourceSchema;
16220
16554
  var init_schema = __esmMin((() => {
16221
16555
  init_src$3();
16222
16556
  init_node();
@@ -16747,6 +17081,21 @@ var init_schema = __esmMin((() => {
16747
17081
  "layout",
16748
17082
  "interactive"
16749
17083
  ]);
17084
+ blockContentSourceKinds = [
17085
+ "inline",
17086
+ "entries",
17087
+ "mixed"
17088
+ ];
17089
+ blockContentSourceSchema = z$1.object({
17090
+ kind: z$1.enum(blockContentSourceKinds),
17091
+ contentType: z$1.string().min(1).optional()
17092
+ }).superRefine((value, ctx) => {
17093
+ if (value.kind === "inline" && value.contentType) ctx.addIssue({
17094
+ code: z$1.ZodIssueCode.custom,
17095
+ path: ["contentType"],
17096
+ message: "contentType is not allowed when contentSource.kind is \"inline\""
17097
+ });
17098
+ });
16750
17099
  z$1.object({
16751
17100
  name: z$1.string().min(1),
16752
17101
  version: z$1.string().min(1),
@@ -16777,6 +17126,12 @@ var init_schema = __esmMin((() => {
16777
17126
  }).optional()).optional(),
16778
17127
  category: blockCategoryEnum.optional(),
16779
17128
  contentTypes: z$1.array(z$1.string()).optional(),
17129
+ /**
17130
+ * Explicit content-source classification (inline / entries / mixed). Optional at the
17131
+ * schema level for backward compatibility with SDK-defined custom blocks, but every
17132
+ * registered SYSTEM block must declare it (enforced by a registry-wide test).
17133
+ */
17134
+ contentSource: blockContentSourceSchema.optional(),
16780
17135
  tags: z$1.array(z$1.string()).optional(),
16781
17136
  icon: z$1.string().optional()
16782
17137
  });
@@ -19927,9 +20282,15 @@ var init_button = __esmMin((() => {
19927
20282
  //#endregion
19928
20283
  //#region ../blocks/src/system/fields/ctas.ts
19929
20284
  function createCtasRepeater(options = {}) {
19930
- const { id = "ctas", label = "Calls to action", itemLabel = "CTA", minItems = 0, maxItems, button } = options;
20285
+ const { id = "ctas", label = "Calls to action", itemLabel = "CTA", minItems = 0, maxItems, button, defaultValue } = options;
20286
+ const fieldId = id;
20287
+ const buttonField = createButtonGroup({
20288
+ showGroupLabel: false,
20289
+ ...button ?? {},
20290
+ flattenInRepeater: true
20291
+ });
19931
20292
  return {
19932
- id,
20293
+ id: fieldId,
19933
20294
  type: "repeater",
19934
20295
  label,
19935
20296
  itemLabel,
@@ -19938,11 +20299,8 @@ function createCtasRepeater(options = {}) {
19938
20299
  maxItems,
19939
20300
  required: false,
19940
20301
  allowConversion: true,
19941
- schema: { fields: [createButtonGroup({
19942
- showGroupLabel: false,
19943
- ...button ?? {},
19944
- flattenInRepeater: true
19945
- })] }
20302
+ ...defaultValue !== void 0 ? { defaultValue: [...defaultValue] } : {},
20303
+ schema: { fields: [buttonField] }
19946
20304
  };
19947
20305
  }
19948
20306
  var init_ctas = __esmMin((() => {
@@ -20004,6 +20362,7 @@ var init_heroCtaRow = __esmMin((() => {
20004
20362
  label: "Calls to action",
20005
20363
  itemLabel: "CTA",
20006
20364
  maxItems: 3,
20365
+ defaultValue: [],
20007
20366
  button: {
20008
20367
  variants: [
20009
20368
  {
@@ -20082,7 +20441,7 @@ var init_ctaCopy = __esmMin((() => {
20082
20441
  eyebrowPath: "content.eyebrow",
20083
20442
  titlePath: "content.title",
20084
20443
  className: "cta-heading"
20085
- }), richText$1({ className: "cta-content rb-prose rb-mx-auto rb-max-w-none" }, when$1("content.content"), bind$2("content.content"))]
20444
+ }), richText$1({ className: "cta-content rb-prose rb-mx-auto rb-max-w-none" }, when$1("content"), bind$2("content"))]
20086
20445
  });
20087
20446
  }));
20088
20447
  //#endregion
@@ -22061,6 +22420,7 @@ function createBlockManifest(config) {
22061
22420
  previewCustomize: config.previewCustomize,
22062
22421
  category: config.category,
22063
22422
  contentTypes: config.contentTypes ? [...config.contentTypes] : void 0,
22423
+ contentSource: config.contentSource,
22064
22424
  tags: config.tags ? [...config.tags] : [],
22065
22425
  icon: config.icon ?? "Box",
22066
22426
  layout,
@@ -22221,6 +22581,7 @@ var init_hero = __esmMin((() => {
22221
22581
  title: "Hero",
22222
22582
  titleSource: "headline",
22223
22583
  category: "layout",
22584
+ contentSource: { kind: "inline" },
22224
22585
  includeContainerStyles: true,
22225
22586
  promotedFields: ["_sectionStyles.background.image"],
22226
22587
  fragments: [
@@ -22510,6 +22871,7 @@ var init_intro = __esmMin((() => {
22510
22871
  id: "block.intro",
22511
22872
  title: "Intro",
22512
22873
  category: "layout",
22874
+ contentSource: { kind: "inline" },
22513
22875
  includeContainerStyles: true,
22514
22876
  titleSource: "title",
22515
22877
  previewCustomize: { quickFieldPriority: [
@@ -22704,6 +23066,7 @@ var init_body_text = __esmMin((() => {
22704
23066
  title: "Body Text",
22705
23067
  titleSource: "heading",
22706
23068
  category: "content",
23069
+ contentSource: { kind: "inline" },
22707
23070
  fragments: [{
22708
23071
  fragment: bodyCopyFragment,
22709
23072
  fieldPriority: 0
@@ -22766,6 +23129,10 @@ var init_blog_post = __esmMin((() => {
22766
23129
  description: "Highlights a single blog post with title, image, and excerpt.",
22767
23130
  category: "blog",
22768
23131
  contentTypes: ["post"],
23132
+ contentSource: {
23133
+ kind: "entries",
23134
+ contentType: "post"
23135
+ },
22769
23136
  tags: [
22770
23137
  "blog",
22771
23138
  "post",
@@ -23076,6 +23443,10 @@ var init_blog_listing = __esmMin((() => {
23076
23443
  ],
23077
23444
  description: "Display a collection of blog posts in grid or stack layout.",
23078
23445
  contentTypes: ["post"],
23446
+ contentSource: {
23447
+ kind: "entries",
23448
+ contentType: "post"
23449
+ },
23079
23450
  tags: [
23080
23451
  "blog",
23081
23452
  "posts",
@@ -23125,6 +23496,7 @@ var init_cta_full = __esmMin((() => {
23125
23496
  id: "block.cta-full",
23126
23497
  title: "Full-width CTA",
23127
23498
  category: "marketing",
23499
+ contentSource: { kind: "inline" },
23128
23500
  fragments: [{
23129
23501
  fragment: ctaCopyFragment,
23130
23502
  fieldPriority: 0
@@ -23167,6 +23539,7 @@ var init_single_button = __esmMin((() => {
23167
23539
  id: "block.single-button",
23168
23540
  title: "Single Button",
23169
23541
  category: "marketing",
23542
+ contentSource: { kind: "inline" },
23170
23543
  fragments: [{
23171
23544
  fragment: singleButtonFragment,
23172
23545
  fieldPriority: 0
@@ -23448,6 +23821,7 @@ var init_form = __esmMin((() => {
23448
23821
  paletteHidden: false
23449
23822
  },
23450
23823
  category: "interactive",
23824
+ contentSource: { kind: "inline" },
23451
23825
  tags: [
23452
23826
  "form",
23453
23827
  "contact",
@@ -23518,6 +23892,7 @@ var init_contact_newsletter = __esmMin((() => {
23518
23892
  titleSource: "contactTitle",
23519
23893
  description: "Two-column newsletter signup and contact form section.",
23520
23894
  category: "interactive",
23895
+ contentSource: { kind: "inline" },
23521
23896
  layout: contactNewsletterLayout,
23522
23897
  defaultVariant: "default",
23523
23898
  variants: { default: contactNewsletterLayout },
@@ -23733,6 +24108,7 @@ var init_faq = __esmMin((() => {
23733
24108
  title: "FAQ",
23734
24109
  titleSource: "title",
23735
24110
  category: "content",
24111
+ contentSource: { kind: "inline" },
23736
24112
  includeContainerStyles: true,
23737
24113
  fragments: [{
23738
24114
  fragment: faqHeadingFragment,
@@ -25459,6 +25835,7 @@ var init_site_header = __esmMin((() => {
25459
25835
  id: "block.site-header",
25460
25836
  title: "Site Header",
25461
25837
  category: "layout",
25838
+ contentSource: { kind: "inline" },
25462
25839
  additionalFields: [{
25463
25840
  id: "mode",
25464
25841
  type: "select",
@@ -25672,6 +26049,7 @@ var init_site_footer = __esmMin((() => {
25672
26049
  id: "block.site-footer",
25673
26050
  title: "Site Footer",
25674
26051
  category: "layout",
26052
+ contentSource: { kind: "inline" },
25675
26053
  skipSectionStyles: true,
25676
26054
  layout: footerLayout,
25677
26055
  description: "Site-wide composed footer with canonical shared details.",
@@ -25814,6 +26192,7 @@ var init_testimonials = __esmMin((() => {
25814
26192
  id: "block.testimonials",
25815
26193
  title: "Testimonials",
25816
26194
  category: "marketing",
26195
+ contentSource: { kind: "inline" },
25817
26196
  includeContainerStyles: true,
25818
26197
  previewCustomize: { quickFieldPriority: [
25819
26198
  "avatarLayout",
@@ -25983,6 +26362,7 @@ var init_columns = __esmMin((() => {
25983
26362
  id: "block.columns",
25984
26363
  title: "Columns",
25985
26364
  category: "layout",
26365
+ contentSource: { kind: "inline" },
25986
26366
  additionalFields: [
25987
26367
  parseFieldDefinition({
25988
26368
  id: "equalHeight",
@@ -26230,6 +26610,7 @@ var init_collection = __esmMin((() => {
26230
26610
  id: "block.collection",
26231
26611
  title: "Collection",
26232
26612
  category: "layout",
26613
+ contentSource: { kind: "inline" },
26233
26614
  additionalFields: [
26234
26615
  parseFieldDefinition({
26235
26616
  id: "layout",
@@ -27369,6 +27750,7 @@ var init_feature_cards = __esmMin((() => {
27369
27750
  id: "block.feature-cards",
27370
27751
  title: "Feature Cards",
27371
27752
  category: "layout",
27753
+ contentSource: { kind: "inline" },
27372
27754
  includeContainerStyles: true,
27373
27755
  titleSource: "title",
27374
27756
  additionalFields: [
@@ -27773,6 +28155,7 @@ var init_media_text = __esmMin((() => {
27773
28155
  id: "block.media-text",
27774
28156
  title: "Media and Text",
27775
28157
  category: "layout",
28158
+ contentSource: { kind: "inline" },
27776
28159
  includeContainerStyles: true,
27777
28160
  titleSource: "title",
27778
28161
  previewCustomize: { quickFieldPriority: [
@@ -28184,6 +28567,7 @@ var init_appointment_booking = __esmMin((() => {
28184
28567
  paletteHidden: false
28185
28568
  },
28186
28569
  category: "interactive",
28570
+ contentSource: { kind: "inline" },
28187
28571
  tags: [
28188
28572
  "booking",
28189
28573
  "appointment",
@@ -28360,6 +28744,7 @@ var init_weekly_slot_availability = __esmMin((() => {
28360
28744
  paletteHidden: false
28361
28745
  },
28362
28746
  category: "interactive",
28747
+ contentSource: { kind: "inline" },
28363
28748
  tags: [
28364
28749
  "booking",
28365
28750
  "appointment",
@@ -29919,6 +30304,7 @@ var init_event_registration = __esmMin((() => {
29919
30304
  init_builder$1();
29920
30305
  init_styledSection();
29921
30306
  init_fragments$1();
30307
+ init_button();
29922
30308
  init_api_bindings();
29923
30309
  init_shared$3();
29924
30310
  init_shop_shared();
@@ -29932,6 +30318,7 @@ var init_event_registration = __esmMin((() => {
29932
30318
  titleSource: "heading",
29933
30319
  description: "Multi-step event registration form",
29934
30320
  category: "interactive",
30321
+ contentSource: { kind: "inline" },
29935
30322
  tags: [
29936
30323
  "events",
29937
30324
  "registration",
@@ -30038,15 +30425,9 @@ var init_event_registration = __esmMin((() => {
30038
30425
  defaultValue: "Complete Registration",
30039
30426
  maxLength: 40
30040
30427
  },
30041
- {
30042
- id: "buttonVariant",
30043
- type: "select",
30044
- label: "Button style",
30428
+ createButtonVariantField({
30045
30429
  description: "Choose a button style from your theme",
30046
- required: false,
30047
- multiple: false,
30048
- defaultValue: "primary",
30049
- options: [
30430
+ variants: [
30050
30431
  {
30051
30432
  value: "primary",
30052
30433
  label: "Primary"
@@ -30059,9 +30440,8 @@ var init_event_registration = __esmMin((() => {
30059
30440
  value: "outline",
30060
30441
  label: "Outline"
30061
30442
  }
30062
- ],
30063
- ui: { intent: "style" }
30064
- }
30443
+ ]
30444
+ })
30065
30445
  ],
30066
30446
  layout: [styledSection({
30067
30447
  baseClass: "",
@@ -30278,6 +30658,7 @@ var init_course_registration = __esmMin((() => {
30278
30658
  init_builder$1();
30279
30659
  init_styledSection();
30280
30660
  init_fragments$1();
30661
+ init_button();
30281
30662
  init_api_bindings();
30282
30663
  init_shared$2();
30283
30664
  init_defineBlock();
@@ -30289,6 +30670,7 @@ var init_course_registration = __esmMin((() => {
30289
30670
  titleSource: "heading",
30290
30671
  description: "Enrollment form for multi-session courses",
30291
30672
  category: "interactive",
30673
+ contentSource: { kind: "inline" },
30292
30674
  tags: [
30293
30675
  "courses",
30294
30676
  "enrollment",
@@ -30402,15 +30784,9 @@ var init_course_registration = __esmMin((() => {
30402
30784
  defaultValue: "Sign up",
30403
30785
  maxLength: 40
30404
30786
  },
30405
- {
30406
- id: "buttonVariant",
30407
- type: "select",
30408
- label: "Button style",
30787
+ createButtonVariantField({
30409
30788
  description: "Choose a button style from your theme",
30410
- required: false,
30411
- multiple: false,
30412
- defaultValue: "primary",
30413
- options: [
30789
+ variants: [
30414
30790
  {
30415
30791
  value: "primary",
30416
30792
  label: "Primary"
@@ -30423,9 +30799,8 @@ var init_course_registration = __esmMin((() => {
30423
30799
  value: "outline",
30424
30800
  label: "Outline"
30425
30801
  }
30426
- ],
30427
- ui: { intent: "style" }
30428
- }
30802
+ ]
30803
+ })
30429
30804
  ],
30430
30805
  layout: [styledSection({
30431
30806
  baseClass: "",
@@ -30506,6 +30881,7 @@ var init_event_details = __esmMin((() => {
30506
30881
  titleSource: "heading",
30507
30882
  description: "Date/time, venue, map, and other dates for an event",
30508
30883
  category: "content",
30884
+ contentSource: { kind: "entries" },
30509
30885
  tags: [
30510
30886
  "events",
30511
30887
  "venue",
@@ -30720,6 +31096,7 @@ var init_course_details = __esmMin((() => {
30720
31096
  titleSource: "heading",
30721
31097
  description: "Schedule, venue, price, and enrollment status for a course",
30722
31098
  category: "content",
31099
+ contentSource: { kind: "entries" },
30723
31100
  tags: [
30724
31101
  "courses",
30725
31102
  "schedule",
@@ -31023,6 +31400,7 @@ var init_event_spotlight = __esmMin((() => {
31023
31400
  paletteHidden: false
31024
31401
  },
31025
31402
  category: "content",
31403
+ contentSource: { kind: "entries" },
31026
31404
  tags: [
31027
31405
  "events",
31028
31406
  "featured",
@@ -31687,6 +32065,7 @@ var init_event_listing = __esmMin((() => {
31687
32065
  paletteHidden: true
31688
32066
  },
31689
32067
  category: "interactive",
32068
+ contentSource: { kind: "entries" },
31690
32069
  tags: [
31691
32070
  "events",
31692
32071
  "listing",
@@ -32782,6 +33161,7 @@ var init_event_calendar = __esmMin((() => {
32782
33161
  paletteHidden: false
32783
33162
  },
32784
33163
  category: "interactive",
33164
+ contentSource: { kind: "entries" },
32785
33165
  tags: [
32786
33166
  "events",
32787
33167
  "calendar",
@@ -33203,6 +33583,7 @@ var init_recurring_schedule = __esmMin((() => {
33203
33583
  titleSource: "heading",
33204
33584
  description: "A compact weekly schedule with one row per recurring series.",
33205
33585
  category: "interactive",
33586
+ contentSource: { kind: "entries" },
33206
33587
  icon: "CalendarDays",
33207
33588
  tags: [
33208
33589
  "schedule",
@@ -33711,7 +34092,10 @@ var init_offerings_preview = __esmMin((() => {
33711
34092
  label: "Link"
33712
34093
  }
33713
34094
  ],
33714
- ui: { intent: "display" }
34095
+ ui: {
34096
+ intent: "display",
34097
+ widget: "buttonVariant"
34098
+ }
33715
34099
  },
33716
34100
  {
33717
34101
  id: "buttonText",
@@ -33764,6 +34148,7 @@ var init_offerings_preview = __esmMin((() => {
33764
34148
  paletteHidden: false
33765
34149
  },
33766
34150
  category: "content",
34151
+ contentSource: { kind: "mixed" },
33767
34152
  tags: [
33768
34153
  "offerings",
33769
34154
  "events",
@@ -34078,6 +34463,7 @@ var init_embed = __esmMin((() => {
34078
34463
  id: "block.embed",
34079
34464
  title: "Embed Content",
34080
34465
  category: "content",
34466
+ contentSource: { kind: "entries" },
34081
34467
  titleSource: "heading",
34082
34468
  additionalFields: embedFields,
34083
34469
  layout: embedLayout,
@@ -34366,6 +34752,7 @@ var init_image_gallery = __esmMin((() => {
34366
34752
  id: "block.image-gallery",
34367
34753
  title: "Image Gallery",
34368
34754
  category: "content",
34755
+ contentSource: { kind: "inline" },
34369
34756
  previewCustomize: { quickFieldPriority: [
34370
34757
  "aspectRatio",
34371
34758
  "slidesToShow",
@@ -35174,6 +35561,7 @@ var init_video_grid = __esmMin((() => {
35174
35561
  id: "block.video-grid",
35175
35562
  title: "Video Grid",
35176
35563
  category: "media",
35564
+ contentSource: { kind: "inline" },
35177
35565
  skipSectionStyles: true,
35178
35566
  additionalFields: fields,
35179
35567
  layout: videoGridLayout,
@@ -35242,6 +35630,7 @@ var init_audio_player = __esmMin((() => {
35242
35630
  title: "Audio Player",
35243
35631
  titleSource: "title",
35244
35632
  category: "media",
35633
+ contentSource: { kind: "inline" },
35245
35634
  description: "Add a branded audio player for a single track.",
35246
35635
  tags: [
35247
35636
  "audio",
@@ -35331,6 +35720,7 @@ var init_file_download = __esmMin((() => {
35331
35720
  title: "File Download",
35332
35721
  titleSource: ["title", "file.filename"],
35333
35722
  category: "media",
35723
+ contentSource: { kind: "inline" },
35334
35724
  description: "Add a simple public download link for a document, ZIP, or audio file.",
35335
35725
  tags: [
35336
35726
  "file",
@@ -36312,6 +36702,7 @@ var init_shop = __esmMin((() => {
36312
36702
  paletteHidden: false
36313
36703
  },
36314
36704
  category: "interactive",
36705
+ contentSource: { kind: "entries" },
36315
36706
  tags: [
36316
36707
  "shop",
36317
36708
  "passes",
@@ -36522,6 +36913,7 @@ var init_product_list = __esmMin((() => {
36522
36913
  paletteHidden: false
36523
36914
  },
36524
36915
  category: "interactive",
36916
+ contentSource: { kind: "entries" },
36525
36917
  tags: [
36526
36918
  "shop",
36527
36919
  "products",
@@ -36677,6 +37069,7 @@ var init_product_detail = __esmMin((() => {
36677
37069
  paletteHidden: false
36678
37070
  },
36679
37071
  category: "interactive",
37072
+ contentSource: { kind: "entries" },
36680
37073
  tags: [
36681
37074
  "shop",
36682
37075
  "product",
@@ -36806,6 +37199,7 @@ var init_cart = __esmMin((() => {
36806
37199
  paletteHidden: false
36807
37200
  },
36808
37201
  category: "interactive",
37202
+ contentSource: { kind: "inline" },
36809
37203
  tags: [
36810
37204
  "shop",
36811
37205
  "cart",
@@ -36901,6 +37295,7 @@ var init_checkout = __esmMin((() => {
36901
37295
  paletteHidden: false
36902
37296
  },
36903
37297
  category: "interactive",
37298
+ contentSource: { kind: "inline" },
36904
37299
  tags: [
36905
37300
  "shop",
36906
37301
  "checkout",
@@ -37122,6 +37517,7 @@ var init_gifting = __esmMin((() => {
37122
37517
  paletteHidden: false
37123
37518
  },
37124
37519
  category: "interactive",
37520
+ contentSource: { kind: "entries" },
37125
37521
  tags: [
37126
37522
  "gifting",
37127
37523
  "gift cards",
@@ -37507,6 +37903,7 @@ var init_newsletter_signup = __esmMin((() => {
37507
37903
  titleSource: "title",
37508
37904
  description: "Newsletter subscription form with configurable field presets.",
37509
37905
  category: "interactive",
37906
+ contentSource: { kind: "inline" },
37510
37907
  fragments: [{
37511
37908
  fragment: newsletterCopyFragment,
37512
37909
  fieldPriority: 0
@@ -37700,6 +38097,7 @@ var init_team_members = __esmMin((() => {
37700
38097
  id: "block.team-members",
37701
38098
  title: "Team Members",
37702
38099
  category: "content",
38100
+ contentSource: { kind: "mixed" },
37703
38101
  titleSource: "heading",
37704
38102
  additionalFields: [
37705
38103
  parseFieldDefinition({
@@ -38133,6 +38531,7 @@ var init_location_map = __esmMin((() => {
38133
38531
  titleSource: "heading",
38134
38532
  description: "Show a business location with an interactive map and directions link.",
38135
38533
  category: "content",
38534
+ contentSource: { kind: "inline" },
38136
38535
  tags: [
38137
38536
  "map",
38138
38537
  "location",
@@ -39353,9 +39752,9 @@ function appendBackgroundMediaClasses(baseClassName, input) {
39353
39752
  ].filter(Boolean).join(" ");
39354
39753
  }
39355
39754
  function gradientPresetCss(value) {
39356
- if (!isString(value)) return null;
39357
- const preset = GRADIENT_PRESETS.find((candidate) => candidate.id === value.trim());
39358
- if (!preset) return null;
39755
+ const presetId = parseGradientPresetId(value);
39756
+ if (!presetId) return null;
39757
+ const preset = getGradientPreset(presetId);
39359
39758
  return gradientToCss(preset, Object.fromEntries(preset.stops.map((stop) => [stop.color, `rgb(var(--tb-${stop.color}))`])));
39360
39759
  }
39361
39760
  var isString, isNumber, resolveImageStyleTransform, resolveImageClassNameTransform, resolveOverlayStyleTransform, backgroundTransforms;
@@ -40791,6 +41190,7 @@ var init_customerMembershipOutcomes = __esmMin((() => {
40791
41190
  "already_refunded",
40792
41191
  "idempotency_amount_mismatch",
40793
41192
  "idempotency_method_mismatch",
41193
+ "idempotency_receipt_mismatch",
40794
41194
  "refund_in_progress"
40795
41195
  ];
40796
41196
  CANONICAL_REFUND_PLANNER_ERROR_CODES = [
@@ -40805,7 +41205,12 @@ var init_customerMembershipOutcomes = __esmMin((() => {
40805
41205
  "payment_intent_not_found",
40806
41206
  "stripe_error",
40807
41207
  "stale_pending_missing_context",
40808
- "non_refundable_deposit_remaining"
41208
+ "non_refundable_deposit_remaining",
41209
+ "deposit_refund_override_required",
41210
+ "refund_revoke_requires_full_line_refund",
41211
+ "payment_receipt_not_found",
41212
+ "payment_receipt_not_refundable",
41213
+ "payment_receipt_attribution_required"
40809
41214
  ];
40810
41215
  [...CANONICAL_REFUND_PLANNER_ERROR_CODES];
40811
41216
  })), STANDARD_LINE_ITEM_REFUND_INVALID_CODES, EVENT_ATTENDEE_REFUND_INVALID_CODES, MANAGED_PRODUCT_REFUND_INVALID_CODES;
@@ -40819,14 +41224,20 @@ var init_bookingRefundOutcomes = __esmMin((() => {
40819
41224
  "missing_credit_customer",
40820
41225
  "deposit_refund_override_required",
40821
41226
  "refund_revoke_requires_full_line_refund",
40822
- "unified_order_link_required"
41227
+ "unified_order_link_required",
41228
+ "payment_receipt_not_found",
41229
+ "payment_receipt_not_refundable",
41230
+ "payment_receipt_attribution_required"
40823
41231
  ];
40824
41232
  EVENT_ATTENDEE_REFUND_INVALID_CODES = ["manual_booking_not_refundable", ...STANDARD_LINE_ITEM_REFUND_INVALID_CODES];
40825
41233
  MANAGED_PRODUCT_REFUND_INVALID_CODES = [
40826
41234
  "credit_refunds_disabled",
40827
41235
  "not_refundable",
40828
41236
  "invalid_amount",
40829
- "amount_exceeds_remaining"
41237
+ "amount_exceeds_remaining",
41238
+ "payment_receipt_not_found",
41239
+ "payment_receipt_not_refundable",
41240
+ "payment_receipt_attribution_required"
40830
41241
  ];
40831
41242
  [...MANAGED_PRODUCT_REFUND_INVALID_CODES];
40832
41243
  [...CANONICAL_ADMIN_REFUND_FAILURE_CODES];