rei-kit 2.8.0 → 2.9.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -1,11 +1,12 @@
1
1
  import { a as addDays, c as lastNDays, d as toDateKey, f as todayKey, i as needsIosInstall, l as leadingBlanks, n as isApplePortable, o as eachDayOfYear, r as isInstalled, s as fromDateKey, t as SettingsGroup_default, u as startOfWeek } from "./SettingsGroup-BXkajKGl.js";
2
2
  import { n as formatNumber, r as setFormatLocale, t as formatDate } from "./format-BEvBK1SJ.js";
3
- import { n as SHEET_ROOT_ID, r as ensureSheetRoot } from "./inert-TJG_g0d6.js";
4
- import { _ as safeRedirect, a as useBoundValue, c as useToast, d as applyTheme, f as isThemePreference, g as tapFeedback, h as useTheme, i as BaseInput_default, l as useVisualViewport, m as setThemeStorageKey, n as BaseCheckbox_default, o as FormField_default, p as readStoredTheme, r as BaseSheet_default, s as BaseAlert_default, t as GoogleButton_default, u as useOnline, v as toRedirectPath } from "./GoogleButton-DVro7xZH.js";
3
+ import { i as ensureSheetRoot, n as useBoundValue, r as SHEET_ROOT_ID } from "./inert-BRQcZwpX.js";
4
+ import { _ as toRedirectPath, a as FormField_default, c as useVisualViewport, d as isThemePreference, f as readStoredTheme, g as safeRedirect, h as tapFeedback, i as BaseInput_default, l as useOnline, m as useTheme, n as BaseCheckbox_default, o as BaseAlert_default, p as setThemeStorageKey, r as BaseSheet_default, s as useToast, t as GoogleButton_default, u as applyTheme } from "./GoogleButton-DS08ayQ-.js";
5
5
  import { n as registerErrorMapper, r as toAppError, t as AppError } from "./app-error-DF9cijE0.js";
6
6
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.js";
7
- import { n as BaseButton_default, t as SettingsRow_default } from "./SettingsRow-BXFn8tCk.js";
8
- import { t as BaseSkeleton_default } from "./BaseSkeleton-B-oo7JKE.js";
7
+ import { t as BaseButton_default } from "./BaseButton-RN2an975.js";
8
+ import { t as SettingsRow_default } from "./SettingsRow-Ct1p2C9Q.js";
9
+ import { n as BaseListbox_default, t as BaseSkeleton_default } from "./BaseSkeleton-BWTNXVwP.js";
9
10
  import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, isRef, mergeModels, mergeProps, nextTick, normalizeClass, normalizeStyle, onBeforeUnmount, onErrorCaptured, onMounted, onScopeDispose, openBlock, readonly, ref, renderList, renderSlot, resolveDynamicComponent, toDisplayString, unref, useId, useModel, useTemplateRef, vModelRadio, vModelSelect, vModelText, vShow, watch, watchEffect, withCtx, withDirectives, withModifiers } from "vue";
10
11
  import { ArrowDown, ArrowRight, ArrowUp, ArrowUpRight, CalendarDays, Check, CheckCircle2, ChevronDown, ChevronLeft, ChevronRight, Copy, Info, Minus, Paperclip, Plus, Star, TriangleAlert, Upload, X, XCircle } from "lucide-vue-next";
11
12
  import { RouterLink } from "vue-router";
@@ -384,17 +385,17 @@ function useMediaQuery(query) {
384
385
  }
385
386
  //#endregion
386
387
  //#region src/components/BaseAvatar.vue?vue&type=script&setup=true&lang.ts
387
- var _hoisted_1$38 = [
388
+ var _hoisted_1$37 = [
388
389
  "role",
389
390
  "aria-label",
390
391
  "aria-hidden"
391
392
  ];
392
- var _hoisted_2$32 = ["src"];
393
- var _hoisted_3$21 = {
393
+ var _hoisted_2$31 = ["src"];
394
+ var _hoisted_3$20 = {
394
395
  key: 1,
395
396
  class: "rk-avatar-initials"
396
397
  };
397
- var _hoisted_4$17 = {
398
+ var _hoisted_4$16 = {
398
399
  key: 2,
399
400
  viewBox: "0 0 20 20",
400
401
  class: "rk-avatar-figure",
@@ -440,7 +441,7 @@ var BaseAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
440
441
  alt: "",
441
442
  class: "rk-avatar-img",
442
443
  onError: _cache[0] || (_cache[0] = ($event) => broken.value = true)
443
- }, null, 40, _hoisted_2$32)) : __props.fallback === "initials" && initials.value ? (openBlock(), createElementBlock("span", _hoisted_3$21, toDisplayString(initials.value), 1)) : (openBlock(), createElementBlock("svg", _hoisted_4$17, [..._cache[1] || (_cache[1] = [createElementVNode("circle", {
444
+ }, null, 40, _hoisted_2$31)) : __props.fallback === "initials" && initials.value ? (openBlock(), createElementBlock("span", _hoisted_3$20, toDisplayString(initials.value), 1)) : (openBlock(), createElementBlock("svg", _hoisted_4$16, [..._cache[1] || (_cache[1] = [createElementVNode("circle", {
444
445
  cx: "10",
445
446
  cy: "6.75",
446
447
  r: "3.25",
@@ -449,7 +450,7 @@ var BaseAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
449
450
  d: "M3.75 17c0-3.05 2.8-5.25 6.25-5.25S16.25 13.95 16.25 17",
450
451
  "stroke-width": "1.5",
451
452
  "stroke-linecap": "round"
452
- }, null, -1)])]))], 10, _hoisted_1$38);
453
+ }, null, -1)])]))], 10, _hoisted_1$37);
453
454
  };
454
455
  }
455
456
  }), [["__scopeId", "data-v-47586bec"]]);
@@ -474,12 +475,12 @@ var BaseBadge_default = /* @__PURE__ */ defineComponent({
474
475
  });
475
476
  //#endregion
476
477
  //#region src/components/BaseMenu.vue?vue&type=script&setup=true&lang.ts
477
- var _hoisted_1$37 = [
478
+ var _hoisted_1$36 = [
478
479
  "aria-label",
479
480
  "aria-expanded",
480
481
  "aria-controls"
481
482
  ];
482
- var _hoisted_2$31 = ["id"];
483
+ var _hoisted_2$30 = ["id"];
483
484
  //#endregion
484
485
  //#region src/components/BaseMenu.vue
485
486
  var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -578,14 +579,14 @@ var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
578
579
  "aria-haspopup": true,
579
580
  "aria-controls": open.value ? unref(id) : void 0,
580
581
  onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)
581
- }, [renderSlot(_ctx.$slots, "trigger", { open: open.value }, void 0, true)], 8, _hoisted_1$37), open.value ? (openBlock(), createElementBlock("div", {
582
+ }, [renderSlot(_ctx.$slots, "trigger", { open: open.value }, void 0, true)], 8, _hoisted_1$36), open.value ? (openBlock(), createElementBlock("div", {
582
583
  key: 0,
583
584
  id: unref(id),
584
585
  ref_key: "panel",
585
586
  ref: panel,
586
587
  class: normalizeClass(["rk-menu-panel surface-overlay", `is-${__props.align}`]),
587
588
  role: "menu"
588
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 10, _hoisted_2$31)) : createCommentVNode("", true)], 544);
589
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 10, _hoisted_2$30)) : createCommentVNode("", true)], 544);
589
590
  };
590
591
  }
591
592
  }), [["__scopeId", "data-v-e57ec901"]]);
@@ -656,9 +657,9 @@ var BaseCard_default = /* @__PURE__ */ defineComponent({
656
657
  });
657
658
  //#endregion
658
659
  //#region src/components/BaseCombobox.vue?vue&type=script&setup=true&lang.ts
