rei-kit 2.9.0 → 2.11.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,14 +1,14 @@
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 { 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";
3
+ import { a as SHEET_ROOT_ID, i as useVisualViewport, o as ensureSheetRoot, r as useBoundValue, t as BaseSheet_default } from "./BaseSheet-B7401rS7.js";
4
+ import { a as BaseAlert_default, c as applyTheme, d as setThemeStorageKey, f as useTheme, h as toRedirectPath, i as FormField_default, l as isThemePreference, m as safeRedirect, n as BaseCheckbox_default, o as useToast, p as tapFeedback, r as BaseInput_default, s as useOnline, t as GoogleButton_default, u as readStoredTheme } from "./GoogleButton-mCqGbrXm.js";
5
5
  import { n as registerErrorMapper, r as toAppError, t as AppError } from "./app-error-DF9cijE0.js";
6
+ import { n as BaseListbox_default, r as useMediaQuery, t as BaseSkeleton_default } from "./BaseSkeleton-DnqwogzV.js";
6
7
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.js";
7
8
  import { t as BaseButton_default } from "./BaseButton-RN2an975.js";
8
9
  import { t as SettingsRow_default } from "./SettingsRow-Ct1p2C9Q.js";
9
- import { n as BaseListbox_default, t as BaseSkeleton_default } from "./BaseSkeleton-BWTNXVwP.js";
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";
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";
10
+ import { Fragment, Teleport, Transition, TransitionGroup, computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, guardReactiveProps, isRef, mergeModels, mergeProps, nextTick, normalizeClass, normalizeProps, 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";
11
+ import { ArrowDown, ArrowRight, ArrowUp, ArrowUpRight, CalendarDays, Check, CheckCircle2, ChevronDown, ChevronLeft, ChevronRight, Clock, Copy, Info, Minus, Paperclip, Plus, Star, TriangleAlert, Upload, X, XCircle } from "lucide-vue-next";
12
12
  import { RouterLink } from "vue-router";
13
13
  import { createI18n } from "vue-i18n";
14
14
  //#region src/utils/day-label.ts
@@ -347,55 +347,18 @@ function useDragScroll(target) {
347
347
  return { didDrag: () => dragged };
348
348
  }
349
349
  //#endregion
350
- //#region src/composables/use-media-query.ts
351
- /**
352
- * Whether a media query matches, kept up to date.
353
- *
354
- * Starts false and resolves on mount, which is deliberate: this is the one
355
- * place a component is tempted to branch on viewport during render, and doing
356
- * that under prerendering produces HTML built for a screen the server does not
357
- * have. Hydration then swaps it and the page jumps. False first, correct a
358
- * frame later, no jump — and a layout that reads badly at `false` is a layout
359
- * with a mobile-first bug worth knowing about.
360
- *
361
- * Guarded for the server for the same reason the rest of the kit is: this
362
- * package has to be importable in Node, and `matchMedia` does not exist there.
363
- *
364
- * @example
365
- * ```ts
366
- * const wide = useMediaQuery('(min-width: 64rem)')
367
- * ```
368
- */
369
- function useMediaQuery(query) {
370
- const matches = ref(false);
371
- let list;
372
- function update(event) {
373
- matches.value = event.matches;
374
- }
375
- onMounted(() => {
376
- if (typeof window === "undefined" || typeof window.matchMedia !== "function") return;
377
- list = window.matchMedia(query);
378
- update(list);
379
- list.addEventListener("change", update);
380
- });
381
- onBeforeUnmount(() => {
382
- list?.removeEventListener("change", update);
383
- });
384
- return matches;
385
- }
386
- //#endregion
387
350
  //#region src/components/BaseAvatar.vue?vue&type=script&setup=true&lang.ts
388
- var _hoisted_1$37 = [
351
+ var _hoisted_1$40 = [
389
352
  "role",
390
353
  "aria-label",
391
354
  "aria-hidden"
392
355
  ];
393
- var _hoisted_2$31 = ["src"];
394
- var _hoisted_3$20 = {
356
+ var _hoisted_2$34 = ["src"];
357
+ var _hoisted_3$22 = {
395
358
  key: 1,
396
359
  class: "rk-avatar-initials"
397
360
  };
398
- var _hoisted_4$16 = {
361
+ var _hoisted_4$17 = {
399
362
  key: 2,
400
363
  viewBox: "0 0 20 20",
401
364
  class: "rk-avatar-figure",
@@ -441,7 +404,7 @@ var BaseAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
441
404
  alt: "",
442
405
  class: "rk-avatar-img",
443
406
  onError: _cache[0] || (_cache[0] = ($event) => broken.value = true)
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", {
407
+ }, null, 40, _hoisted_2$34)) : __props.fallback === "initials" && initials.value ? (openBlock(), createElementBlock("span", _hoisted_3$22, toDisplayString(initials.value), 1)) : (openBlock(), createElementBlock("svg", _hoisted_4$17, [..._cache[1] || (_cache[1] = [createElementVNode("circle", {
445
408
  cx: "10",
446
409
  cy: "6.75",
447
410
  r: "3.25",
@@ -450,7 +413,7 @@ var BaseAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
450
413
  d: "M3.75 17c0-3.05 2.8-5.25 6.25-5.25S16.25 13.95 16.25 17",
451
414
  "stroke-width": "1.5",
452
415
  "stroke-linecap": "round"
453
- }, null, -1)])]))], 10, _hoisted_1$37);
416
+ }, null, -1)])]))], 10, _hoisted_1$40);
454
417
  };
455
418
  }
456
419
  }), [["__scopeId", "data-v-47586bec"]]);
@@ -475,12 +438,12 @@ var BaseBadge_default = /* @__PURE__ */ defineComponent({
475
438
  });
476
439
  //#endregion
477
440
  //#region src/components/BaseMenu.vue?vue&type=script&setup=true&lang.ts
478
- var _hoisted_1$36 = [
441
+ var _hoisted_1$39 = [
479
442
  "aria-label",
480
443
  "aria-expanded",
481
444
  "aria-controls"
482
445
  ];
483
- var _hoisted_2$30 = ["id"];
446
+ var _hoisted_2$33 = ["id"];
484
447
  //#endregion
485
448
  //#region src/components/BaseMenu.vue
486
449
  var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -579,14 +542,14 @@ var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
579
542
  "aria-haspopup": true,
580
543
  "aria-controls": open.value ? unref(id) : void 0,
581
544
  onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)
582
- }, [renderSlot(_ctx.$slots, "trigger", { open: open.value }, void 0, true)], 8, _hoisted_1$36), open.value ? (openBlock(), createElementBlock("div", {
545
+ }, [renderSlot(_ctx.$slots, "trigger", { open: open.value }, void 0, true)], 8, _hoisted_1$39), open.value ? (openBlock(), createElementBlock("div", {
583
546
  key: 0,
584
547
  id: unref(id),
585
548
  ref_key: "panel",
586
549
  ref: panel,
587
550
  class: normalizeClass(["rk-menu-panel surface-overlay", `is-${__props.align}`]),
588
551
  role: "menu"
589
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 10, _hoisted_2$30)) : createCommentVNode("", true)], 544);
552
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 10, _hoisted_2$33)) : createCommentVNode("", true)], 544);
590
553
  };
591
554
  }
592
555
  }), [["__scopeId", "data-v-e57ec901"]]);
@@ -657,9 +620,9 @@ var BaseCard_default = /* @__PURE__ */ defineComponent({
657
620
  });
658
621
  //#endregion
659
622
  //#region src/components/BaseCombobox.vue?vue&type=script&setup=true&lang.ts
660
- var _hoisted_1$35 = ["for"];
661
- var _hoisted_2$29 = { class: "rk-combo-field" };
662
- var _hoisted_3$19 = [
623
+ var _hoisted_1$38 = ["for"];
624
+ var _hoisted_2$32 = { class: "rk-combo-field" };
625
+ var _hoisted_3$21 = [
663
626
  "id",
664
627
  "placeholder",
665
628
  "disabled",
@@ -668,7 +631,7 @@ var _hoisted_3$19 = [
668
631
  "aria-invalid",
669
632
  "aria-describedby"
670
633
  ];
671
- var _hoisted_4$15 = ["disabled"];
634
+ var _hoisted_4$16 = ["disabled"];
672
635
  var _hoisted_5$9 = ["aria-label"];
673
636
  var _hoisted_6$5 = [
674
637
  "id",
@@ -796,8 +759,8 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
796
759
  createElementVNode("label", {
797
760
  for: unref(id),
798
761
  class: "rk-combo-label"
799
- }, toDisplayString(__props.label), 9, _hoisted_1$35),
800
- createElementVNode("div", _hoisted_2$29, [withDirectives(createElementVNode("input", {
762
+ }, toDisplayString(__props.label), 9, _hoisted_1$38),
763
+ createElementVNode("div", _hoisted_2$32, [withDirectives(createElementVNode("input", {
801
764
  id: unref(id),
802
765
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => text.value = $event),
803
766
  type: "text",
@@ -814,14 +777,14 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
814
777
  "aria-describedby": describedBy.value,
815
778
  onKeydown,
816
779
  onFocus: _cache[1] || (_cache[1] = ($event) => open.value = true)
817
- }, null, 40, _hoisted_3$19), [[vModelText, text.value]]), createElementVNode("button", {
780
+ }, null, 40, _hoisted_3$21), [[vModelText, text.value]]), createElementVNode("button", {
818
781
  type: "button",
819
782
  class: "rk-combo-toggle",
820
783
  tabindex: "-1",
821
784
  "aria-hidden": "true",
822
785
  disabled: __props.disabled,
823
786
  onClick: _cache[2] || (_cache[2] = ($event) => open.value = !open.value)
824
- }, " ▾ ", 8, _hoisted_4$15)]),
787
+ }, " ▾ ", 8, _hoisted_4$16)]),
825
788
  withDirectives(createElementVNode("ul", {
826
789
  id: listId,
827
790
  ref_key: "list",
@@ -858,13 +821,13 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
858
821
  }), [["__scopeId", "data-v-ce4c503f"]]);
