Radio group
Bir kümeden tek seçenek seçin; seçimler arasında devredilen bir nokta ve seçim halkası yeni seçime kayan kartlarla.
pnpm dlx shadcn@latest add https://hextaui.com/r/radio-group.jsonBileşeni, HextaUI tema token'larını ve bileşenin bağımlı olduğu tüm HextaUI bileşenlerini ekler.
Henüz eklemediyseniz tema token'larını global CSS'inize ekleyin.
Bağımlılıkları yükleyin.
pnpm add @base-ui/react cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/radio-group.tsx lib/motion.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Seçim değiştiğinde eski nokta küçülüp kaybolurken yenisi yay gibi belirir; böylece göz iki şeyin aynı anda yanıp sönmesi yerine seçimi izler. Tüm satır tıklanabilir olsun diye her öğeyi bir <label> ile sarın.
Kartlar
variant="card" ile söyleyecek daha çok şeyi olan seçenekler için RadioGroupCard kullanın. Seçim halkası yeni karta kayarken yüzeyi solarak belirir.
Yatay
Kartlar bir satırda veya herhangi bir ızgarada durabilir. Halka onları nerede olurlarsa olsunlar izler.
Form
Field ve FieldSet içinde grup bir başlık, zorunlu doğrulama ve bir hata mesajı alır.
Devre dışı ve salt okunur
Tek bir seçeneği devre dışı bırakın ya da değişemeyen bir değeri göstermek için tüm grubu readOnly yapın.
Kontrollü
value ve onValueChange verin. Dışarıdan gelen değişiklikler tıklamalarla aynı şekilde animasyonlanır.
Sağdan sola
Radyolar ve kartlar okuma yönünü izler.
| Tuş | Action |
|---|---|
| Tab | Odağı gruba, seçili seçeneğe ya da ilkine taşır. |
| ↑↓←→ | Önceki veya sonraki seçeneğe gider ve onu seçer; uçlarda başa sarar. |
| Space | Odaktaki seçeneği seçer. |
- Grubu
aria-label,aria-labelledbyveya birFieldLegendile adlandırın. - Her radyonun 36px, dokunmatik ekranlarda 44px'lik bir tıklama alanı vardır; ekranda 16px kalır.
- Azaltılmış harekette nokta ve kart halkası hareket etmez.
| Prop | Tür | Varsayılan |
|---|---|---|
variantcard, kayan seçim halkasını ekler. | "default" | "card" | "default" |
value | Value | – |
defaultValue | Value | – |
onValueChange | (value, details) => void | – |
name | string | – |
required | boolean | false |
disabled | boolean | false |
readOnly | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="radio-group" | Grup; data-variant ile. |
data-slot="radio-group-highlight" | Kartlar arasında kayan halka. |
data-disabled | Grup devre dışı. |
| Prop | Tür | Varsayılan |
|---|---|---|
value | Value | – |
disabled | boolean | false |
render | ReactElement | (props, state) => ReactElement | <span> |
| Öznitelik | Açıklama |
|---|---|
data-slot="radio-group-item" | Radyo. |
data-checked / data-unchecked | Seçili seçenek olup olmadığı. |
data-disabled / data-readonly | Değiştirilemediğinde bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
value | Value | – |
disabled | boolean | false |
radioClassNameKartın içindeki radyo için sınıflar. | string | – |
Radyonun yerleşik olduğu bir <label>. İçine RadioGroupCardTitle ve RadioGroupCardDescription ya da başka herhangi bir şey koyun.
- MotionHer bileşenin kullandığı yumuşatma eğrileri, süreler ve azaltılmış hareket denetimi; ayrıca boyut dönüşümleri ve kayan vurgular için hook'lar.
- CalendarTekli, aralık ve çoklu seçim için, kayan aylar, aralık önizlemeleri ve dokunmaya uygun boyutta günler içeren bir tarih ızgarası.
- Checkboxİşareti çizilerek beliren, belirsiz üst öğeleri, grupları ve hover durumunu paylaşan etiketleri olan bir onay kutusu.
- ComboboxÇipler, gruplar ve asenkron sonuçlar içeren, siz yazdıkça boyutu değişen bir açılır pencerede filtrelenebilir bir select.
- Date pickerTek tarihler ve aralıklar için takvimi bir popover içinde, telefonlarda ise alt sayfa olarak açan bir düğme.
- FieldKontrolüne bağlanmış etiketler, açıklamalar ve hatalar; doğrulama durumları ve formlar için düzenler içerir.