import * as React from 'react'; export interface MenuProps extends React.HTMLAttributes { children: React.ReactNode; /** * Default role for items rendered by Menu.Item when it clones/wraps content. * - default: "menuitem" (for role="menu") * - for Select/listbox usage, pass itemRole="option" and role="listbox" on Menu. */ itemRole?: 'menuitem' | 'option'; /** Adds a gap of --spacing-xs between items */ gap?: boolean; } export type MenuLabelProps = React.HTMLAttributes; export type MenuSeparatorProps = React.LiHTMLAttributes; export interface MenuHeaderProps extends React.LiHTMLAttributes { children: React.ReactNode; } export interface MenuDescriptionProps extends React.LiHTMLAttributes { children: React.ReactNode; } export interface MenuItemProps extends React.LiHTMLAttributes { children: React.ReactNode; active?: boolean; selected?: boolean; disabled?: boolean; /** * Override the role applied to the interactive element for this item only. * If not set, Menu's `itemRole` is used. */ itemRole?: 'menuitem' | 'option'; /** Adds a rounded border around the item */ variant?: 'default' | 'bordered' | 'danger'; /** * Extra content rendered after `children` (e.g. a status dot or badge). * Appended as a trailing, vertically-centered slot inside the interactive * element, so `children` stays exactly the icon + label content it was * before — no need to know about `Menu.Label`. */ endAdornment?: React.ReactNode; /** Forwarded to the endAdornment wrapper. Defaults to true. */ endAdornmentAriaHidden?: boolean; } export interface MenuCheckItemProps extends Omit, 'onChange'> { label: React.ReactNode; checked: boolean; active?: boolean; disabled?: boolean; interactiveRef?: React.Ref; interactiveProps?: React.HTMLAttributes; onCheckedChange?: (checked: boolean) => void; /** * Extra content rendered after the label (e.g. a status dot or badge). * Forwarded to the underlying Checkbox, which owns the layout/spacing. */ endAdornment?: React.ReactNode; /** Forwarded to the underlying Checkbox. Defaults to true. */ endAdornmentAriaHidden?: boolean; } export interface MenuRadioItemProps extends Omit, 'onChange'> { name: string; value: string; checked: boolean; active?: boolean; disabled?: boolean; label: string; interactiveRef?: React.Ref; interactiveProps?: React.HTMLAttributes; onValueChange?: (value: string) => void; /** * Extra content rendered after the label (e.g. a status dot or badge). * Forwarded to the underlying RadioButton, which owns the layout/spacing. */ endAdornment?: React.ReactNode; /** Forwarded to the underlying RadioButton. Defaults to true. */ endAdornmentAriaHidden?: boolean; } export interface MenuSwitchItemProps extends Omit, 'onChange'> { label: React.ReactNode; checked: boolean; active?: boolean; disabled?: boolean; interactiveRef?: React.Ref; interactiveProps?: React.HTMLAttributes; onCheckedChange?: (checked: boolean) => void; /** * Extra content rendered after the label (e.g. a status dot or badge). * Forwarded to the underlying Switch, which owns the layout/spacing. */ endAdornment?: React.ReactNode; /** Forwarded to the underlying Switch. Defaults to true. */ endAdornmentAriaHidden?: boolean; } export declare const Menu: React.ForwardRefExoticComponent> & { Item: React.ForwardRefExoticComponent>; CheckItem: React.ForwardRefExoticComponent>; RadioItem: React.ForwardRefExoticComponent>; SwitchItem: React.ForwardRefExoticComponent>; Separator: React.ForwardRefExoticComponent>; Header: React.ForwardRefExoticComponent>; Description: React.ForwardRefExoticComponent>; Label: React.ForwardRefExoticComponent>; };