Decision reference


Take it one answer at a time
This page keeps every decision behind Multi-brand in one place: 78 answers and what each one shaped. It's a reference, not a reading list. Most days you only need one answer.
Three easy ways in- Take a minute with Where it starts. It shows the few first answers the rest grow from.
- Open one section when you wonder why. For example, why Multi-brand's spacing is comfortable, or why its voice is plain and direct.
- Come in from a component page. Each one links here, to the answers that shaped it.
Everything else can wait until you need it.
- Question
- Answer
- Why, and what it came from
- Design values
- In the UI
Where it starts
The first answers lead to the rest. Each branch is an answer that follows from the one above it.
- Sells and converts What does the product do for the business?
- Many How many brands or products share the system?
- Looking off-brand What is a costly mistake?
- Neutral and adaptable What should the brand feel like?
- Regular typography → type.body.font-size font.size.16: 1rem
- Balanced color → color.neutral.0 color.slate-deep.dark.0: #020617
- Soft elevation → elevation.card shadow.card-dark: [object Object]
- Moderate motion → motion.duration.feedback duration.moderate: 200ms
- Plain and direct voice and tone →
- Present How visible is the brand in the interface?
- Also for emphasis and size components →
- A platform team Who maintains the system?
- Lowercase words in paths naming →
- Every month How fast does it change?
- Rounded shape → radius.control radius.999: 9999px
- Match the text iconography → size.icon size.16: 1rem
- Light and dark theming →
- Customers who choose us Who uses it most?
- AA What accessibility level do we commit to?
- Sometimes How often do people repeat actions?
- They see it fresh each time How do people recall the interface?
- Low effort to understand What must the interface protect?
- Anywhere, on any device Where do people use it?
- Touch size accessibility → size.control.default size.44: 2.75rem
- Forms and tasks What is the main content?
- A moderate amount How much is on one screen?
- Comfortable spacing → space.gap.tight space.8: 0.5rem
- A moderate amount How much is on one screen?
- Complete a form What is the main task?
- Completion without errors Which outcome matters most?
- A few minutes How long is one visit?
- Many How many brands or products share the system?
Every question
All 78, by section, in the order every scheme answers them. Each answer shows why, what it came from, and every design decision it made. The menu in the sidebar opens a section; its number is how many decisions that section made.
Reasons
- Sells and converts
- Why
A company sells several products under several brands.
- Because of
Nothing before it. It's one of the first answers.
- What it decided (4)Answers it led to (4)
- How many brands or products share the system? → Many
- Who uses it most? → Customers who choose us
- What is the main content? → Forms and tasks
- What is the main task? → Complete a form
- Why
- Many
- Why
Three brands share one system today, more tomorrow.
- Because of
- What does the product do for the business? → Sells and converts
- What it decided (30)Answers it led to (30)
- What is a costly mistake? → Looking off-brand
- What should the brand feel like? → Neutral and adaptable
- How visible is the brand in the interface? → Present
- Who maintains the system? → A platform team
- How fast does it change? → Every month
- Typography · Which text roles does it need? → Core: heading, body, labelTypography →
- Typography · How many steps does the type scale take? → One step per kind of textTypography →
- Typography · How are sizes and line heights defined? → A ratio, line heights in proportionTypography →
- Color · Which color roles does it need? → Those and brand accentsColor →
- Color · How is the palette defined? → Shared neutrals, a ramp per brandColor →
- Spacing · How many densities exist? → OneSpacing →
- Spacing · How are spacing steps defined? → Small steps, on a 4px gridSpacing →
- Shape · Which shape roles does it need? → Controls, badges and containersShape →
- Shape · How are corners set? → Set by each brandShape →
- Shape · What should control corners say? → RoundedShape →
- Motion · How is easing defined? → Standard ease-outMotion →
- Iconography · What icon style? → OutlineIconography →
- Iconography · How big are icons next to text? → Match the textIconography →
- Theming · What can a theme change? → Mode and brandTheming →
- Theming · How many themes ship? → SeveralTheming →
- Theming · How are brands handled? → Brands as modesTheming →
- Theming · Which modes ship? → Light and darkTheming →
- Accessibility · How many signals carry each meaning? → Two: color and wordAccessibility →
- Accessibility · Where are the floors hardest to hold? → Brand colorAccessibility →
- Naming · What gets a name? → Tokens and component keysNaming →
- Naming · How are decisions named? → By roleNaming →
- Naming · What do components read? → Component keysNaming →
- Voice and tone · Which kinds of copy does it need? → Labels, messages and headlinesVoice and tone →
- Voice and tone · How many tones does it use? → One per brandVoice and tone →
- Voice and tone · How is the voice defined? → A shared core, brand tone on topVoice and tone →
- Why
- Customers who choose us
- Why
Customers who chose one of our brands.
- Because of
- What does the product do for the business? → Sells and converts
- What it decided (6)Answers it led to (6)
- What accessibility level do we commit to? → AA
- How often do people repeat actions? → Sometimes
- What must the interface protect? → Low effort to understand
- Where do people use it? → Anywhere, on any device
- Iconography · What do icons do? → Actions, status and navigationIconography →
- Iconography · Where do icons work hardest? → NavigationIconography →
- Why
- AA
- Why
AA in every brand.
- Because of
- Who uses it most? → Customers who choose us
- What it decided (8)Answers it led to (1)
- Accessibility · What contrast floor do we hold? → AAAccessibility →
Rules it sets (2)- For a field label or column header, use type.label. Don't use type.caption. Labels stay readable in every brand.Typography →
- For keyboard focus, use button/focus-ring (from the brand). Don't use removing the outline. Focus follows the brand but always shows.Accessibility →
Variants it picks (5)- Button's focus state. Follows the brand, but always shows.Button →
- Button's disabled state. Only with a visible reason next to it.Button →
- Field's vertical orientation. Sign-up and checkout forms: the label above, in every brand.Field →
- Input group's block-start align isn't used. Sign-up and account fields stay one line; field puts the label above, outside the input.Input group →
- Input group's block-end align isn't used. Sign-up and account fields stay one line; field shows the hint and error below.Input group →
- Why
- Forms and tasks
- Why
Product pages, sign-up and account forms.
- Because of
- What does the product do for the business? → Sells and converts
- What it decided (13)Answers it led to (5)
- How much is on one screen? → A moderate amount
- Spacing · Which spacing roles does it need? → Gaps, insets and row heightsSpacing →
- Elevation · What separates groups on the page? → CardsElevation →
- Components · Which component families does it need? → Core, plus content and mediaComponents →
- Components · Where do components do the most work? → Sign-up and account pagesComponents →
Rules it sets (1)- For a number in a table, use type.body. Don't use a mono font. Prices sit in sentences and offers, not in columns to compare, so a mono font adds nothing in any brand.Typography →
Variants it picks (7)- Badge's warning tone isn't used. No plan or order state sits between running and failed; a coming renewal is news, not a warning.Badge →
- Alert's default variant isn't used. Alerts here are for billing problems; news is a badge or a toast.Alert →
- Input group's inline-start align. A currency sign or a search icon before the text, from the outline set every brand shares.Input group →
- Input group's inline-end align. A unit after the value, the same in every brand.Input group →
- Input group's block-start align isn't used. Sign-up and account fields stay one line; field puts the label above, outside the input.Input group →
- Input group's block-end align isn't used. Sign-up and account fields stay one line; field shows the hint and error below.Input group →
- Item's outline variant. Account settings on their own page, with a border and the corner each brand sets.Item →
- Why
- A moderate amount
- Why
A moderate amount per screen.
- Because of
- What is the main content? → Forms and tasks
- What it decided (1)Answers it led to (1)
- Spacing · How dense is the layout? → ComfortableSpacing →
- Why
- Complete a form
- Why
Customers sign up and buy.
- Because of
- What does the product do for the business? → Sells and converts
- What it decided (7)Answers it led to (7)
- Which outcome matters most? → Completion without errors
- How long is one visit? → A few minutes
- Typography · Where does type do the most work? → Forms and labelsTypography →
- Color · How many emphasis levels do actions need? → ThreeColor →
- Spacing · Where does spacing matter most? → Between fieldsSpacing →
- Motion · What is motion for? → Feedback and guidanceMotion →
- Components · Where do components do the most work? → Sign-up and account pagesComponents →
- Why
- Sometimes
- Why
Customers return now and then.
- Because of
- Who uses it most? → Customers who choose us
- What it decided (1)Answers it led to (1)
- How do people recall the interface? → They see it fresh each time
- Why
- Low effort to understand
- Why
Low effort, whichever brand they see.
- Because of
- Who uses it most? → Customers who choose us
- Why
- They see it fresh each time
- Why
Customers see it fresh each time.
- Because of
- How often do people repeat actions? → Sometimes
- What it decided (3)Rules it sets (1)
- For an action on one row or item, use button ghost with a word. Don't use an icon alone. A word says what will happen.Iconography →
- Why
- Completion without errors
- Why
Finished sign-ups and orders.
- Because of
- What is the main task? → Complete a form
- What it decided (4)Rules it sets (1)
- For the action that completes the task, use button primary, one per view. Don't use two primaries. One clear action per view. Two primaries split attention.Color →
- Why
- Looking off-brand
- Why
A page that looks like the wrong brand loses trust.
- Because of
- How many brands or products share the system? → Many
- What it decided (8)Answers it led to (1)
- Components · When does a component get another look? → Also for emphasis and sizeComponents →
Rules it sets (3)- For an error message, use color.status.danger and a sentence. Don't use the brand color. Status colors are shared, never branded.Color →
- For a delete or remove, use button secondary, then confirm with Button danger. Don't use button primary. Confirm before destroying data.Color →
- When no component in the inventory fits, use a component from the inventory with brand tokens. Don't use a component made for one brand. Brands change primitives, never components; one brand-only part breaks the shared library.Components →
Variants it picks (4)- Button's secondary variant. The alternative that steps back, and the first step of a delete.Button →
- Button's danger variant. The confirm of a delete, the same red in every brand: danger never follows the brand.Button →
- Badge's danger tone. Card declined: the payment failed, so the plan will stop.Badge →
- Alert's destructive variant. A billing problem such as a declined card: plain and specific, the same in every brand.Alert →
- Why
- Neutral and adaptable
- Why
A neutral base each brand can color.
- Because of
- How many brands or products share the system? → Many
- What it decided (6)Answers it led to (5)
- Typography · How large is body text? → RegularTypography →
- Color · How saturated is the palette? → BalancedColor →
- Elevation · How soft are shadows? → SoftElevation →
- Motion · How fast does feedback feel? → ModerateMotion →
- Voice and tone · How does it sound? → Plain and directVoice and tone →
Rules it sets (1)- When no component in the inventory fits, use a component from the inventory with brand tokens. Don't use a component made for one brand. Brands change primitives, never components; one brand-only part breaks the shared library.Components →
- Why
- Present
- Why
Each brand is clearly present.
- Because of
- How many brands or products share the system? → Many
- What it decided (4)Answers it led to (4)
- Color · Where does color carry meaning first? → Brand momentsColor →
- Shape · Where does shape show most? → Buttons and badgesShape →
- Voice and tone · Where do the words matter most? → Headlines and buttonsVoice and tone →
- Components · When does a component get another look? → Also for emphasis and sizeComponents →
- Why
- Anywhere, on any device
- Why
Customers sign up on phones and manage plans on laptops.
- Because of
- Who uses it most? → Customers who choose us
- What it decided (3)Answers it led to (1)
- Accessibility · What is the smallest target? → Touch sizeAccessibility →
- Why
- A few minutes
- Why
Most visits are a few minutes: sign up, check, change.
- Because of
- What is the main task? → Complete a form
- Why
- A platform team
- Why
A platform team serves three product teams.
- Because of
- How many brands or products share the system? → Many
- What it decided (5)Answers it led to (5)
- Naming · How are names written? → Lowercase words in pathsNaming →
- Voice and tone · How is the voice defined? → A shared core, brand tone on topVoice and tone →
- Components · Which component families does it need? → Core, plus content and mediaComponents →
- Components · How far does the inventory reach? → What today's screens use, plus what the next ones will likely needComponents →
- Components · How does a component earn its place? → Its family is in the roles, so product teams find it readyComponents →
- Why
- Every month
- Why
Brands ship every month.
- Because of
- How many brands or products share the system? → Many
- What it decided (3)Answers it led to (3)
- Naming · How many token tiers? → ThreeNaming →
- Components · How far does the inventory reach? → What today's screens use, plus what the next ones will likely needComponents →
- Components · How does a component earn its place? → Its family is in the roles, so product teams find it readyComponents →
- Why
Scopes
- Core: heading, body, label
- Why
One set of roles across brands.
- Because of
- How many brands or products share the system? → Many
- What it decided (1)Rules it sets (1)
- For a page title, use type.title in the brand font. Don't use a brand-specific style. Roles stay shared; only the brand font changes.Typography →
- Why
- One step per kind of text
- Why
One size per kind of text suits every brand font.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the typography tokens: Typography →
- Why
- A ratio, line heights in proportion
- Why
Ratios work with every brand font.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the typography tokens: Typography →
- Why
- Regular
- Why
Regular body size suits all brands.
- Because of
- What should the brand feel like? → Neutral and adaptable
- What it decided (1)Rules it sets (1)
- For a paragraph or help text, use type.body. Don't use type.caption. Regular body size suits every brand.Typography →
- Why
- Forms and labels
- Why
Sign-up and account forms carry most text.
- Because of
- What is the main task? → Complete a form
- What it decided
It sets the values of the typography tokens: Typography →
- Why
- Those and brand accents
- Why
Each brand brings its own accent ramp.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the color tokens: Color →
- Why
- Three
- Why
Primary, secondary and ghost in every brand.
- Because of
- What is the main task? → Complete a form
- What it decided (2)Rules it sets (1)
- For an alternative or cancel, use button secondary. Don't use a second primary. The alternative steps back, so the one primary stays clear. A second primary would compete with it.Color →
Variants it picks (1)- Button's secondary variant. The alternative that steps back, and the first step of a delete.Button →
- Why
- Shared neutrals, a ramp per brand
- Why
Shared neutrals; each brand sets its own ramp.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the color tokens: Color →
- Why
- Balanced
- Why
Balanced, so any brand hue works.
- Because of
- What should the brand feel like? → Neutral and adaptable
- What it decided
It sets the values of the color tokens: Color →
- Why
- Brand moments
- Why
Brand color shows on actions and headlines.
- Because of
- How visible is the brand in the interface? → Present
- What it decided
It sets the values of the color tokens: Color →
- Why
- Gaps, insets and row heights
- Why
Account tables need a row height.
- Because of
- What is the main content? → Forms and tasks
- What it decided
It sets the values of the spacing tokens: Spacing →
- Why
- One
- Why
One density across brands.
- Because of
- How many brands or products share the system? → Many
- What it decided (6)Rules it sets (1)
- For items that belong together, use space.gap.default. Don't use brand-specific spacing. Spacing is shared across brands.Spacing →
Variants it picks (5)- Sidebar's default size. Every account-area menu item.Sidebar →
- Sidebar's sm size isn't used. One density across brands.Sidebar →
- Sidebar's lg size isn't used. One density across brands.Sidebar →
- Item's sm size isn't used. One density across brands, at touch size.Item →
- Toggle's lg size isn't used. One density across brands.Toggle →
- Why
- Small steps, on a 4px grid
- Why
Every brand shares one set of steps, so they sit on a 4px grid: small enough for account forms, with big ones for product pages.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the spacing tokens: Spacing →
- Why
- Comfortable
- Why
Comfortable spacing in every brand.
- Because of
- How much is on one screen? → A moderate amount
- What it decided (1)Rules it sets (1)
- For a table row height, use size.row (comfortable). Don't use a compact row. Customers browse on phones, and compact rows are hard to tap in any brand.Spacing →
- Why
- Between fields
- Why
Space matters most between form fields.
- Because of
- What is the main task? → Complete a form
- What it decided
It sets the values of the spacing tokens: Spacing →
- Why
- Controls, badges and containers
- Why
Each brand sets three corners.
- Because of
- How many brands or products share the system? → Many
- What it decided (1)Answers it led to (1)
- Shape · How many corner sizes exist? → ThreeShape →
- Why
- Three
- Why
Control, badge and container.
- Because of
- Shape · Which shape roles does it need? → Controls, badges and containers
- What it decided
It sets the values of the shape tokens: Shape →
- Why
- Set by each brand
- Why
Each brand sets its own corners.
- Because of
- How many brands or products share the system? → Many
- What it decided (1)Variants it picks (1)
- Item's outline variant. Account settings on their own page, with a border and the corner each brand sets.Item →
- Why
- Rounded
- Why
Rounded by default; each brand sets its own corner.
- Because of
- How many brands or products share the system? → Many
- What it decided (1)Rules it sets (1)
- For the corners of buttons and inputs, use radius.control (set by the brand). Don't use a hard-coded radius. Each brand sets its own corner through the theme.Shape →
- Why
- Buttons and badges
- Why
Corners are the most visible brand difference.
- Because of
- How visible is the brand in the interface? → Present
- What it decided
It sets the values of the shape tokens: Shape →
- Why
- Cards too
- Why
Cards lift slightly to group offers.
- Because of
- Elevation · What separates groups on the page? → Cards
- What it decided (3)Answers it led to (2)
- Elevation · How many shadow levels exist? → TwoElevation →
- Elevation · Where does elevation show? → Cards, menus and dialogsElevation →
Rules it sets (1)- For a card on the page, use elevation.card. Don't use a border only. Cards lift slightly to group offers.Elevation →
- Why
- Two
- Why
One shadow for cards, one for overlays.
- Because of
- Elevation · What rises above the page? → Cards too
- What it decided
It sets the values of the elevation tokens: Elevation →
- Why
- Cards
- Why
Cards group plans and offers.
- Because of
- What is the main content? → Forms and tasks
- What it decided (3)Answers it led to (1)
- Elevation · What rises above the page? → Cards tooElevation →
Rules it sets (1)- Between page sections, use space.gap.section and cards. Don't use lines. Cards hold each offer together, so customers compare offers as units in every brand. Lines would split an offer apart.Spacing →
Variants it picks (1)- Item's default variant. Settings inside a card or menu, which already gives the frame.Item →
- Why
- Soft
- Why
Soft shadows fit every brand.
- Because of
- What should the brand feel like? → Neutral and adaptable
- What it decided
It sets the values of the elevation tokens: Elevation →
- Why
- Cards, menus and dialogs
- Why
Cards, menus and dialogs rise.
- Because of
- Elevation · What rises above the page? → Cards too
- What it decided (1)Rules it sets (1)
- For a menu or dialog, use elevation.overlay and a dimmed page. Don't use no shadow. The shadow shows a menu or dialog floats above the page. Without it, it blends into the cards.Elevation →
- Why
- Feedback and guidance
- Why
Feedback and guidance through sign-up.
- Because of
- What is the main task? → Complete a form
- What it decided (3)Answers it led to (2)Rules it sets (1)
- When someone asks for less motion, use reduced motion. Don't use full motion. Motion is reduced, not removed: a fade keeps the change visible, and nothing slides.Motion →
- Why
- Two
- Why
One speed for feedback, one for panels.
- Because of
- Motion · What is motion for? → Feedback and guidance
- What it decided
It sets the values of the motion tokens: Motion →
- Why
- Standard ease-out
- Why
A standard ease-out across brands.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the motion tokens: Motion →
- Why
- Moderate
- Why
Moderate speed across brands.
- Because of
- What should the brand feel like? → Neutral and adaptable
- What it decided (2)Rules it sets (1)
- For hover and press feedback, use motion.duration.feedback (moderate). Don't use brand-specific motion. Motion is shared, so one component library behaves the same in every brand.Motion →
Variants it picks (1)- Button's hover state. Moderate feedback, shared across brands.Button →
- Why
- State changes and panels
- Why
State changes and panels move.
- Because of
- Motion · What is motion for? → Feedback and guidance
- What it decided
It sets the values of the motion tokens: Motion →
- Why
- Actions, status and navigation
- Why
Icons for actions, status and navigation.
- Because of
- Who uses it most? → Customers who choose us
- What it decided (2)Rules it sets (1)
- For an icon with no label, use not used: always add a word; a popover explains a fee. Don't use an icon button with a hover hint. On touch screens hover hints never show; a word says what will happen.Iconography →
Variants it picks (1)- Button's icon size isn't used. Customers use any device and hover hints never show on touch, so every button has a word.Button →
- Why
- One
- Why
One size next to text.
- Because of
- Iconography · How big are icons next to text? → Match the text
- What it decided
It sets the values of the iconography tokens: Iconography →
- Why
- Outline
- Why
One outline set for every brand.
- Because of
- How many brands or products share the system? → Many
- What it decided (2)Variants it picks (2)
- Empty's icon variant. An icon in a small tile, from the one outline set every brand shares.Empty →
- Input group's inline-start align. A currency sign or a search icon before the text, from the outline set every brand shares.Input group →
- Why
- Match the text
- Why
Icons match the text.
- Because of
- How many brands or products share the system? → Many
- What it decided (1)Answers it led to (1)
- Iconography · How many icon sizes exist? → OneIconography →
- Why
- Navigation
- Why
Icons help most in navigation.
- Because of
- Who uses it most? → Customers who choose us
- What it decided
It sets the values of the iconography tokens: Iconography →
- Why
- Mode and brand
- Why
Brand and mode both change.
- Because of
- How many brands or products share the system? → Many
- What it decided (1)Answers it led to (1)
- Theming · What changes when the theme changes? → Colors, type and shapeTheming →
- Why
- Several
- Why
Three brands in light and dark: six themes.
- Because of
- How many brands or products share the system? → Many
- Theming · Which modes ship? → Light and dark
- What it decided
It sets the values of the theming tokens: Theming →
- Why
- Brands as modes
- Why
Brands are theme modes over shared semantics.
- Because of
- How many brands or products share the system? → Many
- What it decided (12)Rules it sets (7)
- For a page title, use type.title in the brand font. Don't use a brand-specific style. Roles stay shared; only the brand font changes.Typography →
- For a selected row or item, use color.surface.selected (from the brand). Don't use a fixed blue. Selection follows the brand color.Color →
- For a link, use color.text.link (from the brand). Don't use a fixed blue. Links take the brand's color, so they look native in each brand. A fixed blue would clash with some brands.Color →
- For the corners of buttons and inputs, use radius.control (set by the brand). Don't use a hard-coded radius. Each brand sets its own corner through the theme.Shape →
- For the shape of a status badge, use radius.badge (set by the brand). Don't use a hard-coded shape. The brand sets the badge shape.Shape →
- When someone switches to dark, use the dark mode of the active brand. Don't use one dark theme for all brands. Every brand ships light and dark.Theming →
- For a value with no token, use the closest semantic token, then ask for a new one. Don't use a raw value or a brand primitive in the component. A raw value shows the same in every brand, so it breaks the theme.Naming →
Variants it picks (5)- Sidebar's default variant. Account-area menu items, the same in every brand.Sidebar →
- Sidebar's outline variant isn't used. Brands change color and corners, not the structure of the menu.Sidebar →
- Empty's default variant isn't used. Shared structure in every brand: no brand pictures in empty states.Empty →
- Item's muted variant. The current setting, with a soft fill from the brand.Item →
- Toggle's outline variant. A single toggle, with a border so it reads as a control in every brand.Toggle →
- Why
- Light and dark
- Why
Light and dark ship for every brand.
- Because of
- How many brands or products share the system? → Many
- What it decided (2)Answers it led to (1)
- Theming · How many themes ship? → SeveralTheming →
Rules it sets (1)- When someone switches to dark, use the dark mode of the active brand. Don't use one dark theme for all brands. Every brand ships light and dark.Theming →
- Why
- Colors, type and shape
- Why
A brand switch changes colors, fonts and corners.
- Because of
- Theming · What can a theme change? → Mode and brand
- What it decided
It sets the values of the theming tokens: Theming →
- Why
- Those and pressed
- Why
Pressed for touch.
- Because of
- Accessibility · What is the smallest target? → Touch size
- What it decided
It sets the values of the accessibility tokens: Accessibility →
- Why
- Two: color and word
- Why
Brand colors vary, so meaning needs a word.
- Because of
- How many brands or products share the system? → Many
- What it decided (8)Rules it sets (2)Variants it picks (6)
- Badge's neutral tone. Trial: the plan works and billing has not started.Badge →
- Badge's info tone. Renews in 3 days: a payment is coming; nothing has gone wrong.Badge →
- Badge's success tone. Active: the plan is paid and running.Badge →
- Badge's warning tone isn't used. No plan or order state sits between running and failed; a coming renewal is news, not a warning.Badge →
- Badge's danger tone. Card declined: the payment failed, so the plan will stop.Badge →
- Alert's destructive variant. A billing problem such as a declined card: plain and specific, the same in every brand.Alert →
- Why
- AA
- Why
AA in every brand and mode.
- Because of
- What accessibility level do we commit to? → AA
- What it decided
It sets the values of the accessibility tokens: Accessibility →
- Why
- Touch size
- Why
Customers sign up on phones.
- Because of
- Where do people use it? → Anywhere, on any device
- What it decided (11)Answers it led to (1)
- Accessibility · Which states get their own visible value? → Those and pressedAccessibility →
Rules it sets (2)- For an icon with no label, use not used: always add a word; a popover explains a fee. Don't use an icon button with a hover hint. On touch screens hover hints never show; a word says what will happen.Iconography →
- For the smallest clickable thing, use size.control.default (touch). Don't use a compact control. Customers are often on phones.Accessibility →
Variants it picks (8)- Button's default size. Every button, at touch size: customers are often on phones.Button →
- Button's compact size isn't used. Customers are often on phones: no compact controls.Button →
- Button's icon size isn't used. Customers use any device and hover hints never show on touch, so every button has a word.Button →
- Field's horizontal orientation isn't used. Customers sign up on phones: labels stay above.Field →
- Item's default size. Every row, at touch size: customers are often on phones.Item →
- Item's sm size isn't used. One density across brands, at touch size.Item →
- Toggle's default size. Every toggle, at touch size: customers are often on phones.Toggle →
- Toggle's sm size isn't used. Customers are often on phones: no compact controls.Toggle →
- Why
- Brand color
- Why
Brand colors must pass in every mode.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the accessibility tokens: Accessibility →
- Why
- Tokens and component keys
- Why
Components get their own keys, shared by every brand.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the naming tokens: Naming →
- Why
- Three
- Why
Primitives, semantics and component keys.
- Because of
- How fast does it change? → Every month
- What it decided
It sets the values of the naming tokens: Naming →
- Why
- By role
- Why
Role names stay the same in every brand.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the naming tokens: Naming →
- Why
- Lowercase words in paths
- Why
Lowercase paths read the same everywhere.
- Because of
- Who maintains the system? → A platform team
- What it decided
It sets the values of the naming tokens: Naming →
- Why
- Component keys
- Why
Components never change; brand primitives do.
- Because of
- How many brands or products share the system? → Many
- What it decided (2)Rules it sets (1)
- For a value with no token, use the closest semantic token, then ask for a new one. Don't use a raw value or a brand primitive in the component. A raw value shows the same in every brand, so it breaks the theme.Naming →
Variants it picks (1)- Input group's inline-end align. A unit after the value, the same in every brand.Input group →
- Why
- Labels, messages and headlines
- Why
Each brand has headlines on top of shared UI copy.
- Because of
- How many brands or products share the system? → Many
- What it decided
It sets the values of the voice and tone tokens: Voice and tone →
- Why
- One per brand
- Why
A shared core, with a tone per brand.
- Because of
- How many brands or products share the system? → Many
- What it decided (2)Rules it sets (1)
- For a success message, use brand tone allowed: Aster calm, Birch friendly, Coral upbeat. Don't use the same flat line in every brand. Success is a safe moment for brand tone.Voice →
Variants it picks (1)- Toast's success tone. Brand tone allowed: Aster calm, Birch friendly, Coral upbeat.Toast →
- Why
- A shared core, brand tone on top
- Why
Errors and confirmations are shared; brand tone sits on top.
- Because of
- How many brands or products share the system? → Many
- Who maintains the system? → A platform team
- What it decided (8)Rules it sets (4)
- For a button label, use a shared verb; the brand may choose the headline verb. Don't use brand slang on account actions. Shared labels keep the account area the same in every brand.Voice →
- For the words of an error, use shared across brands: plain and specific. Don't use brand tone in errors. Errors read the same in every brand, so support can help anyone.Voice →
- For an empty state, use shared structure, brand words. Don't use a different structure per brand. The structure is the shared core; words carry the brand.Voice →
- For a confirmation question, use shared across brands: plain and specific. Don't use brand tone when something is lost. Loss is never the moment for personality.Voice →
Variants it picks (4)- Alert's destructive variant. A billing problem such as a declined card: plain and specific, the same in every brand.Alert →
- Toast's neutral tone. A shared line with brand words.Toast →
- Toast's danger tone. Shared across brands: plain and specific.Toast →
- Empty's default variant isn't used. Shared structure in every brand: no brand pictures in empty states.Empty →
- Why
- Plain and direct
- Why
The shared core is plain and direct.
- Because of
- What should the brand feel like? → Neutral and adaptable
- What it decided (2)Rules it sets (1)
- For the words of an error, use shared across brands: plain and specific. Don't use brand tone in errors. Errors read the same in every brand, so support can help anyone.Voice →
Variants it picks (1)- Toast's danger tone. Shared across brands: plain and specific.Toast →
- Why
- Headlines and buttons
- Why
Brand tone shows in headlines and buttons.
- Because of
- How visible is the brand in the interface? → Present
- What it decided (1)Rules it sets (1)
- For a first visit, use brand tone in the first headline only. Don't use brand tone in every line. One headline carries the brand; the rest stays shared.Voice →
- Why
- Core, plus content and media
- Why
Product teams build sign-up and account forms, plus product pages with questions and faces.
- Because of
- What is the main content? → Forms and tasks
- Who maintains the system? → A platform team
- What it decided
It sets the values of the components tokens: Components →
- Why
- What today's screens use, plus what the next ones will likely need
- Why
Three product teams find their next parts ready, kept by one platform team.
- Because of
- Who maintains the system? → A platform team
- How fast does it change? → Every month
- What it decided
It sets the values of the components tokens: Components →
- Why
- Its family is in the roles, so product teams find it ready
- Why
Product teams find a whole family ready instead of asking one by one.
- Because of
- Who maintains the system? → A platform team
- How fast does it change? → Every month
- What it decided (1)Variants it picks (1)
- Toggle's default variant isn't used. Toggles that sit together, like monthly or yearly prices, use toggle-group.Toggle →
- Why
- Also for emphasis and size
- Why
Variants for emphasis and size let each brand feel present without new components.
- Because of
- How visible is the brand in the interface? → Present
- What is a costly mistake? → Looking off-brand
- What it decided
It sets the values of the components tokens: Components →
- Why
- Sign-up and account pages
- Why
Most components sit in sign-up and account pages.
- Because of
- What is the main content? → Forms and tasks
- What is the main task? → Complete a form
- What it decided
It sets the values of the components tokens: Components →
- Why