659
- var _hoisted_1$36 = ["for"];
660
- var _hoisted_2$30 = { class: "rk-combo-field" };
661
- var _hoisted_3$20 = [
660
+ var _hoisted_1$35 = ["for"];
661
+ var _hoisted_2$29 = { class: "rk-combo-field" };
662
+ var _hoisted_3$19 = [
662
663
  "id",
663
664
  "placeholder",
664
665
  "disabled",
@@ -667,9 +668,9 @@ var _hoisted_3$20 = [
667
668
  "aria-invalid",
668
669
  "aria-describedby"
669
670
  ];
670
- var _hoisted_4$16 = ["disabled"];
671
- var _hoisted_5$10 = ["aria-label"];
672
- var _hoisted_6$6 = [
671
+ var _hoisted_4$15 = ["disabled"];
672
+ var _hoisted_5$9 = ["aria-label"];
673
+ var _hoisted_6$5 = [
673
674
  "id",
674
675
  "aria-selected",
675
676
  "onPointerdown",
@@ -795,8 +796,8 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
795
796
  createElementVNode("label", {
796
797
  for: unref(id),
797
798
  class: "rk-combo-label"
798
- }, toDisplayString(__props.label), 9, _hoisted_1$36),
799
- createElementVNode("div", _hoisted_2$30, [withDirectives(createElementVNode("input", {
799
+ }, toDisplayString(__props.label), 9, _hoisted_1$35),
800
+ createElementVNode("div", _hoisted_2$29, [withDirectives(createElementVNode("input", {
800
801
  id: unref(id),
801
802
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => text.value = $event),
802
803
  type: "text",
@@ -813,14 +814,14 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
813
814
  "aria-describedby": describedBy.value,
814
815
  onKeydown,
815
816
  onFocus: _cache[1] || (_cache[1] = ($event) => open.value = true)
816
- }, null, 40, _hoisted_3$20), [[vModelText, text.value]]), createElementVNode("button", {
817
+ }, null, 40, _hoisted_3$19), [[vModelText, text.value]]), createElementVNode("button", {
817
818
  type: "button",
818
819
  class: "rk-combo-toggle",
819
820
  tabindex: "-1",
820
821
  "aria-hidden": "true",
821
822
  disabled: __props.disabled,
822
823
  onClick: _cache[2] || (_cache[2] = ($event) => open.value = !open.value)
823
- }, " ▾ ", 8, _hoisted_4$16)]),
824
+ }, " ▾ ", 8, _hoisted_4$15)]),
824
825
  withDirectives(createElementVNode("ul", {
825
826
  id: listId,
826
827
  ref_key: "list",
@@ -840,8 +841,8 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
840
841
  "aria-selected": option.value === model.value,
841
842
  onPointerdown: withModifiers(($event) => choose(option), ["prevent"]),
842
843
  onPointermove: ($event) => highlighted.value = index
843
- }, toDisplayString(option.label), 43, _hoisted_6$6);
844
- }), 128)), matches.value.length === 0 ? (openBlock(), createElementBlock("li", _hoisted_7$4, toDisplayString(__props.emptyLabel), 1)) : createCommentVNode("", true)], 8, _hoisted_5$10), [[vShow, open.value]]),
844
+ }, toDisplayString(option.label), 43, _hoisted_6$5);
845
+ }), 128)), matches.value.length === 0 ? (openBlock(), createElementBlock("li", _hoisted_7$4, toDisplayString(__props.emptyLabel), 1)) : createCommentVNode("", true)], 8, _hoisted_5$9), [[vShow, open.value]]),
845
846
  __props.error ? (openBlock(), createElementBlock("p", {
846
847
  key: 0,
847
848
  id: errorId,
@@ -857,13 +858,13 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
857
858
  }), [["__scopeId", "data-v-ce4c503f"]]);
858
859
  //#endregion
859
860
  //#region src/components/BaseRadioGroup.vue?vue&type=script&setup=true&lang.ts
860
- var _hoisted_1$35 = ["aria-describedby"];
861
- var _hoisted_2$29 = [
861
+ var _hoisted_1$34 = ["aria-describedby"];
862
+ var _hoisted_2$28 = [
862
863
  "name",
863
864
  "value",
864
865
  "disabled"
865
866
  ];
866
- var _hoisted_3$19 = { class: "text-ink text-sm" };
867
+ var _hoisted_3$18 = { class: "text-ink text-sm" };
867
868
  //#endregion
868
869
  //#region src/components/BaseRadioGroup.vue
869
870
  var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
@@ -907,7 +908,7 @@ var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
907
908
  value: option.value,
908
909
  disabled: option.disabled,
909
910
  class: "accent-primary focus-visible:outline-primary size-4 shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2"
910
- }, null, 8, _hoisted_2$29), [[vModelRadio, unref(model)]]), createElementVNode("span", _hoisted_3$19, toDisplayString(option.label), 1)], 2);
911
+ }, null, 8, _hoisted_2$28), [[vModelRadio, unref(model)]]), createElementVNode("span", _hoisted_3$18, toDisplayString(option.label), 1)], 2);
911
912
  }), 128)),
912
913
  __props.error ? (openBlock(), createElementBlock("p", {
913
914
  key: 0,
@@ -918,24 +919,24 @@ var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
918
919
  id: hintId,
919
920
  class: "text-ink-soft text-xs"
920
921
  }, toDisplayString(__props.hint), 1)) : createCommentVNode("", true)
921
- ], 8, _hoisted_1$35);
922
+ ], 8, _hoisted_1$34);
922
923
  };
923
924
  }
924
925
  });
925
926
  //#endregion
926
927
  //#region src/components/BaseSelect.vue?vue&type=script&setup=true&lang.ts
927
- var _hoisted_1$34 = { class: "relative" };
928
- var _hoisted_2$28 = [
928
+ var _hoisted_1$33 = { class: "relative" };
929
+ var _hoisted_2$27 = [
929
930
  "id",
930
931
  "aria-invalid",
931
932
  "aria-describedby"
932
933
  ];
933
- var _hoisted_3$18 = {
934
+ var _hoisted_3$17 = {
934
935
  key: 0,
935
936
  value: void 0,
936
937
  disabled: ""
937
938
  };
938
- var _hoisted_4$15 = ["value", "disabled"];
939
+ var _hoisted_4$14 = ["value", "disabled"];
939
940
  //#endregion
940
941
  //#region src/components/BaseSelect.vue
941
942
  var BaseSelect_default = /* @__PURE__ */ defineComponent({
@@ -971,7 +972,7 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
971
972
  "label-hidden": __props.labelHidden,
972
973
  size: __props.size
973
974
  }, {
974
- default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$34, [withDirectives(createElementVNode("select", {
975
+ default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$33, [withDirectives(createElementVNode("select", {
975
976
  id,
976
977
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
977
978
  "aria-invalid": invalid,
@@ -981,13 +982,13 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
981
982
  __props.variant === "unstyled" ? "" : SIZE_CLASS[__props.size],
982
983
  __props.variant !== "unstyled" && invalid ? "border-negative" : ""
983
984
  ]])
984
- }, [__props.placeholder ? (openBlock(), createElementBlock("option", _hoisted_3$18, toDisplayString(__props.placeholder), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
985
+ }, [__props.placeholder ? (openBlock(), createElementBlock("option", _hoisted_3$17, toDisplayString(__props.placeholder), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
985
986
  return openBlock(), createElementBlock("option", {
986
987
  key: option.value,
987
988
  value: option.value,
988
989
  disabled: option.disabled
989
- }, toDisplayString(option.label), 9, _hoisted_4$15);
990
- }), 128))], 10, _hoisted_2$28), [[vModelSelect, model.value]]), createVNode(unref(ChevronDown), {
990
+ }, toDisplayString(option.label), 9, _hoisted_4$14);
991
+ }), 128))], 10, _hoisted_2$27), [[vModelSelect, model.value]]), createVNode(unref(ChevronDown), {
991
992
  class: "text-ink-soft pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2",
992
993
  "aria-hidden": "true"
993
994
  })])]),
@@ -1004,11 +1005,11 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
1004
1005
  });
1005
1006
  //#endregion
1006
1007
  //#region src/components/BaseSlider.vue?vue&type=script&setup=true&lang.ts
1007
- var _hoisted_1$33 = { class: "rk-slider" };
1008
- var _hoisted_2$27 = { class: "rk-slider-head" };
1009
- var _hoisted_3$17 = ["for"];
1010
- var _hoisted_4$14 = ["for"];
1011
- var _hoisted_5$9 = [
1008
+ var _hoisted_1$32 = { class: "rk-slider" };
1009
+ var _hoisted_2$26 = { class: "rk-slider-head" };
1010
+ var _hoisted_3$16 = ["for"];
1011
+ var _hoisted_4$13 = ["for"];
1012
+ var _hoisted_5$8 = [
1012
1013
  "id",
1013
1014
  "min",
1014
1015
  "max",
@@ -1052,15 +1053,15 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1052
1053
  return span <= 0 ? 0 : (model.value - __props.min) / span * 100;
1053
1054
  });
