rei-kit 2.18.1 → 2.20.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
@@ -3,7 +3,7 @@ import { n as formatNumber, r as setFormatLocale, t as formatDate } from "./form
3
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
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 BaseSkeleton_default, r as useMediaQuery, t as BaseListbox_default } from "./BaseListbox-BnaHlmMN.js";
6
+ import { i as useMediaQuery, n as BaseSkeleton_default, r as useMenuKeys, t as BaseListbox_default } from "./BaseListbox-Btibgnaf.js";
7
7
  import { t as _plugin_vue_export_helper_default } from "./_plugin-vue_export-helper-BOaGB7Aw.js";
8
8
  import { t as BaseButton_default } from "./BaseButton-RN2an975.js";
9
9
  import { t as SettingsRow_default } from "./SettingsRow-Ct1p2C9Q.js";
@@ -348,17 +348,17 @@ function useDragScroll(target) {
348
348
  }
349
349
  //#endregion
350
350
  //#region src/components/BaseAvatar.vue?vue&type=script&setup=true&lang.ts
351
- var _hoisted_1$43 = [
351
+ var _hoisted_1$45 = [
352
352
  "role",
353
353
  "aria-label",
354
354
  "aria-hidden"
355
355
  ];
356
- var _hoisted_2$37 = ["src"];
357
- var _hoisted_3$24 = {
356
+ var _hoisted_2$39 = ["src"];
357
+ var _hoisted_3$26 = {
358
358
  key: 1,
359
359
  class: "rk-avatar-initials"
360
360
  };
361
- var _hoisted_4$19 = {
361
+ var _hoisted_4$20 = {
362
362
  key: 2,
363
363
  viewBox: "0 0 20 20",
364
364
  class: "rk-avatar-figure",
@@ -404,7 +404,7 @@ var BaseAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
404
404
  alt: "",
405
405
  class: "rk-avatar-img",
406
406
  onError: _cache[0] || (_cache[0] = ($event) => broken.value = true)
407
- }, null, 40, _hoisted_2$37)) : __props.fallback === "initials" && initials.value ? (openBlock(), createElementBlock("span", _hoisted_3$24, toDisplayString(initials.value), 1)) : (openBlock(), createElementBlock("svg", _hoisted_4$19, [..._cache[1] || (_cache[1] = [createElementVNode("circle", {
407
+ }, null, 40, _hoisted_2$39)) : __props.fallback === "initials" && initials.value ? (openBlock(), createElementBlock("span", _hoisted_3$26, toDisplayString(initials.value), 1)) : (openBlock(), createElementBlock("svg", _hoisted_4$20, [..._cache[1] || (_cache[1] = [createElementVNode("circle", {
408
408
  cx: "10",
409
409
  cy: "6.75",
410
410
  r: "3.25",
@@ -413,7 +413,7 @@ var BaseAvatar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
413
413
  d: "M3.75 17c0-3.05 2.8-5.25 6.25-5.25S16.25 13.95 16.25 17",
414
414
  "stroke-width": "1.5",
415
415
  "stroke-linecap": "round"
416
- }, null, -1)])]))], 10, _hoisted_1$43);
416
+ }, null, -1)])]))], 10, _hoisted_1$45);
417
417
  };
418
418
  }
419
419
  }), [["__scopeId", "data-v-47586bec"]]);
@@ -438,12 +438,12 @@ var BaseBadge_default = /* @__PURE__ */ defineComponent({
438
438
  });
439
439
  //#endregion
440
440
  //#region src/components/BaseMenu.vue?vue&type=script&setup=true&lang.ts
441
- var _hoisted_1$42 = [
441
+ var _hoisted_1$44 = [
442
442
  "aria-label",
443
443
  "aria-expanded",
444
444
  "aria-controls"
445
445
  ];
446
- var _hoisted_2$36 = ["id"];
446
+ var _hoisted_2$38 = ["id"];
447
447
  //#endregion
448
448
  //#region src/components/BaseMenu.vue
449
449
  var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -465,18 +465,10 @@ var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
465
465
  const panel = ref(null);
466
466
  const trigger = ref(null);
467
467
  const id = useId();
468
- function items() {
469
- if (!panel.value) return [];
470
- return Array.from(panel.value.querySelectorAll("[role=\"menuitem\"]"));
471
- }
472
- function focusAt(index) {
473
- const list = items();
474
- if (list.length === 0) return;
475
- list[(index + list.length) % list.length]?.focus();
476
- }
477
- function currentIndex() {
478
- return items().indexOf(document.activeElement);
479
- }
468
+ const { items: menuItems, onKeydown: onMenuKeydown } = useMenuKeys({
469
+ panel,
470
+ onClose: () => open.value = false
471
+ });
480
472
  function onKeydown(event) {
481
473
  if (!open.value) {
482
474
  if (event.key === "ArrowDown" || event.key === "ArrowUp") {
@@ -485,29 +477,7 @@ var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
485
477
  }
486
478
  return;
487
479
  }
488
- switch (event.key) {
489
- case "Escape":
490
- event.preventDefault();
491
- open.value = false;
492
- break;
493
- case "ArrowDown":
494
- event.preventDefault();
495
- focusAt(currentIndex() + 1);
496
- break;
497
- case "ArrowUp":
498
- event.preventDefault();
499
- focusAt(currentIndex() - 1);
500
- break;
501
- case "Home":
502
- event.preventDefault();
503
- focusAt(0);
504
- break;
505
- case "End":
506
- event.preventDefault();
507
- focusAt(items().length - 1);
508
- break;
509
- case "Tab": open.value = false;
510
- }
480
+ onMenuKeydown(event);
511
481
  }
512
482
  function onDocumentPointer(event) {
513
483
  if (root.value && !root.value.contains(event.target)) open.value = false;
@@ -517,7 +487,7 @@ var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
517
487
  if (isOpen) {
518
488
  document.addEventListener("pointerdown", onDocumentPointer);
519
489
  await nextTick();
520
- items()[0]?.focus();
490
+ menuItems()[0]?.focus();
521
491
  } else {
522
492
  document.removeEventListener("pointerdown", onDocumentPointer);
523
493
  if (root.value?.contains(document.activeElement)) trigger.value?.focus();
@@ -542,17 +512,17 @@ var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
542
512
  "aria-haspopup": true,
543
513
  "aria-controls": open.value ? unref(id) : void 0,
544
514
  onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)
545
- }, [renderSlot(_ctx.$slots, "trigger", { open: open.value }, void 0, true)], 8, _hoisted_1$42), open.value ? (openBlock(), createElementBlock("div", {
515
+ }, [renderSlot(_ctx.$slots, "trigger", { open: open.value }, void 0, true)], 8, _hoisted_1$44), open.value ? (openBlock(), createElementBlock("div", {
546
516
  key: 0,
547
517
  id: unref(id),
548
518
  ref_key: "panel",
549
519
  ref: panel,
550
520
  class: normalizeClass(["rk-menu-panel surface-overlay", `is-${__props.align}`]),
551
521
  role: "menu"
552
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 10, _hoisted_2$36)) : createCommentVNode("", true)], 544);
522
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 10, _hoisted_2$38)) : createCommentVNode("", true)], 544);
553
523
  };
554
524
  }
555
- }), [["__scopeId", "data-v-e57ec901"]]);
525
+ }), [["__scopeId", "data-v-ee62de72"]]);
556
526
  //#endregion
557
527
  //#region src/components/BaseCard.vue
558
528
  var BaseCard_default = /* @__PURE__ */ defineComponent({
@@ -620,13 +590,13 @@ var BaseCard_default = /* @__PURE__ */ defineComponent({
620
590
  });
621
591
  //#endregion
622
592
  //#region src/components/BaseCombobox.vue?vue&type=script&setup=true&lang.ts
623
- var _hoisted_1$41 = ["for"];
624
- var _hoisted_2$35 = [
593
+ var _hoisted_1$43 = ["for"];
594
+ var _hoisted_2$37 = [
625
595
  "aria-label",
626
596
  "disabled",
627
597
  "onClick"
628
598
  ];
629
- var _hoisted_3$23 = [
599
+ var _hoisted_3$25 = [
630
600
  "id",
631
601
  "placeholder",
632
602
  "disabled",
@@ -635,13 +605,13 @@ var _hoisted_3$23 = [
635
605
  "aria-invalid",
636
606
  "aria-describedby"
637
607
  ];
638
- var _hoisted_4$18 = ["disabled"];
639
- var _hoisted_5$11 = [
608
+ var _hoisted_4$19 = ["disabled"];
609
+ var _hoisted_5$12 = [
640
610
  "aria-label",
641
611
  "aria-multiselectable",
642
612
  "aria-busy"
643
613
  ];
644
- var _hoisted_6$6 = [
614
+ var _hoisted_6$7 = [
645
615
  "id",
646
616
  "aria-selected",
647
617
  "aria-setsize",
@@ -871,7 +841,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
871
841
  createElementVNode("label", {
872
842
  for: unref(id),
873
843
  class: "rk-combo-label"
874
- }, toDisplayString(__props.label), 9, _hoisted_1$41),
844
+ }, toDisplayString(__props.label), 9, _hoisted_1$43),
875
845
  createElementVNode("div", { class: normalizeClass(["rk-combo-field", multiple.value ? "is-multiple control" : ""]) }, [
876
846
  (openBlock(true), createElementBlock(Fragment, null, renderList(multiple.value ? chosenOptions.value : [], (option) => {
877
847
  return openBlock(), createElementBlock("span", {
@@ -884,7 +854,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
884
854
  "aria-label": __props.removeLabel(option.label),
885
855
  disabled: __props.disabled,
886
856
  onClick: ($event) => remove(option.value)
887
- }, " × ", 8, _hoisted_2$35)) : createCommentVNode("", true)]);
857
+ }, " × ", 8, _hoisted_2$37)) : createCommentVNode("", true)]);
888
858
  }), 128)),
889
859
  withDirectives(createElementVNode("input", {
890
860
  id: unref(id),
@@ -903,7 +873,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
903
873
  "aria-describedby": describedBy.value,
904
874
  onKeydown,
905
875
  onFocus: _cache[1] || (_cache[1] = ($event) => open.value = true)
906
- }, null, 42, _hoisted_3$23), [[vModelText, text.value]]),
876
+ }, null, 42, _hoisted_3$25), [[vModelText, text.value]]),
907
877
  createElementVNode("button", {
908
878
  type: "button",
909
879
  class: "rk-combo-toggle",
@@ -911,7 +881,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
911
881
  "aria-hidden": "true",
912
882
  disabled: __props.disabled,
913
883
  onClick: _cache[2] || (_cache[2] = ($event) => open.value = !open.value)
914
- }, " ▾ ", 8, _hoisted_4$18)
884
+ }, " ▾ ", 8, _hoisted_4$19)
915
885
  ], 2),
