@fiscozen/checkbox 0.2.0 → 1.0.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.
Files changed (42) hide show
  1. package/dist/checkbox.js +2376 -0
  2. package/dist/checkbox.umd.cjs +13 -0
  3. package/dist/index.d.ts +1 -0
  4. package/dist/src/FzCheckbox.vue.d.ts +102 -0
  5. package/dist/src/FzCheckboxGroup.vue.d.ts +72 -0
  6. package/dist/src/__tests__/FzCheckbox.spec.d.ts +1 -0
  7. package/dist/src/__tests__/FzCheckboxGroup.spec.d.ts +1 -0
  8. package/dist/src/common.d.ts +23 -0
  9. package/dist/src/components/ErrorAlert.vue.d.ts +34 -0
  10. package/dist/src/components/FzCheckboxGroupOption.vue.d.ts +86 -0
  11. package/dist/src/index.d.ts +4 -0
  12. package/dist/src/types.d.ts +192 -0
  13. package/dist/src/utils.d.ts +24 -0
  14. package/dist/style.css +1 -0
  15. package/package.json +9 -13
  16. package/src/__tests__/FzCheckbox.spec.ts +748 -0
  17. package/src/__tests__/FzCheckboxGroup.spec.ts +764 -0
  18. package/src/__tests__/__snapshots__/FzCheckbox.spec.ts.snap +427 -0
  19. package/src/__tests__/__snapshots__/FzCheckboxGroup.spec.ts.snap +805 -0
  20. package/src/components/ErrorAlert.vue +1 -1
  21. package/tsconfig.tsbuildinfo +1 -0
  22. package/vitest.config.ts +9 -1
  23. package/coverage/base.css +0 -224
  24. package/coverage/block-navigation.js +0 -87
  25. package/coverage/clover.xml +0 -1031
  26. package/coverage/coverage-final.json +0 -7
  27. package/coverage/favicon.png +0 -0
  28. package/coverage/index.html +0 -131
  29. package/coverage/prettify.css +0 -1
  30. package/coverage/prettify.js +0 -2
  31. package/coverage/sort-arrow-sprite.png +0 -0
  32. package/coverage/sorter.js +0 -196
  33. package/coverage/src/FzCheckbox.vue.html +0 -1489
  34. package/coverage/src/FzCheckboxGroup.vue.html +0 -682
  35. package/coverage/src/common.ts.html +0 -157
  36. package/coverage/src/components/ErrorAlert.vue.html +0 -268
  37. package/coverage/src/components/FzCheckboxGroupOption.vue.html +0 -652
  38. package/coverage/src/components/index.html +0 -131
  39. package/coverage/src/index.html +0 -161
  40. package/coverage/src/utils.ts.html +0 -265
  41. package/src/__test__/FzCheckbox.test.ts +0 -206
  42. package/src/__test__/FzCheckboxGroup.test.ts +0 -263
