Family Design System · Iconography
← Showcase Modals Repo v0.3.0-rc.6

Iconography

Canonical icon library used across the family design system. Every icon is a stroke-based SVG derived from Lucide's open-source set, optimized for inline use. Icons inherit color from currentColor and respect the brand's primary text color when used inside [data-brand] scopes.

Search
Size
Color
of icons shown · Click any icon to copy its name

Usage

1. Inline SVG (recommended)

Copy the icon name and inline the SVG. This is what every modal in the playground does.

<span class="ux-icon">
  <!-- icon: rotate-ccw -->
  <svg viewBox="0 0 24 24" fill="none" stroke="currentColor"
       stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
    <polyline points="1 4 1 10 7 10"/>
    <path d="M3.51 15a9 9 0 1 0 2.13-9.36L1 10"/>
  </svg>
</span>

2. Sizing rules

Use caseSizeStroke width
Inline with body text16px2
Buttons (sm)16px2
Buttons (md/lg)18–20px2
Modal header / nav20px2
Icon-only button20–24px2
Empty state32–48px1.5
Hero / feature highlight48–64px1.5

3. Color

Icons inherit color from currentColor. Set the parent's color to control them:

<span style="color: var(--brand-primary)">
  <svg ...>...</svg>
</span>

Within a [data-brand] scope, the brand-primary color comes from tokens automatically.

4. Accessibility

5. Adding a new icon

  1. Pick from lucide.dev — match the existing visual style (stroke-based, 24×24 viewBox, rounded caps)
  2. Add an entry to ICONS map in modals-playground.html and ICONS here in icons.html
  3. Open a PR — name the icon by semantic intent (warning not triangle-exclaim)
  4. The token validator will not block this; it's a docs-only change

6. Don't