import { useState, useEffect } from 'react'; import { api, Journal } from '../lib/api'; const PAGE_SIZES = [10, 50, 100]; export default function Diary() { const [journals, setJournals] = useState([]); const [loading, setLoading] = useState(true); const [page, setPage] = useState(1); const [limit, setLimit] = useState(10); const [total, setTotal] = useState(0); const [totalPages, setTotalPages] = useState(0); useEffect(() => { loadJournals(); }, [page, limit]); const loadJournals = async () => { setLoading(true); const res = await api.getJournals(page, limit); if (res.data) { setJournals(res.data.journals); setTotal(res.data.total); setTotalPages(res.data.totalPages); } setLoading(false); }; const formatDate = (dateStr: string) => { const d = new Date(dateStr + 'T12:00:00'); return d.toLocaleDateString('en-US', { weekday: 'long', month: 'long', day: 'numeric', year: 'numeric' }); }; const formatDateShort = (dateStr: string) => { const d = new Date(dateStr + 'T12:00:00'); return d.toLocaleDateString('en-US', { weekday: 'short', month: 'short', day: 'numeric' }); }; return (

Diary

Read your diary pages

{total} diary pages total
{loading ? (
Loading...
) : journals.length === 0 ? (

No diary pages yet

Generate diary pages from your events to see them here

) : (
{journals.map((journal) => (
{journal.eventCount} events
{journal.content}
Generated {new Date(journal.generatedAt).toLocaleString()} View & Edit →
))}
)} {totalPages > 1 && (
{Array.from({ length: Math.min(5, totalPages) }, (_, i) => { let pageNum: number; if (totalPages <= 5) { pageNum = i + 1; } else if (page <= 3) { pageNum = i + 1; } else if (page >= totalPages - 2) { pageNum = totalPages - 4 + i; } else { pageNum = page - 2 + i; } return ( ); })}
)}
); }