Bỏ qua điều hướng, tới nội dung
Bỏ qua tới nội dung

BNN · lớp skin thứ hai của jpace

Bộ thành phần BNN — 24 component

Showcase dựng bằng HTML/CSS thuần trên bnn-tokens.css + bnn-components.css + bnn-ui.js: không framework, không request bên thứ ba, số liệu là dữ liệu mẫu tiếng Việt (mã đơn, tài xế, host *.bnn.vn). Hành vi bấm được nằm ở bnn-ui.js: tab, segmented, OTP, công tắc, toast, hộp thoại, sheet, ngăn kéo.

24 component · 6 màn lõi data-theme="light"
Nguồn: 24 component theo docs/AHATHEME-PLAN.md §6 (ánh xạ từ bản gương sang bề mặt jpace), tên class lấy từ wwwroot/assets/css/bnn-components.css, nhãn và dữ liệu đối chiếu trang demo của bản gương (chỉ đọc DOM/text, không dùng ảnh).

1. Nút

.bnn-btn · --primary/--navy/--ghost/--danger · --sm/--lg · --loading/--block

Bốn biến thể màu, ba kích thước, trạng thái vô hiệu và đang xử lý (spinner `::after`). Dùng ở: mọi toolbar · footer hộp thoại · biểu mẫu.

2. Thẻ trạng thái

.bnn-tag · --ok/--warn/--err/--info · --act

Nhãn lozenge kèm chấm màu theo trạng thái; bản `--act` bấm được để lọc nhanh. Dùng ở: danh sách đơn · chi tiết đơn · bảng quản trị.

Đã giao Chờ tài xế Đang xử lý Thất bại Bản nháp

3. Chip lọc và huy hiệu số

.bnn-chip · __n · __x · --on · .bnn-badge · --navy/--primary/--dot/--act

Chip lọc có bộ đếm + nút xoá, huy hiệu số và nhãn nhỏ cho số thông báo. Dùng ở: bộ lọc danh sách · sidebar · tab chi tiết.

99+ Mới 5

4. Thẻ nội dung

.bnn-card · __head/__title/__sub/__body/__foot · --flat/--link

Khối dashboard, cột board và panel tóm tắt; `--flat` cho nền chìm, `--link` cho thẻ mở được. Dùng ở: dashboard · board kanban · tóm tắt đơn.

Đơn giao hàng

Đã giao

BN-240916-10428 · 16/10/2026 · 15:37

Tài xế Nguyễn Văn An · 12,4 km · 78.000 ₫
Chi tiết Nhận đơn

Cột cần xử lý

4

Cập nhật 15:40

3 đơn quá hạn SLA · 1 đơn khiếu nại

5. Bảng dữ liệu

.bnn-table-wrap · .bnn-table · .bnn-num · .bnn-mono

Đầu bảng dính (sticky), hàng cao 40 px, cột số canh phải, mã đơn dùng chữ đẳng khoảng. Dùng ở: danh sách đơn · người dùng · nhật ký quản trị.

Đơn hàng hôm nay — dữ liệu mẫu
Mã đơnKhách hàngDịch vụTài xếCướcTrạng thái
BN-240916-10428Trần Thị BíchXe máy · Giao hàngNguyễn Văn An78.000 ₫Đã giao
BN-240916-10427Lê Quang BảoXe tải · 1,25 tấnTrần Đình Nam640.000 ₫Đã giao
BN-240916-10426Phạm Thu HàXe máy · Đi chợ hộ—96.500 ₫Chờ tài xế
BN-240916-10424Vũ Minh TuấnXe tải · 2 tấnLê Quang Bảo1.240.000 ₫Đang xử lý
BN-240916-10421Đỗ Thị LanXe máy · Thực phẩm—0 ₫Thất bại

6. Biểu mẫu

.bnn-field · __label/__req/__hint/__err · --error

Input, select, textarea với nhãn, gợi ý, dấu bắt buộc và trạng thái lỗi (viền đỏ + nền nhạt). Dùng ở: tạo đơn · cài đặt · màn quản trị.

