cisse-vue-ui 0.9.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.
- package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-C5KHLMvx.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-DhPNxKgF.js} +40 -94
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DhPNxKgF.js.map +1 -0
- 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
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DwW3MT85.cjs.map +1 -0
- package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-COkZbeGG.cjs → FilterTabs.vue_vue_type_script_setup_true_lang-CwcJkw3D.cjs} +499 -165
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-CwcJkw3D.cjs.map +1 -0
- package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-CzpYHtc5.js → FilterTabs.vue_vue_type_script_setup_true_lang-aPs8YGWB.js} +494 -160
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-aPs8YGWB.js.map +1 -0
- package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs → Skeleton.vue_vue_type_script_setup_true_lang-ahmyY81P.cjs} +70 -16
- package/dist/Skeleton.vue_vue_type_script_setup_true_lang-ahmyY81P.cjs.map +1 -0
- package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-BHopJ9RG.js → Skeleton.vue_vue_type_script_setup_true_lang-mcD2ZqKf.js} +70 -16
- package/dist/Skeleton.vue_vue_type_script_setup_true_lang-mcD2ZqKf.js.map +1 -0
- package/dist/components/core/StatItem.stories.d.ts +44 -0
- package/dist/components/core/StatItem.vue.d.ts +135 -0
- package/dist/components/core/Stats.stories.d.ts +45 -0
- package/dist/components/core/Stats.vue.d.ts +97 -0
- package/dist/components/core/index.cjs +3 -1
- package/dist/components/core/index.cjs.map +1 -1
- package/dist/components/core/index.d.ts +6 -3
- package/dist/components/core/index.js +5 -3
- package/dist/components/feedback/index.cjs +8 -8
- package/dist/components/feedback/index.js +7 -7
- package/dist/components/index.cjs +11 -9
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +12 -10
- package/dist/{index-BMSH4AOz.cjs → index-CKd33NtQ.cjs} +12 -10
- package/dist/{index-BMSH4AOz.cjs.map → index-CKd33NtQ.cjs.map} +1 -1
- package/dist/{index-0kwQORZJ.js → index-D-VE0o-l.js} +6 -4
- package/dist/{index-0kwQORZJ.js.map → index-D-VE0o-l.js.map} +1 -1
- package/dist/index.cjs +12 -10
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +16 -14
- package/dist/style.css +1 -1
- package/package.json +1 -1
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-C5KHLMvx.js.map +0 -1
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-CLfy0-Wb.cjs.map +0 -1
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-COkZbeGG.cjs.map +0 -1
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-CzpYHtc5.js.map +0 -1
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BHopJ9RG.js.map +0 -1
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs.map +0 -1
- package/dist/components/core/StatsCard.stories.d.ts +0 -15
- package/dist/components/core/StatsCard.vue.d.ts +0 -44
- package/dist/components/core/StatsGrid.stories.d.ts +0 -12
- package/dist/components/core/StatsGrid.vue.d.ts +0 -16
- /package/dist/components/core/{StatsCard.test.d.ts → StatItem.test.d.ts} +0 -0
- /package/dist/components/core/{StatsGrid.test.d.ts → Stats.test.d.ts} +0 -0
|
@@ -1,21 +1,21 @@
|
|
|
1
1
|
import { defineComponent, computed, createBlock, createElementBlock, openBlock, createCommentVNode, renderSlot, normalizeClass, createElementVNode, createTextVNode, toDisplayString, useSlots, withKeys, withModifiers, normalizeStyle, unref, useAttrs, toRefs, provide, reactive, mergeProps, normalizeProps, guardReactiveProps, inject, Fragment, withCtx, createVNode, renderList, resolveDynamicComponent, ref, createSlots, watch, withDirectives, vModelText, Teleport, Transition, nextTick, resolveComponent, vShow, onMounted, onUnmounted, mergeModels, useModel } from "vue";
|
|
2
|
-
import { Icon } from "@iconify/vue";
|
|
3
|
-
import { b as _sfc_main$B, a as _sfc_main$I, _ as _sfc_main$J, c as _sfc_main$K } from "./ListSkeleton.vue_vue_type_script_setup_true_lang-BHopJ9RG.js";
|
|
4
2
|
import { _ as _sfc_main$C, a as useBreakpoints } from "./index-BaWpldIJ.js";
|
|
3
|
+
import { c as _sfc_main$B, b as _sfc_main$I, _ as _sfc_main$J, d as _sfc_main$K, a as _sfc_main$L } from "./Skeleton.vue_vue_type_script_setup_true_lang-mcD2ZqKf.js";
|
|
5
4
|
import { e as _sfc_main$D, d as _sfc_main$E, c as _sfc_main$F, b as _sfc_main$G, a as _sfc_main$H } from "./BadgeType.vue_vue_type_script_setup_true_lang-tHRMWBb-.js";
|
|
6
5
|
import { a as usePagination, u as useDarkMode } from "./usePagination-BGwbICFC.js";
|
|
6
|
+
import { Icon } from "@iconify/vue";
|
|
7
7
|
import { u as useDropdown } from "./useDropdown-XITCE_SM.js";
|
|
8
8
|
import { u as useId } from "./useId-xeHj7rkg.js";
|
|
9
9
|
const _hoisted_1$o = {
|
|
10
10
|
key: 1,
|
|
11
11
|
class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950"
|
|
12
12
|
};
|
|
13
|
-
const _hoisted_2$
|
|
14
|
-
const _hoisted_3$
|
|
13
|
+
const _hoisted_2$h = { class: "flex flex-col gap-0.5" };
|
|
14
|
+
const _hoisted_3$b = {
|
|
15
15
|
key: 1,
|
|
16
16
|
class: "text-sm font-normal text-gray-600 dark:text-gray-400"
|
|
17
17
|
};
|
|
18
|
-
const _hoisted_4$
|
|
18
|
+
const _hoisted_4$8 = { class: "flex gap-2" };
|
|
19
19
|
const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
20
20
|
__name: "CardComponent",
|
|
21
21
|
props: {
|
|
@@ -52,7 +52,7 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
|
52
52
|
key: 1,
|
|
53
53
|
class: normalizeClass(["flex items-center justify-between border-b px-5 py-3", dividerClasses.value])
|
|
54
54
|
}, [
|
|
55
|
-
createElementVNode("div", _hoisted_2$
|
|
55
|
+
createElementVNode("div", _hoisted_2$h, [
|
|
56
56
|
__props.title || _ctx.$slots.title ? (openBlock(), createElementBlock("span", {
|
|
57
57
|
key: 0,
|
|
58
58
|
class: normalizeClass(["text-md font-semibold", titleClasses.value])
|
|
@@ -61,13 +61,13 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
|
61
61
|
createTextVNode(toDisplayString(__props.title), 1)
|
|
62
62
|
])
|
|
63
63
|
], 2)) : createCommentVNode("", true),
|
|
64
|
-
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("span", _hoisted_3$
|
|
64
|
+
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("span", _hoisted_3$b, [
|
|
65
65
|
renderSlot(_ctx.$slots, "description", {}, () => [
|
|
66
66
|
createTextVNode(toDisplayString(__props.description), 1)
|
|
67
67
|
])
|
|
68
68
|
])) : createCommentVNode("", true)
|
|
69
69
|
]),
|
|
70
|
-
createElementVNode("div", _hoisted_4$
|
|
70
|
+
createElementVNode("div", _hoisted_4$8, [
|
|
71
71
|
renderSlot(_ctx.$slots, "actions")
|
|
72
72
|
])
|
|
73
73
|
], 2)) : createCommentVNode("", true),
|
|
@@ -77,9 +77,9 @@ const _sfc_main$A = /* @__PURE__ */ defineComponent({
|
|
|
77
77
|
}
|
|
78
78
|
});
|
|
79
79
|
const _hoisted_1$n = ["role", "tabindex", "onKeydown"];
|
|
80
|
-
const _hoisted_2$
|
|
81
|
-
const _hoisted_3$
|
|
82
|
-
const _hoisted_4$
|
|
80
|
+
const _hoisted_2$g = ["src", "alt"];
|
|
81
|
+
const _hoisted_3$a = ["src", "alt"];
|
|
82
|
+
const _hoisted_4$7 = { class: "flex items-center gap-3" };
|
|
83
83
|
const _hoisted_5$4 = { class: "flex flex-col gap-0.5" };
|
|
84
84
|
const _hoisted_6$3 = ["src", "alt"];
|
|
85
85
|
const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
@@ -310,7 +310,7 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
|
310
310
|
src: __props.image,
|
|
311
311
|
alt: __props.imageAlt || "",
|
|
312
312
|
class: normalizeClass(["w-full h-full object-cover", __props.imageClass])
|
|
313
|
-
}, null, 10, _hoisted_2$
|
|
313
|
+
}, null, 10, _hoisted_2$g)) : createCommentVNode("", true)
|
|
314
314
|
]),
|
|
315
315
|
_cache[0] || (_cache[0] = createElementVNode("div", { class: "absolute inset-0 bg-gradient-to-t from-black/60 to-transparent" }, null, -1))
|
|
316
316
|
], 2)) : createCommentVNode("", true),
|
|
@@ -325,7 +325,7 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
|
325
325
|
src: __props.image,
|
|
326
326
|
alt: __props.imageAlt || "",
|
|
327
327
|
class: normalizeClass(["w-full h-full object-cover", __props.imageClass])
|
|
328
|
-
}, null, 10, _hoisted_3$
|
|
328
|
+
}, null, 10, _hoisted_3$a)) : createCommentVNode("", true)
|
|
329
329
|
])
|
|
330
330
|
], 6)) : createCommentVNode("", true),
|
|
331
331
|
createElementVNode("div", {
|
|
@@ -351,7 +351,7 @@ const _sfc_main$z = /* @__PURE__ */ defineComponent({
|
|
|
351
351
|
__props.imagePosition === "background" && "text-white border-white/20"
|
|
352
352
|
])
|
|
353
353
|
}, [
|
|
354
|
-
createElementVNode("div", _hoisted_4$
|
|
354
|
+
createElementVNode("div", _hoisted_4$7, [
|
|
355
355
|
__props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("div", {
|
|
356
356
|
key: 0,
|
|
357
357
|
class: normalizeClass(computedIconClass.value)
|
|
@@ -647,11 +647,11 @@ const _sfc_main$r = /* @__PURE__ */ defineComponent({
|
|
|
647
647
|
}
|
|
648
648
|
});
|
|
649
649
|
const _hoisted_1$k = ["colspan", "rowspan", "scope", "aria-sort"];
|
|
650
|
-
const _hoisted_2$
|
|
650
|
+
const _hoisted_2$f = {
|
|
651
651
|
key: 0,
|
|
652
652
|
d: "M7 14l5-5 5 5H7z"
|
|
653
653
|
};
|
|
654
|
-
const _hoisted_3$
|
|
654
|
+
const _hoisted_3$9 = {
|
|
655
655
|
key: 1,
|
|
656
656
|
d: "M7 10l5 5 5-5H7z"
|
|
657
657
|
};
|
|
@@ -733,7 +733,7 @@ const _sfc_main$q = /* @__PURE__ */ defineComponent({
|
|
|
733
733
|
viewBox: "0 0 24 24",
|
|
734
734
|
fill: "currentColor"
|
|
735
735
|
}, [
|
|
736
|
-
__props.sorted && __props.sortDirection === "asc" ? (openBlock(), createElementBlock("path", _hoisted_2$
|
|
736
|
+
__props.sorted && __props.sortDirection === "asc" ? (openBlock(), createElementBlock("path", _hoisted_2$f)) : __props.sorted && __props.sortDirection === "desc" ? (openBlock(), createElementBlock("path", _hoisted_3$9)) : (openBlock(), createElementBlock(Fragment, { key: 2 }, [
|
|
737
737
|
_cache[2] || (_cache[2] = createElementVNode("path", {
|
|
738
738
|
d: "M7 14l5-5 5 5H7z",
|
|
739
739
|
class: "opacity-40"
|
|
@@ -1012,7 +1012,7 @@ const _sfc_main$m = /* @__PURE__ */ defineComponent({
|
|
|
1012
1012
|
}
|
|
1013
1013
|
});
|
|
1014
1014
|
const _hoisted_1$h = ["disabled", "aria-expanded"];
|
|
1015
|
-
const _hoisted_2$
|
|
1015
|
+
const _hoisted_2$e = { class: "p-4" };
|
|
1016
1016
|
const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
1017
1017
|
...{
|
|
1018
1018
|
inheritAttrs: false
|
|
@@ -1098,7 +1098,7 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
|
1098
1098
|
class: "!p-0"
|
|
1099
1099
|
}, {
|
|
1100
1100
|
default: withCtx(() => [
|
|
1101
|
-
createElementVNode("div", _hoisted_2$
|
|
1101
|
+
createElementVNode("div", _hoisted_2$e, [
|
|
1102
1102
|
renderSlot(_ctx.$slots, "expanded")
|
|
1103
1103
|
])
|
|
1104
1104
|
]),
|
|
@@ -1112,12 +1112,12 @@ const _sfc_main$l = /* @__PURE__ */ defineComponent({
|
|
|
1112
1112
|
}
|
|
1113
1113
|
});
|
|
1114
1114
|
const _hoisted_1$g = { class: "overflow-hidden" };
|
|
1115
|
-
const _hoisted_2$
|
|
1115
|
+
const _hoisted_2$d = {
|
|
1116
1116
|
key: 1,
|
|
1117
1117
|
class: "flex flex-col items-center justify-center py-12 text-center"
|
|
1118
1118
|
};
|
|
1119
|
-
const _hoisted_3$
|
|
1120
|
-
const _hoisted_4$
|
|
1119
|
+
const _hoisted_3$8 = { class: "flex flex-col items-center gap-3" };
|
|
1120
|
+
const _hoisted_4$6 = { class: "text-sm text-gray-600 dark:text-gray-400" };
|
|
1121
1121
|
const _hoisted_5$3 = {
|
|
1122
1122
|
key: 3,
|
|
1123
1123
|
class: "flex flex-col items-center justify-center py-12 text-center"
|
|
@@ -1232,9 +1232,9 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
1232
1232
|
key: 0,
|
|
1233
1233
|
rows: __props.loadingRows,
|
|
1234
1234
|
columns: visibleProperties.value.length
|
|
1235
|
-
}, null, 8, ["rows", "columns"])) : __props.error ? (openBlock(), createElementBlock("div", _hoisted_2$
|
|
1235
|
+
}, null, 8, ["rows", "columns"])) : __props.error ? (openBlock(), createElementBlock("div", _hoisted_2$d, [
|
|
1236
1236
|
renderSlot(_ctx.$slots, "error", {}, () => [
|
|
1237
|
-
createElementVNode("div", _hoisted_3$
|
|
1237
|
+
createElementVNode("div", _hoisted_3$8, [
|
|
1238
1238
|
_cache[2] || (_cache[2] = createElementVNode("svg", {
|
|
1239
1239
|
class: "size-12 text-red-400",
|
|
1240
1240
|
fill: "none",
|
|
@@ -1248,7 +1248,7 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
1248
1248
|
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"
|
|
1249
1249
|
})
|
|
1250
1250
|
], -1)),
|
|
1251
|
-
createElementVNode("p", _hoisted_4$
|
|
1251
|
+
createElementVNode("p", _hoisted_4$6, toDisplayString(__props.errorMessage), 1)
|
|
1252
1252
|
])
|
|
1253
1253
|
])
|
|
1254
1254
|
])) : __props.items && __props.items.length > 0 ? (openBlock(), createBlock(_sfc_main$y, {
|
|
@@ -1358,9 +1358,9 @@ const _sfc_main$k = /* @__PURE__ */ defineComponent({
|
|
|
1358
1358
|
}
|
|
1359
1359
|
});
|
|
1360
1360
|
const _hoisted_1$f = { class: "space-y-3" };
|
|
1361
|
-
const _hoisted_2$
|
|
1362
|
-
const _hoisted_3$
|
|
1363
|
-
const _hoisted_4$
|
|
1361
|
+
const _hoisted_2$c = { class: "flex items-center gap-3 p-3" };
|
|
1362
|
+
const _hoisted_3$7 = { class: "text-sm text-gray-600 dark:text-gray-400" };
|
|
1363
|
+
const _hoisted_4$5 = {
|
|
1364
1364
|
key: 0,
|
|
1365
1365
|
class: "text-sm text-primary font-medium"
|
|
1366
1366
|
};
|
|
@@ -1439,14 +1439,14 @@ const _sfc_main$j = /* @__PURE__ */ defineComponent({
|
|
|
1439
1439
|
})) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [
|
|
1440
1440
|
__props.selectable && selectableItems.value.length > 0 ? (openBlock(), createBlock(_sfc_main$A, { key: 0 }, {
|
|
1441
1441
|
default: withCtx(() => [
|
|
1442
|
-
createElementVNode("div", _hoisted_2$
|
|
1442
|
+
createElementVNode("div", _hoisted_2$c, [
|
|
1443
1443
|
createVNode(_sfc_main$C, {
|
|
1444
1444
|
"model-value": allSelected.value,
|
|
1445
1445
|
indeterminate: someSelected.value,
|
|
1446
1446
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
|
|
1447
1447
|
}, null, 8, ["model-value", "indeterminate"]),
|
|
1448
|
-
createElementVNode("span", _hoisted_3$
|
|
1449
|
-
__props.selectedItems && __props.selectedItems.size > 0 ? (openBlock(), createElementBlock("span", _hoisted_4$
|
|
1448
|
+
createElementVNode("span", _hoisted_3$7, toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
|
|
1449
|
+
__props.selectedItems && __props.selectedItems.size > 0 ? (openBlock(), createElementBlock("span", _hoisted_4$5, " (" + toDisplayString(__props.selectedItems.size) + " sélectionné" + toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : createCommentVNode("", true)
|
|
1450
1450
|
])
|
|
1451
1451
|
]),
|
|
1452
1452
|
_: 1
|
|
@@ -1628,9 +1628,9 @@ const _hoisted_1$e = {
|
|
|
1628
1628
|
key: 0,
|
|
1629
1629
|
class: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
|
|
1630
1630
|
};
|
|
1631
|
-
const _hoisted_2$
|
|
1632
|
-
const _hoisted_3$
|
|
1633
|
-
const _hoisted_4$
|
|
1631
|
+
const _hoisted_2$b = { class: "relative" };
|
|
1632
|
+
const _hoisted_3$6 = ["disabled", "placeholder"];
|
|
1633
|
+
const _hoisted_4$4 = ["disabled"];
|
|
1634
1634
|
const _hoisted_5$1 = {
|
|
1635
1635
|
key: 0,
|
|
1636
1636
|
class: "px-4 py-3 text-sm text-gray-500"
|
|
@@ -1745,7 +1745,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
1745
1745
|
class: "autocomplete-container"
|
|
1746
1746
|
}, [
|
|
1747
1747
|
__props.label ? (openBlock(), createElementBlock("label", _hoisted_1$e, toDisplayString(__props.label), 1)) : createCommentVNode("", true),
|
|
1748
|
-
createElementVNode("div", _hoisted_2$
|
|
1748
|
+
createElementVNode("div", _hoisted_2$b, [
|
|
1749
1749
|
createElementVNode("div", {
|
|
1750
1750
|
ref_key: "inputWrapperRef",
|
|
1751
1751
|
ref: inputWrapperRef,
|
|
@@ -1770,7 +1770,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
1770
1770
|
type: "text",
|
|
1771
1771
|
onFocus: openDropdown,
|
|
1772
1772
|
onKeydown: handleKeydown
|
|
1773
|
-
}, null, 40, _hoisted_3$
|
|
1773
|
+
}, null, 40, _hoisted_3$6), [
|
|
1774
1774
|
[vModelText, searchQuery.value]
|
|
1775
1775
|
]),
|
|
1776
1776
|
__props.modelValue && !__props.disabled ? (openBlock(), createElementBlock("button", {
|
|
@@ -1794,7 +1794,7 @@ const _sfc_main$h = /* @__PURE__ */ defineComponent({
|
|
|
1794
1794
|
class: normalizeClass([{ "rotate-180": unref(isOpen) }, "size-4 text-gray-400 transition"]),
|
|
1795
1795
|
icon: "lucide:chevron-down"
|
|
1796
1796
|
}, null, 8, ["class"])
|
|
1797
|
-
], 8, _hoisted_4$
|
|
1797
|
+
], 8, _hoisted_4$4)
|
|
1798
1798
|
], 2),
|
|
1799
1799
|
(openBlock(), createBlock(Teleport, {
|
|
1800
1800
|
to: "body",
|
|
@@ -1921,8 +1921,8 @@ const _sfc_main$g = /* @__PURE__ */ defineComponent({
|
|
|
1921
1921
|
}
|
|
1922
1922
|
});
|
|
1923
1923
|
const _hoisted_1$d = { class: "relative inline-block" };
|
|
1924
|
-
const _hoisted_2$
|
|
1925
|
-
const _hoisted_3$
|
|
1924
|
+
const _hoisted_2$a = ["src", "alt"];
|
|
1925
|
+
const _hoisted_3$5 = { key: 1 };
|
|
1926
1926
|
const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
1927
1927
|
__name: "Avatar",
|
|
1928
1928
|
props: {
|
|
@@ -2043,7 +2043,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2043
2043
|
alt: __props.alt || __props.name,
|
|
2044
2044
|
class: "size-full object-cover",
|
|
2045
2045
|
onError: _cache[0] || (_cache[0] = ($event) => imageError.value = true)
|
|
2046
|
-
}, null, 40, _hoisted_2$
|
|
2046
|
+
}, null, 40, _hoisted_2$a)) : initials.value ? (openBlock(), createElementBlock("span", _hoisted_3$5, toDisplayString(initials.value), 1)) : (openBlock(), createBlock(unref(Icon), {
|
|
2047
2047
|
key: 2,
|
|
2048
2048
|
icon: "lucide:user",
|
|
2049
2049
|
class: "size-1/2"
|
|
@@ -2062,7 +2062,7 @@ const _sfc_main$f = /* @__PURE__ */ defineComponent({
|
|
|
2062
2062
|
}
|
|
2063
2063
|
});
|
|
2064
2064
|
const _hoisted_1$c = ["aria-selected", "disabled", "onClick"];
|
|
2065
|
-
const _hoisted_2$
|
|
2065
|
+
const _hoisted_2$9 = { class: "mt-4" };
|
|
2066
2066
|
const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
2067
2067
|
__name: "Tabs",
|
|
2068
2068
|
props: {
|
|
@@ -2131,7 +2131,7 @@ const _sfc_main$e = /* @__PURE__ */ defineComponent({
|
|
|
2131
2131
|
}, toDisplayString(tab.label), 11, _hoisted_1$c);
|
|
2132
2132
|
}), 128))
|
|
2133
2133
|
], 2),
|
|
2134
|
-
createElementVNode("div", _hoisted_2$
|
|
2134
|
+
createElementVNode("div", _hoisted_2$9, [
|
|
2135
2135
|
renderSlot(_ctx.$slots, "default", { activeTab: activeTab.value })
|
|
2136
2136
|
])
|
|
2137
2137
|
]);
|
|
@@ -2355,7 +2355,7 @@ const _sfc_main$b = /* @__PURE__ */ defineComponent({
|
|
|
2355
2355
|
}
|
|
2356
2356
|
});
|
|
2357
2357
|
const _hoisted_1$9 = ["aria-describedby"];
|
|
2358
|
-
const _hoisted_2$
|
|
2358
|
+
const _hoisted_2$8 = ["id"];
|
|
2359
2359
|
const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
2360
2360
|
__name: "Tooltip",
|
|
2361
2361
|
props: {
|
|
@@ -2427,7 +2427,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
2427
2427
|
id: unref(tooltipId),
|
|
2428
2428
|
class: normalizeClass(positionClasses.value),
|
|
2429
2429
|
role: "tooltip"
|
|
2430
|
-
}, toDisplayString(__props.content), 11, _hoisted_2$
|
|
2430
|
+
}, toDisplayString(__props.content), 11, _hoisted_2$8)) : createCommentVNode("", true)
|
|
2431
2431
|
]),
|
|
2432
2432
|
_: 1
|
|
2433
2433
|
})
|
|
@@ -2436,7 +2436,7 @@ const _sfc_main$a = /* @__PURE__ */ defineComponent({
|
|
|
2436
2436
|
}
|
|
2437
2437
|
});
|
|
2438
2438
|
const _hoisted_1$8 = ["id", "aria-expanded", "aria-controls"];
|
|
2439
|
-
const _hoisted_2$
|
|
2439
|
+
const _hoisted_2$7 = ["id", "aria-labelledby"];
|
|
2440
2440
|
const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
2441
2441
|
__name: "Popover",
|
|
2442
2442
|
props: {
|
|
@@ -2521,7 +2521,7 @@ const _sfc_main$9 = /* @__PURE__ */ defineComponent({
|
|
|
2521
2521
|
])
|
|
2522
2522
|
}, [
|
|
2523
2523
|
renderSlot(_ctx.$slots, "default", { close: unref(close) })
|
|
2524
|
-
], 14, _hoisted_2$
|
|
2524
|
+
], 14, _hoisted_2$7)) : createCommentVNode("", true)
|
|
2525
2525
|
]),
|
|
2526
2526
|
_: 3
|
|
2527
2527
|
})
|
|
@@ -2534,9 +2534,9 @@ const _hoisted_1$7 = {
|
|
|
2534
2534
|
key: 0,
|
|
2535
2535
|
class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700"
|
|
2536
2536
|
};
|
|
2537
|
-
const _hoisted_2$
|
|
2538
|
-
const _hoisted_3$
|
|
2539
|
-
const _hoisted_4$
|
|
2537
|
+
const _hoisted_2$6 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
|
|
2538
|
+
const _hoisted_3$4 = { class: "flex-1 overflow-y-auto p-4" };
|
|
2539
|
+
const _hoisted_4$3 = {
|
|
2540
2540
|
key: 1,
|
|
2541
2541
|
class: "px-4 py-3 border-t border-gray-200 dark:border-gray-700"
|
|
2542
2542
|
};
|
|
@@ -2661,7 +2661,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2661
2661
|
}, [
|
|
2662
2662
|
__props.title || __props.showClose || _ctx.$slots.header ? (openBlock(), createElementBlock("div", _hoisted_1$7, [
|
|
2663
2663
|
renderSlot(_ctx.$slots, "header", {}, () => [
|
|
2664
|
-
createElementVNode("h2", _hoisted_2$
|
|
2664
|
+
createElementVNode("h2", _hoisted_2$6, toDisplayString(__props.title), 1)
|
|
2665
2665
|
]),
|
|
2666
2666
|
__props.showClose ? (openBlock(), createElementBlock("button", {
|
|
2667
2667
|
key: 0,
|
|
@@ -2675,10 +2675,10 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2675
2675
|
})
|
|
2676
2676
|
])) : createCommentVNode("", true)
|
|
2677
2677
|
])) : createCommentVNode("", true),
|
|
2678
|
-
createElementVNode("div", _hoisted_3$
|
|
2678
|
+
createElementVNode("div", _hoisted_3$4, [
|
|
2679
2679
|
renderSlot(_ctx.$slots, "default")
|
|
2680
2680
|
]),
|
|
2681
|
-
_ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_4$
|
|
2681
|
+
_ctx.$slots.footer ? (openBlock(), createElementBlock("div", _hoisted_4$3, [
|
|
2682
2682
|
renderSlot(_ctx.$slots, "footer")
|
|
2683
2683
|
])) : createCommentVNode("", true)
|
|
2684
2684
|
], 2)) : createCommentVNode("", true)
|
|
@@ -2690,7 +2690,7 @@ const _sfc_main$8 = /* @__PURE__ */ defineComponent({
|
|
|
2690
2690
|
}
|
|
2691
2691
|
});
|
|
2692
2692
|
const _hoisted_1$6 = { "aria-label": "Breadcrumb" };
|
|
2693
|
-
const _hoisted_2$
|
|
2693
|
+
const _hoisted_2$5 = { class: "flex items-center flex-wrap gap-1 text-sm" };
|
|
2694
2694
|
const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
2695
2695
|
__name: "Breadcrumb",
|
|
2696
2696
|
props: {
|
|
@@ -2703,7 +2703,7 @@ const _sfc_main$7 = /* @__PURE__ */ defineComponent({
|
|
|
2703
2703
|
setup(__props) {
|
|
2704
2704
|
return (_ctx, _cache) => {
|
|
2705
2705
|
return openBlock(), createElementBlock("nav", _hoisted_1$6, [
|
|
2706
|
-
createElementVNode("ol", _hoisted_2$
|
|
2706
|
+
createElementVNode("ol", _hoisted_2$5, [
|
|
2707
2707
|
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.items, (item, index) => {
|
|
2708
2708
|
return openBlock(), createElementBlock("li", {
|
|
2709
2709
|
key: index,
|
|
@@ -2779,9 +2779,9 @@ const _sfc_main$6 = /* @__PURE__ */ defineComponent({
|
|
|
2779
2779
|
}
|
|
2780
2780
|
});
|
|
2781
2781
|
const _hoisted_1$4 = ["id", "disabled", "aria-expanded", "aria-controls"];
|
|
2782
|
-
const _hoisted_2$
|
|
2783
|
-
const _hoisted_3$
|
|
2784
|
-
const _hoisted_4$
|
|
2782
|
+
const _hoisted_2$4 = { class: "flex items-center gap-2 font-medium" };
|
|
2783
|
+
const _hoisted_3$3 = ["id", "aria-labelledby"];
|
|
2784
|
+
const _hoisted_4$2 = { class: "px-4 py-3 bg-gray-50 dark:bg-gray-900 text-gray-700 dark:text-gray-300" };
|
|
2785
2785
|
const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
2786
2786
|
__name: "AccordionItem",
|
|
2787
2787
|
props: {
|
|
@@ -2816,7 +2816,7 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
2816
2816
|
"aria-controls": panelId.value,
|
|
2817
2817
|
onClick: toggle
|
|
2818
2818
|
}, [
|
|
2819
|
-
createElementVNode("span", _hoisted_2$
|
|
2819
|
+
createElementVNode("span", _hoisted_2$4, [
|
|
2820
2820
|
__props.icon ? (openBlock(), createBlock(unref(Icon), {
|
|
2821
2821
|
key: 0,
|
|
2822
2822
|
icon: __props.icon,
|
|
@@ -2846,10 +2846,10 @@ const _sfc_main$5 = /* @__PURE__ */ defineComponent({
|
|
|
2846
2846
|
"aria-labelledby": headerId.value,
|
|
2847
2847
|
class: "overflow-hidden"
|
|
2848
2848
|
}, [
|
|
2849
|
-
createElementVNode("div", _hoisted_4$
|
|
2849
|
+
createElementVNode("div", _hoisted_4$2, [
|
|
2850
2850
|
renderSlot(_ctx.$slots, "default")
|
|
2851
2851
|
])
|
|
2852
|
-
], 8, _hoisted_3$
|
|
2852
|
+
], 8, _hoisted_3$3), [
|
|
2853
2853
|
[vShow, isOpen.value]
|
|
2854
2854
|
])
|
|
2855
2855
|
]),
|
|
@@ -2863,9 +2863,9 @@ const _hoisted_1$3 = {
|
|
|
2863
2863
|
key: 0,
|
|
2864
2864
|
class: "relative"
|
|
2865
2865
|
};
|
|
2866
|
-
const _hoisted_2$
|
|
2867
|
-
const _hoisted_3$
|
|
2868
|
-
const _hoisted_4 = { class: "flex items-center justify-between gap-2" };
|
|
2866
|
+
const _hoisted_2$3 = { class: "flex items-start gap-4" };
|
|
2867
|
+
const _hoisted_3$2 = { class: "flex-1 min-w-0 pt-0.5" };
|
|
2868
|
+
const _hoisted_4$1 = { class: "flex items-center justify-between gap-2" };
|
|
2869
2869
|
const _hoisted_5 = { class: "text-sm font-medium text-gray-900 dark:text-white" };
|
|
2870
2870
|
const _hoisted_6 = {
|
|
2871
2871
|
key: 0,
|
|
@@ -2942,7 +2942,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
2942
2942
|
key: 0,
|
|
2943
2943
|
class: normalizeClass(["absolute left-4 top-8 w-0.5 h-full -ml-px", getStatusClasses(item.status).line])
|
|
2944
2944
|
}, null, 2)) : createCommentVNode("", true),
|
|
2945
|
-
createElementVNode("div", _hoisted_2$
|
|
2945
|
+
createElementVNode("div", _hoisted_2$3, [
|
|
2946
2946
|
createElementVNode("div", {
|
|
2947
2947
|
class: normalizeClass(["relative z-10 flex items-center justify-center size-8 rounded-full shrink-0", getStatusClasses(item.status).dot])
|
|
2948
2948
|
}, [
|
|
@@ -2952,8 +2952,8 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
2952
2952
|
class: normalizeClass(["size-4", getStatusClasses(item.status).icon])
|
|
2953
2953
|
}, null, 8, ["icon", "class"])) : createCommentVNode("", true)
|
|
2954
2954
|
], 2),
|
|
2955
|
-
createElementVNode("div", _hoisted_3$
|
|
2956
|
-
createElementVNode("div", _hoisted_4, [
|
|
2955
|
+
createElementVNode("div", _hoisted_3$2, [
|
|
2956
|
+
createElementVNode("div", _hoisted_4$1, [
|
|
2957
2957
|
createElementVNode("h3", _hoisted_5, toDisplayString(item.title), 1),
|
|
2958
2958
|
item.date ? (openBlock(), createElementBlock("time", _hoisted_6, toDisplayString(item.date), 1)) : createCommentVNode("", true)
|
|
2959
2959
|
]),
|
|
@@ -2995,7 +2995,7 @@ const _sfc_main$4 = /* @__PURE__ */ defineComponent({
|
|
|
2995
2995
|
}
|
|
2996
2996
|
});
|
|
2997
2997
|
const _hoisted_1$2 = ["aria-label"];
|
|
2998
|
-
const _hoisted_2$
|
|
2998
|
+
const _hoisted_2$2 = {
|
|
2999
2999
|
key: 0,
|
|
3000
3000
|
class: "text-sm font-medium"
|
|
3001
3001
|
};
|
|
@@ -3034,129 +3034,437 @@ const _sfc_main$3 = /* @__PURE__ */ defineComponent({
|
|
|
3034
3034
|
icon: unref(isDark) ? __props.darkIcon : __props.lightIcon,
|
|
3035
3035
|
class: normalizeClass(sizeClasses[__props.size].icon)
|
|
3036
3036
|
}, null, 8, ["icon", "class"]),
|
|
3037
|
-
__props.showLabel ? (openBlock(), createElementBlock("span", _hoisted_2$
|
|
3037
|
+
__props.showLabel ? (openBlock(), createElementBlock("span", _hoisted_2$2, toDisplayString(unref(isDark) ? "Dark" : "Light"), 1)) : createCommentVNode("", true)
|
|
3038
3038
|
], 10, _hoisted_1$2);
|
|
3039
3039
|
};
|
|
3040
3040
|
}
|
|
3041
3041
|
});
|
|
3042
3042
|
const _hoisted_1$1 = {
|
|
3043
3043
|
key: 0,
|
|
3044
|
+
class: "mr-0.5"
|
|
3045
|
+
};
|
|
3046
|
+
const _hoisted_2$1 = {
|
|
3047
|
+
key: 1,
|
|
3048
|
+
class: "ml-0.5"
|
|
3049
|
+
};
|
|
3050
|
+
const _hoisted_3$1 = { key: 1 };
|
|
3051
|
+
const _hoisted_4 = {
|
|
3052
|
+
key: 2,
|
|
3044
3053
|
class: "text-gray-400"
|
|
3045
3054
|
};
|
|
3046
3055
|
const _sfc_main$2 = /* @__PURE__ */ defineComponent({
|
|
3047
|
-
__name: "
|
|
3056
|
+
__name: "StatItem",
|
|
3048
3057
|
props: {
|
|
3049
3058
|
label: {},
|
|
3050
3059
|
value: {},
|
|
3060
|
+
description: {},
|
|
3061
|
+
prefix: {},
|
|
3062
|
+
suffix: {},
|
|
3051
3063
|
icon: {},
|
|
3064
|
+
iconPosition: { default: "top" },
|
|
3065
|
+
iconRounded: { default: "xl" },
|
|
3066
|
+
hideIconBg: { type: Boolean, default: false },
|
|
3052
3067
|
change: {},
|
|
3053
3068
|
changeLabel: {},
|
|
3069
|
+
trend: {},
|
|
3070
|
+
trendOnly: { type: Boolean, default: false },
|
|
3071
|
+
hideTrendIcon: { type: Boolean, default: false },
|
|
3072
|
+
invertTrendColors: { type: Boolean, default: false },
|
|
3073
|
+
size: { default: "md" },
|
|
3054
3074
|
variant: { default: "default" },
|
|
3055
|
-
color: { default: "primary" }
|
|
3075
|
+
color: { default: "primary" },
|
|
3076
|
+
clickable: { type: Boolean, default: false },
|
|
3077
|
+
centered: { type: Boolean },
|
|
3078
|
+
labelFirst: { type: Boolean, default: false },
|
|
3079
|
+
compact: { type: Boolean, default: false },
|
|
3080
|
+
loading: { type: Boolean, default: false },
|
|
3081
|
+
shadow: { default: "sm" },
|
|
3082
|
+
rounded: { default: "xl" },
|
|
3083
|
+
border: { default: "none" },
|
|
3084
|
+
accent: { default: "none" },
|
|
3085
|
+
cardClass: {},
|
|
3086
|
+
iconWrapperClass: {},
|
|
3087
|
+
iconClass: {},
|
|
3088
|
+
valueClass: {},
|
|
3089
|
+
labelClass: {},
|
|
3090
|
+
descriptionClass: {},
|
|
3091
|
+
trendClass: {},
|
|
3092
|
+
contentClass: {}
|
|
3056
3093
|
},
|
|
3094
|
+
emits: ["click"],
|
|
3057
3095
|
setup(__props) {
|
|
3096
|
+
const props = __props;
|
|
3097
|
+
const isCentered = computed(() => {
|
|
3098
|
+
if (props.centered !== void 0) return props.centered;
|
|
3099
|
+
return props.iconPosition === "top" || props.iconPosition === "bottom";
|
|
3100
|
+
});
|
|
3101
|
+
const effectiveTrend = computed(() => {
|
|
3102
|
+
if (props.trend) return props.trend;
|
|
3103
|
+
if (props.change === void 0) return void 0;
|
|
3104
|
+
if (props.change > 0) return "up";
|
|
3105
|
+
if (props.change < 0) return "down";
|
|
3106
|
+
return "neutral";
|
|
3107
|
+
});
|
|
3108
|
+
const sizeClasses = computed(() => {
|
|
3109
|
+
const sizes = {
|
|
3110
|
+
xs: {
|
|
3111
|
+
padding: props.compact ? "none" : "sm",
|
|
3112
|
+
icon: "size-6",
|
|
3113
|
+
iconInner: "size-3",
|
|
3114
|
+
value: "text-lg font-bold",
|
|
3115
|
+
label: "text-xs",
|
|
3116
|
+
description: "text-xs",
|
|
3117
|
+
change: "text-xs",
|
|
3118
|
+
gap: "gap-0.5"
|
|
3119
|
+
},
|
|
3120
|
+
sm: {
|
|
3121
|
+
padding: props.compact ? "sm" : "sm",
|
|
3122
|
+
icon: "size-8",
|
|
3123
|
+
iconInner: "size-4",
|
|
3124
|
+
value: "text-xl font-bold",
|
|
3125
|
+
label: "text-xs",
|
|
3126
|
+
description: "text-xs",
|
|
3127
|
+
change: "text-xs",
|
|
3128
|
+
gap: "gap-1"
|
|
3129
|
+
},
|
|
3130
|
+
md: {
|
|
3131
|
+
padding: props.compact ? "sm" : "md",
|
|
3132
|
+
icon: "size-10",
|
|
3133
|
+
iconInner: "size-5",
|
|
3134
|
+
value: "text-2xl sm:text-3xl font-bold",
|
|
3135
|
+
label: "text-xs sm:text-sm",
|
|
3136
|
+
description: "text-xs sm:text-sm",
|
|
3137
|
+
change: "text-xs",
|
|
3138
|
+
gap: "gap-2"
|
|
3139
|
+
},
|
|
3140
|
+
lg: {
|
|
3141
|
+
padding: props.compact ? "md" : "lg",
|
|
3142
|
+
icon: "size-12",
|
|
3143
|
+
iconInner: "size-6",
|
|
3144
|
+
value: "text-3xl sm:text-4xl font-bold",
|
|
3145
|
+
label: "text-sm sm:text-base",
|
|
3146
|
+
description: "text-sm",
|
|
3147
|
+
change: "text-sm",
|
|
3148
|
+
gap: "gap-3"
|
|
3149
|
+
},
|
|
3150
|
+
xl: {
|
|
3151
|
+
padding: props.compact ? "md" : "lg",
|
|
3152
|
+
icon: "size-14",
|
|
3153
|
+
iconInner: "size-7",
|
|
3154
|
+
value: "text-4xl sm:text-5xl font-bold",
|
|
3155
|
+
label: "text-base sm:text-lg",
|
|
3156
|
+
description: "text-sm sm:text-base",
|
|
3157
|
+
change: "text-sm",
|
|
3158
|
+
gap: "gap-4"
|
|
3159
|
+
}
|
|
3160
|
+
};
|
|
3161
|
+
return sizes[props.size];
|
|
3162
|
+
});
|
|
3163
|
+
const iconRoundedClasses = computed(() => {
|
|
3164
|
+
const map = {
|
|
3165
|
+
none: "rounded-none",
|
|
3166
|
+
sm: "rounded-sm",
|
|
3167
|
+
md: "rounded-md",
|
|
3168
|
+
lg: "rounded-lg",
|
|
3169
|
+
xl: "rounded-xl",
|
|
3170
|
+
full: "rounded-full"
|
|
3171
|
+
};
|
|
3172
|
+
return map[props.iconRounded];
|
|
3173
|
+
});
|
|
3174
|
+
const iconBgClasses = computed(() => {
|
|
3175
|
+
if (props.hideIconBg) return "";
|
|
3176
|
+
if (props.variant === "glass" || props.variant === "solid") return "bg-white/20";
|
|
3177
|
+
const colors = {
|
|
3178
|
+
primary: "bg-primary-100 dark:bg-primary-900/30",
|
|
3179
|
+
secondary: "bg-secondary-100 dark:bg-secondary-900/30",
|
|
3180
|
+
success: "bg-emerald-100 dark:bg-emerald-900/30",
|
|
3181
|
+
warning: "bg-amber-100 dark:bg-amber-900/30",
|
|
3182
|
+
danger: "bg-red-100 dark:bg-red-900/30",
|
|
3183
|
+
info: "bg-blue-100 dark:bg-blue-900/30"
|
|
3184
|
+
};
|
|
3185
|
+
return colors[props.color];
|
|
3186
|
+
});
|
|
3187
|
+
const iconColorClasses = computed(() => {
|
|
3188
|
+
if (props.variant === "glass" || props.variant === "solid") return "text-white";
|
|
3189
|
+
const colors = {
|
|
3190
|
+
primary: "text-primary-600 dark:text-primary-400",
|
|
3191
|
+
secondary: "text-secondary-600 dark:text-secondary-400",
|
|
3192
|
+
success: "text-emerald-600 dark:text-emerald-400",
|
|
3193
|
+
warning: "text-amber-600 dark:text-amber-400",
|
|
3194
|
+
danger: "text-red-600 dark:text-red-400",
|
|
3195
|
+
info: "text-blue-600 dark:text-blue-400"
|
|
3196
|
+
};
|
|
3197
|
+
return colors[props.color];
|
|
3198
|
+
});
|
|
3199
|
+
const solidBgClasses = computed(() => {
|
|
3200
|
+
if (props.variant !== "solid") return "";
|
|
3201
|
+
const colors = {
|
|
3202
|
+
primary: "bg-primary-500",
|
|
3203
|
+
secondary: "bg-secondary-500",
|
|
3204
|
+
success: "bg-emerald-500",
|
|
3205
|
+
warning: "bg-amber-500",
|
|
3206
|
+
danger: "bg-red-500",
|
|
3207
|
+
info: "bg-blue-500"
|
|
3208
|
+
};
|
|
3209
|
+
return colors[props.color];
|
|
3210
|
+
});
|
|
3211
|
+
const valueTextClasses = computed(() => {
|
|
3212
|
+
if (props.variant === "glass" || props.variant === "solid") return "text-white";
|
|
3213
|
+
return "text-gray-900 dark:text-white";
|
|
3214
|
+
});
|
|
3215
|
+
const labelTextClasses = computed(() => {
|
|
3216
|
+
if (props.variant === "glass") return "text-white/80";
|
|
3217
|
+
if (props.variant === "solid") return "text-white/90";
|
|
3218
|
+
return "text-gray-500 dark:text-gray-400";
|
|
3219
|
+
});
|
|
3220
|
+
const descriptionTextClasses = computed(() => {
|
|
3221
|
+
if (props.variant === "glass") return "text-white/70";
|
|
3222
|
+
if (props.variant === "solid") return "text-white/80";
|
|
3223
|
+
return "text-gray-400 dark:text-gray-500";
|
|
3224
|
+
});
|
|
3225
|
+
const trendColorClasses = computed(() => {
|
|
3226
|
+
if (!effectiveTrend.value || effectiveTrend.value === "neutral") {
|
|
3227
|
+
return "text-gray-500";
|
|
3228
|
+
}
|
|
3229
|
+
const isUp = effectiveTrend.value === "up";
|
|
3230
|
+
const greenColor = "text-emerald-500";
|
|
3231
|
+
const redColor = "text-red-500";
|
|
3232
|
+
if (props.invertTrendColors) {
|
|
3233
|
+
return isUp ? redColor : greenColor;
|
|
3234
|
+
}
|
|
3235
|
+
return isUp ? greenColor : redColor;
|
|
3236
|
+
});
|
|
3237
|
+
const trendIcon = computed(() => {
|
|
3238
|
+
if (!effectiveTrend.value || effectiveTrend.value === "neutral") {
|
|
3239
|
+
return "heroicons:minus";
|
|
3240
|
+
}
|
|
3241
|
+
return effectiveTrend.value === "up" ? "heroicons:arrow-trending-up" : "heroicons:arrow-trending-down";
|
|
3242
|
+
});
|
|
3243
|
+
const cardVariant = computed(() => {
|
|
3244
|
+
if (props.variant === "solid") return "default";
|
|
3245
|
+
return props.variant;
|
|
3246
|
+
});
|
|
3247
|
+
const effectiveShadow = computed(() => {
|
|
3248
|
+
if (props.variant === "glass") return "none";
|
|
3249
|
+
return props.shadow;
|
|
3250
|
+
});
|
|
3251
|
+
const effectiveBorder = computed(() => {
|
|
3252
|
+
if (props.variant === "outline") return "default";
|
|
3253
|
+
return props.border;
|
|
3254
|
+
});
|
|
3255
|
+
const layoutClasses = computed(() => {
|
|
3256
|
+
const centered = isCentered.value ? "items-center text-center" : "";
|
|
3257
|
+
switch (props.iconPosition) {
|
|
3258
|
+
case "top":
|
|
3259
|
+
return `flex flex-col ${centered}`;
|
|
3260
|
+
case "bottom":
|
|
3261
|
+
return `flex flex-col-reverse ${centered}`;
|
|
3262
|
+
case "left":
|
|
3263
|
+
return "flex flex-row items-center";
|
|
3264
|
+
case "right":
|
|
3265
|
+
return "flex flex-row-reverse items-center";
|
|
3266
|
+
default:
|
|
3267
|
+
return `flex flex-col ${centered}`;
|
|
3268
|
+
}
|
|
3269
|
+
});
|
|
3270
|
+
const iconMarginClasses = computed(() => {
|
|
3271
|
+
switch (props.iconPosition) {
|
|
3272
|
+
case "top":
|
|
3273
|
+
return "mb-2";
|
|
3274
|
+
case "bottom":
|
|
3275
|
+
return "mt-2";
|
|
3276
|
+
case "left":
|
|
3277
|
+
return "mr-3";
|
|
3278
|
+
case "right":
|
|
3279
|
+
return "ml-3";
|
|
3280
|
+
default:
|
|
3281
|
+
return "";
|
|
3282
|
+
}
|
|
3283
|
+
});
|
|
3284
|
+
const computedContentClasses = computed(() => {
|
|
3285
|
+
const isVertical = props.iconPosition === "top" || props.iconPosition === "bottom";
|
|
3286
|
+
if (isVertical) {
|
|
3287
|
+
return `flex flex-col ${sizeClasses.value.gap}`;
|
|
3288
|
+
}
|
|
3289
|
+
return `flex flex-col flex-1 min-w-0 ${sizeClasses.value.gap}`;
|
|
3290
|
+
});
|
|
3058
3291
|
return (_ctx, _cache) => {
|
|
3059
|
-
return openBlock(),
|
|
3060
|
-
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
-
|
|
3064
|
-
|
|
3065
|
-
|
|
3066
|
-
|
|
3067
|
-
|
|
3068
|
-
|
|
3069
|
-
|
|
3070
|
-
|
|
3071
|
-
|
|
3072
|
-
|
|
3073
|
-
|
|
3074
|
-
|
|
3075
|
-
|
|
3076
|
-
__props.
|
|
3077
|
-
|
|
3078
|
-
|
|
3079
|
-
|
|
3080
|
-
|
|
3081
|
-
|
|
3082
|
-
|
|
3083
|
-
|
|
3084
|
-
|
|
3085
|
-
|
|
3086
|
-
|
|
3087
|
-
|
|
3088
|
-
|
|
3089
|
-
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
|
|
3098
|
-
|
|
3099
|
-
|
|
3100
|
-
|
|
3101
|
-
|
|
3102
|
-
|
|
3103
|
-
|
|
3104
|
-
|
|
3105
|
-
|
|
3106
|
-
|
|
3107
|
-
|
|
3108
|
-
|
|
3109
|
-
|
|
3110
|
-
|
|
3111
|
-
|
|
3112
|
-
|
|
3113
|
-
|
|
3114
|
-
|
|
3115
|
-
|
|
3116
|
-
(
|
|
3117
|
-
|
|
3118
|
-
|
|
3119
|
-
|
|
3120
|
-
|
|
3121
|
-
|
|
3122
|
-
|
|
3123
|
-
|
|
3124
|
-
|
|
3125
|
-
|
|
3126
|
-
|
|
3127
|
-
|
|
3128
|
-
|
|
3129
|
-
|
|
3130
|
-
|
|
3131
|
-
|
|
3132
|
-
|
|
3133
|
-
|
|
3134
|
-
|
|
3135
|
-
|
|
3136
|
-
|
|
3137
|
-
|
|
3292
|
+
return openBlock(), createBlock(_sfc_main$z, {
|
|
3293
|
+
variant: cardVariant.value,
|
|
3294
|
+
padding: sizeClasses.value.padding,
|
|
3295
|
+
clickable: __props.clickable,
|
|
3296
|
+
shadow: effectiveShadow.value,
|
|
3297
|
+
border: effectiveBorder.value,
|
|
3298
|
+
rounded: __props.rounded,
|
|
3299
|
+
accent: __props.accent,
|
|
3300
|
+
"header-divider": false,
|
|
3301
|
+
class: normalizeClass([__props.cardClass, solidBgClasses.value, __props.variant === "solid" && "text-white"]),
|
|
3302
|
+
onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit("click", $event))
|
|
3303
|
+
}, {
|
|
3304
|
+
default: withCtx(() => [
|
|
3305
|
+
__props.loading ? (openBlock(), createElementBlock("div", {
|
|
3306
|
+
key: 0,
|
|
3307
|
+
class: normalizeClass(layoutClasses.value)
|
|
3308
|
+
}, [
|
|
3309
|
+
__props.icon ? (openBlock(), createBlock(_sfc_main$L, {
|
|
3310
|
+
key: 0,
|
|
3311
|
+
class: normalizeClass([sizeClasses.value.icon, iconRoundedClasses.value, iconMarginClasses.value])
|
|
3312
|
+
}, null, 8, ["class"])) : createCommentVNode("", true),
|
|
3313
|
+
createElementVNode("div", {
|
|
3314
|
+
class: normalizeClass(computedContentClasses.value)
|
|
3315
|
+
}, [
|
|
3316
|
+
createVNode(_sfc_main$L, {
|
|
3317
|
+
class: normalizeClass(sizeClasses.value.value),
|
|
3318
|
+
width: "60%",
|
|
3319
|
+
height: "1.5em"
|
|
3320
|
+
}, null, 8, ["class"]),
|
|
3321
|
+
createVNode(_sfc_main$L, {
|
|
3322
|
+
class: normalizeClass(sizeClasses.value.label),
|
|
3323
|
+
width: "80%",
|
|
3324
|
+
height: "1em"
|
|
3325
|
+
}, null, 8, ["class"])
|
|
3326
|
+
], 2)
|
|
3327
|
+
], 2)) : (openBlock(), createElementBlock("div", {
|
|
3328
|
+
key: 1,
|
|
3329
|
+
class: normalizeClass(layoutClasses.value)
|
|
3330
|
+
}, [
|
|
3331
|
+
__props.icon || _ctx.$slots.icon ? (openBlock(), createElementBlock("div", {
|
|
3332
|
+
key: 0,
|
|
3333
|
+
class: normalizeClass([
|
|
3334
|
+
"flex items-center justify-center flex-shrink-0",
|
|
3335
|
+
sizeClasses.value.icon,
|
|
3336
|
+
iconRoundedClasses.value,
|
|
3337
|
+
iconBgClasses.value,
|
|
3338
|
+
iconMarginClasses.value,
|
|
3339
|
+
__props.iconWrapperClass
|
|
3340
|
+
])
|
|
3341
|
+
}, [
|
|
3342
|
+
renderSlot(_ctx.$slots, "icon", {}, () => [
|
|
3343
|
+
createVNode(unref(Icon), {
|
|
3344
|
+
icon: __props.icon,
|
|
3345
|
+
class: normalizeClass([sizeClasses.value.iconInner, iconColorClasses.value, __props.iconClass])
|
|
3346
|
+
}, null, 8, ["icon", "class"])
|
|
3347
|
+
])
|
|
3348
|
+
], 2)) : createCommentVNode("", true),
|
|
3349
|
+
createElementVNode("div", {
|
|
3350
|
+
class: normalizeClass([computedContentClasses.value, __props.contentClass])
|
|
3351
|
+
}, [
|
|
3352
|
+
__props.labelFirst ? (openBlock(), createElementBlock("div", {
|
|
3353
|
+
key: 0,
|
|
3354
|
+
class: normalizeClass([sizeClasses.value.label, labelTextClasses.value, __props.labelClass])
|
|
3355
|
+
}, [
|
|
3356
|
+
renderSlot(_ctx.$slots, "label", {}, () => [
|
|
3357
|
+
createTextVNode(toDisplayString(__props.label), 1)
|
|
3358
|
+
])
|
|
3359
|
+
], 2)) : createCommentVNode("", true),
|
|
3360
|
+
createElementVNode("div", {
|
|
3361
|
+
class: normalizeClass([sizeClasses.value.value, valueTextClasses.value, __props.valueClass])
|
|
3362
|
+
}, [
|
|
3363
|
+
renderSlot(_ctx.$slots, "value", {}, () => [
|
|
3364
|
+
__props.prefix ? (openBlock(), createElementBlock("span", _hoisted_1$1, toDisplayString(__props.prefix), 1)) : createCommentVNode("", true),
|
|
3365
|
+
createTextVNode(" " + toDisplayString(__props.value) + " ", 1),
|
|
3366
|
+
__props.suffix ? (openBlock(), createElementBlock("span", _hoisted_2$1, toDisplayString(__props.suffix), 1)) : createCommentVNode("", true)
|
|
3367
|
+
])
|
|
3368
|
+
], 2),
|
|
3369
|
+
!__props.labelFirst ? (openBlock(), createElementBlock("div", {
|
|
3370
|
+
key: 1,
|
|
3371
|
+
class: normalizeClass([sizeClasses.value.label, labelTextClasses.value, __props.labelClass])
|
|
3372
|
+
}, [
|
|
3373
|
+
renderSlot(_ctx.$slots, "label", {}, () => [
|
|
3374
|
+
createTextVNode(toDisplayString(__props.label), 1)
|
|
3375
|
+
])
|
|
3376
|
+
], 2)) : createCommentVNode("", true),
|
|
3377
|
+
__props.description || _ctx.$slots.description ? (openBlock(), createElementBlock("div", {
|
|
3378
|
+
key: 2,
|
|
3379
|
+
class: normalizeClass([sizeClasses.value.description, descriptionTextClasses.value, __props.descriptionClass])
|
|
3380
|
+
}, [
|
|
3381
|
+
renderSlot(_ctx.$slots, "description", {}, () => [
|
|
3382
|
+
createTextVNode(toDisplayString(__props.description), 1)
|
|
3383
|
+
])
|
|
3384
|
+
], 2)) : createCommentVNode("", true),
|
|
3385
|
+
__props.change !== void 0 || __props.trend ? (openBlock(), createElementBlock("div", {
|
|
3386
|
+
key: 3,
|
|
3387
|
+
class: normalizeClass([
|
|
3388
|
+
"mt-1 font-medium inline-flex items-center gap-1",
|
|
3389
|
+
sizeClasses.value.change,
|
|
3390
|
+
trendColorClasses.value,
|
|
3391
|
+
__props.trendClass
|
|
3392
|
+
])
|
|
3393
|
+
}, [
|
|
3394
|
+
!__props.hideTrendIcon ? (openBlock(), createBlock(unref(Icon), {
|
|
3395
|
+
key: 0,
|
|
3396
|
+
icon: trendIcon.value,
|
|
3397
|
+
class: "size-3.5"
|
|
3398
|
+
}, null, 8, ["icon"])) : createCommentVNode("", true),
|
|
3399
|
+
!__props.trendOnly && __props.change !== void 0 ? (openBlock(), createElementBlock("span", _hoisted_3$1, toDisplayString(__props.change >= 0 ? "+" : "") + toDisplayString(__props.change) + "% ", 1)) : createCommentVNode("", true),
|
|
3400
|
+
__props.changeLabel ? (openBlock(), createElementBlock("span", _hoisted_4, toDisplayString(__props.changeLabel), 1)) : createCommentVNode("", true)
|
|
3401
|
+
], 2)) : createCommentVNode("", true)
|
|
3402
|
+
], 2)
|
|
3403
|
+
], 2)),
|
|
3404
|
+
renderSlot(_ctx.$slots, "extra")
|
|
3405
|
+
]),
|
|
3406
|
+
_: 3
|
|
3407
|
+
}, 8, ["variant", "padding", "clickable", "shadow", "border", "rounded", "accent", "class"]);
|
|
3138
3408
|
};
|
|
3139
3409
|
}
|
|
3140
3410
|
});
|
|
3141
3411
|
const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
3142
|
-
__name: "
|
|
3412
|
+
__name: "Stats",
|
|
3143
3413
|
props: {
|
|
3144
3414
|
stats: {},
|
|
3145
3415
|
cols: {},
|
|
3416
|
+
gap: { default: "md" },
|
|
3146
3417
|
variant: { default: "default" },
|
|
3147
|
-
|
|
3418
|
+
size: { default: "md" },
|
|
3419
|
+
iconPosition: { default: "top" },
|
|
3420
|
+
iconRounded: { default: "xl" },
|
|
3421
|
+
hideIconBg: { type: Boolean, default: false },
|
|
3422
|
+
color: { default: "primary" },
|
|
3423
|
+
labelFirst: { type: Boolean, default: false },
|
|
3424
|
+
compact: { type: Boolean, default: false },
|
|
3425
|
+
loading: { type: Boolean, default: false },
|
|
3426
|
+
shadow: { default: "sm" },
|
|
3427
|
+
rounded: { default: "xl" },
|
|
3428
|
+
border: { default: "none" },
|
|
3429
|
+
accent: { default: "none" },
|
|
3430
|
+
clickable: { type: Boolean, default: false },
|
|
3431
|
+
centered: { type: Boolean },
|
|
3432
|
+
invertTrendColors: { type: Boolean, default: false },
|
|
3433
|
+
hideTrendIcon: { type: Boolean, default: false },
|
|
3434
|
+
gridClass: {},
|
|
3435
|
+
cardClass: {},
|
|
3436
|
+
iconWrapperClass: {},
|
|
3437
|
+
iconClass: {},
|
|
3438
|
+
valueClass: {},
|
|
3439
|
+
labelClass: {}
|
|
3148
3440
|
},
|
|
3441
|
+
emits: ["item-click"],
|
|
3149
3442
|
setup(__props) {
|
|
3150
3443
|
return (_ctx, _cache) => {
|
|
3444
|
+
var _a, _b, _c, _d;
|
|
3151
3445
|
return openBlock(), createElementBlock("div", {
|
|
3152
|
-
class: normalizeClass(["grid
|
|
3446
|
+
class: normalizeClass(["grid", [
|
|
3447
|
+
__props.gridClass,
|
|
3448
|
+
// Gap classes
|
|
3449
|
+
__props.gap === "none" && "gap-0",
|
|
3450
|
+
__props.gap === "xs" && "gap-1 sm:gap-2",
|
|
3451
|
+
__props.gap === "sm" && "gap-2 sm:gap-3",
|
|
3452
|
+
__props.gap === "md" && "gap-3 sm:gap-4",
|
|
3453
|
+
__props.gap === "lg" && "gap-4 sm:gap-6",
|
|
3454
|
+
__props.gap === "xl" && "gap-6 sm:gap-8",
|
|
3455
|
+
// Column classes
|
|
3456
|
+
__props.cols === 1 && "grid-cols-1",
|
|
3153
3457
|
__props.cols === 2 && "grid-cols-2",
|
|
3154
3458
|
__props.cols === 3 && "grid-cols-3",
|
|
3155
3459
|
__props.cols === 4 && "grid-cols-2 sm:grid-cols-4",
|
|
3156
|
-
|
|
3157
|
-
|
|
3158
|
-
|
|
3159
|
-
!__props.cols && __props.stats.length
|
|
3460
|
+
__props.cols === 5 && "grid-cols-2 sm:grid-cols-3 lg:grid-cols-5",
|
|
3461
|
+
__props.cols === 6 && "grid-cols-2 sm:grid-cols-3 lg:grid-cols-6",
|
|
3462
|
+
// Auto columns based on stats length
|
|
3463
|
+
!__props.cols && ((_a = __props.stats) == null ? void 0 : _a.length) === 1 && "grid-cols-1",
|
|
3464
|
+
!__props.cols && ((_b = __props.stats) == null ? void 0 : _b.length) === 2 && "grid-cols-2",
|
|
3465
|
+
!__props.cols && ((_c = __props.stats) == null ? void 0 : _c.length) === 3 && "grid-cols-3",
|
|
3466
|
+
!__props.cols && ((_d = __props.stats) == null ? void 0 : _d.length) === 4 && "grid-cols-2 sm:grid-cols-4",
|
|
3467
|
+
!__props.cols && __props.stats && __props.stats.length > 4 && "grid-cols-2 sm:grid-cols-3 lg:grid-cols-4"
|
|
3160
3468
|
]])
|
|
3161
3469
|
}, [
|
|
3162
3470
|
(openBlock(true), createElementBlock(Fragment, null, renderList(__props.stats, (stat, index) => {
|
|
@@ -3167,10 +3475,36 @@ const _sfc_main$1 = /* @__PURE__ */ defineComponent({
|
|
|
3167
3475
|
icon: stat.icon,
|
|
3168
3476
|
change: stat.change,
|
|
3169
3477
|
"change-label": stat.changeLabel,
|
|
3478
|
+
trend: stat.trend,
|
|
3479
|
+
description: stat.description,
|
|
3480
|
+
prefix: stat.prefix,
|
|
3481
|
+
suffix: stat.suffix,
|
|
3170
3482
|
variant: __props.variant,
|
|
3171
|
-
|
|
3172
|
-
|
|
3173
|
-
|
|
3483
|
+
size: __props.size,
|
|
3484
|
+
"icon-position": __props.iconPosition,
|
|
3485
|
+
"icon-rounded": __props.iconRounded,
|
|
3486
|
+
"hide-icon-bg": __props.hideIconBg,
|
|
3487
|
+
color: stat.color || __props.color,
|
|
3488
|
+
"label-first": __props.labelFirst,
|
|
3489
|
+
compact: __props.compact,
|
|
3490
|
+
loading: __props.loading,
|
|
3491
|
+
shadow: __props.shadow,
|
|
3492
|
+
rounded: __props.rounded,
|
|
3493
|
+
border: __props.border,
|
|
3494
|
+
accent: __props.accent,
|
|
3495
|
+
clickable: __props.clickable,
|
|
3496
|
+
centered: __props.centered,
|
|
3497
|
+
"invert-trend-colors": __props.invertTrendColors,
|
|
3498
|
+
"hide-trend-icon": __props.hideTrendIcon,
|
|
3499
|
+
"card-class": __props.cardClass,
|
|
3500
|
+
"icon-wrapper-class": __props.iconWrapperClass,
|
|
3501
|
+
"icon-class": __props.iconClass,
|
|
3502
|
+
"value-class": __props.valueClass,
|
|
3503
|
+
"label-class": __props.labelClass,
|
|
3504
|
+
onClick: ($event) => _ctx.$emit("item-click", index, stat, $event)
|
|
3505
|
+
}, 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"]);
|
|
3506
|
+
}), 128)),
|
|
3507
|
+
renderSlot(_ctx.$slots, "default")
|
|
3174
3508
|
], 2);
|
|
3175
3509
|
};
|
|
3176
3510
|
}
|
|
@@ -3351,4 +3685,4 @@ export {
|
|
|
3351
3685
|
_sfc_main$b as y,
|
|
3352
3686
|
_sfc_main$a as z
|
|
3353
3687
|
};
|
|
3354
|
-
//# sourceMappingURL=FilterTabs.vue_vue_type_script_setup_true_lang-
|
|
3688
|
+
//# sourceMappingURL=FilterTabs.vue_vue_type_script_setup_true_lang-aPs8YGWB.js.map
|