iguazio.dashboard-react-controls 3.2.24 → 3.2.26

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. package/dist/components/Loader/Loader.d.ts +3 -1
  2. package/dist/components/Loader/Loader.d.ts.map +1 -1
  3. package/dist/components/Loader/Loader.mjs +10 -8
  4. package/dist/components/Loader/Loader.mjs.map +1 -1
  5. package/dist/images/navbar-closed-icon.svg +3 -0
  6. package/dist/images/navbar-closed-icon.svg.mjs +6 -0
  7. package/dist/images/navbar-closed-icon.svg.mjs.map +1 -0
  8. package/dist/images/navbar-opened-icon.svg +3 -0
  9. package/dist/images/navbar-opened-icon.svg.mjs +6 -0
  10. package/dist/images/navbar-opened-icon.svg.mjs.map +1 -0
  11. package/dist/index.css +1 -1
  12. package/dist/nextGenComponents/components/EllipsisTooltip/EllipsisTooltip.d.ts +4 -3
  13. package/dist/nextGenComponents/components/EllipsisTooltip/EllipsisTooltip.d.ts.map +1 -1
  14. package/dist/nextGenComponents/components/EllipsisTooltip/EllipsisTooltip.mjs +24 -16
  15. package/dist/nextGenComponents/components/EllipsisTooltip/EllipsisTooltip.mjs.map +1 -1
  16. package/dist/nextGenComponents/components/index.d.ts +1 -0
  17. package/dist/nextGenComponents/components/index.d.ts.map +1 -1
  18. package/dist/nextGenComponents/components/index.mjs +74 -50
  19. package/dist/nextGenComponents/components/index.mjs.map +1 -1
  20. package/dist/nextGenComponents/components/ui/sidebar.d.ts +76 -0
  21. package/dist/nextGenComponents/components/ui/sidebar.d.ts.map +1 -0
  22. package/dist/nextGenComponents/components/ui/sidebar.mjs +539 -0
  23. package/dist/nextGenComponents/components/ui/sidebar.mjs.map +1 -0
  24. package/dist/nextGenComponents/index.mjs +99 -75
  25. package/dist/nextGenComponents/index.mjs.map +1 -1
  26. package/dist/utils/datetime.util.d.ts.map +1 -1
  27. package/dist/utils/datetime.util.mjs +26 -26
  28. package/dist/utils/datetime.util.mjs.map +1 -1
  29. package/package.json +3 -3
