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

EffectStatus

Mẫu chuẩn

Nhãn vòng đời trung thực của một việc đã nhờ kênh làm: đang gửi, đã gửi, đã nhận, cộng với chưa rõ và không gửi được. Có chỗ cho một hành động khắc phục. Vùng aria-live polite, riêng unknown và failed là assertive.

Composite tầng 2Không dựng từ primitive5 statepolite + assertive

Playground

LIVE PREVIEW
Đang gửi…

State pending.

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

<EffectStatus state="pending" />

Bài toán

Nút Gửi bấm xong mà hiện ngay tick xanh là nói dối khi tin chưa tới. Chủ shop cần thấy đúng điều hệ thống biết: đang gửi, đã gửi, chỉ khi kênh báo mới là đã nhận, và khi không biết thì nói không biết.

Khi nào sử dụng

Nên dùng

Bong bóng tin nhắn vừa gửi trong hộp thư, đơn hàng đẩy sang hệ thống khác, mọi lệnh có kết quả bất đồng bộ do bên thứ ba xác nhận.

Khi nào không dùng

Tránh dùng

Không dùng choDùng thay
Trạng thái của một bản ghi (đang mở, đã đóng)Badge hoặc StatusDot
Tiến trình có phần trămProgress
Lý do một việc bị chặnReasonRemedyRow

Dựng từ

PrimitiveVai trong composite
IconBiểu tượng theo state, luôn đi kèm nhãn chữ
Button (slot remedy)Host truyền nút khắc phục qua slot; composite không tự dựng hành động

Anatomy

#PhầnGhi chú
1Icon + nhãnVùng live (polite, assertive cho unknown và failed); icon và nhãn crossfade bằng opacity khi state đổi
2Chi tiếtLý do ngắn sau nhãn, ví dụ "Kênh mất kết nối"
3Ba đoạn vòng đờiBa vạch nhỏ trang trí: một, hai, ba đoạn sáng cho pending, sent, delivered; unknown và failed không sáng
4RemedySlot cho đúng một hành động tiếp theo

Variants

VariantHiển thị
pendingĐồng hồ, chữ muted, một đoạn sáng
sentTick, hai đoạn sáng; chưa phải đã nhận
deliveredTick vòng xanh, ba đoạn; chỉ khi kênh báo
unknownCảnh báo hổ phách, không đoạn nào sáng; không tự gửi lại
failedDấu huỷ đỏ kèm lý do; remedy là Kết nối lại

States

StateHành viTrợ năng
Mỗi stateNhư variantsHai vùng live cố định: polite cho pending, sent, delivered; assertive (role alert) cho unknown, failed. Chỉ vùng khớp chứa chữ nên mỗi lần đổi được đọc một lần
Chuyển stateNhãn và icon crossfade opacity, token duration-fast—
Reduced motionToken duration bằng 0ms nên đổi tức thì—

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

Không có điều khiển riêng; nút khắc phục trong slot nhận focus theo thứ tự DOM.
State đọc bằng chữ và icon, không dùng màu một mình.
unknown và failed được đọc assertive vì cần hành động; ba state còn lại polite.

Seam — host sở hữu gì

Composite không quyết định state. Host ánh xạ kết quả thật của kênh sang state; chỉ truyền delivered khi kênh báo. Không bao giờ tự gửi lại khi unknown.

API & triển khai

PropMặc địnhQuy ước
state—"pending" | "sent" | "delivered" | "unknown" | "failed".
labelstiếng ViệtGhi đè nhãn theo state.
detailundefinedLý do ngắn sau nhãn.
remedyundefinedSlot cho đúng một hành động tiếp theo.
aria-labelundefinedTên nhóm khi cần.

Design tokens

--nf-semantic-status-{information,success,warning,danger}-icon, -foreground, --nf-semantic-text-muted, --nf-foundation-motion-duration-fast, --nf-foundation-motion-easing-standard, --nf-foundation-space-1, -2, -3.

Do / Don't

Nên dùng

Chỉ hiện Đã nhận khi kênh báo. Khi không biết, nói Chưa rõ và để chủ shop kiểm tra lại. Một remedy, đúng việc cần làm.

Tránh dùng

Hiện tick xanh ngay khi bấm Gửi. Tự gửi lại khi unknown. Dùng cùng một icon cho unknown và failed.