پرتوپرتو

گروه رادیو (Radio Group)

کنترل فرم برای انتخاب تک گزینه‌ای

معرفی

کامپوننت RadioGroup برای انتخاب یک گزینه از بین چند گزینه استفاده می‌شود.

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

  • برای بیش از ۷ گزینه — از Select استفاده کنید
  • برای انتخاب چند گزینه همزمان — از Checkbox استفاده کنید
  • وقتی گزینه‌ها visual هستند نه متنی — از RadioCard استفاده کنید

استفاده

import { RadioGroup, RadioGroupItem } from '@parto-system-design/ui'
import { Label } from '@parto-system-design/ui'

export default function MyComponent() {
  return (
    <RadioGroup defaultValue="option-one">
      <div className="flex items-center gap-2">
        <RadioGroupItem value="option-one" id="option-one" />
        <Label htmlFor="option-one">گزینه اول</Label>
      </div>
      <div className="flex items-center gap-2">
        <RadioGroupItem value="option-two" id="option-two" />
        <Label htmlFor="option-two">گزینه دوم</Label>
      </div>
    </RadioGroup>
  )
}

کنترل شده

const [value, setValue] = React.useState('option-one')

;<RadioGroup value={value} onValueChange={setValue}>
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-one" id="r1" />
    <Label htmlFor="r1">گزینه اول</Label>
  </div>
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-two" id="r2" />
    <Label htmlFor="r2">گزینه دوم</Label>
  </div>
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-three" id="r3" />
    <Label htmlFor="r3">گزینه سوم</Label>
  </div>
</RadioGroup>

چیدمان افقی

<RadioGroup defaultValue="option-one" className="flex gap-4">
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-one" id="h1" />
    <Label htmlFor="h1">اول</Label>
  </div>
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-two" id="h2" />
    <Label htmlFor="h2">دوم</Label>
  </div>
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-three" id="h3" />
    <Label htmlFor="h3">سوم</Label>
  </div>
</RadioGroup>

غیرفعال

<RadioGroup defaultValue="option-one">
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-one" id="d1" />
    <Label htmlFor="d1">فعال</Label>
  </div>
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-two" id="d2" disabled />
    <Label htmlFor="d2" className="opacity-50">
      غیرفعال
    </Label>
  </div>
</RadioGroup>

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

پیش‌فرض و غیرفعال

<RadioGroup defaultValue="option-1" dir="rtl">
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-1" id="r1" />
    <label htmlFor="r1">گزینه اول</label>
  </div>
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-2" id="r2" />
    <label htmlFor="r2">گزینه دوم</label>
  </div>
  <div className="flex items-center gap-2">
    <RadioGroupItem value="option-3" id="r3" disabled />
    <label htmlFor="r3">غیرفعال</label>
  </div>
</RadioGroup>

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

بکنید

  • از RadioGroup برای انتخاب یک گزینه از بین ۲ تا ۷ گزینه متنی استفاده کنید - همیشه یک مقدار پیش‌فرض (defaultValue) تعیین کنید تا کاربر وضعیت اولیه را ببیند - هر RadioGroupItem را با Label همراه کنید

نکنید

  • برای بیش از ۷ گزینه از RadioGroup استفاده نکنید — از Select استفاده کنید - وقتی گزینه‌ها نیاز به نمایش بصری (آیکون، توضیحات) دارند از RadioGroup استفاده نکنید — از RadioCard استفاده کنید - برای انتخاب چند گزینه همزمان از RadioGroup استفاده نکنید — از Checkbox استفاده کنید

Props

RadioGroup

Prop

Type

RadioGroupItem

Prop

Type

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

  • پیمایش با کیبورد (Arrow keys)
  • از role="radiogroup" استفاده می‌شود
  • هر آیتم دارای role="radio" است
  • aria-checked برای وضعیت انتخاب
  • پشتیبانی کامل از screen readers

ملاحظات RTL

  • چیدمان به‌صورت خودکار راست‌چین می‌شود
  • نشانگر انتخاب (دایره پر) در RTL به‌درستی نمایش داده می‌شود
  • Label در سمت مناسب قرار می‌گیرد
  • رنگ‌بندی مطابق با Supabase Design System

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

  • RadioCard — اگر نیاز به نمایش بصری گزینه‌ها با آیکون و توضیحات دارید، از RadioCard استفاده کنید
  • ToggleGroup — اگر نیاز به انتخاب تک‌گزینه‌ای در toolbar یا نوار ابزار دارید، ToggleGroup مناسب‌تر است
  • Select — اگر تعداد گزینه‌ها بیش از ۷ مورد است، از Select استفاده کنید
  • Checkbox — اگر کاربر باید چند گزینه را همزمان انتخاب کند، از Checkbox استفاده کنید