859
822
  //#endregion
860
823
  //#region src/components/BaseRadioGroup.vue?vue&type=script&setup=true&lang.ts
861
- var _hoisted_1$34 = ["aria-describedby"];
862
- var _hoisted_2$28 = [
824
+ var _hoisted_1$37 = ["aria-describedby"];
825
+ var _hoisted_2$31 = [
863
826
  "name",
864
827
  "value",
865
828
  "disabled"
866
829
  ];
867
- var _hoisted_3$18 = { class: "text-ink text-sm" };
830
+ var _hoisted_3$20 = { class: "text-ink text-sm" };
868
831
  //#endregion
869
832
  //#region src/components/BaseRadioGroup.vue
870
833
  var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
@@ -908,7 +871,7 @@ var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
908
871
  value: option.value,
909
872
  disabled: option.disabled,
910
873
  class: "accent-primary focus-visible:outline-primary size-4 shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2"
911
- }, null, 8, _hoisted_2$28), [[vModelRadio, unref(model)]]), createElementVNode("span", _hoisted_3$18, toDisplayString(option.label), 1)], 2);
874
+ }, null, 8, _hoisted_2$31), [[vModelRadio, unref(model)]]), createElementVNode("span", _hoisted_3$20, toDisplayString(option.label), 1)], 2);
912
875
  }), 128)),
913
876
  __props.error ? (openBlock(), createElementBlock("p", {
914
877
  key: 0,
@@ -919,24 +882,24 @@ var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
919
882
  id: hintId,
920
883
  class: "text-ink-soft text-xs"
921
884
  }, toDisplayString(__props.hint), 1)) : createCommentVNode("", true)
922
- ], 8, _hoisted_1$34);
885
+ ], 8, _hoisted_1$37);
923
886
  };
924
887
  }
925
888
  });
926
889
  //#endregion
927
890
  //#region src/components/BaseSelect.vue?vue&type=script&setup=true&lang.ts
928
- var _hoisted_1$33 = { class: "relative" };
929
- var _hoisted_2$27 = [
891
+ var _hoisted_1$36 = { class: "relative" };
892
+ var _hoisted_2$30 = [
930
893
  "id",
931
894
  "aria-invalid",
932
895
  "aria-describedby"
933
896
  ];
934
- var _hoisted_3$17 = {
897
+ var _hoisted_3$19 = {
935
898
  key: 0,
936
899
  value: void 0,
937
900
  disabled: ""
938
901
  };
939
- var _hoisted_4$14 = ["value", "disabled"];
902
+ var _hoisted_4$15 = ["value", "disabled"];
940
903
  //#endregion
941
904
  //#region src/components/BaseSelect.vue
942
905
  var BaseSelect_default = /* @__PURE__ */ defineComponent({
@@ -972,7 +935,7 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
972
935
  "label-hidden": __props.labelHidden,
973
936
  size: __props.size
974
937
  }, {
975
- default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$33, [withDirectives(createElementVNode("select", {
938
+ default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$36, [withDirectives(createElementVNode("select", {
976
939
  id,
977
940
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
978
941
  "aria-invalid": invalid,
@@ -982,13 +945,13 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
982
945
  __props.variant === "unstyled" ? "" : SIZE_CLASS[__props.size],
983
946
  __props.variant !== "unstyled" && invalid ? "border-negative" : ""
984
947
  ]])
985
- }, [__props.placeholder ? (openBlock(), createElementBlock("option", _hoisted_3$17, toDisplayString(__props.placeholder), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
948
+ }, [__props.placeholder ? (openBlock(), createElementBlock("option", _hoisted_3$19, toDisplayString(__props.placeholder), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
986
949
  return openBlock(), createElementBlock("option", {
987
950
  key: option.value,
988
951
  value: option.value,
989
952
  disabled: option.disabled
990
- }, toDisplayString(option.label), 9, _hoisted_4$14);
991
- }), 128))], 10, _hoisted_2$27), [[vModelSelect, model.value]]), createVNode(unref(ChevronDown), {
953
+ }, toDisplayString(option.label), 9, _hoisted_4$15);
954
+ }), 128))], 10, _hoisted_2$30), [[vModelSelect, model.value]]), createVNode(unref(ChevronDown), {
992
955
  class: "text-ink-soft pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2",
993
956
  "aria-hidden": "true"
994
957
  })])]),
@@ -1005,10 +968,10 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
1005
968
  });
1006
969
  //#endregion
1007
970
  //#region src/components/BaseSlider.vue?vue&type=script&setup=true&lang.ts
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"];
971
+ var _hoisted_1$35 = { class: "rk-slider" };
972
+ var _hoisted_2$29 = { class: "rk-slider-head" };
973
+ var _hoisted_3$18 = ["for"];
974
+ var _hoisted_4$14 = ["for"];
1012
975
  var _hoisted_5$8 = [
1013
976
  "id",
1014
977
  "min",
@@ -1053,15 +1016,15 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1053
1016
  return span <= 0 ? 0 : (model.value - __props.min) / span * 100;
1054
1017
  });
1055
1018
  return (_ctx, _cache) => {
1056
- return openBlock(), createElementBlock("div", _hoisted_1$32, [
1057
- createElementVNode("div", _hoisted_2$26, [createElementVNode("label", {
1019
+ return openBlock(), createElementBlock("div", _hoisted_1$35, [
1020
+ createElementVNode("div", _hoisted_2$29, [createElementVNode("label", {
1058
1021
  for: unref(id),
1059
1022
  class: "rk-slider-label"
1060
- }, toDisplayString(__props.label), 9, _hoisted_3$16), __props.showValue ? (openBlock(), createElementBlock("output", {
1023
+ }, toDisplayString(__props.label), 9, _hoisted_3$18), __props.showValue ? (openBlock(), createElementBlock("output", {
1061
1024
  key: 0,
1062
1025
  for: unref(id),
1063
1026
  class: "rk-slider-value"
1064
- }, toDisplayString(text.value), 9, _hoisted_4$13)) : createCommentVNode("", true)]),
1027
+ }, toDisplayString(text.value), 9, _hoisted_4$14)) : createCommentVNode("", true)]),
1065
1028
  withDirectives(createElementVNode("input", {
1066
1029
  id: unref(id),
1067
1030
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
@@ -1091,11 +1054,11 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1091
1054
  }), [["__scopeId", "data-v-7fa2769b"]]);
1092
1055
  //#endregion
1093
1056
  //#region src/components/BaseSpinner.vue?vue&type=script&setup=true&lang.ts
1094
- var _hoisted_1$31 = {
1057
+ var _hoisted_1$34 = {
1095
1058
  class: "rk-spin-wrap",
1096
1059
  role: "status"
1097
1060
  };
1098
- var _hoisted_2$25 = { class: "rk-spin-label" };
1061
+ var _hoisted_2$28 = { class: "rk-spin-label" };
1099
1062
  //#endregion
1100
1063
  //#region src/components/BaseSpinner.vue
1101
1064
  var BaseSpinner_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1123,26 +1086,26 @@ var BaseSpinner_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1123
1086
  lg: "2.5rem"
1124
1087
  };
1125
1088
  return (_ctx, _cache) => {
1126
- return openBlock(), createElementBlock("span", _hoisted_1$31, [createElementVNode("span", {
1089
+ return openBlock(), createElementBlock("span", _hoisted_1$34, [createElementVNode("span", {
1127
1090
  class: "rk-spin",
1128
1091
  style: normalizeStyle({
1129
1092
  width: SIZES[__props.size],
1130
1093
  height: SIZES[__props.size]
1131
1094
  }),
1132
1095
  "aria-hidden": "true"
1133
- }, null, 4), createElementVNode("span", _hoisted_2$25, toDisplayString(__props.label), 1)]);
1096
+ }, null, 4), createElementVNode("span", _hoisted_2$28, toDisplayString(__props.label), 1)]);
1134
1097
  };
1135
1098
  }
1136
1099
  }), [["__scopeId", "data-v-842da62c"]]);
1137
1100
  //#endregion
1138
1101
  //#region src/components/BaseSwitch.vue?vue&type=script&setup=true&lang.ts
1139
- var _hoisted_1$30 = { class: "flex items-center justify-between gap-4" };
1140
- var _hoisted_2$24 = {
1102
+ var _hoisted_1$33 = { class: "flex items-center justify-between gap-4" };
1103
+ var _hoisted_2$27 = {
1141
1104
  key: 0,
1142
1105
  class: "min-w-0"
1143
1106
  };
1144
- var _hoisted_3$15 = ["id"];
1145
- var _hoisted_4$12 = [
1107
+ var _hoisted_3$17 = ["id"];
1108
+ var _hoisted_4$13 = [
1146
1109
  "aria-checked",
1147
1110
  "aria-labelledby",
1148
1111
  "aria-label",
@@ -1181,10 +1144,10 @@ var BaseSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1181
1144
  if (!__props.disabled) model.value = !model.value;
1182
1145
  }
1183
1146
  return (_ctx, _cache) => {
1184
- return openBlock(), createElementBlock("div", _hoisted_1$30, [!__props.labelHidden ? (openBlock(), createElementBlock("span", _hoisted_2$24, [createElementVNode("span", {
1147
+ return openBlock(), createElementBlock("div", _hoisted_1$33, [!__props.labelHidden ? (openBlock(), createElementBlock("span", _hoisted_2$27, [createElementVNode("span", {
1185
1148
  id: unref(id),
1186
1149
  class: "text-ink block text-sm"
1187
- }, toDisplayString(__props.label), 9, _hoisted_3$15), __props.hint ? (openBlock(), createElementBlock("span", {
1150
+ }, toDisplayString(__props.label), 9, _hoisted_3$17), __props.hint ? (openBlock(), createElementBlock("span", {
1188
1151
  key: 0,
1189
1152
  id: hintId,
1190
1153
  class: "text-ink-soft mt-0.5 block text-xs"
@@ -1201,16 +1164,16 @@ var BaseSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1201
1164
  }, [..._cache[0] || (_cache[0] = [createElementVNode("span", {
1202
1165
  class: "rk-switch-knob",
1203
1166
  "aria-hidden": "true"
1204
- }, null, -1)])], 10, _hoisted_4$12)]);
1167
+ }, null, -1)])], 10, _hoisted_4$13)]);
1205
1168
  };
1206
1169
  }
1207
1170
  }), [["__scopeId", "data-v-3f4400a0"]]);
1208
1171
  //#endregion
1209
1172
  //#region src/components/BaseTable.vue?vue&type=script&setup=true&lang.ts
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 };
1173
+ var _hoisted_1$32 = ["aria-label"];
1174
+ var _hoisted_2$26 = { class: "rk-table" };
1175
+ var _hoisted_3$16 = { key: 0 };
1176
+ var _hoisted_4$12 = { key: 1 };
1214
1177
  var _hoisted_5$7 = ["colspan"];
1215
1178
  //#endregion
1216
1179
  //#region src/components/BaseTable.vue
@@ -1234,7 +1197,7 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1234
1197
  tabindex: "0",
1235
1198
  role: "region",
1236
1199
  "aria-label": __props.caption
1237
- }, [createElementVNode("table", _hoisted_2$23, [
1200
+ }, [createElementVNode("table", _hoisted_2$26, [
1238
1201
  createElementVNode("caption", { class: normalizeClass(__props.captionHidden ? "rk-table-caption-hidden" : "rk-table-caption") }, toDisplayString(__props.caption), 3),
1239
1202
  createElementVNode("thead", null, [createElementVNode("tr", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
1240
1203
  return openBlock(), createElementBlock("th", {
@@ -1243,7 +1206,7 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1243
1206
  class: normalizeClass([column.align === "end" && "is-end", column.nowrap && "is-nowrap"])
1244
1207
  }, toDisplayString(column.label), 3);
1245
1208
  }), 128))])]),
1246
- __props.rows.length > 0 ? (openBlock(), createElementBlock("tbody", _hoisted_3$14, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row, index) => {
1209
+ __props.rows.length > 0 ? (openBlock(), createElementBlock("tbody", _hoisted_3$16, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row, index) => {
1247
1210
  return openBlock(), createElementBlock("tr", { key: keyFor(row, index) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
1248
1211
  return openBlock(), createElementBlock("td", {
1249
1212
  key: column.key,
@@ -1253,17 +1216,17 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1253
1216
  value: row[column.key]
1254
1217
  }, () => [createTextVNode(toDisplayString(row[column.key]), 1)], true)], 2);
1255
1218
  }), 128))]);
