Sidebar
애플리케이션의 사이드바 내비게이션 컴포넌트
Basic Usage
사이드바는 SidebarProvider 내부에서 사용해야 합니다.
tsx
<SidebarProvider>
<Sidebar>
<SidebarHeader>
<div className="px-2 py-2 font-semibold">My App</div>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Menu</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton isActive>
<Home />
<span>Home</span>
</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton>
<FileText />
<span>Documents</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
</SidebarContent>
<SidebarFooter>
<div className="px-2 py-2 text-sm">v1.0.0</div>
</SidebarFooter>
</Sidebar>
<main className="flex-1 p-4">
<SidebarTrigger />
<p>Main content</p>
</main>
</SidebarProvider>Usage
tsx
import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupContent,
SidebarGroupLabel,
SidebarHeader,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
SidebarProvider,
SidebarTrigger,
} from '@gpters-internal/ui';
function Example() {
return (
<SidebarProvider>
<Sidebar>
<SidebarHeader>Header</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>Navigation</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton>
<Home />
<span>Home</span>
</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
</SidebarContent>
<SidebarFooter>Footer</SidebarFooter>
</Sidebar>
<main>
<SidebarTrigger />
{/* Main content */}
</main>
</SidebarProvider>
);
}Props
Sidebar
side: "left" | "right" - 사이드바 위치variant: "sidebar" | "floating" | "inset" - 스타일 변형collapsible: "offcanvas" | "icon" | "none" - 접힘 모드
SidebarMenuButton
isActive: boolean - 활성화 상태tooltip: string - 툴팁 텍스트 (접힌 상태에서 표시)size: "default" | "sm" | "lg" - 버튼 크기