@hina-ui/vue 1.5.0 → 1.6.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.
Files changed (68) hide show
  1. package/dist/index.js +831 -390
  2. package/dist/index.js.map +1 -1
  3. package/dist/types/components/app-shell/AppShell.vue.d.ts +1 -0
  4. package/dist/types/components/app-shell/AppShell.vue.d.ts.map +1 -1
  5. package/dist/types/components/combobox/Combobox.vue.d.ts +2 -1
  6. package/dist/types/components/combobox/Combobox.vue.d.ts.map +1 -1
  7. package/dist/types/components/combobox/composables/useCombobox.d.ts +25 -0
  8. package/dist/types/components/combobox/composables/useCombobox.d.ts.map +1 -0
  9. package/dist/types/components/combobox/composables/useOptionLabels.d.ts +3 -0
  10. package/dist/types/components/combobox/composables/useOptionLabels.d.ts.map +1 -0
  11. package/dist/types/components/multi-combobox/MultiCombobox.vue.d.ts +1 -0
  12. package/dist/types/components/multi-combobox/MultiCombobox.vue.d.ts.map +1 -1
  13. package/dist/types/components/multi-combobox/composables/useMultiCombobox.d.ts +2 -1
  14. package/dist/types/components/multi-combobox/composables/useMultiCombobox.d.ts.map +1 -1
  15. package/dist/types/components/nav-link/NavLink.vue.d.ts.map +1 -1
  16. package/dist/types/components/nav-link/nav-link.variants.d.ts +1 -18
  17. package/dist/types/components/nav-link/nav-link.variants.d.ts.map +1 -1
  18. package/dist/types/components/sidebar/Sidebar.vue.d.ts +15 -11
  19. package/dist/types/components/sidebar/Sidebar.vue.d.ts.map +1 -1
  20. package/dist/types/components/sidebar/SidebarGroup.vue.d.ts.map +1 -1
  21. package/dist/types/components/sidebar/SidebarLabel.vue.d.ts +20 -0
  22. package/dist/types/components/sidebar/SidebarLabel.vue.d.ts.map +1 -0
  23. package/dist/types/components/sidebar/sidebar.variants.d.ts +46 -0
  24. package/dist/types/components/sidebar/sidebar.variants.d.ts.map +1 -0
  25. package/dist/types/components/tree/Tree.vue.d.ts +37 -0
  26. package/dist/types/components/tree/Tree.vue.d.ts.map +1 -0
  27. package/dist/types/components/tree/TreeCheck.vue.d.ts +8 -0
  28. package/dist/types/components/tree/TreeCheck.vue.d.ts.map +1 -0
  29. package/dist/types/components/tree/composables/useTree.d.ts +23 -0
  30. package/dist/types/components/tree/composables/useTree.d.ts.map +1 -0
  31. package/dist/types/components/tree/tree.variants.d.ts +5 -0
  32. package/dist/types/components/tree/tree.variants.d.ts.map +1 -0
  33. package/dist/types/components/tree/types.d.ts +18 -0
  34. package/dist/types/components/tree/types.d.ts.map +1 -0
  35. package/dist/types/components/tree/utils/selection.d.ts +16 -0
  36. package/dist/types/components/tree/utils/selection.d.ts.map +1 -0
  37. package/dist/types/index.d.ts +3 -0
  38. package/dist/types/index.d.ts.map +1 -1
  39. package/dist/types/locale/en-US.d.ts.map +1 -1
  40. package/dist/types/locale/index.d.ts.map +1 -1
  41. package/dist/types/locale/types.d.ts +3 -0
  42. package/dist/types/locale/types.d.ts.map +1 -1
  43. package/dist/types/locale/zh-CN.d.ts.map +1 -1
  44. package/package.json +1 -1
  45. package/src/components/app-shell/AppShell.vue +2 -1
  46. package/src/components/combobox/Combobox.vue +14 -23
  47. package/src/components/combobox/composables/useCombobox.ts +63 -0
  48. package/src/components/combobox/composables/useOptionLabels.ts +20 -0
  49. package/src/components/multi-combobox/MultiCombobox.vue +2 -0
  50. package/src/components/multi-combobox/composables/useMultiCombobox.ts +5 -10
  51. package/src/components/nav-link/NavLink.vue +7 -1
  52. package/src/components/nav-link/nav-link.variants.ts +1 -10
  53. package/src/components/sidebar/Sidebar.vue +43 -33
  54. package/src/components/sidebar/SidebarGroup.vue +12 -11
  55. package/src/components/sidebar/SidebarLabel.vue +24 -0
  56. package/src/components/sidebar/sidebar.variants.ts +36 -0
  57. package/src/components/tree/Tree.vue +132 -0
  58. package/src/components/tree/TreeCheck.vue +33 -0
  59. package/src/components/tree/composables/useTree.ts +81 -0
  60. package/src/components/tree/tree.variants.ts +22 -0
  61. package/src/components/tree/types.ts +20 -0
  62. package/src/components/tree/utils/selection.ts +78 -0
  63. package/src/index.ts +3 -0
  64. package/src/locale/en-US.ts +1 -0
  65. package/src/locale/index.ts +1 -0
  66. package/src/locale/types.ts +3 -0
  67. package/src/locale/zh-CN.ts +1 -0
  68. package/src/styles/motion.css +40 -0
package/dist/index.js CHANGED
@@ -216,6 +216,7 @@ var zhCN = {
216
216
  show: "显示密码",
217
217
  hide: "隐藏密码"
218
218
  },
219
+ tree: { empty: "暂无节点" },
219
220
  treeSelect: { search: "搜索节点" },
220
221
  combobox: {
221
222
  placeholder: "输入或选择",
@@ -357,6 +358,7 @@ var enUS = {
357
358
  show: "Show password",
358
359
  hide: "Hide password"
359
360
  },
361
+ tree: { empty: "No nodes" },
360
362
  treeSelect: { search: "Search nodes" },
361
363
  combobox: {
362
364
  placeholder: "Type or choose",
@@ -489,6 +491,10 @@ function merge(base, patch) {
489
491
  ...base.passwordInput,
490
492
  ...patch.passwordInput
491
493
  },
494
+ tree: {
495
+ ...base.tree,
496
+ ...patch.tree
497
+ },
492
498
  treeSelect: {
493
499
  ...base.treeSelect,
494
500
  ...patch.treeSelect
@@ -700,7 +706,7 @@ var spinner = tv({
700
706
  });
701
707
  //#endregion
702
708
  //#region src/components/spinner/Spinner.vue?vue&type=script&setup=true&lang.ts
703
- var _hoisted_1$98 = ["aria-label"];
709
+ var _hoisted_1$100 = ["aria-label"];
704
710
  //#endregion
705
711
  //#region src/components/spinner/Spinner.vue
706
712
  var Spinner_default = /* @__PURE__ */ defineComponent({
@@ -720,13 +726,13 @@ var Spinner_default = /* @__PURE__ */ defineComponent({
720
726
  "aria-label": props.label ?? unref(t).common.loading,
721
727
  class: unref(cn)(unref(spinner)({ size: props.size })),
722
728
  style: { animation: "hn-spin var(--hn-spin-duration) var(--hn-ease-linear) infinite" }
723
- }), null, 16, _hoisted_1$98);
729
+ }), null, 16, _hoisted_1$100);
724
730
  };
725
731
  }
726
732
  });
727
733
  //#endregion
728
734
  //#region src/components/button/IconSlot.vue?vue&type=script&setup=true&lang.ts
729
- var _hoisted_1$97 = {
735
+ var _hoisted_1$99 = {
730
736
  key: 0,
731
737
  "aria-hidden": "true",
732
738
  class: "absolute inset-0 inline-flex items-center justify-center"
@@ -750,7 +756,7 @@ var IconSlot_default$1 = /* @__PURE__ */ defineComponent({
750
756
  "leave-active-class": "hn-transition",
751
757
  "leave-to-class": "scale-90 opacity-0"
752
758
  }, {
753
- default: withCtx(() => [props.swapped ? (openBlock(), createElementBlock("span", _hoisted_1$97, [createVNode(Spinner_default, { size: props.spinnerSize }, null, 8, ["size"])])) : createCommentVNode("", true)]),
759
+ default: withCtx(() => [props.swapped ? (openBlock(), createElementBlock("span", _hoisted_1$99, [createVNode(Spinner_default, { size: props.spinnerSize }, null, 8, ["size"])])) : createCommentVNode("", true)]),
754
760
  _: 1
755
761
  })], 2);
756
762
  };
@@ -946,7 +952,7 @@ function useRipple(container, surface, isDisabled) {
946
952
  }
947
953
  //#endregion
948
954
  //#region src/components/ripple/Ripple.vue?vue&type=script&setup=true&lang.ts
949
- var _hoisted_1$96 = ["data-pressed"];
955
+ var _hoisted_1$98 = ["data-pressed"];
950
956
  //#endregion
951
957
  //#region src/components/ripple/Ripple.vue
952
958
  var Ripple_default = /* @__PURE__ */ defineComponent({
@@ -969,13 +975,13 @@ var Ripple_default = /* @__PURE__ */ defineComponent({
969
975
  ref: surface,
970
976
  class: "hn-ripple-surface",
971
977
  "data-pressed": unref(pressed) ? "" : void 0
972
- }, null, 8, _hoisted_1$96)], 512);
978
+ }, null, 8, _hoisted_1$98)], 512);
973
979
  };
974
980
  }
975
981
  });
976
982
  //#endregion
977
983
  //#region src/components/button/Button.vue?vue&type=script&setup=true&lang.ts
978
- var _hoisted_1$95 = {
984
+ var _hoisted_1$97 = {
979
985
  key: 0,
980
986
  "aria-hidden": "true",
981
987
  class: "absolute inset-0 flex items-center justify-center"
@@ -1086,7 +1092,7 @@ var Button_default = /* @__PURE__ */ defineComponent({
1086
1092
  "leave-active-class": "hn-transition",
1087
1093
  "leave-to-class": "opacity-0"
1088
1094
  }, {
1089
- default: withCtx(() => [props.loading && spinnerAt.value === "center" ? (openBlock(), createElementBlock("span", _hoisted_1$95, [createVNode(Spinner_default, { size: spinnerSize.value }, null, 8, ["size"])])) : createCommentVNode("", true)]),
1095
+ default: withCtx(() => [props.loading && spinnerAt.value === "center" ? (openBlock(), createElementBlock("span", _hoisted_1$97, [createVNode(Spinner_default, { size: spinnerSize.value }, null, 8, ["size"])])) : createCommentVNode("", true)]),
1090
1096
  _: 1
1091
1097
  })
1092
1098
  ], 64))]),
@@ -1337,7 +1343,7 @@ function useCopy(text, onCopied, resetAfter = () => COPIED_RESET_MS) {
1337
1343
  }
1338
1344
  //#endregion
1339
1345
  //#region src/components/copy-button/CopyButton.vue?vue&type=script&setup=true&lang.ts
1340
- var _hoisted_1$94 = { class: "relative inline-flex size-[1em]" };
1346
+ var _hoisted_1$96 = { class: "relative inline-flex size-[1em]" };
1341
1347
  //#endregion
1342
1348
  //#region src/components/copy-button/CopyButton.vue
1343
1349
  var CopyButton_default = /* @__PURE__ */ defineComponent({
@@ -1369,7 +1375,7 @@ var CopyButton_default = /* @__PURE__ */ defineComponent({
1369
1375
  class: props.class,
1370
1376
  onClick: unref(copy)
1371
1377
  }), {
1372
- default: withCtx(() => [createElementVNode("span", _hoisted_1$94, [createVNode(Transition, {
1378
+ default: withCtx(() => [createElementVNode("span", _hoisted_1$96, [createVNode(Transition, {
1373
1379
  "enter-active-class": "hn-transition-base",
1374
1380
  "enter-from-class": "scale-90 opacity-0",
1375
1381
  "leave-active-class": "hn-transition",
@@ -1444,7 +1450,7 @@ var buttonGroup = tv({
1444
1450
  });
1445
1451
  //#endregion
1446
1452
  //#region src/components/button-group/ButtonGroup.vue?vue&type=script&setup=true&lang.ts
1447
- var _hoisted_1$93 = ["aria-label", "aria-orientation"];
1453
+ var _hoisted_1$95 = ["aria-label", "aria-orientation"];
1448
1454
  //#endregion
1449
1455
  //#region src/components/button-group/ButtonGroup.vue
1450
1456
  var ButtonGroup_default = /* @__PURE__ */ defineComponent({
@@ -1475,7 +1481,7 @@ var ButtonGroup_default = /* @__PURE__ */ defineComponent({
1475
1481
  block: props.block,
1476
1482
  divider: props.divider
1477
1483
  }), props.class))
1478
- }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$93);
1484
+ }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$95);
1479
1485
  };
1480
1486
  }
1481
1487
  });
@@ -1709,8 +1715,8 @@ var chipRemove = tv({
1709
1715
  });
1710
1716
  //#endregion
1711
1717
  //#region src/components/chip/IconSlot.vue?vue&type=script&setup=true&lang.ts
1712
- var _hoisted_1$92 = { class: "hn-collapse-body" };
1713
- var _hoisted_2$47 = {
1718
+ var _hoisted_1$94 = { class: "hn-collapse-body" };
1719
+ var _hoisted_2$49 = {
1714
1720
  key: 0,
1715
1721
  "aria-hidden": "true",
1716
1722
  class: "absolute inset-0 inline-flex items-center justify-center"
@@ -1731,7 +1737,7 @@ var IconSlot_default = /* @__PURE__ */ defineComponent({
1731
1737
  return openBlock(), createElementBlock("span", {
1732
1738
  "data-hn-icon": "",
1733
1739
  class: normalizeClass(["hn-collapse-x", props.icon || props.checked ? "hn-collapse-open" : "hn-collapse-closed"])
1734
- }, [createElementVNode("span", _hoisted_1$92, [createElementVNode("span", { class: normalizeClass(unref(chipIcon)({ size: props.size })) }, [props.icon ? (openBlock(), createElementBlock("span", {
1740
+ }, [createElementVNode("span", _hoisted_1$94, [createElementVNode("span", { class: normalizeClass(unref(chipIcon)({ size: props.size })) }, [props.icon ? (openBlock(), createElementBlock("span", {
1735
1741
  key: 0,
1736
1742
  class: normalizeClass(["hn-transition inline-flex items-center justify-center", props.checked ? "scale-90 opacity-0" : "scale-100 opacity-100"])
1737
1743
  }, [renderSlot(_ctx.$slots, "default")], 2)) : createCommentVNode("", true), createVNode(Transition, {
@@ -1740,7 +1746,7 @@ var IconSlot_default = /* @__PURE__ */ defineComponent({
1740
1746
  "leave-active-class": "hn-transition",
1741
1747
  "leave-to-class": "scale-90 opacity-0"
1742
1748
  }, {
1743
- default: withCtx(() => [props.checked ? (openBlock(), createElementBlock("span", _hoisted_2$47, [createVNode(unref(Check))])) : createCommentVNode("", true)]),
1749
+ default: withCtx(() => [props.checked ? (openBlock(), createElementBlock("span", _hoisted_2$49, [createVNode(unref(Check))])) : createCommentVNode("", true)]),
1744
1750
  _: 1
1745
1751
  })], 2)])], 2);
1746
1752
  };
@@ -1927,13 +1933,13 @@ var VisuallyHidden_default = /* @__PURE__ */ defineComponent({
1927
1933
  });
1928
1934
  //#endregion
1929
1935
  //#region src/components/lightbox/LightboxStrip.vue?vue&type=script&setup=true&lang.ts
1930
- var _hoisted_1$91 = [
1936
+ var _hoisted_1$93 = [
1931
1937
  "src",
1932
1938
  "alt",
1933
1939
  "onLoad"
1934
1940
  ];
1935
- var _hoisted_2$46 = ["src"];
1936
- var _hoisted_3$22 = [
1941
+ var _hoisted_2$48 = ["src"];
1942
+ var _hoisted_3$25 = [
1937
1943
  "src",
1938
1944
  "alt",
1939
1945
  "onLoad"
@@ -1994,7 +2000,7 @@ var LightboxStrip_default = /* @__PURE__ */ defineComponent({
1994
2000
  draggable: "false",
1995
2001
  class: "block size-full object-contain",
1996
2002
  onLoad: ($event) => emit("learn", slide.item.id, $event.target)
1997
- }, null, 40, _hoisted_1$91), createVNode(Transition, {
2003
+ }, null, 40, _hoisted_1$93), createVNode(Transition, {
1998
2004
  "enter-active-class": "hn-transition-base",
1999
2005
  "enter-from-class": "opacity-0",
2000
2006
  "leave-active-class": "hn-transition",
@@ -2007,7 +2013,7 @@ var LightboxStrip_default = /* @__PURE__ */ defineComponent({
2007
2013
  "aria-hidden": "true",
2008
2014
  draggable: "false",
2009
2015
  class: "absolute inset-0 size-full object-contain"
2010
- }, null, 8, _hoisted_2$46)) : createCommentVNode("", true)]),
2016
+ }, null, 8, _hoisted_2$48)) : createCommentVNode("", true)]),
2011
2017
  _: 1
2012
2018
  })]),
2013
2019
  _: 2
@@ -2029,7 +2035,7 @@ var LightboxStrip_default = /* @__PURE__ */ defineComponent({
2029
2035
  draggable: "false",
2030
2036
  class: "block size-full object-contain",
2031
2037
  onLoad: ($event) => emit("learn", slide.item.id, $event.target)
2032
- }, null, 40, _hoisted_3$22)]),
2038
+ }, null, 40, _hoisted_3$25)]),
2033
2039
  _: 2
2034
2040
  }, 1032, [
2035
2041
  "style",
@@ -2258,10 +2264,10 @@ function useScrollFocus(host, viewport, options) {
2258
2264
  }
2259
2265
  //#endregion
2260
2266
  //#region src/components/scroll-area/ScrollArea.vue?vue&type=script&setup=true&lang.ts
2261
- var _hoisted_1$90 = ["data-visible"];
2262
- var _hoisted_2$45 = ["data-visible"];
2263
- var _hoisted_3$21 = ["data-visible"];
2264
- var _hoisted_4$16 = ["data-visible"];
2267
+ var _hoisted_1$92 = ["data-visible"];
2268
+ var _hoisted_2$47 = ["data-visible"];
2269
+ var _hoisted_3$24 = ["data-visible"];
2270
+ var _hoisted_4$19 = ["data-visible"];
2265
2271
  //#endregion
2266
2272
  //#region src/components/scroll-area/ScrollArea.vue
2267
2273
  var ScrollArea_default = /* @__PURE__ */ defineComponent({
@@ -2364,28 +2370,28 @@ var ScrollArea_default = /* @__PURE__ */ defineComponent({
2364
2370
  "data-side": "x-start",
2365
2371
  "data-visible": unref(showXStart) ? "" : void 0,
2366
2372
  "aria-hidden": "true"
2367
- }, null, 8, _hoisted_1$90)) : createCommentVNode("", true),
2373
+ }, null, 8, _hoisted_1$92)) : createCommentVNode("", true),
2368
2374
  props.direction !== "vertical" ? (openBlock(), createElementBlock("div", {
2369
2375
  key: 1,
2370
2376
  class: "hn-scroll-shadow",
2371
2377
  "data-side": "x-end",
2372
2378
  "data-visible": unref(showXEnd) ? "" : void 0,
2373
2379
  "aria-hidden": "true"
2374
- }, null, 8, _hoisted_2$45)) : createCommentVNode("", true),
2380
+ }, null, 8, _hoisted_2$47)) : createCommentVNode("", true),
2375
2381
  props.direction !== "horizontal" ? (openBlock(), createElementBlock("div", {
2376
2382
  key: 2,
2377
2383
  class: "hn-scroll-shadow",
2378
2384
  "data-side": "y-start",
2379
2385
  "data-visible": unref(showYStart) ? "" : void 0,
2380
2386
  "aria-hidden": "true"
2381
- }, null, 8, _hoisted_3$21)) : createCommentVNode("", true),
2387
+ }, null, 8, _hoisted_3$24)) : createCommentVNode("", true),
2382
2388
  props.direction !== "horizontal" ? (openBlock(), createElementBlock("div", {
2383
2389
  key: 3,
2384
2390
  class: "hn-scroll-shadow",
2385
2391
  "data-side": "y-end",
2386
2392
  "data-visible": unref(showYEnd) ? "" : void 0,
2387
2393
  "aria-hidden": "true"
2388
- }, null, 8, _hoisted_4$16)) : createCommentVNode("", true)
2394
+ }, null, 8, _hoisted_4$19)) : createCommentVNode("", true)
2389
2395
  ], 64)) : createCommentVNode("", true)], 2);
2390
2396
  };
2391
2397
  }
@@ -2444,16 +2450,16 @@ var Highlight_default = /* @__PURE__ */ defineComponent({
2444
2450
  });
2445
2451
  //#endregion
2446
2452
  //#region src/components/lightbox/LightboxThumbs.vue?vue&type=script&setup=true&lang.ts
