cisse-vue-ui 0.5.21 → 0.5.23

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 (137) hide show
  1. package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-D3_Oddwt.js → Button.vue_vue_type_script_setup_true_lang-CD9QPOeU.js} +114 -10
  2. package/dist/Button.vue_vue_type_script_setup_true_lang-CD9QPOeU.js.map +1 -0
  3. package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-CrEu33_J.cjs → Button.vue_vue_type_script_setup_true_lang-Cev21KGJ.cjs} +113 -9
  4. package/dist/Button.vue_vue_type_script_setup_true_lang-Cev21KGJ.cjs.map +1 -0
  5. package/dist/{RangeSlider.vue_vue_type_script_setup_true_lang-ClH-pyK8.cjs → Combobox.vue_vue_type_script_setup_true_lang-D9TIId4E.cjs} +621 -266
  6. package/dist/Combobox.vue_vue_type_script_setup_true_lang-D9TIId4E.cjs.map +1 -0
  7. package/dist/{RangeSlider.vue_vue_type_script_setup_true_lang-B79_S1JL.js → Combobox.vue_vue_type_script_setup_true_lang-DCLKWzhc.js} +595 -240
  8. package/dist/Combobox.vue_vue_type_script_setup_true_lang-DCLKWzhc.js.map +1 -0
  9. package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-CsDMGhaT.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-CwHYxBhR.cjs} +290 -128
  10. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-CwHYxBhR.cjs.map +1 -0
  11. package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-Q4PcIELi.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-Dm4kLAnr.js} +291 -129
  12. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-Dm4kLAnr.js.map +1 -0
  13. package/dist/{Timeline.vue_vue_type_script_setup_true_lang-C5SKEGPG.cjs → DarkModeToggle.vue_vue_type_script_setup_true_lang-CSxGvdSP.cjs} +192 -408
  14. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-CSxGvdSP.cjs.map +1 -0
  15. package/dist/{Timeline.vue_vue_type_script_setup_true_lang-ykGksWXN.js → DarkModeToggle.vue_vue_type_script_setup_true_lang-D1Q43mhJ.js} +153 -369
  16. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-D1Q43mhJ.js.map +1 -0
  17. package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs → Dropdown.vue_vue_type_script_setup_true_lang-DNeh9Gi-.cjs} +32 -15
  18. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DNeh9Gi-.cjs.map +1 -0
  19. package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js → Dropdown.vue_vue_type_script_setup_true_lang-DXV811zB.js} +32 -15
  20. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DXV811zB.js.map +1 -0
  21. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-D22uNeS1.cjs → PageLayout.vue_vue_type_script_setup_true_lang-C0YzyJnK.cjs} +2 -2
  22. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-D22uNeS1.cjs.map → PageLayout.vue_vue_type_script_setup_true_lang-C0YzyJnK.cjs.map} +1 -1
  23. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-kT7np2ir.js → PageLayout.vue_vue_type_script_setup_true_lang-ClzYGS8h.js} +2 -2
  24. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-kT7np2ir.js.map → PageLayout.vue_vue_type_script_setup_true_lang-ClzYGS8h.js.map} +1 -1
  25. package/dist/components/core/AccordionItem.vue.d.ts +2 -0
  26. package/dist/components/core/DarkModeToggle.stories.d.ts +15 -0
  27. package/dist/components/core/DarkModeToggle.test.d.ts +1 -0
  28. package/dist/components/core/DarkModeToggle.vue.d.ts +21 -0
  29. package/dist/components/core/Dropdown.vue.d.ts +2 -0
  30. package/dist/components/core/Popover.vue.d.ts +2 -0
  31. package/dist/components/core/Tooltip.vue.d.ts +2 -0
  32. package/dist/components/core/index.cjs +23 -21
  33. package/dist/components/core/index.cjs.map +1 -1
  34. package/dist/components/core/index.d.ts +2 -0
  35. package/dist/components/core/index.js +17 -15
  36. package/dist/components/core/index.js.map +1 -1
  37. package/dist/components/core/index.test.d.ts +1 -0
  38. package/dist/components/feedback/ConfirmDialog.stories.d.ts +12 -0
  39. package/dist/components/feedback/ConfirmDialog.test.d.ts +1 -0
  40. package/dist/components/feedback/ConfirmDialog.vue.d.ts +53 -0
  41. package/dist/components/feedback/LoadingSpinner.vue.d.ts +6 -1
  42. package/dist/components/feedback/Modal.vue.d.ts +18 -3
  43. package/dist/components/feedback/Progress.vue.d.ts +1 -1
  44. package/dist/components/feedback/index.cjs +17 -16
  45. package/dist/components/feedback/index.cjs.map +1 -1
  46. package/dist/components/feedback/index.d.ts +2 -0
  47. package/dist/components/feedback/index.js +6 -5
  48. package/dist/components/feedback/index.test.d.ts +1 -0
  49. package/dist/components/form/Checkbox.vue.d.ts +2 -0
  50. package/dist/components/form/ColorPicker.vue.d.ts +3 -0
  51. package/dist/components/form/Combobox.stories.d.ts +15 -0
  52. package/dist/components/form/Combobox.test.d.ts +1 -0
  53. package/dist/components/form/Combobox.vue.d.ts +46 -0
  54. package/dist/components/form/DatePicker.vue.d.ts +2 -0
  55. package/dist/components/form/FormHelp.vue.d.ts +2 -0
  56. package/dist/components/form/Switch.vue.d.ts +2 -0
  57. package/dist/components/form/index.cjs +17 -16
  58. package/dist/components/form/index.cjs.map +1 -1
  59. package/dist/components/form/index.d.ts +2 -0
  60. package/dist/components/form/index.js +3 -2
  61. package/dist/components/form/index.test.d.ts +1 -0
  62. package/dist/components/index.cjs +57 -54
  63. package/dist/components/index.cjs.map +1 -1
  64. package/dist/components/index.js +35 -32
  65. package/dist/components/index.test.d.ts +1 -0
  66. package/dist/components/layout/index.cjs +1 -1
  67. package/dist/components/layout/index.js +1 -1
  68. package/dist/components/layout/index.test.d.ts +1 -0
  69. package/dist/components/type/index.test.d.ts +1 -0
  70. package/dist/composables/index.cjs +9 -2
  71. package/dist/composables/index.cjs.map +1 -1
  72. package/dist/composables/index.d.ts +2 -0
  73. package/dist/composables/index.js +15 -8
  74. package/dist/composables/index.js.map +1 -1
  75. package/dist/composables/index.test.d.ts +1 -0
  76. package/dist/composables/useDarkMode.test.d.ts +1 -0
  77. package/dist/composables/useDropdown.test.d.ts +1 -0
  78. package/dist/composables/useExportCSV.test.d.ts +1 -0
  79. package/dist/composables/useFocusTrap.d.ts +41 -0
  80. package/dist/composables/useFocusTrap.test.d.ts +1 -0
  81. package/dist/composables/useId.d.ts +42 -0
  82. package/dist/composables/useId.test.d.ts +1 -0
  83. package/dist/composables/useModal.d.ts +1 -1
  84. package/dist/composables/useModal.test.d.ts +1 -0
  85. package/dist/index-BMoLBt6A.js +75 -0
  86. package/dist/index-BMoLBt6A.js.map +1 -0
  87. package/dist/index-CJwlO351.js +347 -0
  88. package/dist/index-CJwlO351.js.map +1 -0
  89. package/dist/index-CUNU12xk.cjs +346 -0
  90. package/dist/index-CUNU12xk.cjs.map +1 -0
  91. package/dist/index-DwFvFW-3.cjs +74 -0
  92. package/dist/index-DwFvFW-3.cjs.map +1 -0
  93. package/dist/index.cjs +67 -57
  94. package/dist/index.cjs.map +1 -1
  95. package/dist/index.js +51 -41
  96. package/dist/index.js.map +1 -1
  97. package/dist/index.test.d.ts +1 -0
  98. package/dist/style.css +1 -1
  99. package/dist/types/form.d.ts +4 -0
  100. package/dist/types/index.test.d.ts +1 -0
  101. package/dist/useDarkMode-Cl5QWTlC.js +53 -0
  102. package/dist/useDarkMode-Cl5QWTlC.js.map +1 -0
  103. package/dist/useDarkMode-DLZcJEUQ.cjs +52 -0
  104. package/dist/useDarkMode-DLZcJEUQ.cjs.map +1 -0
  105. package/dist/useFocusTrap-AnlJsihM.js +120 -0
  106. package/dist/useFocusTrap-AnlJsihM.js.map +1 -0
  107. package/dist/useFocusTrap-kcxO8AeU.cjs +119 -0
  108. package/dist/useFocusTrap-kcxO8AeU.cjs.map +1 -0
  109. package/dist/useId-nxrBaIC9.cjs +25 -0
  110. package/dist/useId-nxrBaIC9.cjs.map +1 -0
  111. package/dist/useId-xeHj7rkg.js +26 -0
  112. package/dist/useId-xeHj7rkg.js.map +1 -0
  113. package/dist/{useToast-CRh_sG82.cjs → useToast-Bk60GArg.cjs} +1 -50
  114. package/dist/useToast-Bk60GArg.cjs.map +1 -0
  115. package/dist/{useToast-DwFOkewC.js → useToast-ina5g3mj.js} +6 -55
  116. package/dist/useToast-ina5g3mj.js.map +1 -0
  117. package/package.json +9 -8
  118. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js +0 -54
  119. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js.map +0 -1
  120. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs +0 -53
  121. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs.map +0 -1
  122. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js.map +0 -1
  123. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs.map +0 -1
  124. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-CrEu33_J.cjs.map +0 -1
  125. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-D3_Oddwt.js.map +0 -1
  126. package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-B79_S1JL.js.map +0 -1
  127. package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-ClH-pyK8.cjs.map +0 -1
  128. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-CsDMGhaT.cjs.map +0 -1
  129. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-Q4PcIELi.js.map +0 -1
  130. package/dist/Timeline.vue_vue_type_script_setup_true_lang-C5SKEGPG.cjs.map +0 -1
  131. package/dist/Timeline.vue_vue_type_script_setup_true_lang-ykGksWXN.js.map +0 -1
  132. package/dist/index-C3NAM2ds.js +0 -72
  133. package/dist/index-C3NAM2ds.js.map +0 -1
  134. package/dist/index-Ti1RIOEG.cjs +0 -71
  135. package/dist/index-Ti1RIOEG.cjs.map +0 -1
  136. package/dist/useToast-CRh_sG82.cjs.map +0 -1
  137. package/dist/useToast-DwFOkewC.js.map +0 -1
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
  const vue = require("vue");
