@riverbankcms/sdk 0.60.9 → 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.
@@ -1335,6 +1335,9 @@ function validationContext(options = {}) {
1335
1335
  allowIncomplete: isDraft || (options.allowIncomplete ?? false)
1336
1336
  };
1337
1337
  }
1338
+ function formatFieldPath(path) {
1339
+ return path.map((segment) => String(segment)).join(".");
1340
+ }
1338
1341
  function fieldIssueToMessage(issue2) {
1339
1342
  switch (issue2.kind) {
1340
1343
  case "required":
@@ -1558,7 +1561,7 @@ function normalizeRepeaterItems(plan, value, ctx) {
1558
1561
  return normalizeObjectChildren(fields3, itemRecord, ctx);
1559
1562
  });
1560
1563
  }
1561
- function normalizeNumberInput(value, allowNull) {
1564
+ function normalizeNumberInput(value, _allowNull) {
1562
1565
  if (value === "") return void 0;
1563
1566
  if (typeof value === "string" && value.trim() !== "") return Number(value);
1564
1567
  return value;
@@ -1690,7 +1693,7 @@ function validateRepeaterItem(plan, item, index, ctx) {
1690
1693
  const fields3 = plan.repeatedItemVariants ? plan.repeatedItemVariants.find((variant) => variant.typeId === itemType)?.fields : plan.repeatedItemPlan;
1691
1694
  if (!fields3) return [];
1692
1695
  return fields3.flatMap((childPlan) => {
1693
- const indexedPlan = withIndexedPath(childPlan, plan.path, index);
1696
+ const indexedPlan = materializeRepeaterItemPlan(childPlan, plan.path, index);
1694
1697
  return validateNormalizedFieldValue(indexedPlan, item[childPlan.fieldId], ctx);
1695
1698
  });
1696
1699
  }
@@ -1702,12 +1705,58 @@ function validateGroupPlan(plan, value, ctx) {
1702
1705
  function childValidationContext(plan, ctx) {
1703
1706
  return plan.allowNullChildren ? { ...ctx, allowNull: true } : ctx;
1704
1707
  }
1705
- function withIndexedPath(plan, parentPath, index) {
1706
- const suffix = plan.path.slice(parentPath.length + 1);
1707
- return {
1708
- ...plan,
1709
- path: [...parentPath, index, plan.fieldId, ...suffix]
1710
- };
1708
+ function materializeRepeaterItemPlan(plan, parentPath, index) {
1709
+ return rebaseFieldPlanPath(plan, [...parentPath, 0], [...parentPath, index]);
1710
+ }
1711
+ function rebaseFieldPlanPath(plan, fromPrefix, toPrefix) {
1712
+ const path = rebaseFieldPath(plan.path, fromPrefix, toPrefix);
1713
+ switch (plan.kind) {
1714
+ case "group":
1715
+ return {
1716
+ ...plan,
1717
+ path,
1718
+ children: plan.children.map((childPlan) => rebaseFieldPlanPath(childPlan, fromPrefix, toPrefix))
1719
+ };
1720
+ case "repeater":
1721
+ return {
1722
+ ...plan,
1723
+ path,
1724
+ ...plan.repeatedItemVariants ? {
1725
+ repeatedItemVariants: plan.repeatedItemVariants.map((variant) => ({
1726
+ ...variant,
1727
+ fields: variant.fields.map((fieldPlan) => rebaseFieldPlanPath(fieldPlan, fromPrefix, toPrefix))
1728
+ }))
1729
+ } : {},
1730
+ ...plan.repeatedItemPlan ? {
1731
+ repeatedItemPlan: plan.repeatedItemPlan.map(
1732
+ (fieldPlan) => rebaseFieldPlanPath(fieldPlan, fromPrefix, toPrefix)
1733
+ )
1734
+ } : {}
1735
+ };
1736
+ case "string":
1737
+ case "number":
1738
+ case "boolean":
1739
+ case "richText":
1740
+ case "media":
1741
+ case "link":
1742
+ case "select":
1743
+ case "passthrough":
1744
+ return {
1745
+ ...plan,
1746
+ path
1747
+ };
1748
+ default:
1749
+ return assertNever2(plan);
1750
+ }
1751
+ }
1752
+ function rebaseFieldPath(path, fromPrefix, toPrefix) {
1753
+ if (!startsWithFieldPath(path, fromPrefix)) {
1754
+ throw new Error(`Cannot rebase field path ${formatFieldPath(path)} from ${formatFieldPath(fromPrefix)}`);
1755
+ }
1756
+ return [...toPrefix, ...path.slice(fromPrefix.length)];
1757
+ }
1758
+ function startsWithFieldPath(path, prefix) {
1759
+ return prefix.every((segment, index) => path[index] === segment);
1711
1760
  }
1712
1761
  function issue(plan, kind, extra) {
1713
1762
  return {
@@ -2218,6 +2267,15 @@ var VARIANT_ROLES = [
2218
2267
  "tertiary",
2219
2268
  "accent"
2220
2269
  ];
2270
+ function isVariantRole(value) {
2271
+ return VARIANT_ROLES.includes(value);
2272
+ }
2273
+ function asSpecialVariantId(value) {
2274
+ if (value.length === 0) {
2275
+ throw new Error("SpecialVariantId must be a non-empty string");
2276
+ }
2277
+ return value;
2278
+ }
2221
2279
  var DEFAULT_VARIANT_ALIAS_ID = "default";
2222
2280
  var cornerStyleSchema = z6.enum(["square", "rounded", "pill"]);
2223
2281
  var shadowSizeSchema = z6.enum(["none", "low", "medium", "high"]);
@@ -2968,6 +3026,42 @@ var mediaSchema = z9.object({
2968
3026
  transform: transformSchema.optional()
2969
3027
  });
2970
3028
 
3029
+ // ../theme-core/src/buttons/classNames.ts
3030
+ function parseThemeButtonVariantId(value) {
3031
+ const normalized = value?.trim() ?? "";
3032
+ if (normalized.length === 0) {
3033
+ return null;
3034
+ }
3035
+ if (normalized === DEFAULT_VARIANT_ALIAS_ID) {
3036
+ return DEFAULT_VARIANT_ALIAS_ID;
3037
+ }
3038
+ return isVariantRole(normalized) ? normalized : asSpecialVariantId(normalized);
3039
+ }
3040
+ function themeButtonVariantClassNames(variant) {
3041
+ if (variant === DEFAULT_VARIANT_ALIAS_ID) {
3042
+ return [variant];
3043
+ }
3044
+ return [variant, `button-${variant}`];
3045
+ }
3046
+ function themeButtonSizeClassName(size) {
3047
+ return `btn-${size}`;
3048
+ }
3049
+ function themeButtonSelector(variant, size) {
3050
+ const baseSelector = `.${variant}`;
3051
+ if (!size) {
3052
+ return baseSelector;
3053
+ }
3054
+ return `${baseSelector}.${themeButtonSizeClassName(size)}`;
3055
+ }
3056
+ function themeButtonClassName(spec) {
3057
+ const classes = [
3058
+ ...themeButtonVariantClassNames(spec.variant),
3059
+ themeButtonSizeClassName(spec.size),
3060
+ spec.extraClassName
3061
+ ];
3062
+ return classes.filter(Boolean).join(" ");
3063
+ }
3064
+
2971
3065
  // ../theme-core/src/tokens/resolver.ts
2972
3066
  var TokenResolver = class {
2973
3067
  constructor(theme) {
@@ -4539,17 +4633,25 @@ function resolveAliasSource(enabled) {
4539
4633
  }
4540
4634
  function variantChunks(variant, global, themeSizes, themeId, tokens, theme) {
4541
4635
  const out = [];
4542
- out.push(variantBaseRule(variant, global, themeId, tokens, theme));
4543
- const hoverBg = variantHoverBackgroundRule(variant, global, themeId, tokens);
4636
+ const variantId = parseButtonVariantIdForCss(variant.id);
4637
+ out.push(variantBaseRule(variant, variantId, global, themeId, tokens, theme));
4638
+ const hoverBg = variantHoverBackgroundRule(variant, variantId, global, themeId, tokens);
4544
4639
  if (hoverBg) out.push(hoverBg);
4545
4640
  const effects = variantEffectsCss(variant, themeId, tokens, theme);
4546
4641
  if (effects) out.push({ raw: effects });
4547
- out.push(...variantDisabledRules(variant, themeId));
4548
- out.push(...variantSizeRules(variant, themeSizes, themeId));
4642
+ out.push(...variantDisabledRules(variantId, themeId));
4643
+ out.push(...variantSizeRules(variant, variantId, themeSizes, themeId));
4549
4644
  return out;
4550
4645
  }
4551
- function variantBaseRule(variant, global, themeId, tokens, theme) {
4552
- const selector = `:where([data-theme-scope="${themeId}"]) .${variant.id}`;
4646
+ function parseButtonVariantIdForCss(value) {
4647
+ const variantId = parseThemeButtonVariantId(value);
4648
+ if (!variantId) {
4649
+ throw new Error("Button variant id must be a non-empty string");
4650
+ }
4651
+ return variantId;
4652
+ }
4653
+ function variantBaseRule(variant, variantId, global, themeId, tokens, theme) {
4654
+ const selector = `:where([data-theme-scope="${themeId}"]) ${themeButtonSelector(variantId)}`;
4553
4655
  const decls = [];
4554
4656
  decls.push(["font-weight", String(global.fontWeight)]);
4555
4657
  decls.push(["font-family", resolveFontFamily(global)]);
@@ -4582,13 +4684,13 @@ function variantBaseRule(variant, global, themeId, tokens, theme) {
4582
4684
  }
4583
4685
  return rule(selector, decls);
4584
4686
  }
4585
- function variantHoverBackgroundRule(variant, global, themeId, tokens) {
4687
+ function variantHoverBackgroundRule(variant, variantId, global, themeId, tokens) {
4586
4688
  let hoverToken = variant.hoverBackgroundToken;
4587
4689
  if (!hoverToken && global.hoverColor === "token" && global.hoverColorToken) {
4588
4690
  hoverToken = global.hoverColorToken;
4589
4691
  }
4590
4692
  if (!hoverToken) return null;
4591
- return rule(`:where([data-theme-scope="${themeId}"]) .${variant.id}:hover`, [
4693
+ return rule(`:where([data-theme-scope="${themeId}"]) ${themeButtonSelector(variantId)}:hover`, [
4592
4694
  ["background-color", tokens.getColor(hoverToken)]
4593
4695
  ]);
4594
4696
  }
@@ -4608,8 +4710,8 @@ function variantEffectsCss(variant, themeId, tokens, theme) {
4608
4710
  theme
4609
4711
  });
4610
4712
  }
4611
- function variantDisabledRules(variant, themeId) {
4612
- const base = `:where([data-theme-scope="${themeId}"]) .${variant.id}:disabled`;
4713
+ function variantDisabledRules(variantId, themeId) {
4714
+ const base = `:where([data-theme-scope="${themeId}"]) ${themeButtonSelector(variantId)}:disabled`;
4613
4715
  const disabledSelectors = [base, `${base}:hover`, `${base}:active`, `${base}:focus`];
4614
4716
  const pseudoSelectors = [`${base}::before`, `${base}::after`];
4615
4717
  return [
@@ -4627,12 +4729,12 @@ function variantDisabledRules(variant, themeId) {
4627
4729
  ])
4628
4730
  ];
4629
4731
  }
4630
- function variantSizeRules(variant, themeSizes, themeId) {
4732
+ function variantSizeRules(variant, variantId, themeSizes, themeId) {
4631
4733
  const borderWidth = variant.border ? BORDER_WIDTH_MAP[variant.border.widthClass] || "1px" : "0px";
4632
4734
  const rules = [];
4633
4735
  for (const sizeName of BUTTON_SIZE_NAMES) {
4634
4736
  const config = resolveSizeConfig(variant, sizeName, themeSizes);
4635
- const selector = `:where([data-theme-scope="${themeId}"]) .${variant.id}.btn-${sizeName}`;
4737
+ const selector = `:where([data-theme-scope="${themeId}"]) ${themeButtonSelector(variantId, sizeName)}`;
4636
4738
  const decls = [];
4637
4739
  for (const decl of paddingDeclarations(config.padding, borderWidth)) decls.push(decl);
4638
4740
  if (config.fontSize) {
@@ -19705,14 +19807,6 @@ function CalendarIcon({
19705
19807
  );
19706
19808
  }
19707
19809
 
19708
- // ../blocks/src/system/runtime/shared/themedButtonClass.ts
19709
- function themedButtonClass(spec) {
19710
- const { variant, size, extraClassName } = spec;
19711
- const normalizedVariant = variant.trim();
19712
- const variantClasses = normalizedVariant ? [normalizedVariant, `button-${normalizedVariant}`] : [];
19713
- return [...variantClasses, `btn-${size}`, extraClassName].filter(Boolean).join(" ");
19714
- }
19715
-
19716
19810
  // ../blocks/src/system/runtime/nodes/events/shared/EventCard.tsx
19717
19811
  import { jsx as jsx4, jsxs as jsxs2 } from "react/jsx-runtime";
19718
19812
  var EventCard = ({
@@ -19740,7 +19834,7 @@ var EventCard = ({
19740
19834
  const isSoldOut = cta.hidden;
19741
19835
  const { available: spotsLeft } = getEventAvailability(event);
19742
19836
  const cardClass = `card-${cardVariant}`;
19743
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "md" });
19837
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
19744
19838
  const title = event.title;
19745
19839
  const summary = event.presentation?.summary ?? event.description;
19746
19840
  const image = event.presentation?.image ?? null;
@@ -19859,7 +19953,7 @@ var EventCompactRow = ({
19859
19953
  const price = formatEventPrice(event);
19860
19954
  const teacherLine = formatEventTeacherLine(event);
19861
19955
  const cta = resolveEventCta(event, buttonText);
19862
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "sm" });
19956
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "sm" });
19863
19957
  return /* @__PURE__ */ jsxs3("div", { className: "event-compact-row", children: [
19864
19958
  /* @__PURE__ */ jsxs3("div", { className: "event-compact-row-content", children: [
19865
19959
  /* @__PURE__ */ jsxs3("div", { className: "event-compact-row-top", children: [
@@ -26549,11 +26643,12 @@ var ButtonNode = ({
26549
26643
  }
26550
26644
  return null;
26551
26645
  }
26552
- const resolvedVariantId = typeof variantId === "string" ? variantId.trim() : "";
26553
- const normalizedVariantId = resolvedVariantId === DEFAULT_VARIANT_ALIAS_ID ? "" : resolvedVariantId;
26554
- const variantClasses = normalizedVariantId ? [normalizedVariantId, `button-${normalizedVariantId}`] : [];
26555
- const sizeClass = `btn-${size}`;
26556
- const combinedClassName = [...variantClasses, sizeClass, className].filter(Boolean).join(" ");
26646
+ const resolvedVariantId = parseThemeButtonVariantId(variantId);
26647
+ const combinedClassName = resolvedVariantId ? themeButtonClassName({
26648
+ variant: resolvedVariantId,
26649
+ size,
26650
+ extraClassName: className
26651
+ }) : className;
26557
26652
  if (resolvedHref) {
26558
26653
  return /* @__PURE__ */ jsx15(
26559
26654
  "a",
@@ -27127,7 +27222,7 @@ function FileDownloadNode({
27127
27222
  {
27128
27223
  href,
27129
27224
  download: filename,
27130
- className: themedButtonClass({
27225
+ className: themeButtonClassName({
27131
27226
  variant,
27132
27227
  size: "md",
27133
27228
  extraClassName: "rb-inline-flex rb-shrink-0 rb-items-center rb-justify-center rb-gap-2"
@@ -28819,7 +28914,7 @@ var EventSpotlight = ({
28819
28914
  }
28820
28915
  const containerClass = getContainerClass(layout, columns);
28821
28916
  const cardOrientation = getCardOrientation(layout);
28822
- const buttonClass = themedButtonClass({ variant: buttonVariant, size: "md" });
28917
+ const buttonClass = themeButtonClassName({ variant: buttonVariant, size: "md" });
28823
28918
  return /* @__PURE__ */ jsxs19("div", { className: `event-spotlight-section ${className || ""}`, "data-block": "event-spotlight", children: [
28824
28919
  /* @__PURE__ */ jsx32("div", { className: `event-spotlight ${containerClass}`, children: normalizedEvents.map((event) => /* @__PURE__ */ jsx32(
28825
28920
  EventCard,
@@ -29312,7 +29407,16 @@ function CheckoutShellView(props2) {
29312
29407
  import { Fragment as Fragment5, jsx as jsx36, jsxs as jsxs22 } from "react/jsx-runtime";
29313
29408
  function renderServerPendingAction(label, soldOut) {
29314
29409
  return /* @__PURE__ */ jsxs22(Fragment5, { children: [
29315
- /* @__PURE__ */ jsx36("button", { type: "button", className: "default", disabled: true, "aria-disabled": "true", children: soldOut ? "Sold out" : label }),
29410
+ /* @__PURE__ */ jsx36(
29411
+ "button",
29412
+ {
29413
+ type: "button",
29414
+ className: themeButtonClassName({ variant: "default", size: "md" }),
29415
+ disabled: true,
29416
+ "aria-disabled": "true",
29417
+ children: soldOut ? "Sold out" : label
29418
+ }
29419
+ ),
29316
29420
  !soldOut ? /* @__PURE__ */ jsx36("p", { className: "rb-caption status-muted", children: "Cart actions become interactive after page load." }) : null
29317
29421
  ] });
29318
29422
  }
@@ -29332,7 +29436,14 @@ function ProductListServerContent(props2) {
29332
29436
  ),
29333
29437
  actions: /* @__PURE__ */ jsxs22(Fragment5, { children: [
29334
29438
  renderServerPendingAction(card.actionLabel, card.soldOut),
29335
- card.path ? /* @__PURE__ */ jsx36("a", { href: card.path, className: "secondary btn-sm", children: "View details" }) : null
29439
+ card.path ? /* @__PURE__ */ jsx36(
29440
+ "a",
29441
+ {
29442
+ href: card.path,
29443
+ className: themeButtonClassName({ variant: "secondary", size: "sm" }),
29444
+ children: "View details"
29445
+ }
29446
+ ) : null
29336
29447
  ] })
29337
29448
  },
29338
29449
  card.productId
@@ -29865,7 +29976,7 @@ function renderCalendarGrid(display) {
29865
29976
  "button",
29866
29977
  {
29867
29978
  type: "button",
29868
- className: themedButtonClass({
29979
+ className: themeButtonClassName({
29869
29980
  variant: display.buttonVariant,
29870
29981
  size: "sm"
29871
29982
  }),
@@ -29951,7 +30062,7 @@ function renderTimetableSsr(display) {
29951
30062
  "button",
29952
30063
  {
29953
30064
  type: "button",
29954
- className: themedButtonClass({
30065
+ className: themeButtonClassName({
29955
30066
  variant: display.buttonVariant,
29956
30067
  size: "sm"
29957
30068
  }),
@@ -30308,7 +30419,7 @@ var FormNodeSSR = ({
30308
30419
  "button",
30309
30420
  {
30310
30421
  type: "submit",
30311
- className: themedButtonClass({
30422
+ className: themeButtonClassName({
30312
30423
  variant: "primary",
30313
30424
  size: "md",
30314
30425
  extraClassName: "rb-w-full rb-sm-w-auto"
@@ -30399,7 +30510,7 @@ function NewsletterFormSSR({
30399
30510
  "button",
30400
30511
  {
30401
30512
  type: "submit",
30402
- className: themedButtonClass({ variant: "primary", size: "md" }),
30513
+ className: themeButtonClassName({ variant: "primary", size: "md" }),
30403
30514
  children: display.buttonLabel
30404
30515
  }
30405
30516
  ) })
@@ -30519,7 +30630,16 @@ function ShopSSR({
30519
30630
  PassCardView,
30520
30631
  {
30521
30632
  display: pass,
30522
- action: /* @__PURE__ */ jsx49("button", { type: "button", className: "default", disabled: true, "aria-disabled": "true", children: pass.actionLabel })
30633
+ action: /* @__PURE__ */ jsx49(
30634
+ "button",
30635
+ {
30636
+ type: "button",
30637
+ className: themeButtonClassName({ variant: "default", size: "md" }),
30638
+ disabled: true,
30639
+ "aria-disabled": "true",
30640
+ children: pass.actionLabel
30641
+ }
30642
+ )
30523
30643
  },
30524
30644
  pass.id
30525
30645
  )),
@@ -30527,7 +30647,16 @@ function ShopSSR({
30527
30647
  MembershipCardView,
30528
30648
  {
30529
30649
  display: membership,
30530
- action: /* @__PURE__ */ jsx49("button", { type: "button", className: "default", disabled: true, "aria-disabled": "true", children: membership.actionLabel })
30650
+ action: /* @__PURE__ */ jsx49(
30651
+ "button",
30652
+ {
30653
+ type: "button",
30654
+ className: themeButtonClassName({ variant: "default", size: "md" }),
30655
+ disabled: true,
30656
+ "aria-disabled": "true",
30657
+ children: membership.actionLabel
30658
+ }
30659
+ )
30531
30660
  },
30532
30661
  membership.id
30533
30662
  ))
@@ -8389,35 +8389,6 @@ var init_routableLink = __esm({
8389
8389
  }
8390
8390
  });
8391
8391
 
8392
- // ../api/src/navigation/matcher.ts
8393
- var init_matcher = __esm({
8394
- "../api/src/navigation/matcher.ts"() {
8395
- "use strict";
8396
- }
8397
- });
8398
-
8399
- // ../api/src/navigation.ts
8400
- var init_navigation = __esm({
8401
- "../api/src/navigation.ts"() {
8402
- "use strict";
8403
- init_envelope();
8404
- init_error_propagation();
8405
- init_navigationMenuValidation();
8406
- init_linkResolver();
8407
- init_routableLink();
8408
- init_matcher();
8409
- }
8410
- });
8411
-
8412
- // ../api/src/navigation/visibility.ts
8413
- var init_visibility = __esm({
8414
- "../api/src/navigation/visibility.ts"() {
8415
- "use strict";
8416
- init_types2();
8417
- init_isRecord();
8418
- }
8419
- });
8420
-
8421
8392
  // ../blocks/src/system/manifest/augmentManifest.ts
8422
8393
  function augmentManifest(manifest) {
8423
8394
  let augmentedFields = manifest.fields ?? [];
@@ -9706,6 +9677,14 @@ var init_media2 = __esm({
9706
9677
  }
9707
9678
  });
9708
9679
 
9680
+ // ../theme-core/src/buttons/classNames.ts
9681
+ var init_classNames = __esm({
9682
+ "../theme-core/src/buttons/classNames.ts"() {
9683
+ "use strict";
9684
+ init_types4();
9685
+ }
9686
+ });
9687
+
9709
9688
  // ../theme-core/src/tokens/resolver.ts
9710
9689
  var init_resolver = __esm({
9711
9690
  "../theme-core/src/tokens/resolver.ts"() {
@@ -9845,6 +9824,7 @@ var init_generateButtonCss = __esm({
9845
9824
  "../theme-core/src/buttons/generateButtonCss.ts"() {
9846
9825
  "use strict";
9847
9826
  init_types4();
9827
+ init_classNames();
9848
9828
  init_resolver();
9849
9829
  init_generateEffectsCSS();
9850
9830
  init_constants();
@@ -9879,6 +9859,7 @@ var init_buttons = __esm({
9879
9859
  "../theme-core/src/buttons/index.ts"() {
9880
9860
  "use strict";
9881
9861
  init_types4();
9862
+ init_classNames();
9882
9863
  init_generateButtonCss();
9883
9864
  init_generateDefaultButtonSystem();
9884
9865
  init_constants();
@@ -31184,7 +31165,38 @@ var init_data = __esm({
31184
31165
  var init_linkValue = __esm({
31185
31166
  "../api/src/navigation/linkValue.ts"() {
31186
31167
  "use strict";
31168
+ init_src();
31169
+ init_routableLink();
31170
+ }
31171
+ });
31172
+
31173
+ // ../api/src/navigation/matcher.ts
31174
+ var init_matcher = __esm({
31175
+ "../api/src/navigation/matcher.ts"() {
31176
+ "use strict";
31177
+ }
31178
+ });
31179
+
31180
+ // ../api/src/navigation.ts
31181
+ var init_navigation = __esm({
31182
+ "../api/src/navigation.ts"() {
31183
+ "use strict";
31184
+ init_envelope();
31185
+ init_error_propagation();
31186
+ init_navigationMenuValidation();
31187
+ init_linkResolver();
31187
31188
  init_routableLink();
31189
+ init_linkValue();
31190
+ init_matcher();
31191
+ }
31192
+ });
31193
+
31194
+ // ../api/src/navigation/visibility.ts
31195
+ var init_visibility = __esm({
31196
+ "../api/src/navigation/visibility.ts"() {
31197
+ "use strict";
31198
+ init_types2();
31199
+ init_isRecord();
31188
31200
  }
31189
31201
  });
31190
31202
 
@@ -6262,7 +6262,7 @@ var SimpleCache = class {
6262
6262
  };
6263
6263
 
6264
6264
  // src/version.ts
6265
- var SDK_VERSION = "0.60.9";
6265
+ var SDK_VERSION = "0.60.11";
6266
6266
 
6267
6267
  // src/client/error.ts
6268
6268
  var RiverbankApiError = class _RiverbankApiError extends Error {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@riverbankcms/sdk",
3
- "version": "0.60.9",
3
+ "version": "0.60.11",
4
4
  "description": "Riverbank CMS SDK for headless content consumption",
5
5
  "main": "./dist/server/index.mjs",
6
6
  "module": "./dist/server/index.mjs",
@@ -1,11 +0,0 @@
1
- export type ThemedButtonVariant = 'primary' | 'secondary' | 'outline' | 'link';
2
- export type ThemedButtonSize = 'sm' | 'md' | 'lg' | 'xl';
3
- export type ThemedButtonClassName = string & {
4
- readonly __brand: 'ThemedButtonClassName';
5
- };
6
- export type ThemedButtonClassSpec = Readonly<{
7
- variant: ThemedButtonVariant;
8
- size: ThemedButtonSize;
9
- extraClassName?: string | null;
10
- }>;
11
- export declare function themedButtonClass(spec: ThemedButtonClassSpec): ThemedButtonClassName;