Skip to content

Commit e657179

Browse files
Merge pull request #69 from jeffreylauwers/chore/docs-update-session-10
chore(docs): bijwerken naar versie 4.9.0 — sessie 10
2 parents 518d465 + 28aa4de commit e657179

6 files changed

Lines changed: 197 additions & 24 deletions

File tree

docs/01-architecture.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Architecture
22

3-
**Last Updated:** February 14, 2026
3+
**Last Updated:** March 5, 2026
44

55
This document describes the architecture of the Design System Starter Kit, including the token system, configuration model, and repository structure.
66

@@ -70,28 +70,32 @@ design-system-starter-kit/
7070
│ │ │ └── information-dense/
7171
│ │ │ └── typography.json # Fixed font-sizes
7272
│ │ └── components/
73+
│ │ ├── alert.json
7374
│ │ ├── button.json
7475
│ │ ├── checkbox.json
7576
│ │ ├── checkbox-group.json
7677
│ │ ├── checkbox-option.json
77-
│ │ ├── email-input.json
78-
│ │ ├── form-control.json
78+
│ │ ├── date-input.json
79+
│ │ ├── date-input-group.json
7980
│ │ ├── form-field.json
8081
│ │ ├── form-field-description.json
8182
│ │ ├── form-field-error-message.json
8283
│ │ ├── form-field-label.json
84+
│ │ ├── form-field-label-suffix.json
8385
│ │ ├── form-field-status.json
8486
│ │ ├── heading.json
8587
│ │ ├── link.json
86-
│ │ ├── number-input.json
88+
│ │ ├── note.json
89+
│ │ ├── option-label.json
8790
│ │ ├── ordered-list.json
8891
│ │ ├── paragraph.json
8992
│ │ ├── password-input.json
9093
│ │ ├── radio.json
9194
│ │ ├── radio-group.json
9295
│ │ ├── radio-option.json
9396
│ │ ├── search-input.json
94-
│ │ ├── telephone-input.json
97+
│ │ ├── select.json
98+
│ │ ├── status-badge.json
9599
│ │ ├── text-area.json
96100
│ │ ├── text-input.json
97101
│ │ ├── time-input.json

docs/02-design-tokens-reference.md

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Design Tokens Reference
22

3-
**Last Updated:** February 14, 2026
3+
**Last Updated:** March 5, 2026
44

55
Complete reference for all design tokens in the Design System Starter Kit.
66

@@ -310,11 +310,11 @@ Focus indicators use a dual-outline technique: a primary `outline` for the main
310310

311311
## Token Statistics
312312

313-
**Total Tokens (as of v4.0.0):**
313+
**Total Tokens (as of v4.9.0):**
314314

315315
- Semantic tokens: ~400 per configuration
316-
- Component tokens: ~650 (Button, Heading, Icon, Link, OrderedList, Paragraph, UnorderedList + 19 form components)
317-
- **Total: ~1050+ tokens per full configuration**
316+
- Component tokens: ~700 (30 component JSON files — 9 content + 3 display/feedback + 25 form, incl. variant kleur-tokens Alert/Note/StatusBadge)
317+
- **Total: ~1100+ tokens per full configuration**
318318
- **Total configurations: 8** (2 themes × 2 modes × 2 project types)
319319

320320
---

docs/03-components.md

Lines changed: 93 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Components
22

3-
**Last Updated:** March 3, 2026
3+
**Last Updated:** March 5, 2026
44

55
Complete component specifications and guidelines for the Design System Starter Kit.
66

@@ -181,9 +181,9 @@ Components are designed to compose together:
181181

182182
**Component Tokens:** 90+ tokens in `tokens/components/button.json`
183183

184-
**Variants (10 total):**
184+
**Variants (9 total):**
185185

186-
- Base: `strong`, `default`, `subtle`, `link`
186+
- Base: `strong`, `default`, `subtle`
187187
- Negative: `strong-negative`, `default-negative`, `subtle-negative`
188188
- Positive: `strong-positive`, `default-positive`, `subtle-positive`
189189

@@ -312,6 +312,92 @@ Components are designed to compose together:
312312

313313
**Tests:** React (8 tests), Web Component (11 tests)
314314

