Skip to content

Commit ba7e016

Browse files
authored
feat(rvo): upgrade @nl-rvo component-library-css 4.20.2 + design-tokens 2.4.1 (button-migratie) (#382)
Migreert de RVO button-classes mee: component-library-css 4.16 verving .utrecht-button door .rvo-button met een nieuw modifier-schema. Zonder deze migratie zouden alle buttons in beide apps ongestyled (native) renderen. Class-migratie (utrecht-button* -> rvo-button*): - --primary-action -> --primary, --secondary-action -> --secondary - --rvo-tertiary-action -> --tertiary, --rvo-quaternary-action -> --quaternary - --rvo-md/--rvo-xs -> --size-md/--size-xs, --rvo-full-width -> --full-width - --warning -> --warning, --icon-gap -> --icon-before/--icon-after (per positie) - utrecht-button-group -> rvo-action-group Verwijderde classes in 4.20.2 die wij gebruikten (door review gevonden, gefixt): - a.rvo-button kleur: var(--_utrecht-button-color) bestaat niet meer -> var(--rvo-button-color) (anders donker-op-donker op de standalone-download-CTA) - rvo-heading--mixed -> rvo-heading--normal (4 accordion-titels; anders vet i.p.v. normaal). Beide zijn font-weight: var(--rvo-font-weight-normal), exact equivalent. Overig: - UiButton.vue: dynamische class-constructie aangepast - base.css/app.css: button-selectors gemigreerd; icon-gap-override naar icon-before/after; dode .utrecht-button--align-content regel verwijderd; --rvo-color-logoblauw -> --rvo-color-lintblauw (logoblauw hernoemd in dt 2.0) - SaveForm.vue: pre-existing typo rvo-action-groul -> rvo-action-group - Tests in test/cov/* asserteren op de nieuwe classes (100% coverage behouden) - CLAUDE.md button-conventie bijgewerkt RVO component-library-css 4.20 stripte de standaard onder-marge van koppen (utrecht-heading-1/2: 16px->0, heading-3: 12px->0) en zette de accordion-chevron ~5px te laag t.o.v. de titel. Beide degraderen de leesbaarheid zichtbaar t.o.v. de productie-interface (4.8.0). Compat-laag in base.css (raakt standalone + frontend): - herstel heading margin-block-end (16/16/12px); rvo-heading--no-margins (door RVO verwijderd) opnieuw gedefinieerd zodat accordion-/projecttitels 0 blijven - accordion-chevron-wrapper op 1.5rem + align center -> chevron weer uitgelijnd met de eerste tekstregel (gemeten 0px, was +5px; productie -1px) Heading-default sluit nu elementen met een rvo-margin*-utility en rvo-heading--no-margins uit, zodat alleen plain koppen de 4.8-marge terugkrijgen en expliciete 0-utilities behouden blijven. Gemeten (live): card-titel rvo-margin--none = 0px, plain sectiekop = 12px, accordion-titel = 0px.
1 parent 2fb3704 commit ba7e016

29 files changed

Lines changed: 139 additions & 118 deletions

.claude/CLAUDE.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ De tsconfigs in `apps/*` en `packages/*` erven gedeelde instellingen via `extend
8282
- API-calls via `api.ts` naar `/api/v1/`, Bearer token via `useAuth().getToken()`
8383
- Gedeelde componenten komen uit `@overheid-assessment/core`
8484
- Dialogen: native `<dialog>` met `showModal()` (focus trap automatisch, `::backdrop` voor overlay). Geen handmatige backdrop-divs of `.open` property.
85-
- RVO buttons: `utrecht-button utrecht-button--primary-action utrecht-button--rvo-md` (NIET `--rvo-primary-action`). Varianten: `--primary-action`, `--secondary-action`, `--rvo-tertiary-action`. Sizes: `--rvo-xs`, `--rvo-md`
85+
- RVO buttons: `rvo-button rvo-button--primary rvo-button--size-md`. Varianten: `--primary`, `--secondary`, `--tertiary`, `--quaternary`, `--warning`. Sizes: `--size-xs`, `--size-sm`, `--size-md`. Icon-positie: `--icon-before` / `--icon-after`. Volle breedte: `--full-width`. (Sinds `@nl-rvo/component-library-css` 4.16 is Button van `utrecht-button*` naar `rvo-button*` gemigreerd; `utrecht-button` bestaat niet meer.)
8686

8787
## Database
8888

apps/boekhouding-frontend/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@
1414
},
1515
"dependencies": {
1616
"@nl-rvo/assets": "^1.0.0-alpha.360",
17-
"@nl-rvo/component-library-css": "4.8.0",
18-
"@nl-rvo/design-tokens": "1.9.0",
17+
"@nl-rvo/component-library-css": "4.20.2",
18+
"@nl-rvo/design-tokens": "2.4.1",
1919
"@overheid-assessment/core": "workspace:*",
2020
"@tabler/icons-vue": "^3.44.0",
2121
"keycloak-js": "^26.2.4",

apps/boekhouding-frontend/src/assets/app.css

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -108,7 +108,7 @@ dialog::backdrop {
108108
border-color: var(--rvo-color-rood, #d52b1e);
109109
}
110110

111-
.confirm-dialog__actions .utrecht-button--secondary-action:hover {
111+
.confirm-dialog__actions .rvo-button--secondary:hover {
112112
background-color: var(--rvo-color-hemelblauw);
113113
border-color: var(--rvo-color-hemelblauw);
114114
color: var(--rvo-color-wit, #fff);
@@ -132,14 +132,14 @@ dialog::backdrop {
132132
color: var(--rvo-color-grijs-500, #666);
133133
}
134134

135-
.rvo-alert .utrecht-button:hover {
135+
.rvo-alert .rvo-button:hover {
136136
text-decoration: none;
137137
}
138138

139139
/* Fix anchor elements styled as buttons (RVO button classes don't fully reset anchor defaults) */
140-
a.utrecht-button {
140+
a.rvo-button {
141141
text-decoration: none;
142-
color: var(--_utrecht-button-color);
142+
color: var(--rvo-button-color);
143143
}
144144

145145
a.card-link {

apps/boekhouding-frontend/src/components/AppHeader.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ const { user, isAuthenticated, logout } = useAuth()
1818
<div class="app-header__left">
1919
<button
2020
v-if="backRoute || showBack"
21-
class="utrecht-button utrecht-button--rvo-tertiary-action utrecht-button--rvo-xs utrecht-button--icon-gap app-header__back"
21+
class="rvo-button rvo-button--tertiary rvo-button--size-xs rvo-button--icon-before app-header__back"
2222
@click="backRoute ? router.push(backRoute) : router.back()"
2323
>
2424
<IconArrowLeft :size="16" /> {{ backLabel || 'Terug' }}
@@ -30,7 +30,7 @@ const { user, isAuthenticated, logout } = useAuth()
3030
<template v-if="isAuthenticated">
3131
<span v-if="user" class="app-header__user">{{ user.displayName }}</span>
3232
<button
33-
class="utrecht-button utrecht-button--rvo-tertiary-action utrecht-button--rvo-xs utrecht-button--icon-gap"
33+
class="rvo-button rvo-button--tertiary rvo-button--size-xs rvo-button--icon-before"
3434
@click="logout"
3535
>
3636
<IconLogout :size="16" /> Uitloggen

apps/boekhouding-frontend/src/components/ConflictResolutionDialog.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ function handleResolve() {
8787
<div class="confirm-dialog__actions">
8888
<button
8989
type="button"
90-
class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-md"
90+
class="rvo-button rvo-button--primary rvo-button--size-md"
9191
@click="handleResolve"
9292
>Toepassen</button>
9393
</div>

apps/boekhouding-frontend/src/components/SessionExpiredDialog.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ watch(sessionExpired, (expired) => {
2323
<div class="confirm-dialog__actions">
2424
<button
2525
type="button"
26-
class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-md"
26+
class="rvo-button rvo-button--primary rvo-button--size-md"
2727
@click="relogin()"
2828
>Opnieuw inloggen</button>
2929
</div>

apps/boekhouding-frontend/src/views/AssessmentEditor.vue

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -376,7 +376,7 @@ const confirmDelete = async () => {
376376
<div v-else-if="error" class="rvo-max-width-layout rvo-max-width-layout--md" role="alert">
377377
<h2 class="utrecht-heading-2">Foutmelding</h2>
378378
<p>{{ error }}</p>
379-
<button class="utrecht-button utrecht-button--rvo-tertiary-action utrecht-button--rvo-xs utrecht-button--icon-gap" @click="assessment ? router.push(`/project/${assessment.projectId}`) : router.push('/projecten')">
379+
<button class="rvo-button rvo-button--tertiary rvo-button--size-xs rvo-button--icon-before" @click="assessment ? router.push(`/project/${assessment.projectId}`) : router.push('/projecten')">
380380
<IconArrowLeft :size="16" /> Terug naar project
381381
</button>
382382
</div>
@@ -411,8 +411,8 @@ const confirmDelete = async () => {
411411
@keydown.enter="saveName"
412412
@keydown.escape="cancelName"
413413
/>
414-
<button class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-xs" @click="saveName">Opslaan</button>
415-
<button class="utrecht-button utrecht-button--rvo-tertiary-action utrecht-button--rvo-xs" @click="cancelName">Annuleer</button>
414+
<button class="rvo-button rvo-button--primary rvo-button--size-xs" @click="saveName">Opslaan</button>
415+
<button class="rvo-button rvo-button--tertiary rvo-button--size-xs" @click="cancelName">Annuleer</button>
416416
</div>
417417
</div>
418418
<div class="form-subheader__right">
@@ -496,14 +496,14 @@ const confirmDelete = async () => {
496496
</label>
497497
<div class="confirm-dialog__actions">
498498
<button
499-
class="utrecht-button utrecht-button--rvo-md confirm-dialog__delete"
500-
:class="deleteConfirmInput === 'VERWIJDEREN' ? 'utrecht-button--primary-action' : 'confirm-dialog__delete--disabled'"
499+
class="rvo-button rvo-button--size-md confirm-dialog__delete"
500+
:class="deleteConfirmInput === 'VERWIJDEREN' ? 'rvo-button--primary' : 'confirm-dialog__delete--disabled'"
501501
:disabled="deleteConfirmInput !== 'VERWIJDEREN'"
502502
@click="confirmDelete"
503503
>
504504
Assessment verwijderen
505505
</button>
506-
<button class="utrecht-button utrecht-button--secondary-action utrecht-button--rvo-md" @click="deleteModalOpen = false; deleteConfirmInput = ''">
506+
<button class="rvo-button rvo-button--secondary rvo-button--size-md" @click="deleteModalOpen = false; deleteConfirmInput = ''">
507507
Annuleer
508508
</button>
509509
</div>

apps/boekhouding-frontend/src/views/LandingPage.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -88,7 +88,7 @@ const assessments = [
8888
</p>
8989
<a
9090
:href="standaloneUrl"
91-
class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-md"
91+
class="rvo-button rvo-button--primary rvo-button--size-md"
9292
>
9393
Start zonder account
9494
</a>
@@ -109,7 +109,7 @@ const assessments = [
109109
mogelijkheid om opmerkingen te plaatsen.
110110
</p>
111111
<button
112-
class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-md"
112+
class="rvo-button rvo-button--primary rvo-button--size-md"
113113
@click="goToProjects"
114114
>
115115
{{ isAuthenticated ? 'Naar projecten' : 'Inloggen' }}

apps/boekhouding-frontend/src/views/ProjectDetail.vue

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -349,14 +349,14 @@ const formatDate = (dateStr: string) =>
349349
@keydown.escape="cancelName"
350350
/>
351351
<div class="editable-field-actions">
352-
<button class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-xs" @click="saveName">Opslaan</button>
353-
<button class="utrecht-button utrecht-button--rvo-tertiary-action utrecht-button--rvo-xs" @click="cancelName">Annuleer</button>
352+
<button class="rvo-button rvo-button--primary rvo-button--size-xs" @click="saveName">Opslaan</button>
353+
<button class="rvo-button rvo-button--tertiary rvo-button--size-xs" @click="cancelName">Annuleer</button>
354354
</div>
355355
</div>
356356
<div class="project-actions">
357357
<button
358358
v-if="isOwner"
359-
class="utrecht-button utrecht-button--rvo-tertiary-action utrecht-button--rvo-xs utrecht-button--icon-gap"
359+
class="rvo-button rvo-button--tertiary rvo-button--size-xs rvo-button--icon-before"
360360
@click="router.push(`/project/${projectId}/leden`)"
361361
>
362362
<IconUsers :size="16" /> Leden beheren
@@ -393,8 +393,8 @@ const formatDate = (dateStr: string) =>
393393
@keydown.escape="cancelDescription"
394394
/>
395395
<div class="editable-field-actions">
396-
<button class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-xs" @click="saveDescription">Opslaan</button>
397-
<button class="utrecht-button utrecht-button--rvo-tertiary-action utrecht-button--rvo-xs" @click="cancelDescription">Annuleer</button>
396+
<button class="rvo-button rvo-button--primary rvo-button--size-xs" @click="saveDescription">Opslaan</button>
397+
<button class="rvo-button rvo-button--tertiary rvo-button--size-xs" @click="cancelDescription">Annuleer</button>
398398
</div>
399399
</div>
400400

@@ -423,7 +423,7 @@ const formatDate = (dateStr: string) =>
423423
<h3 class="utrecht-heading-3 rvo-margin--none">Pre-scan</h3>
424424
<p>Toets of een DPIA, DTIA, IAMA of KIA nodig is.</p>
425425
<div class="card-button">
426-
<button class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-md" @click="openStartDialog('prescan')">
426+
<button class="rvo-button rvo-button--primary rvo-button--size-md" @click="openStartDialog('prescan')">
427427
Start pre-scan
428428
</button>
429429
</div>
@@ -434,7 +434,7 @@ const formatDate = (dateStr: string) =>
434434
<h3 class="utrecht-heading-3 rvo-margin--none">DPIA</h3>
435435
<p>Vul stap voor stap het rijksmodel DPIA in.</p>
436436
<div class="card-button">
437-
<button class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-md" @click="openStartDialog('dpia')">
437+
<button class="rvo-button rvo-button--primary rvo-button--size-md" @click="openStartDialog('dpia')">
438438
Start DPIA
439439
</button>
440440
</div>
@@ -445,7 +445,7 @@ const formatDate = (dateStr: string) =>
445445
<h3 class="utrecht-heading-3 rvo-margin--none">IAMA</h3>
446446
<p>Breng de impact op mensenrechten van een algoritme in kaart.</p>
447447
<div class="card-button">
448-
<button class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-md" @click="openStartDialog('iama')">
448+
<button class="rvo-button rvo-button--primary rvo-button--size-md" @click="openStartDialog('iama')">
449449
Start IAMA
450450
</button>
451451
</div>
@@ -567,14 +567,14 @@ const formatDate = (dateStr: string) =>
567567

568568
<div class="start-dialog__actions">
569569
<button
570-
class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-md"
570+
class="rvo-button rvo-button--primary rvo-button--size-md"
571571
:disabled="dialogSubmitting"
572572
@click="submitDialog"
573573
>
574574
{{ dialogSubmitting ? 'Bezig...' : (dialogAssessmentType === 'dpia' ? 'Start DPIA' : dialogAssessmentType === 'iama' ? 'Start IAMA' : 'Start pre-scan') }}
575575
</button>
576576
<button
577-
class="utrecht-button utrecht-button--secondary-action utrecht-button--rvo-md"
577+
class="rvo-button rvo-button--secondary rvo-button--size-md"
578578
:disabled="dialogSubmitting"
579579
@click="closeDialog"
580580
>
@@ -598,14 +598,14 @@ const formatDate = (dateStr: string) =>
598598
</label>
599599
<div class="confirm-dialog__actions">
600600
<button
601-
class="utrecht-button utrecht-button--rvo-md confirm-dialog__delete"
602-
:class="deleteConfirmInput === 'VERWIJDEREN' ? 'utrecht-button--primary-action' : 'confirm-dialog__delete--disabled'"
601+
class="rvo-button rvo-button--size-md confirm-dialog__delete"
602+
:class="deleteConfirmInput === 'VERWIJDEREN' ? 'rvo-button--primary' : 'confirm-dialog__delete--disabled'"
603603
:disabled="deleteConfirmInput !== 'VERWIJDEREN'"
604604
@click="confirmDeleteProject"
605605
>
606606
Project verwijderen
607607
</button>
608-
<button class="utrecht-button utrecht-button--secondary-action utrecht-button--rvo-md" @click="deleteProjectModalOpen = false; deleteConfirmInput = ''">
608+
<button class="rvo-button rvo-button--secondary rvo-button--size-md" @click="deleteProjectModalOpen = false; deleteConfirmInput = ''">
609609
Annuleer
610610
</button>
611611
</div>

apps/boekhouding-frontend/src/views/ProjectList.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ const handleCreate = async () => {
6868
</div>
6969

7070
<div v-if="!showCreateForm">
71-
<button class="utrecht-button utrecht-button--primary-action utrecht-button--rvo-md utrecht-button--icon-gap" @click="showCreateForm = true">
71+
<button class="rvo-button rvo-button--primary rvo-button--size-md rvo-button--icon-before" @click="showCreateForm = true">
7272
<IconPlus :size="20" /> Nieuw project
7373
</button>
7474
</div>
@@ -85,7 +85,7 @@ const handleCreate = async () => {
8585
@input="autoGrowTextarea($event.target as HTMLTextAreaElement)"
8686
></textarea>
8787
</div>
88-
<div class="utrecht-button-group">
88+
<div class="rvo-action-group">
8989
<UiButton variant="primary" type="submit" label="Project toevoegen" />
9090
<UiButton variant="secondary" label="Annuleren" @click="showCreateForm = false" />
9191
</div>

0 commit comments

Comments
 (0)