Stappenplan: Community voor organisaties
Als je als organisatie een component wilt bijdragen aan NL Design System kun je dit stappenplan volgen. Heb je nog geen eigen Community Componenten bord op GitHub? Vraag dan aan het kernteam om er een aan te maken.
Voeg de component toe aan de componenten bord
Doel: als organisatie wil je dit component graag beschikbaar maken voor hergebruik door andere teams. Door de status van de component en de documentatie beschikbaar te maken kunnen organisaties de component op nldesignsystem.nl vinden en kan het kernteam de component de Community status geven.
- Open het community bord via Community Componenten bord op GitHub
- Klik op de + icoon links onderaan de pagina om een component toe te voegen
- Kies
Add item from repository
- Selecteer
backlog
en zoek op de component naam - Selecteer de component
- Kies rechts onderin
Add selected items
🚩 Checkpoint: Title
Prefix van de verantwoordelijke organisatie
Doel: Om een component de status Community te geven is het belangrijk dat API's zoals design tokens de prefix van de verantwoordelijke organisatie hebben. Deze kolom is dus voor iedere component van de organisatie hetzelfde.
Vul de prefix van de organisatie in
🚩 Checkpoint: Organisatie prefix
Naam van de component
Doel: Bij implementaties van de component op nldesignsystem.nl/componenten willen we de naam van de component in de component bibliotheek laten zien zodat developers en designers hem makkelijk kunnen vinden.
Vul de naam van het css component in, dus bijvoorbeeld {organisatie-prefix}-{component-naam}
🚩 Checkpoint: Naam
Implementatie heeft minimaal kleur en typografie beslissingen met design tokens geïmplementeerd
Doel: Meerdere organisaties kunnen de component naar hun huisstijl omzetten.
Door met design tokens te werken zorgen we ervoor dat meerdere organisaties de component van een eigen huisstijl kunnen voorzien. Minimaal zouden er design tokens beschikbaar moeten zijn om kleur en typografie beslissingen door te voeren.
Zorg ervoor dat de component van jouw organisatie gebruik maakt van design tokens. Of controleer de implementaties van organisaties die aan de GitHub Discussion van de component zijn toegevoegd.
Tip! Om te controleren of er design tokens zijn toegepast kun je gebruik maken van de 'Inspect' functionaliteit van je browser. Wanneer je in de CSS verwijzingen ziet naar CSS variabelen zoals bijvoorbeeld --{organisatie-prefix}-button-primary-action-background-color
of --{organisatie-prefix}-button-font-family
kun je er vanuit gaan dat er design tokens zijn gebruikt.
🚩 Checkpoint: Minimale design tokens
Gebruikte design tokens voldoen aan naamgeving conventie van NL Design System
Doel: Een voorspelbare naamgeving van design tokens.
Voor NL Design System zijn er afspraken gemaakt voor duidelijke en voorspelbare namen. De beschikbare design tokens van een component moeten voldoen aan de naamgeving conventie van NL Design System. Zo is een component herbruikbaar voor alle verschillende thema's.
Zorg ervoor dat de design tokens van de component van jouw organisatie voldoen aan de naamgeving conventie. Of controleer de implementaties van organisaties die aan de GitHub Discussion van de component zijn toegevoegd.
🚩 Checkpoint: Naamgeving design tokens
EUPL-1.2 licentie toegepast
Doel: De component mag door andere organisaties gebruikt worden. Producten die ermee gemaakt worden hoeven niet per se open source te zijn.
Binnen het NL Design System werken we voor componenten met de Openbare Licentie van de Europese Unie (EUPL-1.2).
Zorg ervoor dat de organisatie naar de EUPL-1.2 licentie verwijst op de onderstaande posities. Of controleer de organisaties die aan de GitHub Discussion van de component zijn toegevoegd.
- GitHub repository: Als één van de repository details onder 'About' in de sidebar.
- Package in npm: Onder 'License' in de sidebar.
- Storybook: Als een aparte pagina binnen de sidebar, of binnen de introductiepagina danwel README.
- Figma (optioneel): Op de cover of direct naast de cover van de Figma bibliotheek.
🚩 Checkpoint: Licentie component
Documentatie heeft de Creative Commons 0 licentie (CC0)
Doel: De documentatie van een component mag door andere organisaties hergebruikt of gecombineerd worden zonder enige bronvermelding.
Binnen het NL Design System werken we voor de documentatie met de Creative Commons 0 licentie (CC0).
Zorg ervoor dat de organisatie de CC0 licentie benoemt in het README.md bestand van de component in GitHub. Of controleer de organisaties die aan de GitHub Discussion van de component zijn toegevoegd.
Tip! Door de 'Code' of 'Raw' weergave van het README.md bestand te bekijken zou je bovenaan <!-- @license CC0-1.0 -->
moeten zien staan.
🚩 Checkpoint: Licentie documentatie
Component te gebruiken door designers
Doel: Designers van andere organisaties kunnen de component overnemen en gaan gebruiken. De URL wordt zichtbaar op nldesignsystem.nl bij de documentatie van de component.
Kopieer de URL van de component pagina door in Figma met rechtermuisknop op de component in de sidebar te klikken (Copy link to page). Kun je dat niet doen, vraag dan iemand met edit rechten om de URL.
🚩 Checkpoint: Figma URL
Component te installeren door developers
Doel: Developers kunnen de component installeren. De URL wordt zichtbaar op nldesignsystem.nl bij de documentatie van de component.
Vul de https://www.npmjs.com URL van het css component in. Is er geen losse package voor de component en is deze onderdeel van een css bibliotheek? Vul dan de url van de bibliotheek in.
Note: Is de component alleen beschikbaar in React? Dan kan deze stap helaas niet worden gechecked.
🚩 Checkpoint: NPM URL (CSS)
Component documentatie beschikbaar voor developers
Doel: Developers kunnen de component makkelijk gebruiken doordat variaties en code voorbeelden beschikbaar zijn.
Vul de storybook URL in van de default story in de CSS Storybook.
Is er alleen een React Storybook? Zorg dan dat een codevoorbeeld van CSS beschikbaar is voor alle stories en vul de URL in waarop deze beschikbaar zijn.
🚩 Checkpoint: Storybook URL (CSS)
Component beschikbaar voor visuele regressietests
Doel: Organisaties die de component gebruiken kunnen zien of de huisstijl uit een eigen thema goed wordt toegepast. Nu, maar ook bij nieuwe versies van de component bibliotheek.
- Clone de http://github.com/nl-design-system/themes repository
- Zorg dat je pnpm hebt geinstalleerd
- Installeer de dependencies van de repository met
pnpm install
- Zorg dat de design tokens beschikbaar zijn voor Storybook met
pnpm run build
- Draai Storybook met
pnpm run storybook
Voeg de story toe aan de Components
sectie in Storybook
Doel: makkelijk maken voor developers om de component te vinden in de themes Storybook en eventueel te vergelijken met andere component implementaties.
Maak een story bestand aan
- Ga naar
packages/storybook/voorbeeld-design-tokens
- Maak een mapje aan voor de component met de naam zoals beschreven bij NL Design System, of open het bestaande mapje om een component van een extra organisatie toe te voegen
- Maak een nieuw bestand
{organisatie-prefix}-{component-naam}.stories.tsx
Voeg de component toe aan de story
codevoorbeeld// packages/storybook/voorbeeld-design-tokens/{component-naam}/{organisatie-prefix}-{component-naam}.stories.tsx
import type { Meta, StoryObj } from "@storybook/react";
import { ComponentNaam } from "organisatie-package";
const meta = {
id: "{organisatie-prefix}-{component-naam}",
title: "Components/{Component Naam}/{Organisatie Naam}",
component: ComponentNaam,
parameters: { actions: { disable: true } },
args: {
// ...default arguments for the story
},
} satisfies Meta<typeof ComponentNaam>;
type Story = StoryObj<typeof meta>;
export default meta;
// Een story met het voorbeeld thema
export const VoorbeeldTheme: Story = {
name: "Voorbeeld theme",
parameters: { theme: "voorbeeld-theme" },
};
// Een story met het thema van de organisatie die de component bijdraagt
export const OrganisatieNaamTheme: Story = {
name: "{Organisatie naam} theme",
parameters: { theme: "{organisatie-prefix}-theme" },
};
Voeg de component toe voor visuele regressietests van andere thema's
Doel: makkelijk maken voor organisaties die de component hergebruiken om huisstijl keuzes te zien en automatisch op visuele regressies te testen bij nieuwe versies van de componenten bibliotheek.
Voeg organisatie toe aan de theme-toolkit
Tip: Is er al een bestand packages/theme-toolkit/src/component-stories-{organisatie-prefix}.tsx
? Ga dan door naar de volgende sectie "Voeg een component toe"
// packages/theme-toolkit/src/component-stories-{organisatie-prefix}.tsx
import { STORY_GROUPS } from "./component-stories-util";
import { ComponentName } from "{react-component-library-package}";
export const ORGANISATIE_PREFIX_COMPONENT_STORIES = [
{
// De id die gebruikt wordt in de config.json van organisaties die de component willen gebruiken
storyId: "react-{organisatie-prefix}-{component}--default",
component: "{organisatie-prefix}-{component-naam}",
// Optioneel: Kies een van de opties van STORY_GROUPS
group: STORY_GROUPS[],
name: "{Naam van de organisatie} {Naam van de component}",
// De render functie om de component als story te renderen met properties en children zoals nodig als voorbeeld.
render: () => <></>,
},
];
Voeg een component toe aan de organisatie in de theme-toolkit
In de array van stories kun je stories toevoegen voor de component. In ieder geval een default
story, maar mogelijk ook stories voor de diverse states of varianten van de component waar losse design beslissingen over genomen kunnen worden.
// packages/theme-toolkit/src/component-stories-{organisatie-prefix}.tsx
// De lijst van stories voor alle componenten
export const ORGANISATIE_PREFIX_COMPONENT_STORIES = [
...{
// De id die gebruikt wordt in de config.json van organisaties die de component willen gebruiken
storyId:
"{type component, nu alleen nog react}-{organisatie prefix}-{component naam}--{story naam, bijvoorbeel default, naam-van-de-variant of naam-van-de-state}",
component: "{organisatie-prefix}-{component-naam}",
group: "Optioneel, gebruik hier een van de opties uit STORY_GROUPS",
name: "{Naam van de organisatie} {Naam van de component}",
// De render functie om de component als story te renderen met properties en children zoals nodig als voorbeeld.
render: () => <></>,
},
];
Voeg de component toe aan een config toe
- Open de config.json van het thema van de organisatie
- Voeg de id van de story of stories toe aan
"stories": []
Optioneel: voeg het component ook toe aan het voorbeeld thema
- Open de config.json van het Voorbeeld thema
packages/voorbeeld-design-tokens/src/config.json
- Voeg de id van de story of stories toe aan
"stories": []
Maak een Pull Request
Zorg dat de component beschikbaar komt met een Pull Request op GitHub en vraag het kernteam in #nl-design-system-developers om een review.
🚩 Checkpoint: Theme Storybook URL
GitHub URL
Doel: Developers kunnen de code zien en suggesties doen voor verbeteringen. Dit helpt het samenwerken aan toegankelijke en gebruiksvriendelijke componenten die voor iedereen bruikbaar zijn.
Ga in GitHub naar de CSS van de component toe en kopieer de URL. Vul deze URL in.
🚩 Checkpoint: GitHub URL (CSS)
Status bijgewerkt naar Available
Doel: alle teams kunnen nu zien dat de component beschikbaar is voor hergebruik door andere organsaties.
Is de component nog geen Candidate? Breng de community en het kernteam dan op de hoogte via Slack. De component kan dan door het kernteam of op een volgende Estafettemodeldag Candidate worden gemaakt.
codevoorbeeld## 🎉 {Component naam} is nu beschikbaar bij {Naam Organisatie} 🎉
📣 Kernteam: Helpen jullie mee de component Community te maken?
🚩 Checkpoint: Status naar Available
Heb je een vraag?
Heb je een vraag? Twijfel niet en stel je vraag via het #nl-design-system Slack kanaal van CodeForNL of neem contact op met het kernteam.