| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778 | 
							- '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<IItemProps> = ({
 
-   isCurrent,
 
-   item,
 
-   onClick,
 
-   isPinned,
 
-   togglePin,
 
-   onDelete,
 
-   onRenameConversation,
 
- }) => {
 
-   const ItemIcon = isCurrent ? ChatBubbleOvalLeftEllipsisSolidIcon : ChatBubbleOvalLeftEllipsisIcon
 
-   const ref = useRef(null)
 
-   const isHovering = useHover(ref)
 
-   return (
 
-     <div
 
-       ref={ref}
 
-       onClick={() => 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',
 
-       )}
 
-     >
 
-       <div className='flex items-center w-0 grow'>
 
-         <ItemIcon
 
-           className={cn(
 
-             isCurrent
 
-               ? 'text-primary-600'
 
-               : 'text-gray-400 group-hover:text-gray-500',
 
-             'mr-3 h-5 w-5 flex-shrink-0',
 
-           )}
 
-           aria-hidden="true"
 
-         />
 
-         <span>{item.name}</span>
 
-       </div>
 
-       {item.id !== '-1' && (
 
-         <div className='shrink-0 h-6' onClick={e => e.stopPropagation()}>
 
-           <ItemOperation
 
-             isPinned={isPinned}
 
-             isItemHovering={isHovering}
 
-             togglePin={() => togglePin(item.id)}
 
-             isShowDelete
 
-             isShowRenameConversation
 
-             onRenameConversation={() => onRenameConversation(item)}
 
-             onDelete={() => onDelete(item.id)}
 
-           />
 
-         </div>
 
-       )}
 
-     </div>
 
-   )
 
- }
 
- export default React.memo(Item)
 
 
  |