Hiểu token là hiểu tại sao đổi một màu ở gốc lại cập nhật toàn bộ sản phẩm số, và tại sao bỏ qua bước này thì hệ chỉ còn là đống component rời.
Token thiết kế là một quyết định thiết kế được đặt tên và lưu thành dữ liệu, thay vì gõ giá trị thô rải rác khắp nơi. Mọi thành phần giao diện đều tham chiếu về token, nên đổi giá trị ở gốc là toàn bộ giao diện cập nhật theo. Bỏ qua tầng token, Anh Chị chỉ có một bộ component rời rạc và phải sửa hàng trăm chỗ bằng tay mỗi khi thương hiệu thay đổi.
Token thiết kế là một quyết định thiết kế được đặt tên và lưu thành dữ liệu. Ví dụ: thay vì gõ #1A1A2E ở mọi nơi cần màu nền chính, Anh Chị đặt tên nó là color.background.primary và dùng tên đó trong toàn bộ hệ thống. Đây không phải thủ thuật kỹ thuật mà là quyết định kiến trúc: ai kiểm soát token là người kiểm soát toàn bộ diện mạo sản phẩm.
Hệ token lành mạnh có đủ ba tầng, mỗi tầng có một lý do thay đổi riêng:
blue-500 = #2563EB. Tầng này không nói gì về mục đích sử dụng, chỉ là kho chứa.color.action.primary trỏ vào blue-500. Đây là tầng quyết định ngữ cảnh dùng: nền cảnh báo, chữ phụ, đường viền tương tác.button.background.default trỏ vào color.action.primary. Tầng này chỉ cần thiết khi hệ thống thực sự phình to.Nguyên tắc vận hành: component chỉ đọc token ngữ nghĩa, không đọc thẳng token gốc. Đây là điều kiện để đổi chủ đề sáng tối hay đa thương hiệu mà không phải đi sửa từng component.
Tách ba tầng token để mỗi tầng có một lý do thay đổi riêng. Đổi một tầng không kéo đổ các tầng khác.
Nathan Curtis, Tokens in Design Systems (EightShapes)
Cách hệ thống thiết kế (design system) hoạt động là: mọi component đều tham chiếu về token, không chứa giá trị cứng bên trong. Điều này có nghĩa:
Bỏ qua tầng token, hệ chỉ còn là bộ component rời. Đổi màu thương hiệu đồng nghĩa với việc ngồi sửa hàng trăm chỗ bằng tay và vẫn sót.
Nên đầu tư tầng token đầy đủ khi: Anh Chị có từ hai sản phẩm số trở lên, hoặc một sản phẩm cần hỗ trợ chế độ sáng tối, hoặc có kế hoạch mở rộng thương hiệu trong tương lai gần. Cũng nên đầu tư sớm khi đội thiết kế và đội lập trình làm việc song song và cần ngôn ngữ chung.
Chưa cần nhiều lớp token nếu: Chỉ có một trang tĩnh, ít thay đổi, một người làm từ đầu đến cuối. Trong trường hợp này, tầng ngữ nghĩa tối giản vẫn nên có để bảo vệ về sau, nhưng chưa cần đầy đủ ba tầng.
Quan điểm của Sinh Vũ: dựng token trước khi dựng component, vì token là nền của mọi thứ phía trên. Đảo ngược thứ tự thì về sau phải phá và làm lại.
color.xanh-500 cho màu nút chính. Khi thương hiệu đổi sang màu cam, cái tên hóa ra sai nghĩa hoàn toàn và gây nhầm lẫn cho cả đội.Đặt tên token theo ý nghĩa sử dụng, không theo giá trị hiện tại, để tên vẫn đúng khi giá trị đổi.
Nathan Curtis, Naming Tokens in Design Systems (EightShapes)
Sinh Vũ coi tầng token là nền móng không thể bỏ qua. Trong mỗi dự án xây hệ thống thiết kế, Giai đoạn 1 luôn mở đầu bằng rà soát toàn bộ giao diện số hiện có rồi chuẩn hóa thành ba lớp token trước khi dựng bất kỳ component nào.
Quan điểm vận hành là một nguồn chuẩn duy nhất cho màu, font, khoảng cách: đổi ở gốc thì cả website, ứng dụng và component đổi theo, không sót chỗ nào. Đây không phải tham vọng kỹ thuật, mà là điều kiện tối thiểu để một thương hiệu nhất quán trên nhiều điểm chạm số mà không tiêu hao sức người vào việc đồng bộ bằng tay.
Chủ đề: Token thiết kế là gì và vì sao nó quyết định cả hệ thống. Cẩm nang Sinh Vũ, sinhvu.com
Bấm chọn từng mục Anh / Chị thấy đúng, rồi bấm in hoặc lưu thành PDF để mang theo.
Nếu Anh / Chị đánh dấu phần lớn ở nhóm dấu hiệu trên, đây là lúc nên trao đổi kỹ hơn. Sinh Vũ có thể cùng Anh / Chị soi lại và đề xuất hướng đi.
Nathan Curtis, Tokens in Design Systems (EightShapes); Nathan Curtis, Naming Tokens in Design Systems (EightShapes); Material Design 3, Design tokens overview.
Biến CSS là kỹ thuật lưu giá trị trong mã lập trình. Token thiết kế là quyết định thiết kế được đặt tên theo ý nghĩa sử dụng, tồn tại độc lập với nền tảng kỹ thuật và có thể xuất sang CSS, iOS, Android hay bất kỳ môi trường nào. Nói cách khác, biến CSS là một cách triển khai token, còn token rộng hơn và sống ở tầng ngôn ngữ chung giữa thiết kế và lập trình.
Không có con số tuyệt đối. Dấu hiệu nhận biết sinh quá nhiều là tỉ lệ token thực sự được dùng trong component thấp, và đội thiết kế không còn nhớ nổi token nào dùng cho gì. Sinh Vũ khuyên bắt đầu từ nhu cầu thực của giao diện hiện có, chuẩn hóa rồi mới mở rộng, thay vì định nghĩa toàn bộ hệ token trước khi có sản phẩm để đối chiếu.
Không nhất thiết phải đầy đủ ba tầng ngay từ đầu. Tuy nhiên, tầng ngữ nghĩa (semantic) vẫn nên có dù sản phẩm đơn giản, vì nó bảo vệ Anh Chị khỏi phải sửa từng component mỗi khi màu sắc thay đổi. Tầng component token có thể để sau khi hệ thực sự phình to.