Status & återkoppling
En pill är ett tillstånd, en badge ett antal, en tagg ett värde användaren valt.
Pillar
Ett tillstånd bär alltid sitt ord. Färg ensam räcker inte.
<span class="ws-status-pill ws-status-pill--success">Klart</span>Pricken förstärker ordet, den ersätter det inte.
<StatusPill tone="warning" dot>Väntar</StatusPill>
<StatusPill tone="success" icon="CheckmarkFilled">Synkad</StatusPill>Badges & taggar
Med href blir etiketten en länk till det den säger något om: en kategori till sin händelse. Samma etikett i vila, understruken under pekaren.
<StatusPill tone="info" href="/calendar/events/412">Klientmöte</StatusPill>
statusPill({ label: "Klientmöte", tone: "info", href: "/calendar/events/412" })<span class="ws-badge">14</span>
<span class="ws-badge ws-badge--danger">3</span>Ta-bort-knappen är en riktig <button> med egen etikett.
<span class="ws-tag">
<span class="ws-swatch" style="background: …"></span>
Förvaltning
<button class="ws-tag__remove" aria-label="Ta bort">…</button>
</span>Notiser
Ikonen väljs ur tonen — aldrig enbart färg.
Rapporten är skickad
Sju poster på 41,5 timmar gick till fakturaunderlaget för september.Budgeten är snart slut
412 av 600 timmar är förbrukade och tre veckor återstår av perioden.Tiden kunde inte sparas
Perioden är låst sedan den 15:e. Kontakta en administratör för att låsa upp den.<Notice tone="success" title="Sparat">…</Notice>ws-notice--band: ett beslut sidan väntar på, över hela bredden av det det gäller — en rapport som väntar på granskning.
Granska innan publicering
Två påståenden saknar underlag.
<div class="ws-notice ws-notice--warning ws-notice--band" role="region" aria-labelledby="granska">
<svg class="ws-icon ws-notice__icon">…</svg>
<div class="ws-notice__body">
<p class="ws-notice__title" id="granska">Granska innan publicering</p>
<p>Två påståenden saknar underlag.</p>
</div>
<div class="ws-notice__actions"><button class="btn btn--primary">Publicera</button></div>
</div>live bara när den dyker upp
live bara för en notis som dyker upp efter en handling.
Toasts
En feltoast försvinner inte automatiskt.
import { toast } from "@whitespace/malm-ui";
toast.success("Sparat");
toast.error("Kunde inte spara");
toast("Ångra?", { action: { label: "Ångra", onClick: … } });Laddning
Märket när en sida eller panel laddas första gången, linjen när innehållet uppdateras, spinnern i en knapp eller en mening, skelettet när formen är känd.
<Loader />
<Loader size="lg" label="Laddar ärenden…" showLabel />Öppna ärenden
Innehållet står kvar och går att läsa medan det uppdateras.
<section class="panel" aria-busy="true">…</section><span class="ws-spinner" aria-hidden="true"></span>
<Button variant="primary" busy>Sparar</Button><div class="ws-skeleton ws-skeleton--title"></div>
<div class="ws-skeleton ws-skeleton--text"></div>Framsteg
<progress> när värdet är känt, .ws-meter för stapeln i en tabellrad.
I bruk: Tid, budgetstapeln på projekten (components/ShareBar.astro), skriven för hand med style i stället för meter(). Klient: inte än.
<div class="ws-meter" style="--ws-meter-value: 72%"></div>
<div class="ws-meter ws-meter--over" style="--ws-meter-value: 103%"></div>--sm: en mätare bredvid sin siffra i en tabellrad.
<span class="ws-cluster ws-cluster--1 ws-cluster--nowrap">
<span class="ws-meter ws-meter--sm" style="--ws-meter-value: 72%" role="img" aria-label="72 procent"></span>
<span class="ws-num">0,72</span>
</span>Budgetmätare
Hela stapeln i en färg: grön med gott om plats, orange när budgeten nästan är slut, röd när den är över – och mörkare röd för det som gått över.
<div class="ws-meter ws-meter--budget" style="--ws-meter-value: 68%"></div>
<!-- nästan slut: anroparen avgör när, vanligen från fyra femtedelar -->
<div class="ws-meter ws-meter--budget ws-meter--near" style="--ws-meter-value: 95%"></div>
<!-- över budget: skalan är överdraget, strecket är budgeten -->
<div class="ws-meter ws-meter--budget ws-meter--over"
style="--ws-meter-value: 100%; --ws-meter-limit: 80%"></div>Bekräftelse
Som GOV.UK: sidan efter att en uppgift är klar. Utfallet är sidans rubrik, och en referens står under den om det finns en.
Tidrapporten är skickad
TR-2026-39
<Confirmation title="Tidrapporten är skickad">
Referens<br /><strong>TR-2026-39</strong>
</Confirmation>