Coloriginz Design Systemshadcn custom registry

@col/brand-tokens

Versie: 1.1.0 Toegevoegd: 2026-08-03

Herkomst

Vertrekpunt is bestaand materiaal in C:\HPProjects\designsystem — een onafgemaakte poging uit april 2026 die al goede tokens voor COLORIGINZ bevatte: packages/tokens/src/brands/coloriginz.json (cyan #009CDE als primary, plus rood, groen en paars als secundaire kleuren, elk met een schaal 50–900) en packages/ui/src/coloriginz.css (106 regels --col-* custom properties).

Vervangt de hardcoded badgeClass: 'bg-indigo-100 text-indigo-800'-achtige waarden in supplier-onboarding-vercel/src/lib/label-config.ts door echte tokens die per merk wisselen via een data-label-attribuut.

Waarvoor

Merkkleuren als CSS-variabelen (--brand-50 t/m --brand-900, --brand-contrast), geschakeld op basis van een data-label-attribuut op <html>. Een consumer zet dat attribuut zelf op basis van zijn eigen domeinlogica; het item bevat alleen de labelnamen en de kleurwaarden, geen routing- of hostname-logica.

Gebruik het als de app meerdere merken/labels bedient en de kleur van UI-elementen (badges, accenten, knoppen) per merk moet variëren. Gebruik het niet als alternatief voor de gewone shadcn-thematokens (--primary, --accent, etc.) — brand-* is bedoeld voor merkidentiteit binnen een verder neutrale UI, niet als vervanging van het hele kleursysteem.

Wat je app moet leveren

brandLabels / BrandLabel / isBrandLabel

Uit brand-tokens.ts:

Export Type Betekenis
BRAND_TOKENS_VERSION string Versie van het item, voor debugging/logging
brandLabels readonly ['COLORIGINZ', 'PFC', 'FFS', 'MPO'] Alle bekende labels
BrandLabel type (typeof brandLabels)[number]
isBrandLabel(value) (value: unknown) => value is BrandLabel Runtime-guard, bv. voor een waarde uit een database of query-param

De kleuren zelf zijn geen export — die leven als CSS-variabelen in globals.css (via cssVars in registry.json) en als [data-label='...'] blokken die de consumer zelf toevoegt (zie hieronder). Je app moet zelf ergens <html data-label={label}> zetten; dit item bepaalt niet hóe je aan dat label komt.

emailAccents / EmailAccent

Uit email-colors.ts (sinds 1.1.0). Hexwaarden, geen oklch() — e-mailclients kennen oklch() niet en Outlook valt dan terug op zwart. Omgerekend uit dezelfde oklch-bron als brand-tokens.css; komen er huisstijldocumenten, dan worden beide bestanden in één keer bijgewerkt.

Export Type Betekenis
EmailAccent type { accent: string; accentContrast: string; rule: string }
emailAccents Record<BrandLabel, EmailAccent> Knopvlak (accent, brand-700), knoptekstkleur (accentContrast), streepje bovenaan (rule, brand-500) — per merk
Merk accent accentContrast rule
COLORIGINZ #006799 #ffffff #0098da
PFC #806b24 #ffffff #bb9e3a
FFS #9c231c #ffffff #e2382e
MPO #951456 #ffffff #d92280

Bedoeld voor EmailBrand uit @col/email-shell: emailAccents[label].accent → EmailBrand.accent, enzovoort. Zie waarom accent brand-700 is en niet brand-500 onder Bewuste keuzes.

De merkblokken

registry/col/brand-tokens/brand-tokens.css reist niet mee als registry-bestand (registry-items kunnen geen CSS-bestand naast cssVars uitrollen naar een custom selector). Kopieer de inhoud handmatig naar je globals.css, onder de :root-blokken:

[data-label='PFC'] {
  --brand-50: oklch(0.968 0.023 92.4);
  --brand-100: oklch(0.925 0.056 92.4);
  --brand-500: oklch(0.706 0.121 92.4);   /* ~#C0982B, schatting */
  --brand-700: oklch(0.534 0.092 92.4);
  --brand-900: oklch(0.351 0.060 92.4);
  --brand-contrast: oklch(0.145 0 0);      /* ~#3A3A3A antraciet */
}

[data-label='FFS'] {
  --brand-50: oklch(0.958 0.026 28.3);
  --brand-100: oklch(0.903 0.062 28.3);
  --brand-500: oklch(0.601 0.208 28.3);   /* ~#E63B26, schatting */
  --brand-700: oklch(0.455 0.158 28.3);
  --brand-900: oklch(0.298 0.104 28.3);
  --brand-contrast: oklch(0.443 0.113 158.6); /* ~#177A46 bosgroen */
}

[data-label='MPO'] {
  --brand-50: oklch(0.967 0.021 356.4);
  --brand-100: oklch(0.916 0.049 356.4);
  --brand-500: oklch(0.588 0.223 356.4);  /* ~#E11D6B, thematisch (pioenroos) */
  --brand-700: oklch(0.446 0.169 356.4);
  --brand-900: oklch(0.292 0.111 356.4);
  --brand-contrast: oklch(0.145 0 0);      /* logo is monochroom zwart */
}

COLORIGINZ heeft geen [data-label]-blok nodig — dat zijn de light-waarden die het item al via cssVars in :root zet (cyan #009CDE omgezet naar oklch).

Kleurentabel: herkomst en waardering

De geschatte waarden komen uit de logobestanden, niet uit de bestaande badgeClass-waarden in label-config.ts — die bleken grotendeels los te staan van de merken:

Merk Wat het logo toont Huidige badge Oordeel
COLORIGINZ cyan, rood, groen, paars — vastgelegde waarden bg-indigo-100 vervangen door de echte waarden
PFC goud-oker krul + antraciete letters bg-pink-100 wijkt af; geen roze in het logo
FFS helderrood (tulpen) + bosgroen (laarzen) + lavendel bg-emerald-100 pakt het groen, mist het dominante rood
MPO zwart lijnwerk op wit, monochroom bg-rose-100 geen kleur af te leiden; roze is een thematische keuze bij pioenrozen en blijft verdedigbaar

Geschatte primaire/secundaire waarden (voor het aflezen van de oklch-getallen hierboven):

Merk Primair Secundair Herkomst
COLORIGINZ #009CDE #E3000F, #50AE30, #6758A2 vastgelegd in het oude tokensbestand
PFC #C0982B (goud) #3A3A3A (antraciet) schatting uit PFC.jpg
FFS #E63B26 (rood) #177A46 (groen) schatting uit ffs.png
MPO #111111 (zwart) #E11D6B (roze, thematisch) schatting; logo is monochroom

De merkkleuren voor PFC, FFS en MPO zijn op 3 augustus 2026 met het oog afgeleid uit de logobestanden. Het zijn benaderingen, geen officiële huisstijlwaarden. Zodra die er zijn, worden ze vervangen en gaan de apps in "Gebruikt door" mee.

Bestanden

Bestand Landt in Soort
brand-tokens.ts components/brand/ beheerd
email-colors.ts components/brand/ beheerd
brand-tokens.css (niet in files, alleen hier en in de preview) plak je zelf in app/globals.css referentie

Geen upstream shadcn-afhankelijkheden. Tokens: zes --brand-* variabelen, meegeleverd via cssVars (alleen light, zie hieronder).

Gebruikt door

App Sinds versie Opmerkingen
supplier-onboarding-vercel (Onboarding Portal) 1.0.0 Consumer #1, sinds 3 aug 2026. data-label wordt gezet in favicon-switcher.tsx op basis van het domein; de labelbadge op de bewerkpagina zet het attribuut op het element zelf, zodat een aanvraag zijn eigen merkkleur houdt.

Bewuste keuzes

Bekende beperkingen