diff --git a/src/app/panel-layout.ts b/src/app/panel-layout.ts index 848a4add5..669d4153f 100644 --- a/src/app/panel-layout.ts +++ b/src/app/panel-layout.ts @@ -182,9 +182,7 @@ export class PanelLayoutManager implements AppModule { -
- ${this.ctx.isDesktopApp ? '' : `
' : ''}
-
+
+
+
+ +
+
Drop panels here to move them below the map
+
diff --git a/src/styles/main.css b/src/styles/main.css index ffc16d841..96874c38f 100644 --- a/src/styles/main.css +++ b/src/styles/main.css @@ -625,12 +625,40 @@ canvas, gap: 12px; } -/* Layout tabs */ +/* Drop zone controls (layout tabs + widget picker) */ +.drop-zone-controls { + display: flex; + align-items: center; + gap: 8px; + padding: 4px 8px; +} + +.drop-zone-label { + display: flex; + align-items: center; + justify-content: center; + margin: 8px; + padding: 40px 12px; + border: 1.5px dashed var(--text-dim); + border-radius: 6px; + color: var(--text); + font-size: 11px; + font-weight: 500; + text-transform: uppercase; + letter-spacing: 2px; + opacity: 1; + pointer-events: none; +} + +.map-bottom-grid:has(.panel) > .drop-zone-label { + display: none; +} + .layout-tabs { display: flex; align-items: center; gap: 2px; - margin: 0 12px; + margin: 0; flex-shrink: 1; overflow-x: auto; } @@ -682,7 +710,7 @@ canvas, } @media (max-width: 900px) { - .layout-tabs { + .drop-zone-controls { display: none; } } @@ -1143,6 +1171,26 @@ canvas, opacity: 1; } +.map-bottom-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + grid-template-rows: auto 1fr; + grid-auto-rows: minmax(200px, 380px); + gap: 4px; + padding: 4px; + min-height: 28px; +} + +.map-bottom-grid > .drop-zone-controls { + grid-column: 1 / -1; + grid-row: 1; +} + +.map-bottom-grid > .drop-zone-label { + grid-column: 1 / -1; + grid-row: 2; +} + .map-section.pinned { position: sticky; top: 0; @@ -16533,7 +16581,7 @@ body.has-breaking-alert .panels-grid { transition: height 0.4s cubic-bezier(0.4, 0, 0.2, 1) !important; } - .map-bottom-grid:empty { + .map-bottom-grid:not(:has(.panel)) { border-top: none; padding: 0; }