@@ -0,0 +1,539 @@
1
+ import { jsx as i, jsxs as _ } from "react/jsx-runtime";
2
+ import * as r from "react";
3
+ import { Slot as N } from "@radix-ui/react-slot";
4
+ import { cva as T } from "class-variance-authority";
5
+ import { MenuIcon as k, ChevronLeftIcon as E, ChevronRightIcon as A } from "lucide-react";
6
+ import { cn as o } from "../../lib/utils.mjs";
7
+ import { Button as C } from "./button.mjs";
8
+ import { Input as B } from "./input.mjs";
9
+ import { Separator as O } from "./separator.mjs";
10
+ import { TooltipProvider as P, Tooltip as D, TooltipTrigger as L, TooltipContent as G } from "./tooltip.mjs";
11
+ import H from "../../../images/navbar-closed-icon.svg.mjs";
12
+ import K from "../../../images/navbar-opened-icon.svg.mjs";
13
+ const F = "sidebar_state", j = 3600 * 24 * 7, V = "15rem", $ = "70px", q = "b", M = r.createContext(null), y = () => {
14
+ const e = r.useContext(M);
15
+ if (!e)
16
+ throw new Error("useSidebar must be used within a SidebarProvider.");
17
+ return e;
18
+ }, J = r.forwardRef(
19
+ ({ children: e, className: a, defaultOpen: t = !0, onOpenChange: s, open: n, style: c, ...m }, w) => {
20
+ const [g, v] = r.useState(() => {
21
+ try {
22
+ return JSON.parse(localStorage.getItem("isNavbarPinned") || "false");
23
+ } catch {
24
+ return !1;
25
+ }
26
+ }), [p, d] = r.useState(!1), [S, R] = r.useState(t || g), u = n ?? S, b = r.useCallback(
27
+ (f) => {
28
+ const l = typeof f == "function" ? f(u) : f;
29
+ s ? s(l) : R(l), document.cookie = `${F}=${l}; path=/; max-age=${j}`;
30
+ },
31
+ [s, u]
32
+ ), h = r.useCallback(() => b((f) => !f), [b]), x = r.useCallback(() => {
33
+ v((f) => {
34
+ const l = !f;
35
+ return localStorage.setItem("isNavbarPinned", JSON.stringify(l)), b(l), l;
36
+ });
37
+ }, [b]);
38
+ r.useEffect(() => {
39
+ const f = (l) => {
40
+ l.key === q && (l.metaKey || l.ctrlKey) && (l.preventDefault(), h());
41
+ };
42
+ return window.addEventListener("keydown", f), () => window.removeEventListener("keydown", f);
43
+ }, [h]);
44
+ const I = u ? "expanded" : "collapsed", z = r.useMemo(
45
+ () => ({
46
+ state: I,
47
+ open: u,
48
+ setOpen: b,
49
+ toggleSidebar: h,
50
+ pinned: g,
51
+ togglePin: x,
52
+ hoverLocked: p,
53
+ setHoverLocked: d
54
+ }),
55
+ [I, u, b, h, g, x, p]
56
+ );
57
+ return /* @__PURE__ */ i(M.Provider, { value: z, children: /* @__PURE__ */ i(P, { delayDuration: 0, children: /* @__PURE__ */ i(
58
+ "div",
59
+ {
60
+ style: {
61
+ "--sidebar-width": V,
62
+ "--sidebar-width-icon": $,
63
+ ...c
64
+ },
65
+ className: o(
66
+ "group/sidebar-wrapper flex h-full w-full has-[[data-variant=inset]]:bg-sidebar",
67
+ a
68
+ ),
69
+ ref: w,
70
+ ...m,
71
+ children: e
72
+ }
73
+ ) }) });
74
+ }
75
+ );
76
+ J.displayName = "SidebarProvider";
77
+ const U = r.forwardRef(
78
+ ({
79
+ children: e,
80
+ className: a,
81
+ collapsible: t = "offcanvas",
82
+ side: s = "left",
83
+ variant: n = "sidebar",
84
+ ...c
85
+ }, m) => {
86
+ const [w, g] = r.useState(!1), { hoverLocked: v, open: p, pinned: d, state: S, togglePin: R, setOpen: u } = y(), b = r.useRef(null), h = r.useRef(null);
87
+ return r.useEffect(() => {
88
+ if (!v && !w && !d)
89
+ return h.current = setTimeout(() => u(!1), 200), () => clearTimeout(h.current);
90
+ }, [v, w, d, u]), t === "none" ? /* @__PURE__ */ i(
91
+ "nav",
92
+ {
93
+ className: o(
94
+ "flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground",
95
+ a
96
+ ),
97
+ ref: m,
98
+ ...c,
99
+ children: e
100
+ }
101
+ ) : /* @__PURE__ */ i(
102
+ "nav",
103
+ {
104
+ ref: m,
105
+ className: o(
106
+ "group peer relative shrink-0 self-stretch overflow-visible text-sidebar-foreground",
107
+ "transition-[width] duration-300 ease-linear",
108
+ d && p ? "w-[--sidebar-width]" : "w-[--sidebar-width-icon]"
109
+ ),
110
+ "data-state": S,
111
+ "data-collapsible": S === "collapsed" ? t : "",
112
+ "data-variant": n,
113
+ "data-side": s,
114
+ "data-pinned": d,
115
+ onMouseEnter: () => {
116
+ clearTimeout(h.current), clearTimeout(b.current), g(!0), d || (b.current = setTimeout(() => u(!0), 100));
117
+ },
118
+ onMouseLeave: () => {
119
+ clearTimeout(b.current), g(!1), !d && !v && u(!1);
120
+ },
121
+ onTransitionEnd: (x) => {
122
+ x.target === x.currentTarget && x.propertyName === "width" && window.dispatchEvent(new CustomEvent("mainResize"));
123
+ },
124
+ children: /* @__PURE__ */ i(
125
+ "div",
126
+ {
127
+ className: o(
128
+ "absolute inset-y-0 left-0 z-20 flex flex-col transition-[width] duration-300 ease-linear md:flex",
129
+ s === "left" && d && "group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]",
130
+ s === "right" && d && "group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
131
+ n === "floating" || n === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]" : o(
132
+ "group-data-[side=left]:border-r group-data-[side=right]:border-l",
133
+ p && !d || d && S === "expanded" ? "w-[--sidebar-width]" : "w-[--sidebar-width-icon]"
134
+ ),
135
+ a
136
+ ),
137
+ ...c,
138
+ children: /* @__PURE__ */ _(
139
+ "div",
140
+ {
141
+ "data-sidebar": "sidebar",
142
+ className: "flex size-full flex-col bg-sidebar shadow-[1px_4px_16px_rgba(0,0,0,0.04)] group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow",
143
+ children: [
144
+ e,
145
+ p && /* @__PURE__ */ i(
146
+ C,
147
+ {
148
+ variant: "outline",
149
+ tooltip: d ? "Unpin sidebar" : "Pin sidebar",
150
+ "data-testid": "pin-sidebar-button",
151
+ side: "right",
152
+ className: o(
153
+ "absolute top-2 left-full border bg-[#FAFAFA] border-gray-200 border-solid",
154
+ "w-fit h-fit rounded-l-none border-l-0 py-2 pr-[3px] pl-[1px]",
155
+ "transition-opacity hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
156
+ d ? "opacity-100" : "opacity-0 group-hover:opacity-100"
157
+ ),
158
+ onClick: R,
159
+ children: d ? /* @__PURE__ */ i(H, { "data-testid": "closeed-pin" }) : /* @__PURE__ */ i(K, { "data-testid": "opened-pin" })
160
+ }
161
+ )
162
+ ]
163
+ }
164
+ )
165
+ }
166
+ )
167
+ }
168
+ );
169
+ }
170
+ );
171
+ U.displayName = "Sidebar";
172
+ const W = r.forwardRef(
173
+ ({ className: e, icon: a = "menu", onClick: t, ...s }, n) => {
174
+ const { toggleSidebar: c } = y();
175
+ return /* @__PURE__ */ _(
176
+ C,
177
+ {
178
+ ref: n,
179
+ "data-sidebar": "trigger",
180
+ variant: "ghost",
181
+ size: "icon",
182
+ className: o("size-9", e),
183
+ onClick: (m) => {
184
+ t == null || t(m), c();
185
+ },
186
+ ...s,
187
+ children: [
188
+ a === "menu" && /* @__PURE__ */ i(k, { className: "size-4 shrink-0" }),
189
+ a === "chevronLeft" && /* @__PURE__ */ i(E, { className: "size-4 shrink-0" }),
190
+ a === "chevronRight" && /* @__PURE__ */ i(A, { className: "size-4 shrink-0" }),
191
+ /* @__PURE__ */ i("span", { className: "sr-only", children: "Toggle Sidebar" })
192
+ ]
193
+ }
194
+ );
195
+ }
196
+ );
197
+ W.displayName = "SidebarTrigger";
198
+ const X = r.forwardRef(({ className: e, ...a }, t) => {
199
+ const { toggleSidebar: s } = y();
200
+ return /* @__PURE__ */ i(
201
+ "button",
202
+ {
203
+ ref: t,
204
+ "data-sidebar": "rail",
205
+ "aria-label": "Toggle Sidebar",
206
+ tabIndex: -1,
207
+ onClick: s,
208
+ title: "Toggle Sidebar",
209
+ className: o(
210
+ "absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex",
211
+ "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize",
212
+ "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize",
213
+ "group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar",
214
+ "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2",
215
+ "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2",
216
+ e
217
+ ),
218
+ ...a
219
+ }
220
+ );
221
+ });
222
+ X.displayName = "SidebarRail";
223
+ const Y = r.forwardRef(
224
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
225
+ "main",
226
+ {
227
+ ref: t,
228
+ className: o(
229
+ "relative flex min-h-0 flex-1 flex-col bg-background transition-[width] duration-300 ease-linear",
230
+ "peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow",
231
+ e
232
+ ),
233
+ ...a
234
+ }
235
+ )
236
+ );
237
+ Y.displayName = "SidebarInset";
238
+ const Q = r.forwardRef(
239
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
240
+ B,
241
+ {
242
+ ref: t,
243
+ "data-sidebar": "input",
244
+ className: o(
245
+ "h-9 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring",
246
+ e
247
+ ),
248
+ ...a
249
+ }
250
+ )
251
+ );
252
+ Q.displayName = "SidebarInput";
253
+ const Z = r.forwardRef(
254
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
255
+ "div",
256
+ {
257
+ ref: t,
258
+ "data-sidebar": "header",
259
+ className: o("flex gap-2 py-3.5", e),
260
+ ...a
261
+ }
262
+ )
263
+ );
264
+ Z.displayName = "SidebarHeader";
265
+ const ee = r.forwardRef(
266
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
267
+ "div",
268
+ {
269
+ ref: t,
270
+ "data-sidebar": "footer",
271
+ className: o("flex flex-col gap-2 p-3", e),
272
+ ...a
273
+ }
274
+ )
275
+ );
276
+ ee.displayName = "SidebarFooter";
277
+ const ae = r.forwardRef(({ className: e, ...a }, t) => /* @__PURE__ */ i(
278
+ O,
279
+ {
280
+ ref: t,
281
+ "data-sidebar": "separator",
282
+ className: o("mx-5 mb-2 w-auto bg-sidebar-border", e),
283
+ ...a
284
+ }
285
+ ));
286
+ ae.displayName = "SidebarSeparator";
287
+ const te = r.forwardRef(
288
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
289
+ "div",
290
+ {
291
+ ref: t,
292
+ "data-sidebar": "content",
293
+ className: o(
294
+ "flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden",
295
+ e
296
+ ),
297
+ ...a
298
+ }
299
+ )
300
+ );
301
+ te.displayName = "SidebarContent";
302
+ const re = r.forwardRef(
303
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
304
+ "div",
305
+ {
306
+ ref: t,
307
+ "data-sidebar": "group",
308
+ className: o("relative flex w-full min-w-0 flex-col p-3", e),
309
+ ...a
310
+ }
311
+ )
312
+ );
313
+ re.displayName = "SidebarGroup";
314
+ const ie = r.forwardRef(
315
+ ({ asChild: e = !1, className: a, ...t }, s) => /* @__PURE__ */ i(
316
+ e ? N : "div",
317
+ {
318
+ ref: s,
319
+ "data-sidebar": "group-label",
320
+ className: o(
321
+ "flex h-9 shrink-0 items-center rounded-md px-2.5 text-sm font-medium outline-none whitespace-nowrap ring-sidebar-ring focus-visible:ring-2 [&>svg]:size-5 [&>svg]:shrink-0",
322
+ "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0",
323
+ a
324
+ ),
325
+ ...t
326
+ }
327
+ )
328
+ );
329
+ ie.displayName = "SidebarGroupLabel";
330
+ const oe = r.forwardRef(
331
+ ({ asChild: e = !1, className: a, ...t }, s) => /* @__PURE__ */ i(
332
+ e ? N : "button",
333
+ {
334
+ ref: s,
335
+ "data-sidebar": "group-action",
336
+ className: o(
337
+ "absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-5 [&>svg]:shrink-0",
338
+ "after:absolute after:-inset-2 after:md:hidden",
339
+ "group-data-[collapsible=icon]:hidden",
340
+ a
341
+ ),
342
+ ...t
343
+ }
344
+ )
345
+ );
346
+ oe.displayName = "SidebarGroupAction";
347
+ const se = r.forwardRef(
348
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
349
+ "div",
350
+ {
351
+ ref: t,
352
+ "data-sidebar": "group-content",
353
+ className: o("w-full text-sm", e),
354
+ ...a
355
+ }
356
+ )
357
+ );
358
+ se.displayName = "SidebarGroupContent";
359
+ const ne = r.forwardRef(
360
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
361
+ "ul",
362
+ {
363
+ ref: t,
364
+ "data-sidebar": "menu",
365
+ className: o("flex w-full min-w-0 p-0 m-0 flex-col gap-1 items-center", e),
366
+ ...a
367
+ }
368
+ )
369
+ );
370
+ ne.displayName = "SidebarMenu";
371
+ const de = r.forwardRef(
372
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
373
+ "li",
374
+ {
375
+ ref: t,
376
+ "data-sidebar": "menu-item",
377
+ className: o("group/menu-item flex relative w-full", e),
378
+ ...a
379
+ }
380
+ )
381
+ );
382
+ de.displayName = "SidebarMenuItem";
383
+ const le = T(
384
+ "peer/menu-button flex flex-1 w-full items-center gap-2 text-inherit overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-active-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-active-accent-foreground [&_svg_path]:fill-current data-[state=open]:hover:bg-sidebar-accent whitespace-nowrap [&>svg]:size-5 [&>svg]:shrink-0",
385
+ {
386
+ variants: {
387
+ variant: {
388
+ default: "hover:bg-sidebar-accent",
389
+ outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]"
390
+ },
391
+ size: {
392
+ default: "text-sm",
393
+ sm: "h-8 text-xs",
394
+ lg: "h-12 text-sm group-data-[collapsible=icon]:!m-0"
395
+ }
396
+ },
397
+ defaultVariants: {
398
+ variant: "default",
399
+ size: "default"
400
+ }
401
+ }
402
+ ), ce = r.forwardRef(
403
+ ({
404
+ asChild: e = !1,
405
+ className: a,
406
+ isActive: t = !1,
407
+ size: s = "default",
408
+ tooltip: n,
409
+ variant: c = "default",
410
+ ...m
411
+ }, w) => {
412
+ const g = e ? N : "button", { state: v } = y(), p = /* @__PURE__ */ i(
413
+ g,
414
+ {
415
+ ref: w,
416
+ "data-sidebar": "menu-button",
417
+ "data-size": s,
418
+ "data-active": t,
419
+ className: o(le({ variant: c, size: s }), a),
420
+ ...m
421
+ }
422
+ );
423
+ return n ? /* @__PURE__ */ _(D, { children: [
424
+ /* @__PURE__ */ i(L, { asChild: !0, children: p }),
425
+ /* @__PURE__ */ i(
426
+ G,
427
+ {
428
+ side: "right",
429
+ align: "center",
430
+ hidden: v !== "collapsed",
431
+ ...typeof n == "string" ? { children: n } : n
432
+ }
433
+ )
434
+ ] }) : p;
435
+ }
436
+ );
437
+ ce.displayName = "SidebarMenuButton";
438
+ const ue = r.forwardRef(
439
+ ({ asChild: e = !1, className: a, showOnHover: t = !1, ...s }, n) => /* @__PURE__ */ i(
440
+ e ? N : "button",
441
+ {
442
+ ref: n,
443
+ "data-sidebar": "menu-action",
444
+ className: o(
445
+ "absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0",
446
+ "after:absolute after:-inset-2 after:md:hidden",
447
+ "peer-data-[size=sm]/menu-button:top-1",
448
+ "peer-data-[size=default]/menu-button:top-1.5",
449
+ "peer-data-[size=lg]/menu-button:top-2.5",
450
+ "group-data-[collapsible=icon]:hidden",
451
+ t && "hidden group-hocus:flex",
452
+ a
453
+ ),
454
+ ...s
455
+ }
456
+ )
457
+ );
458
+ ue.displayName = "SidebarMenuAction";
459
+ const be = r.forwardRef(
460
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
461
+ "span",
462
+ {
463
+ ref: t,
464
+ "data-sidebar": "menu-badge",
465
+ className: o(
466
+ "inline-flex h-5 items-center rounded-full bg-sidebar-accent px-2 py-0.5 text-xs font-medium text-sidebar-accent-foreground",
467
+ e
468
+ ),
469
+ ...a
470
+ }
471
+ )
472
+ );
473
+ be.displayName = "SidebarMenuBadge";
474
+ const fe = r.forwardRef(
475
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
476
+ "ul",
477
+ {
478
+ ref: t,
479
+ "data-sidebar": "menu-sub",
480
+ className: o("flex flex-col gap-1 p-0", e),
481
+ ...a
482
+ }
483
+ )
484
+ );
485
+ fe.displayName = "SidebarMenuSub";
486
+ const pe = r.forwardRef(
487
+ ({ className: e, ...a }, t) => /* @__PURE__ */ i(
488
+ "li",
489
+ {
490
+ ref: t,
491
+ "data-sidebar": "menu-sub-item",
492
+ className: o("flex w-full", e),
493
+ ...a
494
+ }
495
+ )
496
+ );
497
+ pe.displayName = "SidebarMenuSubItem";
498
+ const me = r.forwardRef(
499
+ ({ asChild: e = !1, className: a, size: t = "default", ...s }, n) => /* @__PURE__ */ i(
500
+ e ? N : "button",
501
+ {
502
+ ref: n,
503
+ "data-sidebar": "menu-sub-button",
504
+ "data-size": t,
505
+ className: o(
506
+ "flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 whitespace-nowrap [&>svg]:size-4 [&>svg]:shrink-0",
507
+ a
508
+ ),
509
+ ...s
510
+ }
511
+ )
512
+ );
513
+ me.displayName = "SidebarMenuSubButton";
514
+ export {
515
+ U as Sidebar,
516
+ te as SidebarContent,
517
+ ee as SidebarFooter,
518
+ re as SidebarGroup,
519
+ oe as SidebarGroupAction,
520
+ se as SidebarGroupContent,
521
+ ie as SidebarGroupLabel,
522
+ Z as SidebarHeader,
523
+ Q as SidebarInput,
524
+ Y as SidebarInset,
525
+ ne as SidebarMenu,
526
+ ue as SidebarMenuAction,
527
+ be as SidebarMenuBadge,
528
+ ce as SidebarMenuButton,
529
+ de as SidebarMenuItem,
530
+ fe as SidebarMenuSub,
531
+ me as SidebarMenuSubButton,
532
+ pe as SidebarMenuSubItem,
533
+ J as SidebarProvider,
534
+ X as SidebarRail,
535
+ ae as SidebarSeparator,
536
+ W as SidebarTrigger,
537
+ y as useSidebar
538
+ };
539
+ //# sourceMappingURL=sidebar.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sidebar.mjs","sources":["../../../../src/lib/nextGenComponents/components/ui/sidebar.tsx"],"sourcesContent":["/*\nCopyright 2019 Iguazio Systems Ltd.\n\nLicensed under the Apache License, Version 2.0 (the \"License\") with\nan addition restriction as set forth herein. You may not use this\nfile except in compliance with the License. You may obtain a copy of\nthe License at http://www.apache.org/licenses/LICENSE-2.0.\n\nUnless required by applicable law or agreed to in writing, software\ndistributed under the License is distributed on an \"AS IS\" BASIS,\nWITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\nimplied. See the License for the specific language governing\npermissions and limitations under the License.\n\nIn addition, you may not use the software for any purposes that are\nillegal under applicable law, and the grant of the foregoing license\nunder the Apache 2.0 license is conditioned upon your compliance with\nsuch restriction.\n*/\nimport * as React from 'react'\nimport { Slot } from '@radix-ui/react-slot'\nimport { cva, type VariantProps } from 'class-variance-authority'\nimport { ChevronLeftIcon, ChevronRightIcon, MenuIcon } from 'lucide-react'\n\nimport { cn } from '@/lib/utils'\nimport { Button } from './button'\nimport { Input } from './input'\nimport { Separator } from './separator'\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip'\n\nimport SidebarClose from '../../../images/navbar-closed-icon.svg?react'\nimport SidebarOpen from '../../../images/navbar-opened-icon.svg?react'\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state'\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7\nconst SIDEBAR_WIDTH = '15rem'\nconst SIDEBAR_WIDTH_ICON = '70px'\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b'\n\ninterface SidebarContextValue {\n state: 'expanded' | 'collapsed'\n open: boolean\n setOpen: (value: boolean | ((prev: boolean) => boolean)) => void\n toggleSidebar: () => void\n pinned: boolean\n togglePin: () => void\n hoverLocked: boolean\n setHoverLocked: (locked: boolean) => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextValue | null>(null)\n\nconst useSidebar = (): SidebarContextValue => {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.')\n }\n return context\n}\n\ninterface SidebarProviderProps extends React.HTMLAttributes<HTMLDivElement> {\n children: React.ReactNode\n defaultOpen?: boolean\n onOpenChange?: (open: boolean) => void\n open?: boolean\n}\n\nconst SidebarProvider = React.forwardRef<HTMLDivElement, SidebarProviderProps>(\n (\n { children, className, defaultOpen = true, onOpenChange, open: openProp, style, ...props },\n ref\n ) => {\n const [pinned, setPinned] = React.useState<boolean>(() => {\n try {\n return JSON.parse(localStorage.getItem('isNavbarPinned') || 'false')\n } catch {\n return false\n }\n })\n const [hoverLocked, setHoverLocked] = React.useState(false)\n const [_open, _setOpen] = React.useState(defaultOpen || pinned)\n const open = openProp ?? _open\n\n const setOpen = React.useCallback(\n (value: boolean | ((prev: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value\n if (onOpenChange) {\n onOpenChange(openState)\n } else {\n _setOpen(openState)\n }\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [onOpenChange, open]\n )\n\n const toggleSidebar = React.useCallback(() => setOpen(prev => !prev), [setOpen])\n\n const togglePin = React.useCallback(() => {\n setPinned(prev => {\n const newValue = !prev\n localStorage.setItem('isNavbarPinned', JSON.stringify(newValue))\n setOpen(newValue)\n return newValue\n })\n }, [setOpen])\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n window.addEventListener('keydown', handleKeyDown)\n return () => window.removeEventListener('keydown', handleKeyDown)\n }, [toggleSidebar])\n\n const state: 'expanded' | 'collapsed' = open ? 'expanded' : 'collapsed'\n\n const contextValue = React.useMemo(\n () => ({\n state,\n open,\n setOpen,\n toggleSidebar,\n pinned,\n togglePin,\n hoverLocked,\n setHoverLocked\n }),\n [state, open, setOpen, toggleSidebar, pinned, togglePin, hoverLocked]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper flex h-full w-full has-[[data-variant=inset]]:bg-sidebar',\n className\n )}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n )\n }\n)\nSidebarProvider.displayName = 'SidebarProvider'\n\ninterface SidebarProps extends React.HTMLAttributes<HTMLElement> {\n children: React.ReactNode\n side?: 'left' | 'right'\n variant?: 'sidebar' | 'floating' | 'inset'\n collapsible?: 'offcanvas' | 'icon' | 'none'\n}\n\nconst Sidebar = React.forwardRef<HTMLElement, SidebarProps>(\n (\n {\n children,\n className,\n collapsible = 'offcanvas',\n side = 'left',\n variant = 'sidebar',\n ...props\n },\n ref\n ) => {\n const [isMouseOver, setIsMouseOver] = React.useState(false)\n const { hoverLocked, open, pinned, state, togglePin, setOpen } = useSidebar()\n const openTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n const closeTimerRef = React.useRef<ReturnType<typeof setTimeout> | null>(null)\n\n React.useEffect(() => {\n if (!hoverLocked && !isMouseOver && !pinned) {\n closeTimerRef.current = setTimeout(() => setOpen(false), 200)\n return () => clearTimeout(closeTimerRef.current!)\n }\n }, [hoverLocked, isMouseOver, pinned, setOpen])\n\n if (collapsible === 'none') {\n return (\n <nav\n className={cn(\n 'flex h-full w-[--sidebar-width] flex-col bg-sidebar text-sidebar-foreground',\n className\n )}\n ref={ref as React.Ref<HTMLElement>}\n {...props}\n >\n {children}\n </nav>\n )\n }\n\n return (\n <nav\n ref={ref as React.Ref<HTMLElement>}\n className={cn(\n 'group peer relative shrink-0 self-stretch overflow-visible text-sidebar-foreground',\n 'transition-[width] duration-300 ease-linear',\n pinned && open ? 'w-[--sidebar-width]' : 'w-[--sidebar-width-icon]'\n )}\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n data-pinned={pinned}\n onMouseEnter={() => {\n clearTimeout(closeTimerRef.current!)\n clearTimeout(openTimerRef.current!)\n setIsMouseOver(true)\n if (!pinned) {\n openTimerRef.current = setTimeout(() => setOpen(true), 100)\n }\n }}\n onMouseLeave={() => {\n clearTimeout(openTimerRef.current!)\n setIsMouseOver(false)\n if (!pinned && !hoverLocked) {\n setOpen(false)\n }\n }}\n onTransitionEnd={(e: React.TransitionEvent<HTMLElement>) => {\n if (e.target === e.currentTarget && e.propertyName === 'width') {\n window.dispatchEvent(new CustomEvent('mainResize'))\n }\n }}\n >\n <div\n className={cn(\n 'absolute inset-y-0 left-0 z-20 flex flex-col transition-[width] duration-300 ease-linear md:flex',\n side === 'left' &&\n pinned &&\n 'group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]',\n side === 'right' &&\n pinned &&\n 'group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]',\n variant === 'floating' || variant === 'inset'\n ? 'p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]'\n : cn(\n 'group-data-[side=left]:border-r group-data-[side=right]:border-l',\n (open && !pinned) || (pinned && state === 'expanded')\n ? 'w-[--sidebar-width]'\n : 'w-[--sidebar-width-icon]'\n ),\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n className=\"flex size-full flex-col bg-sidebar shadow-[1px_4px_16px_rgba(0,0,0,0.04)] group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow\"\n >\n {children}\n {open && (\n <Button\n variant=\"outline\"\n tooltip={pinned ? 'Unpin sidebar' : 'Pin sidebar'}\n data-testid=\"pin-sidebar-button\"\n side=\"right\"\n className={cn(\n 'absolute top-2 left-full border bg-[#FAFAFA] border-gray-200 border-solid',\n 'w-fit h-fit rounded-l-none border-l-0 py-2 pr-[3px] pl-[1px]',\n 'transition-opacity hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n pinned ? 'opacity-100' : 'opacity-0 group-hover:opacity-100'\n )}\n onClick={togglePin}\n >\n {pinned ? (\n <SidebarClose data-testid=\"closeed-pin\" />\n ) : (\n <SidebarOpen data-testid=\"opened-pin\" />\n )}\n </Button>\n )}\n </div>\n </div>\n </nav>\n )\n }\n)\nSidebar.displayName = 'Sidebar'\n\ninterface SidebarTriggerProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n icon?: 'menu' | 'chevronLeft' | 'chevronRight'\n}\n\nconst SidebarTrigger = React.forwardRef<HTMLButtonElement, SidebarTriggerProps>(\n ({ className, icon = 'menu', onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('size-9', className)}\n onClick={event => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n {icon === 'menu' && <MenuIcon className=\"size-4 shrink-0\" />}\n {icon === 'chevronLeft' && <ChevronLeftIcon className=\"size-4 shrink-0\" />}\n {icon === 'chevronRight' && <ChevronRightIcon className=\"size-4 shrink-0\" />}\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n }\n)\nSidebarTrigger.displayName = 'SidebarTrigger'\n\nconst SidebarRail = React.forwardRef<\n HTMLButtonElement,\n React.ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => {\n const { toggleSidebar } = useSidebar()\n return (\n <button\n ref={ref}\n data-sidebar=\"rail\"\n aria-label=\"Toggle Sidebar\"\n tabIndex={-1}\n onClick={toggleSidebar}\n title=\"Toggle Sidebar\"\n className={cn(\n 'absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] hover:after:bg-sidebar-border group-data-[side=left]:-right-4 group-data-[side=right]:left-0 sm:flex',\n '[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize',\n '[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize',\n 'group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-sidebar',\n '[[data-side=left][data-collapsible=offcanvas]_&]:-right-2',\n '[[data-side=right][data-collapsible=offcanvas]_&]:-left-2',\n className\n )}\n {...props}\n />\n )\n})\nSidebarRail.displayName = 'SidebarRail'\n\nconst SidebarInset = React.forwardRef<HTMLElement, React.HTMLAttributes<HTMLElement>>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref as React.Ref<HTMLElement>}\n className={cn(\n 'relative flex min-h-0 flex-1 flex-col bg-background transition-[width] duration-300 ease-linear',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow',\n className\n )}\n {...props}\n />\n )\n }\n)\nSidebarInset.displayName = 'SidebarInset'\n\nconst SidebarInput = React.forwardRef<HTMLInputElement, React.ComponentProps<typeof Input>>(\n ({ className, ...props }, ref) => (\n <Input\n ref={ref}\n data-sidebar=\"input\"\n className={cn(\n 'h-9 w-full bg-background shadow-none focus-visible:ring-2 focus-visible:ring-sidebar-ring',\n className\n )}\n {...props}\n />\n )\n)\nSidebarInput.displayName = 'SidebarInput'\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn('flex gap-2 py-3.5', className)}\n {...props}\n />\n )\n)\nSidebarHeader.displayName = 'SidebarHeader'\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2 p-3', className)}\n {...props}\n />\n )\n)\nSidebarFooter.displayName = 'SidebarFooter'\n\nconst SidebarSeparator = React.forwardRef<\n React.ElementRef<typeof Separator>,\n React.ComponentPropsWithoutRef<typeof Separator>\n>(({ className, ...props }, ref) => (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('mx-5 mb-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n))\nSidebarSeparator.displayName = 'SidebarSeparator'\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n)\nSidebarContent.displayName = 'SidebarContent'\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-3', className)}\n {...props}\n />\n )\n)\nSidebarGroup.displayName = 'SidebarGroup'\n\ninterface SidebarGroupLabelProps extends React.HTMLAttributes<HTMLDivElement> {\n asChild?: boolean\n}\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, SidebarGroupLabelProps>(\n ({ asChild = false, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div'\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-9 shrink-0 items-center rounded-md px-2.5 text-sm font-medium outline-none whitespace-nowrap ring-sidebar-ring focus-visible:ring-2 [&>svg]:size-5 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n )\n }\n)\nSidebarGroupLabel.displayName = 'SidebarGroupLabel'\n\ninterface SidebarGroupActionProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean\n}\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, SidebarGroupActionProps>(\n ({ asChild = false, className, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-action\"\n className={cn(\n 'absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 [&>svg]:size-5 [&>svg]:shrink-0',\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[collapsible=icon]:hidden',\n className\n )}\n {...props}\n />\n )\n }\n)\nSidebarGroupAction.displayName = 'SidebarGroupAction'\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn('w-full text-sm', className)}\n {...props}\n />\n )\n)\nSidebarGroupContent.displayName = 'SidebarGroupContent'\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.HTMLAttributes<HTMLUListElement>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 p-0 m-0 flex-col gap-1 items-center', className)}\n {...props}\n />\n )\n)\nSidebarMenu.displayName = 'SidebarMenu'\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.HTMLAttributes<HTMLLIElement>>(\n ({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item flex relative w-full', className)}\n {...props}\n />\n )\n)\nSidebarMenuItem.displayName = 'SidebarMenuItem'\n\nconst sidebarMenuButtonVariants = cva(\n 'peer/menu-button flex flex-1 w-full items-center gap-2 text-inherit overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] hover:bg-sidebar-accent focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-active-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-active-accent-foreground [&_svg_path]:fill-current data-[state=open]:hover:bg-sidebar-accent whitespace-nowrap [&>svg]:size-5 [&>svg]:shrink-0',\n {\n variants: {\n variant: {\n default: 'hover:bg-sidebar-accent',\n outline:\n 'bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]'\n },\n size: {\n default: 'text-sm',\n sm: 'h-8 text-xs',\n lg: 'h-12 text-sm group-data-[collapsible=icon]:!m-0'\n }\n },\n defaultVariants: {\n variant: 'default',\n size: 'default'\n }\n }\n)\n\ninterface SidebarMenuButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof sidebarMenuButtonVariants> {\n asChild?: boolean\n isActive?: boolean\n tooltip?: string | Record<string, unknown>\n}\n\nconst SidebarMenuButton = React.forwardRef<HTMLButtonElement, SidebarMenuButtonProps>(\n (\n {\n asChild = false,\n className,\n isActive = false,\n size = 'default',\n tooltip,\n variant = 'default',\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : 'button'\n const { state } = useSidebar()\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n className={cn(sidebarMenuButtonVariants({ variant, size }), className)}\n {...(props as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n />\n )\n\n if (!tooltip) return button\n const tooltipProps = typeof tooltip === 'string' ? { children: tooltip } : tooltip\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed'}\n {...tooltipProps}\n />\n </Tooltip>\n )\n }\n)\nSidebarMenuButton.displayName = 'SidebarMenuButton'\n\ninterface SidebarMenuActionProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean\n showOnHover?: boolean\n}\n\nconst SidebarMenuAction = React.forwardRef<HTMLButtonElement, SidebarMenuActionProps>(\n ({ asChild = false, className, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n 'after:absolute after:-inset-2 after:md:hidden',\n 'peer-data-[size=sm]/menu-button:top-1',\n 'peer-data-[size=default]/menu-button:top-1.5',\n 'peer-data-[size=lg]/menu-button:top-2.5',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover && 'hidden group-hocus:flex',\n className\n )}\n {...(props as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n />\n )\n }\n)\nSidebarMenuAction.displayName = 'SidebarMenuAction'\n\nconst SidebarMenuBadge = React.forwardRef<HTMLSpanElement, React.HTMLAttributes<HTMLSpanElement>>(\n ({ className, ...props }, ref) => (\n <span\n ref={ref}\n data-sidebar=\"menu-badge\"\n className={cn(\n 'inline-flex h-5 items-center rounded-full bg-sidebar-accent px-2 py-0.5 text-xs font-medium text-sidebar-accent-foreground',\n className\n )}\n {...props}\n />\n )\n)\nSidebarMenuBadge.displayName = 'SidebarMenuBadge'\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.HTMLAttributes<HTMLUListElement>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu-sub\"\n className={cn('flex flex-col gap-1 p-0', className)}\n {...props}\n />\n )\n)\nSidebarMenuSub.displayName = 'SidebarMenuSub'\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.HTMLAttributes<HTMLLIElement>>(\n ({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-sub-item\"\n className={cn('flex w-full', className)}\n {...props}\n />\n )\n)\nSidebarMenuSubItem.displayName = 'SidebarMenuSubItem'\n\ninterface SidebarMenuSubButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n asChild?: boolean\n size?: 'sm' | 'md' | 'default'\n isActive?: boolean\n}\n\nconst SidebarMenuSubButton = React.forwardRef<HTMLButtonElement, SidebarMenuSubButtonProps>(\n ({ asChild = false, className, size = 'default', ...props }, ref) => {\n const Comp = asChild ? Slot : 'button'\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-sub-button\"\n data-size={size}\n className={cn(\n 'flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 whitespace-nowrap [&>svg]:size-4 [&>svg]:shrink-0',\n className\n )}\n {...(props as React.ButtonHTMLAttributes<HTMLButtonElement>)}\n />\n )\n }\n)\nSidebarMenuSubButton.displayName = 'SidebarMenuSubButton'\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupAction,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInput,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuBadge,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar\n}\n"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","SidebarProvider","children","className","defaultOpen","onOpenChange","openProp","style","props","ref","pinned","setPinned","hoverLocked","setHoverLocked","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","prev","togglePin","newValue","handleKeyDown","event","state","contextValue","jsx","TooltipProvider","cn","Sidebar","collapsible","side","variant","isMouseOver","setIsMouseOver","openTimerRef","closeTimerRef","e","jsxs","Button","SidebarClose","SidebarOpen","SidebarTrigger","icon","onClick","MenuIcon","ChevronLeftIcon","ChevronRightIcon","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}