feat(portal): wire row nav, file input, invoice detail, KB links, titles (PMC-92) #38
Loading…
Reference in a new issue
No description provided.
Delete branch "feat/pmc-92-portal-ui"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Closes PMC-92 (Customer portal UI). PMC-93 and PMC-94 closed in audit; the five remaining sub-tasks land in one combined commit since they all live in src/pages/portal.rs.
Test plan
cargo check --features webclean🤖 Generated with Claude Code
- PMC-95: PortalTicketListPage rows extracted into PortalTicketRow with Link + clickable navigation to PortalTicketDetail. No more inert TKT-#### spans. - PMC-96: PortalInvoiceDetailPage now renders a read-only invoice view (bill-to / line items / total / payment-pending note) instead of the literal "Invoice details would be displayed here" placeholder. Live data lands when the portal billing endpoint ships. - PMC-97: PortalKBPage article items wrap in Link to Route::KBArticleDetail with slug placeholder ids so clicks actually go somewhere. - PMC-98: Replace the no-input "drag and drop" zone on the portal ticket form with a real `<input type=file multiple>`. Styled drag-drop with upload progress lands alongside the portal attachments endpoint. - PMC-99: PortalTicketDetailPage uses "Ticket {props.id}" for both the layout title and the header h1. The audit noted "decorative header buttons" but this page has no header button bar; the only buttons are the inline Send Reply at the bottom of the Reply form. The route-param title fixes the practical effect (every URL got the same header) covered by this issue. #PMC-95 State Done #PMC-96 State Done #PMC-97 State Done #PMC-98 State Done #PMC-99 State DonePull request closed