2447
- var _hoisted_1$89 = {
2453
+ var _hoisted_1$91 = {
2448
2454
  "data-hn-thumbs": "",
2449
2455
  class: "relative isolate flex w-max gap-2 px-4 py-3"
2450
2456
  };
2451
- var _hoisted_2$44 = [
2457
+ var _hoisted_2$46 = [
2452
2458
  "aria-label",
2453
2459
  "aria-current",
2454
2460
  "onClick"
2455
2461
  ];
2456
- var _hoisted_3$20 = ["src"];
2462
+ var _hoisted_3$23 = ["src"];
2457
2463
  //#endregion
2458
2464
  //#region src/components/lightbox/LightboxThumbs.vue
2459
2465
  var LightboxThumbs_default = /* @__PURE__ */ defineComponent({
@@ -2489,7 +2495,7 @@ var LightboxThumbs_default = /* @__PURE__ */ defineComponent({
2489
2495
  scrollbar: false,
2490
2496
  class: "max-w-full"
2491
2497
  }, {
2492
- default: withCtx(() => [createElementVNode("div", _hoisted_1$89, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.items, (item, at) => {
2498
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$91, [(openBlock(true), createElementBlock(Fragment, null, renderList(props.items, (item, at) => {
2493
2499
  return openBlock(), createElementBlock("button", {
2494
2500
  key: item.id,
2495
2501
  ref_for: true,
@@ -2506,14 +2512,14 @@ var LightboxThumbs_default = /* @__PURE__ */ defineComponent({
2506
2512
  alt: "",
2507
2513
  draggable: "false",
2508
2514
  class: "relative -z-10 size-full object-cover"
2509
- }, null, 8, _hoisted_3$20),
2515
+ }, null, 8, _hoisted_3$23),
2510
2516
  at === props.index ? (openBlock(), createBlock(Highlight_default, {
2511
2517
  key: 0,
2512
2518
  id: unref(highlightId),
2513
2519
  axis: "x",
2514
2520
  class: "ring-accent absolute inset-0 rounded-md ring-2 ring-inset"
2515
2521
  }, null, 8, ["id"])) : createCommentVNode("", true)
2516
- ], 10, _hoisted_2$44);
2522
+ ], 10, _hoisted_2$46);
2517
2523
  }), 128))])]),
2518
2524
  _: 1
2519
2525
  });
@@ -2522,8 +2528,8 @@ var LightboxThumbs_default = /* @__PURE__ */ defineComponent({
2522
2528
  });
2523
2529
  //#endregion
2524
2530
  //#region src/components/lightbox/LightboxToolbar.vue?vue&type=script&setup=true&lang.ts
2525
- var _hoisted_1$88 = { class: "flex flex-col items-center gap-1 pb-[max(--spacing(3),env(safe-area-inset-bottom))]" };
2526
- var _hoisted_2$43 = { class: "flex items-center gap-1" };
2531
+ var _hoisted_1$90 = { class: "flex flex-col items-center gap-1 pb-[max(--spacing(3),env(safe-area-inset-bottom))]" };
2532
+ var _hoisted_2$45 = { class: "flex items-center gap-1" };
2527
2533
  //#endregion
2528
2534
  //#region src/components/lightbox/LightboxToolbar.vue
2529
2535
  var LightboxToolbar_default = /* @__PURE__ */ defineComponent({
@@ -2550,12 +2556,12 @@ var LightboxToolbar_default = /* @__PURE__ */ defineComponent({
2550
2556
  const emit = __emit;
2551
2557
  const t = useUiLocale();
2552
2558
  return (_ctx, _cache) => {
2553
- return openBlock(), createElementBlock("div", _hoisted_1$88, [props.items.length > 1 ? (openBlock(), createBlock(LightboxThumbs_default, {
2559
+ return openBlock(), createElementBlock("div", _hoisted_1$90, [props.items.length > 1 ? (openBlock(), createBlock(LightboxThumbs_default, {
2554
2560
  key: 0,
2555
2561
  items: props.items,
2556
2562
  index: props.index,
2557
2563
  onSelect: _cache[0] || (_cache[0] = ($event) => emit("select", $event))
2558
- }, null, 8, ["items", "index"])) : createCommentVNode("", true), createElementVNode("div", _hoisted_2$43, [
2564
+ }, null, 8, ["items", "index"])) : createCommentVNode("", true), createElementVNode("div", _hoisted_2$45, [
2559
2565
  createVNode(IconButton_default, {
2560
2566
  label: unref(t).lightbox.zoomOut,
2561
2567
  disabled: !props.zoomed,
@@ -4160,8 +4166,8 @@ async function saveImage(url) {
4160
4166
  }
4161
4167
  //#endregion
4162
4168
  //#region src/components/lightbox/Lightbox.vue?vue&type=script&setup=true&lang.ts
4163
- var _hoisted_1$87 = ["data-hn-phase"];
4164
- var _hoisted_2$42 = {
4169
+ var _hoisted_1$89 = ["data-hn-phase"];
4170
+ var _hoisted_2$44 = {
4165
4171
  "aria-hidden": "true",
4166
4172
  class: "pointer-events-none absolute inset-0 isolate"
4167
4173
  };
@@ -4329,7 +4335,7 @@ var Lightbox_default = /* @__PURE__ */ defineComponent({
4329
4335
  onWheel: _cache[10] || (_cache[10] = (...args) => unref(gesture).onWheel && unref(gesture).onWheel(...args)),
4330
4336
  onKeydown
4331
4337
  }, [
4332
- createElementVNode("div", _hoisted_2$42, [createVNode(unref(Motion), {
4338
+ createElementVNode("div", _hoisted_2$44, [createVNode(unref(Motion), {
4333
4339
  class: "hn-scrim",
4334
4340
  style: normalizeStyle({ opacity: unref(motion).presence })
4335
4341
  }, null, 8, ["style"])]),
@@ -4399,7 +4405,7 @@ var Lightbox_default = /* @__PURE__ */ defineComponent({
4399
4405
  "hint",
4400
4406
  "presence"
4401
4407
  ])
4402
- ], 42, _hoisted_1$87)]),
4408
+ ], 42, _hoisted_1$89)]),
4403
4409
  _: 1
4404
4410
  })]),
4405
4411
  _: 1
@@ -4571,7 +4577,7 @@ function useImageGroup() {
4571
4577
  }
4572
4578
  //#endregion
4573
4579
  //#region src/components/image/Image.vue?vue&type=script&setup=true&lang.ts
4574
- var _hoisted_1$86 = [
4580
+ var _hoisted_1$88 = [
4575
4581
  "src",
4576
4582
  "alt",
4577
4583
  "decoding",
@@ -4681,7 +4687,7 @@ var Image_default = /* @__PURE__ */ defineComponent({
4681
4687
  fit: props.fit,
4682
4688
  lazy: props.lazy
4683
4689
  }), props.lazy && !unref(revealed) && "opacity-0", props.imageClass)
4684
- }), null, 16, _hoisted_1$86)) : unref(failed) ? renderSlot(_ctx.$slots, "error", {}, void 0, void 0, 1) : renderSlot(_ctx.$slots, "empty", {}, void 0, void 0, 2),
4690
+ }), null, 16, _hoisted_1$88)) : unref(failed) ? renderSlot(_ctx.$slots, "error", {}, void 0, void 0, 1) : renderSlot(_ctx.$slots, "empty", {}, void 0, void 0, 2),
4685
4691
  unref(showSkeleton) ? (openBlock(), createElementBlock("span", {
4686
4692
  key: 3,
4687
4693
  ref_key: "skeletonEl",
@@ -4962,7 +4968,7 @@ var indicator = tv({
4962
4968
  });
4963
4969
  //#endregion
4964
4970
  //#region src/components/indicator/Indicator.vue?vue&type=script&setup=true&lang.ts
4965
- var _hoisted_1$85 = {
4971
+ var _hoisted_1$87 = {
4966
4972
  key: 0,
4967
4973
  "aria-hidden": "true",
4968
4974
  class: "hn-ping absolute inset-0 rounded-full bg-inherit"
@@ -4993,7 +4999,7 @@ var Indicator_default = /* @__PURE__ */ defineComponent({
4993
4999
  size: props.size
4994
5000
  }), props.class))
4995
5001
  }, {
4996
- default: withCtx(() => [props.pulse ? (openBlock(), createElementBlock("span", _hoisted_1$85)) : createCommentVNode("", true), props.label ? (openBlock(), createBlock(VisuallyHidden_default, { key: 1 }, {
5002
+ default: withCtx(() => [props.pulse ? (openBlock(), createElementBlock("span", _hoisted_1$87)) : createCommentVNode("", true), props.label ? (openBlock(), createBlock(VisuallyHidden_default, { key: 1 }, {
4997
5003
  default: withCtx(() => [createTextVNode(toDisplayString(props.label), 1)]),
4998
5004
  _: 1
4999
5005
  })) : createCommentVNode("", true)]),
@@ -5045,8 +5051,8 @@ var calloutIcons = {
5045
5051
  };
5046
5052
  //#endregion
5047
5053
  //#region src/components/callout/Callout.vue?vue&type=script&setup=true&lang.ts
5048
- var _hoisted_1$84 = { class: "flex min-w-0 flex-1 flex-col gap-1" };
5049
- var _hoisted_2$41 = {
5054
+ var _hoisted_1$86 = { class: "flex min-w-0 flex-1 flex-col gap-1" };
5055
+ var _hoisted_2$43 = {
5050
5056
  key: 0,
5051
5057
  class: "text-fg font-medium"
5052
5058
  };
@@ -5074,7 +5080,7 @@ var Callout_default = /* @__PURE__ */ defineComponent({
5074
5080
  key: 0,
5075
5081
  class: normalizeClass(unref(calloutIcon)({ tone: props.tone })),
5076
5082
  "aria-hidden": "true"
5077
- }, null, 8, ["class"])) : createCommentVNode("", true)]), createElementVNode("div", _hoisted_1$84, [props.title ? (openBlock(), createElementBlock("p", _hoisted_2$41, toDisplayString(props.title), 1)) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")])], 2);
5083
+ }, null, 8, ["class"])) : createCommentVNode("", true)]), createElementVNode("div", _hoisted_1$86, [props.title ? (openBlock(), createElementBlock("p", _hoisted_2$43, toDisplayString(props.title), 1)) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")])], 2);
5078
5084
  };
5079
5085
  }
5080
5086
  });
@@ -5128,19 +5134,19 @@ function useCollapseGap() {
5128
5134
  }
5129
5135
  //#endregion
5130
5136
  //#region src/components/alert/Alert.vue?vue&type=script&setup=true&lang.ts
5131
- var _hoisted_1$83 = {
5137
+ var _hoisted_1$85 = {
5132
5138
  key: 0,
5133
5139
  "data-hn-alert": "",
5134
5140
  class: "hn-collapse"
5135
5141
  };
5136
- var _hoisted_2$40 = { class: "hn-collapse-body" };
5137
- var _hoisted_3$19 = ["role"];
5138
- var _hoisted_4$15 = { class: "flex min-w-0 flex-1 flex-col gap-1" };
5139
- var _hoisted_5$11 = {
5142
+ var _hoisted_2$42 = { class: "hn-collapse-body" };
5143
+ var _hoisted_3$22 = ["role"];
5144
+ var _hoisted_4$18 = { class: "flex min-w-0 flex-1 flex-col gap-1" };
5145
+ var _hoisted_5$12 = {
5140
5146
  key: 0,
5141
5147
  class: "text-fg font-medium"
5142
5148
  };
5143
- var _hoisted_6$8 = {
5149
+ var _hoisted_6$9 = {
5144
5150
  key: 0,
5145
5151
  class: "flex shrink-0 items-center gap-2 self-center"
5146
5152
  };
@@ -5184,7 +5190,7 @@ var Alert_default = /* @__PURE__ */ defineComponent({
5184
5190
  "leave-from-class": "hn-collapse-open",
5185
5191
  "leave-to-class": "hn-collapse-closed"
5186
5192
  }, toHandlers(unref(hooks))), {
5187
- default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$83, [createElementVNode("div", _hoisted_2$40, [createElementVNode("div", {
5193
+ default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$85, [createElementVNode("div", _hoisted_2$42, [createElementVNode("div", {
5188
5194
  role: role.value,
5189
5195
  class: normalizeClass(unref(cn)(unref(callout)({ tone: props.tone }), props.class))
5190
5196
  }, [
@@ -5193,15 +5199,15 @@ var Alert_default = /* @__PURE__ */ defineComponent({
5193
5199
  class: normalizeClass(unref(calloutIcon)({ tone: props.tone })),
5194
5200
  "aria-hidden": "true"
5195
5201
  }, null, 8, ["class"])) : createCommentVNode("", true)]),
5196
- createElementVNode("div", _hoisted_4$15, [props.title ? (openBlock(), createElementBlock("p", _hoisted_5$11, toDisplayString(props.title), 1)) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")]),
5197
- unref(slots).actions ? (openBlock(), createElementBlock("div", _hoisted_6$8, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true),
5202
+ createElementVNode("div", _hoisted_4$18, [props.title ? (openBlock(), createElementBlock("p", _hoisted_5$12, toDisplayString(props.title), 1)) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")]),
5203
+ unref(slots).actions ? (openBlock(), createElementBlock("div", _hoisted_6$9, [renderSlot(_ctx.$slots, "actions")])) : createCommentVNode("", true),
5198
5204
  props.closable ? (openBlock(), createBlock(CloseButton_default, {
5199
5205
  key: 1,
5200
5206
  size: "sm",
5201
5207
  class: "-my-0.5 -me-1",
5202
5208
  onClick: close
5203
5209
  })) : createCommentVNode("", true)
5204
- ], 10, _hoisted_3$19)])])) : createCommentVNode("", true)]),
5210
+ ], 10, _hoisted_3$22)])])) : createCommentVNode("", true)]),
5205
5211
  _: 3
5206
5212
  }, 16);
5207
5213
  };
@@ -5753,7 +5759,7 @@ var PaginationPage_default = /* @__PURE__ */ defineComponent({
5753
5759
  });
5754
5760
  //#endregion
5755
5761
  //#region src/components/pagination/PaginationEllipsis.vue?vue&type=script&setup=true&lang.ts
5756
- var _hoisted_1$82 = {
5762
+ var _hoisted_1$84 = {
5757
5763
  class: "grid",
5758
5764
  "aria-hidden": "true"
5759
5765
  };
@@ -5800,7 +5806,7 @@ var PaginationEllipsis_default = /* @__PURE__ */ defineComponent({
5800
5806
  default: withCtx(() => [renderSlot(_ctx.$slots, "default", {
5801
5807
  side: props.range.side,
5802
5808
  expanded: expanded.value
5803
- }, () => [createElementVNode("span", _hoisted_1$82, [createVNode(unref(MoreHorizontal), { class: normalizeClass(["hn-transition-base [grid-area:1/1]", expanded.value ? "scale-90 opacity-0" : "scale-100 opacity-100"]) }, null, 8, ["class"]), (openBlock(), createBlock(resolveDynamicComponent(props.range.side === "prev" ? unref(ChevronLeft) : unref(ChevronRight)), { class: normalizeClass([[unref(paginationArrow)({ dir: unref(direction) }), expanded.value ? "scale-100 opacity-100" : "scale-90 opacity-0"], "hn-transition-base [grid-area:1/1]"]) }, null, 8, ["class"]))])])]),
5809
+ }, () => [createElementVNode("span", _hoisted_1$84, [createVNode(unref(MoreHorizontal), { class: normalizeClass(["hn-transition-base [grid-area:1/1]", expanded.value ? "scale-90 opacity-0" : "scale-100 opacity-100"]) }, null, 8, ["class"]), (openBlock(), createBlock(resolveDynamicComponent(props.range.side === "prev" ? unref(ChevronLeft) : unref(ChevronRight)), { class: normalizeClass([[unref(paginationArrow)({ dir: unref(direction) }), expanded.value ? "scale-100 opacity-100" : "scale-90 opacity-0"], "hn-transition-base [grid-area:1/1]"]) }, null, 8, ["class"]))])])]),
5804
5810
  _: 3
