@riverbankcms/sdk 0.104.1 → 0.104.3

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 (120) hide show
  1. package/dist/{PreviewEditorSidebar-CmaPXdKu.mjs → PreviewEditorSidebar-CBMhU9p_.mjs} +3 -3
  2. package/dist/{PreviewEditorUI-C5xRTh2b.mjs → PreviewEditorUI-C5KEw4M8.mjs} +2 -2
  3. package/dist/{SdkPreviewModeRuntime-Eks51NcN.mjs → SdkPreviewModeRuntime-Iq12HjL7.mjs} +1142 -177
  4. package/dist/{SiteChromeCustomizeContext-Bt8zb3qu.mjs → SiteChromeCustomizeContext-Cx0NMdyv.mjs} +1640 -877
  5. package/dist/_dts/ai/src/contracts/proposals.d.ts +10 -0
  6. package/dist/_dts/blocks/src/primitives/layout/Grid.d.ts +12 -8
  7. package/dist/_dts/blocks/src/system/blocks/events/event-calendar.d.ts +3 -0
  8. package/dist/_dts/blocks/src/system/blocks/events/shared/layout.d.ts +11 -1
  9. package/dist/_dts/blocks/src/system/blocks/testimonials.d.ts +7 -1
  10. package/dist/_dts/blocks/src/system/constants/events.d.ts +1 -1
  11. package/dist/_dts/blocks/src/system/fragments/library/testimonialsCarousel.d.ts +12 -0
  12. package/dist/_dts/blocks/src/system/node/validation-constants.d.ts +2 -2
  13. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +14 -0
  14. package/dist/_dts/blocks/src/system/runtime/nodes/buttonAffordance.d.ts +33 -0
  15. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/WeekBoardView.d.ts +28 -0
  16. package/dist/_dts/blocks/src/system/runtime/nodes/events/shared/eventCapacity.d.ts +32 -0
  17. package/dist/_dts/blocks/src/system/runtime/nodes/shared/contract-schemas.d.ts +1 -0
  18. package/dist/_dts/blocks/src/system/runtime/nodes/svg.d.ts +77 -0
  19. package/dist/_dts/blocks/src/system/transforms/registry/_utils/surfaceForegroundStyles.d.ts +2 -0
  20. package/dist/_dts/blocks/src/system/transforms/registry/boxStyles.d.ts +3 -40
  21. package/dist/_dts/blocks/src/system/transforms/registry/formatting.d.ts +14 -0
  22. package/dist/_dts/blocks/src/system/transforms/registry/layout.d.ts +11 -0
  23. package/dist/_dts/core/src/branded.d.ts +5 -0
  24. package/dist/_dts/db/src/generated/supabase/database.types.d.ts +18 -0
  25. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +2 -2
  26. package/dist/_dts/sdk/src/version.d.ts +1 -1
  27. package/dist/_dts/theme-core/src/ThemeScope.d.ts +1 -1
  28. package/dist/_dts/theme-core/src/buttons/affordanceIcons.d.ts +29 -0
  29. package/dist/_dts/theme-core/src/buttons/generateButtonCss.d.ts +6 -0
  30. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  31. package/dist/_dts/theme-core/src/buttons/personalities/flat-ink.d.ts +20 -0
  32. package/dist/_dts/theme-core/src/buttons/personalities/index.d.ts +11 -0
  33. package/dist/_dts/theme-core/src/buttons/personalities/types.d.ts +4 -0
  34. package/dist/_dts/theme-core/src/buttons/types.d.ts +34 -0
  35. package/dist/_dts/theme-core/src/generated/containerResponsiveThemeCss.d.ts +1 -1
  36. package/dist/_dts/theme-core/src/gradients/types.d.ts +27 -3
  37. package/dist/_dts/theme-core/src/mock-themes/all.d.ts +51 -15
  38. package/dist/_dts/theme-core/src/palette/curated/brand-led.d.ts +13 -0
  39. package/dist/_dts/theme-core/src/palette/curated/index.d.ts +12 -0
  40. package/dist/_dts/theme-core/src/palette/historicalThemePalette.d.ts +44 -0
  41. package/dist/_dts/theme-core/src/palette/index.d.ts +1 -0
  42. package/dist/_dts/theme-core/src/palette/legacySelection.d.ts +13 -2
  43. package/dist/_dts/theme-core/src/palette/persistenceReadSource.d.ts +17 -2
  44. package/dist/_dts/theme-core/src/palette/themePaletteCompatibility.d.ts +3 -4
  45. package/dist/_dts/theme-core/src/runtime/themeCssVarNames.d.ts +1 -0
  46. package/dist/_dts/theme-core/src/schema.d.ts +108 -26
  47. package/dist/_dts/theme-core/src/site-styles/accessibleSurfaces.d.ts +2 -1
  48. package/dist/_dts/theme-core/src/site-styles/curatedSiteStyles.d.ts +50 -1
  49. package/dist/_dts/theme-core/src/site-styles/designState.d.ts +2 -2
  50. package/dist/_dts/theme-core/src/site-styles/generatedSchemas.d.ts +4 -2
  51. package/dist/_dts/theme-core/src/site-styles/headerLooks.d.ts +56 -1
  52. package/dist/_dts/theme-core/src/site-styles/typographyPresets.d.ts +16 -1
  53. package/dist/_dts/theme-core/src/status/index.d.ts +0 -1
  54. package/dist/_dts/theme-core/src/surfaces/foregroundContract.d.ts +19 -0
  55. package/dist/_dts/theme-core/src/surfaces/foregroundRoles.d.ts +9 -0
  56. package/dist/_dts/theme-core/src/surfaces/index.d.ts +2 -0
  57. package/dist/_dts/ui/src/button.d.ts +1 -1
  58. package/dist/cli/index.mjs +1558 -468
  59. package/dist/client/{DiscountCodeDisclosure-Dit2aItR.mjs → DiscountCodeDisclosure-BXM73_E5.mjs} +1 -1
  60. package/dist/client/{EventCombined.client-BnREyCjf.mjs → EventCombined.client-DT5elP7j.mjs} +4 -4
  61. package/dist/client/{EventListing.client-0uHld51x.mjs → EventListing.client-pTYGfV9C.mjs} +2 -2
  62. package/dist/client/{LeafletStaticMap-DJcvSfmj.mjs → LeafletStaticMap-dQrhlUe3.mjs} +1 -1
  63. package/dist/client/{MagicLinkForm-EAsIktfw.mjs → MagicLinkForm-u6Dul4j5.mjs} +2 -2
  64. package/dist/client/{StepIndicator-CRR17tYI.mjs → StepIndicator-nWqineJ2.mjs} +2 -2
  65. package/dist/client/{accordion-B47HIuuH.mjs → accordion-CSJcTUyH.mjs} +1 -1
  66. package/dist/client/{bookingForm-I1E-8F9P.mjs → bookingForm-C73wOuVa.mjs} +6 -6
  67. package/dist/client/bookings.mjs +137 -1
  68. package/dist/client/{buttons-BbPn8OKA.mjs → buttons-DfYyqt8C.mjs} +138 -2
  69. package/dist/client/{carousel-OlM7SyBs.mjs → carousel-fMBb0JSc.mjs} +1 -1
  70. package/dist/client/{cart-BKpG5jz6.mjs → cart-BtaCwT3S.mjs} +3 -3
  71. package/dist/client/{checkout-Dmmr6qoU.mjs → checkout-DkTwZSnh.mjs} +3 -3
  72. package/dist/client/client.mjs +2327 -542
  73. package/dist/client/{colorStyles-DuW4Fjqd.mjs → colorStyles-Wyl6JujD.mjs} +45 -4
  74. package/dist/client/{courseRegistration-CflZiqGk.mjs → courseRegistration-DnLmapJu.mjs} +7 -7
  75. package/dist/client/{eventCalendar-BvoLWcp-.mjs → eventCalendar-BvLOc9KY.mjs} +165 -5
  76. package/dist/client/{eventCombined-DsrO8t_t.mjs → eventCombined-kShgJPQr.mjs} +2 -2
  77. package/dist/client/{eventDetails-C3hxgcJm.mjs → eventDetails-C5NTM0Vo.mjs} +3 -3
  78. package/dist/client/{eventListing-C-hb237X.mjs → eventListing-B82ZdKP6.mjs} +2 -2
  79. package/dist/client/{eventRegistration-B0gyzDGi.mjs → eventRegistration-qJVFqBWo.mjs} +7 -7
  80. package/dist/client/{form-C_RUi6oJ.mjs → form-BvAcKiuu.mjs} +2 -2
  81. package/dist/client/{headerSection-IKQiD2U0.mjs → headerSection-NvAiEHAg.mjs} +3 -3
  82. package/dist/client/hooks.mjs +1034 -356
  83. package/dist/client/{locationMap-8ZBrMzRJ.mjs → locationMap-D0j52xfI.mjs} +3 -3
  84. package/dist/client/{media-CZJKL7fi.mjs → media-BCW_g2cQ.mjs} +1 -1
  85. package/dist/client/{newsletterForm-CYk3ucwj.mjs → newsletterForm-B8_i93qH.mjs} +2 -2
  86. package/dist/client/{pricing-B5GmvfIH.mjs → pricing-DIYnyHOk.mjs} +1 -1
  87. package/dist/client/{productDetail-BjS2Dqzo.mjs → productDetail-w0eAHkuQ.mjs} +3 -3
  88. package/dist/client/{productList-BOHvC8My.mjs → productList-Vsguq5Xt.mjs} +3 -3
  89. package/dist/client/{propsDecoder-WS6UEJwZ.mjs → propsDecoder-CD2pJ1WB.mjs} +37 -2
  90. package/dist/client/rendering/client.mjs +1722 -760
  91. package/dist/client/rendering/islands.mjs +19 -19
  92. package/dist/client/rendering.mjs +2303 -518
  93. package/dist/client/{shop-CON03-wN.mjs → shop-Dgxs-Q8F.mjs} +6 -6
  94. package/dist/client/{shop-commerce-DlqrFgH8.mjs → shop-commerce-DJAhsTaT.mjs} +6 -6
  95. package/dist/client/{shop-commerce-store-l74-Kne6.mjs → shop-commerce-store-CfCXltXW.mjs} +1 -1
  96. package/dist/client/{shopShared-CQheEXSg.mjs → shopShared-CmDcPXUt.mjs} +2 -2
  97. package/dist/client/{useDiscountCodeUi-v6OluyWl.mjs → useDiscountCodeUi-CirrT2bM.mjs} +1 -1
  98. package/dist/client/{useEventFilters-BqSTcNOf.mjs → useEventFilters-CNZxlCcO.mjs} +5 -5
  99. package/dist/client/{usePolling-DMfADjIF.mjs → usePolling-Baks_iBI.mjs} +2 -2
  100. package/dist/preview-next/client/runtime.mjs +3 -3
  101. package/dist/{sdk-runtime-BUmJ0DaT.mjs → sdk-runtime-BfNiFeNJ.mjs} +1 -1
  102. package/dist/{separator-Dd-JYok7.mjs → separator-BhAR_Xmf.mjs} +1 -1
  103. package/dist/server/components.mjs +2293 -531
  104. package/dist/server/config-validation.mjs +1040 -357
  105. package/dist/server/config.mjs +1040 -357
  106. package/dist/server/data.mjs +1034 -356
  107. package/dist/server/index.mjs +1 -1
  108. package/dist/server/next.mjs +2296 -534
  109. package/dist/server/page-converter.mjs +1018 -324
  110. package/dist/server/prebuild.mjs +1 -1
  111. package/dist/server/rendering/server.mjs +2278 -521
  112. package/dist/server/rendering.mjs +2293 -531
  113. package/dist/server/routing.mjs +1092 -338
  114. package/dist/server/server.mjs +1016 -338
  115. package/dist/server/theme-bridge.mjs +1240 -77
  116. package/dist/server/theme.mjs +165 -5
  117. package/dist/styles/index.css +617 -34
  118. package/package.json +1 -1
  119. package/dist/_dts/blocks/src/system/transforms/registry/_utils/sectionForegroundStyles.d.ts +0 -2
  120. package/dist/_dts/theme-core/src/status/contextualColors.d.ts +0 -6
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { t as themeButtonClassName } from "./buttons-BbPn8OKA.mjs";
2
+ import { t as themeButtonClassName } from "./buttons-DfYyqt8C.mjs";
3
3
  import { useId } from "react";
