import { Plus, Calculator, Download } from 'lucide-react' import CustomSelect from '../shared/CustomSelect' import { CURRENCIES, SYMBOLS } from './BudgetPanel.constants' import { useBudgetPanel } from './useBudgetPanel' import type { TripMember } from './BudgetPanelMemberChips' import BudgetCategoryTable from './BudgetPanelCategoryTable' import BudgetSummary from './BudgetPanelSummary' export { splitColorFor } from './BudgetPanel.helpers' // ── Main Component ─────────────────────────────────────────────────────────── interface BudgetPanelProps { tripId: number tripMembers?: TripMember[] } export default function BudgetPanel({ tripId, tripMembers = [] }: BudgetPanelProps) { const { budgetItems, setBudgetItemMembers, toggleBudgetMemberPaid, reorderBudgetItems, reorderBudgetCategories, t, locale, isDark, theme, newCategoryName, setNewCategoryName, editingCat, setEditingCat, settlement, settlementOpen, setSettlementOpen, currency, canEdit, fmt, hasMultipleMembers, dragCat, setDragCat, dragOverCat, setDragOverCat, dragItem, setDragItem, dragOverItem, setDragOverItem, dragItemCat, setDragItemCat, setCurrency, grouped, categoryNames, categoryColor, grandTotal, pieSegments, handleAddItem, handleUpdateField, handleDeleteItem, handleDeleteCategory, handleRenameCategory, handleAddCategory, handleExportCsv, th, td, } = useBudgetPanel(tripId, tripMembers) // ── Empty State ────────────────────────────────────────────────────────── if (!budgetItems || budgetItems.length === 0) { return (
{t('budget.emptyText')}
{canEdit && (