@akhatmirzo/ui

Input

Bir qatorli matn maydoni: ikonkalar, prefix/suffix, tozalash tugmasi va parolni ko'rsatish.

Import

import { Input } from '@akhatmirzo/ui';

Qachon ishlatish

  • Qisqa, bir qatorli qiymatlar uchun — ism, email, qidiruv, summa. Ko'p qatorli matnga Textarea.
  • Doim Field ichida ishlating — label, izoh va xato o'zi ulanadi. Label'siz (masalan, qidiruv) maydonga aria-label bering.
  • Telefon, karta raqami, sana kabi qat'iy formatlar uchun MaskedInput qulayroq.
  • placeholder label o'rnini bosmaydi — u yozish boshlanishi bilan yo'qoladi. Misol qiymat uchun ishlating: "90 123 45 67".

O'lchamlar

32, 40 (standart) va 48px — Button bilan bir xil, shuning uchun bir qatorda tekis turadi.

Ikonkalar, prefix va suffix

leftIcon / rightIcon — bezak ikonkalari (aria-hidden). prefix / suffix — maydon ichidagi doimiy matn, ajratuvchi chiziq bilan: mamlakat kodi, valyuta, domen.

+998
so'm
https://.uz

Tozalash (clearable)

clearable bo'lsa va maydonda qiymat bo'lsa, ✕ tugmasi chiqadi. Esc ham tozalaydi. Tozalash oddiy input hodisasi orqali o'tadi — boshqariladigan rejimda onChange ham chaqiriladi, qo'shimcha ravishda onClear.

Qiymat: Samarqand

Parol

type="password" bo'lsa, o'ng tomonda parolni ko'rsatish/yashirish tugmasi avtomatik chiqadi.

Kamida 8 ta belgi

Holatlar

Xato (invalid), o'chirilgan (disabled) va faqat o'qish uchun (readOnly). Field ichida error berilsa, invalid avtomatik yoqiladi.

Field bilan

Tasdiqlash kodi SMS orqali keladi

+998

Email manzil noto'g'ri

Props

Input qolgan barcha <input> atributlarini (type, name, placeholder, inputMode, autoComplete, onChange ...) qabul qiladi; ref ichki <input> ga tushadi. className — tashqi konteynerga, ichki elementga esa inputClassName.

PropTipStandartTavsif
size'sm' | 'md' | 'lg''md'Balandlik: 32 / 40 / 48px
invalidboolean—Xato holati (Field ichida error bo'lsa avtomatik)
leftIconReactNode—Chap tomondagi ikonka
rightIconReactNode—O'ng tomondagi ikonka
prefixReactNode—Chapdagi matn ajratuvchi chiziq bilan (masalan, "+998")
suffixReactNode—O'ngdagi matn ajratuvchi chiziq bilan (masalan, "so'm")
clearablebooleanfalseQiymat bo'lsa ✕ tugmasi; Esc ham tozalaydi
onClear() => void—Tozalangandan keyin chaqiriladi
labels{ clear?: string; showPassword?: string; hidePassword?: string }{ clear: 'Tozalash', showPassword: "Parolni ko'rsatish", hidePassword: 'Parolni yashirish' }Ichki tugmalarning aria-label matnlari
inputClassNamestring—Ichki <input> klassi
typestring'text''password' — ko'rsatish/yashirish tugmasi bilan
readOnlybooleanfalseFaqat o'qish uchun; fon xiralashadi, tozalash tugmasi chiqmaydi

Data atributlari

Atributlar tashqi konteynerda (data-slot="input"):

AtributQiymat
data-sizesm · md · lg
data-invalidXato holatida mavjud
data-disableddisabled bo'lganda mavjud
data-readonlyreadOnly bo'lganda mavjud

Accessibility

  • Native <input> — brauzerning avtoto'ldirish, tekshiruv va klaviatura xatti-harakati saqlanadi.
  • Field bilan id, aria-describedby, aria-invalid va aria-required avtomatik ulanadi.
  • Fokus halqasi konteynerda (:focus-within) — ikonka va prefix ham halqa ichida qoladi.
  • Esc qiymatni tozalaydi (faqat clearable va maydon bo'sh bo'lmasa). Bo'sh maydonda hodisa yuqoriga o'tadi — masalan, Dialog yopiladi.
  • Tozalash tugmasi Tab tartibida yo'q (tabIndex={-1}) — klaviaturada uning o'rnini Esc bosadi. Parol tugmasi esa fokuslanadi va aria-label i holatga qarab almashadi.
  • Ikonkalar aria-hidden — ma'noli bo'lsa, uni label yoki aria-label da yozing.

Sahifada