metanova-ui

37 componenten

Statische weergave van de Wicket-componenten uit metanova-ui. Knoppen en zoekvelden zijn hier alleen visueel; in de applicatie werken ze via AJAX.

Basis

Kleuren, typografie en de bouwstenen waar alles op rust.

Kleurtokens

tokens.css · Swatches

De kleuren van het thema als CSS-variabelen. Elk onderdeel gebruikt ze, dus ze wisselen mee met licht/donker en met de brand editor.

--color-bg
--color-surface
--color-panel
--color-panel-border
--color-line
--color-ink
--color-muted
--color-primary
--color-link
--color-info
--color-tag-recept
--color-tag-voorschrift
--color-tag-intake
--color-ok-bg
--color-ok-ink
--color-error-bg
--color-error-ink
Gebruik
color: var(--color-primary);
background: var(--color-panel);
border: 1px solid var(--color-line);

Typografie

--font-sans · .page-title

Titels, kaarttitels en gedempte tekst.

Paginatitel

Onderdeel

Gewone tekst met een link.

Gedempte tekst voor toelichting.

Gebruik
<h1 class="page-title">Titel</h1>
<h2 class="card-title">Kaarttitel</h2>
<p class="muted">Gedempte tekst</p>

Code

CodeBlock

Vooraf opgemaakte code of tekst met vaste breedte.

docker compose up -d --build
mvn -pl metanova-ui test
Gebruik
add(new CodeBlock("code", "mvn test"));

Acties

Knoppen, schakelaars en dingen die je kunt aanklikken.

Knoppen

Button

Vier varianten en twee maten; klikken geeft een AJAX-callback.

Gebruik
add(new Button("save", "Opslaan", Button.Variant.PRIMARY, target -> save(target)));
add(new Button("del", "Verwijderen", Button.Variant.DANGER, true, null));

Schakelaar

Toggle

Aan/uit met label; de status staat in een model.

Meldingen per e-mail
Donker thema
Gebruik
add(new Toggle("notify", "Meldingen", Model.of(true), null));

Status en meldingen

Labels, badges en meldingen over wat er aan de hand is.

Documentsoort

TypeTag

Gekleurd label voor de soort document.

receptvoorschriftintake
Gebruik
add(new TypeTag("type", "intake", DocumentType.INTAKE.getCss()));

Badge

Badge · Tone

Kleine statusbadge in vijf betekeniskleuren.

ConceptIn behandelingActiefLet opGeweigerd
Gebruik
<span class="badge" wicket:id="status"></span>
add(new Badge("status", "Actief", Tone.SUCCESS));

Melding

Alert

Fout- en succesmelding in de kleuren van het thema.

Zo ziet een gelukt-melding eruit.
Gebruik
<div class="alert" wicket:id="error"></div>
add(new Alert("error", Model.of("Vul een waarde in."), Alert.Kind.ERROR));

Callout

Callout · Tone

Opvallend blok met titel en tekst, voor uitleg of een waarschuwing.



Gebruik
add(new Callout("note", "Let op", "Dit kan niet ongedaan worden.", Tone.WARNING));

Toast

Toast

Korte bevestiging na een actie.

Opgeslagen
Verwijderd
Gebruik
add(new Toast("saved", "Opgeslagen", Tone.SUCCESS));

Avatar

Avatar

Ronde initialen van een naam.

MJADD
Gebruik
add(new Avatar("who", "Mathijs Jansen"));

Navigatie

Waar ben je en waar kun je heen.

Kruimelpad

Breadcrumbs

Waar je bent; het laatste onderdeel is de huidige pagina.

Gebruik
add(new Breadcrumbs("crumbs", List.of(new Crumb("Clienten", "/clients"), new Crumb("J. Bakker", ""))));

Tabbladen

Tabs

Eén actief tabblad; de index staat in een model.

Gebruik
add(new Tabs("tabs", List.of("Overzicht", "Historie"), Model.of(0), target -> target.add(body)));

Paginering

Pagination

Vorige/volgende en paginanummers (1-gebaseerd).

Gebruik
add(new Pagination("pages", 5, Model.of(1), target -> target.add(table)));

Stappen

Stepper

Voortgang door een proces; eerdere stappen zijn klaar.

  1. 1Intake
  2. 2Voorschrift
  3. 3Recept
  4. 4Afronding
Gebruik
add(new Stepper("steps", List.of("Intake", "Voorschrift", "Recept"), 1));

Uitklappers

Accordion

Uitklapbare onderdelen op basis van details; werkt zonder JavaScript.

Wat is een intake?
Het eerste document waarin de situatie van de client wordt vastgelegd.
Kan ik een veld wijzigen?
Ja, per veld; de oude waarde blijft in de historie staan.
Wie ziet dit?
Alleen ingelogde medewerkers.
Gebruik
add(new Accordion("faq", List.of(new Accordion.Item("Vraag", "Antwoord"))));

Gegevens

Cijfers, lijsten, tabellen en diagrammen.

Kerncijfers

StatCard

Een cijfer met label en toelichting; staat in een .stat-grid.