1054
1055
  return (_ctx, _cache) => {
1055
- return openBlock(), createElementBlock("div", _hoisted_1$33, [
1056
- createElementVNode("div", _hoisted_2$27, [createElementVNode("label", {
1056
+ return openBlock(), createElementBlock("div", _hoisted_1$32, [
1057
+ createElementVNode("div", _hoisted_2$26, [createElementVNode("label", {
1057
1058
  for: unref(id),
1058
1059
  class: "rk-slider-label"
1059
- }, toDisplayString(__props.label), 9, _hoisted_3$17), __props.showValue ? (openBlock(), createElementBlock("output", {
1060
+ }, toDisplayString(__props.label), 9, _hoisted_3$16), __props.showValue ? (openBlock(), createElementBlock("output", {
1060
1061
  key: 0,
1061
1062
  for: unref(id),
1062
1063
  class: "rk-slider-value"
1063
- }, toDisplayString(text.value), 9, _hoisted_4$14)) : createCommentVNode("", true)]),
1064
+ }, toDisplayString(text.value), 9, _hoisted_4$13)) : createCommentVNode("", true)]),
1064
1065
  withDirectives(createElementVNode("input", {
1065
1066
  id: unref(id),
1066
1067
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
@@ -1073,7 +1074,7 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1073
1074
  "aria-valuetext": text.value,
1074
1075
  "aria-describedby": __props.hint ? hintId : void 0,
1075
1076
  style: normalizeStyle({ "--rk-slider-filled": `${filled.value}%` })
1076
- }, null, 12, _hoisted_5$9), [[
1077
+ }, null, 12, _hoisted_5$8), [[
1077
1078
  vModelText,
1078
1079
  model.value,
1079
1080
  void 0,
@@ -1090,11 +1091,11 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1090
1091
  }), [["__scopeId", "data-v-7fa2769b"]]);
1091
1092
  //#endregion
1092
1093
  //#region src/components/BaseSpinner.vue?vue&type=script&setup=true&lang.ts
1093
- var _hoisted_1$32 = {
1094
+ var _hoisted_1$31 = {
1094
1095
  class: "rk-spin-wrap",
1095
1096
  role: "status"
1096
1097
  };
1097
- var _hoisted_2$26 = { class: "rk-spin-label" };
1098
+ var _hoisted_2$25 = { class: "rk-spin-label" };
1098
1099
  //#endregion
1099
1100
  //#region src/components/BaseSpinner.vue
1100
1101
  var BaseSpinner_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1122,26 +1123,26 @@ var BaseSpinner_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1122
1123
  lg: "2.5rem"
1123
1124
  };
1124
1125
  return (_ctx, _cache) => {
1125
- return openBlock(), createElementBlock("span", _hoisted_1$32, [createElementVNode("span", {
1126
+ return openBlock(), createElementBlock("span", _hoisted_1$31, [createElementVNode("span", {
1126
1127
  class: "rk-spin",
1127
1128
  style: normalizeStyle({
1128
1129
  width: SIZES[__props.size],
1129
1130
  height: SIZES[__props.size]
1130
1131
  }),
1131
1132
  "aria-hidden": "true"
1132
- }, null, 4), createElementVNode("span", _hoisted_2$26, toDisplayString(__props.label), 1)]);
1133
+ }, null, 4), createElementVNode("span", _hoisted_2$25, toDisplayString(__props.label), 1)]);
1133
1134
  };
1134
1135
  }
1135
1136
  }), [["__scopeId", "data-v-842da62c"]]);
1136
1137
  //#endregion
1137
1138
  //#region src/components/BaseSwitch.vue?vue&type=script&setup=true&lang.ts
1138
- var _hoisted_1$31 = { class: "flex items-center justify-between gap-4" };
1139
- var _hoisted_2$25 = {
1139
+ var _hoisted_1$30 = { class: "flex items-center justify-between gap-4" };
1140
+ var _hoisted_2$24 = {
1140
1141
  key: 0,
1141
1142
  class: "min-w-0"
1142
1143
  };
1143
- var _hoisted_3$16 = ["id"];
1144
- var _hoisted_4$13 = [
1144
+ var _hoisted_3$15 = ["id"];
1145
+ var _hoisted_4$12 = [
1145
1146
  "aria-checked",
1146
1147
  "aria-labelledby",
1147
1148
  "aria-label",
@@ -1180,10 +1181,10 @@ var BaseSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1180
1181
  if (!__props.disabled) model.value = !model.value;
1181
1182
  }
1182
1183
  return (_ctx, _cache) => {
1183
- return openBlock(), createElementBlock("div", _hoisted_1$31, [!__props.labelHidden ? (openBlock(), createElementBlock("span", _hoisted_2$25, [createElementVNode("span", {
1184
+ return openBlock(), createElementBlock("div", _hoisted_1$30, [!__props.labelHidden ? (openBlock(), createElementBlock("span", _hoisted_2$24, [createElementVNode("span", {
1184
1185
  id: unref(id),
1185
1186
  class: "text-ink block text-sm"
1186
- }, toDisplayString(__props.label), 9, _hoisted_3$16), __props.hint ? (openBlock(), createElementBlock("span", {
1187
+ }, toDisplayString(__props.label), 9, _hoisted_3$15), __props.hint ? (openBlock(), createElementBlock("span", {
1187
1188
  key: 0,
1188
1189
  id: hintId,
1189
1190
  class: "text-ink-soft mt-0.5 block text-xs"
@@ -1200,17 +1201,17 @@ var BaseSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1200
1201
  }, [..._cache[0] || (_cache[0] = [createElementVNode("span", {
1201
1202
  class: "rk-switch-knob",
1202
1203
  "aria-hidden": "true"
1203
- }, null, -1)])], 10, _hoisted_4$13)]);
1204
+ }, null, -1)])], 10, _hoisted_4$12)]);
1204
1205
  };
1205
1206
  }
1206
1207
  }), [["__scopeId", "data-v-3f4400a0"]]);
1207
1208
  //#endregion
1208
1209
  //#region src/components/BaseTable.vue?vue&type=script&setup=true&lang.ts
1209
- var _hoisted_1$30 = ["aria-label"];
1210
- var _hoisted_2$24 = { class: "rk-table" };
1211
- var _hoisted_3$15 = { key: 0 };
1212
- var _hoisted_4$12 = { key: 1 };
1213
- var _hoisted_5$8 = ["colspan"];
1210
+ var _hoisted_1$29 = ["aria-label"];
1211
+ var _hoisted_2$23 = { class: "rk-table" };
1212
+ var _hoisted_3$14 = { key: 0 };
1213
+ var _hoisted_4$11 = { key: 1 };
1214
+ var _hoisted_5$7 = ["colspan"];
1214
1215
  //#endregion
1215
1216
  //#region src/components/BaseTable.vue
1216
1217
  var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1233,7 +1234,7 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1233
1234
  tabindex: "0",
1234
1235
  role: "region",
1235
1236
  "aria-label": __props.caption
1236
- }, [createElementVNode("table", _hoisted_2$24, [
1237
+ }, [createElementVNode("table", _hoisted_2$23, [
1237
1238
  createElementVNode("caption", { class: normalizeClass(__props.captionHidden ? "rk-table-caption-hidden" : "rk-table-caption") }, toDisplayString(__props.caption), 3),
1238
1239
  createElementVNode("thead", null, [createElementVNode("tr", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
1239
1240
  return openBlock(), createElementBlock("th", {
@@ -1242,7 +1243,7 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1242
1243
  class: normalizeClass([column.align === "end" && "is-end", column.nowrap && "is-nowrap"])
1243
1244
  }, toDisplayString(column.label), 3);
1244
1245
  }), 128))])]),
1245
- __props.rows.length > 0 ? (openBlock(), createElementBlock("tbody", _hoisted_3$15, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row, index) => {
1246
+ __props.rows.length > 0 ? (openBlock(), createElementBlock("tbody", _hoisted_3$14, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row, index) => {
1246
1247
  return openBlock(), createElementBlock("tr", { key: keyFor(row, index) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
1247
1248
  return openBlock(), createElementBlock("td", {
1248
1249
  key: column.key,
@@ -1252,17 +1253,17 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1252
1253
  value: row[column.key]
1253
1254
  }, () => [createTextVNode(toDisplayString(row[column.key]), 1)], true)], 2);
1254
1255
  }), 128))]);
1255
- }), 128))])) : (openBlock(), createElementBlock("tbody", _hoisted_4$12, [createElementVNode("tr", null, [createElementVNode("td", {
1256
+ }), 128))])) : (openBlock(), createElementBlock("tbody", _hoisted_4$11, [createElementVNode("tr", null, [createElementVNode("td", {
1256
1257
  colspan: __props.columns.length,
1257
1258
  class: "rk-table-empty"
1258
- }, [renderSlot(_ctx.$slots, "empty", {}, void 0, true)], 8, _hoisted_5$8)])]))
1259
- ])], 8, _hoisted_1$30);
1259
+ }, [renderSlot(_ctx.$slots, "empty", {}, void 0, true)], 8, _hoisted_5$7)])]))
1260
+ ])], 8, _hoisted_1$29);
1260
1261
  };
1261
1262
  }
1262
1263
  }), [["__scopeId", "data-v-89958b5a"]]);
1263
1264
  //#endregion
1264
1265
  //#region src/components/BaseTextarea.vue?vue&type=script&setup=true&lang.ts
1265
- var _hoisted_1$29 = [
1266
+ var _hoisted_1$28 = [
1266
1267
  "id",
1267
1268
  "rows",
1268
1269
  "aria-invalid",
@@ -1308,7 +1309,7 @@ var BaseTextarea_default = /* @__PURE__ */ defineComponent({
1308
1309
  __props.variant === "unstyled" ? "" : "control text-ink rounded-card focus-visible:outline-primary resize-y px-3 py-2 leading-relaxed focus-visible:outline-2 focus-visible:outline-offset-1",
1309
1310
  "text-base",
1310
1311
  __props.variant !== "unstyled" && invalid ? "border-negative" : ""
1311
- ] }), null, 16, _hoisted_1$29), [[vModelText, unref(model)]])]),
1312
+ ] }), null, 16, _hoisted_1$28), [[vModelText, unref(model)]])]),
1312
1313
  _: 1
