feat(mapillary): Street Level panel in the right context rail

An ordinary collapsible GEV panel between CCTV and Context, starting
collapsed with the Mapillary mark in its strip. Body: a gated empty state
when no client token is present, plain-English query box (ASK becomes STOP
while running), streamed result chips, imagery filters with a colour
legend, and the embedded viewer whose expanded mode is a focus-trapped
dialog. All wording lives in a pure presentation module.

Co-Authored-By: Claude Fable 5.1 <[email protected]>
This commit is contained in:
Said TurkseverandClaude Fable 5.1 committed 2026-09-23 15:44:32 +01:00
1 parent 791e77fa33
commit 3169d205d9
11 files changed
+1073 -1072

No files matched your search

+3
View File
@@ -11,6 +11,7 @@ const SHARE_PANEL_STATE_SPECS = Object.freeze([
{ id: 'location-bar', pinnable: true },
{ id: 'data-panel' },
{ id: 'cctv-panel' },
{ id: 'mapillary-panel' },
{ id: 'radio-panel' },
{ id: 'scene-panel' },
{ id: 'global-context-panel' },
@@ -21,6 +22,7 @@ const SHARE_PANEL_STATE_SPECS = Object.freeze([
const COCKPIT_ENTRY_COLLAPSE_PANEL_IDS = Object.freeze([
'data-panel',
'cctv-panel',
'mapillary-panel',
'scene-panel',
'pp-toggles',
'global-context-panel',
@@ -281,6 +283,7 @@ export class PanelChrome {
const isRightRail = [
'pp-toggles',
'cctv-panel',
'mapillary-panel',
'global-context-panel',
].includes(panelEl?.id);
const collapsed = panelEl.classList.contains('collapsed');