MCPcopy
hub / github.com/stephengpope/thepopebot / SidebarHistoryItem

Function SidebarHistoryItem

lib/chat/components/sidebar-history-item.jsx:12–122  ·  view source on GitHub ↗
({ chat, isActive, onDelete, onStar, onRename })

Source from the content-addressed store, hash-verified

10import { cn } from '../utils.js';
11
12export function SidebarHistoryItem({ chat, isActive, onDelete, onStar, onRename }) {
13 const { navigateToChat } = useChatNav();
14 const { setOpenMobile } = useSidebar();
15 const [hovered, setHovered] = useState(false);
16 const [dropdownOpen, setDropdownOpen] = useState(false);
17 const [confirmDelete, setConfirmDelete] = useState(false);
18 const [renameDialogOpen, setRenameDialogOpen] = useState(false);
19
20 const showMenu = hovered || dropdownOpen;
21
22 return (
23 <SidebarMenuItem>
24 <div
25 className="relative group"
26 onMouseEnter={() => setHovered(true)}
27 onMouseLeave={() => setHovered(false)}
28 >
29 <SidebarMenuButton
30 href={chat.codeWorkspaceId && chat.containerName ? `/code/${chat.codeWorkspaceId}` : `/chat/${chat.id}`}
31 className="pr-8"
32 isActive={isActive}
33 onClick={(e) => {
34 e.preventDefault();
35 if (chat.codeWorkspaceId && chat.containerName) {
36 window.location.href = `/code/${chat.codeWorkspaceId}`;
37 } else {
38 navigateToChat(chat.id);
39 }
40 setOpenMobile(false);
41 }}
42 >
43 <span className="relative">
44 {chat.chatMode === 'code' ? <CodeIcon size={14} /> : <AgentIcon size={14} />}
45 {chat.hasChanges ? <span className="absolute -bottom-0.5 -right-0.5 w-2 h-2 rounded-full bg-destructive" /> : null}
46 </span>
47 <span className="truncate flex-1">
48 {chat.title}
49 </span>
50 </SidebarMenuButton>
51
52 <div className={cn(
53 'absolute right-1 top-1/2 -translate-y-1/2 z-10',
54 showMenu ? 'opacity-100' : 'opacity-100 md:opacity-0 md:pointer-events-none'
55 )}>
56 <DropdownMenu open={dropdownOpen} onOpenChange={setDropdownOpen}>
57 <DropdownMenuTrigger asChild>
58 <button
59 className={cn(
60 'rounded-md p-1',
61 'text-muted-foreground hover:text-foreground',
62 'bg-foreground/10 hover:bg-foreground/15'
63 )}
64 aria-label="Chat options"
65 >
66 <MoreHorizontalIcon size={16} />
67 </button>
68 </DropdownMenuTrigger>
69 <DropdownMenuContent align="end" side="bottom">

Callers

nothing calls this directly

Calls 4

useChatNavFunction · 0.90
useSidebarFunction · 0.90
cnFunction · 0.90
navigateToChatFunction · 0.85

Tested by

no test coverage detected