Toggle
Açı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.
pnpm dlx shadcn@latest add https://hextaui.com/r/toggle.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/toggle.tsx İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Kapalı bir toggle'ın üzerine gelmek hafif bir ton gösterir; açmak daha güçlü bir dolguyu yerine oturtur ve etiketi tam kontrasta getirir, böylece açık durum hover gibi görünmez.
Outline
variant="outline" tek başına duran toggle'lar için bir kenarlık ve yüzey ekler.
Metinli
Simgeler ve etiketler yan yana durur. Görünür metni olan toggle'lara aria-label gerekmez.
Açıkken dolu
Bir outline simgeye group-data-pressed/toggle:fill-current ekleyin; toggle açıldıkça dolar.
Boyutlar
sm, default ve lg. Yalnızca simgeli toggle'lar kare kalır.
Hap (Pill)
shape="pill" uçları tamamen yuvarlar; sohbet yazma alanı gibi yuvarlak yüzeylerin içindeki toggle'lar için.
Devre dışı
Devre dışı bir toggle açık olup olmadığını göstermeye devam eder ama basılamaz veya odaklanılamaz.
Kontrollü
pressed ve onPressedChange verin. Simge durumu izlerken etiket aynı kalır.
Sağdan sola
Simgeler etiketin sağ tarafından öne geçer.
| Tuş | Action |
|---|---|
| SpaceEnter | Odaktaki toggle'ı açar veya kapatır. |
| Tab | Odağı sonraki toggle'a taşır. |
- Toggle,
aria-pressediçeren birbutton'dır; böylece ekran okuyucular açık olup olmadığını duyurur. - Yalnızca simgeli toggle'lara eylemi adlandıran bir
aria-labelverin ("Mute microphone") ve her iki durumda aynı tutun. Basılı durumla birlikte onu da değiştirmek çift olumsuzlama gibi okunur. - Dokunmatik ekranlarda tıklama alanı en az 44px'e büyür; komşuların çakışacağı bir toggle group içinde hariç.
- Azaltılmış harekette hiçbir şey ölçeklenmez; dolgu yalnızca solar.
| Prop | Tür | Varsayılan |
|---|---|---|
variant | "default" | "outline" | "default" |
size | "default" | "sm" | "lg" | "default" |
shape | "default" | "pill" | "default" |
pressed | boolean | – |
defaultPressed | boolean | false |
onPressedChange | (pressed, details) => void | – |
disabled | boolean | false |
valueToggle'ı bir toggle group içinde tanımlar. | string | – |
className | string | (state) => string | – |
nativeButton | boolean | true |
render | ReactElement | (props, state) => ReactElement | <button> |
| Öznitelik | Açıklama |
|---|---|
data-slot="toggle" | Düğme; data-variant ve data-size ile. |
data-pressed | Toggle açıkken bulunur. |
data-disabled | Toggle devre dışıyken bulunur. |
- ButtonHer varyant ve boyutta düğmeler; hızlı istekler için spinner'ı atlayan yerleşik yükleme, başarı ve hata akışı.
- Button groupTek 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.
- 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.
Kullanıldığı bloklar
Toggle üzerine kurulan bloklar.
- ArtifactModelin ürettiğini gösteren, yapay zeka sohbetinin yanındaki panel. Web sayfaları, SVG'ler, belgeler ve kod canlı olarak akar, ardından korumalı bir önizlemeye geçer; karşılaştırıp geri yükleyebileceğiniz sürümler, yeniden boyutlandırılabilir bir bölme ve telefonlarda alt sayfa sunar.
- Code BlockYapay zeka yanıtları için geliştirilmiş kod blokları. Akışa ayak uyduran sözdizimi vurgulama, kopyalama, indirme ve satır kaydırma, satır numaraları ve vurgulanmış satırlar, kabul ve reddetme seçenekli fark görünümleri ve komutlar için bir terminal.