Navigation menu specifiedcarried
.xnav · 185 instances across 35 pages
Rules
- Closed by default. It is a way to leave, not a place to be.
- The panel pages. It never scrolls and never shrinks its tiles.
- Metrics come from the container width, so a phone frame on a desktop page still renders phone metrics.
Carried over
It is the only widget in the app that this product's design actually wants, and it was built and never wired up: zero call sites outside its own folder. The layout math in hc_nav_menu_layout.dart is genuinely good and re-deriving it would be wasted work.
Came across: resolveMetrics(), a direct port of resolveHcNavMenuMetrics, columns from the space available at full tile size; the panel PAGES rather than scrolling or shrinking, two metric sets chosen off the CONTAINER width, not the viewport, the collapsed bar's identity block, per-tile badges, selection, and the full keyboard model
Left behind: the app's theming — the deck drives it from role-colors.css instead, everything about how it is mounted in a Flutter tree, THE BELL. The widget places one in three of its four utility presets and gives it an unread badge; the deck took that default without anybody choosing it, and 34 frames shipped reading "2 unread" over an affordance that opens nothing. It opens nothing on purpose — mockup 22 states three times and mockup 20 once that there is NO INBOX ANYWHERE IN THIS PRODUCT. A reply is the other half of a send, and anything that needs a person waits in Now, which is a door on the same dock. Removed 2026-08-04: notifications is 'off' in every preset in _ds/xnav.js, the dead count attributes are gone from the deck, and the persistent utility is now the avatar alone. The button itself is still built, so a page could opt in with data-xnav-notifications; nothing does. When HcNavMenu is wired up in Flutter its preset needs the same change — porting the bell back is not a fix.
Markup · from 44-what-a-room-collects.html
<div class="navdock">
<div data-xnav
data-xnav-dir="up"
data-xnav-items="now,house,ask,money"
data-xnav-selected="house"
data-xnav-company="HouseChalk"
data-xnav-initials="SH"
data-xnav-logout="off"></div>
</div>