| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172 | 
							- 'use client'
 
- import type { FC } from 'react'
 
- import { init } from 'emoji-mart'
 
- import data from '@emoji-mart/data'
 
- import { cva } from 'class-variance-authority'
 
- import type { AppIconType } from '@/types/app'
 
- import classNames from '@/utils/classnames'
 
- init({ data })
 
- export type AppIconProps = {
 
-   size?: 'xs' | 'tiny' | 'small' | 'medium' | 'large' | 'xl' | 'xxl'
 
-   rounded?: boolean
 
-   iconType?: AppIconType | null
 
-   icon?: string
 
-   background?: string | null
 
-   imageUrl?: string | null
 
-   className?: string
 
-   innerIcon?: React.ReactNode
 
-   onClick?: () => void
 
- }
 
- const appIconVariants = cva(
 
-   'flex items-center justify-center relative text-lg rounded-lg grow-0 shrink-0 overflow-hidden leading-none',
 
-   {
 
-     variants: {
 
-       size: {
 
-         xs: 'w-4 h-4 text-xs',
 
-         tiny: 'w-6 h-6 text-base',
 
-         small: 'w-8 h-8 text-xl',
 
-         medium: 'w-9 h-9 text-[22px]',
 
-         large: 'w-10 h-10 text-[24px]',
 
-         xl: 'w-12 h-12 text-[28px]',
 
-         xxl: 'w-14 h-14 text-[32px]',
 
-       },
 
-       rounded: {
 
-         true: 'rounded-full',
 
-       },
 
-     },
 
-     defaultVariants: {
 
-       size: 'medium',
 
-       rounded: false,
 
-     },
 
-   })
 
- const AppIcon: FC<AppIconProps> = ({
 
-   size = 'medium',
 
-   rounded = false,
 
-   iconType,
 
-   icon,
 
-   background,
 
-   imageUrl,
 
-   className,
 
-   innerIcon,
 
-   onClick,
 
- }) => {
 
-   const isValidImageIcon = iconType === 'image' && imageUrl
 
-   return <span
 
-     className={classNames(appIconVariants({ size, rounded }), className)}
 
-     style={{ background: isValidImageIcon ? undefined : (background || '#FFEAD5') }}
 
-     onClick={onClick}
 
-   >
 
-     {isValidImageIcon
 
-       // eslint-disable-next-line @next/next/no-img-element
 
-       ? <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
 
 
  |