# M9 UI State Specification Every page and major component must implement these states. ## Required States ### Initial No user action yet. Example copy: > Start by creating a project or opening the Geel demo. ### Loading Data is being fetched or processed. Requirements: - spinner or skeleton, - clear label, - no layout jump where avoidable. ### Empty Request succeeded but no records exist. Example: > No datasets have been added to this project yet. ### Ready Data exists and actions are available. ### Error Request failed or validation failed. Requirements: - readable error, - retry action where safe, - technical details hidden behind details/expand if useful. ### Disabled/Future Feature is planned but not implemented in V1. Requirements: - show disabled state, - explain why, - do not show fake results. ## Page Requirements ### Home - Initial: explain GeoIntel. - Empty: no recent projects. - Ready: project cards and demo card. ### Project Workspace - Loading project. - Missing project error. - Empty datasets/areas states. - Ready dashboard. ### Dataset Manager - Empty upload area. - Upload progress. - Upload failed. - Processing. - Ready metadata. ### Map Workbench - No area selected. - Area loaded. - Layer loading. - Layer error. - Unsupported layer type. ### Detection Lab - No raster selected. - No model configured. - Running job. - Completed detections. - Failed inference. ### QA/QC Lab - Missing reference dataset. - Missing predicted dataset. - Running comparison. - Metrics ready. - No matches found. ## Do Not - Do not leave blank panels. - Do not show random demo metrics in ready state. - Do not hide errors in console only.