"use client"; import { ConversationSummary } from "@/features/agent/types"; import { ConversationHeader, type ConversationFilter } from "./ConversationHeader"; import { ConversationSearch } from "./ConversationSearch"; import { ConversationList } from "./ConversationList"; import { Button } from "@/components/ui/button"; import { Plus } from "lucide-react"; import { useI18n } from "@/lib/i18n/provider"; type ConversationStatus = "open" | "closed"; interface ConversationSidebarProps { conversations: ConversationSummary[]; selectedConversationId: number | null; searchQuery: string; onSearchChange: (value: string) => void; onSelectConversation: (id: number) => void; filter: ConversationFilter; onFilterChange: (filter: ConversationFilter) => void; status?: ConversationStatus; onStatusChange?: (status: ConversationStatus) => void; /** 内部对话(知识库测试)模式:显示「新建内部对话」按钮,隐藏筛选 */ mode?: "visitor" | "internal"; onNewClick?: () => void; hasMore?: boolean; loadingMore?: boolean; onLoadMore?: () => void; } export function ConversationSidebar({ conversations, selectedConversationId, searchQuery, onSearchChange, onSelectConversation, filter, onFilterChange, status = "open", onStatusChange, mode = "visitor", onNewClick, hasMore, loadingMore, onLoadMore, }: ConversationSidebarProps) { const { t } = useI18n(); return (
{mode === "internal" ? (
{t("agent.internalChat.title")} {onNewClick && ( )}
) : ( )}
); }