363 lines
13 KiB
Markdown
363 lines
13 KiB
Markdown
# Ontwerpsysteem Geïnspireerd door Slack
|
||||
|
|
|
|||
|
|
> Category: Productiviteit & SaaS
|
|||
|
|
> Werkplekcommunicatieplatform. Aubergine als primaire kleur, multi-accentlogo-palet, lichte oppervlakken met donkere zijbalk, warm en toegankelijk.
|
|||
|
|
|
|||
|
|
## 1. Visueel Thema & Sfeer
|
|||
|
|
|
|||
|
|
De identiteit van Slack is gebouwd rond het idee dat werk menselijk moet aanvoelen en zelfs een beetje leuk. Het canonieke oppervlak is **licht** — witte inhoudsgebieden met een diepe aubergine (`#4A154B`) zijbalk — het tegenovergestelde van donker-eerst-tools. Dit contrast is bewust: de zijbalk is een rustig, altijd aanwezig navigatieanker, terwijl het inhoudsgebied helder en open is.
|
|||
|
|
|
|||
|
|
Het logopalet — blauw, groen, geel, rood — verschijnt voornamelijk in het hashtag-icoon en marketingcontexten, niet verspreid door de UI. In het product zelf gebruikt Slack een ingehouden, professioneel kleursysteem met aubergine als enige merkanker.
|
|||
|
|
|
|||
|
|
**Kernkenmerken:**
|
|||
|
|
- Licht-eerst inhoudsoppervlakken: wit `#FFFFFF` en bijna-wit `#F8F8F8`
|
|||
|
|
- Diepe aubergine `#4A154B` zijbalk — het meest herkenbare UI-element van het merk
|
|||
|
|
- Vier logo-accentkleuren (blauw, groen, geel, rood) spaarzaam gebruikt als uitlichting
|
|||
|
|
- Larsseit voor koppen (marketing), systeem sans-serif voor UI
|
|||
|
|
- Afgerond maar niet cartoonesk: 4–8px radius op de meeste componenten
|
|||
|
|
- Compact maar ademend: compacte berichtrijen met duidelijke draadhiërarchie
|
|||
|
|
- Warme en conversationele toon — emoji's, reacties en illustraties zijn eersteklas elementen
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 2. Kleurenpalet & Rollen
|
|||
|
|
|
|||
|
|
### Primaire Merkkleur
|
|||
|
|
| Token | Hex | Rol |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `--color-aubergine` | `#4A154B` | Zijbalkachtergrond, primaire merkkleur |
|
|||
|
|
| `--color-aubergine-dark` | `#350d36` | Hoverstatus op aubergine-oppervlakken |
|
|||
|
|
| `--color-aubergine-light` | `#611f69` | Actief item markering in zijbalk |
|
|||
|
|
|
|||
|
|
### Logo-accentkleuren (spaarzaam gebruiken — alleen voor uitlichting, iconen, marketing)
|
|||
|
|
| Token | Hex | Naam | Rol |
|
|||
|
|
|---|---|---|---|
|
|||
|
|
| `--color-blue` | `#36C5F0` | Hemelsblauw | Kanaalpictogrammen, links, informatiestatussen |
|
|||
|
|
| `--color-green` | `#2EB67D` | Teal groen | Online status, successtatussen |
|
|||
|
|
| `--color-yellow` | `#ECB22E` | Goud | Afwezigheidsstatus, waarschuwingen, uitlichtingen |
|
|||
|
|
| `--color-red` | `#E01E5A` | Robijn | Meldingen, fouten, vermeldingsbadge |
|
|||
|
|
|
|||
|
|
### Oppervlak & Achtergrond
|
|||
|
|
| Token | Hex | Rol |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `--bg-primary` | `#FFFFFF` | Hoofd berichtgebied, modals |
|
|||
|
|
| `--bg-secondary` | `#F8F8F8` | Draadpanelen, secundaire oppervlakken |
|
|||
|
|
| `--bg-tertiary` | `#F1F1F1` | Invoerachtergrondsden, hoverstatus |
|
|||
|
|
| `--bg-sidebar` | `#4A154B` | Linkerzijbalk (aubergine) |
|
|||
|
|
| `--bg-sidebar-hover` | `rgba(255,255,255,0.1)` | Hover zijbalkitem |
|
|||
|
|
| `--bg-sidebar-active` | `rgba(255,255,255,0.2)` | Actief zijbalkitem |
|
|||
|
|
| `--bg-message-hover` | `#F8F8F8` | Hover berichtrij |
|
|||
|
|
|
|||
|
|
### Tekstkleuren
|
|||
|
|
| Token | Hex | Rol |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `--text-primary` | `#1D1C1D` | Primaire inhoudstekst (bijna zwart) |
|
|||
|
|
| `--text-secondary` | `#616061` | Tijdstempels, gedempte labels |
|
|||
|
|
| `--text-sidebar` | `rgba(255,255,255,0.9)` | Kanaalnamen in zijbalk |
|
|||
|
|
| `--text-sidebar-muted` | `rgba(255,255,255,0.6)` | Inactieve zijbalkitems |
|
|||
|
|
| `--text-link` | `#1264A3` | Inlinelinks in berichten |
|
|||
|
|
| `--text-mention` | `#1264A3` | Tekstkleur @vermelding |
|
|||
|
|
|
|||
|
|
### Semantische Kleuren
|
|||
|
|
| Token | Hex | Rol |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `--color-success` | `#2EB67D` | Succestoasts, positieve statussen |
|
|||
|
|
| `--color-warning` | `#ECB22E` | Waarschuwingsstatussen |
|
|||
|
|
| `--color-danger` | `#E01E5A` | Foutstatussen, destructieve acties |
|
|||
|
|
| `--color-info` | `#36C5F0` | Informatieve uitlichtingen |
|
|||
|
|
|
|||
|
|
### Rand & Verdeler
|
|||
|
|
| Token | Hex | Rol |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `--border-default` | `#DDDDDD` | Standaard scheidingslijnen, kaartrandlingen |
|
|||
|
|
| `--border-subtle` | `#F1F1F1` | Subtiele scheidingslijnen tussen rijen |
|
|||
|
|
| `--border-focus` | `#1264A3` | Focusring kleur |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 3. Typografieregels
|
|||
|
|
|
|||
|
|
### Lettertypen
|
|||
|
|
| Rol | Officieel | Web-terugval |
|
|||
|
|
|---|---|---|
|
|||
|
|
| Display / Marketingkoppen | Larsseit | `'Larsseit', 'Helvetica Neue', Arial, sans-serif` |
|
|||
|
|
| UI / Inhoud / Chrome | Slack Lato (aangepast) | `system-ui, -apple-system, BlinkMacSystemFont, sans-serif` |
|
|||
|
|
| Code / Monospace | — | `'Monaco', 'Menlo', 'Courier New', monospace` |
|
|||
|
|
|
|||
|
|
> Slack gebruikt **Larsseit** voor marketingkoppen en een aangepaste Lato-variant voor de UI in het product. Voor webgebruik is `system-ui` de veiligste terugval.
|
|||
|
|
|
|||
|
|
### Typografieschaal
|
|||
|
|
|
|||
|
|
| Niveau | Grootte | Gewicht | Regelhoogte | Letterafstand | Gebruik |
|
|||
|
|
|---|---|---|---|---|---|
|
|||
|
|
| Display XL | 48px | 800 | 1.1 | -1px | Marketing hero-koppen |
|
|||
|
|
| Display L | 36px | 700 | 1.15 | -0.5px | Sectie-hero's |
|
|||
|
|
| Kop 1 | 28px | 700 | 1.25 | normal | Modaltitels, paginakoppen |
|
|||
|
|
| Kop 2 | 22px | 700 | 1.3 | normal | Kaartitels, instellingssecties |
|
|||
|
|
| Kop 3 | 18px | 700 | 1.35 | normal | Subsectiekoppen |
|
|||
|
|
| Inhoud L | 16px | 400 | 1.5 | normal | Berichttekst, beschrijvingen |
|
|||
|
|
| Inhoud | 15px | 400 | 1.46667 | normal | Standaard UI-tekst (basisgrootte van Slack) |
|
|||
|
|
| Inhoud SM | 13px | 400 | 1.38462 | normal | Secundaire metadata |
|
|||
|
|
| Bijschrift | 12px | 400 | 1.33 | normal | Tijdstempels, hints |
|
|||
|
|
| Code | 12px | 400 | 1.5 | normal | Inlinecode, codeblokken |
|
|||
|
|
|
|||
|
|
### Typografieregels
|
|||
|
|
- De basisinhoudsgrootte van Slack is **15px** — iets kleiner dan 16px voor dichtheid
|
|||
|
|
- Ongelezen kanalen: gewicht 700 — vet is de primaire ongelezen indicator
|
|||
|
|
- Tijdstempels: 12px `--text-secondary`, alleen weergeven bij hover
|
|||
|
|
- Codeblokken: achtergrond `#F8F8F8`, rand `1px solid #DDDDDD`, border-radius 4px
|
|||
|
|
- Gebruik nooit lettergroottes onder 12px
|
|||
|
|
- Marketingkoppen: letter-spacing `-1px` voor grote displayformaten
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 4. Componentstijlen
|
|||
|
|
|
|||
|
|
### Knoppen
|
|||
|
|
|
|||
|
|
```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; }
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Invoervelden
|
|||
|
|
```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;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Zijbalkkanaalitem
|
|||
|
|
```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;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Ongelezen Badge
|
|||
|
|
```css
|
|||
|
|
.badge {
|
|||
|
|
background: #E01E5A;
|
|||
|
|
color: #FFFFFF;
|
|||
|
|
border-radius: 8px;
|
|||
|
|
font-size: 11px;
|
|||
|
|
font-weight: 700;
|
|||
|
|
padding: 1px 6px;
|
|||
|
|
min-width: 18px;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Berichtbijlagen / Kaarten
|
|||
|
|
```css
|
|||
|
|
.attachment {
|
|||
|
|
border-left: 4px solid #DDDDDD;
|
|||
|
|
background: #F8F8F8;
|
|||
|
|
border-radius: 0 4px 4px 0;
|
|||
|
|
padding: 8px 12px;
|
|||
|
|
margin: 4px 0;
|
|||
|
|
}
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Reacties
|
|||
|
|
```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. Lay-outprincipes
|
|||
|
|
|
|||
|
|
### Driekolomslay-out
|
|||
|
|
```
|
|||
|
|
┌──────────────┬──────────────────────────────┬─────────────┐
|
|||
|
|
│ Zijbalk │ Berichtgebied │ Draad │
|
|||
|
|
│ (240px) │ (flex: 1) │ (400px) │
|
|||
|
|
│ #4A154B │ #FFFFFF │ optioneel │
|
|||
|
|
└──────────────┴──────────────────────────────┴─────────────┘
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Ruimtesysteem (4px basis)
|
|||
|
|
| Token | Waarde | Gebruik |
|
|||
|
|
|---|---|---|
|
|||
|
|
| `--space-1` | 4px | Nauwe tussenruimtes |
|
|||
|
|
| `--space-2` | 8px | Componentopvulling |
|
|||
|
|
| `--space-3` | 12px | Invoervulling |
|
|||
|
|
| `--space-4` | 16px | Standaardopvulling |
|
|||
|
|
| `--space-6` | 24px | Kaartopvulling |
|
|||
|
|
| `--space-8` | 32px | Sectietussenruimtes |
|
|||
|
|
|
|||
|
|
### Zijbalkstructuur
|
|||
|
|
```
|
|||
|
|
[Werkruimtenaam ▼]
|
|||
|
|
────────────────────
|
|||
|
|
Draden
|
|||
|
|
Alle DM's
|
|||
|
|
Concepten & Verzonden
|
|||
|
|
────────────────────
|
|||
|
|
▼ Kanalen
|
|||
|
|
# general
|
|||
|
|
# random
|
|||
|
|
# design ● (ongelezen)
|
|||
|
|
────────────────────
|
|||
|
|
▼ Directe berichten
|
|||
|
|
John Doe
|
|||
|
|
Jane Smith
|
|||
|
|
```
|
|||
|
|
|
|||
|
|
### Berichtcomponist
|
|||
|
|
- Vastgemaakt aan de onderkant van het berichtgebied
|
|||
|
|
- `border: 1px solid #DDDDDD`, `border-radius: 8px`, `margin: 0 16px 16px`
|
|||
|
|
- Werkbalk: emoji, bijlage, opmaak, verzendknop
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 6. Diepte & Elevatie
|
|||
|
|
|
|||
|
|
Slack gebruikt lichte schaduwen op een licht oppervlak:
|
|||
|
|
|
|||
|
|
| Niveau | Gebruik | Schaduw |
|
|||
|
|
|---|---|---|
|
|||
|
|
| Vlak | Berichtrijen, zijbalkitems | none |
|
|||
|
|
| Laag | Kaarten, invoervelden | `0 1px 3px rgba(0,0,0,0.08)` |
|
|||
|
|
| Midden | Dropdowns, popovers | `0 4px 12px rgba(0,0,0,0.12)` |
|
|||
|
|
| Hoog | Modals, dialoogvensters | `0 8px 24px rgba(0,0,0,0.15)` |
|
|||
|
|
| Overlay | Modalachtergronden | `rgba(0,0,0,0.5)` |
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 7. Aanbevelingen & Waarschuwingen
|
|||
|
|
|
|||
|
|
### ✅ Doe Dit
|
|||
|
|
- Gebruik aubergine `#4A154B` voor de zijbalk — dit is het meest iconische UI-element van Slack
|
|||
|
|
- Houd het hoofdinhoudsgebied wit en licht
|
|||
|
|
- Gebruik `#1D1C1D` (bijna zwart) voor alle inhoudstekst, niet puur zwart
|
|||
|
|
- Maak kanaalnamen vet om de ongelezen status te tonen — gewicht is de indicator
|
|||
|
|
- Gebruik de vier accentkleuren alleen voor semantische rollen (succes, waarschuwing, gevaar, informatie)
|
|||
|
|
- Pas `border-left: 4px` toe op berichtbijlagen en ingesloten elementen
|
|||
|
|
- Toon tijdstempels alleen bij hover
|
|||
|
|
- Gebruik `#1264A3` voor links en focusstatussen
|
|||
|
|
- Houd zijbalkitems compact: 28px hoogte, 6px border-radius
|
|||
|
|
|
|||
|
|
### ❌ Doe Dit Niet
|
|||
|
|
- Gebruik geen donker hoofdinhoudsgebied — Slack is licht-eerst
|
|||
|
|
- Verspreid blauw/groen/geel/rood niet als decoratieve accenten
|
|||
|
|
- Gebruik geen puur zwart `#000000` voor tekst
|
|||
|
|
- Gebruik geen tekstballonnen — berichten zijn platte rijen
|
|||
|
|
- Maak knoppen niet groot-radius — 4px is standaard
|
|||
|
|
- Toon tijdstempels niet permanent
|
|||
|
|
- Gebruik geen HOOFDLETTERS voor kanaalnamen
|
|||
|
|
- Gebruik geen lettergroottes onder 12px
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 8. Responsief Gedrag
|
|||
|
|
|
|||
|
|
### Breekpunten
|
|||
|
|
| Breekpunt | Breedte | Lay-out |
|
|||
|
|
|---|---|---|
|
|||
|
|
| Mobiel | < 768px | Enkel paneel, zijbalk als linkerpaneel |
|
|||
|
|
| Tablet | 768–1024px | Alleen zijbalk + berichtgebied |
|
|||
|
|
| Desktop | > 1024px | Volledige driekolomslay-out |
|
|||
|
|
|
|||
|
|
### Mobiele Aanpassingen
|
|||
|
|
- Zijbalk: linkerpaneel, veeg naar rechts om te openen
|
|||
|
|
- Onderste tabbalk: Start, DM's, Activiteit, Jij
|
|||
|
|
- Draadpaneel: volledig-scherm overlay
|
|||
|
|
- Componist: vastgemaakt boven toetsenbord
|
|||
|
|
- Kanalenlijstitems: 44px aanraakvlak hoogte
|
|||
|
|
- Aubergine bovenste headerbalk behouden op mobiel
|
|||
|
|
|
|||
|
|
---
|
|||
|
|
|
|||
|
|
## 9. Agentpromptgids
|
|||
|
|
|
|||
|
|
Bij het genereren van Slack-stijl ontwerpen, volg deze aanpak:
|
|||
|
|
|
|||
|
|
**Kleurtoepassing:**
|
|||
|
|
> Stel `background: #FFFFFF` in als het hoofdcanvas. Gebruik `#4A154B` (aubergine) voor de zijbalk. Alle primaire tekst is `#1D1C1D`. Links en focusringen gebruiken `#1264A3`. De vier logokleuren — `#36C5F0`, `#2EB67D`, `#ECB22E`, `#E01E5A` — zijn uitsluitend semantisch: informatie, succes, waarschuwing, gevaar.
|
|||
|
|
|
|||
|
|
**Typografie:**
|
|||
|
|
> Gebruik `system-ui, -apple-system, sans-serif` voor alle UI. Basisgrootte is 15px. Ongelezen kanalen: gewicht 700. Inhoudstekst: gewicht 400. Tijdstempels: 12px `#616061`, alleen bij hover. Code: `Monaco, Menlo, monospace`, 12px, achtergrond `#F8F8F8`.
|
|||
|
|
|
|||
|
|
**Lay-out:**
|
|||
|
|
> Drie kolommen: aubergine zijbalk 240px + flexibel wit berichtgebied + optioneel draadpaneel 400px. Zijbalkitems: 28px hoogte, 6px radius, vet wanneer ongelezen. Componist: vastgemaakt onderaan, `border: 1px solid #DDDDDD`, `border-radius: 8px`.
|
|||
|
|
|
|||
|
|
**Componenten:**
|
|||
|
|
> Knoppen: 4px radius, 36px hoogte, aubergine primair. Invoervelden: rand `1px solid #DDDDDD`, focusring `#1264A3`. Berichtrijen: plat, geen tekstballonnen, cirkelavatar 36px. Reacties: pill `border: 1px solid #DDDDDD`, `border-radius: 24px`.
|
|||
|
|
|
|||
|
|
**Toon:**
|
|||
|
|
> Slack is warm, professioneel en menselijk. Lege staten gebruiken vriendelijke illustraties. CTA's zijn direct: "Stuur bericht", "Aan de slag". Foutmeldingen zijn duidelijk en behulpzaam. Nooit alarmerend.
|
|||
|
|
|
|||
|
|
**Te vermijden antipatronen:**
|
|||
|
|
> Geen donker inhoudsgebied. Geen tekstballonnen. Geen puur zwarte tekst. Geen verspreide meerkleurige accenten. Geen HOOFDLETTERS in kanaalnamen. Geen lettertype onder 12px. Geen grote knopradius.
|