916
886
  withDirectives(createElementVNode("ul", {
917
887
  id: listId,
@@ -944,7 +914,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
944
914
  "aria-posinset": row.index + 1,
945
915
  onPointerdown: withModifiers(($event) => choose(row.option), ["prevent"]),
946
916
  onPointermove: ($event) => highlighted.value = row.index
947
- }, toDisplayString(row.option.label), 47, _hoisted_6$6);
917
+ }, toDisplayString(row.option.label), 47, _hoisted_6$7);
948
918
  }), 128)),
949
919
  padBottom.value > 0 ? (openBlock(), createElementBlock("li", {
950
920
  key: 1,
@@ -958,7 +928,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
958
928
  height: "0.75rem"
959
929
  });
960
930
  }), 64))])])) : matches.value.length === 0 ? (openBlock(), createElementBlock("li", _hoisted_10$3, toDisplayString(__props.emptyLabel), 1)) : createCommentVNode("", true)
961
- ], 40, _hoisted_5$11), [[vShow, open.value]]),
931
+ ], 40, _hoisted_5$12), [[vShow, open.value]]),
962
932
  __props.error ? (openBlock(), createElementBlock("p", {
963
933
  key: 0,
964
934
  id: errorId,
@@ -974,13 +944,13 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
974
944
  }), [["__scopeId", "data-v-aa2335fa"]]);
975
945
  //#endregion
976
946
  //#region src/components/BaseRadioGroup.vue?vue&type=script&setup=true&lang.ts
977
- var _hoisted_1$40 = ["aria-describedby"];
978
- var _hoisted_2$34 = [
947
+ var _hoisted_1$42 = ["aria-describedby"];
948
+ var _hoisted_2$36 = [
979
949
  "name",
980
950
  "value",
981
951
  "disabled"
982
952
  ];
983
- var _hoisted_3$22 = { class: "text-ink text-sm" };
953
+ var _hoisted_3$24 = { class: "text-ink text-sm" };
984
954
  //#endregion
985
955
  //#region src/components/BaseRadioGroup.vue
986
956
  var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
@@ -1024,7 +994,7 @@ var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
1024
994
  value: option.value,
1025
995
  disabled: option.disabled,
1026
996
  class: "accent-primary focus-visible:outline-primary size-4 shrink-0 focus-visible:outline-2 focus-visible:outline-offset-2"
1027
- }, null, 8, _hoisted_2$34), [[vModelRadio, unref(model)]]), createElementVNode("span", _hoisted_3$22, toDisplayString(option.label), 1)], 2);
997
+ }, null, 8, _hoisted_2$36), [[vModelRadio, unref(model)]]), createElementVNode("span", _hoisted_3$24, toDisplayString(option.label), 1)], 2);
1028
998
  }), 128)),
1029
999
  __props.error ? (openBlock(), createElementBlock("p", {
1030
1000
  key: 0,
@@ -1035,24 +1005,24 @@ var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
1035
1005
  id: hintId,
1036
1006
  class: "text-ink-soft text-xs"
1037
1007
  }, toDisplayString(__props.hint), 1)) : createCommentVNode("", true)
1038
- ], 8, _hoisted_1$40);
1008
+ ], 8, _hoisted_1$42);
1039
1009
  };
1040
1010
  }
1041
1011
  });
1042
1012
  //#endregion
1043
1013
  //#region src/components/BaseSelect.vue?vue&type=script&setup=true&lang.ts
1044
- var _hoisted_1$39 = { class: "relative" };
1045
- var _hoisted_2$33 = [
1014
+ var _hoisted_1$41 = { class: "relative" };
1015
+ var _hoisted_2$35 = [
1046
1016
  "id",
1047
1017
  "aria-invalid",
1048
1018
  "aria-describedby"
1049
1019
  ];
1050
- var _hoisted_3$21 = {
1020
+ var _hoisted_3$23 = {
1051
1021
  key: 0,
1052
1022
  value: void 0,
1053
1023
  disabled: ""
1054
1024
  };
1055
- var _hoisted_4$17 = ["value", "disabled"];
1025
+ var _hoisted_4$18 = ["value", "disabled"];
1056
1026
  //#endregion
1057
1027
  //#region src/components/BaseSelect.vue
1058
1028
  var BaseSelect_default = /* @__PURE__ */ defineComponent({
@@ -1088,7 +1058,7 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
1088
1058
  "label-hidden": __props.labelHidden,
1089
1059
  size: __props.size
1090
1060
  }, {
1091
- default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$39, [withDirectives(createElementVNode("select", {
1061
+ default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$41, [withDirectives(createElementVNode("select", {
1092
1062
  id,
1093
1063
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
1094
1064
  "aria-invalid": invalid,
@@ -1098,13 +1068,13 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
1098
1068
  __props.variant === "unstyled" ? "" : SIZE_CLASS[__props.size],
1099
1069
  __props.variant !== "unstyled" && invalid ? "border-negative" : ""
1100
1070
  ]])
1101
- }, [__props.placeholder ? (openBlock(), createElementBlock("option", _hoisted_3$21, toDisplayString(__props.placeholder), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
1071
+ }, [__props.placeholder ? (openBlock(), createElementBlock("option", _hoisted_3$23, toDisplayString(__props.placeholder), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
1102
1072
  return openBlock(), createElementBlock("option", {
1103
1073
  key: option.value,
1104
1074
  value: option.value,
1105
1075
  disabled: option.disabled
1106
- }, toDisplayString(option.label), 9, _hoisted_4$17);
1107
- }), 128))], 10, _hoisted_2$33), [[vModelSelect, model.value]]), createVNode(unref(ChevronDown), {
1076
+ }, toDisplayString(option.label), 9, _hoisted_4$18);
1077
+ }), 128))], 10, _hoisted_2$35), [[vModelSelect, model.value]]), createVNode(unref(ChevronDown), {
1108
1078
  class: "text-ink-soft pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2",
1109
1079
  "aria-hidden": "true"
1110
1080
  })])]),
@@ -1121,11 +1091,11 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
1121
1091
  });
1122
1092
  //#endregion
1123
1093
  //#region src/components/BaseSlider.vue?vue&type=script&setup=true&lang.ts
1124
- var _hoisted_1$38 = { class: "rk-slider" };
1125
- var _hoisted_2$32 = { class: "rk-slider-head" };
1126
- var _hoisted_3$20 = ["for"];
1127
- var _hoisted_4$16 = ["for"];
1128
- var _hoisted_5$10 = [
1094
+ var _hoisted_1$40 = { class: "rk-slider" };
1095
+ var _hoisted_2$34 = { class: "rk-slider-head" };
1096
+ var _hoisted_3$22 = ["for"];
1097
+ var _hoisted_4$17 = ["for"];
1098
+ var _hoisted_5$11 = [
1129
1099
  "id",
1130
1100
  "min",
1131
1101
  "max",
@@ -1169,15 +1139,15 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1169
1139
  return span <= 0 ? 0 : (model.value - __props.min) / span * 100;
1170
1140
  });
1171
1141
  return (_ctx, _cache) => {
1172
- return openBlock(), createElementBlock("div", _hoisted_1$38, [
1173
- createElementVNode("div", _hoisted_2$32, [createElementVNode("label", {
1142
+ return openBlock(), createElementBlock("div", _hoisted_1$40, [
1143
+ createElementVNode("div", _hoisted_2$34, [createElementVNode("label", {
1174
1144
  for: unref(id),
1175
1145
  class: "rk-slider-label"
1176
- }, toDisplayString(__props.label), 9, _hoisted_3$20), __props.showValue ? (openBlock(), createElementBlock("output", {
1146
+ }, toDisplayString(__props.label), 9, _hoisted_3$22), __props.showValue ? (openBlock(), createElementBlock("output", {
1177
1147
  key: 0,
1178
1148
  for: unref(id),
1179
1149
  class: "rk-slider-value"
1180
- }, toDisplayString(text.value), 9, _hoisted_4$16)) : createCommentVNode("", true)]),
1150
+ }, toDisplayString(text.value), 9, _hoisted_4$17)) : createCommentVNode("", true)]),
1181
1151
  withDirectives(createElementVNode("input", {
1182
1152
  id: unref(id),
1183
1153
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
@@ -1190,7 +1160,7 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1190
1160
  "aria-valuetext": text.value,
1191
1161
  "aria-describedby": __props.hint ? hintId : void 0,
1192
1162
  style: normalizeStyle({ "--rk-slider-filled": `${filled.value}%` })
1193
- }, null, 12, _hoisted_5$10), [[
1163
+ }, null, 12, _hoisted_5$11), [[
1194
1164
  vModelText,
1195
1165
  model.value,
1196
1166
  void 0,
@@ -1207,8 +1177,8 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1207
1177
  }), [["__scopeId", "data-v-7fa2769b"]]);
1208
1178
  //#endregion
1209
1179
  //#region src/components/NumberInput.vue?vue&type=script&setup=true&lang.ts
1210
- var _hoisted_1$37 = ["aria-label", "disabled"];
1211
- var _hoisted_2$31 = [
1180
+ var _hoisted_1$39 = ["aria-label", "disabled"];
1181
+ var _hoisted_2$33 = [
1212
1182
  "id",
1213
1183
  "value",
1214
1184
  "aria-valuenow",
@@ -1218,7 +1188,7 @@ var _hoisted_2$31 = [
1218
1188
  "aria-describedby",
1219
1189
  "disabled"
1220
1190
  ];
1221
- var _hoisted_3$19 = ["aria-label", "disabled"];
1191
+ var _hoisted_3$21 = ["aria-label", "disabled"];
1222
1192
  //#endregion
1223
1193
  //#region src/components/NumberInput.vue
1224
1194
  var NumberInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1321,7 +1291,7 @@ var NumberInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1321
1291
  }, [createVNode(unref(Minus), {
1322
1292
  class: "size-4",
1323
1293
  "aria-hidden": "true"
1324
- })], 8, _hoisted_1$37),
1294
+ })], 8, _hoisted_1$39),
1325
1295
  createElementVNode("input", {
1326
1296
  id,
1327
1297
  value: draft.value,
@@ -1339,7 +1309,7 @@ var NumberInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1339
1309
  onInput,
1340
1310
  onBlur: commit,
1341
1311
  onKeydown
1342
- }, null, 40, _hoisted_2$31),
1312
+ }, null, 40, _hoisted_2$33),
1343
1313
  createElementVNode("button", {
1344
1314
  type: "button",
1345
1315
  class: "rk-number-step focus-ring",
@@ -1350,7 +1320,7 @@ var NumberInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1350
1320
  }, [createVNode(unref(Plus), {
1351
1321
  class: "size-4",
1352
1322
  "aria-hidden": "true"
1353
- })], 8, _hoisted_3$19)
1323
+ })], 8, _hoisted_3$21)
1354
1324
  ], 2)]),
