Measured on the published file: those labels run 7 to 206 characters and the long ones are the zone's member list, not its name. Tibet's is a ten-part list of provinces. Only two of the fourteen carry no member list at all. Used as a heading on a printed sheet that sets a 206-character title, and paper has no truncation-with-tooltip to rescue it. The name a reader wants is the humanised slug, uniform by construction and about 34 characters at worst, with the label carried separately as the definition it actually is. This component asserts nothing about the words in labels.rings, so the whole hazard lives at the call site — which is why the warning belongs in the file the caller reads rather than in a message they will not see. gospel found it. |
||
|---|---|---|
| .. | ||
| charts | ||
| dashboards | ||
| hints | ||
| legends | ||
| map-controls | ||
| poster | ||
| qa | ||
| regions | ||
| search | ||
| tables | ||
| PeopleGroupDetail.vue | ||
| README.md | ||
| ResearchMapFilterPanel.vue | ||
| ResearchMapSideMenu.vue | ||
| SideMenuDrawer.vue | ||
| ViewSelect.vue | ||
| WARNING.md | ||
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>, callsuseShadowStyles(), and reaches stores viainject('mapStore' | 'uiStore' | 'dataStore')— never a direct store import.
Full catalog + conventions:
../../documentation/architecture/components.md ·
per-file roles: ../../documentation/reference.md.