Sidebar

애플리케이션의 사이드바 내비게이션 컴포넌트

Basic Usage

사이드바는 SidebarProvider 내부에서 사용해야 합니다.

My App
Menu
Settings
v1.0.0
Main Content

메인 콘텐츠 영역입니다. 사이드바와 함께 사용됩니다.

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" - 버튼 크기