'use client' import type { FC } from 'react' import React, { useRef } from 'react' import cn from 'classnames' import { ChatBubbleOvalLeftEllipsisIcon as ChatBubbleOvalLeftEllipsisSolidIcon } from '@heroicons/react/24/solid' import { ChatBubbleOvalLeftEllipsisIcon, } from '@heroicons/react/24/outline' import { useHover } from 'ahooks' import ItemOperation from '@/app/components/explore/item-operation' import type { ConversationItem } from '@/models/share' export type IItemProps = { onClick: (id: string) => void item: ConversationItem isCurrent: boolean isPinned: boolean togglePin: (id: string) => void onDelete: (id: string) => void onRenameConversation: (item: ConversationItem) => void } const Item: FC = ({ isCurrent, item, onClick, isPinned, togglePin, onDelete, onRenameConversation, }) => { const ItemIcon = isCurrent ? ChatBubbleOvalLeftEllipsisSolidIcon : ChatBubbleOvalLeftEllipsisIcon const ref = useRef(null) const isHovering = useHover(ref) return (
onClick(item.id)} key={item.id} className={cn( isCurrent ? 'bg-primary-50 text-primary-600' : 'text-gray-700 hover:bg-gray-200 hover:text-gray-700', 'group flex justify-between items-center rounded-md px-2 py-2 text-sm font-medium cursor-pointer', )} >
{item.id !== '-1' && (
e.stopPropagation()}> togglePin(item.id)} isShowDelete isShowRenameConversation onRenameConversation={() => onRenameConversation(item)} onDelete={() => onDelete(item.id)} />
)}
) } export default React.memo(Item)