ics-ui-kit 0.1.15 → 0.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  import { jsx as r, jsxs as f, Fragment as B } from "react/jsx-runtime";
2
2
  import { e as E } from "../useBreakpoints-DHvp74UL.js";
3
- import s from "react";
3
+ import o from "react";
4
4
  import { T as A, b as D, c as G } from "../Tooltip-7Duaau0S.js";
5
5
  import { c as w } from "../cn-dsXlqdJg.js";
6
6
  import { S as L, a as H, b as O, d as P, e as K } from "../Sheet-qTIXsqm0.js";
@@ -22,9 +22,9 @@ import { c as W } from "../createLucideIcon-DwBrHnj9.js";
22
22
  const V = W("PanelLeft", [
23
23
  ["rect", { width: "18", height: "18", x: "3", y: "3", rx: "2", key: "afitv7" }],
24
24
  ["path", { d: "M9 3v18", key: "fh3hqa" }]
25
- ]), C = s.createContext(null);
25
+ ]), C = o.createContext(null);
26
26
  function N() {
27
- const a = s.useContext(C);
27
+ const a = o.useContext(C);
28
28
  if (!a)
29
29
  throw new Error("useSidebar must be used within a SidebarProvider.");
30
30
  return a;
@@ -36,21 +36,21 @@ const U = "sidebar_state", X = 60 * 60 * 24 * 7, Y = "16rem", J = "18rem", Q = "
36
36
  true: "bg-primary-bg"
37
37
  }
38
38
  }
