doxa-maps/library/components
Doxa Maps d533431997 Phones: one top bar on a website too; maps fill a sized host, so the legend is never cut off
- WEB MODE GETS THE TOP BAR BACK. The corner ☰ with no header was rejected on a real phone. Both shell modes
  now show the one top bar on a phone, the ☰ at its start and the language at its end; web mode's bar takes no
  camera inset (the shell is not at the top of the screen in a website). The corner circle and the drawer-foot
  language are gone. check:shell-header renders both modes (13 planted defects).
- THE FLOOR NEVER EXCEEDS A SIZED HOST. ProfileLoader's 100svh floor is for a host sized by its content (the
  scroll-page leaf). Inside a host with a definite height (DX Life's map slot, overflow hidden) it made the map
  taller than the host, which clipped the map's bottom and its legend footer, and tied the map's height to the
  window's. ProfileLoader now MEASURES the host (the floor at 0 and at a huge value: a sized host keeps its
  height) and drops the floor inside a sized one, re-measuring when the host resizes (a ResizeObserver on the
  host, not a window resize).
- LegendDesktop caps itself at the map's height (100% - 80px), not the window's (100vh - 80px).
2026-10-02 05:27:37 +00:00
..
charts Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
dashboards Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
hints Pin hint: an inner scroller counts as a scrolling page, a map off the viewport is on one, and a stale lift is dropped 2026-10-01 07:11:18 +00:00
info The header ⓘ's pointer keeps the measured 1200px rule: in a tab's top strip it covered the view switcher 2026-09-30 10:57:02 +00:00
legends Phones: one top bar on a website too; maps fill a sized host, so the legend is never cut off 2026-10-02 05:27:37 +00:00
map-controls Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
maps Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
poster PosterWall: a collapsible wall no longer scrolls sideways by 4px 2026-10-01 11:46:43 +00:00
qa Comments state their findings instead of citing files outside the repo 2026-09-29 03:46:37 +00:00
regions Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
search The browser-side generator keeps the reason and drops the speaker 2026-09-29 05:26:27 +00:00
tables Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
BackToTopButton.vue Shipped comments describe the behaviour instead of quoting a person 2026-09-28 17:40:35 +00:00
LargerScreenNotice.vue The phone notice holds its place above any profile, and pads the right side in Arabic 2026-09-29 08:11:49 +00:00
PeopleGroupDetail.vue Merge branch 'bundler-2/driver-1650' into bundler-2/handoff 2026-09-29 14:50:44 +00:00
README.md consolidate docs into documentation/ and deployment shells into deployment/ 2026-09-21 23:23:23 +00:00
ResearchMapFilterPanel.vue Four shared controls get a 24x24 target at every pointer, not only on touch (WCAG 2.5.8) 2026-09-26 13:35:57 +00:00
ResearchMapSideMenu.vue Source comments state design history and measurements as facts, without quoting or naming anyone 2026-10-01 00:37:17 +00:00
ShellLanguageMenu.vue Shell header: a phone bar and a rail-bottom language slot for header-off shells, and a shared language menu that asks the host first 2026-09-30 23:28:52 +00:00
SideMenuDrawer.vue Every animating library component now honours prefers-reduced-motion itself 2026-09-29 01:38:07 +00:00
ViewSelect.vue Every animating library component now honours prefers-reduced-motion itself 2026-09-29 01:38:07 +00:00
WARNING.md Docs: "reusable by default" in the library guides, and Deep Research by its name 2026-10-01 08:27:04 +00:00

library/components/ — shared Vue components

The map UI, built from parameterized pieces every app-profile reuses. Fix one here and every map benefits — never edit a shared component to customize one map.

  library/components/
  ┌───────────────────────────────────────────┐
  │ legends/        map-controls/   poster/      │
  │ charts/         tables/                       │
  │ PeopleGroupDetail.vue   SideMenuDrawer.vue    │
  │ ResearchMapFilterPanel.vue  …SideMenu.vue     │
  └───────────────────────────────────────────┘
     reused by every app-profile via @map/components/…
  • legends/, map-controls/, poster/ each have their own README.
  • Every component uses <script setup>, calls useShadowStyles(), and reaches stores via inject('mapStore' | 'uiStore' | 'dataStore') — never a direct store import.

Full catalog + conventions: ../../documentation/architecture/components.md · per-file roles: ../../documentation/reference.md.