Button group
Tek bir kontrol olarak birleşen düğmeler; ortak birleşim yerleri, ayırıcılar, metin eklentileri, iç içe geçme ve dikey yığınlar.
pnpm dlx shadcn@latest add https://hextaui.com/r/button-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 class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/button-group.tsx components/ui/separator.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Button group, zaten kullandığınız düğmeleri birleştirir. <Button /> bileşenini de kurun.
Boyutlar
Her düğmede size ayarlayın. Birleşik köşeler her boyutta kare kalır, dış köşeler ise düğmenin yarıçapını korur.
Bölünmüş düğme
Dolgulu düğmeler bitişik durur; bu yüzden aralarına bir <ButtonGroupSeparator /> ekleyin. Bir dropdown trigger'ı herhangi bir segment olabilir.
Ayırıcılar
Simge düğmeleri arasındaki ayırıcılar ve basılı durumunu bildiren bir toggle.
Grup içinde geri bildirim
Bir düğmenin etiketi yükleme, başarı veya hata sırasında genişlik değiştirdiğinde, ondan sonraki segmentler zıplamak yerine birlikte kayar.
Dikey
orientation="vertical" segmentleri üst üste dizer. Ayırıcılar otomatik olarak yatay olur.
İç içe gruplar
Bir grubun içindeki gruplar, aralarında boşluk bulunan ve her biri kendi içinde birleşik ayrı kümeler olur.
Metin ve girdiyle
<ButtonGroupText /> bir etiket veya önek ekler. Girdiyi adlandırmak için bunu bir <label> olarak oluşturun. Girdi, satırı dolduracak şekilde uzar.
Devre dışı ve geçersiz
Tek bir segmenti devre dışı bırakın veya aria-invalid ile işaretleyin. Geçersiz bir segment, kırmızı halkasının hiç örtülmemesi için komşularının üstüne çıkar.
Tam genişlik
Alanı eşit bölmek için gruba bir genişlik, her düğmeye flex-1 verin.
Fieldset olarak
Formların içinde bir <fieldset> çıktısı vermek için render kullanın.
Sağdan sola
Birleşik köşeler, ayırıcılar ve iç içe kümeler sağdan sola düzenlerde yansıtılır.
| Tuş | Action |
|---|---|
| Tab | Segmentler arasında sırayla gezinir. Odaktaki segment yükselir; böylece halkası ve kenarlığı asla örtülmez. |
| EnterSpace | Odaktaki düğmeyi etkinleştirir. |
- Grubun
role="group"değeri vardır. Ona kümeyi tanımlayan biraria-labelverin; örneğin “Message actions”. - Yalnızca simgeli segmentlerin kendi
aria-labeldeğeri olmalıdır. - Ayırıcılar doğru yönelimle separator olarak sunulur. Çizgi yalnızca görselse
decorativeekleyin.
Her parça bir <div> oluşturur ve onun niteliklerini kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
orientation | "horizontal" | "vertical" | "horizontal" |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="button-group" | CSS'te grupları hedefleyin. |
data-orientation | Geçerli yönelim. |
| Prop | Tür | Varsayılan |
|---|---|---|
orientationVarsayılan olarak grubun yönelimine zıttır. | "horizontal" | "vertical" | – |
decorativeÇizgiyi ekran okuyuculardan gizleyin. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="button-group-separator" | CSS'te ayırıcıları hedefleyin. |
data-orientation | Çözümlenen yönelim. |
| Prop | Tür | Varsayılan |
|---|---|---|
renderGruptaki bir girdiyi adlandırmak için bir <label> oluşturun. | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="button-group-text" | CSS'te metin segmentlerini hedefleyin. |
- Separatorİçeriği yatay ya da dikey olarak ayıran ince bir çizgi; isteğe bağlı etiket ve yalnızca görsel çizgiler için dekoratif bir mod içerir.
- ButtonHer varyant ve boyutta düğmeler; hızlı istekler için spinner'ı atlayan yerleşik yükleme, başarı ve hata akışı.
- ToggleAçık ya da kapalı kalan; basıldığında yerleşen bir dolgusu, belirgin bir hover-açık geçişi ve duruma göre dolabilen simgeleri olan bir düğme.
- Toggle groupTek ya da çoklu seçim için bir düğme sırası; seçilen öğeye kayan bir dolgu, bitişik ya da aralıklı öğeler ve ok tuşlarıyla odaklanma sunar.