'use client' import type { FC } from 'react' import React, { useState } from 'react' import { useContext } from 'use-context-selector' import cn from 'classnames' import { useTranslation } from 'react-i18next' import type { Collection, Tool } from '../types' import Button from '../../base/button' import { CollectionType } from '../types' import TooltipPlus from '../../base/tooltip-plus' import I18n from '@/context/i18n' import SettingBuiltInTool from '@/app/components/app/configuration/config/agent/agent-tools/setting-built-in-tool' import { getModelRuntimeSupported } from '@/utils/language' type Props = { collection: Collection icon: JSX.Element payload: Tool isInToolsPage: boolean isToolNumMax: boolean added?: boolean onAdd?: (payload: Tool) => void } const Item: FC = ({ collection, icon, payload, isInToolsPage, isToolNumMax, added, onAdd, }) => { const { t } = useTranslation() const { locale } = useContext(I18n) const language = getModelRuntimeSupported(locale) const isBuiltIn = collection.type === CollectionType.builtIn const canShowDetail = !isBuiltIn || (isBuiltIn && isInToolsPage) const [showDetail, setShowDetail] = useState(false) const addBtn = return ( <>
canShowDetail && setShowDetail(true)} >
{icon}
{payload.label[language]}
{payload.description[language]}
{!isToolNumMax && onAdd && ( !collection.is_team_authorization ? {addBtn} : addBtn )}
{showDetail && isBuiltIn && ( { setShowDetail(false) }} /> )} ) } export default React.memo(Item)