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;