cisse-vue-ui 0.3.2 → 0.5.1

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 (134) hide show
  1. package/README.md +666 -666
  2. package/dist/BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs.map +1 -1
  3. package/dist/BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js.map +1 -1
  4. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js.map +1 -1
  5. package/dist/Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs.map +1 -1
  6. package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js → Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js} +2 -2
  7. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js.map +1 -0
  8. package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs → Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs} +2 -2
  9. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs.map +1 -0
  10. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs → PageLayout.vue_vue_type_script_setup_true_lang-1rNUMab6.cjs} +2 -2
  11. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-1rNUMab6.cjs.map +1 -0
  12. package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js → PageLayout.vue_vue_type_script_setup_true_lang-DLfqj6EP.js} +2 -2
  13. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-DLfqj6EP.js.map +1 -0
  14. package/dist/{DatePicker.vue_vue_type_script_setup_true_lang-CxddOiV4.cjs → RangeSlider.vue_vue_type_script_setup_true_lang-BRNkkx89.cjs} +715 -100
  15. package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-BRNkkx89.cjs.map +1 -0
  16. package/dist/{DatePicker.vue_vue_type_script_setup_true_lang-DKDcnO28.js → RangeSlider.vue_vue_type_script_setup_true_lang-DD9UxnCU.js} +716 -101
  17. package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-DD9UxnCU.js.map +1 -0
  18. package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-DRC4EADS.js → Skeleton.vue_vue_type_script_setup_true_lang-BcWF7mwz.js} +2 -2
  19. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-BcWF7mwz.js.map +1 -0
  20. package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-D2S5g9s5.cjs → Skeleton.vue_vue_type_script_setup_true_lang-D-2qAhyG.cjs} +2 -2
  21. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-D-2qAhyG.cjs.map +1 -0
  22. package/dist/{Popover.vue_vue_type_script_setup_true_lang-Q7gRZsT9.js → Timeline.vue_vue_type_script_setup_true_lang-BWIfzQOG.js} +591 -135
  23. package/dist/Timeline.vue_vue_type_script_setup_true_lang-BWIfzQOG.js.map +1 -0
  24. package/dist/{Popover.vue_vue_type_script_setup_true_lang-dvlDTcf1.cjs → Timeline.vue_vue_type_script_setup_true_lang-C2Mq4XOO.cjs} +578 -122
  25. package/dist/Timeline.vue_vue_type_script_setup_true_lang-C2Mq4XOO.cjs.map +1 -0
  26. package/dist/cisse-vue-ui.css +51 -51
  27. package/dist/components/core/Accordion.stories.d.ts +11 -0
  28. package/dist/components/core/Accordion.test.d.ts +1 -0
  29. package/dist/components/core/Accordion.vue.d.ts +27 -0
  30. package/dist/components/core/AccordionItem.vue.d.ts +27 -0
  31. package/dist/components/core/AutocompleteComponent.test.d.ts +1 -0
  32. package/dist/components/core/Breadcrumb.stories.d.ts +11 -0
  33. package/dist/components/core/Breadcrumb.test.d.ts +1 -0
  34. package/dist/components/core/Breadcrumb.vue.d.ts +26 -0
  35. package/dist/components/core/CardComponent.test.d.ts +1 -0
  36. package/dist/components/core/CollapsibleCard.test.d.ts +1 -0
  37. package/dist/components/core/Drawer.stories.d.ts +12 -0
  38. package/dist/components/core/Drawer.test.d.ts +1 -0
  39. package/dist/components/core/Drawer.vue.d.ts +50 -0
  40. package/dist/components/core/Dropdown.test.d.ts +1 -0
  41. package/dist/components/core/MenuItem.test.d.ts +1 -0
  42. package/dist/components/core/MobileList.test.d.ts +1 -0
  43. package/dist/components/core/Popover.test.d.ts +1 -0
  44. package/dist/components/core/ResponsiveList.test.d.ts +1 -0
  45. package/dist/components/core/StatusBadge.test.d.ts +1 -0
  46. package/dist/components/core/Stepper.test.d.ts +1 -0
  47. package/dist/components/core/TabPanel.test.d.ts +1 -0
  48. package/dist/components/core/TableAction.test.d.ts +1 -0
  49. package/dist/components/core/TableComponent.test.d.ts +1 -0
  50. package/dist/components/core/Tabs.test.d.ts +1 -0
  51. package/dist/components/core/Timeline.stories.d.ts +11 -0
  52. package/dist/components/core/Timeline.test.d.ts +1 -0
  53. package/dist/components/core/Timeline.vue.d.ts +34 -0
  54. package/dist/components/core/index.cjs +21 -16
  55. package/dist/components/core/index.cjs.map +1 -1
  56. package/dist/components/core/index.d.ts +9 -0
  57. package/dist/components/core/index.js +7 -2
  58. package/dist/components/feedback/EmptyState.test.d.ts +1 -0
  59. package/dist/components/feedback/LoadingSpinner.test.d.ts +1 -0
  60. package/dist/components/feedback/NotificationComponent.test.d.ts +1 -0
  61. package/dist/components/feedback/NotificationList.test.d.ts +1 -0
  62. package/dist/components/feedback/PaginationControls.test.d.ts +1 -0
  63. package/dist/components/feedback/Toast.test.d.ts +1 -0
  64. package/dist/components/feedback/ToastContainer.test.d.ts +1 -0
  65. package/dist/components/feedback/index.cjs +1 -1
  66. package/dist/components/feedback/index.js +1 -1
  67. package/dist/components/form/Checkbox.test.d.ts +1 -0
  68. package/dist/components/form/ColorPicker.stories.d.ts +12 -0
  69. package/dist/components/form/ColorPicker.test.d.ts +1 -0
  70. package/dist/components/form/ColorPicker.vue.d.ts +23 -0
  71. package/dist/components/form/DatePicker.test.d.ts +1 -0
  72. package/dist/components/form/FileUpload.stories.d.ts +12 -0
  73. package/dist/components/form/FileUpload.test.d.ts +1 -0
  74. package/dist/components/form/FileUpload.vue.d.ts +40 -0
  75. package/dist/components/form/FormGroup.test.d.ts +1 -0
  76. package/dist/components/form/FormHelp.test.d.ts +1 -0
  77. package/dist/components/form/FormInput.test.d.ts +1 -0
  78. package/dist/components/form/FormLabel.test.d.ts +1 -0
  79. package/dist/components/form/FormSelect.test.d.ts +1 -0
  80. package/dist/components/form/RangeSlider.stories.d.ts +13 -0
  81. package/dist/components/form/RangeSlider.test.d.ts +1 -0
  82. package/dist/components/form/RangeSlider.vue.d.ts +35 -0
  83. package/dist/components/form/Rating.stories.d.ts +16 -0
  84. package/dist/components/form/Rating.test.d.ts +1 -0
  85. package/dist/components/form/Rating.vue.d.ts +43 -0
  86. package/dist/components/form/SearchInput.test.d.ts +1 -0
  87. package/dist/components/form/Slider.test.d.ts +1 -0
  88. package/dist/components/form/Switch.test.d.ts +1 -0
  89. package/dist/components/form/index.cjs +14 -10
  90. package/dist/components/form/index.cjs.map +1 -1
  91. package/dist/components/form/index.d.ts +6 -0
  92. package/dist/components/form/index.js +5 -1
  93. package/dist/components/index.cjs +37 -28
  94. package/dist/components/index.cjs.map +1 -1
  95. package/dist/components/index.js +16 -7
  96. package/dist/components/layout/BaseLayout.test.d.ts +1 -0
  97. package/dist/components/layout/PageLayout.test.d.ts +1 -0
  98. package/dist/components/layout/PageLayout.vue.d.ts +3 -3
  99. package/dist/components/layout/index.cjs +1 -1
  100. package/dist/components/layout/index.d.ts +1 -1
  101. package/dist/components/layout/index.js +1 -1
  102. package/dist/components/type/BadgeType.test.d.ts +1 -0
  103. package/dist/components/type/BooleanType.test.d.ts +1 -0
  104. package/dist/components/type/DateType.test.d.ts +1 -0
  105. package/dist/components/type/NumberType.test.d.ts +1 -0
  106. package/dist/components/type/TextType.test.d.ts +1 -0
  107. package/dist/index-B4NFaDHr.cjs +67 -0
  108. package/dist/index-B4NFaDHr.cjs.map +1 -0
  109. package/dist/index-C2DRkEjb.js +68 -0
  110. package/dist/index-C2DRkEjb.js.map +1 -0
  111. package/dist/index.cjs +38 -29
  112. package/dist/index.cjs.map +1 -1
  113. package/dist/index.js +17 -8
  114. package/dist/style.css +2 -2
  115. package/dist/types/components.d.ts +1 -1
  116. package/dist/useDropdown-DHFnd259.cjs.map +1 -1
  117. package/dist/useDropdown-iVu14E6s.js.map +1 -1
  118. package/dist/useToast-DT9hFfpM.js.map +1 -1
  119. package/dist/useToast-nJXpFz_M.cjs.map +1 -1
  120. package/package.json +7 -2
  121. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-CxddOiV4.cjs.map +0 -1
  122. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-DKDcnO28.js.map +0 -1
  123. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js.map +0 -1
  124. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs.map +0 -1
  125. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs.map +0 -1
  126. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js.map +0 -1
  127. package/dist/Popover.vue_vue_type_script_setup_true_lang-Q7gRZsT9.js.map +0 -1
  128. package/dist/Popover.vue_vue_type_script_setup_true_lang-dvlDTcf1.cjs.map +0 -1
  129. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-D2S5g9s5.cjs.map +0 -1
  130. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-DRC4EADS.js.map +0 -1
  131. package/dist/index-DNndxsOE.cjs +0 -58
  132. package/dist/index-DNndxsOE.cjs.map +0 -1
  133. package/dist/index-_NEu9rf2.js +0 -59
  134. package/dist/index-_NEu9rf2.js.map +0 -1
