App Header

A comprehensive application header component with mobile responsiveness, optional elements, and customizable branding using Modus Icons.

Interactive Demo

Live Header Preview

Configure the header below to see how different options affect the appearance and behavior.

Header Configuration
Toggle different header elements to see how they affect the layout.

Live Preview

Demo App

Page content area

Preset Examples

Common header configurations for different use cases.

Minimal Header
Simple header with just logo and avatar, perfect for clean interfaces.
Minimal App

Clean, minimal interface

Full Featured Header
Complete header with all features enabled, ideal for complex applications.
Enterprise App

Feature-rich application header

Mobile Optimized Header
Header optimized for mobile devices with essential features only.
Mobile App

Mobile-first design

Component Location

The app header component is located in the @/components/header directory.

Project Structure
components/
├── header/
│   ├── app-header.tsx               # Main header component
│   └── index.ts                     # Export file
├── ui/
│   ├── button.tsx
│   ├── avatar.tsx
│   ├── dropdown-menu.tsx
│   ├── select.tsx
│   └── ...
└── ...

Usage:
import { AppHeader } from "@/components/header"

Customization Examples

Examples of different header configurations for various use cases.

Customization examples
// Minimal header with only logo and avatar
<AppHeader
  showMenuButton={false}
  showSearchButton={false}
  showHelpButton={false}
  showAppLauncher={false}
  showModeToggle={false}
  showProjectDropdown={false}
  logoText="Simple App"
  avatarFallback="SA"
/>

// Full featured header with custom logo
<AppHeader
  logoSrc="/logo.png"
  logoAlt="Company Logo"
  logoText="Enterprise App"
  avatarSrc="/avatar.jpg"
  avatarFallback="EA"
  showProjectDropdown={true}
  projects={projects}
  selectedProject={selectedProject}
  onProjectChange={setSelectedProject}
/>

// Mobile-optimized header
<AppHeader
  showMenuButton={true}
  showSearchButton={true}
  showHelpButton={false}
  showAppLauncher={false}
  showModeToggle={true}
  showAvatar={true}
  logoText="Mobile App"
/>

Responsive Design

The header automatically adapts to different screen sizes with mobile-first design.

Responsive behavior
// The header automatically adapts to mobile screens:
// - Menu button appears on mobile (md:hidden)
// - Logo text hides on small screens (hidden sm:inline-block)
// - Some buttons move to overflow menu on mobile
// - Project dropdown moves to mobile overflow menu
// - Uses responsive breakpoints (sm:, md:, lg:)

// Custom responsive behavior
<AppHeader
  className="lg:px-8 md:px-4 px-2"
  showMenuButton={true} // Always visible on mobile
  showSearchButton={true} // Moves to overflow on mobile
  showHelpButton={true} // Moves to overflow on mobile
  showAppLauncher={true} // Moves to overflow on mobile
/>

Usage

components/my-app.tsx
import { AppHeader } from "@/components/header"

function MyApp() {
  const [selectedProject, setSelectedProject] = useState("project-1")
  
  const projects = [
    { id: "project-1", name: "Website Redesign", description: "Complete redesign" },
    { id: "project-2", name: "Mobile App", description: "iOS and Android app" },
  ]

  const handleMenuClick = () => {
    console.log("Menu clicked")
  }

  const handleSearchClick = () => {
    console.log("Search clicked")
  }

  return (
    <AppHeader
      logoText="My App"
      showProjectDropdown={true}
      projects={projects}
      selectedProject={selectedProject}
      onProjectChange={setSelectedProject}
      onMenuClick={handleMenuClick}
      onSearchClick={handleSearchClick}
      avatarFallback="JD"
    />
  )
}

API Reference

AppHeader Props

PropTypeDefaultDescription
classNamestring-Additional CSS classes
showMenuButtonbooleantrueShow mobile menu button
showLogobooleantrueShow logo and app name
showSearchButtonbooleantrueShow search button
showHelpButtonbooleantrueShow help button
showAppLauncherbooleantrueShow app launcher dropdown
showAvatarbooleantrueShow user avatar dropdown
showModeTogglebooleantrueShow dark/light mode toggle
showProjectDropdownbooleanfalseShow project selector dropdown
logoSrcstring-Custom logo image URL
logoTextstring"App"Application name text
avatarSrcstring-User avatar image URL
avatarFallbackstring"U"Avatar fallback text
projectsArray<{id: string, name: string, description?: string}>[]Available projects for dropdown
selectedProjectstring-Currently selected project ID
onProjectChange(projectId: string) => void-Project selection callback
onMenuClick() => void-Menu button click callback
onSearchClick() => void-Search button click callback
onHelpClick() => void-Help button click callback
onAppLauncherClick() => void-App launcher click callback
onAvatarClick() => void-Avatar click callback