cisse-vue-ui 0.10.0 → 0.10.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 (35) hide show
  1. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-C5KHLMvx.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-DhPNxKgF.js} +40 -94
  2. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DhPNxKgF.js.map +1 -0
  3. package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-CLfy0-Wb.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-DwW3MT85.cjs} +37 -91
  4. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DwW3MT85.cjs.map +1 -0
  5. package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-l8lJzwoY.cjs → FilterTabs.vue_vue_type_script_setup_true_lang-CwcJkw3D.cjs} +295 -94
  6. package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-l8lJzwoY.cjs.map → FilterTabs.vue_vue_type_script_setup_true_lang-CwcJkw3D.cjs.map} +1 -1
  7. package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-CJnvcF8Z.js → FilterTabs.vue_vue_type_script_setup_true_lang-aPs8YGWB.js} +290 -89
  8. package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-CJnvcF8Z.js.map → FilterTabs.vue_vue_type_script_setup_true_lang-aPs8YGWB.js.map} +1 -1
  9. package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs → Skeleton.vue_vue_type_script_setup_true_lang-ahmyY81P.cjs} +70 -16
  10. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-ahmyY81P.cjs.map +1 -0
  11. package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-BHopJ9RG.js → Skeleton.vue_vue_type_script_setup_true_lang-mcD2ZqKf.js} +70 -16
  12. package/dist/Skeleton.vue_vue_type_script_setup_true_lang-mcD2ZqKf.js.map +1 -0
  13. package/dist/components/core/StatItem.stories.d.ts +19 -0
  14. package/dist/components/core/StatItem.vue.d.ts +59 -5
  15. package/dist/components/core/Stats.stories.d.ts +21 -0
  16. package/dist/components/core/Stats.vue.d.ts +60 -4
  17. package/dist/components/core/index.cjs +1 -1
  18. package/dist/components/core/index.d.ts +2 -2
  19. package/dist/components/core/index.js +1 -1
  20. package/dist/components/feedback/index.cjs +8 -8
  21. package/dist/components/feedback/index.js +7 -7
  22. package/dist/components/index.cjs +9 -9
  23. package/dist/components/index.js +8 -8
  24. package/dist/{index-CYXOfUOG.cjs → index-CKd33NtQ.cjs} +10 -10
  25. package/dist/{index-CYXOfUOG.cjs.map → index-CKd33NtQ.cjs.map} +1 -1
  26. package/dist/{index-C_N7WRnM.js → index-D-VE0o-l.js} +4 -4
  27. package/dist/{index-C_N7WRnM.js.map → index-D-VE0o-l.js.map} +1 -1
  28. package/dist/index.cjs +10 -10
  29. package/dist/index.js +12 -12
  30. package/dist/style.css +1 -1
  31. package/package.json +1 -1
  32. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-C5KHLMvx.js.map +0 -1
  33. package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-CLfy0-Wb.cjs.map +0 -1
  34. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BHopJ9RG.js.map +0 -1
  35. package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs.map +0 -1
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  const vue = require("vue");
3
3
  const index = require("./index-D1x3TH9k.cjs");
4
- const ListSkeleton_vue_vue_type_script_setup_true_lang = require("./ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs");
4
+ const Skeleton_vue_vue_type_script_setup_true_lang = require("./Skeleton.vue_vue_type_script_setup_true_lang-ahmyY81P.cjs");
5
5
  const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-zs0NXN4g.cjs");
6
6
  const usePagination = require("./usePagination-gvvh1zqA.cjs");
7
7
  const vue$1 = require("@iconify/vue");
@@ -12,11 +12,11 @@ const _hoisted_1$o = {
12
12
  class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950"
13
13
  };
14
14
  const _hoisted_2$h = { class: "flex flex-col gap-0.5" };
15
- const _hoisted_3$a = {
15
+ const _hoisted_3$b = {
16
16
  key: 1,
17
17
  class: "text-sm font-normal text-gray-600 dark:text-gray-400"
18
18
  };
19
- const _hoisted_4$7 = { class: "flex gap-2" };
19
+ const _hoisted_4$8 = { class: "flex gap-2" };
20
20
  const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
21
21
  __name: "CardComponent",
22
22
  props: {
@@ -38,7 +38,7 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
38
38
  () => props.dividerClass || "border-gray-200 dark:border-gray-700"
39
39
  );
40
40
  return (_ctx, _cache) => {
41
- return __props.loading ? (vue.openBlock(), vue.createBlock(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main$2, {
41
+ return __props.loading ? (vue.openBlock(), vue.createBlock(Skeleton_vue_vue_type_script_setup_true_lang._sfc_main$3, {
42
42
  key: 0,
43
43
  lines: __props.loadingLines,
44
44
  "show-avatar": __props.loadingAvatar,
@@ -62,13 +62,13 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
62
62
  vue.createTextVNode(vue.toDisplayString(__props.title), 1)
63
63
  ])
64
64
  ], 2)) : vue.createCommentVNode("", true),
65
- __props.description || _ctx.$slots.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$a, [
65
+ __props.description || _ctx.$slots.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$b, [
66
66
  vue.renderSlot(_ctx.$slots, "description", {}, () => [
67
67
  vue.createTextVNode(vue.toDisplayString(__props.description), 1)
68
68
  ])
69
69
  ])) : vue.createCommentVNode("", true)
70
70
  ]),
71
- vue.createElementVNode("div", _hoisted_4$7, [
71
+ vue.createElementVNode("div", _hoisted_4$8, [
72
72
  vue.renderSlot(_ctx.$slots, "actions")
73
73
  ])
74
74
  ], 2)) : vue.createCommentVNode("", true),
@@ -79,8 +79,8 @@ const _sfc_main$A = /* @__PURE__ */ vue.defineComponent({
79
79
  });
80
80
  const _hoisted_1$n = ["role", "tabindex", "onKeydown"];
81
81
  const _hoisted_2$g = ["src", "alt"];