1355
1325
  _: 1
1356
1326
  }, 8, [
@@ -1365,7 +1335,7 @@ var NumberInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1365
1335
  }), [["__scopeId", "data-v-082bd3d7"]]);
1366
1336
  //#endregion
1367
1337
  //#region src/components/SliderField.vue?vue&type=script&setup=true&lang.ts
1368
- var _hoisted_1$36 = { class: "rk-slider-field" };
1338
+ var _hoisted_1$38 = { class: "rk-slider-field" };
1369
1339
  //#endregion
1370
1340
  //#region src/components/SliderField.vue
1371
1341
  var SliderField_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1406,7 +1376,7 @@ var SliderField_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1406
1376
  }
1407
1377
  });
1408
1378
  return (_ctx, _cache) => {
1409
- return openBlock(), createElementBlock("div", _hoisted_1$36, [createVNode(BaseSlider_default, {
1379
+ return openBlock(), createElementBlock("div", _hoisted_1$38, [createVNode(BaseSlider_default, {
1410
1380
  modelValue: model.value,
1411
1381
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
1412
1382
  label: __props.label,
@@ -1454,11 +1424,11 @@ var SliderField_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1454
1424
  }), [["__scopeId", "data-v-6ec3163a"]]);
1455
1425
  //#endregion
1456
1426
  //#region src/components/BaseSpinner.vue?vue&type=script&setup=true&lang.ts
1457
- var _hoisted_1$35 = {
1427
+ var _hoisted_1$37 = {
1458
1428
  class: "rk-spin-wrap",
1459
1429
  role: "status"
1460
1430
  };
1461
- var _hoisted_2$30 = { class: "rk-spin-label" };
1431
+ var _hoisted_2$32 = { class: "rk-spin-label" };
1462
1432
  //#endregion
1463
1433
  //#region src/components/BaseSpinner.vue
1464
1434
  var BaseSpinner_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1486,26 +1456,26 @@ var BaseSpinner_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
1486
1456
  lg: "2.5rem"
1487
1457
  };
1488
1458
  return (_ctx, _cache) => {
1489
- return openBlock(), createElementBlock("span", _hoisted_1$35, [createElementVNode("span", {
1459
+ return openBlock(), createElementBlock("span", _hoisted_1$37, [createElementVNode("span", {
1490
1460
  class: "rk-spin",
1491
1461
  style: normalizeStyle({
1492
1462
  width: SIZES[__props.size],
1493
1463
  height: SIZES[__props.size]
1494
1464
  }),
1495
1465
  "aria-hidden": "true"
1496
- }, null, 4), createElementVNode("span", _hoisted_2$30, toDisplayString(__props.label), 1)]);
1466
+ }, null, 4), createElementVNode("span", _hoisted_2$32, toDisplayString(__props.label), 1)]);
1497
1467
  };
1498
1468
  }
1499
1469
  }), [["__scopeId", "data-v-842da62c"]]);
1500
1470
  //#endregion
1501
1471
  //#region src/components/BaseSwitch.vue?vue&type=script&setup=true&lang.ts
1502
- var _hoisted_1$34 = { class: "flex items-center justify-between gap-4" };
1503
- var _hoisted_2$29 = {
1472
+ var _hoisted_1$36 = { class: "flex items-center justify-between gap-4" };
1473
+ var _hoisted_2$31 = {
1504
1474
  key: 0,
1505
1475
  class: "min-w-0"
1506
1476
  };
1507
- var _hoisted_3$18 = ["id"];
1508
- var _hoisted_4$15 = [
1477
+ var _hoisted_3$20 = ["id"];
1478
+ var _hoisted_4$16 = [
1509
1479
  "aria-checked",
1510
1480
  "aria-labelledby",
1511
1481
  "aria-label",
@@ -1544,10 +1514,10 @@ var BaseSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1544
1514
  if (!__props.disabled) model.value = !model.value;
1545
1515
  }
1546
1516
  return (_ctx, _cache) => {
1547
- return openBlock(), createElementBlock("div", _hoisted_1$34, [!__props.labelHidden ? (openBlock(), createElementBlock("span", _hoisted_2$29, [createElementVNode("span", {
1517
+ return openBlock(), createElementBlock("div", _hoisted_1$36, [!__props.labelHidden ? (openBlock(), createElementBlock("span", _hoisted_2$31, [createElementVNode("span", {
1548
1518
  id: unref(id),
1549
1519
  class: "text-ink block text-sm"
1550
- }, toDisplayString(__props.label), 9, _hoisted_3$18), __props.hint ? (openBlock(), createElementBlock("span", {
1520
+ }, toDisplayString(__props.label), 9, _hoisted_3$20), __props.hint ? (openBlock(), createElementBlock("span", {
1551
1521
  key: 0,
1552
1522
  id: hintId,
1553
1523
  class: "text-ink-soft mt-0.5 block text-xs"
@@ -1564,17 +1534,17 @@ var BaseSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1564
1534
  }, [..._cache[0] || (_cache[0] = [createElementVNode("span", {
1565
1535
  class: "rk-switch-knob",
1566
1536
  "aria-hidden": "true"
1567
- }, null, -1)])], 10, _hoisted_4$15)]);
1537
+ }, null, -1)])], 10, _hoisted_4$16)]);
1568
1538
  };
1569
1539
  }
1570
1540
  }), [["__scopeId", "data-v-3f4400a0"]]);
1571
1541
  //#endregion
1572
1542
  //#region src/components/BaseTable.vue?vue&type=script&setup=true&lang.ts
1573
- var _hoisted_1$33 = ["aria-label"];
1574
- var _hoisted_2$28 = { class: "rk-table" };
1575
- var _hoisted_3$17 = { key: 0 };
1576
- var _hoisted_4$14 = { key: 1 };
1577
- var _hoisted_5$9 = ["colspan"];
1543
+ var _hoisted_1$35 = ["aria-label"];
1544
+ var _hoisted_2$30 = { class: "rk-table" };
1545
+ var _hoisted_3$19 = { key: 0 };
1546
+ var _hoisted_4$15 = { key: 1 };
1547
+ var _hoisted_5$10 = ["colspan"];
1578
1548
  //#endregion
1579
1549
  //#region src/components/BaseTable.vue
1580
1550
  var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1597,7 +1567,7 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1597
1567
  tabindex: "0",
1598
1568
  role: "region",
1599
1569
  "aria-label": __props.caption
1600
- }, [createElementVNode("table", _hoisted_2$28, [
1570
+ }, [createElementVNode("table", _hoisted_2$30, [
1601
1571
  createElementVNode("caption", { class: normalizeClass(__props.captionHidden ? "rk-table-caption-hidden" : "rk-table-caption") }, toDisplayString(__props.caption), 3),
1602
1572
  createElementVNode("thead", null, [createElementVNode("tr", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
1603
1573
  return openBlock(), createElementBlock("th", {
@@ -1606,7 +1576,7 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1606
1576
  class: normalizeClass([column.align && `is-${column.align}`, column.nowrap && "is-nowrap"])
1607
1577
  }, toDisplayString(column.label), 3);
1608
1578
  }), 128))])]),
1609
- __props.rows.length > 0 ? (openBlock(), createElementBlock("tbody", _hoisted_3$17, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row, index) => {
1579
+ __props.rows.length > 0 ? (openBlock(), createElementBlock("tbody", _hoisted_3$19, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row, index) => {
1610
1580
  return openBlock(), createElementBlock("tr", { key: keyFor(row, index) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.columns, (column) => {
1611
1581
  return openBlock(), createElementBlock("td", {
1612
1582
  key: column.key,
@@ -1616,17 +1586,17 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1616
1586
  value: row[column.key]
1617
1587
  }, () => [createTextVNode(toDisplayString(row[column.key]), 1)], true)], 2);
1618
1588
  }), 128))]);
1619
- }), 128))])) : (openBlock(), createElementBlock("tbody", _hoisted_4$14, [createElementVNode("tr", null, [createElementVNode("td", {
1589
+ }), 128))])) : (openBlock(), createElementBlock("tbody", _hoisted_4$15, [createElementVNode("tr", null, [createElementVNode("td", {
1620
1590
  colspan: __props.columns.length,
1621
1591
  class: "rk-table-empty"
1622
- }, [renderSlot(_ctx.$slots, "empty", {}, void 0, true)], 8, _hoisted_5$9)])]))
1623
- ])], 8, _hoisted_1$33);
1592
+ }, [renderSlot(_ctx.$slots, "empty", {}, void 0, true)], 8, _hoisted_5$10)])]))
1593
+ ])], 8, _hoisted_1$35);
1624
1594
  };
1625
1595
  }
1626
1596
  }), [["__scopeId", "data-v-ab10e9fa"]]);
1627
1597
  //#endregion
1628
1598
  //#region src/components/BaseTextarea.vue?vue&type=script&setup=true&lang.ts
1629
- var _hoisted_1$32 = [
1599
+ var _hoisted_1$34 = [
1630
1600
  "id",
1631
1601
  "rows",
1632
1602
  "aria-invalid",
@@ -1672,7 +1642,7 @@ var BaseTextarea_default = /* @__PURE__ */ defineComponent({
1672
1642
  __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",
1673
1643
  "text-base",
1674
1644
  __props.variant !== "unstyled" && invalid ? "border-negative" : ""
1675
- ] }), null, 16, _hoisted_1$32), [[vModelText, unref(model)]])]),
1645
+ ] }), null, 16, _hoisted_1$34), [[vModelText, unref(model)]])]),
1676
1646
  _: 1