Clienten
16
actief in het dossier
Documenten
70
12 in de laatste 30 dagen
Intakes
32
waarvan 4 open
Recepten
18
deze maand
Gebruik
add(new StatCard("kpi", Model.of("Clienten"), Model.of("16"), Model.of("actief")));

Kerncijfer met trend

TrendStat · Sparkline

Cijfer met verandering en een klein verloop.

Intakes
32
▲ 12%
Annuleringen
5
▼ 3%
Doorlooptijd
4,2 d
▲ 8%
Gebruik
add(new TrendStat("kpi", "Intakes", "32", "12%", true, List.of(3, 5, 4, 8, 9, 12)));

Sparkline

Sparkline

Klein lijntje zonder assen.

Gebruik
add(new Sparkline("trend", List.of(3, 5, 4, 8, 9, 12)));

Horizontale balken

HBar

Balk met label, aantal en percentage; de kleur volgt de soort.

recept18
intake32
Intermitterende katheter24
Gebruik
add(new HBar("bar", "intake", 32, 100, "tag intake", "intake"));

Staafdiagram

BarChart

Verticale balken per periode; de hoogste vult de hoogte.

12
mei
18
jun
9
jul
22
aug
16
sep
27
okt
Gebruik
add(new BarChart("chart", List.of(new BarChart.Bar("jan", 12), new BarChart.Bar("feb", 18))));

Ringdiagram

Donut

Eén verhouding als ring, met label in het midden.

Gebruik
add(new Donut("done", 62, "62%"));

Voortgangsbalk

ProgressBar

Voortgang met label en percentage.

Intake afgerond70%
Voorschriften25%
Gebruik
add(new ProgressBar("p", "Intake afgerond", 70));

Tabel

DataTable

Eenvoudige tabel met kopjes en rijen.

ClientSoortDatumStatus
J. Bakkerintake12 okt 2026actief
M. de Vriesrecept10 okt 2026afgerond
S. Jansenvoorschrift8 okt 2026open
Gebruik
add(new DataTable("t", List.of("Naam", "Soort"), List.of(List.of("J. Bakker", "intake"))));

Itemlijst

ItemList

Rijen met titel en toelichting links, een waarde rechts.

  • J. BakkerIntake aangepast
    12 okt
  • M. de VriesRecept toegevoegd
    10 okt
  • S. JansenNotitie geplaatst
    8 okt
Gebruik
add(new ItemList("list", List.of(new ItemList.Row("J. Bakker", "intake", "12 okt"))));

Tijdlijn

Timeline

Historie van wijzigingen, nieuwste bovenaan.

  1. Adres gewijzigd

    Dorpsstraat 1 → Kerklaan 7

  2. Telefoon gewijzigd

    06-1234 → 06-5678

  3. Aangemaakt

    Door intake

Gebruik
add(new Timeline("history", List.of(new Timeline.Entry("12 okt", "Gewijzigd", "A → B"))));

Sleutel-waardelijst

KeyValueList

Labels met waarden, bijvoorbeeld accountgegevens.

Gebruikersnaam
demo
Functie
medewerker customer support
Rol
proceseigenaar
Gebruik
add(new KeyValueList("details", List.of(new Pair("Rol", "proceseigenaar"))));

Formulieren en invoer

Zoeken, filteren en velden.

Zoekveld

SearchField

Geeft tijdens het typen (gedempt, 250 ms) een AJAX-update. In de losse galerij is het alleen visueel.

Gebruik
add(new SearchField("search", query, "Zoek een client…", target -> target.add(results)));

Filterknoppen

FilterChips

Eén keuze uit een lijst; de actieve knop volgt het thema.

Gebruik
add(new FilterChips<>("filters", options, selectedModel, target -> target.add(results)));

Veldgroep

FormField (Border)

Label en hulptekst rond een invoerveld; het veld staat tussen de tags.

Naam Zoals vermeld op het identiteitsbewijs.
Gebruik
<div wicket:id="name"><input type="text" wicket:id="nameInput"/></div>
add(new FormField("name", "Naam", "Zoals op het ID"));

Opbouw en feedback

Kaarten, koppen, laden en lege toestanden.

Paginakop

PageHeader

Titel met een ondertitel, bovenaan elke pagina.

Clienten

16 clienten

Gebruik
add(new PageHeader("header", Model.of("Clienten"), Model.of("16 clienten")));

Onderdeelkop

SectionHeader

Kop van een onderdeel binnen een pagina.

Documenten

Alle documenten van deze client

Gebruik
add(new SectionHeader("head", "Documenten", "Alle documenten van deze client"));

Kaart

Card (Border)

Kaart met titel; de inhoud staat tussen de tags van de border.

Kaarttitel

Inhoud van de kaart.

Gebruik
<div wicket:id="card">…</div>
add(new Card("card", Model.of("Titel")));

Lege staat

EmptyState

Melding bij een lege lijst; zichtbaar zolang de waarde waar is.

Er zijn nog geen notities.

Gebruik
add(new EmptyState("empty", "Nog geen notities.", Model.of(true)));

Spinner

Spinner

Draaiende laadindicator.

Gebruik
add(new Spinner("loading"));

Skeleton

Skeleton

Grijze plaatshouder voor tekst die nog laadt.

Gebruik
add(new Skeleton("loading", 4));