82
- const _hoisted_3$9 = ["src", "alt"];
83
- const _hoisted_4$6 = { class: "flex items-center gap-3" };
82
+ const _hoisted_3$a = ["src", "alt"];
83
+ const _hoisted_4$7 = { class: "flex items-center gap-3" };
84
84
  const _hoisted_5$4 = { class: "flex flex-col gap-0.5" };
85
85
  const _hoisted_6$3 = ["src", "alt"];
86
86
  const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
@@ -273,7 +273,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
273
273
  }
274
274
  };
275
275
  return (_ctx, _cache) => {
276
- return __props.loading ? (vue.openBlock(), vue.createBlock(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main$2, {
276
+ return __props.loading ? (vue.openBlock(), vue.createBlock(Skeleton_vue_vue_type_script_setup_true_lang._sfc_main$3, {
277
277
  key: 0,
278
278
  lines: __props.loadingLines,
279
279
  "show-avatar": __props.loadingAvatar,
@@ -326,7 +326,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
326
326
  src: __props.image,
327
327
  alt: __props.imageAlt || "",
328
328
  class: vue.normalizeClass(["w-full h-full object-cover", __props.imageClass])
329
- }, null, 10, _hoisted_3$9)) : vue.createCommentVNode("", true)
329
+ }, null, 10, _hoisted_3$a)) : vue.createCommentVNode("", true)
330
330
  ])
331
331
  ], 6)) : vue.createCommentVNode("", true),
