+STEPH ALBERT+

+STEPH ALBERT+

+STEPH ALBERT+

+STEPH ALBERT+

Zendesk Dark Mode

Bringing theming, dark mode, and semantic variables into the system

Theming

Theming

Theming

Theming

Theming

Accessibility

Accessibility

Accessibility

Accessibility

Accessibility

Color

Color

Color

Color

Color

Context

Zendesk builds customer service software used by support agents and admins for hours every day. For many people, the interface is their workplace. We saw an opportunity to not only reduce strain, but build infrastructure for future themes, improve adoption of our design system, and unlock more flexible UI expression across products.

Objective

Design and ship Dark Mode across Zendesk in a way that reduces eye strain, improves accessibility, and creates a foundation for future theming across the product ecosystem.

Approach

We introduced Garden v9—bringing everyone to the dark side with new theming capabilities, a rebuilt color palette, better tooling, and overall improved a11y

  • Introduced semantic variables: We abstracted our visual language and color decisions into semantic variables to allow seamless theme switching across all components

  • Updated our color system: We expanded our palette from 8 to 12 steps, swapping from primarily RGB to the LCH color model to ensure consistent contrast within steps across all hues

  • Refined our color principles: We revisited our core color principles—like hierarchy, elevation, and layering—and redefined how they translate into a dark theme

  • Improved accessibility: The expanded 12-step color palette allowed more flexibility to us to meet contrast requirements across various components and elements

  • High fidelity proof of concept: Created a fully functional POC to demonstrate the use of semantic variables as well as fully functional theming across four key products within Zendesk

Semantic variables

Semantic variables store values like fill colors, padding, visibility, and more—enabling components to adapt automatically across themes. Designers no longer need to manually swap colors between light and dark modes. By capturing design intent, this approach ensures greater consistency, improves accessibility, and streamlines the design process.

Light and dark modes

Every component shown is theme aware, allowing the various UI elements like text, borders, and fills to inherit the appropriate color across themes.

Drag the slider to view between light and dark modes

Updated color palette

We rebuilt the palette using the LCH color model and expanded each hue from 8 steps to 12. This gave us more consistent progression of contrast and chroma across hues. Each scale was built by using the original colors as a base and then adjusted programmatically. Step 700 always provides a 4.5:1 contrast or higher. Step 600 always provides a 3:1 or higher contrast.

refined color principles

While turning on dark mode might be as simple as flipping a switch, learning to design for it wasn’t. We revisited our existing color principles and thoughtfully expanded them to work in a dark context—clarifying values such as visual hierarchy, color application, elevation, and opacity.

accessibility

Input borders, checkboxes, radios, and warning messages were updated using new color steps (e.g., yellow-700, grey-600) to meet or exceed WCAG 2.1 contrast ratios. Where full compliance wasn’t yet possible, we prioritized partial improvements and shifted colors where appropriate. The new 12 step palette allowed us to make these changes without making one-off exceptions.

High fidelity prototype

We created a prototype using an unreleased test version of our component library updated with semantic variables.

It demonstrated a working dark mode switch across four key product areas—Support, Guide, Explore, and Admin Center.

Shared widely across the organization, it became a high-visibility proof of concept that validated our approach and rallied support for the project

Outcome

Garden v9 launched successfully, unlocking dark mode org-wide

  • Rapid rollout: Piloted the changes with one team and then scaled to other teams within 90 days. Every Garden component now theme aware, with all designers and engineers having access to updated libraries and documentation.

  • A11y wins: We resolved 12 accessibility violations related to color contrast alone. Without extra effort, teams can resolve 10+ additional a11y bugs just by upgrading to v9.

  • Complete enablement: Migration guides, live walkthroughs, and async docs gave teams everything they needed to get started. Teams could immediately start building dark mode experiences with clear support from the Garden team.

  • Sustained support: We resourced the Garden team to provide ongoing support from the start. Teams could rely on us for help designing and engineering dark mode experiences with confidence and clarity.

Other projects

Garden Design System

Drag and drop

Other projects

Garden Design System

Drag and drop

Other projects

Garden Design System

Drag and drop

Other projects

Garden Design System

Drag and drop

Other projects

Garden Design System

Drag and drop

Other projects

Garden Design System

Drag and drop