rei-kit 2.14.0 → 2.16.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
@@ -7,7 +7,7 @@ import { n as BaseSkeleton_default, r as useMediaQuery, t as BaseListbox_default
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";
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";
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, withKeys, withModifiers } from "vue";
11
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";
@@ -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$40 = [
351
+ var _hoisted_1$42 = [
352
352
  "role",
353
353
  "aria-label",
354
354
  "aria-hidden"
355
355
  ];
356
- var _hoisted_2$34 = ["src"];
357
- var _hoisted_3$22 = {
356
+ var _hoisted_2$35 = ["src"];
357
+ var _hoisted_3$23 = {
358
358
  key: 1,
359
359
  class: "rk-avatar-initials"
360
360
  };
361
- var _hoisted_4$17 = {
361
+ var _hoisted_4$18 = {
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$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", {
407
+ }, null, 40, _hoisted_2$35)) : __props.fallback === "initials" && initials.value ? (openBlock(), createElementBlock("span", _hoisted_3$23, toDisplayString(initials.value), 1)) : (openBlock(), createElementBlock("svg", _hoisted_4$18, [..._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$40);
416
+ }, null, -1)])]))], 10, _hoisted_1$42);
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$39 = [
441
+ var _hoisted_1$41 = [
442
442
  "aria-label",
443
443
  "aria-expanded",
444
444
  "aria-controls"
445
445
  ];
446
- var _hoisted_2$33 = ["id"];
446
+ var _hoisted_2$34 = ["id"];
447
447
  //#endregion
448
448
  //#region src/components/BaseMenu.vue
449
449
  var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -542,14 +542,14 @@ var BaseMenu_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
542
542
  "aria-haspopup": true,
543
543
  "aria-controls": open.value ? unref(id) : void 0,
544
544
  onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)
545
- }, [renderSlot(_ctx.$slots, "trigger", { open: open.value }, void 0, true)], 8, _hoisted_1$39), open.value ? (openBlock(), createElementBlock("div", {
545
+ }, [renderSlot(_ctx.$slots, "trigger", { open: open.value }, void 0, true)], 8, _hoisted_1$41), open.value ? (openBlock(), createElementBlock("div", {
546
546
  key: 0,
547
547
  id: unref(id),
548
548
  ref_key: "panel",
549
549
  ref: panel,
550
550
  class: normalizeClass(["rk-menu-panel surface-overlay", `is-${__props.align}`]),
551
551
  role: "menu"
552
- }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 10, _hoisted_2$33)) : createCommentVNode("", true)], 544);
552
+ }, [renderSlot(_ctx.$slots, "default", {}, void 0, true)], 10, _hoisted_2$34)) : createCommentVNode("", true)], 544);
553
553
  };
554
554
  }
555
555
  }), [["__scopeId", "data-v-e57ec901"]]);
@@ -620,13 +620,13 @@ var BaseCard_default = /* @__PURE__ */ defineComponent({
620
620
  });
621
621
  //#endregion
622
622
  //#region src/components/BaseCombobox.vue?vue&type=script&setup=true&lang.ts
623
- var _hoisted_1$38 = ["for"];
624
- var _hoisted_2$32 = [
623
+ var _hoisted_1$40 = ["for"];
624
+ var _hoisted_2$33 = [
625
625
  "aria-label",
626
626
  "disabled",
627
627
  "onClick"
628
628
  ];
629
- var _hoisted_3$21 = [
629
+ var _hoisted_3$22 = [
630
630
  "id",
631
631
  "placeholder",
632
632
  "disabled",
@@ -635,8 +635,8 @@ var _hoisted_3$21 = [
635
635
  "aria-invalid",
636
636
  "aria-describedby"
637
637
  ];
638
- var _hoisted_4$16 = ["disabled"];
639
- var _hoisted_5$9 = [
638
+ var _hoisted_4$17 = ["disabled"];
639
+ var _hoisted_5$10 = [
640
640
  "aria-label",
641
641
  "aria-multiselectable",
642
642
  "aria-busy"
@@ -871,7 +871,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
871
871
  createElementVNode("label", {
872
872
  for: unref(id),
873
873
  class: "rk-combo-label"
874
- }, toDisplayString(__props.label), 9, _hoisted_1$38),
874
+ }, toDisplayString(__props.label), 9, _hoisted_1$40),
875
875
  createElementVNode("div", { class: normalizeClass(["rk-combo-field", multiple.value ? "is-multiple control" : ""]) }, [
876
876
  (openBlock(true), createElementBlock(Fragment, null, renderList(multiple.value ? chosenOptions.value : [], (option) => {
877
877
  return openBlock(), createElementBlock("span", {
@@ -884,7 +884,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
884
884
  "aria-label": __props.removeLabel(option.label),
885
885
  disabled: __props.disabled,
886
886
  onClick: ($event) => remove(option.value)
887
- }, " × ", 8, _hoisted_2$32)) : createCommentVNode("", true)]);
887
+ }, " × ", 8, _hoisted_2$33)) : createCommentVNode("", true)]);
888
888
  }), 128)),
889
889
  withDirectives(createElementVNode("input", {
890
890
  id: unref(id),
@@ -903,7 +903,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
903
903
  "aria-describedby": describedBy.value,
904
904
  onKeydown,
905
905
  onFocus: _cache[1] || (_cache[1] = ($event) => open.value = true)
906
- }, null, 42, _hoisted_3$21), [[vModelText, text.value]]),
906
+ }, null, 42, _hoisted_3$22), [[vModelText, text.value]]),
907
907
  createElementVNode("button", {
908
908
  type: "button",
909
909
  class: "rk-combo-toggle",
@@ -911,7 +911,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
911
911
  "aria-hidden": "true",
912
912
  disabled: __props.disabled,
913
913
  onClick: _cache[2] || (_cache[2] = ($event) => open.value = !open.value)
914
- }, " ▾ ", 8, _hoisted_4$16)
914
+ }, " ▾ ", 8, _hoisted_4$17)
915
915
  ], 2),
916
916
  withDirectives(createElementVNode("ul", {
917
917
  id: listId,
@@ -958,7 +958,7 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
958
958
  height: "0.75rem"
959
959
  });
960
960
  }), 64))])])) : matches.value.length === 0 ? (openBlock(), createElementBlock("li", _hoisted_10$3, toDisplayString(__props.emptyLabel), 1)) : createCommentVNode("", true)
961
- ], 40, _hoisted_5$9), [[vShow, open.value]]),
961
+ ], 40, _hoisted_5$10), [[vShow, open.value]]),
962
962
  __props.error ? (openBlock(), createElementBlock("p", {
963
963
  key: 0,
964
964
  id: errorId,
@@ -974,13 +974,13 @@ var BaseCombobox_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
974
974
  }), [["__scopeId", "data-v-aa2335fa"]]);
975
975
  //#endregion
976
976
  //#region src/components/BaseRadioGroup.vue?vue&type=script&setup=true&lang.ts
977
- var _hoisted_1$37 = ["aria-describedby"];
978
- var _hoisted_2$31 = [
977
+ var _hoisted_1$39 = ["aria-describedby"];
978
+ var _hoisted_2$32 = [
979
979
  "name",
980
980
  "value",
981
981
  "disabled"
982
982
  ];
983
- var _hoisted_3$20 = { class: "text-ink text-sm" };
983
+ var _hoisted_3$21 = { class: "text-ink text-sm" };
984
984
  //#endregion
985
985
  //#region src/components/BaseRadioGroup.vue
986
986
  var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
@@ -1024,7 +1024,7 @@ var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
1024
1024
  value: option.value,
1025
1025
  disabled: option.disabled,
1026
1026
  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$31), [[vModelRadio, unref(model)]]), createElementVNode("span", _hoisted_3$20, toDisplayString(option.label), 1)], 2);
1027
+ }, null, 8, _hoisted_2$32), [[vModelRadio, unref(model)]]), createElementVNode("span", _hoisted_3$21, toDisplayString(option.label), 1)], 2);
1028
1028
  }), 128)),
1029
1029
  __props.error ? (openBlock(), createElementBlock("p", {
1030
1030
  key: 0,
@@ -1035,24 +1035,24 @@ var BaseRadioGroup_default = /* @__PURE__ */ defineComponent({
1035
1035
  id: hintId,
1036
1036
  class: "text-ink-soft text-xs"
1037
1037
  }, toDisplayString(__props.hint), 1)) : createCommentVNode("", true)
1038
- ], 8, _hoisted_1$37);
1038
+ ], 8, _hoisted_1$39);
1039
1039
  };
