@ant-design/icons
Version:
[](https://npmjs.org/package/@ant-design/icons) [](https://npmjs.org/package/@ant-design/icons)
66 lines (63 loc) • 2.21 kB
JavaScript
'use client';
function _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
import * as React from 'react';
import classNames from 'classnames';
import { blue } from '@ant-design/colors';
import Context from "./Context";
import ReactIcon from "./IconBase";
import { getTwoToneColor, setTwoToneColor } from "./twoTonePrimaryColor";
import { normalizeTwoToneColors } from "../utils";
// Initial setting
// should move it to antd main repo?
setTwoToneColor(blue.primary);
// https://github.com/DefinitelyTyped/DefinitelyTyped/issues/34757#issuecomment-488848720
const Icon = /*#__PURE__*/React.forwardRef((props, ref) => {
const {
// affect outter <i>...</i>
className,
// affect inner <svg>...</svg>
icon,
spin,
rotate,
tabIndex,
onClick,
// other
twoToneColor,
...restProps
} = props;
const {
prefixCls = 'anticon',
rootClassName
} = React.useContext(Context);
const classString = classNames(rootClassName, prefixCls, {
[`${prefixCls}-${icon.name}`]: !!icon.name,
[`${prefixCls}-spin`]: !!spin || icon.name === 'loading'
}, className);
let iconTabIndex = tabIndex;
if (iconTabIndex === undefined && onClick) {
iconTabIndex = -1;
}
const svgStyle = rotate ? {
msTransform: `rotate(${rotate}deg)`,
transform: `rotate(${rotate}deg)`
} : undefined;
const [primaryColor, secondaryColor] = normalizeTwoToneColors(twoToneColor);
return /*#__PURE__*/React.createElement("span", _extends({
role: "img",
"aria-label": icon.name
}, restProps, {
ref: ref,
tabIndex: iconTabIndex,
onClick: onClick,
className: classString
}), /*#__PURE__*/React.createElement(ReactIcon, {
icon: icon,
primaryColor: primaryColor,
secondaryColor: secondaryColor,
style: svgStyle
}));
});
Icon.displayName = 'AntdIcon';
Icon.getTwoToneColor = getTwoToneColor;
Icon.setTwoToneColor = setTwoToneColor;
export default Icon;