4
4
  import { jsx, jsxs } from "react/jsx-runtime";
5
5
  //#region ../blocks/src/system/runtime/api/types.ts
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import { t as clsx } from "./clsx-DgIEfj3H.mjs";
3
- import { B as groupEventsByDate, D as getEventRuntimeFiltersKey, E as buildEventRuntimeFilters, H as resolveEventLinkProps, I as formatEventTeacherLine, L as formatTime, P as formatEventPrice, R as getCardOrientation, W as getEventAvailability, gt as assertNever, j as formatDate, z as getContainerClass } from "./propsDecoder-WS6UEJwZ.mjs";
4
- import { a as EventCardClient, i as EventPaginatedListView, n as useEventPagination, o as EventFilters, r as toError, t as useEventFilters } from "./useEventFilters-BqSTcNOf.mjs";
3
+ import { B as groupEventsByDate, D as getEventRuntimeFiltersKey, E as buildEventRuntimeFilters, H as resolveEventLinkProps, I as formatEventTeacherLine, L as formatTime, P as formatEventPrice, R as getCardOrientation, W as getEventAvailability, _t as assertNever, j as formatDate, z as getContainerClass } from "./propsDecoder-CD2pJ1WB.mjs";
4
+ import { a as EventCardClient, i as EventPaginatedListView, n as useEventPagination, o as EventFilters, r as toError, t as useEventFilters } from "./useEventFilters-CNZxlCcO.mjs";
5
5
  import { n as useBlockApi } from "./context-BGZNlGXB.mjs";
