Design System v0.6.0

Fondasi

Warna

Swatch dibaca langsung dari tokens.css. Setiap token punya asal di kode; nilai kembar dilipat sesuai peta di bawah.

Teal

teal-25 #F0FDF9
teal-50 #E6FBF5
teal-400 #00D6B5
teal-500 #00C7A6
teal-600 #00A896
teal-700 #00897B
teal-800 #087F76
teal-900 #06655E
cyan-500 #1BB3C5

600 adalah primary (COLORS.primary di mobile): harga, ikon aktif, fokus. 500 fill tombol primer di mobile. 400 teal terang (web dan CMS). 700/800 teks dan tombol yang perlu lulus kontras: 800 dipakai sebagai hover di web dan lulus AA dengan teks putih (4.88:1). 900 adalah usulan kit untuk hover tombol aksi. Cyan #1BB3C5 dipakai di web dan jadi warna utama CMS.

Ink (navy, neutral utama)

ink-900 #1B2430
ink-800 #2B3645
ink-700 #2D3E50
ink-600 #4B5565
ink-500 #8A93A2
ink-400 #99A7B3
ink-300 #D7DCE3
ink-200 #E7EBF1
ink-100 #EEF2F6
ink-50 #F8FAFC

500 (muted) dipakai untuk lokasi, label, dan nav tidak aktif, tapi hanya 3.10:1 di atas putih. 400 adalah placeholder aslinya (2.46:1).

Forest (hijau tua)

forest-900 #243F35
forest-800 #2F4E41
forest-700 #30443B
forest-500 #628277
forest-400 #7B8981

Dipakai di halaman booking web (booking-initiate.css) sebagai warna teks dan judul, berdampingan dengan navy di halaman lain. Dua keluarga ink dalam satu produk: kandidat untuk disatukan, belum diputuskan.

Surface & garis

bg #FFFFFF
surface #FFFFFF
white #FFFFFF
line #E1EDE9
tint #EAF8F2

Latar halaman putih murni (web dan mobile). Draf awal menyebut warm off-white, tapi kode tidak memakainya, jadi kit mengikuti kode. line #E1EDE9 (hijau muda) adalah border kartu dan section yang paling sering muncul.

Semantic (usulan kit)

success-bg #E7F6EE
success-fg #15744A
success-solid #1F9D61
success-line #B5E4CB
warning-bg #FFF4DB
warning-fg #8A5A00
warning-solid #D98E04
warning-line #F5DCA0
error-bg #FDECEC
error-fg #A12D2D
error-solid #EF4444
error-line #F6C3C3
info-bg #E6FBF5
info-fg #087F76
info-solid #00897B
info-line #E1EDE9

