@auronui/vue 1.0.11 → 1.0.13

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 (64) hide show
  1. package/dist/cjs/index.cjs +1080 -902
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/components/autocomplete/Autocomplete.context.js.map +1 -1
  4. package/dist/components/autocomplete/Autocomplete.js.map +1 -1
  5. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +141 -17
  6. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  7. package/dist/components/autocomplete/AutocompleteCreateItem.js +7 -0
  8. package/dist/components/autocomplete/AutocompleteCreateItem.js.map +1 -0
  9. package/dist/components/autocomplete/AutocompleteCreateItem.vue_vue_type_script_setup_true_lang.js +57 -0
  10. package/dist/components/autocomplete/AutocompleteCreateItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  11. package/dist/components/autocomplete/AutocompleteInput.js.map +1 -1
  12. package/dist/components/autocomplete/AutocompleteInput.vue_vue_type_script_setup_true_lang.js +40 -9
  13. package/dist/components/autocomplete/AutocompleteInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  14. package/dist/components/autocomplete/AutocompleteItem.js.map +1 -1
  15. package/dist/components/autocomplete/AutocompleteItem.vue_vue_type_script_setup_true_lang.js +33 -5
  16. package/dist/components/autocomplete/AutocompleteItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  17. package/dist/components/autocomplete/AutocompleteOverflowChips.js +7 -0
  18. package/dist/components/autocomplete/AutocompleteOverflowChips.js.map +1 -0
  19. package/dist/components/autocomplete/AutocompleteOverflowChips.vue_vue_type_script_setup_true_lang.js +88 -0
  20. package/dist/components/autocomplete/AutocompleteOverflowChips.vue_vue_type_script_setup_true_lang.js.map +1 -0
  21. package/dist/components/combo-box/ComboBox.js.map +1 -1
  22. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js +20 -2
  23. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/components/select/Select.context.js.map +1 -1
  25. package/dist/components/select/Select.js.map +1 -1
  26. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js +45 -6
  27. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
  28. package/dist/components/select/SelectItem.js.map +1 -1
  29. package/dist/components/select/SelectItem.vue_vue_type_script_setup_true_lang.js +2 -2
  30. package/dist/components/select/SelectItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/components/select/SelectOverflowChips.js +7 -0
  32. package/dist/components/select/SelectOverflowChips.js.map +1 -0
  33. package/dist/components/select/SelectOverflowChips.vue_vue_type_script_setup_true_lang.js +85 -0
  34. package/dist/components/select/SelectOverflowChips.vue_vue_type_script_setup_true_lang.js.map +1 -0
  35. package/dist/components/select/SelectValue.js.map +1 -1
  36. package/dist/components/select/SelectValue.vue_vue_type_script_setup_true_lang.js +6 -1
  37. package/dist/components/select/SelectValue.vue_vue_type_script_setup_true_lang.js.map +1 -1
  38. package/dist/index.d.ts +362 -432
  39. package/dist/index.js +5 -10
  40. package/dist/utils/hasSlotComponent.js +26 -0
  41. package/dist/utils/hasSlotComponent.js.map +1 -0
  42. package/package.json +2 -2
  43. package/dist/components/tag/Tag.js +0 -7
  44. package/dist/components/tag/Tag.js.map +0 -1
  45. package/dist/components/tag/Tag.vue_vue_type_script_setup_true_lang.js +0 -69
  46. package/dist/components/tag/Tag.vue_vue_type_script_setup_true_lang.js.map +0 -1
  47. package/dist/components/tag/TagDelete.js +0 -7
  48. package/dist/components/tag/TagDelete.js.map +0 -1
  49. package/dist/components/tag/TagDelete.vue_vue_type_script_setup_true_lang.js +0 -49
  50. package/dist/components/tag/TagDelete.vue_vue_type_script_setup_true_lang.js.map +0 -1
  51. package/dist/components/tag/TagText.js +0 -7
  52. package/dist/components/tag/TagText.js.map +0 -1
  53. package/dist/components/tag/TagText.vue_vue_type_script_setup_true_lang.js +0 -18
  54. package/dist/components/tag/TagText.vue_vue_type_script_setup_true_lang.js.map +0 -1
  55. package/dist/components/tag-group/TagGroup.context.js +0 -7
  56. package/dist/components/tag-group/TagGroup.context.js.map +0 -1
  57. package/dist/components/tag-group/TagGroup.js +0 -7
  58. package/dist/components/tag-group/TagGroup.js.map +0 -1
  59. package/dist/components/tag-group/TagGroup.vue_vue_type_script_setup_true_lang.js +0 -142
  60. package/dist/components/tag-group/TagGroup.vue_vue_type_script_setup_true_lang.js.map +0 -1
  61. package/dist/components/tag-group/TagGroupInput.js +0 -7
  62. package/dist/components/tag-group/TagGroupInput.js.map +0 -1
  63. package/dist/components/tag-group/TagGroupInput.vue_vue_type_script_setup_true_lang.js +0 -37
  64. package/dist/components/tag-group/TagGroupInput.vue_vue_type_script_setup_true_lang.js.map +0 -1
@@ -373,7 +373,7 @@ function createContext(contextName) {
373
373
  }
374
374
  //#endregion
375
375
  //#region src/components/spinner/Spinner.vue?vue&type=script&setup=true&lang.ts
376
- var _hoisted_1$59 = ["aria-label"];
376
+ var _hoisted_1$61 = ["aria-label"];
377
377
  var _hoisted_2$32 = {
378
378
  "data-slot": "spinner-icon",
379
379
  viewBox: "0 0 24 24",
@@ -381,9 +381,9 @@ var _hoisted_2$32 = {
381
381
  width: "100%",
382
382
  height: "100%"
383
383
  };
384
- var _hoisted_3$21 = { fill: "none" };
385
- var _hoisted_4$14 = ["fill"];
386
- var _hoisted_5$10 = ["fill"];
384
+ var _hoisted_3$20 = { fill: "none" };
385
+ var _hoisted_4$13 = ["fill"];
386
+ var _hoisted_5$9 = ["fill"];
387
387
  //#endregion
388
388
  //#region src/components/spinner/Spinner.vue
389
389
  var Spinner_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -435,25 +435,25 @@ var Spinner_default = /* @__PURE__ */ (0, vue.defineComponent)({
435
435
  offset: "100%",
436
436
  "stop-color": "currentColor",
437
437
  "stop-opacity": "0.55"
438
- }, null, -1)])])]), (0, vue.createElementVNode)("g", _hoisted_3$21, [
438
+ }, null, -1)])])]), (0, vue.createElementVNode)("g", _hoisted_3$20, [
439
439
  _cache[2] || (_cache[2] = (0, vue.createElementVNode)("path", { d: "m12.593 23.258l-.011.002l-.071.035l-.02.004l-.014-.004l-.071-.035q-.016-.005-.024.005l-.004.01l-.017.428l.005.02l.01.013l.104.074l.015.004l.012-.004l.104-.074l.012-.016l.004-.017l-.017-.427q-.004-.016-.017-.018m.265-.113l-.013.002l-.185.093l-.01.01l-.003.011l.018.43l.005.012l.008.007l.201.093q.019.005.029-.008l.004-.014l-.034-.614q-.005-.018-.02-.022m-.715.002a.02.02 0 0 0-.027.006l-.006.014l-.034.614q.001.018.017.024l.015-.002l.201-.093l.01-.008l.004-.011l.017-.43l-.003-.012l-.01-.01z" }, null, -1)),
440
440
  (0, vue.createElementVNode)("path", {
441
441
  d: "M8.749.021a1.5 1.5 0 0 1 .497 2.958A7.5 7.5 0 0 0 3 10.375a7.5 7.5 0 0 0 7.5 7.5v3c-5.799 0-10.5-4.7-10.5-10.5C0 5.23 3.726.865 8.749.021",
442
442
  fill: `url(#${gradId1})`,
443
443
  transform: "translate(1.5 1.625)"
444
- }, null, 8, _hoisted_4$14),
444
+ }, null, 8, _hoisted_4$13),
445
445
  (0, vue.createElementVNode)("path", {
446
446
  d: "M15.392 2.673a1.5 1.5 0 0 1 2.119-.115A10.48 10.48 0 0 1 21 10.375c0 5.8-4.701 10.5-10.5 10.5v-3a7.5 7.5 0 0 0 5.007-13.084a1.5 1.5 0 0 1-.115-2.118",
447
447
  fill: `url(#${gradId2})`,
448
448
  transform: "translate(1.5 1.625)"
449
- }, null, 8, _hoisted_5$10)
450
- ])]))], 10, _hoisted_1$59);
449
+ }, null, 8, _hoisted_5$9)
450
+ ])]))], 10, _hoisted_1$61);
451
451
  };
452
452
  }
453
453
  });
454
454
  //#endregion
455
455
  //#region src/components/separator/Separator.vue?vue&type=script&setup=true&lang.ts
456
- var _hoisted_1$58 = { class: "separator__content" };
456
+ var _hoisted_1$60 = { class: "separator__content" };
457
457
  //#endregion
458
458
  //#region src/components/separator/Separator.vue
459
459
  var Separator_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -487,7 +487,7 @@ var Separator_default = /* @__PURE__ */ (0, vue.defineComponent)({
487
487
  "aria-orientation": "horizontal"
488
488
  }, [
489
489
  _cache[0] || (_cache[0] = (0, vue.createElementVNode)("div", { class: "separator__line" }, null, -1)),
490
- (0, vue.createElementVNode)("div", _hoisted_1$58, [(0, vue.renderSlot)(_ctx.$slots, "default")]),
490
+ (0, vue.createElementVNode)("div", _hoisted_1$60, [(0, vue.renderSlot)(_ctx.$slots, "default")]),
491
491
  _cache[1] || (_cache[1] = (0, vue.createElementVNode)("div", { class: "separator__line" }, null, -1))
492
492
  ], 2));
493
493
  };
@@ -539,7 +539,7 @@ var Text_default = /* @__PURE__ */ (0, vue.defineComponent)({
539
539
  });
540
540
  //#endregion
541
541
  //#region src/components/label/Label.vue?vue&type=script&setup=true&lang.ts
542
- var _hoisted_1$57 = ["for"];
542
+ var _hoisted_1$59 = ["for"];
543
543
  //#endregion
544
544
  //#region src/components/label/Label.vue
545
545
  var Label_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -571,13 +571,13 @@ var Label_default = /* @__PURE__ */ (0, vue.defineComponent)({
571
571
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
572
572
  class: (0, vue.normalizeClass)(classes.value),
573
573
  for: props.for
574
- }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$57);
574
+ }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$59);
575
575
  };
576
576
  }
577
577
  });
578
578
  //#endregion
579
579
  //#region src/components/description/Description.vue?vue&type=script&setup=true&lang.ts
580
- var _hoisted_1$56 = ["id"];
580
+ var _hoisted_1$58 = ["id"];
581
581
  //#endregion
582
582
  //#region src/components/description/Description.vue
583
583
  var Description_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -593,7 +593,7 @@ var Description_default = /* @__PURE__ */ (0, vue.defineComponent)({
593
593
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("p", {
594
594
  id: props.id,
595
595
  class: (0, vue.normalizeClass)(classes.value)
596
- }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$56);
596
+ }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$58);
597
597
  };
598
598
  }
599
599
  });
@@ -661,7 +661,7 @@ var Badge_default = /* @__PURE__ */ (0, vue.defineComponent)({
661
661
  });
662
662
  //#endregion
663
663
  //#region src/components/chip/Chip.vue?vue&type=script&setup=true&lang.ts
664
- var _hoisted_1$55 = ["aria-label"];
664
+ var _hoisted_1$57 = ["aria-label"];
665
665
  //#endregion
666
666
  //#region src/components/chip/Chip.vue
667
667
  var Chip_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -734,7 +734,7 @@ var Chip_default = /* @__PURE__ */ (0, vue.defineComponent)({
734
734
  y1: "6",
735
735
  x2: "18",
736
736
  y2: "18"
737
- })], -1)])], 10, _hoisted_1$55)) : (0, vue.createCommentVNode)("", true)
737
+ })], -1)])], 10, _hoisted_1$57)) : (0, vue.createCommentVNode)("", true)
738
738
  ], 2);
739
739
  };
740
740
  }
@@ -767,7 +767,7 @@ var Surface_default = /* @__PURE__ */ (0, vue.defineComponent)({
767
767
  var { useProvide: useCardProvide, useInject: useCardInject, key: cardContextKey } = createContext("Card");
768
768
  //#endregion
769
769
  //#region src/components/card/Card.vue?vue&type=script&setup=true&lang.ts
770
- var _hoisted_1$54 = [
770
+ var _hoisted_1$56 = [
771
771
  "role",
772
772
  "tabindex",
773
773
  "aria-disabled",
@@ -843,7 +843,7 @@ var Card_default = /* @__PURE__ */ (0, vue.defineComponent)({
843
843
  "data-disabled": __props.isDisabled || void 0,
844
844
  onClick,
845
845
  onKeydown
846
- }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 42, _hoisted_1$54);
846
+ }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 42, _hoisted_1$56);
847
847
  };
848
848
  }
849
849
  });
@@ -1068,7 +1068,7 @@ var Button_default = /* @__PURE__ */ (0, vue.defineComponent)({
1068
1068
  });
1069
1069
  //#endregion
1070
1070
  //#region src/components/button/ButtonGroup.vue?vue&type=script&setup=true&lang.ts
1071
- var _hoisted_1$53 = ["data-orientation"];
1071
+ var _hoisted_1$55 = ["data-orientation"];
1072
1072
  //#endregion
1073
1073
  //#region src/components/button/ButtonGroup.vue
1074
1074
  var ButtonGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -1133,7 +1133,7 @@ var ButtonGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
1133
1133
  class: (0, vue.normalizeClass)((0, vue.unref)(composeClassName)(slotFns.value.base(), props.class)),
1134
1134
  "data-orientation": props.orientation,
1135
1135
  role: "group"
1136
- }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$53);
1136
+ }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$55);
1137
1137
  };
1138
1138
  }
1139
1139
  });
@@ -1205,7 +1205,7 @@ var CloseButton_default = /* @__PURE__ */ (0, vue.defineComponent)({
1205
1205
  var { useProvide: useToggleButtonGroupProvide, useInject: useToggleButtonGroupInject, key: toggleButtonGroupContextKey } = createContext("ToggleButtonGroup");
1206
1206
  //#endregion
1207
1207
  //#region src/components/button/ToggleButton.vue?vue&type=script&setup=true&lang.ts
1208
- var _hoisted_1$52 = ["disabled", "data-orientation"];
1208
+ var _hoisted_1$54 = ["disabled", "data-orientation"];
1209
1209
  //#endregion
1210
1210
  //#region src/components/button/ToggleButton.vue
1211
1211
  var ToggleButton_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -1276,7 +1276,7 @@ var ToggleButton_default = /* @__PURE__ */ (0, vue.defineComponent)({
1276
1276
  disabled: isDisabled.value || void 0,
1277
1277
  "data-orientation": (0, vue.unref)(groupCtx).orientation.value,
1278
1278
  type: "button"
1279
- }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$52)]),
1279
+ }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$54)]),
1280
1280
  _: 3
1281
1281
  }, 8, [
1282
1282
  "disabled",
@@ -1288,7 +1288,7 @@ var ToggleButton_default = /* @__PURE__ */ (0, vue.defineComponent)({
1288
1288
  });
1289
1289
  //#endregion
1290
1290
  //#region src/components/button/ToggleButtonGroup.vue?vue&type=script&setup=true&lang.ts
1291
- var _hoisted_1$51 = ["data-orientation"];
1291
+ var _hoisted_1$53 = ["data-orientation"];
1292
1292
  //#endregion
1293
1293
  //#region src/components/button/ToggleButtonGroup.vue
1294
1294
  var ToggleButtonGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -1355,7 +1355,7 @@ var ToggleButtonGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
1355
1355
  class: (0, vue.normalizeClass)((0, vue.unref)(composeClassName)(slotFns.value.base(), props.class)),
1356
1356
  "data-orientation": props.orientation,
1357
1357
  role: "group"
1358
- }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$51);
1358
+ }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$53);
1359
1359
  };
1360
1360
  }
1361
1361
  });
@@ -1844,7 +1844,7 @@ var FormField_default = /* @__PURE__ */ (0, vue.defineComponent)({
1844
1844
  });
1845
1845
  //#endregion
1846
1846
  //#region src/components/input/Input.vue?vue&type=script&setup=true&lang.ts
1847
- var _hoisted_1$50 = [
1847
+ var _hoisted_1$52 = [
1848
1848
  "data-invalid",
1849
1849
  "data-disabled",
1850
1850
  "data-readonly",
@@ -1853,13 +1853,13 @@ var _hoisted_1$50 = [
1853
1853
  "data-has-helper"
1854
1854
  ];
1855
1855
  var _hoisted_2$31 = ["for"];
1856
- var _hoisted_3$20 = {
1856
+ var _hoisted_3$19 = {
1857
1857
  key: 0,
1858
1858
  "aria-hidden": "true"
1859
1859
  };
1860
- var _hoisted_4$13 = ["data-filled"];
1861
- var _hoisted_5$9 = ["for"];
1862
- var _hoisted_6$7 = {
1860
+ var _hoisted_4$12 = ["data-filled"];
1861
+ var _hoisted_5$8 = ["for"];
1862
+ var _hoisted_6$6 = {
1863
1863
  key: 0,
1864
1864
  "aria-hidden": "true"
1865
1865
  };
@@ -2014,7 +2014,7 @@ var Input_default = /* @__PURE__ */ (0, vue.defineComponent)({
2014
2014
  key: 0,
2015
2015
  for: inputId.value,
2016
2016
  class: (0, vue.normalizeClass)(slotFns.value.label())
2017
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$20, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_2$31)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(slotFns.value.mainWrapper()) }, [(0, vue.createElementVNode)("div", {
2017
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$19, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_2$31)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(slotFns.value.mainWrapper()) }, [(0, vue.createElementVNode)("div", {
2018
2018
  class: (0, vue.normalizeClass)(slotFns.value.inputWrapper()),
2019
2019
  "data-filled": hasLabel.value ? isFilled.value || void 0 : void 0
2020
2020
  }, [
@@ -2022,7 +2022,7 @@ var Input_default = /* @__PURE__ */ (0, vue.defineComponent)({
2022
2022
  key: 0,
2023
2023
  for: inputId.value,
2024
2024
  class: (0, vue.normalizeClass)(slotFns.value.label())
2025
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_6$7, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_5$9)) : (0, vue.createCommentVNode)("", true),
2025
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_6$6, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_5$8)) : (0, vue.createCommentVNode)("", true),
2026
2026
  _ctx.$slots.startContent ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
2027
2027
  key: 1,
2028
2028
  class: (0, vue.normalizeClass)(slotFns.value.startContent())
@@ -2098,7 +2098,7 @@ var Input_default = /* @__PURE__ */ (0, vue.defineComponent)({
2098
2098
  cy: "12",
2099
2099
  r: "3"
2100
2100
  }, null, -1)])]))], 10, _hoisted_8$1)) : (0, vue.createCommentVNode)("", true)
2101
- ], 10, _hoisted_4$13), hasHelper.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
2101
+ ], 10, _hoisted_4$12), hasHelper.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
2102
2102
  key: 0,
2103
2103
  class: (0, vue.normalizeClass)(slotFns.value.helperWrapper())
2104
2104
  }, [showError.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
@@ -2109,13 +2109,13 @@ var Input_default = /* @__PURE__ */ (0, vue.defineComponent)({
2109
2109
  key: 1,
2110
2110
  id: descriptionId.value,
2111
2111
  class: (0, vue.normalizeClass)(slotFns.value.description())
2112
- }, (0, vue.toDisplayString)(__props.description), 11, _hoisted_12)) : (0, vue.createCommentVNode)("", true)], 2)) : (0, vue.createCommentVNode)("", true)], 2)], 10, _hoisted_1$50);
2112
+ }, (0, vue.toDisplayString)(__props.description), 11, _hoisted_12)) : (0, vue.createCommentVNode)("", true)], 2)) : (0, vue.createCommentVNode)("", true)], 2)], 10, _hoisted_1$52);
2113
2113
  };