1313
1314
  }, 8, [
1314
1315
  "label",
@@ -1322,17 +1323,17 @@ var BaseTextarea_default = /* @__PURE__ */ defineComponent({
1322
1323
  });
1323
1324
  //#endregion
1324
1325
  //#region src/components/EmptyState.vue?vue&type=script&setup=true&lang.ts
1325
- var _hoisted_1$28 = { class: "flex flex-col items-center gap-3 px-6 py-10 text-center" };
1326
- var _hoisted_2$23 = {
1326
+ var _hoisted_1$27 = { class: "flex flex-col items-center gap-3 px-6 py-10 text-center" };
1327
+ var _hoisted_2$22 = {
1327
1328
  key: 0,
1328
1329
  class: "bg-muted text-primary rounded-card flex size-12 items-center justify-center"
1329
1330
  };
1330
- var _hoisted_3$14 = { class: "text-ink text-base font-semibold" };
1331
- var _hoisted_4$11 = {
1331
+ var _hoisted_3$13 = { class: "text-ink text-base font-semibold" };
1332
+ var _hoisted_4$10 = {
1332
1333
  key: 1,
1333
1334
  class: "text-ink-soft max-w-[36ch] text-sm"
1334
1335
  };
1335
- var _hoisted_5$7 = {
1336
+ var _hoisted_5$6 = {
1336
1337
  key: 2,
1337
1338
  class: "mt-2 flex w-full flex-col gap-2"
1338
1339
  };
@@ -1354,11 +1355,11 @@ var EmptyState_default = /* @__PURE__ */ defineComponent({
1354
1355
  * goes — the button that creates the first one.
1355
1356
  */
1356
1357
  return (_ctx, _cache) => {
1357
- return openBlock(), createElementBlock("div", _hoisted_1$28, [
1358
- _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$23, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
1359
- createElementVNode("h3", _hoisted_3$14, toDisplayString(__props.title), 1),
1360
- __props.description ? (openBlock(), createElementBlock("p", _hoisted_4$11, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
1361
- _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5$7, [renderSlot(_ctx.$slots, "action")])) : createCommentVNode("", true)
1358
+ return openBlock(), createElementBlock("div", _hoisted_1$27, [
1359
+ _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$22, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
1360
+ createElementVNode("h3", _hoisted_3$13, toDisplayString(__props.title), 1),
1361
+ __props.description ? (openBlock(), createElementBlock("p", _hoisted_4$10, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
1362
+ _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5$6, [renderSlot(_ctx.$slots, "action")])) : createCommentVNode("", true)
1362
1363
  ]);
1363
1364
  };
1364
1365
  }
@@ -1425,11 +1426,11 @@ var PageContainer_default = /* @__PURE__ */ defineComponent({
1425
1426
  });
1426
1427
  //#endregion
1427
1428
  //#region src/components/PageHeader.vue?vue&type=script&setup=true&lang.ts
1428
- var _hoisted_1$27 = { class: "grid h-12 shrink-0 grid-cols-[2.5rem_1fr_2.5rem] items-center" };
1429
- var _hoisted_2$22 = { class: "justify-self-start" };
1430
- var _hoisted_3$13 = { class: "text-ink flex min-w-0 justify-center text-base font-semibold tabular-nums" };
1431
- var _hoisted_4$10 = { class: "truncate" };
1432
- var _hoisted_5$6 = { class: "justify-self-end" };
1429
+ var _hoisted_1$26 = { class: "grid h-12 shrink-0 grid-cols-[2.5rem_1fr_2.5rem] items-center" };
1430
+ var _hoisted_2$21 = { class: "justify-self-start" };
1431
+ var _hoisted_3$12 = { class: "text-ink flex min-w-0 justify-center text-base font-semibold tabular-nums" };
1432
+ var _hoisted_4$9 = { class: "truncate" };
1433
+ var _hoisted_5$5 = { class: "justify-self-end" };
1433
1434
  //#endregion
1434
1435
  //#region src/components/PageHeader.vue
1435
1436
  var PageHeader_default = /* @__PURE__ */ defineComponent({
@@ -1446,17 +1447,17 @@ var PageHeader_default = /* @__PURE__ */ defineComponent({
1446
1447
  * each other.
1447
1448
  */
1448
1449
  return (_ctx, _cache) => {
1449
- return openBlock(), createElementBlock("header", _hoisted_1$27, [
1450
- createElementVNode("div", _hoisted_2$22, [renderSlot(_ctx.$slots, "left")]),
1451
- createElementVNode("h1", _hoisted_3$13, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", _hoisted_4$10, toDisplayString(__props.title), 1)])]),
1452
- createElementVNode("div", _hoisted_5$6, [renderSlot(_ctx.$slots, "right")])
1450
+ return openBlock(), createElementBlock("header", _hoisted_1$26, [
1451
+ createElementVNode("div", _hoisted_2$21, [renderSlot(_ctx.$slots, "left")]),
1452
+ createElementVNode("h1", _hoisted_3$12, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", _hoisted_4$9, toDisplayString(__props.title), 1)])]),
1453
+ createElementVNode("div", _hoisted_5$5, [renderSlot(_ctx.$slots, "right")])
1453
1454
  ]);
1454
1455
  };
1455
1456
  }
1456
1457
  });
1457
1458
  //#endregion
1458
1459
  //#region src/components/ProgressBar.vue?vue&type=script&setup=true&lang.ts
1459
- var _hoisted_1$26 = ["aria-valuenow", "aria-label"];
1460
+ var _hoisted_1$25 = ["aria-valuenow", "aria-label"];
1460
1461
  //#endregion
1461
1462
  //#region src/components/ProgressBar.vue
1462
1463
  var ProgressBar_default = /* @__PURE__ */ defineComponent({
@@ -1488,24 +1489,24 @@ var ProgressBar_default = /* @__PURE__ */ defineComponent({
1488
1489
  }, [createElementVNode("div", {
1489
1490
  class: "bg-primary h-full rounded-full transition-[width] duration-700 ease-out",
1490
1491
  style: normalizeStyle({ width: `${portion.value}%` })
1491
- }, null, 4)], 10, _hoisted_1$26);
1492
+ }, null, 4)], 10, _hoisted_1$25);
1492
1493
  };
1493
1494
  }
1494
1495
  });
1495
1496
  //#endregion
1496
1497
  //#region src/components/PriceCard.vue?vue&type=script&setup=true&lang.ts
1497
- var _hoisted_1$25 = {
1498
+ var _hoisted_1$24 = {
1498
1499
  key: 0,
1499
1500
  class: "bg-primary rounded-cell text-on-primary absolute -top-3 left-7 px-3 py-1 text-[0.7rem] font-semibold"
1500
1501
  };
1501
- var _hoisted_2$21 = { class: "flex items-start justify-between gap-4" };
1502
- var _hoisted_3$12 = { class: "text-ink mt-5 text-lg font-semibold" };
1503
- var _hoisted_4$9 = {
1502
+ var _hoisted_2$20 = { class: "flex items-start justify-between gap-4" };
1503
+ var _hoisted_3$11 = { class: "text-ink mt-5 text-lg font-semibold" };
1504
+ var _hoisted_4$8 = {
1504
1505
  key: 1,
1505
1506
  class: "text-ink-soft mt-1.5 text-sm leading-relaxed"
1506
1507
  };
1507
- var _hoisted_5$5 = { class: "mt-6 flex items-baseline gap-1.5" };
1508
- var _hoisted_6$5 = { class: "text-ink text-3xl font-semibold tracking-tight tabular-nums" };
1508
+ var _hoisted_5$4 = { class: "mt-6 flex items-baseline gap-1.5" };
1509
+ var _hoisted_6$4 = { class: "text-ink text-3xl font-semibold tracking-tight tabular-nums" };
1509
1510
  var _hoisted_7$3 = {
1510
1511
  key: 0,
1511
1512
  class: "text-ink-soft text-sm"
@@ -1569,17 +1570,17 @@ var PriceCard_default = /* @__PURE__ */ defineComponent({
1569
1570
  const palette = computed(() => TONE[__props.tone]);
1570
1571
  return (_ctx, _cache) => {
1571
1572
  return openBlock(), createElementBlock("article", { class: normalizeClass(["surface rounded-card ease-standard relative flex h-full flex-col p-7 transition-[border-color,box-shadow,transform] duration-(--duration-slower) hover:[--surface-border-color:color-mix(in_oklab,var(--color-primary)_60%,transparent)] hover:[--surface-shadow:var(--shadow-raised)] sm:p-8", [palette.value.ring, __props.recommended ? "[--surface-shadow:var(--shadow-raised)]" : "hover:-translate-y-0.5"]]) }, [
1572
- __props.badge && __props.recommended ? (openBlock(), createElementBlock("span", _hoisted_1$25, toDisplayString(__props.badge), 1)) : createCommentVNode("", true),
1573
- createElementVNode("div", _hoisted_2$21, [_ctx.$slots.icon ? (openBlock(), createElementBlock("span", {
1573
+ __props.badge && __props.recommended ? (openBlock(), createElementBlock("span", _hoisted_1$24, toDisplayString(__props.badge), 1)) : createCommentVNode("", true),
1574
+ createElementVNode("div", _hoisted_2$20, [_ctx.$slots.icon ? (openBlock(), createElementBlock("span", {
1574
1575
  key: 0,
1575
1576
  class: normalizeClass(["rounded-card grid size-11 place-items-center text-xl", palette.value.icon])
1576
1577
  }, [renderSlot(_ctx.$slots, "icon")], 2)) : createCommentVNode("", true), __props.chip ? (openBlock(), createElementBlock("span", {
1577
1578
  key: 1,
1578
1579
  class: normalizeClass(["rounded-cell ml-auto px-2.5 py-1 text-[0.7rem] font-medium", palette.value.soft])
1579
1580
  }, toDisplayString(__props.chip), 3)) : createCommentVNode("", true)]),
1580
- createElementVNode("h3", _hoisted_3$12, toDisplayString(__props.name), 1),
1581
- __props.lead ? (openBlock(), createElementBlock("p", _hoisted_4$9, toDisplayString(__props.lead), 1)) : createCommentVNode("", true),
1582
- createElementVNode("p", _hoisted_5$5, [createElementVNode("span", _hoisted_6$5, toDisplayString(__props.price), 1), __props.period ? (openBlock(), createElementBlock("span", _hoisted_7$3, toDisplayString(__props.period), 1)) : createCommentVNode("", true)]),
1581
+ createElementVNode("h3", _hoisted_3$11, toDisplayString(__props.name), 1),
1582
+ __props.lead ? (openBlock(), createElementBlock("p", _hoisted_4$8, toDisplayString(__props.lead), 1)) : createCommentVNode("", true),
1583
+ createElementVNode("p", _hoisted_5$4, [createElementVNode("span", _hoisted_6$4, toDisplayString(__props.price), 1), __props.period ? (openBlock(), createElementBlock("span", _hoisted_7$3, toDisplayString(__props.period), 1)) : createCommentVNode("", true)]),
1583
1584
  __props.note ? (openBlock(), createElementBlock("p", _hoisted_8$2, toDisplayString(__props.note), 1)) : createCommentVNode("", true),
1584
1585
  createElementVNode("ul", _hoisted_9$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.features, (feature) => {
1585
1586
  return openBlock(), createElementBlock("li", {
@@ -1594,8 +1595,8 @@ var PriceCard_default = /* @__PURE__ */ defineComponent({
1594
1595
  });
1595
1596
  //#endregion
1596
1597
  //#region src/components/ToneDot.vue?vue&type=script&setup=true&lang.ts
1597
- var _hoisted_1$24 = { class: "inline-flex items-center gap-1.5" };
1598
- var _hoisted_2$20 = {
1598
+ var _hoisted_1$23 = { class: "inline-flex items-center gap-1.5" };
1599
+ var _hoisted_2$19 = {
1599
1600
  key: 0,
1600
1601
  class: "text-ink-soft text-xs font-medium"
1601
1602
  };
@@ -1616,13 +1617,13 @@ var ToneDot_default = /* @__PURE__ */ defineComponent({
1616
1617
  * priorities — without this component knowing about any of them.
1617
1618
  */
1618
1619
  return (_ctx, _cache) => {
1619
- return openBlock(), createElementBlock("span", _hoisted_1$24, [createElementVNode("span", { class: normalizeClass(["size-2 rounded-full", __props.fill]) }, null, 2), __props.label ? (openBlock(), createElementBlock("span", _hoisted_2$20, toDisplayString(__props.label), 1)) : createCommentVNode("", true)]);
1620
+ return openBlock(), createElementBlock("span", _hoisted_1$23, [createElementVNode("span", { class: normalizeClass(["size-2 rounded-full", __props.fill]) }, null, 2), __props.label ? (openBlock(), createElementBlock("span", _hoisted_2$19, toDisplayString(__props.label), 1)) : createCommentVNode("", true)]);
1620
1621
  };
1621
1622
  }
1622
1623
  });
1623
1624
  //#endregion
1624
1625
  //#region src/components/SectionHeading.vue?vue&type=script&setup=true&lang.ts
1625
- var _hoisted_1$23 = {
1626
+ var _hoisted_1$22 = {
1626
1627
  key: 0,
1627
1628
  class: "text-ink-soft text-xs tabular-nums"
1628
1629
  };
@@ -1640,15 +1641,15 @@ var SectionHeading_default = /* @__PURE__ */ defineComponent({
1640
1641
  return openBlock(), createElementBlock("h2", { class: normalizeClass(["flex w-fit items-center gap-2 self-start rounded-full border px-3 py-1", __props.tone.card]) }, [
1641
1642
  createVNode(ToneDot_default, { fill: __props.tone.fill }, null, 8, ["fill"]),
1642
1643
  createElementVNode("span", { class: normalizeClass(["text-xs font-semibold tracking-wide uppercase", __props.tone.text]) }, toDisplayString(__props.label), 3),
1643
- __props.count > 0 ? (openBlock(), createElementBlock("span", _hoisted_1$23, toDisplayString(__props.count), 1)) : createCommentVNode("", true)
1644
+ __props.count > 0 ? (openBlock(), createElementBlock("span", _hoisted_1$22, toDisplayString(__props.count), 1)) : createCommentVNode("", true)
1644
1645
  ], 2);
1645
1646
  };
1646
1647
  }
1647
1648
  });
1648
1649
  //#endregion
1649
1650
  //#region src/components/SegmentedControl.vue?vue&type=script&setup=true&lang.ts
1650
- var _hoisted_1$22 = { class: "bg-muted rounded-card flex w-full gap-1 p-1" };
1651
- var _hoisted_2$19 = ["value", "name"];
1651
+ var _hoisted_1$21 = { class: "bg-muted rounded-card flex w-full gap-1 p-1" };
1652
+ var _hoisted_2$18 = ["value", "name"];
1652
1653
  //#endregion
1653
1654
  //#region src/components/SegmentedControl.vue
1654
1655
  var SegmentedControl_default = /* @__PURE__ */ defineComponent({
@@ -1662,7 +1663,7 @@ var SegmentedControl_default = /* @__PURE__ */ defineComponent({
1662
1663
  const model = useModel(__props, "modelValue");
1663
1664
  const name = useId();
1664
1665
  return (_ctx, _cache) => {
1665
- return openBlock(), createElementBlock("div", _hoisted_1$22, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
1666
+ return openBlock(), createElementBlock("div", _hoisted_1$21, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
1666
1667
  return openBlock(), createElementBlock("label", {
1667
1668
  key: String(option.value),
1668
1669
  class: "flex-1 cursor-pointer"
@@ -1672,18 +1673,18 @@ var SegmentedControl_default = /* @__PURE__ */ defineComponent({
1672
1673
  value: option.value,
1673
1674
  name: unref(name),
1674
1675
  class: "peer sr-only"
1675
- }, null, 8, _hoisted_2$19), [[vModelRadio, model.value]]), createElementVNode("span", { class: normalizeClass(["peer-focus-visible:outline-primary flex h-10 items-center justify-center rounded-xl px-2 text-sm font-medium transition-colors select-none peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2", model.value === option.value ? "bg-surface text-ink shadow-(--shadow-control)" : "text-ink-soft"]) }, toDisplayString(option.label), 3)]);
1676
+ }, null, 8, _hoisted_2$18), [[vModelRadio, model.value]]), createElementVNode("span", { class: normalizeClass(["peer-focus-visible:outline-primary flex h-10 items-center justify-center rounded-xl px-2 text-sm font-medium transition-colors select-none peer-focus-visible:outline-2 peer-focus-visible:outline-offset-2", model.value === option.value ? "bg-surface text-ink shadow-(--shadow-control)" : "text-ink-soft"]) }, toDisplayString(option.label), 3)]);
1676
1677
  }), 128))]);
1677
1678
  };
1678
1679
  }
1679
1680
  });
1680
1681
  //#endregion
1681
1682
  //#region src/components/SkeletonList.vue?vue&type=script&setup=true&lang.ts
1682
- var _hoisted_1$21 = {
1683
+ var _hoisted_1$20 = {
1683
1684
  role: "status",
1684
1685
  class: "flex flex-col gap-1"
1685
1686
  };
1686
- var _hoisted_2$18 = { class: "sr-only" };
1687
+ var _hoisted_2$17 = { class: "sr-only" };
1687
1688
  //#endregion
1688
1689
  //#region src/components/SkeletonList.vue
1689
1690
  var SkeletonList_default = /* @__PURE__ */ defineComponent({
@@ -1697,7 +1698,7 @@ var SkeletonList_default = /* @__PURE__ */ defineComponent({
1697
1698
  /** A length starts with a digit, a dot, or opens a CSS function. */
1698
1699
  const isLength = computed(() => /^(?:[.\d]|calc\(|var\(|clamp\(|min\(|max\()/.test(__props.rowHeight));
1699
1700
  return (_ctx, _cache) => {
1700
- return openBlock(), createElementBlock("div", _hoisted_1$21, [createElementVNode("span", _hoisted_2$18, toDisplayString(__props.label), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row) => {
1701
+ return openBlock(), createElementBlock("div", _hoisted_1$20, [createElementVNode("span", _hoisted_2$17, toDisplayString(__props.label), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row) => {
1701
1702
  return openBlock(), createElementBlock("div", {
1702
1703
  key: row,
1703
1704
  class: normalizeClass(["bg-muted rounded-card animate-pulse", isLength.value ? void 0 : __props.rowHeight]),
@@ -1710,10 +1711,10 @@ var SkeletonList_default = /* @__PURE__ */ defineComponent({
1710
1711
  });
1711
1712
  //#endregion
1712
1713
  //#region src/components/StatCard.vue?vue&type=script&setup=true&lang.ts
1713
- var _hoisted_1$20 = { class: "surface rounded-card flex flex-1 flex-col gap-0.5 p-3" };
1714
- var _hoisted_2$17 = { class: "flex items-baseline gap-1" };
1715
- var _hoisted_3$11 = { class: "text-ink text-xl font-semibold tabular-nums" };
1716
- var _hoisted_4$8 = { class: "text-ink-soft text-xs" };
1714
+ var _hoisted_1$19 = { class: "surface rounded-card flex flex-1 flex-col gap-0.5 p-3" };
1715
+ var _hoisted_2$16 = { class: "flex items-baseline gap-1" };
1716
+ var _hoisted_3$10 = { class: "text-ink text-xl font-semibold tabular-nums" };
1717
+ var _hoisted_4$7 = { class: "text-ink-soft text-xs" };
1717
1718
  //#endregion
1718
1719
  //#region src/components/StatCard.vue
1719
1720
  var StatCard_default = /* @__PURE__ */ defineComponent({
@@ -1730,22 +1731,22 @@ var StatCard_default = /* @__PURE__ */ defineComponent({
1730
1731
  flat: ArrowRight
1731
1732
  };
1732
1733
  return (_ctx, _cache) => {
1733
- return openBlock(), createElementBlock("div", _hoisted_1$20, [createElementVNode("div", _hoisted_2$17, [createElementVNode("span", _hoisted_3$11, toDisplayString(__props.value), 1), __props.trend ? (openBlock(), createBlock(resolveDynamicComponent(TREND_ICON[__props.trend]), {
1734
+ return openBlock(), createElementBlock("div", _hoisted_1$19, [createElementVNode("div", _hoisted_2$16, [createElementVNode("span", _hoisted_3$10, toDisplayString(__props.value), 1), __props.trend ? (openBlock(), createBlock(resolveDynamicComponent(TREND_ICON[__props.trend]), {
1734
1735
  key: 0,
1735
1736
  class: "text-ink-soft size-3"
1736
- })) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_4$8, toDisplayString(__props.label), 1)]);
1737
+ })) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_4$7, toDisplayString(__props.label), 1)]);
1737
1738
  };
1738
1739
  }
1739
1740
  });
1740
1741
  //#endregion
1741
1742
  //#region src/components/ToastHost.vue?vue&type=script&setup=true&lang.ts
1742
- var _hoisted_1$19 = [
1743
+ var _hoisted_1$18 = [
1743
1744
  "onMouseenter",
1744
1745
  "onMouseleave",
1745
1746
  "onFocusin",
1746
1747
  "onFocusout"
1747
1748
  ];
1748
- var _hoisted_2$16 = { class: "flex-1 text-sm leading-snug" };
1749
+ var _hoisted_2$15 = { class: "flex-1 text-sm leading-snug" };
1749
1750
  //#endregion
1750
1751
  //#region src/components/ToastHost.vue
1751
1752
  var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1806,7 +1807,7 @@ var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1806
1807
  class: normalizeClass(["mt-0.5 size-5 shrink-0", TONE_CLASS[toast.tone]]),
1807
1808
  "aria-hidden": "true"
1808
1809
  }, null, 8, ["class"])),
1809
- createElementVNode("p", _hoisted_2$16, toDisplayString(toast.message), 1),
1810
+ createElementVNode("p", _hoisted_2$15, toDisplayString(toast.message), 1),
1810
1811
  toast.action ? (openBlock(), createBlock(BaseButton_default, {
1811
1812
  key: 0,
1812
1813
  variant: "link",
@@ -1829,7 +1830,7 @@ var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1829
1830
  default: withCtx(() => [createVNode(unref(X), { class: "size-4" })]),
1830
1831
  _: 1
1831
1832
  }, 8, ["aria-label", "onClick"])
1832
- ], 40, _hoisted_1$19);
1833
+ ], 40, _hoisted_1$18);
1833
1834
  }), 128))]),
1834
1835
  _: 1
1835
1836
  })], 2)])) : createCommentVNode("", true);
@@ -1838,8 +1839,8 @@ var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1838
1839
  }), [["__scopeId", "data-v-737eb240"]]);
1839
1840
  //#endregion
1840
1841
  //#region src/components/LocaleLinks.vue?vue&type=script&setup=true&lang.ts
1841
- var _hoisted_1$18 = ["aria-label"];
1842
- var _hoisted_2$15 = [
1842
+ var _hoisted_1$17 = ["aria-label"];
1843
+ var _hoisted_2$14 = [
1843
1844
  "lang",
1844
1845
  "aria-pressed",
1845
1846
  "onClick"
@@ -1883,17 +1884,17 @@ var LocaleLinks_default = /* @__PURE__ */ defineComponent({
1883
1884
  class: normalizeClass(["focus-ring rounded-full px-2.5 py-1.5 text-xs transition-colors", preference.value === locale ? "bg-muted text-ink font-semibold" : "text-ink-soft hover:text-ink"]),
1884
1885
  "aria-pressed": preference.value === locale,
1885
1886
  onClick: ($event) => preference.value = locale
1886
- }, toDisplayString(__props.labels[locale]), 11, _hoisted_2$15);
1887
- }), 128))], 8, _hoisted_1$18);
1887
+ }, toDisplayString(__props.labels[locale]), 11, _hoisted_2$14);
1888
+ }), 128))], 8, _hoisted_1$17);
1888
1889
  };
