Text Input
Компонент для ввода произвольных текстовых, цифровых и символьных значений в одну строку. Используется в формах на странице и диалоговых окнах; также может быть частью форм авторизации, поиска или фильтров.
§Применение
В отличие от TextArea, не меняет высоту при вводе и используется для простых данных в произвольной форме с любой комбинацией букв, цифр или символов.

При вводе текста, превышающего ширину поля, можно перемещаться по контенту вправо и влево.

✅ Когда использовать
- Когда ожидается, что достаточно ввести текст в одну строку.
- Когда невозможно выбрать вариант из заранее определенного списка.
- Когда можно уместить введенную информацию, а для ввода не требуется более сложных интерфейсов.
🚫 Когда не использовать
- Когда нужно ввести параметр только из предопределенного списка, необходимо избегать использования данного компонента, поскольку это может привести к ошибке. В таких случаях лучше использовать другие компоненты с определённым выбором вариантов значений, например,
Select,Radio Button,RadioилиCheckbox. - Когда требуется ввод большого количества символов (больше 5 слов). Для этого лучше рассмотреть компонент для многострочного ввода текста — TextArea.
§Типы
Существует два типа TextInput: Normal и Clear, которые имеют одинаковый набор функций, но выглядят по-разному и применяются в зависимости от контекста.

Normal
- Наиболее часто используемый вид.
- Отличительной особенностью является то, что у компонента есть внутренние отступы и скругления (параметры, которые зависят от размера элемента), а также обводка 1 px.
- Используется в формах, когда между компонентами необходимо использовать свободное пространство в виде отступов между элементами в форме.
Clear
- Отличительной особенностью является то, что у компонента отсутствует обводка, а элементы внутри располагаются в краях поля для ввода.
- Используется, когда вид Normal создает визуальный шум.
- При использовании этого вида важно убедиться, что суть компонента остается понятной для пользователя.
§Структура

1. Левая иконка (Left icon)

- Является опциональным элементом.
- Иконка может быть использована в качестве дополнительной идентификации поля.
- Например, если это поисковая строка, может использоваться иконка «лупа», если это поле для ввода пароля — иконка «ключ».
2. Внутренний лейбл (Inline label)

- Является опциональным элементом.
- Усиливает значение имени поля.
- Заменяет внешний лейбл.
- Используется как имя поля, так как при вводе значения подсказка пропадает и суть поля становится непонятной.
3. Значение (Value)

- Является обязательным элементом.
- Место, которое используется для текста подсказки (хинта) и введенного текста.
- Введенный текст заменяет подсказку сразу после ввода первого символа.
4. Кнопка очистки (Clear button)

- Является опциональным элементом.
- Используется, если нужно очистить поле.
- Отображается, когда в поле введен хотя бы один символ.
- Отображается даже в случае, когда фокус находится вне поля.
- Является компонентом
ButtonтипаFlat-secondaryи наследует все его свойства. Например, по hover фон крестика будет с заливкой. - При клике на кнопку очистки фокус переходит в поле, а введенное значение стирается.
5. Встроенные кнопки (Inline buttons)

- Является опциональным элементом и встраивается справа.
- Используется, если требуется более явно обозначить связь между содержимым и действиями. Такие кнопки можно разместить внутри компонента.
- Максимальное количество внутри поля – два компонента
Button. - Размеры встроенных кнопок выбираются на один шаг меньше размера компонента. Например, если используется размер
S, то кнопка должна бытьXS, если —M, тоS, и так далее. - Например, можно использовать для подтверждения действий, отправки сообщений или дополнительных фильтров внутри поля.
6. Произвольный контент (Additional)

- Является опциональным элементом и встраивается справа.
- Используется, если нужно добавить дополнительный текст внутри.
- Текст выравнивается по правому краю.
- Например, можно использовать для каунтера (счетчика введенных символов), когда нужно посчитать количество найденных значений в строке поиска или для единиц измерения.
7. Иконка ошибки (Error icon)

- Выводится только в состоянии Inline Error.
- Работает в паре с Tooltip с описанием ошибки при наведении на иконку, когда нужно сделать компактнее вид в форме.
8. Описание ошибки (Error description)

- Выводится только в состоянии
Outline Error. - Описание ошибки располагается слева внизу поля.
§Состояния
Имеет несколько состояний: Suggest, Default, Hover, Active, Disabled, Inline Error и Outline Error.

- Suggest — неактивное состояние, когда нет прямого взаимодействия с компонентом и в нем еще нет введенных данных. В таком состоянии значение может подсказывать, что это поле нужно заполнить, и являться подсказкой (хинтом).
- Default — неактивное состояние, когда нет прямого взаимодействия с компонентом и в нем уже есть введенные данные. В таком состоянии значение подсказки (хинт) меняется на то, что введено было пользователем.
- Hover — активное состояние, когда курсор наводится на область компонента.
- Active — активное состояние, вызываемое переходом от предыдущего компонента или намеренным кликом курсором на него. Состояние сбрасывается, если происходит переход на другой компонент или клик курсором на пустое место.
- Disabled — неактивное состояние компонента, когда нет возможности с ним взаимодействовать.
- Outline error — активное состояние компонента, когда происходит ошибка при валидации, которая отображается внизу поля с пояснением.
- Inline error — активное состояние компонента, когда происходит ошибка при валидации поля, но сама ошибка не выводится, а отображается специальная иконка, при наведении на которую появляется тултип с ошибкой.
§Размеры

Существует 4 размера компонента: S, M, L, и XL.
В зависимости от размера у компонента меняется высота и скругления углов полей, а также отступы внутри поля и размер текста.
Радиусы скругления зависят от размера и задаются переменными.
- S (
-g-border-radius-s: 5px;) — используются там, где стандартный инпут слишком велик (таблицы, небольшие карточки). - M (
-g-border-radius-m: 6px;) — основной размер, используется в большинстве форм и фильтрах. - L (
-g-border-radius-l: 8px;) — используется для поиска (например, поиск по сервису). - ХL (
-g-border-radius-xl: 10px;) — используется в коммуникационной среде (например, на сайте и лендингах).
§Рекомендации по использованию
1. Работа с полем
- Поле может содержать только одну строку. Для этой цели подойдет компонент для многострочного ввода текста — TextArea.
- Не рекомендуется помещать подсказку (хинт) внутрь поля, так как при вводе значения имени поля будет не видно. Так можно делать только в исключительных случаях, когда нужно сэкономить место или предназначение поля очевидно.
- Ширина поля должна соответствовать ширине вводимого значения. Это подсказывает пользователю, какое значение от него ожидают.
- Используйте один размер с другими комплементарными компонентами в форме. Если вы выбрали для работы
M, другие компоненты должны быть такого же размера.
2. Внешний заголовок поля

- Краткое название поля (желательно не больше одной строки).
- В десктопных формах компонент должен быть расположен в одну строку со значением поля, за исключением мобильного контекста или диалогов размера
S, где заголовок размещается сверху компонента.
3. Подсказка с тултипом

- Инструкции по заполнению поля при наведении на иконку с вопросительным знаком.
- Используется при необходимости пояснить заголовок.
- Рекомендуется писать короткий текст (не более двух абзацев).
4. Дополнительное описание

- Может располагаться снизу поля или справа от поля.
- Используется в особых случаях, когда без дополнительного описания не понятно, как заполнять поле или требуются пояснения к уже заполненному значению.
5. Единицы измерения можно размещать:

- В текстовом описании поля, если позволяет место в форме.
- Внутри поля ввода, если есть потребность сократить описание.
- Справа от поля, если необходимо место под другие элементы внутри поля, например, кнопки или крестик очистки.