Back to Layouts

Navigation-focused layouts with persistent side panels

Sidebar: Open
L
Logo

Main Content Area

This is where your page content would go. The sidebar can be toggled to give more space to the content when needed.

Card 1

Sample content card

Card 2

Another content card

Fixed Sidebar

Persistent sidebar that stays visible on desktop

Sidebar
Main Content
lg:grid-cols-[250px_1fr]
Collapsible Sidebar

Sidebar that can be collapsed to save space

Sidebar
Main Content
lg:grid-cols-[var(--sidebar-width)_1fr]
Mobile-First Sidebar

Sidebar that transforms to mobile menu on small screens

Sidebar
Main Content
grid-cols-1 lg:grid-cols-[280px_1fr]
Mini Sidebar

Compact sidebar showing only icons when collapsed

Sidebar
Main Content
lg:grid-cols-[60px_1fr] xl:grid-cols-[250px_1fr]
Basic Sidebar Layout
<div className="grid grid-cols-1 lg:grid-cols-[250px_1fr] min-h-screen">
  {/* Sidebar */}
  <div className="bg-primary text-white">
    <nav className="p-4">
      <ul className="space-y-2">
        <li><a href="#" className="block p-2 hover:bg-primary">Home</a></li>
        <li><a href="#" className="block p-2 hover:bg-primary">About</a></li>
      </ul>
    </nav>
  </div>
  
  {/* Main Content */}
  <main className="p-6">
    <AnchorHeading as="h1">Page Content</AnchorHeading>
  </main>
</div>
Collapsible Sidebar (React)
const [isOpen, setIsOpen] = useState(true)

<div className="grid grid-cols-[var(--sidebar-width)_1fr]"
     style={{ '--sidebar-width': isOpen ? '250px' : '60px' }}>
  
  <div className="bg-primary transition-all duration-300">
    <button onClick={() => setIsOpen(!isOpen)}>
      <Menu className="w-5 h-5" />
    </button>
    
    <nav>
      {menuItems.map(item => (
        <div key={item.label} className="flex items-center gap-3 p-2">
          <item.icon className="w-5 h-5" />
          {isOpen && <span>{item.label}</span>}
        </div>
      ))}
    </nav>
  </div>
  
  <main className="p-6">Content</main>
</div>

Design Guidelines

  • Keep navigation items clearly labeled and organized
  • Use consistent spacing and typography throughout
  • Provide clear visual feedback for active states
  • Consider collapsible sections for better organization

Technical Tips

  • Use CSS Grid for responsive sidebar layouts
  • Implement smooth transitions for collapsible behavior
  • Ensure keyboard navigation support
  • Test mobile behavior thoroughly