5805
5811
  }, 8, [
5806
5812
  "size",
@@ -6393,8 +6399,8 @@ function usePaginationEllipsis(host, items) {
6393
6399
  }
6394
6400
  //#endregion
6395
6401
  //#region src/components/pagination/PaginationPages.vue?vue&type=script&setup=true&lang.ts
6396
- var _hoisted_1$81 = { key: 0 };
6397
- var _hoisted_2$39 = { key: 1 };
6402
+ var _hoisted_1$83 = { key: 0 };
6403
+ var _hoisted_2$41 = { key: 1 };
6398
6404
  //#endregion
6399
6405
  //#region src/components/pagination/PaginationPages.vue
6400
6406
  var PaginationPages_default = /* @__PURE__ */ defineComponent({
@@ -6410,7 +6416,7 @@ var PaginationPages_default = /* @__PURE__ */ defineComponent({
6410
6416
  const ellipsis = usePaginationEllipsis(toRef(props, "host"), () => props.items);
6411
6417
  return (_ctx, _cache) => {
6412
6418
  return openBlock(), createElementBlock(Fragment, null, [
6413
- unref(showFirstLast) ? (openBlock(), createElementBlock("li", _hoisted_1$81, [createVNode(PaginationControl_default, {
6419
+ unref(showFirstLast) ? (openBlock(), createElementBlock("li", _hoisted_1$83, [createVNode(PaginationControl_default, {
6414
6420
  action: "first",
6415
6421
  size: unref(size),
6416
6422
  dir: unref(direction)
@@ -6443,7 +6449,7 @@ var PaginationPages_default = /* @__PURE__ */ defineComponent({
6443
6449
  size: unref(size),
6444
6450
  dir: unref(direction)
6445
6451
  }, null, 8, ["size", "dir"])]),
6446
- unref(showFirstLast) ? (openBlock(), createElementBlock("li", _hoisted_2$39, [createVNode(PaginationControl_default, {
6452
+ unref(showFirstLast) ? (openBlock(), createElementBlock("li", _hoisted_2$41, [createVNode(PaginationControl_default, {
6447
6453
  action: "last",
6448
6454
  size: unref(size),
6449
6455
  dir: unref(direction)
@@ -6732,16 +6738,16 @@ function flattenOptions(items) {
6732
6738
  }
6733
6739
  //#endregion
6734
6740
  //#region src/components/select/SelectList.vue?vue&type=script&setup=true&lang.ts
6735
- var _hoisted_1$80 = { class: "min-w-0 flex-1" };
6736
- var _hoisted_2$38 = { class: "block truncate" };
6737
- var _hoisted_3$18 = {
6741
+ var _hoisted_1$82 = { class: "min-w-0 flex-1" };
6742
+ var _hoisted_2$40 = { class: "block truncate" };
6743
+ var _hoisted_3$21 = {
6738
6744
  key: 0,
6739
6745
  class: "text-muted block truncate text-xs"
6740
6746
  };
6741
- var _hoisted_4$14 = { class: "flex size-4 shrink-0 items-center justify-center" };
6742
- var _hoisted_5$10 = { class: "min-w-0 flex-1" };
6743
- var _hoisted_6$7 = { class: "block truncate" };
6744
- var _hoisted_7$5 = {
6747
+ var _hoisted_4$17 = { class: "flex size-4 shrink-0 items-center justify-center" };
6748
+ var _hoisted_5$11 = { class: "min-w-0 flex-1" };
6749
+ var _hoisted_6$8 = { class: "block truncate" };
6750
+ var _hoisted_7$6 = {
6745
6751
  key: 0,
6746
6752
  class: "text-muted block truncate text-xs"
6747
6753
  };
@@ -6791,9 +6797,9 @@ var SelectList_default = /* @__PURE__ */ defineComponent({
6791
6797
  class: normalizeClass(unref(selectItem)())
6792
6798
  }, {
6793
6799
  default: withCtx(() => [createVNode(unref(SelectItemText), { "as-child": "" }, {
6794
- default: withCtx(() => [createElementVNode("span", _hoisted_1$80, [renderSlot(_ctx.$slots, "option", { option }, () => [createElementVNode("span", _hoisted_2$38, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_3$18, toDisplayString(option.description), 1)) : createCommentVNode("", true)])])]),
6800
+ default: withCtx(() => [createElementVNode("span", _hoisted_1$82, [renderSlot(_ctx.$slots, "option", { option }, () => [createElementVNode("span", _hoisted_2$40, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_3$21, toDisplayString(option.description), 1)) : createCommentVNode("", true)])])]),
6795
6801
  _: 2
6796
- }, 1024), createElementVNode("span", _hoisted_4$14, [createVNode(unref(SelectItemIndicator), null, {
6802
+ }, 1024), createElementVNode("span", _hoisted_4$17, [createVNode(unref(SelectItemIndicator), null, {
6797
6803
  default: withCtx(() => [createVNode(unref(Check))]),
6798
6804
  _: 1
6799
6805
  })])]),
@@ -6814,7 +6820,7 @@ var SelectList_default = /* @__PURE__ */ defineComponent({
6814
6820
  class: normalizeClass(unref(selectItem)())
6815
6821
  }, {
6816
6822
  default: withCtx(() => [createVNode(unref(SelectItemText), { "as-child": "" }, {
6817
- default: withCtx(() => [createElementVNode("span", _hoisted_5$10, [renderSlot(_ctx.$slots, "option", { option: item }, () => [createElementVNode("span", _hoisted_6$7, toDisplayString(item.label), 1), item.description ? (openBlock(), createElementBlock("span", _hoisted_7$5, toDisplayString(item.description), 1)) : createCommentVNode("", true)])])]),
6823
+ default: withCtx(() => [createElementVNode("span", _hoisted_5$11, [renderSlot(_ctx.$slots, "option", { option: item }, () => [createElementVNode("span", _hoisted_6$8, toDisplayString(item.label), 1), item.description ? (openBlock(), createElementBlock("span", _hoisted_7$6, toDisplayString(item.description), 1)) : createCommentVNode("", true)])])]),
6818
6824
  _: 2
6819
6825
  }, 1024), createElementVNode("span", _hoisted_8$3, [createVNode(unref(SelectItemIndicator), null, {
6820
6826
  default: withCtx(() => [createVNode(unref(Check))]),
@@ -6870,7 +6876,7 @@ function useClearTransition(visible) {
6870
6876
  }
6871
6877
  //#endregion
6872
6878
  //#region src/components/select/Select.vue?vue&type=script&setup=true&lang.ts
6873
- var _hoisted_1$79 = [
6879
+ var _hoisted_1$81 = [
6874
6880
  "dir",
6875
6881
  "data-invalid",
6876
6882
  "data-disabled"
@@ -6988,7 +6994,7 @@ var Select_default = /* @__PURE__ */ defineComponent({
6988
6994
  _: 1
6989
6995
  }, 8, ["label"])], 2)) : createCommentVNode("", true)]),
6990
6996
  _: 1
6991
- }, 16)], 10, _hoisted_1$79), createVNode(SelectList_default, {
6997
+ }, 16)], 10, _hoisted_1$81), createVNode(SelectList_default, {
6992
6998
  options: props.options,
6993
6999
  keyboard: keyboard.value
6994
7000
  }, {
@@ -7077,12 +7083,12 @@ function focusFieldFrom(root, target) {
7077
7083
  }
7078
7084
  //#endregion
7079
7085
  //#region src/components/input/InputBase.vue?vue&type=script&setup=true&lang.ts
7080
- var _hoisted_1$78 = [
7086
+ var _hoisted_1$80 = [
7081
7087
  "data-invalid",
7082
7088
  "data-disabled",
7083
7089
  "aria-busy"
7084
7090
  ];
7085
- var _hoisted_2$37 = [
7091
+ var _hoisted_2$39 = [
7086
7092
  "id",
7087
7093
  "disabled",
7088
7094
  "aria-invalid",
@@ -7169,7 +7175,7 @@ var InputBase_default = /* @__PURE__ */ defineComponent({
7169
7175
  leading: !!unref(slots).leading,
7170
7176
  trailing: clearing.value || trailingSpinner.value || !!unref(slots).trailing
7171
7177
  })
7172
- }), null, 16, _hoisted_2$37), [[vModelDynamic, model.value]]),
7178
+ }), null, 16, _hoisted_2$39), [[vModelDynamic, model.value]]),
7173
7179
  createVNode(Transition, {
7174
7180
  "enter-active-class": "hn-transition-base",
7175
7181
  "enter-from-class": "scale-90 opacity-0",
@@ -7205,7 +7211,7 @@ var InputBase_default = /* @__PURE__ */ defineComponent({
7205
7211
  key: 1,
7206
7212
  class: normalizeClass(unref(inputAdornment)())
7207
7213
  }, [renderSlot(_ctx.$slots, "trailing")], 2)) : createCommentVNode("", true)
7208
- ], 10, _hoisted_1$78);
7214
+ ], 10, _hoisted_1$80);
7209
7215
  };
7210
7216
  }
7211
7217
  });
@@ -7409,18 +7415,18 @@ function usePagination(props, model, sizeModel, change) {
7409
7415
  }
7410
7416
  //#endregion
7411
7417
  //#region src/components/pagination/Pagination.vue?vue&type=script&setup=true&lang.ts
7412
- var _hoisted_1$77 = ["dir", "aria-busy"];
7413
- var _hoisted_2$36 = {
7418
+ var _hoisted_1$79 = ["dir", "aria-busy"];
7419
+ var _hoisted_2$38 = {
7414
7420
  key: 0,
7415
7421
  class: "relative min-h-0 flex-auto"
7416
7422
  };
7417
- var _hoisted_3$17 = ["inert"];
7418
- var _hoisted_4$13 = [
7423
+ var _hoisted_3$20 = ["inert"];
7424
+ var _hoisted_4$16 = [
7419
7425
  "aria-label",
7420
7426
  "inert",
7421
7427
  "data-disabled"
7422
7428
  ];
7423
- var _hoisted_5$9 = {
7429
+ var _hoisted_5$10 = {
7424
7430
  key: 1,
7425
7431
  class: "flex max-w-full flex-wrap items-center gap-3"
7426
7432
  };
@@ -7488,7 +7494,7 @@ var Pagination_default = /* @__PURE__ */ defineComponent({
7488
7494
  dir: unref(rootDirection),
7489
7495
  "aria-busy": props.pending || void 0,
7490
7496
  class: unref(cn)("max-w-full", _ctx.$slots.list && "flex min-h-0 flex-col gap-3", props.class)
7491
- }), [_ctx.$slots.list ? (openBlock(), createElementBlock("div", _hoisted_2$36, [createElementVNode("div", { inert: props.pending || void 0 }, [renderSlot(_ctx.$slots, "list", normalizeProps(guardReactiveProps(unref(state))))], 8, _hoisted_3$17), createVNode(LoadingOverlay_default, { visible: props.pending }, null, 8, ["visible"])])) : createCommentVNode("", true), !props.hideSinglePage || unref(state).pageCount > 1 ? (openBlock(), createBlock(unref(PaginationRoot), {
7497
+ }), [_ctx.$slots.list ? (openBlock(), createElementBlock("div", _hoisted_2$38, [createElementVNode("div", { inert: props.pending || void 0 }, [renderSlot(_ctx.$slots, "list", normalizeProps(guardReactiveProps(unref(state))))], 8, _hoisted_3$20), createVNode(LoadingOverlay_default, { visible: props.pending }, null, 8, ["visible"])])) : createCommentVNode("", true), !props.hideSinglePage || unref(state).pageCount > 1 ? (openBlock(), createBlock(unref(PaginationRoot), {
7492
7498
  key: 1,
7493
7499
  page: unref(page),
7494
7500
  total: unref(total),
@@ -7515,8 +7521,8 @@ var Pagination_default = /* @__PURE__ */ defineComponent({
7515
7521
  fn: withCtx((slotProps) => [renderSlot(_ctx.$slots, "ellipsis", normalizeProps(guardReactiveProps(slotProps)))]),
7516
7522
  key: "1"
7517
7523
  } : void 0]), 1024),
7518
- props.pageSizeOptions?.length || props.showJump ? (openBlock(), createElementBlock("div", _hoisted_5$9, [props.pageSizeOptions?.length ? (openBlock(), createBlock(PaginationSize_default, { key: 0 })) : createCommentVNode("", true), props.showJump ? (openBlock(), createBlock(PaginationJump_default, { key: 1 })) : createCommentVNode("", true)])) : createCommentVNode("", true)
7519
- ])], 10, _hoisted_4$13)]),
7524
+ props.pageSizeOptions?.length || props.showJump ? (openBlock(), createElementBlock("div", _hoisted_5$10, [props.pageSizeOptions?.length ? (openBlock(), createBlock(PaginationSize_default, { key: 0 })) : createCommentVNode("", true), props.showJump ? (openBlock(), createBlock(PaginationJump_default, { key: 1 })) : createCommentVNode("", true)])) : createCommentVNode("", true)
7525
+ ])], 10, _hoisted_4$16)]),
7520
7526
  _: 3
7521
7527
  }, 8, [
7522
7528
  "page",
@@ -7526,13 +7532,13 @@ var Pagination_default = /* @__PURE__ */ defineComponent({
7526
7532
  "show-edges",
7527
7533
  "disabled",
7528
7534
  "onUpdate:page"
7529
- ])) : createCommentVNode("", true)], 16, _hoisted_1$77);
7535
+ ])) : createCommentVNode("", true)], 16, _hoisted_1$79);
7530
7536
  };
7531
7537
  }
7532
7538
  });
7533
7539
  //#endregion
7534
7540
  //#region src/components/prev-next/PrevNext.vue?vue&type=script&setup=true&lang.ts
7535
- var _hoisted_1$76 = ["aria-label"];
7541
+ var _hoisted_1$78 = ["aria-label"];
7536
7542
  //#endregion
7537
7543
  //#region src/components/prev-next/PrevNext.vue
7538
7544
  var PrevNext_default = /* @__PURE__ */ defineComponent({
@@ -7549,7 +7555,7 @@ var PrevNext_default = /* @__PURE__ */ defineComponent({
7549
7555
  return openBlock(), createElementBlock("nav", {
7550
7556
  "aria-label": props.label ?? unref(t).pagination.navLabel,
7551
7557
  class: normalizeClass(unref(cn)("grid gap-4 sm:grid-cols-2", props.class))
7552
- }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$76);
7558
+ }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$78);
7553
7559
  };
7554
7560
  }
7555
7561
  });
@@ -7573,7 +7579,7 @@ var prevNextEyebrow = tv({
7573
7579
  });
7574
7580
  //#endregion
7575
7581
  //#region src/components/prev-next/PrevNextLink.vue?vue&type=script&setup=true&lang.ts
7576
- var _hoisted_1$75 = { class: "text-fg font-medium" };
7582
+ var _hoisted_1$77 = { class: "text-fg font-medium" };
7577
7583
  //#endregion
7578
7584
  //#region src/components/prev-next/PrevNextLink.vue
7579
7585
  var PrevNextLink_default = /* @__PURE__ */ defineComponent({
@@ -7609,7 +7615,7 @@ var PrevNextLink_default = /* @__PURE__ */ defineComponent({
7609
7615
  class: "size-4",
7610
7616
  "aria-hidden": "true"
7611
7617
  })), createTextVNode(" " + toDisplayString(props.label ?? (props.direction === "prev" ? unref(t).pagination.prev : unref(t).pagination.next)), 1)], 2),
7612
- createElementVNode("span", _hoisted_1$75, [renderSlot(_ctx.$slots, "default")])
7618
+ createElementVNode("span", _hoisted_1$77, [renderSlot(_ctx.$slots, "default")])
7613
7619
  ]),
7614
7620
  _: 3
7615
7621
  }, 16, [
@@ -7686,8 +7692,8 @@ var tableCell = tv({
7686
7692
  });
7687
7693
  //#endregion
7688
7694
  //#region src/components/table/Table.vue?vue&type=script&setup=true&lang.ts
7689
- var _hoisted_1$74 = { class: "hn-table" };
7690
- var _hoisted_2$35 = { key: 0 };
7695
+ var _hoisted_1$76 = { class: "hn-table" };
7696
+ var _hoisted_2$37 = { key: 0 };
7691
7697
  //#endregion
7692
7698
  //#region src/components/table/Table.vue
7693
7699
  var Table_default = /* @__PURE__ */ defineComponent({
@@ -7717,7 +7723,7 @@ var Table_default = /* @__PURE__ */ defineComponent({
7717
7723
  stickyHeader: props.stickyHeader
7718
7724
  }), props.class))
7719
7725
  }, {
7720
- default: withCtx(() => [createElementVNode("table", _hoisted_1$74, [props.caption ? (openBlock(), createElementBlock("caption", _hoisted_2$35, [createElementVNode("span", null, toDisplayString(props.caption), 1)])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")])]),
7726
+ default: withCtx(() => [createElementVNode("table", _hoisted_1$76, [props.caption ? (openBlock(), createElementBlock("caption", _hoisted_2$37, [createElementVNode("span", null, toDisplayString(props.caption), 1)])) : createCommentVNode("", true), renderSlot(_ctx.$slots, "default")])]),
7721
7727
  _: 3
7722
7728
  }, 8, ["direction", "class"]);
7723
7729
  };
@@ -7764,7 +7770,7 @@ var TableRow_default = /* @__PURE__ */ defineComponent({
7764
7770
  });
7765
7771
  //#endregion
7766
7772
  //#region src/components/table/TableHead.vue?vue&type=script&setup=true&lang.ts
7767
- var _hoisted_1$73 = ["scope"];
7773
+ var _hoisted_1$75 = ["scope"];
7768
7774
  //#endregion
7769
7775
  //#region src/components/table/TableHead.vue
7770
7776
  var TableHead_default = /* @__PURE__ */ defineComponent({
@@ -7789,7 +7795,7 @@ var TableHead_default = /* @__PURE__ */ defineComponent({
7789
7795
  sticky: props.sticky,
7790
7796
  head: true
7791
7797
  }), props.class))
7792
- }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$73);
7798
+ }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$75);
7793
7799
  };
7794
7800
  }
7795
7801
  });
@@ -8279,8 +8285,8 @@ var textareaField = tv({ base: [
8279
8285
  ] });
8280
8286
  //#endregion
8281
8287
  //#region src/components/textarea/Textarea.vue?vue&type=script&setup=true&lang.ts
8282
- var _hoisted_1$72 = ["data-invalid", "data-disabled"];
8283
- var _hoisted_2$34 = [
8288
+ var _hoisted_1$74 = ["data-invalid", "data-disabled"];
8289
+ var _hoisted_2$36 = [
8284
8290
  "id",
8285
8291
  "rows",
8286
8292
  "disabled",
@@ -8349,9 +8355,9 @@ var Textarea_default = /* @__PURE__ */ defineComponent({
8349
8355
  "aria-describedby": unref(describedBy),
8350
8356
  class: unref(textareaField)(),
8351
8357
  onInput: _cache[1] || (_cache[1] = (...args) => unref(fit) && unref(fit)(...args))
8352
- }), null, 16, _hoisted_2$34), [[vModelText, model.value]])]),
8358
+ }), null, 16, _hoisted_2$36), [[vModelText, model.value]])]),
8353
8359
  _: 1
8354
- }, 512)], 14, _hoisted_1$72);
8360
+ }, 512)], 14, _hoisted_1$74);
8355
8361
  };
8356
8362
  }
8357
8363
  });
@@ -8485,7 +8491,7 @@ var NumberInput_default = /* @__PURE__ */ defineComponent({
8485
8491
  });
8486
8492
  //#endregion
8487
8493
  //#region src/components/password-input/PasswordInput.vue?vue&type=script&setup=true&lang.ts
8488
- var _hoisted_1$71 = { class: "relative inline-flex" };
8494
+ var _hoisted_1$73 = { class: "relative inline-flex" };
8489
8495
  //#endregion
8490
8496
  //#region src/components/password-input/PasswordInput.vue
8491
8497
  var PasswordInput_default = /* @__PURE__ */ defineComponent({
@@ -8529,7 +8535,7 @@ var PasswordInput_default = /* @__PURE__ */ defineComponent({
8529
8535
  disabled: props.disabled,
8530
8536
  onClick: _cache[0] || (_cache[0] = ($event) => visible.value = !visible.value)
8531
8537
  }, {
8532
- default: withCtx(() => [createElementVNode("span", _hoisted_1$71, [createVNode(Transition, {
8538
+ default: withCtx(() => [createElementVNode("span", _hoisted_1$73, [createVNode(Transition, {
8533
8539
  "enter-active-class": "hn-transition-base",
8534
8540
  "enter-from-class": "scale-90 opacity-0",
8535
8541
  "leave-active-class": "hn-transition absolute",
@@ -8624,7 +8630,7 @@ var inputGroup = tv({
8624
8630
  var inputGroupAddon = tv({ base: "text-muted flex shrink-0 items-center gap-2 px-[var(--hn-input-px)] whitespace-nowrap [&>svg]:size-[var(--hn-input-icon)]" });
8625
8631
  //#endregion
8626
8632
  //#region src/components/input-group/InputGroup.vue?vue&type=script&setup=true&lang.ts
8627
- var _hoisted_1$70 = ["data-invalid", "data-disabled"];
8633
+ var _hoisted_1$72 = ["data-invalid", "data-disabled"];
8628
8634
  //#endregion
8629
8635
  //#region src/components/input-group/InputGroup.vue
8630
8636
  var InputGroup_default = /* @__PURE__ */ defineComponent({
@@ -8656,7 +8662,7 @@ var InputGroup_default = /* @__PURE__ */ defineComponent({
8656
8662
  size: props.size
8657
8663
  }), unref(inputGroup)({ divided: props.variant !== "bare" }), props.class)),
8658
8664
  onClick: _cache[0] || (_cache[0] = ($event) => unref(focusFieldFrom)($event.currentTarget, $event.target))
8659
- }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$70);
8665
+ }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$72);
8660
8666
  };
8661
8667
  }
8662
8668
  });
@@ -8686,18 +8692,18 @@ var multiSelectTrigger = tv({ base: [
8686
8692
  var multiSelectChips = tv({ base: "flex min-w-0 flex-1 items-center gap-1 overflow-hidden" });
8687
8693
  //#endregion
8688
8694
  //#region src/components/multi-select/MultiSelect.vue?vue&type=script&setup=true&lang.ts
8689
- var _hoisted_1$69 = { class: "min-w-0 truncate" };
8690
- var _hoisted_2$33 = {
8695
+ var _hoisted_1$71 = { class: "min-w-0 truncate" };
8696
+ var _hoisted_2$35 = {
8691
8697
  key: 1,
8692
8698
  class: "min-w-0 truncate"
8693
8699
  };
8694
- var _hoisted_3$16 = [
8700
+ var _hoisted_3$19 = [
8695
8701
  "name",
8696
8702
  "required",
8697
8703
  "autocomplete",
8698
8704
  "disabled"
8699
8705
  ];
8700
- var _hoisted_4$12 = ["value", "disabled"];
8706
+ var _hoisted_4$15 = ["value", "disabled"];
8701
8707
  //#endregion
8702
8708
  //#region src/components/multi-select/MultiSelect.vue
8703
8709
  var MultiSelect_default = /* @__PURE__ */ defineComponent({
@@ -8801,7 +8807,7 @@ var MultiSelect_default = /* @__PURE__ */ defineComponent({
8801
8807
  onClick: isolate,
8802
8808
  onRemove: ($event) => remove(option.value)
8803
8809
  }, {
8804
- default: withCtx(() => [createElementVNode("span", _hoisted_1$69, toDisplayString(option.label), 1)]),
8810
+ default: withCtx(() => [createElementVNode("span", _hoisted_1$71, toDisplayString(option.label), 1)]),
8805
8811
  _: 2
8806
8812
  }, 1032, [
8807
8813
  "size",
@@ -8816,7 +8822,7 @@ var MultiSelect_default = /* @__PURE__ */ defineComponent({
8816
8822
  }, {
8817
8823
  default: withCtx(() => [createTextVNode(" +" + toDisplayString(overflow.value), 1)]),
8818
8824
  _: 1
8819
- }, 8, ["size", "disabled"])) : createCommentVNode("", true)], 64)) : (openBlock(), createElementBlock("span", _hoisted_2$33, toDisplayString(props.placeholder ?? unref(t).select.placeholder), 1))], 2),
8825
+ }, 8, ["size", "disabled"])) : createCommentVNode("", true)], 64)) : (openBlock(), createElementBlock("span", _hoisted_2$35, toDisplayString(props.placeholder ?? unref(t).select.placeholder), 1))], 2),
8820
8826
  createVNode(Transition, {
8821
8827
  "enter-active-class": "hn-transition-base",
8822
8828
  "enter-from-class": "scale-90 opacity-0",
@@ -8868,8 +8874,8 @@ var MultiSelect_default = /* @__PURE__ */ defineComponent({
8868
8874
  key: option.value,
8869
8875
  value: option.value,
8870
8876
  disabled: option.disabled
8871
- }, toDisplayString(option.label), 9, _hoisted_4$12);
8872
- }), 128))], 8, _hoisted_3$16), [[vModelSelect, model.value]])]),
8877
+ }, toDisplayString(option.label), 9, _hoisted_4$15);
8878
+ }), 128))], 8, _hoisted_3$19), [[vModelSelect, model.value]])]),
8873
8879
  _: 1
8874
8880
  })) : createCommentVNode("", true),
