Skip to content

Conversation

@petergoes
Copy link
Contributor

@petergoes petergoes commented Nov 10, 2025

In de preview zitten twee Button secties.

  1. Het React component met alle props gedocumenteerd
  2. Het CSS component. classes en relevante attributes zijn gedocumenteerd

De stories zijn identiek. Door een herexport op een paar plekken gebruiken beide Documentatie pagina's de zelfde stories (en dus beschrijvingen)

De story definities zitten in de docs package inplaats van de storybook package. Hierdoor zijn de stories onderdeel geworden van de documentatie en kunnen als zodanig ook gepubliceerd worden. De React en CSS meta objecten zijn hier ook in terug te vinden. In deze meta objecten zijn de props, attributes en classes gedocumenteerd.

In de storybook package zijn twee files (button.css.stories.tsx en button.react.stories.tsx) toegevoegd. Deze importeren de generieke stories file en de respectievelijke meta file uit de docs folder. Deze twee files her-exporteren enkel de al bestaande stories. Op deze plek is er ook de mogelijkheid om het meta object uit te breiden. Zo is er in de button.css.stories.tsx file voor gekozen om de code (onder elke story) de gerenderde HTML te laten zijn, ipv de React implementatie.

Ook is het mogelijk om het daadwerkelijke component dat gebruikt wordt om te renderen iets aan te passen zodat het beter passend is bij wat er gedocumenteerd wordt.

Op deze manier is het CSS component geheel als CSS component te documenteren maar toch de zelfde stories aan te houden.

@petergoes petergoes requested a review from a team as a code owner November 10, 2025 12:12
@vercel
Copy link

vercel bot commented Nov 10, 2025

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Preview Comments Updated (UTC)
candidate Ready Ready Preview Comment Nov 10, 2025 0:13am
candidate-storybook-non-conforming Ready Ready Preview Comment Nov 10, 2025 0:13am
candidate-storybook-test Ready Ready Preview Comment Nov 10, 2025 0:13am
evil-storybook Ready Ready Preview Comment Nov 10, 2025 0:13am

@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
30.7% Duplication on New Code (required ≤ 3%)
C Reliability Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

Catch issues before they fail your Quality Gate with our IDE extension SonarQube for IDE

Copy link

@FinnWard FinnWard left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik weet niet of je hierop zat te wachten maar ik heb me gedacahten even gedeeld over de PR :). Maar lekker bezig. ik denk inderdaad een generieke docspacakge waar je non framework specifieke docs kwijt kan heel chill is. Ook de scheiding dat je de docs wel beschikbaar stelt via een package zonder dat het in de dist van productie code komt vind ik een voordeel.

Laat maar weten als je hier nog verder over wil sparren!

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik denk dat het ook wel wat toe kan voegen om deze docs ook in de storybook css button te laten zien.


const meta = {
title: 'CSS Components/Button',
argTypes: {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik mis de .nl-button__icon class hier nog

@@ -0,0 +1,108 @@
import type { Meta } from '@storybook/react-vite';
import * as Stories from './button.stories';

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Aangezien dit niet de gebruikte story file neem ik aan dat we hier een export all kunnen doen ipv de exports onderaan de file.
De individuele exports moet wel voor de button.[css|react].stories.tsx zodat de story titles goed geformateerd worden in storybook.

Suggested change
import * as Stories from './button.stories';
export * from './button.stories';

parameters: {
docs: {
description: {
component: componentMarkdown,

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

deze component markdown zou ook in de button.css/react.meta.tsx geimporteerd kunnen worden toch? beide gelijk

},
codePanel: false,
canvas: {
sourceState: 'shown',

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

same voor de source state

const CssButton = ({ label, children, ...props }: ButtonProps) => <Button {...props}>{children || label}</Button>;

export default {
...merge({}, cssStoriesMeta, {

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ik denk dat je een groot deel van deze meta die gemerged word in een generieke css helper functie zou kunnen.

@@ -1 +1 @@
# Button
Een button wordt gebruikt om een actie mee uit te voeren
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

De verwoording is net wat anders dan op de website, is dat de bedoeling? Over de meeste beschrijvingen is door meerdere mensen uitgebreid nagedacht en gediscussieerd :) https://nldesignsystem.nl/button/

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.

4 participants