3
- const Checkbox_vue_vue_type_script_setup_true_lang = require("./Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs");
4
- const ListSkeleton_vue_vue_type_script_setup_true_lang = require("./ListSkeleton.vue_vue_type_script_setup_true_lang-CrEu33_J.cjs");
3
+ const index = require("./index-CUNU12xk.cjs");
4
+ const Button_vue_vue_type_script_setup_true_lang = require("./Button.vue_vue_type_script_setup_true_lang-Cev21KGJ.cjs");
5
5
  const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
6
6
  const vue$1 = require("@iconify/vue");
7
7
  const useDropdown = require("./useDropdown-DHFnd259.cjs");
8
- const _hoisted_1$c = {
8
+ const useId = require("./useId-nxrBaIC9.cjs");
9
+ const useDarkMode = require("./useDarkMode-DLZcJEUQ.cjs");
10
+ const _hoisted_1$f = {
9
11
  key: 1,
10
12
  class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950"
11
13
  };
12
- const _hoisted_2$9 = { class: "flex flex-col gap-0.5" };
14
+ const _hoisted_2$c = { class: "flex flex-col gap-0.5" };
13
15
  const _hoisted_3$7 = {
14
16
  key: 1,
15
17
  class: "text-sm font-normal text-gray-600 dark:text-gray-400"
@@ -36,12 +38,12 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
36
38
  () => props.dividerClass || "border-gray-200 dark:border-gray-700"
37
39
  );
38
40
  return (_ctx, _cache) => {
39
- return __props.loading ? (vue.openBlock(), vue.createBlock(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main$1, {
41
+ return __props.loading ? (vue.openBlock(), vue.createBlock(Button_vue_vue_type_script_setup_true_lang._sfc_main$2, {
40
42
  key: 0,
41
43
  lines: __props.loadingLines,
42
44
  "show-avatar": __props.loadingAvatar,
43
45
  "show-actions": __props.loadingActions
44
- }, null, 8, ["lines", "show-avatar", "show-actions"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
46
+ }, null, 8, ["lines", "show-avatar", "show-actions"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
45
47
  _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", {
46
48
  key: 0,
47
49
  class: vue.normalizeClass(["border-b", dividerClasses.value])
@@ -51,7 +53,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
51
53
  key: 1,
52
54
  class: vue.normalizeClass(["flex items-center justify-between border-b px-5 py-3", dividerClasses.value])
53
55
  }, [
54
- vue.createElementVNode("div", _hoisted_2$9, [
56
+ vue.createElementVNode("div", _hoisted_2$c, [
55
57
  __props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", {
56
58
  key: 0,
57
59
  class: vue.normalizeClass(["text-md font-semibold", titleClasses.value])
@@ -75,8 +77,8 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
75
77
  };
76
78
  }
77
79
  });
78
- const _hoisted_1$b = { class: "overflow-hidden" };
79
- const _hoisted_2$8 = {
80
+ const _hoisted_1$e = { class: "overflow-hidden" };
81
+ const _hoisted_2$b = {
80
82
  key: 1,
81
83
  class: "overflow-x-auto"
82
84
  };
@@ -210,17 +212,17 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
210
212
  return props.sortBy === property.name;
211
213
  };
212
214
  return (_ctx, _cache) => {
213
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
214
- __props.loading ? (vue.openBlock(), vue.createBlock(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main, {
215
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
216
+ __props.loading ? (vue.openBlock(), vue.createBlock(Button_vue_vue_type_script_setup_true_lang._sfc_main$1, {
215
217
  key: 0,
216
218
  rows: __props.loadingRows,
217
219
  columns: visibleProperties.value.length
218
- }, null, 8, ["rows", "columns"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$8, [
220
+ }, null, 8, ["rows", "columns"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$b, [
219
221
  vue.createElementVNode("table", _hoisted_3$6, [
220
222
  vue.createElementVNode("thead", _hoisted_4$5, [
221
223
  vue.createElementVNode("tr", null, [
222
224
  __props.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_5$3, [
223
- vue.createVNode(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
225
+ vue.createVNode(index._sfc_main, {
224
226
  "model-value": allSelected.value,
225
227
  indeterminate: someSelected.value,
226
228
  disabled: selectableItems.value.length === 0,
@@ -279,7 +281,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
279
281
  class: vue.normalizeClass(["hover:bg-black/5 dark:hover:bg-white/5 transition-colors", { "bg-primary/5 dark:bg-primary/10": isSelected(item) }])
280
282
  }, [
281
283
  __props.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_11$1, [
282
- isSelectable(item) ? (vue.openBlock(), vue.createBlock(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
284
+ isSelectable(item) ? (vue.openBlock(), vue.createBlock(index._sfc_main, {
283
285
  key: 0,
284
286
  "model-value": isSelected(item),
285
287
  "onUpdate:modelValue": ($event) => handleSelect(item)
@@ -321,8 +323,8 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
321
323
  };
322
324
  }
323
325
  });
324
- const _hoisted_1$a = { class: "space-y-3" };
325
- const _hoisted_2$7 = { class: "flex items-center gap-3 p-3" };
326
+ const _hoisted_1$d = { class: "space-y-3" };
327
+ const _hoisted_2$a = { class: "flex items-center gap-3 p-3" };
326
328
  const _hoisted_3$5 = { class: "text-sm text-gray-600 dark:text-gray-400" };
327
329
  const _hoisted_4$4 = {
328
330
  key: 0,
@@ -389,10 +391,10 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
389
391
  };
390
392
  const hasEmptySlot = vue.computed(() => !!slots.empty);
391
393
  return (_ctx, _cache) => {
392
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$a, [
394
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
393
395
  __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
394
396
  default: vue.withCtx(() => [
395
- vue.createVNode(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main$2, {
397
+ vue.createVNode(Button_vue_vue_type_script_setup_true_lang._sfc_main$3, {
396
398
  items: __props.loadingItems,
397
399
  "show-avatar": "",
398
400
  "show-secondary": "",
@@ -403,8 +405,8 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
403
405
  })) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
404
406
  __props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
405
407
  default: vue.withCtx(() => [
406
- vue.createElementVNode("div", _hoisted_2$7, [
407
- vue.createVNode(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
408
+ vue.createElementVNode("div", _hoisted_2$a, [
409
+ vue.createVNode(index._sfc_main, {
408
410
  "model-value": allSelected.value,
409
411
  indeterminate: someSelected.value,
410
412
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
@@ -425,7 +427,7 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
425
427
  default: vue.withCtx(() => [
426
428
  vue.createElementVNode("div", _hoisted_5$2, [
427
429
  __props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$2, [
428
- isSelectable(item) ? (vue.openBlock(), vue.createBlock(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
430
+ isSelectable(item) ? (vue.openBlock(), vue.createBlock(index._sfc_main, {
429
431
  key: 0,
430
432
  "model-value": isSelected(item),
431
433
  "onUpdate:modelValue": ($event) => handleSelect(item)
@@ -451,207 +453,6 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
451
453
  };
452
454
  }
453
455
  });
454
- const localProvidedStateMap = /* @__PURE__ */ new WeakMap();
455
- const injectLocal = /* @__NO_SIDE_EFFECTS__ */ (...args) => {
456
- var _getCurrentInstance;
457
- const key = args[0];
458
- const instance = (_getCurrentInstance = vue.getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;
459
- const owner = instance !== null && instance !== void 0 ? instance : vue.getCurrentScope();
460
- if (owner == null && !vue.hasInjectionContext()) throw new Error("injectLocal must be called in setup");
461
- if (owner && localProvidedStateMap.has(owner) && key in localProvidedStateMap.get(owner)) return localProvidedStateMap.get(owner)[key];
462
- return vue.inject(...args);
463
- };
464
- const isClient = typeof window !== "undefined" && typeof document !== "undefined";
465
- typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
466
- const toString = Object.prototype.toString;
467
- const isObject = (val) => toString.call(val) === "[object Object]";
468
- function increaseWithUnit(target, delta) {
469
- var _target$match;
470
- if (typeof target === "number") return target + delta;
471
- const value = ((_target$match = target.match(/^-?\d+\.?\d*/)) === null || _target$match === void 0 ? void 0 : _target$match[0]) || "";
472
- const unit = target.slice(value.length);
473
- const result = Number.parseFloat(value) + delta;
474
- if (Number.isNaN(result)) return target;
475
- return result + unit;
476
- }
477
- function pxValue(px) {
478
- return px.endsWith("rem") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);
479
- }
480
- function toArray(value) {
481
- return Array.isArray(value) ? value : [value];
482
- }
483
- function getLifeCycleTarget(target) {
484
- return vue.getCurrentInstance();
485
- }
486
- function tryOnMounted(fn, sync = true, target) {
487
- if (getLifeCycleTarget()) vue.onMounted(fn, target);
488
- else if (sync) fn();
489
- else vue.nextTick(fn);
490
- }
491
- function watchImmediate(source, cb, options) {
492
- return vue.watch(source, cb, {
493
- ...options,
494
- immediate: true
495
- });
496
- }
497
- const defaultWindow = isClient ? window : void 0;
498
- function unrefElement(elRef) {
499
- var _$el;
500
- const plain = vue.toValue(elRef);
501
- return (_$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _$el !== void 0 ? _$el : plain;
502
- }
503
- function useEventListener(...args) {
504
- const register = (el, event, listener, options) => {
505
- el.addEventListener(event, listener, options);
506
- return () => el.removeEventListener(event, listener, options);
507
- };
508
- const firstParamTargets = vue.computed(() => {
509
- const test = toArray(vue.toValue(args[0])).filter((e) => e != null);
510
- return test.every((e) => typeof e !== "string") ? test : void 0;
511
- });
512
- return watchImmediate(() => {
513
- var _firstParamTargets$va, _firstParamTargets$va2;
514
- return [
515
- (_firstParamTargets$va = (_firstParamTargets$va2 = firstParamTargets.value) === null || _firstParamTargets$va2 === void 0 ? void 0 : _firstParamTargets$va2.map((e) => unrefElement(e))) !== null && _firstParamTargets$va !== void 0 ? _firstParamTargets$va : [defaultWindow].filter((e) => e != null),
516
- toArray(vue.toValue(firstParamTargets.value ? args[1] : args[0])),
517
- toArray(vue.unref(firstParamTargets.value ? args[2] : args[1])),
518
- vue.toValue(firstParamTargets.value ? args[3] : args[2])
519
- ];
520
- }, ([raw_targets, raw_events, raw_listeners, raw_options], _, onCleanup) => {
521
- if (!(raw_targets === null || raw_targets === void 0 ? void 0 : raw_targets.length) || !(raw_events === null || raw_events === void 0 ? void 0 : raw_events.length) || !(raw_listeners === null || raw_listeners === void 0 ? void 0 : raw_listeners.length)) return;
522
- const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;
523
- const cleanups = raw_targets.flatMap((el) => raw_events.flatMap((event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))));
524
- onCleanup(() => {
525
- cleanups.forEach((fn) => fn());
526
- });
527
- }, { flush: "post" });
528
- }
529
- // @__NO_SIDE_EFFECTS__
530
- function useMounted() {
531
- const isMounted = vue.shallowRef(false);
532
- const instance = vue.getCurrentInstance();
533
- if (instance) vue.onMounted(() => {
534
- isMounted.value = true;
535
- }, instance);
536
- return isMounted;
537
- }
538
- // @__NO_SIDE_EFFECTS__
539
- function useSupported(callback) {
540
- const isMounted = /* @__PURE__ */ useMounted();
541
- return vue.computed(() => {
542
- isMounted.value;
543
- return Boolean(callback());
544
- });
545
- }
546
- const ssrWidthSymbol = Symbol("vueuse-ssr-width");
547
- // @__NO_SIDE_EFFECTS__
548
- function useSSRWidth() {
549
- const ssrWidth = vue.hasInjectionContext() ? /* @__PURE__ */ injectLocal(ssrWidthSymbol, null) : null;
550
- return typeof ssrWidth === "number" ? ssrWidth : void 0;
551
- }
552
- function useMediaQuery(query, options = {}) {
553
- const { window: window$1 = defaultWindow, ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;
554
- const isSupported = /* @__PURE__ */ useSupported(() => window$1 && "matchMedia" in window$1 && typeof window$1.matchMedia === "function");
555
- const ssrSupport = vue.shallowRef(typeof ssrWidth === "number");
556
- const mediaQuery = vue.shallowRef();
557
- const matches = vue.shallowRef(false);
558
- const handler = (event) => {
559
- matches.value = event.matches;
560
- };
561
- vue.watchEffect(() => {
562
- if (ssrSupport.value) {
563
- ssrSupport.value = !isSupported.value;
564
- matches.value = vue.toValue(query).split(",").some((queryString) => {
565
- const not = queryString.includes("not all");
566
- const minWidth = queryString.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);
567
- const maxWidth = queryString.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);
568
- let res = Boolean(minWidth || maxWidth);
569
- if (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]);
570
- if (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]);
571
- return not ? !res : res;
572
- });
573
- return;
574
- }
575
- if (!isSupported.value) return;
576
- mediaQuery.value = window$1.matchMedia(vue.toValue(query));
577
- matches.value = mediaQuery.value.matches;
578
- });
579
- useEventListener(mediaQuery, "change", handler, { passive: true });
580
- return vue.computed(() => matches.value);
581
- }
582
- // @__NO_SIDE_EFFECTS__
583
- function useBreakpoints(breakpoints, options = {}) {
584
- function getValue$1(k, delta) {
585
- let v = vue.toValue(breakpoints[vue.toValue(k)]);
586
- if (delta != null) v = increaseWithUnit(v, delta);
587
- if (typeof v === "number") v = `${v}px`;
588
- return v;
589
- }
590
- const { window: window$1 = defaultWindow, strategy = "min-width", ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;
591
- const ssrSupport = typeof ssrWidth === "number";
592
- const mounted = ssrSupport ? vue.shallowRef(false) : { value: true };
593
- if (ssrSupport) tryOnMounted(() => mounted.value = !!window$1);
594
- function match(query, size) {
595
- if (!mounted.value && ssrSupport) return query === "min" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);
596
- if (!window$1) return false;
597
- return window$1.matchMedia(`(${query}-width: ${size})`).matches;
598
- }
599
- const greaterOrEqual = (k) => {
600
- return useMediaQuery(() => `(min-width: ${getValue$1(k)})`, options);
601
- };
602
- const smallerOrEqual = (k) => {
603
- return useMediaQuery(() => `(max-width: ${getValue$1(k)})`, options);
604
- };
605
- const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {
606
- Object.defineProperty(shortcuts, k, {
607
- get: () => strategy === "min-width" ? greaterOrEqual(k) : smallerOrEqual(k),
608
- enumerable: true,
609
- configurable: true
610
- });
611
- return shortcuts;
612
- }, {});
613
- function current() {
614
- const points = Object.keys(breakpoints).map((k) => [
615
- k,
616
- shortcutMethods[k],
617
- pxValue(getValue$1(k))
618
- ]).sort((a, b) => a[2] - b[2]);
619
- return vue.computed(() => points.filter(([, v]) => v.value).map(([k]) => k));
620
- }
621
- return Object.assign(shortcutMethods, {
622
- greaterOrEqual,
623
- smallerOrEqual,
624
- greater(k) {
625
- return useMediaQuery(() => `(min-width: ${getValue$1(k, 0.1)})`, options);
626
- },
627
- smaller(k) {
628
- return useMediaQuery(() => `(max-width: ${getValue$1(k, -0.1)})`, options);
629
- },
630
- between(a, b) {
631
- return useMediaQuery(() => `(min-width: ${getValue$1(a)}) and (max-width: ${getValue$1(b, -0.1)})`, options);
632
- },
633
- isGreater(k) {
634
- return match("min", getValue$1(k, 0.1));
635
- },
636
- isGreaterOrEqual(k) {
637
- return match("min", getValue$1(k));
638
- },
639
- isSmaller(k) {
640
- return match("max", getValue$1(k, -0.1));
641
- },
642
- isSmallerOrEqual(k) {
643
- return match("max", getValue$1(k));
644
- },
645
- isInBetween(a, b) {
646
- return match("min", getValue$1(a)) && match("max", getValue$1(b, -0.1));
647
- },
648
- current,
649
- active() {
650
- const bps = current();
651
- return vue.computed(() => bps.value.length === 0 ? "" : bps.value.at(strategy === "min-width" ? -1 : 0));
652
- }
653
- });
654
- }
655
456
  const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
656
457
  __name: "ResponsiveList",
657
458
  props: {
@@ -701,7 +502,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
701
502
  return !!slots[`cell-${key}`];
702
503
  };
703
504
  const hasActionsSlot = vue.computed(() => !!slots.actions);
704
- const breakpoints = /* @__PURE__ */ useBreakpoints({
505
+ const breakpoints = index.useBreakpoints({
705
506
  sm: 640,
706
507
  md: 768,
707
508
  lg: 1024,
@@ -789,11 +590,11 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
789
590
  };
790
591
  }
791
592
  });
792
- const _hoisted_1$9 = {
593
+ const _hoisted_1$c = {
793
594
  key: 0,
794
595
  class: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
795
596
  };
796
- const _hoisted_2$6 = { class: "relative" };
597
+ const _hoisted_2$9 = { class: "relative" };
797
598
  const _hoisted_3$4 = ["disabled", "placeholder"];
798
599
  const _hoisted_4$3 = ["disabled"];
799
600
  const _hoisted_5$1 = {
@@ -893,9 +694,9 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
893
694
  const handleKeydown = (event) => {
894
695
  baseHandleKeydown(event, {
895
696
  itemCount: filteredOptions.value.length,
896
- onSelect: (index) => {
897
- if (filteredOptions.value[index]) {
898
- selectOption(filteredOptions.value[index]);
697
+ onSelect: (index2) => {
698
+ if (filteredOptions.value[index2]) {
699
+ selectOption(filteredOptions.value[index2]);
899
700
  }
900
701
  }
901
702
  });
@@ -909,8 +710,8 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
909
710
  ref: containerRef,
910
711
  class: "autocomplete-container"
911
712
  }, [
912
- __props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$9, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
913
- vue.createElementVNode("div", _hoisted_2$6, [
713
+ __props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$c, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
714
+ vue.createElementVNode("div", _hoisted_2$9, [
914
715
  vue.createElementVNode("div", {
915
716
  ref_key: "inputWrapperRef",
916
717
  ref: inputWrapperRef,
@@ -985,14 +786,14 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
985
786
  ])
986
787
  }, [
987
788
  filteredOptions.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$1, vue.toDisplayString(__props.noResultsText || "No results found"), 1)) : vue.createCommentVNode("", true),
988
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredOptions.value, (option, index) => {
789
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredOptions.value, (option, index2) => {
989
790
  return vue.openBlock(), vue.createElementBlock("button", {
990
791
  key: option.value,
991
792
  class: vue.normalizeClass([{
992
- "bg-gray-100 dark:bg-gray-700": vue.unref(highlightedIndex) === index,
793
+ "bg-gray-100 dark:bg-gray-700": vue.unref(highlightedIndex) === index2,
993
794
  "bg-primary/10": __props.modelValue === option.value
994
795
  }, "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"]),
995
- "data-index": index,
796
+ "data-index": index2,
996
797
  type: "button",
997
798
  onClick: ($event) => selectOption(option)
998
799
  }, [
@@ -1085,103 +886,10 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
1085
886
  };
1086
887
  }
1087
888
  });
1088
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
1089
- __name: "Button",
1090
- props: {
1091
- variant: { default: "primary" },
1092
- size: { default: "md" },
1093
- icon: {},
1094
- iconRight: {},
1095
- loading: { type: Boolean },
1096
- disabled: { type: Boolean },
1097
- block: { type: Boolean },
1098
- href: {},
1099
- to: {},
1100
- type: { default: "button" }
1101
- },
1102
- emits: ["click"],
1103
- setup(__props, { emit: __emit }) {
1104
- const props = __props;
1105
- const emit = __emit;
1106
- const variantClasses = {
1107
- primary: "bg-primary text-primary-foreground hover:bg-primary/90 focus:ring-primary",
1108
- secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/90 focus:ring-secondary",
1109
- outline: "border border-gray-300 bg-transparent text-gray-700 hover:bg-gray-50 focus:ring-primary dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800",
1110
- ghost: "bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-primary dark:text-gray-300 dark:hover:bg-gray-800",
1111
- danger: "bg-red-500 text-white hover:bg-red-600 focus:ring-red-500",
1112
- success: "bg-green-500 text-white hover:bg-green-600 focus:ring-green-500"
1113
- };
1114
- const sizeClasses = {
1115
- xs: "px-2 py-1 text-xs gap-1",
1116
- sm: "px-3 py-1.5 text-sm gap-1.5",
1117
- md: "px-4 py-2 text-sm gap-2",
1118
- lg: "px-5 py-2.5 text-base gap-2",
1119
- xl: "px-6 py-3 text-lg gap-2.5"
1120
- };
1121
- const iconSizeClasses = {
1122
- xs: "size-3",
1123
- sm: "size-4",
1124
- md: "size-4",
1125
- lg: "size-5",
1126
- xl: "size-6"
1127
- };
1128
- const classes = vue.computed(() => [
1129
- "inline-flex items-center justify-center font-medium rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed",
1130
- variantClasses[props.variant],
1131
- sizeClasses[props.size],
1132
- props.block && "w-full"
1133
- ]);
1134
- const component = vue.computed(() => {
1135
- if (props.to) {
1136
- try {
1137
- const RouterLink = vue.resolveComponent("RouterLink");
1138
- if (typeof RouterLink !== "string") return RouterLink;
1139
- } catch {
1140
- }
1141
- }
1142
- if (props.href) return "a";
1143
- return "button";
1144
- });
1145
- const componentProps = vue.computed(() => {
1146
- if (props.to) return { to: props.to };
1147
- if (props.href) return { href: props.href };
1148
- return { type: props.type, disabled: props.disabled || props.loading };
1149
- });
1150
- const handleClick = (event) => {
1151
- if (props.disabled || props.loading) return;
1152
- emit("click", event);
1153
- };
1154
- return (_ctx, _cache) => {
1155
- return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(component.value), vue.mergeProps(componentProps.value, {
1156
- class: classes.value,
1157
- onClick: handleClick
1158
- }), {
1159
- default: vue.withCtx(() => [
1160
- __props.loading ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1161
- key: 0,
1162
- icon: "lucide:loader-2",
1163
- class: vue.normalizeClass([iconSizeClasses[__props.size], "animate-spin"])
1164
- }, null, 8, ["class"])) : __props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1165
- key: 1,
1166
- icon: __props.icon,
1167
- class: vue.normalizeClass(iconSizeClasses[__props.size])
1168
- }, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true),
1169
- vue.renderSlot(_ctx.$slots, "default"),
1170
- __props.iconRight && !__props.loading ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1171
- key: 2,
1172
- icon: __props.iconRight,
1173
- class: vue.normalizeClass(iconSizeClasses[__props.size])
1174
- }, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
1175
- ]),
1176
- _: 3
1177
- }, 16, ["class"]);
1178
- };
1179
- }
1180
- });
1181
- const _hoisted_1$8 = { class: "relative inline-block" };
1182
- const _hoisted_2$5 = ["src", "alt"];
889
+ const _hoisted_1$b = { class: "relative inline-block" };
890
+ const _hoisted_2$8 = ["src", "alt"];
1183
891
  const _hoisted_3$3 = { key: 1 };
1184
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
892
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
1185
893
  __name: "Avatar",
1186
894
  props: {
1187
895
  src: {},
@@ -1227,7 +935,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
1227
935
  });
1228
936
  const showImage = vue.computed(() => props.src && !imageError.value);
1229
937
  return (_ctx, _cache) => {
1230
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
938
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
1231
939
  vue.createElementVNode("div", {
1232
940
  class: vue.normalizeClass([
1233
941
  "flex items-center justify-center overflow-hidden bg-gray-200 font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-300",
@@ -1241,7 +949,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
1241
949
  alt: __props.alt || __props.name,
1242
950
  class: "size-full object-cover",
1243
951
  onError: _cache[0] || (_cache[0] = ($event) => imageError.value = true)
1244
- }, null, 40, _hoisted_2$5)) : initials.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$3, vue.toDisplayString(initials.value), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
952
+ }, null, 40, _hoisted_2$8)) : initials.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$3, vue.toDisplayString(initials.value), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1245
953
  key: 2,
1246
954
  icon: "lucide:user",
1247
955
  class: "size-1/2"
@@ -1259,9 +967,9 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
1259
967
  };
1260
968
  }
1261
969
  });
1262
- const _hoisted_1$7 = ["aria-selected", "disabled", "onClick"];
1263
- const _hoisted_2$4 = { class: "mt-4" };
1264
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
970
+ const _hoisted_1$a = ["aria-selected", "disabled", "onClick"];
971
+ const _hoisted_2$7 = { class: "mt-4" };
972
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
1265
973
  __name: "Tabs",
1266
974
  props: {
1267
975
  tabs: {},
@@ -1326,18 +1034,18 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
1326
1034
  activeTab.value === tab.key ? variantClasses[__props.variant].active : variantClasses[__props.variant].inactive
1327
1035
  ]),
1328
1036
  onClick: ($event) => selectTab(tab)
1329
- }, vue.toDisplayString(tab.label), 11, _hoisted_1$7);
1037
+ }, vue.toDisplayString(tab.label), 11, _hoisted_1$a);
1330
1038
  }), 128))
1331
1039
  ], 2),
1332
- vue.createElementVNode("div", _hoisted_2$4, [
1040
+ vue.createElementVNode("div", _hoisted_2$7, [
1333
1041
  vue.renderSlot(_ctx.$slots, "default", { activeTab: activeTab.value })
1334
1042
  ])
1335
1043
  ]);
1336
1044
  };
1337
1045
  }
1338
1046
  });
1339
- const _hoisted_1$6 = { role: "tabpanel" };
1340
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1047
+ const _hoisted_1$9 = { role: "tabpanel" };
1048
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
1341
1049
  __name: "TabPanel",
1342
1050
  props: {
1343
1051
  value: {}
@@ -1347,7 +1055,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1347
1055
  const activeTab = vue.inject("activeTab");
1348
1056
  const isActive = vue.computed(() => (activeTab == null ? void 0 : activeTab.value) === props.value);
1349
1057
  return (_ctx, _cache) => {
1350
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
1058
+ return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
1351
1059
  vue.renderSlot(_ctx.$slots, "default")
1352
1060
  ], 512)), [
1353
1061
  [vue.vShow, isActive.value]
@@ -1355,11 +1063,11 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1355
1063
  };
1356
1064
  }
1357
1065
  });
1358
- const _hoisted_1$5 = {
1066
+ const _hoisted_1$8 = {
1359
1067
  key: 2,
1360
1068
  class: "text-sm font-semibold"
1361
1069
  };
1362
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1070
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1363
1071
  __name: "Stepper",
1364
1072
  props: {
1365
1073
  steps: {},
@@ -1371,12 +1079,12 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1371
1079
  const props = __props;
1372
1080
  const getCurrentStepIndex = () => {
1373
1081
  if (props.modelValue === void 0) return 0;
1374
- const index = props.steps.findIndex((s) => s.key === props.modelValue);
1375
- return index >= 0 ? index : 0;
1082
+ const index2 = props.steps.findIndex((s) => s.key === props.modelValue);
1083
+ return index2 >= 0 ? index2 : 0;
1376
1084
  };
1377
- const isStepComplete = (index) => index < getCurrentStepIndex();
1378
- const isStepActive = (index) => index === getCurrentStepIndex();
1379
- const isStepPending = (index) => index > getCurrentStepIndex();
1085
+ const isStepComplete = (index2) => index2 < getCurrentStepIndex();
1086
+ const isStepActive = (index2) => index2 === getCurrentStepIndex();
1087
+ const isStepPending = (index2) => index2 > getCurrentStepIndex();
1380
1088
  return (_ctx, _cache) => {
1381
1089
  return vue.openBlock(), vue.createElementBlock("div", {
1382
1090
  class: vue.normalizeClass([
@@ -1402,7 +1110,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1402
1110
  "aria-hidden": "true"
1403
1111
  }, null, 4)
1404
1112
  ], 64)) : vue.createCommentVNode("", true),
1405
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.steps, (step, index) => {
1113
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.steps, (step, index2) => {
1406
1114
  return vue.openBlock(), vue.createElementBlock("div", {
1407
1115
  key: step.key,
1408
1116
  class: vue.normalizeClass([
@@ -1410,17 +1118,17 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1410
1118
  __props.orientation === "horizontal" ? "flex flex-1 flex-col items-center" : "flex items-start gap-4"
1411
1119
  ])
1412
1120
  }, [
1413
- __props.orientation === "vertical" && index < __props.steps.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
1121
+ __props.orientation === "vertical" && index2 < __props.steps.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
1414
1122
  key: 0,
1415
- class: vue.normalizeClass(["absolute left-6 top-12 h-full w-0.5 -translate-x-1/2", isStepComplete(index) ? "bg-primary" : "bg-gray-200 dark:bg-gray-700"])
1123
+ class: vue.normalizeClass(["absolute left-6 top-12 h-full w-0.5 -translate-x-1/2", isStepComplete(index2) ? "bg-primary" : "bg-gray-200 dark:bg-gray-700"])
1416
1124
  }, null, 2)) : vue.createCommentVNode("", true),
1417
1125
  vue.createElementVNode("div", {
1418
1126
  class: vue.normalizeClass(["relative z-10 flex size-12 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-300", {
1419
- "border-primary bg-primary text-white shadow-lg": isStepActive(index) || isStepComplete(index),
1420
- "border-gray-300 bg-white text-gray-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-500": isStepPending(index)
1127
+ "border-primary bg-primary text-white shadow-lg": isStepActive(index2) || isStepComplete(index2),
1128
+ "border-gray-300 bg-white text-gray-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-500": isStepPending(index2)
1421
1129
  }])
1422
1130
  }, [
1423
- isStepComplete(index) ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1131
+ isStepComplete(index2) ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1424
1132
  key: 0,
1425
1133
  icon: "lucide:check",
1426
1134
  class: "size-6"
@@ -1428,7 +1136,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1428
1136
  key: 1,
1429
1137
  icon: step.icon,
1430
1138
  class: "size-6"
1431
- }, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$5, vue.toDisplayString(index + 1), 1))
1139
+ }, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$8, vue.toDisplayString(index2 + 1), 1))
1432
1140
  ], 2),
1433
1141
  vue.createElementVNode("div", {
1434
1142
  class: vue.normalizeClass([
@@ -1437,15 +1145,15 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1437
1145
  }, [
1438
1146
  vue.createElementVNode("p", {
1439
1147
  class: vue.normalizeClass(["text-sm font-semibold transition-colors", {
1440
- "text-primary dark:text-primary": isStepActive(index) || isStepComplete(index),
1441
- "text-gray-500 dark:text-gray-400": isStepPending(index)
1148
+ "text-primary dark:text-primary": isStepActive(index2) || isStepComplete(index2),
1149
+ "text-gray-500 dark:text-gray-400": isStepPending(index2)
1442
1150
  }])
1443
1151
  }, vue.toDisplayString(step.title), 3),
1444
1152
  step.description ? (vue.openBlock(), vue.createElementBlock("p", {
1445
1153
  key: 0,
1446
1154
  class: vue.normalizeClass(["mt-1 text-xs", {
1447
- "text-gray-600 dark:text-gray-300": isStepActive(index),
1448
- "text-gray-500 dark:text-gray-400": !isStepActive(index)
1155
+ "text-gray-600 dark:text-gray-300": isStepActive(index2),
1156
+ "text-gray-500 dark:text-gray-400": !isStepActive(index2)
1449
1157
  }])
1450
1158
  }, vue.toDisplayString(step.description), 3)) : vue.createCommentVNode("", true)
1451
1159
  ], 2)
@@ -1456,7 +1164,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1456
1164
  };
1457
1165
  }
1458
1166
  });
1459
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1167
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1460
1168
  __name: "CollapsibleCard",
1461
1169
  props: {
1462
1170
  title: {},
@@ -1552,16 +1260,20 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1552
1260
  };
1553
1261
  }
1554
1262
  });
1555
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1263
+ const _hoisted_1$7 = ["aria-describedby"];
1264
+ const _hoisted_2$6 = ["id"];
1265
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1556
1266
  __name: "Tooltip",
1557
1267
  props: {
1558
1268
  content: {},
1559
1269
  position: { default: "top" },
1560
1270
  delay: { default: 0 },
1561
- disabled: { type: Boolean, default: false }
1271
+ disabled: { type: Boolean, default: false },
1272
+ id: {}
1562
1273
  },
1563
1274
  setup(__props) {
1564
1275
  const props = __props;
1276
+ const { id: tooltipId } = useId.useId({ prefix: "tooltip", id: props.id });
1565
1277
  const isVisible = vue.ref(false);
1566
1278
  let timeoutId = null;
1567
1279
  const show = () => {
@@ -1600,6 +1312,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1600
1312
  return (_ctx, _cache) => {
1601
1313
  return vue.openBlock(), vue.createElementBlock("div", {
1602
1314
  class: "relative inline-block",
1315
+ "aria-describedby": __props.content && !__props.disabled ? vue.unref(tooltipId) : void 0,
1603
1316
  onMouseenter: show,
1604
1317
  onMouseleave: hide,
1605
1318
  onFocus: show,
@@ -1617,26 +1330,33 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1617
1330
  default: vue.withCtx(() => [
1618
1331
  isVisible.value && __props.content ? (vue.openBlock(), vue.createElementBlock("div", {
1619
1332
  key: 0,
1333
+ id: vue.unref(tooltipId),
1620
1334
  class: vue.normalizeClass(positionClasses.value),
1621
1335
  role: "tooltip"
1622
- }, vue.toDisplayString(__props.content), 3)) : vue.createCommentVNode("", true)
1336
+ }, vue.toDisplayString(__props.content), 11, _hoisted_2$6)) : vue.createCommentVNode("", true)
1623
1337
  ]),
1624
1338
  _: 1
1625
1339
  })
1626
- ], 32);
1340
+ ], 40, _hoisted_1$7);
1627
1341
  };
1628
1342
  }
1629
1343
  });
1630
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1344
+ const _hoisted_1$6 = ["id", "aria-expanded", "aria-controls"];
1345
+ const _hoisted_2$5 = ["id", "aria-labelledby"];
1346
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1631
1347
  __name: "Popover",
1632
1348
  props: {
1633
1349
  position: { default: "bottom" },
1634
1350
  hover: { type: Boolean, default: false },
1635
1351
  teleport: { type: Boolean, default: true },
1636
- width: { default: "auto" }
1352
+ width: { default: "auto" },
1353
+ id: {}
1637
1354
  },
1638
1355
  setup(__props) {
1639
1356
  const props = __props;
1357
+ const { related } = useId.useId({ prefix: "popover", id: props.id });
1358
+ const triggerId = vue.computed(() => related("trigger"));
1359
+ const popoverId = vue.computed(() => related("content"));
1640
1360
  const triggerRef = vue.ref();
1641
1361
  const popoverRef = vue.ref();
1642
1362
  const { isOpen, dropdownStyle, toggle, close, open } = useDropdown.useDropdown(triggerRef, popoverRef, {
@@ -1673,10 +1393,13 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1673
1393
  vue.createElementVNode("div", {
1674
1394
  ref_key: "triggerRef",
1675
1395
  ref: triggerRef,
1396
+ id: triggerId.value,
1397
+ "aria-expanded": vue.unref(isOpen),
1398
+ "aria-controls": popoverId.value,
1676
1399
  onClick: handleTrigger
1677
1400
  }, [
1678
1401
  vue.renderSlot(_ctx.$slots, "trigger")
1679
- ], 512),
1402
+ ], 8, _hoisted_1$6),
1680
1403
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
1681
1404
  to: "body",
1682
1405
  disabled: !__props.teleport
@@ -1692,8 +1415,11 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1692
1415
  default: vue.withCtx(() => [
1693
1416
  vue.unref(isOpen) ? (vue.openBlock(), vue.createElementBlock("div", {
1694
1417
  key: 0,
1418
+ id: popoverId.value,
1695
1419
  ref_key: "popoverRef",
1696
1420
  ref: popoverRef,
1421
+ role: "dialog",
1422
+ "aria-labelledby": triggerId.value,
1697
1423
  style: vue.normalizeStyle(vue.unref(dropdownStyle)),
1698
1424
  class: vue.normalizeClass([
1699
1425
  "z-[9999] rounded-lg border border-gray-200 bg-white p-4 shadow-lg dark:border-gray-700 dark:bg-gray-800",
@@ -1701,7 +1427,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1701
1427
  ])
1702
1428
  }, [
1703
1429
  vue.renderSlot(_ctx.$slots, "default", { close: vue.unref(close) })
1704
- ], 6)) : vue.createCommentVNode("", true)
1430
+ ], 14, _hoisted_2$5)) : vue.createCommentVNode("", true)
1705
1431
  ]),
