پرتوپرتو

جداکننده (Separator)

کامپوننت خط جداکننده بصری

معرفی

کامپوننت Separator برای جدا کردن بصری محتوا و بخش‌های مختلف استفاده می‌شود.

استفاده

دسته‌بندی‌ها

همه
فعال
آرشیو

جزئیات

محتوا در این بخش با یک separator از سایر بخش‌ها جدا شده است.

import { Separator } from '@parto/ui';

<div className="space-y-6">
  <div className="flex items-center gap-4">
    <span>بخش اول</span>
    <Separator orientation="vertical" className="h-6" />
    <span>بخش دوم</span>
    <Separator orientation="vertical" className="h-6" />
    <span>بخش سوم</span>
  </div>

  <div className="flex items-center gap-3">
    <Separator className="flex-1" />
    <span className="text-muted-foreground text-sm">یا</span>
    <Separator className="flex-1" />
  </div>
</div>

افقی (پیش‌فرض)

<div className="space-y-4">
  <h4>بخش اول</h4>
  <Separator />
  <h4>بخش دوم</h4>
  <Separator />
  <h4>بخش سوم</h4>
</div>

عمودی

<div className="flex h-20 items-center space-x-4">
  <div>اولین</div>
  <Separator orientation="vertical" />
  <div>دومین</div>
  <Separator orientation="vertical" />
  <div>سومین</div>
</div>

در منو

<div className="space-y-1">
  <Button variant="ghost" className="w-full justify-start">
    گزینه ۱
  </Button>
  <Button variant="ghost" className="w-full justify-start">
    گزینه ۲
  </Button>
  <Separator className="my-2" />
  <Button variant="ghost" className="w-full justify-start text-destructive">
    حذف
  </Button>
</div>

با متن

<div className="flex items-center gap-4">
  <Separator className="flex-1" />
  <span className="text-sm text-muted-foreground">یا</span>
  <Separator className="flex-1" />
</div>

در کارت

<Card>
  <CardHeader>
    <CardTitle>عنوان کارت</CardTitle>
    <CardDescription>توضیحات کارت</CardDescription>
  </CardHeader>
  <Separator />
  <CardContent className="pt-6">
    <p>محتوای کارت</p>
  </CardContent>
  <Separator />
  <CardFooter className="pt-6">
    <Button>عملیات</Button>
  </CardFooter>
</Card>

Props

PropTypeDefaultDescription
orientation'horizontal' | 'vertical''horizontal'جهت خط جداکننده
decorativebooleantrueآیا فقط تزئینی است
classNamestring-کلاس‌های CSS اضافی

دسترسی‌پذیری

  • به‌طور پیش‌فرض decorative={true} است و از screen readers نادیده گرفته می‌شود
  • اگر معنای ساختاری دارد، decorative={false} تنظیم کنید
  • از role="separator" استفاده می‌شود
  • aria-orientation برای جهت تنظیم می‌شود

استایل سفارشی

// خط ضخیم‌تر
<Separator className="h-1" />

// رنگ سفارشی
<Separator className="bg-primary" />

// خط نقطه‌چین
<Separator className="border-dashed" />

// با Gradient
<Separator className="bg-gradient-to-r from-transparent via-foreground to-transparent" />

ملاحظات RTL

  • جهت افقی تحت تأثیر RTL نیست
  • جهت عمودی عمودی باقی می‌ماند
  • فاصله‌گذاری با Logical Properties (space-x به gap تبدیل شود)

نکات استفاده

  • برای جدا کردن محتوای مرتبط استفاده کنید
  • در لیست‌ها و منوها برای گروه‌بندی
  • با دقت استفاده کنید تا صفحه شلوغ نشود
  • در موبایل فاصله مناسب در نظر بگیرید

ترکیب با سایر کامپوننت‌ها

// با Dialog
<DialogHeader>
  <DialogTitle>عنوان</DialogTitle>
  <DialogDescription>توضیحات</DialogDescription>
</DialogHeader>
<Separator className="my-4" />
<div>محتوا</div>

// با Navigation
<nav className="flex items-center">
  <Link>خانه</Link>
  <Separator orientation="vertical" className="mx-2 h-4" />
  <Link>درباره</Link>
  <Separator orientation="vertical" className="mx-2 h-4" />
  <Link>تماس</Link>
</nav>