2114
2114
  }
2115
2115
  });
2116
2116
  //#endregion
2117
2117
  //#region src/components/textarea/Textarea.vue?vue&type=script&setup=true&lang.ts
2118
- var _hoisted_1$49 = [
2118
+ var _hoisted_1$51 = [
2119
2119
  "data-invalid",
2120
2120
  "data-disabled",
2121
2121
  "data-readonly",
@@ -2124,13 +2124,13 @@ var _hoisted_1$49 = [
2124
2124
  "data-has-helper"
2125
2125
  ];
2126
2126
  var _hoisted_2$30 = ["for"];
2127
- var _hoisted_3$19 = {
2127
+ var _hoisted_3$18 = {
2128
2128
  key: 0,
2129
2129
  "aria-hidden": "true"
2130
2130
  };
2131
- var _hoisted_4$12 = ["data-filled"];
2132
- var _hoisted_5$8 = ["for"];
2133
- var _hoisted_6$6 = {
2131
+ var _hoisted_4$11 = ["data-filled"];
2132
+ var _hoisted_5$7 = ["for"];
2133
+ var _hoisted_6$5 = {
2134
2134
  key: 0,
2135
2135
  "aria-hidden": "true"
2136
2136
  };
@@ -2254,7 +2254,7 @@ var Textarea_default = /* @__PURE__ */ (0, vue.defineComponent)({
2254
2254
  key: 0,
2255
2255
  for: inputId.value,
2256
2256
  class: (0, vue.normalizeClass)(slotFns.value.label())
2257
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$19, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_2$30)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(slotFns.value.mainWrapper()) }, [(0, vue.createElementVNode)("div", {
2257
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$18, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_2$30)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(slotFns.value.mainWrapper()) }, [(0, vue.createElementVNode)("div", {
2258
2258
  class: (0, vue.normalizeClass)(slotFns.value.inputWrapper()),
2259
2259
  "data-filled": hasLabel.value ? isFilled.value || void 0 : void 0
2260
2260
  }, [
@@ -2262,7 +2262,7 @@ var Textarea_default = /* @__PURE__ */ (0, vue.defineComponent)({
2262
2262
  key: 0,
2263
2263
  for: inputId.value,
2264
2264
  class: (0, vue.normalizeClass)(slotFns.value.label())
2265
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_6$6, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_5$8)) : (0, vue.createCommentVNode)("", true),
2265
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_6$5, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_5$7)) : (0, vue.createCommentVNode)("", true),
2266
2266
  _ctx.$slots.startContent ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
2267
2267
  key: 1,
2268
2268
  class: (0, vue.normalizeClass)(slotFns.value.startContent())
@@ -2321,7 +2321,7 @@ var Textarea_default = /* @__PURE__ */ (0, vue.defineComponent)({
2321
2321
  y2: "15"
2322
2322
  })
2323
2323
  ], -1)])], 2)) : (0, vue.createCommentVNode)("", true)
2324
- ], 10, _hoisted_4$12), hasHelper.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
2324
+ ], 10, _hoisted_4$11), hasHelper.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
2325
2325
  key: 0,
2326
2326
  class: (0, vue.normalizeClass)(slotFns.value.helperWrapper())
2327
2327
  }, [showError.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
@@ -2332,13 +2332,13 @@ var Textarea_default = /* @__PURE__ */ (0, vue.defineComponent)({
2332
2332
  key: 1,
2333
2333
  id: descriptionId.value,
2334
2334
  class: (0, vue.normalizeClass)(slotFns.value.description())
2335
- }, (0, vue.toDisplayString)(__props.description), 11, _hoisted_9)) : (0, vue.createCommentVNode)("", true)], 2)) : (0, vue.createCommentVNode)("", true)], 2)], 10, _hoisted_1$49);
2335
+ }, (0, vue.toDisplayString)(__props.description), 11, _hoisted_9)) : (0, vue.createCommentVNode)("", true)], 2)) : (0, vue.createCommentVNode)("", true)], 2)], 10, _hoisted_1$51);
2336
2336
  };
2337
2337
  }
2338
2338
  });
2339
2339
  //#endregion
2340
2340
  //#region src/components/number-field/NumberField.vue?vue&type=script&setup=true&lang.ts
2341
- var _hoisted_1$48 = ["for"];
2341
+ var _hoisted_1$50 = ["for"];
2342
2342
  //#endregion
2343
2343
  //#region src/components/number-field/NumberField.vue
2344
2344
  var NumberField_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -2418,7 +2418,7 @@ var NumberField_default = /* @__PURE__ */ (0, vue.defineComponent)({
2418
2418
  for: resolvedInputId.value,
2419
2419
  class: (0, vue.normalizeClass)(isLabelVisible.value ? void 0 : "sr-only"),
2420
2420
  "data-slot": "label"
2421
- }, (0, vue.toDisplayString)(props.label || props.ariaLabel), 11, _hoisted_1$48)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", {
2421
+ }, (0, vue.toDisplayString)(props.label || props.ariaLabel), 11, _hoisted_1$50)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", {
2422
2422
  class: (0, vue.normalizeClass)(slotFns.value.group()),
2423
2423
  "data-slot": "group"
2424
2424
  }, [
@@ -2481,7 +2481,7 @@ var NumberField_default = /* @__PURE__ */ (0, vue.defineComponent)({
2481
2481
  });
2482
2482
  //#endregion
2483
2483
  //#region src/components/fieldset/Fieldset.vue?vue&type=script&setup=true&lang.ts
2484
- var _hoisted_1$47 = ["disabled"];
2484
+ var _hoisted_1$49 = ["disabled"];
2485
2485
  //#endregion
2486
2486
  //#region src/components/fieldset/Fieldset.vue
2487
2487
  var Fieldset_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -2509,7 +2509,7 @@ var Fieldset_default = /* @__PURE__ */ (0, vue.defineComponent)({
2509
2509
  }, [props.legend ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("legend", {
2510
2510
  key: 0,
2511
2511
  class: (0, vue.normalizeClass)((0, vue.unref)(styles).legend())
2512
- }, (0, vue.toDisplayString)(props.legend), 3)) : (0, vue.createCommentVNode)("", true), (0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$47);
2512
+ }, (0, vue.toDisplayString)(props.legend), 3)) : (0, vue.createCommentVNode)("", true), (0, vue.renderSlot)(_ctx.$slots, "default")], 10, _hoisted_1$49);
2513
2513
  };
2514
2514
  }
2515
2515
  });
@@ -2518,7 +2518,7 @@ var Fieldset_default = /* @__PURE__ */ (0, vue.defineComponent)({
2518
2518
  var { useProvide: useCheckboxGroupProvide, useInject: useCheckboxGroupInject, key: checkboxGroupContextKey } = createContext("CheckboxGroup");
2519
2519
  //#endregion
2520
2520
  //#region src/components/checkbox/Checkbox.vue?vue&type=script&setup=true&lang.ts
2521
- var _hoisted_1$46 = {
2521
+ var _hoisted_1$48 = {
2522
2522
  key: 0,
2523
2523
  xmlns: "http://www.w3.org/2000/svg",
2524
2524
  width: "12",
@@ -2605,7 +2605,7 @@ var Checkbox_default = /* @__PURE__ */ (0, vue.defineComponent)({
2605
2605
  "onUpdate:modelValue": handleUpdate
2606
2606
  }), {
2607
2607
  default: (0, vue.withCtx)(() => [(0, vue.createElementVNode)("span", { class: (0, vue.normalizeClass)(slotFns.value.control()) }, [(0, vue.createVNode)((0, vue.unref)(reka_ui.CheckboxIndicator), { class: (0, vue.normalizeClass)(slotFns.value.indicator()) }, {
2608
- default: (0, vue.withCtx)(() => [props.isIndeterminate ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$46, [..._cache[0] || (_cache[0] = [(0, vue.createElementVNode)("line", {
2608
+ default: (0, vue.withCtx)(() => [props.isIndeterminate ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$48, [..._cache[0] || (_cache[0] = [(0, vue.createElementVNode)("line", {
2609
2609
  x1: "5",
2610
2610
  y1: "12",
2611
2611
  x2: "19",
@@ -2626,9 +2626,9 @@ var Checkbox_default = /* @__PURE__ */ (0, vue.defineComponent)({
2626
2626
  });
2627
2627
  //#endregion
2628
2628
  //#region src/components/checkbox/CheckboxGroup.vue?vue&type=script&setup=true&lang.ts
2629
- var _hoisted_1$45 = ["aria-labelledby", "data-orientation"];
2629
+ var _hoisted_1$47 = ["aria-labelledby", "data-orientation"];
2630
2630
  var _hoisted_2$28 = { class: "checkbox-group__wrapper" };
2631
- var _hoisted_3$18 = {
2631
+ var _hoisted_3$17 = {
2632
2632
  key: 1,
2633
2633
  class: "checkbox-group__description"
2634
2634
  };
@@ -2683,8 +2683,8 @@ var CheckboxGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
2683
2683
  class: "checkbox-group__label"
2684
2684
  }, (0, vue.toDisplayString)(props.label), 1)) : (0, vue.createCommentVNode)("", true),
2685
2685
  (0, vue.createElementVNode)("div", _hoisted_2$28, [(0, vue.renderSlot)(_ctx.$slots, "default")]),
2686
- props.description ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$18, (0, vue.toDisplayString)(props.description), 1)) : (0, vue.createCommentVNode)("", true)
2687
- ], 10, _hoisted_1$45);
2686
+ props.description ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$17, (0, vue.toDisplayString)(props.description), 1)) : (0, vue.createCommentVNode)("", true)
2687
+ ], 10, _hoisted_1$47);
2688
2688
  };
2689
2689
  }
2690
2690
  });
@@ -2735,7 +2735,7 @@ var Radio_default = /* @__PURE__ */ (0, vue.defineComponent)({
2735
2735
  });
2736
2736
  //#endregion
2737
2737
  //#region src/components/radio/RadioGroup.vue?vue&type=script&setup=true&lang.ts
2738
- var _hoisted_1$44 = { class: "radio-group__wrapper" };
2738
+ var _hoisted_1$46 = { class: "radio-group__wrapper" };
2739
2739
  var _hoisted_2$27 = {
2740
2740
  key: 1,
2741
2741
  class: "radio-group__description"
@@ -2785,7 +2785,7 @@ var RadioGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
2785
2785
  id: labelId,
2786
2786
  class: "radio-group__label"
2787
2787
  }, (0, vue.toDisplayString)(props.label), 1)) : (0, vue.createCommentVNode)("", true),
2788
- (0, vue.createElementVNode)("div", _hoisted_1$44, [(0, vue.renderSlot)(_ctx.$slots, "default")]),
2788
+ (0, vue.createElementVNode)("div", _hoisted_1$46, [(0, vue.renderSlot)(_ctx.$slots, "default")]),
2789
2789
  props.description ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$27, (0, vue.toDisplayString)(props.description), 1)) : (0, vue.createCommentVNode)("", true)
2790
2790
  ]),
2791
2791
  _: 3
@@ -2877,7 +2877,7 @@ var Switch_default = /* @__PURE__ */ (0, vue.defineComponent)({
2877
2877
  });
2878
2878
  //#endregion
2879
2879
  //#region src/components/switch/SwitchGroup.vue?vue&type=script&setup=true&lang.ts
2880
- var _hoisted_1$43 = ["aria-labelledby", "data-orientation"];
2880
+ var _hoisted_1$45 = ["aria-labelledby", "data-orientation"];
2881
2881
  var _hoisted_2$26 = {
2882
2882
  key: 1,
2883
2883
  class: "switch-group__description"
@@ -2934,7 +2934,7 @@ var SwitchGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
2934
2934
  }, (0, vue.toDisplayString)(props.label), 1)) : (0, vue.createCommentVNode)("", true),
2935
2935
  (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(groupSlots.value.items()) }, [(0, vue.renderSlot)(_ctx.$slots, "default")], 2),
2936
2936
  props.description ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$26, (0, vue.toDisplayString)(props.description), 1)) : (0, vue.createCommentVNode)("", true)
2937
- ], 10, _hoisted_1$43);
2937
+ ], 10, _hoisted_1$45);
2938
2938
  };
2939
2939
  }
2940
2940
  });
@@ -12746,7 +12746,7 @@ var AlertDialogOverlay_default = /* @__PURE__ */ (0, vue.defineComponent)({
12746
12746
  });
12747
12747
  //#endregion
12748
12748
  //#region src/components/alert-dialog/AlertDialogContent.vue?vue&type=script&setup=true&lang.ts
12749
- var _hoisted_1$42 = ["data-placement"];
12749
+ var _hoisted_1$44 = ["data-placement"];
12750
12750
  //#endregion
12751
12751
  //#region src/components/alert-dialog/AlertDialogContent.vue
12752
12752
  var AlertDialogContent_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -12781,7 +12781,7 @@ var AlertDialogContent_default = /* @__PURE__ */ (0, vue.defineComponent)({
12781
12781
  }, {
12782
12782
  default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]),
12783
12783
  _: 3
12784
- }, 8, ["class", "data-placement"])], 10, _hoisted_1$42)]),
12784
+ }, 8, ["class", "data-placement"])], 10, _hoisted_1$44)]),
12785
12785
  _: 3
12786
12786
  });
12787
12787
  };
@@ -12931,7 +12931,7 @@ var AlertDialogDescription_default = /* @__PURE__ */ (0, vue.defineComponent)({
12931
12931
  });
12932
12932
  //#endregion
12933
12933
  //#region src/components/alert-dialog/AlertDialogIcon.vue?vue&type=script&setup=true&lang.ts
12934
- var _hoisted_1$41 = {
12934
+ var _hoisted_1$43 = {
12935
12935
  key: 0,
12936
12936
  "data-slot": "alert-dialog-default-icon",
12937
12937
  viewBox: "0 0 24 24",
@@ -12951,7 +12951,7 @@ var _hoisted_2$25 = {
12951
12951
  "stroke-linecap": "round",
12952
12952
  "stroke-linejoin": "round"
12953
12953
  };
12954
- var _hoisted_3$17 = {
12954
+ var _hoisted_3$16 = {
12955
12955
  key: 2,
12956
12956
  "data-slot": "alert-dialog-default-icon",
12957
12957
  viewBox: "0 0 24 24",
@@ -12961,7 +12961,7 @@ var _hoisted_3$17 = {
12961
12961
  "stroke-linecap": "round",
12962
12962
  "stroke-linejoin": "round"
12963
12963
  };
12964
- var _hoisted_4$11 = {
12964
+ var _hoisted_4$10 = {
12965
12965
  key: 3,
12966
12966
  "data-slot": "alert-dialog-default-icon",
12967
12967
  viewBox: "0 0 24 24",
@@ -12993,7 +12993,7 @@ var AlertDialogIcon_default = /* @__PURE__ */ (0, vue.defineComponent)({
12993
12993
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
12994
12994
  class: (0, vue.normalizeClass)((0, vue.unref)(composeClassName)((0, vue.unref)(styles).icon({ status: resolvedStatus() }), props.class)),
12995
12995
  "aria-hidden": "true"
12996
- }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [resolvedStatus() === "danger" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$41, [..._cache[0] || (_cache[0] = [
12996
+ }, [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [resolvedStatus() === "danger" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$43, [..._cache[0] || (_cache[0] = [
12997
12997
  (0, vue.createElementVNode)("circle", {
12998
12998
  cx: "12",
12999
12999
  cy: "12",
@@ -13005,11 +13005,11 @@ var AlertDialogIcon_default = /* @__PURE__ */ (0, vue.defineComponent)({
13005
13005
  (0, vue.createElementVNode)("path", { d: "M12 3.5 2.8 19.5a1.2 1.2 0 0 0 1 1.8h16.4a1.2 1.2 0 0 0 1-1.8L12 3.5Z" }, null, -1),
13006
13006
  (0, vue.createElementVNode)("path", { d: "M12 10v4" }, null, -1),
13007
13007
  (0, vue.createElementVNode)("path", { d: "M12 17.5h.01" }, null, -1)
13008
- ])])) : resolvedStatus() === "success" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_3$17, [..._cache[2] || (_cache[2] = [(0, vue.createElementVNode)("circle", {
13008
+ ])])) : resolvedStatus() === "success" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_3$16, [..._cache[2] || (_cache[2] = [(0, vue.createElementVNode)("circle", {
13009
13009
  cx: "12",
13010
13010
  cy: "12",
13011
13011
  r: "9"
13012
- }, null, -1), (0, vue.createElementVNode)("path", { d: "m8.5 12.5 2.5 2.5 4.5-5" }, null, -1)])])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_4$11, [..._cache[3] || (_cache[3] = [
13012
+ }, null, -1), (0, vue.createElementVNode)("path", { d: "m8.5 12.5 2.5 2.5 4.5-5" }, null, -1)])])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_4$10, [..._cache[3] || (_cache[3] = [
13013
13013
  (0, vue.createElementVNode)("circle", {
13014
13014
  cx: "12",
13015
13015
  cy: "12",
@@ -13381,7 +13381,7 @@ var Tabs_default = /* @__PURE__ */ (0, vue.defineComponent)({
13381
13381
  });
13382
13382
  //#endregion
13383
13383
  //#region src/components/tabs/TabList.vue?vue&type=script&setup=true&lang.ts
13384
- var _hoisted_1$40 = {
13384
+ var _hoisted_1$42 = {
13385
13385
  key: 0,
13386
13386
  class: "tabs__overflow-menu",
13387
13387
  role: "menu"
@@ -13643,7 +13643,7 @@ var TabList_default = /* @__PURE__ */ (0, vue.defineComponent)({
13643
13643
  "stroke-linejoin": "round"
13644
13644
  })], -1))]),
13645
13645
  _: 1
13646
- }, 8, ["aria-expanded"]), dropdownOpen.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$40, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(hiddenTabs.value, (tab) => {
13646
+ }, 8, ["aria-expanded"]), dropdownOpen.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$42, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(hiddenTabs.value, (tab) => {
13647
13647
  return (0, vue.openBlock)(), (0, vue.createBlock)(Button_default, {
13648
13648
  key: tab.value,
13649
13649
  variant: "ghost",
@@ -13994,7 +13994,7 @@ var Collapsible_default = /* @__PURE__ */ (0, vue.defineComponent)({
13994
13994
  });
13995
13995
  //#endregion
13996
13996
  //#region src/components/collapsible/CollapsibleTrigger.vue?vue&type=script&setup=true&lang.ts
13997
- var _hoisted_1$39 = ["data-state"];
13997
+ var _hoisted_1$41 = ["data-state"];
13998
13998
  //#endregion
13999
13999
  //#region src/components/collapsible/CollapsibleTrigger.vue
14000
14000
  var CollapsibleTrigger_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -14021,7 +14021,7 @@ var CollapsibleTrigger_default = /* @__PURE__ */ (0, vue.defineComponent)({
14021
14021
  "stroke-linejoin": "round",
14022
14022
  "aria-hidden": "true",
14023
14023
  focusable: "false"
14024
- }, [(0, vue.createElementVNode)("polyline", { points: "6 9 12 15 18 9" })], -1)])], 10, _hoisted_1$39)]),
14024
+ }, [(0, vue.createElementVNode)("polyline", { points: "6 9 12 15 18 9" })], -1)])], 10, _hoisted_1$41)]),
14025
14025
  _: 3
14026
14026
  }, 8, ["class"]);
14027
14027
  };
@@ -14167,9 +14167,9 @@ var Breadcrumbs_default = /* @__PURE__ */ (0, vue.defineComponent)({
14167
14167
  });
