Skip to content

feat(Card): voeg Card component toe met stretched-link en CardGroup#108

Merged
jeffreylauwers merged 11 commits intomainfrom
feature/card
Mar 23, 2026
Merged

feat(Card): voeg Card component toe met stretched-link en CardGroup#108
jeffreylauwers merged 11 commits intomainfrom
feature/card

Conversation

@jeffreylauwers
Copy link
Copy Markdown
Owner

Summary

  • Nieuw Card component met sub-componenten: Card, CardHeader, CardBody, CardHeading, CardFooter, CardGroup
  • Stretched-link techniek: ::before pseudo-element op dsn-card-heading__link dekt de volledige card; screenreaders lezen alleen de heading-tekst als linknaam
  • CardHeading ontvangt href automatisch via React context van parent Card
  • CardHeader toont automatisch placeholder bij lege children (aspect-ratio: 16/9, aria-hidden="true")
  • CardGroup als <ul role="list"> of <div> via as prop, gelijke hoogte via flex: 1 1 var(--dsn-card-group-item-min-width)
  • Hover/focus-ring rondom gehele card via CSS :has(.dsn-card-heading__link:hover/focus-visible)
  • Componenttokens voor background, border, box-shadow (sm/md), padding, heading typography en group layout
  • 43 nieuwe tests, documentatie bijgewerkt (changelog v5.13.0)

Closes #107

Test plan

  • pnpm test — alle 1125 tests groen (54 suites)
  • pnpm --filter storybook exec tsc --noEmit — 0 TypeScript-fouten
  • pnpm lint — 0 lint-fouten
  • Storybook: Default, ZonderAfbeelding, MetStatusBadge, MetButtonLink, AndereFooterBestemming, CardGroup, RTL stories inspecteren
  • Stretched link: klik op card body → navigeert correct
  • Footer aria-hidden + tabIndex={-1}: geen dubbele tabstop bij zelfde bestemming
  • Footer andere bestemming: wél tabbaar, staat boven stretched link

🤖 Generated with Claude Code

Jeffrey Lauwers and others added 11 commits March 21, 2026 21:07
- Image component toegevoegd aan docs/03-components.md (Content Components)
- Heading text-wrap: balance gedocumenteerd
- Changelog entries toegevoegd voor v5.12.0 (Image) en v5.11.1 (Heading/Radio/FormField)
- README.md: Content Components (9→10), Image rij toegevoegd, testcount bijgewerkt (1043→1082, 52→53 suites)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…issue #107)

- Card, CardHeader, CardBody, CardHeading, CardFooter, CardGroup sub-componenten
- Stretched-link techniek via ::before pseudo-element op dsn-card-heading__link
- CardHeading ontvangt href automatisch via React context van parent Card
- CardHeader toont automatisch placeholder bij geen children (aspect-ratio: 16/9)
- CardGroup als <ul role="list"> of <div> via as prop, gelijke hoogte via flex auto-fill
- Hover/focus-ring rondom gehele card via CSS :has()
- 43 nieuwe tests, TypeScript schoon, lint schoon

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…-height

dsn.text.xl.font-size → dsn.text.font-size.xl
dsn.text.xl.line-height → dsn.text.line-height.xl

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- footer-padding-block-end: xl (16px) → 3xl (24px) voor ruimere onderkant
- heading font-size: xl (24-31px) → lg (20-24px) voor compactere card-heading
- heading line-height: xl → lg (consistent met font-size)
- Card header image: border-radius alleen aan bovenkant (volgt card border-radius),
  onderkant recht via border-end-start/end-radius: 0

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…oogte

- Corrigeer border-radius selector naar .dsn-image__img (radius zit op het
  img-element, niet op de figure)
- Vervang hardcoded focus outline door --dsn-focus-* tokens (consistent
  met Button en Link)
- Voeg display: flex toe aan .dsn-card-group > * zodat kaarten gelijke
  hoogte krijgen via flex: 1 op .dsn-card

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Definieer href als text control in argTypes/args
- Render Default story via (args) zodat het href control werkt
- htmlTemplate gebruikt ook args.href

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
…w + transitie

- background standaard → bg-document, bij hover → bg-elevated
- box-shadow standaard → none, bij hover → dsn.box-shadow.sm
- transitie op background-color en box-shadow (zelfde tokens als Button)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- showImage boolean arg schakelt CardHeader (afbeelding) aan/uit
- htmlTemplate reageert ook op showImage
- href wordt nu ook doorgegeven aan de footer Link

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- CardGroup: 2e card toont placeholder, 3e card zonder CardHeader
- Nieuwe story 'Zonder afbeelding': card zonder CardHeader
- Nieuwe story 'Met lange content': toont footer-uitlijning bij veel tekst

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- README.md: versie 5.13.0, datum 23 maart 2026, tests 1125/54, componenttelling
- 03-components.md: Card hover/background/transition gedrag bijgewerkt
- changelog.md: v5.13.0 uitgebreid met fixes (border-radius, focus, gelijke hoogte)
- Card.docs.md: token tabel — background-hover toegevoegd, beschrijvingen gecorrigeerd

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@jeffreylauwers jeffreylauwers merged commit 3ba667f into main Mar 23, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat(Card): voeg configureerbaar Card component toe met header, body en footer

1 participant