Switch
Dokunabileceğiniz, basabileceğiniz veya sürükleyebileceğiniz, parmağınızın altında uzayan bir başparmağı ve kayıtlar için isteğe bağlı bekleme durumu olan bir açma/kapama anahtarı.
pnpm dlx shadcn@latest add https://hextaui.com/r/switch.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 @tabler/icons-react class-variance-authority cnAşağıdaki kodu kopyalayıp projenize yapıştırın.
components/ui/switch.tsx components/ui/spinner.tsx lib/motion.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Basın; başparmak karşı tarafa fırlamadan önce o yöne doğru uzar, böylece basışın oturduğunu hissedersiniz. Başparmağı tutup sürükleyebilirsiniz de: ortayı geçerse döner, geçmezse geri oturur.
iOS
variant="ios" daha yüksek bir iz, hap biçimli bir başparmak ve açıkken yeşil kullanır. Basma, sürükleme ve kaydetme aynı çalışır.
Kaydediliyor
onCheckedChange'den bir promise döndürün; kontrollü olsa bile anahtar hemen döner. Başparmakta bir spinner yalnızca kaydetme 400ms'den uzun sürerse gösterilir. Reddedilirse anahtar geri döner ve sallanır.
Açık ve kapalı işaretleri
icons, durum renge dayanmasın diye ize bir onay işareti ve bir halka ekler.
Boyutlar
sm, default ve lg.
Bir alanda
Field ile etiket ve açıklama anahtara bağlanır.
Devre dışı ve salt okunur
readOnly değeri görünür ve odaklanabilir tutar ama değiştirmez.
Kontrollü
checked ve onCheckedChange verin.
Sağdan sola
Başparmak sağda başlar ve sola kayar, sürükleme de bunu izler.
| Tuş | Action |
|---|---|
| SpaceEnter | Odaktaki anahtarı açar veya kapatır. |
- Anahtar, etiketiyle adlandırılan bir
switchrolüdür. Onu bir<label>ile sarın veyaFieldkullanın. - Kaydederken
aria-busyolur ve yeni basışları yok sayar. - Tıklama alanı anahtardan büyüktür, dokunmatikte daha da büyüktür.
- Azaltılmış harekette başparmak anında hareket eder ve hiçbir şey sallanmaz.
| Prop | Tür | Varsayılan |
|---|---|---|
checked | boolean | – |
defaultChecked | boolean | false |
onCheckedChangeKaydetme durumunu göstermek için bir promise döndürün. Reddedilirse kontrolsüz bir anahtar geri döner. | (checked, details) => void | Promise | – |
variant | "default" | "ios" | "default" |
size | "sm" | "default" | "lg" | "default" |
iconsİzde açık ve kapalı işaretlerini gösterir. | boolean | false |
name | string | – |
value | string | – |
disabled | boolean | false |
readOnly | boolean | false |
required | boolean | false |
render | ReactElement | (props, state) => ReactElement | <span> |
| Öznitelik | Açıklama |
|---|---|
data-slot="switch" | İz; data-size ve data-variant ile. |
data-slot="switch-thumb" | Başparmak. |
data-checked / data-unchecked | Anahtarın açık olup olmadığı. |
data-dragging | Başparmak sürüklenirken bulunur. |
data-pending | Döndürülen bir promise beklemedeyken bulunur. |
--switch-w / --switch-h / --switch-thumb / --switch-thumb-w | İz ve başparmak boyutları; size ile belirlenir. |
- 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.
- SpinnerApple tarzı çentiklere ya da nefes alan bir halkaya sahip, göstermeden önce bekleyebilen ve titremesin diye yeterince uzun kalan bir yükleme göstergesi.
- 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.
Kullanıldığı bloklar
Switch üzerine kurulan bloklar.
- Prompt InputTek sakin bir satır olarak başlayan, yazdıkça karta dönüşen ve konuşma başladığında aşağı inen bir sohbet yazma alanı. Enter gönderir; Japonca ve Çince girişle de güvenle çalışır. Dosyaları yapıştırın, bırakın ya da seçin; önizleme, ilerleme ve yeniden deneme desteği vardır. @ dosya ekler, / ise imleçte açılan bir menüden komut çalıştırır. Sayı tuşlarıyla çalışan bir model seçici, Max'ta canlanan bir efor kaydırıcısı, bir bağlam halkası, canlı dalga biçimli dikte, araç çipleri, yanıt akarken yazılan mesajlar için bir kuyruk ve yeniden yüklemeden sağ çıkan taslaklar.
- Agent TodosBir ajanın planını çalışırken gösterin. Her adım backlog'dan yapılacak, devam eden ve tamamlanana ilerler; canlı süreler, başarısızlıklar ve arkasındaki araç çağrıları ile birlikte. Yazma alanının üstü için bir durum hapı, görebildiğiniz plan değişiklikleri ve çalışmadan önce planı düzenlemek için bir gözden geçirme adımı.
- AppearanceBir yapay zeka ürününün ayarlarındaki Görünüm bölümü: tema, vurgu rengi, arka plan tonu, yoğunluk, sohbet yazı tipi, metin boyutları ve erişilebilirlik seçenekleri; kullanıcılar kaydedene kadar hepsi taslak olarak tutulur.
- BillingBir yapay zeka ürünü için Cursor, Claude ve Vercel tarzında plan ve kullanım. Modele göre bölünmüş, dönem sonunu öngören ve krediler bitmeden uyaran bir kullanım ölçeri, üzerinde gezinebileceğiniz günlük bir grafik, ölçer üzerinde önizleyebileceğiniz uyarılara sahip bir harcama limiti, tam orantılı hesaplamayla plan değişiklikleri, gerçek doğrulamalı bir kart formu ve PDF olarak indirilen faturalar.