cisse-vue-ui 0.2.7 → 0.3.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 (110) hide show
  1. package/README.md +666 -664
  2. package/dist/{Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js → DatePicker.vue_vue_type_script_setup_true_lang-DgGJ5-8v.js} +372 -60
  3. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-DgGJ5-8v.js.map +1 -0
  4. package/dist/{Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs → DatePicker.vue_vue_type_script_setup_true_lang-qux1VNn0.cjs} +371 -59
  5. package/dist/DatePicker.vue_vue_type_script_setup_true_lang-qux1VNn0.cjs.map +1 -0
  6. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js.map +1 -1
  7. package/dist/Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs.map +1 -1
  8. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs.map +1 -1
  9. package/dist/PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js.map +1 -1
  10. package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js → Popover.vue_vue_type_script_setup_true_lang-Q7gRZsT9.js} +203 -43
  11. package/dist/Popover.vue_vue_type_script_setup_true_lang-Q7gRZsT9.js.map +1 -0
  12. package/dist/{CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs → Popover.vue_vue_type_script_setup_true_lang-dvlDTcf1.cjs} +191 -31
  13. package/dist/Popover.vue_vue_type_script_setup_true_lang-dvlDTcf1.cjs.map +1 -0
  14. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-mlqLBP5W.cjs → Skeleton.vue_vue_type_script_setup_true_lang-D2S5g9s5.cjs} +325 -72
  15. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-D2S5g9s5.cjs.map +1 -0
  16. package/dist/{EmptyState.vue_vue_type_script_setup_true_lang-CrVvFwXA.js → Skeleton.vue_vue_type_script_setup_true_lang-DRC4EADS.js} +326 -73
  17. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-DRC4EADS.js.map +1 -0
  18. package/dist/_plugin-vue_export-helper-1tPrXgE0.js +11 -0
  19. package/dist/_plugin-vue_export-helper-1tPrXgE0.js.map +1 -0
  20. package/dist/_plugin-vue_export-helper-DM9IkUGy.cjs +10 -0
  21. package/dist/_plugin-vue_export-helper-DM9IkUGy.cjs.map +1 -0
  22. package/dist/cisse-vue-ui.css +83 -0
  23. package/dist/components/core/Avatar.stories.d.ts +12 -0
  24. package/dist/components/core/Button.stories.d.ts +18 -0
  25. package/dist/components/core/CardComponent.stories.d.ts +10 -0
  26. package/dist/components/core/CollapsibleCard.stories.d.ts +10 -0
  27. package/dist/components/core/Dropdown.stories.d.ts +11 -0
  28. package/dist/components/core/Popover.stories.d.ts +10 -0
  29. package/dist/components/core/Popover.vue.d.ts +42 -0
  30. package/dist/components/core/StatusBadge.stories.d.ts +13 -0
  31. package/dist/components/core/Stepper.stories.d.ts +12 -0
  32. package/dist/components/core/Tabs.stories.d.ts +10 -0
  33. package/dist/components/core/Tooltip.stories.d.ts +10 -0
  34. package/dist/components/core/Tooltip.vue.d.ts +32 -0
  35. package/dist/components/core/index.cjs +15 -13
  36. package/dist/components/core/index.cjs.map +1 -1
  37. package/dist/components/core/index.d.ts +4 -0
  38. package/dist/components/core/index.js +4 -2
  39. package/dist/components/feedback/Alert.stories.d.ts +13 -0
  40. package/dist/components/feedback/EmptyState.stories.d.ts +13 -0
  41. package/dist/components/feedback/LoadingSpinner.stories.d.ts +11 -0
  42. package/dist/components/feedback/Modal.stories.d.ts +11 -0
  43. package/dist/components/feedback/PaginationControls.stories.d.ts +12 -0
  44. package/dist/components/feedback/Progress.stories.d.ts +14 -0
  45. package/dist/components/feedback/Progress.vue.d.ts +30 -0
  46. package/dist/components/feedback/Skeleton.stories.d.ts +15 -0
  47. package/dist/components/feedback/Skeleton.vue.d.ts +19 -0
  48. package/dist/components/feedback/Toast.stories.d.ts +12 -0
  49. package/dist/components/feedback/Toast.vue.d.ts +23 -0
  50. package/dist/components/feedback/ToastContainer.vue.d.ts +22 -0
  51. package/dist/components/feedback/index.cjs +12 -8
  52. package/dist/components/feedback/index.cjs.map +1 -1
  53. package/dist/components/feedback/index.d.ts +8 -0
  54. package/dist/components/feedback/index.js +6 -2
  55. package/dist/components/form/Checkbox.stories.d.ts +13 -0
  56. package/dist/components/form/DatePicker.stories.d.ts +15 -0
  57. package/dist/components/form/DatePicker.vue.d.ts +34 -0
  58. package/dist/components/form/FormGroup.stories.d.ts +10 -0
  59. package/dist/components/form/FormInput.stories.d.ts +12 -0
  60. package/dist/components/form/FormSelect.stories.d.ts +11 -0
  61. package/dist/components/form/Slider.stories.d.ts +13 -0
  62. package/dist/components/form/Slider.vue.d.ts +29 -0
  63. package/dist/components/form/Switch.stories.d.ts +11 -0
  64. package/dist/components/form/index.cjs +10 -8
  65. package/dist/components/form/index.cjs.map +1 -1
  66. package/dist/components/form/index.d.ts +2 -0
  67. package/dist/components/form/index.js +3 -1
  68. package/dist/components/index.cjs +37 -29
  69. package/dist/components/index.cjs.map +1 -1
  70. package/dist/components/index.js +12 -4
  71. package/dist/components/layout/BaseLayout.stories.d.ts +9 -0
  72. package/dist/components/layout/BaseLayout.vue.d.ts +1 -1
  73. package/dist/components/layout/PageLayout.stories.d.ts +10 -0
  74. package/dist/components/type/BadgeType.stories.d.ts +13 -0
  75. package/dist/components/type/BooleanType.stories.d.ts +12 -0
  76. package/dist/components/type/DateType.stories.d.ts +12 -0
  77. package/dist/components/type/NumberType.stories.d.ts +11 -0
  78. package/dist/components/type/TextType.stories.d.ts +10 -0
  79. package/dist/composables/index.cjs +7 -6
  80. package/dist/composables/index.cjs.map +1 -1
  81. package/dist/composables/index.d.ts +1 -0
  82. package/dist/composables/index.js +3 -2
  83. package/dist/composables/useToast.d.ts +30 -0
  84. package/dist/index-BQtfDfYo.js +59 -0
  85. package/dist/index-BQtfDfYo.js.map +1 -0
  86. package/dist/index-CzzlUYhY.cjs +58 -0
  87. package/dist/index-CzzlUYhY.cjs.map +1 -0
  88. package/dist/index.cjs +45 -36
  89. package/dist/index.cjs.map +1 -1
  90. package/dist/index.js +15 -6
  91. package/dist/style.css +1 -1
  92. package/dist/useDropdown-DHFnd259.cjs.map +1 -1
  93. package/dist/useDropdown-iVu14E6s.js.map +1 -1
  94. package/dist/{useModal-Aq8hn152.js → useToast-DT9hFfpM.js} +49 -1
  95. package/dist/useToast-DT9hFfpM.js.map +1 -0
  96. package/dist/{useModal-DDF_ZS8C.cjs → useToast-nJXpFz_M.cjs} +49 -1
  97. package/dist/useToast-nJXpFz_M.cjs.map +1 -0
  98. package/package.json +21 -2
  99. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-ClNZxjzF.cjs.map +0 -1
  100. package/dist/CollapsibleCard.vue_vue_type_script_setup_true_lang-Y1wvT4aS.js.map +0 -1
  101. package/dist/EmptyState.vue_vue_type_script_setup_true_lang-CrVvFwXA.js.map +0 -1
  102. package/dist/EmptyState.vue_vue_type_script_setup_true_lang-mlqLBP5W.cjs.map +0 -1
  103. package/dist/Switch.vue_vue_type_script_setup_true_lang-dRPxDu8I.js.map +0 -1
  104. package/dist/Switch.vue_vue_type_script_setup_true_lang-wRTWorCd.cjs.map +0 -1
  105. package/dist/index-CCWZb44b.cjs +0 -50
  106. package/dist/index-CCWZb44b.cjs.map +0 -1
  107. package/dist/index-RD8wq3O6.js +0 -51
  108. package/dist/index-RD8wq3O6.js.map +0 -1
  109. package/dist/useModal-Aq8hn152.js.map +0 -1
  110. package/dist/useModal-DDF_ZS8C.cjs.map +0 -1