@@ -4,22 +4,22 @@ const Checkbox_vue_vue_type_script_setup_true_lang = require("./Checkbox.vue_vue
4
4
  const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
5
5
  const vue$1 = require("@iconify/vue");
6
6
  const useDropdown = require("./useDropdown-DHFnd259.cjs");
7
- const _hoisted_1$8 = { class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950" };
8
- const _hoisted_2$6 = {
7
+ const _hoisted_1$d = { class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950" };
8
+ const _hoisted_2$a = {
9
9
  key: 0,
10
10
  class: "flex items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"
11
11
  };
12
- const _hoisted_3$4 = { class: "flex flex-col gap-0.5" };
13
- const _hoisted_4$3 = {
12
+ const _hoisted_3$7 = { class: "flex flex-col gap-0.5" };
13
+ const _hoisted_4$6 = {
14
14
  key: 0,
15
15
  class: "text-md font-semibold text-gray-800 dark:text-gray-200"
16
16
  };
17
- const _hoisted_5$3 = {
17
+ const _hoisted_5$4 = {
18
18
  key: 1,
19
19
  class: "text-sm font-normal text-gray-600 dark:text-gray-400"
20
20
  };
21
- const _hoisted_6$3 = { class: "flex gap-2" };
22
- const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
21
+ const _hoisted_6$4 = { class: "flex gap-2" };
22
+ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
23
23
  __name: "CardComponent",
24
24
  props: {
25
25
  title: {},
@@ -27,21 +27,21 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
27
27
  },
28
28
  setup(__props) {
29
29
  return (_ctx, _cache) => {
30
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$8, [
31
- __props.title || __props.description || _ctx.$slots.title || _ctx.$slots.description || _ctx.$slots.actions ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$6, [
32
- vue.createElementVNode("div", _hoisted_3$4, [
33
- __props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$3, [
30
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
31
+ __props.title || __props.description || _ctx.$slots.title || _ctx.$slots.description || _ctx.$slots.actions ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$a, [
32
+ vue.createElementVNode("div", _hoisted_3$7, [
33
+ __props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$6, [
34
34
  vue.renderSlot(_ctx.$slots, "title", {}, () => [
35
35
  vue.createTextVNode(vue.toDisplayString(__props.title), 1)
36
36
  ])
37
37
  ])) : vue.createCommentVNode("", true),
38
- __props.description || _ctx.$slots.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$3, [
38
+ __props.description || _ctx.$slots.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$4, [
39
39
  vue.renderSlot(_ctx.$slots, "description", {}, () => [
40
40
  vue.createTextVNode(vue.toDisplayString(__props.description), 1)
41
41
  ])
42
42
  ])) : vue.createCommentVNode("", true)
43
43
  ]),
44
- vue.createElementVNode("div", _hoisted_6$3, [
44
+ vue.createElementVNode("div", _hoisted_6$4, [
45
45
  vue.renderSlot(_ctx.$slots, "actions")
46
46
  ])
47
47
  ])) : vue.createCommentVNode("", true),
@@ -50,29 +50,29 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
50
50
  };
51
51
  }
52
52
  });
53
- const _hoisted_1$7 = { class: "overflow-hidden" };
54
- const _hoisted_2$5 = { class: "overflow-x-auto" };
55
- const _hoisted_3$3 = { class: "w-full divide-y divide-black/10 text-left dark:divide-white/10" };
56
- const _hoisted_4$2 = { class: "bg-black/5 text-sm font-semibold text-gray-600 uppercase dark:bg-white/5 dark:text-gray-400" };
57
- const _hoisted_5$2 = {
53
+ const _hoisted_1$c = { class: "overflow-hidden" };
54
+ const _hoisted_2$9 = { class: "overflow-x-auto" };
55
+ const _hoisted_3$6 = { class: "w-full divide-y divide-black/10 text-left dark:divide-white/10" };
56
+ const _hoisted_4$5 = { class: "bg-black/5 text-sm font-semibold text-gray-600 uppercase dark:bg-white/5 dark:text-gray-400" };
57
+ const _hoisted_5$3 = {
58
58
  key: 0,
59
59
  class: "w-12 px-3 py-3"
60
60
  };
61
- const _hoisted_6$2 = {
61
+ const _hoisted_6$3 = {
62
62
  key: 1,
63
63
  class: "px-3 py-3 text-right"
64
64
  };
65
- const _hoisted_7$2 = { class: "divide-y divide-black/10 font-medium dark:divide-white/10" };
66
- const _hoisted_8$2 = {
65
+ const _hoisted_7$3 = { class: "divide-y divide-black/10 font-medium dark:divide-white/10" };
66
+ const _hoisted_8$3 = {
67
67
  key: 0,
68
68
  class: "px-3 py-4"
69
69
  };
70
- const _hoisted_9$2 = {
70
+ const _hoisted_9$3 = {
71
71
  key: 1,
72
72
  class: "flex items-center justify-end gap-2 px-3 py-4"
73
73
  };
74
- const _hoisted_10$1 = { key: 0 };
75
- const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
74
+ const _hoisted_10$2 = { key: 0 };
75
+ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
76
76
  __name: "TableComponent",
77
77
  props: {
78
78
  properties: {},
@@ -161,12 +161,12 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
161
161
  };
162
162
  const hasActionSlot = vue.computed(() => !!slots.action);
163
163
  return (_ctx, _cache) => {
164
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
165
- vue.createElementVNode("div", _hoisted_2$5, [
166
- vue.createElementVNode("table", _hoisted_3$3, [
167
- vue.createElementVNode("thead", _hoisted_4$2, [
164
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
165
+ vue.createElementVNode("div", _hoisted_2$9, [
166
+ vue.createElementVNode("table", _hoisted_3$6, [
167
+ vue.createElementVNode("thead", _hoisted_4$5, [
168
168
  vue.createElementVNode("tr", null, [
169
- __props.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_5$2, [
169
+ __props.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_5$3, [
170
170
  vue.createVNode(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
171
171
  "model-value": allSelected.value,
172
172
  indeterminate: someSelected.value,
@@ -184,16 +184,16 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
184
184
  ])
185
185
  ], 2);
186
186
  }), 128)),
187
- hasActionSlot.value ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$2)) : vue.createCommentVNode("", true)
187
+ hasActionSlot.value ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$3)) : vue.createCommentVNode("", true)
188
188
  ])
189
189
  ]),
190
- vue.createElementVNode("tbody", _hoisted_7$2, [
190
+ vue.createElementVNode("tbody", _hoisted_7$3, [
191
191
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
192
192
  return vue.openBlock(), vue.createElementBlock("tr", {
193
193
  key: getKey(item),
194
194
  class: vue.normalizeClass(["hover:bg-black/5 dark:hover:bg-white/5 transition-colors", { "bg-primary/5 dark:bg-primary/10": isSelected(item) }])
195
195
  }, [
196
- __props.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_8$2, [
196
+ __props.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_8$3, [
197
197
  isSelectable(item) ? (vue.openBlock(), vue.createBlock(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
198
198
  key: 0,
199
199
  "model-value": isSelected(item),
@@ -221,7 +221,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
221
221
  ])
222
222
  ], 2);
223
223
  }), 128)),
224
- hasActionSlot.value ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_9$2, [
224
+ hasActionSlot.value ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_9$3, [
225
225
  vue.renderSlot(_ctx.$slots, "action", { item })
226
226
  ])) : vue.createCommentVNode("", true)
227
227
  ], 2);
@@ -229,33 +229,33 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
229
229
  ])
230
230
  ])
231
231
  ]),
232
- !__props.items || __props.items.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$1, [
232
+ !__props.items || __props.items.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$2, [
233
233
  vue.renderSlot(_ctx.$slots, "empty")
234
234
  ])) : vue.createCommentVNode("", true)
235
235
  ]);
236
236
  };
237
237
  }
