import React, { useState, useEffect } from "react"; import { Session } from "@/entities/Session"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Input } from "@/components/ui/input"; import { Search, FileText } from "lucide-react"; import { format } from "date-fns"; import SessionCard from "../components/sessions/SessionCard"; import SessionDetailModal from "../components/sessions/SessionDetailModal"; export default function AllSessions() { const [sessions, setSessions] = useState([]); const [filteredSessions, setFilteredSessions] = useState([]); const [searchQuery, setSearchQuery] = useState(""); const [isLoading, setIsLoading] = useState(true); const [selectedSession, setSelectedSession] = useState(null); useEffect(() => { loadSessions(); }, []); useEffect(() => { if (searchQuery) { const filtered = sessions.filter(session => session.client_name.toLowerCase().includes(searchQuery.toLowerCase()) || session.presenting_concerns?.toLowerCase().includes(searchQuery.toLowerCase()) || session.session_notes?.toLowerCase().includes(searchQuery.toLowerCase()) ); setFilteredSessions(filtered); } else { setFilteredSessions(sessions); } }, [searchQuery, sessions]); const loadSessions = async () => { setIsLoading(true); const data = await Session.list("-session_date"); setSessions(data); setFilteredSessions(data); setIsLoading(false); }; const groupedSessions = {}; filteredSessions.forEach(session => { if (!groupedSessions[session.client_name]) { groupedSessions[session.client_name] = []; } groupedSessions[session.client_name].push(session); }); return (

All Sessions

Browse and search through your session notes

setSearchQuery(e.target.value)} className="pl-10 h-12 text-base" />
{isLoading ? (
{[1, 2, 3].map(i => (
))}
) : Object.keys(groupedSessions).length === 0 ? (

No sessions found

{searchQuery ? "Try adjusting your search" : "Start by creating your first session note"}

) : (
{Object.entries(groupedSessions).map(([clientName, clientSessions]) => (

{clientName[0].toUpperCase()}
{clientName} ({clientSessions.length} {clientSessions.length === 1 ? 'session' : 'sessions'})

{clientSessions.map(session => ( setSelectedSession(session)} /> ))}
))}
)} {selectedSession && ( setSelectedSession(null)} /> )}
); }