@codefast/ui 0.3.11 → 0.3.12-canary.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 +15 -0
- package/README.md +4 -0
- package/dist/components/accordion.d.ts +11 -29
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +10 -37
- package/dist/components/alert-dialog.d.ts +25 -60
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +16 -69
- package/dist/components/alert.d.ts +16 -27
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +22 -30
- package/dist/components/aspect-ratio.d.ts +5 -8
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +5 -7
- package/dist/components/avatar.d.ts +7 -17
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +7 -18
- package/dist/components/badge.d.ts +15 -21
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +23 -20
- package/dist/components/breadcrumb.d.ts +13 -35
- package/dist/components/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb.js +13 -49
- package/dist/components/button-group.d.ts +15 -29
- package/dist/components/button-group.d.ts.map +1 -0
- package/dist/components/button-group.js +22 -27
- package/dist/components/button.d.ts +26 -35
- package/dist/components/button.d.ts.map +1 -0
- package/dist/components/button.js +43 -51
- package/dist/components/calendar.d.ts +10 -24
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +75 -92
- package/dist/components/card.d.ts +11 -34
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +11 -39
- package/dist/components/carousel.d.ts +25 -55
- package/dist/components/carousel.d.ts.map +1 -0
- package/dist/components/carousel.js +82 -114
- package/dist/components/chart.d.ts +37 -72
- package/dist/components/chart.d.ts.map +1 -0
- package/dist/components/chart.js +161 -150
- package/dist/components/checkbox-cards.d.ts +9 -15
- package/dist/components/checkbox-cards.d.ts.map +1 -0
- package/dist/components/checkbox-cards.js +8 -22
- package/dist/components/checkbox-group.d.ts +9 -16
- package/dist/components/checkbox-group.d.ts.map +1 -0
- package/dist/components/checkbox-group.js +7 -19
- package/dist/components/checkbox.d.ts +5 -9
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +6 -14
- package/dist/components/collapsible.d.ts +7 -14
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +7 -15
- package/dist/components/command.d.ts +24 -55
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +18 -69
- package/dist/components/context-menu.d.ts +23 -72
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +21 -89
- package/dist/components/dialog.d.ts +23 -53
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +20 -72
- package/dist/components/drawer.d.ts +29 -60
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +16 -58
- package/dist/components/dropdown-menu.d.ts +23 -73
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +21 -96
- package/dist/components/empty.d.ts +16 -37
- package/dist/components/empty.d.ts.map +1 -0
- package/dist/components/empty.js +24 -44
- package/dist/components/field.d.ts +26 -63
- package/dist/components/field.d.ts.map +1 -0
- package/dist/components/field.js +46 -89
- package/dist/components/form.d.ts +16 -37
- package/dist/components/form.d.ts.map +1 -0
- package/dist/components/form.js +50 -66
- package/dist/components/hover-card.d.ts +8 -21
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +8 -23
- package/dist/components/input-group.d.ts +29 -53
- package/dist/components/input-group.d.ts.map +1 -0
- package/dist/components/input-group.js +59 -66
- package/dist/components/input-number.d.ts +8 -28
- package/dist/components/input-number.d.ts.map +1 -0
- package/dist/components/input-number.js +14 -55
- package/dist/components/input-otp.d.ts +11 -24
- package/dist/components/input-otp.d.ts.map +1 -0
- package/dist/components/input-otp.js +13 -34
- package/dist/components/input-password.d.ts +6 -12
- package/dist/components/input-password.d.ts.map +1 -0
- package/dist/components/input-password.js +10 -31
- package/dist/components/input-search.d.ts +9 -18
- package/dist/components/input-search.d.ts.map +1 -0
- package/dist/components/input-search.js +16 -44
- package/dist/components/input.d.ts +5 -10
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +5 -9
- package/dist/components/item.d.ts +33 -69
- package/dist/components/item.d.ts.map +1 -0
- package/dist/components/item.js +47 -90
- package/dist/components/kbd.d.ts +6 -13
- package/dist/components/kbd.d.ts.map +1 -0
- package/dist/components/kbd.js +6 -13
- package/dist/components/label.d.ts +5 -9
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +5 -8
- package/dist/components/menubar.d.ts +24 -80
- package/dist/components/menubar.d.ts.map +1 -0
- package/dist/components/menubar.js +23 -99
- package/dist/components/native-select.d.ts +7 -16
- package/dist/components/native-select.d.ts.map +1 -0
- package/dist/components/native-select.js +7 -25
- package/dist/components/navigation-menu.d.ts +13 -36
- package/dist/components/navigation-menu.d.ts.map +1 -0
- package/dist/components/navigation-menu.js +25 -61
- package/dist/components/pagination.d.ts +15 -35
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +13 -55
- package/dist/components/popover.d.ts +9 -24
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +9 -27
- package/dist/components/progress-circle.d.ts +89 -106
- package/dist/components/progress-circle.d.ts.map +1 -0
- package/dist/components/progress-circle.js +70 -103
- package/dist/components/progress.d.ts +5 -10
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +7 -13
- package/dist/components/radio-cards.d.ts +5 -10
- package/dist/components/radio-cards.d.ts.map +1 -0
- package/dist/components/radio-cards.js +7 -21
- package/dist/components/radio-group.d.ts +6 -13
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +6 -17
- package/dist/components/radio.d.ts +6 -12
- package/dist/components/radio.d.ts.map +1 -0
- package/dist/components/radio.js +5 -10
- package/dist/components/resizable.d.ts +8 -18
- package/dist/components/resizable.d.ts.map +1 -0
- package/dist/components/resizable.js +7 -21
- package/dist/components/scroll-area.d.ts +21 -33
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/scroll-area.js +64 -84
- package/dist/components/select.d.ts +17 -50
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +26 -78
- package/dist/components/separator.d.ts +20 -29
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +27 -36
- package/dist/components/sheet.d.ts +30 -62
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +36 -80
- package/dist/components/sidebar.d.ts +67 -160
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar.js +166 -301
- package/dist/components/skeleton.d.ts +5 -9
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +5 -8
- package/dist/components/slider.d.ts +5 -13
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +12 -34
- package/dist/components/sonner.d.ts +8 -10
- package/dist/components/sonner.d.ts.map +1 -0
- package/dist/components/sonner.js +13 -16
- package/dist/components/spinner.d.ts +6 -12
- package/dist/components/spinner.d.ts.map +1 -0
- package/dist/components/spinner.js +20 -33
- package/dist/components/switch.d.ts +5 -9
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +5 -12
- package/dist/components/table.d.ts +12 -37
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +12 -47
- package/dist/components/tabs.d.ts +8 -21
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +8 -23
- package/dist/components/textarea.d.ts +5 -9
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +5 -8
- package/dist/components/toggle-group.d.ts +10 -24
- package/dist/components/toggle-group.d.ts.map +1 -0
- package/dist/components/toggle-group.js +20 -38
- package/dist/components/toggle.d.ts +18 -25
- package/dist/components/toggle.d.ts.map +1 -0
- package/dist/components/toggle.js +24 -29
- package/dist/components/tooltip.d.ts +9 -24
- package/dist/components/tooltip.d.ts.map +1 -0
- package/dist/components/tooltip.js +9 -28
- package/dist/hooks/use-animated-value.d.ts +2 -4
- package/dist/hooks/use-animated-value.d.ts.map +1 -0
- package/dist/hooks/use-animated-value.js +67 -58
- package/dist/hooks/use-copy-to-clipboard.d.ts +6 -11
- package/dist/hooks/use-copy-to-clipboard.d.ts.map +1 -0
- package/dist/hooks/use-copy-to-clipboard.js +42 -39
- package/dist/hooks/use-is-mobile.d.ts +2 -4
- package/dist/hooks/use-is-mobile.d.ts.map +1 -0
- package/dist/hooks/use-is-mobile.js +20 -23
- package/dist/hooks/use-media-query.d.ts +2 -4
- package/dist/hooks/use-media-query.d.ts.map +1 -0
- package/dist/hooks/use-media-query.js +49 -46
- package/dist/hooks/use-mutation-observer.d.ts +3 -6
- package/dist/hooks/use-mutation-observer.d.ts.map +1 -0
- package/dist/hooks/use-mutation-observer.js +33 -34
- package/dist/hooks/use-pagination.d.ts +15 -22
- package/dist/hooks/use-pagination.d.ts.map +1 -0
- package/dist/hooks/use-pagination.js +99 -99
- package/dist/index.d.ts +131 -69
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +68 -69
- package/dist/primitives/checkbox-group.d.ts +84 -105
- package/dist/primitives/checkbox-group.d.ts.map +1 -0
- package/dist/primitives/checkbox-group.js +91 -105
- package/dist/primitives/input-number.d.ts +41 -51
- package/dist/primitives/input-number.d.ts.map +1 -0
- package/dist/primitives/input-number.js +417 -473
- package/dist/primitives/input.d.ts +43 -48
- package/dist/primitives/input.d.ts.map +1 -0
- package/dist/primitives/input.js +67 -66
- package/dist/primitives/progress-circle.d.ts +49 -79
- package/dist/primitives/progress-circle.d.ts.map +1 -0
- package/dist/primitives/progress-circle.js +134 -149
- package/package.json +17 -10
- package/{dist → src}/css/preset.css +1 -1
- /package/{dist → src}/css/amber.css +0 -0
- /package/{dist → src}/css/blue.css +0 -0
- /package/{dist → src}/css/cyan.css +0 -0
- /package/{dist → src}/css/emerald.css +0 -0
- /package/{dist → src}/css/fuchsia.css +0 -0
- /package/{dist → src}/css/gray.css +0 -0
- /package/{dist → src}/css/green.css +0 -0
- /package/{dist → src}/css/indigo.css +0 -0
- /package/{dist → src}/css/lime.css +0 -0
- /package/{dist → src}/css/neutral.css +0 -0
- /package/{dist → src}/css/orange.css +0 -0
- /package/{dist → src}/css/pink.css +0 -0
- /package/{dist → src}/css/purple.css +0 -0
- /package/{dist → src}/css/red.css +0 -0
- /package/{dist → src}/css/rose.css +0 -0
- /package/{dist → src}/css/sky.css +0 -0
- /package/{dist → src}/css/slate.css +0 -0
- /package/{dist → src}/css/stone.css +0 -0
- /package/{dist → src}/css/style.css +0 -0
- /package/{dist → src}/css/teal.css +0 -0
- /package/{dist → src}/css/violet.css +0 -0
- /package/{dist → src}/css/yellow.css +0 -0
- /package/{dist → src}/css/zinc.css +0 -0
|
@@ -1,359 +1,224 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import {
|
|
3
|
-
import { Separator } from "./separator.js";
|
|
4
|
-
import { Input } from "./input.js";
|
|
5
|
-
import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "./sheet.js";
|
|
6
|
-
import { Skeleton } from "./skeleton.js";
|
|
7
|
-
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./tooltip.js";
|
|
8
|
-
import { useIsMobile } from "../hooks/use-is-mobile.js";
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
3
|
import { cn, tv } from "@codefast/tailwind-variants";
|
|
4
|
+
import { createContext } from "@radix-ui/react-context";
|
|
10
5
|
import { Slot } from "@radix-ui/react-slot";
|
|
11
6
|
import { PanelLeftIcon } from "lucide-react";
|
|
12
|
-
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
7
|
import { useCallback, useEffect, useState } from "react";
|
|
14
|
-
import {
|
|
15
|
-
|
|
8
|
+
import { Button } from "#components/button";
|
|
9
|
+
import { Input } from "#components/input";
|
|
10
|
+
import { Separator } from "#components/separator";
|
|
11
|
+
import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "#components/sheet";
|
|
12
|
+
import { Skeleton } from "#components/skeleton";
|
|
13
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "#components/tooltip";
|
|
14
|
+
import { useIsMobile } from "#hooks/use-is-mobile";
|
|
15
|
+
/* -----------------------------------------------------------------------------
|
|
16
|
+
* Variant: SidebarMenuButton
|
|
17
|
+
* -------------------------------------------------------------------------- */
|
|
16
18
|
const sidebarMenuButtonVariants = tv({
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
19
|
+
base: "peer/menu-button flex w-full items-center gap-2 overflow-hidden rounded-md p-2 text-left text-sm ring-sidebar-ring outline-hidden transition-[width,height,padding] group-has-data-[sidebar=menu-action]/menu-item:pr-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-3 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-[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 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0",
|
|
20
|
+
defaultVariants: {
|
|
21
|
+
size: "md",
|
|
22
|
+
variant: "default",
|
|
23
|
+
},
|
|
24
|
+
variants: {
|
|
25
|
+
size: {
|
|
26
|
+
sm: "h-7 text-xs",
|
|
27
|
+
md: "h-8 text-sm",
|
|
28
|
+
lg: "h-12 text-sm group-data-[collapsible=icon]:p-0!",
|
|
29
|
+
},
|
|
30
|
+
variant: {
|
|
31
|
+
default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
32
|
+
outline: "bg-background shadow-[0_0_0_1px_hsl(var(--sidebar-border))] hover:bg-sidebar-accent hover:text-sidebar-accent-foreground hover:shadow-[0_0_0_1px_hsl(var(--sidebar-accent))]",
|
|
33
|
+
},
|
|
34
|
+
},
|
|
33
35
|
});
|
|
34
36
|
const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
35
|
-
const SIDEBAR_COOKIE_MAX_AGE =
|
|
37
|
+
const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 7;
|
|
36
38
|
const SIDEBAR_WIDTH = "16rem";
|
|
37
39
|
const SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
38
40
|
const SIDEBAR_WIDTH_ICON = "3.0625rem";
|
|
39
41
|
const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
40
|
-
|
|
42
|
+
/* -----------------------------------------------------------------------------
|
|
43
|
+
* Context: SidebarProvider
|
|
44
|
+
* -------------------------------------------------------------------------- */
|
|
45
|
+
const SIDEBAR_PROVIDER_NAME = "SidebarProvider";
|
|
46
|
+
const [SidebarContextProvider, useSidebar] = createContext(SIDEBAR_PROVIDER_NAME);
|
|
41
47
|
function SidebarProvider({ children, className, defaultOpen = true, onOpenChange: setOpenProperty, open: openProperty, style, ...props }) {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
48
|
+
const isMobile = useIsMobile();
|
|
49
|
+
const [openMobile, setOpenMobile] = useState(false);
|
|
50
|
+
// This is the internal state of the sidebar.
|
|
51
|
+
// We use openProp and setOpenProp for control from outside the component.
|
|
52
|
+
const [isOpen, setIsOpen] = useState(defaultOpen);
|
|
53
|
+
const open = openProperty ?? isOpen;
|
|
54
|
+
const setOpen = useCallback((value) => {
|
|
55
|
+
const openState = typeof value === "function" ? value(open) : value;
|
|
56
|
+
if (setOpenProperty) {
|
|
57
|
+
setOpenProperty(openState);
|
|
58
|
+
}
|
|
59
|
+
else {
|
|
60
|
+
setIsOpen(openState);
|
|
61
|
+
}
|
|
62
|
+
// eslint-disable-next-line unicorn/no-document-cookie
|
|
63
|
+
document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState.toString()}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE.toString()}`;
|
|
64
|
+
}, [setOpenProperty, open]);
|
|
65
|
+
// Helper to toggle the sidebar.
|
|
66
|
+
const toggleSidebar = useCallback(() => {
|
|
67
|
+
if (isMobile) {
|
|
68
|
+
setOpenMobile((currentValue) => !currentValue);
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
setOpen((currentValue) => !currentValue);
|
|
72
|
+
}
|
|
73
|
+
}, [isMobile, setOpen]);
|
|
74
|
+
// Adds a keyboard shortcut to toggle the sidebar.
|
|
75
|
+
useEffect(() => {
|
|
76
|
+
const handleKeyDown = (event) => {
|
|
77
|
+
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
78
|
+
event.preventDefault();
|
|
79
|
+
toggleSidebar();
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
83
|
+
return () => {
|
|
84
|
+
window.removeEventListener("keydown", handleKeyDown);
|
|
85
|
+
};
|
|
86
|
+
}, [toggleSidebar]);
|
|
87
|
+
// We add a state so that we can do data-state="expanded" or "collapsed".
|
|
88
|
+
// This makes it easier to style the sidebar with Tailwind classes.
|
|
89
|
+
const state = open ? "expanded" : "collapsed";
|
|
90
|
+
return (_jsx(SidebarContextProvider, { isMobile: isMobile, open: open, openMobile: openMobile, setOpen: setOpen, setOpenMobile: setOpenMobile, state: state, toggleSidebar: toggleSidebar, children: _jsx(TooltipProvider, { delayDuration: 0, children: _jsx("div", { className: cn("group/sidebar-wrapper flex min-h-svh w-full has-data-[variant=inset]:bg-sidebar", className), "data-slot": "sidebar-wrapper", style: {
|
|
91
|
+
"--sidebar-width": SIDEBAR_WIDTH,
|
|
92
|
+
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
93
|
+
...style,
|
|
94
|
+
}, ...props, children: children }) }) }));
|
|
95
|
+
}
|
|
96
|
+
/* -----------------------------------------------------------------------------
|
|
97
|
+
* Component: Sidebar
|
|
98
|
+
* -------------------------------------------------------------------------- */
|
|
92
99
|
const SIDEBAR_NAME = "Sidebar";
|
|
93
100
|
function Sidebar({ children, className, collapsible = "offcanvas", side = "left", variant = "sidebar", ...props }) {
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
className: "flex h-full w-full flex-col",
|
|
117
|
-
children
|
|
118
|
-
})]
|
|
119
|
-
})
|
|
120
|
-
});
|
|
121
|
-
return /* @__PURE__ */ jsxs("div", {
|
|
122
|
-
className: cn("group peer hidden text-sidebar-foreground md:block", className),
|
|
123
|
-
"data-collapsible": state === "collapsed" ? collapsible : "",
|
|
124
|
-
"data-side": side,
|
|
125
|
-
"data-slot": "sidebar",
|
|
126
|
-
"data-state": state,
|
|
127
|
-
"data-variant": variant,
|
|
128
|
-
children: [/* @__PURE__ */ jsx("div", {
|
|
129
|
-
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", variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"),
|
|
130
|
-
"data-slot": "sidebar-gap"
|
|
131
|
-
}), /* @__PURE__ */ jsx("div", {
|
|
132
|
-
className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex", side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", variant === "floating" || variant === "inset" ? "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),
|
|
133
|
-
"data-slot": "sidebar-container",
|
|
134
|
-
...props,
|
|
135
|
-
children: /* @__PURE__ */ jsx("div", {
|
|
136
|
-
className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm",
|
|
137
|
-
"data-sidebar": "sidebar",
|
|
138
|
-
"data-slot": "sidebar-inner",
|
|
139
|
-
children
|
|
140
|
-
})
|
|
141
|
-
})]
|
|
142
|
-
});
|
|
143
|
-
}
|
|
101
|
+
const { isMobile, openMobile, setOpenMobile, state } = useSidebar(SIDEBAR_NAME);
|
|
102
|
+
if (collapsible === "none") {
|
|
103
|
+
return (_jsx("div", { className: cn("flex h-full w-(--sidebar-width) flex-col bg-sidebar text-sidebar-foreground", className), "data-slot": "sidebar", ...props, children: children }));
|
|
104
|
+
}
|
|
105
|
+
if (isMobile) {
|
|
106
|
+
return (_jsx(Sheet, { open: openMobile, onOpenChange: setOpenMobile, ...props, children: _jsxs(SheetContent, { className: "w-(--sidebar-width) bg-sidebar p-0 text-sidebar-foreground [&>button]:hidden", "data-mobile": "true", "data-sidebar": "sidebar", "data-slot": "sidebar", side: side, style: {
|
|
107
|
+
"--sidebar-width": SIDEBAR_WIDTH_MOBILE,
|
|
108
|
+
}, children: [_jsxs(SheetHeader, { className: "sr-only", children: [_jsx(SheetTitle, { children: "Sidebar" }), _jsx(SheetDescription, { children: "Displays the mobile sidebar." })] }), _jsx("div", { className: "flex h-full w-full flex-col", children: children })] }) }));
|
|
109
|
+
}
|
|
110
|
+
return (_jsxs("div", { className: cn("group peer hidden text-sidebar-foreground md:block", className), "data-collapsible": state === "collapsed" ? collapsible : "", "data-side": side, "data-slot": "sidebar", "data-state": state, "data-variant": variant, children: [_jsx("div", { 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", variant === "floating" || variant === "inset"
|
|
111
|
+
? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]"
|
|
112
|
+
: "group-data-[collapsible=icon]:w-(--sidebar-width-icon)"), "data-slot": "sidebar-gap" }), _jsx("div", { className: cn("fixed inset-y-0 z-10 hidden h-svh w-(--sidebar-width) transition-[left,right,width] duration-200 ease-linear md:flex", side === "left"
|
|
113
|
+
? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]"
|
|
114
|
+
: "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]",
|
|
115
|
+
// Adjust the padding for floating and inset variants.
|
|
116
|
+
variant === "floating" || variant === "inset"
|
|
117
|
+
? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]"
|
|
118
|
+
: "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className), "data-slot": "sidebar-container", ...props, children: _jsx("div", { className: "flex h-full w-full flex-col bg-sidebar group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:shadow-sm", "data-sidebar": "sidebar", "data-slot": "sidebar-inner", children: children }) })] }));
|
|
119
|
+
}
|
|
120
|
+
/* -----------------------------------------------------------------------------
|
|
121
|
+
* Component: SidebarTrigger
|
|
122
|
+
* -------------------------------------------------------------------------- */
|
|
144
123
|
const SIDEBAR_TRIGGER_NAME = "SidebarTrigger";
|
|
145
124
|
function SidebarTrigger({ className, onClick, ...props }) {
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
toggleSidebar();
|
|
156
|
-
},
|
|
157
|
-
...props,
|
|
158
|
-
children: [/* @__PURE__ */ jsx(PanelLeftIcon, {}), /* @__PURE__ */ jsx("span", {
|
|
159
|
-
className: "sr-only",
|
|
160
|
-
children: "Toggle Sidebar"
|
|
161
|
-
})]
|
|
162
|
-
});
|
|
163
|
-
}
|
|
125
|
+
const { toggleSidebar } = useSidebar(SIDEBAR_TRIGGER_NAME);
|
|
126
|
+
return (_jsxs(Button, { className: cn("size-7", className), "data-sidebar": "trigger", "data-slot": "sidebar-trigger", size: "icon", variant: "ghost", onClick: (event) => {
|
|
127
|
+
onClick?.(event);
|
|
128
|
+
toggleSidebar();
|
|
129
|
+
}, ...props, children: [_jsx(PanelLeftIcon, {}), _jsx("span", { className: "sr-only", children: "Toggle Sidebar" })] }));
|
|
130
|
+
}
|
|
131
|
+
/* -----------------------------------------------------------------------------
|
|
132
|
+
* Component: SidebarRail
|
|
133
|
+
* -------------------------------------------------------------------------- */
|
|
164
134
|
const SIDEBAR_RAIL_NAME = "SidebarRail";
|
|
165
135
|
function SidebarRail({ className, ...props }) {
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
className: cn("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[collapsible=offcanvas]:translate-x-0 group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-0.5 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", className),
|
|
169
|
-
"data-sidebar": "rail",
|
|
170
|
-
"data-slot": "sidebar-rail",
|
|
171
|
-
title: "Toggle Sidebar",
|
|
172
|
-
type: "button",
|
|
173
|
-
onClick: toggleSidebar,
|
|
174
|
-
...props
|
|
175
|
-
});
|
|
136
|
+
const { toggleSidebar } = useSidebar(SIDEBAR_RAIL_NAME);
|
|
137
|
+
return (_jsx("button", { className: cn("absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-linear group-data-[collapsible=offcanvas]:translate-x-0 group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-0.5 group-data-[collapsible=offcanvas]:after:left-full hover:group-data-[collapsible=offcanvas]:bg-sidebar hover:after:bg-sidebar-border in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize sm:flex [[data-side=left][data-collapsible=offcanvas]_&]:-right-2 [[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-collapsible=offcanvas]_&]:-left-2 [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", className), "data-sidebar": "rail", "data-slot": "sidebar-rail", title: "Toggle Sidebar", type: "button", onClick: toggleSidebar, ...props }));
|
|
176
138
|
}
|
|
177
139
|
function SidebarInset({ className, ...props }) {
|
|
178
|
-
|
|
179
|
-
className: cn("relative flex w-full min-w-0 flex-1 flex-col bg-background 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", className),
|
|
180
|
-
"data-slot": "sidebar-inset",
|
|
181
|
-
...props
|
|
182
|
-
});
|
|
140
|
+
return (_jsx("main", { className: cn("relative flex w-full min-w-0 flex-1 flex-col bg-background 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", className), "data-slot": "sidebar-inset", ...props }));
|
|
183
141
|
}
|
|
184
142
|
function SidebarInput({ className, ...props }) {
|
|
185
|
-
|
|
186
|
-
className: cn("h-8 w-full bg-background shadow-none", className),
|
|
187
|
-
"data-sidebar": "input",
|
|
188
|
-
"data-slot": "sidebar-input",
|
|
189
|
-
...props
|
|
190
|
-
});
|
|
143
|
+
return (_jsx(Input, { className: cn("h-8 w-full bg-background shadow-none", className), "data-sidebar": "input", "data-slot": "sidebar-input", ...props }));
|
|
191
144
|
}
|
|
192
145
|
function SidebarHeader({ className, ...props }) {
|
|
193
|
-
|
|
194
|
-
className: cn("flex flex-col gap-2 p-2", className),
|
|
195
|
-
"data-sidebar": "header",
|
|
196
|
-
"data-slot": "sidebar-header",
|
|
197
|
-
...props
|
|
198
|
-
});
|
|
146
|
+
return (_jsx("div", { className: cn("flex flex-col gap-2 p-2", className), "data-sidebar": "header", "data-slot": "sidebar-header", ...props }));
|
|
199
147
|
}
|
|
200
148
|
function SidebarFooter({ className, ...props }) {
|
|
201
|
-
|
|
202
|
-
className: cn("flex flex-col gap-2 p-2", className),
|
|
203
|
-
"data-sidebar": "footer",
|
|
204
|
-
"data-slot": "sidebar-footer",
|
|
205
|
-
...props
|
|
206
|
-
});
|
|
149
|
+
return (_jsx("div", { className: cn("flex flex-col gap-2 p-2", className), "data-sidebar": "footer", "data-slot": "sidebar-footer", ...props }));
|
|
207
150
|
}
|
|
208
151
|
function SidebarSeparator({ className, ...props }) {
|
|
209
|
-
|
|
210
|
-
className: cn("mx-2 w-auto bg-sidebar-border", className),
|
|
211
|
-
"data-sidebar": "separator",
|
|
212
|
-
"data-slot": "sidebar-separator",
|
|
213
|
-
...props
|
|
214
|
-
});
|
|
152
|
+
return (_jsx(Separator, { className: cn("mx-2 w-auto bg-sidebar-border", className), "data-sidebar": "separator", "data-slot": "sidebar-separator", ...props }));
|
|
215
153
|
}
|
|
216
154
|
function SidebarContent({ className, ...props }) {
|
|
217
|
-
|
|
218
|
-
className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
|
|
219
|
-
"data-sidebar": "content",
|
|
220
|
-
"data-slot": "sidebar-content",
|
|
221
|
-
...props
|
|
222
|
-
});
|
|
155
|
+
return (_jsx("div", { className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className), "data-sidebar": "content", "data-slot": "sidebar-content", ...props }));
|
|
223
156
|
}
|
|
224
157
|
function SidebarGroup({ className, ...props }) {
|
|
225
|
-
|
|
226
|
-
className: cn("relative flex w-full min-w-0 flex-col p-2", className),
|
|
227
|
-
"data-sidebar": "group",
|
|
228
|
-
"data-slot": "sidebar-group",
|
|
229
|
-
...props
|
|
230
|
-
});
|
|
158
|
+
return (_jsx("div", { className: cn("relative flex w-full min-w-0 flex-col p-2", className), "data-sidebar": "group", "data-slot": "sidebar-group", ...props }));
|
|
231
159
|
}
|
|
232
160
|
function SidebarGroupLabel({ asChild = false, className, ...props }) {
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
"data-sidebar": "group-label",
|
|
236
|
-
"data-slot": "sidebar-group-label",
|
|
237
|
-
...props
|
|
238
|
-
});
|
|
161
|
+
const Component = asChild ? Slot : "div";
|
|
162
|
+
return (_jsx(Component, { className: cn("flex h-8 shrink-0 items-center truncate rounded-md px-2 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-3 [&>svg]:size-4 [&>svg]:shrink-0", className), "data-sidebar": "group-label", "data-slot": "sidebar-group-label", ...props }));
|
|
239
163
|
}
|
|
240
164
|
function SidebarGroupAction({ asChild = false, className, ...props }) {
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
"data-sidebar": "group-action",
|
|
244
|
-
"data-slot": "sidebar-group-action",
|
|
245
|
-
...props
|
|
246
|
-
});
|
|
165
|
+
const Component = asChild ? Slot : "button";
|
|
166
|
+
return (_jsx(Component, { className: cn("absolute top-3.5 right-3 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-3 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0", className), "data-sidebar": "group-action", "data-slot": "sidebar-group-action", ...props }));
|
|
247
167
|
}
|
|
248
168
|
function SidebarGroupContent({ className, ...props }) {
|
|
249
|
-
|
|
250
|
-
className: cn("w-full text-sm", className),
|
|
251
|
-
"data-sidebar": "group-content",
|
|
252
|
-
"data-slot": "sidebar-group-content",
|
|
253
|
-
...props
|
|
254
|
-
});
|
|
169
|
+
return (_jsx("div", { className: cn("w-full text-sm", className), "data-sidebar": "group-content", "data-slot": "sidebar-group-content", ...props }));
|
|
255
170
|
}
|
|
256
171
|
function SidebarMenu({ className, ...props }) {
|
|
257
|
-
|
|
258
|
-
className: cn("flex w-full min-w-0 flex-col gap-1", className),
|
|
259
|
-
"data-sidebar": "menu",
|
|
260
|
-
"data-slot": "sidebar-menu",
|
|
261
|
-
...props
|
|
262
|
-
});
|
|
172
|
+
return (_jsx("ul", { className: cn("flex w-full min-w-0 flex-col gap-1", className), "data-sidebar": "menu", "data-slot": "sidebar-menu", ...props }));
|
|
263
173
|
}
|
|
264
174
|
function SidebarMenuItem({ className, ...props }) {
|
|
265
|
-
|
|
266
|
-
className: cn("group/menu-item relative", className),
|
|
267
|
-
"data-sidebar": "menu-item",
|
|
268
|
-
"data-slot": "sidebar-menu-item",
|
|
269
|
-
...props
|
|
270
|
-
});
|
|
175
|
+
return (_jsx("li", { className: cn("group/menu-item relative", className), "data-sidebar": "menu-item", "data-slot": "sidebar-menu-item", ...props }));
|
|
271
176
|
}
|
|
177
|
+
/* -----------------------------------------------------------------------------
|
|
178
|
+
* Component: SidebarMenuButton
|
|
179
|
+
* -------------------------------------------------------------------------- */
|
|
272
180
|
const SIDEBAR_MENU_BUTTON_NAME = "SidebarMenuButton";
|
|
273
181
|
function SidebarMenuButton({ asChild = false, className, isActive = false, size = "md", tooltip, variant = "default", ...props }) {
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
});
|
|
287
|
-
if (!tooltip) return button;
|
|
288
|
-
if (typeof tooltip === "string") tooltip = { children: tooltip };
|
|
289
|
-
return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
290
|
-
asChild: true,
|
|
291
|
-
children: button
|
|
292
|
-
}), /* @__PURE__ */ jsx(TooltipContent, {
|
|
293
|
-
align: "center",
|
|
294
|
-
hidden: state !== "collapsed" || isMobile,
|
|
295
|
-
side: "right",
|
|
296
|
-
...tooltip
|
|
297
|
-
})] });
|
|
182
|
+
const Component = asChild ? Slot : "button";
|
|
183
|
+
const { isMobile, state } = useSidebar(SIDEBAR_MENU_BUTTON_NAME);
|
|
184
|
+
const button = (_jsx(Component, { className: cn(sidebarMenuButtonVariants({ size, variant }), className), "data-active": isActive, "data-sidebar": "menu-button", "data-size": size, "data-slot": "sidebar-menu-button", ...props }));
|
|
185
|
+
if (!tooltip) {
|
|
186
|
+
return button;
|
|
187
|
+
}
|
|
188
|
+
if (typeof tooltip === "string") {
|
|
189
|
+
tooltip = {
|
|
190
|
+
children: tooltip,
|
|
191
|
+
};
|
|
192
|
+
}
|
|
193
|
+
return (_jsxs(Tooltip, { children: [_jsx(TooltipTrigger, { asChild: true, children: button }), _jsx(TooltipContent, { align: "center", hidden: state !== "collapsed" || isMobile, side: "right", ...tooltip })] }));
|
|
298
194
|
}
|
|
299
195
|
function SidebarMenuAction({ asChild = false, className, showOnHover = false, ...props }) {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
"data-slot": "sidebar-menu-action",
|
|
304
|
-
...props
|
|
305
|
-
});
|
|
196
|
+
const Component = asChild ? Slot : "button";
|
|
197
|
+
return (_jsx(Component, { className: cn("absolute top-1.5 right-1 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-1.5 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-3 md:after:hidden [&>svg]:size-4 [&>svg]:shrink-0", showOnHover &&
|
|
198
|
+
"group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground data-[state=open]:opacity-100 md:opacity-0", className), "data-sidebar": "menu-action", "data-slot": "sidebar-menu-action", ...props }));
|
|
306
199
|
}
|
|
307
200
|
function SidebarMenuBadge({ className, ...props }) {
|
|
308
|
-
|
|
309
|
-
className: cn("pointer-events-none absolute right-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-[active=true]/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", className),
|
|
310
|
-
"data-sidebar": "menu-badge",
|
|
311
|
-
"data-slot": "sidebar-menu-badge",
|
|
312
|
-
...props
|
|
313
|
-
});
|
|
201
|
+
return (_jsx("div", { className: cn("pointer-events-none absolute right-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-[active=true]/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", className), "data-sidebar": "menu-badge", "data-slot": "sidebar-menu-badge", ...props }));
|
|
314
202
|
}
|
|
315
203
|
function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
...props,
|
|
322
|
-
children: [showIcon ? /* @__PURE__ */ jsx(Skeleton, {
|
|
323
|
-
className: "size-4 rounded-md",
|
|
324
|
-
"data-sidebar": "menu-skeleton-icon"
|
|
325
|
-
}) : null, /* @__PURE__ */ jsx(Skeleton, {
|
|
326
|
-
className: "h-4 max-w-(--skeleton-width) flex-1",
|
|
327
|
-
"data-sidebar": "menu-skeleton-text",
|
|
328
|
-
style: { "--skeleton-width": width }
|
|
329
|
-
})]
|
|
330
|
-
});
|
|
204
|
+
// Random width between 50 to 90% - use useState with lazy initializer to avoid calling Math.random during render
|
|
205
|
+
const [width] = useState(() => `${String(Math.floor(Math.random() * 40) + 50)}%`);
|
|
206
|
+
return (_jsxs("div", { className: cn("flex h-8 items-center gap-2 rounded-md px-2", className), "data-sidebar": "menu-skeleton", "data-slot": "sidebar-menu-skeleton", ...props, children: [showIcon ? (_jsx(Skeleton, { className: "size-4 rounded-md", "data-sidebar": "menu-skeleton-icon" })) : null, _jsx(Skeleton, { className: "h-4 max-w-(--skeleton-width) flex-1", "data-sidebar": "menu-skeleton-text", style: {
|
|
207
|
+
"--skeleton-width": width,
|
|
208
|
+
} })] }));
|
|
331
209
|
}
|
|
332
210
|
function SidebarMenuSub({ className, ...props }) {
|
|
333
|
-
|
|
334
|
-
className: cn("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden", className),
|
|
335
|
-
"data-sidebar": "menu-sub",
|
|
336
|
-
"data-slot": "sidebar-menu-sub",
|
|
337
|
-
...props
|
|
338
|
-
});
|
|
211
|
+
return (_jsx("ul", { className: cn("mx-3.5 flex min-w-0 translate-x-px flex-col gap-1 border-l border-sidebar-border px-2.5 py-0.5 group-data-[collapsible=icon]:hidden", className), "data-sidebar": "menu-sub", "data-slot": "sidebar-menu-sub", ...props }));
|
|
339
212
|
}
|
|
340
213
|
function SidebarMenuSubItem({ className, ...props }) {
|
|
341
|
-
|
|
342
|
-
className: cn("group/menu-sub-item relative", className),
|
|
343
|
-
"data-sidebar": "menu-sub-item",
|
|
344
|
-
"data-slot": "sidebar-menu-sub-item",
|
|
345
|
-
...props
|
|
346
|
-
});
|
|
214
|
+
return (_jsx("li", { className: cn("group/menu-sub-item relative", className), "data-sidebar": "menu-sub-item", "data-slot": "sidebar-menu-sub-item", ...props }));
|
|
347
215
|
}
|
|
348
216
|
function SidebarMenuSubButton({ asChild = false, className, isActive = false, size = "md", ...props }) {
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
}
|
|
358
|
-
//#endregion
|
|
359
|
-
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupAction, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInput, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuBadge, SidebarMenuButton, SidebarMenuItem, SidebarMenuSkeleton, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, SidebarProvider, SidebarRail, SidebarSeparator, SidebarTrigger, sidebarMenuButtonVariants, useSidebar };
|
|
217
|
+
const Component = asChild ? Slot : "a";
|
|
218
|
+
return (_jsx(Component, { className: cn("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 hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-3 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-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", className), "data-active": isActive, "data-sidebar": "menu-sub-button", "data-size": size, "data-slot": "sidebar-menu-sub-button", ...props }));
|
|
219
|
+
}
|
|
220
|
+
/* -----------------------------------------------------------------------------
|
|
221
|
+
* Exports
|
|
222
|
+
* -------------------------------------------------------------------------- */
|
|
223
|
+
export { sidebarMenuButtonVariants };
|
|
224
|
+
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, };
|
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
import { ComponentProps, JSX } from "react";
|
|
2
|
-
|
|
3
|
-
//#region src/components/skeleton.d.ts
|
|
1
|
+
import type { ComponentProps, JSX } from "react";
|
|
4
2
|
type SkeletonProps = ComponentProps<"div">;
|
|
5
|
-
declare function Skeleton({
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
//#endregion
|
|
10
|
-
export { Skeleton, type SkeletonProps };
|
|
3
|
+
declare function Skeleton({ className, ...props }: SkeletonProps): JSX.Element;
|
|
4
|
+
export { Skeleton };
|
|
5
|
+
export type { SkeletonProps };
|
|
6
|
+
//# sourceMappingURL=skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","sourceRoot":"","sources":["../../src/components/skeleton.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAQjD,KAAK,aAAa,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC;AAE3C,iBAAS,QAAQ,CAAC,EAAE,SAAS,EAAE,GAAG,KAAK,EAAE,EAAE,aAAa,GAAG,GAAG,CAAC,OAAO,CAQrE;AAMD,OAAO,EAAE,QAAQ,EAAE,CAAC;AACpB,YAAY,EAAE,aAAa,EAAE,CAAC"}
|
|
@@ -1,12 +1,9 @@
|
|
|
1
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
2
|
import { cn } from "@codefast/tailwind-variants";
|
|
2
|
-
import { jsx } from "react/jsx-runtime";
|
|
3
|
-
//#region src/components/skeleton.tsx
|
|
4
3
|
function Skeleton({ className, ...props }) {
|
|
5
|
-
|
|
6
|
-
className: cn("animate-pulse rounded-lg bg-muted", className),
|
|
7
|
-
"data-slot": "skeleton",
|
|
8
|
-
...props
|
|
9
|
-
});
|
|
4
|
+
return (_jsx("div", { className: cn("animate-pulse rounded-lg bg-muted", className), "data-slot": "skeleton", ...props }));
|
|
10
5
|
}
|
|
11
|
-
|
|
6
|
+
/* -----------------------------------------------------------------------------
|
|
7
|
+
* Exports
|
|
8
|
+
* -------------------------------------------------------------------------- */
|
|
12
9
|
export { Skeleton };
|
|
@@ -1,15 +1,7 @@
|
|
|
1
|
-
import { ComponentProps, JSX } from "react";
|
|
1
|
+
import type { ComponentProps, JSX } from "react";
|
|
2
2
|
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
3
|
-
|
|
4
|
-
//#region src/components/slider.d.ts
|
|
5
3
|
type SliderProps = ComponentProps<typeof SliderPrimitive.Root>;
|
|
6
|
-
declare function Slider({
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
min,
|
|
11
|
-
value,
|
|
12
|
-
...props
|
|
13
|
-
}: SliderProps): JSX.Element;
|
|
14
|
-
//#endregion
|
|
15
|
-
export { Slider, type SliderProps };
|
|
4
|
+
declare function Slider({ className, defaultValue, max, min, value, ...props }: SliderProps): JSX.Element;
|
|
5
|
+
export { Slider };
|
|
6
|
+
export type { SliderProps };
|
|
7
|
+
//# sourceMappingURL=slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.d.ts","sourceRoot":"","sources":["../../src/components/slider.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,cAAc,EAAE,GAAG,EAAE,MAAM,OAAO,CAAC;AAGjD,OAAO,KAAK,eAAe,MAAM,wBAAwB,CAAC;AAO1D,KAAK,WAAW,GAAG,cAAc,CAAC,OAAO,eAAe,CAAC,IAAI,CAAC,CAAC;AAE/D,iBAAS,MAAM,CAAC,EACd,SAAS,EACT,YAAY,EACZ,GAAS,EACT,GAAO,EACP,KAAK,EACL,GAAG,KAAK,EACT,EAAE,WAAW,GAAG,GAAG,CAAC,OAAO,CA2C3B;AAMD,OAAO,EAAE,MAAM,EAAE,CAAC;AAClB,YAAY,EAAE,WAAW,EAAE,CAAC"}
|