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

+12 -3
View File
@@ -162,6 +162,7 @@
}
#right-context-rail > #pp-toggles,
#right-context-rail > #cctv-panel,
#right-context-rail > #mapillary-panel,
#right-context-rail > #global-context-panel {
position: relative;
inset: auto;
@@ -173,12 +174,14 @@
max-height: 100%;
pointer-events: auto;
}
#right-context-rail #cctv-panel {
#right-context-rail #cctv-panel,
#right-context-rail #mapillary-panel {
width: 100%;
max-height: 100%;
pointer-events: auto;
}
#right-context-rail #cctv-panel.collapsed {
#right-context-rail #cctv-panel.collapsed,
#right-context-rail #mapillary-panel.collapsed {
width: var(--right-display-collapsed-width);
margin-left: auto;
}
@@ -191,6 +194,7 @@
}
#right-context-rail > #pp-toggles.collapsed .pp-header-row,
#right-context-rail #cctv-panel.collapsed .cctv-panel-inner,
#right-context-rail #mapillary-panel.collapsed .mapillary-panel-inner,
#right-context-rail
#global-context-panel.collapsed
.global-context-panel-inner {
@@ -198,7 +202,8 @@
min-height: 50px;
box-sizing: border-box;
}
#right-context-rail #cctv-panel:not(.collapsed) .cctv-panel-inner {
#right-context-rail #cctv-panel:not(.collapsed) .cctv-panel-inner,
#right-context-rail #mapillary-panel:not(.collapsed) .mapillary-panel-inner {
max-height: 100%;
overflow-y: auto;
scrollbar-gutter: stable;
@@ -246,6 +251,7 @@
}
#right-context-rail.layout-focus > #pp-toggles:not(.collapsed),
#right-context-rail.layout-focus > #cctv-panel:not(.collapsed),
#right-context-rail.layout-focus > #mapillary-panel:not(.collapsed),
#right-context-rail.layout-focus > #global-context-panel:not(.collapsed) {
flex: 0 1 var(--right-panel-allocated-height);
height: var(--right-panel-allocated-height);
@@ -261,6 +267,9 @@
#right-context-rail.layout-focus
> #cctv-panel:not(.collapsed)
.cctv-panel-inner,
#right-context-rail.layout-focus
> #mapillary-panel:not(.collapsed)
.mapillary-panel-inner,
#right-context-rail.layout-focus
> #global-context-panel:not(.collapsed)
.global-context-panel-inner {