Dùng để liên hệ với tài xế
Bắt buộc — chưa nhập địa chỉ.
Tối đa 200 ký tự

7. Chuyển chế độ

.bnn-seg · .bnn-seg-btn · hook `data-bnn-seg`

Segmented một-chọn: ô đang chọn là bề mặt đặc chữ sáng; `bnnUI` phát sự kiện `bnn:seg`. Dùng ở: đổi loại xe · đổi chế độ xem board/list/timeline.

Đang chọn: Xe máy

8. Các bước

.bnn-steps · .bnn-step · .bnn-step-line · is-done/is-now

Thanh 1-2-3 với bước đã xong (đặc) và bước đang làm (viền accent). Dùng ở: wizard tạo đơn · luồng onboarding.

1Nhập thông tin
2Cài đặt tối ưu
3Kiểm tra đơn hàng

Bước 1 đã xong, đang ở bước 2 — chưa cấu hình điểm giao.

1Nhập thông tin
2Xác minh giấy tờ
3Kích hoạt tài khoản

Biến thể lỗi (`is-err`): bước 2 bị từ chối — CCCD mờ, cần tải lại ảnh.

9. Tab

.bnn-tabs · .bnn-tab · hook `data-bnn-tabs`

Tab gạch chân 2 px; `bnnUI` gán `role=tab`/`aria-selected` và ẩn/hiện `tabpanel` theo `aria-controls`. Dùng ở: chi tiết đơn (Thông tin/Lịch sử) · màn quản trị.

Người nhận
Trần Thị Bích · 0905 112 334
Điểm giao
12 Nguyễn Huệ, Quận 1, TP.HCM
Cước
78.000 ₫

10. Công tắc

.bnn-switch > input + span · hook `data-bnn-switch`

Công tắc 46×26, núm 20 px; có biến thể lỗi (`is-err`) và trạng thái vô hiệu. Dùng ở: chính sách · thông báo · cài đặt.

Thông báo đơn mới
Tự động nhận đơn gần nhất
Khoá tài khoản khi quá hạn mức (đang bật — cần kiểm tra)
Chế độ thử nghiệm (khoá bởi quản trị)

Trạng thái gần nhất: chưa đổi

11. Mã OTP 6 ô

.bnn-otp · .bnn-otp-cell · hook `data-bnn-otp`

Sáu ô 46×54 px, tự nhảy ô khi nhập, dán cả mã cũng được, phát `bnn:otp` khi đủ 6 ký tự. Dùng ở: 27 trang xác thực `auth-*`.

Mã đã nhập: —

Dán cả mã 6 số vào ô bất kỳ cũng được — `bnnUI` tự rải ký tự vào các ô.

Biến thể lỗi (`is-err`, ô tĩnh `<i>`): mã 482190 sai hoặc đã hết hạn — viền đỏ cả 6 ô.

Biến thể khoá (`is-disabled`): chờ 60 giây mới được gửi lại mã.

12. Chọn kích thước

.bnn-sizes · .bnn-size · .bnn-size-label/.bnn-size-sub

Thẻ chọn cỡ S→2XL kèm kích thước kiện hàng thật (cm). Dùng ở: form dịch vụ · cài đặt đơn.

Biến thể lỗi (`is-err`): cỡ L vượt hạn mức 50 kg của xe máy; 2XL vô hiệu vì dịch vụ không hỗ trợ.

13. Thông báo nổi

.bnn-toast · -ic/-x · .bnn-toast-stack · hook `data-bnn-toast`

Toast trạng thái ok/warn/err/info; nút demo gọi `bnnUI.toast()` chèn vào `.bnn-toast-stack`. Dùng ở: lưu thiết lập · lỗi mạng · cảnh báo hạn mức.

✓Đã lưu thiết lập đơn hàng
!Thiếu địa chỉ lấy hàng
iĐang đồng bộ với máy chủ…
✕Không kết nối được tài xế

14. Sheet đáy và hộp thoại

.bnn-sheet · -panel/-grab/-head/-body/-foot · .bnn-modal · -card/-head/-body/-foot · hook `data-bnn-open`

