@robuust-digital/vue-components 2.4.0-beta.3 → 2.5.0-beta.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.
@@ -0,0 +1,836 @@
1
+ import { createElementBlock as n, openBlock as t, createElementVNode as u, defineComponent as L, Fragment as C, renderList as P, renderSlot as c, createTextVNode as T, toDisplayString as y, createVNode as V, unref as p, normalizeClass as $, createBlock as B, resolveDynamicComponent as I, withCtx as A, createCommentVNode as h, computed as x, useAttrs as R, ref as S, withDirectives as z, mergeProps as k, vModelDynamic as U, normalizeProps as H, guardReactiveProps as G, vModelSelect as J, useSlots as Q, watch as X, withKeys as Z, withModifiers as E, vModelText as Y } from "vue";
2
+ import { r as _ } from "./XMarkIcon-90mcPzBs.js";
3
+ import { u as j } from "./FormInput.vue_vue_type_script_setup_true_lang-C_1WSzbH.js";
4
+ import { S as ee } from "./icon-spinner-CP0VP_YM.js";
5
+ import { _ as D } from "./ButtonBase.vue_vue_type_script_setup_true_lang-BLm8QzEC.js";
6
+ import { r as te, a as le } from "./XMarkIcon-DdMV8USU.js";
7
+ function ae(e, r) {
8
+ return t(), n("svg", {
9
+ xmlns: "http://www.w3.org/2000/svg",
10
+ viewBox: "0 0 24 24",
11
+ fill: "currentColor",
12
+ "aria-hidden": "true",
13
+ "data-slot": "icon"
14
+ }, [
15
+ u("path", {
16
+ "fill-rule": "evenodd",
17
+ d: "M19.916 4.626a.75.75 0 0 1 .208 1.04l-9 13.5a.75.75 0 0 1-1.154.114l-6-6a.75.75 0 0 1 1.06-1.06l5.353 5.353 8.493-12.74a.75.75 0 0 1 1.04-.207Z",
18
+ "clip-rule": "evenodd"
19
+ })
20
+ ]);
21
+ }
22
+ function ne(e, r) {
23
+ return t(), n("svg", {
24
+ xmlns: "http://www.w3.org/2000/svg",
25
+ viewBox: "0 0 24 24",
26
+ fill: "currentColor",
27
+ "aria-hidden": "true",
28
+ "data-slot": "icon"
29
+ }, [
30
+ u("path", {
31
+ "fill-rule": "evenodd",
32
+ d: "M12 3.75a.75.75 0 0 1 .75.75v6.75h6.75a.75.75 0 0 1 0 1.5h-6.75v6.75a.75.75 0 0 1-1.5 0v-6.75H4.5a.75.75 0 0 1 0-1.5h6.75V4.5a.75.75 0 0 1 .75-.75Z",
33
+ "clip-rule": "evenodd"
34
+ })
35
+ ]);
36
+ }
37
+ const se = { class: "rvc-accordion" }, oe = ["open", "name"], ie = ["innerHTML"], tt = /* @__PURE__ */ L({
38
+ __name: "Accordion",
39
+ props: {
40
+ items: {},
41
+ name: {},
42
+ defaultOpenIndex: {},
43
+ contentClass: {}
44
+ },
45
+ setup(e) {
46
+ return (r, d) => (t(), n("div", se, [
47
+ (t(!0), n(C, null, P(e.items, (f, s) => (t(), n("details", {
48
+ key: s,
49
+ open: e.defaultOpenIndex === s,
50
+ name: e.name
51
+ }, [
52
+ u("summary", null, [
53
+ c(r.$slots, "summary", {
54
+ item: f,
55
+ index: s
56
+ }, () => [
57
+ T(y(f.title) + " ", 1),
58
+ c(r.$slots, "icon", { classList: "rvc-accordion-icon" }, () => [
59
+ V(p(ne), { class: "rvc-accordion-icon" })
60
+ ])
61
+ ])
62
+ ]),
63
+ u("div", {
64
+ class: $(["rvc-accordion-content", e.contentClass])
65
+ }, [
66
+ c(r.$slots, "content", {
67
+ item: f,
68
+ index: s
69
+ }, () => [
70
+ u("div", {
71
+ innerHTML: f.content
72
+ }, null, 8, ie)
73
+ ])
74
+ ], 2)
75
+ ], 8, oe))), 128))
76
+ ]));
77
+ }
78
+ }), re = { class: "rvc-alert-title" }, lt = /* @__PURE__ */ L({
79
+ __name: "Alert",
80
+ props: {
81
+ as: { default: "div" },
82
+ title: { default: "" },
83
+ icon: { type: [Function, Object, null], default: null },
84
+ type: { default: "info" },
85
+ close: { type: Boolean, default: !1 }
86
+ },
87
+ emits: ["alert:close"],
88
+ setup(e) {
89
+ return (r, d) => (t(), B(I(e.as), {
90
+ class: $(["rvc-alert", `rvc-alert-${e.type}`])
91
+ }, {
92
+ default: A(() => [
93
+ c(r.$slots, "icon", {}, () => [
94
+ e.icon ? (t(), B(I(e.icon), {
95
+ key: 0,
96
+ class: "rvc-alert-icon"
97
+ })) : h("", !0)
98
+ ]),
99
+ u("div", null, [
100
+ c(r.$slots, "title", {}, () => [
101
+ u("span", re, y(e.title), 1)
102
+ ]),
103
+ c(r.$slots, "default")
104
+ ]),
105
+ c(r.$slots, "close", {}, () => [
106
+ e.close ? (t(), n("button", {
107
+ key: 0,
108
+ type: "button",
109
+ class: "rvc-alert-close",
110
+ onClick: d[0] || (d[0] = (f) => r.$emit("alert:close"))
111
+ }, [
112
+ V(p(_))
113
+ ])) : h("", !0)
114
+ ])
115
+ ]),
116
+ _: 3
117
+ }, 8, ["class"]));
118
+ }
119
+ }), ce = { class: "rvc-checkbox-input" }, ue = {
120
+ key: 0,
121
+ class: "rvc-checkbox-label"
122
+ }, at = /* @__PURE__ */ L({
123
+ inheritAttrs: !1,
124
+ __name: "Checkbox",
125
+ props: {
126
+ modelValue: { type: [Number, String, Object, Array, Boolean, null], default: null },
127
+ label: { default: "" },
128
+ rootClass: { default: "" }
129
+ },
130
+ emits: ["update:modelValue"],
131
+ setup(e, { emit: r }) {
132
+ const d = e, f = r, s = x({
133
+ get: () => d.modelValue,
134
+ set: (l) => f("update:modelValue", l)
135
+ }), { hasModelBinding: v } = j(), g = R(), a = x(() => ({
136
+ ...g,
137
+ type: "checkbox"
138
+ })), o = S(null);
139
+ return (l, i) => (t(), n("label", {
140
+ class: $(["rvc-checkbox", e.rootClass])
141
+ }, [
142
+ u("div", ce, [
143
+ p(v) ? z((t(), n("input", k({ key: 0 }, a.value, {
144
+ ref_key: "input",
145
+ ref: o,
146
+ "onUpdate:modelValue": i[0] || (i[0] = (b) => s.value = b)
147
+ }), null, 16)), [
148
+ [U, s.value]
149
+ ]) : (t(), n("input", k({ key: 1 }, a.value, {
150
+ ref_key: "input",
151
+ ref: o
152
+ }), null, 16)),
153
+ c(l.$slots, "icon", {}, () => [
154
+ V(p(ae))
155
+ ])
156
+ ]),
157
+ c(l.$slots, "default", { label: e.label }, () => [
158
+ e.label ? (t(), n("span", ue, y(e.label), 1)) : h("", !0)
159
+ ])
160
+ ], 2));
161
+ }
162
+ });
163
+ function de(e, r) {
164
+ return t(), n("svg", {
165
+ xmlns: "http://www.w3.org/2000/svg",
166
+ viewBox: "0 0 16 16",
167
+ fill: "currentColor",
168
+ "aria-hidden": "true",
169
+ "data-slot": "icon"
170
+ }, [
171
+ u("path", {
172
+ "fill-rule": "evenodd",
173
+ d: "M8 14a.75.75 0 0 1-.75-.75V4.56L4.03 7.78a.75.75 0 0 1-1.06-1.06l4.5-4.5a.75.75 0 0 1 1.06 0l4.5 4.5a.75.75 0 0 1-1.06 1.06L8.75 4.56v8.69A.75.75 0 0 1 8 14Z",
174
+ "clip-rule": "evenodd"
175
+ })
176
+ ]);
177
+ }
178
+ function ve(e, r) {
179
+ return t(), n("svg", {
180
+ xmlns: "http://www.w3.org/2000/svg",
181
+ viewBox: "0 0 20 20",
182
+ fill: "currentColor",
183
+ "aria-hidden": "true",
184
+ "data-slot": "icon"
185
+ }, [
186
+ u("path", {
187
+ "fill-rule": "evenodd",
188
+ d: "M11.78 5.22a.75.75 0 0 1 0 1.06L8.06 10l3.72 3.72a.75.75 0 1 1-1.06 1.06l-4.25-4.25a.75.75 0 0 1 0-1.06l4.25-4.25a.75.75 0 0 1 1.06 0Z",
189
+ "clip-rule": "evenodd"
190
+ })
191
+ ]);
192
+ }
193
+ function fe(e, r) {
194
+ return t(), n("svg", {
195
+ xmlns: "http://www.w3.org/2000/svg",
196
+ viewBox: "0 0 20 20",
197
+ fill: "currentColor",
198
+ "aria-hidden": "true",
199
+ "data-slot": "icon"
200
+ }, [
201
+ u("path", {
202
+ "fill-rule": "evenodd",
203
+ d: "M8.22 5.22a.75.75 0 0 1 1.06 0l4.25 4.25a.75.75 0 0 1 0 1.06l-4.25 4.25a.75.75 0 0 1-1.06-1.06L11.94 10 8.22 6.28a.75.75 0 0 1 0-1.06Z",
204
+ "clip-rule": "evenodd"
205
+ })
206
+ ]);
207
+ }
208
+ function ge(e, r) {
209
+ return t(), n("svg", {
210
+ xmlns: "http://www.w3.org/2000/svg",
211
+ viewBox: "0 0 20 20",
212
+ fill: "currentColor",
213
+ "aria-hidden": "true",
214
+ "data-slot": "icon"
215
+ }, [
216
+ u("path", {
217
+ "fill-rule": "evenodd",
218
+ d: "M8.75 1A2.75 2.75 0 0 0 6 3.75v.443c-.795.077-1.584.176-2.365.298a.75.75 0 1 0 .23 1.482l.149-.022.841 10.518A2.75 2.75 0 0 0 7.596 19h4.807a2.75 2.75 0 0 0 2.742-2.53l.841-10.52.149.023a.75.75 0 0 0 .23-1.482A41.03 41.03 0 0 0 14 4.193V3.75A2.75 2.75 0 0 0 11.25 1h-2.5ZM10 4c.84 0 1.673.025 2.5.075V3.75c0-.69-.56-1.25-1.25-1.25h-2.5c-.69 0-1.25.56-1.25 1.25v.325C8.327 4.025 9.16 4 10 4ZM8.58 7.72a.75.75 0 0 0-1.5.06l.3 7.5a.75.75 0 1 0 1.5-.06l-.3-7.5Zm4.34.06a.75.75 0 1 0-1.5-.06l-.3 7.5a.75.75 0 1 0 1.5.06l.3-7.5Z",
219
+ "clip-rule": "evenodd"
220
+ })
221
+ ]);
222
+ }
223
+ const me = ["value"], be = ["value"], K = /* @__PURE__ */ L({
224
+ inheritAttrs: !1,
225
+ __name: "FormSelect",
226
+ props: {
227
+ modelValue: { type: [String, Number, Object, Boolean, null], default: null },
228
+ rootClass: { default: "" },
229
+ prefixIcon: { type: [Function, Object, null], default: null },
230
+ icon: { type: [Function, Object, null], default: null },
231
+ size: { default: "base" },
232
+ options: { default: () => [] },
233
+ optionLabel: { default: "name" },
234
+ optionValue: { default: "id" }
235
+ },
236
+ emits: ["update:modelValue"],
237
+ setup(e, { emit: r }) {
238
+ const d = e, f = r, s = x({
239
+ get: () => d.modelValue,
240
+ set: (a) => f("update:modelValue", a)
241
+ }), { hasModelBinding: v } = j(), g = S(null);
242
+ return (a, o) => (t(), n("div", {
243
+ class: $([
244
+ "rvc-select",
245
+ `rvc-select-${e.size}`,
246
+ e.rootClass
247
+ ])
248
+ }, [
249
+ e.prefixIcon ? c(a.$slots, "prefixIcon", {
250
+ key: 0,
251
+ icon: e.prefixIcon
252
+ }, () => [
253
+ (t(), B(I(e.prefixIcon), { "aria-hidden": "true" }))
254
+ ]) : h("", !0),
255
+ c(a.$slots, "select", H(G(a.$attrs)), () => [
256
+ p(v) ? z((t(), n("select", k({ key: 0 }, a.$attrs, {
257
+ ref_key: "select",
258
+ ref: g,
259
+ "onUpdate:modelValue": o[0] || (o[0] = (l) => s.value = l)
260
+ }), [
261
+ c(a.$slots, "default", {}, () => [
262
+ e.options.length > 0 ? (t(!0), n(C, { key: 0 }, P(e.options, (l, i) => (t(), n("option", {
263
+ key: `option-${i}-${l[e.optionValue]}`,
264
+ value: l[e.optionValue]
265
+ }, y(l[e.optionLabel]), 9, me))), 128)) : h("", !0)
266
+ ])
267
+ ], 16)), [
268
+ [J, s.value]
269
+ ]) : (t(), n("select", k({ key: 1 }, a.$attrs, {
270
+ ref_key: "select",
271
+ ref: g
272
+ }), [
273
+ c(a.$slots, "default", {}, () => [
274
+ e.options.length > 0 ? (t(!0), n(C, { key: 0 }, P(e.options, (l, i) => (t(), n("option", {
275
+ key: `option-${i}-${l[e.optionValue]}`,
276
+ value: l[e.optionValue]
277
+ }, y(l[e.optionLabel]), 9, be))), 128)) : h("", !0)
278
+ ])
279
+ ], 16))
280
+ ]),
281
+ c(a.$slots, "icon", { icon: e.icon }, () => [
282
+ (t(), B(I(e.icon ?? p(te)), { "aria-hidden": "true" }))
283
+ ])
284
+ ], 2));
285
+ }
286
+ }), he = {
287
+ key: 0,
288
+ class: "rvc-pagination"
289
+ }, ye = ["value"], pe = { class: "rvc-pagination-info" }, $e = { class: "rvc-pagination-nav-list" }, ke = ["disabled", "onClick"], we = { key: 2 }, Ve = { key: 3 }, Ce = /* @__PURE__ */ L({
290
+ __name: "Pagination",
291
+ props: {
292
+ pagination: {},
293
+ perPage: { default: 10 },
294
+ perPageLabel: { default: "per page" },
295
+ perPageOptions: { default: () => [10, 20, 50] },
296
+ fromLabel: { default: "of" }
297
+ },
298
+ emits: ["pagination:change", "pagination:perPage"],
299
+ setup(e, { emit: r }) {
300
+ const d = e, f = r, s = S(d.perPage);
301
+ return (v, g) => e.pagination?.total ? (t(), n("div", he, [
302
+ c(v.$slots, "perPage", k(e.pagination, { perPage: s.value }), () => [
303
+ V(K, {
304
+ modelValue: s.value,
305
+ "onUpdate:modelValue": [
306
+ g[0] || (g[0] = (a) => s.value = a),
307
+ g[1] || (g[1] = (a) => f("pagination:perPage", Number(a)))
308
+ ],
309
+ size: "sm",
310
+ "root-class": "rvc-pagination-per-page"
311
+ }, {
312
+ default: A(() => [
313
+ (t(!0), n(C, null, P(e.perPageOptions, (a) => (t(), n("option", {
314
+ key: `pagination-items-per-page-option-${a}`,
315
+ value: a
316
+ }, y(a) + " " + y(e.perPageLabel), 9, ye))), 128))
317
+ ]),
318
+ _: 1
319
+ }, 8, ["modelValue"])
320
+ ]),
321
+ c(v.$slots, "info", k(e.pagination, { fromLabel: e.fromLabel }), () => [
322
+ u("div", pe, y(e.pagination.from) + " - " + y(e.pagination.to) + " " + y(e.fromLabel) + " " + y(e.pagination.total), 1)
323
+ ]),
324
+ u("nav", null, [
325
+ u("ol", $e, [
326
+ (t(!0), n(C, null, P(e.pagination.links, (a, o) => (t(), n("li", {
327
+ key: `pagination-link-${a.label}-${o}`,
328
+ class: "rvc-pagination-nav-list-item"
329
+ }, [
330
+ u("button", {
331
+ type: "button",
332
+ disabled: a.label === "..." || !a.url,
333
+ class: $([
334
+ "rvc-pagination-button",
335
+ { "rvc-pagination-button-active": a.active }
336
+ ]),
337
+ onClick: (l) => a.url && f("pagination:change", a.url)
338
+ }, [
339
+ a.url !== "..." && o === 0 ? (t(), B(p(ve), {
340
+ key: 0,
341
+ "aria-hidden": "true",
342
+ class: $([
343
+ "rvc-pagination-button-icon",
344
+ { "rvc-pagination-button-icon-disabled": !a.url }
345
+ ])
346
+ }, null, 8, ["class"])) : a.label !== "..." && o === e.pagination.links.length - 1 ? (t(), B(p(fe), {
347
+ key: 1,
348
+ "aria-hidden": "true",
349
+ class: $([
350
+ "rvc-pagination-button-icon",
351
+ { "rvc-pagination-button-icon-disabled": !a.url }
352
+ ])
353
+ }, null, 8, ["class"])) : a.label === "..." ? (t(), n("span", we, " ... ")) : (t(), n("span", Ve, y(a.label), 1))
354
+ ], 10, ke)
355
+ ]))), 128))
356
+ ])
357
+ ])
358
+ ])) : h("", !0);
359
+ }
360
+ }), xe = { key: 0 }, Be = ["aria-label", "onClick"], Le = ["innerHTML"], Pe = { key: 1 }, Ie = ["colspan"], Se = { key: 2 }, Ae = ["colspan"], Fe = { class: "rvc-table-spinner-wrapper" }, Me = { key: 1 }, nt = /* @__PURE__ */ L({
361
+ __name: "DataTable",
362
+ props: {
363
+ headers: { default: () => [] },
364
+ items: {},
365
+ noResultsText: { default: "No results found." },
366
+ loadingText: { default: "Loading content..." },
367
+ striped: { type: Boolean, default: !1 },
368
+ spinning: { type: Boolean, default: !1 },
369
+ pagination: { default: null },
370
+ wrapperClass: { default: "" },
371
+ defaultSort: { default: null }
372
+ },
373
+ emits: ["table:sortBy", "pagination:change", "pagination:perPage"],
374
+ setup(e, { emit: r }) {
375
+ const d = e, f = r, s = S(d.defaultSort), v = (a) => d.headers.find((o) => o.key === a), g = (a) => {
376
+ a.key && (!s.value || s.value.key !== a.key ? s.value = {
377
+ key: a.key,
378
+ direction: "asc"
379
+ } : s.value.direction === "asc" ? s.value = {
380
+ key: a.key,
381
+ direction: "desc"
382
+ } : s.value = null, f("table:sortBy", s.value));
383
+ };
384
+ return (a, o) => (t(), n("div", null, [
385
+ u("div", {
386
+ class: $(["rvc-table-wrapper", e.wrapperClass])
387
+ }, [
388
+ u("table", {
389
+ class: $([{ "rvc-table-striped": e.striped }, "rvc-table"])
390
+ }, [
391
+ e.headers.length ? (t(), n("thead", xe, [
392
+ c(a.$slots, "headers", { headers: e.headers }, () => [
393
+ u("tr", null, [
394
+ (t(!0), n(C, null, P(e.headers, (l, i) => c(a.$slots, "header", {
395
+ header: l,
396
+ index: i
397
+ }, () => [
398
+ (t(), n("th", k({ ref_for: !0 }, { ...l, id: String(l.id) }, {
399
+ key: `rvc-table-header-${l.id}`,
400
+ class: {
401
+ "rvc-table-text-left": l.align === "left" || !l.align,
402
+ "rvc-table-text-center": l.align === "center",
403
+ "rvc-table-text-right": l.align === "right"
404
+ }
405
+ }), [
406
+ l.sortable && l.key ? (t(), n("button", {
407
+ key: 0,
408
+ type: "button",
409
+ "aria-label": `Sort on ${l.label}`,
410
+ class: $([
411
+ "rvc-table-sort-button",
412
+ {
413
+ "rvc-table-sort-button-center": l.align === "center",
414
+ "rvc-table-sort-button-right": l.align === "right"
415
+ }
416
+ ]),
417
+ onClick: (b) => g(l)
418
+ }, [
419
+ c(a.$slots, "header-label", {
420
+ sortBy: s.value,
421
+ header: l
422
+ }, () => [
423
+ T(y(l.label), 1)
424
+ ]),
425
+ V(p(de), {
426
+ class: $([
427
+ "rvc-table-sort-icon",
428
+ {
429
+ "rvc-table-sort-icon-visible": s.value?.key === l.key,
430
+ "rvc-table-sort-icon-invisible": !s.value || s.value.key !== l.key,
431
+ "rvc-table-sort-icon-rotated": s.value?.key === l.key && s.value.direction === "desc"
432
+ }
433
+ ])
434
+ }, null, 8, ["class"])
435
+ ], 10, Be)) : c(a.$slots, "header-label", {
436
+ key: 1,
437
+ sortBy: s.value,
438
+ header: l
439
+ }, () => [
440
+ T(y(l.label), 1)
441
+ ])
442
+ ], 16))
443
+ ])), 256))
444
+ ])
445
+ ])
446
+ ])) : h("", !0),
447
+ u("tbody", null, [
448
+ e.items.length && !e.spinning ? (t(!0), n(C, { key: 0 }, P(e.items, (l, i) => c(a.$slots, "items", {
449
+ item: l,
450
+ index: i
451
+ }, () => [
452
+ (t(), n("tr", {
453
+ key: `rvc-table-row-${i}-${l.id}`
454
+ }, [
455
+ c(a.$slots, "item", {
456
+ item: l,
457
+ index: i
458
+ }, () => [
459
+ (t(!0), n(C, null, P(l, (b, w) => (t(), n("td", k({
460
+ key: `rvc-table-row-${i}-column-${w}-${l.id}`
461
+ }, { ref_for: !0 }, l.attrs, {
462
+ class: {
463
+ "rvc-table-text-left": v(String(w))?.align === "left" || !v(String(w))?.align,
464
+ "rvc-table-text-center": v(String(w))?.align === "center",
465
+ "rvc-table-text-right": v(String(w))?.align === "right"
466
+ },
467
+ innerHTML: b
468
+ }), null, 16, Le))), 128))
469
+ ])
470
+ ]))
471
+ ])), 256)) : !e.items.length && !e.spinning ? (t(), n("tr", Pe, [
472
+ u("td", {
473
+ colspan: e.headers.length,
474
+ class: "rvc-table-state"
475
+ }, [
476
+ u("p", null, y(e.noResultsText), 1)
477
+ ], 8, Ie)
478
+ ])) : (t(), n("tr", Se, [
479
+ u("td", {
480
+ colspan: e.headers.length,
481
+ class: "rvc-table-state"
482
+ }, [
483
+ c(a.$slots, "spinner", {
484
+ spinning: e.spinning,
485
+ label: e.loadingText
486
+ }, () => [
487
+ u("div", Fe, [
488
+ e.spinning ? (t(), B(p(ee), {
489
+ key: 0,
490
+ "aria-hidden": "true",
491
+ class: "rvc-table-spinner"
492
+ })) : h("", !0),
493
+ T(" " + y(e.loadingText), 1)
494
+ ])
495
+ ])
496
+ ], 8, Ae)
497
+ ]))
498
+ ]),
499
+ a.$slots.footer ? (t(), n("tfoot", Me, [
500
+ c(a.$slots, "footer", {
501
+ headers: e.headers,
502
+ items: e.items
503
+ })
504
+ ])) : h("", !0)
505
+ ], 2)
506
+ ], 2),
507
+ e.pagination ? c(a.$slots, "pagination", H(k({ key: 0 }, e.pagination)), () => [
508
+ V(Ce, {
509
+ pagination: e.pagination,
510
+ "onPagination:change": o[0] || (o[0] = (l) => f("pagination:change", l)),
511
+ "onPagination:perPage": o[1] || (o[1] = (l) => f("pagination:perPage", l))
512
+ }, null, 8, ["pagination"])
513
+ ]) : h("", !0)
514
+ ]));
515
+ }
516
+ }), Te = {
517
+ key: 1,
518
+ class: "rvc-empty-state-title"
519
+ }, st = /* @__PURE__ */ L({
520
+ __name: "EmptyState",
521
+ props: {
522
+ title: {},
523
+ background: { type: Boolean },
524
+ icon: { type: [Function, Object, null] }
525
+ },
526
+ setup(e) {
527
+ return (r, d) => (t(), n("div", {
528
+ class: $(["rvc-empty-state", { "rvc-empty-state-bg": e.background }])
529
+ }, [
530
+ e.icon ? (t(), B(I(e.icon), {
531
+ key: 0,
532
+ class: "rvc-empty-state-icon"
533
+ })) : h("", !0),
534
+ e.title ? (t(), n("p", Te, y(e.title), 1)) : h("", !0),
535
+ c(r.$slots, "default")
536
+ ], 2));
537
+ }
538
+ }), ze = ["onKeydown"], je = {
539
+ key: 0,
540
+ class: "rvc-file-prefix"
541
+ }, Oe = { class: "rvc-file-label" }, Ee = {
542
+ key: 1,
543
+ class: "rvc-file-suffix"
544
+ }, Ne = {
545
+ key: 0,
546
+ class: "rvc-file-preview"
547
+ }, Ze = ["src", "alt"], De = {
548
+ key: 1,
549
+ class: "rvc-file-actions"
550
+ }, Re = {
551
+ key: 0,
552
+ class: "rvc-file-clear"
553
+ }, Ue = {
554
+ key: 1,
555
+ class: "rvc-file-delete"
556
+ }, ot = /* @__PURE__ */ L({
557
+ inheritAttrs: !1,
558
+ __name: "FormFile",
559
+ props: {
560
+ modelValue: { default: null },
561
+ rootClass: { default: "" },
562
+ prefixIcon: { type: [Function, Object, null], default: null },
563
+ icon: { type: [Function, Object, null], default: null },
564
+ size: { default: "base" },
565
+ placeholder: { default: "Choose a file..." },
566
+ showPreview: { type: Boolean, default: !0 },
567
+ clearLabel: { default: "Clear" },
568
+ deleteLabel: { default: "Delete" }
569
+ },
570
+ emits: ["update:modelValue", "delete"],
571
+ setup(e, { emit: r }) {
572
+ const d = e, f = r, s = Q(), v = S(null), g = S(null), a = (m) => m instanceof File, o = (m) => m !== null && !a(m) && typeof m == "object" && "url" in m && "name" in m, l = x(() => d.modelValue ? d.modelValue.name : d.placeholder), i = x(() => a(d.modelValue)), b = x(() => o(d.modelValue)), w = () => {
573
+ v.value && v.value.click();
574
+ }, N = (m) => {
575
+ const M = m.target.files?.[0] || null;
576
+ f("update:modelValue", M);
577
+ }, O = () => {
578
+ v.value && (v.value.value = ""), f("update:modelValue", null);
579
+ }, W = () => {
580
+ f("delete");
581
+ };
582
+ return X(() => d.modelValue, (m) => {
583
+ if (!m || !d.showPreview) {
584
+ g.value = null;
585
+ return;
586
+ }
587
+ if (a(m))
588
+ if (m.type.startsWith("image/")) {
589
+ const F = new FileReader();
590
+ F.onload = (M) => {
591
+ g.value = M.target?.result;
592
+ }, F.readAsDataURL(m);
593
+ } else
594
+ g.value = null;
595
+ else if (o(m)) {
596
+ const M = [".jpg", ".jpeg", ".png", ".gif", ".webp", ".svg"].some((q) => m.url.toLowerCase().endsWith(q));
597
+ g.value = M ? m.url : null;
598
+ }
599
+ }, { immediate: !0 }), (m, F) => (t(), n("div", {
600
+ class: $([
601
+ "rvc-file",
602
+ `rvc-file-${e.size}`,
603
+ e.rootClass
604
+ ])
605
+ }, [
606
+ u("input", k({
607
+ ref_key: "fileInput",
608
+ ref: v
609
+ }, m.$attrs, {
610
+ type: "file",
611
+ class: "rvc-file-input",
612
+ onChange: N
613
+ }), null, 16),
614
+ u("div", {
615
+ class: "rvc-file-display",
616
+ role: "button",
617
+ tabindex: "0",
618
+ onClick: w,
619
+ onKeydown: [
620
+ Z(w, ["enter"]),
621
+ Z(E(w, ["prevent"]), ["space"])
622
+ ]
623
+ }, [
624
+ p(s).prefix || p(s).prefixIcon || e.prefixIcon ? (t(), n("span", je, [
625
+ c(m.$slots, "prefix", {}, () => [
626
+ c(m.$slots, "prefixIcon", { icon: e.prefixIcon }, () => [
627
+ e.prefixIcon ? (t(), B(I(e.prefixIcon), {
628
+ key: 0,
629
+ "aria-hidden": "true"
630
+ })) : h("", !0)
631
+ ])
632
+ ])
633
+ ])) : h("", !0),
634
+ u("span", Oe, y(l.value), 1),
635
+ p(s).suffix || p(s).icon || e.icon ? (t(), n("span", Ee, [
636
+ c(m.$slots, "suffix", {}, () => [
637
+ c(m.$slots, "icon", { icon: e.icon }, () => [
638
+ e.icon ? (t(), B(I(e.icon), {
639
+ key: 0,
640
+ "aria-hidden": "true"
641
+ })) : h("", !0)
642
+ ])
643
+ ])
644
+ ])) : h("", !0)
645
+ ], 40, ze),
646
+ g.value ? (t(), n("div", Ne, [
647
+ u("img", {
648
+ src: g.value,
649
+ alt: l.value,
650
+ class: "rvc-file-preview-image"
651
+ }, null, 8, Ze)
652
+ ])) : h("", !0),
653
+ i.value || b.value ? (t(), n("div", De, [
654
+ i.value ? (t(), n("div", Re, [
655
+ V(D, {
656
+ color: "clear",
657
+ size: e.size,
658
+ label: e.clearLabel,
659
+ onClick: E(O, ["prevent"])
660
+ }, {
661
+ icon: A(() => [
662
+ c(m.$slots, "clearIcon", {}, () => [
663
+ V(p(le))
664
+ ])
665
+ ]),
666
+ _: 3
667
+ }, 8, ["size", "label"])
668
+ ])) : h("", !0),
669
+ b.value ? (t(), n("div", Ue, [
670
+ V(D, {
671
+ color: "clear",
672
+ size: e.size,
673
+ label: e.deleteLabel,
674
+ onClick: E(W, ["prevent"])
675
+ }, {
676
+ icon: A(() => [
677
+ c(m.$slots, "deleteIcon", {}, () => [
678
+ V(p(ge))
679
+ ])
680
+ ]),
681
+ _: 3
682
+ }, 8, ["size", "label"])
683
+ ])) : h("", !0)
684
+ ])) : h("", !0)
685
+ ], 2));
686
+ }
687
+ }), it = /* @__PURE__ */ L({
688
+ __name: "FormTextarea",
689
+ props: {
690
+ modelValue: { default: void 0 },
691
+ size: { default: "base" }
692
+ },
693
+ emits: ["update:modelValue"],
694
+ setup(e, { emit: r }) {
695
+ const d = e, f = r, { hasModelBinding: s } = j(), v = S(null), g = x({
696
+ get: () => d.modelValue,
697
+ set: (o) => f("update:modelValue", o)
698
+ }), a = x(() => [
699
+ "rvc-textarea",
700
+ `rvc-textarea-${d.size}`
701
+ ]);
702
+ return (o, l) => p(s) ? z((t(), n("textarea", {
703
+ key: 0,
704
+ ref_key: "textarea",
705
+ ref: v,
706
+ "onUpdate:modelValue": l[0] || (l[0] = (i) => g.value = i),
707
+ class: $(a.value)
708
+ }, null, 2)), [
709
+ [Y, g.value]
710
+ ]) : (t(), n("textarea", {
711
+ key: 1,
712
+ ref_key: "textarea",
713
+ ref: v,
714
+ class: $(a.value)
715
+ }, null, 2));
716
+ }
717
+ }), He = { class: "rvc-radio-input" }, Ke = { class: "rvc-radio-label" }, rt = /* @__PURE__ */ L({
718
+ inheritAttrs: !1,
719
+ __name: "Radio",
720
+ props: {
721
+ modelValue: { type: [Boolean, String, Array, Object, Number, null], default: null },
722
+ label: { default: "" },
723
+ rootClass: { default: "" }
724
+ },
725
+ emits: ["update:modelValue"],
726
+ setup(e, { emit: r }) {
727
+ const d = e, f = r, s = x({
728
+ get: () => d.modelValue,
729
+ set: (l) => f("update:modelValue", l)
730
+ }), { hasModelBinding: v } = j(), g = R(), a = x(() => ({
731
+ ...g,
732
+ type: "radio"
733
+ })), o = S(null);
734
+ return (l, i) => (t(), n("label", {
735
+ class: $(["rvc-radio", e.rootClass])
736
+ }, [
737
+ u("div", He, [
738
+ p(v) ? z((t(), n("input", k({ key: 0 }, a.value, {
739
+ ref_key: "input",
740
+ ref: o,
741
+ "onUpdate:modelValue": i[0] || (i[0] = (b) => s.value = b)
742
+ }), null, 16)), [
743
+ [U, s.value]
744
+ ]) : (t(), n("input", k({ key: 1 }, a.value, {
745
+ ref_key: "input",
746
+ ref: o
747
+ }), null, 16))
748
+ ]),
749
+ c(l.$slots, "default", {}, () => [
750
+ u("span", Ke, y(e.label), 1)
751
+ ])
752
+ ], 2));
753
+ }
754
+ }), We = { class: "rvc-tabs-nav" }, qe = ["value", "selected"], ct = /* @__PURE__ */ L({
755
+ inheritAttrs: !1,
756
+ __name: "Tabs",
757
+ props: {
758
+ modelValue: { default: void 0 },
759
+ tabs: { default: () => [] },
760
+ tabStyle: { default: "default" }
761
+ },
762
+ emits: ["update:modelValue", "tabs:change"],
763
+ setup(e, { emit: r }) {
764
+ const d = e, f = r, s = () => {
765
+ const o = d.tabs.findIndex((l) => l.active);
766
+ return o >= 0 ? o : 0;
767
+ }, v = x({
768
+ get: () => d.modelValue ?? s(),
769
+ set: (o) => {
770
+ const l = d.tabs[o];
771
+ f("update:modelValue", o), l && f("tabs:change", l);
772
+ }
773
+ }), g = (o) => {
774
+ const i = +o.target.value;
775
+ v.value = i;
776
+ const b = d.tabs[i];
777
+ b?.selectEvent && b.selectEvent();
778
+ }, a = (o) => {
779
+ const {
780
+ active: l,
781
+ as: i,
782
+ bindAs: b,
783
+ selectEvent: w,
784
+ name: N,
785
+ ...O
786
+ } = o;
787
+ return O;
788
+ };
789
+ return (o, l) => (t(), n(C, null, [
790
+ u("div", k(o.$attrs, {
791
+ class: ["rvc-tabs", { "rvc-tabs-buttons": e.tabStyle === "buttons" }]
792
+ }), [
793
+ u("nav", We, [
794
+ (t(!0), n(C, null, P(e.tabs, (i, b) => (t(), B(I(i.as ? i.as : "button"), k({ ref_for: !0 }, a(i), {
795
+ key: `${b}-tab-item`,
796
+ as: i.bindAs ? i.bindAs : void 0,
797
+ class: ["rvc-tab", { "rvc-tab-active": v.value === b }],
798
+ onClick: (w) => v.value = b
799
+ }), {
800
+ default: A(() => [
801
+ T(y(i.name), 1)
802
+ ]),
803
+ _: 2
804
+ }, 1040, ["as", "class", "onClick"]))), 128))
805
+ ])
806
+ ], 16),
807
+ V(K, k(o.$attrs, {
808
+ "root-class": "rvc-tabs-select",
809
+ value: v.value,
810
+ onChange: g
811
+ }), {
812
+ default: A(() => [
813
+ (t(!0), n(C, null, P(e.tabs, (i, b) => (t(), n("option", {
814
+ key: `${b}-tab-item-select-option`,
815
+ value: b,
816
+ selected: v.value === b
817
+ }, y(i.name), 9, qe))), 128))
818
+ ]),
819
+ _: 1
820
+ }, 16, ["value"])
821
+ ], 64));
822
+ }
823
+ });
824
+ export {
825
+ tt as _,
826
+ lt as a,
827
+ at as b,
828
+ nt as c,
829
+ st as d,
830
+ ot as e,
831
+ K as f,
832
+ it as g,
833
+ Ce as h,
834
+ rt as i,
835
+ ct as j
836
+ };