332
332
  vue.createElementVNode("div", {
@@ -352,7 +352,7 @@ const _sfc_main$z = /* @__PURE__ */ vue.defineComponent({
352
352
  __props.imagePosition === "background" && "text-white border-white/20"
353
353
  ])
354
354
  }, [
355
- vue.createElementVNode("div", _hoisted_4$6, [
355
+ vue.createElementVNode("div", _hoisted_4$7, [
356
356
  __props.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createElementBlock("div", {
357
357
  key: 0,
358
358
  class: vue.normalizeClass(computedIconClass.value)
@@ -652,7 +652,7 @@ const _hoisted_2$f = {
652
652
  key: 0,
653
653
  d: "M7 14l5-5 5 5H7z"
654
654
  };
655
- const _hoisted_3$8 = {
655
+ const _hoisted_3$9 = {
656
656
  key: 1,
657
657
  d: "M7 10l5 5 5-5H7z"
658
658
  };
@@ -734,7 +734,7 @@ const _sfc_main$q = /* @__PURE__ */ vue.defineComponent({
734
734
  viewBox: "0 0 24 24",
735
735
  fill: "currentColor"
736
736
  }, [
737
- __props.sorted && __props.sortDirection === "asc" ? (vue.openBlock(), vue.createElementBlock("path", _hoisted_2$f)) : __props.sorted && __props.sortDirection === "desc" ? (vue.openBlock(), vue.createElementBlock("path", _hoisted_3$8)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
737
+ __props.sorted && __props.sortDirection === "asc" ? (vue.openBlock(), vue.createElementBlock("path", _hoisted_2$f)) : __props.sorted && __props.sortDirection === "desc" ? (vue.openBlock(), vue.createElementBlock("path", _hoisted_3$9)) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 2 }, [
738
738
  _cache[2] || (_cache[2] = vue.createElementVNode("path", {
739
739
  d: "M7 14l5-5 5 5H7z",
740
740
  class: "opacity-40"
@@ -1117,8 +1117,8 @@ const _hoisted_2$d = {
1117
1117
  key: 1,
1118
1118
  class: "flex flex-col items-center justify-center py-12 text-center"
1119
1119
  };
1120
- const _hoisted_3$7 = { class: "flex flex-col items-center gap-3" };
1121
- const _hoisted_4$5 = { class: "text-sm text-gray-600 dark:text-gray-400" };
1120
+ const _hoisted_3$8 = { class: "flex flex-col items-center gap-3" };
1121
+ const _hoisted_4$6 = { class: "text-sm text-gray-600 dark:text-gray-400" };
1122
1122
  const _hoisted_5$3 = {
1123
1123
  key: 3,
1124
1124
  class: "flex flex-col items-center justify-center py-12 text-center"
@@ -1229,13 +1229,13 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1229
1229
  const hasActionSlot = vue.computed(() => !!slots.action);
1230
1230
  return (_ctx, _cache) => {
1231
1231
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$g, [
1232
- __props.loading ? (vue.openBlock(), vue.createBlock(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main$1, {
1232
+ __props.loading ? (vue.openBlock(), vue.createBlock(Skeleton_vue_vue_type_script_setup_true_lang._sfc_main$2, {
1233
1233
  key: 0,
1234
1234
  rows: __props.loadingRows,
1235
1235
  columns: visibleProperties.value.length
1236
1236
  }, null, 8, ["rows", "columns"])) : __props.error ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$d, [
1237
1237
  vue.renderSlot(_ctx.$slots, "error", {}, () => [
1238
- vue.createElementVNode("div", _hoisted_3$7, [
1238
+ vue.createElementVNode("div", _hoisted_3$8, [
1239
1239
  _cache[2] || (_cache[2] = vue.createElementVNode("svg", {
1240
1240
  class: "size-12 text-red-400",
1241
1241
  fill: "none",
@@ -1249,7 +1249,7 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1249
1249
  d: "M12 9v2m0 4h.01m-6.938 4h13.856c1.54 0 2.502-1.667 1.732-3L13.732 4c-.77-1.333-2.694-1.333-3.464 0L3.34 16c-.77 1.333.192 3 1.732 3z"
1250
1250
  })
1251
1251
  ], -1)),
1252
- vue.createElementVNode("p", _hoisted_4$5, vue.toDisplayString(__props.errorMessage), 1)
1252
+ vue.createElementVNode("p", _hoisted_4$6, vue.toDisplayString(__props.errorMessage), 1)
1253
1253
  ])
1254
1254
  ])
1255
1255
  ])) : __props.items && __props.items.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$y, {
@@ -1343,7 +1343,7 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1343
1343
  ], -1))
1344
1344
  ])
1345
1345
  ])),
1346
- __props.paginated && __props.items && __props.items.length > 0 && !__props.loading && !__props.error ? (vue.openBlock(), vue.createBlock(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main, {
1346
+ __props.paginated && __props.items && __props.items.length > 0 && !__props.loading && !__props.error ? (vue.openBlock(), vue.createBlock(Skeleton_vue_vue_type_script_setup_true_lang._sfc_main, {
1347
1347
  key: 4,
1348
1348
  "current-page": effectivePage.value,
1349
1349
  "total-pages": effectiveTotalPages.value,
@@ -1360,8 +1360,8 @@ const _sfc_main$k = /* @__PURE__ */ vue.defineComponent({
1360
1360
  });
1361
1361
  const _hoisted_1$f = { class: "space-y-3" };
1362
1362
  const _hoisted_2$c = { class: "flex items-center gap-3 p-3" };
1363
- const _hoisted_3$6 = { class: "text-sm text-gray-600 dark:text-gray-400" };
1364
- const _hoisted_4$4 = {
1363
+ const _hoisted_3$7 = { class: "text-sm text-gray-600 dark:text-gray-400" };
1364
+ const _hoisted_4$5 = {
1365
1365
  key: 0,
1366
1366
  class: "text-sm text-primary font-medium"
1367
1367
  };
@@ -1429,7 +1429,7 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1429
1429
  return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
1430
1430
  __props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$A, { key: 0 }, {
1431
1431
  default: vue.withCtx(() => [
1432
- vue.createVNode(ListSkeleton_vue_vue_type_script_setup_true_lang._sfc_main$3, {
1432
+ vue.createVNode(Skeleton_vue_vue_type_script_setup_true_lang._sfc_main$4, {
1433
1433
  items: __props.loadingItems,
1434
1434
  "show-avatar": "",
1435
1435
  "show-secondary": "",
@@ -1446,8 +1446,8 @@ const _sfc_main$j = /* @__PURE__ */ vue.defineComponent({
1446
1446
  indeterminate: someSelected.value,
1447
1447
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
1448
1448
  }, null, 8, ["model-value", "indeterminate"]),
1449
- vue.createElementVNode("span", _hoisted_3$6, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
1450
- __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)
1449
+ vue.createElementVNode("span", _hoisted_3$7, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
1450
+ __props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$5, " (" + vue.toDisplayString(__props.selectedItems.size) + " sélectionné" + vue.toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : vue.createCommentVNode("", true)
1451
1451
  ])
1452
1452
  ]),
1453
1453
  _: 1
@@ -1630,8 +1630,8 @@ const _hoisted_1$e = {
1630
1630
  class: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
1631
1631
  };
1632
1632
  const _hoisted_2$b = { class: "relative" };
1633
- const _hoisted_3$5 = ["disabled", "placeholder"];
1634
- const _hoisted_4$3 = ["disabled"];
1633
+ const _hoisted_3$6 = ["disabled", "placeholder"];
1634
+ const _hoisted_4$4 = ["disabled"];
1635
1635
  const _hoisted_5$1 = {
1636
1636
  key: 0,
1637
1637
  class: "px-4 py-3 text-sm text-gray-500"
@@ -1771,7 +1771,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
1771
1771
  type: "text",
1772
1772
  onFocus: openDropdown,
1773
1773
  onKeydown: handleKeydown
1774
- }, null, 40, _hoisted_3$5), [
1774
+ }, null, 40, _hoisted_3$6), [
1775
1775
  [vue.vModelText, searchQuery.value]
1776
1776
  ]),
1777
1777
  __props.modelValue && !__props.disabled ? (vue.openBlock(), vue.createElementBlock("button", {
@@ -1795,7 +1795,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
1795
1795
  class: vue.normalizeClass([{ "rotate-180": vue.unref(isOpen) }, "size-4 text-gray-400 transition"]),
1796
1796
  icon: "lucide:chevron-down"
1797
1797
  }, null, 8, ["class"])
1798
- ], 8, _hoisted_4$3)
1798
+ ], 8, _hoisted_4$4)
1799
1799
  ], 2),
1800
1800
  (vue.openBlock(), vue.createBlock(vue.Teleport, {
1801
1801
  to: "body",
@@ -1923,7 +1923,7 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
1923
1923
  });
1924
1924
  const _hoisted_1$d = { class: "relative inline-block" };
1925
1925
  const _hoisted_2$a = ["src", "alt"];
1926
- const _hoisted_3$4 = { key: 1 };
1926
+ const _hoisted_3$5 = { key: 1 };
1927
1927
  const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
1928
1928
  __name: "Avatar",
1929
1929
  props: {
@@ -2044,7 +2044,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
2044
2044
  alt: __props.alt || __props.name,
2045
2045
  class: "size-full object-cover",
2046
2046
  onError: _cache[0] || (_cache[0] = ($event) => imageError.value = true)
2047
- }, null, 40, _hoisted_2$a)) : initials.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$4, vue.toDisplayString(initials.value), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
2047
+ }, null, 40, _hoisted_2$a)) : initials.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$5, vue.toDisplayString(initials.value), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
2048
2048
  key: 2,
2049
2049
  icon: "lucide:user",
2050
2050
  class: "size-1/2"
@@ -2536,8 +2536,8 @@ const _hoisted_1$7 = {
2536
2536
  class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700"
2537
2537
  };
2538
2538
  const _hoisted_2$6 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
2539
- const _hoisted_3$3 = { class: "flex-1 overflow-y-auto p-4" };
2540
- const _hoisted_4$2 = {
2539
+ const _hoisted_3$4 = { class: "flex-1 overflow-y-auto p-4" };
2540
+ const _hoisted_4$3 = {
2541
2541
  key: 1,
2542
2542
  class: "px-4 py-3 border-t border-gray-200 dark:border-gray-700"
2543
2543
  };
@@ -2676,10 +2676,10 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
2676
2676
  })
2677
2677
  ])) : vue.createCommentVNode("", true)
2678
2678
  ])) : vue.createCommentVNode("", true),
2679
- vue.createElementVNode("div", _hoisted_3$3, [
2679
+ vue.createElementVNode("div", _hoisted_3$4, [
2680
2680
  vue.renderSlot(_ctx.$slots, "default")
2681
2681
  ]),
2682
- _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [
2682
+ _ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$3, [
2683
2683
  vue.renderSlot(_ctx.$slots, "footer")
2684
2684
  ])) : vue.createCommentVNode("", true)
2685
2685
  ], 2)) : vue.createCommentVNode("", true)
@@ -2781,8 +2781,8 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
2781
2781
  });
