Layout 03 — Icon Rail + Panel Messaging
A production-grade messaging platform layout with dark cyan theme, three-column architecture, and motion animations. Inspired by Discord meets Slack.
Icon rail (68px) + channel panel (260px) + message area (fluid). Classic messaging app architecture inspired by Discord and Slack.
Rail (#111116), panel (#18181b), content (#1e1e24) with cyan-400 (#22d3ee) accent. CSS custom properties for full theme control.
Friendly, rounded sans-serif font for a modern messaging feel. 13-15px body text with proper hierarchy.
Workspace icons with hover scale (motion), spring-animated active indicator pip, unread dot indicators, and tooltip labels.
Collapsible sections (AnimatePresence) for channels, private channels, and direct messages. Unread count badges and online status dots.
Messages slide in from bottom (motion). Hover action bar with emoji reactions. Formatting toolbar. User avatars and timestamps.
Signature animation: 3 dots with staggered scale/opacity pulse cycle (1.2s duration, 0.2s stagger). Uses motion animate with infinite repeat.
Messages enter from y:12 with opacity:0, staggered by 0.04s per message. Creates a natural conversation flow feel.
Rail icons scale to 1.15x on hover with whileHover. Tap scales to 0.9x for tactile feedback.
Left rail pip animates height with spring physics (stiffness: 500, damping: 30). Uses AnimatePresence for enter/exit.
Sections collapse with height animation (0.2s easeInOut). Chevron rotates 90 degrees on toggle. AnimatePresence handles exit.
Settings toggle knob slides with spring physics matching the active indicator. Background color transitions on state change.
Framework
Next.js 15 (App Router)
Animation
motion/react ^12.35
Font
DM Sans
Accent
#22d3ee (cyan-400)
Components
shadcn/ui + custom
Layout Pattern
Icon Rail + Panel + Content