Формы
Форма собирается из 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 | Метка обязательности рядом с подписью |