'use client' import type { FC } from 'react' import React, { useState } from 'react' import type { Placement } from '@floating-ui/react' import { RiArrowDownSLine, } from '@remixicon/react' import { useTranslation } from 'react-i18next' import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger } from '@/app/components/base/portal-to-follow-elem' import cn from '@/utils/classnames' type Props = { title: string isPinned: boolean isShowRenameConversation?: boolean onRenameConversation?: () => void isShowDelete: boolean togglePin: () => void onDelete: () => void placement?: Placement } const Operation: FC = ({ title, isPinned, togglePin, isShowRenameConversation, onRenameConversation, isShowDelete, onDelete, placement = 'bottom-start', }) => { const { t } = useTranslation() const [open, setOpen] = useState(false) return ( setOpen(v => !v)} >
{title}
{isPinned ? t('explore.sidebar.action.unpin') : t('explore.sidebar.action.pin')}
{isShowRenameConversation && (
{t('explore.sidebar.action.rename')}
)} {isShowDelete && (
{t('explore.sidebar.action.delete')}
)}
) } export default React.memo(Operation)