Password Input
PasswordInput là ô nhập mật khẩu có nút hiện / ẩn, nhắc Caps Lock và thước đo độ mạnh tuỳ chọn.
type="password" và nút hiện / ẩn (nút bật tắt, aria-pressed; bấm chuột không làm mất focus khỏi ô nhập). Khi Caps Lock bật lúc gõ, một dòng nhắc hiện dưới ô và được đọc qua vùng live. strength thêm thước đo bốn nấc (Yếu, Trung bình, Khá, Mạnh) có chữ đi kèm, không chỉ dựa vào màu; getPasswordStrength chấm theo độ dài và số loại ký tự, hoặc truyền hàm chấm điểm riêng. Nhận mọi prop của Input và dùng được trong <Field>; chuỗi có sẵn đổi qua messages.passwordInput.Import
Cài từ npm, chép mã nguồn vào dự án bằng @yugen-ui/cli hoặc shadcn CLI, hoặc import thẳng khi làm việc trong repo này.
// npm install yugen-uiimport { PasswordInput, getPasswordStrength, type PasswordStrength } from "yugen-ui";Biến thể
Mỗi ô là một mẫu độc lập: hover để Copy, hoặc bấm Code để xem mã nguồn.
Thước đo độ mạnh
strength dùng getPasswordStrength; mức độ được đọc khi đổi nấc.
Hàm chấm điểm riêng
Trả về 0–4 theo quy tắc của bạn; capsLockWarning={false} tắt dòng nhắc Caps Lock.
Kích thước, appearance & disabled
Như Input; defaultVisible hiện mật khẩu ngay từ đầu.
Cách dùng
- Đặt
autoCompleteđúng: "current-password" khi đăng nhập, "new-password" khi tạo mật khẩu, để trình quản lý mật khẩu điền và gợi ý được. - Ghi yêu cầu mật khẩu trong
hintcủa Field, trước khi người dùng gõ. - Kiểm tra độ mạnh thật ở server; thước đo chỉ là gợi ý nhanh.
- Không chặn dán vào ô mật khẩu — người dùng trình quản lý mật khẩu cần dán.
- Không chỉ dựa vào màu của thước đo; giữ chữ mô tả mức độ.
Props
| Prop · Kiểu | Mặc định | Mô tả |
|---|---|---|
| visible / defaultVisibleboolean | Mặc định: false | Đang hiện mật khẩu dạng chữ (controlled / uncontrolled). |
| onVisibleChange(visible: boolean) => void | Mặc định: — | Gọi khi bấm nút hiện / ẩn. |
| capsLockWarningboolean | Mặc định: true | Nhắc khi Caps Lock bật lúc gõ. |
| strengthboolean | (password: string) => PasswordStrength | Mặc định: — | Thước đo độ mạnh: true dùng getPasswordStrength, hoặc hàm trả 0–4. |
| getPasswordStrength(password: string) => PasswordStrength | Mặc định: — | 0 trống · 1 yếu · 2 trung bình · 3 khá · 4 mạnh, theo độ dài và số loại ký tự. |
| value / defaultValue / onChange— | Mặc định: — | Như Input. |
| label / hint / validationState / validationMessage— | Mặc định: — | Như Input; hoặc bọc trong <Field>. |
| size / appearance / contentBefore / contentAfter— | Mặc định: — | Như Input; contentAfter nằm sau nút hiện / ẩn. |
| rootClassNamestring | Mặc định: — | Class cho khung ngoài (ô nhập, thước đo, dòng nhắc). |
| refRef<HTMLInputElement> | Mặc định: — | Trỏ tới thẻ <input>. |
Messages
Chữ có sẵn của component: nhãn, aria-label, thông báo cho trình đọc màn hình.
Mặc định là tiếng Anh. Đổi qua prop messages của YugenProvider, theo namespace bên dưới; messagesVi chứa bản tiếng Việt. Xem Ngôn ngữ giao diện.
messages.passwordInput
| Khoá · Kiểu | Mặc định (tiếng Anh) | messagesVi |
|---|---|---|
| showstring aria-label nút hiện / ẩn mật khẩu (nút bật tắt, | Mặc định (tiếng Anh)"Show password" | messagesVi"Hiện mật khẩu" |
| capsLockstring Nhắc khi Caps Lock đang bật lúc gõ. | Mặc định (tiếng Anh)"Caps Lock is on" | messagesVi"Caps Lock đang bật" |
| strengthstring Nhãn của thước đo độ mạnh. | Mặc định (tiếng Anh)"Strength" | messagesVi"Độ mạnh" |
| weakstring Bốn mức của | Mặc định (tiếng Anh)"Weak" | messagesVi"Yếu" |
| fairstring | Mặc định (tiếng Anh)"Fair" | messagesVi"Trung bình" |
| goodstring | Mặc định (tiếng Anh)"Good" | messagesVi"Khá" |
| strongstring | Mặc định (tiếng Anh)"Strong" | messagesVi"Mạnh" |