cisse-vue-ui 0.5.33 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/dist/Button.vue_vue_type_script_setup_true_lang-CBYr0Z2_.js +99 -0
  2. package/dist/Button.vue_vue_type_script_setup_true_lang-CBYr0Z2_.js.map +1 -0
  3. package/dist/Button.vue_vue_type_script_setup_true_lang-CXRj7LEP.cjs +98 -0
  4. package/dist/Button.vue_vue_type_script_setup_true_lang-CXRj7LEP.cjs.map +1 -0
  5. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-CHIIi5Gu.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-Bine-xfp.cjs} +2 -2
  6. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-CHIIi5Gu.cjs.map → ConfirmDialog.vue_vue_type_script_setup_true_lang-Bine-xfp.cjs.map} +1 -1
  7. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-DdCwgxtv.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-DqkA1Zr-.js} +2 -2
  8. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-DdCwgxtv.js.map → ConfirmDialog.vue_vue_type_script_setup_true_lang-DqkA1Zr-.js.map} +1 -1
  9. package/dist/{DarkModeToggle.vue_vue_type_script_setup_true_lang-0K4ucPlO.js → FilterTabs.vue_vue_type_script_setup_true_lang-AFYkni3y.js} +411 -136
  10. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-AFYkni3y.js.map +1 -0
  11. package/dist/{DarkModeToggle.vue_vue_type_script_setup_true_lang-DOrIWBcH.cjs → FilterTabs.vue_vue_type_script_setup_true_lang-HwjuvIJX.cjs} +398 -123
  12. package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-HwjuvIJX.cjs.map +1 -0
  13. package/dist/{IconPicker.vue_vue_type_script_setup_true_lang-agY_E72J.cjs → FormActions.vue_vue_type_script_setup_true_lang-DzN_fbUC.cjs} +404 -165
  14. package/dist/FormActions.vue_vue_type_script_setup_true_lang-DzN_fbUC.cjs.map +1 -0
  15. package/dist/{IconPicker.vue_vue_type_script_setup_true_lang-Ch1x6Ap9.js → FormActions.vue_vue_type_script_setup_true_lang-d2aur5Pu.js} +405 -166
  16. package/dist/FormActions.vue_vue_type_script_setup_true_lang-d2aur5Pu.js.map +1 -0
  17. package/dist/{Button.vue_vue_type_script_setup_true_lang-BHpVJnRn.js → ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js} +7 -102
  18. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js.map +1 -0
  19. package/dist/{Button.vue_vue_type_script_setup_true_lang-CLmHDal2.cjs → ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs} +6 -101
  20. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs.map +1 -0
  21. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-rMu1Z5uH.js → PageHero.vue_vue_type_script_setup_true_lang-C-YXGDTY.js} +244 -97
  22. package/dist/PageHero.vue_vue_type_script_setup_true_lang-C-YXGDTY.js.map +1 -0
  23. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-hhzpkC6_.cjs → PageHero.vue_vue_type_script_setup_true_lang-CKCmOxOa.cjs} +241 -94
  24. package/dist/PageHero.vue_vue_type_script_setup_true_lang-CKCmOxOa.cjs.map +1 -0
  25. package/dist/components/core/FilterTabs.stories.d.ts +14 -0
  26. package/dist/components/core/FilterTabs.test.d.ts +1 -0
  27. package/dist/components/core/FilterTabs.vue.d.ts +29 -0
  28. package/dist/components/core/StatsCard.stories.d.ts +15 -0
  29. package/dist/components/core/StatsCard.test.d.ts +1 -0
  30. package/dist/components/core/StatsCard.vue.d.ts +44 -0
  31. package/dist/components/core/StatsGrid.stories.d.ts +12 -0
  32. package/dist/components/core/StatsGrid.test.d.ts +1 -0
  33. package/dist/components/core/StatsGrid.vue.d.ts +16 -0
  34. package/dist/components/core/index.cjs +24 -21
  35. package/dist/components/core/index.cjs.map +1 -1
  36. package/dist/components/core/index.d.ts +5 -0
  37. package/dist/components/core/index.js +5 -2
  38. package/dist/components/feedback/index.cjs +5 -5
  39. package/dist/components/feedback/index.js +5 -5
  40. package/dist/components/form/FormActions.stories.d.ts +18 -0
  41. package/dist/components/form/FormActions.test.d.ts +1 -0
  42. package/dist/components/form/FormActions.vue.d.ts +56 -0
  43. package/dist/components/form/FormInput.vue.d.ts +1 -1
  44. package/dist/components/form/FormSection.stories.d.ts +13 -0
  45. package/dist/components/form/FormSection.test.d.ts +1 -0
  46. package/dist/components/form/FormSection.vue.d.ts +49 -0
  47. package/dist/components/form/index.cjs +18 -16
  48. package/dist/components/form/index.cjs.map +1 -1
  49. package/dist/components/form/index.d.ts +2 -0
  50. package/dist/components/form/index.js +3 -1
  51. package/dist/components/index.cjs +52 -45
  52. package/dist/components/index.cjs.map +1 -1
  53. package/dist/components/index.js +22 -15
  54. package/dist/components/index.js.map +1 -1
  55. package/dist/components/layout/PageHero.stories.d.ts +11 -0
  56. package/dist/components/layout/PageHero.test.d.ts +1 -0
  57. package/dist/components/layout/PageHero.vue.d.ts +51 -0
  58. package/dist/components/layout/index.cjs +5 -4
  59. package/dist/components/layout/index.cjs.map +1 -1
  60. package/dist/components/layout/index.d.ts +2 -0
  61. package/dist/components/layout/index.js +2 -1
  62. package/dist/index-6hQQcCpF.js +84 -0
  63. package/dist/index-6hQQcCpF.js.map +1 -0
  64. package/dist/index-Bp7Mpfbi.cjs +83 -0
  65. package/dist/index-Bp7Mpfbi.cjs.map +1 -0
  66. package/dist/index.cjs +53 -46
  67. package/dist/index.cjs.map +1 -1
  68. package/dist/index.js +33 -26
  69. package/dist/index.js.map +1 -1
  70. package/dist/style.css +1 -1
  71. package/dist/types/form.d.ts +4 -0
  72. package/package.json +1 -1
  73. package/dist/Button.vue_vue_type_script_setup_true_lang-BHpVJnRn.js.map +0 -1
  74. package/dist/Button.vue_vue_type_script_setup_true_lang-CLmHDal2.cjs.map +0 -1
  75. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-0K4ucPlO.js.map +0 -1
  76. package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-DOrIWBcH.cjs.map +0 -1
  77. package/dist/IconPicker.vue_vue_type_script_setup_true_lang-Ch1x6Ap9.js.map +0 -1
  78. package/dist/IconPicker.vue_vue_type_script_setup_true_lang-agY_E72J.cjs.map +0 -1
  79. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-hhzpkC6_.cjs.map +0 -1
  80. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-rMu1Z5uH.js.map +0 -1
  81. package/dist/index-BBUxkeI7.js +0 -77
  82. package/dist/index-BBUxkeI7.js.map +0 -1
  83. package/dist/index-BlwU8BWn.cjs +0 -76
  84. package/dist/index-BlwU8BWn.cjs.map +0 -1
