PasswordInput

PasswordInput — поле ввода пароля на Password Input из Ark UI. Внешне это Input: та же оболочка Field (label, error, iconLeft), та же шкала size и форма radius. Ввод скрыт, справа стоит кнопка с глазом — она показывает и снова скрывает пароль; место iconRight занято ею, поэтому такого пропа нет. Значение — контролируемая модель: пара value / onValueChange. autoComplete подсказывает менеджеру паролей, вводится действующий пароль (current-password, по умолчанию) или придумывается новый (new-password). strengthMeter включает под полем индикатор надёжности; по умолчанию он выключен. Уровень индикатор считает сам (zxcvbn) либо получает готовым через strengthLevel.

Анатомия

PasswordInput
Field.Root (обёртка)
Label (label)
Control (обёртка)
IconLeft (iconLeft)
input (value / onValueChange)
VisibilityTrigger (показать / скрыть)
Meter (strengthMeter)
Error (error, при invalid)

Примеры

Индикатор надёжности

strengthMeter рисует под полем шкалу из четырёх делений и подпись уровня. Оценивается стойкость к подбору, а не состав: словари частых паролей, клавиатурные дорожки, даты, повторы, замены вроде p@ssw0rd — поэтому Password1! получает «Слабый». Считает @zxcvbn-ts/core; библиотека и словари тяжёлые и грузятся отдельным чанком при первом вводе, до этого шкала пуста. Пароли кириллицей со словарями не сверяются и оцениваются выше, чем того стоят. Индикатор — подсказка, а не валидация: требования к паролю задаёт схема формы.

Запрет слабого пароля

Индикатор сам ничего не запрещает. Чтобы не принимать слабый пароль, уровень берут хуком usePasswordStrength, сравнивают с порогом и отдают текст в error. Тот же уровень передают в strengthLevel — поле не считает его второй раз.

Ошибка

Непустой error помечает поле как invalid (красная рамка) и рисует текст ошибки под ним — так же, как у Input.

Минимум 8 символов

В форме

В формах на useAppForm поле подключается как field.PasswordInputField: значение и ошибку оно берёт из поля формы, а валидируется теми же схемами и валидаторами, что и InputField. Ошибка показывается после первого ввода.

Размер, иконка и форма

Визуальные пропсы те же, что у Input: size — ступень шкалы (поле зеркалит кнопку), radius="circle" — таблетка, iconLeft — декоративная иконка слева.

API

PropTypeDefault
value

Значение поля (контролируемая модель)

string-
onValueChange

Вызывается при изменении значения

(value: string) => void-
placeholder

Плейсхолдер поля

string-
autoComplete

Подсказка браузеру и менеджеру паролей: вводится действующий пароль или придумывается новый

"current-password" | "new-password"-
strengthMeter

Показывать под полем индикатор надёжности пароля. Оценивается стойкость к подбору (zxcvbn); библиотека загружается при первом вводе

booleanfalse
strengthLevel

Уровень надёжности, посчитанный снаружи: 0 — пароль не введён, 1–4 — от слабого к надёжному. Заменяет встроенную оценку

PasswordStrengthLevel-
size

Размер компонента

Size-
radius

Скругление углов: circle — «таблетка»

Radius-
label

Текст лейбла над контролом

ReactNode-
invalid

Помечает поле ошибочным: контрол получает data-invalid, и только в этом состоянии рендерится Field.Error

FieldArkRootProps["invalid"]-
disabled

Отключает поле: контрол внутри становится недоступен

FieldArkRootProps["disabled"]-
required

Помечает поле обязательным

FieldArkRootProps["required"]-
readOnly

Значение видно, но изменить его нельзя

FieldArkRootProps["readOnly"]-
error

Текст ошибки под контролом; при наличии поле помечается как invalid

ReactNode-
iconLeft

Декоративная иконка слева внутри контрола

Icon-

Наследуется от Pick<VisualProps, K>, Omit<FieldShellProps, "iconRight">