1677
1647
  }, 8, [
1678
1648
  "label",
@@ -1686,17 +1656,17 @@ var BaseTextarea_default = /* @__PURE__ */ defineComponent({
1686
1656
  });
1687
1657
  //#endregion
1688
1658
  //#region src/components/EmptyState.vue?vue&type=script&setup=true&lang.ts
1689
- var _hoisted_1$31 = { class: "flex flex-col items-center gap-3 px-6 py-10 text-center" };
1690
- var _hoisted_2$27 = {
1659
+ var _hoisted_1$33 = { class: "flex flex-col items-center gap-3 px-6 py-10 text-center" };
1660
+ var _hoisted_2$29 = {
1691
1661
  key: 0,
1692
1662
  class: "bg-muted text-primary rounded-card flex size-12 items-center justify-center"
1693
1663
  };
1694
- var _hoisted_3$16 = { class: "text-ink text-base font-semibold" };
1695
- var _hoisted_4$13 = {
1664
+ var _hoisted_3$18 = { class: "text-ink text-base font-semibold" };
1665
+ var _hoisted_4$14 = {
1696
1666
  key: 1,
1697
1667
  class: "text-ink-soft max-w-[36ch] text-sm"
1698
1668
  };
1699
- var _hoisted_5$8 = {
1669
+ var _hoisted_5$9 = {
1700
1670
  key: 2,
1701
1671
  class: "mt-2 flex w-full flex-col gap-2"
1702
1672
  };
@@ -1718,11 +1688,11 @@ var EmptyState_default = /* @__PURE__ */ defineComponent({
1718
1688
  * goes — the button that creates the first one.
1719
1689
  */
1720
1690
  return (_ctx, _cache) => {
1721
- return openBlock(), createElementBlock("div", _hoisted_1$31, [
1722
- _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$27, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
1723
- createElementVNode("h3", _hoisted_3$16, toDisplayString(__props.title), 1),
1724
- __props.description ? (openBlock(), createElementBlock("p", _hoisted_4$13, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
1725
- _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5$8, [renderSlot(_ctx.$slots, "action")])) : createCommentVNode("", true)
1691
+ return openBlock(), createElementBlock("div", _hoisted_1$33, [
1692
+ _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$29, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
1693
+ createElementVNode("h3", _hoisted_3$18, toDisplayString(__props.title), 1),
1694
+ __props.description ? (openBlock(), createElementBlock("p", _hoisted_4$14, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
1695
+ _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5$9, [renderSlot(_ctx.$slots, "action")])) : createCommentVNode("", true)
1726
1696
  ]);
1727
1697
  };
1728
1698
  }
@@ -1789,11 +1759,11 @@ var PageContainer_default = /* @__PURE__ */ defineComponent({
1789
1759
  });
1790
1760
  //#endregion
1791
1761
  //#region src/components/PageHeader.vue?vue&type=script&setup=true&lang.ts
1792
- var _hoisted_1$30 = { class: "grid h-12 shrink-0 grid-cols-[2.5rem_1fr_2.5rem] items-center" };
1793
- var _hoisted_2$26 = { class: "justify-self-start" };
1794
- var _hoisted_3$15 = { class: "text-ink flex min-w-0 justify-center text-base font-semibold tabular-nums" };
1795
- var _hoisted_4$12 = { class: "truncate" };
1796
- var _hoisted_5$7 = { class: "justify-self-end" };
1762
+ var _hoisted_1$32 = { class: "grid h-12 shrink-0 grid-cols-[2.5rem_1fr_2.5rem] items-center" };
1763
+ var _hoisted_2$28 = { class: "justify-self-start" };
1764
+ var _hoisted_3$17 = { class: "text-ink flex min-w-0 justify-center text-base font-semibold tabular-nums" };
1765
+ var _hoisted_4$13 = { class: "truncate" };
1766
+ var _hoisted_5$8 = { class: "justify-self-end" };
1797
1767
  //#endregion
1798
1768
  //#region src/components/PageHeader.vue
1799
1769
  var PageHeader_default = /* @__PURE__ */ defineComponent({
@@ -1810,17 +1780,17 @@ var PageHeader_default = /* @__PURE__ */ defineComponent({
1810
1780
  * each other.
1811
1781
  */
1812
1782
  return (_ctx, _cache) => {
1813
- return openBlock(), createElementBlock("header", _hoisted_1$30, [
1814
- createElementVNode("div", _hoisted_2$26, [renderSlot(_ctx.$slots, "left")]),
1815
- createElementVNode("h1", _hoisted_3$15, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", _hoisted_4$12, toDisplayString(__props.title), 1)])]),
1816
- createElementVNode("div", _hoisted_5$7, [renderSlot(_ctx.$slots, "right")])
1783
+ return openBlock(), createElementBlock("header", _hoisted_1$32, [
1784
+ createElementVNode("div", _hoisted_2$28, [renderSlot(_ctx.$slots, "left")]),
1785
+ createElementVNode("h1", _hoisted_3$17, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", _hoisted_4$13, toDisplayString(__props.title), 1)])]),
1786
+ createElementVNode("div", _hoisted_5$8, [renderSlot(_ctx.$slots, "right")])
1817
1787
  ]);
1818
1788
  };
1819
1789
  }
1820
1790
  });
1821
1791
  //#endregion
1822
1792
  //#region src/components/ProgressBar.vue?vue&type=script&setup=true&lang.ts
1823
- var _hoisted_1$29 = ["aria-valuenow", "aria-label"];
1793
+ var _hoisted_1$31 = ["aria-valuenow", "aria-label"];
1824
1794
  //#endregion
1825
1795
  //#region src/components/ProgressBar.vue
1826
1796
  var ProgressBar_default = /* @__PURE__ */ defineComponent({
@@ -1852,24 +1822,24 @@ var ProgressBar_default = /* @__PURE__ */ defineComponent({
1852
1822
  }, [createElementVNode("div", {
1853
1823
  class: "bg-primary h-full rounded-full transition-[width] duration-700 ease-out",
1854
1824
  style: normalizeStyle({ width: `${portion.value}%` })
1855
- }, null, 4)], 10, _hoisted_1$29);
1825
+ }, null, 4)], 10, _hoisted_1$31);
1856
1826
  };
1857
1827
  }
1858
1828
  });
1859
1829
  //#endregion
1860
1830
  //#region src/components/PriceCard.vue?vue&type=script&setup=true&lang.ts
1861
- var _hoisted_1$28 = {
1831
+ var _hoisted_1$30 = {
1862
1832
  key: 0,
1863
1833
  class: "bg-primary rounded-cell text-on-primary absolute -top-3 left-7 px-3 py-1 text-[0.7rem] font-semibold"
1864
1834
  };
1865
- var _hoisted_2$25 = { class: "flex items-start justify-between gap-4" };
1866
- var _hoisted_3$14 = { class: "text-ink mt-5 text-lg font-semibold" };
1867
- var _hoisted_4$11 = {
1835
+ var _hoisted_2$27 = { class: "flex items-start justify-between gap-4" };
1836
+ var _hoisted_3$16 = { class: "text-ink mt-5 text-lg font-semibold" };
1837
+ var _hoisted_4$12 = {
1868
1838
  key: 1,
1869
1839
  class: "text-ink-soft mt-1.5 text-sm leading-relaxed"
1870
1840
  };
1871
- var _hoisted_5$6 = { class: "mt-6 flex items-baseline gap-1.5" };
1872
- var _hoisted_6$5 = { class: "text-ink text-3xl font-semibold tracking-tight tabular-nums" };
1841
+ var _hoisted_5$7 = { class: "mt-6 flex items-baseline gap-1.5" };
1842
+ var _hoisted_6$6 = { class: "text-ink text-3xl font-semibold tracking-tight tabular-nums" };
1873
1843
  var _hoisted_7$3 = {
1874
1844
  key: 0,
1875
1845
  class: "text-ink-soft text-sm"
@@ -1933,17 +1903,17 @@ var PriceCard_default = /* @__PURE__ */ defineComponent({
1933
1903
  const palette = computed(() => TONE[__props.tone]);
1934
1904
  return (_ctx, _cache) => {
1935
1905
  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"]]) }, [
1936
- __props.badge && __props.recommended ? (openBlock(), createElementBlock("span", _hoisted_1$28, toDisplayString(__props.badge), 1)) : createCommentVNode("", true),
1937
- createElementVNode("div", _hoisted_2$25, [_ctx.$slots.icon ? (openBlock(), createElementBlock("span", {
1906
+ __props.badge && __props.recommended ? (openBlock(), createElementBlock("span", _hoisted_1$30, toDisplayString(__props.badge), 1)) : createCommentVNode("", true),
1907
+ createElementVNode("div", _hoisted_2$27, [_ctx.$slots.icon ? (openBlock(), createElementBlock("span", {
1938
1908
  key: 0,
1939
1909
  class: normalizeClass(["rounded-card grid size-11 place-items-center text-xl", palette.value.icon])
1940
1910
  }, [renderSlot(_ctx.$slots, "icon")], 2)) : createCommentVNode("", true), __props.chip ? (openBlock(), createElementBlock("span", {
1941
1911
  key: 1,
1942
1912
  class: normalizeClass(["rounded-cell ml-auto px-2.5 py-1 text-[0.7rem] font-medium", palette.value.soft])
1943
1913
  }, toDisplayString(__props.chip), 3)) : createCommentVNode("", true)]),
1944
- createElementVNode("h3", _hoisted_3$14, toDisplayString(__props.name), 1),
1945
- __props.lead ? (openBlock(), createElementBlock("p", _hoisted_4$11, toDisplayString(__props.lead), 1)) : createCommentVNode("", true),
1946
- createElementVNode("p", _hoisted_5$6, [createElementVNode("span", _hoisted_6$5, toDisplayString(__props.price), 1), __props.period ? (openBlock(), createElementBlock("span", _hoisted_7$3, toDisplayString(__props.period), 1)) : createCommentVNode("", true)]),
1914
+ createElementVNode("h3", _hoisted_3$16, toDisplayString(__props.name), 1),
1915
+ __props.lead ? (openBlock(), createElementBlock("p", _hoisted_4$12, toDisplayString(__props.lead), 1)) : createCommentVNode("", true),
1916
+ createElementVNode("p", _hoisted_5$7, [createElementVNode("span", _hoisted_6$6, toDisplayString(__props.price), 1), __props.period ? (openBlock(), createElementBlock("span", _hoisted_7$3, toDisplayString(__props.period), 1)) : createCommentVNode("", true)]),
1947
1917
  __props.note ? (openBlock(), createElementBlock("p", _hoisted_8$2, toDisplayString(__props.note), 1)) : createCommentVNode("", true),
1948
1918
  createElementVNode("ul", _hoisted_9$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.features, (feature) => {
1949
1919
  return openBlock(), createElementBlock("li", {
@@ -1958,8 +1928,8 @@ var PriceCard_default = /* @__PURE__ */ defineComponent({
1958
1928
  });
1959
1929
  //#endregion
1960
1930
  //#region src/components/ToneDot.vue?vue&type=script&setup=true&lang.ts
1961
- var _hoisted_1$27 = { class: "inline-flex items-center gap-1.5" };
1962
- var _hoisted_2$24 = {
1931
+ var _hoisted_1$29 = { class: "inline-flex items-center gap-1.5" };
1932
+ var _hoisted_2$26 = {
1963
1933
  key: 0,
1964
1934
  class: "text-ink-soft text-xs font-medium"
1965
1935
  };
@@ -1980,13 +1950,13 @@ var ToneDot_default = /* @__PURE__ */ defineComponent({
1980
1950
  * priorities — without this component knowing about any of them.
1981
1951
  */
1982
1952
  return (_ctx, _cache) => {
1983
- return openBlock(), createElementBlock("span", _hoisted_1$27, [createElementVNode("span", { class: normalizeClass(["size-2 rounded-full", __props.fill]) }, null, 2), __props.label ? (openBlock(), createElementBlock("span", _hoisted_2$24, toDisplayString(__props.label), 1)) : createCommentVNode("", true)]);
1953
+ return openBlock(), createElementBlock("span", _hoisted_1$29, [createElementVNode("span", { class: normalizeClass(["size-2 rounded-full", __props.fill]) }, null, 2), __props.label ? (openBlock(), createElementBlock("span", _hoisted_2$26, toDisplayString(__props.label), 1)) : createCommentVNode("", true)]);
1984
1954
  };
1985
1955
  }
1986
1956
  });
1987
1957
  //#endregion
1988
1958
  //#region src/components/SectionHeading.vue?vue&type=script&setup=true&lang.ts
1989
- var _hoisted_1$26 = {
1959
+ var _hoisted_1$28 = {
1990
1960
  key: 0,
1991
1961
  class: "text-ink-soft text-xs tabular-nums"
1992
1962
  };
@@ -2004,15 +1974,15 @@ var SectionHeading_default = /* @__PURE__ */ defineComponent({
2004
1974
  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]) }, [
2005
1975
  createVNode(ToneDot_default, { fill: __props.tone.fill }, null, 8, ["fill"]),
2006
1976
  createElementVNode("span", { class: normalizeClass(["text-xs font-semibold tracking-wide uppercase", __props.tone.text]) }, toDisplayString(__props.label), 3),
2007
- __props.count > 0 ? (openBlock(), createElementBlock("span", _hoisted_1$26, toDisplayString(__props.count), 1)) : createCommentVNode("", true)
1977
+ __props.count > 0 ? (openBlock(), createElementBlock("span", _hoisted_1$28, toDisplayString(__props.count), 1)) : createCommentVNode("", true)
2008
1978
  ], 2);
2009
1979
  };
2010
1980
  }
2011
1981
  });
2012
1982
  //#endregion
2013
1983
  //#region src/components/SegmentedControl.vue?vue&type=script&setup=true&lang.ts
2014
- var _hoisted_1$25 = { class: "bg-muted rounded-card flex w-full gap-1 p-1" };
2015
- var _hoisted_2$23 = ["value", "name"];
1984
+ var _hoisted_1$27 = { class: "bg-muted rounded-card flex w-full gap-1 p-1" };
1985
+ var _hoisted_2$25 = ["value", "name"];
2016
1986
  //#endregion
2017
1987
  //#region src/components/SegmentedControl.vue
2018
1988
  var SegmentedControl_default = /* @__PURE__ */ defineComponent({
@@ -2026,7 +1996,7 @@ var SegmentedControl_default = /* @__PURE__ */ defineComponent({
2026
1996
  const model = useModel(__props, "modelValue");
2027
1997
  const name = useId();
2028
1998
  return (_ctx, _cache) => {
2029
- return openBlock(), createElementBlock("div", _hoisted_1$25, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
1999
+ return openBlock(), createElementBlock("div", _hoisted_1$27, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
2030
2000
  return openBlock(), createElementBlock("label", {
2031
2001
  key: String(option.value),
2032
2002
  class: "flex-1 cursor-pointer"
@@ -2036,18 +2006,18 @@ var SegmentedControl_default = /* @__PURE__ */ defineComponent({
2036
2006
  value: option.value,
2037
2007
  name: unref(name),
2038
2008
  class: "peer sr-only"
2039
- }, null, 8, _hoisted_2$23), [[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)]);
2009
+ }, null, 8, _hoisted_2$25), [[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)]);
2040
2010
  }), 128))]);
2041
2011
  };
2042
2012
  }
2043
2013
  });
2044
2014
  //#endregion
2045
2015
  //#region src/components/SkeletonList.vue?vue&type=script&setup=true&lang.ts
2046
- var _hoisted_1$24 = {
2016
+ var _hoisted_1$26 = {
2047
2017
  role: "status",
2048
2018
  class: "flex flex-col gap-1"
2049
2019
  };
2050
- var _hoisted_2$22 = { class: "sr-only" };
2020
+ var _hoisted_2$24 = { class: "sr-only" };
2051
2021
  //#endregion
2052
2022
  //#region src/components/SkeletonList.vue
2053
2023
  var SkeletonList_default = /* @__PURE__ */ defineComponent({
@@ -2061,7 +2031,7 @@ var SkeletonList_default = /* @__PURE__ */ defineComponent({
2061
2031
  /** A length starts with a digit, a dot, or opens a CSS function. */
2062
2032
  const isLength = computed(() => /^(?:[.\d]|calc\(|var\(|clamp\(|min\(|max\()/.test(__props.rowHeight));
2063
2033
  return (_ctx, _cache) => {
2064
- return openBlock(), createElementBlock("div", _hoisted_1$24, [createElementVNode("span", _hoisted_2$22, toDisplayString(__props.label), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row) => {
2034
+ return openBlock(), createElementBlock("div", _hoisted_1$26, [createElementVNode("span", _hoisted_2$24, toDisplayString(__props.label), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.rows, (row) => {
2065
2035
  return openBlock(), createElementBlock("div", {
2066
2036
  key: row,
2067
2037
  class: normalizeClass(["bg-muted rounded-card animate-pulse", isLength.value ? void 0 : __props.rowHeight]),
@@ -2074,10 +2044,10 @@ var SkeletonList_default = /* @__PURE__ */ defineComponent({
2074
2044
  });
2075
2045
  //#endregion
2076
2046
  //#region src/components/StatCard.vue?vue&type=script&setup=true&lang.ts
2077
- var _hoisted_1$23 = { class: "surface rounded-card flex flex-1 flex-col gap-0.5 p-3" };
2078
- var _hoisted_2$21 = { class: "flex items-baseline gap-1" };
2079
- var _hoisted_3$13 = { class: "text-ink text-xl font-semibold tabular-nums" };
2080
- var _hoisted_4$10 = { class: "text-ink-soft text-xs" };
2047
+ var _hoisted_1$25 = { class: "surface rounded-card flex flex-1 flex-col gap-0.5 p-3" };
2048
+ var _hoisted_2$23 = { class: "flex items-baseline gap-1" };
2049
+ var _hoisted_3$15 = { class: "text-ink text-xl font-semibold tabular-nums" };
2050
+ var _hoisted_4$11 = { class: "text-ink-soft text-xs" };
2081
2051
  //#endregion
2082
2052
  //#region src/components/StatCard.vue
2083
2053
  var StatCard_default = /* @__PURE__ */ defineComponent({
@@ -2094,22 +2064,22 @@ var StatCard_default = /* @__PURE__ */ defineComponent({
2094
2064
  flat: ArrowRight
2095
2065
  };
2096
2066
  return (_ctx, _cache) => {
2097
- return openBlock(), createElementBlock("div", _hoisted_1$23, [createElementVNode("div", _hoisted_2$21, [createElementVNode("span", _hoisted_3$13, toDisplayString(__props.value), 1), __props.trend ? (openBlock(), createBlock(resolveDynamicComponent(TREND_ICON[__props.trend]), {
2067
+ return openBlock(), createElementBlock("div", _hoisted_1$25, [createElementVNode("div", _hoisted_2$23, [createElementVNode("span", _hoisted_3$15, toDisplayString(__props.value), 1), __props.trend ? (openBlock(), createBlock(resolveDynamicComponent(TREND_ICON[__props.trend]), {
2098
2068
  key: 0,
2099
2069
  class: "text-ink-soft size-3"
2100
- })) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_4$10, toDisplayString(__props.label), 1)]);
2070
+ })) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_4$11, toDisplayString(__props.label), 1)]);
2101
2071
  };
2102
2072
  }
2103
2073
  });
2104
2074
  //#endregion
2105
2075
  //#region src/components/ToastHost.vue?vue&type=script&setup=true&lang.ts
2106
- var _hoisted_1$22 = [
2076
+ var _hoisted_1$24 = [
2107
2077
  "onMouseenter",
2108
2078
  "onMouseleave",
2109
2079
  "onFocusin",
2110
2080
  "onFocusout"
2111
2081
  ];
2112
- var _hoisted_2$20 = { class: "flex-1 text-sm leading-snug" };
2082
+ var _hoisted_2$22 = { class: "flex-1 text-sm leading-snug" };
2113
2083
  //#endregion
2114
2084
  //#region src/components/ToastHost.vue
2115
2085
  var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2170,7 +2140,7 @@ var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
2170
2140
  class: normalizeClass(["mt-0.5 size-5 shrink-0", TONE_CLASS[toast.tone]]),
2171
2141
  "aria-hidden": "true"
2172
2142
  }, null, 8, ["class"])),
2173
- createElementVNode("p", _hoisted_2$20, toDisplayString(toast.message), 1),
2143
+ createElementVNode("p", _hoisted_2$22, toDisplayString(toast.message), 1),
2174
2144
  toast.action ? (openBlock(), createBlock(BaseButton_default, {
2175
2145
  key: 0,
2176
2146
  variant: "link",
@@ -2193,7 +2163,7 @@ var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
2193
2163
  default: withCtx(() => [createVNode(unref(X), { class: "size-4" })]),
2194
2164
  _: 1
2195
2165
  }, 8, ["aria-label", "onClick"])
2196
- ], 40, _hoisted_1$22);
2166
+ ], 40, _hoisted_1$24);
2197
2167
  }), 128))]),
2198
2168
  _: 1
2199
2169
  })], 2)])) : createCommentVNode("", true);
@@ -2202,8 +2172,8 @@ var ToastHost_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
2202
2172
  }), [["__scopeId", "data-v-737eb240"]]);
2203
2173
  //#endregion
2204
2174
  //#region src/components/LocaleLinks.vue?vue&type=script&setup=true&lang.ts
2205
- var _hoisted_1$21 = ["aria-label"];
2206
- var _hoisted_2$19 = [
2175
+ var _hoisted_1$23 = ["aria-label"];
2176
+ var _hoisted_2$21 = [
2207
2177
  "lang",
2208
2178
  "aria-pressed",
2209
2179
  "onClick"
@@ -2247,17 +2217,17 @@ var LocaleLinks_default = /* @__PURE__ */ defineComponent({
2247
2217
  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"]),
2248
2218
  "aria-pressed": preference.value === locale,
2249
2219
  onClick: ($event) => preference.value = locale
2250
- }, toDisplayString(__props.labels[locale]), 11, _hoisted_2$19);
2251
- }), 128))], 8, _hoisted_1$21);
2220
+ }, toDisplayString(__props.labels[locale]), 11, _hoisted_2$21);
2221
+ }), 128))], 8, _hoisted_1$23);
2252
2222
  };