@@ -1,23 +1,23 @@
1
1
  "use strict";
2
2
  const vue = require("vue");
3
3
  const index = require("./index-D1x3TH9k.cjs");
4
- const Button_vue_vue_type_script_setup_true_lang = require("./Button.vue_vue_type_script_setup_true_lang-CLmHDal2.cjs");
4
+ const ListSkeleton_vue_vue_type_script_setup_true_lang = require("./ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs");
5
5
  const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-zs0NXN4g.cjs");
6
6
  const vue$1 = require("@iconify/vue");
7
7
  const useDropdown = require("./useDropdown-DHFnd259.cjs");
8
8
  const useId = require("./useId-nxrBaIC9.cjs");
9
9
  const useDarkMode = require("./useDarkMode-DLZcJEUQ.cjs");
10
- const _hoisted_1$f = {
10
+ const _hoisted_1$h = {
11
11
  key: 1,
12
12
  class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950"
13
13
  };
14
- const _hoisted_2$c = { class: "flex flex-col gap-0.5" };
15
- const _hoisted_3$7 = {
14
+ const _hoisted_2$d = { class: "flex flex-col gap-0.5" };
15
+ const _hoisted_3$8 = {
16
16
  key: 1,
17
17
  class: "text-sm font-normal text-gray-600 dark:text-gray-400"
18
18
  };
19
19
  const _hoisted_4$6 = { class: "flex gap-2" };
20
- const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
20
+ const _sfc_main$l = /* @__PURE__ */ vue.defineComponent({
21
21
  __name: "CardComponent",
22
22
  props: {
23
23
  title: {},
@@ -38,12 +38,12 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
38
38
  () => props.dividerClass || "border-gray-200 dark:border-gray-700"
39
39
  );
40
40
  return (_ctx, _cache) => {
41
- return __props.loading ? (vue.openBlock(), vue.createBlock(Button_vue_vue_type_script_setup_true_lang._sfc_main$2, {
41
+ return __props.loading ? (vue.openBlock(), vue.createBlock(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main$1, {
42
42
  key: 0,
43
43
  lines: __props.loadingLines,
44
44
  "show-avatar": __props.loadingAvatar,
45
45
  "show-actions": __props.loadingActions
46
- }, null, 8, ["lines", "show-avatar", "show-actions"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
46
+ }, null, 8, ["lines", "show-avatar", "show-actions"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$h, [
47
47
  _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", {
48
48
  key: 0,
49
49
  class: vue.normalizeClass(["border-b", dividerClasses.value])
@@ -53,7 +53,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
53
53
  key: 1,
54
54
  class: vue.normalizeClass(["flex items-center justify-between border-b px-5 py-3", dividerClasses.value])
55
55
  }, [
56
- vue.createElementVNode("div", _hoisted_2$c, [
56
+ vue.createElementVNode("div", _hoisted_2$d, [
57
57
  __props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", {
58
58
  key: 0,
59
59
  class: vue.normalizeClass(["text-md font-semibold", titleClasses.value])
@@ -62,7 +62,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
62
62
  vue.createTextVNode(vue.toDisplayString(__props.title), 1)
63
63
  ])
64
64
  ], 2)) : vue.createCommentVNode("", true),
65
- __props.description || _ctx.$slots.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$7, [
65
+ __props.description || _ctx.$slots.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$8, [
66
66
  vue.renderSlot(_ctx.$slots, "description", {}, () => [
67
67
  vue.createTextVNode(vue.toDisplayString(__props.description), 1)
68
68
  ])
@@ -77,12 +77,12 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
77
77
  };
78
78
  }
79
79
  });
80
- const _hoisted_1$e = { class: "overflow-hidden" };
81
- const _hoisted_2$b = {
80
+ const _hoisted_1$g = { class: "overflow-hidden" };
81
+ const _hoisted_2$c = {
82
82
  key: 1,
83
83
  class: "overflow-x-auto"
84
84
  };
85
- const _hoisted_3$6 = { class: "w-full divide-y divide-black/10 text-left dark:divide-white/10" };
85
+ const _hoisted_3$7 = { class: "w-full divide-y divide-black/10 text-left dark:divide-white/10" };
86
86
  const _hoisted_4$5 = { class: "bg-black/5 text-sm font-semibold text-gray-600 uppercase dark:bg-white/5 dark:text-gray-400" };
87
87
  const _hoisted_5$3 = {
88
88
  key: 0,
@@ -111,7 +111,7 @@ const _hoisted_12$1 = {
111
111
  class: "flex items-center justify-end gap-2 px-3 py-4"
112
112
  };
113
113
  const _hoisted_13 = { key: 0 };
114
- const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
114
+ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
115
115
  __name: "TableComponent",
116
116
  props: {
117
117
  properties: {},
@@ -212,13 +212,13 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
212
212
  return props.sortBy === property.name;
213
213
  };
214
214
  return (_ctx, _cache) => {
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
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
216
+ __props.loading ? (vue.openBlock(), vue.createBlock(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main, {
217
217
  key: 0,
218
218
  rows: __props.loadingRows,
219
219
  columns: visibleProperties.value.length
220
- }, null, 8, ["rows", "columns"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$b, [
221
- vue.createElementVNode("table", _hoisted_3$6, [
220
+ }, null, 8, ["rows", "columns"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$c, [
221
+ vue.createElementVNode("table", _hoisted_3$7, [
222
222
  vue.createElementVNode("thead", _hoisted_4$5, [
223
223
  vue.createElementVNode("tr", null, [
224
224
  __props.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_5$3, [
@@ -323,9 +323,9 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
323
323
  };
324
324
  }
325
325
  });
326
- const _hoisted_1$d = { class: "space-y-3" };
327
- const _hoisted_2$a = { class: "flex items-center gap-3 p-3" };
328
- const _hoisted_3$5 = { class: "text-sm text-gray-600 dark:text-gray-400" };
326
+ const _hoisted_1$f = { class: "space-y-3" };
327
+ const _hoisted_2$b = { class: "flex items-center gap-3 p-3" };
328
+ const _hoisted_3$6 = { class: "text-sm text-gray-600 dark:text-gray-400" };
329
329
  const _hoisted_4$4 = {
330
330
  key: 0,
331
331
  class: "text-sm text-primary font-medium"
@@ -342,7 +342,7 @@ const _hoisted_7$2 = {
342
342
  const _hoisted_8$2 = { class: "flex-1 min-w-0 overflow-hidden" };
343
343
  const _hoisted_9$2 = { class: "shrink-0" };
344
344
  const _hoisted_10$1 = { key: 1 };
345
- const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
345
+ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
346
346
  __name: "MobileList",
347
347
  props: {
348
348
  items: {},
@@ -391,10 +391,10 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
391
391
  };
392
392
  const hasEmptySlot = vue.computed(() => !!slots.empty);
393
393
  return (_ctx, _cache) => {
394
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
395
- __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
394
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
395
+ __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$l, { key: 0 }, {
396
396
  default: vue.withCtx(() => [
397
- vue.createVNode(Button_vue_vue_type_script_setup_true_lang._sfc_main$3, {
397
+ vue.createVNode(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main$2, {
398
398
  items: __props.loadingItems,
399
399
  "show-avatar": "",
400
400
  "show-secondary": "",
@@ -403,22 +403,22 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
403
403
  ]),
404
404
  _: 1
405
405
  })) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
406
- __props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
406
+ __props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$l, { key: 0 }, {
407
407
  default: vue.withCtx(() => [
408
- vue.createElementVNode("div", _hoisted_2$a, [
408
+ vue.createElementVNode("div", _hoisted_2$b, [
409
409
  vue.createVNode(index._sfc_main, {
410
410
  "model-value": allSelected.value,
411
411
  indeterminate: someSelected.value,
412
412
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
413
413
  }, null, 8, ["model-value", "indeterminate"]),
414
- vue.createElementVNode("span", _hoisted_3$5, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
414
+ vue.createElementVNode("span", _hoisted_3$6, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
415
415
  __props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$4, " (" + vue.toDisplayString(__props.selectedItems.size) + " sélectionné" + vue.toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : vue.createCommentVNode("", true)
416
416
  ])
417
417
  ]),
418
418
  _: 1
419
419
  })) : vue.createCommentVNode("", true),
420
420
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
421
- return vue.openBlock(), vue.createBlock(_sfc_main$i, {
421
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, {
422
422
  key: getKey(item),
423
423
  class: vue.normalizeClass(["hover:shadow-lg transition-all duration-200", {
424
424
  "ring-2 ring-primary": isSelected(item)
@@ -453,7 +453,7 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
453
453
  };
454
454
  }
455
455
  });
456
- const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
456
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
457
457
  __name: "ResponsiveList",
458
458
  props: {
459
459
  items: {},
@@ -512,7 +512,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
512
512
  const isDesktop = vue.computed(() => breakpoints.greaterOrEqual(props.breakpoint).value);
513
513
  return (_ctx, _cache) => {
514
514
  return vue.openBlock(), vue.createElementBlock("div", null, [
515
- !isDesktop.value ? (vue.openBlock(), vue.createBlock(_sfc_main$g, {
515
+ !isDesktop.value ? (vue.openBlock(), vue.createBlock(_sfc_main$j, {
516
516
  key: 0,
517
517
  items: __props.items,
518
518
  "key-field": __props.keyField,
@@ -539,9 +539,9 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
539
539
  vue.renderSlot(_ctx.$slots, "empty")
540
540
  ]),
541
541
  _: 3
542
- }, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter", "loading", "loading-items"])) : (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 1 }, {
542
+ }, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter", "loading", "loading-items"])) : (vue.openBlock(), vue.createBlock(_sfc_main$l, { key: 1 }, {
543
543
  default: vue.withCtx(() => [
544
- vue.createVNode(_sfc_main$h, {
544
+ vue.createVNode(_sfc_main$k, {
545
545
  items: __props.items,
546
546
  properties: tableProperties.value,
547
547
  "key-field": __props.keyField,
@@ -590,12 +590,12 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
590
590
  };
591
591
  }
592
592
  });
593
- const _hoisted_1$c = {
593
+ const _hoisted_1$e = {
594
594
  key: 0,
595
595
  class: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
596
596
  };
597
- const _hoisted_2$9 = { class: "relative" };
598
- const _hoisted_3$4 = ["disabled", "placeholder"];
597
+ const _hoisted_2$a = { class: "relative" };
598
+ const _hoisted_3$5 = ["disabled", "placeholder"];
599
599
  const _hoisted_4$3 = ["disabled"];
600
600
  const _hoisted_5$1 = {
601
601
  key: 0,
@@ -608,7 +608,7 @@ const _hoisted_9$1 = {
608
608
  key: 1,
609
609
  class: "mt-1 text-sm text-red-600"
610
610
  };
611
- const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
611
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
612
612
  __name: "AutocompleteComponent",
613
613
  props: {
614
614
  modelValue: {},
@@ -710,8 +710,8 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
710
710
  ref: containerRef,
711
711
  class: "autocomplete-container"
712
712
  }, [
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, [
713
+ __props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$e, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
714
+ vue.createElementVNode("div", _hoisted_2$a, [
715
715
  vue.createElementVNode("div", {
716
716
  ref_key: "inputWrapperRef",
717
717
  ref: inputWrapperRef,
@@ -736,7 +736,7 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
736
736
  type: "text",
737
737
  onFocus: openDropdown,
738
738
  onKeydown: handleKeydown
739
- }, null, 40, _hoisted_3$4), [
739
+ }, null, 40, _hoisted_3$5), [
740
740
  [vue.vModelText, searchQuery.value]
741
741
  ]),
742
742
  __props.modelValue && !__props.disabled ? (vue.openBlock(), vue.createElementBlock("button", {
@@ -817,7 +817,7 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
817
817
  };
818
818
  }
819
819
  });
820
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
820
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
821
821
  __name: "TableAction",
822
822
  props: {
823
823
  link: {},
@@ -886,10 +886,10 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
886
886
  };
887
887
  }
888
888
  });
889
- const _hoisted_1$b = { class: "relative inline-block" };
890
- const _hoisted_2$8 = ["src", "alt"];
891
- const _hoisted_3$3 = { key: 1 };
892
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
889
+ const _hoisted_1$d = { class: "relative inline-block" };
890
+ const _hoisted_2$9 = ["src", "alt"];
891
+ const _hoisted_3$4 = { key: 1 };
892
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
893
893
  __name: "Avatar",
894
894
  props: {
895
895
  src: {},
@@ -935,7 +935,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
935
935
  });
936
936
  const showImage = vue.computed(() => props.src && !imageError.value);
937
937
  return (_ctx, _cache) => {
938
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
938
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
939
939
  vue.createElementVNode("div", {
940
940
  class: vue.normalizeClass([
941
941
  "flex items-center justify-center overflow-hidden bg-gray-200 font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-300",
@@ -949,7 +949,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
949
949
  alt: __props.alt || __props.name,
950
950
  class: "size-full object-cover",
951
951
  onError: _cache[0] || (_cache[0] = ($event) => imageError.value = true)
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), {
952
+ }, null, 40, _hoisted_2$9)) : initials.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$4, vue.toDisplayString(initials.value), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
953
953
  key: 2,
954
954
  icon: "lucide:user",
955
955
  class: "size-1/2"
@@ -967,9 +967,9 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
967
967
  };
968
968
  }
969
969
  });
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({
970
+ const _hoisted_1$c = ["aria-selected", "disabled", "onClick"];
971
+ const _hoisted_2$8 = { class: "mt-4" };
972
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
973
973
  __name: "Tabs",
974
974
  props: {
975
975
  tabs: {},
@@ -1034,18 +1034,18 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
1034
1034
  activeTab.value === tab.key ? variantClasses[__props.variant].active : variantClasses[__props.variant].inactive
1035
1035
  ]),
1036
1036
  onClick: ($event) => selectTab(tab)
1037
- }, vue.toDisplayString(tab.label), 11, _hoisted_1$a);
1037
+ }, vue.toDisplayString(tab.label), 11, _hoisted_1$c);
1038
1038
  }), 128))
1039
1039
  ], 2),
1040
- vue.createElementVNode("div", _hoisted_2$7, [
1040
+ vue.createElementVNode("div", _hoisted_2$8, [
1041
1041
  vue.renderSlot(_ctx.$slots, "default", { activeTab: activeTab.value })
1042
1042
  ])
1043
1043
  ]);
1044
1044
  };
1045
1045
  }
1046
1046
  });
1047
- const _hoisted_1$9 = { role: "tabpanel" };
1048
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
1047
+ const _hoisted_1$b = { role: "tabpanel" };
1048
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
1049
1049
  __name: "TabPanel",
1050
1050
  props: {
1051
1051
  value: {}
@@ -1055,7 +1055,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
1055
1055
  const activeTab = vue.inject("activeTab");
1056
1056
  const isActive = vue.computed(() => (activeTab == null ? void 0 : activeTab.value) === props.value);
1057
1057
  return (_ctx, _cache) => {
1058
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
1058
+ return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
1059
1059
  vue.renderSlot(_ctx.$slots, "default")
1060
1060
  ], 512)), [
1061
1061
  [vue.vShow, isActive.value]
@@ -1063,11 +1063,11 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
1063
1063
  };
1064
1064
  }
1065
1065
  });
1066
- const _hoisted_1$8 = {
1066
+ const _hoisted_1$a = {
1067
1067
  key: 2,
1068
1068
  class: "text-sm font-semibold"
1069
1069
  };
1070
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1070
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
1071
1071
  __name: "Stepper",
1072
1072
  props: {
1073
1073
  steps: {},
@@ -1136,7 +1136,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1136
1136
  key: 1,
1137
1137
  icon: step.icon,
1138
1138
  class: "size-6"
1139
- }, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$8, vue.toDisplayString(index2 + 1), 1))
1139
+ }, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$a, vue.toDisplayString(index2 + 1), 1))
1140
1140
  ], 2),
1141
1141
  vue.createElementVNode("div", {
1142
1142
  class: vue.normalizeClass([
@@ -1164,7 +1164,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1164
1164
  };
1165
1165
  }
1166
1166
  });
1167
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1167
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
1168
1168
  __name: "CollapsibleCard",
1169
1169
  props: {
1170
1170
  title: {},
@@ -1182,7 +1182,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1182
1182
  };
1183
1183
  const hasCustomHeader = () => !!slots.header;
1184
1184
  return (_ctx, _cache) => {
1185
- return vue.openBlock(), vue.createBlock(_sfc_main$i, null, vue.createSlots({
1185
+ return vue.openBlock(), vue.createBlock(_sfc_main$l, null, vue.createSlots({
1186
1186
  default: vue.withCtx(() => [
1187
1187
  vue.createVNode(vue.Transition, {
1188
1188
  "enter-active-class": "transition-all duration-200 ease-out",
@@ -1260,9 +1260,9 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1260
1260
  };
1261
1261
  }
1262
1262
  });
1263
- const _hoisted_1$7 = ["aria-describedby"];
1264
- const _hoisted_2$6 = ["id"];
1265
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1263
+ const _hoisted_1$9 = ["aria-describedby"];
1264
+ const _hoisted_2$7 = ["id"];
1265
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
1266
1266
  __name: "Tooltip",
1267
1267
  props: {
1268
1268
  content: {},
@@ -1333,17 +1333,17 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1333
1333
  id: vue.unref(tooltipId),
1334
1334
  class: vue.normalizeClass(positionClasses.value),
1335
1335
  role: "tooltip"
1336
- }, vue.toDisplayString(__props.content), 11, _hoisted_2$6)) : vue.createCommentVNode("", true)
1336
+ }, vue.toDisplayString(__props.content), 11, _hoisted_2$7)) : vue.createCommentVNode("", true)
1337
1337
  ]),
1338
1338
  _: 1
1339
1339
  })
1340
- ], 40, _hoisted_1$7);
1340
+ ], 40, _hoisted_1$9);
1341
1341
  };
1342
1342
  }
1343
1343
  });
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({
1344
+ const _hoisted_1$8 = ["id", "aria-expanded", "aria-controls"];
1345
+ const _hoisted_2$6 = ["id", "aria-labelledby"];
1346
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1347
1347
  __name: "Popover",
1348
1348
  props: {
1349
1349
  position: { default: "bottom" },
@@ -1399,7 +1399,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1399
1399
  onClick: handleTrigger
1400
1400
  }, [
1401
1401
  vue.renderSlot(_ctx.$slots, "trigger")
1402
- ], 8, _hoisted_1$6),
1402
+ ], 8, _hoisted_1$8),
1403
1403
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
1404
1404
  to: "body",
1405
1405
  disabled: !__props.teleport
@@ -1427,7 +1427,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1427
1427
  ])
