Input
Üç boyutlu, geçersiz ve salt okunur durumları, yerel doğrulama stilleri ve telefonların asla yakınlaştırmaması için 16px dokunmatik yazı tipi olan bir metin girişi.
pnpm dlx shadcn@latest add https://hextaui.com/r/input.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/input.tsx components/ui/number-flow.tsx lib/motion.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Boyutlar
sm, default ve lg düğme yükseklikleriyle eşleşir; böylece aynı boyuttaki bir girdi ve bir düğme bir satırda hizalanır.
Açıklamayla
Ekran okuyucuların etiketten sonra okuması için aria-describedby'ı yardımcı metne yöneltin.
Geçersiz
aria-invalid kenarı ve odak halkasını kırmızıya çevirir. Mesajın yalnızca renklendirilmesi değil duyurulması için onu aria-describedby ile bağlayın.
Yerel doğrulama
required, type="email" veya pattern olan alanlar yalnızca birisi içlerine yazdıktan veya göndermeyi denedikten sonra kırmızıya döner; ilk render'da asla. Bir alanı geçersiz bulan bir gönderim onu bir kez sarsar; böylece göz düzeltilmesi gerekene gider. Siz yazarken veya Tab ile gezinirken asla sarsılmaz. Görmek için boş formu gönderin.
Devre dışı
Devre dışı bir girdiye odaklanılamaz, düzenlenemez veya formla birlikte gönderilemez.
Salt okunur
readOnly değeri odaklanabilir, seçilebilir ve gönderilir tutar; düzenlenebilir görünmemesi için soluk bir yüzeye sahiptir. Kişilerin kopyalaması gereken değerler için disabled yerine bunu tercih edin.
Dosya
type="file" aynı çerçeveyi alır; tarayıcının düğmesi düz metin olarak yeniden stillenir.
Input türleri
Parola, sayı, arama, tarih ve saat tek bir yüksekliği ve çerçeveyi paylaşır. Koyu modda tarayıcının seçicileri ve spinner'ları da koyuya geçer.
Kontrollü
onValueChange dizeyi doğrudan verir; böylece açılacak bir event.target.value yoktur. onChange de çalışmaya devam eder.
Düğmeyle
Boşlukla yan yana veya bir <ButtonGroup /> içinde tek bir kontrol olacak şekilde birleşik; girdi kalan genişliği alır.
Grid
Girdiler kapsayıcılarını doldurur; bu yüzden onları bir grid içine yerleştirin. Uzun değerlerin bir sütunu genişletememesi için grid hücrelerine min-w-0 verin.
Uzun içerik
Uzun değerler alanın içinde kayar ve uzun placeholder'lar düzeni genişletmeden kesilir.
Sağdan sola
Metin, imleç ve dolgu yönü izler. Arapça bir formdaki e-posta adresi gibi soldan sağa değerler tutan alanlarda dir="auto" kullanın.
- Her girdinin bir adı olmalıdır.
htmlForile bir<label>kullanın veya görünür etiket yoksaaria-labelkullanın. Placeholder bir etiket değildir. - Yardımcı metni ve hata metnini
aria-describedbyile bağlayın vearia-invalid'i yalnızca gösterilecek bir hata olduğunda ayarlayın. - Dokunmatik ekranlarda metin en az 16px'tir; böylece girdi odaklandığında iOS Safari sayfayı yakınlaştırmaz.
- Bir Base UI
Fieldiçinde etiket, açıklama, hata ve geçerlilik sizin için bağlanır.
Base UI input üzerine kuruludur. Her yerel input niteliğini kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
sizeDüğmelerle eşleşen yükseklik ve dolgu. | "sm" | "default" | "lg" | "default" |
htmlSizeYerel size niteliği; size variant olduğu için yeniden adlandırılmıştır. | number | – |
value | string | number | string[] | – |
defaultValue | string | number | string[] | – |
onValueChangeHer değişimde yeni değerle çağrılır. | (value: string, details) => void | – |
type | string | "text" |
disabled | boolean | false |
readOnly | boolean | false |
aria-invalidGeçersiz kenarı ve odak halkasını gösterir. | boolean | – |
className | string | (state) => string | – |
shakeBir form gönderimi bu girdiyi geçersiz bulduğunda bir kez sarsılır. Yerel doğrulama, Base UI Field ve aria-invalid ayarlayan kütüphanelerle çalışır. Azaltılmış harekette atlanır. | boolean | true |
render | ReactElement | (props, state) => ReactElement | <input> |
| Öznitelik | Açıklama |
|---|---|
data-slot="input" | CSS'te girdiyi hedefleyin. |
data-size | Geçerli boyut. |
data-shake | Başarısız bir gönderimden sonra girdi sarsılırken bulunur. |
data-disabled | Girdi devre dışı olduğunda bulunur. |
data-invalid | Çevreleyen Field geçersiz olduğunda bulunur. aria-invalid gibi stillenir. |
data-valid | Çevreleyen Field geçerli olduğunda bulunur. |
data-touched | Bir Field içinde, girdi bir kez odağı kaybettikten sonra bulunur. |
data-dirty | Bir Field içinde, değer değiştikten sonra bulunur. |
data-filled | Bir Field içinde, girdinin bir değeri olduğunda bulunur. |
data-focused | Bir Field içinde, odaktayken bulunur. |
Girdinin arkasındaki sınıf adları; yerel bir <select> veya <textarea> gibi başka bir öğeyi eşleşecek şekilde stillemek için. { size } ile çağırın.
<InputGroupCount /> ve <FieldCounter /> arkasındaki karakter sayacı. Alanı sizin için okuyan bu parçaları kullanın. Bunu yalnızca uzunluğu kendiniz izlediğinizde kullanın.
| Prop | Tür | Varsayılan |
|---|---|---|
lengthZorunlu. | number | – |
maxLength | number | null | – |
threshold | number | 10% of maxLength, at most 20 |
announcement | (remaining: number) => string | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="input-count" | CSS'te sayacı hedefleyin. |
data-state="near" | "limit" | Eşik içinde ve sınırda bulunur. |
- 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.
- Number flowYalnızca değişen basamakların döndüğü animasyonlu sayılar; herhangi bir Intl biçimi ve yerel ayarla.
- useAutosizeBir textarea'yı yazdıklarınıza göre en küçük ve en büyük yüksekliği arasında büyütür; metne hiç dokunmadan her değişikliği canlandırır.
- useComposedRefKendi öğenize bir ref tutarken, üst bileşenin ilettiği her ref'e de yönlendirmeyi sürdürür.
- useInvalidShakeGönderme denemesi bir form kontrolünü geçersiz bulduğunda onu sallar; biri hâlâ yazarken asla sallamaz.
- useMergedRefHerhangi sayıda callback ve nesne ref'ini, her biri için React 19 ref temizliğiyle tek bir ref'te birleştirir.
Kullanıldığı bloklar
Input üzerine kurulan bloklar.
- API keysOpenAI ve Anthropic konsolları gibi bir yapay zeka ürününün API anahtarları sayfası. Kapsamlı izinler ve son kullanma tarihiyle anahtar oluşturun, gizli anahtarı bir kez görün ve kopyalama onaylansın, geri alınabilir şekilde iptal edin, yerinde yeniden adlandırın, ek süreyle döndürün ve anahtar başına kullanımı görün.
- 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.
- ModelsBir yapay zeka ürününün ayarlarındaki Modeller sayfası. Bağlamı, hızı ve maliyeti tek bakışta görünen varsayılan bir model, her modelin neyi desteklediğini bilen varsayılan bir efor, sağlayıcıya göre gruplanmış; filtreler, sabitlemeler ve toplu anahtarlar içeren aranabilir bir model listesi, gerçek bir bağlantı testi olan OpenAI uyumlu sunucular ve nelerin yeni olduğunu söyleyen bir yenileme.
- NotificationsBir yapay zeka ürününün ayarlarındaki Bildirimler bölümü. Satır, sütun ve tümü için anahtarları olan kanal ve olay ızgarası, canlı bir sonraki sessiz saat satırlı sessiz saatler, bir e-posta özeti, masaüstü, e-posta, push ve Slack için gerçek test gönderimleri, tarayıcı izni yönetimi ve bir Slack bağlama akışı. Herhangi bir Ayarlar bölümüne eklenebilir.