315+
### LinkButton Component
316+
317+
**Status:** Complete (HTML/CSS, React)
318+
319+
**Location:** `packages/components-{html|react}/src/LinkButton/`
320+
321+
**Component Tokens:** Erft van `tokens/components/link.json` — geen eigen token namespace
322+
323+
**Features:**
324+
325+
- Semantisch `<button>`, visueel als een `Link` — voor JS-acties met lage attentiewaarde
326+
- CSS: `dsn-link dsn-link-button` — erft alle Link-stijlen
327+
- `disabled`: native `<button disabled>` + CSS selector `.dsn-link.dsn-link-button:disabled`
328+
- `font: inherit` bewust weggelaten uit `dsn-link-button``dsn-link` regelt dit al; herhalen overschrijft `font-size` van size-klassen
329+
- Zie ook: [De drie-weg keuze (Architecture)](./01-architecture.md)
330+
331+
**Drie-weg keuze:**
332+
333+
| Situatie | Component |
334+
| --------------------------------------- | ------------------------------------------ |
335+
| Navigeert naar URL, hoge attentiewaarde | `ButtonLink``<a>` visueel als Button |
336+
| Navigeert naar URL, lage attentiewaarde | `Link``<a>` visueel als Link |
337+
| JS-actie, lage attentiewaarde | `LinkButton``<button>` visueel als Link |
338+
| JS-actie, hoge attentiewaarde | `Button``<button>` visueel als Button |
339+
340+
**HTML/CSS:**
341+
342+
```html
343+
<button type="button" class="dsn-link dsn-link-button">Label</button>
344+
<button type="button" class="dsn-link dsn-link-button" disabled>
345+
Uitgeschakeld
346+
</button>
347+
```
348+
349+
**React:**
350+
351+
```tsx
352+
<LinkButton onClick={handleAction}>Actie uitvoeren</LinkButton>
353+
<LinkButton disabled>Uitgeschakeld</LinkButton>
354+
```
355+
356+
**Tests:** React (11 tests)
357+
358+
### ButtonLink Component
359+
360+
**Status:** Complete (HTML/CSS, React)
361+
362+
**Location:** `packages/components-{html|react}/src/ButtonLink/`
363+
364+
**Component Tokens:** Erft van `tokens/components/button.json` — geen eigen token namespace
365+
366+
**Features:**
367+
368+
- Semantisch `<a>`, visueel als een `Button` — voor navigatieacties met hoge attentiewaarde
369+
- CSS: `dsn-button dsn-button--{variant} dsn-button--size-{size} dsn-button-link`
370+
- `disabled`: `aria-disabled="true"` + `tabIndex={-1}` + `pointer-events: none` (`:disabled` pseudo-class werkt niet op `<a>`)
371+
- `external`: auto `target="_blank"` + `rel="noopener noreferrer"` + zichtbare "(opent nieuw tabblad)" tekst
372+
- `children` altijd gewrapt in `<span class="dsn-button__label">` — zelfde patroon als Button
373+
374+
**HTML/CSS:**
375+
376+
```html
377+
<a href="/pagina" class="dsn-button dsn-button--strong dsn-button-link">
378+
<span class="dsn-button__label">Navigeer naar pagina</span>
379+
</a>
380+
381+
<!-- Disabled -->
382+
<a
383+
class="dsn-button dsn-button--strong dsn-button-link"
384+
aria-disabled="true"
385+
tabindex="-1"
386+
>
387+
<span class="dsn-button__label">Niet beschikbaar</span>
388+
</a>
389+
```
390+
391+
**React:**
392+
393+
```tsx
394+
<ButtonLink href="/pagina" variant="strong">Navigeer naar pagina</ButtonLink>
395+
<ButtonLink href="https://example.com" external>Externe link</ButtonLink>
396+
<ButtonLink href="/pagina" disabled>Niet beschikbaar</ButtonLink>
397+
```
398+
399+
**Tests:** React (20 tests)
400+
315401
---
316402

317403
## Display & Feedback Components
@@ -756,15 +842,15 @@ defineButton('my-custom-button');
756842

757843
## Component Statistics
758844

759-
**Total Components:** 35
845+
**Total Components:** 37
760846

761847
**Implementations:**
762848

763-
- **HTML/CSS:** 35 components
764-
- **React:** 35 components (824 tests total)
849+
- **HTML/CSS:** 37 components
850+
- **React:** 37 components (880 tests total)
765851
- **Web Component:** 7 components (Button, Heading, Icon, Link, OrderedList, Paragraph, UnorderedList)
766852

