cisse-vue-ui 0.5.17 → 0.5.22
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/README.md +666 -666
- package/dist/Button.vue_vue_type_script_setup_true_lang-DKE8elsf.js +236 -0
- package/dist/Button.vue_vue_type_script_setup_true_lang-DKE8elsf.js.map +1 -0
- package/dist/Button.vue_vue_type_script_setup_true_lang-DrGM65ny.cjs +235 -0
- package/dist/Button.vue_vue_type_script_setup_true_lang-DrGM65ny.cjs.map +1 -0
- package/dist/{RangeSlider.vue_vue_type_script_setup_true_lang-y3zIxWfI.js → Combobox.vue_vue_type_script_setup_true_lang-DhcLb6DX.js} +408 -185
- package/dist/Combobox.vue_vue_type_script_setup_true_lang-DhcLb6DX.js.map +1 -0
- package/dist/{RangeSlider.vue_vue_type_script_setup_true_lang-Cv1OwT9S.cjs → Combobox.vue_vue_type_script_setup_true_lang-FdUrjmSG.cjs} +435 -212
- package/dist/Combobox.vue_vue_type_script_setup_true_lang-FdUrjmSG.cjs.map +1 -0
- package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-Bech-H58.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-CNucAMQg.js} +226 -248
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-CNucAMQg.js.map +1 -0
- package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-CHoagJ0-.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-DXb9wQQv.cjs} +225 -247
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DXb9wQQv.cjs.map +1 -0
- package/dist/{Timeline.vue_vue_type_script_setup_true_lang-CuPF4MPe.js → DarkModeToggle.vue_vue_type_script_setup_true_lang-43fxlbro.js} +209 -415
- package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-43fxlbro.js.map +1 -0
- package/dist/{Timeline.vue_vue_type_script_setup_true_lang-CqeiZOID.cjs → DarkModeToggle.vue_vue_type_script_setup_true_lang-BoB48313.cjs} +234 -440
- package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-BoB48313.cjs.map +1 -0
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js.map +1 -1
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs.map +1 -1
- package/dist/PageLayout.vue_vue_type_script_setup_true_lang-D22uNeS1.cjs.map +1 -1
- package/dist/PageLayout.vue_vue_type_script_setup_true_lang-kT7np2ir.js.map +1 -1
- package/dist/cisse-vue-ui.css +51 -51
- package/dist/components/core/AccordionItem.stories.d.ts +10 -0
- package/dist/components/core/Avatar.vue.d.ts +1 -1
- package/dist/components/core/Button.vue.d.ts +1 -1
- package/dist/components/core/CardComponent.stories.d.ts +3 -0
- package/dist/components/core/CardComponent.vue.d.ts +15 -2
- package/dist/components/core/DarkModeToggle.stories.d.ts +15 -0
- package/dist/components/core/DarkModeToggle.test.d.ts +1 -0
- package/dist/components/core/DarkModeToggle.vue.d.ts +21 -0
- package/dist/components/core/MobileList.stories.d.ts +13 -0
- package/dist/components/core/MobileList.vue.d.ts +6 -0
- package/dist/components/core/ResponsiveList.stories.d.ts +15 -0
- package/dist/components/core/ResponsiveList.vue.d.ts +6 -0
- package/dist/components/core/TabPanel.stories.d.ts +8 -0
- package/dist/components/core/TableAction.stories.d.ts +14 -0
- package/dist/components/core/TableComponent.stories.d.ts +2 -0
- package/dist/components/core/TableComponent.vue.d.ts +6 -0
- package/dist/components/core/index.cjs +22 -20
- package/dist/components/core/index.cjs.map +1 -1
- package/dist/components/core/index.d.ts +2 -0
- package/dist/components/core/index.js +16 -14
- package/dist/components/core/index.js.map +1 -1
- package/dist/components/feedback/CardSkeleton.stories.d.ts +11 -0
- package/dist/components/feedback/CardSkeleton.test.d.ts +1 -0
- package/dist/components/feedback/CardSkeleton.vue.d.ts +1 -1
- package/dist/components/feedback/ConfirmDialog.stories.d.ts +12 -0
- package/dist/components/feedback/ConfirmDialog.test.d.ts +1 -0
- package/dist/components/feedback/ConfirmDialog.vue.d.ts +53 -0
- package/dist/components/feedback/ListSkeleton.stories.d.ts +12 -0
- package/dist/components/feedback/ListSkeleton.test.d.ts +1 -0
- package/dist/components/feedback/ListSkeleton.vue.d.ts +1 -1
- package/dist/components/feedback/Modal.vue.d.ts +11 -2
- package/dist/components/feedback/NotificationComponent.stories.d.ts +14 -0
- package/dist/components/feedback/NotificationList.stories.d.ts +11 -0
- package/dist/components/feedback/Progress.vue.d.ts +1 -1
- package/dist/components/feedback/Skeleton.vue.d.ts +1 -1
- package/dist/components/feedback/TableSkeleton.stories.d.ts +12 -0
- package/dist/components/feedback/TableSkeleton.test.d.ts +1 -0
- package/dist/components/feedback/TableSkeleton.vue.d.ts +1 -1
- package/dist/components/feedback/ToastContainer.stories.d.ts +15 -0
- package/dist/components/feedback/index.cjs +17 -15
- package/dist/components/feedback/index.cjs.map +1 -1
- package/dist/components/feedback/index.d.ts +2 -0
- package/dist/components/feedback/index.js +6 -4
- package/dist/components/feedback/index.js.map +1 -1
- package/dist/components/form/ColorPicker.vue.d.ts +3 -0
- package/dist/components/form/Combobox.stories.d.ts +15 -0
- package/dist/components/form/Combobox.test.d.ts +1 -0
- package/dist/components/form/Combobox.vue.d.ts +46 -0
- package/dist/components/form/FileUpload.vue.d.ts +1 -1
- package/dist/components/form/FormHelp.stories.d.ts +11 -0
- package/dist/components/form/FormLabel.stories.d.ts +12 -0
- package/dist/components/form/FormSelect.stories.d.ts +2 -0
- package/dist/components/form/index.cjs +17 -16
- package/dist/components/form/index.cjs.map +1 -1
- package/dist/components/form/index.d.ts +2 -0
- package/dist/components/form/index.js +3 -2
- package/dist/components/index.cjs +55 -51
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +36 -32
- package/dist/components/index.js.map +1 -1
- package/dist/composables/index.cjs +3 -2
- package/dist/composables/index.cjs.map +1 -1
- package/dist/composables/index.js +9 -8
- package/dist/composables/index.js.map +1 -1
- package/dist/index-D7HVSFi2.cjs +337 -0
- package/dist/index-D7HVSFi2.cjs.map +1 -0
- package/dist/index-DZYqrXV0.js +75 -0
- package/dist/index-DZYqrXV0.js.map +1 -0
- package/dist/index-Dghdw1yo.js +338 -0
- package/dist/index-Dghdw1yo.js.map +1 -0
- package/dist/index-DjEv91o4.cjs +74 -0
- package/dist/index-DjEv91o4.cjs.map +1 -0
- package/dist/index.cjs +59 -54
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +46 -41
- package/dist/index.js.map +1 -1
- package/dist/style.css +1 -1
- package/dist/useDarkMode-Cl5QWTlC.js +53 -0
- package/dist/useDarkMode-Cl5QWTlC.js.map +1 -0
- package/dist/useDarkMode-DLZcJEUQ.cjs +52 -0
- package/dist/useDarkMode-DLZcJEUQ.cjs.map +1 -0
- package/dist/useDropdown-DHFnd259.cjs.map +1 -1
- package/dist/useDropdown-iVu14E6s.js.map +1 -1
- package/dist/{useToast-CRh_sG82.cjs → useToast-Bk60GArg.cjs} +1 -50
- package/dist/useToast-Bk60GArg.cjs.map +1 -0
- package/dist/{useToast-DwFOkewC.js → useToast-ina5g3mj.js} +6 -55
- package/dist/useToast-ina5g3mj.js.map +1 -0
- package/package.json +168 -168
- package/dist/Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js +0 -54
- package/dist/Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js.map +0 -1
- package/dist/Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs +0 -53
- package/dist/Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs.map +0 -1
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-Bech-H58.js.map +0 -1
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-CHoagJ0-.cjs.map +0 -1
- package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-Cv1OwT9S.cjs.map +0 -1
- package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-y3zIxWfI.js.map +0 -1
- package/dist/Timeline.vue_vue_type_script_setup_true_lang-CqeiZOID.cjs.map +0 -1
- package/dist/Timeline.vue_vue_type_script_setup_true_lang-CuPF4MPe.js.map +0 -1
- package/dist/index-5Ru0o5KY.js +0 -71
- package/dist/index-5Ru0o5KY.js.map +0 -1
- package/dist/index-CnDEGRt-.cjs +0 -70
- package/dist/index-CnDEGRt-.cjs.map +0 -1
- package/dist/useToast-CRh_sG82.cjs.map +0 -1
- package/dist/useToast-DwFOkewC.js.map +0 -1
|
@@ -1,11 +1,16 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const vue = require("vue");
|
|
3
|
-
const
|
|
3
|
+
const index = require("./index-D7HVSFi2.cjs");
|
|
4
|
+
const Button_vue_vue_type_script_setup_true_lang = require("./Button.vue_vue_type_script_setup_true_lang-DrGM65ny.cjs");
|
|
4
5
|
const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
|
|
5
6
|
const vue$1 = require("@iconify/vue");
|
|
6
7
|
const useDropdown = require("./useDropdown-DHFnd259.cjs");
|
|
7
|
-
const
|
|
8
|
-
const
|
|
8
|
+
const useDarkMode = require("./useDarkMode-DLZcJEUQ.cjs");
|
|
9
|
+
const _hoisted_1$d = {
|
|
10
|
+
key: 1,
|
|
11
|
+
class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950"
|
|
12
|
+
};
|
|
13
|
+
const _hoisted_2$a = { class: "flex flex-col gap-0.5" };
|
|
9
14
|
const _hoisted_3$7 = {
|
|
10
15
|
key: 1,
|
|
11
16
|
class: "text-sm font-normal text-gray-600 dark:text-gray-400"
|
|
@@ -17,7 +22,11 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
17
22
|
title: {},
|
|
18
23
|
description: {},
|
|
19
24
|
titleClass: {},
|
|
20
|
-
dividerClass: {}
|
|
25
|
+
dividerClass: {},
|
|
26
|
+
loading: { type: Boolean, default: false },
|
|
27
|
+
loadingLines: { default: 3 },
|
|
28
|
+
loadingAvatar: { type: Boolean, default: false },
|
|
29
|
+
loadingActions: { type: Boolean, default: false }
|
|
21
30
|
},
|
|
22
31
|
setup(__props) {
|
|
23
32
|
const props = __props;
|
|
@@ -28,7 +37,12 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
28
37
|
() => props.dividerClass || "border-gray-200 dark:border-gray-700"
|
|
29
38
|
);
|
|
30
39
|
return (_ctx, _cache) => {
|
|
31
|
-
return vue.openBlock(), vue.
|
|
40
|
+
return __props.loading ? (vue.openBlock(), vue.createBlock(Button_vue_vue_type_script_setup_true_lang._sfc_main$2, {
|
|
41
|
+
key: 0,
|
|
42
|
+
lines: __props.loadingLines,
|
|
43
|
+
"show-avatar": __props.loadingAvatar,
|
|
44
|
+
"show-actions": __props.loadingActions
|
|
45
|
+
}, null, 8, ["lines", "show-avatar", "show-actions"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
|
|
32
46
|
_ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
33
47
|
key: 0,
|
|
34
48
|
class: vue.normalizeClass(["border-b", dividerClasses.value])
|
|
@@ -38,7 +52,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
38
52
|
key: 1,
|
|
39
53
|
class: vue.normalizeClass(["flex items-center justify-between border-b px-5 py-3", dividerClasses.value])
|
|
40
54
|
}, [
|
|
41
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
55
|
+
vue.createElementVNode("div", _hoisted_2$a, [
|
|
42
56
|
__props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", {
|
|
43
57
|
key: 0,
|
|
44
58
|
class: vue.normalizeClass(["text-md font-semibold", titleClasses.value])
|
|
@@ -58,12 +72,15 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
58
72
|
])
|
|
59
73
|
], 2)) : vue.createCommentVNode("", true),
|
|
60
74
|
vue.renderSlot(_ctx.$slots, "default")
|
|
61
|
-
]);
|
|
75
|
+
]));
|
|
62
76
|
};
|
|
63
77
|
}
|
|
64
78
|
});
|
|
65
|
-
const _hoisted_1$
|
|
66
|
-
const _hoisted_2$
|
|
79
|
+
const _hoisted_1$c = { class: "overflow-hidden" };
|
|
80
|
+
const _hoisted_2$9 = {
|
|
81
|
+
key: 1,
|
|
82
|
+
class: "overflow-x-auto"
|
|
83
|
+
};
|
|
67
84
|
const _hoisted_3$6 = { class: "w-full divide-y divide-black/10 text-left dark:divide-white/10" };
|
|
68
85
|
const _hoisted_4$5 = { class: "bg-black/5 text-sm font-semibold text-gray-600 uppercase dark:bg-white/5 dark:text-gray-400" };
|
|
69
86
|
const _hoisted_5$3 = {
|
|
@@ -103,7 +120,9 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
103
120
|
selectableFilter: {},
|
|
104
121
|
keyField: { default: "id" },
|
|
105
122
|
sortBy: {},
|
|
106
|
-
sortDirection: {}
|
|
123
|
+
sortDirection: {},
|
|
124
|
+
loading: { type: Boolean, default: false },
|
|
125
|
+
loadingRows: { default: 5 }
|
|
107
126
|
},
|
|
108
127
|
emits: ["select", "selectAll", "sort"],
|
|
109
128
|
setup(__props, { emit: __emit }) {
|
|
@@ -192,13 +211,17 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
192
211
|
return props.sortBy === property.name;
|
|
193
212
|
};
|
|
194
213
|
return (_ctx, _cache) => {
|
|
195
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
196
|
-
vue.
|
|
214
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
|
|
215
|
+
__props.loading ? (vue.openBlock(), vue.createBlock(Button_vue_vue_type_script_setup_true_lang._sfc_main$1, {
|
|
216
|
+
key: 0,
|
|
217
|
+
rows: __props.loadingRows,
|
|
218
|
+
columns: visibleProperties.value.length
|
|
219
|
+
}, null, 8, ["rows", "columns"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$9, [
|
|
197
220
|
vue.createElementVNode("table", _hoisted_3$6, [
|
|
198
221
|
vue.createElementVNode("thead", _hoisted_4$5, [
|
|
199
222
|
vue.createElementVNode("tr", null, [
|
|
200
223
|
__props.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_5$3, [
|
|
201
|
-
vue.createVNode(
|
|
224
|
+
vue.createVNode(index._sfc_main, {
|
|
202
225
|
"model-value": allSelected.value,
|
|
203
226
|
indeterminate: someSelected.value,
|
|
204
227
|
disabled: selectableItems.value.length === 0,
|
|
@@ -257,7 +280,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
257
280
|
class: vue.normalizeClass(["hover:bg-black/5 dark:hover:bg-white/5 transition-colors", { "bg-primary/5 dark:bg-primary/10": isSelected(item) }])
|
|
258
281
|
}, [
|
|
259
282
|
__props.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_11$1, [
|
|
260
|
-
isSelectable(item) ? (vue.openBlock(), vue.createBlock(
|
|
283
|
+
isSelectable(item) ? (vue.openBlock(), vue.createBlock(index._sfc_main, {
|
|
261
284
|
key: 0,
|
|
262
285
|
"model-value": isSelected(item),
|
|
263
286
|
"onUpdate:modelValue": ($event) => handleSelect(item)
|
|
@@ -290,17 +313,17 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
290
313
|
], 2);
|
|
291
314
|
}), 128))
|
|
292
315
|
])
|
|
293
|
-
])
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
vue.
|
|
297
|
-
]))
|
|
316
|
+
]),
|
|
317
|
+
!__props.items || __props.items.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_13, [
|
|
318
|
+
vue.renderSlot(_ctx.$slots, "empty")
|
|
319
|
+
])) : vue.createCommentVNode("", true)
|
|
320
|
+
]))
|
|
298
321
|
]);
|
|
299
322
|
};
|
|
300
323
|
}
|
|
301
324
|
});
|
|
302
|
-
const _hoisted_1$
|
|
303
|
-
const _hoisted_2$
|
|
325
|
+
const _hoisted_1$b = { class: "space-y-3" };
|
|
326
|
+
const _hoisted_2$8 = { class: "flex items-center gap-3 p-3" };
|
|
304
327
|
const _hoisted_3$5 = { class: "text-sm text-gray-600 dark:text-gray-400" };
|
|
305
328
|
const _hoisted_4$4 = {
|
|
306
329
|
key: 0,
|
|
@@ -325,7 +348,9 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
|
|
|
325
348
|
keyField: { default: "id" },
|
|
326
349
|
selectable: { type: Boolean, default: false },
|
|
327
350
|
selectedItems: {},
|
|
328
|
-
selectableFilter: {}
|
|
351
|
+
selectableFilter: {},
|
|
352
|
+
loading: { type: Boolean, default: false },
|
|
353
|
+
loadingItems: { default: 5 }
|
|
329
354
|
},
|
|
330
355
|
emits: ["select", "selectAll"],
|
|
331
356
|
setup(__props, { emit: __emit }) {
|
|
@@ -365,257 +390,68 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
|
|
|
365
390
|
};
|
|
366
391
|
const hasEmptySlot = vue.computed(() => !!slots.empty);
|
|
367
392
|
return (_ctx, _cache) => {
|
|
368
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
369
|
-
__props.
|
|
393
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
|
|
394
|
+
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
|
|
370
395
|
default: vue.withCtx(() => [
|
|
371
|
-
vue.
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
vue.createElementVNode("span", _hoisted_3$5, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
|
|
378
|
-
__props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$4, " (" + vue.toDisplayString(__props.selectedItems.size) + " sélectionné" + vue.toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : vue.createCommentVNode("", true)
|
|
379
|
-
])
|
|
396
|
+
vue.createVNode(Button_vue_vue_type_script_setup_true_lang._sfc_main$3, {
|
|
397
|
+
items: __props.loadingItems,
|
|
398
|
+
"show-avatar": "",
|
|
399
|
+
"show-secondary": "",
|
|
400
|
+
"show-action": ""
|
|
401
|
+
}, null, 8, ["items"])
|
|
380
402
|
]),
|
|
381
403
|
_: 1
|
|
382
|
-
})) : vue.
|
|
383
|
-
|
|
384
|
-
return vue.openBlock(), vue.createBlock(_sfc_main$i, {
|
|
385
|
-
key: getKey(item),
|
|
386
|
-
class: vue.normalizeClass(["hover:shadow-lg transition-all duration-200", {
|
|
387
|
-
"ring-2 ring-primary": isSelected(item)
|
|
388
|
-
}])
|
|
389
|
-
}, {
|
|
404
|
+
})) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
405
|
+
__props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
|
|
390
406
|
default: vue.withCtx(() => [
|
|
391
|
-
vue.createElementVNode("div",
|
|
392
|
-
|
|
393
|
-
|
|
394
|
-
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
vue.renderSlot(_ctx.$slots, "avatar", { item }),
|
|
400
|
-
vue.createElementVNode("div", _hoisted_8$2, [
|
|
401
|
-
vue.renderSlot(_ctx.$slots, "content", { item })
|
|
402
|
-
]),
|
|
403
|
-
vue.createElementVNode("div", _hoisted_9$2, [
|
|
404
|
-
vue.renderSlot(_ctx.$slots, "actions", { item })
|
|
405
|
-
])
|
|
407
|
+
vue.createElementVNode("div", _hoisted_2$8, [
|
|
408
|
+
vue.createVNode(index._sfc_main, {
|
|
409
|
+
"model-value": allSelected.value,
|
|
410
|
+
indeterminate: someSelected.value,
|
|
411
|
+
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
|
|
412
|
+
}, null, 8, ["model-value", "indeterminate"]),
|
|
413
|
+
vue.createElementVNode("span", _hoisted_3$5, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
|
|
414
|
+
__props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$4, " (" + vue.toDisplayString(__props.selectedItems.size) + " sélectionné" + vue.toDisplayString(__props.selectedItems.size > 1 ? "s" : "") + ") ", 1)) : vue.createCommentVNode("", true)
|
|
406
415
|
])
|
|
407
416
|
]),
|
|
408
|
-
_:
|
|
409
|
-
}
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
413
|
-
|
|
417
|
+
_: 1
|
|
418
|
+
})) : vue.createCommentVNode("", true),
|
|
419
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
|
|
420
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$i, {
|
|
421
|
+
key: getKey(item),
|
|
422
|
+
class: vue.normalizeClass(["hover:shadow-lg transition-all duration-200", {
|
|
423
|
+
"ring-2 ring-primary": isSelected(item)
|
|
424
|
+
}])
|
|
425
|
+
}, {
|
|
426
|
+
default: vue.withCtx(() => [
|
|
427
|
+
vue.createElementVNode("div", _hoisted_5$2, [
|
|
428
|
+
__props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$2, [
|
|
429
|
+
isSelectable(item) ? (vue.openBlock(), vue.createBlock(index._sfc_main, {
|
|
430
|
+
key: 0,
|
|
431
|
+
"model-value": isSelected(item),
|
|
432
|
+
"onUpdate:modelValue": ($event) => handleSelect(item)
|
|
433
|
+
}, null, 8, ["model-value", "onUpdate:modelValue"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$2))
|
|
434
|
+
])) : vue.createCommentVNode("", true),
|
|
435
|
+
vue.renderSlot(_ctx.$slots, "avatar", { item }),
|
|
436
|
+
vue.createElementVNode("div", _hoisted_8$2, [
|
|
437
|
+
vue.renderSlot(_ctx.$slots, "content", { item })
|
|
438
|
+
]),
|
|
439
|
+
vue.createElementVNode("div", _hoisted_9$2, [
|
|
440
|
+
vue.renderSlot(_ctx.$slots, "actions", { item })
|
|
441
|
+
])
|
|
442
|
+
])
|
|
443
|
+
]),
|
|
444
|
+
_: 2
|
|
445
|
+
}, 1032, ["class"]);
|
|
446
|
+
}), 128)),
|
|
447
|
+
__props.items.length === 0 && hasEmptySlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$1, [
|
|
448
|
+
vue.renderSlot(_ctx.$slots, "empty")
|
|
449
|
+
])) : vue.createCommentVNode("", true)
|
|
450
|
+
], 64))
|
|
414
451
|
]);
|
|
415
452
|
};
|
|
416
453
|
}
|
|
417
454
|
});
|
|
418
|
-
const localProvidedStateMap = /* @__PURE__ */ new WeakMap();
|
|
419
|
-
const injectLocal = /* @__NO_SIDE_EFFECTS__ */ (...args) => {
|
|
420
|
-
var _getCurrentInstance;
|
|
421
|
-
const key = args[0];
|
|
422
|
-
const instance = (_getCurrentInstance = vue.getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;
|
|
423
|
-
const owner = instance !== null && instance !== void 0 ? instance : vue.getCurrentScope();
|
|
424
|
-
if (owner == null && !vue.hasInjectionContext()) throw new Error("injectLocal must be called in setup");
|
|
425
|
-
if (owner && localProvidedStateMap.has(owner) && key in localProvidedStateMap.get(owner)) return localProvidedStateMap.get(owner)[key];
|
|
426
|
-
return vue.inject(...args);
|
|
427
|
-
};
|
|
428
|
-
const isClient = typeof window !== "undefined" && typeof document !== "undefined";
|
|
429
|
-
typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
|
|
430
|
-
const toString = Object.prototype.toString;
|
|
431
|
-
const isObject = (val) => toString.call(val) === "[object Object]";
|
|
432
|
-
function increaseWithUnit(target, delta) {
|
|
433
|
-
var _target$match;
|
|
434
|
-
if (typeof target === "number") return target + delta;
|
|
435
|
-
const value = ((_target$match = target.match(/^-?\d+\.?\d*/)) === null || _target$match === void 0 ? void 0 : _target$match[0]) || "";
|
|
436
|
-
const unit = target.slice(value.length);
|
|
437
|
-
const result = Number.parseFloat(value) + delta;
|
|
438
|
-
if (Number.isNaN(result)) return target;
|
|
439
|
-
return result + unit;
|
|
440
|
-
}
|
|
441
|
-
function pxValue(px) {
|
|
442
|
-
return px.endsWith("rem") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);
|
|
443
|
-
}
|
|
444
|
-
function toArray(value) {
|
|
445
|
-
return Array.isArray(value) ? value : [value];
|
|
446
|
-
}
|
|
447
|
-
function getLifeCycleTarget(target) {
|
|
448
|
-
return vue.getCurrentInstance();
|
|
449
|
-
}
|
|
450
|
-
function tryOnMounted(fn, sync = true, target) {
|
|
451
|
-
if (getLifeCycleTarget()) vue.onMounted(fn, target);
|
|
452
|
-
else if (sync) fn();
|
|
453
|
-
else vue.nextTick(fn);
|
|
454
|
-
}
|
|
455
|
-
function watchImmediate(source, cb, options) {
|
|
456
|
-
return vue.watch(source, cb, {
|
|
457
|
-
...options,
|
|
458
|
-
immediate: true
|
|
459
|
-
});
|
|
460
|
-
}
|
|
461
|
-
const defaultWindow = isClient ? window : void 0;
|
|
462
|
-
function unrefElement(elRef) {
|
|
463
|
-
var _$el;
|
|
464
|
-
const plain = vue.toValue(elRef);
|
|
465
|
-
return (_$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _$el !== void 0 ? _$el : plain;
|
|
466
|
-
}
|
|
467
|
-
function useEventListener(...args) {
|
|
468
|
-
const register = (el, event, listener, options) => {
|
|
469
|
-
el.addEventListener(event, listener, options);
|
|
470
|
-
return () => el.removeEventListener(event, listener, options);
|
|
471
|
-
};
|
|
472
|
-
const firstParamTargets = vue.computed(() => {
|
|
473
|
-
const test = toArray(vue.toValue(args[0])).filter((e) => e != null);
|
|
474
|
-
return test.every((e) => typeof e !== "string") ? test : void 0;
|
|
475
|
-
});
|
|
476
|
-
return watchImmediate(() => {
|
|
477
|
-
var _firstParamTargets$va, _firstParamTargets$va2;
|
|
478
|
-
return [
|
|
479
|
-
(_firstParamTargets$va = (_firstParamTargets$va2 = firstParamTargets.value) === null || _firstParamTargets$va2 === void 0 ? void 0 : _firstParamTargets$va2.map((e) => unrefElement(e))) !== null && _firstParamTargets$va !== void 0 ? _firstParamTargets$va : [defaultWindow].filter((e) => e != null),
|
|
480
|
-
toArray(vue.toValue(firstParamTargets.value ? args[1] : args[0])),
|
|
481
|
-
toArray(vue.unref(firstParamTargets.value ? args[2] : args[1])),
|
|
482
|
-
vue.toValue(firstParamTargets.value ? args[3] : args[2])
|
|
483
|
-
];
|
|
484
|
-
}, ([raw_targets, raw_events, raw_listeners, raw_options], _, onCleanup) => {
|
|
485
|
-
if (!(raw_targets === null || raw_targets === void 0 ? void 0 : raw_targets.length) || !(raw_events === null || raw_events === void 0 ? void 0 : raw_events.length) || !(raw_listeners === null || raw_listeners === void 0 ? void 0 : raw_listeners.length)) return;
|
|
486
|
-
const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;
|
|
487
|
-
const cleanups = raw_targets.flatMap((el) => raw_events.flatMap((event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))));
|
|
488
|
-
onCleanup(() => {
|
|
489
|
-
cleanups.forEach((fn) => fn());
|
|
490
|
-
});
|
|
491
|
-
}, { flush: "post" });
|
|
492
|
-
}
|
|
493
|
-
// @__NO_SIDE_EFFECTS__
|
|
494
|
-
function useMounted() {
|
|
495
|
-
const isMounted = vue.shallowRef(false);
|
|
496
|
-
const instance = vue.getCurrentInstance();
|
|
497
|
-
if (instance) vue.onMounted(() => {
|
|
498
|
-
isMounted.value = true;
|
|
499
|
-
}, instance);
|
|
500
|
-
return isMounted;
|
|
501
|
-
}
|
|
502
|
-
// @__NO_SIDE_EFFECTS__
|
|
503
|
-
function useSupported(callback) {
|
|
504
|
-
const isMounted = /* @__PURE__ */ useMounted();
|
|
505
|
-
return vue.computed(() => {
|
|
506
|
-
isMounted.value;
|
|
507
|
-
return Boolean(callback());
|
|
508
|
-
});
|
|
509
|
-
}
|
|
510
|
-
const ssrWidthSymbol = Symbol("vueuse-ssr-width");
|
|
511
|
-
// @__NO_SIDE_EFFECTS__
|
|
512
|
-
function useSSRWidth() {
|
|
513
|
-
const ssrWidth = vue.hasInjectionContext() ? /* @__PURE__ */ injectLocal(ssrWidthSymbol, null) : null;
|
|
514
|
-
return typeof ssrWidth === "number" ? ssrWidth : void 0;
|
|
515
|
-
}
|
|
516
|
-
function useMediaQuery(query, options = {}) {
|
|
517
|
-
const { window: window$1 = defaultWindow, ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;
|
|
518
|
-
const isSupported = /* @__PURE__ */ useSupported(() => window$1 && "matchMedia" in window$1 && typeof window$1.matchMedia === "function");
|
|
519
|
-
const ssrSupport = vue.shallowRef(typeof ssrWidth === "number");
|
|
520
|
-
const mediaQuery = vue.shallowRef();
|
|
521
|
-
const matches = vue.shallowRef(false);
|
|
522
|
-
const handler = (event) => {
|
|
523
|
-
matches.value = event.matches;
|
|
524
|
-
};
|
|
525
|
-
vue.watchEffect(() => {
|
|
526
|
-
if (ssrSupport.value) {
|
|
527
|
-
ssrSupport.value = !isSupported.value;
|
|
528
|
-
matches.value = vue.toValue(query).split(",").some((queryString) => {
|
|
529
|
-
const not = queryString.includes("not all");
|
|
530
|
-
const minWidth = queryString.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);
|
|
531
|
-
const maxWidth = queryString.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);
|
|
532
|
-
let res = Boolean(minWidth || maxWidth);
|
|
533
|
-
if (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]);
|
|
534
|
-
if (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]);
|
|
535
|
-
return not ? !res : res;
|
|
536
|
-
});
|
|
537
|
-
return;
|
|
538
|
-
}
|
|
539
|
-
if (!isSupported.value) return;
|
|
540
|
-
mediaQuery.value = window$1.matchMedia(vue.toValue(query));
|
|
541
|
-
matches.value = mediaQuery.value.matches;
|
|
542
|
-
});
|
|
543
|
-
useEventListener(mediaQuery, "change", handler, { passive: true });
|
|
544
|
-
return vue.computed(() => matches.value);
|
|
545
|
-
}
|
|
546
|
-
// @__NO_SIDE_EFFECTS__
|
|
547
|
-
function useBreakpoints(breakpoints, options = {}) {
|
|
548
|
-
function getValue$1(k, delta) {
|
|
549
|
-
let v = vue.toValue(breakpoints[vue.toValue(k)]);
|
|
550
|
-
if (delta != null) v = increaseWithUnit(v, delta);
|
|
551
|
-
if (typeof v === "number") v = `${v}px`;
|
|
552
|
-
return v;
|
|
553
|
-
}
|
|
554
|
-
const { window: window$1 = defaultWindow, strategy = "min-width", ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;
|
|
555
|
-
const ssrSupport = typeof ssrWidth === "number";
|
|
556
|
-
const mounted = ssrSupport ? vue.shallowRef(false) : { value: true };
|
|
557
|
-
if (ssrSupport) tryOnMounted(() => mounted.value = !!window$1);
|
|
558
|
-
function match(query, size) {
|
|
559
|
-
if (!mounted.value && ssrSupport) return query === "min" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);
|
|
560
|
-
if (!window$1) return false;
|
|
561
|
-
return window$1.matchMedia(`(${query}-width: ${size})`).matches;
|
|
562
|
-
}
|
|
563
|
-
const greaterOrEqual = (k) => {
|
|
564
|
-
return useMediaQuery(() => `(min-width: ${getValue$1(k)})`, options);
|
|
565
|
-
};
|
|
566
|
-
const smallerOrEqual = (k) => {
|
|
567
|
-
return useMediaQuery(() => `(max-width: ${getValue$1(k)})`, options);
|
|
568
|
-
};
|
|
569
|
-
const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {
|
|
570
|
-
Object.defineProperty(shortcuts, k, {
|
|
571
|
-
get: () => strategy === "min-width" ? greaterOrEqual(k) : smallerOrEqual(k),
|
|
572
|
-
enumerable: true,
|
|
573
|
-
configurable: true
|
|
574
|
-
});
|
|
575
|
-
return shortcuts;
|
|
576
|
-
}, {});
|
|
577
|
-
function current() {
|
|
578
|
-
const points = Object.keys(breakpoints).map((k) => [
|
|
579
|
-
k,
|
|
580
|
-
shortcutMethods[k],
|
|
581
|
-
pxValue(getValue$1(k))
|
|
582
|
-
]).sort((a, b) => a[2] - b[2]);
|
|
583
|
-
return vue.computed(() => points.filter(([, v]) => v.value).map(([k]) => k));
|
|
584
|
-
}
|
|
585
|
-
return Object.assign(shortcutMethods, {
|
|
586
|
-
greaterOrEqual,
|
|
587
|
-
smallerOrEqual,
|
|
588
|
-
greater(k) {
|
|
589
|
-
return useMediaQuery(() => `(min-width: ${getValue$1(k, 0.1)})`, options);
|
|
590
|
-
},
|
|
591
|
-
smaller(k) {
|
|
592
|
-
return useMediaQuery(() => `(max-width: ${getValue$1(k, -0.1)})`, options);
|
|
593
|
-
},
|
|
594
|
-
between(a, b) {
|
|
595
|
-
return useMediaQuery(() => `(min-width: ${getValue$1(a)}) and (max-width: ${getValue$1(b, -0.1)})`, options);
|
|
596
|
-
},
|
|
597
|
-
isGreater(k) {
|
|
598
|
-
return match("min", getValue$1(k, 0.1));
|
|
599
|
-
},
|
|
600
|
-
isGreaterOrEqual(k) {
|
|
601
|
-
return match("min", getValue$1(k));
|
|
602
|
-
},
|
|
603
|
-
isSmaller(k) {
|
|
604
|
-
return match("max", getValue$1(k, -0.1));
|
|
605
|
-
},
|
|
606
|
-
isSmallerOrEqual(k) {
|
|
607
|
-
return match("max", getValue$1(k));
|
|
608
|
-
},
|
|
609
|
-
isInBetween(a, b) {
|
|
610
|
-
return match("min", getValue$1(a)) && match("max", getValue$1(b, -0.1));
|
|
611
|
-
},
|
|
612
|
-
current,
|
|
613
|
-
active() {
|
|
614
|
-
const bps = current();
|
|
615
|
-
return vue.computed(() => bps.value.length === 0 ? "" : bps.value.at(strategy === "min-width" ? -1 : 0));
|
|
616
|
-
}
|
|
617
|
-
});
|
|
618
|
-
}
|
|
619
455
|
const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
620
456
|
__name: "ResponsiveList",
|
|
621
457
|
props: {
|
|
@@ -627,7 +463,9 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
627
463
|
selectableFilter: {},
|
|
628
464
|
breakpoint: { default: "lg" },
|
|
629
465
|
sortBy: {},
|
|
630
|
-
sortDirection: {}
|
|
466
|
+
sortDirection: {},
|
|
467
|
+
loading: { type: Boolean, default: false },
|
|
468
|
+
loadingRows: { default: 5 }
|
|
631
469
|
},
|
|
632
470
|
emits: ["select", "selectAll", "sort"],
|
|
633
471
|
setup(__props, { emit: __emit }) {
|
|
@@ -663,7 +501,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
663
501
|
return !!slots[`cell-${key}`];
|
|
664
502
|
};
|
|
665
503
|
const hasActionsSlot = vue.computed(() => !!slots.actions);
|
|
666
|
-
const breakpoints =
|
|
504
|
+
const breakpoints = index.useBreakpoints({
|
|
667
505
|
sm: 640,
|
|
668
506
|
md: 768,
|
|
669
507
|
lg: 1024,
|
|
@@ -680,6 +518,8 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
680
518
|
selectable: __props.selectable,
|
|
681
519
|
"selected-items": __props.selectedItems,
|
|
682
520
|
"selectable-filter": __props.selectableFilter,
|
|
521
|
+
loading: __props.loading,
|
|
522
|
+
"loading-items": __props.loadingRows,
|
|
683
523
|
onSelect: _cache[0] || (_cache[0] = ($event) => emit("select", $event)),
|
|
684
524
|
onSelectAll: _cache[1] || (_cache[1] = ($event) => emit("selectAll"))
|
|
685
525
|
}, {
|
|
@@ -698,7 +538,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
698
538
|
vue.renderSlot(_ctx.$slots, "empty")
|
|
699
539
|
]),
|
|
700
540
|
_: 3
|
|
701
|
-
}, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter"])) : (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 1 }, {
|
|
541
|
+
}, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter", "loading", "loading-items"])) : (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 1 }, {
|
|
702
542
|
default: vue.withCtx(() => [
|
|
703
543
|
vue.createVNode(_sfc_main$h, {
|
|
704
544
|
items: __props.items,
|
|
@@ -709,6 +549,8 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
709
549
|
"selectable-filter": __props.selectableFilter,
|
|
710
550
|
"sort-by": __props.sortBy,
|
|
711
551
|
"sort-direction": __props.sortDirection,
|
|
552
|
+
loading: __props.loading,
|
|
553
|
+
"loading-rows": __props.loadingRows,
|
|
712
554
|
onSelect: _cache[2] || (_cache[2] = ($event) => emit("select", $event)),
|
|
713
555
|
onSelectAll: _cache[3] || (_cache[3] = ($event) => emit("selectAll")),
|
|
714
556
|
onSort: _cache[4] || (_cache[4] = (col, dir) => emit("sort", col, dir))
|
|
@@ -739,7 +581,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
739
581
|
]),
|
|
740
582
|
key: "0"
|
|
741
583
|
} : void 0
|
|
742
|
-
]), 1032, ["items", "properties", "key-field", "selectable", "selected-items", "selectable-filter", "sort-by", "sort-direction"])
|
|
584
|
+
]), 1032, ["items", "properties", "key-field", "selectable", "selected-items", "selectable-filter", "sort-by", "sort-direction", "loading", "loading-rows"])
|
|
743
585
|
]),
|
|
744
586
|
_: 3
|
|
745
587
|
}))
|
|
@@ -747,11 +589,11 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
747
589
|
};
|
|
748
590
|
}
|
|
749
591
|
});
|
|
750
|
-
const _hoisted_1$
|
|
592
|
+
const _hoisted_1$a = {
|
|
751
593
|
key: 0,
|
|
752
594
|
class: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
|
|
753
595
|
};
|
|
754
|
-
const _hoisted_2$
|
|
596
|
+
const _hoisted_2$7 = { class: "relative" };
|
|
755
597
|
const _hoisted_3$4 = ["disabled", "placeholder"];
|
|
756
598
|
const _hoisted_4$3 = ["disabled"];
|
|
757
599
|
const _hoisted_5$1 = {
|
|
@@ -851,9 +693,9 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
|
|
|
851
693
|
const handleKeydown = (event) => {
|
|
852
694
|
baseHandleKeydown(event, {
|
|
853
695
|
itemCount: filteredOptions.value.length,
|
|
854
|
-
onSelect: (
|
|
855
|
-
if (filteredOptions.value[
|
|
856
|
-
selectOption(filteredOptions.value[
|
|
696
|
+
onSelect: (index2) => {
|
|
697
|
+
if (filteredOptions.value[index2]) {
|
|
698
|
+
selectOption(filteredOptions.value[index2]);
|
|
857
699
|
}
|
|
858
700
|
}
|
|
859
701
|
});
|
|
@@ -867,8 +709,8 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
|
|
|
867
709
|
ref: containerRef,
|
|
868
710
|
class: "autocomplete-container"
|
|
869
711
|
}, [
|
|
870
|
-
__props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$
|
|
871
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
712
|
+
__props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$a, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
|
|
713
|
+
vue.createElementVNode("div", _hoisted_2$7, [
|
|
872
714
|
vue.createElementVNode("div", {
|
|
873
715
|
ref_key: "inputWrapperRef",
|
|
874
716
|
ref: inputWrapperRef,
|
|
@@ -943,14 +785,14 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
|
|
|
943
785
|
])
|
|
944
786
|
}, [
|
|
945
787
|
filteredOptions.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$1, vue.toDisplayString(__props.noResultsText || "No results found"), 1)) : vue.createCommentVNode("", true),
|
|
946
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredOptions.value, (option,
|
|
788
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredOptions.value, (option, index2) => {
|
|
947
789
|
return vue.openBlock(), vue.createElementBlock("button", {
|
|
948
790
|
key: option.value,
|
|
949
791
|
class: vue.normalizeClass([{
|
|
950
|
-
"bg-gray-100 dark:bg-gray-700": vue.unref(highlightedIndex) ===
|
|
792
|
+
"bg-gray-100 dark:bg-gray-700": vue.unref(highlightedIndex) === index2,
|
|
951
793
|
"bg-primary/10": __props.modelValue === option.value
|
|
952
794
|
}, "flex w-full items-center gap-2 px-4 py-2 text-left text-sm transition hover:bg-gray-100 dark:hover:bg-gray-700"]),
|
|
953
|
-
"data-index":
|
|
795
|
+
"data-index": index2,
|
|
954
796
|
type: "button",
|
|
955
797
|
onClick: ($event) => selectOption(option)
|
|
956
798
|
}, [
|
|
@@ -1043,103 +885,10 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
|
|
|
1043
885
|
};
|
|
1044
886
|
}
|
|
1045
887
|
});
|
|
1046
|
-
const
|
|
1047
|
-
|
|
1048
|
-
props: {
|
|
1049
|
-
variant: { default: "primary" },
|
|
1050
|
-
size: { default: "md" },
|
|
1051
|
-
icon: {},
|
|
1052
|
-
iconRight: {},
|
|
1053
|
-
loading: { type: Boolean },
|
|
1054
|
-
disabled: { type: Boolean },
|
|
1055
|
-
block: { type: Boolean },
|
|
1056
|
-
href: {},
|
|
1057
|
-
to: {},
|
|
1058
|
-
type: { default: "button" }
|
|
1059
|
-
},
|
|
1060
|
-
emits: ["click"],
|
|
1061
|
-
setup(__props, { emit: __emit }) {
|
|
1062
|
-
const props = __props;
|
|
1063
|
-
const emit = __emit;
|
|
1064
|
-
const variantClasses = {
|
|
1065
|
-
primary: "bg-primary text-primary-foreground hover:bg-primary/90 focus:ring-primary",
|
|
1066
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/90 focus:ring-secondary",
|
|
1067
|
-
outline: "border border-gray-300 bg-transparent text-gray-700 hover:bg-gray-50 focus:ring-primary dark:border-gray-600 dark:text-gray-300 dark:hover:bg-gray-800",
|
|
1068
|
-
ghost: "bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-primary dark:text-gray-300 dark:hover:bg-gray-800",
|
|
1069
|
-
danger: "bg-red-500 text-white hover:bg-red-600 focus:ring-red-500",
|
|
1070
|
-
success: "bg-green-500 text-white hover:bg-green-600 focus:ring-green-500"
|
|
1071
|
-
};
|
|
1072
|
-
const sizeClasses = {
|
|
1073
|
-
xs: "px-2 py-1 text-xs gap-1",
|
|
1074
|
-
sm: "px-3 py-1.5 text-sm gap-1.5",
|
|
1075
|
-
md: "px-4 py-2 text-sm gap-2",
|
|
1076
|
-
lg: "px-5 py-2.5 text-base gap-2",
|
|
1077
|
-
xl: "px-6 py-3 text-lg gap-2.5"
|
|
1078
|
-
};
|
|
1079
|
-
const iconSizeClasses = {
|
|
1080
|
-
xs: "size-3",
|
|
1081
|
-
sm: "size-4",
|
|
1082
|
-
md: "size-4",
|
|
1083
|
-
lg: "size-5",
|
|
1084
|
-
xl: "size-6"
|
|
1085
|
-
};
|
|
1086
|
-
const classes = vue.computed(() => [
|
|
1087
|
-
"inline-flex items-center justify-center font-medium rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-offset-2 disabled:opacity-50 disabled:cursor-not-allowed",
|
|
1088
|
-
variantClasses[props.variant],
|
|
1089
|
-
sizeClasses[props.size],
|
|
1090
|
-
props.block && "w-full"
|
|
1091
|
-
]);
|
|
1092
|
-
const component = vue.computed(() => {
|
|
1093
|
-
if (props.to) {
|
|
1094
|
-
try {
|
|
1095
|
-
const RouterLink = vue.resolveComponent("RouterLink");
|
|
1096
|
-
if (typeof RouterLink !== "string") return RouterLink;
|
|
1097
|
-
} catch {
|
|
1098
|
-
}
|
|
1099
|
-
}
|
|
1100
|
-
if (props.href) return "a";
|
|
1101
|
-
return "button";
|
|
1102
|
-
});
|
|
1103
|
-
const componentProps = vue.computed(() => {
|
|
1104
|
-
if (props.to) return { to: props.to };
|
|
1105
|
-
if (props.href) return { href: props.href };
|
|
1106
|
-
return { type: props.type, disabled: props.disabled || props.loading };
|
|
1107
|
-
});
|
|
1108
|
-
const handleClick = (event) => {
|
|
1109
|
-
if (props.disabled || props.loading) return;
|
|
1110
|
-
emit("click", event);
|
|
1111
|
-
};
|
|
1112
|
-
return (_ctx, _cache) => {
|
|
1113
|
-
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(component.value), vue.mergeProps(componentProps.value, {
|
|
1114
|
-
class: classes.value,
|
|
1115
|
-
onClick: handleClick
|
|
1116
|
-
}), {
|
|
1117
|
-
default: vue.withCtx(() => [
|
|
1118
|
-
__props.loading ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1119
|
-
key: 0,
|
|
1120
|
-
icon: "lucide:loader-2",
|
|
1121
|
-
class: vue.normalizeClass([iconSizeClasses[__props.size], "animate-spin"])
|
|
1122
|
-
}, null, 8, ["class"])) : __props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1123
|
-
key: 1,
|
|
1124
|
-
icon: __props.icon,
|
|
1125
|
-
class: vue.normalizeClass(iconSizeClasses[__props.size])
|
|
1126
|
-
}, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true),
|
|
1127
|
-
vue.renderSlot(_ctx.$slots, "default"),
|
|
1128
|
-
__props.iconRight && !__props.loading ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1129
|
-
key: 2,
|
|
1130
|
-
icon: __props.iconRight,
|
|
1131
|
-
class: vue.normalizeClass(iconSizeClasses[__props.size])
|
|
1132
|
-
}, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
|
|
1133
|
-
]),
|
|
1134
|
-
_: 3
|
|
1135
|
-
}, 16, ["class"]);
|
|
1136
|
-
};
|
|
1137
|
-
}
|
|
1138
|
-
});
|
|
1139
|
-
const _hoisted_1$8 = { class: "relative inline-block" };
|
|
1140
|
-
const _hoisted_2$5 = ["src", "alt"];
|
|
888
|
+
const _hoisted_1$9 = { class: "relative inline-block" };
|
|
889
|
+
const _hoisted_2$6 = ["src", "alt"];
|
|
1141
890
|
const _hoisted_3$3 = { key: 1 };
|
|
1142
|
-
const _sfc_main$
|
|
891
|
+
const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
1143
892
|
__name: "Avatar",
|
|
1144
893
|
props: {
|
|
1145
894
|
src: {},
|
|
@@ -1185,7 +934,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
1185
934
|
});
|
|
1186
935
|
const showImage = vue.computed(() => props.src && !imageError.value);
|
|
1187
936
|
return (_ctx, _cache) => {
|
|
1188
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
937
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
|
|
1189
938
|
vue.createElementVNode("div", {
|
|
1190
939
|
class: vue.normalizeClass([
|
|
1191
940
|
"flex items-center justify-center overflow-hidden bg-gray-200 font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-300",
|
|
@@ -1199,7 +948,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
1199
948
|
alt: __props.alt || __props.name,
|
|
1200
949
|
class: "size-full object-cover",
|
|
1201
950
|
onError: _cache[0] || (_cache[0] = ($event) => imageError.value = true)
|
|
1202
|
-
}, null, 40, _hoisted_2$
|
|
951
|
+
}, null, 40, _hoisted_2$6)) : initials.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$3, vue.toDisplayString(initials.value), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1203
952
|
key: 2,
|
|
1204
953
|
icon: "lucide:user",
|
|
1205
954
|
class: "size-1/2"
|
|
@@ -1217,9 +966,9 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
1217
966
|
};
|
|
1218
967
|
}
|
|
1219
968
|
});
|
|
1220
|
-
const _hoisted_1$
|
|
1221
|
-
const _hoisted_2$
|
|
1222
|
-
const _sfc_main$
|
|
969
|
+
const _hoisted_1$8 = ["aria-selected", "disabled", "onClick"];
|
|
970
|
+
const _hoisted_2$5 = { class: "mt-4" };
|
|
971
|
+
const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
1223
972
|
__name: "Tabs",
|
|
1224
973
|
props: {
|
|
1225
974
|
tabs: {},
|
|
@@ -1284,18 +1033,18 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
1284
1033
|
activeTab.value === tab.key ? variantClasses[__props.variant].active : variantClasses[__props.variant].inactive
|
|
1285
1034
|
]),
|
|
1286
1035
|
onClick: ($event) => selectTab(tab)
|
|
1287
|
-
}, vue.toDisplayString(tab.label), 11, _hoisted_1$
|
|
1036
|
+
}, vue.toDisplayString(tab.label), 11, _hoisted_1$8);
|
|
1288
1037
|
}), 128))
|
|
1289
1038
|
], 2),
|
|
1290
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
1039
|
+
vue.createElementVNode("div", _hoisted_2$5, [
|
|
1291
1040
|
vue.renderSlot(_ctx.$slots, "default", { activeTab: activeTab.value })
|
|
1292
1041
|
])
|
|
1293
1042
|
]);
|
|
1294
1043
|
};
|
|
1295
1044
|
}
|
|
1296
1045
|
});
|
|
1297
|
-
const _hoisted_1$
|
|
1298
|
-
const _sfc_main$
|
|
1046
|
+
const _hoisted_1$7 = { role: "tabpanel" };
|
|
1047
|
+
const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
1299
1048
|
__name: "TabPanel",
|
|
1300
1049
|
props: {
|
|
1301
1050
|
value: {}
|
|
@@ -1305,7 +1054,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1305
1054
|
const activeTab = vue.inject("activeTab");
|
|
1306
1055
|
const isActive = vue.computed(() => (activeTab == null ? void 0 : activeTab.value) === props.value);
|
|
1307
1056
|
return (_ctx, _cache) => {
|
|
1308
|
-
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1057
|
+
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
|
|
1309
1058
|
vue.renderSlot(_ctx.$slots, "default")
|
|
1310
1059
|
], 512)), [
|
|
1311
1060
|
[vue.vShow, isActive.value]
|
|
@@ -1313,11 +1062,11 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1313
1062
|
};
|
|
1314
1063
|
}
|
|
1315
1064
|
});
|
|
1316
|
-
const _hoisted_1$
|
|
1065
|
+
const _hoisted_1$6 = {
|
|
1317
1066
|
key: 2,
|
|
1318
1067
|
class: "text-sm font-semibold"
|
|
1319
1068
|
};
|
|
1320
|
-
const _sfc_main$
|
|
1069
|
+
const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
1321
1070
|
__name: "Stepper",
|
|
1322
1071
|
props: {
|
|
1323
1072
|
steps: {},
|
|
@@ -1329,12 +1078,12 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1329
1078
|
const props = __props;
|
|
1330
1079
|
const getCurrentStepIndex = () => {
|
|
1331
1080
|
if (props.modelValue === void 0) return 0;
|
|
1332
|
-
const
|
|
1333
|
-
return
|
|
1081
|
+
const index2 = props.steps.findIndex((s) => s.key === props.modelValue);
|
|
1082
|
+
return index2 >= 0 ? index2 : 0;
|
|
1334
1083
|
};
|
|
1335
|
-
const isStepComplete = (
|
|
1336
|
-
const isStepActive = (
|
|
1337
|
-
const isStepPending = (
|
|
1084
|
+
const isStepComplete = (index2) => index2 < getCurrentStepIndex();
|
|
1085
|
+
const isStepActive = (index2) => index2 === getCurrentStepIndex();
|
|
1086
|
+
const isStepPending = (index2) => index2 > getCurrentStepIndex();
|
|
1338
1087
|
return (_ctx, _cache) => {
|
|
1339
1088
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
1340
1089
|
class: vue.normalizeClass([
|
|
@@ -1360,7 +1109,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1360
1109
|
"aria-hidden": "true"
|
|
1361
1110
|
}, null, 4)
|
|
1362
1111
|
], 64)) : vue.createCommentVNode("", true),
|
|
1363
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.steps, (step,
|
|
1112
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.steps, (step, index2) => {
|
|
1364
1113
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
1365
1114
|
key: step.key,
|
|
1366
1115
|
class: vue.normalizeClass([
|
|
@@ -1368,17 +1117,17 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1368
1117
|
__props.orientation === "horizontal" ? "flex flex-1 flex-col items-center" : "flex items-start gap-4"
|
|
1369
1118
|
])
|
|
1370
1119
|
}, [
|
|
1371
|
-
__props.orientation === "vertical" &&
|
|
1120
|
+
__props.orientation === "vertical" && index2 < __props.steps.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
1372
1121
|
key: 0,
|
|
1373
|
-
class: vue.normalizeClass(["absolute left-6 top-12 h-full w-0.5 -translate-x-1/2", isStepComplete(
|
|
1122
|
+
class: vue.normalizeClass(["absolute left-6 top-12 h-full w-0.5 -translate-x-1/2", isStepComplete(index2) ? "bg-primary" : "bg-gray-200 dark:bg-gray-700"])
|
|
1374
1123
|
}, null, 2)) : vue.createCommentVNode("", true),
|
|
1375
1124
|
vue.createElementVNode("div", {
|
|
1376
1125
|
class: vue.normalizeClass(["relative z-10 flex size-12 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-300", {
|
|
1377
|
-
"border-primary bg-primary text-white shadow-lg": isStepActive(
|
|
1378
|
-
"border-gray-300 bg-white text-gray-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-500": isStepPending(
|
|
1126
|
+
"border-primary bg-primary text-white shadow-lg": isStepActive(index2) || isStepComplete(index2),
|
|
1127
|
+
"border-gray-300 bg-white text-gray-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-500": isStepPending(index2)
|
|
1379
1128
|
}])
|
|
1380
1129
|
}, [
|
|
1381
|
-
isStepComplete(
|
|
1130
|
+
isStepComplete(index2) ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1382
1131
|
key: 0,
|
|
1383
1132
|
icon: "lucide:check",
|
|
1384
1133
|
class: "size-6"
|
|
@@ -1386,7 +1135,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1386
1135
|
key: 1,
|
|
1387
1136
|
icon: step.icon,
|
|
1388
1137
|
class: "size-6"
|
|
1389
|
-
}, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$
|
|
1138
|
+
}, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$6, vue.toDisplayString(index2 + 1), 1))
|
|
1390
1139
|
], 2),
|
|
1391
1140
|
vue.createElementVNode("div", {
|
|
1392
1141
|
class: vue.normalizeClass([
|
|
@@ -1395,15 +1144,15 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1395
1144
|
}, [
|
|
1396
1145
|
vue.createElementVNode("p", {
|
|
1397
1146
|
class: vue.normalizeClass(["text-sm font-semibold transition-colors", {
|
|
1398
|
-
"text-primary dark:text-primary": isStepActive(
|
|
1399
|
-
"text-gray-500 dark:text-gray-400": isStepPending(
|
|
1147
|
+
"text-primary dark:text-primary": isStepActive(index2) || isStepComplete(index2),
|
|
1148
|
+
"text-gray-500 dark:text-gray-400": isStepPending(index2)
|
|
1400
1149
|
}])
|
|
1401
1150
|
}, vue.toDisplayString(step.title), 3),
|
|
1402
1151
|
step.description ? (vue.openBlock(), vue.createElementBlock("p", {
|
|
1403
1152
|
key: 0,
|
|
1404
1153
|
class: vue.normalizeClass(["mt-1 text-xs", {
|
|
1405
|
-
"text-gray-600 dark:text-gray-300": isStepActive(
|
|
1406
|
-
"text-gray-500 dark:text-gray-400": !isStepActive(
|
|
1154
|
+
"text-gray-600 dark:text-gray-300": isStepActive(index2),
|
|
1155
|
+
"text-gray-500 dark:text-gray-400": !isStepActive(index2)
|
|
1407
1156
|
}])
|
|
1408
1157
|
}, vue.toDisplayString(step.description), 3)) : vue.createCommentVNode("", true)
|
|
1409
1158
|
], 2)
|
|
@@ -1414,7 +1163,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1414
1163
|
};
|
|
1415
1164
|
}
|
|
1416
1165
|
});
|
|
1417
|
-
const _sfc_main$
|
|
1166
|
+
const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
1418
1167
|
__name: "CollapsibleCard",
|
|
1419
1168
|
props: {
|
|
1420
1169
|
title: {},
|
|
@@ -1510,7 +1259,7 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1510
1259
|
};
|
|
1511
1260
|
}
|
|
1512
1261
|
});
|
|
1513
|
-
const _sfc_main$
|
|
1262
|
+
const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
1514
1263
|
__name: "Tooltip",
|
|
1515
1264
|
props: {
|
|
1516
1265
|
content: {},
|
|
@@ -1585,7 +1334,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1585
1334
|
};
|
|
1586
1335
|
}
|
|
1587
1336
|
});
|
|
1588
|
-
const _sfc_main$
|
|
1337
|
+
const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
1589
1338
|
__name: "Popover",
|
|
1590
1339
|
props: {
|
|
1591
1340
|
position: { default: "bottom" },
|
|
@@ -1668,17 +1417,17 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1668
1417
|
};
|
|
1669
1418
|
}
|
|
1670
1419
|
});
|
|
1671
|
-
const _hoisted_1$
|
|
1420
|
+
const _hoisted_1$5 = {
|
|
1672
1421
|
key: 0,
|
|
1673
1422
|
class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700"
|
|
1674
1423
|
};
|
|
1675
|
-
const _hoisted_2$
|
|
1424
|
+
const _hoisted_2$4 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
|
|
1676
1425
|
const _hoisted_3$2 = { class: "flex-1 overflow-y-auto p-4" };
|
|
1677
1426
|
const _hoisted_4$2 = {
|
|
1678
1427
|
key: 1,
|
|
1679
1428
|
class: "px-4 py-3 border-t border-gray-200 dark:border-gray-700"
|
|
1680
1429
|
};
|
|
1681
|
-
const _sfc_main$
|
|
1430
|
+
const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
1682
1431
|
__name: "Drawer",
|
|
1683
1432
|
props: {
|
|
1684
1433
|
modelValue: { type: Boolean },
|
|
@@ -1797,9 +1546,9 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1797
1546
|
role: "dialog",
|
|
1798
1547
|
"aria-modal": "true"
|
|
1799
1548
|
}, [
|
|
1800
|
-
__props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1549
|
+
__props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
|
|
1801
1550
|
vue.renderSlot(_ctx.$slots, "header", {}, () => [
|
|
1802
|
-
vue.createElementVNode("h2", _hoisted_2$
|
|
1551
|
+
vue.createElementVNode("h2", _hoisted_2$4, vue.toDisplayString(__props.title), 1)
|
|
1803
1552
|
]),
|
|
1804
1553
|
__props.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
|
|
1805
1554
|
key: 0,
|
|
@@ -1827,9 +1576,9 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1827
1576
|
};
|
|
1828
1577
|
}
|
|
1829
1578
|
});
|
|
1830
|
-
const _hoisted_1$
|
|
1831
|
-
const _hoisted_2$
|
|
1832
|
-
const _sfc_main$
|
|
1579
|
+
const _hoisted_1$4 = { "aria-label": "Breadcrumb" };
|
|
1580
|
+
const _hoisted_2$3 = { class: "flex items-center flex-wrap gap-1 text-sm" };
|
|
1581
|
+
const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
1833
1582
|
__name: "Breadcrumb",
|
|
1834
1583
|
props: {
|
|
1835
1584
|
items: {},
|
|
@@ -1840,14 +1589,14 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1840
1589
|
emits: ["click"],
|
|
1841
1590
|
setup(__props) {
|
|
1842
1591
|
return (_ctx, _cache) => {
|
|
1843
|
-
return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$
|
|
1844
|
-
vue.createElementVNode("ol", _hoisted_2$
|
|
1845
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item,
|
|
1592
|
+
return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$4, [
|
|
1593
|
+
vue.createElementVNode("ol", _hoisted_2$3, [
|
|
1594
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
|
|
1846
1595
|
return vue.openBlock(), vue.createElementBlock("li", {
|
|
1847
|
-
key:
|
|
1596
|
+
key: index2,
|
|
1848
1597
|
class: "flex items-center"
|
|
1849
1598
|
}, [
|
|
1850
|
-
|
|
1599
|
+
index2 > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1851
1600
|
key: 0,
|
|
1852
1601
|
icon: __props.separator,
|
|
1853
1602
|
class: "w-4 h-4 mx-2 text-gray-400 dark:text-gray-500 flex-shrink-0"
|
|
@@ -1857,13 +1606,13 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1857
1606
|
href: item.href,
|
|
1858
1607
|
class: vue.normalizeClass([
|
|
1859
1608
|
"flex items-center gap-1.5 transition-colors",
|
|
1860
|
-
|
|
1609
|
+
index2 === __props.items.length - 1 ? "text-gray-900 dark:text-white font-medium cursor-default" : "text-gray-500 dark:text-gray-400 hover:text-primary-600 dark:hover:text-primary-400"
|
|
1861
1610
|
]),
|
|
1862
|
-
"aria-current":
|
|
1863
|
-
onClick: ($event) => _ctx.$emit("click", item,
|
|
1611
|
+
"aria-current": index2 === __props.items.length - 1 ? "page" : void 0,
|
|
1612
|
+
onClick: ($event) => _ctx.$emit("click", item, index2)
|
|
1864
1613
|
}, {
|
|
1865
1614
|
default: vue.withCtx(() => [
|
|
1866
|
-
|
|
1615
|
+
index2 === 0 && __props.showHomeIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1867
1616
|
key: 0,
|
|
1868
1617
|
icon: item.icon || __props.homeIcon,
|
|
1869
1618
|
class: "w-4 h-4"
|
|
@@ -1883,8 +1632,8 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1883
1632
|
};
|
|
1884
1633
|
}
|
|
1885
1634
|
});
|
|
1886
|
-
const _hoisted_1$
|
|
1887
|
-
const _sfc_main$
|
|
1635
|
+
const _hoisted_1$3 = { class: "divide-y divide-gray-200 dark:divide-gray-700 border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden" };
|
|
1636
|
+
const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
1888
1637
|
__name: "Accordion",
|
|
1889
1638
|
props: {
|
|
1890
1639
|
mode: { default: "single" },
|
|
@@ -1910,17 +1659,17 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1910
1659
|
isOpen
|
|
1911
1660
|
});
|
|
1912
1661
|
return (_ctx, _cache) => {
|
|
1913
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1662
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
|
|
1914
1663
|
vue.renderSlot(_ctx.$slots, "default")
|
|
1915
1664
|
]);
|
|
1916
1665
|
};
|
|
1917
1666
|
}
|
|
1918
1667
|
});
|
|
1919
|
-
const _hoisted_1$
|
|
1920
|
-
const _hoisted_2$
|
|
1668
|
+
const _hoisted_1$2 = ["disabled", "aria-expanded"];
|
|
1669
|
+
const _hoisted_2$2 = { class: "flex items-center gap-2 font-medium" };
|
|
1921
1670
|
const _hoisted_3$1 = { class: "overflow-hidden" };
|
|
1922
1671
|
const _hoisted_4$1 = { class: "px-4 py-3 bg-gray-50 dark:bg-gray-900 text-gray-700 dark:text-gray-300" };
|
|
1923
|
-
const _sfc_main$
|
|
1672
|
+
const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
1924
1673
|
__name: "AccordionItem",
|
|
1925
1674
|
props: {
|
|
1926
1675
|
itemKey: {},
|
|
@@ -1948,7 +1697,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1948
1697
|
"aria-expanded": isOpen.value,
|
|
1949
1698
|
onClick: toggle
|
|
1950
1699
|
}, [
|
|
1951
|
-
vue.createElementVNode("span", _hoisted_2$
|
|
1700
|
+
vue.createElementVNode("span", _hoisted_2$2, [
|
|
1952
1701
|
__props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1953
1702
|
key: 0,
|
|
1954
1703
|
icon: __props.icon,
|
|
@@ -1960,7 +1709,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1960
1709
|
icon: "heroicons:chevron-down",
|
|
1961
1710
|
class: vue.normalizeClass(["w-5 h-5 transition-transform duration-200", { "rotate-180": isOpen.value }])
|
|
1962
1711
|
}, null, 8, ["class"])
|
|
1963
|
-
], 10, _hoisted_1$
|
|
1712
|
+
], 10, _hoisted_1$2),
|
|
1964
1713
|
vue.createVNode(vue.Transition, {
|
|
1965
1714
|
"enter-active-class": "transition-all duration-200 ease-out",
|
|
1966
1715
|
"enter-from-class": "opacity-0 max-h-0",
|
|
@@ -1984,11 +1733,11 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1984
1733
|
};
|
|
1985
1734
|
}
|
|
1986
1735
|
});
|
|
1987
|
-
const _hoisted_1 = {
|
|
1736
|
+
const _hoisted_1$1 = {
|
|
1988
1737
|
key: 0,
|
|
1989
1738
|
class: "relative"
|
|
1990
1739
|
};
|
|
1991
|
-
const _hoisted_2 = { class: "flex items-start gap-4" };
|
|
1740
|
+
const _hoisted_2$1 = { class: "flex items-start gap-4" };
|
|
1992
1741
|
const _hoisted_3 = { class: "flex-1 min-w-0 pt-0.5" };
|
|
1993
1742
|
const _hoisted_4 = { class: "flex items-center justify-between gap-2" };
|
|
1994
1743
|
const _hoisted_5 = { class: "text-sm font-medium text-gray-900 dark:text-white" };
|
|
@@ -2011,7 +1760,7 @@ const _hoisted_12 = {
|
|
|
2011
1760
|
key: 0,
|
|
2012
1761
|
class: "text-xs text-gray-500 dark:text-gray-400"
|
|
2013
1762
|
};
|
|
2014
|
-
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
1763
|
+
const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
2015
1764
|
__name: "Timeline",
|
|
2016
1765
|
props: {
|
|
2017
1766
|
items: {},
|
|
@@ -2057,17 +1806,17 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
2057
1806
|
}
|
|
2058
1807
|
};
|
|
2059
1808
|
return (_ctx, _cache) => {
|
|
2060
|
-
return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
2061
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item,
|
|
1809
|
+
return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
|
|
1810
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
|
|
2062
1811
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
2063
1812
|
key: item.key,
|
|
2064
1813
|
class: "relative pb-8 last:pb-0"
|
|
2065
1814
|
}, [
|
|
2066
|
-
|
|
1815
|
+
index2 < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
2067
1816
|
key: 0,
|
|
2068
1817
|
class: vue.normalizeClass(["absolute left-4 top-8 w-0.5 h-full -ml-px", getStatusClasses(item.status).line])
|
|
2069
1818
|
}, null, 2)) : vue.createCommentVNode("", true),
|
|
2070
|
-
vue.createElementVNode("div", _hoisted_2, [
|
|
1819
|
+
vue.createElementVNode("div", _hoisted_2$1, [
|
|
2071
1820
|
vue.createElementVNode("div", {
|
|
2072
1821
|
class: vue.normalizeClass(["relative z-10 flex items-center justify-center w-8 h-8 rounded-full flex-shrink-0", getStatusClasses(item.status).dot])
|
|
2073
1822
|
}, [
|
|
@@ -2089,10 +1838,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
2089
1838
|
]);
|
|
2090
1839
|
}), 128))
|
|
2091
1840
|
])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
|
|
2092
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item,
|
|
1841
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
|
|
2093
1842
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
2094
1843
|
key: item.key,
|
|
2095
|
-
class: vue.normalizeClass(["flex flex-col items-center flex-shrink-0", { "flex-1":
|
|
1844
|
+
class: vue.normalizeClass(["flex flex-col items-center flex-shrink-0", { "flex-1": index2 < __props.items.length - 1 }])
|
|
2096
1845
|
}, [
|
|
2097
1846
|
vue.createElementVNode("div", _hoisted_9, [
|
|
2098
1847
|
vue.createElementVNode("div", {
|
|
@@ -2104,7 +1853,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
2104
1853
|
class: vue.normalizeClass(["w-4 h-4", getStatusClasses(item.status).icon])
|
|
2105
1854
|
}, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
|
|
2106
1855
|
], 2),
|
|
2107
|
-
|
|
1856
|
+
index2 < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
2108
1857
|
key: 0,
|
|
2109
1858
|
class: vue.normalizeClass(["flex-1 h-0.5 mx-2", getStatusClasses(item.status).line])
|
|
2110
1859
|
}, null, 2)) : vue.createCommentVNode("", true)
|
|
@@ -2119,6 +1868,51 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
2119
1868
|
};
|
|
2120
1869
|
}
|
|
2121
1870
|
});
|
|
1871
|
+
const _hoisted_1 = ["aria-label"];
|
|
1872
|
+
const _hoisted_2 = {
|
|
1873
|
+
key: 0,
|
|
1874
|
+
class: "text-sm font-medium"
|
|
1875
|
+
};
|
|
1876
|
+
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
1877
|
+
__name: "DarkModeToggle",
|
|
1878
|
+
props: {
|
|
1879
|
+
size: { default: "md" },
|
|
1880
|
+
lightIcon: { default: "lucide:sun" },
|
|
1881
|
+
darkIcon: { default: "lucide:moon" },
|
|
1882
|
+
showLabel: { type: Boolean, default: false },
|
|
1883
|
+
storageKey: { default: "dark-mode" }
|
|
1884
|
+
},
|
|
1885
|
+
setup(__props) {
|
|
1886
|
+
const props = __props;
|
|
1887
|
+
const { isDark, toggle } = useDarkMode.useDarkMode({ storageKey: props.storageKey });
|
|
1888
|
+
const sizeClasses = {
|
|
1889
|
+
sm: { button: "p-1.5", icon: "h-4 w-4" },
|
|
1890
|
+
md: { button: "p-2", icon: "h-5 w-5" },
|
|
1891
|
+
lg: { button: "p-2.5", icon: "h-6 w-6" }
|
|
1892
|
+
};
|
|
1893
|
+
return (_ctx, _cache) => {
|
|
1894
|
+
return vue.openBlock(), vue.createElementBlock("button", {
|
|
1895
|
+
type: "button",
|
|
1896
|
+
class: vue.normalizeClass([
|
|
1897
|
+
sizeClasses[__props.size].button,
|
|
1898
|
+
"inline-flex items-center gap-2 rounded-lg transition-colors",
|
|
1899
|
+
"text-gray-600 hover:bg-gray-100 hover:text-gray-900",
|
|
1900
|
+
"dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-100",
|
|
1901
|
+
"focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"
|
|
1902
|
+
]),
|
|
1903
|
+
"aria-label": vue.unref(isDark) ? "Switch to light mode" : "Switch to dark mode",
|
|
1904
|
+
onClick: _cache[0] || (_cache[0] = //@ts-ignore
|
|
1905
|
+
(...args) => vue.unref(toggle) && vue.unref(toggle)(...args))
|
|
1906
|
+
}, [
|
|
1907
|
+
vue.createVNode(vue.unref(vue$1.Icon), {
|
|
1908
|
+
icon: vue.unref(isDark) ? __props.darkIcon : __props.lightIcon,
|
|
1909
|
+
class: vue.normalizeClass(sizeClasses[__props.size].icon)
|
|
1910
|
+
}, null, 8, ["icon", "class"]),
|
|
1911
|
+
__props.showLabel ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, vue.toDisplayString(vue.unref(isDark) ? "Dark" : "Light"), 1)) : vue.createCommentVNode("", true)
|
|
1912
|
+
], 10, _hoisted_1);
|
|
1913
|
+
};
|
|
1914
|
+
}
|
|
1915
|
+
});
|
|
2122
1916
|
exports._sfc_main = _sfc_main$i;
|
|
2123
1917
|
exports._sfc_main$1 = _sfc_main$h;
|
|
2124
1918
|
exports._sfc_main$10 = _sfc_main$8;
|
|
@@ -2138,4 +1932,4 @@ exports._sfc_main$6 = _sfc_main$c;
|
|
|
2138
1932
|
exports._sfc_main$7 = _sfc_main$b;
|
|
2139
1933
|
exports._sfc_main$8 = _sfc_main$a;
|
|
2140
1934
|
exports._sfc_main$9 = _sfc_main$9;
|
|
2141
|
-
//# sourceMappingURL=
|
|
1935
|
+
//# sourceMappingURL=DarkModeToggle.vue_vue_type_script_setup_true_lang-BoB48313.cjs.map
|