SetupChecklist
Mẫu chuẩnDanh sách có thứ tự những thứ phải sẵn sàng trước khi bắt đầu: mỗi hàng có trạng thái, nhãn, một dòng tình trạng và một liên kết hành động. Hàng đã xong gọn thành một dòng có dấu tick.
Playground
Xong 1/4
import { SetupChecklist } from "@nexobox/ui";
<SetupChecklist
title="Chuẩn bị cho Linh"
items={[
{ id: "channel", label: "Kênh bán hàng", state: "Chưa kết nối kênh nào", status: "current",
action: { label: "Kết nối kênh", href: "/hire?step=2" } },
// …
]}
onAllComplete={removeChecklist}
/>Tất cả trạng thái
Mọi trạng thái của composite, dựng thật từ @nexobox/ui, theo theme và brand đang chọn ở Playground.
Mới bắt đầu
Đã xong 0/4
Việc tiếp theo: Kênh bán hàng
Chưa kết nối kênh nào
Chưa làm: Nguồn thông tin sản phẩm
Chưa có danh mục hoặc bảng giá
Chưa làm: Người quản lý
Chưa chọn ai chịu trách nhiệm
Chưa làm: Thử nghiệm
Linh chưa được thử với câu hỏi mẫu
Có một hàng cảnh báo
Đã xong 1/4
Cần xử lý: Kênh bán hàng
Kết nối bị mất
- Đã xong: Nguồn thông tin sản phẩm
Việc tiếp theo: Người quản lý
Chưa chọn ai chịu trách nhiệm
Chưa làm: Thử nghiệm
Linh chưa được thử với câu hỏi mẫu
Đã xong hết
Đã xong 4/4
- Đã xong: Kênh bán hàng
- Đã xong: Nguồn thông tin sản phẩm
- Đã xong: Người quản lý
- Đã xong: Thử nghiệm
Bài toán
Người mới vào một workspace trống cần biết còn thiếu gì và bấm đâu để làm tiếp. Checklist chính là hướng dẫn, không cần tour chắn màn hình; mỗi hàng đưa thẳng tới đúng bước hoàn tất nó.
Khi nào sử dụng
Nên dùng
Màn hình đầu tiên khi chưa có nhân viên, trang tổng quan khi một kết nối bị mất, mọi nơi một chuỗi điều kiện sẵn sàng cần hiện ra.
Khi nào không dùng
Tránh dùng
| Không dùng cho | Dùng thay |
|---|---|
| Các bước của một form nhiều trang | StepIndicator |
| Danh sách việc cần làm hằng ngày | ActivityList hoặc hàng ReasonRemedyRow |
| Tour hướng dẫn chắn màn hình | Không dùng; dùng chính checklist |
Dựng từ
| Primitive | Vai trong composite |
|---|---|
| Button | Liên kết hành động ở cuối hàng (ghost, sm) |
| Icon | Dấu tick, cảnh báo, vòng rỗng |
Anatomy
| # | Phần | Ghi chú |
|---|---|---|
| 1 | Tiêu đề + dòng tiến độ | Dòng "Đã xong n/N" aria-live polite |
| 2 | Thanh tiến độ | Một vạch width chuyển trong duration-standard; role progressbar |
| 3 | Hàng đang làm | Dấu hiệu, nhãn, một dòng tình trạng, một hành động |
| 4 | Hàng đã xong | Gọn một dòng có tick; tick vào bằng opacity và scale 0.9 sang 1 |
| 5 | Hàng cảnh báo | Hàng từng xong rồi mất (ví dụ kết nối); mở rộng lại với icon cảnh báo |
Variants
| Variant | Hiển thị |
|---|---|
done | Một dòng, tick thành công, chữ phụ |
current | Vòng brand; việc tiếp theo |
todo | Vòng trung tính |
warning | Icon cảnh báo, dòng tình trạng màu cảnh báo, nút Kết nối lại |
States
| State | Hành vi | Trợ năng |
|---|---|---|
| Mặc định | Như anatomy | Danh sách ol; mỗi hàng có từ trạng thái sr-only |
| Một hàng xong | Tick vào, thanh tiến độ tăng width | Dòng tiến độ được đọc polite |
| Tất cả xong | Danh sách mờ dần opacity rồi gọi onAllComplete để host gỡ; không sập chiều cao | — |
| Reduced motion | Duration 0ms, không có transitionend nên callback chạy từ effect | — |
Bàn phím & trợ năng
Seam — host sở hữu gì
Composite không biết một hàng xong khi nào. Host truyền status từ dữ liệu thật và gỡ danh sách khi onAllComplete gọi.
API & triển khai
| Prop | Mặc định | Quy ước |
|---|---|---|
| items | — | Mỗi hàng: id, label, state, status, action?. |
| title | undefined | Tiêu đề danh sách. |
| progressLabel | "Đã xong n/N" | Hàm tạo dòng tiến độ. |
| onAllComplete | undefined | Gọi một lần sau khi mờ hết, để host gỡ. |
| statusLabels | tiếng Việt | Từ đọc cho từng status. |
Design tokens
--nf-semantic-brand-accent, --nf-semantic-surface-subtle, --nf-semantic-border-divider, --nf-component-progress-track-height, --nf-foundation-motion-duration-fast, -standard, --nf-foundation-motion-easing-enter, -exit-snappy, --nf-foundation-space-*.
Do / Don't
Nên dùng
Mỗi hành động dẫn thẳng tới bước hoàn tất hàng đó. Một dòng tình trạng ngắn. Hàng mất kết nối quay lại cảnh báo thay vì im lặng.
Tránh dùng
Một hàng nhiều hành động. Sập chiều cao bằng animation height. Giữ checklist sau khi mọi thứ đã xong.