1256
- }), 128))])) : (openBlock(), createElementBlock("tbody", _hoisted_4$11, [createElementVNode("tr", null, [createElementVNode("td", {
1219
+ }), 128))])) : (openBlock(), createElementBlock("tbody", _hoisted_4$12, [createElementVNode("tr", null, [createElementVNode("td", {
1257
1220
  colspan: __props.columns.length,
1258
1221
  class: "rk-table-empty"
1259
1222
  }, [renderSlot(_ctx.$slots, "empty", {}, void 0, true)], 8, _hoisted_5$7)])]))
1260
- ])], 8, _hoisted_1$29);
1223
+ ])], 8, _hoisted_1$32);
1261
1224
  };
1262
1225
  }
1263
1226
  }), [["__scopeId", "data-v-89958b5a"]]);
1264
1227
  //#endregion
1265
1228
  //#region src/components/BaseTextarea.vue?vue&type=script&setup=true&lang.ts
1266
- var _hoisted_1$28 = [
1229
+ var _hoisted_1$31 = [
1267
1230
  "id",
1268
1231
  "rows",
1269
1232
  "aria-invalid",
@@ -1309,7 +1272,7 @@ var BaseTextarea_default = /* @__PURE__ */ defineComponent({
1309
1272
  __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",
1310
1273
  "text-base",
1311
1274
  __props.variant !== "unstyled" && invalid ? "border-negative" : ""
1312
- ] }), null, 16, _hoisted_1$28), [[vModelText, unref(model)]])]),
1275
+ ] }), null, 16, _hoisted_1$31), [[vModelText, unref(model)]])]),
1313
1276
  _: 1
1314
1277
  }, 8, [
1315
1278
  "label",
@@ -1323,13 +1286,13 @@ var BaseTextarea_default = /* @__PURE__ */ defineComponent({
1323
1286
  });
1324
1287
  //#endregion
1325
1288
  //#region src/components/EmptyState.vue?vue&type=script&setup=true&lang.ts
1326
- var _hoisted_1$27 = { class: "flex flex-col items-center gap-3 px-6 py-10 text-center" };
1327
- var _hoisted_2$22 = {
1289
+ var _hoisted_1$30 = { class: "flex flex-col items-center gap-3 px-6 py-10 text-center" };
1290
+ var _hoisted_2$25 = {
1328
1291
  key: 0,
1329
1292
  class: "bg-muted text-primary rounded-card flex size-12 items-center justify-center"
1330
1293
  };
1331
- var _hoisted_3$13 = { class: "text-ink text-base font-semibold" };
1332
- var _hoisted_4$10 = {
1294
+ var _hoisted_3$15 = { class: "text-ink text-base font-semibold" };
1295
+ var _hoisted_4$11 = {
1333
1296
  key: 1,
1334
1297
  class: "text-ink-soft max-w-[36ch] text-sm"
1335
1298
  };
@@ -1355,10 +1318,10 @@ var EmptyState_default = /* @__PURE__ */ defineComponent({
1355
1318
  * goes — the button that creates the first one.
1356
1319
  */
1357
1320
  return (_ctx, _cache) => {
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),
1321
+ return openBlock(), createElementBlock("div", _hoisted_1$30, [
1322
+ _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$25, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
1323
+ createElementVNode("h3", _hoisted_3$15, toDisplayString(__props.title), 1),
1324
+ __props.description ? (openBlock(), createElementBlock("p", _hoisted_4$11, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
1362
1325
  _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5$6, [renderSlot(_ctx.$slots, "action")])) : createCommentVNode("", true)
1363
1326
  ]);
1364
1327
  };
@@ -1426,10 +1389,10 @@ var PageContainer_default = /* @__PURE__ */ defineComponent({
1426
1389
  });
1427
1390
  //#endregion
1428
1391
  //#region src/components/PageHeader.vue?vue&type=script&setup=true&lang.ts
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" };
1392
+ var _hoisted_1$29 = { class: "grid h-12 shrink-0 grid-cols-[2.5rem_1fr_2.5rem] items-center" };
1393
+ var _hoisted_2$24 = { class: "justify-self-start" };
1394
+ var _hoisted_3$14 = { class: "text-ink flex min-w-0 justify-center text-base font-semibold tabular-nums" };
1395
+ var _hoisted_4$10 = { class: "truncate" };
1433
1396
  var _hoisted_5$5 = { class: "justify-self-end" };
1434
1397
  //#endregion
1435
1398
  //#region src/components/PageHeader.vue
@@ -1447,9 +1410,9 @@ var PageHeader_default = /* @__PURE__ */ defineComponent({
1447
1410
  * each other.
1448
1411
  */
1449
1412
  return (_ctx, _cache) => {
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)])]),
1413
+ return openBlock(), createElementBlock("header", _hoisted_1$29, [
1414
+ createElementVNode("div", _hoisted_2$24, [renderSlot(_ctx.$slots, "left")]),
1415
+ createElementVNode("h1", _hoisted_3$14, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", _hoisted_4$10, toDisplayString(__props.title), 1)])]),
1453
1416
  createElementVNode("div", _hoisted_5$5, [renderSlot(_ctx.$slots, "right")])
1454
1417
  ]);
1455
1418
  };
@@ -1457,7 +1420,7 @@ var PageHeader_default = /* @__PURE__ */ defineComponent({
1457
1420
  });
1458
1421
  //#endregion
1459
1422
  //#region src/components/ProgressBar.vue?vue&type=script&setup=true&lang.ts
1460
- var _hoisted_1$25 = ["aria-valuenow", "aria-label"];
1423
+ var _hoisted_1$28 = ["aria-valuenow", "aria-label"];
1461
1424
  //#endregion
1462
1425
  //#region src/components/ProgressBar.vue
1463
1426
  var ProgressBar_default = /* @__PURE__ */ defineComponent({
@@ -1489,19 +1452,19 @@ var ProgressBar_default = /* @__PURE__ */ defineComponent({
1489
1452
  }, [createElementVNode("div", {
1490
1453
  class: "bg-primary h-full rounded-full transition-[width] duration-700 ease-out",
1491
1454
  style: normalizeStyle({ width: `${portion.value}%` })
1492
- }, null, 4)], 10, _hoisted_1$25);
1455
+ }, null, 4)], 10, _hoisted_1$28);
1493
1456
  };
