|
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 |
|
|