DESIGN.md

A machine-readable design spec for AI coding agents

DESIGN.md is a single-file, machine-readable summary of Booster's visual language and component rules. Drop it into your project so AI coding tools (Claude, Cursor, Copilot, and others) can produce on-brand UI without combing through this site for every decision. The format follows the open google-labs-code/design.md specification.

Get the file: Download DESIGN.md

How to use it

  1. Download DESIGN.md and save it at the root of your project.
  2. Point your AI tooling at the file — reference it from your CLAUDE.md, .cursorrules, agent system prompt, or equivalent so the agent reads it when generating UI.
  3. Re-download whenever Booster ships meaningful design changes; this page always reflects the current version.

Everything below is the contents of DESIGN.md, rendered for humans. The downloadable file and this view are kept in sync.


This file is a machine-readable design system reference for AI coding agents.
It captures the visual language, component inventory, and design rules for Zywave's
Booster design system. Keep this file updated as specs are finalized.

Full documentation: https://booster.zywave.dev
Component toolkit: ZUI (zui-* web components)


1. Visual Theme & Atmosphere

Booster is an enterprise B2B design system for insurance and risk management software. The visual language is clean, structured, and professional, prioritizing clarity and efficiency over decoration. Density is moderate; layouts favor whitespace and clear hierarchy. The overall feel is trustworthy, calm, and business-grade.

Design philosophy:

  • Consistency across all Zywave products takes priority over individual product expression
  • Accessibility is non-negotiable; all colors and text must meet WCAG AA minimum
  • Components are the building blocks; never invent custom UI when a component exists
  • Blue is the primary product action color; green is brand-only

2. Color Palette & Roles

Primary colors

RoleNameHEXCSS VariableNotes
Primary actionBlue 500#2777D3--zui-blue-500Buttons, links, interactive elements, tabs, progress indicators
BrandZywave Green#5FB53B--zui-green-500Logo and public-facing brand only; minimal product usage
BackgroundGray 50#F4F4F6--zui-gray-50Page background
SurfaceWhite#FFFFFFCards, panels, modals
TextGray 800#31313A--zui-gray-800All body text, headings

Semantic color roles

ColorHEXRoleUsed in
Red 500#D93911Error, destructive, failureError notifiers, dialogs, wells, destructive buttons
Green 500#5FB53BSuccess, confirmSuccess notifiers, dialogs, wells
Yellow 500#FBAC0ECaution, warningWarning notifiers, dialogs, wells
Blue 500#2777D3Information, in-progress, linksInfo notifiers, text links, progress
Gray 200#CBCBD2Disabled / unavailableDisabled buttons, unavailable dropdown items
Purple 500#6F48B0Visited linksVisited text links only

Extended palette (illustrations and accents only)

Color500 HEXCSS Variable Base
Blue#2777D3--zui-blue-{50-700}
Green#5FB53B--zui-green-{100-700}
Aqua#30BBB1--zui-aqua-{100-700}
Purple#6F48B0--zui-purple-{100-700}
Rose#C6318C--zui-rose-{100-700}
Red#D93911--zui-red-{100-700}
Orange#F36F12--zui-orange-{100-700}
Yellow#FBAC0E--zui-yellow-{100-700}
Gray#78788C--zui-gray-{25-900}

Color rules

  • Never create a "sea of blue"; blue is for guiding users to actions, not decorating pages
  • Zywave Green must never be used on elements with text smaller than 19px bold or 24px regular
  • All text on colored backgrounds must pass WCAG AA contrast minimum

3. Typography Rules

Font family

Booster uses system fonts; no custom typeface is loaded.

font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;

Type scale

NameSizeWeightColorUsage
Hero32px300Gray 800Step flows, welcome screens; use sparingly
H126px600Gray 800Page title, modal title
H220px600Gray 800Section headings
H316px600Gray 800Sub-section headings
H414px700Gray 800Minor headings
H512px700Gray 800ALL CAPS only
Body (default)14px400Gray 800Base body text
Body (small)12px400Gray 800Secondary/supporting text
Body (x-small)11px400Gray 800Special cases only

