import { type VariantProps } from 'class-variance-authority';
import * as React from 'react';
export interface NavAccountMenuProps {
    /** Trigger variant style */
    type?: 'card' | 'simple';
    /** Controlled open state */
    open?: boolean;
    /** Callback when open state changes */
    onOpenChange?: (open: boolean) => void;
    /** Initial open state for uncontrolled mode */
    defaultOpen?: boolean;
    /** Children (trigger + content) */
    children: React.ReactNode;
}
declare function NavAccountMenu({ type, open: controlledOpen, defaultOpen, onOpenChange, children, }: NavAccountMenuProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenu {
    var displayName: string;
}
declare const triggerVariants: (props?: ({
    type?: "card" | "simple" | null | undefined;
} & import("class-variance-authority/types").ClassProp) | undefined) => string;
export interface NavAccountMenuTriggerProps extends VariantProps<typeof triggerVariants> {
    /** Avatar element (use Avatar component) */
    avatar?: React.ReactNode;
    /** User display name */
    name: string;
    /** User email address */
    email?: string;
    /** Optional badge after name (e.g., "External" tag) */
    badge?: React.ReactNode;
    /** Show logout button instead of chevron (for 'simple' type) */
    showLogoutButton?: boolean;
    /** Logout callback for simple variant */
    onLogout?: () => void;
    /** Show only avatar without name/email - useful for collapsed sidebar */
    compact?: boolean;
    /** Additional className */
    className?: string;
}
declare function NavAccountMenuTrigger({ avatar, name, email, badge, showLogoutButton, onLogout, compact, className, }: NavAccountMenuTriggerProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenuTrigger {
    var displayName: string;
}
export interface NavAccountMenuContentProps {
    /** Popover side positioning */
    side?: 'top' | 'right' | 'bottom' | 'left';
    /** Popover alignment */
    align?: 'start' | 'center' | 'end';
    /** Side offset */
    sideOffset?: number;
    /** Children */
    children: React.ReactNode;
    /** Additional className */
    className?: string;
}
declare function NavAccountMenuContent({ side, align, sideOffset, children, className, }: NavAccountMenuContentProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenuContent {
    var displayName: string;
}
export interface NavAccountMenuHeaderProps {
    /** Header title (e.g. "Profile") */
    title: string;
    /** Subtitle text or custom React node (e.g. "Last login 22 May, 2026 11:30pm") */
    subtitle?: React.ReactNode;
    /** Additional className */
    className?: string;
}
declare function NavAccountMenuHeader({ title, subtitle, className, }: NavAccountMenuHeaderProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenuHeader {
    var displayName: string;
}
export interface NavAccountMenuSectionProps {
    /** Optional section header label */
    label?: string;
    /** Show top border separator between sections */
    bordered?: boolean;
    /** Section content */
    children: React.ReactNode;
    /** Additional className */
    className?: string;
}
declare function NavAccountMenuSection({ label, bordered, children, className, }: NavAccountMenuSectionProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenuSection {
    var displayName: string;
}
/**
 * Props passed to the render function for custom menu item rendering.
 */
export interface NavAccountMenuItemRenderProps {
    /** Combined className for styling */
    className: string;
    /** Click handler that closes menu and triggers onSelect */
    onClick: () => void;
    /** Menu item content (icon, label, shortcut) */
    children: React.ReactNode;
}
/**
 * Render prop type for polymorphic rendering.
 * Accepts a function that receives props and returns an element.
 */
type NavAccountMenuItemRenderFn = (props: NavAccountMenuItemRenderProps) => React.ReactElement;
export interface NavAccountMenuItemProps {
    /** Left icon (20px) */
    icon?: React.ReactNode;
    /** Keyboard shortcut display */
    shortcut?: string;
    /** Destructive styling (red) */
    destructive?: boolean;
    /** Disabled state */
    disabled?: boolean;
    /** Selection callback */
    onSelect?: () => void;
    /**
     * Render prop for polymorphic rendering.
     * Use this to render the menu item as a different element (e.g., link).
     * @example
     * <NavAccountMenuItem
     *   icon={<User01 />}
     *   render={(props) => <a {...props} href="/profile" />}
     * >
     *   View profile
     * </NavAccountMenuItem>
     */
    render?: NavAccountMenuItemRenderFn;
    /** Label text */
    children: React.ReactNode;
    /** Additional className */
    className?: string;
}
declare function NavAccountMenuItem({ icon, shortcut, destructive, disabled, onSelect, render, children, className, }: NavAccountMenuItemProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenuItem {
    var displayName: string;
}
export interface NavAccountMenuAccountProps {
    /** Avatar element */
    avatar?: React.ReactNode;
    /** Account display name */
    name: string;
    /** Account email */
    email: string;
    /** Whether this account is currently selected */
    selected?: boolean;
    /** Selection callback */
    onSelect?: () => void;
    /** Additional className */
    className?: string;
}
declare function NavAccountMenuAccount({ avatar, name, email, selected, onSelect, className, }: NavAccountMenuAccountProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenuAccount {
    var displayName: string;
}
export interface NavAccountMenuSeparatorProps {
    /** Additional className */
    className?: string;
}
declare function NavAccountMenuSeparator({ className }: NavAccountMenuSeparatorProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenuSeparator {
    var displayName: string;
}
export interface NavAccountMenuFooterProps {
    /** Footer content (typically buttons) */
    children: React.ReactNode;
    /** Additional className */
    className?: string;
}
declare function NavAccountMenuFooter({ children, className, }: NavAccountMenuFooterProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenuFooter {
    var displayName: string;
}
export interface NavAccountMenuThemeSwitchProps {
    /** Switch theme variant to render */
    variant?: 'theme-gradient' | 'theme-switch' | 'theme-pill' | 'theme-segmented';
    /** Switch size */
    size?: 'sm' | 'md' | 'lg';
    /** Controlled checked state (dark = checked) */
    checked?: boolean;
    /** Callback when checked state changes */
    onCheckedChange?: (checked: boolean) => void;
    /** Optional label displayed next to the switch (e.g. "Light Mode") */
    label?: string;
    /** Additional className */
    className?: string;
}
declare function NavAccountMenuThemeSwitch({ variant, size, checked, onCheckedChange, label, className, }: NavAccountMenuThemeSwitchProps): import("react/jsx-runtime").JSX.Element;
declare namespace NavAccountMenuThemeSwitch {
    var displayName: string;
}
export { NavAccountMenu, NavAccountMenuAccount, NavAccountMenuContent, NavAccountMenuFooter, NavAccountMenuHeader, NavAccountMenuItem, NavAccountMenuSection, NavAccountMenuSeparator, NavAccountMenuThemeSwitch, NavAccountMenuTrigger, triggerVariants as navAccountMenuTriggerVariants, };
