Linea UI
Sistem desain Linea
Satu kit komponen milik Linea sendiri. Semua halaman memakai komponen ini, jadi tombol, form, dan status selalu terlihat dan terasa sama. Halaman ini memakai komponen yang sama persis dengan aplikasi; yang kamu lihat di sini adalah yang dipakai di produksi.
Kode: app/components/ui/ · Aturan tertulis: DESIGN.md
Prinsip
Enam keputusan yang menjelaskan kenapa komponen terlihat seperti ini. Kalau ragu, kembali ke sini.
01
Karya yang paling berwarna
UI memakai putih, tinta, dan satu nila. Warna lain hanya untuk arti status.
02
Satu aksi utama per layar
Tombol nila muncul sekali. Sisanya sekunder atau tenang.
03
Titik dan garis tahap
Nama Linea berasal dari tahap yang terhubung garis. Motif itu muncul di label seksi, judul, panel, stepper, dan tombol utama.
04
Pil untuk aksi, sudut untuk isi
Tombol, chip, link header, dan badge berbentuk pil penuh. Field 10 px, panel 12 px, banner 24 px.
05
Fungsi dulu, hiasan tidak
Tidak ada ikon dekoratif, emoji, gradien, atau bayangan pada elemen diam.
06
Satu skala tinggi
Semua kontrol 32 / 40 / 48 px, jadi tombol dan field selalu sejajar.
Warna
Token warna berganti otomatis untuk tema gelap. Contoh di bawah mengikuti tema yang sedang aktif; nilai heksadesimal untuk terang dan gelap tertulis di tiap baris.
electric
Electric Blue: Aksi utama, brand, identitas
#070AFF · #3B56FF
lime
Neon Lime: Selesai, aktif, stiker pop, checkpoint
#C1FE00 · #C1FE00
tangerine
Vivid Orange: Perhatian, antrean, peringatan
#FB6D23 · #FB6D23
bg
Latar halaman kanvas
#FFFFFF · #0A0C16
surface
Panel, kartu, menu
#FFFFFF · #101322
surface-2
Isian, chip netral, hover
#F3F4F9 · #181C32
line
Garis & border
#E5E7F2 · #222642
ink
Teks utama, judul
#0D0F1C · #F2F3FA
muted
Teks sekunder, deskripsi
#5A5E76 · #969AB6
Aturan warna
Gradasi & Stiker Pop
Elemen visual berenergi tinggi yang terinspirasi dari street-pop culture Gen-Z ('hi酷', blind box, sticker badge, glowing card borders). Menggunakan perpaduan Neon Lime (#C1FE00), Electric Blue (#070AFF), dan Vivid Orange (#FB6D23).
BannerBadge
app/components/ui/primitives.tsx- Pakai
- Pil penuh, warna solid, titik kecil di depan, huruf biasa
- Pakai di atas gambar: banner beranda, kartu berlatar karya
- Satu nada = satu makna: lime pilihan, orange baru, electric escrow
- Jangan
- Jangan dirotasi, diberi garis tebal, atau bayangan keras
- Jangan lebih dari 2 label dalam satu banner
Mesh Gradients & Glow Card
app/globals.cssGradasi Radial Multi-Warna
Paduan #070AFF, #C1FE00, dan #FB6D23 di atas kanvas gelap #0A0C16.
Bingkai Gradasi Menyala
Aura neon aktif saat disentuh atau diarahkan kursor.
- Pakai
- Pakai .bg-mesh-dark hanya untuk bidang sorotan khusus; Launchpad dan panel fitur memakai panel biasa
- Pakai .card-gradient-glow untuk kartu dengan aura menyala
Tipografi
Bricolage Grotesque untuk judul halaman dan seksi (otomatis untuk h1 dan h2), Instrument Sans untuk semua teks lain termasuk angka uang dengan angka sejajar.
- Judul halamanPesananBricolage · 30 · 800
- Judul seksiLayanan untukmuBricolage · 20 · 700
- Judul kartuModel VTuber siap riggingInstrument · 15 · 700
- Teks isiKarakter setengah badan, digambar dari nol.Instrument · 14 · 400
- Label kecilPanel escrowInstrument · 11 · kapital
- UangRp 1.575.000Instrument · tabular · 700
Bentuk & ruang
Empat radius, satu skala tinggi kontrol, jarak kelipatan 4 px, dan motif garis tahap.
rounded-xl
10 px · Field, thumbnail, tile kategori, item menu
rounded-2xl
12 px · Panel, kartu, gambar kartu
rounded-3xl
24 px · Banner beranda
rounded-full
Pil · Tombol, link header, chip filter, badge, avatar
SectionHeader · SectionLabel · TitleRule · StageLine
ui/nav-bits.tsx · ui/primitives.tsxJudul halaman
Judul seksi
AksiLabel kecil
Panel dengan garis tahap
Sketsa selesai, Lineart berjalan, Final tersisa.
- Pakai
- Judul seksi selalu lewat SectionHeader.
- Panel yang mewakili tahap diberi stages.
- Jangan
- Menggambar garis/titik tahap manual di halaman.
Tombol
Pil penuh, satu ukuran (40 px, teks 14 px tebal). Lima varian dengan peran tetap, datar tanpa bayangan.
Button · ButtonLink
ui/button.tsx- Pakai
- Satu primary per layar.
- Label kata kerja + hasil: "Setujui Sketsa".
- Pakai loading saat menunggu server.
- Jangan
- Dua tombol nila berdampingan.
- Mengganti teks jadi "Mengirim…" (pakai loading).
- Menambah ikon dekoratif di tombol.
- Menimpa tinggi, padding, atau radius lewat className.
IconButton
ui/button.tsx- Pakai
- Selalu beri label (tooltip & pembaca layar).
- Jangan
- Ikon tanpa fungsi jelas.
MilestoneDots
ui/button.tsxForm
Field putih bergaris tegas, selalu dibungkus Field: label di atas, petunjuk atau error di bawah, penghitung karakter di kanan.
Field · Input · Textarea · Select
ui/field.tsx5–80 karakter.
Kamu menerima 100%.
Handle sudah dipakai seniman lain.
33/1000
- Pakai
- Label pendek di atas field.
- Tandai yang tidak wajib dengan "Opsional".
- Awalan/akhiran untuk satuan (Rp, hari, %).
- Jangan
- Placeholder sebagai pengganti label.
- <input> mentah di halaman (ditolak lint).
Pilihan
Pilihan aktif selalu bertanda tinta, bukan nila: nila disimpan untuk aksi.
ChoiceCard
ui/field.tsx- Pakai
- Pilihan yang punya harga atau penjelasan.
- Jangan
- Lebih dari 4 kartu; pakai Select.
Segmented
ui/field.tsx- Pakai
- 2–4 nilai yang langsung berlaku (status, tema).
Checkbox
ui/field.tsxStatus & badge
Pil lembut tanpa garis, bernada alami, dengan titik bulat. Status selalu berupa kata, tidak pernah hanya warna.
AvailabilityChip
ui/availability-chip.tsx- Pakai
- onImage di atas gambar karya.
- Jangan
- Huruf kapital semua atau warna neon.
Badge · CommissionStatusBadge · CategoryTag
ui/primitives.tsx · ui/status.tsx · ui/category.tsxPanel & pemberitahuan
Panel bergaris tegas tanpa bayangan, bisa diberi garis tahap di tepi atas. Pemberitahuan berlatar lembut sesuai nada.
Card (Panel) · KeyValue
ui/primitives.tsx · ui/nav-bits.tsxRingkasan
- Harga
- Rp 450.000
- Biaya layanan 5%
- Rp 22.500
- Total
- Rp 472.500
Alert
ui/primitives.tsxEscrow
EmptyState
ui/primitives.tsx- Jangan
- Ilustrasi atau ikon besar.
Kartu & progres
Komponen khas Linea: kartu layanan tanpa kotak, dan stepper tahap escrow.
ServiceCard
components/service-card.tsx- Pakai
- Gambar, seniman, judul, harga + hari, satu tag.
- Jangan
- Bio, skor, tombol, atau rating palsu di kartu.
ProgressStepper
ui/status.tsx- Dibayar
- Sketsa
- 2Lineart & Warna Dasar
- 3Final
Ikon
Set ikon sendiri: grid 20×20, garis 1,6 px. Hanya untuk fungsi; kategori diwakili potongan karya.
- ArrowLeft
- ArrowUpRight
- Chat
- Check
- ChevronDown
- ChevronUp
- External
- Grid
- Heart
- List
- Menu
- Monitor
- Moon
- Pencil
- Search
- Sparkles
- Sun
- User
- X
Penulisan
Ramah seperti teman seniman, lugas seperti bank setiap kali menyangkut uang.
- TombolSetujui SketsaOK / Lanjut
- UangRp 1.500.000 cair setelah kamu menyetujui FinalDana aman!
- ErrorGagal mengirim link masuk. Coba lagi dalam 1 menit.Terjadi kesalahan
- IstilahSeniman · Klien · Pesanan · Tahap · Biaya layananArtist · Buyer · Order · Milestone · Fee