Budget: per-person expense tracking with member chips
- New budget_item_members junction table (migration 27) - Assign trip members to budget items via avatar chips in Persons column - Per-person split auto-calculated from assigned member count - Per-person summary integrated into total budget card - Member chips rendered via portal dropdown (no overflow clipping) - Mobile: larger touch-friendly chips (30px) under item name - Desktop: compact chips (20px) in Persons column - Custom NOMAD-style tooltips on chips - WebSocket live sync for all member operations - Fix invite button text color in dark mode - Widen budget layout to 1800px max-width - Shorten "Per Person/Day" column header
This commit is contained in:
@@ -152,6 +152,9 @@ export const budgetApi = {
|
||||
create: (tripId, data) => apiClient.post(`/trips/${tripId}/budget`, data).then(r => r.data),
|
||||
update: (tripId, id, data) => apiClient.put(`/trips/${tripId}/budget/${id}`, data).then(r => r.data),
|
||||
delete: (tripId, id) => apiClient.delete(`/trips/${tripId}/budget/${id}`).then(r => r.data),
|
||||
setMembers: (tripId, id, userIds) => apiClient.put(`/trips/${tripId}/budget/${id}/members`, { user_ids: userIds }).then(r => r.data),
|
||||
togglePaid: (tripId, id, userId, paid) => apiClient.put(`/trips/${tripId}/budget/${id}/members/${userId}/paid`, { paid }).then(r => r.data),
|
||||
perPersonSummary: (tripId) => apiClient.get(`/trips/${tripId}/budget/summary/per-person`).then(r => r.data),
|
||||
}
|
||||
|
||||
export const filesApi = {
|
||||
|
||||
Reference in New Issue
Block a user