Rebuild research-dashboard, doxa-research-map and dashboard-plus-grid
Some checks are pending
Deploy to GitHub Pages / build (push) Waiting to run
Deploy to GitHub Pages / deploy (push) Blocked by required conditions

This commit is contained in:
Doxa Maps 2026-09-28 22:54:45 +00:00
parent 55767fabbc
commit cbd996dd7a
10 changed files with 42 additions and 42 deletions

View file

@ -474,23 +474,23 @@
.rd-topbar .rd-filter-search .search-box input{ height:32px; padding:0 10px 0 34px; font-size:var(--fs-md,12px); .rd-topbar .rd-filter-search .search-box input{ height:32px; padding:0 10px 0 34px; font-size:var(--fs-md,12px);
border-radius:16px; border-color:#ffffff3d; } border-radius:16px; border-color:#ffffff3d; }
.rd-topbar .rd-filter-search .search-box input:focus{ border-color:var(--rd-accent,#e67e22); } .rd-topbar .rd-filter-search .search-box input:focus{ border-color:var(--rd-accent,#e67e22); }
.rd-topbar .rd-filter-search .search-icon{ left:10px; width:15px; height:15px; } .rd-topbar .rd-filter-search .search-icon{ inset-inline-start:10px; width:15px; height:15px; }
.rd-shell.rd-narrow .rd-topbar .rd-filter-search{ position:static; transform:none; .rd-shell.rd-narrow .rd-topbar .rd-filter-search{ position:static; transform:none;
left:auto; top:auto; flex:1 1 auto; width:auto; max-width:none; } inset-inline-start:auto; top:auto; flex:1 1 auto; width:auto; max-width:none; }
.rd-search{ position:relative; flex:0 1 280px; min-width:140px; } .rd-search{ position:relative; flex:0 1 280px; min-width:140px; }
.rd-search input{ width:100%; box-sizing:border-box; height:30px; padding:0 10px 0 28px; font-size:var(--fs-md,12px); .rd-search input{ width:100%; box-sizing:border-box; height:30px; padding:0 10px 0 28px; font-size:var(--fs-md,12px);
color:var(--rd-header-ink,#f3f3f1); background:#ffffff1f; border:1px solid #ffffff3d; color:var(--rd-header-ink,#f3f3f1); background:#ffffff1f; border:1px solid #ffffff3d;
border-radius:var(--r-md,6px); outline:none; } border-radius:var(--r-md,6px); outline:none; }
.rd-search input:focus{ border-color:var(--rd-accent,#e67e22); background:#ffffff33; } .rd-search input:focus{ border-color:var(--rd-accent,#e67e22); background:#ffffff33; }
.rd-search input::placeholder{ color:var(--rd-header-muted,#cbc5b9); } .rd-search input::placeholder{ color:var(--rd-header-muted,#cbc5b9); }
.rd-search .ic{ position:absolute; left:8px; top:50%; transform:translateY(-50%); font-size:12px; color:var(--rd-header-muted,#cbc5b9); pointer-events:none; } .rd-search .ic{ position:absolute; inset-inline-start:8px; top:50%; transform:translateY(-50%); font-size:12px; color:var(--rd-header-muted,#cbc5b9); pointer-events:none; }
.rd-results{ position:absolute; left:0; right:0; top:34px; z-index:60; background:#fff; border:1px solid var(--rd-line, #d1d4cd); .rd-results{ position:absolute; left:0; right:0; top:34px; z-index:60; background:#fff; border:1px solid var(--rd-line, #d1d4cd);
border-radius:var(--r-md,6px); box-shadow:0 8px 24px #1f273322; overflow:hidden; max-height:320px; overflow-y:auto; border-radius:var(--r-md,6px); box-shadow:0 8px 24px #1f273322; overflow:hidden; max-height:320px; overflow-y:auto;
scrollbar-width:thin; scrollbar-color:var(--dx-scroll-thumb, #c4c8c0) transparent; } scrollbar-width:thin; scrollbar-color:var(--dx-scroll-thumb, #c4c8c0) transparent; }
.rd-results .rd-res{ display:flex; align-items:baseline; gap:8px; padding:6px 10px; cursor:pointer; font-size:var(--fs-md,12px); } .rd-results .rd-res{ display:flex; align-items:baseline; gap:8px; padding:6px 10px; cursor:pointer; font-size:var(--fs-md,12px); }
.rd-results .rd-res:hover, .rd-results .rd-res.on{ background:var(--rd-bg, #f3f3f1); } .rd-results .rd-res:hover, .rd-results .rd-res.on{ background:var(--rd-bg, #f3f3f1); }
.rd-results .rd-res .nm{ font-weight:700; color:var(--rd-ink, #3b463d); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .rd-results .rd-res .nm{ font-weight:700; color:var(--rd-ink, #3b463d); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rd-results .rd-res .sub{ margin-left:auto; color:var(--rd-muted, #6d766e); font-size:var(--fs-sm,11px); white-space:nowrap; flex:0 0 auto; } .rd-results .rd-res .sub{ margin-inline-start:auto; color:var(--rd-muted, #6d766e); font-size:var(--fs-sm,11px); white-space:nowrap; flex:0 0 auto; }
.rd-results .rd-empty{ padding:8px 10px; color:var(--rd-muted, #6d766e); font-size:var(--fs-sm,11px); } .rd-results .rd-empty{ padding:8px 10px; color:var(--rd-muted, #6d766e); font-size:var(--fs-sm,11px); }
.rd-topbar .rd-align{ display:inline-flex; align-items:center; gap:5px; font-size:var(--fs-sm,11px); font-weight:700; .rd-topbar .rd-align{ display:inline-flex; align-items:center; gap:5px; font-size:var(--fs-sm,11px); font-weight:700;
cursor:pointer; user-select:none; flex:0 0 auto; color:var(--rd-header-ink,#f3f3f1); cursor:pointer; user-select:none; flex:0 0 auto; color:var(--rd-header-ink,#f3f3f1);
@ -541,12 +541,12 @@
.rd-grid::-webkit-scrollbar-corner{ background:transparent; } .rd-grid::-webkit-scrollbar-corner{ background:transparent; }
.rd-thead{ position:sticky; top:0; z-index:2; display:flex; width:100%; background:var(--dx-surface, #f3f3f1); border-bottom:1px solid var(--dx-line, #d1d4cd); } .rd-thead{ position:sticky; top:0; z-index:2; display:flex; width:100%; background:var(--dx-surface, #f3f3f1); border-bottom:1px solid var(--dx-line, #d1d4cd); }
.rd-th{ flex:1 1 0; min-width:0; padding:4px 4px; font-weight:700; color:var(--dx-text, #3b463d); cursor:pointer; user-select:none; white-space:nowrap; overflow:hidden; } .rd-th{ flex:1 1 0; min-width:0; padding:4px 4px; font-weight:700; color:var(--dx-text, #3b463d); cursor:pointer; user-select:none; white-space:nowrap; overflow:hidden; }
.rd-th.num{ text-align:right; } .rd-th.chk{ flex:0 0 30px; cursor:default; text-align:center; padding:6px 0; } .rd-th.num{ text-align:end; } .rd-th.chk{ flex:0 0 30px; cursor:default; text-align:center; padding:6px 0; }
.rd-th .ind{ font-size:9px; color:var(--dx-text, #3b463d); margin-left:3px; } .rd-th .ind{ font-size:9px; color:var(--dx-text, #3b463d); margin-inline-start:3px; }
.rd-row{ display:flex; width:100%; height:26px; line-height:16px; border-bottom:1px solid var(--dx-surface, #f3f3f1); align-items:center; } .rd-row{ display:flex; width:100%; height:26px; line-height:16px; border-bottom:1px solid var(--dx-surface, #f3f3f1); align-items:center; }
.rd-row:hover{ background:var(--dx-surface, #f3f3f1); } .rd-row.sel{ background:#fff7ec; box-shadow:inset 3px 0 0 #e67e22; } .rd-row:hover{ background:var(--dx-surface, #f3f3f1); } .rd-row.sel{ background:#fff7ec; box-shadow:inset 3px 0 0 #e67e22; }
.rd-td{ flex:1 1 0; min-width:0; padding:0 4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--dx-text, #3b463d); } .rd-td{ flex:1 1 0; min-width:0; padding:0 4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--dx-text, #3b463d); }
.rd-td.num{ text-align:right; font-variant-numeric:tabular-nums; } .rd-td.chk{ flex:0 0 30px; text-align:center; padding:0; } .rd-td.num{ text-align:end; font-variant-numeric:tabular-nums; } .rd-td.chk{ flex:0 0 30px; text-align:center; padding:0; }
.rd-foot{ flex:0 0 auto; display:flex; border-top:2px solid var(--dx-line, #d1d4cd); background:var(--dx-surface, #f3f3f1); font-weight:700; height:28px; align-items:center; color:var(--dx-text, #3b463d); overflow:hidden; } .rd-foot{ flex:0 0 auto; display:flex; border-top:2px solid var(--dx-line, #d1d4cd); background:var(--dx-surface, #f3f3f1); font-weight:700; height:28px; align-items:center; color:var(--dx-text, #3b463d); overflow:hidden; }
.rd-foot .rd-td{ color:var(--dx-text, #3b463d); } .rd-foot .rd-td{ color:var(--dx-text, #3b463d); }
.rd-foot-inner{ display:flex; align-items:center; height:100%; width:100%; flex:0 0 auto; } .rd-foot-inner{ display:flex; align-items:center; height:100%; width:100%; flex:0 0 auto; }
@ -615,7 +615,7 @@
.rd-bf{ display:block; height:100%; border-radius:3px; transition:width .35s cubic-bezier(.4,0,.2,1); } .rd-bf{ display:block; height:100%; border-radius:3px; transition:width .35s cubic-bezier(.4,0,.2,1); }
.rd-bv{ flex:0 0 auto; color:var(--rd-muted, #6d766e); font-variant-numeric:tabular-nums; min-width:30px; text-align:end; } .rd-bv{ flex:0 0 auto; color:var(--rd-muted, #6d766e); font-variant-numeric:tabular-nums; min-width:30px; text-align:end; }
`,"rd-charts"),(b,S)=>(X(),ee("aside",{class:"rd-charts","data-region":"charts-rail",onClick:m},[E("div",{class:"rd-tabs",role:"tablist","aria-label":de(ke)("aria.railViews")||"Rail views"},[(X(),ee(Ne,null,at(t,_=>E("button",{key:_.id,class:Ke(["rd-tab",{on:o.value===_.id,off:_.disabled}]),role:"tab",type:"button","aria-selected":o.value===_.id?"true":"false",disabled:_.disabled,title:_.disabled?_.why:_.label,"data-tab":_.id,onClick:co(v=>!_.disabled&&(o.value=_.id),["stop"])},ie(_.label),11,G1)),64))],8,z1),(X(!0),ee(Ne,null,at(d.value,_=>(X(),ee(Ne,{key:_.id},[_.type==="donut"?(X(),ee("div",{key:0,class:"rd-chart","data-chart":_.facet},[E("div",U1,ie(_.title),1),E("div",H1,[(X(),ee("svg",{class:Ke(["rd-donut",{"has-sel":$(_.facet)}]),viewBox:"0 0 132 132",role:"img","aria-label":(de(ke)("aria.donutChart")||"{title} donut chart").replace("{title}",_.title)},[(X(!0),ee(Ne,null,at(_.geometry,v=>(X(),ee("path",{key:v.key,d:v.path,fill:v.color,class:Ke(["rd-slice",{on:f(_.facet,v.key)}]),"data-facet":_.facet,"data-key":v.key},[E("title",null,ie(x(_.facet,v.key))+": "+ie(v.value)+" ("+ie(v.pct)+"%)",1)],10,V1))),128))],10,j1)),E("div",W1,[(X(!0),ee(Ne,null,at(_.geometry,v=>(X(),ee("span",{key:v.key,class:Ke(["rd-li",{on:f(_.facet,v.key)}]),"data-facet":_.facet,"data-key":v.key,title:x(_.facet,v.key)+": "+v.value},[E("i",{style:ut({background:v.color})},null,4),E("span",K1,ie(x(_.facet,v.key)),1),E("b",null,ie(v.value),1)],10,q1))),128))])])],8,B1)):(X(),ee("div",{key:1,class:"rd-chart","data-chart":_.facet},[E("div",Z1,ie(_.title),1),E("div",J1,[(X(!0),ee(Ne,null,at(_.geometry,v=>(X(),ee("div",{key:v.key,class:Ke(["rd-bar",{on:f(_.facet,v.key)}]),"data-facet":_.facet,"data-key":v.key},[E("span",Q1,ie(x(_.facet,v.key)),1),E("span",ex,[E("span",{class:"rd-bf",style:ut({width:v.frac*100+"%",background:v.color})},null,4)]),E("span",tx,ie(v.value),1)],10,X1))),128))])],8,Y1))],64))),128))]))}},nx={class:"rd-detail","data-region":"detail-drawer"},ax={class:"rd-dh"},sx=["aria-label"],rx={key:0,class:"rd-empty","data-detail-empty":""},ix={class:"rd-top"},lx=["src","alt"],cx={key:1,class:"rd-ph","data-detail-thumb":""},ux={class:"rd-name","data-detail-name":""},dx={class:"rd-meta"},px={class:"rd-actions"},gx=["href","title"],fx=["href","title"],hx={class:"rd-rows"},mx={class:"rd-row"},bx={class:"k"},_x={class:"v"},$x={key:0,class:"fam"},yx={class:"rd-row"},vx={class:"k"},wx={class:"v"},xx={class:"rd-row"},kx={class:"k"},Sx={class:"v"},Px={class:"rd-row"},Ax={class:"k"},Lx={class:"v"},Cx={class:"rd-row"},Tx={class:"k"},Rx={class:"v"},Ex={class:"rd-row"},Fx={class:"k"},Nx={class:"v"},Ox={__name:"DashboardDetailDrawer",setup(e){const t=(m,b)=>ke(m)||b,o=ze("dashboardData",null),n=ze("selectionBus",null),a=ze("dashboardConfig",{}),s=Object.fromEntries(Object.entries(a.facets||{}).map(([m,b])=>[m,b.get])),{labelFor:r}=As(a,ze("dataStore",null),ze("searchSourceId",null)),i=o&&n?Li({rowStore:o.rowStore,rows:o.rows,selectionSet:n.selectionSet,filterSet:n.filterSet,FACET_ACC:s,labelFor:r}):null,l=pe(null),c=[];vt(()=>{n&&(c.push(n.on("focusRow",m=>{m&&m.slug&&(l.value=m.slug)})),c.push(n.on("select",m=>{const b=m?[...m]:[];b.length&&(l.value=b[b.length-1])})))}),Bt(()=>{c.forEach(m=>{try{m()}catch{}}),c.length=0});const u=se(()=>{const m=l.value;return!m||!o||!o.rowStore||!o.rowStore.value?null:o.rowStore.value.get(m)||null}),d=m=>m==null||m===""?"—":Yo(m),f=se(()=>{const m=u.value;return m?a.detail&&typeof a.detail.photo=="function"?!!a.detail.photo(m):!!(m.has_photo&&m.image_url):!1}),w=se(()=>a.detail||{});function A(m,b,S){if(typeof m=="function")try{return m(b)||S}catch{return S}return typeof m=="string"&&m?m.replace("{slug}",encodeURIComponent(b.slug||"")):S}const P=se(()=>{const m=u.value;if(!m)return null;const b=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),S=encodeURIComponent(String(b||w.value.utmSource||a.utmSource||"agwm")),_=`https://pray.doxa.life/${encodeURIComponent(m.slug||"")}?source=doxalife&utm_source=${S}`;return A(w.value.prayUrl,m,_)}),C=se(()=>{var J;const m=u.value;if(!m)return null;const b=typeof window<"u"&&((J=window.location)==null?void 0:J.origin)||"https://doxa.life",S=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),_=encodeURIComponent(String(S||w.value.utmSource||a.utmSource||"agwm")),v=`${b}/research/${encodeURIComponent(m.slug||"")}/?utm_source=${_}`;return A(w.value.moreInfoUrl,m,v)}),N=se(()=>w.value.prayLabel||"Pray for this people group"),x=se(()=>w.value.moreInfoLabel||"More information");function $(){!i||!n||(!n.selectionSet.size&&l.value&&n.toggleSelect(l.value),i.exportCsv())}function p(){l.value=null,n&&typeof n.clearSelection=="function"&&n.clearSelection()}return zt(` `,"rd-charts"),(b,S)=>(X(),ee("aside",{class:"rd-charts","data-region":"charts-rail",onClick:m},[E("div",{class:"rd-tabs",role:"tablist","aria-label":de(ke)("aria.railViews")||"Rail views"},[(X(),ee(Ne,null,at(t,_=>E("button",{key:_.id,class:Ke(["rd-tab",{on:o.value===_.id,off:_.disabled}]),role:"tab",type:"button","aria-selected":o.value===_.id?"true":"false",disabled:_.disabled,title:_.disabled?_.why:_.label,"data-tab":_.id,onClick:co(v=>!_.disabled&&(o.value=_.id),["stop"])},ie(_.label),11,G1)),64))],8,z1),(X(!0),ee(Ne,null,at(d.value,_=>(X(),ee(Ne,{key:_.id},[_.type==="donut"?(X(),ee("div",{key:0,class:"rd-chart","data-chart":_.facet},[E("div",U1,ie(_.title),1),E("div",H1,[(X(),ee("svg",{class:Ke(["rd-donut",{"has-sel":$(_.facet)}]),viewBox:"0 0 132 132",role:"img","aria-label":(de(ke)("aria.donutChart")||"{title} donut chart").replace("{title}",_.title)},[(X(!0),ee(Ne,null,at(_.geometry,v=>(X(),ee("path",{key:v.key,d:v.path,fill:v.color,class:Ke(["rd-slice",{on:f(_.facet,v.key)}]),"data-facet":_.facet,"data-key":v.key},[E("title",null,ie(x(_.facet,v.key))+": "+ie(v.value)+" ("+ie(v.pct)+"%)",1)],10,V1))),128))],10,j1)),E("div",W1,[(X(!0),ee(Ne,null,at(_.geometry,v=>(X(),ee("span",{key:v.key,class:Ke(["rd-li",{on:f(_.facet,v.key)}]),"data-facet":_.facet,"data-key":v.key,title:x(_.facet,v.key)+": "+v.value},[E("i",{style:ut({background:v.color})},null,4),E("span",K1,ie(x(_.facet,v.key)),1),E("b",null,ie(v.value),1)],10,q1))),128))])])],8,B1)):(X(),ee("div",{key:1,class:"rd-chart","data-chart":_.facet},[E("div",Z1,ie(_.title),1),E("div",J1,[(X(!0),ee(Ne,null,at(_.geometry,v=>(X(),ee("div",{key:v.key,class:Ke(["rd-bar",{on:f(_.facet,v.key)}]),"data-facet":_.facet,"data-key":v.key},[E("span",Q1,ie(x(_.facet,v.key)),1),E("span",ex,[E("span",{class:"rd-bf",style:ut({width:v.frac*100+"%",background:v.color})},null,4)]),E("span",tx,ie(v.value),1)],10,X1))),128))])],8,Y1))],64))),128))]))}},nx={class:"rd-detail","data-region":"detail-drawer"},ax={class:"rd-dh"},sx=["aria-label"],rx={key:0,class:"rd-empty","data-detail-empty":""},ix={class:"rd-top"},lx=["src","alt"],cx={key:1,class:"rd-ph","data-detail-thumb":""},ux={class:"rd-name","data-detail-name":""},dx={class:"rd-meta"},px={class:"rd-actions"},gx=["href","title"],fx=["href","title"],hx={class:"rd-rows"},mx={class:"rd-row"},bx={class:"k"},_x={class:"v"},$x={key:0,class:"fam"},yx={class:"rd-row"},vx={class:"k"},wx={class:"v"},xx={class:"rd-row"},kx={class:"k"},Sx={class:"v"},Px={class:"rd-row"},Ax={class:"k"},Lx={class:"v"},Cx={class:"rd-row"},Tx={class:"k"},Rx={class:"v"},Ex={class:"rd-row"},Fx={class:"k"},Nx={class:"v"},Ox={__name:"DashboardDetailDrawer",setup(e){const t=(m,b)=>ke(m)||b,o=ze("dashboardData",null),n=ze("selectionBus",null),a=ze("dashboardConfig",{}),s=Object.fromEntries(Object.entries(a.facets||{}).map(([m,b])=>[m,b.get])),{labelFor:r}=As(a,ze("dataStore",null),ze("searchSourceId",null)),i=o&&n?Li({rowStore:o.rowStore,rows:o.rows,selectionSet:n.selectionSet,filterSet:n.filterSet,FACET_ACC:s,labelFor:r}):null,l=pe(null),c=[];vt(()=>{n&&(c.push(n.on("focusRow",m=>{m&&m.slug&&(l.value=m.slug)})),c.push(n.on("select",m=>{const b=m?[...m]:[];b.length&&(l.value=b[b.length-1])})))}),Bt(()=>{c.forEach(m=>{try{m()}catch{}}),c.length=0});const u=se(()=>{const m=l.value;return!m||!o||!o.rowStore||!o.rowStore.value?null:o.rowStore.value.get(m)||null}),d=m=>m==null||m===""?"—":Yo(m),f=se(()=>{const m=u.value;return m?a.detail&&typeof a.detail.photo=="function"?!!a.detail.photo(m):!!(m.has_photo&&m.image_url):!1}),w=se(()=>a.detail||{});function A(m,b,S){if(typeof m=="function")try{return m(b)||S}catch{return S}return typeof m=="string"&&m?m.replace("{slug}",encodeURIComponent(b.slug||"")):S}const P=se(()=>{const m=u.value;if(!m)return null;const b=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),S=encodeURIComponent(String(b||w.value.utmSource||a.utmSource||"agwm")),_=`https://pray.doxa.life/${encodeURIComponent(m.slug||"")}?source=doxalife&utm_source=${S}`;return A(w.value.prayUrl,m,_)}),C=se(()=>{var J;const m=u.value;if(!m)return null;const b=typeof window<"u"&&((J=window.location)==null?void 0:J.origin)||"https://doxa.life",S=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),_=encodeURIComponent(String(S||w.value.utmSource||a.utmSource||"agwm")),v=`${b}/research/${encodeURIComponent(m.slug||"")}/?utm_source=${_}`;return A(w.value.moreInfoUrl,m,v)}),N=se(()=>w.value.prayLabel||"Pray for this people group"),x=se(()=>w.value.moreInfoLabel||"More information");function $(){!i||!n||(!n.selectionSet.size&&l.value&&n.toggleSelect(l.value),i.exportCsv())}function p(){l.value=null,n&&typeof n.clearSelection=="function"&&n.clearSelection()}return zt(`
.rd-detail{ box-sizing:border-box; background:var(--rd-panel,#fff); border-left:1px solid var(--rd-line, #d1d4cd); .rd-detail{ box-sizing:border-box; background:var(--rd-panel,#fff); border-inline-start:1px solid var(--rd-line, #d1d4cd);
border-bottom:1px solid var(--rd-line, #d1d4cd); padding:var(--s3,12px); border-bottom:1px solid var(--rd-line, #d1d4cd); padding:var(--s3,12px);
font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; color:var(--rd-ink, #3b463d); flex:0 0 auto; } font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; color:var(--rd-ink, #3b463d); flex:0 0 auto; }
.rd-detail .rd-dh{ display:flex; align-items:center; justify-content:space-between; gap:8px; .rd-detail .rd-dh{ display:flex; align-items:center; justify-content:space-between; gap:8px;
@ -638,7 +638,7 @@
padding:2px 0; border-bottom:1px solid var(--rd-line, #d1d4cd); } padding:2px 0; border-bottom:1px solid var(--rd-line, #d1d4cd); }
.rd-detail .rd-row:last-child{ border-bottom:0; } .rd-detail .rd-row:last-child{ border-bottom:0; }
.rd-detail .rd-row .k{ color:var(--rd-muted, #6d766e); flex:0 0 auto; min-width:118px; } .rd-detail .rd-row .k{ color:var(--rd-muted, #6d766e); flex:0 0 auto; min-width:118px; }
.rd-detail .rd-row .v{ color:var(--rd-ink, #3b463d); margin-left:auto; text-align:right; font-variant-numeric:tabular-nums; } .rd-detail .rd-row .v{ color:var(--rd-ink, #3b463d); margin-inline-start:auto; text-align:end; font-variant-numeric:tabular-nums; }
.rd-detail .rd-row .v .fam{ color:var(--rd-muted, #6d766e); } .rd-detail .rd-row .v .fam{ color:var(--rd-muted, #6d766e); }
.rd-detail .rd-exp{ margin-top:var(--s3,12px); width:100%; border:0; border-radius:var(--r-md,6px); cursor:pointer; .rd-detail .rd-exp{ margin-top:var(--s3,12px); width:100%; border:0; border-radius:var(--r-md,6px); cursor:pointer;
background:var(--rd-accent,#e67e22); color:#fff; font-weight:700; font-size:var(--fs-md,12px); padding:var(--s2,8px) var(--s3,12px); } background:var(--rd-accent,#e67e22); color:#fff; font-weight:700; font-size:var(--fs-md,12px); padding:var(--s2,8px) var(--s3,12px); }
@ -712,7 +712,7 @@
.rd-mapwrap{ position:relative; width:100%; height:100%; min-height:0; background:var(--dx-line, #d1d4cd); } .rd-mapwrap{ position:relative; width:100%; height:100%; min-height:0; background:var(--dx-line, #d1d4cd); }
.rd-mapwrap[data-projection="globe"]{ background:#000; } .rd-mapwrap[data-projection="globe"]{ background:#000; }
.rd-mapwrap .rd-mapc{ position:absolute; inset:0; } .rd-mapwrap .rd-mapc{ position:absolute; inset:0; }
.rd-proj{ position:absolute; right:8px; top:8px; z-index:3; font-size:11px; font-weight:700; cursor:pointer; user-select:none; .rd-proj{ position:absolute; inset-inline-end: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); } background:#1a1a2ecc; color:#fff; border:1px solid #ffffff33; border-radius:6px; padding:4px 9px; backdrop-filter:blur(4px); }
.rd-proj:hover{ background:#1a1a2e; } .rd-proj:hover{ background:#1a1a2e; }
.rd-proj{ min-height:24px; min-width:24px; display:inline-flex; align-items:center; justify-content:center; } .rd-proj{ min-height:24px; min-width:24px; display:inline-flex; align-items:center; justify-content:center; }
@ -787,7 +787,7 @@
border-radius:5px; font-size:11px; border-radius:5px; font-size:11px;
line-height:1; box-shadow:0 1px 4px rgba(0,0,0,.14); } line-height:1; box-shadow:0 1px 4px rgba(0,0,0,.14); }
.rd-edge-caret:hover{ background:var(--dx-hover,rgba(59,70,61,.06)); } .rd-edge-caret:hover{ background:var(--dx-hover,rgba(59,70,61,.06)); }
.rd-edge-facet{ left:5px; } .rd-edge-rail{ right:5px; } .rd-edge-facet{ inset-inline-start:5px; } .rd-edge-rail{ inset-inline-end:5px; }
.rd-shell.rd-slim-rail{ --rail-w:228px; } .rd-shell.rd-slim-rail{ --rail-w:228px; }
.rd-shell.rd-slim-facet{ --facet-w:250px; } .rd-shell.rd-slim-facet{ --facet-w:250px; }
.rd-rz{ position:relative; z-index:6; background:transparent; touch-action:none; transition:background .15s; } .rd-rz{ position:relative; z-index:6; background:transparent; touch-action:none; transition:background .15s; }

View file

@ -76,7 +76,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 <dashboard-plus-grid> custom element. --> <!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
<script src="../../dashboard-plus-grid.js" integrity="sha384-sMoLfqylDX+l34g1oVK0Dmk9DmKqtzlPBwioXE4iL/lQAuF/cC1I1B7ilNHFtEXV" crossorigin="anonymous"></script> <script src="../../dashboard-plus-grid.js" integrity="sha384-pquub7+nsSdYuv5LBvjTnMVjGmiyYF3jbU1FgZkxsgx7LKBVomvEKXeTmOw9KIeN" 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

@ -76,7 +76,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 <dashboard-plus-grid> custom element. --> <!-- Bundle IIFE — registers the <dashboard-plus-grid> custom element. -->
<script src="../dashboard-plus-grid.js" integrity="sha384-sMoLfqylDX+l34g1oVK0Dmk9DmKqtzlPBwioXE4iL/lQAuF/cC1I1B7ilNHFtEXV" crossorigin="anonymous"></script> <script src="../dashboard-plus-grid.js" integrity="sha384-pquub7+nsSdYuv5LBvjTnMVjGmiyYF3jbU1FgZkxsgx7LKBVomvEKXeTmOw9KIeN" 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

@ -233,7 +233,7 @@
"bundle": "dashboard-plus-grid", "bundle": "dashboard-plus-grid",
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js", "scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js", "output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js",
"integrity": "sha384-sMoLfqylDX+l34g1oVK0Dmk9DmKqtzlPBwioXE4iL/lQAuF/cC1I1B7ilNHFtEXV", "integrity": "sha384-pquub7+nsSdYuv5LBvjTnMVjGmiyYF3jbU1FgZkxsgx7LKBVomvEKXeTmOw9KIeN",
"elements": [ "elements": [
"dashboard-plus-grid" "dashboard-plus-grid"
], ],
@ -256,7 +256,7 @@
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js", "scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"embed": { "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>", "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": "<!-- 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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-sMoLfqylDX+l34g1oVK0Dmk9DmKqtzlPBwioXE4iL/lQAuF/cC1I1B7ilNHFtEXV\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>" "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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-pquub7+nsSdYuv5LBvjTnMVjGmiyYF3jbU1FgZkxsgx7LKBVomvEKXeTmOw9KIeN\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
}, },
"instances": [ "instances": [
{ {
@ -380,7 +380,7 @@
"bundle": "doxa-research-map", "bundle": "doxa-research-map",
"scriptUrl": "./doxa-research-map/doxa-research-map.js", "scriptUrl": "./doxa-research-map/doxa-research-map.js",
"output": "dx-maps/doxa-research-map/doxa-research-map.js", "output": "dx-maps/doxa-research-map/doxa-research-map.js",
"integrity": "sha384-zgL77VMiztuiM7we/wPV4ixZ4M7qiOqYxP97MROyJ1Fr2IODEEriPByuJ5GJJMB6", "integrity": "sha384-GP6STkEUcL7kqsSICJAzYf7okwy1JMMhGZACNdlgi+d/FeqWZJyZyLC+2QVA2yHL",
"elements": [ "elements": [
"doxa-research-map" "doxa-research-map"
], ],
@ -399,7 +399,7 @@
"scriptUrl": "./doxa-research-map/doxa-research-map.js", "scriptUrl": "./doxa-research-map/doxa-research-map.js",
"embed": { "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>", "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": "<!-- 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=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-zgL77VMiztuiM7we/wPV4ixZ4M7qiOqYxP97MROyJ1Fr2IODEEriPByuJ5GJJMB6\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>" "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=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-GP6STkEUcL7kqsSICJAzYf7okwy1JMMhGZACNdlgi+d/FeqWZJyZyLC+2QVA2yHL\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
}, },
"instances": [ "instances": [
{ {
@ -1144,7 +1144,7 @@
"bundle": "research-dashboard", "bundle": "research-dashboard",
"scriptUrl": "./research-dashboard/research-dashboard.js", "scriptUrl": "./research-dashboard/research-dashboard.js",
"output": "dx-maps/research-dashboard/research-dashboard.js", "output": "dx-maps/research-dashboard/research-dashboard.js",
"integrity": "sha384-mGbL/ytlD6P7DOJT36lJkdlBRkLSyI8r9EiIEHFs6Lj2L4pB7sa8XgsL0ToPneJP", "integrity": "sha384-F+RuswJIpVO7w6D3hapHEHIWaC/KKg31EIbg5ftRcOdnaHgiRUaxGErZtmZMk451",
"elements": [ "elements": [
"research-dashboard-map" "research-dashboard-map"
], ],
@ -1163,7 +1163,7 @@
"scriptUrl": "./research-dashboard/research-dashboard.js", "scriptUrl": "./research-dashboard/research-dashboard.js",
"embed": { "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>", "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": "<!-- 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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-mGbL/ytlD6P7DOJT36lJkdlBRkLSyI8r9EiIEHFs6Lj2L4pB7sa8XgsL0ToPneJP\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>" "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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-F+RuswJIpVO7w6D3hapHEHIWaC/KKg31EIbg5ftRcOdnaHgiRUaxGErZtmZMk451\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
}, },
"bundle": "research-dashboard" "bundle": "research-dashboard"
} }

View file

@ -1339,7 +1339,7 @@
.dg-main { font-weight:500;font-size:13px;color:#222;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px; } .dg-main { font-weight:500;font-size:13px;color:#222;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:6px; }
.dg-main strong { font-weight:700;overflow:hidden;text-overflow:ellipsis; } .dg-main strong { font-weight:700;overflow:hidden;text-overflow:ellipsis; }
.dg-meta { margin-top:2px;display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11px;color:#555;line-height:1.35; } .dg-meta { margin-top:2px;display:flex;flex-wrap:wrap;gap:4px 10px;font-size:11px;color:#555;line-height:1.35; }
.dg-field strong { font-weight:600;color:#333;margin-right:2px; } .dg-field strong { font-weight:600;color:#333;margin-inline-end:2px; }
.dg-tag { flex:none;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.4px;color:#3b463d;background:rgba(59,70,61,0.10);border-radius:4px;padding:1px 5px;line-height:1.5;white-space:nowrap; } .dg-tag { flex:none;font-size:9px;font-weight:700;text-transform:uppercase;letter-spacing:0.4px;color:#3b463d;background:rgba(59,70,61,0.10);border-radius:4px;padding:1px 5px;line-height:1.5;white-space:nowrap; }
.dg-agg-label { overflow:hidden;text-overflow:ellipsis; } .dg-agg-label { overflow:hidden;text-overflow:ellipsis; }
.dg-count { flex:none;font-size:11px;font-weight:600;color:#73a17f; } .dg-count { flex:none;font-size:11px;font-weight:600;color:#73a17f; }
@ -1427,8 +1427,8 @@
.rm-map-canvas { position:absolute;inset:0; } .rm-map-canvas { position:absolute;inset:0; }
.rm-loading { position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#f3f3f1;color:#6d766e;font:13px -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;z-index:5; } .rm-loading { position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:#f3f3f1;color:#6d766e;font:13px -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;z-index:5; }
.rm-error { position:absolute;top:50%;left:12px;right:12px;z-index:7;transform:translateY(-50%);text-align:center;font:13px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#fecaca;background:rgba(15,18,22,.95);border:1px solid rgba(254,202,202,.28);border-radius:10px;padding:12px 14px;box-shadow:0 2px 10px rgba(0,0,0,.4); } .rm-error { position:absolute;top:50%;left:12px;right:12px;z-index:7;transform:translateY(-50%);text-align:center;font:13px/1.5 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;color:#fecaca;background:rgba(15,18,22,.95);border:1px solid rgba(254,202,202,.28);border-radius:10px;padding:12px 14px;box-shadow:0 2px 10px rgba(0,0,0,.4); }
.rm-badge { position:absolute;top:10px;right:10px;background:rgba(124,140,248,0.12);color:#7c8cf8;border:1px solid rgba(124,140,248,0.3);padding:3px 9px;border-radius:4px;font-size:11px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;pointer-events:none;z-index:50; } .rm-badge { position:absolute;top:10px;inset-inline-end:10px;background:rgba(124,140,248,0.12);color:#7c8cf8;border:1px solid rgba(124,140,248,0.3);padding:3px 9px;border-radius:4px;font-size:11px;font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;pointer-events:none;z-index:50; }
.rm-provider-badge { position:absolute;bottom:8px;left:8px;z-index:50;pointer-events:none;padding:2px 8px;border-radius:999px;font:600 10px/1.6 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:.04em;color:#fff;background:rgba(30,41,59,0.72);border:1px solid rgba(255,255,255,0.18);backdrop-filter:blur(2px); } .rm-provider-badge { position:absolute;bottom:8px;inset-inline-start:8px;z-index:50;pointer-events:none;padding:2px 8px;border-radius:999px;font:600 10px/1.6 -apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;letter-spacing:.04em;color:#fff;background:rgba(30,41,59,0.72);border:1px solid rgba(255,255,255,0.18);backdrop-filter:blur(2px); }
.rm-provider-badge[data-provider="mapbox"] { background:rgba(37,99,235,0.78);border-color:rgba(147,197,253,0.5); } .rm-provider-badge[data-provider="mapbox"] { background:rgba(37,99,235,0.78);border-color:rgba(147,197,253,0.5); }
.rm-provider-badge[data-provider="maplibre"] { background:rgba(5,150,105,0.80);border-color:rgba(110,231,183,0.5); } .rm-provider-badge[data-provider="maplibre"] { background:rgba(5,150,105,0.80);border-color:rgba(110,231,183,0.5); }
.rm-legend-mobile-slot { display:none; } .rm-legend-mobile-slot { display:none; }

View file

@ -65,7 +65,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 <doxa-research-map> custom element. --> <!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
<script src="../doxa-research-map.js" integrity="sha384-zgL77VMiztuiM7we/wPV4ixZ4M7qiOqYxP97MROyJ1Fr2IODEEriPByuJ5GJJMB6" crossorigin="anonymous"></script> <script src="../doxa-research-map.js" integrity="sha384-GP6STkEUcL7kqsSICJAzYf7okwy1JMMhGZACNdlgi+d/FeqWZJyZyLC+2QVA2yHL" 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

@ -62,7 +62,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 <doxa-research-map> custom element. --> <!-- Bundle IIFE — registers the <doxa-research-map> custom element. -->
<script src="../../doxa-research-map.js" integrity="sha384-zgL77VMiztuiM7we/wPV4ixZ4M7qiOqYxP97MROyJ1Fr2IODEEriPByuJ5GJJMB6" crossorigin="anonymous"></script> <script src="../../doxa-research-map.js" integrity="sha384-GP6STkEUcL7kqsSICJAzYf7okwy1JMMhGZACNdlgi+d/FeqWZJyZyLC+2QVA2yHL" 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

@ -233,7 +233,7 @@
"bundle": "dashboard-plus-grid", "bundle": "dashboard-plus-grid",
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js", "scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js", "output": "dx-maps/dashboard-plus-grid/dashboard-plus-grid.js",
"integrity": "sha384-sMoLfqylDX+l34g1oVK0Dmk9DmKqtzlPBwioXE4iL/lQAuF/cC1I1B7ilNHFtEXV", "integrity": "sha384-pquub7+nsSdYuv5LBvjTnMVjGmiyYF3jbU1FgZkxsgx7LKBVomvEKXeTmOw9KIeN",
"elements": [ "elements": [
"dashboard-plus-grid" "dashboard-plus-grid"
], ],
@ -256,7 +256,7 @@
"scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js", "scriptUrl": "./dashboard-plus-grid/dashboard-plus-grid.js",
"embed": { "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>", "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": "<!-- 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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-sMoLfqylDX+l34g1oVK0Dmk9DmKqtzlPBwioXE4iL/lQAuF/cC1I1B7ilNHFtEXV\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>" "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=\"./dashboard-plus-grid/dashboard-plus-grid.js\" integrity=\"sha384-pquub7+nsSdYuv5LBvjTnMVjGmiyYF3jbU1FgZkxsgx7LKBVomvEKXeTmOw9KIeN\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<dashboard-plus-grid profile-config='{\"profile\":\"dashboard-plus-grid\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></dashboard-plus-grid>"
}, },
"instances": [ "instances": [
{ {
@ -380,7 +380,7 @@
"bundle": "doxa-research-map", "bundle": "doxa-research-map",
"scriptUrl": "./doxa-research-map/doxa-research-map.js", "scriptUrl": "./doxa-research-map/doxa-research-map.js",
"output": "dx-maps/doxa-research-map/doxa-research-map.js", "output": "dx-maps/doxa-research-map/doxa-research-map.js",
"integrity": "sha384-zgL77VMiztuiM7we/wPV4ixZ4M7qiOqYxP97MROyJ1Fr2IODEEriPByuJ5GJJMB6", "integrity": "sha384-GP6STkEUcL7kqsSICJAzYf7okwy1JMMhGZACNdlgi+d/FeqWZJyZyLC+2QVA2yHL",
"elements": [ "elements": [
"doxa-research-map" "doxa-research-map"
], ],
@ -399,7 +399,7 @@
"scriptUrl": "./doxa-research-map/doxa-research-map.js", "scriptUrl": "./doxa-research-map/doxa-research-map.js",
"embed": { "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>", "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": "<!-- 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=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-zgL77VMiztuiM7we/wPV4ixZ4M7qiOqYxP97MROyJ1Fr2IODEEriPByuJ5GJJMB6\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>" "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=\"./doxa-research-map/doxa-research-map.js\" integrity=\"sha384-GP6STkEUcL7kqsSICJAzYf7okwy1JMMhGZACNdlgi+d/FeqWZJyZyLC+2QVA2yHL\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<doxa-research-map profile-config='{\"profile\":\"research-map\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></doxa-research-map>"
}, },
"instances": [ "instances": [
{ {
@ -1144,7 +1144,7 @@
"bundle": "research-dashboard", "bundle": "research-dashboard",
"scriptUrl": "./research-dashboard/research-dashboard.js", "scriptUrl": "./research-dashboard/research-dashboard.js",
"output": "dx-maps/research-dashboard/research-dashboard.js", "output": "dx-maps/research-dashboard/research-dashboard.js",
"integrity": "sha384-mGbL/ytlD6P7DOJT36lJkdlBRkLSyI8r9EiIEHFs6Lj2L4pB7sa8XgsL0ToPneJP", "integrity": "sha384-F+RuswJIpVO7w6D3hapHEHIWaC/KKg31EIbg5ftRcOdnaHgiRUaxGErZtmZMk451",
"elements": [ "elements": [
"research-dashboard-map" "research-dashboard-map"
], ],
@ -1163,7 +1163,7 @@
"scriptUrl": "./research-dashboard/research-dashboard.js", "scriptUrl": "./research-dashboard/research-dashboard.js",
"embed": { "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>", "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": "<!-- 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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-mGbL/ytlD6P7DOJT36lJkdlBRkLSyI8r9EiIEHFs6Lj2L4pB7sa8XgsL0ToPneJP\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>" "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=\"./research-dashboard/research-dashboard.js\" integrity=\"sha384-F+RuswJIpVO7w6D3hapHEHIWaC/KKg31EIbg5ftRcOdnaHgiRUaxGErZtmZMk451\" crossorigin=\"anonymous\"></script>\n<!-- provider: \"maplibre\" is the default; change it to \"mapbox\" and fill tk to use Mapbox. -->\n<research-dashboard-map profile-config='{\"profile\":\"research-dashboard\",\"provider\":\"maplibre\",\"tk\":\"YOUR_MAPBOX_TOKEN\",\"utmSource\":\"YOUR_SOURCE\",\"assetsBase\":\"YOUR_TREE_URL/assets\"}'></research-dashboard-map>"
}, },
"bundle": "research-dashboard" "bundle": "research-dashboard"
} }

View file

@ -480,23 +480,23 @@
.rd-topbar .rd-filter-search .search-box input{ height:32px; padding:0 10px 0 34px; font-size:var(--fs-md,12px); .rd-topbar .rd-filter-search .search-box input{ height:32px; padding:0 10px 0 34px; font-size:var(--fs-md,12px);
border-radius:16px; border-color:#ffffff3d; } border-radius:16px; border-color:#ffffff3d; }
.rd-topbar .rd-filter-search .search-box input:focus{ border-color:var(--rd-accent,#e67e22); } .rd-topbar .rd-filter-search .search-box input:focus{ border-color:var(--rd-accent,#e67e22); }
.rd-topbar .rd-filter-search .search-icon{ left:10px; width:15px; height:15px; } .rd-topbar .rd-filter-search .search-icon{ inset-inline-start:10px; width:15px; height:15px; }
.rd-shell.rd-narrow .rd-topbar .rd-filter-search{ position:static; transform:none; .rd-shell.rd-narrow .rd-topbar .rd-filter-search{ position:static; transform:none;
left:auto; top:auto; flex:1 1 auto; width:auto; max-width:none; } inset-inline-start:auto; top:auto; flex:1 1 auto; width:auto; max-width:none; }
.rd-search{ position:relative; flex:0 1 280px; min-width:140px; } .rd-search{ position:relative; flex:0 1 280px; min-width:140px; }
.rd-search input{ width:100%; box-sizing:border-box; height:30px; padding:0 10px 0 28px; font-size:var(--fs-md,12px); .rd-search input{ width:100%; box-sizing:border-box; height:30px; padding:0 10px 0 28px; font-size:var(--fs-md,12px);
color:var(--rd-header-ink,#f3f3f1); background:#ffffff1f; border:1px solid #ffffff3d; color:var(--rd-header-ink,#f3f3f1); background:#ffffff1f; border:1px solid #ffffff3d;
border-radius:var(--r-md,6px); outline:none; } border-radius:var(--r-md,6px); outline:none; }
.rd-search input:focus{ border-color:var(--rd-accent,#e67e22); background:#ffffff33; } .rd-search input:focus{ border-color:var(--rd-accent,#e67e22); background:#ffffff33; }
.rd-search input::placeholder{ color:var(--rd-header-muted,#cbc5b9); } .rd-search input::placeholder{ color:var(--rd-header-muted,#cbc5b9); }
.rd-search .ic{ position:absolute; left:8px; top:50%; transform:translateY(-50%); font-size:12px; color:var(--rd-header-muted,#cbc5b9); pointer-events:none; } .rd-search .ic{ position:absolute; inset-inline-start:8px; top:50%; transform:translateY(-50%); font-size:12px; color:var(--rd-header-muted,#cbc5b9); pointer-events:none; }
.rd-results{ position:absolute; left:0; right:0; top:34px; z-index:60; background:#fff; border:1px solid var(--rd-line, #d1d4cd); .rd-results{ position:absolute; left:0; right:0; top:34px; z-index:60; background:#fff; border:1px solid var(--rd-line, #d1d4cd);
border-radius:var(--r-md,6px); box-shadow:0 8px 24px #1f273322; overflow:hidden; max-height:320px; overflow-y:auto; border-radius:var(--r-md,6px); box-shadow:0 8px 24px #1f273322; overflow:hidden; max-height:320px; overflow-y:auto;
scrollbar-width:thin; scrollbar-color:var(--dx-scroll-thumb, #c4c8c0) transparent; } scrollbar-width:thin; scrollbar-color:var(--dx-scroll-thumb, #c4c8c0) transparent; }
.rd-results .rd-res{ display:flex; align-items:baseline; gap:8px; padding:6px 10px; cursor:pointer; font-size:var(--fs-md,12px); } .rd-results .rd-res{ display:flex; align-items:baseline; gap:8px; padding:6px 10px; cursor:pointer; font-size:var(--fs-md,12px); }
.rd-results .rd-res:hover, .rd-results .rd-res.on{ background:var(--rd-bg, #f3f3f1); } .rd-results .rd-res:hover, .rd-results .rd-res.on{ background:var(--rd-bg, #f3f3f1); }
.rd-results .rd-res .nm{ font-weight:700; color:var(--rd-ink, #3b463d); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; } .rd-results .rd-res .nm{ font-weight:700; color:var(--rd-ink, #3b463d); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.rd-results .rd-res .sub{ margin-left:auto; color:var(--rd-muted, #6d766e); font-size:var(--fs-sm,11px); white-space:nowrap; flex:0 0 auto; } .rd-results .rd-res .sub{ margin-inline-start:auto; color:var(--rd-muted, #6d766e); font-size:var(--fs-sm,11px); white-space:nowrap; flex:0 0 auto; }
.rd-results .rd-empty{ padding:8px 10px; color:var(--rd-muted, #6d766e); font-size:var(--fs-sm,11px); } .rd-results .rd-empty{ padding:8px 10px; color:var(--rd-muted, #6d766e); font-size:var(--fs-sm,11px); }
.rd-topbar .rd-align{ display:inline-flex; align-items:center; gap:5px; font-size:var(--fs-sm,11px); font-weight:700; .rd-topbar .rd-align{ display:inline-flex; align-items:center; gap:5px; font-size:var(--fs-sm,11px); font-weight:700;
cursor:pointer; user-select:none; flex:0 0 auto; color:var(--rd-header-ink,#f3f3f1); cursor:pointer; user-select:none; flex:0 0 auto; color:var(--rd-header-ink,#f3f3f1);
@ -547,12 +547,12 @@
.rd-grid::-webkit-scrollbar-corner{ background:transparent; } .rd-grid::-webkit-scrollbar-corner{ background:transparent; }
.rd-thead{ position:sticky; top:0; z-index:2; display:flex; width:100%; background:var(--dx-surface, #f3f3f1); border-bottom:1px solid var(--dx-line, #d1d4cd); } .rd-thead{ position:sticky; top:0; z-index:2; display:flex; width:100%; background:var(--dx-surface, #f3f3f1); border-bottom:1px solid var(--dx-line, #d1d4cd); }
.rd-th{ flex:1 1 0; min-width:0; padding:4px 4px; font-weight:700; color:var(--dx-text, #3b463d); cursor:pointer; user-select:none; white-space:nowrap; overflow:hidden; } .rd-th{ flex:1 1 0; min-width:0; padding:4px 4px; font-weight:700; color:var(--dx-text, #3b463d); cursor:pointer; user-select:none; white-space:nowrap; overflow:hidden; }
.rd-th.num{ text-align:right; } .rd-th.chk{ flex:0 0 30px; cursor:default; text-align:center; padding:6px 0; } .rd-th.num{ text-align:end; } .rd-th.chk{ flex:0 0 30px; cursor:default; text-align:center; padding:6px 0; }
.rd-th .ind{ font-size:9px; color:var(--dx-text, #3b463d); margin-left:3px; } .rd-th .ind{ font-size:9px; color:var(--dx-text, #3b463d); margin-inline-start:3px; }
.rd-row{ display:flex; width:100%; height:26px; line-height:16px; border-bottom:1px solid var(--dx-surface, #f3f3f1); align-items:center; } .rd-row{ display:flex; width:100%; height:26px; line-height:16px; border-bottom:1px solid var(--dx-surface, #f3f3f1); align-items:center; }
.rd-row:hover{ background:var(--dx-surface, #f3f3f1); } .rd-row.sel{ background:#fff7ec; box-shadow:inset 3px 0 0 #e67e22; } .rd-row:hover{ background:var(--dx-surface, #f3f3f1); } .rd-row.sel{ background:#fff7ec; box-shadow:inset 3px 0 0 #e67e22; }
.rd-td{ flex:1 1 0; min-width:0; padding:0 4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--dx-text, #3b463d); } .rd-td{ flex:1 1 0; min-width:0; padding:0 4px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; color:var(--dx-text, #3b463d); }
.rd-td.num{ text-align:right; font-variant-numeric:tabular-nums; } .rd-td.chk{ flex:0 0 30px; text-align:center; padding:0; } .rd-td.num{ text-align:end; font-variant-numeric:tabular-nums; } .rd-td.chk{ flex:0 0 30px; text-align:center; padding:0; }
.rd-foot{ flex:0 0 auto; display:flex; border-top:2px solid var(--dx-line, #d1d4cd); background:var(--dx-surface, #f3f3f1); font-weight:700; height:28px; align-items:center; color:var(--dx-text, #3b463d); overflow:hidden; } .rd-foot{ flex:0 0 auto; display:flex; border-top:2px solid var(--dx-line, #d1d4cd); background:var(--dx-surface, #f3f3f1); font-weight:700; height:28px; align-items:center; color:var(--dx-text, #3b463d); overflow:hidden; }
.rd-foot .rd-td{ color:var(--dx-text, #3b463d); } .rd-foot .rd-td{ color:var(--dx-text, #3b463d); }
.rd-foot-inner{ display:flex; align-items:center; height:100%; width:100%; flex:0 0 auto; } .rd-foot-inner{ display:flex; align-items:center; height:100%; width:100%; flex:0 0 auto; }
@ -621,7 +621,7 @@
.rd-bf{ display:block; height:100%; border-radius:3px; transition:width .35s cubic-bezier(.4,0,.2,1); } .rd-bf{ display:block; height:100%; border-radius:3px; transition:width .35s cubic-bezier(.4,0,.2,1); }
.rd-bv{ flex:0 0 auto; color:var(--rd-muted, #6d766e); font-variant-numeric:tabular-nums; min-width:30px; text-align:end; } .rd-bv{ flex:0 0 auto; color:var(--rd-muted, #6d766e); font-variant-numeric:tabular-nums; min-width:30px; text-align:end; }
`,"rd-charts"),(y,$)=>(te(),se("aside",{class:"rd-charts","data-region":"charts-rail",onClick:m},[M("div",{class:"rd-tabs",role:"tablist","aria-label":le($e)("aria.railViews")||"Rail views"},[(te(),se(Me,null,it(t,f=>M("button",{key:f.id,class:Be(["rd-tab",{on:o.value===f.id,off:f.disabled}]),role:"tab",type:"button","aria-selected":o.value===f.id?"true":"false",disabled:f.disabled,title:f.disabled?f.why:f.label,"data-tab":f.id,onClick:co(b=>!f.disabled&&(o.value=f.id),["stop"])},re(f.label),11,wv)),64))],8,vv),(te(!0),se(Me,null,it(d.value,f=>(te(),se(Me,{key:f.id},[f.type==="donut"?(te(),se("div",{key:0,class:"rd-chart","data-chart":f.facet},[M("div",kv,re(f.title),1),M("div",Sv,[(te(),se("svg",{class:Be(["rd-donut",{"has-sel":x(f.facet)}]),viewBox:"0 0 132 132",role:"img","aria-label":(le($e)("aria.donutChart")||"{title} donut chart").replace("{title}",f.title)},[(te(!0),se(Me,null,it(f.geometry,b=>(te(),se("path",{key:b.key,d:b.path,fill:b.color,class:Be(["rd-slice",{on:h(f.facet,b.key)}]),"data-facet":f.facet,"data-key":b.key},[M("title",null,re(P(f.facet,b.key))+": "+re(b.value)+" ("+re(b.pct)+"%)",1)],10,Av))),128))],10,Pv)),M("div",Lv,[(te(!0),se(Me,null,it(f.geometry,b=>(te(),se("span",{key:b.key,class:Be(["rd-li",{on:h(f.facet,b.key)}]),"data-facet":f.facet,"data-key":b.key,title:P(f.facet,b.key)+": "+b.value},[M("i",{style:gt({background:b.color})},null,4),M("span",Tv,re(P(f.facet,b.key)),1),M("b",null,re(b.value),1)],10,Cv))),128))])])],8,xv)):(te(),se("div",{key:1,class:"rd-chart","data-chart":f.facet},[M("div",Ev,re(f.title),1),M("div",Fv,[(te(!0),se(Me,null,it(f.geometry,b=>(te(),se("div",{key:b.key,class:Be(["rd-bar",{on:h(f.facet,b.key)}]),"data-facet":f.facet,"data-key":b.key},[M("span",Mv,re(P(f.facet,b.key)),1),M("span",Ov,[M("span",{class:"rd-bf",style:gt({width:b.frac*100+"%",background:b.color})},null,4)]),M("span",Iv,re(b.value),1)],10,Nv))),128))])],8,Rv))],64))),128))]))}},zv={class:"rd-detail","data-region":"detail-drawer"},Gv={class:"rd-dh"},Bv=["aria-label"],Uv={key:0,class:"rd-empty","data-detail-empty":""},Hv={class:"rd-top"},jv=["src","alt"],Vv={key:1,class:"rd-ph","data-detail-thumb":""},Wv={class:"rd-name","data-detail-name":""},qv={class:"rd-meta"},Kv={class:"rd-actions"},Yv=["href","title"],Zv=["href","title"],Jv={class:"rd-rows"},Xv={class:"rd-row"},Qv={class:"k"},e0={class:"v"},t0={key:0,class:"fam"},o0={class:"rd-row"},n0={class:"k"},a0={class:"v"},s0={class:"rd-row"},r0={class:"k"},i0={class:"v"},l0={class:"rd-row"},c0={class:"k"},u0={class:"v"},d0={class:"rd-row"},p0={class:"k"},g0={class:"v"},h0={class:"rd-row"},f0={class:"k"},m0={class:"v"},_0={__name:"DashboardDetailDrawer",setup(e){const t=(m,y)=>$e(m)||y,o=Le("dashboardData",null),n=Le("selectionBus",null),a=Le("dashboardConfig",{}),s=Object.fromEntries(Object.entries(a.facets||{}).map(([m,y])=>[m,y.get])),{labelFor:r}=Ns(a,Le("dataStore",null),Le("searchSourceId",null)),i=o&&n?Fi({rowStore:o.rowStore,rows:o.rows,selectionSet:n.selectionSet,filterSet:n.filterSet,FACET_ACC:s,labelFor:r}):null,l=ce(null),c=[];kt(()=>{n&&(c.push(n.on("focusRow",m=>{m&&m.slug&&(l.value=m.slug)})),c.push(n.on("select",m=>{const y=m?[...m]:[];y.length&&(l.value=y[y.length-1])})))}),Dt(()=>{c.forEach(m=>{try{m()}catch{}}),c.length=0});const u=oe(()=>{const m=l.value;return!m||!o||!o.rowStore||!o.rowStore.value?null:o.rowStore.value.get(m)||null}),d=m=>m==null||m===""?"—":Nn(m),h=oe(()=>{const m=u.value;return m?a.detail&&typeof a.detail.photo=="function"?!!a.detail.photo(m):!!(m.has_photo&&m.image_url):!1}),v=oe(()=>a.detail||{});function S(m,y,$){if(typeof m=="function")try{return m(y)||$}catch{return $}return typeof m=="string"&&m?m.replace("{slug}",encodeURIComponent(y.slug||"")):$}const k=oe(()=>{const m=u.value;if(!m)return null;const y=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),$=encodeURIComponent(String(y||v.value.utmSource||a.utmSource||"agwm")),f=`https://pray.doxa.life/${encodeURIComponent(m.slug||"")}?source=doxalife&utm_source=${$}`;return S(v.value.prayUrl,m,f)}),C=oe(()=>{var q;const m=u.value;if(!m)return null;const y=typeof window<"u"&&((q=window.location)==null?void 0:q.origin)||"https://doxa.life",$=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),f=encodeURIComponent(String($||v.value.utmSource||a.utmSource||"agwm")),b=`${y}/research/${encodeURIComponent(m.slug||"")}/?utm_source=${f}`;return S(v.value.moreInfoUrl,m,b)}),F=oe(()=>v.value.prayLabel||"Pray for this people group"),P=oe(()=>v.value.moreInfoLabel||"More information");function x(){!i||!n||(!n.selectionSet.size&&l.value&&n.toggleSelect(l.value),i.exportCsv())}function p(){l.value=null,n&&typeof n.clearSelection=="function"&&n.clearSelection()}return Gt(` `,"rd-charts"),(y,$)=>(te(),se("aside",{class:"rd-charts","data-region":"charts-rail",onClick:m},[M("div",{class:"rd-tabs",role:"tablist","aria-label":le($e)("aria.railViews")||"Rail views"},[(te(),se(Me,null,it(t,f=>M("button",{key:f.id,class:Be(["rd-tab",{on:o.value===f.id,off:f.disabled}]),role:"tab",type:"button","aria-selected":o.value===f.id?"true":"false",disabled:f.disabled,title:f.disabled?f.why:f.label,"data-tab":f.id,onClick:co(b=>!f.disabled&&(o.value=f.id),["stop"])},re(f.label),11,wv)),64))],8,vv),(te(!0),se(Me,null,it(d.value,f=>(te(),se(Me,{key:f.id},[f.type==="donut"?(te(),se("div",{key:0,class:"rd-chart","data-chart":f.facet},[M("div",kv,re(f.title),1),M("div",Sv,[(te(),se("svg",{class:Be(["rd-donut",{"has-sel":x(f.facet)}]),viewBox:"0 0 132 132",role:"img","aria-label":(le($e)("aria.donutChart")||"{title} donut chart").replace("{title}",f.title)},[(te(!0),se(Me,null,it(f.geometry,b=>(te(),se("path",{key:b.key,d:b.path,fill:b.color,class:Be(["rd-slice",{on:h(f.facet,b.key)}]),"data-facet":f.facet,"data-key":b.key},[M("title",null,re(P(f.facet,b.key))+": "+re(b.value)+" ("+re(b.pct)+"%)",1)],10,Av))),128))],10,Pv)),M("div",Lv,[(te(!0),se(Me,null,it(f.geometry,b=>(te(),se("span",{key:b.key,class:Be(["rd-li",{on:h(f.facet,b.key)}]),"data-facet":f.facet,"data-key":b.key,title:P(f.facet,b.key)+": "+b.value},[M("i",{style:gt({background:b.color})},null,4),M("span",Tv,re(P(f.facet,b.key)),1),M("b",null,re(b.value),1)],10,Cv))),128))])])],8,xv)):(te(),se("div",{key:1,class:"rd-chart","data-chart":f.facet},[M("div",Ev,re(f.title),1),M("div",Fv,[(te(!0),se(Me,null,it(f.geometry,b=>(te(),se("div",{key:b.key,class:Be(["rd-bar",{on:h(f.facet,b.key)}]),"data-facet":f.facet,"data-key":b.key},[M("span",Mv,re(P(f.facet,b.key)),1),M("span",Ov,[M("span",{class:"rd-bf",style:gt({width:b.frac*100+"%",background:b.color})},null,4)]),M("span",Iv,re(b.value),1)],10,Nv))),128))])],8,Rv))],64))),128))]))}},zv={class:"rd-detail","data-region":"detail-drawer"},Gv={class:"rd-dh"},Bv=["aria-label"],Uv={key:0,class:"rd-empty","data-detail-empty":""},Hv={class:"rd-top"},jv=["src","alt"],Vv={key:1,class:"rd-ph","data-detail-thumb":""},Wv={class:"rd-name","data-detail-name":""},qv={class:"rd-meta"},Kv={class:"rd-actions"},Yv=["href","title"],Zv=["href","title"],Jv={class:"rd-rows"},Xv={class:"rd-row"},Qv={class:"k"},e0={class:"v"},t0={key:0,class:"fam"},o0={class:"rd-row"},n0={class:"k"},a0={class:"v"},s0={class:"rd-row"},r0={class:"k"},i0={class:"v"},l0={class:"rd-row"},c0={class:"k"},u0={class:"v"},d0={class:"rd-row"},p0={class:"k"},g0={class:"v"},h0={class:"rd-row"},f0={class:"k"},m0={class:"v"},_0={__name:"DashboardDetailDrawer",setup(e){const t=(m,y)=>$e(m)||y,o=Le("dashboardData",null),n=Le("selectionBus",null),a=Le("dashboardConfig",{}),s=Object.fromEntries(Object.entries(a.facets||{}).map(([m,y])=>[m,y.get])),{labelFor:r}=Ns(a,Le("dataStore",null),Le("searchSourceId",null)),i=o&&n?Fi({rowStore:o.rowStore,rows:o.rows,selectionSet:n.selectionSet,filterSet:n.filterSet,FACET_ACC:s,labelFor:r}):null,l=ce(null),c=[];kt(()=>{n&&(c.push(n.on("focusRow",m=>{m&&m.slug&&(l.value=m.slug)})),c.push(n.on("select",m=>{const y=m?[...m]:[];y.length&&(l.value=y[y.length-1])})))}),Dt(()=>{c.forEach(m=>{try{m()}catch{}}),c.length=0});const u=oe(()=>{const m=l.value;return!m||!o||!o.rowStore||!o.rowStore.value?null:o.rowStore.value.get(m)||null}),d=m=>m==null||m===""?"—":Nn(m),h=oe(()=>{const m=u.value;return m?a.detail&&typeof a.detail.photo=="function"?!!a.detail.photo(m):!!(m.has_photo&&m.image_url):!1}),v=oe(()=>a.detail||{});function S(m,y,$){if(typeof m=="function")try{return m(y)||$}catch{return $}return typeof m=="string"&&m?m.replace("{slug}",encodeURIComponent(y.slug||"")):$}const k=oe(()=>{const m=u.value;if(!m)return null;const y=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),$=encodeURIComponent(String(y||v.value.utmSource||a.utmSource||"agwm")),f=`https://pray.doxa.life/${encodeURIComponent(m.slug||"")}?source=doxalife&utm_source=${$}`;return S(v.value.prayUrl,m,f)}),C=oe(()=>{var q;const m=u.value;if(!m)return null;const y=typeof window<"u"&&((q=window.location)==null?void 0:q.origin)||"https://doxa.life",$=(()=>{try{return new URLSearchParams(window.location.search).get("utm_source")||""}catch{return""}})(),f=encodeURIComponent(String($||v.value.utmSource||a.utmSource||"agwm")),b=`${y}/research/${encodeURIComponent(m.slug||"")}/?utm_source=${f}`;return S(v.value.moreInfoUrl,m,b)}),F=oe(()=>v.value.prayLabel||"Pray for this people group"),P=oe(()=>v.value.moreInfoLabel||"More information");function x(){!i||!n||(!n.selectionSet.size&&l.value&&n.toggleSelect(l.value),i.exportCsv())}function p(){l.value=null,n&&typeof n.clearSelection=="function"&&n.clearSelection()}return Gt(`
.rd-detail{ box-sizing:border-box; background:var(--rd-panel,#fff); border-left:1px solid var(--rd-line, #d1d4cd); .rd-detail{ box-sizing:border-box; background:var(--rd-panel,#fff); border-inline-start:1px solid var(--rd-line, #d1d4cd);
border-bottom:1px solid var(--rd-line, #d1d4cd); padding:var(--s3,12px); border-bottom:1px solid var(--rd-line, #d1d4cd); padding:var(--s3,12px);
font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; color:var(--rd-ink, #3b463d); flex:0 0 auto; } font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif; color:var(--rd-ink, #3b463d); flex:0 0 auto; }
.rd-detail .rd-dh{ display:flex; align-items:center; justify-content:space-between; gap:8px; .rd-detail .rd-dh{ display:flex; align-items:center; justify-content:space-between; gap:8px;
@ -644,7 +644,7 @@
padding:2px 0; border-bottom:1px solid var(--rd-line, #d1d4cd); } padding:2px 0; border-bottom:1px solid var(--rd-line, #d1d4cd); }
.rd-detail .rd-row:last-child{ border-bottom:0; } .rd-detail .rd-row:last-child{ border-bottom:0; }
.rd-detail .rd-row .k{ color:var(--rd-muted, #6d766e); flex:0 0 auto; min-width:118px; } .rd-detail .rd-row .k{ color:var(--rd-muted, #6d766e); flex:0 0 auto; min-width:118px; }
.rd-detail .rd-row .v{ color:var(--rd-ink, #3b463d); margin-left:auto; text-align:right; font-variant-numeric:tabular-nums; } .rd-detail .rd-row .v{ color:var(--rd-ink, #3b463d); margin-inline-start:auto; text-align:end; font-variant-numeric:tabular-nums; }
.rd-detail .rd-row .v .fam{ color:var(--rd-muted, #6d766e); } .rd-detail .rd-row .v .fam{ color:var(--rd-muted, #6d766e); }
.rd-detail .rd-exp{ margin-top:var(--s3,12px); width:100%; border:0; border-radius:var(--r-md,6px); cursor:pointer; .rd-detail .rd-exp{ margin-top:var(--s3,12px); width:100%; border:0; border-radius:var(--r-md,6px); cursor:pointer;
background:var(--rd-accent,#e67e22); color:#fff; font-weight:700; font-size:var(--fs-md,12px); padding:var(--s2,8px) var(--s3,12px); } background:var(--rd-accent,#e67e22); color:#fff; font-weight:700; font-size:var(--fs-md,12px); padding:var(--s2,8px) var(--s3,12px); }
@ -718,7 +718,7 @@
.rd-mapwrap{ position:relative; width:100%; height:100%; min-height:0; background:var(--dx-line, #d1d4cd); } .rd-mapwrap{ position:relative; width:100%; height:100%; min-height:0; background:var(--dx-line, #d1d4cd); }
.rd-mapwrap[data-projection="globe"]{ background:#000; } .rd-mapwrap[data-projection="globe"]{ background:#000; }
.rd-mapwrap .rd-mapc{ position:absolute; inset:0; } .rd-mapwrap .rd-mapc{ position:absolute; inset:0; }
.rd-proj{ position:absolute; right:8px; top:8px; z-index:3; font-size:11px; font-weight:700; cursor:pointer; user-select:none; .rd-proj{ position:absolute; inset-inline-end: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); } background:#1a1a2ecc; color:#fff; border:1px solid #ffffff33; border-radius:6px; padding:4px 9px; backdrop-filter:blur(4px); }
.rd-proj:hover{ background:#1a1a2e; } .rd-proj:hover{ background:#1a1a2e; }
.rd-proj{ min-height:24px; min-width:24px; display:inline-flex; align-items:center; justify-content:center; } .rd-proj{ min-height:24px; min-width:24px; display:inline-flex; align-items:center; justify-content:center; }
@ -793,7 +793,7 @@
border-radius:5px; font-size:11px; border-radius:5px; font-size:11px;
line-height:1; box-shadow:0 1px 4px rgba(0,0,0,.14); } line-height:1; box-shadow:0 1px 4px rgba(0,0,0,.14); }
.rd-edge-caret:hover{ background:var(--dx-hover,rgba(59,70,61,.06)); } .rd-edge-caret:hover{ background:var(--dx-hover,rgba(59,70,61,.06)); }
.rd-edge-facet{ left:5px; } .rd-edge-rail{ right:5px; } .rd-edge-facet{ inset-inline-start:5px; } .rd-edge-rail{ inset-inline-end:5px; }
.rd-shell.rd-slim-rail{ --rail-w:228px; } .rd-shell.rd-slim-rail{ --rail-w:228px; }
.rd-shell.rd-slim-facet{ --facet-w:250px; } .rd-shell.rd-slim-facet{ --facet-w:250px; }
.rd-rz{ position:relative; z-index:6; background:transparent; touch-action:none; transition:background .15s; } .rd-rz{ position:relative; z-index:6; background:transparent; touch-action:none; transition:background .15s; }

View file

@ -65,7 +65,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 <research-dashboard-map> custom element. --> <!-- Bundle IIFE — registers the <research-dashboard-map> custom element. -->
<script src="../research-dashboard.js" integrity="sha384-mGbL/ytlD6P7DOJT36lJkdlBRkLSyI8r9EiIEHFs6Lj2L4pB7sa8XgsL0ToPneJP" crossorigin="anonymous"></script> <script src="../research-dashboard.js" integrity="sha384-F+RuswJIpVO7w6D3hapHEHIWaC/KKg31EIbg5ftRcOdnaHgiRUaxGErZtmZMk451" crossorigin="anonymous"></script>
<script> <script>
// Mapbox token resolution — the A3 ladder, in precedence order: // Mapbox token resolution — the A3 ladder, in precedence order: