پرتوپرتو

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

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

معرفی

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

استفاده

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>

Props

RadioGroup

Prop

Type

RadioGroupItem

Prop

Type

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

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

ملاحظات RTL

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