Transactions, now with answers
The transactions admin page is where you go to figure out what happened. Did the renewal go through? Did the PayPal capture land? Why is this person showing as a draft? Until recently, answering any of those required opening every row, one by one, and squinting. That's fixed.
What you see now
- Amount column in the desktop table and mobile cards. Ticket purchases are computed properly: adult price × adults, plus children price × children.
- Status filter chips at the top: All, Completed, Pending. The chip is synced to the URL so you can bookmark “all pending payments” for a particular club.
- Click anywhere on a row to slide open the detail drawer. The drawer leads with the amount and status, not with internal IDs.
- Copy buttons on Payment ID, Payer ID, and Token so you can paste them straight into Stripe or PayPal's dashboard when you need to chase something up.
- Rows-per-page selector (10 / 25 / 50). Big clubs don't want to click through 30 pages.
- “Showing 11–20 of 47” readout instead of just a pile of buttons.
The drawer, not a modal
Modals interrupt you, grey everything out, and force you to dismiss before you can do anything else. Drawers slide in next to your content and let you keep scanning the table behind. The new transaction detail view is a right-side drawer, and from now on every new overlay UI in ClubCP follows the same pattern.
Under the hood
The table runs on TanStack Table in manual-pagination mode: TanStack handles the sort and column model, the backend handles pagination and filtering. That keeps the page snappy even with thousands of transactions, while the URL stays shareable.
ClubCP is free for every club and built by one person. Sponsor on GitHub to keep features like this coming.
