{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "sidebar", "type": "registry:ui", "title": "Sidebar", "description": "A sidebar component that can be used to display a navigation menu.", "registryDependencies": [ "@tra-kit/button" ], "files": [ { "path": "registry/tra-kit/components/sidebar.tsx", "content": "import { createContext, useContext, useState, ReactNode, useMemo, useEffect } from 'react';\r\nimport { CaretLeftIcon, CaretRightIcon } from '@phosphor-icons/react';\r\nimport Button from './button';\r\n\r\ninterface ISidebar {\r\n children: ReactNode;\r\n headerLogo?: string;\r\n expandable?: boolean;\r\n}\r\n\r\ninterface ISidebarItem {\r\n icon: ReactNode;\r\n text: string;\r\n active?: boolean;\r\n alert?: boolean;\r\n url?: string;\r\n onClick?: () => void;\r\n}\r\n\r\nconst SidebarContext = createContext<{ expanded: boolean } | undefined>(undefined);\r\n\r\nconst Sidebar = ({ children, headerLogo, expandable = true }: ISidebar) => {\r\n const [expanded, setExpanded] = useState(true);\r\n const contextValue = useMemo(() => ({ expanded }), [expanded]);\r\n\r\n useEffect(() => {\r\n if (!expandable) {\r\n setExpanded(true);\r\n }\r\n }, [expandable]);\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport const SidebarItem = ({ icon, text, active, alert, onClick }: ISidebarItem) => {\r\n const context = useContext(SidebarContext);\r\n if (!context) {\r\n throw new Error('SidebarItem must be used within a Sidebar');\r\n }\r\n const { expanded } = context;\r\n return (\r\n