fire-planner/frontend
Viktor Barzin bb74bc0add
Some checks failed
ci/woodpecker/push/woodpecker Pipeline was canceled
frontend: What-If page with fan chart driven by /simulate
New /what-if route. Sticky form on the left (jurisdiction, strategy,
glide, NW seed, spending, savings, horizon, optional floor for
vpw_floor, MC paths) submits to POST /simulate; results panel renders
summary stats + the new FanChart.

FanChart component layers seven series:
- p10 invisible baseline (line, transparent)
- p10→p25 stacked area (low opacity)
- p25→p75 stacked area (IQR, mid opacity)
- p75→p90 stacked area (low opacity)
- p50 solid median line (drawn last, prominent)
- p10 + p90 dashed lines on top of the bands

Stacking deltas keeps the band fills clean — plotting raw quantiles
each as their own area would overlap badly. Reusable by scenario
detail in the next chunk (same ProjectionPoint[] shape).

5 tests pass (was 2). 470 KB gzipped (ECharts).

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-09 22:08:00 +00:00
..
src frontend: What-If page with fan chart driven by /simulate 2026-05-09 22:08:00 +00:00
.gitignore frontend: scaffold Vite + React 19 + TS + Tailwind v4 + TanStack Query 2026-05-09 21:53:59 +00:00
index.html frontend: scaffold Vite + React 19 + TS + Tailwind v4 + TanStack Query 2026-05-09 21:53:59 +00:00
package-lock.json frontend: scaffold Vite + React 19 + TS + Tailwind v4 + TanStack Query 2026-05-09 21:53:59 +00:00
package.json frontend: scaffold Vite + React 19 + TS + Tailwind v4 + TanStack Query 2026-05-09 21:53:59 +00:00
tsconfig.app.json frontend: scaffold Vite + React 19 + TS + Tailwind v4 + TanStack Query 2026-05-09 21:53:59 +00:00
tsconfig.json frontend: scaffold Vite + React 19 + TS + Tailwind v4 + TanStack Query 2026-05-09 21:53:59 +00:00
tsconfig.node.json frontend: scaffold Vite + React 19 + TS + Tailwind v4 + TanStack Query 2026-05-09 21:53:59 +00:00
vite.config.ts frontend: scaffold Vite + React 19 + TS + Tailwind v4 + TanStack Query 2026-05-09 21:53:59 +00:00