import { IconHistory, IconTrash } from "@tabler/icons-react" import dayjs from "dayjs" import type { RefObject } from "react" import { useTranslation } from "react-i18next" import type { SessionSummary } from "@/api/sessions" import { Button } from "@/components/ui/button" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { ScrollArea } from "@/components/ui/scroll-area" interface SessionHistoryMenuProps { sessions: SessionSummary[] activeSessionId: string hasMore: boolean loadError: boolean loadErrorMessage: string observerRef: RefObject onOpenChange: (open: boolean) => void onSwitchSession: (sessionId: string) => void onDeleteSession: (sessionId: string) => void } export function SessionHistoryMenu({ sessions, activeSessionId, hasMore, loadError, loadErrorMessage, observerRef, onOpenChange, onSwitchSession, onDeleteSession, }: SessionHistoryMenuProps) { const { t } = useTranslation() return ( {loadError && ( {loadErrorMessage} )} {sessions.length === 0 && !loadError ? ( {t("chat.noHistory")} ) : ( sessions.map((session) => ( onSwitchSession(session.id)} > {session.title || session.preview} {t("chat.messagesCount", { count: session.message_count, })}{" "} ยท {dayjs(session.updated).fromNow()} )) )} {hasMore && sessions.length > 0 && (
{t("chat.loadingMore")}
)}
) }