Home/Zeus Design System

Zeus Design System

2022 → 2026Shared Library

By Schneider Electric

We built Zeigo Activate from scratch. Instead of building one product, we built a design system and let the product fall out of it. That is Zeus: about 45 component sets in Figma, 22 documented components, 8 token families, maintained in Figma and in code at the same time. When Zeigo HUB came two years later, most of its screens were already designed.

The only thing we inherited was a palette. 118 color values in 9 groups, named after the one place each was used: dark-gray-410 textbox normal state, dark-gray-510 textbox hover state. The Shared Library still documents it as Original Colors, next to what replaced it.

Original Colors in the Shared Library. A color for every place, a name for every color.

A small team, 2 to 3 designers and 4 to 6 front-end engineers, and every screen re-deciding the basics: which gray, which radius, which spacing. Two or three review rounds per screen on things that should have been settled once. The usual path is build the product first, extract the system later. That path is how you get 118 grays.


The decision was to make tokens the contract between Figma and code, not components. Semantic surface and text tokens, background-page, layer-01 to layer-03, text-standard, text-subdued, text-inverse, plus scaled tokens for space, type, radius and elevation. Named once, published as Figma variables and as CSS custom properties, consumed by every component on both sides.

Usage rules for the layer tokens: what each sits on, where to use it, where not to.

Naming a layer system so it survives as CSS is an engineering constraint. Prefix plus scale, ordering rules like layer-02 always sits on layer-01. A designer alone misses it, and the palette stays at 118 hand-named values. The hierarchy itself, the avoid deep nesting rule, the accessible contrast for data-dense emissions screens, those come from design. An engineer alone ships a flat palette and a div with a shadow.

The spacing scale, in the library and as CSS. Same names in Figma.

Three products had to ship on one component set, so brand could not live in components. It lived in tokens and in one logo component with a variant per product: Zeigo, Power, Network, Activate, Hub. That is what made the later integration into HUB and Network possible without forking.

Five products, one component, two variants each.

What broke when Zeus moved from Activate into HUB: the brand color and logo per product, and a handful of card sizes for data-dense tables. Exactly the things that became the logo component and the layer tokens.

Organisms: payment and paywall on the left, cards and notifications on the right.
Emissions Comparison and Donut Chart, with and without data.

Before a component entered Zeus I prototyped it in code, to expose the states Figma could not: hover, loading, empty, error, long content, locale formats. Site Card is the example. Figma had two states. The code prototype, fed with real supplier data, needed created, selected and hover combinations that changed the layout. The Figma set grew to seven states from what the prototype showed, not the other way around.

Site Card, seven states.

Designer reviews happened in Storybook rather than in Figma, so the review was on real states. Figma branches for design changes, Git branches for code changes, merged in both. The Shared Library carries a Complete or In progress badge per page, so nobody consumed an unfinished component by accident.

The Shared Library: foundations, tokens and components, each with its status.
Vertical stepper and task list, two of the organisms that only made sense once they ran with real data.

118 →7 semanticColor tokens in daily use
1 →3Products on one component set
0 →70%HUB screens built without a new component
2 weeks →3–4 daysFigma handoff to merged PR, new screen
2–3 →1Design review rounds per component

What didn't work: 15 of the 22 documented components are still marked In progress. Documentation lagged behind code once HUB started pulling the team's time. If I did it again I would document at the same pace as I code. What stayed: Zeus V.2, the token set, the library, the Storybook. Three products still ship on it.

Target Card and Tour.

“Working with X has been great. He is reliable and fast. The solutions he designs are creative and empathetic to the end-user experience!”

Stefanos BezanisStefanos Bezanis · Senior Product Manager, Zeigo (Schneider Electric)

Exelobaiza | Design Engineer