1428
1428
  }, [
1429
1429
  vue.renderSlot(_ctx.$slots, "default", { close: vue.unref(close) })
1430
- ], 14, _hoisted_2$5)) : vue.createCommentVNode("", true)
1430
+ ], 14, _hoisted_2$6)) : vue.createCommentVNode("", true)
1431
1431
  ]),
1432
1432
  _: 3
1433
1433
  })
@@ -1436,17 +1436,17 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1436
1436
  };
1437
1437
  }
1438
1438
  });
1439
- const _hoisted_1$5 = {
1439
+ const _hoisted_1$7 = {
1440
1440
  key: 0,
1441
1441
  class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700"
1442
1442
  };
1443
- const _hoisted_2$4 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
1444
- const _hoisted_3$2 = { class: "flex-1 overflow-y-auto p-4" };
1443
+ const _hoisted_2$5 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
1444
+ const _hoisted_3$3 = { class: "flex-1 overflow-y-auto p-4" };
1445
1445
  const _hoisted_4$2 = {
1446
1446
  key: 1,
1447
1447
  class: "px-4 py-3 border-t border-gray-200 dark:border-gray-700"
1448
1448
  };
1449
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1449
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1450
1450
  __name: "Drawer",
1451
1451
  props: {
1452
1452
  modelValue: { type: Boolean },
@@ -1565,9 +1565,9 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1565
1565
  role: "dialog",
1566
1566
  "aria-modal": "true"
1567
1567
  }, [
1568
- __props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
1568
+ __props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
1569
1569
  vue.renderSlot(_ctx.$slots, "header", {}, () => [
1570
- vue.createElementVNode("h2", _hoisted_2$4, vue.toDisplayString(__props.title), 1)
1570
+ vue.createElementVNode("h2", _hoisted_2$5, vue.toDisplayString(__props.title), 1)
1571
1571
  ]),
1572
1572
  __props.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
1573
1573
  key: 0,
@@ -1581,7 +1581,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1581
1581
  })