2253
2223
  }
2254
2224
  });
2255
2225
  //#endregion
2256
2226
  //#region src/components/TabBar.vue?vue&type=script&setup=true&lang.ts
2257
- var _hoisted_1$20 = { class: "tab-bar" };
2258
- var _hoisted_2$18 = ["aria-label"];
2259
- var _hoisted_3$12 = { class: "tab-icon-slot" };
2260
- var _hoisted_4$9 = { class: "tab-label" };
2227
+ var _hoisted_1$22 = { class: "tab-bar" };
2228
+ var _hoisted_2$20 = ["aria-label"];
2229
+ var _hoisted_3$14 = { class: "tab-icon-slot" };
2230
+ var _hoisted_4$10 = { class: "tab-label" };
2261
2231
  //#endregion
2262
2232
  //#region src/components/TabBar.vue
2263
2233
  var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2269,7 +2239,7 @@ var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
2269
2239
  },
2270
2240
  setup(__props) {
2271
2241
  return (_ctx, _cache) => {
2272
- return openBlock(), createElementBlock("header", _hoisted_1$20, [createElementVNode("nav", {
2242
+ return openBlock(), createElementBlock("header", _hoisted_1$22, [createElementVNode("nav", {
2273
2243
  class: "tab-bar-inner",
2274
2244
  "aria-label": __props.label || void 0
2275
2245
  }, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item) => {
@@ -2280,21 +2250,204 @@ var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
2280
2250
  "aria-current": item.key === __props.active ? "page" : void 0,
2281
2251
  onClick: _cache[0] || (_cache[0] = ($event) => unref(tapFeedback)())
2282
2252
  }, {
2283
- default: withCtx(() => [createElementVNode("span", _hoisted_3$12, [(openBlock(), createBlock(resolveDynamicComponent(item.icon), { class: "tab-icon" }))]), createElementVNode("span", _hoisted_4$9, toDisplayString(item.label), 1)]),
2253
+ default: withCtx(() => [createElementVNode("span", _hoisted_3$14, [(openBlock(), createBlock(resolveDynamicComponent(item.icon), { class: "tab-icon" }))]), createElementVNode("span", _hoisted_4$10, toDisplayString(item.label), 1)]),
2284
2254
  _: 2
2285
2255
  }, 1032, [
2286
2256
  "to",
2287
2257
  "class",
2288
2258
  "aria-current"
2289
2259
  ]);
2290
- }), 128))], 8, _hoisted_2$18)]);
2260
+ }), 128))], 8, _hoisted_2$20)]);
2291
2261
  };
