@arolariu/components 0.2.0 → 0.3.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/changelog.md +11 -0
- package/dist/components/ui/accordion.d.ts +4 -4
- package/dist/components/ui/accordion.d.ts.map +1 -1
- package/dist/components/ui/accordion.js +19 -27
- package/dist/components/ui/accordion.js.map +1 -1
- package/dist/components/ui/alert-dialog.d.ts +17 -11
- package/dist/components/ui/alert-dialog.d.ts.map +1 -1
- package/dist/components/ui/alert-dialog.js +38 -61
- package/dist/components/ui/alert-dialog.js.map +1 -1
- package/dist/components/ui/alert.d.ts +4 -5
- package/dist/components/ui/alert.d.ts.map +1 -1
- package/dist/components/ui/alert.js +17 -20
- package/dist/components/ui/alert.js.map +1 -1
- package/dist/components/ui/aspect-ratio.d.ts +1 -2
- package/dist/components/ui/aspect-ratio.d.ts.map +1 -1
- package/dist/components/ui/aspect-ratio.js +1 -8
- package/dist/components/ui/aspect-ratio.js.map +1 -1
- package/dist/components/ui/avatar.d.ts +3 -3
- package/dist/components/ui/avatar.d.ts.map +1 -1
- package/dist/components/ui/avatar.js +16 -19
- package/dist/components/ui/avatar.js.map +1 -1
- package/dist/components/ui/badge.d.ts +3 -3
- package/dist/components/ui/badge.d.ts.map +1 -1
- package/dist/components/ui/badge.js +7 -10
- package/dist/components/ui/badge.js.map +1 -1
- package/dist/components/ui/breadcrumb.d.ts +16 -8
- package/dist/components/ui/breadcrumb.d.ts.map +1 -1
- package/dist/components/ui/breadcrumb.js +28 -35
- package/dist/components/ui/breadcrumb.js.map +1 -1
- package/dist/components/ui/button-group.d.ts +13 -0
- package/dist/components/ui/button-group.d.ts.map +1 -0
- package/dist/components/ui/button-group.js +47 -0
- package/dist/components/ui/button-group.js.map +1 -0
- package/dist/components/ui/button.d.ts +3 -2
- package/dist/components/ui/button.d.ts.map +1 -1
- package/dist/components/ui/button.js +15 -14
- package/dist/components/ui/button.js.map +1 -1
- package/dist/components/ui/calendar.d.ts.map +1 -1
- package/dist/components/ui/calendar.js +20 -20
- package/dist/components/ui/calendar.js.map +1 -1
- package/dist/components/ui/card.d.ts +7 -8
- package/dist/components/ui/card.d.ts.map +1 -1
- package/dist/components/ui/card.js +31 -44
- package/dist/components/ui/card.js.map +1 -1
- package/dist/components/ui/carousel.d.ts +5 -6
- package/dist/components/ui/carousel.d.ts.map +1 -1
- package/dist/components/ui/carousel.js +30 -21
- package/dist/components/ui/carousel.js.map +1 -1
- package/dist/components/ui/chart.d.ts +35 -27
- package/dist/components/ui/chart.d.ts.map +1 -1
- package/dist/components/ui/chart.js +28 -26
- package/dist/components/ui/chart.js.map +1 -1
- package/dist/components/ui/checkbox.d.ts +1 -1
- package/dist/components/ui/checkbox.d.ts.map +1 -1
- package/dist/components/ui/checkbox.js +10 -12
- package/dist/components/ui/checkbox.js.map +1 -1
- package/dist/components/ui/collapsible.d.ts +3 -4
- package/dist/components/ui/collapsible.d.ts.map +1 -1
- package/dist/components/ui/collapsible.js +3 -20
- package/dist/components/ui/collapsible.js.map +1 -1
- package/dist/components/ui/command.d.ts +78 -16
- package/dist/components/ui/command.d.ts.map +1 -1
- package/dist/components/ui/command.js +47 -72
- package/dist/components/ui/command.js.map +1 -1
- package/dist/components/ui/context-menu.d.ts +21 -19
- package/dist/components/ui/context-menu.d.ts.map +1 -1
- package/dist/components/ui/context-menu.js +57 -101
- package/dist/components/ui/context-menu.js.map +1 -1
- package/dist/components/ui/dialog.d.ts +16 -12
- package/dist/components/ui/dialog.d.ts.map +1 -1
- package/dist/components/ui/dialog.js +36 -64
- package/dist/components/ui/dialog.js.map +1 -1
- package/dist/components/ui/drawer.d.ts +19 -10
- package/dist/components/ui/drawer.d.ts.map +1 -1
- package/dist/components/ui/drawer.js +32 -57
- package/dist/components/ui/drawer.js.map +1 -1
- package/dist/components/ui/dropdown-menu.d.ts +21 -19
- package/dist/components/ui/dropdown-menu.d.ts.map +1 -1
- package/dist/components/ui/dropdown-menu.js +64 -108
- package/dist/components/ui/dropdown-menu.js.map +1 -1
- package/dist/components/ui/dropdrawer.d.ts +1 -1
- package/dist/components/ui/dropdrawer.d.ts.map +1 -1
- package/dist/components/ui/dropdrawer.js +2 -5
- package/dist/components/ui/dropdrawer.js.map +1 -1
- package/dist/components/ui/empty.d.ts +13 -0
- package/dist/components/ui/empty.d.ts.map +1 -0
- package/dist/components/ui/empty.js +65 -0
- package/dist/components/ui/empty.js.map +1 -0
- package/dist/components/ui/field.d.ts +25 -0
- package/dist/components/ui/field.d.ts.map +1 -0
- package/dist/components/ui/field.js +135 -0
- package/dist/components/ui/field.js.map +1 -0
- package/dist/components/ui/form.d.ts +5 -6
- package/dist/components/ui/form.d.ts.map +1 -1
- package/dist/components/ui/form.js +28 -27
- package/dist/components/ui/form.js.map +1 -1
- package/dist/components/ui/hover-card.d.ts +3 -3
- package/dist/components/ui/hover-card.d.ts.map +1 -1
- package/dist/components/ui/hover-card.js +11 -25
- package/dist/components/ui/hover-card.js.map +1 -1
- package/dist/components/ui/input-group.d.ts +17 -0
- package/dist/components/ui/input-group.d.ts.map +1 -0
- package/dist/components/ui/input-group.js +91 -0
- package/dist/components/ui/input-group.js.map +1 -0
- package/dist/components/ui/input-otp.d.ts +30 -7
- package/dist/components/ui/input-otp.d.ts.map +1 -1
- package/dist/components/ui/input-otp.js +23 -26
- package/dist/components/ui/input-otp.js.map +1 -1
- package/dist/components/ui/input.d.ts +1 -1
- package/dist/components/ui/input.d.ts.map +1 -1
- package/dist/components/ui/input.js +6 -7
- package/dist/components/ui/input.js.map +1 -1
- package/dist/components/ui/item.d.ts +24 -0
- package/dist/components/ui/item.d.ts.map +1 -0
- package/dist/components/ui/item.js +122 -0
- package/dist/components/ui/item.js.map +1 -0
- package/dist/components/ui/kbd.d.ts +5 -0
- package/dist/components/ui/kbd.d.ts.map +1 -0
- package/dist/components/ui/kbd.js +21 -0
- package/dist/components/ui/kbd.js.map +1 -0
- package/dist/components/ui/label.d.ts +2 -1
- package/dist/components/ui/label.d.ts.map +1 -1
- package/dist/components/ui/label.js +8 -7
- package/dist/components/ui/label.js.map +1 -1
- package/dist/components/ui/menubar.d.ts +18 -16
- package/dist/components/ui/menubar.d.ts.map +1 -1
- package/dist/components/ui/menubar.js +73 -93
- package/dist/components/ui/menubar.js.map +1 -1
- package/dist/components/ui/navigation-menu.d.ts +8 -10
- package/dist/components/ui/navigation-menu.d.ts.map +1 -1
- package/dist/components/ui/navigation-menu.js +37 -55
- package/dist/components/ui/navigation-menu.js.map +1 -1
- package/dist/components/ui/pagination.d.ts +24 -9
- package/dist/components/ui/pagination.d.ts.map +1 -1
- package/dist/components/ui/pagination.js +33 -45
- package/dist/components/ui/pagination.js.map +1 -1
- package/dist/components/ui/popover.d.ts +4 -4
- package/dist/components/ui/popover.d.ts.map +1 -1
- package/dist/components/ui/popover.js +9 -25
- package/dist/components/ui/popover.js.map +1 -1
- package/dist/components/ui/progress.d.ts +1 -1
- package/dist/components/ui/progress.d.ts.map +1 -1
- package/dist/components/ui/progress.js +5 -7
- package/dist/components/ui/progress.js.map +1 -1
- package/dist/components/ui/radio-group.d.ts +2 -2
- package/dist/components/ui/radio-group.d.ts.map +1 -1
- package/dist/components/ui/radio-group.js +16 -19
- package/dist/components/ui/radio-group.js.map +1 -1
- package/dist/components/ui/resizable.d.ts +20 -5
- package/dist/components/ui/resizable.d.ts.map +1 -1
- package/dist/components/ui/resizable.js +9 -21
- package/dist/components/ui/resizable.js.map +1 -1
- package/dist/components/ui/scroll-area.d.ts +2 -2
- package/dist/components/ui/scroll-area.d.ts.map +1 -1
- package/dist/components/ui/scroll-area.js +12 -16
- package/dist/components/ui/scroll-area.js.map +1 -1
- package/dist/components/ui/select.d.ts +10 -12
- package/dist/components/ui/select.d.ts.map +1 -1
- package/dist/components/ui/select.js +54 -77
- package/dist/components/ui/select.js.map +1 -1
- package/dist/components/ui/separator.d.ts +1 -1
- package/dist/components/ui/separator.d.ts.map +1 -1
- package/dist/components/ui/separator.js +6 -7
- package/dist/components/ui/separator.js.map +1 -1
- package/dist/components/ui/sheet.d.ts +23 -11
- package/dist/components/ui/sheet.d.ts.map +1 -1
- package/dist/components/ui/sheet.js +54 -66
- package/dist/components/ui/sheet.js.map +1 -1
- package/dist/components/ui/sidebar.d.ts +34 -38
- package/dist/components/ui/sidebar.d.ts.map +1 -1
- package/dist/components/ui/sidebar.js +113 -122
- package/dist/components/ui/sidebar.js.map +1 -1
- package/dist/components/ui/skeleton.d.ts +1 -1
- package/dist/components/ui/skeleton.d.ts.map +1 -1
- package/dist/components/ui/skeleton.js +1 -2
- package/dist/components/ui/skeleton.js.map +1 -1
- package/dist/components/ui/slider.d.ts +1 -1
- package/dist/components/ui/slider.d.ts.map +1 -1
- package/dist/components/ui/slider.js +11 -30
- package/dist/components/ui/slider.js.map +1 -1
- package/dist/components/ui/sonner.d.ts +4 -2
- package/dist/components/ui/sonner.d.ts.map +1 -1
- package/dist/components/ui/sonner.js +7 -4
- package/dist/components/ui/sonner.js.map +1 -1
- package/dist/components/ui/spinner.d.ts +4 -0
- package/dist/components/ui/spinner.d.ts.map +1 -0
- package/dist/components/ui/spinner.js +16 -0
- package/dist/components/ui/spinner.js.map +1 -0
- package/dist/components/ui/switch.d.ts +2 -2
- package/dist/components/ui/switch.d.ts.map +1 -1
- package/dist/components/ui/switch.js +7 -9
- package/dist/components/ui/switch.js.map +1 -1
- package/dist/components/ui/table.d.ts +8 -8
- package/dist/components/ui/table.d.ts.map +1 -1
- package/dist/components/ui/table.js +36 -45
- package/dist/components/ui/table.js.map +1 -1
- package/dist/components/ui/tabs.d.ts +4 -4
- package/dist/components/ui/tabs.d.ts.map +1 -1
- package/dist/components/ui/tabs.js +17 -26
- package/dist/components/ui/tabs.js.map +1 -1
- package/dist/components/ui/textarea.d.ts +1 -1
- package/dist/components/ui/textarea.d.ts.map +1 -1
- package/dist/components/ui/textarea.js +6 -7
- package/dist/components/ui/textarea.js.map +1 -1
- package/dist/components/ui/toggle-group.d.ts +8 -3
- package/dist/components/ui/toggle-group.d.ts.map +1 -1
- package/dist/components/ui/toggle-group.js +11 -15
- package/dist/components/ui/toggle-group.js.map +1 -1
- package/dist/components/ui/toggle.d.ts +4 -1
- package/dist/components/ui/toggle.d.ts.map +1 -1
- package/dist/components/ui/toggle.js +7 -8
- package/dist/components/ui/toggle.js.map +1 -1
- package/dist/components/ui/tooltip.d.ts +4 -4
- package/dist/components/ui/tooltip.d.ts.map +1 -1
- package/dist/components/ui/tooltip.js +13 -38
- package/dist/components/ui/tooltip.js.map +1 -1
- package/dist/components/ui/typewriter.d.ts.map +1 -1
- package/dist/components/ui/typewriter.js +2 -6
- package/dist/components/ui/typewriter.js.map +1 -1
- package/dist/index.css +839 -1126
- package/dist/index.css.map +1 -1
- package/dist/index.d.ts +9 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -3
- package/package.json +37 -2
- package/src/components/ui/accordion.tsx +43 -44
- package/src/components/ui/alert-dialog.tsx +88 -99
- package/src/components/ui/alert.tsx +23 -25
- package/src/components/ui/aspect-ratio.tsx +1 -9
- package/src/components/ui/avatar.tsx +29 -24
- package/src/components/ui/badge.tsx +8 -16
- package/src/components/ui/breadcrumb.tsx +70 -73
- package/src/components/ui/button-group.tsx +69 -0
- package/src/components/ui/button.tsx +18 -24
- package/src/components/ui/calendar.tsx +20 -22
- package/src/components/ui/card.tsx +52 -71
- package/src/components/ui/carousel.tsx +145 -133
- package/src/components/ui/chart.tsx +173 -183
- package/src/components/ui/checkbox.tsx +18 -18
- package/src/components/ui/collapsible.tsx +3 -25
- package/src/components/ui/command.tsx +100 -99
- package/src/components/ui/context-menu.tsx +150 -193
- package/src/components/ui/dialog.tsx +75 -110
- package/src/components/ui/drawer.tsx +74 -102
- package/src/components/ui/dropdown-menu.tsx +153 -200
- package/src/components/ui/dropdrawer.tsx +0 -5
- package/src/components/ui/empty.tsx +86 -0
- package/src/components/ui/field.tsx +198 -0
- package/src/components/ui/form.tsx +47 -48
- package/src/components/ui/hover-card.tsx +18 -37
- package/src/components/ui/input-group.tsx +145 -0
- package/src/components/ui/input-otp.tsx +49 -59
- package/src/components/ui/input.tsx +5 -6
- package/src/components/ui/item.tsx +163 -0
- package/src/components/ui/kbd.tsx +31 -0
- package/src/components/ui/label.tsx +14 -12
- package/src/components/ui/menubar.tsx +178 -201
- package/src/components/ui/navigation-menu.tsx +85 -100
- package/src/components/ui/pagination.tsx +74 -85
- package/src/components/ui/popover.tsx +19 -38
- package/src/components/ui/progress.tsx +15 -14
- package/src/components/ui/radio-group.tsx +19 -13
- package/src/components/ui/resizable.tsx +23 -37
- package/src/components/ui/scroll-area.tsx +32 -35
- package/src/components/ui/select.tsx +112 -127
- package/src/components/ui/separator.tsx +17 -19
- package/src/components/ui/sheet.tsx +87 -108
- package/src/components/ui/sidebar.tsx +262 -271
- package/src/components/ui/skeleton.tsx +2 -3
- package/src/components/ui/slider.tsx +10 -36
- package/src/components/ui/sonner.tsx +15 -9
- package/src/components/ui/spinner.tsx +18 -0
- package/src/components/ui/switch.tsx +18 -17
- package/src/components/ui/table.tsx +66 -71
- package/src/components/ui/tabs.tsx +36 -36
- package/src/components/ui/textarea.tsx +5 -4
- package/src/components/ui/toggle-group.tsx +21 -34
- package/src/components/ui/toggle.tsx +14 -16
- package/src/components/ui/tooltip.tsx +19 -43
- package/src/components/ui/typewriter.tsx +3 -4
- package/src/index.css +6 -6
- package/src/index.ts +43 -4
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
import { jsx, jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { Slot } from "@radix-ui/react-slot";
|
|
4
4
|
import { cva } from "class-variance-authority";
|
|
5
|
-
import {
|
|
6
|
-
import { createContext, useCallback, useContext, useEffect, useMemo, useState } from "react";
|
|
5
|
+
import { PanelLeft } from "lucide-react";
|
|
6
|
+
import { createContext, forwardRef, useCallback, useContext, useEffect, useMemo, useState } from "react";
|
|
7
7
|
import { Button } from "./button.js";
|
|
8
8
|
import { Input } from "./input.js";
|
|
9
9
|
import { Separator } from "./separator.js";
|
|
@@ -24,7 +24,7 @@ function useSidebar() {
|
|
|
24
24
|
if (!context) throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
25
25
|
return context;
|
|
26
26
|
}
|
|
27
|
-
|
|
27
|
+
const SidebarProvider = /*#__PURE__*/ forwardRef(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props }, ref)=>{
|
|
28
28
|
const isMobile = useIsMobile();
|
|
29
29
|
const [openMobile, setOpenMobile] = useState(false);
|
|
30
30
|
const [_open, _setOpen] = useState(defaultOpen);
|
|
@@ -78,24 +78,25 @@ function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: set
|
|
|
78
78
|
children: /*#__PURE__*/ jsx(TooltipProvider, {
|
|
79
79
|
delayDuration: 0,
|
|
80
80
|
children: /*#__PURE__*/ jsx("div", {
|
|
81
|
-
"data-slot": "sidebar-wrapper",
|
|
82
81
|
style: {
|
|
83
82
|
"--sidebar-width": SIDEBAR_WIDTH,
|
|
84
83
|
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
85
84
|
...style
|
|
86
85
|
},
|
|
87
|
-
className: cn("group/sidebar-wrapper has-data-
|
|
86
|
+
className: cn("group/sidebar-wrapper has-[[data-variant=inset]]:bg-sidebar flex min-h-svh w-full", className),
|
|
87
|
+
ref: ref,
|
|
88
88
|
...props,
|
|
89
89
|
children: children
|
|
90
90
|
})
|
|
91
91
|
})
|
|
92
92
|
});
|
|
93
|
-
}
|
|
94
|
-
|
|
93
|
+
});
|
|
94
|
+
SidebarProvider.displayName = "SidebarProvider";
|
|
95
|
+
const Sidebar = /*#__PURE__*/ forwardRef(({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children, ...props }, ref)=>{
|
|
95
96
|
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
96
97
|
if ("none" === collapsible) return /*#__PURE__*/ jsx("div", {
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
className: cn("bg-sidebar text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col", className),
|
|
99
|
+
ref: ref,
|
|
99
100
|
...props,
|
|
100
101
|
children: children
|
|
101
102
|
});
|
|
@@ -105,9 +106,8 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
|
|
|
105
106
|
...props,
|
|
106
107
|
children: /*#__PURE__*/ jsxs(SheetContent, {
|
|
107
108
|
"data-sidebar": "sidebar",
|
|
108
|
-
"data-slot": "sidebar",
|
|
109
109
|
"data-mobile": "true",
|
|
110
|
-
className: "bg-sidebar text-sidebar-foreground w-
|
|
110
|
+
className: "bg-sidebar text-sidebar-foreground w-[--sidebar-width] p-0 [&>button]:hidden",
|
|
111
111
|
style: {
|
|
112
112
|
"--sidebar-width": SIDEBAR_WIDTH_MOBILE
|
|
113
113
|
},
|
|
@@ -132,164 +132,156 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
|
|
|
132
132
|
})
|
|
133
133
|
});
|
|
134
134
|
return /*#__PURE__*/ jsxs("div", {
|
|
135
|
+
ref: ref,
|
|
135
136
|
className: "group peer text-sidebar-foreground hidden md:block",
|
|
136
137
|
"data-state": state,
|
|
137
138
|
"data-collapsible": "collapsed" === state ? collapsible : "",
|
|
138
139
|
"data-variant": variant,
|
|
139
140
|
"data-side": side,
|
|
140
|
-
"data-slot": "sidebar",
|
|
141
141
|
children: [
|
|
142
142
|
/*#__PURE__*/ jsx("div", {
|
|
143
|
-
"data-
|
|
144
|
-
className: cn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", "floating" === variant || "inset" === variant ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)")
|
|
143
|
+
className: cn("relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", "floating" === variant || "inset" === variant ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon]")
|
|
145
144
|
}),
|
|
146
145
|
/*#__PURE__*/ jsx("div", {
|
|
147
|
-
"data-
|
|
148
|
-
className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex", "left" === side ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", "floating" === variant || "inset" === variant ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
|
|
146
|
+
className: cn("fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex", "left" === side ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", "floating" === variant || "inset" === variant ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]" : "group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
|
|
149
147
|
...props,
|
|
150
148
|
children: /*#__PURE__*/ jsx("div", {
|
|
151
149
|
"data-sidebar": "sidebar",
|
|
152
|
-
"data-
|
|
153
|
-
className: "bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm",
|
|
150
|
+
className: "bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow",
|
|
154
151
|
children: children
|
|
155
152
|
})
|
|
156
153
|
})
|
|
157
154
|
]
|
|
158
155
|
});
|
|
159
|
-
}
|
|
160
|
-
|
|
156
|
+
});
|
|
157
|
+
Sidebar.displayName = "Sidebar";
|
|
158
|
+
const SidebarTrigger = /*#__PURE__*/ forwardRef(({ className, onClick, ...props }, ref)=>{
|
|
161
159
|
const { toggleSidebar } = useSidebar();
|
|
162
160
|
return /*#__PURE__*/ jsxs(Button, {
|
|
161
|
+
ref: ref,
|
|
163
162
|
"data-sidebar": "trigger",
|
|
164
|
-
"data-slot": "sidebar-trigger",
|
|
165
163
|
variant: "ghost",
|
|
166
164
|
size: "icon",
|
|
167
|
-
className: cn("
|
|
165
|
+
className: cn("h-7 w-7", className),
|
|
168
166
|
onClick: (event)=>{
|
|
169
167
|
onClick?.(event);
|
|
170
168
|
toggleSidebar();
|
|
171
169
|
},
|
|
172
170
|
...props,
|
|
173
171
|
children: [
|
|
174
|
-
/*#__PURE__*/ jsx(
|
|
172
|
+
/*#__PURE__*/ jsx(PanelLeft, {}),
|
|
175
173
|
/*#__PURE__*/ jsx("span", {
|
|
176
174
|
className: "sr-only",
|
|
177
175
|
children: "Toggle Sidebar"
|
|
178
176
|
})
|
|
179
177
|
]
|
|
180
178
|
});
|
|
181
|
-
}
|
|
182
|
-
|
|
179
|
+
});
|
|
180
|
+
SidebarTrigger.displayName = "SidebarTrigger";
|
|
181
|
+
const SidebarRail = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>{
|
|
183
182
|
const { toggleSidebar } = useSidebar();
|
|
184
183
|
return /*#__PURE__*/ jsx("button", {
|
|
184
|
+
ref: ref,
|
|
185
185
|
"data-sidebar": "rail",
|
|
186
|
-
"data-slot": "sidebar-rail",
|
|
187
186
|
"aria-label": "Toggle Sidebar",
|
|
188
187
|
tabIndex: -1,
|
|
189
188
|
onClick: toggleSidebar,
|
|
190
189
|
title: "Toggle Sidebar",
|
|
191
|
-
className: cn("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "
|
|
190
|
+
className: cn("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "group-data-[collapsible=offcanvas]:hover:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
|
|
192
191
|
...props
|
|
193
192
|
});
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
className: cn("relative flex w-full flex-1 flex-col bg-white dark:bg-neutral-950", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow
|
|
193
|
+
});
|
|
194
|
+
SidebarRail.displayName = "SidebarRail";
|
|
195
|
+
const SidebarInset = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("main", {
|
|
196
|
+
ref: ref,
|
|
197
|
+
className: cn("relative flex w-full flex-1 flex-col bg-white dark:bg-neutral-950", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2", className),
|
|
199
198
|
...props
|
|
200
|
-
});
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
"data-slot": "sidebar-input",
|
|
199
|
+
}));
|
|
200
|
+
SidebarInset.displayName = "SidebarInset";
|
|
201
|
+
const SidebarInput = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Input, {
|
|
202
|
+
ref: ref,
|
|
205
203
|
"data-sidebar": "input",
|
|
206
|
-
className: cn("h-8 w-full bg-white shadow-none dark:bg-neutral-950", className),
|
|
204
|
+
className: cn("focus-visible:ring-sidebar-ring h-8 w-full bg-white shadow-none focus-visible:ring-2 dark:bg-neutral-950", className),
|
|
207
205
|
...props
|
|
208
|
-
});
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
"data-slot": "sidebar-header",
|
|
206
|
+
}));
|
|
207
|
+
SidebarInput.displayName = "SidebarInput";
|
|
208
|
+
const SidebarHeader = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
|
|
209
|
+
ref: ref,
|
|
213
210
|
"data-sidebar": "header",
|
|
214
211
|
className: cn("flex flex-col gap-2 p-2", className),
|
|
215
212
|
...props
|
|
216
|
-
});
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
"data-slot": "sidebar-footer",
|
|
213
|
+
}));
|
|
214
|
+
SidebarHeader.displayName = "SidebarHeader";
|
|
215
|
+
const SidebarFooter = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
|
|
216
|
+
ref: ref,
|
|
221
217
|
"data-sidebar": "footer",
|
|
222
218
|
className: cn("flex flex-col gap-2 p-2", className),
|
|
223
219
|
...props
|
|
224
|
-
});
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
"data-slot": "sidebar-separator",
|
|
220
|
+
}));
|
|
221
|
+
SidebarFooter.displayName = "SidebarFooter";
|
|
222
|
+
const SidebarSeparator = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx(Separator, {
|
|
223
|
+
ref: ref,
|
|
229
224
|
"data-sidebar": "separator",
|
|
230
225
|
className: cn("bg-sidebar-border mx-2 w-auto", className),
|
|
231
226
|
...props
|
|
232
|
-
});
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
"data-slot": "sidebar-content",
|
|
227
|
+
}));
|
|
228
|
+
SidebarSeparator.displayName = "SidebarSeparator";
|
|
229
|
+
const SidebarContent = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
|
|
230
|
+
ref: ref,
|
|
237
231
|
"data-sidebar": "content",
|
|
238
232
|
className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
|
|
239
233
|
...props
|
|
240
|
-
});
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
"data-slot": "sidebar-group",
|
|
234
|
+
}));
|
|
235
|
+
SidebarContent.displayName = "SidebarContent";
|
|
236
|
+
const SidebarGroup = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
|
|
237
|
+
ref: ref,
|
|
245
238
|
"data-sidebar": "group",
|
|
246
239
|
className: cn("relative flex w-full min-w-0 flex-col p-2", className),
|
|
247
240
|
...props
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
|
|
241
|
+
}));
|
|
242
|
+
SidebarGroup.displayName = "SidebarGroup";
|
|
243
|
+
const SidebarGroupLabel = /*#__PURE__*/ forwardRef(({ className, asChild = false, ...props }, ref)=>{
|
|
251
244
|
const Comp = asChild ? Slot : "div";
|
|
252
245
|
return /*#__PURE__*/ jsx(Comp, {
|
|
253
|
-
|
|
246
|
+
ref: ref,
|
|
254
247
|
"data-sidebar": "group-label",
|
|
255
|
-
className: cn("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium
|
|
248
|
+
className: cn("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
|
|
256
249
|
...props
|
|
257
250
|
});
|
|
258
|
-
}
|
|
259
|
-
|
|
251
|
+
});
|
|
252
|
+
SidebarGroupLabel.displayName = "SidebarGroupLabel";
|
|
253
|
+
const SidebarGroupAction = /*#__PURE__*/ forwardRef(({ className, asChild = false, ...props }, ref)=>{
|
|
260
254
|
const Comp = asChild ? Slot : "button";
|
|
261
255
|
return /*#__PURE__*/ jsx(Comp, {
|
|
262
|
-
|
|
256
|
+
ref: ref,
|
|
263
257
|
"data-sidebar": "group-action",
|
|
264
|
-
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0
|
|
258
|
+
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 after:md:hidden", "group-data-[collapsible=icon]:hidden", className),
|
|
265
259
|
...props
|
|
266
260
|
});
|
|
267
|
-
}
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
261
|
+
});
|
|
262
|
+
SidebarGroupAction.displayName = "SidebarGroupAction";
|
|
263
|
+
const SidebarGroupContent = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
|
|
264
|
+
ref: ref,
|
|
271
265
|
"data-sidebar": "group-content",
|
|
272
266
|
className: cn("w-full text-sm", className),
|
|
273
267
|
...props
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
"data-slot": "sidebar-menu",
|
|
268
|
+
}));
|
|
269
|
+
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
270
|
+
const SidebarMenu = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("ul", {
|
|
271
|
+
ref: ref,
|
|
279
272
|
"data-sidebar": "menu",
|
|
280
273
|
className: cn("flex w-full min-w-0 flex-col gap-1", className),
|
|
281
274
|
...props
|
|
282
|
-
});
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
"data-slot": "sidebar-menu-item",
|
|
275
|
+
}));
|
|
276
|
+
SidebarMenu.displayName = "SidebarMenu";
|
|
277
|
+
const SidebarMenuItem = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("li", {
|
|
278
|
+
ref: ref,
|
|
287
279
|
"data-sidebar": "menu-item",
|
|
288
280
|
className: cn("group/menu-item relative", className),
|
|
289
281
|
...props
|
|
290
|
-
});
|
|
291
|
-
|
|
292
|
-
const sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-
|
|
282
|
+
}));
|
|
283
|
+
SidebarMenuItem.displayName = "SidebarMenuItem";
|
|
284
|
+
const sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] 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 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", {
|
|
293
285
|
variants: {
|
|
294
286
|
variant: {
|
|
295
287
|
default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
@@ -298,7 +290,7 @@ const sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center
|
|
|
298
290
|
size: {
|
|
299
291
|
default: "h-8 text-sm",
|
|
300
292
|
sm: "h-7 text-xs",
|
|
301
|
-
lg: "h-12 text-sm group-data-[collapsible=icon]
|
|
293
|
+
lg: "h-12 text-sm group-data-[collapsible=icon]:!p-0"
|
|
302
294
|
}
|
|
303
295
|
},
|
|
304
296
|
defaultVariants: {
|
|
@@ -306,11 +298,11 @@ const sidebarMenuButtonVariants = cva("peer/menu-button flex w-full items-center
|
|
|
306
298
|
size: "default"
|
|
307
299
|
}
|
|
308
300
|
});
|
|
309
|
-
|
|
301
|
+
const SidebarMenuButton = /*#__PURE__*/ forwardRef(({ asChild = false, isActive = false, variant = "default", size = "default", tooltip, className, ...props }, ref)=>{
|
|
310
302
|
const Comp = asChild ? Slot : "button";
|
|
311
303
|
const { isMobile, state } = useSidebar();
|
|
312
304
|
const button = /*#__PURE__*/ jsx(Comp, {
|
|
313
|
-
|
|
305
|
+
ref: ref,
|
|
314
306
|
"data-sidebar": "menu-button",
|
|
315
307
|
"data-size": size,
|
|
316
308
|
"data-active": isActive,
|
|
@@ -338,28 +330,29 @@ function SidebarMenuButton({ asChild = false, isActive = false, variant = "defau
|
|
|
338
330
|
})
|
|
339
331
|
]
|
|
340
332
|
});
|
|
341
|
-
}
|
|
342
|
-
|
|
333
|
+
});
|
|
334
|
+
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
335
|
+
const SidebarMenuAction = /*#__PURE__*/ forwardRef(({ className, asChild = false, showOnHover = false, ...props }, ref)=>{
|
|
343
336
|
const Comp = asChild ? Slot : "button";
|
|
344
337
|
return /*#__PURE__*/ jsx(Comp, {
|
|
345
|
-
|
|
338
|
+
ref: ref,
|
|
346
339
|
"data-sidebar": "menu-action",
|
|
347
|
-
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0
|
|
340
|
+
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 after:md:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
|
|
348
341
|
...props
|
|
349
342
|
});
|
|
350
|
-
}
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
343
|
+
});
|
|
344
|
+
SidebarMenuAction.displayName = "SidebarMenuAction";
|
|
345
|
+
const SidebarMenuBadge = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("div", {
|
|
346
|
+
ref: ref,
|
|
354
347
|
"data-sidebar": "menu-badge",
|
|
355
348
|
className: cn("text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
|
|
356
349
|
...props
|
|
357
|
-
});
|
|
358
|
-
|
|
359
|
-
|
|
350
|
+
}));
|
|
351
|
+
SidebarMenuBadge.displayName = "SidebarMenuBadge";
|
|
352
|
+
const SidebarMenuSkeleton = /*#__PURE__*/ forwardRef(({ className, showIcon = false, ...props }, ref)=>{
|
|
360
353
|
const width = useMemo(()=>`${Math.floor(40 * Math.random()) + 50}%`, []);
|
|
361
354
|
return /*#__PURE__*/ jsxs("div", {
|
|
362
|
-
|
|
355
|
+
ref: ref,
|
|
363
356
|
"data-sidebar": "menu-skeleton",
|
|
364
357
|
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
365
358
|
...props,
|
|
@@ -369,7 +362,7 @@ function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
|
|
|
369
362
|
"data-sidebar": "menu-skeleton-icon"
|
|
370
363
|
}),
|
|
371
364
|
/*#__PURE__*/ jsx(Skeleton, {
|
|
372
|
-
className: "h-4 max-w-
|
|
365
|
+
className: "h-4 max-w-[--skeleton-width] flex-1",
|
|
373
366
|
"data-sidebar": "menu-skeleton-text",
|
|
374
367
|
style: {
|
|
375
368
|
"--skeleton-width": width
|
|
@@ -377,34 +370,32 @@ function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
|
|
|
377
370
|
})
|
|
378
371
|
]
|
|
379
372
|
});
|
|
380
|
-
}
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
|
|
373
|
+
});
|
|
374
|
+
SidebarMenuSkeleton.displayName = "SidebarMenuSkeleton";
|
|
375
|
+
const SidebarMenuSub = /*#__PURE__*/ forwardRef(({ className, ...props }, ref)=>/*#__PURE__*/ jsx("ul", {
|
|
376
|
+
ref: ref,
|
|
384
377
|
"data-sidebar": "menu-sub",
|
|
385
378
|
className: cn("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5", "group-data-[collapsible=icon]:hidden", className),
|
|
386
379
|
...props
|
|
387
|
-
});
|
|
388
|
-
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
"data-slot": "sidebar-menu-sub-item",
|
|
392
|
-
"data-sidebar": "menu-sub-item",
|
|
393
|
-
className: cn("group/menu-sub-item relative", className),
|
|
380
|
+
}));
|
|
381
|
+
SidebarMenuSub.displayName = "SidebarMenuSub";
|
|
382
|
+
const SidebarMenuSubItem = /*#__PURE__*/ forwardRef(({ ...props }, ref)=>/*#__PURE__*/ jsx("li", {
|
|
383
|
+
ref: ref,
|
|
394
384
|
...props
|
|
395
|
-
});
|
|
396
|
-
|
|
397
|
-
|
|
385
|
+
}));
|
|
386
|
+
SidebarMenuSubItem.displayName = "SidebarMenuSubItem";
|
|
387
|
+
const SidebarMenuSubButton = /*#__PURE__*/ forwardRef(({ asChild = false, size = "md", isActive, className, ...props }, ref)=>{
|
|
398
388
|
const Comp = asChild ? Slot : "a";
|
|
399
389
|
return /*#__PURE__*/ jsx(Comp, {
|
|
400
|
-
|
|
390
|
+
ref: ref,
|
|
401
391
|
"data-sidebar": "menu-sub-button",
|
|
402
392
|
"data-size": size,
|
|
403
393
|
"data-active": isActive,
|
|
404
|
-
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-
|
|
394
|
+
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", "sm" === size && "text-xs", "md" === size && "text-sm", "group-data-[collapsible=icon]:hidden", className),
|
|
405
395
|
...props
|
|
406
396
|
});
|
|
407
|
-
}
|
|
397
|
+
});
|
|
398
|
+
SidebarMenuSubButton.displayName = "SidebarMenuSubButton";
|
|
408
399
|
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, useSidebar };
|
|
409
400
|
|
|
410
401
|
//# sourceMappingURL=sidebar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"components\\ui\\sidebar.js","sources":["webpack://@arolariu/components/./src/components/ui/sidebar.tsx"],"sourcesContent":["\r\n\r\n/* eslint-disable */\r\n\r\nimport {Slot} from \"@radix-ui/react-slot\";\r\nimport {cva, VariantProps} from \"class-variance-authority\";\r\nimport {PanelLeftIcon} from \"lucide-react\";\r\nimport * as React from \"react\";\r\n\r\nimport {Button} from \"@/components/ui/button\";\r\nimport {Input} from \"@/components/ui/input\";\r\nimport {Separator} from \"@/components/ui/separator\";\r\nimport {Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle} from \"@/components/ui/sheet\";\r\nimport {Skeleton} from \"@/components/ui/skeleton\";\r\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from \"@/components/ui/tooltip\";\r\nimport {useIsMobile} from \"@/hooks/useIsMobile\";\r\nimport {cn} from \"@/lib/utilities\";\r\n\r\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\r\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\n\r\ntype SidebarContextProps = {\r\n state: \"expanded\" | \"collapsed\";\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n openMobile: boolean;\r\n setOpenMobile: (open: boolean) => void;\r\n isMobile: boolean;\r\n toggleSidebar: () => void;\r\n};\r\n\r\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\r\n\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nfunction SidebarProvider({\r\n defaultOpen = true,\r\n open: openProp,\r\n onOpenChange: setOpenProp,\r\n className,\r\n style,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n}) {\r\n const isMobile = useIsMobile();\r\n const [openMobile, setOpenMobile] = React.useState(false);\r\n\r\n // This is the internal state of the sidebar.\r\n // We use openProp and setOpenProp for control from outside the component.\r\n const [_open, _setOpen] = React.useState(defaultOpen);\r\n const open = openProp ?? _open;\r\n const setOpen = React.useCallback(\r\n (value: boolean | ((value: boolean) => boolean)) => {\r\n const openState = typeof value === \"function\" ? value(open) : value;\r\n if (setOpenProp) {\r\n setOpenProp(openState);\r\n } else {\r\n _setOpen(openState);\r\n }\r\n\r\n // This sets the cookie to keep the sidebar state.\r\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\r\n },\r\n [setOpenProp, open],\r\n );\r\n\r\n // Helper to toggle the sidebar.\r\n const toggleSidebar = React.useCallback(() => {\r\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\r\n }, [isMobile, setOpen, setOpenMobile]);\r\n\r\n // Adds a keyboard shortcut to toggle the sidebar.\r\n React.useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\r\n event.preventDefault();\r\n toggleSidebar();\r\n }\r\n };\r\n\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [toggleSidebar]);\r\n\r\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n // This makes it easier to style the sidebar with Tailwind classes.\r\n const state = open ? \"expanded\" : \"collapsed\";\r\n\r\n const contextValue = React.useMemo<SidebarContextProps>(\r\n () => ({\r\n state,\r\n open,\r\n setOpen,\r\n isMobile,\r\n openMobile,\r\n setOpenMobile,\r\n toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n data-slot='sidebar-wrapper'\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH,\r\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\"group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full\", className)}\r\n {...props}>\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n}\r\n\r\nfunction Sidebar({\r\n side = \"left\",\r\n variant = \"sidebar\",\r\n collapsible = \"offcanvas\",\r\n className,\r\n children,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n}) {\r\n const {isMobile, state, openMobile, setOpenMobile} = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n data-slot='sidebar'\r\n className={cn(\"bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col\", className)}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n if (isMobile) {\r\n return (\r\n <Sheet\r\n open={openMobile}\r\n onOpenChange={setOpenMobile}\r\n {...props}>\r\n <SheetContent\r\n data-sidebar='sidebar'\r\n data-slot='sidebar'\r\n data-mobile='true'\r\n className='bg-sidebar text-sidebar-foreground w-(--sidebar-width) p-0 [&>button]:hidden'\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\r\n } as React.CSSProperties\r\n }\r\n side={side}>\r\n <SheetHeader className='sr-only'>\r\n <SheetTitle>Sidebar</SheetTitle>\r\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\r\n </SheetHeader>\r\n <div className='flex h-full w-full flex-col'>{children}</div>\r\n </SheetContent>\r\n </Sheet>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n className='group peer text-sidebar-foreground hidden md:block'\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}\r\n data-slot='sidebar'>\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n data-slot='sidebar-gap'\r\n className={cn(\r\n \"relative w-(--sidebar-width) bg-transparent transition-[width] duration-200 ease-linear\",\r\n \"group-data-[collapsible=offcanvas]:w-0\",\r\n \"group-data-[side=right]:rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]\"\r\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon)\",\r\n )}\r\n />\r\n <div\r\n data-slot='sidebar-container'\r\n className={cn(\r\n \"fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex\",\r\n side === \"left\"\r\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\r\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]\"\r\n : \"group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l\",\r\n className,\r\n )}\r\n {...props}>\r\n <div\r\n data-sidebar='sidebar'\r\n data-slot='sidebar-inner'\r\n className='bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm'>\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n\r\nfunction SidebarTrigger({className, onClick, ...props}: React.ComponentProps<typeof Button>) {\r\n const {toggleSidebar} = useSidebar();\r\n\r\n return (\r\n <Button\r\n data-sidebar='trigger'\r\n data-slot='sidebar-trigger'\r\n variant='ghost'\r\n size='icon'\r\n className={cn(\"size-7\", className)}\r\n onClick={(event) => {\r\n onClick?.(event);\r\n toggleSidebar();\r\n }}\r\n {...props}>\r\n <PanelLeftIcon />\r\n <span className='sr-only'>Toggle Sidebar</span>\r\n </Button>\r\n );\r\n}\r\n\r\nfunction SidebarRail({className, ...props}: React.ComponentProps<\"button\">) {\r\n const {toggleSidebar} = useSidebar();\r\n\r\n return (\r\n <button\r\n data-sidebar='rail'\r\n data-slot='sidebar-rail'\r\n aria-label='Toggle Sidebar'\r\n tabIndex={-1}\r\n onClick={toggleSidebar}\r\n title='Toggle Sidebar'\r\n className={cn(\r\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\r\n \"in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize\",\r\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\r\n \"hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\r\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\r\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarInset({className, ...props}: React.ComponentProps<\"main\">) {\r\n return (\r\n <main\r\n data-slot='sidebar-inset'\r\n className={cn(\r\n \"relative flex w-full flex-1 flex-col bg-white dark:bg-neutral-950\",\r\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarInput({className, ...props}: React.ComponentProps<typeof Input>) {\r\n return (\r\n <Input\r\n data-slot='sidebar-input'\r\n data-sidebar='input'\r\n className={cn(\"h-8 w-full bg-white shadow-none dark:bg-neutral-950\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarHeader({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-header'\r\n data-sidebar='header'\r\n className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarFooter({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-footer'\r\n data-sidebar='footer'\r\n className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarSeparator({className, ...props}: React.ComponentProps<typeof Separator>) {\r\n return (\r\n <Separator\r\n data-slot='sidebar-separator'\r\n data-sidebar='separator'\r\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarContent({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-content'\r\n data-sidebar='content'\r\n className={cn(\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarGroup({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-group'\r\n data-sidebar='group'\r\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarGroupLabel({className, asChild = false, ...props}: React.ComponentProps<\"div\"> & {asChild?: boolean}) {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n data-slot='sidebar-group-label'\r\n data-sidebar='group-label'\r\n className={cn(\r\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarGroupAction({className, asChild = false, ...props}: React.ComponentProps<\"button\"> & {asChild?: boolean}) {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n data-slot='sidebar-group-action'\r\n data-sidebar='group-action'\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 md:after:hidden\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarGroupContent({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-group-content'\r\n data-sidebar='group-content'\r\n className={cn(\"w-full text-sm\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenu({className, ...props}: React.ComponentProps<\"ul\">) {\r\n return (\r\n <ul\r\n data-slot='sidebar-menu'\r\n data-sidebar='menu'\r\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuItem({className, ...props}: React.ComponentProps<\"li\">) {\r\n return (\r\n <li\r\n data-slot='sidebar-menu-item'\r\n data-sidebar='menu-item'\r\n className={cn(\"group/menu-item relative\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nconst sidebarMenuButtonVariants = cva(\r\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-hidden ring-sidebar-ring transition-[width,height,padding] 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 group-has-data-[sidebar=menu-action]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2! [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\r\n outline:\r\n \"bg-white shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))] dark:bg-neutral-950\",\r\n },\r\n size: {\r\n default: \"h-8 text-sm\",\r\n sm: \"h-7 text-xs\",\r\n lg: \"h-12 text-sm group-data-[collapsible=icon]:p-0!\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n },\r\n);\r\n\r\nfunction SidebarMenuButton({\r\n asChild = false,\r\n isActive = false,\r\n variant = \"default\",\r\n size = \"default\",\r\n tooltip,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n isActive?: boolean;\r\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n} & VariantProps<typeof sidebarMenuButtonVariants>) {\r\n const Comp = asChild ? Slot : \"button\";\r\n const {isMobile, state} = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n data-slot='sidebar-menu-button'\r\n data-sidebar='menu-button'\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(sidebarMenuButtonVariants({variant, size}), className)}\r\n {...props}\r\n />\r\n );\r\n\r\n if (!tooltip) {\r\n return button;\r\n }\r\n\r\n if (typeof tooltip === \"string\") {\r\n tooltip = {\r\n children: tooltip,\r\n };\r\n }\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n <TooltipContent\r\n side='right'\r\n align='center'\r\n hidden={state !== \"collapsed\" || isMobile}\r\n {...tooltip}\r\n />\r\n </Tooltip>\r\n );\r\n}\r\n\r\nfunction SidebarMenuAction({\r\n className,\r\n asChild = false,\r\n showOnHover = false,\r\n ...props\r\n}: React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n}) {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n data-slot='sidebar-menu-action'\r\n data-sidebar='menu-action'\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 md:after:hidden\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n showOnHover\r\n && \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuBadge({className, ...props}: React.ComponentProps<\"div\">) {\r\n return (\r\n <div\r\n data-slot='sidebar-menu-badge'\r\n data-sidebar='menu-badge'\r\n className={cn(\r\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\r\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuSkeleton({\r\n className,\r\n showIcon = false,\r\n ...props\r\n}: React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n}) {\r\n // Random width between 50 to 90%.\r\n const width = React.useMemo(() => {\r\n return `${Math.floor(Math.random() * 40) + 50}%`;\r\n }, []);\r\n\r\n return (\r\n <div\r\n data-slot='sidebar-menu-skeleton'\r\n data-sidebar='menu-skeleton'\r\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\r\n {...props}>\r\n {showIcon && (\r\n <Skeleton\r\n className='size-4 rounded-md'\r\n data-sidebar='menu-skeleton-icon'\r\n />\r\n )}\r\n <Skeleton\r\n className='h-4 max-w-(--skeleton-width) flex-1'\r\n data-sidebar='menu-skeleton-text'\r\n style={\r\n {\r\n \"--skeleton-width\": width,\r\n } as React.CSSProperties\r\n }\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nfunction SidebarMenuSub({className, ...props}: React.ComponentProps<\"ul\">) {\r\n return (\r\n <ul\r\n data-slot='sidebar-menu-sub'\r\n data-sidebar='menu-sub'\r\n className={cn(\r\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuSubItem({className, ...props}: React.ComponentProps<\"li\">) {\r\n return (\r\n <li\r\n data-slot='sidebar-menu-sub-item'\r\n data-sidebar='menu-sub-item'\r\n className={cn(\"group/menu-sub-item relative\", className)}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nfunction SidebarMenuSubButton({\r\n asChild = false,\r\n size = \"md\",\r\n isActive = false,\r\n className,\r\n ...props\r\n}: React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n}) {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n data-slot='sidebar-menu-sub-button'\r\n data-sidebar='menu-sub-button'\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\r\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\r\n size === \"sm\" && \"text-xs\",\r\n size === \"md\" && \"text-sm\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n}\r\n\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInput,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n};\r\n"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","Error","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","document","toggleSidebar","handleKeyDown","event","window","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeftIcon","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Math","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"components\\ui\\sidebar.js","sources":["webpack://@arolariu/components/./src/components/ui/sidebar.tsx"],"sourcesContent":["\r\n\r\nimport {Slot} from \"@radix-ui/react-slot\";\r\nimport {VariantProps, cva} from \"class-variance-authority\";\r\nimport {PanelLeft} from \"lucide-react\";\r\nimport * as React from \"react\";\r\n\r\nimport {Button} from \"@/components/ui/button\";\r\nimport {Input} from \"@/components/ui/input\";\r\nimport {Separator} from \"@/components/ui/separator\";\r\nimport {Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle} from \"@/components/ui/sheet\";\r\nimport {Skeleton} from \"@/components/ui/skeleton\";\r\nimport {Tooltip, TooltipContent, TooltipProvider, TooltipTrigger} from \"@/components/ui/tooltip\";\r\nimport {useIsMobile} from \"@/hooks/useIsMobile\";\r\nimport {cn} from \"@/lib/utilities\";\r\n\r\nconst SIDEBAR_COOKIE_NAME = \"sidebar_state\";\r\nconst SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;\r\nconst SIDEBAR_WIDTH = \"16rem\";\r\nconst SIDEBAR_WIDTH_MOBILE = \"18rem\";\r\nconst SIDEBAR_WIDTH_ICON = \"3rem\";\r\nconst SIDEBAR_KEYBOARD_SHORTCUT = \"b\";\r\n\r\ntype SidebarContextProps = {\r\n state: \"expanded\" | \"collapsed\";\r\n open: boolean;\r\n setOpen: (open: boolean) => void;\r\n openMobile: boolean;\r\n setOpenMobile: (open: boolean) => void;\r\n isMobile: boolean;\r\n toggleSidebar: () => void;\r\n};\r\n\r\nconst SidebarContext = React.createContext<SidebarContextProps | null>(null);\r\n\r\nfunction useSidebar() {\r\n const context = React.useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error(\"useSidebar must be used within a SidebarProvider.\");\r\n }\r\n\r\n return context;\r\n}\r\n\r\nconst SidebarProvider = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n defaultOpen?: boolean;\r\n open?: boolean;\r\n onOpenChange?: (open: boolean) => void;\r\n }\r\n>(({defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children, ...props}, ref) => {\r\n const isMobile = useIsMobile();\r\n const [openMobile, setOpenMobile] = React.useState(false);\r\n\r\n // This is the internal state of the sidebar.\r\n // We use openProp and setOpenProp for control from outside the component.\r\n const [_open, _setOpen] = React.useState(defaultOpen);\r\n const open = openProp ?? _open;\r\n const setOpen = React.useCallback(\r\n (value: boolean | ((value: boolean) => boolean)) => {\r\n const openState = typeof value === \"function\" ? value(open) : value;\r\n if (setOpenProp) {\r\n setOpenProp(openState);\r\n } else {\r\n _setOpen(openState);\r\n }\r\n\r\n // This sets the cookie to keep the sidebar state.\r\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE}`;\r\n },\r\n [setOpenProp, open],\r\n );\r\n\r\n // Helper to toggle the sidebar.\r\n const toggleSidebar = React.useCallback(() => {\r\n return isMobile ? setOpenMobile((open) => !open) : setOpen((open) => !open);\r\n }, [isMobile, setOpen, setOpenMobile]);\r\n\r\n // Adds a keyboard shortcut to toggle the sidebar.\r\n React.useEffect(() => {\r\n const handleKeyDown = (event: KeyboardEvent) => {\r\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\r\n event.preventDefault();\r\n toggleSidebar();\r\n }\r\n };\r\n\r\n window.addEventListener(\"keydown\", handleKeyDown);\r\n return () => window.removeEventListener(\"keydown\", handleKeyDown);\r\n }, [toggleSidebar]);\r\n\r\n // We add a state so that we can do data-state=\"expanded\" or \"collapsed\".\r\n // This makes it easier to style the sidebar with Tailwind classes.\r\n const state = open ? \"expanded\" : \"collapsed\";\r\n\r\n const contextValue = React.useMemo<SidebarContextProps>(\r\n () => ({\r\n state,\r\n open,\r\n setOpen,\r\n isMobile,\r\n openMobile,\r\n setOpenMobile,\r\n toggleSidebar,\r\n }),\r\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar],\r\n );\r\n\r\n return (\r\n <SidebarContext.Provider value={contextValue}>\r\n <TooltipProvider delayDuration={0}>\r\n <div\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH,\r\n \"--sidebar-width-icon\": SIDEBAR_WIDTH_ICON,\r\n ...style,\r\n } as React.CSSProperties\r\n }\r\n className={cn(\"group/sidebar-wrapper has-[[data-variant=inset]]:bg-sidebar flex min-h-svh w-full\", className)}\r\n ref={ref}\r\n {...props}>\r\n {children}\r\n </div>\r\n </TooltipProvider>\r\n </SidebarContext.Provider>\r\n );\r\n});\r\nSidebarProvider.displayName = \"SidebarProvider\";\r\n\r\nconst Sidebar = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n side?: \"left\" | \"right\";\r\n variant?: \"sidebar\" | \"floating\" | \"inset\";\r\n collapsible?: \"offcanvas\" | \"icon\" | \"none\";\r\n }\r\n>(({side = \"left\", variant = \"sidebar\", collapsible = \"offcanvas\", className, children, ...props}, ref) => {\r\n const {isMobile, state, openMobile, setOpenMobile} = useSidebar();\r\n\r\n if (collapsible === \"none\") {\r\n return (\r\n <div\r\n className={cn(\"bg-sidebar text-sidebar-foreground flex h-full w-[--sidebar-width] flex-col\", className)}\r\n ref={ref}\r\n {...props}>\r\n {children}\r\n </div>\r\n );\r\n }\r\n\r\n if (isMobile) {\r\n return (\r\n <Sheet\r\n open={openMobile}\r\n onOpenChange={setOpenMobile}\r\n {...props}>\r\n <SheetContent\r\n data-sidebar='sidebar'\r\n data-mobile='true'\r\n className='bg-sidebar text-sidebar-foreground w-[--sidebar-width] p-0 [&>button]:hidden'\r\n style={\r\n {\r\n \"--sidebar-width\": SIDEBAR_WIDTH_MOBILE,\r\n } as React.CSSProperties\r\n }\r\n side={side}>\r\n <SheetHeader className='sr-only'>\r\n <SheetTitle>Sidebar</SheetTitle>\r\n <SheetDescription>Displays the mobile sidebar.</SheetDescription>\r\n </SheetHeader>\r\n <div className='flex h-full w-full flex-col'>{children}</div>\r\n </SheetContent>\r\n </Sheet>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className='group peer text-sidebar-foreground hidden md:block'\r\n data-state={state}\r\n data-collapsible={state === \"collapsed\" ? collapsible : \"\"}\r\n data-variant={variant}\r\n data-side={side}>\r\n {/* This is what handles the sidebar gap on desktop */}\r\n <div\r\n className={cn(\r\n \"relative w-[--sidebar-width] bg-transparent transition-[width] duration-200 ease-linear\",\r\n \"group-data-[collapsible=offcanvas]:w-0\",\r\n \"group-data-[side=right]:rotate-180\",\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4))]\"\r\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon]\",\r\n )}\r\n />\r\n <div\r\n className={cn(\r\n \"fixed inset-y-0 z-10 hidden h-svh w-[--sidebar-width] transition-[left,right,width] duration-200 ease-linear md:flex\",\r\n side === \"left\"\r\n ? \"left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]\"\r\n : \"right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]\",\r\n // Adjust the padding for floating and inset variants.\r\n variant === \"floating\" || variant === \"inset\"\r\n ? \"p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)_+_theme(spacing.4)_+2px)]\"\r\n : \"group-data-[collapsible=icon]:w-[--sidebar-width-icon] group-data-[side=left]:border-r group-data-[side=right]:border-l\",\r\n className,\r\n )}\r\n {...props}>\r\n <div\r\n data-sidebar='sidebar'\r\n className='bg-sidebar group-data-[variant=floating]:border-sidebar-border flex h-full w-full flex-col group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow'>\r\n {children}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n});\r\nSidebar.displayName = \"Sidebar\";\r\n\r\nconst SidebarTrigger = React.forwardRef<React.ElementRef<typeof Button>, React.ComponentProps<typeof Button>>(\r\n ({className, onClick, ...props}, ref) => {\r\n const {toggleSidebar} = useSidebar();\r\n\r\n return (\r\n <Button\r\n ref={ref}\r\n data-sidebar='trigger'\r\n variant='ghost'\r\n size='icon'\r\n className={cn(\"h-7 w-7\", className)}\r\n onClick={(event) => {\r\n onClick?.(event);\r\n toggleSidebar();\r\n }}\r\n {...props}>\r\n <PanelLeft />\r\n <span className='sr-only'>Toggle Sidebar</span>\r\n </Button>\r\n );\r\n },\r\n);\r\nSidebarTrigger.displayName = \"SidebarTrigger\";\r\n\r\nconst SidebarRail = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\">>(({className, ...props}, ref) => {\r\n const {toggleSidebar} = useSidebar();\r\n\r\n return (\r\n <button\r\n ref={ref}\r\n data-sidebar='rail'\r\n aria-label='Toggle Sidebar'\r\n tabIndex={-1}\r\n onClick={toggleSidebar}\r\n title='Toggle Sidebar'\r\n className={cn(\r\n \"hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex\",\r\n \"[[data-side=left]_&]:cursor-w-resize [[data-side=right]_&]:cursor-e-resize\",\r\n \"[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize\",\r\n \"group-data-[collapsible=offcanvas]:hover:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full\",\r\n \"[[data-side=left][data-collapsible=offcanvas]_&]:-right-2\",\r\n \"[[data-side=right][data-collapsible=offcanvas]_&]:-left-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarRail.displayName = \"SidebarRail\";\r\n\r\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<\"main\">>(({className, ...props}, ref) => {\r\n return (\r\n <main\r\n ref={ref}\r\n className={cn(\r\n \"relative flex w-full flex-1 flex-col bg-white dark:bg-neutral-950\",\r\n \"md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInset.displayName = \"SidebarInset\";\r\n\r\nconst SidebarInput = React.forwardRef<React.ElementRef<typeof Input>, React.ComponentProps<typeof Input>>(({className, ...props}, ref) => {\r\n return (\r\n <Input\r\n ref={ref}\r\n data-sidebar='input'\r\n className={cn(\"focus-visible:ring-sidebar-ring h-8 w-full bg-white shadow-none focus-visible:ring-2 dark:bg-neutral-950\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarInput.displayName = \"SidebarInput\";\r\n\r\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='header'\r\n className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarHeader.displayName = \"SidebarHeader\";\r\n\r\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='footer'\r\n className={cn(\"flex flex-col gap-2 p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarFooter.displayName = \"SidebarFooter\";\r\n\r\nconst SidebarSeparator = React.forwardRef<React.ElementRef<typeof Separator>, React.ComponentProps<typeof Separator>>(\r\n ({className, ...props}, ref) => {\r\n return (\r\n <Separator\r\n ref={ref}\r\n data-sidebar='separator'\r\n className={cn(\"bg-sidebar-border mx-2 w-auto\", className)}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarSeparator.displayName = \"SidebarSeparator\";\r\n\r\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='content'\r\n className={cn(\"flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarContent.displayName = \"SidebarContent\";\r\n\r\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => {\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='group'\r\n className={cn(\"relative flex w-full min-w-0 flex-col p-2\", className)}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarGroup.displayName = \"SidebarGroup\";\r\n\r\nconst SidebarGroupLabel = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\"> & {asChild?: boolean}>(\r\n ({className, asChild = false, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"div\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='group-label'\r\n className={cn(\r\n \"text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium transition-[margin,opacity] duration-200 ease-linear outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n \"group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupLabel.displayName = \"SidebarGroupLabel\";\r\n\r\nconst SidebarGroupAction = React.forwardRef<HTMLButtonElement, React.ComponentProps<\"button\"> & {asChild?: boolean}>(\r\n ({className, asChild = false, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='group-action'\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n },\r\n);\r\nSidebarGroupAction.displayName = \"SidebarGroupAction\";\r\n\r\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar='group-content'\r\n className={cn(\"w-full text-sm\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarGroupContent.displayName = \"SidebarGroupContent\";\r\n\r\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({className, ...props}, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar='menu'\r\n className={cn(\"flex w-full min-w-0 flex-col gap-1\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarMenu.displayName = \"SidebarMenu\";\r\n\r\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({className, ...props}, ref) => (\r\n <li\r\n ref={ref}\r\n data-sidebar='menu-item'\r\n className={cn(\"group/menu-item relative\", className)}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuItem.displayName = \"SidebarMenuItem\";\r\n\r\nconst sidebarMenuButtonVariants = cva(\r\n \"peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm outline-none ring-sidebar-ring transition-[width,height,padding] 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 group-has-[[data-sidebar=menu-action]]/menu-item:pr-8 aria-disabled:pointer-events-none aria-disabled:opacity-50 data-[active=true]:bg-sidebar-accent data-[active=true]:font-medium data-[active=true]:text-sidebar-accent-foreground data-[state=open]:hover:bg-sidebar-accent data-[state=open]:hover:text-sidebar-accent-foreground group-data-[collapsible=icon]:!size-8 group-data-[collapsible=icon]:!p-2 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\r\n {\r\n variants: {\r\n variant: {\r\n default: \"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground\",\r\n outline:\r\n \"bg-white shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))] dark:bg-neutral-950\",\r\n },\r\n size: {\r\n default: \"h-8 text-sm\",\r\n sm: \"h-7 text-xs\",\r\n lg: \"h-12 text-sm group-data-[collapsible=icon]:!p-0\",\r\n },\r\n },\r\n defaultVariants: {\r\n variant: \"default\",\r\n size: \"default\",\r\n },\r\n },\r\n);\r\n\r\nconst SidebarMenuButton = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n isActive?: boolean;\r\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\r\n } & VariantProps<typeof sidebarMenuButtonVariants>\r\n>(({asChild = false, isActive = false, variant = \"default\", size = \"default\", tooltip, className, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n const {isMobile, state} = useSidebar();\r\n\r\n const button = (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='menu-button'\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(sidebarMenuButtonVariants({variant, size}), className)}\r\n {...props}\r\n />\r\n );\r\n\r\n if (!tooltip) {\r\n return button;\r\n }\r\n\r\n if (typeof tooltip === \"string\") {\r\n tooltip = {\r\n children: tooltip,\r\n };\r\n }\r\n\r\n return (\r\n <Tooltip>\r\n <TooltipTrigger asChild>{button}</TooltipTrigger>\r\n <TooltipContent\r\n side='right'\r\n align='center'\r\n hidden={state !== \"collapsed\" || isMobile}\r\n {...tooltip}\r\n />\r\n </Tooltip>\r\n );\r\n});\r\nSidebarMenuButton.displayName = \"SidebarMenuButton\";\r\n\r\nconst SidebarMenuAction = React.forwardRef<\r\n HTMLButtonElement,\r\n React.ComponentProps<\"button\"> & {\r\n asChild?: boolean;\r\n showOnHover?: boolean;\r\n }\r\n>(({className, asChild = false, showOnHover = false, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"button\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='menu-action'\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 transition-transform outline-none focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0\",\r\n // Increases the hit area of the button on mobile.\r\n \"after:absolute after:-inset-2 after:md:hidden\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n showOnHover\r\n && \"peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuAction.displayName = \"SidebarMenuAction\";\r\n\r\nconst SidebarMenuBadge = React.forwardRef<HTMLDivElement, React.ComponentProps<\"div\">>(({className, ...props}, ref) => (\r\n <div\r\n ref={ref}\r\n data-sidebar='menu-badge'\r\n className={cn(\r\n \"text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none\",\r\n \"peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground\",\r\n \"peer-data-[size=sm]/menu-button:top-1\",\r\n \"peer-data-[size=default]/menu-button:top-1.5\",\r\n \"peer-data-[size=lg]/menu-button:top-2.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuBadge.displayName = \"SidebarMenuBadge\";\r\n\r\nconst SidebarMenuSkeleton = React.forwardRef<\r\n HTMLDivElement,\r\n React.ComponentProps<\"div\"> & {\r\n showIcon?: boolean;\r\n }\r\n>(({className, showIcon = false, ...props}, ref) => {\r\n // Random width between 50 to 90%.\r\n const width = React.useMemo(() => {\r\n return `${Math.floor(Math.random() * 40) + 50}%`;\r\n }, []);\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n data-sidebar='menu-skeleton'\r\n className={cn(\"flex h-8 items-center gap-2 rounded-md px-2\", className)}\r\n {...props}>\r\n {showIcon && (\r\n <Skeleton\r\n className='size-4 rounded-md'\r\n data-sidebar='menu-skeleton-icon'\r\n />\r\n )}\r\n <Skeleton\r\n className='h-4 max-w-[--skeleton-width] flex-1'\r\n data-sidebar='menu-skeleton-text'\r\n style={\r\n {\r\n \"--skeleton-width\": width,\r\n } as React.CSSProperties\r\n }\r\n />\r\n </div>\r\n );\r\n});\r\nSidebarMenuSkeleton.displayName = \"SidebarMenuSkeleton\";\r\n\r\nconst SidebarMenuSub = React.forwardRef<HTMLUListElement, React.ComponentProps<\"ul\">>(({className, ...props}, ref) => (\r\n <ul\r\n ref={ref}\r\n data-sidebar='menu-sub'\r\n className={cn(\r\n \"border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l px-2.5 py-0.5\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuSub.displayName = \"SidebarMenuSub\";\r\n\r\nconst SidebarMenuSubItem = React.forwardRef<HTMLLIElement, React.ComponentProps<\"li\">>(({...props}, ref) => (\r\n <li\r\n ref={ref}\r\n {...props}\r\n />\r\n));\r\nSidebarMenuSubItem.displayName = \"SidebarMenuSubItem\";\r\n\r\nconst SidebarMenuSubButton = React.forwardRef<\r\n HTMLAnchorElement,\r\n React.ComponentProps<\"a\"> & {\r\n asChild?: boolean;\r\n size?: \"sm\" | \"md\";\r\n isActive?: boolean;\r\n }\r\n>(({asChild = false, size = \"md\", isActive, className, ...props}, ref) => {\r\n const Comp = asChild ? Slot : \"a\";\r\n\r\n return (\r\n <Comp\r\n ref={ref}\r\n data-sidebar='menu-sub-button'\r\n data-size={size}\r\n data-active={isActive}\r\n className={cn(\r\n \"text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-none focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0\",\r\n \"data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground\",\r\n size === \"sm\" && \"text-xs\",\r\n size === \"md\" && \"text-sm\",\r\n \"group-data-[collapsible=icon]:hidden\",\r\n className,\r\n )}\r\n {...props}\r\n />\r\n );\r\n});\r\nSidebarMenuSubButton.displayName = \"SidebarMenuSubButton\";\r\n\r\nexport {\r\n Sidebar,\r\n SidebarContent,\r\n SidebarFooter,\r\n SidebarGroup,\r\n SidebarGroupAction,\r\n SidebarGroupContent,\r\n SidebarGroupLabel,\r\n SidebarHeader,\r\n SidebarInput,\r\n SidebarInset,\r\n SidebarMenu,\r\n SidebarMenuAction,\r\n SidebarMenuBadge,\r\n SidebarMenuButton,\r\n SidebarMenuItem,\r\n SidebarMenuSkeleton,\r\n SidebarMenuSub,\r\n SidebarMenuSubButton,\r\n SidebarMenuSubItem,\r\n SidebarProvider,\r\n SidebarRail,\r\n SidebarSeparator,\r\n SidebarTrigger,\r\n useSidebar,\r\n};\r\n"],"names":["SIDEBAR_COOKIE_NAME","SIDEBAR_COOKIE_MAX_AGE","SIDEBAR_WIDTH","SIDEBAR_WIDTH_MOBILE","SIDEBAR_WIDTH_ICON","SIDEBAR_KEYBOARD_SHORTCUT","SidebarContext","React","useSidebar","context","Error","SidebarProvider","defaultOpen","openProp","setOpenProp","className","style","children","props","ref","isMobile","useIsMobile","openMobile","setOpenMobile","_open","_setOpen","open","setOpen","value","openState","document","toggleSidebar","handleKeyDown","event","window","state","contextValue","TooltipProvider","cn","Sidebar","side","variant","collapsible","Sheet","SheetContent","SheetHeader","SheetTitle","SheetDescription","SidebarTrigger","onClick","Button","PanelLeft","SidebarRail","SidebarInset","SidebarInput","Input","SidebarHeader","SidebarFooter","SidebarSeparator","Separator","SidebarContent","SidebarGroup","SidebarGroupLabel","asChild","Comp","Slot","SidebarGroupAction","SidebarGroupContent","SidebarMenu","SidebarMenuItem","sidebarMenuButtonVariants","cva","SidebarMenuButton","isActive","size","tooltip","button","Tooltip","TooltipTrigger","TooltipContent","SidebarMenuAction","showOnHover","SidebarMenuBadge","SidebarMenuSkeleton","showIcon","width","Math","Skeleton","SidebarMenuSub","SidebarMenuSubItem","SidebarMenuSubButton"],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
import * as React from "react";
|
|
2
|
-
declare function Skeleton({ className, ...props }: React.
|
|
2
|
+
declare function Skeleton({ className, ...props }: Readonly<React.HTMLAttributes<HTMLDivElement>>): import("react/jsx-runtime").JSX.Element;
|
|
3
3
|
export { Skeleton };
|
|
4
4
|
//# sourceMappingURL=skeleton.d.ts.map
|