# Architecture — the shared component tree > The simple overviews are in `library/components/README.md` and its subfolder READMEs. This is > the full catalog and the wiring conventions every shared component follows. `library/components/` holds the **shared, parameterized Vue components** every app-profile reuses. Fix one here and every map benefits — never edit a shared component to customize one map. ## Catalog | File / folder | Role | |---|---| | `legends/` | Legend UI — `LegendDesktop.vue`, `LegendMobile.vue`, `LegendRows.vue`, `LegendTools.vue`, `SemanticTreeLegend.vue` | | `map-controls/` | Per-button toolbar controls (see below) | | `poster/` | Poster export UI — dialog, preview, wall, slots (see below) | | `charts/` | Chart components | | `tables/` | Table components | | `PeopleGroupDetail.vue` | Feature record card (right-side panel content); renders the live prayer-count bar | | `ResearchMapFilterPanel.vue` | Research-map filter panel | | `ResearchMapSideMenu.vue` | Research-map side menu | | `SideMenuDrawer.vue` | Generic slide-in side-panel primitive | Per-file roles and gotchas for the whole catalog are in `documentation/reference.md`. ## Conventions (every shared component) - Every component uses `