14168
14168
  //#endregion
14169
14169
  //#region src/components/breadcrumbs/BreadcrumbItem.vue?vue&type=script&setup=true&lang.ts
14170
- var _hoisted_1$38 = ["aria-current"];
14170
+ var _hoisted_1$40 = ["aria-current"];
14171
14171
  var _hoisted_2$24 = ["href"];
14172
- var _hoisted_3$16 = {
14172
+ var _hoisted_3$15 = {
14173
14173
  key: 1,
14174
14174
  xmlns: "http://www.w3.org/2000/svg",
14175
14175
  viewBox: "0 0 24 24",
@@ -14211,7 +14211,7 @@ var BreadcrumbItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
14211
14211
  key: 2,
14212
14212
  class: (0, vue.normalizeClass)((0, vue.unref)(ctx).slotFns.value.separator()),
14213
14213
  "aria-hidden": "true"
14214
- }, [SeparatorRenderer.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(SeparatorRenderer.value), { key: 0 })) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_3$16, [..._cache[0] || (_cache[0] = [(0, vue.createElementVNode)("polyline", { points: "9 6 15 12 9 18" }, null, -1)])]))], 2)) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_1$38);
14214
+ }, [SeparatorRenderer.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.resolveDynamicComponent)(SeparatorRenderer.value), { key: 0 })) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_3$15, [..._cache[0] || (_cache[0] = [(0, vue.createElementVNode)("polyline", { points: "9 6 15 12 9 18" }, null, -1)])]))], 2)) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_1$40);
14215
14215
  };
14216
14216
  }
14217
14217
  });
@@ -14404,7 +14404,7 @@ var ToolbarToggleItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
14404
14404
  });
14405
14405
  //#endregion
14406
14406
  //#region src/components/alert/Alert.vue?vue&type=script&setup=true&lang.ts
14407
- var _hoisted_1$37 = {
14407
+ var _hoisted_1$39 = {
14408
14408
  key: 0,
14409
14409
  "data-slot": "alert-default-icon",
14410
14410
  viewBox: "0 0 24 24",
@@ -14424,7 +14424,7 @@ var _hoisted_2$23 = {
14424
14424
  "stroke-linecap": "round",
14425
14425
  "stroke-linejoin": "round"
14426
14426
  };
14427
- var _hoisted_3$15 = {
14427
+ var _hoisted_3$14 = {
14428
14428
  key: 2,
14429
14429
  "data-slot": "alert-default-icon",
14430
14430
  viewBox: "0 0 24 24",
@@ -14434,7 +14434,7 @@ var _hoisted_3$15 = {
14434
14434
  "stroke-linecap": "round",
14435
14435
  "stroke-linejoin": "round"
14436
14436
  };
14437
- var _hoisted_4$10 = {
14437
+ var _hoisted_4$9 = {
14438
14438
  key: 3,
14439
14439
  "data-slot": "alert-default-icon",
14440
14440
  viewBox: "0 0 24 24",
@@ -14499,7 +14499,7 @@ var Alert_default = /* @__PURE__ */ (0, vue.defineComponent)({
14499
14499
  (0, vue.renderSlot)(_ctx.$slots, "icon", {}, () => [(0, vue.createElementVNode)("span", {
14500
14500
  class: (0, vue.normalizeClass)(styles.value.indicator()),
14501
14501
  "aria-hidden": "true"
14502
- }, [__props.severity === "default" || __props.severity === "primary" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$37, [..._cache[0] || (_cache[0] = [
14502
+ }, [__props.severity === "default" || __props.severity === "primary" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_1$39, [..._cache[0] || (_cache[0] = [
14503
14503
  (0, vue.createElementVNode)("circle", {
14504
14504
  cx: "12",
14505
14505
  cy: "12",
@@ -14511,11 +14511,11 @@ var Alert_default = /* @__PURE__ */ (0, vue.defineComponent)({
14511
14511
  cx: "12",
14512
14512
  cy: "12",
14513
14513
  r: "9"
14514
- }, null, -1), (0, vue.createElementVNode)("path", { d: "m8.5 12.5 2.5 2.5 4.5-5" }, null, -1)])])) : __props.severity === "warning" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_3$15, [..._cache[2] || (_cache[2] = [
14514
+ }, null, -1), (0, vue.createElementVNode)("path", { d: "m8.5 12.5 2.5 2.5 4.5-5" }, null, -1)])])) : __props.severity === "warning" ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_3$14, [..._cache[2] || (_cache[2] = [
14515
14515
  (0, vue.createElementVNode)("path", { d: "M12 3.5 2.8 19.5a1.2 1.2 0 0 0 1 1.8h16.4a1.2 1.2 0 0 0 1-1.8L12 3.5Z" }, null, -1),
14516
14516
  (0, vue.createElementVNode)("path", { d: "M12 10v4" }, null, -1),
14517
14517
  (0, vue.createElementVNode)("path", { d: "M12 17.5h.01" }, null, -1)
14518
- ])])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_4$10, [..._cache[3] || (_cache[3] = [
14518
+ ])])) : ((0, vue.openBlock)(), (0, vue.createElementBlock)("svg", _hoisted_4$9, [..._cache[3] || (_cache[3] = [
14519
14519
  (0, vue.createElementVNode)("circle", {
14520
14520
  cx: "12",
14521
14521
  cy: "12",
@@ -14873,7 +14873,7 @@ function useToast() {
14873
14873
  }
14874
14874
  //#endregion
14875
14875
  //#region src/components/toast/ToastViewport.vue?vue&type=script&setup=true&lang.ts
14876
- var _hoisted_1$36 = { class: "flex shrink-0 items-center gap-1 ml-auto" };
14876
+ var _hoisted_1$38 = { class: "flex shrink-0 items-center gap-1 ml-auto" };
14877
14877
  //#endregion
14878
14878
  //#region src/components/toast/ToastViewport.vue
14879
14879
  var ToastViewport_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -14943,7 +14943,7 @@ var ToastViewport_default = /* @__PURE__ */ (0, vue.defineComponent)({
14943
14943
  }, 1024), toast.description ? ((0, vue.openBlock)(), (0, vue.createBlock)(ToastDescription_default, { key: 0 }, {
14944
14944
  default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(toast.description), 1)]),
14945
14945
  _: 2
14946
- }, 1024)) : (0, vue.createCommentVNode)("", true)], 2), (0, vue.createElementVNode)("div", _hoisted_1$36, [toast.action ? ((0, vue.openBlock)(), (0, vue.createBlock)(ToastAction_default, {
14946
+ }, 1024)) : (0, vue.createCommentVNode)("", true)], 2), (0, vue.createElementVNode)("div", _hoisted_1$38, [toast.action ? ((0, vue.openBlock)(), (0, vue.createBlock)(ToastAction_default, {
14947
14947
  key: 0,
14948
14948
  "alt-text": toast.action.label,
14949
14949
  onClick: toast.action.onClick
@@ -15131,175 +15131,31 @@ var ListBoxSection_default = /* @__PURE__ */ (0, vue.defineComponent)({
15131
15131
  //#region src/components/select/Select.context.ts
15132
15132
  var { useProvide: useSelectProvide, useInject: useSelectInject, key: selectContextKey } = createContext("Select");
15133
15133
  //#endregion
15134
- //#region src/components/select/Select.vue?vue&type=script&setup=true&lang.ts
15135
- var _hoisted_1$35 = [
15136
- "data-invalid",
15137
- "data-disabled",
15138
- "data-readonly",
15139
- "data-required",
15140
- "data-has-label",
15141
- "data-has-helper"
15142
- ];
15143
- var _hoisted_2$22 = ["for"];
15144
- var _hoisted_3$14 = {
15145
- key: 0,
15146
- "aria-hidden": "true"
15147
- };
15148
- var _hoisted_4$9 = ["id"];
15149
- var _hoisted_5$7 = ["id"];
15150
- //#endregion
15151
- //#region src/components/select/Select.vue
15152
- var Select_default = /* @__PURE__ */ (0, vue.defineComponent)({
15153
- inheritAttrs: false,
15154
- __name: "Select",
15155
- props: {
15156
- variant: { default: "flat" },
15157
- size: { default: "md" },
15158
- color: { default: "default" },
15159
- labelPlacement: { default: "inside" },
15160
- fullWidth: {
15161
- type: Boolean,
15162
- default: false
15163
- },
15164
- isInvalid: {
15165
- type: Boolean,
15166
- default: false
15167
- },
15168
- isDisabled: {
15169
- type: Boolean,
15170
- default: false
15171
- },
15172
- isReadonly: {
15173
- type: Boolean,
15174
- default: false
15175
- },
15176
- isRequired: {
15177
- type: Boolean,
15178
- default: false
15179
- },
15180
- placeholder: {},
15181
- name: {},
15182
- label: {},
15183
- description: {},
15184
- errorMessage: {},
15185
- class: {},
15186
- modelValue: { default: void 0 },
15187
- defaultValue: { default: void 0 },
15188
- open: {
15189
- type: Boolean,
15190
- default: void 0
15191
- },
15192
- defaultOpen: {
15193
- type: Boolean,
15194
- default: void 0
15134
+ //#region src/utils/hasSlotComponent.ts
15135
+ /**
15136
+ * Returns true if any vnode in `nodes` has a `type` referentially equal to one
15137
+ * of `components`, recursively flattening `Fragment` (v-for / template) children.
15138
+ *
15139
+ * Dropdown form controls (Select, Autocomplete, ComboBox) use this to detect
15140
+ * whether the consumer supplied explicit compound chrome (e.g. SelectTrigger /
15141
+ * SelectContent) versus terse `*Item` children or an `items` prop. When chrome
15142
+ * is present the control passes the slot through unchanged; otherwise it renders
15143
+ * the trigger/value/content internally.
15144
+ */
15145
+ function hasSlotComponent(nodes, components) {
15146
+ if (!nodes) return false;
15147
+ for (const node of nodes) {
15148
+ if (components.includes(node.type)) return true;
15149
+ if (node.type === vue.Fragment && Array.isArray(node.children)) {
15150
+ if (hasSlotComponent(node.children, components)) return true;
15195
15151
  }
15196
- },
15197
- emits: ["update:modelValue", "update:open"],
15198
- setup(__props, { emit: __emit }) {
15199
- const props = __props;
15200
- const emit = __emit;
15201
- const attrs = (0, vue.useAttrs)();
15202
- const generatedId = (0, vue.useId)();
15203
- const triggerId = (0, vue.computed)(() => attrs.id ?? generatedId);
15204
- const hasLabel = (0, vue.computed)(() => !!props.label);
15205
- const descriptionId = (0, vue.computed)(() => `${triggerId.value}-description`);
15206
- const errorMessageId = (0, vue.computed)(() => `${triggerId.value}-error`);
15207
- const showError = (0, vue.computed)(() => props.isInvalid && !!props.errorMessage);
15208
- const showDescription = (0, vue.computed)(() => !!props.description && !showError.value);
15209
- const hasHelper = (0, vue.computed)(() => showError.value || showDescription.value);
15210
- const ariaDescribedBy = (0, vue.computed)(() => {
15211
- if (showError.value) return errorMessageId.value;
15212
- if (showDescription.value) return descriptionId.value;
15213
- });
15214
- const slotFns = (0, vue.computed)(() => (0, _auronui_styles.selectVariants)({
15215
- variant: props.variant,
15216
- size: props.size,
15217
- color: props.color,
15218
- fullWidth: props.fullWidth,
15219
- isInvalid: props.isInvalid,
15220
- isDisabled: props.isDisabled,
15221
- isReadonly: props.isReadonly,
15222
- hasLabel: hasLabel.value,
15223
- labelPlacement: props.labelPlacement
15224
- }));
15225
- const showOutsideLabel = (0, vue.computed)(() => hasLabel.value && props.labelPlacement !== "inside");
15226
- const itemRegistry = (0, vue.reactive)(/* @__PURE__ */ new Map());
15227
- const registerItem = (value, label) => {
15228
- itemRegistry.set(value, label);
15229
- };
15230
- const itemLabel = (value) => {
15231
- if (value == null) return "";
15232
- if (Array.isArray(value)) return value.map((v) => itemRegistry.get(v) ?? v).filter(Boolean).join(", ");
15233
- return itemRegistry.get(value) ?? value;
15234
- };
15235
- useSelectProvide({
15236
- isDisabled: (0, vue.toRef)(props, "isDisabled"),
15237
- isInvalid: (0, vue.toRef)(props, "isInvalid"),
15238
- isReadonly: (0, vue.toRef)(props, "isReadonly"),
15239
- isRequired: (0, vue.toRef)(props, "isRequired"),
15240
- fullWidth: (0, vue.toRef)(props, "fullWidth"),
15241
- hasLabel,
15242
- labelPlacement: (0, vue.toRef)(props, "labelPlacement"),
15243
- triggerId,
15244
- label: (0, vue.toRef)(props, "label"),
15245
- ariaDescribedBy,
15246
- slots: slotFns,
15247
- registerItem,
15248
- itemLabel
15249
- });
15250
- return (_ctx, _cache) => {
15251
- return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
15252
- class: (0, vue.normalizeClass)((0, vue.unref)(composeClassName)(slotFns.value.base(), props.class)),
15253
- "data-invalid": __props.isInvalid || void 0,
15254
- "data-disabled": __props.isDisabled || void 0,
15255
- "data-readonly": __props.isReadonly || void 0,
15256
- "data-required": __props.isRequired || void 0,
15257
- "data-has-label": hasLabel.value || void 0,
15258
- "data-has-helper": hasHelper.value || void 0
15259
- }, [showOutsideLabel.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
15260
- key: 0,
15261
- for: triggerId.value,
15262
- class: (0, vue.normalizeClass)(slotFns.value.label())
15263
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$14, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_2$22)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(slotFns.value.mainWrapper()) }, [(0, vue.createVNode)((0, vue.unref)(reka_ui.SelectRoot), {
15264
- "model-value": props.modelValue,
15265
- "default-value": props.defaultValue,
15266
- open: props.open,
15267
- "default-open": props.defaultOpen,
15268
- disabled: props.isDisabled,
15269
- required: props.isRequired,
15270
- name: props.name,
15271
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("update:modelValue", $event)),
15272
- "onUpdate:open": _cache[1] || (_cache[1] = ($event) => emit("update:open", $event))
15273
- }, {
15274
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]),
15275
- _: 3
15276
- }, 8, [
15277
- "model-value",
15278
- "default-value",
15279
- "open",
15280
- "default-open",
15281
- "disabled",
15282
- "required",
15283
- "name"
15284
- ]), hasHelper.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
15285
- key: 0,
15286
- class: (0, vue.normalizeClass)(slotFns.value.helperWrapper())
15287
- }, [showError.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
15288
- key: 0,
15289
- id: errorMessageId.value,
15290
- class: (0, vue.normalizeClass)(slotFns.value.errorMessage())
15291
- }, (0, vue.toDisplayString)(__props.errorMessage), 11, _hoisted_4$9)) : showDescription.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
15292
- key: 1,
15293
- id: descriptionId.value,
15294
- class: (0, vue.normalizeClass)(slotFns.value.description())
15295
- }, (0, vue.toDisplayString)(__props.description), 11, _hoisted_5$7)) : (0, vue.createCommentVNode)("", true)], 2)) : (0, vue.createCommentVNode)("", true)], 2)], 10, _hoisted_1$35);
15296
- };
15297
15152
  }
15298
- });
15153
+ return false;
15154
+ }
15299
15155
  //#endregion
15300
15156
  //#region src/components/select/SelectTrigger.vue?vue&type=script&setup=true&lang.ts
15301
- var _hoisted_1$34 = ["for"];
15302
- var _hoisted_2$21 = {
15157
+ var _hoisted_1$37 = ["for"];
15158
+ var _hoisted_2$22 = {
15303
15159
  key: 0,
15304
15160
  "aria-hidden": "true"
15305
15161
  };
@@ -15334,7 +15190,7 @@ var SelectTrigger_default = /* @__PURE__ */ (0, vue.defineComponent)({
15334
15190
  key: 0,
15335
15191
  for: (0, vue.unref)(ctx).triggerId.value,
15336
15192
  class: (0, vue.normalizeClass)((0, vue.unref)(ctx).slots.value.label())
15337
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(ctx).label.value), 1), (0, vue.unref)(ctx).isRequired.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$21, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_1$34)) : (0, vue.createCommentVNode)("", true),
15193
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(ctx).label.value), 1), (0, vue.unref)(ctx).isRequired.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$22, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_1$37)) : (0, vue.createCommentVNode)("", true),
15338
15194
  _ctx.$slots.startContent ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
15339
15195
  key: 1,
15340
15196
  class: (0, vue.normalizeClass)((0, vue.unref)(ctx).slots.value.startContent()),
@@ -15374,6 +15230,87 @@ var SelectTrigger_default = /* @__PURE__ */ (0, vue.defineComponent)({
15374
15230
  }
15375
15231
  });
15376
15232
  //#endregion
15233
+ //#region src/components/select/SelectOverflowChips.vue?vue&type=script&setup=true&lang.ts
15234
+ var _hoisted_1$36 = {
15235
+ ref: "container",
15236
+ style: {
15237
+ "display": "flex",
15238
+ "flex-wrap": "nowrap",
15239
+ "align-items": "center",
15240
+ "gap": "4px",
15241
+ "overflow": "hidden",
15242
+ "flex": "1",
15243
+ "min-width": "0"
15244
+ }
15245
+ };
15246
+ //#endregion
15247
+ //#region src/components/select/SelectOverflowChips.vue
15248
+ var SelectOverflowChips_default = /* @__PURE__ */ (0, vue.defineComponent)({
15249
+ __name: "SelectOverflowChips",
15250
+ props: {
15251
+ values: {},
15252
+ getLabel: { type: Function }
15253
+ },
15254
+ setup(__props) {
15255
+ const props = __props;
15256
+ const containerEl = (0, vue.useTemplateRef)("container");
15257
+ const visibleCount = (0, vue.ref)(props.values.length);
15258
+ const overflowCount = (0, vue.computed)(() => Math.max(0, props.values.length - visibleCount.value));
15259
+ let measuring = false;
15260
+ async function reflow() {
15261
+ if (measuring) return;
15262
+ measuring = true;
15263
+ try {
15264
+ const el = containerEl.value;
15265
+ if (!el) return;
15266
+ visibleCount.value = props.values.length;
15267
+ await (0, vue.nextTick)();
15268
+ const chips = [...el.querySelectorAll("[data-chip-item]")];
15269
+ if (!chips.length) return;
15270
+ const containerW = el.offsetWidth;
15271
+ if (!containerW) return;
15272
+ const BADGE_W = 76;
15273
+ let usedW = 0;
15274
+ let n = 0;
15275
+ for (let i = 0; i < chips.length; i++) {
15276
+ const gap = i > 0 ? 4 : 0;
15277
+ const chipW = chips[i].offsetWidth;
15278
+ const budget = i === chips.length - 1 ? containerW : containerW - BADGE_W;
15279
+ if (usedW + gap + chipW > budget) break;
15280
+ usedW += gap + chipW;
15281
+ n++;
15282
+ }
15283
+ visibleCount.value = Math.max(1, n);
15284
+ } finally {
15285
+ measuring = false;
15286
+ }
15287
+ }
15288
+ (0, vue.onMounted)(reflow);
15289
+ (0, _vueuse_core.useResizeObserver)(containerEl, reflow);
15290
+ (0, vue.watch)(() => props.values.join("\0"), () => reflow(), { flush: "post" });
15291
+ return (_ctx, _cache) => {
15292
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$36, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.values, (val, i) => {
15293
+ return (0, vue.openBlock)(), (0, vue.createBlock)(Chip_default, {
15294
+ key: val,
15295
+ "data-chip-item": "",
15296
+ size: "sm",
15297
+ style: (0, vue.normalizeStyle)(i >= visibleCount.value ? "display: none" : void 0)
15298
+ }, {
15299
+ default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.getLabel(val)), 1)]),
15300
+ _: 2
15301
+ }, 1032, ["style"]);
15302
+ }), 128)), overflowCount.value > 0 ? ((0, vue.openBlock)(), (0, vue.createBlock)(Chip_default, {
15303
+ key: 0,
15304
+ size: "sm",
15305
+ color: "default"
15306
+ }, {
15307
+ default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)(" +" + (0, vue.toDisplayString)(overflowCount.value) + " more ", 1)]),
15308
+ _: 1
15309
+ })) : (0, vue.createCommentVNode)("", true)], 512);
15310
+ };
15311
+ }
15312
+ });
15313
+ //#endregion
15377
15314
  //#region src/components/select/SelectValue.vue