1889
1890
  }
1890
1891
  });
1891
1892
  //#endregion
1892
1893
  //#region src/components/TabBar.vue?vue&type=script&setup=true&lang.ts
1893
- var _hoisted_1$17 = { class: "tab-bar" };
1894
- var _hoisted_2$14 = ["aria-label"];
1895
- var _hoisted_3$10 = { class: "tab-icon-slot" };
1896
- var _hoisted_4$7 = { class: "tab-label" };
1894
+ var _hoisted_1$16 = { class: "tab-bar" };
1895
+ var _hoisted_2$13 = ["aria-label"];
1896
+ var _hoisted_3$9 = { class: "tab-icon-slot" };
1897
+ var _hoisted_4$6 = { class: "tab-label" };
1897
1898
  //#endregion
1898
1899
  //#region src/components/TabBar.vue
1899
1900
  var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1905,7 +1906,7 @@ var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
1905
1906
  },
1906
1907
  setup(__props) {
1907
1908
  return (_ctx, _cache) => {
1908
- return openBlock(), createElementBlock("header", _hoisted_1$17, [createElementVNode("nav", {
1909
+ return openBlock(), createElementBlock("header", _hoisted_1$16, [createElementVNode("nav", {
1909
1910
  class: "tab-bar-inner",
1910
1911
  "aria-label": __props.label || void 0
1911
1912
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
@@ -1916,21 +1917,21 @@ var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
1916
1917
  "aria-current": item.key === __props.active ? "page" : void 0,
1917
1918
  onClick: _cache[0] || (_cache[0] = ($event) => unref(tapFeedback)())
1918
1919
  }, {
1919
- default: withCtx(() => [createElementVNode("span", _hoisted_3$10, [(openBlock(), createBlock(resolveDynamicComponent(item.icon), { class: "tab-icon" }))]), createElementVNode("span", _hoisted_4$7, toDisplayString(item.label), 1)]),
1920
+ default: withCtx(() => [createElementVNode("span", _hoisted_3$9, [(openBlock(), createBlock(resolveDynamicComponent(item.icon), { class: "tab-icon" }))]), createElementVNode("span", _hoisted_4$6, toDisplayString(item.label), 1)]),
1920
1921
  _: 2
1921
1922
  }, 1032, [
1922
1923
  "to",
1923
1924
  "class",
1924
1925
  "aria-current"
1925
1926
  ]);
1926
- }), 128))], 8, _hoisted_2$14)]);
1927
+ }), 128))], 8, _hoisted_2$13)]);
1927
1928
  };
