Polish Data Map mobile layout
GeoIntel CI / docs-smoke (push) Has been cancelled
GeoIntel CI / contract-smoke (push) Has been cancelled

This commit is contained in:
Codex
2026-06-20 01:11:45 +02:00
parent 107920aa96
commit db1bbc7005
6 changed files with 127 additions and 2 deletions
+2
View File
@@ -4,6 +4,8 @@ React + TypeScript + MapLibre foundation for project/area/dataset workflow.
The workbench now uses a task-based shell instead of a single long panel stack. `App.tsx` still owns shared orchestration state, but the UI is organized into Overview, Data, Map, QA/QC, AI Labs, Exports and System workspaces with a persistent top context bar and right-side dataset inspector.
Data and Map workspaces include mobile-density CSS for file inputs, dataset action buttons, map toolbar controls, range sliders and empty-map quick actions so narrow screens avoid accidental viewport overflow.
## Scope implemented
- API client layer (`src/services/api`)
- Project and area list/create flows
+53 -2
View File
@@ -284,9 +284,11 @@ section {
gap: 0.5rem;
align-items: center;
margin-top: 0.72rem;
min-width: 0;
}
.checkbox-row input {
flex: 0 0 auto;
width: auto;
min-height: auto;
margin: 0;
@@ -951,6 +953,19 @@ section th {
background: var(--panel-soft);
}
.dataset-upload-form label,
.file-input-label {
min-width: 0;
}
.file-input-label input[type='file'] {
width: 100%;
min-width: 0;
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
.data-density-grid {
border: 1px solid var(--line);
border-radius: 7px;
@@ -1173,6 +1188,7 @@ button.entity-card {
min-height: 3.25rem;
margin-top: 0;
text-align: left;
touch-action: pan-x;
}
.dataset-action-button span,
@@ -1424,17 +1440,19 @@ button.entity-card {
.map-empty-action-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr));
grid-template-columns: repeat(auto-fit, minmax(7.25rem, 1fr));
gap: 0.55rem;
margin-top: 0.5rem;
}
.map-empty-action-grid button {
display: grid;
min-width: 0;
min-height: 4.2rem;
gap: 0.18rem;
margin-top: 0;
text-align: left;
touch-action: pan-x;
}
.map-empty-action-grid span,
@@ -1646,7 +1664,7 @@ button.entity-card {
.map-toolbar {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr));
grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr));
gap: 0.75rem;
align-items: end;
margin-bottom: 0.85rem;
@@ -1655,17 +1673,22 @@ button.entity-card {
.layer-control-card {
display: grid;
gap: 0.5rem;
min-width: 0;
padding: 0.58rem 0.65rem;
}
.layer-control-card input[type='range'] {
width: 100%;
min-width: 0;
min-height: auto;
padding: 0;
touch-action: pan-x;
}
.map-status {
display: grid;
gap: 0.25rem;
min-width: 0;
border: 1px solid var(--line);
border-radius: 8px;
padding: 0.62rem 0.72rem;
@@ -2029,4 +2052,32 @@ button.entity-card {
.status-strip-grid {
grid-template-columns: 1fr;
}
.dataset-upload-form {
gap: 0.55rem;
padding: 0.68rem;
}
.dataset-action-grid,
.map-empty-action-grid {
grid-template-columns: repeat(auto-fit, minmax(7.25rem, 1fr));
}
.dataset-action-button,
.map-empty-action-grid button {
min-height: 3rem;
padding: 0.48rem 0.56rem;
}
.map-toolbar {
gap: 0.55rem;
}
.layer-control-card {
padding: 0.52rem 0.58rem;
}
.workbench-main .map-container {
height: 22rem;
}
}