| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 | 'use client'import type { FC } from 'react'import React from 'react'import { useTranslation } from 'react-i18next'import cn from '@/utils/classnames'import exploreI18n from '@/i18n/en-US/explore'import type { AppCategory } from '@/models/explore'import { ThumbsUp } from '@/app/components/base/icons/src/vender/line/alertsAndFeedback'const categoryI18n = exploreI18n.categoryexport type ICategoryProps = {  className?: string  list: AppCategory[]  value: string  onChange: (value: AppCategory | string) => void  /**   * default value for search param 'category' in en   */  allCategoriesEn: string}const Category: FC<ICategoryProps> = ({  className,  list,  value,  onChange,  allCategoriesEn,}) => {  const { t } = useTranslation()  const isAllCategories = !list.includes(value as AppCategory)  const itemClassName = (isSelected: boolean) => cn(    'flex items-center px-3 py-[7px] h-[32px] rounded-lg border-[0.5px] border-transparent text-gray-700 font-medium leading-[18px] cursor-pointer hover:bg-gray-200',    isSelected && 'bg-white border-gray-200 shadow-xs text-primary-600 hover:bg-white',  )  return (    <div className={cn(className, 'flex space-x-1 text-[13px] flex-wrap')}>      <div        className={itemClassName(isAllCategories)}        onClick={() => onChange(allCategoriesEn)}      >        <ThumbsUp className='mr-1 w-3.5 h-3.5' />        {t('explore.apps.allCategories')}      </div>      {list.map(name => (        <div          key={name}          className={itemClassName(name === value)}          onClick={() => onChange(name)}        >          {categoryI18n[name] ? t(`explore.category.${name}`) : name}        </div>      ))}    </div>  )}export default React.memo(Category)
 |