Typography rules

  • Base font size: 14px, weight 400
  • Line height: 1.6 (unitless)
  • Line length: 45-75 characters for optimal readability
  • Font weight and size convey hierarchy; do not use bold arbitrarily
  • H5 is always all-caps; no other heading level uses all-caps

4. Component Inventory

All components are ZUI web components with a zui-* tag prefix. Always use these components; do not build custom replacements. If a component doesn't exist, flag it.

ComponentTagDocsReference (where they live in source code)
Breadcrumbszui-breadcrumb
zui-breadcrumbs
Breadcrumbshttps://cdn.zywave.com/@zywave/zui-breadcrumbs@latest/dist/zui-breadcrumb.js
https://cdn.zywave.com/@zywave/zui-breadcrumbs@latest/dist/zui-breadcrumbs.js
https://cdn.zywave.com/@zywave/zui-breadcrumbs@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-breadcrumbs@latest/lab.html
https://cdn.zywave.com/@zywave/zui-breadcrumbs@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-breadcrumbs@latest/test/zui-breadcrumbs.test.ts
Button Dropdownzui-button-dropdownButton dropdownshttps://cdn.zywave.com/@zywave/zui-button@latest/dist/zui-button-dropdown.js
https://cdn.zywave.com/@zywave/zui-button@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-button@latest/lab.html
https://cdn.zywave.com/@zywave/zui-button@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-button@latest/test/zui-button-dropdown.test.ts
Button Groupzui-button-groupButton groupshttps://cdn.zywave.com/@zywave/zui-button@latest/dist/zui-button-group.js
https://cdn.zywave.com/@zywave/zui-button@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-button@latest/lab.html
https://cdn.zywave.com/@zywave/zui-button@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-button@latest/test/zui-button-group.test.ts
Buttonzui-buttonButtonshttps://cdn.zywave.com/@zywave/zui-button@latest/dist/zui-button.js
https://cdn.zywave.com/@zywave/zui-button@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-button@latest/lab.html
https://cdn.zywave.com/@zywave/zui-button@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-button@latest/test/zui-button.test.ts
Cardzui-cardCardshttps://cdn.zywave.com/@zywave/zui-card@latest/dist/zui-card.js
https://cdn.zywave.com/@zywave/zui-card@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-card@latest/lab.html
https://cdn.zywave.com/@zywave/zui-card@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-card@latest/test/zui-card.test.ts
Checkboxzui-checkboxCheckboxeshttps://cdn.zywave.com/@zywave/zui-checkbox@latest/dist/zui-checkbox.js
https://cdn.zywave.com/@zywave/zui-checkbox@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-checkbox@latest/lab.html
https://cdn.zywave.com/@zywave/zui-checkbox@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-checkbox@latest/test/zui-checkbox.test.ts
Dialogzui-dialogDialogshttps://cdn.zywave.com/@zywave/zui-dialog@latest/dist/zui-dialog.js
https://cdn.zywave.com/@zywave/zui-dialog@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-dialog@latest/lab.html
https://cdn.zywave.com/@zywave/zui-dialog@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-dialog@latest/test/zui-dialog.test.ts
Dropdown (simple)zui-selectDropdown selectshttps://cdn.zywave.com/@zywave/zui-select@latest/dist/zui-select.js
https://cdn.zywave.com/@zywave/zui-select@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-select@latest/lab.html
https://cdn.zywave.com/@zywave/zui-select@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-select@latest/test/zui-select.test.ts
Dropdown Multi Selectzui-select-dropdownDropdown multi-selectshttps://cdn.zywave.com/@zywave/zui-select@latest/dist/zui-select-dropdown.js
https://cdn.zywave.com/@zywave/zui-select@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-select@latest/lab.html
https://cdn.zywave.com/@zywave/zui-select@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-select@latest/test/zui-select-dropdown.test.ts
Dropdown Selectzui-select-dropdownDropdown selectshttps://cdn.zywave.com/@zywave/zui-select@latest/dist/zui-select-dropdown.js
https://cdn.zywave.com/@zywave/zui-select@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-select@latest/lab.html
https://cdn.zywave.com/@zywave/zui-select@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-select@latest/test/zui-select-dropdown.test.ts
Dropdown Optionzui-option
zui-option-group
https://cdn.zywave.com/@zywave/zui-select@latest/dist/zui-option.js
https://cdn.zywave.com/@zywave/zui-select@latest/dist/zui-option-group.js
https://cdn.zywave.com/@zywave/zui-select@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-select@latest/lab.html
https://cdn.zywave.com/@zywave/zui-select@latest/docs/demo.html
Error Pagezui-error-pageError pageshttps://cdn.zywave.com/@zywave/zui-error-page@latest/dist/zui-error-page.js
https://cdn.zywave.com/@zywave/zui-error-page@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-error-page@latest/lab.html
https://cdn.zywave.com/@zywave/zui-error-page@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-error-page@latest/test/zui-error-page.test.ts
Expanderzui-expander
zui-expander-group
Expandershttps://cdn.zywave.com/@zywave/zui-expander@latest/dist/zui-expander.js
https://cdn.zywave.com/@zywave/zui-expander@latest/dist/zui-expander-group.js
https://cdn.zywave.com/@zywave/zui-expander@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-expander@latest/lab.html
https://cdn.zywave.com/@zywave/zui-expander@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-expander@latest/test/zui-expander.test.ts
File Inputzui-input-fileFile inputshttps://cdn.zywave.com/@zywave/zui-input@latest/dist/zui-input-file.js
https://cdn.zywave.com/@zywave/zui-input@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-input@latest/lab.html
https://cdn.zywave.com/@zywave/zui-input@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-input@latest/test/zui-input-file.test.ts
Flyoutzui-flyoutFlyoutshttps://cdn.zywave.com/@zywave/zui-flyout@latest/dist/zui-flyout.js
https://cdn.zywave.com/@zywave/zui-flyout@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-flyout@latest/lab.html
https://cdn.zywave.com/@zywave/zui-flyout@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-flyout@latest/test/zui-flyout.test.ts
Formfieldzui-formfieldFormfieldshttps://cdn.zywave.com/@zywave/zui-formfield@latest/dist/zui-formfield.js
https://cdn.zywave.com/@zywave/zui-formfield@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-formfield@latest/lab.html
https://cdn.zywave.com/@zywave/zui-formfield@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-formfield@latest/test/zui-formfield.test.ts
Iconszui-iconIconshttps://cdn.zywave.com/@zywave/zui-icons@latest/dist/zui-icon.js
https://cdn.zywave.com/@zywave/zui-icons@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-icons@latest/lab.html
https://cdn.zywave.com/@zywave/zui-icons@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-icons@latest/test/zui-icons.test.ts
Logozui-logo
zui-logos
https://cdn.zywave.com/@zywave/zui-logo@latest/dist/zui-logo.js
https://cdn.zywave.com/@zywave/zui-logo@latest/dist/zui-logos.js
https://cdn.zywave.com/@zywave/zui-logo@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-logo@latest/lab.html
https://cdn.zywave.com/@zywave/zui-logo@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-logo@latest/test/zui-logo.test.ts
Multipickerzui-multipicker
zui-multipicker-item
Multipickershttps://cdn.zywave.com/@zywave/zui-multipicker@latest/dist/zui-multipicker.js
https://cdn.zywave.com/@zywave/zui-multipicker@latest/dist/zui-multipicker-item.js
https://cdn.zywave.com/@zywave/zui-multipicker@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-multipicker@latest/lab.html
https://cdn.zywave.com/@zywave/zui-multipicker@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-multipicker@latest/test/zui-multipicker.test.ts
Notifierzui-notifierNotifiershttps://cdn.zywave.com/@zywave/zui-notifier@latest/dist/zui-notifier.js
https://cdn.zywave.com/@zywave/zui-notifier@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-notifier@latest/lab.html
https://cdn.zywave.com/@zywave/zui-notifier@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-notifier@latest/test/zui-notifier.test.ts
Pagerzui-pagerPagershttps://cdn.zywave.com/@zywave/zui-pager@latest/dist/zui-pager.js
https://cdn.zywave.com/@zywave/zui-pager@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-pager@latest/lab.html
https://cdn.zywave.com/@zywave/zui-pager@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-pager@latest/test/zui-pager.test.ts
Pickerzui-picker
zui-picker-item
Pickershttps://cdn.zywave.com/@zywave/zui-picker@latest/dist/zui-picker.js
https://cdn.zywave.com/@zywave/zui-picker@latest/dist/zui-picker-item.js
https://cdn.zywave.com/@zywave/zui-picker@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-picker@latest/lab.html
https://cdn.zywave.com/@zywave/zui-picker@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-picker@latest/test/zui-picker.test.ts
PopoverPopovers
Progress Barzui-progressProgress barshttps://cdn.zywave.com/@zywave/zui-progress@latest/dist/zui-progress.js
https://cdn.zywave.com/@zywave/zui-progress@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-progress@latest/lab.html
https://cdn.zywave.com/@zywave/zui-progress@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-progress@latest/test/zui-progress.test.ts
Radio Buttonzui-radio
zui-radio-group
Radio buttonshttps://cdn.zywave.com/@zywave/zui-radio@latest/dist/zui-radio.js
https://cdn.zywave.com/@zywave/zui-radio@latest/dist/zui-radio-group.js
https://cdn.zywave.com/@zywave/zui-radio@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-radio@latest/lab.html
https://cdn.zywave.com/@zywave/zui-radio@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-radio@latest/test/zui-radio.test.ts
Searchzui-searchSearchhttps://cdn.zywave.com/@zywave/zui-search@latest/dist/zui-search.js
https://cdn.zywave.com/@zywave/zui-search@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-search@latest/lab.html
https://cdn.zywave.com/@zywave/zui-search@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-search@latest/test/zui-search.test.ts
Shellzui-shell
zui-shell-apps
zui-shell-apps-item
zui-shell-banner
zui-shell-content
zui-shell-content-actionbar
zui-shell-context-switcher
zui-shell-footer
zui-shell-help
zui-shell-nav
zui-shell-nav-item
zui-shell-topbar
zui-shell-user
Shellhttps://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-apps.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-apps-item.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-banner.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-content.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-content-actionbar.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-context-switcher.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-footer.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-help.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-nav.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-nav-item.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-topbar.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/zui-shell-user.js
https://cdn.zywave.com/@zywave/zui-shell@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-shell@latest/lab.html
https://cdn.zywave.com/@zywave/zui-shell@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-shell@latest/test/zui-shell.test.ts
Sliderzui-sliderSlidershttps://cdn.zywave.com/@zywave/zui-slider@latest/dist/zui-slider.js
https://cdn.zywave.com/@zywave/zui-slider@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-slider@latest/lab.html
https://cdn.zywave.com/@zywave/zui-slider@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-slider@latest/test/zui-slider.test.ts
Spinnerzui-spinner
zui-spinner-overlay
Spinnershttps://cdn.zywave.com/@zywave/zui-spinner@latest/dist/zui-spinner.js
https://cdn.zywave.com/@zywave/zui-spinner@latest/dist/zui-spinner-overlay.js
https://cdn.zywave.com/@zywave/zui-spinner@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-spinner@latest/lab.html
https://cdn.zywave.com/@zywave/zui-spinner@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-spinner@latest/test/zui-spinner.test.ts
https://cdn.zywave.com/@zywave/zui-spinner@latest/test/zui-spinner-overlay.test.ts
SVG Utilityzui-svgSVG utilshttps://cdn.zywave.com/@zywave/zui-svg@latest/dist/zui-svg.js
https://cdn.zywave.com/@zywave/zui-svg@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-svg@latest/lab.html
https://cdn.zywave.com/@zywave/zui-svg@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-svg@latest/test/zui-svg.test.ts
Tablezui-table
zui-table-cell
zui-table-footer
zui-table-row
zui-table-topbar
Tableshttps://cdn.zywave.com/@zywave/zui-table@latest/dist/zui-table.js
https://cdn.zywave.com/@zywave/zui-table@latest/dist/zui-table-cell.js
https://cdn.zywave.com/@zywave/zui-table@latest/dist/zui-table-footer.js
https://cdn.zywave.com/@zywave/zui-table@latest/dist/zui-table-row.js
https://cdn.zywave.com/@zywave/zui-table@latest/dist/zui-table-topbar.js
https://cdn.zywave.com/@zywave/zui-table@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-table@latest/lab.html
https://cdn.zywave.com/@zywave/zui-table@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-table@latest/test/zui-table.test.ts
Tabszui-tab
zui-tabs
Tabshttps://cdn.zywave.com/@zywave/zui-tabs@latest/dist/zui-tab.js
https://cdn.zywave.com/@zywave/zui-tabs@latest/dist/zui-tabs.js
https://cdn.zywave.com/@zywave/zui-tabs@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-tabs@latest/lab.html
https://cdn.zywave.com/@zywave/zui-tabs@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-tabs@latest/test/zui-tabs.test.ts
Tagzui-tagTagshttps://cdn.zywave.com/@zywave/zui-tag@latest/dist/zui-tag.js
https://cdn.zywave.com/@zywave/zui-tag@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-tag@latest/lab.html
https://cdn.zywave.com/@zywave/zui-tag@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-tag@latest/test/zui-tag.test.ts
Text Inputzui-inputText inputshttps://cdn.zywave.com/@zywave/zui-input@latest/dist/zui-input.js
https://cdn.zywave.com/@zywave/zui-input@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-input@latest/lab.html
https://cdn.zywave.com/@zywave/zui-input@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-input@latest/test/zui-input.test.ts
Textareazui-textareaTextareashttps://cdn.zywave.com/@zywave/zui-textarea@latest/dist/zui-textarea.js
https://cdn.zywave.com/@zywave/zui-textarea@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-textarea@latest/lab.html
https://cdn.zywave.com/@zywave/zui-textarea@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-textarea@latest/test/zui-textarea.test.ts
Togglezui-toggleToggleshttps://cdn.zywave.com/@zywave/zui-toggle@latest/dist/zui-toggle.js
https://cdn.zywave.com/@zywave/zui-toggle@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-toggle@latest/lab.html
https://cdn.zywave.com/@zywave/zui-toggle@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-toggle@latest/test/zui-toggle.test.ts
Tooltipzui-tooltipTooltipshttps://cdn.zywave.com/@zywave/zui-tooltip@latest/dist/zui-tooltip.js
https://cdn.zywave.com/@zywave/zui-tooltip@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-tooltip@latest/lab.html
https://cdn.zywave.com/@zywave/zui-tooltip@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-tooltip@latest/test/zui-tooltip.test.ts
Wellzui-wellWellshttps://cdn.zywave.com/@zywave/zui-well@latest/dist/zui-well.js
https://cdn.zywave.com/@zywave/zui-well@latest/dist/custom-elements.json
https://cdn.zywave.com/@zywave/zui-well@latest/lab.html
https://cdn.zywave.com/@zywave/zui-well@latest/docs/demo.html
https://cdn.zywave.com/@zywave/zui-well@latest/test/zui-well.test.ts