1494
1457
  }
1495
1458
  });
1496
1459
  //#endregion
1497
1460
  //#region src/components/PriceCard.vue?vue&type=script&setup=true&lang.ts
1498
- var _hoisted_1$24 = {
1461
+ var _hoisted_1$27 = {
1499
1462
  key: 0,
1500
1463
  class: "bg-primary rounded-cell text-on-primary absolute -top-3 left-7 px-3 py-1 text-[0.7rem] font-semibold"
1501
1464
  };
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 = {
1465
+ var _hoisted_2$23 = { class: "flex items-start justify-between gap-4" };
1466
+ var _hoisted_3$13 = { class: "text-ink mt-5 text-lg font-semibold" };
1467
+ var _hoisted_4$9 = {
1505
1468
  key: 1,
1506
1469
  class: "text-ink-soft mt-1.5 text-sm leading-relaxed"
1507
1470
  };
@@ -1570,16 +1533,16 @@ var PriceCard_default = /* @__PURE__ */ defineComponent({
1570
1533
  const palette = computed(() => TONE[__props.tone]);
1571
1534
  return (_ctx, _cache) => {
1572
1535
  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"]]) }, [
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", {
1536
+ __props.badge && __props.recommended ? (openBlock(), createElementBlock("span", _hoisted_1$27, toDisplayString(__props.badge), 1)) : createCommentVNode("", true),
1537
+ createElementVNode("div", _hoisted_2$23, [_ctx.$slots.icon ? (openBlock(), createElementBlock("span", {
1575
1538
  key: 0,
1576
1539
  class: normalizeClass(["rounded-card grid size-11 place-items-center text-xl", palette.value.icon])
1577
1540
  }, [renderSlot(_ctx.$slots, "icon")], 2)) : createCommentVNode("", true), __props.chip ? (openBlock(), createElementBlock("span", {
1578
1541
  key: 1,
1579
1542
  class: normalizeClass(["rounded-cell ml-auto px-2.5 py-1 text-[0.7rem] font-medium", palette.value.soft])
1580
1543
  }, toDisplayString(__props.chip), 3)) : 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),
1544
+ createElementVNode("h3", _hoisted_3$13, toDisplayString(__props.name), 1),
1545
+ __props.lead ? (openBlock(), createElementBlock("p", _hoisted_4$9, toDisplayString(__props.lead), 1)) : createCommentVNode("", true),
1583
1546
  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)]),
1584
1547
  __props.note ? (openBlock(), createElementBlock("p", _hoisted_8$2, toDisplayString(__props.note), 1)) : createCommentVNode("", true),
1585
1548
  createElementVNode("ul", _hoisted_9$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.features, (feature) => {
@@ -1595,8 +1558,8 @@ var PriceCard_default = /* @__PURE__ */ defineComponent({
1595
1558
  });
1596
1559
  //#endregion
1597
1560
  //#region src/components/ToneDot.vue?vue&type=script&setup=true&lang.ts
1598
- var _hoisted_1$23 = { class: "inline-flex items-center gap-1.5" };
1599
- var _hoisted_2$19 = {
1561
+ var _hoisted_1$26 = { class: "inline-flex items-center gap-1.5" };
1562
+ var _hoisted_2$22 = {
1600
1563
  key: 0,
1601
1564
  class: "text-ink-soft text-xs font-medium"
1602
1565
  };
@@ -1617,13 +1580,13 @@ var ToneDot_default = /* @__PURE__ */ defineComponent({
1617
1580
  * priorities — without this component knowing about any of them.
1618
1581
  */
1619
1582
  return (_ctx, _cache) => {
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)]);
1583
+ return openBlock(), createElementBlock("span", _hoisted_1$26, [createElementVNode("span", { class: normalizeClass(["size-2 rounded-full", __props.fill]) }, null, 2), __props.label ? (openBlock(), createElementBlock("span", _hoisted_2$22, toDisplayString(__props.label), 1)) : createCommentVNode("", true)]);
1621
1584
  };
1622
1585
  }
1623
1586
  });
1624
1587
  //#endregion
1625
1588
  //#region src/components/SectionHeading.vue?vue&type=script&setup=true&lang.ts
1626
- var _hoisted_1$22 = {
1589
+ var _hoisted_1$25 = {
1627
1590
  key: 0,
1628
1591
  class: "text-ink-soft text-xs tabular-nums"
1629
1592
  };
@@ -1641,15 +1604,15 @@ var SectionHeading_default = /* @__PURE__ */ defineComponent({
1641
1604
  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]) }, [
1642
1605
  createVNode(ToneDot_default, { fill: __props.tone.fill }, null, 8, ["fill"]),
1643
1606
  createElementVNode("span", { class: normalizeClass(["text-xs font-semibold tracking-wide uppercase", __props.tone.text]) }, toDisplayString(__props.label), 3),
1644
- __props.count > 0 ? (openBlock(), createElementBlock("span", _hoisted_1$22, toDisplayString(__props.count), 1)) : createCommentVNode("", true)
1607
+ __props.count > 0 ? (openBlock(), createElementBlock("span", _hoisted_1$25, toDisplayString(__props.count), 1)) : createCommentVNode("", true)
1645
1608
  ], 2);
1646
1609
  };
1647
1610
  }
1648
1611
  });
1649
1612
  //#endregion
1650
1613
  //#region src/components/SegmentedControl.vue?vue&type=script&setup=true&lang.ts
1651
- var _hoisted_1$21 = { class: "bg-muted rounded-card flex w-full gap-1 p-1" };
1652
- var _hoisted_2$18 = ["value", "name"];
1614
+ var _hoisted_1$24 = { class: "bg-muted rounded-card flex w-full gap-1 p-1" };
1615
+ var _hoisted_2$21 = ["value", "name"];
1653
1616
  //#endregion
1654
1617
  //#region src/components/SegmentedControl.vue
1655
1618
  var SegmentedControl_default = /* @__PURE__ */ defineComponent({
@@ -1663,7 +1626,7 @@ var SegmentedControl_default = /* @__PURE__ */ defineComponent({
1663
1626
  const model = useModel(__props, "modelValue");
1664
1627
  const name = useId();
1665
1628
  return (_ctx, _cache) => {
1666
- return openBlock(), createElementBlock("div", _hoisted_1$21, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
1629
+ return openBlock(), createElementBlock("div", _hoisted_1$24, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
1667
1630
  return openBlock(), createElementBlock("label", {
1668
1631
  key: String(option.value),
1669
1632
  class: "flex-1 cursor-pointer"
@@ -1673,18 +1636,18 @@ var SegmentedControl_default = /* @__PURE__ */ defineComponent({
1673
1636
  value: option.value,
1674
1637
  name: unref(name),
1675
1638
  class: "peer sr-only"
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)]);
1639
+ }, null, 8, _hoisted_2$21), [[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)]);
1677
1640
  }), 128))]);
1678
1641
  };
1679
1642
  }
1680
1643
  });
1681
1644
  //#endregion
1682
1645
  //#region src/components/SkeletonList.vue?vue&type=script&setup=true&lang.ts
1683
- var _hoisted_1$20 = {
1646
+ var _hoisted_1$23 = {
1684
1647
  role: "status",
1685
1648
  class: "flex flex-col gap-1"
1686
1649
  };
1687
- var _hoisted_2$17 = { class: "sr-only" };
1650
+ var _hoisted_2$20 = { class: "sr-only" };
1688
1651
  //#endregion
1689
1652
  //#region src/components/SkeletonList.vue
1690
1653
  var SkeletonList_default = /* @__PURE__ */ defineComponent({
@@ -1698,7 +1661,7 @@ var SkeletonList_default = /* @__PURE__ */ defineComponent({
1698
1661
  /** A length starts with a digit, a dot, or opens a CSS function. */
1699
1662
  const isLength = computed(() => /^(?:[.\d]|calc\(|var\(|clamp\(|min\(|max\()/.test(__props.rowHeight));
1700
1663
  return (_ctx, _cache) => {
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) => {
1664
+ return openBlock(), createElementBlock("div", _hoisted_1$23, [createElementVNode("span", _hoisted_2$20, toDisplayString(__props.label), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row) => {
1702
1665
  return openBlock(), createElementBlock("div", {
1703
1666
  key: row,
1704
1667
  class: normalizeClass(["bg-muted rounded-card animate-pulse", isLength.value ? void 0 : __props.rowHeight]),
@@ -1711,10 +1674,10 @@ var SkeletonList_default = /* @__PURE__ */ defineComponent({
1711
1674
  });
1712
1675
  //#endregion
1713
1676
  //#region src/components/StatCard.vue?vue&type=script&setup=true&lang.ts
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" };
1677
+ var _hoisted_1$22 = { class: "surface rounded-card flex flex-1 flex-col gap-0.5 p-3" };
1678
+ var _hoisted_2$19 = { class: "flex items-baseline gap-1" };
1679
+ var _hoisted_3$12 = { class: "text-ink text-xl font-semibold tabular-nums" };
1680
+ var _hoisted_4$8 = { class: "text-ink-soft text-xs" };
1718
1681
  //#endregion
1719
1682
  //#region src/components/StatCard.vue
1720
1683
  var StatCard_default = /* @__PURE__ */ defineComponent({
@@ -1731,22 +1694,22 @@ var StatCard_default = /* @__PURE__ */ defineComponent({
1731
1694
  flat: ArrowRight
1732
1695
  };
1733
1696
  return (_ctx, _cache) => {
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]), {
1697
+ return openBlock(), createElementBlock("div", _hoisted_1$22, [createElementVNode("div", _hoisted_2$19, [createElementVNode("span", _hoisted_3$12, toDisplayString(__props.value), 1), __props.trend ? (openBlock(), createBlock(resolveDynamicComponent(TREND_ICON[__props.trend]), {
1735
1698
  key: 0,
1736
1699
  class: "text-ink-soft size-3"
1737
- })) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_4$7, toDisplayString(__props.label), 1)]);
1700
+ })) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_4$8, toDisplayString(__props.label), 1)]);
1738
1701
  };
1739
1702
  }
1740
1703
  });
1741
1704
  //#endregion
1742
1705
  //#region src/components/ToastHost.vue?vue&type=script&setup=true&lang.ts
1743
- var _hoisted_1$18 = [
1706
+ var _hoisted_1$21 = [
1744
1707
  "onMouseenter",
1745
1708
  "onMouseleave",
1746
1709
  "onFocusin",
1747
1710
  "onFocusout"
1748
1711
  ];
1749
- var _hoisted_2$15 = { class: "flex-1 text-sm leading-snug" };
1712
+ var _hoisted_2$18 = { class: "flex-1 text-sm leading-snug" };
1750
1713
  //#endregion
1751
1714
  //#region src/components/ToastHost.vue
1752
1715
  var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1807,7 +1770,7 @@ var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1807
1770
  class: normalizeClass(["mt-0.5 size-5 shrink-0", TONE_CLASS[toast.tone]]),
1808
1771
  "aria-hidden": "true"
1809
1772
  }, null, 8, ["class"])),
1810
- createElementVNode("p", _hoisted_2$15, toDisplayString(toast.message), 1),
1773
+ createElementVNode("p", _hoisted_2$18, toDisplayString(toast.message), 1),
1811
1774
  toast.action ? (openBlock(), createBlock(BaseButton_default, {
1812
1775
  key: 0,
1813
1776
  variant: "link",
@@ -1830,7 +1793,7 @@ var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1830
1793
  default: withCtx(() => [createVNode(unref(X), { class: "size-4" })]),
1831
1794
  _: 1
1832
1795
  }, 8, ["aria-label", "onClick"])
1833
- ], 40, _hoisted_1$18);
1796
+ ], 40, _hoisted_1$21);
1834
1797
  }), 128))]),
