"use client"; import { useState } from "react"; import Link from "next/link"; import { Search, X, Plus } from "lucide-react"; import { useSessions, useSessionSearch } from "@/lib/hooks"; import { SessionCard } from "@/components/SessionCard"; const PLATFORMS = [ { id: null, label: "All" }, { id: "cli", label: "CLI" }, { id: "telegram", label: "Telegram" }, { id: "discord", label: "Discord" }, { id: "web", label: "Web" }, ] as const; export default function HistoryPage() { const [filter, setFilter] = useState(null); const [query, setQuery] = useState(""); const [searching, setSearching] = useState(false); const [limit, setLimit] = useState(20); const { data: sessionsData, isLoading } = useSessions(limit, filter || undefined); const hasMore = (sessionsData?.total || 0) > (sessionsData?.items?.length || 0); const { data: searchData, isFetching: searchLoading } = useSessionSearch(searching ? query : ""); const showSearch = searching && query.length >= 2; return (

History

{ setQuery(e.target.value); setSearching(true); }} onFocus={() => setSearching(true)} placeholder="Search sessions..." className="w-full pl-9 pr-9 py-2.5 rounded-xl text-sm outline-none transition-colors" style={{ background: "var(--bg-raised)", border: "1px solid var(--border)", color: "var(--text-1)" }} /> {query && ( )}
{showSearch ? (
{searchLoading ? "Searching..." : (searchData?.count || 0) + " results"}
{searchData?.results?.map((r) => (
{r.session_title || r.session_id.slice(0, 8)}

{r.content}

))}
) : ( <>
{PLATFORMS.map((p) => ( ))}
{isLoading ? (
{[...Array(5)].map((_, i) => (
))}
) : (
{sessionsData?.items?.map((s) => ( ))} {sessionsData?.items?.length === 0 && (

No sessions found

)} {hasMore && ( )}
)} )}
); }