8875
8881
  createVNode(SelectList_default, {
@@ -8891,21 +8897,83 @@ var MultiSelect_default = /* @__PURE__ */ defineComponent({
8891
8897
  }
8892
8898
  });
8893
8899
  //#endregion
8900
+ //#region src/components/combobox/composables/useOptionLabels.ts
8901
+ function useOptionLabels(options, selectedOptions) {
8902
+ const labels = reactive(/* @__PURE__ */ new Map());
8903
+ watch([options, selectedOptions], ([items, selected]) => {
8904
+ for (const option of flattenOptions(items)) labels.set(option.value, option.label);
8905
+ for (const option of selected ?? []) labels.set(option.value, option.label);
8906
+ }, {
8907
+ immediate: true,
8908
+ deep: true
8909
+ });
8910
+ return labels;
8911
+ }
8912
+ //#endregion
8913
+ //#region src/components/combobox/composables/useCombobox.ts
8914
+ function useCombobox(options) {
8915
+ const { model, search, open } = options;
8916
+ const labels = useOptionLabels(options.options, () => {
8917
+ const option = options.selectedOption();
8918
+ return option ? [option] : [];
8919
+ });
8920
+ const label = computed(() => displayValue(model.value));
8921
+ const editing = ref(false);
8922
+ const keyboard = ref(false);
8923
+ const input = shallowRef(null);
8924
+ function displayValue(value) {
8925
+ return value == null ? "" : labels.get(value) ?? "";
8926
+ }
8927
+ function clear() {
8928
+ model.value = null;
8929
+ search.value = "";
8930
+ options.onClear();
8931
+ input.value?.$el.focus();
8932
+ }
8933
+ function onInput(event) {
8934
+ if (options.disabled()) return;
8935
+ editing.value = true;
8936
+ if (event.isComposing) return;
8937
+ if (event.target.value === "" && model.value != null) model.value = null;
8938
+ }
8939
+ function onHostClick(event) {
8940
+ focusFieldFrom(event.currentTarget, event.target);
8941
+ }
8942
+ watch(open, (value) => {
8943
+ if (!value) {
8944
+ keyboard.value = false;
8945
+ editing.value = false;
8946
+ }
8947
+ });
8948
+ watch(model, () => editing.value = false, { flush: "sync" });
8949
+ watch(label, (value) => {
8950
+ if (!editing.value) search.value = value;
8951
+ });
8952
+ return {
8953
+ keyboard,
8954
+ input,
8955
+ displayValue,
8956
+ clear,
8957
+ onInput,
8958
+ onHostClick
8959
+ };
8960
+ }
8961
+ //#endregion
8894
8962
  //#region src/components/combobox/combobox.variants.ts
8895
8963
  var comboboxContent = tv({ base: ["hn-anim-pop z-(--hn-z-overlay) flex w-[var(--reka-combobox-trigger-width)] min-w-40 flex-col overflow-hidden shadow-md outline-none", "[&[data-hn-fresh]_[data-highlighted]:not(:hover)]:[--hn-state-hover-opacity:0]"] });
8896
8964
  var comboboxList = tv({ base: "max-h-[min(20rem,var(--reka-combobox-content-available-height))]" });
8897
8965
  //#endregion
8898
8966
  //#region src/components/combobox/ComboboxList.vue?vue&type=script&setup=true&lang.ts
8899
- var _hoisted_1$68 = { class: "min-w-0 flex-1" };
8900
- var _hoisted_2$32 = { class: "block truncate" };
8901
- var _hoisted_3$15 = {
8967
+ var _hoisted_1$70 = { class: "min-w-0 flex-1" };
8968
+ var _hoisted_2$34 = { class: "block truncate" };
8969
+ var _hoisted_3$18 = {
8902
8970
  key: 0,
8903
8971
  class: "text-muted block truncate text-xs"
8904
8972
  };
8905
- var _hoisted_4$11 = { class: "flex size-4 shrink-0 items-center justify-center" };
8906
- var _hoisted_5$8 = { class: "min-w-0 flex-1" };
8907
- var _hoisted_6$6 = { class: "block truncate" };
8908
- var _hoisted_7$4 = {
8973
+ var _hoisted_4$14 = { class: "flex size-4 shrink-0 items-center justify-center" };
8974
+ var _hoisted_5$9 = { class: "min-w-0 flex-1" };
8975
+ var _hoisted_6$7 = { class: "block truncate" };
8976
+ var _hoisted_7$5 = {
8909
8977
  key: 0,
8910
8978
  class: "text-muted block truncate text-xs"
8911
8979
  };
@@ -8954,7 +9022,7 @@ var ComboboxList_default = /* @__PURE__ */ defineComponent({
8954
9022
  disabled: option.disabled,
8955
9023
  class: normalizeClass(unref(selectItem)())
8956
9024
  }, {
8957
- default: withCtx(() => [createElementVNode("span", _hoisted_1$68, [renderSlot(_ctx.$slots, "option", { option }, () => [createElementVNode("span", _hoisted_2$32, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_3$15, toDisplayString(option.description), 1)) : createCommentVNode("", true)])]), createElementVNode("span", _hoisted_4$11, [createVNode(unref(ComboboxItemIndicator), null, {
9025
+ default: withCtx(() => [createElementVNode("span", _hoisted_1$70, [renderSlot(_ctx.$slots, "option", { option }, () => [createElementVNode("span", _hoisted_2$34, toDisplayString(option.label), 1), option.description ? (openBlock(), createElementBlock("span", _hoisted_3$18, toDisplayString(option.description), 1)) : createCommentVNode("", true)])]), createElementVNode("span", _hoisted_4$14, [createVNode(unref(ComboboxItemIndicator), null, {
8958
9026
  default: withCtx(() => [createVNode(unref(Check))]),
8959
9027
  _: 1
8960
9028
  })])]),
@@ -8974,7 +9042,7 @@ var ComboboxList_default = /* @__PURE__ */ defineComponent({
8974
9042
  disabled: item.disabled,
8975
9043
  class: normalizeClass(unref(selectItem)())
8976
9044
  }, {
8977
- default: withCtx(() => [createElementVNode("span", _hoisted_5$8, [renderSlot(_ctx.$slots, "option", { option: item }, () => [createElementVNode("span", _hoisted_6$6, toDisplayString(item.label), 1), item.description ? (openBlock(), createElementBlock("span", _hoisted_7$4, toDisplayString(item.description), 1)) : createCommentVNode("", true)])]), createElementVNode("span", _hoisted_8$2, [createVNode(unref(ComboboxItemIndicator), null, {
9045
+ default: withCtx(() => [createElementVNode("span", _hoisted_5$9, [renderSlot(_ctx.$slots, "option", { option: item }, () => [createElementVNode("span", _hoisted_6$7, toDisplayString(item.label), 1), item.description ? (openBlock(), createElementBlock("span", _hoisted_7$5, toDisplayString(item.description), 1)) : createCommentVNode("", true)])]), createElementVNode("span", _hoisted_8$2, [createVNode(unref(ComboboxItemIndicator), null, {
8978
9046
  default: withCtx(() => [createVNode(unref(Check))]),
8979
9047
  _: 1
8980
9048
  })])]),
@@ -9002,7 +9070,7 @@ var ComboboxList_default = /* @__PURE__ */ defineComponent({
9002
9070
  });
9003
9071
  //#endregion
9004
9072
  //#region src/components/combobox/Combobox.vue?vue&type=script&setup=true&lang.ts
9005
- var _hoisted_1$67 = ["data-invalid", "data-disabled"];
9073
+ var _hoisted_1$69 = ["data-invalid", "data-disabled"];
9006
9074
  //#endregion
9007
9075
  //#region src/components/combobox/Combobox.vue
9008
9076
  var Combobox_default = /* @__PURE__ */ defineComponent({
@@ -9011,6 +9079,7 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
9011
9079
  __name: "Combobox",
9012
9080
  props: /*@__PURE__*/ mergeModels({
9013
9081
  options: {},
9082
+ selectedOption: {},
9014
9083
  placeholder: {},
9015
9084
  ignoreFilter: { type: Boolean },
9016
9085
  clearable: { type: Boolean },
@@ -9043,28 +9112,20 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
9043
9112
  const open = useModel(__props, "open");
9044
9113
  const t = useUiLocale();
9045
9114
  const group = injectInputGroup();
9046
- const keyboard = ref(false);
9047
- const input = shallowRef(null);
9048
9115
  computed(() => group ? group.size.value : props.size);
9049
9116
  const { id: fieldId, invalid, disabled, describedBy } = useFieldControl({
9050
9117
  invalid: () => props.invalid || !!group?.invalid.value,
9051
9118
  disabled: () => props.disabled || !!group?.disabled.value
9052
9119
  });
9053
9120
  const clearing = computed(() => !!props.clearable && model.value != null && model.value !== "" && !disabled.value);
9054
- function displayValue(value) {
9055
- return flattenOptions(props.options).find((option) => option.value === value)?.label ?? "";
9056
- }
9057
- function clear() {
9058
- model.value = null;
9059
- search.value = "";
9060
- emit("clear");
9061
- input.value?.$el.focus();
9062
- }
9063
- watch(search, (value) => {
9064
- if (value === "" && model.value != null) model.value = null;
9065
- });
9066
- watch(open, (value) => {
9067
- if (!value) keyboard.value = false;
9121
+ const { keyboard, input, displayValue, clear, onInput, onHostClick } = useCombobox({
9122
+ options: () => props.options,
9123
+ selectedOption: () => props.selectedOption,
9124
+ model,
9125
+ search,
9126
+ open,
9127
+ disabled: () => disabled.value,
9128
+ onClear: () => emit("clear")
9068
9129
  });
9069
9130
  return (_ctx, _cache) => {
9070
9131
  return openBlock(), createBlock(unref(ComboboxRoot), {
@@ -9085,7 +9146,7 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
9085
9146
  variant: props.variant,
9086
9147
  size: props.size
9087
9148
  }), props.class)),
9088
- onClick: _cache[2] || (_cache[2] = ($event) => unref(focusFieldFrom)($event.currentTarget, $event.target)),
9149
+ onClick: _cache[2] || (_cache[2] = (...args) => unref(onHostClick) && unref(onHostClick)(...args)),
9089
9150
  onKeydown: _cache[3] || (_cache[3] = ($event) => keyboard.value = true)
9090
9151
  }, [
9091
9152
  createVNode(unref(ComboboxInput), mergeProps({
@@ -9096,19 +9157,22 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
9096
9157
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => search.value = $event),
9097
9158
  id: unref(fieldId),
9098
9159
  "aria-describedby": unref(describedBy),
9099
- "display-value": displayValue,
9160
+ "display-value": unref(displayValue),
9100
9161
  placeholder: props.placeholder ?? unref(t).combobox.placeholder,
9101
9162
  disabled: unref(disabled),
9102
9163
  "aria-invalid": unref(invalid) || void 0,
9103
- class: unref(inputControl)({ trailing: true })
9164
+ class: unref(inputControl)({ trailing: true }),
9165
+ onInput: unref(onInput)
9104
9166
  }), null, 16, [
9105
9167
  "modelValue",
9106
9168
  "id",
9107
9169
  "aria-describedby",
9170
+ "display-value",
9108
9171
  "placeholder",
9109
9172
  "disabled",
9110
9173
  "aria-invalid",
9111
- "class"
9174
+ "class",
9175
+ "onInput"
9112
9176
  ]),
9113
9177
  createVNode(Transition, {
9114
9178
  "enter-active-class": "hn-transition-base",
@@ -9122,11 +9186,11 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
9122
9186
  class: normalizeClass(unref(inputActionSlot)())
9123
9187
  }, [createVNode(InputAction_default, {
9124
9188
  label: unref(t).common.clear,
9125
- onClick: clear
9189
+ onClick: unref(clear)
9126
9190
  }, {
9127
9191
  default: withCtx(() => [createVNode(unref(X))]),
9128
9192
  _: 1
9129
- }, 8, ["label"])], 2)) : createCommentVNode("", true)]),
9193
+ }, 8, ["label", "onClick"])], 2)) : createCommentVNode("", true)]),
9130
9194
  _: 1
9131
9195
  }),
9132
9196
  createVNode(unref(ComboboxTrigger), {
@@ -9142,11 +9206,11 @@ var Combobox_default = /* @__PURE__ */ defineComponent({
9142
9206
  "disabled",
9143
9207
  "class"
9144
9208
  ])
9145
- ], 42, _hoisted_1$67)]),
9209
+ ], 42, _hoisted_1$69)]),
9146
9210
  _: 1
9147
9211
  }), createVNode(ComboboxList_default, {
9148
9212
  options: props.options,
9149
- keyboard: keyboard.value
9213
+ keyboard: unref(keyboard)
9150
9214
  }, {
9151
9215
  option: withCtx((slotProps) => [renderSlot(_ctx.$slots, "option", normalizeProps(guardReactiveProps(slotProps)))]),
9152
9216
  _: 3
@@ -9191,11 +9255,11 @@ var commandItemHint = tv({ base: "ms-auto flex shrink-0 items-center gap-1" });
9191
9255
  var commandEmpty = tv({ base: "text-muted px-4 py-8 text-center text-sm" });
9192
9256
  //#endregion
9193
9257
  //#region src/components/command-palette/CommandPaletteItem.vue?vue&type=script&setup=true&lang.ts
9194
- var _hoisted_1$66 = { class: "truncate" };
9195
- var _hoisted_2$31 = ["textContent"];
9196
- var _hoisted_3$14 = ["textContent"];
9197
- var _hoisted_4$10 = ["textContent"];
9198
- var _hoisted_5$7 = {
9258
+ var _hoisted_1$68 = { class: "truncate" };
9259
+ var _hoisted_2$33 = ["textContent"];
9260
+ var _hoisted_3$17 = ["textContent"];
9261
+ var _hoisted_4$13 = ["textContent"];
9262
+ var _hoisted_5$8 = {
9199
9263
  key: 0,
9200
9264
  class: "text-muted truncate text-xs"
9201
9265
  };
@@ -9236,18 +9300,18 @@ var CommandPaletteItem_default = /* @__PURE__ */ defineComponent({
9236
9300
  "aria-hidden": "true",
9237
9301
  class: "text-muted"
9238
9302
  })) : createCommentVNode("", true),
9239
- createElementVNode("span", { class: normalizeClass(unref(commandItemBody)()) }, [createElementVNode("span", _hoisted_1$66, [
9240
- createElementVNode("span", { textContent: toDisplayString(parts.value[0]) }, null, 8, _hoisted_2$31),
9303
+ createElementVNode("span", { class: normalizeClass(unref(commandItemBody)()) }, [createElementVNode("span", _hoisted_1$68, [
9304
+ createElementVNode("span", { textContent: toDisplayString(parts.value[0]) }, null, 8, _hoisted_2$33),
9241
9305
  parts.value[1] ? (openBlock(), createElementBlock("span", {
9242
9306
  key: 0,
9243
9307
  class: normalizeClass(unref(commandItemMatch)()),
9244
9308
  textContent: toDisplayString(parts.value[1])
9245
- }, null, 10, _hoisted_3$14)) : createCommentVNode("", true),
9309
+ }, null, 10, _hoisted_3$17)) : createCommentVNode("", true),
9246
9310
  parts.value[2] ? (openBlock(), createElementBlock("span", {
9247
9311
  key: 1,
9248
9312
  textContent: toDisplayString(parts.value[2])
9249
- }, null, 8, _hoisted_4$10)) : createCommentVNode("", true)
9250
- ]), props.match.item.description ? (openBlock(), createElementBlock("span", _hoisted_5$7, toDisplayString(props.match.item.description), 1)) : createCommentVNode("", true)], 2),
9313
+ }, null, 8, _hoisted_4$13)) : createCommentVNode("", true)
9314
+ ]), props.match.item.description ? (openBlock(), createElementBlock("span", _hoisted_5$8, toDisplayString(props.match.item.description), 1)) : createCommentVNode("", true)], 2),
9251
9315
  props.match.item.kbd?.length ? (openBlock(), createElementBlock("span", {
9252
9316
  key: 1,
9253
9317
  class: normalizeClass(unref(commandItemHint)())
@@ -9588,13 +9652,13 @@ var CommandPalette_default = /* @__PURE__ */ defineComponent({
9588
9652
  });
9589
9653
  //#endregion
9590
9654
  //#region src/components/listbox/ListboxOptionContent.vue?vue&type=script&setup=true&lang.ts
9591
- var _hoisted_1$65 = { class: "min-w-0 flex-1" };
9592
- var _hoisted_2$30 = { class: "block truncate" };
9593
- var _hoisted_3$13 = {
9655
+ var _hoisted_1$67 = { class: "min-w-0 flex-1" };
9656
+ var _hoisted_2$32 = { class: "block truncate" };
9657
+ var _hoisted_3$16 = {
9594
9658
  key: 0,
9595
9659
  class: "text-muted block truncate text-xs"
9596
9660
  };
9597
- var _hoisted_4$9 = {
9661
+ var _hoisted_4$12 = {
9598
9662
  key: 1,
9599
9663
  class: "flex size-4 shrink-0 items-center justify-center"
9600
9664
  };
@@ -9610,13 +9674,13 @@ var ListboxOptionContent_default = /* @__PURE__ */ defineComponent({
9610
9674
  const slots = useSlots();
9611
9675
  const { isSelected: selected } = injectListboxItemContext();
9612
9676
  return (_ctx, _cache) => {
9613
- return openBlock(), createElementBlock(Fragment, null, [createElementVNode("span", _hoisted_1$65, [renderSlot(_ctx.$slots, "option", {
9677
+ return openBlock(), createElementBlock(Fragment, null, [createElementVNode("span", _hoisted_1$67, [renderSlot(_ctx.$slots, "option", {
9614
9678
  option: props.option,
9615
9679
  selected: unref(selected)
9616
- }, () => [createElementVNode("span", _hoisted_2$30, toDisplayString(props.option.label), 1), props.option.description ? (openBlock(), createElementBlock("span", _hoisted_3$13, toDisplayString(props.option.description), 1)) : createCommentVNode("", true)])]), slots.trailing ? renderSlot(_ctx.$slots, "trailing", {
9680
+ }, () => [createElementVNode("span", _hoisted_2$32, toDisplayString(props.option.label), 1), props.option.description ? (openBlock(), createElementBlock("span", _hoisted_3$16, toDisplayString(props.option.description), 1)) : createCommentVNode("", true)])]), slots.trailing ? renderSlot(_ctx.$slots, "trailing", {
9617
9681
  option: props.option,
9618
9682
  selected: unref(selected)
9619
- }, void 0, void 0, 0) : (openBlock(), createElementBlock("span", _hoisted_4$9, [createVNode(unref(ListboxItemIndicator), null, {
9683
+ }, void 0, void 0, 0) : (openBlock(), createElementBlock("span", _hoisted_4$12, [createVNode(unref(ListboxItemIndicator), null, {
9620
9684
  default: withCtx(() => [createVNode(unref(Check))]),
9621
9685
  _: 1
9622
9686
  })]))], 64);
@@ -9760,6 +9824,406 @@ var Listbox_default = /* @__PURE__ */ defineComponent({
9760
9824
  }
9761
9825
  });
9762
9826
  //#endregion
9827
+ //#region src/components/checkbox/checkbox.variants.ts
9828
+ var checkbox = tv({
9829
+ base: ["text-fg grid w-fit max-w-full cursor-pointer items-center gap-x-[var(--hn-field-gap)] select-none", "data-disabled:cursor-not-allowed data-disabled:opacity-50"],
9830
+ variants: {
9831
+ controlPlacement: {
9832
+ start: "grid-cols-[auto_minmax(0,1fr)]",
9833
+ end: "grid-cols-[minmax(0,1fr)_auto]"
9834
+ },
9835
+ block: { true: "w-full" },
9836
+ bare: { true: "gap-x-0" },
9837
+ size: {
9838
+ sm: "text-sm",
9839
+ md: "text-base",
9840
+ lg: "text-md"
9841
+ }
9842
+ },
9843
+ defaultVariants: {
9844
+ size: "md",
9845
+ controlPlacement: "start",
9846
+ block: false
9847
+ }
9848
+ });
9849
+ var checkboxControl = tv({
9850
+ base: "row-start-1",
9851
+ variants: { controlPlacement: {
9852
+ start: "col-start-1 justify-self-start",
9853
+ end: "col-start-2 justify-self-end"
9854
+ } },
9855
+ defaultVariants: { controlPlacement: "start" }
9856
+ });
9857
+ var checkboxBox = tv({
9858
+ base: [
9859
+ "hn-focus-ring hn-state-layer hn-transition-base relative grid shrink-0 cursor-pointer place-items-center",
9860
+ "size-[var(--hn-checkbox-size)] border",
9861
+ "border-line bg-surface shadow-sm disabled:cursor-not-allowed",
9862
+ "[--hn-state-selected-color:var(--hn-accent-on)] [--hn-state-selected-opacity:0]",
9863
+ "data-[state=checked]:border-accent data-[state=checked]:bg-accent data-[state=checked]:text-surface",
9864
+ "data-[state=indeterminate]:border-accent data-[state=indeterminate]:bg-accent data-[state=indeterminate]:text-surface",
9865
+ "data-invalid:border-danger data-invalid:focus-visible:outline-danger",
9866
+ "[&_svg]:col-start-1 [&_svg]:row-start-1 [&_svg]:size-[var(--hn-checkbox-icon)] [&_svg]:stroke-[3]"
9867
+ ],
9868
+ variants: {
9869
+ shape: {
9870
+ square: "rounded-xs",
9871
+ round: "rounded-full"
9872
+ },
9873
+ size: {
9874
+ sm: "[--hn-checkbox-icon:0.625rem] [--hn-checkbox-size:0.875rem]",
9875
+ md: "[--hn-checkbox-icon:0.75rem] [--hn-checkbox-size:1rem]",
9876
+ lg: "[--hn-checkbox-icon:0.875rem] [--hn-checkbox-size:1.125rem]"
9877
+ }
9878
+ },
9879
+ defaultVariants: {
9880
+ shape: "square",
9881
+ size: "md"
9882
+ }
9883
+ });
9884
+ var checkboxTitle = tv({
9885
+ base: "row-start-1 flex min-h-[1lh] min-w-0 items-center",
9886
+ variants: { controlPlacement: {
9887
+ start: "col-start-2",
9888
+ end: "col-start-1"
9889
+ } },
9890
+ defaultVariants: { controlPlacement: "start" }
9891
+ });
9892
+ var checkboxTitleText = tv({ base: "block [text-box:trim-both_cap_alphabetic]" });
9893
+ var checkboxDescription = tv({
9894
+ base: "text-muted row-start-2 block",
9895
+ variants: {
9896
+ controlPlacement: {
9897
+ start: "col-start-2",
9898
+ end: "col-start-1"
9899
+ },
9900
+ size: {
9901
+ sm: "text-xs",
9902
+ md: "text-sm",
9903
+ lg: "text-base"
9904
+ }
9905
+ },
9906
+ defaultVariants: {
9907
+ size: "md",
9908
+ controlPlacement: "start"
9909
+ }
9910
+ });
9911
+ //#endregion
9912
+ //#region src/components/tree/TreeCheck.vue?vue&type=script&setup=true&lang.ts
9913
+ var _hoisted_1$66 = ["data-state"];
9914
+ //#endregion
9915
+ //#region src/components/tree/TreeCheck.vue
9916
+ var TreeCheck_default = /* @__PURE__ */ defineComponent({
9917
+ name: "HnTreeCheck",
9918
+ __name: "TreeCheck",
9919
+ props: {
9920
+ selected: { type: Boolean },
9921
+ indeterminate: { type: Boolean }
9922
+ },
9923
+ setup(__props) {
9924
+ const props = __props;
9925
+ return (_ctx, _cache) => {
9926
+ return openBlock(), createElementBlock("span", {
9927
+ "aria-hidden": "true",
9928
+ "data-state": props.indeterminate ? "indeterminate" : props.selected ? "checked" : "unchecked",
9929
+ class: normalizeClass([unref(checkboxBox)(), "pointer-events-none"])
9930
+ }, [createVNode(Transition, {
9931
+ "enter-active-class": "hn-transition-press",
9932
+ "enter-from-class": "scale-50 opacity-0",
9933
+ "leave-active-class": "hn-transition",
9934
+ "leave-to-class": "scale-50 opacity-0"
9935
+ }, {
9936
+ default: withCtx(() => [props.selected ? (openBlock(), createBlock(unref(Check), { key: 0 })) : createCommentVNode("", true)]),
9937
+ _: 1
9938
+ }), createVNode(Transition, {
9939
+ "enter-active-class": "hn-transition-press",
9940
+ "enter-from-class": "scale-50 opacity-0",
9941
+ "leave-active-class": "hn-transition",
9942
+ "leave-to-class": "scale-50 opacity-0"
9943
+ }, {
9944
+ default: withCtx(() => [props.indeterminate ? (openBlock(), createBlock(unref(Minus), { key: 0 })) : createCommentVNode("", true)]),
9945
+ _: 1
9946
+ })], 10, _hoisted_1$66);
9947
+ };
9948
+ }
9949
+ });
9950
+ //#endregion
9951
+ //#region src/components/tree/utils/selection.ts
9952
+ function indexTree(nodes) {
9953
+ const entries = /* @__PURE__ */ new Map();
9954
+ function visit(node, parent, disabled = false) {
9955
+ const entry = {
9956
+ node,
9957
+ parent,
9958
+ disabled: disabled || !!node.disabled,
9959
+ children: node.children?.map((child) => child.value) ?? []
9960
+ };
9961
+ entries.set(node.value, entry);
9962
+ node.children?.forEach((child) => visit(child, node.value, entry.disabled));
9963
+ }
9964
+ nodes.forEach((node) => visit(node));
9965
+ return {
9966
+ roots: nodes.map((node) => node.value),
9967
+ entries
9968
+ };
9969
+ }
9970
+ function checkedState(tree, values) {
9971
+ const checked = new Set(values);
9972
+ const states = /* @__PURE__ */ new Map();
9973
+ function visit(value, inherited = false) {
9974
+ const entry = tree.entries.get(value);
9975
+ const own = checked.has(value) || !entry.disabled && inherited;
9976
+ const enabled = entry.children.map((child) => visit(child, !entry.disabled && own)).filter((child) => !child.disabled);
9977
+ const selected = entry.disabled || enabled.length === 0 ? own : enabled.every((child) => child.selected);
9978
+ const state = {
9979
+ selected,
9980
+ indeterminate: !entry.disabled && !selected && enabled.some((child) => child.selected || child.indeterminate),
9981
+ disabled: entry.disabled
9982
+ };
9983
+ states.set(value, state);
9984
+ return state;
9985
+ }
9986
+ tree.roots.forEach((value) => visit(value));
9987
+ return states;
9988
+ }
9989
+ function toggleChecked(tree, values, value) {
9990
+ const entry = tree.entries.get(value);
9991
+ if (!entry || entry.disabled) return values;
9992
+ const states = checkedState(tree, values);
9993
+ const checked = new Set(values.filter((value) => !tree.entries.has(value)));
9994
+ states.forEach((state, value) => {
9995
+ if (state.selected) checked.add(value);
9996
+ });
9997
+ const selected = !states.get(value).selected;
9998
+ function visit(value) {
9999
+ const entry = tree.entries.get(value);
10000
+ if (entry.disabled) return;
10001
+ if (selected) checked.add(value);
10002
+ else checked.delete(value);
10003
+ entry.children.forEach(visit);
10004
+ }
10005
+ visit(value);
10006
+ let parent = entry.parent;
10007
+ while (parent !== void 0) {
10008
+ checked.delete(parent);
10009
+ parent = tree.entries.get(parent).parent;
10010
+ }
10011
+ const next = checkedState(tree, [...checked]);
10012
+ return [...[...checked].filter((value) => !tree.entries.has(value)), ...[...tree.entries.keys()].filter((value) => next.get(value).selected)];
10013
+ }
10014
+ //#endregion
10015
+ //#region src/components/tree/composables/useTree.ts
10016
+ function useTree(props, model, expandedModel, disabled) {
10017
+ const initialExpanded = [...props.defaultExpanded];
10018
+ const index = computed(() => indexTree(props.items));
10019
+ const states = computed(() => {
10020
+ if (props.multiple) return checkedState(index.value, Array.isArray(model.value) ? model.value : []);
10021
+ return new Map([...index.value.entries].map(([value, entry]) => [value, {
10022
+ selected: value === model.value,
10023
+ indeterminate: false,
10024
+ disabled: entry.disabled
10025
+ }]));
10026
+ });
10027
+ const selected = computed(() => [...index.value.entries.values()].filter((entry) => states.value.get(entry.node.value)?.selected).map((entry) => entry.node));
10028
+ const keys = computed(() => new Map([...index.value.entries].map(([value, entry]) => [key(entry.node), value])));
10029
+ const expanded = computed({
10030
+ get: () => (expandedModel.value ?? initialExpanded).map((value) => key({ value })),
10031
+ set: (value) => {
10032
+ expandedModel.value = value.flatMap((key) => keys.value.has(key) ? [keys.value.get(key)] : []);
10033
+ }
10034
+ });
10035
+ function key(node) {
10036
+ return `${typeof node.value}:${node.value}`;
10037
+ }
10038
+ function getChildren(node) {
10039
+ return node.children?.length ? node.children : void 0;
10040
+ }
10041
+ function state(node) {
10042
+ const value = states.value.get(node.value);
10043
+ return {
10044
+ ...value,
10045
+ disabled: disabled.value || value.disabled
10046
+ };
10047
+ }
10048
+ function select(event) {
10049
+ event.preventDefault();
10050
+ const node = event.detail.value;
10051
+ if (!node || state(node).disabled) return;
10052
+ model.value = props.multiple ? toggleChecked(index.value, Array.isArray(model.value) ? model.value : [], node.value) : model.value === node.value ? null : node.value;
10053
+ }
10054
+ function toggle(node) {
10055
+ if (state(node).disabled || !getChildren(node)) return;
10056
+ const value = key(node);
10057
+ expanded.value = expanded.value.includes(value) ? expanded.value.filter((key) => key !== value) : [...expanded.value, value];
10058
+ }
10059
+ function keepRowClick(event) {
10060
+ if (event.detail.originalEvent.type === "click") event.preventDefault();
10061
+ }
10062
+ return {
10063
+ selected,
10064
+ expanded,
10065
+ key,
10066
+ getChildren,
10067
+ state,
10068
+ select,
10069
+ toggle,
10070
+ keepRowClick
10071
+ };
10072
+ }
10073
+ //#endregion
10074
+ //#region src/components/tree/tree.variants.ts
10075
+ var tree = tv({ base: "flex w-full min-w-0 flex-col outline-none" });
10076
+ var treeRow = tv({ base: [
10077
+ "hn-interactive hn-state-layer hn-press-none relative isolate flex w-full cursor-pointer",
10078
+ "items-center gap-(--hn-control-gap) rounded-md py-2 pe-2.5 text-start text-sm select-none",
10079
+ "ps-[calc(0.375rem+var(--hn-tree-level)*1.25rem)] text-fg outline-none",
10080
+ "data-disabled:pointer-events-none data-disabled:opacity-50"
10081
+ ] });
10082
+ var treeToggle = tv({ base: "text-muted flex size-5 shrink-0 cursor-pointer items-center justify-center rounded-sm rtl:-scale-x-100 [&>span>svg]:size-3.5" });
10083
+ var treeEmpty = tv({ base: "text-muted px-2.5 py-2 text-sm" });
10084
+ //#endregion
10085
+ //#region src/components/tree/Tree.vue?vue&type=script&setup=true&lang.ts
10086
+ var _hoisted_1$65 = [
10087
+ "id",
10088
+ "aria-labelledby",
10089
+ "aria-describedby"
10090
+ ];
10091
+ var _hoisted_2$31 = ["aria-selected", "aria-checked"];
10092
+ var _hoisted_3$15 = ["onClick"];
10093
+ var _hoisted_4$11 = {
10094
+ key: 1,
10095
+ class: "size-5 shrink-0",
10096
+ "aria-hidden": "true"
10097
+ };
10098
+ var _hoisted_5$7 = { class: "min-w-0 flex-1" };
10099
+ var _hoisted_6$6 = { class: "block truncate" };
10100
+ var _hoisted_7$4 = {
10101
+ key: 0,
10102
+ class: "text-muted block truncate text-xs"
10103
+ };
10104
+ //#endregion
10105
+ //#region src/components/tree/Tree.vue
10106
+ var Tree_default = /* @__PURE__ */ defineComponent({
10107
+ name: "HnTree",
10108
+ inheritAttrs: false,
10109
+ __name: "Tree",
10110
+ props: /*@__PURE__*/ mergeModels({
10111
+ items: {},
10112
+ multiple: { type: Boolean },
10113
+ defaultExpanded: { default: () => [] },
10114
+ disabled: { type: Boolean },
10115
+ invalid: { type: Boolean },
10116
+ class: {}
10117
+ }, {
10118
+ "modelValue": {},
10119
+ "modelModifiers": {},
10120
+ "expanded": {},
10121
+ "expandedModifiers": {}
10122
+ }),
10123
+ emits: ["update:modelValue", "update:expanded"],
10124
+ setup(__props) {
10125
+ const props = __props;
10126
+ const model = useModel(__props, "modelValue");
10127
+ const expandedModel = useModel(__props, "expanded");
10128
+ const t = useUiLocale();
10129
+ const { id, labelledBy, describedBy, disabled, invalid } = useFieldControl({
10130
+ disabled: () => props.disabled,
10131
+ invalid: () => props.invalid
10132
+ });
10133
+ const { selected, expanded, key, getChildren, state, select, toggle, keepRowClick } = useTree(props, model, expandedModel, disabled);
10134
+ return (_ctx, _cache) => {
10135
+ return props.items.length === 0 ? (openBlock(), createElementBlock("div", mergeProps({ key: 0 }, _ctx.$attrs, {
10136
+ id: unref(id),
10137
+ role: "status",
10138
+ "aria-labelledby": unref(labelledBy),
10139
+ "aria-describedby": unref(describedBy),
10140
+ "data-hn-tree": "",
10141
+ class: unref(cn)(unref(treeEmpty)(), props.class)
10142
+ }), [renderSlot(_ctx.$slots, "empty", {}, () => [createTextVNode(toDisplayString(unref(t).tree.empty), 1)])], 16, _hoisted_1$65)) : (openBlock(), createBlock(unref(TreeRoot), mergeProps({ key: 1 }, _ctx.$attrs, {
10143
+ id: unref(id),
10144
+ expanded: unref(expanded),
10145
+ "onUpdate:expanded": _cache[0] || (_cache[0] = ($event) => isRef(expanded) ? expanded.value = $event : null),
10146
+ items: props.items,
10147
+ "get-key": unref(key),
10148
+ "get-children": unref(getChildren),
10149
+ "model-value": props.multiple ? unref(selected) : unref(selected)[0],
10150
+ multiple: props.multiple,
10151
+ disabled: unref(disabled),
10152
+ "aria-labelledby": unref(labelledBy),
10153
+ "aria-describedby": unref(describedBy),
10154
+ "aria-invalid": unref(invalid) || void 0,
10155
+ "aria-disabled": unref(disabled) || void 0,
10156
+ "data-hn-tree": "",
10157
+ "data-disabled": unref(disabled) ? "" : void 0,
10158
+ "data-invalid": unref(invalid) ? "" : void 0,
10159
+ class: unref(cn)(unref(tree)(), props.class)
10160
+ }), {
10161
+ default: withCtx(({ flattenItems }) => [(openBlock(true), createElementBlock(Fragment, null, renderList(flattenItems, (item) => {
10162
+ return openBlock(), createBlock(unref(TreeItem), mergeProps({ key: item._id }, { ref_for: true }, item.bind, {
10163
+ disabled: unref(state)(item.value).disabled,
10164
+ "as-child": "",
10165
+ onSelect: unref(select),
10166
+ onToggle: unref(keepRowClick)
10167
+ }), {
10168
+ default: withCtx(({ isExpanded }) => [createElementVNode("li", {
10169
+ "aria-selected": props.multiple ? void 0 : unref(state)(item.value).selected,
10170
+ "aria-checked": props.multiple ? unref(state)(item.value).indeterminate ? "mixed" : unref(state)(item.value).selected : void 0,
10171
+ style: normalizeStyle({ "--hn-tree-level": item.level - 1 }),
10172
+ class: normalizeClass(unref(treeRow)())
10173
+ }, [
10174
+ item.hasChildren ? (openBlock(), createElementBlock("span", {
10175
+ key: 0,
10176
+ class: normalizeClass(unref(treeToggle)()),
10177
+ "aria-hidden": "true",
10178
+ "data-hn-tree-toggle": "",
10179
+ onClick: withModifiers(($event) => unref(toggle)(item.value), ["stop"])
10180
+ }, [createVNode(DisclosureIcon_default, {
10181
+ direction: "end",
10182
+ open: isExpanded
10183
+ }, null, 8, ["open"])], 10, _hoisted_3$15)) : (openBlock(), createElementBlock("span", _hoisted_4$11)),
10184
+ props.multiple ? (openBlock(), createBlock(TreeCheck_default, {
10185
+ key: 2,
10186
+ selected: unref(state)(item.value).selected,
10187
+ indeterminate: unref(state)(item.value).indeterminate
10188
+ }, null, 8, ["selected", "indeterminate"])) : createCommentVNode("", true),
10189
+ createElementVNode("span", _hoisted_5$7, [renderSlot(_ctx.$slots, "node", mergeProps({
10190
+ node: item.value,
10191
+ expanded: isExpanded
10192
+ }, { ref_for: true }, unref(state)(item.value)), () => [createElementVNode("span", _hoisted_6$6, toDisplayString(item.value.label), 1), item.value.description ? (openBlock(), createElementBlock("span", _hoisted_7$4, toDisplayString(item.value.description), 1)) : createCommentVNode("", true)])]),
10193
+ renderSlot(_ctx.$slots, "trailing", mergeProps({
10194
+ node: item.value,
10195
+ expanded: isExpanded
10196
+ }, { ref_for: true }, unref(state)(item.value)))
10197
+ ], 14, _hoisted_2$31)]),
10198
+ _: 2
10199
+ }, 1040, [
10200
+ "disabled",
10201
+ "onSelect",
10202
+ "onToggle"
10203
+ ]);
10204
+ }), 128))]),
10205
+ _: 3
10206
+ }, 16, [
10207
+ "id",
10208
+ "expanded",
10209
+ "items",
10210
+ "get-key",
10211
+ "get-children",
10212
+ "model-value",
10213
+ "multiple",
10214
+ "disabled",
10215
+ "aria-labelledby",
10216
+ "aria-describedby",
10217
+ "aria-invalid",
10218
+ "aria-disabled",
10219
+ "data-disabled",
10220
+ "data-invalid",
10221
+ "class"
10222
+ ]));
10223
+ };
10224
+ }
10225
+ });
10226
+ //#endregion
9763
10227
  //#region src/components/tree-select/tree-select.variants.ts
9764
10228
  var treeSelectContent = tv({ base: ["hn-anim-pop z-(--hn-z-overlay) flex w-[var(--reka-popover-trigger-width)] min-w-40 max-h-[var(--reka-popover-content-available-height)] flex-col overflow-hidden shadow-md outline-none"] });
9765
10229
  var treeSelectList = tv({ base: "min-h-0 max-h-80" });
@@ -9773,7 +10237,7 @@ var treeSelectToggle = tv({ base: ["text-muted flex size-5 shrink-0 cursor-point
9773
10237
  //#endregion
9774
10238
  //#region src/components/tree-select/TreeSelectSearch.vue?vue&type=script&setup=true&lang.ts
9775
10239
  var _hoisted_1$64 = { class: "border-line shrink-0 border-b px-1" };
9776
- var _hoisted_2$29 = [
10240
+ var _hoisted_2$30 = [
9777
10241
  "aria-label",
9778
10242
  "aria-controls",
9779
10243
  "placeholder"
@@ -9821,7 +10285,7 @@ var TreeSelectSearch_default = /* @__PURE__ */ defineComponent({
9821
10285
  trailing: !!model.value
9822
10286
  })),
9823
10287
  onKeydown: _cache[1] || (_cache[1] = ($event) => emit("keydown", $event))
9824
- }, null, 42, _hoisted_2$29), [[vModelText, model.value]]),
10288
+ }, null, 42, _hoisted_2$30), [[vModelText, model.value]]),
9825
10289
  createVNode(Transition, {
9826
10290
  "enter-active-class": "hn-transition-base",
9827
10291
  "enter-from-class": "scale-90 opacity-0",
@@ -9984,9 +10448,9 @@ var _hoisted_1$63 = [
9984
10448
  "data-disabled",
9985
10449
  "aria-invalid"
9986
10450
  ];
9987
- var _hoisted_2$28 = { class: "min-w-0 flex-1 truncate" };
9988
- var _hoisted_3$12 = ["onClick"];
9989
- var _hoisted_4$8 = {
10451
+ var _hoisted_2$29 = { class: "min-w-0 flex-1 truncate" };
10452
+ var _hoisted_3$14 = ["onClick"];
10453
+ var _hoisted_4$10 = {
9990
10454
  key: 1,
9991
10455
  class: "size-5 shrink-0"
9992
10456
  };
@@ -10067,7 +10531,7 @@ var TreeSelect_default = /* @__PURE__ */ defineComponent({
10067
10531
  variant: props.variant,
10068
10532
  size: props.size
10069
10533
  }), unref(selectTrigger)(), props.class)
10070
- }), [createElementVNode("span", _hoisted_2$28, toDisplayString(unref(selected) ? unref(selected).label : props.placeholder ?? unref(t).select.placeholder), 1), createElementVNode("span", { class: normalizeClass(unref(inputAdornment)()) }, [createVNode(DisclosureIcon_default)], 2)], 16, _hoisted_1$63)]),
10534
+ }), [createElementVNode("span", _hoisted_2$29, toDisplayString(unref(selected) ? unref(selected).label : props.placeholder ?? unref(t).select.placeholder), 1), createElementVNode("span", { class: normalizeClass(unref(inputAdornment)()) }, [createVNode(DisclosureIcon_default)], 2)], 16, _hoisted_1$63)]),
10071
10535
  _: 1
10072
10536
  }), createVNode(unref(PopoverPortal), null, {
10073
10537
  default: withCtx(() => [createVNode(unref(PopoverContent), {
@@ -10134,7 +10598,7 @@ var TreeSelect_default = /* @__PURE__ */ defineComponent({
10134
10598
  }, [createVNode(DisclosureIcon_default, {
10135
10599
  direction: "end",
10136
10600
  open: isExpanded
10137
- }, null, 8, ["open"])], 10, _hoisted_3$12)) : (openBlock(), createElementBlock("span", _hoisted_4$8)),
10601
+ }, null, 8, ["open"])], 10, _hoisted_3$14)) : (openBlock(), createElementBlock("span", _hoisted_4$10)),
10138
10602
  createElementVNode("span", _hoisted_5$6, [renderSlot(_ctx.$slots, "node", { node: item.value }, () => [createElementVNode("span", _hoisted_6$5, toDisplayString(item.value.label), 1), item.value.description ? (openBlock(), createElementBlock("span", _hoisted_7$3, toDisplayString(item.value.description), 1)) : createCommentVNode("", true)])]),
10139
10603
  createElementVNode("span", _hoisted_8$1, [isSelected ? (openBlock(), createBlock(unref(Check), { key: 0 })) : createCommentVNode("", true)])
10140
10604
  ]),