Key component rules

Buttons (zui-button)

  • Primary button: one per page or section maximum
  • Use link button (type="link") for cancel actions and row-level table actions
  • Use destructive variant for delete/irreversible actions; always pair with a confirmation dialog
  • Button labels: sentence case, start with a verb, 1-3 words, no punctuation

Button Dropdown (zui-button-dropdown)

  • Use for 3+ related actions in space-constrained contexts, especially tables
  • Do not use when actions are unrelated

Dropdown Select (zui-select-dropdown)

  • Use when the user is making a selection, not executing an action
  • Use Multipicker (zui-multipicker) for multi-select scenarios

Tables (zui-table)

  • Use pagination by default; do not use infinite scroll
  • Use link buttons for row-level actions
  • Use button dropdown for 3+ row-level actions

Dialogs (zui-dialog)

  • Use for confirmations, especially destructive actions
  • Always provide a cancel option

5. Layout Principles

Formal layout specs are in progress. Reference existing product pages for layout patterns until specs are finalized.

Draft specs (use as reference)

General layout rules

  • Page background: Gray 50 (#F4F4F6)
  • Card/surface background: White (#FFFFFF)
  • Buttons: right-aligned in page headers and at the bottom of content areas
  • Primary button appears above secondary in vertical stacks (mobile)
  • Cancel actions use link button; never secondary button
  • Full-width buttons only in mobile/narrow layouts or single-action forms

Patterns


6. Do's and Don'ts

DoDon't
Use zui-* components for all UI; check Booster before building anythingInvent custom components when a ZUI equivalent exists
Use one primary button per page or sectionUse multiple primary buttons; they compete and confuse
Use Blue 500 to guide users to actionsCreate a "sea of blue" by highlighting too many actions
Use sentence case for all button labelsUse title case or ALL CAPS in buttons
Use Red 500 for errors and destructive actionsUse red for anything other than error/destructive
Use link buttons in table rowsUse primary or secondary buttons for row-level table actions
Pair destructive actions with a confirmation dialogAllow irreversible actions without confirmation
Use system fonts; no custom typefacesImport or load custom fonts
Flag any gap where a needed component doesn't existSilently build a custom component without documenting it

7. Responsive Behavior

  • Stack buttons vertically on screens narrower than 600px
  • Primary button appears above secondary in vertical stacks
  • Full-width buttons recommended for mobile forms
  • Avoid full-width buttons on full-page desktop layouts or next to other full-width elements
  • Touch targets must be large enough for mobile interaction

8. Voice and Tone

  • Sentence case everywhere: "Save changes" not "Save Changes"
  • No punctuation on button labels or headings
  • Be direct: "Delete" not "Are you sure you want to delete?"
  • Avoid articles: "Add user" not "Add a user"
  • Start button labels with a verb: "Create report", "Send email", "Delete policy"
  • Full writing style guide: https://booster.zywave.dev/design-system/voice-and-tone/writing-style-guide/

9. Agent Prompt Guide

When building UI for a Zywave product using this design system:

  1. Check the component list above first. If a zui-* component exists for what you need, use it. Do not build a custom version.
  2. If no component exists, flag it explicitly; state what's missing and what you built instead so it can be added to the Booster backlog.
  3. Use Blue 500 (#2777D3) as the primary interactive color.
  4. Use Gray 800 (#31313A) for all body text.
  5. Use Gray 50 (#F4F4F6) for page backgrounds and White for surfaces.
  6. Never use Zywave Green on interactive elements; it's brand-only.
  7. One primary button per page. Cancel = link button. Destructive = destructive variant + confirmation dialog.
  8. System fonts only. No Google Fonts, no custom imports.
  9. Reference the draft layout specs for spacing and page structure until formal specs are published.
  10. All text on colored backgrounds must pass WCAG AA contrast.
  11. Track any component gaps in the Booster UI Guidelines gaps log: https://zywave.atlassian.net/wiki/spaces/booster/pages/176249208945

Last updated: April 2026
Source: https://booster.zywave.dev
This file is a living document; update when specs are finalized or new components are added.