Lewati ke konten
Token & variabel
Dokumentasi Pratinjau

Token & variabel

Satu sumber nilai untuk seluruh kit — cara kerjanya, cara menambahnya, dan daftar lengkapnya.

Cara token bekerja

Nilai warna disimpan sebagai tiga angka HSL mentah tanpa pembungkus, supaya bisa disisipkan ke dalam fungsi apa pun:

/* tokens.css */
--ck-primary: 214 65% 32%;

/* komponen — inilah satu-satunya bentuk yang sah */
.ck-sesuatu { color: hsl(var(--ck-primary)); }
.ck-sesuatu { background-color: hsl(var(--ck-primary) / 0.08); }

/* SALAH — nilai mentah, mode gelap tidak ikut berubah */
.ck-sesuatu { color: #1d4f8c; }

Karena bentuknya triplet, transparansi juga lewat token: hsl(var(--ck-primary) / 0.5).

Tiga berkas, satu kebenaran

BerkasPeranDisunting tangan?
tokens/tokens.cssSumber kebenaran. Semua nilai didefinisikan di sini, mode terang dan gelapYa
tokens/tokens.jsonBentuk JSON untuk perkakas dan dokumentasiYa, harus sinkron
tokens/tailwind.preset.jsPreset untuk proyek yang masih memakai TailwindYa, harus sinkron

tools/check.py membandingkan ketiganya. Menambah token di satu berkas saja akan ditolak.

Mode gelap

Blok .dark hanya menimpa token yang memang perlu berubah. Token yang tidak ditimpa otomatis mewarisi nilai mode terang.

:root { --ck-primary: 214 65% 32%; }
.dark, [data-theme='dark'] { --ck-primary: 214 65% 55%; }

Tema otomatis mengikuti sistem tersedia lewat data-theme="auto" pada <html>.

Cara menambah token

  1. 1
    Cari yang sudah ada
    Tabel di bawah ini lengkap. Token baru hanya kalau benar-benar belum ada perannya.
  2. 2
    Tambah di tokens.css
    Masukkan ke bagian yang sesuai, dengan komentar singkat. Kalau perlu berbeda di mode gelap, tambahkan penimpaan di blok .dark.
  3. 3
    Sinkronkan dua turunannya
    Tambahkan di tokens.json dan tailwind.preset.js.
  4. 4
    Jalankan penjaga
    python3 tools/check.py — token yang belum sinkron akan ditolak.
Jangan mengarang token
Kalau butuh "biru sedikit lebih muda", kemungkinan besar yang dibutuhkan adalah salah satu dari skala --ck-primary-50…900 yang sudah ada. Lihat tabel di bawah sebelum menambah.

Daftar lengkap token

Dihasilkan langsung dari tokens/tokens.css setiap kali tools/build.py dijalankan, jadi tidak mungkin basi.

122 token.

Warna: permukaan & teks

TokenNilaiCatatan
--ck-background40 20% 98%kanvas off-white hangat
--ck-foreground220 39% 11%teks utama
--ck-card0 0% 100%permukaan kartu
--ck-card-foreground222 47% 11%
--ck-border214 32% 91%
--ck-input214 32% 91%
--ck-ring199 89% 48%

Primary: "deep ink blue" + skala penuh

TokenNilaiCatatan
--ck-primary-50214 65% 96%
--ck-primary-100214 65% 92%
--ck-primary-200214 65% 84%
--ck-primary-300214 65% 70%
--ck-primary-400214 65% 55%
--ck-primary-500214 65% 40%
--ck-primary-600214 65% 32%
--ck-primary-700214 65% 24%
--ck-primary-800214 65% 18%
--ck-primary-900214 65% 12%
--ck-primaryvar(--ck-primary-600)
--ck-primary-foreground40 20% 98%
--ck-primary-hovervar(--ck-primary-700)
--ck-primary-subtle214 65% 96%latar lembut, mis. badge info

Netral sekunder

TokenNilaiCatatan
--ck-secondary210 40% 96%
--ck-secondary-foreground222 47% 11%
--ck-secondary-hover210 40% 92%
--ck-muted210 40% 96%
--ck-muted-foreground215 16% 47%

Aksen: amber "pensil sekolah"

TokenNilaiCatatan
--ck-accent32 95% 44%
--ck-accent-foreground40 20% 98%
--ck-accent-hover32 95% 36%
--ck-accent-subtle32 95% 95%

Status

TokenNilaiCatatan
--ck-destructive0 84% 60%
--ck-destructive-foreground0 0% 100%
--ck-destructive-hover0 84% 50%
--ck-destructive-subtle0 86% 97%
--ck-warning38 92% 50%
--ck-warning-foreground0 0% 100%
--ck-warning-hover38 92% 42%
--ck-warning-subtle48 100% 96%
--ck-success160 84% 39%
--ck-success-foreground0 0% 100%
--ck-success-hover160 84% 32%
--ck-success-subtle152 81% 96%
--ck-info199 89% 48%
--ck-info-foreground0 0% 100%
--ck-info-subtle204 94% 96%

Tipografi

TokenNilaiCatatan
--ck-font-sans'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif
--ck-font-mono'JetBrains Mono', Menlo, monospace
--ck-weight-normal400
--ck-weight-medium500
--ck-weight-semibold600
--ck-weight-bold700

Radius

TokenNilaiCatatan
--ck-radius-sm0.25rem
--ck-radius-md0.5rem
--ck-radius-lg0.75rem
--ck-radius-xl1rem
--ck-radius-full9999px

Bayangan

TokenNilaiCatatan
--ck-shadow-sm0 1px 2px 0 hsl(220 39% 11% / 0.05)
--ck-shadow-md0 4px 6px -1px hsl(220 39% 11% / 0.08), 0 2px 4px -2px hsl(220 39% 11% / 0.06)
--ck-shadow-lg0 10px 15px -3px hsl(220 39% 11% / 0.10), 0 4px 6px -4px hsl(220 39% 11% / 0.08)
--ck-shadow-xl0 20px 25px -5px hsl(220 39% 11% / 0.12), 0 8px 10px -6px hsl(220 39% 11% / 0.08)
--ck-overlay0 0% 0% / 0.5

Gerak

TokenNilaiCatatan
--ck-dur-fast120ms
--ck-dur200ms
--ck-dur-slow500ms
--ck-easecubic-bezier(0.4, 0, 0.2, 1)

Tata letak

TokenNilaiCatatan
--ck-container1400px
--ck-sidebar-w17rem272px
--ck-sidebar-w-collapsed4.5rem72px
--ck-topbar-h4rem64px
--ck-space-10.25rem
--ck-space-20.5rem
--ck-space-30.75rem
--ck-space-41rem
--ck-space-51.25rem
--ck-space-61.5rem
--ck-space-82rem
--ck-space-123rem

Lapisan

TokenNilaiCatatan
--ck-z-base1
--ck-z-sticky20
--ck-z-topbar30
--ck-z-dropdown40
--ck-z-overlay50
--ck-z-toast100

Palet avatar (warna deterministik dari nama, 8 pilihan)

TokenNilaiCatatan
--ck-avatar-0#0ea5e9
--ck-avatar-1#10b981
--ck-avatar-2#8b5cf6
--ck-avatar-3#f59e0b
--ck-avatar-4#f43f5e
--ck-avatar-5#06b6d4
--ck-avatar-6#6366f1
--ck-avatar-7#f97316

Gradien mata pelajaran (8 mapel baku + cadangan)

TokenNilaiCatatan
--ck-subject-matematikalinear-gradient(135deg, #0ea5e9, #0891b2)
--ck-subject-bindolinear-gradient(135deg, #10b981, #0d9488)
--ck-subject-binglinear-gradient(135deg, #f43f5e, #db2777)
--ck-subject-fisikalinear-gradient(135deg, #8b5cf6, #9333ea)
--ck-subject-kimialinear-gradient(135deg, #f59e0b, #ea580c)
--ck-subject-biologilinear-gradient(135deg, #22c55e, #10b981)
--ck-subject-sejarahlinear-gradient(135deg, #f97316, #dc2626)
--ck-subject-geografilinear-gradient(135deg, #3b82f6, #4f46e5)
--ck-subject-defaultlinear-gradient(135deg, #1e4f86, #06b6d4)

Medali peringkat 1-3 (leaderboard)

TokenNilaiCatatan
--ck-medal-1linear-gradient(135deg, #fbbf24, #f59e0b)
--ck-medal-1-text#422006
--ck-medal-2linear-gradient(135deg, #cbd5e1, #94a3b8)
--ck-medal-2-text#1e293b
--ck-medal-3linear-gradient(135deg, #fdba74, #f97316)
--ck-medal-3-text#431407

Cetak (selalu terang, apa pun modenya)

TokenNilaiCatatan
--ck-print-bg#ffffff
--ck-print-border#cbd5e1

Teks di atas warna pekat (selalu putih, kedua mode)

TokenNilaiCatatan
--ck-on-solid#ffffff
--ck-surface-tinthsl(var(--ck-primary) / 0.08)
--ck-cyan-tint#06b6d4
--ck-warning-surface38 92% 50% / 0.10
--ck-warning-surface-strong38 92% 50% / 0.12
--ck-warning-text32 95% 30%
--ck-strength-mid48 96% 53%
--ck-stripergb(255 255 255 / 0.20)
--ck-blur-sm4px
--ck-blur-md8px
--ck-dur-stripe1s
--ck-code-surface220 39% 11%
--ck-code-foreground40 20% 98%
--ck-info-tint199 89% 96%

Membaca token dari JavaScript

const gaya = getComputedStyle(document.documentElement);
const primary = gaya.getPropertyValue('--ck-primary').trim();   // "214 65% 32%"
elemen.style.color = `hsl(${primary})`;

Pola ini dipakai classroom.js untuk mewarnai avatar secara deterministik dari nama pengguna.

classroom-themekitdokumentasi