ENES
███████╗██╗  ██╗███████╗██╗      ██████╗ ██████╗  █████╗ ██╗███████╗ █████╗
██╔════╝╚██╗██╔╝██╔════╝██║     ██╔═══██╗██╔══██╗██╔══██╗██║╚══███╔╝██╔══██╗
█████╗   ╚███╔╝ █████╗  ██║     ██║   ██║██████╔╝███████║██║  ███╔╝ ███████║
██╔══╝   ██╔██╗ ██╔══╝  ██║     ██║   ██║██╔══██╗██╔══██║██║ ███╔╝  ██╔══██║
███████╗██╔╝ ██╗███████╗███████╗╚██████╔╝██████╔╝██║  ██║██║███████╗██║  ██║
╚══════╝╚═╝  ╚═╝╚══════╝╚══════╝ ╚═════╝ ╚═════╝ ╚═╝  ╚═╝╚═╝╚══════╝╚═╝  ╚═╝
# Zeus Design System ## Schneider Electric — 2022 → 2026 --- [Shared Library](https://zeigo-network-library.vercel.app/) Context: We built **Zeigo Activate from scratch**, and instead of building one product we built a design system and let the product fall out of it. The only inherited material was a legacy palette of **118 color values** named after the one place each was used. My role: I designed the Zeus components in **Figma**, wrote them in **React and TypeScript**, and documented them in the Shared Library: about 45 component sets, 22 documented components, 8 token families, maintained in Figma and code at the same time. Other designers and engineers built the products on top of it; the system itself, across all three layers, is mine. Impact: Three products, Activate, HUB and Network, ship on one component set. When HUB came, **~70% of its screens were assembled from Zeus** without designing or coding a new component, and a new screen went from Figma handoff to merged PR in **3 to 4 days instead of 2 weeks**. We built Zeigo Activate from scratch. Instead of building one product, we built a design system and let the product fall out of it. That is Zeus: about 45 component sets in Figma, 22 documented components, 8 token families, maintained in Figma and in code at the same time. When Zeigo HUB came two years later, most of its screens were already designed. ![](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/cover-zeus-v2.png) The only thing we inherited was a palette. **118 color values in 9 groups**, named after the one place each was used: dark-gray-410 textbox normal state, dark-gray-510 textbox hover state. The Shared Library still documents it as Original Colors, next to what replaced it. ![Original Colors in the Shared Library. A color for every place, a name for every color.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/library-original-colors.png) A small team, 2 to 3 designers and 4 to 6 front-end engineers, and every screen re-deciding the basics: which gray, which radius, which spacing. Two or three review rounds per screen on things that should have been settled once. The usual path is build the product first, extract the system later. That path is how you get 118 grays. --- The decision was to make **tokens the contract between Figma and code, not components**. Semantic surface and text tokens, background-page, layer-01 to layer-03, text-standard, text-subdued, text-inverse, plus scaled tokens for space, type, radius and elevation. Named once, published as Figma variables and as CSS custom properties, consumed by every component on both sides. ![Usage rules for the layer tokens: what each sits on, where to use it, where not to.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/library-usage-layers.png) Naming a layer system so it survives as CSS is an engineering constraint. Prefix plus scale, ordering rules like layer-02 always sits on layer-01. A designer alone misses it, and the palette stays at 118 hand-named values. The hierarchy itself, the avoid deep nesting rule, the accessible contrast for data-dense emissions screens, those come from design. An engineer alone ships a flat palette and a div with a shadow. ![The spacing scale, in the library and as CSS. Same names in Figma.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/library-space-tokens.png) --- Three products had to ship on one component set, so brand could not live in components. It lived in tokens and in **one logo component** with a variant per product: Zeigo, Power, Network, Activate, Hub. That is what made the later integration into HUB and Network possible without forking. ![Five products, one component, two variants each.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-logo-set-5-products.png) What broke when Zeus moved from Activate into HUB: the brand color and logo per product, and a handful of card sizes for data-dense tables. Exactly the things that became the logo component and the layer tokens. ![Organisms: payment and paywall on the left, cards and notifications on the right.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-payments-paywall.png) ![Organisms: payment and paywall on the left, cards and notifications on the right.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-cards.png) ![Emissions Comparison and Donut Chart, with and without data.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-emissions-comparison.png) ![Emissions Comparison and Donut Chart, with and without data.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-donut-chart.png) --- Before a component entered Zeus I prototyped it in code, to expose the states Figma could not: hover, loading, empty, error, long content, locale formats. **Site Card** is the example. Figma had two states. The code prototype, fed with real supplier data, needed created, selected and hover combinations that changed the layout. The Figma set grew to seven states from what the prototype showed, not the other way around. ![Site Card, seven states.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-site-card-7-states.png) Designer reviews happened in **Storybook** rather than in Figma, so the review was on real states. Figma branches for design changes, Git branches for code changes, merged in both. The Shared Library carries a Complete or In progress badge per page, so nobody consumed an unfinished component by accident. ![The Shared Library: foundations, tokens and components, each with its status.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/library-sidebar-badges.png) ![Vertical stepper and task list, two of the organisms that only made sense once they ran with real data.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-vertical-stepper.png) ![Vertical stepper and task list, two of the organisms that only made sense once they ran with real data.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-task-list-modal-blocked.png) --- - Color tokens in daily use: 118 → 7 semantic - Products on one component set: 1 → 3 - HUB screens built without a new component: 0 → 70% - Figma handoff to merged PR, new screen: 2 weeks → 3–4 days - Design review rounds per component: 2–3 → 1 What didn't work: 15 of the 22 documented components are still marked In progress. Documentation lagged behind code once HUB started pulling the team's time. If I did it again I would document at the same pace as I code. What stayed: Zeus V.2, the token set, the library, the Storybook. Three products still ship on it. ![Target Card and Tour.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-target-card.png) ![Target Card and Tour.](https://res.cloudinary.com/dcy607q9x/image/upload/portfolio/zeus/organisms-tour.png) > "Working with X has been great. He is reliable and fast. The solutions he designs are creative and empathetic to the end-user experience!" — Stefanos Bezanis, Senior Product Manager, Zeigo (Schneider Electric) --- All case studies: [https://www.exelobaiza.dev/work](https://www.exelobaiza.dev/work) (markdown mirror: [work.md](https://www.exelobaiza.dev/work.md)) ## Contact - LinkedIn: https://www.linkedin.com/in/exequiel-lobaiza/ - GitHub: https://github.com/exelobaiza