cisse-vue-ui 0.8.4 → 0.10.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 -4
- package/dist/{CheckboxGroup.vue_vue_type_script_setup_true_lang-B190Yija.js → CheckboxGroup.vue_vue_type_script_setup_true_lang-ZP02bMgY.js} +2 -2
- package/dist/{CheckboxGroup.vue_vue_type_script_setup_true_lang-B190Yija.js.map → CheckboxGroup.vue_vue_type_script_setup_true_lang-ZP02bMgY.js.map} +1 -1
- package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-DWs2V7xX.js → ConfirmDialog.vue_vue_type_script_setup_true_lang-C5KHLMvx.js} +37 -184
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-C5KHLMvx.js.map +1 -0
- package/dist/{ConfirmDialog.vue_vue_type_script_setup_true_lang-BGUoa5fT.cjs → ConfirmDialog.vue_vue_type_script_setup_true_lang-CLfy0-Wb.cjs} +33 -180
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-CLfy0-Wb.cjs.map +1 -0
- package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-BmJHgkBs.js → FilterTabs.vue_vue_type_script_setup_true_lang-CJnvcF8Z.js} +1568 -384
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-CJnvcF8Z.js.map +1 -0
- package/dist/{FilterTabs.vue_vue_type_script_setup_true_lang-DYxh-wFx.cjs → FilterTabs.vue_vue_type_script_setup_true_lang-l8lJzwoY.cjs} +1564 -380
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-l8lJzwoY.cjs.map +1 -0
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BHopJ9RG.js +298 -0
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BHopJ9RG.js.map +1 -0
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs +297 -0
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-Bo3HqgX0.cjs.map +1 -0
- package/dist/components/core/Breadcrumb.stories.d.ts +5 -0
- package/dist/components/core/CardWrapper.stories.d.ts +32 -0
- package/dist/components/core/CardWrapper.vue.d.ts +129 -0
- package/dist/components/core/CollapsibleCard.vue.d.ts +1 -1
- package/dist/components/core/DataTable.stories.d.ts +38 -0
- package/dist/components/core/Dropdown.vue.d.ts +1 -1
- package/dist/components/core/Popover.vue.d.ts +2 -2
- package/dist/components/core/StatItem.stories.d.ts +25 -0
- package/dist/components/core/StatItem.test.d.ts +1 -0
- package/dist/components/core/StatItem.vue.d.ts +81 -0
- package/dist/components/core/Stats.stories.d.ts +24 -0
- package/dist/components/core/Stats.test.d.ts +1 -0
- package/dist/components/core/Stats.vue.d.ts +41 -0
- package/dist/components/core/Tooltip.stories.d.ts +3 -0
- package/dist/components/core/index.cjs +41 -22
- package/dist/components/core/index.cjs.map +1 -1
- package/dist/components/core/index.d.ts +10 -4
- package/dist/components/core/index.js +41 -22
- package/dist/components/core/table/DataTable.test.d.ts +1 -0
- package/dist/components/core/{TableComponent.vue.d.ts → table/DataTable.vue.d.ts} +60 -7
- package/dist/components/core/table/Table.stories.d.ts +27 -0
- package/dist/components/core/table/atoms/Caption.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Caption.vue.d.ts +26 -0
- package/dist/components/core/table/atoms/Col.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Col.vue.d.ts +8 -0
- package/dist/components/core/table/atoms/Colgroup.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Colgroup.vue.d.ts +17 -0
- package/dist/components/core/table/atoms/Table.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Table.vue.d.ts +46 -0
- package/dist/components/core/table/atoms/Tbody.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Tbody.vue.d.ts +17 -0
- package/dist/components/core/table/atoms/Td.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Td.vue.d.ts +43 -0
- package/dist/components/core/table/atoms/Tfoot.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Tfoot.vue.d.ts +17 -0
- package/dist/components/core/table/atoms/Th.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Th.vue.d.ts +64 -0
- package/dist/components/core/table/atoms/Thead.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Thead.vue.d.ts +17 -0
- package/dist/components/core/table/atoms/Tr.test.d.ts +1 -0
- package/dist/components/core/table/atoms/Tr.vue.d.ts +35 -0
- package/dist/components/core/table/atoms/index.d.ts +10 -0
- package/dist/components/core/table/index.d.ts +3 -0
- package/dist/components/core/table/molecules/ExpandableRow.test.d.ts +1 -0
- package/dist/components/core/table/molecules/ExpandableRow.vue.d.ts +47 -0
- package/dist/components/core/table/molecules/TableFooter.test.d.ts +1 -0
- package/dist/components/core/table/molecules/TableFooter.vue.d.ts +21 -0
- package/dist/components/core/table/molecules/TableHeader.test.d.ts +1 -0
- package/dist/components/core/table/molecules/TableHeader.vue.d.ts +49 -0
- package/dist/components/core/table/molecules/TableRow.test.d.ts +1 -0
- package/dist/components/core/table/molecules/TableRow.vue.d.ts +59 -0
- package/dist/components/core/table/molecules/index.d.ts +4 -0
- package/dist/components/feedback/Progress.vue.d.ts +1 -1
- package/dist/components/feedback/TableSkeleton.vue.d.ts +1 -1
- package/dist/components/feedback/index.cjs +14 -14
- package/dist/components/feedback/index.js +14 -14
- package/dist/components/form/Combobox.vue.d.ts +1 -1
- package/dist/components/form/DatePicker.vue.d.ts +1 -1
- package/dist/components/form/FormSection.vue.d.ts +1 -1
- package/dist/components/form/IconPicker.stories.d.ts +19 -0
- package/dist/components/form/IconPicker.test.d.ts +1 -0
- package/dist/components/form/InputWrapper.stories.d.ts +0 -5
- package/dist/components/form/Rating.vue.d.ts +1 -1
- package/dist/components/form/SearchInput.vue.d.ts +1 -1
- package/dist/components/form/index.js +2 -2
- package/dist/components/index.cjs +55 -36
- package/dist/components/index.cjs.map +1 -1
- package/dist/components/index.js +67 -48
- package/dist/composables/index.cjs +15 -8
- package/dist/composables/index.cjs.map +1 -1
- package/dist/composables/index.d.ts +7 -0
- package/dist/composables/index.js +12 -5
- package/dist/composables/useColumnResize.d.ts +38 -0
- package/dist/composables/useColumnResize.test.d.ts +1 -0
- package/dist/composables/useColumnVisibility.d.ts +44 -0
- package/dist/composables/useColumnVisibility.test.d.ts +1 -0
- package/dist/composables/useEditableCell.d.ts +51 -0
- package/dist/composables/useEditableCell.test.d.ts +1 -0
- package/dist/composables/usePagination.d.ts +44 -0
- package/dist/composables/usePagination.test.d.ts +1 -0
- package/dist/composables/usePinnedRows.d.ts +41 -0
- package/dist/composables/usePinnedRows.test.d.ts +1 -0
- package/dist/composables/useTableKeyboardNavigation.d.ts +52 -0
- package/dist/composables/useTableKeyboardNavigation.test.d.ts +1 -0
- package/dist/composables/useVirtualScroll.d.ts +32 -0
- package/dist/composables/useVirtualScroll.test.d.ts +1 -0
- package/dist/{index-SNefWfX0.js → index-BaWpldIJ.js} +3 -3
- package/dist/{index-SNefWfX0.js.map → index-BaWpldIJ.js.map} +1 -1
- package/dist/{index-LFQFhClN.cjs → index-CYXOfUOG.cjs} +56 -37
- package/dist/{index-LFQFhClN.cjs.map → index-CYXOfUOG.cjs.map} +1 -1
- package/dist/index-C_N7WRnM.js +116 -0
- package/dist/index-C_N7WRnM.js.map +1 -0
- package/dist/index.cjs +71 -45
- package/dist/index.cjs.map +1 -1
- package/dist/index.js +81 -55
- package/dist/style.css +1 -1
- package/dist/types/components.d.ts +1 -1
- package/dist/types/property.d.ts +8 -0
- package/dist/usePagination-BGwbICFC.js +135 -0
- package/dist/usePagination-BGwbICFC.js.map +1 -0
- package/dist/usePagination-gvvh1zqA.cjs +134 -0
- package/dist/usePagination-gvvh1zqA.cjs.map +1 -0
- package/dist/useVirtualScroll-BivP86fA.cjs +869 -0
- package/dist/useVirtualScroll-BivP86fA.cjs.map +1 -0
- package/dist/useVirtualScroll-YeZru2Eo.js +870 -0
- package/dist/useVirtualScroll-YeZru2Eo.js.map +1 -0
- package/package.json +1 -1
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-BGUoa5fT.cjs.map +0 -1
- package/dist/ConfirmDialog.vue_vue_type_script_setup_true_lang-DWs2V7xX.js.map +0 -1
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-BmJHgkBs.js.map +0 -1
- package/dist/FilterTabs.vue_vue_type_script_setup_true_lang-DYxh-wFx.cjs.map +0 -1
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js +0 -150
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js.map +0 -1
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs +0 -149
- package/dist/ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs.map +0 -1
- package/dist/components/core/StatsCard.stories.d.ts +0 -15
- package/dist/components/core/StatsCard.vue.d.ts +0 -44
- package/dist/components/core/StatsGrid.stories.d.ts +0 -12
- package/dist/components/core/StatsGrid.vue.d.ts +0 -16
- package/dist/components/core/TableComponent.stories.d.ts +0 -16
- package/dist/index-CyL_6V7D.js +0 -97
- package/dist/index-CyL_6V7D.js.map +0 -1
- package/dist/useDarkMode-Cl5QWTlC.js +0 -53
- package/dist/useDarkMode-Cl5QWTlC.js.map +0 -1
- package/dist/useDarkMode-DLZcJEUQ.cjs +0 -52
- package/dist/useDarkMode-DLZcJEUQ.cjs.map +0 -1
- package/dist/useToast-Bk60GArg.cjs +0 -176
- package/dist/useToast-Bk60GArg.cjs.map +0 -1
- package/dist/useToast-ina5g3mj.js +0 -177
- package/dist/useToast-ina5g3mj.js.map +0 -1
- /package/dist/components/core/{StatsCard.test.d.ts → AccordionItem.test.d.ts} +0 -0
- /package/dist/components/core/{StatsGrid.test.d.ts → CardWrapper.test.d.ts} +0 -0
|
@@ -1,149 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
const vue = require("vue");
|
|
3
|
-
const _hoisted_1$2 = {
|
|
4
|
-
class: "bg-white dark:bg-gray-900 rounded-lg shadow-md p-4 space-y-4",
|
|
5
|
-
"aria-hidden": "true"
|
|
6
|
-
};
|
|
7
|
-
const _hoisted_2$2 = {
|
|
8
|
-
key: 0,
|
|
9
|
-
class: "flex items-center gap-3"
|
|
10
|
-
};
|
|
11
|
-
const _hoisted_3$1 = { class: "space-y-2" };
|
|
12
|
-
const _hoisted_4$1 = {
|
|
13
|
-
key: 1,
|
|
14
|
-
class: "flex justify-end gap-2 pt-2"
|
|
15
|
-
};
|
|
16
|
-
const _sfc_main$2 = /* @__PURE__ */ vue.defineComponent({
|
|
17
|
-
__name: "CardSkeleton",
|
|
18
|
-
props: {
|
|
19
|
-
showAvatar: { type: Boolean, default: false },
|
|
20
|
-
lines: { default: 3 },
|
|
21
|
-
showActions: { type: Boolean, default: false }
|
|
22
|
-
},
|
|
23
|
-
setup(__props) {
|
|
24
|
-
return (_ctx, _cache) => {
|
|
25
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$2, [
|
|
26
|
-
__props.showAvatar ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$2, [..._cache[0] || (_cache[0] = [
|
|
27
|
-
vue.createElementVNode("div", { class: "size-10 rounded-full bg-gray-200 dark:bg-gray-700 animate-pulse" }, null, -1),
|
|
28
|
-
vue.createElementVNode("div", { class: "flex-1 space-y-2" }, [
|
|
29
|
-
vue.createElementVNode("div", { class: "h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse w-1/2" }),
|
|
30
|
-
vue.createElementVNode("div", { class: "h-3 bg-gray-200 dark:bg-gray-700 rounded animate-pulse w-1/3" })
|
|
31
|
-
], -1)
|
|
32
|
-
])])) : vue.createCommentVNode("", true),
|
|
33
|
-
vue.createElementVNode("div", _hoisted_3$1, [
|
|
34
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.lines, (line) => {
|
|
35
|
-
return vue.openBlock(), vue.createElementBlock("div", {
|
|
36
|
-
key: line,
|
|
37
|
-
class: "h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse",
|
|
38
|
-
style: vue.normalizeStyle({ width: line === __props.lines ? "60%" : "100%" })
|
|
39
|
-
}, null, 4);
|
|
40
|
-
}), 128))
|
|
41
|
-
]),
|
|
42
|
-
__props.showActions ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4$1, [..._cache[1] || (_cache[1] = [
|
|
43
|
-
vue.createElementVNode("div", { class: "h-8 w-20 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" }, null, -1),
|
|
44
|
-
vue.createElementVNode("div", { class: "h-8 w-20 bg-gray-200 dark:bg-gray-700 rounded animate-pulse" }, null, -1)
|
|
45
|
-
])])) : vue.createCommentVNode("", true)
|
|
46
|
-
]);
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
});
|
|
50
|
-
const _hoisted_1$1 = {
|
|
51
|
-
class: "w-full",
|
|
52
|
-
"aria-hidden": "true"
|
|
53
|
-
};
|
|
54
|
-
const _hoisted_2$1 = {
|
|
55
|
-
key: 0,
|
|
56
|
-
class: "flex gap-4 px-4 py-3 border-b border-gray-200 dark:border-gray-700"
|
|
57
|
-
};
|
|
58
|
-
const _sfc_main$1 = /* @__PURE__ */ vue.defineComponent({
|
|
59
|
-
__name: "TableSkeleton",
|
|
60
|
-
props: {
|
|
61
|
-
rows: { default: 5 },
|
|
62
|
-
columns: { default: 4 },
|
|
63
|
-
showHeader: { type: Boolean, default: true }
|
|
64
|
-
},
|
|
65
|
-
setup(__props) {
|
|
66
|
-
return (_ctx, _cache) => {
|
|
67
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1$1, [
|
|
68
|
-
__props.showHeader ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2$1, [
|
|
69
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.columns, (col) => {
|
|
70
|
-
return vue.openBlock(), vue.createElementBlock("div", {
|
|
71
|
-
key: `header-${col}`,
|
|
72
|
-
class: "flex-1 h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse",
|
|
73
|
-
style: vue.normalizeStyle({ maxWidth: col === 1 ? "30%" : "20%" })
|
|
74
|
-
}, null, 4);
|
|
75
|
-
}), 128))
|
|
76
|
-
])) : vue.createCommentVNode("", true),
|
|
77
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.rows, (row) => {
|
|
78
|
-
return vue.openBlock(), vue.createElementBlock("div", {
|
|
79
|
-
key: `row-${row}`,
|
|
80
|
-
class: "flex items-center gap-4 px-4 py-4 border-b border-gray-100 dark:border-gray-800"
|
|
81
|
-
}, [
|
|
82
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.columns, (col) => {
|
|
83
|
-
return vue.openBlock(), vue.createElementBlock("div", {
|
|
84
|
-
key: `cell-${row}-${col}`,
|
|
85
|
-
class: "flex-1 h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse",
|
|
86
|
-
style: vue.normalizeStyle({
|
|
87
|
-
maxWidth: col === 1 ? "40%" : col === __props.columns ? "15%" : "25%",
|
|
88
|
-
opacity: 1 - row * 0.1
|
|
89
|
-
})
|
|
90
|
-
}, null, 4);
|
|
91
|
-
}), 128))
|
|
92
|
-
]);
|
|
93
|
-
}), 128))
|
|
94
|
-
]);
|
|
95
|
-
};
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
const _hoisted_1 = {
|
|
99
|
-
class: "divide-y divide-gray-200 dark:divide-gray-700",
|
|
100
|
-
"aria-hidden": "true"
|
|
101
|
-
};
|
|
102
|
-
const _hoisted_2 = {
|
|
103
|
-
key: 0,
|
|
104
|
-
class: "shrink-0 size-10 rounded-full bg-gray-200 dark:bg-gray-700 animate-pulse"
|
|
105
|
-
};
|
|
106
|
-
const _hoisted_3 = { class: "flex-1 min-w-0 space-y-2" };
|
|
107
|
-
const _hoisted_4 = {
|
|
108
|
-
key: 1,
|
|
109
|
-
class: "shrink-0 size-8 rounded bg-gray-200 dark:bg-gray-700 animate-pulse"
|
|
110
|
-
};
|
|
111
|
-
const _sfc_main = /* @__PURE__ */ vue.defineComponent({
|
|
112
|
-
__name: "ListSkeleton",
|
|
113
|
-
props: {
|
|
114
|
-
items: { default: 5 },
|
|
115
|
-
showAvatar: { type: Boolean, default: true },
|
|
116
|
-
showSecondary: { type: Boolean, default: true },
|
|
117
|
-
showAction: { type: Boolean, default: false }
|
|
118
|
-
},
|
|
119
|
-
setup(__props) {
|
|
120
|
-
return (_ctx, _cache) => {
|
|
121
|
-
return vue.openBlock(), vue.createElementBlock("div", _hoisted_1, [
|
|
122
|
-
(vue.openBlock(true), vue.createElementBlock(vue.Fragment, null, vue.renderList(__props.items, (item) => {
|
|
123
|
-
return vue.openBlock(), vue.createElementBlock("div", {
|
|
124
|
-
key: item,
|
|
125
|
-
class: "flex items-center gap-4 py-4 px-4"
|
|
126
|
-
}, [
|
|
127
|
-
__props.showAvatar ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_2)) : vue.createCommentVNode("", true),
|
|
128
|
-
vue.createElementVNode("div", _hoisted_3, [
|
|
129
|
-
vue.createElementVNode("div", {
|
|
130
|
-
class: "h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse",
|
|
131
|
-
style: vue.normalizeStyle({ width: `${60 + Math.random() * 30}%` })
|
|
132
|
-
}, null, 4),
|
|
133
|
-
__props.showSecondary ? (vue.openBlock(), vue.createElementBlock("div", {
|
|
134
|
-
key: 0,
|
|
135
|
-
class: "h-3 bg-gray-200 dark:bg-gray-700 rounded animate-pulse",
|
|
136
|
-
style: vue.normalizeStyle({ width: `${40 + Math.random() * 20}%` })
|
|
137
|
-
}, null, 4)) : vue.createCommentVNode("", true)
|
|
138
|
-
]),
|
|
139
|
-
__props.showAction ? (vue.openBlock(), vue.createElementBlock("div", _hoisted_4)) : vue.createCommentVNode("", true)
|
|
140
|
-
]);
|
|
141
|
-
}), 128))
|
|
142
|
-
]);
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
exports._sfc_main = _sfc_main$1;
|
|
147
|
-
exports._sfc_main$1 = _sfc_main$2;
|
|
148
|
-
exports._sfc_main$2 = _sfc_main;
|
|
149
|
-
//# sourceMappingURL=ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ListSkeleton.vue_vue_type_script_setup_true_lang-DtwwmfWr.cjs","sources":["../src/components/feedback/CardSkeleton.vue","../src/components/feedback/TableSkeleton.vue","../src/components/feedback/ListSkeleton.vue"],"sourcesContent":["<script lang=\"ts\" setup>\r\nwithDefaults(\r\n defineProps<{\r\n /** Show avatar/icon placeholder */\r\n showAvatar?: boolean\r\n /** Number of text lines */\r\n lines?: number\r\n /** Show action buttons */\r\n showActions?: boolean\r\n }>(),\r\n {\r\n showAvatar: false,\r\n lines: 3,\r\n showActions: false,\r\n },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"bg-white dark:bg-gray-900 rounded-lg shadow-md p-4 space-y-4\" aria-hidden=\"true\">\r\n <!-- Header with avatar -->\r\n <div v-if=\"showAvatar\" class=\"flex items-center gap-3\">\r\n <div class=\"size-10 rounded-full bg-gray-200 dark:bg-gray-700 animate-pulse\" />\r\n <div class=\"flex-1 space-y-2\">\r\n <div class=\"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse w-1/2\" />\r\n <div class=\"h-3 bg-gray-200 dark:bg-gray-700 rounded animate-pulse w-1/3\" />\r\n </div>\r\n </div>\r\n\r\n <!-- Content lines -->\r\n <div class=\"space-y-2\">\r\n <div\r\n v-for=\"line in lines\"\r\n :key=\"line\"\r\n class=\"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{ width: line === lines ? '60%' : '100%' }\"\r\n />\r\n </div>\r\n\r\n <!-- Actions -->\r\n <div v-if=\"showActions\" class=\"flex justify-end gap-2 pt-2\">\r\n <div class=\"h-8 w-20 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\" />\r\n <div class=\"h-8 w-20 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\" />\r\n </div>\r\n </div>\r\n</template>\r\n","<script lang=\"ts\" setup>\r\nwithDefaults(\r\n defineProps<{\r\n /** Number of rows */\r\n rows?: number\r\n /** Number of columns */\r\n columns?: number\r\n /** Show header */\r\n showHeader?: boolean\r\n }>(),\r\n {\r\n rows: 5,\r\n columns: 4,\r\n showHeader: true,\r\n },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"w-full\" aria-hidden=\"true\">\r\n <!-- Header -->\r\n <div\r\n v-if=\"showHeader\"\r\n class=\"flex gap-4 px-4 py-3 border-b border-gray-200 dark:border-gray-700\"\r\n >\r\n <div\r\n v-for=\"col in columns\"\r\n :key=\"`header-${col}`\"\r\n class=\"flex-1 h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{ maxWidth: col === 1 ? '30%' : '20%' }\"\r\n />\r\n </div>\r\n <!-- Rows -->\r\n <div\r\n v-for=\"row in rows\"\r\n :key=\"`row-${row}`\"\r\n class=\"flex items-center gap-4 px-4 py-4 border-b border-gray-100 dark:border-gray-800\"\r\n >\r\n <div\r\n v-for=\"col in columns\"\r\n :key=\"`cell-${row}-${col}`\"\r\n class=\"flex-1 h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{\r\n maxWidth: col === 1 ? '40%' : col === columns ? '15%' : '25%',\r\n opacity: 1 - (row * 0.1)\r\n }\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n","<script lang=\"ts\" setup>\r\nwithDefaults(\r\n defineProps<{\r\n /** Number of items */\r\n items?: number\r\n /** Show avatar/icon placeholder */\r\n showAvatar?: boolean\r\n /** Show secondary text */\r\n showSecondary?: boolean\r\n /** Show action button */\r\n showAction?: boolean\r\n }>(),\r\n {\r\n items: 5,\r\n showAvatar: true,\r\n showSecondary: true,\r\n showAction: false,\r\n },\r\n)\r\n</script>\r\n\r\n<template>\r\n <div class=\"divide-y divide-gray-200 dark:divide-gray-700\" aria-hidden=\"true\">\r\n <div\r\n v-for=\"item in items\"\r\n :key=\"item\"\r\n class=\"flex items-center gap-4 py-4 px-4\"\r\n >\r\n <!-- Avatar -->\r\n <div\r\n v-if=\"showAvatar\"\r\n class=\"shrink-0 size-10 rounded-full bg-gray-200 dark:bg-gray-700 animate-pulse\"\r\n />\r\n\r\n <!-- Content -->\r\n <div class=\"flex-1 min-w-0 space-y-2\">\r\n <div\r\n class=\"h-4 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{ width: `${60 + Math.random() * 30}%` }\"\r\n />\r\n <div\r\n v-if=\"showSecondary\"\r\n class=\"h-3 bg-gray-200 dark:bg-gray-700 rounded animate-pulse\"\r\n :style=\"{ width: `${40 + Math.random() * 20}%` }\"\r\n />\r\n </div>\r\n\r\n <!-- Action -->\r\n <div\r\n v-if=\"showAction\"\r\n class=\"shrink-0 size-8 rounded bg-gray-200 dark:bg-gray-700 animate-pulse\"\r\n />\r\n </div>\r\n </div>\r\n</template>\r\n"],"names":["_openBlock","_createElementBlock","_hoisted_1","_hoisted_2","_createElementVNode","_hoisted_3","_Fragment","_renderList","_normalizeStyle","_hoisted_4"],"mappings":"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"}
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
import { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
-
import { default as StatsCard } from './StatsCard.vue';
|
|
3
|
-
declare const meta: Meta<typeof StatsCard>;
|
|
4
|
-
export default meta;
|
|
5
|
-
type Story = StoryObj<typeof meta>;
|
|
6
|
-
export declare const Default: Story;
|
|
7
|
-
export declare const WithChange: Story;
|
|
8
|
-
export declare const NegativeChange: Story;
|
|
9
|
-
export declare const GlassVariant: Story;
|
|
10
|
-
export declare const SolidVariant: Story;
|
|
11
|
-
export declare const OutlineVariant: Story;
|
|
12
|
-
export declare const SuccessColor: Story;
|
|
13
|
-
export declare const WarningColor: Story;
|
|
14
|
-
export declare const DangerColor: Story;
|
|
15
|
-
export declare const NoIcon: Story;
|
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
export interface StatItem {
|
|
2
|
-
label: string;
|
|
3
|
-
value: string | number;
|
|
4
|
-
icon?: string;
|
|
5
|
-
change?: number;
|
|
6
|
-
changeLabel?: string;
|
|
7
|
-
}
|
|
8
|
-
type __VLS_Props = {
|
|
9
|
-
/** Stat label */
|
|
10
|
-
label: string;
|
|
11
|
-
/** Stat value */
|
|
12
|
-
value: string | number;
|
|
13
|
-
/** Icon name (iconify format) */
|
|
14
|
-
icon?: string;
|
|
15
|
-
/** Percentage change (positive or negative) */
|
|
16
|
-
change?: number;
|
|
17
|
-
/** Change label (e.g., "vs last month") */
|
|
18
|
-
changeLabel?: string;
|
|
19
|
-
/** Visual variant */
|
|
20
|
-
variant?: 'default' | 'glass' | 'solid' | 'outline';
|
|
21
|
-
/** Color scheme for solid variant */
|
|
22
|
-
color?: 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
23
|
-
};
|
|
24
|
-
declare function __VLS_template(): {
|
|
25
|
-
attrs: Partial<{}>;
|
|
26
|
-
slots: {
|
|
27
|
-
value?(_: {}): any;
|
|
28
|
-
label?(_: {}): any;
|
|
29
|
-
};
|
|
30
|
-
refs: {};
|
|
31
|
-
rootEl: HTMLDivElement;
|
|
32
|
-
};
|
|
33
|
-
type __VLS_TemplateResult = ReturnType<typeof __VLS_template>;
|
|
34
|
-
declare const __VLS_component: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
35
|
-
variant: "default" | "glass" | "solid" | "outline";
|
|
36
|
-
color: "primary" | "success" | "warning" | "danger" | "info";
|
|
37
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
38
|
-
declare const _default: __VLS_WithTemplateSlots<typeof __VLS_component, __VLS_TemplateResult["slots"]>;
|
|
39
|
-
export default _default;
|
|
40
|
-
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
41
|
-
new (): {
|
|
42
|
-
$slots: S;
|
|
43
|
-
};
|
|
44
|
-
};
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
import { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
-
import { default as StatsGrid } from './StatsGrid.vue';
|
|
3
|
-
declare const meta: Meta<typeof StatsGrid>;
|
|
4
|
-
export default meta;
|
|
5
|
-
type Story = StoryObj<typeof meta>;
|
|
6
|
-
export declare const ThreeColumns: Story;
|
|
7
|
-
export declare const FourColumns: Story;
|
|
8
|
-
export declare const TwoColumns: Story;
|
|
9
|
-
export declare const WithChanges: Story;
|
|
10
|
-
export declare const GlassVariant: Story;
|
|
11
|
-
export declare const SolidVariant: Story;
|
|
12
|
-
export declare const ForcedCols: Story;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { StatItem } from './StatsCard.vue';
|
|
2
|
-
type __VLS_Props = {
|
|
3
|
-
/** Array of stats to display */
|
|
4
|
-
stats: StatItem[];
|
|
5
|
-
/** Number of columns (auto-calculated if not provided) */
|
|
6
|
-
cols?: 2 | 3 | 4;
|
|
7
|
-
/** Visual variant for all cards */
|
|
8
|
-
variant?: 'default' | 'glass' | 'solid' | 'outline';
|
|
9
|
-
/** Color scheme for solid variant */
|
|
10
|
-
color?: 'primary' | 'success' | 'warning' | 'danger' | 'info';
|
|
11
|
-
};
|
|
12
|
-
declare const _default: import('vue').DefineComponent<__VLS_Props, {}, {}, {}, {}, import('vue').ComponentOptionsMixin, import('vue').ComponentOptionsMixin, {}, string, import('vue').PublicProps, Readonly<__VLS_Props> & Readonly<{}>, {
|
|
13
|
-
variant: "default" | "glass" | "solid" | "outline";
|
|
14
|
-
color: "primary" | "success" | "warning" | "danger" | "info";
|
|
15
|
-
}, {}, {}, {}, string, import('vue').ComponentProvideOptions, false, {}, HTMLDivElement>;
|
|
16
|
-
export default _default;
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import { Meta, StoryObj } from '@storybook/vue3-vite';
|
|
2
|
-
import { default as TableComponent } from './TableComponent.vue';
|
|
3
|
-
declare const meta: Meta<typeof TableComponent>;
|
|
4
|
-
export default meta;
|
|
5
|
-
type Story = StoryObj<typeof meta>;
|
|
6
|
-
export declare const Default: Story;
|
|
7
|
-
export declare const WithTypes: Story;
|
|
8
|
-
export declare const WithBadge: Story;
|
|
9
|
-
export declare const WithAlignment: Story;
|
|
10
|
-
export declare const Selectable: Story;
|
|
11
|
-
export declare const WithActions: Story;
|
|
12
|
-
export declare const WithCustomSlot: Story;
|
|
13
|
-
export declare const EmptyState: Story;
|
|
14
|
-
export declare const NestedProperties: Story;
|
|
15
|
-
export declare const Loading: Story;
|
|
16
|
-
export declare const LoadingCustomRows: Story;
|
package/dist/index-CyL_6V7D.js
DELETED
|
@@ -1,97 +0,0 @@
|
|
|
1
|
-
import { o as _sfc_main, p as _sfc_main$1, d as _sfc_main$4, f as _sfc_main$5, n as _sfc_main$9, _ as _sfc_main$b, j as _sfc_main$f, r as _sfc_main$j, m as _sfc_main$m, u as _sfc_main$r, b as _sfc_main$E, l as _sfc_main$S, c as _sfc_main$W, s as _sfc_main$Z, t as _sfc_main$_, i as _sfc_main$10, h as _sfc_main$12, e as _sfc_main$13, a as _sfc_main$14, g as _sfc_main$16, q as _sfc_main$19, k as _sfc_main$1c } from "./FilterTabs.vue_vue_type_script_setup_true_lang-BmJHgkBs.js";
|
|
2
|
-
import { a as _sfc_main$n, _ as _sfc_main$D } from "./Dropdown.vue_vue_type_script_setup_true_lang-GLCX7E3C.js";
|
|
3
|
-
import { e as _sfc_main$6, d as _sfc_main$8, c as _sfc_main$l, b as _sfc_main$K, _ as _sfc_main$$, a as _sfc_main$18 } from "./BadgeType.vue_vue_type_script_setup_true_lang-tHRMWBb-.js";
|
|
4
|
-
import { _ as _sfc_main$a } from "./Button.vue_vue_type_script_setup_true_lang-CBYr0Z2_.js";
|
|
5
|
-
import { A as _sfc_main$e, j as _sfc_main$g, l as _sfc_main$h, g as _sfc_main$k, q as _sfc_main$o, h as _sfc_main$q, o as _sfc_main$s, d as _sfc_main$t, a as _sfc_main$u, b as _sfc_main$v, _ as _sfc_main$w, n as _sfc_main$x, c as _sfc_main$y, m as _sfc_main$z, p as _sfc_main$A, u as _sfc_main$G, t as _sfc_main$J, y as _sfc_main$L, r as _sfc_main$P, v as _sfc_main$Q, s as _sfc_main$R, w as _sfc_main$T, k as _sfc_main$U, i as _sfc_main$V, e as _sfc_main$X, S as Slider, f as _sfc_main$11, T as TagsInput, z as _sfc_main$17, x as _sfc_main$1d } from "./CheckboxGroup.vue_vue_type_script_setup_true_lang-B190Yija.js";
|
|
6
|
-
import { _ as _sfc_main$d } from "./index-SNefWfX0.js";
|
|
7
|
-
import { e as _sfc_main$2, j as _sfc_main$i, f as _sfc_main$p, _ as _sfc_main$C, a as _sfc_main$F, c as _sfc_main$H, d as _sfc_main$I, b as _sfc_main$O, P as Progress, i as _sfc_main$Y, g as _sfc_main$1a, h as _sfc_main$1b } from "./ConfirmDialog.vue_vue_type_script_setup_true_lang-DWs2V7xX.js";
|
|
8
|
-
import { a as _sfc_main$c, b as _sfc_main$B, _ as _sfc_main$15 } from "./ListSkeleton.vue_vue_type_script_setup_true_lang-BwtEbaiT.js";
|
|
9
|
-
import { _ as _sfc_main$3, a as _sfc_main$7, c as _sfc_main$M, b as _sfc_main$N } from "./PageHero.vue_vue_type_script_setup_true_lang-by-P5wIB.js";
|
|
10
|
-
const components = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
11
|
-
__proto__: null,
|
|
12
|
-
Accordion: _sfc_main,
|
|
13
|
-
AccordionItem: _sfc_main$1,
|
|
14
|
-
Alert: _sfc_main$2,
|
|
15
|
-
AuthLayout: _sfc_main$3,
|
|
16
|
-
AutocompleteComponent: _sfc_main$4,
|
|
17
|
-
Avatar: _sfc_main$5,
|
|
18
|
-
BadgeType: _sfc_main$6,
|
|
19
|
-
BaseLayout: _sfc_main$7,
|
|
20
|
-
BooleanType: _sfc_main$8,
|
|
21
|
-
Breadcrumb: _sfc_main$9,
|
|
22
|
-
Button: _sfc_main$a,
|
|
23
|
-
CardComponent: _sfc_main$b,
|
|
24
|
-
CardSkeleton: _sfc_main$c,
|
|
25
|
-
Checkbox: _sfc_main$d,
|
|
26
|
-
CheckboxGroup: _sfc_main$e,
|
|
27
|
-
CollapsibleCard: _sfc_main$f,
|
|
28
|
-
ColorPicker: _sfc_main$g,
|
|
29
|
-
Combobox: _sfc_main$h,
|
|
30
|
-
ConfirmDialog: _sfc_main$i,
|
|
31
|
-
DarkModeToggle: _sfc_main$j,
|
|
32
|
-
DatePicker: _sfc_main$k,
|
|
33
|
-
DateType: _sfc_main$l,
|
|
34
|
-
Drawer: _sfc_main$m,
|
|
35
|
-
Dropdown: _sfc_main$n,
|
|
36
|
-
EmailInput: _sfc_main$o,
|
|
37
|
-
EmptyState: _sfc_main$p,
|
|
38
|
-
FileUpload: _sfc_main$q,
|
|
39
|
-
FilterTabs: _sfc_main$r,
|
|
40
|
-
FormActions: _sfc_main$s,
|
|
41
|
-
FormGroup: _sfc_main$t,
|
|
42
|
-
FormHelp: _sfc_main$u,
|
|
43
|
-
FormInput: _sfc_main$v,
|
|
44
|
-
FormLabel: _sfc_main$w,
|
|
45
|
-
FormSection: _sfc_main$x,
|
|
46
|
-
FormSelect: _sfc_main$y,
|
|
47
|
-
IconPicker: _sfc_main$z,
|
|
48
|
-
InputWrapper: _sfc_main$A,
|
|
49
|
-
ListSkeleton: _sfc_main$B,
|
|
50
|
-
LoadingSpinner: _sfc_main$C,
|
|
51
|
-
MenuItem: _sfc_main$D,
|
|
52
|
-
MobileList: _sfc_main$E,
|
|
53
|
-
Modal: _sfc_main$F,
|
|
54
|
-
MoneyInput: _sfc_main$G,
|
|
55
|
-
NotificationComponent: _sfc_main$H,
|
|
56
|
-
NotificationList: _sfc_main$I,
|
|
57
|
-
NumberInput: _sfc_main$J,
|
|
58
|
-
NumberType: _sfc_main$K,
|
|
59
|
-
OTPInput: _sfc_main$L,
|
|
60
|
-
PageHero: _sfc_main$M,
|
|
61
|
-
PageLayout: _sfc_main$N,
|
|
62
|
-
PaginationControls: _sfc_main$O,
|
|
63
|
-
PasswordInput: _sfc_main$P,
|
|
64
|
-
PercentInput: _sfc_main$Q,
|
|
65
|
-
PhoneInput: _sfc_main$R,
|
|
66
|
-
Popover: _sfc_main$S,
|
|
67
|
-
Progress,
|
|
68
|
-
QuantityInput: _sfc_main$T,
|
|
69
|
-
RangeSlider: _sfc_main$U,
|
|
70
|
-
Rating: _sfc_main$V,
|
|
71
|
-
ResponsiveList: _sfc_main$W,
|
|
72
|
-
SearchInput: _sfc_main$X,
|
|
73
|
-
Skeleton: _sfc_main$Y,
|
|
74
|
-
Slider,
|
|
75
|
-
StatsCard: _sfc_main$Z,
|
|
76
|
-
StatsGrid: _sfc_main$_,
|
|
77
|
-
StatusBadge: _sfc_main$$,
|
|
78
|
-
Stepper: _sfc_main$10,
|
|
79
|
-
Switch: _sfc_main$11,
|
|
80
|
-
TabPanel: _sfc_main$12,
|
|
81
|
-
TableAction: _sfc_main$13,
|
|
82
|
-
TableComponent: _sfc_main$14,
|
|
83
|
-
TableSkeleton: _sfc_main$15,
|
|
84
|
-
Tabs: _sfc_main$16,
|
|
85
|
-
TagsInput,
|
|
86
|
-
TextArea: _sfc_main$17,
|
|
87
|
-
TextType: _sfc_main$18,
|
|
88
|
-
Timeline: _sfc_main$19,
|
|
89
|
-
Toast: _sfc_main$1a,
|
|
90
|
-
ToastContainer: _sfc_main$1b,
|
|
91
|
-
Tooltip: _sfc_main$1c,
|
|
92
|
-
URLInput: _sfc_main$1d
|
|
93
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
94
|
-
export {
|
|
95
|
-
components as c
|
|
96
|
-
};
|
|
97
|
-
//# sourceMappingURL=index-CyL_6V7D.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index-CyL_6V7D.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
import { ref, watch, onMounted } from "vue";
|
|
2
|
-
function useDarkMode(options = {}) {
|
|
3
|
-
const {
|
|
4
|
-
selector = "html",
|
|
5
|
-
attribute = "class",
|
|
6
|
-
storageKey = "dark-mode",
|
|
7
|
-
defaultValue = false
|
|
8
|
-
} = options;
|
|
9
|
-
const isDark = ref(defaultValue);
|
|
10
|
-
const getInitialValue = () => {
|
|
11
|
-
if (typeof window === "undefined") return defaultValue;
|
|
12
|
-
const stored = localStorage.getItem(storageKey);
|
|
13
|
-
if (stored !== null) {
|
|
14
|
-
return stored === "true";
|
|
15
|
-
}
|
|
16
|
-
return window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
17
|
-
};
|
|
18
|
-
const updateDOM = (dark) => {
|
|
19
|
-
if (typeof document === "undefined") return;
|
|
20
|
-
const element = document.querySelector(selector);
|
|
21
|
-
if (!element) return;
|
|
22
|
-
if (attribute === "class") {
|
|
23
|
-
element.classList.toggle("dark", dark);
|
|
24
|
-
} else {
|
|
25
|
-
element.setAttribute(attribute, dark ? "dark" : "light");
|
|
26
|
-
}
|
|
27
|
-
};
|
|
28
|
-
const toggle = () => {
|
|
29
|
-
isDark.value = !isDark.value;
|
|
30
|
-
};
|
|
31
|
-
const set = (value) => {
|
|
32
|
-
isDark.value = value;
|
|
33
|
-
};
|
|
34
|
-
watch(isDark, (newValue) => {
|
|
35
|
-
updateDOM(newValue);
|
|
36
|
-
if (typeof localStorage !== "undefined") {
|
|
37
|
-
localStorage.setItem(storageKey, String(newValue));
|
|
38
|
-
}
|
|
39
|
-
});
|
|
40
|
-
onMounted(() => {
|
|
41
|
-
isDark.value = getInitialValue();
|
|
42
|
-
updateDOM(isDark.value);
|
|
43
|
-
});
|
|
44
|
-
return {
|
|
45
|
-
isDark,
|
|
46
|
-
toggle,
|
|
47
|
-
set
|
|
48
|
-
};
|
|
49
|
-
}
|
|
50
|
-
export {
|
|
51
|
-
useDarkMode as u
|
|
52
|
-
};
|
|
53
|
-
//# sourceMappingURL=useDarkMode-Cl5QWTlC.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDarkMode-Cl5QWTlC.js","sources":["../src/composables/useDarkMode.ts"],"sourcesContent":["import { ref, watch, onMounted } from 'vue'\n\nexport interface DarkModeOptions {\n selector?: string\n attribute?: string\n storageKey?: string\n defaultValue?: boolean\n}\n\n/**\n * Composable for managing dark mode state\n */\nexport function useDarkMode(options: DarkModeOptions = {}) {\n const {\n selector = 'html',\n attribute = 'class',\n storageKey = 'dark-mode',\n defaultValue = false,\n } = options\n\n const isDark = ref(defaultValue)\n\n const getInitialValue = (): boolean => {\n if (typeof window === 'undefined') return defaultValue\n\n const stored = localStorage.getItem(storageKey)\n if (stored !== null) {\n return stored === 'true'\n }\n\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n }\n\n const updateDOM = (dark: boolean) => {\n if (typeof document === 'undefined') return\n\n const element = document.querySelector(selector)\n if (!element) return\n\n if (attribute === 'class') {\n element.classList.toggle('dark', dark)\n } else {\n element.setAttribute(attribute, dark ? 'dark' : 'light')\n }\n }\n\n const toggle = () => {\n isDark.value = !isDark.value\n }\n\n const set = (value: boolean) => {\n isDark.value = value\n }\n\n watch(isDark, (newValue) => {\n updateDOM(newValue)\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(storageKey, String(newValue))\n }\n })\n\n onMounted(() => {\n isDark.value = getInitialValue()\n updateDOM(isDark.value)\n })\n\n return {\n isDark,\n toggle,\n set,\n }\n}\n"],"names":[],"mappings":";AAYO,SAAS,YAAY,UAA2B,IAAI;AACzD,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,eAAe;AAAA,EAAA,IACb;AAEJ,QAAM,SAAS,IAAI,YAAY;AAE/B,QAAM,kBAAkB,MAAe;AACrC,QAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,UAAM,SAAS,aAAa,QAAQ,UAAU;AAC9C,QAAI,WAAW,MAAM;AACnB,aAAO,WAAW;AAAA,IACpB;AAEA,WAAO,OAAO,WAAW,8BAA8B,EAAE;AAAA,EAC3D;AAEA,QAAM,YAAY,CAAC,SAAkB;AACnC,QAAI,OAAO,aAAa,YAAa;AAErC,UAAM,UAAU,SAAS,cAAc,QAAQ;AAC/C,QAAI,CAAC,QAAS;AAEd,QAAI,cAAc,SAAS;AACzB,cAAQ,UAAU,OAAO,QAAQ,IAAI;AAAA,IACvC,OAAO;AACL,cAAQ,aAAa,WAAW,OAAO,SAAS,OAAO;AAAA,IACzD;AAAA,EACF;AAEA,QAAM,SAAS,MAAM;AACnB,WAAO,QAAQ,CAAC,OAAO;AAAA,EACzB;AAEA,QAAM,MAAM,CAAC,UAAmB;AAC9B,WAAO,QAAQ;AAAA,EACjB;AAEA,QAAM,QAAQ,CAAC,aAAa;AAC1B,cAAU,QAAQ;AAClB,QAAI,OAAO,iBAAiB,aAAa;AACvC,mBAAa,QAAQ,YAAY,OAAO,QAAQ,CAAC;AAAA,IACnD;AAAA,EACF,CAAC;AAED,YAAU,MAAM;AACd,WAAO,QAAQ,gBAAA;AACf,cAAU,OAAO,KAAK;AAAA,EACxB,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;"}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
const vue = require("vue");
|
|
3
|
-
function useDarkMode(options = {}) {
|
|
4
|
-
const {
|
|
5
|
-
selector = "html",
|
|
6
|
-
attribute = "class",
|
|
7
|
-
storageKey = "dark-mode",
|
|
8
|
-
defaultValue = false
|
|
9
|
-
} = options;
|
|
10
|
-
const isDark = vue.ref(defaultValue);
|
|
11
|
-
const getInitialValue = () => {
|
|
12
|
-
if (typeof window === "undefined") return defaultValue;
|
|
13
|
-
const stored = localStorage.getItem(storageKey);
|
|
14
|
-
if (stored !== null) {
|
|
15
|
-
return stored === "true";
|
|
16
|
-
}
|
|
17
|
-
return window.matchMedia("(prefers-color-scheme: dark)").matches;
|
|
18
|
-
};
|
|
19
|
-
const updateDOM = (dark) => {
|
|
20
|
-
if (typeof document === "undefined") return;
|
|
21
|
-
const element = document.querySelector(selector);
|
|
22
|
-
if (!element) return;
|
|
23
|
-
if (attribute === "class") {
|
|
24
|
-
element.classList.toggle("dark", dark);
|
|
25
|
-
} else {
|
|
26
|
-
element.setAttribute(attribute, dark ? "dark" : "light");
|
|
27
|
-
}
|
|
28
|
-
};
|
|
29
|
-
const toggle = () => {
|
|
30
|
-
isDark.value = !isDark.value;
|
|
31
|
-
};
|
|
32
|
-
const set = (value) => {
|
|
33
|
-
isDark.value = value;
|
|
34
|
-
};
|
|
35
|
-
vue.watch(isDark, (newValue) => {
|
|
36
|
-
updateDOM(newValue);
|
|
37
|
-
if (typeof localStorage !== "undefined") {
|
|
38
|
-
localStorage.setItem(storageKey, String(newValue));
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
vue.onMounted(() => {
|
|
42
|
-
isDark.value = getInitialValue();
|
|
43
|
-
updateDOM(isDark.value);
|
|
44
|
-
});
|
|
45
|
-
return {
|
|
46
|
-
isDark,
|
|
47
|
-
toggle,
|
|
48
|
-
set
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
exports.useDarkMode = useDarkMode;
|
|
52
|
-
//# sourceMappingURL=useDarkMode-DLZcJEUQ.cjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"useDarkMode-DLZcJEUQ.cjs","sources":["../src/composables/useDarkMode.ts"],"sourcesContent":["import { ref, watch, onMounted } from 'vue'\n\nexport interface DarkModeOptions {\n selector?: string\n attribute?: string\n storageKey?: string\n defaultValue?: boolean\n}\n\n/**\n * Composable for managing dark mode state\n */\nexport function useDarkMode(options: DarkModeOptions = {}) {\n const {\n selector = 'html',\n attribute = 'class',\n storageKey = 'dark-mode',\n defaultValue = false,\n } = options\n\n const isDark = ref(defaultValue)\n\n const getInitialValue = (): boolean => {\n if (typeof window === 'undefined') return defaultValue\n\n const stored = localStorage.getItem(storageKey)\n if (stored !== null) {\n return stored === 'true'\n }\n\n return window.matchMedia('(prefers-color-scheme: dark)').matches\n }\n\n const updateDOM = (dark: boolean) => {\n if (typeof document === 'undefined') return\n\n const element = document.querySelector(selector)\n if (!element) return\n\n if (attribute === 'class') {\n element.classList.toggle('dark', dark)\n } else {\n element.setAttribute(attribute, dark ? 'dark' : 'light')\n }\n }\n\n const toggle = () => {\n isDark.value = !isDark.value\n }\n\n const set = (value: boolean) => {\n isDark.value = value\n }\n\n watch(isDark, (newValue) => {\n updateDOM(newValue)\n if (typeof localStorage !== 'undefined') {\n localStorage.setItem(storageKey, String(newValue))\n }\n })\n\n onMounted(() => {\n isDark.value = getInitialValue()\n updateDOM(isDark.value)\n })\n\n return {\n isDark,\n toggle,\n set,\n }\n}\n"],"names":["ref","watch","onMounted"],"mappings":";;AAYO,SAAS,YAAY,UAA2B,IAAI;AACzD,QAAM;AAAA,IACJ,WAAW;AAAA,IACX,YAAY;AAAA,IACZ,aAAa;AAAA,IACb,eAAe;AAAA,EAAA,IACb;AAEJ,QAAM,SAASA,IAAAA,IAAI,YAAY;AAE/B,QAAM,kBAAkB,MAAe;AACrC,QAAI,OAAO,WAAW,YAAa,QAAO;AAE1C,UAAM,SAAS,aAAa,QAAQ,UAAU;AAC9C,QAAI,WAAW,MAAM;AACnB,aAAO,WAAW;AAAA,IACpB;AAEA,WAAO,OAAO,WAAW,8BAA8B,EAAE;AAAA,EAC3D;AAEA,QAAM,YAAY,CAAC,SAAkB;AACnC,QAAI,OAAO,aAAa,YAAa;AAErC,UAAM,UAAU,SAAS,cAAc,QAAQ;AAC/C,QAAI,CAAC,QAAS;AAEd,QAAI,cAAc,SAAS;AACzB,cAAQ,UAAU,OAAO,QAAQ,IAAI;AAAA,IACvC,OAAO;AACL,cAAQ,aAAa,WAAW,OAAO,SAAS,OAAO;AAAA,IACzD;AAAA,EACF;AAEA,QAAM,SAAS,MAAM;AACnB,WAAO,QAAQ,CAAC,OAAO;AAAA,EACzB;AAEA,QAAM,MAAM,CAAC,UAAmB;AAC9B,WAAO,QAAQ;AAAA,EACjB;AAEAC,YAAM,QAAQ,CAAC,aAAa;AAC1B,cAAU,QAAQ;AAClB,QAAI,OAAO,iBAAiB,aAAa;AACvC,mBAAa,QAAQ,YAAY,OAAO,QAAQ,CAAC;AAAA,IACnD;AAAA,EACF,CAAC;AAEDC,MAAAA,UAAU,MAAM;AACd,WAAO,QAAQ,gBAAA;AACf,cAAU,OAAO,KAAK;AAAA,EACxB,CAAC;AAED,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;;"}
|