1928
1929
  }
1929
1930
  }), [["__scopeId", "data-v-a76891c4"]]);
1930
1931
  //#endregion
1931
1932
  //#region src/components/AvatarStack.vue?vue&type=script&setup=true&lang.ts
1932
- var _hoisted_1$16 = ["aria-label"];
1933
- var _hoisted_2$13 = {
1933
+ var _hoisted_1$15 = ["aria-label"];
1934
+ var _hoisted_2$12 = {
1934
1935
  key: 0,
1935
1936
  class: "rk-stack-item rk-stack-rest",
1936
1937
  "aria-hidden": "true"
@@ -1968,18 +1969,18 @@ var AvatarStack_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1968
1969
  "src",
1969
1970
  "size"
1970
1971
  ])]);
1971
- }), 128)), rest.value ? (openBlock(), createElementBlock("span", _hoisted_2$13, "+" + toDisplayString(rest.value), 1)) : createCommentVNode("", true)], 10, _hoisted_1$16);
1972
+ }), 128)), rest.value ? (openBlock(), createElementBlock("span", _hoisted_2$12, "+" + toDisplayString(rest.value), 1)) : createCommentVNode("", true)], 10, _hoisted_1$15);
1972
1973
  };
1973
1974
  }
1974
1975
  }), [["__scopeId", "data-v-db629481"]]);
1975
1976
  //#endregion
1976
1977
  //#region src/components/BaseCalendar.vue?vue&type=script&setup=true&lang.ts
1977
- var _hoisted_1$15 = { class: "rk-cal" };
1978
- var _hoisted_2$12 = { class: "rk-cal-head" };
1979
- var _hoisted_3$9 = ["aria-label"];
1980
- var _hoisted_4$6 = ["aria-expanded"];
1981
- var _hoisted_5$4 = ["aria-label"];
1982
- var _hoisted_6$4 = {
1978
+ var _hoisted_1$14 = { class: "rk-cal" };
1979
+ var _hoisted_2$11 = { class: "rk-cal-head" };
1980
+ var _hoisted_3$8 = ["aria-label"];
1981
+ var _hoisted_4$5 = ["aria-expanded"];
1982
+ var _hoisted_5$3 = ["aria-label"];
1983
+ var _hoisted_6$3 = {
1983
1984
  key: 0,
1984
1985
  class: "rk-cal-weekdays",
1985
1986
  "aria-hidden": "true"
@@ -2171,8 +2172,8 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2171
2172
  if (next) focused.value = next;
2172
2173
  });
2173
2174
  return (_ctx, _cache) => {
2174
- return openBlock(), createElementBlock("div", _hoisted_1$15, [
2175
- createElementVNode("div", _hoisted_2$12, [
2175
+ return openBlock(), createElementBlock("div", _hoisted_1$14, [
2176
+ createElementVNode("div", _hoisted_2$11, [
2176
2177
  createElementVNode("button", {
2177
2178
  type: "button",
2178
2179
  class: "rk-cal-arrow focus-ring",
@@ -2181,13 +2182,13 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2181
2182
  }, [createVNode(unref(ChevronLeft), {
2182
2183
  class: "size-4",
2183
2184
  "aria-hidden": "true"
2184
- })], 8, _hoisted_3$9),
2185
+ })], 8, _hoisted_3$8),
2185
2186
  createElementVNode("button", {
2186
2187
  type: "button",
2187
2188
  class: "rk-cal-title focus-ring",
2188
2189
  "aria-expanded": view.value !== "days",
2189
2190
  onClick: cycleView
2190
- }, toDisplayString(view.value === "years" ? `${years.value[0]} – ${years.value[11]}` : monthTitle.value), 9, _hoisted_4$6),
2191
+ }, toDisplayString(view.value === "years" ? `${years.value[0]} – ${years.value[11]}` : monthTitle.value), 9, _hoisted_4$5),
2191
2192
  createElementVNode("button", {
2192
2193
  type: "button",
2193
2194
  class: "rk-cal-arrow focus-ring",
@@ -2196,9 +2197,9 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2196
2197
  }, [createVNode(unref(ChevronRight), {
2197
2198
  class: "size-4",
2198
2199
  "aria-hidden": "true"
2199
- })], 8, _hoisted_5$4)
2200
+ })], 8, _hoisted_5$3)
2200
2201
  ]),
