Design System Sheet · V1.0

FLYRA

Referensi visual satu halaman untuk semua token, tipografi, spacing, dan komponen FLYRA — kabin pesawat malam hari: gelap, tenang, satu gradient violet → magenta → amber yang membawa seluruh identitas. Diturunkan langsung dari design.md dan file produksi.

Font PoppinsRadius membulatBahasa IndonesiaSumber flights-serp / flight-detail / payment / confirmation
01

Color Tokens

Satu-satunya warna jenuh di sistem adalah gradient aksen. Semua yang lain netral supaya gradient selalu menang.

Backgrounds — elevasi naik lewat kecerahan
--bg-base
#0E0912
Latar halaman, paling dalam
--bg-surface
#1A1220
Bar melayang (topbar, bottom-nav)
--bg-elevated
#211729
Input, tile, elemen di dalam kartu
--glass-fill
rgba(255,255,255,.04)
Isi semua kartu kaca
Text Hierarchy
--text-primary
#FFFFFF
Judul, angka, nilai
--text-secondary
#A79FB0
Label, keterangan, ikon pasif
Accent — violet → magenta → amber
--accent-1
#A855F7
Fokus, glow, isi awal gradient
--accent-2
#EC4899
Total harga, penanda ✈
--accent-3
#E0A93E
Durasi, harga tambahan
--gradient
135deg V→M→A
Tombol utama, avatar, logo
--gradient-rev
135deg A→M→V
Layer hover .btn-pilih
Status
--success
#22C55E
Glow ikon sukses saja
Border
TokenNilaiDipakai untuk
--glass-borderrgba(255,255,255,0.08)Satu-satunya border default di seluruh sistem
flight-card hoverrgba(168,85,247,0.40)Border kartu hasil saat hover
method-card aktifvar(--accent-1)Border tile pembayaran terpilih
tombol ghost hoverrgba(236,72,153,0.65)Border V5 Ghost Balik saat hover
02

Typography

Poppins (400 · 500 · 600 · 700), fallback sans-serif. -webkit-font-smoothing:antialiased di <html>. font-variant-numeric:tabular-nums di semua kolom angka berulang. Uppercase hanya untuk label spesifikasi — tidak pernah untuk copy produk Bahasa Indonesia.

Hover CTA "Pilih"
Display / Page title44–26px · 700
Detail Penerbangan
Page title h126px · 700
Rp 1.325.000
Total harga24px · 700 · accent-2
06:00 — 08:55
Jam kartu, tabular-nums20px · 600
Ringkasan Harga
Card heading h218px · 600
Tiket Anda sudah dikonfirmasi. E-tiket telah dikirim ke email Anda.
Body / lead15px · 400 · secondary
Garuda Indonesia
Nama maskapai14px · 600
Lanjut ke Pembayaran
CTA utama15px · 600 · #fff
Pilih
CTA sekunder13px · 600 · #fff
Flight Detail · Variant
Eyebrow / label spesifikasi13px · uppercase · .14em
CGK · Soekarno-Hatta
Kode bandara, durasi12px · 400 · secondary
per orang
Micro / kualifikasi11px · 400 · secondary
03

Spacing System

Skala kelipatan 4/8. Elevasi datang dari jarak dan kecerahan permukaan, bukan dari shadow.

--s1 4px
jarak antar baris teks dalam satu blok
--s2 8px
gap ikon–teks, gap antar badge
--s3 12px
gap antar chip, gap antar tombol
--s4 16px
padding kartu mobile
--s5 24px
gap antar kartu, grid gap utama
--s6 32px
padding horizontal halaman desktop
PatternNilai
Card padding desktop26px 28px
Card padding mobile16px
Page padding desktop24px 32px 60px
Page padding mobile16px 16px 90px
Gap antar kartu24px desktop · 12–14px mobile
Grid utama1fr 360px · gap 24px
04

Elevation & Depth