2292
2262
  }
2293
2263
  }), [["__scopeId", "data-v-a76891c4"]]);
2294
2264
  //#endregion
2265
+ //#region src/components/ActivityGrid.vue?vue&type=script&setup=true&lang.ts
2266
+ var _hoisted_1$21 = ["aria-label"];
2267
+ var _hoisted_2$19 = ["colspan"];
2268
+ var _hoisted_3$13 = {
2269
+ scope: "row",
2270
+ class: "rk-activity-weekday"
2271
+ };
2272
+ var _hoisted_4$9 = { class: "sr-only" };
2273
+ var _hoisted_5$6 = ["tabindex", "aria-label"];
2274
+ var _hoisted_6$5 = {
2275
+ key: 1,
2276
+ class: "rk-activity-cell is-blank",
2277
+ "aria-hidden": "true"
2278
+ };
2279
+ //#endregion
2280
+ //#region src/components/ActivityGrid.vue
2281
+ var ActivityGrid_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2282
+ __name: "ActivityGrid",
2283
+ props: {
2284
+ days: {},
2285
+ label: {},
2286
+ levelFor: { type: Function },
2287
+ dayLabel: { type: Function },
2288
+ isSelectable: {
2289
+ type: Function,
2290
+ default: void 0
2291
+ },
2292
+ weekStartsOn: { default: 1 },
2293
+ startAtEnd: {
2294
+ type: Boolean,
2295
+ default: true
2296
+ }
2297
+ },
2298
+ emits: ["select"],
2299
+ setup(__props, { emit: __emit }) {
2300
+ const emit = __emit;
2301
+ const scroller = useTemplateRef("scroller");
2302
+ const grid = useTemplateRef("grid");
2303
+ /** Where the keyboard is: an index into `cells`, not a date. */
2304
+ const focused = ref(0);
2305
+ const weeks = computed(() => {
2306
+ if (__props.days.length === 0) return [];
2307
+ const first = __props.days[0];
2308
+ const lead = (fromDateKey(first).getDay() - __props.weekStartsOn + 7) % 7;
2309
+ const slots = [...Array.from({ length: lead }, () => null), ...__props.days];
2310
+ while (slots.length % 7 !== 0) slots.push(null);
2311
+ return Array.from({ length: slots.length / 7 }, (_, week) => slots.slice(week * 7, week * 7 + 7));
2312
+ });
2313
+ /** The weekday names, in the app's locale, starting on the chosen day. */
2314
+ const weekdays = computed(() => Array.from({ length: 7 }, (_, row) => {
2315
+ const date = new Date(2024, 0, 7);
2316
+ date.setDate(date.getDate() + (row + __props.weekStartsOn) % 7);
2317
+ return formatDate(date, { weekday: "long" });
2318
+ }));
2319
+ /**
2320
+ * A month heading per run of weeks.
2321
+ *
2322
+ * A week is counted under the month its first real day falls in, so a week
2323
+ * split across two months does not give the later one a heading of its own
2324
+ * one column wide.
2325
+ */
2326
+ const months = computed(() => {
2327
+ const runs = [];
2328
+ for (const week of weeks.value) {
2329
+ const day = week.find((one) => one !== null);
2330
+ if (!day) continue;
2331
+ const key = day.slice(0, 7);
2332
+ const last = runs.at(-1);
2333
+ if (last?.key === key) last.span += 1;
2334
+ else runs.push({
2335
+ key,
2336
+ label: formatDate(fromDateKey(day), { month: "short" }),
2337
+ span: 1
2338
+ });
2339
+ }
2340
+ return runs;
2341
+ });
2342
+ /** Every real day, in reading order, which is what the arrows walk. */
2343
+ const cells = computed(() => weeks.value.flatMap((week, column) => week.flatMap((day, row) => day === null ? [] : [{
2344
+ day,
2345
+ column,
2346
+ row
2347
+ }])));
2348
+ const dayAttrs = (day) => ({ "data-day": day });
2349
+ const indexOf = (day) => cells.value.findIndex((cell) => cell.day === day);
2350
+ function moveTo(index) {
2351
+ const next = Math.max(0, Math.min(cells.value.length - 1, index));
2352
+ focused.value = next;
2353
+ nextTick(() => {
2354
+ grid.value?.querySelector("[tabindex=\"0\"]")?.focus();
2355
+ });
2356
+ }
2357
+ /** Steps a whole column, which is a week, in reading order. */
2358
+ function step(by) {
2359
+ const here = cells.value[focused.value];
2360
+ if (!here) return;
2361
+ const wanted = {
2362
+ column: here.column + by,
2363
+ row: here.row
2364
+ };
2365
+ const found = cells.value.findIndex((cell) => cell.column === wanted.column && cell.row === wanted.row);
2366
+ if (found !== -1) moveTo(found);
2367
+ }
2368
+ function choose(day) {
2369
+ if (__props.isSelectable?.(day)) emit("select", day);
2370
+ }
2371
+ function onKeydown(event) {
2372
+ const here = cells.value[focused.value];
2373
+ if (!here) return;
2374
+ switch (event.key) {
2375
+ case "ArrowUp":
2376
+ event.preventDefault();
2377
+ moveTo(focused.value - 1);
2378
+ break;
2379
+ case "ArrowDown":
2380
+ event.preventDefault();
2381
+ moveTo(focused.value + 1);
2382
+ break;
2383
+ case "ArrowLeft":
2384
+ event.preventDefault();
2385
+ step(-1);
2386
+ break;
2387
+ case "ArrowRight":
2388
+ event.preventDefault();
2389
+ step(1);
2390
+ break;
2391
+ case "Home":
2392
+ event.preventDefault();
2393
+ moveTo(0);
2394
+ break;
2395
+ case "End":
2396
+ event.preventDefault();
2397
+ moveTo(cells.value.length - 1);
2398
+ break;
2399
+ case "Enter":
2400
+ case " ":
2401
+ event.preventDefault();
2402
+ choose(here.day);
2403
+ }
2404
+ }
2405
+ function onClick(event) {
2406
+ const day = event.target.closest("[data-day]")?.dataset.day;
2407
+ if (!day) return;
2408
+ focused.value = indexOf(day);
2409
+ choose(day);
2410
+ }
2411
+ onMounted(() => {
2412
+ if (__props.startAtEnd && scroller.value) scroller.value.scrollLeft = scroller.value.scrollWidth;
2413
+ });
2414
+ return (_ctx, _cache) => {
2415
+ return openBlock(), createElementBlock("div", {
2416
+ ref_key: "scroller",
2417
+ ref: scroller,
2418
+ class: "rk-activity no-scrollbar"
2419
+ }, [createElementVNode("table", {
2420
+ ref_key: "grid",
2421
+ ref: grid,
2422
+ class: "rk-activity-table",
2423
+ "aria-label": __props.label,
2424
+ onKeydown,
2425
+ onClick
2426
+ }, [createElementVNode("thead", null, [createElementVNode("tr", null, [_cache[0] || (_cache[0] = createElementVNode("td", { class: "rk-activity-corner" }, null, -1)), (openBlock(true), createElementBlock(Fragment, null, renderList(months.value, (month) => {
2427
+ return openBlock(), createElementBlock("th", {
2428
+ key: month.key,
2429
+ colspan: month.span,
2430
+ scope: "colgroup"
2431
+ }, toDisplayString(month.label), 9, _hoisted_2$19);
2432
+ }), 128))])]), createElementVNode("tbody", null, [(openBlock(true), createElementBlock(Fragment, null, renderList(weekdays.value, (weekday, row) => {
2433
+ return openBlock(), createElementBlock("tr", { key: weekday }, [createElementVNode("th", _hoisted_3$13, [createElementVNode("span", _hoisted_4$9, toDisplayString(weekday), 1)]), (openBlock(true), createElementBlock(Fragment, null, renderList(weeks.value, (week, column) => {
2434
+ return openBlock(), createElementBlock(Fragment, { key: column }, [week[row] ? (openBlock(), createElementBlock("td", mergeProps({
2435
+ key: 0,
2436
+ class: "rk-activity-cell"
2437
+ }, { ref_for: true }, dayAttrs(week[row]), {
2438
+ tabindex: cells.value[focused.value]?.day === week[row] ? 0 : -1,
2439
+ "aria-label": __props.dayLabel(week[row]),
2440
+ class: [__props.levelFor(week[row]), { "is-pickable": __props.isSelectable?.(week[row]) }]
2441
+ }), null, 16, _hoisted_5$6)) : (openBlock(), createElementBlock("td", _hoisted_6$5))], 64);
2442
+ }), 128))]);
2443
+ }), 128))])], 40, _hoisted_1$21)], 512);
2444
+ };
2445
+ }
2446
+ }), [["__scopeId", "data-v-9f622328"]]);
2447
+ //#endregion
2295
2448
  //#region src/components/AvatarStack.vue?vue&type=script&setup=true&lang.ts
