@riverbankcms/sdk 0.60.7 → 0.60.11

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 (44) hide show
  1. package/dist/_dts/api/src/index.d.ts +2 -1
  2. package/dist/_dts/api/src/navigation/linkValue.d.ts +15 -2
  3. package/dist/_dts/api/src/navigation.d.ts +2 -0
  4. package/dist/_dts/blocks/src/index.d.ts +2 -1
  5. package/dist/_dts/blocks/src/system/manifest/fieldValidation/index.d.ts +185 -0
  6. package/dist/_dts/blocks/src/system/manifest/index.d.ts +1 -0
  7. package/dist/_dts/blocks/src/system/manifest/validation.d.ts +2 -84
  8. package/dist/_dts/blocks/src/system/node/fragments/ctaButton.d.ts +2 -2
  9. package/dist/_dts/blocks/src/system/runtime/nodes/basic.d.ts +2 -1
  10. package/dist/_dts/blocks/src/system/types/link.d.ts +100 -2
  11. package/dist/_dts/db/src/schemas/forms.d.ts +24 -3
  12. package/dist/_dts/editor-blocks/src/widgets/link/LinkSummary.d.ts +1 -1
  13. package/dist/_dts/editor-blocks/src/widgets/link/LinkWidget.d.ts +1 -1
  14. package/dist/_dts/editor-blocks/src/widgets/link/utils.d.ts +1 -1
  15. package/dist/_dts/sdk/src/config/typed-entries.d.ts +36 -1
  16. package/dist/_dts/sdk/src/contracts/content.d.ts +13 -2
  17. package/dist/_dts/sdk/src/contracts/index.d.ts +1 -1
  18. package/dist/_dts/sdk/src/contracts/system-block-content.d.ts +1 -0
  19. package/dist/_dts/sdk/src/version.d.ts +1 -1
  20. package/dist/_dts/theme-core/src/buttons/classNames.d.ts +21 -0
  21. package/dist/_dts/theme-core/src/buttons/index.d.ts +1 -0
  22. package/dist/_dts/theme-core/src/buttons/types.d.ts +1 -0
  23. package/dist/cli/index.mjs +736 -427
  24. package/dist/client/bookings.mjs +746 -149
  25. package/dist/client/client.mjs +40389 -39847
  26. package/dist/client/hooks.mjs +1737 -1735
  27. package/dist/client/rendering/client.mjs +351 -113
  28. package/dist/client/rendering/islands.mjs +4549 -4366
  29. package/dist/client/rendering.mjs +1915 -1373
  30. package/dist/preview-next/client/runtime.mjs +1509 -945
  31. package/dist/server/components.mjs +3148 -2781
  32. package/dist/server/config-validation.mjs +1727 -1725
  33. package/dist/server/config.mjs +1727 -1725
  34. package/dist/server/data.mjs +1737 -1735
  35. package/dist/server/index.mjs +1 -1
  36. package/dist/server/next.mjs +3193 -2826
  37. package/dist/server/page-converter.mjs +10 -10
  38. package/dist/server/prebuild.mjs +1 -1
  39. package/dist/server/rendering/server.mjs +3161 -2794
  40. package/dist/server/rendering.mjs +3161 -2794
  41. package/dist/server/routing.mjs +297 -314
  42. package/dist/server/server.mjs +1738 -1736
  43. package/package.json +1 -1
  44. package/dist/_dts/blocks/src/system/runtime/shared/themedButtonClass.d.ts +0 -11
@@ -466,6 +466,92 @@ function encodePublicProductCategorySelector(selector) {
466
466
  };
467
467
  }
468
468
  }
