cisse-vue-ui 0.3.2 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +666 -666
- package/dist/BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs.map +1 -1
- package/dist/BadgeType.vue_vue_type_script_setup_true_lang-CnB5eNEM.js.map +1 -1
- package/dist/Checkbox.vue_vue_type_script_setup_true_lang-B-nLCCNY.js.map +1 -1
- package/dist/Checkbox.vue_vue_type_script_setup_true_lang-DIoHDji4.cjs.map +1 -1
- package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js → Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js} +2 -2
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js.map +1 -0
- package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs → Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs} +2 -2
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs.map +1 -0
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs → PageLayout.vue_vue_type_script_setup_true_lang-1rNUMab6.cjs} +2 -2
- package/dist/PageLayout.vue_vue_type_script_setup_true_lang-1rNUMab6.cjs.map +1 -0
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js → PageLayout.vue_vue_type_script_setup_true_lang-DLfqj6EP.js} +2 -2
- package/dist/PageLayout.vue_vue_type_script_setup_true_lang-DLfqj6EP.js.map +1 -0
- package/dist/{DatePicker.vue_vue_type_script_setup_true_lang-CxddOiV4.cjs → RangeSlider.vue_vue_type_script_setup_true_lang-BRNkkx89.cjs} +715 -100
- package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-BRNkkx89.cjs.map +1 -0
- package/dist/{DatePicker.vue_vue_type_script_setup_true_lang-DKDcnO28.js → RangeSlider.vue_vue_type_script_setup_true_lang-DD9UxnCU.js} +716 -101
- package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-DD9UxnCU.js.map +1 -0
- package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-DRC4EADS.js → Skeleton.vue_vue_type_script_setup_true_lang-BcWF7mwz.js} +2 -2
- package/dist/Skeleton.vue_vue_type_script_setup_true_lang-BcWF7mwz.js.map +1 -0
- package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-D2S5g9s5.cjs → Skeleton.vue_vue_type_script_setup_true_lang-D-2qAhyG.cjs} +2 -2
- package/dist/Skeleton.vue_vue_type_script_setup_true_lang-D-2qAhyG.cjs.map +1 -0
- package/dist/{Popover.vue_vue_type_script_setup_true_lang-Q7gRZsT9.js → Timeline.vue_vue_type_script_setup_true_lang-BWIfzQOG.js} +591 -135
- package/dist/Timeline.vue_vue_type_script_setup_true_lang-BWIfzQOG.js.map +1 -0
- package/dist/{Popover.vue_vue_type_script_setup_true_lang-dvlDTcf1.cjs → Timeline.vue_vue_type_script_setup_true_lang-C2Mq4XOO.cjs} +578 -122
- package/dist/Timeline.vue_vue_type_script_setup_true_lang-C2Mq4XOO.cjs.map +1 -0
- package/dist/cisse-vue-ui.css +51 -51
- package/dist/components/core/Accordion.stories.d.ts +11 -0
- package/dist/components/core/Accordion.test.d.ts +1 -0
- package/dist/components/core/Accordion.vue.d.ts +27 -0
- package/dist/components/core/AccordionItem.vue.d.ts +27 -0
- package/dist/components/core/AutocompleteComponent.test.d.ts +1 -0
- package/dist/components/core/Breadcrumb.stories.d.ts +11 -0
- package/dist/components/core/Breadcrumb.test.d.ts +1 -0
- package/dist/components/core/Breadcrumb.vue.d.ts +26 -0
- package/dist/components/core/CardComponent.test.d.ts +1 -0
- package/dist/components/core/CollapsibleCard.test.d.ts +1 -0
- package/dist/components/core/Drawer.stories.d.ts +12 -0
- package/dist/components/core/Drawer.test.d.ts +1 -0
- package/dist/components/core/Drawer.vue.d.ts +50 -0
- package/dist/components/core/Dropdown.test.d.ts +1 -0
- package/dist/components/core/MenuItem.test.d.ts +1 -0
- package/dist/components/core/MobileList.test.d.ts +1 -0
- package/dist/components/core/Popover.test.d.ts +1 -0
- package/dist/components/core/ResponsiveList.test.d.ts +1 -0
- package/dist/components/core/StatusBadge.test.d.ts +1 -0
- package/dist/components/core/Stepper.test.d.ts +1 -0
- package/dist/components/core/TabPanel.test.d.ts +1 -0
- package/dist/components/core/TableAction.test.d.ts +1 -0
- package/dist/components/core/TableComponent.test.d.ts +1 -0
- package/dist/components/core/Tabs.test.d.ts +1 -0
- package/dist/components/core/Timeline.stories.d.ts +11 -0
- package/dist/components/core/Timeline.test.d.ts +1 -0
- package/dist/components/core/Timeline.vue.d.ts +34 -0
- package/dist/components/core/index.cjs +21 -16
- package/dist/components/core/index.cjs.map +1 -1
- package/dist/components/core/index.d.ts +9 -0
- package/dist/components/core/index.js +7 -2
- package/dist/components/feedback/EmptyState.test.d.ts +1 -0
- package/dist/components/feedback/LoadingSpinner.test.d.ts +1 -0
- package/dist/components/feedback/NotificationComponent.test.d.ts +1 -0
- package/dist/components/feedback/NotificationList.test.d.ts +1 -0
- package/dist/components/feedback/PaginationControls.test.d.ts +1 -0
- package/dist/components/feedback/Toast.test.d.ts +1 -0
- package/dist/components/feedback/ToastContainer.test.d.ts +1 -0
- package/dist/components/feedback/index.cjs +1 -1
- package/dist/components/feedback/index.js +1 -1
- package/dist/components/form/Checkbox.test.d.ts +1 -0
- package/dist/components/form/ColorPicker.stories.d.ts +12 -0
- package/dist/components/form/ColorPicker.test.d.ts +1 -0
- package/dist/components/form/ColorPicker.vue.d.ts +23 -0
- package/dist/components/form/DatePicker.test.d.ts +1 -0
- package/dist/components/form/FileUpload.stories.d.ts +12 -0
- package/dist/components/form/FileUpload.test.d.ts +1 -0
- package/dist/components/form/FileUpload.vue.d.ts +40 -0
- package/dist/components/form/FormGroup.test.d.ts +1 -0
- package/dist/components/form/FormHelp.test.d.ts +1 -0
- package/dist/components/form/FormInput.test.d.ts +1 -0
- package/dist/components/form/FormLabel.test.d.ts +1 -0
- package/dist/components/form/FormSelect.test.d.ts +1 -0
- package/dist/components/form/RangeSlider.stories.d.ts +13 -0
- package/dist/components/form/RangeSlider.test.d.ts +1 -0
- package/dist/components/form/RangeSlider.vue.d.ts +35 -0
- package/dist/components/form/Rating.stories.d.ts +16 -0
- package/dist/components/form/Rating.test.d.ts +1 -0
- package/dist/components/form/Rating.vue.d.ts +43 -0
- package/dist/components/form/SearchInput.test.d.ts +1 -0
- package/dist/components/form/Slider.test.d.ts +1 -0
- package/dist/components/form/Switch.test.d.ts +1 -0
- package/dist/components/form/index.cjs +14 -10
- package/dist/components/form/index.cjs.map +1 -1
- package/dist/components/form/index.d.ts +6 -0
- package/dist/components/form/index.js +5 -1
- package/dist/components/index.cjs +37 -28
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +16 -7
- package/dist/components/layout/BaseLayout.test.d.ts +1 -0
- package/dist/components/layout/PageLayout.test.d.ts +1 -0
- package/dist/components/layout/PageLayout.vue.d.ts +3 -3
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.d.ts +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/type/BadgeType.test.d.ts +1 -0
- package/dist/components/type/BooleanType.test.d.ts +1 -0
- package/dist/components/type/DateType.test.d.ts +1 -0
- package/dist/components/type/NumberType.test.d.ts +1 -0
- package/dist/components/type/TextType.test.d.ts +1 -0
- package/dist/index-B4NFaDHr.cjs +67 -0
- package/dist/index-B4NFaDHr.cjs.map +1 -0
- package/dist/index-C2DRkEjb.js +68 -0
- package/dist/index-C2DRkEjb.js.map +1 -0
- package/dist/index.cjs +38 -29
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +17 -8
- package/dist/style.css +1 -1
- package/dist/types/components.d.ts +1 -1
- package/dist/useDropdown-DHFnd259.cjs.map +1 -1
- package/dist/useDropdown-iVu14E6s.js.map +1 -1
- package/dist/useToast-DT9hFfpM.js.map +1 -1
- package/dist/useToast-nJXpFz_M.cjs.map +1 -1
- package/package.json +7 -2
- package/dist/DatePicker.vue_vue_type_script_setup_true_lang-CxddOiV4.cjs.map +0 -1
- package/dist/DatePicker.vue_vue_type_script_setup_true_lang-DKDcnO28.js.map +0 -1
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-B9DsCY8M.js.map +0 -1
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-nMP2OxXp.cjs.map +0 -1
- package/dist/PageLayout.vue_vue_type_script_setup_true_lang-Bnw5L-xO.cjs.map +0 -1
- package/dist/PageLayout.vue_vue_type_script_setup_true_lang-D8uD3-Fe.js.map +0 -1
- package/dist/Popover.vue_vue_type_script_setup_true_lang-Q7gRZsT9.js.map +0 -1
- package/dist/Popover.vue_vue_type_script_setup_true_lang-dvlDTcf1.cjs.map +0 -1
- package/dist/Skeleton.vue_vue_type_script_setup_true_lang-D2S5g9s5.cjs.map +0 -1
- package/dist/Skeleton.vue_vue_type_script_setup_true_lang-DRC4EADS.js.map +0 -1
- package/dist/index-DNndxsOE.cjs +0 -58
- package/dist/index-DNndxsOE.cjs.map +0 -1
- package/dist/index-_NEu9rf2.js +0 -59
- package/dist/index-_NEu9rf2.js.map +0 -1
|
@@ -4,22 +4,22 @@ const Checkbox_vue_vue_type_script_setup_true_lang = require("./Checkbox.vue_vue
|
|
|
4
4
|
const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
|
|
5
5
|
const vue$1 = require("@iconify/vue");
|
|
6
6
|
const useDropdown = require("./useDropdown-DHFnd259.cjs");
|
|
7
|
-
const _hoisted_1$
|
|
8
|
-
const _hoisted_2$
|
|
7
|
+
const _hoisted_1$d = { class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950" };
|
|
8
|
+
const _hoisted_2$a = {
|
|
9
9
|
key: 0,
|
|
10
10
|
class: "flex items-center justify-between border-b border-gray-200 px-5 py-3 dark:border-gray-700"
|
|
11
11
|
};
|
|
12
|
-
const _hoisted_3$
|
|
13
|
-
const _hoisted_4$
|
|
12
|
+
const _hoisted_3$7 = { class: "flex flex-col gap-0.5" };
|
|
13
|
+
const _hoisted_4$6 = {
|
|
14
14
|
key: 0,
|
|
15
15
|
class: "text-md font-semibold text-gray-800 dark:text-gray-200"
|
|
16
16
|
};
|
|
17
|
-
const _hoisted_5$
|
|
17
|
+
const _hoisted_5$4 = {
|
|
18
18
|
key: 1,
|
|
19
19
|
class: "text-sm font-normal text-gray-600 dark:text-gray-400"
|
|
20
20
|
};
|
|
21
|
-
const _hoisted_6$
|
|
22
|
-
const _sfc_main$
|
|
21
|
+
const _hoisted_6$4 = { class: "flex gap-2" };
|
|
22
|
+
const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
23
23
|
__name: "CardComponent",
|
|
24
24
|
props: {
|
|
25
25
|
title: {},
|
|
@@ -27,21 +27,21 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
|
|
|
27
27
|
},
|
|
28
28
|
setup(__props) {
|
|
29
29
|
return (_ctx, _cache) => {
|
|
30
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
31
|
-
__props.title || __props.description || _ctx.$slots.title || _ctx.$slots.description || _ctx.$slots.actions ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$
|
|
32
|
-
vue.createElementVNode("div", _hoisted_3$
|
|
33
|
-
__props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$
|
|
30
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
|
|
31
|
+
__props.title || __props.description || _ctx.$slots.title || _ctx.$slots.description || _ctx.$slots.actions ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$a, [
|
|
32
|
+
vue.createElementVNode("div", _hoisted_3$7, [
|
|
33
|
+
__props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$6, [
|
|
34
34
|
vue.renderSlot(_ctx.$slots, "title", {}, () => [
|
|
35
35
|
vue.createTextVNode(vue.toDisplayString(__props.title), 1)
|
|
36
36
|
])
|
|
37
37
|
])) : vue.createCommentVNode("", true),
|
|
38
|
-
__props.description || _ctx.$slots.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$
|
|
38
|
+
__props.description || _ctx.$slots.description ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_5$4, [
|
|
39
39
|
vue.renderSlot(_ctx.$slots, "description", {}, () => [
|
|
40
40
|
vue.createTextVNode(vue.toDisplayString(__props.description), 1)
|
|
41
41
|
])
|
|
42
42
|
])) : vue.createCommentVNode("", true)
|
|
43
43
|
]),
|
|
44
|
-
vue.createElementVNode("div", _hoisted_6$
|
|
44
|
+
vue.createElementVNode("div", _hoisted_6$4, [
|
|
45
45
|
vue.renderSlot(_ctx.$slots, "actions")
|
|
46
46
|
])
|
|
47
47
|
])) : vue.createCommentVNode("", true),
|
|
@@ -50,29 +50,29 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
|
|
|
50
50
|
};
|
|
51
51
|
}
|
|
52
52
|
});
|
|
53
|
-
const _hoisted_1$
|
|
54
|
-
const _hoisted_2$
|
|
55
|
-
const _hoisted_3$
|
|
56
|
-
const _hoisted_4$
|
|
57
|
-
const _hoisted_5$
|
|
53
|
+
const _hoisted_1$c = { class: "overflow-hidden" };
|
|
54
|
+
const _hoisted_2$9 = { class: "overflow-x-auto" };
|
|
55
|
+
const _hoisted_3$6 = { class: "w-full divide-y divide-black/10 text-left dark:divide-white/10" };
|
|
56
|
+
const _hoisted_4$5 = { class: "bg-black/5 text-sm font-semibold text-gray-600 uppercase dark:bg-white/5 dark:text-gray-400" };
|
|
57
|
+
const _hoisted_5$3 = {
|
|
58
58
|
key: 0,
|
|
59
59
|
class: "w-12 px-3 py-3"
|
|
60
60
|
};
|
|
61
|
-
const _hoisted_6$
|
|
61
|
+
const _hoisted_6$3 = {
|
|
62
62
|
key: 1,
|
|
63
63
|
class: "px-3 py-3 text-right"
|
|
64
64
|
};
|
|
65
|
-
const _hoisted_7$
|
|
66
|
-
const _hoisted_8$
|
|
65
|
+
const _hoisted_7$3 = { class: "divide-y divide-black/10 font-medium dark:divide-white/10" };
|
|
66
|
+
const _hoisted_8$3 = {
|
|
67
67
|
key: 0,
|
|
68
68
|
class: "px-3 py-4"
|
|
69
69
|
};
|
|
70
|
-
const _hoisted_9$
|
|
70
|
+
const _hoisted_9$3 = {
|
|
71
71
|
key: 1,
|
|
72
72
|
class: "flex items-center justify-end gap-2 px-3 py-4"
|
|
73
73
|
};
|
|
74
|
-
const _hoisted_10$
|
|
75
|
-
const _sfc_main$
|
|
74
|
+
const _hoisted_10$2 = { key: 0 };
|
|
75
|
+
const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
76
76
|
__name: "TableComponent",
|
|
77
77
|
props: {
|
|
78
78
|
properties: {},
|
|
@@ -161,12 +161,12 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
|
161
161
|
};
|
|
162
162
|
const hasActionSlot = vue.computed(() => !!slots.action);
|
|
163
163
|
return (_ctx, _cache) => {
|
|
164
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
165
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
166
|
-
vue.createElementVNode("table", _hoisted_3$
|
|
167
|
-
vue.createElementVNode("thead", _hoisted_4$
|
|
164
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$c, [
|
|
165
|
+
vue.createElementVNode("div", _hoisted_2$9, [
|
|
166
|
+
vue.createElementVNode("table", _hoisted_3$6, [
|
|
167
|
+
vue.createElementVNode("thead", _hoisted_4$5, [
|
|
168
168
|
vue.createElementVNode("tr", null, [
|
|
169
|
-
__props.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_5$
|
|
169
|
+
__props.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_5$3, [
|
|
170
170
|
vue.createVNode(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
|
|
171
171
|
"model-value": allSelected.value,
|
|
172
172
|
indeterminate: someSelected.value,
|
|
@@ -184,16 +184,16 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
|
184
184
|
])
|
|
185
185
|
], 2);
|
|
186
186
|
}), 128)),
|
|
187
|
-
hasActionSlot.value ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$
|
|
187
|
+
hasActionSlot.value ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_6$3)) : vue.createCommentVNode("", true)
|
|
188
188
|
])
|
|
189
189
|
]),
|
|
190
|
-
vue.createElementVNode("tbody", _hoisted_7$
|
|
190
|
+
vue.createElementVNode("tbody", _hoisted_7$3, [
|
|
191
191
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
|
|
192
192
|
return vue.openBlock(), vue.createElementBlock("tr", {
|
|
193
193
|
key: getKey(item),
|
|
194
194
|
class: vue.normalizeClass(["hover:bg-black/5 dark:hover:bg-white/5 transition-colors", { "bg-primary/5 dark:bg-primary/10": isSelected(item) }])
|
|
195
195
|
}, [
|
|
196
|
-
__props.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_8$
|
|
196
|
+
__props.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_8$3, [
|
|
197
197
|
isSelectable(item) ? (vue.openBlock(), vue.createBlock(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
|
|
198
198
|
key: 0,
|
|
199
199
|
"model-value": isSelected(item),
|
|
@@ -221,7 +221,7 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
|
221
221
|
])
|
|
222
222
|
], 2);
|
|
223
223
|
}), 128)),
|
|
224
|
-
hasActionSlot.value ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_9$
|
|
224
|
+
hasActionSlot.value ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_9$3, [
|
|
225
225
|
vue.renderSlot(_ctx.$slots, "action", { item })
|
|
226
226
|
])) : vue.createCommentVNode("", true)
|
|
227
227
|
], 2);
|
|
@@ -229,33 +229,33 @@ const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
|
229
229
|
])
|
|
230
230
|
])
|
|
231
231
|
]),
|
|
232
|
-
!__props.items || __props.items.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$
|
|
232
|
+
!__props.items || __props.items.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$2, [
|
|
233
233
|
vue.renderSlot(_ctx.$slots, "empty")
|
|
234
234
|
])) : vue.createCommentVNode("", true)
|
|
235
235
|
]);
|
|
236
236
|
};
|
|
237
237
|
}
|
|
238
238
|
});
|
|
239
|
-
const _hoisted_1$
|
|
240
|
-
const _hoisted_2$
|
|
241
|
-
const _hoisted_3$
|
|
242
|
-
const _hoisted_4$
|
|
239
|
+
const _hoisted_1$b = { class: "space-y-3" };
|
|
240
|
+
const _hoisted_2$8 = { class: "flex items-center gap-3 p-3" };
|
|
241
|
+
const _hoisted_3$5 = { class: "text-sm text-gray-600 dark:text-gray-400" };
|
|
242
|
+
const _hoisted_4$4 = {
|
|
243
243
|
key: 0,
|
|
244
244
|
class: "text-sm text-primary font-medium"
|
|
245
245
|
};
|
|
246
|
-
const _hoisted_5$
|
|
247
|
-
const _hoisted_6$
|
|
246
|
+
const _hoisted_5$2 = { class: "p-4 flex items-center gap-4" };
|
|
247
|
+
const _hoisted_6$2 = {
|
|
248
248
|
key: 0,
|
|
249
249
|
class: "flex-shrink-0"
|
|
250
250
|
};
|
|
251
|
-
const _hoisted_7$
|
|
251
|
+
const _hoisted_7$2 = {
|
|
252
252
|
key: 1,
|
|
253
253
|
class: "w-5 h-5"
|
|
254
254
|
};
|
|
255
|
-
const _hoisted_8$
|
|
256
|
-
const _hoisted_9$
|
|
257
|
-
const _hoisted_10 = { key: 1 };
|
|
258
|
-
const _sfc_main$
|
|
255
|
+
const _hoisted_8$2 = { class: "flex-1 min-w-0" };
|
|
256
|
+
const _hoisted_9$2 = { class: "flex-shrink-0" };
|
|
257
|
+
const _hoisted_10$1 = { key: 1 };
|
|
258
|
+
const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
|
|
259
259
|
__name: "MobileList",
|
|
260
260
|
props: {
|
|
261
261
|
items: {},
|
|
@@ -302,42 +302,42 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
302
302
|
};
|
|
303
303
|
const hasEmptySlot = vue.computed(() => !!slots.empty);
|
|
304
304
|
return (_ctx, _cache) => {
|
|
305
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
306
|
-
__props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
305
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
|
|
306
|
+
__props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
|
|
307
307
|
default: vue.withCtx(() => [
|
|
308
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
308
|
+
vue.createElementVNode("div", _hoisted_2$8, [
|
|
309
309
|
vue.createVNode(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
|
|
310
310
|
"model-value": allSelected.value,
|
|
311
311
|
indeterminate: someSelected.value,
|
|
312
312
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
|
|
313
313
|
}, null, 8, ["model-value", "indeterminate"]),
|
|
314
|
-
vue.createElementVNode("span", _hoisted_3$
|
|
315
|
-
__props.selectedItems && __props.selectedItems.size > 0 ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_4$
|
|
314
|
+
vue.createElementVNode("span", _hoisted_3$5, vue.toDisplayString(allSelected.value ? "Tout désélectionner" : "Tout sélectionner"), 1),
|
|
315
|
+
__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)
|
|
316
316
|
])
|
|
317
317
|
]),
|
|
318
318
|
_: 1
|
|
319
319
|
})) : vue.createCommentVNode("", true),
|
|
320
320
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
|
|
321
|
-
return vue.openBlock(), vue.createBlock(_sfc_main$
|
|
321
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$i, {
|
|
322
322
|
key: getKey(item),
|
|
323
323
|
class: vue.normalizeClass(["hover:shadow-lg transition-all duration-200", {
|
|
324
324
|
"ring-2 ring-primary": isSelected(item)
|
|
325
325
|
}])
|
|
326
326
|
}, {
|
|
327
327
|
default: vue.withCtx(() => [
|
|
328
|
-
vue.createElementVNode("div", _hoisted_5$
|
|
329
|
-
__props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$
|
|
328
|
+
vue.createElementVNode("div", _hoisted_5$2, [
|
|
329
|
+
__props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$2, [
|
|
330
330
|
isSelectable(item) ? (vue.openBlock(), vue.createBlock(Checkbox_vue_vue_type_script_setup_true_lang._sfc_main, {
|
|
331
331
|
key: 0,
|
|
332
332
|
"model-value": isSelected(item),
|
|
333
333
|
"onUpdate:modelValue": ($event) => handleSelect(item)
|
|
334
|
-
}, null, 8, ["model-value", "onUpdate:modelValue"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$
|
|
334
|
+
}, null, 8, ["model-value", "onUpdate:modelValue"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_7$2))
|
|
335
335
|
])) : vue.createCommentVNode("", true),
|
|
336
336
|
vue.renderSlot(_ctx.$slots, "avatar", { item }),
|
|
337
|
-
vue.createElementVNode("div", _hoisted_8$
|
|
337
|
+
vue.createElementVNode("div", _hoisted_8$2, [
|
|
338
338
|
vue.renderSlot(_ctx.$slots, "content", { item })
|
|
339
339
|
]),
|
|
340
|
-
vue.createElementVNode("div", _hoisted_9$
|
|
340
|
+
vue.createElementVNode("div", _hoisted_9$2, [
|
|
341
341
|
vue.renderSlot(_ctx.$slots, "actions", { item })
|
|
342
342
|
])
|
|
343
343
|
])
|
|
@@ -345,7 +345,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
345
345
|
_: 2
|
|
346
346
|
}, 1032, ["class"]);
|
|
347
347
|
}), 128)),
|
|
348
|
-
__props.items.length === 0 && hasEmptySlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10, [
|
|
348
|
+
__props.items.length === 0 && hasEmptySlot.value ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_10$1, [
|
|
349
349
|
vue.renderSlot(_ctx.$slots, "empty")
|
|
350
350
|
])) : vue.createCommentVNode("", true)
|
|
351
351
|
]);
|
|
@@ -553,7 +553,7 @@ function useBreakpoints(breakpoints, options = {}) {
|
|
|
553
553
|
}
|
|
554
554
|
});
|
|
555
555
|
}
|
|
556
|
-
const _sfc_main$
|
|
556
|
+
const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
557
557
|
__name: "ResponsiveList",
|
|
558
558
|
props: {
|
|
559
559
|
items: {},
|
|
@@ -608,7 +608,7 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
608
608
|
const isDesktop = vue.computed(() => breakpoints.greaterOrEqual(props.breakpoint).value);
|
|
609
609
|
return (_ctx, _cache) => {
|
|
610
610
|
return vue.openBlock(), vue.createElementBlock("div", null, [
|
|
611
|
-
!isDesktop.value ? (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
611
|
+
!isDesktop.value ? (vue.openBlock(), vue.createBlock(_sfc_main$g, {
|
|
612
612
|
key: 0,
|
|
613
613
|
items: __props.items,
|
|
614
614
|
"key-field": __props.keyField,
|
|
@@ -633,9 +633,9 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
633
633
|
vue.renderSlot(_ctx.$slots, "empty")
|
|
634
634
|
]),
|
|
635
635
|
_: 3
|
|
636
|
-
}, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter"])) : (vue.openBlock(), vue.createBlock(_sfc_main$
|
|
636
|
+
}, 8, ["items", "key-field", "selectable", "selected-items", "selectable-filter"])) : (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 1 }, {
|
|
637
637
|
default: vue.withCtx(() => [
|
|
638
|
-
vue.createVNode(_sfc_main$
|
|
638
|
+
vue.createVNode(_sfc_main$h, {
|
|
639
639
|
items: __props.items,
|
|
640
640
|
properties: tableProperties.value,
|
|
641
641
|
"key-field": __props.keyField,
|
|
@@ -679,25 +679,25 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
679
679
|
};
|
|
680
680
|
}
|
|
681
681
|
});
|
|
682
|
-
const _hoisted_1$
|
|
682
|
+
const _hoisted_1$a = {
|
|
683
683
|
key: 0,
|
|
684
684
|
class: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
|
|
685
685
|
};
|
|
686
|
-
const _hoisted_2$
|
|
687
|
-
const _hoisted_3$
|
|
688
|
-
const _hoisted_4 = ["disabled"];
|
|
689
|
-
const _hoisted_5 = {
|
|
686
|
+
const _hoisted_2$7 = { class: "relative" };
|
|
687
|
+
const _hoisted_3$4 = ["disabled", "placeholder"];
|
|
688
|
+
const _hoisted_4$3 = ["disabled"];
|
|
689
|
+
const _hoisted_5$1 = {
|
|
690
690
|
key: 0,
|
|
691
691
|
class: "px-4 py-3 text-sm text-gray-500"
|
|
692
692
|
};
|
|
693
|
-
const _hoisted_6 = ["data-index", "onClick"];
|
|
694
|
-
const _hoisted_7 = { class: "flex-1 dark:text-white" };
|
|
695
|
-
const _hoisted_8 = { class: "text-xs text-gray-400" };
|
|
696
|
-
const _hoisted_9 = {
|
|
693
|
+
const _hoisted_6$1 = ["data-index", "onClick"];
|
|
694
|
+
const _hoisted_7$1 = { class: "flex-1 dark:text-white" };
|
|
695
|
+
const _hoisted_8$1 = { class: "text-xs text-gray-400" };
|
|
696
|
+
const _hoisted_9$1 = {
|
|
697
697
|
key: 1,
|
|
698
698
|
class: "mt-1 text-sm text-red-600"
|
|
699
699
|
};
|
|
700
|
-
const _sfc_main$
|
|
700
|
+
const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
|
|
701
701
|
__name: "AutocompleteComponent",
|
|
702
702
|
props: {
|
|
703
703
|
modelValue: {},
|
|
@@ -799,8 +799,8 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
799
799
|
ref: containerRef,
|
|
800
800
|
class: "autocomplete-container"
|
|
801
801
|
}, [
|
|
802
|
-
__props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$
|
|
803
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
802
|
+
__props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$a, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
|
|
803
|
+
vue.createElementVNode("div", _hoisted_2$7, [
|
|
804
804
|
vue.createElementVNode("div", {
|
|
805
805
|
ref_key: "inputWrapperRef",
|
|
806
806
|
ref: inputWrapperRef,
|
|
@@ -825,7 +825,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
825
825
|
type: "text",
|
|
826
826
|
onFocus: openDropdown,
|
|
827
827
|
onKeydown: handleKeydown
|
|
828
|
-
}, null, 40, _hoisted_3$
|
|
828
|
+
}, null, 40, _hoisted_3$4), [
|
|
829
829
|
[vue.vModelText, searchQuery.value]
|
|
830
830
|
]),
|
|
831
831
|
__props.modelValue && !__props.disabled ? (vue.openBlock(), vue.createElementBlock("button", {
|
|
@@ -849,7 +849,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
849
849
|
class: vue.normalizeClass([{ "rotate-180": vue.unref(isOpen) }, "size-4 text-gray-400 transition"]),
|
|
850
850
|
icon: "lucide:chevron-down"
|
|
851
851
|
}, null, 8, ["class"])
|
|
852
|
-
], 8, _hoisted_4)
|
|
852
|
+
], 8, _hoisted_4$3)
|
|
853
853
|
], 2),
|
|
854
854
|
(vue.openBlock(), vue.createBlock(vue.Teleport, {
|
|
855
855
|
to: "body",
|
|
@@ -874,7 +874,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
874
874
|
!__props.teleport && "absolute mt-2 w-full"
|
|
875
875
|
])
|
|
876
876
|
}, [
|
|
877
|
-
filteredOptions.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5, vue.toDisplayString(__props.noResultsText || "No results found"), 1)) : vue.createCommentVNode("", true),
|
|
877
|
+
filteredOptions.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$1, vue.toDisplayString(__props.noResultsText || "No results found"), 1)) : vue.createCommentVNode("", true),
|
|
878
878
|
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredOptions.value, (option, index) => {
|
|
879
879
|
return vue.openBlock(), vue.createElementBlock("button", {
|
|
880
880
|
key: option.value,
|
|
@@ -891,9 +891,9 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
891
891
|
class: "size-4 text-primary",
|
|
892
892
|
icon: "lucide:check"
|
|
893
893
|
})) : vue.createCommentVNode("", true),
|
|
894
|
-
vue.createElementVNode("span", _hoisted_7, vue.toDisplayString(option.label), 1),
|
|
895
|
-
vue.createElementVNode("span", _hoisted_8, "(" + vue.toDisplayString(option.value) + ")", 1)
|
|
896
|
-
], 10, _hoisted_6);
|
|
894
|
+
vue.createElementVNode("span", _hoisted_7$1, vue.toDisplayString(option.label), 1),
|
|
895
|
+
vue.createElementVNode("span", _hoisted_8$1, "(" + vue.toDisplayString(option.value) + ")", 1)
|
|
896
|
+
], 10, _hoisted_6$1);
|
|
897
897
|
}), 128))
|
|
898
898
|
], 6)) : vue.createCommentVNode("", true)
|
|
899
899
|
]),
|
|
@@ -901,12 +901,12 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
901
901
|
})
|
|
902
902
|
], 8, ["disabled"]))
|
|
903
903
|
]),
|
|
904
|
-
__props.error ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_9, vue.toDisplayString(__props.error), 1)) : vue.createCommentVNode("", true)
|
|
904
|
+
__props.error ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_9$1, vue.toDisplayString(__props.error), 1)) : vue.createCommentVNode("", true)
|
|
905
905
|
], 512);
|
|
906
906
|
};
|
|
907
907
|
}
|
|
908
908
|
});
|
|
909
|
-
const _sfc_main$
|
|
909
|
+
const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
|
|
910
910
|
__name: "TableAction",
|
|
911
911
|
props: {
|
|
912
912
|
link: {},
|
|
@@ -975,7 +975,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
975
975
|
};
|
|
976
976
|
}
|
|
977
977
|
});
|
|
978
|
-
const _sfc_main$
|
|
978
|
+
const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
979
979
|
__name: "Button",
|
|
980
980
|
props: {
|
|
981
981
|
variant: { default: "primary" },
|
|
@@ -1068,10 +1068,10 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1068
1068
|
};
|
|
1069
1069
|
}
|
|
1070
1070
|
});
|
|
1071
|
-
const _hoisted_1$
|
|
1072
|
-
const _hoisted_2$
|
|
1073
|
-
const _hoisted_3 = { key: 1 };
|
|
1074
|
-
const _sfc_main$
|
|
1071
|
+
const _hoisted_1$9 = { class: "relative inline-block" };
|
|
1072
|
+
const _hoisted_2$6 = ["src", "alt"];
|
|
1073
|
+
const _hoisted_3$3 = { key: 1 };
|
|
1074
|
+
const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
1075
1075
|
__name: "Avatar",
|
|
1076
1076
|
props: {
|
|
1077
1077
|
src: {},
|
|
@@ -1117,7 +1117,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1117
1117
|
});
|
|
1118
1118
|
const showImage = vue.computed(() => props.src && !imageError.value);
|
|
1119
1119
|
return (_ctx, _cache) => {
|
|
1120
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1120
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
|
|
1121
1121
|
vue.createElementVNode("div", {
|
|
1122
1122
|
class: vue.normalizeClass([
|
|
1123
1123
|
"flex items-center justify-center overflow-hidden bg-gray-200 font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-300",
|
|
@@ -1131,7 +1131,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1131
1131
|
alt: __props.alt || __props.name,
|
|
1132
1132
|
class: "size-full object-cover",
|
|
1133
1133
|
onError: _cache[0] || (_cache[0] = ($event) => imageError.value = true)
|
|
1134
|
-
}, null, 40, _hoisted_2$
|
|
1134
|
+
}, 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), {
|
|
1135
1135
|
key: 2,
|
|
1136
1136
|
icon: "lucide:user",
|
|
1137
1137
|
class: "size-1/2"
|
|
@@ -1149,9 +1149,9 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1149
1149
|
};
|
|
1150
1150
|
}
|
|
1151
1151
|
});
|
|
1152
|
-
const _hoisted_1$
|
|
1153
|
-
const _hoisted_2$
|
|
1154
|
-
const _sfc_main$
|
|
1152
|
+
const _hoisted_1$8 = ["aria-selected", "disabled", "onClick"];
|
|
1153
|
+
const _hoisted_2$5 = { class: "mt-4" };
|
|
1154
|
+
const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
1155
1155
|
__name: "Tabs",
|
|
1156
1156
|
props: {
|
|
1157
1157
|
tabs: {},
|
|
@@ -1216,18 +1216,18 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1216
1216
|
activeTab.value === tab.key ? variantClasses[__props.variant].active : variantClasses[__props.variant].inactive
|
|
1217
1217
|
]),
|
|
1218
1218
|
onClick: ($event) => selectTab(tab)
|
|
1219
|
-
}, vue.toDisplayString(tab.label), 11, _hoisted_1$
|
|
1219
|
+
}, vue.toDisplayString(tab.label), 11, _hoisted_1$8);
|
|
1220
1220
|
}), 128))
|
|
1221
1221
|
], 2),
|
|
1222
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
1222
|
+
vue.createElementVNode("div", _hoisted_2$5, [
|
|
1223
1223
|
vue.renderSlot(_ctx.$slots, "default", { activeTab: activeTab.value })
|
|
1224
1224
|
])
|
|
1225
1225
|
]);
|
|
1226
1226
|
};
|
|
1227
1227
|
}
|
|
1228
1228
|
});
|
|
1229
|
-
const _hoisted_1$
|
|
1230
|
-
const _sfc_main$
|
|
1229
|
+
const _hoisted_1$7 = { role: "tabpanel" };
|
|
1230
|
+
const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
1231
1231
|
__name: "TabPanel",
|
|
1232
1232
|
props: {
|
|
1233
1233
|
value: {}
|
|
@@ -1237,7 +1237,7 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1237
1237
|
const activeTab = vue.inject("activeTab");
|
|
1238
1238
|
const isActive = vue.computed(() => (activeTab == null ? void 0 : activeTab.value) === props.value);
|
|
1239
1239
|
return (_ctx, _cache) => {
|
|
1240
|
-
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1240
|
+
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$7, [
|
|
1241
1241
|
vue.renderSlot(_ctx.$slots, "default")
|
|
1242
1242
|
], 512)), [
|
|
1243
1243
|
[vue.vShow, isActive.value]
|
|
@@ -1245,11 +1245,11 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1245
1245
|
};
|
|
1246
1246
|
}
|
|
1247
1247
|
});
|
|
1248
|
-
const _hoisted_1$
|
|
1248
|
+
const _hoisted_1$6 = {
|
|
1249
1249
|
key: 2,
|
|
1250
1250
|
class: "text-sm font-semibold"
|
|
1251
1251
|
};
|
|
1252
|
-
const _sfc_main$
|
|
1252
|
+
const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
1253
1253
|
__name: "Stepper",
|
|
1254
1254
|
props: {
|
|
1255
1255
|
steps: {},
|
|
@@ -1318,7 +1318,7 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1318
1318
|
key: 1,
|
|
1319
1319
|
icon: step.icon,
|
|
1320
1320
|
class: "size-6"
|
|
1321
|
-
}, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$
|
|
1321
|
+
}, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$6, vue.toDisplayString(index + 1), 1))
|
|
1322
1322
|
], 2),
|
|
1323
1323
|
vue.createElementVNode("div", {
|
|
1324
1324
|
class: vue.normalizeClass([
|
|
@@ -1346,9 +1346,9 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1346
1346
|
};
|
|
1347
1347
|
}
|
|
1348
1348
|
});
|
|
1349
|
-
const _hoisted_1 = { class: "overflow-hidden" };
|
|
1350
|
-
const _hoisted_2 = { class: "space-y-4 p-6" };
|
|
1351
|
-
const _sfc_main$
|
|
1349
|
+
const _hoisted_1$5 = { class: "overflow-hidden" };
|
|
1350
|
+
const _hoisted_2$4 = { class: "space-y-4 p-6" };
|
|
1351
|
+
const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
1352
1352
|
__name: "CollapsibleCard",
|
|
1353
1353
|
props: {
|
|
1354
1354
|
title: {},
|
|
@@ -1362,7 +1362,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1362
1362
|
isExpanded.value = !isExpanded.value;
|
|
1363
1363
|
};
|
|
1364
1364
|
return (_ctx, _cache) => {
|
|
1365
|
-
return vue.openBlock(), vue.createBlock(_sfc_main$
|
|
1365
|
+
return vue.openBlock(), vue.createBlock(_sfc_main$i, {
|
|
1366
1366
|
title: __props.title,
|
|
1367
1367
|
description: __props.description
|
|
1368
1368
|
}, {
|
|
@@ -1389,8 +1389,8 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1389
1389
|
"leave-to-class": "opacity-0 max-h-0"
|
|
1390
1390
|
}, {
|
|
1391
1391
|
default: vue.withCtx(() => [
|
|
1392
|
-
vue.withDirectives(vue.createElementVNode("div", _hoisted_1, [
|
|
1393
|
-
vue.createElementVNode("div", _hoisted_2, [
|
|
1392
|
+
vue.withDirectives(vue.createElementVNode("div", _hoisted_1$5, [
|
|
1393
|
+
vue.createElementVNode("div", _hoisted_2$4, [
|
|
1394
1394
|
vue.renderSlot(_ctx.$slots, "default")
|
|
1395
1395
|
])
|
|
1396
1396
|
], 512), [
|
|
@@ -1405,7 +1405,7 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1405
1405
|
};
|
|
1406
1406
|
}
|
|
1407
1407
|
});
|
|
1408
|
-
const _sfc_main$
|
|
1408
|
+
const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
1409
1409
|
__name: "Tooltip",
|
|
1410
1410
|
props: {
|
|
1411
1411
|
content: {},
|
|
@@ -1480,7 +1480,7 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1480
1480
|
};
|
|
1481
1481
|
}
|
|
1482
1482
|
});
|
|
1483
|
-
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
1483
|
+
const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
1484
1484
|
__name: "Popover",
|
|
1485
1485
|
props: {
|
|
1486
1486
|
position: { default: "bottom" },
|
|
@@ -1563,18 +1563,474 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
1563
1563
|
};
|
|
1564
1564
|
}
|
|
1565
1565
|
});
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
|
|
1571
|
-
|
|
1572
|
-
|
|
1573
|
-
|
|
1574
|
-
|
|
1575
|
-
|
|
1576
|
-
|
|
1577
|
-
|
|
1578
|
-
|
|
1579
|
-
|
|
1580
|
-
|
|
1566
|
+
const _hoisted_1$4 = {
|
|
1567
|
+
key: 0,
|
|
1568
|
+
class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700"
|
|
1569
|
+
};
|
|
1570
|
+
const _hoisted_2$3 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
|
|
1571
|
+
const _hoisted_3$2 = { class: "flex-1 overflow-y-auto p-4" };
|
|
1572
|
+
const _hoisted_4$2 = {
|
|
1573
|
+
key: 1,
|
|
1574
|
+
class: "px-4 py-3 border-t border-gray-200 dark:border-gray-700"
|
|
1575
|
+
};
|
|
1576
|
+
const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
1577
|
+
__name: "Drawer",
|
|
1578
|
+
props: {
|
|
1579
|
+
modelValue: { type: Boolean },
|
|
1580
|
+
position: { default: "right" },
|
|
1581
|
+
size: { default: "md" },
|
|
1582
|
+
title: {},
|
|
1583
|
+
showClose: { type: Boolean, default: true },
|
|
1584
|
+
closeOnOverlay: { type: Boolean, default: true },
|
|
1585
|
+
closeOnEscape: { type: Boolean, default: true },
|
|
1586
|
+
overlay: { type: Boolean, default: true }
|
|
1587
|
+
},
|
|
1588
|
+
emits: ["update:modelValue"],
|
|
1589
|
+
setup(__props, { emit: __emit }) {
|
|
1590
|
+
const props = __props;
|
|
1591
|
+
const emit = __emit;
|
|
1592
|
+
const close = () => {
|
|
1593
|
+
emit("update:modelValue", false);
|
|
1594
|
+
};
|
|
1595
|
+
const handleOverlayClick = () => {
|
|
1596
|
+
if (props.closeOnOverlay) {
|
|
1597
|
+
close();
|
|
1598
|
+
}
|
|
1599
|
+
};
|
|
1600
|
+
const handleKeydown = (e) => {
|
|
1601
|
+
if (e.key === "Escape" && props.closeOnEscape && props.modelValue) {
|
|
1602
|
+
close();
|
|
1603
|
+
}
|
|
1604
|
+
};
|
|
1605
|
+
vue.onMounted(() => {
|
|
1606
|
+
document.addEventListener("keydown", handleKeydown);
|
|
1607
|
+
});
|
|
1608
|
+
vue.onUnmounted(() => {
|
|
1609
|
+
document.removeEventListener("keydown", handleKeydown);
|
|
1610
|
+
});
|
|
1611
|
+
vue.watch(
|
|
1612
|
+
() => props.modelValue,
|
|
1613
|
+
(isOpen) => {
|
|
1614
|
+
if (isOpen) {
|
|
1615
|
+
document.body.style.overflow = "hidden";
|
|
1616
|
+
} else {
|
|
1617
|
+
document.body.style.overflow = "";
|
|
1618
|
+
}
|
|
1619
|
+
}
|
|
1620
|
+
);
|
|
1621
|
+
const sizeClasses = vue.computed(() => {
|
|
1622
|
+
const isHorizontal = props.position === "left" || props.position === "right";
|
|
1623
|
+
const sizes = {
|
|
1624
|
+
sm: isHorizontal ? "w-64" : "h-32",
|
|
1625
|
+
md: isHorizontal ? "w-80" : "h-48",
|
|
1626
|
+
lg: isHorizontal ? "w-96" : "h-64",
|
|
1627
|
+
xl: isHorizontal ? "w-[32rem]" : "h-96",
|
|
1628
|
+
full: isHorizontal ? "w-screen" : "h-screen"
|
|
1629
|
+
};
|
|
1630
|
+
return sizes[props.size];
|
|
1631
|
+
});
|
|
1632
|
+
const positionClasses = vue.computed(() => {
|
|
1633
|
+
const base = "fixed bg-white dark:bg-gray-800 shadow-xl flex flex-col";
|
|
1634
|
+
switch (props.position) {
|
|
1635
|
+
case "left":
|
|
1636
|
+
return `${base} inset-y-0 left-0 ${sizeClasses.value}`;
|
|
1637
|
+
case "right":
|
|
1638
|
+
return `${base} inset-y-0 right-0 ${sizeClasses.value}`;
|
|
1639
|
+
case "top":
|
|
1640
|
+
return `${base} inset-x-0 top-0 ${sizeClasses.value}`;
|
|
1641
|
+
case "bottom":
|
|
1642
|
+
return `${base} inset-x-0 bottom-0 ${sizeClasses.value}`;
|
|
1643
|
+
default:
|
|
1644
|
+
return base;
|
|
1645
|
+
}
|
|
1646
|
+
});
|
|
1647
|
+
const transformClasses = vue.computed(() => {
|
|
1648
|
+
switch (props.position) {
|
|
1649
|
+
case "left":
|
|
1650
|
+
return { enter: "-translate-x-full", leave: "-translate-x-full" };
|
|
1651
|
+
case "right":
|
|
1652
|
+
return { enter: "translate-x-full", leave: "translate-x-full" };
|
|
1653
|
+
case "top":
|
|
1654
|
+
return { enter: "-translate-y-full", leave: "-translate-y-full" };
|
|
1655
|
+
case "bottom":
|
|
1656
|
+
return { enter: "translate-y-full", leave: "translate-y-full" };
|
|
1657
|
+
default:
|
|
1658
|
+
return { enter: "", leave: "" };
|
|
1659
|
+
}
|
|
1660
|
+
});
|
|
1661
|
+
return (_ctx, _cache) => {
|
|
1662
|
+
return vue.openBlock(), vue.createBlock(vue.Teleport, { to: "body" }, [
|
|
1663
|
+
vue.createVNode(vue.Transition, {
|
|
1664
|
+
"enter-active-class": "transition-opacity duration-300 ease-out",
|
|
1665
|
+
"enter-from-class": "opacity-0",
|
|
1666
|
+
"enter-to-class": "opacity-100",
|
|
1667
|
+
"leave-active-class": "transition-opacity duration-200 ease-in",
|
|
1668
|
+
"leave-from-class": "opacity-100",
|
|
1669
|
+
"leave-to-class": "opacity-0"
|
|
1670
|
+
}, {
|
|
1671
|
+
default: vue.withCtx(() => [
|
|
1672
|
+
__props.modelValue && __props.overlay ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
1673
|
+
key: 0,
|
|
1674
|
+
class: "fixed inset-0 z-40 bg-black/50",
|
|
1675
|
+
onClick: handleOverlayClick
|
|
1676
|
+
})) : vue.createCommentVNode("", true)
|
|
1677
|
+
]),
|
|
1678
|
+
_: 1
|
|
1679
|
+
}),
|
|
1680
|
+
vue.createVNode(vue.Transition, {
|
|
1681
|
+
"enter-active-class": "transition-transform duration-300 ease-out",
|
|
1682
|
+
"enter-from-class": transformClasses.value.enter,
|
|
1683
|
+
"enter-to-class": "translate-x-0 translate-y-0",
|
|
1684
|
+
"leave-active-class": "transition-transform duration-200 ease-in",
|
|
1685
|
+
"leave-from-class": "translate-x-0 translate-y-0",
|
|
1686
|
+
"leave-to-class": transformClasses.value.leave
|
|
1687
|
+
}, {
|
|
1688
|
+
default: vue.withCtx(() => [
|
|
1689
|
+
__props.modelValue ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
1690
|
+
key: 0,
|
|
1691
|
+
class: vue.normalizeClass([positionClasses.value, "z-50"]),
|
|
1692
|
+
role: "dialog",
|
|
1693
|
+
"aria-modal": "true"
|
|
1694
|
+
}, [
|
|
1695
|
+
__props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$4, [
|
|
1696
|
+
vue.renderSlot(_ctx.$slots, "header", {}, () => [
|
|
1697
|
+
vue.createElementVNode("h2", _hoisted_2$3, vue.toDisplayString(__props.title), 1)
|
|
1698
|
+
]),
|
|
1699
|
+
__props.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
|
|
1700
|
+
key: 0,
|
|
1701
|
+
type: "button",
|
|
1702
|
+
class: "p-1 text-gray-400 hover:text-gray-600 dark:hover:text-gray-300 rounded-lg hover:bg-gray-100 dark:hover:bg-gray-700",
|
|
1703
|
+
onClick: close
|
|
1704
|
+
}, [
|
|
1705
|
+
vue.createVNode(vue.unref(vue$1.Icon), {
|
|
1706
|
+
icon: "heroicons:x-mark",
|
|
1707
|
+
class: "w-5 h-5"
|
|
1708
|
+
})
|
|
1709
|
+
])) : vue.createCommentVNode("", true)
|
|
1710
|
+
])) : vue.createCommentVNode("", true),
|
|
1711
|
+
vue.createElementVNode("div", _hoisted_3$2, [
|
|
1712
|
+
vue.renderSlot(_ctx.$slots, "default")
|
|
1713
|
+
]),
|
|
1714
|
+
_ctx.$slots.footer ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$2, [
|
|
1715
|
+
vue.renderSlot(_ctx.$slots, "footer")
|
|
1716
|
+
])) : vue.createCommentVNode("", true)
|
|
1717
|
+
], 2)) : vue.createCommentVNode("", true)
|
|
1718
|
+
]),
|
|
1719
|
+
_: 3
|
|
1720
|
+
}, 8, ["enter-from-class", "leave-to-class"])
|
|
1721
|
+
]);
|
|
1722
|
+
};
|
|
1723
|
+
}
|
|
1724
|
+
});
|
|
1725
|
+
const _hoisted_1$3 = { "aria-label": "Breadcrumb" };
|
|
1726
|
+
const _hoisted_2$2 = { class: "flex items-center flex-wrap gap-1 text-sm" };
|
|
1727
|
+
const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
1728
|
+
__name: "Breadcrumb",
|
|
1729
|
+
props: {
|
|
1730
|
+
items: {},
|
|
1731
|
+
separator: { default: "heroicons:chevron-right" },
|
|
1732
|
+
homeIcon: { default: "heroicons:home" },
|
|
1733
|
+
showHomeIcon: { type: Boolean, default: true }
|
|
1734
|
+
},
|
|
1735
|
+
emits: ["click"],
|
|
1736
|
+
setup(__props) {
|
|
1737
|
+
return (_ctx, _cache) => {
|
|
1738
|
+
return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$3, [
|
|
1739
|
+
vue.createElementVNode("ol", _hoisted_2$2, [
|
|
1740
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
|
|
1741
|
+
return vue.openBlock(), vue.createElementBlock("li", {
|
|
1742
|
+
key: index,
|
|
1743
|
+
class: "flex items-center"
|
|
1744
|
+
}, [
|
|
1745
|
+
index > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1746
|
+
key: 0,
|
|
1747
|
+
icon: __props.separator,
|
|
1748
|
+
class: "w-4 h-4 mx-2 text-gray-400 dark:text-gray-500 flex-shrink-0"
|
|
1749
|
+
}, null, 8, ["icon"])) : vue.createCommentVNode("", true),
|
|
1750
|
+
(vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(item.to ? "router-link" : item.href ? "a" : "span"), {
|
|
1751
|
+
to: item.to,
|
|
1752
|
+
href: item.href,
|
|
1753
|
+
class: vue.normalizeClass([
|
|
1754
|
+
"flex items-center gap-1.5 transition-colors",
|
|
1755
|
+
index === __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"
|
|
1756
|
+
]),
|
|
1757
|
+
"aria-current": index === __props.items.length - 1 ? "page" : void 0,
|
|
1758
|
+
onClick: ($event) => _ctx.$emit("click", item, index)
|
|
1759
|
+
}, {
|
|
1760
|
+
default: vue.withCtx(() => [
|
|
1761
|
+
index === 0 && __props.showHomeIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1762
|
+
key: 0,
|
|
1763
|
+
icon: item.icon || __props.homeIcon,
|
|
1764
|
+
class: "w-4 h-4"
|
|
1765
|
+
}, null, 8, ["icon"])) : item.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1766
|
+
key: 1,
|
|
1767
|
+
icon: item.icon,
|
|
1768
|
+
class: "w-4 h-4"
|
|
1769
|
+
}, null, 8, ["icon"])) : vue.createCommentVNode("", true),
|
|
1770
|
+
vue.createElementVNode("span", null, vue.toDisplayString(item.label), 1)
|
|
1771
|
+
]),
|
|
1772
|
+
_: 2
|
|
1773
|
+
}, 1032, ["to", "href", "class", "aria-current", "onClick"]))
|
|
1774
|
+
]);
|
|
1775
|
+
}), 128))
|
|
1776
|
+
])
|
|
1777
|
+
]);
|
|
1778
|
+
};
|
|
1779
|
+
}
|
|
1780
|
+
});
|
|
1781
|
+
const _hoisted_1$2 = { class: "divide-y divide-gray-200 dark:divide-gray-700 border border-gray-200 dark:border-gray-700 rounded-lg overflow-hidden" };
|
|
1782
|
+
const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
1783
|
+
__name: "Accordion",
|
|
1784
|
+
props: {
|
|
1785
|
+
mode: { default: "single" },
|
|
1786
|
+
defaultOpen: { default: () => [] }
|
|
1787
|
+
},
|
|
1788
|
+
setup(__props) {
|
|
1789
|
+
const props = __props;
|
|
1790
|
+
const openItems = vue.ref(new Set(props.defaultOpen));
|
|
1791
|
+
const toggle = (key) => {
|
|
1792
|
+
if (openItems.value.has(key)) {
|
|
1793
|
+
openItems.value.delete(key);
|
|
1794
|
+
} else {
|
|
1795
|
+
if (props.mode === "single") {
|
|
1796
|
+
openItems.value.clear();
|
|
1797
|
+
}
|
|
1798
|
+
openItems.value.add(key);
|
|
1799
|
+
}
|
|
1800
|
+
openItems.value = new Set(openItems.value);
|
|
1801
|
+
};
|
|
1802
|
+
const isOpen = (key) => openItems.value.has(key);
|
|
1803
|
+
vue.provide("accordion", {
|
|
1804
|
+
toggle,
|
|
1805
|
+
isOpen
|
|
1806
|
+
});
|
|
1807
|
+
return (_ctx, _cache) => {
|
|
1808
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
|
|
1809
|
+
vue.renderSlot(_ctx.$slots, "default")
|
|
1810
|
+
]);
|
|
1811
|
+
};
|
|
1812
|
+
}
|
|
1813
|
+
});
|
|
1814
|
+
const _hoisted_1$1 = ["disabled", "aria-expanded"];
|
|
1815
|
+
const _hoisted_2$1 = { class: "flex items-center gap-2 font-medium" };
|
|
1816
|
+
const _hoisted_3$1 = { class: "overflow-hidden" };
|
|
1817
|
+
const _hoisted_4$1 = { class: "px-4 py-3 bg-gray-50 dark:bg-gray-900 text-gray-700 dark:text-gray-300" };
|
|
1818
|
+
const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
1819
|
+
__name: "AccordionItem",
|
|
1820
|
+
props: {
|
|
1821
|
+
itemKey: {},
|
|
1822
|
+
title: {},
|
|
1823
|
+
icon: {},
|
|
1824
|
+
disabled: { type: Boolean }
|
|
1825
|
+
},
|
|
1826
|
+
setup(__props) {
|
|
1827
|
+
const props = __props;
|
|
1828
|
+
const accordion = vue.inject("accordion");
|
|
1829
|
+
const isOpen = vue.computed(() => (accordion == null ? void 0 : accordion.isOpen(props.itemKey)) ?? false);
|
|
1830
|
+
const toggle = () => {
|
|
1831
|
+
if (!props.disabled) {
|
|
1832
|
+
accordion == null ? void 0 : accordion.toggle(props.itemKey);
|
|
1833
|
+
}
|
|
1834
|
+
};
|
|
1835
|
+
return (_ctx, _cache) => {
|
|
1836
|
+
return vue.openBlock(), vue.createElementBlock("div", null, [
|
|
1837
|
+
vue.createElementVNode("button", {
|
|
1838
|
+
type: "button",
|
|
1839
|
+
class: vue.normalizeClass(["flex items-center justify-between w-full px-4 py-3 text-left transition-colors", [
|
|
1840
|
+
__props.disabled ? "bg-gray-50 text-gray-400 cursor-not-allowed dark:bg-gray-800 dark:text-gray-500" : "bg-white hover:bg-gray-50 text-gray-900 dark:bg-gray-800 dark:hover:bg-gray-700 dark:text-white"
|
|
1841
|
+
]]),
|
|
1842
|
+
disabled: __props.disabled,
|
|
1843
|
+
"aria-expanded": isOpen.value,
|
|
1844
|
+
onClick: toggle
|
|
1845
|
+
}, [
|
|
1846
|
+
vue.createElementVNode("span", _hoisted_2$1, [
|
|
1847
|
+
__props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1848
|
+
key: 0,
|
|
1849
|
+
icon: __props.icon,
|
|
1850
|
+
class: "w-5 h-5"
|
|
1851
|
+
}, null, 8, ["icon"])) : vue.createCommentVNode("", true),
|
|
1852
|
+
vue.createTextVNode(" " + vue.toDisplayString(__props.title), 1)
|
|
1853
|
+
]),
|
|
1854
|
+
vue.createVNode(vue.unref(vue$1.Icon), {
|
|
1855
|
+
icon: "heroicons:chevron-down",
|
|
1856
|
+
class: vue.normalizeClass(["w-5 h-5 transition-transform duration-200", { "rotate-180": isOpen.value }])
|
|
1857
|
+
}, null, 8, ["class"])
|
|
1858
|
+
], 10, _hoisted_1$1),
|
|
1859
|
+
vue.createVNode(vue.Transition, {
|
|
1860
|
+
"enter-active-class": "transition-all duration-200 ease-out",
|
|
1861
|
+
"enter-from-class": "opacity-0 max-h-0",
|
|
1862
|
+
"enter-to-class": "opacity-100 max-h-screen",
|
|
1863
|
+
"leave-active-class": "transition-all duration-150 ease-in",
|
|
1864
|
+
"leave-from-class": "opacity-100 max-h-screen",
|
|
1865
|
+
"leave-to-class": "opacity-0 max-h-0"
|
|
1866
|
+
}, {
|
|
1867
|
+
default: vue.withCtx(() => [
|
|
1868
|
+
vue.withDirectives(vue.createElementVNode("div", _hoisted_3$1, [
|
|
1869
|
+
vue.createElementVNode("div", _hoisted_4$1, [
|
|
1870
|
+
vue.renderSlot(_ctx.$slots, "default")
|
|
1871
|
+
])
|
|
1872
|
+
], 512), [
|
|
1873
|
+
[vue.vShow, isOpen.value]
|
|
1874
|
+
])
|
|
1875
|
+
]),
|
|
1876
|
+
_: 3
|
|
1877
|
+
})
|
|
1878
|
+
]);
|
|
1879
|
+
};
|
|
1880
|
+
}
|
|
1881
|
+
});
|
|
1882
|
+
const _hoisted_1 = {
|
|
1883
|
+
key: 0,
|
|
1884
|
+
class: "relative"
|
|
1885
|
+
};
|
|
1886
|
+
const _hoisted_2 = { class: "flex items-start gap-4" };
|
|
1887
|
+
const _hoisted_3 = { class: "flex-1 min-w-0 pt-0.5" };
|
|
1888
|
+
const _hoisted_4 = { class: "flex items-center justify-between gap-2" };
|
|
1889
|
+
const _hoisted_5 = { class: "text-sm font-medium text-gray-900 dark:text-white" };
|
|
1890
|
+
const _hoisted_6 = {
|
|
1891
|
+
key: 0,
|
|
1892
|
+
class: "text-xs text-gray-500 dark:text-gray-400 whitespace-nowrap"
|
|
1893
|
+
};
|
|
1894
|
+
const _hoisted_7 = {
|
|
1895
|
+
key: 0,
|
|
1896
|
+
class: "mt-1 text-sm text-gray-600 dark:text-gray-400"
|
|
1897
|
+
};
|
|
1898
|
+
const _hoisted_8 = {
|
|
1899
|
+
key: 1,
|
|
1900
|
+
class: "flex items-start overflow-x-auto pb-4"
|
|
1901
|
+
};
|
|
1902
|
+
const _hoisted_9 = { class: "flex items-center w-full" };
|
|
1903
|
+
const _hoisted_10 = { class: "mt-2 text-center max-w-[120px]" };
|
|
1904
|
+
const _hoisted_11 = { class: "text-xs font-medium text-gray-900 dark:text-white" };
|
|
1905
|
+
const _hoisted_12 = {
|
|
1906
|
+
key: 0,
|
|
1907
|
+
class: "text-xs text-gray-500 dark:text-gray-400"
|
|
1908
|
+
};
|
|
1909
|
+
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
1910
|
+
__name: "Timeline",
|
|
1911
|
+
props: {
|
|
1912
|
+
items: {},
|
|
1913
|
+
orientation: { default: "vertical" }
|
|
1914
|
+
},
|
|
1915
|
+
setup(__props) {
|
|
1916
|
+
const getStatusClasses = (status) => {
|
|
1917
|
+
switch (status) {
|
|
1918
|
+
case "completed":
|
|
1919
|
+
return {
|
|
1920
|
+
dot: "bg-green-500",
|
|
1921
|
+
line: "bg-green-500",
|
|
1922
|
+
icon: "text-white"
|
|
1923
|
+
};
|
|
1924
|
+
case "current":
|
|
1925
|
+
return {
|
|
1926
|
+
dot: "bg-primary-500 ring-4 ring-primary-100 dark:ring-primary-900",
|
|
1927
|
+
line: "bg-gray-200 dark:bg-gray-700",
|
|
1928
|
+
icon: "text-white"
|
|
1929
|
+
};
|
|
1930
|
+
case "error":
|
|
1931
|
+
return {
|
|
1932
|
+
dot: "bg-red-500",
|
|
1933
|
+
line: "bg-red-500",
|
|
1934
|
+
icon: "text-white"
|
|
1935
|
+
};
|
|
1936
|
+
default:
|
|
1937
|
+
return {
|
|
1938
|
+
dot: "bg-gray-300 dark:bg-gray-600",
|
|
1939
|
+
line: "bg-gray-200 dark:bg-gray-700",
|
|
1940
|
+
icon: "text-gray-500 dark:text-gray-400"
|
|
1941
|
+
};
|
|
1942
|
+
}
|
|
1943
|
+
};
|
|
1944
|
+
const getDefaultIcon = (status) => {
|
|
1945
|
+
switch (status) {
|
|
1946
|
+
case "completed":
|
|
1947
|
+
return "heroicons:check";
|
|
1948
|
+
case "error":
|
|
1949
|
+
return "heroicons:x-mark";
|
|
1950
|
+
default:
|
|
1951
|
+
return "";
|
|
1952
|
+
}
|
|
1953
|
+
};
|
|
1954
|
+
return (_ctx, _cache) => {
|
|
1955
|
+
return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
1956
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
|
|
1957
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
1958
|
+
key: item.key,
|
|
1959
|
+
class: "relative pb-8 last:pb-0"
|
|
1960
|
+
}, [
|
|
1961
|
+
index < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
1962
|
+
key: 0,
|
|
1963
|
+
class: vue.normalizeClass(["absolute left-4 top-8 w-0.5 h-full -ml-px", getStatusClasses(item.status).line])
|
|
1964
|
+
}, null, 2)) : vue.createCommentVNode("", true),
|
|
1965
|
+
vue.createElementVNode("div", _hoisted_2, [
|
|
1966
|
+
vue.createElementVNode("div", {
|
|
1967
|
+
class: vue.normalizeClass(["relative z-10 flex items-center justify-center w-8 h-8 rounded-full flex-shrink-0", getStatusClasses(item.status).dot])
|
|
1968
|
+
}, [
|
|
1969
|
+
item.icon || getDefaultIcon(item.status) ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1970
|
+
key: 0,
|
|
1971
|
+
icon: item.icon || getDefaultIcon(item.status),
|
|
1972
|
+
class: vue.normalizeClass(["w-4 h-4", getStatusClasses(item.status).icon])
|
|
1973
|
+
}, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
|
|
1974
|
+
], 2),
|
|
1975
|
+
vue.createElementVNode("div", _hoisted_3, [
|
|
1976
|
+
vue.createElementVNode("div", _hoisted_4, [
|
|
1977
|
+
vue.createElementVNode("h3", _hoisted_5, vue.toDisplayString(item.title), 1),
|
|
1978
|
+
item.date ? (vue.openBlock(), vue.createElementBlock("time", _hoisted_6, vue.toDisplayString(item.date), 1)) : vue.createCommentVNode("", true)
|
|
1979
|
+
]),
|
|
1980
|
+
item.description ? (vue.openBlock(), vue.createElementBlock("p", _hoisted_7, vue.toDisplayString(item.description), 1)) : vue.createCommentVNode("", true),
|
|
1981
|
+
vue.renderSlot(_ctx.$slots, item.key, { item })
|
|
1982
|
+
])
|
|
1983
|
+
])
|
|
1984
|
+
]);
|
|
1985
|
+
}), 128))
|
|
1986
|
+
])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
|
|
1987
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index) => {
|
|
1988
|
+
return vue.openBlock(), vue.createElementBlock("div", {
|
|
1989
|
+
key: item.key,
|
|
1990
|
+
class: vue.normalizeClass(["flex flex-col items-center flex-shrink-0", { "flex-1": index < __props.items.length - 1 }])
|
|
1991
|
+
}, [
|
|
1992
|
+
vue.createElementVNode("div", _hoisted_9, [
|
|
1993
|
+
vue.createElementVNode("div", {
|
|
1994
|
+
class: vue.normalizeClass(["relative z-10 flex items-center justify-center w-8 h-8 rounded-full flex-shrink-0", getStatusClasses(item.status).dot])
|
|
1995
|
+
}, [
|
|
1996
|
+
item.icon || getDefaultIcon(item.status) ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1997
|
+
key: 0,
|
|
1998
|
+
icon: item.icon || getDefaultIcon(item.status),
|
|
1999
|
+
class: vue.normalizeClass(["w-4 h-4", getStatusClasses(item.status).icon])
|
|
2000
|
+
}, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
|
|
2001
|
+
], 2),
|
|
2002
|
+
index < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
2003
|
+
key: 0,
|
|
2004
|
+
class: vue.normalizeClass(["flex-1 h-0.5 mx-2", getStatusClasses(item.status).line])
|
|
2005
|
+
}, null, 2)) : vue.createCommentVNode("", true)
|
|
2006
|
+
]),
|
|
2007
|
+
vue.createElementVNode("div", _hoisted_10, [
|
|
2008
|
+
vue.createElementVNode("h3", _hoisted_11, vue.toDisplayString(item.title), 1),
|
|
2009
|
+
item.date ? (vue.openBlock(), vue.createElementBlock("time", _hoisted_12, vue.toDisplayString(item.date), 1)) : vue.createCommentVNode("", true)
|
|
2010
|
+
])
|
|
2011
|
+
], 2);
|
|
2012
|
+
}), 128))
|
|
2013
|
+
]));
|
|
2014
|
+
};
|
|
2015
|
+
}
|
|
2016
|
+
});
|
|
2017
|
+
exports._sfc_main = _sfc_main$i;
|
|
2018
|
+
exports._sfc_main$1 = _sfc_main$h;
|
|
2019
|
+
exports._sfc_main$10 = _sfc_main$8;
|
|
2020
|
+
exports._sfc_main$11 = _sfc_main$7;
|
|
2021
|
+
exports._sfc_main$12 = _sfc_main$6;
|
|
2022
|
+
exports._sfc_main$13 = _sfc_main$5;
|
|
2023
|
+
exports._sfc_main$14 = _sfc_main$4;
|
|
2024
|
+
exports._sfc_main$15 = _sfc_main$3;
|
|
2025
|
+
exports._sfc_main$16 = _sfc_main$2;
|
|
2026
|
+
exports._sfc_main$17 = _sfc_main$1;
|
|
2027
|
+
exports._sfc_main$18 = _sfc_main;
|
|
2028
|
+
exports._sfc_main$2 = _sfc_main$g;
|
|
2029
|
+
exports._sfc_main$3 = _sfc_main$f;
|
|
2030
|
+
exports._sfc_main$4 = _sfc_main$e;
|
|
2031
|
+
exports._sfc_main$5 = _sfc_main$d;
|
|
2032
|
+
exports._sfc_main$6 = _sfc_main$c;
|
|
2033
|
+
exports._sfc_main$7 = _sfc_main$b;
|
|
2034
|
+
exports._sfc_main$8 = _sfc_main$a;
|
|
2035
|
+
exports._sfc_main$9 = _sfc_main$9;
|
|
2036
|
+
//# sourceMappingURL=Timeline.vue_vue_type_script_setup_true_lang-C2Mq4XOO.cjs.map
|