import React from 'react'; export interface AppHeaderProps { showSearch?: boolean; onSearch?: (query: string) => void; showOrganizations?: boolean; organizations?: { id: string; name: string; }[]; selectedOrgId?: string; onOrgChange?: (id: string) => void; showNotifications?: boolean; unreadCount?: number; /** Render the support-ticket alerts cell (`TicketAlertsButton`). * Attention-only: even when true it renders nothing unless a * `` is mounted, the viewer is signed in, AND * there are unread support replies. */ showTicketAlerts?: boolean; /** BASE path of the tickets surface (any nesting prefix allowed — * '/help-center/tickets', '/support/portal/tickets'). The cell builds * the SSOT deep link `?ticket=` for the newest-unread * ticket before navigating. */ ticketAlertsHref?: string; /** Host navigation (router push) — receives the FULL computed href. * Defaults to `window.location.assign`. */ onTicketAlerts?: (href: string) => void; /** Render the time-tracker button + popup. Requires wrapping the app in ``. */ showTimeTracker?: boolean; /** Render the "Mingo AI" launcher button (drawer-style trigger for an * in-layout `AppLayoutDrawer` hosting the chat panel). Defaults to off. */ showMingoAI?: boolean; /** Click handler for the Mingo AI button — typically toggles the drawer. */ onMingoAI?: () => void; /** Whether the Mingo drawer is currently open (visually pressed state). */ isMingoAIActive?: boolean; showUser?: boolean; userName?: string; userEmail?: string; userAvatarUrl?: string | null; onProfile?: () => void; onLogout?: () => void; className?: string; /** Whether the mobile menu is open */ isMobileMenuOpen: boolean; /** Callback to toggle mobile menu */ onToggleMobileMenu?: () => void; /** * When true, all header controls are disabled and visually dimmed * EXCEPT the mobile burger menu toggle, which remains interactive. */ disabled?: boolean; /** * Draw placeholder cells instead of the live controls. * * Solves a problem this header cannot solve on its own: its mobile/desktop split * is decided by `useMdUp()`, which answers `undefined` until an effect has run — * and `?? false` turns that into "mobile". The first render is therefore always * the phone header (burger + wordmark, no side actions), which on a desktop load * is a visible flash before the real layout appears. It is also what a host has * to show while the user and the action flags are still loading. * * The placeholder decides mobile vs desktop in CSS instead, so it is correct at * every width on the very first paint, server-rendered included. */ loading?: boolean; /** * Shape of the trailing action cells `loading` reserves. * * Needed because the `show*` props are usually the very thing the host is still * waiting on — they are typically driven by feature flags or permissions, so during * `loading` they all read `false` and the placeholder collapses to whatever is * hardcoded on (often just the avatar), which looks nothing like the loaded header. * * Pass the cells the header settles on, in order — see `HeaderLoadingCell` for the * footprints. A bare number is accepted as shorthand for all-`'icon'`. * * Unlike the sidebar's rows, a cell that turns out not to exist is cheap here: the * cells are a right-aligned cluster in otherwise empty space, so one disappearing * shifts nothing else on the page. * * Defaults to the shape implied by the `show*` props, which is right for a host whose * header composition is known up front. */ loadingActionCells?: number | ReadonlyArray; } /** * A trailing header cell's footprint while loading — see `loadingActionCells`. * * The breakpoint-scoped members exist because several live cells are themselves * responsive, and a placeholder that ignores that is wider than the header it hands * off to on exactly the viewports where the cluster is tightest: * * - `'icon'` — a fixed 48/56px cell at every width (time tracker, notifications). * - `'icon-md'` — the same cell, from md only (the avatar: `isMdUp && showUser`). * - `'icon-lg'` — the same cell, from lg only (the organization filter, which the * live header renders `hidden lg:flex`). * - `'wide'` — the Mingo launcher: a 48px square below md, where the live button is * `iconOnly`, and the fixed 140px labelled cell from md. */ export type HeaderLoadingCell = 'icon' | 'icon-md' | 'icon-lg' | 'wide'; export declare const AppHeader: React.NamedExoticComponent; export default AppHeader; //# sourceMappingURL=app-header.d.ts.map