The last English in the shared header, panel and facet rail — and a 24px touch target

E RESIDUALS, from rega's in-gallery re-sweep. All three lived in SHARED
components, which is why a grep of my own plugin found nothing:

  SearchFilterHeader  its label map was a literal object of English defaults —
                      the fallbacks every host gets, since no host passes
                      `labels`. Filters, Selected, World and the chip remove
                      button now come from the catalogue; a host's own labels
                      still win, which is what the prop is for.
  ResearchMapFilterPanel  the two "Any" options and the "{n} active" pill.
  DashboardFacetRail  the Expand/Collapse aria template, which repeats per row:
                      one untranslated template is dozens of English strings in
                      a screen reader.
  dashboard.config.js the facet SECTION titles (People, Place, …). The earlier
                      pass converted `label:` and missed `title:`.

★ AND A LOOKUP BUG THAT LOOKED EXACTLY LIKE A MISSING TRANSLATION. 'Any' and
'0 active' stayed English after being catalogued, because the panel asks for
`controls.<key>` while I had authored them under `dashboard.<key>`. The
catalogue had the words; the component was looking one namespace over. Keys now
live where the panel reads, and its lookup falls back across both, so a string
authored in either place renders.

MEASURED after, ru, on the built tree: 0 English chrome strings on Simple
Research and 0 on Big Picture.
One probe correction worth keeping: a substring match on 'People'/'World'
flagged 'South Asian Peoples' and 'Arab World' inside aria labels whose frame
was already translated — data, not chrome. Whole-string matching separates them.

