گروه رادیو (RadioGroup)
کنترل فرم برای انتخاب تک گزینهای
معرفی
کامپوننت RadioGroup دایرههای رادیویی ساده است.
پیشفرض، RadioCard است
برای انتخاب بین چند گزینه از RadioCard استفاده کنید. RadioGroup ساده فقط در جدولها و
فیلترهای فشرده یا فهرستهای طولانی به کار میرود — جایی که کارت جا نمیشود.
چه زمانی استفاده نکنیم:
- در فیلد یک فرم (
FormRow)، یکی از چند گزینهSelectاست؛RadioGroupفقط برای 2 یا 3 گزینه که هر کدام توضیح خودش را دارد (جدول «کنترل هر نوع فیلد» درFormRow) - بیرون از فرم، برای بیش از 7 گزینه — از
Selectاستفاده کنید - برای انتخاب چند گزینه همزمان — در فرم
MultiSelect، و در فهرست یا جدولCheckbox - در هر انتخاب معمولی بین چند گزینه (پلن، دوره، نوع حساب، تنظیمات) — از
RadioCardاستفاده کنید
زمین بازی
با تغییر تنظیمات زیر، پیشنمایش زنده را مشاهده کنید.
زمین بازی
تنظیمات
ظاهر
داده
3
حالت
کد این نمونه بهصورت خودکار قابل تولید نیست — برای کد آمادهی copy/paste به بخش «استفاده» در بالای صفحه مراجعه کنید.
حالت انتخابشده خنثی است
حالت checked اکنون خنثی (foreground) است: نقطه و خط دورِ انتخابشده از رنگ foreground استفاده میکنند
(fill-foreground، data-[state=checked]:border-foreground) — مطابق رادیوی واقعی Supabase. رنگ سبز برند برای اقدامات
اصلی رزرو است؛ حلقهٔ focus همچنان برند میماند.
استفاده
import { RadioGroup, RadioGroupItem } from '@partodata/ui'
import { Label } from '@partodata/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 برای انتخاب یک گزینه از بین 2 تا 7 گزینه متنی استفاده کنید - همیشه یک مقدار پیشفرض (
defaultValue) تعیین کنید تا کاربر وضعیت اولیه را ببیند - هرRadioGroupItemرا باLabelهمراه کنید
نکنید
- برای بیش از 7 گزینه از 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 — اگر تعداد گزینهها بیش از 7 مورد است، از Select استفاده کنید
- Checkbox — اگر کاربر باید چند گزینه را همزمان انتخاب کند، از Checkbox استفاده کنید