Skip to content

@tasco/theme

Design token và các hàm suy ra theme antdv, biến CSS --tasco-*, tỉ lệ tương phản. Bảng giá trị token sáng/tối: Màu & tương phản. Cách áp theme trong app: Theme & design token.

Biến

AA_TEXT_CONTRAST

ts
const AA_TEXT_CONTRAST: 4.5 = 4.5;

Ngưỡng tương phản WCAG 2.x AA cho chữ cỡ thường.


antdThemeDark

ts
const antdThemeDark: AntdThemeConfig;

getAntdTheme('dark') tính sẵn.


antdThemeLight

ts
const antdThemeLight: AntdThemeConfig;

getAntdTheme('light') tính sẵn.


contrastPairs

ts
const contrastPairs: readonly ContrastPair[];

Cặp chữ/nền đã khoá tương phản AA, xếp theo nhóm màu.


darkTokens

ts
const darkTokens: TascoTokens;

Token chế độ tối.


lightTokens

ts
const lightTokens: TascoTokens;

Token chế độ sáng.


tokensByMode

ts
const tokensByMode: object;

Token theo chế độ — tra bằng ThemeMode.

Khai báo kiểu

TênKiểuMặc định
darkTascoTokensdarkTokens
lightTascoTokenslightTokens

Hàm

contrastRatioOf()

ts
function contrastRatioOf(foreground, background): number;

Tỉ lệ tương phản WCAG 2.x giữa hai màu: 1 (trùng màu) → 21 (đen/trắng); đổi chỗ chữ và nền cho cùng kết quả. Ngưỡng AA: ≥ 4.5 cho chữ thường, ≥ 3 cho chữ lớn và thành phần đồ hoạ. Kết quả không làm tròn vì WCAG không cho làm tròn lên (4.499 là chưa đạt 4.5).

Tham số

Tham sốKiểu
foregroundstring
backgroundstring

Trả về

number


cssVars()

ts
function cssVars(mode?): Record<string, string>;

Map tên biến CSS --tasco-* → giá trị của một chế độ; số đo đã kèm đơn vị px.

Tham số

Tham sốKiểuMặc định
modeThemeMode'light'

Trả về

Record<string, string>


cssVarsText()

ts
function cssVarsText(mode?, selector?): string;

Sinh chuỗi CSS để inject vào <head> (vd qua app.head.style trong layer).

Tham số

Tham sốKiểuMặc địnhMô tả
modeThemeMode'light'-
selectorstring':root'mặc định :root.

Trả về

string


getAntdTheme()

ts
function getAntdTheme(mode?): AntdThemeConfig;

Cấu hình theme của antdv cho một chế độ. Chưa gồm algorithm — nơi có antdv tự thêm theme.darkAlgorithm/theme.defaultAlgorithm (layer làm trong app.vue).

Tham số

Tham sốKiểuMặc định
modeThemeMode'light'

Trả về

AntdThemeConfig


luminanceOf()

ts
function luminanceOf(color): number;

Relative luminance theo WCAG 2.x: 0 (đen) → 1 (trắng). Nhận hex #rgb / #rrggbb, không phân biệt hoa thường; chuỗi khác (tên màu, rgb(), hex có alpha) → ném lỗi.

Tham số

Tham sốKiểu
colorstring

Trả về

number


pairContrastOf()

ts
function pairContrastOf(pair, mode): number;

Tương phản thấp nhất của một cặp ở một chế độ: nền gradient thì lấy điểm màu tệ nhất. Tên biến không tồn tại → ném lỗi.

Tham số

Tham sốKiểu
pairContrastPair
modeThemeMode

Trả về

number

Interface

AntdThemeConfig

Cấu hình theme cho <a-config-provider> — tương thích cấu trúc với prop theme của antdv.

Thuộc tính

Thuộc tínhKiểuMô tả
components?Record<string, Record<string, unknown>>Token cấp component — antdv 4.2.6 BỎ QUA trường này; tinh chỉnh component làm bằng CSS trong base.css.
token?Record<string, unknown>Global token của antdv (màu seed, font, bo góc, chiều cao control…).

ColorTokens

Bảng màu theo vai trò. Mỗi field phát ra một biến CSS --tasco-color-<tên-kebab> (xem cssVars).

Thuộc tính

