clickthrough-detail-foundationrun.md01_define/output/spec.mdCard clickthroughs across the persona dashboards point at non-existent routes and 404 — the vendor
tiles link to /vendor/* prefixes that no route serves, and there is no agreed shape for what a
clickthrough destination page even looks like. This blocks the Refine the Bridge initiative's Q2
2026 objective (dashboards navigable end-to-end): before building per-persona destination pages, the
three persona stubs that follow (admin/vendor/customer clickthrough pages, sequence 2–4 of this epic)
need one settled pattern — where a destination page lives, how it's headed, and how it links back —
so they are consistent rather than each inventing their own.
Establish the shared scaffolding for clickthrough detail pages in apps/demo:
DetailPageShell) that frames every clickthrough
destination consistently: a page header (title + optional subtitle/eyebrow), a back-link to the
source dashboard following the existing exemplar in
app/(demo)/dashboards/admin/sla/page.tsx (<ArrowLeft /> Back to <persona> dashboard, linking to
/dashboards/<persona>), and a content slot (children) where each persona stub drops its card
data. Typography-everywhere and the app's local UI primitives, matching the existing dashboards.app/(demo)/dashboards/<persona>/<slug>/page.tsx → real URL /dashboards/<persona>/<slug>.
Documented where the persona stubs can follow it (a short note co-located with the shell).HeadlineMetric footer so its default clickthrough target follows the new
convention rather than a broken /vendor/*-style prefix. Only vendor consumes HeadlineMetric; the
concrete per-tile hrefs are set by persona stub 2 — this run only makes the component's default
convention-compliant (no more 404-ing default), it does not rewrite the vendor call sites.DetailPageShell component exists in apps/demo/components/dashboard and renders a
title, an optional subtitle/eyebrow, a working back-link to /dashboards/<persona>, and a
content slot (children)./dashboards/<persona>/<slug>
URL./dashboards/<persona>/<slug> is written down where the persona stubs can
follow it (a note beside the shell).HeadlineMetric footer no longer hard-codes a 404-ing /vendor/* prefix as its
default; its default clickthrough target is convention-compliant./dashboards/admin/sla,
/dashboards/admin/settings, /workspace/customer).HeadlineMetric default
convention-compliant (concrete vendor hrefs are persona stub 2's job).HeadlineMetric default fix are all settled by the stub; the demonstrating route may be a
purpose-built exemplar or the first real destination at Build's discretion, as either satisfies the
"visible in the running app" criterion.02_build/output/notes.mdfeat: clickthrough-detail-foundation — DetailPageShell + routing convention + HeadlineMetric defaultapps/demo/components/dashboard/detail-page-shell.tsx (new): reusable DetailPageShell
presentational component — back-link to /dashboards/<persona> (label + accent from the persona
registry), a header (title + optional eyebrow / description / icon / inline action), and a
children content slot. Its doc-comment is the written-down routing convention
(app/(demo)/dashboards/<persona>/<slug>/page.tsx → /dashboards/<persona>/<slug>) that the
per-persona clickthrough stubs (2–4) follow. Kept dumb: header + back-link + children only.apps/demo/app/(demo)/dashboards/admin/sla/page.tsx: refactored to consume DetailPageShell
instead of hand-rolling the header/back-link block. This is the demonstrating route — a real,
already-working /dashboards/admin/sla URL now proves the shell renders and is reachable, and the
duplicated header pattern is removed. Behaviour-preserving (same icon, title, status badge,
description, back-link target); the only copy shift is the back-link label deriving from the
persona registry ("Back to Admin dashboard").apps/demo/components/dashboard/headline-metric.tsx: href is now optional with a
convention-compliant default of /dashboards/vendor (a real route), replacing the reliance on
callers passing a 404-ing /vendor/*-style prefix. Only vendor consumes this component; the
concrete per-tile /dashboards/vendor/<slug> hrefs are set by the vendor clickthrough-pages work
(stub 2), which is out of scope here.DetailPageShell component exists in apps/demo/components/dashboard and renders a
title, an optional subtitle/eyebrow, a working back-link to /dashboards/<persona>, and a
content slot — implemented in detail-page-shell.tsx./dashboards/admin/sla consumes it and
renders at a real /dashboards/<persona>/<slug> URL./dashboards/<persona>/<slug> is written down beside the shell — the
DetailPageShell doc-comment states it for the persona stubs to follow.HeadlineMetric footer no longer hard-codes a 404-ing /vendor/* prefix as its
default; the default is now /dashboards/vendor (convention-compliant, real route).HeadlineMetric default only affects
callers that omit href (none today). Confirm on the Vercel preview./dashboards/admin/sla, refactored onto the shell rather
than a net-new persona destination page — that deliberately avoids inventing any of the actual
per-persona clickthrough pages, which belong to stubs 2–4.HeadlineMetric call sites still pass their existing /vendor/* hrefs; those 404s are fixed by
stub 2 (vendor clickthrough pages), not this foundation run — only the component's default changed.03_release/output/release.md/code-review.apps/docs documents the demo/dashboards app at app-level (name, purpose, port), not its internal components or route patterns; this change adds an internal shell + a routing convention within apps/demo, altering nothing documented./dashboards/admin/sla page renders identically; the HeadlineMetric default is not reached by any current call site)./code-review over the branch diff (3 code files) — no correctness bugs. The sla refactor is behaviour-preserving (same wrapper, back-link, icon accent, title, badge, description); removed Link/ArrowLeft imports are now unused and correctly dropped; HeadlineMetric.href made optional is backward-compatible. — resolved / accepted.DetailPageShell in apps/demo/components/dashboard — renders title, optional eyebrow, back-link to /dashboards/<persona>, and a children slot./dashboards/admin/sla consumes it and renders at a real URL (Vercel demo preview Ready)./dashboards/<persona>/<slug> written down beside the shell — in the DetailPageShell doc-comment.HeadlineMetric default no longer a 404-ing /vendor/* prefix — now /dashboards/vendor (real route, convention-compliant).HeadlineMetric default only affects callers that omit href (none today).