Bỏ qua tới nội dung
Component / 039 / NEXOFRAME

FormNotice

Mẫu chuẩn

Cặp song sinh của FormError: cùng hình học bám ô nhập, nhưng vai trò aria là “status” chứ không “alert”, nên trình đọc màn hình đọc nó lịch sự — chờ tới lúc người dùng ngừng thao tác.

Composite tầng 2Không dựng từ primitive nàorole="status" cố định1 prop

Playground

Đổi brand, theme và nội dung. Bên dưới là một FormError tĩnh để so — cùng hình học, khác vai trò aria, màu và icon.

LIVE PREVIEW
Đã gửi email xác minh.

role của FormNotice: status — đọc lịch sự, chờ tới lúc nghỉ. Băng FormError bên dưới chỉ để so sánh, không phải specimen sống của trang này.

import { FormNotice } from "@nexobox/ui";

{justSaved ? <FormNotice>"Đã gửi email xác minh."</FormNotice> : null}

Bài toán

Khi một lần nộp thành công nhưng trang không điều hướng đi đâu — mật khẩu đã đổi, email xác minh đã gửi, thiết lập đã lưu — người dùng cần một xác nhận nằm đúng chỗ họ vừa nhìn, tức đầu biểu mẫu. Xác nhận ấy phải được trình đọc màn hình đọc, nhưng không được chen ngang, vì chen ngang cho một tin tốt sẽ cắt lời chính thao tác người dùng đang làm tiếp. Một primitive không giải được vì đây cũng là ba quyết định ghép — vai trò status, hình học bám field, icon dấu tích cố định — và không primitive nào sở hữu cả ba. Hình học ấy khác Alert, và bảng đo khác biệt nằm ở FormError; nó áp nguyên cho file này.

Khi nào sử dụng

Nên dùng

Xác nhận thành công ở mức biểu mẫu, đặt ở đầu biểu mẫu, khi trang không điều hướng sau khi nộp. Thông báo trung tính, không khẩn: "Đã gửi email xác minh", "Đã lưu thay đổi". Một dòng, một câu.

Khi nào không dùng

Tránh dùng

Không dùng choDùng thay
LỗiFormError — role="alert", màu và icon của danger
Xác nhận tạm thời sau một hành động ở nơi khác trên trangToaster — một băng thường trực cho một việc đã xong từ lâu sẽ đứng đó mãi
Xác nhận có tiêu đề, danh sách, hoặc một nút "xem chi tiết"Alert với kind="success"
Trạng thái rỗng của một danh sáchEmpty

Dựng từ

Primitive tầng 1Vai trong composite
—Không primitive nào.
Icon (wrapper, không phải dòng catalogue)Vẽ CheckmarkCircle02Icon, cỡ small, màu status.success.icon.

Composite thứ hai trong tầng không dựng từ primitive tầng 1 nào — cùng ghi chú như FormError: nó thêm thứ không primitive nào có, không gọi tên khái niệm sản phẩm nào, nên vẫn thuộc tầng 2.

FormNotice thêm gì
role="status" cố định — không nhận từ caller
Icon dấu tích cố định, không chọn được
Hình học bám field — dùng chung bộ alias với FormError
Icon căn theo dòng chữ đầu, không căn theo hộp

Anatomy

#PhầnGhi chú
1Icon (CheckmarkCircle02)Cỡ small, màu status.success.icon.
2span (children)Câu chữ do host cấp.

Giống FormError từng phần một, chỉ đổi ba token màu, một icon, một vai trò aria và một alias lề dưới — hai băng cạnh nhau trong cùng một biểu mẫu phải đọc như hai trạng thái của một thứ.

States

HIỆN
Đã gửi email xác minh.

Được render. Trình đọc màn hình đọc lịch sự, chờ tới lúc nghỉ.

Không hiện: không có chế độ ẩn. Hover, focus, disabled: không có — không phải control, không phần nào nhận tiêu điểm. Không có nút đóng và không tự tắt. Hệ quả cần biết: nếu người dùng nộp lại biểu mẫu và lần này lỗi, host phải bỏ băng thành công đi — composite không biết nó đã cũ.

Bàn phím & trợ năng

Không phím nào -- không phần tử tương tác, không nằm trong tab order.
Nghĩa vụ trợ năng nằm hoàn toàn ở role="status".

Seam — host sở hữu gì

FormNotice không biết việc gì đã thành công, không hết hạn, không tự thay thế mình bằng một băng lỗi khi lần nộp sau thất bại. Theo ADR-UI-003 clause 2 nó không fetch, không đọc router, không giữ session, không import gì từ next.

Host sở hữuCấp qua
Câu chữ, bằng ngôn ngữ người đọcchildren
Khi nào băng tồn tại, và khi nào nó phải mất điRender có điều kiện. Không có prop visible, không có timer
Việc loại trừ: thành công và lỗi không được hiện cùng lúcHost. Hai composite không biết nhau
Lề ngoài, về lâu dàiHiện composite tự giữ — cùng khiếm khuyết đã ghi ở FormError, dòng ledger W10.20

API & triển khai

PropMặc địnhQuy ước
children—Bắt buộc. Một dòng, một câu. Đóng ở đúng một dòng, cùng lý do FormError.

Design tokens

FormNotice đọc --nf-component-field-radius, --nf-semantic-status-success-border-subtle, -background, -foreground, -icon, cộng các alias component.auth.banner* và component.auth.noticeMarginBottom. Cùng lỗ hổng đặt tên đã ghi ở FormError — nhóm đúng là component.formBanner.*, theo dõi bằng dòng ledger W10.19. Cỡ chữ 0.8125rem là số trần, không phải token — cùng lớp lỗ hổng.

Do / Don't

Nên dùng

Render sau khi việc thành công. Bỏ băng thành công khi lần nộp sau thất bại. Giữ role="status". Một câu.

Tránh dùng

Render sẵn rồi bật/tắt bằng CSS. Để cả FormNotice và FormError cùng hiện. Dùng cho xác nhận thường trực trên trang không điều hướng. Đổi sang role="alert" "cho chắc được đọc". Một tiêu đề cộng một danh sách.