Giao diện
Chữ, khoảng cách & mật độ
Font, cỡ chữ và khoảng cách của app Tasco được chỉnh cho màn hình nhiều dữ liệu: gọn hơn mặc định của Ant Design nhưng vẫn đủ lớn để đọc lâu không mỏi. Các bảng token trên trang sinh từ @tasco/theme.
Font
| Vai trò | Font | Độ đậm có sẵn | Dùng ở |
|---|---|---|---|
| Chữ thân | Quicksand | 300, 400, 500, 600, 700 | Mọi nội dung, nhãn, ô nhập, bảng |
| Tiêu đề | Montserrat | 400, 500, 600, 700 | Tiêu đề trang (CPageHeader), tiêu đề card (CCard), số liệu (CStatistic), tên app |
Cả hai font có bộ ký tự tiếng Việt đầy đủ và được layer tự host qua @nuxt/fonts — app không gọi Google Fonts lúc chạy, font có sẵn cả trong mạng nội bộ. Khi font chưa tải xong, trình duyệt dùng font hệ thống trong stack dự phòng.
| Biến | Giá trị |
|---|---|
--tasco-font-family | 'Quicksand', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif |
--tasco-font-family-heading | 'Montserrat', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif |
--tasco-font-size | 14px |
Thang cỡ chữ
Cỡ cơ bản là 14px. Component đã dùng sẵn các cỡ dưới đây — thiết kế màn hình mới chọn trong thang này, không thêm cỡ lẻ.
| Cỡ | Độ đậm | Font | Dùng cho |
|---|---|---|---|
| 24px | 700 | Montserrat | Giá trị số liệu lớn (CStatistic) |
| 20px | 700 | Montserrat | Tiêu đề trang |
| 14px | 500 | Montserrat | Tiêu đề card, tiêu đề khối |
| 14px | 400 | Quicksand | Nội dung, ô nhập, ô bảng, nút cỡ vừa |
| 13px | 400–500 | Quicksand | Mô tả dưới tiêu đề trang, nhãn số liệu, trạng thái (CStatus) |
| 12px | 600 | Quicksand | Nhãn trạng thái (CTag), breadcrumb, nút cỡ nhỏ |
- Nhấn mạnh trong câu bằng độ đậm 600, không đổi cỡ, không đổi màu.
- Không viết HOA cả câu trong nội dung. Sidebar và menu ngang hiển thị chữ hoa là do CSS — nhãn trong cấu hình vẫn viết bình thường (
Đơn hàng). - Số trong bảng và số liệu nên canh phải và dùng chữ số đều nhau (
font-variant-numeric: tabular-nums) để cột số thẳng hàng.
Khoảng cách
Đơn vị cơ bản là 8px (--tasco-spacing-unit). Khoảng cách chọn theo bội số của đơn vị này, thêm 4px cho chỗ rất chặt:
| Khoảng | Dùng cho |
|---|---|
| 4px | Giữa nhãn và mô tả ngắn ngay dưới |
| 8px | Giữa icon và chữ, giữa các nút trong một nhóm, lề vùng nội dung của khung app |
| 12px | Padding dọc thân card |
| 16px | Padding ngang card, khoảng cách giữa các ô form, giữa các khối trong trang |
| 24px | Tách hai nhóm nội dung khác hẳn nhau |
| Biến | Giá trị |
|---|---|
--tasco-radius | 0px |
--tasco-radius-lg | 0px |
--tasco-spacing-unit | 8px |
Bo góc bằng 0: thương hiệu Tasco dùng góc vuông cho card, nút, ô nhập và bảng. Đừng tự bo góc một khối riêng lẻ — khối đó sẽ lạc tông với phần còn lại.
Mật độ component
Ant Design mặc định dùng padding 24px cho card, form và modal — hợp với trang thưa. App nội bộ dày dữ liệu nên framework giảm xuống:
| Thành phần | Mặc định Ant Design | Tasco |
|---|---|---|
| Chiều cao ô nhập, nút (nhỏ / vừa / lớn) | 24 / 32 / 40px | 28 / 36 / 44px |
| Padding thân card (dọc / ngang) | 24 / 24px | 12 / 16px |
| Khoảng cách dưới mỗi ô form | 24px | 16px |
| Padding ô bảng | 16px | 8px |
| Padding thân modal, drawer | 24px | 16px |
Ô nhập và nút cao hơn mặc định (36px thay vì 32px) để dễ bấm và đọc; khoảng trống xung quanh thì nhỏ lại. Giá trị đang dùng:
| Biến | Giá trị |
|---|---|
--tasco-control-height-sm | 28px |
--tasco-control-height-lg | 44px |
--tasco-card-padding-block | 12px |
--tasco-card-padding-inline | 16px |
--tasco-card-heading-height | 36px |
--tasco-card-heading-font-size | 14px |
--tasco-form-item-margin | 16px |
--tasco-table-cell-padding-block | 8px |
--tasco-table-cell-padding-inline | 8px |
--tasco-modal-body-padding | 16px |
--tasco-control-height | 36px |
Mật độ áp cho toàn bộ app, kể cả component antdv dùng trực tiếp trong @tasco/ui. Một màn hình cần thưa hơn thì tăng khoảng cách giữa các khối, không đổi padding bên trong component.
Dùng trong CSS của app
css
.don-hang__tong-hop {
display: grid;
gap: calc(var(--tasco-spacing-unit) * 2);
padding: calc(var(--tasco-spacing-unit) * 1.5) calc(var(--tasco-spacing-unit) * 2);
font-family: var(--tasco-font-family-heading);
}Quy tắc đầy đủ: Viết CSS trong dự án.
Đổi font hoặc mật độ
Đổi ở @tasco/theme để mọi app đổi theo, không ghi đè trong từng dự án — xem Đổi design token.
Liên quan
- Màu & tương phản — màu chữ theo cấp.
- Bố cục trang chuẩn — khoảng cách giữa các khối của trang.
- Theme & design token — cách layer nạp font và áp mật độ.