Feedback
Every wait, absence, and failure gets a designed state, never a blank area.
Progress
- Determinate bar when the fraction is known; indeterminate sweep otherwise.
- Label the operation (“Downloading packages”), not the mechanism.
- Long operations (>10s) must offer cancellation.
Downloading packages64%
Refreshing mirrors
Empty states
An empty state explains, reassures, and offers the next step.
No packages found
Nothing matches “kwrite”. Check the spelling or search a broader term.
Rules
- Empty states are one icon, one sentence, one action, no essays.
- Offline is a state, not an error: installed functionality keeps working.
- Errors land in the context where they happened (inline for fields, dialog for blockers, toast for background work).
- Every error message names a recovery: retry, check connection, or open logs.