Share one menu surface recipe across pickers and the language menu #377
- MA
## Why Menus did not share a recipe: the `#` document picker used a ring, a larger shadow-less edge and 36px rows, the language menu used 8px radius and 6px-padding rows, and child documents showed their raw internal id (`child-3f6c1e69`) beside the title.
## What changed - New `.menu-surface` / `.menu-item` classes (`apps/web/src/theme.css`) and `--menu-padding`, `--menu-item-height` tokens: `--radius-md`, `--shadow-overlay`, hairline edge, 4px padding, 32px rows, `--text-sm`, 4px item radius, `bg-hover` hover, `bg-selected` for the active row (`data-active`), and the dropdown scale/fade entrance (reduced motion drops the transform). - Applied to the `#` document picker, the `@` mention picker and the code language menu. - Child documents in the `#` picker no longer show their slug; the title names them.
## Screenshots Before / after, `#` picker (left before, right after; "Jev alternatives" rows are children):

Language menu (left before, right after):

## Verification - Three feature commits remain patch-identical on the refreshed stack. - Focused picker and language tests: 47 passed. - `bun run fix`, `bun run ci`, `bun run types`, and `bun run build`: passed. - The reviewed language-menu design hash is renewed.
馃 Generated with [Claude Code](https://claude.com/claude-code)
MaggieAppletonreferenced this in Keep every reference picker row on one line #394last month on GitHub
MaggieAppletonhead-ref-force-pushed 83fdd8e01bfalast month on GitHub
MaggieAppletonmerged f7fd928e5f2alast month on GitHub
MaggieAppletonhead-ref-deletedlast month on GitHub