StatusBadge

Tilamerkit

Tila merkkinä yksittäiselle riville tai pisteenä toistuvassa taulukossa; aina sanoin, ei pelkkä väri.

Käyttöpaikat

Suoraan: palvelu tuo osan itse. Välillisesti: osa tulee mukaan toisen paketin osan kautta, ja sen muutos näkyy palvelussa silti. Laskettu julkaisun yhteydessä 23.10.2026.

TP-MEDIA
TP-TTK
TP-VASTAANOTTO
Valmis
Ajossa
Epäonnistui
Odottaa
Keskeytetty
Valmis22.10. klo 13.36Ajossa12 / 61 957EpäonnistuiTunniste ei erotellut rivejä
Esimerkki valitulla teemalla ja sävyllä; vaihda ne yläpalkista.

Käyttö

Paketin README:n luku sellaisenaan.

StatusBadge — tilamerkki

<StatusBadge tone="success">Valmis</StatusBadge>
<StatusBadge tone="info" pulse>Käsittelyssä</StatusBadge>

Paketti omistaa sävyt ja sykkivän pisteen; palvelu omistaa sanaston.

SävyKäyttö
successvalmis, hyväksytty, välitetty
warningkesken, tarkistettava, uudelleenyritettävä
errorepäonnistui, hylätty
infovastaanotettu, jonossa
neutraltuntematon, arkistoitu, kaksoiskappale

pulse lisää sykkivän pisteen. Käytä sitä käynnissä olevalle työlle — se saa tilan lukeutumaan eläväksi eikä jumittuneeksi. Piste perii tekstin värin ja pysähtyy motion-reducella.

Kiinteä sanasto: createStatusBadge

// lib/status.tsx — kerran palvelua kohti
export const StatusBadge = createStatusBadge({
  received:  { tone: "info",    label: "Vastaanotettu" },
  sending:   { tone: "warning", label: "Lähetetään", pulse: true },
  forwarded: { tone: "success", label: "Välitetty" },
  failed:    { tone: "error",   label: "Epäonnistui" },
});

// käyttöpaikoilla
<StatusBadge status={rivi.status} />

TypeScript tarkistaa että status on kartan avain, joten tuntematon tila on käännösaikainen virhe eikä tyhjä merkki.

Kartoittamaton arvo renderöityy neutraalina ja säilyttää alkuperäisen arvon title-attribuutissa — ulkopuolisesta putkesta tuleva uusi tila on siis selvitettävissä ilman lokien kaivamista.

StatusDot — tilapiste

Väripiste, tila sanoin ja valinnainen tarkenne alla. Taulukkoon, jonka jokaisella rivillä on tila: StatusBadge on pilleri, ja 17 pilleriä päällekkäin on seinä.

<StatusDot tone="error" detail="2 ajoa jäänyt väliin">Pysähtynyt</StatusDot>
<StatusDot tone="info" pulse detail="saapui 1 min sitten · 34 Mt">Käsittelyssä</StatusDot>
<StatusDot tone="success">Ajallaan</StatusDot>

Piste on aria-hidden ja sana pakollinen: väri ei kanna merkitystä yksinään. detail kertoo miksi tila on juuri tämä — se on se tieto jota operaattori etsii, ja tuotannossa se puuttui joka riviltä.

Tuonti ja lähde

import { StatusBadge, StatusDot } from "@karkkainen/ui";
  • src/components/status-badge.tsx
  • src/components/status-dot.tsx