1040
1040
  }
1041
1041
  });
1042
1042
  //#endregion
1043
1043
  //#region src/components/BaseSelect.vue?vue&type=script&setup=true&lang.ts
1044
- var _hoisted_1$36 = { class: "relative" };
1045
- var _hoisted_2$30 = [
1044
+ var _hoisted_1$38 = { class: "relative" };
1045
+ var _hoisted_2$31 = [
1046
1046
  "id",
1047
1047
  "aria-invalid",
1048
1048
  "aria-describedby"
1049
1049
  ];
1050
- var _hoisted_3$19 = {
1050
+ var _hoisted_3$20 = {
1051
1051
  key: 0,
1052
1052
  value: void 0,
1053
1053
  disabled: ""
1054
1054
  };
1055
- var _hoisted_4$15 = ["value", "disabled"];
1055
+ var _hoisted_4$16 = ["value", "disabled"];
1056
1056
  //#endregion
1057
1057
  //#region src/components/BaseSelect.vue
1058
1058
  var BaseSelect_default = /* @__PURE__ */ defineComponent({
@@ -1088,7 +1088,7 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
1088
1088
  "label-hidden": __props.labelHidden,
1089
1089
  size: __props.size
1090
1090
  }, {
1091
- default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$36, [withDirectives(createElementVNode("select", {
1091
+ default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$38, [withDirectives(createElementVNode("select", {
1092
1092
  id,
1093
1093
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
1094
1094
  "aria-invalid": invalid,
@@ -1098,13 +1098,13 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
1098
1098
  __props.variant === "unstyled" ? "" : SIZE_CLASS[__props.size],
1099
1099
  __props.variant !== "unstyled" && invalid ? "border-negative" : ""
1100
1100
  ]])
1101
- }, [__props.placeholder ? (openBlock(), createElementBlock("option", _hoisted_3$19, toDisplayString(__props.placeholder), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
1101
+ }, [__props.placeholder ? (openBlock(), createElementBlock("option", _hoisted_3$20, toDisplayString(__props.placeholder), 1)) : createCommentVNode("", true), (openBlock(true), createElementBlock(Fragment, null, renderList(__props.options, (option) => {
1102
1102
  return openBlock(), createElementBlock("option", {
1103
1103
  key: option.value,
1104
1104
  value: option.value,
1105
1105
  disabled: option.disabled
1106
- }, toDisplayString(option.label), 9, _hoisted_4$15);
1107
- }), 128))], 10, _hoisted_2$30), [[vModelSelect, model.value]]), createVNode(unref(ChevronDown), {
1106
+ }, toDisplayString(option.label), 9, _hoisted_4$16);
1107
+ }), 128))], 10, _hoisted_2$31), [[vModelSelect, model.value]]), createVNode(unref(ChevronDown), {
1108
1108
  class: "text-ink-soft pointer-events-none absolute top-1/2 right-3 size-4 -translate-y-1/2",
1109
1109
  "aria-hidden": "true"
1110
1110
  })])]),
@@ -1121,11 +1121,11 @@ var BaseSelect_default = /* @__PURE__ */ defineComponent({
1121
1121
  });
1122
1122
  //#endregion
1123
1123
  //#region src/components/BaseSlider.vue?vue&type=script&setup=true&lang.ts
1124
- var _hoisted_1$35 = { class: "rk-slider" };
1125
- var _hoisted_2$29 = { class: "rk-slider-head" };
1126
- var _hoisted_3$18 = ["for"];
1127
- var _hoisted_4$14 = ["for"];
1128
- var _hoisted_5$8 = [
1124
+ var _hoisted_1$37 = { class: "rk-slider" };
1125
+ var _hoisted_2$30 = { class: "rk-slider-head" };
1126
+ var _hoisted_3$19 = ["for"];
1127
+ var _hoisted_4$15 = ["for"];
1128
+ var _hoisted_5$9 = [
1129
1129
  "id",
1130
1130
  "min",
1131
1131
  "max",
@@ -1169,15 +1169,15 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1169
1169
  return span <= 0 ? 0 : (model.value - __props.min) / span * 100;
1170
1170
  });