Bottom sheet và hộp thoại có scrim; mở/đóng bằng `data-bnn-open` / `data-bnn-close`, có trap focus + phím Esc. Dùng ở: chi tiết đơn · bộ lọc · xác nhận xoá.

15. Ngăn kéo chi tiết

.bnn-drawer · -scrim/-panel/-head/-title/-body/-foot/-close · --drawer-left/--drawer-bottom

Panel trượt phải (mặc định), trái (`bnn-drawer-left`) hoặc từ đáy (`bnn-drawer-bottom`). Dùng ở: panel chi tiết · nhật ký kiểm toán.

16. Trạng thái rỗng

.bnn-empty · -icon/-title/-text/-actions

Khối rỗng có icon tròn, tiêu đề, mô tả và hành động gợi ý. Dùng ở: board rỗng · hộp thư rỗng · tìm 0 kết quả.

Không có đơn nào khớp

Đang lọc “Chờ tài xế” trong 24 giờ qua. Bỏ bộ lọc hoặc mở rộng khoảng thời gian.

Cột cần xử lý đang trống

Không còn đơn quá hạn SLA nào ở khu vực Tân Bình.

17. Ảnh đại diện

.bnn-avatar · -ini/-xs/-sm/-lg/-xl/-stack/-more/-status/-ring

Avatar chữ cái đầu (không dùng ảnh), chồng nhóm, chấm trạng thái và viền thương hiệu. Dùng ở: người nhận · người tạo · thành viên nhóm.

NA TB LB TH MT NA Ảnh đại diện Nguyễn Văn An

Biến thể ảnh (`.bnn-avatar-img`): ảnh phủ kín vòng tròn (`object-fit: cover`), dùng khi tài xế có ảnh hồ sơ.

NA TB LB +3 Nhóm giao hàng Tân Bình — 6 thành viên

18. Khung chờ

.bnn-skel · -text/-title/-line/-circle/-rect/-card/-wave

Skeleton giữ đúng bố cục khi dữ liệu đang tải, có hiệu ứng sóng (tắt khi `prefers-reduced-motion`). Dùng ở: danh sách đang tải · thẻ KPI đang tải.

Đang tải danh sách đơn — khung chờ giữ đúng bố cục để CLS không nhảy.

19. Chỉ số KPI

.bnn-kpi · .bnn-stat · -grid/-label/-value/-unit/-delta/-up/-down/-icon

Ô chỉ số lớn với delta tăng/giảm, và biến thể stat có icon tròn. Dùng ở: dashboard · báo cáo · màn quản trị.

Đơn hôm nay

1.284 đơn

▲ 12,4% so với hôm qua

Giao đúng hạn

96,8%

▼ 0,6 điểm so với tuần trước

Tài xế xe máy online

312

Xe tải đang chạy

48

20. Danh sách khoá–giá trị

.bnn-kv · .bnn-kv-grid · .bnn-kv-row · .bnn-kv-k/__v/__mono

Hai kiểu: lưới `dl` (nhãn–giá trị) và danh sách hàng có đường kẻ cho panel chi tiết. Dùng ở: chi tiết đơn · hồ sơ · màn quản trị.

Mã đơn
BN-240916-10428
Dịch vụ
Xe máy · Giao hàng
Khoảng cách
12,4 km
Cước
78.000 ₫
Người nhậnTrần Thị Bích · 0905 112 334
Điểm lấyKho Tân Bình, 45 Trường Chinh
Điểm giao12 Nguyễn Huệ, Quận 1, TP.HCM
Thanh toánVí BNN · đã thu

21. Dòng thời gian

.bnn-timeline · .bnn-tl-item/-dot/-title/-time/-meta/-body

Trục dọc có chấm mốc cho lịch sử hoạt động và nhật ký. Dùng ở: lịch sử đơn · nhật ký kiểm toán.

  1. Tạo đơn

    15:12 · 16/10/2026

    Kênh app · khách Trần Thị Bích

    Đơn xe máy 12,4 km, cước tạm tính 78.000 ₫.

  2. Tài xế nhận đơn

    15:24 · 16/10/2026

    Nguyễn Văn An · 0905 112 334

  3. Giao thành công

    15:37 · 16/10/2026

    Đúng hạn · khách xác nhận qua OTP

