import React from 'react';
/**
* Breadcrumb entry for the header navigation.
*/
export interface BreadcrumbType {
/** Text label to display */
label: string;
/**
* URL to navigate to.
* When `renderLink` is provided on the Header, this value is passed to your
* custom link component (e.g., React Router's ``).
* Otherwise it's used as a standard ``.
*/
href?: string;
/** Optional leading icon */
icon?: React.ReactNode;
}
/**
* Action button configuration for the header.
*/
export interface HeaderAction {
/** Unique identifier for the action */
id: string;
/** Optional text label (hidden on mobile) */
label?: string;
/** Icon element to display */
icon: React.ReactNode;
/** Click handler */
onClick?: () => void;
/** Additional CSS classes */
className?: string;
}
/**
* Props for the Header component.
*/
export interface HeaderProps {
/**
* Page title — used only when the page has no navigation hierarchy.
* Renders as a plain text label without breadcrumb separators.
* This is the **exception** pattern; prefer `breadcrumbs` for all navigable pages.
*/
title?: string;
/**
* Navigation breadcrumb trail — the **primary** and recommended pattern.
* Supports unlimited levels. The last item (without `href`) is treated as the current page.
*/
breadcrumbs?: BreadcrumbType[];
/** Whether to show the language selector */
showLanguageSelector?: boolean;
/** Whether to show the theme toggle button */
showThemeToggle?: boolean;
/** Additional CSS classes */
className?: string;
/** Logged-in user information and menu */
user?: {
name?: string;
email?: string;
avatar?: string;
menuItems?: HeaderAction[];
};
/** Custom action buttons to display */
actions?: HeaderAction[];
/** Whether to show a quick settings button */
showSettings?: boolean;
/** Click handler for settings */
onSettingsClick?: () => void;
/** Whether to show a quick logout button */
showLogout?: boolean;
/** Click handler for logout */
onLogoutClick?: () => void;
/**
* Custom element rendered immediately after the breadcrumb / title area.
* Accepts any React node — badges, buttons, status chips, etc.
*
* @example
* ```tsx
* Beta}
* />
* ```
*/
breadcrumbSlot?: React.ReactNode;
/**
* Custom link renderer for breadcrumb navigation.
* Use this to integrate with client-side routers (e.g., React Router, Next.js Link)
* to prevent full-page reloads on navigation.
*
* When omitted, breadcrumbs render standard `` tags.
*
* @example
* ```tsx
* import { Link } from 'react-router-dom';
*
* }
* />
* ```
*/
renderLink?: (href: string, props: {
className?: string;
children: React.ReactNode;
}) => React.ReactNode;
}
/**
* Main application Header component.
*
* @description
* Provides a sticky top navigation bar with breadcrumbs, responsive mobile menu trigger,
* theme/language selectors, and user profile management.
*
* The Header supports two navigation modes:
* - **Breadcrumbs (default)**: Pass the `breadcrumbs` array for pages with navigation hierarchy.
* Supports unlimited depth levels.
* - **Title-only (exception)**: Pass `title` for pages without any navigation (e.g., standalone pages).
* This renders a simple text label without separators.
*
* @ai-rules
* 1. **Always prefer `breadcrumbs`** for any page that has a parent or navigation context.
* 2. Use `title` **only** when the page is a top-level standalone page with no navigation hierarchy.
* 3. Use `actions` for page-specific global actions (e.g., Save, Edit).
* 4. The `user` prop is mandatory for authenticated states to show the profile dropdown.
* 5. Breadcrumbs support unlimited levels — do not limit to 2 or 3 items.
*/
export declare function Header({ title, breadcrumbs, showLanguageSelector, showThemeToggle, className, user, actions, showSettings, onSettingsClick, showLogout, onLogoutClick, renderLink, breadcrumbSlot, }: HeaderProps): import("react/jsx-runtime").JSX.Element;