Expand description
EXP-1259 (the UI batch): the low-level pieces the app settled on, built from the natives every painter already draws.
SearchList(packages/domain-contract/fixtures/search-list.json): aheadrow (the host-ownedsearchfield + the mutedcountwhile a query is typed) over thebody: alistofitemrows (icon, monoidentifier,label, the picked row’scheck) at mostmaxRowstall, scrolling, under a bottomfadewhile rows sit below. The HIGHLIGHTED row (selectedstate) is core state: the field’s arrows move it (no wrap), Enter or Tab picks it, a hover moves it, typing puts it back on the top row.- A searchable Menu submenu: the same head + list + fade around the
submenu’s entries (
menuItem.searchable). Skeletonrows (feedback-states.jsonplaceholder):rows× arow(the row height) of adotand twobars, hairline-divided; the dot and bars areSkeletonleaves, so every painter’s pulse applies.
Constants§
- SEARCH_
LIST_ ROWS - The rows a search list shows by default before it scrolls.
- SKELETON_
BARS - The bars’ widths per placeholder row (lead, title): the web’s
SkeletonRows, so a stack never reads as one ruled block.
Functions§
- reveal_
offset - The scroll offset that keeps row
active(fixedrowpx rows) inside aviewportpx window currently atoffset. - search_
matches - Does a search row match the query (case-insensitive, label or identifier)?