|
'use client' |
|
import React, { useState } from 'react' |
|
import { useContext } from 'use-context-selector' |
|
import type { Collection, Tool } from '../types' |
|
import cn from '@/utils/classnames' |
|
import I18n from '@/context/i18n' |
|
import { getLanguage } from '@/i18n/language' |
|
import SettingBuiltInTool from '@/app/components/app/configuration/config/agent/agent-tools/setting-built-in-tool' |
|
|
|
type Props = { |
|
disabled?: boolean |
|
collection: Collection |
|
tool: Tool |
|
isBuiltIn: boolean |
|
isModel: boolean |
|
} |
|
|
|
const ToolItem = ({ |
|
disabled, |
|
collection, |
|
tool, |
|
isBuiltIn, |
|
isModel, |
|
}: Props) => { |
|
const { locale } = useContext(I18n) |
|
const language = getLanguage(locale) |
|
const [showDetail, setShowDetail] = useState(false) |
|
|
|
return ( |
|
<> |
|
<div |
|
className={cn('mb-2 px-4 py-3 rounded-xl bg-gray-25 border-[0.5px] border-gary-200 shadow-xs cursor-pointer', disabled && 'opacity-50 !cursor-not-allowed')} |
|
onClick={() => !disabled && setShowDetail(true)} |
|
> |
|
<div className='text-gray-800 font-semibold text-sm leading-5'>{tool.label[language]}</div> |
|
<div className='mt-0.5 text-xs leading-[18px] text-gray-500 line-clamp-2' title={tool.description[language]}>{tool.description[language]}</div> |
|
</div> |
|
{showDetail && ( |
|
<SettingBuiltInTool |
|
collection={collection} |
|
toolName={tool.name} |
|
readonly |
|
onHide={() => { |
|
setShowDetail(false) |
|
}} |
|
isBuiltIn={isBuiltIn} |
|
isModel={isModel} |
|
/> |
|
)} |
|
</> |
|
) |
|
} |
|
export default ToolItem |
|
|