Field
Kontrolüne bağlanmış etiketler, açıklamalar ve hatalar; doğrulama durumları ve formlar için düzenler içerir.
pnpm dlx shadcn@latest add https://hextaui.com/r/field.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/field.tsx components/ui/input.tsx components/ui/number-flow.tsx components/ui/separator.tsx lib/motion.ts İçe aktarma yollarını proje yapılandırmanıza uyacak şekilde güncelleyin.
Herhangi bir HextaUI kontrolünü bir <Field /> içine koyun; otomatik olarak etiketlenir, tanımlanır ve doğrulanır. id, htmlFor veya aria-describedby değerlerini elle bağlamanıza gerek yoktur.
Etiketi, yardım metni ve doğrulamasıyla tek bir kontrol.
Yanında metni olan bir switch veya checkbox.
Kartın tıklama hedefi olması için tüm bir alanı saran bir etiket.
Eşit aralıklı ilgili alanlar.
Başlıklı bir alan grubu veya her seçenek için bir öğe içeren bir radio ya da checkbox grubu.
Input
Bir etiket, bir kontrol ve bir açıklama. Etikete tıklamak girdiye odaklanır ve ekran okuyucular açıklamayı etiketten sonra okur.
Doğrulama
required ve minLength gibi yerel kısıtlamalar blur'da denetlenir. Mesajı soruna göre ifade etmek için her <FieldError /> bileşenine bir match verin. Boş bir zorunlu alan yalnızca düzenlendikten sonra işaretlenir; bu yüzden Tab ile geçmek bağırmaz.
Özel doğrulama
Asenkron aramalar dahil her şeyi denetlemek için validate geçin. Başarısız olmak için bir mesaj, geçmek için hiçbir şey döndürün. validationMode="onChange" ve validationDebounceTime ile, her tuşta tetiklenmeden yazarken çalışır. “ada”yı deneyin.
Zorunlu ve isteğe bağlı
Bir FieldGroup, FieldSet veya Field üzerinde indicator ayarlayın; içindeki her etiket kendini kontrolünün required niteliğine göre işaretler. "optional" kişilerin atlayabileceği alanları etiketler; alanların çoğu zorunluyken daha sakin okunur. "required" bir yıldız ekler. İşaret ekran okuyuculardan gizlenir, çünkü kontrol bunu zaten duyurur.
Durum
<FieldStatus /> düzenlenmiş bir alan doğrulamayı geçince bir onay işareti çizer, başarısız olduğu sürece bir uyarı simgesi gösterir. Alanın validationMode değerini izler; bu yüzden doğrulama çalışmadan önce bir alanı asla yargılamaz.
Karakter sayısı
<FieldCounter /> alanındaki metin kontrolünü bulur ve maxLength değerine göre sayar. Yalnızca dinler; bu yüzden yazma asla yavaşlatılmaz veya değiştirilmez.
Bir form kütüphanesinden veya sunucudan gelen hatalar
Alana invalid, <FieldError /> bileşenine bir errors dizisi geçin. React Hook Form'un ve çoğu şema kütüphanesinin döndürdüğü { message } biçimini alır. Yinelenenler atılır ve birden çok mesaj bir liste olur. Mesajlar değiştiğinde yenileri solarak belirir ve yükseklik uymak için yumuşakça değişir; böylece altındaki hiçbir şey zıplamaz. Boş gönderin, sonra kuralları tek tek düzeltin.
Onay kutuları
Checkbox'ı etiketinin yanına koymak için orientation="horizontal" kullanın. Bir <FieldSet /> içinde legend tüm grubu adlandırır.
Seçim kartları
Kartı tıklama hedefi yapmak için tüm bir alanı <FieldLabel /> içine sarın. Etiketler iç içe geçemeyeceğinden içeride <FieldTitle /> kullanın. Kart işaretlendiğinde tonlanır ve checkbox'ı odaklandığında odak halkasını gösterir.
Fieldset
<FieldSet /> ilgili alanları, grubun erişilebilir adı olan bir <FieldLegend /> altında gruplar. Alanları düz bir grid ile yan yana yerleştirin.
Duyarlı
orientation="responsive" dar alanlarda etiketi ve kontrolü üst üste dizer, çevreleyen <FieldGroup /> yeterince genişleyince yan yana koyar. Pencerenin değil, grubun genişliğine yanıt verir.
Devre dışı
Bir <FieldSet /> bileşenini devre dışı bırakmak, içindeki her alanı ve kontrolü devre dışı bırakır. Yalnızca birini devre dışı bırakmak için tek bir <Field /> bileşenine disabled geçin.
Uzun içerik
Etiketler, açıklamalar ve hatalar dar formlarda, kırılmayan dizeler dahil, sarar ve düzeni asla genişletmez.
Sağdan sola
Metin, checkbox yerleşimi ve hata listeleri okuma yönünü izler.
- Etiket, açıklama ve görünür hatalar sizin için kontrole bağlanır; böylece ekran okuyucular kontrol odaklandığında üçünü de duyurur.
- Geçersiz kontroller
aria-invalidalır; bu aynı zamanda hata halkalarını da çizer. - Hatalar canlı bölge değildir. Kontrol odaklandığında okunurlar; bu yüzden değişimde doğrulamak yazmayı bölmez. Gönderimde odağı ilk geçersiz alana taşıyın.
- Hatalar içeriği aşağı itmek yerine yerinde büyür ve solarak belirir. Azaltılmış hareket açıkken animasyonsuz görünürler.
Base UI field ve fieldset üzerine kuruludur. Her parça, render ettiği öğenin veya primitive'in prop'larını kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
orientation | "vertical" | "horizontal" | "responsive" | "vertical" |
indicatorEtiketi kontrolün required niteliğine göre işaretleyin. FieldGroup veya FieldSet'ten devralınır. | "required" | "optional" | null | – |
nameForm gönderildiğinde alanı tanımlar. | string | – |
validateBaşarısız olmak için bir veya daha fazla mesaj, geçmek için hiçbir şey döndürün. Asenkron desteklenir. | (value, formValues) => string | string[] | null | Promise<…> | – |
validationMode | "onSubmit" | "onBlur" | "onChange" | "onSubmit" |
validationDebounceTimeonChange doğrulamaları arasında beklenecek milisaniye. | number | 0 |
invalidBir form kütüphanesinden veya sunucu yanıtından ayarlayın. | boolean | – |
disabled | boolean | false |
dirty | boolean | – |
touched | boolean | – |
actionsRefAlanı kod üzerinden doğrulayın. | RefObject<{ validate: () => void }> | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="field" | CSS'te alanları hedefleyin. |
data-orientation | Geçerli yönelim. |
data-disabled | Alan devre dışı olduğunda bulunur. |
data-valid | Alan geçerli olduğunda bulunur. |
data-invalid | Alan geçersiz olduğunda bulunur. |
data-dirty | Değer ilk değerinden değiştikten sonra bulunur. |
data-touched | Kontrole odaklanıp ayrıldıktan sonra bulunur. |
data-filled | Kontrolün bir değeri olduğunda bulunur. |
data-focused | Kontrol odaktayken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
nativeLabelrender etiketi etiket olmayan bir öğeyle değiştirdiğinde false yapın. | boolean | true |
optionalTextindicator="optional" ile gösterilen metin. | ReactNode | "Optional" |
render | ReactElement | (props, state) => ReactElement | <label> |
| Öznitelik | Açıklama |
|---|---|
data-slot="field-label" | CSS'te etiketleri hedefleyin. Bir alanın dışında düz bir etiket render eder; seçim kartları bu şekilde çalışır. |
data-disabled | Alan devre dışı olduğunda bulunur. |
data-valid | Alan geçerli olduğunda bulunur. |
data-invalid | Alan geçersiz olduğunda bulunur. |
data-dirty | Değer ilk değerinden değiştikten sonra bulunur. |
data-touched | Kontrole odaklanıp ayrıldıktan sonra bulunur. |
data-filled | Kontrolün bir değeri olduğunda bulunur. |
data-focused | Kontrol odaktayken bulunur. |
Alanın geçerliliğini yansıtan bir simge. Anlamı hata mesajı taşıdığı için dekoratiftir.
| Öznitelik | Açıklama |
|---|---|
data-slot="field-status" | CSS'te durum simgesini hedefleyin. |
| Prop | Tür | Varsayılan |
|---|---|---|
threshold | number | 10% of maxLength, at most 20 |
announcementSayı eşiği geçtiğinde veya sınıra ulaştığında ekran okuyucular için mesaj. | (remaining: number) => string | – |
| Öznitelik | Açıklama |
|---|---|
data-slot="field-counter" | CSS'te sayacı hedefleyin. |
data-state="near" | "limit" | Eşik içinde ve sınırda bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <p> |
| Öznitelik | Açıklama |
|---|---|
data-slot="field-description" | CSS'te açıklamaları hedefleyin. |
data-disabled | Alan devre dışı olduğunda bulunur. |
data-valid | Alan geçerli olduğunda bulunur. |
data-invalid | Alan geçersiz olduğunda bulunur. |
data-dirty | Değer ilk değerinden değiştikten sonra bulunur. |
data-touched | Kontrole odaklanıp ayrıldıktan sonra bulunur. |
data-filled | Kontrolün bir değeri olduğunda bulunur. |
data-focused | Kontrol odaktayken bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
matchYalnızca bu geçerlilik sorunu için gösterin. true her zaman gösterir. | boolean | "valueMissing" | "typeMismatch" | "tooShort" | "tooLong" | "patternMismatch" | "rangeOverflow" | "rangeUnderflow" | "stepMismatch" | "badInput" | "customError" | "valid" | – |
errorsBir form kütüphanesinden veya sunucudan gelen hatalar. Listede bir mesaj olduğunda gösterilir. | Array<{ message?: string } | undefined> | – |
childrenVarsayılan olarak doğrulama mesajıdır. | ReactNode | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="field-error" | CSS'te hataları hedefleyin. |
data-starting-style | Hata büyürken bulunur. |
data-ending-style | Hata daralırken bulunur. |
data-disabled | Alan devre dışı olduğunda bulunur. |
data-valid | Alan geçerli olduğunda bulunur. |
data-invalid | Alan geçersiz olduğunda bulunur. |
data-dirty | Değer ilk değerinden değiştikten sonra bulunur. |
data-touched | Kontrole odaklanıp ayrıldıktan sonra bulunur. |
data-filled | Kontrolün bir değeri olduğunda bulunur. |
data-focused | Kontrol odaktayken bulunur. |
Yatay bir alanda bir kontrolün yanına etiketi, açıklamayı ve hatayı üst üste dizer.
| Prop | Tür | Varsayılan |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
Seçim kartları gibi bir <FieldLabel /> içindeki içerik için etiket stilli bir başlık.
| Prop | Tür | Varsayılan |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <div> |
Alanları birbirinden ayırır ve duyarlı alanların ölçtüğü kapsayıcıdır.
| Prop | Tür | Varsayılan |
|---|---|---|
indicatorİçindeki her alana uygulanır. | "required" | "optional" | null | – |
render | ReactElement | (props, state) => ReactElement | <div> |
| Prop | Tür | Varsayılan |
|---|---|---|
indicatorİçindeki her alana uygulanır. | "required" | "optional" | null | – |
disabledİçindeki her alanı devre dışı bırakır. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <fieldset> |
| Öznitelik | Açıklama |
|---|---|
data-slot="field-set" | CSS'te fieldset'leri hedefleyin. |
data-disabled | Fieldset devre dışı olduğunda bulunur. |
| Prop | Tür | Varsayılan |
|---|---|---|
variantlabel, bir alan etiketinin boyutuyla eşleşir. | "legend" | "label" | "legend" |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="field-legend" | CSS'te legend'ları hedefleyin. |
data-variant | Geçerli varyant. |
Formlar için aralıklandırılmış bir <Separator />; tüm prop'larını kabul eder.
| Prop | Tür | Varsayılan |
|---|---|---|
childrenÇizginin ortasında gösterilen isteğe bağlı metin. | ReactNode | – |
alignMetnin çizgi boyunca durduğu yer. | "start" | "center" | "end" | "center" |
decorativeYalnızca görselse düz bir çizgiyi ekran okuyuculardan gizleyin. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
| Öznitelik | Açıklama |
|---|---|
data-slot="field-separator" | CSS'te alan ayırıcılarını hedefleyin. |
data-content | Ayırıcıda metin olduğunda bulunur. |
data-slot="separator-label" | Metni saran öğe. |
Bir grup içinde tek bir checkbox veya radio'yu ve etiketini sarar; böylece her öğe ayrı ayrı devre dışı bırakılabilir.
| Prop | Tür | Varsayılan |
|---|---|---|
disabled | boolean | false |
render | ReactElement | (props, state) => ReactElement | <div> |
Alanın geçerlilik durumundan herhangi bir şeyi render eder; örneğin bir güç ölçer veya karakter sayacı.
| Prop | Tür | Varsayılan |
|---|---|---|
children | (state: { validity, errors, error, value }) => ReactNode | – |
- 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.
- 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.
- 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.
- useComposedRefKendi öğenize bir ref tutarken, üst bileşenin ilettiği her ref'e de yönlendirmeyi sürdürür.
- useMergedRefHerhangi sayıda callback ve nesne ref'ini, her biri için React 19 ref temizliğiyle tek bir ref'te birleştirir.
- 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ı.
Kullanıldığı bloklar
Field ü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.