Harmoniser les styles de la carte : réglages communs, thèmes clair et sombre, composants uniques

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Antoine Jacquin
2026-09-27 17:39:04 +02:00
parent 75a562d6a4
commit b975ed272a
4 changed files with 279 additions and 168 deletions

View File

@ -381,7 +381,7 @@ def test_ui_applies_server_defaults():
assert "meta.default_base" in _MAP_JS
assert "meta.default_precision_opacity" in _MAP_JS
# Réinitialiser oublie l'état local avant de reprendre celui du serveur
assert "localStorage.removeItem(LS_KEY)" in _MAP_JS
assert "lsDel(LS_KEY)" in _MAP_JS
def test_ui_uses_standard_tilelayer():
@ -1341,3 +1341,33 @@ def test_map_ui_has_pdf_export():
assert "#printcard" in _MAP_CSS
# bouton toujours visible : indépendant de /api/status.available
assert 'id="btnPrint"' in _MAP_HTML and 'id="btnPrint" hidden' not in _MAP_HTML
def test_ui_tokens_themes_and_components():
from lidar_pipeline.mapui import _MAP_CSS, _MAP_HTML, _MAP_JS
for var in ("--surface", "--on-accent", "--print", "--fs-sm", "--r-md", "--sp-2",
"--shadow-lg", "--z-panel", "--z-toast"):
assert var + ":" in _MAP_CSS, var
# Palette sombre : système sombre (sauf clair forcé) ou sombre forcé
assert '@media (prefers-color-scheme: dark)' in _MAP_CSS
assert ':root:not([data-theme="light"])' in _MAP_CSS
assert ':root[data-theme="dark"]' in _MAP_CSS
for cls in (".btn-primary", ".btn-ghost", ".btn-icon", ".field", ".seg", ".hint"):
assert cls in _MAP_CSS, cls
assert 'id="btnTheme"' in _MAP_HTML
assert "const THEME_LS = 'lidar-theme'" in _MAP_JS and "function applyTheme(" in _MAP_JS
# Stockage local toujours protégé (navigation privée) : aucun accès
# direct à localStorage hors du bloc lsGet/lsSet/lsDel.
import re
start = _MAP_JS.index("function lsGet(")
end = _MAP_JS.index("// --- fin stockage")
outside = _MAP_JS[:start] + _MAP_JS[end:]
assert not re.search(r"localStorage\.(getItem|setItem|removeItem)\(", outside)
# Code mort retiré
for gone in ("genClass", "gen-input", "genClassInfo", ".grip", "layer-row", "#gps.busy"):
assert gone not in _MAP_CSS + _MAP_HTML, gone
# Plus de couleurs d'interface écrites en dur hors des palettes
rules = _MAP_CSS[_MAP_CSS.rindex(":root[data-theme=\"dark\"]"):]
rules = rules[rules.index("}") + 1:]
for hard in ("#0b0e13", "#10141b", "#f4a261", "#4cc9f0", "#e76f51", "rgba(90, 160, 255"):
assert hard not in rules, hard