1835
1798
  _: 1
1836
1799
  })], 2)])) : createCommentVNode("", true);
@@ -1839,8 +1802,8 @@ var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1839
1802
  }), [["__scopeId", "data-v-737eb240"]]);
1840
1803
  //#endregion
1841
1804
  //#region src/components/LocaleLinks.vue?vue&type=script&setup=true&lang.ts
1842
- var _hoisted_1$17 = ["aria-label"];
1843
- var _hoisted_2$14 = [
1805
+ var _hoisted_1$20 = ["aria-label"];
1806
+ var _hoisted_2$17 = [
1844
1807
  "lang",
1845
1808
  "aria-pressed",
1846
1809
  "onClick"
@@ -1884,17 +1847,17 @@ var LocaleLinks_default = /* @__PURE__ */ defineComponent({
1884
1847
  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"]),
1885
1848
  "aria-pressed": preference.value === locale,
1886
1849
  onClick: ($event) => preference.value = locale
1887
- }, toDisplayString(__props.labels[locale]), 11, _hoisted_2$14);
1888
- }), 128))], 8, _hoisted_1$17);
1850
+ }, toDisplayString(__props.labels[locale]), 11, _hoisted_2$17);
1851
+ }), 128))], 8, _hoisted_1$20);
1889
1852
  };
1890
1853
  }
1891
1854
  });
1892
1855
  //#endregion
1893
1856
  //#region src/components/TabBar.vue?vue&type=script&setup=true&lang.ts
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" };
1857
+ var _hoisted_1$19 = { class: "tab-bar" };
1858
+ var _hoisted_2$16 = ["aria-label"];
1859
+ var _hoisted_3$11 = { class: "tab-icon-slot" };
1860
+ var _hoisted_4$7 = { class: "tab-label" };
1898
1861
  //#endregion
1899
1862
  //#region src/components/TabBar.vue
1900
1863
  var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1906,7 +1869,7 @@ var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
1906
1869
  },
1907
1870
  setup(__props) {
1908
1871
  return (_ctx, _cache) => {
1909
- return openBlock(), createElementBlock("header", _hoisted_1$16, [createElementVNode("nav", {
1872
+ return openBlock(), createElementBlock("header", _hoisted_1$19, [createElementVNode("nav", {
1910
1873
  class: "tab-bar-inner",
1911
1874
  "aria-label": __props.label || void 0
1912
1875
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
@@ -1917,21 +1880,21 @@ var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
1917
1880
  "aria-current": item.key === __props.active ? "page" : void 0,
1918
1881
  onClick: _cache[0] || (_cache[0] = ($event) => unref(tapFeedback)())
1919
1882
  }, {
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)]),
1883
+ default: withCtx(() => [createElementVNode("span", _hoisted_3$11, [(openBlock(), createBlock(resolveDynamicComponent(item.icon), { class: "tab-icon" }))]), createElementVNode("span", _hoisted_4$7, toDisplayString(item.label), 1)]),
1921
1884
  _: 2
1922
1885
  }, 1032, [
1923
1886
  "to",
1924
1887
  "class",
1925
1888
  "aria-current"
1926
1889
  ]);
1927
- }), 128))], 8, _hoisted_2$13)]);
1890
+ }), 128))], 8, _hoisted_2$16)]);
1928
1891
  };
1929
1892
  }
1930
1893
  }), [["__scopeId", "data-v-a76891c4"]]);
1931
1894
  //#endregion
1932
1895
  //#region src/components/AvatarStack.vue?vue&type=script&setup=true&lang.ts
1933
- var _hoisted_1$15 = ["aria-label"];
1934
- var _hoisted_2$12 = {
1896
+ var _hoisted_1$18 = ["aria-label"];
1897
+ var _hoisted_2$15 = {
1935
1898
  key: 0,
1936
1899
  class: "rk-stack-item rk-stack-rest",
1937
1900
  "aria-hidden": "true"
@@ -1969,16 +1932,16 @@ var AvatarStack_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1969
1932
  "src",
1970
1933
  "size"
1971
1934
  ])]);
1972
- }), 128)), rest.value ? (openBlock(), createElementBlock("span", _hoisted_2$12, "+" + toDisplayString(rest.value), 1)) : createCommentVNode("", true)], 10, _hoisted_1$15);
1935
+ }), 128)), rest.value ? (openBlock(), createElementBlock("span", _hoisted_2$15, "+" + toDisplayString(rest.value), 1)) : createCommentVNode("", true)], 10, _hoisted_1$18);
1973
1936
  };
1974
1937
  }
1975
1938
  }), [["__scopeId", "data-v-db629481"]]);
1976
1939
  //#endregion
1977
1940
  //#region src/components/BaseCalendar.vue?vue&type=script&setup=true&lang.ts
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"];
1941
+ var _hoisted_1$17 = { class: "rk-cal" };
1942
+ var _hoisted_2$14 = { class: "rk-cal-head" };
1943
+ var _hoisted_3$10 = ["aria-label"];
1944
+ var _hoisted_4$6 = ["aria-expanded"];
1982
1945
  var _hoisted_5$3 = ["aria-label"];
1983
1946
  var _hoisted_6$3 = {
1984
1947
  key: 0,
@@ -2172,8 +2135,8 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2172
2135
  if (next) focused.value = next;
2173
2136
  });
2174
2137
  return (_ctx, _cache) => {
2175
- return openBlock(), createElementBlock("div", _hoisted_1$14, [
2176
- createElementVNode("div", _hoisted_2$11, [
2138
+ return openBlock(), createElementBlock("div", _hoisted_1$17, [
2139
+ createElementVNode("div", _hoisted_2$14, [
2177
2140
  createElementVNode("button", {
2178
2141
  type: "button",
2179
2142
  class: "rk-cal-arrow focus-ring",
@@ -2182,13 +2145,13 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2182
2145
  }, [createVNode(unref(ChevronLeft), {
2183
2146
  class: "size-4",
2184
2147
  "aria-hidden": "true"
2185
- })], 8, _hoisted_3$8),
2148
+ })], 8, _hoisted_3$10),
2186
2149
  createElementVNode("button", {
2187
2150
  type: "button",
2188
2151
  class: "rk-cal-title focus-ring",
2189
2152
  "aria-expanded": view.value !== "days",
2190
2153
  onClick: cycleView
2191
- }, toDisplayString(view.value === "years" ? `${years.value[0]} – ${years.value[11]}` : monthTitle.value), 9, _hoisted_4$5),
2154
+ }, toDisplayString(view.value === "years" ? `${years.value[0]} – ${years.value[11]}` : monthTitle.value), 9, _hoisted_4$6),
2192
2155
  createElementVNode("button", {
2193
2156
  type: "button",
2194
2157
  class: "rk-cal-arrow focus-ring",
@@ -2255,8 +2218,8 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2255
2218
  }), [["__scopeId", "data-v-6d0b0811"]]);
2256
2219
  //#endregion
2257
2220
  //#region src/components/BaseChip.vue?vue&type=script&setup=true&lang.ts
2258
- var _hoisted_1$13 = { class: "truncate" };
2259
- var _hoisted_2$10 = ["aria-label", "disabled"];
2221
+ var _hoisted_1$16 = { class: "truncate" };
2222
+ var _hoisted_2$13 = ["aria-label", "disabled"];
2260
2223
  //#endregion
2261
2224
  //#region src/components/BaseChip.vue
2262
2225
  var BaseChip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2293,7 +2256,7 @@ var BaseChip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2293
2256
  key: 0,
2294
2257
  class: "size-3.5 shrink-0",
2295
2258
  "aria-hidden": "true"
2296
- })) : createCommentVNode("", true), createElementVNode("span", _hoisted_1$13, toDisplayString(__props.label), 1)]),
2259
+ })) : createCommentVNode("", true), createElementVNode("span", _hoisted_1$16, toDisplayString(__props.label), 1)]),
2297
2260
  _: 1
