import { jsx as _jsx } from "react/jsx-runtime";
import { FontIcon } from "./FontIcon.js";
/**
 * 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";
 * import ArrowDropDownIcon from "@react-md/material-icons/ArrowDropDownIcon";
 * import ArrowUpwardIcon from "@react-md/material-icons/ArrowUpwardIcon";
 * 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 = <KeyboardArrowLeftIcon />;
 * ICON_CONFIG.close = <CloseIcon />;
 * ICON_CONFIG.checkbox = <CheckBoxOutlineBlankIcon />;
 * ICON_CONFIG.checkboxChecked = <CheckBoxIcon />;
 * ICON_CONFIG.checkboxIndeterminate = <IndeterminateCheckBoxIcon />;
 * ICON_CONFIG.dropdown = <ArrowDropDownIcon />;
 * ICON_CONFIG.error = <ErrorOutlineIcon />;
 * ICON_CONFIG.expander = <KeyboardArrowDownIcon />;
 * ICON_CONFIG.forward = <KeyboardArrowRightIcon />;
 * ICON_CONFIG.menu = <MenuIcon />;
 * ICON_CONFIG.notification = <NotificationsIcon />;
 * ICON_CONFIG.password = <RemoveRedEyeIcon />;
 * ICON_CONFIG.radio = <RadioButtonUncheckedIcon />;
 * ICON_CONFIG.radioChecked = <RadioButtonCheckedIcon />;
 * ICON_CONFIG.selected = <CheckIcon />;
 * ICON_CONFIG.sort = <ArrowUpwardIcon />;
 * ICON_CONFIG.upload = <FileUploadIcon />;
 * ```
 *
 *
 * @since 6.0.0
 */ export const ICON_CONFIG = {
    back: /*#__PURE__*/ _jsx(FontIcon, {
        children: "keyboard_arrow_left"
    }),
    clear: /*#__PURE__*/ _jsx(FontIcon, {
        children: "clear"
    }),
    close: /*#__PURE__*/ _jsx(FontIcon, {
        children: "close"
    }),
    checkbox: /*#__PURE__*/ _jsx(FontIcon, {
        children: "check_box_outline_blank"
    }),
    checkboxChecked: /*#__PURE__*/ _jsx(FontIcon, {
        children: "check_box"
    }),
    checkboxIndeterminate: /*#__PURE__*/ _jsx(FontIcon, {
        children: "indeterminate_check_box"
    }),
    dropdown: /*#__PURE__*/ _jsx(FontIcon, {
        children: "arrow_drop_down"
    }),
    error: /*#__PURE__*/ _jsx(FontIcon, {
        children: "error_outline"
    }),
    expander: /*#__PURE__*/ _jsx(FontIcon, {
        children: "keyboard_arrow_down"
    }),
    forward: /*#__PURE__*/ _jsx(FontIcon, {
        children: "keyboard_arrow_right"
    }),
    menu: /*#__PURE__*/ _jsx(FontIcon, {
        children: "menu"
    }),
    notification: /*#__PURE__*/ _jsx(FontIcon, {
        children: "notifications"
    }),
    password: /*#__PURE__*/ _jsx(FontIcon, {
        children: "remove_red_eye"
    }),
    radio: /*#__PURE__*/ _jsx(FontIcon, {
        children: "radio_button_unchecked"
    }),
    radioChecked: /*#__PURE__*/ _jsx(FontIcon, {
        children: "radio_button_checked"
    }),
    selected: /*#__PURE__*/ _jsx(FontIcon, {
        children: "check"
    }),
    sort: /*#__PURE__*/ _jsx(FontIcon, {
        children: "arrow_upward"
    }),
    upload: /*#__PURE__*/ _jsx(FontIcon, {
        children: "file_upload"
    })
};
/**
 * A convenience helper to reconfigure icons within `react-md`.
 *
 * @example Using SVG Material Icons
 * ```tsx
 * "use client";
 * import { configureIcons } from "@react-md/core";
 * import ArrowDropDownIcon from "@react-md/material-icons/ArrowDropDownIcon";
 * import ArrowUpwardIcon from "@react-md/material-icons/ArrowUpwardIcon";
 * 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: <KeyboardArrowLeftIcon />,
 *   close: <CloseIcon />,
 *   checkbox: <CheckBoxOutlineBlankIcon />,
 *   checkboxChecked: <CheckBoxIcon />,
 *   checkboxIndeterminate: <IndeterminateCheckBoxIcon />,
 *   dropdown: <ArrowDropDownIcon />,
 *   error: <ErrorOutlineIcon />,
 *   expander: <KeyboardArrowDownIcon />,
 *   forward: <KeyboardArrowRightIcon />,
 *   menu: <MenuIcon />,
 *   notification: <NotificationsIcon />,
 *   password: <RemoveRedEyeIcon />,
 *   radio: <RadioButtonUncheckedIcon />,
 *   radioChecked: <RadioButtonCheckedIcon />,
 *   selected: <CheckIcon />,
 *   sort: <ArrowUpwardIcon />,
 *   upload: <FileUploadIcon />,
 * });
 * ```
 *
 * @since 6.0.0
 */ export function configureIcons(overrides) {
    Object.entries(overrides).forEach(([name, value])=>{
        if (process.env.NODE_ENV !== "production" && !(name in ICON_CONFIG)) {
            throw new Error(`${name} is an invalid react-md icon name.`);
        }
        ICON_CONFIG[name] = value;
    });
}
/**
 * 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 function getIcon(name, override) {
    if (typeof override !== "undefined") {
        return override;
    }
    return ICON_CONFIG[name];
}

//# sourceMappingURL=iconConfig.js.map