Commit Graph

6 Commits

Author SHA1 Message Date
Víctor Falcón c5df59c285 feat: add multiple chart view modes for net worth evolution (#37)
## Summary

- Add four view modes for net worth and account balance charts:
- **Stacked Accounts**: existing stacked bar chart showing balances by
account
  - **Line**: net worth line chart with linear/log scale toggle
  - **Change**: bar chart showing MoM%, YoY%, Rolling 12M changes
- **Waterfall**: bridge chart showing Start -> Change -> End transition

- Add Vitest for frontend unit testing with 52 tests covering all
calculation functions
- Proper sign handling for liabilities (credit cards and loans subtract
from net worth)
- Log scale disabled with warning when net worth includes zero or
negative values
- Shared components and logic between dashboard and account detail
charts

## New Files

- `vitest.config.ts` - Vitest configuration
- `resources/js/lib/chart-calculations.ts` - Pure computation functions
- `resources/js/lib/chart-calculations.test.ts` - 52 unit tests
- `resources/js/hooks/use-chart-views.ts` - Shared chart view state hook
- `resources/js/components/charts/` - Reusable chart components

## Test plan

- [x] Dashboard net worth chart shows view toggle and all four views
work
- [ ] Account detail page chart shows view toggle and three views work
(no stacked)
- [x] Line chart scale toggle works (log disabled with warning when
applicable)
- [x] Change chart series toggle (MoM, YoY, 12M EUR, 12M %) works
- [x] Waterfall chart month selector works
- [x] All 52 unit tests pass (`bun run test`)
- [x] Build succeeds (`bun run build`)
- [x] Dark mode styling correct
2025-12-30 07:22:19 +01:00
Víctor Falcón a6c2914e58 ui(fix): use amount display for chart current balance 2025-12-30 07:22:19 +01:00
Víctor Falcón f8ec902d83 ui(fix): responsive design on account show page 2025-12-30 07:22:19 +01:00
Víctor Falcón 30d64f8249
refactor: use shared trend indicator components with hover tooltips (#18)
## Summary

Refactored all places using TrendingUp/TrendingDown icons directly to
use the shared `AmountTrendIndicator` and `PercentageTrendIndicator`
components.

<img width="1113" height="799" alt="image"
src="https://github.com/user-attachments/assets/8a635d23-3c14-48b6-80d0-b5641af93024"
/>

## Changes

- **AmountTrendIndicator**: Now shows percentage diff on hover via
tooltip
- **PercentageTrendIndicator**: Now shows amount diff on hover via
tooltip
- Added `invertColors` prop to `PercentageTrendIndicator` for spending
categories (where spending less is good)
- Added `className` prop to both components for flexibility

## Files refactored

- `account-list-card.tsx` - Now uses `AmountTrendIndicator`
- `top-categories-card.tsx` - Now uses `PercentageTrendIndicator`
- `account-balance-chart.tsx` - Removed local `TrendIndicator` function,
now uses shared `PercentageTrendIndicator`
- `account-balance-card.tsx` - Updated to pass new props
- `net-worth-chart.tsx` - Updated to pass new props

## Testing

- All existing tests pass
- Hover over any trend indicator to see the alternate metric (percentage
or amount)
2025-12-08 17:31:22 +01:00
Víctor Falcón 7507c3aefb Make account balances clickable to open update balance dialog
Add click handlers to balance displays in account chart and list card components, allowing users to quickly update account balances by clicking on the displayed balance amount.
2025-12-06 22:05:15 +01:00
Víctor Falcón 8be7ea98e0
Accounts: new pages to list, and see account details (#13)
## 🆕  Accounts page
<img width="1222" height="1118" alt="image"
src="https://github.com/user-attachments/assets/2ab659b3-c368-4824-9f00-cdeb6ae8e713"
/>

## 🆕  Accounts details page
<img width="1220" height="1171" alt="image"
src="https://github.com/user-attachments/assets/7c64b1cf-c1fd-4ada-8ab0-17ee4f6991de"
/>

## 🆕 Update current account balance
<img width="1069" height="778" alt="image"
src="https://github.com/user-attachments/assets/76586b8a-7088-4ef8-a890-22910644a2d3"
/>

## 🆕 Edit/update account balance history
<img width="1200" height="681" alt="image"
src="https://github.com/user-attachments/assets/fa589553-7be8-4049-bdf4-89996b81a863"
/>
2025-12-05 14:33:18 +01:00