767-
**Test Coverage:** 824 tests across 41 test suites
853+
**Test Coverage:** 880 tests across 43 test suites
768854

769855
---
770856

docs/04-development-workflow.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Development Workflow
22

3-
**Last Updated:** February 14, 2026
3+
**Last Updated:** March 5, 2026
44

55
Guidelines and workflows for developing and contributing to the Design System Starter Kit.
66

@@ -36,7 +36,7 @@ pnpm --filter @dsn/design-tokens watch
3636
# Start Storybook in development mode
3737
pnpm dev
3838

39-
# Run tests (628 tests across 35 test suites)
39+
# Run tests (880 tests across 43 test suites)
4040
pnpm test
4141

4242
# Run tests in watch mode
@@ -459,7 +459,7 @@ import '@dsn/core/css'; // Includes reset + utilities
459459

460460
### Test Coverage
461461

462-
- **Total tests:** 628 across 35 test suites
462+
- **Total tests:** 880 across 43 test suites
463463
- **Frameworks:** Vitest + React Testing Library
464464
- **Coverage areas:** React components, Web Components, utilities
465465

docs/README.md

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# Design System Documentation
22

3-
**Version:** 4.7.0
4-
**Last Updated:** March 3, 2026
3+
**Version:** 4.9.0
4+
**Last Updated:** March 5, 2026
55

66
Complete documentation voor het Design System Starter Kit.
77

@@ -81,10 +81,10 @@ Complete documentation voor het Design System Starter Kit.
8181

8282
## 📊 System Statistics
8383

84-
- **Tokens per configuration:** ~1050 (400 semantic + 650 component)
84+
- **Tokens per configuration:** ~1100 (400 semantic + 700 component)
8585
- **Configurations:** 8 (2 themes × 2 modes × 2 project types)
86-
- **Components:** 35 implemented (7 content + 3 display/feedback + 25 form; HTML/CSS + React)
87-
- **Tests:** 824 across 41 test suites
86+
- **Components:** 37 implemented (9 content + 3 display/feedback + 25 form; HTML/CSS + React)
87+
- **Tests:** 880 across 43 test suites
8888
- **Storybook stories:** 130+
8989

9090
---

docs/changelog.md

Lines changed: 83 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,89 @@ All notable changes to this project are documented in this file.
66

77
---
88

