Case study
ADCenter Design System: co-building the foundations
Our Capgemini centre had no design system. I joined the effort to build one, to learn how systems are made from the inside, and ended up co-owning a part of it: the colour foundations, the contrast work behind them, and the components that live inside dense tables.
01 · Context
One centre, many products, no shared language
Before AI tooling2023. AI existed, but not for building components, not in Figma, not anywhere in this workflow. Everything on this page was defined and checked by hand.
The centre built internal products for itself and for clients, each with its own team, its own stack (Angular here, React there) and its own buttons. Developers rebuilt the same components for every project and accessibility was whatever each designer remembered to check. Valeria made the case for a system. I asked to build it with her, partly because the centre needed it and partly because I wanted to learn how systems are made from the inside.
Valeria led the system and designed most of it. This page covers the parts that were mine, and names hers where they touch. Her case study tells the whole story from the lead's seat.
02 · My part
What I worked on
Co-owned with Valeria. The foundations were defined together, in the same file, in the same weeks; the components below were the ones I took on and brought to her for review.
Ten scales, a semantic layer on top, and three themes that resolve from it: Light, Brand and Dark. Defined together with Valeria.
Every text, icon and border token checked against its background in each theme. Where a pair failed, the token changed, not the rule.
The components dense products are built from. Tags alone: four types, nine colours, six states, two sizes.
Figma prototypes wired to variables, so a theme switch or a state change could be tested before a line was coded.
03 · Colour
Ten scales, three themes
These are not screenshots. The swatches below are painted from the system's own values, as documented in the Figma file, and the number on each step is the contrast of the best text colour on it. Brand primary is Capgemini's blue.
The semantic layer
Components never point at a scale step directly. They point at a semantic token, and the token resolves differently in each theme. One component, three looks, zero overrides.
04 · Accessibility
Text on its real background
Contrast is a property of a pair, not of a colour. So the check was always the same question: this text, on this background, in this theme, is it readable? The tag is the component where this mattered most, nine colours on nine tints inside dense rows, so here are its variables as the component binds them, with the text measured on each background on this page. Body text needs 4.5:1; large text and UI, 3:1. The component itself is further down.
Every variable the tag binds, by its name in the Figma collection, the primitive it points at and its value, with the contrast of the text variable on each background variable and the real tag beside it. All nine colours pass AA on the default and the hover background, and six clear AAA; yellow, orange and red sit between 6.5:1 and 6.8:1. The pattern is the same in every colour: the lightest tint of the scale is the background, one of the darkest is the text. Tags are small and sit inside dense rows, so the margin matters more than it would on a heading.
05 · Component
The tag component
Tags label, categorise and filter. To cover those jobs without one component doing everything badly, they come in four types: read-only for labelling, dismissible for active filters, operational for overflow ("+3"), and selectable for toggling filters in place. Nine colours, six states, two sizes. The close button is its own component, so its focus ring and hit area are the same everywhere.
Rebuilt from the Figma component, not pasted from it: colours, sizes, radius and the Ubuntu type are the system's values, and every state is the real one, reachable with your own mouse and keyboard.
- To categorise content people filter by.
- For attributes such as "Urgent", "Featured" or "Deprecated".
- To show secondary status, "New" or "Updated", that is useful but not essential.
- For actions. "Submit" and "Delete" are buttons.
- For navigation. Links and menus do that.
- For anything essential to completing a task, or in quantities that clutter.
06 · More examples
Tables, tabs and the calendar, among others
After tags I defined the components that dense internal products are made of: tables with sortable headers, inline status and pagination; tabs in line and contained styles; and the calendar, from the day cell up to the twelve-month year view. Rendered below from the system's tokens. If they look familiar, it is because Center360 is built with them: the system and the product were designed in the same months, each pushing the other.
07 · After
Where it went, and where I went with it
The system was a work in progress by design, and it was in use while it was being built: Center360 and several other internal applications of the centre were assembled from it, so every component shipped to a real product soon after it was defined. Then client work took over my weeks and I moved on to ASML.
One thing about this system is worth saying plainly: it was built before AI tooling could do any of it. Every scale, every variable name, every contrast pair in this page was defined and checked by hand, in Figma, by two people. Today I build systems with AI in the loop, much faster and with far more documentation, and that speed is only useful because I learned what the output has to look like without it.
The systems so far
- 2023–2024 Before AI tooling
ADCenter Design System
Co-built with Valeria Lamicq
- Colour foundations and contrast, defined together.
- Tags, tables, tabs and the calendar, mine.
- Every pair measured by hand, every variable named by hand.
- 2024–2026
ASML
Contributor to a system in production
- A much larger organisation and a system already shipping.
- Components and patterns added for the four applications I owned.
- Details under NDA.
- 2026 –
Hello Customer
Built from scratch, alone
- First inside the existing product, adapting to what was there.
- Now a new system for the new navigation and the new version of the platform.
- Built with AI in the loop, documented as it goes, live from day one.