15378
15315
  var SelectValue_default = /* @__PURE__ */ (0, vue.defineComponent)({
15379
15316
  __name: "SelectValue",
@@ -15390,7 +15327,11 @@ var SelectValue_default = /* @__PURE__ */ (0, vue.defineComponent)({
15390
15327
  placeholder: props.placeholder,
15391
15328
  "data-slot": "value"
15392
15329
  }, {
15393
- default: (0, vue.withCtx)(({ selectedLabel, modelValue }) => [selectedLabel && selectedLabel.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 0 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(selectedLabel.join(", ")), 1)], 64)) : modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== "") ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(ctx).itemLabel(Array.isArray(modelValue) ? modelValue : modelValue.toString())), 1)], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(props.placeholder), 1)], 64))]),
15330
+ default: (0, vue.withCtx)(({ selectedLabel, modelValue }) => [(0, vue.unref)(ctx).multiple.value && Array.isArray(modelValue) && modelValue.length > 0 ? ((0, vue.openBlock)(), (0, vue.createBlock)(SelectOverflowChips_default, {
15331
+ key: 0,
15332
+ values: modelValue,
15333
+ "get-label": (0, vue.unref)(ctx).itemLabel
15334
+ }, null, 8, ["values", "get-label"])) : (0, vue.unref)(ctx).multiple.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(props.placeholder), 1)], 64)) : selectedLabel && selectedLabel.length > 0 ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 2 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(selectedLabel.join(", ")), 1)], 64)) : modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== "") ? ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 3 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(ctx).itemLabel(modelValue)), 1)], 64)) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 4 }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(props.placeholder), 1)], 64))]),
15394
15335
  _: 1
15395
15336
  }, 8, ["class", "placeholder"]);
15396
15337
  };
@@ -15472,14 +15413,14 @@ var SelectItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
15472
15413
  if (props.textValue !== void 0) ctx.registerItem(props.value, props.textValue);
15473
15414
  (0, vue.onMounted)(() => {
15474
15415
  const el = textRef.value?.$el;
15475
- const label = props.textValue ?? el?.textContent?.trim() ?? props.value;
15416
+ const label = props.textValue ?? el?.textContent?.trim() ?? String(props.value);
15476
15417
  ctx.registerItem(props.value, label);
15477
15418
  });
15478
15419
  return (_ctx, _cache) => {
15479
15420
  return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.SelectItem), {
15480
15421
  value: props.value,
15481
15422
  disabled: props.isDisabled,
15482
- "text-value": props.textValue ?? props.value,
15423
+ "text-value": props.textValue ?? String(props.value),
15483
15424
  class: "list-box-item list-box-item--default",
15484
15425
  "data-slot": "list-box-item"
15485
15426
  }, {
@@ -15523,26 +15464,226 @@ var SelectItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
15523
15464
  }
15524
15465
  });
15525
15466
  //#endregion
15526
- //#region src/components/dropdown/Dropdown.context.ts
15527
- var { useProvide: useDropdownProvide, useInject: useDropdownInject, key: dropdownContextKey } = createContext("Dropdown");
15467
+ //#region src/components/select/Select.vue?vue&type=script&setup=true&lang.ts
15468
+ var _hoisted_1$35 = [
15469
+ "data-invalid",
15470
+ "data-disabled",
15471
+ "data-readonly",
15472
+ "data-required",
15473
+ "data-has-label",
15474
+ "data-has-helper"
15475
+ ];
15476
+ var _hoisted_2$21 = ["for"];
15477
+ var _hoisted_3$13 = {
15478
+ key: 0,
15479
+ "aria-hidden": "true"
15480
+ };
15481
+ var _hoisted_4$8 = ["id"];
15482
+ var _hoisted_5$6 = ["id"];
15528
15483
  //#endregion
15529
- //#region src/components/dropdown/Dropdown.vue
15530
- var Dropdown_default = /* @__PURE__ */ (0, vue.defineComponent)({
15531
- __name: "Dropdown",
15484
+ //#region src/components/select/Select.vue
15485
+ var Select_default = /* @__PURE__ */ (0, vue.defineComponent)({
15486
+ inheritAttrs: false,
15487
+ __name: "Select",
15532
15488
  props: {
15533
- isOpen: {
15489
+ variant: { default: "flat" },
15490
+ size: { default: "md" },
15491
+ color: { default: "default" },
15492
+ labelPlacement: { default: "inside" },
15493
+ fullWidth: {
15534
15494
  type: Boolean,
15535
- default: void 0
15495
+ default: false
15536
15496
  },
15537
- defaultOpen: {
15497
+ isInvalid: {
15538
15498
  type: Boolean,
15539
- default: void 0
15499
+ default: false
15540
15500
  },
15541
- modal: {
15501
+ isDisabled: {
15542
15502
  type: Boolean,
15543
- default: true
15503
+ default: false
15544
15504
  },
15545
- variant: { default: void 0 },
15505
+ isReadonly: {
15506
+ type: Boolean,
15507
+ default: false
15508
+ },
15509
+ isRequired: {
15510
+ type: Boolean,
15511
+ default: false
15512
+ },
15513
+ placeholder: {},
15514
+ name: {},
15515
+ label: {},
15516
+ description: {},
15517
+ errorMessage: {},
15518
+ class: {},
15519
+ modelValue: { default: void 0 },
15520
+ defaultValue: { default: void 0 },
15521
+ multiple: {
15522
+ type: Boolean,
15523
+ default: false
15524
+ },
15525
+ open: {
15526
+ type: Boolean,
15527
+ default: void 0
15528
+ },
15529
+ defaultOpen: {
15530
+ type: Boolean,
15531
+ default: void 0
15532
+ },
15533
+ items: { default: () => [] }
15534
+ },
15535
+ emits: ["update:modelValue", "update:open"],
15536
+ setup(__props, { emit: __emit }) {
15537
+ const props = __props;
15538
+ const emit = __emit;
15539
+ const attrs = (0, vue.useAttrs)();
15540
+ const generatedId = (0, vue.useId)();
15541
+ const triggerId = (0, vue.computed)(() => attrs.id ?? generatedId);
15542
+ const hasLabel = (0, vue.computed)(() => !!props.label);
15543
+ const slots = (0, vue.useSlots)();
15544
+ const usesCustomChrome = (0, vue.computed)(() => hasSlotComponent(slots.default?.(), [SelectTrigger_default, SelectContent_default]));
15545
+ const descriptionId = (0, vue.computed)(() => `${triggerId.value}-description`);
15546
+ const errorMessageId = (0, vue.computed)(() => `${triggerId.value}-error`);
15547
+ const showError = (0, vue.computed)(() => props.isInvalid && !!props.errorMessage);
15548
+ const showDescription = (0, vue.computed)(() => !!props.description && !showError.value);
15549
+ const hasHelper = (0, vue.computed)(() => showError.value || showDescription.value);
15550
+ const ariaDescribedBy = (0, vue.computed)(() => {
15551
+ if (showError.value) return errorMessageId.value;
15552
+ if (showDescription.value) return descriptionId.value;
15553
+ });
15554
+ const slotFns = (0, vue.computed)(() => (0, _auronui_styles.selectVariants)({
15555
+ variant: props.variant,
15556
+ size: props.size,
15557
+ color: props.color,
15558
+ fullWidth: props.fullWidth,
15559
+ isInvalid: props.isInvalid,
15560
+ isDisabled: props.isDisabled,
15561
+ isReadonly: props.isReadonly,
15562
+ hasLabel: hasLabel.value,
15563
+ labelPlacement: props.labelPlacement
15564
+ }));
15565
+ const showOutsideLabel = (0, vue.computed)(() => hasLabel.value && props.labelPlacement !== "inside");
15566
+ const itemRegistry = (0, vue.reactive)(/* @__PURE__ */ new Map());
15567
+ const registerItem = (value, label) => {
15568
+ itemRegistry.set(value, label);
15569
+ };
15570
+ const itemLabel = (value) => {
15571
+ if (value == null) return "";
15572
+ if (Array.isArray(value)) return value.map((v) => String(itemRegistry.get(v) ?? v)).filter((s) => s.length > 0).join(", ");
15573
+ return itemRegistry.get(value) ?? String(value);
15574
+ };
15575
+ function removeValue(value) {
15576
+ emit("update:modelValue", (Array.isArray(props.modelValue) ? props.modelValue : []).filter((v) => v !== value));
15577
+ }
15578
+ useSelectProvide({
15579
+ isDisabled: (0, vue.toRef)(props, "isDisabled"),
15580
+ isInvalid: (0, vue.toRef)(props, "isInvalid"),
15581
+ isReadonly: (0, vue.toRef)(props, "isReadonly"),
15582
+ isRequired: (0, vue.toRef)(props, "isRequired"),
15583
+ fullWidth: (0, vue.toRef)(props, "fullWidth"),
15584
+ hasLabel,
15585
+ labelPlacement: (0, vue.toRef)(props, "labelPlacement"),
15586
+ triggerId,
15587
+ label: (0, vue.toRef)(props, "label"),
15588
+ ariaDescribedBy,
15589
+ slots: slotFns,
15590
+ multiple: (0, vue.toRef)(props, "multiple"),
15591
+ registerItem,
15592
+ itemLabel,
15593
+ removeValue
15594
+ });
15595
+ return (_ctx, _cache) => {
15596
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
15597
+ class: (0, vue.normalizeClass)((0, vue.unref)(composeClassName)(slotFns.value.base(), props.class)),
15598
+ "data-invalid": __props.isInvalid || void 0,
15599
+ "data-disabled": __props.isDisabled || void 0,
15600
+ "data-readonly": __props.isReadonly || void 0,
15601
+ "data-required": __props.isRequired || void 0,
15602
+ "data-has-label": hasLabel.value || void 0,
15603
+ "data-has-helper": hasHelper.value || void 0
15604
+ }, [showOutsideLabel.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
15605
+ key: 0,
15606
+ for: triggerId.value,
15607
+ class: (0, vue.normalizeClass)(slotFns.value.label())
15608
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$13, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_2$21)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(slotFns.value.mainWrapper()) }, [(0, vue.createVNode)((0, vue.unref)(reka_ui.SelectRoot), {
15609
+ "model-value": props.modelValue,
15610
+ "default-value": props.defaultValue,
15611
+ multiple: props.multiple,
15612
+ open: props.open,
15613
+ "default-open": props.defaultOpen,
15614
+ disabled: props.isDisabled,
15615
+ required: props.isRequired,
15616
+ name: props.name,
15617
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("update:modelValue", $event)),
15618
+ "onUpdate:open": _cache[1] || (_cache[1] = ($event) => emit("update:open", $event))
15619
+ }, {
15620
+ default: (0, vue.withCtx)(() => [usesCustomChrome.value ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createVNode)(SelectTrigger_default, null, {
15621
+ default: (0, vue.withCtx)(() => [(0, vue.createVNode)(SelectValue_default, { placeholder: props.placeholder }, null, 8, ["placeholder"])]),
15622
+ _: 1
15623
+ }), (0, vue.createVNode)(SelectContent_default, null, {
15624
+ default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(props.items, (item) => {
15625
+ return (0, vue.openBlock)(), (0, vue.createBlock)(SelectItem_default, {
15626
+ key: item.value,
15627
+ value: item.value,
15628
+ "text-value": item.textValue ?? item.label,
15629
+ "is-disabled": item.isDisabled
15630
+ }, {
15631
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "item", { item }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item.label ?? String(item.value)), 1)])]),
15632
+ _: 2
15633
+ }, 1032, [
15634
+ "value",
15635
+ "text-value",
15636
+ "is-disabled"
15637
+ ]);
15638
+ }), 128)), (0, vue.renderSlot)(_ctx.$slots, "default")]),
15639
+ _: 3
15640
+ })], 64))]),
15641
+ _: 3
15642
+ }, 8, [
15643
+ "model-value",
15644
+ "default-value",
15645
+ "multiple",
15646
+ "open",
15647
+ "default-open",
15648
+ "disabled",
15649
+ "required",
15650
+ "name"
15651
+ ]), hasHelper.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
15652
+ key: 0,
15653
+ class: (0, vue.normalizeClass)(slotFns.value.helperWrapper())
15654
+ }, [showError.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
15655
+ key: 0,
15656
+ id: errorMessageId.value,
15657
+ class: (0, vue.normalizeClass)(slotFns.value.errorMessage())
15658
+ }, (0, vue.toDisplayString)(__props.errorMessage), 11, _hoisted_4$8)) : showDescription.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
15659
+ key: 1,
15660
+ id: descriptionId.value,
15661
+ class: (0, vue.normalizeClass)(slotFns.value.description())
15662
+ }, (0, vue.toDisplayString)(__props.description), 11, _hoisted_5$6)) : (0, vue.createCommentVNode)("", true)], 2)) : (0, vue.createCommentVNode)("", true)], 2)], 10, _hoisted_1$35);
15663
+ };
15664
+ }
15665
+ });
15666
+ //#endregion
15667
+ //#region src/components/dropdown/Dropdown.context.ts
15668
+ var { useProvide: useDropdownProvide, useInject: useDropdownInject, key: dropdownContextKey } = createContext("Dropdown");
15669
+ //#endregion
15670
+ //#region src/components/dropdown/Dropdown.vue
15671
+ var Dropdown_default = /* @__PURE__ */ (0, vue.defineComponent)({
15672
+ __name: "Dropdown",
15673
+ props: {
15674
+ isOpen: {
15675
+ type: Boolean,
15676
+ default: void 0
15677
+ },
15678
+ defaultOpen: {
15679
+ type: Boolean,
15680
+ default: void 0
15681
+ },
15682
+ modal: {
15683
+ type: Boolean,
15684
+ default: true
15685
+ },
15686
+ variant: { default: void 0 },
15546
15687
  color: { default: void 0 },
15547
15688
  size: { default: void 0 },
15548
15689
  closeOnSelect: {
@@ -15638,13 +15779,13 @@ var DropdownMenu_default = /* @__PURE__ */ (0, vue.defineComponent)({
15638
15779
  });
15639
15780
  //#endregion
15640
15781
  //#region src/components/dropdown/DropdownItem.vue?vue&type=script&setup=true&lang.ts
15641
- var _hoisted_1$33 = { class: "flex flex-1 flex-col" };
15782
+ var _hoisted_1$34 = { class: "flex flex-1 flex-col" };
15642
15783
  var _hoisted_2$20 = { "data-slot": "label" };
15643
- var _hoisted_3$13 = {
15784
+ var _hoisted_3$12 = {
15644
15785
  key: 0,
15645
15786
  "data-slot": "description"
15646
15787
  };
15647
- var _hoisted_4$8 = {
15788
+ var _hoisted_4$7 = {
15648
15789
  key: 0,
15649
15790
  "data-slot": "shortcut",
15650
15791
  class: "ml-auto text-xs text-muted font-mono"
@@ -15678,8 +15819,8 @@ var DropdownItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
15678
15819
  }, {
15679
15820
  default: (0, vue.withCtx)(() => [
15680
15821
  (0, vue.renderSlot)(_ctx.$slots, "startContent"),
15681
- (0, vue.createElementVNode)("div", _hoisted_1$33, [(0, vue.createElementVNode)("span", _hoisted_2$20, [(0, vue.renderSlot)(_ctx.$slots, "default")]), props.description ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$13, (0, vue.toDisplayString)(props.description), 1)) : (0, vue.createCommentVNode)("", true)]),
15682
- props.shortcut ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("kbd", _hoisted_4$8, (0, vue.toDisplayString)(props.shortcut), 1)) : (0, vue.createCommentVNode)("", true),
15822
+ (0, vue.createElementVNode)("div", _hoisted_1$34, [(0, vue.createElementVNode)("span", _hoisted_2$20, [(0, vue.renderSlot)(_ctx.$slots, "default")]), props.description ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$12, (0, vue.toDisplayString)(props.description), 1)) : (0, vue.createCommentVNode)("", true)]),
15823
+ props.shortcut ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("kbd", _hoisted_4$7, (0, vue.toDisplayString)(props.shortcut), 1)) : (0, vue.createCommentVNode)("", true),
15683
15824
  (0, vue.renderSlot)(_ctx.$slots, "endContent")
15684
15825
  ]),
15685
15826
  _: 3
@@ -16012,176 +16153,14 @@ var DropdownSubContent_default = /* @__PURE__ */ (0, vue.defineComponent)({
16012
16153
  //#region src/components/combo-box/ComboBox.context.ts
16013
16154
  var { useProvide: useComboBoxProvide, useInject: useComboBoxInject, key: comboBoxContextKey } = createContext("ComboBox");
16014
16155
  //#endregion
16015
- //#region src/components/combo-box/ComboBox.vue?vue&type=script&setup=true&lang.ts
16016
- var _hoisted_1$32 = ["aria-invalid"];
16017
- var _hoisted_2$19 = ["id"];
16018
- var _hoisted_3$12 = {
16019
- key: 0,
16020
- "aria-hidden": "true"
16021
- };
16022
- var _hoisted_4$7 = {
16023
- key: 1,
16024
- "data-slot": "helper-wrapper"
16025
- };
16026
- var _hoisted_5$6 = {
16027
- key: 0,
16028
- "data-slot": "error-message",
16029
- "aria-live": "polite"
16030
- };
16031
- var _hoisted_6$5 = {
16032
- key: 1,
16033
- "data-slot": "description"
16034
- };
16035
- //#endregion
16036
- //#region src/components/combo-box/ComboBox.vue
16037
- var ComboBox_default = /* @__PURE__ */ (0, vue.defineComponent)({
16038
- __name: "ComboBox",
16156
+ //#region src/components/combo-box/ComboBoxInput.vue
16157
+ var ComboBoxInput_default = /* @__PURE__ */ (0, vue.defineComponent)({
16158
+ __name: "ComboBoxInput",
16039
16159
  props: {
16040
- modelValue: { default: void 0 },
16041
- defaultValue: { default: void 0 },
16042
- open: {
16043
- type: Boolean,
16044
- default: void 0
16045
- },
16046
- defaultOpen: {
16047
- type: Boolean,
16048
- default: void 0
16049
- },
16050
- items: { default: () => [] },
16051
- label: { default: void 0 },
16052
16160
  placeholder: { default: void 0 },
16053
- description: { default: void 0 },
16054
- errorMessage: { default: void 0 },
16055
- isInvalid: {
16056
- type: Boolean,
16057
- default: false
16058
- },
16059
- isDisabled: {
16060
- type: Boolean,
16061
- default: false
16062
- },
16063
- isRequired: {
16064
- type: Boolean,
16065
- default: false
16066
- },
16067
- allowsCustomValue: {
16068
- type: Boolean,
16069
- default: false
16070
- },
16071
- fullWidth: {
16072
- type: Boolean,
16073
- default: false
16074
- },
16075
- filterFunction: {
16076
- type: Function,
16077
- default: void 0
16078
- },
16079
16161
  class: { default: void 0 }
16080
16162
  },
16081
- emits: ["update:modelValue", "update:open"],
16082
- setup(__props, { emit: __emit }) {
16083
- const props = __props;
16084
- const emit = __emit;
16085
- const labelId = (0, vue.useId)();
16086
- const slotFns = (0, vue.computed)(() => (0, _auronui_styles.comboBoxVariants)({ fullWidth: props.fullWidth }));
16087
- const effectiveFilter = (0, vue.computed)(() => {
16088
- if (props.filterFunction) return props.filterFunction;
16089
- return (itemText, searchTerm) => itemText.toLowerCase().includes(searchTerm.toLowerCase());
16090
- });
16091
- const slotItemRegistry = (0, vue.ref)(/* @__PURE__ */ new Map());
16092
- function registerItem(value, label) {
16093
- const next = new Map(slotItemRegistry.value);
16094
- next.set(value, label);
16095
- slotItemRegistry.value = next;
16096
- }
16097
- function unregisterItem(value) {
16098
- const next = new Map(slotItemRegistry.value);
16099
- next.delete(value);
16100
- slotItemRegistry.value = next;
16101
- }
16102
- function labelFor(value) {
16103
- if (!value) return "";
16104
- const item = props.items.find((i) => i.value === value);
16105
- if (item) return item.label ?? item.textValue ?? value;
16106
- return slotItemRegistry.value.get(value) ?? value;
16107
- }
16108
- function valueFor(label) {
16109
- if (!label) return "";
16110
- const item = props.items.find((i) => (i.label ?? i.textValue ?? i.value) === label);
16111
- if (item) return item.value;
16112
- for (const [value, lbl] of slotItemRegistry.value) if (lbl === label) return value;
16113
- return label;
16114
- }
16115
- const internalValue = (0, vue.ref)(labelFor(props.modelValue));
16116
- const displayValue = (0, vue.computed)(() => (val) => val);
16117
- (0, vue.watch)(() => props.modelValue, (val) => {
16118
- const next = labelFor(val);
16119
- if (internalValue.value !== next) internalValue.value = next;
16120
- });
16121
- function handleModelValueUpdate(emitted) {
16122
- internalValue.value = emitted;
16123
- emit("update:modelValue", valueFor(emitted));
16124
- }
16125
- (0, vue.watch)(slotItemRegistry, () => {
16126
- const next = labelFor(props.modelValue);
16127
- if (next !== internalValue.value && valueFor(internalValue.value) === (props.modelValue ?? "")) internalValue.value = next;
16128
- });
16129
- useComboBoxProvide({
16130
- isDisabled: (0, vue.toRef)(props, "isDisabled"),
16131
- isInvalid: (0, vue.toRef)(props, "isInvalid"),
16132
- fullWidth: (0, vue.toRef)(props, "fullWidth"),
16133
- slots: slotFns,
16134
- displayValue,
16135
- registerItem,
16136
- unregisterItem
16137
- });
16138
- return (_ctx, _cache) => {
16139
- return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
16140
- class: (0, vue.normalizeClass)((0, vue.unref)(composeClassName)(slotFns.value.base(), props.class)),
16141
- "aria-invalid": props.isInvalid || void 0,
16142
- "data-slot": "combo-box"
16143
- }, [
16144
- props.label ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
16145
- key: 0,
16146
- id: (0, vue.unref)(labelId),
16147
- "data-slot": "label"
16148
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(props.label) + " ", 1), props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$12, " *")) : (0, vue.createCommentVNode)("", true)], 8, _hoisted_2$19)) : (0, vue.createCommentVNode)("", true),
16149
- (0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxRoot), {
16150
- modelValue: internalValue.value,
16151
- "onUpdate:modelValue": [_cache[0] || (_cache[0] = ($event) => internalValue.value = $event), _cache[1] || (_cache[1] = ($event) => handleModelValueUpdate($event))],
16152
- "default-value": props.defaultValue ? labelFor(props.defaultValue) : void 0,
16153
- open: props.open,
16154
- "default-open": props.defaultOpen,
16155
- disabled: props.isDisabled,
16156
- required: props.isRequired,
16157
- "filter-function": effectiveFilter.value,
16158
- "onUpdate:open": _cache[2] || (_cache[2] = ($event) => emit("update:open", $event))
16159
- }, {
16160
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]),
16161
- _: 3
16162
- }, 8, [
16163
- "modelValue",
16164
- "default-value",
16165
- "open",
16166
- "default-open",
16167
- "disabled",
16168
- "required",
16169
- "filter-function"
16170
- ]),
16171
- props.description || props.isInvalid && props.errorMessage ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$7, [props.isInvalid && props.errorMessage ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_5$6, (0, vue.toDisplayString)(props.errorMessage), 1)) : props.description ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_6$5, (0, vue.toDisplayString)(props.description), 1)) : (0, vue.createCommentVNode)("", true)])) : (0, vue.createCommentVNode)("", true)
16172
- ], 10, _hoisted_1$32);
16173
- };
16174
- }
16175
- });
16176
- //#endregion
16177
- //#region src/components/combo-box/ComboBoxInput.vue
16178
- var ComboBoxInput_default = /* @__PURE__ */ (0, vue.defineComponent)({
16179
- __name: "ComboBoxInput",
16180
- props: {
16181
- placeholder: { default: void 0 },
16182
- class: { default: void 0 }
16183
- },
16184
- setup(__props) {
16163
+ setup(__props) {
16185
16164
  const props = __props;
16186
16165
  const ctx = useComboBoxInject();
16187
16166
  return (_ctx, _cache) => {
@@ -16422,64 +16401,51 @@ var ComboBoxItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
16422
16401
  }
16423
16402
  });
16424
16403
  //#endregion
16425
- //#region src/components/combo-box/ComboBoxEmpty.vue
16426
- var ComboBoxEmpty_default = /* @__PURE__ */ (0, vue.defineComponent)({
16427
- __name: "ComboBoxEmpty",
16428
- setup(__props) {
16429
- return (_ctx, _cache) => {
16430
- return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.ComboboxEmpty), {
16431
- class: "py-3 text-center text-sm text-default-400",
16432
- "data-slot": "empty-content"
16433
- }, {
16434
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]),
16435
- _: 3
16436
- });
16437
- };
16438
- }
16439
- });
16440
- //#endregion
16441
- //#region src/components/autocomplete/Autocomplete.context.ts
16442
- var { useProvide: useAutocompleteProvide, useInject: useAutocompleteInject, key: autocompleteContextKey } = createContext("Autocomplete");
16443
- //#endregion
16444
- //#region src/components/autocomplete/Autocomplete.vue?vue&type=script&setup=true&lang.ts
16445
- var _hoisted_1$31 = [
16446
- "data-invalid",
16447
- "data-disabled",
16448
- "data-readonly",
16449
- "data-required",
16450
- "data-has-label",
16451
- "data-has-helper"
16452
- ];
16453
- var _hoisted_2$18 = ["for"];
16404
+ //#region src/components/combo-box/ComboBox.vue?vue&type=script&setup=true&lang.ts
16405
+ var _hoisted_1$33 = ["aria-invalid"];
16406
+ var _hoisted_2$19 = ["id"];
16454
16407
  var _hoisted_3$11 = {
16455
16408
  key: 0,
16456
16409
  "aria-hidden": "true"
16457
16410
  };
