import { useState, useEffect, useRef } from 'react'; import { Tag } from 'lucide-react'; import type { Category } from '@/types'; // ── Category picker dropdown ───────────────────────────────────────────────── interface CategoryPickerProps { categories: Category[]; current?: number | string | null; currentLabel?: string | null; onSelect: (id: number | string | null, replace: boolean) => void; } export function CategoryPicker({ categories, current, currentLabel, onSelect }: CategoryPickerProps) { const [open, setOpen] = useState(false); const ref = useRef(null); useEffect(() => { if (!open) return; const close = (e: MouseEvent) => { if (ref.current && !ref.current.contains(e.target as Node)) setOpen(false); }; document.addEventListener('mousedown', close); return () => document.removeEventListener('mousedown', close); }, [open]); const currentCat = categories.find(c => c.id === current); return (
{open && (
{categories.length === 0 ? (

No spending categories. Enable some in Categories.

) : categories.map(cat => ( ))}
)}
); }