@astrake/lumora-ui 0.2.1 → 0.7.2

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.
Files changed (118) hide show
  1. package/CHANGELOG.md +230 -141
  2. package/README.md +23 -21
  3. package/dist/LuAccordion.vue_vue_type_script_setup_true_lang-CwG5Ml8t.js +5032 -0
  4. package/dist/{LuEmbeddedStatusBar.vue_vue_type_script_setup_true_lang-CIksvebU.js → LuEmbeddedStatusBar.vue_vue_type_script_setup_true_lang-D4rqklgo.js} +1 -1
  5. package/dist/LuOverlay.vue_vue_type_script_setup_true_lang-C5jhqCgy.js +221 -0
  6. package/dist/__mocks__/empty.d.ts +4 -0
  7. package/dist/components/LuAccordion.vue.d.ts +23 -0
  8. package/dist/components/LuBarChart.vue.d.ts +22 -0
  9. package/dist/components/LuBottomSheet.vue.d.ts +27 -0
  10. package/dist/components/LuCalendar.vue.d.ts +34 -0
  11. package/dist/components/LuCard.vue.d.ts +0 -3
  12. package/dist/components/LuCheckbox.vue.d.ts +19 -5
  13. package/dist/components/LuChip.vue.d.ts +35 -0
  14. package/dist/components/LuChipGroup.vue.d.ts +23 -0
  15. package/dist/components/LuCodeBlock.vue.d.ts +11 -14
  16. package/dist/components/LuCollapsible.vue.d.ts +7 -4
  17. package/dist/components/LuCommandPalette.vue.d.ts +25 -0
  18. package/dist/components/LuDataGrid.types.d.ts +39 -0
  19. package/dist/components/LuDataGrid.vue.d.ts +84 -0
  20. package/dist/components/LuDateRangePicker.vue.d.ts +29 -0
  21. package/dist/components/LuDoughnutChart.vue.d.ts +17 -0
  22. package/dist/components/LuDrawer.vue.d.ts +33 -0
  23. package/dist/components/LuFileUpload.vue.d.ts +38 -0
  24. package/dist/components/LuForm.vue.d.ts +2 -2
  25. package/dist/components/LuFormField.vue.d.ts +21 -0
  26. package/dist/components/LuFormWizard.types.d.ts +7 -0
  27. package/dist/components/LuFormWizard.vue.d.ts +33 -0
  28. package/dist/components/LuGaugeChart.vue.d.ts +16 -0
  29. package/dist/components/LuKanban.types.d.ts +24 -0
  30. package/dist/components/LuKanban.vue.d.ts +30 -0
  31. package/dist/components/LuLineChart.vue.d.ts +19 -0
  32. package/dist/components/LuList.vue.d.ts +18 -0
  33. package/dist/components/LuListDivider.vue.d.ts +5 -0
  34. package/dist/components/LuListItem.vue.d.ts +32 -0
  35. package/dist/components/LuListSubheader.vue.d.ts +16 -0
  36. package/dist/components/LuMediaGallery.vue.d.ts +25 -0
  37. package/dist/components/LuMenu.vue.d.ts +2 -2
  38. package/dist/components/LuModal.vue.d.ts +5 -5
  39. package/dist/components/LuPagination.vue.d.ts +2 -2
  40. package/dist/components/LuPlanner.types.d.ts +14 -0
  41. package/dist/components/LuPlanner.vue.d.ts +23 -0
  42. package/dist/components/LuPopover.vue.d.ts +24 -0
  43. package/dist/components/LuRadioGroup.types.d.ts +1 -0
  44. package/dist/components/LuRadioGroup.vue.d.ts +2 -2
  45. package/dist/components/LuRichTextEditor.vue.d.ts +27 -0
  46. package/dist/components/LuSelect.vue.d.ts +35 -2
  47. package/dist/components/{LuPageHeader.vue.d.ts → LuSparkline.vue.d.ts} +9 -5
  48. package/dist/components/LuSwitch.vue.d.ts +19 -5
  49. package/dist/components/LuTimeline.vue.d.ts +17 -0
  50. package/dist/components/LuTimelineItem.vue.d.ts +24 -0
  51. package/dist/components/LuToast.vue.d.ts +5 -0
  52. package/dist/components/LuTree.types.d.ts +9 -0
  53. package/dist/components/LuTree.vue.d.ts +25 -0
  54. package/dist/components/LuTreeNode.vue.d.ts +37 -0
  55. package/dist/components/__tests__/LuAccordion.test.d.ts +1 -0
  56. package/dist/components/__tests__/LuBarChart.test.d.ts +1 -0
  57. package/dist/components/__tests__/LuBottomSheet.test.d.ts +1 -0
  58. package/dist/components/__tests__/LuCalendar.test.d.ts +1 -0
  59. package/dist/components/__tests__/LuCheckbox.test.d.ts +1 -0
  60. package/dist/components/__tests__/LuChip.test.d.ts +1 -0
  61. package/dist/components/__tests__/LuCommandPalette.test.d.ts +1 -0
  62. package/dist/components/__tests__/LuDataGrid.test.d.ts +1 -0
  63. package/dist/components/__tests__/LuDateRangePicker.test.d.ts +1 -0
  64. package/dist/components/__tests__/LuDoughnutChart.test.d.ts +1 -0
  65. package/dist/components/__tests__/LuDrawer.test.d.ts +1 -0
  66. package/dist/components/__tests__/LuFileUpload.test.d.ts +1 -0
  67. package/dist/components/__tests__/LuFormWizard.test.d.ts +1 -0
  68. package/dist/components/__tests__/LuGaugeChart.test.d.ts +1 -0
  69. package/dist/components/__tests__/LuKanban.test.d.ts +1 -0
  70. package/dist/components/__tests__/LuLineChart.test.d.ts +1 -0
  71. package/dist/components/__tests__/LuList.test.d.ts +1 -0
  72. package/dist/components/__tests__/LuMediaGallery.test.d.ts +1 -0
  73. package/dist/components/__tests__/LuPlanner.test.d.ts +1 -0
  74. package/dist/components/__tests__/LuPopover.test.d.ts +1 -0
  75. package/dist/components/__tests__/LuRadio.test.d.ts +1 -0
  76. package/dist/components/__tests__/LuRichTextEditor.test.d.ts +1 -0
  77. package/dist/components/__tests__/LuSelect.test.d.ts +1 -0
  78. package/dist/components/__tests__/LuSparkline.test.d.ts +1 -0
  79. package/dist/components/__tests__/LuSwitch.test.d.ts +1 -0
  80. package/dist/components/__tests__/LuTimeline.test.d.ts +1 -0
  81. package/dist/components/__tests__/LuToast.test.d.ts +1 -0
  82. package/dist/components/__tests__/LuTree.test.d.ts +1 -0
  83. package/dist/components/_all.d.ts +3 -0
  84. package/dist/components/index.d.ts +42 -3
  85. package/dist/components/index.js +73 -44
  86. package/dist/composables/index.d.ts +3 -0
  87. package/dist/composables/index.js +34 -14
  88. package/dist/composables/lazyVChart.d.ts +10 -0
  89. package/dist/composables/useChartTheme.d.ts +65 -0
  90. package/dist/composables/useDataGrid.d.ts +52 -0
  91. package/dist/composables/useFloating.d.ts +12 -0
  92. package/dist/composables/useLuToast.d.ts +14 -0
  93. package/dist/composables/useShiki.d.ts +2 -0
  94. package/dist/context-CGS7Ou_x.js +36 -0
  95. package/dist/index.d.ts +5 -0
  96. package/dist/index.js +217 -81
  97. package/dist/layout/LuFill.vue.d.ts +0 -3
  98. package/dist/layout/LuFixed.vue.d.ts +0 -3
  99. package/dist/layout/LuGrid.vue.d.ts +0 -4
  100. package/dist/layout/LuStack.vue.d.ts +5 -3
  101. package/dist/layout/index.js +1 -1
  102. package/dist/shell/index.js +1 -1
  103. package/dist/skins/components.d.ts +2 -0
  104. package/dist/skins/index.js +1053 -219
  105. package/dist/skins/layout.d.ts +2 -0
  106. package/dist/skins/shell/desktop.d.ts +2 -0
  107. package/dist/skins/shell/embedded.d.ts +2 -0
  108. package/dist/skins/shell/mobile.d.ts +2 -0
  109. package/dist/useLuToast-D5d7Wrcr.js +1029 -0
  110. package/dist/utils.d.ts +0 -11
  111. package/package.json +95 -94
  112. package/src/lumora.css +259 -16
  113. package/dist/LuCodeBlock.vue_vue_type_script_setup_true_lang-BjwcjuXF.js +0 -1623
  114. package/dist/LuOverlay.vue_vue_type_script_setup_true_lang-DZch4Vrw.js +0 -226
  115. package/dist/components/LuThemeSelect.vue.d.ts +0 -2
  116. package/dist/components/LuThemeSwitch.vue.d.ts +0 -2
  117. package/dist/context-0gENwESP.js +0 -62
  118. package/dist/useTheme-Cd4wVaLs.js +0 -21
