dify/web/app/components/base/icons/IconBase.tsx
Stephen Zhou a84c2d36a3
style: format with vp fmt (#38803)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-07-12 15:57:46 +00:00

38 lines
718 B
TypeScript

import type { AbstractNode } from './utils'
import { generate } from './utils'
export type IconData = {
name: string
icon: AbstractNode
}
type IconBaseProps = {
data: IconData
className?: string
onClick?: React.MouseEventHandler<SVGElement>
style?: React.CSSProperties
}
const IconBase = ({
ref,
...props
}: IconBaseProps & {
ref?: React.RefObject<React.RefObject<HTMLOrSVGElement>>
}) => {
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,
})
}
IconBase.displayName = 'IconBase'
export default IconBase