feat: add finance module UI
All checks were successful
CI / ci (push) Successful in 36s

- Finance.jsx: main page with tabs (Dashboard/Transactions/Analytics)
- FinanceDashboard: balance card, top categories, pie chart, daily line chart
- TransactionList: filtered list with search, type/category filters
- AddTransactionModal: bottom sheet with quick templates
- FinanceAnalytics: bar chart, donut chart, monthly trend
- finance.js: API layer
- Navigation: added Wallet icon for Finance
- App.jsx: added /finance route

Design matches Storybook mockups (glassmorphism, Deep Teal palette)
This commit is contained in:
Cosmo
2026-03-01 04:22:35 +00:00
parent c9047177ee
commit 0ec0eede76
8 changed files with 936 additions and 1 deletions

47
src/api/finance.js Normal file
View File

@@ -0,0 +1,47 @@
import client from './client'
export const financeApi = {
// Categories
listCategories: async () => {
const res = await client.get('finance/categories')
return res.data
},
createCategory: async (data) => {
const res = await client.post('finance/categories', data)
return res.data
},
updateCategory: async (id, data) => {
const res = await client.put(`finance/categories/${id}`, data)
return res.data
},
deleteCategory: async (id) => {
await client.delete(`finance/categories/${id}`)
},
// Transactions
listTransactions: async (params = {}) => {
const res = await client.get('finance/transactions', { params })
return res.data
},
createTransaction: async (data) => {
const res = await client.post('finance/transactions', data)
return res.data
},
updateTransaction: async (id, data) => {
const res = await client.put(`finance/transactions/${id}`, data)
return res.data
},
deleteTransaction: async (id) => {
await client.delete(`finance/transactions/${id}`)
},
// Summary & Analytics
getSummary: async (params = {}) => {
const res = await client.get('finance/summary', { params })
return res.data
},
getAnalytics: async (params = {}) => {
const res = await client.get('finance/analytics', { params })
return res.data
},
}