import { ReactNode } from "react";
export interface NavItemSubmenuItem {
    /** Label text */
    children: ReactNode;
    /** Link href */
    href?: string;
    /** Click handler */
    onClick?: () => void;
    /** Whether this sub-item is active */
    active?: boolean;
    /** Whether this sub-item is disabled */
    isDisabled?: boolean;
    /** Badge text/number on the sub-item */
    badge?: string | number;
    /** Notification count/dot on the sub-item */
    notification?: number | boolean;
    /** Start content (icon) for the sub-item */
    startContent?: ReactNode;
}
export interface NavItemProps extends React.HTMLAttributes<HTMLDivElement> {
    /**
     * Content of the navigation item
     */
    children: ReactNode;
    /**
     * Start content (icon), replaces `icon`
     */
    startContent?: ReactNode;
    /**
     * End content (badge/arrow), replaces `badge`
     */
    endContent?: ReactNode;
    /**
     * Description text below the title
     */
    description?: ReactNode;
    /**
     * Keyboard shortcut (optional)
     */
    shortcut?: string;
    /**
     * Legacy icon prop (mapped to startContent)
     * @deprecated Use startContent instead
     */
    icon?: ReactNode;
    /**
     * Legacy badge prop (mapped to endContent)
     * @deprecated Use endContent instead
     */
    badge?: string | number;
    /**
     * Notification indicator. Pass a number for a count badge, or true for a dot.
     */
    notification?: number | boolean;
    /**
     * Link href (for navigation)
     */
    href?: string;
    /**
     * Click handler
     */
    onClick?: () => void;
    /**
     * Whether the item is currently active
     * @default false
     */
    active?: boolean;
    /**
     * Whether the item is disabled
     * @default false
     */
    isDisabled?: boolean;
    /**
     * Alias for isDisabled
     * @deprecated Use isDisabled
     */
    disabled?: boolean;
    /**
     * Whether the item represents a danger action
     */
    isDanger?: boolean;
    /**
     * Whether the item has a submenu (manual mode).
     * If `items` is provided, this is set automatically.
     * @default false
     */
    hasSubmenu?: boolean;
    /**
     * Whether the submenu is expanded (controlled mode for manual submenus).
     * @default false
     */
    expanded?: boolean;
    /**
     * Callback when submenu is toggled (manual mode)
     */
    onToggleExpanded?: () => void;
    /**
     * Self-contained submenu items. When provided, NavItem manages its own
     * expand/collapse state internally. Children items automatically get
     * level={parentLevel + 1}.
     */
    items?: NavItemSubmenuItem[];
    /**
     * Whether the self-contained submenu is expanded by default
     * @default false
     */
    defaultExpanded?: boolean;
    /**
     * Nesting level for indentation (0, 1, 2)
     * @default 0
     */
    level?: number;
    /**
     * Whether to show tooltip when in collapsed sidebar mode
     * @default true
     */
    showTooltipWhenCollapsed?: boolean;
    /**
     * Custom theme overrides
     */
    theme?: NavItemThemeOverrides;
}
export interface NavItemTheme {
    baseStyle: string;
    icon: string;
    text: string;
    states: {
        default: string;
        active: string;
        disabled: string;
        hover: string;
    };
    iconStates?: {
        default?: string;
        active?: string;
        disabled?: string;
        hover?: string;
    };
    levels: {
        0: string;
        1: string;
        2: string;
    };
    collapsed: {
        container: string;
        icon: string;
    };
    activeIndicator?: string;
    notificationDot?: string;
    notificationBadge?: string;
    danger?: string;
}
export interface NavItemThemeOverrides {
    baseStyle?: string;
    icon?: string;
    text?: string;
    states?: Partial<{
        default: string;
        active: string;
        disabled: string;
        hover: string;
    }>;
    iconStates?: Partial<{
        default: string;
        active: string;
        disabled: string;
        hover: string;
    }>;
    levels?: Partial<{
        0: string;
        1: string;
        2: string;
    }>;
    collapsed?: Partial<{
        container: string;
        icon: string;
    }>;
    activeIndicator?: string;
    notificationDot?: string;
    notificationBadge?: string;
    danger?: string;
}
