Hoppa till innehållet

En hel skärm

Inget på den här sidan är specialskrivet — allt kommer ur biblioteket.

En knapp i en toolbar i en panelrubrik bredvid en select — det är där ett designsystem döms. Byt tema och typsnitt i toppraden.

Ärenden

17 öppna, 3 väntar på kund, 1 försenat

Ett ärende har passerat sin utlovade tid

ORBIT-4804 för Skatteverket lovades svar inom 2 arbetsdagar och är nu 3 dagar gammalt.
Öppna17+3denna vecka
Medianålder, timmar6−2
Löst i tid, procent94+1
Väntar på kund30
FreeScout

Öppna ärenden

Väntar på kund
ÄrendeÄmneKundAnsvarigÅlderStatusÅtgärder
#4821Felaktig sidfot i sökresultatRegion SkåneLinn Svensson2 hPågår
#4819Behörighet saknas för redaktör på NyheterKommunalPaul Andersson5 hVäntar på kund
#4812Uppdatera Municipio till 3.4Umeå universitetFredrik Holm1 dPågår
#4804Formulär skickar inte bekräftelsemejlSkatteverketNiklas Ek3 dFörsenat
#4798Lägg till Matomo-spårning på kampanjsidanBillerudEva-Maria Nilsson4 dKlart
Denna period

Budgetar

Webbplats 2026412 / 600 h
Intranät228 / 240 h
Förvaltning247 / 240 h

Aktivitet

Linn Svensson svarade på #4821

12 min

Paul Andersson flyttade #4819 till Väntar på kund

1 h

Niklas Ek rapporterade 3,5 h på Förvaltning 2026

2 h

Eva-Maria Nilsson stängde #4798

4 h

Toppraden

Samma topprad i varje verktyg, given som data: logotypen, menyn med det aktuella valet och eventuella undermenyer, den inloggades avatar som leder till sin sida, ljust och mörkt, utloggning som ikon och meddelandet från senaste åtgärden. Appens layout är komponenten och dess inställningar.

Toppraden ovan är ritad av samma funktion.

<AppShell
  brand={{ name: "tid", title: "Tid" }}                    // mark: "circle" | "square" | "quadrant" för ett eget märke
  nav={[
    { label: "Tid", href: "/time", current: true },
    { label: "Projekt", href: "/projects", count: 3, countTitle: "3 att godkänna" },
    { label: "Admin", current: inAdmin, items: [{ label: "Team", href: "/admin/team" }, …] },
  ]}
  user={{ name: "Johan de Geer", href: "/me", current: path === "/me" }}
  theme
  signOut={{ action: "/api/auth/signout", hidden: [["csrfToken", token]] }}
  flash={{ tone: "success", text: "Sparat.", link: { href, label: "Öppna" } }}
  page
>
  …sidan…
</AppShell>

appShell({ ...samma, mainHtml })   // för en server som renderar HTML själv

Det som ska ut ur skrivaren är innehållet: en tidrapport, en lista, en faktura­grund. Skalet runt det — navigering, toolbar, filter, paginering — är skärmens, och biblioteket tar bort det. Tabellhuvudet upprepas på varje sida, rader delas inte mitt itu, och tonade rader behåller sin färg: en försenad rad är försenad på papper också.

Två klasser för det som skiljer: .ws-print-hide för det bara skärmen ska ha,.ws-print-only för det bara papperet ska ha — en signaturrad, vilken period rapporten gäller. Utskrift är också vägen till en PDF, alltså vägen till revisorn.