1706
1432
  _: 3
1707
1433
  })
@@ -1710,17 +1436,17 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1710
1436
  };
1711
1437
  }
1712
1438
  });
1713
- const _hoisted_1$4 = {
1439
+ const _hoisted_1$5 = {
1714
1440
  key: 0,
1715
1441
  class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700"
1716
1442
  };
1717
- const _hoisted_2$3 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
1443
+ const _hoisted_2$4 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
1718
1444
  const _hoisted_3$2 = { class: "flex-1 overflow-y-auto p-4" };
1719
1445
  const _hoisted_4$2 = {
1720
1446
  key: 1,
1721
1447
  class: "px-4 py-3 border-t border-gray-200 dark:border-gray-700"
1722
1448
  };
1723
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1449
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1724
1450
  __name: "Drawer",
1725
1451
  props: {
1726
1452
  modelValue: { type: Boolean },
@@ -1839,9 +1565,9 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1839
1565
  role: "dialog",
1840
1566
  "aria-modal": "true"
1841
1567
  }, [
1842
- __props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
1568
+ __props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
1843
1569
  vue.renderSlot(_ctx.$slots, "header", {}, () => [
1844
- vue.createElementVNode("h2", _hoisted_2$3, vue.toDisplayString(__props.title), 1)
1570
+ vue.createElementVNode("h2", _hoisted_2$4, vue.toDisplayString(__props.title), 1)
1845
1571
  ]),
1846
1572
  __props.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
1847
1573
  key: 0,
@@ -1869,9 +1595,9 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1869
1595
  };
1870
1596
  }
