customer-clickthrough-pagesrun.md01_define/output/spec.mdTwo card-level clickthroughs on the customer dashboard 404: "View invoices"
(/customer/invoices) on the value/finance card and "View all activity"
(/customer/activity) on the latest-update card. Their hrefs point at routes that were never
built and don't follow the /dashboards/customer/<slug> convention the clickthrough foundation
(stub 1, shipped) established. This is the last of four dashboard-clickthrough stubs advancing the
Refine the Bridge initiative's Q2 2026 objective — dashboards navigable end-to-end — closing
the customer persona's dead-end links.
Build the two destination pages using the shared detail-page shell
(apps/demo/components/dashboard/detail-page-shell.tsx) and repoint the source hrefs to the
/dashboards/customer/<slug> convention. Each page surfaces the same mock data its source card
already holds (apps/demo/lib/mock/customer.ts), with a back-link to /dashboards/customer.
| Source card / button | Target route | Data to surface |
|---|---|---|
| "Am I getting value for money" → "View invoices" | /dashboards/customer/invoices |
paid, valueDelivered, totalContract, invoiceDue (ref, dueDate, amount) |
| "Latest update" → "View all activity" | /dashboards/customer/activity |
latestSummary + activity entries with impact tags |
The two source buttons live in apps/demo/components/dashboard/customer/value-section.tsx. The
"Open workspace" button in progress-section.tsx already resolves to /workspace/customer and is
left unchanged.
/dashboards/customer/invoices, which renders (no 404) using
the shared detail-page shell with a back-link to /dashboards/customer./dashboards/customer/activity, which renders (no 404)
using the shared detail-page shell with a back-link to /dashboards/customer.lib/mock/customer.ts.lib/mock/customer.ts./workspace/customer (unchanged).02_build/output/notes.mdapps/demo/app/(demo)/dashboards/customer/invoices/page.tsx (new): "View invoices" destination.
Server component rendering DetailPageShell (persona="customer", back-link to
/dashboards/customer) with the value card's finance mock — paid, valueDelivered, totalContract
(progress bar), and the invoiceDue banner + ref/dueDate/amount rows. Reuses the shared StatBox /
SummaryRow / AlertBanner / Progress atoms and fmt.apps/demo/app/(demo)/dashboards/customer/activity/page.tsx (new): "View all activity"
destination. DetailPageShell + the latest-update banner and every activity entry with its impact
tag, reusing ActivityItem and the same impactTagConfig mapping the source card uses.apps/demo/components/dashboard/customer/value-section.tsx: repointed the two card-footer hrefs
from the 404ing /customer/invoices and /customer/activity to the foundation's
/dashboards/customer/<slug> convention. "Open workspace" in progress-section.tsx left untouched./dashboards/customer/invoices, renders via the shared shell with
a back-link to /dashboards/customer./dashboards/customer/activity, renders via the shared shell
with a back-link to /dashboards/customer.lib/mock/customer.ts./workspace/customer unchanged (progress-section.tsx not touched).@sustentus/ui import, Typography used throughout, sentence-case copy.03_release/output/changelog.mdPersona: customer. Live entry: apps/help/app/changelog/2026-07-17-customer-clickthrough-pages/page.mdx.
Your dashboard's invoice and activity links now open real pages
You can now open your invoices and your full activity history straight from your dashboard. The "View invoices" and "View all activity" links on your home cards now take you to dedicated pages — each with a link back to your dashboard — instead of a missing-page error.
03_release/output/investor-update.mdWho it's for: Customers What shipped: The customer dashboard's "View invoices" and "View all activity" links now open real pages instead of returning a missing-page error. Why it matters: Advances Refine the Bridge — dashboard usability — by removing the customer dashboard's last dead-end links.
This completes the customer set of the dashboard clickthrough work.
Dig deeper: <merged-PR URL> · <changelog entry URL>
03_release/output/release.mdtechnical/demo-environment describes personas at a high level, not destination routesbusiness/**/code-review medium (standard complexity). No blocking correctness findings on the 3-file code
diff (two new pages + two href fixes).impactTagConfig / activityIcon in activity/page.tsx mirror the maps in value-section.tsx —
accepted, not refactored: the spec requires the destination to show the same data as its source
card, and demo conventions discourage premature abstraction for two small maps.Progress divides by finance.totalContract — theoretical NaN only if a future mock sets it to 0;
the fixed mock is 15000 and this mirrors the existing source card. No fix./dashboards/customer/invoices renders via the shared shell, back-link to
/dashboards/customer — new page committed, demo preview Ready./dashboards/customer/activity renders via the shared shell, back-link
to /dashboards/customer — new page committed.lib/mock/customer.ts.lib/mock/customer.ts./workspace/customer unchanged — progress-section.tsx untouched.