238
238
  });
239
- const _hoisted_1$6 = { class: "space-y-3" };
240
- const _hoisted_2$4 = { class: "flex items-center gap-3 p-3" };
241
- const _hoisted_3$2 = { class: "text-sm text-gray-600 dark:text-gray-400" };
242
- const _hoisted_4$1 = {
239
+ const _hoisted_1$b = { class: "space-y-3" };
240
+ const _hoisted_2$8 = { class: "flex items-center gap-3 p-3" };
241
+ const _hoisted_3$5 = { class: "text-sm text-gray-600 dark:text-gray-400" };
242
+ const _hoisted_4$4 = {
243
243
  key: 0,
244
244
  class: "text-sm text-primary font-medium"
245
245
  };
246
- const _hoisted_5$1 = { class: "p-4 flex items-center gap-4" };
247
- const _hoisted_6$1 = {
246
+ const _hoisted_5$2 = { class: "p-4 flex items-center gap-4" };
247
+ const _hoisted_6$2 = {
248
248
  key: 0,
249
249
  class: "flex-shrink-0"
250
250
  };
251
- const _hoisted_7$1 = {
251
+ const _hoisted_7$2 = {
252
252
  key: 1,
253
253
  class: "w-5 h-5"
254
254
  };
255
- const _hoisted_8$1 = { class: "flex-1 min-w-0" };
256
- const _hoisted_9$1 = { class: "flex-shrink-0" };
257
- const _hoisted_10 = { key: 1 };
258
- const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
255
+ const _hoisted_8$2 = { class: "flex-1 min-w-0" };
256
+ const _hoisted_9$2 = { class: "flex-shrink-0" };
257
+ const _hoisted_10$1 = { key: 1 };
258
+ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
259
259
  __name: "MobileList",
260
260
  props: {
261
261
  items: {},
@@ -302,42 +302,42 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
302
302
  };
303
303
  const hasEmptySlot = vue.computed(() => !!slots.empty);
304
304
  return (_ctx, _cache) => {
305
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$6, [
306
- __props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$d, { key: 0 }, {
305
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
306
+ __props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
307
307
  default: vue.withCtx(() => [
308
- vue.createElementVNode("div", _hoisted_2$4, [
308
+ vue.createElementVNode("div", _hoisted_2$8, [
309
309
  vue.createVNode(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
310
310
  "model-value": allSelected.value,
311
311
  indeterminate: someSelected.value,
312
312
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
313
313
  }, null, 8, ["model-value", "indeterminate"]),
314
- vue.createElementVNode("span", _hoisted_3$2, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
315
- __props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$1, " (" + vue.toDisplayString(__props.selectedItems.size) + " sélectionné" + vue.toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : vue.createCommentVNode("", true)
314
+ vue.createElementVNode("span", _hoisted_3$5, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
315
+ __props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$4, " (" + vue.toDisplayString(__props.selectedItems.size) + " sélectionné" + vue.toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : vue.createCommentVNode("", true)
316
316
  ])
317
317
  ]),
318
318
  _: 1
319
319
  })) : vue.createCommentVNode("", true),
320
320
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
321
- return vue.openBlock(), vue.createBlock(_sfc_main$d, {
321
+ return vue.openBlock(), vue.createBlock(_sfc_main$i, {
322
322
  key: getKey(item),
323
323
  class: vue.normalizeClass(["hover:shadow-lg transition-all duration-200", {
324
324
  "ring-2 ring-primary": isSelected(item)
325
325
  }])
326
326
  }, {
327
327
  default: vue.withCtx(() => [
328
- vue.createElementVNode("div", _hoisted_5$1, [
329
- __props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$1, [
328
+ vue.createElementVNode("div", _hoisted_5$2, [
329
+ __props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$2, [
330
330
  isSelectable(item) ? (vue.openBlock(), vue.createBlock(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
331
331
  key: 0,
332
332
  "model-value": isSelected(item),
333
333
  "onUpdate:modelValue": ($event) => handleSelect(item)
334
- }, null, 8, ["model-value", "onUpdate:modelValue"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$1))
334
+ }, null, 8, ["model-value", "onUpdate:modelValue"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$2))
335
335
  ])) : vue.createCommentVNode("", true),
336
336
  vue.renderSlot(_ctx.$slots, "avatar", { item }),
337
- vue.createElementVNode("div", _hoisted_8$1, [
337
+ vue.createElementVNode("div", _hoisted_8$2, [
338
338
  vue.renderSlot(_ctx.$slots, "content", { item })
339
339
  ]),
340
- vue.createElementVNode("div", _hoisted_9$1, [
340
+ vue.createElementVNode("div", _hoisted_9$2, [
341
341
  vue.renderSlot(_ctx.$slots, "actions", { item })
342
342
  ])
343
343
  ])
@@ -345,7 +345,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
345
345
  _: 2
346
346
  }, 1032, ["class"]);
347
347
  }), 128)),
348
- __props.items.length === 0 && hasEmptySlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
348
+ __props.items.length === 0 && hasEmptySlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$1, [
349
349
  vue.renderSlot(_ctx.$slots, "empty")
350
350
  ])) : vue.createCommentVNode("", true)
351
351
  ]);
@@ -553,7 +553,7 @@ function useBreakpoints(breakpoints, options = {}) {
553
553
  }
554
554
  });
555
555
  }
556
- const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
556
+ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
557
557
  __name: "ResponsiveList",
558
558
  props: {
559
559
  items: {},
@@ -608,7 +608,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
608
608
  const isDesktop = vue.computed(() => breakpoints.greaterOrEqual(props.breakpoint).value);
609
609
  return (_ctx, _cache) => {
610
610
  return vue.openBlock(), vue.createElementBlock("div", null, [
611
- !isDesktop.value ? (vue.openBlock(), vue.createBlock(_sfc_main$b, {
611
+ !isDesktop.value ? (vue.openBlock(), vue.createBlock(_sfc_main$g, {
612
612
  key: 0,
613
613
  items: __props.items,
614
614
  "key-field": __props.keyField,
@@ -633,9 +633,9 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
633
633
  vue.renderSlot(_ctx.$slots, "empty")
634
634
  ]),
635
635
  _: 3
636
- }, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter"])) : (vue.openBlock(), vue.createBlock(_sfc_main$d, { key: 1 }, {
636
+ }, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter"])) : (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 1 }, {
637
637
  default: vue.withCtx(() => [
638
- vue.createVNode(_sfc_main$c, {
638
+ vue.createVNode(_sfc_main$h, {
639
639
  items: __props.items,
640
640
  properties: tableProperties.value,
641
641
  "key-field": __props.keyField,
@@ -679,25 +679,25 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
679
679
  };
680
680
  }
681
681
  });
682
- const _hoisted_1$5 = {
682
+ const _hoisted_1$a = {
683
683
  key: 0,
684
684
  class: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
685
685
  };
686
- const _hoisted_2$3 = { class: "relative" };
687
- const _hoisted_3$1 = ["disabled", "placeholder"];
688
- const _hoisted_4 = ["disabled"];
689
- const _hoisted_5 = {
686
+ const _hoisted_2$7 = { class: "relative" };
687
+ const _hoisted_3$4 = ["disabled", "placeholder"];
688
+ const _hoisted_4$3 = ["disabled"];
689
+ const _hoisted_5$1 = {
690
690
  key: 0,
691
691
  class: "px-4 py-3 text-sm text-gray-500"
692
692
  };
693
- const _hoisted_6 = ["data-index", "onClick"];
694
- const _hoisted_7 = { class: "flex-1 dark:text-white" };
695
- const _hoisted_8 = { class: "text-xs text-gray-400" };
696
- const _hoisted_9 = {
693
+ const _hoisted_6$1 = ["data-index", "onClick"];
694
+ const _hoisted_7$1 = { class: "flex-1 dark:text-white" };
695
+ const _hoisted_8$1 = { class: "text-xs text-gray-400" };
696
+ const _hoisted_9$1 = {
697
697
  key: 1,
698
698
  class: "mt-1 text-sm text-red-600"
699
699
  };
700
- const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
700
+ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
701
701
  __name: "AutocompleteComponent",
702
702
  props: {
703
703
  modelValue: {},
@@ -799,8 +799,8 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
799
799
  ref: containerRef,
800
800
  class: "autocomplete-container"
801
801
  }, [
802
- __props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$5, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
803
- vue.createElementVNode("div", _hoisted_2$3, [
802
+ __props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$a, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
803
+ vue.createElementVNode("div", _hoisted_2$7, [
804
804
  vue.createElementVNode("div", {
805
805
  ref_key: "inputWrapperRef",
806
806
  ref: inputWrapperRef,
@@ -825,7 +825,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
825
825
  type: "text",
826
826
  onFocus: openDropdown,
827
827
  onKeydown: handleKeydown
828
- }, null, 40, _hoisted_3$1), [
828
+ }, null, 40, _hoisted_3$4), [
829
829
  [vue.vModelText, searchQuery.value]
830
830
  ]),
831
831
  __props.modelValue && !__props.disabled ? (vue.openBlock(), vue.createElementBlock("button", {
@@ -849,7 +849,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
849
849
  class: vue.normalizeClass([{ "rotate-180": vue.unref(isOpen) }, "size-4 text-gray-400 transition"]),
850
850
  icon: "lucide:chevron-down"
851
851
  }, null, 8, ["class"])
852
- ], 8, _hoisted_4)
852
+ ], 8, _hoisted_4$3)
853
853
  ], 2),
854
854
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
855
855
  to: "body",
@@ -874,7 +874,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
874
874
  !__props.teleport && "absolute mt-2 w-full"
875
875
  ])
876
876
  }, [
877
- filteredOptions.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, vue.toDisplayString(__props.noResultsText || "No results found"), 1)) : vue.createCommentVNode("", true),
877
+ filteredOptions.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$1, vue.toDisplayString(__props.noResultsText || "No results found"), 1)) : vue.createCommentVNode("", true),
878
878
  (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredOptions.value, (option, index) => {
879
879
  return vue.openBlock(), vue.createElementBlock("button", {
880
880
  key: option.value,
@@ -891,9 +891,9 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
891
891
  class: "size-4 text-primary",
892
892
  icon: "lucide:check"
893
893
  })) : vue.createCommentVNode("", true),
894
- vue.createElementVNode("span", _hoisted_7, vue.toDisplayString(option.label), 1),
895
- vue.createElementVNode("span", _hoisted_8, "(" + vue.toDisplayString(option.value) + ")", 1)
896
- ], 10, _hoisted_6);
894
+ vue.createElementVNode("span", _hoisted_7$1, vue.toDisplayString(option.label), 1),
895
+ vue.createElementVNode("span", _hoisted_8$1, "(" + vue.toDisplayString(option.value) + ")", 1)
896
+ ], 10, _hoisted_6$1);
897
897
  }), 128))
