Files
workbuddy_skills/open-design/design-systems/slack/DESIGN-id.md
T

363 lines
13 KiB
Markdown
Raw Normal View History

# Sistem Desain Terinspirasi Slack
> Category: Produktivitas & SaaS
> Platform komunikasi tempat kerja. Warna utama aubergine, palet logo multi-aksen, permukaan terang dengan sidebar gelap, hangat dan mudah didekati.
## 1. Tema Visual & Suasana
Identitas Slack dibangun di sekitar gagasan bahwa pekerjaan harus terasa manusiawi dan bahkan sedikit menyenangkan. Permukaan kanonik adalah **terang** — area konten putih dengan sidebar aubergine dalam (`#4A154B`) — kebalikan dari alat yang mengutamakan tema gelap. Kontras ini disengaja: sidebar adalah jangkar navigasi yang tenang dan selalu hadir, sementara area konten cerah dan terbuka.
Palet logo — biru, hijau, kuning, merah — muncul terutama pada ikon tagar dan konteks pemasaran, tidak tersebar di seluruh UI. Dalam produk itu sendiri, Slack menggunakan sistem warna yang terkendali dan profesional dengan aubergine sebagai satu-satunya jangkar merek.
**Karakteristik Utama:**
- Permukaan konten mengutamakan terang: putih `#FFFFFF` dan hampir putih `#F8F8F8`
- Sidebar aubergine dalam `#4A154B` — elemen UI merek yang paling mudah dikenali
- Empat warna aksen logo (biru, hijau, kuning, merah) digunakan hemat hanya sebagai sorotan
- Larsseit untuk judul (pemasaran), system sans-serif untuk UI
- Melengkung tapi tidak kartun: radius 4–8px pada sebagian besar komponen
- Padat tapi bisa bernapas: baris pesan yang ringkas dengan hierarki utas yang jelas
- Nada hangat dan percakapan — emoji, reaksi, dan ilustrasi adalah elemen kelas satu
---
## 2. Palet Warna & Peran
### Warna Utama Merek
| Token | Hex | Peran |
|---|---|---|
| `--color-aubergine` | `#4A154B` | Latar belakang sidebar, warna merek utama |
| `--color-aubergine-dark` | `#350d36` | Status hover pada permukaan aubergine |
| `--color-aubergine-light` | `#611f69` | Sorotan item aktif di sidebar |
### Warna Aksen Logo (gunakan hemat — hanya untuk sorotan, ikon, pemasaran)
| Token | Hex | Nama | Peran |
|---|---|---|---|
| `--color-blue` | `#36C5F0` | Biru Langit | Ikon saluran, tautan, status informasi |
| `--color-green` | `#2EB67D` | Hijau Teal | Status online, status sukses |
| `--color-yellow` | `#ECB22E` | Emas | Status tidak ada, peringatan, sorotan |
| `--color-red` | `#E01E5A` | Ruby | Notifikasi, kesalahan, lencana sebutan |
### Permukaan & Latar Belakang
| Token | Hex | Peran |
|---|---|---|
| `--bg-primary` | `#FFFFFF` | Area pesan utama, modal |
| `--bg-secondary` | `#F8F8F8` | Panel utas, permukaan sekunder |
| `--bg-tertiary` | `#F1F1F1` | Latar belakang input, status hover |
| `--bg-sidebar` | `#4A154B` | Sidebar kiri (aubergine) |
| `--bg-sidebar-hover` | `rgba(255,255,255,0.1)` | Hover item sidebar |
| `--bg-sidebar-active` | `rgba(255,255,255,0.2)` | Item sidebar aktif |
| `--bg-message-hover` | `#F8F8F8` | Hover baris pesan |
### Warna Teks
| Token | Hex | Peran |
|---|---|---|
| `--text-primary` | `#1D1C1D` | Teks konten utama (hampir hitam) |
| `--text-secondary` | `#616061` | Cap waktu, label diredam |
| `--text-sidebar` | `rgba(255,255,255,0.9)` | Nama saluran di sidebar |
| `--text-sidebar-muted` | `rgba(255,255,255,0.6)` | Item sidebar tidak aktif |
| `--text-link` | `#1264A3` | Tautan inline dalam pesan |
| `--text-mention` | `#1264A3` | Warna teks @sebutan |
### Warna Semantik
| Token | Hex | Peran |
|---|---|---|
| `--color-success` | `#2EB67D` | Toast sukses, status positif |
| `--color-warning` | `#ECB22E` | Status peringatan |
| `--color-danger` | `#E01E5A` | Status kesalahan, aksi destruktif |
| `--color-info` | `#36C5F0` | Sorotan informasional |
### Batas & Pemisah
| Token | Hex | Peran |
|---|---|---|
| `--border-default` | `#DDDDDD` | Pemisah standar, batas kartu |
| `--border-subtle` | `#F1F1F1` | Pemisah halus antar baris |
| `--border-focus` | `#1264A3` | Warna cincin fokus |
---
## 3. Aturan Tipografi
### Jenis Huruf
| Peran | Resmi | Fallback Web |
|---|---|---|
| Judul Display / Pemasaran | Larsseit | `'Larsseit', 'Helvetica Neue', Arial, sans-serif` |
| UI / Konten / Chrome | Slack Lato (kustom) | `system-ui, -apple-system, BlinkMacSystemFont, sans-serif` |
| Kode / Monospace | — | `'Monaco', 'Menlo', 'Courier New', monospace` |
> Slack menggunakan **Larsseit** untuk judul pemasaran dan varian Lato kustom untuk UI dalam produk. Untuk penggunaan web, `system-ui` adalah fallback yang paling aman.
### Skala Tipografi
| Tingkat | Ukuran | Bobot | Tinggi Baris | Spasi Huruf | Penggunaan |
|---|---|---|---|---|---|
| Display XL | 48px | 800 | 1.1 | -1px | Judul hero pemasaran |
| Display L | 36px | 700 | 1.15 | -0.5px | Hero seksi |
| Judul 1 | 28px | 700 | 1.25 | normal | Judul modal, header halaman |
| Judul 2 | 22px | 700 | 1.3 | normal | Judul kartu, seksi pengaturan |
| Judul 3 | 18px | 700 | 1.35 | normal | Header sub-seksi |
| Konten L | 16px | 400 | 1.5 | normal | Teks pesan, deskripsi |
| Konten | 15px | 400 | 1.46667 | normal | Teks UI default (ukuran dasar Slack) |
| Konten SM | 13px | 400 | 1.38462 | normal | Metadata sekunder |
| Keterangan | 12px | 400 | 1.33 | normal | Cap waktu, petunjuk |
| Kode | 12px | 400 | 1.5 | normal | Kode inline, blok kode |
### Aturan Tipografi
- Ukuran konten dasar Slack adalah **15px** — sedikit lebih kecil dari 16px untuk kepadatan
- Saluran belum dibaca: bobot 700 — tebal adalah indikator belum dibaca utama
- Cap waktu: 12px `--text-secondary`, tampilkan saat hover saja
- Blok kode: latar belakang `#F8F8F8`, batas `1px solid #DDDDDD`, border-radius 4px
- Jangan pernah menggunakan ukuran font di bawah 12px
- Judul pemasaran: letter-spacing `-1px` untuk ukuran display besar
---
## 4. Gaya Komponen
### Tombol
```css
/* Primary */
.btn-primary {
background: #4A154B;
color: #FFFFFF;
border-radius: 4px;
padding: 0 16px;
height: 36px;
font-size: 15px;
font-weight: 700;
border: none;
}
.btn-primary:hover { background: #611f69; }
/* Secondary */
.btn-secondary {
background: #FFFFFF;
color: #1D1C1D;
border: 1px solid #DDDDDD;
border-radius: 4px;
padding: 0 16px;
height: 36px;
font-size: 15px;
font-weight: 700;
}
.btn-secondary:hover { background: #F8F8F8; }
/* Danger */
.btn-danger {
background: #E01E5A;
color: #FFFFFF;
border-radius: 4px;
}
.btn-danger:hover { background: #B3114A; }
```
### Bidang Input
```css
.input {
background: #FFFFFF;
border: 1px solid #DDDDDD;
border-radius: 4px;
color: #1D1C1D;
font-size: 15px;
padding: 8px 12px;
height: 36px;
}
.input:focus {
border-color: #1264A3;
box-shadow: 0 0 0 2px rgba(18,100,163,0.25);
outline: none;
}
```
### Item Saluran Sidebar
```css
.channel-item {
height: 28px;
padding: 0 16px;
border-radius: 6px;
color: rgba(255,255,255,0.7);
font-size: 15px;
font-weight: 400;
}
.channel-item:hover {
background: rgba(255,255,255,0.1);
color: #FFFFFF;
}
.channel-item.active {
background: rgba(255,255,255,0.2);
color: #FFFFFF;
}
.channel-item.unread {
color: #FFFFFF;
font-weight: 700;
}
```
### Lencana Belum Dibaca
```css
.badge {
background: #E01E5A;
color: #FFFFFF;
border-radius: 8px;
font-size: 11px;
font-weight: 700;
padding: 1px 6px;
min-width: 18px;
}
```
### Lampiran Pesan / Kartu
```css
.attachment {
border-left: 4px solid #DDDDDD;
background: #F8F8F8;
border-radius: 0 4px 4px 0;
padding: 8px 12px;
margin: 4px 0;
}
```
### Reaksi
```css
.reaction {
border: 1px solid #DDDDDD;
border-radius: 24px;
background: #F8F8F8;
padding: 2px 8px;
font-size: 13px;
cursor: pointer;
}
.reaction:hover { background: #F1F1F1; }
.reaction.active {
background: rgba(18,100,163,0.1);
border-color: #1264A3;
}
```
---
## 5. Prinsip Tata Letak
### Tata Letak Tiga Kolom
```
┌──────────────┬──────────────────────────────┬─────────────┐
│ Sidebar │ Area Pesan │ Utas │
│ (240px) │ (flex: 1) │ (400px) │
│ #4A154B │ #FFFFFF │ opsional │
└──────────────┴──────────────────────────────┴─────────────┘
```
### Sistem Spasi (dasar 4px)
| Token | Nilai | Penggunaan |
|---|---|---|
| `--space-1` | 4px | Celah rapat |
| `--space-2` | 8px | Padding komponen |
| `--space-3` | 12px | Padding input |
| `--space-4` | 16px | Padding standar |
| `--space-6` | 24px | Padding kartu |
| `--space-8` | 32px | Celah seksi |
### Struktur Sidebar
```
[Nama Ruang Kerja ▼]
────────────────────
Utas
Semua DM
Draf & Terkirim
────────────────────
▼ Saluran
# general
# random
# design ● (belum dibaca)
────────────────────
▼ Pesan Langsung
John Doe
Jane Smith
```
### Komposer Pesan
- Disematkan di bagian bawah area pesan
- `border: 1px solid #DDDDDD`, `border-radius: 8px`, `margin: 0 16px 16px`
- Toolbar: emoji, lampirkan, format, tombol kirim
---
## 6. Kedalaman & Elevasi
Slack menggunakan bayangan ringan pada permukaan terang:
| Tingkat | Penggunaan | Bayangan |
|---|---|---|
| Datar | Baris pesan, item sidebar | none |
| Rendah | Kartu, input | `0 1px 3px rgba(0,0,0,0.08)` |
| Sedang | Dropdown, popover | `0 4px 12px rgba(0,0,0,0.12)` |
| Tinggi | Modal, dialog | `0 8px 24px rgba(0,0,0,0.15)` |
| Overlay | Latar belakang modal | `rgba(0,0,0,0.5)` |
---
## 7. Yang Harus & Tidak Boleh Dilakukan
### ✅ Lakukan
- Gunakan aubergine `#4A154B` untuk sidebar — ini adalah elemen UI paling ikonik Slack
- Jaga area konten utama tetap putih dan terang
- Gunakan `#1D1C1D` (hampir hitam) untuk semua teks konten, bukan hitam murni
- Tebalkan nama saluran untuk menunjukkan status belum dibaca — bobot adalah indikatornya
- Gunakan empat warna aksen hanya untuk peran semantik (sukses, peringatan, bahaya, informasi)
- Terapkan `border-left: 4px` pada lampiran pesan dan embed
- Tampilkan cap waktu hanya saat hover
- Gunakan `#1264A3` untuk tautan dan status fokus
- Jaga item sidebar tetap ringkas: tinggi 28px, border-radius 6px
### ❌ Jangan
- Jangan gunakan area konten utama yang gelap — Slack mengutamakan terang
- Jangan menyebarkan biru/hijau/kuning/merah sebagai aksen dekoratif
- Jangan gunakan hitam murni `#000000` untuk teks
- Jangan gunakan balon percakapan — pesan adalah baris datar
- Jangan buat tombol dengan radius besar — 4px adalah standar
- Jangan tampilkan cap waktu secara permanen
- Jangan gunakan HURUF KAPITAL untuk nama saluran
- Jangan gunakan ukuran font di bawah 12px
---
## 8. Perilaku Responsif
### Titik Henti
| Titik Henti | Lebar | Tata Letak |
|---|---|---|
| Mobile | < 768px | Panel tunggal, sidebar sebagai laci kiri |
| Tablet | 768–1024px | Hanya sidebar + area pesan |
| Desktop | > 1024px | Tata letak tiga kolom penuh |
### Adaptasi Mobile
- Sidebar: laci kiri, geser kanan untuk membuka
- Tab bar bawah: Beranda, DM, Aktivitas, Anda
- Panel utas: overlay layar penuh
- Komposer: disematkan di atas keyboard
- Item daftar saluran: tinggi area sentuh 44px
- Header aubergine atas dipertahankan di mobile
---
## 9. Panduan Prompt Agent
Saat membuat desain bergaya Slack, ikuti pendekatan ini:
**Penerapan warna:**
> Atur `background: #FFFFFF` sebagai kanvas utama. Gunakan `#4A154B` (aubergine) untuk sidebar. Semua teks utama adalah `#1D1C1D`. Tautan dan cincin fokus menggunakan `#1264A3`. Empat warna logo — `#36C5F0`, `#2EB67D`, `#ECB22E`, `#E01E5A` — bersifat semantik saja: informasi, sukses, peringatan, bahaya.
**Tipografi:**
> Gunakan `system-ui, -apple-system, sans-serif` untuk semua UI. Ukuran dasar adalah 15px. Saluran belum dibaca: bobot 700. Teks konten: bobot 400. Cap waktu: 12px `#616061`, hanya saat hover. Kode: `Monaco, Menlo, monospace`, 12px, latar belakang `#F8F8F8`.
**Tata letak:**
> Tiga kolom: sidebar aubergine 240px + area pesan putih fleksibel + panel utas 400px opsional. Item sidebar: tinggi 28px, radius 6px, tebal saat belum dibaca. Komposer: disematkan di bawah, `border: 1px solid #DDDDDD`, `border-radius: 8px`.
**Komponen:**
> Tombol: radius 4px, tinggi 36px, aubergine sebagai utama. Input: batas `1px solid #DDDDDD`, cincin fokus `#1264A3`. Baris pesan: datar, tanpa balon, avatar lingkaran 36px. Reaksi: pill `border: 1px solid #DDDDDD`, `border-radius: 24px`.
**Nada:**
> Slack hangat, profesional, dan manusiawi. Status kosong menggunakan ilustrasi yang ramah. CTA langsung: "Kirim pesan", "Mulai". Pesan kesalahan jelas dan membantu. Tidak pernah mengkhawatirkan.
**Anti-pola yang harus dihindari:**
> Tidak ada area konten gelap. Tidak ada balon percakapan. Tidak ada teks hitam murni. Tidak ada aksen multi-warna yang tersebar. Tidak ada nama saluran dengan HURUF KAPITAL. Tidak ada font di bawah 12px. Tidak ada radius tombol yang besar.