cisse-vue-ui 0.2.4 → 0.2.6

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 (60) hide show
  1. package/README.md +67 -1
  2. package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-Do0H2ZOe.cjs → CollapsibleCard.vue_vue_type_script_setup_true_lang-CPV2dtkO.cjs} +67 -125
  3. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-CPV2dtkO.cjs.map +1 -0
  4. package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-Cymj-zkh.js → CollapsibleCard.vue_vue_type_script_setup_true_lang-D0eSGYea.js} +68 -126
  5. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-D0eSGYea.js.map +1 -0
  6. package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-D65uMijW.js → Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js} +26 -74
  7. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js.map +1 -0
  8. package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-H6wsySqi.cjs → Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs} +25 -73
  9. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs.map +1 -0
  10. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-DoawksKc.cjs → PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs} +2 -2
  11. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-DoawksKc.cjs.map → PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs.map} +1 -1
  12. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-J1I-WjM-.js → PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js} +2 -2
  13. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-J1I-WjM-.js.map → PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js.map} +1 -1
  14. package/dist/{Switch.vue_vue_type_script_setup_true_lang-C2_5u-HL.js → Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js} +33 -103
  15. package/dist/Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js.map +1 -0
  16. package/dist/{Switch.vue_vue_type_script_setup_true_lang-V-FtNcTd.cjs → Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs} +32 -102
  17. package/dist/Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs.map +1 -0
  18. package/dist/components/core/Dropdown.vue.d.ts +2 -4
  19. package/dist/components/core/index.cjs +2 -2
  20. package/dist/components/core/index.js +2 -2
  21. package/dist/components/form/index.cjs +1 -1
  22. package/dist/components/form/index.js +1 -1
  23. package/dist/components/index.cjs +4 -4
  24. package/dist/components/index.js +4 -4
  25. package/dist/components/layout/index.cjs +1 -1
  26. package/dist/components/layout/index.js +1 -1
  27. package/dist/composables/index.cjs +8 -4
  28. package/dist/composables/index.cjs.map +1 -1
  29. package/dist/composables/index.d.ts +2 -0
  30. package/dist/composables/index.js +5 -1
  31. package/dist/composables/index.js.map +1 -1
  32. package/dist/composables/useDropdown.d.ts +51 -0
  33. package/dist/composables/useModal.d.ts +60 -0
  34. package/dist/{index-D_7WQIhA.cjs → index-C-qIi_nO.cjs} +5 -5
  35. package/dist/index-C-qIi_nO.cjs.map +1 -0
  36. package/dist/{index-CNQJxtkC.js → index-DUVvDjHF.js} +5 -5
  37. package/dist/index-DUVvDjHF.js.map +1 -0
  38. package/dist/index.cjs +13 -9
  39. package/dist/index.cjs.map +1 -1
  40. package/dist/index.js +10 -6
  41. package/dist/index.js.map +1 -1
  42. package/dist/useDropdown-DHFnd259.cjs +130 -0
  43. package/dist/useDropdown-DHFnd259.cjs.map +1 -0
  44. package/dist/useDropdown-iVu14E6s.js +131 -0
  45. package/dist/useDropdown-iVu14E6s.js.map +1 -0
  46. package/dist/{useExportCSV-B9o9lJ3D.js → useModal-Aq8hn152.js} +40 -1
  47. package/dist/useModal-Aq8hn152.js.map +1 -0
  48. package/dist/{useExportCSV-BPC_hd25.cjs → useModal-DDF_ZS8C.cjs} +40 -1
  49. package/dist/useModal-DDF_ZS8C.cjs.map +1 -0
  50. package/package.json +1 -1
  51. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Cymj-zkh.js.map +0 -1
  52. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Do0H2ZOe.cjs.map +0 -1
  53. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-D65uMijW.js.map +0 -1
  54. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-H6wsySqi.cjs.map +0 -1
  55. package/dist/Switch.vue_vue_type_script_setup_true_lang-C2_5u-HL.js.map +0 -1
  56. package/dist/Switch.vue_vue_type_script_setup_true_lang-V-FtNcTd.cjs.map +0 -1
  57. package/dist/index-CNQJxtkC.js.map +0 -1
  58. package/dist/index-D_7WQIhA.cjs.map +0 -1
  59. package/dist/useExportCSV-B9o9lJ3D.js.map +0 -1
  60. package/dist/useExportCSV-BPC_hd25.cjs.map +0 -1
