Empty States - Designmönster

Empty States - Designmönster

När en vy eller komponent saknar innehåll uppstår ett kommunikativt vakuum – användaren vet inte om något gått fel, om de befinner sig på fel ställe, eller om systemet helt enkelt är tomt. Utan ett empty state riskerar användaren att tolka frånvaron av innehåll som ett tekniskt fel eller ett gränssnittsproblem. Empty state-mönstret fyller detta vakuum med rätt förväntningssättning: det förklarar varför vyn är tom, vad som normalt sett skulle visas, och – när det är möjligt – ger användaren en väg framåt. Den övergripande principen är att tomhet aldrig ska kännas som ett misslyckande, utan som ett naturligt tillstånd med ett tydligt nästa steg.

Användning

Mål

  • Säkerställa att användaren förstår varför en vy eller komponent inte visar något innehåll

  • Ge användaren en korrekt förväntansbild av vad vyn normalt innehåller

  • Ge användaren möjlighet att agera och skapa eller hämta innehåll när det är relevant

  • Undvika att tomhet feltolkas som ett tekniskt fel eller ett systemfel

  • Skapa en visuellt och tonmässigt konsekvent upplevelse även i frånvaron av data

Använd när

  • En listvy, tabell eller inkorg är tom och förväntas fyllas med innehåll

  • Användaren precis har skapat ett konto eller ett nytt arbetsflöde och ännu inte genererat data

  • En sökning eller filtrering returnerar inga träffar

  • En komponent visar ett fält där information saknas eller ännu inte fyllts i

  • Innehåll har raderats och vyn är nu tom

Använd inte när

  • Innehåll laddas in – visa en laddningsindikator istället

  • Vyn är avsiktligt tom och förväntas förbli tom (d.v.s. det finns inget innehåll att förvänta sig)

  • Felet beror på ett systemfel eller ett nätverksproblem – använd ett felmeddelande-mönster istället

  • Vyn visar ett resultat av en sökning med nollträffar i en liten inline-kontext – en kortare textrad räcker ofta där

 


Varianter

Vy-nivå (full empty state)

Används när en hel vy eller ett helt sidavsnitt saknar innehåll. Innehåller illustration, rubrik, brödtext och i förekommande fall en CTA.

Passar för: Inkorgar, ärendelistor, dashboards, rapporter, sökresultat på helsida

image-20260603-091354.png
Hela vyer med empty state

 

Komponent-nivå (inline empty state)

Används inuti avgränsade komponenter som tabeller, kort eller datalistor. Visar en kortfattad text – utan illustration – som kommunicerar att information saknas. Texten är kursiv och använder färgen text-subtle-on-default för att visuellt särskilja sig från faktiskt innehåll.

Passar för: Tabellrader, fältgrupper i formulär, detaljvyer med ännu ej ifylld information

image-20260603-090053.png
Detaljvy som saknar information och en tom tabell

 

 


Klassificering

Tomt av naturliga skäl (no-content)

Vyn är tom för att användaren ännu inte skapat eller tagit emot något innehåll. Det är ett förväntat och normalt tillstånd.

  • Ton: uppmuntrande, framåtblickande

  • Inkludera en CTA om det är möjligt för användaren att initiera innehåll

  • Exempel: "Du har inga ärenden än. Skapa ditt första ärende för att komma igång."

Tomt efter filtrering eller sökning (no-results)

Vyn är tom som ett direkt resultat av användarens sökning eller filtrering.

  • Ton: neutral, hjälpsam

  • Förklara att inga träffar hittades utifrån aktuella kriterier

  • Föreslå att ändra söktermen eller rensa filter

  • Inkludera inte en skapande CTA – kontexten handlar om att hitta, inte skapa

  • Exempel: "Inga ärenden matchar din sökning. Prova att ändra sökord eller ta bort ett filter."

Saknad information i komponent (missing-data)

Ett fält eller en datapunkt saknar värde. Det kan bero på att informationen inte fyllts i, inte hämtats eller inte är tillgänglig.

  • Ton: neutral, deskriptiv

  • Använd en platshållartext som tydligt signalerar att värdet saknas, t.ex. eller Ej angivet

  • Undvik att lämna fältet tomt – en tom yta ger ingen information

  • Exempel i en personvy: Ej angivet för namn, e-postadress och telefonnummer som ännu inte fyllts i

 


Riktlinjer

Beteende

Vy-nivå: empty state visas direkt när vyn laddas och inga dataobjekt finns att rendera. Det ska inte animeras in med fördröjning – det ska finnas där direkt. Om en CTA klickas, navigerar den användaren till relevant skapandeflöde eller utlöser en dialog; det hör till det aktuella flödets mönster att hantera det.

Komponent-nivå: platshållartexten ersätter det saknade värdet utan att förändra komponentens layout eller höjd. I tabeller placeras texten som en enda rad under kolumnrubrikerna och spänner hela tabellbredden.

Visuell utformning

Vy-nivå: centrera innehållet horisontellt i vyn. Illustrationen placeras ovanför rubriken. Använd illustrationer från designsystemets illustrationsbibliotek – aldrig ikoner. Välj en illustration som är semantiskt kopplad till vyns syfte. CTA-knappen placeras under preamble-texten och följer primär- eller sekundärknappshierarkin beroende på åtgärdens vikt.

