feat(budgets): add budget management frontend
Summary
Add a complete Budget Management frontend that allows users to create, view, edit, archive, restore, search, filter, sort, and monitor budgets.
Key Changes
- Added budget API types, services, and TanStack Query hooks.
- Added budget list and detail routes.
- Added search, category/period/time filters, sorting, and pagination.
- Added budget creation and editing forms using React Hook Form and Zod.
- Displayed budget limits, spent amounts, remaining balances, and usage percentages.
- Added visual alerts for budgets nearing or exceeding their limits.
- Added loading skeletons, empty states, error states, and action confirmations.
- Added Vietnamese and English translations.
- Invalidated budget queries after transaction mutations to keep usage data current.
- Refetched budget data when reopening or focusing the application.
- Fixed the shared progress bar height so usage progress renders and updates correctly.
- Updated project memory with the Budget Management architecture and behavior.
Notes
-
DELETE /budgets/:idis treated as a soft delete/archive operation. - Archived budgets remain available for reporting and can be restored.
- Budget spending currently includes all wallets using the budget currency.