import type { ReactNode } from 'react' import * as React from 'react' import { useTranslation } from 'react-i18next' import Badge from '@/app/components/base/badge' import { cn } from '@/utils/classnames' import { ArrowShape } from '../../base/icons/src/vender/knowledge' import { EffectColor } from './chunk-structure/types' 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('stepTwo.recommend', { ns: 'datasetCreation' })} ) }
{ description && (
{description}
) }
{ !!(children && showChildren) && (
{children}
) }
) } export default React.memo(OptionCard) as typeof OptionCard