@enya-learning/nova 0.5.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (113) hide show
  1. package/README.md +8 -10
  2. package/dist/chunks/dist-fahbq1psobj0ox6s.js.map +1 -1
  3. package/dist/components/accordion.js +23 -20
  4. package/dist/components/accordion.js.map +1 -1
  5. package/dist/components/alert-dialog.js +2 -2
  6. package/dist/components/alert-dialog.js.map +1 -1
  7. package/dist/components/avatar.js +24 -24
  8. package/dist/components/avatar.js.map +1 -1
  9. package/dist/components/badge.js +12 -12
  10. package/dist/components/badge.js.map +1 -1
  11. package/dist/components/box.js +16 -0
  12. package/dist/components/box.js.map +1 -0
  13. package/dist/components/breadcrumb.js +28 -24
  14. package/dist/components/breadcrumb.js.map +1 -1
  15. package/dist/components/button-group.js +2 -2
  16. package/dist/components/button-group.js.map +1 -1
  17. package/dist/components/button.js +10 -10
  18. package/dist/components/button.js.map +1 -1
  19. package/dist/components/calendar.js +491 -487
  20. package/dist/components/calendar.js.map +1 -1
  21. package/dist/components/carousel.js +105 -98
  22. package/dist/components/carousel.js.map +1 -1
  23. package/dist/components/chart.js +2 -2
  24. package/dist/components/chart.js.map +1 -1
  25. package/dist/components/checkbox.js +7 -6
  26. package/dist/components/checkbox.js.map +1 -1
  27. package/dist/components/combobox.js +64 -51
  28. package/dist/components/combobox.js.map +1 -1
  29. package/dist/components/command.js +167 -160
  30. package/dist/components/command.js.map +1 -1
  31. package/dist/components/context-menu.js +40 -36
  32. package/dist/components/context-menu.js.map +1 -1
  33. package/dist/components/dialog.js +25 -24
  34. package/dist/components/dialog.js.map +1 -1
  35. package/dist/components/drawer.js +2 -2
  36. package/dist/components/drawer.js.map +1 -1
  37. package/dist/components/dropdown-menu.js +39 -35
  38. package/dist/components/dropdown-menu.js.map +1 -1
  39. package/dist/components/empty.js +1 -1
  40. package/dist/components/empty.js.map +1 -1
  41. package/dist/components/field.js +1 -1
  42. package/dist/components/field.js.map +1 -1
  43. package/dist/components/heading.js +39 -0
  44. package/dist/components/heading.js.map +1 -0
  45. package/dist/components/input-group.js +14 -14
  46. package/dist/components/input-group.js.map +1 -1
  47. package/dist/components/input-otp.js +28 -27
  48. package/dist/components/input-otp.js.map +1 -1
  49. package/dist/components/input.js +1 -1
  50. package/dist/components/input.js.map +1 -1
  51. package/dist/components/item.js +34 -34
  52. package/dist/components/item.js.map +1 -1
  53. package/dist/components/kbd.js +7 -7
  54. package/dist/components/kbd.js.map +1 -1
  55. package/dist/components/menubar.js +52 -51
  56. package/dist/components/menubar.js.map +1 -1
  57. package/dist/components/native-select.js +21 -19
  58. package/dist/components/native-select.js.map +1 -1
  59. package/dist/components/navigation-menu.js +21 -19
  60. package/dist/components/navigation-menu.js.map +1 -1
  61. package/dist/components/pagination.js +33 -30
  62. package/dist/components/pagination.js.map +1 -1
  63. package/dist/components/progress.js +4 -4
  64. package/dist/components/progress.js.map +1 -1
  65. package/dist/components/radio-group.js +14 -14
  66. package/dist/components/radio-group.js.map +1 -1
  67. package/dist/components/resizable.js +1 -1
  68. package/dist/components/resizable.js.map +1 -1
  69. package/dist/components/select.js +64 -57
  70. package/dist/components/select.js.map +1 -1
  71. package/dist/components/sheet.js +22 -21
  72. package/dist/components/sheet.js.map +1 -1
  73. package/dist/components/sidebar.js +83 -79
  74. package/dist/components/sidebar.js.map +1 -1
  75. package/dist/components/skeleton.js +1 -1
  76. package/dist/components/skeleton.js.map +1 -1
  77. package/dist/components/slider.js +7 -7
  78. package/dist/components/slider.js.map +1 -1
  79. package/dist/components/sonner.js +137 -121
  80. package/dist/components/sonner.js.map +1 -1
  81. package/dist/components/spinner.js +10 -8
  82. package/dist/components/spinner.js.map +1 -1
  83. package/dist/components/switch.js +5 -5
  84. package/dist/components/switch.js.map +1 -1
  85. package/dist/components/table.js +14 -14
  86. package/dist/components/table.js.map +1 -1
  87. package/dist/components/tabs.js +15 -15
  88. package/dist/components/tabs.js.map +1 -1
  89. package/dist/components/text.js +47 -0
  90. package/dist/components/text.js.map +1 -0
  91. package/dist/components/textarea.js +5 -5
  92. package/dist/components/textarea.js.map +1 -1
  93. package/dist/components/toggle-group.js +1 -1
  94. package/dist/components/toggle-group.js.map +1 -1
  95. package/dist/components/toggle.js +7 -7
  96. package/dist/components/toggle.js.map +1 -1
  97. package/dist/components/tooltip.js +5 -5
  98. package/dist/components/tooltip.js.map +1 -1
  99. package/dist/index.js +22 -14
  100. package/dist/src/components/box/box.d.ts +7 -0
  101. package/dist/src/components/box/index.d.ts +1 -0
  102. package/dist/src/components/heading/heading.d.ts +15 -0
  103. package/dist/src/components/heading/index.d.ts +1 -0
  104. package/dist/src/components/spinner/spinner.d.ts +2 -1
  105. package/dist/src/components/text/index.d.ts +1 -0
  106. package/dist/src/components/text/text.d.ts +13 -0
  107. package/dist/src/index.d.ts +3 -0
  108. package/dist/styles/nova-binding.css +264 -266
  109. package/dist/styles/nova.css +158 -49
  110. package/dist/styles/typography.css +3 -123
  111. package/package.json +15 -2
  112. package/src/eslint/no-primitive-colors.js +2 -2
  113. package/dist/styles/theme-nova.css +0 -197
