mirror of
https://git.mirrors.martin98.com/https://github.com/langgenius/dify.git
synced 2025-05-15 09:08:19 +08:00
58 lines
1.3 KiB
TypeScript
58 lines
1.3 KiB
TypeScript
'use client'
|
|
|
|
import type { FC } from 'react'
|
|
import { init } from 'emoji-mart'
|
|
import data from '@emoji-mart/data'
|
|
import style from './style.module.css'
|
|
import classNames from '@/utils/classnames'
|
|
import type { AppIconType } from '@/types/app'
|
|
|
|
init({ data })
|
|
|
|
export type AppIconProps = {
|
|
size?: 'xs' | 'tiny' | 'small' | 'medium' | 'large'
|
|
rounded?: boolean
|
|
iconType?: AppIconType | null
|
|
icon?: string
|
|
background?: string | null
|
|
imageUrl?: string | null
|
|
className?: string
|
|
innerIcon?: React.ReactNode
|
|
onClick?: () => void
|
|
}
|
|
|
|
const AppIcon: FC<AppIconProps> = ({
|
|
size = 'medium',
|
|
rounded = false,
|
|
iconType,
|
|
icon,
|
|
background,
|
|
imageUrl,
|
|
className,
|
|
innerIcon,
|
|
onClick,
|
|
}) => {
|
|
const wrapperClassName = classNames(
|
|
style.appIcon,
|
|
size !== 'medium' && style[size],
|
|
rounded && style.rounded,
|
|
className ?? '',
|
|
'overflow-hidden',
|
|
)
|
|
|
|
const isValidImageIcon = iconType === 'image' && imageUrl
|
|
|
|
return <span
|
|
className={wrapperClassName}
|
|
style={{ background: isValidImageIcon ? undefined : (background || '#FFEAD5') }}
|
|
onClick={onClick}
|
|
>
|
|
{isValidImageIcon
|
|
? <img src={imageUrl} className="w-full h-full" alt="app icon" />
|
|
: (innerIcon || ((icon && icon !== '') ? <em-emoji id={icon} /> : <em-emoji id='🤖' />))
|
|
}
|
|
</span>
|
|
}
|
|
|
|
export default AppIcon
|