2296
- var _hoisted_1$19 = ["aria-label"];
2297
- var _hoisted_2$17 = {
2449
+ var _hoisted_1$20 = ["aria-label"];
2450
+ var _hoisted_2$18 = {
2298
2451
  key: 0,
2299
2452
  class: "rk-stack-item rk-stack-rest",
2300
2453
  "aria-hidden": "true"
@@ -2332,15 +2485,15 @@ var AvatarStack_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
2332
2485
  "src",
2333
2486
  "size"
2334
2487
  ])]);
2335
- }), 128)), rest.value ? (openBlock(), createElementBlock("span", _hoisted_2$17, "+" + toDisplayString(rest.value), 1)) : createCommentVNode("", true)], 10, _hoisted_1$19);
2488
+ }), 128)), rest.value ? (openBlock(), createElementBlock("span", _hoisted_2$18, "+" + toDisplayString(rest.value), 1)) : createCommentVNode("", true)], 10, _hoisted_1$20);
2336
2489
  };
2337
2490
  }
2338
2491
  }), [["__scopeId", "data-v-db629481"]]);
2339
2492
  //#endregion
2340
2493
  //#region src/components/BaseCalendar.vue?vue&type=script&setup=true&lang.ts
2341
- var _hoisted_1$18 = { class: "rk-cal" };
2342
- var _hoisted_2$16 = { class: "rk-cal-head" };
2343
- var _hoisted_3$11 = ["aria-label"];
2494
+ var _hoisted_1$19 = { class: "rk-cal" };
2495
+ var _hoisted_2$17 = { class: "rk-cal-head" };
2496
+ var _hoisted_3$12 = ["aria-label"];
2344
2497
  var _hoisted_4$8 = ["aria-expanded"];
2345
2498
  var _hoisted_5$5 = ["aria-label"];
2346
2499
  var _hoisted_6$4 = {
@@ -2535,8 +2688,8 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2535
2688
  if (next) focused.value = next;
2536
2689
  });
2537
2690
  return (_ctx, _cache) => {
2538
- return openBlock(), createElementBlock("div", _hoisted_1$18, [
2539
- createElementVNode("div", _hoisted_2$16, [
2691
+ return openBlock(), createElementBlock("div", _hoisted_1$19, [
2692
+ createElementVNode("div", _hoisted_2$17, [
2540
2693
  createElementVNode("button", {
2541
2694
  type: "button",
2542
2695
  class: "rk-cal-arrow focus-ring",
@@ -2545,7 +2698,7 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2545
2698
  }, [createVNode(unref(ChevronLeft), {
2546
2699
  class: "size-4",
2547
2700
  "aria-hidden": "true"
2548
- })], 8, _hoisted_3$11),
2701
+ })], 8, _hoisted_3$12),
2549
2702
  createElementVNode("button", {
2550
2703
  type: "button",
2551
2704
  class: "rk-cal-title focus-ring",
@@ -2618,8 +2771,8 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2618
2771
  }), [["__scopeId", "data-v-30197a85"]]);
2619
2772
  //#endregion
2620
2773
  //#region src/components/BaseChip.vue?vue&type=script&setup=true&lang.ts
2621
- var _hoisted_1$17 = { class: "truncate" };
2622
- var _hoisted_2$15 = ["aria-label", "disabled"];
2774
+ var _hoisted_1$18 = { class: "truncate" };
2775
+ var _hoisted_2$16 = ["aria-label", "disabled"];
2623
2776
  //#endregion
2624
2777
  //#region src/components/BaseChip.vue
2625
2778
  var BaseChip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2656,7 +2809,7 @@ var BaseChip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2656
2809
  key: 0,
2657
2810
  class: "size-3.5 shrink-0",
2658
2811
  "aria-hidden": "true"
2659
- })) : createCommentVNode("", true), createElementVNode("span", _hoisted_1$17, toDisplayString(__props.label), 1)]),
2812
+ })) : createCommentVNode("", true), createElementVNode("span", _hoisted_1$18, toDisplayString(__props.label), 1)]),
2660
2813
  _: 1
2661
2814
  }, 8, [
2662
2815
  "type",
@@ -2673,18 +2826,18 @@ var BaseChip_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2673
2826
  }, [createVNode(unref(X), {
2674
2827
  class: "size-3",
2675
2828
  "aria-hidden": "true"
2676
- })], 8, _hoisted_2$15)) : createCommentVNode("", true)], 2);
2829
+ })], 8, _hoisted_2$16)) : createCommentVNode("", true)], 2);
2677
2830
  };
2678
2831
  }
2679
2832
  }), [["__scopeId", "data-v-c94a820d"]]);
2680
2833
  //#endregion
2681
2834
  //#region src/components/BaseKbd.vue?vue&type=script&setup=true&lang.ts
2682
- var _hoisted_1$16 = {
2835
+ var _hoisted_1$17 = {
2683
2836
  key: 0,
2684
2837
  class: "rk-kbd-joiner",
2685
2838
  "aria-hidden": "true"
2686
2839
  };
2687
- var _hoisted_2$14 = { class: "rk-kbd-key control" };
2840
+ var _hoisted_2$15 = { class: "rk-kbd-key control" };
2688
2841
  //#endregion
2689
2842
  //#region src/components/BaseKbd.vue
2690
2843
  var BaseKbd_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2698,7 +2851,7 @@ var BaseKbd_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE
2698
2851
  const list = computed(() => typeof __props.keys === "string" ? [__props.keys] : __props.keys);
2699
2852
  return (_ctx, _cache) => {
2700
2853
  return openBlock(), createElementBlock("span", { class: normalizeClass(["rk-kbd", `is-${__props.size}`]) }, [(openBlock(true), createElementBlock(Fragment, null, renderList(list.value, (key, index) => {
2701
- return openBlock(), createElementBlock(Fragment, { key }, [index > 0 && __props.joiner ? (openBlock(), createElementBlock("span", _hoisted_1$16, toDisplayString(__props.joiner), 1)) : createCommentVNode("", true), createElementVNode("kbd", _hoisted_2$14, toDisplayString(key), 1)], 64);
2854
+ return openBlock(), createElementBlock(Fragment, { key }, [index > 0 && __props.joiner ? (openBlock(), createElementBlock("span", _hoisted_1$17, toDisplayString(__props.joiner), 1)) : createCommentVNode("", true), createElementVNode("kbd", _hoisted_2$15, toDisplayString(key), 1)], 64);
2702
2855
  }), 128))], 2);
2703
2856
  };
2704
2857
  }
@@ -2737,7 +2890,7 @@ var BaseLink_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2737
2890
  }), [["__scopeId", "data-v-88581007"]]);
2738
2891
  //#endregion
2739
2892
  //#region src/components/BaseRating.vue?vue&type=script&setup=true&lang.ts
2740
- var _hoisted_1$15 = [
2893
+ var _hoisted_1$16 = [
2741
2894
  "role",
2742
2895
  "aria-label",
2743
2896
  "tabindex",
@@ -2746,7 +2899,7 @@ var _hoisted_1$15 = [
2746
2899
  "aria-valuemax",
2747
2900
  "aria-valuetext"
2748
2901
  ];
2749
- var _hoisted_2$13 = ["onClick", "onPointerenter"];
2902
+ var _hoisted_2$14 = ["onClick", "onPointerenter"];
2750
2903
  //#endregion
2751
2904
  //#region src/components/BaseRating.vue
2752
2905
  var BaseRating_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2811,15 +2964,15 @@ var BaseRating_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
2811
2964
  "aria-hidden": "true",
2812
2965
  onClick: ($event) => __props.readonly ? void 0 : pick(star),
2813
2966
  onPointerenter: ($event) => __props.readonly ? void 0 : hovered.value = star
2814
- }, [createVNode(unref(Star), { class: "rk-rating-icon" })], 42, _hoisted_2$13);
2815
- }), 128))], 42, _hoisted_1$15);
2967
+ }, [createVNode(unref(Star), { class: "rk-rating-icon" })], 42, _hoisted_2$14);
2968
+ }), 128))], 42, _hoisted_1$16);
2816
2969
  };