2298
2261
  }, 8, [
2299
2262
  "type",
@@ -2310,18 +2273,18 @@ var BaseChip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2310
2273
  }, [createVNode(unref(X), {
2311
2274
  class: "size-3",
2312
2275
  "aria-hidden": "true"
2313
- })], 8, _hoisted_2$10)) : createCommentVNode("", true)], 2);
2276
+ })], 8, _hoisted_2$13)) : createCommentVNode("", true)], 2);
2314
2277
  };
2315
2278
  }
2316
2279
  }), [["__scopeId", "data-v-c94a820d"]]);
2317
2280
  //#endregion
2318
2281
  //#region src/components/BaseKbd.vue?vue&type=script&setup=true&lang.ts
2319
- var _hoisted_1$12 = {
2282
+ var _hoisted_1$15 = {
2320
2283
  key: 0,
2321
2284
  class: "rk-kbd-joiner",
2322
2285
  "aria-hidden": "true"
2323
2286
  };
2324
- var _hoisted_2$9 = { class: "rk-kbd-key control" };
2287
+ var _hoisted_2$12 = { class: "rk-kbd-key control" };
2325
2288
  //#endregion
2326
2289
  //#region src/components/BaseKbd.vue
2327
2290
  var BaseKbd_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2335,7 +2298,7 @@ var BaseKbd_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
2335
2298
  const list = computed(() => typeof __props.keys === "string" ? [__props.keys] : __props.keys);
2336
2299
  return (_ctx, _cache) => {
2337
2300
  return openBlock(), createElementBlock("span", { class: normalizeClass(["rk-kbd", `is-${__props.size}`]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(list.value, (key, index) => {
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);
2301
+ return openBlock(), createElementBlock(Fragment, { key }, [index > 0 && __props.joiner ? (openBlock(), createElementBlock("span", _hoisted_1$15, toDisplayString(__props.joiner), 1)) : createCommentVNode("", true), createElementVNode("kbd", _hoisted_2$12, toDisplayString(key), 1)], 64);
2339
2302
  }), 128))], 2);
2340
2303
  };
2341
2304
  }
@@ -2374,7 +2337,7 @@ var BaseLink_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2374
2337
  }), [["__scopeId", "data-v-88581007"]]);
2375
2338
  //#endregion
2376
2339
  //#region src/components/BaseRating.vue?vue&type=script&setup=true&lang.ts
2377
- var _hoisted_1$11 = [
2340
+ var _hoisted_1$14 = [
2378
2341
  "role",
2379
2342
  "aria-label",
2380
2343
  "tabindex",
@@ -2459,14 +2422,14 @@ var BaseRating_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
2459
2422
  "onClick",
2460
2423
  "onPointerenter"
2461
2424
  ]);
2462
- }), 128))], 42, _hoisted_1$11);
2425
+ }), 128))], 42, _hoisted_1$14);
2463
2426
  };
2464
2427
  }
2465
2428
  }), [["__scopeId", "data-v-38007368"]]);
2466
2429
  //#endregion
2467
2430
  //#region src/components/BaseSeparator.vue?vue&type=script&setup=true&lang.ts
2468
- var _hoisted_1$10 = { class: "rk-sep-label" };
2469
- var _hoisted_2$8 = ["aria-orientation"];
2431
+ var _hoisted_1$13 = { class: "rk-sep-label" };
2432
+ var _hoisted_2$11 = ["aria-orientation"];
2470
2433
  //#endregion
2471
2434
  //#region src/components/BaseSeparator.vue
2472
2435
  var BaseSeparator_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2494,22 +2457,22 @@ var BaseSeparator_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
2494
2457
  "aria-hidden": "true"
2495
2458
  }, [
2496
2459
  _cache[0] || (_cache[0] = createElementVNode("span", { class: "rk-sep-line" }, null, -1)),
2497
- createElementVNode("span", _hoisted_1$10, toDisplayString(__props.label), 1),
2460
+ createElementVNode("span", _hoisted_1$13, toDisplayString(__props.label), 1),
2498
2461
  _cache[1] || (_cache[1] = createElementVNode("span", { class: "rk-sep-line" }, null, -1))
2499
2462
  ], 2)) : (openBlock(), createElementBlock("div", {
2500
2463
  key: 1,
2501
2464
  class: normalizeClass(["rk-sep", [`is-${__props.orientation}`, `space-${__props.spacing}`]]),
2502
2465
  role: "separator",
2503
2466
  "aria-orientation": __props.orientation
2504
- }, null, 10, _hoisted_2$8));
2467
+ }, null, 10, _hoisted_2$11));
2505
2468
  };
2506
2469
  }
2507
2470
  }), [["__scopeId", "data-v-9f8cc9aa"]]);
2508
2471
  //#endregion
2509
2472
  //#region src/components/CopyButton.vue?vue&type=script&setup=true&lang.ts
2510
- var _hoisted_1$9 = ["aria-label"];
2511
- var _hoisted_2$7 = { key: 2 };
2512
- var _hoisted_3$7 = {
2473
+ var _hoisted_1$12 = ["aria-label"];
2474
+ var _hoisted_2$10 = { key: 2 };
2475
+ var _hoisted_3$9 = {
2513
2476
  class: "sr-only",
2514
2477
  role: "status",
2515
2478
  "aria-live": "polite"
@@ -2567,23 +2530,46 @@ var CopyButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
2567
2530
  class: "size-4 shrink-0",
2568
2531
  "aria-hidden": "true"
2569
2532
  })),
2570
- __props.withText ? (openBlock(), createElementBlock("span", _hoisted_2$7, toDisplayString(state.value === "copied" ? __props.copiedLabel : __props.copyLabel), 1)) : createCommentVNode("", true),
2571
- createElementVNode("span", _hoisted_3$7, toDisplayString(state.value === "copied" ? __props.copiedLabel : state.value === "failed" ? __props.errorLabel ?? "" : ""), 1)
2572
- ], 10, _hoisted_1$9);
2533
+ __props.withText ? (openBlock(), createElementBlock("span", _hoisted_2$10, toDisplayString(state.value === "copied" ? __props.copiedLabel : __props.copyLabel), 1)) : createCommentVNode("", true),
2534
+ createElementVNode("span", _hoisted_3$9, toDisplayString(state.value === "copied" ? __props.copiedLabel : state.value === "failed" ? __props.errorLabel ?? "" : ""), 1)
2535
+ ], 10, _hoisted_1$12);
2573
2536
  };
2574
2537
  }
2575
2538
  }), [["__scopeId", "data-v-c481e140"]]);
2576
2539
  //#endregion
2540
+ //#region src/components/DescriptionList.vue?vue&type=script&setup=true&lang.ts
2541
+ var _hoisted_1$11 = { class: "rk-dl-term" };
2542
+ var _hoisted_2$9 = { class: "rk-dl-value" };
2543
+ //#endregion
2544
+ //#region src/components/DescriptionList.vue
2545
+ var DescriptionList_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2546
+ __name: "DescriptionList",
2547
+ props: {
2548
+ items: {},
2549
+ layout: { default: "stacked" }
2550
+ },
2551
+ setup(__props) {
2552
+ return (_ctx, _cache) => {
2553
+ return openBlock(), createElementBlock("dl", { class: normalizeClass(["rk-dl", `is-${__props.layout}`]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
2554
+ return openBlock(), createElementBlock("div", {
2555
+ key: item.key ?? item.term,
2556
+ class: "rk-dl-row"
2557
+ }, [createElementVNode("dt", _hoisted_1$11, toDisplayString(item.term), 1), createElementVNode("dd", _hoisted_2$9, [renderSlot(_ctx.$slots, item.key ?? item.term, { item }, () => [createTextVNode(toDisplayString(item.description), 1)], true)])]);
2558
+ }), 128))], 2);
2559
+ };
2560
+ }
2561
+ }), [["__scopeId", "data-v-831e205b"]]);
2562
+ //#endregion
2577
2563
  //#region src/components/FileDrop.vue?vue&type=script&setup=true&lang.ts
