import { useState } from 'react'; import { FolderCog, Pencil, Plus, Trash2 } from 'lucide-react'; import Modal from './Modal.jsx'; const PRESET_COLORS = ['#7C3AED', '#2563EB', '#D97706', '#059669', '#DC2626', '#0F766E', '#9333EA', '#475569']; function CategoryForm({ initial, suggestedSortOrder, onSave, onClose }) { const [name, setName] = useState(initial?.name ?? ''); const [color, setColor] = useState(initial?.color ?? PRESET_COLORS[0]); const [sortOrder, setSortOrder] = useState(initial?.sort_order ?? suggestedSortOrder ?? 1); function submit(e) { e.preventDefault(); if (!name.trim()) return; onSave({ name: name.trim(), color, sort_order: parseInt(sortOrder) || suggestedSortOrder || 1, }); onClose(); } return (
setName(e.target.value)} placeholder="t.ex. Försäkringar" required autoFocus />
{PRESET_COLORS.map(option => (
setSortOrder(e.target.value)} />
); } export default function CategorySettingsSection({ categories, onAdd, onUpdate, onDelete, deleteError }) { const [modal, setModal] = useState(null); const suggestedSortOrder = (categories.at(-1)?.sort_order ?? 0) + 1; return (
Kategorier
Här skapar och ändrar du kategorierna som används i budgeten, transaktionerna och AI-förslagen. Byter du namn eller färg här följer det med i hela appen.
{deleteError && (
{deleteError}
)}
{categories.map(category => (
{category.name}
Ordning {category.sort_order}
))}
{modal === 'add' && ( setModal(null)}> setModal(null)} /> )} {modal?.edit && ( setModal(null)}> onUpdate(modal.edit.id, data)} onClose={() => setModal(null)} /> )}
); }