16458
- var _hoisted_4$6 = ["id"];
16459
- var _hoisted_5$5 = ["id"];
16411
+ var _hoisted_4$6 = {
16412
+ key: 1,
16413
+ "data-slot": "helper-wrapper"
16414
+ };
16415
+ var _hoisted_5$5 = {
16416
+ key: 0,
16417
+ "data-slot": "error-message",
16418
+ "aria-live": "polite"
16419
+ };
16420
+ var _hoisted_6$4 = {
16421
+ key: 1,
16422
+ "data-slot": "description"
16423
+ };
16460
16424
  //#endregion
16461
- //#region src/components/autocomplete/Autocomplete.vue
16462
- var Autocomplete_default = /* @__PURE__ */ (0, vue.defineComponent)({
16463
- inheritAttrs: false,
16464
- __name: "Autocomplete",
16425
+ //#region src/components/combo-box/ComboBox.vue
16426
+ var ComboBox_default = /* @__PURE__ */ (0, vue.defineComponent)({
16427
+ __name: "ComboBox",
16465
16428
  props: {
16466
- variant: { default: "flat" },
16467
- size: { default: "md" },
16468
- color: { default: "default" },
16469
- labelPlacement: { default: "inside" },
16470
- fullWidth: {
16429
+ modelValue: { default: void 0 },
16430
+ defaultValue: { default: void 0 },
16431
+ open: {
16471
16432
  type: Boolean,
16472
- default: false
16433
+ default: void 0
16473
16434
  },
16474
- isInvalid: {
16435
+ defaultOpen: {
16475
16436
  type: Boolean,
16476
- default: false
16437
+ default: void 0
16477
16438
  },
16478
- isDisabled: {
16439
+ items: { default: () => [] },
16440
+ label: { default: void 0 },
16441
+ placeholder: { default: void 0 },
16442
+ description: { default: void 0 },
16443
+ errorMessage: { default: void 0 },
16444
+ isInvalid: {
16479
16445
  type: Boolean,
16480
16446
  default: false
16481
16447
  },
16482
- isReadonly: {
16448
+ isDisabled: {
16483
16449
  type: Boolean,
16484
16450
  default: false
16485
16451
  },
@@ -16487,45 +16453,32 @@ var Autocomplete_default = /* @__PURE__ */ (0, vue.defineComponent)({
16487
16453
  type: Boolean,
16488
16454
  default: false
16489
16455
  },
16490
- placeholder: {},
16491
- name: {},
16492
- label: {},
16493
- description: {},
16494
- errorMessage: {},
16495
- class: {},
16496
- modelValue: { default: void 0 },
16497
- defaultValue: { default: void 0 },
16498
- open: {
16456
+ allowsCustomValue: {
16499
16457
  type: Boolean,
16500
- default: void 0
16458
+ default: false
16501
16459
  },
16502
- defaultOpen: {
16460
+ fullWidth: {
16503
16461
  type: Boolean,
16504
- default: void 0
16462
+ default: false
16505
16463
  },
16506
- items: { default: () => [] },
16507
- loadItems: {
16464
+ filterFunction: {
16508
16465
  type: Function,
16509
16466
  default: void 0
16510
16467
  },
16511
- debounceMs: { default: 200 },
16512
- filterOnOpen: {
16513
- type: Boolean,
16514
- default: false
16515
- },
16516
- truncateItems: {
16517
- type: Boolean,
16518
- default: true
16519
- }
16468
+ class: { default: void 0 }
16520
16469
  },
16521
16470
  emits: ["update:modelValue", "update:open"],
16522
16471
  setup(__props, { emit: __emit }) {
16523
16472
  const props = __props;
16524
16473
  const emit = __emit;
16525
- const attrs = (0, vue.useAttrs)();
16526
- const generatedId = (0, vue.useId)();
16527
- const inputId = (0, vue.computed)(() => attrs.id ?? generatedId);
16528
- const hasLabel = (0, vue.computed)(() => !!props.label);
16474
+ const labelId = (0, vue.useId)();
16475
+ const slots = (0, vue.useSlots)();
16476
+ const usesCustomChrome = (0, vue.computed)(() => hasSlotComponent(slots.default?.(), [ComboBoxInput_default, ComboBoxContent_default]));
16477
+ const slotFns = (0, vue.computed)(() => (0, _auronui_styles.comboBoxVariants)({ fullWidth: props.fullWidth }));
16478
+ const effectiveFilter = (0, vue.computed)(() => {
16479
+ if (props.filterFunction) return props.filterFunction;
16480
+ return (itemText, searchTerm) => itemText.toLowerCase().includes(searchTerm.toLowerCase());
16481
+ });
16529
16482
  const slotItemRegistry = (0, vue.ref)(/* @__PURE__ */ new Map());
16530
16483
  function registerItem(value, label) {
16531
16484
  const next = new Map(slotItemRegistry.value);
@@ -16537,177 +16490,199 @@ var Autocomplete_default = /* @__PURE__ */ (0, vue.defineComponent)({
16537
16490
  next.delete(value);
16538
16491
  slotItemRegistry.value = next;
16539
16492
  }
16540
- const isLoading = (0, vue.ref)(false);
16541
- const internalItems = (0, vue.ref)([...props.items]);
16542
- const isOpen = (0, vue.ref)(props.defaultOpen ?? false);
16543
- const termAtOpen = (0, vue.ref)("");
16544
- const isUserTyping = (0, vue.ref)(false);
16545
- const effectiveIgnoreFilter = (0, vue.computed)(() => {
16546
- if (props.loadItems) return true;
16547
- if (!props.filterOnOpen && isOpen.value && !isUserTyping.value) return true;
16548
- return false;
16549
- });
16550
16493
  function labelFor(value) {
16551
- if (value == null || value === "") return "";
16552
- const match = internalItems.value.find((i) => i.value === value);
16553
- if (match) return match.label ?? match.textValue ?? value;
16494
+ if (!value) return "";
16495
+ const item = props.items.find((i) => i.value === value);
16496
+ if (item) return item.label ?? item.textValue ?? value;
16554
16497
  return slotItemRegistry.value.get(value) ?? value;
16555
16498
  }
16556
- function valueFor(displayed) {
16557
- if (!displayed) return "";
16558
- const match = internalItems.value.find((i) => (i.label ?? i.textValue ?? i.value) === displayed);
16559
- if (match) return match.value;
16560
- for (const [value, label] of slotItemRegistry.value) if (label === displayed) return value;
16561
- return displayed;
16499
+ function valueFor(label) {
16500
+ if (!label) return "";
16501
+ const item = props.items.find((i) => (i.label ?? i.textValue ?? i.value) === label);
16502
+ if (item) return item.value;
16503
+ for (const [value, lbl] of slotItemRegistry.value) if (lbl === label) return value;
16504
+ return label;
16562
16505
  }
16563
- const searchTerm = (0, vue.ref)(labelFor(props.modelValue));
16564
- const isFilled = (0, vue.computed)(() => !!searchTerm.value);
16565
- const hasItems = (0, vue.computed)(() => internalItems.value.length > 0);
16566
- const descriptionId = (0, vue.computed)(() => `${inputId.value}-description`);
16567
- const errorMessageId = (0, vue.computed)(() => `${inputId.value}-error`);
16568
- const showError = (0, vue.computed)(() => props.isInvalid && !!props.errorMessage);
16569
- const showDescription = (0, vue.computed)(() => !!props.description && !showError.value);
16570
- const hasHelper = (0, vue.computed)(() => showError.value || showDescription.value);
16571
- const ariaDescribedBy = (0, vue.computed)(() => {
16572
- if (showError.value) return errorMessageId.value;
16573
- if (showDescription.value) return descriptionId.value;
16574
- });
16506
+ const internalValue = (0, vue.ref)(labelFor(props.modelValue));
16507
+ const displayValue = (0, vue.computed)(() => (val) => val);
16575
16508
  (0, vue.watch)(() => props.modelValue, (val) => {
16576
16509
  const next = labelFor(val);
16577
- if (searchTerm.value !== next) searchTerm.value = next;
16578
- });
16579
- (0, vue.watch)(searchTerm, (displayed) => {
16580
- const next = valueFor(displayed);
16581
- if (next !== (props.modelValue ?? "")) emit("update:modelValue", next);
16582
- if (isOpen.value && displayed !== termAtOpen.value) isUserTyping.value = true;
16510
+ if (internalValue.value !== next) internalValue.value = next;
16583
16511
  });
16584
- function handleOpenChange(val) {
16585
- isOpen.value = val;
16586
- if (val) {
16587
- termAtOpen.value = searchTerm.value;
16588
- isUserTyping.value = false;
16589
- } else isUserTyping.value = false;
16590
- emit("update:open", val);
16591
- }
16592
- let debounceTimer;
16593
- async function runLoadItems(query) {
16594
- if (!props.loadItems) return;
16595
- isLoading.value = true;
16596
- try {
16597
- internalItems.value = await props.loadItems(query);
16598
- } finally {
16599
- isLoading.value = false;
16600
- }
16601
- }
16602
- function scheduleLoad(query) {
16603
- if (!props.loadItems) return;
16604
- clearTimeout(debounceTimer);
16605
- if (props.debounceMs === 0) runLoadItems(query);
16606
- else debounceTimer = setTimeout(() => void runLoadItems(query), props.debounceMs);
16512
+ function handleModelValueUpdate(emitted) {
16513
+ internalValue.value = emitted;
16514
+ emit("update:modelValue", valueFor(emitted));
16607
16515
  }
16608
- (0, vue.onMounted)(() => {
16609
- if (props.loadItems) runLoadItems(searchTerm.value);
16610
- });
16611
- (0, vue.watch)(searchTerm, (q) => {
16612
- if (props.loadItems) scheduleLoad(q);
16516
+ (0, vue.watch)(slotItemRegistry, () => {
16517
+ const next = labelFor(props.modelValue);
16518
+ if (next !== internalValue.value && valueFor(internalValue.value) === (props.modelValue ?? "")) internalValue.value = next;
16613
16519
  });
16614
- (0, vue.watch)(() => props.items, (newItems) => {
16615
- if (!props.loadItems) internalItems.value = [...newItems];
16616
- });
16617
- (0, vue.watch)(internalItems, () => {
16618
- const next = labelFor(props.modelValue);
16619
- if (next && searchTerm.value !== next && valueFor(searchTerm.value) === (props.modelValue ?? "")) searchTerm.value = next;
16620
- });
16621
- (0, vue.watch)(slotItemRegistry, () => {
16622
- const next = labelFor(props.modelValue);
16623
- if (next && searchTerm.value !== next && valueFor(searchTerm.value) === (props.modelValue ?? "")) searchTerm.value = next;
16624
- });
16625
- const slotFns = (0, vue.computed)(() => (0, _auronui_styles.autocompleteVariants)({
16626
- variant: props.variant,
16627
- size: props.size,
16628
- color: props.color,
16629
- fullWidth: props.fullWidth,
16630
- isInvalid: props.isInvalid,
16631
- isDisabled: props.isDisabled,
16632
- isReadonly: props.isReadonly,
16633
- hasLabel: hasLabel.value,
16634
- labelPlacement: props.labelPlacement
16635
- }));
16636
- const showOutsideLabel = (0, vue.computed)(() => hasLabel.value && props.labelPlacement !== "inside");
16637
- useAutocompleteProvide({
16520
+ useComboBoxProvide({
16638
16521
  isDisabled: (0, vue.toRef)(props, "isDisabled"),
16639
16522
  isInvalid: (0, vue.toRef)(props, "isInvalid"),
16640
- isReadonly: (0, vue.toRef)(props, "isReadonly"),
16641
- isRequired: (0, vue.toRef)(props, "isRequired"),
16642
- isLoading,
16643
- isFilled,
16644
16523
  fullWidth: (0, vue.toRef)(props, "fullWidth"),
16645
- hasLabel,
16646
- labelPlacement: (0, vue.toRef)(props, "labelPlacement"),
16647
- inputId,
16648
- label: (0, vue.toRef)(props, "label"),
16649
- ariaDescribedBy,
16650
- truncateItems: (0, vue.toRef)(props, "truncateItems"),
16651
- hasItems,
16652
16524
  slots: slotFns,
16525
+ displayValue,
16653
16526
  registerItem,
16654
16527
  unregisterItem
16655
16528
  });
16656
16529
  return (_ctx, _cache) => {
16657
16530
  return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
16658
16531
  class: (0, vue.normalizeClass)((0, vue.unref)(composeClassName)(slotFns.value.base(), props.class)),
16659
- "data-invalid": __props.isInvalid || void 0,
16660
- "data-disabled": __props.isDisabled || void 0,
16661
- "data-readonly": __props.isReadonly || void 0,
16662
- "data-required": __props.isRequired || void 0,
16663
- "data-has-label": hasLabel.value || void 0,
16664
- "data-has-helper": hasHelper.value || void 0
16665
- }, [showOutsideLabel.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
16666
- key: 0,
16667
- for: inputId.value,
16668
- class: (0, vue.normalizeClass)(slotFns.value.label())
16669
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$11, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_2$18)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(slotFns.value.mainWrapper()) }, [(0, vue.createVNode)((0, vue.unref)(reka_ui.AutocompleteRoot), {
16670
- "model-value": searchTerm.value,
16671
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchTerm.value = $event),
16672
- open: props.open,
16673
- "default-open": props.defaultOpen,
16674
- disabled: props.isDisabled,
16675
- required: props.isRequired,
16676
- "ignore-filter": effectiveIgnoreFilter.value,
16677
- "open-on-focus": true,
16678
- "onUpdate:open": handleOpenChange
16532
+ "aria-invalid": props.isInvalid || void 0,
16533
+ "data-slot": "combo-box"
16534
+ }, [
16535
+ props.label ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
16536
+ key: 0,
16537
+ id: (0, vue.unref)(labelId),
16538
+ "data-slot": "label"
16539
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(props.label) + " ", 1), props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$11, " *")) : (0, vue.createCommentVNode)("", true)], 8, _hoisted_2$19)) : (0, vue.createCommentVNode)("", true),
16540
+ (0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxRoot), {
16541
+ modelValue: internalValue.value,
16542
+ "onUpdate:modelValue": [_cache[0] || (_cache[0] = ($event) => internalValue.value = $event), _cache[1] || (_cache[1] = ($event) => handleModelValueUpdate($event))],
16543
+ "default-value": props.defaultValue ? labelFor(props.defaultValue) : void 0,
16544
+ open: props.open,
16545
+ "default-open": props.defaultOpen,
16546
+ disabled: props.isDisabled,
16547
+ required: props.isRequired,
16548
+ "filter-function": effectiveFilter.value,
16549
+ "onUpdate:open": _cache[2] || (_cache[2] = ($event) => emit("update:open", $event))
16550
+ }, {
16551
+ default: (0, vue.withCtx)(() => [usesCustomChrome.value ? (0, vue.renderSlot)(_ctx.$slots, "default", { key: 0 }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createVNode)(ComboBoxInput_default, { placeholder: props.placeholder }, null, 8, ["placeholder"]), (0, vue.createVNode)(ComboBoxContent_default, null, {
16552
+ default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(props.items, (item) => {
16553
+ return (0, vue.openBlock)(), (0, vue.createBlock)(ComboBoxItem_default, {
16554
+ key: item.value,
16555
+ value: item.value,
16556
+ "is-disabled": item.isDisabled
16557
+ }, {
16558
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "item", { item }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item.label ?? item.textValue ?? item.value), 1)])]),
16559
+ _: 2
16560
+ }, 1032, ["value", "is-disabled"]);
16561
+ }), 128))]),
16562
+ _: 3
16563
+ })], 64))]),
16564
+ _: 3
16565
+ }, 8, [
16566
+ "modelValue",
16567
+ "default-value",
16568
+ "open",
16569
+ "default-open",
16570
+ "disabled",
16571
+ "required",
16572
+ "filter-function"
16573
+ ]),
16574
+ props.description || props.isInvalid && props.errorMessage ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$6, [props.isInvalid && props.errorMessage ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_5$5, (0, vue.toDisplayString)(props.errorMessage), 1)) : props.description ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_6$4, (0, vue.toDisplayString)(props.description), 1)) : (0, vue.createCommentVNode)("", true)])) : (0, vue.createCommentVNode)("", true)
16575
+ ], 10, _hoisted_1$33);
16576
+ };
16577
+ }
16578
+ });
16579
+ //#endregion
16580
+ //#region src/components/combo-box/ComboBoxEmpty.vue
16581
+ var ComboBoxEmpty_default = /* @__PURE__ */ (0, vue.defineComponent)({
16582
+ __name: "ComboBoxEmpty",
16583
+ setup(__props) {
16584
+ return (_ctx, _cache) => {
16585
+ return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.ComboboxEmpty), {
16586
+ class: "py-3 text-center text-sm text-default-400",
16587
+ "data-slot": "empty-content"
16679
16588
  }, {
16680
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", {
16681
- isLoading: isLoading.value,
16682
- items: internalItems.value
16683
- })]),
16589
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]),
16684
16590
  _: 3
