@coston/ui 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -0
- package/dist/button-BEd6_-lL.d.ts +16 -0
- package/dist/button-BEd6_-lL.d.ts.map +1 -0
- package/dist/button-CJvoztqg.js +46 -0
- package/dist/button-CJvoztqg.js.map +1 -0
- package/dist/components/accordion.d.ts +11 -0
- package/dist/components/accordion.d.ts.map +1 -0
- package/dist/components/accordion.js +38 -0
- package/dist/components/accordion.js.map +1 -0
- package/dist/components/alert-dialog.d.ts +31 -0
- package/dist/components/alert-dialog.d.ts.map +1 -0
- package/dist/components/alert-dialog.js +60 -0
- package/dist/components/alert-dialog.js.map +1 -0
- package/dist/components/alert.d.ts +13 -0
- package/dist/components/alert.d.ts.map +1 -0
- package/dist/components/alert.js +36 -0
- package/dist/components/alert.js.map +1 -0
- package/dist/components/aspect-ratio.d.ts +8 -0
- package/dist/components/aspect-ratio.d.ts.map +1 -0
- package/dist/components/aspect-ratio.js +8 -0
- package/dist/components/aspect-ratio.js.map +1 -0
- package/dist/components/avatar.d.ts +10 -0
- package/dist/components/avatar.d.ts.map +1 -0
- package/dist/components/avatar.js +28 -0
- package/dist/components/avatar.js.map +1 -0
- package/dist/components/badge.d.ts +18 -0
- package/dist/components/badge.d.ts.map +1 -0
- package/dist/components/badge.js +25 -0
- package/dist/components/badge.js.map +1 -0
- package/dist/components/breadcrumb.d.ts +31 -0
- package/dist/components/breadcrumb.d.ts.map +1 -0
- package/dist/components/breadcrumb.js +66 -0
- package/dist/components/breadcrumb.js.map +1 -0
- package/dist/components/button.d.ts +2 -0
- package/dist/components/button.js +4 -0
- package/dist/components/calendar.d.ts +17 -0
- package/dist/components/calendar.d.ts.map +1 -0
- package/dist/components/calendar.js +46 -0
- package/dist/components/calendar.js.map +1 -0
- package/dist/components/card.d.ts +12 -0
- package/dist/components/card.d.ts.map +1 -0
- package/dist/components/card.js +46 -0
- package/dist/components/card.js.map +1 -0
- package/dist/components/carousel.d.ts +23 -0
- package/dist/components/carousel.d.ts.map +1 -0
- package/dist/components/carousel.js +139 -0
- package/dist/components/carousel.js.map +1 -0
- package/dist/components/chart.d.ts +32 -0
- package/dist/components/chart.d.ts.map +1 -0
- package/dist/components/chart.js +115 -0
- package/dist/components/chart.js.map +1 -0
- package/dist/components/checkbox.d.ts +8 -0
- package/dist/components/checkbox.d.ts.map +1 -0
- package/dist/components/checkbox.js +21 -0
- package/dist/components/checkbox.js.map +1 -0
- package/dist/components/collapsible.d.ts +10 -0
- package/dist/components/collapsible.d.ts.map +1 -0
- package/dist/components/collapsible.js +13 -0
- package/dist/components/collapsible.js.map +1 -0
- package/dist/components/command.d.ts +26 -0
- package/dist/components/command.d.ts.map +1 -0
- package/dist/components/command.js +77 -0
- package/dist/components/command.js.map +1 -0
- package/dist/components/context-menu.d.ts +35 -0
- package/dist/components/context-menu.d.ts.map +1 -0
- package/dist/components/context-menu.js +82 -0
- package/dist/components/context-menu.js.map +1 -0
- package/dist/components/dialog.d.ts +30 -0
- package/dist/components/dialog.d.ts.map +1 -0
- package/dist/components/dialog.js +4 -0
- package/dist/components/drawer.d.ts +36 -0
- package/dist/components/drawer.d.ts.map +1 -0
- package/dist/components/drawer.js +53 -0
- package/dist/components/drawer.js.map +1 -0
- package/dist/components/dropdown-menu.d.ts +35 -0
- package/dist/components/dropdown-menu.d.ts.map +1 -0
- package/dist/components/dropdown-menu.js +83 -0
- package/dist/components/dropdown-menu.js.map +1 -0
- package/dist/components/hover-card.d.ts +10 -0
- package/dist/components/hover-card.d.ts.map +1 -0
- package/dist/components/hover-card.js +20 -0
- package/dist/components/hover-card.js.map +1 -0
- package/dist/components/input.d.ts +8 -0
- package/dist/components/input.d.ts.map +1 -0
- package/dist/components/input.js +18 -0
- package/dist/components/input.js.map +1 -0
- package/dist/components/label.d.ts +10 -0
- package/dist/components/label.d.ts.map +1 -0
- package/dist/components/label.js +18 -0
- package/dist/components/label.js.map +1 -0
- package/dist/components/menubar.d.ts +42 -0
- package/dist/components/menubar.d.ts.map +1 -0
- package/dist/components/menubar.js +96 -0
- package/dist/components/menubar.js.map +1 -0
- package/dist/components/navigation-menu.d.ts +17 -0
- package/dist/components/navigation-menu.d.ts.map +1 -0
- package/dist/components/navigation-menu.js +64 -0
- package/dist/components/navigation-menu.js.map +1 -0
- package/dist/components/pagination.d.ts +50 -0
- package/dist/components/pagination.d.ts.map +1 -0
- package/dist/components/pagination.js +65 -0
- package/dist/components/pagination.js.map +1 -0
- package/dist/components/popover.d.ts +10 -0
- package/dist/components/popover.d.ts.map +1 -0
- package/dist/components/popover.js +20 -0
- package/dist/components/popover.js.map +1 -0
- package/dist/components/progress.d.ts +8 -0
- package/dist/components/progress.d.ts.map +1 -0
- package/dist/components/progress.js +20 -0
- package/dist/components/progress.js.map +1 -0
- package/dist/components/radio-group.d.ts +9 -0
- package/dist/components/radio-group.d.ts.map +1 -0
- package/dist/components/radio-group.js +31 -0
- package/dist/components/radio-group.js.map +1 -0
- package/dist/components/resizable.d.ts +20 -0
- package/dist/components/resizable.d.ts.map +1 -0
- package/dist/components/resizable.js +24 -0
- package/dist/components/resizable.js.map +1 -0
- package/dist/components/scroll-area.d.ts +9 -0
- package/dist/components/scroll-area.d.ts.map +1 -0
- package/dist/components/scroll-area.js +32 -0
- package/dist/components/scroll-area.js.map +1 -0
- package/dist/components/select.d.ts +17 -0
- package/dist/components/select.d.ts.map +1 -0
- package/dist/components/select.js +75 -0
- package/dist/components/select.js.map +1 -0
- package/dist/components/separator.d.ts +8 -0
- package/dist/components/separator.d.ts.map +1 -0
- package/dist/components/separator.js +4 -0
- package/dist/components/sheet.d.ts +36 -0
- package/dist/components/sheet.d.ts.map +1 -0
- package/dist/components/sheet.js +69 -0
- package/dist/components/sheet.js.map +1 -0
- package/dist/components/sidebar.d.ts +54 -0
- package/dist/components/sidebar.d.ts.map +1 -0
- package/dist/components/sidebar.js +267 -0
- package/dist/components/sidebar.js.map +1 -0
- package/dist/components/skeleton.d.ts +10 -0
- package/dist/components/skeleton.d.ts.map +1 -0
- package/dist/components/skeleton.js +14 -0
- package/dist/components/skeleton.js.map +1 -0
- package/dist/components/slider.d.ts +8 -0
- package/dist/components/slider.d.ts.map +1 -0
- package/dist/components/slider.js +20 -0
- package/dist/components/slider.js.map +1 -0
- package/dist/components/sonner.d.ts +11 -0
- package/dist/components/sonner.d.ts.map +1 -0
- package/dist/components/sonner.js +22 -0
- package/dist/components/sonner.js.map +1 -0
- package/dist/components/switch.d.ts +8 -0
- package/dist/components/switch.d.ts.map +1 -0
- package/dist/components/switch.js +17 -0
- package/dist/components/switch.js.map +1 -0
- package/dist/components/table.d.ts +14 -0
- package/dist/components/table.d.ts.map +1 -0
- package/dist/components/table.js +61 -0
- package/dist/components/table.js.map +1 -0
- package/dist/components/tabs.d.ts +11 -0
- package/dist/components/tabs.d.ts.map +1 -0
- package/dist/components/tabs.js +29 -0
- package/dist/components/tabs.js.map +1 -0
- package/dist/components/textarea.d.ts +7 -0
- package/dist/components/textarea.d.ts.map +1 -0
- package/dist/components/textarea.js +17 -0
- package/dist/components/textarea.js.map +1 -0
- package/dist/components/toggle-group.d.ts +17 -0
- package/dist/components/toggle-group.d.ts.map +1 -0
- package/dist/components/toggle-group.js +41 -0
- package/dist/components/toggle-group.js.map +1 -0
- package/dist/components/toggle.d.ts +17 -0
- package/dist/components/toggle.d.ts.map +1 -0
- package/dist/components/toggle.js +4 -0
- package/dist/components/tooltip.d.ts +2 -0
- package/dist/components/tooltip.js +4 -0
- package/dist/dialog-B_8jhMOs.js +56 -0
- package/dist/dialog-B_8jhMOs.js.map +1 -0
- package/dist/hooks/use-mobile.d.ts +7 -0
- package/dist/hooks/use-mobile.d.ts.map +1 -0
- package/dist/hooks/use-mobile.js +3 -0
- package/dist/lib/utils.d.ts +9 -0
- package/dist/lib/utils.d.ts.map +1 -0
- package/dist/lib/utils.js +3 -0
- package/dist/separator-9lzFsfCC.js +18 -0
- package/dist/separator-9lzFsfCC.js.map +1 -0
- package/dist/toggle-BpKiTVe4.js +38 -0
- package/dist/toggle-BpKiTVe4.js.map +1 -0
- package/dist/tooltip-CXS6wR7g.js +20 -0
- package/dist/tooltip-CXS6wR7g.js.map +1 -0
- package/dist/tooltip-DPcgBDyX.d.ts +11 -0
- package/dist/tooltip-DPcgBDyX.d.ts.map +1 -0
- package/dist/use-mobile-CixTQBWA.js +21 -0
- package/dist/use-mobile-CixTQBWA.js.map +1 -0
- package/dist/utils-C0f9Ma6r.js +11 -0
- package/dist/utils-C0f9Ma6r.js.map +1 -0
- package/package.json +168 -0
- package/src/components/accordion.tsx +51 -0
- package/src/components/alert-dialog.tsx +115 -0
- package/src/components/alert.tsx +49 -0
- package/src/components/aspect-ratio.tsx +5 -0
- package/src/components/avatar.tsx +44 -0
- package/src/components/badge.tsx +32 -0
- package/src/components/breadcrumb.tsx +101 -0
- package/src/components/button.tsx +48 -0
- package/src/components/calendar.tsx +76 -0
- package/src/components/card.tsx +60 -0
- package/src/components/carousel.tsx +240 -0
- package/src/components/chart.tsx +232 -0
- package/src/components/checkbox.tsx +25 -0
- package/src/components/collapsible.tsx +11 -0
- package/src/components/command.tsx +136 -0
- package/src/components/context-menu.tsx +187 -0
- package/src/components/dialog.tsx +105 -0
- package/src/components/drawer.tsx +98 -0
- package/src/components/dropdown-menu.tsx +185 -0
- package/src/components/hover-card.tsx +29 -0
- package/src/components/input.tsx +24 -0
- package/src/components/label.tsx +19 -0
- package/src/components/menubar.tsx +219 -0
- package/src/components/navigation-menu.tsx +120 -0
- package/src/components/pagination.tsx +98 -0
- package/src/components/popover.tsx +27 -0
- package/src/components/progress.tsx +23 -0
- package/src/components/radio-group.tsx +35 -0
- package/src/components/resizable.tsx +38 -0
- package/src/components/scroll-area.tsx +43 -0
- package/src/components/select.tsx +147 -0
- package/src/components/separator.tsx +23 -0
- package/src/components/sheet.tsx +122 -0
- package/src/components/sidebar.tsx +507 -0
- package/src/components/skeleton.tsx +7 -0
- package/src/components/slider.tsx +23 -0
- package/src/components/sonner.tsx +26 -0
- package/src/components/switch.tsx +26 -0
- package/src/components/table.tsx +95 -0
- package/src/components/tabs.tsx +53 -0
- package/src/components/textarea.tsx +20 -0
- package/src/components/toggle-group.tsx +54 -0
- package/src/components/toggle.tsx +40 -0
- package/src/components/tooltip.tsx +27 -0
- package/src/hooks/use-mobile.tsx +19 -0
- package/src/lib/utils.ts +6 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { ButtonProps } from "../button-BEd6_-lL.js";
|
|
2
|
+
import { TooltipContent$1 as TooltipContent } from "../tooltip-DPcgBDyX.js";
|
|
3
|
+
import * as React from "react";
|
|
4
|
+
import * as _radix_ui_react_separator0 from "@radix-ui/react-separator";
|
|
5
|
+
|
|
6
|
+
//#region src/components/sidebar.d.ts
|
|
7
|
+
type SidebarContext = {
|
|
8
|
+
state: 'expanded' | 'collapsed';
|
|
9
|
+
open: boolean;
|
|
10
|
+
setOpen: (open: boolean) => void;
|
|
11
|
+
openMobile: boolean;
|
|
12
|
+
setOpenMobile: (open: boolean) => void;
|
|
13
|
+
isMobile: boolean;
|
|
14
|
+
toggleSidebar: () => void;
|
|
15
|
+
};
|
|
16
|
+
declare const SidebarContext: React.Context<SidebarContext | null>;
|
|
17
|
+
declare function useSidebar(): SidebarContext;
|
|
18
|
+
declare const SidebarProvider: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
|
|
19
|
+
defaultOpen?: boolean;
|
|
20
|
+
open?: boolean;
|
|
21
|
+
onOpenChange?: (open: boolean) => void;
|
|
22
|
+
}, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
23
|
+
declare const Sidebar: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
|
|
24
|
+
side?: "left" | "right";
|
|
25
|
+
variant?: "sidebar" | "floating" | "inset";
|
|
26
|
+
collapsible?: "offcanvas" | "icon" | "none";
|
|
27
|
+
}, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
28
|
+
declare const SidebarTrigger: React.ForwardRefExoticComponent<Omit<ButtonProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
29
|
+
declare const SidebarInset: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLElement>, HTMLElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
30
|
+
declare const SidebarHeader: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
31
|
+
declare const SidebarFooter: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
32
|
+
declare const SidebarContent: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
33
|
+
declare const SidebarGroup: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
34
|
+
declare const SidebarGroupLabel: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLDivElement> & React.HTMLAttributes<HTMLDivElement> & {
|
|
35
|
+
asChild?: boolean;
|
|
36
|
+
}, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
37
|
+
declare const SidebarGroupContent: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
38
|
+
declare const SidebarMenu: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLUListElement>, HTMLUListElement>, "ref"> & React.RefAttributes<HTMLUListElement>>;
|
|
39
|
+
declare const SidebarMenuItem: React.ForwardRefExoticComponent<Omit<React.DetailedHTMLProps<React.LiHTMLAttributes<HTMLLIElement>, HTMLLIElement>, "ref"> & React.RefAttributes<HTMLLIElement>>;
|
|
40
|
+
declare const SidebarMenuButton: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
41
|
+
asChild?: boolean;
|
|
42
|
+
isActive?: boolean;
|
|
43
|
+
variant?: "default" | "outline";
|
|
44
|
+
tooltip?: string | React.ComponentProps<typeof TooltipContent>;
|
|
45
|
+
size?: "default" | "sm" | "lg";
|
|
46
|
+
}, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
47
|
+
declare const SidebarMenuAction: React.ForwardRefExoticComponent<Omit<React.ClassAttributes<HTMLButtonElement> & React.ButtonHTMLAttributes<HTMLButtonElement> & {
|
|
48
|
+
asChild?: boolean;
|
|
49
|
+
showOnHover?: boolean;
|
|
50
|
+
}, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
51
|
+
declare const SidebarSeparator: React.ForwardRefExoticComponent<Omit<Omit<_radix_ui_react_separator0.SeparatorProps & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>, "ref"> & React.RefAttributes<HTMLDivElement>>;
|
|
52
|
+
//#endregion
|
|
53
|
+
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarSeparator, SidebarTrigger, useSidebar };
|
|
54
|
+
//# sourceMappingURL=sidebar.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.d.ts","names":[],"sources":["../../src/components/sidebar.tsx"],"sourcesContent":[],"mappings":"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"}
|
|
@@ -0,0 +1,267 @@
|
|
|
1
|
+
import { cn } from "../utils-C0f9Ma6r.js";
|
|
2
|
+
import { Button } from "../button-CJvoztqg.js";
|
|
3
|
+
import { Separator } from "../separator-9lzFsfCC.js";
|
|
4
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "../tooltip-CXS6wR7g.js";
|
|
5
|
+
import { useIsMobile } from "../use-mobile-CixTQBWA.js";
|
|
6
|
+
import * as React from "react";
|
|
7
|
+
import { PanelLeft } from "lucide-react";
|
|
8
|
+
import { Fragment, jsx, jsxs } from "react/jsx-runtime";
|
|
9
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
10
|
+
|
|
11
|
+
//#region src/components/sidebar.tsx
|
|
12
|
+
const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
13
|
+
const SIDEBAR_WIDTH = "16rem";
|
|
14
|
+
const SIDEBAR_WIDTH_ICON = "3rem";
|
|
15
|
+
const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
16
|
+
const SidebarContext = React.createContext(null);
|
|
17
|
+
function useSidebar() {
|
|
18
|
+
const context = React.useContext(SidebarContext);
|
|
19
|
+
if (!context) throw new Error("useSidebar must be used within a SidebarProvider.");
|
|
20
|
+
return context;
|
|
21
|
+
}
|
|
22
|
+
const SidebarProvider = React.forwardRef(({ defaultOpen = true, open: openProp, onOpenChange: setOpenProp, className, style, children,...props }, ref) => {
|
|
23
|
+
const isMobile = useIsMobile();
|
|
24
|
+
const [openMobile, setOpenMobile] = React.useState(false);
|
|
25
|
+
const [_open, _setOpen] = React.useState(defaultOpen);
|
|
26
|
+
const open = openProp ?? _open;
|
|
27
|
+
const setOpen = React.useCallback((value) => {
|
|
28
|
+
const openState = typeof value === "function" ? value(open) : value;
|
|
29
|
+
if (setOpenProp) setOpenProp(openState);
|
|
30
|
+
else _setOpen(openState);
|
|
31
|
+
document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${60 * 60 * 24 * 7}`;
|
|
32
|
+
}, [setOpenProp, open]);
|
|
33
|
+
const toggleSidebar = React.useCallback(() => {
|
|
34
|
+
return isMobile ? setOpenMobile((open$1) => !open$1) : setOpen((open$1) => !open$1);
|
|
35
|
+
}, [
|
|
36
|
+
isMobile,
|
|
37
|
+
setOpen,
|
|
38
|
+
setOpenMobile
|
|
39
|
+
]);
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
const handleKeyDown = (event) => {
|
|
42
|
+
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
43
|
+
event.preventDefault();
|
|
44
|
+
toggleSidebar();
|
|
45
|
+
}
|
|
46
|
+
};
|
|
47
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
48
|
+
return () => window.removeEventListener("keydown", handleKeyDown);
|
|
49
|
+
}, [toggleSidebar]);
|
|
50
|
+
const state = open ? "expanded" : "collapsed";
|
|
51
|
+
const contextValue = React.useMemo(() => ({
|
|
52
|
+
state,
|
|
53
|
+
open,
|
|
54
|
+
setOpen,
|
|
55
|
+
isMobile,
|
|
56
|
+
openMobile,
|
|
57
|
+
setOpenMobile,
|
|
58
|
+
toggleSidebar
|
|
59
|
+
}), [
|
|
60
|
+
state,
|
|
61
|
+
open,
|
|
62
|
+
setOpen,
|
|
63
|
+
isMobile,
|
|
64
|
+
openMobile,
|
|
65
|
+
setOpenMobile,
|
|
66
|
+
toggleSidebar
|
|
67
|
+
]);
|
|
68
|
+
return /* @__PURE__ */ jsx(SidebarContext.Provider, {
|
|
69
|
+
value: contextValue,
|
|
70
|
+
children: /* @__PURE__ */ jsx(TooltipProvider, {
|
|
71
|
+
delayDuration: 0,
|
|
72
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
73
|
+
ref,
|
|
74
|
+
style: {
|
|
75
|
+
"--sidebar-width": SIDEBAR_WIDTH,
|
|
76
|
+
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
77
|
+
...style
|
|
78
|
+
},
|
|
79
|
+
className: cn("group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar", className),
|
|
80
|
+
"data-collapsible": state === "collapsed" ? "icon" : "",
|
|
81
|
+
...props,
|
|
82
|
+
children
|
|
83
|
+
})
|
|
84
|
+
})
|
|
85
|
+
});
|
|
86
|
+
});
|
|
87
|
+
SidebarProvider.displayName = "SidebarProvider";
|
|
88
|
+
const Sidebar = React.forwardRef(({ side = "left", variant = "sidebar", collapsible = "offcanvas", className, children,...props }, ref) => {
|
|
89
|
+
const { isMobile, state, openMobile, setOpenMobile } = useSidebar();
|
|
90
|
+
if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
|
|
91
|
+
className: cn("flex h-full flex-col bg-sidebar text-sidebar-foreground", className),
|
|
92
|
+
style: { width: "var(--sidebar-width)" },
|
|
93
|
+
ref,
|
|
94
|
+
...props,
|
|
95
|
+
children
|
|
96
|
+
});
|
|
97
|
+
if (isMobile) return /* @__PURE__ */ jsxs(Fragment, { children: [openMobile && /* @__PURE__ */ jsx("div", {
|
|
98
|
+
className: "fixed inset-0 z-50 bg-black/50",
|
|
99
|
+
onClick: () => setOpenMobile(false)
|
|
100
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
101
|
+
ref,
|
|
102
|
+
"data-variant": variant,
|
|
103
|
+
style: { width: "var(--sidebar-width)" },
|
|
104
|
+
className: cn("fixed inset-y-0 z-50 flex h-svh flex-col bg-sidebar text-sidebar-foreground transition-transform duration-200", side === "left" ? "left-0" : "right-0", openMobile ? "translate-x-0" : side === "left" ? "-translate-x-full" : "translate-x-full", className),
|
|
105
|
+
...props,
|
|
106
|
+
children
|
|
107
|
+
})] });
|
|
108
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
109
|
+
ref,
|
|
110
|
+
className: "group peer hidden md:block text-sidebar-foreground",
|
|
111
|
+
"data-state": state,
|
|
112
|
+
"data-collapsible": state === "collapsed" ? collapsible : "",
|
|
113
|
+
"data-variant": variant,
|
|
114
|
+
"data-side": side,
|
|
115
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
116
|
+
style: { width: "var(--sidebar-width)" },
|
|
117
|
+
className: cn("relative h-svh bg-transparent transition-[width] duration-200 ease-linear", "group-data-[collapsible=offcanvas]:!w-0", "group-data-[side=right]:rotate-180")
|
|
118
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
119
|
+
style: { width: "var(--sidebar-width)" },
|
|
120
|
+
className: cn("fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex", "group-data-[collapsible=offcanvas]:!w-0", side === "left" ? "left-0 group-data-[collapsible=offcanvas]:-left-[var(--sidebar-width)]" : "right-0 group-data-[collapsible=offcanvas]:-right-[var(--sidebar-width)]", variant === "floating" || variant === "inset" ? "p-2" : "group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
|
|
121
|
+
...props,
|
|
122
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
123
|
+
"data-sidebar": "sidebar",
|
|
124
|
+
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",
|
|
125
|
+
children
|
|
126
|
+
})
|
|
127
|
+
})]
|
|
128
|
+
});
|
|
129
|
+
});
|
|
130
|
+
Sidebar.displayName = "Sidebar";
|
|
131
|
+
const SidebarTrigger = React.forwardRef(({ className, onClick,...props }, ref) => {
|
|
132
|
+
const { toggleSidebar } = useSidebar();
|
|
133
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
134
|
+
ref,
|
|
135
|
+
"data-sidebar": "trigger",
|
|
136
|
+
variant: "ghost",
|
|
137
|
+
size: "icon",
|
|
138
|
+
className: cn("h-6 w-6 text-muted-foreground", className),
|
|
139
|
+
onClick: (event) => {
|
|
140
|
+
onClick?.(event);
|
|
141
|
+
toggleSidebar();
|
|
142
|
+
},
|
|
143
|
+
...props,
|
|
144
|
+
children: [/* @__PURE__ */ jsx(PanelLeft, { className: "h-4 w-4" }), /* @__PURE__ */ jsx("span", {
|
|
145
|
+
className: "sr-only",
|
|
146
|
+
children: "Toggle Sidebar"
|
|
147
|
+
})]
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
SidebarTrigger.displayName = "SidebarTrigger";
|
|
151
|
+
const SidebarInset = React.forwardRef(({ className,...props }, ref) => {
|
|
152
|
+
return /* @__PURE__ */ jsx("main", {
|
|
153
|
+
ref,
|
|
154
|
+
className: cn("relative flex min-h-svh flex-1 flex-col bg-background", "peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow md:peer-data-[variant=inset]:border md:peer-data-[variant=inset]:border-sidebar-border", className),
|
|
155
|
+
...props
|
|
156
|
+
});
|
|
157
|
+
});
|
|
158
|
+
SidebarInset.displayName = "SidebarInset";
|
|
159
|
+
const SidebarHeader = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
160
|
+
ref,
|
|
161
|
+
"data-sidebar": "header",
|
|
162
|
+
className: cn("flex flex-col gap-2 p-2", className),
|
|
163
|
+
...props
|
|
164
|
+
}));
|
|
165
|
+
SidebarHeader.displayName = "SidebarHeader";
|
|
166
|
+
const SidebarFooter = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
167
|
+
ref,
|
|
168
|
+
"data-sidebar": "footer",
|
|
169
|
+
className: cn("flex flex-col gap-2 p-2", className),
|
|
170
|
+
...props
|
|
171
|
+
}));
|
|
172
|
+
SidebarFooter.displayName = "SidebarFooter";
|
|
173
|
+
const SidebarContent = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
174
|
+
ref,
|
|
175
|
+
"data-sidebar": "content",
|
|
176
|
+
className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
|
|
177
|
+
...props
|
|
178
|
+
}));
|
|
179
|
+
SidebarContent.displayName = "SidebarContent";
|
|
180
|
+
const SidebarGroup = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
181
|
+
ref,
|
|
182
|
+
"data-sidebar": "group",
|
|
183
|
+
className: cn("relative flex w-full min-w-0 flex-col p-2", className),
|
|
184
|
+
...props
|
|
185
|
+
}));
|
|
186
|
+
SidebarGroup.displayName = "SidebarGroup";
|
|
187
|
+
const SidebarGroupLabel = React.forwardRef(({ className, asChild = false,...props }, ref) => {
|
|
188
|
+
const Comp = asChild ? Slot : "div";
|
|
189
|
+
return /* @__PURE__ */ jsx(Comp, {
|
|
190
|
+
ref,
|
|
191
|
+
"data-sidebar": "group-label",
|
|
192
|
+
className: cn("flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
|
|
193
|
+
...props
|
|
194
|
+
});
|
|
195
|
+
});
|
|
196
|
+
SidebarGroupLabel.displayName = "SidebarGroupLabel";
|
|
197
|
+
const SidebarGroupContent = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
198
|
+
ref,
|
|
199
|
+
"data-sidebar": "group-content",
|
|
200
|
+
className: cn("w-full text-sm", className),
|
|
201
|
+
...props
|
|
202
|
+
}));
|
|
203
|
+
SidebarGroupContent.displayName = "SidebarGroupContent";
|
|
204
|
+
const SidebarMenu = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("ul", {
|
|
205
|
+
ref,
|
|
206
|
+
"data-sidebar": "menu",
|
|
207
|
+
className: cn("flex w-full min-w-0 flex-col gap-1", className),
|
|
208
|
+
...props
|
|
209
|
+
}));
|
|
210
|
+
SidebarMenu.displayName = "SidebarMenu";
|
|
211
|
+
const SidebarMenuItem = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("li", {
|
|
212
|
+
ref,
|
|
213
|
+
"data-sidebar": "menu-item",
|
|
214
|
+
className: cn("group/menu-item relative", className),
|
|
215
|
+
...props
|
|
216
|
+
}));
|
|
217
|
+
SidebarMenuItem.displayName = "SidebarMenuItem";
|
|
218
|
+
const sidebarMenuButtonVariants = {
|
|
219
|
+
default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
220
|
+
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))]"
|
|
221
|
+
};
|
|
222
|
+
const SidebarMenuButton = React.forwardRef(({ asChild = false, isActive = false, variant = "default", size = "default", tooltip, className,...props }, ref) => {
|
|
223
|
+
const Comp = asChild ? Slot : "button";
|
|
224
|
+
const { isMobile, state } = useSidebar();
|
|
225
|
+
const button = /* @__PURE__ */ jsx(Comp, {
|
|
226
|
+
ref,
|
|
227
|
+
"data-sidebar": "menu-button",
|
|
228
|
+
"data-size": size,
|
|
229
|
+
"data-active": isActive,
|
|
230
|
+
"data-slot": "sidebar-menu-button",
|
|
231
|
+
className: cn("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 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-primary data-[active=true]:font-medium data-[active=true]:text-sidebar-primary-foreground data-[active=true]:hover:bg-sidebar-primary/90 data-[active=true]:hover:text-sidebar-primary-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", size === "sm" && "text-xs", size === "lg" && "group-data-[collapsible=icon]:!p-0 data-[size=lg]:h-12 data-[size=lg]:text-sm", sidebarMenuButtonVariants[variant], className),
|
|
232
|
+
...props
|
|
233
|
+
});
|
|
234
|
+
if (!tooltip) return button;
|
|
235
|
+
const tooltipProps = typeof tooltip === "string" ? { children: tooltip } : tooltip;
|
|
236
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
237
|
+
asChild: true,
|
|
238
|
+
children: button
|
|
239
|
+
}), /* @__PURE__ */ jsx(TooltipContent, {
|
|
240
|
+
side: "right",
|
|
241
|
+
align: "center",
|
|
242
|
+
hidden: state !== "collapsed" || isMobile,
|
|
243
|
+
...tooltipProps
|
|
244
|
+
})] });
|
|
245
|
+
});
|
|
246
|
+
SidebarMenuButton.displayName = "SidebarMenuButton";
|
|
247
|
+
const SidebarMenuAction = React.forwardRef(({ className, asChild = false, showOnHover = false,...props }, ref) => {
|
|
248
|
+
const Comp = asChild ? Slot : "button";
|
|
249
|
+
return /* @__PURE__ */ jsx(Comp, {
|
|
250
|
+
ref,
|
|
251
|
+
"data-sidebar": "menu-action",
|
|
252
|
+
className: cn("absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 after:md:hidden", "group-data-[collapsible=icon]:hidden", showOnHover && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0", className),
|
|
253
|
+
...props
|
|
254
|
+
});
|
|
255
|
+
});
|
|
256
|
+
SidebarMenuAction.displayName = "SidebarMenuAction";
|
|
257
|
+
const SidebarSeparator = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(Separator, {
|
|
258
|
+
ref,
|
|
259
|
+
"data-sidebar": "separator",
|
|
260
|
+
className: cn("mx-2 w-auto bg-sidebar-border", className),
|
|
261
|
+
...props
|
|
262
|
+
}));
|
|
263
|
+
SidebarSeparator.displayName = "SidebarSeparator";
|
|
264
|
+
|
|
265
|
+
//#endregion
|
|
266
|
+
export { Sidebar, SidebarContent, SidebarFooter, SidebarGroup, SidebarGroupContent, SidebarGroupLabel, SidebarHeader, SidebarInset, SidebarMenu, SidebarMenuAction, SidebarMenuButton, SidebarMenuItem, SidebarProvider, SidebarSeparator, SidebarTrigger, useSidebar };
|
|
267
|
+
//# sourceMappingURL=sidebar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sidebar.js","names":["value: boolean | ((value: boolean) => boolean)","open","event: KeyboardEvent"],"sources":["../../src/components/sidebar.tsx"],"sourcesContent":["import * as React from 'react';\nimport { Slot } from '@radix-ui/react-slot';\nimport { PanelLeft } from 'lucide-react';\nimport { cn } from '../lib/utils';\nimport { Button } from './button';\nimport { Separator } from './separator';\nimport { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from './tooltip';\nimport { useIsMobile } from '../hooks/use-mobile';\n\nconst SIDEBAR_COOKIE_NAME = 'sidebar_state';\nconst SIDEBAR_WIDTH = '16rem';\nconst SIDEBAR_WIDTH_ICON = '3rem';\nconst SIDEBAR_KEYBOARD_SHORTCUT = 'b';\n\ntype SidebarContext = {\n state: 'expanded' | 'collapsed';\n open: boolean;\n setOpen: (open: boolean) => void;\n openMobile: boolean;\n setOpenMobile: (open: boolean) => void;\n isMobile: boolean;\n toggleSidebar: () => void;\n};\n\nconst SidebarContext = React.createContext<SidebarContext | null>(null);\n\nfunction useSidebar() {\n const context = React.useContext(SidebarContext);\n if (!context) {\n throw new Error('useSidebar must be used within a SidebarProvider.');\n }\n return context;\n}\n\nconst SidebarProvider = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n defaultOpen?: boolean;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n }\n>(\n (\n {\n defaultOpen = true,\n open: openProp,\n onOpenChange: setOpenProp,\n className,\n style,\n children,\n ...props\n },\n ref\n ) => {\n const isMobile = useIsMobile();\n const [openMobile, setOpenMobile] = React.useState(false);\n\n const [_open, _setOpen] = React.useState(defaultOpen);\n const open = openProp ?? _open;\n const setOpen = React.useCallback(\n (value: boolean | ((value: boolean) => boolean)) => {\n const openState = typeof value === 'function' ? value(open) : value;\n if (setOpenProp) {\n setOpenProp(openState);\n } else {\n _setOpen(openState);\n }\n document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState}; path=/; max-age=${60 * 60 * 24 * 7}`;\n },\n [setOpenProp, open]\n );\n\n const toggleSidebar = React.useCallback(() => {\n return isMobile ? setOpenMobile(open => !open) : setOpen(open => !open);\n }, [isMobile, setOpen, setOpenMobile]);\n\n React.useEffect(() => {\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {\n event.preventDefault();\n toggleSidebar();\n }\n };\n window.addEventListener('keydown', handleKeyDown);\n return () => window.removeEventListener('keydown', handleKeyDown);\n }, [toggleSidebar]);\n\n const state = open ? 'expanded' : 'collapsed';\n\n const contextValue = React.useMemo<SidebarContext>(\n () => ({ state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar }),\n [state, open, setOpen, isMobile, openMobile, setOpenMobile, toggleSidebar]\n );\n\n return (\n <SidebarContext.Provider value={contextValue}>\n <TooltipProvider delayDuration={0}>\n <div\n ref={ref}\n style={\n {\n '--sidebar-width': SIDEBAR_WIDTH,\n '--sidebar-width-icon': SIDEBAR_WIDTH_ICON,\n ...style,\n } as React.CSSProperties\n }\n className={cn(\n 'group/sidebar-wrapper flex min-h-svh w-full has-[[data-variant=inset]]:bg-sidebar',\n className\n )}\n data-collapsible={state === 'collapsed' ? 'icon' : ''}\n {...props}\n >\n {children}\n </div>\n </TooltipProvider>\n </SidebarContext.Provider>\n );\n }\n);\nSidebarProvider.displayName = 'SidebarProvider';\n\nconst Sidebar = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & {\n side?: 'left' | 'right';\n variant?: 'sidebar' | 'floating' | 'inset';\n collapsible?: 'offcanvas' | 'icon' | 'none';\n }\n>(\n (\n {\n side = 'left',\n variant = 'sidebar',\n collapsible = 'offcanvas',\n className,\n children,\n ...props\n },\n ref\n ) => {\n const { isMobile, state, openMobile, setOpenMobile } = useSidebar();\n\n if (collapsible === 'none') {\n return (\n <div\n className={cn('flex h-full flex-col bg-sidebar text-sidebar-foreground', className)}\n style={{ width: 'var(--sidebar-width)' }}\n ref={ref}\n {...props}\n >\n {children}\n </div>\n );\n }\n\n if (isMobile) {\n return (\n <>\n {openMobile && (\n <div className=\"fixed inset-0 z-50 bg-black/50\" onClick={() => setOpenMobile(false)} />\n )}\n <div\n ref={ref}\n data-variant={variant}\n style={{ width: 'var(--sidebar-width)' }}\n className={cn(\n 'fixed inset-y-0 z-50 flex h-svh flex-col bg-sidebar text-sidebar-foreground transition-transform duration-200',\n side === 'left' ? 'left-0' : 'right-0',\n openMobile\n ? 'translate-x-0'\n : side === 'left'\n ? '-translate-x-full'\n : 'translate-x-full',\n className\n )}\n {...props}\n >\n {children}\n </div>\n </>\n );\n }\n\n return (\n <div\n ref={ref}\n className=\"group peer hidden md:block text-sidebar-foreground\"\n data-state={state}\n data-collapsible={state === 'collapsed' ? collapsible : ''}\n data-variant={variant}\n data-side={side}\n >\n {/* Gap on side to keep layout */}\n <div\n style={{ width: 'var(--sidebar-width)' }}\n className={cn(\n 'relative h-svh bg-transparent transition-[width] duration-200 ease-linear',\n 'group-data-[collapsible=offcanvas]:!w-0',\n 'group-data-[side=right]:rotate-180'\n )}\n />\n <div\n style={{ width: 'var(--sidebar-width)' }}\n className={cn(\n 'fixed inset-y-0 z-10 hidden h-svh transition-[left,right,width] duration-200 ease-linear md:flex',\n 'group-data-[collapsible=offcanvas]:!w-0',\n side === 'left'\n ? 'left-0 group-data-[collapsible=offcanvas]:-left-[var(--sidebar-width)]'\n : 'right-0 group-data-[collapsible=offcanvas]:-right-[var(--sidebar-width)]',\n variant === 'floating' || variant === 'inset'\n ? 'p-2'\n : 'group-data-[side=left]:border-r group-data-[side=right]:border-l',\n className\n )}\n {...props}\n >\n <div\n data-sidebar=\"sidebar\"\n 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\"\n >\n {children}\n </div>\n </div>\n </div>\n );\n }\n);\nSidebar.displayName = 'Sidebar';\n\nconst SidebarTrigger = React.forwardRef<\n React.ComponentRef<typeof Button>,\n React.ComponentProps<typeof Button>\n>(({ className, onClick, ...props }, ref) => {\n const { toggleSidebar } = useSidebar();\n\n return (\n <Button\n ref={ref}\n data-sidebar=\"trigger\"\n variant=\"ghost\"\n size=\"icon\"\n className={cn('h-6 w-6 text-muted-foreground', className)}\n onClick={event => {\n onClick?.(event);\n toggleSidebar();\n }}\n {...props}\n >\n <PanelLeft className=\"h-4 w-4\" />\n <span className=\"sr-only\">Toggle Sidebar</span>\n </Button>\n );\n});\nSidebarTrigger.displayName = 'SidebarTrigger';\n\nconst SidebarInset = React.forwardRef<HTMLDivElement, React.ComponentProps<'main'>>(\n ({ className, ...props }, ref) => {\n return (\n <main\n ref={ref}\n className={cn(\n 'relative flex min-h-svh flex-1 flex-col bg-background',\n 'peer-data-[variant=inset]:min-h-[calc(100svh-theme(spacing.4))] md:peer-data-[variant=inset]:m-2 md:peer-data-[state=collapsed]:peer-data-[variant=inset]:ml-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow md:peer-data-[variant=inset]:border md:peer-data-[variant=inset]:border-sidebar-border',\n className\n )}\n {...props}\n />\n );\n }\n);\nSidebarInset.displayName = 'SidebarInset';\n\nconst SidebarHeader = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"header\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n);\nSidebarHeader.displayName = 'SidebarHeader';\n\nconst SidebarFooter = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"footer\"\n className={cn('flex flex-col gap-2 p-2', className)}\n {...props}\n />\n )\n);\nSidebarFooter.displayName = 'SidebarFooter';\n\nconst SidebarContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"content\"\n className={cn(\n 'flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden',\n className\n )}\n {...props}\n />\n )\n);\nSidebarContent.displayName = 'SidebarContent';\n\nconst SidebarGroup = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group\"\n className={cn('relative flex w-full min-w-0 flex-col p-2', className)}\n {...props}\n />\n )\n);\nSidebarGroup.displayName = 'SidebarGroup';\n\nconst SidebarGroupLabel = React.forwardRef<\n HTMLDivElement,\n React.ComponentProps<'div'> & { asChild?: boolean }\n>(({ className, asChild = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'div';\n return (\n <Comp\n ref={ref}\n data-sidebar=\"group-label\"\n className={cn(\n 'flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium text-sidebar-foreground/70 outline-none ring-sidebar-ring transition-[margin,opa] duration-200 ease-linear focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0',\n 'group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0',\n className\n )}\n {...props}\n />\n );\n});\nSidebarGroupLabel.displayName = 'SidebarGroupLabel';\n\nconst SidebarGroupContent = React.forwardRef<HTMLDivElement, React.ComponentProps<'div'>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n data-sidebar=\"group-content\"\n className={cn('w-full text-sm', className)}\n {...props}\n />\n )\n);\nSidebarGroupContent.displayName = 'SidebarGroupContent';\n\nconst SidebarMenu = React.forwardRef<HTMLUListElement, React.ComponentProps<'ul'>>(\n ({ className, ...props }, ref) => (\n <ul\n ref={ref}\n data-sidebar=\"menu\"\n className={cn('flex w-full min-w-0 flex-col gap-1', className)}\n {...props}\n />\n )\n);\nSidebarMenu.displayName = 'SidebarMenu';\n\nconst SidebarMenuItem = React.forwardRef<HTMLLIElement, React.ComponentProps<'li'>>(\n ({ className, ...props }, ref) => (\n <li\n ref={ref}\n data-sidebar=\"menu-item\"\n className={cn('group/menu-item relative', className)}\n {...props}\n />\n )\n);\nSidebarMenuItem.displayName = 'SidebarMenuItem';\n\nconst sidebarMenuButtonVariants = {\n default: 'hover:bg-sidebar-accent hover:text-sidebar-accent-foreground',\n outline:\n '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))]',\n};\n\nconst SidebarMenuButton = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n isActive?: boolean;\n variant?: 'default' | 'outline';\n tooltip?: string | React.ComponentProps<typeof TooltipContent>;\n size?: 'default' | 'sm' | 'lg';\n }\n>(\n (\n {\n asChild = false,\n isActive = false,\n variant = 'default',\n size = 'default',\n tooltip,\n className,\n ...props\n },\n ref\n ) => {\n const Comp = asChild ? Slot : 'button';\n const { isMobile, state } = useSidebar();\n\n const button = (\n <Comp\n ref={ref}\n data-sidebar=\"menu-button\"\n data-size={size}\n data-active={isActive}\n data-slot=\"sidebar-menu-button\"\n className={cn(\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 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-primary data-[active=true]:font-medium data-[active=true]:text-sidebar-primary-foreground data-[active=true]:hover:bg-sidebar-primary/90 data-[active=true]:hover:text-sidebar-primary-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',\n size === 'sm' && 'text-xs',\n size === 'lg' &&\n 'group-data-[collapsible=icon]:!p-0 data-[size=lg]:h-12 data-[size=lg]:text-sm',\n sidebarMenuButtonVariants[variant],\n className\n )}\n {...props}\n />\n );\n\n if (!tooltip) return button;\n\n const tooltipProps = typeof tooltip === 'string' ? { children: tooltip } : tooltip;\n\n return (\n <Tooltip>\n <TooltipTrigger asChild>{button}</TooltipTrigger>\n <TooltipContent\n side=\"right\"\n align=\"center\"\n hidden={state !== 'collapsed' || isMobile}\n {...tooltipProps}\n />\n </Tooltip>\n );\n }\n);\nSidebarMenuButton.displayName = 'SidebarMenuButton';\n\nconst SidebarMenuAction = React.forwardRef<\n HTMLButtonElement,\n React.ComponentProps<'button'> & {\n asChild?: boolean;\n showOnHover?: boolean;\n }\n>(({ className, asChild = false, showOnHover = false, ...props }, ref) => {\n const Comp = asChild ? Slot : 'button';\n\n return (\n <Comp\n ref={ref}\n data-sidebar=\"menu-action\"\n className={cn(\n 'absolute right-1 top-1.5 flex aspect-square w-5 items-center justify-center rounded-md p-0 text-sidebar-foreground outline-none ring-sidebar-ring transition-transform hover:bg-sidebar-accent hover:text-sidebar-accent-foreground focus-visible:ring-2 peer-hover/menu-button:text-sidebar-accent-foreground [&>svg]:size-4 [&>svg]:shrink-0',\n 'after:absolute after:-inset-2 after:md:hidden',\n 'group-data-[collapsible=icon]:hidden',\n showOnHover &&\n 'group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 peer-data-[active=true]/menu-button:text-sidebar-accent-foreground md:opacity-0',\n className\n )}\n {...props}\n />\n );\n});\nSidebarMenuAction.displayName = 'SidebarMenuAction';\n\nconst SidebarSeparator = React.forwardRef<\n React.ComponentRef<typeof Separator>,\n React.ComponentProps<typeof Separator>\n>(({ className, ...props }, ref) => (\n <Separator\n ref={ref}\n data-sidebar=\"separator\"\n className={cn('mx-2 w-auto bg-sidebar-border', className)}\n {...props}\n />\n));\nSidebarSeparator.displayName = 'SidebarSeparator';\n\nexport {\n Sidebar,\n SidebarContent,\n SidebarFooter,\n SidebarGroup,\n SidebarGroupContent,\n SidebarGroupLabel,\n SidebarHeader,\n SidebarInset,\n SidebarMenu,\n SidebarMenuAction,\n SidebarMenuButton,\n SidebarMenuItem,\n SidebarProvider,\n SidebarSeparator,\n SidebarTrigger,\n useSidebar,\n};\n"],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as react_jsx_runtime15 from "react/jsx-runtime";
|
|
2
|
+
|
|
3
|
+
//#region src/components/skeleton.d.ts
|
|
4
|
+
declare function Skeleton({
|
|
5
|
+
className,
|
|
6
|
+
...props
|
|
7
|
+
}: React.HTMLAttributes<HTMLDivElement>): react_jsx_runtime15.JSX.Element;
|
|
8
|
+
//#endregion
|
|
9
|
+
export { Skeleton };
|
|
10
|
+
//# sourceMappingURL=skeleton.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.d.ts","names":[],"sources":["../../src/components/skeleton.tsx"],"sourcesContent":[],"mappings":";;;iBAES,QAAA;;;GAAkC,KAAA,CAAM,eAAe,kBAAe,mBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { cn } from "../utils-C0f9Ma6r.js";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
|
|
4
|
+
//#region src/components/skeleton.tsx
|
|
5
|
+
function Skeleton({ className,...props }) {
|
|
6
|
+
return /* @__PURE__ */ jsx("div", {
|
|
7
|
+
className: cn("animate-pulse rounded-md bg-muted", className),
|
|
8
|
+
...props
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
|
|
12
|
+
//#endregion
|
|
13
|
+
export { Skeleton };
|
|
14
|
+
//# sourceMappingURL=skeleton.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skeleton.js","names":[],"sources":["../../src/components/skeleton.tsx"],"sourcesContent":["import { cn } from '../lib/utils';\n\nfunction Skeleton({ className, ...props }: React.HTMLAttributes<HTMLDivElement>) {\n return <div className={cn('animate-pulse rounded-md bg-muted', className)} {...props} />;\n}\n\nexport { Skeleton };\n"],"mappings":";;;;AAEA,SAAS,SAAS,EAAE,UAAW,GAAG,OAA6C,EAAE;AAC/E,wBAAO,IAAC;EAAI,WAAW,GAAG,qCAAqC,UAAU;EAAE,GAAI;GAAS;AACzF"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
3
|
+
|
|
4
|
+
//#region src/components/slider.d.ts
|
|
5
|
+
declare const Slider: React.ForwardRefExoticComponent<Omit<SliderPrimitive.SliderProps & React.RefAttributes<HTMLSpanElement>, "ref"> & React.RefAttributes<HTMLSpanElement>>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { Slider };
|
|
8
|
+
//# sourceMappingURL=slider.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.d.ts","names":[],"sources":["../../src/components/slider.tsx"],"sourcesContent":[],"mappings":";;;;cAKM,QAAM,KAAA,CAAA,0BAAA,KAAA,eAAA,CAAA,cAAA,KAAA,CAAA,cAAA,2BAAA,KAAA,CAAA,cAAA"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { cn } from "../utils-C0f9Ma6r.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
5
|
+
|
|
6
|
+
//#region src/components/slider.tsx
|
|
7
|
+
const Slider = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsxs(SliderPrimitive.Root, {
|
|
8
|
+
ref,
|
|
9
|
+
className: cn("relative flex w-full touch-none select-none items-center", className),
|
|
10
|
+
...props,
|
|
11
|
+
children: [/* @__PURE__ */ jsx(SliderPrimitive.Track, {
|
|
12
|
+
className: "relative h-2 w-full grow overflow-hidden rounded-full bg-secondary",
|
|
13
|
+
children: /* @__PURE__ */ jsx(SliderPrimitive.Range, { className: "absolute h-full bg-primary" })
|
|
14
|
+
}), /* @__PURE__ */ jsx(SliderPrimitive.Thumb, { className: "block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50" })]
|
|
15
|
+
}));
|
|
16
|
+
Slider.displayName = SliderPrimitive.Root.displayName;
|
|
17
|
+
|
|
18
|
+
//#endregion
|
|
19
|
+
export { Slider };
|
|
20
|
+
//# sourceMappingURL=slider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"slider.js","names":[],"sources":["../../src/components/slider.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as SliderPrimitive from '@radix-ui/react-slider';\n\nimport { cn } from '../lib/utils';\n\nconst Slider = React.forwardRef<\n React.ElementRef<typeof SliderPrimitive.Root>,\n React.ComponentPropsWithoutRef<typeof SliderPrimitive.Root>\n>(({ className, ...props }, ref) => (\n <SliderPrimitive.Root\n ref={ref}\n className={cn('relative flex w-full touch-none select-none items-center', className)}\n {...props}\n >\n <SliderPrimitive.Track className=\"relative h-2 w-full grow overflow-hidden rounded-full bg-secondary\">\n <SliderPrimitive.Range className=\"absolute h-full bg-primary\" />\n </SliderPrimitive.Track>\n <SliderPrimitive.Thumb className=\"block h-5 w-5 rounded-full border-2 border-primary bg-background ring-offset-background transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50\" />\n </SliderPrimitive.Root>\n));\nSlider.displayName = SliderPrimitive.Root.displayName;\n\nexport { Slider };\n"],"mappings":";;;;;;AAKA,MAAM,SAAS,MAAM,WAGnB,CAAC,EAAE,UAAW,GAAG,OAAO,EAAE,wBAC1B,KAAC,gBAAgB;CACV;CACL,WAAW,GAAG,4DAA4D,UAAU;CACpF,GAAI;4BAEJ,IAAC,gBAAgB;EAAM,WAAU;4BAC/B,IAAC,gBAAgB,SAAM,WAAU,+BAA+B;GAC1C,kBACxB,IAAC,gBAAgB,SAAM,WAAU,mQAAmQ;EAC/Q,CACvB;AACF,OAAO,cAAc,gBAAgB,KAAK"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import * as react_jsx_runtime21 from "react/jsx-runtime";
|
|
2
|
+
import { Toaster as Toaster$1 } from "sonner";
|
|
3
|
+
|
|
4
|
+
//#region src/components/sonner.d.ts
|
|
5
|
+
type ToasterProps = React.ComponentProps<typeof Toaster$1>;
|
|
6
|
+
declare const Toaster: ({
|
|
7
|
+
...props
|
|
8
|
+
}: ToasterProps) => react_jsx_runtime21.JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { Toaster };
|
|
11
|
+
//# sourceMappingURL=sonner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sonner.d.ts","names":[],"sources":["../../src/components/sonner.tsx"],"sourcesContent":[],"mappings":";;;;KAEK,YAAA,GAAe,KAAA,CAAM,sBAAsB;cAE1C;;GAAyB,iBAAY,mBAAA,CAAA,GAAA,CAAA"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { jsx } from "react/jsx-runtime";
|
|
2
|
+
import { Toaster as Toaster$1 } from "sonner";
|
|
3
|
+
|
|
4
|
+
//#region src/components/sonner.tsx
|
|
5
|
+
const Toaster = ({ ...props }) => {
|
|
6
|
+
const isDark = document.documentElement.classList.contains("dark");
|
|
7
|
+
return /* @__PURE__ */ jsx(Toaster$1, {
|
|
8
|
+
theme: isDark ? "dark" : "light",
|
|
9
|
+
className: "toaster group",
|
|
10
|
+
toastOptions: { classNames: {
|
|
11
|
+
toast: "group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg",
|
|
12
|
+
description: "group-[.toast]:text-muted-foreground",
|
|
13
|
+
actionButton: "group-[.toast]:bg-primary group-[.toast]:text-primary-foreground",
|
|
14
|
+
cancelButton: "group-[.toast]:bg-muted group-[.toast]:text-muted-foreground"
|
|
15
|
+
} },
|
|
16
|
+
...props
|
|
17
|
+
});
|
|
18
|
+
};
|
|
19
|
+
|
|
20
|
+
//#endregion
|
|
21
|
+
export { Toaster };
|
|
22
|
+
//# sourceMappingURL=sonner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sonner.js","names":["Sonner"],"sources":["../../src/components/sonner.tsx"],"sourcesContent":["import { Toaster as Sonner } from 'sonner';\n\ntype ToasterProps = React.ComponentProps<typeof Sonner>;\n\nconst Toaster = ({ ...props }: ToasterProps) => {\n const isDark = document.documentElement.classList.contains('dark');\n\n return (\n <Sonner\n theme={isDark ? 'dark' : 'light'}\n className=\"toaster group\"\n toastOptions={{\n classNames: {\n toast:\n 'group toast group-[.toaster]:bg-background group-[.toaster]:text-foreground group-[.toaster]:border-border group-[.toaster]:shadow-lg',\n description: 'group-[.toast]:text-muted-foreground',\n actionButton: 'group-[.toast]:bg-primary group-[.toast]:text-primary-foreground',\n cancelButton: 'group-[.toast]:bg-muted group-[.toast]:text-muted-foreground',\n },\n }}\n {...props}\n />\n );\n};\n\nexport { Toaster };\n"],"mappings":";;;;AAIA,MAAM,UAAU,CAAC,EAAE,GAAG,OAAqB,KAAK;CAC9C,MAAM,SAAS,SAAS,gBAAgB,UAAU,SAAS,OAAO;AAElE,wBACE,IAACA;EACC,OAAO,SAAS,SAAS;EACzB,WAAU;EACV,cAAc,EACZ,YAAY;GACV,OACE;GACF,aAAa;GACb,cAAc;GACd,cAAc;EACf,EACF;EACD,GAAI;GACJ;AAEL"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
import * as SwitchPrimitives from "@radix-ui/react-switch";
|
|
3
|
+
|
|
4
|
+
//#region src/components/switch.d.ts
|
|
5
|
+
declare const Switch: React.ForwardRefExoticComponent<Omit<SwitchPrimitives.SwitchProps & React.RefAttributes<HTMLButtonElement>, "ref"> & React.RefAttributes<HTMLButtonElement>>;
|
|
6
|
+
//#endregion
|
|
7
|
+
export { Switch };
|
|
8
|
+
//# sourceMappingURL=switch.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.d.ts","names":[],"sources":["../../src/components/switch.tsx"],"sourcesContent":[],"mappings":";;;;cAIM,QAAM,KAAA,CAAA,0BAAA,KAAA,gBAAA,CAAA,cAAA,KAAA,CAAA,cAAA,6BAAA,KAAA,CAAA,cAAA"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { cn } from "../utils-C0f9Ma6r.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
import * as SwitchPrimitives from "@radix-ui/react-switch";
|
|
5
|
+
|
|
6
|
+
//#region src/components/switch.tsx
|
|
7
|
+
const Switch = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx(SwitchPrimitives.Root, {
|
|
8
|
+
className: cn("peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input", className),
|
|
9
|
+
...props,
|
|
10
|
+
ref,
|
|
11
|
+
children: /* @__PURE__ */ jsx(SwitchPrimitives.Thumb, { className: cn("pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0") })
|
|
12
|
+
}));
|
|
13
|
+
Switch.displayName = SwitchPrimitives.Root.displayName;
|
|
14
|
+
|
|
15
|
+
//#endregion
|
|
16
|
+
export { Switch };
|
|
17
|
+
//# sourceMappingURL=switch.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"switch.js","names":[],"sources":["../../src/components/switch.tsx"],"sourcesContent":["import * as React from 'react';\nimport * as SwitchPrimitives from '@radix-ui/react-switch';\nimport { cn } from '../lib/utils';\n\nconst Switch = React.forwardRef<\n React.ComponentRef<typeof SwitchPrimitives.Root>,\n React.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>\n>(({ className, ...props }, ref) => (\n <SwitchPrimitives.Root\n className={cn(\n 'peer inline-flex h-6 w-11 shrink-0 cursor-pointer items-center rounded-full border-2 border-transparent transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 focus-visible:ring-offset-background disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input',\n className\n )}\n {...props}\n ref={ref}\n >\n <SwitchPrimitives.Thumb\n className={cn(\n 'pointer-events-none block h-5 w-5 rounded-full bg-background shadow-lg ring-0 transition-transform data-[state=checked]:translate-x-5 data-[state=unchecked]:translate-x-0'\n )}\n />\n </SwitchPrimitives.Root>\n));\nSwitch.displayName = SwitchPrimitives.Root.displayName;\n\nexport { Switch };\n"],"mappings":";;;;;;AAIA,MAAM,SAAS,MAAM,WAGnB,CAAC,EAAE,UAAW,GAAG,OAAO,EAAE,wBAC1B,IAAC,iBAAiB;CAChB,WAAW,GACT,sXACA,UACD;CACD,GAAI;CACC;2BAEL,IAAC,iBAAiB,SAChB,WAAW,GACT,6KACD,GACD;EACoB,CACxB;AACF,OAAO,cAAc,iBAAiB,KAAK"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import * as React from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/table.d.ts
|
|
4
|
+
declare const Table: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableElement> & React.RefAttributes<HTMLTableElement>>;
|
|
5
|
+
declare const TableHeader: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
|
|
6
|
+
declare const TableBody: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
|
|
7
|
+
declare const TableFooter: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableSectionElement> & React.RefAttributes<HTMLTableSectionElement>>;
|
|
8
|
+
declare const TableRow: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableRowElement> & React.RefAttributes<HTMLTableRowElement>>;
|
|
9
|
+
declare const TableHead: React.ForwardRefExoticComponent<React.ThHTMLAttributes<HTMLTableCellElement> & React.RefAttributes<HTMLTableCellElement>>;
|
|
10
|
+
declare const TableCell: React.ForwardRefExoticComponent<React.TdHTMLAttributes<HTMLTableCellElement> & React.RefAttributes<HTMLTableCellElement>>;
|
|
11
|
+
declare const TableCaption: React.ForwardRefExoticComponent<React.HTMLAttributes<HTMLTableCaptionElement> & React.RefAttributes<HTMLTableCaptionElement>>;
|
|
12
|
+
//#endregion
|
|
13
|
+
export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
|
|
14
|
+
//# sourceMappingURL=table.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"table.d.ts","names":[],"sources":["../../src/components/table.tsx"],"sourcesContent":[],"mappings":";;;cAGM,OAAK,KAAA,CAAA,0BAAA,KAAA,CAAA,eAAA,oBAAA,KAAA,CAAA,cAAA;cASL,aAAW,KAAA,CAAA,0BAAA,KAAA,CAAA,eAAA,2BAAA,KAAA,CAAA,cAAA;AAZc,cAwBzB,SAfL,EAec,KAAA,CAAA,yBAfd,CAec,KAAA,CAAA,cAfd,CAec,uBAfd,CAAA,GAec,KAAA,CAAA,aAfd,CAec,uBAfd,CAAA,CAAA;cAuBK,WAvBL,EAuBgB,KAAA,CAAA,yBAvBhB,CAuBgB,KAAA,CAAA,cAvBhB,CAuBgB,uBAvBhB,CAAA,GAuBgB,KAAA,CAAA,aAvBhB,CAuBgB,uBAvBhB,CAAA,CAAA;cAmCK,QAzCK,EAyCG,KAAA,CAAA,yBAzCH,CAyCG,KAAA,CAAA,cAzCH,CAyCG,mBAzCH,CAAA,GAyCG,KAAA,CAAA,aAzCH,CAyCG,mBAzCH,CAAA,CAAA;cAuDL,SAvDK,EAuDI,KAAA,CAAA,yBAvDJ,CAuDI,KAAA,CAAA,gBAvDJ,CAuDI,oBAvDJ,CAAA,GAuDI,KAAA,CAAA,aAvDJ,CAuDI,oBAvDJ,CAAA,CAAA;cAsEL,SAtEK,EAsEI,KAAA,CAAA,yBAtEJ,CAsEI,KAAA,CAAA,gBAtEJ,CAsEI,oBAtEJ,CAAA,GAsEI,KAAA,CAAA,aAtEJ,CAsEI,oBAtEJ,CAAA,CAAA;cAmFL,YAnFK,EAmFO,KAAA,CAAA,yBAnFP,CAmFO,KAAA,CAAA,cAnFP,CAmFO,uBAnFP,CAAA,GAmFO,KAAA,CAAA,aAnFP,CAmFO,uBAnFP,CAAA,CAAA"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { cn } from "../utils-C0f9Ma6r.js";
|
|
2
|
+
import * as React from "react";
|
|
3
|
+
import { jsx } from "react/jsx-runtime";
|
|
4
|
+
|
|
5
|
+
//#region src/components/table.tsx
|
|
6
|
+
const Table = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("div", {
|
|
7
|
+
className: "relative w-full overflow-auto",
|
|
8
|
+
children: /* @__PURE__ */ jsx("table", {
|
|
9
|
+
ref,
|
|
10
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
11
|
+
...props
|
|
12
|
+
})
|
|
13
|
+
}));
|
|
14
|
+
Table.displayName = "Table";
|
|
15
|
+
const TableHeader = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("thead", {
|
|
16
|
+
ref,
|
|
17
|
+
className: cn("[&_tr]:border-b [&_tr]:border-border/50", className),
|
|
18
|
+
...props
|
|
19
|
+
}));
|
|
20
|
+
TableHeader.displayName = "TableHeader";
|
|
21
|
+
const TableBody = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("tbody", {
|
|
22
|
+
ref,
|
|
23
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
24
|
+
...props
|
|
25
|
+
}));
|
|
26
|
+
TableBody.displayName = "TableBody";
|
|
27
|
+
const TableFooter = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("tfoot", {
|
|
28
|
+
ref,
|
|
29
|
+
className: cn("border-t bg-muted/50 font-medium [&>tr]:last:border-b-0", className),
|
|
30
|
+
...props
|
|
31
|
+
}));
|
|
32
|
+
TableFooter.displayName = "TableFooter";
|
|
33
|
+
const TableRow = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("tr", {
|
|
34
|
+
ref,
|
|
35
|
+
className: cn("border-b border-border/50 transition-colors hover:bg-muted/50 data-[state=selected]:bg-muted", className),
|
|
36
|
+
...props
|
|
37
|
+
}));
|
|
38
|
+
TableRow.displayName = "TableRow";
|
|
39
|
+
const TableHead = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("th", {
|
|
40
|
+
ref,
|
|
41
|
+
className: cn("h-12 px-4 text-left align-middle font-medium text-muted-foreground [&:has([role=checkbox])]:pr-0", className),
|
|
42
|
+
...props
|
|
43
|
+
}));
|
|
44
|
+
TableHead.displayName = "TableHead";
|
|
45
|
+
const TableCell = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("td", {
|
|
46
|
+
ref,
|
|
47
|
+
"data-slot": "table-cell",
|
|
48
|
+
className: cn("p-4 align-middle [&:has([role=checkbox])]:pr-0", className),
|
|
49
|
+
...props
|
|
50
|
+
}));
|
|
51
|
+
TableCell.displayName = "TableCell";
|
|
52
|
+
const TableCaption = React.forwardRef(({ className,...props }, ref) => /* @__PURE__ */ jsx("caption", {
|
|
53
|
+
ref,
|
|
54
|
+
className: cn("mt-4 text-sm text-muted-foreground", className),
|
|
55
|
+
...props
|
|
56
|
+
}));
|
|
57
|
+
TableCaption.displayName = "TableCaption";
|
|
58
|
+
|
|
59
|
+
//#endregion
|
|
60
|
+
export { Table, TableBody, TableCaption, TableCell, TableFooter, TableHead, TableHeader, TableRow };
|
|
61
|
+
//# sourceMappingURL=table.js.map
|