Stop the dimmed pins reading as white rings, and lift the chooser map

rega shot the hover dim at 1440 and called the non-hovered pins pale rings on
the pastel fills. That is what they were, and the cause is a property that was
never set: circle-opacity dims the FILL only, and circle-stroke-opacity is a
separate property defaulting to 1. So a pin dimmed to 0.25 kept a fully opaque
1px white stroke, and at the dimmed radius that ring is most of the pin.

Worth saying plainly, because the obvious fix was to keep the stroke opaque
while dimming the fill: that was already the behaviour, and it was the cause
rather than the cure. The stroke now dims with the fill, so a non-hovered pin
recedes as a dot instead of becoming an outline. The fill dims less as well,
0.25 to 0.45, and the dimmed radius goes 2.5 to 3 at low zoom for the same
reason the resting state was raised earlier: a stroke is a fixed px cost, so at
radius 2.5 the coloured core carrying the region's identity is about 1.5px.
dx-life's two modes keep an opaque stroke; only the chooser's dim is ours.

The property is set in both places. A paint property added at layer creation but
not re-applied where the mode is re-applied never updates on hover, which is the
bug this file already carries a warning about.

The map below the fold, measured at 1440 with the container at 1200: the map's
top sits at about 583px and the map is 780px tall, because min-height beats what
16/9 asks for at that width. A reader sees roughly its top 190px. Tightening the
three gaps above it and dropping the outsized title one step recovers about
99px, so about 286px shows on load. It does not put the whole map above the fold
and nothing leaving the map 780px tall can; that needs the map bounded by
viewport height, which changes its rendered size and is on the Driver's sheet.
Scoped to the all-regions page and to 1200px and up, because the region and
country pages are the clone and their rhythm is measured against dx-life.

Rebuilt on current main rather than merged, so the shared manifests carry every
other bundle's current hash and only this bundle's moved: four lines, one
integrity plus the three script tags that embed it.
This commit is contained in:
Doxa Maps 2026-09-28 13:58:20 +00:00
parent 722ac77892
commit 7e99159cb8
8 changed files with 90 additions and 54 deletions

View file