@@ -10183,91 +10647,6 @@ var TreeSelect_default = /* @__PURE__ */ defineComponent({
10183
10647
  }
10184
10648
  });
10185
10649
  //#endregion
10186
- //#region src/components/checkbox/checkbox.variants.ts
10187
- var checkbox = tv({
10188
- base: ["text-fg grid w-fit max-w-full cursor-pointer items-center gap-x-[var(--hn-field-gap)] select-none", "data-disabled:cursor-not-allowed data-disabled:opacity-50"],
10189
- variants: {
10190
- controlPlacement: {
10191
- start: "grid-cols-[auto_minmax(0,1fr)]",
10192
- end: "grid-cols-[minmax(0,1fr)_auto]"
10193
- },
10194
- block: { true: "w-full" },
10195
- bare: { true: "gap-x-0" },
10196
- size: {
10197
- sm: "text-sm",
10198
- md: "text-base",
10199
- lg: "text-md"
10200
- }
10201
- },
10202
- defaultVariants: {
10203
- size: "md",
10204
- controlPlacement: "start",
10205
- block: false
10206
- }
10207
- });
10208
- var checkboxControl = tv({
10209
- base: "row-start-1",
10210
- variants: { controlPlacement: {
10211
- start: "col-start-1 justify-self-start",
10212
- end: "col-start-2 justify-self-end"
10213
- } },
10214
- defaultVariants: { controlPlacement: "start" }
10215
- });
10216
- var checkboxBox = tv({
10217
- base: [
10218
- "hn-focus-ring hn-state-layer hn-transition-base relative grid shrink-0 cursor-pointer place-items-center",
10219
- "size-[var(--hn-checkbox-size)] border",
10220
- "border-line bg-surface shadow-sm disabled:cursor-not-allowed",
10221
- "[--hn-state-selected-color:var(--hn-accent-on)] [--hn-state-selected-opacity:0]",
10222
- "data-[state=checked]:border-accent data-[state=checked]:bg-accent data-[state=checked]:text-surface",
10223
- "data-[state=indeterminate]:border-accent data-[state=indeterminate]:bg-accent data-[state=indeterminate]:text-surface",
10224
- "data-invalid:border-danger data-invalid:focus-visible:outline-danger",
10225
- "[&_svg]:col-start-1 [&_svg]:row-start-1 [&_svg]:size-[var(--hn-checkbox-icon)] [&_svg]:stroke-[3]"
10226
- ],
10227
- variants: {
10228
- shape: {
10229
- square: "rounded-xs",
10230
- round: "rounded-full"
10231
- },
10232
- size: {
10233
- sm: "[--hn-checkbox-icon:0.625rem] [--hn-checkbox-size:0.875rem]",
10234
- md: "[--hn-checkbox-icon:0.75rem] [--hn-checkbox-size:1rem]",
10235
- lg: "[--hn-checkbox-icon:0.875rem] [--hn-checkbox-size:1.125rem]"
10236
- }
10237
- },
10238
- defaultVariants: {
10239
- shape: "square",
10240
- size: "md"
10241
- }
10242
- });
10243
- var checkboxTitle = tv({
10244
- base: "row-start-1 flex min-h-[1lh] min-w-0 items-center",
10245
- variants: { controlPlacement: {
10246
- start: "col-start-2",
10247
- end: "col-start-1"
10248
- } },
10249
- defaultVariants: { controlPlacement: "start" }
10250
- });
10251
- var checkboxTitleText = tv({ base: "block [text-box:trim-both_cap_alphabetic]" });
10252
- var checkboxDescription = tv({
10253
- base: "text-muted row-start-2 block",
10254
- variants: {
10255
- controlPlacement: {
10256
- start: "col-start-2",
10257
- end: "col-start-1"
10258
- },
10259
- size: {
10260
- sm: "text-xs",
10261
- md: "text-sm",
10262
- lg: "text-base"
10263
- }
10264
- },
10265
- defaultVariants: {
10266
- size: "md",
10267
- controlPlacement: "start"
10268
- }
10269
- });
10270
- //#endregion
10271
10650
  //#region src/components/checkbox/Checkbox.vue?vue&type=script&setup=true&lang.ts