1582
1582
  ])) : vue.createCommentVNode("", true)
1583
1583
  ])) : vue.createCommentVNode("", true),
1584
- vue.createElementVNode("div", _hoisted_3$2, [
1584
+ vue.createElementVNode("div", _hoisted_3$3, [
1585
1585
  vue.renderSlot(_ctx.$slots, "default")
1586
1586
  ]),
1587
1587
  _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [
@@ -1595,9 +1595,9 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1595
1595
  };
1596
1596
  }
1597
1597
  });
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({
1598
+ const _hoisted_1$6 = { "aria-label": "Breadcrumb" };
1599
+ const _hoisted_2$4 = { class: "flex items-center flex-wrap gap-1 text-sm" };
1600
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1601
1601
  __name: "Breadcrumb",
1602
1602
  props: {
1603
1603
  items: {},
@@ -1608,8 +1608,8 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1608
1608
  emits: ["click"],
1609
1609
  setup(__props) {
1610
1610
  return (_ctx, _cache) => {
1611
- return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$4, [
1612
- vue.createElementVNode("ol", _hoisted_2$3, [
1611
+ return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$6, [
1612
+ vue.createElementVNode("ol", _hoisted_2$4, [
1613
1613
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
1614
1614
  return vue.openBlock(), vue.createElementBlock("li", {
1615
1615
  key: index2,
@@ -1651,8 +1651,8 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1651
1651
  };
1652
1652
  }
1653
1653
  });
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({
1654
+ const _hoisted_1$5 = { 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$6 = /* @__PURE__ */ vue.defineComponent({
1656
1656
  __name: "Accordion",
1657
1657
  props: {
1658
1658
  mode: { default: "single" },
@@ -1678,17 +1678,17 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1678
1678
  isOpen
1679
1679
  });
1680
1680
  return (_ctx, _cache) => {
1681
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
1681
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
1682
1682
  vue.renderSlot(_ctx.$slots, "default")
1683
1683
  ]);
1684
1684
  };
1685
1685
  }
1686
1686
  });
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"];
1687
+ const _hoisted_1$4 = ["id", "disabled", "aria-expanded", "aria-controls"];
1688
+ const _hoisted_2$3 = { class: "flex items-center gap-2 font-medium" };
1689
+ const _hoisted_3$2 = ["id", "aria-labelledby"];
1690
1690
  const _hoisted_4$1 = { class: "px-4 py-3 bg-gray-50 dark:bg-gray-900 text-gray-700 dark:text-gray-300" };
1691
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1691
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1692
1692
  __name: "AccordionItem",
1693
1693
  props: {
1694
1694
  itemKey: {},
@@ -1722,7 +1722,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1722
1722
  "aria-controls": panelId.value,
1723
1723
  onClick: toggle
1724
1724
  }, [
1725
- vue.createElementVNode("span", _hoisted_2$2, [
1725
+ vue.createElementVNode("span", _hoisted_2$3, [
1726
1726
  __props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1727
1727
  key: 0,
1728
1728
  icon: __props.icon,
@@ -1736,7 +1736,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1736
1736
  class: vue.normalizeClass(["size-5 transition-transform duration-200", { "rotate-180": isOpen.value }]),
1737
1737
  "aria-hidden": "true"
1738
1738
  }, null, 8, ["class"])
1739
- ], 10, _hoisted_1$2),
1739
+ ], 10, _hoisted_1$4),
1740
1740
  vue.createVNode(vue.Transition, {
1741
1741
  "enter-active-class": "transition-all duration-200 ease-out",
1742
1742
  "enter-from-class": "opacity-0 max-h-0",
@@ -1755,7 +1755,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1755
1755
  vue.createElementVNode("div", _hoisted_4$1, [
1756
1756
  vue.renderSlot(_ctx.$slots, "default")
1757
1757
  ])
1758
- ], 8, _hoisted_3$1), [
1758
+ ], 8, _hoisted_3$2), [
1759
1759
  [vue.vShow, isOpen.value]
1760
1760
  ])
1761
1761
  ]),
@@ -1765,12 +1765,12 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1765
1765
  };
1766
1766
  }
1767
1767
  });
