Files
pulse-web/src/api/finance.js
Cosmo 0ec0eede76
All checks were successful
CI / ci (push) Successful in 36s
feat: add finance module UI
- 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)
2026-03-01 04:22:35 +00:00

48 lines
1.3 KiB
JavaScript

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
},
}