1171
1171
  return (_ctx, _cache) => {
1172
- return openBlock(), createElementBlock("div", _hoisted_1$35, [
1173
- createElementVNode("div", _hoisted_2$29, [createElementVNode("label", {
1172
+ return openBlock(), createElementBlock("div", _hoisted_1$37, [
1173
+ createElementVNode("div", _hoisted_2$30, [createElementVNode("label", {
1174
1174
  for: unref(id),
1175
1175
  class: "rk-slider-label"
1176
- }, toDisplayString(__props.label), 9, _hoisted_3$18), __props.showValue ? (openBlock(), createElementBlock("output", {
1176
+ }, toDisplayString(__props.label), 9, _hoisted_3$19), __props.showValue ? (openBlock(), createElementBlock("output", {
1177
1177
  key: 0,
1178
1178
  for: unref(id),
1179
1179
  class: "rk-slider-value"
1180
- }, toDisplayString(text.value), 9, _hoisted_4$14)) : createCommentVNode("", true)]),
1180
+ }, toDisplayString(text.value), 9, _hoisted_4$15)) : createCommentVNode("", true)]),
1181
1181
  withDirectives(createElementVNode("input", {
1182
1182
  id: unref(id),
1183
1183
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
@@ -1190,7 +1190,7 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1190
1190
  "aria-valuetext": text.value,
1191
1191
  "aria-describedby": __props.hint ? hintId : void 0,
1192
1192
  style: normalizeStyle({ "--rk-slider-filled": `${filled.value}%` })
1193
- }, null, 12, _hoisted_5$8), [[
1193
+ }, null, 12, _hoisted_5$9), [[
1194
1194
  vModelText,
1195
1195
  model.value,
1196
1196
  void 0,
@@ -1206,6 +1206,253 @@ var BaseSlider_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1206
1206
  }
1207
1207
  }), [["__scopeId", "data-v-7fa2769b"]]);
1208
1208
  //#endregion
1209
+ //#region src/components/NumberInput.vue?vue&type=script&setup=true&lang.ts
1210
+ var _hoisted_1$36 = ["aria-label", "disabled"];
1211
+ var _hoisted_2$29 = [
1212
+ "id",
1213
+ "value",
1214
+ "aria-valuenow",
1215
+ "aria-valuemin",
1216
+ "aria-valuemax",
1217
+ "aria-invalid",
1218
+ "aria-describedby",
1219
+ "disabled"
1220
+ ];
1221
+ var _hoisted_3$18 = ["aria-label", "disabled"];
1222
+ //#endregion
1223
+ //#region src/components/NumberInput.vue
1224
+ var NumberInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
1225
+ __name: "NumberInput",
1226
+ props: /*@__PURE__*/ mergeModels({
1227
+ label: {},
1228
+ min: { default: () => -Infinity },
1229
+ max: { default: () => Infinity },
1230
+ step: { default: 1 },
1231
+ decrementLabel: {},
1232
+ incrementLabel: {},
1233
+ error: { default: "" },
1234
+ hint: { default: "" },
1235
+ size: { default: "md" },
1236
+ labelHidden: {
1237
+ type: Boolean,
1238
+ default: false
1239
+ },
1240
+ disabled: {
1241
+ type: Boolean,
1242
+ default: false
1243
+ }
1244
+ }, {
1245
+ "modelValue": {},
1246
+ "modelModifiers": {}
1247
+ }),
1248
+ emits: ["update:modelValue"],
1249
+ setup(__props) {
1250
+ /** The number, with `v-model`. `undefined` while the field is empty. */
1251
+ const model = useModel(__props, "modelValue");
1252
+ const places = computed(() => (String(__props.step).split(".")[1] ?? "").length);
1253
+ const settle = (value) => Number(Math.min(__props.max, Math.max(__props.min, value)).toFixed(Math.min(places.value, 20)));
1254
+ const draft = ref(model.value === void 0 ? "" : String(model.value));
1255
+ watch(model, (value) => {
1256
+ if ((draft.value === "" ? void 0 : Number(draft.value)) !== value) draft.value = value === void 0 ? "" : String(value);
1257
+ });
1258
+ function onInput(event) {
1259
+ const text = event.target.value.replace(",", ".");
1260
+ draft.value = text;
1261
+ if (text.trim() === "") {
1262
+ model.value = void 0;
1263
+ return;
1264
+ }
1265
+ const value = Number(text);
1266
+ if (Number.isFinite(value)) model.value = value;
1267
+ }
1268
+ function commit() {
1269
+ if (model.value === void 0) {
1270
+ draft.value = "";
1271
+ return;
1272
+ }
1273
+ setTo(model.value);
1274
+ }
1275
+ function setTo(value) {
1276
+ model.value = settle(value);
1277
+ draft.value = String(model.value);
1278
+ }
1279
+ function stepBy(times) {
1280
+ if (__props.disabled) return;
1281
+ setTo((model.value ?? (Number.isFinite(__props.min) ? __props.min : 0)) + __props.step * times);
1282
+ }
1283
+ function onKeydown(event) {
1284
+ const action = {
1285
+ ArrowUp: () => stepBy(1),
1286
+ ArrowDown: () => stepBy(-1),
1287
+ PageUp: () => stepBy(10),
1288
+ PageDown: () => stepBy(-10),
1289
+ Home: () => {
1290
+ if (Number.isFinite(__props.min)) setTo(__props.min);
1291
+ },
1292
+ End: () => {
1293
+ if (Number.isFinite(__props.max)) setTo(__props.max);
1294
+ }
1295
+ }[event.key];
1296
+ if (!action) return;
1297
+ event.preventDefault();
1298
+ action();
1299
+ }
1300
+ const atMin = computed(() => model.value !== void 0 && model.value <= __props.min);
1301
+ const atMax = computed(() => model.value !== void 0 && model.value >= __props.max);
1302
+ return (_ctx, _cache) => {
1303
+ return openBlock(), createBlock(FormField_default, {
1304
+ label: __props.label,
1305
+ error: __props.error,
1306
+ hint: __props.hint,
1307
+ size: __props.size,
1308
+ "label-hidden": __props.labelHidden
1309
+ }, {
1310
+ default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", { class: normalizeClass(["rk-number control", {
1311
+ "is-invalid": invalid,
1312
+ "is-disabled": __props.disabled
1313
+ }]) }, [
1314
+ createElementVNode("button", {
1315
+ type: "button",
1316
+ class: "rk-number-step focus-ring",
1317
+ "aria-label": __props.decrementLabel,
1318
+ disabled: __props.disabled || atMin.value,
1319
+ tabindex: "-1",
1320
+ onClick: _cache[0] || (_cache[0] = ($event) => stepBy(-1))
1321
+ }, [createVNode(unref(Minus), {
1322
+ class: "size-4",
1323
+ "aria-hidden": "true"
1324
+ })], 8, _hoisted_1$36),
1325
+ createElementVNode("input", {
1326
+ id,
1327
+ value: draft.value,
1328
+ type: "text",
1329
+ inputmode: "decimal",
1330
+ role: "spinbutton",
1331
+ autocomplete: "off",
1332
+ class: "rk-number-field",
1333
+ "aria-valuenow": model.value,
1334
+ "aria-valuemin": Number.isFinite(__props.min) ? __props.min : void 0,
1335
+ "aria-valuemax": Number.isFinite(__props.max) ? __props.max : void 0,
1336
+ "aria-invalid": invalid,
1337
+ "aria-describedby": describedBy,
1338
+ disabled: __props.disabled,
1339
+ onInput,
1340
+ onBlur: commit,
1341
+ onKeydown
1342
+ }, null, 40, _hoisted_2$29),
1343
+ createElementVNode("button", {
1344
+ type: "button",
1345
+ class: "rk-number-step focus-ring",
1346
+ "aria-label": __props.incrementLabel,
1347
+ disabled: __props.disabled || atMax.value,
1348
+ tabindex: "-1",
1349
+ onClick: _cache[1] || (_cache[1] = ($event) => stepBy(1))
1350
+ }, [createVNode(unref(Plus), {
1351
+ class: "size-4",
1352
+ "aria-hidden": "true"
1353
+ })], 8, _hoisted_3$18)
1354
+ ], 2)]),
1355
+ _: 1
1356
+ }, 8, [
1357
+ "label",
1358
+ "error",
1359
+ "hint",
1360
+ "size",
1361
+ "label-hidden"
1362
+ ]);
1363
+ };
1364
+ }
1365
+ }), [["__scopeId", "data-v-082bd3d7"]]);
1366
+ //#endregion
1367
+ //#region src/components/SliderField.vue?vue&type=script&setup=true&lang.ts
1368
+ var _hoisted_1$35 = { class: "rk-slider-field" };
1369
+ //#endregion
1370
+ //#region src/components/SliderField.vue
1371
+ var SliderField_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
1372
+ __name: "SliderField",
1373
+ props: /*@__PURE__*/ mergeModels({
1374
+ label: {},
1375
+ min: { default: 0 },
1376
+ max: { default: 100 },
1377
+ step: { default: 1 },
1378
+ decrementLabel: {},
1379
+ incrementLabel: {},
1380
+ hint: { default: "" },
1381
+ disabled: {
1382
+ type: Boolean,
1383
+ default: false
1384
+ },
1385
+ format: { type: Function }
1386
+ }, {
1387
+ "modelValue": { default: 0 },
1388
+ "modelModifiers": {}
1389
+ }),
1390
+ emits: ["update:modelValue"],
1391
+ setup(__props) {
1392
+ const model = useModel(__props, "modelValue");
1393
+ /**
1394
+ * The field's own binding, which can be emptied; the pair's cannot.
1395
+ *
1396
+ * `NumberInput` hands back `undefined` while the field is empty, because
1397
+ * halfway through typing a number there is no number. A slider has no such
1398
+ * state — the thumb is always somewhere — so an empty field leaves the value
1399
+ * where it was until something is typed, rather than dragging the thumb to
1400
+ * zero the moment the last digit is deleted.
1401
+ */
1402
+ const typed = computed({
1403
+ get: () => model.value,
1404
+ set: (value) => {
1405
+ if (value !== void 0) model.value = value;
1406
+ }
1407
+ });
1408
+ return (_ctx, _cache) => {
1409
+ return openBlock(), createElementBlock("div", _hoisted_1$35, [createVNode(BaseSlider_default, {
1410
+ modelValue: model.value,
1411
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => model.value = $event),
1412
+ label: __props.label,
1413
+ min: __props.min,
1414
+ max: __props.max,
1415
+ step: __props.step,
1416
+ hint: __props.hint,
1417
+ disabled: __props.disabled,
1418
+ format: __props.format,
1419
+ "show-value": false
1420
+ }, null, 8, [
1421
+ "modelValue",
1422
+ "label",
1423
+ "min",
1424
+ "max",
1425
+ "step",
1426
+ "hint",
1427
+ "disabled",
1428
+ "format"
1429
+ ]), createVNode(NumberInput_default, {
1430
+ modelValue: typed.value,
1431
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => typed.value = $event),
1432
+ class: "rk-slider-field-number",
1433
+ label: __props.label,
1434
+ "label-hidden": "",
1435
+ min: __props.min,
1436
+ max: __props.max,
1437
+ step: __props.step,
1438
+ "decrement-label": __props.decrementLabel,
1439
+ "increment-label": __props.incrementLabel,
1440
+ disabled: __props.disabled,
1441
+ size: "sm"
1442
+ }, null, 8, [
1443
+ "modelValue",
1444
+ "label",
1445
+ "min",
1446
+ "max",
1447
+ "step",
1448
+ "decrement-label",
1449
+ "increment-label",
1450
+ "disabled"
1451
+ ])]);
1452
+ };
1453
+ }
1454
+ }), [["__scopeId", "data-v-6ec3163a"]]);
1455
+ //#endregion
1209
1456
  //#region src/components/BaseSpinner.vue?vue&type=script&setup=true&lang.ts
1210
1457
  var _hoisted_1$34 = {
1211
1458
  class: "rk-spin-wrap",
@@ -1258,7 +1505,7 @@ var _hoisted_2$27 = {
1258
1505
  class: "min-w-0"
1259
1506
  };
1260
1507
  var _hoisted_3$17 = ["id"];
1261
- var _hoisted_4$13 = [
1508
+ var _hoisted_4$14 = [
1262
1509
  "aria-checked",
1263
1510
  "aria-labelledby",
1264
1511
  "aria-label",
@@ -1317,7 +1564,7 @@ var BaseSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1317
1564
  }, [..._cache[0] || (_cache[0] = [createElementVNode("span", {
1318
1565
  class: "rk-switch-knob",
1319
1566
  "aria-hidden": "true"
1320
- }, null, -1)])], 10, _hoisted_4$13)]);
1567
+ }, null, -1)])], 10, _hoisted_4$14)]);
1321
1568
  };
1322
1569
  }
1323
1570
  }), [["__scopeId", "data-v-3f4400a0"]]);