package/README.md CHANGED
@@ -151,7 +151,73 @@ app.use(VueTailwindUI, { components: ['Button', 'CardComponent'] })
151
151
  ## Composables
152
152
 
153
153
  ```typescript
154
- import { useNotifications, useDarkMode, useExportCSV } from 'cisse-vue-ui/composables'
154
+ import { useNotifications, useDarkMode, useExportCSV, useDropdown, useModal } from 'cisse-vue-ui/composables'
155
+ ```
156
+
157
+ ### useModal
158
+
159
+ Manage modal state with data support:
160
+
161
+ ```typescript
162
+ import { useModal } from 'cisse-vue-ui/composables'
163
+
164
+ // Simple modal
165
+ const createModal = useModal()
166
+ createModal.open()
167
+ createModal.close()
168
+
169
+ // Modal with data (e.g., for editing)
170
+ const editModal = useModal<User>()
171
+ editModal.open(selectedUser)
172
+ // Access editModal.data.value in template
173
+
174
+ // With callbacks
175
+ const deleteModal = useModal<Item>({
176
+ onOpen: (data) => console.log('Opening with:', data),
177
+ onClose: () => refetchData()
178
+ })
179
+ ```
180
+
181
+ ```vue
182
+ <template>
183
+ <!-- Use isOpen for v-model binding -->
184
+ <Modal v-model="editModal.isOpen.value" title="Edit User">
185
+ <FormInput v-model="editModal.data.value.name" label="Name" />
186
+ <template #footer>
187
+ <Button @click="editModal.close()">Cancel</Button>
188
+ <Button variant="primary" @click="save">Save</Button>
189
+ </template>
190
+ </Modal>
191
+ </template>
192
+ ```
193
+
194
+ ### useDropdown
195
+
196
+ Shared dropdown logic for custom dropdown components (used internally by Dropdown, FormSelect, AutocompleteComponent):
197
+
198
+ ```typescript
199
+ import { useDropdown } from 'cisse-vue-ui/composables'
200
+ import { ref } from 'vue'
201
+
202
+ const triggerRef = ref<HTMLElement>()
203
+ const dropdownRef = ref<HTMLElement>()
204
+
205
+ const {
206
+ isOpen,
207
+ highlightedIndex,
208
+ dropdownStyle,
209
+ open,
210
+ close,
211
+ toggle,
212
+ handleKeydown,
213
+ scrollToHighlighted,
214
+ } = useDropdown(triggerRef, dropdownRef, {
215
+ teleport: true,
216
+ align: 'left',
217
+ gap: 8,
218
+ onOpen: () => console.log('Opened'),
219
+ onClose: () => console.log('Closed'),
220
+ })
155
221
  ```
156
222
 
157
223
  ### useNotifications
@@ -3,6 +3,7 @@ const vue = require("vue");
3
3
  const Checkbox_vue_vue_type_script_setup_true_lang = require("./Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs");
4
4
  const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
5
5
  const vue$1 = require("@iconify/vue");
6
+ const useDropdown = require("./useDropdown-DHFnd259.cjs");
6
7
  const _hoisted_1$8 = { class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950" };
7
8
  const _hoisted_2$6 = {
8
9
  key: 0,
@@ -236,10 +237,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
236
237
  }
237
238
  });
238
239
  const _hoisted_1$6 = { class: "space-y-3" };
239
- const _hoisted_2$4 = {
240
- key: 0,
241
- class: "flex items-center gap-3 p-3 bg-white dark:bg-slate-950 rounded-lg shadow-md"
242
- };
240
+ const _hoisted_2$4 = { class: "flex items-center gap-3 p-3" };
243
241
  const _hoisted_3$2 = { class: "text-sm text-gray-600 dark:text-gray-400" };
