پرتوپرتو

جداکننده (Separator)

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

معرفی

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

چه زمانی استفاده نکنیم:

  • برای ایجاد فاصله بین المان‌ها — از gap در flex/grid استفاده کنید
  • بین تمام بخش‌های صفحه — خط جداکننده بیش از حد خستگی بصری ایجاد می‌کند

استفاده

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

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

جزئیات

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

یا
ادامه با
import { Separator } from '@parto-system-design/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>

  {/* با متن در وسط */}
  <Separator>یا</Separator>
  <Separator>ادامه با</Separator>
</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>

با متن

اکنون می‌توانید مستقیماً متن را به عنوان children به Separator بدهید:

<Separator>یا</Separator>
<Separator>ادامه با</Separator>

روش قدیمی (دستی):

<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>

حالت‌ها و انواع

افقی و عمودی

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

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

جزئیات

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

یا
ادامه با

با متن

<Separator>یا</Separator>
<Separator>ادامه با</Separator>

Props

Prop

Type

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

  • به‌طور پیش‌فرض 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>

راهنمای استفاده

بکنید

  • از Separator برای جدا کردن بخش‌های مرتبط ولی متفاوت استفاده کنید - در لیست‌ها و منوها از Separator برای گروه‌بندی منطقی گزینه‌ها استفاده کنید - برای جداکننده‌های تزئینی، decorative={true} (پیش‌فرض) را حفظ کنید

نکنید

  • از Separator صرفاً برای ایجاد فاصله استفاده نکنید — از gap در flex/grid استفاده کنید - تعداد زیاد Separator در یک صفحه قرار ندهید — خستگی بصری ایجاد می‌کند

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

  • Card — اگر نیاز به گروه‌بندی محتوا با مرز بصری واضح دارید، نه فقط خط جداکننده
  • ButtonGroupSeparator — اگر نیاز به جداکننده بین دکمه‌های یک گروه دارید