@@ -1326,8 +1573,8 @@ var BaseSwitch_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
1326
1573
  var _hoisted_1$32 = ["aria-label"];
1327
1574
  var _hoisted_2$26 = { class: "rk-table" };
1328
1575
  var _hoisted_3$16 = { key: 0 };
1329
- var _hoisted_4$12 = { key: 1 };
1330
- var _hoisted_5$7 = ["colspan"];
1576
+ var _hoisted_4$13 = { key: 1 };
1577
+ var _hoisted_5$8 = ["colspan"];
1331
1578
  //#endregion
1332
1579
  //#region src/components/BaseTable.vue
1333
1580
  var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -1369,10 +1616,10 @@ var BaseTable_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
1369
1616
  value: row[column.key]
1370
1617
  }, () => [createTextVNode(toDisplayString(row[column.key]), 1)], true)], 2);
1371
1618
  }), 128))]);
1372
- }), 128))])) : (openBlock(), createElementBlock("tbody", _hoisted_4$12, [createElementVNode("tr", null, [createElementVNode("td", {
1619
+ }), 128))])) : (openBlock(), createElementBlock("tbody", _hoisted_4$13, [createElementVNode("tr", null, [createElementVNode("td", {
1373
1620
  colspan: __props.columns.length,
1374
1621
  class: "rk-table-empty"
1375
- }, [renderSlot(_ctx.$slots, "empty", {}, void 0, true)], 8, _hoisted_5$7)])]))
1622
+ }, [renderSlot(_ctx.$slots, "empty", {}, void 0, true)], 8, _hoisted_5$8)])]))
1376
1623
  ])], 8, _hoisted_1$32);
1377
1624
  };
1378
1625
  }
@@ -1445,11 +1692,11 @@ var _hoisted_2$25 = {
1445
1692
  class: "bg-muted text-primary rounded-card flex size-12 items-center justify-center"
1446
1693
  };
1447
1694
  var _hoisted_3$15 = { class: "text-ink text-base font-semibold" };
1448
- var _hoisted_4$11 = {
1695
+ var _hoisted_4$12 = {
1449
1696
  key: 1,
1450
1697
  class: "text-ink-soft max-w-[36ch] text-sm"
1451
1698
  };
1452
- var _hoisted_5$6 = {
1699
+ var _hoisted_5$7 = {
1453
1700
  key: 2,
1454
1701
  class: "mt-2 flex w-full flex-col gap-2"
1455
1702
  };
@@ -1474,8 +1721,8 @@ var EmptyState_default = /* @__PURE__ */ defineComponent({
1474
1721
  return openBlock(), createElementBlock("div", _hoisted_1$30, [
1475
1722
  _ctx.$slots.icon ? (openBlock(), createElementBlock("div", _hoisted_2$25, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true),
1476
1723
  createElementVNode("h3", _hoisted_3$15, toDisplayString(__props.title), 1),
1477
- __props.description ? (openBlock(), createElementBlock("p", _hoisted_4$11, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
1478
- _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5$6, [renderSlot(_ctx.$slots, "action")])) : createCommentVNode("", true)
1724
+ __props.description ? (openBlock(), createElementBlock("p", _hoisted_4$12, toDisplayString(__props.description), 1)) : createCommentVNode("", true),
1725
+ _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_5$7, [renderSlot(_ctx.$slots, "action")])) : createCommentVNode("", true)
1479
1726
  ]);
1480
1727
  };
1481
1728
  }
@@ -1545,8 +1792,8 @@ var PageContainer_default = /* @__PURE__ */ defineComponent({
1545
1792
  var _hoisted_1$29 = { class: "grid h-12 shrink-0 grid-cols-[2.5rem_1fr_2.5rem] items-center" };
1546
1793
  var _hoisted_2$24 = { class: "justify-self-start" };
1547
1794
  var _hoisted_3$14 = { class: "text-ink flex min-w-0 justify-center text-base font-semibold tabular-nums" };
1548
- var _hoisted_4$10 = { class: "truncate" };
1549
- var _hoisted_5$5 = { class: "justify-self-end" };
1795
+ var _hoisted_4$11 = { class: "truncate" };
1796
+ var _hoisted_5$6 = { class: "justify-self-end" };
1550
1797
  //#endregion
1551
1798
  //#region src/components/PageHeader.vue
1552
1799
  var PageHeader_default = /* @__PURE__ */ defineComponent({
@@ -1565,8 +1812,8 @@ var PageHeader_default = /* @__PURE__ */ defineComponent({
1565
1812
  return (_ctx, _cache) => {
1566
1813
  return openBlock(), createElementBlock("header", _hoisted_1$29, [
1567
1814
  createElementVNode("div", _hoisted_2$24, [renderSlot(_ctx.$slots, "left")]),
1568
- createElementVNode("h1", _hoisted_3$14, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", _hoisted_4$10, toDisplayString(__props.title), 1)])]),
1569
- createElementVNode("div", _hoisted_5$5, [renderSlot(_ctx.$slots, "right")])
1815
+ createElementVNode("h1", _hoisted_3$14, [renderSlot(_ctx.$slots, "title", {}, () => [createElementVNode("span", _hoisted_4$11, toDisplayString(__props.title), 1)])]),
1816
+ createElementVNode("div", _hoisted_5$6, [renderSlot(_ctx.$slots, "right")])
1570
1817
  ]);
1571
1818
  };
1572
1819
  }
@@ -1617,11 +1864,11 @@ var _hoisted_1$27 = {
1617
1864
  };
1618
1865
  var _hoisted_2$23 = { class: "flex items-start justify-between gap-4" };
1619
1866
  var _hoisted_3$13 = { class: "text-ink mt-5 text-lg font-semibold" };
1620
- var _hoisted_4$9 = {
1867
+ var _hoisted_4$10 = {
1621
1868
  key: 1,
1622
1869
  class: "text-ink-soft mt-1.5 text-sm leading-relaxed"
1623
1870
  };
1624
- var _hoisted_5$4 = { class: "mt-6 flex items-baseline gap-1.5" };
1871
+ var _hoisted_5$5 = { class: "mt-6 flex items-baseline gap-1.5" };
1625
1872
  var _hoisted_6$4 = { class: "text-ink text-3xl font-semibold tracking-tight tabular-nums" };
1626
1873
  var _hoisted_7$3 = {
1627
1874
  key: 0,
@@ -1695,8 +1942,8 @@ var PriceCard_default = /* @__PURE__ */ defineComponent({
1695
1942
  class: normalizeClass(["rounded-cell ml-auto px-2.5 py-1 text-[0.7rem] font-medium", palette.value.soft])
1696
1943
  }, toDisplayString(__props.chip), 3)) : createCommentVNode("", true)]),
1697
1944
  createElementVNode("h3", _hoisted_3$13, toDisplayString(__props.name), 1),
1698
- __props.lead ? (openBlock(), createElementBlock("p", _hoisted_4$9, toDisplayString(__props.lead), 1)) : createCommentVNode("", true),
1699
- 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)]),
1945
+ __props.lead ? (openBlock(), createElementBlock("p", _hoisted_4$10, toDisplayString(__props.lead), 1)) : createCommentVNode("", true),
1946
+ createElementVNode("p", _hoisted_5$5, [createElementVNode("span", _hoisted_6$4, toDisplayString(__props.price), 1), __props.period ? (openBlock(), createElementBlock("span", _hoisted_7$3, toDisplayString(__props.period), 1)) : createCommentVNode("", true)]),
1700
1947
  __props.note ? (openBlock(), createElementBlock("p", _hoisted_8$2, toDisplayString(__props.note), 1)) : createCommentVNode("", true),
1701
1948
  createElementVNode("ul", _hoisted_9$2, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.features, (feature) => {
1702
1949
  return openBlock(), createElementBlock("li", {
@@ -1830,7 +2077,7 @@ var SkeletonList_default = /* @__PURE__ */ defineComponent({
1830
2077
  var _hoisted_1$22 = { class: "surface rounded-card flex flex-1 flex-col gap-0.5 p-3" };
1831
2078
  var _hoisted_2$19 = { class: "flex items-baseline gap-1" };
1832
2079
  var _hoisted_3$12 = { class: "text-ink text-xl font-semibold tabular-nums" };
1833
- var _hoisted_4$8 = { class: "text-ink-soft text-xs" };
2080
+ var _hoisted_4$9 = { class: "text-ink-soft text-xs" };
1834
2081
  //#endregion
1835
2082
  //#region src/components/StatCard.vue
1836
2083
  var StatCard_default = /* @__PURE__ */ defineComponent({
@@ -1850,7 +2097,7 @@ var StatCard_default = /* @__PURE__ */ defineComponent({
1850
2097
  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]), {
1851
2098
  key: 0,
1852
2099
  class: "text-ink-soft size-3"
1853
- })) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_4$8, toDisplayString(__props.label), 1)]);
2100
+ })) : createCommentVNode("", true)]), createElementVNode("span", _hoisted_4$9, toDisplayString(__props.label), 1)]);
1854
2101
  };