39
- }), ae = s.forwardRef(({ defaultOpen: a = !0, open: e, onOpenChange: t, className: o, style: i, children: d, ...p }, m) => {
40
- const u = E(), [g, l] = s.useState(!1), [h, k] = s.useState(!1), [_, z] = s.useState(a), v = e ?? _, S = s.useCallback(
39
+ }), ae = o.forwardRef(({ defaultOpen: a = !0, open: e, onOpenChange: t, className: s, style: i, children: d, ...p }, m) => {
40
+ const u = E(), [g, l] = o.useState(!1), [h, k] = o.useState(!1), [_, z] = o.useState(a), v = e ?? _, S = o.useCallback(
41
41
  (c) => {
42
42
  const b = typeof c == "function" ? c(v) : c;
43
43
  t ? t(b) : z(b), document.cookie = `${U}=${b}; path=/; max-age=${X}`;
44
44
  },
45
45
  [t, v]
46
- ), x = s.useCallback(() => u ? l((c) => !c) : S((c) => !c), [u, S, l]);
47
- s.useEffect(() => {
46
+ ), x = o.useCallback(() => u ? l((c) => !c) : S((c) => !c), [u, S, l]);
47
+ o.useEffect(() => {
48
48
  const c = (b) => {
49
49
  b.key === Z && (b.metaKey || b.ctrlKey) && (b.preventDefault(), x());
50
50
  };
51
51
  return window.addEventListener("keydown", c), () => window.removeEventListener("keydown", c);
52
52
  }, [x]);
53
- const M = v ? "expanded" : "collapsed", T = s.useMemo(
53
+ const M = v ? "expanded" : "collapsed", T = o.useMemo(
54
54
  () => ({
55
55
  state: M,
56
56
  open: v,
@@ -72,7 +72,7 @@ const U = "sidebar_state", X = 60 * 60 * 24 * 7, Y = "16rem", J = "18rem", Q = "
72
72
  "--sidebar-width-icon": Q,
73
73
  ...i
74
74
  },
75
- className: ee({ hasInset: h, className: o }),
75
+ className: ee({ hasInset: h, className: s }),
76
76
  ref: m,
77
77
  ...p,
78
78
  children: d
@@ -80,9 +80,9 @@ const U = "sidebar_state", X = 60 * 60 * 24 * 7, Y = "16rem", J = "18rem", Q = "
80
80
  ) });
81
81
  });
82
82
  ae.displayName = "SidebarProvider";
83
- const te = s.forwardRef(({ side: a = "left", variant: e = "sidebar", collapsible: t = "offcanvas", className: o, children: i, ...d }, p) => {
83
+ const te = o.forwardRef(({ side: a = "left", variant: e = "sidebar", collapsible: t = "offcanvas", className: s, children: i, ...d }, p) => {
84
84
  const { state: m, openMobile: u, setOpenMobile: g, setHasInset: l } = N();
85
- return s.useLayoutEffect(() => {
85
+ return o.useLayoutEffect(() => {
86
86
  if (e === "inset")
87
87
  return l(!0), () => l(!1);
88
88
  }, [e, l]), t === "none" ? /* @__PURE__ */ r(
@@ -90,7 +90,7 @@ const te = s.forwardRef(({ side: a = "left", variant: e = "sidebar", collapsible
90
90
  {
91
91
  className: w(
92
92
  "text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col bg-sidebar-bg",
93
- o
93
+ s
94
94
  ),
95
95
  ref: p,
96
96
  ...d,
@@ -145,7 +145,7 @@ const te = s.forwardRef(({ side: a = "left", variant: e = "sidebar", collapsible
145
145
  a === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
146
146
  // Adjust the padding for floating and inset variants.
147
147
  e === "floating" || e === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l group-data-[side=left]:border-secondary-border group-data-[side=right]:border-secondary-border",
148
- o
148
+ s
149
149
  ),
150
150
  ...d,
151
151
  children: /* @__PURE__ */ r(
@@ -164,9 +164,9 @@ const te = s.forwardRef(({ side: a = "left", variant: e = "sidebar", collapsible
164
164
  ] });
165
165
  });
166
166
  te.displayName = "Sidebar";
167
- const re = s.forwardRef(
167
+ const re = o.forwardRef(
168
168
  ({ onClick: a, ...e }, t) => {
169
- const { toggleSidebar: o } = N();
169
+ const { toggleSidebar: s } = N();
170
170
  return /* @__PURE__ */ r(
171
171
  R,
172
172
  {
@@ -175,7 +175,7 @@ const re = s.forwardRef(
175
175
  "data-sidebar": "trigger",
176
176
  variant: "ghost",
177
177
  onClick: (i) => {
178
- a?.(i), o();
178
+ a?.(i), s();
179
179
  },
180
180
  ...e,
181
181
  children: /* @__PURE__ */ r("span", { className: "sr-only", children: "Toggle Sidebar" })
@@ -184,7 +184,7 @@ const re = s.forwardRef(
184
184
  }
185
185
  );
186
186
  re.displayName = "SidebarTrigger";
187
- const se = n({
187
+ const oe = n({
188
188
  base: [
189
189
  "absolute inset-y-0 z-20 hidden w-[5px] -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-0 hover:after:-translate-x-1/2 hover:after:border-l hover:after:border-primary-border group-data-[side=left]:-right-[5px] group-data-[side=right]:left-0 sm:flex",
190
190
  "cursor-ew-resize",
@@ -192,9 +192,9 @@ const se = n({
192
192
  "[[data-side=left][data-collapsible=offcanvas]_&]:-right-[2.5px]",
193
193
  "[[data-side=right][data-collapsible=offcanvas]_&]:-left-[2.5px]"
194
194
  ]
195
- }), oe = s.forwardRef(
195
+ }), se = o.forwardRef(
196
196
  ({ className: a, ...e }, t) => {
197
- const { toggleSidebar: o } = N();
197
+ const { toggleSidebar: s } = N();
198
198
  return /* @__PURE__ */ r(
199
199
  "button",
200
200
  {
@@ -202,39 +202,39 @@ const se = n({
202
202
  "data-sidebar": "rail",
203
203
  "aria-label": "Toggle Sidebar",
204
204
  tabIndex: -1,
205
- onClick: o,
205
+ onClick: s,
206
206
  title: "Toggle Sidebar",
207
- className: se({ className: a }),
207
+ className: oe({ className: a }),
208
208
  ...e
209
209
  }
210
210
  );
211
211
  }
212
212
  );
213
- oe.displayName = "SidebarRail";
213
+ se.displayName = "SidebarRail";
214
214
  const ie = n({
215
215
  base: [
216
216
  "relative flex w-full flex-1 flex-col bg-secondary-bg",
217
217
  "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"
218
218
  ]
219
- }), ne = s.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("main", { ref: t, className: ie({ className: a }), ...e }));
219
+ }), ne = o.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("main", { ref: t, className: ie({ className: a }), ...e }));
220
220
  ne.displayName = "SidebarInset";
221
221
  const de = n({
222
222
  base: "h-8 w-full shadow-none"
223
- }), le = s.forwardRef(
223
+ }), le = o.forwardRef(
224
224
  ({ className: a, ...e }, t) => /* @__PURE__ */ r(j, { ref: t, "data-sidebar": "input", className: de({ className: a }), ...e })
225
225
  );
226
226
  le.displayName = "SidebarInput";
227
227
  const ce = n({
228
- base: "flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5"
229
- }), ue = s.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("div", { ref: t, "data-sidebar": "header", className: ce({ className: a }), ...e }));
228
+ base: "flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5 overflow-y-hidden [scrollbar-gutter:stable]"
229
+ }), ue = o.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("div", { ref: t, "data-sidebar": "header", className: ce({ className: a }), ...e }));
230
230
  ue.displayName = "SidebarHeader";
231
231
  const be = n({
232
- base: "flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5"
233
- }), pe = s.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("div", { ref: t, "data-sidebar": "footer", className: be({ className: a }), ...e }));
232
+ base: "flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5 overflow-y-hidden [scrollbar-gutter:stable]"
233
+ }), pe = o.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("div", { ref: t, "data-sidebar": "footer", className: be({ className: a }), ...e }));
234
234
  pe.displayName = "SidebarFooter";
235
235
  const fe = n({
236
236
  base: "w-auto bg-secondary-border"
237
- }), me = s.forwardRef(
237
+ }), me = o.forwardRef(
238
238
  ({ className: a, ...e }, t) => /* @__PURE__ */ r(
239
239
  F,
240
240
  {
@@ -249,15 +249,15 @@ const fe = n({
249
249
  me.displayName = "SidebarSeparator";
250
250
  const ge = n({
251
251
  slots: {
252
- content: "flex flex-1 flex-col gap-2 group-data-[collapsible=icon]:overflow-hidden"
252
+ content: "flex flex-1 flex-col gap-2 [scrollbar-gutter:stable] group-data-[collapsible=icon]:overflow-hidden"
253
253
  }
254
- }), he = s.forwardRef(
255
- ({ className: a, children: e, ...t }, o) => {
254
+ }), he = o.forwardRef(
255
+ ({ className: a, children: e, ...t }, s) => {
256
256
  const i = ge();
257
257
  return /* @__PURE__ */ r(
258
258
  $,
259
259
  {
260
- ref: o,
260
+ ref: s,
261
261
  "data-sidebar": "content",
262
262
  className: i.content({ className: a }),
263
263
  shadowSize: 32,
@@ -270,15 +270,15 @@ const ge = n({
270
270
  he.displayName = "SidebarContent";
271
271
  const ve = n({
272
272
  base: "relative flex w-full min-w-0 flex-col p-2 group-data-[variant=floating]:px-2.5"
273
- }), ye = s.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("div", { ref: t, "data-sidebar": "group", className: ve({ className: a }), ...e }));
273
+ }), ye = o.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("div", { ref: t, "data-sidebar": "group", className: ve({ className: a }), ...e }));
274
274
  ye.displayName = "SidebarGroup";
275
275
  const Se = n({
276
276
  base: [
277
277
  "flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-secondary-fg/70 outline-none transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0",
278
278
  "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0"
279
279
  ]
280
- }), xe = s.forwardRef(
281
- ({ className: a, asChild: e = !1, ...t }, o) => /* @__PURE__ */ r(e ? y : "div", { ref: o, "data-sidebar": "group-label", className: Se({ className: a }), ...t })
280
+ }), xe = o.forwardRef(
281
+ ({ className: a, asChild: e = !1, ...t }, s) => /* @__PURE__ */ r(e ? y : "div", { ref: s, "data-sidebar": "group-label", className: Se({ className: a }), ...t })
282
282
  );
283
283
  xe.displayName = "SidebarGroupLabel";
284
284
  const we = n({
@@ -288,11 +288,11 @@ const we = n({
288
288
  "after:absolute after:-inset-2 after:md:hidden",
289
289
  "group-data-[collapsible=icon]:hidden"
290
290
  ]
291
- }), Ne = s.forwardRef(
292
- ({ className: a, asChild: e = !1, ...t }, o) => /* @__PURE__ */ r(
291
+ }), Ne = o.forwardRef(
292
+ ({ className: a, asChild: e = !1, ...t }, s) => /* @__PURE__ */ r(
293
293
  e ? y : "button",
294
294
  {
295
- ref: o,
295
+ ref: s,
296
296
  "data-sidebar": "group-action",
297
297
  className: we({ className: a }),
298
298
  ...t
@@ -302,17 +302,17 @@ const we = n({
302
302
  Ne.displayName = "SidebarGroupAction";
303
303
  const Me = n({
304
304
  base: "w-full text-sm"
305
- }), Ie = s.forwardRef(
305
+ }), Ie = o.forwardRef(
306
306
  ({ className: a, ...e }, t) => /* @__PURE__ */ r("div", { ref: t, "data-sidebar": "group-content", className: Me({ className: a }), ...e })
307
307
  );
308
308
  Ie.displayName = "SidebarGroupContent";
309
309
  const Re = n({
310
310
  base: "flex w-full min-w-0 flex-col gap-1"
311
- }), Ce = s.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("ul", { ref: t, "data-sidebar": "menu", className: Re({ className: a }), ...e }));
311
+ }), Ce = o.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("ul", { ref: t, "data-sidebar": "menu", className: Re({ className: a }), ...e }));
312
312
  Ce.displayName = "SidebarMenu";
313
313
  const ke = n({
314
314
  base: "group/menu-item relative"
315
- }), _e = s.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("li", { ref: t, "data-sidebar": "menu-item", className: ke({ className: a }), ...e }));
315
+ }), _e = o.forwardRef(({ className: a, ...e }, t) => /* @__PURE__ */ r("li", { ref: t, "data-sidebar": "menu-item", className: ke({ className: a }), ...e }));
316
316
  _e.displayName = "SidebarMenuItem";
317
317
  const ze = n({
318
318
  base: [
@@ -343,15 +343,15 @@ const ze = n({
343
343
  variant: "default",
344
344
  size: "default"
345
345
  }
346
- }), Te = s.forwardRef(({ asChild: a = !1, isActive: e = !1, variant: t = "default", size: o = "default", tooltip: i, className: d, ...p }, m) => {
346
+ }), Te = o.forwardRef(({ asChild: a = !1, isActive: e = !1, variant: t = "default", size: s = "default", tooltip: i, className: d, ...p }, m) => {
347
347
  const u = a ? y : "button", { isMobile: g, state: l } = N(), h = /* @__PURE__ */ r(
348
348
  u,
349
349
  {
350
350
  ref: m,
351
351
  "data-sidebar": "menu-button",
352
- "data-size": o,
352
+ "data-size": s,
353
353
  "data-active": e,
354
- className: w(ze({ variant: t, size: o }), d),
354
+ className: w(ze({ variant: t, size: s }), d),
355
355
  ...p
356
356
  }
357
357
  );
@@ -378,13 +378,13 @@ const Be = n({
378
378
  true: "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-primary-accent md:opacity-0"
379
379
  }
380
380
  }
381
- }), Ee = s.forwardRef(({ className: a, asChild: e = !1, showOnHover: t = !1, ...o }, i) => /* @__PURE__ */ r(
381
+ }), Ee = o.forwardRef(({ className: a, asChild: e = !1, showOnHover: t = !1, ...s }, i) => /* @__PURE__ */ r(
382
382
  e ? y : "button",
383
383
  {
384
384
  ref: i,
385
385
  "data-sidebar": "menu-action",
386
386
  className: Be({ isHover: t, className: a }),
387
- ...o
387
+ ...s
388
388
  }
389
389
  ));
390
390
  Ee.displayName = "SidebarMenuAction";
@@ -397,7 +397,7 @@ const Ae = n({
397
397
  "peer-data-[size=lg]/menu-button:top-2.5",
398
398
  "group-data-[collapsible=icon]:hidden"
399
399
  ]
400
- }), De = s.forwardRef(
400
+ }), De = o.forwardRef(
401
401
  ({ className: a, ...e }, t) => /* @__PURE__ */ r("div", { ref: t, "data-sidebar": "menu-badge", className: Ae({ className: a }), ...e })
402
402
  );
403
403
  De.displayName = "SidebarMenuBadge";
@@ -407,9 +407,9 @@ const Ge = n({
407
407
  skeleton: "h-4 max-w-[--skeleton-width] flex-1",
408
408
  skeletonIcon: "size-4 rounded-md"
409
409
  }
410
- }), Le = s.forwardRef(({ className: a, showIcon: e = !1, ...t }, o) => {
411
- const i = s.useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []), d = Ge();
412
- return /* @__PURE__ */ f("div", { ref: o, "data-sidebar": "menu-skeleton", className: d.wrapper({ className: a }), ...t, children: [
410
+ }), Le = o.forwardRef(({ className: a, showIcon: e = !1, ...t }, s) => {
411
+ const i = o.useMemo(() => `${Math.floor(Math.random() * 40) + 50}%`, []), d = Ge();
412
+ return /* @__PURE__ */ f("div", { ref: s, "data-sidebar": "menu-skeleton", className: d.wrapper({ className: a }), ...t, children: [
413
413
  e && /* @__PURE__ */ r(I, { className: d.skeletonIcon(), "data-sidebar": "menu-skeleton-icon" }),
414
414
  /* @__PURE__ */ r(
415
415
  I,
@@ -429,13 +429,13 @@ const He = n({
429
429
  "ml-3.5 flex min-w-0 flex-col gap-1 border-l border-secondary-border py-0.5 pl-2.5",
430
430
  "group-data-[collapsible=icon]:hidden"
431
431
  ]
432
- }), Oe = s.forwardRef(
432
+ }), Oe = o.forwardRef(
433
433
  ({ className: a, ...e }, t) => /* @__PURE__ */ r("ul", { ref: t, "data-sidebar": "menu-sub", className: He({ className: a }), ...e })
434
434
  );
435
435
  Oe.displayName = "SidebarMenuSub";
436
436
  const Pe = n({
437
437
  base: "rounded-md focus-visible:shadow-focus focus-visible:outline-none"
438
- }), Ke = s.forwardRef(
438
+ }), Ke = o.forwardRef(
439
439
  ({ className: a, ...e }, t) => /* @__PURE__ */ r("li", { ref: t, className: Pe({ className: a }), ...e })
440
440
  );
441
441
  Ke.displayName = "SidebarMenuSubItem";
@@ -451,14 +451,14 @@ const je = n({
451
451
  md: "text-sm"
452
452
  }
453
453
  }
454
- }), Fe = s.forwardRef(({ asChild: a = !1, size: e = "md", isActive: t, className: o, ...i }, d) => /* @__PURE__ */ r(
454
+ }), Fe = o.forwardRef(({ asChild: a = !1, size: e = "md", isActive: t, className: s, ...i }, d) => /* @__PURE__ */ r(
455
455
  a ? y : "a",
456
456
  {
457
457
  ref: d,
458
458
  "data-sidebar": "menu-sub-button",
459
459
  "data-size": e,
460
460
  "data-active": t,
461
- className: je({ size: e, className: o }),
461
+ className: je({ size: e, className: s }),
462
462
  ...i
463
463
  }
464
464
  ));
@@ -469,12 +469,12 @@ const $e = n({
469
469
  icon: "peer/icon h-4 w-4 p-0.5 text-muted opacity-0 group-hover/insertion:opacity-100",
470
470
  line: "h-px w-full bg-transparent group-hover/insertion:bg-muted peer-hover/icon:bg-primary-fg"
471
471
  }
472
- }), qe = s.forwardRef(
472
+ }), qe = o.forwardRef(
473
473
  ({ className: a, ...e }, t) => {
474
- const o = $e();
475
- return /* @__PURE__ */ f("div", { "data-sidebar": "sidebar-insertion-line", className: o.wrapper({ className: a }), ref: t, ...e, children: [
476
- /* @__PURE__ */ r(R, { icon: q, size: "xs", className: o.icon(), variant: "link" }),
477
- /* @__PURE__ */ r("div", { className: o.line() })
474
+ const s = $e();
475
+ return /* @__PURE__ */ f("div", { "data-sidebar": "sidebar-insertion-line", className: s.wrapper({ className: a }), ref: t, ...e, children: [
476
+ /* @__PURE__ */ r(R, { icon: q, size: "xs", className: s.icon(), variant: "link" }),
477
+ /* @__PURE__ */ r("div", { className: s.line() })
478
478
  ] });
479
479
  }
480
480
  );
@@ -501,7 +501,7 @@ export {
501
501
  Fe as SidebarMenuSubButton,
502
502
  Ke as SidebarMenuSubItem,
503
503
  ae as SidebarProvider,
504
- oe as SidebarRail,
504
+ se as SidebarRail,
505
505
  me as SidebarSeparator,
506
506
  re as SidebarTrigger,
507
507
  N as useSidebar
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","sources":["../../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/panel-left.js","../../src/components/sidebar/SidebarContext.tsx","../../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst PanelLeft = createLucideIcon(\"PanelLeft\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M9 3v18\", key: \"fh3hqa\" }]\n]);\n\nexport { PanelLeft as default };\n//# sourceMappingURL=panel-left.js.map\n","import React from \"react\";\n\nexport type SidebarContextProps = {\n\tstate: \"expanded\" | \"collapsed\";\n\topen: boolean;\n\tsetOpen: (open: boolean) => void;\n\topenMobile: boolean;\n\tsetOpenMobile: (open: boolean) => void;\n\tisMobile: boolean;\n\ttoggleSidebar: () => void;\n\thasInset: boolean;\n\tsetHasInset: (hasInset: boolean) => void;\n};\n\nexport const SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nexport function useSidebar() {\n\tconst context = React.useContext(SidebarContext);\n\tif (!context) {\n\t\tthrow new Error(\"useSidebar must be used within a SidebarProvider.\");\n\t}\n\n\treturn context;\n}\n","import { useIsMobile } from \"@/hooks/useBreakpoints\";\nimport React from \"react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"../sheet/Sheet\";\nimport { Button, IconButton } from \"../button\";\nimport { PanelLeft, Plus } from \"lucide-react\";\nimport { TextInput } from \"../input\";\nimport { Divider } from \"../divider\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { tv } from \"tailwind-variants\";\nimport { Skeleton } from \"../skeleton\";\nimport { SidebarContext, SidebarContextProps, useSidebar } from \"./SidebarContext\";\nimport { ScrollShadowContainer } from \"../scroll-shadow-container\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\nconst sizebarProviderStyles = tv({\n\tbase: \"group/sidebar-wrapper flex min-h-svh w-full\",\n\tvariants: {\n\t\thasInset: {\n\t\t\ttrue: \"bg-primary-bg\"\n\t\t}\n\t}\n});\n\nconst SidebarProvider = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tdefaultOpen?: boolean;\n\t\topen?: boolean;\n\t\tonOpenChange?: (open: boolean) => void;\n\t}\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n\tconst isMobile = useIsMobile();\n\tconst [openMobile, setOpenMobile] = React.useState(false);\n\tconst [hasInset, setHasInset] = React.useState(false);\n\n\t// This is the internal state of the sidebar.\n\t// We use openProp and setOpenProp for control from outside the component.\n\tconst [_open, _setOpen] = React.useState(defaultOpen);\n\tconst open = openProp ?? _open;\n\tconst setOpen = React.useCallback(\n\t\t(value: boolean | ((value: boolean) => boolean)) => {\n\t\t\tconst openState = typeof value === \"function\" ? value(open) : value;\n\t\t\tif (setOpenProp) {\n\t\t\t\tsetOpenProp(openState);\n\t\t\t} else {\n\t\t\t\t_setOpen(openState);\n\t\t\t}\n\n\t\t\t// This sets the cookie to keep the sidebar state.\n\t\t\tdocument.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n\t\t},\n\t\t[setOpenProp, open]\n\t);\n\n\t// Helper to toggle the sidebar.\n\tconst toggleSidebar = React.useCallback(() => {\n\t\treturn isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n\t}, [isMobile, setOpen, setOpenMobile]);\n\n\t// Adds a keyboard shortcut to toggle the sidebar.\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleSidebar();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown);\n\t\treturn () => window.removeEventListener(\"keydown\", handleKeyDown);\n\t}, [toggleSidebar]);\n\n\t// We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n\t// This makes it easier to style the sidebar with Tailwind classes.\n\tconst state = open ? \"expanded\" : \"collapsed\";\n\n\tconst contextValue = React.useMemo<SidebarContextProps>(\n\t\t() => ({\n\t\t\tstate,\n\t\t\topen,\n\t\t\tsetOpen,\n\t\t\tisMobile,\n\t\t\topenMobile,\n\t\t\tsetOpenMobile,\n\t\t\ttoggleSidebar,\n\t\t\thasInset,\n\t\t\tsetHasInset\n\t\t}),\n\t\t[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar, hasInset]\n\t);\n\n\treturn (\n\t\t<SidebarContext.Provider value={contextValue}>\n\t\t\t<div\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH,\n\t\t\t\t\t\t\"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n\t\t\t\t\t\t...style\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t\tclassName={sizebarProviderStyles({ hasInset, className })}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SidebarContext.Provider>\n\t);\n});\nSidebarProvider.displayName = \"SidebarProvider\";\n\nconst Sidebar = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tside?: \"left\" | \"right\";\n\t\tvariant?: \"sidebar\" | \"floating\" | \"inset\";\n\t\tcollapsible?: \"offcanvas\" | \"icon\" | \"none\";\n\t}\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, ...props }, ref) => {\n\tconst { state, openMobile, setOpenMobile, setHasInset } = useSidebar();\n\n\tReact.useLayoutEffect(() => {\n\t\tif (variant !== \"inset\") return;\n\t\tsetHasInset(true);\n\t\treturn () => setHasInset(false);\n\t}, [variant, setHasInset]);\n\n\tif (collapsible === \"none\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col bg-sidebar-bg\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"contents lg:hidden\">\n\t\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t\t<SheetContent\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\t\tclassName=\"w-[--sidebar-width] bg-sidebar-bg p-0 text-secondary-fg [&>button]:hidden\"\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH_MOBILE\n\t\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t\t}\n\t\t\t\t\t\tside={side}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t\t<SheetTitle>Sidebar</SheetTitle>\n\t\t\t\t\t\t\t<SheetDescription>Displays the mobile sidebar.</SheetDescription>\n\t\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t\t</SheetContent>\n\t\t\t\t</Sheet>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName=\"text-sidebar-foreground group peer hidden lg:block\"\n\t\t\t\tdata-state={state}\n\t\t\t\tdata-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n\t\t\t\tdata-variant={variant}\n\t\t\t\tdata-side={side}\n\t\t\t>\n\t\t\t\t{/* This is what handles the sidebar gap on desktop */}\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\",\n\t\t\t\t\t\t\"group-data-[collapsible=offcanvas]:w-0\",\n\t\t\t\t\t\t\"group-data-[side=right]:rotate-180\",\n\t\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t\t? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n\t\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear lg:flex\",\n\t\t\t\t\t\tside === \"left\"\n\t\t\t\t\t\t\t? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n\t\t\t\t\t\t\t: \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n\t\t\t\t\t\t// Adjust the padding for floating and inset variants.\n\t\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t\t? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n\t\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l group-data-[side=left]:border-secondary-border group-data-[side=right]:border-secondary-border\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tclassName=\"flex h-full w-full flex-col bg-sidebar-bg group-data-[variant=floating]:rounded-xl group-data-[variant=floating]:border-0.5 group-data-[variant=floating]:border-primary-border group-data-[variant=floating]:shadow-soft-xl\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n});\n\nSidebar.displayName = \"Sidebar\";\n\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(\n\t({ onClick, ...props }, ref) => {\n\t\tconst { toggleSidebar } = useSidebar();\n\n\t\treturn (\n\t\t\t<IconButton\n\t\t\t\ticon={PanelLeft}\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"trigger\"\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\ttoggleSidebar();\n\t\t\t\t}}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<span className=\"sr-only\">Toggle Sidebar</span>\n\t\t\t</IconButton>\n\t\t);\n\t}\n);\n\nSidebarTrigger.displayName = \"SidebarTrigger\";\n\nconst sidebarRailStyles = tv({\n\tbase: [\n\t\t\"absolute inset-y-0 z-20 hidden w-[5px] -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-0 hover:after:-translate-x-1/2 hover:after:border-l hover:after:border-primary-border group-data-[side=left]:-right-[5px] group-data-[side=right]:left-0 sm:flex\",\n\t\t\"cursor-ew-resize\",\n\t\t\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-secondary-border\",\n\t\t\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-[2.5px]\",\n\t\t\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-[2.5px]\"\n\t]\n});\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(\n\t({ className, ...props }, ref) => {\n\t\tconst { toggleSidebar } = useSidebar();\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"rail\"\n\t\t\t\taria-label=\"Toggle Sidebar\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\tonClick={toggleSidebar}\n\t\t\t\ttitle=\"Toggle Sidebar\"\n\t\t\t\tclassName={sidebarRailStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarRail.displayName = \"SidebarRail\";\n\nconst sidebarInsetStyles = tv({\n\tbase: [\n\t\t\"relative flex w-full flex-1 flex-col bg-secondary-bg\",\n\t\t\"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\t]\n});\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\n\treturn <main ref={ref} className={sidebarInsetStyles({ className })} {...props} />;\n});\n\nSidebarInset.displayName = \"SidebarInset\";\n\nconst sidebarInputStyles = tv({\n\tbase: \"h-8 w-full shadow-none\"\n});\n\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof TextInput>, React.ComponentProps<typeof TextInput>>(\n\t({ className, ...props }, ref) => {\n\t\treturn <TextInput ref={ref} data-sidebar=\"input\" className={sidebarInputStyles({ className })} {...props} />;\n\t}\n);\n\nSidebarInput.displayName = \"SidebarInput\";\n\nconst sidebarHeaderStyles = tv({\n\tbase: \"flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5\"\n});\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"header\" className={sidebarHeaderStyles({ className })} {...props} />;\n});\n\nSidebarHeader.displayName = \"SidebarHeader\";\n\nconst sidebarFooterStyles = tv({\n\tbase: \"flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5\"\n});\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"footer\" className={sidebarFooterStyles({ className })} {...props} />;\n});\n\nSidebarFooter.displayName = \"SidebarFooter\";\n\nconst sidebarSeparatorStyles = tv({\n\tbase: \"w-auto bg-secondary-border\"\n});\n\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Divider>, React.ComponentProps<typeof Divider>>(\n\t({ className, ...props }, ref) => {\n\t\treturn (\n\t\t\t<Divider\n\t\t\t\tref={ref}\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tdata-sidebar=\"separator\"\n\t\t\t\tclassName={sidebarSeparatorStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarSeparator.displayName = \"SidebarSeparator\";\n\nconst sidebarContentStyles = tv({\n\tslots: {\n\t\tcontent: \"flex flex-1 flex-col gap-2 group-data-[collapsible=icon]:overflow-hidden\"\n\t}\n});\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, children, ...props }, ref) => {\n\t\tconst styles = sidebarContentStyles();\n\n\t\treturn (\n\t\t\t<ScrollShadowContainer\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"content\"\n\t\t\t\tclassName={styles.content({ className })}\n\t\t\t\tshadowSize={32}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</ScrollShadowContainer>\n\t\t);\n\t}\n);\n\nSidebarContent.displayName = \"SidebarContent\";\n\nconst sidebarGroupStyles = tv({\n\tbase: \"relative flex w-full min-w-0 flex-col p-2 group-data-[variant=floating]:px-2.5\"\n});\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"group\" className={sidebarGroupStyles({ className })} {...props} />;\n});\n\nSidebarGroup.displayName = \"SidebarGroup\";\n\nconst sidebarGroupLabelStyles = tv({\n\tbase: [\n\t\t\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-secondary-fg/70 outline-none transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\"\n\t]\n});\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\n\t({ className, asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"div\";\n\n\t\treturn (\n\t\t\t<Comp ref={ref} data-sidebar=\"group-label\" className={sidebarGroupLabelStyles({ className })} {...props} />\n\t\t);\n\t}\n);\n\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\n\nconst sidebarGroupActionStyles = tv({\n\tbase: [\n\t\t\"focus-visible:ring-primary2 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-muted outline-none transition-transform hover:text-primary-fg focus-visible:shadow-focus [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t// Increases the hit area of the button on mobile.\n\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\n\t({ className, asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"group-action\"\n\t\t\t\tclassName={sidebarGroupActionStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\n\nconst sidebarGroupContentStyles = tv({\n\tbase: \"w-full text-sm\"\n});\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} data-sidebar=\"group-content\" className={sidebarGroupContentStyles({ className })} {...props} />\n\t)\n);\n\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\n\nconst sidebarMenuStyles = tv({\n\tbase: \"flex w-full min-w-0 flex-col gap-1\"\n});\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\n\t<ul ref={ref} data-sidebar=\"menu\" className={sidebarMenuStyles({ className })} {...props} />\n));\n\nSidebarMenu.displayName = \"SidebarMenu\";\n\nconst sidebarMenuItemStyles = tv({\n\tbase: \"group/menu-item relative\"\n});\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\n\t<li ref={ref} data-sidebar=\"menu-item\" className={sidebarMenuItemStyles({ className })} {...props} />\n));\n\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\n\nexport interface SidebarMenuButtonVariants {\n\tvariant?: \"default\" | \"outline\";\n\tsize?: \"default\" | \"sm\" | \"lg\";\n}\n\nconst sidebarMenuButtonStyles = tv({\n\tbase: [\n\t\t\"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md bg-primary-bg p-2 text-left text-sm text-secondary-fg outline-none transition-[width,height,padding]\",\n\t\t\"hover:bg-primary-bg-hover hover:text-primary-fg focus-visible:shadow-focus\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n\t\t\"data-[active=true]:bg-primary-bg-hover data-[active=true]:font-medium data-[active=true]:text-primary-accent\",\n\t\t\"data-[active=true]:hover:bg-primary-bg-hover data-[active=true]:hover:text-primary-accent\",\n\t\t\"data-[state=open]:hover:bg-primary-bg-hover data-[state=open]:hover:text-primary-fg\",\n\t\t\"data-[active=true]:data-[state=open]:hover:bg-primary-bg-hover data-[active=true]:data-[state=open]:hover:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate\",\n\t\t\"[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-muted [&[data-active=true]>svg]:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:[&>svg]:text-secondary-fg group-data-[collapsible=icon]:[&>svg]:hover:text-primary-fg group-data-[collapsible=icon]:[&[data-active=true]>svg]:text-primary-accent\",\n\t\t\"group-has-[[data-sidebar=menu-action]]/menu-item:pr-8\"\n\t],\n\tvariants: {\n\t\tvariant: {\n\t\t\tdefault: \"hover:bg-primary-bg-hover hover:text-primary-fg\",\n\t\t\toutline:\n\t\t\t\t\"border border-secondary-border bg-primary-bg shadow-soft-sm hover:bg-primary-bg-hover hover:text-primary-fg\"\n\t\t},\n\t\tsize: {\n\t\t\tdefault: \"h-8 text-sm\",\n\t\t\tsm: \"h-7 text-xs\",\n\t\t\tlg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\"\n\t\t}\n\t} satisfies VariantsConfig<SidebarMenuButtonVariants>,\n\tdefaultVariants: {\n\t\tvariant: \"default\",\n\t\tsize: \"default\"\n\t}\n});\n\nconst SidebarMenuButton = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\"> & {\n\t\tasChild?: boolean;\n\t\tisActive?: boolean;\n\t\ttooltip?: string | React.ComponentProps<typeof TooltipContent>;\n\t} & SidebarMenuButtonVariants\n>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"button\";\n\tconst { isMobile, state } = useSidebar();\n\n\tconst button = (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-button\"\n\t\t\tdata-size={size}\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(sidebarMenuButtonStyles({ variant, size }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n\n\tif (!tooltip) {\n\t\treturn button;\n\t}\n\n\tif (typeof tooltip === \"string\") {\n\t\ttooltip = {\n\t\t\tchildren: tooltip\n\t\t};\n\t}\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger asChild>{button}</TooltipTrigger>\n\t\t\t<TooltipContent side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\n\t\t</Tooltip>\n\t);\n});\n\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\n\nconst sidebarMenuActionStyles = tv({\n\tbase: [\n\t\t\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-muted outline-none transition-transform hover:text-primary-fg focus-visible:ring-1 focus-visible:ring-primary peer-hover/menu-button:text-primary-fg [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t// Increases the hit area of the button on mobile.\n\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t],\n\tvariants: {\n\t\tisHover: {\n\t\t\ttrue: \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-primary-accent md:opacity-0\"\n\t\t}\n\t}\n});\n\nconst SidebarMenuAction = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\"> & {\n\t\tasChild?: boolean;\n\t\tshowOnHover?: boolean;\n\t}\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"button\";\n\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-action\"\n\t\t\tclassName={sidebarMenuActionStyles({ isHover: showOnHover, className })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\n\nconst sidebarMenuBadgeStyles = tv({\n\tbase: [\n\t\t\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-normal tabular-nums leading-none text-muted\",\n\t\t\"peer-hover/menu-button:text-muted peer-disabled/menu-button:opacity-50 peer-data-[active=true]/menu-button:text-muted\",\n\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} data-sidebar=\"menu-badge\" className={sidebarMenuBadgeStyles({ className })} {...props} />\n\t)\n);\n\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\n\nconst sidebarMenuSkeletonStyles = tv({\n\tslots: {\n\t\twrapper: \"flex h-8 items-center gap-2 rounded-md px-2\",\n\t\tskeleton: \"h-4 max-w-[--skeleton-width] flex-1\",\n\t\tskeletonIcon: \"size-4 rounded-md\"\n\t}\n});\n\nconst SidebarMenuSkeleton = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tshowIcon?: boolean;\n\t}\n>(({ className, showIcon = false, ...props }, ref) => {\n\t// Random width between 50 to 90%.\n\tconst width = React.useMemo(() => {\n\t\treturn `${Math.floor(Math.random() * 40) + 50}%`;\n\t}, []);\n\n\tconst styles = sidebarMenuSkeletonStyles();\n\n\treturn (\n\t\t<div ref={ref} data-sidebar=\"menu-skeleton\" className={styles.wrapper({ className })} {...props}>\n\t\t\t{showIcon && <Skeleton className={styles.skeletonIcon()} data-sidebar=\"menu-skeleton-icon\" />}\n\t\t\t<Skeleton\n\t\t\t\tclassName={styles.skeleton()}\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--skeleton-width\": width\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\n\nconst sidebarMenuSubStyles = tv({\n\tbase: [\n\t\t\"ml-3.5 flex min-w-0 flex-col gap-1 border-l border-secondary-border py-0.5 pl-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\n\t({ className, ...props }, ref) => (\n\t\t<ul ref={ref} data-sidebar=\"menu-sub\" className={sidebarMenuSubStyles({ className })} {...props} />\n\t)\n);\n\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\n\nconst sidebarMenuSubItemStyles = tv({\n\tbase: \"rounded-md focus-visible:shadow-focus focus-visible:outline-none\"\n});\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(\n\t({ className, ...props }, ref) => <li ref={ref} className={sidebarMenuSubItemStyles({ className })} {...props} />\n);\n\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\n\nconst sidebarMenuSubButtonStyles = tv({\n\tbase: [\n\t\t\"flex h-7 min-w-0 items-center gap-2 overflow-hidden rounded-md px-2 text-secondary-fg outline-none hover:bg-secondary-bg-hover hover:text-primary-fg focus-visible:mr-0.5 focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-primary-fg\",\n\t\t\"data-[active=true]:bg-primary-bg-hover data-[active=true]:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t],\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"text-xs\",\n\t\t\tmd: \"text-sm\"\n\t\t}\n\t}\n});\n\nconst SidebarMenuSubButton = React.forwardRef<\n\tHTMLAnchorElement,\n\tReact.ComponentProps<\"a\"> & {\n\t\tasChild?: boolean;\n\t\tsize?: \"sm\" | \"md\";\n\t\tisActive?: boolean;\n\t}\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"a\";\n\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-sub-button\"\n\t\t\tdata-size={size}\n\t\t\tdata-active={isActive}\n\t\t\tclassName={sidebarMenuSubButtonStyles({ size, className })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\n\nconst sidebarInsertionLineStyles = tv({\n\tslots: {\n\t\twrapper: \"group/insertion flex cursor-pointer flex-row items-center border-none bg-transparent p-0\",\n\t\ticon: \"peer/icon h-4 w-4 p-0.5 text-muted opacity-0 group-hover/insertion:opacity-100\",\n\t\tline: \"h-px w-full bg-transparent group-hover/insertion:bg-muted peer-hover/icon:bg-primary-fg\"\n\t}\n});\n\nexport type SidebarInsertionLineProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst SidebarInsertionLine = React.forwardRef<HTMLDivElement, SidebarInsertionLineProps>(\n\t({ className, ...props }, ref) => {\n\t\tconst styles = sidebarInsertionLineStyles();\n\t\treturn (\n\t\t\t<div data-sidebar=\"sidebar-insertion-line\" className={styles.wrapper({ className })} ref={ref} {...props}>\n\t\t\t\t<IconButton icon={Plus} size=\"xs\" className={styles.icon()} variant=\"link\" />\n\t\t\t\t<div className={styles.line()} />\n\t\t\t</div>\n\t\t);\n\t}\n);\nSidebarInsertionLine.displayName = \"SidebarInsertionLine\";\n\nexport {\n\tSidebar,\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarGroupAction,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarHeader,\n\tSidebarInput,\n\tSidebarInset,\n\tSidebarMenu,\n\tSidebarMenuAction,\n\tSidebarMenuBadge,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n\tSidebarMenuSkeleton,\n\tSidebarMenuSub,\n\tSidebarMenuSubButton,\n\tSidebarMenuSubItem,\n\tSidebarProvider,\n\tSidebarRail,\n\tSidebarSeparator,\n\tSidebarInsertionLine,\n\tSidebarTrigger\n};\n"],"names":["PanelLeft","createLucideIcon","SidebarContext","React","useSidebar","context","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","sizebarProviderStyles","tv","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","openMobile","setOpenMobile","hasInset","setHasInset","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","Sidebar","side","variant","collapsible","cn","jsxs","Fragment","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","IconButton","sidebarRailStyles","SidebarRail","sidebarInsetStyles","SidebarInset","sidebarInputStyles","SidebarInput","TextInput","sidebarHeaderStyles","SidebarHeader","sidebarFooterStyles","SidebarFooter","sidebarSeparatorStyles","SidebarSeparator","Divider","sidebarContentStyles","SidebarContent","styles","ScrollShadowContainer","sidebarGroupStyles","SidebarGroup","sidebarGroupLabelStyles","SidebarGroupLabel","asChild","Slot","sidebarGroupActionStyles","SidebarGroupAction","sidebarGroupContentStyles","SidebarGroupContent","sidebarMenuStyles","SidebarMenu","sidebarMenuItemStyles","SidebarMenuItem","sidebarMenuButtonStyles","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","sidebarMenuActionStyles","SidebarMenuAction","showOnHover","sidebarMenuBadgeStyles","SidebarMenuBadge","sidebarMenuSkeletonStyles","SidebarMenuSkeleton","showIcon","width","Skeleton","sidebarMenuSubStyles","SidebarMenuSub","sidebarMenuSubItemStyles","SidebarMenuSubItem","sidebarMenuSubButtonStyles","SidebarMenuSubButton","sidebarInsertionLineStyles","SidebarInsertionLine","Plus"],"mappings":"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","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"sidebar.js","sources":["../../node_modules/.pnpm/lucide-react@0.460.0_react@18.3.1/node_modules/lucide-react/dist/esm/icons/panel-left.js","../../src/components/sidebar/SidebarContext.tsx","../../src/components/sidebar/Sidebar.tsx"],"sourcesContent":["/**\n * @license lucide-react v0.460.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst PanelLeft = createLucideIcon(\"PanelLeft\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M9 3v18\", key: \"fh3hqa\" }]\n]);\n\nexport { PanelLeft as default };\n//# sourceMappingURL=panel-left.js.map\n","import React from \"react\";\n\nexport type SidebarContextProps = {\n\tstate: \"expanded\" | \"collapsed\";\n\topen: boolean;\n\tsetOpen: (open: boolean) => void;\n\topenMobile: boolean;\n\tsetOpenMobile: (open: boolean) => void;\n\tisMobile: boolean;\n\ttoggleSidebar: () => void;\n\thasInset: boolean;\n\tsetHasInset: (hasInset: boolean) => void;\n};\n\nexport const SidebarContext = React.createContext<SidebarContextProps | null>(null);\n\nexport function useSidebar() {\n\tconst context = React.useContext(SidebarContext);\n\tif (!context) {\n\t\tthrow new Error(\"useSidebar must be used within a SidebarProvider.\");\n\t}\n\n\treturn context;\n}\n","import { useIsMobile } from \"@/hooks/useBreakpoints\";\nimport React from \"react\";\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../tooltip\";\nimport { cn } from \"@/lib/utils\";\nimport { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from \"../sheet/Sheet\";\nimport { Button, IconButton } from \"../button\";\nimport { PanelLeft, Plus } from \"lucide-react\";\nimport { TextInput } from \"../input\";\nimport { Divider } from \"../divider\";\nimport { Slot } from \"@radix-ui/react-slot\";\nimport { tv } from \"tailwind-variants\";\nimport { Skeleton } from \"../skeleton\";\nimport { SidebarContext, SidebarContextProps, useSidebar } from \"./SidebarContext\";\nimport { ScrollShadowContainer } from \"../scroll-shadow-container\";\nimport { VariantsConfig } from \"@/lib/utils/variants\";\n\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\nconst SIDEBAR_WIDTH = \"16rem\";\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\n\nconst sizebarProviderStyles = tv({\n\tbase: \"group/sidebar-wrapper flex min-h-svh w-full\",\n\tvariants: {\n\t\thasInset: {\n\t\t\ttrue: \"bg-primary-bg\"\n\t\t}\n\t}\n});\n\nconst SidebarProvider = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tdefaultOpen?: boolean;\n\t\topen?: boolean;\n\t\tonOpenChange?: (open: boolean) => void;\n\t}\n>(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref) => {\n\tconst isMobile = useIsMobile();\n\tconst [openMobile, setOpenMobile] = React.useState(false);\n\tconst [hasInset, setHasInset] = React.useState(false);\n\n\t// This is the internal state of the sidebar.\n\t// We use openProp and setOpenProp for control from outside the component.\n\tconst [_open, _setOpen] = React.useState(defaultOpen);\n\tconst open = openProp ?? _open;\n\tconst setOpen = React.useCallback(\n\t\t(value: boolean | ((value: boolean) => boolean)) => {\n\t\t\tconst openState = typeof value === \"function\" ? value(open) : value;\n\t\t\tif (setOpenProp) {\n\t\t\t\tsetOpenProp(openState);\n\t\t\t} else {\n\t\t\t\t_setOpen(openState);\n\t\t\t}\n\n\t\t\t// This sets the cookie to keep the sidebar state.\n\t\t\tdocument.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\n\t\t},\n\t\t[setOpenProp, open]\n\t);\n\n\t// Helper to toggle the sidebar.\n\tconst toggleSidebar = React.useCallback(() => {\n\t\treturn isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\n\t}, [isMobile, setOpen, setOpenMobile]);\n\n\t// Adds a keyboard shortcut to toggle the sidebar.\n\tReact.useEffect(() => {\n\t\tconst handleKeyDown = (event: KeyboardEvent) => {\n\t\t\tif (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n\t\t\t\tevent.preventDefault();\n\t\t\t\ttoggleSidebar();\n\t\t\t}\n\t\t};\n\n\t\twindow.addEventListener(\"keydown\", handleKeyDown);\n\t\treturn () => window.removeEventListener(\"keydown\", handleKeyDown);\n\t}, [toggleSidebar]);\n\n\t// We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n\t// This makes it easier to style the sidebar with Tailwind classes.\n\tconst state = open ? \"expanded\" : \"collapsed\";\n\n\tconst contextValue = React.useMemo<SidebarContextProps>(\n\t\t() => ({\n\t\t\tstate,\n\t\t\topen,\n\t\t\tsetOpen,\n\t\t\tisMobile,\n\t\t\topenMobile,\n\t\t\tsetOpenMobile,\n\t\t\ttoggleSidebar,\n\t\t\thasInset,\n\t\t\tsetHasInset\n\t\t}),\n\t\t[state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar, hasInset]\n\t);\n\n\treturn (\n\t\t<SidebarContext.Provider value={contextValue}>\n\t\t\t<div\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH,\n\t\t\t\t\t\t\"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\n\t\t\t\t\t\t...style\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t\tclassName={sizebarProviderStyles({ hasInset, className })}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t</SidebarContext.Provider>\n\t);\n});\nSidebarProvider.displayName = \"SidebarProvider\";\n\nconst Sidebar = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tside?: \"left\" | \"right\";\n\t\tvariant?: \"sidebar\" | \"floating\" | \"inset\";\n\t\tcollapsible?: \"offcanvas\" | \"icon\" | \"none\";\n\t}\n>(({ side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, ...props }, ref) => {\n\tconst { state, openMobile, setOpenMobile, setHasInset } = useSidebar();\n\n\tReact.useLayoutEffect(() => {\n\t\tif (variant !== \"inset\") return;\n\t\tsetHasInset(true);\n\t\treturn () => setHasInset(false);\n\t}, [variant, setHasInset]);\n\n\tif (collapsible === \"none\") {\n\t\treturn (\n\t\t\t<div\n\t\t\t\tclassName={cn(\n\t\t\t\t\t\"text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col bg-sidebar-bg\",\n\t\t\t\t\tclassName\n\t\t\t\t)}\n\t\t\t\tref={ref}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</div>\n\t\t);\n\t}\n\n\treturn (\n\t\t<>\n\t\t\t<div className=\"contents lg:hidden\">\n\t\t\t\t<Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n\t\t\t\t\t<SheetContent\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tdata-mobile=\"true\"\n\t\t\t\t\t\tclassName=\"w-[--sidebar-width] bg-sidebar-bg p-0 text-secondary-fg [&>button]:hidden\"\n\t\t\t\t\t\tstyle={\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\"--sidebar-width\": SIDEBAR_WIDTH_MOBILE\n\t\t\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t\t\t}\n\t\t\t\t\t\tside={side}\n\t\t\t\t\t>\n\t\t\t\t\t\t<SheetHeader className=\"sr-only\">\n\t\t\t\t\t\t\t<SheetTitle>Sidebar</SheetTitle>\n\t\t\t\t\t\t\t<SheetDescription>Displays the mobile sidebar.</SheetDescription>\n\t\t\t\t\t\t</SheetHeader>\n\t\t\t\t\t\t<div className=\"flex h-full w-full flex-col\">{children}</div>\n\t\t\t\t\t</SheetContent>\n\t\t\t\t</Sheet>\n\t\t\t</div>\n\n\t\t\t<div\n\t\t\t\tref={ref}\n\t\t\t\tclassName=\"text-sidebar-foreground group peer hidden lg:block\"\n\t\t\t\tdata-state={state}\n\t\t\t\tdata-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n\t\t\t\tdata-variant={variant}\n\t\t\t\tdata-side={side}\n\t\t\t>\n\t\t\t\t{/* This is what handles the sidebar gap on desktop */}\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\",\n\t\t\t\t\t\t\"group-data-[collapsible=offcanvas]:w-0\",\n\t\t\t\t\t\t\"group-data-[side=right]:rotate-180\",\n\t\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t\t? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\n\t\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\"\n\t\t\t\t\t)}\n\t\t\t\t/>\n\n\t\t\t\t<div\n\t\t\t\t\tclassName={cn(\n\t\t\t\t\t\t\"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear lg:flex\",\n\t\t\t\t\t\tside === \"left\"\n\t\t\t\t\t\t\t? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\n\t\t\t\t\t\t\t: \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\n\t\t\t\t\t\t// Adjust the padding for floating and inset variants.\n\t\t\t\t\t\tvariant === \"floating\" || variant === \"inset\"\n\t\t\t\t\t\t\t? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\n\t\t\t\t\t\t\t: \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l group-data-[side=left]:border-secondary-border group-data-[side=right]:border-secondary-border\",\n\t\t\t\t\t\tclassName\n\t\t\t\t\t)}\n\t\t\t\t\t{...props}\n\t\t\t\t>\n\t\t\t\t\t<div\n\t\t\t\t\t\tdata-sidebar=\"sidebar\"\n\t\t\t\t\t\tclassName=\"flex h-full w-full flex-col bg-sidebar-bg group-data-[variant=floating]:rounded-xl group-data-[variant=floating]:border-0.5 group-data-[variant=floating]:border-primary-border group-data-[variant=floating]:shadow-soft-xl\"\n\t\t\t\t\t>\n\t\t\t\t\t\t{children}\n\t\t\t\t\t</div>\n\t\t\t\t</div>\n\t\t\t</div>\n\t\t</>\n\t);\n});\n\nSidebar.displayName = \"Sidebar\";\n\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(\n\t({ onClick, ...props }, ref) => {\n\t\tconst { toggleSidebar } = useSidebar();\n\n\t\treturn (\n\t\t\t<IconButton\n\t\t\t\ticon={PanelLeft}\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"trigger\"\n\t\t\t\tvariant=\"ghost\"\n\t\t\t\tonClick={(event) => {\n\t\t\t\t\tonClick?.(event);\n\t\t\t\t\ttoggleSidebar();\n\t\t\t\t}}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t<span className=\"sr-only\">Toggle Sidebar</span>\n\t\t\t</IconButton>\n\t\t);\n\t}\n);\n\nSidebarTrigger.displayName = \"SidebarTrigger\";\n\nconst sidebarRailStyles = tv({\n\tbase: [\n\t\t\"absolute inset-y-0 z-20 hidden w-[5px] -translate-x-1/2 transition-all ease-linear after:absolute after:inset-y-0 after:left-1/2 after:w-0 hover:after:-translate-x-1/2 hover:after:border-l hover:after:border-primary-border group-data-[side=left]:-right-[5px] group-data-[side=right]:left-0 sm:flex\",\n\t\t\"cursor-ew-resize\",\n\t\t\"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full group-data-[collapsible=offcanvas]:hover:bg-secondary-border\",\n\t\t\"[[data-side=left][data-collapsible=offcanvas]_&]:-right-[2.5px]\",\n\t\t\"[[data-side=right][data-collapsible=offcanvas]_&]:-left-[2.5px]\"\n\t]\n});\n\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(\n\t({ className, ...props }, ref) => {\n\t\tconst { toggleSidebar } = useSidebar();\n\n\t\treturn (\n\t\t\t<button\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"rail\"\n\t\t\t\taria-label=\"Toggle Sidebar\"\n\t\t\t\ttabIndex={-1}\n\t\t\t\tonClick={toggleSidebar}\n\t\t\t\ttitle=\"Toggle Sidebar\"\n\t\t\t\tclassName={sidebarRailStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarRail.displayName = \"SidebarRail\";\n\nconst sidebarInsetStyles = tv({\n\tbase: [\n\t\t\"relative flex w-full flex-1 flex-col bg-secondary-bg\",\n\t\t\"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\t]\n});\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({ className, ...props }, ref) => {\n\treturn <main ref={ref} className={sidebarInsetStyles({ className })} {...props} />;\n});\n\nSidebarInset.displayName = \"SidebarInset\";\n\nconst sidebarInputStyles = tv({\n\tbase: \"h-8 w-full shadow-none\"\n});\n\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof TextInput>, React.ComponentProps<typeof TextInput>>(\n\t({ className, ...props }, ref) => {\n\t\treturn <TextInput ref={ref} data-sidebar=\"input\" className={sidebarInputStyles({ className })} {...props} />;\n\t}\n);\n\nSidebarInput.displayName = \"SidebarInput\";\n\nconst sidebarHeaderStyles = tv({\n\tbase: \"flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5 overflow-y-hidden [scrollbar-gutter:stable]\"\n});\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"header\" className={sidebarHeaderStyles({ className })} {...props} />;\n});\n\nSidebarHeader.displayName = \"SidebarHeader\";\n\nconst sidebarFooterStyles = tv({\n\tbase: \"flex flex-col gap-2 p-2 group-data-[variant=floating]:px-2.5 overflow-y-hidden [scrollbar-gutter:stable]\"\n});\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"footer\" className={sidebarFooterStyles({ className })} {...props} />;\n});\n\nSidebarFooter.displayName = \"SidebarFooter\";\n\nconst sidebarSeparatorStyles = tv({\n\tbase: \"w-auto bg-secondary-border\"\n});\n\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Divider>, React.ComponentProps<typeof Divider>>(\n\t({ className, ...props }, ref) => {\n\t\treturn (\n\t\t\t<Divider\n\t\t\t\tref={ref}\n\t\t\t\torientation=\"horizontal\"\n\t\t\t\tdata-sidebar=\"separator\"\n\t\t\t\tclassName={sidebarSeparatorStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarSeparator.displayName = \"SidebarSeparator\";\n\nconst sidebarContentStyles = tv({\n\tslots: {\n\t\tcontent: \"flex flex-1 flex-col gap-2 [scrollbar-gutter:stable] group-data-[collapsible=icon]:overflow-hidden\"\n\t}\n});\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, children, ...props }, ref) => {\n\t\tconst styles = sidebarContentStyles();\n\n\t\treturn (\n\t\t\t<ScrollShadowContainer\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"content\"\n\t\t\t\tclassName={styles.content({ className })}\n\t\t\t\tshadowSize={32}\n\t\t\t\t{...props}\n\t\t\t>\n\t\t\t\t{children}\n\t\t\t</ScrollShadowContainer>\n\t\t);\n\t}\n);\n\nSidebarContent.displayName = \"SidebarContent\";\n\nconst sidebarGroupStyles = tv({\n\tbase: \"relative flex w-full min-w-0 flex-col p-2 group-data-[variant=floating]:px-2.5\"\n});\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({ className, ...props }, ref) => {\n\treturn <div ref={ref} data-sidebar=\"group\" className={sidebarGroupStyles({ className })} {...props} />;\n});\n\nSidebarGroup.displayName = \"SidebarGroup\";\n\nconst sidebarGroupLabelStyles = tv({\n\tbase: [\n\t\t\"flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-secondary-fg/70 outline-none transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t\"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\"\n\t]\n});\n\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & { asChild?: boolean }>(\n\t({ className, asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"div\";\n\n\t\treturn (\n\t\t\t<Comp ref={ref} data-sidebar=\"group-label\" className={sidebarGroupLabelStyles({ className })} {...props} />\n\t\t);\n\t}\n);\n\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\n\nconst sidebarGroupActionStyles = tv({\n\tbase: [\n\t\t\"focus-visible:ring-primary2 absolute right-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-muted outline-none transition-transform hover:text-primary-fg focus-visible:shadow-focus [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t// Increases the hit area of the button on mobile.\n\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & { asChild?: boolean }>(\n\t({ className, asChild = false, ...props }, ref) => {\n\t\tconst Comp = asChild ? Slot : \"button\";\n\n\t\treturn (\n\t\t\t<Comp\n\t\t\t\tref={ref}\n\t\t\t\tdata-sidebar=\"group-action\"\n\t\t\t\tclassName={sidebarGroupActionStyles({ className })}\n\t\t\t\t{...props}\n\t\t\t/>\n\t\t);\n\t}\n);\n\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\n\nconst sidebarGroupContentStyles = tv({\n\tbase: \"w-full text-sm\"\n});\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} data-sidebar=\"group-content\" className={sidebarGroupContentStyles({ className })} {...props} />\n\t)\n);\n\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\n\nconst sidebarMenuStyles = tv({\n\tbase: \"flex w-full min-w-0 flex-col gap-1\"\n});\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({ className, ...props }, ref) => (\n\t<ul ref={ref} data-sidebar=\"menu\" className={sidebarMenuStyles({ className })} {...props} />\n));\n\nSidebarMenu.displayName = \"SidebarMenu\";\n\nconst sidebarMenuItemStyles = tv({\n\tbase: \"group/menu-item relative\"\n});\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({ className, ...props }, ref) => (\n\t<li ref={ref} data-sidebar=\"menu-item\" className={sidebarMenuItemStyles({ className })} {...props} />\n));\n\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\n\nexport interface SidebarMenuButtonVariants {\n\tvariant?: \"default\" | \"outline\";\n\tsize?: \"default\" | \"sm\" | \"lg\";\n}\n\nconst sidebarMenuButtonStyles = tv({\n\tbase: [\n\t\t\"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md bg-primary-bg p-2 text-left text-sm text-secondary-fg outline-none transition-[width,height,padding]\",\n\t\t\"hover:bg-primary-bg-hover hover:text-primary-fg focus-visible:shadow-focus\",\n\t\t\"disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50\",\n\t\t\"data-[active=true]:bg-primary-bg-hover data-[active=true]:font-medium data-[active=true]:text-primary-accent\",\n\t\t\"data-[active=true]:hover:bg-primary-bg-hover data-[active=true]:hover:text-primary-accent\",\n\t\t\"data-[state=open]:hover:bg-primary-bg-hover data-[state=open]:hover:text-primary-fg\",\n\t\t\"data-[active=true]:data-[state=open]:hover:bg-primary-bg-hover data-[active=true]:data-[state=open]:hover:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate\",\n\t\t\"[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-muted [&[data-active=true]>svg]:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:[&>svg]:text-secondary-fg group-data-[collapsible=icon]:[&>svg]:hover:text-primary-fg group-data-[collapsible=icon]:[&[data-active=true]>svg]:text-primary-accent\",\n\t\t\"group-has-[[data-sidebar=menu-action]]/menu-item:pr-8\"\n\t],\n\tvariants: {\n\t\tvariant: {\n\t\t\tdefault: \"hover:bg-primary-bg-hover hover:text-primary-fg\",\n\t\t\toutline:\n\t\t\t\t\"border border-secondary-border bg-primary-bg shadow-soft-sm hover:bg-primary-bg-hover hover:text-primary-fg\"\n\t\t},\n\t\tsize: {\n\t\t\tdefault: \"h-8 text-sm\",\n\t\t\tsm: \"h-7 text-xs\",\n\t\t\tlg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\"\n\t\t}\n\t} satisfies VariantsConfig<SidebarMenuButtonVariants>,\n\tdefaultVariants: {\n\t\tvariant: \"default\",\n\t\tsize: \"default\"\n\t}\n});\n\nconst SidebarMenuButton = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\"> & {\n\t\tasChild?: boolean;\n\t\tisActive?: boolean;\n\t\ttooltip?: string | React.ComponentProps<typeof TooltipContent>;\n\t} & SidebarMenuButtonVariants\n>(({ asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"button\";\n\tconst { isMobile, state } = useSidebar();\n\n\tconst button = (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-button\"\n\t\t\tdata-size={size}\n\t\t\tdata-active={isActive}\n\t\t\tclassName={cn(sidebarMenuButtonStyles({ variant, size }), className)}\n\t\t\t{...props}\n\t\t/>\n\t);\n\n\tif (!tooltip) {\n\t\treturn button;\n\t}\n\n\tif (typeof tooltip === \"string\") {\n\t\ttooltip = {\n\t\t\tchildren: tooltip\n\t\t};\n\t}\n\n\treturn (\n\t\t<Tooltip>\n\t\t\t<TooltipTrigger asChild>{button}</TooltipTrigger>\n\t\t\t<TooltipContent side=\"right\" align=\"center\" hidden={state !== \"collapsed\" || isMobile} {...tooltip} />\n\t\t</Tooltip>\n\t);\n});\n\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\n\nconst sidebarMenuActionStyles = tv({\n\tbase: [\n\t\t\"absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-muted outline-none transition-transform hover:text-primary-fg focus-visible:ring-1 focus-visible:ring-primary peer-hover/menu-button:text-primary-fg [&>svg]:size-4 [&>svg]:shrink-0\",\n\t\t// Increases the hit area of the button on mobile.\n\t\t\"after:absolute after:-inset-2 after:md:hidden\",\n\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t],\n\tvariants: {\n\t\tisHover: {\n\t\t\ttrue: \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-primary-accent md:opacity-0\"\n\t\t}\n\t}\n});\n\nconst SidebarMenuAction = React.forwardRef<\n\tHTMLButtonElement,\n\tReact.ComponentProps<\"button\"> & {\n\t\tasChild?: boolean;\n\t\tshowOnHover?: boolean;\n\t}\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"button\";\n\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-action\"\n\t\t\tclassName={sidebarMenuActionStyles({ isHover: showOnHover, className })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\n\nconst sidebarMenuBadgeStyles = tv({\n\tbase: [\n\t\t\"pointer-events-none absolute right-1 flex h-5 min-w-5 select-none items-center justify-center rounded-md px-1 text-xs font-normal tabular-nums leading-none text-muted\",\n\t\t\"peer-hover/menu-button:text-muted peer-disabled/menu-button:opacity-50 peer-data-[active=true]/menu-button:text-muted\",\n\t\t\"peer-data-[size=sm]/menu-button:top-1\",\n\t\t\"peer-data-[size=default]/menu-button:top-1.5\",\n\t\t\"peer-data-[size=lg]/menu-button:top-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(\n\t({ className, ...props }, ref) => (\n\t\t<div ref={ref} data-sidebar=\"menu-badge\" className={sidebarMenuBadgeStyles({ className })} {...props} />\n\t)\n);\n\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\n\nconst sidebarMenuSkeletonStyles = tv({\n\tslots: {\n\t\twrapper: \"flex h-8 items-center gap-2 rounded-md px-2\",\n\t\tskeleton: \"h-4 max-w-[--skeleton-width] flex-1\",\n\t\tskeletonIcon: \"size-4 rounded-md\"\n\t}\n});\n\nconst SidebarMenuSkeleton = React.forwardRef<\n\tHTMLDivElement,\n\tReact.ComponentProps<\"div\"> & {\n\t\tshowIcon?: boolean;\n\t}\n>(({ className, showIcon = false, ...props }, ref) => {\n\t// Random width between 50 to 90%.\n\tconst width = React.useMemo(() => {\n\t\treturn `${Math.floor(Math.random() * 40) + 50}%`;\n\t}, []);\n\n\tconst styles = sidebarMenuSkeletonStyles();\n\n\treturn (\n\t\t<div ref={ref} data-sidebar=\"menu-skeleton\" className={styles.wrapper({ className })} {...props}>\n\t\t\t{showIcon && <Skeleton className={styles.skeletonIcon()} data-sidebar=\"menu-skeleton-icon\" />}\n\t\t\t<Skeleton\n\t\t\t\tclassName={styles.skeleton()}\n\t\t\t\tdata-sidebar=\"menu-skeleton-text\"\n\t\t\t\tstyle={\n\t\t\t\t\t{\n\t\t\t\t\t\t\"--skeleton-width\": width\n\t\t\t\t\t} as React.CSSProperties\n\t\t\t\t}\n\t\t\t/>\n\t\t</div>\n\t);\n});\n\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\n\nconst sidebarMenuSubStyles = tv({\n\tbase: [\n\t\t\"ml-3.5 flex min-w-0 flex-col gap-1 border-l border-secondary-border py-0.5 pl-2.5\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t]\n});\n\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(\n\t({ className, ...props }, ref) => (\n\t\t<ul ref={ref} data-sidebar=\"menu-sub\" className={sidebarMenuSubStyles({ className })} {...props} />\n\t)\n);\n\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\n\nconst sidebarMenuSubItemStyles = tv({\n\tbase: \"rounded-md focus-visible:shadow-focus focus-visible:outline-none\"\n});\n\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(\n\t({ className, ...props }, ref) => <li ref={ref} className={sidebarMenuSubItemStyles({ className })} {...props} />\n);\n\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\n\nconst sidebarMenuSubButtonStyles = tv({\n\tbase: [\n\t\t\"flex h-7 min-w-0 items-center gap-2 overflow-hidden rounded-md px-2 text-secondary-fg outline-none hover:bg-secondary-bg-hover hover:text-primary-fg focus-visible:mr-0.5 focus-visible:shadow-focus disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-primary-fg\",\n\t\t\"data-[active=true]:bg-primary-bg-hover data-[active=true]:text-primary-accent\",\n\t\t\"group-data-[collapsible=icon]:hidden\"\n\t],\n\tvariants: {\n\t\tsize: {\n\t\t\tsm: \"text-xs\",\n\t\t\tmd: \"text-sm\"\n\t\t}\n\t}\n});\n\nconst SidebarMenuSubButton = React.forwardRef<\n\tHTMLAnchorElement,\n\tReact.ComponentProps<\"a\"> & {\n\t\tasChild?: boolean;\n\t\tsize?: \"sm\" | \"md\";\n\t\tisActive?: boolean;\n\t}\n>(({ asChild = false, size = \"md\", isActive, className, ...props }, ref) => {\n\tconst Comp = asChild ? Slot : \"a\";\n\n\treturn (\n\t\t<Comp\n\t\t\tref={ref}\n\t\t\tdata-sidebar=\"menu-sub-button\"\n\t\t\tdata-size={size}\n\t\t\tdata-active={isActive}\n\t\t\tclassName={sidebarMenuSubButtonStyles({ size, className })}\n\t\t\t{...props}\n\t\t/>\n\t);\n});\n\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\n\nconst sidebarInsertionLineStyles = tv({\n\tslots: {\n\t\twrapper: \"group/insertion flex cursor-pointer flex-row items-center border-none bg-transparent p-0\",\n\t\ticon: \"peer/icon h-4 w-4 p-0.5 text-muted opacity-0 group-hover/insertion:opacity-100\",\n\t\tline: \"h-px w-full bg-transparent group-hover/insertion:bg-muted peer-hover/icon:bg-primary-fg\"\n\t}\n});\n\nexport type SidebarInsertionLineProps = React.HTMLAttributes<HTMLDivElement>;\n\nconst SidebarInsertionLine = React.forwardRef<HTMLDivElement, SidebarInsertionLineProps>(\n\t({ className, ...props }, ref) => {\n\t\tconst styles = sidebarInsertionLineStyles();\n\t\treturn (\n\t\t\t<div data-sidebar=\"sidebar-insertion-line\" className={styles.wrapper({ className })} ref={ref} {...props}>\n\t\t\t\t<IconButton icon={Plus} size=\"xs\" className={styles.icon()} variant=\"link\" />\n\t\t\t\t<div className={styles.line()} />\n\t\t\t</div>\n\t\t);\n\t}\n);\nSidebarInsertionLine.displayName = \"SidebarInsertionLine\";\n\nexport {\n\tSidebar,\n\tSidebarContent,\n\tSidebarFooter,\n\tSidebarGroup,\n\tSidebarGroupAction,\n\tSidebarGroupContent,\n\tSidebarGroupLabel,\n\tSidebarHeader,\n\tSidebarInput,\n\tSidebarInset,\n\tSidebarMenu,\n\tSidebarMenuAction,\n\tSidebarMenuBadge,\n\tSidebarMenuButton,\n\tSidebarMenuItem,\n\tSidebarMenuSkeleton,\n\tSidebarMenuSub,\n\tSidebarMenuSubButton,\n\tSidebarMenuSubItem,\n\tSidebarProvider,\n\tSidebarRail,\n\tSidebarSeparator,\n\tSidebarInsertionLine,\n\tSidebarTrigger\n};\n"],"names":["PanelLeft","createLucideIcon","SidebarContext","React","useSidebar","context","SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","sizebarProviderStyles","tv","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","openMobile","setOpenMobile","hasInset","setHasInset","_open","_setOpen","open","setOpen","value","openState","toggleSidebar","handleKeyDown","event","state","contextValue","jsx","Sidebar","side","variant","collapsible","cn","jsxs","Fragment","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","IconButton","sidebarRailStyles","SidebarRail","sidebarInsetStyles","SidebarInset","sidebarInputStyles","SidebarInput","TextInput","sidebarHeaderStyles","SidebarHeader","sidebarFooterStyles","SidebarFooter","sidebarSeparatorStyles","SidebarSeparator","Divider","sidebarContentStyles","SidebarContent","styles","ScrollShadowContainer","sidebarGroupStyles","SidebarGroup","sidebarGroupLabelStyles","SidebarGroupLabel","asChild","Slot","sidebarGroupActionStyles","SidebarGroupAction","sidebarGroupContentStyles","SidebarGroupContent","sidebarMenuStyles","SidebarMenu","sidebarMenuItemStyles","SidebarMenuItem","sidebarMenuButtonStyles","SidebarMenuButton","isActive","size","tooltip","Comp","button","Tooltip","TooltipTrigger","TooltipContent","sidebarMenuActionStyles","SidebarMenuAction","showOnHover","sidebarMenuBadgeStyles","SidebarMenuBadge","sidebarMenuSkeletonStyles","SidebarMenuSkeleton","showIcon","width","Skeleton","sidebarMenuSubStyles","SidebarMenuSub","sidebarMenuSubItemStyles","SidebarMenuSubItem","sidebarMenuSubButtonStyles","SidebarMenuSubButton","sidebarInsertionLineStyles","SidebarInsertionLine","Plus"],"mappings":"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","x_google_ignoreList":[0]}
@@ -1,4 +1,4 @@
1
- import { C as r, u as s } from "../../useColumnReorder-BxVZQ_Y5.js";
1
+ import { C as r, u as s } from "../../useColumnReorder-tE5pMONm.js";
2
2
  export {
3
3
  r as COLUMN_KEY_ATTRIBUTE,
4
4
  s as useColumnReorder
@@ -24,7 +24,7 @@ import { CSSProperties } from 'react';
24
24
  * полупрозрачный CSS-цвет.
25
25
  */
26
26
  export declare const TABLE_ROW_TINT: {
27
- readonly selected: "hsl(var(--alpha-high-05))";
27
+ readonly selected: "hsl(var(--alpha-accent-high-secondary))";
28
28
  readonly inactive: "hsl(var(--status-error) / 5%)";
29
29
  };
30
30
  /**
@@ -1,5 +1,5 @@
1
1
  import { T as c } from "../../index-BVqs-uqP.js";
2
- import { o as l } from "../../opaqueCell-SGaiyL54.js";
2
+ import { o as l } from "../../opaqueCell-D95h1mFM.js";
3
3
  const r = "sticky top-0 z-20", n = "sticky bottom-0 z-20", p = c({
4
4
  extend: l,
5
5
  base: "sticky",
@@ -1,4 +1,4 @@
1
- import { s as a, o as E, p as s, u as l, r, q as _, v as R, j as t, k as L, m as N, l as O, x as n, w as G, n as i, t as b } from "../../treeModel-BlPWVj4W.js";
1
+ import { s as a, o as E, p as s, u as l, r, q as _, v as R, j as t, k as L, m as N, l as O, x as n, w as G, n as i, t as b } from "../../treeModel-jvOXFZvK.js";
2
2
  export {
3
3
  a as TREE_CONNECTOR_Y,
4
4
  E as TREE_INDENT,
@@ -1,7 +1,7 @@
1
- import { s, o as T, p as l, u as E, r as t, q as o, v as R, T as r, b as _, c as n, h as i, g as C, d as b, e as d, a as L, i as O, f as S, j as A, k as N, m as c, l as f, x as g, w as m, n as u, t as p } from "../treeModel-BlPWVj4W.js";
1
+ import { s, o as T, p as l, u as E, r as t, q as o, v as R, T as r, b as _, c as n, h as i, g as C, d as b, e as d, a as L, i as O, f as S, j as A, k as N, m as c, l as f, x as g, w as m, n as u, t as p } from "../treeModel-jvOXFZvK.js";
2
2
  import { C as I, g as G, u as x } from "../useColumnResize-wjfEyBBg.js";
3
- import { C as F, u as H } from "../useColumnReorder-BxVZQ_Y5.js";
4
- import { T as W, a as h, b as k, o as w, t as z } from "../opaqueCell-SGaiyL54.js";
3
+ import { C as F, u as H } from "../useColumnReorder-tE5pMONm.js";
4
+ import { T as W, a as h, b as k, o as w, t as z } from "../opaqueCell-D95h1mFM.js";
5
5
  import { C as K, T as U, a as q, b as M, d as P, e as j, c as v, i as V } from "../TableFillHandle-C_yvCTSl.js";
6
6
  import { STICKY_FOOTER as J, STICKY_HEADER as Q, stickyCellStyles as Z, stickyOffset as $ } from "./table/sticky.js";
7
7
  export {