Kedalaman dicapai lewat lapisan kecerahan latar, bukan drop-shadow. Satu-satunya bayangan yang diizinkan adalah glow berwarna aksen pada elemen aktif.

0
BASE — --bg-base
Latar halaman
1
SURFACE — --bg-surface
Bar melayang (topbar, bottom-nav, checkout-bar)
2
GLASS — --glass-fill
Kartu, panel, chip, nav-pill — resep kaca lengkap: fill + border + blur
3
ELEVATED — --bg-elevated
Elemen di dalam kartu: input, method-tile, addon-icon
4
GLOW — --glow-active
Level tertinggi: elemen aktif/aksi utama, satu per layar
05

Borders & Radius

FLYRA membulat — kebalikan dari sistem bersudut tajam. Hanya satu border default di seluruh sistem.

ElemenRadius
Kartu, panel, artboardvar(--radius) = 16px
Tombol, chip, pill, badge, nav-pillvar(--radius-pill) = 999px
Input, method-card, tile kecil12–14px
Tombol back, logo mark10–12px
Avatar, icon-btn, ikon sukses50%
KondisiNilai
Default1px solid rgba(255,255,255,0.08)
Pembatas dalam kartuborder-top:1px solid var(--glass-border)
Nav-pill aktifrgba(255,255,255,0.25)
Chip / sort-tab aktiftransparent — gradient jadi batas
Flight card hoverrgba(168,85,247,0.4)
Tombol ghost hoverrgba(236,72,153,0.65)
Corner mark system: tidak ada. FLYRA tidak memakai penanda sudut, garis potong, atau ornamen kerangka. Status disampaikan lewat warna border dan glow saja.
06

Motion & Transitions

Satu easing untuk semua: --ease: cubic-bezier(.42,0,.58,1) (ease-in-out). Tidak ada transisi lebih dari 600ms.

ElemenPropertiDurasiTrigger
.btn-pilih::beforescaleY(0→1) origin top450ms:hover
.btn-pilihbox-shadow → glow-active450ms:hover
.flight-cardborder-color → accent-1200ms:hover
.nav-pill / .chipsemua200ms:hover
Skeleton (usulan)opacity 0.4→0.8→0.41400msinfinite
Press mobile (usulan)wipe yang sama, dipercepat180ms:active
Status pulse
Live
opacity 1→0.35 · 2s infinite
Skeleton loading
background-position sweep · 1.6s linear infinite
CTA wipe (arahkan kursor)
Pilih
scaleY(0→1) · 450ms ease-in-out
07

Components

Setiap komponen dalam empat state: default, hover, active, disabled — plus komponen struktural (topbar, search bar, filter panel, notification panel, ticket).

Topbar
💳 Rp 4.250.000
🔄
🎫
👤
Search Summary Bar
Filter Panel
Maskapai
Garuda Indonesia12
Lion Air9
Citilink7
Notification Panel
NotifikasiSemua · Belum Dibaca
2m
Booking GA402 dikonfirmasi
1j
Pembayaran tertunda — QZ7510
1h
Perubahan jadwal — JT918

Button — Primary

.btn-gradient — satu per layar, aksi utama.
Default
Hover
Active
Disabled

Button — Secondary / Ghost

.btn-outline — aksi kedua yang setara.
Default
Hover
Active
Disabled

Button — Select Flight (V1 Wipe Turun)

.btn-pilih — hover: gradient kebalikan wipe turun dari atas, 450ms ease-in-out.
DefaultPilih
HoverPilih
ActivePilih
DisabledPilih

Icon Button

.icon-btn — aksi topbar, notifikasi, profil.
Default
🔔
Hover / Active
🔔
Pressed
🔔
Disabled
🔔

Nav Pill

.nav-pill — navigasi utama, satu aktif pada satu waktu.
Default
Hover
Active
Disabled

Filter Chip

.chip — filter jam, transit, sort tab.
Default
Siang
Hover
Siang
Active
Pagi
Disabled
Malam

Checkbox