1855
2102
  }
1856
2103
  });
@@ -2010,7 +2257,7 @@ var LocaleLinks_default = /* @__PURE__ */ defineComponent({
2010
2257
  var _hoisted_1$19 = { class: "tab-bar" };
2011
2258
  var _hoisted_2$16 = ["aria-label"];
2012
2259
  var _hoisted_3$11 = { class: "tab-icon-slot" };
2013
- var _hoisted_4$7 = { class: "tab-label" };
2260
+ var _hoisted_4$8 = { class: "tab-label" };
2014
2261
  //#endregion
2015
2262
  //#region src/components/TabBar.vue
2016
2263
  var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2033,7 +2280,7 @@ var TabBar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE_
2033
2280
  "aria-current": item.key === __props.active ? "page" : void 0,
2034
2281
  onClick: _cache[0] || (_cache[0] = ($event) => unref(tapFeedback)())
2035
2282
  }, {
2036
- default: withCtx(() => [createElementVNode("span", _hoisted_3$11, [(openBlock(), createBlock(resolveDynamicComponent(item.icon), { class: "tab-icon" }))]), createElementVNode("span", _hoisted_4$7, toDisplayString(item.label), 1)]),
2283
+ default: withCtx(() => [createElementVNode("span", _hoisted_3$11, [(openBlock(), createBlock(resolveDynamicComponent(item.icon), { class: "tab-icon" }))]), createElementVNode("span", _hoisted_4$8, toDisplayString(item.label), 1)]),
2037
2284
  _: 2
2038
2285
  }, 1032, [
2039
2286
  "to",
@@ -2094,8 +2341,8 @@ var AvatarStack_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
2094
2341
  var _hoisted_1$17 = { class: "rk-cal" };
2095
2342
  var _hoisted_2$14 = { class: "rk-cal-head" };
2096
2343
  var _hoisted_3$10 = ["aria-label"];
2097
- var _hoisted_4$6 = ["aria-expanded"];
2098
- var _hoisted_5$3 = ["aria-label"];
2344
+ var _hoisted_4$7 = ["aria-expanded"];
2345
+ var _hoisted_5$4 = ["aria-label"];
2099
2346
  var _hoisted_6$3 = {
2100
2347
  key: 0,
2101
2348
  class: "rk-cal-weekdays",
@@ -2304,7 +2551,7 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2304
2551
  class: "rk-cal-title focus-ring",
2305
2552
  "aria-expanded": view.value !== "days",
2306
2553
  onClick: cycleView
2307
- }, toDisplayString(view.value === "years" ? `${years.value[0]} – ${years.value[11]}` : monthTitle.value), 9, _hoisted_4$6),
2554
+ }, toDisplayString(view.value === "years" ? `${years.value[0]} – ${years.value[11]}` : monthTitle.value), 9, _hoisted_4$7),
2308
2555
  createElementVNode("button", {
2309
2556
  type: "button",
2310
2557
  class: "rk-cal-arrow focus-ring",
@@ -2313,7 +2560,7 @@ var BaseCalendar_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @_
2313
2560
  }, [createVNode(unref(ChevronRight), {
2314
2561
  class: "size-4",
2315
2562
  "aria-hidden": "true"
2316
- })], 8, _hoisted_5$3)
2563
+ })], 8, _hoisted_5$4)
2317
2564
  ]),
2318
2565
  view.value === "days" ? (openBlock(), createElementBlock("div", _hoisted_6$3, [(openBlock(true), createElementBlock(Fragment, null, renderList(weekdays.value, (day) => {
2319
2566
  return openBlock(), createElementBlock("span", { key: day.long }, toDisplayString(day.short), 1);
@@ -2622,10 +2869,151 @@ var BaseSeparator_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @
2622
2869
  }
2623
2870
  }), [["__scopeId", "data-v-9f8cc9aa"]]);
2624
2871
  //#endregion
2872
+ //#region src/components/ColorPicker.vue?vue&type=script&setup=true&lang.ts
2873
+ var _hoisted_1$12 = { class: "rk-color-row" };
2874
+ var _hoisted_2$10 = [
2875
+ "id",
2876
+ "value",
2877
+ "disabled",
2878
+ "aria-describedby",
2879
+ "aria-invalid"
2880
+ ];
2881
+ var _hoisted_3$9 = [
2882
+ "aria-label",
2883
+ "disabled",
2884
+ "onKeydown"
2885
+ ];
2886
+ var _hoisted_4$6 = {
2887
+ key: 1,
2888
+ class: "rk-color-swatches"
2889
+ };
2890
+ var _hoisted_5$3 = [
2891
+ "aria-label",
2892
+ "aria-pressed",
2893
+ "disabled",
2894
+ "onClick"
2895
+ ];
2896
+ //#endregion
2897
+ //#region src/components/ColorPicker.vue
2898
+ var ColorPicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
2899
+ __name: "ColorPicker",
2900
+ props: {
2901
+ label: {},
2902
+ modelValue: {},
2903
+ swatches: { default: () => [] },
2904
+ hexLabel: { default: "" },
2905
+ hint: { default: "" },
2906
+ error: { default: "" },
2907
+ disabled: {
2908
+ type: Boolean,
2909
+ default: false
2910
+ },
2911
+ labelHidden: {
2912
+ type: Boolean,
2913
+ default: false
2914
+ }
2915
+ },
2916
+ emits: ["update:modelValue"],
2917
+ setup(__props, { emit: __emit }) {
2918
+ const emit = __emit;
2919
+ /** `#abc` and `#AABBCC` both mean the same colour; this is the spelling. */
2920
+ function normalise(value) {
2921
+ const text = value.trim().toLowerCase();
2922
+ const short = /^#?([0-9a-f])([0-9a-f])([0-9a-f])$/.exec(text);
2923
+ if (short) return `#${short[1]}${short[1]}${short[2]}${short[2]}${short[3]}${short[3]}`;
2924
+ const long = /^#?([0-9a-f]{6})$/.exec(text);
2925
+ return long ? `#${long[1]}` : void 0;
2926
+ }
2927
+ /**
2928
+ * The value, or nothing when it cannot be read.
2929
+ *
2930
+ * No fallback colour: a hex written here would be a colour the kit chose,
2931
+ * and the kit chooses none — a test enforces that, and it is right to.
2932
+ * Unreadable input is handed to the native control as an empty value, and
2933
+ * whatever it shows then is the platform's decision rather than ours.
2934
+ */
2935
+ const current = computed(() => normalise(__props.modelValue));
2936
+ function set(value) {
2937
+ const next = normalise(value);
2938
+ if (next && next !== current.value) emit("update:modelValue", next);
2939
+ }
2940
+ /**
2941
+ * What the hex field shows while it is being typed in.
2942
+ *
2943
+ * Not the value: "#ab" is not a colour, and rewriting the field on every
2944
+ * keystroke would make it impossible to type the third character. It
2945
+ * catches up with the value whenever the value changes from elsewhere — a
2946
+ * swatch, the native picker — and commits what it holds on blur and Enter.
2947
+ */
2948
+ const draft = ref(current.value ?? "");
2949
+ watch(current, (value) => draft.value = value ?? "");
2950
+ function commit() {
2951
+ const next = normalise(draft.value);
2952
+ if (next) set(next);
2953
+ else draft.value = current.value ?? "";
2954
+ }
2955
+ const chosen = (value) => normalise(value) === current.value;
2956
+ return (_ctx, _cache) => {
2957
+ return openBlock(), createBlock(FormField_default, {
2958
+ label: __props.label,
2959
+ hint: __props.hint,
2960
+ error: __props.error,
2961
+ "label-hidden": __props.labelHidden,
2962
+ class: "rk-color"
2963
+ }, {
2964
+ default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", _hoisted_1$12, [
2965
+ createElementVNode("span", {
2966
+ class: "rk-color-well",
2967
+ style: normalizeStyle(current.value ? { "--rk-color": current.value } : void 0)
2968
+ }, [createElementVNode("input", {
2969
+ id,
2970
+ type: "color",
2971
+ class: "rk-color-native focus-ring",
2972
+ value: current.value ?? "",
2973
+ disabled: __props.disabled,
2974
+ "aria-describedby": describedBy,
2975
+ "aria-invalid": invalid,
2976
+ onInput: _cache[0] || (_cache[0] = ($event) => set($event.target.value))
2977
+ }, null, 40, _hoisted_2$10)], 4),
2978
+ __props.hexLabel ? withDirectives((openBlock(), createElementBlock("input", {
2979
+ key: 0,
2980
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = ($event) => draft.value = $event),
2981
+ type: "text",
2982
+ class: "rk-color-hex control",
2983
+ spellcheck: "false",
2984
+ autocomplete: "off",
2985
+ "aria-label": __props.hexLabel,
2986
+ disabled: __props.disabled,
2987
+ onBlur: commit,
2988
+ onKeydown: withKeys(withModifiers(commit, ["prevent"]), ["enter"])
2989
+ }, null, 40, _hoisted_3$9)), [[vModelText, draft.value]]) : createCommentVNode("", true),
2990
+ __props.swatches.length > 0 ? (openBlock(), createElementBlock("ul", _hoisted_4$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(__props.swatches, (swatch) => {
2991
+ return openBlock(), createElementBlock("li", { key: swatch.value }, [createElementVNode("button", {
2992
+ type: "button",
2993
+ class: normalizeClass(["rk-color-swatch focus-ring", { "is-chosen": chosen(swatch.value) }]),
2994
+ style: normalizeStyle({ "--rk-color": swatch.value }),
2995
+ "aria-label": swatch.label,
2996
+ "aria-pressed": chosen(swatch.value),
2997
+ disabled: __props.disabled,
2998
+ onClick: ($event) => set(swatch.value)
2999
+ }, null, 14, _hoisted_5$3)]);
3000
+ }), 128))])) : createCommentVNode("", true)
3001
+ ])]),
3002
+ _: 1
3003
+ }, 8, [
3004
+ "label",
3005
+ "hint",
3006
+ "error",
3007
+ "label-hidden"
3008
+ ]);
3009
+ };
3010
+ }
3011
+ }), [["__scopeId", "data-v-5ca23aa9"]]);
3012
+ //#endregion
2625
3013
  //#region src/components/CopyButton.vue?vue&type=script&setup=true&lang.ts
