| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 | 'use client'import type { FC } from 'react'import React from 'react'import { useTranslation } from 'react-i18next'import cn from 'classnames'import exploreI18n from '@/i18n/lang/explore.en'import type { AppCategory } from '@/models/explore'const categoryI18n = exploreI18n.categoryexport type ICategoryProps = {  className?: string  list: AppCategory[]  value: string  onChange: (value: AppCategory | '') => void}const Category: FC<ICategoryProps> = ({  className,  list,  value,  onChange,}) => {  const { t } = useTranslation()  const itemClassName = (isSelected: boolean) => cn(isSelected ? 'bg-white text-primary-600 border-gray-200 font-semibold' : 'border-transparent font-medium', 'flex items-center h-7 px-3 border cursor-pointer rounded-lg')  const itemStyle = (isSelected: boolean) => isSelected ? { boxShadow: '0px 1px 2px rgba(16, 24, 40, 0.05)' } : {}  return (    <div className={cn(className, 'flex space-x-1 text-[13px] flex-wrap')}>      <div        className={itemClassName(value === '')}        style={itemStyle(value === '')}        onClick={() => onChange('')}      >        {t('explore.apps.allCategories')}      </div>      {list.map(name => (        <div          key={name}          className={itemClassName(name === value)}          style={itemStyle(name === value)}          onClick={() => onChange(name)}        >          {categoryI18n[name] ? t(`explore.category.${name}`) : name}        </div>      ))}    </div>  )}export default React.memo(Category)
 |