گروه رادیو (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

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 — اگر تعداد گزینه‌ها بیش از 7 مورد است، از Select استفاده کنید
  • Checkbox — اگر کاربر باید چند گزینه را همزمان انتخاب کند، از Checkbox استفاده کنید