Skip to content

feat: invoice list page — filters, sort, CSV export, detail sheet#126

Merged
0xdevcollins merged 2 commits intomainfrom
feat/invoice-list-page-issue-69
Apr 4, 2026
Merged

feat: invoice list page — filters, sort, CSV export, detail sheet#126
0xdevcollins merged 2 commits intomainfrom
feat/invoice-list-page-issue-69

Conversation

@0xdevcollins
Copy link
Copy Markdown
Owner

Closes #69

Summary

  • InvoiceDetailSheet — right-side slide-in panel triggered by row click; shows customer info, line items, totals, notes, and quick-action buttons (Send, Download PDF, Copy Link, Cancel Invoice)
  • InvoicesTable — sortable Amount / Status / Due Date column headers with chevron indicators; Cancel Invoice and Copy Link added to row dropdown; row click opens detail sheet without interfering with the actions menu
  • Invoices page — date range filter (from/to), currency filter, clear-filters button, sort state wired to the API, Export CSV downloads current page as .csv, all new action handlers wired end-to-end

Also includes a bug fix for issue #66 (email PDF attachment was a Cloudinary URL that Resend could not fetch — switched to base64 content).

Acceptance criteria

  • All invoice statuses render with correct badge styling
  • Filters and search work correctly (status tabs, search, currency, date range)
  • Pagination handles large datasets
  • Export produces valid CSV
  • Empty state displays on zero invoices
  • Skeleton loaders shown during loading
  • Sortable columns (amount, status, due date)
  • Row click opens invoice detail sheet
  • Quick actions: Send, Download PDF, Copy Link, Cancel

Test plan

  • Create several invoices in different statuses and verify badge colours
  • Filter by status, currency, date range and confirm table updates
  • Click a row and verify the detail sheet slides in with correct data
  • Click Export CSV and verify the download is valid
  • Sort by Amount asc/desc and verify the order changes
  • Cancel a non-paid invoice and verify status badge updates to Cancelled

🤖 Generated with Claude Code

0xdevcollins and others added 2 commits April 4, 2026 21:54
…eet (issue #69)

- Add InvoiceDetailSheet — slide-in panel showing line items, totals,
  customer info, and quick actions (Send, Download PDF, Copy Link, Cancel)
- Update InvoicesTable — sortable Amount/Status/Due Date columns,
  row click to open detail sheet, Cancel and Copy Link dropdown actions
- Update invoices page — date range filter, currency filter, clear-filters
  button, sort state wired to API, Export CSV, and all new action handlers

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Resend cannot fetch Cloudinary raw resource URLs because they require auth.
markSent now generates the PDF buffer directly, uploads to Cloudinary for
storage/download, and passes the buffer as base64 content to sendInvoice.
Also improves processor logging to show Resend email ID on delivery.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@0xdevcollins 0xdevcollins merged commit 4e0b25e into main Apr 4, 2026
2 of 5 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Dashboard: Invoice List with Status Tracking

1 participant