From 438d0ec083e3e10863872b6adf9c7a8854b3345a Mon Sep 17 00:00:00 2001 From: Jens Date: Sun, 23 Aug 2026 14:59:45 +0200 Subject: [PATCH] Voer de visuele audit door: fundament, donkere werkstand, kaart en schil MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Achttien bevindingen uit de audit, met de metingen erbij in de betreffende CSS-secties. Fundament. Dertien tokens werden op 87 plaatsen aangeroepen zonder ooit gedefinieerd te zijn; in de browser gaf getPropertyValue('--gi-text') een lege string terug, dus die kleurregels vielen terug op overerving. Vorm en hoogte zijn terug naar de schaal: radius via token van 17% naar 81%, unieke schaduwen van 115 naar 71, losse kleurwaarden van 928 naar 352. Typografie. De stylesheets declareerden negen gewichten terwijl er per familie twee gezichten geladen werden, en font-synthesis-weight: none verbiedt namaakvet. Alles van 650 tot 850 kwam dus als 600 op het scherm: 138 van de 148 declaraties rendereden identiek. Nu vier stappen die alle vier ook geladen worden, en Manrope draagt de koppen zoals op de landingspagina. Donkere werkstand. De werkbank staat tegen luchtbeelden aan; een lichte schil daarnaast laat de kaart altijd verliezen. De landingspagina blijft licht. Kaart. De ondergrond wordt ontkleurd en gedempt zodat alleen de eigen data nog kleur draagt, en de symbologie staat niet langer als losse hexwaarden in GeoMap. De zes zwevende vlakken zijn er drie: statuskaart, staprail en resultaatchip bleken al één component te zijn die de opmaak over drie hoeken van de kaart uiteentrok. Schil. Eén kopbalk in plaats van drie (215px chroom naar 100px), het raster van AI-vragen zonder botsingen, kapitalen op één niveau in plaats van 57 declaraties, en het leverancierslogo uit de navigatiebalk. Van 47 echte !important naar 1, gemeten door telkens twee productiebuilds op berekende stijlen te vergelijken. Contrast: nul tekstelementen onder AA op zes werkbladen, in beide werkstanden. Co-Authored-By: Claude Opus 5 --- frontend/src/components/auth/LandingPage.tsx | 18 +- .../src/components/datasets/DatasetPanel.tsx | 7 +- .../detection/AiPipelineIllustration.test.tsx | 6 +- .../detection/AiPipelineIllustration.tsx | 10 +- .../src/components/exports/ExportCenter.tsx | 8 +- frontend/src/components/map/mapSymbology.ts | 91 ++ .../components/shell/WorkbenchNavigation.tsx | 2 - frontend/src/styles/app.css | 1272 +++++++++-------- frontend/src/styles/atlas-premium-v2.css | 205 ++- frontend/src/styles/atlas-workbench.css | 84 +- frontend/src/styles/geointel-system.css | 1174 ++++++++++++--- frontend/src/styles/landing-project-story.css | 36 +- frontend/src/styles/landing.css | 128 +- frontend/src/styles/premium.css | 270 ++-- frontend/src/styles/professionalization.css | 58 +- 15 files changed, 2167 insertions(+), 1202 deletions(-) create mode 100644 frontend/src/components/map/mapSymbology.ts diff --git a/frontend/src/components/auth/LandingPage.tsx b/frontend/src/components/auth/LandingPage.tsx index cba221e0..26232146 100644 --- a/frontend/src/components/auth/LandingPage.tsx +++ b/frontend/src/components/auth/LandingPage.tsx @@ -33,21 +33,18 @@ interface LandingPageProps { const capabilityItems = [ { icon: MapPinned, - number: '01', title: 'Eén kaartgerichte werkruimte', description: 'Selecteer een gebied in België of de Belgische Noordzee en werk verder vanuit dezelfde ruimtelijke context.', }, { icon: Database, - number: '02', title: 'Bronnen blijven herkenbaar', description: 'Autoriteit, meetmoment, dekking, CRS en beperkingen blijven zichtbaar in plaats van achter één generieke kaartlaag te verdwijnen.', }, { icon: ShieldCheck, - number: '03', title: 'Kwaliteit vóór resultaat', description: 'Vergelijk referentie- en kandidaatgegevens, controleer bewijs en exporteer pas wanneer de context klopt.', @@ -70,6 +67,7 @@ export function LandingPage({ const [password, setPassword] = useState('') const [pendingAction, setPendingAction] = useState<'operator' | 'guest' | null>(null) const [authError, setAuthError] = useState(null) + const [attempted, setAttempted] = useState(false) const [showPassword, setShowPassword] = useState(false) const [menuOpen, setMenuOpen] = useState(false) const usernameRef = useRef(null) @@ -84,6 +82,7 @@ export function LandingPage({ const submitLogin = async (event: FormEvent) => { event.preventDefault() setPendingAction('operator') + setAttempted(true) setAuthError(null) try { const session = await login(username.trim(), password) @@ -98,6 +97,7 @@ export function LandingPage({ const submitGuestLogin = async () => { setMenuOpen(false) setPendingAction('guest') + setAttempted(true) setAuthError(null) if (typeof accessPanelRef.current?.scrollIntoView === 'function') { accessPanelRef.current.scrollIntoView({ behavior: 'smooth', block: 'center' }) @@ -278,7 +278,7 @@ export function LandingPage({ - {authError || serviceError ? ( + {authError || (serviceError && attempted) ? (

{authError ?? serviceError}

) : null} @@ -290,6 +290,13 @@ export function LandingPage({