@@ -0,0 +1,2376 @@
1
+ import { ref as E, reactive as ge, onUnmounted as ne, nextTick as we, onMounted as ee, computed as s, defineComponent as A, useSlots as te, toRef as ue, toRefs as ke, watch as F, onBeforeUnmount as Ce, createElementBlock as S, openBlock as v, renderSlot as $, createElementVNode as T, withDirectives as J, createCommentVNode as z, createBlock as O, unref as m, normalizeClass as g, vShow as ce, Teleport as ze, createTextVNode as M, toDisplayString as P, createVNode as W, mergeProps as oe, resolveDynamicComponent as $e, withCtx as R, resolveComponent as Be, resolveDirective as Se, withModifiers as Oe, mergeModels as Z, useModel as le, shallowRef as Ie, vModelCheckbox as Ee, Fragment as re, createSlots as Re, renderList as ve } from "vue";
2
+ import { FzIcon as U } from "@fiscozen/icons";
3
+ function me(e) {
4
+ const t = Date.now() - 16e11, a = Math.random().toString(36).slice(2, 7);
5
+ return `${e}-${t}-${a}`;
6
+ }
7
+ function be() {
8
+ return me("fz-checkbox");
9
+ }
10
+ function Fe() {
11
+ return me("fz-checkbox-group");
12
+ }
13
+ const G = new DOMRect(0, 0, window.innerWidth, window.innerHeight), q = (e, t, a, o, i) => {
14
+ let l = i ? "bottom" : "right", c = i ? "bottom-start" : "right-start";
15
+ G.width = window.innerWidth, G.height = window.innerHeight, G.x = 0, G.y = 0;
16
+ const p = e ? e.getBoundingClientRect() : G, w = t.getBoundingClientRect(), y = a.getBoundingClientRect(), d = (y.left - p.left - w.width) / p.width, r = (p.right - y.right - w.width) / p.width, u = (y.top - p.top - w.height) / p.height, f = (p.bottom - y.bottom - w.height) / p.height;
17
+ let n = [
18
+ {
19
+ key: "right",
20
+ space: r
21
+ },
22
+ {
23
+ key: "top",
24
+ space: u
25
+ },
26
+ {
27
+ key: "bottom",
28
+ space: f
29
+ },
30
+ {
31
+ key: "left",
32
+ space: d
33
+ }
34
+ ].sort((b, h) => h.space - b.space);
35
+ if (i && (n = n.filter((b) => b.key === "top" || b.key === "bottom")), l = n[0].key, !o) {
36
+ const b = (w.height - y.height) / 2;
37
+ switch (l) {
38
+ case "right":
39
+ case "left":
40
+ p.top > y.top - b && (o = "end"), p.bottom < y.top - b && (o = "start");
41
+ break;
42
+ }
43
+ }
44
+ return c = o ? `${l}-${o}` : l, c;
45
+ }, Te = (e, t, a, o) => ({
46
+ x: t.x + e.width * a / 100,
47
+ y: t.y + e.height * o / 100
48
+ }), ae = (e) => typeof e == "string" ? document.querySelector(e) : e, Ne = (e) => ({
49
+ left: parseFloat(e.marginLeft),
50
+ right: parseFloat(e.marginRight),
51
+ top: parseFloat(e.marginTop),
52
+ bottom: parseFloat(e.marginBottom)
53
+ }), Ae = {
54
+ // Bottom positions - content below opener
55
+ bottom: (e, t) => ({
56
+ position: {
57
+ x: e.left - t.left + e.width / 2,
58
+ y: e.bottom
59
+ },
60
+ transform: { x: -50, y: 0 }
61
+ }),
62
+ "bottom-start": (e, t) => ({
63
+ position: {
64
+ x: e.left - t.left,
65
+ y: e.bottom
66
+ },
67
+ transform: { x: 0, y: 0 }
68
+ }),
69
+ "bottom-end": (e, t) => ({
70
+ position: {
71
+ x: e.right + t.right,
72
+ y: e.bottom
73
+ },
74
+ transform: { x: -100, y: 0 }
75
+ }),
76
+ // Top positions - content above opener
77
+ top: (e, t) => ({
78
+ position: {
79
+ x: e.left - t.left + e.width / 2,
80
+ y: e.top - t.bottom
81
+ },
82
+ transform: { x: -50, y: -100 }
83
+ }),
84
+ "top-start": (e, t) => ({
85
+ position: {
86
+ x: e.left - t.left,
87
+ y: e.top - t.bottom
88
+ },
89
+ transform: { x: 0, y: -100 }
90
+ }),
91
+ "top-end": (e, t) => ({
92
+ position: {
93
+ x: e.right + t.right,
94
+ y: e.top - t.bottom
95
+ },
96
+ transform: { x: -100, y: -100 }
97
+ }),
98
+ // Left positions - content to left of opener
99
+ left: (e, t) => ({
100
+ position: {
101
+ x: e.left - t.right,
102
+ y: e.top - t.top + e.height / 2
103
+ },
104
+ transform: { x: -100, y: -50 }
105
+ }),
106
+ "left-start": (e, t) => ({
107
+ position: {
108
+ x: e.left - t.right,
109
+ y: e.top - t.top
110
+ },
111
+ transform: { x: -100, y: 0 }
112
+ }),
113
+ "left-end": (e, t) => ({
114
+ position: {
115
+ x: e.left - t.right,
116
+ y: e.bottom + t.bottom
117
+ },
118
+ transform: { x: -100, y: -100 }
119
+ }),
120
+ // Right positions - content to right of opener
121
+ right: (e, t) => ({
122
+ position: {
123
+ x: e.right + t.left,
124
+ y: e.top - t.top + e.height / 2
125
+ },
126
+ transform: { x: 0, y: -50 }
127
+ }),
128
+ "right-start": (e, t) => ({
129
+ position: {
130
+ x: e.right + t.left,
131
+ y: e.top - t.top
132
+ },
133
+ transform: { x: 0, y: 0 }
134
+ }),
135
+ "right-end": (e, t) => ({
136
+ position: {
137
+ x: e.right + t.left,
138
+ y: e.bottom + t.bottom
139
+ },
140
+ transform: { x: 0, y: -100 }
141
+ })
142
+ }, Le = (e, t, a) => {
143
+ const o = Ae[e];
144
+ return o ? o(t, a) : { position: { x: 0, y: 0 }, transform: { x: 0, y: 0 } };
145
+ }, Ve = {
146
+ bottom: (e, t) => ({
147
+ position: {
148
+ x: e.left + e.width / 2,
149
+ y: e.bottom - t.height
150
+ },
151
+ transform: { x: -50, y: 0 }
152
+ }),
153
+ "bottom-start": (e, t) => ({
154
+ position: {
155
+ x: e.left,
156
+ y: e.bottom - t.height
157
+ },
158
+ transform: { x: 0, y: 0 }
159
+ }),
160
+ "bottom-end": (e, t) => ({
161
+ position: {
162
+ x: e.right - t.width,
163
+ y: e.bottom - t.height
164
+ },
165
+ transform: { x: 0, y: 0 }
166
+ }),
167
+ top: (e) => ({
168
+ position: {
169
+ x: e.left + e.width / 2,
170
+ y: e.top
171
+ },
172
+ transform: { x: -50, y: 0 }
173
+ }),
174
+ "top-start": (e) => ({
175
+ position: {
176
+ x: e.left,
177
+ y: e.top
178
+ },
179
+ transform: { x: 0, y: 0 }
180
+ }),
181
+ "top-end": (e, t) => ({
182
+ position: {
183
+ x: e.right - t.width,
184
+ y: e.top
185
+ },
186
+ transform: { x: 0, y: 0 }
187
+ }),
188
+ left: (e, t) => ({
189
+ position: {
190
+ x: e.left,
191
+ y: e.top + (e.height - t.height) / 2
192
+ },
193
+ transform: { x: 0, y: 0 }
194
+ }),
195
+ "left-start": (e) => ({
196
+ position: {
197
+ x: e.left,
198
+ y: e.top
199
+ },
200
+ transform: { x: 0, y: 0 }
201
+ }),
202
+ "left-end": (e, t) => ({
203
+ position: {
204
+ x: e.left,
205
+ y: e.bottom - t.height
206
+ },
207
+ transform: { x: 0, y: 0 }
208
+ }),
209
+ right: (e, t) => ({
210
+ position: {
211
+ x: e.right - t.width,
212
+ y: e.top + (e.height - t.height) / 2
213
+ },
214
+ transform: { x: 0, y: 0 }
215
+ }),
216
+ "right-start": (e, t) => ({
217
+ position: {
218
+ x: e.right - t.width,
219
+ y: e.top
220
+ },
221
+ transform: { x: 0, y: 0 }
222
+ }),
223
+ "right-end": (e, t) => ({
224
+ position: {
225
+ x: e.right - t.width,
226
+ y: e.bottom - t.height
227
+ },
228
+ transform: { x: 0, y: 0 }
229
+ })
230
+ }, De = (e, t, a) => {
231
+ const o = Ve[e];
232
+ return o ? o(t, a) : { position: { x: 0, y: 0 }, transform: { x: 0, y: 0 } };
233
+ }, Me = (e, t, a, o) => {
234
+ const i = { ...e }, l = { ...o };
235
+ if (e.x < a.left && (i.x = a.left, l.x = 0), e.x + t.width > a.right) {
236
+ const c = a.right - t.width;
237
+ c > 0 && (i.x = c), l.x = 0;
238
+ }
239
+ if (e.y < a.top && (i.y = a.top, l.y = 0), e.y + t.height > a.bottom) {
240
+ const c = a.bottom - t.height;
241
+ c > 0 && (i.y = c), l.y = 0;
242
+ }
243
+ return { position: i, transform: l };
244
+ }, Pe = (e, t, a, o, i) => {
245
+ const l = i ? null : t;
246
+ switch (e) {
247
+ case "auto":
248
+ return q(l, a, o);
249
+ case "auto-vertical":
250
+ return q(l, a, o, void 0, !0);
251
+ case "auto-start":
252
+ return q(l, a, o, "start");
253
+ case "auto-vertical-start":
254
+ return q(l, a, o, "start", !0);
255
+ case "auto-end":
256
+ return q(l, a, o, "end");
257
+ case "auto-vertical-end":
258
+ return q(l, a, o, "end", !0);
259
+ default:
260
+ return "bottom-start";
261
+ }
262
+ }, He = (e) => e.startsWith("auto"), qe = (e) => {
263
+ const t = E("auto"), a = E(), o = E(), i = E(), l = E(), c = ge({ position: { x: 0, y: 0 } }), p = {
264
+ root: null,
265
+ rootMargin: "0px",
266
+ threshold: 1,
267
+ ...e.element.value.intersectionOptions
268
+ }, w = E(new IntersectionObserver(() => {
269
+ }, p)), y = () => {
270
+ var b, h;
271
+ const u = ae(e.element.value.domRef.value);
272
+ if (!u)
273
+ return null;
274
+ const f = (b = e.container) != null && b.value ? ae(e.container.value.domRef.value) ?? document.body : document.body, n = (h = e.opener) != null && h.value ? ae(e.opener.value.domRef.value) : null;
275
+ return { element: u, container: f, opener: n };
276
+ }, d = (u) => {
277
+ var f;
278
+ return {
279
+ element: u.element.getBoundingClientRect(),
280
+ container: u.container.getBoundingClientRect(),
281
+ opener: ((f = u.opener) == null ? void 0 : f.getBoundingClientRect()) ?? null
282
+ };
283
+ }, r = (u = !1) => we(() => {
284
+ var I, V, N;
285
+ a.value = ((I = e.position) == null ? void 0 : I.value) ?? "auto";
286
+ const f = y();
287
+ if (!f) return;
288
+ Object.assign(f.element.style, {
289
+ position: "fixed",
290
+ top: "0px",
291
+ left: "0px"
292
+ });
293
+ const n = d(f);
294
+ o.value = n.element, i.value = n.opener ?? void 0, l.value = n.container, w.value.observe(f.element), w.value.observe(f.container), He(a.value) && f.opener && (a.value = Pe(
295
+ a.value,
296
+ f.container,
297
+ f.element,
298
+ f.opener,
299
+ ((V = e.useViewport) == null ? void 0 : V.value) ?? !1
300
+ ));
301
+ const b = Ne(window.getComputedStyle(f.element)), h = f.opener && n.opener ? Le(a.value, n.opener, b) : De(a.value, n.container, n.element), k = Te(
302
+ n.element,
303
+ h.position,
304
+ h.transform.x,
305
+ h.transform.y
306
+ ), B = Me(
307
+ k,
308
+ n.element,
309
+ n.container,
310
+ h.transform
311
+ );
312
+ c.position.x = B.position.x, c.position.y = B.position.y, Object.assign(f.element.style, {
313
+ top: `${c.position.y}px`,
314
+ left: `${c.position.x}px`,
315
+ position: "fixed",
316
+ display: "flex"
317
+ }), o.value = f.element.getBoundingClientRect(), (N = e.callback) != null && N.value && !u && e.callback.value(o, i, l, t, a);
318
+ });
319
+ return ne(() => {
320
+ w.value.disconnect();
321
+ }), {
322
+ float: c,
323
+ rect: o,
324
+ setPosition: r,
325
+ position: t,
326
+ actualPosition: a,
327
+ openerRect: i,
328
+ containerRect: l
329
+ };
330
+ };
331
+ function We(e) {
332
+ const t = window.matchMedia(e), a = E(t.matches);
333
+ function o(i) {
334
+ a.value = i.matches;
335
+ }
336
+ return ee(() => {
337
+ t.addEventListener("change", o);
338
+ }), ne(() => {
339
+ t.removeEventListener("change", o);
340
+ }), s(() => a.value);
341
+ }
342
+ const je = {
343
+ blue: {
344
+ 50: {
345
+ value: "#eff1ff",
346
+ type: "color"
347
+ },
348
+ 100: {
349
+ value: "#dee2ff",
350
+ type: "color"
351
+ },
352
+ 200: {
353
+ value: "#bdc5ff",
354
+ type: "color"
355
+ },
356
+ 300: {
357
+ value: "#9ca8ff",
358
+ type: "color"
359
+ },
360
+ 400: {
361
+ value: "#7b8bff",
362
+ type: "color"
363
+ },
364
+ 500: {
365
+ value: "#5a6eff",
366
+ type: "color"
367
+ },
368
+ 600: {
369
+ value: "#4858cc",
370
+ type: "color"
371
+ },
372
+ 700: {
373
+ value: "#364299",
374
+ type: "color"
375
+ },
376
+ 800: {
377
+ value: "#242c66",
378
+ type: "color"
379
+ },
380
+ 900: {
381
+ value: "#1b214c",
382
+ type: "color"
383
+ }
384
+ },
385
+ purple: {
386
+ 50: {
387
+ value: "#f8f4ff",
388
+ type: "color"
389
+ },
390
+ 100: {
391
+ value: "#f0e9ff",
392
+ type: "color"
393
+ },
394
+ 200: {
395
+ value: "#e1d3ff",
396
+ type: "color"
397
+ },
398
+ 300: {
399
+ value: "#d2bdff",
400
+ type: "color"
401
+ },
402
+ 400: {
403
+ value: "#c3a7ff",
404
+ type: "color"
405
+ },
406
+ 500: {
407
+ value: "#b491ff",
408
+ type: "color"
409
+ },
410
+ 600: {
411
+ value: "#9074cc",
412
+ type: "color"
413
+ },
414
+ 700: {
415
+ value: "#6c5799",
416
+ type: "color"
417
+ },
418
+ 800: {
419
+ value: "#483a66",
420
+ type: "color"
421
+ },
422
+ 900: {
423
+ value: "#241d33",
424
+ type: "color"
425
+ }
426
+ },
427
+ orange: {
428
+ 50: {
429
+ value: "#fff2ef",
430
+ type: "color"
431
+ },
432
+ 100: {
433
+ value: "#ffe4de",
434
+ type: "color"
435
+ },
436
+ 200: {
437
+ value: "#ffc9bd",
438
+ type: "color"
439
+ },
440
+ 300: {
441
+ value: "#ffae9c",
442
+ type: "color"
443
+ },
444
+ 400: {
445
+ value: "#ff937b",
446
+ type: "color"
447
+ },
448
+ 500: {
449
+ value: "#ff785a",
450
+ type: "color"
451
+ },
452
+ 600: {
453
+ value: "#cc6048",
454
+ type: "color"
455
+ },
456
+ 700: {
457
+ value: "#994836",
458
+ type: "color"
459
+ },
460
+ 800: {
461
+ value: "#663024",
462
+ type: "color"
463
+ },
464
+ 900: {
465
+ value: "#331812",
466
+ type: "color"
467
+ }
468
+ },
469
+ pink: {
470
+ 50: {
471
+ value: "#fff5f5",
472
+ type: "color"
473
+ },
474
+ 100: {
475
+ value: "#ffe0e0",
476
+ type: "color"
477
+ },
478
+ 200: {
479
+ value: "#ffcbcb",
480
+ type: "color"
481
+ },
482
+ 300: {
483
+ value: "#ffc0c0",
484
+ type: "color"
485
+ },
486
+ 400: {
487
+ value: "#ffabab",
488
+ type: "color"
489
+ },
490
+ 500: {
491
+ value: "#ff9696",
492
+ type: "color"
493
+ },
494
+ 600: {
495
+ value: "#cc7878",
496
+ type: "color"
497
+ },
498
+ 700: {
499
+ value: "#995a5a",
500
+ type: "color"
501
+ },
502
+ 800: {
503
+ value: "#663c3c",
504
+ type: "color"
505
+ },
506
+ 900: {
507
+ value: "#331e1e",
508
+ type: "color"
509
+ }
510
+ },
511
+ yellow: {
512
+ 50: {
513
+ value: "#fffbf4",
514
+ type: "color"
515
+ },
516
+ 100: {
517
+ value: "#fff3de",
518
+ type: "color"
519
+ },
520
+ 200: {
521
+ value: "#ffebc8",
522
+ type: "color"
523
+ },
524
+ 300: {
525
+ value: "#ffe7bd",
526
+ type: "color"
527
+ },
528
+ 400: {
529
+ value: "#ffdfa7",
530
+ type: "color"
531
+ },
532
+ 500: {
533
+ value: "#ffd791",
534
+ type: "color"
535
+ },
536
+ 600: {
537
+ value: "#ccac74",
538
+ type: "color"
539
+ },
540
+ 700: {
541
+ value: "#998157",
542
+ type: "color"
543
+ },
544
+ 800: {
545
+ value: "#806c49",
546
+ type: "color"
547
+ },
548
+ 900: {
549
+ value: "#4c402b",
550
+ type: "color"
551
+ }
552
+ },
553
+ semantic: {
554
+ error: {
555
+ 50: {
556
+ value: "#fef3f3",
557
+ type: "color"
558
+ },
559
+ 100: {
560
+ value: "#f8baba",
561
+ type: "color"
562
+ },
563
+ 200: {
564
+ value: "#f04242",
565
+ type: "color"
566
+ },
567
+ 300: {
568
+ value: "#aa2f2f",
569
+ type: "color"
570
+ }
571
+ },
572
+ warning: {
573
+ 50: {
574
+ value: "#fff8f3",
575
+ type: "color"
576
+ },
577
+ 100: {
578
+ value: "#ffdabd",
579
+ type: "color"
580
+ },
581
+ 200: {
582
+ value: "#ffae4f",
583
+ type: "color"
584
+ },
585
+ 300: {
586
+ value: "#b47b38",
587
+ type: "color"
588
+ }
589
+ },
590
+ success: {
591
+ 50: {
592
+ value: "#f2f8f6",
593
+ type: "color"
594
+ },
595
+ 100: {
596
+ value: "#b5d8ce",
597
+ type: "color"
598
+ },
599
+ 200: {
600
+ value: "#0fa88c",
601
+ type: "color"
602
+ },
603
+ 300: {
604
+ value: "#0b7763",
605
+ type: "color"
606
+ }
607
+ },
608
+ info: {
609
+ 50: {
610
+ value: "#f3f7ff",
611
+ type: "color"
612
+ },
613
+ 100: {
614
+ value: "#b4c8e1",
615
+ type: "color"
616
+ },
617
+ 200: {
618
+ value: "#4e9fff",
619
+ type: "color"
620
+ },
621
+ 300: {
622
+ value: "#3770b4",
623
+ type: "color"
624
+ }
625
+ }
626
+ },
627
+ background: {
628
+ "white-smoke": {
629
+ value: "#f7f6f3",
630
+ type: "color"
631
+ },
632
+ seashell: {
633
+ value: "#f8ece7",
634
+ type: "color"
635
+ },
636
+ "pale-purple": {
637
+ value: "#f2e6ff",
638
+ type: "color"
639
+ },
640
+ "alice-blue": {
641
+ value: "#ecf2fc",
642
+ type: "color"
643
+ }
644
+ },
645
+ grey: {
646
+ 100: {
647
+ value: "#e9edf0",
648
+ type: "color"
649
+ },
650
+ 200: {
651
+ value: "#d1dde6",
652
+ type: "color"
653
+ },
654
+ 300: {
655
+ value: "#9da9b2",
656
+ type: "color"
657
+ },
658
+ 400: {
659
+ value: "#6e777e",
660
+ type: "color"
661
+ },
662
+ 500: {
663
+ value: "#596167",
664
+ type: "color"
665
+ }
666
+ },
667
+ core: {
668
+ white: {
669
+ value: "#ffffff",
670
+ type: "color"
671
+ },
672
+ black: {
673
+ value: "#2c282f",
674
+ type: "color"
675
+ }
676
+ },
677
+ "font-sans": {
678
+ "sharp-grotesk": {
679
+ value: '"Sharp Grotesk", sans-serif',
680
+ type: "fontFamilies"
681
+ },
682
+ inter: {
683
+ value: '"Inter", sans-serif',
684
+ type: "fontFamilies"
685
+ }
686
+ },
687
+ font: {
688
+ light: {
689
+ value: "300",
690
+ type: "fontWeights"
691
+ },
692
+ normal: {
693
+ value: "400",
694
+ type: "fontWeights"
695
+ },
696
+ medium: {
697
+ value: "500",
698
+ type: "fontWeights"
699
+ }
700
+ },
701
+ spacing: {
702
+ 0: {
703
+ value: "0px",
704
+ type: "spacing"
705
+ },
706
+ 1: {
707
+ value: "1px",
708
+ type: "spacing"
709
+ },
710
+ 2: {
711
+ value: "2px",
712
+ type: "spacing"
713
+ },
714
+ 4: {
715
+ value: "4px",
716
+ type: "spacing"
717
+ },
718
+ 6: {
719
+ value: "6px",
720
+ type: "spacing"
721
+ },
722
+ 8: {
723
+ value: "8px",
724
+ type: "spacing"
725
+ },
726
+ 10: {
727
+ value: "10px",
728
+ type: "spacing"
729
+ },
730
+ 12: {
731
+ value: "12px",
732
+ type: "spacing"
733
+ },
734
+ 14: {
735
+ value: "14px",
736
+ type: "spacing"
737
+ },
738
+ 16: {
739
+ value: "16px",
740
+ type: "spacing"
741
+ },
742
+ 20: {
743
+ value: "20px",
744
+ type: "spacing"
745
+ },
746
+ 24: {
747
+ value: "24px",
748
+ type: "spacing"
749
+ },
750
+ 28: {
751
+ value: "28px",
752
+ type: "spacing"
753
+ },
754
+ 32: {
755
+ value: "32px",
756
+ type: "spacing"
757
+ },
758
+ 36: {
759
+ value: "36px",
760
+ type: "spacing"
761
+ },
762
+ 40: {
763
+ value: "40px",
764
+ type: "spacing"
765
+ },
766
+ 44: {
767
+ value: "44px",
768
+ type: "spacing"
769
+ },
770
+ 48: {
771
+ value: "48px",
772
+ type: "spacing"
773
+ },
774
+ 56: {
775
+ value: "56px",
776
+ type: "spacing"
777
+ },
778
+ 64: {
779
+ value: "64px",
780
+ type: "spacing"
781
+ },
782
+ 80: {
783
+ value: "80px",
784
+ type: "spacing"
785
+ },
786
+ 96: {
787
+ value: "96px",
788
+ type: "spacing"
789
+ },
790
+ 112: {
791
+ value: "112px",
792
+ type: "spacing"
793
+ },
794
+ 128: {
795
+ value: "128px",
796
+ type: "spacing"
797
+ },
798
+ 144: {
799
+ value: "144px",
800
+ type: "spacing"
801
+ },
802
+ 160: {
803
+ value: "160px",
804
+ type: "spacing"
805
+ },
806
+ 176: {
807
+ value: "176px",
808
+ type: "spacing"
809
+ },
810
+ 192: {
811
+ value: "192px",
812
+ type: "spacing"
813
+ },
814
+ 208: {
815
+ value: "208px",
816
+ type: "spacing"
817
+ },
818
+ 224: {
819
+ value: "224px",
820
+ type: "spacing"
821
+ },
822
+ 240: {
823
+ value: "240px",
824
+ type: "spacing"
825
+ },
826
+ 256: {
827
+ value: "256px",
828
+ type: "spacing"
829
+ },
830
+ 288: {
831
+ value: "288px",
832
+ type: "spacing"
833
+ },
834
+ 320: {
835
+ value: "320px",
836
+ type: "spacing"
837
+ },
838
+ 384: {
839
+ value: "384px",
840
+ type: "spacing"
841
+ }
842
+ },
843
+ border: {
844
+ 0: {
845
+ value: "0px",
846
+ type: "borderWidth"
847
+ },
848
+ 1: {
849
+ value: "1px",
850
+ type: "borderWidth"
851
+ },
852
+ 2: {
853
+ value: "2px",
854
+ type: "borderWidth"
855
+ },
856
+ 4: {
857
+ value: "4px",
858
+ type: "borderWidth"
859
+ },
860
+ 8: {
861
+ value: "8px",
862
+ type: "borderWidth"
863
+ }
864
+ },
865
+ rounded: {
866
+ none: {
867
+ value: "0px",
868
+ type: "borderRadius"
869
+ },
870
+ sm: {
871
+ value: "2px",
872
+ type: "borderRadius"
873
+ },
874
+ base: {
875
+ value: "4px",
876
+ type: "borderRadius"
877
+ },
878
+ md: {
879
+ value: "6px",
880
+ type: "borderRadius"
881
+ },
882
+ lg: {
883
+ value: "8px",
884
+ type: "borderRadius"
885
+ },
886
+ xl: {
887
+ value: "12px",
888
+ type: "borderRadius"
889
+ },
890
+ "2xl": {
891
+ value: "16px",
892
+ type: "borderRadius"
893
+ },
894
+ "3xl": {
895
+ value: "24px",
896
+ type: "borderRadius"
897
+ },
898
+ full: {
899
+ value: "9999px",
900
+ type: "borderRadius"
901
+ }
902
+ },
903
+ breakpoint: {
904
+ xs: {
905
+ value: "376px",
906
+ type: "sizing"
907
+ },
908
+ sm: {
909
+ value: "640px",
910
+ type: "sizing"
911
+ },
912
+ md: {
913
+ value: "768px",
914
+ type: "sizing"
915
+ },
916
+ lg: {
917
+ value: "1024px",
918
+ type: "sizing"
919
+ },
920
+ xl: {
921
+ value: "1280px",
922
+ type: "sizing"
923
+ },
924
+ "2xl": {
925
+ value: "1440px",
926
+ type: "sizing"
927
+ },
928
+ "3xl": {
929
+ value: "1536px",
930
+ type: "sizing"
931
+ }
932
+ },
933
+ shadow: {
934
+ none: {
935
+ value: {
936
+ color: "#000000",
937
+ type: "dropShadow",
938
+ x: "0",
939
+ y: "0",
940
+ blur: "0",
941
+ spread: "0"
942
+ },
943
+ type: "boxShadow"
944
+ },
945
+ sm: {
946
+ value: {
947
+ color: "#0000000d",
948
+ type: "dropShadow",
949
+ x: "0",
950
+ y: "1",
951
+ blur: "2",
952
+ spread: "0"
953
+ },
954
+ type: "boxShadow"
955
+ },
956
+ base: {
957
+ value: [
958
+ {
959
+ color: "#0000000f",
960
+ type: "dropShadow",
961
+ x: "0",
962
+ y: "1",
963
+ blur: "2",
964
+ spread: "0"
965
+ },
966
+ {
967
+ color: "#0000001a",
968
+ type: "dropShadow",
969
+ x: "0",
970
+ y: "1",
971
+ blur: "3",
972
+ spread: "0"
973
+ }
974
+ ],
975
+ type: "boxShadow"
976
+ },
977
+ md: {
978
+ value: [
979
+ {
980
+ color: "#0000000f",
981
+ type: "dropShadow",
982
+ x: "0",
983
+ y: "2",
984
+ blur: "4",
985
+ spread: "-1"
986
+ },
987
+ {
988
+ color: "#0000001a",
989
+ type: "dropShadow",
990
+ x: "0",
991
+ y: "4",
992
+ blur: "6",
993
+ spread: "-1"
994
+ }
995
+ ],
996
+ type: "boxShadow"
997
+ },
998
+ lg: {
999
+ value: [
1000
+ {
1001
+ color: "#0000000d",
1002
+ type: "dropShadow",
1003
+ x: "0",
1004
+ y: "4",
1005
+ blur: "6",
1006
+ spread: "-2"
1007
+ },
1008
+ {
1009
+ color: "#0000001a",
1010
+ type: "dropShadow",
1011
+ x: "0",
1012
+ y: "10",
1013
+ blur: "15",
1014
+ spread: "-3"
1015
+ }
1016
+ ],
1017
+ type: "boxShadow"
1018
+ },
1019
+ xl: {
1020
+ value: [
1021
+ {
1022
+ color: "#0000000a",
1023
+ type: "dropShadow",
1024
+ x: "0",
1025
+ y: "10",
1026
+ blur: "10",
1027
+ spread: "-5"
1028
+ },
1029
+ {
1030
+ color: "#0000001a",
1031
+ type: "dropShadow",
1032
+ x: "0",
1033
+ y: "20",
1034
+ blur: "25",
1035
+ spread: "-5"
1036
+ }
1037
+ ],
1038
+ type: "boxShadow"
1039
+ },
1040
+ "2xl": {
1041
+ value: {
1042
+ color: "#00000040",
1043
+ type: "dropShadow",
1044
+ x: "0",
1045
+ y: "25",
1046
+ blur: "50",
1047
+ spread: "-12"
1048
+ },
1049
+ type: "boxShadow"
1050
+ },
1051
+ inner: {
1052
+ value: {
1053
+ color: "#0000000f",
1054
+ type: "innerShadow",
1055
+ x: "0",
1056
+ y: "2",
1057
+ blur: "4",
1058
+ spread: "0"
1059
+ },
1060
+ type: "boxShadow"
1061
+ }
1062
+ },
1063
+ underline: {
1064
+ value: "underline",
1065
+ type: "textDecoration"
1066
+ },
1067
+ text: {
1068
+ xs: {
1069
+ value: "12px",
1070
+ type: "fontSizes"
1071
+ },
1072
+ sm: {
1073
+ value: "14px",
1074
+ type: "fontSizes"
1075
+ },
1076
+ base: {
1077
+ value: "16px",
1078
+ type: "fontSizes"
1079
+ },
1080
+ lg: {
1081
+ value: "18px",
1082
+ type: "fontSizes"
1083
+ },
1084
+ xl: {
1085
+ value: "20px",
1086
+ type: "fontSizes"
1087
+ },
1088
+ "2xl": {
1089
+ value: "24px",
1090
+ type: "fontSizes"
1091
+ },
1092
+ "3xl": {
1093
+ value: "30px",
1094
+ type: "fontSizes"
1095
+ },
1096
+ "4xl": {
1097
+ value: "36px",
1098
+ type: "fontSizes"
1099
+ },
1100
+ "5xl": {
1101
+ value: "48px",
1102
+ type: "fontSizes"
1103
+ },
1104
+ "6xl": {
1105
+ value: "60px",
1106
+ type: "fontSizes"
1107
+ },
1108
+ "7xl": {
1109
+ value: "72px",
1110
+ type: "fontSizes"
1111
+ },
1112
+ "8xl": {
1113
+ value: "96px",
1114
+ type: "fontSizes"
1115
+ },
1116
+ "9xl": {
1117
+ value: "128px",
1118
+ type: "fontSizes"
1119
+ }
1120
+ },
1121
+ leading: {
1122
+ xs: {
1123
+ value: "16px",
1124
+ type: "lineHeights"
1125
+ },
1126
+ sm: {
1127
+ value: "18px",
1128
+ type: "lineHeights"
1129
+ },
1130
+ base: {
1131
+ value: "20px",
1132
+ type: "lineHeights"
1133
+ },
1134
+ lg: {
1135
+ value: "24px",
1136
+ type: "lineHeights"
1137
+ },
1138
+ xl: {
1139
+ value: "28px",
1140
+ type: "lineHeights"
1141
+ },
1142
+ "2xl": {
1143
+ value: "32px",
1144
+ type: "lineHeights"
1145
+ },
1146
+ "3xl": {
1147
+ value: "36px",
1148
+ type: "lineHeights"
1149
+ },
1150
+ "4xl": {
1151
+ value: "40px",
1152
+ type: "lineHeights"
1153
+ },
1154
+ "5xl": {
1155
+ value: "48px",
1156
+ type: "lineHeights"
1157
+ },
1158
+ "6xl": {
1159
+ value: "60px",
1160
+ type: "lineHeights"
1161
+ },
1162
+ "7xl": {
1163
+ value: "72px",
1164
+ type: "lineHeights"
1165
+ },
1166
+ "8xl": {
1167
+ value: "96px",
1168
+ type: "lineHeights"
1169
+ },
1170
+ "9xl": {
1171
+ value: "128px",
1172
+ type: "lineHeights"
1173
+ }
1174
+ }
1175
+ }, ie = {
1176
+ global: je
1177
+ }, Ue = [
1178
+ "blue",
1179
+ "purple",
1180
+ "orange",
1181
+ "pink",
1182
+ "yellow",
1183
+ "grey",
1184
+ "core"
1185
+ ], Ge = {
1186
+ safeColorNames: Ue
1187
+ }, Ke = [
1188
+ "error",
1189
+ "warning",
1190
+ "success",
1191
+ "info"
1192
+ ], Xe = {
1193
+ semanticColorNames: Ke
1194
+ }, Qe = Ge.safeColorNames, Ye = Xe.semanticColorNames, j = {};
1195
+ Qe.forEach((e) => {
1196
+ const t = ie.global[e];
1197
+ t && Object.keys(t).forEach((a) => {
1198
+ var i;
1199
+ const o = (i = t[a]) == null ? void 0 : i.value;
1200
+ o && (j[e] || (j[e] = {}), j[e][a] = o);
1201
+ });
1202
+ });
1203
+ const de = ie.global.semantic;
1204
+ de && Ye.forEach((e) => {
1205
+ const t = de[e];
1206
+ t && typeof t == "object" && Object.keys(t).forEach((a) => {
1207
+ var i;
1208
+ const o = (i = t[a]) == null ? void 0 : i.value;
1209
+ if (o) {
1210
+ const l = `semantic-${e}`;
1211
+ j[l] || (j[l] = {}), j[l][a] = o;
1212
+ }
1213
+ });
1214
+ });
1215
+ const Je = Object.entries(ie.global.breakpoint).reduce(
1216
+ (e, [t, a]) => (e[t] = a.value, e),
1217
+ {}
1218
+ ), Ze = /* @__PURE__ */ A({
1219
+ __name: "FzFloating",
1220
+ props: {
1221
+ isOpen: { type: Boolean, default: !1 },
1222
+ position: { default: "auto" },
1223
+ container: {},
1224
+ contentClass: {},
1225
+ openerClass: {},
1226
+ overrideContentClass: { type: Boolean },
1227
+ overrideOpener: {},
1228
+ teleport: { type: Boolean, default: !1 },
1229
+ useViewport: { type: Boolean }
1230
+ },
1231
+ emits: ["fzfloating:setPosition"],
1232
+ setup(e, { expose: t, emit: a }) {
1233
+ const o = e, i = a, l = E(null), c = E(null), p = te(), w = We(`(max-width: ${Je.xs})`);
1234
+ let y = !1, d = !1, r = null, u = null;
1235
+ const f = {
1236
+ position: o.position,
1237
+ element: {
1238
+ // @ts-ignore
1239
+ domRef: l
1240
+ },
1241
+ container: {
1242
+ // @ts-ignore
1243
+ domRef: ue(o.container || document.body)
1244
+ },
1245
+ opener: {
1246
+ domRef: ue(null)
1247
+ },
1248
+ useViewport: o.useViewport,
1249
+ callback(...x) {
1250
+ i("fzfloating:setPosition", ...x);
1251
+ }
1252
+ }, n = ke(f);
1253
+ p.opener && (f.opener = {
1254
+ // @ts-ignore
1255
+ domRef: c
1256
+ });
1257
+ const b = qe(n), h = () => {
1258
+ y || !d || (y = !0, requestAnimationFrame(() => {
1259
+ d && o.isOpen && b.setPosition(), y = !1;
1260
+ }));
1261
+ };
1262
+ ee(() => {
1263
+ d = !0;
1264
+ });
1265
+ const k = () => {
1266
+ h();
1267
+ }, B = () => {
1268
+ h();
1269
+ }, I = () => {
1270
+ window.addEventListener("scroll", k, !0), window.addEventListener("resize", B), l.value && !r && (r = new ResizeObserver(() => {
1271
+ h();
1272
+ }), r.observe(l.value)), c.value && !u && (u = new ResizeObserver(() => {
1273
+ h();
1274
+ }), u.observe(c.value));
1275
+ }, V = () => {
1276
+ window.removeEventListener("scroll", k, !0), window.removeEventListener("resize", B), r && (r.disconnect(), r = null), u && (u.disconnect(), u = null);
1277
+ };
1278
+ F(
1279
+ () => o.position,
1280
+ () => h()
1281
+ ), F(
1282
+ () => o.isOpen,
1283
+ (x) => {
1284
+ var Q;
1285
+ if (!x || !l.value || !d) {
1286
+ V();
1287
+ return;
1288
+ }
1289
+ I();
1290
+ const D = (Q = c.value) == null ? void 0 : Q.getBoundingClientRect();
1291
+ l.value.style.position = "fixed", l.value.style.top = "0px", l.value.style.left = "0px", l.value.style.transform = "none", l.value.style.width = w.value ? (D == null ? void 0 : D.width) + "px" : "auto", b.setPosition();
1292
+ }
1293
+ ), F(
1294
+ () => o.overrideOpener,
1295
+ (x) => {
1296
+ x && n.opener && n.opener.value && (n.opener.value = {
1297
+ domRef: x
1298
+ });
1299
+ }
1300
+ ), Ce(() => {
1301
+ d = !1, V();
1302
+ });
1303
+ const N = (x) => x.startsWith("bottom") ? "mt-4" : x.startsWith("top") ? "mb-4" : x.startsWith("left") ? "mr-4" : x.startsWith("right") ? "ml-4" : "mt-4", X = s(() => {
1304
+ var D;
1305
+ const x = ((D = b.actualPosition) == null ? void 0 : D.value) ?? o.position;
1306
+ return N(x);
1307
+ }), H = s(() => o.overrideContentClass ? o.contentClass : ["bg-core-white fixed", X.value, o.contentClass]);
1308
+ return t({
1309
+ setPosition: b.setPosition
1310
+ }), (x, D) => (v(), S("div", null, [
1311
+ $(x.$slots, "opener-start"),
1312
+ T("div", {
1313
+ ref_key: "opener",
1314
+ ref: c,
1315
+ class: "inline-flex w-full sm:w-auto"
1316
+ }, [
1317
+ $(x.$slots, "opener", {
1318
+ isOpen: e.isOpen,
1319
+ floating: m(b)
1320
+ })
1321
+ ], 512),
1322
+ $(x.$slots, "opener-end"),
1323
+ e.teleport ? z("", !0) : J((v(), S("div", {
1324
+ key: 0,
1325
+ ref_key: "content",
1326
+ ref: l,
1327
+ class: g(["fz__floating__content w-full sm:w-auto", H.value])
1328
+ }, [
1329
+ $(x.$slots, "default", {
1330
+ isOpen: e.isOpen,
1331
+ floating: m(b)
1332
+ })
1333
+ ], 2)), [
1334
+ [ce, x.$slots.default && (!x.$slots.opener || x.$slots.opener && e.isOpen)]
1335
+ ]),
1336
+ e.teleport ? (v(), O(ze, {
1337
+ key: 1,
1338
+ to: "body"
1339
+ }, [
1340
+ J(T("div", {
1341
+ ref_key: "content",
1342
+ ref: l,
1343
+ class: g(["fz__floating__content", H.value])
1344
+ }, [
1345
+ $(x.$slots, "default", {
1346
+ isOpen: e.isOpen,
1347
+ floating: m(b)
1348
+ })
1349
+ ], 2), [
1350
+ [ce, x.$slots.default && (!x.$slots.opener || x.$slots.opener && e.isOpen)]
1351
+ ])
1352
+ ])) : z("", !0)
1353
+ ]));
1354
+ }
1355
+ }), _ = {
1356
+ xs: "backoffice",
1357
+ sm: "backoffice",
1358
+ md: "backoffice",
1359
+ lg: "frontoffice"
1360
+ }, _e = ["disabled", "aria-disabled"], se = /* @__PURE__ */ A({
1361
+ __name: "FzButton",
1362
+ props: {
1363
+ label: {},
1364
+ tooltip: {},
1365
+ variant: { default: "primary" },
1366
+ size: {},
1367
+ environment: {},
1368
+ disabled: { type: Boolean, default: !1 },
1369
+ iconName: {},
1370
+ iconVariant: {},
1371
+ iconPosition: { default: "before" },
1372
+ containerClass: {},
1373
+ overrideContainerClass: { type: Boolean }
1374
+ },
1375
+ setup(e) {
1376
+ const t = e, a = te();
1377
+ F(() => t.tooltip, (r) => {
1378
+ r && console.warn(
1379
+ '[FzButton] The "tooltip" prop is deprecated and will be removed in a future version. Please use the FzTooltip component to wrap your button instead.'
1380
+ );
1381
+ }, { immediate: !0 }), F(() => t.size, (r) => {
1382
+ if (r !== void 0) {
1383
+ const u = _[r];
1384
+ t.environment && t.environment !== u ? console.warn(
1385
+ `[FzButton] Both "size" and "environment" props are provided. "environment=${t.environment}" will be used and "size=${r}" will be ignored. Please remove the deprecated "size" prop.`
1386
+ ) : console.warn(
1387
+ `[FzButton] The "size" prop is deprecated and will be removed in a future version. Please use environment="${u}" instead of size="${r}".`
1388
+ );
1389
+ }
1390
+ }, { immediate: !0 });
1391
+ const o = s(() => !t.disabled), i = s(() => {
1392
+ switch (t.variant) {
1393
+ case "secondary":
1394
+ return {
1395
+ "bg-core-white": !0,
1396
+ "text-grey-500": !0,
1397
+ "!border-grey-200": !0,
1398
+ "hover:bg-grey-100": o.value,
1399
+ "hover:!border-grey-200": o.value,
1400
+ "focus:bg-core-white": o.value,
1401
+ "focus:!border-blue-600": o.value,
1402
+ "disabled:bg-grey-50": !0,
1403
+ "disabled:text-grey-200": !0,
1404
+ "disabled:!border-grey-200": !0
1405
+ };
1406
+ case "invisible":
1407
+ return {
1408
+ "bg-transparent": !0,
1409
+ "text-grey-500": !0,
1410
+ "!border-transparent": !0,
1411
+ "hover:bg-grey-100": o.value,
1412
+ "hover:!border-grey-100": o.value,
1413
+ "focus:bg-transparent": o.value,
1414
+ "focus:!border-blue-600": o.value,
1415
+ "disabled:bg-grey-50": !0,
1416
+ "disabled:text-grey-200": !0,
1417
+ "disabled:!border-grey-200": !0
1418
+ };
1419
+ case "danger":
1420
+ return {
1421
+ "bg-semantic-error-200": !0,
1422
+ "text-core-white": !0,
1423
+ "hover:bg-semantic-error-300": o.value,
1424
+ "focus:bg-semantic-error-200": o.value,
1425
+ "focus:!border-semantic-error-300": o.value,
1426
+ "disabled:bg-semantic-error-100": !0
1427
+ };
1428
+ case "success":
1429
+ return {
1430
+ "bg-semantic-success-200": !0,
1431
+ "text-core-white": !0,
1432
+ "hover:bg-semantic-success-300": o.value,
1433
+ "focus:bg-semantic-success-200": o.value,
1434
+ "focus:!border-semantic-success-300": o.value,
1435
+ "disabled:bg-semantic-success-100": !0
1436
+ };
1437
+ case "primary":
1438
+ default:
1439
+ return {
1440
+ "bg-blue-500": !0,
1441
+ "text-core-white": !0,
1442
+ "hover:bg-blue-600": o.value,
1443
+ "focus:bg-blue-500": o.value,
1444
+ "focus:!border-blue-600": o.value,
1445
+ "disabled:bg-blue-200": !0
1446
+ };
1447
+ }
1448
+ }), l = s(() => t.environment ? t.environment : t.size ? _[t.size] : "frontoffice"), c = s(() => {
1449
+ const r = !!(t.label || a.default), u = !!t.iconName, f = t.overrideContainerClass && u;
1450
+ return r && u || f;
1451
+ }), p = [
1452
+ "relative",
1453
+ "rounded",
1454
+ "flex",
1455
+ "flex-shrink",
1456
+ "items-center",
1457
+ "justify-center",
1458
+ "font-normal",
1459
+ "!text-[16px]",
1460
+ "!leading-[20px]",
1461
+ "border-1",
1462
+ "border-transparent",
1463
+ "gap-8"
1464
+ ], w = ["flex", "items-center", "justify-items-center"], y = s(() => {
1465
+ const r = l.value;
1466
+ return {
1467
+ // Height classes (explicit for PurgeCSS detection)
1468
+ "h-32": r === "backoffice",
1469
+ "h-44": r === "frontoffice",
1470
+ // Padding classes (same for both environments)
1471
+ "px-12": !0,
1472
+ // Min-width classes (same for both environments)
1473
+ "min-w-96": !0,
1474
+ ...i.value
1475
+ };
1476
+ }), d = s(() => t.overrideContainerClass ? t.containerClass : ["truncate", "font-normal", "!text-[16px]", "!leading-[20px]", t.containerClass]);
1477
+ return (r, u) => (v(), S("button", {
1478
+ type: "button",
1479
+ disabled: e.disabled,
1480
+ "aria-disabled": e.disabled ? "true" : "false",
1481
+ class: g([p, y.value])
1482
+ }, [
1483
+ m(a).before || c.value && e.iconPosition === "before" ? (v(), S("div", {
1484
+ key: 0,
1485
+ class: g(w)
1486
+ }, [
1487
+ $(r.$slots, "before", {}, () => [
1488
+ e.iconName ? (v(), O(m(U), {
1489
+ key: 0,
1490
+ name: e.iconName,
1491
+ size: "md",
1492
+ variant: e.iconVariant
1493
+ }, null, 8, ["name", "variant"])) : z("", !0)
1494
+ ])
1495
+ ])) : z("", !0),
1496
+ e.label || m(a).default ? (v(), S("div", {
1497
+ key: 1,
1498
+ class: g(d.value)
1499
+ }, [
1500
+ $(r.$slots, "default", {}, () => [
1501
+ M(P(e.label), 1)
1502
+ ])
1503
+ ], 2)) : z("", !0),
1504
+ m(a).after || c.value && e.iconPosition === "after" ? (v(), S("div", {
1505
+ key: 2,
1506
+ class: g(w)
1507
+ }, [
1508
+ $(r.$slots, "after", {}, () => [
1509
+ e.iconName ? (v(), O(m(U), {
1510
+ key: 0,
1511
+ name: e.iconName,
1512
+ size: "md",
1513
+ variant: e.iconVariant
1514
+ }, null, 8, ["name", "variant"])) : z("", !0)
1515
+ ])
1516
+ ])) : z("", !0)
1517
+ ], 10, _e));
1518
+ }
1519
+ }), et = /* @__PURE__ */ A({
1520
+ inheritAttrs: !1,
1521
+ __name: "FzIconButton",
1522
+ props: {
1523
+ tooltip: {},
1524
+ variant: { default: "primary" },
1525
+ environment: {},
1526
+ size: {},
1527
+ disabled: { type: Boolean, default: !1 },
1528
+ iconName: {},
1529
+ iconVariant: { default: "far" },
1530
+ iconSize: {},
1531
+ hasNotification: { type: Boolean, default: !1 },
1532
+ ariaLabel: {}
1533
+ },
1534
+ setup(e) {
1535
+ const t = e;
1536
+ F(() => t.tooltip, (l) => {
1537
+ l && console.warn(
1538
+ '[FzIconButton] The "tooltip" prop is deprecated and will be removed in a future version. Please use the FzTooltip component to wrap your button instead.'
1539
+ );
1540
+ }, { immediate: !0 }), F(() => t.size, (l) => {
1541
+ if (l !== void 0) {
1542
+ const c = _[l];
1543
+ t.environment && t.environment !== c ? console.warn(
1544
+ `[FzIconButton] Both "size" and "environment" props are provided. "environment=${t.environment}" will be used and "size=${l}" will be ignored. Please remove the deprecated "size" prop.`
1545
+ ) : console.warn(
1546
+ `[FzIconButton] The "size" prop is deprecated and will be removed in a future version. Please use environment="${c}" instead of size="${l}".`
1547
+ );
1548
+ }
1549
+ }, { immediate: !0 }), F(() => t.iconSize, (l) => {
1550
+ l !== void 0 && console.warn(
1551
+ '[FzIconButton] The "iconSize" prop is deprecated and will be removed in a future version. Icon size has now a fixed dimension. Please remove the "iconSize" prop from your code.'
1552
+ );
1553
+ }, { immediate: !0 });
1554
+ const a = s(() => t.environment ? t.environment : t.size ? _[t.size] : "frontoffice"), o = s(() => {
1555
+ const l = t.ariaLabel || "";
1556
+ return t.hasNotification ? `${l}, hai delle notifiche` : l;
1557
+ }), i = s(() => {
1558
+ const l = {
1559
+ "rounded-full": !0,
1560
+ "w-8": !0,
1561
+ "h-8": !0,
1562
+ absolute: !0,
1563
+ "-top-[2px]": !0,
1564
+ "-right-[2px]": !0
1565
+ };
1566
+ return t.disabled ? t.variant === "primary" ? {
1567
+ ...l,
1568
+ "bg-orange-200": !0
1569
+ } : {
1570
+ ...l,
1571
+ "bg-grey-200": !0
1572
+ } : t.variant === "primary" ? {
1573
+ ...l,
1574
+ "bg-orange-500": !0
1575
+ } : {
1576
+ ...l,
1577
+ "bg-blue-500": !0
1578
+ };
1579
+ });
1580
+ return (l, c) => (v(), S("span", {
1581
+ class: g(["fz-icon-button-wrapper", "relative", { "fz-icon-button-wrapper--backoffice": a.value === "backoffice", "fz-icon-button-wrapper--frontoffice": a.value === "frontoffice" }])
1582
+ }, [
1583
+ W(se, oe(l.$attrs, {
1584
+ disabled: t.disabled,
1585
+ environment: a.value,
1586
+ variant: t.variant,
1587
+ "aria-label": o.value,
1588
+ "icon-name": t.iconName,
1589
+ "icon-variant": t.iconVariant,
1590
+ "icon-position": "before",
1591
+ overrideContainerClass: ""
1592
+ }), null, 16, ["disabled", "environment", "variant", "aria-label", "icon-name", "icon-variant"]),
1593
+ t.hasNotification ? (v(), S("div", {
1594
+ key: 0,
1595
+ class: g(i.value),
1596
+ "aria-hidden": "true"
1597
+ }, null, 2)) : z("", !0)
1598
+ ], 2));
1599
+ }
1600
+ }), K = (e, t) => {
1601
+ const a = e.__vccOpts || e;
1602
+ for (const [o, i] of t)
1603
+ a[o] = i;
1604
+ return a;
1605
+ }, ye = /* @__PURE__ */ K(et, [["__scopeId", "data-v-b4be112d"]]), tt = /* @__PURE__ */ A({
1606
+ __name: "FzContainer",
1607
+ props: {
1608
+ main: { type: Boolean, default: !1 },
1609
+ gap: { default: "base" },
1610
+ tag: { default: "div" },
1611
+ alignItems: { default: void 0 },
1612
+ horizontal: { type: Boolean, default: !1 },
1613
+ layout: {}
1614
+ },
1615
+ setup(e) {
1616
+ const t = e, a = s(() => t.alignItems ?? (t.horizontal ? "center" : "stretch"));
1617
+ if (!t.horizontal && "layout" in t) {
1618
+ const i = t.layout;
1619
+ i && i !== "default" && console.error(
1620
+ `[FzContainer] The "layout" prop only works when horizontal is true. Current horizontal: ${t.horizontal}, layout: "${i}".`
1621
+ );
1622
+ }
1623
+ const o = s(() => {
1624
+ const i = t.main ? "main-content" : "section-content", c = [
1625
+ t.horizontal ? "fz-container--horizontal" : "fz-container--vertical",
1626
+ `gap-${i}-${t.gap}`,
1627
+ `align-items-${a.value}`
1628
+ ];
1629
+ if (t.horizontal) {
1630
+ const p = ("layout" in t ? t.layout : void 0) || "default";
1631
+ c.push(`layout-${p}`);
1632
+ }
1633
+ return c;
1634
+ });
1635
+ return (i, l) => (v(), O($e(t.tag), {
1636
+ class: g(["fz-container", o.value])
1637
+ }, {
1638
+ default: R(() => [
1639
+ $(i.$slots, "default", {}, void 0, !0)
1640
+ ]),
1641
+ _: 3
1642
+ }, 8, ["class"]));
1643
+ }
1644
+ }), fe = /* @__PURE__ */ K(tt, [["__scopeId", "data-v-8c40daeb"]]), ot = ["aria-disabled"], at = ["href", "target", "rel"], he = /* @__PURE__ */ A({
1645
+ __name: "FzLink",
1646
+ props: {
1647
+ type: { default: "default" },
1648
+ linkStyle: { default: "default" },
1649
+ size: { default: "md" },
1650
+ disabled: { type: Boolean, default: !1 },
1651
+ to: {},
1652
+ external: { type: Boolean, default: !1 },
1653
+ replace: { type: Boolean, default: !1 },
1654
+ target: {}
1655
+ },
1656
+ setup(e) {
1657
+ const t = e;
1658
+ F(
1659
+ () => t.size === "xs",
1660
+ (n) => {
1661
+ n && console.warn(
1662
+ '[FzLink] The size prop value "xs" is deprecated and will be removed in a future version. Please use "sm" instead. The component will automatically map "xs" to "sm" for now.'
1663
+ );
1664
+ },
1665
+ { immediate: !0 }
1666
+ ), F(
1667
+ () => t.size === "lg",
1668
+ (n) => {
1669
+ n && console.warn(
1670
+ '[FzLink] The size prop value "lg" is deprecated and will be removed in a future version. Please use "md" instead. The component will automatically map "lg" to "md" for now.'
1671
+ );
1672
+ },
1673
+ { immediate: !0 }
1674
+ );
1675
+ const a = s(() => t.size === "xs" ? "sm" : t.size === "lg" ? "md" : t.size), o = s(() => [
1676
+ "border-1 border-transparent inline-block",
1677
+ {
1678
+ "text-sm leading-xs": a.value === "sm",
1679
+ "text-base leading-base": a.value === "md",
1680
+ underline: t.linkStyle === "underline"
1681
+ }
1682
+ ]), i = (n) => n.type === "default" && n.linkStyle === "underline", l = (n) => n.type === "default" && n.linkStyle !== "underline", c = (n) => n.type === "danger" && n.linkStyle === "underline", p = (n) => n.type === "danger" && n.linkStyle !== "underline", w = (n) => n.type === "default" && n.disabled, y = (n) => n.type === "danger" && n.disabled, d = s(() => {
1683
+ const n = [...o.value, "focus:outline-none", "focus:border-solid", "focus:no-underline"];
1684
+ switch (!0) {
1685
+ case i(t):
1686
+ n.push("text-blue-500", "hover:text-blue-600", "focus:text-blue-600", "focus:border-blue-600");
1687
+ break;
1688
+ case l(t):
1689
+ n.push("text-blue-500", "hover:text-blue-600", "hover:underline", "focus:text-blue-600", "focus:border-blue-600");
1690
+ break;
1691
+ case c(t):
1692
+ n.push("text-semantic-error-200", "hover:text-semantic-error-300", "focus:text-semantic-error-300", "focus:border-semantic-error-300");
1693
+ break;
1694
+ case p(t):
1695
+ n.push("text-semantic-error-200", "hover:text-semantic-error-300", "hover:underline", "focus:text-semantic-error-300", "focus:border-semantic-error-300");
1696
+ break;
1697
+ }
1698
+ return n;
1699
+ }), r = s(() => {
1700
+ const n = [...o.value, "cursor-not-allowed"];
1701
+ switch (!0) {
1702
+ case w(t):
1703
+ n.push("text-blue-200");
1704
+ break;
1705
+ case y(t):
1706
+ n.push("text-semantic-error-100");
1707
+ break;
1708
+ }
1709
+ return n;
1710
+ }), u = s(() => t.external ? t.to : ""), f = s(() => {
1711
+ if (t.external && t.target === "_blank")
1712
+ return "noopener noreferrer";
1713
+ });
1714
+ return (n, b) => {
1715
+ const h = Be("router-link");
1716
+ return e.disabled ? (v(), S("span", {
1717
+ key: 0,
1718
+ class: g(r.value),
1719
+ "aria-disabled": e.disabled ? "true" : "false",
1720
+ role: "link",
1721
+ "aria-label": "Link disabled"
1722
+ }, [
1723
+ $(n.$slots, "default")
1724
+ ], 10, ot)) : e.external ? (v(), S("a", {
1725
+ key: 1,
1726
+ href: u.value,
1727
+ class: g(d.value),
1728
+ target: e.target,
1729
+ rel: f.value
1730
+ }, [
1731
+ $(n.$slots, "default")
1732
+ ], 10, at)) : (v(), O(h, {
1733
+ key: 2,
1734
+ to: e.to,
1735
+ replace: e.replace,
1736
+ class: g(d.value),
1737
+ target: e.target
1738
+ }, {
1739
+ default: R(() => [
1740
+ $(n.$slots, "default")
1741
+ ]),
1742
+ _: 3
1743
+ }, 8, ["to", "replace", "class", "target"]));
1744
+ };
1745
+ }
1746
+ }), nt = ["aria-label", "aria-describedby", "tabindex"], lt = ["aria-hidden"], rt = 100, it = "text-core-white max-w-[200px] p-8 text-sm leading-[16px] flex flex-row items-start justify-center", st = /* @__PURE__ */ A({
1747
+ __name: "FzTooltip",
1748
+ props: {
1749
+ position: { default: "auto" },
1750
+ status: { default: "neutral" },
1751
+ text: {},
1752
+ withIcon: { type: Boolean, default: !1 },
1753
+ ariaLabel: {},
1754
+ interactive: { type: [Boolean, String], default: "auto" },
1755
+ _forceOpenForDesignReview: { type: Boolean, default: !1 }
1756
+ },
1757
+ setup(e) {
1758
+ const t = e, a = te(), o = [se, ye, he];
1759
+ function i(C) {
1760
+ const L = C.type;
1761
+ return o.includes(L);
1762
+ }
1763
+ function l(C) {
1764
+ if (i(C))
1765
+ return !0;
1766
+ if (typeof C.type == "symbol") {
1767
+ const L = C.children;
1768
+ if (Array.isArray(L))
1769
+ return L.some((Y) => typeof Y == "object" && Y !== null && "type" in Y ? l(Y) : !1);
1770
+ }
1771
+ return !1;
1772
+ }
1773
+ const c = s(() => {
1774
+ if (!a.default) return !1;
1775
+ const C = a.default();
1776
+ return C.length === 0 ? !1 : C.some((L) => l(L));
1777
+ }), p = {
1778
+ neutral: { icon: "", bgClass: "!bg-core-black" },
1779
+ informative: { icon: "circle-info", bgClass: "bg-semantic-info-200" },
1780
+ alert: { icon: "triangle-exclamation", bgClass: "bg-semantic-warning-200" },
1781
+ error: { icon: "circle-exclamation", bgClass: "bg-semantic-error-200" },
1782
+ positive: { icon: "circle-check", bgClass: "bg-semantic-success-200" }
1783
+ }, w = s(() => {
1784
+ var C;
1785
+ return ((C = p[t.status]) == null ? void 0 : C.icon) || "";
1786
+ }), y = s(() => {
1787
+ var L;
1788
+ const C = (L = p[t.status]) == null ? void 0 : L.bgClass;
1789
+ return C ? { [C]: !0 } : {};
1790
+ }), d = `tooltip-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`, r = E(!1), u = E(!1), f = E(!1), n = E(null), b = s(() => t.withIcon && t.status !== "neutral"), h = s(() => r.value ? d : void 0), k = s(() => typeof t.interactive == "boolean" ? t.interactive ? void 0 : 0 : c.value ? void 0 : 0);
1791
+ function B() {
1792
+ (t.text || a.text) && (r.value = !0);
1793
+ }
1794
+ function I() {
1795
+ t._forceOpenForDesignReview || (r.value = !1);
1796
+ }
1797
+ function V() {
1798
+ n.value && (clearTimeout(n.value), n.value = null), B();
1799
+ }
1800
+ function N() {
1801
+ n.value && (clearTimeout(n.value), n.value = null), n.value = setTimeout(() => {
1802
+ !u.value && !f.value && I();
1803
+ }, rt);
1804
+ }
1805
+ function X() {
1806
+ u.value = !0, n.value && (clearTimeout(n.value), n.value = null);
1807
+ }
1808
+ function H() {
1809
+ u.value = !1, n.value && (clearTimeout(n.value), n.value = null), f.value || I();
1810
+ }
1811
+ function x() {
1812
+ f.value = !0, B();
1813
+ }
1814
+ function D() {
1815
+ f.value = !1, n.value && (clearTimeout(n.value), n.value = null), u.value || I();
1816
+ }
1817
+ function Q(C) {
1818
+ C.key === "Escape" && I();
1819
+ }
1820
+ return ee(() => {
1821
+ t._forceOpenForDesignReview && B();
1822
+ }), F(() => t._forceOpenForDesignReview, (C) => {
1823
+ C ? B() : I();
1824
+ }), ne(() => {
1825
+ n.value && clearTimeout(n.value);
1826
+ }), (C, L) => (v(), O(m(Ze), {
1827
+ teleport: !0,
1828
+ "is-open": r.value,
1829
+ position: e.position,
1830
+ class: "fz__tooltip flex h-max",
1831
+ contentClass: ["rounded", y.value, "z-80"]
1832
+ }, {
1833
+ opener: R(() => [
1834
+ T("span", {
1835
+ "aria-label": t.ariaLabel,
1836
+ "aria-describedby": h.value,
1837
+ tabindex: k.value,
1838
+ onMouseover: V,
1839
+ onMouseleave: N,
1840
+ onFocusin: x,
1841
+ onFocusout: D,
1842
+ onKeydown: Q
1843
+ }, [
1844
+ $(C.$slots, "default", {}, void 0, !0)
1845
+ ], 40, nt)
1846
+ ]),
1847
+ default: R(() => [
1848
+ T("div", {
1849
+ id: d,
1850
+ class: g(it),
1851
+ role: "tooltip",
1852
+ "aria-hidden": !r.value,
1853
+ onMouseenter: X,
1854
+ onMouseleave: H
1855
+ }, [
1856
+ b.value ? (v(), O(m(U), {
1857
+ key: 0,
1858
+ size: "md",
1859
+ name: w.value,
1860
+ class: g(["mr-4", "!w-[16px]", "!h-[16px]", "grow-0", "shrink-0", { "text-core-black": t.status === "alert" }]),
1861
+ "aria-hidden": !0
1862
+ }, null, 8, ["name", "class"])) : z("", !0),
1863
+ T("span", {
1864
+ class: g(["basis-0 grow shrink-0 break-normal fz__tooltip__text", { "text-core-black": t.status === "alert" }])
1865
+ }, [
1866
+ $(C.$slots, "text", {}, () => [
1867
+ M(P(t.text), 1)
1868
+ ], !0)
1869
+ ], 2)
1870
+ ], 40, lt)
1871
+ ]),
1872
+ _: 3
1873
+ }, 8, ["is-open", "position", "contentClass"]));
1874
+ }
1875
+ }), ut = /* @__PURE__ */ K(st, [["__scopeId", "data-v-94597a6c"]]), ct = { class: "flex flex-col flex-1" }, dt = {
1876
+ key: 0,
1877
+ class: "leading-[20px]"
1878
+ }, ft = /* @__PURE__ */ A({
1879
+ __name: "FzAlert",
1880
+ props: {
1881
+ tone: {},
1882
+ alertStyle: { default: "default" },
1883
+ showButtonAction: { type: Boolean, default: !0 },
1884
+ buttonActionLabel: {},
1885
+ buttonActionTooltip: {},
1886
+ isDismissible: { type: Boolean },
1887
+ showLinkAction: { type: Boolean },
1888
+ linkActionLabel: {},
1889
+ linkActionLocation: {},
1890
+ linkActionTarget: {},
1891
+ linkActionExternal: { type: Boolean },
1892
+ size: {},
1893
+ environment: { default: "frontoffice" },
1894
+ title: {},
1895
+ defaultOpen: { type: Boolean, default: !0 },
1896
+ variant: {}
1897
+ },
1898
+ emits: ["fzAlert:click", "fzAlert:dismiss"],
1899
+ setup(e, { emit: t }) {
1900
+ const a = e, o = t, i = E(a.defaultOpen), l = {
1901
+ info: "bg-semantic-info-50 border-semantic-info",
1902
+ error: "bg-semantic-error-50 border-semantic-error",
1903
+ danger: "bg-semantic-error-50 border-semantic-error",
1904
+ warning: "bg-semantic-warning-50 border-semantic-warning",
1905
+ success: "bg-semantic-success-50 border-semantic-success"
1906
+ }, c = {
1907
+ sm: "backoffice",
1908
+ md: "frontoffice",
1909
+ lg: "frontoffice"
1910
+ }, p = s(() => [
1911
+ "flex select-none gap-12 rounded justify-between",
1912
+ l[a.tone],
1913
+ h.value === "backoffice" ? "p-6" : "",
1914
+ ...k.value === "accordion" ? ["cursor-pointer"] : []
1915
+ ]), w = s(
1916
+ () => ({
1917
+ info: "circle-info",
1918
+ error: "circle-xmark",
1919
+ danger: "triangle-exclamation",
1920
+ warning: "triangle-exclamation",
1921
+ success: "circle-check"
1922
+ })[a.tone]
1923
+ ), y = s(() => [
1924
+ {
1925
+ info: "text-semantic-info",
1926
+ error: "text-semantic-error",
1927
+ danger: "text-semantic-error",
1928
+ warning: "text-semantic-warning",
1929
+ success: "text-semantic-success"
1930
+ }[a.tone]
1931
+ ]), d = s(() => [
1932
+ "font-normal",
1933
+ "!leading-[20px]",
1934
+ {
1935
+ "mt-8": a.title,
1936
+ "mb-16": a.showButtonAction || a.showLinkAction
1937
+ }
1938
+ ]), r = s(() => k.value === "background" ? !0 : i.value), u = s(() => i.value ? "angle-up" : "angle-down"), f = s(() => {
1939
+ if (k.value === "accordion") return u.value;
1940
+ if (a.isDismissible) return "xmark";
1941
+ }), n = s(() => k.value !== "accordion" ? !0 : i.value);
1942
+ function b(N) {
1943
+ N.stopPropagation(), o("fzAlert:click");
1944
+ }
1945
+ const h = s(() => a.size ? c[a.size] : a.environment), k = s(() => a.variant ? a.variant : ["default", "simple"].includes(a.alertStyle) ? "background" : "accordion"), B = s(() => k.value === "accordion" || a.isDismissible), I = () => {
1946
+ k.value === "accordion" && (i.value = !i.value), a.isDismissible && o("fzAlert:dismiss");
1947
+ }, V = () => {
1948
+ k.value === "accordion" && (i.value = !i.value);
1949
+ };
1950
+ return (N, X) => {
1951
+ const H = Se("bold");
1952
+ return v(), S("div", {
1953
+ class: g(p.value),
1954
+ onClick: V
1955
+ }, [
1956
+ W(m(fe), {
1957
+ horizontal: "",
1958
+ gap: "sm",
1959
+ class: g(["flex-1", h.value === "backoffice" ? "p-6" : "p-12"]),
1960
+ alignItems: "start"
1961
+ }, {
1962
+ default: R(() => [
1963
+ W(m(U), {
1964
+ name: w.value,
1965
+ size: "md",
1966
+ class: g(y.value)
1967
+ }, null, 8, ["name", "class"]),
1968
+ T("div", ct, [
1969
+ e.title ? J((v(), S("p", dt, [
1970
+ M(P(e.title), 1)
1971
+ ])), [
1972
+ [H]
1973
+ ]) : z("", !0),
1974
+ n.value ? (v(), S("p", {
1975
+ key: 1,
1976
+ class: g(d.value)
1977
+ }, [
1978
+ $(N.$slots, "default", {}, void 0, !0)
1979
+ ], 2)) : z("", !0),
1980
+ r.value ? $(N.$slots, "action", { key: 2 }, () => [
1981
+ W(m(fe), {
1982
+ horizontal: "",
1983
+ gap: "sm"
1984
+ }, {
1985
+ default: R(() => [
1986
+ e.showButtonAction ? (v(), O(m(se), {
1987
+ key: 0,
1988
+ onClick: b,
1989
+ tooltip: e.buttonActionTooltip,
1990
+ environment: h.value,
1991
+ variant: "secondary"
1992
+ }, {
1993
+ default: R(() => [
1994
+ M(P(e.buttonActionLabel), 1)
1995
+ ]),
1996
+ _: 1
1997
+ }, 8, ["tooltip", "environment"])) : z("", !0),
1998
+ e.showLinkAction ? (v(), O(m(he), {
1999
+ key: 1,
2000
+ to: e.linkActionLocation,
2001
+ onClick: b,
2002
+ size: "md",
2003
+ target: e.linkActionTarget,
2004
+ external: e.linkActionExternal
2005
+ }, {
2006
+ default: R(() => [
2007
+ M(P(e.linkActionLabel), 1)
2008
+ ]),
2009
+ _: 1
2010
+ }, 8, ["to", "target", "external"])) : z("", !0)
2011
+ ]),
2012
+ _: 1
2013
+ })
2014
+ ], !0) : z("", !0)
2015
+ ])
2016
+ ]),
2017
+ _: 3
2018
+ }, 8, ["class"]),
2019
+ B.value ? (v(), O(m(ye), {
2020
+ key: 0,
2021
+ iconName: f.value,
2022
+ environment: h.value,
2023
+ variant: "invisible",
2024
+ onClick: Oe(I, ["stop"])
2025
+ }, null, 8, ["iconName", "environment"])) : z("", !0)
2026
+ ], 2);
2027
+ };
2028
+ }
2029
+ }), pt = /* @__PURE__ */ K(ft, [["__scopeId", "data-v-f72b7e4a"]]), xe = /* @__PURE__ */ A({
2030
+ __name: "ErrorAlert",
2031
+ props: {
2032
+ id: {}
2033
+ },
2034
+ setup(e) {
2035
+ return (t, a) => (v(), O(m(pt), {
2036
+ id: e.id,
2037
+ tone: "error",
2038
+ alertStyle: "simple",
2039
+ role: "alert",
2040
+ "aria-live": "assertive",
2041
+ "aria-atomic": "true",
2042
+ size: "md"
2043
+ }, {
2044
+ default: R(() => [
2045
+ $(t.$slots, "default")
2046
+ ]),
2047
+ _: 3
2048
+ }, 8, ["id"]));
2049
+ }
2050
+ }), vt = { class: "flex justify-center flex-col w-fit gap-4" }, mt = ["data-emphasis", "data-error", "data-disabled"], bt = ["id", "disabled", "required", "value", "aria-checked", "aria-label", "aria-required", "aria-invalid", "aria-describedby", "aria-labelledby", "aria-owns"], yt = ["id", "for"], ht = "w-0 h-0 peer fz-hidden-input", xt = `
2051
+ flex gap-6 items-start hover:cursor-pointer text-core-black
2052
+ peer-focus:[&_div]:after:border-1
2053
+ peer-focus:[&_div]:after:border-solid
2054
+ peer-focus:[&_div]:after:rounded-[2px]
2055
+ peer-focus:[&_div]:after:border-blue-200
2056
+ peer-focus:[&_div]:after:content-['']
2057
+ peer-focus:[&_div]:after:top-0
2058
+ peer-focus:[&_div]:after:left-0
2059
+ peer-focus:[&_div]:after:right-0
2060
+ peer-focus:[&_div]:after:bottom-0
2061
+ peer-focus:[&_div]:after:absolute
2062
+ `, gt = "relative", wt = /* @__PURE__ */ A({
2063
+ __name: "FzCheckbox",
2064
+ props: /* @__PURE__ */ Z({
2065
+ label: {},
2066
+ value: { type: [String, Number, Boolean] },
2067
+ size: {},
2068
+ indeterminate: { type: Boolean, default: !1 },
2069
+ emphasis: { type: Boolean },
2070
+ disabled: { type: Boolean },
2071
+ error: { type: Boolean },
2072
+ required: { type: Boolean },
2073
+ standalone: { type: Boolean },
2074
+ tooltip: {},
2075
+ ariaOwns: {},
2076
+ checkboxId: {}
2077
+ }, {
2078
+ modelValue: { type: [null, Boolean, Array], required: !0 },
2079
+ modelModifiers: {}
2080
+ }),
2081
+ emits: /* @__PURE__ */ Z(["change"], ["update:modelValue"]),
2082
+ setup(e, { emit: t }) {
2083
+ const a = e;
2084
+ F(
2085
+ () => a.size,
2086
+ (k) => {
2087
+ k !== void 0 && console.warn(
2088
+ '[FzCheckbox] The "size" prop is deprecated and will be removed in a future version. Checkboxes now have a fixed size.'
2089
+ );
2090
+ },
2091
+ { immediate: !0 }
2092
+ );
2093
+ const o = Object.freeze({
2094
+ /** Icon for indeterminate state (partial selection) */
2095
+ INDETERMINATE: "square-minus",
2096
+ /** Icon for checked state */
2097
+ CHECKED: "square-check",
2098
+ /** Icon for unchecked state */
2099
+ UNCHECKED: "square"
2100
+ }), i = Object.freeze({
2101
+ /** Solid variant (filled) - used for checked and indeterminate states */
2102
+ SOLID: "fas",
2103
+ /** Regular variant (outline) - used for unchecked state */
2104
+ REGULAR: "far"
2105
+ }), l = s(
2106
+ () => a.value ?? a.label
2107
+ ), c = a.checkboxId || be(), p = le(e, "modelValue"), w = t, y = Ie(null), d = s(() => p.value == null ? !1 : typeof p.value == "boolean" ? p.value : p.value.includes(l.value)), r = s(() => a.disabled ? "text-grey-300 [&_div]:text-grey-300" : a.error ? "text-semantic-error-200 [&_div]:text-semantic-error-200 peer-checked:[&_div]:text-semantic-error-200 peer-indeterminate:[&_div]:text-semantic-error-200" : a.emphasis ? "text-core-black [&_div]:text-blue-500 peer-checked:[&_div]:text-blue-500 peer-indeterminate:[&_div]:text-blue-500" : "text-core-black peer-checked:[&_div]:text-grey-500 peer-indeterminate:[&_div]:text-grey-500"), u = s(() => a.disabled ? "text-grey-300" : a.error ? "text-semantic-error-200" : a.emphasis ? "text-blue-500" : "text-grey-400"), f = s(() => [
2108
+ "text-base",
2109
+ r.value
2110
+ ]), n = s(() => [u.value]), b = s(() => a.indeterminate ? o.INDETERMINATE : d.value ? o.CHECKED : o.UNCHECKED), h = s(() => a.indeterminate || d.value ? i.SOLID : i.REGULAR);
2111
+ return ee(() => {
2112
+ var k, B;
2113
+ p.value != null && (typeof p.value == "boolean" ? p.value && ((k = y.value) == null || k.dispatchEvent(new Event("change"))) : p.value.includes(l.value) && ((B = y.value) == null || B.dispatchEvent(new Event("change"))));
2114
+ }), (k, B) => (v(), S("div", vt, [
2115
+ T("div", {
2116
+ class: "flex items-start group",
2117
+ "data-emphasis": e.emphasis || void 0,
2118
+ "data-error": e.error || void 0,
2119
+ "data-disabled": e.disabled || void 0
2120
+ }, [
2121
+ J(T("input", {
2122
+ type: "checkbox",
2123
+ id: m(c),
2124
+ disabled: e.disabled,
2125
+ class: g(ht),
2126
+ required: e.required,
2127
+ value: e.value,
2128
+ onChange: B[0] || (B[0] = (I) => w("change", I)),
2129
+ "onUpdate:modelValue": B[1] || (B[1] = (I) => p.value = I),
2130
+ "aria-checked": e.indeterminate ? "mixed" : d.value,
2131
+ "aria-label": e.standalone ? e.label : void 0,
2132
+ "aria-required": e.required ? "true" : "false",
2133
+ "aria-invalid": e.error ? "true" : "false",
2134
+ "aria-describedby": e.error && k.$slots.error ? `${m(c)}-error` : void 0,
2135
+ "aria-labelledby": e.standalone ? void 0 : `${m(c)}-label`,
2136
+ "aria-owns": a.ariaOwns,
2137
+ ref_key: "refCheckbox",
2138
+ ref: y
2139
+ }, null, 40, bt), [
2140
+ [Ee, p.value]
2141
+ ]),
2142
+ T("label", {
2143
+ id: `${m(c)}-label`,
2144
+ for: m(c),
2145
+ class: g([xt, f.value])
2146
+ }, [
2147
+ W(m(U), {
2148
+ name: b.value,
2149
+ size: "md",
2150
+ class: g([gt, n.value]),
2151
+ variant: h.value,
2152
+ "aria-hidden": "true"
2153
+ }, null, 8, ["name", "class", "variant"]),
2154
+ e.standalone ? z("", !0) : (v(), S(re, { key: 0 }, [
2155
+ M(P(e.label), 1)
2156
+ ], 64))
2157
+ ], 10, yt),
2158
+ e.tooltip ? (v(), O(m(ut), oe({ key: 0 }, e.tooltip, { class: "ml-6" }), {
2159
+ default: R(() => [
2160
+ W(m(U), {
2161
+ name: "info-circle",
2162
+ size: "md",
2163
+ class: "text-semantic-info",
2164
+ role: "img",
2165
+ "aria-label": "Informazioni aggiuntive"
2166
+ })
2167
+ ]),
2168
+ _: 1
2169
+ }, 16)) : z("", !0)
2170
+ ], 8, mt),
2171
+ e.error && k.$slots.error ? (v(), O(xe, {
2172
+ key: 0,
2173
+ id: `${m(c)}-error`
2174
+ }, {
2175
+ default: R(() => [
2176
+ $(k.$slots, "error", {}, void 0, !0)
2177
+ ]),
2178
+ _: 3
2179
+ }, 8, ["id"])) : z("", !0),
2180
+ $(k.$slots, "children", {}, void 0, !0)
2181
+ ]));
2182
+ }
2183
+ }), pe = /* @__PURE__ */ K(wt, [["__scopeId", "data-v-2b198cc9"]]), kt = "flex flex-col justify-center gap-8 pl-24", Ct = /* @__PURE__ */ A({
2184
+ __name: "FzCheckboxGroupOption",
2185
+ props: /* @__PURE__ */ Z({
2186
+ label: {},
2187
+ value: { type: [String, Number, Boolean] },
2188
+ indeterminate: { type: Boolean },
2189
+ emphasis: { type: Boolean },
2190
+ disabled: { type: Boolean },
2191
+ error: { type: Boolean },
2192
+ required: { type: Boolean },
2193
+ standalone: { type: Boolean },
2194
+ tooltip: {},
2195
+ ariaOwns: {},
2196
+ checkboxId: {},
2197
+ children: {}
2198
+ }, {
2199
+ modelValue: {
2200
+ required: !0,
2201
+ default: []
2202
+ },
2203
+ modelModifiers: {}
2204
+ }),
2205
+ emits: ["update:modelValue"],
2206
+ setup(e) {
2207
+ const t = e, a = s(
2208
+ () => t.value ?? t.label
2209
+ ), o = le(e, "modelValue"), i = be(), l = s(
2210
+ () => {
2211
+ var d;
2212
+ return (d = t.children) == null ? void 0 : d.map((r, u) => `${i}-child-${u}`).join(" ");
2213
+ }
2214
+ ), c = s(() => []), p = s(() => {
2215
+ if (!t.children) return !1;
2216
+ const d = t.children.filter(
2217
+ (r) => o.value.includes(r.value ?? r.label)
2218
+ ).length;
2219
+ return d > 0 && d < t.children.length;
2220
+ });
2221
+ function w() {
2222
+ if (!t.children) return;
2223
+ t.children.filter(
2224
+ (r) => o.value.includes(r.value ?? r.label)
2225
+ ).length === t.children.length ? o.value.includes(a.value) || (o.value = o.value.concat(a.value)) : o.value.includes(a.value) && (o.value = o.value.filter((r) => r !== a.value));
2226
+ }
2227
+ function y() {
2228
+ var d;
2229
+ t.children && (o.value.includes(a.value) ? o.value = o.value.concat(
2230
+ (d = t.children) == null ? void 0 : d.map((r) => r.value ?? r.label).filter((r) => !o.value.includes(r))
2231
+ ) : o.value = o.value.filter(
2232
+ (r) => {
2233
+ var u;
2234
+ return !((u = t.children) != null && u.map((f) => f.value ?? f.label).includes(r));
2235
+ }
2236
+ ));
2237
+ }
2238
+ return (d, r) => {
2239
+ var u, f;
2240
+ return v(), O(pe, {
2241
+ modelValue: o.value,
2242
+ "onUpdate:modelValue": r[1] || (r[1] = (n) => o.value = n),
2243
+ value: t.value,
2244
+ label: t.label,
2245
+ disabled: e.disabled,
2246
+ emphasis: e.emphasis,
2247
+ error: e.error,
2248
+ indeterminate: p.value,
2249
+ "aria-owns": (u = e.children) != null && u.length ? l.value : void 0,
2250
+ onChange: y
2251
+ }, Re({ _: 2 }, [
2252
+ (f = e.children) != null && f.length ? {
2253
+ name: "children",
2254
+ fn: R(() => [
2255
+ T("div", {
2256
+ class: g([kt, c.value])
2257
+ }, [
2258
+ (v(!0), S(re, null, ve(e.children, (n, b) => (v(), O(pe, oe({
2259
+ key: n.value ? n.value.toString() : n.label,
2260
+ modelValue: o.value,
2261
+ "onUpdate:modelValue": r[0] || (r[0] = (h) => o.value = h),
2262
+ disabled: e.disabled
2263
+ }, { ref_for: !0 }, n, {
2264
+ emphasis: e.emphasis,
2265
+ error: e.error,
2266
+ "checkbox-id": `${m(i)}-child-${b}`,
2267
+ onChange: w
2268
+ }), null, 16, ["modelValue", "disabled", "emphasis", "error", "checkbox-id"]))), 128))
2269
+ ], 2)
2270
+ ]),
2271
+ key: "0"
2272
+ } : void 0
2273
+ ]), 1032, ["modelValue", "value", "label", "disabled", "emphasis", "error", "indeterminate", "aria-owns"]);
2274
+ };
2275
+ }
2276
+ }), zt = ["id"], $t = { key: 0 }, Bt = ["id"], St = ["id", "aria-labelledby", "aria-describedby", "aria-required", "aria-invalid"], Ot = "flex flex-col", It = "flex flex-col gap-10", Et = "flex items-start", Tt = /* @__PURE__ */ A({
2277
+ __name: "FzCheckboxGroup",
2278
+ props: /* @__PURE__ */ Z({
2279
+ label: {},
2280
+ size: {},
2281
+ options: {},
2282
+ emphasis: { type: Boolean },
2283
+ disabled: { type: Boolean },
2284
+ error: { type: Boolean },
2285
+ required: { type: Boolean },
2286
+ horizontal: { type: Boolean }
2287
+ }, {
2288
+ modelValue: {
2289
+ required: !0,
2290
+ default: []
2291
+ },
2292
+ modelModifiers: {}
2293
+ }),
2294
+ emits: ["update:modelValue"],
2295
+ setup(e) {
2296
+ const t = e, a = te();
2297
+ F(
2298
+ () => t.size,
2299
+ (d) => {
2300
+ d !== void 0 && console.warn(
2301
+ '[FzCheckboxGroup] The "size" prop is deprecated and will be removed in a future version. Checkboxes now have a fixed size.'
2302
+ );
2303
+ },
2304
+ { immediate: !0 }
2305
+ );
2306
+ const o = Fe(), i = s(() => [
2307
+ "text-sm",
2308
+ t.disabled ? "text-grey-400" : "text-grey-500"
2309
+ ]), l = le(e, "modelValue"), c = s(() => [
2310
+ "text-base",
2311
+ "gap-6",
2312
+ t.disabled ? "text-grey-400" : "text-core-black"
2313
+ ]), p = s(() => ["text-base"]), w = s(() => [
2314
+ "text-base",
2315
+ t.horizontal ? "gap-16" : "gap-8",
2316
+ t.horizontal ? "flex-row" : "flex-col"
2317
+ ]), y = s(() => {
2318
+ const d = [];
2319
+ return a.help && d.push(`${o}-help`), t.error && a.error && d.push(`${o}-error`), d.length > 0 ? d.join(" ") : void 0;
2320
+ });
2321
+ return (d, r) => (v(), S("div", {
2322
+ class: g([It, p.value])
2323
+ }, [
2324
+ T("label", {
2325
+ id: m(o) + "-label",
2326
+ class: g([Ot, c.value])
2327
+ }, [
2328
+ T("span", null, [
2329
+ M(P(e.label), 1),
2330
+ e.required ? (v(), S("span", $t, " *")) : z("", !0)
2331
+ ]),
2332
+ d.$slots.help ? (v(), S("p", {
2333
+ key: 0,
2334
+ id: m(o) + "-help",
2335
+ class: g(i.value)
2336
+ }, [
2337
+ $(d.$slots, "help")
2338
+ ], 10, Bt)) : z("", !0)
2339
+ ], 10, zt),
2340
+ T("div", {
2341
+ class: g([Et, w.value]),
2342
+ id: m(o),
2343
+ role: "group",
2344
+ "aria-labelledby": m(o) + "-label",
2345
+ "aria-describedby": y.value,
2346
+ "aria-required": e.required ? "true" : "false",
2347
+ "aria-invalid": e.error ? "true" : "false"
2348
+ }, [
2349
+ (v(!0), S(re, null, ve(e.options, (u) => (v(), O(Ct, oe({
2350
+ key: u.value ? u.value.toString() : u.label,
2351
+ modelValue: l.value,
2352
+ "onUpdate:modelValue": r[0] || (r[0] = (f) => l.value = f),
2353
+ disabled: e.disabled
2354
+ }, { ref_for: !0 }, u, {
2355
+ emphasis: e.emphasis,
2356
+ error: e.error
2357
+ }), null, 16, ["modelValue", "disabled", "emphasis", "error"]))), 128))
2358
+ ], 10, St),
2359
+ e.error && d.$slots.error ? (v(), O(xe, {
2360
+ key: 0,
2361
+ id: m(o) + "-error"
2362
+ }, {
2363
+ default: R(() => [
2364
+ $(d.$slots, "error")
2365
+ ]),
2366
+ _: 3
2367
+ }, 8, ["id"])) : z("", !0)
2368
+ ], 2));
2369
+ }
2370
+ });
2371
+ export {
2372
+ pe as FzCheckbox,
2373
+ Tt as FzCheckboxGroup,
2374
+ be as generateCheckboxId,
2375
+ Fe as generateGroupId
2376
+ };