Формы

Форма собирается из input, select и textarea. Поля используют общую анатомию, обязательность отражает реальное правило, а ошибки появляются после завершения ввода.

Статус stable. В каноне с 2026-07.

Раскладка

  • Рекомендуется: По умолчанию использовать один столбец и подпись над контролом.
  • Рекомендуется: Соотносить ширину поля с ожидаемым вводом и группировать близкие по смыслу поля.

Обязательность

  • Обязательно: Передавать обязательность нативным required, а не одной визуальной меткой.
  • Рекомендуется: Если необязательных полей меньше, помечать словом «необязательно» именно их.

Валидация

  • Запрещено: Показывать ошибку на каждый введённый символ.
  • Обязательно: Показывать ошибку после потери фокуса (blur) или попытки отправки. Ставить её на место подсказки и связывать через aria-describedby.
  • Обязательно: Убирать ошибку сразу после исправления и объявлять новый текст через aria-live.

Действия

  • Обязательно: Использовать одно главное действие accent; отмену и возврат оформлять как default или ghost.
  • Обязательно: Передавать разрушающий смысл через tone="danger", а не вторым акцентом.

Скоуп

  • Рекомендуется: Спрашивать только данные, необходимые на текущем шаге, и показывать формат заранее в подсказке.

Анатомия поля

ЧастьРоль
labelВидимая подпись, связанная с контролом через for / id
controlСам ввод: input, select или textarea
hintЗачем нужно поле или в каком формате вводить
errorОшибка вместо подсказки, когда поле невалидно
markМетка обязательности рядом с подписью