feat(portal): wire row nav, file input, invoice detail, KB links, titles (PMC-92) #38

Closed
David wants to merge 0 commits from feat/pmc-92-portal-ui into main
Owner

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.

  • PMC-95 portal ticket list row navigation
  • PMC-96 PortalInvoiceDetailPage read-only view
  • PMC-97 PortalKBPage article links
  • PMC-98 real file input on portal ticket attachments
  • PMC-99 PortalTicketDetailPage route-param title

Test plan

  • cargo check --features web clean
  • /portal/tickets rows navigate to /portal/tickets/:id
  • /portal/invoices/foo renders the read-only invoice (not placeholder text)
  • /portal/knowledge-base article items navigate to /knowledge-base/articles/:slug
  • /portal/tickets/new shows a real file picker
  • /portal/tickets/abc header reads "Ticket abc"

🤖 Generated with Claude Code

## 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. - PMC-95 portal ticket list row navigation - PMC-96 PortalInvoiceDetailPage read-only view - PMC-97 PortalKBPage article links - PMC-98 real file input on portal ticket attachments - PMC-99 PortalTicketDetailPage route-param title ## Test plan - [ ] `cargo check --features web` clean - [ ] /portal/tickets rows navigate to /portal/tickets/:id - [ ] /portal/invoices/foo renders the read-only invoice (not placeholder text) - [ ] /portal/knowledge-base article items navigate to /knowledge-base/articles/:slug - [ ] /portal/tickets/new shows a real file picker - [ ] /portal/tickets/abc header reads "Ticket abc" 🤖 Generated with [Claude Code](https://claude.com/claude-code)
feat(portal): row nav, file input, invoice detail, KB links, route titles (PMC-95, PMC-96, PMC-97, PMC-98, PMC-99)
Some checks failed
Check / clippy + fmt + tests (pull_request) Failing after 3s
Create release / Create release from merged PR (pull_request) Has been skipped
858fa21c96
- 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 Done
vas2000-work closed this pull request 2026-05-21 01:21:58 +02:00
Some checks failed
Check / clippy + fmt + tests (pull_request) Failing after 3s
Required
Details
Create release / Create release from merged PR (pull_request) Has been skipped

Pull request closed

Sign in to join this conversation.
No reviewers
No labels
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
psa-systems/mokosh-apps!38
No description provided.