1871
1597
  });
1872
- const _hoisted_1$3 = { "aria-label": "Breadcrumb" };
1873
- const _hoisted_2$2 = { class: "flex items-center flex-wrap gap-1 text-sm" };
1874
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1598
+ const _hoisted_1$4 = { "aria-label": "Breadcrumb" };
1599
+ const _hoisted_2$3 = { class: "flex items-center flex-wrap gap-1 text-sm" };
1600
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1875
1601
  __name: "Breadcrumb",
1876
1602
  props: {
1877
1603
  items: {},
@@ -1882,14 +1608,14 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1882
1608
  emits: ["click"],
1883
1609
  setup(__props) {
1884
1610
  return (_ctx, _cache) => {
1885
- return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$3, [
1886
- vue.createElementVNode("ol", _hoisted_2$2, [
1887
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
1611
+ return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$4, [
1612
+ vue.createElementVNode("ol", _hoisted_2$3, [
1613
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
1888
1614
  return vue.openBlock(), vue.createElementBlock("li", {
1889
- key: index,
1615
+ key: index2,
1890
1616
  class: "flex items-center"
1891
1617
  }, [
1892
- index > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1618
+ index2 > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1893
1619
  key: 0,
1894
1620
  icon: __props.separator,
1895
1621
  class: "w-4 h-4 mx-2 text-gray-400 dark:text-gray-500 flex-shrink-0"
@@ -1899,13 +1625,13 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1899
1625
  href: item.href,
1900
1626
  class: vue.normalizeClass([
1901
1627
  "flex items-center gap-1.5 transition-colors",
1902
- index === __props.items.length - 1 ? "text-gray-900 dark:text-white font-medium cursor-default" : "text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400"
1628
+ index2 === __props.items.length - 1 ? "text-gray-900 dark:text-white font-medium cursor-default" : "text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400"
1903
1629
  ]),
1904
- "aria-current": index === __props.items.length - 1 ? "page" : void 0,
1905
- onClick: ($event) => _ctx.$emit("click", item, index)
1630
+ "aria-current": index2 === __props.items.length - 1 ? "page" : void 0,
1631
+ onClick: ($event) => _ctx.$emit("click", item, index2)
1906
1632
  }, {
1907
1633
  default: vue.withCtx(() => [
1908
- index === 0 && __props.showHomeIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1634
+ index2 === 0 && __props.showHomeIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1909
1635
  key: 0,
1910
1636
  icon: item.icon || __props.homeIcon,
1911
1637
  class: "w-4 h-4"
@@ -1925,8 +1651,8 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1925
1651
  };
1926
1652
  }
1927
1653
  });
1928
- const _hoisted_1$2 = { class: "divide-y divide-gray-200 dark:divide-gray-700 border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden" };
1929
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1654
+ const _hoisted_1$3 = { class: "divide-y divide-gray-200 dark:divide-gray-700 border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden" };
1655
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1930
1656
  __name: "Accordion",
1931
1657
  props: {
1932
1658
  mode: { default: "single" },
@@ -1952,26 +1678,30 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1952
1678
  isOpen
1953
1679
  });
1954
1680
  return (_ctx, _cache) => {
1955
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
1681
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
1956
1682
  vue.renderSlot(_ctx.$slots, "default")
1957
1683
  ]);
1958
1684
  };
1959
1685
  }
1960
1686
  });
1961
- const _hoisted_1$1 = ["disabled", "aria-expanded"];
1962
- const _hoisted_2$1 = { class: "flex items-center gap-2 font-medium" };
1963
- const _hoisted_3$1 = { class: "overflow-hidden" };
1687
+ const _hoisted_1$2 = ["id", "disabled", "aria-expanded", "aria-controls"];
1688
+ const _hoisted_2$2 = { class: "flex items-center gap-2 font-medium" };
1689
+ const _hoisted_3$1 = ["id", "aria-labelledby"];
1964
1690
  const _hoisted_4$1 = { class: "px-4 py-3 bg-gray-50 dark:bg-gray-900 text-gray-700 dark:text-gray-300" };
1965
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1691
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1966
1692
  __name: "AccordionItem",
1967
1693
  props: {
1968
1694
  itemKey: {},
1969
1695
  title: {},
1970
1696
  icon: {},
1971
- disabled: { type: Boolean }
1697
+ disabled: { type: Boolean },
1698
+ id: {}
1972
1699
  },
1973
1700
  setup(__props) {
1974
1701
  const props = __props;
1702
+ const { related } = useId.useId({ prefix: "accordion", id: props.id });
1703
+ const headerId = vue.computed(() => related("header"));
1704
+ const panelId = vue.computed(() => related("panel"));
1975
1705
  const accordion = vue.inject("accordion");
1976
1706
  const isOpen = vue.computed(() => (accordion == null ? void 0 : accordion.isOpen(props.itemKey)) ?? false);
1977
1707
  const toggle = () => {
@@ -1982,27 +1712,31 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1982
1712
  return (_ctx, _cache) => {
1983
1713
  return vue.openBlock(), vue.createElementBlock("div", null, [
1984
1714
  vue.createElementVNode("button", {
1715
+ id: headerId.value,
1985
1716
  type: "button",
1986
1717
  class: vue.normalizeClass(["flex items-center justify-between w-full px-4 py-3 text-left transition-colors", [
1987
1718
  __props.disabled ? "bg-gray-50 text-gray-400 cursor-not-allowed dark:bg-gray-800 dark:text-gray-500" : "bg-white hover:bg-gray-50 text-gray-900 dark:bg-gray-800 dark:hover:bg-gray-700 dark:text-white"
1988
1719
  ]]),
1989
1720
  disabled: __props.disabled,
1990
1721
  "aria-expanded": isOpen.value,
1722
+ "aria-controls": panelId.value,
1991
1723
  onClick: toggle
1992
1724
  }, [
1993
- vue.createElementVNode("span", _hoisted_2$1, [
1725
+ vue.createElementVNode("span", _hoisted_2$2, [
1994
1726
  __props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1995
1727
  key: 0,
1996
1728
  icon: __props.icon,
1997
- class: "w-5 h-5"
1729
+ class: "w-5 h-5",
1730
+ "aria-hidden": "true"
1998
1731
  }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
1999
1732
  vue.createTextVNode(" " + vue.toDisplayString(__props.title), 1)
2000
1733
  ]),
2001
1734
  vue.createVNode(vue.unref(vue$1.Icon), {
2002
1735
  icon: "heroicons:chevron-down",
2003
- class: vue.normalizeClass(["w-5 h-5 transition-transform duration-200", { "rotate-180": isOpen.value }])
1736
+ class: vue.normalizeClass(["w-5 h-5 transition-transform duration-200", { "rotate-180": isOpen.value }]),
1737
+ "aria-hidden": "true"
2004
1738
  }, null, 8, ["class"])
2005
- ], 10, _hoisted_1$1),
1739
+ ], 10, _hoisted_1$2),
2006
1740
  vue.createVNode(vue.Transition, {
2007
1741
  "enter-active-class": "transition-all duration-200 ease-out",
2008
1742
  "enter-from-class": "opacity-0 max-h-0",
@@ -2012,11 +1746,16 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
2012
1746
  "leave-to-class": "opacity-0 max-h-0"
2013
1747
  }, {
2014
1748
  default: vue.withCtx(() => [
2015
- vue.withDirectives(vue.createElementVNode("div", _hoisted_3$1, [
1749
+ vue.withDirectives(vue.createElementVNode("div", {
1750
+ id: panelId.value,
1751
+ role: "region",
1752
+ "aria-labelledby": headerId.value,
1753
+ class: "overflow-hidden"
1754
+ }, [
2016
1755
  vue.createElementVNode("div", _hoisted_4$1, [
2017
1756
  vue.renderSlot(_ctx.$slots, "default")
2018
1757
  ])
2019
- ], 512), [
1758
+ ], 8, _hoisted_3$1), [
2020
1759
  [vue.vShow, isOpen.value]
2021
1760
  ])
2022
1761
  ]),
@@ -2026,11 +1765,11 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
2026
1765
  };
2027
1766
  }
2028
1767
  });
2029
- const _hoisted_1 = {
1768
+ const _hoisted_1$1 = {
2030
1769
  key: 0,
2031
1770
  class: "relative"
2032
1771
  };
2033
- const _hoisted_2 = { class: "flex items-start gap-4" };
1772
+ const _hoisted_2$1 = { class: "flex items-start gap-4" };
2034
1773
  const _hoisted_3 = { class: "flex-1 min-w-0 pt-0.5" };
2035
1774
  const _hoisted_4 = { class: "flex items-center justify-between gap-2" };
2036
1775
  const _hoisted_5 = { class: "text-sm font-medium text-gray-900 dark:text-white" };
@@ -2053,7 +1792,7 @@ const _hoisted_12 = {
2053
1792
  key: 0,
2054
1793
  class: "text-xs text-gray-500 dark:text-gray-400"
2055
1794
  };
2056
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1795
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
2057
1796
  __name: "Timeline",
2058
1797
  props: {
2059
1798
  items: {},
@@ -2099,17 +1838,17 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2099
1838
  }
2100
1839
  };
2101
1840
  return (_ctx, _cache) => {
2102
- return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
2103
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
1841
+ return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
1842
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
2104
1843
  return vue.openBlock(), vue.createElementBlock("div", {
2105
1844
  key: item.key,
2106
1845
  class: "relative pb-8 last:pb-0"
2107
1846
  }, [
2108
- index < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
1847
+ index2 < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
2109
1848
  key: 0,
2110
1849
  class: vue.normalizeClass(["absolute left-4 top-8 w-0.5 h-full -ml-px", getStatusClasses(item.status).line])
2111
1850
  }, null, 2)) : vue.createCommentVNode("", true),
2112
- vue.createElementVNode("div", _hoisted_2, [
1851
+ vue.createElementVNode("div", _hoisted_2$1, [
2113
1852
  vue.createElementVNode("div", {
2114
1853
  class: vue.normalizeClass(["relative z-10 flex items-center justify-center w-8 h-8 rounded-full flex-shrink-0", getStatusClasses(item.status).dot])
2115
1854
  }, [
@@ -2131,10 +1870,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2131
1870
  ]);
2132
1871
  }), 128))
2133
1872
  ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
2134
- (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
1873
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
2135
1874
  return vue.openBlock(), vue.createElementBlock("div", {
2136
1875
  key: item.key,
2137
- class: vue.normalizeClass(["flex flex-col items-center flex-shrink-0", { "flex-1": index < __props.items.length - 1 }])
1876
+ class: vue.normalizeClass(["flex flex-col items-center flex-shrink-0", { "flex-1": index2 < __props.items.length - 1 }])
2138
1877
  }, [
2139
1878
  vue.createElementVNode("div", _hoisted_9, [
2140
1879
  vue.createElementVNode("div", {
@@ -2146,7 +1885,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2146
1885
  class: vue.normalizeClass(["w-4 h-4", getStatusClasses(item.status).icon])
2147
1886
  }, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
2148
1887
  ], 2),
2149
- index < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
1888
+ index2 < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
2150
1889
  key: 0,
2151
1890
  class: vue.normalizeClass(["flex-1 h-0.5 mx-2", getStatusClasses(item.status).line])
2152
1891
  }, null, 2)) : vue.createCommentVNode("", true)
@@ -2161,6 +1900,51 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2161
1900
  };
2162
1901
  }
2163
1902
  });
1903
+ const _hoisted_1 = ["aria-label"];
1904
+ const _hoisted_2 = {
1905
+ key: 0,
1906
+ class: "text-sm font-medium"
1907
+ };
1908
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1909
+ __name: "DarkModeToggle",
1910
+ props: {
1911
+ size: { default: "md" },
1912
+ lightIcon: { default: "lucide:sun" },
1913
+ darkIcon: { default: "lucide:moon" },
1914
+ showLabel: { type: Boolean, default: false },
1915
+ storageKey: { default: "dark-mode" }
1916
+ },
1917
+ setup(__props) {
1918
+ const props = __props;
1919
+ const { isDark, toggle } = useDarkMode.useDarkMode({ storageKey: props.storageKey });
1920
+ const sizeClasses = {
1921
+ sm: { button: "p-1.5", icon: "h-4 w-4" },
1922
+ md: { button: "p-2", icon: "h-5 w-5" },
1923
+ lg: { button: "p-2.5", icon: "h-6 w-6" }
1924
+ };
1925
+ return (_ctx, _cache) => {
1926
+ return vue.openBlock(), vue.createElementBlock("button", {
1927
+ type: "button",
1928
+ class: vue.normalizeClass([
1929
+ sizeClasses[__props.size].button,
1930
+ "inline-flex items-center gap-2 rounded-lg transition-colors",
1931
+ "text-gray-600 hover:bg-gray-100 hover:text-gray-900",
1932
+ "dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-100",
1933
+ "focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"
1934
+ ]),
1935
+ "aria-label": vue.unref(isDark) ? "Switch to light mode" : "Switch to dark mode",
1936
+ onClick: _cache[0] || (_cache[0] = //@ts-ignore
1937
+ (...args) => vue.unref(toggle) && vue.unref(toggle)(...args))
1938
+ }, [
1939
+ vue.createVNode(vue.unref(vue$1.Icon), {
1940
+ icon: vue.unref(isDark) ? __props.darkIcon : __props.lightIcon,
1941
+ class: vue.normalizeClass(sizeClasses[__props.size].icon)
1942
+ }, null, 8, ["icon", "class"]),
1943
+ __props.showLabel ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, vue.toDisplayString(vue.unref(isDark) ? "Dark" : "Light"), 1)) : vue.createCommentVNode("", true)
1944
+ ], 10, _hoisted_1);
1945
+ };
1946
+ }
1947
+ });
2164
1948
  exports._sfc_main = _sfc_main$i;
2165
1949
  exports._sfc_main$1 = _sfc_main$h;
2166
1950
  exports._sfc_main$10 = _sfc_main$8;
@@ -2180,4 +1964,4 @@ exports._sfc_main$6 = _sfc_main$c;
2180
1964
  exports._sfc_main$7 = _sfc_main$b;
2181
1965
  exports._sfc_main$8 = _sfc_main$a;
2182
1966
  exports._sfc_main$9 = _sfc_main$9;
2183
- //# sourceMappingURL=Timeline.vue_vue_type_script_setup_true_lang-C5SKEGPG.cjs.map
1967
+ //# sourceMappingURL=DarkModeToggle.vue_vue_type_script_setup_true_lang-CSxGvdSP.cjs.map