import { AppBarProps as MuiAppBarProps } from '@mui/material/AppBar'; import { LayoutMode, Product } from '../AppLauncher/types'; import { AvatarMenuGroup, AvatarMenuFooterInfo, ThemeMode, PresenceStatus } from '../AvatarMenu/types'; import { IconName } from '../Icon'; /** * Props for the Signal `AppBar`. * * ⚠️ **Not a drop-in MUI `AppBar` replacement.** * Signal `AppBar` is an opinionated product header that always composes * `AppLauncher` + a fixed Exotel logo (+ optional `productName` subtitle) + * optional notification bell + `AvatarMenu`. The Exotel logo cannot be * swapped for a different brand mark — it always renders, in both light and * dark mode. It **ignores `children`** and renders its own `Toolbar`; MUI * props like `position` / `color` / `elevation` are largely overridden by the * Signal styling. For different header patterns use `PageHeader` (in-page * titles), `Navigation` (side nav), or compose your own from Signal * primitives (`Toolbar`, `Box`, `IconButton`, …). **Never import MUI's * `AppBar` directly** — always go through `@exotel-npm-dev/signal-design-system`. * * @see AvatarMenu for the shape of `avatarMenuGroups` / `avatarFooterInfo`. */ export interface AppBarProps extends Omit { /** Layout mode for the AppLauncher. Omit `appLauncherProducts` to hide the launcher entirely. */ appLauncherType?: LayoutMode; /** Product list rendered inside the AppLauncher. Required to show the launcher. */ appLauncherProducts?: Product[]; /** Icon for the AppLauncher trigger button. */ appLauncherIconName?: IconName; /** Full name used to derive initials and avatar background colour. */ avatarName: string; /** Size of the avatar trigger. @default 'small' */ avatarSize?: 'small' | 'medium' | 'large'; /** Presence badge on the avatar trigger. Omit to hide the badge. */ avatarPresenceStatus?: PresenceStatus; /** * Grouped menu items rendered inside the AvatarMenu popup. * @default [] */ avatarMenuGroups?: AvatarMenuGroup[]; /** * Static info rows displayed in the AvatarMenu footer (e.g. last login, version). * @default [] */ avatarFooterInfo?: AvatarMenuFooterInfo[]; /** * Currently active theme mode — highlights the selected option in the Theme submenu. * @default 'system' */ avatarSelectedTheme?: ThemeMode; /** Called when the user picks a theme option in the Theme submenu. */ onAvatarThemeChange?: (mode: ThemeMode) => void; /** Called when the Logout row is clicked. */ onAvatarLogout?: () => void; /** * Product name shown as a subtitle beneath the (fixed) Exotel logo, e.g. * `"Product Name"`. Omit to render the logo alone. * * Ask for this value explicitly when scaffolding a new project or * migrating a legacy app to Signal — see the App Shell doc and Migration * Guide. */ productName?: string; /** * @deprecated The logo is now fixed and cannot be swapped — this prop is * accepted for backward compatibility only and has no effect. Use * `productName` for the variable part of the brand lockup. */ brandLogo?: string | React.ReactNode; /** * @deprecated Ignored — see `brandLogo`. */ brandLogoAlt?: string; /** * @deprecated Ignored — see `brandLogo`. */ brandLogoStyle?: React.CSSProperties; /** * When `true`, renders the notification bell. * @default false */ showNotificationIcon?: boolean; /** * Notification bell click handler. * Use `event.currentTarget` (or `notificationButtonRef`) as Popover `anchorEl`. */ onNotificationClick?: React.MouseEventHandler; /** * Ref to the notification `IconButton`. * Pass as Popover `anchorEl` when you need the element outside the click handler. */ notificationButtonRef?: React.Ref; /** Whether the notification popover/panel is open — sets `aria-expanded` on the bell. */ notificationOpen?: boolean; } export declare const AppBar: import('../../../node_modules/react').ForwardRefExoticComponent>;