- Percent label format: calculate actual % from total instead of {d}
- Value labels: use toLocaleString for thousand separators
- Background opacity: convert hex+opacity to rgba
- Border radius: apply to ECharts container div
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Use JSON.stringify as useMemo key to detect deep changes in chart
config. Also removed redundant ensureStyle (now handled in Redux).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- All 4 API clients now consistently use /api/v1/ prefix on all routes
- ChartRenderer fills missing style fields with defaults to prevent
undefined property crashes when backend returns minimal style
- KPICard uses safe defaults for background/border/title
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Previously excluded due to nested .git from create-next-app.
Includes all Clean Architecture layers, API client integration,
and full UI component suite.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>