'use client' import type { FC } from 'react' import React from 'react' import { RiArrowDownSLine, RiArrowRightSLine } from '@remixicon/react' import { useBoolean } from 'ahooks' import BlockIcon from '../block-icon' import type { ToolWithProvider } from '../types' import { BlockEnum } from '../types' import type { ToolDefaultValue } from './types' import Tooltip from '@/app/components/base/tooltip' import type { Tool } from '@/app/components/tools/types' import { useGetLanguage } from '@/context/i18n' import cn from '@/utils/classnames' type Props = { className?: string isToolPlugin: boolean // Tool plugin should choose action provider: ToolWithProvider payload: Tool onSelect: (type: BlockEnum, tool?: ToolDefaultValue) => void } const ToolItem: FC = ({ className, isToolPlugin, provider, payload, onSelect, }) => { const language = useGetLanguage() const [isFold, { toggle: toggleFold, }] = useBoolean(false) const FoldIcon = isFold ? RiArrowDownSLine : RiArrowRightSLine const actions = [ 'DuckDuckGo AI Search', 'DuckDuckGo Connect', ] return (
{payload.label[language]}
{payload.description[language]}
)} >
{ if (isToolPlugin) { toggleFold() return } onSelect(BlockEnum.Tool, { provider_id: provider.id, provider_type: provider.type, provider_name: provider.name, tool_name: payload.name, tool_label: payload.label[language], title: payload.label[language], }) }} >
{payload.label[language]}
{isToolPlugin && ( )}
{(!isFold && isToolPlugin) && (
{actions.map(action => (
{ onSelect(BlockEnum.Tool, { provider_id: provider.id, provider_type: provider.type, provider_name: provider.name, tool_name: payload.name, tool_label: payload.label[language], title: payload.label[language], }) }} >
{action}
))}
)}
) } export default React.memo(ToolItem)