@ -848,6 +848,30 @@ useShadowStyles(
'.rd-chooser{ display:flex; flex-wrap:wrap; gap:13.3px; align-items:flex-end;' + '.rd-chooser{ display:flex; flex-wrap:wrap; gap:13.3px; align-items:flex-end;' +
' justify-content:center; }' + ' justify-content:center; }' +
// .stack .stack--sm — --spacing-sm, 1.33rem. // .stack .stack--sm — --spacing-sm, 1.33rem.
// ── the map sat below the fold at 1440, and this is the part of that I can fix without
// ── touching the clone or the order ────────────────────────────────────────────────────────
// ARITHMETIC AT 1440, container 1200px, tokens resolved: padding-top 55.3 + head 147 + 3 gaps of
// 55.3 + chooser ~62 + stats ~110 + note 29 + 13.3 puts the map's TOP at ~583px, and the map is
// 780px tall because min-height:780px beats what 16/9 asks for at 1200 wide (675). Bottom ~1363.
// So a reader at 1440x900 sees roughly the top 190px of an 780px map: a sliver, which is what
// "below the fold" meant.
//
// WHAT THIS DOES AND DOES NOT DO. Tightening the three gaps above the map from --spacing-3xl to
// --spacing-xl and dropping the outsized title one step recovers ~99px, so ~286px of map shows
// instead of ~190 — about 50% more map on load. It does NOT get the whole map above the fold,
// and nothing that leaves the map at 780px can: you would need the map under ~320px tall. That
// fix exists (bound .rcm by viewport height) but it changes the map's rendered SIZE, which is a
// change to what the Campaign Server shows, so it is the Driver's call and not mine.
//
// SCOPED TO THE ALL-REGIONS PAGE ONLY (.rd-root--all), and at >=1200px only. That page is ours;
// the region and country pages are the clone, and their vertical rhythm is measured against
// dx-life, so a global trim here would quietly un-clone three pages to improve one.
'@media (min-width:1200px){' +
' .rd-root--all .rd-scroll > .rd-chooser,' +
' .rd-root--all .rd-scroll > .rd-stats,' +
' .rd-root--all .rd-scroll > .rd-mapblock{ margin-top:var(--spacing-xl); }' +
' .rd-root--all .rd-title{ font-size:var(--font-size-3xl); }' +
'}' +
'.rd-mapblock{ display:flex; flex-direction:column; }' + '.rd-mapblock{ display:flex; flex-direction:column; }' +
'.rd-mapblock > * + *{ margin-top:13.3px; }' + '.rd-mapblock > * + *{ margin-top:13.3px; }' +
'.rd-mapnote{ margin:0; text-align:center; color:#92b195; font-weight:700; font-size:var(--font-size-md); }' + '.rd-mapnote{ margin:0; text-align:center; color:#92b195; font-weight:700; font-size:var(--font-size-md); }' +
@ -990,7 +1014,7 @@ useShadowStyles(
see the host document's attribute, so the switch their global sheet performs on see the host document's attribute, so the switch their global sheet performs on
[lang="ru-RU"] can only fire if the attribute is INSIDE the root. It is also simply [lang="ru-RU"] can only fire if the attribute is INSIDE the root. It is also simply
correct HTML — screen readers and hyphenation read it. --> correct HTML — screen readers and hyphenation read it. -->
<div class="rd-root" :lang="locale" :dir="isRTL ? 'rtl' : 'ltr'"> <div class="rd-root" :class="{ 'rd-root--all': isAll }" :lang="locale" :dir="isRTL ? 'rtl' : 'ltr'">
<!-- a landmark, so a screen reader can jump to the dashboard body; the app probe <!-- a landmark, so a screen reader can jump to the dashboard body; the app probe
measured none on the page and it costs nothing to name the region. --> measured none on the page and it costs nothing to name the region. -->
<main class="rd-scroll" :aria-label="t('Region dashboard')"> <main class="rd-scroll" :aria-label="t('Region dashboard')">

View file

@ -228,7 +228,16 @@ function pinExpressions() {
return { return {
color: regionColorExpression(), color: regionColorExpression(),
sortKey: lit ? ['case', isLit, 2, 1] : 1, sortKey: lit ? ['case', isLit, 2, 1] : 1,
opacity: lit ? ['case', isLit, 1, 0.25] : 1, opacity: lit ? ['case', isLit, 1, 0.45] : 1,
// ★ THE DIM DIMS THE STROKE TOO, AND THAT IS THE WHOLE FIX. circle-opacity applies to the
// FILL only; circle-stroke-opacity is a separate property that defaults to 1. So the old
// 0.25 dim left the 1px white stroke fully opaque, and at the dimmed radius that ring is
// most of the pin: a reader saw a crisp white O with a washed-out centre, not a receded dot.
// rega shot it (pins-a5eb9f6fa/hover2/maplibre-1440-hover.png) and called them pale rings,
// which is exactly what an opaque stroke around a faint core looks like on a pastel fill.
// Worth being precise, because "keep the stroke opaque while dimming the fill" was the
// proposed fix and it was already the behaviour — it was the CAUSE, not the cure.
strokeOpacity: lit ? ['case', isLit, 1, 0.3] : 1,
// THE RESTING STATE IS BIGGER THAN THE CLONE'S, and only here. The Driver reported the pins // THE RESTING STATE IS BIGGER THAN THE CLONE'S, and only here. The Driver reported the pins
// as hard to see; this is the state that answers that, because it is what the page shows on // as hard to see; this is the state that answers that, because it is what the page shows on
// load, before any hover. Two things make a pin harder to read on THIS map than on a cloned // load, before any hover. Two things make a pin harder to read on THIS map than on a cloned
@ -244,7 +253,7 @@ function pinExpressions() {
// The HOVER state is deliberately untouched — dimming the rest to 0.25 is the design saying // The HOVER state is deliberately untouched — dimming the rest to 0.25 is the design saying
// "these pins are one group", and that is a Driver taste call, not a legibility defect. // "these pins are one group", and that is a Driver taste call, not a legibility defect.
radius: lit radius: lit
? ['case', isLit, ['interpolate', ['linear'], ['zoom'], 2, 4.5, 6, 8], ['interpolate', ['linear'], ['zoom'], 2, 2.5, 6, 5]] ? ['case', isLit, ['interpolate', ['linear'], ['zoom'], 2, 4.5, 6, 8], ['interpolate', ['linear'], ['zoom'], 2, 3, 6, 5.5]]
: ['interpolate', ['linear'], ['zoom'], 2, 4, 6, 7.5], : ['interpolate', ['linear'], ['zoom'], 2, 4, 6, 7.5],
} }
} }
@ -257,6 +266,7 @@ function pinExpressions() {
? ['case', outsideFocus, 0, full, 3, some, 2, 1] ? ['case', outsideFocus, 0, full, 3, some, 2, 1]
: ['case', ['get', 'inCountry'], 1, 0], : ['case', ['get', 'inCountry'], 1, 0],
opacity: ['case', ['get', 'inCountry'], 1, 0.75], opacity: ['case', ['get', 'inCountry'], 1, 0.75],
strokeOpacity: 1, // theirs, unchanged (CountryMap.vue) — only the chooser's dim is ours
radius: ['interpolate', ['linear'], ['zoom'], 2, 3, 6, 6.5], radius: ['interpolate', ['linear'], ['zoom'], 2, 3, 6, 6.5],
} }
} }
@ -264,7 +274,7 @@ function pinExpressions() {
function addLayers() { function addLayers() {
const m = map.value const m = map.value
if (!m) return if (!m) return
const { color: pinColor, sortKey: pinSortKey, opacity: pinOpacity, radius: pinRadius } = pinExpressions() const { color: pinColor, sortKey: pinSortKey, opacity: pinOpacity, radius: pinRadius, strokeOpacity: pinStrokeOpacity } = pinExpressions()
if (!m.getSource(SRC_COUNTRIES)) { if (!m.getSource(SRC_COUNTRIES)) {
// ── COUNTRY POLYGONS, PER PROVIDER ──────────────────────────────────────────────────────── // ── COUNTRY POLYGONS, PER PROVIDER ────────────────────────────────────────────────────────
@ -329,6 +339,7 @@ function addLayers() {
'circle-opacity': pinOpacity, 'circle-opacity': pinOpacity,
'circle-stroke-width': 1, 'circle-stroke-width': 1,
'circle-stroke-color': '#ffffff', 'circle-stroke-color': '#ffffff',
'circle-stroke-opacity': pinStrokeOpacity,
}, },
}) })
m.on('click', 'rcm-pins', onPinClick) m.on('click', 'rcm-pins', onPinClick)
@ -596,9 +607,10 @@ function applySubject() {
if (src) src.setData(geojson.value) if (src) src.setData(geojson.value)
// Re-apply the MODE, not just the data — see pinExpressions(). // Re-apply the MODE, not just the data — see pinExpressions().
if (m.getLayer('rcm-pins')) { if (m.getLayer('rcm-pins')) {
const { color, sortKey, opacity, radius } = pinExpressions() const { color, sortKey, opacity, radius, strokeOpacity } = pinExpressions()
m.setPaintProperty('rcm-pins', 'circle-color', color) m.setPaintProperty('rcm-pins', 'circle-color', color)
m.setPaintProperty('rcm-pins', 'circle-opacity', opacity) m.setPaintProperty('rcm-pins', 'circle-opacity', opacity)
m.setPaintProperty('rcm-pins', 'circle-stroke-opacity', strokeOpacity)
m.setPaintProperty('rcm-pins', 'circle-radius', radius) m.setPaintProperty('rcm-pins', 'circle-radius', radius)
m.setLayoutProperty('rcm-pins', 'circle-sort-key', sortKey) m.setLayoutProperty('rcm-pins', 'circle-sort-key', sortKey)
} }

View file

@ -1080,7 +1080,7 @@
"bundle": "regions-dashboard", "bundle": "regions-dashboard",
"scriptUrl": "./regions-dashboard/regions-dashboard.js", "scriptUrl": "./regions-dashboard/regions-dashboard.js",
"output": "dx-maps/regions-dashboard/regions-dashboard.js", "output": "dx-maps/regions-dashboard/regions-dashboard.js",
"integrity": "sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo", "integrity": "sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH",
"elements": [ "elements": [
"regions-dashboard" "regions-dashboard"
], ],
@ -1103,7 +1103,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js", "scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": { "embed": {
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>", "iframe": "<iframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>" "script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
} }
}, },
{ {
@ -1119,7 +1119,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js", "scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": { "embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>", "iframe": "<iframe src=\"./regions-dashboard/regions-list/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>" "script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
} }
}, },
{ {
@ -1135,7 +1135,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js", "scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": { "embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>", "iframe": "<iframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>" "script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
} }
} }
] ]