6
- import { t as themeButtonClassName } from "./buttons-BbPn8OKA.mjs";
6
+ import { t as themeButtonClassName } from "./buttons-DfYyqt8C.mjs";
7
7
  import { t as createBodyThemePortalRoot } from "./themePortalRoot-AGs4cE7t.mjs";
8
8
  import { t as ModalShell } from "./ModalShell-CqkBvBIC.mjs";
9
9
  import React, { createContext, useCallback, useContext, useEffect, useId, useMemo, useReducer, useRef, useState } from "react";
@@ -1237,4 +1237,4 @@ const EventCombinedClient = ({ events: initialEvents, siteId, stage, listLayout
1237
1237
  };
1238
1238
  const EventCombinedIslandClient = (props) => /* @__PURE__ */ jsx(EventCombinedClient, { ...toEventCombinedControllerProps(props) });
1239
1239
  //#endregion
1240
- export { CalendarDayCell as a, useCalendarEvents as c, getOrderedDayNames as d, getWeekCalendarDays as f, WeekAgendaView as i, MONTH_NAMES as l, EventCombinedIslandClient as n, EventModalProvider as o, isSameLocalDay as p, EventModals as r, useEventModal as s, EventCombinedClient as t, formatDateKey as u };
1240
+ export { CalendarDayCell as a, useCalendarEvents as c, getOrderedDayNames as d, getWeekCalendarDayTuple as f, isToday as h, WeekAgendaView as i, MONTH_NAMES as l, isSameLocalDay as m, EventCombinedIslandClient as n, EventModalProvider as o, getWeekCalendarDays as p, EventModals as r, useEventModal as s, EventCombinedClient as t, formatDateKey as u };
@@ -1,6 +1,6 @@
1
1
  "use client";
2
- import { E as buildEventRuntimeFilters } from "./propsDecoder-WS6UEJwZ.mjs";
3
- import { i as EventPaginatedListView, n as useEventPagination, o as EventFilters, t as useEventFilters } from "./useEventFilters-BqSTcNOf.mjs";
2
+ import { E as buildEventRuntimeFilters } from "./propsDecoder-CD2pJ1WB.mjs";
3
+ import { i as EventPaginatedListView, n as useEventPagination, o as EventFilters, t as useEventFilters } from "./useEventFilters-CNZxlCcO.mjs";
4
4
  import { useId, useMemo } from "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/events/EventListing.client.tsx
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { X as isRecord } from "./propsDecoder-WS6UEJwZ.mjs";
2
+ import { Z as isRecord } from "./propsDecoder-CD2pJ1WB.mjs";
3
3
  import { useEffect, useRef, useState } from "react";
4
4
  import { jsx } from "react/jsx-runtime";
5
5
  //#region ../blocks/src/system/runtime/nodes/shared/LeafletStaticMap.tsx
@@ -1,7 +1,7 @@
1
1
  "use client";
2
- import { gt as assertNever } from "./propsDecoder-WS6UEJwZ.mjs";
2
+ import { _t as assertNever } from "./propsDecoder-CD2pJ1WB.mjs";
3
3
  import { n as useBlockApi } from "./context-BGZNlGXB.mjs";
4
- import { t as themeButtonClassName } from "./buttons-BbPn8OKA.mjs";
4
+ import { t as themeButtonClassName } from "./buttons-DfYyqt8C.mjs";
5
5
  import { useEffect, useReducer, useState, useSyncExternalStore } from "react";
6
6
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
7
7
  //#region ../blocks/src/system/runtime/shared/components/ClockIcon.tsx
@@ -1,6 +1,6 @@
1
1
  import { t as clsx } from "./clsx-DgIEfj3H.mjs";
2
- import { Bt as formatCurrencyAmount } from "./propsDecoder-WS6UEJwZ.mjs";
3
- import { i as CheckIcon } from "./useDiscountCodeUi-v6OluyWl.mjs";
2
+ import { Vt as formatCurrencyAmount } from "./propsDecoder-CD2pJ1WB.mjs";
3
+ import { i as CheckIcon } from "./useDiscountCodeUi-CirrT2bM.mjs";
4
4
  import "react";
5
5
  import { jsx, jsxs } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/shared/utils/formatting.ts
@@ -1,4 +1,4 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-WS6UEJwZ.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CD2pJ1WB.mjs";
2
2
  //#region src/rendering/islands/enhancers/accordion.ts
3
3
  const decode = defineIslandPropsDecoder("accordion");
4
4
  function parseDefaultValues(value) {
@@ -1,13 +1,13 @@
1
1
  "use client";
2
2
  import { c as unsafeAsCustomerPassId, d as unsafeAsPassId, l as unsafeAsFormId, o as unsafeAsAppointmentResourceId, s as unsafeAsAppointmentServiceId } from "./colorTokenParts-dT8MISgJ.mjs";
3
- import { n as buildBookingPaymentSelectionViewModel, t as usePolling } from "./usePolling-DMfADjIF.mjs";
4
- import { At as parseBookingLocalDate, Bt as formatCurrencyAmount, Ct as addLocalScheduleDays, Et as formatBookingInstant, Ot as formatLocalScheduleDate, St as reportWorkflowSuccess, _t as clearWorkflowFeedback, at as getBookingServiceSlidingScale, bt as okWith, ct as parseBookingCurrencyInputToCents, dt as resolveBookingPaymentStep, et as logger, ft as resolveBookingSiteId, gt as assertNever, ht as BOOKING_FORM_DATA_RESERVED_KEYS, it as getBookingRedirectStateFromLocation, jt as resolveBookingTimeZoneId, lt as prepareBookingSubmission, mt as toSelectedCollectionOptionKind, nt as formatBookingCentsAsCurrencyInput, ot as getBookingSuccessMessage, pt as resolveDefaultBookingServiceId, rt as formatBookingSubmissionPreparationError, st as isBookingServiceSlidingAmountInRange, t as defineIslandPropsDecoder, tt as deriveBookingFormViewState, ut as resolveAppointmentCheckoutVerificationState, vt as err, xt as reportWorkflowError } from "./propsDecoder-WS6UEJwZ.mjs";
3
+ import { n as buildBookingPaymentSelectionViewModel, t as usePolling } from "./usePolling-Baks_iBI.mjs";
4
+ import { Ct as reportWorkflowSuccess, Dt as formatBookingInstant, Mt as resolveBookingTimeZoneId, St as reportWorkflowError, Vt as formatCurrencyAmount, _t as assertNever, at as getBookingRedirectStateFromLocation, ct as isBookingServiceSlidingAmountInRange, dt as resolveAppointmentCheckoutVerificationState, ft as resolveBookingPaymentStep, gt as BOOKING_FORM_DATA_RESERVED_KEYS, ht as toSelectedCollectionOptionKind, it as formatBookingSubmissionPreparationError, jt as parseBookingLocalDate, kt as formatLocalScheduleDate, lt as parseBookingCurrencyInputToCents, mt as resolveDefaultBookingServiceId, nt as deriveBookingFormViewState, ot as getBookingServiceSlidingScale, pt as resolveBookingSiteId, rt as formatBookingCentsAsCurrencyInput, st as getBookingSuccessMessage, t as defineIslandPropsDecoder, tt as logger, ut as prepareBookingSubmission, vt as clearWorkflowFeedback, wt as addLocalScheduleDays, xt as okWith, yt as err } from "./propsDecoder-CD2pJ1WB.mjs";
5
5
  import { n as useBlockApi, t as BlockApiProvider } from "./context-BGZNlGXB.mjs";
6
6
  import { n as isSpamProtectionEnabled, r as AltchaWidget, t as getChallengeUrl } from "./src-B833rYRr.mjs";
7
- import { i as CheckIcon, n as TerminalPanel, r as StateIcon, t as useDiscountCodeUi } from "./useDiscountCodeUi-v6OluyWl.mjs";
8
- import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-Dit2aItR.mjs";
9
- import { n as SpinnerNode, t as StepIndicator } from "./StepIndicator-CRR17tYI.mjs";
10
- import { t as themeButtonClassName } from "./buttons-BbPn8OKA.mjs";
7
+ import { i as CheckIcon, n as TerminalPanel, r as StateIcon, t as useDiscountCodeUi } from "./useDiscountCodeUi-CirrT2bM.mjs";
8
+ import { t as DiscountCodeDisclosure } from "./DiscountCodeDisclosure-BXM73_E5.mjs";
9
+ import { n as SpinnerNode, t as StepIndicator } from "./StepIndicator-nWqineJ2.mjs";
10
+ import { t as themeButtonClassName } from "./buttons-DfYyqt8C.mjs";
11
11
  import { t as FeedbackMessage } from "./FeedbackMessage-ByMrs3cr.mjs";
12
12
  import { n as getFieldValidationControlProps, t as FieldValidationMessage } from "./FieldValidationMessage-AYanWFb-.mjs";
13
13
  import { t as buildCheckoutReturnUrls } from "./checkoutUrls-Ct8Mxna3.mjs";
@@ -7546,6 +7546,10 @@ const buttonBorderSchema = z$1.object({
7546
7546
  widthClass: z$1.string(),
7547
7547
  colorToken: themeColorTokenSchema
7548
7548
  });
7549
+ const buttonVariantAffordanceSchema = z$1.object({
7550
+ iconId: z$1.string().min(1),
7551
+ colorToken: themeColorTokenSchema.optional()
7552
+ });
7549
7553
  const variantShadowSchema = z$1.object({
7550
7554
  elevation: z$1.enum([
7551
7555
  "none",
@@ -7599,7 +7603,8 @@ const buttonVariantSchema = z$1.object({
7599
7603
  border: buttonBorderSchema.optional(),
7600
7604
  hoverBackgroundToken: z$1.string().optional(),
7601
7605
  effects: variantEffectsSchema.optional(),
7602
- sizes: variantSizeOverridesSchema.optional()
7606
+ sizes: variantSizeOverridesSchema.optional(),
7607
+ affordance: buttonVariantAffordanceSchema.optional()
7603
7608
  });
7604
7609
  const buttonSystemSchema = z$1.object({
7605
7610
  global: buttonGlobalSettingsSchema,
@@ -8193,6 +8198,136 @@ const editorialLink = defineButtonPersonality({
8193
8198
  }
8194
8199
  });
8195
8200
  //#endregion
8201
+ //#region ../theme-core/src/buttons/personalities/flat-ink.ts
8202
+ /**
8203
+ * Flat Ink — a solid ink primary, a hairline ghost secondary, and a single
8204
+ * amber accent climax, all completely flat (no drop shadow) with a modest
8205
+ * radius. Reads as grounded, editorial and clinician-precise: the Fulcrum
8206
+ * physiotherapy voice. The primary shifts to the secondary (moss) on hover and
8207
+ * every variant lifts 2px; the amber accent is meant to be used sparingly as
8208
+ * the page's one conversion climax.
8209
+ */
8210
+ const flatInk = defineButtonPersonality({
8211
+ id: "flat-ink",
8212
+ name: "Flat Ink",
8213
+ description: "Flat solid-ink primary, hairline ghost secondary, and a single amber accent climax — modest radius, no shadow.",
8214
+ tags: {
8215
+ tone: "classic",
8216
+ energy: "calm",
8217
+ motion: "subtle",
8218
+ era: "editorial"
8219
+ },
8220
+ buttonSystem: {
8221
+ global: {
8222
+ cornerStyle: "rounded",
8223
+ shadow: "low",
8224
+ textTransform: "none",
8225
+ fontWeight: 600,
8226
+ borderWidth: 1,
8227
+ typography: "body",
8228
+ letterSpacing: "tight",
8229
+ paddingPreset: "default",
8230
+ hoverTransform: "lift",
8231
+ hoverColor: "none"
8232
+ },
8233
+ sizes: {
8234
+ sm: {
8235
+ padding: "0.625rem 1.125rem",
8236
+ fontSize: "text-sm"
8237
+ },
8238
+ md: { padding: "0.8125rem 1.375rem" },
8239
+ lg: {
8240
+ padding: "0.9375rem 1.625rem",
8241
+ fontSize: "text-lg"
8242
+ },
8243
+ xl: {
8244
+ padding: "1.0625rem 2rem",
8245
+ fontSize: "text-xl"
8246
+ }
8247
+ },
8248
+ variants: [
8249
+ {
8250
+ id: "primary",
8251
+ name: "Primary",
8252
+ enabled: true,
8253
+ priority: 1,
8254
+ background: {
8255
+ type: "solid",
8256
+ colorToken: "primary"
8257
+ },
8258
+ textColorToken: "primaryForeground",
8259
+ borderRadius: "rounded-lg",
8260
+ affordance: {
8261
+ iconId: "ArrowRight",
8262
+ colorToken: "accent"
8263
+ },
8264
+ shadow: {
8265
+ elevation: "none",
8266
+ softness: null,
8267
+ position: "bottom"
8268
+ },
8269
+ effects: { hover: [{
8270
+ effectId: "lift",
8271
+ options: { translateY: "-2px" }
8272
+ }, {
8273
+ effectId: "background-on-hover",
8274
+ options: { colorToken: "secondary" }
8275
+ }] }
8276
+ },
8277
+ {
8278
+ id: "secondary",
8279
+ name: "Secondary",
8280
+ enabled: true,
8281
+ priority: 2,
8282
+ background: { type: "transparent" },
8283
+ textColorToken: "primary",
8284
+ borderRadius: "rounded-lg",
8285
+ border: {
8286
+ widthClass: "border",
8287
+ colorToken: "border"
8288
+ },
8289
+ shadow: {
8290
+ elevation: "none",
8291
+ softness: null,
8292
+ position: "bottom"
8293
+ },
8294
+ effects: { hover: [{
8295
+ effectId: "lift",
8296
+ options: { translateY: "-2px" }
8297
+ }, {
8298
+ effectId: "background-on-hover",
8299
+ options: { colorToken: "surfaceAlt" }
8300
+ }] }
8301
+ },
8302
+ {
8303
+ id: "accent",
8304
+ name: "Accent",
8305
+ enabled: true,
8306
+ priority: 3,
8307
+ background: {
8308
+ type: "solid",
8309
+ colorToken: "accent"
8310
+ },
8311
+ textColorToken: "accentForeground",
8312
+ borderRadius: "rounded-lg",
8313
+ shadow: {
8314
+ elevation: "none",
8315
+ softness: null,
8316
+ position: "bottom"
8317
+ },
8318
+ affordance: {
8319
+ iconId: "ArrowRight",
8320
+ colorToken: "accentForeground"
8321
+ },
8322
+ effects: { hover: [{
8323
+ effectId: "lift",
8324
+ options: { translateY: "-2px" }
8325
+ }] }
8326
+ }
8327
+ ]
8328
+ }
8329
+ });
8330
+ //#endregion
8196
8331
  //#region ../theme-core/src/buttons/personalities/ink-stamp.ts
8197
8332
  /**
8198
8333
  * Ink Stamp — solid earthy fills with a bordered, hand-stamped block-print
@@ -8963,6 +9098,7 @@ const buttonPersonalities = [
8963
9098
  editorialLink,
8964
9099
  pebble,
8965
9100
  inkStamp,
9101
+ flatInk,
8966
9102
  brushedWash,
8967
9103
  showtimePill,
8968
9104
  joyStamp,
@@ -1,4 +1,4 @@
1
- import { $ as themeColorTokenSchema } from "./propsDecoder-WS6UEJwZ.mjs";
1
+ import { et as themeColorTokenSchema } from "./propsDecoder-CD2pJ1WB.mjs";
2
2
  import { z as z$1 } from "zod";
3
3
  //#region ../theme-core/src/buttons/types.ts
4
4
  /**
@@ -176,6 +176,10 @@ const buttonBorderSchema = z$1.object({
176
176
  widthClass: z$1.string(),
177
177
  colorToken: themeColorTokenSchema
178
178
  });
179
+ const buttonVariantAffordanceSchema = z$1.object({
180
+ iconId: z$1.string().min(1),
181
+ colorToken: themeColorTokenSchema.optional()
182
+ });
179
183
  const variantShadowSchema = z$1.object({
180
184
  elevation: z$1.enum([
181
185
  "none",
@@ -229,7 +233,8 @@ const buttonVariantSchema = z$1.object({
229
233
  border: buttonBorderSchema.optional(),
230
234
  hoverBackgroundToken: z$1.string().optional(),
231
235
  effects: variantEffectsSchema.optional(),
232
- sizes: variantSizeOverridesSchema.optional()
236
+ sizes: variantSizeOverridesSchema.optional(),
237
+ affordance: buttonVariantAffordanceSchema.optional()
233
238
  });
234
239
  const buttonSystemSchema = z$1.object({
235
240
  global: buttonGlobalSettingsSchema,
@@ -823,6 +828,136 @@ const editorialLink = defineButtonPersonality({
823
828
  }
824
829
  });
825
830
  //#endregion
831
+ //#region ../theme-core/src/buttons/personalities/flat-ink.ts
832
+ /**
833
+ * Flat Ink — a solid ink primary, a hairline ghost secondary, and a single
834
+ * amber accent climax, all completely flat (no drop shadow) with a modest
835
+ * radius. Reads as grounded, editorial and clinician-precise: the Fulcrum
836
+ * physiotherapy voice. The primary shifts to the secondary (moss) on hover and
837
+ * every variant lifts 2px; the amber accent is meant to be used sparingly as
838
+ * the page's one conversion climax.
839
+ */
840
+ const flatInk = defineButtonPersonality({
841
+ id: "flat-ink",
842
+ name: "Flat Ink",
843
+ description: "Flat solid-ink primary, hairline ghost secondary, and a single amber accent climax — modest radius, no shadow.",
844
+ tags: {
845
+ tone: "classic",
846
+ energy: "calm",
847
+ motion: "subtle",
848
+ era: "editorial"
849
+ },
850
+ buttonSystem: {
851
+ global: {
852
+ cornerStyle: "rounded",
853
+ shadow: "low",
854
+ textTransform: "none",
855
+ fontWeight: 600,
856
+ borderWidth: 1,
857
+ typography: "body",
858
+ letterSpacing: "tight",
859
+ paddingPreset: "default",
860
+ hoverTransform: "lift",
861
+ hoverColor: "none"
862
+ },
863
+ sizes: {
864
+ sm: {
865
+ padding: "0.625rem 1.125rem",
866
+ fontSize: "text-sm"
867
+ },
868
+ md: { padding: "0.8125rem 1.375rem" },
869
+ lg: {
870
+ padding: "0.9375rem 1.625rem",
871
+ fontSize: "text-lg"
872
+ },
873
+ xl: {
874
+ padding: "1.0625rem 2rem",
875
+ fontSize: "text-xl"
876
+ }
877
+ },
878
+ variants: [
879
+ {
880
+ id: "primary",
881
+ name: "Primary",
882
+ enabled: true,
883
+ priority: 1,
884
+ background: {
885
+ type: "solid",
886
+ colorToken: "primary"
887
+ },
888
+ textColorToken: "primaryForeground",
889
+ borderRadius: "rounded-lg",
890
+ affordance: {
891
+ iconId: "ArrowRight",
892
+ colorToken: "accent"
893
+ },
894
+ shadow: {
895
+ elevation: "none",
896
+ softness: null,
897
+ position: "bottom"
898
+ },
899
+ effects: { hover: [{
900
+ effectId: "lift",
901
+ options: { translateY: "-2px" }
902
+ }, {
903
+ effectId: "background-on-hover",
904
+ options: { colorToken: "secondary" }
905
+ }] }
906
+ },
907
+ {
908
+ id: "secondary",
909
+ name: "Secondary",
910
+ enabled: true,
911
+ priority: 2,
912
+ background: { type: "transparent" },
913
+ textColorToken: "primary",
914
+ borderRadius: "rounded-lg",
915
+ border: {
916
+ widthClass: "border",
917
+ colorToken: "border"
918
+ },
919
+ shadow: {
920
+ elevation: "none",
921
+ softness: null,
922
+ position: "bottom"
923
+ },
924
+ effects: { hover: [{
925
+ effectId: "lift",
926
+ options: { translateY: "-2px" }
927
+ }, {
928
+ effectId: "background-on-hover",
929
+ options: { colorToken: "surfaceAlt" }
930
+ }] }
931
+ },
932
+ {
933
+ id: "accent",
934
+ name: "Accent",
935
+ enabled: true,
936
+ priority: 3,
937
+ background: {
938
+ type: "solid",
939
+ colorToken: "accent"
940
+ },
941
+ textColorToken: "accentForeground",
942
+ borderRadius: "rounded-lg",
943
+ shadow: {
944
+ elevation: "none",
945
+ softness: null,
946
+ position: "bottom"
947
+ },
948
+ affordance: {
949
+ iconId: "ArrowRight",
950
+ colorToken: "accentForeground"
951
+ },
952
+ effects: { hover: [{
953
+ effectId: "lift",
954
+ options: { translateY: "-2px" }
955
+ }] }
956
+ }
957
+ ]
958
+ }
959
+ });
960
+ //#endregion
826
961
  //#region ../theme-core/src/buttons/personalities/ink-stamp.ts
827
962
  /**
828
963
  * Ink Stamp — solid earthy fills with a bordered, hand-stamped block-print
@@ -1593,6 +1728,7 @@ const buttonPersonalities = [
1593
1728
  editorialLink,
1594
1729
  pebble,
1595
1730
  inkStamp,
1731
+ flatInk,
1596
1732
  brushedWash,
1597
1733
  showtimePill,
1598
1734
  joyStamp,
@@ -1,4 +1,4 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-WS6UEJwZ.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CD2pJ1WB.mjs";
2
2
  import { t as mountReactIsland } from "./reactMount-SY8AVRof.mjs";
3
3
  import { n as normalizeCarouselProps, t as CarouselNodeClient } from "./carousel.client-CpwTUhIo.mjs";
4
4
  import "react";
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-WS6UEJwZ.mjs";
2
- import { t as CartController } from "./shop-commerce-DlqrFgH8.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-CQheEXSg.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CD2pJ1WB.mjs";
2
+ import { t as CartController } from "./shop-commerce-DJAhsTaT.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-CmDcPXUt.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/cart.client.tsx
@@ -1,6 +1,6 @@
1
- import { t as defineIslandPropsDecoder } from "./propsDecoder-WS6UEJwZ.mjs";
2
- import { n as CheckoutController } from "./shop-commerce-DlqrFgH8.mjs";
3
- import { t as mountShopBlockIsland } from "./shopShared-CQheEXSg.mjs";
1
+ import { t as defineIslandPropsDecoder } from "./propsDecoder-CD2pJ1WB.mjs";
2
+ import { n as CheckoutController } from "./shop-commerce-DJAhsTaT.mjs";
3
+ import { t as mountShopBlockIsland } from "./shopShared-CmDcPXUt.mjs";
4
4
  import "react";
5
5
  import { jsx } from "react/jsx-runtime";
6
6
  //#region ../blocks/src/system/runtime/nodes/checkout.client.tsx