Alert
Mẫu chuẩnThông báo nằm trong dòng chảy trang, ở lại cho tới khi nội dung sinh ra nó đổi. Năm kind theo năm status kind đã có sẵn trong hệ token.
Playground
Đổi brand, theme, kind, icon, tiêu đề, hành động và nội dung để xem cùng một Alert thích ứng.
role hiện tại: status — đọc lịch sự, không ngắt.
import { Alert, AlertIcon, AlertContent, AlertTitle } from "@nexobox/ui";
<Alert kind="information">
<AlertIcon icon={InformationCircleIcon} />
<AlertContent>
<AlertTitle>Đang thử nghiệm</AlertTitle>
Bản ghi sẽ được đồng bộ lại trong lần đăng nhập kế tiếp.
</AlertContent>
</Alert>Khi nào sử dụng
Nên dùng
Một thông báo gắn với nội dung đang hiển thị: kết quả một hành động vẫn còn hiệu lực trên trang, điều kiện hiện tại của khối nội dung đang đọc, hoặc một ghi chú đứng cạnh nội dung để người đọc không bỏ lỡ khi cuộn qua khu vực đó.
Khi nào không dùng
Tránh dùng
Một thông báo thoáng qua, tự biến mất, neo ở một vùng cố định của màn hình — đó là Toaster, không phải Alert. Alert ở lại cho tới khi nội dung sinh ra nó đổi; Toaster hết hạn theo duration hoặc bị đóng, và không chiếm chỗ trong luồng nội dung. Một lỗi gắn với một trường form cụ thể — đặt cạnh trường đó. Một câu hỏi cần câu trả lời — dùng Dialog.
Anatomy
| # | Phần | Ghi chú |
|---|---|---|
| 1 | Icon (AlertIcon) | Tuỳ chọn. Hugeicons qua Icon của package, glyph 20px. Ô icon cao bằng một dòng body và căn glyph giữa ô, nên icon khóa vào dòng chữ đầu. Consumer tự chọn icon — không tự gán theo kind. |
| 2 | Tiêu đề (AlertTitle) | Tuỳ chọn. Một thẻ p, không phải heading — không chiếm một bậc trong outline heading của trang. |
| 3 | Nội dung (AlertContent) | Bắt buộc. Một div, có thể chứa văn bản, danh sách hoặc một Button hành động. |
Không có nút đóng. Alert ở lại cho tới khi nội dung sinh ra nó đổi — đó là định nghĩa của nó; một nút đóng sẽ cho nó một cách biến mất thứ hai. Alert không nhấn được ở cấp vỏ — nếu nội dung chứa một Button, nút đó tự mang trạng thái của nó.
Variants
Bản nháp
--nf-semantic-status-neutral-*.Đã lưu
--nf-semantic-status-success-*.Cần chú ý
--nf-semantic-status-warning-*.Không lưu được
--nf-semantic-status-danger-*.Đang thử nghiệm
--nf-semantic-status-information-*.Mặc định là information. Không có size prop — một kích thước duy nhất cho cả năm kind.
States
Alert không nhận tương tác ở cấp vỏ: không hover, không focus-visible, không disabled riêng. Trạng thái thực sự khác nhau là tổ hợp phần hiện diện, mỗi tổ hợp render thật bên dưới.
Đang thử nghiệm
Tính năng này đang ở giai đoạn thử nghiệm nội bộ.Icon + AlertTitle + AlertContent.
Bản nháp
Chưa có thay đổi nào được gửi đi.AlertTitle + AlertContent, không AlertIcon.
Icon + AlertContent, không AlertTitle.
Chỉ AlertContent.
Không lưu được
Máy chủ từ chối yêu cầu vì phiên đăng nhập đã hết hạn. Đăng nhập lại và thử lưu một lần nữa; nếu lỗi vẫn còn, liên hệ quản trị viên hệ thống để kiểm tra quyền truy cập của tài khoản.Không cắt, không giới hạn chiều cao.
Có bản cập nhật
Một phiên bản mới của trang đã sẵn sàng.Button tự mang trạng thái của nó — Alert không truyền trạng thái xuống.
Empty, loading, error: không có. Alert không bất đồng bộ — nó render hoặc không render.
Bàn phím & trợ năng
API & triển khai
| Prop | Mặc định | Quy ước |
|---|---|---|
| Alert kind | information | neutral | success | warning | danger | information. |
| Alert role | theo kind — "alert" cho danger/warning, "status" cho ba kind còn lại | Ghi đè được cho một trường hợp cụ thể. |
| AlertIcon icon | — | Bắt buộc khi dùng AlertIcon. Hugeicons qua @nexobox/ui, không tự chọn theo kind. |
| AlertTitle children | — | Tuỳ chọn. Nội dung tiêu đề. |
| AlertContent children | — | Bắt buộc. Nội dung chính — văn bản, danh sách hoặc Button. |
Mọi thuộc tính gốc còn lại (className, style, id...) của từng phần được truyền thẳng qua ...props.
Design tokens
Alert đọc thẳng năm nhóm semantic: --nf-semantic-status-neutral/success/warning/danger/information-background, -border, -foreground, -icon. Đệm đọc --nf-component-alert-padding (space.4, 16px). Bo góc đọc --nf-component-alert-radius (12px). Icon cách cột chữ bằng --nf-component-alert-gap (12px). Trong cột, tiêu đề, câu chữ và Button cách nhau bằng --nf-component-alert-content-gap (8px). Icon dùng --nf-component-icon-size, 20px, căn giữa một ô cao bằng dòng body.
Do / Don't
Nên dùng
Dùng Alert cho một điều kiện vẫn còn đúng khi người đọc cuộn tới nó. Đặt Button hành động bên trong AlertContent.
Tránh dùng
Dùng Alert cho một xác nhận thoáng qua như "Đã lưu" — đó là Toaster. Dùng kind="danger" cho một ghi chú không khẩn — role="alert" sẽ ngắt không cần thiết.