import { ReactNode } from 'react'; import { DropdownMenuProps } from '../DropdownMenu/DropdownMenu.types'; /** * Icon type for NavBar components * Can be either a Material Icon name string or a React element (e.g., custom SVG) */ export type NavBarIconType = string | ReactNode; /** * Action item for the NavBar */ export interface NavBarAction { /** Unique identifier for the action */ id: string; /** Icon - can be a Material Icon name string or a React element (e.g., custom SVG) */ icon: NavBarIconType; /** Label for accessibility and collapsed menu display */ label: string; /** Click handler */ onClick: () => void; /** Whether the action is disabled */ disabled?: boolean; /** Tooltip text (defaults to label) */ tooltip?: string; } /** * Menu item for the dropdown menu */ export interface NavBarMenuItem { /** Unique identifier */ id: string; /** Display label */ label: string; /** Optional icon - can be a Material Icon name string or a React element */ icon?: NavBarIconType; /** Click handler */ onClick?: () => void; /** Whether the item is disabled */ disabled?: boolean; /** Whether to show a divider after this item */ divider?: boolean; } /** * NavBar component props */ export interface NavBarProps { /** Logo image URL */ logoSrc: string; /** Alt text for the logo */ logoAlt?: string; /** Click handler for the logo */ onLogoClick?: () => void; /** Optional title text next to logo */ title?: string; /** Action buttons to display */ actions?: NavBarAction[]; /** Menu items for the dropdown menu (simplified API) */ menuItems?: NavBarMenuItem[]; /** Label for the menu button (accessibility) */ menuLabel?: string; /** * Additional DropdownMenu props for full customization. * These are merged with the internally constructed props. * The 'trigger' and 'items' props are managed internally but can be extended. */ dropdownMenuProps?: Omit; /** Breakpoint at which actions collapse into the menu (default: 480) */ collapseBreakpoint?: number; /** Visual variant */ variant?: 'light' | 'dark'; /** Whether the navbar is sticky at the top */ sticky?: boolean; /** Additional CSS class name */ className?: string; /** Additional content to render in the center (between logo and actions) */ children?: ReactNode; /** Test ID for testing (deprecated, use dataTestId) */ 'data-testid'?: string; /** Test identifier for automated testing */ dataTestId?: string; /** Data identifier for ib-ui compatibility */ dataId?: string; } //# sourceMappingURL=NavBar.types.d.ts.map