View file

@ -1080,7 +1080,7 @@
"bundle": "regions-dashboard", "bundle": "regions-dashboard",
"scriptUrl": "./regions-dashboard/regions-dashboard.js", "scriptUrl": "./regions-dashboard/regions-dashboard.js",
"output": "dx-maps/regions-dashboard/regions-dashboard.js", "output": "dx-maps/regions-dashboard/regions-dashboard.js",
"integrity": "sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo", "integrity": "sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH",
"elements": [ "elements": [
"regions-dashboard" "regions-dashboard"
], ],
@ -1103,7 +1103,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js", "scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": { "embed": {
"iframe": "<iframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>", "iframe": "<iframe src=\"./regions-dashboard/region-dashboards/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>" "script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"region-dashboards\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
} }
}, },
{ {
@ -1119,7 +1119,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js", "scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": { "embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-list/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>", "iframe": "<iframe src=\"./regions-dashboard/regions-list/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=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>" "script": "<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-list\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
} }
}, },
{ {
@ -1135,7 +1135,7 @@
"scriptUrl": "./regions-dashboard/regions-dashboard.js", "scriptUrl": "./regions-dashboard/regions-dashboard.js",
"embed": { "embed": {
"iframe": "<iframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>", "iframe": "<iframe src=\"./regions-dashboard/regions-mfe/index.html?utm_source=YOUR_SOURCE\" width=\"100%\" height=\"600\" style=\"border:none;border-radius:12px;\" allowfullscreen></iframe>",
"script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>" "script": "<!-- Mapbox engine, fetched early. Keep it only with a real Mapbox token in \"tk\": without one (or with \"provider\":\"maplibre\") the map draws with MapLibre and this line must go -->\n<link rel=\"preload\" as=\"script\" href=\"https://api.mapbox.com/mapbox-gl-js/v3.24.0/mapbox-gl.js\" integrity=\"sha384-tO0clamXONKwbiz7O6xJpUeyJbTSPugC+xM9clvfFvKTH3i8SmCawHGdf5quMWmZ\" crossorigin=\"anonymous\">\n<script>window.MAP_APP_API_URL=\"https://pray.doxa.life\";</script>\n<script src=\"./regions-dashboard/regions-dashboard.js\" integrity=\"sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH\" crossorigin=\"anonymous\"></script>\n<regions-dashboard profile-config='{\"profile\":\"regions-mfe\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></regions-dashboard>"
} }
} }
] ]

