Textarea
Ko'p qatorli matn maydoni: matnga qarab o'sadi va belgilarni sanaydi.
'use client';
import { Textarea } from '@akhatmirzo/ui';
export default function TextareaBasic() {
return (
<div className="w-full max-w-md">
<Textarea placeholder="Buyurtma haqida izoh qoldiring" aria-label="Izoh" />
</div>
);
}
Import
import { Textarea } from '@akhatmirzo/ui';Qachon ishlatish
- Erkin, ko'p qatorli matn uchun — izoh, manzil, sharh, xabar. Bir qatorli qiymatga
Input. - Doim
Fieldichida — label, izoh va xato o'zi ulanadi. - Chat va izoh maydonlarida
autoResizeishlating: maydon matn bilan birga o'sadi,maxRowsdan keyin ichki scroll paydo bo'ladi. - Cheklov bo'lsa,
maxLengthnishowCountbilan bering — foydalanuvchi qancha joy qolganini ko'rib turadi.
Avtomatik balandlik
autoResize — balandlik minRows dan maxRows gacha matnga moslashadi. maxRows berilmasa,
cheklovsiz o'sadi. Bu rejimda qo'lda cho'zish (resize) o'chiriladi.
'use client';
import { Textarea } from '@akhatmirzo/ui';
export default function TextareaAutoResize() {
return (
<div className="w-full max-w-md">
<Textarea
autoResize
minRows={2}
maxRows={6}
placeholder="Yozib ko'ring — maydon matn bilan birga o'sadi"
aria-label="Xabar"
/>
</div>
);
}
Belgilar soni
showCount maydon ostida belgilar sonini ko'rsatadi; maxLength bilan "64 / 120" ko'rinishida.
Chegaraga yetganda son qizaradi.
'use client';
import { Textarea } from '@akhatmirzo/ui';
import { useState } from 'react';
export default function TextareaCount() {
const [bio, setBio] = useState(
'Frontend dasturchi, Toshkent. React va TypeScript bilan ishlayman.',
);
return (
<div className="w-full max-w-md">
<Textarea
showCount
maxLength={120}
value={bio}
onChange={(e) => setBio(e.target.value)}
aria-label="O'zingiz haqingizda"
/>
</div>
);
}
Holatlar va o'lchamlar
Input dagi holatlar: invalid, disabled, readOnly. O'lchamlar (sm, md, lg) ichki
bo'shliq va shrift o'lchamini o'zgartiradi; balandlikni minRows belgilaydi.
'use client';
import { Textarea } from '@akhatmirzo/ui';
export default function TextareaStates() {
return (
<div className="grid w-full max-w-lg grid-cols-1 gap-3 sm:grid-cols-2">
<Textarea minRows={2} invalid defaultValue="Juda qisqa" aria-label="Xato" />
<Textarea minRows={2} disabled defaultValue="O'chirilgan" aria-label="O'chirilgan" />
<Textarea minRows={2} readOnly defaultValue="Faqat o'qish uchun" aria-label="Faqat o'qish" />
<Textarea minRows={2} size="sm" placeholder="Kichik o'lcham" aria-label="Kichik" />
</div>
);
}
Field bilan
Kuryer uchun qo'shimcha ma'lumot
'use client';
import { Field, Textarea } from '@akhatmirzo/ui';
export default function TextareaWithField() {
return (
<div className="w-full max-w-md">
<Field label="Izoh" required description="Kuryer uchun qo'shimcha ma'lumot">
<Textarea
autoResize
showCount
maxLength={300}
placeholder="Masalan: 3-podyezd, domofon ishlamaydi"
/>
</Field>
</div>
);
}
Props
Textarea qolgan barcha <textarea> atributlarini (name, placeholder, maxLength,
onChange ...) qabul qiladi; ref ichki <textarea> ga tushadi. rows o'rniga minRows
ishlatiladi. className — tashqi konteynerga, ichki elementga — textareaClassName.
| Prop | Tip | Standart | Tavsif |
|---|---|---|---|
size | 'sm' | 'md' | 'lg' | 'md' | Ichki bo'shliq va shrift o'lchami |
invalid | boolean | — | Xato holati (Field ichida error bo'lsa avtomatik) |
autoResize | boolean | false | Balandlik matnga qarab o'sadi (minRows .. maxRows) |
minRows | number | 3 | Boshlang'ich (va eng kichik) qatorlar soni |
maxRows | number | — | autoResize'da eng ko'p qatorlar; undan keyin ichki scroll |
showCount | boolean | false | Belgilar soni; maxLength bilan "120 / 500" |
textareaClassName | string | — | Ichki <textarea> klassi |
readOnly | boolean | false | Faqat o'qish uchun |
Data atributlari
Atributlar tashqi konteynerda (data-slot="textarea"): data-size, data-invalid,
data-disabled, data-readonly. Hisoblagich elementi — data-slot="textarea-count".
Accessibility
- Native
<textarea>—Tabbilan fokuslanadi,Enteryangi qator qo'shadi. - Field bilan
id,aria-describedby,aria-invalidvaaria-requiredavtomatik ulanadi. - Hisoblagich
aria-describedbyga qo'shiladi — ekran o'quvchi maydonga kelganda limitni ham aytadi.