import type { ReactNode } from "react";
import type { ColorMode } from "../color-mode";
/** Props for {@link UserMenu}. */
export interface UserMenuProps {
    /**
     * The authenticated user. Pass `null` for unauthenticated / local mode,
     * which renders a generic icon and "Local mode" label in the trigger.
     */
    readonly user: {
        /** Display name shown in the trigger and menu header when available. */
        readonly name?: string;
        /** Email shown as secondary identity text. */
        readonly email?: string;
    } | null;
    /**
     * Current color mode selection. Accepts the unresolved value
     * (`"light"`, `"dark"`, or `"system"`) so the radio group reflects
     * the user's explicit choice — not the OS-resolved result.
     *
     * When omitted (together with {@link onColorModeChange}), the color
     * scheme section is hidden entirely.
     */
    readonly colorMode?: ColorMode;
    /**
     * Called when the user selects a different color mode.
     *
     * The consumer is responsible for persisting the choice and updating
     * the host application's theme (e.g. calling `next-themes` `setTheme`
     * in the web Console, or writing to localStorage in the desktop app).
     */
    readonly onColorModeChange?: (mode: ColorMode) => void;
    /**
     * Called when the user clicks the "Settings" menu item.
     * When omitted, the Settings item is hidden.
     */
    readonly onSettingsClick?: () => void;
    /**
     * Called when the user clicks "Sign out".
     * When omitted, the Sign out item is hidden.
     */
    readonly onSignOut?: () => void;
    /**
     * Extra menu items rendered between the color scheme section and
     * sign out. Use this for app-specific actions like "Get Desktop App"
     * in the web Console.
     *
     * Items should be `@base-ui/react` `Menu.Item` elements (or the
     * host app's wrapper over them) to participate in the menu's keyboard
     * navigation and ARIA roles.
     */
    readonly extraItems?: ReactNode;
    /** Additional CSS class names merged onto the trigger. */
    readonly className?: string;
}
/**
 * User menu dropdown for sidebar navigation.
 *
 * Displays the current user (avatar + name/email) or a "Local mode"
 * indicator when unauthenticated, with optional color scheme switching,
 * settings navigation, app-specific extra items, and sign out.
 *
 * Designed for sidebar placement — the trigger uses `sidebar-*` design
 * tokens. The portaled dropdown uses standard `popover-*` / main-area
 * tokens per theme-token-guidelines (DD-005).
 *
 * Framework-agnostic: all actions are expressed as callback props
 * (DD-004). The consumer bridges to their routing, auth, and theme
 * systems.
 *
 * @example
 * ```tsx
 * <UserMenu
 *   user={{ name: "Jane", email: "jane@acme.com" }}
 *   colorMode="dark"
 *   onColorModeChange={(mode) => setTheme(mode)}
 *   onSettingsClick={() => router.push("/settings")}
 *   onSignOut={() => logout()}
 * />
 * ```
 */
export declare function UserMenu({ user, colorMode, onColorModeChange, onSettingsClick, onSignOut, extraItems, className, }: UserMenuProps): import("react/jsx-runtime").JSX.Element;
//# sourceMappingURL=UserMenu.d.ts.map