image-20260603-091235.png
Exempel på hur empty states för vyer ser ut.

 

Komponent-nivå: texten är kursiv och färgsatt med text-subtle-on-default. Ingen illustration, ingen rubrik. Storleken följer den omgivande komponentens textstil.

image-20260603-085910.png
Exempel på text-utseende för empty state på komponentnivå (wirefram, 1177, Inera).

 

Innehåll och språk

Rubrik (vy-nivå): besvara varför vyn är tom i en kort, tydlig mening. Undvik generiska fraser som "Inget att visa". Var specifik utifrån vyns kontext.

  • Undvik: "Inga objekt hittades"

  • Föredra: "Du har inga meddelanden" eller "Inga ärenden har skapats ännu"

Preamble (vy-nivå): beskriv kort vad användaren normalt sett skulle se i den här vyn. Håll det till en till två meningar. Sätt förväntningar utan att vara teknisk.

CTA-text (vy-nivå, när relevant): använd ett handlingsorienterat verb kopplat till det specifika objektet.

  • Undvik: "Kom igång"

  • Föredra: "Skapa ärende" eller "Lägg till mottagare"

Platshållartext (komponent-nivå): använd Ej angivet för information som saknas men kan fyllas i. Använd ett tankstreck () för information som inte är tillämpbar. Undvik att lämna fältet tomt.

 


Gör / Gör inte

Gör

  • Använd en illustration som är semantiskt relevant för vyns syfte

  • Skriv en rubrik som är specifik för just den vyn eller det sammanhanget

  • Inkludera en CTA när användaren kan initiera innehåll direkt

  • Använd text-subtle-on-default och kursiv stil för komponent-nivå platshållartext

  • Separera no-content och no-results med olika ton och, i förekommande fall, olika CTA

Gör inte

  • Använd inte ikoner som visuellt huvudelement i vy-nivå empty states – använd illustrationer

  • Lämna inte fält tomma i komponent-nivå – skriv alltid ut att information saknas

  • Använd inte generiska fraser som "Inget att visa" eller "Tom vy"

  • Visa inte en CTA i no-results-tillstånd – det stör användarens mentala modell

  • Använd inte felmeddelande-komponenter för att kommunicera tomhet – det sänder fel signal

 


Tillgänglighet

WCAG-relevanta kriterier

Kriterium

Beskrivning

1.3.1 Info and Relationships

Strukturen på empty state-innehållet (rubrik, beskrivning, CTA) ska kommuniceras semantiskt, inte bara visuellt. Använd rätt HTML-element.

1.4.1 Use of Color

Platshållartexten på komponent-nivå kommuniceras med kursiv stil och färg. Säkerställ att information inte kommuniceras enbart via färgen text-subtle-on-default.

1.4.3 Contrast

Platshållartexten med text-subtle-on-default ska uppfylla kontrastkravet 4.5:1 mot bakgrundsfärgen. Verifiera detta i designsystemets tokenspecifikation.

2.4.6 Headings and Labels

Rubriken i vy-nivå empty states ska använda korrekt rubriknivå i dokumenthierarkin – vanligtvis h2 eller h3 beroende på sidstruktur.

4.1.2 Name, Role, Value

Om empty state innehåller en CTA-knapp ska den ha ett tillgängligt namn som är meningsfullt utan visuell kontext.

4.1.3 Status Messages

Om ett empty state visas dynamiskt (t.ex. efter en sökning) ska det programmatiskt kommuniceras till hjälpmedel utan att fokus förflyttas.

Riktlinjer

  • Vy-nivå: lägg empty state-innehållet i en <section> eller <div> med ett beskrivande aria-label om det inte redan har en synlig rubrik som identifierar sektionen

  • Om empty state visas dynamiskt efter en användarinteraktion (t.ex. sökning): använd en role="status" eller aria-live="polite"-region för att meddela skärmläsare att inga resultat hittades, utan att flytta fokus

  • CTA-knappen ska ha ett tillgängligt namn som är självförklarande: "Skapa ärende" är tillgängligt, "Klicka här" är inte det

  • Illustration: märk upp illustrationen med alt="" (dekorativ) eftersom rubriken och preamble-texten kommunicerar det meningsbärande innehållet – illustrationen ska inte duplicera texten via alt-text

  • Komponent-nivå: platshållartexten är ren text i DOM – undvik att dölja den enbart visuellt med CSS på ett sätt som exkluderar den från tillgänglighetsträdet

  • Tangentbord: CTA i empty state ska nås och aktiveras med tangentbord enligt standard fokusordning. Inga särskilda fokushanteringsbehov finns om empty state är ett statiskt tillstånd. Om det visas dynamiskt, säkerställ att fokus inte hamnar utanför synligt innehåll.

 


Sammanfattning

Empty state-mönstret används för att kommunicera att en vy eller komponent saknar innehåll, och skiljer på vy-nivå (med illustration, rubrik, preamble och valfri CTA) och komponent-nivå (med kursiv platshållartext i text-subtle-on-default). Mönstret ska alltid sätta rätt förväntningar – förklara varför det är tomt och vad som normalt visas – och skilja på tillståndet "inget har skapats än" kontra "sökningen gav inga träffar". Dynamiskt visade empty states ska tillgängliggöras via aria-live så att skärmläsaranvändare får korrekt feedback.