2782
2782
  const _hoisted_1$4 = ["id", "disabled", "aria-expanded", "aria-controls"];
2783
2783
  const _hoisted_2$4 = { class: "flex items-center gap-2 font-medium" };
2784
- const _hoisted_3$2 = ["id", "aria-labelledby"];
2785
- const _hoisted_4$1 = { class: "px-4 py-3 bg-gray-50 dark:bg-gray-900 text-gray-700 dark:text-gray-300" };
2784
+ const _hoisted_3$3 = ["id", "aria-labelledby"];
2785
+ const _hoisted_4$2 = { class: "px-4 py-3 bg-gray-50 dark:bg-gray-900 text-gray-700 dark:text-gray-300" };
2786
2786
  const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2787
2787
  __name: "AccordionItem",
2788
2788
  props: {
@@ -2847,10 +2847,10 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
2847
2847
  "aria-labelledby": headerId.value,
2848
2848
  class: "overflow-hidden"
2849
2849
  }, [
2850
- vue.createElementVNode("div", _hoisted_4$1, [
2850
+ vue.createElementVNode("div", _hoisted_4$2, [
2851
2851
  vue.renderSlot(_ctx.$slots, "default")
2852
2852
  ])
2853
- ], 8, _hoisted_3$2), [
2853
+ ], 8, _hoisted_3$3), [
2854
2854
  [vue.vShow, isOpen.value]
2855
2855
  ])
2856
2856
  ]),
@@ -2865,8 +2865,8 @@ const _hoisted_1$3 = {
2865
2865
  class: "relative"
2866
2866
  };
2867
2867
  const _hoisted_2$3 = { class: "flex items-start gap-4" };
2868
- const _hoisted_3$1 = { class: "flex-1 min-w-0 pt-0.5" };
2869
- const _hoisted_4 = { class: "flex items-center justify-between gap-2" };
2868
+ const _hoisted_3$2 = { class: "flex-1 min-w-0 pt-0.5" };
2869
+ const _hoisted_4$1 = { class: "flex items-center justify-between gap-2" };
2870
2870
  const _hoisted_5 = { class: "text-sm font-medium text-gray-900 dark:text-white" };
2871
2871
  const _hoisted_6 = {
2872
2872
  key: 0,
@@ -2953,8 +2953,8 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
2953
2953
  class: vue.normalizeClass(["size-4", getStatusClasses(item.status).icon])
2954
2954
  }, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
2955
2955
  ], 2),