898
898
  ], 6)) : vue.createCommentVNode("", true)
899
899
  ]),
@@ -901,12 +901,12 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
901
901
  })
902
902
  ], 8, ["disabled"]))
903
903
  ]),
904
- __props.error ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_9, vue.toDisplayString(__props.error), 1)) : vue.createCommentVNode("", true)
904
+ __props.error ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_9$1, vue.toDisplayString(__props.error), 1)) : vue.createCommentVNode("", true)
905
905
  ], 512);
906
906
  };
907
907
  }
908
908
  });
909
- const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
909
+ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
910
910
  __name: "TableAction",
911
911
  props: {
912
912
  link: {},
@@ -975,7 +975,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
975
975
  };
976
976
  }
977
977
  });
978
- const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
978
+ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
979
979
  __name: "Button",
980
980
  props: {
981
981
  variant: { default: "primary" },
@@ -1068,10 +1068,10 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1068
1068
  };
1069
1069
  }
1070
1070
  });
1071
- const _hoisted_1$4 = { class: "relative inline-block" };
1072
- const _hoisted_2$2 = ["src", "alt"];
1073
- const _hoisted_3 = { key: 1 };
1074
- const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1071
+ const _hoisted_1$9 = { class: "relative inline-block" };
1072
+ const _hoisted_2$6 = ["src", "alt"];
1073
+ const _hoisted_3$3 = { key: 1 };
1074
+ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
1075
1075
  __name: "Avatar",