244
242
  const _hoisted_4$1 = {
245
243
  key: 0,
@@ -305,39 +303,47 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
305
303
  const hasEmptySlot = vue.computed(() => !!slots.empty);
306
304
  return (_ctx, _cache) => {
307
305
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
308
- __props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$4, [
309
- vue.createVNode(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
310
- "model-value": allSelected.value,
311
- indeterminate: someSelected.value,
312
- "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
313
- }, null, 8, ["model-value", "indeterminate"]),
314
- vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
315
- __props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$1, " (" + vue.toDisplayString(__props.selectedItems.size) + " sélectionné" + vue.toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : vue.createCommentVNode("", true)
316
- ])) : vue.createCommentVNode("", true),
306
+ __props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$b, { key: 0 }, {
307
+ default: vue.withCtx(() => [
308
+ vue.createElementVNode("div", _hoisted_2$4, [
309
+ vue.createVNode(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
310
+ "model-value": allSelected.value,
311
+ indeterminate: someSelected.value,
312
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
313
+ }, null, 8, ["model-value", "indeterminate"]),
314
+ vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
315
+ __props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$1, " (" + vue.toDisplayString(__props.selectedItems.size) + " sélectionné" + vue.toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : vue.createCommentVNode("", true)
316
+ ])
317
+ ]),
318
+ _: 1
319
+ })) : vue.createCommentVNode("", true),
317
320
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
318
- return vue.openBlock(), vue.createElementBlock("div", {
321
+ return vue.openBlock(), vue.createBlock(_sfc_main$b, {
319
322
  key: getKey(item),
320
- class: vue.normalizeClass(["bg-white dark:bg-slate-950 rounded-lg shadow-md hover:shadow-lg transition-all duration-200", {
323
+ class: vue.normalizeClass(["hover:shadow-lg transition-all duration-200", {
321
324
  "ring-2 ring-primary": isSelected(item)
322
325
  }])
323
- }, [
324
- vue.createElementVNode("div", _hoisted_5$1, [
325
- __props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$1, [
326
- isSelectable(item) ? (vue.openBlock(), vue.createBlock(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
327
- key: 0,
328
- "model-value": isSelected(item),
329
- "onUpdate:modelValue": ($event) => handleSelect(item)
330
- }, null, 8, ["model-value", "onUpdate:modelValue"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$1))
331
- ])) : vue.createCommentVNode("", true),
332
- vue.renderSlot(_ctx.$slots, "avatar", { item }),
333
- vue.createElementVNode("div", _hoisted_8$1, [
334
- vue.renderSlot(_ctx.$slots, "content", { item })
335
- ]),
336
- vue.createElementVNode("div", _hoisted_9$1, [
337
- vue.renderSlot(_ctx.$slots, "actions", { item })
326
+ }, {
327
+ default: vue.withCtx(() => [
328
+ vue.createElementVNode("div", _hoisted_5$1, [
329
+ __props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$1, [
330
+ isSelectable(item) ? (vue.openBlock(), vue.createBlock(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
331
+ key: 0,
332
+ "model-value": isSelected(item),
333
+ "onUpdate:modelValue": ($event) => handleSelect(item)
334
+ }, null, 8, ["model-value", "onUpdate:modelValue"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$1))
335
+ ])) : vue.createCommentVNode("", true),
336
+ vue.renderSlot(_ctx.$slots, "avatar", { item }),
337
+ vue.createElementVNode("div", _hoisted_8$1, [
338
+ vue.renderSlot(_ctx.$slots, "content", { item })
339
+ ]),
340
+ vue.createElementVNode("div", _hoisted_9$1, [
341
+ vue.renderSlot(_ctx.$slots, "actions", { item })
342
+ ])
338
343
  ])
339
- ])
340
- ], 2);
344
+ ]),
345
+ _: 2
346
+ }, 1032, ["class"]);
341
347
  }), 128)),
342
348
  __props.items.length === 0 && hasEmptySlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
343
349
  vue.renderSlot(_ctx.$slots, "empty")
@@ -708,13 +714,21 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
708
714
  const props = __props;
709
715
  const emit = __emit;
710
716
  const searchQuery = vue.ref("");
711
- const isOpen = vue.ref(false);
712
- const highlightedIndex = vue.ref(-1);
713
717
  const inputRef = vue.ref(null);
714
- const dropdownRef = vue.ref(null);
715
718
  const containerRef = vue.ref(null);
719
+ const dropdownRef = vue.ref(null);
716
720
  const inputWrapperRef = vue.ref(null);
