@codefast/ui 0.3.13-canary.3 → 0.3.13
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 +44 -0
- package/dist/components/accordion.d.mts +37 -0
- package/dist/components/accordion.mjs +53 -0
- package/dist/components/alert-dialog.d.mts +74 -0
- package/dist/components/alert-dialog.mjs +92 -0
- package/dist/components/alert.d.mts +30 -0
- package/dist/components/alert.mjs +49 -0
- package/dist/components/aspect-ratio.d.mts +10 -0
- package/dist/components/aspect-ratio.mjs +12 -0
- package/dist/components/avatar.d.mts +21 -0
- package/dist/components/avatar.mjs +28 -0
- package/dist/components/badge.d.mts +24 -0
- package/dist/components/badge.mjs +56 -0
- package/dist/components/breadcrumb.d.mts +44 -0
- package/dist/components/breadcrumb.mjs +67 -0
- package/dist/components/button-group.d.mts +34 -0
- package/dist/components/button-group.mjs +53 -0
- package/dist/components/button.d.mts +38 -0
- package/dist/components/button.mjs +99 -0
- package/dist/components/calendar.d.mts +27 -0
- package/dist/components/calendar.mjs +114 -0
- package/dist/components/card.d.mts +41 -0
- package/dist/components/card.mjs +55 -0
- package/dist/components/carousel.d.mts +68 -0
- package/dist/components/carousel.mjs +135 -0
- package/dist/components/chart.d.mts +93 -0
- package/dist/components/chart.mjs +189 -0
- package/dist/components/checkbox-cards.d.mts +17 -0
- package/dist/components/checkbox-cards.mjs +30 -0
- package/dist/components/checkbox-group.d.mts +16 -0
- package/dist/components/checkbox-group.mjs +27 -0
- package/dist/components/checkbox.d.mts +11 -0
- package/dist/components/checkbox.mjs +20 -0
- package/dist/components/collapsible.d.mts +18 -0
- package/dist/components/collapsible.mjs +24 -0
- package/dist/components/command.d.mts +57 -0
- package/dist/components/command.mjs +92 -0
- package/dist/components/context-menu.d.mts +91 -0
- package/dist/components/context-menu.mjs +122 -0
- package/dist/components/dialog.d.mts +65 -0
- package/dist/components/dialog.mjs +93 -0
- package/dist/components/drawer.d.mts +65 -0
- package/dist/components/drawer.mjs +78 -0
- package/dist/components/dropdown-menu.d.mts +92 -0
- package/dist/components/dropdown-menu.mjs +129 -0
- package/dist/components/empty.d.mts +44 -0
- package/dist/components/empty.mjs +64 -0
- package/dist/components/field.d.mts +79 -0
- package/dist/components/field.mjs +132 -0
- package/dist/components/form.d.mts +48 -0
- package/dist/components/form.mjs +92 -0
- package/dist/components/hover-card.d.mts +26 -0
- package/dist/components/hover-card.mjs +35 -0
- package/dist/components/input-group.d.mts +61 -0
- package/dist/components/input-group.mjs +142 -0
- package/dist/components/input-number.d.mts +28 -0
- package/dist/components/input-number.mjs +61 -0
- package/dist/components/input-otp.d.mts +29 -0
- package/dist/components/input-otp.mjs +48 -0
- package/dist/components/input-password.d.mts +13 -0
- package/dist/components/input-password.mjs +38 -0
- package/dist/components/input-search.d.mts +20 -0
- package/dist/components/input-search.mjs +50 -0
- package/dist/components/input.d.mts +11 -0
- package/dist/components/input.mjs +14 -0
- package/dist/components/item.d.mts +82 -0
- package/dist/components/item.mjs +137 -0
- package/dist/components/kbd.d.mts +15 -0
- package/dist/components/kbd.mjs +19 -0
- package/dist/components/label.d.mts +11 -0
- package/dist/components/label.mjs +14 -0
- package/dist/components/menubar.d.mts +100 -0
- package/dist/components/menubar.mjs +133 -0
- package/dist/components/native-select.d.mts +19 -0
- package/dist/components/native-select.mjs +34 -0
- package/dist/components/navigation-menu.d.mts +44 -0
- package/dist/components/navigation-menu.mjs +79 -0
- package/dist/components/pagination.d.mts +46 -0
- package/dist/components/pagination.mjs +71 -0
- package/dist/components/popover.d.mts +30 -0
- package/dist/components/popover.mjs +41 -0
- package/dist/components/progress-circle.d.mts +124 -0
- package/dist/components/progress-circle.mjs +120 -0
- package/dist/components/progress.d.mts +12 -0
- package/dist/components/progress.mjs +19 -0
- package/dist/components/{radio-cards.d.ts → radio-cards.d.mts} +10 -5
- package/dist/components/radio-cards.mjs +29 -0
- package/dist/components/radio-group.d.mts +16 -0
- package/dist/components/radio-group.mjs +25 -0
- package/dist/components/radio.d.mts +14 -0
- package/dist/components/radio.mjs +16 -0
- package/dist/components/resizable.d.mts +23 -0
- package/dist/components/resizable.mjs +32 -0
- package/dist/components/scroll-area.d.mts +40 -0
- package/dist/components/scroll-area.mjs +101 -0
- package/dist/components/select.d.mts +62 -0
- package/dist/components/select.mjs +101 -0
- package/dist/components/separator.d.mts +32 -0
- package/dist/components/separator.mjs +45 -0
- package/dist/components/sheet.d.mts +75 -0
- package/dist/components/sheet.mjs +134 -0
- package/dist/components/sidebar.d.mts +195 -0
- package/dist/components/sidebar.mjs +375 -0
- package/dist/components/skeleton.d.mts +10 -0
- package/dist/components/skeleton.mjs +12 -0
- package/dist/components/slider.d.mts +15 -0
- package/dist/components/slider.mjs +40 -0
- package/dist/components/sonner.d.mts +10 -0
- package/dist/components/sonner.mjs +21 -0
- package/dist/components/spinner.d.mts +14 -0
- package/dist/components/spinner.mjs +40 -0
- package/dist/components/switch.d.mts +11 -0
- package/dist/components/switch.mjs +18 -0
- package/dist/components/table.d.mts +45 -0
- package/dist/components/table.mjs +65 -0
- package/dist/components/tabs.d.mts +26 -0
- package/dist/components/tabs.mjs +35 -0
- package/dist/components/textarea.d.mts +10 -0
- package/dist/components/textarea.mjs +12 -0
- package/dist/components/toggle-group.d.mts +30 -0
- package/dist/components/toggle-group.mjs +53 -0
- package/dist/components/toggle.d.mts +28 -0
- package/dist/components/toggle.mjs +53 -0
- package/dist/components/tooltip.d.mts +30 -0
- package/dist/components/tooltip.mjs +42 -0
- package/dist/hooks/{use-animated-value.d.ts → use-animated-value.d.mts} +4 -2
- package/dist/hooks/use-animated-value.mjs +62 -0
- package/dist/hooks/{use-copy-to-clipboard.d.ts → use-copy-to-clipboard.d.mts} +11 -6
- package/dist/hooks/use-copy-to-clipboard.mjs +43 -0
- package/dist/hooks/{use-is-mobile.d.ts → use-is-mobile.d.mts} +4 -2
- package/dist/hooks/use-is-mobile.mjs +26 -0
- package/dist/hooks/{use-media-query.d.ts → use-media-query.d.mts} +4 -2
- package/dist/hooks/use-media-query.mjs +50 -0
- package/dist/hooks/{use-mutation-observer.d.ts → use-mutation-observer.d.mts} +6 -3
- package/dist/hooks/use-mutation-observer.mjs +41 -0
- package/dist/hooks/use-pagination.d.mts +44 -0
- package/dist/hooks/use-pagination.mjs +107 -0
- package/dist/index.d.mts +69 -0
- package/dist/index.mjs +69 -0
- package/dist/lib/utils.d.mts +13 -0
- package/dist/lib/utils.mjs +10 -0
- package/dist/node_modules/.pnpm/clsx@2.1.1/node_modules/clsx/clsx.d.mts +6 -0
- package/dist/primitives/checkbox-group.d.mts +144 -0
- package/dist/primitives/checkbox-group.mjs +126 -0
- package/dist/primitives/input-number.d.mts +73 -0
- package/dist/primitives/input-number.mjs +514 -0
- package/dist/primitives/input.d.mts +72 -0
- package/dist/primitives/input.mjs +75 -0
- package/dist/primitives/progress-circle.d.mts +146 -0
- package/dist/primitives/progress-circle.mjs +178 -0
- package/package.json +164 -170
- package/dist/components/accordion.d.ts +0 -19
- package/dist/components/accordion.d.ts.map +0 -1
- package/dist/components/accordion.js +0 -26
- package/dist/components/alert-dialog.d.ts +0 -39
- package/dist/components/alert-dialog.d.ts.map +0 -1
- package/dist/components/alert-dialog.js +0 -39
- package/dist/components/alert.d.ts +0 -19
- package/dist/components/alert.d.ts.map +0 -1
- package/dist/components/alert.js +0 -41
- package/dist/components/aspect-ratio.d.ts +0 -7
- package/dist/components/aspect-ratio.d.ts.map +0 -1
- package/dist/components/aspect-ratio.js +0 -10
- package/dist/components/avatar.d.ts +0 -11
- package/dist/components/avatar.d.ts.map +0 -1
- package/dist/components/avatar.js +0 -17
- package/dist/components/badge.d.ts +0 -18
- package/dist/components/badge.d.ts.map +0 -1
- package/dist/components/badge.js +0 -59
- package/dist/components/breadcrumb.d.ts +0 -22
- package/dist/components/breadcrumb.d.ts.map +0 -1
- package/dist/components/breadcrumb.js +0 -31
- package/dist/components/button-group.d.ts +0 -20
- package/dist/components/button-group.d.ts.map +0 -1
- package/dist/components/button-group.js +0 -48
- package/dist/components/button.d.ts +0 -29
- package/dist/components/button.d.ts.map +0 -1
- package/dist/components/button.js +0 -92
- package/dist/components/calendar.d.ts +0 -13
- package/dist/components/calendar.d.ts.map +0 -1
- package/dist/components/calendar.js +0 -104
- package/dist/components/card.d.ts +0 -18
- package/dist/components/card.d.ts.map +0 -1
- package/dist/components/card.js +0 -27
- package/dist/components/carousel.d.ts +0 -38
- package/dist/components/carousel.d.ts.map +0 -1
- package/dist/components/carousel.js +0 -103
- package/dist/components/chart.d.ts +0 -58
- package/dist/components/chart.d.ts.map +0 -1
- package/dist/components/chart.js +0 -198
- package/dist/components/checkbox-cards.d.ts +0 -11
- package/dist/components/checkbox-cards.d.ts.map +0 -1
- package/dist/components/checkbox-cards.js +0 -16
- package/dist/components/checkbox-group.d.ts +0 -9
- package/dist/components/checkbox-group.d.ts.map +0 -1
- package/dist/components/checkbox-group.js +0 -15
- package/dist/components/checkbox.d.ts +0 -7
- package/dist/components/checkbox.d.ts.map +0 -1
- package/dist/components/checkbox.js +0 -12
- package/dist/components/collapsible.d.ts +0 -11
- package/dist/components/collapsible.d.ts.map +0 -1
- package/dist/components/collapsible.js +0 -16
- package/dist/components/command.d.ts +0 -26
- package/dist/components/command.d.ts.map +0 -1
- package/dist/components/command.js +0 -41
- package/dist/components/context-menu.d.ts +0 -42
- package/dist/components/context-menu.d.ts.map +0 -1
- package/dist/components/context-menu.js +0 -54
- package/dist/components/dialog.d.ts +0 -35
- package/dist/components/dialog.d.ts.map +0 -1
- package/dist/components/dialog.js +0 -41
- package/dist/components/drawer.d.ts +0 -34
- package/dist/components/drawer.d.ts.map +0 -1
- package/dist/components/drawer.js +0 -36
- package/dist/components/dropdown-menu.d.ts +0 -42
- package/dist/components/dropdown-menu.d.ts.map +0 -1
- package/dist/components/dropdown-menu.js +0 -54
- package/dist/components/empty.d.ts +0 -23
- package/dist/components/empty.d.ts.map +0 -1
- package/dist/components/empty.js +0 -47
- package/dist/components/field.d.ts +0 -42
- package/dist/components/field.d.ts.map +0 -1
- package/dist/components/field.js +0 -85
- package/dist/components/form.d.ts +0 -27
- package/dist/components/form.d.ts.map +0 -1
- package/dist/components/form.js +0 -76
- package/dist/components/hover-card.d.ts +0 -13
- package/dist/components/hover-card.d.ts.map +0 -1
- package/dist/components/hover-card.js +0 -20
- package/dist/components/input-group.d.ts +0 -37
- package/dist/components/input-group.d.ts.map +0 -1
- package/dist/components/input-group.js +0 -127
- package/dist/components/input-number.d.ts +0 -8
- package/dist/components/input-number.d.ts.map +0 -1
- package/dist/components/input-number.js +0 -20
- package/dist/components/input-otp.d.ts +0 -16
- package/dist/components/input-otp.d.ts.map +0 -1
- package/dist/components/input-otp.js +0 -25
- package/dist/components/input-password.d.ts +0 -7
- package/dist/components/input-password.d.ts.map +0 -1
- package/dist/components/input-password.js +0 -17
- package/dist/components/input-search.d.ts +0 -11
- package/dist/components/input-search.d.ts.map +0 -1
- package/dist/components/input-search.js +0 -22
- package/dist/components/input.d.ts +0 -6
- package/dist/components/input.d.ts.map +0 -1
- package/dist/components/input.js +0 -10
- package/dist/components/item.d.ts +0 -46
- package/dist/components/item.d.ts.map +0 -1
- package/dist/components/item.js +0 -94
- package/dist/components/kbd.d.ts +0 -8
- package/dist/components/kbd.d.ts.map +0 -1
- package/dist/components/kbd.js +0 -12
- package/dist/components/label.d.ts +0 -7
- package/dist/components/label.d.ts.map +0 -1
- package/dist/components/label.js +0 -11
- package/dist/components/menubar.d.ts +0 -44
- package/dist/components/menubar.d.ts.map +0 -1
- package/dist/components/menubar.js +0 -57
- package/dist/components/native-select.d.ts +0 -10
- package/dist/components/native-select.d.ts.map +0 -1
- package/dist/components/native-select.js +0 -16
- package/dist/components/navigation-menu.d.ts +0 -21
- package/dist/components/navigation-menu.d.ts.map +0 -1
- package/dist/components/navigation-menu.js +0 -43
- package/dist/components/pagination.d.ts +0 -26
- package/dist/components/pagination.d.ts.map +0 -1
- package/dist/components/pagination.js +0 -29
- package/dist/components/popover.d.ts +0 -15
- package/dist/components/popover.d.ts.map +0 -1
- package/dist/components/popover.js +0 -23
- package/dist/components/progress-circle.d.ts +0 -107
- package/dist/components/progress-circle.d.ts.map +0 -1
- package/dist/components/progress-circle.js +0 -83
- package/dist/components/progress.d.ts +0 -7
- package/dist/components/progress.d.ts.map +0 -1
- package/dist/components/progress.js +0 -13
- package/dist/components/radio-cards.d.ts.map +0 -1
- package/dist/components/radio-cards.js +0 -15
- package/dist/components/radio-group.d.ts +0 -9
- package/dist/components/radio-group.d.ts.map +0 -1
- package/dist/components/radio-group.js +0 -14
- package/dist/components/radio.d.ts +0 -8
- package/dist/components/radio.d.ts.map +0 -1
- package/dist/components/radio.js +0 -11
- package/dist/components/resizable.d.ts +0 -13
- package/dist/components/resizable.d.ts.map +0 -1
- package/dist/components/resizable.js +0 -18
- package/dist/components/scroll-area.d.ts +0 -28
- package/dist/components/scroll-area.d.ts.map +0 -1
- package/dist/components/scroll-area.js +0 -77
- package/dist/components/select.d.ts +0 -29
- package/dist/components/select.d.ts.map +0 -1
- package/dist/components/select.js +0 -49
- package/dist/components/separator.d.ts +0 -23
- package/dist/components/separator.d.ts.map +0 -1
- package/dist/components/separator.js +0 -36
- package/dist/components/sheet.d.ts +0 -43
- package/dist/components/sheet.d.ts.map +0 -1
- package/dist/components/sheet.js +0 -90
- package/dist/components/sidebar.d.ts +0 -102
- package/dist/components/sidebar.d.ts.map +0 -1
- package/dist/components/sidebar.js +0 -241
- package/dist/components/skeleton.d.ts +0 -6
- package/dist/components/skeleton.d.ts.map +0 -1
- package/dist/components/skeleton.js +0 -9
- package/dist/components/slider.d.ts +0 -7
- package/dist/components/slider.d.ts.map +0 -1
- package/dist/components/slider.js +0 -18
- package/dist/components/sonner.d.ts +0 -8
- package/dist/components/sonner.d.ts.map +0 -1
- package/dist/components/sonner.js +0 -18
- package/dist/components/spinner.d.ts +0 -8
- package/dist/components/spinner.d.ts.map +0 -1
- package/dist/components/spinner.js +0 -27
- package/dist/components/switch.d.ts +0 -7
- package/dist/components/switch.d.ts.map +0 -1
- package/dist/components/switch.js +0 -11
- package/dist/components/table.d.ts +0 -20
- package/dist/components/table.d.ts.map +0 -1
- package/dist/components/table.js +0 -30
- package/dist/components/tabs.d.ts +0 -13
- package/dist/components/tabs.d.ts.map +0 -1
- package/dist/components/tabs.js +0 -20
- package/dist/components/textarea.d.ts +0 -6
- package/dist/components/textarea.d.ts.map +0 -1
- package/dist/components/textarea.js +0 -9
- package/dist/components/toggle-group.d.ts +0 -16
- package/dist/components/toggle-group.d.ts.map +0 -1
- package/dist/components/toggle-group.js +0 -35
- package/dist/components/toggle.d.ts +0 -21
- package/dist/components/toggle.d.ts.map +0 -1
- package/dist/components/toggle.js +0 -49
- package/dist/components/tooltip.d.ts +0 -15
- package/dist/components/tooltip.d.ts.map +0 -1
- package/dist/components/tooltip.js +0 -23
- package/dist/hooks/use-animated-value.d.ts.map +0 -1
- package/dist/hooks/use-animated-value.js +0 -71
- package/dist/hooks/use-copy-to-clipboard.d.ts.map +0 -1
- package/dist/hooks/use-copy-to-clipboard.js +0 -46
- package/dist/hooks/use-is-mobile.d.ts.map +0 -1
- package/dist/hooks/use-is-mobile.js +0 -23
- package/dist/hooks/use-media-query.d.ts.map +0 -1
- package/dist/hooks/use-media-query.js +0 -53
- package/dist/hooks/use-mutation-observer.d.ts.map +0 -1
- package/dist/hooks/use-mutation-observer.js +0 -40
- package/dist/hooks/use-pagination.d.ts +0 -37
- package/dist/hooks/use-pagination.d.ts.map +0 -1
- package/dist/hooks/use-pagination.js +0 -107
- package/dist/index.d.ts +0 -131
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js +0 -68
- package/dist/lib/utils.d.ts +0 -10
- package/dist/lib/utils.d.ts.map +0 -1
- package/dist/lib/utils.js +0 -10
- package/dist/primitives/checkbox-group.d.ts +0 -123
- package/dist/primitives/checkbox-group.d.ts.map +0 -1
- package/dist/primitives/checkbox-group.js +0 -112
- package/dist/primitives/input-number.d.ts +0 -63
- package/dist/primitives/input-number.d.ts.map +0 -1
- package/dist/primitives/input-number.js +0 -458
- package/dist/primitives/input.d.ts +0 -67
- package/dist/primitives/input.d.ts.map +0 -1
- package/dist/primitives/input.js +0 -76
- package/dist/primitives/progress-circle.d.ts +0 -116
- package/dist/primitives/progress-circle.d.ts.map +0 -1
- package/dist/primitives/progress-circle.js +0 -163
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
import { VariantProps } from "../lib/utils.mjs";
|
|
2
|
+
import { Button } from "./button.mjs";
|
|
3
|
+
import { Separator } from "./separator.mjs";
|
|
4
|
+
import { Input } from "./input.mjs";
|
|
5
|
+
import { TooltipContent } from "./tooltip.mjs";
|
|
6
|
+
import * as _$_codefast_tailwind_variants0 from "@codefast/tailwind-variants";
|
|
7
|
+
import { ComponentProps, Dispatch, JSX, SetStateAction } from "react";
|
|
8
|
+
|
|
9
|
+
//#region src/components/sidebar.d.ts
|
|
10
|
+
declare const sidebarMenuButtonVariants: _$_codefast_tailwind_variants0.VariantFunctionType<{
|
|
11
|
+
size: {
|
|
12
|
+
sm: string[];
|
|
13
|
+
md: string[];
|
|
14
|
+
lg: string[];
|
|
15
|
+
};
|
|
16
|
+
variant: {
|
|
17
|
+
default: string;
|
|
18
|
+
outline: string[];
|
|
19
|
+
};
|
|
20
|
+
}, Record<string, never>>;
|
|
21
|
+
interface SidebarContextValue {
|
|
22
|
+
isMobile: boolean;
|
|
23
|
+
open: boolean;
|
|
24
|
+
openMobile: boolean;
|
|
25
|
+
setOpen: (open: boolean) => void;
|
|
26
|
+
setOpenMobile: Dispatch<SetStateAction<boolean>>;
|
|
27
|
+
state: "collapsed" | "expanded";
|
|
28
|
+
toggleSidebar: () => void;
|
|
29
|
+
}
|
|
30
|
+
declare const useSidebar: (consumerName: string) => SidebarContextValue;
|
|
31
|
+
interface SidebarProviderProps extends ComponentProps<"div"> {
|
|
32
|
+
defaultOpen?: boolean;
|
|
33
|
+
onOpenChange?: (open: boolean) => void;
|
|
34
|
+
open?: boolean;
|
|
35
|
+
}
|
|
36
|
+
declare function SidebarProvider({
|
|
37
|
+
children,
|
|
38
|
+
className,
|
|
39
|
+
defaultOpen,
|
|
40
|
+
onOpenChange: setOpenProperty,
|
|
41
|
+
open: openProperty,
|
|
42
|
+
style,
|
|
43
|
+
...props
|
|
44
|
+
}: SidebarProviderProps): JSX.Element;
|
|
45
|
+
interface SidebarProps extends ComponentProps<"div"> {
|
|
46
|
+
collapsible?: "icon" | "none" | "offcanvas";
|
|
47
|
+
side?: "left" | "right";
|
|
48
|
+
variant?: "floating" | "inset" | "sidebar";
|
|
49
|
+
}
|
|
50
|
+
declare function Sidebar({
|
|
51
|
+
children,
|
|
52
|
+
className,
|
|
53
|
+
collapsible,
|
|
54
|
+
side,
|
|
55
|
+
variant,
|
|
56
|
+
...props
|
|
57
|
+
}: SidebarProps): JSX.Element;
|
|
58
|
+
type SidebarTriggerProps = ComponentProps<typeof Button>;
|
|
59
|
+
declare function SidebarTrigger({
|
|
60
|
+
className,
|
|
61
|
+
onClick,
|
|
62
|
+
...props
|
|
63
|
+
}: SidebarTriggerProps): JSX.Element;
|
|
64
|
+
type SidebarRailProps = ComponentProps<"button">;
|
|
65
|
+
declare function SidebarRail({
|
|
66
|
+
className,
|
|
67
|
+
...props
|
|
68
|
+
}: SidebarRailProps): JSX.Element;
|
|
69
|
+
type SidebarInsetProps = ComponentProps<"main">;
|
|
70
|
+
declare function SidebarInset({
|
|
71
|
+
className,
|
|
72
|
+
...props
|
|
73
|
+
}: SidebarInsetProps): JSX.Element;
|
|
74
|
+
type SidebarInputProps = ComponentProps<typeof Input>;
|
|
75
|
+
declare function SidebarInput({
|
|
76
|
+
className,
|
|
77
|
+
...props
|
|
78
|
+
}: SidebarInputProps): JSX.Element;
|
|
79
|
+
type SidebarHeaderProps = ComponentProps<"div">;
|
|
80
|
+
declare function SidebarHeader({
|
|
81
|
+
className,
|
|
82
|
+
...props
|
|
83
|
+
}: SidebarHeaderProps): JSX.Element;
|
|
84
|
+
type SidebarFooterProps = ComponentProps<"div">;
|
|
85
|
+
declare function SidebarFooter({
|
|
86
|
+
className,
|
|
87
|
+
...props
|
|
88
|
+
}: SidebarFooterProps): JSX.Element;
|
|
89
|
+
type SidebarSeparatorProps = ComponentProps<typeof Separator>;
|
|
90
|
+
declare function SidebarSeparator({
|
|
91
|
+
className,
|
|
92
|
+
...props
|
|
93
|
+
}: SidebarSeparatorProps): JSX.Element;
|
|
94
|
+
type SidebarContentProps = ComponentProps<"div">;
|
|
95
|
+
declare function SidebarContent({
|
|
96
|
+
className,
|
|
97
|
+
...props
|
|
98
|
+
}: SidebarContentProps): JSX.Element;
|
|
99
|
+
type SidebarGroupProps = ComponentProps<"div">;
|
|
100
|
+
declare function SidebarGroup({
|
|
101
|
+
className,
|
|
102
|
+
...props
|
|
103
|
+
}: SidebarGroupProps): JSX.Element;
|
|
104
|
+
interface SidebarGroupLabelProps extends ComponentProps<"div"> {
|
|
105
|
+
asChild?: boolean;
|
|
106
|
+
}
|
|
107
|
+
declare function SidebarGroupLabel({
|
|
108
|
+
asChild,
|
|
109
|
+
className,
|
|
110
|
+
...props
|
|
111
|
+
}: SidebarGroupLabelProps): JSX.Element;
|
|
112
|
+
interface SidebarGroupActionProps extends ComponentProps<"button"> {
|
|
113
|
+
asChild?: boolean;
|
|
114
|
+
}
|
|
115
|
+
declare function SidebarGroupAction({
|
|
116
|
+
asChild,
|
|
117
|
+
className,
|
|
118
|
+
...props
|
|
119
|
+
}: SidebarGroupActionProps): JSX.Element;
|
|
120
|
+
type SidebarGroupContentProps = ComponentProps<"div">;
|
|
121
|
+
declare function SidebarGroupContent({
|
|
122
|
+
className,
|
|
123
|
+
...props
|
|
124
|
+
}: SidebarGroupContentProps): JSX.Element;
|
|
125
|
+
type SidebarMenuProps = ComponentProps<"ul">;
|
|
126
|
+
declare function SidebarMenu({
|
|
127
|
+
className,
|
|
128
|
+
...props
|
|
129
|
+
}: SidebarMenuProps): JSX.Element;
|
|
130
|
+
type SidebarMenuItemProps = ComponentProps<"li">;
|
|
131
|
+
declare function SidebarMenuItem({
|
|
132
|
+
className,
|
|
133
|
+
...props
|
|
134
|
+
}: SidebarMenuItemProps): JSX.Element;
|
|
135
|
+
interface SidebarMenuButtonProps extends ComponentProps<"button">, VariantProps<typeof sidebarMenuButtonVariants> {
|
|
136
|
+
asChild?: boolean;
|
|
137
|
+
isActive?: boolean;
|
|
138
|
+
tooltip?: ComponentProps<typeof TooltipContent> | string;
|
|
139
|
+
}
|
|
140
|
+
declare function SidebarMenuButton({
|
|
141
|
+
asChild,
|
|
142
|
+
className,
|
|
143
|
+
isActive,
|
|
144
|
+
size,
|
|
145
|
+
tooltip,
|
|
146
|
+
variant,
|
|
147
|
+
...props
|
|
148
|
+
}: SidebarMenuButtonProps): JSX.Element;
|
|
149
|
+
interface SidebarMenuActionProps extends ComponentProps<"button"> {
|
|
150
|
+
asChild?: boolean;
|
|
151
|
+
showOnHover?: boolean;
|
|
152
|
+
}
|
|
153
|
+
declare function SidebarMenuAction({
|
|
154
|
+
asChild,
|
|
155
|
+
className,
|
|
156
|
+
showOnHover,
|
|
157
|
+
...props
|
|
158
|
+
}: SidebarMenuActionProps): JSX.Element;
|
|
159
|
+
type SidebarMenuBadgeProps = ComponentProps<"div">;
|
|
160
|
+
declare function SidebarMenuBadge({
|
|
161
|
+
className,
|
|
162
|
+
...props
|
|
163
|
+
}: SidebarMenuBadgeProps): JSX.Element;
|
|
164
|
+
interface SidebarMenuSkeletonProps extends ComponentProps<"div"> {
|
|
165
|
+
showIcon?: boolean;
|
|
166
|
+
}
|
|
167
|
+
declare function SidebarMenuSkeleton({
|
|
168
|
+
className,
|
|
169
|
+
showIcon,
|
|
170
|
+
...props
|
|
171
|
+
}: SidebarMenuSkeletonProps): JSX.Element;
|
|
172
|
+
type SidebarMenuSubProps = ComponentProps<"ul">;
|
|
173
|
+
declare function SidebarMenuSub({
|
|
174
|
+
className,
|
|
175
|
+
...props
|
|
176
|
+
}: SidebarMenuSubProps): JSX.Element;
|
|
177
|
+
type SidebarMenuSubItemProps = ComponentProps<"li">;
|
|
178
|
+
declare function SidebarMenuSubItem({
|
|
179
|
+
className,
|
|
180
|
+
...props
|
|
181
|
+
}: SidebarMenuSubItemProps): JSX.Element;
|
|
182
|
+
interface SidebarMenuSubButtonProps extends ComponentProps<"a"> {
|
|
183
|
+
asChild?: boolean;
|
|
184
|
+
isActive?: boolean;
|
|
185
|
+
size?: "md" | "sm";
|
|
186
|
+
}
|
|
187
|
+
declare function SidebarMenuSubButton({
|
|
188
|
+
asChild,
|
|
189
|
+
className,
|
|
190
|
+
isActive,
|
|
191
|
+
size,
|
|
192
|
+
...props
|
|
193
|
+
}: SidebarMenuSubButtonProps): JSX.Element;
|
|
194
|
+
//#endregion
|
|
195
|
+
export { Sidebar, SidebarContent, type SidebarContentProps, SidebarFooter, type SidebarFooterProps, SidebarGroup, SidebarGroupAction, type SidebarGroupActionProps, SidebarGroupContent, type SidebarGroupContentProps, SidebarGroupLabel, type SidebarGroupLabelProps, type SidebarGroupProps, SidebarHeader, type SidebarHeaderProps, SidebarInput, type SidebarInputProps, SidebarInset, type SidebarInsetProps, SidebarMenu, SidebarMenuAction, type SidebarMenuActionProps, SidebarMenuBadge, type SidebarMenuBadgeProps, SidebarMenuButton, type SidebarMenuButtonProps, SidebarMenuItem, type SidebarMenuItemProps, type SidebarMenuProps, SidebarMenuSkeleton, type SidebarMenuSkeletonProps, SidebarMenuSub, SidebarMenuSubButton, type SidebarMenuSubButtonProps, SidebarMenuSubItem, type SidebarMenuSubItemProps, type SidebarMenuSubProps, type SidebarProps, SidebarProvider, type SidebarProviderProps, SidebarRail, type SidebarRailProps, SidebarSeparator, type SidebarSeparatorProps, SidebarTrigger, type SidebarTriggerProps, sidebarMenuButtonVariants, useSidebar };
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn, tv } from "../lib/utils.mjs";
|
|
3
|
+
import { Button } from "./button.mjs";
|
|
4
|
+
import { Separator } from "./separator.mjs";
|
|
5
|
+
import { Input } from "./input.mjs";
|
|
6
|
+
import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle } from "./sheet.mjs";
|
|
7
|
+
import { Skeleton } from "./skeleton.mjs";
|
|
8
|
+
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./tooltip.mjs";
|
|
9
|
+
import { useIsMobile } from "../hooks/use-is-mobile.mjs";
|
|
10
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
11
|
+
import { PanelLeftIcon } from "lucide-react";
|
|
12
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
13
|
+
import { useCallback, useEffect, useState } from "react";
|
|
14
|
+
import { createContext } from "@radix-ui/react-context";
|
|
15
|
+
//#region src/components/sidebar.tsx
|
|
16
|
+
const sidebarMenuButtonVariants = tv({
|
|
17
|
+
base: [
|
|
18
|
+
"peer/menu-button flex w-full items-center gap-2 overflow-hidden p-2",
|
|
19
|
+
"rounded-md ring-sidebar-ring outline-hidden",
|
|
20
|
+
"text-left text-sm",
|
|
21
|
+
"transition-[width,height,padding]",
|
|
22
|
+
"group-has-data-[sidebar=menu-action]/menu-item:pr-8",
|
|
23
|
+
"group-data-[collapsible=icon]:size-8! group-data-[collapsible=icon]:p-2!",
|
|
24
|
+
"hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
25
|
+
"focus-visible:ring-3",
|
|
26
|
+
"active:bg-sidebar-accent active:text-sidebar-accent-foreground",
|
|
27
|
+
"disabled:pointer-events-none disabled:opacity-50",
|
|
28
|
+
"aria-disabled:pointer-events-none aria-disabled:opacity-50",
|
|
29
|
+
"data-open:hover:bg-sidebar-accent data-open:hover:text-sidebar-accent-foreground",
|
|
30
|
+
"data-active:bg-sidebar-accent data-active:font-medium data-active:text-sidebar-accent-foreground",
|
|
31
|
+
"[&>span:last-child]:truncate",
|
|
32
|
+
"[&>svg]:size-4 [&>svg]:shrink-0"
|
|
33
|
+
],
|
|
34
|
+
defaultVariants: {
|
|
35
|
+
size: "md",
|
|
36
|
+
variant: "default"
|
|
37
|
+
},
|
|
38
|
+
variants: {
|
|
39
|
+
size: {
|
|
40
|
+
sm: ["h-7", "text-xs"],
|
|
41
|
+
md: ["h-8", "text-sm"],
|
|
42
|
+
lg: ["h-12 text-sm", "group-data-[collapsible=icon]:p-0!"]
|
|
43
|
+
},
|
|
44
|
+
variant: {
|
|
45
|
+
default: "hover:bg-sidebar-accent hover:text-sidebar-accent-foreground",
|
|
46
|
+
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))]"]
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
});
|
|
50
|
+
const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
51
|
+
const SIDEBAR_COOKIE_MAX_AGE = 3600 * 24 * 7;
|
|
52
|
+
const SIDEBAR_WIDTH = "16rem";
|
|
53
|
+
const SIDEBAR_WIDTH_MOBILE = "18rem";
|
|
54
|
+
const SIDEBAR_WIDTH_ICON = "3.0625rem";
|
|
55
|
+
const SIDEBAR_KEYBOARD_SHORTCUT = "b";
|
|
56
|
+
const [SidebarContextProvider, useSidebar] = createContext("SidebarProvider");
|
|
57
|
+
function SidebarProvider({ children, className, defaultOpen = true, onOpenChange: setOpenProperty, open: openProperty, style, ...props }) {
|
|
58
|
+
const isMobile = useIsMobile();
|
|
59
|
+
const [openMobile, setOpenMobile] = useState(false);
|
|
60
|
+
const [isOpen, setIsOpen] = useState(defaultOpen);
|
|
61
|
+
const open = openProperty ?? isOpen;
|
|
62
|
+
const setOpen = useCallback((value) => {
|
|
63
|
+
const openState = typeof value === "function" ? value(open) : value;
|
|
64
|
+
if (setOpenProperty) setOpenProperty(openState);
|
|
65
|
+
else setIsOpen(openState);
|
|
66
|
+
document.cookie = `${SIDEBAR_COOKIE_NAME}=${openState.toString()}; path=/; max-age=${SIDEBAR_COOKIE_MAX_AGE.toString()}`;
|
|
67
|
+
}, [setOpenProperty, open]);
|
|
68
|
+
const toggleSidebar = useCallback(() => {
|
|
69
|
+
if (isMobile) setOpenMobile((currentValue) => !currentValue);
|
|
70
|
+
else setOpen((currentValue) => !currentValue);
|
|
71
|
+
}, [isMobile, setOpen]);
|
|
72
|
+
useEffect(() => {
|
|
73
|
+
const handleKeyDown = (event) => {
|
|
74
|
+
if (event.key === SIDEBAR_KEYBOARD_SHORTCUT && (event.metaKey || event.ctrlKey)) {
|
|
75
|
+
event.preventDefault();
|
|
76
|
+
toggleSidebar();
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
window.addEventListener("keydown", handleKeyDown);
|
|
80
|
+
return () => {
|
|
81
|
+
window.removeEventListener("keydown", handleKeyDown);
|
|
82
|
+
};
|
|
83
|
+
}, [toggleSidebar]);
|
|
84
|
+
return /* @__PURE__ */ jsx(SidebarContextProvider, {
|
|
85
|
+
isMobile,
|
|
86
|
+
open,
|
|
87
|
+
openMobile,
|
|
88
|
+
setOpen,
|
|
89
|
+
setOpenMobile,
|
|
90
|
+
state: open ? "expanded" : "collapsed",
|
|
91
|
+
toggleSidebar,
|
|
92
|
+
children: /* @__PURE__ */ jsx(TooltipProvider, {
|
|
93
|
+
delayDuration: 0,
|
|
94
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
95
|
+
className: cn("group/sidebar-wrapper flex min-h-svh w-full", "has-data-[variant=inset]:bg-sidebar", className),
|
|
96
|
+
"data-slot": "sidebar-wrapper",
|
|
97
|
+
style: {
|
|
98
|
+
"--sidebar-width": SIDEBAR_WIDTH,
|
|
99
|
+
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
100
|
+
...style
|
|
101
|
+
},
|
|
102
|
+
...props,
|
|
103
|
+
children
|
|
104
|
+
})
|
|
105
|
+
})
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
const SIDEBAR_NAME = "Sidebar";
|
|
109
|
+
function Sidebar({ children, className, collapsible = "offcanvas", side = "left", variant = "sidebar", ...props }) {
|
|
110
|
+
const { isMobile, openMobile, setOpenMobile, state } = useSidebar(SIDEBAR_NAME);
|
|
111
|
+
if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
|
|
112
|
+
className: cn("flex h-full w-(--sidebar-width) flex-col", "bg-sidebar text-sidebar-foreground", className),
|
|
113
|
+
"data-slot": "sidebar",
|
|
114
|
+
...props,
|
|
115
|
+
children
|
|
116
|
+
});
|
|
117
|
+
if (isMobile) return /* @__PURE__ */ jsx(Sheet, {
|
|
118
|
+
open: openMobile,
|
|
119
|
+
onOpenChange: setOpenMobile,
|
|
120
|
+
...props,
|
|
121
|
+
children: /* @__PURE__ */ jsxs(SheetContent, {
|
|
122
|
+
className: cn("w-(--sidebar-width) p-0", "bg-sidebar text-sidebar-foreground", "[&>button]:hidden"),
|
|
123
|
+
"data-mobile": "true",
|
|
124
|
+
"data-sidebar": "sidebar",
|
|
125
|
+
"data-slot": "sidebar",
|
|
126
|
+
side,
|
|
127
|
+
style: { "--sidebar-width": SIDEBAR_WIDTH_MOBILE },
|
|
128
|
+
children: [/* @__PURE__ */ jsxs(SheetHeader, {
|
|
129
|
+
className: "sr-only",
|
|
130
|
+
children: [/* @__PURE__ */ jsx(SheetTitle, { children: "Sidebar" }), /* @__PURE__ */ jsx(SheetDescription, { children: "Displays the mobile sidebar." })]
|
|
131
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
132
|
+
className: "flex h-full w-full flex-col",
|
|
133
|
+
children
|
|
134
|
+
})]
|
|
135
|
+
})
|
|
136
|
+
});
|
|
137
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
138
|
+
className: cn("group peer hidden", "text-sidebar-foreground", "md:block", className),
|
|
139
|
+
"data-collapsible": state === "collapsed" ? collapsible : "",
|
|
140
|
+
"data-side": side,
|
|
141
|
+
"data-slot": "sidebar",
|
|
142
|
+
"data-state": state,
|
|
143
|
+
"data-variant": variant,
|
|
144
|
+
children: [/* @__PURE__ */ jsx("div", {
|
|
145
|
+
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)"),
|
|
146
|
+
"data-slot": "sidebar-gap"
|
|
147
|
+
}), /* @__PURE__ */ jsx("div", {
|
|
148
|
+
className: cn("fixed inset-y-0 z-10 hidden", "h-svh w-(--sidebar-width)", "transition-[left,right,width] duration-200 ease-linear", "md:flex", 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-right:border-l group-data-side-left:border-r", className),
|
|
149
|
+
"data-slot": "sidebar-container",
|
|
150
|
+
...props,
|
|
151
|
+
children: /* @__PURE__ */ jsx("div", {
|
|
152
|
+
className: cn("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"),
|
|
153
|
+
"data-sidebar": "sidebar",
|
|
154
|
+
"data-slot": "sidebar-inner",
|
|
155
|
+
children
|
|
156
|
+
})
|
|
157
|
+
})]
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
const SIDEBAR_TRIGGER_NAME = "SidebarTrigger";
|
|
161
|
+
function SidebarTrigger({ className, onClick, ...props }) {
|
|
162
|
+
const { toggleSidebar } = useSidebar(SIDEBAR_TRIGGER_NAME);
|
|
163
|
+
return /* @__PURE__ */ jsxs(Button, {
|
|
164
|
+
className: cn("size-7", className),
|
|
165
|
+
"data-sidebar": "trigger",
|
|
166
|
+
"data-slot": "sidebar-trigger",
|
|
167
|
+
size: "icon",
|
|
168
|
+
variant: "ghost",
|
|
169
|
+
onClick: (event) => {
|
|
170
|
+
onClick?.(event);
|
|
171
|
+
toggleSidebar();
|
|
172
|
+
},
|
|
173
|
+
...props,
|
|
174
|
+
children: [/* @__PURE__ */ jsx(PanelLeftIcon, {}), /* @__PURE__ */ jsx("span", {
|
|
175
|
+
className: "sr-only",
|
|
176
|
+
children: "Toggle Sidebar"
|
|
177
|
+
})]
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
const SIDEBAR_RAIL_NAME = "SidebarRail";
|
|
181
|
+
function SidebarRail({ className, ...props }) {
|
|
182
|
+
const { toggleSidebar } = useSidebar(SIDEBAR_RAIL_NAME);
|
|
183
|
+
return /* @__PURE__ */ jsx("button", {
|
|
184
|
+
className: cn("absolute inset-y-0 z-20 hidden", "w-4 -translate-x-1/2 transition-all ease-linear", "in-data-side-right:cursor-e-resize", "in-data-side-left:cursor-w-resize", "group-data-[collapsible=offcanvas]:translate-x-0", "group-data-side-right:left-0", "group-data-side-left:-right-4", "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", "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),
|
|
185
|
+
"data-sidebar": "rail",
|
|
186
|
+
"data-slot": "sidebar-rail",
|
|
187
|
+
title: "Toggle Sidebar",
|
|
188
|
+
type: "button",
|
|
189
|
+
onClick: toggleSidebar,
|
|
190
|
+
...props
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
function SidebarInset({ className, ...props }) {
|
|
194
|
+
return /* @__PURE__ */ jsx("main", {
|
|
195
|
+
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),
|
|
196
|
+
"data-slot": "sidebar-inset",
|
|
197
|
+
...props
|
|
198
|
+
});
|
|
199
|
+
}
|
|
200
|
+
function SidebarInput({ className, ...props }) {
|
|
201
|
+
return /* @__PURE__ */ jsx(Input, {
|
|
202
|
+
className: cn("h-8 w-full", "bg-background shadow-none", className),
|
|
203
|
+
"data-sidebar": "input",
|
|
204
|
+
"data-slot": "sidebar-input",
|
|
205
|
+
...props
|
|
206
|
+
});
|
|
207
|
+
}
|
|
208
|
+
function SidebarHeader({ className, ...props }) {
|
|
209
|
+
return /* @__PURE__ */ jsx("div", {
|
|
210
|
+
className: cn("flex flex-col gap-2", "p-2", className),
|
|
211
|
+
"data-sidebar": "header",
|
|
212
|
+
"data-slot": "sidebar-header",
|
|
213
|
+
...props
|
|
214
|
+
});
|
|
215
|
+
}
|
|
216
|
+
function SidebarFooter({ className, ...props }) {
|
|
217
|
+
return /* @__PURE__ */ jsx("div", {
|
|
218
|
+
className: cn("flex flex-col gap-2", "p-2", className),
|
|
219
|
+
"data-sidebar": "footer",
|
|
220
|
+
"data-slot": "sidebar-footer",
|
|
221
|
+
...props
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
function SidebarSeparator({ className, ...props }) {
|
|
225
|
+
return /* @__PURE__ */ jsx(Separator, {
|
|
226
|
+
className: cn("mx-2 w-auto", "bg-sidebar-border", className),
|
|
227
|
+
"data-sidebar": "separator",
|
|
228
|
+
"data-slot": "sidebar-separator",
|
|
229
|
+
...props
|
|
230
|
+
});
|
|
231
|
+
}
|
|
232
|
+
function SidebarContent({ className, ...props }) {
|
|
233
|
+
return /* @__PURE__ */ jsx("div", {
|
|
234
|
+
className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto", "group-data-[collapsible=icon]:overflow-hidden", className),
|
|
235
|
+
"data-sidebar": "content",
|
|
236
|
+
"data-slot": "sidebar-content",
|
|
237
|
+
...props
|
|
238
|
+
});
|
|
239
|
+
}
|
|
240
|
+
function SidebarGroup({ className, ...props }) {
|
|
241
|
+
return /* @__PURE__ */ jsx("div", {
|
|
242
|
+
className: cn("relative flex w-full min-w-0 flex-col", "p-2", className),
|
|
243
|
+
"data-sidebar": "group",
|
|
244
|
+
"data-slot": "sidebar-group",
|
|
245
|
+
...props
|
|
246
|
+
});
|
|
247
|
+
}
|
|
248
|
+
function SidebarGroupLabel({ asChild = false, className, ...props }) {
|
|
249
|
+
return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
|
|
250
|
+
className: cn("flex h-8 shrink-0 items-center px-2", "rounded-md ring-sidebar-ring outline-hidden", "truncate text-xs font-medium text-sidebar-foreground/70", "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),
|
|
251
|
+
"data-sidebar": "group-label",
|
|
252
|
+
"data-slot": "sidebar-group-label",
|
|
253
|
+
...props
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
function SidebarGroupAction({ asChild = false, className, ...props }) {
|
|
257
|
+
return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
|
|
258
|
+
className: cn("absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center p-0", "rounded-md ring-sidebar-ring outline-hidden", "text-sidebar-foreground", "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),
|
|
259
|
+
"data-sidebar": "group-action",
|
|
260
|
+
"data-slot": "sidebar-group-action",
|
|
261
|
+
...props
|
|
262
|
+
});
|
|
263
|
+
}
|
|
264
|
+
function SidebarGroupContent({ className, ...props }) {
|
|
265
|
+
return /* @__PURE__ */ jsx("div", {
|
|
266
|
+
className: cn("w-full", "text-sm", className),
|
|
267
|
+
"data-sidebar": "group-content",
|
|
268
|
+
"data-slot": "sidebar-group-content",
|
|
269
|
+
...props
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
function SidebarMenu({ className, ...props }) {
|
|
273
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
274
|
+
className: cn("flex w-full min-w-0 flex-col gap-1", className),
|
|
275
|
+
"data-sidebar": "menu",
|
|
276
|
+
"data-slot": "sidebar-menu",
|
|
277
|
+
...props
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
function SidebarMenuItem({ className, ...props }) {
|
|
281
|
+
return /* @__PURE__ */ jsx("li", {
|
|
282
|
+
className: cn("group/menu-item relative", className),
|
|
283
|
+
"data-sidebar": "menu-item",
|
|
284
|
+
"data-slot": "sidebar-menu-item",
|
|
285
|
+
...props
|
|
286
|
+
});
|
|
287
|
+
}
|
|
288
|
+
const SIDEBAR_MENU_BUTTON_NAME = "SidebarMenuButton";
|
|
289
|
+
function SidebarMenuButton({ asChild = false, className, isActive = false, size = "md", tooltip, variant = "default", ...props }) {
|
|
290
|
+
const Component = asChild ? Slot : "button";
|
|
291
|
+
const { isMobile, state } = useSidebar(SIDEBAR_MENU_BUTTON_NAME);
|
|
292
|
+
const button = /* @__PURE__ */ jsx(Component, {
|
|
293
|
+
className: cn(sidebarMenuButtonVariants({
|
|
294
|
+
size,
|
|
295
|
+
variant
|
|
296
|
+
}), className),
|
|
297
|
+
"data-active": isActive,
|
|
298
|
+
"data-sidebar": "menu-button",
|
|
299
|
+
"data-size": size,
|
|
300
|
+
"data-slot": "sidebar-menu-button",
|
|
301
|
+
...props
|
|
302
|
+
});
|
|
303
|
+
if (!tooltip) return button;
|
|
304
|
+
if (typeof tooltip === "string") tooltip = { children: tooltip };
|
|
305
|
+
return /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
306
|
+
asChild: true,
|
|
307
|
+
children: button
|
|
308
|
+
}), /* @__PURE__ */ jsx(TooltipContent, {
|
|
309
|
+
align: "center",
|
|
310
|
+
hidden: state !== "collapsed" || isMobile,
|
|
311
|
+
side: "right",
|
|
312
|
+
...tooltip
|
|
313
|
+
})] });
|
|
314
|
+
}
|
|
315
|
+
function SidebarMenuAction({ asChild = false, className, showOnHover = false, ...props }) {
|
|
316
|
+
return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
|
|
317
|
+
className: cn("absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center p-0", "rounded-md ring-sidebar-ring outline-hidden", "text-sidebar-foreground", "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 && "group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 peer-data-active/menu-button:text-sidebar-accent-foreground md:opacity-0 data-open:opacity-100", className),
|
|
318
|
+
"data-sidebar": "menu-action",
|
|
319
|
+
"data-slot": "sidebar-menu-action",
|
|
320
|
+
...props
|
|
321
|
+
});
|
|
322
|
+
}
|
|
323
|
+
function SidebarMenuBadge({ className, ...props }) {
|
|
324
|
+
return /* @__PURE__ */ jsx("div", {
|
|
325
|
+
className: cn("absolute right-1 flex h-5 min-w-5 items-center justify-center px-1", "rounded-md", "text-xs font-medium text-sidebar-foreground tabular-nums", "pointer-events-none select-none", "group-data-[collapsible=icon]:hidden", "peer-hover/menu-button:text-sidebar-accent-foreground", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "peer-data-[size=sm]/menu-button:top-1", "peer-data-active/menu-button:text-sidebar-accent-foreground", className),
|
|
326
|
+
"data-sidebar": "menu-badge",
|
|
327
|
+
"data-slot": "sidebar-menu-badge",
|
|
328
|
+
...props
|
|
329
|
+
});
|
|
330
|
+
}
|
|
331
|
+
function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
|
|
332
|
+
const [width] = useState(() => `${String(Math.floor(Math.random() * 40) + 50)}%`);
|
|
333
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
334
|
+
className: cn("flex h-8 items-center gap-2 px-2", "rounded-md", className),
|
|
335
|
+
"data-sidebar": "menu-skeleton",
|
|
336
|
+
"data-slot": "sidebar-menu-skeleton",
|
|
337
|
+
...props,
|
|
338
|
+
children: [showIcon ? /* @__PURE__ */ jsx(Skeleton, {
|
|
339
|
+
className: cn("size-4", "rounded-md"),
|
|
340
|
+
"data-sidebar": "menu-skeleton-icon"
|
|
341
|
+
}) : null, /* @__PURE__ */ jsx(Skeleton, {
|
|
342
|
+
className: "h-4 max-w-(--skeleton-width) flex-1",
|
|
343
|
+
"data-sidebar": "menu-skeleton-text",
|
|
344
|
+
style: { "--skeleton-width": width }
|
|
345
|
+
})]
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
function SidebarMenuSub({ className, ...props }) {
|
|
349
|
+
return /* @__PURE__ */ jsx("ul", {
|
|
350
|
+
className: cn("mx-3.5 flex min-w-0 flex-col gap-1 px-2.5 py-0.5", "border-l border-sidebar-border", "translate-x-px", "group-data-[collapsible=icon]:hidden", className),
|
|
351
|
+
"data-sidebar": "menu-sub",
|
|
352
|
+
"data-slot": "sidebar-menu-sub",
|
|
353
|
+
...props
|
|
354
|
+
});
|
|
355
|
+
}
|
|
356
|
+
function SidebarMenuSubItem({ className, ...props }) {
|
|
357
|
+
return /* @__PURE__ */ jsx("li", {
|
|
358
|
+
className: cn("group/menu-sub-item relative", className),
|
|
359
|
+
"data-sidebar": "menu-sub-item",
|
|
360
|
+
"data-slot": "sidebar-menu-sub-item",
|
|
361
|
+
...props
|
|
362
|
+
});
|
|
363
|
+
}
|
|
364
|
+
function SidebarMenuSubButton({ asChild = false, className, isActive = false, size = "md", ...props }) {
|
|
365
|
+
return /* @__PURE__ */ jsx(asChild ? Slot : "a", {
|
|
366
|
+
className: cn("flex h-7 min-w-0 items-center gap-2 overflow-hidden px-2", "rounded-md ring-sidebar-ring outline-hidden", "text-sidebar-foreground", "-translate-x-px", "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:bg-sidebar-accent data-active:text-sidebar-accent-foreground", "group-data-[collapsible=icon]:hidden", "[&>span:last-child]:truncate", "[&>svg]:size-4 [&>svg]:shrink-0 [&>svg]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", className),
|
|
367
|
+
"data-active": isActive,
|
|
368
|
+
"data-sidebar": "menu-sub-button",
|
|
369
|
+
"data-size": size,
|
|
370
|
+
"data-slot": "sidebar-menu-sub-button",
|
|
371
|
+
...props
|
|
372
|
+
});
|
|
373
|
+
}
|
|
374
|
+
//#endregion
|
|
375
|
+
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 };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ComponentProps, JSX } from "react";
|
|
2
|
+
|
|
3
|
+
//#region src/components/skeleton.d.ts
|
|
4
|
+
type SkeletonProps = ComponentProps<"div">;
|
|
5
|
+
declare function Skeleton({
|
|
6
|
+
className,
|
|
7
|
+
...props
|
|
8
|
+
}: SkeletonProps): JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { Skeleton, type SkeletonProps };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { cn } from "../lib/utils.mjs";
|
|
2
|
+
import { jsx } from "react/jsx-runtime";
|
|
3
|
+
//#region src/components/skeleton.tsx
|
|
4
|
+
function Skeleton({ className, ...props }) {
|
|
5
|
+
return /* @__PURE__ */ jsx("div", {
|
|
6
|
+
className: cn("rounded-lg", "bg-muted", "animate-pulse", className),
|
|
7
|
+
"data-slot": "skeleton",
|
|
8
|
+
...props
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//#endregion
|
|
12
|
+
export { Skeleton };
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ComponentProps, JSX } from "react";
|
|
2
|
+
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
3
|
+
|
|
4
|
+
//#region src/components/slider.d.ts
|
|
5
|
+
type SliderProps = ComponentProps<typeof SliderPrimitive.Root>;
|
|
6
|
+
declare function Slider({
|
|
7
|
+
className,
|
|
8
|
+
defaultValue,
|
|
9
|
+
max,
|
|
10
|
+
min,
|
|
11
|
+
value,
|
|
12
|
+
...props
|
|
13
|
+
}: SliderProps): JSX.Element;
|
|
14
|
+
//#endregion
|
|
15
|
+
export { Slider, type SliderProps };
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import { cn } from "../lib/utils.mjs";
|
|
3
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
4
|
+
import { useMemo } from "react";
|
|
5
|
+
import * as SliderPrimitive from "@radix-ui/react-slider";
|
|
6
|
+
//#region src/components/slider.tsx
|
|
7
|
+
function Slider({ className, defaultValue, max = 100, min = 0, value, ...props }) {
|
|
8
|
+
const _values = useMemo(() => {
|
|
9
|
+
if (Array.isArray(value)) return value;
|
|
10
|
+
return Array.isArray(defaultValue) ? defaultValue : [min, max];
|
|
11
|
+
}, [
|
|
12
|
+
value,
|
|
13
|
+
defaultValue,
|
|
14
|
+
min,
|
|
15
|
+
max
|
|
16
|
+
]);
|
|
17
|
+
return /* @__PURE__ */ jsxs(SliderPrimitive.Root, {
|
|
18
|
+
className: cn("relative flex w-full items-center", "touch-none select-none", "data-vertical:h-full data-vertical:min-h-44 data-vertical:w-auto data-vertical:flex-col", "data-disabled:opacity-50", className),
|
|
19
|
+
"data-slot": "slider",
|
|
20
|
+
defaultValue,
|
|
21
|
+
max,
|
|
22
|
+
min,
|
|
23
|
+
value,
|
|
24
|
+
...props,
|
|
25
|
+
children: [/* @__PURE__ */ jsx(SliderPrimitive.Track, {
|
|
26
|
+
className: cn("relative", "w-full grow overflow-hidden", "rounded-full", "bg-input", "data-horizontal:h-1 data-horizontal:w-full", "data-vertical:h-full data-vertical:w-1"),
|
|
27
|
+
"data-slot": "slider-track",
|
|
28
|
+
children: /* @__PURE__ */ jsx(SliderPrimitive.Range, {
|
|
29
|
+
className: cn("absolute", "bg-primary", "data-horizontal:h-full", "data-vertical:w-full"),
|
|
30
|
+
"data-slot": "slider-range"
|
|
31
|
+
})
|
|
32
|
+
}), Array.from({ length: _values.length }, (_, index) => /* @__PURE__ */ jsx(SliderPrimitive.Thumb, {
|
|
33
|
+
"aria-label": "Volume",
|
|
34
|
+
className: cn("flex size-4 items-center justify-center", "rounded-full border-2 border-primary", "bg-primary shadow-sm outline-hidden", "after:size-full after:rounded-full after:bg-background after:transition-[width,height]", "focus-visible:ring-4 focus-visible:ring-primary/20", "active:not-data-disabled:after:size-1", "dark:focus-visible:ring-primary/40"),
|
|
35
|
+
"data-slot": "slider-thumb"
|
|
36
|
+
}, index))]
|
|
37
|
+
});
|
|
38
|
+
}
|
|
39
|
+
//#endregion
|
|
40
|
+
export { Slider };
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { JSX } from "react";
|
|
2
|
+
import { ToasterProps as ToasterProps$1, toast, useSonner } from "sonner";
|
|
3
|
+
|
|
4
|
+
//#region src/components/sonner.d.ts
|
|
5
|
+
type ToasterProps = ToasterProps$1;
|
|
6
|
+
declare function Toaster({
|
|
7
|
+
...props
|
|
8
|
+
}: ToasterProps): JSX.Element;
|
|
9
|
+
//#endregion
|
|
10
|
+
export { Toaster, type ToasterProps, toast, useSonner };
|