Memberi warna dan suara pada layout: memahami psikologi warna, palet 60-30-10, kontras WCAG dan aksesibilitas warna, lalu menata tipografi dengan type scale, variable fonts, hierarki tipografi, dan teknik pairing, lengkap dengan praktik membuat palet + type scale design system mini KasirKita.

Setelah di episode 8 layout, grid, dan hierarki sudah tertata, pada episode ini kita memberi warna dan tipografi — dua bahasa visual yang paling memengaruhi kesan dan keterbacaan. Ini momen di mana antarmuka mulai punya "kepribadian".
Mengapa penting? Warna dan font bukan hiasan; keduanya alat komunikasi dan aksesibilitas. Warna yang salah bisa membuat teks tak terbaca (kontras buruk) dan mengirim pesan salah (merah untuk aksi yang aman). Font yang salah membuat pengguna lebih sulit membaca. Episode ini juga menanamkan dasar untuk design tokens di episode 12.
Warna membawa asosiasi budaya & emosional — konteks menentukan makna:
| Warna | Asosiasi umum | Pemakaian cerdas |
|---|---|---|
| Hijau | Aman, sukses, uang | Aksi sukses, status "stok aman" |
| Merah | Bahaya, error, urgensi | Error, stok habis, diskon besar |
| Biru | Kepercayaan, tenang | Branding, aksi utama |
| Kuning/Orange | Energi, peringatan | CTA, peringatan stok menipis |
| Abu-abu | Netral, redup | Elemen non-aktif, label |
Untuk KasirKita, pilih warna yang menghormati konteks budaya: hijau untuk "transaksi berhasil", merah untuk "error/stok habis", orange untuk "stok menipis". Jangan memakai merah untuk tombol konfirmasi — itu mengirim sinyal bahaya.
Aturan 60-30-10 menyeimbangkan proporsi warna: 60% warna dominan (netral), 30% warna sekunder, 10% aksen.
60% Neutrals → background & teks (putih/abu muda, hitam/abu gelap)
30% Primary → biru kehijauan (brand, tombol utama, link)
10% Accent → orange (notifikasi stok menipis, highlight)
Bersama: success (hijau) + danger (merah) untuk status khususAksen 10% dipakai hemat — hanya untuk hal yang benar-benar perlu menarik mata, seperti indikator stok menipis. Jika semua warna menyala, tidak ada yang menonjol.
Kontras diukur dengan rasio luminance antara teks dan latar. Standar WCAG (detail di episode 13):
| Konten | Rasio minimal |
|---|---|
| Teks normal | 4.5 : 1 |
| Teks besar (≥18pt / 14pt bold) | 3 : 1 |
| Elemen UI & ikon penting | 3 : 1 |
Gunakan plugin Stark di Figma untuk mengecek kontras langsung saat memilih warna. Contoh pasangan aman untuk teks:
/* Kontras tinggi (semua > 4.5:1) */
.teks-primer { color: #1A1A1A; background: #FFFFFF; } /* 16.9:1 */
.teks-muted { color: #5C5F66; background: #FFFFFF; } /* 7.5:1 */
.tombol-utama { color: #FFFFFF; background: #0E7490; } /* 5.6:1 */
.tombol-disabled { color: #9CA3AF; background: #E5E7EB; } /* teks non-aktif, bukan konten penting */Warning
Jangan hanya mengandalkan warna untuk menyampaikan status — pengguna buta warna (sekitar 1 dari 12 pria) tidak bisa membedakan hijau vs merah. Selalu kombinasikan warna dengan ikon + label teks: ikon ceklis + "Berhasil", ikon segitiga + "Stok menipis". Kita perkuat ini di episode 13.
Type scale adalah deretan ukuran font yang proporsional — biasanya berbasis rasio (1.250 atau 1.333) sehingga ukuran yang lebih besar terasa "berhubungan". Contoh type scale 1.250 untuk KasirKita:
Display 34 / 40 (jarang — angka besar, welcome screen)
H1 28 / 34
H2 22 / 28 ← judul layar (Konfirmasi Transaksi)
H3 18 / 24 ← judul section (Rincian Pesanan)
Body 16 / 24 ← teks utama (nama produk, jumlah)
Small 14 / 20 ← metadata (harga satuan, label)
Caption 12 / 16 ← disclaimer, info non-kritisFormat yang dipakai: ukuran/tinggi-baris. Konsistensi type scale membuat desain terasa sistematis — dan siap menjadi tokens di episode 12.
Variable fonts adalah satu file font yang berisi banyak variasi (weight, width, optical size) dan bisa diubah lewat properti CSS. Manfaatnya untuk desain: performa (satu file menggantikan banyak) dan fleksibilitas tanpa download font terpisah:
@font-face {
font-family: "PlusJakarta";
src: url("/fonts/PlusJakartaSans-Variable.woff2");
font-weight: 200 800;
}
.total-harga {
font-family: "PlusJakarta", sans-serif;
font-weight: 700; /* bebas di antara 200-800 */
}Untuk KasirKita: Plus Jakarta Sans (display & body) + JetBrains Mono (angka transaksi & kode) — dua variable font cukup untuk seluruh aplikasi.
Hierarki tipografi memakai ukuran, bobot, dan case untuk membedakan peran: judul besar & tebal, body normal, metadata kecil. Pairing adalah memilih kombinasi font yang harmonis. Aturan aman untuk pemula:
Tip
Tools seperti Khroma dan Google Fonts membantu eksplorasi kombinasi warna & font. Tapi ingat, pairing yang baik diuji dalam konteks: pasangan font yang indah di mockup belum tentu nyaman dibaca untuk 100 transaksi per hari. Uji keterbacaan di ukuran kecil (14px) dan layar ponsel.
Di file KasirKita, buat frame Design System Mini:
Pada episode 9 ini, kalian telah memberi warna dan tipografi yang sistematis pada KasirKita.
Inti yang harus dibawa pulang:
Di episode 10 selanjutnya kita akan merakit komponen UI & pola interaksi — button, input, card, modal, toast, dropdown, serta pola empty state, loading, dan error untuk kasir KasirKita. Sampai jumpa di episode 10!