import type { ReactNode } from 'react' import React from 'react' import cn from '@/utils/classnames' import Badge from '@/app/components/base/badge' import { useTranslation } from 'react-i18next' import { EffectColor } from './chunk-structure/types' import { ArrowShape } from '../../base/icons/src/vender/knowledge' const HEADER_EFFECT_MAP: Record = { [EffectColor.indigo]: 'bg-util-colors-indigo-indigo-600 opacity-50', [EffectColor.blueLight]: 'bg-util-colors-blue-light-blue-light-600 opacity-80', [EffectColor.orange]: 'bg-util-colors-orange-orange-500 opacity-50', [EffectColor.purple]: 'bg-util-colors-purple-purple-600 opacity-80', } type OptionCardProps = { id: T className?: string isActive?: boolean icon?: ReactNode iconActiveColor?: string title: string description?: string isRecommended?: boolean effectColor?: EffectColor showEffectColor?: boolean disabled?: boolean onClick?: (id: T) => void children?: ReactNode showChildren?: boolean ref?: React.Ref } const OptionCard = ({ id, className, isActive, icon, iconActiveColor, title, description, isRecommended, effectColor, showEffectColor, disabled, onClick, children, showChildren, ref, }: OptionCardProps) => { const { t } = useTranslation() return (
{ if (isActive || disabled) return onClick?.(id) }} >
{ effectColor && showEffectColor && (
) } { icon && (
{icon}
) }
{title} { isRecommended && ( {t('datasetCreation.stepTwo.recommend')} ) }
{ description && (
{description}
) }
{ children && showChildren && (
{children}
) }
) } export default React.memo(OptionCard) as typeof OptionCard