9+
## Version 4.9.0 (March 5, 2026)
10+
11+
### Component-level tokens: kleur-tokens Alert en Note gepubliceerd (PR #68, issue #67)
12+
13+
- **Alert:** 16 nieuwe component-level kleur-tokens toegevoegd aan `alert.json` — 4 varianten (info, negative, positive, warning) × 4 eigenschappen (background-color, border-color, color, icon-color)
14+
- **Note:** 20 nieuwe component-level kleur-tokens toegevoegd aan `note.json` — 5 varianten (info, negative, neutral, positive, warning) × 4 eigenschappen (background-color, border-inline-start-color, color, icon-color)
15+
- `alert.css` en `note.css`: intermediate lokale CSS properties verwijzen nu naar de gepubliceerde JSON token variabelen in plaats van rechtstreeks naar semantische tokens
16+
- `Alert.docs.md` en `Note.docs.md`: twee tabellen (layout + kleur) samengevoegd tot één uniforme tokentabel conform StatusBadge patroon; disclaimer "lokale CSS custom properties" verwijderd
17+
- Variant kleur-tokens zijn nu overschrijfbaar per thema via CSS custom properties
18+
19+
---
20+
21+
## Version 4.8.0 (March 4, 2026)
22+
23+
### Component-level tokens: Button, FormFieldStatus, Alert, Note, StatusBadge (PR #66, issue #65)
24+
25+
**Toegevoegde tokens Button**
26+
27+
- `dsn.button.border-radius``{dsn.border.radius.md}`
28+
- `dsn.button.border-width``{dsn.border.width.thin}`
29+
- `dsn.button.font-family``{dsn.text.font-family.default}`
30+
- `dsn.button.font-weight``{dsn.text.font-weight.bold}`
31+
- `dsn.button.line-height``{dsn.text.line-height.md}`
32+
- `dsn.button.min-block-size``{dsn.pointer-target.min-block-size}`
33+
- `dsn.button.min-inline-size``{dsn.pointer-target.min-inline-size}`
34+
- `dsn.button.size.small.min-block-size``2.5rem` (kleinere touch target voor small variant)
35+
- `button.css`: 7 semantische tokens + 1 hardcoded waarde vervangen door component-level tokens
36+
37+
**Toegevoegde tokens FormFieldStatus**
38+
39+
- `dsn.form-field-status.gap``{dsn.space.text.sm}`
40+
- `dsn.form-field-status.icon-size``{dsn.icon.size.md}`
41+
- `dsn.form-field-status.positive-color``{dsn.color.positive.color-default}`
42+
- `dsn.form-field-status.warning-color``{dsn.color.warning.color-default}`
43+
44+
**Toegevoegde icon-size tokens (Alert, Note, StatusBadge)**
45+
46+
- `dsn.alert.icon-size``{dsn.icon.size.xl}` (ook breedte eerste grid-kolom)
47+
- `dsn.note.icon-size``{dsn.icon.size.xl}` (ook breedte eerste grid-kolom)
48+
- `dsn.status-badge.icon-size``{dsn.icon.size.sm}`
49+
50+
**Docs**
51+
52+
- `Button.docs.md`: 7 verouderde semantische token-rijen vervangen door 8 component-level token-rijen
53+
- `Button.docs.md`: 9 verouderde `--dsn-button-link-*` tokens verwijderd (link-variant bestaat niet meer; vervangen door LinkButton component)
54+
- `FormFieldStatus.docs.md`, `Alert.docs.md`, `Note.docs.md`, `StatusBadge.docs.md`: tokentabellen bijgewerkt
55+
56+
---
57+
58+
**Session 8 werk (PR's #43#64)**
59+
60+
### LinkButton en ButtonLink componenten (PR #43, issue #41 / PR #44, issue #42)
61+
62+
**LinkButton**
63+
64+
- **LinkButton component** — semantisch `<button>`, visueel als een Link — voor JS-acties met lage attentiewaarde
65+
- CSS: erft `dsn-link` en `dsn-link-button` klassen
66+
- `disabled`: native `<button disabled>` + CSS `.dsn-link.dsn-link-button:disabled`
67+
- `font: inherit` bewust weggelaten uit `dsn-link-button``dsn-link` zet dit al; herhalen overschrijft `font-size` van size-klassen
68+
- Storybook: Default, Disabled, All states, alle size-varianten, Long text, RTL
69+
70+
**ButtonLink**
71+
72+
- **ButtonLink component** — semantisch `<a>`, visueel als een Button — voor navigatieacties met hoge attentiewaarde
73+
- CSS: `dsn-button dsn-button--{variant} dsn-button--size-{size} dsn-button-link`
74+
- `disabled`: `aria-disabled="true"` + `tabIndex={-1}` + `pointer-events: none` (`:disabled` pseudo-class werkt niet op `<a>`)
75+
- `external`: auto `target="_blank"` + `rel="noopener noreferrer"` + zichtbare "(opent nieuw tabblad)" tekst
76+
- `children` altijd gewrapt in `<span class="dsn-button__label">` — zelfde patroon als Button
77+
- Storybook: Default, alle varianten, Disabled, External, Long text, RTL
78+
79+
### Storybook TypeScript fixes (PR's #51, #52, #53)
80+
81+
- `#51` — Ambient module declaration toegevoegd voor `*.mdx` imports (TypeScript kende het type niet)
82+
- `#52` — Subpath export geconfigureerd voor `icon-registry.generated` in `components-react`
83+
- `#53``TS7053` opgelost voor `globalThis` string-index in `preview.ts`
84+
85+
### Token key ordering (PR #57, issue #56 / PR #64, issue #63)
86+
87+
- `#56` — Consistente sleutelvolgorde doorgevoerd in alle token JSON bestanden: depth-first, alphabetisch, states → variants → sub-componenten
88+
- `#63` — Follow-up: tokenvolgorde ook doorgevoerd in alle `.docs.md` tabellen in Storybook
89+
90+
---
91+
992
## Version 4.7.0 (March 3, 2026)
1093

1194
### Note component + Alert/Note polish

0 commit comments

Comments
 (0)