User Story
Als ontwikkelaar wil ik via labelHeadingLevel en labelHeadingAppearance props op FormField (en equivalent op FormFieldset) kunnen aangeven dat de label/legend als heading gepresenteerd wordt, zodat ik het "één vraag per pagina" patroon kan toepassen zonder handmatig te componeren.
Context
Vervolg op #54 (stories voor het patroon). Waar dat issue de compositie toont via handmatige HTML/React, voegt dit issue een convenience-API toe aan de bestaande wrapper componenten.
De HTML-patronen zijn bewust anders per element-type:
FormFieldLabel — heading omsluit de label:
<h1 class="dsn-heading dsn-heading--heading-1">
<label class="dsn-form-field-label" for="naam">Naam</label>
</h1>
FormFieldLegend — heading zit ín de legend:
<legend class="dsn-form-field-label">
<h1 class="dsn-heading dsn-heading--heading-1">Geslacht</h1>
</legend>
Nieuwe props:
FormFieldLabel + FormFieldLegend: headingLevel?: 1 | 2 | 3 | 4 | 5 | 6, headingAppearance?: 'heading-1' | ... | 'heading-6'
FormField: labelHeadingLevel, labelHeadingAppearance (doorgestuurd naar FormFieldLabel)
FormFieldset: legendHeadingLevel, legendHeadingAppearance (doorgestuurd naar FormFieldLegend)
Als alleen headingLevel opgegeven is (zonder headingAppearance), matcht de appearance het level — conform hoe het Heading component werkt (headingLevel={1} → headingAppearance="heading-1").
Component-level design tokens
Geen nieuwe tokens — de bestaande dsn-heading en dsn-form-field-label tokens worden hergebruikt.
Acceptance Criteria
Definition of Done
Voorbereiding
Werkzaamheden
Kwaliteitscontrole
Documentatie
Oplevering
Notities / Open vragen
- Bij
FormFieldLegend met heading: de <legend> krijgt dsn-form-field-label stijlen én de inner <h{n}> krijgt dsn-heading stijlen — controleer of CSS-conflicten optreden en overweeg een modifier klasse dsn-form-field-label--has-heading op de legend om de eigen typografie te supprimeren
suffix prop: blijft zichtbaar binnen de heading-wrapper — controleer positionering bij beide element-types
- Bepaal of de
<h{n}> op FormFieldLabel margin/spacing erft van dsn-heading of van dsn-form-field-label, en of dat corrigeerd moet worden
User Story
Als ontwikkelaar wil ik via
labelHeadingLevelenlabelHeadingAppearanceprops opFormField(en equivalent opFormFieldset) kunnen aangeven dat de label/legend als heading gepresenteerd wordt, zodat ik het "één vraag per pagina" patroon kan toepassen zonder handmatig te componeren.Context
Vervolg op #54 (stories voor het patroon). Waar dat issue de compositie toont via handmatige HTML/React, voegt dit issue een convenience-API toe aan de bestaande wrapper componenten.
De HTML-patronen zijn bewust anders per element-type:
FormFieldLabel — heading omsluit de label:
FormFieldLegend — heading zit ín de legend:
Nieuwe props:
FormFieldLabel+FormFieldLegend:headingLevel?: 1 | 2 | 3 | 4 | 5 | 6,headingAppearance?: 'heading-1' | ... | 'heading-6'FormField:labelHeadingLevel,labelHeadingAppearance(doorgestuurd naarFormFieldLabel)FormFieldset:legendHeadingLevel,legendHeadingAppearance(doorgestuurd naarFormFieldLegend)Als alleen
headingLevelopgegeven is (zonderheadingAppearance), matcht de appearance het level — conform hoe hetHeadingcomponent werkt (headingLevel={1}→headingAppearance="heading-1").Component-level design tokens
Geen nieuwe tokens — de bestaande
dsn-headingendsn-form-field-labeltokens worden hergebruikt.Acceptance Criteria
FormFieldLabelaccepteertheadingLevelenheadingAppearanceprops; rendert een<h{n}>wrapper rondom de<label>FormFieldLegendaccepteertheadingLevelenheadingAppearanceprops; rendert een<h{n}>binnenin de<legend>FormFieldaccepteertlabelHeadingLevelenlabelHeadingAppearance; stuurt deze door naarFormFieldLabelFormFieldsetaccepteertlegendHeadingLevelenlegendHeadingAppearance; stuurt deze door naarFormFieldLegendhtmlTemplatein de stories is bijgewerkt voor de heading-HTML-structuurDefinition of Done
Voorbereiding
git checkout -b feature/naamWerkzaamheden
Kwaliteitscontrole
pnpm testpnpm --filter storybook exec tsc --noEmitpnpm lintDocumentatie
MEMORY.mdbijgewerkt indien nieuw patroon of architectuurkeuze.docs.mdbijgewerktOplevering
gh pr creategh pr merge --mergeNotities / Open vragen
FormFieldLegendmet heading: de<legend>krijgtdsn-form-field-labelstijlen én de inner<h{n}>krijgtdsn-headingstijlen — controleer of CSS-conflicten optreden en overweeg een modifier klassedsn-form-field-label--has-headingop de legend om de eigen typografie te supprimerensuffixprop: blijft zichtbaar binnen de heading-wrapper — controleer positionering bij beide element-types<h{n}>opFormFieldLabelmargin/spacing erft vandsn-headingof vandsn-form-field-label, en of dat corrigeerd moet worden