Skip to main content

فیلد ورودی

وضعیت

هدفِ normative. وب فرم‌های واقعی دارد اما با مارک‌آپ ad hoc؛ پذیرش در وضعیت پذیرش طراحی. کلاس .field prototype-only.

هدف

خانوادهٔ سه‌تایی ورودی متن (input)، انتخابی (select) و چندخطی (textarea) — با لیبل بالای فیلد و خطای زیر آن؛ واحدِ فرم‌های دیالوگ.

ساختار

<label class="field">
<span class="label">عنوان رویداد</span>
<input class="input" />
<span class="err"></span>
</label>

لیبل همیشه بیرون فیلد (نه داخل آن به‌عنوان placeholder).

گونه‌ها و اندازه‌ها

گونهکاربرد
input متنعنوان، مکان، شمارهٔ همراه
selectانتخاب از فهرست کوتاه (تقویم، نوع)
textareaیادداشت — حداقل ۸۸px ارتفاع
input عددی .ltrتلفن/کد — direction: ltr و ارقام هم‌عرض

ارتفاع کنترل ۴۲px · لیبل ۱۳px/۶۰۰ --muted · placeholder مثال واقعی، نه دستور («مثلاً: جلسه تیم فنی»).

حالت‌ها

حالتظاهر
defaultپس‌زمینه --surface-1، خط --border
hoverخط --border-strong
focus-visibleخط برند + هالهٔ ۳px با ۱۴٪ شفافیت
activeهمان فوکوس (تایپ جریان دارد)
disabledکم‌رنگ + disabled بومی
loadingخود فیلد ندارد؛ دکمهٔ فرم اسپینر می‌گیرد
errorکلاس .invalid + متن .errهرگز فقط قرمز بدون متن
successعلامت سبز گوشه ندارد؛ اعتبار با فعال‌شدن CTA اعلام می‌شود

رفتار

  • اعتبارسنجی زنده اما بی‌سروصدا: خطا بعد از اولین تعامل ظاهر می‌شود، نه حین تایپ اول.
  • ورودی عددی ارقام فارسی را می‌پذیرد و هنگام خواندن به لاتین نرمال می‌کند (J.en).

کیبورد و دسترس‌پذیری

  • لیبل با <label> به کنترل وصل است — نامِ دسترس‌پذیر خودکار.
  • aria-invalid="true" هنگام خطا + پیام خطا متنی.
  • inputmode="numeric" برای تلفن/OTP؛ فوکوس برنامه‌ای فقط هنگام بازشدن فرم (روی اولین فیلد).

رفتار واکنش‌گرا

فرم‌ها همیشه تک‌ستونه؛ فیلد تمام‌عرض دیالوگ/برگه می‌گیرد (۳۲۰px هم جا می‌شود). فقط جفتِ شروع/پایان در یک سطر گرید ۲تایی — آن هم رفتار انتخابگر تاریخ و ساعت است.

قواعد محتوا

  • ✅ پیام خطا علت + راه‌حل: «پایان نمی‌تواند قبل از شروع باشد».
  • ❌ placeholder به‌جای لیبل؛ خطای «مقدار نامعتبر» بدون توضیح.

توکن‌ها

--surface-1 · --border/--border-strong · --brand (فوکوس) · --holiday (خطا) · شعاع ۱۰.

پیاده‌سازی پلتفرم‌ها

  • وب: مارک‌آپ ad hoc در فرم‌ها — مرجع: EventModal.tsx و LoginPage.tsx.
  • اندروید: خانوادهٔ BaseTextField — textfields/ (شامل تبدیل ارقام فارسی/لاتین).
  • .field فقط در ui-design/prototypes/assets/app.css (prototype-only).

نمونهٔ تعاملی

کتابخانهٔ زندهٔ فیلد ورودی