16685
- }, 8, [
16686
- "model-value",
16687
- "open",
16688
- "default-open",
16689
- "disabled",
16690
- "required",
16691
- "ignore-filter"
16692
- ]), hasHelper.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
16693
- key: 0,
16694
- class: (0, vue.normalizeClass)(slotFns.value.helperWrapper())
16695
- }, [showError.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
16591
+ });
16592
+ };
16593
+ }
16594
+ });
16595
+ //#endregion
16596
+ //#region src/components/autocomplete/Autocomplete.context.ts
16597
+ var { useProvide: useAutocompleteProvide, useInject: useAutocompleteInject, key: autocompleteContextKey } = createContext("Autocomplete");
16598
+ //#endregion
16599
+ //#region src/components/autocomplete/AutocompleteOverflowChips.vue?vue&type=script&setup=true&lang.ts
16600
+ var _hoisted_1$32 = {
16601
+ ref: "container",
16602
+ style: {
16603
+ "display": "flex",
16604
+ "flex-wrap": "nowrap",
16605
+ "align-items": "center",
16606
+ "gap": "4px",
16607
+ "overflow": "hidden",
16608
+ "flex": "1",
16609
+ "min-width": "0"
16610
+ }
16611
+ };
16612
+ //#endregion
16613
+ //#region src/components/autocomplete/AutocompleteOverflowChips.vue
16614
+ var AutocompleteOverflowChips_default = /* @__PURE__ */ (0, vue.defineComponent)({
16615
+ __name: "AutocompleteOverflowChips",
16616
+ props: {
16617
+ values: {},
16618
+ getLabel: { type: Function },
16619
+ removeValue: { type: Function }
16620
+ },
16621
+ setup(__props) {
16622
+ const props = __props;
16623
+ const containerEl = (0, vue.useTemplateRef)("container");
16624
+ const visibleCount = (0, vue.ref)(props.values.length);
16625
+ const overflowCount = (0, vue.computed)(() => Math.max(0, props.values.length - visibleCount.value));
16626
+ let measuring = false;
16627
+ async function reflow() {
16628
+ if (measuring) return;
16629
+ measuring = true;
16630
+ try {
16631
+ const el = containerEl.value;
16632
+ if (!el) return;
16633
+ visibleCount.value = props.values.length;
16634
+ await (0, vue.nextTick)();
16635
+ const chips = [...el.querySelectorAll("[data-chip-item]")];
16636
+ if (!chips.length) return;
16637
+ const containerW = el.offsetWidth;
16638
+ if (!containerW) return;
16639
+ const BADGE_W = 76;
16640
+ let usedW = 0;
16641
+ let n = 0;
16642
+ for (let i = 0; i < chips.length; i++) {
16643
+ const gap = i > 0 ? 4 : 0;
16644
+ const chipW = chips[i].offsetWidth;
16645
+ const budget = i === chips.length - 1 ? containerW : containerW - BADGE_W;
16646
+ if (usedW + gap + chipW > budget) break;
16647
+ usedW += gap + chipW;
16648
+ n++;
16649
+ }
16650
+ visibleCount.value = Math.max(1, n);
16651
+ } finally {
16652
+ measuring = false;
16653
+ }
16654
+ }
16655
+ (0, vue.onMounted)(reflow);
16656
+ (0, _vueuse_core.useResizeObserver)(containerEl, reflow);
16657
+ (0, vue.watch)(() => props.values.join("\0"), () => reflow(), { flush: "post" });
16658
+ return (_ctx, _cache) => {
16659
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_1$32, [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(__props.values, (val, i) => {
16660
+ return (0, vue.openBlock)(), (0, vue.createBlock)(Chip_default, {
16661
+ key: val,
16662
+ "data-chip-item": "",
16663
+ size: "sm",
16664
+ "is-closable": "",
16665
+ style: (0, vue.normalizeStyle)(i >= visibleCount.value ? "display: none" : void 0),
16666
+ onClose: (0, vue.withModifiers)(($event) => __props.removeValue(val), ["stop"])
16667
+ }, {
16668
+ default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.getLabel(val)), 1)]),
16669
+ _: 2
16670
+ }, 1032, ["style", "onClose"]);
16671
+ }), 128)), overflowCount.value > 0 ? ((0, vue.openBlock)(), (0, vue.createBlock)(Chip_default, {
16696
16672
  key: 0,
16697
- id: errorMessageId.value,
16698
- class: (0, vue.normalizeClass)(slotFns.value.errorMessage())
16699
- }, (0, vue.toDisplayString)(__props.errorMessage), 11, _hoisted_4$6)) : showDescription.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
16700
- key: 1,
16701
- id: descriptionId.value,
16702
- class: (0, vue.normalizeClass)(slotFns.value.description())
16703
- }, (0, vue.toDisplayString)(__props.description), 11, _hoisted_5$5)) : (0, vue.createCommentVNode)("", true)], 2)) : (0, vue.createCommentVNode)("", true)], 2)], 10, _hoisted_1$31);
16673
+ size: "sm",
16674
+ color: "default"
16675
+ }, {
16676
+ default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)(" +" + (0, vue.toDisplayString)(overflowCount.value) + " more ", 1)]),
16677
+ _: 1
16678
+ })) : (0, vue.createCommentVNode)("", true)], 512);
16704
16679
  };
16705
16680
  }
16706
16681
  });
16707
16682
  //#endregion
16708
16683
  //#region src/components/autocomplete/AutocompleteInput.vue?vue&type=script&setup=true&lang.ts
16709
- var _hoisted_1$30 = ["for"];
16710
- var _hoisted_2$17 = {
16684
+ var _hoisted_1$31 = ["for"];
16685
+ var _hoisted_2$18 = {
16711
16686
  key: 0,
16712
16687
  "aria-hidden": "true"
16713
16688
  };
@@ -16724,6 +16699,8 @@ var AutocompleteInput_default = /* @__PURE__ */ (0, vue.defineComponent)({
16724
16699
  const ctx = useAutocompleteInject();
16725
16700
  const { focused: isFocused } = (0, _vueuse_core.useFocusWithin)((0, vue.useTemplateRef)("anchor"));
16726
16701
  const showInsideLabel = (0, vue.computed)(() => ctx.hasLabel.value && ctx.labelPlacement.value === "inside");
16702
+ const effectivePlaceholder = (0, vue.computed)(() => ctx.multiple.value && ctx.selectedValues.value.length > 0 ? void 0 : props.placeholder);
16703
+ const getLabel = (v) => ctx.selectedLabels.value.find((l) => l.value === v)?.label ?? v;
16727
16704
  return (_ctx, _cache) => {
16728
16705
  return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.AutocompleteAnchor), {
16729
16706
  ref: "anchor",
@@ -16733,6 +16710,7 @@ var AutocompleteInput_default = /* @__PURE__ */ (0, vue.defineComponent)({
16733
16710
  "data-invalid": (0, vue.unref)(ctx).isInvalid.value || void 0,
16734
16711
  "data-disabled": (0, vue.unref)(ctx).isDisabled.value || void 0,
16735
16712
  "data-readonly": (0, vue.unref)(ctx).isReadonly.value || void 0,
16713
+ "data-multiple-overflow": (0, vue.unref)(ctx).multiple.value ? (0, vue.unref)(ctx).multipleOverflow.value : void 0,
16736
16714
  "data-slot": "trigger"
16737
16715
  }, {
16738
16716
  default: (0, vue.withCtx)(() => [
@@ -16740,21 +16718,44 @@ var AutocompleteInput_default = /* @__PURE__ */ (0, vue.defineComponent)({
16740
16718
  key: 0,
16741
16719
  for: (0, vue.unref)(ctx).inputId.value,
16742
16720
  class: (0, vue.normalizeClass)((0, vue.unref)(ctx).slots.value.label())
16743
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(ctx).label.value), 1), (0, vue.unref)(ctx).isRequired.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$17, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_1$30)) : (0, vue.createCommentVNode)("", true),
16721
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)((0, vue.unref)(ctx).label.value), 1), (0, vue.unref)(ctx).isRequired.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$18, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_1$31)) : (0, vue.createCommentVNode)("", true),
16744
16722
  _ctx.$slots.startContent ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
16745
16723
  key: 1,
16746
16724
  class: (0, vue.normalizeClass)((0, vue.unref)(ctx).slots.value.startContent()),
16747
16725
  "data-slot": "start-content"
16748
16726
  }, [(0, vue.renderSlot)(_ctx.$slots, "startContent")], 2)) : (0, vue.createCommentVNode)("", true),
16727
+ (0, vue.unref)(ctx).multiple.value && (0, vue.unref)(ctx).multipleOverflow.value === "collapse" && (0, vue.unref)(ctx).selectedValues.value.length > 0 ? ((0, vue.openBlock)(), (0, vue.createBlock)(AutocompleteOverflowChips_default, {
16728
+ key: 2,
16729
+ values: (0, vue.unref)(ctx).selectedValues.value,
16730
+ "get-label": getLabel,
16731
+ "remove-value": (0, vue.unref)(ctx).removeValue
16732
+ }, null, 8, ["values", "remove-value"])) : (0, vue.unref)(ctx).multiple.value && (0, vue.unref)(ctx).multipleOverflow.value === "wrap" ? ((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, { key: 3 }, (0, vue.renderList)((0, vue.unref)(ctx).selectedLabels.value, (item) => {
16733
+ return (0, vue.openBlock)(), (0, vue.createBlock)(Chip_default, {
16734
+ key: item.value,
16735
+ size: "sm",
16736
+ "is-closable": "",
16737
+ "close-aria-label": `Remove ${item.label}`,
16738
+ "data-slot": "selected-chip",
16739
+ onClose: (0, vue.withModifiers)(($event) => (0, vue.unref)(ctx).removeValue(item.value), ["stop"])
16740
+ }, {
16741
+ default: (0, vue.withCtx)(() => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item.label), 1)]),
16742
+ _: 2
16743
+ }, 1032, ["close-aria-label", "onClose"]);
16744
+ }), 128)) : (0, vue.createCommentVNode)("", true),
16749
16745
  (0, vue.createVNode)((0, vue.unref)(reka_ui.AutocompleteInput), {
16750
16746
  id: (0, vue.unref)(ctx).inputId.value,
16751
- placeholder: props.placeholder,
16747
+ placeholder: effectivePlaceholder.value,
16752
16748
  disabled: (0, vue.unref)(ctx).isDisabled.value,
16753
16749
  readonly: (0, vue.unref)(ctx).isReadonly.value,
16754
16750
  required: (0, vue.unref)(ctx).isRequired.value,
16755
16751
  "aria-invalid": (0, vue.unref)(ctx).isInvalid.value || void 0,
16756
16752
  "aria-describedby": (0, vue.unref)(ctx).ariaDescribedBy.value,
16757
16753
  class: (0, vue.normalizeClass)((0, vue.unref)(ctx).slots.value.input()),
16754
+ style: (0, vue.normalizeStyle)((0, vue.unref)(ctx).multiple.value && (0, vue.unref)(ctx).multipleOverflow.value === "collapse" && (0, vue.unref)(ctx).selectedValues.value.length > 0 ? {
16755
+ flex: "0 0 auto",
16756
+ minWidth: "80px",
16757
+ width: "auto"
16758
+ } : void 0),
16758
16759
  "data-slot": "input",
16759
16760
  autocomplete: "off"
16760
16761
  }, null, 8, [
@@ -16765,15 +16766,17 @@ var AutocompleteInput_default = /* @__PURE__ */ (0, vue.defineComponent)({
16765
16766
  "required",
16766
16767
  "aria-invalid",
16767
16768
  "aria-describedby",
16768
- "class"
16769
+ "class",
16770
+ "style"
16769
16771
  ]),
16770
16772
  (0, vue.createVNode)((0, vue.unref)(reka_ui.AutocompleteCancel), {
16771
16773
  class: (0, vue.normalizeClass)((0, vue.unref)(ctx).slots.value.clearButton()),
16772
16774
  "data-empty": !(0, vue.unref)(ctx).isFilled.value || (0, vue.unref)(ctx).isReadonly.value || (0, vue.unref)(ctx).isDisabled.value ? "true" : void 0,
16773
16775
  "data-slot": "clear-button",
16774
- "aria-label": "Clear"
16776
+ "aria-label": "Clear",
16777
+ onClick: _cache[0] || (_cache[0] = ($event) => (0, vue.unref)(ctx).multiple.value ? (0, vue.unref)(ctx).clearAll() : void 0)
16775
16778
  }, {
16776
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "clearIcon", {}, () => [_cache[0] || (_cache[0] = (0, vue.createElementVNode)("svg", {
16779
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "clearIcon", {}, () => [_cache[1] || (_cache[1] = (0, vue.createElementVNode)("svg", {
16777
16780
  xmlns: "http://www.w3.org/2000/svg",
16778
16781
  width: "10",
16779
16782
  height: "10",
@@ -16799,19 +16802,19 @@ var AutocompleteInput_default = /* @__PURE__ */ (0, vue.defineComponent)({
16799
16802
  _: 3
16800
16803
  }, 8, ["class", "data-empty"]),
16801
16804
  (0, vue.unref)(ctx).isLoading.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", {
16802
- key: 2,
16805
+ key: 4,
16803
16806
  class: (0, vue.normalizeClass)((0, vue.unref)(ctx).slots.value.indicator()),
16804
16807
  "data-slot": "autocomplete-loading-indicator",
16805
16808
  role: "status",
16806
16809
  "aria-live": "polite",
16807
16810
  "aria-label": "Loading suggestions"
16808
16811
  }, [(0, vue.createVNode)(Spinner_default, { size: "sm" })], 2)) : ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.AutocompleteTrigger), {
16809
- key: 3,
16812
+ key: 5,
16810
16813
  class: (0, vue.normalizeClass)((0, vue.unref)(ctx).slots.value.indicator()),
16811
16814
  "data-slot": "autocomplete-default-indicator",
16812
16815
  "aria-label": "Toggle suggestions"
16813
16816
  }, {
16814
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "triggerIcon", {}, () => [_cache[1] || (_cache[1] = (0, vue.createElementVNode)("svg", {
16817
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "triggerIcon", {}, () => [_cache[2] || (_cache[2] = (0, vue.createElementVNode)("svg", {
16815
16818
  xmlns: "http://www.w3.org/2000/svg",
16816
16819
  width: "16",
16817
16820
  height: "16",
@@ -16833,14 +16836,15 @@ var AutocompleteInput_default = /* @__PURE__ */ (0, vue.defineComponent)({
16833
16836
  "data-focused",
16834
16837
  "data-invalid",
16835
16838
  "data-disabled",
16836
- "data-readonly"
16839
+ "data-readonly",
16840
+ "data-multiple-overflow"
16837
16841
  ]);
16838
16842
  };
16839
16843
  }
16840
16844
  });
16841
16845
  //#endregion
16842
16846
  //#region src/components/autocomplete/AutocompleteContent.vue?vue&type=script&setup=true&lang.ts
16843
- var _hoisted_1$29 = [
16847
+ var _hoisted_1$30 = [
16844
16848
  "inert",
16845
16849
  "aria-disabled",
16846
16850
  "data-disabled"
@@ -16940,7 +16944,7 @@ var AutocompleteContent_default = /* @__PURE__ */ (0, vue.defineComponent)({
16940
16944
  _: 3
16941
16945
  })) : (0, vue.createCommentVNode)("", true)]),
16942
16946
  _: 3
16943
- })], 10, _hoisted_1$29)]),
16947
+ })], 10, _hoisted_1$30)]),
16944
16948
  _: 3
