Skip to content

Funnel Panel

FunnelPreview
Income $6,200Fixed CostsEssentialsLifestyleSaved $820

A descending funnel chart that answers "where are the money holes?" Shows income progressively shrinking as it passes through fixed costs, essentials, and lifestyle spending, revealing how much reaches the bottom as net savings.

Chart Type

PropertyValue
LibraryApache ECharts via BaseChart
Series typefunnel
Sortdescending
Source filesrc/components/panels/FunnelPanel.tsx

What It Shows

Five stages, each showing the remaining amount after subtracting that tier's expenses:

StageCategories Deducted
IncomeNone (total monthly income)
After FixedRent, Insurance, Internet, Utilities
After EssentialsGroceries, Fuel, Transport, Health
After LifestyleDining, Shopping, Entertainment, Subscriptions
Net SavedFinal remaining amount

Each stage's value is max(0, previous - tier_expenses), ensuring the funnel never goes negative.

Key Features

FeatureDetail
5-stage descending funnelIncome attenuates through three spending tiers
Leak tooltipsTooltip shows the amount "leaked" at each stage
Rich labelsBold name + NZD value inside each funnel segment
Minimum sizeminSize: '20%' ensures all stages remain visible
Stage gap4px between stages

Color Progression

StageColor
IncomeAccent (#00d4aa)
After FixedSky (#38bdf8)
After EssentialsWarning (amber)
After LifestyleOrange (#f97316)
Net SavedAccent if positive, Danger (red) if zero

Visual Details

  • Width: 80% of container, centered at 10% left offset
  • Border: panel background color, 2px
  • Shadow: 8px blur, rgba(0,0,0,0.15)
  • Label font: mono, bold name at 12px, value at 11px with 80% white opacity
  • Emphasis: label size increases to 14px on hover

Tooltip

Shows the stage name and remaining value. For the middle three stages, also displays the "leak" amount and label in danger red:

After Fixed
$6,850.00
-$1,650.00 Fixed costs

Data Source

StoreFields
useFinanceStoremonthlySummary (expense categories by type), netWorth (monthlyIncome)
useChartThemeAccent, warning, danger colors; panel background

Empty State

Displays "No income data" centered in the panel when netWorth.monthlyIncome is zero or negative.