Thuộc tínhKiểuMô tả
accentstringMàu nền thương hiệu (pill menu active); chữ trên nền này dùng navy sidebarBottom.
accentSoftstringNền mờ của accent.
accentTextstringChữ/icon màu accent trên nền sáng (accentSoft, surface) — accent quá sáng để làm chữ.
borderstringViền mặc định.
borderStrongstringViền đậm: nút outline, ô nhập khi cần nổi bật.
errorstringLỗi, hành động phá huỷ — dùng làm chữ được ngay.
errorSoftstringNền mờ của error.
infostringThông tin trung tính — dùng làm chữ được ngay.
infoSoftstringNền mờ của info; cũng là nền hàng đang chọn của bảng.
linkstringMàu liên kết.
linkSoftstringNền mờ của liên kết.
pagestringNền trang.
primarystringMàu thương hiệu chính (navy): nút chính, header bảng, link đang chọn. Theme tối là màu chữ.
primaryActivestringTrạng thái nhấn của primary; nền đặt chữ trắng ở theme tối.
primaryHoverstringTrạng thái hover của primary.
primarySoftstringNền mờ của primary (chip, hover nhẹ).
sidebarBottomstringĐiểm cuối gradient sidebar; cũng là màu chữ trên nền accent.
sidebarTopstringĐiểm đầu gradient dọc của sidebar.
successstringThành công — màu nền và seed antdv; làm chữ thì dùng successText.
successSoftstringNền mờ của success.
successTextstringChữ/icon màu success trên nền sáng (successSoft, surface).
surfacestringNền mặc định của card/panel.
surfaceElevatedstringNền nổi (popover/dropdown/modal).
surfaceMutedstringNền dịu (section, header bảng nhạt).
textstringChữ chính.
textMutedstringChữ mờ: chú thích, footer — vẫn đạt tương phản AA.
textSecondarystringChữ phụ: mô tả, nhãn trường.
textSubtlestringChữ nhạt nhất: placeholder, disabled — dưới ngưỡng AA, không dùng cho nội dung cần đọc.
warningstringCảnh báo — màu nền và seed antdv; làm chữ thì dùng warningText.
warningSoftstringNền mờ của warning.
warningTextstringChữ/icon màu warning trên nền sáng (warningSoft, surface).

ContrastPair

Một cặp màu chữ/nền cần đạt tương phản AA.

Thuộc tính

Thuộc tínhKiểuMô tả
bgstringMàu nền, ghi như fg; gradient thì xét mọi điểm màu.
fgstringMàu chữ: tên biến CSS bỏ tiền tố --tasco- (vd color-primary) hoặc hex cố định (#fff).
knownFailures?Partial<Record<ThemeMode, string>>Chế độ đang biết là CHƯA đạt ngưỡng → lý do. Test khẳng định cặp vẫn dưới ngưỡng, nên khi sửa đạt rồi test sẽ đỏ nhắc xoá mục này để cặp được khoá như các cặp khác.
modes?ThemeMode[]Chỉ áp dụng ở các chế độ này; bỏ trống = cả hai.
usedBystringNơi dùng — đổi token là biết component nào bị ảnh hưởng.

DensityTokens

Mật độ component (px). controlHeight* áp qua global token của antdv; phần còn lại phát ra biến CSS để base.css ghi đè padding/margin, vì antdv 4 bỏ qua theme.components.

Thuộc tính

Thuộc tínhKiểuMô tả
cardHeadingFontSizenumberCỡ chữ tiêu đề Card (px).
cardHeadingHeightnumberChiều cao header Card (px).
cardPaddingBlocknumberPadding dọc thân Card (px).
cardPaddingInlinenumberPadding ngang thân và header Card (px).
controlHeightnumberChiều cao control mặc định (px).
controlHeightLGnumberChiều cao control cỡ lớn (px).
controlHeightSMnumberChiều cao control cỡ nhỏ (px) — Input/Select/Button/Picker size="small".
formItemMarginBottomnumberKhoảng cách dưới mỗi Form item (px).
modalBodyPaddingnumberPadding thân Modal / Drawer (px).
tableCellPaddingBlocknumberPadding dọc ô Table (px).
tableCellPaddingInlinenumberPadding ngang ô Table (px).

TascoTokens

Toàn bộ design token của một chế độ (sáng hoặc tối).

Thuộc tính

Thuộc tínhKiểuMô tả
colorColorTokensBảng màu theo vai trò.
controlHeightnumberChiều cao control cơ bản (px) — alias của density.controlHeight.
densityDensityTokensMật độ component (height/padding/margin).
fontFamilystringFont chữ thân (Quicksand + font hệ thống dự phòng).
fontFamilyHeadingstringFont cho tiêu đề/heading (có thể trùng fontFamily).
fontSizenumberCỡ chữ cơ bản (px).
gradientDangerstringGradient cho nút danger.
gradientPrimarystringGradient cho nút/hero primary.
radiusnumberBo góc cơ bản (px).
radiusLgnumberBo góc lớn (card, modal) (px).
shadowCardstringShadow card.
shadowRaisedstringShadow phần tử nổi (dropdown/modal).
spacingUnitnumberĐơn vị spacing cơ bản (px).

Kiểu

ThemeMode

ts
type ThemeMode = "light" | "dark";

Chế độ giao diện.