16945
16949
  }, 8, [
16946
16950
  "data-loading",
@@ -16958,10 +16962,15 @@ var AutocompleteContent_default = /* @__PURE__ */ (0, vue.defineComponent)({
16958
16962
  });
16959
16963
  //#endregion
16960
16964
  //#region src/components/autocomplete/AutocompleteItem.vue?vue&type=script&setup=true&lang.ts
16961
- var _hoisted_1$28 = {
16965
+ var _hoisted_1$29 = {
16962
16966
  class: "autocomplete-item__text",
16963
16967
  "data-slot": "item-text"
16964
16968
  };
16969
+ var _hoisted_2$17 = {
16970
+ key: 1,
16971
+ class: "list-box-item__indicator",
16972
+ "data-slot": "list-box-item-indicator"
16973
+ };
16965
16974
  //#endregion
16966
16975
  //#region src/components/autocomplete/AutocompleteItem.vue
16967
16976
  var AutocompleteItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
@@ -16990,25 +16999,35 @@ var AutocompleteItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
16990
16999
  if (!vnodes) return props.value;
16991
17000
  return extractText(vnodes).trim() || props.value;
16992
17001
  });
17002
+ const isChecked = (0, vue.computed)(() => ctx.multiple.value && ctx.isSelected(props.value));
16993
17003
  (0, vue.onMounted)(() => {
16994
17004
  ctx.registerItem(props.value, displayText.value);
16995
17005
  });
16996
17006
  (0, vue.onUnmounted)(() => {
16997
17007
  ctx.unregisterItem(props.value);
16998
17008
  });
17009
+ function handleSelect(event) {
17010
+ if (ctx.multiple.value) {
17011
+ event.preventDefault();
17012
+ ctx.onMultipleSelect(props.value);
17013
+ }
17014
+ }
16999
17015
  return (_ctx, _cache) => {
17000
17016
  return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.AutocompleteItem), {
17001
17017
  value: displayText.value,
17002
17018
  "text-value": displayText.value,
17003
17019
  disabled: props.isDisabled,
17004
17020
  "data-item-value": props.value,
17021
+ "data-selected": isChecked.value || void 0,
17005
17022
  class: "list-box-item list-box-item--default",
17006
- "data-slot": "list-box-item"
17023
+ "data-slot": "list-box-item",
17024
+ onSelect: handleSelect
17007
17025
  }, {
17008
17026
  default: (0, vue.withCtx)(() => [
17009
17027
  (0, vue.renderSlot)(_ctx.$slots, "startContent"),
17010
- (0, vue.createElementVNode)("span", _hoisted_1$28, [(0, vue.renderSlot)(_ctx.$slots, "default")]),
17011
- (0, vue.createVNode)((0, vue.unref)(reka_ui.ComboboxItemIndicator), {
17028
+ (0, vue.createElementVNode)("span", _hoisted_1$29, [(0, vue.renderSlot)(_ctx.$slots, "default")]),
17029
+ !(0, vue.unref)(ctx).multiple.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.ComboboxItemIndicator), {
17030
+ key: 0,
17012
17031
  class: "list-box-item__indicator",
17013
17032
  "data-slot": "list-box-item-indicator"
17014
17033
  }, {
@@ -17026,7 +17045,19 @@ var AutocompleteItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
17026
17045
  "aria-hidden": "true"
17027
17046
  }, [(0, vue.createElementVNode)("polyline", { points: "20 6 9 17 4 12" })], -1))])]),
17028
17047
  _: 3
17029
- }),
17048
+ })) : isChecked.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_2$17, [(0, vue.renderSlot)(_ctx.$slots, "selectedIcon", {}, () => [_cache[1] || (_cache[1] = (0, vue.createElementVNode)("svg", {
17049
+ xmlns: "http://www.w3.org/2000/svg",
17050
+ width: "12",
17051
+ height: "12",
17052
+ viewBox: "0 0 24 24",
17053
+ fill: "none",
17054
+ stroke: "currentColor",
17055
+ "stroke-width": "3",
17056
+ "stroke-linecap": "round",
17057
+ "stroke-linejoin": "round",
17058
+ "data-slot": "list-box-item-indicator--checkmark",
17059
+ "aria-hidden": "true"
17060
+ }, [(0, vue.createElementVNode)("polyline", { points: "20 6 9 17 4 12" })], -1))])])) : (0, vue.createCommentVNode)("", true),
17030
17061
  (0, vue.renderSlot)(_ctx.$slots, "endContent")
17031
17062
  ]),
17032
17063
  _: 3
@@ -17034,85 +17065,43 @@ var AutocompleteItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
17034
17065
  "value",
17035
17066
  "text-value",
17036
17067
  "disabled",
17037
- "data-item-value"
17038
- ]);
17039
- };
17040
- }
17041
- });
17042
- //#endregion
17043
- //#region src/components/tag-group/TagGroup.context.ts
17044
- var { useProvide: useTagGroupProvide, useInject: useTagGroupInject, key: tagGroupContextKey } = createContext("TagGroup");
17045
- //#endregion
17046
- //#region src/components/tag-group/TagGroupInput.vue
17047
- var TagGroupInput_default = /* @__PURE__ */ (0, vue.defineComponent)({
17048
- __name: "TagGroupInput",
17049
- props: {
17050
- placeholder: { default: void 0 },
17051
- class: { default: void 0 }
17052
- },
17053
- setup(__props) {
17054
- const props = __props;
17055
- const ctx = useTagGroupInject({
17056
- variant: (0, vue.computed)(() => "default"),
17057
- size: (0, vue.computed)(() => "md"),
17058
- isDisabled: (0, vue.computed)(() => false),
17059
- readOnly: (0, vue.computed)(() => false)
17060
- });
17061
- const isDisabled = (0, vue.computed)(() => ctx.isDisabled.value);
17062
- return (_ctx, _cache) => {
17063
- return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.TagsInputInput), {
17064
- placeholder: __props.placeholder,
17065
- disabled: isDisabled.value || void 0,
17066
- class: (0, vue.normalizeClass)(props.class),
17067
- "data-slot": "input"
17068
- }, null, 8, [
17069
- "placeholder",
17070
- "disabled",
17071
- "class"
17068
+ "data-item-value",
17069
+ "data-selected"
17072
17070
  ]);
17073
17071
  };
17074
17072
  }
17075
17073
  });
17076
17074
  //#endregion
17077
- //#region src/components/tag-group/TagGroup.vue?vue&type=script&setup=true&lang.ts
17078
- var _hoisted_1$27 = [
17075
+ //#region src/components/autocomplete/Autocomplete.vue?vue&type=script&setup=true&lang.ts
17076
+ var _hoisted_1$28 = [
17079
17077
  "data-invalid",
17080
- "data-required",
17081
17078
  "data-disabled",
17082
- "data-readonly"
17079
+ "data-readonly",
17080
+ "data-required",
17081
+ "data-has-label",
17082
+ "data-has-helper"
17083
17083
  ];
17084
- var _hoisted_2$16 = ["id"];
17084
+ var _hoisted_2$16 = ["for"];
17085
17085
  var _hoisted_3$10 = {
17086
17086
  key: 0,
17087
17087
  "aria-hidden": "true"
17088
17088
  };
17089
- var _hoisted_4$5 = {
17090
- key: 1,
17091
- class: "flex flex-col gap-0.5 px-1",
17092
- "data-slot": "helper-wrapper"
17093
- };
17094
- var _hoisted_5$4 = {
17095
- key: 0,
17096
- class: "text-sm text-danger",
17097
- "data-slot": "error-message",
17098
- "aria-live": "polite"
17099
- };
17100
- var _hoisted_6$4 = {
17101
- key: 1,
17102
- class: "text-sm text-default-400",
17103
- "data-slot": "description"
17104
- };
17089
+ var _hoisted_4$5 = ["id"];
17090
+ var _hoisted_5$4 = ["id"];
17105
17091
  //#endregion
17106
- //#region src/components/tag-group/TagGroup.vue
17107
- var TagGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
17108
- __name: "TagGroup",
17092
+ //#region src/components/autocomplete/Autocomplete.vue
17093
+ var Autocomplete_default = /* @__PURE__ */ (0, vue.defineComponent)({
17094
+ inheritAttrs: false,
17095
+ __name: "Autocomplete",
17109
17096
  props: {
17110
- modelValue: { default: void 0 },
17111
- defaultValue: { default: () => [] },
17112
- label: { default: void 0 },
17113
- placeholder: { default: "Add a tag" },
17114
- description: { default: void 0 },
17115
- errorMessage: { default: void 0 },
17097
+ variant: { default: "flat" },
17098
+ size: { default: "md" },
17099
+ color: { default: "default" },
17100
+ labelPlacement: { default: "inside" },
17101
+ fullWidth: {
17102
+ type: Boolean,
17103
+ default: false
17104
+ },
17116
17105
  isInvalid: {
17117
17106
  type: Boolean,
17118
17107
  default: false
@@ -17121,7 +17110,7 @@ var TagGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
17121
17110
  type: Boolean,
17122
17111
  default: false
17123
17112
  },
17124
- readOnly: {
17113
+ isReadonly: {
17125
17114
  type: Boolean,
17126
17115
  default: false
17127
17116
  },
@@ -17129,198 +17118,393 @@ var TagGroup_default = /* @__PURE__ */ (0, vue.defineComponent)({
17129
17118
  type: Boolean,
17130
17119
  default: false
17131
17120
  },
17132
- allowsDuplicates: {
17121
+ placeholder: {},
17122
+ name: {},
17123
+ label: {},
17124
+ description: {},
17125
+ errorMessage: {},
17126
+ class: {},
17127
+ modelValue: { default: void 0 },
17128
+ defaultValue: { default: void 0 },
17129
+ multiple: {
17133
17130
  type: Boolean,
17134
17131
  default: false
17135
17132
  },
17136
- maxTags: { default: void 0 },
17137
- delimiter: { default: "," },
17138
- variant: { default: "default" },
17139
- size: { default: "md" },
17140
- class: { default: void 0 }
17141
- },
17142
- emits: [
17143
- "update:modelValue",
17144
- "add",
17145
- "remove",
17146
- "invalid"
17147
- ],
17148
- setup(__props, { emit: __emit }) {
17149
- const props = __props;
17150
- const emit = __emit;
17151
- const labelId = (0, vue.useId)();
17152
- const slotFns = (0, _auronui_styles.tagGroupVariants)();
17153
- useTagGroupProvide({
17154
- variant: (0, vue.toRef)(props, "variant"),
17155
- size: (0, vue.toRef)(props, "size"),
17156
- isDisabled: (0, vue.toRef)(props, "isDisabled"),
17157
- readOnly: (0, vue.toRef)(props, "readOnly")
17158
- });
17159
- function onUpdateModelValue(value) {
17160
- emit("update:modelValue", value);
17133
+ multipleOverflow: { default: "wrap" },
17134
+ open: {
17135
+ type: Boolean,
17136
+ default: void 0
17137
+ },
17138
+ defaultOpen: {
17139
+ type: Boolean,
17140
+ default: void 0
17141
+ },
17142
+ items: { default: () => [] },
17143
+ loadItems: {
17144
+ type: Function,
17145
+ default: void 0
17146
+ },
17147
+ debounceMs: { default: 200 },
17148
+ filterOnOpen: {
17149
+ type: Boolean,
17150
+ default: false
17151
+ },
17152
+ truncateItems: {
17153
+ type: Boolean,
17154
+ default: true
17161
17155
  }
17162
- return (_ctx, _cache) => {
17163
- return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
17164
- class: (0, vue.normalizeClass)((0, vue.unref)(slotFns).base()),
17165
- "data-invalid": props.isInvalid || void 0,
17166
- "data-required": props.isRequired || void 0,
17167
- "data-disabled": props.isDisabled || void 0,
17168
- "data-readonly": props.readOnly || void 0,
17169
- "data-slot": "tag-group"
17170
- }, [
17171
- props.label ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
17172
- key: 0,
17173
- id: (0, vue.unref)(labelId),
17174
- class: "text-sm font-medium text-default-foreground w-fit",
17175
- "data-slot": "label"
17176
- }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(props.label) + " ", 1), props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$10, " *")) : (0, vue.createCommentVNode)("", true)], 8, _hoisted_2$16)) : (0, vue.createCommentVNode)("", true),
17177
- (0, vue.createVNode)((0, vue.unref)(reka_ui.TagsInputRoot), {
17178
- "model-value": props.modelValue,
17179
- "default-value": props.defaultValue,
17180
- disabled: props.isDisabled,
17181
- max: props.maxTags ?? 0,
17182
- delimiter: props.delimiter,
17183
- duplicate: props.allowsDuplicates,
17184
- "aria-labelledby": props.label ? (0, vue.unref)(labelId) : void 0,
17185
- "aria-invalid": props.isInvalid || void 0,
17186
- "aria-required": props.isRequired || void 0,
17187
- class: (0, vue.normalizeClass)((0, vue.unref)(slotFns).list()),
17188
- "onUpdate:modelValue": onUpdateModelValue
17189
- }, {
17190
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default"), !props.readOnly ? ((0, vue.openBlock)(), (0, vue.createBlock)(TagGroupInput_default, {
17191
- key: 0,
17192
- placeholder: props.placeholder
17193
- }, null, 8, ["placeholder"])) : (0, vue.createCommentVNode)("", true)]),
17194
- _: 3
17195
- }, 8, [
17196
- "model-value",
17197
- "default-value",
17198
- "disabled",
17199
- "max",
17200
- "delimiter",
17201
- "duplicate",
17202
- "aria-labelledby",
17203
- "aria-invalid",
17204
- "aria-required",
17205
- "class"
17206
- ]),
17207
- props.description || props.isInvalid && props.errorMessage ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", _hoisted_4$5, [props.isInvalid && props.errorMessage ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_5$4, (0, vue.toDisplayString)(props.errorMessage), 1)) : props.description ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("p", _hoisted_6$4, (0, vue.toDisplayString)(props.description), 1)) : (0, vue.createCommentVNode)("", true)])) : (0, vue.createCommentVNode)("", true)
17208
- ], 10, _hoisted_1$27);
17209
- };
17210
- }
17211
- });
17212
- //#endregion
17213
- //#region src/components/tag/TagText.vue
17214
- var TagText_default = /* @__PURE__ */ (0, vue.defineComponent)({
17215
- __name: "TagText",
17216
- setup(__props) {
17217
- return (_ctx, _cache) => {
17218
- return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.TagsInputItemText), null, {
17219
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default")]),
17220
- _: 3
17221
- });
17222
- };
17223
- }
17224
- });
17225
- //#endregion
17226
- //#region src/components/tag/TagDelete.vue
17227
- var TagDelete_default = /* @__PURE__ */ (0, vue.defineComponent)({
17228
- __name: "TagDelete",
17229
- emits: ["remove"],
17156
+ },
17157
+ emits: [
17158
+ "update:modelValue",
17159
+ "update:open",
17160
+ "create"
17161
+ ],
17230
17162
  setup(__props, { emit: __emit }) {
17163
+ const props = __props;
17231
17164
  const emit = __emit;
17232
- const slots = (0, _auronui_styles.tagVariants)();
17233
- function handleClick() {
17234
- emit("remove");
17165
+ const attrs = (0, vue.useAttrs)();
17166
+ const generatedId = (0, vue.useId)();
17167
+ const inputId = (0, vue.computed)(() => attrs.id ?? generatedId);
17168
+ const hasLabel = (0, vue.computed)(() => !!props.label);
17169
+ const slots = (0, vue.useSlots)();
17170
+ const usesCustomChrome = (0, vue.computed)(() => hasSlotComponent(slots.default?.(), [AutocompleteInput_default, AutocompleteContent_default]));
17171
+ const slotItemRegistry = (0, vue.ref)(/* @__PURE__ */ new Map());
17172
+ function registerItem(value, label) {
17173
+ const next = new Map(slotItemRegistry.value);
17174
+ next.set(value, label);
17175
+ slotItemRegistry.value = next;
17176
+ }
17177
+ function unregisterItem(value) {
17178
+ const next = new Map(slotItemRegistry.value);
17179
+ next.delete(value);
17180
+ slotItemRegistry.value = next;
17181
+ }
17182
+ const isLoading = (0, vue.ref)(false);
17183
+ const internalItems = (0, vue.ref)([...props.items]);
17184
+ const selectedValues = (0, vue.ref)(props.multiple && Array.isArray(props.modelValue) ? [...props.modelValue] : []);
17185
+ const internalOpen = (0, vue.ref)(props.defaultOpen ?? false);
17186
+ let selectingItem = false;
17187
+ const isOpen = (0, vue.ref)(props.defaultOpen ?? false);
17188
+ const termAtOpen = (0, vue.ref)("");
17189
+ const isUserTyping = (0, vue.ref)(false);
17190
+ const singleOpen = (0, vue.ref)(props.open ?? props.defaultOpen ?? false);
17191
+ let blockReopen = false;
17192
+ let blockReopenTimer;
17193
+ const effectiveIgnoreFilter = (0, vue.computed)(() => {
17194
+ if (props.loadItems) return true;
17195
+ if (!props.filterOnOpen && isOpen.value && !isUserTyping.value) return true;
17196
+ return false;
17197
+ });
17198
+ function labelFor(value) {
17199
+ if (value == null || value === "") return "";
17200
+ const match = internalItems.value.find((i) => i.value === value);
17201
+ if (match) return match.label ?? match.textValue ?? value;
17202
+ return slotItemRegistry.value.get(value) ?? value;
17235
17203
  }
17204
+ function valueFor(displayed) {
17205
+ if (!displayed) return "";
17206
+ const match = internalItems.value.find((i) => (i.label ?? i.textValue ?? i.value) === displayed);
17207
+ if (match) return match.value;
17208
+ for (const [value, label] of slotItemRegistry.value) if (label === displayed) return value;
17209
+ return displayed;
17210
+ }
17211
+ const singleModelValue = (0, vue.computed)(() => props.multiple ? void 0 : props.modelValue);
17212
+ const searchTerm = (0, vue.ref)(labelFor(singleModelValue.value));
17213
+ const isFilled = (0, vue.computed)(() => props.multiple ? selectedValues.value.length > 0 || !!searchTerm.value : !!searchTerm.value);
17214
+ const hasItems = (0, vue.computed)(() => internalItems.value.length > 0);
17215
+ const selectedLabels = (0, vue.computed)(() => selectedValues.value.map((v) => ({
17216
+ value: v,
17217
+ label: labelFor(v) || v
17218
+ })));
17219
+ const descriptionId = (0, vue.computed)(() => `${inputId.value}-description`);
17220
+ const errorMessageId = (0, vue.computed)(() => `${inputId.value}-error`);
17221
+ const showError = (0, vue.computed)(() => props.isInvalid && !!props.errorMessage);
17222
+ const showDescription = (0, vue.computed)(() => !!props.description && !showError.value);
17223
+ const hasHelper = (0, vue.computed)(() => showError.value || showDescription.value);
17224
+ const ariaDescribedBy = (0, vue.computed)(() => {
17225
+ if (showError.value) return errorMessageId.value;
17226
+ if (showDescription.value) return descriptionId.value;
17227
+ });
17228
+ (0, vue.watch)(() => props.modelValue, (val) => {
17229
+ if (props.multiple) {
17230
+ if (Array.isArray(val)) selectedValues.value = [...val];
17231
+ } else {
17232
+ const next = labelFor(val);
17233
+ if (searchTerm.value !== next) searchTerm.value = next;
17234
+ }
17235
+ });
17236
+ (0, vue.watch)(() => props.open, (val) => {
17237
+ if (!props.multiple && val !== void 0) singleOpen.value = val;
17238
+ });
17239
+ (0, vue.watch)(searchTerm, (displayed) => {
17240
+ if (props.multiple) {
17241
+ if (isOpen.value && displayed !== termAtOpen.value) isUserTyping.value = true;
17242
+ return;
17243
+ }
17244
+ const next = valueFor(displayed);
17245
+ if (next !== (singleModelValue.value ?? "")) emit("update:modelValue", next);
17246
+ if (isOpen.value && displayed !== termAtOpen.value) isUserTyping.value = true;
17247
+ });
17248
+ function handleOpenChange(val) {
17249
+ if (props.multiple) {
17250
+ isOpen.value = val;
17251
+ internalOpen.value = !val && selectingItem ? true : val;
17252
+ selectingItem = false;
17253
+ if (val) {
17254
+ termAtOpen.value = searchTerm.value;
17255
+ isUserTyping.value = false;
17256
+ } else isUserTyping.value = false;
17257
+ emit("update:open", val);
17258
+ return;
17259
+ }
17260
+ if (val && blockReopen) return;
17261
+ isOpen.value = val;
17262
+ singleOpen.value = val;
17263
+ if (val) {
17264
+ termAtOpen.value = searchTerm.value;
17265
+ isUserTyping.value = false;
17266
+ } else isUserTyping.value = false;
17267
+ emit("update:open", val);
17268
+ }
17269
+ function onMultipleSelect(value) {
17270
+ selectingItem = true;
17271
+ const idx = selectedValues.value.indexOf(value);
17272
+ selectedValues.value = idx === -1 ? [...selectedValues.value, value] : selectedValues.value.filter((_, i) => i !== idx);
17273
+ searchTerm.value = "";
17274
+ isUserTyping.value = false;
17275
+ emit("update:modelValue", selectedValues.value);
17276
+ }
17277
+ function removeValue(value) {
17278
+ selectedValues.value = selectedValues.value.filter((v) => v !== value);
17279
+ emit("update:modelValue", selectedValues.value);
17280
+ }
17281
+ function clearAll() {
17282
+ selectedValues.value = [];
17283
+ emit("update:modelValue", []);
17284
+ }
17285
+ function isSelected(value) {
17286
+ return selectedValues.value.includes(value);
17287
+ }
17288
+ const hasExactMatch = (0, vue.computed)(() => {
17289
+ const term = searchTerm.value.trim().toLowerCase();
17290
+ if (!term) return false;
17291
+ if (internalItems.value.some((i) => (i.label ?? i.textValue ?? i.value).toLowerCase() === term)) return true;
17292
+ for (const label of slotItemRegistry.value.values()) if (label.toLowerCase() === term) return true;
17293
+ return false;
17294
+ });
17295
+ function onCreateValue(value) {
17296
+ const trimmed = value.trim();
17297
+ if (!trimmed) return;
17298
+ if (props.multiple) {
17299
+ if (!selectedValues.value.includes(trimmed)) {
17300
+ selectingItem = true;
17301
+ selectedValues.value = [...selectedValues.value, trimmed];
17302
+ emit("update:modelValue", selectedValues.value);
17303
+ }
17304
+ searchTerm.value = "";
17305
+ isUserTyping.value = false;
17306
+ } else {
17307
+ searchTerm.value = trimmed;
17308
+ emit("update:modelValue", trimmed);
17309
+ isOpen.value = false;
17310
+ singleOpen.value = false;
17311
+ blockReopen = true;
17312
+ clearTimeout(blockReopenTimer);
17313
+ blockReopenTimer = setTimeout(() => {
17314
+ blockReopen = false;
17315
+ }, 300);
17316
+ }
17317
+ emit("create", trimmed);
17318
+ }
17319
+ let debounceTimer;
17320
+ async function runLoadItems(query) {
17321
+ if (!props.loadItems) return;
17322
+ isLoading.value = true;
17323
+ try {
17324
+ internalItems.value = await props.loadItems(query);
17325
+ } finally {
17326
+ isLoading.value = false;
17327
+ }
17328
+ }
17329
+ function scheduleLoad(query) {
17330
+ if (!props.loadItems) return;
17331
+ clearTimeout(debounceTimer);
17332
+ if (props.debounceMs === 0) runLoadItems(query);
17333
+ else debounceTimer = setTimeout(() => void runLoadItems(query), props.debounceMs);
17334
+ }
17335
+ (0, vue.onMounted)(() => {
17336
+ if (props.loadItems) runLoadItems(searchTerm.value);
17337
+ });
17338
+ (0, vue.watch)(searchTerm, (q) => {
17339
+ if (props.loadItems) scheduleLoad(q);
17340
+ });
17341
+ (0, vue.watch)(() => props.items, (newItems) => {
17342
+ if (!props.loadItems) internalItems.value = [...newItems];
17343
+ });
17344
+ (0, vue.watch)(internalItems, () => {
17345
+ if (props.multiple) return;
17346
+ const next = labelFor(singleModelValue.value);
17347
+ if (next && searchTerm.value !== next && valueFor(searchTerm.value) === (singleModelValue.value ?? "")) searchTerm.value = next;
17348
+ });
17349
+ (0, vue.watch)(slotItemRegistry, () => {
17350
+ if (props.multiple) return;
17351
+ const next = labelFor(singleModelValue.value);
17352
+ if (next && searchTerm.value !== next && valueFor(searchTerm.value) === (singleModelValue.value ?? "")) searchTerm.value = next;
17353
+ });
17354
+ const slotFns = (0, vue.computed)(() => (0, _auronui_styles.autocompleteVariants)({
17355
+ variant: props.variant,
17356
+ size: props.size,
17357
+ color: props.color,
17358
+ fullWidth: props.fullWidth,
17359
+ isInvalid: props.isInvalid,
17360
+ isDisabled: props.isDisabled,
17361
+ isReadonly: props.isReadonly,
17362
+ hasLabel: hasLabel.value,
17363
+ labelPlacement: props.labelPlacement
17364
+ }));
17365
+ const showOutsideLabel = (0, vue.computed)(() => hasLabel.value && props.labelPlacement !== "inside");
17366
+ useAutocompleteProvide({
17367
+ isDisabled: (0, vue.toRef)(props, "isDisabled"),
17368
+ isInvalid: (0, vue.toRef)(props, "isInvalid"),
17369
+ isReadonly: (0, vue.toRef)(props, "isReadonly"),
17370
+ isRequired: (0, vue.toRef)(props, "isRequired"),
17371
+ isLoading,
17372
+ isFilled,
17373
+ fullWidth: (0, vue.toRef)(props, "fullWidth"),
17374
+ hasLabel,
17375
+ labelPlacement: (0, vue.toRef)(props, "labelPlacement"),
17376
+ inputId,
17377
+ label: (0, vue.toRef)(props, "label"),
17378
+ ariaDescribedBy,
17379
+ truncateItems: (0, vue.toRef)(props, "truncateItems"),
17380
+ hasItems,
17381
+ slots: slotFns,
17382
+ multiple: (0, vue.toRef)(props, "multiple"),
17383
+ multipleOverflow: (0, vue.toRef)(props, "multipleOverflow"),
17384
+ selectedValues,
17385
+ selectedLabels,
17386
+ onMultipleSelect,
17387
+ removeValue,
17388
+ clearAll,
17389
+ isSelected,
17390
+ registerItem,
17391
+ unregisterItem,
17392
+ searchTerm,
17393
+ hasExactMatch,
17394
+ onCreateValue
17395
+ });
17236
17396
  return (_ctx, _cache) => {
17237
- return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.TagsInputItemDelete), {
17238
- class: (0, vue.normalizeClass)((0, vue.unref)(slots).removeButton()),
17239
- "aria-label": "Remove tag",
17240
- onClick: handleClick
17397
+ return (0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
17398
+ class: (0, vue.normalizeClass)((0, vue.unref)(composeClassName)(slotFns.value.base(), props.class)),
17399
+ "data-invalid": __props.isInvalid || void 0,
17400
+ "data-disabled": __props.isDisabled || void 0,
17401
+ "data-readonly": __props.isReadonly || void 0,
17402
+ "data-required": __props.isRequired || void 0,
17403
+ "data-has-label": hasLabel.value || void 0,
17404
+ "data-has-helper": hasHelper.value || void 0
17405
+ }, [showOutsideLabel.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("label", {
17406
+ key: 0,
17407
+ for: inputId.value,
17408
+ class: (0, vue.normalizeClass)(slotFns.value.label())
17409
+ }, [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.label), 1), __props.isRequired ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("span", _hoisted_3$10, " *")) : (0, vue.createCommentVNode)("", true)], 10, _hoisted_2$16)) : (0, vue.createCommentVNode)("", true), (0, vue.createElementVNode)("div", { class: (0, vue.normalizeClass)(slotFns.value.mainWrapper()) }, [(0, vue.createVNode)((0, vue.unref)(reka_ui.AutocompleteRoot), {
17410
+ "model-value": searchTerm.value,
17411
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => searchTerm.value = $event),
17412
+ open: props.multiple ? internalOpen.value : singleOpen.value,
17413
+ disabled: props.isDisabled,
17414
+ required: props.isRequired,
17415
+ "ignore-filter": effectiveIgnoreFilter.value,
17416
+ "open-on-focus": true,
17417
+ "onUpdate:open": handleOpenChange
17241
17418
  }, {
17242
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [_cache[0] || (_cache[0] = (0, vue.createElementVNode)("svg", {
17243
- xmlns: "http://www.w3.org/2000/svg",
17244
- viewBox: "0 0 24 24",
17245
- fill: "none",
17246
- stroke: "currentColor",
17247
- "stroke-width": "2",
17248
- "stroke-linecap": "round",
17249
- "stroke-linejoin": "round",
17250
- "aria-hidden": "true",
17251
- focusable: "false"
17252
- }, [(0, vue.createElementVNode)("line", {
17253
- x1: "18",
17254
- y1: "6",
17255
- x2: "6",
17256
- y2: "18"
17257
- }), (0, vue.createElementVNode)("line", {
17258
- x1: "6",
17259
- y1: "6",
17260
- x2: "18",
17261
- y2: "18"
17262
- })], -1))])]),
17419
+ default: (0, vue.withCtx)(() => [usesCustomChrome.value ? (0, vue.renderSlot)(_ctx.$slots, "default", {
17420
+ key: 0,
17421
+ isLoading: isLoading.value,
17422
+ items: internalItems.value
17423
+ }) : ((0, vue.openBlock)(), (0, vue.createElementBlock)(vue.Fragment, { key: 1 }, [(0, vue.createVNode)(AutocompleteInput_default, { placeholder: props.placeholder }, null, 8, ["placeholder"]), (0, vue.createVNode)(AutocompleteContent_default, null, {
17424
+ default: (0, vue.withCtx)(() => [((0, vue.openBlock)(true), (0, vue.createElementBlock)(vue.Fragment, null, (0, vue.renderList)(internalItems.value, (item) => {
17425
+ return (0, vue.openBlock)(), (0, vue.createBlock)(AutocompleteItem_default, {
17426
+ key: item.value,
17427
+ value: item.value,
17428
+ "is-disabled": item.isDisabled
17429
+ }, {
17430
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "item", { item }, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(item.label ?? item.textValue ?? item.value), 1)])]),
17431
+ _: 2
17432
+ }, 1032, ["value", "is-disabled"]);
17433
+ }), 128))]),
17434
+ _: 3
17435
+ })], 64))]),
17263
17436
  _: 3
