11# Components
22
3- ** Last Updated:** February 19, 2025
3+ ** Last Updated:** March 3, 2026
44
55Complete component specifications and guidelines for the Design System Starter Kit.
66
@@ -10,8 +10,9 @@ Complete component specifications and guidelines for the Design System Starter K
1010
11111 . [ Component Guidelines] ( #component-guidelines )
12122 . [ Content Components] ( #content-components )
13- 3 . [ Form Components] ( #form-components )
14- 4 . [ Web Components Registration] ( #web-components-registration )
13+ 3 . [ Display & Feedback Components] ( #display--feedback-components )
14+ 4 . [ Form Components] ( #form-components )
15+ 5 . [ Web Components Registration] ( #web-components-registration )
1516
1617---
1718
@@ -313,9 +314,140 @@ Components are designed to compose together:
313314
314315---
315316
317+ ## Display & Feedback Components
318+
319+ ** Status:** Complete (HTML/CSS, React) — 3 components total
320+
321+ ### StatusBadge
322+
323+ ** Status:** Complete (HTML/CSS, React)
324+
325+ ** Location:** ` packages/components-{html|react}/src/StatusBadge/ `
326+
327+ ** Tokens:** ` tokens/components/status-badge.json `
328+
329+ ** Variants (5 total):** ` neutral ` , ` info ` , ` positive ` , ` negative ` , ` warning `
330+
331+ ** Props:** ` variant ` , ` iconStart ` , ` children `
332+
333+ ** Features:**
334+
335+ - Compact inline label met signaalkleur
336+ - Optioneel ` iconStart ` prop voor een icoon vóór het label
337+ - Geen eigen afmeting — schaalt mee met de omgevende typografie
338+
339+ ** Tests:** React (10 tests)
340+
341+ ### Alert
342+
343+ ** Status:** Complete (HTML/CSS, React)
344+
345+ ** Location:** ` packages/components-{html|react}/src/Alert/ `
346+
347+ ** Tokens:** ` tokens/components/alert.json `
348+
349+ ** Variants (4 total):** ` info ` (default), ` positive ` , ` negative ` , ` warning `
350+
351+ ** Props:** ` variant ` , ` heading ` , ` headingLevel ` , ` iconStart ` , ` children `
352+
353+ ** Features:**
354+
355+ - ` role="alert" ` live region — schermlezer kondigt wijzigingen automatisch aan
356+ - CSS grid layout: icoon + heading naast elkaar (rij 1), body content eronder (rij 2)
357+ - ` grid-template-columns: var(--dsn-icon-size-xl) 1fr `
358+ - Voorkeurspicoon per variant; overschrijfbaar via ` iconStart ` (` null ` = geen icoon)
359+ - ` heading ` verplicht; ` headingLevel ` default ` 2 ` (visueel als ` heading-3 ` )
360+ - Volledige border rondom (niet alleen inline-start)
361+ - Body content via ` children ` — gebruik ` <Paragraph> ` voor tekst, ` <UnorderedList> ` voor lijsten
362+
363+ ** HTML/CSS:**
364+
365+ ``` html
366+ <div class =" dsn-alert" role =" alert" >
367+ <span class =" dsn-alert__icon" aria-hidden =" true" >
368+ <svg class =" dsn-icon" aria-hidden =" true" ><!-- info-circle --> </svg >
369+ </span >
370+ <h2 class =" dsn-alert__heading dsn-heading dsn-heading--3" >Heading</h2 >
371+ <div class =" dsn-alert__content" >
372+ <p class =" dsn-paragraph" >Body content.</p >
373+ </div >
374+ </div >
375+
376+ <!-- Varianten: dsn-alert-- positive / dsn-alert-- negative / dsn-alert-- warning -->
377+ <!-- Geen icoon: dsn-alert-- no-icon (klasse op root, span weglaten) -->
378+ ```
379+
380+ ** Tests:** React (15 tests)
381+
382+ ### Note
383+
384+ ** Status:** Complete (HTML/CSS, React)
385+
386+ ** Location:** ` packages/components-{html|react}/src/Note/ `
387+
388+ ** Tokens:** ` tokens/components/note.json `
389+
390+ ** Variants (5 total):** ` neutral ` (default), ` info ` , ` positive ` , ` negative ` , ` warning `
391+
392+ ** Props:** ` as ` , ` variant ` , ` heading ` , ` headingLevel ` , ` iconStart ` , ` children `
393+
394+ ** Features:**
395+
396+ - Passieve tegenhanger van Alert — geen ` role="alert" ` , geen live region
397+ - Schermlezer leest Note alleen bij navigatie, niet spontaan
398+ - ` border-inline-start ` als visuele markering (niet rondom zoals Alert)
399+ - CSS grid layout identiek aan Alert
400+ - ` dsn-note--no-heading ` modifier: icoon overspant beide rijen (` grid-row: 1 / span 2 ` )
401+ - ` as ` prop: ` div ` (default), ` aside ` , ` nav ` , ` section ` — semantiek losgekoppeld van visuele stijl
402+ - Automatische ` aria-labelledby ` via ` useId() ` voor landmark-elementen met heading
403+ - ` heading ` optioneel (Alert: verplicht); ` headingLevel ` default ` 3 `
404+
405+ ** HTML/CSS:**
406+
407+ ``` html
408+ <div class =" dsn-note" >
409+ <span class =" dsn-note__icon" aria-hidden =" true" >
410+ <svg class =" dsn-icon" aria-hidden =" true" ><!-- info-circle --> </svg >
411+ </span >
412+ <h3 class =" dsn-heading dsn-heading--3 dsn-note__heading" >Heading</h3 >
413+ <div class =" dsn-note__content" >
414+ <p class =" dsn-paragraph" >Body content.</p >
415+ </div >
416+ </div >
417+
418+ <!-- Varianten: dsn-note-- info / dsn-note-- positive / dsn-note-- negative / dsn-note-- warning -->
419+ <!-- Zonder heading: dsn-note-- no-heading -->
420+ <!-- Landmark: <aside>, <nav>, <section> i.p.v. <div> -->
421+ ```
422+
423+ ** React:**
424+
425+ ``` tsx
426+ // Standaard note met heading
427+ <Note heading = " Let op" variant = " warning" >
428+ <Paragraph >Dit heeft gevolgen voor uw aanvraag.</Paragraph >
429+ </Note >
430+
431+ // Zonder heading — icoon overspant beide rijen
432+ <Note variant = " info" >
433+ <Paragraph >Extra context zonder titel.</Paragraph >
434+ </Note >
435+
436+ // Als inhoudsopgave (nav landmark)
437+ <Note as = " nav" variant = " neutral" heading = " Op deze pagina" headingLevel = { 2 } >
438+ <UnorderedList >
439+ <li ><Link href = " #sectie-1" >Sectie 1</Link ></li >
440+ </UnorderedList >
441+ </Note >
442+ ```
443+
444+ ** Tests:** React (18 tests)
445+
446+ ---
447+
316448## Form Components
317449
318- ** Status:** Complete (HTML/CSS, React) - 25 components total
450+ ** Status:** Complete (HTML/CSS, React) — 25 components total
319451
320452** Location:** ` packages/components-{html|react}/src/ `
321453
@@ -624,15 +756,15 @@ defineButton('my-custom-button');
624756
625757## Component Statistics
626758
627- ** Total Components:** 32
759+ ** Total Components:** 35
628760
629761** Implementations:**
630762
631- - ** HTML/CSS:** 32 components
632- - ** React:** 32 components (733 tests total)
763+ - ** HTML/CSS:** 35 components
764+ - ** React:** 35 components (824 tests total)
633765- ** Web Component:** 7 components (Button, Heading, Icon, Link, OrderedList, Paragraph, UnorderedList)
634766
635- ** Test Coverage:** 733 tests across 38 test suites
767+ ** Test Coverage:** 824 tests across 41 test suites
636768
637769---
638770
0 commit comments