2817
2970
  }
2818
2971
  }), [["__scopeId", "data-v-3118ad6b"]]);
2819
2972
  //#endregion
2820
2973
  //#region src/components/BaseSeparator.vue?vue&type=script&setup=true&lang.ts
2821
- var _hoisted_1$14 = { class: "rk-sep-label" };
2822
- var _hoisted_2$12 = ["aria-orientation"];
2974
+ var _hoisted_1$15 = { class: "rk-sep-label" };
2975
+ var _hoisted_2$13 = ["aria-orientation"];
2823
2976
  //#endregion
2824
2977
  //#region src/components/BaseSeparator.vue
2825
2978
  var BaseSeparator_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2847,28 +3000,28 @@ var BaseSeparator_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
2847
3000
  "aria-hidden": "true"
2848
3001
  }, [
2849
3002
  _cache[0] || (_cache[0] = createElementVNode("span", { class: "rk-sep-line" }, null, -1)),
2850
- createElementVNode("span", _hoisted_1$14, toDisplayString(__props.label), 1),
3003
+ createElementVNode("span", _hoisted_1$15, toDisplayString(__props.label), 1),
2851
3004
  _cache[1] || (_cache[1] = createElementVNode("span", { class: "rk-sep-line" }, null, -1))
2852
3005
  ], 2)) : (openBlock(), createElementBlock("div", {
2853
3006
  key: 1,
2854
3007
  class: normalizeClass(["rk-sep", [`is-${__props.orientation}`, `space-${__props.spacing}`]]),
2855
3008
  role: "separator",
2856
3009
  "aria-orientation": __props.orientation
2857
- }, null, 10, _hoisted_2$12));
3010
+ }, null, 10, _hoisted_2$13));
2858
3011
  };
2859
3012
  }
2860
3013
  }), [["__scopeId", "data-v-9f8cc9aa"]]);
2861
3014
  //#endregion
2862
3015
  //#region src/components/ColorPicker.vue?vue&type=script&setup=true&lang.ts
2863
- var _hoisted_1$13 = { class: "rk-color-row" };
2864
- var _hoisted_2$11 = [
3016
+ var _hoisted_1$14 = { class: "rk-color-row" };
3017
+ var _hoisted_2$12 = [
2865
3018
  "id",
2866
3019
  "value",
2867
3020
  "disabled",
2868
3021
  "aria-describedby",
2869
3022
  "aria-invalid"
2870
3023
  ];
2871
- var _hoisted_3$10 = [
3024
+ var _hoisted_3$11 = [
2872
3025
  "aria-label",
2873
3026
  "disabled",
2874
3027
  "onKeydown"
@@ -2951,7 +3104,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
2951
3104
  "label-hidden": __props.labelHidden,
2952
3105
  class: "rk-color"
2953
3106
  }, {
2954
- default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$13, [
3107
+ default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$14, [
2955
3108
  createElementVNode("span", {
2956
3109
  class: "rk-color-well",
2957
3110
  style: normalizeStyle(current.value ? { "--rk-color": current.value } : void 0)
@@ -2964,7 +3117,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
2964
3117
  "aria-describedby": describedBy,
2965
3118
  "aria-invalid": invalid,
2966
3119
  onInput: _cache[0] || (_cache[0] = ($event) => set($event.target.value))
2967
- }, null, 40, _hoisted_2$11)], 4),
3120
+ }, null, 40, _hoisted_2$12)], 4),
2968
3121
  __props.hexLabel ? withDirectives((openBlock(), createElementBlock("input", {
2969
3122
  key: 0,
2970
3123
  "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => draft.value = $event),
@@ -2976,7 +3129,7 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
2976
3129
  disabled: __props.disabled,
2977
3130
  onBlur: commit,
2978
3131
  onKeydown: withKeys(withModifiers(commit, ["prevent"]), ["enter"])
2979
- }, null, 40, _hoisted_3$10)), [[vModelText, draft.value]]) : createCommentVNode("", true),
3132
+ }, null, 40, _hoisted_3$11)), [[vModelText, draft.value]]) : createCommentVNode("", true),
2980
3133
  __props.swatches.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_4$7, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.swatches, (swatch) => {
2981
3134
  return openBlock(), createElementBlock("li", { key: swatch.value }, [createElementVNode("button", {
2982
3135
  type: "button",
@@ -3001,9 +3154,9 @@ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3001
3154
  }), [["__scopeId", "data-v-5ca23aa9"]]);
3002
3155
  //#endregion
3003
3156
  //#region src/components/CopyButton.vue?vue&type=script&setup=true&lang.ts
3004
- var _hoisted_1$12 = ["aria-label"];
3005
- var _hoisted_2$10 = { key: 2 };
3006
- var _hoisted_3$9 = {
3157
+ var _hoisted_1$13 = ["aria-label"];
3158
+ var _hoisted_2$11 = { key: 2 };
3159
+ var _hoisted_3$10 = {
3007
3160
  class: "sr-only",
3008
3161
  role: "status",
3009
3162
  "aria-live": "polite"
@@ -3061,13 +3214,66 @@ var CopyButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
3061
3214
  class: "size-4 shrink-0",
3062
3215
  "aria-hidden": "true"
3063
3216
  })),
3064
- __props.withText ? (openBlock(), createElementBlock("span", _hoisted_2$10, toDisplayString(state.value === "copied" ? __props.copiedLabel : __props.copyLabel), 1)) : createCommentVNode("", true),
3065
- createElementVNode("span", _hoisted_3$9, toDisplayString(state.value === "copied" ? __props.copiedLabel : state.value === "failed" ? __props.errorLabel ?? "" : ""), 1)
3066
- ], 10, _hoisted_1$12);
3217
+ __props.withText ? (openBlock(), createElementBlock("span", _hoisted_2$11, toDisplayString(state.value === "copied" ? __props.copiedLabel : __props.copyLabel), 1)) : createCommentVNode("", true),
3218
+ createElementVNode("span", _hoisted_3$10, toDisplayString(state.value === "copied" ? __props.copiedLabel : state.value === "failed" ? __props.errorLabel ?? "" : ""), 1)
3219
+ ], 10, _hoisted_1$13);
3067
3220
  };
3068
3221
  }
3069
3222
  }), [["__scopeId", "data-v-c481e140"]]);
3070
3223
  //#endregion
3224
+ //#region src/components/CodeBlock.vue?vue&type=script&setup=true&lang.ts
3225
+ var _hoisted_1$12 = {
3226
+ key: 0,
3227
+ class: "rk-code-bar"
3228
+ };
3229
+ var _hoisted_2$10 = {
3230
+ key: 0,
3231
+ class: "rk-code-lang"
3232
+ };
3233
+ var _hoisted_3$9 = [
3234
+ "tabindex",
3235
+ "role",
3236
+ "aria-label"
3237
+ ];
3238
+ //#endregion
3239
+ //#region src/components/CodeBlock.vue
3240
+ var CodeBlock_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
3241
+ __name: "CodeBlock",
3242
+ props: {
3243
+ code: {},
3244
+ label: {},
3245
+ language: { default: () => void 0 },
3246
+ wrap: {
3247
+ type: Boolean,
3248
+ default: false
3249
+ },
3250
+ copyLabel: { default: () => void 0 },
3251
+ copiedLabel: { default: () => void 0 }
3252
+ },
3253
+ setup(__props) {
3254
+ const copyable = computed(() => __props.copyLabel !== void 0 && __props.copiedLabel !== void 0);
3255
+ const scrolls = computed(() => !__props.wrap);
3256
+ return (_ctx, _cache) => {
3257
+ return openBlock(), createElementBlock("figure", { class: normalizeClass(["rk-code", { "is-wrapped": __props.wrap }]) }, [__props.language || copyable.value ? (openBlock(), createElementBlock("figcaption", _hoisted_1$12, [__props.language ? (openBlock(), createElementBlock("span", _hoisted_2$10, toDisplayString(__props.language), 1)) : createCommentVNode("", true), copyable.value ? (openBlock(), createBlock(CopyButton_default, {
3258
+ key: 1,
3259
+ class: "rk-code-copy",
3260
+ text: __props.code,
3261
+ "copy-label": __props.copyLabel,
3262
+ "copied-label": __props.copiedLabel
3263
+ }, null, 8, [
3264
+ "text",
3265
+ "copy-label",
3266
+ "copied-label"
3267
+ ])) : createCommentVNode("", true)])) : createCommentVNode("", true), createElementVNode("pre", {
3268
+ class: "rk-code-pre",
3269
+ tabindex: scrolls.value ? 0 : void 0,
3270
+ role: scrolls.value ? "region" : void 0,
3271
+ "aria-label": scrolls.value ? __props.label : void 0
3272
+ }, [createElementVNode("code", null, [renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(__props.code), 1)], true)])], 8, _hoisted_3$9)], 2);
3273
+ };
3274
+ }
3275
+ }), [["__scopeId", "data-v-b45043be"]]);
3276
+ //#endregion
3071
3277
  //#region src/components/DescriptionList.vue?vue&type=script&setup=true&lang.ts
3072
3278
  var _hoisted_1$11 = { class: "rk-dl-term" };
3073
3279
  var _hoisted_2$9 = { class: "rk-dl-value" };
@@ -4448,8 +4654,8 @@ function createI18nRuntime(options) {
4448
4654
  *
4449
4655
  * The fallback keeps `vitest` and `vite dev` honest, where no define runs.
4450
4656
  */
4451
- var VERSION = "2.18.1";
4657
+ var VERSION = "2.20.0";
4452
4658
  //#endregion
4453
- 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, BaseTimeline_default as BaseTimeline, CircularProgress_default as CircularProgress, ColorPicker_default as ColorPicker, 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, SliderField_default as SliderField, 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 };
4659
+ export { ActivityGrid_default as ActivityGrid, 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, BaseTimeline_default as BaseTimeline, CircularProgress_default as CircularProgress, CodeBlock_default as CodeBlock, ColorPicker_default as ColorPicker, 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, SliderField_default as SliderField, 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 };
4454
4660
 
4455
4661
  //# sourceMappingURL=index.js.map