@@ -6,14 +6,15 @@ import { Separator as C } from "./separator.js";
6
6
  import { Input as B } from "./input.js";
7
7
  import { Sheet as D, SheetContent as O, SheetDescription as A, SheetHeader as R, SheetTitle as L } from "./sheet.js";
8
8
  import { Skeleton as z } from "./skeleton.js";
9
- import { Tooltip as K, TooltipContent as H, TooltipTrigger as $ } from "./tooltip.js";
10
- import { jsx as t, jsxs as f } from "react/jsx-runtime";
9
+ import { Tooltip as H, TooltipContent as K, TooltipTrigger as j } from "./tooltip.js";
10
+ import { jsx as t, jsxs as p } from "react/jsx-runtime";
11
11
  import { mergeProps as h } from "@base-ui/react/merge-props";
12
12
  import { useRender as v } from "@base-ui/react/use-render";
13
- import { PanelLeftIcon as j } from "lucide-react";
13
+ import { HugeiconsIcon as G } from "@hugeicons/react";
14
+ import { PanelLeftIcon as W } from "@hugeicons/core-free-icons";
14
15
  import * as d from "react";
15
16
  var y = 768;
16
- function G() {
17
+ function $() {
17
18
  const [e, a] = d.useState(() => {
18
19
  if (!(typeof window > "u"))
19
20
  return window.innerWidth < y;
@@ -25,16 +26,16 @@ function G() {
25
26
  return r.addEventListener("change", n), () => r.removeEventListener("change", n);
26
27
  }, []), !!e;
27
28
  }
28
- var W = "sidebar_state", P = 3600 * 24 * 7, q = "16rem", V = "18rem", F = "3rem", U = "b", M = d.createContext(null);
29
+ var P = "sidebar_state", q = 3600 * 24 * 7, V = "16rem", F = "18rem", U = "3rem", X = "b", M = d.createContext(null);
29
30
  function S() {
30
31
  const e = d.useContext(M);
31
32
  if (!e) throw new Error("useSidebar must be used within a SidebarProvider.");
32
33
  return e;
33
34
  }
34
- function oe({ defaultOpen: e = !0, open: a, onOpenChange: r, className: n, style: s, children: g, ...b }) {
35
- const u = G(), [p, l] = d.useState(!1), [N, k] = d.useState(e), m = a ?? N, x = d.useCallback((o) => {
35
+ function ue({ defaultOpen: e = !0, open: a, onOpenChange: r, className: n, style: s, children: g, ...b }) {
36
+ const u = $(), [f, l] = d.useState(!1), [N, I] = d.useState(e), m = a ?? N, x = d.useCallback((o) => {
36
37
  const c = typeof o == "function" ? o(m) : o;
37
- r ? r(c) : k(c), document.cookie = `${W}=${c}; path=/; max-age=${P}`;
38
+ r ? r(c) : I(c), document.cookie = `${P}=${c}; path=/; max-age=${q}`;
38
39
  }, [r, m]), w = d.useCallback(() => u ? l((o) => !o) : x((o) => !o), [
39
40
  u,
40
41
  x,
@@ -42,16 +43,16 @@ function oe({ defaultOpen: e = !0, open: a, onOpenChange: r, className: n, style
42
43
  ]);
43
44
  d.useEffect(() => {
44
45
  const o = (c) => {
45
- c.key === U && (c.metaKey || c.ctrlKey) && (c.preventDefault(), w());
46
+ c.key === X && (c.metaKey || c.ctrlKey) && (c.preventDefault(), w());
46
47
  };
47
48
  return window.addEventListener("keydown", o), () => window.removeEventListener("keydown", o);
48
49
  }, [w]);
49
- const _ = m ? "expanded" : "collapsed", I = d.useMemo(() => ({
50
+ const _ = m ? "expanded" : "collapsed", k = d.useMemo(() => ({
50
51
  state: _,
51
52
  open: m,
52
53
  setOpen: x,
53
54
  isMobile: u,
54
- openMobile: p,
55
+ openMobile: f,
55
56
  setOpenMobile: l,
56
57
  toggleSidebar: w
57
58
  }), [
@@ -59,17 +60,17 @@ function oe({ defaultOpen: e = !0, open: a, onOpenChange: r, className: n, style
59
60
  m,
60
61
  x,
61
62
  u,
62
- p,
63
+ f,
63
64
  l,
64
65
  w
65
66
  ]);
66
67
  return /* @__PURE__ */ t(M.Provider, {
67
- value: I,
68
+ value: k,
68
69
  children: /* @__PURE__ */ t("div", {
69
70
  "data-slot": "sidebar-wrapper",
70
71
  style: {
71
- "--sidebar-width": q,
72
- "--sidebar-width-icon": F,
72
+ "--sidebar-width": V,
73
+ "--sidebar-width-icon": U,
73
74
  ...s
74
75
  },
75
76
  className: i("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar", n),
@@ -78,8 +79,8 @@ function oe({ defaultOpen: e = !0, open: a, onOpenChange: r, className: n, style
78
79
  })
79
80
  });
80
81
  }
81
- function le({ side: e = "left", variant: a = "sidebar", collapsible: r = "offcanvas", className: n, children: s, dir: g, ...b }) {
82
- const { isMobile: u, state: p, openMobile: l, setOpenMobile: N } = S();
82
+ function ce({ side: e = "left", variant: a = "sidebar", collapsible: r = "offcanvas", className: n, children: s, dir: g, ...b }) {
83
+ const { isMobile: u, state: f, openMobile: l, setOpenMobile: N } = S();
83
84
  return r === "none" ? /* @__PURE__ */ t("div", {
84
85
  "data-slot": "sidebar",
85
86
  className: i("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground", n),
@@ -89,15 +90,15 @@ function le({ side: e = "left", variant: a = "sidebar", collapsible: r = "offcan
89
90
  open: l,
90
91
  onOpenChange: N,
91
92
  ...b,
92
- children: /* @__PURE__ */ f(O, {
93
+ children: /* @__PURE__ */ p(O, {
93
94
  dir: g,
94
95
  "data-sidebar": "sidebar",
95
96
  "data-slot": "sidebar",
96
97
  "data-mobile": "true",
97
98
  className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden",
98
- style: { "--sidebar-width": V },
99
+ style: { "--sidebar-width": F },
99
100
  side: e,
100
- children: [/* @__PURE__ */ f(R, {
101
+ children: [/* @__PURE__ */ p(R, {
101
102
  className: "sr-only",
102
103
  children: [/* @__PURE__ */ t(L, { children: "Sidebar" }), /* @__PURE__ */ t(A, { children: "Displays the mobile sidebar." })]
103
104
  }), /* @__PURE__ */ t("div", {
@@ -105,10 +106,10 @@ function le({ side: e = "left", variant: a = "sidebar", collapsible: r = "offcan
105
106
  children: s
106
107
  })]
107
108
  })
108
- }) : /* @__PURE__ */ f("div", {
109
+ }) : /* @__PURE__ */ p("div", {
109
110
  className: "group peer hidden text-sidebar-foreground md:block",
110
- "data-state": p,
111
- "data-collapsible": p === "collapsed" ? r : "",
111
+ "data-state": f,
112
+ "data-collapsible": f === "collapsed" ? r : "",
112
113
  "data-variant": a,
113
114
  "data-side": e,
114
115
  "data-slot": "sidebar",
@@ -129,9 +130,9 @@ function le({ side: e = "left", variant: a = "sidebar", collapsible: r = "offcan
129
130
  })]
130
131
  });
131
132
  }
132
- function ue({ className: e, onClick: a, ...r }) {
133
+ function be({ className: e, onClick: a, ...r }) {
133
134
  const { toggleSidebar: n } = S();
134
- return /* @__PURE__ */ f(T, {
135
+ return /* @__PURE__ */ p(T, {
135
136
  "data-sidebar": "trigger",
136
137
  "data-slot": "sidebar-trigger",
137
138
  variant: "ghost",
@@ -141,13 +142,16 @@ function ue({ className: e, onClick: a, ...r }) {
141
142
  a?.(s), n();
142
143
  },
143
144
  ...r,
144
- children: [/* @__PURE__ */ t(j, { className: "rtl:rotate-180" }), /* @__PURE__ */ t("span", {
145
+ children: [/* @__PURE__ */ t(G, {
146
+ icon: W,
147
+ className: "rtl:rotate-180"
148
+ }), /* @__PURE__ */ t("span", {
145
149
  className: "sr-only",
146
150
  children: "Toggle Sidebar"
147
151
  })]
148
152
  });
149
153
  }
150
- function ce({ className: e, ...a }) {
154
+ function fe({ className: e, ...a }) {
151
155
  const { toggleSidebar: r } = S();
152
156
  return /* @__PURE__ */ t("button", {
153
157
  "data-sidebar": "rail",
@@ -160,22 +164,22 @@ function ce({ className: e, ...a }) {
160
164
  ...a
161
165
  });
162
166
  }
163
- function be({ className: e, ...a }) {
167
+ function pe({ className: e, ...a }) {
164
168
  return /* @__PURE__ */ t("main", {
165
169
  "data-slot": "sidebar-inset",
166
- className: i("relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2", e),
170
+ className: i("relative flex w-full flex-1 flex-col bg-surface-1 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2", e),
167
171
  ...a
168
172
  });
169
173
  }
170
- function pe({ className: e, ...a }) {
174
+ function ge({ className: e, ...a }) {
171
175
  return /* @__PURE__ */ t(B, {
172
176
  "data-slot": "sidebar-input",
173
177
  "data-sidebar": "input",
174
- className: i("h-8 w-full bg-background shadow-none", e),
178
+ className: i("h-8 w-full bg-surface-1 shadow-none", e),
175
179
  ...a
176
180
  });
177
181
  }
178
- function fe({ className: e, ...a }) {
182
+ function me({ className: e, ...a }) {
179
183
  return /* @__PURE__ */ t("div", {
180
184
  "data-slot": "sidebar-header",
181
185
  "data-sidebar": "header",
@@ -183,7 +187,7 @@ function fe({ className: e, ...a }) {
183
187
  ...a
184
188
  });
185
189
  }
186
- function ge({ className: e, ...a }) {
190
+ function he({ className: e, ...a }) {
187
191
  return /* @__PURE__ */ t("div", {
188
192
  "data-slot": "sidebar-footer",
189
193
  "data-sidebar": "footer",
@@ -191,7 +195,7 @@ function ge({ className: e, ...a }) {
191
195
  ...a
192
196
  });
193
197
  }
194
- function me({ className: e, ...a }) {
198
+ function ve({ className: e, ...a }) {
195
199
  return /* @__PURE__ */ t(C, {
196
200
  "data-slot": "sidebar-separator",
197
201
  "data-sidebar": "separator",
@@ -199,7 +203,7 @@ function me({ className: e, ...a }) {
199
203
  ...a
200
204
  });
201
205
  }
202
- function he({ className: e, ...a }) {
206
+ function xe({ className: e, ...a }) {
203
207
  return /* @__PURE__ */ t("div", {
204
208
  "data-slot": "sidebar-content",
205
209
  "data-sidebar": "content",
@@ -207,7 +211,7 @@ function he({ className: e, ...a }) {
207
211
  ...a
208
212
  });
209
213
  }
210
- function ve({ className: e, ...a }) {
214
+ function we({ className: e, ...a }) {
211
215
  return /* @__PURE__ */ t("div", {
212
216
  "data-slot": "sidebar-group",
213
217
  "data-sidebar": "group",
@@ -215,7 +219,7 @@ function ve({ className: e, ...a }) {
215
219
  ...a
216
220
  });
217
221
  }
218
- function xe({ className: e, render: a, ...r }) {
222
+ function Se({ className: e, render: a, ...r }) {
219
223
  return v({
220
224
  defaultTagName: "div",
221
225
  props: h({ className: i("flex h-8 shrink-0 items-center rounded-md px-3 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", e) }, r),
@@ -226,7 +230,7 @@ function xe({ className: e, render: a, ...r }) {
226
230
  }
227
231
  });
228
232
  }
229
- function we({ className: e, render: a, ...r }) {
233
+ function Ne({ className: e, render: a, ...r }) {
230
234
  return v({
231
235
  defaultTagName: "button",
232
236
  props: h({ className: i("absolute end-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0", e) }, r),
@@ -237,7 +241,7 @@ function we({ className: e, render: a, ...r }) {
237
241
  }
238
242
  });
239
243
  }
240
- function Se({ className: e, ...a }) {
244
+ function ye({ className: e, ...a }) {
241
245
  return /* @__PURE__ */ t("div", {
242
246
  "data-slot": "sidebar-group-content",
243
247
  "data-sidebar": "group-content",
@@ -245,7 +249,7 @@ function Se({ className: e, ...a }) {
245
249
  ...a
246
250
  });
247
251
  }
248
- function Ne({ className: e, ...a }) {
252
+ function _e({ className: e, ...a }) {
249
253
  return /* @__PURE__ */ t("ul", {
250
254
  "data-slot": "sidebar-menu",
251
255
  "data-sidebar": "menu",
@@ -253,7 +257,7 @@ function Ne({ className: e, ...a }) {
253
257
  ...a
254
258
  });
255
259
  }
256
- function ye({ className: e, ...a }) {
260
+ function ze({ className: e, ...a }) {
257
261
  return /* @__PURE__ */ t("li", {
258
262
  "data-slot": "sidebar-menu-item",
259
263
  "data-sidebar": "menu-item",
@@ -261,11 +265,11 @@ function ye({ className: e, ...a }) {
261
265
  ...a
262
266
  });
263
267
  }
264
- var X = E("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-lg px-3 py-2 text-start text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pe-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate", {
268
+ var Y = E("peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-lg px-3 py-2 text-start text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pe-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate", {
265
269
  variants: {
266
270
  variant: {
267
271
  default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
268
- outline: "bg-background shadow-[0_0_0_1px_var(--color-sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--color-sidebar-accent)]"
272
+ outline: "bg-surface-1 shadow-[0_0_0_1px_var(--color-sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--color-sidebar-accent)]"
269
273
  },
270
274
  size: {
271
275
  default: "h-9 text-sm",
@@ -278,14 +282,14 @@ var X = E("peer/menu-button group/menu-button flex w-full items-center gap-2 ove
278
282
  size: "default"
279
283
  }
280
284
  });
281
- function _e({ render: e, isActive: a = !1, variant: r = "default", size: n = "default", tooltip: s, className: g, ...b }) {
282
- const { isMobile: u, state: p } = S(), l = v({
285
+ function Me({ render: e, isActive: a = !1, variant: r = "default", size: n = "default", tooltip: s, className: g, ...b }) {
286
+ const { isMobile: u, state: f } = S(), l = v({
283
287
  defaultTagName: "button",
284
- props: h({ className: i(X({
288
+ props: h({ className: i(Y({
285
289
  variant: r,
286
290
  size: n
287
291
  }), g) }, b),
288
- render: s ? /* @__PURE__ */ t($, { render: e }) : e,
292
+ render: s ? /* @__PURE__ */ t(j, { render: e }) : e,
289
293
  state: {
290
294
  slot: "sidebar-menu-button",
291
295
  sidebar: "menu-button",
@@ -293,14 +297,14 @@ function _e({ render: e, isActive: a = !1, variant: r = "default", size: n = "de
293
297
  active: a
294
298
  }
295
299
  });
296
- return s ? (typeof s == "string" && (s = { children: s }), /* @__PURE__ */ f(K, { children: [l, /* @__PURE__ */ t(H, {
300
+ return s ? (typeof s == "string" && (s = { children: s }), /* @__PURE__ */ p(H, { children: [l, /* @__PURE__ */ t(K, {
297
301
  side: "right",
298
302
  align: "center",
299
- hidden: p !== "collapsed" || u,
303
+ hidden: f !== "collapsed" || u,
300
304
  ...s
301
305
  })] })) : l;
302
306
  }
303
- function ze({ className: e, render: a, showOnHover: r = !1, ...n }) {
307
+ function Ie({ className: e, render: a, showOnHover: r = !1, ...n }) {
304
308
  return v({
305
309
  defaultTagName: "button",
306
310
  props: h({ className: i("absolute end-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-2 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0", r && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0", e) }, n),
@@ -311,7 +315,7 @@ function ze({ className: e, render: a, showOnHover: r = !1, ...n }) {
311
315
  }
312
316
  });
313
317
  }
314
- function Me({ className: e, ...a }) {
318
+ function ke({ className: e, ...a }) {
315
319
  return /* @__PURE__ */ t("div", {
316
320
  "data-slot": "sidebar-menu-badge",
317
321
  "data-sidebar": "menu-badge",
@@ -319,9 +323,9 @@ function Me({ className: e, ...a }) {
319
323
  ...a
320
324
  });
321
325
  }
322
- function ke({ className: e, showIcon: a = !1, ...r }) {
326
+ function Ee({ className: e, showIcon: a = !1, ...r }) {
323
327
  const [n] = d.useState(() => `${Math.floor(Math.random() * 40) + 50}%`);
324
- return /* @__PURE__ */ f("div", {
328
+ return /* @__PURE__ */ p("div", {
325
329
  "data-slot": "sidebar-menu-skeleton",
326
330
  "data-sidebar": "menu-skeleton",
327
331
  className: i("flex h-8 items-center gap-2 rounded-md px-2", e),
@@ -336,7 +340,7 @@ function ke({ className: e, showIcon: a = !1, ...r }) {
336
340
  })]
337
341
  });
338
342
  }
339
- function Ie({ className: e, ...a }) {
343
+ function Te({ className: e, ...a }) {
340
344
  return /* @__PURE__ */ t("ul", {
341
345
  "data-slot": "sidebar-menu-sub",
342
346
  "data-sidebar": "menu-sub",
@@ -344,7 +348,7 @@ function Ie({ className: e, ...a }) {
344
348
  ...a
345
349
  });
346
350
  }
347
- function Ee({ className: e, ...a }) {
351
+ function Ce({ className: e, ...a }) {
348
352
  return /* @__PURE__ */ t("li", {
349
353
  "data-slot": "sidebar-menu-sub-item",
350
354
  "data-sidebar": "menu-sub-item",
@@ -352,7 +356,7 @@ function Ee({ className: e, ...a }) {
352
356
  ...a
353
357
  });
354
358
  }
355
- function Te({ render: e, size: a = "md", isActive: r = !1, className: n, ...s }) {
359
+ function Be({ render: e, size: a = "md", isActive: r = !1, className: n, ...s }) {
356
360
  return v({
357
361
  defaultTagName: "a",
358
362
  props: h({ className: i("flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs rtl:translate-x-px data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground", n) }, s),
@@ -366,29 +370,29 @@ function Te({ render: e, size: a = "md", isActive: r = !1, className: n, ...s })
366
370
  });
367
371
  }
368
372
  export {
369
- le as Sidebar,
370
- he as SidebarContent,
371
- ge as SidebarFooter,
372
- ve as SidebarGroup,
373
- we as SidebarGroupAction,
374
- Se as SidebarGroupContent,
375
- xe as SidebarGroupLabel,
376
- fe as SidebarHeader,
377
- pe as SidebarInput,
378
- be as SidebarInset,
379
- Ne as SidebarMenu,
380
- ze as SidebarMenuAction,
381
- Me as SidebarMenuBadge,
382
- _e as SidebarMenuButton,
383
- ye as SidebarMenuItem,
384
- ke as SidebarMenuSkeleton,
385
- Ie as SidebarMenuSub,
386
- Te as SidebarMenuSubButton,
387
- Ee as SidebarMenuSubItem,
388
- oe as SidebarProvider,
389
- ce as SidebarRail,
390
- me as SidebarSeparator,
391
- ue as SidebarTrigger,
373
+ ce as Sidebar,
374
+ xe as SidebarContent,
375
+ he as SidebarFooter,
376
+ we as SidebarGroup,
377
+ Ne as SidebarGroupAction,
378
+ ye as SidebarGroupContent,
379
+ Se as SidebarGroupLabel,
380
+ me as SidebarHeader,
381
+ ge as SidebarInput,
382
+ pe as SidebarInset,
383
+ _e as SidebarMenu,
384
+ Ie as SidebarMenuAction,
385
+ ke as SidebarMenuBadge,
386
+ Me as SidebarMenuButton,
387
+ ze as SidebarMenuItem,
388
+ Ee as SidebarMenuSkeleton,
389
+ Te as SidebarMenuSub,
390
+ Be as SidebarMenuSubButton,
391
+ Ce as SidebarMenuSubItem,
392
+ ue as SidebarProvider,
393
+ fe as SidebarRail,
394
+ ve as SidebarSeparator,
395
+ be as SidebarTrigger,
392
396
  S as useSidebar
393
397
  };
394
398
 
@@ -1 +1 @@
1
- {"version":3,"file":"sidebar.js","names":[],"sources":["../../src/hooks/use-mobile.ts","../../src/components/sidebar/sidebar.tsx"],"sourcesContent":["import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(() => {\n if (typeof window === \"undefined\") return undefined\n return window.innerWidth < MOBILE_BREAKPOINT\n })\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"../button\"\nimport { Input } from \"../input\"\nimport { Separator } from \"../separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"../sheet\"\nimport { Skeleton } from \"../skeleton\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../tooltip\"\nimport { PanelLeftIcon } from \"lucide-react\"\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\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n data-slot=\"sidebar-wrapper\"\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 min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n dir,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n dir={dir}\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n data-side={side}\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-e group-data-[side=right]:border-s\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className={cn(className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <PanelLeftIcon className=\"rtl:rotate-180\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"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 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize rtl:in-data-[side=left]:cursor-e-resize rtl:in-data-[side=right]:cursor-w-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize rtl:[[data-side=left][data-state=collapsed]_&]:cursor-w-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize rtl:[[data-side=right][data-state=collapsed]_&]:cursor-e-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:start-full hover:group-data-[collapsible=offcanvas]:bg-sidebar rtl:group-data-[collapsible=offcanvas]:-translate-x-0\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-end-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-background md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"h-8 w-full bg-background shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\n \"flex flex-col gap-2 p-2 [--radius:var(--radius-xl)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"no-scrollbar flex min-h-0 flex-1 flex-col gap-2 overflow-auto [--radius:var(--radius-xl)] group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex h-8 shrink-0 items-center rounded-md px-3 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-label\",\n sidebar: \"group-label\",\n },\n })\n}\n\nfunction SidebarGroupAction({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"button\"> & React.ComponentProps<\"button\">) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"absolute end-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-action\",\n sidebar: \"group-action\",\n },\n })\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-lg px-3 py-2 text-start text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pe-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-background shadow-[0_0_0_1px_var(--color-sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--color-sidebar-accent)]\",\n },\n size: {\n default: \"h-9 text-sm\",\n sm: \"h-8 text-xs\",\n lg: \"h-14 px-3 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n render,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>) {\n const { isMobile, state } = useSidebar()\n const comp = useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n },\n props\n ),\n render: !tooltip ? render : <TooltipTrigger render={render} />,\n state: {\n slot: \"sidebar-menu-button\",\n sidebar: \"menu-button\",\n size,\n active: isActive,\n },\n })\n\n if (!tooltip) {\n return comp\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n {comp}\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n render,\n showOnHover = false,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n showOnHover?: boolean\n }) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"absolute end-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-2 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-action\",\n sidebar: \"menu-action\",\n },\n })\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute end-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const [width] = React.useState(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n })\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-s border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden rtl:-translate-x-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n render,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: useRender.ComponentProps<\"a\"> &\n React.ComponentProps<\"a\"> & {\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs rtl:translate-x-px data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-sub-button\",\n sidebar: \"menu-sub-button\",\n size,\n active: isActive,\n },\n })\n}\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 SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"sidebar.js","names":[],"sources":["../../src/hooks/use-mobile.ts","../../src/components/sidebar/sidebar.tsx"],"sourcesContent":["import * as React from \"react\"\n\nconst MOBILE_BREAKPOINT = 768\n\nexport function useIsMobile() {\n const [isMobile, setIsMobile] = React.useState<boolean | undefined>(() => {\n if (typeof window === \"undefined\") return undefined\n return window.innerWidth < MOBILE_BREAKPOINT\n })\n\n React.useEffect(() => {\n const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`)\n const onChange = () => {\n setIsMobile(window.innerWidth < MOBILE_BREAKPOINT)\n }\n mql.addEventListener(\"change\", onChange)\n return () => mql.removeEventListener(\"change\", onChange)\n }, [])\n\n return !!isMobile\n}\n","\"use client\"\n\nimport * as React from \"react\"\nimport { mergeProps } from \"@base-ui/react/merge-props\"\nimport { useRender } from \"@base-ui/react/use-render\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\n\nimport { useIsMobile } from \"../../hooks/use-mobile\"\nimport { cn } from \"../../lib/utils\"\nimport { Button } from \"../button\"\nimport { Input } from \"../input\"\nimport { Separator } from \"../separator\"\nimport {\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n} from \"../sheet\"\nimport { Skeleton } from \"../skeleton\"\nimport { Tooltip, TooltipContent, TooltipTrigger } from \"../tooltip\"\nimport { HugeiconsIcon } from \"@hugeicons/react\"\nimport { PanelLeftIcon } from \"@hugeicons/core-free-icons\"\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\ntype SidebarContextProps = {\n state: \"expanded\" | \"collapsed\"\n open: boolean\n setOpen: (open: boolean) => void\n openMobile: boolean\n setOpenMobile: (open: boolean) => void\n isMobile: boolean\n toggleSidebar: () => void\n}\n\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null)\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext)\n if (!context) {\n throw new Error(\"useSidebar must be used within a SidebarProvider.\")\n }\n\n return context\n}\n\nfunction SidebarProvider({\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n}: React.ComponentProps<\"div\"> & {\n defaultOpen?: boolean\n open?: boolean\n onOpenChange?: (open: boolean) => void\n}) {\n const isMobile = useIsMobile()\n const [openMobile, setOpenMobile] = React.useState(false)\n\n // This is the internal state of the sidebar.\n // We use openProp and setOpenProp for control from outside the component.\n const [_open, _setOpen] = React.useState(defaultOpen)\n const open = openProp ?? _open\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === \"function\" ? value(open) : value\n if (setOpenProp) {\n setOpenProp(openState)\n } else {\n _setOpen(openState)\n }\n\n // This sets the cookie to keep the sidebar state.\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`\n },\n [setOpenProp, open]\n )\n\n // Helper to toggle the sidebar.\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open)\n }, [isMobile, setOpen, setOpenMobile])\n\n // Adds a keyboard shortcut to toggle the sidebar.\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (\n event.key === SIDEBAR_KEYBOARD_SHORTCUT &&\n (event.metaKey || event.ctrlKey)\n ) {\n event.preventDefault()\n toggleSidebar()\n }\n }\n\n window.addEventListener(\"keydown\", handleKeyDown)\n return () => window.removeEventListener(\"keydown\", handleKeyDown)\n }, [toggleSidebar])\n\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\n // This makes it easier to style the sidebar with Tailwind classes.\n const state = open ? \"expanded\" : \"collapsed\"\n\n const contextValue = React.useMemo<SidebarContextProps>(\n () => ({\n state,\n open,\n setOpen,\n isMobile,\n openMobile,\n setOpenMobile,\n toggleSidebar,\n }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n )\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <div\n data-slot=\"sidebar-wrapper\"\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 min-h-svh w-full has-data-[variant=inset]:bg-sidebar\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n </SidebarContext.Provider>\n )\n}\n\nfunction Sidebar({\n side = \"left\",\n variant = \"sidebar\",\n collapsible = \"offcanvas\",\n className,\n children,\n dir,\n ...props\n}: React.ComponentProps<\"div\"> & {\n side?: \"left\" | \"right\"\n variant?: \"sidebar\" | \"floating\" | \"inset\"\n collapsible?: \"offcanvas\" | \"icon\" | \"none\"\n}) {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar()\n\n if (collapsible === \"none\") {\n return (\n <div\n data-slot=\"sidebar\"\n className={cn(\n \"flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground\",\n className\n )}\n {...props}\n >\n {children}\n </div>\n )\n }\n\n if (isMobile) {\n return (\n <Sheet open={openMobile} onOpenChange={setOpenMobile} {...props}>\n <SheetContent\n dir={dir}\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar\"\n data-mobile=\"true\"\n className=\"w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden\"\n style={\n {\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\n } as React.CSSProperties\n }\n side={side}\n >\n <SheetHeader className=\"sr-only\">\n <SheetTitle>Sidebar</SheetTitle>\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\n </SheetHeader>\n <div className=\"flex h-full w-full flex-col\">{children}</div>\n </SheetContent>\n </Sheet>\n )\n }\n\n return (\n <div\n className=\"group peer hidden text-sidebar-foreground md:block\"\n data-state={state}\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\n data-variant={variant}\n data-side={side}\n data-slot=\"sidebar\"\n >\n {/* This is what handles the sidebar gap on desktop */}\n <div\n data-slot=\"sidebar-gap\"\n className={cn(\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\n \"group-data-[collapsible=offcanvas]:w-0\",\n \"group-data-[side=right]:rotate-180\",\n variant === \"floating\" || variant === \"inset\"\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\"\n )}\n />\n <div\n data-slot=\"sidebar-container\"\n data-side={side}\n className={cn(\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear data-[side=left]:left-0 data-[side=left]:group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)] data-[side=right]:right-0 data-[side=right]:group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)] md:flex\",\n // Adjust the padding for floating and inset variants.\n variant === \"floating\" || variant === \"inset\"\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-e group-data-[side=right]:border-s\",\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n data-slot=\"sidebar-inner\"\n className=\"flex size-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:shadow-sm group-data-[variant=floating]:ring-1 group-data-[variant=floating]:ring-sidebar-border\"\n >\n {children}\n </div>\n </div>\n </div>\n )\n}\n\nfunction SidebarTrigger({\n className,\n onClick,\n ...props\n}: React.ComponentProps<typeof Button>) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <Button\n data-sidebar=\"trigger\"\n data-slot=\"sidebar-trigger\"\n variant=\"ghost\"\n size=\"icon-sm\"\n className={cn(className)}\n onClick={(event) => {\n onClick?.(event)\n toggleSidebar()\n }}\n {...props}\n >\n <HugeiconsIcon icon={PanelLeftIcon} className=\"rtl:rotate-180\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n )\n}\n\nfunction SidebarRail({ className, ...props }: React.ComponentProps<\"button\">) {\n const { toggleSidebar } = useSidebar()\n\n return (\n <button\n data-sidebar=\"rail\"\n data-slot=\"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 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:start-1/2 after:w-[2px] hover:after:bg-sidebar-border sm:flex ltr:-translate-x-1/2 rtl:-translate-x-1/2\",\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize rtl:in-data-[side=left]:cursor-e-resize rtl:in-data-[side=right]:cursor-w-resize\",\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize rtl:[[data-side=left][data-state=collapsed]_&]:cursor-w-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize rtl:[[data-side=right][data-state=collapsed]_&]:cursor-e-resize\",\n \"group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:start-full hover:group-data-[collapsible=offcanvas]:bg-sidebar rtl:group-data-[collapsible=offcanvas]:-translate-x-0\",\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-end-2\",\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-start-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInset({ className, ...props }: React.ComponentProps<\"main\">) {\n return (\n <main\n data-slot=\"sidebar-inset\"\n className={cn(\n \"relative flex w-full flex-1 flex-col bg-surface-1 md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ms-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ms-2\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarInput({\n className,\n ...props\n}: React.ComponentProps<typeof Input>) {\n return (\n <Input\n data-slot=\"sidebar-input\"\n data-sidebar=\"input\"\n className={cn(\"h-8 w-full bg-surface-1 shadow-none\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarHeader({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-header\"\n data-sidebar=\"header\"\n className={cn(\n \"flex flex-col gap-2 p-2 [--radius:var(--radius-xl)]\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-footer\"\n data-sidebar=\"footer\"\n className={cn(\"flex flex-col gap-2 p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarSeparator({\n className,\n ...props\n}: React.ComponentProps<typeof Separator>) {\n return (\n <Separator\n data-slot=\"sidebar-separator\"\n data-sidebar=\"separator\"\n className={cn(\"mx-2 w-auto bg-sidebar-border\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarContent({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-content\"\n data-sidebar=\"content\"\n className={cn(\n \"no-scrollbar flex min-h-0 flex-1 flex-col gap-2 overflow-auto [--radius:var(--radius-xl)] group-data-[collapsible=icon]:overflow-hidden\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarGroup({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group\"\n data-sidebar=\"group\"\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarGroupLabel({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"div\"> & React.ComponentProps<\"div\">) {\n return useRender({\n defaultTagName: \"div\",\n props: mergeProps<\"div\">(\n {\n className: cn(\n \"flex h-8 shrink-0 items-center rounded-md px-3 text-xs font-medium text-sidebar-foreground/70 ring-sidebar-ring outline-hidden transition-[margin,opacity] duration-200 ease-linear group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0 focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-label\",\n sidebar: \"group-label\",\n },\n })\n}\n\nfunction SidebarGroupAction({\n className,\n render,\n ...props\n}: useRender.ComponentProps<\"button\"> & React.ComponentProps<\"button\">) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"absolute end-3 top-3.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-group-action\",\n sidebar: \"group-action\",\n },\n })\n}\n\nfunction SidebarGroupContent({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-group-content\"\n data-sidebar=\"group-content\"\n className={cn(\"w-full text-sm\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenu({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu\"\n data-sidebar=\"menu\"\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuItem({ className, ...props }: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-item\"\n data-sidebar=\"menu-item\"\n className={cn(\"group/menu-item relative\", className)}\n {...props}\n />\n )\n}\n\nconst sidebarMenuButtonVariants = cva(\n \"peer/menu-button group/menu-button flex w-full items-center gap-2 overflow-hidden rounded-lg px-3 py-2 text-start text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pe-8 group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground [&_svg]:size-4 [&_svg]:shrink-0 [&>span:last-child]:truncate\",\n {\n variants: {\n variant: {\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\n outline:\n \"bg-surface-1 shadow-[0_0_0_1px_var(--color-sidebar-border)] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_var(--color-sidebar-accent)]\",\n },\n size: {\n default: \"h-9 text-sm\",\n sm: \"h-8 text-xs\",\n lg: \"h-14 px-3 text-sm group-data-[collapsible=icon]:p-0!\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\nfunction SidebarMenuButton({\n render,\n isActive = false,\n variant = \"default\",\n size = \"default\",\n tooltip,\n className,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n isActive?: boolean\n tooltip?: string | React.ComponentProps<typeof TooltipContent>\n } & VariantProps<typeof sidebarMenuButtonVariants>) {\n const { isMobile, state } = useSidebar()\n const comp = useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(sidebarMenuButtonVariants({ variant, size }), className),\n },\n props\n ),\n render: !tooltip ? render : <TooltipTrigger render={render} />,\n state: {\n slot: \"sidebar-menu-button\",\n sidebar: \"menu-button\",\n size,\n active: isActive,\n },\n })\n\n if (!tooltip) {\n return comp\n }\n\n if (typeof tooltip === \"string\") {\n tooltip = {\n children: tooltip,\n }\n }\n\n return (\n <Tooltip>\n {comp}\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== \"collapsed\" || isMobile}\n {...tooltip}\n />\n </Tooltip>\n )\n}\n\nfunction SidebarMenuAction({\n className,\n render,\n showOnHover = false,\n ...props\n}: useRender.ComponentProps<\"button\"> &\n React.ComponentProps<\"button\"> & {\n showOnHover?: boolean\n }) {\n return useRender({\n defaultTagName: \"button\",\n props: mergeProps<\"button\">(\n {\n className: cn(\n \"absolute end-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground ring-sidebar-ring outline-hidden transition-transform group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-2 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 after:absolute after:-inset-2 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0\",\n showOnHover &&\n \"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground aria-expanded:opacity-100 md:opacity-0\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-action\",\n sidebar: \"menu-action\",\n },\n })\n}\n\nfunction SidebarMenuBadge({\n className,\n ...props\n}: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"sidebar-menu-badge\"\n data-sidebar=\"menu-badge\"\n className={cn(\n \"pointer-events-none absolute end-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium text-sidebar-foreground tabular-nums select-none group-data-[collapsible=icon]:hidden peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[size=default]/menu-button:top-1.5 peer-data-[size=lg]/menu-button:top-2.5 peer-data-[size=sm]/menu-button:top-1 peer-data-active/menu-button:text-sidebar-accent-foreground\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSkeleton({\n className,\n showIcon = false,\n ...props\n}: React.ComponentProps<\"div\"> & {\n showIcon?: boolean\n}) {\n // Random width between 50 to 90%.\n const [width] = React.useState(() => {\n return `${Math.floor(Math.random() * 40) + 50}%`\n })\n\n return (\n <div\n data-slot=\"sidebar-menu-skeleton\"\n data-sidebar=\"menu-skeleton\"\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\n {...props}\n >\n {showIcon && (\n <Skeleton\n className=\"size-4 rounded-md\"\n data-sidebar=\"menu-skeleton-icon\"\n />\n )}\n <Skeleton\n className=\"h-4 max-w-(--skeleton-width) flex-1\"\n data-sidebar=\"menu-skeleton-text\"\n style={\n {\n \"--skeleton-width\": width,\n } as React.CSSProperties\n }\n />\n </div>\n )\n}\n\nfunction SidebarMenuSub({ className, ...props }: React.ComponentProps<\"ul\">) {\n return (\n <ul\n data-slot=\"sidebar-menu-sub\"\n data-sidebar=\"menu-sub\"\n className={cn(\n \"mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-s border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden rtl:-translate-x-px\",\n className\n )}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubItem({\n className,\n ...props\n}: React.ComponentProps<\"li\">) {\n return (\n <li\n data-slot=\"sidebar-menu-sub-item\"\n data-sidebar=\"menu-sub-item\"\n className={cn(\"group/menu-sub-item relative\", className)}\n {...props}\n />\n )\n}\n\nfunction SidebarMenuSubButton({\n render,\n size = \"md\",\n isActive = false,\n className,\n ...props\n}: useRender.ComponentProps<\"a\"> &\n React.ComponentProps<\"a\"> & {\n size?: \"sm\" | \"md\"\n isActive?: boolean\n }) {\n return useRender({\n defaultTagName: \"a\",\n props: mergeProps<\"a\">(\n {\n className: cn(\n \"flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 text-sidebar-foreground ring-sidebar-ring outline-hidden group-data-[collapsible=icon]:hidden hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 active:bg-sidebar-accent active:text-sidebar-accent-foreground disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[size=md]:text-sm data-[size=sm]:text-xs rtl:translate-x-px data-active:bg-sidebar-accent data-active:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground\",\n className\n ),\n },\n props\n ),\n render,\n state: {\n slot: \"sidebar-menu-sub-button\",\n sidebar: \"menu-sub-button\",\n size,\n active: isActive,\n },\n })\n}\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 SidebarMenuSkeleton,\n SidebarMenuSub,\n SidebarMenuSubButton,\n SidebarMenuSubItem,\n SidebarProvider,\n SidebarRail,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n}\n"],"mappings":"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"}
@@ -4,7 +4,7 @@ import { jsx as n } from "react/jsx-runtime";
4
4
  function a({ className: e, ...t }) {
5
5
  return /* @__PURE__ */ n("div", {
6
6
  "data-slot": "skeleton",
7
- className: o("animate-pulse rounded-xl bg-muted", e),
7
+ className: o("animate-pulse rounded-xl bg-surface-muted", e),
8
8
  ...t
9
9
  });
10
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"skeleton.js","names":[],"sources":["../../src/components/skeleton/skeleton.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"animate-pulse rounded-xl bg-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"],"mappings":";;;AAEA,SAAS,EAAS,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AACtE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EAAG,qCAAqC,CAAS;AAAA,IAC5D,GAAI;AAAA,EACL,CAAA;AAEL"}
1
+ {"version":3,"file":"skeleton.js","names":[],"sources":["../../src/components/skeleton/skeleton.tsx"],"sourcesContent":["import { cn } from \"../../lib/utils\"\n\nfunction Skeleton({ className, ...props }: React.ComponentProps<\"div\">) {\n return (\n <div\n data-slot=\"skeleton\"\n className={cn(\"animate-pulse rounded-xl bg-surface-muted\", className)}\n {...props}\n />\n )\n}\n\nexport { Skeleton }\n"],"mappings":";;;AAEA,SAAS,EAAS,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AACtE,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EAAG,6CAA6C,CAAS;AAAA,IACpE,GAAI;AAAA,EACL,CAAA;AAEL"}
@@ -2,8 +2,8 @@
2
2
  import { t as c } from "../chunks/utils-kyb5nny4y41y7hd8.js";
3
3
  import { jsx as e, jsxs as h } from "react/jsx-runtime";
4
4
  import { Slider as a } from "@base-ui/react/slider";
5
- function b({ className: o, defaultValue: r, value: t, min: l = 0, max: i = 100, ...n }) {
6
- const s = Array.isArray(t) ? t : Array.isArray(r) ? r : [l, i];
5
+ function v({ className: o, defaultValue: r, value: t, min: l = 0, max: i = 100, ...s }) {
6
+ const n = Array.isArray(t) ? t : Array.isArray(r) ? r : [l, i];
7
7
  return /* @__PURE__ */ e(a.Root, {
8
8
  className: c("data-horizontal:w-full data-vertical:h-full", o),
9
9
  "data-slot": "slider",
@@ -12,25 +12,25 @@ function b({ className: o, defaultValue: r, value: t, min: l = 0, max: i = 100,
12
12
  min: l,
13
13
  max: i,
14
14
  thumbAlignment: "edge",
15
- ...n,
15
+ ...s,
16
16
  children: /* @__PURE__ */ h(a.Control, {
17
17
  className: "relative flex w-full touch-none items-center select-none data-disabled:opacity-50 data-vertical:h-full data-vertical:min-h-40 data-vertical:w-auto data-vertical:flex-col",
18
18
  children: [/* @__PURE__ */ e(a.Track, {
19
19
  "data-slot": "slider-track",
20
- className: "relative grow overflow-hidden rounded-4xl bg-muted select-none data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3",
20
+ className: "relative grow overflow-hidden rounded-4xl bg-surface-muted select-none data-horizontal:h-3 data-horizontal:w-full data-vertical:h-full data-vertical:w-3",
21
21
  children: /* @__PURE__ */ e(a.Indicator, {
22
22
  "data-slot": "slider-range",
23
23
  className: "bg-primary select-none data-horizontal:h-full data-vertical:w-full"
24
24
  })
25
- }), Array.from({ length: s.length }, (m, d) => /* @__PURE__ */ e(a.Thumb, {
25
+ }), Array.from({ length: n.length }, (m, d) => /* @__PURE__ */ e(a.Thumb, {
26
26
  "data-slot": "slider-thumb",
27
- className: "block size-4 shrink-0 rounded-4xl border border-primary bg-nova-white shadow-sm ring-ring/50 transition-colors select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
27
+ className: "block size-4 shrink-0 rounded-4xl border border-primary bg-white shadow-sm ring-ring/50 transition-colors select-none hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
28
28
  }, d))]
29
29
  })
30
30
  });
31
31
  }
32
32
  export {
33
- b as Slider
33
+ v as Slider
34
34
  };
35
35
 
36
36
  //# sourceMappingURL=slider.js.map