๐จ UI/UX Design
Dark Theme, Hip-Hop Aesthetic, Professional Workflow
๐ฏ Design Philosophy
FlowState's UI combines professional DAW conventions with a modern, hip-hop aesthetic. Dark theme reduces eye strain during long sessions, while vibrant accents guide attention.
Core Principles: Familiar to DAW users, optimized for beatmaking, AI features integrated naturally (not intrusive).
๐จ Color System
| Role | Color | Hex | Usage |
|---|---|---|---|
| Background Primary | โ | #0F172A | Main background |
| Background Secondary | โ | #1E293B | Panels, cards |
| Background Tertiary | โ | #334155 | Inputs, hover states |
| Accent Primary | โ | #06B6D4 | Buttons, links, focus |
| Accent Hot | โ | #F43F5E | Recording, alerts |
| Success | โ | #10B981 | Positive actions |
| Warning | โ | #F59E0B | Caution states |
| Text Primary | โ | #F1F5F9 | Main text |
| Text Secondary | โ | #94A3B8 | Labels, muted text |
Track Colors
Each track gets a distinct color for visual differentiation.
const TRACK_COLORS = [
'#06B6D4', // Cyan
'#8B5CF6', // Purple
'#F43F5E', // Rose
'#10B981', // Emerald
'#F59E0B', // Amber
'#EC4899', // Pink
'#3B82F6', // Blue
'#EF4444', // Red
];
๐ Typography
| Element | Font | Size | Weight |
|---|---|---|---|
| Headers | Inter | 24-32px | 700 |
| Body | Inter | 14-16px | 400 |
| Labels | Inter | 11-12px | 500 |
| Code/Values | JetBrains Mono | 12-14px | 400 |
| Time Display | JetBrains Mono | 18-24px | 500 |
๐ผ๏ธ Layout Structure
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [โก] FlowState ๐ -12dB [โถ] [โ ] [โ] BPM: 90 โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ โ
โ [1] โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Drums โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ [2] โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Bass โ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ [3] โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ Melodyโ โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ โ
โ โโโโโโโ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ
โ + โ โผ (playhead) โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [๐น Drum Pads] [๐ Samples] [๐๏ธ Mixer] [๐ฌ AI Chat] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Panel Layout
| Panel | Position | Resizable | Collapsible |
|---|---|---|---|
| Transport Bar | Top | No | No |
| Track List | Left | Yes (width) | No |
| Timeline | Center | Fills remaining | No |
| Bottom Panel | Bottom | Yes (height) | Yes |
| AI Chat | Right (overlay) | No | Yes (toggle) |
๐น Key Components
1. Transport Controls
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [โฎ] [โถ๏ธ PLAY] [โน STOP] [โบ REC] โ 00:32:14 โ ๐ Loop โ
โ โ 1.2.1 โ 4 bars โ
โ โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ โ 90 BPM โ 4/4 โ
โ (timeline scrubber) โ F minor โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
2. Track Header
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ [๐] [S] โ 1. Drums โ โโโโโโโโ โ
โ mute solo โ name โ meter โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
3. Drum Pads (MPC-Style)
โโโโโโโฌโโโโโโฌโโโโโโฌโโโโโโ
โ PAD โ PAD โ PAD โ PAD โ Bank A
โ 1 โ 2 โ 3 โ 4 โ
โโโโโโโผโโโโโโผโโโโโโผโโโโโโค
โ PAD โ PAD โ PAD โ PAD โ
โ 5 โ 6 โ 7 โ 8 โ
โโโโโโโผโโโโโโผโโโโโโผโโโโโโค
โ PAD โ PAD โ PAD โ PAD โ
โ 9 โ 10 โ 11 โ 12 โ
โโโโโโโผโโโโโโผโโโโโโผโโโโโโค
โ PAD โ PAD โ PAD โ PAD โ
โ 13 โ 14 โ 15 โ 16 โ
โโโโโโโดโโโโโโดโโโโโโดโโโโโโ
4. Step Sequencer
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
โโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโฌโโโโ
๐ฅ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ Kick
โโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโค
๐ช โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ Snare
โโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโผโโโโค
๐ฉ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ โ Hat
โโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโดโโโโ
5. Mixer Channel
โโโโโโโโโโโโโโโโโ
โ [FX+] โ Effects slot
โโโโโโโโโโโโโโโโโค
โ โ
โ โ โ
โ โ โ Fader
โ โ โ
โ โ โ
โ โ
โโโโโโโโโโโโโโโโโค
โ โโโโโโโโโโโโถ โ Pan
โโโโโโโโโโโโโโโโโค
โ [M] [S] โ Mute/Solo
โโโโโโโโโโโโโโโโโค
โ DRUMS โ Track name
โ -6dB โ Level
โโโโโโโโโโโโโโโโโ
๐ฌ AI Chat Interface
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ ๐ค FlowState AI [โ] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ โ
โ ๐ง "Make the snare punchier" โ
โ โ
โ ๐ค I've added a transient โ
โ shaper to Track 2 with: โ
โ โข Attack: +4dB โ
โ โข Release: 50ms โ
โ [Undo] [Adjust] โ
โ โ
โ ๐ง "Find me a dark 808" โ
โ โ
โ ๐ค Here are 5 matching samples: โ
โ [โถ] 808-dark-sub.wav โ
โ [โถ] 808-distorted.wav โ
โ [โถ] 808-deep-hit.wav โ
โ [Add to track] [More] โ
โ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโค
โ [๐ค] Type or speak... [โค] โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
Chat Features
- Voice Input: Click mic to speak commands
- Action Cards: AI responses include actionable buttons
- Undo: Every AI action can be undone
- Context: AI sees current project state
โจ๏ธ Keyboard Shortcuts
| Action | Shortcut |
|---|---|
| Play/Pause | Space |
| Stop | Enter |
| Record | R |
| Undo | Cmd/Ctrl + Z |
| Redo | Cmd/Ctrl + Shift + Z |
| Save | Cmd/Ctrl + S |
| New Track | Cmd/Ctrl + T |
| Delete Selection | Backspace / Delete |
| Duplicate | Cmd/Ctrl + D |
| Toggle AI Chat | Cmd/Ctrl + / |
| Voice Command | Hold V |
| Sample Browser | B |
| Mixer View | M |
๐ฑ Responsive Design
| Breakpoint | Width | Layout |
|---|---|---|
| Desktop | 1280px+ | Full layout, all panels |
| Laptop | 1024-1279px | Collapsible side panels |
| Tablet | 768-1023px | Tabbed bottom panel |
| Mobile | <768px | Limited (playback only) |
Mobile Note: Full DAW editing requires desktop/tablet. Mobile supports playback and basic controls only.
๐งฉ Component Library
FlowState uses a custom component library built with React + Tailwind CSS.
Core Components
| Component | Variants |
|---|---|
| Button | primary, secondary, ghost, danger |
| Slider | horizontal, vertical, range |
| Knob | small, medium, large |
| Toggle | switch, checkbox, radio |
| Dropdown | select, menu, context |
| Modal | dialog, drawer, popover |
| Toast | info, success, warning, error |
| Waveform | static, animated, mini |
| Meter | peak, RMS, spectrum |
Example: Knob Component
// components/Knob.tsx
interface KnobProps {
value: number;
min?: number;
max?: number;
onChange: (value: number) => void;
size?: 'sm' | 'md' | 'lg';
label?: string;
}
function Knob({ value, min = 0, max = 100, onChange, size = 'md', label }: KnobProps) {
const rotation = ((value - min) / (max - min)) * 270 - 135;
return (
<div className="knob-container">
<div
className={`knob knob-${size}`}
style={{ transform: `rotate(${rotation}deg)` }}
onMouseDown={handleDrag}
>
<div className="knob-indicator" />
</div>
{label && <span className="knob-label">{label}</span>}
<span className="knob-value">{value}</span>
</div>
);
}
๐ฏ Accessibility
| Feature | Implementation | Priority |
|---|---|---|
| Keyboard navigation | All controls accessible via Tab | MVP |
| Screen reader | ARIA labels on all controls | MVP |
| Color contrast | WCAG AA minimum | MVP |
| Focus indicators | Visible focus rings | MVP |
| Reduced motion | Respect prefers-reduced-motion | v1.1 |
| High contrast | Alternative theme | v1.2 |