import type { ReactNode } from "react";
import type { HtmlProps } from "@/utils/types";
export type UserMenuItem = {
    /** Unique identifier for the menu item. */
    id: string;
    /** Display label. */
    label: ReactNode;
    /** Optional leading icon. */
    icon?: ReactNode;
    /** Fully custom item content. Receives the same row styling wrapper. */
    content?: ReactNode;
    /** Click handler for button-style menu items. */
    onClick?: () => void;
    /** Link target for anchor-style menu items. */
    href?: string;
    /** Opens anchor item in a new browsing context. */
    target?: string;
    /** Anchor relationship attribute. */
    rel?: string;
    /** Whether selecting this item closes the panel. */
    closeOnSelect?: boolean;
};
export type UserMenuSection = {
    /** Unique section id. */
    id: string;
    /** Items rendered with the built-in list row design. */
    items?: UserMenuItem[];
    /** Arbitrary custom content rendered in the menu flow. */
    children?: ReactNode;
};
export type UserMenuUsage = {
    /** Optional stable id for this usage row. */
    id?: string;
    /** Usage row label, e.g. "Reltio model". */
    label: ReactNode;
    /** Percentage from 0 to 100. */
    percent: number;
    /** Supporting text shown at the end of the row, e.g. "15K/50K left". */
    detail?: ReactNode;
};
export type UserMenuUsageAction = {
    /** Callback fired when the usage card is selected. */
    onClick?: () => void;
    /** Optional URL for link-style usage cards. */
    href?: string;
    /** Accessible label for the clickable usage card. */
    ariaLabel?: string;
    /** Opens link usage card in a new browsing context. */
    target?: string;
    /** Anchor relationship attribute. */
    rel?: string;
    /** Whether selecting the usage card closes the panel. Defaults to true. */
    closeOnSelect?: boolean;
};
export type UserMenuProps = HtmlProps<"div", {
    /** User display name shown in the footer row. */
    name: string;
    /** Optional user email/supporting text. */
    email?: string;
    /** Optional custom avatar node. Defaults to generated initials. */
    avatar?: ReactNode;
    /** Items rendered before logout. */
    items?: UserMenuItem[];
    /** Grouped panel sections. Takes precedence over items when provided. */
    sections?: UserMenuSection[];
    /** Optional credits card title shown above the usage meters. */
    usageTitle?: ReactNode;
    /** Optional usage meter or meters shown below the user summary. */
    usage?: UserMenuUsage | UserMenuUsage[];
    /** Makes the whole usage card clickable or navigable. */
    usageAction?: UserMenuUsageAction;
    /** Custom content rendered after usage and before sections. */
    children?: ReactNode;
    /** Called when the logout item is clicked. */
    onLogout?: () => void;
    /** Logout item label. */
    logoutLabel?: ReactNode;
    /** Whether the logout row is rendered. */
    showLogout?: boolean;
    /** Whether the popover is open in controlled mode. */
    open?: boolean;
    /** Initial open state in uncontrolled mode. */
    defaultOpen?: boolean;
    /** Open state change callback. */
    onOpenChange?: (open: boolean) => void;
}>;
//# sourceMappingURL=UserMenu.types.d.ts.map