Kode memakai skala oklch yang chroma-nya di luar gamut sRGB, sehingga render-nya ter-clamp, dan komponen justru memakai hex langsung. Pasangan bg/fg di sini adalah usulan kit; merah solid mengikuti mobile (#EF4444).

Peta nilai di kode ke token

Jumlah adalah kemunculan hex di kode sumber (web: src/**/*.css,svelte; mobile: src/**). Pasti berarti nilainya sama persis atau token resmi di kode. Usulan berarti dilipat ke token terdekat, perlu persetujuan. Belum berarti belum ada token.

Nilai di kodeMunculTokenStatus
#00A896web 40 · mobile 75teal-600Pasti
#00C7A6web 8 · fill Button mobileteal-500Pasti
#00C1A3web 10teal-500Usulan
#00D6B5web 22 · mobile 18teal-400Pasti
#00D9B1, #34CBB5web 8 + 8teal-400Usulan
#00AB91token app-teal-darkteal-600Usulan
#00897Bmobile primaryDarkteal-700Pasti
#087F76web 8teal-800Pasti
#1BB3C5web 7 · CMScyan-500Pasti
#00A3DAweb 11—Belum: biru-cyan lain
#0EA5A6mobile 12—Belum
#1B2430web 8 · mobile 29ink-900Pasti
#0F172A, #0F1724, #121926, #1A2B3D, #1E293Bnavy lain, 8 sampai 22 per nilaiink-900Usulan
#2D3E50mobile 16ink-700Pasti
#374151, #364152mobile 21 · web 9ink-700Usulan
#4B5565mobile 14ink-600Pasti
#8A93A2mobile 20ink-500Pasti
#64748B, #94A3B8, #9CA3AFmobile 23 / 11 / 17 · web 8ink-500Usulan
#99A7B3mobile placeholderink-400Pasti
#E1EDE9web 35 · mobile 13linePasti
#E2E8F0, #E7EBF1, #E9EAEDmobile 19 · web 10 / 7ink-200Usulan
#EEF2F6, #EEF3F6, #EEF1F4, #F1F5F9mobile 11 / 15 / 14ink-100Usulan
#EAF8F2, #F4FAF9web 25 + 23tintUsulan
#30443B, #2F4E41, #243F35web 11 / 7forest-700 / 800 / 900Pasti
#EF4444mobile 14error-solidPasti
#C93B2Bweb 9—Belum: merah web berbeda dari mobile

Aturan pakai

PeranTokenUntukCatatan
Teks utama--vc-textJudul, body, label—
Teks sekunder--vc-text-labelLabel dan keterangan—
Muted--vc-text-mutedLokasi, nav tidak aktif (aslinya)Gagal AA; untuk info kunci pakai ink-600
Primary--vc-primaryHarga, ikon aktif, fokus (aslinya)Gagal untuk teks kecil; pasangan: --vc-text-accent-aa
Aksi (teks putih)--vc-actionTombol dengan teks putih yang lulus AAPasangan aman dari vc-btn--brand
Garis--vc-lineBorder kartu dan section, dividerBorder kontrol input: --vc-border
Status--vc-*-bg / -fgBadge, alert, panel statusSelalu sertakan ikon atau teks, tidak warna saja

Kontras

Dihitung langsung di browser dari token (rumus WCAG 2.x). Ambang: 4.5:1 untuk teks normal, 3:1 untuk teks besar dan komponen UI. Baris yang gagal adalah kombinasi yang sudah ada di kode, bukan ciptaan kit.

ContohPasanganRasioDipakai untukHasil
Aaink-900 / bg
#1B2430 di atas #FFFFFF
15.65:1Teks utama AA
Aaink-600 / bg
#4B5565 di atas #FFFFFF
7.54:1Teks sekunder, helper AA
Aaink-500 / bg
#8A93A2 di atas #FFFFFF
3.10:1Lokasi, label, nav tidak aktif (teks kecil)
Sudah ada di kode
Hanya teks besar
Aaink-400 / bg
#99A7B3 di atas #FFFFFF
2.46:1Placeholder input
Sudah ada di kode
Gagal
Aawhite / ink-900
#FFFFFF di atas #1B2430
15.65:1Tombol primary navy
Sudah ada di kode
AA
Aawhite / teal-500
#FFFFFF di atas #00C7A6
2.16:1Tombol brand (fill Button mobile)
Sudah ada di kode
Gagal
Aawhite / teal-600
#FFFFFF di atas #00A896
2.98:1Teks putih di atas primary Gagal
Aawhite / teal-800
#FFFFFF di atas #087F76
4.88:1Tombol accent (pasangan AA) AA
Aawhite / teal-900
#FFFFFF di atas #06655E
6.93:1Tombol accent (hover) AA
Aateal-600 / bg
#00A896 di atas #FFFFFF
2.98:1Harga, ikon aktif, teks teal kecil
Sudah ada di kode
Gagal
Aateal-600 / bg
#00A896 di atas #FFFFFF
2.98:1Fokus ring dan ikon (komponen UI)
Sudah ada di kode
Gagal
Aateal-800 / bg
#087F76 di atas #FFFFFF
4.88:1Link dan teks teal (pasangan AA) AA
Aateal-600 / teal-50
#00A896 di atas #E6FBF5
2.77:1Item nav aktif
Sudah ada di kode
Gagal
Aateal-800 / teal-50
#087F76 di atas #E6FBF5
4.52:1Chip terpilih, nav aktif (pasangan AA) AA
Aateal-400 / ink-900
#00D6B5 di atas #1B2430
8.41:1Kata aksen di atas navy (teks besar) AA
Aawhite / error-solid
#FFFFFF di atas #EF4444
3.76:1Badge Sold Out (9px di kode)
Sudah ada di kode
Hanya teks besar
Aateal-500 / bg
#00C7A6 di atas #FFFFFF
2.16:1Dekoratif saja: blok warna Dekoratif
Aasuccess-fg / success-bg
#15744A di atas #E7F6EE
5.18:1Badge dan alert sukses AA
Aawarning-fg / warning-bg
#8A5A00 di atas #FFF4DB
5.42:1Badge dan alert peringatan AA
Aaerror-fg / error-bg
#A12D2D di atas #FDECEC
6.28:1Badge dan alert error AA
Aainfo-fg / info-bg
#087F76 di atas #E6FBF5
4.52:1Badge dan alert info AA