View file

@ -36,7 +36,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script> <script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. --> <!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
<script src="../regions-dashboard.js" integrity="sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo" crossorigin="anonymous"></script> <script src="../regions-dashboard.js" integrity="sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH" crossorigin="anonymous"></script>
<script> <script>
// Mapbox token resolution — the A3 ladder, in precedence order: // Mapbox token resolution — the A3 ladder, in precedence order:

File diff suppressed because one or more lines are too long

View file

@ -32,7 +32,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script> <script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. --> <!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
<script src="../regions-dashboard.js" integrity="sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo" crossorigin="anonymous"></script> <script src="../regions-dashboard.js" integrity="sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH" crossorigin="anonymous"></script>
<script> <script>
// Mapbox token resolution — the A3 ladder, in precedence order: // Mapbox token resolution — the A3 ladder, in precedence order:

View file

@ -47,7 +47,7 @@
<script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script> <script>window.MAP_APP_API_URL = "https://pray.doxa.life";</script>
<!-- Bundle IIFE — registers the <regions-dashboard> custom element. --> <!-- Bundle IIFE — registers the <regions-dashboard> custom element. -->
<script src="../regions-dashboard.js" integrity="sha384-JNfHBIQiXgHSUg0i/wd43Q0XMPGuo2GNOm0jRdD7AQvWg+TZUdpRHKtwqkqhRCNo" crossorigin="anonymous"></script> <script src="../regions-dashboard.js" integrity="sha384-/RARe73nUORH8xOqfu+fHBot96aJ9qN0lASLexQE5kaAHBQrC5JGBFOzVlexWphH" crossorigin="anonymous"></script>
<script> <script>
// Mapbox token resolution — the A3 ladder, in precedence order: // Mapbox token resolution — the A3 ladder, in precedence order: