# Design System Inspired by Slack > Category: Productivity & SaaS > Workplace communication platform. Aubergine-primary, multi-accent logo palette, light surfaces with dark sidebar, warm and approachable. ## 1. Visual Theme & Atmosphere Slack's identity is built around the idea that work should feel human and even a little fun. The canonical surface is **light** — white content areas with a deep aubergine (`#4A154B`) sidebar — the inverse of dark-first tools. This contrast is intentional: the sidebar is a calm, always-present navigation anchor, while the content area is bright and open. The logo palette — blue, green, yellow, red — appears primarily in the hashtag icon and marketing contexts, not scattered through the UI. In the product itself, Slack uses a restrained, professional color system with aubergine as the sole brand anchor. **Key Characteristics:** - Light-first content surfaces: white `#FFFFFF` and near-white `#F8F8F8` - Deep aubergine `#4A154B` sidebar — the brand's most recognizable UI element - Four logo accent colors (blue, green, yellow, red) used sparingly as highlights only - Larsseit for headings (marketing), system sans-serif for UI - Rounded but not cartoonish: 4–8px radius on most components - Dense but breathable: compact message rows with clear thread hierarchy - Warm and conversational tone — emojis, reactions, and illustrations are first-class --- ## 2. Color Palette & Roles ### Brand Primary | Token | Hex | Role | |---|---|---| | `--color-aubergine` | `#4A154B` | Sidebar background, primary brand color | | `--color-aubergine-dark` | `#350d36` | Hover states on aubergine surfaces | | `--color-aubergine-light` | `#611f69` | Active item highlight in sidebar | ### Logo Accent Colors (use sparingly — highlights, icons, marketing only) | Token | Hex | Name | Role | |---|---|---|---| | `--color-blue` | `#36C5F0` | Sky Blue | Channel icons, links, info states | | `--color-green` | `#2EB67D` | Teal Green | Online status, success states | | `--color-yellow` | `#ECB22E` | Gold | Away status, warnings, highlights | | `--color-red` | `#E01E5A` | Ruby | Notifications, errors, mentions badge | ### Surface & Background | Token | Hex | Role | |---|---|---| | `--bg-primary` | `#FFFFFF` | Main message area, modals | | `--bg-secondary` | `#F8F8F8` | Thread panels, secondary surfaces | | `--bg-tertiary` | `#F1F1F1` | Input backgrounds, hover states | | `--bg-sidebar` | `#4A154B` | Left sidebar (aubergine) | | `--bg-sidebar-hover` | `rgba(255,255,255,0.1)` | Sidebar item hover | | `--bg-sidebar-active` | `rgba(255,255,255,0.2)` | Active sidebar item | | `--bg-message-hover` | `#F8F8F8` | Message row hover | ### Text Colors | Token | Hex | Role | |---|---|---| | `--text-primary` | `#1D1C1D` | Primary body text (near-black) | | `--text-secondary` | `#616061` | Timestamps, muted labels | | `--text-sidebar` | `rgba(255,255,255,0.9)` | Sidebar channel names | | `--text-sidebar-muted` | `rgba(255,255,255,0.6)` | Sidebar inactive items | | `--text-link` | `#1264A3` | Inline links in messages | | `--text-mention` | `#1264A3` | @mention text color | ### Semantic Colors | Token | Hex | Role | |---|---|---| | `--color-success` | `#2EB67D` | Success toasts, positive states | | `--color-warning` | `#ECB22E` | Warning states | | `--color-danger` | `#E01E5A` | Error states, destructive actions | | `--color-info` | `#36C5F0` | Informational highlights | ### Border & Divider | Token | Hex | Role | |---|---|---| | `--border-default` | `#DDDDDD` | Standard dividers, card borders | | `--border-subtle` | `#F1F1F1` | Subtle separators between rows | | `--border-focus` | `#1264A3` | Focus ring color | --- ## 3. Typography Rules ### Typefaces | Role | Official | Web Fallback | |---|---|---| | Display / Marketing Headings | Larsseit | `'Larsseit', 'Helvetica Neue', Arial, sans-serif` | | UI / Body / Chrome | Slack Lato (custom) | `system-ui, -apple-system, BlinkMacSystemFont, sans-serif` | | Code / Monospace | — | `'Monaco', 'Menlo', 'Courier New', monospace` | > Slack uses **Larsseit** for marketing headlines and a custom Lato variant for in-product UI. For web use, `system-ui` is the safest fallback. ### Type Scale | Level | Size | Weight | Line Height | Letter Spacing | Usage | |---|---|---|---|---|---| | Display XL | 48px | 800 | 1.1 | -1px | Marketing hero headlines | | Display L | 36px | 700 | 1.15 | -0.5px | Section heroes | | Heading 1 | 28px | 700 | 1.25 | normal | Modal titles, page headers | | Heading 2 | 22px | 700 | 1.3 | normal | Card titles, settings sections | | Heading 3 | 18px | 700 | 1.35 | normal | Sub-section headers | | Body L | 16px | 400 | 1.5 | normal | Message text, descriptions | | Body | 15px | 400 | 1.46667 | normal | Default UI text (Slack's base size) | | Body SM | 13px | 400 | 1.38462 | normal | Secondary metadata | | Caption | 12px | 400 | 1.33 | normal | Timestamps, hints | | Code | 12px | 400 | 1.5 | normal | Inline code, code blocks | ### Type Rules - Slack's base body size is **15px** — slightly smaller than 16px for density - Unread channels: weight 700 — bold is the primary unread indicator - Timestamps: 12px `--text-secondary`, show on hover only - Code blocks: background `#F8F8F8`, border `1px solid #DDDDDD`, border-radius 4px - Never use font sizes below 12px - Marketing headings: letter-spacing `-1px` for large display sizes --- ## 4. Component Stylings ### Buttons ```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; } ``` ### Input Fields ```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; } ``` ### Sidebar Channel Item ```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; } ``` ### Unread Badge ```css .badge { background: #E01E5A; color: #FFFFFF; border-radius: 8px; font-size: 11px; font-weight: 700; padding: 1px 6px; min-width: 18px; } ``` ### Message Attachments / Cards ```css .attachment { border-left: 4px solid #DDDDDD; background: #F8F8F8; border-radius: 0 4px 4px 0; padding: 8px 12px; margin: 4px 0; } ``` ### Reactions ```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. Layout Principles ### Three-Column Layout ``` ┌──────────────┬──────────────────────────────┬─────────────┐ │ Sidebar │ Message Area │ Thread │ │ (240px) │ (flex: 1) │ (400px) │ │ #4A154B │ #FFFFFF │ optional │ └──────────────┴──────────────────────────────┴─────────────┘ ``` ### Spacing System (4px base) | Token | Value | Usage | |---|---|---| | `--space-1` | 4px | Tight gaps | | `--space-2` | 8px | Component padding | | `--space-3` | 12px | Input padding | | `--space-4` | 16px | Standard padding | | `--space-6` | 24px | Card padding | | `--space-8` | 32px | Section gaps | ### Sidebar Structure ``` [Workspace Name ▼] ──────────────────── Threads All DMs Drafts & Sent ──────────────────── ▼ Channels # general # random # design ● (unread) ──────────────────── ▼ Direct Messages John Doe Jane Smith ``` ### Message Composer - Pinned to bottom of message area - `border: 1px solid #DDDDDD`, `border-radius: 8px`, `margin: 0 16px 16px` - Toolbar: emoji, attach, format, send button --- ## 6. Depth & Elevation Slack uses light shadows on a light surface: | Level | Usage | Shadow | |---|---|---| | Flat | Message rows, sidebar items | none | | Low | Cards, inputs | `0 1px 3px rgba(0,0,0,0.08)` | | Medium | Dropdowns, popovers | `0 4px 12px rgba(0,0,0,0.12)` | | High | Modals, dialogs | `0 8px 24px rgba(0,0,0,0.15)` | | Overlay | Modal backdrops | `rgba(0,0,0,0.5)` | --- ## 7. Do's and Don'ts ### ✅ Do - Use aubergine `#4A154B` for the sidebar — it is Slack's most iconic UI element - Keep the main content area white and light - Use `#1D1C1D` (near-black) for all body text, not pure black - Bold channel names to show unread status — weight is the indicator - Use the four accent colors only for semantic roles (success, warning, danger, info) - Apply `border-left: 4px` on message attachments and embeds - Show timestamps on hover only - Use `#1264A3` for links and focus states - Keep sidebar items compact: 28px height, 6px border-radius ### ❌ Don't - Don't use a dark main content area — Slack is light-first - Don't scatter blue/green/yellow/red as decorative accents - Don't use pure black `#000000` for text - Don't use speech bubbles — messages are flat rows - Don't make buttons large-radius — 4px is standard - Don't show timestamps permanently - Don't use ALL CAPS for channel names - Don't use font sizes below 12px --- ## 8. Responsive Behavior ### Breakpoints | Breakpoint | Width | Layout | |---|---|---| | Mobile | < 768px | Single panel, sidebar as left drawer | | Tablet | 768–1024px | Sidebar + message area only | | Desktop | > 1024px | Full three-column layout | ### Mobile Adaptations - Sidebar: left drawer, swipe right to open - Bottom tab bar: Home, DMs, Activity, You - Thread panel: full-screen overlay - Composer: pinned above keyboard - Channel list items: 44px touch target height - Aubergine top header bar retained on mobile --- ## 9. Agent Prompt Guide When generating Slack-styled designs, follow this approach: **Color application:** > Set `background: #FFFFFF` as the main canvas. Use `#4A154B` (aubergine) for the sidebar. All primary text is `#1D1C1D`. Links and focus rings use `#1264A3`. The four logo colors — `#36C5F0`, `#2EB67D`, `#ECB22E`, `#E01E5A` — are semantic only: info, success, warning, danger. **Typography:** > Use `system-ui, -apple-system, sans-serif` for all UI. Base size is 15px. Unread channels: weight 700. Body text: weight 400. Timestamps: 12px `#616061`, hover-only. Code: `Monaco, Menlo, monospace`, 12px, `#F8F8F8` background. **Layout:** > Three columns: 240px aubergine sidebar + flex white message area + optional 400px thread panel. Sidebar items: 28px height, 6px radius, bold when unread. Composer: pinned bottom, `border: 1px solid #DDDDDD`, `border-radius: 8px`. **Components:** > Buttons: 4px radius, 36px height, aubergine primary. Inputs: `1px solid #DDDDDD` border, `#1264A3` focus ring. Message rows: flat, no bubbles, 36px circle avatar. Reactions: pill `border: 1px solid #DDDDDD`, `border-radius: 24px`. **Tone:** > Slack is warm, professional, and human. Empty states use friendly illustrations. CTAs are direct: "Send message", "Get started". Error messages are clear and helpful. Never alarming. **Anti-patterns to avoid:** > No dark content area. No speech bubbles. No pure black text. No scattered multi-color accents. No ALL CAPS channel names. No font below 12px. No large button radius.