گروه رادیو (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
RadioGroupItem
دسترسیپذیری
- پیمایش با کیبورد (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 استفاده کنید