sidebar
yyc3-knowledge-base/sidebarUnverifiedComponent
shadcn/ui publishes no description for this item.
Install it
npx shadcn@latest add https://raw.githubusercontent.com/YYC-Cube/YYC3-Knowledge-Base/main/YYC3-D/ui/apps/v4/sidebar.jsonSource
1"use client"23import * as React from "react"4import { Slot } from "@radix-ui/react-slot"5import { cva, type VariantProps } from "class-variance-authority"6import { PanelLeft } from "lucide-react"78import { useIsMobile } from "@/registry/new-york/hooks/use-mobile"9import { cn } from "@/registry/new-york/lib/utils"10import { Button } from "@/registry/new-york/ui/button"11import { Input } from "@/registry/new-york/ui/input"12import { Separator } from "@/registry/new-york/ui/separator"13import {14 Sheet,15 SheetContent,16 SheetDescription,17 SheetHeader,18 SheetTitle,19} from "@/registry/new-york/ui/sheet"20import { Skeleton } from "@/registry/new-york/ui/skeleton"21import {22 Tooltip,23 TooltipContent,24 TooltipProvider,25 TooltipTrigger,26} from "@/registry/new-york/ui/tooltip"2728const SIDEBAR_COOKIE_NAME = "sidebar_state"29const SIDEBAR_COOKIE_MAX_AGE = 60 * 60 * 24 * 730const SIDEBAR_WIDTH = "16rem"31const SIDEBAR_WIDTH_MOBILE = "18rem"32const SIDEBAR_WIDTH_ICON = "3rem"33const SIDEBAR_KEYBOARD_SHORTCUT = "b"3435type SidebarContextProps = {36 state: "expanded" | "collapsed"37 open: boolean38 setOpen: (open: boolean) => void39 openMobile: boolean40 setOpenMobile: (open: boolean) => void41 isMobile: boolean42 toggleSidebar: () => void43}4445const SidebarContext = React.createContext<SidebarContextProps | null>(null)4647function useSidebar() {48 const context = React.useContext(SidebarContext)49 if (!context) {50 throw new Error("useSidebar must be used within a SidebarProvider.")51 }5253 return context54}5556const SidebarProvider = React.forwardRef<57 HTMLDivElement,58 React.ComponentProps<"div"> & {59 defaultOpen?: boolean60 open?: boolean61 onOpenChange?: (open: boolean) => void62 }63>(64 (65 {66 defaultOpen = true,67 open: openProp,68 onOpenChange: setOpenProp,69 className,70 style,71 children,72 ...props73 },74 ref75 ) => {76 const isMobile = useIsMobile()77 const [openMobile, setOpenMobile] = React.useState(false)7879 // This is the internal state of the sidebar.80 // We use openProp and setOpenProp for control from outside the component.81 const [_open, _setOpen] = React.useState(defaultOpen)82 const open = openProp ?? _open83 const setOpen = React.useCallback(84 (value: boolean | ((value: boolean) => boolean)) => {85 const openState = typeof value === "function" ? value(open) : value86 if (setOpenProp) {87 setOpenProp(openState)88 } else {89 _setOpen(openState)90 }9192// … truncated
What it pulls in
npm packages
Other registry items
Files it writes
More from shadcn/ui
All 411 items| Component | Registry | Kind | Access | Installs | Command |
|---|---|---|---|---|---|
| accordionaccordion | shadcn/ui | Components | Unverified | 1 dep | |
| alertalert | shadcn/ui | Components | Unverified | no deps | |
| alert-dialogalert-dialog | shadcn/ui | Components | Unverified | 1 dep | |
| aspect-ratioaspect-ratio | shadcn/ui | Components | Unverified | 1 dep | |
| avataravatar | shadcn/ui | Components | Unverified | 1 dep | |
| badgebadge | shadcn/ui | Components | Unverified | 1 dep | |
| breadcrumbbreadcrumb | shadcn/ui | Components | Unverified | 1 dep | |
| buttonbutton | shadcn/ui | Components | Unverified | 1 dep |