.checkbox — filter maskapai, form konfirmasi.
Default
Lion Air
Hover
Lion Air
Checked
Garuda Indonesia
Disabled
Batik Air

Input Field

.field input — background elevated, fokus pakai border + glow accent-1.
Default
Hover
Focus
Disabled

Payment Method Tile

.method-card — pemilihan metode pembayaran.
Default
🏦
Transfer Bank
Hover
🏦
Transfer Bank
Active
💳
Kartu Kredit/Debit
Disabled
🔳
QRIS

Badge

.badge — fasilitas penerbangan, status non-interaktif.
Bagasi
🧳 Bagasi 20kg
Makan
🍽 Makan Termasuk
WiFi
📶 WiFi
Refund
🛡 Bisa Refund

Ticket / Booking Code Card

Analog boarding pass — kode booking + rute + jadwal, dipisah garis putus-putus.
06:00
CGK · Jakarta
FLY-GA402-8X2K9
Maskapai
Garuda Indonesia · GA 402
Kursi
14A (Jendela)
Kelas
Ekonomi
08:55
DPS · Denpasar
08

Card Layout — Flight Card

Komponen inti FLYRA. Empat kolom tetap: maskapai → waktu → fasilitas → harga+CTA. Hover menaikkan border ke accent violet.

GA
Garuda Indonesia
GA 402 · Boeing 737
Bagasi 20kgBisa Refund
06:00
CGK
2j 55m
Langsung
08:55
DPS
🧳 🍽 📶
Rp 1.250.000
per orang
Pilih
QZ
Indonesia AirAsia
QZ 7510 · Airbus A320
Bagasi 15kg
07:20
CGK
2j 50m
Langsung
10:10
DPS
🧳 📶
Rp 890.000
per orang
Pilih
09

Naming & Glyph System

Tidak ada icon library — semua ikon adalah glyph teks/emoji langsung.

PolaContoh
Notasi rute ringkasCGK → DPS
Notasi rute lengkapCGK · Jakarta → DPS · Denpasar
Nomor penerbanganGA 402 · Boeing 737
Durasi2j 55m
Tanggal panjang / ringkasSen, 3 Agu 2026 / Sen, 3 Agu
HargaRp 1.325.000, tambahan +Rp 75.000
Kode bookingFLY-GA402-8X2K9
Pola CTAKata kerja + objek, tanpa tanda baca — Pilih, Bayar Sekarang
Penerbangan / arah
Kembali
Terpilih / berhasil
🧳Bagasi
🍽Makan
📶WiFi
🛡Refund / keamanan
💺Kursi
💳Kartu / saldo
10

Mobile Components

Perangkat sentuh tidak punya :hover — semua interaksi hover di desktop diganti :active yang lebih cepat (~180ms) di file *-mobile.html.

Bottom Nav
Cari Penerbangan
Checkout Bar (sticky)
Detail Penerbangan
Rp 1.325.000
Lanjut ke Pembayaran
11

Do / Don't

DO

  • Pakai token — var(--accent-1), bukan hex literal.
  • Pasang tiga properti kaca sekaligus: fill + border + blur.
  • Batasi satu .btn-gradient per layar.
  • Taruh dua radial glow di body tiap halaman desktop baru.
  • Bungkus label .btn-pilih dalam <span>.
  • Pakai --accent-2 solid untuk total harga.
  • Tulis semua copy dalam Bahasa Indonesia.
  • Sertakan prefers-reduced-motion di transisi baru.

DON'T

  • Jangan perkenalkan warna baru di luar palet.
  • Jangan pakai border-radius:0.
  • Jangan pakai drop-shadow gelap — hanya glow aksen.
  • Jangan tumpuk kaca di atas kaca.
  • Jangan pakai teks di bawah 10px.
  • Jangan tambah font/weight di luar Poppins 400/500/600/700.
  • Jangan pakai <table> — data berulang jadi baris kartu.
  • Jangan salin :hover ke file mobile — pakai :active.