1076
1076
  props: {
1077
1077
  src: {},
@@ -1117,7 +1117,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1117
1117
  });
1118
1118
  const showImage = vue.computed(() => props.src && !imageError.value);
1119
1119
  return (_ctx, _cache) => {
1120
- return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
1120
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
1121
1121
  vue.createElementVNode("div", {
1122
1122
  class: vue.normalizeClass([
1123
1123
  "flex items-center justify-center overflow-hidden bg-gray-200 font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-300",
@@ -1131,7 +1131,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1131
1131
  alt: __props.alt || __props.name,
1132
1132
  class: "size-full object-cover",
1133
1133
  onError: _cache[0] || (_cache[0] = ($event) => imageError.value = true)
1134
- }, null, 40, _hoisted_2$2)) : initials.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3, vue.toDisplayString(initials.value), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1134
+ }, null, 40, _hoisted_2$6)) : initials.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$3, vue.toDisplayString(initials.value), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1135
1135
  key: 2,
1136
1136
  icon: "lucide:user",
1137
1137
  class: "size-1/2"
@@ -1149,9 +1149,9 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1149
1149
  };
1150
1150
  }
1151
1151
  });
1152
- const _hoisted_1$3 = ["aria-selected", "disabled", "onClick"];
1153
- const _hoisted_2$1 = { class: "mt-4" };
1154
- const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1152
+ const _hoisted_1$8 = ["aria-selected", "disabled", "onClick"];
1153
+ const _hoisted_2$5 = { class: "mt-4" };
1154
+ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
1155
1155
  __name: "Tabs",
1156
1156
  props: {
1157
1157
  tabs: {},
@@ -1216,18 +1216,18 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1216
1216
  activeTab.value === tab.key ? variantClasses[__props.variant].active : variantClasses[__props.variant].inactive
1217
1217
  ]),
1218
1218
  onClick: ($event) => selectTab(tab)
1219
- }, vue.toDisplayString(tab.label), 11, _hoisted_1$3);
1219
+ }, vue.toDisplayString(tab.label), 11, _hoisted_1$8);
1220
1220
  }), 128))
1221
1221
  ], 2),
1222
- vue.createElementVNode("div", _hoisted_2$1, [
1222
+ vue.createElementVNode("div", _hoisted_2$5, [
1223
1223
  vue.renderSlot(_ctx.$slots, "default", { activeTab: activeTab.value })
1224
1224
  ])
1225
1225
  ]);
1226
1226
  };
1227
1227
  }
1228
1228
  });
1229
- const _hoisted_1$2 = { role: "tabpanel" };
1230
- const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1229
+ const _hoisted_1$7 = { role: "tabpanel" };
1230
+ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
1231
1231
  __name: "TabPanel",
1232
1232
  props: {
1233
1233
  value: {}
@@ -1237,7 +1237,7 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1237
1237
  const activeTab = vue.inject("activeTab");
1238
1238
  const isActive = vue.computed(() => (activeTab == null ? void 0 : activeTab.value) === props.value);
1239
1239
  return (_ctx, _cache) => {
1240
- return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
1240
+ return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
1241
1241
  vue.renderSlot(_ctx.$slots, "default")
1242
1242
  ], 512)), [
1243
1243
  [vue.vShow, isActive.value]
@@ -1245,11 +1245,11 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1245
1245
  };
1246
1246
  }
1247
1247
  });
1248
- const _hoisted_1$1 = {
1248
+ const _hoisted_1$6 = {
1249
1249
  key: 2,
1250
1250
  class: "text-sm font-semibold"
1251
1251
  };
1252
- const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1252
+ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
1253
1253
  __name: "Stepper",
1254
1254
  props: {
1255
1255
  steps: {},
@@ -1318,7 +1318,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1318
1318
  key: 1,
1319
1319
  icon: step.icon,
1320
1320
  class: "size-6"
1321
- }, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$1, vue.toDisplayString(index + 1), 1))
1321
+ }, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$6, vue.toDisplayString(index + 1), 1))
1322
1322
  ], 2),
1323
1323
  vue.createElementVNode("div", {
1324
1324
  class: vue.normalizeClass([
@@ -1346,9 +1346,9 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1346
1346
  };
1347
1347
  }
1348
1348
  });
1349
- const _hoisted_1 = { class: "overflow-hidden" };
1350
- const _hoisted_2 = { class: "space-y-4 p-6" };
1351
- const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1349
+ const _hoisted_1$5 = { class: "overflow-hidden" };
1350
+ const _hoisted_2$4 = { class: "space-y-4 p-6" };
1351
+ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
1352
1352
  __name: "CollapsibleCard",
1353
1353
  props: {
1354
1354
  title: {},
@@ -1362,7 +1362,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1362
1362
  isExpanded.value = !isExpanded.value;
1363
1363
  };
