import * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';
declare type SelectValue = string | number | null;
declare type NewGDSDropdownContextProps<T extends SelectValue> = {
    /** Type of dropdown. `menu` if the items are actions, `select` if the items are options of which one can be selected. */
    type: 'menu';
} | {
    /** Type of dropdown. `menu` if the items are actions, `select` if the items are options of which one can be selected. */
    type: 'select';
    /** Selected item's value. */
    value?: T;
    /** Function that gets called when the selected item's value changes. */
    onValueChange?: (value: T) => void;
};
export declare type NewGDSDropdownRootProps<T extends SelectValue> = NewGDSDropdownContextProps<T> & DropdownMenuPrimitive.DropdownMenuProps;
export declare type NewGDSDropdownButtonProps = DropdownMenuPrimitive.DropdownMenuTriggerProps;
export declare type NewGDSDropdownMenuProps = DropdownMenuPrimitive.DropdownMenuContentProps;
export declare type NewGDSDropdownMenuItemProps = {
    /** Value of the item. If identical to the `NewGDSDropdown`'s `value`, the item is selected. */
    value?: SelectValue;
    /** The URL the item should link to. When set, the component renders an `a` element instead of a `div`. */
    href?: string;
    /** The link's target, if `href` is set. */
    target?: string;
} & DropdownMenuPrimitive.DropdownMenuItemProps;
export declare type NewGDSDropdownContextData = {
    type: 'menu' | 'select';
    value: SelectValue;
    onValueChange: ((value: SelectValue) => void) | null;
    selectedValue: SelectValue;
    setSelectedValue: (value: SelectValue) => void;
};
export declare const NewGDSDropdownContextDataDefaults: NewGDSDropdownContextData;
/**
 * Compound `NewGDSDropdown` component, mostly used to encapsulate the styles of a dropdown menu and its items.
 * The button that opens/closes the dropdown menu is left for implementation by the consumer.
 *
 * The `type` prop determines the semantics and behavior of the component:
 * - `menu` is for rendering a list of actions to execute, e.g. "View", "Edit" or "Delete".
 * - `select` is for rendering a list of options to select from, e.g. sort options (only one can be selected at a time).
 *
 * Child components: `NewGDSDropdown.Button`, `NewGDSDropdown.Menu`, and `NewGDSDropdown.Menu.Item`.
 */
export declare const NewGDSDropdown: (<T extends SelectValue>({ modal, children, ...props }: NewGDSDropdownRootProps<T>) => import("theme-ui/jsx-runtime").JSX.Element) & {
    Button: ({ asChild, disabled, children, ...props }: NewGDSDropdownButtonProps) => import("theme-ui/jsx-runtime").JSX.Element;
    Menu: (({ onCloseAutoFocus, className, children, ...props }: NewGDSDropdownMenuProps) => import("theme-ui/jsx-runtime").JSX.Element) & {
        Item: ({ value, href, target, disabled, onSelect, className, children, ...props }: NewGDSDropdownMenuItemProps) => import("theme-ui/jsx-runtime").JSX.Element;
    };
};
export {};
