نوار کناری (Sidebar)
یک نوار کناری قابل تنظیم برای ناوبری برنامه
معرفی
کامپوننت Sidebar یک نوار کناری پیشرفته برای ناوبری و سازماندهی محتوای برنامه است. این کامپوننت حالتهای مختلف expanded و collapsed دارد.
استفاده
import {
Sidebar,
SidebarContent,
SidebarFooter,
SidebarGroup,
SidebarGroupContent,
SidebarGroupLabel,
SidebarHeader,
SidebarMenu,
SidebarMenuButton,
SidebarMenuItem,
SidebarProvider,
SidebarTrigger,
} from '@parto/ui';
export default function MyComponent() {
return (
<SidebarProvider>
<Sidebar>
<SidebarHeader>
<h2>برنامه من</h2>
</SidebarHeader>
<SidebarContent>
<SidebarGroup>
<SidebarGroupLabel>منوی اصلی</SidebarGroupLabel>
<SidebarGroupContent>
<SidebarMenu>
<SidebarMenuItem>
<SidebarMenuButton>داشبورد</SidebarMenuButton>
</SidebarMenuItem>
<SidebarMenuItem>
<SidebarMenuButton>پروژهها</SidebarMenuButton>
</SidebarMenuItem>
</SidebarMenu>
</SidebarGroupContent>
</SidebarGroup>
</SidebarContent>
<SidebarFooter>
<p>نسخه 1.0.0</p>
</SidebarFooter>
</Sidebar>
<main>
<SidebarTrigger />
{/* محتوای اصلی */}
</main>
</SidebarProvider>
);
}Collapsible
<SidebarProvider>
<Sidebar collapsible="icon">
{/* محتوا */}
</Sidebar>
</SidebarProvider>موقعیت راست
<Sidebar side="right">
{/* محتوا */}
</Sidebar>انواع Variant
{/* پیشفرض */}
<Sidebar variant="sidebar" />
{/* شناور */}
<Sidebar variant="floating" />
{/* داخلی */}
<Sidebar variant="inset" />با آیکون و Tooltip
<SidebarMenuItem>
<SidebarMenuButton tooltip="داشبورد">
<Icons.home />
<span>داشبورد</span>
</SidebarMenuButton>
</SidebarMenuItem>زیرمنو
<SidebarMenuItem>
<SidebarMenuButton>پروژهها</SidebarMenuButton>
<SidebarMenuSub>
<SidebarMenuSubItem>
<SidebarMenuSubButton>پروژه ۱</SidebarMenuSubButton>
</SidebarMenuSubItem>
<SidebarMenuSubItem>
<SidebarMenuSubButton>پروژه ۲</SidebarMenuSubButton>
</SidebarMenuSubItem>
</SidebarMenuSub>
</SidebarMenuItem>با Badge
<SidebarMenuItem>
<SidebarMenuButton>پیامها</SidebarMenuButton>
<SidebarMenuBadge>3</SidebarMenuBadge>
</SidebarMenuItem>کنترل شده
const [open, setOpen] = useState(true);
<SidebarProvider open={open} onOpenChange={setOpen}>
<Sidebar />
</SidebarProvider>Props
Sidebar
| Prop | Type | Default | توضیحات |
|---|---|---|---|
side | 'left' | 'right' | 'left' | موقعیت سایدبار |
variant | 'sidebar' | 'floating' | 'inset' | 'sidebar' | نوع نمایش |
collapsible | 'offcanvas' | 'icon' | 'none' | 'offcanvas' | حالت جمع شدن |
SidebarProvider
| Prop | Type | Default | توضیحات |
|---|---|---|---|
defaultOpen | boolean | true | وضعیت پیشفرض |
open | boolean | - | کنترل وضعیت |
onOpenChange | (open: boolean) => void | - | callback تغییر |
کامپوننتها
Sidebar- wrapper اصلیSidebarProvider- provider برای contextSidebarHeader- هدر سایدبارSidebarContent- محتوای اصلیSidebarFooter- فوتر سایدبارSidebarGroup- گروه آیتمهاSidebarGroupLabel- عنوان گروهSidebarGroupContent- محتوای گروهSidebarMenu- منوی سایدبارSidebarMenuItem- آیتم منوSidebarMenuButton- دکمه منوSidebarMenuSub- زیرمنوSidebarMenuSubItem- آیتم زیرمنوSidebarMenuSubButton- دکمه زیرمنوSidebarMenuBadge- نشانSidebarTrigger- دکمه toggleSidebarInset- محتوای اصلی صفحه
Hook
const {
open,
setOpen,
state,
isMobile,
toggleSidebar
} = useSidebar();کلید میانبر
به صورت پیشفرض با Cmd+B یا Ctrl+B سایدبار toggle میشود.
ویژگیها
- Responsive design
- حالت موبایل جداگانه
- ذخیره وضعیت در cookie
- انیمیشنهای نرم
- Tooltip در حالت collapsed
- کاملا دسترسیپذیر
- سازگار با RTL