17264
- }, 8, ["class"]);
17437
+ }, 8, [
17438
+ "model-value",
17439
+ "open",
17440
+ "disabled",
17441
+ "required",
17442
+ "ignore-filter"
17443
+ ]), hasHelper.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
17444
+ key: 0,
17445
+ class: (0, vue.normalizeClass)(slotFns.value.helperWrapper())
17446
+ }, [showError.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
17447
+ key: 0,
17448
+ id: errorMessageId.value,
17449
+ class: (0, vue.normalizeClass)(slotFns.value.errorMessage())
17450
+ }, (0, vue.toDisplayString)(__props.errorMessage), 11, _hoisted_4$5)) : showDescription.value ? ((0, vue.openBlock)(), (0, vue.createElementBlock)("div", {
17451
+ key: 1,
17452
+ id: descriptionId.value,
17453
+ class: (0, vue.normalizeClass)(slotFns.value.description())
17454
+ }, (0, vue.toDisplayString)(__props.description), 11, _hoisted_5$4)) : (0, vue.createCommentVNode)("", true)], 2)) : (0, vue.createCommentVNode)("", true)], 2)], 10, _hoisted_1$28);
17265
17455
  };
17266
17456
  }
17267
17457
  });
17268
17458
  //#endregion
17269
- //#region src/components/tag/Tag.vue
17270
- var Tag_default = /* @__PURE__ */ (0, vue.defineComponent)({
17271
- __name: "Tag",
17459
+ //#region src/components/autocomplete/AutocompleteCreateItem.vue?vue&type=script&setup=true&lang.ts
17460
+ var _hoisted_1$27 = {
17461
+ class: "autocomplete-item__text",
17462
+ "data-slot": "item-text"
17463
+ };
17464
+ //#endregion
17465
+ //#region src/components/autocomplete/AutocompleteCreateItem.vue
17466
+ var AutocompleteCreateItem_default = /* @__PURE__ */ (0, vue.defineComponent)({
17467
+ __name: "AutocompleteCreateItem",
17272
17468
  props: {
17273
- value: {},
17274
- textValue: { default: void 0 },
17275
- isDisabled: {
17276
- type: Boolean,
17277
- default: void 0
17278
- },
17279
- isReadOnly: {
17280
- type: Boolean,
17469
+ label: {
17470
+ type: [String, Function],
17281
17471
  default: void 0
17282
17472
  },
17283
- variant: { default: void 0 },
17284
- size: { default: void 0 },
17285
17473
  class: { default: void 0 }
17286
17474
  },
17287
- emits: ["remove"],
17288
- setup(__props, { emit: __emit }) {
17475
+ setup(__props) {
17289
17476
  const props = __props;
17290
- const emit = __emit;
17291
- const groupCtx = (0, vue.inject)(tagGroupContextKey, null);
17292
- const resolvedVariant = (0, vue.computed)(() => props.variant ?? groupCtx?.variant.value ?? "default");
17293
- const resolvedSize = (0, vue.computed)(() => props.size ?? groupCtx?.size.value ?? "md");
17294
- const resolvedIsDisabled = (0, vue.computed)(() => props.isDisabled ?? groupCtx?.isDisabled.value ?? false);
17295
- const resolvedReadOnly = (0, vue.computed)(() => props.isReadOnly ?? groupCtx?.readOnly.value ?? false);
17296
- const slotFns = (0, vue.computed)(() => (0, _auronui_styles.tagVariants)({
17297
- variant: resolvedVariant.value,
17298
- size: resolvedSize.value
17299
- }));
17300
- const showDelete = (0, vue.computed)(() => !resolvedReadOnly.value && !resolvedIsDisabled.value);
17301
- function onRemove() {
17302
- emit("remove", props.value);
17477
+ const ctx = useAutocompleteInject();
17478
+ const comboboxCtx = (0, reka_ui.injectComboboxRootContext)();
17479
+ const term = (0, vue.computed)(() => ctx.searchTerm.value.trim());
17480
+ const isVisible = (0, vue.computed)(() => !!term.value && !ctx.hasExactMatch.value);
17481
+ const displayLabel = (0, vue.computed)(() => {
17482
+ if (typeof props.label === "function") return props.label(term.value);
17483
+ return props.label ?? `Create "${term.value}"`;
17484
+ });
17485
+ function handleSelect(event) {
17486
+ event.preventDefault();
17487
+ ctx.onCreateValue(term.value);
17488
+ if (ctx.multiple.value) comboboxCtx.inputElement.value?.focus();
17489
+ else comboboxCtx.onOpenChange(false);
17303
17490
  }
17304
17491
  return (_ctx, _cache) => {
17305
- return (0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.TagsInputItem), {
17306
- value: __props.value,
17307
- disabled: resolvedIsDisabled.value || void 0,
17308
- class: (0, vue.normalizeClass)((0, vue.unref)(composeClassName)(slotFns.value.base(), props.class)),
17309
- "data-slot": "tag"
17492
+ return isVisible.value ? ((0, vue.openBlock)(), (0, vue.createBlock)((0, vue.unref)(reka_ui.AutocompleteItem), {
17493
+ key: term.value,
17494
+ value: term.value,
17495
+ "text-value": term.value,
17496
+ class: (0, vue.normalizeClass)(["list-box-item list-box-item--default", props.class]),
17497
+ "data-slot": "list-box-item",
17498
+ "data-create-item": "",
17499
+ onSelect: handleSelect
17310
17500
  }, {
17311
- default: (0, vue.withCtx)(() => [(0, vue.createVNode)(TagText_default, null, {
17312
- default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", {}, () => [(0, vue.createTextVNode)((0, vue.toDisplayString)(__props.textValue ?? __props.value), 1)])]),
17313
- _: 3
17314
- }), showDelete.value ? ((0, vue.openBlock)(), (0, vue.createBlock)(TagDelete_default, {
17315
- key: 0,
17316
- onRemove
17317
- })) : (0, vue.createCommentVNode)("", true)]),
17501
+ default: (0, vue.withCtx)(() => [(0, vue.renderSlot)(_ctx.$slots, "default", { term: term.value }, () => [(0, vue.createElementVNode)("span", _hoisted_1$27, (0, vue.toDisplayString)(displayLabel.value), 1)])]),
17318
17502
  _: 3
17319
17503
  }, 8, [
17320
17504
  "value",
17321
- "disabled",
17505
+ "text-value",
17322
17506
  "class"
17323
- ]);
17507
+ ])) : (0, vue.createCommentVNode)("", true);
17324
17508
  };
17325
17509
  }
17326
17510
  });
@@ -27039,6 +27223,7 @@ exports.AlertTitle = AlertTitle_default;
27039
27223
  exports.AspectRatio = AspectRatio_default;
27040
27224
  exports.Autocomplete = Autocomplete_default;
27041
27225
  exports.AutocompleteContent = AutocompleteContent_default;
27226
+ exports.AutocompleteCreateItem = AutocompleteCreateItem_default;
27042
27227
  exports.AutocompleteInput = AutocompleteInput_default;
27043
27228
  exports.AutocompleteItem = AutocompleteItem_default;
27044
27229
  exports.Avatar = Avatar_default;
@@ -27181,11 +27366,7 @@ exports.TableHeader = TableHeader_default;
27181
27366
  exports.TableHeaderCell = TableHeaderCell_default;
27182
27367
  exports.TableRow = TableRow_default;
27183
27368
  exports.Tabs = Tabs_default;
27184
- exports.Tag = Tag_default;
27185
- exports.TagDelete = TagDelete_default;
27186
- exports.TagGroup = TagGroup_default;
27187
- exports.TagGroupInput = TagGroupInput_default;
27188
- exports.TagText = TagText_default;
27369
+ exports.Tag = Chip_default;
27189
27370
  exports.Text = Text_default;
27190
27371
  exports.Textarea = Textarea_default;
27191
27372
  exports.TimeField = TimeField_default;
@@ -27230,7 +27411,6 @@ exports.stepperContextKey = stepperContextKey;
27230
27411
  exports.surfaceContextKey = surfaceContextKey;
27231
27412
  exports.switchGroupContextKey = switchGroupContextKey;
27232
27413
  exports.tableContextKey = tableContextKey;
27233
- exports.tagGroupContextKey = tagGroupContextKey;
27234
27414
  exports.treeContextKey = treeContextKey;
27235
27415
  exports.useAutocompleteInject = useAutocompleteInject;
27236
27416
  exports.useAutocompleteProvide = useAutocompleteProvide;
@@ -27258,8 +27438,6 @@ exports.useSwitchGroupProvide = useSwitchGroupProvide;
27258
27438
  exports.useTableInject = useTableInject;
27259
27439
  exports.useTableKeyboardNav = useTableKeyboardNav;
27260
27440
  exports.useTableProvide = useTableProvide;
27261
- exports.useTagGroupInject = useTagGroupInject;
27262
- exports.useTagGroupProvide = useTagGroupProvide;
27263
27441
  exports.useToast = useToast;
27264
27442
 
27265
27443
  //# sourceMappingURL=index.cjs.map