Membakukan keputusan visual menjadi sistem yang terukur: memahami prinsip dan governance design system, komponen reusable, lalu mendefinisikan design tokens dengan standar DTCG dan naming convention yang konsisten untuk warna, spacing, dan tipografi KasirKita.

Setelah di episode 9-11 kita membangun palet, type scale, komponen, dan prototype, pada episode ini kita membakukan semuanya menjadi satu sumber kebenaran: design system dengan design tokens. Inilah yang membedakan proyek "yang kebetulan konsisten" dari produk yang konsisten karena sistem.
Mengapa penting? Bayangkan KasirKita punya 3 desainer dan 5 developer. Tanpa sistem, masing-masing akan menggunakan biru yang "mirip-mirip" dan spacing yang "kira-kira 10px". Design system menyatukan semua — satu komponen, satu token, satu bahasa — sehingga tim lebih cepat dan pengguna selalu melihat produk yang koheren.
Design system adalah kumpulan standar + komponen + dokumentasi yang dipakai berulang. Prinsip intinya:
Governance adalah aturan siapa yang boleh mengubah sistem dan bagaimana:
Untuk KasirKita yang tim kecil, governance cukup sederhana: satu pemilik sistem, semua perubahan lewat pull request & review. Governance penuh untuk tim besar dibahas di episode 25.
Dari episode 10, komponen kit kita tinggal distandarkan:
Buttons → primary / secondary / ghost / danger (5 state)
Inputs → default / hint / error / disabled
Cards → product / transaction / summary
Feedback → toast (success, error, warning) / modal / skeleton
Navigation → tab bar / header / paginationSetiap komponen punya varian + property (misal tombol: size, state, icon), bukan salinan yang berbeda. Perubahan warna tombol cukup sekali — semua instance ikut berubah.
Design tokens adalah nilai visual (warna, spacing, type, radius) yang disimpan sebagai variabel dengan nama terstruktur. Standar industri kini DTCG (Design Tokens Community Group) — format JSON terbuka agar token bisa dipertukarkan antar tool (Figma, Style Dictionary, code).
Nama token mengikuti hierarki: kategori → properti → varian. Contoh:
{
"color": {
"background": { "default": { "$type": "color", "$value": "#FFFFFF" } },
"text": {
"primary": { "$type": "color", "$value": "#1A1A1A" },
"muted": { "$type": "color", "$value": "#5C5F66" }
},
"brand": {
"primary": { "$type": "color", "$value": "#0E7490" }
},
"status": {
"success": { "$type": "color", "$value": "#15803D" },
"warning": { "$type": "color", "$value": "#C2410C" },
"danger": { "$type": "color", "$value": "#B91C1C" }
}
}
}Keuntungannya: token semantik (color.text.primary) memisahkan makna dari nilai (#1A1A1A). Jika brand berganti warna, cukup ubah nilai token — seluruh aplikasi ikut tanpa menyentuh satu pun layar.
{
"spacing": {
"xs": { "$type": "dimension", "$value": "4px" },
"sm": { "$type": "dimension", "$value": "8px" },
"md": { "$type": "dimension", "$value": "16px" },
"lg": { "$type": "dimension", "$value": "24px" },
"xl": { "$type": "dimension", "$value": "32px" }
},
"font": {
"body": { "$type": "fontFamily", "$value": "Plus Jakarta Sans" },
"mono": { "$type": "fontFamily", "$value": "JetBrains Mono" }
}
}Di Figma, token dipetakan lewat Variables (panel Design): buat Collection color, spacing, type, lalu hubungkan setiap style ke variable. Hasilnya, developer bisa membaca variabel yang sama persis saat handoff (episode 22).
Tip
Mulai dari token yang benar-benar dipakai — jangan buat 200 token sebelum desainnya ada. Aturan praktis: buat token ketika sebuah nilai dipakai minimal 3 kali. Sisanya biarkan sebagai nilai mentah sampai muncul polanya. Ini mencegah "token cemar" yang tidak pernah dipakai siapa pun.
Di file KasirKita, bangun sistem:
color (background, text, brand, status), spacing (xs-xl), font, radius.brand.primary) dan perhatikan semua layar berubah konsisten.Warning
Jangan memakai hardcode values di desain — nilai yang ditulis langsung di setiap layar (misal #0E7490 di 15 tempat) akan mudah tidak konsisten begitu ada perubahan kecil. Selalu rujuk variable. Ini juga satu-satunya cara token bisa diekspor ke developer secara otomatis (episode 22).
color.brand.blue dan color.primary menyimpan nilai sama; satu sumber kebenaran saja.Pada episode 12 ini, kalian telah membakukan keputusan visual KasirKita menjadi design system dengan tokens.
Inti yang harus dibawa pulang:
color.text.primary) memisahkan makna dari nilai, sehingga skala brand tidak merusak desain.Di episode 13 selanjutnya kita akan memastikan sistem ini berpihak pada semua orang: accessibility (A11y) & WCAG — POUR, keyboard navigation, screen reader, dan kontras, lengkap dengan audit KasirKita. Sampai jumpa di episode 13!