Header

Composable header with slots for brand, navigation, search, and actions. Supports dropdown nav groups via Header.NavMenu. Designed for use within AppShell with responsive mobile support.

Setup

import { Header } from '@fragments-sdk/ui';

Examples

For Default Layout

Header with brand, nav, and actions. Use with AppShell layout="default".

Loading preview...

With Dropdown Nav

Header with a dropdown menu grouping related navigation links.

Loading preview...

For Sidebar Layout

Header without brand (logo is in sidebar). Use with AppShell layout="sidebar" or "sidebar-floating".

Loading preview...

Minimal

Clean header with just trigger and actions

Loading preview...

With Search

Header featuring a prominent search input

Loading preview...

With Skip Link

Accessible header with skip link for keyboard navigation

Loading preview...

With NavigationMenu

Header using NavigationMenu for rich dropdown content panels with titles, descriptions, and automatic mobile drawer.

Loading preview...

Props

PropTypeDefaultDescription
childrenRequirednodeNot setHeader content (use Header.Brand, Header.Nav, etc.)
heightstring56pxHeader height
positionenumstaticfixedstickystaticPosition behavior (usually controlled by AppShell)
iconsobjectNot setOptional icon overrides for Header.Trigger (menu/close) and Header.NavMenu chevron
styleobjectNot set

Usage Guidelines

When to use

  • Primary site or app header inside AppShell
  • Navigation bar with branding (default layout)
  • Search and actions bar (sidebar layout)
  • Header with responsive mobile menu trigger
  • Grouping related nav items under a dropdown menu

When not to use

  • Simple page titles (use heading elements)
  • Footer navigation (use Footer component)
  • Standalone sidebar navigation (use Sidebar directly)

Best practices

  • Use Header.SkipLink for accessibility (skip to main content)
  • In default layout: include Header.Brand for logo
  • In sidebar layout: omit Header.Brand (logo in sidebar)
  • Header.Trigger integrates with SidebarProvider for mobile menus
  • Header.Trigger composes your onClick handler with sidebar toggle behavior
  • Header.Nav is hidden on mobile; use sidebar for mobile navigation
  • Use Header.Spacer to push items apart
  • Use Header.NavMenu to group related nav items under a dropdown
  • Use Header.NavMenuItem inside Header.NavMenu for dropdown items
  • Header sub-components forward DOM props (id, aria-*, data-*, handlers) to their rendered elements
  • Header.NavItem asChild composes click handlers instead of overwriting the child handler
  • Use the Header icons prop to replace internal mobile trigger and dropdown chevron icons with any icon package
  • For rich dropdown content (titles, descriptions, icons), use NavigationMenu instead of Header.Nav
  • NavigationMenu also provides an automatic mobile drawer, replacing Header.Trigger + Sidebar for mobile nav
Accessibility
  • Include Header.SkipLink for keyboard users
  • Navigation has aria-label for screen readers
  • Active nav items use aria-current="page"
  • Mobile trigger has aria-expanded state
  • NavMenu dropdown opens with click and is keyboard navigable