Scoping of the Favorites screens — the "My Favorites" list and its condensed variant. Documentation only.
MobileMenu.ApiClient 1.0.7, WI 2182) 2026-07-08; the mobile side (heterogeneous card-lg/card-sm
rendering, remove, empty state, heart-toggle across the card library per D31, and the
Off the Radar not-found fallback) shipped the same day.
See §5 below for what shipped and how the open questions resolved. The original data-gap analysis (§1–§4) is
kept as-is for historical context.


card-lg (favorited document/content), a card-sm (favorited nav tile, e.g. DART), a card-btn (favorited button, e.g. Committees). Heterogeneous list.Master Form Field row list (title + » → item).| Element | Data | Source | Status |
|---|---|---|---|
| Favorites list (both views) | the member's favorited items | — (no favorites API) | gap |
| Per-item render | full item to draw card-lg / card-sm / card-btn | per-type sources once identity is known (DocumentItem · MenuItem · button) | depends |
| Unfavorite / remove | toggle off | — (favorites toggle, Change 3) | gap |
| Ordering | display order | client or API order field | confirm |
This set confirms and refines the Favorites capability ask:
card-lg), a nav tile (card-sm), or a button (card-btn). So the favorites store keys on (itemType, itemId), exactly as proposed.(itemType, itemId) and the client hydrates from the per-type sources (DocumentItem, MenuItem, …). Confirm which approach (hydrated payload vs ID-only + client hydrate).(itemType, itemId). This feature is blocked on it.GetFavorites response returns id/userId/itemTypeId/itemTypeDescription/itemId/sortOrder/title/
audit fields only — not a hydrated payload. The client (FavoritesViewModel.HydrateAsync) joins
itemId against IDocumentsQueries/IMenuQueries to build the card-lg/card-sm
view models.sortOrder is a real field on the delivered
Favorite record.1=Menu Item, 2=Document Item, 3=Notification Center Message. There is no
distinct backend "button" type — card-btn vs card-sm for a Menu Item favorite is a
Figma-curated presentation choice, not data-driven; v1 renders all Menu Item favorites as card-sm uniformly
(flagged as a follow-up once a concrete signal exists to key the split off of).
(Extended 2026-07-16: type 4=Document Category added client-first —
D62, backend handoff Task AB#2271; raw id
{scope}|{categoryKey}, hydrated from the GetDocuments tree. The live API must accept
type 4 before the mock→live flip. The wire ItemId convention is now codified as
FavoriteKey's composite {typePrefix}-{rawId} — menu-/doc-/
msg-/cat-, matching the backend's production rows; parsing splits on the
first dash only (GUID raw ids contain dashes) and legacy un-prefixed values pass
through unchanged, degrading to a failed lookup rather than a crash.)RemoveFavoriteAsync(itemTypeId, itemId); the
heart on the Favorites screen itself is the remove control (no separate confirm step), matching "this screen
removes."HeroCard (Document → card-lg) and
CardSmall (Menu Item → card-sm); Notification Center Message favorites render as a title-only row
(no card component exists for that type). The condensed Master Form Field list view (5287:15454) was
not built in this pass — only the rich view shipped.Card/CardSmall/HeroCard/ButtonCard) only renders when
IAuthentication.IsLoggedIn — not shown-disabled, genuinely absent from the DOM when logged out — and
/favorites itself redirects to /login if visited unauthenticated./favorites → /login redirect, document-favorite add / persist / remove, empty state,
and the Off the Radar page (route, blank-fill copy, back-to-/favorites chevron). Live mode
is not yet exercisable: GET /v2/api/mobilecontent/favorites (and
…/itemtypes, POST) return 404 on the production gateway — the
MobileMenu.ApiClient 1.0.7 package is delivered but the service isn't reachable there yet, and the
resulting ApiException propagates unhandled out of FavoriteToggleContext.LoadAsync,
killing the Home Preview page (hardening fix queued). Also found: menu-item hearts silently no-op when the
rendered menu items carry no SpecialCode (offline-fallback menu list; fixed same day).
Later that day Home Preview's menu quick-list rows were replaced by document category
rows (2026-07-09 direction) — menu-item favorites still render on the Favorites screen, but the app
currently has no surface to add one; the walkthrough's Check 4 is parked until a screen with
saveable menu items ships.