| import { forwardRef } from 'react' | |
| import { generate } from './utils' | |
| import type { AbstractNode } from './utils' | |
| export type IconData = { | |
| name: string | |
| icon: AbstractNode | |
| } | |
| export type IconBaseProps = { | |
| data: IconData | |
| className?: string | |
| onClick?: React.MouseEventHandler<SVGElement> | |
| style?: React.CSSProperties | |
| } | |
| const IconBase = forwardRef<React.MutableRefObject<HTMLOrSVGElement>, IconBaseProps>((props, ref) => { | |
| const { data, className, onClick, style, ...restProps } = props | |
| return generate(data.icon, `svg-${data.name}`, { | |
| className, | |
| onClick, | |
| style, | |
| 'data-icon': data.name, | |
| 'aria-hidden': 'true', | |
| ...restProps, | |
| 'ref': ref, | |
| }) | |
| }) | |
| export default IconBase | |