← Back to home

Ahold Delhaize USA · Universal Design System

One design system for five grocery brands, on every platform

As the lead UI designer on Ahold Delhaize's Universal Design System, I built the components that five grocery brands share across web, iOS and Android. Each one is designed once, documented and themed for every brand.

My role

Senior UI Designer, Design Systems

Team

3 product designers, 3 product managers, 5 engineers

Timeline

Aug 2025 – present

Platforms

Web · iOS · Android

Brands

Stop & Shop
Food Lion
Hannaford
Giant
The GIANT Company

In production

Live on Stop & Shop, desktop and mobile

The system shows up wherever shoppers do: planning the week's groceries on a laptop, or checking a sale on their phone in the aisle.

Stop & Shop homepage on desktop with search, category navigation and a promotional hero banner
Stop & Shop product page on mobile for strawberries, with sale price and add to cart button

stopandshop.com on desktop (homepage) and mobile web (product page)

Product components

The UDS components in these screens, including the desktop header, Base Button, price component and breadcrumbs, share the same structure and accessibility rules on every screen.

CMS components

The system also covers CMS components: content modules, like the promotional hero carousel and category navigation, that marketing teams can assemble and update without waiting on a code release.

Impact so far

New CMS

Integrated with new and improved templates: visually enhanced, with accessibility issues fixed

37

Components in the library, organized into 6 categories

5

Grocery brands themed from each component

01

The problem

Ahold Delhaize USA runs five grocery brands, each with its own look. Each brand and platform had grown its own set of components. The same button could look and behave differently from one app to the next, and teams kept rebuilding basics instead of shipping features.

The goal: one universal library, built on Material Design foundations and WCAG standards, that every brand and platform can share.

02

How I build components

Start from a base. I built Base Button to define the structure, behavior and accessibility for every button. Each variant inherits from it, so a fix in one place fixes them all.
Design every state. Each component is specified across Enabled, Hovered, Focused, Pressed and Disabled, so engineers never have to guess.
Accessible by default. Every usage page sets the same rules: WCAG AA contrast (4.5:1), 48 × 48px touch targets, native button semantics, full keyboard support, a 2px focus ring, and accessible names that match the visible label.
One source, three platforms. Components are designed to translate across web, iOS and Android.

03

Library structure

The library is organized the way designers look for things: foundations first, then components grouped by what they help people do.

8

Style foundations

Avatars, color, elevation, icons, layouts, shape, typography and utilities.

37

Components in 6 categories

Actions, containment, communication, navigation, selection and text inputs.

Universal Design System library index listing style foundations and components

04

One component, five brands

Every component I build is designed once, then themed for each brand: Stop & Shop, Food Lion, Hannaford, Giant and The GIANT Company. Structure, behavior and accessibility stay identical; only the brand layer changes

Stop & Shop
Food Lion
Hannaford
Giant
The GIANT Company
Icon Button usage page showing four types themed for each grocery brand, plus states and accessibility rules

Icon Button: four types, a theme for each brand, and every interaction state.

05

Design tokens

Design tokens are what let one component serve five brands. Components never use a raw hex value or pixel radius. They point to named tokens, and each brand supplies its own values.

1 · Brand values

Each brand's palette, type and corner radius. Stop & Shop gets a rounded pill; other brands keep square corners.

→

2 · Semantic tokens

Named for their job rather than their value, like a primary action color or a focus ring, so one name works for every brand.

→

3 · Components

Buttons, quantity selectors and CMS modules reference semantic tokens only, so they re-theme automatically.

Consistent across brands. Switching brands swaps token values only. Structure, spacing, states and behavior stay identical, so a Food Lion button works exactly like a Hannaford one.
Accessible in every theme. Every brand theme is held to the same WCAG AA contrast standard (4.5:1), so accessibility never depends on which brand you're designing for.
An organized library. Tokens map to the style foundations (color, typography, shape, elevation), so designers find a value in the same place as its guidance, and one change updates every component that uses it.

06

Component deep dive

A closer look at components I built end to end: anatomy, every state, brand themes, accessibility rules and usage guidelines.

Quantity Selector

I built the control shoppers touch on every product and in every cart, so the edge cases mattered as much as the happy path.

Two types. Counted items (2) and weighted items (0.5 lb) share one component.
Faster big orders. Shoppers can type a quantity instead of tapping plus dozens of times.
Clear limits. Plus disables at 99 and minus at 0; typing past the limit triggers an error instead of failing silently.
Every state covered. Each segment has its own focus state, plus a loading state while the cart updates.
Quantity Selector usage page with anatomy, types, brand configurations, behaviors, interactions, accessibility rules and best practices

Base Button

Five types (Filled, Inverse, Outlined, Outline-Dashed and Text) across five interaction states: 25 variants, all inheriting from a single base.

Base Button documentation page showing five button types across five interaction states

Radio Button

Selected and unselected across every state, single fields with the button on the left or right, and field sets in vertical or horizontal layouts.

Radio Button documentation page showing states, field positions and field set orientations

07

Documentation

Every component gets the same page structure, so designers know exactly where to look:

Plain-language summary

What the component is for, in a sentence or two.

Status tag

“Pending review” or “Done,” so teams know what's ready to use.

Full guidelines

Usage rules one click away, not buried in a separate file.

“Copy me” instances

Ready-to-use examples with real content, like delivery time slots.

08

Collaboration

I work alongside two other experience designers, three product managers and five engineers in an agile process. Each component starts with user analytics, which show where shoppers struggle and which patterns teams need most. From there it moves through design crit sessions with my fellow designers and user testing to validate it with real shoppers before it's marked Done. I partner with engineers throughout, from early feasibility checks to handoff and build review, so what ships matches what's in the library.

The outcome

One shared foundation for five brands

The Universal Design System gives Stop & Shop, Food Lion, Hannaford, Giant and The GIANT Company a single, accessible source for building across web, iOS and Android. The components I built are already live on Stop & Shop.

Consistent across brands

Every brand shares the same structure, states and behavior. Only the brand layer changes.

Accessible by default

WCAG AA contrast, 48 × 48px touch targets and full keyboard support are built into every component, not added later.

Better CMS templates

New and improved templates are visually enhanced and fix accessibility issues, so marketing teams can update content without a code release.

One source of truth

Usage guidelines, status tags and ready-to-copy examples mean designers and engineers build from the same library.

Get in Touch
Email
aherriott12@gmail.com