رفتن به محتوای اصلی

کامپوننت‌ها

ورودی

فیلد متن تک‌خطی و چندخطی، با برچسب، متن راهنما، پیام خطا و افزونه.

import { Input, Textarea } from "@kashi-ui/react";

پایه

برچسب، متن راهنما و فیلد به‌صورت خودکار با id و aria-describedby به هم وصل می‌شوند.

همان‌طور که در کارت ملی آمده است.

<Input label="نام و نام خانوادگی" placeholder="مثلاً سارا احمدی" hint="همان‌طور که در کارت ملی آمده است." required />

خطا

با دادن error، فیلد aria-invalid می‌شود و پیام خطا پیش از متن راهنما خوانده می‌شود.

آدرس ایمیل معتبر نیست.

<Input label="ایمیل" type="email" defaultValue="sara@example" error="آدرس ایمیل معتبر نیست." />

افزونه‌ها

ایمیل، تلفن، آدرس اینترنتی، عدد و رمز عبور به‌صورت خودکار چپ‌به‌راست تایپ می‌شوند، ولی متن راهنمای داخل فیلد راست‌چین می‌ماند.

تومان
<Input label="ایمیل" type="email" placeholder="you@example.com" addonStart={<MailIcon />} />
<Input label="مبلغ" inputMode="numeric" placeholder="۰" addonEnd="تومان" />
<Input aria-label="جستجو" placeholder="جستجو…" addonStart={<SearchIcon />} size="sm" />

چندخطی

حداکثر ۵۰۰ نویسه.

<Textarea label="توضیحات" placeholder="چند خط بنویسید…" hint="حداکثر ۵۰۰ نویسه." />

غیرفعال

<Input label="کد ملی" defaultValue="۰۰۱۲۳۴۵۶۷۸" disabled />

رمز، پاک کردن، شمارنده و بیشتر

در حال بررسی در دسترس بودن…

۰ / ۲۸۰
<Input label="رمز عبور" type="password" labelEnd={<a href="/forgot">فراموشی رمز؟</a>} />
<Input aria-label="جستجو" addonStart={<SearchIcon />} clearable />
<Input label="نام کاربری" loading hint="در حال بررسی…" />
<Input label="نام شرکت" optional />
<Textarea label="دربارهٔ شما" autoResize showCount maxLength={280} />
نامنوعپیش‌فرضتوضیح
type="password"—دکمهٔ نمایش/پنهان کردن رمز خودکار اضافه می‌شود؛ با revealable={false} خاموش
clearable / onClearboolean / () => void—دکمهٔ پاک کردن وقتی فیلد مقدار دارد
loadingbooleanfalseاسپینر در انتهای فیلد
showCountbooleanfalseشمارندهٔ نویسه؛ با maxLength به شکل «۱۲ / ۲۸۰»
optionalboolean | string—نشان «(اختیاری)» کنار برچسب
labelEndReactNode—محتوای انتهای ردیف برچسب
autoResize / maxRowsboolean / number—ارتفاع خودکار Textarea
classNames{ root, label, box, control, addon, hint, error }—کلاس دلخواه برای هر بخش داخلی
labels{ clear, show, hide, loading }فارسیمتن‌های صفحه‌خوان

ویژگی‌ها

نامنوعپیش‌فرضتوضیح
labelReactNode—برچسب بالای فیلد؛ اگر نمی‌دهید aria-label بدهید
hintReactNode—متن راهنمای زیر فیلد
errorReactNode—پیام خطا؛ فیلد را aria-invalid می‌کند
size"sm" | "md" | "lg""md"ارتفاع‌ها ۴۰، ۴۴ و ۴۸ پیکسل (فقط Input)
addonStartReactNode—آیکون یا متن ابتدای فیلد (فقط Input)
addonEndReactNode—آیکون یا متن انتهای فیلد (فقط Input)
fieldClassNamestring—کلاس ظرف بیرونی k-field
requiredbooleanfalseستاره کنار برچسب و ویژگی required

سایر ویژگی‌های <input> و <textarea> به خود فیلد منتقل می‌شوند. ref به عنصر فیلد اشاره می‌کند.

متغیرهای CSS

متغیرپیش‌فرضکاربرد
--k-input-height-{sm,md,lg}2.25rem تا 2.75rem × densityارتفاع؛ هم‌قد دکمه‌های sm، md و lg
--k-input-radiusvar(--k-radius-md)گردی گوشه‌ها
--k-input-bgvar(--k-bg-primary)پس‌زمینه
--k-input-bordervar(--k-border-input)رنگ حاشیه در حالت عادی
--k-field-gapvar(--k-space-1_5)فاصلهٔ برچسب، فیلد و راهنما

دسترس‌پذیری

  • حاشیهٔ فیلد کنتراست حداقل ۳ به ۱ دارد تا مرز آن برای کاربران کم‌بینا مشخص باشد.
  • متن راهنمای داخل فیلد (placeholder) جایگزین برچسب نیست؛ با تایپ کاربر ناپدید می‌شود.
  • پیام خطا باید بگوید چه اشتباهی رخ داده و چطور درست شود، نه فقط «نامعتبر».