1364
1364
  return (_ctx, _cache) => {
1365
- return vue.openBlock(), vue.createBlock(_sfc_main$d, {
1365
+ return vue.openBlock(), vue.createBlock(_sfc_main$i, {
1366
1366
  title: __props.title,
1367
1367
  description: __props.description
1368
1368
  }, {
@@ -1389,8 +1389,8 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1389
1389
  "leave-to-class": "opacity-0 max-h-0"
1390
1390
  }, {
1391
1391
  default: vue.withCtx(() => [
1392
- vue.withDirectives(vue.createElementVNode("div", _hoisted_1, [
1393
- vue.createElementVNode("div", _hoisted_2, [
1392
+ vue.withDirectives(vue.createElementVNode("div", _hoisted_1$5, [
1393
+ vue.createElementVNode("div", _hoisted_2$4, [
1394
1394
  vue.renderSlot(_ctx.$slots, "default")
1395
1395
  ])
1396
1396
  ], 512), [
@@ -1405,7 +1405,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1405
1405
  };
1406
1406
  }
1407
1407
  });
1408
- const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1408
+ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
1409
1409
  __name: "Tooltip",
1410
1410
  props: {
1411
1411
  content: {},
@@ -1480,7 +1480,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1480
1480
  };
1481
1481
  }
1482
1482
  });
1483
- const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1483
+ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
1484
1484
  __name: "Popover",
1485
1485
  props: {
1486
1486
  position: { default: "bottom" },
@@ -1563,18 +1563,474 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1563
1563
  };
1564
1564
  }
1565
1565
  });
1566
- exports._sfc_main = _sfc_main$d;
1567
- exports._sfc_main$1 = _sfc_main$c;
1568
- exports._sfc_main$10 = _sfc_main$3;
1569
- exports._sfc_main$11 = _sfc_main$2;
1570
- exports._sfc_main$12 = _sfc_main$1;
1571
- exports._sfc_main$13 = _sfc_main;
1572
- exports._sfc_main$2 = _sfc_main$b;
1573
- exports._sfc_main$3 = _sfc_main$a;
1574
- exports._sfc_main$4 = _sfc_main$9;
1575
- exports._sfc_main$5 = _sfc_main$8;
1576
- exports._sfc_main$6 = _sfc_main$7;
1577
- exports._sfc_main$7 = _sfc_main$6;
1578
- exports._sfc_main$8 = _sfc_main$5;
1579
- exports._sfc_main$9 = _sfc_main$4;
1580
- //# sourceMappingURL=Popover.vue_vue_type_script_setup_true_lang-dvlDTcf1.cjs.map
1566
+ const _hoisted_1$4 = {
1567
+ key: 0,
1568
+ class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700"
1569
+ };
1570
+ const _hoisted_2$3 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
1571
+ const _hoisted_3$2 = { class: "flex-1 overflow-y-auto p-4" };
1572
+ const _hoisted_4$2 = {
1573
+ key: 1,
1574
+ class: "px-4 py-3 border-t border-gray-200 dark:border-gray-700"
1575
+ };
1576
+ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
1577
+ __name: "Drawer",
1578
+ props: {
1579
+ modelValue: { type: Boolean },
1580
+ position: { default: "right" },
1581
+ size: { default: "md" },
1582
+ title: {},
1583
+ showClose: { type: Boolean, default: true },
1584
+ closeOnOverlay: { type: Boolean, default: true },
1585
+ closeOnEscape: { type: Boolean, default: true },
1586
+ overlay: { type: Boolean, default: true }
1587
+ },
1588
+ emits: ["update:modelValue"],
1589
+ setup(__props, { emit: __emit }) {
1590
+ const props = __props;
1591
+ const emit = __emit;
1592
+ const close = () => {
1593
+ emit("update:modelValue", false);
1594
+ };
1595
+ const handleOverlayClick = () => {
1596
+ if (props.closeOnOverlay) {
1597
+ close();
1598
+ }
1599
+ };
1600
+ const handleKeydown = (e) => {
1601
+ if (e.key === "Escape" && props.closeOnEscape && props.modelValue) {
1602
+ close();
1603
+ }
1604
+ };
1605
+ vue.onMounted(() => {
1606
+ document.addEventListener("keydown", handleKeydown);
1607
+ });
1608
+ vue.onUnmounted(() => {
1609
+ document.removeEventListener("keydown", handleKeydown);
1610
+ });
1611
+ vue.watch(
1612
+ () => props.modelValue,
1613
+ (isOpen) => {
1614
+ if (isOpen) {
1615
+ document.body.style.overflow = "hidden";
1616
+ } else {
1617
+ document.body.style.overflow = "";
1618
+ }
1619
+ }
1620
+ );
1621
+ const sizeClasses = vue.computed(() => {
1622
+ const isHorizontal = props.position === "left" || props.position === "right";
1623
+ const sizes = {
1624
+ sm: isHorizontal ? "w-64" : "h-32",
1625
+ md: isHorizontal ? "w-80" : "h-48",
1626
+ lg: isHorizontal ? "w-96" : "h-64",
1627
+ xl: isHorizontal ? "w-[32rem]" : "h-96",
1628
+ full: isHorizontal ? "w-screen" : "h-screen"
1629
+ };
1630
+ return sizes[props.size];
1631
+ });
1632
+ const positionClasses = vue.computed(() => {
1633
+ const base = "fixed bg-white dark:bg-gray-800 shadow-xl flex flex-col";
1634
+ switch (props.position) {
1635
+ case "left":
1636
+ return `${base} inset-y-0 left-0 ${sizeClasses.value}`;
1637
+ case "right":
1638
+ return `${base} inset-y-0 right-0 ${sizeClasses.value}`;
1639
+ case "top":
1640
+ return `${base} inset-x-0 top-0 ${sizeClasses.value}`;
1641
+ case "bottom":
1642
+ return `${base} inset-x-0 bottom-0 ${sizeClasses.value}`;
1643
+ default:
1644
+ return base;
1645
+ }
1646
+ });
1647
+ const transformClasses = vue.computed(() => {
1648
+ switch (props.position) {
1649
+ case "left":
1650
+ return { enter: "-translate-x-full", leave: "-translate-x-full" };
1651
+ case "right":
1652
+ return { enter: "translate-x-full", leave: "translate-x-full" };
1653
+ case "top":
1654
+ return { enter: "-translate-y-full", leave: "-translate-y-full" };
1655
+ case "bottom":
1656
+ return { enter: "translate-y-full", leave: "translate-y-full" };
1657
+ default:
1658
+ return { enter: "", leave: "" };
1659
+ }
1660
+ });
1661
+ return (_ctx, _cache) => {
1662
+ return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
1663
+ vue.createVNode(vue.Transition, {
1664
+ "enter-active-class": "transition-opacity duration-300 ease-out",
1665
+ "enter-from-class": "opacity-0",
1666
+ "enter-to-class": "opacity-100",
1667
+ "leave-active-class": "transition-opacity duration-200 ease-in",
1668
+ "leave-from-class": "opacity-100",
1669
+ "leave-to-class": "opacity-0"
1670
+ }, {
1671
+ default: vue.withCtx(() => [
1672
+ __props.modelValue && __props.overlay ? (vue.openBlock(), vue.createElementBlock("div", {
1673
+ key: 0,
1674
+ class: "fixed inset-0 z-40 bg-black/50",
1675
+ onClick: handleOverlayClick
1676
+ })) : vue.createCommentVNode("", true)
1677
+ ]),
1678
+ _: 1
1679
+ }),
1680
+ vue.createVNode(vue.Transition, {
1681
+ "enter-active-class": "transition-transform duration-300 ease-out",
1682
+ "enter-from-class": transformClasses.value.enter,
1683
+ "enter-to-class": "translate-x-0 translate-y-0",
1684
+ "leave-active-class": "transition-transform duration-200 ease-in",
1685
+ "leave-from-class": "translate-x-0 translate-y-0",
1686
+ "leave-to-class": transformClasses.value.leave
1687
+ }, {
1688
+ default: vue.withCtx(() => [
1689
+ __props.modelValue ? (vue.openBlock(), vue.createElementBlock("div", {
1690
+ key: 0,
1691
+ class: vue.normalizeClass([positionClasses.value, "z-50"]),
1692
+ role: "dialog",
1693
+ "aria-modal": "true"
1694
+ }, [
1695
+ __props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
1696
+ vue.renderSlot(_ctx.$slots, "header", {}, () => [
1697
+ vue.createElementVNode("h2", _hoisted_2$3, vue.toDisplayString(__props.title), 1)
1698
+ ]),
1699
+ __props.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
1700
+ key: 0,
1701
+ type: "button",
1702
+ class: "p-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",
1703
+ onClick: close
1704
+ }, [
1705
+ vue.createVNode(vue.unref(vue$1.Icon), {
1706
+ icon: "heroicons:x-mark",
1707
+ class: "w-5 h-5"
1708
+ })
1709
+ ])) : vue.createCommentVNode("", true)
1710
+ ])) : vue.createCommentVNode("", true),
1711
+ vue.createElementVNode("div", _hoisted_3$2, [
1712
+ vue.renderSlot(_ctx.$slots, "default")
1713
+ ]),
1714
+ _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [
1715
+ vue.renderSlot(_ctx.$slots, "footer")
1716
+ ])) : vue.createCommentVNode("", true)
1717
+ ], 2)) : vue.createCommentVNode("", true)
1718
+ ]),
1719
+ _: 3
1720
+ }, 8, ["enter-from-class", "leave-to-class"])
1721
+ ]);
1722
+ };
1723
+ }
1724
+ });
1725
+ const _hoisted_1$3 = { "aria-label": "Breadcrumb" };
1726
+ const _hoisted_2$2 = { class: "flex items-center flex-wrap gap-1 text-sm" };
1727
+ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
1728
+ __name: "Breadcrumb",
1729
+ props: {
1730
+ items: {},
1731
+ separator: { default: "heroicons:chevron-right" },
1732
+ homeIcon: { default: "heroicons:home" },
1733
+ showHomeIcon: { type: Boolean, default: true }
1734
+ },
1735
+ emits: ["click"],
1736
+ setup(__props) {
1737
+ return (_ctx, _cache) => {
1738
+ return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$3, [
1739
+ vue.createElementVNode("ol", _hoisted_2$2, [
1740
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
1741
+ return vue.openBlock(), vue.createElementBlock("li", {
1742
+ key: index,
1743
+ class: "flex items-center"
1744
+ }, [
1745
+ index > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1746
+ key: 0,
1747
+ icon: __props.separator,
1748
+ class: "w-4 h-4 mx-2 text-gray-400 dark:text-gray-500 flex-shrink-0"
1749
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
1750
+ (vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(item.to ? "router-link" : item.href ? "a" : "span"), {
1751
+ to: item.to,
1752
+ href: item.href,
1753
+ class: vue.normalizeClass([
1754
+ "flex items-center gap-1.5 transition-colors",
1755
+ 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"
1756
+ ]),
1757
+ "aria-current": index === __props.items.length - 1 ? "page" : void 0,
1758
+ onClick: ($event) => _ctx.$emit("click", item, index)
1759
+ }, {
1760
+ default: vue.withCtx(() => [
1761
+ index === 0 && __props.showHomeIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1762
+ key: 0,
1763
+ icon: item.icon || __props.homeIcon,
1764
+ class: "w-4 h-4"
1765
+ }, null, 8, ["icon"])) : item.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1766
+ key: 1,
1767
+ icon: item.icon,
1768
+ class: "w-4 h-4"
1769
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
1770
+ vue.createElementVNode("span", null, vue.toDisplayString(item.label), 1)
1771
+ ]),
1772
+ _: 2
1773
+ }, 1032, ["to", "href", "class", "aria-current", "onClick"]))
1774
+ ]);
1775
+ }), 128))
1776
+ ])
1777
+ ]);
1778
+ };
1779
+ }
1780
+ });
1781
+ 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" };
1782
+ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
1783
+ __name: "Accordion",
1784
+ props: {
1785
+ mode: { default: "single" },
1786
+ defaultOpen: { default: () => [] }
1787
+ },
1788
+ setup(__props) {
1789
+ const props = __props;
1790
+ const openItems = vue.ref(new Set(props.defaultOpen));
1791
+ const toggle = (key) => {
1792
+ if (openItems.value.has(key)) {
1793
+ openItems.value.delete(key);
1794
+ } else {
1795
+ if (props.mode === "single") {
1796
+ openItems.value.clear();
1797
+ }
1798
+ openItems.value.add(key);
1799
+ }
1800
+ openItems.value = new Set(openItems.value);
1801
+ };
1802
+ const isOpen = (key) => openItems.value.has(key);
1803
+ vue.provide("accordion", {
1804
+ toggle,
1805
+ isOpen
1806
+ });
1807
+ return (_ctx, _cache) => {
1808
+ return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
1809
+ vue.renderSlot(_ctx.$slots, "default")
1810
+ ]);
1811
+ };
1812
+ }
1813
+ });
1814
+ const _hoisted_1$1 = ["disabled", "aria-expanded"];
1815
+ const _hoisted_2$1 = { class: "flex items-center gap-2 font-medium" };
1816
+ const _hoisted_3$1 = { class: "overflow-hidden" };
1817
+ const _hoisted_4$1 = { class: "px-4 py-3 bg-gray-50 dark:bg-gray-900 text-gray-700 dark:text-gray-300" };
1818
+ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
1819
+ __name: "AccordionItem",
1820
+ props: {
1821
+ itemKey: {},
1822
+ title: {},
1823
+ icon: {},
1824
+ disabled: { type: Boolean }
1825
+ },
1826
+ setup(__props) {
1827
+ const props = __props;
1828
+ const accordion = vue.inject("accordion");
1829
+ const isOpen = vue.computed(() => (accordion == null ? void 0 : accordion.isOpen(props.itemKey)) ?? false);
1830
+ const toggle = () => {
1831
+ if (!props.disabled) {
1832
+ accordion == null ? void 0 : accordion.toggle(props.itemKey);
1833
+ }
1834
+ };
1835
+ return (_ctx, _cache) => {
1836
+ return vue.openBlock(), vue.createElementBlock("div", null, [
1837
+ vue.createElementVNode("button", {
1838
+ type: "button",
1839
+ class: vue.normalizeClass(["flex items-center justify-between w-full px-4 py-3 text-left transition-colors", [
1840
+ __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"
1841
+ ]]),
1842
+ disabled: __props.disabled,
1843
+ "aria-expanded": isOpen.value,
1844
+ onClick: toggle
1845
+ }, [
1846
+ vue.createElementVNode("span", _hoisted_2$1, [
1847
+ __props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1848
+ key: 0,
1849
+ icon: __props.icon,
1850
+ class: "w-5 h-5"
1851
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
1852
+ vue.createTextVNode(" " + vue.toDisplayString(__props.title), 1)
1853
+ ]),
1854
+ vue.createVNode(vue.unref(vue$1.Icon), {
1855
+ icon: "heroicons:chevron-down",
1856
+ class: vue.normalizeClass(["w-5 h-5 transition-transform duration-200", { "rotate-180": isOpen.value }])
1857
+ }, null, 8, ["class"])
1858
+ ], 10, _hoisted_1$1),
1859
+ vue.createVNode(vue.Transition, {
1860
+ "enter-active-class": "transition-all duration-200 ease-out",
1861
+ "enter-from-class": "opacity-0 max-h-0",
1862
+ "enter-to-class": "opacity-100 max-h-screen",
1863
+ "leave-active-class": "transition-all duration-150 ease-in",
1864
+ "leave-from-class": "opacity-100 max-h-screen",
1865
+ "leave-to-class": "opacity-0 max-h-0"
1866
+ }, {
1867
+ default: vue.withCtx(() => [
1868
+ vue.withDirectives(vue.createElementVNode("div", _hoisted_3$1, [
1869
+ vue.createElementVNode("div", _hoisted_4$1, [
1870
+ vue.renderSlot(_ctx.$slots, "default")
1871
+ ])
1872
+ ], 512), [
1873
+ [vue.vShow, isOpen.value]
1874
+ ])
1875
+ ]),
1876
+ _: 3
1877
+ })
1878
+ ]);
1879
+ };
1880
+ }
1881
+ });
1882
+ const _hoisted_1 = {
1883
+ key: 0,
1884
+ class: "relative"
1885
+ };
1886
+ const _hoisted_2 = { class: "flex items-start gap-4" };
1887
+ const _hoisted_3 = { class: "flex-1 min-w-0 pt-0.5" };
1888
+ const _hoisted_4 = { class: "flex items-center justify-between gap-2" };
1889
+ const _hoisted_5 = { class: "text-sm font-medium text-gray-900 dark:text-white" };
1890
+ const _hoisted_6 = {
1891
+ key: 0,
1892
+ class: "text-xs text-gray-500 dark:text-gray-400 whitespace-nowrap"
1893
+ };
1894
+ const _hoisted_7 = {
1895
+ key: 0,
1896
+ class: "mt-1 text-sm text-gray-600 dark:text-gray-400"
1897
+ };
1898
+ const _hoisted_8 = {
1899
+ key: 1,
1900
+ class: "flex items-start overflow-x-auto pb-4"
1901
+ };
1902
+ const _hoisted_9 = { class: "flex items-center w-full" };
1903
+ const _hoisted_10 = { class: "mt-2 text-center max-w-[120px]" };
1904
+ const _hoisted_11 = { class: "text-xs font-medium text-gray-900 dark:text-white" };
1905
+ const _hoisted_12 = {
1906
+ key: 0,
1907
+ class: "text-xs text-gray-500 dark:text-gray-400"
1908
+ };
1909
+ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
1910
+ __name: "Timeline",
1911
+ props: {
1912
+ items: {},
1913
+ orientation: { default: "vertical" }
1914
+ },
1915
+ setup(__props) {
1916
+ const getStatusClasses = (status) => {
1917
+ switch (status) {
1918
+ case "completed":
1919
+ return {
1920
+ dot: "bg-green-500",
1921
+ line: "bg-green-500",
1922
+ icon: "text-white"
1923
+ };
1924
+ case "current":
1925
+ return {
1926
+ dot: "bg-primary-500 ring-4 ring-primary-100 dark:ring-primary-900",
1927
+ line: "bg-gray-200 dark:bg-gray-700",
1928
+ icon: "text-white"
1929
+ };
1930
+ case "error":
1931
+ return {
1932
+ dot: "bg-red-500",
1933
+ line: "bg-red-500",
1934
+ icon: "text-white"
1935
+ };
1936
+ default:
1937
+ return {
1938
+ dot: "bg-gray-300 dark:bg-gray-600",
1939
+ line: "bg-gray-200 dark:bg-gray-700",
1940
+ icon: "text-gray-500 dark:text-gray-400"
1941
+ };
1942
+ }
1943
+ };
1944
+ const getDefaultIcon = (status) => {
1945
+ switch (status) {
1946
+ case "completed":
1947
+ return "heroicons:check";
1948
+ case "error":
1949
+ return "heroicons:x-mark";
1950
+ default:
1951
+ return "";
1952
+ }
1953
+ };
1954
+ return (_ctx, _cache) => {
1955
+ return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
1956
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
1957
+ return vue.openBlock(), vue.createElementBlock("div", {
1958
+ key: item.key,
1959
+ class: "relative pb-8 last:pb-0"
1960
+ }, [
1961
+ index < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
1962
+ key: 0,
1963
+ class: vue.normalizeClass(["absolute left-4 top-8 w-0.5 h-full -ml-px", getStatusClasses(item.status).line])
1964
+ }, null, 2)) : vue.createCommentVNode("", true),
1965
+ vue.createElementVNode("div", _hoisted_2, [
1966
+ vue.createElementVNode("div", {
1967
+ class: vue.normalizeClass(["relative z-10 flex items-center justify-center w-8 h-8 rounded-full flex-shrink-0", getStatusClasses(item.status).dot])
1968
+ }, [
1969
+ item.icon || getDefaultIcon(item.status) ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1970
+ key: 0,
1971
+ icon: item.icon || getDefaultIcon(item.status),
1972
+ class: vue.normalizeClass(["w-4 h-4", getStatusClasses(item.status).icon])
1973
+ }, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
1974
+ ], 2),
1975
+ vue.createElementVNode("div", _hoisted_3, [
1976
+ vue.createElementVNode("div", _hoisted_4, [
1977
+ vue.createElementVNode("h3", _hoisted_5, vue.toDisplayString(item.title), 1),
1978
+ item.date ? (vue.openBlock(), vue.createElementBlock("time", _hoisted_6, vue.toDisplayString(item.date), 1)) : vue.createCommentVNode("", true)
1979
+ ]),
1980
+ item.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_7, vue.toDisplayString(item.description), 1)) : vue.createCommentVNode("", true),
1981
+ vue.renderSlot(_ctx.$slots, item.key, { item })
1982
+ ])
1983
+ ])
1984
+ ]);
1985
+ }), 128))
1986
+ ])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
1987
+ (vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
1988
+ return vue.openBlock(), vue.createElementBlock("div", {
1989
+ key: item.key,
1990
+ class: vue.normalizeClass(["flex flex-col items-center flex-shrink-0", { "flex-1": index < __props.items.length - 1 }])
1991
+ }, [
1992
+ vue.createElementVNode("div", _hoisted_9, [
1993
+ vue.createElementVNode("div", {
1994
+ class: vue.normalizeClass(["relative z-10 flex items-center justify-center w-8 h-8 rounded-full flex-shrink-0", getStatusClasses(item.status).dot])
1995
+ }, [
1996
+ item.icon || getDefaultIcon(item.status) ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
1997
+ key: 0,
1998
+ icon: item.icon || getDefaultIcon(item.status),
1999
+ class: vue.normalizeClass(["w-4 h-4", getStatusClasses(item.status).icon])
2000
+ }, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
2001
+ ], 2),
2002
+ index < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
2003
+ key: 0,
2004
+ class: vue.normalizeClass(["flex-1 h-0.5 mx-2", getStatusClasses(item.status).line])
2005
+ }, null, 2)) : vue.createCommentVNode("", true)
2006
+ ]),
2007
+ vue.createElementVNode("div", _hoisted_10, [
2008
+ vue.createElementVNode("h3", _hoisted_11, vue.toDisplayString(item.title), 1),
2009
+ item.date ? (vue.openBlock(), vue.createElementBlock("time", _hoisted_12, vue.toDisplayString(item.date), 1)) : vue.createCommentVNode("", true)
2010
+ ])
2011
+ ], 2);
2012
+ }), 128))
2013
+ ]));
2014
+ };
2015
+ }
2016
+ });
2017
+ exports._sfc_main = _sfc_main$i;
2018
+ exports._sfc_main$1 = _sfc_main$h;
2019
+ exports._sfc_main$10 = _sfc_main$8;
2020
+ exports._sfc_main$11 = _sfc_main$7;
2021
+ exports._sfc_main$12 = _sfc_main$6;
2022
+ exports._sfc_main$13 = _sfc_main$5;
2023
+ exports._sfc_main$14 = _sfc_main$4;
2024
+ exports._sfc_main$15 = _sfc_main$3;
2025
+ exports._sfc_main$16 = _sfc_main$2;
2026
+ exports._sfc_main$17 = _sfc_main$1;
2027
+ exports._sfc_main$18 = _sfc_main;
2028
+ exports._sfc_main$2 = _sfc_main$g;
2029
+ exports._sfc_main$3 = _sfc_main$f;
2030
+ exports._sfc_main$4 = _sfc_main$e;
2031
+ exports._sfc_main$5 = _sfc_main$d;
2032
+ exports._sfc_main$6 = _sfc_main$c;
2033
+ exports._sfc_main$7 = _sfc_main$b;
2034
+ exports._sfc_main$8 = _sfc_main$a;
2035
+ exports._sfc_main$9 = _sfc_main$9;
2036
+ //# sourceMappingURL=Timeline.vue_vue_type_script_setup_true_lang-C2Mq4XOO.cjs.map