1768
- const _hoisted_1$1 = {
1768
+ const _hoisted_1$3 = {
1769
1769
  key: 0,
1770
1770
  class: "relative"
1771
1771
  };
1772
- const _hoisted_2$1 = { class: "flex items-start gap-4" };
1773
- const _hoisted_3 = { class: "flex-1 min-w-0 pt-0.5" };
1772
+ const _hoisted_2$2 = { class: "flex items-start gap-4" };
1773
+ const _hoisted_3$1 = { class: "flex-1 min-w-0 pt-0.5" };
1774
1774
  const _hoisted_4 = { class: "flex items-center justify-between gap-2" };
1775
1775
  const _hoisted_5 = { class: "text-sm font-medium text-gray-900 dark:text-white" };
1776
1776
  const _hoisted_6 = {
@@ -1792,7 +1792,7 @@ const _hoisted_12 = {
1792
1792
  key: 0,
1793
1793
  class: "text-xs text-gray-500 dark:text-gray-400"
1794
1794
  };
1795
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1795
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1796
1796
  __name: "Timeline",
1797
1797
  props: {
1798
1798
  items: {},
@@ -1838,7 +1838,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1838
1838
  }
1839
1839
  };
1840
1840
  return (_ctx, _cache) => {
1841
- return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
1841
+ return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
1842
1842
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
1843
1843
  return vue.openBlock(), vue.createElementBlock("div", {
1844
1844
  key: item.key,
@@ -1848,7 +1848,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1848
1848
  key: 0,
1849
1849
  class: vue.normalizeClass(["absolute left-4 top-8 w-0.5 h-full -ml-px", getStatusClasses(item.status).line])
1850
1850
  }, null, 2)) : vue.createCommentVNode("", true),
1851
- vue.createElementVNode("div", _hoisted_2$1, [
1851
+ vue.createElementVNode("div", _hoisted_2$2, [
1852
1852
  vue.createElementVNode("div", {
1853
1853
  class: vue.normalizeClass(["relative z-10 flex items-center justify-center size-8 rounded-full shrink-0", getStatusClasses(item.status).dot])
1854
1854
  }, [
@@ -1858,7 +1858,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1858
1858
  class: vue.normalizeClass(["size-4", getStatusClasses(item.status).icon])
1859
1859
  }, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
1860
1860
  ], 2),
1861
- vue.createElementVNode("div", _hoisted_3, [
1861
+ vue.createElementVNode("div", _hoisted_3$1, [
1862
1862
  vue.createElementVNode("div", _hoisted_4, [
1863
1863
  vue.createElementVNode("h3", _hoisted_5, vue.toDisplayString(item.title), 1),
1864
1864
  item.date ? (vue.openBlock(), vue.createElementBlock("time", _hoisted_6, vue.toDisplayString(item.date), 1)) : vue.createCommentVNode("", true)
@@ -1900,12 +1900,12 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1900
1900
  };
1901
1901
  }
1902
1902
  });
1903
- const _hoisted_1 = ["aria-label"];
1904
- const _hoisted_2 = {
1903
+ const _hoisted_1$2 = ["aria-label"];
1904
+ const _hoisted_2$1 = {
1905
1905
  key: 0,
1906
1906
  class: "text-sm font-medium"
1907
1907
  };
1908
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1908
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1909
1909
  __name: "DarkModeToggle",
1910
1910
  props: {
1911
1911
  size: { default: "md" },
@@ -1940,28 +1940,303 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1940
1940
  icon: vue.unref(isDark) ? __props.darkIcon : __props.lightIcon,
1941
1941
  class: vue.normalizeClass(sizeClasses[__props.size].icon)
1942
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);
1943
+ __props.showLabel ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$1, vue.toDisplayString(vue.unref(isDark) ? "Dark" : "Light"), 1)) : vue.createCommentVNode("", true)
1944
+ ], 10, _hoisted_1$2);
1945
+ };
1946
+ }
1947
+ });
1948
+ const _hoisted_1$1 = {
1949
+ key: 0,
1950
+ class: "text-gray-400"
1951
+ };
1952
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1953
+ __name: "StatsCard",
1954
+ props: {
1955
+ label: {},
1956
+ value: {},
1957
+ icon: {},
1958
+ change: {},
1959
+ changeLabel: {},
1960
+ variant: { default: "default" },
1961
+ color: { default: "primary" }
1962
+ },
1963
+ setup(__props) {
1964
+ return (_ctx, _cache) => {
1965
+ return vue.openBlock(), vue.createElementBlock("div", {
1966
+ class: vue.normalizeClass([
1967
+ "rounded-2xl p-4 text-center transition-all",
1968
+ __props.variant === "default" && "bg-white dark:bg-slate-800 border border-gray-100 dark:border-slate-700 shadow-sm",
1969
+ __props.variant === "glass" && "bg-white/15 backdrop-blur-sm border border-white/20",
1970
+ __props.variant === "outline" && "border-2 border-gray-200 dark:border-slate-600",
1971
+ __props.variant === "solid" && __props.color === "primary" && "bg-primary-500 text-white",
1972
+ __props.variant === "solid" && __props.color === "success" && "bg-emerald-500 text-white",
1973
+ __props.variant === "solid" && __props.color === "warning" && "bg-amber-500 text-white",
1974
+ __props.variant === "solid" && __props.color === "danger" && "bg-red-500 text-white",
1975
+ __props.variant === "solid" && __props.color === "info" && "bg-blue-500 text-white"
1976
+ ])
1977
+ }, [
1978
+ __props.icon ? (vue.openBlock(), vue.createElementBlock("div", {
1979
+ key: 0,
1980
+ class: vue.normalizeClass([
1981
+ "size-10 mx-auto mb-2 rounded-xl flex items-center justify-center",
1982
+ __props.variant === "glass" && "bg-white/20",
1983
+ __props.variant === "solid" && "bg-white/20",
1984
+ __props.variant === "default" && __props.color === "primary" && "bg-primary-100 dark:bg-primary-900/30",
1985
+ __props.variant === "default" && __props.color === "success" && "bg-emerald-100 dark:bg-emerald-900/30",
1986
+ __props.variant === "default" && __props.color === "warning" && "bg-amber-100 dark:bg-amber-900/30",
1987
+ __props.variant === "default" && __props.color === "danger" && "bg-red-100 dark:bg-red-900/30",
1988
+ __props.variant === "default" && __props.color === "info" && "bg-blue-100 dark:bg-blue-900/30",
1989
+ __props.variant === "outline" && "bg-gray-100 dark:bg-slate-700"
1990
+ ])
1991
+ }, [
1992
+ vue.createVNode(vue.unref(vue$1.Icon), {
1993
+ icon: __props.icon,
1994
+ class: vue.normalizeClass([
1995
+ "size-5",
1996
+ (__props.variant === "glass" || __props.variant === "solid") && "text-white",
1997
+ __props.variant === "default" && __props.color === "primary" && "text-primary-600 dark:text-primary-400",
1998
+ __props.variant === "default" && __props.color === "success" && "text-emerald-600 dark:text-emerald-400",
1999
+ __props.variant === "default" && __props.color === "warning" && "text-amber-600 dark:text-amber-400",
2000
+ __props.variant === "default" && __props.color === "danger" && "text-red-600 dark:text-red-400",
2001
+ __props.variant === "default" && __props.color === "info" && "text-blue-600 dark:text-blue-400",
2002
+ __props.variant === "outline" && "text-gray-600 dark:text-gray-400"
2003
+ ])
2004
+ }, null, 8, ["icon", "class"])
2005
+ ], 2)) : vue.createCommentVNode("", true),
2006
+ vue.createElementVNode("div", {
2007
+ class: vue.normalizeClass([
2008
+ "text-2xl sm:text-3xl font-bold",
2009
+ (__props.variant === "glass" || __props.variant === "solid") && "text-white",
2010
+ (__props.variant === "default" || __props.variant === "outline") && "text-gray-900 dark:text-white"
2011
+ ])
2012
+ }, [
2013
+ vue.renderSlot(_ctx.$slots, "value", {}, () => [
2014
+ vue.createTextVNode(vue.toDisplayString(__props.value), 1)
2015
+ ])
2016
+ ], 2),
2017
+ vue.createElementVNode("div", {
2018
+ class: vue.normalizeClass([
2019
+ "text-xs sm:text-sm",
2020
+ __props.variant === "glass" && "text-white/80",
2021
+ __props.variant === "solid" && "text-white/90",
2022
+ (__props.variant === "default" || __props.variant === "outline") && "text-gray-500 dark:text-gray-400"
2023
+ ])
2024
+ }, [
2025
+ vue.renderSlot(_ctx.$slots, "label", {}, () => [
2026
+ vue.createTextVNode(vue.toDisplayString(__props.label), 1)
2027
+ ])
2028
+ ], 2),
2029
+ __props.change !== void 0 ? (vue.openBlock(), vue.createElementBlock("div", {
2030
+ key: 1,
2031
+ class: vue.normalizeClass([
2032
+ "mt-2 text-xs font-medium inline-flex items-center gap-1",
2033
+ __props.change >= 0 ? "text-emerald-500" : "text-red-500"
2034
+ ])
2035
+ }, [
2036
+ vue.createVNode(vue.unref(vue$1.Icon), {
2037
+ icon: __props.change >= 0 ? "heroicons:arrow-trending-up" : "heroicons:arrow-trending-down",
2038
+ class: "size-3.5"
2039
+ }, null, 8, ["icon"]),
2040
+ vue.createElementVNode("span", null, vue.toDisplayString(__props.change >= 0 ? "+" : "") + vue.toDisplayString(__props.change) + "%", 1),
2041
+ __props.changeLabel ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$1, vue.toDisplayString(__props.changeLabel), 1)) : vue.createCommentVNode("", true)
2042
+ ], 2)) : vue.createCommentVNode("", true)
2043
+ ], 2);
2044
+ };
2045
+ }
2046
+ });
2047
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
2048
+ __name: "StatsGrid",
2049
+ props: {
2050
+ stats: {},
2051
+ cols: {},
2052
+ variant: { default: "default" },
2053
+ color: { default: "primary" }
2054
+ },
2055
+ setup(__props) {
2056
+ return (_ctx, _cache) => {
2057
+ return vue.openBlock(), vue.createElementBlock("div", {
2058
+ class: vue.normalizeClass(["grid gap-3 sm:gap-4", [
2059
+ __props.cols === 2 && "grid-cols-2",
2060
+ __props.cols === 3 && "grid-cols-3",
2061
+ __props.cols === 4 && "grid-cols-2 sm:grid-cols-4",
2062
+ !__props.cols && __props.stats.length === 2 && "grid-cols-2",
2063
+ !__props.cols && __props.stats.length === 3 && "grid-cols-3",
2064
+ !__props.cols && __props.stats.length === 4 && "grid-cols-2 sm:grid-cols-4",
2065
+ !__props.cols && __props.stats.length > 4 && "grid-cols-2 sm:grid-cols-3 lg:grid-cols-4"
2066
+ ]])
2067
+ }, [
2068
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.stats, (stat, index2) => {
2069
+ return vue.openBlock(), vue.createBlock(_sfc_main$2, {
2070
+ key: index2,
2071
+ label: stat.label,
2072
+ value: stat.value,
2073
+ icon: stat.icon,
2074
+ change: stat.change,
2075
+ "change-label": stat.changeLabel,
2076
+ variant: __props.variant,
2077
+ color: __props.color
2078
+ }, null, 8, ["label", "value", "icon", "change", "change-label", "variant", "color"]);
2079
+ }), 128))
2080
+ ], 2);
2081
+ };
2082
+ }
2083
+ });
2084
+ const _hoisted_1 = ["disabled", "onClick"];
2085
+ const _hoisted_2 = ["disabled", "onClick"];
2086
+ const _hoisted_3 = ["disabled", "onClick"];
2087
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
2088
+ __name: "FilterTabs",
2089
+ props: /* @__PURE__ */ vue.mergeModels({
2090
+ options: {},
2091
+ variant: { default: "pills" },
2092
+ size: { default: "md" },
2093
+ fullWidth: { type: Boolean }
2094
+ }, {
2095
+ "modelValue": { required: true },
2096
+ "modelModifiers": {}
2097
+ }),
2098
+ emits: ["update:modelValue"],
2099
+ setup(__props) {
2100
+ const modelValue = vue.useModel(__props, "modelValue");
2101
+ return (_ctx, _cache) => {
2102
+ return __props.variant === "pills" ? (vue.openBlock(), vue.createElementBlock("div", {
2103
+ key: 0,
2104
+ class: vue.normalizeClass([
2105
+ "inline-flex p-1 bg-white dark:bg-slate-800 rounded-2xl shadow-sm border border-gray-100 dark:border-slate-700 gap-1",
2106
+ __props.fullWidth && "w-full"
2107
+ ])
2108
+ }, [
2109
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.options, (option) => {
2110
+ return vue.openBlock(), vue.createElementBlock("button", {
2111
+ key: option.key,
2112
+ type: "button",
2113
+ disabled: option.disabled,
2114
+ class: vue.normalizeClass([
2115
+ "flex items-center justify-center gap-2 rounded-xl font-medium transition-all",
2116
+ __props.fullWidth && "flex-1",
2117
+ __props.size === "sm" && "px-3 py-1.5 text-xs",
2118
+ __props.size === "md" && "px-4 py-2.5 text-sm",
2119
+ __props.size === "lg" && "px-5 py-3 text-base",
2120
+ modelValue.value === option.key ? "bg-primary-500 text-white shadow-md" : "text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white hover:bg-gray-50 dark:hover:bg-slate-700",
2121
+ option.disabled && "opacity-50 cursor-not-allowed"
2122
+ ]),
2123
+ onClick: ($event) => !option.disabled && (modelValue.value = option.key)
2124
+ }, [
2125
+ option.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
2126
+ key: 0,
2127
+ icon: option.icon,
2128
+ class: "size-4"
2129
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
2130
+ vue.createElementVNode("span", null, vue.toDisplayString(option.label), 1),
2131
+ option.count !== void 0 ? (vue.openBlock(), vue.createElementBlock("span", {
2132
+ key: 1,
2133
+ class: vue.normalizeClass([
2134
+ "px-1.5 py-0.5 rounded-full text-xs font-medium",
2135
+ modelValue.value === option.key ? "bg-white/20 text-white" : "bg-gray-100 dark:bg-slate-700 text-gray-600 dark:text-gray-400"
2136
+ ])
2137
+ }, vue.toDisplayString(option.count), 3)) : vue.createCommentVNode("", true)
2138
+ ], 10, _hoisted_1);
2139
+ }), 128))
2140
+ ], 2)) : __props.variant === "underline" ? (vue.openBlock(), vue.createElementBlock("div", {
2141
+ key: 1,
2142
+ class: vue.normalizeClass([
2143
+ "flex border-b border-gray-200 dark:border-slate-700",
2144
+ __props.fullWidth && "w-full"
2145
+ ])
2146
+ }, [
2147
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.options, (option) => {
2148
+ return vue.openBlock(), vue.createElementBlock("button", {
2149
+ key: option.key,
2150
+ type: "button",
2151
+ disabled: option.disabled,
2152
+ class: vue.normalizeClass([
2153
+ "flex items-center justify-center gap-2 font-medium transition-all border-b-2 -mb-px",
2154
+ __props.fullWidth && "flex-1",
2155
+ __props.size === "sm" && "px-3 py-2 text-xs",
2156
+ __props.size === "md" && "px-4 py-3 text-sm",
2157
+ __props.size === "lg" && "px-5 py-4 text-base",
2158
+ modelValue.value === option.key ? "border-primary-500 text-primary-600 dark:text-primary-400" : "border-transparent text-gray-500 dark:text-gray-400 hover:text-gray-700 dark:hover:text-gray-300 hover:border-gray-300",
2159
+ option.disabled && "opacity-50 cursor-not-allowed"
2160
+ ]),
2161
+ onClick: ($event) => !option.disabled && (modelValue.value = option.key)
2162
+ }, [
2163
+ option.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
2164
+ key: 0,
2165
+ icon: option.icon,
2166
+ class: "size-4"
2167
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
2168
+ vue.createElementVNode("span", null, vue.toDisplayString(option.label), 1),
2169
+ option.count !== void 0 ? (vue.openBlock(), vue.createElementBlock("span", {
2170
+ key: 1,
2171
+ class: vue.normalizeClass([
2172
+ "px-1.5 py-0.5 rounded-full text-xs font-medium",
2173
+ modelValue.value === option.key ? "bg-primary-100 dark:bg-primary-900/30 text-primary-600 dark:text-primary-400" : "bg-gray-100 dark:bg-slate-700 text-gray-500"
2174
+ ])
2175
+ }, vue.toDisplayString(option.count), 3)) : vue.createCommentVNode("", true)
2176
+ ], 10, _hoisted_2);
2177
+ }), 128))
2178
+ ], 2)) : __props.variant === "boxed" ? (vue.openBlock(), vue.createElementBlock("div", {
2179
+ key: 2,
2180
+ class: vue.normalizeClass([
2181
+ "inline-flex bg-gray-100 dark:bg-slate-800 rounded-xl p-1 gap-1",
2182
+ __props.fullWidth && "w-full"
2183
+ ])
2184
+ }, [
2185
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.options, (option) => {
2186
+ return vue.openBlock(), vue.createElementBlock("button", {
2187
+ key: option.key,
2188
+ type: "button",
2189
+ disabled: option.disabled,
2190
+ class: vue.normalizeClass([
2191
+ "flex items-center justify-center gap-2 rounded-lg font-medium transition-all",
2192
+ __props.fullWidth && "flex-1",
2193
+ __props.size === "sm" && "px-3 py-1.5 text-xs",
2194
+ __props.size === "md" && "px-4 py-2 text-sm",
2195
+ __props.size === "lg" && "px-5 py-2.5 text-base",
2196
+ modelValue.value === option.key ? "bg-white dark:bg-slate-700 text-gray-900 dark:text-white shadow-sm" : "text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-white",
2197
+ option.disabled && "opacity-50 cursor-not-allowed"
2198
+ ]),
2199
+ onClick: ($event) => !option.disabled && (modelValue.value = option.key)
2200
+ }, [
2201
+ option.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
2202
+ key: 0,
2203
+ icon: option.icon,
2204
+ class: "size-4"
2205
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
2206
+ vue.createElementVNode("span", null, vue.toDisplayString(option.label), 1),
2207
+ option.count !== void 0 ? (vue.openBlock(), vue.createElementBlock("span", {
2208
+ key: 1,
2209
+ class: vue.normalizeClass([
2210
+ "px-1.5 py-0.5 rounded-full text-xs font-medium",
2211
+ modelValue.value === option.key ? "bg-gray-100 dark:bg-slate-600 text-gray-600 dark:text-gray-300" : "bg-gray-200 dark:bg-slate-700 text-gray-500 dark:text-gray-400"
2212
+ ])
2213
+ }, vue.toDisplayString(option.count), 3)) : vue.createCommentVNode("", true)
2214
+ ], 10, _hoisted_3);
2215
+ }), 128))
2216
+ ], 2)) : vue.createCommentVNode("", true);
1945
2217
  };