@@ -1,12 +1,13 @@
1
- import { defineComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, toDisplayString, onMounted, onUnmounted, withModifiers, renderSlot, createTextVNode, createVNode, unref, Fragment, renderList, computed, createBlock } from "vue";
1
+ import { defineComponent, createElementBlock, openBlock, createElementVNode, createCommentVNode, normalizeClass, toDisplayString, onMounted, onUnmounted, withModifiers, renderSlot, createTextVNode, createVNode, unref, Fragment, renderList, computed, createBlock, Teleport, TransitionGroup, withCtx, normalizeStyle } from "vue";
2
2
  import { Icon } from "@iconify/vue";
3
- const _hoisted_1$6 = { class: "flex items-center justify-center py-12" };
4
- const _hoisted_2$5 = { class: "text-center" };
5
- const _hoisted_3$5 = {
3
+ import { _ as _export_sfc } from "./_plugin-vue_export-helper-1tPrXgE0.js";
4
+ const _hoisted_1$9 = { class: "flex items-center justify-center py-12" };
5
+ const _hoisted_2$7 = { class: "text-center" };
6
+ const _hoisted_3$7 = {
6
7
  key: 0,
7
8
  class: "mt-4 text-gray-600 dark:text-gray-400"
8
9
  };
9
- const _sfc_main$6 = /* @__PURE__ */ defineComponent({
10
+ const _sfc_main$a = /* @__PURE__ */ defineComponent({
10
11
  __name: "LoadingSpinner",
11
12
  props: {
12
13
  text: {},
@@ -19,29 +20,29 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
19
20
  lg: "h-16 w-16"
20
21
  };
21
22
  return (_ctx, _cache) => {
22
- return openBlock(), createElementBlock("div", _hoisted_1$6, [
23
- createElementVNode("div", _hoisted_2$5, [
23
+ return openBlock(), createElementBlock("div", _hoisted_1$9, [
24
+ createElementVNode("div", _hoisted_2$7, [
24
25
  createElementVNode("div", {
25
26
  class: normalizeClass([sizeClasses[__props.size], "border-primary inline-block animate-spin rounded-full border-4 border-solid border-r-transparent"])
26
27
  }, null, 2),
27
- __props.text ? (openBlock(), createElementBlock("p", _hoisted_3$5, toDisplayString(__props.text), 1)) : createCommentVNode("", true)
28
+ __props.text ? (openBlock(), createElementBlock("p", _hoisted_3$7, toDisplayString(__props.text), 1)) : createCommentVNode("", true)
28
29
  ])
29
30
  ]);
30
31
  };
31
32
  }
32
33
  });
33
- const _hoisted_1$5 = {
34
+ const _hoisted_1$8 = {
34
35
  key: 0,
35
36
  class: "flex items-center justify-between border-b border-gray-200 px-6 py-4 dark:border-gray-700"
36
37
  };
37
- const _hoisted_2$4 = { class: "text-xl font-semibold text-gray-900 dark:text-gray-100" };
38
- const _hoisted_3$4 = { class: "sr-only" };
39
- const _hoisted_4$3 = { class: "flex-1 overflow-y-auto px-6 py-4" };
38
+ const _hoisted_2$6 = { class: "text-xl font-semibold text-gray-900 dark:text-gray-100" };
39
+ const _hoisted_3$6 = { class: "sr-only" };
40
+ const _hoisted_4$4 = { class: "flex-1 overflow-y-auto px-6 py-4" };
40
41
  const _hoisted_5$1 = {
41
42
  key: 1,
42
43
  class: "flex items-center justify-end gap-3 border-t border-gray-200 px-6 py-4 dark:border-gray-700"
43
44
  };
44
- const _sfc_main$5 = /* @__PURE__ */ defineComponent({
45
+ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
45
46
  __name: "Modal",
46
47
  props: {
47
48
  title: { default: "" },
@@ -86,8 +87,8 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
86
87
  createElementVNode("div", {
87
88
  class: normalizeClass([sizeClasses[__props.size], "flex max-h-[90vh] w-full flex-col rounded-lg bg-white shadow-xl dark:bg-gray-900"])
88
89
  }, [
89
- __props.title || _ctx.$slots.header || _ctx.$slots.title ? (openBlock(), createElementBlock("div", _hoisted_1$5, [
90
- createElementVNode("h3", _hoisted_2$4, [
90
+ __props.title || _ctx.$slots.header || _ctx.$slots.title ? (openBlock(), createElementBlock("div", _hoisted_1$8, [
91
+ createElementVNode("h3", _hoisted_2$6, [
91
92
  renderSlot(_ctx.$slots, "header", {}, () => [
92
93
  renderSlot(_ctx.$slots, "title", {}, () => [
93
94
  createTextVNode(toDisplayString(__props.title), 1)
@@ -103,10 +104,10 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
103
104
  class: "h-5 w-5",
104
105
  icon: "lucide:x"
105
106
  }),
106
- createElementVNode("span", _hoisted_3$4, toDisplayString(__props.closeButtonLabel), 1)
107
+ createElementVNode("span", _hoisted_3$6, toDisplayString(__props.closeButtonLabel), 1)
107
108
  ])
108
109
  ])) : createCommentVNode("", true),
109
- createElementVNode("div", _hoisted_4$3, [
110
+ createElementVNode("div", _hoisted_4$4, [
110
111
  renderSlot(_ctx.$slots, "default")
111
112
  ]),
112
113
  _ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_5$1, [
@@ -117,26 +118,28 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
117
118
  };
118
119
  }
119
120
  });
120
- const _hoisted_1$4 = {
121
+ const _hoisted_1$7 = {
121
122
  key: 0,
122
- class: "flex items-center justify-between border-t border-gray-200 px-6 py-4 dark:border-gray-700"
123
+ class: "flex flex-col sm:flex-row sm:items-center sm:justify-between gap-3 border-t border-gray-200 px-4 sm:px-6 py-4 dark:border-gray-700"
123
124
  };
124
- const _hoisted_2$3 = { class: "flex items-center gap-4" };
125
- const _hoisted_3$3 = { class: "text-sm text-gray-700 dark:text-gray-300" };
126
- const _hoisted_4$2 = {
125
+ const _hoisted_2$5 = { class: "flex flex-col sm:flex-row sm:items-center gap-3 sm:gap-4" };
126
+ const _hoisted_3$5 = { class: "text-sm text-gray-700 dark:text-gray-300 text-center sm:text-left" };
127
+ const _hoisted_4$3 = {
127
128
  key: 0,
128
- class: "flex items-center gap-2"
129
+ class: "flex items-center justify-center sm:justify-start gap-2"
129
130
  };
130
131
  const _hoisted_5 = {
131
- class: "text-sm text-gray-600 dark:text-gray-400",
132
+ class: "text-sm text-gray-600 dark:text-gray-400 hidden sm:inline",
132
133
  for: "page-size"
133
134
  };
134
135
  const _hoisted_6 = ["value"];
135
136
  const _hoisted_7 = ["value"];
136
- const _hoisted_8 = { class: "flex gap-2" };
137
+ const _hoisted_8 = { class: "flex justify-center sm:justify-end gap-2" };
137
138
  const _hoisted_9 = ["disabled"];
138
- const _hoisted_10 = ["disabled"];
139
- const _sfc_main$4 = /* @__PURE__ */ defineComponent({
139
+ const _hoisted_10 = { class: "hidden sm:inline" };
140
+ const _hoisted_11 = ["disabled"];
141
+ const _hoisted_12 = { class: "hidden sm:inline" };
142
+ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
140
143
  __name: "PaginationControls",
141
144
  props: {
142
145
  currentPage: {},
@@ -164,10 +167,10 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
164
167
  emit("update:pageSize", Number(target.value));
165
168
  };
166
169
  return (_ctx, _cache) => {
167
- return __props.totalPages > 1 ? (openBlock(), createElementBlock("div", _hoisted_1$4, [
168
- createElementVNode("div", _hoisted_2$3, [
169
- createElementVNode("div", _hoisted_3$3, toDisplayString(__props.pageLabel) + " " + toDisplayString(__props.currentPage) + " " + toDisplayString(__props.ofLabel) + " " + toDisplayString(__props.totalPages), 1),
170
- __props.showPageSize ? (openBlock(), createElementBlock("div", _hoisted_4$2, [
170
+ return __props.totalPages > 1 ? (openBlock(), createElementBlock("div", _hoisted_1$7, [
171
+ createElementVNode("div", _hoisted_2$5, [
172
+ createElementVNode("div", _hoisted_3$5, toDisplayString(__props.pageLabel) + " " + toDisplayString(__props.currentPage) + " " + toDisplayString(__props.ofLabel) + " " + toDisplayString(__props.totalPages), 1),
173
+ __props.showPageSize ? (openBlock(), createElementBlock("div", _hoisted_4$3, [
171
174
  createElementVNode("label", _hoisted_5, toDisplayString(__props.itemsPerPageLabel), 1),
172
175
  createElementVNode("select", {
173
176
  id: "page-size",
@@ -187,42 +190,42 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
187
190
  createElementVNode("div", _hoisted_8, [
188
191
  createElementVNode("button", {
189
192
  disabled: __props.currentPage === 1 || __props.loading,
190
- class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
193
+ class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
191
194
  onClick: _cache[0] || (_cache[0] = ($event) => changePage(__props.currentPage - 1))
192
195
  }, [
193
196
  createVNode(unref(Icon), {
194
197
  class: "h-4 w-4",
195
198
  icon: "lucide:chevron-left"
196
199
  }),
197
- createTextVNode(" " + toDisplayString(__props.previousLabel), 1)
200
+ createElementVNode("span", _hoisted_10, toDisplayString(__props.previousLabel), 1)
198
201
  ], 8, _hoisted_9),
199
202
  createElementVNode("button", {
200
203
  disabled: __props.currentPage === __props.totalPages || __props.loading,
201
- class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
204
+ class: "focus:ring-primary inline-flex items-center gap-1 rounded-lg border border-gray-300 bg-white px-3 sm:px-4 py-2 text-sm font-medium text-gray-700 hover:bg-gray-50 disabled:cursor-not-allowed disabled:opacity-50 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700",
202
205
  onClick: _cache[1] || (_cache[1] = ($event) => changePage(__props.currentPage + 1))
203
206
  }, [
204
- createTextVNode(toDisplayString(__props.nextLabel) + " ", 1),
207
+ createElementVNode("span", _hoisted_12, toDisplayString(__props.nextLabel), 1),
205
208
  createVNode(unref(Icon), {
206
209
  class: "h-4 w-4",
207
210
  icon: "lucide:chevron-right"
208
211
  })
209
- ], 8, _hoisted_10)
212
+ ], 8, _hoisted_11)
210
213
  ])
211
214
  ])) : createCommentVNode("", true);
212
215
  };
213
216
  }
214
217
  });
215
- const _hoisted_1$3 = { class: "flex max-w-md items-start space-x-3 rounded-lg border border-gray-200 bg-white p-4 shadow-lg dark:border-gray-800 dark:bg-black" };
216
- const _hoisted_2$2 = { class: "flex min-w-0 flex-1 flex-col" };
217
- const _hoisted_3$2 = {
218
+ const _hoisted_1$6 = { class: "flex max-w-md items-start space-x-3 rounded-lg border border-gray-200 bg-white p-4 shadow-lg dark:border-gray-800 dark:bg-black" };
219
+ const _hoisted_2$4 = { class: "flex min-w-0 flex-1 flex-col" };
220
+ const _hoisted_3$4 = {
218
221
  key: 0,
219
222
  class: "text-sm font-semibold text-gray-900 dark:text-gray-100"
220
223
  };
221
- const _hoisted_4$1 = {
224
+ const _hoisted_4$2 = {
222
225
  key: 1,
223
226
  class: "mt-1 text-sm text-gray-600 dark:text-gray-400"
224
227
  };
225
- const _sfc_main$3 = /* @__PURE__ */ defineComponent({
228
+ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
226
229
  __name: "NotificationComponent",
227
230
  props: {
228
231
  notification: {},
@@ -289,7 +292,7 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
289
292
  }
290
293
  });
291
294
  return (_ctx, _cache) => {
292
- return openBlock(), createElementBlock("div", _hoisted_1$3, [
295
+ return openBlock(), createElementBlock("div", _hoisted_1$6, [
293
296
  createElementVNode("div", {
294
297
  class: normalizeClass([bgColor.value, "flex items-center justify-center rounded-full p-2"])
295
298
  }, [
@@ -298,9 +301,9 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
298
301
  icon: iconName.value
299
302
  }, null, 8, ["class", "icon"])
300
303
  ], 2),
301
- createElementVNode("div", _hoisted_2$2, [
302
- __props.notification.title ? (openBlock(), createElementBlock("h4", _hoisted_3$2, toDisplayString(__props.notification.title), 1)) : createCommentVNode("", true),
303
- __props.notification.message ? (openBlock(), createElementBlock("p", _hoisted_4$1, toDisplayString(__props.notification.message), 1)) : createCommentVNode("", true)
304
+ createElementVNode("div", _hoisted_2$4, [
305
+ __props.notification.title ? (openBlock(), createElementBlock("h4", _hoisted_3$4, toDisplayString(__props.notification.title), 1)) : createCommentVNode("", true),
306
+ __props.notification.message ? (openBlock(), createElementBlock("p", _hoisted_4$2, toDisplayString(__props.notification.message), 1)) : createCommentVNode("", true)
304
307
  ]),
305
308
  createElementVNode("button", {
306
309
  class: "shrink-0 text-gray-400 transition-colors hover:text-gray-600 dark:text-gray-600 dark:hover:text-gray-400",
@@ -315,8 +318,8 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
315
318
  };
316
319
  }
317
320
  });
318
- const _hoisted_1$2 = { class: "fixed top-5 right-5 z-50 flex flex-col gap-3" };
319
- const _sfc_main$2 = /* @__PURE__ */ defineComponent({
321
+ const _hoisted_1$5 = { class: "fixed top-5 right-5 z-50 flex flex-col gap-3" };
322
+ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
320
323
  __name: "NotificationList",
321
324
  props: {
322
325
  notifications: {},
@@ -327,9 +330,9 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
327
330
  setup(__props, { emit: __emit }) {
328
331
  const emit = __emit;
329
332
  return (_ctx, _cache) => {
330
- return openBlock(), createElementBlock("div", _hoisted_1$2, [
333
+ return openBlock(), createElementBlock("div", _hoisted_1$5, [
331
334
  (openBlock(true), createElementBlock(Fragment, null, renderList(__props.notifications, (notification) => {
332
- return openBlock(), createBlock(_sfc_main$3, {
335
+ return openBlock(), createBlock(_sfc_main$7, {
333
336
  key: notification.id,
334
337
  notification,
335
338
  "auto-dismiss": __props.autoDismiss,
@@ -341,13 +344,13 @@ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
341
344
  };
342
345
  }
343
346
  });
344
- const _hoisted_1$1 = { class: "flex-1" };
345
- const _hoisted_2$1 = {
347
+ const _hoisted_1$4 = { class: "flex-1" };
348
+ const _hoisted_2$3 = {
346
349
  key: 0,
347
350
  class: "mb-1 font-medium text-gray-900 dark:text-white"
348
351
  };
349
- const _hoisted_3$1 = { class: "text-sm text-gray-700 dark:text-gray-300" };
350
- const _sfc_main$1 = /* @__PURE__ */ defineComponent({
352
+ const _hoisted_3$3 = { class: "text-sm text-gray-700 dark:text-gray-300" };
353
+ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
351
354
  __name: "Alert",
352
355
  props: {
353
356
  variant: { default: "info" },
@@ -399,9 +402,9 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
399
402
  icon: __props.icon || unref(styles).icon,
400
403
  class: normalizeClass(["size-5 shrink-0", unref(styles).iconColor])
401
404
  }, null, 8, ["icon", "class"]),
402
- createElementVNode("div", _hoisted_1$1, [
403
- __props.title ? (openBlock(), createElementBlock("h4", _hoisted_2$1, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
404
- createElementVNode("div", _hoisted_3$1, [
405
+ createElementVNode("div", _hoisted_1$4, [
406
+ __props.title ? (openBlock(), createElementBlock("h4", _hoisted_2$3, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
407
+ createElementVNode("div", _hoisted_3$3, [
405
408
  renderSlot(_ctx.$slots, "default")
406
409
  ])
407
410
  ]),
@@ -420,17 +423,17 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
420
423
  };
421
424
  }
422
425
  });
423
- const _hoisted_1 = { class: "py-12 text-center" };
424
- const _hoisted_2 = {
426
+ const _hoisted_1$3 = { class: "py-12 text-center" };
427
+ const _hoisted_2$2 = {
425
428
  key: 1,
426
429
  class: "mb-2 text-lg font-medium text-gray-900 dark:text-white"
427
430
  };
428
- const _hoisted_3 = { class: "text-gray-500 dark:text-gray-400" };
429
- const _hoisted_4 = {
431
+ const _hoisted_3$2 = { class: "text-gray-500 dark:text-gray-400" };
432
+ const _hoisted_4$1 = {
430
433
  key: 2,
431
434
  class: "mt-4"
432
435
  };
433
- const _sfc_main = /* @__PURE__ */ defineComponent({
436
+ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
434
437
  __name: "EmptyState",
435
438
  props: {
436
439
  message: { default: "No results found" },
@@ -439,32 +442,282 @@ const _sfc_main = /* @__PURE__ */ defineComponent({
439
442
  },
440
443
  setup(__props) {
441
444
  return (_ctx, _cache) => {
442
- return openBlock(), createElementBlock("div", _hoisted_1, [
445
+ return openBlock(), createElementBlock("div", _hoisted_1$3, [
443
446
  __props.icon ? (openBlock(), createBlock(unref(Icon), {
444
447
  key: 0,
445
448
  icon: __props.icon,
446
449
  class: "mx-auto mb-4 size-12 text-gray-400 dark:text-gray-500"
447
450
  }, null, 8, ["icon"])) : createCommentVNode("", true),
448
- __props.title ? (openBlock(), createElementBlock("h3", _hoisted_2, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
449
- createElementVNode("p", _hoisted_3, [
451
+ __props.title ? (openBlock(), createElementBlock("h3", _hoisted_2$2, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
452
+ createElementVNode("p", _hoisted_3$2, [
450
453
  renderSlot(_ctx.$slots, "default", {}, () => [
451
454
  createTextVNode(toDisplayString(__props.message), 1)
452
455
  ])
453
456
  ]),
454
- _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_4, [
457
+ _ctx.$slots.action ? (openBlock(), createElementBlock("div", _hoisted_4$1, [
455
458
  renderSlot(_ctx.$slots, "action")
456
459
  ])) : createCommentVNode("", true)
457
460
  ]);
458
461
  };
459
462
  }
460
463
  });
464
+ const _hoisted_1$2 = { class: "flex-1 min-w-0" };
465
+ const _hoisted_2$1 = {
466
+ key: 0,
467
+ class: "font-medium text-gray-900 dark:text-white"
468
+ };
469
+ const _hoisted_3$1 = { class: "text-sm text-gray-700 dark:text-gray-300" };
470
+ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
471
+ __name: "Toast",
472
+ props: {
473
+ message: {},
474
+ type: { default: "info" },
475
+ title: {},
476
+ closable: { type: Boolean, default: true },
477
+ duration: { default: 5e3 }
478
+ },
479
+ emits: ["close"],
480
+ setup(__props, { emit: __emit }) {
481
+ const props = __props;
482
+ const emit = __emit;
483
+ const typeConfig = {
484
+ success: {
485
+ icon: "lucide:check-circle",
486
+ bg: "bg-green-50 border-green-200 dark:bg-green-900/20 dark:border-green-800",
487
+ iconColor: "text-green-500"
488
+ },
489
+ error: {
490
+ icon: "lucide:x-circle",
491
+ bg: "bg-red-50 border-red-200 dark:bg-red-900/20 dark:border-red-800",
492
+ iconColor: "text-red-500"
493
+ },
494
+ warning: {
495
+ icon: "lucide:alert-triangle",
496
+ bg: "bg-yellow-50 border-yellow-200 dark:bg-yellow-900/20 dark:border-yellow-800",
497
+ iconColor: "text-yellow-500"
498
+ },
499
+ info: {
500
+ icon: "lucide:info",
501
+ bg: "bg-blue-50 border-blue-200 dark:bg-blue-900/20 dark:border-blue-800",
502
+ iconColor: "text-blue-500"
503
+ }
504
+ };
505
+ const config = typeConfig[props.type];
506
+ if (props.duration > 0) {
507
+ setTimeout(() => {
508
+ emit("close");
509
+ }, props.duration);
510
+ }
511
+ return (_ctx, _cache) => {
512
+ return openBlock(), createElementBlock("div", {
513
+ class: normalizeClass([
514
+ "flex items-start gap-3 rounded-lg border p-4 shadow-lg",
515
+ unref(config).bg
516
+ ]),
517
+ role: "alert"
518
+ }, [
519
+ createVNode(unref(Icon), {
520
+ icon: unref(config).icon,
521
+ class: normalizeClass(["size-5 shrink-0", unref(config).iconColor])
522
+ }, null, 8, ["icon", "class"]),
523
+ createElementVNode("div", _hoisted_1$2, [
524
+ __props.title ? (openBlock(), createElementBlock("p", _hoisted_2$1, toDisplayString(__props.title), 1)) : createCommentVNode("", true),
525
+ createElementVNode("p", _hoisted_3$1, toDisplayString(__props.message), 1)
526
+ ]),
527
+ __props.closable ? (openBlock(), createElementBlock("button", {
528
+ key: 0,
529
+ type: "button",
530
+ class: "shrink-0 rounded p-1 text-gray-400 hover:bg-gray-200 hover:text-gray-600 dark:hover:bg-gray-700 dark:hover:text-gray-300",
531
+ onClick: _cache[0] || (_cache[0] = ($event) => emit("close"))
532
+ }, [
533
+ createVNode(unref(Icon), {
534
+ icon: "lucide:x",
535
+ class: "size-4"
536
+ })
537
+ ])) : createCommentVNode("", true)
538
+ ], 2);
539
+ };
540
+ }
541
+ });
542
+ const _sfc_main$2 = /* @__PURE__ */ defineComponent({
543
+ __name: "ToastContainer",
544
+ props: {
545
+ toasts: {},
546
+ position: { default: "top-right" }
547
+ },
548
+ emits: ["close"],
549
+ setup(__props, { emit: __emit }) {
550
+ const emit = __emit;
551
+ const positionClasses = {
552
+ "top-right": "top-4 right-4",
553
+ "top-left": "top-4 left-4",
554
+ "bottom-right": "bottom-4 right-4",
555
+ "bottom-left": "bottom-4 left-4",
556
+ "top-center": "top-4 left-1/2 -translate-x-1/2",
557
+ "bottom-center": "bottom-4 left-1/2 -translate-x-1/2"
558
+ };
559
+ return (_ctx, _cache) => {
560
+ return openBlock(), createBlock(Teleport, { to: "body" }, [
561
+ createElementVNode("div", {
562
+ class: normalizeClass(["fixed z-[9999] flex flex-col gap-2 w-full max-w-sm", positionClasses[__props.position]])
563
+ }, [
564
+ createVNode(TransitionGroup, {
565
+ "enter-active-class": "transition duration-300 ease-out",
566
+ "enter-from-class": "opacity-0 translate-x-4",
567
+ "enter-to-class": "opacity-100 translate-x-0",
568
+ "leave-active-class": "transition duration-200 ease-in",
569
+ "leave-from-class": "opacity-100 translate-x-0",
570
+ "leave-to-class": "opacity-0 translate-x-4"
571
+ }, {
572
+ default: withCtx(() => [
573
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.toasts, (toast) => {
574
+ return openBlock(), createBlock(_sfc_main$3, {
575
+ key: toast.id,
576
+ message: toast.message,
577
+ type: toast.type,
578
+ title: toast.title,
579
+ duration: toast.duration,
580
+ onClose: ($event) => emit("close", toast.id)
581
+ }, null, 8, ["message", "type", "title", "duration", "onClose"]);
582
+ }), 128))
583
+ ]),
584
+ _: 1
585
+ })
586
+ ], 2)
587
+ ]);
588
+ };
589
+ }
590
+ });
591
+ const _hoisted_1$1 = { class: "w-full" };
592
+ const _hoisted_2 = {
593
+ key: 0,
594
+ class: "mb-1 flex justify-between text-sm"
595
+ };
596
+ const _hoisted_3 = { class: "font-medium text-gray-900 dark:text-white" };
597
+ const _hoisted_4 = ["aria-valuenow", "aria-valuemax"];
598
+ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
599
+ __name: "Progress",
600
+ props: {
601
+ value: {},
602
+ max: { default: 100 },
603
+ size: { default: "md" },
604
+ variant: { default: "default" },
605
+ showLabel: { type: Boolean, default: false },
606
+ striped: { type: Boolean, default: false },
607
+ animated: { type: Boolean, default: false },
608
+ indeterminate: { type: Boolean, default: false }
609
+ },
610
+ setup(__props) {
611
+ const props = __props;
612
+ const percentage = computed(() => {
613
+ if (props.indeterminate) return 100;
614
+ return Math.min(Math.max(props.value / props.max * 100, 0), 100);
615
+ });
616
+ const sizeClasses = {
617
+ sm: "h-1",
618
+ md: "h-2",
619
+ lg: "h-4"
620
+ };
621
+ const variantClasses = {
622
+ default: "bg-primary",
623
+ success: "bg-green-500",
624
+ warning: "bg-yellow-500",
625
+ error: "bg-red-500"
626
+ };
627
+ return (_ctx, _cache) => {
628
+ return openBlock(), createElementBlock("div", _hoisted_1$1, [
629
+ __props.showLabel && !__props.indeterminate ? (openBlock(), createElementBlock("div", _hoisted_2, [
630
+ _cache[0] || (_cache[0] = createElementVNode("span", { class: "text-gray-600 dark:text-gray-400" }, "Progress", -1)),
631
+ createElementVNode("span", _hoisted_3, toDisplayString(Math.round(percentage.value)) + "%", 1)
632
+ ])) : createCommentVNode("", true),
633
+ createElementVNode("div", {
634
+ class: normalizeClass([
635
+ "w-full overflow-hidden rounded-full bg-gray-200 dark:bg-gray-700",
636
+ sizeClasses[__props.size]
637
+ ]),
638
+ role: "progressbar",
639
+ "aria-valuenow": __props.indeterminate ? void 0 : __props.value,
640
+ "aria-valuemin": 0,
641
+ "aria-valuemax": __props.max
642
+ }, [
643
+ createElementVNode("div", {
644
+ class: normalizeClass([
645
+ "h-full rounded-full transition-all duration-300",
646
+ variantClasses[__props.variant],
647
+ __props.striped && "bg-stripes",
648
+ __props.animated && "animate-stripes",
649
+ __props.indeterminate && "animate-indeterminate"
650
+ ]),
651
+ style: normalizeStyle({ width: __props.indeterminate ? "30%" : `${percentage.value}%` })
652
+ }, null, 6)
653
+ ], 10, _hoisted_4)
654
+ ]);
655
+ };
656
+ }
657
+ });
658
+ const Progress = /* @__PURE__ */ _export_sfc(_sfc_main$1, [["__scopeId", "data-v-f2118741"]]);
659
+ const _hoisted_1 = {
660
+ key: 0,
661
+ class: "space-y-2"
662
+ };
663
+ const _sfc_main = /* @__PURE__ */ defineComponent({
664
+ __name: "Skeleton",
665
+ props: {
666
+ variant: { default: "text" },
667
+ width: {},
668
+ height: {},
669
+ lines: { default: 1 },
670
+ animate: { type: Boolean, default: true }
671
+ },
672
+ setup(__props) {
673
+ const variantClasses = {
674
+ text: "h-4 rounded",
675
+ circular: "rounded-full",
676
+ rectangular: "",
677
+ rounded: "rounded-lg"
678
+ };
679
+ return (_ctx, _cache) => {
680
+ return __props.variant === "text" && __props.lines > 1 ? (openBlock(), createElementBlock("div", _hoisted_1, [
681
+ (openBlock(true), createElementBlock(Fragment, null, renderList(__props.lines, (i) => {
682
+ return openBlock(), createElementBlock("div", {
683
+ key: i,
684
+ class: normalizeClass([
685
+ "bg-gray-200 dark:bg-gray-700",
686
+ variantClasses[__props.variant],
687
+ __props.animate && "animate-pulse"
688
+ ]),
689
+ style: normalizeStyle({
690
+ width: i === __props.lines ? "75%" : __props.width || "100%",
691
+ height: __props.height
692
+ })
693
+ }, null, 6);
694
+ }), 128))
695
+ ])) : (openBlock(), createElementBlock("div", {
696
+ key: 1,
697
+ class: normalizeClass([
698
+ "bg-gray-200 dark:bg-gray-700",
699
+ variantClasses[__props.variant],
700
+ __props.animate && "animate-pulse"
701
+ ]),
702
+ style: normalizeStyle({
703
+ width: __props.width || (__props.variant === "circular" ? "3rem" : "100%"),
704
+ height: __props.height || (__props.variant === "circular" ? "3rem" : __props.variant === "text" ? "1rem" : "6rem")
705
+ })
706
+ }, null, 6));
707
+ };
708
+ }
709
+ });
461
710
  export {
462
- _sfc_main$6 as _,
463
- _sfc_main$5 as a,
464
- _sfc_main$4 as b,
465
- _sfc_main$3 as c,
466
- _sfc_main$2 as d,
467
- _sfc_main$1 as e,
468
- _sfc_main as f
711
+ Progress as P,
712
+ _sfc_main$a as _,
713
+ _sfc_main$9 as a,
714
+ _sfc_main$8 as b,
715
+ _sfc_main$7 as c,
716
+ _sfc_main$6 as d,
717
+ _sfc_main$5 as e,
718
+ _sfc_main$4 as f,
719
+ _sfc_main$3 as g,
720
+ _sfc_main$2 as h,
721
+ _sfc_main as i
469
722
  };
470
- //# sourceMappingURL=EmptyState.vue_vue_type_script_setup_true_lang-CrVvFwXA.js.map
723
+ //# sourceMappingURL=Skeleton.vue_vue_type_script_setup_true_lang-DRC4EADS.js.map