2626
- var _hoisted_1$12 = ["aria-label"];
2627
- var _hoisted_2$10 = { key: 2 };
2628
- var _hoisted_3$9 = {
3014
+ var _hoisted_1$11 = ["aria-label"];
3015
+ var _hoisted_2$9 = { key: 2 };
3016
+ var _hoisted_3$8 = {
2629
3017
  class: "sr-only",
2630
3018
  role: "status",
2631
3019
  "aria-live": "polite"
@@ -2683,16 +3071,16 @@ var CopyButton_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
2683
3071
  class: "size-4 shrink-0",
2684
3072
  "aria-hidden": "true"
2685
3073
  })),
2686
- __props.withText ? (openBlock(), createElementBlock("span", _hoisted_2$10, toDisplayString(state.value === "copied" ? __props.copiedLabel : __props.copyLabel), 1)) : createCommentVNode("", true),
2687
- createElementVNode("span", _hoisted_3$9, toDisplayString(state.value === "copied" ? __props.copiedLabel : state.value === "failed" ? __props.errorLabel ?? "" : ""), 1)
2688
- ], 10, _hoisted_1$12);
3074
+ __props.withText ? (openBlock(), createElementBlock("span", _hoisted_2$9, toDisplayString(state.value === "copied" ? __props.copiedLabel : __props.copyLabel), 1)) : createCommentVNode("", true),
3075
+ createElementVNode("span", _hoisted_3$8, toDisplayString(state.value === "copied" ? __props.copiedLabel : state.value === "failed" ? __props.errorLabel ?? "" : ""), 1)
3076
+ ], 10, _hoisted_1$11);
2689
3077
  };
2690
3078
  }
2691
3079
  }), [["__scopeId", "data-v-c481e140"]]);
2692
3080
  //#endregion
2693
3081
  //#region src/components/DescriptionList.vue?vue&type=script&setup=true&lang.ts
2694
- var _hoisted_1$11 = { class: "rk-dl-term" };
2695
- var _hoisted_2$9 = { class: "rk-dl-value" };
3082
+ var _hoisted_1$10 = { class: "rk-dl-term" };
3083
+ var _hoisted_2$8 = { class: "rk-dl-value" };
2696
3084
  //#endregion
2697
3085
  //#region src/components/DescriptionList.vue
2698
3086
  var DescriptionList_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -2707,16 +3095,16 @@ var DescriptionList_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
2707
3095
  return openBlock(), createElementBlock("div", {
2708
3096
  key: item.key ?? item.term,
2709
3097
  class: "rk-dl-row"
2710
- }, [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)])]);
3098
+ }, [createElementVNode("dt", _hoisted_1$10, toDisplayString(item.term), 1), createElementVNode("dd", _hoisted_2$8, [renderSlot(_ctx.$slots, item.key ?? item.term, { item }, () => [createTextVNode(toDisplayString(item.description), 1)], true)])]);
2711
3099
  }), 128))], 2);
2712
3100
  };
2713
3101
  }
2714
3102
  }), [["__scopeId", "data-v-831e205b"]]);
2715
3103
  //#endregion
2716
3104
  //#region src/components/FileDrop.vue?vue&type=script&setup=true&lang.ts
2717
- var _hoisted_1$10 = { class: "rk-drop" };
2718
- var _hoisted_2$8 = ["for"];
2719
- var _hoisted_3$8 = [
3105
+ var _hoisted_1$9 = { class: "rk-drop" };
3106
+ var _hoisted_2$7 = ["for"];
3107
+ var _hoisted_3$7 = [
2720
3108
  "id",
2721
3109
  "accept",
2722
3110
  "multiple",
@@ -2802,7 +3190,7 @@ var FileDrop_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2802
3190
  const size = (bytes) => bytes >= 1048576 ? `${(bytes / 1048576).toFixed(1)} MB` : `${Math.max(1, Math.round(bytes / 1024))} KB`;
2803
3191
  const count = computed(() => model.value.length);
2804
3192
  return (_ctx, _cache) => {
2805
- return openBlock(), createElementBlock("div", _hoisted_1$10, [
3193
+ return openBlock(), createElementBlock("div", _hoisted_1$9, [
2806
3194
  createElementVNode("label", {
2807
3195
  class: normalizeClass(["rk-drop-box control", {
2808
3196
  "is-over": over.value,
@@ -2821,7 +3209,7 @@ var FileDrop_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2821
3209
  multiple: __props.multiple,
2822
3210
  disabled: __props.disabled,
2823
3211
  onChange: onInput
2824
- }, null, 40, _hoisted_3$8),
3212
+ }, null, 40, _hoisted_3$7),
2825
3213
  createVNode(unref(Upload), {
2826
3214
  class: "text-ink-soft size-6",
2827
3215
  "aria-hidden": "true"
@@ -2829,7 +3217,7 @@ var FileDrop_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2829
3217
  createElementVNode("span", _hoisted_4$5, toDisplayString(__props.label), 1),
2830
3218
  __props.hint ? (openBlock(), createElementBlock("span", _hoisted_5$2, toDisplayString(__props.hint), 1)) : createCommentVNode("", true),
2831
3219
  createElementVNode("span", _hoisted_6$2, toDisplayString(__props.browseLabel), 1)
2832
- ], 42, _hoisted_2$8),
3220
+ ], 42, _hoisted_2$7),
2833
3221
  refused.value && __props.tooLargeLabel ? (openBlock(), createElementBlock("p", _hoisted_7$1, toDisplayString(__props.tooLargeLabel), 1)) : createCommentVNode("", true),
2834
3222
  count.value ? (openBlock(), createElementBlock("ul", _hoisted_8, [(openBlock(true), createElementBlock(Fragment, null, renderList(model.value, (file, index) => {
2835
3223
  return openBlock(), createElementBlock("li", {
@@ -2860,7 +3248,7 @@ var FileDrop_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PUR
2860
3248
  }), [["__scopeId", "data-v-a42eab69"]]);
2861
3249
  //#endregion
2862
3250
  //#region src/components/TagsInput.vue?vue&type=script&setup=true&lang.ts
2863
- var _hoisted_1$9 = [
3251
+ var _hoisted_1$8 = [
2864
3252
  "id",
2865
3253
  "placeholder",
2866
3254
  "aria-describedby",
@@ -2978,7 +3366,7 @@ var TagsInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
2978
3366
  onKeydown,
2979
3367
  onPaste,
2980
3368
  onBlur: add
2981
- }, null, 40, _hoisted_1$9), [[vModelText, draft.value]])], 2)]),
3369
+ }, null, 40, _hoisted_1$8), [[vModelText, draft.value]])], 2)]),
2982
3370
  _: 1
