Một tên biến nhỏ có thể khiến cả hệ thống cập nhật đồng loạt hoặc bắt đội ngũ chỉnh thủ công hàng trăm chỗ, tuỳ vào cách Anh Chị đặt nền từ đầu.
Token thiết kế (design token) là tên có ý nghĩa được gắn vào một giá trị giao diện cụ thể, ví dụ color.brand.primary thay vì mã màu thô #1A73E8. Khi token thay đổi, toàn bộ sản phẩm số cập nhật đồng loạt mà không cần tìm và thay từng file. Vì lý do đó, token là lớp nền quyết định cả tốc độ thay đổi lẫn tính nhất quán của hệ thống.
Token thiết kế không phải khái niệm cao siêu dành cho đội kỹ thuật lớn. Đây là cách tổ chức giá trị giao diện sao cho một quyết định thay đổi ở một chỗ lan đúng ra toàn bộ hệ thống, không cần ai chạy đi sửa thủ công. Nếu Anh Chị đang xây sản phẩm số và chưa có token, mỗi lần đổi màu thương hiệu sẽ là một đợt công việc đau đầu.
Token thiết kế là một cặp: tên có ý nghĩa và giá trị cụ thể. Ví dụ: color.action.primary mang giá trị #1A73E8. Component nút bấm tham chiếu đến tên này, không tham chiếu trực tiếp mã màu. Khi thương hiệu đổi màu chính từ xanh dương sang xanh lá, Anh Chị chỉ cần thay giá trị của color.action.primary một lần, toàn bộ nút bấm trong sản phẩm cập nhật ngay.
Token có thể xuất sang nhiều nền tảng khác nhau: CSS custom properties cho web, Swift cho iOS, Kotlin cho Android, XML cho các môi trường khác. Đây là lý do token quan trọng với sản phẩm đa nền tảng, vì cùng một quyết định thiết kế được duy trì nhất quán trên tất cả các đầu ra mà không cần nhân công sao chép thủ công.
Token giải quyết một vấn đề cốt lõi: tách biệt quyết định thiết kế khỏi nơi quyết định đó được áp dụng. Không có token, giá trị cứng được nhúng trực tiếp vào từng component, từng màn hình. Hệ quả là:
Token tạo ra ngôn ngữ chung giữa designer và developer. Khi cả Figma và codebase đều tham chiếu cùng một file token, sai lệch giữa bản thiết kế và sản phẩm thực giảm đáng kể. Đây là nguyên tắc nguồn sự thật duy nhất (single source of truth) mà Atlassian, IBM và nhiều tổ chức lớn đang thực hành.
Token không nên là một tầng phẳng. Cấu trúc hiệu quả gồm ít nhất hai lớp, tốt hơn là ba:
color.blue.600 = #1A73E8. Đây là bảng màu gốc, không component nào tham chiếu trực tiếp vào đây.color.action.primary trỏ đến color.blue.600. Component tham chiếu tầng này.button.background.default trỏ đến color.action.primary.Tầng alias là mấu chốt. Khi chuyển dark mode, Anh Chị chỉ cần cập nhật tầng alias, dark mode: color.action.primary trỏ sang màu khác, toàn bộ component tự cập nhật. Không cần chạm vào từng component.
Đặt tên token theo ngữ nghĩa và vai trò, không theo giá trị cụ thể. Tên
Nathan Curtis, EightShapescolor.text.disabledđúng hơncolor.gray.400vì khi chuyển dark mode tên vẫn đúng còn giá trị thay đổi.
color.blue.500 mất nghĩa ngay khi dark mode đổi màu đó thành trắng. Đặt tên theo vai trò, không theo màu sắc.Trong các dự án xây dựng hệ thống thiết kế, Sinh Vũ dùng định dạng DTCG JSON (Design Token Community Group, định dạng chuẩn mở do cộng đồng thiết kế hệ thống xây dựng) làm nguồn sự thật duy nhất, đồng bộ hai chiều giữa Figma và codebase qua công cụ như Style Dictionary hoặc tương đương. Token được phân ba tầng: global, alias, component.
Bước đầu tiên trong mọi dự án dạng này không phải vẽ component. Đó là audit, tức là rà soát toàn bộ giá trị hiện có của khách, màu sắc, kiểu chữ, khoảng cách, rồi map vào cấu trúc token trước. Bước này tốn thời gian nhưng tránh được tình trạng xây xong phải phá ra làm lại vì nền không vững.
Với team kỹ thuật mới làm quen với token, Sinh Vũ khuyên bắt đầu với token màu và kiểu chữ trước. Không cần hệ token toàn diện ngay từ đầu. Quan trọng hơn là đặt tầng alias đúng từ sớm, vì đó là thứ khó sửa nhất về sau.
Salesforce Lightning Design System: Token Taxonomy. Nathan Curtis, EightShapes: bài viết về design token naming. Atlassian Design System: design tokens. Kinh nghiệm thực hành Sinh Vũ trong dịch vụ A3.
CSS variable là cách lưu token trong môi trường web, còn token thiết kế là khái niệm cấp cao hơn: một giá trị có tên và ngữ nghĩa, có thể xuất sang nhiều nền tảng khác nhau như CSS, Swift, Kotlin, XML. Nói cách khác, CSS variable là một trong nhiều định dạng đầu ra của token, không phải token.
Nếu Anh Chị chỉ làm landing page hoặc microsite dùng một lần, CSS variable đơn giản là đủ. Token đầy đủ sinh ra giá trị rõ ràng khi sản phẩm có nhiều màn hình, nhiều đội cùng phát triển, hoặc khi cần hỗ trợ đa thương hiệu và dark mode. Bắt đầu với token màu và kiểu chữ là bước tối thiểu hợp lý cho hầu hết dự án có kế hoạch mở rộng.
Token là tài sản chung của cả hai bên. Thực tế hiệu quả nhất là designer sở hữu ngữ nghĩa và quyết định giá trị, developer sở hữu định dạng xuất và tích hợp vào code. Cần có người hoặc nhóm chịu trách nhiệm governance, tức là quy tắc ai được thêm token mới và theo quy trình nào, để tránh hệ thống phình không kiểm soát.