UNPKG

6.63 kBJavaScriptView Raw
1"use strict";
2'use client';
3
4var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
5var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
6Object.defineProperty(exports, "__esModule", {
7 value: true
8});
9exports.default = void 0;
10var React = _interopRequireWildcard(require("react"));
11var _propTypes = _interopRequireDefault(require("prop-types"));
12var _clsx = _interopRequireDefault(require("clsx"));
13var _composeClasses = _interopRequireDefault(require("@mui/utils/composeClasses"));
14var _capitalize = _interopRequireDefault(require("../utils/capitalize"));
15var _zeroStyled = require("../zero-styled");
16var _memoTheme = _interopRequireDefault(require("../utils/memoTheme"));
17var _createSimplePaletteValueFilter = _interopRequireDefault(require("../utils/createSimplePaletteValueFilter"));
18var _DefaultPropsProvider = require("../DefaultPropsProvider");
19var _iconClasses = require("./iconClasses");
20var _jsxRuntime = require("react/jsx-runtime");
21const useUtilityClasses = ownerState => {
22 const {
23 color,
24 fontSize,
25 classes
26 } = ownerState;
27 const slots = {
28 root: ['root', color !== 'inherit' && `color${(0, _capitalize.default)(color)}`, `fontSize${(0, _capitalize.default)(fontSize)}`]
29 };
30 return (0, _composeClasses.default)(slots, _iconClasses.getIconUtilityClass, classes);
31};
32const IconRoot = (0, _zeroStyled.styled)('span', {
33 name: 'MuiIcon',
34 slot: 'Root',
35 overridesResolver: (props, styles) => {
36 const {
37 ownerState
38 } = props;
39 return [styles.root, ownerState.color !== 'inherit' && styles[`color${(0, _capitalize.default)(ownerState.color)}`], styles[`fontSize${(0, _capitalize.default)(ownerState.fontSize)}`]];
40 }
41})((0, _memoTheme.default)(({
42 theme
43}) => ({
44 userSelect: 'none',
45 width: '1em',
46 height: '1em',
47 // Chrome fix for https://issues.chromium.org/issues/41375697
48 // To remove at some point.
49 overflow: 'hidden',
50 display: 'inline-block',
51 // allow overflow hidden to take action
52 textAlign: 'center',
53 // support non-square icon
54 flexShrink: 0,
55 variants: [{
56 props: {
57 fontSize: 'inherit'
58 },
59 style: {
60 fontSize: 'inherit'
61 }
62 }, {
63 props: {
64 fontSize: 'small'
65 },
66 style: {
67 fontSize: theme.typography.pxToRem(20)
68 }
69 }, {
70 props: {
71 fontSize: 'medium'
72 },
73 style: {
74 fontSize: theme.typography.pxToRem(24)
75 }
76 }, {
77 props: {
78 fontSize: 'large'
79 },
80 style: {
81 fontSize: theme.typography.pxToRem(36)
82 }
83 }, {
84 props: {
85 color: 'action'
86 },
87 style: {
88 color: (theme.vars || theme).palette.action.active
89 }
90 }, {
91 props: {
92 color: 'disabled'
93 },
94 style: {
95 color: (theme.vars || theme).palette.action.disabled
96 }
97 }, {
98 props: {
99 color: 'inherit'
100 },
101 style: {
102 color: undefined
103 }
104 }, ...Object.entries(theme.palette).filter((0, _createSimplePaletteValueFilter.default)()).map(([color]) => ({
105 props: {
106 color
107 },
108 style: {
109 color: (theme.vars || theme).palette[color].main
110 }
111 }))]
112})));
113const Icon = /*#__PURE__*/React.forwardRef(function Icon(inProps, ref) {
114 const props = (0, _DefaultPropsProvider.useDefaultProps)({
115 props: inProps,
116 name: 'MuiIcon'
117 });
118 const {
119 baseClassName = 'material-icons',
120 className,
121 color = 'inherit',
122 component: Component = 'span',
123 fontSize = 'medium',
124 ...other
125 } = props;
126 const ownerState = {
127 ...props,
128 baseClassName,
129 color,
130 component: Component,
131 fontSize
132 };
133 const classes = useUtilityClasses(ownerState);
134 return /*#__PURE__*/(0, _jsxRuntime.jsx)(IconRoot, {
135 as: Component,
136 className: (0, _clsx.default)(baseClassName,
137 // Prevent the translation of the text content.
138 // The font relies on the exact text content to render the icon.
139 'notranslate', classes.root, className),
140 ownerState: ownerState,
141 "aria-hidden": true,
142 ref: ref,
143 ...other
144 });
145});
146process.env.NODE_ENV !== "production" ? Icon.propTypes /* remove-proptypes */ = {
147 // ┌────────────────────────────── Warning ──────────────────────────────┐
148 // │ These PropTypes are generated from the TypeScript type definitions. │
149 // │ To update them, edit the d.ts file and run `pnpm proptypes`. │
150 // └─────────────────────────────────────────────────────────────────────┘
151 /**
152 * The base class applied to the icon. Defaults to 'material-icons', but can be changed to any
153 * other base class that suits the icon font you're using (for example material-icons-rounded, fas, etc).
154 * @default 'material-icons'
155 */
156 baseClassName: _propTypes.default.string,
157 /**
158 * The name of the icon font ligature.
159 */
160 children: _propTypes.default.node,
161 /**
162 * Override or extend the styles applied to the component.
163 */
164 classes: _propTypes.default.object,
165 /**
166 * @ignore
167 */
168 className: _propTypes.default.string,
169 /**
170 * The color of the component.
171 * It supports both default and custom theme colors, which can be added as shown in the
172 * [palette customization guide](https://mui.com/material-ui/customization/palette/#custom-colors).
173 * @default 'inherit'
174 */
175 color: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['inherit', 'action', 'disabled', 'primary', 'secondary', 'error', 'info', 'success', 'warning']), _propTypes.default.string]),
176 /**
177 * The component used for the root node.
178 * Either a string to use a HTML element or a component.
179 */
180 component: _propTypes.default.elementType,
181 /**
182 * The fontSize applied to the icon. Defaults to 24px, but can be configure to inherit font size.
183 * @default 'medium'
184 */
185 fontSize: _propTypes.default /* @typescript-to-proptypes-ignore */.oneOfType([_propTypes.default.oneOf(['inherit', 'large', 'medium', 'small']), _propTypes.default.string]),
186 /**
187 * The system prop that allows defining system overrides as well as additional CSS styles.
188 */
189 sx: _propTypes.default.oneOfType([_propTypes.default.arrayOf(_propTypes.default.oneOfType([_propTypes.default.func, _propTypes.default.object, _propTypes.default.bool])), _propTypes.default.func, _propTypes.default.object])
190} : void 0;
191if (Icon) {
192 Icon.muiName = 'Icon';
193}
194var _default = exports.default = Icon;
\No newline at end of file