ConversationSidebar.tsx 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. "use client";
  2. import { ConversationSummary } from "@/features/agent/types";
  3. import { ConversationHeader, type ConversationFilter } from "./ConversationHeader";
  4. import { ConversationSearch } from "./ConversationSearch";
  5. import { ConversationList } from "./ConversationList";
  6. interface ConversationSidebarProps {
  7. conversations: ConversationSummary[];
  8. selectedConversationId: number | null;
  9. searchQuery: string;
  10. onSearchChange: (value: string) => void;
  11. onSelectConversation: (id: number) => void;
  12. filter: ConversationFilter;
  13. onFilterChange: (filter: ConversationFilter) => void;
  14. }
  15. export function ConversationSidebar({
  16. conversations,
  17. selectedConversationId,
  18. searchQuery,
  19. onSearchChange,
  20. onSelectConversation,
  21. filter,
  22. onFilterChange,
  23. }: ConversationSidebarProps) {
  24. return (
  25. <div className="w-80 bg-white border-r border-gray-200 flex flex-col min-h-0">
  26. <ConversationHeader filter={filter} onFilterChange={onFilterChange} />
  27. <ConversationSearch value={searchQuery} onChange={onSearchChange} />
  28. <ConversationList
  29. conversations={conversations}
  30. selectedConversationId={selectedConversationId}
  31. onSelect={onSelectConversation}
  32. searchQuery={searchQuery}
  33. />
  34. </div>
  35. );
  36. }