Giriş
Giriş alanları, arama çubukları ve ödeme formları için tek satırlık bir metin alanı — neobrütalist tarzda kalın kenarlık ve keskin gölge efektleriyle.
import {
Field,
FieldDescription,Input, tek satırlık metin girişi alır — adlar, e-postalar, arama sorguları. Yerel <input> öğesinin üzerindeki ince bir sarmalayıcı olan Base UI Input bileşeni üzerine kuruludur ve neobrütalist reçeteyle giydirilmiştir: kalın kenarlık, keskin gölge ve yüksek kontrastlı odak çerçevesi.
Şu durumlarda tercih edin:
- Oturum açma ve kayıt formları —
FieldveFieldLabelile eşleştirilmiş e-posta, kullanıcı adı ve parola alanları. - Arama çubukları — bir
Buttonile yan yana ya daInputGrouparacılığıyla simgelerle birlikte. - Ödeme ve ayar sayfaları — bir
FieldGroupiçinde düzenlenmiş adresler, kart numaraları ve profil alanları.
Kurulum#
pnpm dlx shadcn@latest add https://neobrutalism.com/r/base/input.jsonnpx shadcn@latest add https://neobrutalism.com/r/base/input.jsonyarn dlx shadcn@latest add https://neobrutalism.com/r/base/input.jsonbunx --bun shadcn@latest add https://neobrutalism.com/r/base/input.json
Aşağıdaki kodu kopyalayıp projenize yapıştırın.
import * as React from "react"
import { cn } from "@/lib/utils"
function Input({ className, type, ...props }: React.ComponentProps<"input">) {
return (
<input
type={type}
data-slot="input"
className={cn(
"h-8 w-full min-w-0 rounded border-2 bg-input px-3 py-2 text-sm shadow-sm transition-colors outline-none file:inline-flex file:h-6 file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground placeholder:text-muted-foreground focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-primary disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive",
className
)}
{...props}
/>
)
}
export { Input }
İçe aktarma yollarını proje kurulumunuza göre güncelleyin.
Kullanım#
import { Input } from "@/components/ui/input"<Input />Örnekler#
Temel#
import { Input } from "@/components/ui/input"
export function InputBasic() {Field#
Etiket ve açıklama içeren bir giriş oluşturmak için Field, FieldLabel ve
FieldDescription bileşenlerini kullanın.
import {
Field,
FieldDescription,Field Group#
Birden fazla Field bloğu göstermek ve formlar oluşturmak için FieldGroup kullanın.
import { Button } from "@/components/ui/button"
import {
Field,Devre Dışı#
Girişi devre dışı bırakmak için disabled prop'unu kullanın. Devre dışı durumunu biçimlendirmek için Field bileşenine data-disabled özniteliğini ekleyin.
import {
Field,
FieldDescription,Geçersiz#
Girişi geçersiz olarak işaretlemek için aria-invalid prop'unu kullanın. Geçersiz durumunu biçimlendirmek için Field bileşenine data-invalid özniteliğini ekleyin.
import {
Field,
FieldDescription,Dosya#
Bir dosya girişi oluşturmak için type="file" prop'unu kullanın.
import {
Field,
FieldDescription,Satır İçi#
Satır içi bir giriş oluşturmak için Field'i orientation="horizontal" ile kullanın.
Bir düğmeli arama girişi oluşturmak için Button ile birleştirin.
import { Button } from "@/components/ui/button"
import { Field } from "@/components/ui/field"
import { Input } from "@/components/ui/input"Izgara#
Birden fazla girişi yan yana yerleştirmek için ızgara düzeni kullanın.
import { Field, FieldGroup, FieldLabel } from "@/components/ui/field"
import { Input } from "@/components/ui/input"
Zorunlu#
Zorunlu girişleri belirtmek için required özniteliğini kullanın.
import {
Field,
FieldDescription,Badge#
Önerilen bir alanı vurgulamak için etikette Badge kullanın.
import { Badge } from "@/components/ui/badge"
import { Field, FieldLabel } from "@/components/ui/field"
import { Input } from "@/components/ui/input"Input Group#
Bir girişin içine simge, metin veya düğme eklemek için InputGroup bileşenini kullanın. Daha fazla örnek için Input Group bileşenine bakın.
import { InfoIcon } from "lucide-react"
import { Field, FieldLabel } from "@/components/ui/field"Button Group#
Bir girişe düğme eklemek için ButtonGroup bileşenini kullanın. Daha fazla örnek için Button Group bileşenine bakın.
import { Button } from "@/components/ui/button"
import { ButtonGroup } from "@/components/ui/button-group"
import { Field, FieldLabel } from "@/components/ui/field"Form#
Birden fazla giriş, bir select ve bir düğme içeren tam bir form örneği.
import { Button } from "@/components/ui/button"
import {
Field,RTL#
Neobrutalism'de RTL desteğini etkinleştirmek için RTL yapılandırma kılavuzuna bakın.
"use client"
import * as React from "react"Erişilebilirlik#
Input, yerel bir <input> işler; bu yüzden klavyeyle düzenleme, odak ve form gönderimi için ARIA bağlantısı gerekmez. Geriye kalanlar size düşer:
- Her giriş alanını etiketleyin.
FieldLabel(veya bir<label htmlFor>) ile eşleştirin —placeholderbir etiket değildir; yazmaya başlayınca kaybolur ve güvenilir biçimde duyurulmaz. - Hata metnini ilişkilendirin. Giriş alanına
aria-invalidekleyin ve ekran okuyucuların mesajı alanla birlikte okuması içinaria-describedbyözniteliğiniFieldErrorveyaFieldDescriptionbileşeninizin id'sine yönlendirin. - Doğru
typeveautocompletedeğerlerini seçin.type="email"ileautocomplete="email"birlikte doğru mobil klavyeyi ve otomatik doldurmayı getirir.