22. Thanh tiến độ

.bnn-bar · -head/-label/-track/-fill · --ok/--warn/--err · -stack/-seg

Thanh tiến độ có nhãn %, biến thể màu theo ngưỡng và dạng chồng nhiều đoạn. Dùng ở: tiến độ epic · khối lượng tài xế · hạn mức.

Tiến độ giao đơn18/24 điểm
Hạn mức COD hôm nay82%
Đơn quá hạn SLA3/40 đơn
Cơ cấu dịch vụ (chồng đoạn)100%

23. Biểu tượng

.bnn-ic · -sm/-lg/-xl · -inline/-muted/-navy/-orange/-spin · sprite ``

39 biểu tượng nét 24×24 nằm trong sprite tự chứa inline — 0 request phát sinh. Dùng ở: mọi màn (thay bộ icon Atlassian).

Nhà
Tìm kiếm
Bộ lọc
Thêm
Đóng
Xong
Mở rộng
Sang phải
Người dùng
Nhóm người
Lịch
Thời gian
Thông báo
Thư
Tệp đính kèm
Bình luận
Sửa
Xoá
Tải xuống
Tải lên
Mở liên kết
Cài đặt
Thư mục
Tệp
Đánh dấu
Tuỳ chọn khác
Làm mới
Thông tin
Cảnh báo
Yêu thích
Khoá
Danh sách
Lưới
Đăng xuất
Xe tải
Xe máy
Biểu đồ
Chạy
Xem
.bnn-ic-xl .bnn-ic-muted .bnn-ic-orange .bnn-ic-spin

Cỡ `-xl` 32 px (nét 1,8), màu `-muted` (chữ phụ), `-orange`, và `-spin` quay 1 vòng/giây (dừng khi `prefers-reduced-motion`).

24. Băng cảnh báo

.bnn-alert · --info/--ok/--warn/--err/--banner · __ic/__msg/__close/__title/__actions

Băng thông tin/cảnh báo/lỗi có viền trái theo màu trạng thái, nút đóng và biến thể banner có hành động. Dùng ở: thông báo cập nhật · cảnh báo hạn mức · lỗi kết nối.

Cập nhật: bảng cước mới áp dụng từ 16/10/2026.
Xong: đã đồng bộ 1.284 đơn lên máy chủ.
Cảnh báo: 3 đơn quá hạn SLA ở khu vực Tân Bình.

Sắp chạm hạn mức COD

Bạn đã dùng 82% hạn mức COD hôm nay; hạn mức làm mới lúc 00:00.

6 màn lõi dùng bộ component này

apps-jira-list.html · apps-projects-backlog.html · apps-projects-timeline.html · apps-projects-team-board.html · apps-issue-tracker.html · admin-workspace.html

Mỗi màn được phủ lại bằng chính các component ở trên — bấm để mở trang thật.

25. Menu thả xuống

.bnn-dd · .bnn-menu · hook `data-bnn-dropdown` / `data-bnn-dd-toggle` / `data-bnn-dd-menu` / `data-bnn-dd-item`

`bnnUI.dropdown()` gán `aria-haspopup/aria-expanded/aria-controls`, portal menu ra `<body>` khi mở, mũi tên/Home/End chạy giữa các mục, Esc hoặc Tab đóng, phát `bnn:dropdown`. Dùng ở: sắp xếp hàng đợi (aha.html) · tuỳ chọn khác trên thẻ.

Hàng đợi 128 đơn · Tân Bình

Menu: đóng · chọn: Ưu tiên giảm dần

Trang sinh bởi docs/evidence/showcase/build-page.py · lớp skin BNN nạp đúng 3 file assets/css/bnn-tokens.css, assets/css/bnn-components.css, assets/js/bnn-ui.js · sprite assets/icons/bnn-sprite.svg inline sẵn (0 request phát sinh) · tùy biến sáng/tối qua data-theme.