2956
- vue.createElementVNode("div", _hoisted_3$1, [
2957
- vue.createElementVNode("div", _hoisted_4, [
2956
+ vue.createElementVNode("div", _hoisted_3$2, [
2957
+ vue.createElementVNode("div", _hoisted_4$1, [
2958
2958
  vue.createElementVNode("h3", _hoisted_5, vue.toDisplayString(item.title), 1),
2959
2959
  item.date ? (vue.openBlock(), vue.createElementBlock("time", _hoisted_6, vue.toDisplayString(item.date), 1)) : vue.createCommentVNode("", true)
2960
2960
  ]),
@@ -3040,9 +3040,17 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
3040
3040
  };
3041
3041
  }
3042
3042
  });
3043
- const _hoisted_1$1 = { key: 0 };
3043
+ const _hoisted_1$1 = {
3044
+ key: 0,
3045
+ class: "mr-0.5"
3046
+ };
3044
3047
  const _hoisted_2$1 = {
3045
3048
  key: 1,
3049
+ class: "ml-0.5"
3050
+ };
3051
+ const _hoisted_3$1 = { key: 1 };
3052
+ const _hoisted_4 = {
3053
+ key: 2,
3046
3054
  class: "text-gray-400"
3047
3055
  };
3048
3056
  const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
@@ -3050,28 +3058,46 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3050
3058
  props: {
3051
3059
  label: {},
3052
3060
  value: {},
3061
+ description: {},
3062
+ prefix: {},
3063
+ suffix: {},
3053
3064
  icon: {},
3054
3065
  iconPosition: { default: "top" },
3066
+ iconRounded: { default: "xl" },
3067
+ hideIconBg: { type: Boolean, default: false },
3055
3068
  change: {},
3056
3069
  changeLabel: {},
3057
3070
  trend: {},
3058
3071
  trendOnly: { type: Boolean, default: false },
3072
+ hideTrendIcon: { type: Boolean, default: false },
3073
+ invertTrendColors: { type: Boolean, default: false },
3059
3074
  size: { default: "md" },
3060
3075
  variant: { default: "default" },
3061
3076
  color: { default: "primary" },
3062
3077
  clickable: { type: Boolean, default: false },
3063
3078
  centered: { type: Boolean },
3079
+ labelFirst: { type: Boolean, default: false },
3080
+ compact: { type: Boolean, default: false },
3081
+ loading: { type: Boolean, default: false },
3082
+ shadow: { default: "sm" },
3083
+ rounded: { default: "xl" },
3084
+ border: { default: "none" },
3085
+ accent: { default: "none" },
3064
3086
  cardClass: {},
3087
+ iconWrapperClass: {},
3065
3088
  iconClass: {},
3066
3089
  valueClass: {},
3067
- labelClass: {}
3090
+ labelClass: {},
3091
+ descriptionClass: {},
3092
+ trendClass: {},
3093
+ contentClass: {}
3068
3094
  },
3069
3095
  emits: ["click"],
3070
3096
  setup(__props) {
3071
3097
  const props = __props;
3072
3098
  const isCentered = vue.computed(() => {
3073
3099
  if (props.centered !== void 0) return props.centered;
3074
- return props.iconPosition === "top";
3100
+ return props.iconPosition === "top" || props.iconPosition === "bottom";
3075
3101
  });
3076
3102
  const effectiveTrend = vue.computed(() => {
3077
3103
  if (props.trend) return props.trend;
@@ -3082,38 +3108,73 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3082
3108
  });
3083
3109
  const sizeClasses = vue.computed(() => {
3084
3110
  const sizes = {
3111
+ xs: {
3112
+ padding: props.compact ? "none" : "sm",
3113
+ icon: "size-6",
3114
+ iconInner: "size-3",
3115
+ value: "text-lg font-bold",
3116
+ label: "text-xs",
3117
+ description: "text-xs",
3118
+ change: "text-xs",
3119
+ gap: "gap-0.5"
3120
+ },
3085
3121
  sm: {
3086
- padding: "sm",
3122
+ padding: props.compact ? "sm" : "sm",
3087
3123
  icon: "size-8",
3088
3124
  iconInner: "size-4",
3089
3125
  value: "text-xl font-bold",
3090
3126
  label: "text-xs",
3127
+ description: "text-xs",
3091
3128
  change: "text-xs",
3092
3129
  gap: "gap-1"
3093
3130
  },
3094
3131
  md: {
3095
- padding: "md",
3132
+ padding: props.compact ? "sm" : "md",
3096
3133
  icon: "size-10",
3097
3134
  iconInner: "size-5",
3098
3135
  value: "text-2xl sm:text-3xl font-bold",
3099
3136
  label: "text-xs sm:text-sm",
3137
+ description: "text-xs sm:text-sm",
3100
3138
  change: "text-xs",
3101
3139
  gap: "gap-2"
3102
3140
  },
3103
3141
  lg: {
3104
- padding: "lg",
3142
+ padding: props.compact ? "md" : "lg",
3105
3143
  icon: "size-12",
3106
3144
  iconInner: "size-6",
3107
3145
  value: "text-3xl sm:text-4xl font-bold",
3108
3146
  label: "text-sm sm:text-base",
3147
+ description: "text-sm",
3109
3148
  change: "text-sm",
3110
3149
  gap: "gap-3"
3150
+ },
3151
+ xl: {
3152
+ padding: props.compact ? "md" : "lg",
3153
+ icon: "size-14",
3154
+ iconInner: "size-7",
3155
+ value: "text-4xl sm:text-5xl font-bold",
3156
+ label: "text-base sm:text-lg",
3157
+ description: "text-sm sm:text-base",
3158
+ change: "text-sm",
3159
+ gap: "gap-4"
3111
3160
  }
3112
3161
  };
3113
3162
  return sizes[props.size];
3114
3163
  });
3164
+ const iconRoundedClasses = vue.computed(() => {
3165
+ const map = {
3166
+ none: "rounded-none",
3167
+ sm: "rounded-sm",
3168
+ md: "rounded-md",
3169
+ lg: "rounded-lg",
3170
+ xl: "rounded-xl",
3171
+ full: "rounded-full"
3172
+ };
3173
+ return map[props.iconRounded];
3174
+ });
3115
3175
  const iconBgClasses = vue.computed(() => {
3116
- if (props.variant === "glass") return "bg-white/20";
3176
+ if (props.hideIconBg) return "";
3177
+ if (props.variant === "glass" || props.variant === "solid") return "bg-white/20";
3117
3178
  const colors = {
3118
3179
  primary: "bg-primary-100 dark:bg-primary-900/30",
3119
3180
  secondary: "bg-secondary-100 dark:bg-secondary-900/30",
@@ -3125,7 +3186,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3125
3186
  return colors[props.color];
3126
3187
  });
3127
3188
  const iconColorClasses = vue.computed(() => {
3128
- if (props.variant === "glass") return "text-white";
3189
+ if (props.variant === "glass" || props.variant === "solid") return "text-white";
3129
3190
  const colors = {
3130
3191
  primary: "text-primary-600 dark:text-primary-400",
3131
3192
  secondary: "text-secondary-600 dark:text-secondary-400",
@@ -3136,19 +3197,43 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3136
3197
  };
3137
3198
  return colors[props.color];
3138
3199
  });
3200
+ const solidBgClasses = vue.computed(() => {
3201
+ if (props.variant !== "solid") return "";
3202
+ const colors = {
3203
+ primary: "bg-primary-500",
3204
+ secondary: "bg-secondary-500",
3205
+ success: "bg-emerald-500",
3206
+ warning: "bg-amber-500",
3207
+ danger: "bg-red-500",
3208
+ info: "bg-blue-500"
3209
+ };
3210
+ return colors[props.color];
3211
+ });
3139
3212
  const valueTextClasses = vue.computed(() => {
3140
- if (props.variant === "glass") return "text-white";
3213
+ if (props.variant === "glass" || props.variant === "solid") return "text-white";
3141
3214
  return "text-gray-900 dark:text-white";
3142
3215
  });
3143
3216
  const labelTextClasses = vue.computed(() => {
3144
3217
  if (props.variant === "glass") return "text-white/80";
3218
+ if (props.variant === "solid") return "text-white/90";
3145
3219
  return "text-gray-500 dark:text-gray-400";
3146
3220
  });
3221
+ const descriptionTextClasses = vue.computed(() => {
3222
+ if (props.variant === "glass") return "text-white/70";
3223
+ if (props.variant === "solid") return "text-white/80";
3224
+ return "text-gray-400 dark:text-gray-500";
3225
+ });
3147
3226
  const trendColorClasses = vue.computed(() => {
3148
3227
  if (!effectiveTrend.value || effectiveTrend.value === "neutral") {
3149
3228
  return "text-gray-500";
3150
3229
  }
3151
- return effectiveTrend.value === "up" ? "text-emerald-500" : "text-red-500";
3230
+ const isUp = effectiveTrend.value === "up";
3231
+ const greenColor = "text-emerald-500";
3232
+ const redColor = "text-red-500";
3233
+ if (props.invertTrendColors) {
3234
+ return isUp ? redColor : greenColor;
3235
+ }
3236
+ return isUp ? greenColor : redColor;
3152
3237
  });
3153
3238
  const trendIcon = vue.computed(() => {
3154
3239
  if (!effectiveTrend.value || effectiveTrend.value === "neutral") {
@@ -3157,100 +3242,170 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
3157
3242
  return effectiveTrend.value === "up" ? "heroicons:arrow-trending-up" : "heroicons:arrow-trending-down";
3158
3243
  });
3159
3244
  const cardVariant = vue.computed(() => {
3160
- const map = {
3161
- default: "default",
3162
- glass: "glass",
3163
- outline: "outline",
3164
- flat: "flat"
3165
- };
3166
- return map[props.variant];
3245
+ if (props.variant === "solid") return "default";
3246
+ return props.variant;
3247
+ });
3248
+ const effectiveShadow = vue.computed(() => {
3249
+ if (props.variant === "glass") return "none";
3250
+ return props.shadow;
3251
+ });
3252
+ const effectiveBorder = vue.computed(() => {
3253
+ if (props.variant === "outline") return "default";
3254
+ return props.border;
3167
3255
  });
3168
3256
  const layoutClasses = vue.computed(() => {
3169
- if (props.iconPosition === "top") {
3170
- return isCentered.value ? "flex flex-col items-center text-center" : "flex flex-col";
3257
+ const centered = isCentered.value ? "items-center text-center" : "";
3258
+ switch (props.iconPosition) {
3259
+ case "top":
3260
+ return `flex flex-col ${centered}`;
3261
+ case "bottom":
3262
+ return `flex flex-col-reverse ${centered}`;
3263
+ case "left":
3264
+ return "flex flex-row items-center";
3265
+ case "right":
3266
+ return "flex flex-row-reverse items-center";
3267
+ default:
3268
+ return `flex flex-col ${centered}`;
3171
3269
  }
3172
- if (props.iconPosition === "left") {
3173
- return "flex flex-row items-center";
3270
+ });
3271
+ const iconMarginClasses = vue.computed(() => {
3272
+ switch (props.iconPosition) {
3273
+ case "top":
3274
+ return "mb-2";
3275
+ case "bottom":
3276
+ return "mt-2";
3277
+ case "left":
3278
+ return "mr-3";
3279
+ case "right":
3280
+ return "ml-3";
3281
+ default:
3282
+ return "";
3174
3283
  }
3175
- return "flex flex-row-reverse items-center";
3176
3284
  });
3177
- const contentClasses = vue.computed(() => {
3178
- if (props.iconPosition === "top") {
3179
- return "flex flex-col " + sizeClasses.value.gap;
3285
+ const computedContentClasses = vue.computed(() => {
3286
+ const isVertical = props.iconPosition === "top" || props.iconPosition === "bottom";
3287
+ if (isVertical) {
3288
+ return `flex flex-col ${sizeClasses.value.gap}`;
3180
3289
  }
3181
- return "flex flex-col flex-1 min-w-0 " + (props.iconPosition === "left" ? "ml-3" : "mr-3");
3290
+ return `flex flex-col flex-1 min-w-0 ${sizeClasses.value.gap}`;
3182
3291
  });
3183
3292
  return (_ctx, _cache) => {
3184
3293
  return vue.openBlock(), vue.createBlock(_sfc_main$z, {
3185
3294
  variant: cardVariant.value,
3186
3295
  padding: sizeClasses.value.padding,
3187
3296
  clickable: __props.clickable,
3188
- shadow: __props.variant === "glass" ? "none" : "sm",
3189
- border: __props.variant === "outline" ? "default" : "none",
3190
- rounded: "xl",
3297
+ shadow: effectiveShadow.value,
3298
+ border: effectiveBorder.value,
3299
+ rounded: __props.rounded,
3300
+ accent: __props.accent,
3191
3301
  "header-divider": false,
3192
- class: vue.normalizeClass(__props.cardClass),
3302
+ class: vue.normalizeClass([__props.cardClass, solidBgClasses.value, __props.variant === "solid" && "text-white"]),
3193
3303
  onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click", $event))
3194
3304
  }, {
3195
3305
  default: vue.withCtx(() => [
3196
- vue.createElementVNode("div", {
3306
+ __props.loading ? (vue.openBlock(), vue.createElementBlock("div", {
3307
+ key: 0,
3197
3308
  class: vue.normalizeClass(layoutClasses.value)
3198
3309
  }, [
3199
- __props.icon ? (vue.openBlock(), vue.createElementBlock("div", {
3310
+ __props.icon ? (vue.openBlock(), vue.createBlock(Skeleton_vue_vue_type_script_setup_true_lang._sfc_main$1, {
3311
+ key: 0,
3312
+ class: vue.normalizeClass([sizeClasses.value.icon, iconRoundedClasses.value, iconMarginClasses.value])
3313
+ }, null, 8, ["class"])) : vue.createCommentVNode("", true),
3314
+ vue.createElementVNode("div", {
3315
+ class: vue.normalizeClass(computedContentClasses.value)
3316
+ }, [
3317
+ vue.createVNode(Skeleton_vue_vue_type_script_setup_true_lang._sfc_main$1, {
3318
+ class: vue.normalizeClass(sizeClasses.value.value),
3319
+ width: "60%",
3320
+ height: "1.5em"
3321
+ }, null, 8, ["class"]),
3322
+ vue.createVNode(Skeleton_vue_vue_type_script_setup_true_lang._sfc_main$1, {
3323
+ class: vue.normalizeClass(sizeClasses.value.label),
3324
+ width: "80%",
3325
+ height: "1em"
3326
+ }, null, 8, ["class"])
3327
+ ], 2)
3328
+ ], 2)) : (vue.openBlock(), vue.createElementBlock("div", {
3329
+ key: 1,
3330
+ class: vue.normalizeClass(layoutClasses.value)
3331
+ }, [
3332
+ __props.icon || _ctx.$slots.icon ? (vue.openBlock(), vue.createElementBlock("div", {
3200
3333
  key: 0,
3201
3334
  class: vue.normalizeClass([
3202
- "rounded-xl flex items-center justify-center flex-shrink-0",
3335
+ "flex items-center justify-center flex-shrink-0",
3203
3336
  sizeClasses.value.icon,
3337
+ iconRoundedClasses.value,
3204
3338
  iconBgClasses.value,
3205
- __props.iconPosition === "top" && "mb-2",
3206
- __props.iconClass
3339
+ iconMarginClasses.value,
3340
+ __props.iconWrapperClass
3207
3341
  ])
3208
3342
  }, [
3209
3343
  vue.renderSlot(_ctx.$slots, "icon", {}, () => [
3210
3344
  vue.createVNode(vue.unref(vue$1.Icon), {
3211
3345
  icon: __props.icon,
3212
- class: vue.normalizeClass([sizeClasses.value.iconInner, iconColorClasses.value])
3346
+ class: vue.normalizeClass([sizeClasses.value.iconInner, iconColorClasses.value, __props.iconClass])
3213
3347
  }, null, 8, ["icon", "class"])
3214
3348
  ])
3215
3349
  ], 2)) : vue.createCommentVNode("", true),
3216
3350
  vue.createElementVNode("div", {
3217
- class: vue.normalizeClass(contentClasses.value)
3351
+ class: vue.normalizeClass([computedContentClasses.value, __props.contentClass])
3218
3352
  }, [
3353
+ __props.labelFirst ? (vue.openBlock(), vue.createElementBlock("div", {
3354
+ key: 0,
3355
+ class: vue.normalizeClass([sizeClasses.value.label, labelTextClasses.value, __props.labelClass])
3356
+ }, [
3357
+ vue.renderSlot(_ctx.$slots, "label", {}, () => [
3358
+ vue.createTextVNode(vue.toDisplayString(__props.label), 1)
3359
+ ])
3360
+ ], 2)) : vue.createCommentVNode("", true),
3219
3361
  vue.createElementVNode("div", {
3220
3362
  class: vue.normalizeClass([sizeClasses.value.value, valueTextClasses.value, __props.valueClass])
3221
3363
  }, [
3222
3364
  vue.renderSlot(_ctx.$slots, "value", {}, () => [
3223
- vue.createTextVNode(vue.toDisplayString(__props.value), 1)
3365
+ __props.prefix ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$1, vue.toDisplayString(__props.prefix), 1)) : vue.createCommentVNode("", true),
3366
+ vue.createTextVNode(" " + vue.toDisplayString(__props.value) + " ", 1),
3367
+ __props.suffix ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$1, vue.toDisplayString(__props.suffix), 1)) : vue.createCommentVNode("", true)
3224
3368
  ])
3225
3369
  ], 2),
3226
- vue.createElementVNode("div", {
3370
+ !__props.labelFirst ? (vue.openBlock(), vue.createElementBlock("div", {
3371
+ key: 1,
3227
3372
  class: vue.normalizeClass([sizeClasses.value.label, labelTextClasses.value, __props.labelClass])
3228
3373
  }, [
3229
3374
  vue.renderSlot(_ctx.$slots, "label", {}, () => [
3230
3375
  vue.createTextVNode(vue.toDisplayString(__props.label), 1)
3231
3376
  ])
3232
- ], 2),
3377
+ ], 2)) : vue.createCommentVNode("", true),
3378
+ __props.description || _ctx.$slots.description ? (vue.openBlock(), vue.createElementBlock("div", {
3379
+ key: 2,
3380
+ class: vue.normalizeClass([sizeClasses.value.description, descriptionTextClasses.value, __props.descriptionClass])
3381
+ }, [
3382
+ vue.renderSlot(_ctx.$slots, "description", {}, () => [
3383
+ vue.createTextVNode(vue.toDisplayString(__props.description), 1)
3384
+ ])
3385
+ ], 2)) : vue.createCommentVNode("", true),
3233
3386
  __props.change !== void 0 || __props.trend ? (vue.openBlock(), vue.createElementBlock("div", {
3234
- key: 0,
3387
+ key: 3,
3235
3388
  class: vue.normalizeClass([
3236
3389
  "mt-1 font-medium inline-flex items-center gap-1",
3237
3390
  sizeClasses.value.change,
3238
- trendColorClasses.value
3391
+ trendColorClasses.value,
3392
+ __props.trendClass
3239
3393
  ])
3240
3394
  }, [
3241
- vue.createVNode(vue.unref(vue$1.Icon), {
3395
+ !__props.hideTrendIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
3396
+ key: 0,
3242
3397
  icon: trendIcon.value,
3243
3398
  class: "size-3.5"
3244
- }, null, 8, ["icon"]),
3245
- !__props.trendOnly && __props.change !== void 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$1, vue.toDisplayString(__props.change >= 0 ? "+" : "") + vue.toDisplayString(__props.change) + "% ", 1)) : vue.createCommentVNode("", true),
3246
- __props.changeLabel ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2$1, vue.toDisplayString(__props.changeLabel), 1)) : vue.createCommentVNode("", true)
3399
+ }, null, 8, ["icon"])) : vue.createCommentVNode("", true),
3400
+ !__props.trendOnly && __props.change !== void 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$1, vue.toDisplayString(__props.change >= 0 ? "+" : "") + vue.toDisplayString(__props.change) + "% ", 1)) : vue.createCommentVNode("", true),
3401
+ __props.changeLabel ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4, vue.toDisplayString(__props.changeLabel), 1)) : vue.createCommentVNode("", true)
3247
3402
  ], 2)) : vue.createCommentVNode("", true)
3248
3403
  ], 2)
3249
- ], 2),
3404
+ ], 2)),
3250
3405
  vue.renderSlot(_ctx.$slots, "extra")
3251
3406
  ]),
3252
3407
  _: 3
3253
- }, 8, ["variant", "padding", "clickable", "shadow", "border", "class"]);
3408
+ }, 8, ["variant", "padding", "clickable", "shadow", "border", "rounded", "accent", "class"]);
3254
3409
  };
