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.
- 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-l8lJzwoY.cjs → FilterTabs.vue_vue_type_script_setup_true_lang-CwcJkw3D.cjs} +295 -94
- 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
- package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-CJnvcF8Z.js → FilterTabs.vue_vue_type_script_setup_true_lang-aPs8YGWB.js} +290 -89
- 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
- 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 +19 -0
- package/dist/components/core/StatItem.vue.d.ts +59 -5
- package/dist/components/core/Stats.stories.d.ts +21 -0
- package/dist/components/core/Stats.vue.d.ts +60 -4
- package/dist/components/core/index.cjs +1 -1
- package/dist/components/core/index.d.ts +2 -2
- package/dist/components/core/index.js +1 -1
- package/dist/components/feedback/index.cjs +8 -8
- package/dist/components/feedback/index.js +7 -7
- package/dist/components/index.cjs +9 -9
- package/dist/components/index.js +8 -8
- package/dist/{index-CYXOfUOG.cjs → index-CKd33NtQ.cjs} +10 -10
- package/dist/{index-CYXOfUOG.cjs.map → index-CKd33NtQ.cjs.map} +1 -1
- package/dist/{index-C_N7WRnM.js → index-D-VE0o-l.js} +4 -4
- package/dist/{index-C_N7WRnM.js.map → index-D-VE0o-l.js.map} +1 -1
- package/dist/index.cjs +10 -10
- package/dist/index.js +12 -12
- 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/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
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const vue = require("vue");
|
|
3
3
|
const index = require("./index-D1x3TH9k.cjs");
|
|
4
|
-
const
|
|
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$
|
|
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$
|
|
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(
|
|
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$
|
|
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$
|
|
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$
|
|
83
|
-
const _hoisted_4$
|
|
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(
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
1121
|
-
const _hoisted_4$
|
|
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(
|
|
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$
|
|
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$
|
|
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(
|
|
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$
|
|
1364
|
-
const _hoisted_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(
|
|
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$
|
|
1450
|
-
__props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$
|
|
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$
|
|
1634
|
-
const _hoisted_4$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
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$
|
|
2540
|
-
const _hoisted_4$
|
|
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$
|
|
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$
|
|
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$
|
|
2785
|
-
const _hoisted_4$
|
|
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$
|
|
2850
|
+
vue.createElementVNode("div", _hoisted_4$2, [
|
|
2851
2851
|
vue.renderSlot(_ctx.$slots, "default")
|
|
2852
2852
|
])
|
|
2853
|
-
], 8, _hoisted_3$
|
|
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$
|
|
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$
|
|
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 = {
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
3161
|
-
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
|
|
3166
|
-
|
|
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
|
-
|
|
3170
|
-
|
|
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
|
-
|
|
3173
|
-
|
|
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
|
|
3178
|
-
|
|
3179
|
-
|
|
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
|
|
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:
|
|
3189
|
-
border:
|
|
3190
|
-
rounded:
|
|
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.
|
|
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.
|
|
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
|
-
"
|
|
3335
|
+
"flex items-center justify-center flex-shrink-0",
|
|
3203
3336
|
sizeClasses.value.icon,
|
|
3337
|
+
iconRoundedClasses.value,
|
|
3204
3338
|
iconBgClasses.value,
|
|
3205
|
-
|
|
3206
|
-
__props.
|
|
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(
|
|
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.
|
|
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.
|
|
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:
|
|
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.
|
|
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",
|
|
3246
|
-
__props.changeLabel ? (vue.openBlock(), vue.createElementBlock("span",
|
|
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
|
-
|
|
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
|
-
|
|
3305
|
-
|
|
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-
|
|
3687
|
+
//# sourceMappingURL=FilterTabs.vue_vue_type_script_setup_true_lang-CwcJkw3D.cjs.map
|