Icons

Simple outlines for familiar interface actions. Each icon uses a 24-unit viewBox, rounded strokes and currentColor, so it scales with its dimensions and inherits the surrounding text color.

SVG source includes its size; no stylesheet is needed to use a copied icon.

Navigation

  • Chevron up

    SVG source
  • Chevron down

    SVG source
  • Chevron left

    SVG source
  • Chevron right

    SVG source
  • Arrow left

    SVG source
  • Arrow right

    SVG source
  • Menu

    SVG source
  • Close

    SVG source

Actions

  • Search

    SVG source
  • Plus

    SVG source
  • Minus

    SVG source
  • Edit

    SVG source
  • Trash

    SVG source
  • Download

    SVG source

Feedback

  • Check

    SVG source
  • Warning

    SVG source
  • Information

    SVG source
  • Error

    SVG source

Social and engagement

  • Heart / like

    SVG source
  • Comment

    SVG source
  • Share

    SVG source

Size and color

See Images: inline SVG icon utilities for the utility reference and optional module details.

Optional icon-16, icon-24, icon-32 and icon-48 set width and height in pixels, independent of the root font size. icon adds inline alignment and prevents flex shrinking. These utilities work with external SVG collections too; they do not change an icon's paths or stroke style.

HTML
<div class="flex flex-wrap gap-24 items-center clr-primary">
  <svg class="icon icon-16" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m4 12 5 5L20 6"/></svg>
  <svg class="icon icon-24" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m4 12 5 5L20 6"/></svg>
  <svg class="icon icon-32" width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m4 12 5 5L20 6"/></svg>
  <svg class="icon icon-48" width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m4 12 5 5L20 6"/></svg>
</div>

Icons with labels

Use visible text where possible. Decorative SVGs use aria-hidden="true" and focusable="false". Give an icon-only button its action name with aria-label; a tooltip alone is not its label.

HTML
<div class="flex flex-wrap gap-16 items-start">
  <details>
    <summary class="btn btn-secondary gap-8">Browse <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="m6 9 6 6 6-6"/></svg></summary>
    <nav aria-label="Browse topics" class="p-16"><a href="/docs/">Documentation</a></nav>
  </details>
  <a class="btn btn-primary gap-8" href="/docs/installation/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M4 12h16m-7-7 7 7-7 7"/></svg> Read installation guide</a>
  <button class="btn btn-secondary" type="button" aria-label="Search" disabled><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><circle cx="10.5" cy="10.5" r="6.5"/><path d="m16 16 4 4"/></svg></button>
  <a class="btn btn-secondary gap-8" href="/ui/"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M4 6h16M4 12h16M4 18h16"/></svg> UI navigation</a>
</div>

The native disclosure opens the Browse menu. The Search button demonstrates an accessible icon-only label; it is disabled because this example has no search service.

Engagement in a card

Leave room between related groups

Spacing makes the relationship between a heading, a paragraph and its supporting details easier to see.

12 likes 3 comments
HTML
<div class="clr-primary-bg p-24 border-r-16">
  <h3 class="fs-24 mt-0 mb-16">Leave room between related groups</h3>
  <p class="mb-24">Spacing makes the relationship between a heading, a paragraph and its supporting details easier to see.</p>
  <div class="flex flex-wrap gap-24 items-center" aria-label="Sample engagement counts">
    <span class="flex gap-8 items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M12 21 3.5 12.5a5.2 5.2 0 0 1 7.4-7.3L12 6.3l1.1-1.1a5.2 5.2 0 0 1 7.4 7.3L12 21Z"/></svg> 12 likes</span>
    <span class="flex gap-8 items-center"><svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.75" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true" focusable="false"><path d="M21 11a8.5 8.5 0 0 1-9 8H7l-5 3 1.5-6A7.6 7.6 0 0 1 3 11a9 9 0 0 1 18 0Z"/></svg> 3 comments</span>
  </div>
</div>

Use in HTML or Nunjucks

Copy an SVG and paste the markup directly into an HTML page or a Nunjucks include. Keep its xmlns, viewBox, paths and paint attributes. Set the surrounding text color, or add a color utility to the SVG. An external image loaded with img does not inherit the page's currentColor.

The CSS utilities live in the optional images module (src/_images.scss in the package), also included by the full library entry point. Import that partial alone for sizing without any icon assets. The gallery geometry lives only in workshop data at src/_data/icons.js; no collection or runtime dependency ships with the CSS package.

These original geometric outlines were created for this workshop and use the site repository's MIT license. No third-party SVG collection was imported. When using another library, keep its required attribution and license notices.