1946
2218
  }
1947
2219
  });
1948
- exports._sfc_main = _sfc_main$i;
1949
- exports._sfc_main$1 = _sfc_main$h;
1950
- exports._sfc_main$10 = _sfc_main$8;
1951
- exports._sfc_main$11 = _sfc_main$7;
1952
- exports._sfc_main$12 = _sfc_main$6;
1953
- exports._sfc_main$13 = _sfc_main$5;
1954
- exports._sfc_main$14 = _sfc_main$4;
1955
- exports._sfc_main$15 = _sfc_main$3;
1956
- exports._sfc_main$16 = _sfc_main$2;
1957
- exports._sfc_main$17 = _sfc_main$1;
1958
- exports._sfc_main$18 = _sfc_main;
1959
- exports._sfc_main$2 = _sfc_main$g;
1960
- exports._sfc_main$3 = _sfc_main$f;
1961
- exports._sfc_main$4 = _sfc_main$e;
1962
- exports._sfc_main$5 = _sfc_main$d;
1963
- exports._sfc_main$6 = _sfc_main$c;
1964
- exports._sfc_main$7 = _sfc_main$b;
1965
- exports._sfc_main$8 = _sfc_main$a;
1966
- exports._sfc_main$9 = _sfc_main$9;
1967
- //# sourceMappingURL=DarkModeToggle.vue_vue_type_script_setup_true_lang-DOrIWBcH.cjs.map
2220
+ exports._sfc_main = _sfc_main$l;
2221
+ exports._sfc_main$1 = _sfc_main$k;
2222
+ exports._sfc_main$10 = _sfc_main$b;
2223
+ exports._sfc_main$11 = _sfc_main$a;
2224
+ exports._sfc_main$12 = _sfc_main$9;
2225
+ exports._sfc_main$13 = _sfc_main$8;
2226
+ exports._sfc_main$14 = _sfc_main$7;
2227
+ exports._sfc_main$15 = _sfc_main$6;
2228
+ exports._sfc_main$16 = _sfc_main$5;
2229
+ exports._sfc_main$17 = _sfc_main$4;
2230
+ exports._sfc_main$18 = _sfc_main$3;
2231
+ exports._sfc_main$19 = _sfc_main$2;
2232
+ exports._sfc_main$2 = _sfc_main$j;
2233
+ exports._sfc_main$20 = _sfc_main$1;
2234
+ exports._sfc_main$21 = _sfc_main;
2235
+ exports._sfc_main$3 = _sfc_main$i;
2236
+ exports._sfc_main$4 = _sfc_main$h;
2237
+ exports._sfc_main$5 = _sfc_main$g;
2238
+ exports._sfc_main$6 = _sfc_main$f;
2239
+ exports._sfc_main$7 = _sfc_main$e;
2240
+ exports._sfc_main$8 = _sfc_main$d;
2241
+ exports._sfc_main$9 = _sfc_main$c;
2242
+ //# sourceMappingURL=FilterTabs.vue_vue_type_script_setup_true_lang-HwjuvIJX.cjs.map