kosmio 0.1.1 → 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,3469 @@
1
+ import { jsx as l, jsxs as V, Fragment as Tt } from "react/jsx-runtime";
2
+ import { forwardRef as te, useContext as Re, createContext as Ve, Children as at, isValidElement as Be, useState as U, useId as _e, useRef as ee, useEffect as Q, cloneElement as lt, useMemo as J, useCallback as W, Fragment as Et } from "react";
3
+ import { c as q } from "./classNames-CcykAxZN.js";
4
+ import { useTranslation as oe } from "react-i18next";
5
+ import { b as qe, u as it, e as ct, d as wt, c as Xe } from "./ViewportContext-z-ZwlTIZ.js";
6
+ import { createPortal as ut } from "react-dom";
7
+ import { r as At, d as Lt, s as It } from "./shortcuts-n31uRPcv.js";
8
+ import { b as Oe } from "./offlineWriteQueue-C31IjyB_.js";
9
+ const Ne = {
10
+ start: "kosmio-text-align-start",
11
+ center: "kosmio-text-align-center",
12
+ end: "kosmio-text-align-end",
13
+ left: "kosmio-text-align-left",
14
+ right: "kosmio-text-align-right",
15
+ justify: "kosmio-text-align-justify"
16
+ }, Ot = {
17
+ 1: "t-color-1",
18
+ 2: "t-color-2",
19
+ 3: "t-color-3"
20
+ }, Dt = {
21
+ 1: "t-color-d1",
22
+ 2: "t-color-d2",
23
+ 3: "t-color-d3"
24
+ }, zt = {
25
+ xxxl: "text-xxxl",
26
+ xxl: "text-xxl",
27
+ xl: "text-xl",
28
+ lg: "text-lg",
29
+ md: "text-md",
30
+ sm: "text-sm",
31
+ xs: "text-xs",
32
+ xxs: "text-xxs"
33
+ }, $t = {
34
+ default: "text-font-default",
35
+ main: "text-font-main",
36
+ mono: "text-font-mono"
37
+ }, Ft = {
38
+ regular: "text-weight-regular",
39
+ medium: "text-weight-medium",
40
+ semibold: "text-weight-semibold",
41
+ bold: "text-weight-bold"
42
+ }, Pt = {
43
+ none: "text-leading-none",
44
+ tight: "text-leading-tight",
45
+ normal: "text-leading-normal",
46
+ relaxed: "text-leading-relaxed"
47
+ };
48
+ function Mt(e, t) {
49
+ if (t == null || t === "") return;
50
+ const n = String(t);
51
+ return n.startsWith("var(") ? n : n.startsWith("--") ? `var(${n})` : `var(--kosmio-${e}-${n})`;
52
+ }
53
+ function Rt(e) {
54
+ return typeof e == "string" && (e.startsWith("var(") || e.startsWith("--"));
55
+ }
56
+ function pe(e, t, n = "") {
57
+ if (e == null || e === "") return "";
58
+ const r = t[e];
59
+ return r || (typeof e == "string" && n && e.startsWith(n) ? e : "");
60
+ }
61
+ function Vt(e) {
62
+ return e ? pe(e, Ne, "kosmio-text-align-") : "";
63
+ }
64
+ function Bt({ left: e, center: t, right: n }) {
65
+ return t ? Ne.center : n ? Ne.right : e ? Ne.left : "";
66
+ }
67
+ function dt(e, t, n, r) {
68
+ return q(
69
+ pe(e, $t, "text-font-"),
70
+ pe(t, Ft, "text-weight-"),
71
+ pe(n, zt, "text-"),
72
+ pe(r, Pt, "text-leading-")
73
+ );
74
+ }
75
+ function je(e, t, n, r) {
76
+ const {
77
+ font: s = "default",
78
+ fontSize: o,
79
+ fontColor: a,
80
+ weight: i,
81
+ lineHeight: u,
82
+ as: d
83
+ } = e ?? {}, m = t ?? d, h = n ?? a, c = dt(s, i, o, u), b = te(function({
84
+ className: v,
85
+ ...x
86
+ }, S) {
87
+ return /* @__PURE__ */ l(
88
+ _,
89
+ {
90
+ ref: S,
91
+ as: m,
92
+ color: h,
93
+ ...x,
94
+ className: q(c, r, v)
95
+ }
96
+ );
97
+ });
98
+ return b.defaultPropsConfig = {
99
+ typoStyle: e,
100
+ as: m,
101
+ color: h,
102
+ className: r
103
+ }, b;
104
+ }
105
+ function Cr(e = []) {
106
+ return e.map((t) => {
107
+ if (Array.isArray(t)) {
108
+ const [n, r, s] = t;
109
+ return je(n, void 0, r, s);
110
+ }
111
+ return je(t);
112
+ });
113
+ }
114
+ function _t(e, t) {
115
+ if (e == null || Rt(e)) return "";
116
+ const r = (t ? Dt : Ot)[e];
117
+ return r || (t && typeof e == "string" && e.startsWith("t-color-") && !e.startsWith("t-color-d") ? e.replace("t-color-", "t-color-d") : typeof e == "string" && e.startsWith("t-color-") ? e : "");
118
+ }
119
+ const _ = te(function({
120
+ as: t = "p",
121
+ color: n,
122
+ dynamic: r = !1,
123
+ size: s = "",
124
+ font: o = "",
125
+ weight: a,
126
+ lineHeight: i = "",
127
+ align: u,
128
+ left: d = !1,
129
+ center: m = !1,
130
+ right: h = !1,
131
+ inline: c = !1,
132
+ ellipsis: b = !1,
133
+ elipsis: y = !1,
134
+ className: v = "",
135
+ style: x,
136
+ children: S,
137
+ ...g
138
+ }, T) {
139
+ const N = t, k = dt(o, a, s, i), f = Vt(u), p = _t(n, r), E = p ? void 0 : Mt("color", n), w = b || y, C = u ? "" : Bt({ left: d, center: m, right: h }), G = {
140
+ ...E ? { "--kosmio-text-color": E } : {}
141
+ };
142
+ return /* @__PURE__ */ l(
143
+ N,
144
+ {
145
+ ref: T,
146
+ className: q(
147
+ "kosmio-text text",
148
+ k,
149
+ f,
150
+ p,
151
+ E && "kosmio-text-colored",
152
+ C,
153
+ c && "kosmio-text-inline text-inline",
154
+ w && "kosmio-text-ellipsis text-elipsis",
155
+ v
156
+ ),
157
+ style: {
158
+ ...G,
159
+ ...x
160
+ },
161
+ ...g,
162
+ children: S
163
+ }
164
+ );
165
+ }), qt = {
166
+ plain: "",
167
+ primary: "kosmio-button-primary primary",
168
+ searchFilter: "searchbar-filter",
169
+ searchAdd: "kosmio-button-primary primary searchbar-add"
170
+ }, We = (e) => e === "a", Yt = te(function({
171
+ as: t = "button",
172
+ variant: n = "plain",
173
+ danger: r = !1,
174
+ active: s = !0,
175
+ showTooltip: o = !1,
176
+ tooltipText: a = "",
177
+ tooltipDirection: i = "right",
178
+ className: u = "",
179
+ type: d,
180
+ disabled: m = !1,
181
+ onClick: h,
182
+ ...c
183
+ }, b) {
184
+ const y = t, v = qt[n] ?? n, x = i === "left" ? "left" : "right", S = a || (typeof c["aria-label"] == "string" ? c["aria-label"] : ""), g = q(
185
+ "kosmio-button custom-button",
186
+ v,
187
+ r && "kosmio-button-danger danger",
188
+ s && "kosmio-button-active active",
189
+ o && `kosmio-button-tooltip tooltip tooltip-${x}`,
190
+ u
191
+ );
192
+ return /* @__PURE__ */ l(
193
+ y,
194
+ {
195
+ ref: b,
196
+ className: g,
197
+ onClick: (N) => {
198
+ if (m && We(t)) {
199
+ N.preventDefault();
200
+ return;
201
+ }
202
+ h?.(N);
203
+ },
204
+ ...o ? { "data-tooltip": S } : {},
205
+ ...We(t) ? {
206
+ "aria-disabled": m || void 0,
207
+ tabIndex: m ? -1 : c.tabIndex
208
+ } : {
209
+ type: d ?? "button",
210
+ disabled: m
211
+ },
212
+ ...c
213
+ }
214
+ );
215
+ });
216
+ function Tr({
217
+ variant: e = "plain",
218
+ text: t,
219
+ icon: n,
220
+ iconPosition: r = "start",
221
+ onClick: s,
222
+ tooltipText: o,
223
+ className: a = "",
224
+ danger: i = !1,
225
+ ...u
226
+ }) {
227
+ const d = u["aria-label"] ?? (typeof t == "string" ? t : void 0), m = n ? /* @__PURE__ */ l("span", { className: "kosmio-action-button-icon", children: n }) : null;
228
+ return /* @__PURE__ */ V(
229
+ Yt,
230
+ {
231
+ variant: e,
232
+ onClick: s,
233
+ "aria-label": d,
234
+ showTooltip: !!o,
235
+ tooltipText: o,
236
+ className: `kosmio-action-button ${a}`.trim(),
237
+ danger: i,
238
+ ...u,
239
+ children: [
240
+ r === "start" ? m : null,
241
+ t ? /* @__PURE__ */ l(_, { as: "span", size: "sm", children: t }) : null,
242
+ r === "end" ? m : null
243
+ ]
244
+ }
245
+ );
246
+ }
247
+ const Ht = {
248
+ default: "kosmio-icon icon dynamic-theme",
249
+ static: "kosmio-icon icon static-theme",
250
+ reversed: "kosmio-icon icon reversed-theme",
251
+ reversedDynamic: "kosmio-icon icon reversed-dynamic-theme",
252
+ accent: "kosmio-icon icon accent-theme",
253
+ invalid: "kosmio-icon icon invalid"
254
+ }, Gt = {
255
+ xs: "kosmio-icon-size-xs icon-size-xs",
256
+ sm: "kosmio-icon-size-sm icon-size-sm",
257
+ md: "kosmio-icon-size-md icon-size-md",
258
+ xmd: "kosmio-icon-size-xmd icon-size-xmd",
259
+ lg: "kosmio-icon-size-lg icon-size-lg",
260
+ xl: "kosmio-icon-size-xl icon-size-xl",
261
+ xxl: "kosmio-icon-size-xxl icon-size-xxl",
262
+ xxxl: "kosmio-icon-size-xxxl icon-size-xxxl"
263
+ }, ue = te(function({
264
+ src: t,
265
+ variant: n = "default",
266
+ size: r,
267
+ className: s = "",
268
+ alt: o = "",
269
+ decorative: a = !1,
270
+ style: i,
271
+ ...u
272
+ }, d) {
273
+ const m = Ht[n] ?? n, h = Gt[r];
274
+ return typeof t == "string" && t.endsWith(".svg") && n !== "static" ? /* @__PURE__ */ l(
275
+ "span",
276
+ {
277
+ ref: d,
278
+ className: q(m, h, "kosmio-icon-mask icon-mask", s),
279
+ role: a ? void 0 : "img",
280
+ "aria-label": a ? void 0 : o,
281
+ "aria-hidden": a || void 0,
282
+ style: {
283
+ "--kosmio-icon-url": `url("${t}")`,
284
+ "--icon-url": `url("${t}")`,
285
+ ...i
286
+ },
287
+ ...u
288
+ }
289
+ ) : /* @__PURE__ */ l(
290
+ "img",
291
+ {
292
+ ref: d,
293
+ className: q(m, h, s),
294
+ src: t,
295
+ alt: a ? "" : o,
296
+ "aria-hidden": a || void 0,
297
+ style: i,
298
+ ...u
299
+ }
300
+ );
301
+ }), ft = Ve({
302
+ icons: {},
303
+ defaultVariant: "default"
304
+ });
305
+ function Xt(e, t, n) {
306
+ return t ?? (e.alt != null ? e.alt : e.altKey ? n(e.altKey) : "");
307
+ }
308
+ function Er({ icons: e = {}, defaultVariant: t = "default", children: n }) {
309
+ return /* @__PURE__ */ l(ft.Provider, { value: { icons: e, defaultVariant: t }, children: n });
310
+ }
311
+ function jt() {
312
+ return Re(ft);
313
+ }
314
+ function mt({
315
+ name: e,
316
+ size: t,
317
+ variant: n,
318
+ alt: r,
319
+ decorative: s = !1,
320
+ ...o
321
+ }) {
322
+ const { t: a } = oe(), { icons: i, defaultVariant: u } = jt(), d = i?.[e];
323
+ return d ? /* @__PURE__ */ l(
324
+ ue,
325
+ {
326
+ src: d.src,
327
+ size: t ?? d.size,
328
+ variant: n ?? d.variant ?? u,
329
+ alt: s ? "" : Xt(d, r, a),
330
+ decorative: s,
331
+ ...o
332
+ }
333
+ ) : null;
334
+ }
335
+ function wr({
336
+ id: e,
337
+ title: t = "forms.shared.actionFormTitle",
338
+ picture: n = null,
339
+ type: r = "short-form",
340
+ buildActions: s = null,
341
+ actions: o = []
342
+ }) {
343
+ return {
344
+ id: e,
345
+ title: t,
346
+ picture: n,
347
+ type: r,
348
+ buildActions: s,
349
+ actions: o
350
+ };
351
+ }
352
+ function Wt(e, t, n) {
353
+ return e ? typeof e.buildActions == "function" ? e.buildActions(t, n) ?? [] : Array.isArray(e.actions) && e.actions.length > 0 ? e.actions : Array.isArray(t?.actions) ? t.actions : [] : [];
354
+ }
355
+ function Ar(e = null, t = []) {
356
+ return {
357
+ context: e,
358
+ actions: t
359
+ };
360
+ }
361
+ function Lr({
362
+ actions: e,
363
+ context: t,
364
+ formName: n,
365
+ getForm: r,
366
+ resolveActions: s = Wt
367
+ }) {
368
+ const { t: o } = oe(), { form: a, formAction: i, formObject: u, openForm: d, setAdvancedForm: m, closeForm: h } = qe(), b = typeof r == "function" ? r(n ?? a, i) : null, y = u ?? null, v = t ?? y?.context ?? y ?? null, x = Array.isArray(e) ? e : s(b, y, {
369
+ openForm: d,
370
+ setAdvancedForm: m,
371
+ closeForm: h,
372
+ context: v,
373
+ t: o
374
+ });
375
+ return /* @__PURE__ */ l("form", { className: "full-view column-left actions-form", children: /* @__PURE__ */ l("div", { className: "full-view column-left", children: x.map((S, g) => {
376
+ const {
377
+ label: T,
378
+ icon: N,
379
+ iconName: k,
380
+ iconVariant: f,
381
+ onClick: p,
382
+ color: E,
383
+ disabled: w
384
+ } = S ?? {}, C = typeof T == "function" ? T(v) : T, G = typeof w == "function" ? w(v) : !!w, F = o(C);
385
+ return F ? /* @__PURE__ */ V(
386
+ "button",
387
+ {
388
+ className: `actions-form-option ${E || ""}`.trim(),
389
+ disabled: G,
390
+ onClick: (P) => {
391
+ P.preventDefault(), !G && p?.(v);
392
+ },
393
+ children: [
394
+ k ? /* @__PURE__ */ l(mt, { name: k, alt: F }) : null,
395
+ !k && N ? /* @__PURE__ */ l(ue, { src: N, alt: F, variant: f ?? "reversedDynamic" }) : null,
396
+ /* @__PURE__ */ l(_, { as: "p", size: "xs", dynamic: !0, color: 2, className: "select-sheet-label", children: F })
397
+ ]
398
+ },
399
+ `${C}-${g}`
400
+ ) : null;
401
+ }) }) });
402
+ }
403
+ function Qt({ className: e = "", label: t = "", onClick: n, style: r, ...s }) {
404
+ return /* @__PURE__ */ l(
405
+ "button",
406
+ {
407
+ type: "button",
408
+ className: q("kosmio-backdrop", e),
409
+ "aria-hidden": t ? void 0 : "true",
410
+ "aria-label": t || void 0,
411
+ onClick: n,
412
+ style: r,
413
+ tabIndex: t ? void 0 : -1,
414
+ ...s
415
+ }
416
+ );
417
+ }
418
+ function Ir({ children: e, className: t = "", ...n }) {
419
+ return /* @__PURE__ */ l("div", { className: q("kosmio-card card", t), ...n, children: e });
420
+ }
421
+ function Kt(e = 0) {
422
+ const t = e * 45;
423
+ return {
424
+ "--motion-row-delay": `${t}ms`,
425
+ opacity: 0,
426
+ animationName: "motion-row-appear",
427
+ animationDuration: "360ms",
428
+ animationDelay: `${t}ms`,
429
+ animationTimingFunction: "cubic-bezier(0.22, 1, 0.36, 1)",
430
+ animationFillMode: "forwards",
431
+ willChange: "transform, opacity"
432
+ };
433
+ }
434
+ function Or({ children: e }) {
435
+ return at.map(e, (t, n) => Be(t) ? /* @__PURE__ */ l("div", { className: "full-w", style: Kt(n), children: t }, t.key ?? n) : t);
436
+ }
437
+ const Ut = {
438
+ plain: "",
439
+ custom: "customCheckbox-input"
440
+ }, Jt = te(function({
441
+ variant: t = "plain",
442
+ className: n = "",
443
+ containerClassName: r = "",
444
+ labelClassName: s = "",
445
+ markClassName: o = "",
446
+ textClassName: a = "",
447
+ label: i,
448
+ checked: u,
449
+ onChange: d,
450
+ onCheckedChange: m,
451
+ ...h
452
+ }, c) {
453
+ const b = Ut[t] ?? t, y = (v) => {
454
+ d?.(v), m?.(v.target.checked, v);
455
+ };
456
+ return /* @__PURE__ */ V(_, { className: q(r, s), as: "label", children: [
457
+ /* @__PURE__ */ l("input", { ref: c, type: "checkbox", className: q(b, n), checked: u, onChange: y, ...h }),
458
+ o ? /* @__PURE__ */ l("span", { className: o }) : null,
459
+ i ? /* @__PURE__ */ l(_, { className: a, as: "span", children: i }) : null
460
+ ] });
461
+ }), Zt = te(function({ className: t = "", type: n = "button", disabled: r = !1, children: s, ...o }, a) {
462
+ return /* @__PURE__ */ l(
463
+ "button",
464
+ {
465
+ ref: a,
466
+ type: n,
467
+ className: q("kosmio-clickable", t),
468
+ disabled: r,
469
+ ...o,
470
+ children: s
471
+ }
472
+ );
473
+ });
474
+ function Dr({ titleBox: e, children: t, className: n = "", defaultExpanded: r = !0 }) {
475
+ const [s, o] = U(r), a = _e(), i = typeof e == "function" ? e(s) : e;
476
+ return /* @__PURE__ */ V("div", { className: `collapsible-box full-w ${s ? "is-expanded" : "is-collapsed"} ${n}`.trim(), children: [
477
+ /* @__PURE__ */ l(
478
+ Zt,
479
+ {
480
+ type: "button",
481
+ className: "flex full-w row-left collapsible-box-trigger",
482
+ onClick: () => o((u) => !u),
483
+ "aria-expanded": s,
484
+ "aria-controls": a,
485
+ children: i
486
+ }
487
+ ),
488
+ /* @__PURE__ */ l("div", { id: a, className: "collapsible-box-content flex full-w column-left", children: t })
489
+ ] });
490
+ }
491
+ function zr({ title: e, children: t, className: n = "", defaultExpanded: r = !0 }) {
492
+ const [s, o] = U(r), a = _e();
493
+ return /* @__PURE__ */ V("div", { className: `collapsible-card ${s ? "is-expanded" : "is-collapsed"} ${n}`.trim(), children: [
494
+ /* @__PURE__ */ V(
495
+ "button",
496
+ {
497
+ type: "button",
498
+ className: "card-title spaced collapsible-card-trigger",
499
+ onClick: () => o((i) => !i),
500
+ "aria-expanded": s,
501
+ "aria-controls": a,
502
+ children: [
503
+ /* @__PURE__ */ l(_, { as: "span", size: "xs", color: 3, children: e }),
504
+ /* @__PURE__ */ l("span", { className: "collapsible-card-chevron", "aria-hidden": "true" })
505
+ ]
506
+ }
507
+ ),
508
+ /* @__PURE__ */ V("div", { id: a, className: "collapsible-card-content flex full-w column-left", children: [
509
+ /* @__PURE__ */ l("span", { className: "card-divider full-w divider" }),
510
+ /* @__PURE__ */ l("div", { className: "card-content full-w", children: t })
511
+ ] })
512
+ ] });
513
+ }
514
+ function en(e) {
515
+ if (e)
516
+ return e.size === "0px" ? "none" : `${e.size} solid ${e.color}`;
517
+ }
518
+ function tn(e, t) {
519
+ if (t == null || t === "") return;
520
+ const n = String(t);
521
+ return n.startsWith("var(") ? n : n.startsWith("--") ? `var(${n})` : `var(--kosmio-${e}-${n})`;
522
+ }
523
+ function nn(e, t) {
524
+ if (!e) return t;
525
+ const n = {
526
+ "--kosmio-container-background": e.backgroundColor,
527
+ "--kosmio-container-border": en(e.borderStyle),
528
+ "--kosmio-container-padding": e.padding,
529
+ "--kosmio-container-radius": e.radii,
530
+ "--kosmio-container-color": tn("color", e.typoStyle?.fontColor),
531
+ ...t
532
+ };
533
+ return Object.keys(n).forEach((r) => {
534
+ (n[r] == null || n[r] === "") && delete n[r];
535
+ }), n;
536
+ }
537
+ const rn = te(function({
538
+ as: t,
539
+ containerStyle: n,
540
+ children: r,
541
+ className: s = "",
542
+ style: o,
543
+ ...a
544
+ }, i) {
545
+ const u = t ?? n?.typoStyle?.as ?? "div";
546
+ return /* @__PURE__ */ l(
547
+ u,
548
+ {
549
+ ref: i,
550
+ className: q("kosmio-container kosmio-card card", s),
551
+ style: nn(n, o),
552
+ ...a,
553
+ children: r
554
+ }
555
+ );
556
+ });
557
+ function Qe(e, t, n) {
558
+ const r = t ?? e?.typoStyle?.as ?? "div", s = te(function({
559
+ className: a,
560
+ ...i
561
+ }, u) {
562
+ return /* @__PURE__ */ l(
563
+ rn,
564
+ {
565
+ ref: u,
566
+ as: r,
567
+ containerStyle: e,
568
+ className: q(n, a),
569
+ ...i
570
+ }
571
+ );
572
+ });
573
+ return s.defaultPropsConfig = { containerStyle: e, as: r, className: n }, s;
574
+ }
575
+ function $r(e = []) {
576
+ return e.map((t) => {
577
+ if (Array.isArray(t)) {
578
+ const [n, r, s] = t;
579
+ return Qe(n, r, s);
580
+ }
581
+ return Qe(t);
582
+ });
583
+ }
584
+ const Fr = te(function({
585
+ icon: t,
586
+ label: n,
587
+ compact: r = !1,
588
+ className: s = "",
589
+ type: o = "button",
590
+ children: a,
591
+ ...i
592
+ }, u) {
593
+ return /* @__PURE__ */ l(
594
+ "button",
595
+ {
596
+ ref: u,
597
+ type: o,
598
+ className: q("kosmio-floating-action-button", r && "is-compact", s),
599
+ "aria-label": n,
600
+ title: n,
601
+ ...i,
602
+ children: t ? /* @__PURE__ */ l("span", { className: "kosmio-floating-action-button-icon", children: t }) : a
603
+ }
604
+ );
605
+ }), Pr = te(function({
606
+ icon: t,
607
+ title: n,
608
+ subtitle: r,
609
+ selectedLabel: s,
610
+ isSelectable: o = !0,
611
+ isSelected: a = !1,
612
+ className: i = "",
613
+ disabled: u = !1,
614
+ onClick: d,
615
+ ...m
616
+ }, h) {
617
+ const c = u || !o || !d;
618
+ return /* @__PURE__ */ V(
619
+ "button",
620
+ {
621
+ ref: h,
622
+ type: "button",
623
+ className: q(
624
+ "kosmio-selection-button selection-button",
625
+ a && "is-selected",
626
+ !o && "is-not-selectable",
627
+ i
628
+ ),
629
+ "aria-current": a ? "true" : void 0,
630
+ disabled: c,
631
+ onClick: c ? void 0 : d,
632
+ ...m,
633
+ children: [
634
+ t ? /* @__PURE__ */ l("span", { className: "flex-center", children: t }) : null,
635
+ /* @__PURE__ */ V("span", { className: "column-left", children: [
636
+ /* @__PURE__ */ l(_, { as: "span", size: "xs", elipsis: !0, left: !0, children: n }),
637
+ r ? /* @__PURE__ */ l(_, { as: "span", size: "xxs", color: 3, left: !0, dynamic: !0, elipsis: !0, children: r }) : null
638
+ ] }),
639
+ a && s ? /* @__PURE__ */ l(_, { as: "span", size: "xxs", color: 3, left: !0, dynamic: !0, children: s }) : null
640
+ ]
641
+ }
642
+ );
643
+ });
644
+ function Mr({
645
+ children: e,
646
+ minColumnWidth: t = 150,
647
+ maxColumns: n,
648
+ gap: r = 10,
649
+ padding: s = 10,
650
+ className: o = "",
651
+ staggerMs: a = 50,
652
+ maxStaggerMs: i = 1e3,
653
+ ...u
654
+ }) {
655
+ const d = ee(null), [m, h] = U(null);
656
+ Q(() => {
657
+ const b = () => {
658
+ if (!d.current) return;
659
+ const y = d.current.offsetWidth;
660
+ let v = Math.floor((y + r) / (t + r));
661
+ n && (v = Math.min(v, n)), h(Math.max(v, 1));
662
+ };
663
+ return b(), window.addEventListener("resize", b), () => window.removeEventListener("resize", b);
664
+ }, [t, n, r]);
665
+ const c = {
666
+ gridTemplateColumns: `repeat(${m ?? 1}, 1fr)`,
667
+ gap: `${r}px`,
668
+ padding: `${s}px`
669
+ };
670
+ return /* @__PURE__ */ l("div", { ref: d, className: `kosmio-grid ${o}`.trim(), style: c, ...u, children: m == null ? null : at.map(e, (b, y) => {
671
+ if (!Be(b)) return b;
672
+ const v = y % m, x = Math.floor(y / m), S = Math.min((x + v) * a, i), g = b.props?.style || {};
673
+ return lt(b, {
674
+ "data-grid-index": y,
675
+ "data-grid-columns": m,
676
+ style: {
677
+ ...g,
678
+ "--kosmio-motion-delay": `${S}ms`
679
+ }
680
+ });
681
+ }) });
682
+ }
683
+ const Ke = {
684
+ xxs: { closed: "-2px", open: "-1px", size: "xs" },
685
+ xs: { closed: "-2px", open: "-1px" },
686
+ sm: { closed: "-2px", open: "-1px" },
687
+ md: { closed: "-2px", open: "-1px" },
688
+ xmd: { closed: "-3px", open: "-1px" },
689
+ lg: { closed: "-3px", open: "-1px" },
690
+ xl: { closed: "-4px", open: "-2px" },
691
+ xxl: { closed: "-5px", open: "-2px" },
692
+ xxxl: { closed: "-8px", open: "-4px" }
693
+ };
694
+ function on({ colored: e = !1, size: t = "xs", isOpen: n = !1, className: r = "", style: s = {}, ...o }) {
695
+ const a = Ke[t] ?? Ke.xs, i = a.size ?? t;
696
+ return /* @__PURE__ */ l(
697
+ "span",
698
+ {
699
+ className: q(
700
+ "kosmio-icon-chevron icon-chevron",
701
+ `kosmio-icon-size-${i}`,
702
+ `icon-size-${i}`,
703
+ n && "is-open",
704
+ e && "colored",
705
+ r
706
+ ),
707
+ style: {
708
+ "--kosmio-icon-chevron-closed-shift": a.closed,
709
+ "--kosmio-icon-chevron-open-shift": a.open,
710
+ "--icon-chevron-closed-shift": a.closed,
711
+ "--icon-chevron-open-shift": a.open,
712
+ ...s
713
+ },
714
+ "aria-hidden": "true",
715
+ ...o
716
+ }
717
+ );
718
+ }
719
+ const sn = {
720
+ plain: "",
721
+ custom: "customInput",
722
+ search: "searchbar-input"
723
+ }, an = te(function({
724
+ variant: t = "plain",
725
+ className: n = "",
726
+ format: r,
727
+ isValid: s,
728
+ onChange: o,
729
+ onValueChange: a,
730
+ ...i
731
+ }, u) {
732
+ const d = sn[t] ?? t, m = (c) => {
733
+ if (!r || c === "")
734
+ return !0;
735
+ if (r instanceof RegExp)
736
+ return r.lastIndex = 0, r.test(c);
737
+ try {
738
+ return new RegExp(r).test(c);
739
+ } catch {
740
+ return !0;
741
+ }
742
+ }, h = (c) => {
743
+ const b = c.target.value;
744
+ m(b) && (typeof s == "function" && !s(b, c) || (o?.(c), a?.(b, c)));
745
+ };
746
+ return /* @__PURE__ */ l(
747
+ "input",
748
+ {
749
+ ref: u,
750
+ className: `${q(d, n)} form-field`,
751
+ onChange: h,
752
+ ...i
753
+ }
754
+ );
755
+ });
756
+ function ln({
757
+ option: e,
758
+ selected: t = !1,
759
+ onSelect: n,
760
+ renderIcon: r,
761
+ className: s = ""
762
+ }) {
763
+ const o = e?.label ?? e?.value ?? "", a = e?.icon, i = e?.iconName, u = e?.iconVariant ?? "default", d = e?.iconSize ?? "xl", m = e?.className ?? "", h = (y) => {
764
+ n?.(e, y);
765
+ }, c = r?.(e);
766
+ return /* @__PURE__ */ V("button", { type: "button", className: q("card column gap20 enum-option", !!!(c || !i && a) && "enum-option--text-only", t && "is-selected", m, s), "aria-pressed": t, onClick: h, children: [
767
+ c ?? (!i && a ? /* @__PURE__ */ l(ue, { src: a, alt: o, variant: u, size: d }) : null),
768
+ /* @__PURE__ */ l(_, { className: "enum-option-label", as: "span", size: "sm", children: o })
769
+ ] });
770
+ }
771
+ const cn = (e) => typeof e == "string" || typeof e == "number", Ue = (e) => cn(e) ? { value: e } : e && typeof e == "object" && "value" in e ? e : null;
772
+ function un(e) {
773
+ return Array.isArray(e) ? e.map(Ue).filter(Boolean) : !e || typeof e != "object" ? [] : Object.values(e).map(Ue).filter(Boolean);
774
+ }
775
+ function Je(e, t, n) {
776
+ const r = e(t);
777
+ return r === t ? n : r;
778
+ }
779
+ function dn({
780
+ enumValues: e = [],
781
+ selectedValue: t = null,
782
+ onValueChange: n,
783
+ translationKeyPrefix: r = "",
784
+ getIcon: s,
785
+ getLabel: o,
786
+ renderIcon: a,
787
+ translate: i,
788
+ isOptionVisible: u = () => !0,
789
+ className: d = "",
790
+ optionClassName: m = "",
791
+ ariaLabel: h
792
+ }) {
793
+ const { t: c } = oe(), b = J(() => {
794
+ const y = i ?? c;
795
+ return un(e).filter((x) => u(x.value, x)).map((x) => {
796
+ const S = String(x.label ?? x.value), g = typeof o == "function" ? o(x.value, y, x) : x.labelKey ? Je(y, x.labelKey, S) : x.label != null ? x.label : r ? Je(y, `${r}.${x.value}`, S) : S;
797
+ return {
798
+ ...x,
799
+ value: x.value,
800
+ label: g,
801
+ icon: x.icon ?? (typeof s == "function" ? s(x.value, x) : void 0),
802
+ iconName: x.iconName
803
+ };
804
+ });
805
+ }, [e, s, o, c, u, i, r]);
806
+ return /* @__PURE__ */ l("div", { className: q("enum-selector-grid", d), role: "radiogroup", "aria-label": h, children: b.map((y) => /* @__PURE__ */ l(
807
+ ln,
808
+ {
809
+ option: y,
810
+ selected: String(t) === String(y.value),
811
+ onSelect: () => n?.(y.value, y),
812
+ renderIcon: a,
813
+ className: m
814
+ },
815
+ String(y.value)
816
+ )) });
817
+ }
818
+ function Rr({
819
+ label: e,
820
+ checked: t = !1,
821
+ onChange: n,
822
+ required: r = !1,
823
+ className: s = "",
824
+ labelClassName: o = "",
825
+ fieldClassName: a = "",
826
+ disabled: i = !1,
827
+ requiredLabel: u
828
+ }) {
829
+ const { t: d } = oe(), m = u ?? d("forms.shared.required", { defaultValue: "Required" });
830
+ return /* @__PURE__ */ l("div", { className: `form-field customCheckbox ${s}`, children: /* @__PURE__ */ l(Jt, { variant: "custom", checked: t, onCheckedChange: n, required: r, disabled: i, className: a, containerClassName: `gap5 center ${o}`, markClassName: "", label: e ? /* @__PURE__ */ V(Tt, { children: [
831
+ e,
832
+ r && /* @__PURE__ */ l(_, { className: "form-field-required-text", as: "span", children: m })
833
+ ] }) : null }) });
834
+ }
835
+ const fn = te(function({
836
+ label: t,
837
+ placeholder: n = "",
838
+ value: r,
839
+ onChange: s,
840
+ type: o = "text",
841
+ required: a,
842
+ validations: i = {},
843
+ className: u = "",
844
+ labelClassName: d = "",
845
+ fieldClassName: m = "",
846
+ invalid: h = !1,
847
+ invalidLabel: c = "",
848
+ requiredLabel: b,
849
+ format: y,
850
+ isValid: v,
851
+ onKeyDown: x,
852
+ ...S
853
+ }, g) {
854
+ const { t: T } = oe(), N = b ?? T("forms.shared.required", { defaultValue: "Required" }), k = i.required ?? a, f = {
855
+ ...i,
856
+ required: k
857
+ }, p = r == null || String(r).trim().length === 0;
858
+ return /* @__PURE__ */ V("div", { className: `form-field-container gap5 ${h ? "invalid" : ""} ${u}`, children: [
859
+ t && /* @__PURE__ */ V(_, { className: `form-field-label row-left ${d}`.trim(), as: "label", size: "xxs", children: [
860
+ t,
861
+ k && /* @__PURE__ */ l(_, { className: q("form-field-required-text", p && "empty"), as: "span", children: N })
862
+ ] }),
863
+ /* @__PURE__ */ l(an, { ref: g, variant: "custom", type: o, placeholder: n, value: r, onValueChange: s, onKeyDown: x, "aria-invalid": h, format: y, isValid: v, ...f, ...S, className: `${m}` }),
864
+ h && c ? /* @__PURE__ */ l(_, { as: "p", size: "xxs", className: "form-field-warning-text", left: !0, children: c }) : null
865
+ ] });
866
+ }), ht = Ve(null);
867
+ function we() {
868
+ const e = Re(ht);
869
+ if (!e)
870
+ throw new Error("Select components must be used inside SelectRoot");
871
+ return e;
872
+ }
873
+ function mn() {
874
+ const {
875
+ variantClass: e,
876
+ className: t,
877
+ disabled: n,
878
+ required: r,
879
+ isOpen: s,
880
+ hasValue: o,
881
+ displayLabel: a,
882
+ triggerRef: i,
883
+ forwardedRef: u,
884
+ toggleOpen: d,
885
+ open: m
886
+ } = we();
887
+ return /* @__PURE__ */ V(
888
+ "button",
889
+ {
890
+ ref: (c) => {
891
+ if (i.current = c, typeof u == "function") {
892
+ u(c);
893
+ return;
894
+ }
895
+ u && (u.current = c);
896
+ },
897
+ type: "button",
898
+ className: q(
899
+ e,
900
+ t,
901
+ "form-field",
902
+ "select-trigger",
903
+ !o && "placeholder"
904
+ ),
905
+ onClick: () => {
906
+ n || d();
907
+ },
908
+ onKeyDown: (c) => {
909
+ n || ((c.key === "Enter" || c.key === " ") && (c.preventDefault(), d()), c.key === "ArrowDown" && (c.preventDefault(), m()));
910
+ },
911
+ "aria-expanded": s,
912
+ "aria-haspopup": "listbox",
913
+ "aria-controls": "select-overlay-listbox",
914
+ "aria-disabled": n,
915
+ "aria-required": r,
916
+ "aria-placeholder": o ? void 0 : a,
917
+ disabled: n,
918
+ children: [
919
+ /* @__PURE__ */ l("span", { className: "select-trigger-label", children: a }),
920
+ /* @__PURE__ */ l(on, { size: "xs", isOpen: s })
921
+ ]
922
+ }
923
+ );
924
+ }
925
+ function pt({
926
+ label: e,
927
+ selected: t = !1,
928
+ className: n = "",
929
+ mobile: r = !1,
930
+ onClick: s
931
+ }) {
932
+ return /* @__PURE__ */ l(
933
+ "button",
934
+ {
935
+ type: "button",
936
+ role: "option",
937
+ "aria-selected": t,
938
+ className: q(
939
+ r ? "sheet-option" : "select-option",
940
+ t && "is-selected",
941
+ n
942
+ ),
943
+ onClick: s,
944
+ children: /* @__PURE__ */ l(
945
+ _,
946
+ {
947
+ as: "span",
948
+ size: "sm",
949
+ className: r ? "sheet-label" : "select-option-label",
950
+ dynamic: !0,
951
+ color: t ? 1 : 3,
952
+ children: e
953
+ }
954
+ )
955
+ }
956
+ );
957
+ }
958
+ function hn() {
959
+ const {
960
+ listboxId: e,
961
+ position: t,
962
+ options: n,
963
+ overlayRef: r,
964
+ currentValue: s,
965
+ handleSelect: o,
966
+ searchable: a,
967
+ searchTerm: i,
968
+ setSearchTerm: u,
969
+ searchIcon: d,
970
+ searchLabel: m,
971
+ emptyLabel: h
972
+ } = we();
973
+ return /* @__PURE__ */ l(
974
+ "div",
975
+ {
976
+ ref: r,
977
+ className: q("select-dropdown", "is-open", t.placement === "top" && "is-top"),
978
+ style: {
979
+ left: `${t.left}px`,
980
+ top: `${t.top}px`,
981
+ width: `${t.width}px`
982
+ },
983
+ children: /* @__PURE__ */ V("div", { className: "select-dropdown-panel", children: [
984
+ a ? /* @__PURE__ */ l("div", { className: "select-searchbar-wrap", children: /* @__PURE__ */ V("div", { className: "select-searchbar", children: [
985
+ /* @__PURE__ */ l(
986
+ "input",
987
+ {
988
+ type: "text",
989
+ className: "searchbar-input form-field",
990
+ value: i,
991
+ onChange: (c) => u(c.target.value),
992
+ placeholder: m
993
+ }
994
+ ),
995
+ d ? /* @__PURE__ */ l("span", { className: "select-search-icon", children: d }) : null
996
+ ] }) }) : null,
997
+ /* @__PURE__ */ l("div", { className: "select-dropdown-list", role: "listbox", id: e, children: n.length === 0 ? /* @__PURE__ */ l(_, { as: "p", size: "xs", center: !0, className: "select-empty-state", dynamic: !0, color: 3, children: h }) : n.map((c) => {
998
+ const b = String(c.value) === String(s);
999
+ return /* @__PURE__ */ l(
1000
+ pt,
1001
+ {
1002
+ label: c.label,
1003
+ selected: b,
1004
+ className: c.className,
1005
+ onClick: () => o(c.value)
1006
+ },
1007
+ String(c.value)
1008
+ );
1009
+ }) })
1010
+ ] })
1011
+ }
1012
+ );
1013
+ }
1014
+ function pn(e) {
1015
+ return e ? Array.from(
1016
+ e.querySelectorAll(
1017
+ 'a[href], button:not([disabled]), textarea:not([disabled]), input:not([disabled]), select:not([disabled]), [tabindex]:not([tabindex="-1"])'
1018
+ )
1019
+ ).filter((t) => !t.hasAttribute("disabled") && t.getAttribute("aria-hidden") !== "true") : [];
1020
+ }
1021
+ function gn({
1022
+ enabled: e = !0,
1023
+ initialFocusRef: t,
1024
+ onEnterKeyDown: n,
1025
+ onEscapeKeyDown: r,
1026
+ restoreFocus: s = !0,
1027
+ rootRef: o,
1028
+ trapFocus: a = !1,
1029
+ useCapture: i = !1
1030
+ } = {}) {
1031
+ Q(() => {
1032
+ if (!e || typeof document > "u") return;
1033
+ const u = document.activeElement, d = o?.current, m = t?.current;
1034
+ requestAnimationFrame(() => {
1035
+ if (m?.focus) {
1036
+ m.focus();
1037
+ return;
1038
+ }
1039
+ d?.focus?.();
1040
+ });
1041
+ const h = (c) => {
1042
+ if (c.key === "Escape") {
1043
+ r?.(c);
1044
+ return;
1045
+ }
1046
+ if (c.key === "Enter") {
1047
+ n?.(c);
1048
+ return;
1049
+ }
1050
+ if (!a || c.key !== "Tab") return;
1051
+ const b = pn(o?.current);
1052
+ if (b.length === 0) {
1053
+ c.preventDefault(), o?.current?.focus?.();
1054
+ return;
1055
+ }
1056
+ const y = b[0], v = b[b.length - 1], x = document.activeElement;
1057
+ if (c.shiftKey && x === y) {
1058
+ c.preventDefault(), v.focus();
1059
+ return;
1060
+ }
1061
+ !c.shiftKey && x === v && (c.preventDefault(), y.focus());
1062
+ };
1063
+ return document.addEventListener("keydown", h, i), () => {
1064
+ document.removeEventListener("keydown", h, i), s && u?.focus && u.focus();
1065
+ };
1066
+ }, [e, t, n, r, s, o, a, i]);
1067
+ }
1068
+ function gt({
1069
+ className: e = "",
1070
+ backdropLabel: t = "",
1071
+ backdropStyle: n,
1072
+ closing: r = !1,
1073
+ centerContent: s = !0,
1074
+ initialFocusRef: o,
1075
+ onBackdropClick: a,
1076
+ onEnterKeyDown: i,
1077
+ onEscapeKeyDown: u,
1078
+ portal: d = !1,
1079
+ portalTarget: m,
1080
+ restoreFocus: h = !0,
1081
+ trapFocus: c = !1,
1082
+ useKeyboardCapture: b = !1,
1083
+ children: y,
1084
+ ...v
1085
+ }) {
1086
+ const x = ee(null);
1087
+ gn({
1088
+ initialFocusRef: o,
1089
+ onEnterKeyDown: i,
1090
+ onEscapeKeyDown: u,
1091
+ rootRef: x,
1092
+ restoreFocus: h,
1093
+ trapFocus: c,
1094
+ useCapture: b
1095
+ });
1096
+ const S = /* @__PURE__ */ V(
1097
+ "div",
1098
+ {
1099
+ ref: x,
1100
+ className: q("kosmio-overlay", r && "is-closing", s && "kosmio-overlay-centered", e),
1101
+ tabIndex: -1,
1102
+ ...v,
1103
+ children: [
1104
+ /* @__PURE__ */ l(Qt, { className: "kosmio-backdrop-animated", label: t, onClick: a, style: n }),
1105
+ /* @__PURE__ */ l("div", { className: q("kosmio-overlay-content", s && "kosmio-overlay-content-centered"), children: y })
1106
+ ]
1107
+ }
1108
+ );
1109
+ if (!d) return S;
1110
+ const g = m ?? (typeof document > "u" ? null : document.body);
1111
+ return g ? ut(S, g) : null;
1112
+ }
1113
+ const yn = '[data-no-form-drag="true"]', ce = {
1114
+ backdropFade: 0.55,
1115
+ backdropMinOpacity: 0.18,
1116
+ closeDistance: 140,
1117
+ closeOffset: 48,
1118
+ closeVelocity: 0.55
1119
+ }, be = {
1120
+ active: !1,
1121
+ engaged: !1,
1122
+ mode: null,
1123
+ source: null,
1124
+ pointerId: null,
1125
+ startX: 0,
1126
+ startY: 0,
1127
+ startTime: 0
1128
+ };
1129
+ function bn(e) {
1130
+ if (!(e instanceof HTMLElement)) return !1;
1131
+ const { overflowY: t } = window.getComputedStyle(e);
1132
+ return ["auto", "scroll", "overlay"].includes(t) && e.scrollHeight > e.clientHeight + 1;
1133
+ }
1134
+ function vn(e, t) {
1135
+ if (!(e instanceof HTMLElement) || !(t instanceof HTMLElement) || e.closest(yn)) return !1;
1136
+ let n = e;
1137
+ for (; n && n !== t; ) {
1138
+ if (bn(n) && n.scrollTop > 0) return !1;
1139
+ n = n.parentElement;
1140
+ }
1141
+ return !0;
1142
+ }
1143
+ function ve(e) {
1144
+ return e?.[0] ?? null;
1145
+ }
1146
+ function he(e, t, n) {
1147
+ const r = Number.parseFloat(e.getPropertyValue(t));
1148
+ return Number.isFinite(r) ? r : n;
1149
+ }
1150
+ function Ze(e) {
1151
+ if (!(e instanceof HTMLElement)) return ce;
1152
+ const t = window.getComputedStyle(e);
1153
+ return {
1154
+ backdropFade: he(t, "--kosmio-sheet-backdrop-drag-fade", ce.backdropFade),
1155
+ backdropMinOpacity: he(t, "--kosmio-sheet-backdrop-min-opacity", ce.backdropMinOpacity),
1156
+ closeDistance: he(t, "--kosmio-sheet-close-distance", ce.closeDistance),
1157
+ closeOffset: he(t, "--kosmio-sheet-close-offset", ce.closeOffset),
1158
+ closeVelocity: he(t, "--kosmio-sheet-close-velocity", ce.closeVelocity)
1159
+ };
1160
+ }
1161
+ function xn({
1162
+ canStartContentDrag: e = vn,
1163
+ closing: t = !1,
1164
+ containerRef: n,
1165
+ dragZoneRef: r,
1166
+ enableContentDrag: s = !0,
1167
+ isMobile: o = !1,
1168
+ onDragDismiss: a,
1169
+ onRequestClose: i,
1170
+ scrollRef: u,
1171
+ showDragHandle: d = !0
1172
+ } = {}) {
1173
+ const [m, h] = U(0), [c, b] = U(!1), [y, v] = U(!1), [x, S] = U(!1), g = ee(be), T = W(() => {
1174
+ g.current = be, b(!1), v(!1), S(!1), h(0);
1175
+ }, []), N = W(({ clientX: D, clientY: R, pointerId: O = null, mode: L, target: I, source: z }) => {
1176
+ !o || t || x || z === "content" && (!s || !e(I, n.current)) || (g.current = {
1177
+ active: !0,
1178
+ engaged: z === "handle",
1179
+ mode: L,
1180
+ source: z,
1181
+ pointerId: O,
1182
+ startX: D,
1183
+ startY: R,
1184
+ startTime: performance.now()
1185
+ }, L === "pointer" && O != null && n.current?.setPointerCapture?.(O), b(z === "handle"), v(!1), S(!1));
1186
+ }, [e, t, n, s, x, o]), k = W(({ clientX: D, clientY: R, preventDefault: O }) => {
1187
+ const L = g.current;
1188
+ if (!L.active || t || x) return;
1189
+ const I = R - L.startY, z = D - L.startX;
1190
+ if (!L.engaged) {
1191
+ if (L.source !== "handle") {
1192
+ if (I < -6 || Math.abs(z) > Math.abs(I)) {
1193
+ g.current = be, b(!1);
1194
+ return;
1195
+ }
1196
+ if (I <= 6) return;
1197
+ }
1198
+ g.current = {
1199
+ ...L,
1200
+ engaged: !0
1201
+ }, b(!0);
1202
+ }
1203
+ if (O?.(), I <= 0) {
1204
+ h(0);
1205
+ return;
1206
+ }
1207
+ Math.abs(z) > I || h(I);
1208
+ }, [t, x]), f = W(({ clientY: D, pointerId: R = null }) => {
1209
+ const O = g.current;
1210
+ if (!O.active || O.mode === "pointer" && O.pointerId !== R) return;
1211
+ O.mode === "pointer" && R != null && n.current?.releasePointerCapture?.(R), g.current = be, b(!1);
1212
+ const L = Math.max(0, D - O.startY), I = Math.max(performance.now() - O.startTime, 1), z = L / I, $ = Ze(n.current);
1213
+ if (L >= $.closeDistance || z >= $.closeVelocity) {
1214
+ S(!0), v(!1), h((n.current?.offsetHeight ?? L) + $.closeOffset);
1215
+ return;
1216
+ }
1217
+ v(!0), h(0);
1218
+ }, [n]), p = W((D, R) => {
1219
+ D.pointerType !== "touch" && N({
1220
+ clientX: D.clientX,
1221
+ clientY: D.clientY,
1222
+ pointerId: D.pointerId,
1223
+ mode: "pointer",
1224
+ target: D.target,
1225
+ source: R
1226
+ });
1227
+ }, [N]), E = W((D) => {
1228
+ const R = g.current;
1229
+ R.mode !== "pointer" || R.pointerId !== D.pointerId || k({
1230
+ clientX: D.clientX,
1231
+ clientY: D.clientY,
1232
+ preventDefault: D.cancelable ? () => D.preventDefault() : void 0
1233
+ });
1234
+ }, [k]), w = W((D) => {
1235
+ f({
1236
+ clientY: D.clientY,
1237
+ pointerId: D.pointerId
1238
+ });
1239
+ }, [f]), C = W(() => {
1240
+ if (x) {
1241
+ T(), (a ?? i)?.();
1242
+ return;
1243
+ }
1244
+ y && v(!1);
1245
+ }, [y, x, a, i, T]);
1246
+ Q(() => {
1247
+ (t || !o) && T();
1248
+ }, [t, o, T]), Q(() => {
1249
+ if (!o) return;
1250
+ const D = r.current, R = u.current, O = n.current;
1251
+ if (!D && d || !R || !O) return;
1252
+ const L = (A) => {
1253
+ const Y = ve(A.touches);
1254
+ Y && N({
1255
+ clientX: Y.clientX,
1256
+ clientY: Y.clientY,
1257
+ mode: "touch",
1258
+ target: A.target,
1259
+ source: "handle"
1260
+ });
1261
+ }, I = (A) => {
1262
+ const Y = ve(A.touches);
1263
+ Y && N({
1264
+ clientX: Y.clientX,
1265
+ clientY: Y.clientY,
1266
+ mode: "touch",
1267
+ target: A.target,
1268
+ source: "content"
1269
+ });
1270
+ }, z = (A) => {
1271
+ if (g.current.mode !== "touch") return;
1272
+ const X = ve(A.touches);
1273
+ X && k({
1274
+ clientX: X.clientX,
1275
+ clientY: X.clientY,
1276
+ preventDefault: A.cancelable ? () => A.preventDefault() : void 0
1277
+ });
1278
+ }, $ = (A) => {
1279
+ const Y = g.current;
1280
+ if (Y.mode !== "touch") return;
1281
+ const X = ve(A.changedTouches);
1282
+ f({
1283
+ clientY: X?.clientY ?? Y.startY
1284
+ });
1285
+ };
1286
+ return d && D?.addEventListener("touchstart", L, { passive: !0 }), R.addEventListener("touchstart", I, { passive: !0 }), O.addEventListener("touchmove", z, { passive: !1 }), O.addEventListener("touchend", $), O.addEventListener("touchcancel", $), () => {
1287
+ d && D?.removeEventListener("touchstart", L), R.removeEventListener("touchstart", I), O.removeEventListener("touchmove", z), O.removeEventListener("touchend", $), O.removeEventListener("touchcancel", $);
1288
+ };
1289
+ }, [
1290
+ N,
1291
+ t,
1292
+ n,
1293
+ r,
1294
+ f,
1295
+ o,
1296
+ u,
1297
+ d,
1298
+ k
1299
+ ]);
1300
+ const G = n.current?.offsetHeight ?? 1, F = Ze(n.current), P = o ? Math.min(m / G, 1) : 0, M = o && (c || y || x) ? {
1301
+ "--kosmio-overlay-backdrop-opacity": Math.max(F.backdropMinOpacity, 1 - P * F.backdropFade)
1302
+ } : void 0, K = o && (c || y || x || m > 0) ? {
1303
+ transform: `translate3d(0, ${m}px, 0)`,
1304
+ transition: c ? "none" : "transform var(--kosmio-sheet-drag-settle-duration) ease-out"
1305
+ } : void 0;
1306
+ return {
1307
+ backdropStyle: M,
1308
+ dragging: c,
1309
+ gestureClosing: x,
1310
+ handlePointerDown: p,
1311
+ handlePointerEnd: w,
1312
+ handlePointerMove: E,
1313
+ handleTransitionEnd: C,
1314
+ sheetStyle: K
1315
+ };
1316
+ }
1317
+ const Nn = "transform", kn = "kosmio-slide-up";
1318
+ function Sn(e, t) {
1319
+ if (e) {
1320
+ if (typeof e == "function") {
1321
+ e(t);
1322
+ return;
1323
+ }
1324
+ e.current = t;
1325
+ }
1326
+ }
1327
+ const Cn = te(function({
1328
+ isMobile: t = !1,
1329
+ closing: n = !1,
1330
+ className: r = "",
1331
+ backdropLabel: s = "",
1332
+ feedbackState: o = "",
1333
+ beforeScrollContent: a = null,
1334
+ showDragHandle: i = !0,
1335
+ enableContentDrag: u = !0,
1336
+ canStartContentDrag: d,
1337
+ initialFocusRef: m,
1338
+ onRequestClose: h,
1339
+ onDragDismiss: c,
1340
+ onAnimationEnd: b,
1341
+ onEscapeKeyDown: y,
1342
+ onTransitionEnd: v,
1343
+ portal: x = !1,
1344
+ portalTarget: S,
1345
+ restoreFocus: g,
1346
+ trapFocus: T,
1347
+ children: N,
1348
+ ...k
1349
+ }, f) {
1350
+ const [p, E] = U(!0), w = ee(null), C = ee(null), G = ee(null), {
1351
+ backdropStyle: F,
1352
+ dragging: P,
1353
+ gestureClosing: M,
1354
+ handlePointerDown: K,
1355
+ handlePointerEnd: D,
1356
+ handlePointerMove: R,
1357
+ handleTransitionEnd: O,
1358
+ sheetStyle: L
1359
+ } = xn({
1360
+ canStartContentDrag: d,
1361
+ closing: n,
1362
+ containerRef: w,
1363
+ dragZoneRef: C,
1364
+ enableContentDrag: u,
1365
+ isMobile: t,
1366
+ onDragDismiss: c,
1367
+ onRequestClose: h,
1368
+ scrollRef: G,
1369
+ showDragHandle: i
1370
+ }), I = (A) => {
1371
+ w.current = A, Sn(f, A);
1372
+ }, z = (A) => {
1373
+ if (A.target !== A.currentTarget || A.propertyName !== Nn) {
1374
+ v?.(A);
1375
+ return;
1376
+ }
1377
+ O(), v?.(A);
1378
+ }, $ = (A) => {
1379
+ A.target === A.currentTarget && A.animationName === kn && E(!1), b?.(A);
1380
+ };
1381
+ return Q(() => {
1382
+ n || E(!0);
1383
+ }, [n]), Q(() => {
1384
+ P && E(!1);
1385
+ }, [P]), /* @__PURE__ */ l(
1386
+ gt,
1387
+ {
1388
+ className: "kosmio-sheet-layer",
1389
+ closing: n || M,
1390
+ backdropLabel: s,
1391
+ backdropStyle: F,
1392
+ centerContent: !1,
1393
+ initialFocusRef: m,
1394
+ onBackdropClick: h,
1395
+ onEscapeKeyDown: y,
1396
+ portal: x,
1397
+ portalTarget: S,
1398
+ restoreFocus: g,
1399
+ trapFocus: T,
1400
+ children: /* @__PURE__ */ V(
1401
+ "div",
1402
+ {
1403
+ ...k,
1404
+ ref: I,
1405
+ className: q(
1406
+ "kosmio-sheet",
1407
+ r,
1408
+ p && "is-entering",
1409
+ P && "is-dragging",
1410
+ M && "is-gesture-closing",
1411
+ o && `is-feedback-${o}`
1412
+ ),
1413
+ onClick: (A) => A.stopPropagation(),
1414
+ onAnimationEnd: $,
1415
+ onTransitionEnd: z,
1416
+ onPointerMove: R,
1417
+ onPointerUp: D,
1418
+ onPointerCancel: D,
1419
+ style: L,
1420
+ children: [
1421
+ o ? /* @__PURE__ */ l("div", { className: q("kosmio-sheet-feedback", `is-${o}`), "aria-hidden": "true" }) : null,
1422
+ a,
1423
+ i && t ? /* @__PURE__ */ l(
1424
+ "div",
1425
+ {
1426
+ className: "kosmio-sheet-drag-zone",
1427
+ onPointerDown: (A) => K(A, "handle"),
1428
+ ref: C,
1429
+ role: "presentation",
1430
+ children: /* @__PURE__ */ l("div", { className: "kosmio-sheet-drag-handle", "aria-hidden": "true" })
1431
+ }
1432
+ ) : null,
1433
+ /* @__PURE__ */ l("div", { className: "kosmio-sheet-scroll", onPointerDown: (A) => K(A, "content"), ref: G, children: N })
1434
+ ]
1435
+ }
1436
+ )
1437
+ }
1438
+ );
1439
+ });
1440
+ function Tn() {
1441
+ const {
1442
+ isClosing: e,
1443
+ isMobile: t,
1444
+ listboxId: n,
1445
+ closeImmediately: r,
1446
+ requestClose: s,
1447
+ options: o,
1448
+ overlayRef: a,
1449
+ currentValue: i,
1450
+ handleSelect: u,
1451
+ placeholder: d,
1452
+ displayLabel: m,
1453
+ searchable: h,
1454
+ searchTerm: c,
1455
+ setSearchTerm: b,
1456
+ searchIcon: y,
1457
+ searchLabel: v,
1458
+ emptyLabel: x,
1459
+ closeLabel: S
1460
+ } = we(), g = d ?? m;
1461
+ return /* @__PURE__ */ l(
1462
+ Cn,
1463
+ {
1464
+ ref: a,
1465
+ isMobile: t,
1466
+ closing: e,
1467
+ className: "select-sheet",
1468
+ backdropLabel: S,
1469
+ onRequestClose: s,
1470
+ onDragDismiss: r,
1471
+ portal: !0,
1472
+ role: "dialog",
1473
+ "aria-modal": "true",
1474
+ "aria-labelledby": `${n}-title`,
1475
+ trapFocus: !0,
1476
+ children: /* @__PURE__ */ V("div", { className: "select-sheet-body", children: [
1477
+ /* @__PURE__ */ l("div", { className: "select-sheet-header", children: /* @__PURE__ */ l(_, { as: "p", size: "sm", dynamic: !0, color: 1, id: `${n}-title`, children: g }) }),
1478
+ h ? /* @__PURE__ */ l("div", { className: "select-searchbar-wrap select-sheet-searchbar-wrap", children: /* @__PURE__ */ V("div", { className: "select-searchbar", children: [
1479
+ /* @__PURE__ */ l(
1480
+ "input",
1481
+ {
1482
+ type: "text",
1483
+ className: "searchbar-input form-field",
1484
+ value: c,
1485
+ onChange: (T) => b(T.target.value),
1486
+ placeholder: v
1487
+ }
1488
+ ),
1489
+ y ? /* @__PURE__ */ l("span", { className: "select-search-icon", children: y }) : null
1490
+ ] }) }) : null,
1491
+ /* @__PURE__ */ l("div", { className: "select-sheet-list", role: "listbox", id: n, children: o.length === 0 ? /* @__PURE__ */ l(_, { as: "p", size: "xs", center: !0, className: "select-empty-state", dynamic: !0, color: 3, children: x }) : o.map((T) => {
1492
+ const N = String(T.value) === String(i);
1493
+ return /* @__PURE__ */ l(
1494
+ pt,
1495
+ {
1496
+ label: T.label,
1497
+ selected: N,
1498
+ className: T.className,
1499
+ mobile: !0,
1500
+ onClick: () => u(T.value)
1501
+ },
1502
+ String(T.value)
1503
+ );
1504
+ }) })
1505
+ ] })
1506
+ }
1507
+ );
1508
+ }
1509
+ function En() {
1510
+ const { isOpen: e, isMobile: t } = we();
1511
+ return e ? t ? /* @__PURE__ */ l(Tn, {}) : typeof document > "u" ? null : ut(/* @__PURE__ */ l(hn, {}), document.body) : null;
1512
+ }
1513
+ const wn = {
1514
+ plain: "",
1515
+ custom: "customSelect"
1516
+ }, An = "(max-width: 768px)", xe = 5, et = 12, De = 230, Ln = 150;
1517
+ function In(e) {
1518
+ return typeof e == "object" && e !== null ? {
1519
+ value: e.value,
1520
+ label: e.label,
1521
+ className: e.className ?? ""
1522
+ } : {
1523
+ value: e,
1524
+ label: e,
1525
+ className: ""
1526
+ };
1527
+ }
1528
+ const On = te(function({
1529
+ variant: t = "plain",
1530
+ className: n = "",
1531
+ options: r = [],
1532
+ searchable: s = !1,
1533
+ placeholder: o,
1534
+ value: a,
1535
+ defaultValue: i = "",
1536
+ disabled: u = !1,
1537
+ required: d = !1,
1538
+ onChange: m,
1539
+ onValueChange: h,
1540
+ name: c,
1541
+ searchIcon: b = null,
1542
+ searchLabel: y,
1543
+ emptyLabel: v,
1544
+ closeLabel: x,
1545
+ selectOptionLabel: S
1546
+ }, g) {
1547
+ const { t: T } = oe(), N = y ?? T("common.actions.search", { defaultValue: "Search" }), k = v ?? T("common.messages.info.noResultMessage", { defaultValue: "No results" }), f = x ?? T("common.actions.close", { defaultValue: "Close" }), p = S ?? T("forms.shared.selectOption", { defaultValue: "Select option" }), E = wn[t] ?? t, w = ee(null), C = a !== void 0, [G, F] = U(i), [P, M] = U(!1), [K, D] = U(!1), [R, O] = U(!1), [L, I] = U({
1548
+ left: 0,
1549
+ top: 0,
1550
+ width: 0,
1551
+ placement: "bottom",
1552
+ maxHeight: De
1553
+ }), [z, $] = U(""), A = _e(), Y = ee(null), X = ee(null), ne = J(() => r.map(In), [r]), se = J(() => {
1554
+ const B = z.trim().toLowerCase();
1555
+ return !s || B.length === 0 ? ne : ne.filter(
1556
+ (j) => String(j.label).toLowerCase().includes(B)
1557
+ );
1558
+ }, [ne, z, s]), ae = C ? a : G, ge = o != null && String(o).trim() !== "" ? o : p, ie = ne.find(
1559
+ (B) => String(B.value) === String(ae)
1560
+ )?.label ?? ge, de = ae != null && String(ae).trim() !== "";
1561
+ Q(() => () => {
1562
+ X.current && window.clearTimeout(X.current);
1563
+ }, []), Q(() => {
1564
+ const B = window.matchMedia(An), j = () => O(B.matches);
1565
+ return j(), typeof B.addEventListener == "function" ? (B.addEventListener("change", j), () => B.removeEventListener("change", j)) : (B.addListener(j), () => B.removeListener(j));
1566
+ }, []), Q(() => {
1567
+ if (!P || R)
1568
+ return;
1569
+ const B = () => {
1570
+ const j = w.current?.getBoundingClientRect();
1571
+ if (!j)
1572
+ return;
1573
+ const re = window.innerHeight, me = Math.max(0, j.top - et - xe), Le = Math.max(
1574
+ 0,
1575
+ re - j.bottom - et - xe
1576
+ ), Ie = Le < De && me > Le, St = Ie ? "top" : "bottom", Ct = Math.max(
1577
+ 120,
1578
+ Math.min(De, Ie ? me : Le)
1579
+ );
1580
+ I({
1581
+ left: j.left,
1582
+ top: Ie ? j.top - xe : j.bottom + xe,
1583
+ width: j.width,
1584
+ placement: St,
1585
+ maxHeight: Ct
1586
+ });
1587
+ };
1588
+ return B(), window.addEventListener("resize", B), window.addEventListener("scroll", B, !0), () => {
1589
+ window.removeEventListener("resize", B), window.removeEventListener("scroll", B, !0);
1590
+ };
1591
+ }, [R, P]), Q(() => {
1592
+ if (!P || K) {
1593
+ $("");
1594
+ return;
1595
+ }
1596
+ const B = (re) => {
1597
+ const me = re.target;
1598
+ R && me instanceof Element && me.closest(".select-sheet") || w.current?.contains(re.target) || Y.current?.contains(re.target) || le();
1599
+ }, j = (re) => {
1600
+ re.key === "Escape" && (le(), w.current?.focus());
1601
+ };
1602
+ return document.addEventListener("mousedown", B), document.addEventListener("touchstart", B), document.addEventListener("keydown", j), () => {
1603
+ document.removeEventListener("mousedown", B), document.removeEventListener("touchstart", B), document.removeEventListener("keydown", j);
1604
+ };
1605
+ }, [K, R, P, A]);
1606
+ const Ae = (B) => {
1607
+ C || F(B);
1608
+ const j = {
1609
+ target: { name: c, value: B },
1610
+ currentTarget: { name: c, value: B }
1611
+ };
1612
+ m?.(j), h?.(B, j);
1613
+ }, fe = () => {
1614
+ X.current && (window.clearTimeout(X.current), X.current = null), D(!1), M(!1);
1615
+ }, le = () => {
1616
+ if (!(!P || K)) {
1617
+ if (!R) {
1618
+ fe();
1619
+ return;
1620
+ }
1621
+ D(!0), X.current = window.setTimeout(() => {
1622
+ X.current = null, fe();
1623
+ }, Ln);
1624
+ }
1625
+ }, ye = () => {
1626
+ X.current && (window.clearTimeout(X.current), X.current = null), D(!1), M(!0);
1627
+ }, Z = {
1628
+ className: n,
1629
+ closeImmediately: fe,
1630
+ currentValue: ae,
1631
+ disabled: u,
1632
+ displayLabel: ie,
1633
+ filteredOptions: se,
1634
+ forwardedRef: g,
1635
+ handleSelect: (B) => {
1636
+ Ae(B), le(), w.current?.focus();
1637
+ },
1638
+ hasValue: de,
1639
+ isClosing: K,
1640
+ isMobile: R,
1641
+ isOpen: P,
1642
+ listboxId: A,
1643
+ open: ye,
1644
+ options: se,
1645
+ overlayRef: Y,
1646
+ placeholder: ge,
1647
+ position: L,
1648
+ requestClose: le,
1649
+ required: d,
1650
+ searchIcon: b,
1651
+ searchLabel: N,
1652
+ searchable: s,
1653
+ searchTerm: z,
1654
+ setSearchTerm: $,
1655
+ emptyLabel: k,
1656
+ closeLabel: f,
1657
+ toggleOpen: () => {
1658
+ if (P) {
1659
+ le();
1660
+ return;
1661
+ }
1662
+ ye();
1663
+ },
1664
+ triggerRef: w,
1665
+ variantClass: E
1666
+ };
1667
+ return /* @__PURE__ */ l(ht.Provider, { value: Z, children: /* @__PURE__ */ V("div", { className: q("select-field", P && "is-open", R && "is-mobile"), children: [
1668
+ /* @__PURE__ */ l(mn, {}),
1669
+ /* @__PURE__ */ l(En, {})
1670
+ ] }) });
1671
+ });
1672
+ function Pe({
1673
+ label: e,
1674
+ placeholder: t,
1675
+ value: n,
1676
+ defaultValue: r = "",
1677
+ onChange: s,
1678
+ options: o = [],
1679
+ searchable: a = !1,
1680
+ required: i = !1,
1681
+ className: u = "",
1682
+ labelClassName: d = "",
1683
+ fieldClassName: m = "",
1684
+ requiredLabel: h,
1685
+ selectOptionLabel: c,
1686
+ searchIcon: b = null,
1687
+ searchLabel: y,
1688
+ emptyLabel: v,
1689
+ closeLabel: x
1690
+ }) {
1691
+ const { t: S } = oe(), g = h ?? S("forms.shared.required", { defaultValue: "Required" }), T = c ?? S("forms.shared.selectOption", { defaultValue: "Select option" }), N = y ?? S("common.actions.search", { defaultValue: "Search" }), k = v ?? S("common.messages.info.noResultMessage", { defaultValue: "No results" }), f = x ?? S("common.actions.close", { defaultValue: "Close" }), p = n ?? r, E = t ?? T, w = p == null || String(p).trim().length === 0;
1692
+ return /* @__PURE__ */ V("div", { className: `form-field-container ${u}`.trim(), children: [
1693
+ e && /* @__PURE__ */ V(_, { className: `form-field-label ${d}`.trim(), as: "label", size: "xxs", children: [
1694
+ e,
1695
+ i && /* @__PURE__ */ l(_, { className: q("form-field-required-text", w && "empty"), as: "span", children: g })
1696
+ ] }),
1697
+ /* @__PURE__ */ l(On, { variant: "custom", value: p, onValueChange: s, required: i, placeholder: E, options: o, searchable: a, className: `${m} ${p ? "" : "placeholder"}`, searchIcon: b, searchLabel: N, emptyLabel: k, closeLabel: f, selectOptionLabel: T })
1698
+ ] });
1699
+ }
1700
+ function yt({ children: e, text: t, color: n, className: r = "", ...s }) {
1701
+ const o = e ?? t;
1702
+ return /* @__PURE__ */ l(
1703
+ _,
1704
+ {
1705
+ as: "span",
1706
+ className: `kosmio-tag tag ${r}`.trim(),
1707
+ size: "xxs",
1708
+ style: n ? { "--kosmio-tag-color": n, "--tag-color": n } : void 0,
1709
+ ...s,
1710
+ children: o
1711
+ }
1712
+ );
1713
+ }
1714
+ function Vr({ children: e, text: t, color: n = "#5a95ad", className: r = "", ...s }) {
1715
+ return /* @__PURE__ */ l(yt, { color: n, className: `color-tag text-inline ${r}`.trim(), ...s, children: e ?? t });
1716
+ }
1717
+ const Dn = (e) => /* @__PURE__ */ l(_, { className: "tag generatorInput-chip", as: "p", size: "sm", children: e }), zn = (e) => e === "Backspace" || e === "Delete", tt = (e, t, n) => typeof e == "function" ? e(t, n) : Be(e) ? lt(e, {
1718
+ text: t,
1719
+ index: n
1720
+ }) : Dn(t);
1721
+ function $n({
1722
+ label: e,
1723
+ placeholder: t = "",
1724
+ value: n,
1725
+ defaultValue: r = [],
1726
+ onChange: s,
1727
+ onGeneratedChange: o,
1728
+ component: a = /* @__PURE__ */ l(yt, {}),
1729
+ className: i = "",
1730
+ labelClassName: u = "",
1731
+ fieldClassName: d = "",
1732
+ inputClassName: m = "",
1733
+ disabled: h = !1,
1734
+ onKeyDown: c,
1735
+ ...b
1736
+ }) {
1737
+ const [y, v] = U(""), [x, S] = U(() => Array.isArray(r) ? r : []), g = ee(null), T = Array.isArray(n), N = T ? n : x, k = (C) => {
1738
+ T || S(C), s?.(C), o?.({
1739
+ texts: C,
1740
+ components: C.map((G, F) => tt(a, G, F))
1741
+ });
1742
+ }, f = () => {
1743
+ if (h) return;
1744
+ const C = y.trim();
1745
+ C && (k([...N, C]), v(""));
1746
+ }, p = () => {
1747
+ h || N.length === 0 || k(N.slice(0, -1));
1748
+ }, E = J(() => N.map((C, G) => {
1749
+ const F = tt(a, C, G), P = `${C}-${G}`;
1750
+ return typeof F == "string" || typeof F == "number" ? /* @__PURE__ */ l(_, { className: "tag generatorInput-chip", as: "span", size: "xxs", children: String(F) }, P) : /* @__PURE__ */ l(Et, { children: F }, P);
1751
+ }), [N, a]), w = (C) => {
1752
+ C.key === "Enter" ? (C.preventDefault(), f()) : zn(C.key) && y.length === 0 && (C.preventDefault(), p()), c?.(C);
1753
+ };
1754
+ return /* @__PURE__ */ V("div", { className: q("form-field-container gap5", i), children: [
1755
+ e && /* @__PURE__ */ l(_, { className: q("form-field-label row-left", u), as: "label", size: "xxs", children: e }),
1756
+ /* @__PURE__ */ V("div", { className: q("generatorInput-container form-field", d, h && "generatorInput-disabled"), onMouseDown: (C) => {
1757
+ C.target !== g.current && C.preventDefault(), g.current?.focus();
1758
+ }, children: [
1759
+ E,
1760
+ /* @__PURE__ */ l("input", { ref: g, type: "text", value: y, placeholder: N.length === 0 ? t : "", onChange: (C) => v(C.target.value), onKeyDown: w, className: q("generatorInput-input", m), disabled: h, ...b })
1761
+ ] })
1762
+ ] });
1763
+ }
1764
+ const Te = "__default_group__";
1765
+ function nt(e) {
1766
+ return String(e ?? "").toLowerCase().trim();
1767
+ }
1768
+ function Me(e, t) {
1769
+ const n = Number(e);
1770
+ return Number.isFinite(n) ? n : t;
1771
+ }
1772
+ function Ye(e = {}) {
1773
+ return e?.params && typeof e.params == "object" ? e.params : e?.param && typeof e.param == "object" ? e.param : {};
1774
+ }
1775
+ function Fn(e = {}, t = Number.MAX_SAFE_INTEGER) {
1776
+ const n = Ye(e), r = n.group ?? e.group;
1777
+ if (typeof r == "string" && r.trim())
1778
+ return {
1779
+ name: r.trim(),
1780
+ order: Me(n.groupIndex ?? e.groupIndex, t)
1781
+ };
1782
+ if (r && typeof r == "object") {
1783
+ const s = r.name ?? r.key ?? r.id;
1784
+ return {
1785
+ name: typeof s == "string" && s.trim() ? s.trim() : Te,
1786
+ order: Me(r.index, t)
1787
+ };
1788
+ }
1789
+ return {
1790
+ name: Te,
1791
+ order: t
1792
+ };
1793
+ }
1794
+ function Pn(e) {
1795
+ if (e == null || e === "") return "";
1796
+ if (typeof e == "string") {
1797
+ const t = e.trim();
1798
+ if (!t) return "";
1799
+ if (/^\d{4}-\d{2}-\d{2}/.test(t)) return t.slice(0, 10);
1800
+ const n = new Date(t);
1801
+ return Number.isNaN(n.getTime()) ? t : [
1802
+ n.getFullYear(),
1803
+ String(n.getMonth() + 1).padStart(2, "0"),
1804
+ String(n.getDate()).padStart(2, "0")
1805
+ ].join("-");
1806
+ }
1807
+ return e instanceof Date && !Number.isNaN(e.getTime()) ? [
1808
+ e.getFullYear(),
1809
+ String(e.getMonth() + 1).padStart(2, "0"),
1810
+ String(e.getDate()).padStart(2, "0")
1811
+ ].join("-") : "";
1812
+ }
1813
+ function Mn(e = {}) {
1814
+ const t = Ye(e);
1815
+ return {
1816
+ values: t.enum ?? e.enum ?? [],
1817
+ i18nPath: t.enumI18nPath ?? e.enumI18nPath ?? t.enumPath ?? e.enumPath ?? null
1818
+ };
1819
+ }
1820
+ function Rn(e, t) {
1821
+ return Array.isArray(e.values) ? e.values.map((n) => {
1822
+ if (n && typeof n == "object") {
1823
+ const a = n.value ?? n.id ?? n.key;
1824
+ if (a == null) return null;
1825
+ const i = e.i18nPath && n.label == null ? t(`${e.i18nPath}.${a}`) : null;
1826
+ return {
1827
+ ...n,
1828
+ value: String(a),
1829
+ label: n.label ?? (i === `${e.i18nPath}.${a}` ? String(a) : i)
1830
+ };
1831
+ }
1832
+ const r = String(n ?? "");
1833
+ if (!r) return null;
1834
+ const s = e.i18nPath != null ? t(`${e.i18nPath}.${r}`) : r, o = `${e.i18nPath}.${r}`;
1835
+ return {
1836
+ value: r,
1837
+ label: s === o ? r : s
1838
+ };
1839
+ }).filter(Boolean) : [];
1840
+ }
1841
+ function Br({
1842
+ modelProperties: e,
1843
+ form: t,
1844
+ onChange: n,
1845
+ optionsMap: r = {},
1846
+ customRenderers: s = {},
1847
+ onlyFields: o = null,
1848
+ mode: a = "create",
1849
+ i18nPath: i = null,
1850
+ groupI18nPath: u = null
1851
+ }) {
1852
+ const { t: d } = oe(), m = e?.fields ?? {}, h = {
1853
+ requiredLabel: d("forms.shared.required"),
1854
+ selectOptionLabel: d("forms.shared.selectOption"),
1855
+ searchLabel: d("common.actions.search"),
1856
+ emptyLabel: d("common.messages.info.noResultMessage"),
1857
+ closeLabel: d("common.actions.close")
1858
+ }, c = (f) => a === "edit" ? f.editable : f.writable, b = (f) => {
1859
+ if (!i) return f;
1860
+ const p = `${i}.${f}`, E = d(p);
1861
+ return E === p ? f : E;
1862
+ }, y = (f) => {
1863
+ if (!f || f === Te) return null;
1864
+ if (!u) return f;
1865
+ const p = `${u}.${f}`, E = d(p);
1866
+ return E === p ? f : E;
1867
+ }, v = (f, p, E) => {
1868
+ const w = nt(E);
1869
+ if (w === "number") {
1870
+ const C = p === "" || p == null ? null : Number(p);
1871
+ n(f, Number.isNaN(C) ? null : C);
1872
+ return;
1873
+ }
1874
+ if (w === "boolean" || w === "bool") {
1875
+ n(f, !!p);
1876
+ return;
1877
+ }
1878
+ n(f, p);
1879
+ }, x = (f) => f.iconName ? /* @__PURE__ */ l(mt, { name: f.iconName, alt: f.label, variant: f.iconVariant, size: f.iconSize ?? "xl" }) : null, S = Object.entries(m).map(([f, p], E) => ({
1880
+ name: f,
1881
+ meta: p,
1882
+ position: E
1883
+ })).filter(({ name: f, meta: p }) => !(!c(p) || o && !o.includes(f))).map((f) => {
1884
+ const p = Ye(f.meta), E = Fn(f.meta, f.position);
1885
+ return {
1886
+ ...f,
1887
+ fieldIndex: Me(p.index ?? f.meta?.index, f.position),
1888
+ groupName: E.name,
1889
+ groupIndex: E.order
1890
+ };
1891
+ }).sort((f, p) => f.groupIndex !== p.groupIndex ? f.groupIndex - p.groupIndex : f.groupName !== p.groupName ? String(f.groupName).localeCompare(String(p.groupName)) : f.fieldIndex !== p.fieldIndex ? f.fieldIndex - p.fieldIndex : f.position - p.position), g = [], T = /* @__PURE__ */ new Map();
1892
+ for (const f of S) {
1893
+ const p = String(f.groupName);
1894
+ if (!T.has(p)) {
1895
+ const w = {
1896
+ key: p,
1897
+ name: f.groupName,
1898
+ index: f.groupIndex,
1899
+ fields: []
1900
+ };
1901
+ T.set(p, w), g.push(w);
1902
+ }
1903
+ const E = T.get(p);
1904
+ E.index = Math.min(E.index, f.groupIndex), E.fields.push(f);
1905
+ }
1906
+ const N = g.some((f) => f.name !== Te), k = ({ name: f, meta: p }) => {
1907
+ const E = t?.[f], w = nt(p?.type), C = b(f), G = Mn(p), F = Rn(G, d), P = Array.isArray(r[f]) && r[f].length > 0 ? r[f] : F;
1908
+ return s[f] ? /* @__PURE__ */ l("div", { children: s[f]({
1909
+ value: E,
1910
+ onChange: (M) => n(f, M),
1911
+ meta: p,
1912
+ name: f,
1913
+ label: C
1914
+ }) }, f) : w === "string" || w === "number" || w === "date" ? /* @__PURE__ */ l(
1915
+ fn,
1916
+ {
1917
+ label: C,
1918
+ placeholder: C,
1919
+ type: w === "string" ? void 0 : w,
1920
+ value: w === "date" ? Pn(E) : E ?? "",
1921
+ required: p.required,
1922
+ requiredLabel: h.requiredLabel,
1923
+ onChange: (M) => v(f, M, w)
1924
+ },
1925
+ f
1926
+ ) : w === "boolean" || w === "bool" ? /* @__PURE__ */ V(_, { className: "row-left", as: "label", children: [
1927
+ /* @__PURE__ */ l("input", { type: "checkbox", checked: !!E, onChange: (M) => v(f, M.target.checked, w) }),
1928
+ C
1929
+ ] }, f) : w.endsWith("[]") ? /* @__PURE__ */ l(
1930
+ $n,
1931
+ {
1932
+ label: C,
1933
+ placeholder: C,
1934
+ value: Array.isArray(E) ? E : [],
1935
+ onChange: (M) => n(f, M),
1936
+ component: (M, K) => /* @__PURE__ */ l(_, { className: "tag", as: "p", children: M }, `${M}-${K}`)
1937
+ },
1938
+ f
1939
+ ) : w === "object" ? /* @__PURE__ */ l(
1940
+ Pe,
1941
+ {
1942
+ label: C,
1943
+ placeholder: C,
1944
+ options: r[f] || [],
1945
+ value: E ?? "",
1946
+ required: p.required,
1947
+ onChange: (M) => n(f, M),
1948
+ searchable: !0,
1949
+ ...h
1950
+ },
1951
+ f
1952
+ ) : w === "enum" ? F.length > 6 ? /* @__PURE__ */ l(
1953
+ Pe,
1954
+ {
1955
+ label: C,
1956
+ placeholder: C,
1957
+ options: F,
1958
+ value: E ?? "",
1959
+ required: p.required,
1960
+ onChange: (M) => n(f, M),
1961
+ searchable: !0,
1962
+ ...h
1963
+ },
1964
+ f
1965
+ ) : /* @__PURE__ */ V("div", { className: "column-left gap5", children: [
1966
+ C && /* @__PURE__ */ V(_, { className: "form-field-label row-left", as: "label", size: "xxs", children: [
1967
+ C,
1968
+ p.required && /* @__PURE__ */ l(_, { className: "form-field-required-text", as: "span", children: d("forms.shared.required") })
1969
+ ] }),
1970
+ /* @__PURE__ */ l(
1971
+ dn,
1972
+ {
1973
+ enumValues: P,
1974
+ selectedValue: E ?? "",
1975
+ onValueChange: (M) => n(f, M),
1976
+ ariaLabel: C,
1977
+ className: "form-enum-selector",
1978
+ renderIcon: x
1979
+ }
1980
+ )
1981
+ ] }, f) : null;
1982
+ };
1983
+ return N ? /* @__PURE__ */ l("div", { className: "full-view column-left gap20", children: g.map((f) => {
1984
+ const p = y(f.name);
1985
+ return /* @__PURE__ */ V("div", { className: "form-section", children: [
1986
+ p && /* @__PURE__ */ l(_, { as: "p", size: "xxs", children: p }),
1987
+ /* @__PURE__ */ l("div", { className: "section-fields", children: f.fields.map(k) })
1988
+ ] }, f.key);
1989
+ }) }) : /* @__PURE__ */ l("div", { className: "column-left gap10 form-section", children: S.map(k) });
1990
+ }
1991
+ function _r({ className: e = "", ...t }) {
1992
+ return /* @__PURE__ */ l("div", { className: `kosmio-loader ${e}`.trim(), role: "status", ...t });
1993
+ }
1994
+ function qr({
1995
+ children: e,
1996
+ restoreFocus: t = !0,
1997
+ role: n = "dialog",
1998
+ trapFocus: r = !0,
1999
+ ...s
2000
+ }) {
2001
+ return /* @__PURE__ */ l(gt, { ...s, "aria-modal": "true", restoreFocus: t, role: n, trapFocus: r, children: e });
2002
+ }
2003
+ function Yr({
2004
+ children: e,
2005
+ className: t = "full-view flex column-left gap20",
2006
+ formLauncher: n,
2007
+ showOperationsShortcut: r = !1,
2008
+ showContentCard: s = !0,
2009
+ fullsize: o = !1
2010
+ }) {
2011
+ const { clearFormLauncher: a, setFormLauncher: i, setShowOperationsShortcut: u } = it();
2012
+ return Q(() => {
2013
+ if (n !== void 0)
2014
+ return n ? i(n) : a(), () => a();
2015
+ }, [a, n, i]), Q(() => (u(r), () => u(!1)), [u, r]), /* @__PURE__ */ l("main", { className: q("page page-container", o && "fullsize", s && "page-content", t), children: e });
2016
+ }
2017
+ const Vn = {
2018
+ plain: "searchbar",
2019
+ full: "full-w searchbar"
2020
+ }, rt = te(function({
2021
+ variant: t = "full",
2022
+ className: n = "",
2023
+ placeholder: r,
2024
+ value: s,
2025
+ onChange: o,
2026
+ onValueChange: a,
2027
+ onSearch: i,
2028
+ onKeyDown: u,
2029
+ searchButtonType: d = "button",
2030
+ searchButtonLabel: m,
2031
+ searchIcon: h = null,
2032
+ inputRef: c,
2033
+ ...b
2034
+ }, y) {
2035
+ const { t: v } = oe(), x = r ?? v("common.actions.search", { defaultValue: "Search" }), S = Vn[t] ?? t, g = (N) => {
2036
+ o?.(N), a?.(N.target.value, N);
2037
+ }, T = () => {
2038
+ i?.(s ?? "");
2039
+ };
2040
+ return /* @__PURE__ */ V("div", { ref: y, className: q(S, n, "pointer"), children: [
2041
+ /* @__PURE__ */ l(
2042
+ "input",
2043
+ {
2044
+ ref: c,
2045
+ type: "text",
2046
+ className: "searchbar-input form-field",
2047
+ placeholder: x,
2048
+ value: s,
2049
+ onChange: g,
2050
+ onKeyDown: (N) => {
2051
+ N.key === "Enter" && (N.preventDefault(), i?.(N.currentTarget.value)), u?.(N);
2052
+ },
2053
+ ...b
2054
+ }
2055
+ ),
2056
+ /* @__PURE__ */ l(
2057
+ "button",
2058
+ {
2059
+ type: d,
2060
+ className: "searchbar-button",
2061
+ onClick: T,
2062
+ "aria-label": m || x,
2063
+ children: h
2064
+ }
2065
+ )
2066
+ ] });
2067
+ });
2068
+ function ze(e = "") {
2069
+ if (!e) return "/";
2070
+ const t = e.trim();
2071
+ return t === "/" ? "/" : t.replace(/\/+$/, "") || "/";
2072
+ }
2073
+ class Ee {
2074
+ constructor({
2075
+ id: t,
2076
+ name: n,
2077
+ label: r,
2078
+ url: s,
2079
+ to: o,
2080
+ path: a,
2081
+ routeKey: i,
2082
+ activeRoutes: u,
2083
+ icon: d,
2084
+ iconSelected: m,
2085
+ iconName: h,
2086
+ iconSelectedName: c,
2087
+ badge: b,
2088
+ className: y,
2089
+ active: v,
2090
+ isActive: x,
2091
+ onClick: S
2092
+ } = {}) {
2093
+ this.id = t ?? o ?? s ?? a ?? i ?? n, this.name = n, this.label = r ?? n, this.url = s, this.to = o ?? s, this.path = a, this.routeKey = i, this.activeRoutes = u ?? (i ? [i] : []), this.icon = d, this.iconSelected = m, this.iconName = h, this.iconSelectedName = c, this.badge = b, this.className = y, this.active = v, this.isActive = x, this.onClick = S;
2094
+ }
2095
+ matches(t) {
2096
+ return typeof this.active == "boolean" ? this.active : typeof this.isActive == "function" ? !!this.isActive(ze(t), this) : this.path ? ze(this.path) === ze(t) : !1;
2097
+ }
2098
+ static from(t = {}) {
2099
+ return t instanceof Ee ? t : new Ee(t);
2100
+ }
2101
+ }
2102
+ function Bn(e = "") {
2103
+ if (!e) return "/";
2104
+ const t = e.trim();
2105
+ return t === "/" ? "/" : t.replace(/\/+$/, "") || "/";
2106
+ }
2107
+ function _n(e) {
2108
+ return e || (typeof globalThis < "u" && globalThis.location?.pathname ? globalThis.location.pathname : "/");
2109
+ }
2110
+ function Hr({
2111
+ navItems: e = [],
2112
+ NavItemComponent: t,
2113
+ className: n = "",
2114
+ pathname: r
2115
+ }) {
2116
+ const s = Bn(_n(r));
2117
+ return t ? /* @__PURE__ */ l("nav", { className: n, children: e.map((o, a) => {
2118
+ const i = Ee.from(o), u = i.matches(s);
2119
+ return /* @__PURE__ */ l("div", { className: "full-w", children: /* @__PURE__ */ l(t, { navItem: i, active: u }) }, i.id ?? a);
2120
+ }) }) : null;
2121
+ }
2122
+ function Gr(e, t) {
2123
+ return { color: e, size: t };
2124
+ }
2125
+ function Xr(e, t, n, r, s) {
2126
+ return { fontSize: e, fontColor: t, weight: n, lineHeight: r, as: s };
2127
+ }
2128
+ function jr(e, t, n, r, s) {
2129
+ return {
2130
+ borderStyle: e,
2131
+ typoStyle: t,
2132
+ backgroundColor: n,
2133
+ padding: r,
2134
+ radii: s
2135
+ };
2136
+ }
2137
+ function qn({ active: e, direction: t, sortAscIcon: n, sortDescIcon: r }) {
2138
+ return e ? t === "asc" ? n ?? /* @__PURE__ */ l("span", { className: "sort-icon sort-icon-asc", "aria-hidden": "true" }) : r ?? /* @__PURE__ */ l("span", { className: "sort-icon sort-icon-desc", "aria-hidden": "true" }) : null;
2139
+ }
2140
+ function Yn({ columns: e, sortConfig: t, requestSort: n, sortAscIcon: r, sortDescIcon: s }) {
2141
+ return /* @__PURE__ */ l("thead", { children: /* @__PURE__ */ l("tr", { children: e.map((o) => {
2142
+ const a = t.key === o.key, i = o.headerClassName ?? o.className ?? "";
2143
+ return /* @__PURE__ */ l(
2144
+ "th",
2145
+ {
2146
+ onClick: () => n(o.key, o.sortable),
2147
+ className: `${o.sortable ? "th-sortable" : ""} ${i}`.trim(),
2148
+ style: {
2149
+ cursor: o.sortable ? "pointer" : "default",
2150
+ width: o.width || "auto"
2151
+ },
2152
+ children: /* @__PURE__ */ V(_, { size: "md", className: "row gap5", as: "span", color: 1, dynamic: !1, children: [
2153
+ o.header,
2154
+ /* @__PURE__ */ l(
2155
+ qn,
2156
+ {
2157
+ active: a,
2158
+ direction: t.direction,
2159
+ sortAscIcon: r,
2160
+ sortDescIcon: s
2161
+ }
2162
+ )
2163
+ ] })
2164
+ },
2165
+ o.key
2166
+ );
2167
+ }) }) });
2168
+ }
2169
+ function bt({ icon: e = null }) {
2170
+ return /* @__PURE__ */ l("div", { className: "flex-center", children: e ?? /* @__PURE__ */ l("span", { className: "table-empty-cell-icon", "aria-hidden": "true" }) });
2171
+ }
2172
+ function Hn({ row: e, getValue: t, renderEmpty: n = /* @__PURE__ */ l(bt, {}) }) {
2173
+ const r = t(e);
2174
+ return r == null || r === "" ? n : /* @__PURE__ */ l("div", { className: "full-w flex-center gap10 overflow-x-none", children: /* @__PURE__ */ l(_, { as: "p", size: "sm", color: 1, dynamic: !0, className: "text-inline", children: r }) });
2175
+ }
2176
+ function Wr({ row: e, getIconName: t, getIconSrc: n, getAlt: r, getValue: s, renderIcon: o, size: a = "xmd" }) {
2177
+ const i = t?.(e), u = i ? null : n?.(e), d = r?.(e) ?? "";
2178
+ return /* @__PURE__ */ V("div", { className: "full-w flex gap10", children: [
2179
+ i && typeof o == "function" ? o({ name: i, alt: d, size: a, row: e }) : null,
2180
+ !i && u ? /* @__PURE__ */ l(ue, { src: u, alt: d, size: a }) : null,
2181
+ /* @__PURE__ */ l(_, { as: "p", size: "xs", color: 2, dynamic: !0, className: "text-inline", children: s(e) })
2182
+ ] });
2183
+ }
2184
+ function Gn({ col: e, row: t }) {
2185
+ return e.cell ? e.cell(t) ?? /* @__PURE__ */ l(bt, {}) : /* @__PURE__ */ l(
2186
+ Hn,
2187
+ {
2188
+ row: t,
2189
+ getValue: (n) => {
2190
+ const r = e.accessor ? e.accessor(n) : n[e.key];
2191
+ return Array.isArray(r) && r.length === 0 ? null : r;
2192
+ }
2193
+ }
2194
+ );
2195
+ }
2196
+ function Xn({
2197
+ row: e,
2198
+ rowKey: t,
2199
+ idx: n,
2200
+ columns: r,
2201
+ striped: s,
2202
+ isSelected: o,
2203
+ conditionalRowClassName: a,
2204
+ hasInteractiveRows: i,
2205
+ rowHandlers: u
2206
+ }) {
2207
+ const d = s && n % 2 === 0 ? "row-even" : "row-odd", m = typeof a == "function" && a(e, n) || "";
2208
+ return /* @__PURE__ */ l(
2209
+ "tr",
2210
+ {
2211
+ className: `${d} ${o ? "row-selected" : ""} ${m}`,
2212
+ style: {
2213
+ cursor: i ? "pointer" : "default",
2214
+ ...At({ index: n })
2215
+ },
2216
+ onClick: u.onClick,
2217
+ onDoubleClick: u.onDoubleClick,
2218
+ onContextMenu: u.onContextMenu,
2219
+ children: r.map((h) => {
2220
+ const c = h.cellClassName ?? h.className ?? "";
2221
+ return /* @__PURE__ */ l(
2222
+ "td",
2223
+ {
2224
+ className: c,
2225
+ style: { width: h.width || "auto" },
2226
+ children: Gn({ col: h, row: e })
2227
+ },
2228
+ h.key
2229
+ );
2230
+ })
2231
+ },
2232
+ t
2233
+ );
2234
+ }
2235
+ function jn({
2236
+ sortedData: e,
2237
+ columns: t,
2238
+ getRowKey: n,
2239
+ striped: r,
2240
+ conditionalRowClassName: s,
2241
+ getRowHandlers: o,
2242
+ hasInteractiveRows: a
2243
+ }) {
2244
+ return /* @__PURE__ */ l("tbody", { children: e.map((i, u) => {
2245
+ const d = n(i, u), m = o(i, d);
2246
+ return /* @__PURE__ */ l(
2247
+ Xn,
2248
+ {
2249
+ row: i,
2250
+ rowKey: d,
2251
+ idx: u,
2252
+ columns: t,
2253
+ striped: r,
2254
+ isSelected: m.isSelected,
2255
+ conditionalRowClassName: s,
2256
+ hasInteractiveRows: a,
2257
+ rowHandlers: m
2258
+ },
2259
+ d
2260
+ );
2261
+ }) });
2262
+ }
2263
+ function Wn({ data: e, columns: t, initialSort: n }) {
2264
+ const [r, s] = U(n), o = (i, u) => {
2265
+ u && s((d) => ({
2266
+ key: i,
2267
+ direction: d.key === i && d.direction === "asc" ? "desc" : "asc"
2268
+ }));
2269
+ }, a = J(() => {
2270
+ if (!r.key) return e;
2271
+ const i = t.find((d) => d.key === r.key);
2272
+ if (!i) return e;
2273
+ const u = (d) => i.accessor ? i.accessor(d) : d[i.key];
2274
+ return [...e].sort((d, m) => {
2275
+ const h = u(d), c = u(m);
2276
+ return h == null && c != null ? -1 : h != null && c == null ? 1 : h == null && c == null ? 0 : h < c ? r.direction === "asc" ? -1 : 1 : h > c ? r.direction === "asc" ? 1 : -1 : 0;
2277
+ });
2278
+ }, [t, e, r]);
2279
+ return {
2280
+ sortConfig: r,
2281
+ requestSort: o,
2282
+ sortedData: a
2283
+ };
2284
+ }
2285
+ function Qn({
2286
+ sortedData: e,
2287
+ getRowKey: t,
2288
+ tableRef: n,
2289
+ onRowClick: r,
2290
+ onSelectedClick: s,
2291
+ onDeselect: o,
2292
+ onSelectionChange: a,
2293
+ onRowRightClick: i,
2294
+ onEnterRow: u,
2295
+ selectOnRightClick: d = !0,
2296
+ enableKeyboardNav: m = !0,
2297
+ rowShortcuts: h = []
2298
+ }) {
2299
+ const [c, b] = U(null), y = ee(null), v = ee(!1), x = typeof u == "function";
2300
+ Q(() => {
2301
+ const N = (k) => {
2302
+ n.current && (k.target.closest(".floating-row-menu") || k.target.closest(".mobile-form-launcher") || n.current.contains(k.target) || (b(null), a?.(null, null), o?.()));
2303
+ };
2304
+ return document.addEventListener("mousedown", N), () => document.removeEventListener("mousedown", N);
2305
+ }, [o, a, n]), Q(() => () => clearTimeout(y.current), []), Q(() => {
2306
+ c == null || e.some((k, f) => t(k, f) === c) || (b(null), a?.(null, null), o?.());
2307
+ }, [t, o, a, c, e]);
2308
+ const S = W(
2309
+ (N) => {
2310
+ if (N == null) return -1;
2311
+ for (let k = 0; k < e.length; k += 1)
2312
+ if (t(e[k], k) === N) return k;
2313
+ return -1;
2314
+ },
2315
+ [t, e]
2316
+ ), g = W(
2317
+ (N) => {
2318
+ if (!e.length) return;
2319
+ const k = Math.max(0, Math.min(N, e.length - 1)), f = e[k], p = t(f, k);
2320
+ b(p), a?.(f, p), r?.(f);
2321
+ },
2322
+ [t, r, a, e]
2323
+ );
2324
+ return Q(() => {
2325
+ if (!m) return;
2326
+ const N = (k) => {
2327
+ if (Lt(k.target)) return;
2328
+ if (k.key === "ArrowDown") {
2329
+ if (!e.length) return;
2330
+ if (k.preventDefault(), c == null) {
2331
+ g(0);
2332
+ return;
2333
+ }
2334
+ const w = S(c);
2335
+ g(w < 0 ? 0 : w + 1);
2336
+ return;
2337
+ }
2338
+ if (k.key === "ArrowUp") {
2339
+ if (!e.length) return;
2340
+ if (k.preventDefault(), c == null) {
2341
+ g(e.length - 1);
2342
+ return;
2343
+ }
2344
+ const w = S(c);
2345
+ g(w < 0 ? e.length - 1 : w - 1);
2346
+ return;
2347
+ }
2348
+ if (k.key === "Enter") {
2349
+ if (!x || c == null) return;
2350
+ k.preventDefault();
2351
+ const w = S(c), C = e[w];
2352
+ if (!C) return;
2353
+ u(C, k);
2354
+ return;
2355
+ }
2356
+ if (c == null || !Array.isArray(h) || h.length === 0)
2357
+ return;
2358
+ const f = S(c), p = e[f];
2359
+ if (!p) return;
2360
+ const E = h.find((w) => w?.enabled === !1 ? !1 : It(k, w));
2361
+ E && (E.preventDefault !== !1 && k.preventDefault(), E.stopPropagation && k.stopPropagation(), E.onTrigger?.(p, k));
2362
+ };
2363
+ return window.addEventListener("keydown", N), () => window.removeEventListener("keydown", N);
2364
+ }, [
2365
+ m,
2366
+ x,
2367
+ S,
2368
+ u,
2369
+ h,
2370
+ g,
2371
+ c,
2372
+ e
2373
+ ]), {
2374
+ selectedKey: c,
2375
+ getRowHandlers: (N, k) => {
2376
+ const f = c === k;
2377
+ return {
2378
+ isSelected: f,
2379
+ onClick: (p) => {
2380
+ if (v.current) {
2381
+ v.current = !1;
2382
+ return;
2383
+ }
2384
+ if (f) {
2385
+ if (!x) {
2386
+ s?.(N, p);
2387
+ return;
2388
+ }
2389
+ clearTimeout(y.current);
2390
+ const E = { clientX: p.clientX, clientY: p.clientY };
2391
+ y.current = setTimeout(() => {
2392
+ s?.(N, E);
2393
+ }, 200);
2394
+ return;
2395
+ }
2396
+ b(k), a?.(N, k), r?.(N, p);
2397
+ },
2398
+ onDoubleClick: (p) => {
2399
+ p.preventDefault(), p.stopPropagation(), clearTimeout(y.current), v.current = !0, u?.(N, p);
2400
+ },
2401
+ onContextMenu: (p) => {
2402
+ p.preventDefault(), d && !f && (b(k), a?.(N, k)), i?.(N, p);
2403
+ }
2404
+ };
2405
+ }
2406
+ };
2407
+ }
2408
+ function Kn({
2409
+ data: e = [],
2410
+ columns: t = [],
2411
+ initialSort: n = {
2412
+ key: null,
2413
+ direction: "asc"
2414
+ },
2415
+ getRowKey: r = (p, E) => E,
2416
+ striped: s = !0,
2417
+ className: o = "",
2418
+ conditionalRowClassName: a,
2419
+ onRowClick: i,
2420
+ onSelectedClick: u,
2421
+ onDeselect: d,
2422
+ onSelectionChange: m,
2423
+ onRowRightClick: h,
2424
+ selectOnRightClick: c = !0,
2425
+ onEnterRow: b,
2426
+ enableKeyboardNav: y = !0,
2427
+ hasActiveSearch: v = !1,
2428
+ isLoading: x = !1,
2429
+ sourceDataCount: S = null,
2430
+ rowShortcuts: g = [],
2431
+ sortAscIcon: T,
2432
+ sortDescIcon: N,
2433
+ emptyState: k = null,
2434
+ noResultsState: f = null
2435
+ }) {
2436
+ const p = ee(null), { sortConfig: E, requestSort: w, sortedData: C } = Wn({
2437
+ data: e,
2438
+ columns: t,
2439
+ initialSort: n
2440
+ }), { getRowHandlers: G } = Qn({
2441
+ sortedData: C,
2442
+ getRowKey: r,
2443
+ tableRef: p,
2444
+ onRowClick: i,
2445
+ onSelectedClick: u,
2446
+ onDeselect: d,
2447
+ onSelectionChange: m,
2448
+ onRowRightClick: h,
2449
+ onEnterRow: b,
2450
+ selectOnRightClick: c,
2451
+ enableKeyboardNav: y,
2452
+ rowShortcuts: g
2453
+ }), F = typeof S == "number" ? S > 0 : null, P = !x && !e.length, M = P && (F === !0 || !!v), K = P && !M, D = !!(i || u), R = {
2454
+ className: o,
2455
+ columns: t,
2456
+ data: e,
2457
+ hasActiveSearch: v,
2458
+ sourceDataCount: S
2459
+ }, O = (L) => typeof L == "function" ? L(R) : L;
2460
+ return /* @__PURE__ */ l("div", { className: `full-w table-shell ${o}`.trim(), ref: p, children: x ? null : M ? O(f) : K ? O(k) : /* @__PURE__ */ l("div", { className: "table-scroll full-w", children: /* @__PURE__ */ V("table", { className: "table", children: [
2461
+ /* @__PURE__ */ l(
2462
+ Yn,
2463
+ {
2464
+ columns: t,
2465
+ sortConfig: E,
2466
+ requestSort: w,
2467
+ sortAscIcon: T,
2468
+ sortDescIcon: N
2469
+ }
2470
+ ),
2471
+ /* @__PURE__ */ l(
2472
+ jn,
2473
+ {
2474
+ sortedData: C,
2475
+ columns: t,
2476
+ getRowKey: r,
2477
+ striped: s,
2478
+ conditionalRowClassName: a,
2479
+ getRowHandlers: G,
2480
+ hasInteractiveRows: D
2481
+ }
2482
+ )
2483
+ ] }) }) });
2484
+ }
2485
+ function ot(e, t = 300) {
2486
+ const [n, r] = U(e);
2487
+ return Q(() => {
2488
+ const s = setTimeout(() => r(e), t);
2489
+ return () => clearTimeout(s);
2490
+ }, [e, t]), n;
2491
+ }
2492
+ const ke = "default", vt = "global", xt = Ve(null);
2493
+ function Se(e = "", t = e) {
2494
+ return { query: e, debouncedQuery: t };
2495
+ }
2496
+ function Qr({ children: e, resetKey: t }) {
2497
+ const [n, r] = U({});
2498
+ Q(() => {
2499
+ r({});
2500
+ }, [t]);
2501
+ const s = W((u = ke, d) => {
2502
+ r((m) => {
2503
+ const h = m[u] ?? Se();
2504
+ return h.query === d ? m : {
2505
+ ...m,
2506
+ [u]: {
2507
+ ...h,
2508
+ query: d
2509
+ }
2510
+ };
2511
+ });
2512
+ }, []), o = W((u = ke, d) => {
2513
+ r((m) => {
2514
+ const h = m[u] ?? Se();
2515
+ return h.debouncedQuery === d ? m : {
2516
+ ...m,
2517
+ [u]: {
2518
+ ...h,
2519
+ debouncedQuery: d
2520
+ }
2521
+ };
2522
+ });
2523
+ }, []), a = W((u = ke) => {
2524
+ r((d) => ({
2525
+ ...d,
2526
+ [u]: Se()
2527
+ }));
2528
+ }, []), i = J(
2529
+ () => ({
2530
+ searchByScope: n,
2531
+ setQuery: s,
2532
+ setDebouncedQuery: o,
2533
+ clearQuery: a
2534
+ }),
2535
+ [a, n, o, s]
2536
+ );
2537
+ return /* @__PURE__ */ l(xt.Provider, { value: i, children: e });
2538
+ }
2539
+ function Nt(e = ke, { debounceMs: t = 250 } = {}) {
2540
+ const n = Re(xt), [r, s] = U(""), o = ot(r, t), a = n?.searchByScope?.[e] ?? Se(), i = n ? a.query : r, u = n ? a.debouncedQuery : o, d = ot(i, t);
2541
+ Q(() => {
2542
+ n && n.setDebouncedQuery(e, d);
2543
+ }, [n, d, e]);
2544
+ const m = W(
2545
+ (c) => {
2546
+ if (n) {
2547
+ n.setQuery(e, c);
2548
+ return;
2549
+ }
2550
+ s(c);
2551
+ },
2552
+ [n, e]
2553
+ ), h = W(() => {
2554
+ if (n) {
2555
+ n.clearQuery(e);
2556
+ return;
2557
+ }
2558
+ s("");
2559
+ }, [n, e]);
2560
+ return {
2561
+ query: i,
2562
+ debouncedQuery: u,
2563
+ setQuery: m,
2564
+ clearQuery: h
2565
+ };
2566
+ }
2567
+ function Un({ text: e, onClick: t, className: n, ariaLabel: r }) {
2568
+ return /* @__PURE__ */ l("button", { type: "button", className: n, onClick: t, "aria-label": r, children: e });
2569
+ }
2570
+ function Jn({
2571
+ options: e = [],
2572
+ selectedOption: t,
2573
+ onChangeOption: n,
2574
+ setData: r,
2575
+ onQueryChange: s,
2576
+ initialQuery: o = "",
2577
+ filters: a = !0,
2578
+ addButton: i = !0,
2579
+ buttonName: u = "common.actions.add",
2580
+ enableCtrlF: d = !1,
2581
+ translate: m,
2582
+ isMobile: h = !1,
2583
+ onAdd: c,
2584
+ searchIcon: b = null,
2585
+ renderActionButton: y = Un,
2586
+ searchScope: v
2587
+ }) {
2588
+ const { t: x } = oe(), S = ee(null), g = m ?? x, T = J(() => e.find((L) => L.value === t) ?? e[0] ?? null, [e, t]), N = T?.value ?? "", k = T?.data ?? [], f = v ?? N, { query: p, debouncedQuery: E, setQuery: w } = Nt(f), C = J(() => T ? T.searchKeys?.length ? T.searchKeys : ["name", "label"] : ["name", "label"], [T]), G = W(
2589
+ (O, L) => {
2590
+ if (!L) return !0;
2591
+ const I = L.toLowerCase();
2592
+ for (const z of C) {
2593
+ const $ = O?.[z];
2594
+ if ($ != null && String($).toLowerCase().includes(I)) return !0;
2595
+ }
2596
+ for (const z of Object.values(O || {}))
2597
+ if (typeof z == "string" && z.toLowerCase().includes(I)) return !0;
2598
+ return !1;
2599
+ },
2600
+ [C]
2601
+ ), F = ee({ key: "", query: "", length: -1 }), P = W(
2602
+ (O) => {
2603
+ if (!T || typeof r != "function") return;
2604
+ const L = (O ?? "").trim(), I = Array.isArray(k) ? k : [], z = L ? I.filter((Y) => G(Y, L)) : I, $ = { key: N, query: L, length: z.length }, A = F.current;
2605
+ A.key === $.key && A.query === $.query && A.length === $.length || (F.current = $, r(z));
2606
+ },
2607
+ [T, k, N, G, r]
2608
+ ), M = W(() => {
2609
+ typeof c == "function" && c(T);
2610
+ }, [T, c]);
2611
+ Q(() => {
2612
+ o && w(o);
2613
+ }, [o, w]), Q(() => {
2614
+ if (!T || typeof r != "function" || p.trim() !== "") return;
2615
+ const O = Array.isArray(k) ? k : [], L = { key: N, query: "", length: O.length }, I = F.current;
2616
+ I.key === L.key && I.query === L.query && I.length === L.length || (F.current = L, r(O));
2617
+ }, [p, T, k, N, r]), Q(() => {
2618
+ P(E);
2619
+ }, [E, N, P]), Q(() => {
2620
+ s?.(p);
2621
+ }, [p, s]), Q(() => {
2622
+ if (!d) return;
2623
+ const O = (L) => {
2624
+ const I = L.target, z = I?.tagName?.toLowerCase(), $ = z === "input" || z === "textarea" || z === "select" || I?.isContentEditable;
2625
+ if ((L.ctrlKey || L.metaKey) && L.key.toLowerCase() === "f") {
2626
+ L.preventDefault(), S.current?.focus(), S.current?.select();
2627
+ return;
2628
+ }
2629
+ !$ && L.key.toLowerCase() === "n" && (L.preventDefault(), M());
2630
+ };
2631
+ return window.addEventListener("keydown", O), () => window.removeEventListener("keydown", O);
2632
+ }, [d, M]);
2633
+ const K = g("common.shortcuts.add"), D = g("common.shortcuts.filters"), R = T?.addFormName && i ? y({
2634
+ variant: "primary",
2635
+ text: g(u),
2636
+ iconName: "actionAdd",
2637
+ alt: g("common.messages.addIconAlt"),
2638
+ onClick: M,
2639
+ ariaLabel: g(u),
2640
+ tooltipDirection: "left",
2641
+ tooltipText: g("common.shortcuts.tooltip", {
2642
+ label: g(u),
2643
+ shortcut: K
2644
+ }),
2645
+ className: h ? "full-w" : "searchbar-add"
2646
+ }) : null;
2647
+ return h ? /* @__PURE__ */ V("div", { className: "full-w flex column gap5", children: [
2648
+ /* @__PURE__ */ l(
2649
+ rt,
2650
+ {
2651
+ variant: "full",
2652
+ value: p,
2653
+ placeholder: g("common.actions.search"),
2654
+ searchButtonLabel: g("common.actions.search"),
2655
+ searchIcon: b,
2656
+ onValueChange: w,
2657
+ onSearch: P,
2658
+ inputRef: S
2659
+ }
2660
+ ),
2661
+ R
2662
+ ] }) : /* @__PURE__ */ V("div", { className: "searchbar-container flex row gap10", children: [
2663
+ e.length > 1 && /* @__PURE__ */ l(
2664
+ Pe,
2665
+ {
2666
+ value: T?.value || "",
2667
+ onChange: (O) => n?.(O),
2668
+ options: e.map(({ value: O, label: L }) => ({ value: O, label: L })),
2669
+ placeholder: g("common.messages.selectDataset"),
2670
+ requiredLabel: g("forms.shared.required"),
2671
+ selectOptionLabel: g("forms.shared.selectOption"),
2672
+ className: "searchbar-select"
2673
+ }
2674
+ ),
2675
+ /* @__PURE__ */ l(
2676
+ rt,
2677
+ {
2678
+ variant: "full",
2679
+ value: p,
2680
+ placeholder: g("common.actions.search"),
2681
+ searchButtonLabel: g("common.actions.search"),
2682
+ searchIcon: b,
2683
+ onValueChange: w,
2684
+ onSearch: P,
2685
+ inputRef: S
2686
+ }
2687
+ ),
2688
+ a ? y({
2689
+ text: g("common.actions.filters"),
2690
+ iconName: "actionFilter",
2691
+ alt: g("common.messages.filterIconAlt"),
2692
+ ariaLabel: g("common.actions.filters"),
2693
+ tooltipDirection: "left",
2694
+ tooltipText: g("common.shortcuts.tooltip", {
2695
+ label: g("common.actions.filters"),
2696
+ shortcut: D
2697
+ }),
2698
+ className: "searchbar-filter"
2699
+ }) : null
2700
+ ] });
2701
+ }
2702
+ function Zn({ x: e, y: t, row: n, actions: r = [], onClose: s }) {
2703
+ if (!n) return null;
2704
+ const o = (u) => {
2705
+ u.stopPropagation();
2706
+ }, a = e > window.innerWidth / 2 ? "100%" : "0%", i = t > window.innerHeight / 2 ? "100%" : "0%";
2707
+ return /* @__PURE__ */ l("div", { className: "floating-row-menu", onClick: o, style: {
2708
+ position: "fixed",
2709
+ top: t + 4,
2710
+ left: e + 4,
2711
+ "--origin-x": a,
2712
+ "--origin-y": i
2713
+ }, children: /* @__PURE__ */ l("div", { className: "floating-row-menu-card", children: r.map(({
2714
+ label: u,
2715
+ icon: d,
2716
+ iconName: m,
2717
+ renderIcon: h,
2718
+ onClick: c,
2719
+ color: b,
2720
+ shortcut: y,
2721
+ disabled: v
2722
+ }, x) => {
2723
+ const S = typeof u == "function" ? u(n) : u, g = typeof v == "function" ? v(n) : !!v;
2724
+ return S ? /* @__PURE__ */ V("button", { type: "button", className: `menu-item ${b || ""}`, disabled: g, onClick: () => {
2725
+ g || (c?.(n), s?.());
2726
+ }, children: [
2727
+ /* @__PURE__ */ l(_, { as: "p", className: "full-w", children: S }),
2728
+ typeof h == "function" ? h({ icon: d, iconName: m, row: n }) : null,
2729
+ !h && d ? /* @__PURE__ */ l(ue, { src: d, decorative: !0 }) : null,
2730
+ y && /* @__PURE__ */ l("div", { className: "shortcut", children: /* @__PURE__ */ l(_, { as: "p", children: y }) })
2731
+ ] }, S || x) : null;
2732
+ }) }) });
2733
+ }
2734
+ function er({ text: e, onClick: t, className: n, ariaLabel: r }) {
2735
+ return /* @__PURE__ */ l("button", { type: "button", className: n, onClick: t, "aria-label": r, children: e });
2736
+ }
2737
+ function tr({
2738
+ id: e,
2739
+ table_name: t = null,
2740
+ addFormName: n,
2741
+ searchKeys: r,
2742
+ columns: s,
2743
+ initialData: o = [],
2744
+ isLoading: a = !1,
2745
+ buttonName: i = "common.actions.add",
2746
+ onRowClick: u,
2747
+ onRowRightClick: d,
2748
+ onSelectedClick: m,
2749
+ onDeselect: h,
2750
+ onSelectionChange: c,
2751
+ onEnterRow: b,
2752
+ rowShortcuts: y = [],
2753
+ includeHeader: v = !0,
2754
+ emptyState: x,
2755
+ noResultsState: S,
2756
+ conditionalRowClassName: g,
2757
+ translate: T,
2758
+ renderActionButton: N = er,
2759
+ searchIcon: k = null,
2760
+ searchScope: f,
2761
+ includePageSearchbar: p = !1,
2762
+ useGlobalSearch: E = !1
2763
+ }) {
2764
+ const { t: w } = oe(), { openForm: C } = qe(), { isMobile: G } = ct(), F = T ?? w, P = E ? vt : f ?? e, { debouncedQuery: M } = Nt(P), K = v && !p && !E, D = M ?? "", R = [
2765
+ {
2766
+ value: e,
2767
+ label: F(t),
2768
+ data: o || [],
2769
+ addFormName: n,
2770
+ searchKeys: r
2771
+ }
2772
+ ], O = () => {
2773
+ n && C(n, "add");
2774
+ }, L = F("common.shortcuts.add"), I = J(() => r?.length ? r : ["name", "label"], [r]), z = J(() => {
2775
+ const $ = Array.isArray(o) ? o : [], A = D.trim().toLowerCase();
2776
+ return A ? $.filter((Y) => {
2777
+ for (const X of I) {
2778
+ const ne = Y?.[X];
2779
+ if (ne != null && String(ne).toLowerCase().includes(A)) return !0;
2780
+ }
2781
+ for (const X of Object.values(Y || {}))
2782
+ if (typeof X == "string" && X.toLowerCase().includes(A)) return !0;
2783
+ return !1;
2784
+ }) : $;
2785
+ }, [o, I, D]);
2786
+ return /* @__PURE__ */ V("div", { className: "full-view flex column-left gap10 table-crud", children: [
2787
+ K && /* @__PURE__ */ l(
2788
+ Jn,
2789
+ {
2790
+ options: R,
2791
+ buttonName: i,
2792
+ enableCtrlF: !0,
2793
+ filters: !1,
2794
+ isMobile: G,
2795
+ onAdd: O,
2796
+ searchIcon: k,
2797
+ renderActionButton: N,
2798
+ searchScope: P
2799
+ }
2800
+ ),
2801
+ /* @__PURE__ */ V("div", { className: "page-content column-left full-view gap20", children: [
2802
+ v && !G && /* @__PURE__ */ V("div", { className: "flex row full-w", children: [
2803
+ t && /* @__PURE__ */ l(_, { size: "xl", children: F(t) }),
2804
+ /* @__PURE__ */ l("div", { className: "full-w row-right", children: n ? N({
2805
+ variant: "primary",
2806
+ text: F(i),
2807
+ iconName: "actionAdd",
2808
+ alt: F("common.messages.addIconAlt"),
2809
+ onClick: O,
2810
+ ariaLabel: F(i),
2811
+ tooltipDirection: "left",
2812
+ tooltipText: F("common.shortcuts.tooltip", {
2813
+ label: F(i),
2814
+ shortcut: L
2815
+ }),
2816
+ className: "searchbar-add"
2817
+ }) : null })
2818
+ ] }),
2819
+ /* @__PURE__ */ l(
2820
+ Kn,
2821
+ {
2822
+ data: z,
2823
+ columns: s.filter(Boolean),
2824
+ isLoading: a,
2825
+ onRowClick: u,
2826
+ onRowRightClick: d,
2827
+ onSelectedClick: m,
2828
+ onDeselect: h,
2829
+ onSelectionChange: c,
2830
+ conditionalRowClassName: g,
2831
+ onEnterRow: b,
2832
+ hasActiveSearch: !!D.trim(),
2833
+ sourceDataCount: Array.isArray(o) ? o.length : 0,
2834
+ rowShortcuts: y,
2835
+ emptyState: x,
2836
+ noResultsState: S
2837
+ }
2838
+ )
2839
+ ] })
2840
+ ] });
2841
+ }
2842
+ const $e = (e) => e != null && Object.prototype.hasOwnProperty.call(e, "archived") && !!e?.archived;
2843
+ function nr({
2844
+ id: e,
2845
+ table_name: t,
2846
+ addFormName: n,
2847
+ optionsFormName: r,
2848
+ searchKeys: s,
2849
+ columns: o,
2850
+ initialData: a = [],
2851
+ isLoading: i = !1,
2852
+ buttonName: u = "common.actions.add",
2853
+ mainAction: d,
2854
+ desktopMenuActions: m = [],
2855
+ onEditRow: h,
2856
+ onToggleArchiveRow: c,
2857
+ onDeleteRow: b,
2858
+ allowArchive: y = !0,
2859
+ allowDelete: v = !0,
2860
+ openMobileMenu: x,
2861
+ conditionalRowClassName: S,
2862
+ rowShortcuts: g = [],
2863
+ fillAvailableHeight: T = !1,
2864
+ includeHeader: N = !0,
2865
+ translate: k,
2866
+ createActionsPayload: f = (K, D) => ({ row: K, actions: D }),
2867
+ TableCRUDComponent: p = tr,
2868
+ renderActionButton: E,
2869
+ searchIcon: w = null,
2870
+ emptyState: C,
2871
+ noResultsState: G,
2872
+ searchScope: F,
2873
+ includePageSearchbar: P = !1,
2874
+ useGlobalSearch: M = !1
2875
+ }) {
2876
+ const { t: K } = oe(), { isMobile: D } = ct(), { openConfirm: R } = wt(), { openFormLauncher: O, setFormLauncher: L } = it(), I = k ?? K, [z, $] = U({
2877
+ visible: !1,
2878
+ x: 0,
2879
+ y: 0,
2880
+ row: null
2881
+ }), A = () => $({ visible: !1, x: 0, y: 0, row: null }), Y = W(
2882
+ (H) => {
2883
+ if (!y || typeof c != "function") return;
2884
+ const B = $e(H);
2885
+ if (!v) {
2886
+ R?.({
2887
+ title: I("common.messages.confirm.title"),
2888
+ message: I(B ? "common.messages.confirm.unarchiveItem" : "common.messages.confirm.archiveItem"),
2889
+ confirmText: I(B ? "common.actions.unarchive" : "common.actions.archive"),
2890
+ cancelText: I("common.actions.cancel"),
2891
+ danger: !1,
2892
+ onConfirm: () => c(H)
2893
+ });
2894
+ return;
2895
+ }
2896
+ c(H);
2897
+ },
2898
+ [y, v, c, R, I]
2899
+ ), X = W(
2900
+ (H) => {
2901
+ !v || typeof b != "function" || R?.({
2902
+ title: I("common.messages.confirm.title"),
2903
+ message: I("common.messages.confirm.deleteItem"),
2904
+ confirmText: I("common.actions.delete"),
2905
+ cancelText: I("common.actions.cancel"),
2906
+ danger: !0,
2907
+ onConfirm: () => b(H)
2908
+ });
2909
+ },
2910
+ [v, b, R, I]
2911
+ ), ne = J(() => {
2912
+ const H = [];
2913
+ return typeof h == "function" && H.push({
2914
+ label: I("common.actions.edit"),
2915
+ onClick: h,
2916
+ shortcut: "E"
2917
+ }), y && typeof c == "function" && H.push({
2918
+ label: (Z) => $e(Z) ? I("common.actions.unarchive") : I("common.actions.archive"),
2919
+ onClick: Y,
2920
+ shortcut: "T"
2921
+ }), v && typeof b == "function" && H.push({
2922
+ label: I("common.actions.delete"),
2923
+ onClick: X,
2924
+ shortcut: "Del"
2925
+ }), H;
2926
+ }, [
2927
+ y,
2928
+ v,
2929
+ b,
2930
+ h,
2931
+ c,
2932
+ Y,
2933
+ X,
2934
+ I
2935
+ ]), se = J(
2936
+ () => [...m, ...ne],
2937
+ [m, ne]
2938
+ ), ae = J(() => {
2939
+ const H = [];
2940
+ return typeof h == "function" && H.push({ keys: "e", onTrigger: h }), y && typeof c == "function" && H.push({ keys: "t", onTrigger: Y }), v && typeof b == "function" && H.push({ keys: ["delete", "backspace"], onTrigger: X }), H;
2941
+ }, [
2942
+ y,
2943
+ v,
2944
+ b,
2945
+ h,
2946
+ c,
2947
+ Y,
2948
+ X
2949
+ ]), ge = J(
2950
+ () => g.length > 0 ? g : ae,
2951
+ [g, ae]
2952
+ ), He = J(() => (H, Z) => {
2953
+ const B = typeof S == "function" && S(H, Z) || "", j = $e(H) ? "row-archived" : "";
2954
+ return [B, j].filter(Boolean).join(" ");
2955
+ }, [S]);
2956
+ Q(() => {
2957
+ A();
2958
+ }, [a]);
2959
+ const ie = J(() => n ? Xe({
2960
+ group: n,
2961
+ action: "add",
2962
+ iconName: "actionAddFill",
2963
+ labelKey: u
2964
+ }) : null, [n, u]), de = W(
2965
+ (H) => !H || !r || se.length === 0 ? ie : Xe({
2966
+ group: r,
2967
+ action: "options",
2968
+ payload: f(H, se),
2969
+ iconName: "actionMenuFill",
2970
+ labelKey: "common.actions.menu",
2971
+ variant: "options"
2972
+ }),
2973
+ [f, ie, r, se]
2974
+ );
2975
+ Q(() => {
2976
+ L(ie);
2977
+ }, [ie, L]);
2978
+ const Ae = () => {
2979
+ z.visible && A();
2980
+ }, fe = (H, Z) => {
2981
+ if (z.visible && z.row?.id === H?.id) {
2982
+ A();
2983
+ return;
2984
+ }
2985
+ if (z.visible && A(), D) {
2986
+ d?.(H, Z);
2987
+ return;
2988
+ }
2989
+ if (!se.length) return;
2990
+ const j = Math.min(Z.clientX, window.innerWidth - 240), re = Math.min(Z.clientY, window.innerHeight - 200);
2991
+ $({ visible: !0, x: j, y: re, row: H });
2992
+ }, le = (H, Z) => {
2993
+ if (Z.preventDefault(), z.visible && A(), D) {
2994
+ const re = de(H);
2995
+ if (re?.type === "options") {
2996
+ O(re);
2997
+ return;
2998
+ }
2999
+ x?.(H, Z);
3000
+ return;
3001
+ }
3002
+ if (!se.length) return;
3003
+ const B = Math.min(Z.clientX, window.innerWidth - 240), j = Math.min(Z.clientY, window.innerHeight - 200);
3004
+ $({ visible: !0, x: B, y: j, row: H });
3005
+ }, ye = (H, Z) => {
3006
+ z.visible && A(), d?.(H, Z);
3007
+ }, Ge = W(
3008
+ (H) => {
3009
+ L(de(H));
3010
+ },
3011
+ [de, L]
3012
+ );
3013
+ return /* @__PURE__ */ V(
3014
+ "div",
3015
+ {
3016
+ className: `full-view column-left responsive-table ${T ? "table-fill-available" : ""}`.trim(),
3017
+ style: { position: "relative" },
3018
+ children: [
3019
+ /* @__PURE__ */ l(
3020
+ p,
3021
+ {
3022
+ id: e,
3023
+ table_name: t,
3024
+ addFormName: n,
3025
+ searchKeys: s,
3026
+ columns: o,
3027
+ initialData: a,
3028
+ isLoading: i,
3029
+ buttonName: u,
3030
+ onRowClick: Ae,
3031
+ onSelectedClick: fe,
3032
+ onDeselect: A,
3033
+ onSelectionChange: Ge,
3034
+ onRowRightClick: le,
3035
+ onEnterRow: ye,
3036
+ rowShortcuts: ge,
3037
+ includeHeader: N,
3038
+ conditionalRowClassName: He,
3039
+ renderActionButton: E,
3040
+ searchIcon: w,
3041
+ emptyState: C,
3042
+ noResultsState: G,
3043
+ searchScope: M ? vt : F ?? e,
3044
+ includePageSearchbar: P || M,
3045
+ useGlobalSearch: M
3046
+ }
3047
+ ),
3048
+ !D && z.visible && z.row && se.length > 0 && /* @__PURE__ */ l(
3049
+ Zn,
3050
+ {
3051
+ x: z.x,
3052
+ y: z.y,
3053
+ row: z.row,
3054
+ actions: se,
3055
+ onClose: A
3056
+ }
3057
+ )
3058
+ ]
3059
+ }
3060
+ );
3061
+ }
3062
+ const rr = { data: [], isLoading: !1, error: null, refetch: null }, or = { archived: "all" }, sr = (e) => e && typeof e.toJSON == "function" ? e.toJSON() : e, ar = (e) => e, lr = (e) => e?.id, ir = (e) => e ?? null, cr = (e) => !!e;
3063
+ function ur({
3064
+ crud: e,
3065
+ permissionScope: t,
3066
+ formGroupName: n,
3067
+ setFormObject: r,
3068
+ setAdvancedForm: s,
3069
+ staticData: o,
3070
+ listArchivedReq: a = or,
3071
+ normalizeItem: i = sr,
3072
+ transformData: u = ar,
3073
+ getRowId: d = lr,
3074
+ disableMutations: m = !1,
3075
+ resolveFormGroupName: h = ir,
3076
+ hasForm: c = cr
3077
+ }) {
3078
+ const b = !!t?.create, y = !!t?.edit, v = !!t?.archive, x = !!t?.unarchive, S = !!t?.listArchived, g = !!t?.delete, T = Array.isArray(o), N = h(n), k = c(N, "add") ? N : null, f = c(N, "edit") ? N : null, p = c(N, "options") ? N : null, E = J(() => {
3079
+ if (S)
3080
+ return a;
3081
+ }, [S, a]), w = T || !e?.useList ? rr : e.useList(E), { data: C = [], isLoading: G = !1, error: F = null, refetch: P = null } = w, M = e?.useDelete ? e.useDelete() : null, K = e?.useArchive ? e.useArchive() : null, D = e?.useUnarchive ? e.useUnarchive() : null, R = J(() => {
3082
+ const $ = T ? o : C, A = Array.isArray($) ? $.map((Y) => i(Y)) : [];
3083
+ return u(A);
3084
+ }, [T, C, o, i, u]), O = W(
3085
+ ($) => {
3086
+ !y || !f || (r?.($), s?.(f, "edit", $));
3087
+ },
3088
+ [y, f, s, r]
3089
+ ), L = W(
3090
+ ($) => {
3091
+ if (!(!p && !f)) {
3092
+ if (r?.($), p) {
3093
+ s?.(p, "options", $);
3094
+ return;
3095
+ }
3096
+ s?.(f, "edit", $);
3097
+ }
3098
+ },
3099
+ [f, p, s, r]
3100
+ ), I = W(
3101
+ ($) => {
3102
+ if (m) return;
3103
+ const A = d($);
3104
+ if (A) {
3105
+ if ($?.archived) {
3106
+ if (!x) return;
3107
+ D?.mutate(
3108
+ { pathParams: { id: A } },
3109
+ { onSuccess: (Y) => {
3110
+ Oe(Y) || P?.();
3111
+ } }
3112
+ );
3113
+ return;
3114
+ }
3115
+ v && K?.mutate(
3116
+ { pathParams: { id: A } },
3117
+ { onSuccess: (Y) => {
3118
+ Oe(Y) || P?.();
3119
+ } }
3120
+ );
3121
+ }
3122
+ },
3123
+ [
3124
+ K,
3125
+ v,
3126
+ x,
3127
+ m,
3128
+ d,
3129
+ P,
3130
+ D
3131
+ ]
3132
+ ), z = W(
3133
+ ($) => {
3134
+ if (m || !g) return;
3135
+ const A = d($);
3136
+ A && M?.mutate(
3137
+ { pathParams: { id: A } },
3138
+ { onSuccess: (Y) => {
3139
+ Oe(Y) || P?.();
3140
+ } }
3141
+ );
3142
+ },
3143
+ [g, M, m, d, P]
3144
+ );
3145
+ return {
3146
+ data: R,
3147
+ isLoading: G,
3148
+ error: F,
3149
+ addFormName: b ? k : null,
3150
+ optionFormName: p,
3151
+ openMobileMenu: L,
3152
+ onEditRow: y ? O : void 0,
3153
+ onToggleArchiveRow: v || x ? I : void 0,
3154
+ onDeleteRow: g ? z : void 0,
3155
+ allowArchive: v || x,
3156
+ allowDelete: g,
3157
+ permissions: {
3158
+ canCreate: b,
3159
+ canEdit: y,
3160
+ canArchive: v,
3161
+ canUnarchive: x,
3162
+ canListArchived: S,
3163
+ canDelete: g
3164
+ }
3165
+ };
3166
+ }
3167
+ function Kr({
3168
+ id: e,
3169
+ tableName: t,
3170
+ crud: n,
3171
+ permissionScope: r,
3172
+ formGroupName: s,
3173
+ columns: o,
3174
+ searchKeys: a,
3175
+ buttonName: i = "common.actions.add",
3176
+ mainAction: u,
3177
+ desktopMenuActions: d = [],
3178
+ listArchivedReq: m,
3179
+ normalizeItem: h,
3180
+ transformData: c,
3181
+ getRowId: b,
3182
+ staticData: y,
3183
+ disableMutations: v = !1,
3184
+ fillAvailableHeight: x = !1,
3185
+ useGlobalSearch: S = !0,
3186
+ useEntityTableActions: g = ur,
3187
+ ResponsiveTableComponent: T = nr,
3188
+ resolveFormGroupName: N,
3189
+ hasForm: k,
3190
+ addFormName: f,
3191
+ optionsFormName: p,
3192
+ openMobileMenu: E,
3193
+ onEditRow: w,
3194
+ onToggleArchiveRow: C,
3195
+ onDeleteRow: G,
3196
+ allowArchive: F,
3197
+ allowDelete: P,
3198
+ ...M
3199
+ }) {
3200
+ const { setAdvancedForm: K, setFormObject: D } = qe();
3201
+ if (typeof g != "function")
3202
+ throw new Error("EntityTable requires a useEntityTableActions hook.");
3203
+ const {
3204
+ data: R,
3205
+ isLoading: O,
3206
+ addFormName: L,
3207
+ optionFormName: I,
3208
+ openMobileMenu: z,
3209
+ onEditRow: $,
3210
+ onToggleArchiveRow: A,
3211
+ onDeleteRow: Y,
3212
+ allowArchive: X,
3213
+ allowDelete: ne
3214
+ } = g({
3215
+ crud: n,
3216
+ permissionScope: r,
3217
+ formGroupName: s,
3218
+ setFormObject: D,
3219
+ setAdvancedForm: K,
3220
+ staticData: y,
3221
+ listArchivedReq: m,
3222
+ normalizeItem: h,
3223
+ transformData: c,
3224
+ getRowId: b,
3225
+ disableMutations: v,
3226
+ resolveFormGroupName: N,
3227
+ hasForm: k
3228
+ });
3229
+ return /* @__PURE__ */ l("div", { className: "full-w column-left", children: /* @__PURE__ */ l(
3230
+ T,
3231
+ {
3232
+ ...M,
3233
+ id: e,
3234
+ table_name: t,
3235
+ addFormName: f ?? L,
3236
+ optionsFormName: p ?? I,
3237
+ buttonName: i,
3238
+ searchKeys: a,
3239
+ columns: o,
3240
+ initialData: R,
3241
+ isLoading: O,
3242
+ openMobileMenu: E ?? z,
3243
+ onEditRow: w ?? $,
3244
+ onToggleArchiveRow: C ?? A,
3245
+ onDeleteRow: G ?? Y,
3246
+ allowArchive: F ?? X,
3247
+ allowDelete: P ?? ne,
3248
+ mainAction: u,
3249
+ desktopMenuActions: d,
3250
+ fillAvailableHeight: x,
3251
+ useGlobalSearch: S
3252
+ }
3253
+ ) });
3254
+ }
3255
+ function dr(e, t, n) {
3256
+ return t ?? (e.alt != null ? e.alt : e.altKey && n ? n(e.altKey) : e.altKey ?? "");
3257
+ }
3258
+ function Ur(e, t) {
3259
+ return function({ name: r, size: s, variant: o, alt: a, decorative: i = !1, translateAlt: u, ...d }) {
3260
+ const m = e[r];
3261
+ return m ? /* @__PURE__ */ l(
3262
+ ue,
3263
+ {
3264
+ src: m.src,
3265
+ size: s ?? m.size,
3266
+ variant: o ?? m.variant ?? t,
3267
+ alt: i ? "" : dr(m, a, u),
3268
+ decorative: i,
3269
+ ...d
3270
+ }
3271
+ ) : null;
3272
+ };
3273
+ }
3274
+ const kt = "formDrafts", Ce = (e) => e != null && typeof e == "object" && !Array.isArray(e), Fe = () => {
3275
+ if (typeof window > "u") return {};
3276
+ try {
3277
+ const e = window.localStorage.getItem(kt);
3278
+ if (!e) return {};
3279
+ const t = JSON.parse(e);
3280
+ return Ce(t) ? t : {};
3281
+ } catch {
3282
+ return {};
3283
+ }
3284
+ }, st = (e) => {
3285
+ if (!(typeof window > "u"))
3286
+ try {
3287
+ window.localStorage.setItem(kt, JSON.stringify(e));
3288
+ } catch {
3289
+ }
3290
+ };
3291
+ function Jr(e, t) {
3292
+ const [n, r] = U(() => {
3293
+ const o = typeof t == "function" ? t() : t;
3294
+ if (!e) return o;
3295
+ const i = Fe()?.[e];
3296
+ return !Ce(o) || !Ce(i) ? o : { ...o, ...i };
3297
+ });
3298
+ Q(() => {
3299
+ if (!e || !Ce(n)) return;
3300
+ const o = Fe();
3301
+ st({
3302
+ ...o,
3303
+ [e]: n
3304
+ });
3305
+ }, [e, n]);
3306
+ const s = W(() => {
3307
+ if (!e) return;
3308
+ const o = Fe();
3309
+ e in o && (delete o[e], st(o));
3310
+ }, [e]);
3311
+ return { form: n, setForm: r, clearDraft: s };
3312
+ }
3313
+ function fr(e) {
3314
+ if (e == null || e === "") return null;
3315
+ if (typeof e != "object") return String(e);
3316
+ const t = e.id ?? e.value ?? e.ids?.[0] ?? null;
3317
+ return t == null || t === "" ? null : String(t);
3318
+ }
3319
+ function mr(e = {}) {
3320
+ return String(e?.type ?? "").toLowerCase() === "object";
3321
+ }
3322
+ function hr(e) {
3323
+ return e == null ? !1 : typeof e == "string" ? e.trim().length > 0 : !0;
3324
+ }
3325
+ function pr(e, t, n = {}) {
3326
+ const r = new e(n).toJSON(), s = t?.fields ?? {};
3327
+ for (const [o, a] of Object.entries(s))
3328
+ mr(a) && (r[o] = fr(r[o]));
3329
+ return r;
3330
+ }
3331
+ function Zr(e, t, n = {}) {
3332
+ const r = {};
3333
+ for (const [s, o] of Object.entries(n ?? {}))
3334
+ hr(o) && (r[s] = o);
3335
+ return pr(e, t, r);
3336
+ }
3337
+ function eo({
3338
+ id: e,
3339
+ form: t = null,
3340
+ title: n,
3341
+ iconName: r = null,
3342
+ picture: s = null,
3343
+ type: o = "short-form",
3344
+ ...a
3345
+ }) {
3346
+ return {
3347
+ id: e,
3348
+ form: t,
3349
+ title: n,
3350
+ iconName: r,
3351
+ picture: s,
3352
+ type: o,
3353
+ ...a
3354
+ };
3355
+ }
3356
+ function to(e = {}) {
3357
+ return e;
3358
+ }
3359
+ function no({
3360
+ id: e,
3361
+ form: t = null,
3362
+ title: n = "forms.shared.actionFormTitle",
3363
+ picture: r = null,
3364
+ type: s = "short-form",
3365
+ buildActions: o = null,
3366
+ actions: a = [],
3367
+ ...i
3368
+ }) {
3369
+ return {
3370
+ id: e,
3371
+ form: t,
3372
+ title: n,
3373
+ picture: r,
3374
+ type: s,
3375
+ buildActions: o,
3376
+ actions: a,
3377
+ ...i
3378
+ };
3379
+ }
3380
+ function ro(e = {}) {
3381
+ return {
3382
+ forms: e,
3383
+ getForm: (o, a = "default") => !o || o === "none" || !a || a === "none" ? null : e?.[o]?.[a] ?? null,
3384
+ getFormGroup: (o) => !o || o === "none" ? null : e?.[o] ?? null,
3385
+ getFormID: (o, a = "default") => !o || o === "none" || !a || a === "none" ? null : e?.[o]?.[a]?.id ?? null,
3386
+ getFormGroupActions: (o) => !o || o === "none" ? [] : Object.keys(e?.[o] ?? {})
3387
+ };
3388
+ }
3389
+ export {
3390
+ Xr as $,
3391
+ Tr as A,
3392
+ Qt as B,
3393
+ Ir as C,
3394
+ qr as D,
3395
+ bt as E,
3396
+ Fr as F,
3397
+ vt as G,
3398
+ On as H,
3399
+ ue as I,
3400
+ Pr as J,
3401
+ Cn as K,
3402
+ _r as L,
3403
+ Hr as M,
3404
+ Ee as N,
3405
+ gt as O,
3406
+ Yr as P,
3407
+ jn as Q,
3408
+ nr as R,
3409
+ rt as S,
3410
+ Kn as T,
3411
+ tr as U,
3412
+ Yn as V,
3413
+ Xn as W,
3414
+ Qr as X,
3415
+ yt as Y,
3416
+ _ as Z,
3417
+ Hn as _,
3418
+ Lr as a,
3419
+ Br as a0,
3420
+ wr as a1,
3421
+ Zr as a2,
3422
+ Ar as a3,
3423
+ Qe as a4,
3424
+ $r as a5,
3425
+ ro as a6,
3426
+ Ur as a7,
3427
+ dt as a8,
3428
+ je as a9,
3429
+ Cr as aa,
3430
+ no as ab,
3431
+ eo as ac,
3432
+ to as ad,
3433
+ pr as ae,
3434
+ Wt as af,
3435
+ ot as ag,
3436
+ ur as ah,
3437
+ Jr as ai,
3438
+ jt as aj,
3439
+ gn as ak,
3440
+ xn as al,
3441
+ Nt as am,
3442
+ Qn as an,
3443
+ Wn as ao,
3444
+ Or as b,
3445
+ Gr as c,
3446
+ Yt as d,
3447
+ Jt as e,
3448
+ Zt as f,
3449
+ Dr as g,
3450
+ zr as h,
3451
+ Vr as i,
3452
+ rn as j,
3453
+ jr as k,
3454
+ Kr as l,
3455
+ ln as m,
3456
+ dn as n,
3457
+ Zn as o,
3458
+ Rr as p,
3459
+ fn as q,
3460
+ Pe as r,
3461
+ Jn as s,
3462
+ $n as t,
3463
+ Mr as u,
3464
+ on as v,
3465
+ mt as w,
3466
+ Er as x,
3467
+ Wr as y,
3468
+ an as z
3469
+ };