717
- const dropdownPosition = vue.ref({ top: 0, left: 0, width: 0 });
721
+ const {
722
+ isOpen,
723
+ highlightedIndex,
724
+ dropdownStyle,
725
+ open: openBase,
726
+ close: closeBase,
727
+ handleKeydown: baseHandleKeydown,
728
+ scrollToHighlighted
729
+ } = useDropdown.useDropdown(inputWrapperRef, dropdownRef, {
730
+ teleport: props.teleport
731
+ });
718
732
  const filteredOptions = vue.computed(() => {
719
733
  if (!searchQuery.value) {
720
734
  return props.options;
@@ -738,30 +752,19 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
738
752
  },
739
753
  { immediate: true }
740
754
  );
741
- const updatePosition = () => {
742
- if (!inputWrapperRef.value || !props.teleport) return;
743
- const rect = inputWrapperRef.value.getBoundingClientRect();
744
- dropdownPosition.value = {
745
- top: rect.bottom + window.scrollY + 8,
746
- left: rect.left + window.scrollX,
747
- width: rect.width
748
- };
749
- };
750
755
  const openDropdown = () => {
751
756
  if (props.disabled) return;
752
- isOpen.value = true;
753
757
  searchQuery.value = "";
754
758
  highlightedIndex.value = -1;
759
+ openBase();
755
760
  vue.nextTick(() => {
756
761
  var _a;
757
762
  (_a = inputRef.value) == null ? void 0 : _a.focus();
758
- updatePosition();
759
763
  });
760
764
  };
761
765
  const closeDropdown = () => {
762
- isOpen.value = false;
766
+ closeBase();
763
767
  searchQuery.value = selectedLabel.value;
764
- highlightedIndex.value = -1;
765
768
  };
766
769
  const selectOption = (option) => {
767
770
  emit("update:modelValue", option.value);
@@ -778,79 +781,18 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
778
781
  });
779
782
  };
