index.tsx 942 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import type { FC } from 'react'
  2. import classNames from 'classnames'
  3. import data from '@emoji-mart/data'
  4. import { init } from 'emoji-mart'
  5. import style from './style.module.css'
  6. init({ data })
  7. export type AppIconProps = {
  8. size?: 'tiny' | 'small' | 'medium' | 'large'
  9. rounded?: boolean
  10. icon?: string
  11. background?: string
  12. className?: string
  13. innerIcon?: React.ReactNode
  14. onClick?: () => void
  15. }
  16. const AppIcon: FC<AppIconProps> = ({
  17. size = 'medium',
  18. rounded = false,
  19. icon,
  20. background,
  21. className,
  22. innerIcon,
  23. onClick,
  24. }) => {
  25. return (
  26. <span
  27. className={classNames(
  28. style.appIcon,
  29. size !== 'medium' && style[size],
  30. rounded && style.rounded,
  31. className ?? '',
  32. )}
  33. style={{
  34. background,
  35. }}
  36. onClick={onClick}
  37. >
  38. {innerIcon || ((icon && icon !== '') ? <em-emoji id={icon} /> : <em-emoji id='🤖' />)}
  39. </span>
  40. )
  41. }
  42. export default AppIcon