2578
- var _hoisted_1$8 = { class: "rk-drop" };
2579
- var _hoisted_2$6 = ["for"];
2580
- var _hoisted_3$6 = [
2564
+ var _hoisted_1$10 = { class: "rk-drop" };
2565
+ var _hoisted_2$8 = ["for"];
2566
+ var _hoisted_3$8 = [
2581
2567
  "id",
2582
2568
  "accept",
2583
2569
  "multiple",
2584
2570
  "disabled"
2585
2571
  ];
2586
- var _hoisted_4$4 = { class: "rk-drop-label" };
2572
+ var _hoisted_4$5 = { class: "rk-drop-label" };
2587
2573
  var _hoisted_5$2 = {
2588
2574
  key: 0,
2589
2575
  class: "rk-drop-hint"
@@ -2663,7 +2649,7 @@ var FileDrop_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2663
2649
  const size = (bytes) => bytes >= 1048576 ? `${(bytes / 1048576).toFixed(1)} MB` : `${Math.max(1, Math.round(bytes / 1024))} KB`;
2664
2650
  const count = computed(() => model.value.length);
2665
2651
  return (_ctx, _cache) => {
2666
- return openBlock(), createElementBlock("div", _hoisted_1$8, [
2652
+ return openBlock(), createElementBlock("div", _hoisted_1$10, [
2667
2653
  createElementVNode("label", {
2668
2654
  class: normalizeClass(["rk-drop-box control", {
2669
2655
  "is-over": over.value,
@@ -2682,15 +2668,15 @@ var FileDrop_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2682
2668
  multiple: __props.multiple,
2683
2669
  disabled: __props.disabled,
2684
2670
  onChange: onInput
2685
- }, null, 40, _hoisted_3$6),
2671
+ }, null, 40, _hoisted_3$8),
2686
2672
  createVNode(unref(Upload), {
2687
2673
  class: "text-ink-soft size-6",
2688
2674
  "aria-hidden": "true"
2689
2675
  }),
2690
- createElementVNode("span", _hoisted_4$4, toDisplayString(__props.label), 1),
2676
+ createElementVNode("span", _hoisted_4$5, toDisplayString(__props.label), 1),
2691
2677
  __props.hint ? (openBlock(), createElementBlock("span", _hoisted_5$2, toDisplayString(__props.hint), 1)) : createCommentVNode("", true),
2692
2678
  createElementVNode("span", _hoisted_6$2, toDisplayString(__props.browseLabel), 1)
2693
- ], 42, _hoisted_2$6),
2679
+ ], 42, _hoisted_2$8),
2694
2680
  refused.value && __props.tooLargeLabel ? (openBlock(), createElementBlock("p", _hoisted_7$1, toDisplayString(__props.tooLargeLabel), 1)) : createCommentVNode("", true),
2695
2681
  count.value ? (openBlock(), createElementBlock("ul", _hoisted_8, [(openBlock(true), createElementBlock(Fragment, null, renderList(model.value, (file, index) => {
2696
2682
  return openBlock(), createElementBlock("li", {
@@ -2721,7 +2707,7 @@ var FileDrop_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2721
2707
  }), [["__scopeId", "data-v-a42eab69"]]);
2722
2708
  //#endregion
2723
2709
  //#region src/components/TagsInput.vue?vue&type=script&setup=true&lang.ts
2724
- var _hoisted_1$7 = [
2710
+ var _hoisted_1$9 = [
2725
2711
  "id",
2726
2712
  "placeholder",
2727
2713
  "aria-describedby",
@@ -2761,13 +2747,29 @@ var TagsInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
2761
2747
  /** The tags, with `v-model`. */
2762
2748
  const model = useModel(__props, "modelValue");
2763
2749
  const draft = ref("");
2750
+ /** Commits one or many: "vue, html" is two tags however it arrived. */
2751
+ function commit(text) {
2752
+ const parts = text.split(/[\n,]/).map((part) => part.trim()).filter(Boolean);
2753
+ if (parts.length === 0) return;
2754
+ const next = [...model.value];
2755
+ for (const value of parts) {
2756
+ if (__props.max !== void 0 && next.length >= __props.max) break;
2757
+ if (!__props.allowDuplicates && next.includes(value)) continue;
2758
+ next.push(value);
2759
+ }
2760
+ if (next.length !== model.value.length) model.value = next;
2761
+ }
2764
2762
  function add() {
2765
- const value = draft.value.trim();
2763
+ const text = draft.value;
2764
+ draft.value = "";
2765
+ commit(text);
2766
+ }
2767
+ function onPaste(event) {
2768
+ const text = event.clipboardData?.getData("text") ?? "";
2769
+ if (!/[\n,]/.test(text)) return;
2770
+ event.preventDefault();
2771
+ commit(`${draft.value}${text}`);
2766
2772
  draft.value = "";
2767
- if (!value) return;
2768
- if (__props.max !== void 0 && model.value.length >= __props.max) return;
2769
- if (!__props.allowDuplicates && model.value.includes(value)) return;
2770
- model.value = [...model.value, value];
2771
2773
  }
2772
2774
  function remove(index) {
2773
2775
  model.value = model.value.filter((_, at) => at !== index);
@@ -2821,8 +2823,9 @@ var TagsInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
2821
2823
  "aria-invalid": invalid,
2822
2824
  disabled: __props.disabled || __props.max !== void 0 && model.value.length >= __props.max,
2823
2825
  onKeydown,
2826
+ onPaste,
2824
2827
  onBlur: add
2825
- }, null, 40, _hoisted_1$7), [[vModelText, draft.value]])], 2)]),
2828
+ }, null, 40, _hoisted_1$9), [[vModelText, draft.value]])], 2)]),
2826
2829
  _: 1
2827
2830
  }, 8, [
2828
2831
  "label",
@@ -2833,10 +2836,10 @@ var TagsInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
2833
2836
  ]);
2834
2837
  };
2835
2838
  }
2836
- }), [["__scopeId", "data-v-b372ae7b"]]);
2839
+ }), [["__scopeId", "data-v-1fd08921"]]);
2837
2840
  //#endregion
2838
2841
  //#region src/components/BasePopover.vue?vue&type=script&setup=true&lang.ts
2839
- var _hoisted_1$6 = ["id", "aria-label"];
2842
+ var _hoisted_1$8 = ["id", "aria-label"];
2840
2843
  var FOCUSABLE = "a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
2841
2844
  //#endregion
2842
2845
  //#region src/components/BasePopover.vue
@@ -2953,22 +2956,167 @@ var BasePopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
2953
2956
  role: "dialog",
2954
2957
  "aria-label": __props.label,
2955
2958
  tabindex: "-1"
2956
- }, [renderSlot(_ctx.$slots, "default", { close }, void 0, true)], 14, _hoisted_1$6)) : createCommentVNode("", true)]),
2959
+ }, [renderSlot(_ctx.$slots, "default", { close }, void 0, true)], 14, _hoisted_1$8)) : createCommentVNode("", true)]),
2957
2960
  _: 3
2958
2961
  })], 544);
2959
2962
  };
2960
2963
  }
2961
2964
  }), [["__scopeId", "data-v-1371bff2"]]);
2962
2965
  //#endregion
2966
+ //#region src/components/TimePicker.vue?vue&type=script&setup=true&lang.ts
2967
+ var _hoisted_1$7 = [
2968
+ "id",
2969
+ "aria-describedby",
2970
+ "disabled"
2971
+ ];
2972
+ var _hoisted_2$7 = { class: "truncate" };
2973
+ var _hoisted_3$7 = { class: "rk-time-columns" };
2974
+ //#endregion
2975
+ //#region src/components/TimePicker.vue
2976
+ var TimePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2977
+ __name: "TimePicker",
2978
+ props: /*@__PURE__*/ mergeModels({
2979
+ label: {},
2980
+ hoursLabel: {},
2981
+ minutesLabel: {},
2982
+ placeholder: { default: "" },
2983
+ step: { default: 15 },
2984
+ min: { default: () => void 0 },
2985
+ max: { default: () => void 0 },
2986
+ error: { default: "" },
2987
+ hint: { default: "" },
2988
+ size: { default: "md" },
2989
+ labelHidden: {
2990
+ type: Boolean,
2991
+ default: false
2992
+ },
2993
+ disabled: {
2994
+ type: Boolean,
2995
+ default: false
2996
+ }
2997
+ }, {
2998
+ "modelValue": {},
2999
+ "modelModifiers": {}
3000
+ }),
3001
+ emits: ["update:modelValue"],
3002
+ setup(__props) {
3003
+ /** The time as `HH:mm`, with `v-model`. */
3004
+ const model = useModel(__props, "modelValue");
3005
+ const open = ref(false);
3006
+ const pad = (value) => String(value).padStart(2, "0");
3007
+ /** A real date, only so `Intl` can say the time in the reader's own clock. */
3008
+ const asDate = (time) => {
3009
+ const [hour = "0", minute = "0"] = time.split(":");
3010
+ return new Date(2e3, 0, 1, Number(hour), Number(minute));
3011
+ };
3012
+ const shown = computed(() => model.value === void 0 ? "" : formatDate(asDate(model.value), {
3013
+ hour: "2-digit",
3014
+ minute: "2-digit"
3015
+ }));
3016
+ const inRange = (time) => {
3017
+ if (__props.min !== void 0 && time < __props.min) return false;
3018
+ if (__props.max !== void 0 && time > __props.max) return false;
3019
+ return true;
3020
+ };
3021
+ const chosenHour = computed(() => model.value?.split(":")[0] ?? "");
3022
+ const chosenMinute = computed(() => model.value?.split(":")[1] ?? "");
3023
+ const hours = computed(() => Array.from({ length: 24 }, (_, index) => {
3024
+ const value = pad(index);
3025
+ const usable = minutes.value.some((one) => inRange(`${value}:${one.value}`));
3026
+ return {
3027
+ value,
3028
+ label: formatDate(asDate(`${value}:00`), { hour: "numeric" }),
3029
+ disabled: !usable
3030
+ };
3031
+ }));
3032
+ const minutes = computed(() => Array.from({ length: Math.ceil(60 / __props.step) }, (_, index) => {
3033
+ const value = pad(index * __props.step);
3034
+ return {
3035
+ value,
3036
+ label: value,
3037
+ disabled: chosenHour.value !== "" && !inRange(`${chosenHour.value}:${value}`)
3038
+ };
3039
+ }));
3040
+ function pickHour(next) {
3041
+ if (next === void 0) return;
3042
+ model.value = `${next}:${chosenMinute.value || pad(0)}`;
3043
+ }
3044
+ function pickMinute(next) {
3045
+ if (next === void 0) return;
3046
+ model.value = `${chosenHour.value || pad(0)}:${next}`;
3047
+ open.value = false;
3048
+ }
3049
+ return (_ctx, _cache) => {
3050
+ return openBlock(), createBlock(FormField_default, {
3051
+ label: __props.label,
3052
+ error: __props.error,
3053
+ hint: __props.hint,
3054
+ size: __props.size,
3055
+ "label-hidden": __props.labelHidden
3056
+ }, {
3057
+ default: withCtx(({ id, describedBy, invalid }) => [createVNode(BasePopover_default, {
3058
+ modelValue: open.value,
3059
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => open.value = $event),
3060
+ class: "rk-time",
3061
+ label: __props.label
3062
+ }, {
3063
+ trigger: withCtx(({ props }) => [createElementVNode("button", mergeProps({
3064
+ id,
3065
+ type: "button",
3066
+ class: ["rk-time-field control focus-ring", {
3067
+ "is-invalid": invalid,
3068
+ "is-empty": !shown.value
3069
+ }],
3070
+ "aria-describedby": describedBy,
3071
+ disabled: __props.disabled
3072
+ }, props), [createVNode(unref(Clock), {
3073
+ class: "size-4 shrink-0",
3074
+ "aria-hidden": "true"
3075
+ }), createElementVNode("span", _hoisted_2$7, toDisplayString(shown.value || __props.placeholder), 1)], 16, _hoisted_1$7)]),
3076
+ default: withCtx(() => [createElementVNode("div", _hoisted_3$7, [createVNode(BaseListbox_default, {
3077
+ "model-value": chosenHour.value,
3078
+ options: hours.value,
3079
+ label: __props.hoursLabel,
3080
+ height: "12rem",
3081
+ "onUpdate:modelValue": pickHour
3082
+ }, null, 8, [
3083
+ "model-value",
3084
+ "options",
3085
+ "label"
3086
+ ]), createVNode(BaseListbox_default, {
3087
+ "model-value": chosenMinute.value,
3088
+ options: minutes.value,
3089
+ label: __props.minutesLabel,
3090
+ height: "12rem",
3091
+ "onUpdate:modelValue": pickMinute
3092
+ }, null, 8, [
3093
+ "model-value",
3094
+ "options",
3095
+ "label"
3096
+ ])])]),
3097
+ _: 2
3098
+ }, 1032, ["modelValue", "label"])]),
3099
+ _: 1
3100
+ }, 8, [
3101
+ "label",
3102
+ "error",
3103
+ "hint",
3104
+ "size",
3105
+ "label-hidden"
3106
+ ]);
3107
+ };
3108
+ }
3109
+ }), [["__scopeId", "data-v-0037adb2"]]);
3110
+ //#endregion
2963
3111
  //#region src/components/BaseDatePicker.vue?vue&type=script&setup=true&lang.ts