2201
- view.value === "days" ? (openBlock(), createElementBlock("div", _hoisted_6$4, [(openBlock(true), createElementBlock(Fragment, null, renderList(weekdays.value, (day) => {
2202
+ view.value === "days" ? (openBlock(), createElementBlock("div", _hoisted_6$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(weekdays.value, (day) => {
2202
2203
  return openBlock(), createElementBlock("span", { key: day.long }, toDisplayString(day.short), 1);
2203
2204
  }), 128))])) : createCommentVNode("", true),
2204
2205
  view.value === "days" ? (openBlock(), createElementBlock("div", {
@@ -2254,8 +2255,8 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2254
2255
  }), [["__scopeId", "data-v-6d0b0811"]]);
2255
2256
  //#endregion
2256
2257
  //#region src/components/BaseChip.vue?vue&type=script&setup=true&lang.ts
2257
- var _hoisted_1$14 = { class: "truncate" };
2258
- var _hoisted_2$11 = ["aria-label", "disabled"];
2258
+ var _hoisted_1$13 = { class: "truncate" };
2259
+ var _hoisted_2$10 = ["aria-label", "disabled"];
2259
2260
  //#endregion
2260
2261
  //#region src/components/BaseChip.vue
2261
2262
  var BaseChip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2278,53 +2279,49 @@ var BaseChip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2278
2279
  setup(__props, { emit: __emit }) {
2279
2280
  const emit = __emit;
2280
2281
  return (_ctx, _cache) => {
2281
- return openBlock(), createBlock(resolveDynamicComponent(__props.selected === void 0 ? "span" : "button"), {
2282
+ return openBlock(), createElementBlock("span", { class: normalizeClass(["rk-chip", [`tone-${__props.tone}`, {
2283
+ "is-selected": __props.selected,
2284
+ "is-disabled": __props.disabled
2285
+ }]]) }, [(openBlock(), createBlock(resolveDynamicComponent(__props.selected === void 0 ? "span" : "button"), {
2282
2286
  type: __props.selected === void 0 ? void 0 : "button",
2283
- class: normalizeClass(["rk-chip", [`tone-${__props.tone}`, {
2284
- "is-selected": __props.selected,
2285
- "is-button": __props.selected !== void 0
2286
- }]]),
2287
+ class: normalizeClass(["rk-chip-body", { "focus-ring is-button": __props.selected !== void 0 }]),
2287
2288
  "aria-pressed": __props.selected,
2288
2289
  disabled: __props.selected === void 0 ? void 0 : __props.disabled,
2289
- onClick: _cache[1] || (_cache[1] = ($event) => __props.selected === void 0 ? void 0 : emit("select"))
2290
+ onClick: _cache[0] || (_cache[0] = ($event) => __props.selected === void 0 ? void 0 : emit("select"))
2290
2291
  }, {
2291
- default: withCtx(() => [
2292
- __props.icon ? (openBlock(), createBlock(resolveDynamicComponent(__props.icon), {
2293
- key: 0,
2294
- class: "size-3.5 shrink-0",
2295
- "aria-hidden": "true"
2296
- })) : createCommentVNode("", true),
2297
- createElementVNode("span", _hoisted_1$14, toDisplayString(__props.label), 1),
2298
- __props.removeLabel ? (openBlock(), createElementBlock("button", {
2299
- key: 1,
2300
- type: "button",
2301
- class: "rk-chip-remove focus-ring",
2302
- "aria-label": __props.removeLabel,
2303
- disabled: __props.disabled,
2304
- onClick: _cache[0] || (_cache[0] = withModifiers(($event) => emit("remove"), ["stop"]))
2305
- }, [createVNode(unref(X), {
2306
- class: "size-3",
2307
- "aria-hidden": "true"
2308
- })], 8, _hoisted_2$11)) : createCommentVNode("", true)
2309
- ]),
2292
+ default: withCtx(() => [__props.icon ? (openBlock(), createBlock(resolveDynamicComponent(__props.icon), {
2293
+ key: 0,
2294
+ class: "size-3.5 shrink-0",
2295
+ "aria-hidden": "true"
2296
+ })) : createCommentVNode("", true), createElementVNode("span", _hoisted_1$13, toDisplayString(__props.label), 1)]),
2310
2297
  _: 1
2311
2298
  }, 8, [
2312
2299
  "type",
2313
2300
  "class",
2314
2301
  "aria-pressed",
2315
2302
  "disabled"
2316
- ]);
2303
+ ])), __props.removeLabel ? (openBlock(), createElementBlock("button", {
2304
+ key: 0,
2305
+ type: "button",
2306
+ class: "rk-chip-remove focus-ring",
2307
+ "aria-label": __props.removeLabel,
2308
+ disabled: __props.disabled,
2309
+ onClick: _cache[1] || (_cache[1] = ($event) => emit("remove"))
2310
+ }, [createVNode(unref(X), {
2311
+ class: "size-3",
2312
+ "aria-hidden": "true"
2313
+ })], 8, _hoisted_2$10)) : createCommentVNode("", true)], 2);
2317
2314
  };
2318
2315
  }
2319
- }), [["__scopeId", "data-v-e9026659"]]);
2316
+ }), [["__scopeId", "data-v-c94a820d"]]);
2320
2317
  //#endregion
2321
2318
  //#region src/components/BaseKbd.vue?vue&type=script&setup=true&lang.ts
2322
- var _hoisted_1$13 = {
2319
+ var _hoisted_1$12 = {
2323
2320
  key: 0,
2324
2321
  class: "rk-kbd-joiner",
2325
2322
  "aria-hidden": "true"
2326
2323
  };
2327
- var _hoisted_2$10 = { class: "rk-kbd-key control" };
2324
+ var _hoisted_2$9 = { class: "rk-kbd-key control" };
2328
2325
  //#endregion
2329
2326
  //#region src/components/BaseKbd.vue
2330
2327
  var BaseKbd_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2338,139 +2335,12 @@ var BaseKbd_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
2338
2335
  const list = computed(() => typeof __props.keys === "string" ? [__props.keys] : __props.keys);
2339
2336
  return (_ctx, _cache) => {
2340
2337
  return openBlock(), createElementBlock("span", { class: normalizeClass(["rk-kbd", `is-${__props.size}`]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(list.value, (key, index) => {
2341
- return openBlock(), createElementBlock(Fragment, { key }, [index > 0 && __props.joiner ? (openBlock(), createElementBlock("span", _hoisted_1$13, toDisplayString(__props.joiner), 1)) : createCommentVNode("", true), createElementVNode("kbd", _hoisted_2$10, toDisplayString(key), 1)], 64);
2338
+ return openBlock(), createElementBlock(Fragment, { key }, [index > 0 && __props.joiner ? (openBlock(), createElementBlock("span", _hoisted_1$12, toDisplayString(__props.joiner), 1)) : createCommentVNode("", true), createElementVNode("kbd", _hoisted_2$9, toDisplayString(key), 1)], 64);
2342
2339
  }), 128))], 2);
2343
2340
  };
2344
2341
  }
2345
2342
  }), [["__scopeId", "data-v-e4b97bbe"]]);
2346
2343
  //#endregion
