Câu trả lời ngắn gọn là: token trước, không có ngoại lệ. Nhưng token không cần hoàn hảo 100% ngay từ đầu.
Luôn bắt đầu từ token trước, component sau. Component không có token nền tảng sẽ trở thành mã cứng (hardcode) và rất khó bảo trì khi thương hiệu thay đổi về sau. Token không cần hoàn hảo ngay từ đầu, chỉ cần đủ ổn định để component đầu tiên có thể tham chiếu vào.
Nhiều đội sản phẩm chọn làm component trước vì muốn thấy kết quả ngay. Nút bấm hiện ra, màn hình chạy được. Trông có vẻ hiệu quả. Nhưng đây là lỗi thiết kế hệ thống cơ bản, và Sinh Vũ gặp lại tình huống này thường xuyên khi được mời vào chỉnh sửa một design system đang rối. Chi phí sửa lại sau bao giờ cũng lớn hơn chi phí làm đúng từ đầu.
Token (mã giá trị thiết kế) là lớp ngôn ngữ chung giữa thiết kế và kỹ thuật. Một token không phải là màu sắc hay font chữ, mà là tên được đặt cho một giá trị với một vai trò cụ thể. Ví dụ: color-primary trỏ đến màu chủ đạo của thương hiệu, bất kể màu đó là xanh hay cam hay đen.
Component chỉ là biểu hiện của token, không tự chứa giá trị thị giác. Nếu component tự chứa giá trị (hardcode trực tiếp mã màu #1A73E8 vào nút bấm), thì khi thương hiệu thay màu, đội kỹ thuật phải tìm và sửa từng dòng code một. Đây là lý do W3C Design Tokens Community Group (DTCG) thiết lập chuẩn token trước khi bất kỳ component nào được xây.
Nathan Curtis (EightShapes) và cộng đồng design systems phân cấp token thành ba lớp. Anh / Chị cần hiểu để biết mình đang ở lớp nào:
blue-500: #1A73E8. Đây là bảng màu đầy đủ, chưa mang vai trò.color-primary: blue-500. Lớp này là nơi quyết định màu nào làm màu chính, màu nào làm màu cảnh báo.button-background: color-primary.Lớp semantic là lớp hay bị bỏ qua nhất. Khi bỏ qua nó, thương hiệu thay đổi một màu là phải sửa hàng trăm component thay vì sửa một dòng trong semantic token.
Atom phải tồn tại trước molecule và trước organism. Token là atom của hệ thiết kế.
Brad Frost, Atomic Design (2016)
blue thay vì color-primary. Khi thương hiệu đổi sang màu cam, tên blue trở nên sai ngữ nghĩa hoàn toàn mà không thể đổi tên dễ dàng.Thứ tự Sinh Vũ áp dụng cho mỗi dự án design system: kiểm kê thương hiệu hiện có, đặt primitive tokens từ bảng màu và hệ chữ, thiết kế semantic tokens cùng đội sản phẩm của khách để đảm bảo ngôn ngữ vai trò được đồng thuận, sau đó mới vẽ component đầu tiên trong Figma.
Token được export ra file JSON và dùng Style Dictionary (công cụ chuyển đổi token của Amazon) để sinh ra biến CSS, Sass, hoặc Swift tự động cho từng nền tảng. Một nguồn duy nhất, nhiều đầu ra. Đây là lý do Anh / Chị không cần sửa tay ở nhiều nơi mỗi khi thương hiệu điều chỉnh.
Token không cần hoàn hảo ngay từ đầu. Nhưng cần đủ ổn định ở lớp semantic trước khi component đầu tiên được xây. Đó là điều kiện tối thiểu không thể bỏ qua.
W3C Design Tokens Community Group (DTCG); Brad Frost, Atomic Design (2016); Nathan Curtis, EightShapes; Style Dictionary, Amazon.
Được, nhưng với điều kiện: Anh / Chị phải có một bộ token tối thiểu (primitive màu, kiểu chữ) trước khi vẽ component đầu tiên. Demo nhanh kiểu này gọi là spike, tức là thử nghiệm kỹ thuật có giới hạn thời gian, không phải hệ production. Sau khi được phê duyệt ngân sách, cần quay lại xây token đúng chuẩn trước khi mở rộng component.
Cần dùng chung một nguồn duy nhất (single source of truth). Thực tế phổ biến là export token ra file JSON từ Figma, rồi dùng công cụ như Style Dictionary để sinh ra biến CSS, Sass hoặc Swift tự động. Nếu Figma và code bị lệch nhau, đội thiết kế và đội kỹ thuật sẽ nói hai ngôn ngữ khác nhau và mọi thay đổi thương hiệu đều phải làm hai lần.