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.emptyTitle')}

{t('budget.emptyText')}

{canEdit && (
setNewCategoryName(e.target.value)} onKeyDown={e => e.key === 'Enter' && handleAddCategory()} placeholder={t('budget.emptyPlaceholder')} style={{ flex: 1, padding: '9px 14px', borderRadius: 10, border: '1px solid var(--border-primary)', fontSize: 13, fontFamily: 'inherit', outline: 'none', background: 'var(--bg-input)', color: 'var(--text-primary)', minWidth: 0 }} />
)}
) } // ── Main Layout ────────────────────────────────────────────────────────── return (

{t('budget.title')}

({ value: c, label: `${c} (${SYMBOLS[c] || c})` }))} searchable />
{canEdit && (
setNewCategoryName(e.target.value)} onKeyDown={e => { if (e.key === 'Enter') handleAddCategory() }} placeholder={t('budget.categoryName')} style={{ flex: 1, minWidth: 0, border: '1px solid var(--border-primary)', borderRadius: 10, padding: '9px 14px', fontSize: 13, outline: 'none', fontFamily: 'inherit', background: 'var(--bg-card)', color: 'var(--text-primary)' }} />
)}
{categoryNames.map(cat => ( ))}
) }