469
+ function isRecord(value) {
470
+ return typeof value === "object" && value !== null;
471
+ }
472
+ function isJsonResponseContentType(contentType) {
473
+ if (!contentType) return false;
474
+ const mimeType = contentType.split(";", 1)[0]?.trim().toLowerCase() ?? "";
475
+ return mimeType === "application/json" || mimeType.endsWith("+json");
476
+ }
477
+ function getResponseContentType(response) {
478
+ return response.headers.get("content-type");
479
+ }
480
+ async function parseJsonBody(response) {
481
+ const rawText = await response.text();
482
+ if (rawText.trim().length === 0) {
483
+ return { kind: "empty-body" };
484
+ }
485
+ try {
486
+ return { kind: "success", value: JSON.parse(rawText) };
487
+ } catch {
488
+ return { kind: "invalid-json" };
489
+ }
490
+ }
491
+ function getBlockApiErrorDetails(data) {
492
+ if (!isRecord(data)) {
493
+ return {};
494
+ }
495
+ const nestedError = isRecord(data.error) ? data.error : void 0;
496
+ const message = typeof nestedError?.message === "string" ? nestedError.message : typeof data.message === "string" ? data.message : void 0;
497
+ const code = typeof nestedError?.code === "string" ? nestedError.code : typeof data.code === "string" ? data.code : void 0;
498
+ return { message, code };
499
+ }
500
+ function buildUnexpectedJsonResponseMessage(parseResult) {
501
+ switch (parseResult.kind) {
502
+ case "empty-body":
503
+ return "Expected JSON response body but received an empty response";
504
+ case "invalid-json":
505
+ return "Expected JSON response but received invalid JSON";
506
+ }
507
+ }
508
+ async function extractErrorDetails(response) {
509
+ const contentType = getResponseContentType(response);
510
+ const fallbackMessage = `Request failed: ${response.statusText}`;
511
+ if (!isJsonResponseContentType(contentType)) {
512
+ return {
513
+ message: `${fallbackMessage} (received ${contentType ?? "unknown content type"})`
514
+ };
515
+ }
516
+ const parseResult = await parseJsonBody(response);
517
+ switch (parseResult.kind) {
518
+ case "success": {
519
+ const details = getBlockApiErrorDetails(parseResult.value);
520
+ return {
521
+ message: details.message ?? fallbackMessage,
522
+ code: details.code
523
+ };
524
+ }
525
+ case "invalid-json":
526
+ return {
527
+ message: `${fallbackMessage} (received invalid JSON)`
528
+ };
529
+ case "empty-body":
530
+ return {
531
+ message: `${fallbackMessage} (received an empty response)`
532
+ };
533
+ }
534
+ }
535
+ async function parseJsonApiResponse(response) {
536
+ if (response.status === 204 || response.status === 205) {
537
+ return void 0;
538
+ }
539
+ const contentType = getResponseContentType(response);
540
+ if (!isJsonResponseContentType(contentType)) {
541
+ throw new BlockApiError(
542
+ `Expected JSON response but received ${contentType ?? "unknown content type"}`,
543
+ response.status
544
+ );
545
+ }
546
+ const parseResult = await parseJsonBody(response);
547
+ if (parseResult.kind !== "success") {
548
+ throw new BlockApiError(
549
+ buildUnexpectedJsonResponseMessage(parseResult),
550
+ response.status
551
+ );
552
+ }
553
+ return parseResult.value;
554
+ }
469
555
  function getAuthHeaders(auth) {
470
556
  switch (auth.type) {
471
557
  case "api-key":
@@ -522,21 +608,10 @@ function createBlockApi(config) {
522
608
  const doFetch = async () => {
523
609
  const response = await fetch(url, fetchOptions);
524
610
  if (!response.ok) {
525
- let errorMessage = `Request failed: ${response.statusText}`;
526
- let errorCode;
527
- try {
528
- const errorData = await response.json();
529
- if (typeof errorData.error?.message === "string") {
530
- errorMessage = errorData.error.message;
531
- } else if (typeof errorData.message === "string") {
532
- errorMessage = errorData.message;
533
- }
534
- errorCode = errorData.error?.code || errorData.code;
535
- } catch {
536
- }
537
- throw new BlockApiError(errorMessage, response.status, errorCode);
611
+ const details = await extractErrorDetails(response);
612
+ throw new BlockApiError(details.message, response.status, details.code);
538
613
  }
539
- const json = await response.json();
614
+ const json = await parseJsonApiResponse(response);
540
615
  if (isApiSuccessResponse(json)) {
541
616
  return json.data;
542
617
  }
@@ -1521,6 +1596,15 @@ var init_layout = __esm({
1521
1596
 
1522
1597
  // ../theme-core/src/buttons/types.ts
1523
1598
  import { z } from "zod";
1599
+ function isVariantRole(value) {
1600
+ return VARIANT_ROLES.includes(value);
1601
+ }
1602
+ function asSpecialVariantId(value) {
1603
+ if (value.length === 0) {
1604
+ throw new Error("SpecialVariantId must be a non-empty string");
1605
+ }
1606
+ return value;
1607
+ }
1524
1608
  var VARIANT_ROLES, DEFAULT_VARIANT_ALIAS_ID, cornerStyleSchema, shadowSizeSchema, textTransformSchema, fontWeightSchema, buttonTypographySchema, letterSpacingSchema, hoverTransformSchema, hoverColorSchema, buttonPaddingPresetSchema, gradientStyleSchema, gradientSharpnessSchema, prioritySchema, variantRoleSchema, buttonSizeNameSchema, PADDING_TOKEN_PATTERN, paddingShorthandSchema, buttonSizeConfigSchema, buttonSizesSchema, buttonGlobalSettingsSchema, gradientDirectionSchema, buttonBackgroundSchema, effectApplicationSchema, buttonBorderSchema, variantShadowSchema, variantEffectsSchema, variantSizeOverridesSchema, buttonVariantSchema, buttonSystemSchema;
1525
1609
  var init_types = __esm({
1526
1610
  "../theme-core/src/buttons/types.ts"() {
@@ -1673,6 +1757,41 @@ var init_types = __esm({
1673
1757
  }
1674
1758
  });
1675
1759
 
1760
+ // ../theme-core/src/buttons/classNames.ts
1761
+ function parseThemeButtonVariantId(value) {
1762
+ const normalized = value?.trim() ?? "";
1763
+ if (normalized.length === 0) {
1764
+ return null;
1765
+ }
1766
+ if (normalized === DEFAULT_VARIANT_ALIAS_ID) {
1767
+ return DEFAULT_VARIANT_ALIAS_ID;
1768
+ }
1769
+ return isVariantRole(normalized) ? normalized : asSpecialVariantId(normalized);
1770
+ }
1771
+ function themeButtonVariantClassNames(variant) {
1772
+ if (variant === DEFAULT_VARIANT_ALIAS_ID) {
1773
+ return [variant];
1774
+ }
1775
+ return [variant, `button-${variant}`];
1776
+ }
1777
+ function themeButtonSizeClassName(size) {
1778
+ return `btn-${size}`;
1779
+ }
1780
+ function themeButtonClassName(spec) {
1781
+ const classes = [
1782
+ ...themeButtonVariantClassNames(spec.variant),
1783
+ themeButtonSizeClassName(spec.size),
1784
+ spec.extraClassName
1785
+ ];
1786
+ return classes.filter(Boolean).join(" ");
1787
+ }
1788
+ var init_classNames = __esm({
1789
+ "../theme-core/src/buttons/classNames.ts"() {
1790
+ "use strict";
1791
+ init_types();
1792
+ }
1793
+ });
1794
+
1676
1795
  // ../theme-core/src/tokens/resolver.ts
1677
1796
  var init_resolver = __esm({
1678
1797
  "../theme-core/src/tokens/resolver.ts"() {
@@ -1812,6 +1931,7 @@ var init_generateButtonCss = __esm({
1812
1931
  "../theme-core/src/buttons/generateButtonCss.ts"() {
1813
1932
  "use strict";
1814
1933
  init_types();
1934
+ init_classNames();
1815
1935
  init_resolver();
1816
1936
  init_generateEffectsCSS();
1817
1937
  init_constants();
@@ -2480,6 +2600,7 @@ var init_buttons = __esm({
2480
2600
  "../theme-core/src/buttons/index.ts"() {
2481
2601
  "use strict";
2482
2602
  init_types();
2603
+ init_classNames();
2483
2604
  init_generateButtonCss();
2484
2605
  init_generateDefaultButtonSystem();
2485
2606
  init_constants();
@@ -3268,11 +3389,11 @@ var init_fileAssetLegacyProjection = __esm({
3268
3389
  });
3269
3390
 
3270
3391
  // ../media-core/src/typeGuards.ts
3271
- function isRecord(value) {
3392
+ function isRecord2(value) {
3272
3393
  return Boolean(value) && typeof value === "object" && !Array.isArray(value);
3273
3394
  }
3274
3395
  function asRecord(value) {
3275
- return isRecord(value) ? value : void 0;
3396
+ return isRecord2(value) ? value : void 0;
3276
3397
  }
3277
3398
  var init_typeGuards = __esm({
3278
3399
  "../media-core/src/typeGuards.ts"() {
@@ -5013,7 +5134,7 @@ var init_Text = __esm({
5013
5134
  });
5014
5135
 
5015
5136
  // ../blocks/src/lib/typeGuards.ts
5016
- function isRecord2(value) {
5137
+ function isRecord3(value) {
5017
5138
  return typeof value === "object" && value !== null && !Array.isArray(value);
5018
5139
  }
5019
5140
  var init_typeGuards2 = __esm({
@@ -5062,11 +5183,11 @@ function markdownToTipTapDoc(markdown) {
5062
5183
  };
5063
5184
  }
5064
5185
  function coerceRichTextDoc(value) {
5065
- const raw = isRecord2(value) && "doc" in value ? value.doc : value;
5186
+ const raw = isRecord3(value) && "doc" in value ? value.doc : value;
5066
5187
  if (typeof raw === "string") {
5067
5188
  return markdownToTipTapDoc(raw);
5068
5189
  }
5069
- if (isRecord2(raw) && typeof raw.type === "string") {
5190
+ if (isRecord3(raw) && typeof raw.type === "string") {
5070
5191
  return raw;
5071
5192
  }
5072
5193
  return null;
@@ -5126,11 +5247,12 @@ var init_basic = __esm({
5126
5247
  }
5127
5248
  return null;
5128
5249
  }
5129
- const resolvedVariantId = typeof variantId === "string" ? variantId.trim() : "";
5130
- const normalizedVariantId = resolvedVariantId === DEFAULT_VARIANT_ALIAS_ID ? "" : resolvedVariantId;
5131
- const variantClasses = normalizedVariantId ? [normalizedVariantId, `button-${normalizedVariantId}`] : [];
5132
- const sizeClass = `btn-${size}`;
5133
- const combinedClassName = [...variantClasses, sizeClass, className].filter(Boolean).join(" ");
5250
+ const resolvedVariantId = parseThemeButtonVariantId(variantId);
5251
+ const combinedClassName = resolvedVariantId ? themeButtonClassName({
5252
+ variant: resolvedVariantId,
5253
+ size,
5254
+ extraClassName: className
5255
+ }) : className;
5134
5256
  if (resolvedHref) {
5135
5257
  return /* @__PURE__ */ jsx10(
5136
5258
  "a",
@@ -6135,19 +6257,6 @@ var init_media2 = __esm({
6135
6257
  }
6136
6258
  });
6137
6259
 
6138
- // ../blocks/src/system/runtime/shared/themedButtonClass.ts
6139
- function themedButtonClass(spec) {
6140
- const { variant, size, extraClassName } = spec;
6141
- const normalizedVariant = variant.trim();
6142
- const variantClasses = normalizedVariant ? [normalizedVariant, `button-${normalizedVariant}`] : [];
6143
- return [...variantClasses, `btn-${size}`, extraClassName].filter(Boolean).join(" ");
6144
- }
6145
- var init_themedButtonClass = __esm({
6146
- "../blocks/src/system/runtime/shared/themedButtonClass.ts"() {
6147
- "use strict";
6148
- }
6149
- });
6150
-
6151
6260
  // ../blocks/src/system/runtime/nodes/file-download.tsx
6152
6261
  import { jsx as jsx13, jsxs } from "react/jsx-runtime";
6153
6262
  function isDownloadableMediaType(type) {
@@ -6221,7 +6330,7 @@ function FileDownloadNode({
6221
6330
  {
6222
6331
  href,
6223
6332
  download: filename,
6224
- className: themedButtonClass({
6333
+ className: themeButtonClassName({
6225
6334
  variant,
6226
6335
  size: "md",
6227
6336
  extraClassName: "rb-inline-flex rb-shrink-0 rb-items-center rb-justify-center rb-gap-2"
@@ -6241,7 +6350,7 @@ var init_file_download = __esm({
6241
6350
  init_lucide_react();
6242
6351
  init_colorStyles();
6243
6352
  init_media2();
6244
- init_themedButtonClass();
6353
+ init_buttons();
6245
6354
  init_media();
6246
6355
  FILE_DOWNLOAD_BUTTON_VARIANTS = ["primary", "secondary", "outline", "link"];
6247
6356
  }
@@ -9717,7 +9826,7 @@ var init_EventCard = __esm({
9717
9826
  init_EventCardIcons();
9718
9827
  init_eventCapacity();
9719
9828
  init_utils();
9720
- init_themedButtonClass();
9829
+ init_buttons();
9721
9830
  EventCard = ({
9722
9831
  event,
9723
9832
  cardVariant = "default",
@@ -9743,7 +9852,7 @@ var init_EventCard = __esm({
9743
9852
  const isSoldOut = cta.hidden;
9744
9853
  const { available: spotsLeft } = getEventAvailability(event);
9745
9854
  const cardClass = `card-${cardVariant}`;
9746
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "md" });
9855
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
9747
9856
  const title = event.title;
9748
9857
  const summary = event.presentation?.summary ?? event.description;
9749
9858
  const image = event.presentation?.image ?? null;
@@ -9825,7 +9934,7 @@ var init_EventCompactRow = __esm({
9825
9934
  "use strict";
9826
9935
  init_utils();
9827
9936
  init_EventCardIcons();
9828
- init_themedButtonClass();
9937
+ init_buttons();
9829
9938
  EventCompactRow = ({
9830
9939
  event,
9831
9940
  buttonVariant = "primary",
@@ -9837,7 +9946,7 @@ var init_EventCompactRow = __esm({
9837
9946
  const price = formatEventPrice(event);
9838
9947
  const teacherLine = formatEventTeacherLine(event);
9839
9948
  const cta = resolveEventCta(event, buttonText);
9840
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "sm" });
9949
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "sm" });
9841
9950
  return /* @__PURE__ */ jsxs17("div", { className: "event-compact-row", children: [
9842
9951
  /* @__PURE__ */ jsxs17("div", { className: "event-compact-row-content", children: [
9843
9952
  /* @__PURE__ */ jsxs17("div", { className: "event-compact-row-top", children: [
@@ -9909,7 +10018,7 @@ var init_EventSpotlight = __esm({
9909
10018
  "../blocks/src/system/runtime/nodes/events/EventSpotlight.tsx"() {
9910
10019
  "use strict";
9911
10020
  init_shared3();
9912
- init_themedButtonClass();
10021
+ init_buttons();
9913
10022
  EventSpotlight = ({
9914
10023
  events,
9915
10024
  layout = "grid",
@@ -9931,7 +10040,7 @@ var init_EventSpotlight = __esm({
9931
10040
  }
9932
10041
  const containerClass = getContainerClass(layout, columns);
9933
10042
  const cardOrientation = getCardOrientation(layout);
9934
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "md" });
10043
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
9935
10044
  return /* @__PURE__ */ jsxs19("div", { className: `event-spotlight-section ${className || ""}`, "data-block": "event-spotlight", children: [
9936
10045
  /* @__PURE__ */ jsx33("div", { className: `event-spotlight ${containerClass}`, children: normalizedEvents.map((event) => /* @__PURE__ */ jsx33(
9937
10046
  EventCard,
@@ -20312,7 +20421,16 @@ var init_view3 = __esm({
20312
20421
  import { Fragment as Fragment5, jsx as jsx37, jsxs as jsxs22 } from "react/jsx-runtime";
20313
20422
  function renderServerPendingAction(label, soldOut) {
20314
20423
  return /* @__PURE__ */ jsxs22(Fragment5, { children: [
20315
- /* @__PURE__ */ jsx37("button", { type: "button", className: "default", disabled: true, "aria-disabled": "true", children: soldOut ? "Sold out" : label }),
20424
+ /* @__PURE__ */ jsx37(
20425
+ "button",
20426
+ {
20427
+ type: "button",
20428
+ className: themeButtonClassName({ variant: "default", size: "md" }),
20429
+ disabled: true,
20430
+ "aria-disabled": "true",
20431
+ children: soldOut ? "Sold out" : label
20432
+ }
20433
+ ),
20316
20434
  !soldOut ? /* @__PURE__ */ jsx37("p", { className: "rb-caption status-muted", children: "Cart actions become interactive after page load." }) : null
20317
20435
  ] });
20318
20436
  }
@@ -20332,7 +20450,14 @@ function ProductListServerContent(props2) {
20332
20450
  ),
20333
20451
  actions: /* @__PURE__ */ jsxs22(Fragment5, { children: [
20334
20452
  renderServerPendingAction(card.actionLabel, card.soldOut),
20335
- card.path ? /* @__PURE__ */ jsx37("a", { href: card.path, className: "secondary btn-sm", children: "View details" }) : null
20453
+ card.path ? /* @__PURE__ */ jsx37(
20454
+ "a",
20455
+ {
20456
+ href: card.path,
20457
+ className: themeButtonClassName({ variant: "secondary", size: "sm" }),
20458
+ children: "View details"
20459
+ }
20460
+ ) : null
20336
20461
  ] })
20337
20462
  },
20338
20463
  card.productId
@@ -20375,6 +20500,7 @@ function CheckoutServerContent(props2) {
20375
20500
  var init_shop_commerce_server = __esm({
20376
20501
  "../blocks/src/system/runtime/nodes/shop-commerce.server.tsx"() {
20377
20502
  "use strict";
20503
+ init_buttons();
20378
20504
  init_RichText();
20379
20505
  init_carousel_server();
20380
20506
  init_richText_coerce();
@@ -20923,7 +21049,7 @@ function renderCalendarGrid(display) {
20923
21049
  "button",
20924
21050
  {
20925
21051
  type: "button",
20926
- className: themedButtonClass({
21052
+ className: themeButtonClassName({
20927
21053
  variant: display.buttonVariant,
20928
21054
  size: "sm"
20929
21055
  }),
@@ -21009,7 +21135,7 @@ function renderTimetableSsr(display) {
21009
21135
  "button",
21010
21136
  {
21011
21137
  type: "button",
21012
- className: themedButtonClass({
21138
+ className: themeButtonClassName({
21013
21139
  variant: display.buttonVariant,
21014
21140
  size: "sm"
21015
21141
  }),
@@ -21137,7 +21263,7 @@ var init_EventCalendar_server = __esm({
21137
21263
  init_renderEventListItem();
21138
21264
  init_utils();
21139
21265
  init_timetableModel();
21140
- init_themedButtonClass();
21266
+ init_buttons();
21141
21267
  EventCalendarSSR = (props2) => {
21142
21268
  const islandProps = buildEventCalendarInteractiveIslandProps(props2);
21143
21269
  const display = islandProps.render.display;
@@ -21268,7 +21394,7 @@ var init_form_server = __esm({
21268
21394
  "use strict";
21269
21395
  init_clsx();
21270
21396
  init_ssr();
21271
- init_themedButtonClass();
21397
+ init_buttons();
21272
21398
  init_form_interactive();
21273
21399
  FormNodeSSR = ({
21274
21400
  blockId,
@@ -21406,7 +21532,7 @@ var init_form_server = __esm({
21406
21532
  "button",
21407
21533
  {
21408
21534
  type: "submit",
21409
- className: themedButtonClass({
21535
+ className: themeButtonClassName({
21410
21536
  variant: "primary",
21411
21537
  size: "md",
21412
21538
  extraClassName: "rb-w-full rb-sm-w-auto"
@@ -21499,7 +21625,7 @@ function NewsletterFormSSR({
21499
21625
  "button",
21500
21626
  {
21501
21627
  type: "submit",
21502
- className: themedButtonClass({ variant: "primary", size: "md" }),
21628
+ className: themeButtonClassName({ variant: "primary", size: "md" }),
21503
21629
  children: display.buttonLabel
21504
21630
  }
21505
21631
  ) })
@@ -21516,7 +21642,7 @@ var init_newsletter_form_server = __esm({
21516
21642
  "use strict";
21517
21643
  init_clsx();
21518
21644
  init_ssr();
21519
- init_themedButtonClass();
21645
+ init_buttons();
21520
21646
  init_newsletter_form_interactive();
21521
21647
  newsletter_form_server_default = NewsletterFormSSR;
21522
21648
  }
@@ -21647,7 +21773,16 @@ function ShopSSR({
21647
21773
  PassCardView,
21648
21774
  {
21649
21775
  display: pass,
21650
- action: /* @__PURE__ */ jsx50("button", { type: "button", className: "default", disabled: true, "aria-disabled": "true", children: pass.actionLabel })
21776
+ action: /* @__PURE__ */ jsx50(
21777
+ "button",
21778
+ {
21779
+ type: "button",
21780
+ className: themeButtonClassName({ variant: "default", size: "md" }),
21781
+ disabled: true,
21782
+ "aria-disabled": "true",
21783
+ children: pass.actionLabel
21784
+ }
21785
+ )
21651
21786
  },
21652
21787
  pass.id
21653
21788
  )),
@@ -21655,7 +21790,16 @@ function ShopSSR({
21655
21790
  MembershipCardView,
21656
21791
  {
21657
21792
  display: membership,
21658
- action: /* @__PURE__ */ jsx50("button", { type: "button", className: "default", disabled: true, "aria-disabled": "true", children: membership.actionLabel })
21793
+ action: /* @__PURE__ */ jsx50(
21794
+ "button",
21795
+ {
21796
+ type: "button",
21797
+ className: themeButtonClassName({ variant: "default", size: "md" }),
21798
+ disabled: true,
21799
+ "aria-disabled": "true",
21800
+ children: membership.actionLabel
21801
+ }
21802
+ )
21659
21803
  },
21660
21804
  membership.id
21661
21805
  ))
@@ -21670,6 +21814,7 @@ var shop_server_default;
21670
21814
  var init_shop_server = __esm({
21671
21815
  "../blocks/src/system/runtime/nodes/shop.server.tsx"() {
21672
21816
  "use strict";
21817
+ init_buttons();
21673
21818
  init_ssr();
21674
21819
  init_view3();
21675
21820
  init_shop_interactive();
@@ -25110,7 +25255,7 @@ function MultiStepForm({
25110
25255
  type: "button",
25111
25256
  onClick: goToPrevious,
25112
25257
  disabled: !canGoBack,
25113
- className: "outline btn-md",
25258
+ className: themeButtonClassName({ variant: "outline", size: "md" }),
25114
25259
  children: backButtonLabel
25115
25260
  }
25116
25261
  ),
@@ -25120,7 +25265,11 @@ function MultiStepForm({
25120
25265
  type: "button",
25121
25266
  onClick: goToNext,
25122
25267
  disabled: !canGoNext,
25123
- className: "primary btn-md rb-flex-1",
25268
+ className: themeButtonClassName({
25269
+ variant: "primary",
25270
+ size: "md",
25271
+ extraClassName: "rb-flex-1"
25272
+ }),
25124
25273
  children: [
25125
25274
  (isValidating || isSubmitting) && /* @__PURE__ */ jsx52(
25126
25275
  SpinnerNode,
@@ -25236,6 +25385,7 @@ var init_MultiStepForm = __esm({
25236
25385
  "../blocks/src/system/runtime/components/multi-step/MultiStepForm.tsx"() {
25237
25386
  "use strict";
25238
25387
  "use client";
25388
+ init_buttons();
25239
25389
  init_MultiStepContext();
25240
25390
  init_useMultiStep();
25241
25391
  init_spinner();
@@ -26498,7 +26648,10 @@ function PaymentOptionSelectionStep({
26498
26648
  "button",
26499
26649
  {
26500
26650
  type: "button",
26501
- className: isSelected ? "primary btn-md" : "outline btn-md",
26651
+ className: themeButtonClassName({
26652
+ variant: isSelected ? "primary" : "outline",
26653
+ size: "md"
26654
+ }),
26502
26655
  style: paymentOptionLayoutStyle,
26503
26656
  onClick: () => updateData({
26504
26657
  selectedAppointmentPackageId: appointmentPackage.customerPassId,
@@ -26547,7 +26700,10 @@ function PaymentOptionSelectionStep({
26547
26700
  "button",
26548
26701
  {
26549
26702
  type: "button",
26550
- className: isSelected ? "primary btn-md" : "outline btn-md",
26703
+ className: themeButtonClassName({
26704
+ variant: isSelected ? "primary" : "outline",
26705
+ size: "md"
26706
+ }),
26551
26707
  style: paymentOptionLayoutStyle,
26552
26708
  onClick: () => updateData({
26553
26709
  selectedAppointmentPackageId: void 0,
@@ -26576,6 +26732,7 @@ var init_PaymentOptionSelectionStep = __esm({
26576
26732
  "../blocks/src/system/runtime/components/booking/PaymentOptionSelectionStep.tsx"() {
26577
26733
  "use strict";
26578
26734
  "use client";
26735
+ init_buttons();
26579
26736
  init_api();
26580
26737
  init_MultiStepContext();
26581
26738
  init_booking_form_state();
@@ -28211,6 +28368,7 @@ var init_booking_form_client = __esm({
28211
28368
  init_noop();
28212
28369
  init_client2();
28213
28370
  init_src3();
28371
+ init_buttons();
28214
28372
  init_api();
28215
28373
  init_MultiStepForm();
28216
28374
  init_SuccessMessage();
@@ -28448,7 +28606,7 @@ var init_booking_form_client = __esm({
28448
28606
  "button",
28449
28607
  {
28450
28608
  type: "button",
28451
- className: "secondary btn-sm",
28609
+ className: themeButtonClassName({ variant: "secondary", size: "sm" }),
28452
28610
  onClick: clearFeedback,
28453
28611
  children: "Dismiss"
28454
28612
  }
@@ -29824,7 +29982,7 @@ var init_PaymentSelectionStep = __esm({
29824
29982
  init_lucide_react();
29825
29983
  init_utils3();
29826
29984
  init_spinner();
29827
- init_themedButtonClass();
29985
+ init_buttons();
29828
29986
  init_CheckIcon2();
29829
29987
  init_SelectableOptionCard();
29830
29988
  PaymentSelectionStep = ({
@@ -29925,7 +30083,7 @@ var init_PaymentSelectionStep = __esm({
29925
30083
  "button",
29926
30084
  {
29927
30085
  type: "button",
29928
- className: themedButtonClass({ variant: "primary", size: "md" }),
30086
+ className: themeButtonClassName({ variant: "primary", size: "md" }),
29929
30087
  disabled: !email.trim(),
29930
30088
  onClick: onRequestLogin,
29931
30089
  children: "Email me a login link"
@@ -31585,7 +31743,7 @@ function MagicLinkForm({
31585
31743
  "button",
31586
31744
  {
31587
31745
  type: "button",
31588
- className: classPrefix === "cp" ? "secondary" : `${classPrefix}-modal-btn ${classPrefix}-modal-btn--secondary`,
31746
+ className: classPrefix === "cp" ? themeButtonClassName({ variant: "secondary", size: "md" }) : `${classPrefix}-modal-btn ${classPrefix}-modal-btn--secondary`,
31589
31747
  onClick: handleReset,
31590
31748
  children: "Try a different email"
31591
31749
  }
@@ -31613,7 +31771,7 @@ function MagicLinkForm({
31613
31771
  "button",
31614
31772
  {
31615
31773
  type: "submit",
31616
- className: classPrefix === "cp" ? "primary" : `${classPrefix}-modal-btn`,
31774
+ className: classPrefix === "cp" ? themeButtonClassName({ variant: "primary", size: "md" }) : `${classPrefix}-modal-btn`,
31617
31775
  disabled: !email.trim() || loading,
31618
31776
  children: loading ? "Sending..." : buttonText
31619
31777
  }
@@ -31624,6 +31782,7 @@ var init_MagicLinkForm = __esm({
31624
31782
  "../blocks/src/system/runtime/nodes/shared/MagicLinkForm.tsx"() {
31625
31783
  "use strict";
31626
31784
  "use client";
31785
+ init_buttons();
31627
31786
  init_api();
31628
31787
  }
31629
31788
  });
@@ -31649,7 +31808,7 @@ function EventRegistrationWizard(props2) {
31649
31808
  } = props2;
31650
31809
  const maxTicketsNum = parseInt(maxTickets, 10) || 5;
31651
31810
  const showSpamProtection = spamProtectionEnabled ?? isSpamProtectionEnabled();
31652
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "md" });
31811
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
31653
31812
  const wizard = useEventRegistrationWizard({
31654
31813
  anchorId: EVENT_REGISTRATION_ANCHOR_ID,
31655
31814
  occurrenceContext: occurrenceContext ?? null,
@@ -31786,7 +31945,7 @@ var init_EventRegistrationWizard = __esm({
31786
31945
  init_useEventRegistrationWizard();
31787
31946
  init_MagicLinkForm();
31788
31947
  init_spinner();
31789
- init_themedButtonClass();
31948
+ init_buttons();
31790
31949
  init_event_registration2();
31791
31950
  EVENT_REGISTRATION_ANCHOR_ID = "event-registration";
31792
31951
  EVENT_PORTAL_AUTH_COPY = {
@@ -32232,7 +32391,7 @@ function ErrorStep2({
32232
32391
  buttonVariant = "primary",
32233
32392
  onRetry
32234
32393
  }) {
32235
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "md" });
32394
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
32236
32395
  return /* @__PURE__ */ jsxs73("div", { className: "cr-error", role: "alert", children: [
32237
32396
  /* @__PURE__ */ jsx100(StateIcon, { variant: "error", children: /* @__PURE__ */ jsx100(CrossIcon, {}) }),
32238
32397
  /* @__PURE__ */ jsx100("h3", { className: "cr-error__title", children: "Enrollment Failed" }),
@@ -32244,7 +32403,7 @@ var init_ErrorStep2 = __esm({
32244
32403
  "../blocks/src/system/runtime/nodes/course-registration/ErrorStep.tsx"() {
32245
32404
  "use strict";
32246
32405
  init_shared6();
32247
- init_themedButtonClass();
32406
+ init_buttons();
32248
32407
  }
32249
32408
  });
32250
32409
 
@@ -32256,7 +32415,7 @@ function VerifyingTimeoutStep2({
32256
32415
  onCheckAgain,
32257
32416
  supportEmail
32258
32417
  }) {
32259
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "md" });
32418
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
32260
32419
  return /* @__PURE__ */ jsxs74("div", { className: "cr-error", role: "alert", children: [
32261
32420
  /* @__PURE__ */ jsx101(StateIcon, { variant: "warning", children: /* @__PURE__ */ jsx101(ClockIcon, {}) }),
32262
32421
  /* @__PURE__ */ jsx101("h3", { className: "cr-error__title", children: "Payment Verification Taking Longer" }),
@@ -32273,7 +32432,7 @@ var init_VerifyingTimeoutStep2 = __esm({
32273
32432
  "../blocks/src/system/runtime/nodes/course-registration/VerifyingTimeoutStep.tsx"() {
32274
32433
  "use strict";
32275
32434
  init_shared6();
32276
- init_themedButtonClass();
32435
+ init_buttons();
32277
32436
  }
32278
32437
  });
32279
32438
 
@@ -32285,7 +32444,7 @@ function PaymentFailedStep2({
32285
32444
  buttonVariant = "primary",
32286
32445
  onRetry
32287
32446
  }) {
32288
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "md" });
32447
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
32289
32448
  return /* @__PURE__ */ jsxs75("div", { className: "cr-payment-failed", role: "alert", children: [
32290
32449
  /* @__PURE__ */ jsx102(StateIcon, { variant: "error", children: /* @__PURE__ */ jsx102(CrossIcon, {}) }),
32291
32450
  /* @__PURE__ */ jsx102("h3", { className: "cr-payment-failed__title", children: "Payment Failed" }),
@@ -32297,7 +32456,7 @@ var init_PaymentFailedStep2 = __esm({
32297
32456
  "../blocks/src/system/runtime/nodes/course-registration/PaymentFailedStep.tsx"() {
32298
32457
  "use strict";
32299
32458
  init_shared6();
32300
- init_themedButtonClass();
32459
+ init_buttons();
32301
32460
  }
32302
32461
  });
32303
32462
 
@@ -33299,7 +33458,7 @@ function CourseRegistrationWizard(props2) {
33299
33458
  handleRetry,
33300
33459
  handleBookingModeChange
33301
33460
  } = useCourseRegistrationWizard(props2);
33302
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "md" });
33461
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
33303
33462
  if (scopedCourses.length === 0) {
33304
33463
  return /* @__PURE__ */ jsx106(
33305
33464
  "div",
@@ -33709,7 +33868,7 @@ var init_CourseRegistrationWizard = __esm({
33709
33868
  init_PaymentFailedStep2();
33710
33869
  init_VerifyingTimeoutStep2();
33711
33870
  init_spinner();
33712
- init_themedButtonClass();
33871
+ init_buttons();
33713
33872
  }
33714
33873
  });
33715
33874
 
@@ -33741,7 +33900,7 @@ var init_course_registration_client = __esm({
33741
33900
  import { useEffect as useEffect19, useRef as useRef10, useState as useState15 } from "react";
33742
33901
  import { jsx as jsx108 } from "react/jsx-runtime";
33743
33902
  function isLeafletApi(value) {
33744
- if (!isRecord2(value)) return false;
33903
+ if (!isRecord3(value)) return false;
33745
33904
  return typeof value.map === "function" && typeof value.tileLayer === "function" && typeof value.marker === "function";
33746
33905
  }
33747
33906
  function loadLeaflet() {
@@ -34443,7 +34602,11 @@ function PassesMembershipsController({ render }) {
34443
34602
  "button",
34444
34603
  {
34445
34604
  type: "button",
34446
- className: "secondary btn-sm shop__return-dismiss",
34605
+ className: themeButtonClassName({
34606
+ variant: "secondary",
34607
+ size: "sm",
34608
+ extraClassName: "shop__return-dismiss"
34609
+ }),
34447
34610
  onClick: () => dispatch({ type: "clearReturnNotice" }),
34448
34611
  children: "Dismiss"
34449
34612
  }
@@ -34460,7 +34623,11 @@ function PassesMembershipsController({ render }) {
34460
34623
  "button",
34461
34624
  {
34462
34625
  type: "button",
34463
- className: "default shop__cta",
34626
+ className: themeButtonClassName({
34627
+ variant: "default",
34628
+ size: "md",
34629
+ extraClassName: "shop__cta"
34630
+ }),
34464
34631
  onClick: () => handleBuyPass(pass),
34465
34632
  children: passDisplay.actionLabel
34466
34633
  }
@@ -34487,7 +34654,11 @@ function PassesMembershipsController({ render }) {
34487
34654
  "button",
34488
34655
  {
34489
34656
  type: "button",
34490
- className: "default shop__cta",
34657
+ className: themeButtonClassName({
34658
+ variant: "default",
34659
+ size: "md",
34660
+ extraClassName: "shop__cta"
34661
+ }),
34491
34662
  onClick: () => handleSubscribe(membership),
34492
34663
  children: membershipDisplay.actionLabel
34493
34664
  }
@@ -34531,12 +34702,20 @@ function PassesMembershipsController({ render }) {
34531
34702
  ] }) : null
34532
34703
  ] }),
34533
34704
  /* @__PURE__ */ jsxs83(ActionRow, { className: "shop__modal-warning-actions", children: [
34534
- /* @__PURE__ */ jsx112("button", { type: "button", className: "secondary", onClick: closeCheckout, children: "Cancel" }),
34535
34705
  /* @__PURE__ */ jsx112(
34536
34706
  "button",
34537
34707
  {
34538
34708
  type: "button",
34539
- className: "default",
34709
+ className: themeButtonClassName({ variant: "secondary", size: "md" }),
34710
+ onClick: closeCheckout,
34711
+ children: "Cancel"
34712
+ }
34713
+ ),
34714
+ /* @__PURE__ */ jsx112(
34715
+ "button",
34716
+ {
34717
+ type: "button",
34718
+ className: themeButtonClassName({ variant: "default", size: "md" }),
34540
34719
  onClick: handleConfirmDuplicate,
34541
34720
  disabled: checkout2.submitting,
34542
34721
  children: checkout2.submitting ? "Processing..." : "Subscribe Anyway"
@@ -34579,8 +34758,25 @@ function PassesMembershipsController({ render }) {
34579
34758
  ] }),
34580
34759
  checkout2.formError ? /* @__PURE__ */ jsx112("p", { className: "shop__modal-error", role: "alert", children: checkout2.formError }) : null,
34581
34760
  /* @__PURE__ */ jsxs83(ActionRow, { className: "shop__modal-actions", children: [
34582
- /* @__PURE__ */ jsx112("button", { type: "button", className: "secondary", onClick: closeCheckout, disabled: checkout2.submitting, children: "Cancel" }),
34583
- /* @__PURE__ */ jsx112("button", { type: "submit", className: "default", disabled: checkout2.submitting, children: checkout2.submitting ? "Processing..." : "Continue to Payment" })
34761
+ /* @__PURE__ */ jsx112(
34762
+ "button",
34763
+ {
34764
+ type: "button",
34765
+ className: themeButtonClassName({ variant: "secondary", size: "md" }),
34766
+ onClick: closeCheckout,
34767
+ disabled: checkout2.submitting,
34768
+ children: "Cancel"
34769
+ }
34770
+ ),
34771
+ /* @__PURE__ */ jsx112(
34772
+ "button",
34773
+ {
34774
+ type: "submit",
34775
+ className: themeButtonClassName({ variant: "default", size: "md" }),
34776
+ disabled: checkout2.submitting,
34777
+ children: checkout2.submitting ? "Processing..." : "Continue to Payment"
34778
+ }
34779
+ )
34584
34780
  ] })
34585
34781
  ] })
34586
34782
  ] })
@@ -34593,6 +34789,7 @@ var init_shop_client = __esm({
34593
34789
  "../blocks/src/system/runtime/nodes/shop.client.tsx"() {
34594
34790
  "use strict";
34595
34791
  "use client";
34792
+ init_buttons();
34596
34793
  init_api();
34597
34794
  init_ModalShell();
34598
34795
  init_shared6();
@@ -34807,7 +35004,7 @@ var init_embla_carousel_autoplay_esm = __esm({
34807
35004
  function isObject(subject) {
34808
35005
  return Object.prototype.toString.call(subject) === "[object Object]";
34809
35006
  }
34810
- function isRecord3(subject) {
35007
+ function isRecord4(subject) {
34811
35008
  return isObject(subject) || Array.isArray(subject);
34812
35009
  }
34813
35010
  function canUseDOM() {
@@ -34824,7 +35021,7 @@ function areOptionsEqual(optionsA, optionsB) {
34824
35021
  const valueA = optionsA[key];
34825
35022
  const valueB = optionsB[key];
34826
35023
  if (typeof valueA === "function") return `${valueA}` === `${valueB}`;
34827
- if (!isRecord3(valueA) || !isRecord3(valueB)) return valueA === valueB;
35024
+ if (!isRecord4(valueA) || !isRecord4(valueB)) return valueA === valueB;
34828
35025
  return areOptionsEqual(valueA, valueB);
34829
35026
  });
34830
35027
  }
@@ -36918,7 +37115,7 @@ function ProductListController(props2) {
36918
37115
  "button",
36919
37116
  {
36920
37117
  type: "button",
36921
- className: "default",
37118
+ className: themeButtonClassName({ variant: "default", size: "md" }),
36922
37119
  onClick: () => {
36923
37120
  const product = props2.render.hydration.products.find((candidate) => candidate.id === card.productId);
36924
37121
  if (!product) return;
@@ -36934,7 +37131,14 @@ function ProductListController(props2) {
36934
37131
  children: card.soldOut ? "Sold out" : card.actionLabel
36935
37132
  }
36936
37133
  ),
36937
- card.path ? /* @__PURE__ */ jsx114("a", { href: card.path, className: "secondary btn-sm", children: "View details" }) : null
37134
+ card.path ? /* @__PURE__ */ jsx114(
37135
+ "a",
37136
+ {
37137
+ href: card.path,
37138
+ className: themeButtonClassName({ variant: "secondary", size: "sm" }),
37139
+ children: "View details"
37140
+ }
37141
+ ) : null
36938
37142
  ] }),
36939
37143
  feedback: /* @__PURE__ */ jsx114(
36940
37144
  ShopAddFeedback,
@@ -37000,7 +37204,7 @@ function ProductDetailController(props2) {
37000
37204
  "button",
37001
37205
  {
37002
37206
  type: "button",
37003
- className: "default",
37207
+ className: themeButtonClassName({ variant: "default", size: "md" }),
37004
37208
  disabled: display.soldOut,
37005
37209
  onClick: () => {
37006
37210
  if (!selectedProduct) return;
@@ -37050,15 +37254,31 @@ function CartController(props2) {
37050
37254
  onChange: item.quantityEditable ? (event) => cart2.updateQuantity(item.key, Number(event.target.value)) : void 0
37051
37255
  }
37052
37256
  ),
37053
- /* @__PURE__ */ jsx114("button", { type: "button", className: "secondary btn-sm", onClick: () => cart2.removeItem(item.key), children: "Remove" })
37257
+ /* @__PURE__ */ jsx114(
37258
+ "button",
37259
+ {
37260
+ type: "button",
37261
+ className: themeButtonClassName({ variant: "secondary", size: "sm" }),
37262
+ onClick: () => cart2.removeItem(item.key),
37263
+ children: "Remove"
37264
+ }
37265
+ )
37054
37266
  ] }),
37055
37267
  footerActions: /* @__PURE__ */ jsxs85(Fragment19, { children: [
37056
- /* @__PURE__ */ jsx114("button", { type: "button", className: "secondary btn-sm", onClick: () => cart2.clear(), children: display.clearButtonText }),
37057
37268
  /* @__PURE__ */ jsx114(
37058
37269
  "button",
37059
37270
  {
37060
37271
  type: "button",
37061
- className: "default",
37272
+ className: themeButtonClassName({ variant: "secondary", size: "sm" }),
37273
+ onClick: () => cart2.clear(),
37274
+ children: display.clearButtonText
37275
+ }
37276
+ ),
37277
+ /* @__PURE__ */ jsx114(
37278
+ "button",
37279
+ {
37280
+ type: "button",
37281
+ className: themeButtonClassName({ variant: "default", size: "md" }),
37062
37282
  onClick: () => {
37063
37283
  window.location.href = resolveDedicatedCheckoutPath(window.location.pathname);
37064
37284
  },
@@ -37164,7 +37384,15 @@ function CheckoutController(props2) {
37164
37384
  )
37165
37385
  ] }),
37166
37386
  state.feedback.tag === "error" ? /* @__PURE__ */ jsx114("p", { className: "rb-caption status-muted", children: state.feedback.message }) : null,
37167
- /* @__PURE__ */ jsx114("button", { type: "submit", className: "default", disabled: state.submission === "submitting", children: state.submission === "submitting" ? "Loading\u2026" : display.submitButtonText })
37387
+ /* @__PURE__ */ jsx114(
37388
+ "button",
37389
+ {
37390
+ type: "submit",
37391
+ className: themeButtonClassName({ variant: "default", size: "md" }),
37392
+ disabled: state.submission === "submitting",
37393
+ children: state.submission === "submitting" ? "Loading\u2026" : display.submitButtonText
37394
+ }
37395
+ )
37168
37396
  ] })
37169
37397
  }
37170
37398
  );
@@ -37174,6 +37402,7 @@ var init_shop_commerce = __esm({
37174
37402
  "../blocks/src/system/runtime/nodes/shop-commerce.tsx"() {
37175
37403
  "use strict";
37176
37404
  "use client";
37405
+ init_buttons();
37177
37406
  init_api();
37178
37407
  init_RichText();
37179
37408
  init_carousel_client();
@@ -38870,7 +39099,7 @@ function HeaderCartDrawerItems(props2) {
38870
39099
  "button",
38871
39100
  {
38872
39101
  type: "button",
38873
- className: "secondary btn-sm",
39102
+ className: themeButtonClassName({ variant: "secondary", size: "sm" }),
38874
39103
  onClick: () => props2.cart.removeItem(item.key),
38875
39104
  children: "Remove"
38876
39105
  }
@@ -38963,7 +39192,7 @@ function HeaderCartDrawer(props2) {
38963
39192
  "button",
38964
39193
  {
38965
39194
  type: "button",
38966
- className: "secondary",
39195
+ className: themeButtonClassName({ variant: "secondary", size: "md" }),
38967
39196
  onClick: () => props2.cart.clear(),
38968
39197
  disabled: display.state === "empty",
38969
39198
  children: display.clearButtonText
@@ -38972,12 +39201,20 @@ function HeaderCartDrawer(props2) {
38972
39201
  props2.checkoutHref && display.state === "ready" ? /* @__PURE__ */ jsx129(
38973
39202
  "a",
38974
39203
  {
38975
- className: "default",
39204
+ className: themeButtonClassName({ variant: "default", size: "md" }),
38976
39205
  href: props2.checkoutHref,
38977
39206
  onClick: props2.onClose,
38978
39207
  children: display.checkoutButtonText
38979
39208
  }
38980
- ) : /* @__PURE__ */ jsx129("button", { type: "button", className: "default", disabled: true, children: display.checkoutButtonText })
39209
+ ) : /* @__PURE__ */ jsx129(
39210
+ "button",
39211
+ {
39212
+ type: "button",
39213
+ className: themeButtonClassName({ variant: "default", size: "md" }),
39214
+ disabled: true,
39215
+ children: display.checkoutButtonText
39216
+ }
39217
+ )
38981
39218
  ] })
38982
39219
  ]
38983
39220
  }
@@ -38990,6 +39227,7 @@ var init_HeaderCartDrawer = __esm({
38990
39227
  "../blocks/src/system/runtime/header/HeaderCartDrawer.tsx"() {
38991
39228
  "use strict";
38992
39229
  "use client";
39230
+ init_buttons();
38993
39231
  init_display();
38994
39232
  init_ModalShell();
38995
39233
  }
@@ -39763,7 +40001,7 @@ var init_EventPaginatedListView_client = __esm({
39763
40001
  init_EventCompactRow();
39764
40002
  init_EmptyState();
39765
40003
  init_EventListing_view();
39766
- init_themedButtonClass();
40004
+ init_buttons();
39767
40005
  EventPaginatedListView = ({
39768
40006
  filters,
39769
40007
  display,
@@ -39806,7 +40044,7 @@ var init_EventPaginatedListView_client = __esm({
39806
40044
  {
39807
40045
  type: "button",
39808
40046
  onClick: loadMore,
39809
- className: themedButtonClass({
40047
+ className: themeButtonClassName({
39810
40048
  variant: display.buttonVariant,
39811
40049
  size: "md"
39812
40050
  }),
@@ -39820,7 +40058,7 @@ var init_EventPaginatedListView_client = __esm({
39820
40058
  type: "button",
39821
40059
  onClick: loadMore,
39822
40060
  disabled: loading,
39823
- className: themedButtonClass({
40061
+ className: themeButtonClassName({
39824
40062
  variant: display.buttonVariant,
39825
40063
  size: "md",
39826
40064
  extraClassName: loading ? "rb-opacity-50 rb-cursor-wait" : null
@@ -39832,7 +40070,7 @@ var init_EventPaginatedListView_client = __esm({
39832
40070
  "a",
39833
40071
  {
39834
40072
  href: seeAllUrl,
39835
- className: themedButtonClass({
40073
+ className: themeButtonClassName({
39836
40074
  variant: display.buttonVariant,
39837
40075
  size: "md"
39838
40076
  }),
@@ -41182,7 +41420,7 @@ var init_EventCombined_client = __esm({
41182
41420
  init_EventModalContext();
41183
41421
  init_EventModals();
41184
41422
  init_utils();
41185
- init_themedButtonClass();
41423
+ init_buttons();
41186
41424
  EventCombinedClient = ({
41187
41425
  events: initialEvents,
41188
41426
  siteId,
@@ -41508,7 +41746,7 @@ var init_EventCombined_client = __esm({
41508
41746
  {
41509
41747
  type: "button",
41510
41748
  onClick: goToToday,
41511
- className: themedButtonClass({ variant: buttonVariant, size: "sm" }),
41749
+ className: themeButtonClassName({ variant: buttonVariant, size: "sm" }),
41512
41750
  children: "Today"
41513
41751
  }
41514
41752
  )
@@ -41825,7 +42063,7 @@ var init_EventCalendar_client = __esm({
41825
42063
  init_EventModalContext();
41826
42064
  init_EventModals();
41827
42065
  init_WeekTimetableView();
41828
- init_themedButtonClass();
42066
+ init_buttons();
41829
42067
  EventCalendarClient = ({
41830
42068
  render
41831
42069
  }) => {
@@ -42114,7 +42352,7 @@ var init_EventCalendar_client = __esm({
42114
42352
  {
42115
42353
  type: "button",
42116
42354
  onClick: onToday,
42117
- className: themedButtonClass({
42355
+ className: themeButtonClassName({
42118
42356
  variant: display.buttonVariant,
42119
42357
  size: "sm"
42120
42358
  }),
@@ -42130,7 +42368,7 @@ var init_EventCalendar_client = __esm({
42130
42368
  {
42131
42369
  type: "button",
42132
42370
  onClick: onToday,
42133
- className: themedButtonClass({
42371
+ className: themeButtonClassName({
42134
42372
  variant: display.buttonVariant,
42135
42373
  size: "sm"
42136
42374
  }),
@@ -42228,7 +42466,7 @@ var init_form_client = __esm({
42228
42466
  init_client2();
42229
42467
  init_src3();
42230
42468
  init_useFormSubmission();
42231
- init_themedButtonClass();
42469
+ init_buttons();
42232
42470
  FormNodeClient = ({
42233
42471
  render
42234
42472
  }) => {
@@ -42370,7 +42608,7 @@ var init_form_client = __esm({
42370
42608
  "button",
42371
42609
  {
42372
42610
  type: "submit",
42373
- className: themedButtonClass({
42611
+ className: themeButtonClassName({
42374
42612
  variant: "primary",
42375
42613
  size: "md",
42376
42614
  extraClassName: "rb-w-full rb-sm-w-auto"
@@ -42597,7 +42835,7 @@ function NewsletterFormClient({
42597
42835
  "button",
42598
42836
  {
42599
42837
  type: "submit",
42600
- className: themedButtonClass({ variant: "primary", size: "md" }),
42838
+ className: themeButtonClassName({ variant: "primary", size: "md" }),
42601
42839
  disabled: isSubmitting,
42602
42840
  children: isSubmitting ? "Subscribing..." : render.display.buttonLabel
42603
42841
  }
@@ -42616,14 +42854,14 @@ var init_newsletter_form_client = __esm({
42616
42854
  init_client2();
42617
42855
  init_src3();
42618
42856
  init_api();
42619
- init_themedButtonClass();
42857
+ init_buttons();
42620
42858
  newsletter_form_client_default = NewsletterFormClient;
42621
42859
  }
42622
42860
  });
42623
42861
 
42624
42862
  // ../blocks/src/system/runtime/components/registry.client.tsx
42625
42863
  import React53 from "react";
42626
- function isRecord4(value) {
42864
+ function isRecord5(value) {
42627
42865
  return typeof value === "object" && value !== null;
42628
42866
  }
42629
42867
  function buildRenderFromLooseProps(runtime, mode, props2) {
@@ -42642,14 +42880,14 @@ function withRuntimeBackedEnvelope(source, runtime, render) {
42642
42880
  function normalizeLegacyInteractiveRenderProps(runtime, mode, props2) {
42643
42881
  const source = props2;
42644
42882
  const render = props2["render"];
42645
- if (!isRecord4(render)) {
42883
+ if (!isRecord5(render)) {
42646
42884
  return withRuntimeBackedEnvelope(
42647
42885
  source,
42648
42886
  runtime,
42649
42887
  buildRenderFromLooseProps(runtime, mode, props2)
42650
42888
  );
42651
42889
  }
42652
- if (isRecord4(render["hydration"])) {
42890
+ if (isRecord5(render["hydration"])) {
42653
42891
  return withRuntimeBackedEnvelope(
42654
42892
  source,
42655
42893
  runtime,
@@ -42659,7 +42897,7 @@ function normalizeLegacyInteractiveRenderProps(runtime, mode, props2) {
42659
42897
  }
42660
42898
  );
42661
42899
  }
42662
- if (!isRecord4(render["display"])) {
42900
+ if (!isRecord5(render["display"])) {
42663
42901
  return withRuntimeBackedEnvelope(
42664
42902
  source,
42665
42903
  runtime,