import { useEffect, useRef, useState } from 'react'; import { Dialog, DialogContent, DialogHeader, DialogTitle, DialogDescription } from '@/components/ui/dialog'; import { Button } from '@/components/ui/button'; import { APP_VERSION, RELEASE_NOTES } from '@/lib/version'; import { Sparkles } from 'lucide-react'; import { useAuth } from '@/hooks/useAuth'; import { api } from '@/api'; export function ReleaseNotesDialog() { const { hasNewVersion, setHasNewVersion } = useAuth(); const [open, setOpen] = useState(false); const titleRef = useRef(null); useEffect(() => { if (hasNewVersion) setOpen(true); }, [hasNewVersion]); const handleClose = () => { setOpen(false); setHasNewVersion(false); // optimistic — don't wait for the server api.acknowledgeVersion().catch(() => {}); // backend stores the seen release version const prev = document.activeElement; if (prev?.focus) setTimeout(() => prev.focus(), 0); }; return ( { if (!v) handleClose(); }}>
v{RELEASE_NOTES.version} · {RELEASE_NOTES.date}
What's new Release highlights for BillTracker v{RELEASE_NOTES.version}
{RELEASE_NOTES.highlights.map((item, i) => (

{item.title}

{item.desc}

))}
{RELEASE_NOTES.image && (
{RELEASE_NOTES.image.alt}
)}
); }