10272
10651
  var _hoisted_1$62 = ["data-disabled"];
10273
10652
  //#endregion
@@ -11150,11 +11529,11 @@ var _hoisted_1$57 = {
11150
11529
  key: "on",
11151
11530
  class: "inline-flex items-center justify-center"
11152
11531
  };
11153
- var _hoisted_2$27 = {
11532
+ var _hoisted_2$28 = {
11154
11533
  key: "off",
11155
11534
  class: "inline-flex items-center justify-center"
11156
11535
  };
11157
- var _hoisted_3$11 = {
11536
+ var _hoisted_3$13 = {
11158
11537
  key: 2,
11159
11538
  class: "inline-flex items-center"
11160
11539
  };
@@ -11231,10 +11610,10 @@ var Toggle_default = /* @__PURE__ */ defineComponent({
11231
11610
  "leave-active-class": "hn-transition absolute",
11232
11611
  "leave-to-class": "scale-90 opacity-0"
11233
11612
  }, {
11234
- default: withCtx(() => [swapped.value ? (openBlock(), createElementBlock("span", _hoisted_1$57, [renderSlot(_ctx.$slots, "pressed-icon")])) : (openBlock(), createElementBlock("span", _hoisted_2$27, [renderSlot(_ctx.$slots, "icon", { pressed: pressed.value })]))]),
11613
+ default: withCtx(() => [swapped.value ? (openBlock(), createElementBlock("span", _hoisted_1$57, [renderSlot(_ctx.$slots, "pressed-icon")])) : (openBlock(), createElementBlock("span", _hoisted_2$28, [renderSlot(_ctx.$slots, "icon", { pressed: pressed.value })]))]),
11235
11614
  _: 3
11236
11615
  })], 2)) : createCommentVNode("", true),
11237
- unref(slots).default ? (openBlock(), createElementBlock("span", _hoisted_3$11, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true)
11616
+ unref(slots).default ? (openBlock(), createElementBlock("span", _hoisted_3$13, [renderSlot(_ctx.$slots, "default")])) : createCommentVNode("", true)
11238
11617
  ]),
11239
11618
  _: 3
