cisse-vue-ui 0.5.21 → 0.5.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-D3_Oddwt.js → Button.vue_vue_type_script_setup_true_lang-CD9QPOeU.js} +114 -10
- package/dist/Button.vue_vue_type_script_setup_true_lang-CD9QPOeU.js.map +1 -0
- package/dist/{ListSkeleton.vue_vue_type_script_setup_true_lang-CrEu33_J.cjs → Button.vue_vue_type_script_setup_true_lang-Cev21KGJ.cjs} +113 -9
- package/dist/Button.vue_vue_type_script_setup_true_lang-Cev21KGJ.cjs.map +1 -0
- package/dist/{RangeSlider.vue_vue_type_script_setup_true_lang-ClH-pyK8.cjs → Combobox.vue_vue_type_script_setup_true_lang-D9TIId4E.cjs} +621 -266
- package/dist/Combobox.vue_vue_type_script_setup_true_lang-D9TIId4E.cjs.map +1 -0
- package/dist/{RangeSlider.vue_vue_type_script_setup_true_lang-B79_S1JL.js → Combobox.vue_vue_type_script_setup_true_lang-DCLKWzhc.js} +595 -240
- package/dist/Combobox.vue_vue_type_script_setup_true_lang-DCLKWzhc.js.map +1 -0
- package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-CsDMGhaT.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-CwHYxBhR.cjs} +290 -128
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-CwHYxBhR.cjs.map +1 -0
- package/dist/{Skeleton.vue_vue_type_script_setup_true_lang-Q4PcIELi.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-Dm4kLAnr.js} +291 -129
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-Dm4kLAnr.js.map +1 -0
- package/dist/{Timeline.vue_vue_type_script_setup_true_lang-C5SKEGPG.cjs → DarkModeToggle.vue_vue_type_script_setup_true_lang-CSxGvdSP.cjs} +192 -408
- package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-CSxGvdSP.cjs.map +1 -0
- package/dist/{Timeline.vue_vue_type_script_setup_true_lang-ykGksWXN.js → DarkModeToggle.vue_vue_type_script_setup_true_lang-D1Q43mhJ.js} +153 -369
- package/dist/DarkModeToggle.vue_vue_type_script_setup_true_lang-D1Q43mhJ.js.map +1 -0
- package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs → Dropdown.vue_vue_type_script_setup_true_lang-DNeh9Gi-.cjs} +32 -15
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DNeh9Gi-.cjs.map +1 -0
- package/dist/{Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js → Dropdown.vue_vue_type_script_setup_true_lang-DXV811zB.js} +32 -15
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DXV811zB.js.map +1 -0
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-D22uNeS1.cjs → PageLayout.vue_vue_type_script_setup_true_lang-C0YzyJnK.cjs} +2 -2
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-D22uNeS1.cjs.map → PageLayout.vue_vue_type_script_setup_true_lang-C0YzyJnK.cjs.map} +1 -1
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-kT7np2ir.js → PageLayout.vue_vue_type_script_setup_true_lang-ClzYGS8h.js} +2 -2
- package/dist/{PageLayout.vue_vue_type_script_setup_true_lang-kT7np2ir.js.map → PageLayout.vue_vue_type_script_setup_true_lang-ClzYGS8h.js.map} +1 -1
- package/dist/components/core/AccordionItem.vue.d.ts +2 -0
- 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/Dropdown.vue.d.ts +2 -0
- package/dist/components/core/Popover.vue.d.ts +2 -0
- package/dist/components/core/Tooltip.vue.d.ts +2 -0
- package/dist/components/core/index.cjs +23 -21
- package/dist/components/core/index.cjs.map +1 -1
- package/dist/components/core/index.d.ts +2 -0
- package/dist/components/core/index.js +17 -15
- package/dist/components/core/index.js.map +1 -1
- package/dist/components/core/index.test.d.ts +1 -0
- 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/LoadingSpinner.vue.d.ts +6 -1
- package/dist/components/feedback/Modal.vue.d.ts +18 -3
- package/dist/components/feedback/Progress.vue.d.ts +1 -1
- package/dist/components/feedback/index.cjs +17 -16
- 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 -5
- package/dist/components/feedback/index.test.d.ts +1 -0
- package/dist/components/form/Checkbox.vue.d.ts +2 -0
- 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/DatePicker.vue.d.ts +2 -0
- package/dist/components/form/FormHelp.vue.d.ts +2 -0
- package/dist/components/form/Switch.vue.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/form/index.test.d.ts +1 -0
- package/dist/components/index.cjs +57 -54
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +35 -32
- package/dist/components/index.test.d.ts +1 -0
- package/dist/components/layout/index.cjs +1 -1
- package/dist/components/layout/index.js +1 -1
- package/dist/components/layout/index.test.d.ts +1 -0
- package/dist/components/type/index.test.d.ts +1 -0
- package/dist/composables/index.cjs +9 -2
- package/dist/composables/index.cjs.map +1 -1
- package/dist/composables/index.d.ts +2 -0
- package/dist/composables/index.js +15 -8
- package/dist/composables/index.js.map +1 -1
- package/dist/composables/index.test.d.ts +1 -0
- package/dist/composables/useDarkMode.test.d.ts +1 -0
- package/dist/composables/useDropdown.test.d.ts +1 -0
- package/dist/composables/useExportCSV.test.d.ts +1 -0
- package/dist/composables/useFocusTrap.d.ts +41 -0
- package/dist/composables/useFocusTrap.test.d.ts +1 -0
- package/dist/composables/useId.d.ts +42 -0
- package/dist/composables/useId.test.d.ts +1 -0
- package/dist/composables/useModal.d.ts +1 -1
- package/dist/composables/useModal.test.d.ts +1 -0
- package/dist/index-BMoLBt6A.js +75 -0
- package/dist/index-BMoLBt6A.js.map +1 -0
- package/dist/index-CJwlO351.js +347 -0
- package/dist/index-CJwlO351.js.map +1 -0
- package/dist/index-CUNU12xk.cjs +346 -0
- package/dist/index-CUNU12xk.cjs.map +1 -0
- package/dist/index-DwFvFW-3.cjs +74 -0
- package/dist/index-DwFvFW-3.cjs.map +1 -0
- package/dist/index.cjs +67 -57
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +51 -41
- package/dist/index.js.map +1 -1
- package/dist/index.test.d.ts +1 -0
- package/dist/style.css +1 -1
- package/dist/types/form.d.ts +4 -0
- package/dist/types/index.test.d.ts +1 -0
- 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/useFocusTrap-AnlJsihM.js +120 -0
- package/dist/useFocusTrap-AnlJsihM.js.map +1 -0
- package/dist/useFocusTrap-kcxO8AeU.cjs +119 -0
- package/dist/useFocusTrap-kcxO8AeU.cjs.map +1 -0
- package/dist/useId-nxrBaIC9.cjs +25 -0
- package/dist/useId-nxrBaIC9.cjs.map +1 -0
- package/dist/useId-xeHj7rkg.js +26 -0
- package/dist/useId-xeHj7rkg.js.map +1 -0
- 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 +9 -8
- 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/Dropdown.vue_vue_type_script_setup_true_lang-C3pr8BwC.js.map +0 -1
- package/dist/Dropdown.vue_vue_type_script_setup_true_lang-DKxcVBKu.cjs.map +0 -1
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-CrEu33_J.cjs.map +0 -1
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-D3_Oddwt.js.map +0 -1
- package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-B79_S1JL.js.map +0 -1
- package/dist/RangeSlider.vue_vue_type_script_setup_true_lang-ClH-pyK8.cjs.map +0 -1
- package/dist/Skeleton.vue_vue_type_script_setup_true_lang-CsDMGhaT.cjs.map +0 -1
- package/dist/Skeleton.vue_vue_type_script_setup_true_lang-Q4PcIELi.js.map +0 -1
- package/dist/Timeline.vue_vue_type_script_setup_true_lang-C5SKEGPG.cjs.map +0 -1
- package/dist/Timeline.vue_vue_type_script_setup_true_lang-ykGksWXN.js.map +0 -1
- package/dist/index-C3NAM2ds.js +0 -72
- package/dist/index-C3NAM2ds.js.map +0 -1
- package/dist/index-Ti1RIOEG.cjs +0 -71
- package/dist/index-Ti1RIOEG.cjs.map +0 -1
- package/dist/useToast-CRh_sG82.cjs.map +0 -1
- package/dist/useToast-DwFOkewC.js.map +0 -1
|
@@ -1,15 +1,17 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
const vue = require("vue");
|
|
3
|
-
const
|
|
4
|
-
const
|
|
3
|
+
const index = require("./index-CUNU12xk.cjs");
|
|
4
|
+
const Button_vue_vue_type_script_setup_true_lang = require("./Button.vue_vue_type_script_setup_true_lang-Cev21KGJ.cjs");
|
|
5
5
|
const BadgeType_vue_vue_type_script_setup_true_lang = require("./BadgeType.vue_vue_type_script_setup_true_lang-CJb63H1I.cjs");
|
|
6
6
|
const vue$1 = require("@iconify/vue");
|
|
7
7
|
const useDropdown = require("./useDropdown-DHFnd259.cjs");
|
|
8
|
-
const
|
|
8
|
+
const useId = require("./useId-nxrBaIC9.cjs");
|
|
9
|
+
const useDarkMode = require("./useDarkMode-DLZcJEUQ.cjs");
|
|
10
|
+
const _hoisted_1$f = {
|
|
9
11
|
key: 1,
|
|
10
12
|
class: "flex flex-col overflow-hidden rounded-lg bg-white shadow-md dark:bg-slate-950"
|
|
11
13
|
};
|
|
12
|
-
const _hoisted_2$
|
|
14
|
+
const _hoisted_2$c = { class: "flex flex-col gap-0.5" };
|
|
13
15
|
const _hoisted_3$7 = {
|
|
14
16
|
key: 1,
|
|
15
17
|
class: "text-sm font-normal text-gray-600 dark:text-gray-400"
|
|
@@ -36,12 +38,12 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
36
38
|
() => props.dividerClass || "border-gray-200 dark:border-gray-700"
|
|
37
39
|
);
|
|
38
40
|
return (_ctx, _cache) => {
|
|
39
|
-
return __props.loading ? (vue.openBlock(), vue.createBlock(
|
|
41
|
+
return __props.loading ? (vue.openBlock(), vue.createBlock(Button_vue_vue_type_script_setup_true_lang._sfc_main$2, {
|
|
40
42
|
key: 0,
|
|
41
43
|
lines: __props.loadingLines,
|
|
42
44
|
"show-avatar": __props.loadingAvatar,
|
|
43
45
|
"show-actions": __props.loadingActions
|
|
44
|
-
}, null, 8, ["lines", "show-avatar", "show-actions"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
46
|
+
}, null, 8, ["lines", "show-avatar", "show-actions"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$f, [
|
|
45
47
|
_ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
46
48
|
key: 0,
|
|
47
49
|
class: vue.normalizeClass(["border-b", dividerClasses.value])
|
|
@@ -51,7 +53,7 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
51
53
|
key: 1,
|
|
52
54
|
class: vue.normalizeClass(["flex items-center justify-between border-b px-5 py-3", dividerClasses.value])
|
|
53
55
|
}, [
|
|
54
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
56
|
+
vue.createElementVNode("div", _hoisted_2$c, [
|
|
55
57
|
__props.title || _ctx.$slots.title ? (vue.openBlock(), vue.createElementBlock("span", {
|
|
56
58
|
key: 0,
|
|
57
59
|
class: vue.normalizeClass(["text-md font-semibold", titleClasses.value])
|
|
@@ -75,8 +77,8 @@ const _sfc_main$i = /* @__PURE__ */ vue.defineComponent({
|
|
|
75
77
|
};
|
|
76
78
|
}
|
|
77
79
|
});
|
|
78
|
-
const _hoisted_1$
|
|
79
|
-
const _hoisted_2$
|
|
80
|
+
const _hoisted_1$e = { class: "overflow-hidden" };
|
|
81
|
+
const _hoisted_2$b = {
|
|
80
82
|
key: 1,
|
|
81
83
|
class: "overflow-x-auto"
|
|
82
84
|
};
|
|
@@ -210,17 +212,17 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
210
212
|
return props.sortBy === property.name;
|
|
211
213
|
};
|
|
212
214
|
return (_ctx, _cache) => {
|
|
213
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
214
|
-
__props.loading ? (vue.openBlock(), vue.createBlock(
|
|
215
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$e, [
|
|
216
|
+
__props.loading ? (vue.openBlock(), vue.createBlock(Button_vue_vue_type_script_setup_true_lang._sfc_main$1, {
|
|
215
217
|
key: 0,
|
|
216
218
|
rows: __props.loadingRows,
|
|
217
219
|
columns: visibleProperties.value.length
|
|
218
|
-
}, null, 8, ["rows", "columns"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$
|
|
220
|
+
}, null, 8, ["rows", "columns"])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$b, [
|
|
219
221
|
vue.createElementVNode("table", _hoisted_3$6, [
|
|
220
222
|
vue.createElementVNode("thead", _hoisted_4$5, [
|
|
221
223
|
vue.createElementVNode("tr", null, [
|
|
222
224
|
__props.selectable ? (vue.openBlock(), vue.createElementBlock("th", _hoisted_5$3, [
|
|
223
|
-
vue.createVNode(
|
|
225
|
+
vue.createVNode(index._sfc_main, {
|
|
224
226
|
"model-value": allSelected.value,
|
|
225
227
|
indeterminate: someSelected.value,
|
|
226
228
|
disabled: selectableItems.value.length === 0,
|
|
@@ -279,7 +281,7 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
279
281
|
class: vue.normalizeClass(["hover:bg-black/5 dark:hover:bg-white/5 transition-colors", { "bg-primary/5 dark:bg-primary/10": isSelected(item) }])
|
|
280
282
|
}, [
|
|
281
283
|
__props.selectable ? (vue.openBlock(), vue.createElementBlock("td", _hoisted_11$1, [
|
|
282
|
-
isSelectable(item) ? (vue.openBlock(), vue.createBlock(
|
|
284
|
+
isSelectable(item) ? (vue.openBlock(), vue.createBlock(index._sfc_main, {
|
|
283
285
|
key: 0,
|
|
284
286
|
"model-value": isSelected(item),
|
|
285
287
|
"onUpdate:modelValue": ($event) => handleSelect(item)
|
|
@@ -321,8 +323,8 @@ const _sfc_main$h = /* @__PURE__ */ vue.defineComponent({
|
|
|
321
323
|
};
|
|
322
324
|
}
|
|
323
325
|
});
|
|
324
|
-
const _hoisted_1$
|
|
325
|
-
const _hoisted_2$
|
|
326
|
+
const _hoisted_1$d = { class: "space-y-3" };
|
|
327
|
+
const _hoisted_2$a = { class: "flex items-center gap-3 p-3" };
|
|
326
328
|
const _hoisted_3$5 = { class: "text-sm text-gray-600 dark:text-gray-400" };
|
|
327
329
|
const _hoisted_4$4 = {
|
|
328
330
|
key: 0,
|
|
@@ -389,10 +391,10 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
|
|
|
389
391
|
};
|
|
390
392
|
const hasEmptySlot = vue.computed(() => !!slots.empty);
|
|
391
393
|
return (_ctx, _cache) => {
|
|
392
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
394
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$d, [
|
|
393
395
|
__props.loading ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
|
|
394
396
|
default: vue.withCtx(() => [
|
|
395
|
-
vue.createVNode(
|
|
397
|
+
vue.createVNode(Button_vue_vue_type_script_setup_true_lang._sfc_main$3, {
|
|
396
398
|
items: __props.loadingItems,
|
|
397
399
|
"show-avatar": "",
|
|
398
400
|
"show-secondary": "",
|
|
@@ -403,8 +405,8 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
|
|
|
403
405
|
})) : (vue.openBlock(), vue.createElementBlock(vue.Fragment, { key: 1 }, [
|
|
404
406
|
__props.selectable && selectableItems.value.length > 0 ? (vue.openBlock(), vue.createBlock(_sfc_main$i, { key: 0 }, {
|
|
405
407
|
default: vue.withCtx(() => [
|
|
406
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
407
|
-
vue.createVNode(
|
|
408
|
+
vue.createElementVNode("div", _hoisted_2$a, [
|
|
409
|
+
vue.createVNode(index._sfc_main, {
|
|
408
410
|
"model-value": allSelected.value,
|
|
409
411
|
indeterminate: someSelected.value,
|
|
410
412
|
"onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("selectAll"))
|
|
@@ -425,7 +427,7 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
|
|
|
425
427
|
default: vue.withCtx(() => [
|
|
426
428
|
vue.createElementVNode("div", _hoisted_5$2, [
|
|
427
429
|
__props.selectable ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_6$2, [
|
|
428
|
-
isSelectable(item) ? (vue.openBlock(), vue.createBlock(
|
|
430
|
+
isSelectable(item) ? (vue.openBlock(), vue.createBlock(index._sfc_main, {
|
|
429
431
|
key: 0,
|
|
430
432
|
"model-value": isSelected(item),
|
|
431
433
|
"onUpdate:modelValue": ($event) => handleSelect(item)
|
|
@@ -451,207 +453,6 @@ const _sfc_main$g = /* @__PURE__ */ vue.defineComponent({
|
|
|
451
453
|
};
|
|
452
454
|
}
|
|
453
455
|
});
|
|
454
|
-
const localProvidedStateMap = /* @__PURE__ */ new WeakMap();
|
|
455
|
-
const injectLocal = /* @__NO_SIDE_EFFECTS__ */ (...args) => {
|
|
456
|
-
var _getCurrentInstance;
|
|
457
|
-
const key = args[0];
|
|
458
|
-
const instance = (_getCurrentInstance = vue.getCurrentInstance()) === null || _getCurrentInstance === void 0 ? void 0 : _getCurrentInstance.proxy;
|
|
459
|
-
const owner = instance !== null && instance !== void 0 ? instance : vue.getCurrentScope();
|
|
460
|
-
if (owner == null && !vue.hasInjectionContext()) throw new Error("injectLocal must be called in setup");
|
|
461
|
-
if (owner && localProvidedStateMap.has(owner) && key in localProvidedStateMap.get(owner)) return localProvidedStateMap.get(owner)[key];
|
|
462
|
-
return vue.inject(...args);
|
|
463
|
-
};
|
|
464
|
-
const isClient = typeof window !== "undefined" && typeof document !== "undefined";
|
|
465
|
-
typeof WorkerGlobalScope !== "undefined" && globalThis instanceof WorkerGlobalScope;
|
|
466
|
-
const toString = Object.prototype.toString;
|
|
467
|
-
const isObject = (val) => toString.call(val) === "[object Object]";
|
|
468
|
-
function increaseWithUnit(target, delta) {
|
|
469
|
-
var _target$match;
|
|
470
|
-
if (typeof target === "number") return target + delta;
|
|
471
|
-
const value = ((_target$match = target.match(/^-?\d+\.?\d*/)) === null || _target$match === void 0 ? void 0 : _target$match[0]) || "";
|
|
472
|
-
const unit = target.slice(value.length);
|
|
473
|
-
const result = Number.parseFloat(value) + delta;
|
|
474
|
-
if (Number.isNaN(result)) return target;
|
|
475
|
-
return result + unit;
|
|
476
|
-
}
|
|
477
|
-
function pxValue(px) {
|
|
478
|
-
return px.endsWith("rem") ? Number.parseFloat(px) * 16 : Number.parseFloat(px);
|
|
479
|
-
}
|
|
480
|
-
function toArray(value) {
|
|
481
|
-
return Array.isArray(value) ? value : [value];
|
|
482
|
-
}
|
|
483
|
-
function getLifeCycleTarget(target) {
|
|
484
|
-
return vue.getCurrentInstance();
|
|
485
|
-
}
|
|
486
|
-
function tryOnMounted(fn, sync = true, target) {
|
|
487
|
-
if (getLifeCycleTarget()) vue.onMounted(fn, target);
|
|
488
|
-
else if (sync) fn();
|
|
489
|
-
else vue.nextTick(fn);
|
|
490
|
-
}
|
|
491
|
-
function watchImmediate(source, cb, options) {
|
|
492
|
-
return vue.watch(source, cb, {
|
|
493
|
-
...options,
|
|
494
|
-
immediate: true
|
|
495
|
-
});
|
|
496
|
-
}
|
|
497
|
-
const defaultWindow = isClient ? window : void 0;
|
|
498
|
-
function unrefElement(elRef) {
|
|
499
|
-
var _$el;
|
|
500
|
-
const plain = vue.toValue(elRef);
|
|
501
|
-
return (_$el = plain === null || plain === void 0 ? void 0 : plain.$el) !== null && _$el !== void 0 ? _$el : plain;
|
|
502
|
-
}
|
|
503
|
-
function useEventListener(...args) {
|
|
504
|
-
const register = (el, event, listener, options) => {
|
|
505
|
-
el.addEventListener(event, listener, options);
|
|
506
|
-
return () => el.removeEventListener(event, listener, options);
|
|
507
|
-
};
|
|
508
|
-
const firstParamTargets = vue.computed(() => {
|
|
509
|
-
const test = toArray(vue.toValue(args[0])).filter((e) => e != null);
|
|
510
|
-
return test.every((e) => typeof e !== "string") ? test : void 0;
|
|
511
|
-
});
|
|
512
|
-
return watchImmediate(() => {
|
|
513
|
-
var _firstParamTargets$va, _firstParamTargets$va2;
|
|
514
|
-
return [
|
|
515
|
-
(_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),
|
|
516
|
-
toArray(vue.toValue(firstParamTargets.value ? args[1] : args[0])),
|
|
517
|
-
toArray(vue.unref(firstParamTargets.value ? args[2] : args[1])),
|
|
518
|
-
vue.toValue(firstParamTargets.value ? args[3] : args[2])
|
|
519
|
-
];
|
|
520
|
-
}, ([raw_targets, raw_events, raw_listeners, raw_options], _, onCleanup) => {
|
|
521
|
-
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;
|
|
522
|
-
const optionsClone = isObject(raw_options) ? { ...raw_options } : raw_options;
|
|
523
|
-
const cleanups = raw_targets.flatMap((el) => raw_events.flatMap((event) => raw_listeners.map((listener) => register(el, event, listener, optionsClone))));
|
|
524
|
-
onCleanup(() => {
|
|
525
|
-
cleanups.forEach((fn) => fn());
|
|
526
|
-
});
|
|
527
|
-
}, { flush: "post" });
|
|
528
|
-
}
|
|
529
|
-
// @__NO_SIDE_EFFECTS__
|
|
530
|
-
function useMounted() {
|
|
531
|
-
const isMounted = vue.shallowRef(false);
|
|
532
|
-
const instance = vue.getCurrentInstance();
|
|
533
|
-
if (instance) vue.onMounted(() => {
|
|
534
|
-
isMounted.value = true;
|
|
535
|
-
}, instance);
|
|
536
|
-
return isMounted;
|
|
537
|
-
}
|
|
538
|
-
// @__NO_SIDE_EFFECTS__
|
|
539
|
-
function useSupported(callback) {
|
|
540
|
-
const isMounted = /* @__PURE__ */ useMounted();
|
|
541
|
-
return vue.computed(() => {
|
|
542
|
-
isMounted.value;
|
|
543
|
-
return Boolean(callback());
|
|
544
|
-
});
|
|
545
|
-
}
|
|
546
|
-
const ssrWidthSymbol = Symbol("vueuse-ssr-width");
|
|
547
|
-
// @__NO_SIDE_EFFECTS__
|
|
548
|
-
function useSSRWidth() {
|
|
549
|
-
const ssrWidth = vue.hasInjectionContext() ? /* @__PURE__ */ injectLocal(ssrWidthSymbol, null) : null;
|
|
550
|
-
return typeof ssrWidth === "number" ? ssrWidth : void 0;
|
|
551
|
-
}
|
|
552
|
-
function useMediaQuery(query, options = {}) {
|
|
553
|
-
const { window: window$1 = defaultWindow, ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;
|
|
554
|
-
const isSupported = /* @__PURE__ */ useSupported(() => window$1 && "matchMedia" in window$1 && typeof window$1.matchMedia === "function");
|
|
555
|
-
const ssrSupport = vue.shallowRef(typeof ssrWidth === "number");
|
|
556
|
-
const mediaQuery = vue.shallowRef();
|
|
557
|
-
const matches = vue.shallowRef(false);
|
|
558
|
-
const handler = (event) => {
|
|
559
|
-
matches.value = event.matches;
|
|
560
|
-
};
|
|
561
|
-
vue.watchEffect(() => {
|
|
562
|
-
if (ssrSupport.value) {
|
|
563
|
-
ssrSupport.value = !isSupported.value;
|
|
564
|
-
matches.value = vue.toValue(query).split(",").some((queryString) => {
|
|
565
|
-
const not = queryString.includes("not all");
|
|
566
|
-
const minWidth = queryString.match(/\(\s*min-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);
|
|
567
|
-
const maxWidth = queryString.match(/\(\s*max-width:\s*(-?\d+(?:\.\d*)?[a-z]+\s*)\)/);
|
|
568
|
-
let res = Boolean(minWidth || maxWidth);
|
|
569
|
-
if (minWidth && res) res = ssrWidth >= pxValue(minWidth[1]);
|
|
570
|
-
if (maxWidth && res) res = ssrWidth <= pxValue(maxWidth[1]);
|
|
571
|
-
return not ? !res : res;
|
|
572
|
-
});
|
|
573
|
-
return;
|
|
574
|
-
}
|
|
575
|
-
if (!isSupported.value) return;
|
|
576
|
-
mediaQuery.value = window$1.matchMedia(vue.toValue(query));
|
|
577
|
-
matches.value = mediaQuery.value.matches;
|
|
578
|
-
});
|
|
579
|
-
useEventListener(mediaQuery, "change", handler, { passive: true });
|
|
580
|
-
return vue.computed(() => matches.value);
|
|
581
|
-
}
|
|
582
|
-
// @__NO_SIDE_EFFECTS__
|
|
583
|
-
function useBreakpoints(breakpoints, options = {}) {
|
|
584
|
-
function getValue$1(k, delta) {
|
|
585
|
-
let v = vue.toValue(breakpoints[vue.toValue(k)]);
|
|
586
|
-
if (delta != null) v = increaseWithUnit(v, delta);
|
|
587
|
-
if (typeof v === "number") v = `${v}px`;
|
|
588
|
-
return v;
|
|
589
|
-
}
|
|
590
|
-
const { window: window$1 = defaultWindow, strategy = "min-width", ssrWidth = /* @__PURE__ */ useSSRWidth() } = options;
|
|
591
|
-
const ssrSupport = typeof ssrWidth === "number";
|
|
592
|
-
const mounted = ssrSupport ? vue.shallowRef(false) : { value: true };
|
|
593
|
-
if (ssrSupport) tryOnMounted(() => mounted.value = !!window$1);
|
|
594
|
-
function match(query, size) {
|
|
595
|
-
if (!mounted.value && ssrSupport) return query === "min" ? ssrWidth >= pxValue(size) : ssrWidth <= pxValue(size);
|
|
596
|
-
if (!window$1) return false;
|
|
597
|
-
return window$1.matchMedia(`(${query}-width: ${size})`).matches;
|
|
598
|
-
}
|
|
599
|
-
const greaterOrEqual = (k) => {
|
|
600
|
-
return useMediaQuery(() => `(min-width: ${getValue$1(k)})`, options);
|
|
601
|
-
};
|
|
602
|
-
const smallerOrEqual = (k) => {
|
|
603
|
-
return useMediaQuery(() => `(max-width: ${getValue$1(k)})`, options);
|
|
604
|
-
};
|
|
605
|
-
const shortcutMethods = Object.keys(breakpoints).reduce((shortcuts, k) => {
|
|
606
|
-
Object.defineProperty(shortcuts, k, {
|
|
607
|
-
get: () => strategy === "min-width" ? greaterOrEqual(k) : smallerOrEqual(k),
|
|
608
|
-
enumerable: true,
|
|
609
|
-
configurable: true
|
|
610
|
-
});
|
|
611
|
-
return shortcuts;
|
|
612
|
-
}, {});
|
|
613
|
-
function current() {
|
|
614
|
-
const points = Object.keys(breakpoints).map((k) => [
|
|
615
|
-
k,
|
|
616
|
-
shortcutMethods[k],
|
|
617
|
-
pxValue(getValue$1(k))
|
|
618
|
-
]).sort((a, b) => a[2] - b[2]);
|
|
619
|
-
return vue.computed(() => points.filter(([, v]) => v.value).map(([k]) => k));
|
|
620
|
-
}
|
|
621
|
-
return Object.assign(shortcutMethods, {
|
|
622
|
-
greaterOrEqual,
|
|
623
|
-
smallerOrEqual,
|
|
624
|
-
greater(k) {
|
|
625
|
-
return useMediaQuery(() => `(min-width: ${getValue$1(k, 0.1)})`, options);
|
|
626
|
-
},
|
|
627
|
-
smaller(k) {
|
|
628
|
-
return useMediaQuery(() => `(max-width: ${getValue$1(k, -0.1)})`, options);
|
|
629
|
-
},
|
|
630
|
-
between(a, b) {
|
|
631
|
-
return useMediaQuery(() => `(min-width: ${getValue$1(a)}) and (max-width: ${getValue$1(b, -0.1)})`, options);
|
|
632
|
-
},
|
|
633
|
-
isGreater(k) {
|
|
634
|
-
return match("min", getValue$1(k, 0.1));
|
|
635
|
-
},
|
|
636
|
-
isGreaterOrEqual(k) {
|
|
637
|
-
return match("min", getValue$1(k));
|
|
638
|
-
},
|
|
639
|
-
isSmaller(k) {
|
|
640
|
-
return match("max", getValue$1(k, -0.1));
|
|
641
|
-
},
|
|
642
|
-
isSmallerOrEqual(k) {
|
|
643
|
-
return match("max", getValue$1(k));
|
|
644
|
-
},
|
|
645
|
-
isInBetween(a, b) {
|
|
646
|
-
return match("min", getValue$1(a)) && match("max", getValue$1(b, -0.1));
|
|
647
|
-
},
|
|
648
|
-
current,
|
|
649
|
-
active() {
|
|
650
|
-
const bps = current();
|
|
651
|
-
return vue.computed(() => bps.value.length === 0 ? "" : bps.value.at(strategy === "min-width" ? -1 : 0));
|
|
652
|
-
}
|
|
653
|
-
});
|
|
654
|
-
}
|
|
655
456
|
const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
656
457
|
__name: "ResponsiveList",
|
|
657
458
|
props: {
|
|
@@ -701,7 +502,7 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
701
502
|
return !!slots[`cell-${key}`];
|
|
702
503
|
};
|
|
703
504
|
const hasActionsSlot = vue.computed(() => !!slots.actions);
|
|
704
|
-
const breakpoints =
|
|
505
|
+
const breakpoints = index.useBreakpoints({
|
|
705
506
|
sm: 640,
|
|
706
507
|
md: 768,
|
|
707
508
|
lg: 1024,
|
|
@@ -789,11 +590,11 @@ const _sfc_main$f = /* @__PURE__ */ vue.defineComponent({
|
|
|
789
590
|
};
|
|
790
591
|
}
|
|
791
592
|
});
|
|
792
|
-
const _hoisted_1$
|
|
593
|
+
const _hoisted_1$c = {
|
|
793
594
|
key: 0,
|
|
794
595
|
class: "mb-2 block text-sm font-medium text-gray-700 dark:text-gray-300"
|
|
795
596
|
};
|
|
796
|
-
const _hoisted_2$
|
|
597
|
+
const _hoisted_2$9 = { class: "relative" };
|
|
797
598
|
const _hoisted_3$4 = ["disabled", "placeholder"];
|
|
798
599
|
const _hoisted_4$3 = ["disabled"];
|
|
799
600
|
const _hoisted_5$1 = {
|
|
@@ -893,9 +694,9 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
|
|
|
893
694
|
const handleKeydown = (event) => {
|
|
894
695
|
baseHandleKeydown(event, {
|
|
895
696
|
itemCount: filteredOptions.value.length,
|
|
896
|
-
onSelect: (
|
|
897
|
-
if (filteredOptions.value[
|
|
898
|
-
selectOption(filteredOptions.value[
|
|
697
|
+
onSelect: (index2) => {
|
|
698
|
+
if (filteredOptions.value[index2]) {
|
|
699
|
+
selectOption(filteredOptions.value[index2]);
|
|
899
700
|
}
|
|
900
701
|
}
|
|
901
702
|
});
|
|
@@ -909,8 +710,8 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
|
|
|
909
710
|
ref: containerRef,
|
|
910
711
|
class: "autocomplete-container"
|
|
911
712
|
}, [
|
|
912
|
-
__props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$
|
|
913
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
713
|
+
__props.label ? (vue.openBlock(), vue.createElementBlock("label", _hoisted_1$c, vue.toDisplayString(__props.label), 1)) : vue.createCommentVNode("", true),
|
|
714
|
+
vue.createElementVNode("div", _hoisted_2$9, [
|
|
914
715
|
vue.createElementVNode("div", {
|
|
915
716
|
ref_key: "inputWrapperRef",
|
|
916
717
|
ref: inputWrapperRef,
|
|
@@ -985,14 +786,14 @@ const _sfc_main$e = /* @__PURE__ */ vue.defineComponent({
|
|
|
985
786
|
])
|
|
986
787
|
}, [
|
|
987
788
|
filteredOptions.value.length === 0 ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_5$1, vue.toDisplayString(__props.noResultsText || "No results found"), 1)) : vue.createCommentVNode("", true),
|
|
988
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredOptions.value, (option,
|
|
789
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(filteredOptions.value, (option, index2) => {
|
|
989
790
|
return vue.openBlock(), vue.createElementBlock("button", {
|
|
990
791
|
key: option.value,
|
|
991
792
|
class: vue.normalizeClass([{
|
|
992
|
-
"bg-gray-100 dark:bg-gray-700": vue.unref(highlightedIndex) ===
|
|
793
|
+
"bg-gray-100 dark:bg-gray-700": vue.unref(highlightedIndex) === index2,
|
|
993
794
|
"bg-primary/10": __props.modelValue === option.value
|
|
994
795
|
}, "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"]),
|
|
995
|
-
"data-index":
|
|
796
|
+
"data-index": index2,
|
|
996
797
|
type: "button",
|
|
997
798
|
onClick: ($event) => selectOption(option)
|
|
998
799
|
}, [
|
|
@@ -1085,103 +886,10 @@ const _sfc_main$d = /* @__PURE__ */ vue.defineComponent({
|
|
|
1085
886
|
};
|
|
1086
887
|
}
|
|
1087
888
|
});
|
|
1088
|
-
const
|
|
1089
|
-
|
|
1090
|
-
props: {
|
|
1091
|
-
variant: { default: "primary" },
|
|
1092
|
-
size: { default: "md" },
|
|
1093
|
-
icon: {},
|
|
1094
|
-
iconRight: {},
|
|
1095
|
-
loading: { type: Boolean },
|
|
1096
|
-
disabled: { type: Boolean },
|
|
1097
|
-
block: { type: Boolean },
|
|
1098
|
-
href: {},
|
|
1099
|
-
to: {},
|
|
1100
|
-
type: { default: "button" }
|
|
1101
|
-
},
|
|
1102
|
-
emits: ["click"],
|
|
1103
|
-
setup(__props, { emit: __emit }) {
|
|
1104
|
-
const props = __props;
|
|
1105
|
-
const emit = __emit;
|
|
1106
|
-
const variantClasses = {
|
|
1107
|
-
primary: "bg-primary text-primary-foreground hover:bg-primary/90 focus:ring-primary",
|
|
1108
|
-
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/90 focus:ring-secondary",
|
|
1109
|
-
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",
|
|
1110
|
-
ghost: "bg-transparent text-gray-700 hover:bg-gray-100 focus:ring-primary dark:text-gray-300 dark:hover:bg-gray-800",
|
|
1111
|
-
danger: "bg-red-500 text-white hover:bg-red-600 focus:ring-red-500",
|
|
1112
|
-
success: "bg-green-500 text-white hover:bg-green-600 focus:ring-green-500"
|
|
1113
|
-
};
|
|
1114
|
-
const sizeClasses = {
|
|
1115
|
-
xs: "px-2 py-1 text-xs gap-1",
|
|
1116
|
-
sm: "px-3 py-1.5 text-sm gap-1.5",
|
|
1117
|
-
md: "px-4 py-2 text-sm gap-2",
|
|
1118
|
-
lg: "px-5 py-2.5 text-base gap-2",
|
|
1119
|
-
xl: "px-6 py-3 text-lg gap-2.5"
|
|
1120
|
-
};
|
|
1121
|
-
const iconSizeClasses = {
|
|
1122
|
-
xs: "size-3",
|
|
1123
|
-
sm: "size-4",
|
|
1124
|
-
md: "size-4",
|
|
1125
|
-
lg: "size-5",
|
|
1126
|
-
xl: "size-6"
|
|
1127
|
-
};
|
|
1128
|
-
const classes = vue.computed(() => [
|
|
1129
|
-
"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",
|
|
1130
|
-
variantClasses[props.variant],
|
|
1131
|
-
sizeClasses[props.size],
|
|
1132
|
-
props.block && "w-full"
|
|
1133
|
-
]);
|
|
1134
|
-
const component = vue.computed(() => {
|
|
1135
|
-
if (props.to) {
|
|
1136
|
-
try {
|
|
1137
|
-
const RouterLink = vue.resolveComponent("RouterLink");
|
|
1138
|
-
if (typeof RouterLink !== "string") return RouterLink;
|
|
1139
|
-
} catch {
|
|
1140
|
-
}
|
|
1141
|
-
}
|
|
1142
|
-
if (props.href) return "a";
|
|
1143
|
-
return "button";
|
|
1144
|
-
});
|
|
1145
|
-
const componentProps = vue.computed(() => {
|
|
1146
|
-
if (props.to) return { to: props.to };
|
|
1147
|
-
if (props.href) return { href: props.href };
|
|
1148
|
-
return { type: props.type, disabled: props.disabled || props.loading };
|
|
1149
|
-
});
|
|
1150
|
-
const handleClick = (event) => {
|
|
1151
|
-
if (props.disabled || props.loading) return;
|
|
1152
|
-
emit("click", event);
|
|
1153
|
-
};
|
|
1154
|
-
return (_ctx, _cache) => {
|
|
1155
|
-
return vue.openBlock(), vue.createBlock(vue.resolveDynamicComponent(component.value), vue.mergeProps(componentProps.value, {
|
|
1156
|
-
class: classes.value,
|
|
1157
|
-
onClick: handleClick
|
|
1158
|
-
}), {
|
|
1159
|
-
default: vue.withCtx(() => [
|
|
1160
|
-
__props.loading ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1161
|
-
key: 0,
|
|
1162
|
-
icon: "lucide:loader-2",
|
|
1163
|
-
class: vue.normalizeClass([iconSizeClasses[__props.size], "animate-spin"])
|
|
1164
|
-
}, null, 8, ["class"])) : __props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1165
|
-
key: 1,
|
|
1166
|
-
icon: __props.icon,
|
|
1167
|
-
class: vue.normalizeClass(iconSizeClasses[__props.size])
|
|
1168
|
-
}, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true),
|
|
1169
|
-
vue.renderSlot(_ctx.$slots, "default"),
|
|
1170
|
-
__props.iconRight && !__props.loading ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1171
|
-
key: 2,
|
|
1172
|
-
icon: __props.iconRight,
|
|
1173
|
-
class: vue.normalizeClass(iconSizeClasses[__props.size])
|
|
1174
|
-
}, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
|
|
1175
|
-
]),
|
|
1176
|
-
_: 3
|
|
1177
|
-
}, 16, ["class"]);
|
|
1178
|
-
};
|
|
1179
|
-
}
|
|
1180
|
-
});
|
|
1181
|
-
const _hoisted_1$8 = { class: "relative inline-block" };
|
|
1182
|
-
const _hoisted_2$5 = ["src", "alt"];
|
|
889
|
+
const _hoisted_1$b = { class: "relative inline-block" };
|
|
890
|
+
const _hoisted_2$8 = ["src", "alt"];
|
|
1183
891
|
const _hoisted_3$3 = { key: 1 };
|
|
1184
|
-
const _sfc_main$
|
|
892
|
+
const _sfc_main$c = /* @__PURE__ */ vue.defineComponent({
|
|
1185
893
|
__name: "Avatar",
|
|
1186
894
|
props: {
|
|
1187
895
|
src: {},
|
|
@@ -1227,7 +935,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
1227
935
|
});
|
|
1228
936
|
const showImage = vue.computed(() => props.src && !imageError.value);
|
|
1229
937
|
return (_ctx, _cache) => {
|
|
1230
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
938
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$b, [
|
|
1231
939
|
vue.createElementVNode("div", {
|
|
1232
940
|
class: vue.normalizeClass([
|
|
1233
941
|
"flex items-center justify-center overflow-hidden bg-gray-200 font-medium text-gray-600 dark:bg-gray-700 dark:text-gray-300",
|
|
@@ -1241,7 +949,7 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
1241
949
|
alt: __props.alt || __props.name,
|
|
1242
950
|
class: "size-full object-cover",
|
|
1243
951
|
onError: _cache[0] || (_cache[0] = ($event) => imageError.value = true)
|
|
1244
|
-
}, null, 40, _hoisted_2$
|
|
952
|
+
}, null, 40, _hoisted_2$8)) : initials.value ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_3$3, vue.toDisplayString(initials.value), 1)) : (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1245
953
|
key: 2,
|
|
1246
954
|
icon: "lucide:user",
|
|
1247
955
|
class: "size-1/2"
|
|
@@ -1259,9 +967,9 @@ const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
|
1259
967
|
};
|
|
1260
968
|
}
|
|
1261
969
|
});
|
|
1262
|
-
const _hoisted_1$
|
|
1263
|
-
const _hoisted_2$
|
|
1264
|
-
const _sfc_main$
|
|
970
|
+
const _hoisted_1$a = ["aria-selected", "disabled", "onClick"];
|
|
971
|
+
const _hoisted_2$7 = { class: "mt-4" };
|
|
972
|
+
const _sfc_main$b = /* @__PURE__ */ vue.defineComponent({
|
|
1265
973
|
__name: "Tabs",
|
|
1266
974
|
props: {
|
|
1267
975
|
tabs: {},
|
|
@@ -1326,18 +1034,18 @@ const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
|
1326
1034
|
activeTab.value === tab.key ? variantClasses[__props.variant].active : variantClasses[__props.variant].inactive
|
|
1327
1035
|
]),
|
|
1328
1036
|
onClick: ($event) => selectTab(tab)
|
|
1329
|
-
}, vue.toDisplayString(tab.label), 11, _hoisted_1$
|
|
1037
|
+
}, vue.toDisplayString(tab.label), 11, _hoisted_1$a);
|
|
1330
1038
|
}), 128))
|
|
1331
1039
|
], 2),
|
|
1332
|
-
vue.createElementVNode("div", _hoisted_2$
|
|
1040
|
+
vue.createElementVNode("div", _hoisted_2$7, [
|
|
1333
1041
|
vue.renderSlot(_ctx.$slots, "default", { activeTab: activeTab.value })
|
|
1334
1042
|
])
|
|
1335
1043
|
]);
|
|
1336
1044
|
};
|
|
1337
1045
|
}
|
|
1338
1046
|
});
|
|
1339
|
-
const _hoisted_1$
|
|
1340
|
-
const _sfc_main$
|
|
1047
|
+
const _hoisted_1$9 = { role: "tabpanel" };
|
|
1048
|
+
const _sfc_main$a = /* @__PURE__ */ vue.defineComponent({
|
|
1341
1049
|
__name: "TabPanel",
|
|
1342
1050
|
props: {
|
|
1343
1051
|
value: {}
|
|
@@ -1347,7 +1055,7 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1347
1055
|
const activeTab = vue.inject("activeTab");
|
|
1348
1056
|
const isActive = vue.computed(() => (activeTab == null ? void 0 : activeTab.value) === props.value);
|
|
1349
1057
|
return (_ctx, _cache) => {
|
|
1350
|
-
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1058
|
+
return vue.withDirectives((vue.openBlock(), vue.createElementBlock("div", _hoisted_1$9, [
|
|
1351
1059
|
vue.renderSlot(_ctx.$slots, "default")
|
|
1352
1060
|
], 512)), [
|
|
1353
1061
|
[vue.vShow, isActive.value]
|
|
@@ -1355,11 +1063,11 @@ const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1355
1063
|
};
|
|
1356
1064
|
}
|
|
1357
1065
|
});
|
|
1358
|
-
const _hoisted_1$
|
|
1066
|
+
const _hoisted_1$8 = {
|
|
1359
1067
|
key: 2,
|
|
1360
1068
|
class: "text-sm font-semibold"
|
|
1361
1069
|
};
|
|
1362
|
-
const _sfc_main$
|
|
1070
|
+
const _sfc_main$9 = /* @__PURE__ */ vue.defineComponent({
|
|
1363
1071
|
__name: "Stepper",
|
|
1364
1072
|
props: {
|
|
1365
1073
|
steps: {},
|
|
@@ -1371,12 +1079,12 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1371
1079
|
const props = __props;
|
|
1372
1080
|
const getCurrentStepIndex = () => {
|
|
1373
1081
|
if (props.modelValue === void 0) return 0;
|
|
1374
|
-
const
|
|
1375
|
-
return
|
|
1082
|
+
const index2 = props.steps.findIndex((s) => s.key === props.modelValue);
|
|
1083
|
+
return index2 >= 0 ? index2 : 0;
|
|
1376
1084
|
};
|
|
1377
|
-
const isStepComplete = (
|
|
1378
|
-
const isStepActive = (
|
|
1379
|
-
const isStepPending = (
|
|
1085
|
+
const isStepComplete = (index2) => index2 < getCurrentStepIndex();
|
|
1086
|
+
const isStepActive = (index2) => index2 === getCurrentStepIndex();
|
|
1087
|
+
const isStepPending = (index2) => index2 > getCurrentStepIndex();
|
|
1380
1088
|
return (_ctx, _cache) => {
|
|
1381
1089
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
1382
1090
|
class: vue.normalizeClass([
|
|
@@ -1402,7 +1110,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1402
1110
|
"aria-hidden": "true"
|
|
1403
1111
|
}, null, 4)
|
|
1404
1112
|
], 64)) : vue.createCommentVNode("", true),
|
|
1405
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.steps, (step,
|
|
1113
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.steps, (step, index2) => {
|
|
1406
1114
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
1407
1115
|
key: step.key,
|
|
1408
1116
|
class: vue.normalizeClass([
|
|
@@ -1410,17 +1118,17 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1410
1118
|
__props.orientation === "horizontal" ? "flex flex-1 flex-col items-center" : "flex items-start gap-4"
|
|
1411
1119
|
])
|
|
1412
1120
|
}, [
|
|
1413
|
-
__props.orientation === "vertical" &&
|
|
1121
|
+
__props.orientation === "vertical" && index2 < __props.steps.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
1414
1122
|
key: 0,
|
|
1415
|
-
class: vue.normalizeClass(["absolute left-6 top-12 h-full w-0.5 -translate-x-1/2", isStepComplete(
|
|
1123
|
+
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"])
|
|
1416
1124
|
}, null, 2)) : vue.createCommentVNode("", true),
|
|
1417
1125
|
vue.createElementVNode("div", {
|
|
1418
1126
|
class: vue.normalizeClass(["relative z-10 flex size-12 shrink-0 items-center justify-center rounded-full border-2 transition-all duration-300", {
|
|
1419
|
-
"border-primary bg-primary text-white shadow-lg": isStepActive(
|
|
1420
|
-
"border-gray-300 bg-white text-gray-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-500": isStepPending(
|
|
1127
|
+
"border-primary bg-primary text-white shadow-lg": isStepActive(index2) || isStepComplete(index2),
|
|
1128
|
+
"border-gray-300 bg-white text-gray-400 dark:border-gray-600 dark:bg-gray-800 dark:text-gray-500": isStepPending(index2)
|
|
1421
1129
|
}])
|
|
1422
1130
|
}, [
|
|
1423
|
-
isStepComplete(
|
|
1131
|
+
isStepComplete(index2) ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1424
1132
|
key: 0,
|
|
1425
1133
|
icon: "lucide:check",
|
|
1426
1134
|
class: "size-6"
|
|
@@ -1428,7 +1136,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1428
1136
|
key: 1,
|
|
1429
1137
|
icon: step.icon,
|
|
1430
1138
|
class: "size-6"
|
|
1431
|
-
}, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$
|
|
1139
|
+
}, null, 8, ["icon"])) : (vue.openBlock(), vue.createElementBlock("span", _hoisted_1$8, vue.toDisplayString(index2 + 1), 1))
|
|
1432
1140
|
], 2),
|
|
1433
1141
|
vue.createElementVNode("div", {
|
|
1434
1142
|
class: vue.normalizeClass([
|
|
@@ -1437,15 +1145,15 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1437
1145
|
}, [
|
|
1438
1146
|
vue.createElementVNode("p", {
|
|
1439
1147
|
class: vue.normalizeClass(["text-sm font-semibold transition-colors", {
|
|
1440
|
-
"text-primary dark:text-primary": isStepActive(
|
|
1441
|
-
"text-gray-500 dark:text-gray-400": isStepPending(
|
|
1148
|
+
"text-primary dark:text-primary": isStepActive(index2) || isStepComplete(index2),
|
|
1149
|
+
"text-gray-500 dark:text-gray-400": isStepPending(index2)
|
|
1442
1150
|
}])
|
|
1443
1151
|
}, vue.toDisplayString(step.title), 3),
|
|
1444
1152
|
step.description ? (vue.openBlock(), vue.createElementBlock("p", {
|
|
1445
1153
|
key: 0,
|
|
1446
1154
|
class: vue.normalizeClass(["mt-1 text-xs", {
|
|
1447
|
-
"text-gray-600 dark:text-gray-300": isStepActive(
|
|
1448
|
-
"text-gray-500 dark:text-gray-400": !isStepActive(
|
|
1155
|
+
"text-gray-600 dark:text-gray-300": isStepActive(index2),
|
|
1156
|
+
"text-gray-500 dark:text-gray-400": !isStepActive(index2)
|
|
1449
1157
|
}])
|
|
1450
1158
|
}, vue.toDisplayString(step.description), 3)) : vue.createCommentVNode("", true)
|
|
1451
1159
|
], 2)
|
|
@@ -1456,7 +1164,7 @@ const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1456
1164
|
};
|
|
1457
1165
|
}
|
|
1458
1166
|
});
|
|
1459
|
-
const _sfc_main$
|
|
1167
|
+
const _sfc_main$8 = /* @__PURE__ */ vue.defineComponent({
|
|
1460
1168
|
__name: "CollapsibleCard",
|
|
1461
1169
|
props: {
|
|
1462
1170
|
title: {},
|
|
@@ -1552,16 +1260,20 @@ const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1552
1260
|
};
|
|
1553
1261
|
}
|
|
1554
1262
|
});
|
|
1555
|
-
const
|
|
1263
|
+
const _hoisted_1$7 = ["aria-describedby"];
|
|
1264
|
+
const _hoisted_2$6 = ["id"];
|
|
1265
|
+
const _sfc_main$7 = /* @__PURE__ */ vue.defineComponent({
|
|
1556
1266
|
__name: "Tooltip",
|
|
1557
1267
|
props: {
|
|
1558
1268
|
content: {},
|
|
1559
1269
|
position: { default: "top" },
|
|
1560
1270
|
delay: { default: 0 },
|
|
1561
|
-
disabled: { type: Boolean, default: false }
|
|
1271
|
+
disabled: { type: Boolean, default: false },
|
|
1272
|
+
id: {}
|
|
1562
1273
|
},
|
|
1563
1274
|
setup(__props) {
|
|
1564
1275
|
const props = __props;
|
|
1276
|
+
const { id: tooltipId } = useId.useId({ prefix: "tooltip", id: props.id });
|
|
1565
1277
|
const isVisible = vue.ref(false);
|
|
1566
1278
|
let timeoutId = null;
|
|
1567
1279
|
const show = () => {
|
|
@@ -1600,6 +1312,7 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1600
1312
|
return (_ctx, _cache) => {
|
|
1601
1313
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
1602
1314
|
class: "relative inline-block",
|
|
1315
|
+
"aria-describedby": __props.content && !__props.disabled ? vue.unref(tooltipId) : void 0,
|
|
1603
1316
|
onMouseenter: show,
|
|
1604
1317
|
onMouseleave: hide,
|
|
1605
1318
|
onFocus: show,
|
|
@@ -1617,26 +1330,33 @@ const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1617
1330
|
default: vue.withCtx(() => [
|
|
1618
1331
|
isVisible.value && __props.content ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
1619
1332
|
key: 0,
|
|
1333
|
+
id: vue.unref(tooltipId),
|
|
1620
1334
|
class: vue.normalizeClass(positionClasses.value),
|
|
1621
1335
|
role: "tooltip"
|
|
1622
|
-
}, vue.toDisplayString(__props.content),
|
|
1336
|
+
}, vue.toDisplayString(__props.content), 11, _hoisted_2$6)) : vue.createCommentVNode("", true)
|
|
1623
1337
|
]),
|
|
1624
1338
|
_: 1
|
|
1625
1339
|
})
|
|
1626
|
-
],
|
|
1340
|
+
], 40, _hoisted_1$7);
|
|
1627
1341
|
};
|
|
1628
1342
|
}
|
|
1629
1343
|
});
|
|
1630
|
-
const
|
|
1344
|
+
const _hoisted_1$6 = ["id", "aria-expanded", "aria-controls"];
|
|
1345
|
+
const _hoisted_2$5 = ["id", "aria-labelledby"];
|
|
1346
|
+
const _sfc_main$6 = /* @__PURE__ */ vue.defineComponent({
|
|
1631
1347
|
__name: "Popover",
|
|
1632
1348
|
props: {
|
|
1633
1349
|
position: { default: "bottom" },
|
|
1634
1350
|
hover: { type: Boolean, default: false },
|
|
1635
1351
|
teleport: { type: Boolean, default: true },
|
|
1636
|
-
width: { default: "auto" }
|
|
1352
|
+
width: { default: "auto" },
|
|
1353
|
+
id: {}
|
|
1637
1354
|
},
|
|
1638
1355
|
setup(__props) {
|
|
1639
1356
|
const props = __props;
|
|
1357
|
+
const { related } = useId.useId({ prefix: "popover", id: props.id });
|
|
1358
|
+
const triggerId = vue.computed(() => related("trigger"));
|
|
1359
|
+
const popoverId = vue.computed(() => related("content"));
|
|
1640
1360
|
const triggerRef = vue.ref();
|
|
1641
1361
|
const popoverRef = vue.ref();
|
|
1642
1362
|
const { isOpen, dropdownStyle, toggle, close, open } = useDropdown.useDropdown(triggerRef, popoverRef, {
|
|
@@ -1673,10 +1393,13 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1673
1393
|
vue.createElementVNode("div", {
|
|
1674
1394
|
ref_key: "triggerRef",
|
|
1675
1395
|
ref: triggerRef,
|
|
1396
|
+
id: triggerId.value,
|
|
1397
|
+
"aria-expanded": vue.unref(isOpen),
|
|
1398
|
+
"aria-controls": popoverId.value,
|
|
1676
1399
|
onClick: handleTrigger
|
|
1677
1400
|
}, [
|
|
1678
1401
|
vue.renderSlot(_ctx.$slots, "trigger")
|
|
1679
|
-
],
|
|
1402
|
+
], 8, _hoisted_1$6),
|
|
1680
1403
|
(vue.openBlock(), vue.createBlock(vue.Teleport, {
|
|
1681
1404
|
to: "body",
|
|
1682
1405
|
disabled: !__props.teleport
|
|
@@ -1692,8 +1415,11 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1692
1415
|
default: vue.withCtx(() => [
|
|
1693
1416
|
vue.unref(isOpen) ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
1694
1417
|
key: 0,
|
|
1418
|
+
id: popoverId.value,
|
|
1695
1419
|
ref_key: "popoverRef",
|
|
1696
1420
|
ref: popoverRef,
|
|
1421
|
+
role: "dialog",
|
|
1422
|
+
"aria-labelledby": triggerId.value,
|
|
1697
1423
|
style: vue.normalizeStyle(vue.unref(dropdownStyle)),
|
|
1698
1424
|
class: vue.normalizeClass([
|
|
1699
1425
|
"z-[9999] rounded-lg border border-gray-200 bg-white p-4 shadow-lg dark:border-gray-700 dark:bg-gray-800",
|
|
@@ -1701,7 +1427,7 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1701
1427
|
])
|
|
1702
1428
|
}, [
|
|
1703
1429
|
vue.renderSlot(_ctx.$slots, "default", { close: vue.unref(close) })
|
|
1704
|
-
],
|
|
1430
|
+
], 14, _hoisted_2$5)) : vue.createCommentVNode("", true)
|
|
1705
1431
|
]),
|
|
1706
1432
|
_: 3
|
|
1707
1433
|
})
|
|
@@ -1710,17 +1436,17 @@ const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1710
1436
|
};
|
|
1711
1437
|
}
|
|
1712
1438
|
});
|
|
1713
|
-
const _hoisted_1$
|
|
1439
|
+
const _hoisted_1$5 = {
|
|
1714
1440
|
key: 0,
|
|
1715
1441
|
class: "flex items-center justify-between px-4 py-3 border-b border-gray-200 dark:border-gray-700"
|
|
1716
1442
|
};
|
|
1717
|
-
const _hoisted_2$
|
|
1443
|
+
const _hoisted_2$4 = { class: "text-lg font-semibold text-gray-900 dark:text-white" };
|
|
1718
1444
|
const _hoisted_3$2 = { class: "flex-1 overflow-y-auto p-4" };
|
|
1719
1445
|
const _hoisted_4$2 = {
|
|
1720
1446
|
key: 1,
|
|
1721
1447
|
class: "px-4 py-3 border-t border-gray-200 dark:border-gray-700"
|
|
1722
1448
|
};
|
|
1723
|
-
const _sfc_main$
|
|
1449
|
+
const _sfc_main$5 = /* @__PURE__ */ vue.defineComponent({
|
|
1724
1450
|
__name: "Drawer",
|
|
1725
1451
|
props: {
|
|
1726
1452
|
modelValue: { type: Boolean },
|
|
@@ -1839,9 +1565,9 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1839
1565
|
role: "dialog",
|
|
1840
1566
|
"aria-modal": "true"
|
|
1841
1567
|
}, [
|
|
1842
|
-
__props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1568
|
+
__props.title || __props.showClose || _ctx.$slots.header ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$5, [
|
|
1843
1569
|
vue.renderSlot(_ctx.$slots, "header", {}, () => [
|
|
1844
|
-
vue.createElementVNode("h2", _hoisted_2$
|
|
1570
|
+
vue.createElementVNode("h2", _hoisted_2$4, vue.toDisplayString(__props.title), 1)
|
|
1845
1571
|
]),
|
|
1846
1572
|
__props.showClose ? (vue.openBlock(), vue.createElementBlock("button", {
|
|
1847
1573
|
key: 0,
|
|
@@ -1869,9 +1595,9 @@ const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1869
1595
|
};
|
|
1870
1596
|
}
|
|
1871
1597
|
});
|
|
1872
|
-
const _hoisted_1$
|
|
1873
|
-
const _hoisted_2$
|
|
1874
|
-
const _sfc_main$
|
|
1598
|
+
const _hoisted_1$4 = { "aria-label": "Breadcrumb" };
|
|
1599
|
+
const _hoisted_2$3 = { class: "flex items-center flex-wrap gap-1 text-sm" };
|
|
1600
|
+
const _sfc_main$4 = /* @__PURE__ */ vue.defineComponent({
|
|
1875
1601
|
__name: "Breadcrumb",
|
|
1876
1602
|
props: {
|
|
1877
1603
|
items: {},
|
|
@@ -1882,14 +1608,14 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1882
1608
|
emits: ["click"],
|
|
1883
1609
|
setup(__props) {
|
|
1884
1610
|
return (_ctx, _cache) => {
|
|
1885
|
-
return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$
|
|
1886
|
-
vue.createElementVNode("ol", _hoisted_2$
|
|
1887
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item,
|
|
1611
|
+
return vue.openBlock(), vue.createElementBlock("nav", _hoisted_1$4, [
|
|
1612
|
+
vue.createElementVNode("ol", _hoisted_2$3, [
|
|
1613
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
|
|
1888
1614
|
return vue.openBlock(), vue.createElementBlock("li", {
|
|
1889
|
-
key:
|
|
1615
|
+
key: index2,
|
|
1890
1616
|
class: "flex items-center"
|
|
1891
1617
|
}, [
|
|
1892
|
-
|
|
1618
|
+
index2 > 0 ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1893
1619
|
key: 0,
|
|
1894
1620
|
icon: __props.separator,
|
|
1895
1621
|
class: "w-4 h-4 mx-2 text-gray-400 dark:text-gray-500 flex-shrink-0"
|
|
@@ -1899,13 +1625,13 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1899
1625
|
href: item.href,
|
|
1900
1626
|
class: vue.normalizeClass([
|
|
1901
1627
|
"flex items-center gap-1.5 transition-colors",
|
|
1902
|
-
|
|
1628
|
+
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"
|
|
1903
1629
|
]),
|
|
1904
|
-
"aria-current":
|
|
1905
|
-
onClick: ($event) => _ctx.$emit("click", item,
|
|
1630
|
+
"aria-current": index2 === __props.items.length - 1 ? "page" : void 0,
|
|
1631
|
+
onClick: ($event) => _ctx.$emit("click", item, index2)
|
|
1906
1632
|
}, {
|
|
1907
1633
|
default: vue.withCtx(() => [
|
|
1908
|
-
|
|
1634
|
+
index2 === 0 && __props.showHomeIcon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1909
1635
|
key: 0,
|
|
1910
1636
|
icon: item.icon || __props.homeIcon,
|
|
1911
1637
|
class: "w-4 h-4"
|
|
@@ -1925,8 +1651,8 @@ const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1925
1651
|
};
|
|
1926
1652
|
}
|
|
1927
1653
|
});
|
|
1928
|
-
const _hoisted_1$
|
|
1929
|
-
const _sfc_main$
|
|
1654
|
+
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" };
|
|
1655
|
+
const _sfc_main$3 = /* @__PURE__ */ vue.defineComponent({
|
|
1930
1656
|
__name: "Accordion",
|
|
1931
1657
|
props: {
|
|
1932
1658
|
mode: { default: "single" },
|
|
@@ -1952,26 +1678,30 @@ const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1952
1678
|
isOpen
|
|
1953
1679
|
});
|
|
1954
1680
|
return (_ctx, _cache) => {
|
|
1955
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$
|
|
1681
|
+
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$3, [
|
|
1956
1682
|
vue.renderSlot(_ctx.$slots, "default")
|
|
1957
1683
|
]);
|
|
1958
1684
|
};
|
|
1959
1685
|
}
|
|
1960
1686
|
});
|
|
1961
|
-
const _hoisted_1$
|
|
1962
|
-
const _hoisted_2$
|
|
1963
|
-
const _hoisted_3$1 =
|
|
1687
|
+
const _hoisted_1$2 = ["id", "disabled", "aria-expanded", "aria-controls"];
|
|
1688
|
+
const _hoisted_2$2 = { class: "flex items-center gap-2 font-medium" };
|
|
1689
|
+
const _hoisted_3$1 = ["id", "aria-labelledby"];
|
|
1964
1690
|
const _hoisted_4$1 = { class: "px-4 py-3 bg-gray-50 dark:bg-gray-900 text-gray-700 dark:text-gray-300" };
|
|
1965
|
-
const _sfc_main$
|
|
1691
|
+
const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
1966
1692
|
__name: "AccordionItem",
|
|
1967
1693
|
props: {
|
|
1968
1694
|
itemKey: {},
|
|
1969
1695
|
title: {},
|
|
1970
1696
|
icon: {},
|
|
1971
|
-
disabled: { type: Boolean }
|
|
1697
|
+
disabled: { type: Boolean },
|
|
1698
|
+
id: {}
|
|
1972
1699
|
},
|
|
1973
1700
|
setup(__props) {
|
|
1974
1701
|
const props = __props;
|
|
1702
|
+
const { related } = useId.useId({ prefix: "accordion", id: props.id });
|
|
1703
|
+
const headerId = vue.computed(() => related("header"));
|
|
1704
|
+
const panelId = vue.computed(() => related("panel"));
|
|
1975
1705
|
const accordion = vue.inject("accordion");
|
|
1976
1706
|
const isOpen = vue.computed(() => (accordion == null ? void 0 : accordion.isOpen(props.itemKey)) ?? false);
|
|
1977
1707
|
const toggle = () => {
|
|
@@ -1982,27 +1712,31 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
1982
1712
|
return (_ctx, _cache) => {
|
|
1983
1713
|
return vue.openBlock(), vue.createElementBlock("div", null, [
|
|
1984
1714
|
vue.createElementVNode("button", {
|
|
1715
|
+
id: headerId.value,
|
|
1985
1716
|
type: "button",
|
|
1986
1717
|
class: vue.normalizeClass(["flex items-center justify-between w-full px-4 py-3 text-left transition-colors", [
|
|
1987
1718
|
__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"
|
|
1988
1719
|
]]),
|
|
1989
1720
|
disabled: __props.disabled,
|
|
1990
1721
|
"aria-expanded": isOpen.value,
|
|
1722
|
+
"aria-controls": panelId.value,
|
|
1991
1723
|
onClick: toggle
|
|
1992
1724
|
}, [
|
|
1993
|
-
vue.createElementVNode("span", _hoisted_2$
|
|
1725
|
+
vue.createElementVNode("span", _hoisted_2$2, [
|
|
1994
1726
|
__props.icon ? (vue.openBlock(), vue.createBlock(vue.unref(vue$1.Icon), {
|
|
1995
1727
|
key: 0,
|
|
1996
1728
|
icon: __props.icon,
|
|
1997
|
-
class: "w-5 h-5"
|
|
1729
|
+
class: "w-5 h-5",
|
|
1730
|
+
"aria-hidden": "true"
|
|
1998
1731
|
}, null, 8, ["icon"])) : vue.createCommentVNode("", true),
|
|
1999
1732
|
vue.createTextVNode(" " + vue.toDisplayString(__props.title), 1)
|
|
2000
1733
|
]),
|
|
2001
1734
|
vue.createVNode(vue.unref(vue$1.Icon), {
|
|
2002
1735
|
icon: "heroicons:chevron-down",
|
|
2003
|
-
class: vue.normalizeClass(["w-5 h-5 transition-transform duration-200", { "rotate-180": isOpen.value }])
|
|
1736
|
+
class: vue.normalizeClass(["w-5 h-5 transition-transform duration-200", { "rotate-180": isOpen.value }]),
|
|
1737
|
+
"aria-hidden": "true"
|
|
2004
1738
|
}, null, 8, ["class"])
|
|
2005
|
-
], 10, _hoisted_1$
|
|
1739
|
+
], 10, _hoisted_1$2),
|
|
2006
1740
|
vue.createVNode(vue.Transition, {
|
|
2007
1741
|
"enter-active-class": "transition-all duration-200 ease-out",
|
|
2008
1742
|
"enter-from-class": "opacity-0 max-h-0",
|
|
@@ -2012,11 +1746,16 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
2012
1746
|
"leave-to-class": "opacity-0 max-h-0"
|
|
2013
1747
|
}, {
|
|
2014
1748
|
default: vue.withCtx(() => [
|
|
2015
|
-
vue.withDirectives(vue.createElementVNode("div",
|
|
1749
|
+
vue.withDirectives(vue.createElementVNode("div", {
|
|
1750
|
+
id: panelId.value,
|
|
1751
|
+
role: "region",
|
|
1752
|
+
"aria-labelledby": headerId.value,
|
|
1753
|
+
class: "overflow-hidden"
|
|
1754
|
+
}, [
|
|
2016
1755
|
vue.createElementVNode("div", _hoisted_4$1, [
|
|
2017
1756
|
vue.renderSlot(_ctx.$slots, "default")
|
|
2018
1757
|
])
|
|
2019
|
-
],
|
|
1758
|
+
], 8, _hoisted_3$1), [
|
|
2020
1759
|
[vue.vShow, isOpen.value]
|
|
2021
1760
|
])
|
|
2022
1761
|
]),
|
|
@@ -2026,11 +1765,11 @@ const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
|
2026
1765
|
};
|
|
2027
1766
|
}
|
|
2028
1767
|
});
|
|
2029
|
-
const _hoisted_1 = {
|
|
1768
|
+
const _hoisted_1$1 = {
|
|
2030
1769
|
key: 0,
|
|
2031
1770
|
class: "relative"
|
|
2032
1771
|
};
|
|
2033
|
-
const _hoisted_2 = { class: "flex items-start gap-4" };
|
|
1772
|
+
const _hoisted_2$1 = { class: "flex items-start gap-4" };
|
|
2034
1773
|
const _hoisted_3 = { class: "flex-1 min-w-0 pt-0.5" };
|
|
2035
1774
|
const _hoisted_4 = { class: "flex items-center justify-between gap-2" };
|
|
2036
1775
|
const _hoisted_5 = { class: "text-sm font-medium text-gray-900 dark:text-white" };
|
|
@@ -2053,7 +1792,7 @@ const _hoisted_12 = {
|
|
|
2053
1792
|
key: 0,
|
|
2054
1793
|
class: "text-xs text-gray-500 dark:text-gray-400"
|
|
2055
1794
|
};
|
|
2056
|
-
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
1795
|
+
const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
2057
1796
|
__name: "Timeline",
|
|
2058
1797
|
props: {
|
|
2059
1798
|
items: {},
|
|
@@ -2099,17 +1838,17 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
2099
1838
|
}
|
|
2100
1839
|
};
|
|
2101
1840
|
return (_ctx, _cache) => {
|
|
2102
|
-
return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
2103
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item,
|
|
1841
|
+
return __props.orientation === "vertical" ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
|
|
1842
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
|
|
2104
1843
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
2105
1844
|
key: item.key,
|
|
2106
1845
|
class: "relative pb-8 last:pb-0"
|
|
2107
1846
|
}, [
|
|
2108
|
-
|
|
1847
|
+
index2 < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
2109
1848
|
key: 0,
|
|
2110
1849
|
class: vue.normalizeClass(["absolute left-4 top-8 w-0.5 h-full -ml-px", getStatusClasses(item.status).line])
|
|
2111
1850
|
}, null, 2)) : vue.createCommentVNode("", true),
|
|
2112
|
-
vue.createElementVNode("div", _hoisted_2, [
|
|
1851
|
+
vue.createElementVNode("div", _hoisted_2$1, [
|
|
2113
1852
|
vue.createElementVNode("div", {
|
|
2114
1853
|
class: vue.normalizeClass(["relative z-10 flex items-center justify-center w-8 h-8 rounded-full flex-shrink-0", getStatusClasses(item.status).dot])
|
|
2115
1854
|
}, [
|
|
@@ -2131,10 +1870,10 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
2131
1870
|
]);
|
|
2132
1871
|
}), 128))
|
|
2133
1872
|
])) : (vue.openBlock(), vue.createElementBlock("div", _hoisted_8, [
|
|
2134
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item,
|
|
1873
|
+
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item, index2) => {
|
|
2135
1874
|
return vue.openBlock(), vue.createElementBlock("div", {
|
|
2136
1875
|
key: item.key,
|
|
2137
|
-
class: vue.normalizeClass(["flex flex-col items-center flex-shrink-0", { "flex-1":
|
|
1876
|
+
class: vue.normalizeClass(["flex flex-col items-center flex-shrink-0", { "flex-1": index2 < __props.items.length - 1 }])
|
|
2138
1877
|
}, [
|
|
2139
1878
|
vue.createElementVNode("div", _hoisted_9, [
|
|
2140
1879
|
vue.createElementVNode("div", {
|
|
@@ -2146,7 +1885,7 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
2146
1885
|
class: vue.normalizeClass(["w-4 h-4", getStatusClasses(item.status).icon])
|
|
2147
1886
|
}, null, 8, ["icon", "class"])) : vue.createCommentVNode("", true)
|
|
2148
1887
|
], 2),
|
|
2149
|
-
|
|
1888
|
+
index2 < __props.items.length - 1 ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
2150
1889
|
key: 0,
|
|
2151
1890
|
class: vue.normalizeClass(["flex-1 h-0.5 mx-2", getStatusClasses(item.status).line])
|
|
2152
1891
|
}, null, 2)) : vue.createCommentVNode("", true)
|
|
@@ -2161,6 +1900,51 @@ const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
|
2161
1900
|
};
|
|
2162
1901
|
}
|
|
2163
1902
|
});
|
|
1903
|
+
const _hoisted_1 = ["aria-label"];
|
|
1904
|
+
const _hoisted_2 = {
|
|
1905
|
+
key: 0,
|
|
1906
|
+
class: "text-sm font-medium"
|
|
1907
|
+
};
|
|
1908
|
+
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
1909
|
+
__name: "DarkModeToggle",
|
|
1910
|
+
props: {
|
|
1911
|
+
size: { default: "md" },
|
|
1912
|
+
lightIcon: { default: "lucide:sun" },
|
|
1913
|
+
darkIcon: { default: "lucide:moon" },
|
|
1914
|
+
showLabel: { type: Boolean, default: false },
|
|
1915
|
+
storageKey: { default: "dark-mode" }
|
|
1916
|
+
},
|
|
1917
|
+
setup(__props) {
|
|
1918
|
+
const props = __props;
|
|
1919
|
+
const { isDark, toggle } = useDarkMode.useDarkMode({ storageKey: props.storageKey });
|
|
1920
|
+
const sizeClasses = {
|
|
1921
|
+
sm: { button: "p-1.5", icon: "h-4 w-4" },
|
|
1922
|
+
md: { button: "p-2", icon: "h-5 w-5" },
|
|
1923
|
+
lg: { button: "p-2.5", icon: "h-6 w-6" }
|
|
1924
|
+
};
|
|
1925
|
+
return (_ctx, _cache) => {
|
|
1926
|
+
return vue.openBlock(), vue.createElementBlock("button", {
|
|
1927
|
+
type: "button",
|
|
1928
|
+
class: vue.normalizeClass([
|
|
1929
|
+
sizeClasses[__props.size].button,
|
|
1930
|
+
"inline-flex items-center gap-2 rounded-lg transition-colors",
|
|
1931
|
+
"text-gray-600 hover:bg-gray-100 hover:text-gray-900",
|
|
1932
|
+
"dark:text-gray-400 dark:hover:bg-gray-800 dark:hover:text-gray-100",
|
|
1933
|
+
"focus:outline-none focus:ring-2 focus:ring-primary focus:ring-offset-2"
|
|
1934
|
+
]),
|
|
1935
|
+
"aria-label": vue.unref(isDark) ? "Switch to light mode" : "Switch to dark mode",
|
|
1936
|
+
onClick: _cache[0] || (_cache[0] = //@ts-ignore
|
|
1937
|
+
(...args) => vue.unref(toggle) && vue.unref(toggle)(...args))
|
|
1938
|
+
}, [
|
|
1939
|
+
vue.createVNode(vue.unref(vue$1.Icon), {
|
|
1940
|
+
icon: vue.unref(isDark) ? __props.darkIcon : __props.lightIcon,
|
|
1941
|
+
class: vue.normalizeClass(sizeClasses[__props.size].icon)
|
|
1942
|
+
}, null, 8, ["icon", "class"]),
|
|
1943
|
+
__props.showLabel ? (vue.openBlock(), vue.createElementBlock("span", _hoisted_2, vue.toDisplayString(vue.unref(isDark) ? "Dark" : "Light"), 1)) : vue.createCommentVNode("", true)
|
|
1944
|
+
], 10, _hoisted_1);
|
|
1945
|
+
};
|
|
1946
|
+
}
|
|
1947
|
+
});
|
|
2164
1948
|
exports._sfc_main = _sfc_main$i;
|
|
2165
1949
|
exports._sfc_main$1 = _sfc_main$h;
|
|
2166
1950
|
exports._sfc_main$10 = _sfc_main$8;
|
|
@@ -2180,4 +1964,4 @@ exports._sfc_main$6 = _sfc_main$c;
|
|
|
2180
1964
|
exports._sfc_main$7 = _sfc_main$b;
|
|
2181
1965
|
exports._sfc_main$8 = _sfc_main$a;
|
|
2182
1966
|
exports._sfc_main$9 = _sfc_main$9;
|
|
2183
|
-
//# sourceMappingURL=
|
|
1967
|
+
//# sourceMappingURL=DarkModeToggle.vue_vue_type_script_setup_true_lang-CSxGvdSP.cjs.map
|