2983
3371
  }, 8, [
2984
3372
  "label",
@@ -2992,7 +3380,7 @@ var TagsInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PU
2992
3380
  }), [["__scopeId", "data-v-1fd08921"]]);
2993
3381
  //#endregion
2994
3382
  //#region src/components/BasePopover.vue?vue&type=script&setup=true&lang.ts
2995
- var _hoisted_1$8 = ["id", "aria-label"];
3383
+ var _hoisted_1$7 = ["id", "aria-label"];
2996
3384
  var FOCUSABLE = "a[href], button:not([disabled]), input:not([disabled]), select:not([disabled]), textarea:not([disabled]), [tabindex]:not([tabindex=\"-1\"])";
2997
3385
  //#endregion
2998
3386
  //#region src/components/BasePopover.vue
@@ -3109,7 +3497,7 @@ var BasePopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3109
3497
  role: "dialog",
3110
3498
  "aria-label": __props.label,
3111
3499
  tabindex: "-1"
3112
- }, [renderSlot(_ctx.$slots, "default", { close }, void 0, true)], 14, _hoisted_1$8)) : createCommentVNode("", true)]),
3500
+ }, [renderSlot(_ctx.$slots, "default", { close }, void 0, true)], 14, _hoisted_1$7)) : createCommentVNode("", true)]),
3113
3501
  _: 3
3114
3502
  })], 544);
3115
3503
  };
@@ -3117,13 +3505,13 @@ var BasePopover_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3117
3505
  }), [["__scopeId", "data-v-1371bff2"]]);
3118
3506
  //#endregion
3119
3507
  //#region src/components/TimePicker.vue?vue&type=script&setup=true&lang.ts
