'use client' import type { FC } from 'react' import { cn } from '@langgenius/dify-ui/cn' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from '@langgenius/dify-ui/dropdown-menu' import { RiDeleteBinLine, RiEditLine, } from '@remixicon/react' import { useBoolean } from 'ahooks' import * as React from 'react' import { useEffect, useState } from 'react' import { useTranslation } from 'react-i18next' import { Pin02 } from '../../base/icons/src/vender/line/general' import s from './style.module.css' type IItemOperationProps = { className?: string isItemHovering?: boolean isPinned: boolean isShowRenameConversation?: boolean onRenameConversation?: () => void isShowDelete: boolean togglePin: () => void onDelete: () => void } const ItemOperation: FC = ({ className, isItemHovering, isPinned, togglePin, isShowRenameConversation, onRenameConversation, isShowDelete, onDelete, }) => { const { t } = useTranslation('explore') const { t: tCommon } = useTranslation('common') const [open, setOpen] = useState(false) const [isHovering, { setTrue: setIsHovering, setFalse: setNotHovering }] = useBoolean(false) useEffect(() => { if (!isItemHovering && !isHovering) setOpen(false) }, [isItemHovering, isHovering]) return ( { e.stopPropagation() }} > {tCommon('operation.more')} e.stopPropagation(), }} > { e.stopPropagation() togglePin() }} > {isPinned ? t('sidebar.action.unpin') : t('sidebar.action.pin')} {isShowRenameConversation && ( { e.stopPropagation() onRenameConversation?.() }} > {t('sidebar.action.rename')} )} {isShowDelete && ( { e.stopPropagation() onDelete() }} > {t('sidebar.action.delete')} )} ) } export default React.memo(ItemOperation)