تبها (Tabs)
کامپوننت سازماندهی محتوا در تبهای قابل تعویض
معرفی
کامپوننت Tabs برای سازماندهی محتوا در بخشهای جداگانه که قابل تعویض هستند استفاده میشود.
استفاده
سفارشهای امروز
۲۳ سفارش جدید ثبت شد.
import {
Tabs,
TabsList,
TabsTrigger,
TabsContent,
Card,
CardHeader,
CardTitle,
CardDescription,
} from '@parto/ui';
<Tabs defaultValue="tab1" className="w-full max-w-xl">
<TabsList className="grid grid-cols-3">
<TabsTrigger value="tab1">تب اول</TabsTrigger>
<TabsTrigger value="tab2">تب دوم</TabsTrigger>
<TabsTrigger value="tab3">تب سوم</TabsTrigger>
</TabsList>
<TabsContent value="tab1">
<Card>
<CardHeader>
<CardTitle>مرور کلی</CardTitle>
<CardDescription>آمار امروز را مشاهده کنید.</CardDescription>
</CardHeader>
</Card>
</TabsContent>
<TabsContent value="tab2">
<Card>
<CardHeader>
<CardTitle>فروش</CardTitle>
<CardDescription>گزارش فروش هفتگی.</CardDescription>
</CardHeader>
</Card>
</TabsContent>
<TabsContent value="tab3">
<Card>
<CardHeader>
<CardTitle>اعلانها</CardTitle>
<CardDescription>سه اعلان جدید دارید.</CardDescription>
</CardHeader>
</Card>
</TabsContent>
</Tabs>مثال کامل
<Tabs defaultValue="account" className="w-[400px]">
<TabsList className="grid w-full grid-cols-2">
<TabsTrigger value="account">حساب کاربری</TabsTrigger>
<TabsTrigger value="password">رمز عبور</TabsTrigger>
</TabsList>
<TabsContent value="account">
<Card>
<CardHeader>
<CardTitle>حساب کاربری</CardTitle>
<CardDescription>
تغییرات حساب کاربری خود را اینجا اعمال کنید.
</CardDescription>
</CardHeader>
<CardContent className="space-y-2">
<div className="space-y-1">
<label htmlFor="name">نام</label>
<Input id="name" defaultValue="علی احمدی" />
</div>
</CardContent>
<CardFooter>
<Button>ذخیره تغییرات</Button>
</CardFooter>
</Card>
</TabsContent>
<TabsContent value="password">
<Card>
<CardHeader>
<CardTitle>رمز عبور</CardTitle>
<CardDescription>
رمز عبور خود را تغییر دهید.
</CardDescription>
</CardHeader>
<CardContent className="space-y-2">
<div className="space-y-1">
<label htmlFor="current">رمز فعلی</label>
<Input id="current" type="password" />
</div>
<div className="space-y-1">
<label htmlFor="new">رمز جدید</label>
<Input id="new" type="password" />
</div>
</CardContent>
<CardFooter>
<Button>ذخیره رمز عبور</Button>
</CardFooter>
</Card>
</TabsContent>
</Tabs>ترکیب کامپوننتها
Tabs از چهار جزء اصلی تشکیل شده است:
- Tabs: کانتینر اصلی و مدیریت state
- TabsList: کانتینر دکمههای تب
- TabsTrigger: دکمه انتخاب تب
- TabsContent: محتوای هر تب
Props
Tabs
| Prop | Type | Default | Description |
|---|---|---|---|
defaultValue | string | - | مقدار پیشفرض تب انتخاب شده |
value | string | - | مقدار کنترل شده تب فعال |
onValueChange | (value: string) => void | - | callback تغییر تب |
orientation | 'horizontal' | 'vertical' | 'horizontal' | جهت نمایش تبها |
TabsTrigger
| Prop | Type | Default | Description |
|---|---|---|---|
value | string | - | مقدار شناسایی تب |
disabled | boolean | false | غیرفعال کردن تب |
دسترسیپذیری
- پیمایش با کیبورد (Arrow keys) پشتیبانی میشود
- از
role="tablist"وrole="tab"استفاده میشود aria-selectedبرای تب فعال تنظیم میشودaria-controlsبرای ارتباط تب با محتوا
ملاحظات RTL
- TabsList بهصورت خودکار راستچین میشود
- کلیدهای پیمایش بهدرستی در RTL عمل میکنند
- فاصلهگذاری با Logical Properties