@@ -1,1623 +0,0 @@
1
- import { defineComponent as k, computed as o, resolveComponent as ue, useAttrs as pe, openBlock as i, createBlock as A, resolveDynamicComponent as K, mergeProps as S, withCtx as w, renderSlot as b, inject as H, ref as T, onMounted as R, onUnmounted as G, createElementBlock as m, normalizeClass as p, createCommentVNode as V, createElementVNode as C, unref as I, useSlots as fe, Fragment as q, renderList as se, toDisplayString as M, watch as F, provide as J, withDirectives as ie, vShow as ce, normalizeStyle as ke, createTextVNode as E, createVNode as B, readonly as oe, withModifiers as U, onBeforeUnmount as de, Transition as te, Teleport as be } from "vue";
2
- import { u as g, c as ne, r as ge } from "./context-0gENwESP.js";
3
- import { u as ve } from "./useTheme-Cd4wVaLs.js";
4
- import { createHighlighter as he } from "shiki";
5
- const Z = /* @__PURE__ */ k({
6
- __name: "LuButton",
7
- props: {
8
- type: {},
9
- disabled: { type: Boolean },
10
- variant: {},
11
- as: {},
12
- to: {},
13
- href: {}
14
- },
15
- emits: ["click"],
16
- setup(a, { emit: l }) {
17
- const e = a, t = l, n = o(() => {
18
- if (e.as) return e.as;
19
- if (e.to) {
20
- const u = ue("RouterLink");
21
- return typeof u == "string" ? "a" : u;
22
- }
23
- return e.href ? "a" : "button";
24
- }), r = o(() => {
25
- const u = { ...e, ...pe() };
26
- return delete u.variant, delete u.as, n.value !== "button" && delete u.type, e.disabled && n.value, u;
27
- }), { resolveSkin: s } = g(), c = o(() => s("LuButton", e.variant));
28
- return (u, d) => (i(), A(K(n.value), S(r.value, {
29
- class: c.value,
30
- onClick: d[0] || (d[0] = (v) => t("click", v))
31
- }), {
32
- default: w(() => [
33
- b(u.$slots, "default")
34
- ]),
35
- _: 3
36
- }, 16, ["class"]));
37
- }
38
- }), D = Symbol("LuFormContext"), Le = {
39
- key: 0,
40
- class: "relative w-full"
41
- }, ye = ["value", "name", "disabled"], Se = ["value", "name", "disabled"], Xe = /* @__PURE__ */ k({
42
- __name: "LuInput",
43
- props: {
44
- modelValue: {},
45
- variant: {},
46
- name: {},
47
- error: {}
48
- },
49
- emits: ["update:modelValue", "blur"],
50
- setup(a, { emit: l }) {
51
- const e = a, t = l, { resolveSkin: n } = g(), r = o(() => n("LuInput", e.variant)), s = o(() => n("LuInputPrepend", e.variant)), c = o(() => n("LuInputAppend", e.variant)), u = H(D, null), d = T(e.modelValue), v = (L) => {
52
- const f = L.target.value;
53
- d.value = f, t("update:modelValue", f);
54
- }, h = () => {
55
- e.name && u && (u.validateOn.value === "blur" || u.validateOn.value), t("blur");
56
- };
57
- return R(() => {
58
- !e.name || !u || u.register({
59
- name: e.name,
60
- getValue: () => d.value,
61
- setValue: (L) => {
62
- d.value = L;
63
- },
64
- setError: (L) => {
65
- }
66
- });
67
- }), G(() => {
68
- e.name && u && u.unregister(e.name);
69
- }), (L, f) => {
70
- var $, y;
71
- return L.$slots.prepend || L.$slots.append ? (i(), m("div", Le, [
72
- L.$slots.prepend ? (i(), m("div", {
73
- key: 0,
74
- class: p(s.value)
75
- }, [
76
- b(L.$slots, "prepend")
77
- ], 2)) : V("", !0),
78
- C("input", S(L.$attrs, {
79
- class: [r.value, L.$slots.prepend && "pl-9", L.$slots.append && "pr-9"],
80
- value: a.modelValue,
81
- name: a.name,
82
- disabled: ($ = I(u)) == null ? void 0 : $.disabled.value,
83
- onInput: v,
84
- onBlur: h
85
- }), null, 16, ye),
86
- L.$slots.append ? (i(), m("div", {
87
- key: 1,
88
- class: p(c.value)
89
- }, [
90
- b(L.$slots, "append")
91
- ], 2)) : V("", !0)
92
- ])) : (i(), m("input", S({ key: 1 }, L.$attrs, {
93
- class: r.value,
94
- value: a.modelValue,
95
- name: a.name,
96
- disabled: (y = I(u)) == null ? void 0 : y.disabled.value,
97
- onInput: v,
98
- onBlur: h
99
- }), null, 16, Se));
100
- };
101
- }
102
- }), P = /* @__PURE__ */ k({
103
- __name: "LuIcon",
104
- props: {
105
- variant: {},
106
- name: {},
107
- size: {},
108
- strokeWidth: {}
109
- },
110
- setup(a) {
111
- const l = a, e = fe(), { resolveSkin: t, resolveIcon: n } = g(), r = o(() => t("LuIcon", l.variant)), s = o(() => e.default || !l.name ? null : n(l.name, l.size)), c = o(
112
- () => l.size ? { width: `${l.size}px`, height: `${l.size}px` } : void 0
113
- );
114
- return (u, d) => (i(), m("span", S(u.$attrs, {
115
- class: r.value,
116
- "aria-hidden": "true",
117
- style: c.value
118
- }), [
119
- b(u.$slots, "default", {}, () => [
120
- s.value ? (i(), A(K(s.value), {
121
- key: 0,
122
- size: a.size,
123
- "stroke-width": a.strokeWidth
124
- }, null, 8, ["size", "stroke-width"])) : V("", !0)
125
- ])
126
- ], 16));
127
- }
128
- }), le = /* @__PURE__ */ k({
129
- __name: "LuText",
130
- props: {
131
- variant: {},
132
- as: {}
133
- },
134
- setup(a) {
135
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuText", l.variant));
136
- return (n, r) => (i(), A(K(a.as ?? "span"), S(n.$attrs, { class: t.value }), {
137
- default: w(() => [
138
- b(n.$slots, "default")
139
- ]),
140
- _: 3
141
- }, 16, ["class"]));
142
- }
143
- }), $e = ["name", "aria-checked", "disabled"], Ce = /* @__PURE__ */ k({
144
- __name: "LuSwitch",
145
- props: {
146
- modelValue: { type: Boolean },
147
- variant: {},
148
- disabled: { type: Boolean },
149
- name: {},
150
- error: {}
151
- },
152
- emits: ["update:modelValue", "blur"],
153
- setup(a, { emit: l }) {
154
- const e = a, t = l, { resolveSkin: n } = g(), r = o(() => n("LuSwitch", e.variant)), s = o(() => n("LuSwitch", "checked")), c = o(() => n("LuSwitchThumb", e.variant)), u = o(() => n("LuSwitchThumb", "checked")), d = H(D, null), v = T(e.modelValue), h = o(() => e.modelValue !== void 0 ? e.modelValue : !!v.value), L = o(() => e.disabled || (d == null ? void 0 : d.disabled.value)), f = () => {
155
- if (L.value) return;
156
- const y = !h.value;
157
- v.value = y, t("update:modelValue", y);
158
- }, $ = () => {
159
- e.name && d && (d.validateOn.value === "blur" || d.validateOn.value), t("blur");
160
- };
161
- return R(() => {
162
- !e.name || !d || d.register({
163
- name: e.name,
164
- getValue: () => v.value,
165
- setValue: (y) => {
166
- v.value = !!y;
167
- },
168
- setError: (y) => {
169
- }
170
- });
171
- }), G(() => {
172
- e.name && d && d.unregister(e.name);
173
- }), (y, _) => (i(), m("button", {
174
- role: "switch",
175
- type: "button",
176
- name: a.name,
177
- "aria-checked": h.value,
178
- disabled: L.value,
179
- class: p(I(ne)(r.value, h.value ? s.value : "")),
180
- onClick: f,
181
- onBlur: $
182
- }, [
183
- C("span", {
184
- class: p(I(ne)(c.value, h.value ? u.value : ""))
185
- }, null, 2)
186
- ], 42, $e));
187
- }
188
- }), Ve = ["value", "name", "disabled"], _e = ["value"], Be = /* @__PURE__ */ k({
189
- __name: "LuSelect",
190
- props: {
191
- modelValue: {},
192
- variant: {},
193
- options: {},
194
- name: {},
195
- error: {}
196
- },
197
- emits: ["update:modelValue", "blur"],
198
- setup(a, { emit: l }) {
199
- const e = a, t = l, { resolveSkin: n } = g(), r = o(() => n("LuSelect", e.variant)), s = H(D, null), c = T(e.modelValue), u = (v) => {
200
- const h = v.target.value;
201
- c.value = h, t("update:modelValue", h);
202
- }, d = () => {
203
- e.name && s && (s.validateOn.value === "blur" || s.validateOn.value), t("blur");
204
- };
205
- return R(() => {
206
- !e.name || !s || s.register({
207
- name: e.name,
208
- getValue: () => c.value,
209
- setValue: (v) => {
210
- c.value = v;
211
- },
212
- setError: (v) => {
213
- }
214
- });
215
- }), G(() => {
216
- e.name && s && s.unregister(e.name);
217
- }), (v, h) => {
218
- var L;
219
- return i(), m("select", S(v.$attrs, {
220
- class: r.value,
221
- value: a.modelValue,
222
- name: a.name,
223
- disabled: (L = I(s)) == null ? void 0 : L.disabled.value,
224
- onChange: u,
225
- onBlur: d
226
- }), [
227
- (i(!0), m(q, null, se(a.options, (f) => (i(), m("option", {
228
- key: f.value,
229
- value: f.value
230
- }, M(f.label), 9, _e))), 128))
231
- ], 16, Ve);
232
- };
233
- }
234
- }), Ye = /* @__PURE__ */ k({
235
- __name: "LuThemeSwitch",
236
- setup(a) {
237
- const { resolved: l, setMode: e } = ve(), t = o(() => l.value === "dark"), n = (r) => {
238
- e(r ? "dark" : "light");
239
- };
240
- return (r, s) => (i(), A(Ce, S({
241
- "model-value": t.value,
242
- variant: "theme"
243
- }, r.$attrs, { "onUpdate:modelValue": n }), null, 16, ["model-value"]));
244
- }
245
- }), Ze = /* @__PURE__ */ k({
246
- __name: "LuThemeSelect",
247
- setup(a) {
248
- const { mode: l, setMode: e } = ve(), t = [
249
- { value: "system", label: "System" },
250
- { value: "light", label: "Light" },
251
- { value: "dark", label: "Dark" }
252
- ], n = (r) => {
253
- e(r);
254
- };
255
- return (r, s) => (i(), A(Be, S({
256
- "model-value": I(l),
257
- variant: "theme",
258
- options: t
259
- }, r.$attrs, { "onUpdate:modelValue": n }), null, 16, ["model-value"]));
260
- }
261
- }), we = /* @__PURE__ */ k({
262
- __name: "LuTabs",
263
- props: {
264
- variant: {},
265
- modelValue: {}
266
- },
267
- emits: ["update:modelValue"],
268
- setup(a, { emit: l }) {
269
- const e = a, t = l, n = T(e.modelValue);
270
- F(() => e.modelValue, (c) => n.value = c), F(n, (c) => {
271
- c !== void 0 && t("update:modelValue", c);
272
- }), J("lu-tabs-active", n);
273
- const { resolveSkin: r } = g(), s = o(() => r("LuTabs", e.variant));
274
- return (c, u) => (i(), m("div", S(c.$attrs, { class: s.value }), [
275
- b(c.$slots, "default")
276
- ], 16));
277
- }
278
- }), Te = /* @__PURE__ */ k({
279
- __name: "LuTabList",
280
- props: {
281
- variant: {}
282
- },
283
- setup(a) {
284
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuTabList", l.variant));
285
- return (n, r) => (i(), m("div", S(n.$attrs, { class: t.value }), [
286
- b(n.$slots, "default")
287
- ], 16));
288
- }
289
- }), re = /* @__PURE__ */ k({
290
- __name: "LuTab",
291
- props: {
292
- variant: {},
293
- value: {}
294
- },
295
- setup(a) {
296
- const l = a, e = H("lu-tabs-active"), t = o(() => (e == null ? void 0 : e.value) === l.value), n = () => {
297
- e && (e.value = l.value);
298
- }, { resolveSkin: r } = g(), s = o(() => r("LuTab", l.variant)), c = o(() => r("LuTab", "active"));
299
- return (u, d) => (i(), m("button", S(u.$attrs, {
300
- class: [s.value, t.value ? c.value : ""],
301
- onClick: n
302
- }), [
303
- b(u.$slots, "default")
304
- ], 16));
305
- }
306
- }), xe = /* @__PURE__ */ k({
307
- __name: "LuTabPanel",
308
- props: {
309
- variant: {},
310
- value: {}
311
- },
312
- setup(a) {
313
- const l = a, e = H("lu-tabs-active"), t = o(() => (e == null ? void 0 : e.value) === l.value), { resolveSkin: n } = g(), r = o(() => n("LuTabPanel", l.variant));
314
- return (s, c) => ie((i(), m("div", S(s.$attrs, { class: r.value }), [
315
- b(s.$slots, "default")
316
- ], 16)), [
317
- [ce, t.value]
318
- ]);
319
- }
320
- }), ea = /* @__PURE__ */ k({
321
- __name: "LuBadge",
322
- props: {
323
- variant: {},
324
- as: {}
325
- },
326
- setup(a) {
327
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuBadge", l.variant));
328
- return (n, r) => (i(), A(K(a.as || "span"), S(n.$attrs, { class: t.value }), {
329
- default: w(() => [
330
- b(n.$slots, "default")
331
- ]),
332
- _: 3
333
- }, 16, ["class"]));
334
- }
335
- }), aa = /* @__PURE__ */ k({
336
- __name: "LuProgressBar",
337
- props: {
338
- variant: {},
339
- value: {},
340
- max: {}
341
- },
342
- setup(a) {
343
- const l = a, e = o(() => {
344
- const s = l.max ?? 100;
345
- return Math.max(0, Math.min(100, l.value / s * 100));
346
- }), { resolveSkin: t } = g(), n = o(() => t("LuProgressBar", l.variant)), r = o(() => t("LuProgressBarFill", l.variant));
347
- return (s, c) => (i(), m("div", S(s.$attrs, { class: n.value }), [
348
- C("div", {
349
- class: p(r.value),
350
- style: ke({ width: `${e.value}%` })
351
- }, null, 6)
352
- ], 16));
353
- }
354
- }), ta = /* @__PURE__ */ k({
355
- __name: "LuTooltip",
356
- props: {
357
- variant: {},
358
- position: {},
359
- delay: {}
360
- },
361
- setup(a) {
362
- const l = a, e = T(!1);
363
- let t = null;
364
- const n = () => {
365
- t && clearTimeout(t), l.delay ? t = setTimeout(() => e.value = !0, l.delay) : e.value = !0;
366
- }, r = () => {
367
- t && clearTimeout(t), e.value = !1;
368
- }, { resolveSkin: s } = g(), c = o(() => s("LuTooltip", l.variant)), u = o(() => s("LuTooltipContent", l.position ?? l.variant));
369
- return (d, v) => (i(), m("div", S(d.$attrs, {
370
- class: c.value,
371
- onMouseenter: n,
372
- onMouseleave: r
373
- }), [
374
- b(d.$slots, "trigger"),
375
- e.value ? (i(), m("div", {
376
- key: 0,
377
- class: p(u.value)
378
- }, [
379
- b(d.$slots, "content")
380
- ], 2)) : V("", !0)
381
- ], 16));
382
- }
383
- }), na = /* @__PURE__ */ k({
384
- __name: "LuCollapsible",
385
- props: {
386
- variant: {},
387
- modelValue: { type: Boolean },
388
- defaultOpen: { type: Boolean }
389
- },
390
- emits: ["update:modelValue"],
391
- setup(a, { emit: l }) {
392
- const e = a, t = l, n = T(e.modelValue ?? e.defaultOpen ?? !1);
393
- F(() => e.modelValue, (v) => {
394
- v !== void 0 && (n.value = v);
395
- });
396
- const r = () => {
397
- n.value = !n.value, t("update:modelValue", n.value);
398
- }, { resolveSkin: s } = g(), c = o(() => s("LuCollapsible", e.variant)), u = o(() => s("LuCollapsibleTrigger", e.variant)), d = o(() => s("LuCollapsibleContent", e.variant));
399
- return (v, h) => (i(), m("div", S(v.$attrs, { class: c.value }), [
400
- C("button", {
401
- class: p(u.value),
402
- onClick: r
403
- }, [
404
- b(v.$slots, "trigger", { isOpen: n.value })
405
- ], 2),
406
- ie(C("div", {
407
- class: p(d.value)
408
- }, [
409
- b(v.$slots, "content")
410
- ], 2), [
411
- [ce, n.value]
412
- ])
413
- ], 16));
414
- }
415
- }), Oe = ["data-size"], Ae = ["src", "alt"], la = /* @__PURE__ */ k({
416
- __name: "LuAvatar",
417
- props: {
418
- variant: {},
419
- src: {},
420
- fallback: {},
421
- alt: {},
422
- size: {}
423
- },
424
- setup(a) {
425
- const l = a, e = T(!1), { resolveSkin: t } = g(), n = o(() => t("LuAvatar", l.variant)), r = o(() => t("LuAvatarImage", l.variant)), s = o(() => t("LuAvatarFallback", l.variant));
426
- return (c, u) => (i(), m("div", S(c.$attrs, {
427
- class: n.value,
428
- "data-size": a.size
429
- }), [
430
- a.src && !e.value ? (i(), m("img", {
431
- key: 0,
432
- src: a.src,
433
- alt: a.alt,
434
- class: p(r.value),
435
- onError: u[0] || (u[0] = (d) => e.value = !0)
436
- }, null, 42, Ae)) : (i(), m("div", {
437
- key: 1,
438
- class: p(s.value)
439
- }, [
440
- b(c.$slots, "default", {}, () => [
441
- E(M(a.fallback), 1)
442
- ])
443
- ], 2))
444
- ], 16, Oe));
445
- }
446
- }), Me = /* @__PURE__ */ k({
447
- __name: "LuLink",
448
- props: {
449
- variant: {},
450
- as: {},
451
- to: {},
452
- href: {},
453
- target: {}
454
- },
455
- emits: ["click"],
456
- setup(a, { emit: l }) {
457
- const e = a, t = l, n = o(() => {
458
- if (e.as) return e.as;
459
- if (e.to) {
460
- const u = ue("RouterLink");
461
- return typeof u == "string" ? "a" : u;
462
- }
463
- return "a";
464
- }), r = o(() => {
465
- const u = { ...e };
466
- return delete u.variant, delete u.as, u;
467
- }), { resolveSkin: s } = g(), c = o(() => s("LuLink", e.variant));
468
- return (u, d) => (i(), A(K(n.value), S(r.value, {
469
- class: c.value,
470
- onClick: d[0] || (d[0] = (v) => t("click", v))
471
- }), {
472
- default: w(() => [
473
- b(u.$slots, "default")
474
- ]),
475
- _: 3
476
- }, 16, ["class"]));
477
- }
478
- }), sa = /* @__PURE__ */ k({
479
- __name: "LuDivider",
480
- props: {
481
- variant: {},
482
- orientation: { default: "horizontal" }
483
- },
484
- setup(a) {
485
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuDivider", l.variant || l.orientation));
486
- return (n, r) => (i(), m("div", S(n.$attrs, { class: t.value }), null, 16));
487
- }
488
- }), oa = /* @__PURE__ */ k({
489
- __name: "LuPageHeader",
490
- props: {
491
- variant: {},
492
- title: {},
493
- description: {},
494
- level: { default: "h1" }
495
- },
496
- setup(a) {
497
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuPageHeader", l.variant));
498
- return (n, r) => (i(), m("div", S(n.$attrs, { class: t.value }), [
499
- B(le, {
500
- as: a.level,
501
- variant: "page-title"
502
- }, {
503
- default: w(() => [
504
- E(M(a.title), 1)
505
- ]),
506
- _: 1
507
- }, 8, ["as"]),
508
- a.description ? (i(), A(le, {
509
- key: 0,
510
- as: "p",
511
- variant: "page-subtitle",
512
- class: "mt-2"
513
- }, {
514
- default: w(() => [
515
- E(M(a.description), 1)
516
- ]),
517
- _: 1
518
- })) : V("", !0)
519
- ], 16));
520
- }
521
- }), ra = /* @__PURE__ */ k({
522
- __name: "LuCard",
523
- props: {
524
- variant: {},
525
- as: { default: "div" },
526
- padding: {},
527
- width: {},
528
- height: {}
529
- },
530
- setup(a) {
531
- const l = a, { resolveSkin: e } = g(), t = o(() => ne(
532
- e("LuCard", l.variant),
533
- ge(l)
534
- ));
535
- return (n, r) => (i(), A(K(a.as), S(n.$attrs, { class: t.value }), {
536
- default: w(() => [
537
- b(n.$slots, "default")
538
- ]),
539
- _: 3
540
- }, 16, ["class"]));
541
- }
542
- }), ua = /* @__PURE__ */ k({
543
- __name: "LuTable",
544
- props: {
545
- variant: {}
546
- },
547
- setup(a) {
548
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuTable", l.variant));
549
- return (n, r) => (i(), m("table", S(n.$attrs, { class: t.value }), [
550
- b(n.$slots, "default")
551
- ], 16));
552
- }
553
- }), ia = /* @__PURE__ */ k({
554
- __name: "LuTableHead",
555
- props: {
556
- variant: {}
557
- },
558
- setup(a) {
559
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuTableHead", l.variant));
560
- return (n, r) => (i(), m("thead", S(n.$attrs, { class: t.value }), [
561
- b(n.$slots, "default")
562
- ], 16));
563
- }
564
- }), ca = /* @__PURE__ */ k({
565
- __name: "LuTableBody",
566
- props: {
567
- variant: {}
568
- },
569
- setup(a) {
570
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuTableBody", l.variant));
571
- return (n, r) => (i(), m("tbody", S(n.$attrs, { class: t.value }), [
572
- b(n.$slots, "default")
573
- ], 16));
574
- }
575
- }), da = /* @__PURE__ */ k({
576
- __name: "LuTableRow",
577
- props: {
578
- variant: {}
579
- },
580
- setup(a) {
581
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuTableRow", l.variant));
582
- return (n, r) => (i(), m("tr", S(n.$attrs, { class: t.value }), [
583
- b(n.$slots, "default")
584
- ], 16));
585
- }
586
- }), va = /* @__PURE__ */ k({
587
- __name: "LuTableHeadCell",
588
- props: {
589
- variant: {}
590
- },
591
- setup(a) {
592
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuTableHeadCell", l.variant));
593
- return (n, r) => (i(), m("th", S(n.$attrs, { class: t.value }), [
594
- b(n.$slots, "default")
595
- ], 16));
596
- }
597
- }), ma = /* @__PURE__ */ k({
598
- __name: "LuTableCell",
599
- props: {
600
- variant: {}
601
- },
602
- setup(a) {
603
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuTableCell", l.variant));
604
- return (n, r) => (i(), m("td", S(n.$attrs, { class: t.value }), [
605
- b(n.$slots, "default")
606
- ], 16));
607
- }
608
- }), pa = /* @__PURE__ */ k({
609
- __name: "LuForm",
610
- props: {
611
- rules: { default: () => ({}) },
612
- validateOn: { default: "submit" },
613
- resetOnSubmit: { type: Boolean, default: !1 },
614
- disabled: { type: Boolean, default: !1 }
615
- },
616
- emits: ["submit", "reset", "error"],
617
- setup(a, { expose: l, emit: e }) {
618
- const t = a, n = e, r = /* @__PURE__ */ new Map(), s = T({}), c = T(!1), u = o(() => Object.keys(s.value).length > 0);
619
- async function d() {
620
- var $;
621
- const f = {};
622
- for (const [y, _] of r) {
623
- const O = ($ = t.rules) == null ? void 0 : $[y];
624
- if (!O) continue;
625
- const N = Array.isArray(O) ? O : [O], Q = _.getValue();
626
- for (const W of N) {
627
- const z = await W(Q);
628
- if (z) {
629
- f[y] = z, _.setError(z);
630
- break;
631
- } else
632
- _.setError(null);
633
- }
634
- }
635
- return s.value = f, Object.keys(f).length === 0;
636
- }
637
- async function v() {
638
- c.value = !0;
639
- try {
640
- if (!await d()) {
641
- n("error", s.value);
642
- return;
643
- }
644
- const $ = {};
645
- for (const [y, _] of r)
646
- $[y] = _.getValue();
647
- n("submit", $), t.resetOnSubmit && h();
648
- } finally {
649
- c.value = !1;
650
- }
651
- }
652
- function h() {
653
- s.value = {};
654
- for (const f of r.values())
655
- f.setValue(void 0), f.setError(null);
656
- n("reset");
657
- }
658
- const L = {
659
- register(f) {
660
- r.set(f.name, f);
661
- },
662
- unregister(f) {
663
- r.delete(f);
664
- },
665
- getError(f) {
666
- return s.value[f] ?? null;
667
- },
668
- validateOn: o(() => t.validateOn),
669
- disabled: o(() => t.disabled)
670
- };
671
- return J(D, L), l({
672
- submit: v,
673
- reset: h,
674
- errors: oe(s),
675
- pending: oe(c),
676
- values: o(() => {
677
- const f = {};
678
- for (const [$, y] of r) f[$] = y.getValue();
679
- return f;
680
- })
681
- }), (f, $) => (i(), m("form", {
682
- onSubmit: U(v, ["prevent"]),
683
- onReset: U(h, ["prevent"])
684
- }, [
685
- b(f.$slots, "default"),
686
- b(f.$slots, "errors", {
687
- errors: s.value,
688
- hasErrors: u.value
689
- }),
690
- b(f.$slots, "actions", {
691
- submit: v,
692
- reset: h,
693
- pending: c.value
694
- })
695
- ], 32));
696
- }
697
- }), Pe = ["value", "name", "disabled"], fa = /* @__PURE__ */ k({
698
- __name: "LuTextarea",
699
- props: {
700
- modelValue: {},
701
- variant: {},
702
- name: {},
703
- error: {}
704
- },
705
- emits: ["update:modelValue", "blur"],
706
- setup(a, { emit: l }) {
707
- const e = a, t = l, { resolveSkin: n } = g(), r = o(() => n("LuTextarea", e.variant)), s = H(D, null), c = T(e.modelValue), u = (v) => {
708
- const h = v.target.value;
709
- c.value = h, t("update:modelValue", h);
710
- }, d = () => {
711
- e.name && s && (s.validateOn.value === "blur" || s.validateOn.value), t("blur");
712
- };
713
- return R(() => {
714
- !e.name || !s || s.register({
715
- name: e.name,
716
- getValue: () => c.value,
717
- setValue: (v) => {
718
- c.value = v;
719
- },
720
- setError: (v) => {
721
- }
722
- });
723
- }), G(() => {
724
- e.name && s && s.unregister(e.name);
725
- }), (v, h) => {
726
- var L;
727
- return i(), m("textarea", S(v.$attrs, {
728
- class: r.value,
729
- value: a.modelValue,
730
- name: a.name,
731
- disabled: (L = I(s)) == null ? void 0 : L.disabled.value,
732
- onInput: u,
733
- onBlur: d
734
- }), null, 16, Pe);
735
- };
736
- }
737
- }), Ee = ["checked", "name", "disabled"], ka = /* @__PURE__ */ k({
738
- __name: "LuCheckbox",
739
- props: {
740
- modelValue: { type: Boolean },
741
- variant: {},
742
- name: {},
743
- label: {},
744
- error: {}
745
- },
746
- emits: ["update:modelValue", "change", "blur"],
747
- setup(a, { emit: l }) {
748
- const e = a, t = l, { resolveSkin: n } = g(), r = o(() => n("LuCheckboxContainer", e.variant)), s = o(() => n("LuCheckbox", e.variant)), c = o(() => n("LuCheckboxLabel", e.variant)), u = H(D, null), d = T(!!e.modelValue);
749
- F(() => e.modelValue, (f) => {
750
- d.value = !!f;
751
- });
752
- const v = (f) => {
753
- const y = f.target.checked;
754
- d.value = y, t("update:modelValue", y), t("change", y), e.name && u && (u.validateOn.value === "blur" || u.validateOn.value);
755
- }, h = () => {
756
- if (u != null && u.disabled.value || "disabled" in e && e.disabled !== !1) return;
757
- const f = !d.value;
758
- d.value = f, t("update:modelValue", f), t("change", f), e.name && u && (u.validateOn.value === "blur" || u.validateOn.value);
759
- }, L = () => {
760
- e.name && u && (u.validateOn.value === "blur" || u.validateOn.value), t("blur");
761
- };
762
- return R(() => {
763
- !e.name || !u || u.register({
764
- name: e.name,
765
- getValue: () => d.value,
766
- setValue: (f) => {
767
- d.value = !!f;
768
- },
769
- setError: (f) => {
770
- }
771
- });
772
- }), G(() => {
773
- e.name && u && u.unregister(e.name);
774
- }), (f, $) => {
775
- var y;
776
- return i(), m("div", {
777
- class: p(r.value)
778
- }, [
779
- C("input", S({ type: "checkbox" }, f.$attrs, {
780
- class: s.value,
781
- checked: a.modelValue,
782
- name: a.name,
783
- disabled: (y = I(u)) == null ? void 0 : y.disabled.value,
784
- onChange: v,
785
- onBlur: L
786
- }), null, 16, Ee),
787
- f.$slots.default || a.label ? (i(), m("label", {
788
- key: 0,
789
- class: p(c.value),
790
- onClick: U(h, ["prevent"])
791
- }, [
792
- b(f.$slots, "default", {}, () => [
793
- E(M(a.label), 1)
794
- ])
795
- ], 2)) : V("", !0)
796
- ], 2);
797
- };
798
- }
799
- }), me = Symbol("LuRadioGroupContext"), He = ["aria-disabled"], ba = /* @__PURE__ */ k({
800
- __name: "LuRadioGroup",
801
- props: {
802
- modelValue: {},
803
- name: {},
804
- variant: {},
805
- disabled: { type: Boolean }
806
- },
807
- emits: ["update:modelValue", "change"],
808
- setup(a, { emit: l }) {
809
- const e = a, t = l, { resolveSkin: n } = g(), r = o(() => n("LuRadioGroup", e.variant)), s = H(D, null), c = T(e.modelValue);
810
- F(() => e.modelValue, (d) => {
811
- c.value = d;
812
- });
813
- const u = (d) => {
814
- e.disabled || s != null && s.disabled.value || (c.value = d, t("update:modelValue", d), t("change", d), e.name && s && (s.validateOn.value === "blur" || s.validateOn.value));
815
- };
816
- return J(me, {
817
- name: e.name,
818
- modelValue: o(() => c.value),
819
- updateValue: u,
820
- disabled: o(() => !!e.disabled || !!(s != null && s.disabled.value))
821
- }), R(() => {
822
- !e.name || !s || s.register({
823
- name: e.name,
824
- getValue: () => c.value,
825
- setValue: (d) => {
826
- c.value = d;
827
- },
828
- setError: (d) => {
829
- }
830
- });
831
- }), G(() => {
832
- e.name && s && s.unregister(e.name);
833
- }), (d, v) => {
834
- var h;
835
- return i(), m("div", {
836
- class: p(r.value),
837
- role: "radiogroup",
838
- "aria-disabled": a.disabled || ((h = I(s)) == null ? void 0 : h.disabled.value)
839
- }, [
840
- b(d.$slots, "default")
841
- ], 10, He);
842
- };
843
- }
844
- }), Ie = ["name", "value", "checked", "disabled"], ga = /* @__PURE__ */ k({
845
- __name: "LuRadio",
846
- props: {
847
- value: {},
848
- variant: {},
849
- label: {},
850
- disabled: { type: Boolean }
851
- },
852
- setup(a) {
853
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuRadioContainer", l.variant)), n = o(() => e("LuRadio", l.variant)), r = o(() => e("LuRadioLabel", l.variant)), s = H(me, null);
854
- s || console.warn("LuRadio must be used within a LuRadioGroup");
855
- const c = o(() => (s == null ? void 0 : s.modelValue.value) === l.value), u = () => {
856
- l.disabled || s != null && s.disabled.value || s == null || s.updateValue(l.value);
857
- }, d = () => {
858
- l.disabled || s != null && s.disabled.value || s == null || s.updateValue(l.value);
859
- };
860
- return (v, h) => {
861
- var L, f;
862
- return i(), m("div", {
863
- class: p(t.value)
864
- }, [
865
- C("input", S({ type: "radio" }, v.$attrs, {
866
- class: n.value,
867
- name: (L = I(s)) == null ? void 0 : L.name,
868
- value: a.value,
869
- checked: c.value,
870
- disabled: ((f = I(s)) == null ? void 0 : f.disabled.value) || a.disabled,
871
- onChange: u
872
- }), null, 16, Ie),
873
- v.$slots.default || a.label ? (i(), m("label", {
874
- key: 0,
875
- class: p(r.value),
876
- onClick: U(d, ["prevent"])
877
- }, [
878
- b(v.$slots, "default", {}, () => [
879
- E(M(a.label), 1)
880
- ])
881
- ], 2)) : V("", !0)
882
- ], 2);
883
- };
884
- }
885
- }), ha = /* @__PURE__ */ k({
886
- __name: "LuAlert",
887
- props: {
888
- variant: {},
889
- icon: {}
890
- },
891
- setup(a) {
892
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuAlert", l.variant)), n = o(() => e("LuAlertIcon", l.variant)), r = o(() => e("LuAlertContent", l.variant)), s = o(() => e("LuAlertAction", l.variant));
893
- return (c, u) => (i(), m("div", {
894
- class: p(t.value),
895
- role: "alert"
896
- }, [
897
- c.$slots.icon || a.icon ? (i(), m("div", {
898
- key: 0,
899
- class: p(n.value)
900
- }, [
901
- b(c.$slots, "icon", {}, () => [
902
- a.icon ? (i(), A(P, {
903
- key: 0,
904
- name: a.icon
905
- }, null, 8, ["name"])) : V("", !0)
906
- ])
907
- ], 2)) : V("", !0),
908
- C("div", {
909
- class: p(r.value)
910
- }, [
911
- b(c.$slots, "default")
912
- ], 2),
913
- c.$slots.action ? (i(), m("div", {
914
- key: 1,
915
- class: p(s.value)
916
- }, [
917
- b(c.$slots, "action")
918
- ], 2)) : V("", !0)
919
- ], 2));
920
- }
921
- }), La = /* @__PURE__ */ k({
922
- __name: "LuSpinner",
923
- props: {
924
- variant: {}
925
- },
926
- setup(a) {
927
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuSpinner", l.variant));
928
- return (n, r) => (i(), m("svg", {
929
- class: p(t.value),
930
- xmlns: "http://www.w3.org/2000/svg",
931
- fill: "none",
932
- viewBox: "0 0 24 24",
933
- role: "status",
934
- "aria-label": "Loading"
935
- }, [...r[0] || (r[0] = [
936
- C("circle", {
937
- class: "opacity-25",
938
- cx: "12",
939
- cy: "12",
940
- r: "10",
941
- stroke: "currentColor",
942
- "stroke-width": "4"
943
- }, null, -1),
944
- C("path", {
945
- class: "opacity-75",
946
- fill: "currentColor",
947
- d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
948
- }, null, -1)
949
- ])], 2));
950
- }
951
- }), ya = /* @__PURE__ */ k({
952
- __name: "LuSkeleton",
953
- props: {
954
- variant: {}
955
- },
956
- setup(a) {
957
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuSkeleton", l.variant));
958
- return (n, r) => (i(), m("div", {
959
- class: p(t.value),
960
- "aria-hidden": "true"
961
- }, null, 2));
962
- }
963
- }), Sa = /* @__PURE__ */ k({
964
- __name: "LuTag",
965
- props: {
966
- variant: {},
967
- closable: { type: Boolean }
968
- },
969
- emits: ["close"],
970
- setup(a, { emit: l }) {
971
- const e = a, t = l, { resolveSkin: n } = g(), r = o(() => n("LuTag", e.variant)), s = o(() => n("LuTagCloseButton", e.variant)), c = o(() => n("LuTagIcon", e.variant));
972
- return (u, d) => (i(), m("span", {
973
- class: p(r.value)
974
- }, [
975
- b(u.$slots, "default"),
976
- a.closable ? (i(), m("button", {
977
- key: 0,
978
- type: "button",
979
- class: p(s.value),
980
- onClick: d[0] || (d[0] = U((v) => t("close"), ["stop"])),
981
- "aria-label": "Remove"
982
- }, [
983
- B(P, {
984
- name: "x",
985
- class: p(c.value)
986
- }, null, 8, ["class"])
987
- ], 2)) : V("", !0)
988
- ], 2));
989
- }
990
- }), Re = { "aria-label": "breadcrumb" }, ze = ["aria-current"], $a = /* @__PURE__ */ k({
991
- __name: "LuBreadcrumb",
992
- props: {
993
- items: {},
994
- variant: {},
995
- separatorIcon: { default: "chevron-right" }
996
- },
997
- setup(a) {
998
- const l = a, { resolveSkin: e } = g(), t = o(() => e("LuBreadcrumb", l.variant)), n = o(() => e("LuBreadcrumbItem", l.variant)), r = o(() => e("LuBreadcrumbLink", l.variant)), s = o(() => e("LuBreadcrumbPage", l.variant)), c = o(() => e("LuBreadcrumbSeparator", l.variant));
999
- return (u, d) => (i(), m("nav", Re, [
1000
- C("ol", {
1001
- class: p(t.value)
1002
- }, [
1003
- (i(!0), m(q, null, se(a.items, (v, h) => (i(), m("li", {
1004
- key: h,
1005
- class: p(n.value)
1006
- }, [
1007
- v.href || v.to ? (i(), A(Me, {
1008
- key: 0,
1009
- href: v.href,
1010
- to: v.to,
1011
- variant: v.current ? "nav-active" : "nav",
1012
- "aria-current": v.current ? "page" : void 0,
1013
- class: p(r.value)
1014
- }, {
1015
- default: w(() => [
1016
- v.icon ? (i(), A(P, {
1017
- key: 0,
1018
- name: v.icon,
1019
- class: "mr-2 h-4 w-4"
1020
- }, null, 8, ["name"])) : V("", !0),
1021
- E(" " + M(v.label), 1)
1022
- ]),
1023
- _: 2
1024
- }, 1032, ["href", "to", "variant", "aria-current", "class"])) : (i(), m("span", {
1025
- key: 1,
1026
- class: p(s.value),
1027
- "aria-current": v.current ? "page" : void 0
1028
- }, [
1029
- v.icon ? (i(), A(P, {
1030
- key: 0,
1031
- name: v.icon,
1032
- class: "mr-2 h-4 w-4"
1033
- }, null, 8, ["name"])) : V("", !0),
1034
- E(" " + M(v.label), 1)
1035
- ], 10, ze)),
1036
- h < a.items.length - 1 ? (i(), A(P, {
1037
- key: 2,
1038
- name: a.separatorIcon,
1039
- class: p(c.value)
1040
- }, null, 8, ["name", "class"])) : V("", !0)
1041
- ], 2))), 128))
1042
- ], 2)
1043
- ]));
1044
- }
1045
- }), Fe = ["aria-expanded"], Ca = /* @__PURE__ */ k({
1046
- __name: "LuMenu",
1047
- props: {
1048
- variant: {},
1049
- align: { default: "left" }
1050
- },
1051
- emits: ["open", "close"],
1052
- setup(a, { emit: l }) {
1053
- const e = a, t = l, n = T(!1), r = T(null), { resolveSkin: s } = g(), c = o(() => s("LuMenu", e.variant)), u = o(() => s("LuMenuTrigger", e.variant)), d = o(() => s("LuMenuContent", e.variant)), v = o(() => s("LuMenuGroup", e.variant)), h = o(() => e.align === "right" ? "right-0 origin-top-right" : "left-0 origin-top-left"), L = () => {
1054
- n.value = !n.value, n.value ? t("open") : t("close");
1055
- }, f = () => {
1056
- n.value && (n.value = !1, t("close"));
1057
- }, $ = (y) => {
1058
- r.value && !r.value.contains(y.target) && f();
1059
- };
1060
- return R(() => {
1061
- document.addEventListener("click", $);
1062
- }), de(() => {
1063
- document.removeEventListener("click", $);
1064
- }), (y, _) => (i(), m("div", {
1065
- class: p(c.value),
1066
- ref_key: "dropdownRef",
1067
- ref: r
1068
- }, [
1069
- C("div", {
1070
- onClick: L,
1071
- class: p(u.value),
1072
- "aria-haspopup": "true",
1073
- "aria-expanded": n.value
1074
- }, [
1075
- b(y.$slots, "trigger", {}, () => [
1076
- B(Z, { variant: "default" }, {
1077
- default: w(() => [
1078
- _[0] || (_[0] = E("Options ", -1)),
1079
- B(P, {
1080
- name: "chevron-down",
1081
- class: "ml-2 h-4 w-4"
1082
- })
1083
- ]),
1084
- _: 1
1085
- })
1086
- ])
1087
- ], 10, Fe),
1088
- B(te, {
1089
- "enter-active-class": "transition ease-out duration-100",
1090
- "enter-from-class": "transform opacity-0 scale-95",
1091
- "enter-to-class": "transform opacity-100 scale-100",
1092
- "leave-active-class": "transition ease-in duration-75",
1093
- "leave-from-class": "transform opacity-100 scale-100",
1094
- "leave-to-class": "transform opacity-0 scale-95"
1095
- }, {
1096
- default: w(() => [
1097
- n.value ? (i(), m("div", {
1098
- key: 0,
1099
- class: p([d.value, h.value])
1100
- }, [
1101
- C("div", {
1102
- class: p(v.value),
1103
- role: "menu",
1104
- "aria-orientation": "vertical",
1105
- "aria-labelledby": "options-menu"
1106
- }, [
1107
- b(y.$slots, "default")
1108
- ], 2)
1109
- ], 2)) : V("", !0)
1110
- ]),
1111
- _: 3
1112
- })
1113
- ], 2));
1114
- }
1115
- }), De = ["disabled", "data-disabled"], Va = /* @__PURE__ */ k({
1116
- __name: "LuMenuItem",
1117
- props: {
1118
- variant: {},
1119
- disabled: { type: Boolean }
1120
- },
1121
- emits: ["click"],
1122
- setup(a, { emit: l }) {
1123
- const e = a, t = l, { resolveSkin: n } = g(), r = o(() => n("LuMenuItem", e.variant)), s = (c) => {
1124
- if (e.disabled) {
1125
- c.preventDefault();
1126
- return;
1127
- }
1128
- t("click", c);
1129
- };
1130
- return (c, u) => (i(), m("button", {
1131
- type: "button",
1132
- class: p(r.value),
1133
- role: "menuitem",
1134
- disabled: a.disabled,
1135
- "data-disabled": a.disabled ? "" : void 0,
1136
- onClick: s
1137
- }, [
1138
- b(c.$slots, "default")
1139
- ], 10, De));
1140
- }
1141
- }), _a = /* @__PURE__ */ k({
1142
- __name: "LuPagination",
1143
- props: {
1144
- modelValue: {},
1145
- total: {},
1146
- pageSize: { default: 10 },
1147
- siblingCount: { default: 1 },
1148
- variant: {}
1149
- },
1150
- emits: ["update:modelValue", "change"],
1151
- setup(a, { emit: l }) {
1152
- const e = a, t = l, n = o(() => Math.ceil(e.total / e.pageSize)), r = o(() => {
1153
- const y = e.modelValue, _ = n.value, O = e.siblingCount;
1154
- if (_ <= 1) return [1];
1155
- const N = Math.max(y - O, 1), Q = Math.min(y + O, _), W = N > 2, z = Q < _ - 1;
1156
- if (!W && z) {
1157
- const j = 3 + 2 * O;
1158
- return [...Array.from({ length: Math.min(j, _) }, (x, ee) => ee + 1), "...", _];
1159
- }
1160
- if (W && !z) {
1161
- const j = 3 + 2 * O;
1162
- return [1, "...", ...Array.from({ length: Math.min(j, _) }, (x, ee) => _ - j + ee + 1)];
1163
- }
1164
- return W && z ? [1, "...", ...Array.from({ length: Q - N + 1 }, (X, x) => N + x), "...", _] : Array.from({ length: _ }, (j, X) => X + 1);
1165
- }), { resolveSkin: s } = g(), c = o(() => s("LuPagination", e.variant)), u = o(() => s("LuPaginationButton", e.variant)), d = o(() => s("LuPaginationPages", e.variant)), v = o(() => s("LuPaginationPageButton", e.variant)), h = o(() => s("LuPaginationEllipsis", e.variant)), L = (y) => {
1166
- y !== e.modelValue && (t("update:modelValue", y), t("change", y));
1167
- }, f = () => {
1168
- e.modelValue > 1 && L(e.modelValue - 1);
1169
- }, $ = () => {
1170
- e.modelValue < n.value && L(e.modelValue + 1);
1171
- };
1172
- return (y, _) => (i(), m("nav", {
1173
- "aria-label": "Pagination",
1174
- class: p(c.value)
1175
- }, [
1176
- B(Z, {
1177
- variant: "ghost",
1178
- disabled: a.modelValue <= 1,
1179
- onClick: f,
1180
- class: p(u.value),
1181
- "aria-label": "Previous page"
1182
- }, {
1183
- default: w(() => [
1184
- B(P, {
1185
- name: "chevron-left",
1186
- class: "h-4 w-4"
1187
- })
1188
- ]),
1189
- _: 1
1190
- }, 8, ["disabled", "class"]),
1191
- C("div", {
1192
- class: p(d.value)
1193
- }, [
1194
- (i(!0), m(q, null, se(r.value, (O) => (i(), m(q, { key: O }, [
1195
- O === "..." ? (i(), m("span", {
1196
- key: 0,
1197
- class: p(h.value)
1198
- }, "...", 2)) : (i(), A(Z, {
1199
- key: 1,
1200
- variant: O === a.modelValue ? "primary" : "ghost",
1201
- onClick: (N) => L(O),
1202
- class: p(v.value),
1203
- "aria-current": O === a.modelValue ? "page" : void 0
1204
- }, {
1205
- default: w(() => [
1206
- E(M(O), 1)
1207
- ]),
1208
- _: 2
1209
- }, 1032, ["variant", "onClick", "class", "aria-current"]))
1210
- ], 64))), 128))
1211
- ], 2),
1212
- B(Z, {
1213
- variant: "ghost",
1214
- disabled: a.modelValue >= n.value,
1215
- onClick: $,
1216
- class: p(u.value),
1217
- "aria-label": "Next page"
1218
- }, {
1219
- default: w(() => [
1220
- B(P, {
1221
- name: "chevron-right",
1222
- class: "h-4 w-4"
1223
- })
1224
- ]),
1225
- _: 1
1226
- }, 8, ["disabled", "class"])
1227
- ], 2));
1228
- }
1229
- }), Ba = /* @__PURE__ */ k({
1230
- __name: "LuModal",
1231
- props: {
1232
- modelValue: { type: Boolean },
1233
- title: {},
1234
- variant: {},
1235
- closable: { type: Boolean, default: !0 },
1236
- closeOnOverlayClick: { type: Boolean, default: !0 }
1237
- },
1238
- emits: ["update:modelValue", "close"],
1239
- setup(a, { emit: l }) {
1240
- const e = a, t = l, { resolveSkin: n } = g(), r = o(() => n("LuModalOverlay", e.variant)), s = o(() => n("LuModal", e.variant)), c = o(() => n("LuModalHeader", e.variant)), u = o(() => n("LuModalContent", e.variant)), d = o(() => n("LuModalFooter", e.variant)), v = o(() => n("LuModalCloseButton", e.variant)), h = () => {
1241
- e.closable && (t("update:modelValue", !1), t("close"));
1242
- }, L = () => {
1243
- e.closeOnOverlayClick && h();
1244
- }, f = ($) => {
1245
- $.key === "Escape" && e.modelValue && h();
1246
- };
1247
- return F(() => e.modelValue, ($) => {
1248
- typeof document < "u" && ($ ? document.body.style.overflow = "hidden" : document.body.style.overflow = "");
1249
- }, { immediate: !0 }), R(() => {
1250
- document.addEventListener("keydown", f);
1251
- }), de(() => {
1252
- document.removeEventListener("keydown", f), typeof document < "u" && (document.body.style.overflow = "");
1253
- }), ($, y) => (i(), A(be, { to: "body" }, [
1254
- B(te, {
1255
- "enter-active-class": "transition ease-out duration-200",
1256
- "enter-from-class": "opacity-0",
1257
- "enter-to-class": "opacity-100",
1258
- "leave-active-class": "transition ease-in duration-150",
1259
- "leave-from-class": "opacity-100",
1260
- "leave-to-class": "opacity-0"
1261
- }, {
1262
- default: w(() => [
1263
- a.modelValue ? (i(), m("div", {
1264
- key: 0,
1265
- class: p(r.value),
1266
- onClick: L,
1267
- "aria-modal": "true",
1268
- role: "dialog",
1269
- tabindex: "-1"
1270
- }, [
1271
- B(te, {
1272
- "enter-active-class": "transition ease-out duration-200",
1273
- "enter-from-class": "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
1274
- "enter-to-class": "opacity-100 translate-y-0 sm:scale-100",
1275
- "leave-active-class": "transition ease-in duration-150",
1276
- "leave-from-class": "opacity-100 translate-y-0 sm:scale-100",
1277
- "leave-to-class": "opacity-0 translate-y-4 sm:translate-y-0 sm:scale-95",
1278
- appear: ""
1279
- }, {
1280
- default: w(() => [
1281
- a.modelValue ? (i(), m("div", {
1282
- key: 0,
1283
- class: p(s.value),
1284
- onClick: y[0] || (y[0] = U(() => {
1285
- }, ["stop"]))
1286
- }, [
1287
- $.$slots.header || a.title ? (i(), m("div", {
1288
- key: 0,
1289
- class: p(c.value)
1290
- }, [
1291
- b($.$slots, "header", {}, () => [
1292
- B(le, { variant: "section-title" }, {
1293
- default: w(() => [
1294
- E(M(a.title), 1)
1295
- ]),
1296
- _: 1
1297
- })
1298
- ]),
1299
- a.closable ? (i(), m("button", {
1300
- key: 0,
1301
- type: "button",
1302
- class: p(v.value),
1303
- onClick: h,
1304
- "aria-label": "Close modal"
1305
- }, [
1306
- B(P, {
1307
- name: "x",
1308
- class: "h-5 w-5"
1309
- })
1310
- ], 2)) : V("", !0)
1311
- ], 2)) : V("", !0),
1312
- C("div", {
1313
- class: p(u.value)
1314
- }, [
1315
- b($.$slots, "default")
1316
- ], 2),
1317
- $.$slots.footer ? (i(), m("div", {
1318
- key: 1,
1319
- class: p(d.value)
1320
- }, [
1321
- b($.$slots, "footer")
1322
- ], 2)) : V("", !0)
1323
- ], 2)) : V("", !0)
1324
- ]),
1325
- _: 3
1326
- })
1327
- ], 2)) : V("", !0)
1328
- ]),
1329
- _: 3
1330
- })
1331
- ]));
1332
- }
1333
- }), wa = /* @__PURE__ */ k({
1334
- __name: "LuToggleGroup",
1335
- props: {
1336
- modelValue: { type: [String, Number, Boolean] },
1337
- variant: {}
1338
- },
1339
- emits: ["update:modelValue"],
1340
- setup(a, { emit: l }) {
1341
- const e = a, t = l;
1342
- J("lu-toggle-value", o(() => e.modelValue)), J("lu-toggle-set", (s) => {
1343
- t("update:modelValue", s);
1344
- });
1345
- const { resolveSkin: n } = g(), r = o(() => n("LuToggleGroup", e.variant));
1346
- return (s, c) => (i(), m("div", S(s.$attrs, {
1347
- class: r.value,
1348
- role: "group"
1349
- }), [
1350
- b(s.$slots, "default")
1351
- ], 16));
1352
- }
1353
- }), Ne = ["aria-pressed"], Ta = /* @__PURE__ */ k({
1354
- __name: "LuToggleButton",
1355
- props: {
1356
- value: { type: [String, Number, Boolean] },
1357
- variant: {}
1358
- },
1359
- setup(a) {
1360
- const l = a, e = H("lu-toggle-value"), t = H("lu-toggle-set"), n = o(() => (e == null ? void 0 : e.value) === l.value), r = () => {
1361
- t && t(l.value);
1362
- }, { resolveSkin: s } = g(), c = o(() => s("LuToggleButton", l.variant)), u = o(() => s("LuToggleButton", "active"));
1363
- return (d, v) => (i(), m("button", S(d.$attrs, {
1364
- class: [c.value, n.value ? u.value : ""],
1365
- onClick: r,
1366
- "aria-pressed": n.value
1367
- }), [
1368
- b(d.$slots, "default")
1369
- ], 16, Ne));
1370
- }
1371
- }), je = ["innerHTML"], Ue = ["innerHTML"], Ke = ["innerHTML"];
1372
- let Y = null, ae = null;
1373
- async function Ge() {
1374
- return Y || (ae || (ae = he({
1375
- themes: ["one-dark-pro"],
1376
- langs: ["bash", "vue", "ts", "html", "css", "json"]
1377
- })), Y = await ae, Y);
1378
- }
1379
- const Oa = /* @__PURE__ */ k({
1380
- __name: "LuCodeBlock",
1381
- props: {
1382
- code: {},
1383
- lang: { default: "vue" },
1384
- variant: { default: "default" },
1385
- layout: { default: "tabbed" },
1386
- title: {},
1387
- description: {}
1388
- },
1389
- setup(a) {
1390
- const l = a, { resolveSkin: e } = g(), t = o(() => ({
1391
- container: e("LuCodeBlock", "container"),
1392
- header: e("LuCodeBlock", "header"),
1393
- title: e("LuCodeBlock", "title"),
1394
- description: e("LuCodeBlock", "description"),
1395
- card: e("LuCodeBlock", "card"),
1396
- previewArea: e("LuCodeBlock", "previewArea"),
1397
- codeArea: e("LuCodeBlock", "codeArea"),
1398
- splitCodeArea: e("LuCodeBlock", "splitCodeArea"),
1399
- splitContainer: e("LuCodeBlock", "splitContainer"),
1400
- codeHeader: e("LuCodeBlock", "codeHeader"),
1401
- badge: e("LuCodeBlock", "badge"),
1402
- copyButton: e("LuCodeBlock", "copyButton"),
1403
- codeContent: e("LuCodeBlock", "codeContent")
1404
- })), n = T(""), r = T("preview"), s = T(!1), c = async () => {
1405
- if (!l.code) {
1406
- n.value = "";
1407
- return;
1408
- }
1409
- try {
1410
- const d = await Ge();
1411
- n.value = d.codeToHtml(l.code, {
1412
- lang: l.lang || "vue",
1413
- theme: "one-dark-pro"
1414
- });
1415
- } catch (d) {
1416
- console.error("Failed to highlight code", d), n.value = `<pre><code>${l.code.replace(/</g, "&lt;").replace(/>/g, "&gt;")}</code></pre>`;
1417
- }
1418
- };
1419
- R(() => {
1420
- c();
1421
- }), F(() => [l.code, l.lang], () => {
1422
- c();
1423
- });
1424
- const u = async () => {
1425
- try {
1426
- await navigator.clipboard.writeText(l.code), s.value = !0, setTimeout(() => s.value = !1, 2e3);
1427
- } catch (d) {
1428
- console.error("Failed to copy", d);
1429
- }
1430
- };
1431
- return (d, v) => (i(), m("div", S(d.$attrs, {
1432
- class: t.value.container
1433
- }), [
1434
- a.title || a.description ? (i(), m("div", {
1435
- key: 0,
1436
- class: p(t.value.header)
1437
- }, [
1438
- a.title ? (i(), m("h3", {
1439
- key: 0,
1440
- class: p(t.value.title)
1441
- }, M(a.title), 3)) : V("", !0),
1442
- a.description ? (i(), m("p", {
1443
- key: 1,
1444
- class: p(t.value.description)
1445
- }, M(a.description), 3)) : V("", !0)
1446
- ], 2)) : V("", !0),
1447
- a.variant === "preview" ? (i(), m("div", {
1448
- key: 1,
1449
- class: p(t.value.card)
1450
- }, [
1451
- a.layout === "tabbed" ? (i(), m(q, { key: 0 }, [
1452
- B(we, {
1453
- modelValue: r.value,
1454
- "onUpdate:modelValue": v[0] || (v[0] = (h) => r.value = h),
1455
- variant: "default"
1456
- }, {
1457
- default: w(() => [
1458
- B(Te, { variant: "card-header" }, {
1459
- default: w(() => [
1460
- B(re, { value: "preview" }, {
1461
- default: w(() => [...v[1] || (v[1] = [
1462
- E("Preview", -1)
1463
- ])]),
1464
- _: 1
1465
- }),
1466
- B(re, { value: "code" }, {
1467
- default: w(() => [...v[2] || (v[2] = [
1468
- E("Code", -1)
1469
- ])]),
1470
- _: 1
1471
- })
1472
- ]),
1473
- _: 1
1474
- })
1475
- ]),
1476
- _: 1
1477
- }, 8, ["modelValue"]),
1478
- r.value === "preview" ? (i(), m("div", {
1479
- key: 0,
1480
- class: p(t.value.previewArea)
1481
- }, [
1482
- b(d.$slots, "preview")
1483
- ], 2)) : V("", !0),
1484
- r.value === "code" ? (i(), m("div", {
1485
- key: 1,
1486
- class: p(t.value.codeArea)
1487
- }, [
1488
- C("div", {
1489
- class: p(t.value.codeHeader)
1490
- }, [
1491
- C("div", {
1492
- class: p(t.value.badge)
1493
- }, M(a.lang), 3),
1494
- C("button", {
1495
- onClick: u,
1496
- class: p(t.value.copyButton),
1497
- "aria-label": "Copy code"
1498
- }, [
1499
- B(P, {
1500
- name: s.value ? "check" : "copy",
1501
- class: "w-4 h-4"
1502
- }, null, 8, ["name"])
1503
- ], 2)
1504
- ], 2),
1505
- C("div", {
1506
- class: p(t.value.codeContent),
1507
- innerHTML: n.value
1508
- }, null, 10, je)
1509
- ], 2)) : V("", !0)
1510
- ], 64)) : a.layout === "split" ? (i(), m("div", {
1511
- key: 1,
1512
- class: p(t.value.splitContainer)
1513
- }, [
1514
- C("div", {
1515
- class: p(t.value.previewArea)
1516
- }, [
1517
- b(d.$slots, "preview")
1518
- ], 2),
1519
- C("div", {
1520
- class: p(t.value.splitCodeArea)
1521
- }, [
1522
- C("div", {
1523
- class: p(t.value.codeHeader)
1524
- }, [
1525
- C("div", {
1526
- class: p(t.value.badge)
1527
- }, M(a.lang), 3),
1528
- C("button", {
1529
- onClick: u,
1530
- class: p(t.value.copyButton),
1531
- "aria-label": "Copy code"
1532
- }, [
1533
- B(P, {
1534
- name: s.value ? "check" : "copy",
1535
- class: "w-4 h-4"
1536
- }, null, 8, ["name"])
1537
- ], 2)
1538
- ], 2),
1539
- C("div", {
1540
- class: p(t.value.codeContent),
1541
- innerHTML: n.value
1542
- }, null, 10, Ue)
1543
- ], 2)
1544
- ], 2)) : V("", !0)
1545
- ], 2)) : (i(), m("div", {
1546
- key: 2,
1547
- class: p(t.value.card)
1548
- }, [
1549
- C("div", {
1550
- class: p(t.value.codeArea)
1551
- }, [
1552
- C("div", {
1553
- class: p(t.value.codeHeader)
1554
- }, [
1555
- C("div", {
1556
- class: p(t.value.badge)
1557
- }, M(a.lang), 3),
1558
- C("button", {
1559
- onClick: u,
1560
- class: p(t.value.copyButton),
1561
- "aria-label": "Copy code"
1562
- }, [
1563
- B(P, {
1564
- name: s.value ? "check" : "copy",
1565
- class: "w-4 h-4"
1566
- }, null, 8, ["name"])
1567
- ], 2)
1568
- ], 2),
1569
- C("div", {
1570
- class: p(t.value.codeContent),
1571
- innerHTML: n.value
1572
- }, null, 10, Ke)
1573
- ], 2)
1574
- ], 2))
1575
- ], 16));
1576
- }
1577
- });
1578
- export {
1579
- Te as A,
1580
- xe as B,
1581
- ua as C,
1582
- ca as D,
1583
- ma as E,
1584
- ia as F,
1585
- va as G,
1586
- da as H,
1587
- we as I,
1588
- Sa as J,
1589
- le as K,
1590
- fa as L,
1591
- Ze as M,
1592
- Ye as N,
1593
- Ta as O,
1594
- wa as P,
1595
- ta as Q,
1596
- ha as _,
1597
- la as a,
1598
- ea as b,
1599
- $a as c,
1600
- Z as d,
1601
- ra as e,
1602
- ka as f,
1603
- Oa as g,
1604
- na as h,
1605
- sa as i,
1606
- pa as j,
1607
- P as k,
1608
- Xe as l,
1609
- Me as m,
1610
- Ca as n,
1611
- Va as o,
1612
- Ba as p,
1613
- oa as q,
1614
- _a as r,
1615
- aa as s,
1616
- ga as t,
1617
- ba as u,
1618
- Be as v,
1619
- ya as w,
1620
- La as x,
1621
- Ce as y,
1622
- re as z
1623
- };