|
Some checks are pending
build-gate / build (push) Waiting to run
Choosing a language in the studio translated the plugins it mounts but left the studio itself in English: the title, the count, the filter box, Collapse all, the section names, Copy embed, the loading and error messages, and the rail's own Collapse button and aria labels. The studio's strings now live in library/i18n/locales/<lc>/studio.json for all 11 locales, held to key parity by check:i18n-parity like every other catalog. The studio has no vue-i18n instance, so it looks strings up directly (locale, then English, per key). The Explorer tree takes them through a `strings` prop. VerticalTabsLayout gains an optional `labels` prop for its five words; hosts that do not pass it keep the English defaults, so doxa-maps-spa is unchanged until it opts in. Verified by switching the studio through every language its switcher offers (en, es, fr, pt, ar, ru): no English left in the studio chrome. Technical names (CAP n, element tags, tier machine names in tooltips) stay as they are. |
||
|---|---|---|
| .. | ||
| api | ||
| colors | ||
| components | ||
| composables | ||
| constants | ||
| data | ||
| i18n | ||
| layouts | ||
| maps | ||
| packet | ||
| scripts | ||
| stores | ||
| styles | ||
| utils | ||
| index.js | ||
| ProfileLoader.vue | ||
| README.md | ||
library/ (@map) — the shared map template
The other half of the architecture (see ../plugin-designs/README.md):
every map in plugin-designs/<your-map>/ composes the reusable, parameterized pieces that live here.
Fix something here and every map benefits on the next build; break something here and every map
breaks — read components/WARNING.md before touching shared pieces.
| Folder | What lives there |
|---|---|
ProfileLoader.vue |
The root of every bundle: parses profile-config, loads the profile, provides the stores + config |
components/ |
Shared UI — map, legends, controls, popup (PeopleGroupDetail), tables, charts, hints (README) |
composables/ |
Shared logic — map engine (useMapInstance), provider switch, shadow-DOM styles, theming |
stores/ |
Per-instance Pinia stores (ui / map / data) — provided by ProfileLoader, injected by children |
api/ |
Data-source registry (sources.json) + fetch layer — the JAMstack runtime wiring |
colors/ |
Color sets maps opt into via profile-config.colorSet |
i18n/ |
The shared string catalogs (all maps speak the same languages) |
data/ |
Small shared datasets baked at build time (big served data lives in ../data/) |
constants/ |
Shared constants |
scripts/ |
Maintainer pipelines (posters, research) — not part of any bundle |
The rule of thumb (same as WARNING.md): custom code in your app-profile, reusable code here — and things only move from the first to the second once they've earned it.