2964
- var _hoisted_1$5 = [
3112
+ var _hoisted_1$6 = [
2965
3113
  "id",
2966
3114
  "aria-describedby",
2967
3115
  "disabled"
2968
3116
  ];
2969
- var _hoisted_2$5 = { class: "truncate" };
2970
- var _hoisted_3$5 = ["aria-label", "disabled"];
2971
- var _hoisted_4$3 = { class: "rk-date-panel" };
3117
+ var _hoisted_2$6 = { class: "truncate" };
3118
+ var _hoisted_3$6 = ["aria-label", "disabled"];
3119
+ var _hoisted_4$4 = { class: "rk-date-panel" };
2972
3120
  var _hoisted_5$1 = {
2973
3121
  key: 0,
2974
3122
  class: "rk-date-presets"
@@ -3057,7 +3205,7 @@ var BaseDatePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
3057
3205
  }, props), [createVNode(unref(CalendarDays), {
3058
3206
  class: "size-4 shrink-0",
3059
3207
  "aria-hidden": "true"
3060
- }), createElementVNode("span", _hoisted_2$5, toDisplayString(shown.value || __props.placeholder), 1)], 16, _hoisted_1$5), __props.clearLabel && shown.value ? (openBlock(), createElementBlock("button", {
3208
+ }), createElementVNode("span", _hoisted_2$6, toDisplayString(shown.value || __props.placeholder), 1)], 16, _hoisted_1$6), __props.clearLabel && shown.value ? (openBlock(), createElementBlock("button", {
3061
3209
  key: 0,
3062
3210
  type: "button",
3063
3211
  class: "rk-date-clear focus-ring",
@@ -3067,8 +3215,8 @@ var BaseDatePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
3067
3215
  }, [createVNode(unref(X), {
3068
3216
  class: "size-3.5",
3069
3217
  "aria-hidden": "true"
3070
- })], 8, _hoisted_3$5)) : createCommentVNode("", true)], 2)]),
3071
- default: withCtx(() => [createElementVNode("div", _hoisted_4$3, [__props.presets?.length ? (openBlock(), createElementBlock("ul", _hoisted_5$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.presets, (preset) => {
3218
+ })], 8, _hoisted_3$6)) : createCommentVNode("", true)], 2)]),
3219
+ default: withCtx(() => [createElementVNode("div", _hoisted_4$4, [__props.presets?.length ? (openBlock(), createElementBlock("ul", _hoisted_5$1, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.presets, (preset) => {
3072
3220
  return openBlock(), createElementBlock("li", { key: preset.label }, [createElementVNode("button", {
3073
3221
  type: "button",
3074
3222
  class: "rk-date-preset focus-ring",
@@ -3107,6 +3255,77 @@ var BaseDatePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
3107
3255
  }
3108
3256
  }), [["__scopeId", "data-v-154e27fb"]]);
3109
3257
  //#endregion
3258
+ //#region src/components/BasePopconfirm.vue?vue&type=script&setup=true&lang.ts
3259
+ var _hoisted_1$5 = { class: "rk-confirm" };
3260
+ var _hoisted_2$5 = {
3261
+ key: 0,
3262
+ class: "rk-confirm-title"
3263
+ };
3264
+ var _hoisted_3$5 = { class: "rk-confirm-message" };
3265
+ var _hoisted_4$3 = { class: "rk-confirm-actions" };
3266
+ //#endregion
3267
+ //#region src/components/BasePopconfirm.vue
3268
+ var BasePopconfirm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
3269
+ __name: "BasePopconfirm",
3270
+ props: /*@__PURE__*/ mergeModels({
3271
+ message: {},
3272
+ confirmLabel: {},
3273
+ cancelLabel: {},
3274
+ title: { default: "" },
3275
+ tone: { default: "danger" }
3276
+ }, {
3277
+ "modelValue": {
3278
+ type: Boolean,
3279
+ default: false
3280
+ },
3281
+ "modelModifiers": {}
3282
+ }),
3283
+ emits: /*@__PURE__*/ mergeModels(["confirm", "cancel"], ["update:modelValue"]),
3284
+ setup(__props, { emit: __emit }) {
3285
+ const emit = __emit;
3286
+ /** Open or closed, with `v-model`. */
3287
+ const open = useModel(__props, "modelValue");
3288
+ function confirm(close) {
3289
+ close();
3290
+ emit("confirm");
3291
+ }
3292
+ function cancel(close) {
3293
+ close();
3294
+ emit("cancel");
3295
+ }
3296
+ return (_ctx, _cache) => {
3297
+ return openBlock(), createBlock(BasePopover_default, {
3298
+ modelValue: open.value,
3299
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => open.value = $event),
3300
+ label: __props.title || __props.message,
3301
+ align: "end"
3302
+ }, {
3303
+ trigger: withCtx((slotProps) => [renderSlot(_ctx.$slots, "trigger", normalizeProps(guardReactiveProps(slotProps)), void 0, true)]),
3304
+ default: withCtx(({ close }) => [createElementVNode("div", _hoisted_1$5, [
3305
+ __props.title ? (openBlock(), createElementBlock("p", _hoisted_2$5, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
3306
+ createElementVNode("p", _hoisted_3$5, toDisplayString(__props.message), 1),
3307
+ createElementVNode("div", _hoisted_4$3, [createVNode(BaseButton_default, {
3308
+ size: "sm",
3309
+ variant: "secondary",
3310
+ onClick: ($event) => cancel(close)
3311
+ }, {
3312
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.cancelLabel), 1)]),
3313
+ _: 1
3314
+ }, 8, ["onClick"]), createVNode(BaseButton_default, {
3315
+ size: "sm",
3316
+ variant: __props.tone,
3317
+ onClick: ($event) => confirm(close)
3318
+ }, {
3319
+ default: withCtx(() => [createTextVNode(toDisplayString(__props.confirmLabel), 1)]),
3320
+ _: 1
3321
+ }, 8, ["variant", "onClick"])])
3322
+ ])]),
3323
+ _: 3
3324
+ }, 8, ["modelValue", "label"]);
3325
+ };
3326
+ }
3327
+ }), [["__scopeId", "data-v-9453e511"]]);
3328
+ //#endregion
3110
3329
  //#region src/components/ToggleGroup.vue?vue&type=script&setup=true&lang.ts
3111
3330
  var _hoisted_1$4 = ["aria-label"];
3112
3331
  var _hoisted_2$4 = [
@@ -3802,8 +4021,8 @@ function createI18nRuntime(options) {
3802
4021
  *
3803
4022
  * The fallback keeps `vitest` and `vite dev` honest, where no define runs.
3804
4023
  */
3805
- var VERSION = "2.9.0";
4024
+ var VERSION = "2.11.0";
3806
4025
  //#endregion
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 };
4026
+ 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, BasePopconfirm_default as BasePopconfirm, 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, DescriptionList_default as DescriptionList, 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, TimePicker_default as TimePicker, 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 };
3808
4027
 
3809
4028
  //# sourceMappingURL=index.js.map