3120
- var _hoisted_1$7 = [
3508
+ var _hoisted_1$6 = [
3121
3509
  "id",
3122
3510
  "aria-describedby",
3123
3511
  "disabled"
3124
3512
  ];
3125
- var _hoisted_2$7 = { class: "truncate" };
3126
- var _hoisted_3$7 = { class: "rk-time-columns" };
3513
+ var _hoisted_2$6 = { class: "truncate" };
3514
+ var _hoisted_3$6 = { class: "rk-time-columns" };
3127
3515
  //#endregion
3128
3516
  //#region src/components/TimePicker.vue
3129
3517
  var TimePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -3225,8 +3613,8 @@ var TimePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
3225
3613
  }, props), [createVNode(unref(Clock), {
3226
3614
  class: "size-4 shrink-0",
3227
3615
  "aria-hidden": "true"
3228
- }), createElementVNode("span", _hoisted_2$7, toDisplayString(shown.value || __props.placeholder), 1)], 16, _hoisted_1$7)]),
3229
- default: withCtx(() => [createElementVNode("div", _hoisted_3$7, [createVNode(BaseListbox_default, {
3616
+ }), createElementVNode("span", _hoisted_2$6, toDisplayString(shown.value || __props.placeholder), 1)], 16, _hoisted_1$6)]),
3617
+ default: withCtx(() => [createElementVNode("div", _hoisted_3$6, [createVNode(BaseListbox_default, {
3230
3618
  "model-value": chosenHour.value,
3231
3619
  options: hours.value,
3232
3620
  label: __props.hoursLabel,
@@ -3262,13 +3650,13 @@ var TimePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__P
3262
3650
  }), [["__scopeId", "data-v-0037adb2"]]);
3263
3651
  //#endregion
3264
3652
  //#region src/components/BaseDatePicker.vue?vue&type=script&setup=true&lang.ts
3265
- var _hoisted_1$6 = [
3653
+ var _hoisted_1$5 = [
3266
3654
  "id",
3267
3655
  "aria-describedby",
3268
3656
  "disabled"
3269
3657
  ];
3270
- var _hoisted_2$6 = { class: "truncate" };
3271
- var _hoisted_3$6 = ["aria-label", "disabled"];
3658
+ var _hoisted_2$5 = { class: "truncate" };
3659
+ var _hoisted_3$5 = ["aria-label", "disabled"];
3272
3660
  var _hoisted_4$4 = { class: "rk-date-panel" };
3273
3661
  var _hoisted_5$1 = {
3274
3662
  key: 0,
@@ -3358,7 +3746,7 @@ var BaseDatePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
3358
3746
  }, props), [createVNode(unref(CalendarDays), {
3359
3747
  class: "size-4 shrink-0",
3360
3748
  "aria-hidden": "true"
3361
- }), createElementVNode("span", _hoisted_2$6, toDisplayString(shown.value || __props.placeholder), 1)], 16, _hoisted_1$6), __props.clearLabel && shown.value ? (openBlock(), createElementBlock("button", {
3749
+ }), createElementVNode("span", _hoisted_2$5, toDisplayString(shown.value || __props.placeholder), 1)], 16, _hoisted_1$5), __props.clearLabel && shown.value ? (openBlock(), createElementBlock("button", {
3362
3750
  key: 0,
3363
3751
  type: "button",
3364
3752
  class: "rk-date-clear focus-ring",
@@ -3368,7 +3756,7 @@ var BaseDatePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
3368
3756
  }, [createVNode(unref(X), {
3369
3757
  class: "size-3.5",
3370
3758
  "aria-hidden": "true"
3371
- })], 8, _hoisted_3$6)) : createCommentVNode("", true)], 2)]),
3759
+ })], 8, _hoisted_3$5)) : createCommentVNode("", true)], 2)]),
3372
3760
  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) => {
3373
3761
  return openBlock(), createElementBlock("li", { key: preset.label }, [createElementVNode("button", {
3374
3762
  type: "button",
@@ -3409,12 +3797,12 @@ var BaseDatePicker_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
3409
3797
  }), [["__scopeId", "data-v-154e27fb"]]);
3410
3798
  //#endregion
3411
3799
  //#region src/components/BasePopconfirm.vue?vue&type=script&setup=true&lang.ts
3412
- var _hoisted_1$5 = { class: "rk-confirm" };
3413
- var _hoisted_2$5 = {
3800
+ var _hoisted_1$4 = { class: "rk-confirm" };
3801
+ var _hoisted_2$4 = {
3414
3802
  key: 0,
3415
3803
  class: "rk-confirm-title"
3416
3804
  };
3417
- var _hoisted_3$5 = { class: "rk-confirm-message" };
3805
+ var _hoisted_3$4 = { class: "rk-confirm-message" };
3418
3806
  var _hoisted_4$3 = { class: "rk-confirm-actions" };
3419
3807
  //#endregion
3420
3808
  //#region src/components/BasePopconfirm.vue
@@ -3454,9 +3842,9 @@ var BasePopconfirm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
3454
3842
  align: "end"
3455
3843
  }, {
3456
3844
  trigger: withCtx((slotProps) => [renderSlot(_ctx.$slots, "trigger", normalizeProps(guardReactiveProps(slotProps)), void 0, true)]),
3457
- default: withCtx(({ close }) => [createElementVNode("div", _hoisted_1$5, [
3458
- __props.title ? (openBlock(), createElementBlock("p", _hoisted_2$5, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
3459
- createElementVNode("p", _hoisted_3$5, toDisplayString(__props.message), 1),
3845
+ default: withCtx(({ close }) => [createElementVNode("div", _hoisted_1$4, [
3846
+ __props.title ? (openBlock(), createElementBlock("p", _hoisted_2$4, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
3847
+ createElementVNode("p", _hoisted_3$4, toDisplayString(__props.message), 1),
3460
3848
  createElementVNode("div", _hoisted_4$3, [createVNode(BaseButton_default, {
3461
3849
  size: "sm",
3462
3850
  variant: "secondary",
@@ -3480,8 +3868,8 @@ var BasePopconfirm_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/*
3480
3868
  }), [["__scopeId", "data-v-9453e511"]]);
3481
3869
  //#endregion
3482
3870
  //#region src/components/ToggleGroup.vue?vue&type=script&setup=true&lang.ts
3483
- var _hoisted_1$4 = ["aria-label"];
3484
- var _hoisted_2$4 = [
3871
+ var _hoisted_1$3 = ["aria-label"];
3872
+ var _hoisted_2$3 = [
3485
3873
  "aria-pressed",
3486
3874
  "aria-label",
3487
3875
  "disabled",
@@ -3489,7 +3877,7 @@ var _hoisted_2$4 = [
3489
3877
  "onClick",
3490
3878
  "onKeydown"
3491
3879
  ];
3492
- var _hoisted_3$4 = { key: 1 };
3880
+ var _hoisted_3$3 = { key: 1 };
3493
3881
  //#endregion
3494
3882
  //#region src/components/ToggleGroup.vue
3495
3883
  var ToggleGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
@@ -3572,170 +3960,12 @@ var ToggleGroup_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__
3572
3960
  key: 0,
3573
3961
  class: "rk-toggle-icon",
3574
3962
  "aria-hidden": "true"
3575
- })) : createCommentVNode("", true), !option.iconOnly ? (openBlock(), createElementBlock("span", _hoisted_3$4, toDisplayString(option.label), 1)) : createCommentVNode("", true)], 40, _hoisted_2$4);
3576
- }), 128))], 10, _hoisted_1$4);
3963
+ })) : createCommentVNode("", true), !option.iconOnly ? (openBlock(), createElementBlock("span", _hoisted_3$3, toDisplayString(option.label), 1)) : createCommentVNode("", true)], 40, _hoisted_2$3);
3964
+ }), 128))], 10, _hoisted_1$3);
3577
3965
  };
3578
3966
  }
3579
3967
  }), [["__scopeId", "data-v-9076e36f"]]);
3580
3968
  //#endregion
3581
- //#region src/components/NumberInput.vue?vue&type=script&setup=true&lang.ts
3582
- var _hoisted_1$3 = ["aria-label", "disabled"];
3583
- var _hoisted_2$3 = [
3584
- "id",
3585
- "value",
3586
- "aria-valuenow",
3587
- "aria-valuemin",
3588
- "aria-valuemax",
3589
- "aria-invalid",
3590
- "aria-describedby",
3591
- "disabled"
3592
- ];
3593
- var _hoisted_3$3 = ["aria-label", "disabled"];
3594
- //#endregion
3595
- //#region src/components/NumberInput.vue
3596
- var NumberInput_default = /*#__PURE__*/ _plugin_vue_export_helper_default(/* @__PURE__ */ defineComponent({
3597
- __name: "NumberInput",
3598
- props: /*@__PURE__*/ mergeModels({
3599
- label: {},
3600
- min: { default: () => -Infinity },
3601
- max: { default: () => Infinity },
3602
- step: { default: 1 },
3603
- decrementLabel: {},
3604
- incrementLabel: {},
3605
- error: { default: "" },
3606
- hint: { default: "" },
3607
- size: { default: "md" },
3608
- labelHidden: {
3609
- type: Boolean,
3610
- default: false
3611
- },
3612
- disabled: {
3613
- type: Boolean,
3614
- default: false
3615
- }
3616
- }, {
3617
- "modelValue": {},
3618
- "modelModifiers": {}
3619
- }),
3620
- emits: ["update:modelValue"],
3621
- setup(__props) {
3622
- /** The number, with `v-model`. `undefined` while the field is empty. */
3623
- const model = useModel(__props, "modelValue");
3624
- const places = computed(() => (String(__props.step).split(".")[1] ?? "").length);
3625
- const settle = (value) => Number(Math.min(__props.max, Math.max(__props.min, value)).toFixed(Math.min(places.value, 20)));
3626
- const draft = ref(model.value === void 0 ? "" : String(model.value));
3627
- watch(model, (value) => {
3628
- if ((draft.value === "" ? void 0 : Number(draft.value)) !== value) draft.value = value === void 0 ? "" : String(value);
3629
- });
3630
- function onInput(event) {
3631
- const text = event.target.value.replace(",", ".");
3632
- draft.value = text;
3633
- if (text.trim() === "") {
3634
- model.value = void 0;
3635
- return;
3636
- }
3637
- const value = Number(text);
3638
- if (Number.isFinite(value)) model.value = value;
3639
- }
3640
- function commit() {
3641
- if (model.value === void 0) {
3642
- draft.value = "";
3643
- return;
3644
- }
3645
- setTo(model.value);
3646
- }
3647
- function setTo(value) {
3648
- model.value = settle(value);
3649
- draft.value = String(model.value);
3650
- }
3651
- function stepBy(times) {
3652
- if (__props.disabled) return;
3653
- setTo((model.value ?? (Number.isFinite(__props.min) ? __props.min : 0)) + __props.step * times);
3654
- }
3655
- function onKeydown(event) {
3656
- const action = {
3657
- ArrowUp: () => stepBy(1),
3658
- ArrowDown: () => stepBy(-1),
3659
- PageUp: () => stepBy(10),
3660
- PageDown: () => stepBy(-10),
3661
- Home: () => {
3662
- if (Number.isFinite(__props.min)) setTo(__props.min);
3663
- },
3664
- End: () => {
3665
- if (Number.isFinite(__props.max)) setTo(__props.max);
3666
- }
3667
- }[event.key];
3668
- if (!action) return;
3669
- event.preventDefault();
3670
- action();
3671
- }
3672
- const atMin = computed(() => model.value !== void 0 && model.value <= __props.min);
3673
- const atMax = computed(() => model.value !== void 0 && model.value >= __props.max);
3674
- return (_ctx, _cache) => {
3675
- return openBlock(), createBlock(FormField_default, {
3676
- label: __props.label,
3677
- error: __props.error,
3678
- hint: __props.hint,
3679
- size: __props.size,
3680
- "label-hidden": __props.labelHidden
3681
- }, {
3682
- default: withCtx(({ id, describedBy, invalid }) => [createElementVNode("div", { class: normalizeClass(["rk-number control", {
3683
- "is-invalid": invalid,
3684
- "is-disabled": __props.disabled
3685
- }]) }, [
3686
- createElementVNode("button", {
3687
- type: "button",
3688
- class: "rk-number-step focus-ring",
3689
- "aria-label": __props.decrementLabel,
3690
- disabled: __props.disabled || atMin.value,
3691
- tabindex: "-1",
3692
- onClick: _cache[0] || (_cache[0] = ($event) => stepBy(-1))
3693
- }, [createVNode(unref(Minus), {
3694
- class: "size-4",
3695
- "aria-hidden": "true"
3696
- })], 8, _hoisted_1$3),
3697
- createElementVNode("input", {
3698
- id,
3699
- value: draft.value,
3700
- type: "text",
3701
- inputmode: "decimal",
3702
- role: "spinbutton",
3703
- autocomplete: "off",
3704
- class: "rk-number-field",
3705
- "aria-valuenow": model.value,
3706
- "aria-valuemin": Number.isFinite(__props.min) ? __props.min : void 0,
3707
- "aria-valuemax": Number.isFinite(__props.max) ? __props.max : void 0,
3708
- "aria-invalid": invalid,
3709
- "aria-describedby": describedBy,
3710
- disabled: __props.disabled,
3711
- onInput,
3712
- onBlur: commit,
3713
- onKeydown
3714
- }, null, 40, _hoisted_2$3),
3715
- createElementVNode("button", {
3716
- type: "button",
3717
- class: "rk-number-step focus-ring",
3718
- "aria-label": __props.incrementLabel,
3719
- disabled: __props.disabled || atMax.value,
3720
- tabindex: "-1",
3721
- onClick: _cache[1] || (_cache[1] = ($event) => stepBy(1))
3722
- }, [createVNode(unref(Plus), {
3723
- class: "size-4",
3724
- "aria-hidden": "true"
3725
- })], 8, _hoisted_3$3)
3726
- ], 2)]),
3727
- _: 1
3728
- }, 8, [
3729
- "label",
3730
- "error",
3731
- "hint",
3732
- "size",
3733
- "label-hidden"
3734
- ]);
3735
- };
3736
- }
3737
- }), [["__scopeId", "data-v-082bd3d7"]]);
3738
- //#endregion
3739
3969
  //#region src/components/PinInput.vue?vue&type=script&setup=true&lang.ts
3740
3970
  var _hoisted_1$2 = { class: "rk-pin" };
3741
3971
  var _hoisted_2$2 = ["aria-label"];
@@ -4174,8 +4404,8 @@ function createI18nRuntime(options) {
4174
4404
  *
4175
4405
  * The fallback keeps `vitest` and `vite dev` honest, where no define runs.
4176
4406
  */
4177
- var VERSION = "2.14.0";
4407
+ var VERSION = "2.16.0";
4178
4408
  //#endregion
4179
- 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 };
4409
+ 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, 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 };
4180
4410
 
4181
4411
  //# sourceMappingURL=index.js.map