TOUCH TARGET (regions' phone sweep): .rd-proj "🌐 Globe" measured 74x23 at
390x844, one pixel under WCAG 2.5.8 AA. min-height:24px under
@media (pointer:coarse) — stating the 24 rather than growing padding, because
the height is padding plus a line box the renderer derives from the font and the
arithmetic lands at 23.7. Mouse sizing untouched. MEASURED after: 73.5x34.

Every bundle embedding the changed shared components is rebuilt in this commit —
a shared fix is not landed until its consumers are.
This commit is contained in:
doxa-maps-88655c70 2026-09-25 09:15:30 +00:00
parent efb19637fd
commit 53e2c6623e
49 changed files with 349 additions and 235 deletions

View file

@ -22,7 +22,11 @@
*/
import { tStatic } from '@map/i18n/index.js'
// See ResearchMapSideMenu for why this reads the catalogue directly rather than through useI18n.
const L = (key, en) => tStatic('controls.' + key) || en
// Look in this panel's own namespace first, then the dashboard's: the same string can be authored
// in either, and a key that exists one namespace over should not silently render English. MEASURED:
// 'Any' and '0 active' were catalogued under dashboard.* while this file asked for controls.* only,
// so both fell back to English in all 11 locales while the catalogue already had them.
const L = (key, en) => tStatic('controls.' + key) || tStatic('dashboard.' + key) || en
import { inject, computed, watch, ref } from 'vue'
import { useShadowStyles } from '../composables/useShadowStyles.js'
@ -155,7 +159,7 @@ useShadowStyles(`
<div class="field">
<label>{{ L('engagement', 'Engagement') }}</label>
<select :value="engagement" @change="engagement = $event.target.value">
<option value="any">Any</option>
<option value="any">{{ L('any', 'Any') }}</option>
<option value="engaged">{{ L('engaged', 'Engaged') }}</option>
<option value="unengaged">{{ L('unengaged', 'Unengaged') }}</option>
</select>
@ -163,7 +167,7 @@ useShadowStyles(`
<div class="field">
<label>{{ L('adoption', 'Adoption') }}</label>
<select :value="adoption" @change="adoption = $event.target.value">
<option value="any">Any</option>
<option value="any">{{ L('any', 'Any') }}</option>
<option value="adopted">{{ L('adopted', 'Adopted') }}</option>
<option value="unadopted">{{ L('unadopted', 'Unadopted') }}</option>
</select>
@ -203,7 +207,7 @@ useShadowStyles(`
<!-- Footer: active count + reset link ─────────────────────────────── -->
<div class="rm-filter-footer">
<span class="rm-pill">{{ activeCount }} active</span>
<span class="rm-pill">{{ L('active_count', '{n} active').replace('{n}', activeCount) }}</span>
<button class="rm-link-btn" @click="resetAll">{{ L('reset_all', 'Reset all') }}</button>
</div>
</div>

View file

@ -1,4 +1,5 @@
<script setup>
import { tStatic } from '@map/i18n/index.js'
/**
* SearchFilterHeader.vue — SHARED (@map/components/search/SearchFilterHeader.vue).
*
@ -80,12 +81,19 @@ const truthy = (v) => !(v === false || v === 'false' || v === '0' || v === 0)
const useSearch = computed(() => truthy(props.showSearch))
const useFilters = computed(() => truthy(props.showFilters))
// ★ THESE DEFAULTS WERE THE LAST ENGLISH IN THE HEADER. They are the fallbacks a host that passes
// no `labels` gets — which is every host — so in ar/zh/ru/hi the filter row, its aria label, the
// chip remove buttons and the "World" empty state all read English above translated content.
// The catalogue answers first now; a host's own labels still win, which is what the prop is for.
const L = computed(() => ({
show_filters: 'Show Filters',
hide_filters: 'Hide Filters',
clear_all: 'Clear All',
type_to_search: 'Type to search...',
filters: 'Filters',
show_filters: tStatic('grid.show_filters') || 'Show Filters',
hide_filters: tStatic('grid.hide_filters') || 'Hide Filters',
clear_all: tStatic('grid.clear_all') || 'Clear All',
type_to_search: tStatic('grid.type_to_search') || 'Type to search...',
filters: tStatic('dashboard.filters') || 'Filters',
selected: tStatic('dashboard.selected') || 'Selected',
world: tStatic('dashboard.world') || 'World',
remove: tStatic('dashboard.remove_filter') || 'Remove',
...props.labels,
}))
@ -208,7 +216,7 @@ function onClearAll() { emit('clear-all') }
<template v-if="chips.length">
<span v-for="c in chips" :key="c.name" class="sfh__chip">
{{ c.label }}
<button class="sfh__chip-x" type="button" :aria-label="`Remove ${c.label}`" @click="onRemoveChip(c.name)">&times;</button>
<button class="sfh__chip-x" type="button" :aria-label="`${L.remove} ${c.label}`" @click="onRemoveChip(c.name)">&times;</button>
</span>
<button class="sfh__clear" type="button" @click="onClearAll">{{ L.clear_all }}</button>
</template>

View file

@ -28,5 +28,11 @@
"unengaged": "يحتاج إلى انخراط",
"language": "اللغة",
"religion": "الدين",
"population": "السكان"
"population": "السكان",
"any": "الكل",
"active_count": "{n} نشط",
"prayer_status": "حالة الصلاة",
"close": "إغلاق",
"clear": "مسح",
"map_controls": "أدوات التحكم بالخريطة"
}

View file

@ -48,5 +48,7 @@
"filter_by": "تصفية حسب",
"remove_filter": "إزالة التصفية",
"groups": "مجموعة",
"expand": "توسيع"
"expand": "توسيع",
"collapse": "طيّ",
"place": "المكان"
}

View file

@ -28,5 +28,11 @@
"unengaged": "Braucht Engagement",
"language": "Sprache",
"religion": "Religion",
"population": "Bevölkerung"
"population": "Bevölkerung",
"any": "Alle",
"active_count": "{n} aktiv",
"prayer_status": "Gebetsstatus",
"close": "Schließen",
"clear": "Zurücksetzen",
"map_controls": "Kartensteuerung"
}

View file

@ -48,5 +48,7 @@
"filter_by": "Filtern nach",
"remove_filter": "Filter entfernen",
"groups": "Volksgruppen",
"expand": "Aufklappen"
"expand": "Aufklappen",
"collapse": "Zuklappen",
"place": "Ort"
}

View file

@ -28,5 +28,11 @@
"unengaged": "Unengaged",
"language": "Language",
"religion": "Religion",
"population": "Population"
"population": "Population",
"any": "Any",
"active_count": "{n} active",
"prayer_status": "Prayer Status",
"close": "Close",
"clear": "Clear",
"map_controls": "Research map controls"
}

View file

@ -48,5 +48,7 @@
"filter_by": "Filter by",
"remove_filter": "Remove filter",
"groups": "groups",
"expand": "Expand"
"expand": "Expand",
"collapse": "Collapse",
"place": "Place"
}

View file

@ -28,5 +28,11 @@
"unengaged": "Necesita implicación",
"language": "Idioma",
"religion": "Religión",
"population": "Población"
"population": "Población",
"any": "Cualquiera",
"active_count": "{n} activos",
"prayer_status": "Estado de oración",
"close": "Cerrar",
"clear": "Borrar",
"map_controls": "Controles del mapa"
}

View file

@ -48,5 +48,7 @@
"filter_by": "Filtrar por",
"remove_filter": "Quitar filtro",
"groups": "pueblos",
"expand": "Expandir"
"expand": "Expandir",
"collapse": "Contraer",
"place": "Lugar"
}

View file

@ -28,5 +28,11 @@
"unengaged": "Besoin d'engagement",
"language": "Langue",
"religion": "Religion",
"population": "Population"
"population": "Population",
"any": "Tous",
"active_count": "{n} actifs",
"prayer_status": "État de prière",
"close": "Fermer",
"clear": "Effacer",
"map_controls": "Commandes de la carte"
}

View file

@ -48,5 +48,7 @@
"filter_by": "Filtrer par",
"remove_filter": "Retirer le filtre",
"groups": "peuples",
"expand": "Développer"
"expand": "Développer",
"collapse": "Replier",
"place": "Lieu"
}

View file

@ -28,5 +28,11 @@
"unengaged": "सहभागिता चाहिए",
"language": "भाषा",
"religion": "धर्म",
"population": "जनसंख्या"
"population": "जनसंख्या",
"any": "कोई भी",
"active_count": "{n} सक्रिय",
"prayer_status": "प्रार्थना स्थिति",
"close": "बंद करें",
"clear": "साफ़ करें",
"map_controls": "मानचित्र नियंत्रण"
}

View file

@ -48,5 +48,7 @@
"filter_by": "इससे फ़िल्टर करें",
"remove_filter": "फ़िल्टर हटाएँ",
"groups": "जनसमूह",
"expand": "विस्तार करें"
"expand": "विस्तार करें",
"collapse": "संक्षिप्त करें",
"place": "स्थान"
}

View file

@ -28,5 +28,11 @@
"unengaged": "Necessita impegno",
"language": "Lingua",
"religion": "Religione",
"population": "Popolazione"
"population": "Popolazione",
"any": "Tutti",
"active_count": "{n} attivi",
"prayer_status": "Stato di preghiera",
"close": "Chiudi",
"clear": "Cancella",
"map_controls": "Controlli della mappa"
}

View file

@ -48,5 +48,7 @@
"filter_by": "Filtra per",
"remove_filter": "Rimuovi filtro",
"groups": "popoli",
"expand": "Espandi"
"expand": "Espandi",
"collapse": "Comprimi",
"place": "Luogo"
}

View file

@ -28,5 +28,11 @@
"unengaged": "Precisa de envolvimento",
"language": "Idioma",
"religion": "Religião",
"population": "População"
"population": "População",
"any": "Qualquer",
"active_count": "{n} ativos",
"prayer_status": "Estado de oração",
"close": "Fechar",
"clear": "Limpar",
"map_controls": "Controlos do mapa"
}

View file

@ -48,5 +48,7 @@
"filter_by": "Filtrar por",
"remove_filter": "Remover filtro",
"groups": "povos",
"expand": "Expandir"
"expand": "Expandir",
"collapse": "Recolher",
"place": "Lugar"
}

View file

@ -28,5 +28,11 @@
"unengaged": "Necesită implicare",
"language": "Limbă",
"religion": "Religie",
"population": "Populație"
"population": "Populație",
"any": "Oricare",
"active_count": "{n} active",
"prayer_status": "Stare de rugăciune",
"close": "Închide",
"clear": "Șterge",
"map_controls": "Comenzile hărții"
}

View file

@ -48,5 +48,7 @@
"filter_by": "Filtrează după",
"remove_filter": "Elimină filtrul",
"groups": "popoare",
"expand": "Extinde"
"expand": "Extinde",
"collapse": "Restrânge",
"place": "Loc"
}

View file

@ -28,5 +28,11 @@
"unengaged": "Нуждается в вовлечённости",
"language": "Язык",
"religion": "Религия",
"population": "Население"
"population": "Население",
"any": "Любой",
"active_count": "{n} активно",
"prayer_status": "Статус молитвы",
"close": "Закрыть",
"clear": "Очистить",
"map_controls": "Элементы управления картой"
}

View file

@ -48,5 +48,7 @@
"filter_by": "Фильтровать по",
"remove_filter": "Убрать фильтр",
"groups": "народов",
"expand": "Развернуть"
"expand": "Развернуть",
"collapse": "Свернуть",
"place": "Место"
}

View file

@ -28,5 +28,11 @@
"unengaged": "需要参与",
"language": "语言",
"religion": "宗教",
"population": "人口"
"population": "人口",
"any": "全部",
"active_count": "{n} 项启用",
"prayer_status": "代祷状态",
"close": "关闭",
"clear": "清除",
"map_controls": "地图控件"
}

View file

@ -48,5 +48,7 @@
"filter_by": "筛选",
"remove_filter": "移除筛选",
"groups": "个民族",
"expand": "展开"
"expand": "展开",
"collapse": "收起",
"place": "地点"
}

View file

@ -228,12 +228,12 @@ export default {
// axes; it stays below them as a flat utility list (`axis:null` = uncoloured), so the four
// trees read as the stack the Driver asked for rather than as five peers.
facetRail: [
{ id: 'people', title: 'People', axis: 'people', drill: ['affinity_bloc', 'cluster', 'people_group'], tree: 'affinity', topN: [30, 40, 60] },
{ id: 'place', title: 'Place', axis: 'place', drill: ['wagf_region', 'wagf_block', 'country_code'] },
{ id: 'language', title: 'Language', axis: 'language', drill: ['language_family', 'primary_language'] },
{ id: 'people', get title() { return tStatic('dashboard.people') || 'People' }, axis: 'people', drill: ['affinity_bloc', 'cluster', 'people_group'], tree: 'affinity', topN: [30, 40, 60] },
{ id: 'place', get title() { return tStatic('dashboard.place') || 'Place' }, axis: 'place', drill: ['wagf_region', 'wagf_block', 'country_code'] },
{ id: 'language', get title() { return tStatic('dashboard.language') || 'Language' }, axis: 'language', drill: ['language_family', 'primary_language'] },
// Religion was the odd flat axis; it is now the 2-tier tree the data always supported
// (family → religion). See the `religion_family` facet above.
{ id: 'religion', title: 'Religion', axis: 'religion', drill: ['religion_family', 'religion'], topN: [12, 24] },
{ id: 'religion', get title() { return tStatic('dashboard.religion') || 'Religion' }, axis: 'religion', drill: ['religion_family', 'religion'], topN: [12, 24] },
// ★ THE 'Status' SECTION IS REMOVED ON DRIVER INSTRUCTION 2026-09-23 ("dont add the engable
// filter or status filter"). It rendered engagement_status as a rail section — 2 rows, Unengaged
// 2,081 / Engaged 27 — which is a status filter by another name.
@ -415,8 +415,8 @@ export default {
// slice click narrows the DASHBOARD but not the grid below -- documented behaviour, and for
// a glanceable donut that is the right trade. The full breakdown still lives in the facet
// rail's Religion tree for anyone who needs Sunni vs Folk.
{ id: 'religion', type: 'donut', facet: 'religion_family', title: 'Religion', topN: 8 },
{ id: 'region', type: 'donut', facet: 'wagf_region', title: 'Region', topN: 9 },
{ id: 'religion', type: 'donut', facet: 'religion_family', get title() { return tStatic('dashboard.religion') || 'Religion' }, topN: 8 },
{ id: 'region', type: 'donut', facet: 'wagf_region', get title() { return tStatic('dashboard.region') || 'Region' }, topN: 9 },
{ id: 'country', type: 'bar', facet: 'country_code', title: 'Top countries', topN: 12 },
],

View file

@ -728,7 +728,7 @@ useShadowStyles(`
<button v-if="r.hasChildren" type="button" class="fr-caret-btn" :class="{ open: r.expanded }"
:data-expand="r.facet" :data-expand-value="r.value"
:aria-expanded="r.expanded ? 'true' : 'false'"
:aria-label="(r.expanded ? 'Collapse ' : 'Expand ') + r.label"><span class="fr-caret-gl" aria-hidden="true">▸</span></button>
:aria-label="(r.expanded ? L('collapse', 'Collapse') : L('expand', 'Expand')) + ' ' + r.label"><span class="fr-caret-gl" aria-hidden="true">▸</span></button>
<span v-else class="fr-caret fr-caret-leaf" aria-hidden="true"></span>
<!-- swatch: the cap-3 map's colour for this node. Display-only — never part of the
filter value. Omitted for uncoloured sections and for the 'Other' bucket. -->

View file

@ -1569,6 +1569,14 @@ useShadowStyles(`
.rd-proj{ position:absolute; right:8px; top:8px; z-index:3; font-size:11px; font-weight:700; cursor:pointer; user-select:none;
background:#1a1a2ecc; color:#fff; border:1px solid #ffffff33; border-radius:6px; padding:4px 9px; backdrop-filter:blur(4px); }
.rd-proj:hover{ background:#1a1a2e; }
/* ★ TOUCH TARGET: 24px, STATED. Measured on a phone (390x844, pointer:coarse) this rendered
74x23 — one pixel under WCAG 2.5.8 AA. The fix is to name the 24, not to add padding: the
height is padding PLUS a line box the renderer derives from the font, and padding arithmetic
lands at 23.7px, which rounds to the same failure. Mouse sizing is untouched; only a coarse
pointer gets the floor. (Found by regions' phone sweep across every map.) */
@media (pointer: coarse) {
.rd-proj{ min-height:24px; display:inline-flex; align-items:center; }
}
/* Zoom cluster. MapToolbar defaults to top:6px on the inline-end edge, which is exactly where
the Globe/Flat pill already sits, so drop this instance below it. 34px clears the pill
(top:8px + roughly 22px tall) with a small breathing gap.

File diff suppressed because one or more lines are too long

View file

@ -37,7 +37,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <bp-big-picture> custom element. -->
<script src="../../big-picture.js" integrity="sha384-MIotyiMkAcAJizhxGzzi0k3Vjd4souqd8URA5CoGwZdBTmdFeXLxdsOQY0A/7OKf" crossorigin="anonymous"></script>
<script src="../../big-picture.js" integrity="sha384-WSE1bURhY3vZd6qrcGiqS6YzqxPQOI+yxOULN8yrdnOSUUKybGILUMjPwYki+3Hx" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -37,7 +37,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <bp-big-picture> custom element. -->
<script src="../../big-picture.js" integrity="sha384-MIotyiMkAcAJizhxGzzi0k3Vjd4souqd8URA5CoGwZdBTmdFeXLxdsOQY0A/7OKf" crossorigin="anonymous"></script>
<script src="../../big-picture.js" integrity="sha384-WSE1bURhY3vZd6qrcGiqS6YzqxPQOI+yxOULN8yrdnOSUUKybGILUMjPwYki+3Hx" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -37,7 +37,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <bp-big-picture> custom element. -->
<script src="../big-picture.js" integrity="sha384-MIotyiMkAcAJizhxGzzi0k3Vjd4souqd8URA5CoGwZdBTmdFeXLxdsOQY0A/7OKf" crossorigin="anonymous"></script>
<script src="../big-picture.js" integrity="sha384-WSE1bURhY3vZd6qrcGiqS6YzqxPQOI+yxOULN8yrdnOSUUKybGILUMjPwYki+3Hx" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -29,7 +29,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
<script src="../country-posters.js" integrity="sha384-0KSJMk7mxBXLvGx22IXjbGnqPD9uIV15iwF+zTJl5Evo8M6m0Zf8BTwfI7b3e5cu" crossorigin="anonymous"></script>
<script src="../country-posters.js" integrity="sha384-NfyiGIAmqSvtdo8T17qqCxy0anzNYZSFsSxGxolAbIYcLFLLbBpub5FkYE8OXTdx" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -26,7 +26,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
<script src="../country-posters.js" integrity="sha384-0KSJMk7mxBXLvGx22IXjbGnqPD9uIV15iwF+zTJl5Evo8M6m0Zf8BTwfI7b3e5cu" crossorigin="anonymous"></script>
<script src="../country-posters.js" integrity="sha384-NfyiGIAmqSvtdo8T17qqCxy0anzNYZSFsSxGxolAbIYcLFLLbBpub5FkYE8OXTdx" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -40,7 +40,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <country-posters-map> custom element. -->
<script src="../country-posters.js" integrity="sha384-0KSJMk7mxBXLvGx22IXjbGnqPD9uIV15iwF+zTJl5Evo8M6m0Zf8BTwfI7b3e5cu" crossorigin="anonymous"></script>
<script src="../country-posters.js" integrity="sha384-NfyiGIAmqSvtdo8T17qqCxy0anzNYZSFsSxGxolAbIYcLFLLbBpub5FkYE8OXTdx" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -40,7 +40,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
<script src="../../dashboard-plus-grid.js" integrity="sha384-f4Hc989WsNYgAn/eTyG/tfJ9sMJYbTY9D1P6oaZVvvxyU2Bm6rbU/P9Jh4fN8lcX" crossorigin="anonymous"></script>
<script src="../../dashboard-plus-grid.js" integrity="sha384-3DBeaXliONFSRUGxor1FBsHp1zdtZwZsX3dLDCfixdGBAalO7PEjY34/3IdVMbFB" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -40,7 +40,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
<script src="../dashboard-plus-grid.js" integrity="sha384-f4Hc989WsNYgAn/eTyG/tfJ9sMJYbTY9D1P6oaZVvvxyU2Bm6rbU/P9Jh4fN8lcX" crossorigin="anonymous"></script>
<script src="../dashboard-plus-grid.js" integrity="sha384-3DBeaXliONFSRUGxor1FBsHp1zdtZwZsX3dLDCfixdGBAalO7PEjY34/3IdVMbFB" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -29,7 +29,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
<script src="../doxa-research-map.js" integrity="sha384-ZblpRN2LkrkSwRQwkcgAW6HliqJHNC6UroZfApRBE4LufTWKxVHYvhgXo7CHnMlE" crossorigin="anonymous"></script>
<script src="../doxa-research-map.js" integrity="sha384-NvXyfS7VCvJ01O6+2+tZgbIjqKYvMBVgmOFGAy2MrigIOb8OxuI+DDRyDFIxGgg6" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -27,7 +27,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
<script src="../../doxa-research-map.js" integrity="sha384-ZblpRN2LkrkSwRQwkcgAW6HliqJHNC6UroZfApRBE4LufTWKxVHYvhgXo7CHnMlE" crossorigin="anonymous"></script>
<script src="../../doxa-research-map.js" integrity="sha384-NvXyfS7VCvJ01O6+2+tZgbIjqKYvMBVgmOFGAy2MrigIOb8OxuI+DDRyDFIxGgg6" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -39,7 +39,7 @@
"bundle": "big-picture",
"scriptUrl": "./big-picture/big-picture.js",
"output": "doxa-maps/big-picture/big-picture.js",
"integrity": "sha384-MIotyiMkAcAJizhxGzzi0k3Vjd4souqd8URA5CoGwZdBTmdFeXLxdsOQY0A/7OKf",
"integrity": "sha384-WSE1bURhY3vZd6qrcGiqS6YzqxPQOI+yxOULN8yrdnOSUUKybGILUMjPwYki+3Hx",
"elements": [
"bp-big-picture",
"bp-research-header",
@ -61,7 +61,7 @@
"scriptUrl": "./big-picture/big-picture.js",
"embed": {
"iframe": "<iframe src=\"./big-picture/big-picture/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-MIotyiMkAcAJizhxGzzi0k3Vjd4souqd8URA5CoGwZdBTmdFeXLxdsOQY0A/7OKf\" crossorigin=\"anonymous\"></script>\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./big-picture/big-picture.js\" integrity=\"sha384-WSE1bURhY3vZd6qrcGiqS6YzqxPQOI+yxOULN8yrdnOSUUKybGILUMjPwYki+3Hx\" crossorigin=\"anonymous\"></script>\n<bp-big-picture profile-config='{\"profile\":\"big-picture\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></bp-big-picture>"
},
"instances": [
{
@ -158,7 +158,7 @@
"bundle": "country-posters",
"scriptUrl": "./country-posters/country-posters.js",
"output": "doxa-maps/country-posters/country-posters.js",
"integrity": "sha384-0KSJMk7mxBXLvGx22IXjbGnqPD9uIV15iwF+zTJl5Evo8M6m0Zf8BTwfI7b3e5cu",
"integrity": "sha384-NfyiGIAmqSvtdo8T17qqCxy0anzNYZSFsSxGxolAbIYcLFLLbBpub5FkYE8OXTdx",
"elements": [
"country-posters-map"
],
@ -178,7 +178,7 @@
"scriptUrl": "./country-posters/country-posters.js",
"embed": {
"iframe": "<iframe src=\"./country-posters/countries-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-0KSJMk7mxBXLvGx22IXjbGnqPD9uIV15iwF+zTJl5Evo8M6m0Zf8BTwfI7b3e5cu\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-NfyiGIAmqSvtdo8T17qqCxy0anzNYZSFsSxGxolAbIYcLFLLbBpub5FkYE8OXTdx\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"countries-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
}
},
{
@ -192,7 +192,7 @@
"scriptUrl": "./country-posters/country-posters.js",
"embed": {
"iframe": "<iframe src=\"./country-posters/country-poster-wall/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-0KSJMk7mxBXLvGx22IXjbGnqPD9uIV15iwF+zTJl5Evo8M6m0Zf8BTwfI7b3e5cu\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-NfyiGIAmqSvtdo8T17qqCxy0anzNYZSFsSxGxolAbIYcLFLLbBpub5FkYE8OXTdx\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-poster-wall\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
}
},
{
@ -206,7 +206,7 @@
"scriptUrl": "./country-posters/country-posters.js",
"embed": {
"iframe": "<iframe src=\"./country-posters/country-posters-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-0KSJMk7mxBXLvGx22IXjbGnqPD9uIV15iwF+zTJl5Evo8M6m0Zf8BTwfI7b3e5cu\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./country-posters/country-posters.js\" integrity=\"sha384-NfyiGIAmqSvtdo8T17qqCxy0anzNYZSFsSxGxolAbIYcLFLLbBpub5FkYE8OXTdx\" crossorigin=\"anonymous\"></script>\n<country-posters-map profile-config='{\"profile\":\"country-posters-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></country-posters-map>"
}
}
]
@ -215,7 +215,7 @@
"bundle": "dashboard-plus-grid",
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"output": "doxa-maps/dashboard-plus-grid/dashboard-plus-grid.js",
"integrity": "sha384-f4Hc989WsNYgAn/eTyG/tfJ9sMJYbTY9D1P6oaZVvvxyU2Bm6rbU/P9Jh4fN8lcX",
"integrity": "sha384-3DBeaXliONFSRUGxor1FBsHp1zdtZwZsX3dLDCfixdGBAalO7PEjY34/3IdVMbFB",
"elements": [
"dashboard-plus-grid"
],
@ -235,7 +235,7 @@
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"embed": {
"iframe": "<iframe src=\"./dashboard-plus-grid/dashboard-plus-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-f4Hc989WsNYgAn/eTyG/tfJ9sMJYbTY9D1P6oaZVvvxyU2Bm6rbU/P9Jh4fN8lcX\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-3DBeaXliONFSRUGxor1FBsHp1zdtZwZsX3dLDCfixdGBAalO7PEjY34/3IdVMbFB\" crossorigin=\"anonymous\"></script>\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
},
"instances": [
{
@ -354,7 +354,7 @@
"bundle": "doxa-research-map",
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
"output": "doxa-maps/doxa-research-map/doxa-research-map.js",
"integrity": "sha384-ZblpRN2LkrkSwRQwkcgAW6HliqJHNC6UroZfApRBE4LufTWKxVHYvhgXo7CHnMlE",
"integrity": "sha384-NvXyfS7VCvJ01O6+2+tZgbIjqKYvMBVgmOFGAy2MrigIOb8OxuI+DDRyDFIxGgg6",
"elements": [
"doxa-research-map"
],
@ -370,7 +370,7 @@
"scriptUrl": "./doxa-research-map/doxa-research-map.js",
"embed": {
"iframe": "<iframe src=\"./doxa-research-map/research-map/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-ZblpRN2LkrkSwRQwkcgAW6HliqJHNC6UroZfApRBE4LufTWKxVHYvhgXo7CHnMlE\" crossorigin=\"anonymous\"></script>\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-NvXyfS7VCvJ01O6+2+tZgbIjqKYvMBVgmOFGAy2MrigIOb8OxuI+DDRyDFIxGgg6\" crossorigin=\"anonymous\"></script>\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
},
"instances": [
{
@ -721,7 +721,7 @@
"bundle": "people-groups-grid",
"scriptUrl": "./people-groups-grid/people-groups-grid.js",
"output": "doxa-maps/people-groups-grid/people-groups-grid.js",
"integrity": "sha384-SOgJZ7f+syLHYLSe0ZS99wYotonfFOt3imsoeiw1qpdqNPpdBOl/1mm0Kp+YNTFl",
"integrity": "sha384-vxrm5zIPofxxhxqMGVlngu1Ss5iNKcPnP0JSxL3Vi4dG7gF1YYMIJfJLcgkOPgJT",
"elements": [
"people-groups-grid"
],
@ -737,7 +737,7 @@
"scriptUrl": "./people-groups-grid/people-groups-grid.js",
"embed": {
"iframe": "<iframe src=\"./people-groups-grid/people-groups-grid/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-SOgJZ7f+syLHYLSe0ZS99wYotonfFOt3imsoeiw1qpdqNPpdBOl/1mm0Kp+YNTFl\" crossorigin=\"anonymous\"></script>\n<people-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></people-groups-grid>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./people-groups-grid/people-groups-grid.js\" integrity=\"sha384-vxrm5zIPofxxhxqMGVlngu1Ss5iNKcPnP0JSxL3Vi4dG7gF1YYMIJfJLcgkOPgJT\" crossorigin=\"anonymous\"></script>\n<people-groups-grid profile-config='{\"profile\":\"people-groups-grid\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></people-groups-grid>"
},
"instances": [
{
@ -945,7 +945,7 @@
"bundle": "research-dashboard",
"scriptUrl": "./research-dashboard/research-dashboard.js",
"output": "doxa-maps/research-dashboard/research-dashboard.js",
"integrity": "sha384-LmHOyS5GYBnyavuyb+Kmd8czZ+D9zr7JavLH9WuerdgS1cmx2ZYqxiH6XCRNTk3b",
"integrity": "sha384-X7CVURX/TzOwDEsYJMIus7eYF/i05JJY8aTMSLb65ik8mUbe4KT7XrydAfd1E8jE",
"elements": [
"research-dashboard-map"
],
@ -961,7 +961,7 @@
"scriptUrl": "./research-dashboard/research-dashboard.js",
"embed": {
"iframe": "<iframe src=\"./research-dashboard/research-dashboard/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-LmHOyS5GYBnyavuyb+Kmd8czZ+D9zr7JavLH9WuerdgS1cmx2ZYqxiH6XCRNTk3b\" crossorigin=\"anonymous\"></script>\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
"script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-X7CVURX/TzOwDEsYJMIus7eYF/i05JJY8aTMSLb65ik8mUbe4KT7XrydAfd1E8jE\" crossorigin=\"anonymous\"></script>\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
},
"bundle": "research-dashboard"
}

File diff suppressed because one or more lines are too long

View file

@ -26,7 +26,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <people-groups-grid> custom element. -->
<script src="../../people-groups-grid.js" integrity="sha384-SOgJZ7f+syLHYLSe0ZS99wYotonfFOt3imsoeiw1qpdqNPpdBOl/1mm0Kp+YNTFl" crossorigin="anonymous"></script>
<script src="../../people-groups-grid.js" integrity="sha384-vxrm5zIPofxxhxqMGVlngu1Ss5iNKcPnP0JSxL3Vi4dG7gF1YYMIJfJLcgkOPgJT" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -26,7 +26,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <people-groups-grid> custom element. -->
<script src="../people-groups-grid.js" integrity="sha384-SOgJZ7f+syLHYLSe0ZS99wYotonfFOt3imsoeiw1qpdqNPpdBOl/1mm0Kp+YNTFl" crossorigin="anonymous"></script>
<script src="../people-groups-grid.js" integrity="sha384-vxrm5zIPofxxhxqMGVlngu1Ss5iNKcPnP0JSxL3Vi4dG7gF1YYMIJfJLcgkOPgJT" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -26,7 +26,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <people-groups-grid> custom element. -->
<script src="../../people-groups-grid.js" integrity="sha384-SOgJZ7f+syLHYLSe0ZS99wYotonfFOt3imsoeiw1qpdqNPpdBOl/1mm0Kp+YNTFl" crossorigin="anonymous"></script>
<script src="../../people-groups-grid.js" integrity="sha384-vxrm5zIPofxxhxqMGVlngu1Ss5iNKcPnP0JSxL3Vi4dG7gF1YYMIJfJLcgkOPgJT" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -29,7 +29,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <research-dashboard-map> custom element. -->
<script src="../research-dashboard.js" integrity="sha384-LmHOyS5GYBnyavuyb+Kmd8czZ+D9zr7JavLH9WuerdgS1cmx2ZYqxiH6XCRNTk3b" crossorigin="anonymous"></script>
<script src="../research-dashboard.js" integrity="sha384-X7CVURX/TzOwDEsYJMIus7eYF/i05JJY8aTMSLb65ik8mUbe4KT7XrydAfd1E8jE" crossorigin="anonymous"></script>
<script>
// Mapbox token resolution — the A3 ladder, in precedence order: