Toast
Toast là thông báo ngắn, không chặn thao tác, xuất hiện ở góc màn hình rồi tự biến mất.
<Toaster /> một lần ở gốc ứng dụng, rồi gọi dispatchToast từ useToast() (hoặc helper toast()). Mỗi toast có intent (info / success / warning / error) với icon giống MessageBar, tiêu đề, nội dung, một hành động và nút đóng. Vuốt để đóng; trỏ chuột vào sẽ tạm dừng đếm giờ; F8 để focus vùng thông báo.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 { Toaster, useToast, toast } 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.
Intent
info, success, warning, error — cùng icon và màu với MessageBar.
Vị trí
Toaster position: top-start, top, top-end, bottom-start, bottom, bottom-end (mặc định).
Không tự đóng & đóng bằng code
timeout: -1 giữ toast tới khi người dùng hoặc code đóng.
Cách dùng
- Dùng cho phản hồi ngắn sau hành động: đã lưu, đã gửi, đã xoá (kèm Hoàn tác).
- Giữ tiêu đề ngắn gọn; nội dung tối đa 1–2 dòng.
- Lỗi cần xử lý ngay nên để timeout -1 hoặc dùng MessageBar / Dialog.
- Không đặt thông tin quan trọng duy nhất trong toast — nó sẽ biến mất.
- Không hiển thị dồn dập nhiều toast cho cùng một sự kiện.
- Không đặt form hay nhiều hành động trong toast.
Props
| Prop · Kiểu | Mặc định | Mô tả |
|---|---|---|
| Toaster | Mặc định: "bottom-end" | Vị trí vùng thông báo. |
| Toaster | Mặc định: — | Định danh khi có nhiều Toaster; dùng cùng useToast(toasterId). |
| Toaster | Mặc định: 5 | Số toast hiển thị cùng lúc. |
| useToast | Mặc định: — | API mệnh lệnh; dispatchToast trả về id. Hàm dispatchToast import thẳng từ gói đã lỗi thời (bỏ ở 1.0): dùng toast() hoặc useToast().dispatchToast. |
| intent"info" | "success" | "warning" | "error" | Mặc định: "info" | Icon và màu icon. |
| title / bodyReactNode | Mặc định: — | Tiêu đề (body1 semibold) và nội dung. |
| action{ label: string; altText?: string; onClick?: () => void } | Mặc định: — | Hành động dạng link ở góc phải tiêu đề. |
| timeoutnumber | Mặc định: 3000 | Thời gian tự đóng (ms); -1 = không tự đóng. |
| toastId / onDismiss / dismissiblestring / () => void / boolean | Mặc định: — / — / true | id cố định, callback khi đóng, hiện nút X. Tên cũ hideDismiss đã lỗi thời (bỏ ở 1.0). |
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.toast
| Khoá · Kiểu | Mặc định (tiếng Anh) | messagesVi |
|---|---|---|
| regionstring Tên vùng thông báo cho trình đọc màn hình. | Mặc định (tiếng Anh)"Notifications" | messagesVi"Thông báo" |
| regionHotkeystring Tên vùng kèm phím tắt nhảy tới; | Mặc định (tiếng Anh)"Notifications ({hotkey})" | messagesVi"Thông báo ({hotkey})" |
| dismissstring Nhãn nút đóng từng toast. | Mặc định (tiếng Anh)"Dismiss notification" | messagesVi"Đóng thông báo" |