@versini/ui-panel 2.2.10 → 3.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.
@@ -1,102 +1,824 @@
1
- import { jsx as l, Fragment as M, jsxs as x } from "react/jsx-runtime";
2
- import { ButtonIcon as $ } from "@versini/ui-button";
3
- import { IconClose as v } from "@versini/ui-icons";
4
- import { Modal as C, ModalContent as y, ModalClose as I, ModalHeading as P, ModalDescription as _ } from "@versini/ui-modal";
5
- import { useRef as L, useState as Y, useEffect as g } from "react";
6
- import B from "clsx";
7
- const h = "av-messagebox", n = "av-panel", o = "panel", f = "messagebox", O = ({
1
+ import { jsx as s, jsxs as L, Fragment as de } from "react/jsx-runtime";
2
+ import * as h from "react";
3
+ import F, { useRef as N, useLayoutEffect as H, useEffect as B, useState as K, useMemo as Q, useCallback as me, useId as Z } from "react";
4
+ import n from "clsx";
5
+ import { useFloating as ue, useClick as ge, useDismiss as he, useRole as fe, useInteractions as be, useMergeRefs as ye, FloatingPortal as ve, FloatingOverlay as pe, FloatingFocusManager as ke } from "@floating-ui/react";
6
+ const q = "av-messagebox", R = "av-panel", X = "av-button", V = "icon", ee = "button", D = "link", xe = ({
7
+ type: e,
8
+ size: r,
9
+ labelRight: t,
10
+ labelLeft: a,
11
+ align: i,
12
+ animated: o
13
+ }) => {
14
+ const l = "max-h-8 py-0 px-2", d = "max-h-9 h-8 px-3", c = "max-h-12 py-2 px-4";
15
+ switch (e) {
16
+ case ee:
17
+ case D:
18
+ return n({
19
+ [l]: r === "small",
20
+ [d]: r === "medium",
21
+ [c]: r === "large"
22
+ });
23
+ case V:
24
+ return n("flex items-center", {
25
+ "justify-center": i === "center",
26
+ "justify-start": i === "left",
27
+ "justify-end": i === "right",
28
+ "h-6 w-6 p-0": r === "small" && !o && !(t || a),
29
+ "h-6 px-1 sm:px-2": r === "small" && !o && (t || a),
30
+ "h-8 w-8 p-1": r === "medium" && !o && !(t || a),
31
+ "h-8 px-3": r === "medium" && !o && (t || a),
32
+ "h-12 w-12 p-2": r === "large" && !o && !(t || a),
33
+ "h-12 px-4": r === "large" && !o && (t || a),
34
+ "h-6 py-0": r === "small" && o && !(t || a),
35
+ "h-6": r === "small" && o && (t || a),
36
+ "h-8 py-1": r === "medium" && o && !(t || a),
37
+ "h-8": r === "medium" && o && (t || a),
38
+ "h-12 py-2": r === "large" && o && !(t || a),
39
+ "h-12": r === "large" && o && (t || a)
40
+ });
41
+ }
42
+ }, we = ({
43
+ type: e,
44
+ size: r,
45
+ labelRight: t,
46
+ labelLeft: a
47
+ }) => {
48
+ const i = "text-sm font-medium", o = "text-base font-medium", l = "text-lg font-medium";
49
+ switch (e) {
50
+ case ee:
51
+ case D:
52
+ return n({
53
+ "text-center": e === D,
54
+ [i]: r === "small",
55
+ [o]: r === "medium",
56
+ [l]: r === "large"
57
+ });
58
+ case V:
59
+ return n({
60
+ [i]: r === "small" && (t || a),
61
+ [o]: r === "medium" && (t || a),
62
+ [l]: r === "large" && (t || a)
63
+ });
64
+ }
65
+ }, Ie = ({
66
+ mode: e,
67
+ noBackground: r,
68
+ truncate: t,
69
+ variant: a
70
+ }) => {
71
+ if (r)
72
+ return "not-prose";
73
+ if (a === "primary")
74
+ return n("not-prose", {
75
+ truncate: t,
76
+ "text-copy-dark": e === "dark" || e === "system",
77
+ "text-copy-light": e === "light" || e === "alt-system",
78
+ "dark:text-copy-light": e === "system",
79
+ "dark:text-copy-dark": e === "alt-system"
80
+ });
81
+ if (a === "secondary")
82
+ return n("not-prose", {
83
+ truncate: t,
84
+ "text-copy-light": e === "dark" || e === "system",
85
+ "text-copy-dark": e === "light" || e === "alt-system",
86
+ "dark:text-copy-dark": e === "system",
87
+ "dark:text-copy-light": e === "alt-system"
88
+ });
89
+ if (a === "danger")
90
+ return n("not-prose", {
91
+ truncate: t,
92
+ "text-copy-light": e === "dark" || e === "system",
93
+ "text-copy-lighter": e === "light" || e === "alt-system",
94
+ "dark:text-copy-lighter": e === "system",
95
+ "dark:text-copy-light": e === "alt-system"
96
+ });
97
+ if (a === "selected")
98
+ return n("not-prose text-copy-lighter", {
99
+ truncate: t
100
+ });
101
+ }, _e = ({
102
+ mode: e,
103
+ noBackground: r,
104
+ variant: t
105
+ }) => {
106
+ if (!r) {
107
+ if (t === "primary")
108
+ return n({
109
+ "bg-action-light": e === "dark",
110
+ "bg-action-dark": e === "light",
111
+ "bg-action-light dark:bg-action-dark": e === "system",
112
+ "bg-action-dark dark:bg-action-light": e === "alt-system"
113
+ });
114
+ if (t === "secondary")
115
+ return n({
116
+ "bg-action-light": e === "light",
117
+ "bg-action-dark": e === "dark",
118
+ "bg-action-light dark:bg-action-dark": e === "alt-system",
119
+ "bg-action-dark dark:bg-action-light": e === "system"
120
+ });
121
+ if (t === "danger")
122
+ return n({
123
+ "bg-action-danger-dark": e === "dark",
124
+ "bg-action-danger-light": e === "light",
125
+ "bg-action-danger-dark dark:bg-action-danger-light": e === "system",
126
+ "bg-action-danger-light dark:bg-action-danger-dark": e === "alt-system"
127
+ });
128
+ if (t === "selected")
129
+ return "bg-action-selected-dark";
130
+ }
131
+ }, Ne = ({
132
+ radius: e
133
+ }) => n({
134
+ "rounded-full": e === "large",
135
+ "rounded-md": e === "medium",
136
+ "rounded-xs": e === "small"
137
+ }), Ee = ({
138
+ mode: e,
139
+ disabled: r,
140
+ variant: t
141
+ }) => {
142
+ if (r)
143
+ return "";
144
+ if (t === "primary")
145
+ return n({
146
+ "hover:text-copy-dark-hover": e === "dark" || e === "system",
147
+ "hover:text-copy-light-hover": e === "light" || e === "alt-system",
148
+ "dark:hover:text-copy-light-hover": e === "system",
149
+ "dark:hover:text-copy-dark-hover": e === "alt-system",
150
+ "hover:bg-action-light-hover": e === "dark",
151
+ "hover:bg-action-dark-hover": e === "light",
152
+ "hover:bg-action-light-hover dark:hover:bg-action-dark-hover": e === "system",
153
+ "hover:bg-action-dark-hover dark:hover:bg-action-light-hover": e === "alt-system"
154
+ });
155
+ if (t === "secondary")
156
+ return n({
157
+ "hover:text-copy-light-hover": e === "dark" || e === "system",
158
+ "hover:text-copy-dark-hover": e === "light" || e === "alt-system",
159
+ "dark:hover:text-copy-dark-hover": e === "system",
160
+ "dark:hover:text-copy-light-hover": e === "alt-system",
161
+ "hover:bg-action-light-hover": e === "light",
162
+ "hover:bg-action-dark-hover": e === "dark",
163
+ "hover:bg-action-light-hover dark:hover:bg-action-dark-hover": e === "alt-system",
164
+ "hover:bg-action-dark-hover dark:hover:bg-action-light-hover": e === "system"
165
+ });
166
+ if (t === "danger")
167
+ return n("hover:text-copy-light-hover", {
168
+ "hover:bg-action-danger-dark-hover": e === "dark",
169
+ "hover:bg-action-danger-light-hover": e === "light",
170
+ "hover:bg-action-danger-dark-hover dark:hover:bg-action-danger-light-hover": e === "system",
171
+ "hover:bg-action-danger-light-hover dark:hover:bg-action-danger-dark-hover": e === "alt-system"
172
+ });
173
+ if (t === "selected")
174
+ return "hover:text-copy-light-hover hover:bg-action-selected-dark-hover";
175
+ }, Ce = ({
176
+ mode: e,
177
+ disabled: r,
178
+ variant: t
179
+ }) => {
180
+ if (r)
181
+ return "";
182
+ if (t === "primary")
183
+ return n({
184
+ "active:text-copy-dark-active": e === "dark" || e === "system",
185
+ "active:text-copy-light-active": e === "light" || e === "alt-system",
186
+ "dark:active:text-copy-light-active": e === "system",
187
+ "dark:active:text-copy-dark-active": e === "alt-system",
188
+ "active:bg-action-light-active": e === "dark",
189
+ "active:bg-action-dark-active": e === "light",
190
+ "active:bg-action-light-active dark:active:bg-action-dark-active": e === "system",
191
+ "active:bg-action-dark-active dark:active:bg-action-light-active": e === "alt-system"
192
+ });
193
+ if (t === "secondary")
194
+ return n({
195
+ "active:text-copy-light-active": e === "dark" || e === "system",
196
+ "active:text-copy-dark-active": e === "light" || e === "alt-system",
197
+ "dark:active:text-copy-dark-active": e === "system",
198
+ "dark:active:text-copy-light-active": e === "alt-system",
199
+ "active:bg-action-light-active": e === "light",
200
+ "active:bg-action-dark-active": e === "dark",
201
+ "active:bg-action-light-active dark:active:bg-action-dark-active": e === "alt-system",
202
+ "active:bg-action-dark-active dark:active:bg-action-light-active": e === "system"
203
+ });
204
+ if (t === "danger")
205
+ return n("active:text-copy-lighter-active", {
206
+ "active:bg-action-danger-dark-active": e === "dark",
207
+ "active:bg-action-danger-light-active": e === "light",
208
+ "active:bg-action-danger-dark-active dark:active:bg-action-danger-light-active": e === "system",
209
+ "active:bg-action-danger-light-active dark:active:bg-action-danger-dark-active": e === "alt-system"
210
+ });
211
+ if (t === "selected")
212
+ return "active:text-copy-lighter-active active:bg-action-selected-dark-active";
213
+ }, Be = ({
214
+ mode: e,
215
+ noBorder: r,
216
+ variant: t
217
+ }) => {
218
+ if (r)
219
+ return "border border-transparent";
220
+ if (t === "primary")
221
+ return n("border", {
222
+ "border-border-medium": e === "dark",
223
+ "border-border-accent": e === "light",
224
+ "border-border-medium dark:border-border-accent": e === "system",
225
+ "border-border-accent dark:border-border-medium": e === "alt-system"
226
+ });
227
+ if (t === "secondary")
228
+ return n("border", {
229
+ "border-border-medium": e === "light",
230
+ "border-border-accent": e === "dark",
231
+ "border-border-medium dark:border-border-accent": e === "alt-system",
232
+ "border-border-accent dark:border-border-medium": e === "system"
233
+ });
234
+ if (t === "danger")
235
+ return n("border", {
236
+ "border-border-danger-dark": e === "dark",
237
+ "border-border-danger-medium": e === "light",
238
+ "border-border-danger-dark dark:border-border-danger-medium": e === "system",
239
+ "border-border-danger-medium dark:border-border-danger-dark": e === "alt-system"
240
+ });
241
+ if (t === "selected")
242
+ return "border border-border-selected-dark";
243
+ }, Se = ({
244
+ focusMode: e
245
+ }) => n("focus:outline", "focus:outline-2", "focus:outline-offset-2", {
246
+ "focus:outline-focus-dark": e === "dark",
247
+ "focus:outline-focus-light": e === "light",
248
+ "focus:outline-focus-light dark:focus:outline-focus-dark": e === "alt-system",
249
+ "focus:outline-focus-dark dark:focus:outline-focus-light": e === "system"
250
+ }), Re = ({
251
+ mode: e,
252
+ raw: r,
253
+ iconClassName: t,
254
+ variant: a = "primary"
255
+ }) => {
256
+ if (r)
257
+ return "";
258
+ let i = {};
259
+ return a === "primary" ? i = {
260
+ "text-copy-dark": e === "dark" || e === "system",
261
+ "text-copy-light": e === "light" || e === "alt-system",
262
+ "dark:text-copy-light": e === "system",
263
+ "dark:text-copy-dark": e === "alt-system"
264
+ } : a === "secondary" ? i = {
265
+ "text-copy-light": e === "dark" || e === "system",
266
+ "text-copy-dark": e === "light" || e === "alt-system",
267
+ "dark:text-copy-dark": e === "system",
268
+ "dark:text-copy-light": e === "alt-system"
269
+ } : a === "danger" ? i = {
270
+ "text-copy-light": e === "dark" || e === "system",
271
+ "text-copy-lighter": e === "light" || e === "alt-system",
272
+ "dark:text-copy-lighter": e === "system",
273
+ "dark:text-copy-light": e === "alt-system"
274
+ } : a === "selected" && (i = {
275
+ "text-copy-lighter": !0
276
+ }), n(i, t);
277
+ }, Me = ({
278
+ animated: e
279
+ }) => n({
280
+ "transition-opacity duration-300 ease-in-out": e
281
+ }), Te = ({
282
+ type: e,
283
+ className: r,
284
+ raw: t,
285
+ mode: a,
286
+ focusMode: i,
287
+ disabled: o,
288
+ fullWidth: l,
289
+ size: d,
290
+ noBorder: c,
291
+ labelRight: g,
292
+ labelLeft: y,
293
+ noBackground: m,
294
+ variant: u,
295
+ truncate: f,
296
+ align: b,
297
+ radius: w,
298
+ animated: I
299
+ }) => (u || (u = "primary"), t ? n(X, r) : n(
300
+ X,
301
+ Ie({
302
+ mode: a,
303
+ variant: u,
304
+ noBackground: m,
305
+ truncate: f
306
+ }),
307
+ _e({ mode: a, noBackground: m, variant: u }),
308
+ Ne({ radius: w }),
309
+ xe({
310
+ type: e,
311
+ size: d,
312
+ labelRight: g,
313
+ labelLeft: y,
314
+ align: b,
315
+ animated: I
316
+ }),
317
+ we({ type: e, size: d, labelRight: g, labelLeft: y }),
318
+ Be({ mode: a, variant: u, noBorder: c }),
319
+ Se({ focusMode: i }),
320
+ Ee({ mode: a, variant: u, disabled: o }),
321
+ Ce({ mode: a, variant: u, disabled: o }),
322
+ {
323
+ "w-full": l,
324
+ "disabled:cursor-not-allowed disabled:opacity-50": o
325
+ },
326
+ n({
327
+ "transition-[width] duration-300 ease-in": I
328
+ }),
329
+ r
330
+ )), Le = (e, r, t) => {
331
+ !r && (!document.activeElement || document.activeElement !== e.currentTarget) && typeof e?.currentTarget?.focus == "function" && e.currentTarget.focus(), typeof t == "function" && t(e);
332
+ }, te = F.forwardRef((e, r) => {
333
+ const { onClick: t, noInternalClick: a = !1, ...i } = e;
334
+ return /* @__PURE__ */ s(
335
+ "button",
336
+ {
337
+ ref: r,
338
+ onClick: (o) => {
339
+ Le(o, a, t);
340
+ },
341
+ ...i
342
+ }
343
+ );
344
+ });
345
+ te.displayName = "BaseButton";
346
+ function $e() {
347
+ const e = N(!1);
348
+ return B(() => (e.current = !0, () => {
349
+ e.current = !1;
350
+ }), []), me(() => e.current, []);
351
+ }
352
+ function Ae(e) {
353
+ return Q(() => e.every((r) => r == null) ? () => {
354
+ } : (r) => {
355
+ e.forEach((t) => {
356
+ typeof t == "function" ? t(r) : t != null && (t.current = r);
357
+ });
358
+ }, [...e]);
359
+ }
360
+ const Oe = {
361
+ x: 0,
362
+ y: 0,
363
+ width: 0,
364
+ height: 0,
365
+ top: 0,
366
+ left: 0,
367
+ bottom: 0,
368
+ right: 0
369
+ };
370
+ function P(e) {
371
+ const r = $e(), t = N(0), a = N(null), [i, o] = K(Oe), l = Q(() => typeof ResizeObserver > "u" ? null : new ResizeObserver((d) => {
372
+ const c = d[0];
373
+ c && (cancelAnimationFrame(t.current), t.current = requestAnimationFrame(() => {
374
+ a.current && r() && o(c.contentRect);
375
+ }));
376
+ }), [r]);
377
+ return B(() => (a.current && l?.observe(a.current, e), () => {
378
+ l?.disconnect(), t.current && cancelAnimationFrame(t.current);
379
+ }), [l, e]), [a, i];
380
+ }
381
+ const M = {
382
+ small: 24,
383
+ // w-6
384
+ medium: 32,
385
+ // w-8
386
+ large: 48
387
+ // w-12
388
+ }, ze = {
389
+ small: 16,
390
+ // px-2 x 2
391
+ medium: 24,
392
+ // px-3 x 2
393
+ large: 32
394
+ // px-4 x 2
395
+ }, Pe = 2, De = 300, U = F.forwardRef(
396
+ ({
397
+ children: e,
398
+ disabled: r = !1,
399
+ mode: t = "system",
400
+ focusMode: a = "system",
401
+ fullWidth: i = !1,
402
+ className: o,
403
+ type: l = "button",
404
+ raw: d = !1,
405
+ noBorder: c = !1,
406
+ "aria-label": g,
407
+ label: y,
408
+ size: m = "medium",
409
+ labelRight: u,
410
+ labelLeft: f,
411
+ noBackground: b = !1,
412
+ align: w = "center",
413
+ radius: I = "large",
414
+ variant: j = "secondary",
415
+ iconClassName: ae,
416
+ animated: k = !1,
417
+ ...ie
418
+ }, oe) => {
419
+ const ne = Te({
420
+ type: V,
421
+ mode: t,
422
+ focusMode: a,
423
+ fullWidth: i,
424
+ disabled: r,
425
+ raw: d,
426
+ className: o,
427
+ noBorder: c,
428
+ size: m,
429
+ labelRight: u,
430
+ labelLeft: f,
431
+ noBackground: b,
432
+ align: w,
433
+ radius: I,
434
+ variant: j,
435
+ animated: k
436
+ }), se = Re({ mode: t, raw: d, iconClassName: ae, variant: j }), G = Me({ animated: k }), le = "flex items-center justify-center relative w-full h-full overflow-hidden", [v, A] = P(), [p, O] = P(), [S, Y] = P(), z = N(0), x = N(null), E = N(null), ce = Ae([oe, x]);
437
+ return H(() => {
438
+ S && S.current && k && (z.current = Y.width + ze[m] + (c ? 0 : Pe), x.current && !x.current.style.width && (x.current.style.width = `${M[m]}px`));
439
+ }, [Y, S, m, c, k]), H(() => {
440
+ if (x && x.current && k) {
441
+ let C = M[m];
442
+ u && v && A.width > 0 ? C = A.width + z.current : f && p && O.width > 0 && (C = O.width + z.current), E.current && clearTimeout(E.current), C !== parseInt(x.current.style.width || "0", 10) && (v.current && (v.current.style.opacity = "0"), p.current && (p.current.style.opacity = "0"), x.current.style.width = `${C}px`, C > M[m] && (E.current = setTimeout(() => {
443
+ v.current && u && (v.current.style.opacity = "1"), p.current && f && (p.current.style.opacity = "1"), E.current = null;
444
+ }, De * 0.8))), C === M[m] && (v.current && (v.current.style.opacity = "0"), p.current && (p.current.style.opacity = "0"));
445
+ }
446
+ }, [
447
+ A,
448
+ u,
449
+ v,
450
+ O,
451
+ f,
452
+ p,
453
+ m,
454
+ k
455
+ ]), B(() => () => {
456
+ E.current && clearTimeout(E.current);
457
+ }, []), /* @__PURE__ */ s(
458
+ te,
459
+ {
460
+ ref: ce,
461
+ className: ne,
462
+ disabled: r,
463
+ type: l,
464
+ "aria-label": g || y,
465
+ ...ie,
466
+ children: /* @__PURE__ */ L("div", { className: le, children: [
467
+ /* @__PURE__ */ s(
468
+ W,
469
+ {
470
+ label: f,
471
+ labelRef: p,
472
+ labelClass: G,
473
+ labelInnerClass: "pr-2",
474
+ initiallyHidden: k
475
+ }
476
+ ),
477
+ /* @__PURE__ */ s("span", { ref: S, className: se, children: e }),
478
+ /* @__PURE__ */ s(
479
+ W,
480
+ {
481
+ label: u,
482
+ labelRef: v,
483
+ labelClass: G,
484
+ labelInnerClass: "pl-2",
485
+ initiallyHidden: k
486
+ }
487
+ )
488
+ ] })
489
+ }
490
+ );
491
+ }
492
+ ), W = ({
493
+ labelRef: e,
494
+ labelClass: r,
495
+ label: t,
496
+ labelInnerClass: a,
497
+ initiallyHidden: i = !1
498
+ }) => /* @__PURE__ */ s(
499
+ "span",
500
+ {
501
+ ref: e,
502
+ className: r,
503
+ style: i ? { opacity: 0 } : void 0,
504
+ children: t && /* @__PURE__ */ s("span", { className: a, children: t })
505
+ }
506
+ );
507
+ U.displayName = "ButtonIcon";
508
+ /*!
509
+ @versini/ui-button v8.0.0
510
+ © 2025 gizmette.com
511
+ */
512
+ try {
513
+ window.__VERSINI_UI_BUTTON__ || (window.__VERSINI_UI_BUTTON__ = {
514
+ version: "8.0.0",
515
+ buildTime: "09/01/2025 03:17 PM EDT",
516
+ homepage: "https://github.com/aversini/ui-components",
517
+ license: "MIT"
518
+ });
519
+ } catch {
520
+ }
521
+ const Fe = F.forwardRef(
522
+ ({
523
+ children: e,
524
+ mode: r = "system",
525
+ className: t,
526
+ active: a = !1,
527
+ ...i
528
+ }, o) => {
529
+ const l = a ? n(
530
+ "relative",
531
+ "focus-within:static",
532
+ "focus-within:after:border-transparent",
533
+ "after:absolute",
534
+ "after:content-['']",
535
+ "after:border-b-2",
536
+ "after:bottom-[-4px]",
537
+ "after:left-0",
538
+ "after:right-0",
539
+ {
540
+ "after:border-table-dark": r === "dark",
541
+ "after:border-table-light": r === "light",
542
+ "after:border-table-dark dark:after:border-table-light": r === "system",
543
+ "after:border-table-light dark:after:border-table-dark": r === "alt-system"
544
+ }
545
+ ) : "";
546
+ return /* @__PURE__ */ s("div", { className: l, children: /* @__PURE__ */ s(
547
+ U,
548
+ {
549
+ className: t,
550
+ ref: o,
551
+ mode: r,
552
+ radius: "small",
553
+ size: "small",
554
+ align: "center",
555
+ ...i,
556
+ children: e
557
+ }
558
+ ) });
559
+ }
560
+ );
561
+ Fe.displayName = "ButtonSort";
562
+ const Ve = ({
563
+ children: e,
564
+ fill: r,
565
+ viewBox: t,
566
+ className: a,
567
+ defaultViewBox: i,
568
+ size: o,
569
+ title: l,
570
+ semantic: d = !1,
571
+ ...c
572
+ }) => {
573
+ const g = n(o, a);
574
+ return /* @__PURE__ */ L(
575
+ "svg",
576
+ {
577
+ xmlns: "http://www.w3.org/2000/svg",
578
+ className: g,
579
+ viewBox: t || i,
580
+ fill: r || "currentColor",
581
+ role: "img",
582
+ "aria-hidden": !d,
583
+ focusable: !1,
584
+ ...c,
585
+ children: [
586
+ l && d && /* @__PURE__ */ s("title", { children: l }),
587
+ e
588
+ ]
589
+ }
590
+ );
591
+ };
592
+ /*!
593
+ @versini/ui-svgicon v4.2.1
594
+ © 2025 gizmette.com
595
+ */
596
+ try {
597
+ window.__VERSINI_UI_SVGICON__ || (window.__VERSINI_UI_SVGICON__ = {
598
+ version: "4.2.1",
599
+ buildTime: "08/27/2025 08:27 AM EDT",
600
+ homepage: "https://github.com/aversini/ui-components",
601
+ license: "MIT"
602
+ });
603
+ } catch {
604
+ }
605
+ const Ue = ({
606
+ className: e,
607
+ viewBox: r,
608
+ title: t,
609
+ monotone: a,
610
+ ...i
611
+ }) => /* @__PURE__ */ s(
612
+ Ve,
613
+ {
614
+ defaultViewBox: "0 0 384 512",
615
+ size: "size-5",
616
+ viewBox: r,
617
+ className: e,
618
+ title: t || "Close",
619
+ ...i,
620
+ children: /* @__PURE__ */ s(
621
+ "path",
622
+ {
623
+ d: "M297.4 406.6c12.5 12.5 32.8 12.5 45.3 0s12.5-32.8 0-45.3L237.3 256l105.3-105.4c12.5-12.5 12.5-32.8 0-45.3s-32.8-12.5-45.3 0L192 210.7 86.6 105.4c-12.5-12.5-32.8-12.5-45.3 0s-12.5 32.8 0 45.3L146.7 256 41.4 361.4c-12.5 12.5-12.5 32.8 0 45.3s32.8 12.5 45.3 0L192 301.3z",
624
+ opacity: a ? "1" : "0.4"
625
+ }
626
+ )
627
+ }
628
+ );
629
+ /*!
630
+ @versini/ui-icons v4.11.0
631
+ © 2025 gizmette.com
632
+ */
633
+ try {
634
+ window.__VERSINI_UI_ICONS__ || (window.__VERSINI_UI_ICONS__ = {
635
+ version: "4.11.0",
636
+ buildTime: "08/27/2025 08:28 AM EDT",
637
+ homepage: "https://github.com/aversini/ui-components",
638
+ license: "MIT"
639
+ });
640
+ } catch {
641
+ }
642
+ const re = h.createContext(null);
643
+ function je({
644
+ initialOpen: e = !1,
645
+ open: r,
646
+ onOpenChange: t
647
+ } = {}) {
648
+ const [a, i] = h.useState(e), [o, l] = h.useState(), [d, c] = h.useState(), g = r ?? a, y = t ?? i, m = ue({
649
+ open: g,
650
+ onOpenChange: y
651
+ }), u = m.context, f = ge(u, {
652
+ enabled: r == null
653
+ }), b = he(u, {
654
+ outsidePress: !1,
655
+ outsidePressEvent: "mousedown"
656
+ }), w = fe(u), I = be([f, b, w]);
657
+ return h.useMemo(
658
+ () => ({
659
+ open: g,
660
+ setOpen: y,
661
+ ...I,
662
+ ...m,
663
+ labelId: o,
664
+ descriptionId: d,
665
+ setLabelId: l,
666
+ setDescriptionId: c
667
+ }),
668
+ [g, y, I, m, o, d]
669
+ );
670
+ }
671
+ const $ = () => {
672
+ const e = h.useContext(re);
673
+ if (e == null)
674
+ throw new Error("Modal components must be wrapped in <Modal />");
675
+ return e;
676
+ };
677
+ function Ge({
678
+ children: e,
679
+ ...r
680
+ }) {
681
+ const t = je(r);
682
+ return /* @__PURE__ */ s(re.Provider, { value: t, children: e });
683
+ }
684
+ const Ye = h.forwardRef(function(e, r) {
685
+ const { context: t, ...a } = $(), i = ye([a.refs.setFloating, r]);
686
+ if (!t.open)
687
+ return null;
688
+ const { overlayBackground: o, ...l } = e, d = n("grid place-items-center", {
689
+ [`${o}`]: o,
690
+ "bg-black sm:bg-black/[.8]": !o
691
+ });
692
+ return /* @__PURE__ */ s(ve, { children: /* @__PURE__ */ s(pe, { className: d, lockScroll: !0, children: /* @__PURE__ */ s(ke, { context: t, children: /* @__PURE__ */ s(
693
+ "div",
694
+ {
695
+ ref: i,
696
+ "aria-labelledby": a.labelId,
697
+ "aria-describedby": a.descriptionId,
698
+ ...a.getFloatingProps(l),
699
+ children: l.children
700
+ }
701
+ ) }) }) });
702
+ }), He = h.forwardRef(function({ children: e, ...r }, t) {
703
+ const { setLabelId: a } = $(), i = Z();
704
+ return h.useLayoutEffect(() => (a(i), () => a(void 0)), [i, a]), /* @__PURE__ */ s("h1", { ...r, ref: t, id: i, children: e });
705
+ }), qe = h.forwardRef(function({ children: e, ...r }, t) {
706
+ const { setDescriptionId: a } = $(), i = Z();
707
+ return h.useLayoutEffect(() => (a(i), () => a(void 0)), [i, a]), /* @__PURE__ */ s("div", { ...r, ref: t, id: i, children: e });
708
+ }), Xe = h.forwardRef(function(e, r) {
709
+ const { setOpen: t } = $(), { trigger: a, className: i, ...o } = e, l = h.useCallback(() => t(!1), [t]);
710
+ return /* @__PURE__ */ s("div", { className: i, children: h.cloneElement(a, {
711
+ ref: r,
712
+ onClick: l,
713
+ ...o
714
+ }) });
715
+ });
716
+ /*!
717
+ @versini/ui-modal v3.0.0
718
+ © 2025 gizmette.com
719
+ */
720
+ try {
721
+ window.__VERSINI_UI_MODAL__ || (window.__VERSINI_UI_MODAL__ = {
722
+ version: "3.0.0",
723
+ buildTime: "09/01/2025 03:17 PM EDT",
724
+ homepage: "https://github.com/aversini/ui-components",
725
+ license: "MIT"
726
+ });
727
+ } catch {
728
+ }
729
+ const _ = "panel", T = "messagebox", We = ({
8
730
  className: e,
9
731
  kind: r,
10
732
  borderMode: t,
11
- animation: d,
12
- maxWidth: s = "medium"
733
+ animation: a,
734
+ maxWidth: i = "medium"
13
735
  }) => ({
14
- main: B("prose prose-lighter flex flex-col bg-surface-dark", {
15
- "duration-200 ease-out": d,
16
- [`${n} max-h-full sm:max-h-[95%] min-h-full sm:min-h-[10rem] sm:rounded-lg sm:border-2`]: r === o,
17
- [`${n} w-full sm:w-[95%] md:max-w-2xl`]: r === o && !e && s === "small",
18
- [`${n} w-full sm:w-[95%] md:max-w-3xl`]: r === o && !e && s === "medium",
19
- [`${n} w-full sm:w-[95%] md:max-w-4xl`]: r === o && !e && s === "large",
20
- [`${h} rounded-lg border-2`]: r === f,
21
- [`${h} w-[95%] sm:w-[50%] md:max-w-2xl`]: r === f && !e,
736
+ main: n("prose prose-lighter flex flex-col bg-surface-dark", {
737
+ "duration-200 ease-out": a,
738
+ [`${R} max-h-full sm:max-h-[95%] min-h-full sm:min-h-[10rem] sm:rounded-lg sm:border-2`]: r === _,
739
+ [`${R} w-full sm:w-[95%] md:max-w-2xl`]: r === _ && !e && i === "small",
740
+ [`${R} w-full sm:w-[95%] md:max-w-3xl`]: r === _ && !e && i === "medium",
741
+ [`${R} w-full sm:w-[95%] md:max-w-4xl`]: r === _ && !e && i === "large",
742
+ [`${q} rounded-lg border-2`]: r === T,
743
+ [`${q} w-[95%] sm:w-[50%] md:max-w-2xl`]: r === T && !e,
22
744
  [`${e}`]: !!e,
23
- "sm:border-border-dark": t === "dark" && r === o,
24
- "sm:border-border-accent": t === "light" && r === o,
25
- "border-border-dark": t === "dark" && r === f,
26
- "border-border-accent": t === "light" && r === f
745
+ "sm:border-border-dark": t === "dark" && r === _,
746
+ "sm:border-border-accent": t === "light" && r === _,
747
+ "border-border-dark": t === "dark" && r === T,
748
+ "border-border-accent": t === "light" && r === T
27
749
  }),
28
750
  content: "flex flex-col py-2 sm:py-4 sm:px-4 px-2 overflow-y-auto",
29
751
  footer: "flex grow flex-col sm:p-4 p-2",
30
752
  header: "sm:p-4 mb-0 p-2",
31
753
  close: "sm:p-4 p-2"
32
- }), T = "slide", p = "fade", H = ({
754
+ }), Je = "slide", J = "fade", tt = ({
33
755
  open: e,
34
756
  onOpenChange: r,
35
757
  title: t,
36
- children: d,
37
- footer: s,
38
- borderMode: w = "light",
39
- kind: A = o,
40
- className: b,
41
- animation: m = !1,
42
- animationType: c = T,
43
- maxWidth: E = "medium"
758
+ children: a,
759
+ footer: i,
760
+ borderMode: o = "light",
761
+ kind: l = _,
762
+ className: d,
763
+ animation: c = !1,
764
+ animationType: g = Je,
765
+ maxWidth: y = "medium"
44
766
  }) => {
45
- const u = L(""), [S, i] = Y(
46
- m ? c === p ? { opacity: 0 } : {
767
+ const m = N(""), [u, f] = K(
768
+ c ? g === J ? { opacity: 0 } : {
47
769
  transform: "translateY(-100vh)"
48
770
  } : {}
49
- ), a = O({
50
- className: b,
51
- kind: A,
52
- borderMode: w,
53
- animation: m,
54
- maxWidth: E
771
+ ), b = We({
772
+ className: d,
773
+ kind: l,
774
+ borderMode: o,
775
+ animation: c,
776
+ maxWidth: y
55
777
  });
56
- return g(() => (e && (u.current = document.title, document.title = `${t} | ${u.current}`), () => {
57
- e && (document.title = u.current);
58
- }), [t, e]), g(() => {
59
- if (m && e) {
60
- i(
61
- m ? c === p ? { opacity: 0 } : {
778
+ return B(() => (e && (m.current = document.title, document.title = `${t} | ${m.current}`), () => {
779
+ e && (document.title = m.current);
780
+ }), [t, e]), B(() => {
781
+ if (c && e) {
782
+ f(
783
+ c ? g === J ? { opacity: 0 } : {
62
784
  transform: "translateY(-666vh)"
63
785
  } : {}
64
786
  );
65
- const N = setTimeout(() => {
66
- i(
67
- m ? c === "fade" ? { opacity: 1 } : {
787
+ const w = setTimeout(() => {
788
+ f(
789
+ c ? g === "fade" ? { opacity: 1 } : {
68
790
  transform: "translateY(0)"
69
791
  } : {}
70
792
  );
71
793
  }, 100);
72
- return () => clearTimeout(N);
794
+ return () => clearTimeout(w);
73
795
  }
74
- }, [e, m, c]), /* @__PURE__ */ l(M, { children: e && /* @__PURE__ */ l(C, { open: e, onOpenChange: r, children: /* @__PURE__ */ x(y, { className: a.main, style: S, children: [
75
- /* @__PURE__ */ x("div", { className: "flex flex-row-reverse items-center justify-between", children: [
76
- /* @__PURE__ */ l(
77
- I,
796
+ }, [e, c, g]), /* @__PURE__ */ s(de, { children: e && /* @__PURE__ */ s(Ge, { open: e, onOpenChange: r, children: /* @__PURE__ */ L(Ye, { className: b.main, style: u, children: [
797
+ /* @__PURE__ */ L("div", { className: "flex flex-row-reverse items-center justify-between", children: [
798
+ /* @__PURE__ */ s(
799
+ Xe,
78
800
  {
79
- className: a.close,
80
- trigger: /* @__PURE__ */ l(
81
- $,
801
+ className: b.close,
802
+ trigger: /* @__PURE__ */ s(
803
+ U,
82
804
  {
83
805
  mode: "dark",
84
806
  focusMode: "light",
85
807
  noBorder: !0,
86
808
  label: "Close",
87
- children: /* @__PURE__ */ l(v, { monotone: !0 })
809
+ children: /* @__PURE__ */ s(Ue, { monotone: !0 })
88
810
  }
89
811
  )
90
812
  }
91
813
  ),
92
- /* @__PURE__ */ l(P, { className: a.header, children: t })
814
+ /* @__PURE__ */ s(He, { className: b.header, children: t })
93
815
  ] }),
94
- /* @__PURE__ */ l(_, { className: a.content, children: d }),
95
- s && /* @__PURE__ */ l("div", { className: a.footer, children: s })
816
+ /* @__PURE__ */ s(qe, { className: b.content, children: a }),
817
+ i && /* @__PURE__ */ s("div", { className: b.footer, children: i })
96
818
  ] }) }) });
97
819
  };
98
820
  export {
99
- h as MESSAGEBOX_CLASSNAME,
100
- n as PANEL_CLASSNAME,
101
- H as Panel
821
+ q as MESSAGEBOX_CLASSNAME,
822
+ R as PANEL_CLASSNAME,
823
+ tt as Panel
102
824
  };
package/dist/index.js CHANGED
@@ -1,12 +1,12 @@
1
1
  import { MESSAGEBOX_CLASSNAME as o, PANEL_CLASSNAME as E, Panel as n } from "./components/Panel/Panel.js";
2
2
  /*!
3
- @versini/ui-panel v2.2.10
3
+ @versini/ui-panel v3.0.0
4
4
  © 2025 gizmette.com
5
5
  */
6
6
  try {
7
7
  window.__VERSINI_UI_PANEL__ || (window.__VERSINI_UI_PANEL__ = {
8
- version: "2.2.10",
9
- buildTime: "09/01/2025 02:19 PM EDT",
8
+ version: "3.0.0",
9
+ buildTime: "09/01/2025 03:18 PM EDT",
10
10
  homepage: "https://github.com/aversini/ui-components",
11
11
  license: "MIT"
12
12
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@versini/ui-panel",
3
- "version": "2.2.10",
3
+ "version": "3.0.0",
4
4
  "license": "MIT",
5
5
  "author": "Arno Versini",
6
6
  "publishConfig": {
@@ -37,22 +37,22 @@
37
37
  "test": "vitest run"
38
38
  },
39
39
  "peerDependencies": {
40
- "react": "^18.3.1 || ^19.0.0",
41
- "react-dom": "^18.3.1 || ^19.0.0"
40
+ "react": "^19.0.0",
41
+ "react-dom": "^19.0.0"
42
42
  },
43
43
  "devDependencies": {
44
44
  "@testing-library/jest-dom": "6.8.0"
45
45
  },
46
46
  "dependencies": {
47
47
  "@tailwindcss/typography": "0.5.16",
48
- "@versini/ui-button": "7.1.6",
49
- "@versini/ui-icons": "4.10.0",
50
- "@versini/ui-modal": "2.0.10",
48
+ "@versini/ui-button": "8.0.0",
49
+ "@versini/ui-icons": "4.11.0",
50
+ "@versini/ui-modal": "3.0.0",
51
51
  "clsx": "2.1.1",
52
52
  "tailwindcss": "4.1.12"
53
53
  },
54
54
  "sideEffects": [
55
55
  "**/*.css"
56
56
  ],
57
- "gitHead": "c577149643ec36cad454587166e62410a77aed38"
57
+ "gitHead": "70a47e9e30172dbb7b36306773fe9511e437fba6"
58
58
  }