import { type ReactNode } from "react";
/**
* @since 5.0.0 The `download` icon has been renamed to `upload`.
*/
export interface ConfigurableIcons {
/**
* The icon for navigating backwards or closing an item to the left.
*
* @defaultValue `keyboard_arrow_left`
*/
back?: ReactNode;
/**
* The icon to use when clearing content from a text field.
*
* @defaultValue `clear`
* @since 6.0.0
*/
clear?: ReactNode;
/**
* @defaultValue `close`
*
* @since 6.0.0
*/
close?: ReactNode;
/**
* The icon to use for unchecked checkboxes.
*
* @defaultValue `check_box_outline_blank`
* @since 6.0.0 This icon now represents the unchecked state for
* checkboxes.
*/
checkbox?: ReactNode;
/**
* The icon to use for checked checkboxes.
*
* @defaultValue `check_box`
* @since 6.0.0
*/
checkboxChecked?: ReactNode;
/**
* The icon to use for indeterminate checkboxes.
*
* @defaultValue `indeterminate_check_box`
* @since 6.0.0
*/
checkboxIndeterminate?: ReactNode;
/**
* The icon to use for dropdown menus or content that expands vertically in a
* new material instead of inline like the `expander` icon.
*
* @defaultValue `arrow_drop_down`
*/
dropdown?: ReactNode;
/**
* The icon to use when there are form errors.
*
* @since 2.5.0
* @defaultValue `error_outline`
*/
error?: ReactNode;
/**
* The icon to use for expanding content vertically.
*
* @defaultValue `keyboard_arrow_down`
*/
expander?: ReactNode;
/**
* The icon for navigating forwards or closing an item to the right. This is
* also used internally for nested dropdown menus.
*
* @defaultValue `keyboard_arrow_right`
*/
forward?: ReactNode;
/**
* The general to use for displaying a main navigation menu (usually a
* hamburger menu).
*
* @defaultValue `menu`
*/
menu?: ReactNode;
/**
* The icon for displaying notifications. This is used internally in the
* `BadgedButton` in the `@react-md/badge` package.
*
* @defaultValue `notifications`
*/
notification?: ReactNode;
/**
* The icon for temporarily displaying a password's field value as plain text.
*
* @defaultValue `remove_red_eye`
*/
password?: ReactNode;
/**
* The icon to use for unchecked radio buttons.
*
* @defaultValue `radio_button_unchecked`
* @since 6.0.0 This icon now represents the unchecked state for
* radios.
*/
radio?: ReactNode;
/**
* The icon to use for checked radio buttons.
*
* @defaultValue `radio_button_checked`
*/
radioChecked?: ReactNode;
/**
* The icon to use when removing elements.
*
* @defaultValue `cancel`
*/
remove?: ReactNode;
/**
* The icon to use for showing that something has been selected that is not a
* radio or checkbox. This is used internally for the `Chip` in the
* `@react-md/core` package.
*
* @defaultValue `check`
*/
selected?: ReactNode;
/**
* The icon to represent sorting content.
*
* @defaultValue `arrow_upward`
*/
sort?: ReactNode;
/**
* The icon to use for the `FileInput` component (normally file
* uploads).
*
* @since 5.0.0
* @defaultValue `file_upload`
*/
upload?: ReactNode;
}
export type ConfiguredIcons = Required;
/**
* @since 6.0.0
*/
export type ConfigurableIconName = keyof ConfigurableIcons;
/**
* This is a **mutable** object of icons that `react-md` will use for rendering
* icons within components. The defaults will use the font versions of material
* icons.
*
* @see {@link configureIcons} for a quick way of overriding the configuration
* or the example below.
*
* @example Mutating this object
* ```tsx
* import { ICON_CONFIG } from "@react-md/core/icon/config";
* import ArrowDropDownIcon from "@react-md/material-icons/ArrowDropDownIcon";
* import ArrowUpwardIcon from "@react-md/material-icons/ArrowUpwardIcon";
* import CancelIcon from "@react-md/material-icons/CancelIcon";
* import CheckBoxIcon from "@react-md/material-icons/CheckBoxIcon";
* import CheckBoxOutlineBlankIcon from "@react-md/material-icons/CheckBoxOutlineBlankIcon";
* import CheckIcon from "@react-md/material-icons/CheckIcon";
* import CloseIcon from "@react-md/material-icons/CloseIcon";
* import ErrorOutlineIcon from "@react-md/material-icons/ErrorOutlineIcon";
* import FileUploadIcon from "@react-md/material-icons/FileUploadIcon";
* import IndeterminateCheckBoxIcon from "@react-md/material-icons/IndeterminateCheckBoxIcon";
* import KeyboardArrowDownIcon from "@react-md/material-icons/KeyboardArrowDownIcon";
* import KeyboardArrowLeftIcon from "@react-md/material-icons/KeyboardArrowLeftIcon";
* import KeyboardArrowRightIcon from "@react-md/material-icons/KeyboardArrowRightIcon";
* import MenuIcon from "@react-md/material-icons/MenuIcon";
* import NotificationsIcon from "@react-md/material-icons/NotificationsIcon";
* import RadioButtonCheckedIcon from "@react-md/material-icons/RadioButtonCheckedIcon";
* import RadioButtonUncheckedIcon from "@react-md/material-icons/RadioButtonUncheckedIcon";
* import RemoveRedEyeIcon from "@react-md/material-icons/RemoveRedEyeIcon";
*
* ICON_CONFIG.back = ;
* ICON_CONFIG.close = ;
* ICON_CONFIG.checkbox = ;
* ICON_CONFIG.checkboxChecked = ;
* ICON_CONFIG.checkboxIndeterminate = ;
* ICON_CONFIG.dropdown = ;
* ICON_CONFIG.error = ;
* ICON_CONFIG.expander = ;
* ICON_CONFIG.forward = ;
* ICON_CONFIG.menu = ;
* ICON_CONFIG.notification = ;
* ICON_CONFIG.password = ;
* ICON_CONFIG.radio = ;
* ICON_CONFIG.radioChecked = ;
* ICON_CONFIG.remove = ;
* ICON_CONFIG.selected = ;
* ICON_CONFIG.sort = ;
* ICON_CONFIG.upload = ;
* ```
*
* @since 6.0.0
*/
export declare const ICON_CONFIG: ConfiguredIcons;
/**
* A convenience helper to reconfigure icons within `react-md`.
*
* @example Using SVG Material Icons
* ```tsx
* "use client";
* import { configureIcons } from "@react-md/core/icon/config";
* import ArrowDropDownIcon from "@react-md/material-icons/ArrowDropDownIcon";
* import ArrowUpwardIcon from "@react-md/material-icons/ArrowUpwardIcon";
* import CancelIcon from "@react-md/material-icons/CancelIcon";
* import CheckBoxIcon from "@react-md/material-icons/CheckBoxIcon";
* import CheckBoxOutlineBlankIcon from "@react-md/material-icons/CheckBoxOutlineBlankIcon";
* import CheckIcon from "@react-md/material-icons/CheckIcon";
* import CloseIcon from "@react-md/material-icons/CloseIcon";
* import ErrorOutlineIcon from "@react-md/material-icons/ErrorOutlineIcon";
* import FileUploadIcon from "@react-md/material-icons/FileUploadIcon";
* import IndeterminateCheckBoxIcon from "@react-md/material-icons/IndeterminateCheckBoxIcon";
* import KeyboardArrowDownIcon from "@react-md/material-icons/KeyboardArrowDownIcon";
* import KeyboardArrowLeftIcon from "@react-md/material-icons/KeyboardArrowLeftIcon";
* import KeyboardArrowRightIcon from "@react-md/material-icons/KeyboardArrowRightIcon";
* import MenuIcon from "@react-md/material-icons/MenuIcon";
* import NotificationsIcon from "@react-md/material-icons/NotificationsIcon";
* import RadioButtonCheckedIcon from "@react-md/material-icons/RadioButtonCheckedIcon";
* import RadioButtonUncheckedIcon from "@react-md/material-icons/RadioButtonUncheckedIcon";
* import RemoveRedEyeIcon from "@react-md/material-icons/RemoveRedEyeIcon";
*
* configureIcons({
* back: ,
* close: ,
* checkbox: ,
* checkboxChecked: ,
* checkboxIndeterminate: ,
* dropdown: ,
* error: ,
* expander: ,
* forward: ,
* menu: ,
* notification: ,
* password: ,
* radio: ,
* radioChecked: ,
* remove: ,
* selected: ,
* sort: ,
* upload: ,
* });
* ```
*
* @since 6.0.0
*/
export declare function configureIcons(overrides: ConfiguredIcons): void;
/**
* This is mostly an internal helper to get a specific icon by name and allowing
* a custom prop to override this behavior. The main benefit of this function is
* that icons can be removed if the override is set to `null`.
*
* @since 6.0.0
*/
export declare function getIcon(name: ConfigurableIconName, override?: ReactNode): ReactNode;