2347
- //#region src/components/BaseListbox.vue?vue&type=script&setup=true&lang.ts
2348
- var _hoisted_1$12 = [
2349
- "aria-label",
2350
- "aria-multiselectable",
2351
- "aria-activedescendant"
2352
- ];
2353
- var _hoisted_2$9 = [
2354
- "id",
2355
- "aria-selected",
2356
- "aria-disabled",
2357
- "onClick"
2358
- ];
2359
- var _hoisted_3$8 = { class: "min-w-0 flex-1" };
2360
- var _hoisted_4$5 = { class: "rk-listbox-label" };
2361
- var _hoisted_5$3 = {
2362
- key: 0,
2363
- class: "rk-listbox-description"
2364
- };
2365
- var _hoisted_6$3 = {
2366
- key: 0,
2367
- class: "rk-listbox-empty"
2368
- };
2369
- //#endregion
2370
- //#region src/components/BaseListbox.vue
2371
- var BaseListbox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2372
- __name: "BaseListbox",
2373
- props: {
2374
- modelValue: { default: () => void 0 },
2375
- options: {},
2376
- label: {},
2377
- mode: { default: "single" },
2378
- height: { default: "14rem" }
2379
- },
2380
- emits: ["update:modelValue"],
2381
- setup(__props, { emit: __emit }) {
2382
- const emit = __emit;
2383
- const model = useBoundValue(() => __props.modelValue, (value) => emit("update:modelValue", value));
2384
- const id = useId();
2385
- const active = ref(0);
2386
- let typed = "";
2387
- let typedAt = 0;
2388
- const chosen = computed(() => {
2389
- const value = model.value;
2390
- if (Array.isArray(value)) return new Set(value);
2391
- return new Set(value === void 0 ? [] : [value]);
2392
- });
2393
- function select(option) {
2394
- if (option.disabled) return;
2395
- if (__props.mode === "multiple") {
2396
- const next = new Set(chosen.value);
2397
- if (next.has(option.value)) next.delete(option.value);
2398
- else next.add(option.value);
2399
- model.value = __props.options.map((one) => one.value).filter((value) => next.has(value));
2400
- return;
2401
- }
2402
- model.value = option.value;
2403
- }
2404
- function moveTo(index) {
2405
- if (__props.options.length === 0) return;
2406
- active.value = Math.max(0, Math.min(__props.options.length - 1, index));
2407
- const option = __props.options[active.value];
2408
- if (__props.mode === "single" && option && !option.disabled) select(option);
2409
- document.getElementById(`${id}-${active.value}`)?.scrollIntoView?.({ block: "nearest" });
2410
- }
2411
- /** The next option after the current one that starts with what was typed. */
2412
- function jumpTo(letter) {
2413
- const now = Date.now();
2414
- typed = now - typedAt > 700 ? letter : typed + letter;
2415
- typedAt = now;
2416
- const from = typed.length === 1 ? active.value + 1 : active.value;
2417
- const found = [...__props.options.slice(from), ...__props.options.slice(0, from)].find((option) => !option.disabled && option.label.toLowerCase().startsWith(typed.toLowerCase()));
2418
- if (found) moveTo(__props.options.indexOf(found));
2419
- }
2420
- function onKeydown(event) {
2421
- const moves = {
2422
- ArrowDown: active.value + 1,
2423
- ArrowUp: active.value - 1,
2424
- Home: 0,
2425
- End: __props.options.length - 1
2426
- };
2427
- if (event.key in moves) {
2428
- event.preventDefault();
2429
- moveTo(moves[event.key]);
2430
- return;
2431
- }
2432
- if (event.key === " " || event.key === "Enter") {
2433
- const option = __props.options[active.value];
2434
- if (!option) return;
2435
- event.preventDefault();
2436
- select(option);
2437
- return;
2438
- }
2439
- if (event.key.length === 1 && !event.metaKey && !event.ctrlKey && !event.altKey) jumpTo(event.key);
2440
- }
2441
- return (_ctx, _cache) => {
2442
- return openBlock(), createElementBlock("div", {
2443
- class: "rk-listbox control",
2444
- style: normalizeStyle({ maxHeight: __props.height }),
2445
- role: "listbox",
2446
- tabindex: "0",
2447
- "aria-label": __props.label,
2448
- "aria-multiselectable": __props.mode === "multiple" ? true : void 0,
2449
- "aria-activedescendant": __props.options.length ? `${unref(id)}-${active.value}` : void 0,
2450
- onKeydown
2451
- }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option, index) => {
2452
- return openBlock(), createElementBlock("div", {
2453
- id: `${unref(id)}-${index}`,
2454
- key: option.value,
2455
- class: normalizeClass(["rk-listbox-option", {
2456
- "is-active": index === active.value,
2457
- "is-chosen": chosen.value.has(option.value),
2458
- "is-disabled": option.disabled
2459
- }]),
2460
- role: "option",
2461
- "aria-selected": chosen.value.has(option.value),
2462
- "aria-disabled": option.disabled,
2463
- onClick: ($event) => (active.value = index, select(option))
2464
- }, [createElementVNode("span", _hoisted_3$8, [createElementVNode("span", _hoisted_4$5, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_5$3, toDisplayString(option.description), 1)) : createCommentVNode("", true)]), chosen.value.has(option.value) ? (openBlock(), createBlock(unref(Check), {
2465
- key: 0,
2466
- class: "size-4 shrink-0",
2467
- "aria-hidden": "true"
2468
- })) : createCommentVNode("", true)], 10, _hoisted_2$9);
2469
- }), 128)), __props.options.length === 0 ? (openBlock(), createElementBlock("p", _hoisted_6$3)) : createCommentVNode("", true)], 44, _hoisted_1$12);
2470
- };
2471
- }
2472
- }), [["__scopeId", "data-v-95e230a5"]]);
2473
- //#endregion
2474
2344
  //#region src/components/BaseLink.vue
2475
2345
  var BaseLink_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2476
2346
  __name: "BaseLink",
@@ -3034,6 +2904,12 @@ var BasePopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3034
2904
  const next = event.relatedTarget;
3035
2905
  if (next && root.value && !root.value.contains(next)) close();
3036
2906
  }
2907
+ function watchViewport(on) {
2908
+ if (typeof window === "undefined") return;
2909
+ const method = on ? "addEventListener" : "removeEventListener";
2910
+ window[method]("resize", place);
2911
+ window[method]("scroll", place, true);
2912
+ }
3037
2913
  function onDocumentPointer(event) {
3038
2914
  if (root.value && !root.value.contains(event.target)) close();
3039
2915
  }
@@ -3041,9 +2917,11 @@ var BasePopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3041
2917
  if (typeof document === "undefined") return;
3042
2918
  if (!isOpen) {
3043
2919
  document.removeEventListener("pointerdown", onDocumentPointer);
2920
+ watchViewport(false);
3044
2921
  return;
3045
2922
  }
3046
2923
  document.addEventListener("pointerdown", onDocumentPointer);
2924
+ watchViewport(true);
3047
2925
  placed.value = __props.side;
3048
2926
  shift.value = 0;
3049
2927
  await nextTick();
@@ -3052,6 +2930,7 @@ var BasePopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3052
2930
  }, { immediate: true });
3053
2931
  onBeforeUnmount(() => {
3054
2932
  if (typeof document !== "undefined") document.removeEventListener("pointerdown", onDocumentPointer);
2933
+ watchViewport(false);
3055
2934
  });
3056
2935
  return (_ctx, _cache) => {
3057
2936
  return openBlock(), createElementBlock("div", {
@@ -3079,7 +2958,7 @@ var BasePopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3079
2958
  })], 544);
3080
2959
  };
3081
2960
  }
3082
- }), [["__scopeId", "data-v-1e2d16d3"]]);
2961
+ }), [["__scopeId", "data-v-1371bff2"]]);
3083
2962
  //#endregion
3084
2963
  //#region src/components/BaseDatePicker.vue?vue&type=script&setup=true&lang.ts
3085
2964
  var _hoisted_1$5 = [
@@ -3923,7 +3802,7 @@ function createI18nRuntime(options) {
3923
3802
  *
3924
3803
  * The fallback keeps `vitest` and `vite dev` honest, where no define runs.
3925
3804
  */
3926
- var VERSION = "2.8.0";
3805
+ var VERSION = "2.9.0";
3927
3806
  //#endregion
3928
3807
  export { AppError, AvatarStack_default as AvatarStack, BaseAlert_default as BaseAlert, BaseAvatar_default as BaseAvatar, BaseBadge_default as BaseBadge, BaseButton_default as BaseButton, BaseCalendar_default as BaseCalendar, BaseCard_default as BaseCard, BaseCheckbox_default as BaseCheckbox, BaseChip_default as BaseChip, BaseCombobox_default as BaseCombobox, BaseDatePicker_default as BaseDatePicker, BaseInput_default as BaseInput, BaseKbd_default as BaseKbd, BaseLink_default as BaseLink, BaseListbox_default as BaseListbox, BaseMenu_default as BaseMenu, BasePopover_default as BasePopover, BaseRadioGroup_default as BaseRadioGroup, BaseRating_default as BaseRating, BaseSelect_default as BaseSelect, BaseSeparator_default as BaseSeparator, BaseSheet_default as BaseSheet, BaseSkeleton_default as BaseSkeleton, BaseSlider_default as BaseSlider, BaseSpinner_default as BaseSpinner, BaseStepper_default as BaseStepper, BaseSwitch_default as BaseSwitch, BaseTable_default as BaseTable, BaseTextarea_default as BaseTextarea, CircularProgress_default as CircularProgress, CopyButton_default as CopyButton, EmptyState_default as EmptyState, ErrorBoundary_default as ErrorBoundary, FileDrop_default as FileDrop, FormField_default as FormField, GoogleButton_default as GoogleButton, LocaleLinks_default as LocaleLinks, MATERIALS, NumberInput_default as NumberInput, PALETTES, PageContainer_default as PageContainer, PageHeader_default as PageHeader, PinInput_default as PinInput, PriceCard_default as PriceCard, ProgressBar_default as ProgressBar, SHEET_ROOT_ID, SectionHeading_default as SectionHeading, SegmentedControl_default as SegmentedControl, SettingsGroup_default as SettingsGroup, SettingsRow_default as SettingsRow, SkeletonList_default as SkeletonList, StatCard_default as StatCard, TabBar_default as TabBar, TagsInput_default as TagsInput, ToastHost_default as ToastHost, ToggleGroup_default as ToggleGroup, ToneDot_default as ToneDot, VERSION, addDays, applyMaterial, applyPalette, applyTheme, createI18nRuntime, downloadJson, eachDayOfYear, ensureSheetRoot, formatDate, formatNumber, fromDateKey, isApplePortable, isInstalled, isMaterial, isPaletteName, isThemePreference, lastNDays, leadingBlanks, needsIosInstall, readStoredTheme, registerErrorMapper, relativeDayLabel, safeRedirect, setFormatLocale, setMaterialStorageKey, setPaletteStorageKey, setThemeStorageKey, startOfWeek, tapFeedback, toAppError, toDateKey, toRedirectPath, todayKey, useDebouncedCallback, useDragScroll, useMaterial, useMediaQuery, useOnline, usePalette, useTheme, useToast, useToday, useVisualViewport };
3929
3808