@enya-learning/nova 0.5.0 → 0.7.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.
- package/README.md +8 -10
- package/dist/chunks/dist-fahbq1psobj0ox6s.js.map +1 -1
- package/dist/chunks/dist-i6l6wqicjhnap81o.js +37 -0
- package/dist/chunks/{dist-o8x0ip0z71xkr2oh.js.map → dist-i6l6wqicjhnap81o.js.map} +1 -1
- package/dist/chunks/utils-chr77evsz8gs6wle.js +10 -0
- package/dist/chunks/{utils-kyb5nny4y41y7hd8.js.map → utils-chr77evsz8gs6wle.js.map} +1 -1
- package/dist/chunks/{vendor-styling-eeiy57tyznmxsfky.js → vendor-styling-bq164a52kub0yzw7.js} +84 -81
- package/dist/chunks/{vendor-styling-eeiy57tyznmxsfky.js.map → vendor-styling-bq164a52kub0yzw7.js.map} +1 -1
- package/dist/chunks/{vendor-utils-egkaeebaqpft6cxj.js → vendor-utils-dzqqqwem43r86lbz.js} +48 -48
- package/dist/chunks/{vendor-utils-egkaeebaqpft6cxj.js.map → vendor-utils-dzqqqwem43r86lbz.js.map} +1 -1
- package/dist/components/accordion.js +24 -21
- package/dist/components/accordion.js.map +1 -1
- package/dist/components/alert-dialog.js +3 -3
- package/dist/components/alert-dialog.js.map +1 -1
- package/dist/components/alert.js +2 -2
- package/dist/components/aspect-ratio.js +1 -1
- package/dist/components/avatar.js +24 -24
- package/dist/components/avatar.js.map +1 -1
- package/dist/components/badge.js +13 -13
- package/dist/components/badge.js.map +1 -1
- package/dist/components/box.js +16 -0
- package/dist/components/box.js.map +1 -0
- package/dist/components/breadcrumb.js +29 -25
- package/dist/components/breadcrumb.js.map +1 -1
- package/dist/components/button-group.js +4 -4
- package/dist/components/button-group.js.map +1 -1
- package/dist/components/button.js +12 -12
- package/dist/components/button.js.map +1 -1
- package/dist/components/calendar.js +540 -535
- package/dist/components/calendar.js.map +1 -1
- package/dist/components/card.js +1 -1
- package/dist/components/carousel.js +93 -85
- package/dist/components/carousel.js.map +1 -1
- package/dist/components/chart.js +1462 -1457
- package/dist/components/chart.js.map +1 -1
- package/dist/components/checkbox.js +7 -6
- package/dist/components/checkbox.js.map +1 -1
- package/dist/components/combobox.js +67 -54
- package/dist/components/combobox.js.map +1 -1
- package/dist/components/command.js +104 -97
- package/dist/components/command.js.map +1 -1
- package/dist/components/context-menu.js +41 -37
- package/dist/components/context-menu.js.map +1 -1
- package/dist/components/dialog.js +26 -25
- package/dist/components/dialog.js.map +1 -1
- package/dist/components/drawer.js +3 -3
- package/dist/components/drawer.js.map +1 -1
- package/dist/components/dropdown-menu.js +40 -36
- package/dist/components/dropdown-menu.js.map +1 -1
- package/dist/components/empty.js +3 -3
- package/dist/components/empty.js.map +1 -1
- package/dist/components/enya-logo.js +88 -78
- package/dist/components/enya-logo.js.map +1 -1
- package/dist/components/field.js +3 -3
- package/dist/components/field.js.map +1 -1
- package/dist/components/heading.js +39 -0
- package/dist/components/heading.js.map +1 -0
- package/dist/components/hover-card.js +1 -1
- package/dist/components/hover-card.js.map +1 -1
- package/dist/components/input-group.js +15 -15
- package/dist/components/input-group.js.map +1 -1
- package/dist/components/input-otp.js +81 -79
- package/dist/components/input-otp.js.map +1 -1
- package/dist/components/input.js +2 -2
- package/dist/components/input.js.map +1 -1
- package/dist/components/item.js +36 -36
- package/dist/components/item.js.map +1 -1
- package/dist/components/kbd.js +7 -7
- package/dist/components/kbd.js.map +1 -1
- package/dist/components/label.js +1 -1
- package/dist/components/menubar.js +53 -52
- package/dist/components/menubar.js.map +1 -1
- package/dist/components/native-select.js +21 -19
- package/dist/components/native-select.js.map +1 -1
- package/dist/components/navigation-menu.js +23 -21
- package/dist/components/navigation-menu.js.map +1 -1
- package/dist/components/pagination.js +33 -30
- package/dist/components/pagination.js.map +1 -1
- package/dist/components/popover.js +1 -1
- package/dist/components/popover.js.map +1 -1
- package/dist/components/progress.js +5 -5
- package/dist/components/progress.js.map +1 -1
- package/dist/components/radio-group.js +14 -14
- package/dist/components/radio-group.js.map +1 -1
- package/dist/components/resizable.js +120 -117
- package/dist/components/resizable.js.map +1 -1
- package/dist/components/scroll-area.js +1 -1
- package/dist/components/scroll-area.js.map +1 -1
- package/dist/components/select.js +65 -58
- package/dist/components/select.js.map +1 -1
- package/dist/components/separator.js +1 -1
- package/dist/components/sheet.js +23 -22
- package/dist/components/sheet.js.map +1 -1
- package/dist/components/sidebar.js +84 -80
- package/dist/components/sidebar.js.map +1 -1
- package/dist/components/skeleton.js +2 -2
- package/dist/components/skeleton.js.map +1 -1
- package/dist/components/slider.js +8 -8
- package/dist/components/slider.js.map +1 -1
- package/dist/components/sonner.js +229 -215
- package/dist/components/sonner.js.map +1 -1
- package/dist/components/spinner.js +10 -8
- package/dist/components/spinner.js.map +1 -1
- package/dist/components/switch.js +6 -6
- package/dist/components/switch.js.map +1 -1
- package/dist/components/table.js +15 -15
- package/dist/components/table.js.map +1 -1
- package/dist/components/tabs.js +16 -16
- package/dist/components/tabs.js.map +1 -1
- package/dist/components/text.js +47 -0
- package/dist/components/text.js.map +1 -0
- package/dist/components/textarea.js +5 -5
- package/dist/components/textarea.js.map +1 -1
- package/dist/components/toggle-group.js +2 -2
- package/dist/components/toggle-group.js.map +1 -1
- package/dist/components/toggle.js +8 -8
- package/dist/components/toggle.js.map +1 -1
- package/dist/components/tooltip.js +6 -6
- package/dist/components/tooltip.js.map +1 -1
- package/dist/index.js +31 -16
- package/dist/src/components/box/box.d.ts +7 -0
- package/dist/src/components/box/index.d.ts +1 -0
- package/dist/src/components/heading/heading.d.ts +15 -0
- package/dist/src/components/heading/index.d.ts +1 -0
- package/dist/src/components/spinner/spinner.d.ts +2 -1
- package/dist/src/components/text/index.d.ts +1 -0
- package/dist/src/components/text/text.d.ts +13 -0
- package/dist/src/index.d.ts +4 -0
- package/dist/styles/nova-binding.css +264 -266
- package/dist/styles/nova.css +158 -49
- package/dist/styles/typography.css +3 -123
- package/dist/utils.js +1 -1
- package/package.json +29 -12
- package/src/eslint/no-primitive-colors.js +2 -2
- package/src/eslint/no-primitive-colors.test.ts +1 -1
- package/dist/chunks/dist-o8x0ip0z71xkr2oh.js +0 -37
- package/dist/chunks/utils-kyb5nny4y41y7hd8.js +0 -10
- package/dist/styles/theme-nova.css +0 -197
|
@@ -1,19 +1,20 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as E } from "../chunks/dist-
|
|
3
|
-
import { t as i } from "../chunks/utils-
|
|
2
|
+
import { t as E } from "../chunks/dist-i6l6wqicjhnap81o.js";
|
|
3
|
+
import { t as i } from "../chunks/utils-chr77evsz8gs6wle.js";
|
|
4
4
|
import { Button as T } from "./button.js";
|
|
5
5
|
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
|
|
10
|
-
import { jsx as t, jsxs as
|
|
9
|
+
import { Tooltip as H, TooltipContent as K, TooltipTrigger as $ } 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 {
|
|
13
|
+
import { HugeiconsIcon as j } from "@hugeicons/react";
|
|
14
|
+
import { PanelLeftIcon as G } from "@hugeicons/core-free-icons";
|
|
14
15
|
import * as d from "react";
|
|
15
16
|
var y = 768;
|
|
16
|
-
function
|
|
17
|
+
function W() {
|
|
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
|
|
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
|
|
35
|
-
const u =
|
|
35
|
+
function ue({ defaultOpen: e = !0, open: a, onOpenChange: r, className: n, style: s, children: g, ...b }) {
|
|
36
|
+
const u = W(), [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) :
|
|
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 ===
|
|
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",
|
|
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:
|
|
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
|
-
|
|
63
|
+
f,
|
|
63
64
|
l,
|
|
64
65
|
w
|
|
65
66
|
]);
|
|
66
67
|
return /* @__PURE__ */ t(M.Provider, {
|
|
67
|
-
value:
|
|
68
|
+
value: k,
|
|
68
69
|
children: /* @__PURE__ */ t("div", {
|
|
69
70
|
"data-slot": "sidebar-wrapper",
|
|
70
71
|
style: {
|
|
71
|
-
"--sidebar-width":
|
|
72
|
-
"--sidebar-width-icon":
|
|
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
|
|
82
|
-
const { isMobile: u, state:
|
|
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__ */
|
|
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":
|
|
99
|
+
style: { "--sidebar-width": F },
|
|
99
100
|
side: e,
|
|
100
|
-
children: [/* @__PURE__ */
|
|
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__ */
|
|
109
|
+
}) : /* @__PURE__ */ p("div", {
|
|
109
110
|
className: "group peer hidden text-sidebar-foreground md:block",
|
|
110
|
-
"data-state":
|
|
111
|
-
"data-collapsible":
|
|
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
|
|
133
|
+
function be({ className: e, onClick: a, ...r }) {
|
|
133
134
|
const { toggleSidebar: n } = S();
|
|
134
|
-
return /* @__PURE__ */
|
|
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, {
|
|
145
|
+
children: [/* @__PURE__ */ t(j, {
|
|
146
|
+
icon: G,
|
|
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
|
|
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
|
|
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-
|
|
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
|
|
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-
|
|
178
|
+
className: i("h-8 w-full bg-surface-1 shadow-none", e),
|
|
175
179
|
...a
|
|
176
180
|
});
|
|
177
181
|
}
|
|
178
|
-
function
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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-
|
|
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,10 +282,10 @@ 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
|
|
282
|
-
const { isMobile: u, state:
|
|
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(
|
|
288
|
+
props: h({ className: i(Y({
|
|
285
289
|
variant: r,
|
|
286
290
|
size: n
|
|
287
291
|
}), g) }, b),
|
|
@@ -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__ */
|
|
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:
|
|
303
|
+
hidden: f !== "collapsed" || u,
|
|
300
304
|
...s
|
|
301
305
|
})] })) : l;
|
|
302
306
|
}
|
|
303
|
-
function
|
|
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
|
|
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
|
|
326
|
+
function Ee({ className: e, showIcon: a = !1, ...r }) {
|
|
323
327
|
const [n] = d.useState(() => `${Math.floor(Math.random() * 40) + 50}%`);
|
|
324
|
-
return /* @__PURE__ */
|
|
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
|
|
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
|
|
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
|
|
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
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
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":";;;;;;;;;;;;;;;AAEA,IAAM,IAAoB;AAE1B,SAAgB,IAAc;AAC5B,QAAM,CAAC,GAAU,CAAA,IAAe,EAAM,SAAA,MAAoC;AACxE,QAAI,SAAO,SAAW;AACtB,aAAO,OAAO,aAAa;AAAA,EAC7B,CAAC;AAED,SAAA,EAAM,UAAA,MAAgB;AACpB,UAAM,IAAM,OAAO,WAAW,eAAe,IAAoB,CAAA,KAAM,GACjE,IAAA,MAAiB;AACrB,MAAA,EAAY,OAAO,aAAa,CAAiB;AAAA,IACnD;AACA,WAAA,EAAI,iBAAiB,UAAU,CAAQ,GACvC,MAAa,EAAI,oBAAoB,UAAU,CAAQ;AAAA,EACzD,GAAG,CAAC,CAAC,GAEE,CAAC,CAAC;AACX;ACIA,IAAM,IAAsB,iBACtB,IAAyB,OAAU,KAAK,GACxC,IAAgB,SAChB,IAAuB,SACvB,IAAqB,QACrB,IAA4B,KAY5B,IAAiB,EAAM,cAA0C,IAAI;AAE3E,SAAS,IAAa;AACpB,QAAM,IAAU,EAAM,WAAW,CAAc;AAC/C,MAAI,CAAC,EACH,OAAM,IAAI,MAAM,mDAAmD;AAGrE,SAAO;AACT;AAEA,SAAS,GAAgB,EACvB,aAAA,IAAc,IACd,MAAM,GACN,cAAc,GACd,WAAA,GACA,OAAA,GACA,UAAA,GACA,GAAG,EAAA,GAKF;AACD,QAAM,IAAW,EAAY,GACvB,CAAC,GAAY,CAAA,IAAiB,EAAM,SAAS,EAAK,GAIlD,CAAC,GAAO,CAAA,IAAY,EAAM,SAAS,CAAW,GAC9C,IAAO,KAAY,GACnB,IAAU,EAAM,YAAA,CACnB,MAAmD;AAClD,UAAM,IAAY,OAAO,KAAU,aAAa,EAAM,CAAI,IAAI;AAC9D,IAAI,IACF,EAAY,CAAS,IAErB,EAAS,CAAS,GAIpB,SAAS,SAAS,GAAG,CAAA,IAAuB,CAAA,qBAA8B,CAAA;AAAA,EAC5E,GACA,CAAC,GAAa,CAAI,CACpB,GAGM,IAAgB,EAAM,YAAA,MACnB,IAAW,EAAA,CAAe,MAAS,CAAC,CAAI,IAAI,EAAA,CAAS,MAAS,CAAC,CAAI,GACzE;AAAA,IAAC;AAAA,IAAU;AAAA,IAAS;AAAA,EAAa,CAAC;AAGrC,EAAA,EAAM,UAAA,MAAgB;AACpB,UAAM,IAAA,CAAiB,MAAyB;AAC9C,MACE,EAAM,QAAQ,MACb,EAAM,WAAW,EAAM,aAExB,EAAM,eAAe,GACrB,EAAc;AAAA,IAElB;AAEA,kBAAO,iBAAiB,WAAW,CAAa,GAChD,MAAa,OAAO,oBAAoB,WAAW,CAAa;AAAA,EAClE,GAAG,CAAC,CAAa,CAAC;AAIlB,QAAM,IAAQ,IAAO,aAAa,aAE5B,IAAe,EAAM,QAAA,OAClB;AAAA,IACL,OAAA;AAAA,IACA,MAAA;AAAA,IACA,SAAA;AAAA,IACA,UAAA;AAAA,IACA,YAAA;AAAA,IACA,eAAA;AAAA,IACA,eAAA;AAAA,EACF,IACA;AAAA,IAAC;AAAA,IAAO;AAAA,IAAM;AAAA,IAAS;AAAA,IAAU;AAAA,IAAY;AAAA,IAAe;AAAA,EAAa,CAC3E;AAEA,SACE,gBAAA,EAAC,EAAe,UAAhB;AAAA,IAAyB,OAAO;AAAA,IAC9B,UAAA,gBAAA,EAAC,OAAD;AAAA,MACE,aAAU;AAAA,MACV,OACE;AAAA,QACE,mBAAmB;AAAA,QACnB,wBAAwB;AAAA,QACxB,GAAG;AAAA,MACL;AAAA,MAEF,WAAW,EACT,mFACA,CACF;AAAA,MACA,GAAI;AAAA,MAEH,UAAA;AAAA,IACE,CAAA;AAAA,EACkB,CAAA;AAE7B;AAEA,SAAS,GAAQ,EACf,MAAA,IAAO,QACP,SAAA,IAAU,WACV,aAAA,IAAc,aACd,WAAA,GACA,UAAA,GACA,KAAA,GACA,GAAG,EAAA,GAKF;AACD,QAAM,EAAE,UAAA,GAAU,OAAA,GAAO,YAAA,GAAY,eAAA,EAAA,IAAkB,EAAW;AAElE,SAAI,MAAgB,SAEhB,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,+EACA,CACF;AAAA,IACA,GAAI;AAAA,IAEH,UAAA;AAAA,EACE,CAAA,IAIL,IAEA,gBAAA,EAAC,GAAD;AAAA,IAAO,MAAM;AAAA,IAAY,cAAc;AAAA,IAAe,GAAI;AAAA,IACxD,UAAA,gBAAA,EAAC,GAAD;AAAA,MACO,KAAA;AAAA,MACL,gBAAa;AAAA,MACb,aAAU;AAAA,MACV,eAAY;AAAA,MACZ,WAAU;AAAA,MACV,OACE,EACE,mBAAmB,EACrB;AAAA,MAEI,MAAA;AAAA,MAXR,UAAA,CAaE,gBAAA,EAAC,GAAD;AAAA,QAAa,WAAU;AAAA,QAAvB,UAAA,CACE,gBAAA,EAAC,GAAD,EAAA,UAAY,UAAmB,CAAA,GAC/B,gBAAA,EAAC,GAAD,EAAA,UAAkB,+BAA8C,CAAA,CACrD;AAAA,MACb,CAAA,GAAA,gBAAA,EAAC,OAAD;AAAA,QAAK,WAAU;AAAA,QAA+B,UAAA;AAAA,MAAc,CAAA,CAChD;AAAA;EACT,CAAA,IAKT,gBAAA,EAAC,OAAD;AAAA,IACE,WAAU;AAAA,IACV,cAAY;AAAA,IACZ,oBAAkB,MAAU,cAAc,IAAc;AAAA,IACxD,gBAAc;AAAA,IACd,aAAW;AAAA,IACX,aAAU;AAAA,IANZ,UAAA,CASE,gBAAA,EAAC,OAAD;AAAA,MACE,aAAU;AAAA,MACV,WAAW,EACT,2FACA,0CACA,sCACA,MAAY,cAAc,MAAY,UAClC,qFACA,wDACN;AAAA,IACD,CAAA,GACD,gBAAA,EAAC,OAAD;AAAA,MACE,aAAU;AAAA,MACV,aAAW;AAAA,MACX,WAAW,EACT,8VAEA,MAAY,cAAc,MAAY,UAClC,6FACA,2HACJ,CACF;AAAA,MACA,GAAI;AAAA,MAEJ,UAAA,gBAAA,EAAC,OAAD;AAAA,QACE,gBAAa;AAAA,QACb,aAAU;AAAA,QACV,WAAU;AAAA,QAET,UAAA;AAAA,MACE,CAAA;AAAA,IACF,CAAA,CACF;AAAA;AAET;AAEA,SAAS,GAAe,EACtB,WAAA,GACA,SAAA,GACA,GAAG,EAAA,GACmC;AACtC,QAAM,EAAE,eAAA,EAAA,IAAkB,EAAW;AAErC,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,gBAAa;AAAA,IACb,aAAU;AAAA,IACV,SAAQ;AAAA,IACR,MAAK;AAAA,IACL,WAAW,EAAG,CAAS;AAAA,IACvB,SAAA,CAAU,MAAU;AAClB,MAAA,IAAU,CAAK,GACf,EAAc;AAAA,IAChB;AAAA,IACA,GAAI;AAAA,IAVN,UAAA,CAYE,gBAAA,EAAC,GAAD;AAAA,MAAe,MAAM;AAAA,MAAe,WAAU;AAAA,IAAkB,CAAA,GAChE,gBAAA,EAAC,QAAD;AAAA,MAAM,WAAU;AAAA,MAAU,UAAA;AAAA,IAAoB,CAAA,CACxC;AAAA;AAEZ;AAEA,SAAS,GAAY,EAAE,WAAA,GAAW,GAAG,EAAA,GAAyC;AAC5E,QAAM,EAAE,eAAA,EAAA,IAAkB,EAAW;AAErC,SACE,gBAAA,EAAC,UAAD;AAAA,IACE,gBAAa;AAAA,IACb,aAAU;AAAA,IACV,cAAW;AAAA,IACX,UAAU;AAAA,IACV,SAAS;AAAA,IACT,OAAM;AAAA,IACN,WAAW,EACT,6QACA,6JACA,yPACA,kNACA,2DACA,8DACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAa,EAAE,WAAA,GAAW,GAAG,EAAA,GAAuC;AAC3E,SACE,gBAAA,EAAC,QAAD;AAAA,IACE,aAAU;AAAA,IACV,WAAW,EACT,qQACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAa,EACpB,WAAA,GACA,GAAG,EAAA,GACkC;AACrC,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EAAG,uCAAuC,CAAS;AAAA,IAC9D,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAc,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AAC3E,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EACT,uDACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAc,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AAC3E,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EAAG,2BAA2B,CAAS;AAAA,IAClD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAiB,EACxB,WAAA,GACA,GAAG,EAAA,GACsC;AACzC,SACE,gBAAA,EAAC,GAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EAAG,iCAAiC,CAAS;AAAA,IACxD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAe,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AAC5E,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EACT,2IACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAa,EAAE,WAAA,GAAW,GAAG,EAAA,GAAsC;AAC1E,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EAAG,6CAA6C,CAAS;AAAA,IACpE,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAkB,EACzB,WAAA,GACA,QAAA,GACA,GAAG,EAAA,GAC6D;AAChE,SAAO,EAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO,EACL,EACE,WAAW,EACT,wTACA,CACF,EACF,GACA,CACF;AAAA,IACA,QAAA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF,CAAC;AACH;AAEA,SAAS,GAAmB,EAC1B,WAAA,GACA,QAAA,GACA,GAAG,EAAA,GACmE;AACtE,SAAO,EAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO,EACL,EACE,WAAW,EACT,+WACA,CACF,EACF,GACA,CACF;AAAA,IACA,QAAA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF,CAAC;AACH;AAEA,SAAS,GAAoB,EAC3B,WAAA,GACA,GAAG,EAAA,GAC2B;AAC9B,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EAAG,kBAAkB,CAAS;AAAA,IACzC,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAY,EAAE,WAAA,GAAW,GAAG,EAAA,GAAqC;AACxE,SACE,gBAAA,EAAC,MAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EAAG,sCAAsC,CAAS;AAAA,IAC7D,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAgB,EAAE,WAAA,GAAW,GAAG,EAAA,GAAqC;AAC5E,SACE,gBAAA,EAAC,MAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EAAG,4BAA4B,CAAS;AAAA,IACnD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,IAAM,IAA4B,EAChC,yyBACA;AAAA,EACE,UAAU;AAAA,IACR,SAAS;AAAA,MACP,SAAS;AAAA,MACT,SACE;AAAA,IACJ;AAAA,IACA,MAAM;AAAA,MACJ,SAAS;AAAA,MACT,IAAI;AAAA,MACJ,IAAI;AAAA,IACN;AAAA,EACF;AAAA,EACA,iBAAiB;AAAA,IACf,SAAS;AAAA,IACT,MAAM;AAAA,EACR;AACF,CACF;AAEA,SAAS,GAAkB,EACzB,QAAA,GACA,UAAA,IAAW,IACX,SAAA,IAAU,WACV,MAAA,IAAO,WACP,SAAA,GACA,WAAA,GACA,GAAG,EAAA,GAKiD;AACpD,QAAM,EAAE,UAAA,GAAU,OAAA,EAAA,IAAU,EAAW,GACjC,IAAO,EAAU;AAAA,IACrB,gBAAgB;AAAA,IAChB,OAAO,EACL,EACE,WAAW,EAAG,EAA0B;AAAA,MAAE,SAAA;AAAA,MAAS,MAAA;AAAA,IAAK,CAAC,GAAG,CAAS,EACvE,GACA,CACF;AAAA,IACA,QAAS,IAAmB,gBAAA,EAAC,GAAD,EAAwB,QAAA,EAAS,CAAA,IAA1C;AAAA,IACnB,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAA;AAAA,MACA,QAAQ;AAAA,IACV;AAAA,EACF,CAAC;AAED,SAAK,KAID,OAAO,KAAY,aACrB,IAAU,EACR,UAAU,EACZ,IAIA,gBAAA,EAAC,GAAD,EAAA,UAAA,CACG,GACD,gBAAA,EAAC,GAAD;AAAA,IACE,MAAK;AAAA,IACL,OAAM;AAAA,IACN,QAAQ,MAAU,eAAe;AAAA,IACjC,GAAI;AAAA,EACL,CAAA,CACM,EAAA,CAAA,KAlBF;AAoBX;AAEA,SAAS,GAAkB,EACzB,WAAA,GACA,QAAA,GACA,aAAA,IAAc,IACd,GAAG,EAAA,GAIA;AACH,SAAO,EAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO,EACL,EACE,WAAW,EACT,8hBACA,KACE,iLACF,CACF,EACF,GACA,CACF;AAAA,IACA,QAAA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,IACX;AAAA,EACF,CAAC;AACH;AAEA,SAAS,GAAiB,EACxB,WAAA,GACA,GAAG,EAAA,GAC2B;AAC9B,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EACT,0bACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAoB,EAC3B,WAAA,GACA,UAAA,IAAW,IACX,GAAG,EAAA,GAGF;AAED,QAAM,CAAC,CAAA,IAAS,EAAM,SAAA,MACb,GAAG,KAAK,MAAM,KAAK,OAAO,IAAI,EAAE,IAAI,EAAA,GAC5C;AAED,SACE,gBAAA,EAAC,OAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EAAG,+CAA+C,CAAS;AAAA,IACtE,GAAI;AAAA,IAJN,UAAA,CAMG,KACC,gBAAA,EAAC,GAAD;AAAA,MACE,WAAU;AAAA,MACV,gBAAa;AAAA,IACd,CAAA,GAEH,gBAAA,EAAC,GAAD;AAAA,MACE,WAAU;AAAA,MACV,gBAAa;AAAA,MACb,OACE,EACE,oBAAoB,EACtB;AAAA,IAEH,CAAA,CACE;AAAA;AAET;AAEA,SAAS,GAAe,EAAE,WAAA,GAAW,GAAG,EAAA,GAAqC;AAC3E,SACE,gBAAA,EAAC,MAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EACT,2JACA,CACF;AAAA,IACA,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAmB,EAC1B,WAAA,GACA,GAAG,EAAA,GAC0B;AAC7B,SACE,gBAAA,EAAC,MAAD;AAAA,IACE,aAAU;AAAA,IACV,gBAAa;AAAA,IACb,WAAW,EAAG,gCAAgC,CAAS;AAAA,IACvD,GAAI;AAAA,EACL,CAAA;AAEL;AAEA,SAAS,GAAqB,EAC5B,QAAA,GACA,MAAA,IAAO,MACP,UAAA,IAAW,IACX,WAAA,GACA,GAAG,EAAA,GAKA;AACH,SAAO,EAAU;AAAA,IACf,gBAAgB;AAAA,IAChB,OAAO,EACL,EACE,WAAW,EACT,gqBACA,CACF,EACF,GACA,CACF;AAAA,IACA,QAAA;AAAA,IACA,OAAO;AAAA,MACL,MAAM;AAAA,MACN,SAAS;AAAA,MACT,MAAA;AAAA,MACA,QAAQ;AAAA,IACV;AAAA,EACF,CAAC;AACH"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { t as o } from "../chunks/utils-
|
|
2
|
+
import { t as o } from "../chunks/utils-chr77evsz8gs6wle.js";
|
|
3
3
|
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,
|
|
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"}
|