11240
11619
  }, 16, [
@@ -11492,13 +11871,7 @@ function useMultiCombobox(options) {
11492
11871
  const { model, open } = options;
11493
11872
  const keyboard = ref(false);
11494
11873
  const input = shallowRef(null);
11495
- const labels = reactive(/* @__PURE__ */ new Map());
11496
- watch(options.options, (options) => {
11497
- for (const option of flattenOptions(options)) labels.set(option.value, option.label);
11498
- }, {
11499
- immediate: true,
11500
- deep: true
11501
- });
11874
+ const labels = useOptionLabels(options.options, options.selectedOptions);
11502
11875
  const selected = computed(() => model.value.map((value) => ({
11503
11876
  value,
11504
11877
  label: labels.get(value) ?? String(value)
@@ -11548,7 +11921,7 @@ var _hoisted_1$54 = [
11548
11921
  "data-disabled",
11549
11922
  "aria-busy"
11550
11923
  ];
11551
- var _hoisted_2$26 = { class: "min-w-0 truncate" };
11924
+ var _hoisted_2$27 = { class: "min-w-0 truncate" };
11552
11925
  //#endregion
11553
11926
  //#region src/components/multi-combobox/MultiCombobox.vue
11554
11927
  var MultiCombobox_default = /* @__PURE__ */ defineComponent({
@@ -11557,6 +11930,7 @@ var MultiCombobox_default = /* @__PURE__ */ defineComponent({
11557
11930
  __name: "MultiCombobox",
11558
11931
  props: /*@__PURE__*/ mergeModels({
11559
11932
  options: {},
11933
+ selectedOptions: {},
11560
11934
  placeholder: {},
11561
11935
  ignoreFilter: { type: Boolean },
11562
11936
  loading: { type: Boolean },
@@ -11599,6 +11973,7 @@ var MultiCombobox_default = /* @__PURE__ */ defineComponent({
11599
11973
  });
11600
11974
  const { selected, keyboard, input, remove, clear, onHostClick, onInputKeydown } = useMultiCombobox({
11601
11975
  options: () => props.options,
11976
+ selectedOptions: () => props.selectedOptions,
11602
11977
  model,
11603
11978
  open,
11604
11979
  disabled: () => disabled.value,
@@ -11641,7 +12016,7 @@ var MultiCombobox_default = /* @__PURE__ */ defineComponent({
11641
12016
  class: normalizeClass(unref(tagsInputChip)()),
11642
12017
  onRemove: ($event) => unref(remove)(option.value)
11643
12018
  }, {
11644
- default: withCtx(() => [createElementVNode("span", _hoisted_2$26, toDisplayString(option.label), 1)]),
12019
+ default: withCtx(() => [createElementVNode("span", _hoisted_2$27, toDisplayString(option.label), 1)]),
11645
12020
  _: 2
11646
12021
  }, 1032, [
11647
12022
  "size",
@@ -14030,7 +14405,7 @@ var _hoisted_1$46 = [
14030
14405
  "multiple",
14031
14406
  "disabled"
14032
14407
  ];
14033
- var _hoisted_2$25 = [
14408
+ var _hoisted_2$26 = [
14034
14409
  "id",
14035
14410
  "aria-describedby",
14036
14411
  "aria-invalid",
@@ -14039,7 +14414,7 @@ var _hoisted_2$25 = [
14039
14414
  "aria-busy",
14040
14415
  "disabled"
14041
14416
  ];
14042
- var _hoisted_3$10 = ["src"];
14417
+ var _hoisted_3$12 = ["src"];
14043
14418
  //#endregion
14044
14419
  //#region src/components/file-upload/FileUpload.vue
14045
14420
  var FileUpload_default = /* @__PURE__ */ defineComponent({
@@ -14143,7 +14518,7 @@ var FileUpload_default = /* @__PURE__ */ defineComponent({
14143
14518
  }, {
14144
14519
  default: withCtx(() => [renderSlot(_ctx.$slots, "icon", {}, () => [createVNode(unref(Upload), { "aria-hidden": "true" })])]),
14145
14520
  _: 3
14146
- }, 8, ["swapped"]), renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(unref(t).upload.dropHint), 1)])], 16, _hoisted_2$25)) : (openBlock(), createBlock(Button_default, mergeProps({ key: 1 }, _ctx.$attrs, {
14521
+ }, 8, ["swapped"]), renderSlot(_ctx.$slots, "default", {}, () => [createTextVNode(toDisplayString(unref(t).upload.dropHint), 1)])], 16, _hoisted_2$26)) : (openBlock(), createBlock(Button_default, mergeProps({ key: 1 }, _ctx.$attrs, {
14147
14522
  id: unref(fieldId),
14148
14523
  "aria-describedby": unref(describedBy),
14149
14524
  "aria-invalid": unref(invalid) || void 0,
@@ -14175,7 +14550,7 @@ var FileUpload_default = /* @__PURE__ */ defineComponent({
14175
14550
  key: 0,
14176
14551
  src: unref(urls).get(file),
14177
14552
  alt: ""
14178
- }, null, 8, _hoisted_3$10)) : (openBlock(), createBlock(unref(File), {
14553
+ }, null, 8, _hoisted_3$12)) : (openBlock(), createBlock(unref(File), {
14179
14554
  key: 1,
14180
14555
  "aria-hidden": "true"
14181
14556
  }))], 2),
@@ -14539,7 +14914,7 @@ var AlertDialog_default = /* @__PURE__ */ defineComponent({
14539
14914
  //#endregion
14540
14915
  //#region src/components/popconfirm/Popconfirm.vue?vue&type=script&setup=true&lang.ts
14541
14916
  var _hoisted_1$45 = { class: "flex flex-col gap-0.5" };
14542
- var _hoisted_2$24 = { class: "flex justify-end gap-2" };
14917
+ var _hoisted_2$25 = { class: "flex justify-end gap-2" };
14543
14918
  //#endregion
14544
14919
  //#region src/components/popconfirm/Popconfirm.vue
14545
14920
  var Popconfirm_default = /* @__PURE__ */ defineComponent({
@@ -14641,7 +15016,7 @@ var Popconfirm_default = /* @__PURE__ */ defineComponent({
14641
15016
  _: 1
14642
15017
  }, 8, ["id"])) : createCommentVNode("", true)]),
14643
15018
  renderSlot(_ctx.$slots, "content"),
14644
- createElementVNode("div", _hoisted_2$24, [createVNode(Button_default, {
15019
+ createElementVNode("div", _hoisted_2$25, [createVNode(Button_default, {
14645
15020
  size: "sm",
14646
15021
  variant: "soft",
14647
15022
  tone: "neutral",
@@ -15088,7 +15463,7 @@ var ContextMenuItem_default = /* @__PURE__ */ defineComponent({
15088
15463
  //#endregion
15089
15464
  //#region src/components/context-menu/ContextMenuCheckboxItem.vue?vue&type=script&setup=true&lang.ts
15090
15465
  var _hoisted_1$43 = { class: "min-w-0 flex-1" };
15091
- var _hoisted_2$23 = { class: "flex size-4 shrink-0 items-center justify-center" };
15466
+ var _hoisted_2$24 = { class: "flex size-4 shrink-0 items-center justify-center" };
15092
15467
  //#endregion
15093
15468
  //#region src/components/context-menu/ContextMenuCheckboxItem.vue
15094
15469
  var ContextMenuCheckboxItem_default = /* @__PURE__ */ defineComponent({
@@ -15122,7 +15497,7 @@ var ContextMenuCheckboxItem_default = /* @__PURE__ */ defineComponent({
15122
15497
  default: withCtx(() => [
15123
15498
  createElementVNode("span", _hoisted_1$43, [renderSlot(_ctx.$slots, "default")]),
15124
15499
  renderSlot(_ctx.$slots, "trailing"),
15125
- createElementVNode("span", _hoisted_2$23, [createVNode(unref(ContextMenuItemIndicator), null, {
15500
+ createElementVNode("span", _hoisted_2$24, [createVNode(unref(ContextMenuItemIndicator), null, {
15126
15501
  default: withCtx(() => [createVNode(unref(Check))]),
15127
15502
  _: 1
15128
15503
  })])
@@ -15270,7 +15645,7 @@ var ContextMenuRadioGroup_default = /* @__PURE__ */ defineComponent({
15270
15645
  //#endregion
15271
15646
  //#region src/components/context-menu/ContextMenuRadioItem.vue?vue&type=script&setup=true&lang.ts
15272
15647
  var _hoisted_1$41 = { class: "min-w-0 flex-1" };
15273
- var _hoisted_2$22 = { class: "flex size-4 shrink-0 items-center justify-center" };
15648
+ var _hoisted_2$23 = { class: "flex size-4 shrink-0 items-center justify-center" };
15274
15649
  //#endregion
15275
15650
  //#region src/components/context-menu/ContextMenuRadioItem.vue
15276
15651
  var ContextMenuRadioItem_default = /* @__PURE__ */ defineComponent({
@@ -15292,7 +15667,7 @@ var ContextMenuRadioItem_default = /* @__PURE__ */ defineComponent({
15292
15667
  "text-value": props.textValue,
15293
15668
  class: unref(cn)(unref(dropdownItem)(), props.class)
15294
15669
  }), {
15295
- default: withCtx(() => [createElementVNode("span", _hoisted_1$41, [renderSlot(_ctx.$slots, "default")]), createElementVNode("span", _hoisted_2$22, [createVNode(unref(ContextMenuItemIndicator), null, {
15670
+ default: withCtx(() => [createElementVNode("span", _hoisted_1$41, [renderSlot(_ctx.$slots, "default")]), createElementVNode("span", _hoisted_2$23, [createVNode(unref(ContextMenuItemIndicator), null, {
15296
15671
  default: withCtx(() => [createVNode(unref(Check), { class: "size-4" })]),
15297
15672
  _: 1
15298
15673
  })])]),
@@ -15414,12 +15789,12 @@ var sheetHandle = tv({
15414
15789
  //#endregion
15415
15790
  //#region src/components/sheet/Sheet.vue?vue&type=script&setup=true&lang.ts
15416
15791
  var _hoisted_1$40 = ["data-dragging"];
15417
- var _hoisted_2$21 = ["data-disabled"];
15418
- var _hoisted_3$9 = {
15792
+ var _hoisted_2$22 = ["data-disabled"];
15793
+ var _hoisted_3$11 = {
15419
15794
  key: 1,
15420
15795
  class: "flex items-start justify-between gap-4 px-(--hn-panel-p)"
15421
15796
  };
15422
- var _hoisted_4$7 = { class: "flex min-w-0 flex-col gap-1.5" };
15797
+ var _hoisted_4$9 = { class: "flex min-w-0 flex-col gap-1.5" };
15423
15798
  var _hoisted_5$5 = { class: "flex min-w-0 items-center gap-2" };
15424
15799
  var _hoisted_6$4 = {
15425
15800
  key: 0,
@@ -15541,7 +15916,7 @@ var Sheet_default = /* @__PURE__ */ defineComponent({
15541
15916
  "aria-hidden": "true",
15542
15917
  "data-disabled": props.locked ? "" : void 0,
15543
15918
  class: normalizeClass(unref(sheetHandle)({ header: props.header && !slots.body }))
15544
- }, null, 10, _hoisted_2$21)) : createCommentVNode("", true), props.header && !slots.body ? (openBlock(), createElementBlock("div", _hoisted_3$9, [createElementVNode("div", _hoisted_4$7, [createElementVNode("div", _hoisted_5$5, [slots.icon ? (openBlock(), createElementBlock("span", _hoisted_6$4, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true), createVNode(unref(DialogTitle), { "as-child": "" }, {
15919
+ }, null, 10, _hoisted_2$22)) : createCommentVNode("", true), props.header && !slots.body ? (openBlock(), createElementBlock("div", _hoisted_3$11, [createElementVNode("div", _hoisted_4$9, [createElementVNode("div", _hoisted_5$5, [slots.icon ? (openBlock(), createElementBlock("span", _hoisted_6$4, [renderSlot(_ctx.$slots, "icon")])) : createCommentVNode("", true), createVNode(unref(DialogTitle), { "as-child": "" }, {
15545
15920
  default: withCtx(() => [createVNode(Heading_default, {
15546
15921
  level: 2,
15547
15922
  size: "lg",
@@ -15939,7 +16314,7 @@ function toneAt(index) {
15939
16314
  //#endregion
15940
16315
  //#region src/components/meter-group/MeterGroup.vue?vue&type=script&setup=true&lang.ts
15941
16316
  var _hoisted_1$36 = ["aria-label"];
15942
- var _hoisted_2$20 = [
16317
+ var _hoisted_2$21 = [
15943
16318
  "aria-label",
15944
16319
  "aria-valuenow",
15945
16320
  "aria-valuemax",
@@ -16010,7 +16385,7 @@ var MeterGroup_default = /* @__PURE__ */ defineComponent({
16010
16385
  "aria-valuetext": props.format ? entry.text : void 0,
16011
16386
  class: normalizeClass(unref(meterSegment)({ tone: entry.tone })),
16012
16387
  style: normalizeStyle({ width: entry.width })
16013
- }, null, 14, _hoisted_2$20);
16388
+ }, null, 14, _hoisted_2$21);
16014
16389
  }), 128))], 16, _hoisted_1$36),
16015
16390
  props.legend ? (openBlock(), createElementBlock("div", {
16016
16391
  key: 1,
@@ -16268,7 +16643,7 @@ var statisticIcon = tv({ base: "bg-subtle text-muted flex size-10 shrink-0 items
16268
16643
  //#endregion
16269
16644
  //#region src/components/statistic/Statistic.vue?vue&type=script&setup=true&lang.ts
16270
16645
  var _hoisted_1$33 = { key: 2 };
16271
- var _hoisted_2$19 = {
16646
+ var _hoisted_2$20 = {
16272
16647
  key: 2,
16273
16648
  class: "text-muted"
16274
16649
  };
@@ -16360,7 +16735,7 @@ var Statistic_default = /* @__PURE__ */ defineComponent({
16360
16735
  "aria-hidden": "true"
16361
16736
  })) : createCommentVNode("", true),
16362
16737
  createElementVNode("span", null, toDisplayString(deltaText.value), 1),
16363
- props.deltaLabel ? (openBlock(), createElementBlock("span", _hoisted_2$19, toDisplayString(props.deltaLabel), 1)) : createCommentVNode("", true)
16738
+ props.deltaLabel ? (openBlock(), createElementBlock("span", _hoisted_2$20, toDisplayString(props.deltaLabel), 1)) : createCommentVNode("", true)
16364
16739
  ], 64))], 2)) : createCommentVNode("", true),
16365
16740
  renderSlot(_ctx.$slots, "default")
16366
16741
  ], 2), unref(slots).icon ? (openBlock(), createElementBlock("span", {
@@ -16443,9 +16818,9 @@ var _hoisted_1$32 = {
16443
16818
  "data-hn-banner": "",
16444
16819
  class: "hn-collapse w-full"
16445
16820
  };
16446
- var _hoisted_2$18 = { class: "hn-collapse-body" };
16447
- var _hoisted_3$8 = ["data-tone"];
16448
- var _hoisted_4$6 = ["aria-live"];
16821
+ var _hoisted_2$19 = { class: "hn-collapse-body" };
16822
+ var _hoisted_3$10 = ["data-tone"];
16823
+ var _hoisted_4$8 = ["aria-live"];
16449
16824
  //#endregion
16450
16825
  //#region src/components/banner/Banner.vue
16451
16826
  var Banner_default = /* @__PURE__ */ defineComponent({
@@ -16509,7 +16884,7 @@ var Banner_default = /* @__PURE__ */ defineComponent({
16509
16884
  "leave-from-class": "hn-collapse-open",
16510
16885
  "leave-to-class": "hn-collapse-closed"
16511
16886
  }, toHandlers(unref(hooks))), {
16512
- default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$32, [createElementVNode("div", _hoisted_2$18, [createElementVNode("div", {
16887
+ default: withCtx(() => [open.value ? (openBlock(), createElementBlock("div", _hoisted_1$32, [createElementVNode("div", _hoisted_2$19, [createElementVNode("div", {
16513
16888
  "data-tone": tone.value,
16514
16889
  class: normalizeClass(unref(cn)(unref(banner)({ tone: tone.value }), props.class)),
16515
16890
  onPointerenter: _cache[2] || (_cache[2] = ($event) => unref(autoplay).hovered.value = true),
@@ -16539,7 +16914,7 @@ var Banner_default = /* @__PURE__ */ defineComponent({
16539
16914
  index: at.value
16540
16915
  })], 2))]),
16541
16916
  _: 3
16542
- }, 8, ["enter-from-class", "leave-to-class"])], 8, _hoisted_4$6)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [renderSlot(_ctx.$slots, "icon", {}, () => [props.icon ? (openBlock(), createBlock(resolveDynamicComponent(icon.value), {
16917
+ }, 8, ["enter-from-class", "leave-to-class"])], 8, _hoisted_4$8)) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [renderSlot(_ctx.$slots, "icon", {}, () => [props.icon ? (openBlock(), createBlock(resolveDynamicComponent(icon.value), {
16543
16918
  key: 0,
16544
16919
  class: normalizeClass(unref(bannerIcon)()),
16545
16920
  "aria-hidden": "true"
@@ -16582,7 +16957,7 @@ var Banner_default = /* @__PURE__ */ defineComponent({
16582
16957
  size: "sm",
16583
16958
  class: "text-current",
16584
16959
  onClick: close
16585
- })) : createCommentVNode("", true)], 2)) : createCommentVNode("", true)], 42, _hoisted_3$8)])])) : createCommentVNode("", true)]),
16960
+ })) : createCommentVNode("", true)], 2)) : createCommentVNode("", true)], 42, _hoisted_3$10)])])) : createCommentVNode("", true)]),
16586
16961
  _: 3
16587
16962
  }, 16);
16588
16963
  };
@@ -16730,7 +17105,7 @@ var MenubarItem_default = /* @__PURE__ */ defineComponent({
16730
17105
  //#endregion
16731
17106
  //#region src/components/menubar/MenubarCheckboxItem.vue?vue&type=script&setup=true&lang.ts
16732
17107
  var _hoisted_1$30 = { class: "min-w-0 flex-1" };
16733
- var _hoisted_2$17 = { class: "flex size-4 shrink-0 items-center justify-center" };
17108
+ var _hoisted_2$18 = { class: "flex size-4 shrink-0 items-center justify-center" };
16734
17109
  //#endregion
16735
17110
  //#region src/components/menubar/MenubarCheckboxItem.vue
16736
17111
  var MenubarCheckboxItem_default = /* @__PURE__ */ defineComponent({
@@ -16764,7 +17139,7 @@ var MenubarCheckboxItem_default = /* @__PURE__ */ defineComponent({
16764
17139
  default: withCtx(() => [
16765
17140
  createElementVNode("span", _hoisted_1$30, [renderSlot(_ctx.$slots, "default")]),
16766
17141
  renderSlot(_ctx.$slots, "trailing"),
16767
- createElementVNode("span", _hoisted_2$17, [createVNode(unref(MenubarItemIndicator), null, {
17142
+ createElementVNode("span", _hoisted_2$18, [createVNode(unref(MenubarItemIndicator), null, {
16768
17143
  default: withCtx(() => [createVNode(unref(Check))]),
16769
17144
  _: 1
16770
17145
  })])
@@ -16912,7 +17287,7 @@ var MenubarRadioGroup_default = /* @__PURE__ */ defineComponent({
16912
17287
  //#endregion
16913
17288
  //#region src/components/menubar/MenubarRadioItem.vue?vue&type=script&setup=true&lang.ts
16914
17289
  var _hoisted_1$28 = { class: "min-w-0 flex-1" };
16915
- var _hoisted_2$16 = { class: "flex size-4 shrink-0 items-center justify-center" };
17290
+ var _hoisted_2$17 = { class: "flex size-4 shrink-0 items-center justify-center" };
16916
17291
  //#endregion
16917
17292
  //#region src/components/menubar/MenubarRadioItem.vue
16918
17293
  var MenubarRadioItem_default = /* @__PURE__ */ defineComponent({
@@ -16934,7 +17309,7 @@ var MenubarRadioItem_default = /* @__PURE__ */ defineComponent({
16934
17309
  "text-value": props.textValue,
16935
17310
  class: unref(cn)(unref(dropdownItem)(), props.class)
16936
17311
  }), {
16937
- default: withCtx(() => [createElementVNode("span", _hoisted_1$28, [renderSlot(_ctx.$slots, "default")]), createElementVNode("span", _hoisted_2$16, [createVNode(unref(MenubarItemIndicator), null, {
17312
+ default: withCtx(() => [createElementVNode("span", _hoisted_1$28, [renderSlot(_ctx.$slots, "default")]), createElementVNode("span", _hoisted_2$17, [createVNode(unref(MenubarItemIndicator), null, {
16938
17313
  default: withCtx(() => [createVNode(unref(Check), { class: "size-4" })]),
16939
17314
  _: 1
16940
17315
  })])]),
@@ -17220,9 +17595,9 @@ var _hoisted_1$26 = [
17220
17595
  "data-disabled",
17221
17596
  "data-orientation"
17222
17597
  ];
17223
- var _hoisted_2$15 = ["id", "for"];
17224
- var _hoisted_3$7 = ["id"];
17225
- var _hoisted_4$5 = ["id"];
17598
+ var _hoisted_2$16 = ["id", "for"];
17599
+ var _hoisted_3$9 = ["id"];
17600
+ var _hoisted_4$7 = ["id"];
17226
17601
  var _hoisted_5$4 = {
17227
17602
  key: 0,
17228
17603
  "data-hn-form-field-message": "",
@@ -17323,11 +17698,11 @@ var FormField_default = /* @__PURE__ */ defineComponent({
17323
17698
  default: withCtx(() => [createTextVNode(toDisplayString(unref(t).form.required), 1)]),
17324
17699
  _: 1
17325
17700
  })) : createCommentVNode("", true)
17326
- ], 10, _hoisted_2$15)) : createCommentVNode("", true), descriptionWithLabel.value ? (openBlock(), createElementBlock("p", {
17701
+ ], 10, _hoisted_2$16)) : createCommentVNode("", true), descriptionWithLabel.value ? (openBlock(), createElementBlock("p", {
17327
17702
  key: 1,
17328
17703
  id: unref(descriptionId),
17329
17704
  class: normalizeClass(unref(formFieldDescription)())
17330
- }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(props.description), 1)])], 10, _hoisted_3$7)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true), createElementVNode("div", {
17705
+ }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(props.description), 1)])], 10, _hoisted_3$9)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true), createElementVNode("div", {
17331
17706
  "data-hn-form-field-body": "",
17332
17707
  class: normalizeClass(unref(formFieldContent)())
17333
17708
  }, [
@@ -17339,7 +17714,7 @@ var FormField_default = /* @__PURE__ */ defineComponent({
17339
17714
  key: 0,
17340
17715
  id: unref(descriptionId),
17341
17716
  class: normalizeClass(unref(formFieldDescription)())
17342
- }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(props.description), 1)])], 10, _hoisted_4$5)) : createCommentVNode("", true),
17717
+ }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(props.description), 1)])], 10, _hoisted_4$7)) : createCommentVNode("", true),
17343
17718
  createVNode(Transition, mergeProps({
17344
17719
  "enter-from-class": "hn-collapse-closed",
17345
17720
  "enter-to-class": "hn-collapse-open",
@@ -17378,7 +17753,7 @@ var formLayoutGrid = tv({
17378
17753
  //#endregion
17379
17754
  //#region src/components/form-layout/FormLayout.vue?vue&type=script&setup=true&lang.ts
17380
17755
  var _hoisted_1$25 = ["disabled", "aria-describedby"];
17381
- var _hoisted_2$14 = ["id"];
17756
+ var _hoisted_2$15 = ["id"];
17382
17757
  //#endregion
17383
17758
  //#region src/components/form-layout/FormLayout.vue
17384
17759
  var FormLayout_default = /* @__PURE__ */ defineComponent({
@@ -17423,7 +17798,7 @@ var FormLayout_default = /* @__PURE__ */ defineComponent({
17423
17798
  key: 1,
17424
17799
  id: unref(descriptionId),
17425
17800
  class: normalizeClass(unref(formLayoutDescription)())
17426
- }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(props.description), 1)])], 10, _hoisted_2$14)) : createCommentVNode("", true),
17801
+ }, [renderSlot(_ctx.$slots, "description", {}, () => [createTextVNode(toDisplayString(props.description), 1)])], 10, _hoisted_2$15)) : createCommentVNode("", true),
17427
17802
  createElementVNode("div", { class: normalizeClass(unref(formLayoutGrid)({
17428
17803
  columns: props.columns,
17429
17804
  headed: headed.value || described.value
@@ -17903,9 +18278,9 @@ var codeBlockLabel = tv({ base: "text-faint font-mono text-xs select-none" });
17903
18278
  //#endregion
17904
18279
  //#region src/components/code-block/CodeBlock.vue?vue&type=script&setup=true&lang.ts
17905
18280
  var _hoisted_1$23 = ["data-lang"];
17906
- var _hoisted_2$13 = ["innerHTML"];
17907
- var _hoisted_3$6 = { key: 1 };
17908
- var _hoisted_4$4 = { key: 2 };
18281
+ var _hoisted_2$14 = ["innerHTML"];
18282
+ var _hoisted_3$8 = { key: 1 };
18283
+ var _hoisted_4$6 = { key: 2 };
17909
18284
  //#endregion
17910
18285
  //#region src/components/code-block/CodeBlock.vue
17911
18286
  var CodeBlock_default = /* @__PURE__ */ defineComponent({
@@ -17940,14 +18315,14 @@ var CodeBlock_default = /* @__PURE__ */ defineComponent({
17940
18315
  default: withCtx(() => [createElementVNode("pre", { class: normalizeClass(unref(codeBlockContent)()) }, [props.html ? (openBlock(), createElementBlock("code", {
17941
18316
  key: 0,
17942
18317
  innerHTML: props.html
17943
- }, null, 8, _hoisted_2$13)) : unref(tokens) ? (openBlock(), createElementBlock("code", _hoisted_3$6, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(tokens), (line, i) => {
18318
+ }, null, 8, _hoisted_2$14)) : unref(tokens) ? (openBlock(), createElementBlock("code", _hoisted_3$8, [(openBlock(true), createElementBlock(Fragment, null, renderList(unref(tokens), (line, i) => {
17944
18319
  return openBlock(), createElementBlock(Fragment, { key: i }, [createTextVNode(toDisplayString(i ? "\n" : ""), 1), (openBlock(true), createElementBlock(Fragment, null, renderList(line, (tk, j) => {
17945
18320
  return openBlock(), createElementBlock("span", {
17946
18321
  key: j,
17947
18322
  style: normalizeStyle(tk.htmlStyle)
17948
18323
  }, toDisplayString(tk.content), 5);
17949
18324
  }), 128))], 64);
17950
- }), 128))])) : (openBlock(), createElementBlock("code", _hoisted_4$4, toDisplayString(__props.code), 1))], 2)]),
18325
+ }), 128))])) : (openBlock(), createElementBlock("code", _hoisted_4$6, toDisplayString(__props.code), 1))], 2)]),
17951
18326
  _: 1
17952
18327
  }, 8, ["label", "class"]), createElementVNode("div", { class: normalizeClass(unref(codeBlockActions)()) }, [tag.value ? (openBlock(), createElementBlock("span", {
17953
18328
  key: 0,
@@ -18923,17 +19298,14 @@ var navLink = tv({
18923
19298
  } },
18924
19299
  defaultVariants: { active: false }
18925
19300
  });
18926
- var navLinkLabel = tv({
18927
- base: "shrink-0 whitespace-nowrap",
18928
- variants: { rail: {
18929
- true: "opacity-0 [transition:opacity_calc(var(--hn-duration-fast)/2)_var(--hn-ease-exit)]",
18930
- false: "opacity-100 [transition:opacity_var(--hn-duration-fast)_var(--hn-ease-enter)]"
18931
- } },
18932
- defaultVariants: { rail: false }
18933
- });
19301
+ var navLinkLabel = tv({ base: "hn-sidebar-label shrink-0 whitespace-nowrap" });
18934
19302
  //#endregion
18935
19303
  //#region src/components/nav-link/NavLink.vue?vue&type=script&setup=true&lang.ts
18936
- var _hoisted_1$18 = ["aria-hidden"];
19304
+ var _hoisted_1$18 = [
19305
+ "aria-hidden",
19306
+ "inert",
19307
+ "data-collapsed"
19308
+ ];
18937
19309
  //#endregion
18938
19310
  //#region src/components/nav-link/NavLink.vue
18939
19311
  var NavLink_default = /* @__PURE__ */ defineComponent({
@@ -18978,8 +19350,10 @@ var NavLink_default = /* @__PURE__ */ defineComponent({
18978
19350
  }), {
18979
19351
  default: withCtx(() => [renderSlot(_ctx.$slots, "icon"), createElementVNode("span", {
18980
19352
  "aria-hidden": rail.value ? "true" : void 0,
19353
+ inert: rail.value,
19354
+ "data-collapsed": rail.value ? "" : void 0,
18981
19355
  "data-hn-label": "",
18982
- class: normalizeClass(unref(navLinkLabel)({ rail: rail.value }))
19356
+ class: normalizeClass(unref(navLinkLabel)())
18983
19357
  }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$18)]),
18984
19358
  _: 3
18985
19359
  }, 16, [
@@ -18999,8 +19373,65 @@ var NavLink_default = /* @__PURE__ */ defineComponent({
18999
19373
  }
19000
19374
  });
19001
19375
  //#endregion
19376
+ //#region src/components/sidebar/sidebar.variants.ts
19377
+ var sidebarRoot = tv({
19378
+ base: "flex h-full min-h-0 shrink-0 flex-col overflow-hidden",
19379
+ variants: { inDrawer: {
19380
+ true: "w-full",
19381
+ false: "hn-sidebar border-line w-64 border-e data-[state=rail]:w-14 data-[state=hidden]:w-0 data-[state=hidden]:border-e-transparent"
19382
+ } }
19383
+ });
19384
+ var sidebarRegion = tv({
19385
+ base: "shrink-0 py-3",
19386
+ variants: {
19387
+ inDrawer: {
19388
+ true: "w-full",
19389
+ false: "w-[calc(16rem-1px)] px-3"
19390
+ },
19391
+ footer: { true: "border-line border-t" }
19392
+ }
19393
+ });
19394
+ var sidebarLabel = tv({ base: "hn-sidebar-label min-w-0" });
19395
+ var sidebarBrand = tv({ base: "flex min-h-8 items-center gap-2" });
19396
+ var sidebarIcon = tv({ base: "flex size-8 shrink-0 items-center justify-center overflow-hidden [&>*]:size-full [&_img]:size-full [&_img]:object-contain [&_svg]:size-full" });
19397
+ var sidebarWordmark = tv({ base: "flex flex-1 items-center [&_img]:max-h-8 [&_img]:max-w-full [&_img]:object-contain [&_svg]:max-h-8 [&_svg]:max-w-full" });
19398
+ //#endregion
19399
+ //#region src/components/sidebar/SidebarLabel.vue
19400
+ var SidebarLabel_default = /* @__PURE__ */ defineComponent({
19401
+ name: "HnSidebarLabel",
19402
+ __name: "SidebarLabel",
19403
+ props: {
19404
+ as: { default: "span" },
19405
+ class: {}
19406
+ },
19407
+ setup(__props) {
19408
+ const props = __props;
19409
+ const sidebar = useSidebar();
19410
+ const collapsed = computed(() => sidebar?.state.value === "rail");
19411
+ return (_ctx, _cache) => {
19412
+ return openBlock(), createBlock(resolveDynamicComponent(props.as), {
19413
+ "data-collapsed": collapsed.value ? "" : void 0,
19414
+ "aria-hidden": collapsed.value ? "true" : void 0,
19415
+ inert: collapsed.value,
19416
+ class: normalizeClass(unref(cn)(unref(sidebarLabel)(), props.class))
19417
+ }, {
19418
+ default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
19419
+ _: 3
19420
+ }, 8, [
19421
+ "data-collapsed",
19422
+ "aria-hidden",
19423
+ "inert",
19424
+ "class"
19425
+ ]);
19426
+ };
19427
+ }
19428
+ });
19429
+ //#endregion
19002
19430
  //#region src/components/sidebar/Sidebar.vue?vue&type=script&setup=true&lang.ts
19003
- var _hoisted_1$17 = ["aria-label"];
19431
+ var _hoisted_1$17 = ["data-state", "inert"];
19432
+ var _hoisted_2$13 = ["data-state", "inert"];
19433
+ var _hoisted_3$7 = { class: "hn-collapse-body" };
19434
+ var _hoisted_4$5 = ["aria-label"];
19004
19435
  //#endregion
19005
19436
  //#region src/components/sidebar/Sidebar.vue
19006
19437
  var Sidebar_default = /* @__PURE__ */ defineComponent({
@@ -19016,52 +19447,59 @@ var Sidebar_default = /* @__PURE__ */ defineComponent({
19016
19447
  const sidebar = useSidebar();
19017
19448
  const state = computed(() => sidebar?.state.value ?? "expanded");
19018
19449
  const inDrawer = computed(() => sidebar?.inDrawer ?? false);
19019
- const width = computed(() => {
19020
- if (state.value === "rail") return 56;
19021
- if (state.value === "hidden") return 0;
19022
- return 256;
19023
- });
19024
- const transition = computed(() => prefersReducedMotion() ? { duration: 0 } : TRANSITION.layout);
19025
19450
  return (_ctx, _cache) => {
19026
- return openBlock(), createBlock(unref(Motion), {
19027
- as: "aside",
19028
- initial: false,
19029
- animate: inDrawer.value ? void 0 : { width: width.value },
19030
- transition: transition.value,
19451
+ return openBlock(), createElementBlock("aside", {
19031
19452
  "data-state": state.value,
19032
- class: normalizeClass(unref(cn)("flex h-full min-h-0 shrink-0 flex-col overflow-hidden", inDrawer.value ? "w-full" : "border-line border-e [transition:border-color_var(--hn-duration-base)_var(--hn-ease-move)]", !inDrawer.value && state.value === "hidden" && "border-e-transparent", props.class))
19033
- }, {
19034
- default: withCtx(() => [
19035
- _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
19036
- key: 0,
19037
- class: normalizeClass(unref(cn)("shrink-0", !inDrawer.value && "px-3 py-3"))
19038
- }, [renderSlot(_ctx.$slots, "header", { state: state.value })], 2)) : createCommentVNode("", true),
19039
- createVNode(ScrollArea_default, { class: "min-h-0 flex-1" }, {
19040
- default: withCtx(() => [createElementVNode("nav", {
19041
- "aria-label": props.label ?? unref(t).sidebar.navLabel,
19042
- class: normalizeClass(unref(cn)("flex flex-col gap-1", !inDrawer.value && "px-2.5 py-2"))
19043
- }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1$17)]),
19044
- _: 3
19045
- }),
19046
- _ctx.$slots.footer ? (openBlock(), createElementBlock("div", {
19047
- key: 1,
19048
- class: normalizeClass(unref(cn)("border-line shrink-0 border-t", !inDrawer.value && "px-3 py-3"))
19049
- }, [renderSlot(_ctx.$slots, "footer", { state: state.value })], 2)) : createCommentVNode("", true)
19050
- ]),
19051
- _: 3
19052
- }, 8, [
19053
- "animate",
19054
- "transition",
19055
- "data-state",
19056
- "class"
19057
- ]);
19453
+ inert: state.value === "hidden",
19454
+ class: normalizeClass(unref(cn)(unref(sidebarRoot)({ inDrawer: inDrawer.value }), props.class))
19455
+ }, [
19456
+ _ctx.$slots.header ? (openBlock(), createElementBlock("div", {
19457
+ key: 0,
19458
+ class: normalizeClass(unref(sidebarRegion)({ inDrawer: inDrawer.value }))
19459
+ }, [renderSlot(_ctx.$slots, "header", { state: state.value })], 2)) : _ctx.$slots.icon || _ctx.$slots.wordmark ? (openBlock(), createElementBlock("div", {
19460
+ key: 1,
19461
+ class: "hn-collapse shrink-0",
19462
+ "data-state": state.value === "rail" && !_ctx.$slots.icon ? "closed" : "open",
19463
+ inert: state.value === "rail" && !_ctx.$slots.icon
19464
+ }, [createElementVNode("div", _hoisted_3$7, [createElementVNode("div", { class: normalizeClass(unref(sidebarRegion)({ inDrawer: inDrawer.value })) }, [createElementVNode("div", { class: normalizeClass(unref(sidebarBrand)()) }, [_ctx.$slots.icon ? (openBlock(), createElementBlock("div", {
19465
+ key: 0,
19466
+ class: normalizeClass(unref(sidebarIcon)())
19467
+ }, [renderSlot(_ctx.$slots, "icon", { state: state.value })], 2)) : createCommentVNode("", true), _ctx.$slots.wordmark ? (openBlock(), createBlock(SidebarLabel_default, {
19468
+ key: 1,
19469
+ as: "div",
19470
+ class: normalizeClass(unref(sidebarWordmark)())
19471
+ }, {
19472
+ default: withCtx(() => [renderSlot(_ctx.$slots, "wordmark", { state: state.value })]),
19473
+ _: 3
19474
+ }, 8, ["class"])) : createCommentVNode("", true)], 2)], 2)])], 8, _hoisted_2$13)) : createCommentVNode("", true),
19475
+ createVNode(ScrollArea_default, { class: "min-h-0 flex-1" }, {
19476
+ default: withCtx(() => [createElementVNode("nav", {
19477
+ "aria-label": props.label ?? unref(t).sidebar.navLabel,
19478
+ class: normalizeClass(unref(cn)("flex flex-col gap-1 py-2", !inDrawer.value && "px-2.5"))
19479
+ }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_4$5)]),
19480
+ _: 3
19481
+ }),
19482
+ _ctx.$slots.footer ? (openBlock(), createElementBlock("div", {
19483
+ key: 2,
19484
+ class: normalizeClass(unref(sidebarRegion)({
19485
+ inDrawer: inDrawer.value,
19486
+ footer: true
19487
+ }))
19488
+ }, [renderSlot(_ctx.$slots, "footer", { state: state.value })], 2)) : createCommentVNode("", true)
19489
+ ], 10, _hoisted_1$17);
19058
19490
  };
19059
19491
  }
19060
19492
  });
19061
19493
  //#endregion
19062
19494
  //#region src/components/sidebar/SidebarGroup.vue?vue&type=script&setup=true&lang.ts
19063
- var _hoisted_1$16 = { class: "hn-collapse-body" };
19064
- var _hoisted_2$12 = { class: "flex flex-col gap-0.5 pt-1" };
19495
+ var _hoisted_1$16 = { class: "relative h-(--hn-control-h-sm)" };
19496
+ var _hoisted_2$12 = [
19497
+ "data-collapsed",
19498
+ "aria-hidden",
19499
+ "inert"
19500
+ ];
19501
+ var _hoisted_3$6 = ["data-collapsed"];
19502
+ var _hoisted_4$4 = { class: "flex flex-col gap-0.5 pt-1" };
19065
19503
  //#endregion
19066
19504
  //#region src/components/sidebar/SidebarGroup.vue
19067
19505
  var SidebarGroup_default = /* @__PURE__ */ defineComponent({
@@ -19086,31 +19524,33 @@ var SidebarGroup_default = /* @__PURE__ */ defineComponent({
19086
19524
  class: normalizeClass(unref(cn)(props.class)),
19087
19525
  "onUpdate:open": _cache[0] || (_cache[0] = (v) => rail.value ? void 0 : open.value = v)
19088
19526
  }, {
19089
- default: withCtx(() => [
19090
- createElementVNode("div", { class: normalizeClass(["hn-collapse", rail.value ? "hn-collapse-closed" : "hn-collapse-open"]) }, [createElementVNode("div", _hoisted_1$16, [createVNode(CollapsibleTrigger_default, { "as-child": "" }, {
19091
- default: withCtx(() => [createVNode(Button_default, {
19092
- variant: "ghost",
19093
- tone: "neutral",
19094
- size: "sm",
19095
- block: "",
19096
- tabindex: rail.value ? -1 : void 0,
19097
- class: "text-muted justify-between font-medium"
19098
- }, {
19099
- trailing: withCtx(() => [createVNode(DisclosureIcon_default, { direction: "end" })]),
19100
- default: withCtx(() => [createTextVNode(toDisplayString(props.label) + " ", 1)]),
19101
- _: 1
19102
- }, 8, ["tabindex"])]),
19527
+ default: withCtx(() => [createElementVNode("div", _hoisted_1$16, [createElementVNode("div", {
19528
+ class: "hn-sidebar-label",
19529
+ "data-collapsed": rail.value ? "" : void 0,
19530
+ "aria-hidden": rail.value ? "true" : void 0,
19531
+ inert: rail.value
19532
+ }, [createVNode(CollapsibleTrigger_default, { "as-child": "" }, {
19533
+ default: withCtx(() => [createVNode(Button_default, {
19534
+ variant: "ghost",
19535
+ tone: "neutral",
19536
+ size: "sm",
19537
+ block: "",
19538
+ tabindex: rail.value ? -1 : void 0,
19539
+ class: "text-muted justify-between font-medium"
19540
+ }, {
19541
+ trailing: withCtx(() => [createVNode(DisclosureIcon_default, { direction: "end" })]),
19542
+ default: withCtx(() => [createTextVNode(toDisplayString(props.label) + " ", 1)]),
19103
19543
  _: 1
19104
- })])], 2),
19105
- createElementVNode("div", {
19106
- "aria-hidden": "true",
19107
- class: normalizeClass(["hn-collapse", rail.value ? "hn-collapse-open" : "hn-collapse-closed"])
19108
- }, [..._cache[1] || (_cache[1] = [createElementVNode("div", { class: "hn-collapse-body" }, [createElementVNode("div", { class: "border-line mx-2 my-1.5 border-t" })], -1)])], 2),
19109
- createVNode(CollapsibleContent_default, null, {
19110
- default: withCtx(() => [createElementVNode("div", _hoisted_2$12, [renderSlot(_ctx.$slots, "default")])]),
19111
- _: 3
19112
- })
19113
- ]),
19544
+ }, 8, ["tabindex"])]),
19545
+ _: 1
19546
+ })], 8, _hoisted_2$12), createElementVNode("div", {
19547
+ "aria-hidden": "true",
19548
+ class: "hn-sidebar-label border-line pointer-events-none absolute inset-x-2 top-1/2 border-t",
19549
+ "data-collapsed": rail.value ? void 0 : ""
19550
+ }, null, 8, _hoisted_3$6)]), createVNode(CollapsibleContent_default, null, {
19551
+ default: withCtx(() => [createElementVNode("div", _hoisted_4$4, [renderSlot(_ctx.$slots, "default")])]),
19552
+ _: 3
19553
+ })]),
19114
19554
  _: 3
19115
19555
  }, 8, ["open", "class"]);
19116
19556
  };
@@ -19375,6 +19815,7 @@ var AppShell_default = /* @__PURE__ */ defineComponent({
19375
19815
  type: Boolean,
19376
19816
  default: true
19377
19817
  },
19818
+ mobileTitle: {},
19378
19819
  class: {}
19379
19820
  }, {
19380
19821
  "sidebar": { default: "expanded" },
@@ -19430,7 +19871,7 @@ var AppShell_default = /* @__PURE__ */ defineComponent({
19430
19871
  key: 1,
19431
19872
  open: mobileOpen.value,
19432
19873
  "onUpdate:open": _cache[0] || (_cache[0] = ($event) => mobileOpen.value = $event),
19433
- title: unref(t).sidebar.navLabel,
19874
+ title: props.mobileTitle ?? unref(t).sidebar.navLabel,
19434
19875
  side: "start",
19435
19876
  size: "sm",
19436
19877
  class: "lg:hidden"
@@ -21558,6 +21999,6 @@ function createScrollRestorer(key, ports) {
21558
21999
  };
21559
22000
  }
21560
22001
  //#endregion
21561
- export { Accordion_default as Accordion, AccordionContent_default as AccordionContent, AccordionItem_default as AccordionItem, AccordionTrigger_default as AccordionTrigger, Alert_default as Alert, AlertDialog_default as AlertDialog, Anchor_default as Anchor, AppShell_default as AppShell, AspectRatio_default as AspectRatio, Avatar_default as Avatar, AvatarGroup_default as AvatarGroup, Badge_default as Badge, Banner_default as Banner, Blockquote_default as Blockquote, Breadcrumb_default as Breadcrumb, BreadcrumbItem_default as BreadcrumbItem, BreadcrumbSeparator_default as BreadcrumbSeparator, Button_default as Button, ButtonGroup_default as ButtonGroup, Calendar_default as Calendar, Callout_default as Callout, Card_default as Card, Center_default as Center, Checkbox_default as Checkbox, CheckboxGroup_default as CheckboxGroup, Chip_default as Chip, CloseButton_default as CloseButton, Code_default as Code, CodeBlock_default as CodeBlock, Collapsible_default as Collapsible, CollapsibleContent_default as CollapsibleContent, CollapsibleTrigger_default as CollapsibleTrigger, Combobox_default as Combobox, CommandPalette_default as CommandPalette, Container_default as Container, ContextMenu_default as ContextMenu, ContextMenuCheckboxItem_default as ContextMenuCheckboxItem, ContextMenuGroup_default as ContextMenuGroup, ContextMenuItem_default as ContextMenuItem, ContextMenuLabel_default as ContextMenuLabel, ContextMenuRadioGroup_default as ContextMenuRadioGroup, ContextMenuRadioItem_default as ContextMenuRadioItem, ContextMenuSeparator_default as ContextMenuSeparator, ContextMenuSub_default as ContextMenuSub, CopyButton_default as CopyButton, DURATION, DateField_default as DateField, DatePicker_default as DatePicker, DateRangeField_default as DateRangeField, DateRangePicker_default as DateRangePicker, DateTimePicker_default as DateTimePicker, DescriptionDetails_default as DescriptionDetails, DescriptionList_default as DescriptionList, DescriptionTerm_default as DescriptionTerm, Dialog_default as Dialog, DisclosureIcon_default as DisclosureIcon, Divider_default as Divider, Drawer_default as Drawer, DropdownMenu_default as DropdownMenu, DropdownMenuCheckboxItem_default as DropdownMenuCheckboxItem, DropdownMenuGroup_default as DropdownMenuGroup, DropdownMenuItem_default as DropdownMenuItem, DropdownMenuLabel_default as DropdownMenuLabel, DropdownMenuRadioGroup_default as DropdownMenuRadioGroup, DropdownMenuRadioItem_default as DropdownMenuRadioItem, DropdownMenuSeparator_default as DropdownMenuSeparator, DropdownMenuSub_default as DropdownMenuSub, EASE, Empty_default as Empty, FileUpload_default as FileUpload, Flex_default as Flex, Form_default as Form, FormField_default as FormField, FormLayout_default as FormLayout, Grid_default as Grid, Heading_default as Heading, Highlight_default as Highlight, HoverCard_default as HoverCard, IconButton_default as IconButton, Image_default as Image, ImageGroup_default as ImageGroup, Indicator_default as Indicator, Inline_default as Inline, Input_default as Input, InputGroup_default as InputGroup, InputGroupAddon_default as InputGroupAddon, Kbd_default as Kbd, Lightbox_default as Lightbox, Link_default as Link, List_default as List, ListItem_default as ListItem, Listbox_default as Listbox, LoadingOverlay_default as LoadingOverlay, Mark_default as Mark, Menubar_default as Menubar, MenubarCheckboxItem_default as MenubarCheckboxItem, MenubarGroup_default as MenubarGroup, MenubarItem_default as MenubarItem, MenubarLabel_default as MenubarLabel, MenubarMenu_default as MenubarMenu, MenubarRadioGroup_default as MenubarRadioGroup, MenubarRadioItem_default as MenubarRadioItem, MenubarSeparator_default as MenubarSeparator, MenubarSub_default as MenubarSub, MeterGroup_default as MeterGroup, MultiCombobox_default as MultiCombobox, MultiSelect_default as MultiSelect, NavLink_default as NavLink, NumberFormat_default as NumberFormat, NumberInput_default as NumberInput, Page_default as Page, PageAside_default as PageAside, PageBody_default as PageBody, PageHeader_default as PageHeader, Pagination_default as Pagination, PaginationContent_default as PaginationContent, PaginationInfo_default as PaginationInfo, PaginationJump_default as PaginationJump, PaginationSize_default as PaginationSize, Panel_default as Panel, PasswordInput_default as PasswordInput, PinInput_default as PinInput, Popconfirm_default as Popconfirm, Popover_default as Popover, PrevNext_default as PrevNext, PrevNextLink_default as PrevNextLink, Progress_default as Progress, Prose_default as Prose, REQUIRED_SINGLETONS, RESTORE_DEADLINE_MS, RadioGroup_default as RadioGroup, RangeCalendar_default as RangeCalendar, RangeSlider_default as RangeSlider, Rating_default as Rating, Result_default as Result, RingProgress_default as RingProgress, Ripple_default as Ripple, SAVE_THROTTLE_MS, SCROLL_ATOP_ATTR, SCROLL_ATOP_HIDE_PX, SCROLL_AT_ATTR, SCROLL_RESTORE_ATTR, SCROLL_STATE_FIELD, STAGGER, ScrollArea_default as ScrollArea, SearchInput_default as SearchInput, Section_default as Section, SegmentedControl_default as SegmentedControl, Select_default as Select, Sheet_default as Sheet, Sidebar_default as Sidebar, SidebarGroup_default as SidebarGroup, SidebarTrigger_default as SidebarTrigger, SimpleGrid_default as SimpleGrid, Skeleton_default as Skeleton, Slider_default as Slider, Space_default as Space, Spinner_default as Spinner, Splitter_default as Splitter, SplitterHandle_default as SplitterHandle, SplitterPanel_default as SplitterPanel, Spoiler_default as Spoiler, Stack_default as Stack, Statistic_default as Statistic, Switch_default as Switch, TRANSITION, TRAVEL, Table_default as Table, TableBody_default as TableBody, TableCell_default as TableCell, TableHead_default as TableHead, TableHeader_default as TableHeader, TableRow_default as TableRow, Tabs_default as Tabs, TabsContent_default as TabsContent, TabsList_default as TabsList, TabsTrigger_default as TabsTrigger, Tag_default as Tag, TagsInput_default as TagsInput, Text_default as Text, Textarea_default as Textarea, Time_default as Time, TimeField_default as TimeField, Toaster_default as Toaster, Toggle_default as Toggle, Tooltip_default as Tooltip, TooltipProvider_default as TooltipProvider, TreeSelect_default as TreeSelect, VisuallyHidden_default as VisuallyHidden, atopOff, cn, createScrollRestorer, cssEase, enUS, firstPaintRestoreScript, provideImageResolver, provideUiLocale, readScrollRecord, toast, tokenize, tokensToHtml, tv, useImageResolver, useUiLocale, vTooltip, writeScrollRecord, zhCN };
22002
+ export { Accordion_default as Accordion, AccordionContent_default as AccordionContent, AccordionItem_default as AccordionItem, AccordionTrigger_default as AccordionTrigger, Alert_default as Alert, AlertDialog_default as AlertDialog, Anchor_default as Anchor, AppShell_default as AppShell, AspectRatio_default as AspectRatio, Avatar_default as Avatar, AvatarGroup_default as AvatarGroup, Badge_default as Badge, Banner_default as Banner, Blockquote_default as Blockquote, Breadcrumb_default as Breadcrumb, BreadcrumbItem_default as BreadcrumbItem, BreadcrumbSeparator_default as BreadcrumbSeparator, Button_default as Button, ButtonGroup_default as ButtonGroup, Calendar_default as Calendar, Callout_default as Callout, Card_default as Card, Center_default as Center, Checkbox_default as Checkbox, CheckboxGroup_default as CheckboxGroup, Chip_default as Chip, CloseButton_default as CloseButton, Code_default as Code, CodeBlock_default as CodeBlock, Collapsible_default as Collapsible, CollapsibleContent_default as CollapsibleContent, CollapsibleTrigger_default as CollapsibleTrigger, Combobox_default as Combobox, CommandPalette_default as CommandPalette, Container_default as Container, ContextMenu_default as ContextMenu, ContextMenuCheckboxItem_default as ContextMenuCheckboxItem, ContextMenuGroup_default as ContextMenuGroup, ContextMenuItem_default as ContextMenuItem, ContextMenuLabel_default as ContextMenuLabel, ContextMenuRadioGroup_default as ContextMenuRadioGroup, ContextMenuRadioItem_default as ContextMenuRadioItem, ContextMenuSeparator_default as ContextMenuSeparator, ContextMenuSub_default as ContextMenuSub, CopyButton_default as CopyButton, DURATION, DateField_default as DateField, DatePicker_default as DatePicker, DateRangeField_default as DateRangeField, DateRangePicker_default as DateRangePicker, DateTimePicker_default as DateTimePicker, DescriptionDetails_default as DescriptionDetails, DescriptionList_default as DescriptionList, DescriptionTerm_default as DescriptionTerm, Dialog_default as Dialog, DisclosureIcon_default as DisclosureIcon, Divider_default as Divider, Drawer_default as Drawer, DropdownMenu_default as DropdownMenu, DropdownMenuCheckboxItem_default as DropdownMenuCheckboxItem, DropdownMenuGroup_default as DropdownMenuGroup, DropdownMenuItem_default as DropdownMenuItem, DropdownMenuLabel_default as DropdownMenuLabel, DropdownMenuRadioGroup_default as DropdownMenuRadioGroup, DropdownMenuRadioItem_default as DropdownMenuRadioItem, DropdownMenuSeparator_default as DropdownMenuSeparator, DropdownMenuSub_default as DropdownMenuSub, EASE, Empty_default as Empty, FileUpload_default as FileUpload, Flex_default as Flex, Form_default as Form, FormField_default as FormField, FormLayout_default as FormLayout, Grid_default as Grid, Heading_default as Heading, Highlight_default as Highlight, HoverCard_default as HoverCard, IconButton_default as IconButton, Image_default as Image, ImageGroup_default as ImageGroup, Indicator_default as Indicator, Inline_default as Inline, Input_default as Input, InputGroup_default as InputGroup, InputGroupAddon_default as InputGroupAddon, Kbd_default as Kbd, Lightbox_default as Lightbox, Link_default as Link, List_default as List, ListItem_default as ListItem, Listbox_default as Listbox, LoadingOverlay_default as LoadingOverlay, Mark_default as Mark, Menubar_default as Menubar, MenubarCheckboxItem_default as MenubarCheckboxItem, MenubarGroup_default as MenubarGroup, MenubarItem_default as MenubarItem, MenubarLabel_default as MenubarLabel, MenubarMenu_default as MenubarMenu, MenubarRadioGroup_default as MenubarRadioGroup, MenubarRadioItem_default as MenubarRadioItem, MenubarSeparator_default as MenubarSeparator, MenubarSub_default as MenubarSub, MeterGroup_default as MeterGroup, MultiCombobox_default as MultiCombobox, MultiSelect_default as MultiSelect, NavLink_default as NavLink, NumberFormat_default as NumberFormat, NumberInput_default as NumberInput, Page_default as Page, PageAside_default as PageAside, PageBody_default as PageBody, PageHeader_default as PageHeader, Pagination_default as Pagination, PaginationContent_default as PaginationContent, PaginationInfo_default as PaginationInfo, PaginationJump_default as PaginationJump, PaginationSize_default as PaginationSize, Panel_default as Panel, PasswordInput_default as PasswordInput, PinInput_default as PinInput, Popconfirm_default as Popconfirm, Popover_default as Popover, PrevNext_default as PrevNext, PrevNextLink_default as PrevNextLink, Progress_default as Progress, Prose_default as Prose, REQUIRED_SINGLETONS, RESTORE_DEADLINE_MS, RadioGroup_default as RadioGroup, RangeCalendar_default as RangeCalendar, RangeSlider_default as RangeSlider, Rating_default as Rating, Result_default as Result, RingProgress_default as RingProgress, Ripple_default as Ripple, SAVE_THROTTLE_MS, SCROLL_ATOP_ATTR, SCROLL_ATOP_HIDE_PX, SCROLL_AT_ATTR, SCROLL_RESTORE_ATTR, SCROLL_STATE_FIELD, STAGGER, ScrollArea_default as ScrollArea, SearchInput_default as SearchInput, Section_default as Section, SegmentedControl_default as SegmentedControl, Select_default as Select, Sheet_default as Sheet, Sidebar_default as Sidebar, SidebarGroup_default as SidebarGroup, SidebarLabel_default as SidebarLabel, SidebarTrigger_default as SidebarTrigger, SimpleGrid_default as SimpleGrid, Skeleton_default as Skeleton, Slider_default as Slider, Space_default as Space, Spinner_default as Spinner, Splitter_default as Splitter, SplitterHandle_default as SplitterHandle, SplitterPanel_default as SplitterPanel, Spoiler_default as Spoiler, Stack_default as Stack, Statistic_default as Statistic, Switch_default as Switch, TRANSITION, TRAVEL, Table_default as Table, TableBody_default as TableBody, TableCell_default as TableCell, TableHead_default as TableHead, TableHeader_default as TableHeader, TableRow_default as TableRow, Tabs_default as Tabs, TabsContent_default as TabsContent, TabsList_default as TabsList, TabsTrigger_default as TabsTrigger, Tag_default as Tag, TagsInput_default as TagsInput, Text_default as Text, Textarea_default as Textarea, Time_default as Time, TimeField_default as TimeField, Toaster_default as Toaster, Toggle_default as Toggle, Tooltip_default as Tooltip, TooltipProvider_default as TooltipProvider, Tree_default as Tree, TreeSelect_default as TreeSelect, VisuallyHidden_default as VisuallyHidden, atopOff, cn, createScrollRestorer, cssEase, enUS, firstPaintRestoreScript, provideImageResolver, provideUiLocale, readScrollRecord, toast, tokenize, tokensToHtml, tv, useImageResolver, useUiLocale, vTooltip, writeScrollRecord, zhCN };
21562
22003
 
21563
22004
  //# sourceMappingURL=index.js.map