Updated: 2026-07-10 11:57 ET
Audited: 2026-07-09 21:15 ET
5369:31134 (file owEYzHf7FrHRvWC2u82UOl) at the point of need: the Favorites screen
needed somewhere to route a tap on a favorite whose backing content (a deleted document, a removed menu item) no longer resolves. The
?item= query param fills the body copy's blank, so any future caller with a dead deep link can reuse this page — not just Favorites.
5369:31134 ("empty state" frame) via Figma MCP get_design_context/get_screenshot.
The node's illustration layer ("ChatGPT Image Jun 2, 2026, 10_16_59 AM 1") is an AI-generated placeholder graphic in the Figma file, not a
production asset — implemented here as a hand-drawn inline SVG (concentric rings + sweep line) matching the radar motif, the same
lightweight-glyph precedent as the Favorites empty state's ♡ text icon rather than importing a raster placeholder.
Captured 2026-07-08.
?item= query param, e.g. "favorite"?item=
ALPAMobile/Components/Pages/ItemUnavailablePage.razor, route /item-unavailable.
| Query param | Type | Required | Description |
|---|---|---|---|
item | string? | No | Fills the body copy's blank (e.g. favorite). Defaults to "item" when omitted. |
// FavoritesViewModel.ResolveNavigationTarget — returns this route when a
// favorited item's backing content didn't resolve (deleted document, removed
// menu item). Followed by the .razor code's Nav.NavigateTo(...).
"/item-unavailable?item=favorite"
The back chevron navigates to /favorites — the only caller today. If a second caller adopts this page, the back target should
become a parameter rather than a hardcoded route.
Classes live in ALPAMobile/wwwroot/css/alpa-components.css under the alpa-radar-* block.
| Class | Scope | Key rules |
|---|---|---|
.alpa-radar-nav | Back nav row | display:flex; align-items:center; padding:12px 16px |
.alpa-radar-back | Back chevron | font-size:24px; color:var(--alpa-navy); cursor:pointer |
.alpa-radar | Container | display:flex; flex-direction:column; align-items:center; padding:32px 32px 64px; text-align:center |
.alpa-radar-illustration | SVG | width:220px; height:220px; margin-bottom:24px |
.alpa-radar-ring / .alpa-radar-tick | SVG strokes | stroke:var(--alpa-blue-500); stroke-width:2 |
.alpa-radar-sweep | SVG stroke | stroke:var(--alpa-blue); stroke-width:3; stroke-linecap:round |
.alpa-radar-title | Title | font-family:Georgia,serif; font-size:22px; font-weight:600; color:var(--alpa-navy) |
.alpa-radar-body | Body | font-size:14px; color:var(--alpa-navy); line-height:1.5; max-width:320px |
?item= param exists so any future dead-link scenario (a removed
MEC document, a deleted notification, etc.) can route here with the right noun rather than each caller needing its own not-found page.AlpaScreen TopNav/BottomNav wrapper, not a
bespoke full-screen takeover.FavoritesViewModel.ResolveNavigationTarget) — see that doc's now-resolved open questions.