780
783
  const handleKeydown = (event) => {
781
- if (!isOpen.value) return;
782
- switch (event.key) {
783
- case "ArrowDown":
784
- event.preventDefault();
785
- highlightedIndex.value = Math.min(
786
- highlightedIndex.value + 1,
787
- filteredOptions.value.length - 1
788
- );
789
- scrollToHighlighted();
790
- break;
791
- case "ArrowUp":
792
- event.preventDefault();
793
- highlightedIndex.value = Math.max(highlightedIndex.value - 1, 0);
794
- scrollToHighlighted();
795
- break;
796
- case "Enter":
797
- event.preventDefault();
798
- if (highlightedIndex.value >= 0 && filteredOptions.value[highlightedIndex.value]) {
799
- selectOption(filteredOptions.value[highlightedIndex.value]);
800
- }
801
- break;
802
- case "Escape":
803
- event.preventDefault();
804
- closeDropdown();
805
- break;
806
- }
807
- };
808
- const scrollToHighlighted = () => {
809
- vue.nextTick(() => {
810
- if (dropdownRef.value) {
811
- const highlightedElement = dropdownRef.value.querySelector(
812
- `[data-index="${highlightedIndex.value}"]`
813
- );
814
- if (highlightedElement) {
815
- highlightedElement.scrollIntoView({ block: "nearest" });
784
+ baseHandleKeydown(event, {
785
+ itemCount: filteredOptions.value.length,
786
+ onSelect: (index) => {
787
+ if (filteredOptions.value[index]) {
788
+ selectOption(filteredOptions.value[index]);
816
789
  }
817
790
  }
818
791
  });
819
- };
820
- const handleClickOutside = (event) => {
821
- var _a, _b;
822
- const target = event.target;
823
- const isInsideContainer = (_a = containerRef.value) == null ? void 0 : _a.contains(target);
824
- const isInsideDropdown = (_b = dropdownRef.value) == null ? void 0 : _b.contains(target);
825
- if (!isInsideContainer && !isInsideDropdown) {
826
- closeDropdown();
792
+ if (isOpen.value) {
793
+ scrollToHighlighted(dropdownRef.value);
827
794
  }
828
795
  };
829
- vue.watch(isOpen, (newValue) => {
830
- if (newValue) {
831
- document.addEventListener("click", handleClickOutside);
832
- window.addEventListener("scroll", updatePosition, true);
833
- window.addEventListener("resize", updatePosition);
834
- } else {
835
- document.removeEventListener("click", handleClickOutside);
836
- window.removeEventListener("scroll", updatePosition, true);
837
- window.removeEventListener("resize", updatePosition);
838
- }
839
- });
840
- vue.onUnmounted(() => {
841
- document.removeEventListener("click", handleClickOutside);
842
- window.removeEventListener("scroll", updatePosition, true);
843
- window.removeEventListener("resize", updatePosition);
844
- });
845
- const dropdownStyle = vue.computed(() => {
846
- if (!props.teleport) return {};
847
- return {
848
- position: "absolute",
849
- top: `${dropdownPosition.value.top}px`,
850
- left: `${dropdownPosition.value.left}px`,
851
- width: `${dropdownPosition.value.width}px`
852
- };
853
- });
854
796
  return (_ctx, _cache) => {
855
797
  return vue.openBlock(), vue.createElementBlock("div", {
856
798
  ref_key: "containerRef",
@@ -864,8 +806,8 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
864
806
  ref: inputWrapperRef,
865
807
  class: vue.normalizeClass([{
866
808
  "border-red-500": __props.error,
867
- "border-gray-300 dark:border-gray-600": !__props.error && !isOpen.value,
868
- "border-primary ring-2 ring-primary/20": isOpen.value,
809
+ "border-gray-300 dark:border-gray-600": !__props.error && !vue.unref(isOpen),
810
+ "border-primary ring-2 ring-primary/20": vue.unref(isOpen),
869
811
  "cursor-not-allowed opacity-50": __props.disabled
870
812
  }, "flex items-center gap-2 rounded-lg border bg-white px-3 py-2 transition dark:bg-gray-800"])
871
813
  }, [
@@ -901,10 +843,10 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
901
843
  disabled: __props.disabled,
902
844
  class: "rounded p-1 transition hover:bg-gray-100 dark:hover:bg-gray-700",
903
845
  type: "button",
904
- onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => isOpen.value ? closeDropdown() : openDropdown(), ["stop"]))
846
+ onClick: _cache[1] || (_cache[1] = vue.withModifiers(($event) => vue.unref(isOpen) ? closeDropdown() : openDropdown(), ["stop"]))
905
847
  }, [
906
848
  vue.createVNode(vue.unref(vue$1.Icon), {
907
- class: vue.normalizeClass([{ "rotate-180": isOpen.value }, "size-4 text-gray-400 transition"]),
849
+ class: vue.normalizeClass([{ "rotate-180": vue.unref(isOpen) }, "size-4 text-gray-400 transition"]),
908
850
  icon: "lucide:chevron-down"
909
851
  }, null, 8, ["class"])
910
852
  ], 8, _hoisted_4)
@@ -922,11 +864,11 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
922
864
  "leave-to-class": "opacity-0 scale-95"
923
865
  }, {
924
866
  default: vue.withCtx(() => [
925
- isOpen.value ? (vue.openBlock(), vue.createElementBlock("div", {
867
+ vue.unref(isOpen) ? (vue.openBlock(), vue.createElementBlock("div", {
926
868
  key: 0,
927
869
  ref_key: "dropdownRef",
928
870
  ref: dropdownRef,
929
- style: vue.normalizeStyle(dropdownStyle.value),
871
+ style: vue.normalizeStyle(vue.unref(dropdownStyle)),
930
872
  class: vue.normalizeClass([
931
873
  "autocomplete-dropdown z-[9999] max-h-60 overflow-auto rounded-lg border border-gray-200 bg-white shadow-lg dark:border-gray-700 dark:bg-gray-800",
932
874
  !__props.teleport && "absolute mt-2 w-full"
@@ -937,7 +879,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
937
879
  return vue.openBlock(), vue.createElementBlock("button", {
938
880
  key: option.value,
939
881
  class: vue.normalizeClass([{
940
- "bg-gray-100 dark:bg-gray-700": highlightedIndex.value === index,
882
+ "bg-gray-100 dark:bg-gray-700": vue.unref(highlightedIndex) === index,
941
883
  "bg-primary/10": __props.modelValue === option.value
942
884
  }, "flex w-full items-center gap-2 px-4 py-2 text-left text-sm transition hover:bg-gray-100 dark:hover:bg-gray-700"]),
943
885
  "data-index": index,
@@ -1475,4 +1417,4 @@ exports._sfc_main$6 = _sfc_main$5;
1475
1417
  exports._sfc_main$7 = _sfc_main$4;
1476
1418
  exports._sfc_main$8 = _sfc_main$3;
1477
1419
  exports._sfc_main$9 = _sfc_main$2;
1478
- //# sourceMappingURL=CollapsibleCard.vue_vue_type_script_setup_true_lang-Do0H2ZOe.cjs.map
1420
+ //# sourceMappingURL=CollapsibleCard.vue_vue_type_script_setup_true_lang-CPV2dtkO.cjs.map