@shlinkio/shlink-frontend-kit 0.9.13 → 1.0.1

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.
package/dist/tailwind.js DELETED
@@ -1,1553 +0,0 @@
1
- import { jsxs as m, jsx as n, Fragment as W } from "react/jsx-runtime";
2
- import c, { clsx as p } from "clsx";
3
- import { useRef as O, useState as A, useEffect as M, forwardRef as v, useCallback as I, createContext as Q, useContext as S, useId as E, useImperativeHandle as ht, useMemo as G } from "react";
4
- import { Link as q, useLocation as ft, NavLink as xt } from "react-router";
5
- import { faClose as yt, faEyeSlash as kt, faEye as vt, faCircleNotch as lt, faSearch as Nt, faCaretDown as Ct, faChevronUp as It, faChevronDown as Ot, faChevronLeft as et, faChevronRight as rt, faEllipsisV as Rt, faSortAmountUp as Pt, faSortAmountDown as Lt, faCheck as Dt } from "@fortawesome/free-solid-svg-icons";
6
- import { FontAwesomeIcon as C } from "@fortawesome/react-fontawesome";
7
- import { u as it, b as St, i as Bt, a as Mt, e as Et, c as At } from "./ordering-pAYMfJPl.js";
8
- import { useFloating as dt, flip as Tt, offset as _t, useClick as $t, useInteractions as st, autoPlacement as jt, arrow as Ft, useHover as Ht, useTransitionStyles as Wt } from "@floating-ui/react";
9
- import { createPortal as Ut } from "react-dom";
10
- import "reactstrap";
11
- import { faClone as Kt } from "@fortawesome/free-regular-svg-icons";
12
- const Ke = ({ children: r, summary: e, summaryClasses: t, ...o }) => {
13
- const l = O(null), [a, i] = A(!1);
14
- return M(() => {
15
- const d = l.current, s = () => i(!!(d != null && d.open));
16
- return d == null || d.addEventListener("toggle", s), () => d == null ? void 0 : d.removeEventListener("toggle", s);
17
- }, []), /* @__PURE__ */ m("details", { ref: l, ...o, children: [
18
- /* @__PURE__ */ n("summary", { className: p("tw:focus-ring tw:px-1 tw:-mx-1 tw:rounded-sm", t), children: e }),
19
- a && /* @__PURE__ */ n("div", { className: "tw:mt-3 tw:flex tw:flex-col tw:gap-y-3", children: r })
20
- ] });
21
- }, Gt = v(({ className: r, ...e }, t) => /* @__PURE__ */ n(
22
- "div",
23
- {
24
- className: c(
25
- "tw:px-4 tw:py-3 tw:rounded-t-md",
26
- "tw:bg-lm-primary tw:dark:bg-dm-primary tw:border-b tw:border-lm-border tw:dark:border-dm-border",
27
- r
28
- ),
29
- ...e,
30
- ref: t
31
- }
32
- )), qt = v(({ className: r, ...e }, t) => /* @__PURE__ */ n(
33
- "div",
34
- {
35
- className: c(
36
- "tw:p-4 tw:bg-lm-primary tw:dark:bg-dm-primary tw:first:rounded-t-md",
37
- "tw:first:rounded-t-md tw:last:rounded-b-md",
38
- r
39
- ),
40
- ...e,
41
- ref: t
42
- }
43
- )), Xt = v(({ className: r, ...e }, t) => /* @__PURE__ */ n(
44
- "div",
45
- {
46
- className: c(
47
- "tw:px-4 tw:py-3 tw:rounded-b-md",
48
- "tw:bg-lm-primary tw:dark:bg-dm-primary tw:border-t tw:border-lm-border tw:dark:border-dm-border",
49
- r
50
- ),
51
- ...e,
52
- ref: t
53
- }
54
- )), Jt = v(({ className: r, ...e }, t) => /* @__PURE__ */ n(
55
- "div",
56
- {
57
- className: c(
58
- "tw:group/card tw:rounded-md tw:shadow-md",
59
- "tw:border tw:border-lm-border tw:dark:border-dm-border tw:bg-lm-primary tw:dark:bg-dm-primary",
60
- r
61
- ),
62
- ...e,
63
- ref: t
64
- }
65
- )), P = Object.assign(Jt, { Body: qt, Header: Gt, Footer: Xt }), Qt = v(({ bodyClassName: r, children: e, ...t }, o) => {
66
- const { title: l, titleSize: a = "md", ...i } = "title" in t ? t : {
67
- ...t,
68
- title: void 0,
69
- titleSize: void 0
70
- };
71
- return /* @__PURE__ */ m(P, { ...i, ref: o, children: [
72
- l && /* @__PURE__ */ m(P.Header, { children: [
73
- a === "lg" && /* @__PURE__ */ n("h4", { children: l }),
74
- a === "md" && /* @__PURE__ */ n("h5", { children: l }),
75
- a === "sm" && /* @__PURE__ */ n("h6", { children: l })
76
- ] }),
77
- /* @__PURE__ */ n(P.Body, { className: r, children: e })
78
- ] });
79
- });
80
- function Yt({
81
- id: r,
82
- items: e,
83
- onSelectItem: t,
84
- onActiveItemChange: o,
85
- renderItem: l,
86
- className: a,
87
- noItemsMessage: i = "No items",
88
- anchor: d,
89
- "aria-label": s = "Items",
90
- ...w
91
- }) {
92
- const [f, x] = A(0), g = I((k) => {
93
- if (x(k), o) {
94
- const [y, u] = [...e.entries()][k];
95
- o(y, u);
96
- }
97
- }, [e, o]);
98
- return M(() => {
99
- const k = d == null ? void 0 : d.current;
100
- if (!k)
101
- return;
102
- const y = (u) => {
103
- ["Enter", "ArrowUp", "ArrowDown"].includes(u.key) && u.preventDefault(), u.key === "ArrowDown" ? g(Math.min(f + 1, e.size - 1)) : u.key === "ArrowUp" ? g(Math.max(f - 1, 0)) : u.key === "Enter" && t([...e.values()][f]);
104
- };
105
- return k.addEventListener("keydown", y), () => k.removeEventListener("keydown", y);
106
- }, [f, d, g, e, t]), /* @__PURE__ */ m(
107
- P,
108
- {
109
- id: r,
110
- className: c("tw:py-1 tw:flex tw:flex-col", a),
111
- role: "listbox",
112
- "aria-orientation": "vertical",
113
- "aria-label": s,
114
- ...w,
115
- children: [
116
- e.size === 0 && /* @__PURE__ */ n("i", { role: "option", "aria-disabled": !0, "aria-selected": !1, "data-testid": "no-items", className: "tw:px-2 tw:py-1", children: i }),
117
- [...e.entries()].map(([k, y], u) => /* @__PURE__ */ n(
118
- "button",
119
- {
120
- id: `${r}_${k}`,
121
- type: "button",
122
- role: "option",
123
- "aria-selected": u === f,
124
- className: c(
125
- "tw:px-2 tw:py-1 tw:text-left tw:truncate",
126
- { "tw:bg-lm-secondary tw:dark:bg-dm-secondary": u === f }
127
- ),
128
- tabIndex: -1,
129
- onClick: () => t(y),
130
- onMouseOver: () => g(u),
131
- children: l(y)
132
- },
133
- k
134
- ))
135
- ]
136
- }
137
- );
138
- }
139
- const U = Q(void 0), _ = Q({ responsive: !0, size: "md" }), Zt = ({ children: r, className: e }) => {
140
- const { responsive: t } = S(_);
141
- return /* @__PURE__ */ n(U.Provider, { value: { section: "head" }, children: /* @__PURE__ */ n(
142
- "thead",
143
- {
144
- className: c(
145
- { "tw:hidden tw:lg:table-header-group": t },
146
- e
147
- ),
148
- children: r
149
- }
150
- ) });
151
- }, zt = ({ children: r, className: e }) => {
152
- const { responsive: t } = S(_);
153
- return /* @__PURE__ */ n(U.Provider, { value: { section: "body" }, children: /* @__PURE__ */ n(
154
- "tbody",
155
- {
156
- className: c(
157
- { "tw:lg:table-row-group tw:flex tw:flex-col tw:gap-y-3": t },
158
- e
159
- ),
160
- children: r
161
- }
162
- ) });
163
- }, Vt = ({ children: r, className: e }) => {
164
- const { responsive: t } = S(_);
165
- return /* @__PURE__ */ n(U.Provider, { value: { section: "footer" }, children: /* @__PURE__ */ n(
166
- "tfoot",
167
- {
168
- className: c(
169
- { "tw:lg:table-row-group tw:flex tw:flex-col tw:gap-y-3 tw:mt-4": t },
170
- e
171
- ),
172
- children: r
173
- }
174
- ) });
175
- }, te = ({ children: r, className: e, ...t }) => {
176
- const o = S(U), l = (o == null ? void 0 : o.section) === "body", { responsive: a } = S(_);
177
- return /* @__PURE__ */ n(
178
- "tr",
179
- {
180
- className: c(
181
- "tw:group",
182
- {
183
- "tw:lg:table-row tw:flex tw:flex-col": a,
184
- "tw:lg:border-0 tw:border-y-2 tw:border-lm-border tw:dark:border-dm-border": a,
185
- "tw:hover:bg-lm-primary tw:dark:hover:bg-dm-primary": l,
186
- // Use a different hover bg color depending on the table being inside a card or not
187
- "tw:group-[&]/card:hover:bg-lm-secondary tw:dark:group-[&]/card:hover:bg-dm-secondary": l
188
- },
189
- e
190
- ),
191
- ...t,
192
- children: r
193
- }
194
- );
195
- }, ee = ({ children: r, className: e, columnName: t, type: o, ...l }) => {
196
- const a = S(U), i = o ?? ((a == null ? void 0 : a.section) !== "body" ? "th" : "td"), { responsive: d, size: s } = S(_);
197
- return /* @__PURE__ */ n(
198
- i,
199
- {
200
- "data-column": d ? t : void 0,
201
- className: c(
202
- "tw:border-lm-border tw:dark:border-dm-border",
203
- {
204
- "tw:p-1": s === "sm",
205
- "tw:p-2": s === "md",
206
- "tw:p-3": s === "lg",
207
- "tw:border-b-1": !d,
208
- "tw:block tw:lg:table-cell tw:not-last:border-b-1 tw:lg:border-b-1": d,
209
- "tw:text-left": i === "th",
210
- // For responsive tables, display the content in data-column attribute for md sizes and lower
211
- "tw:before:lg:hidden tw:before:content-[attr(data-column)] tw:before:font-bold tw:before:mr-1": d && i === "td"
212
- },
213
- e
214
- ),
215
- ...l,
216
- children: r
217
- }
218
- );
219
- }, re = ({ header: r, footer: e, children: t, responsive: o = !0, size: l = "md", ...a }) => /* @__PURE__ */ n(_.Provider, { value: { responsive: o, size: l }, children: /* @__PURE__ */ m("table", { className: "tw:w-full", ...a, children: [
220
- /* @__PURE__ */ n(Zt, { children: r }),
221
- /* @__PURE__ */ n(zt, { children: t }),
222
- e && /* @__PURE__ */ n(Vt, { children: e })
223
- ] }) }), Ge = Object.assign(re, { Row: te, Cell: ee }), wt = v(({
224
- className: r,
225
- disabled: e,
226
- variant: t = "primary",
227
- size: o = "md",
228
- inline: l = !1,
229
- solid: a = !1,
230
- type: i = "button",
231
- ...d
232
- }, s) => {
233
- const w = "to" in d && typeof d.to == "string", f = w ? q : "button", x = w ? void 0 : i;
234
- return /* @__PURE__ */ n(
235
- f,
236
- {
237
- ref: s,
238
- className: c(
239
- {
240
- "tw:inline-flex": l,
241
- "tw:flex": !l
242
- },
243
- "tw:gap-2 tw:items-center tw:justify-center",
244
- "tw:border tw:rounded-md tw:no-underline",
245
- "tw:transition-colors",
246
- {
247
- "tw:focus-ring": t === "primary",
248
- "tw:focus-ring-secondary": t === "secondary",
249
- "tw:focus-ring-danger": t === "danger"
250
- },
251
- {
252
- "tw:px-1.5 tw:py-1 tw:text-sm": o === "sm",
253
- "tw:px-3 tw:py-1.5": o === "md",
254
- "tw:px-4 tw:py-2 tw:text-lg": o === "lg"
255
- },
256
- {
257
- "tw:border-lm-brand tw:dark:border-dm-brand": t === "primary",
258
- "tw:text-lm-brand tw:dark:text-dm-brand": t === "primary" && !a,
259
- "tw:border-zinc-500": t === "secondary",
260
- "tw:text-zinc-500": t === "secondary" && !a,
261
- "tw:border-danger": t === "danger",
262
- "tw:text-danger": t === "danger" && !a
263
- },
264
- a && {
265
- "tw:text-white": !0,
266
- "tw:bg-lm-brand tw:dark:bg-dm-brand": t === "primary",
267
- "tw:highlight:bg-lm-brand-dark tw:dark:highlight:bg-dm-brand-dark": t === "primary",
268
- "tw:highlight:border-lm-brand-dark tw:dark:highlight:border-dm-brand-dark": t === "primary",
269
- "tw:bg-zinc-500": t === "secondary",
270
- "tw:highlight:bg-zinc-600 tw:highlight:border-zinc-600": t === "secondary",
271
- "tw:bg-danger": t === "danger",
272
- "tw:highlight:bg-danger-dark tw:highlight:border-danger-dark": t === "danger"
273
- },
274
- !e && {
275
- "tw:highlight:text-white": !a,
276
- "tw:highlight:bg-lm-brand tw:dark:highlight:bg-dm-brand": t === "primary",
277
- "tw:highlight:bg-zinc-500": t === "secondary",
278
- "tw:highlight:bg-danger": t === "danger"
279
- },
280
- {
281
- "tw:cursor-pointer": !e,
282
- "tw:pointer-events-none tw:opacity-65": e
283
- },
284
- r
285
- ),
286
- disabled: w ? void 0 : e,
287
- "aria-disabled": w ? e : void 0,
288
- type: x,
289
- ...d
290
- }
291
- );
292
- }), ct = v(({ className: r, onChange: e, ...t }, o) => {
293
- const l = I((a) => e == null ? void 0 : e(a.target.checked, a), [e]);
294
- return /* @__PURE__ */ n(
295
- "input",
296
- {
297
- ref: o,
298
- type: "checkbox",
299
- className: p(
300
- "tw:appearance-none tw:focus-ring tw:cursor-[inherit]",
301
- "tw:border-1 tw:border-lm-input-border tw:dark:border-dm-input-border",
302
- "tw:bg-lm-primary tw:dark:bg-dm-primary tw:checked:bg-lm-brand tw:dark:checked:bg-dm-brand tw:bg-no-repeat",
303
- // Use different background color when rendered inside a card
304
- "tw:group-[&]/card:bg-lm-input tw:group-[&]/card:dark:bg-dm-input",
305
- r
306
- ),
307
- onChange: l,
308
- ...t
309
- }
310
- );
311
- }), qe = v(({ className: r, ...e }, t) => /* @__PURE__ */ n(
312
- ct,
313
- {
314
- ref: t,
315
- className: p("tw:rounded-sm tw:w-4 tw:h-4 tw:checked:bg-(image:--tick) tw:bg-center", r),
316
- ...e
317
- }
318
- )), X = v(({ onClick: r, className: e, label: t = "Close", size: o = "lg", solid: l }, a) => /* @__PURE__ */ n(
319
- "button",
320
- {
321
- ref: a,
322
- type: "button",
323
- onClick: r,
324
- className: c(
325
- "tw:rounded-md tw:focus-ring tw:cursor-pointer",
326
- {
327
- "tw:opacity-50 tw:highlight:opacity-80 tw:transition-opacity": !l
328
- },
329
- e
330
- ),
331
- "aria-label": t,
332
- children: /* @__PURE__ */ n(C, { icon: yt, size: o === "lg" ? "xl" : o === "md" ? "lg" : void 0 })
333
- }
334
- )), Y = v(({
335
- borderless: r = !1,
336
- size: e = "md",
337
- feedback: t,
338
- variant: o = "default",
339
- className: l,
340
- disabled: a,
341
- ...i
342
- }, d) => /* @__PURE__ */ n(
343
- "input",
344
- {
345
- ref: d,
346
- className: c(
347
- "tw:outline-none",
348
- o === "default" && [
349
- "tw:w-full",
350
- {
351
- "tw:focus-ring": !t,
352
- "tw:focus-ring-danger": t === "error",
353
- "tw:px-2 tw:py-1 tw:text-sm": e === "sm",
354
- "tw:px-3 tw:py-1.5": e === "md",
355
- "tw:px-4 tw:py-2 tw:text-xl": e === "lg",
356
- "tw:rounded-md tw:border": !r,
357
- "tw:border-lm-input-border tw:dark:border-dm-input-border": !r && !t,
358
- "tw:border-danger": !r && t === "error",
359
- "tw:bg-lm-disabled-input tw:dark:bg-dm-disabled-input": a,
360
- "tw:bg-lm-primary tw:dark:bg-dm-primary": !a,
361
- // Use different background color when rendered inside a card
362
- "tw:group-[&]/card:bg-lm-input tw:group-[&]/card:dark:bg-dm-input": !a
363
- }
364
- ],
365
- l
366
- ),
367
- disabled: a,
368
- ...i
369
- }
370
- )), Z = ({ required: r, children: e, className: t, ...o }) => /* @__PURE__ */ m("label", { className: p("tw:cursor-pointer", t), ...o, children: [
371
- e,
372
- r && /* @__PURE__ */ n("span", { className: "tw:text-danger tw:ml-1", "data-testid": "required-indicator", children: "*" })
373
- ] }), z = ({ children: r, helpText: e, error: t, "data-testid": o }) => /* @__PURE__ */ m("div", { className: "tw:flex tw:flex-col tw:gap-1", "data-testid": o, children: [
374
- r,
375
- e && /* @__PURE__ */ n(
376
- "small",
377
- {
378
- "data-testid": o ? `${o}-help-text` : "help-text",
379
- className: "tw:text-gray-500 tw:dark:text-gray-400",
380
- children: e
381
- }
382
- ),
383
- t && /* @__PURE__ */ n("span", { "data-testid": o ? `${o}-error` : "error", className: "tw:text-danger", children: t })
384
- ] }), Xe = v(({ label: r, inputClassName: e, required: t, hiddenRequired: o, error: l, helpText: a, "data-testid": i, ...d }, s) => {
385
- const w = E();
386
- return /* @__PURE__ */ m(z, { error: l, helpText: a, "data-testid": i, children: [
387
- /* @__PURE__ */ n(Z, { htmlFor: w, required: t, children: r }),
388
- /* @__PURE__ */ n(
389
- Y,
390
- {
391
- ref: s,
392
- id: w,
393
- className: e,
394
- required: t || o,
395
- feedback: l ? "error" : void 0,
396
- ...d
397
- }
398
- )
399
- ] });
400
- }), ne = v(({ containerClassName: r, className: e, size: t, ...o }, l) => {
401
- const [a, i, , d] = it(!1), s = O(null), w = I(({ relatedTarget: f }) => {
402
- var x;
403
- (x = s.current) != null && x.contains(f) || d();
404
- }, [s, d]);
405
- return /* @__PURE__ */ m(
406
- "div",
407
- {
408
- className: p("tw:group tw:relative", r),
409
- ref: s,
410
- onBlurCapture: w,
411
- children: [
412
- /* @__PURE__ */ n(
413
- Y,
414
- {
415
- ref: l,
416
- type: a ? "text" : "password",
417
- className: p(
418
- {
419
- "tw:pr-10": t !== "sm",
420
- "tw:pr-8": t === "sm"
421
- },
422
- e
423
- ),
424
- size: t,
425
- "data-testid": "input",
426
- ...o
427
- }
428
- ),
429
- /* @__PURE__ */ n(
430
- "button",
431
- {
432
- type: "button",
433
- onClick: i,
434
- title: a ? "Hide password" : "Show password",
435
- "aria-label": a ? "Hide password" : "Show password",
436
- className: p(
437
- "tw:absolute tw:top-[50%] tw:translate-y-[-50%] tw:px-1 tw:cursor-pointer",
438
- "tw:text-placeholder tw:hover:text-lm-text tw:hover:dark:text-dm-text tw:transition-colors",
439
- {
440
- "tw:right-1.5": t !== "sm",
441
- "tw:scale-85 tw:right-1": t === "sm"
442
- }
443
- ),
444
- tabIndex: -1,
445
- children: /* @__PURE__ */ n(C, { fixedWidth: !0, icon: a ? kt : vt })
446
- }
447
- )
448
- ]
449
- }
450
- );
451
- }), Je = v(({ label: r, inputClassName: e, required: t, hiddenRequired: o, error: l, helpText: a, "data-testid": i, ...d }, s) => {
452
- const w = E();
453
- return /* @__PURE__ */ m(z, { error: l, helpText: a, "data-testid": i, children: [
454
- /* @__PURE__ */ n(Z, { htmlFor: w, required: t, children: r }),
455
- /* @__PURE__ */ n(
456
- ne,
457
- {
458
- ref: s,
459
- id: w,
460
- className: e,
461
- required: t || o,
462
- feedback: l ? "error" : void 0,
463
- ...d
464
- }
465
- )
466
- ] });
467
- }), oe = v(({
468
- className: r,
469
- size: e = "md",
470
- feedback: t,
471
- style: o = {},
472
- disabled: l,
473
- ...a
474
- }, i) => /* @__PURE__ */ n(
475
- "select",
476
- {
477
- ref: i,
478
- className: c(
479
- "tw:w-full tw:appearance-none tw:pr-9",
480
- "tw:bg-(image:--chevron-down) tw:bg-no-repeat",
481
- {
482
- "tw:focus-ring": !t,
483
- "tw:focus-ring-danger": t === "error"
484
- },
485
- "tw:rounded-md tw:border",
486
- {
487
- "tw:border-lm-input-border tw:dark:border-dm-input-border": !t,
488
- "tw:border-danger": t === "error"
489
- },
490
- {
491
- "tw:pl-2 tw:py-1 tw:text-sm": e === "sm",
492
- "tw:pl-3 tw:py-1.5": e === "md",
493
- "tw:pl-4 tw:py-2 tw:text-xl": e === "lg",
494
- "tw:bg-lm-disabled-input tw:dark:bg-dm-disabled-input": l,
495
- // Apply different background color when rendered inside a card
496
- "tw:bg-lm-primary tw:dark:bg-dm-primary tw:group-[&]/card:bg-lm-input tw:group-[&]/card:dark:bg-dm-input": !l
497
- },
498
- r
499
- ),
500
- style: {
501
- ...o,
502
- background: "right 0.75rem center / 16px 12px"
503
- },
504
- disabled: l,
505
- ...a
506
- }
507
- )), Qe = v(({ selectClassName: r, label: e, error: t, helpText: o, required: l, hiddenRequired: a, "data-testid": i, ...d }, s) => {
508
- const w = E();
509
- return /* @__PURE__ */ m(z, { error: t, helpText: o, "data-testid": i, children: [
510
- /* @__PURE__ */ n(Z, { htmlFor: w, required: l, children: e }),
511
- /* @__PURE__ */ n(
512
- oe,
513
- {
514
- ref: s,
515
- id: w,
516
- className: r,
517
- required: l || a,
518
- feedback: t ? "error" : void 0,
519
- ...d
520
- }
521
- )
522
- ] });
523
- }), ae = v(({
524
- onChange: r,
525
- containerClassName: e,
526
- inputClassName: t,
527
- // Inputs have a default 'md' size. Search inputs are usually 'lg' as they are rendered at the top of sections
528
- size: o = "lg",
529
- loading: l = !1,
530
- variant: a = "default",
531
- immediate: i = !1,
532
- ...d
533
- }, s) => {
534
- const { setTimeout: w, clearCurrentTimeout: f } = St(500), x = I((g) => {
535
- !g || i ? (f(), r(g)) : w(() => r(g));
536
- }, [f, i, r, w]);
537
- return /* @__PURE__ */ m("div", { className: c("tw:group tw:relative tw:focus-within:z-10", e), children: [
538
- a === "default" && /* @__PURE__ */ n(
539
- C,
540
- {
541
- icon: l ? lt : Nt,
542
- spin: l,
543
- className: c(
544
- "tw:absolute tw:top-[50%] tw:translate-y-[-50%] tw:transition-colors",
545
- "tw:text-placeholder tw:group-focus-within:text-lm-text tw:dark:group-focus-within:text-dm-text",
546
- {
547
- "tw:left-3": o !== "sm",
548
- "tw:scale-85 tw:left-2": o === "sm"
549
- }
550
- )
551
- }
552
- ),
553
- /* @__PURE__ */ n(
554
- Y,
555
- {
556
- ref: s,
557
- variant: a,
558
- type: "search",
559
- className: c(
560
- a === "default" && {
561
- "tw:pl-9": o !== "sm",
562
- "tw:pl-7": o === "sm"
563
- },
564
- t
565
- ),
566
- placeholder: "Search...",
567
- onChange: (g) => x(g.target.value),
568
- size: o,
569
- ...d
570
- }
571
- )
572
- ] });
573
- });
574
- function le({
575
- searchResults: r,
576
- onSearch: e,
577
- onSelectSearchResult: t,
578
- renderSearchResult: o,
579
- size: l = "md",
580
- // SearchInput defaults its size to 'lg'. Change it to 'md'
581
- listboxSpan: a = "full",
582
- onFocus: i,
583
- containerClassName: d,
584
- listboxClassName: s,
585
- ...w
586
- }, f) {
587
- const x = E(), [g, k] = A(), y = O(null);
588
- ht(f, () => y.current);
589
- const u = G(
590
- () => r ? g ?? [...r.keys()][0] : void 0,
591
- [g, r]
592
- ), h = I((b) => {
593
- t(b), e(""), y.current.value = "";
594
- }, [e, t, y]);
595
- return /* @__PURE__ */ m(
596
- "div",
597
- {
598
- className: c("tw:relative", d),
599
- onBlur: (b) => {
600
- b.currentTarget.contains(b.relatedTarget) || e("");
601
- },
602
- children: [
603
- /* @__PURE__ */ n(
604
- ae,
605
- {
606
- onChange: e,
607
- size: l,
608
- ref: y,
609
- role: "combobox",
610
- "aria-autocomplete": "list",
611
- "aria-expanded": !!r,
612
- "aria-controls": x,
613
- "aria-activedescendant": u ? `${x}_${u}` : void 0,
614
- autoComplete: "off",
615
- autoCorrect: "off",
616
- onFocus: (b) => {
617
- i == null || i(b), e(b.target.value);
618
- },
619
- ...w
620
- }
621
- ),
622
- r && /* @__PURE__ */ n(
623
- Yt,
624
- {
625
- id: x,
626
- items: r,
627
- anchor: y,
628
- onSelectItem: h,
629
- onActiveItemChange: k,
630
- renderItem: o,
631
- className: c(
632
- "tw:absolute tw:top-full tw:mt-1 tw:z-10",
633
- {
634
- "tw:min-w-60": a === "auto",
635
- "tw:w-full": a === "full"
636
- },
637
- s
638
- ),
639
- "aria-label": "Matching items",
640
- noItemsMessage: "No results found matching search"
641
- }
642
- )
643
- ]
644
- }
645
- );
646
- }
647
- const ie = v(le), de = ({ name: r, color: e }) => /* @__PURE__ */ m("div", { className: "tw:inline-flex tw:items-center tw:gap-2", children: [
648
- /* @__PURE__ */ n("div", { "aria-hidden": !0, className: "tw:w-4 tw:h-4 tw:rounded-full", style: { backgroundColor: e } }),
649
- r
650
- ] }), se = ({ tag: r, color: e, size: t, onRemove: o }) => (
651
- // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-noninteractive-element-interactions
652
- /* @__PURE__ */ m(
653
- "li",
654
- {
655
- className: p(
656
- "tw:inline-flex tw:items-center tw:gap-1 tw:font-bold tw:[&]:rounded-md",
657
- {
658
- "tw:px-1 tw:text-sm": t === "sm",
659
- "tw:py-0.25 tw:px-1.5": t === "md",
660
- "tw:py-0.5 tw:px-1.5": t === "lg"
661
- }
662
- ),
663
- style: {
664
- backgroundColor: e,
665
- color: Bt(e) ? "#000" : "#fff"
666
- },
667
- onClick: (l) => l.stopPropagation(),
668
- children: [
669
- r,
670
- /* @__PURE__ */ n(X, { label: `Remove ${r}`, solid: !0, size: "sm", onClick: () => o(r) })
671
- ]
672
- }
673
- )
674
- ), we = /\s+/g, nt = "#99a1af", ot = (r) => r.trim().toLowerCase().replace(we, "-"), Ye = ({
675
- tags: r,
676
- selectedTags: e = [],
677
- onTagsChange: t,
678
- getColorForTag: o,
679
- searchMode: l = "startsWith",
680
- immutable: a = !1,
681
- size: i = "md",
682
- disabled: d,
683
- containerClassName: s,
684
- ...w
685
- }) => {
686
- const [f, x] = A(), g = I((h) => {
687
- const b = h.toLowerCase().trim();
688
- if (!b) {
689
- x(void 0);
690
- return;
691
- }
692
- const R = r.filter((N) => {
693
- if (e.includes(N))
694
- return !1;
695
- const B = N.toLowerCase();
696
- return l === "startsWith" ? B.startsWith(b) : B.includes(b);
697
- }).slice(0, 5);
698
- a || R.push(`Add "${b.split(",").map(ot).join(",")}" tag`), x(new Map(R.map((N) => [N, N])));
699
- }, [a, l, e, r]), k = I((h) => {
700
- const b = h.match(/Add\s+"([^"]+)"\s+tag/), R = ((b == null ? void 0 : b[1]) ?? h).split(",").map(ot);
701
- t == null || t([.../* @__PURE__ */ new Set([...e, ...R])]);
702
- }, [t, e]), y = I(
703
- (h) => t == null ? void 0 : t(e.filter((b) => b !== h)),
704
- [t, e]
705
- ), u = O(null);
706
- return (
707
- // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
708
- /* @__PURE__ */ m(
709
- "div",
710
- {
711
- className: p(
712
- "tw:rounded-md tw:flex tw:flex-wrap tw:gap-1",
713
- "tw:border tw:border-lm-input-border tw:dark:border-dm-input-border",
714
- "tw:cursor-text tw:focus-within:focus-within-ring",
715
- {
716
- "tw:p-0.5": i === "sm",
717
- "tw:p-1.25": i === "md",
718
- "tw:p-2": i === "lg",
719
- "tw:bg-lm-disabled-input tw:dark:bg-dm-disabled-input": d,
720
- "tw:bg-lm-primary tw:dark:bg-dm-primary": !d,
721
- // Use different background color when rendered inside a card
722
- "tw:group-[&]/card:bg-lm-input tw:group-[&]/card:dark:bg-dm-input": !d
723
- },
724
- s
725
- ),
726
- onClick: (h) => {
727
- var b;
728
- h.target !== u.current && ((b = u.current) == null || b.focus());
729
- },
730
- children: [
731
- /* @__PURE__ */ n("ul", { className: "tw:m-0 tw:p-0 tw:flex tw:flex-wrap tw:gap-1", children: e.map((h, b) => {
732
- const R = (o == null ? void 0 : o(h)) ?? nt;
733
- return /* @__PURE__ */ n(se, { tag: h, color: R, onRemove: y, size: i }, `${h}${b}`);
734
- }) }),
735
- /* @__PURE__ */ n(
736
- ie,
737
- {
738
- variant: "unstyled",
739
- listboxSpan: "auto",
740
- containerClassName: "tw:flex tw:items-center",
741
- listboxClassName: "tw:whitespace-nowrap",
742
- inputClassName: p(
743
- "tw:no-clear-button",
744
- {
745
- "tw:px-1 tw:text-sm": i === "sm",
746
- "tw:px-2 tw:h-[26px]": i === "md",
747
- "tw:px-3 tw:text-xl": i === "lg"
748
- }
749
- ),
750
- searchResults: f,
751
- onSearch: g,
752
- onSelectSearchResult: k,
753
- renderSearchResult: (h) => h.match(/Add\s+"([^"]+)"\s+tag/) ? h : /* @__PURE__ */ n(de, { name: h, color: (o == null ? void 0 : o(h)) ?? nt }),
754
- onKeyDown: (h) => {
755
- h.key === "Backspace" && !f && y(e[e.length - 1]);
756
- },
757
- size: i,
758
- disabled: d,
759
- ref: u,
760
- immediate: !0,
761
- ...w
762
- }
763
- )
764
- ]
765
- }
766
- )
767
- );
768
- }, Ze = v(({ className: r, ...e }, t) => /* @__PURE__ */ n(
769
- ct,
770
- {
771
- ref: t,
772
- className: p(
773
- "tw:rounded-full tw:w-8 tw:h-4",
774
- "tw:bg-(image:--circle-grey-dark) tw:dark:bg-(image:--circle-grey-light) tw:checked:bg-(image:--circle-white)",
775
- "tw:focus-visible:not-checked:bg-(image:--circle-light-blue)",
776
- "tw:checked:bg-right tw:transition-[background-position]",
777
- r
778
- ),
779
- ...e
780
- }
781
- )), ce = ({ className: r, selected: e, disabled: t, ...o }) => {
782
- const l = "to" in o && typeof o.to == "string";
783
- return (
784
- // @ts-expect-error The Tag is inferred from provided props, so they should always match
785
- /* @__PURE__ */ n(
786
- l ? q : "button",
787
- {
788
- role: "menuitem",
789
- "data-selected": e,
790
- className: p(
791
- "tw:flex tw:items-center tw:gap-2",
792
- "tw:w-full tw:px-3 tw:py-1.5 tw:focus-ring",
793
- // Overwrite link styles in case a Link is being used
794
- "tw:no-underline tw:text-inherit",
795
- {
796
- "tw:cursor-pointer": !t,
797
- "tw:pointer-events-none tw:opacity-50": t,
798
- "tw:bg-lm-secondary tw:dark:bg-dm-secondary": e && !t,
799
- "tw:highlight:bg-lm-secondary tw:dark:highlight:bg-dm-secondary tw:highlight:z-1 tw:relative": !e && !t
800
- },
801
- r
802
- ),
803
- tabIndex: -1,
804
- disabled: l ? void 0 : t,
805
- "aria-disabled": l ? t : void 0,
806
- ...o
807
- }
808
- )
809
- );
810
- }, me = () => (
811
- // TODO Use an <hr /> tag once tailwind styles are not set with !important
812
- /* @__PURE__ */ n("div", { role: "separator", "aria-hidden": !0, className: "tw:border-b tw:border-lm-border tw:dark:border-dm-border tw:my-2" })
813
- ), pe = ({ children: r }) => /* @__PURE__ */ n(
814
- "div",
815
- {
816
- role: "heading",
817
- "aria-level": 6,
818
- "aria-hidden": !0,
819
- className: p(
820
- "tw:flex tw:items-center tw:w-full tw:px-3 tw:py-1.5",
821
- "tw:text-gray-500 tw:text-sm tw:font-semibold"
822
- ),
823
- onClick: (e) => e.stopPropagation(),
824
- children: r
825
- }
826
- ), ue = ({ className: r, onClick: e, ...t }) => (
827
- // eslint-disable-next-line jsx-a11y/click-events-have-key-events, jsx-a11y/no-static-element-interactions
828
- /* @__PURE__ */ n(
829
- "div",
830
- {
831
- className: p("tw:px-3 tw:py-1.5", r),
832
- ...t,
833
- onClick: (o) => {
834
- o.stopPropagation(), e == null || e(o);
835
- }
836
- }
837
- )
838
- ), be = ({
839
- children: r,
840
- className: e,
841
- focusableElementsSelector: t = '[role="menuitem"]:not([disabled]):not([aria-disabled])',
842
- focusFirstItem: o = !1,
843
- ...l
844
- }) => {
845
- const a = O(null);
846
- return Mt(a, { elementsSelector: t, focusFirstItem: o }), /* @__PURE__ */ n(P, { ref: a, role: "menu", className: p("tw:py-2 tw:whitespace-nowrap", e), ...l, children: r });
847
- }, F = Object.assign(be, { Item: ce, Separator: me, Title: pe, Misc: ue }), ge = ({
848
- children: r,
849
- menuAlignment: e = "left",
850
- buttonVariant: t = "button",
851
- buttonContent: o,
852
- buttonClassName: l,
853
- buttonSize: a = "md",
854
- buttonDisabled: i = !1,
855
- containerClassName: d,
856
- menuClassName: s,
857
- caretless: w,
858
- buttonLabel: f,
859
- menuOffset: x = 3
860
- }) => {
861
- const [g, k] = A(!1), y = O(null), { refs: u, floatingStyles: h, context: b } = dt({
862
- open: g,
863
- onOpenChange: k,
864
- placement: e === "right" ? "bottom-end" : "bottom-start",
865
- middleware: [Tt(), _t(x)],
866
- // eslint-disable-next-line react-compiler/react-compiler
867
- elements: { reference: y.current }
868
- }), R = $t(b), { getReferenceProps: N, getFloatingProps: B } = st([
869
- R
870
- ]), $ = E(), j = O(null);
871
- return M(() => {
872
- const D = j.current, V = y.current;
873
- if (!D || !V)
874
- return () => {
875
- };
876
- const tt = new AbortController();
877
- return document.body.addEventListener("click", (gt) => {
878
- gt.composedPath().includes(V) || k(!1);
879
- }, { signal: tt.signal }), () => tt.abort();
880
- }, []), // eslint-disable-next-line jsx-a11y/no-static-element-interactions
881
- /* @__PURE__ */ m(
882
- "div",
883
- {
884
- ref: j,
885
- className: p("tw:relative tw:inline-block", d),
886
- onKeyDown: (D) => {
887
- D.key === "Escape" && k(!1);
888
- },
889
- onBlur: (D) => {
890
- D.relatedTarget && !j.current.contains(D.relatedTarget) && k(!1);
891
- },
892
- children: [
893
- /* @__PURE__ */ m(
894
- "button",
895
- {
896
- ref: y,
897
- ...N(),
898
- type: "button",
899
- "aria-haspopup": !0,
900
- "aria-expanded": g,
901
- "aria-controls": $,
902
- "aria-label": f,
903
- disabled: i,
904
- className: p(
905
- "tw:flex tw:items-center tw:rounded-md tw:focus-ring",
906
- {
907
- "tw:justify-between": !w,
908
- "tw:cursor-pointer": !i,
909
- "tw:pointer-events-none tw:opacity-50": i,
910
- // Button variant
911
- "tw:border tw:border-lm-border tw:dark:border-dm-border": t === "button",
912
- "tw:bg-lm-primary tw:dark:bg-dm-primary": t === "button",
913
- // Use different bg color when inside a card
914
- "tw:group-[&]/card:bg-lm-input tw:group-[&]/card:dark:bg-dm-input": t === "button",
915
- // Link variant
916
- "tw:text-lm-brand tw:dark:text-dm-brand": t === "link",
917
- "tw:highlight:text-lm-brand-dark tw:dark:highlight:text-dm-brand-dark tw:highlight:underline": t === "link",
918
- // Button sizes
919
- "tw:px-1.5 tw:py-1 tw:text-sm": t !== "text" && a === "sm",
920
- "tw:px-3 tw:py-1.5": t !== "text" && a === "md",
921
- "tw:px-4 tw:py-2 tw:text-lg": t !== "text" && a === "lg",
922
- "tw:gap-x-1.5": a === "sm",
923
- "tw:gap-x-2": a !== "sm"
924
- },
925
- l
926
- ),
927
- onKeyDown: (D) => {
928
- D.key === "ArrowDown" && (D.preventDefault(), k(!0));
929
- },
930
- children: [
931
- o,
932
- !w && /* @__PURE__ */ n(C, { icon: Ct, size: "xs" })
933
- ]
934
- }
935
- ),
936
- g && /* @__PURE__ */ n(
937
- "div",
938
- {
939
- ref: u.setFloating,
940
- style: h,
941
- className: "tw:min-w-full tw:z-500",
942
- ...B(),
943
- children: /* @__PURE__ */ n(
944
- F,
945
- {
946
- className: s,
947
- id: $,
948
- focusableElementsSelector: '[role="menuitem"]:not([disabled]):not([aria-disabled]),input:not([disabled]),select:not([disabled])',
949
- focusFirstItem: !0,
950
- children: r
951
- }
952
- )
953
- }
954
- )
955
- ]
956
- }
957
- );
958
- }, L = Object.assign(ge, {
959
- Item: F.Item,
960
- Separator: F.Separator,
961
- Title: F.Title,
962
- Misc: F.Misc
963
- }), he = v(({ className: r, disabled: e, size: t = "md", type: o = "button", ...l }, a) => /* @__PURE__ */ n(
964
- "button",
965
- {
966
- className: c(
967
- "tw:inline-flex tw:rounded-md tw:focus-ring",
968
- "tw:text-lm-brand tw:dark:text-dm-brand",
969
- "tw:highlight:text-lm-brand-dark tw:dark:highlight:text-dm-brand-dark tw:highlight:underline",
970
- {
971
- "tw:px-1.5 tw:py-1 tw:text-sm": t === "sm",
972
- "tw:px-3 tw:py-1.5": t === "md",
973
- "tw:px-4 tw:py-2 tw:text-lg": t === "lg",
974
- "tw:cursor-pointer": !e,
975
- "tw:pointer-events-none tw:opacity-65": e
976
- },
977
- r
978
- ),
979
- disabled: e,
980
- type: o,
981
- ...l,
982
- ref: a
983
- }
984
- )), fe = ({ className: r, active: e, ...t }) => /* @__PURE__ */ n("li", { role: "menuitem", className: "tw:w-full tw:flex", "data-active": e, children: /* @__PURE__ */ n(
985
- q,
986
- {
987
- className: p(
988
- "tw:px-2 tw:py-3",
989
- "tw:max-md:w-full tw:max-md:px-3 tw:max-md:py-2",
990
- "tw:text-white tw:no-underline tw:highlight:opacity-100 tw:transition-opacity",
991
- {
992
- "tw:opacity-60": !e,
993
- "tw:opacity-100": e
994
- },
995
- r
996
- ),
997
- ...t
998
- }
999
- ) }), xe = ({ containerClassName: r, buttonClassName: e, menuClassName: t, active: o, ...l }) => /* @__PURE__ */ n("li", { role: "menuitem", "aria-haspopup": !0, className: "tw:w-full tw:flex", "data-active": o, children: /* @__PURE__ */ n(
1000
- L,
1001
- {
1002
- containerClassName: p("tw:max-md:w-full", r),
1003
- buttonVariant: "text",
1004
- buttonClassName: p(
1005
- "tw:px-2 tw:py-3",
1006
- "tw:max-md:w-full tw:max-md:px-3 tw:max-md:py-2",
1007
- "tw:text-white tw:highlight:opacity-100 tw:transition-opacity",
1008
- {
1009
- "tw:opacity-60": !o,
1010
- "tw:opacity-100": o
1011
- },
1012
- e
1013
- ),
1014
- menuAlignment: "right",
1015
- menuOffset: -3,
1016
- menuClassName: p("tw:mx-2", t),
1017
- ...l
1018
- }
1019
- ) }), ye = ({ className: r, brand: e, children: t }) => {
1020
- const { flag: o, toggle: l, setToFalse: a } = it(!1, !0), i = E(), d = E(), { pathname: s } = ft();
1021
- return M(() => a(), [s, a]), /* @__PURE__ */ m(
1022
- "nav",
1023
- {
1024
- className: p(
1025
- "tw:w-full tw:relative",
1026
- "tw:bg-lm-main tw:dark:bg-dm-main",
1027
- "tw:flex tw:max-md:flex-col tw:items-center tw:justify-between",
1028
- r
1029
- ),
1030
- children: [
1031
- /* @__PURE__ */ m("div", { className: "tw:w-full tw:relative", children: [
1032
- /* @__PURE__ */ n(
1033
- "h4",
1034
- {
1035
- className: p(
1036
- "tw:text-white tw:px-4 tw:py-3",
1037
- "tw:max-md:w-full tw:max-md:flex tw:max-md:flex-col tw:items-center"
1038
- ),
1039
- children: e
1040
- }
1041
- ),
1042
- /* @__PURE__ */ n(
1043
- wt,
1044
- {
1045
- id: d,
1046
- variant: "secondary",
1047
- className: p(
1048
- "tw:absolute tw:right-0 tw:top-[50%] tw:translate-y-[-50%]",
1049
- "tw:md:hidden tw:mx-2 tw:[&]:px-2",
1050
- "tw:opacity-60 tw:highlight:opacity-100 tw:transition-opacity",
1051
- "tw:[&]:text-inherit tw:[&]:border-white tw:[&]:highlight:bg-transparent"
1052
- ),
1053
- onClick: l,
1054
- "aria-label": `${o ? "Hide" : "Show"} menu`,
1055
- "aria-controls": i,
1056
- children: /* @__PURE__ */ n(C, { icon: o ? It : Ot })
1057
- }
1058
- )
1059
- ] }),
1060
- /* @__PURE__ */ n(
1061
- "ul",
1062
- {
1063
- id: i,
1064
- "aria-labelledby": d,
1065
- role: "menu",
1066
- className: p(
1067
- "tw:m-0 tw:p-0",
1068
- "tw:max-md:w-full tw:md:mr-2 tw:max-md:absolute tw:max-md:top-full tw:z-2000",
1069
- "tw:flex tw:max-md:flex-col tw:items-center",
1070
- "tw:bg-lm-main tw:dark:bg-dm-main",
1071
- { "tw:max-md:hidden": !o }
1072
- ),
1073
- children: t
1074
- }
1075
- )
1076
- ]
1077
- }
1078
- );
1079
- }, ze = Object.assign(ye, { MenuItem: fe, Dropdown: xe }), mt = Q(null), ke = ({ className: r, to: e, ...t }) => {
1080
- const o = S(mt);
1081
- return /* @__PURE__ */ n(
1082
- xt,
1083
- {
1084
- role: "menuitem",
1085
- to: e,
1086
- className: ({ isActive: l }) => c(
1087
- "tw:px-4 tw:pt-2 tw:pb-[calc(0.5rem-3px)] tw:border-b-3",
1088
- "tw:highlight:text-lm-brand tw:dark:highlight:text-dm-brand",
1089
- "tw:font-bold tw:text-center tw:no-underline tw:transition-colors",
1090
- "tw:rounded-none tw:outline-none tw:focus-visible:inset-ring-2",
1091
- "tw:focus-visible:inset-ring-lm-brand/50 tw:dark:focus-visible:inset-ring-dm-brand/50",
1092
- {
1093
- "tw:text-lm-brand tw:dark:text-dm-brand": l,
1094
- "tw:border-b-lm-brand tw:dark:border-b-dm-brand active": l,
1095
- "tw:border-b-transparent tw:text-gray-500": !l,
1096
- "tw:flex-grow": o == null ? void 0 : o.fill
1097
- },
1098
- r
1099
- ),
1100
- ...t
1101
- }
1102
- );
1103
- }, ve = ({ children: r, className: e, fill: t }) => /* @__PURE__ */ n(mt.Provider, { value: { fill: t }, children: /* @__PURE__ */ n(P, { role: "menubar", className: c("tw:flex tw:overflow-hidden", e), children: r }) }), Ve = Object.assign(ve, { Pill: ke }), Ne = new Intl.NumberFormat("en-US"), Ce = (r) => Ne.format(Number(r)), at = 10, tr = (r) => Math.ceil(r / at) * at, T = 2, K = "...", Ie = (r, e) => Array.from({ length: e - r }, (t, o) => r + o), Oe = (r, e) => {
1104
- const t = Ie(
1105
- Math.max(T, r - T),
1106
- Math.min(e - 1, r + T) + 1
1107
- );
1108
- return r - T > T && t.unshift(K), r + T < e - 1 && t.push(K), t.unshift(1), t.push(e), t;
1109
- }, H = (r) => r === K, Re = (r) => H(r) ? r : Ce(r), Pe = (r, e) => H(r) ? `${r}_${e}` : `${r}`, pt = [
1110
- "tw:border tw:border-r-0 tw:last:border-r tw:border-lm-border tw:dark:border-dm-border",
1111
- "tw:rounded-none tw:first:rounded-l tw:last:rounded-r"
1112
- ], ut = (r = !1) => c(
1113
- pt,
1114
- "tw:px-3 tw:py-2 tw:cursor-pointer tw:no-underline",
1115
- "tw:focus-ring tw:focus-visible:z-1",
1116
- !r && [
1117
- "tw:text-lm-brand tw:dark:text-dm-brand",
1118
- "tw:bg-lm-primary tw:dark:bg-dm-primary",
1119
- "tw:highlight:bg-lm-secondary tw:dark:highlight:bg-dm-secondary"
1120
- ],
1121
- r && "tw:bg-lm-main tw:dark:bg-dm-main tw:text-white"
1122
- ), J = ({ children: r }) => /* @__PURE__ */ n("span", { "aria-hidden": !0, className: c(pt, "tw:px-3 tw:py-2 tw:text-gray-400"), children: r }), bt = () => /* @__PURE__ */ n(J, { children: K });
1123
- function Le({ children: r, active: e, isEllipsis: t, href: o, ...l }) {
1124
- const a = G(() => ut(e), [e]);
1125
- return t ? /* @__PURE__ */ n(bt, {}) : /* @__PURE__ */ n(q, { className: a, to: o, ...l, children: r });
1126
- }
1127
- function De({ children: r, active: e, isEllipsis: t, ...o }) {
1128
- const l = G(() => ut(e), [e]);
1129
- return t ? /* @__PURE__ */ n(bt, {}) : /* @__PURE__ */ n("button", { type: "button", className: l, ...o, children: r });
1130
- }
1131
- const er = ({ currentPage: r, pagesCount: e, ...t }) => {
1132
- const o = "urlForPage" in t, l = o ? Le : De, a = I(
1133
- (i) => o ? { href: H(i) ? void 0 : t.urlForPage(i) } : { onClick: () => !H(i) && t.onPageChange(i) },
1134
- [o, t]
1135
- );
1136
- return e < 2 ? null : /* @__PURE__ */ m("div", { className: "tw:select-none tw:flex", "data-testid": "paginator", children: [
1137
- r === 1 ? /* @__PURE__ */ n(J, { children: /* @__PURE__ */ n(C, { size: "xs", icon: et }) }) : /* @__PURE__ */ n(l, { ...a(Math.max(1, r - 1)), "aria-label": "Previous", children: /* @__PURE__ */ n(C, { size: "xs", icon: et }) }),
1138
- Oe(r, e).map((i, d) => /* @__PURE__ */ n(
1139
- l,
1140
- {
1141
- active: i === r,
1142
- isEllipsis: H(i),
1143
- ...a(i),
1144
- children: Re(i)
1145
- },
1146
- Pe(i, d)
1147
- )),
1148
- r === e ? /* @__PURE__ */ n(J, { children: /* @__PURE__ */ n(C, { size: "xs", icon: rt }) }) : /* @__PURE__ */ n(l, { ...a(Math.min(e, r + 1)), "aria-label": "Next", children: /* @__PURE__ */ n(C, { size: "xs", icon: rt }) })
1149
- ] });
1150
- }, Se = ({ buttonLabel: r = "Options", buttonSize: e = "md", ...t }) => /* @__PURE__ */ n(
1151
- L,
1152
- {
1153
- buttonContent: /* @__PURE__ */ n(
1154
- C,
1155
- {
1156
- icon: Rt,
1157
- className: p({ "tw:px-1": e === "sm" })
1158
- }
1159
- ),
1160
- caretless: !0,
1161
- buttonLabel: r,
1162
- buttonSize: e,
1163
- ...t
1164
- }
1165
- ), rr = Object.assign(Se, {
1166
- Item: L.Item,
1167
- Separator: L.Separator,
1168
- Title: L.Title,
1169
- Misc: L.Misc
1170
- }), Be = ({
1171
- open: r,
1172
- children: e,
1173
- className: t,
1174
- onClose: o,
1175
- ...l
1176
- }) => {
1177
- const a = O(null);
1178
- return M(() => {
1179
- var w, f;
1180
- const i = document.body, d = i.style.overflow, s = i.style.paddingRight;
1181
- if (r) {
1182
- const x = window.outerWidth - i.clientWidth, g = i.scrollHeight > i.clientHeight;
1183
- i.style.overflow = "hidden", g && (i.style.paddingRight = `${x}px`), (w = a.current) == null || w.showModal();
1184
- } else
1185
- (f = a.current) == null || f.close();
1186
- return () => {
1187
- i.style.overflow = d, i.style.paddingRight = s;
1188
- };
1189
- }, [r]), Ut(
1190
- /* @__PURE__ */ n(
1191
- "dialog",
1192
- {
1193
- ref: a,
1194
- className: c("tw:bg-transparent tw:backdrop:bg-black/50", t),
1195
- onCancel: (i) => {
1196
- i.preventDefault(), o();
1197
- },
1198
- ...l,
1199
- children: r && e
1200
- }
1201
- ),
1202
- document.body
1203
- );
1204
- }, nr = ({
1205
- open: r,
1206
- onClose: e,
1207
- variant: t = "default",
1208
- title: o,
1209
- children: l,
1210
- className: a,
1211
- ...i
1212
- }) => {
1213
- const {
1214
- size: d = "md",
1215
- confirmText: s = "Confirm",
1216
- cancelText: w = "Cancel",
1217
- confirmDisabled: f,
1218
- onConfirm: x,
1219
- onClosed: g,
1220
- ...k
1221
- } = "onConfirm" in i ? i : { ...i }, [y, u] = A(r), h = O(null), b = O("cancel"), R = I((N) => {
1222
- N.preventDefault(), N.stopPropagation(), b.current = "confirm", x == null || x();
1223
- }, [x]);
1224
- return M(() => {
1225
- if (r) {
1226
- b.current = "cancel", u(!0);
1227
- return;
1228
- }
1229
- const N = h.current;
1230
- if (N) {
1231
- delete h.current.dataset.open;
1232
- let B = !1;
1233
- const $ = (j) => {
1234
- B || j.target !== N || (B = !0, u(!1), g == null || g(b.current));
1235
- };
1236
- return N.addEventListener("transitionend", $), () => {
1237
- N.removeEventListener("transitionend", $);
1238
- };
1239
- }
1240
- }, [g, r]), M(() => {
1241
- const N = h.current;
1242
- y && N && (N.dataset.open = "");
1243
- }, [y]), /* @__PURE__ */ n(
1244
- Be,
1245
- {
1246
- open: y,
1247
- onClose: e,
1248
- className: c(
1249
- {
1250
- "tw:flex tw:w-screen tw:h-screen tw:max-w-screen tw:max-h-screen": y,
1251
- "tw:overflow-hidden": t === "cover"
1252
- },
1253
- a
1254
- ),
1255
- ...k,
1256
- children: /* @__PURE__ */ n(
1257
- "form",
1258
- {
1259
- "data-testid": "transition-container",
1260
- ref: h,
1261
- className: c(
1262
- "tw:w-full tw:m-auto tw:p-4 tw:sm:p-6",
1263
- // CSS transitions are based on the presence of the `data-open` attribute
1264
- "tw:-translate-y-4 tw:data-open:translate-y-0 tw:opacity-0 tw:data-open:opacity-100",
1265
- "tw:transition-[opacity_,_translate] tw:duration-300",
1266
- // Handle modal dimensions for different variants and sizes
1267
- t !== "cover" && {
1268
- "tw:sm:w-sm": d === "sm",
1269
- "tw:md:w-lg": d === "md",
1270
- "tw:md:w-4xl": d === "lg",
1271
- "tw:md:w-6xl": d === "xl"
1272
- },
1273
- { "tw:h-full": t === "cover" }
1274
- ),
1275
- onSubmit: R,
1276
- children: /* @__PURE__ */ n(P, { className: c(
1277
- "tw:w-full",
1278
- { "tw:h-full tw:relative tw:overflow-auto": t === "cover" }
1279
- ), children: t === "cover" ? /* @__PURE__ */ m(W, { children: [
1280
- /* @__PURE__ */ m(
1281
- "div",
1282
- {
1283
- className: c(
1284
- "tw:px-4 tw:py-3 tw:absolute tw:top-0 tw:left-0 tw:right-0 tw:z-3000",
1285
- "tw:flex tw:items-center tw:justify-between",
1286
- "tw:text-white tw:bg-linear-to-b tw:from-black/70 tw:to-black/10",
1287
- "tw:[text-shadow:_0_2px_4px_rgb(0_0_0/_0.8)]"
1288
- ),
1289
- children: [
1290
- /* @__PURE__ */ n("h5", { children: o }),
1291
- /* @__PURE__ */ n(X, { onClick: e, label: "Close dialog" })
1292
- ]
1293
- }
1294
- ),
1295
- l
1296
- ] }) : /* @__PURE__ */ m(W, { children: [
1297
- /* @__PURE__ */ m(P.Header, { className: c(
1298
- "tw:sticky tw:top-0",
1299
- "tw:flex tw:items-center tw:justify-between tw:gap-x-2"
1300
- ), children: [
1301
- /* @__PURE__ */ n("h5", { className: c({ "tw:text-danger": t === "danger" }), children: o }),
1302
- /* @__PURE__ */ n(X, { onClick: e, label: "Close dialog" })
1303
- ] }),
1304
- /* @__PURE__ */ n(P.Body, { children: l }),
1305
- x && /* @__PURE__ */ m(
1306
- P.Footer,
1307
- {
1308
- "data-testid": "footer",
1309
- className: c(
1310
- "tw:flex tw:justify-end tw:items-center tw:gap-x-2",
1311
- "tw:[&]:px-3 tw:sticky tw:bottom-0"
1312
- ),
1313
- children: [
1314
- /* @__PURE__ */ n(he, { onClick: e, children: w }),
1315
- /* @__PURE__ */ n(
1316
- wt,
1317
- {
1318
- solid: !0,
1319
- variant: t === "danger" ? "danger" : "primary",
1320
- disabled: f,
1321
- type: "submit",
1322
- children: s
1323
- }
1324
- )
1325
- ]
1326
- }
1327
- )
1328
- ] }) })
1329
- }
1330
- )
1331
- }
1332
- );
1333
- }, or = ({ className: r, children: e, loading: t = !1, variant: o = "default" }) => /* @__PURE__ */ n(Qt, { className: p({ "tw:[&]:border-danger": o === "error" }, r), children: /* @__PURE__ */ m("h3", { className: p("tw:text-center", {
1334
- "tw:text-gray-500 tw:dark:text-gray-400": o === "default",
1335
- "tw:text-danger": o === "error"
1336
- }), children: [
1337
- t && /* @__PURE__ */ m(W, { children: [
1338
- /* @__PURE__ */ n(C, { icon: lt, spin: !0 }),
1339
- /* @__PURE__ */ n("span", { className: "tw:ml-2", children: e ?? "Loading..." })
1340
- ] }),
1341
- !t && e
1342
- ] }) }), ar = ({ variant: r, className: e, size: t = "md", children: o }) => /* @__PURE__ */ n(
1343
- "div",
1344
- {
1345
- className: p(
1346
- "tw:rounded-md tw:text-center",
1347
- {
1348
- "tw:p-2": t === "sm",
1349
- "tw:p-4": t === "md",
1350
- "tw:p-6": t === "lg",
1351
- "tw:[&]:text-white": r !== "warning",
1352
- "tw:bg-lm-brand tw:dark:bg-dm-brand": r === "success",
1353
- "tw:bg-danger": r === "error",
1354
- "tw:bg-warning tw:text-black": r === "warning"
1355
- },
1356
- e
1357
- ),
1358
- children: o
1359
- }
1360
- ), lr = ({ placement: r = "auto" } = {}) => {
1361
- const e = O(null), t = (() => {
1362
- const u = [];
1363
- return r === "auto" && u.push(jt()), u.push(Ft({ element: e })), u;
1364
- })(), [o, l] = A(!1), { refs: a, floatingStyles: i, context: d, middlewareData: s } = dt({
1365
- placement: r === "auto" ? void 0 : r,
1366
- open: o,
1367
- onOpenChange: l,
1368
- middleware: t
1369
- }), w = Ht(d, {
1370
- delay: { open: 300 },
1371
- move: !0
1372
- }), { getFloatingProps: f, getReferenceProps: x } = st([w]), { isMounted: g, styles: k } = Wt(d, { duration: 200 }), y = G(() => {
1373
- const u = d.placement.split("-")[0];
1374
- return {
1375
- top: "bottom",
1376
- right: "left",
1377
- bottom: "top",
1378
- left: "right"
1379
- }[u] ?? "";
1380
- }, [d.placement]);
1381
- return {
1382
- anchor: { ...x(), ref: a.setReference },
1383
- tooltip: {
1384
- ...f(),
1385
- refSetter: a.setFloating,
1386
- isMounted: g,
1387
- styles: { ...i, ...k },
1388
- arrowPos: s.arrow,
1389
- arrowRef: e,
1390
- arrowSide: y
1391
- }
1392
- };
1393
- }, ir = ({ children: r, isMounted: e, styles: t, refSetter: o, arrowRef: l, arrowPos: a, arrowSide: i, ...d }) => {
1394
- var s;
1395
- return e && /* @__PURE__ */ n(
1396
- "div",
1397
- {
1398
- role: "tooltip",
1399
- "aria-live": "polite",
1400
- className: p(
1401
- "tw:z-500 tw:max-w-64",
1402
- // Add space between anchor and tooltip via padding, so that if the tooltip is inside the anchor, you can hover it
1403
- // and it's never closed
1404
- {
1405
- "tw:pt-2.5": i === "top",
1406
- "tw:pb-2.5": i === "bottom",
1407
- "tw:pr-2.5": i === "right",
1408
- "tw:pl-2.5": i === "left"
1409
- }
1410
- ),
1411
- ref: o,
1412
- style: t,
1413
- ...d,
1414
- children: /* @__PURE__ */ m("div", { className: "tw:relative tw:px-1.5 tw:py-1 tw:rounded tw:bg-black/90 tw:text-white tw:text-center", children: [
1415
- /* @__PURE__ */ n("span", { className: "tw:sr-only", children: "Tooltip: " }),
1416
- r,
1417
- /* @__PURE__ */ n(
1418
- "div",
1419
- {
1420
- ref: l,
1421
- className: p(
1422
- "tw:absolute",
1423
- // Render as a triangle
1424
- "tw:border-l-6 tw:border-r-6 tw:border-b-6 tw:border-l-transparent tw:border-r-transparent tw:border-b-black/90",
1425
- // Rotate triangle so that it points to the correct direction
1426
- {
1427
- "tw:rotate-180": i === "bottom",
1428
- "tw:rotate-90 tw:mr-[-3px]": i === "right",
1429
- "tw:rotate-270 tw:ml-[-3px]": i === "left"
1430
- }
1431
- ),
1432
- style: {
1433
- left: a == null ? void 0 : a.x,
1434
- top: a == null ? void 0 : a.y,
1435
- [i]: `${-(((s = l.current) == null ? void 0 : s.offsetWidth) ?? 0) / 2}px`
1436
- },
1437
- "data-testid": "arrow"
1438
- }
1439
- )
1440
- ] })
1441
- }
1442
- );
1443
- };
1444
- function dr({ items: r, order: e, onChange: t, prefixed: o = !0, buttonVariant: l = "button", ...a }) {
1445
- const i = I((s) => {
1446
- const w = Et({ currentOrderDir: e.dir, currentField: e.field, newField: s });
1447
- t(w);
1448
- }, [t, e.dir, e.field]), d = l === "button";
1449
- return /* @__PURE__ */ m(
1450
- L,
1451
- {
1452
- buttonContent: /* @__PURE__ */ m(W, { children: [
1453
- !d && "Order by",
1454
- d && !e.field && /* @__PURE__ */ n("i", { children: "Order by..." }),
1455
- d && e.field && /* @__PURE__ */ m(W, { children: [
1456
- o && "Order by: ",
1457
- r[e.field],
1458
- " - ",
1459
- e.dir ?? "DESC"
1460
- ] })
1461
- ] }),
1462
- buttonVariant: l,
1463
- ...a,
1464
- children: [
1465
- Object.entries(r).map(([s, w]) => /* @__PURE__ */ m(
1466
- L.Item,
1467
- {
1468
- selected: e.field === s,
1469
- onClick: () => i(s),
1470
- className: "tw:flex tw:items-center tw:justify-between tw:gap-2",
1471
- children: [
1472
- w,
1473
- e.field === s && /* @__PURE__ */ n(C, { icon: e.dir === "ASC" ? Pt : Lt })
1474
- ]
1475
- },
1476
- s
1477
- )),
1478
- /* @__PURE__ */ n(L.Separator, {}),
1479
- /* @__PURE__ */ n(L.Item, { disabled: !e.field, onClick: () => t({}), children: /* @__PURE__ */ n("i", { children: "Clear selection" }) })
1480
- ]
1481
- }
1482
- );
1483
- }
1484
- const sr = ({ text: r, className: e, size: t = "lg", initialCopied: o = !1, navigator_: l = globalThis.navigator, ...a }) => {
1485
- const [i, d] = At(o), s = I(
1486
- () => l.clipboard.writeText(r).then(d),
1487
- [l.clipboard, r, d]
1488
- );
1489
- return /* @__PURE__ */ n(
1490
- "button",
1491
- {
1492
- type: "button",
1493
- className: p(
1494
- "tw:focus-ring tw:rounded-sm tw:cursor-pointer",
1495
- {
1496
- "tw:text-md": t === "sm",
1497
- "tw:text-lg": t === "md",
1498
- "tw:text-xl": t === "lg"
1499
- },
1500
- e
1501
- ),
1502
- "aria-label": `Copy ${r} to clipboard`,
1503
- title: "Copy to clipboard",
1504
- onClick: s,
1505
- ...a,
1506
- children: /* @__PURE__ */ n(C, { icon: i ? Dt : Kt, fixedWidth: !0 })
1507
- }
1508
- );
1509
- };
1510
- export {
1511
- ye as BaseNavBar,
1512
- wt as Button,
1513
- P as Card,
1514
- nr as CardModal,
1515
- qe as Checkbox,
1516
- X as CloseButton,
1517
- sr as CopyToClipboardButton,
1518
- Ke as Details,
1519
- L as Dropdown,
1520
- K as ELLIPSIS,
1521
- Y as Input,
1522
- Z as Label,
1523
- Xe as LabelledInput,
1524
- Je as LabelledRevealablePasswordInput,
1525
- Qe as LabelledSelect,
1526
- he as LinkButton,
1527
- Yt as Listbox,
1528
- F as Menu,
1529
- or as Message,
1530
- Be as ModalDialog,
1531
- ze as NavBar,
1532
- Ve as NavPills,
1533
- dr as OrderingDropdown,
1534
- er as Paginator,
1535
- ar as Result,
1536
- ne as RevealablePasswordInput,
1537
- rr as RowDropdown,
1538
- ie as SearchCombobox,
1539
- ae as SearchInput,
1540
- oe as Select,
1541
- Qt as SimpleCard,
1542
- Ge as Table,
1543
- Ye as TagsAutocomplete,
1544
- Ze as ToggleSwitch,
1545
- ir as Tooltip,
1546
- Ce as formatNumber,
1547
- Pe as keyForPage,
1548
- H as pageIsEllipsis,
1549
- Re as prettifyPageNumber,
1550
- Oe as progressivePagination,
1551
- tr as roundTen,
1552
- lr as useTooltip
1553
- };