3255
3410
  }
3256
3411
  });
@@ -3263,17 +3418,41 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
3263
3418
  variant: { default: "default" },
3264
3419
  size: { default: "md" },
3265
3420
  iconPosition: { default: "top" },
3266
- color: { default: "primary" }
3421
+ iconRounded: { default: "xl" },
3422
+ hideIconBg: { type: Boolean, default: false },
3423
+ color: { default: "primary" },
3424
+ labelFirst: { type: Boolean, default: false },
3425
+ compact: { type: Boolean, default: false },
3426
+ loading: { type: Boolean, default: false },
3427
+ shadow: { default: "sm" },
3428
+ rounded: { default: "xl" },
3429
+ border: { default: "none" },
3430
+ accent: { default: "none" },
3431
+ clickable: { type: Boolean, default: false },
3432
+ centered: { type: Boolean },
3433
+ invertTrendColors: { type: Boolean, default: false },
3434
+ hideTrendIcon: { type: Boolean, default: false },
3435
+ gridClass: {},
3436
+ cardClass: {},
3437
+ iconWrapperClass: {},
3438
+ iconClass: {},
3439
+ valueClass: {},
3440
+ labelClass: {}
3267
3441
  },
3442
+ emits: ["item-click"],
3268
3443
  setup(__props) {
3269
3444
  return (_ctx, _cache) => {
3270
3445
  var _a, _b, _c, _d;
3271
3446
  return vue.openBlock(), vue.createElementBlock("div", {
3272
3447
  class: vue.normalizeClass(["grid", [
3448
+ __props.gridClass,
3273
3449
  // Gap classes
3450
+ __props.gap === "none" && "gap-0",
3451
+ __props.gap === "xs" && "gap-1 sm:gap-2",
3274
3452
  __props.gap === "sm" && "gap-2 sm:gap-3",
3275
3453
  __props.gap === "md" && "gap-3 sm:gap-4",
3276
3454
  __props.gap === "lg" && "gap-4 sm:gap-6",
3455
+ __props.gap === "xl" && "gap-6 sm:gap-8",
3277
3456
  // Column classes
3278
3457
  __props.cols === 1 && "grid-cols-1",
3279
3458
  __props.cols === 2 && "grid-cols-2",
@@ -3298,11 +3477,33 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
3298
3477
  change: stat.change,
3299
3478
  "change-label": stat.changeLabel,
3300
3479
  trend: stat.trend,
3480
+ description: stat.description,
3481
+ prefix: stat.prefix,
3482
+ suffix: stat.suffix,
3301
3483
  variant: __props.variant,
3302
3484
  size: __props.size,
3303
3485
  "icon-position": __props.iconPosition,
3304
- color: stat.color || __props.color
3305
- }, null, 8, ["label", "value", "icon", "change", "change-label", "trend", "variant", "size", "icon-position", "color"]);
3486
+ "icon-rounded": __props.iconRounded,
3487
+ "hide-icon-bg": __props.hideIconBg,
3488
+ color: stat.color || __props.color,
3489
+ "label-first": __props.labelFirst,
3490
+ compact: __props.compact,
3491
+ loading: __props.loading,
3492
+ shadow: __props.shadow,
3493
+ rounded: __props.rounded,
3494
+ border: __props.border,
3495
+ accent: __props.accent,
3496
+ clickable: __props.clickable,
3497
+ centered: __props.centered,
3498
+ "invert-trend-colors": __props.invertTrendColors,
3499
+ "hide-trend-icon": __props.hideTrendIcon,
3500
+ "card-class": __props.cardClass,
3501
+ "icon-wrapper-class": __props.iconWrapperClass,
3502
+ "icon-class": __props.iconClass,
3503
+ "value-class": __props.valueClass,
3504
+ "label-class": __props.labelClass,
3505
+ onClick: ($event) => _ctx.$emit("item-click", index2, stat, $event)
3506
+ }, null, 8, ["label", "value", "icon", "change", "change-label", "trend", "description", "prefix", "suffix", "variant", "size", "icon-position", "icon-rounded", "hide-icon-bg", "color", "label-first", "compact", "loading", "shadow", "rounded", "border", "accent", "clickable", "centered", "invert-trend-colors", "hide-trend-icon", "card-class", "icon-wrapper-class", "icon-class", "value-class", "label-class", "onClick"]);
3306
3507
  }), 128)),
3307
3508
  vue.renderSlot(_ctx.$slots, "default")
3308
3509
  ], 2);
@@ -3483,4 +3684,4 @@ exports._sfc_main$6 = _sfc_main$u;
3483
3684
  exports._sfc_main$7 = _sfc_main$t;
3484
3685
  exports._sfc_main$8 = _sfc_main$s;
3485
3686
  exports._sfc_main$9 = _sfc_main$r;
3486
- //# sourceMappingURL=FilterTabs.vue_vue_type_script_setup_true_lang-l8lJzwoY.cjs.map
3687
+ //# sourceMappingURL=FilterTabs.vue_vue_type_script_setup_true_lang-CwcJkw3D.cjs.map