Unigrid

CSS Framework

Icons

CSS-only SVG icons via mask-image. One class per icon, rhythm-aligned sizes, and NPS color modifiers. No JavaScript required.

Basic Usage

Each icon is a single class. The icon inherits the current text color via currentColor.

<i class="ug-icon-github"></i>
<i class="ug-icon-npm"></i>
<i class="ug-icon-bootstrap"></i>

Sizes

All sizes are aligned to the vertical rhythm (--ug-leading). Default size is 1 leading.

<i class="ug-icon-github ug-icon--xs"></i>
<i class="ug-icon-github ug-icon--sm"></i>
<i class="ug-icon-github"></i>
<i class="ug-icon-github ug-icon--lg"></i>
<i class="ug-icon-github ug-icon--xl"></i>
<i class="ug-icon-github ug-icon--2xl"></i>

Colors

By default icons use currentColor. Override with NPS color modifiers.

<i class="ug-icon-github ug-icon--lg ug-icon--black"></i>
<i class="ug-icon-github ug-icon--lg ug-icon--red"></i>
<i class="ug-icon-github ug-icon--lg ug-icon--brown"></i>
<i class="ug-icon-github ug-icon--lg ug-icon--green"></i>
<i class="ug-icon-github ug-icon--lg ug-icon--blue"></i>
<i class="ug-icon-github ug-icon--lg ug-icon--medium-gray"></i>

Inline with Text

Icons are inline-block and vertically centered, so they sit naturally alongside text.

Visit us on GitHub or install via npm.

GitHub
<p class="ug-body">
  Visit us on <i class="ug-icon-github"></i> GitHub or
  install via <i class="ug-icon-npm"></i> npm.
</p>

<a class="ug-btn" href="#">
  <i class="ug-icon-github ug-icon--white"></i> GitHub
</a>

Extending the Icon Set

The $ug-icons SCSS map is !default. Merge your own icons before importing Unigrid:

SCSS

@use "sass:map"; // Add custom icon before importing unigrid $ug-icons: map.merge($ug-icons, ( "mastodon": url("data:image/svg+xml,%3Csvg ...%3E%3C/svg%3E"), )); @use "unigrid.css/src/scss/unigrid" as *; // Now .ug-icon-mastodon is available
@use "sass:map";

// Add custom icon before importing unigrid
$ug-icons: map.merge($ug-icons, (
  "mastodon": url("data:image/svg+xml,%3Csvg ...%3E%3C/svg%3E"),
));

@use "unigrid.css/src/scss/unigrid" as *;

// Now .ug-icon-mastodon is available

For runtime extension without SCSS, use the optional JavaScript registry:

JavaScript

import { ugIcons, initIcons } from 'unigrid.css/src/js/icons.js'; // Add icon to the registry ugIcons.push({ name: 'mastodon', viewBox: '0 0 24 24', svg: '', }); // Inject SVG sprite (enables usage) initIcons();
import { ugIcons, initIcons } from 'unigrid.css/src/js/icons.js';

// Add icon to the registry
ugIcons.push({
  name: 'mastodon',
  viewBox: '0 0 24 24',
  svg: '<path d="M..."/>',
});

// Inject SVG sprite (enables <svg><use href="#ug-icon-mastodon"></svg> usage)
initIcons();

Available Icons

github

npm

bootstrap

Class Reference

Class Description
.ug-icon-github GitHub logo icon
.ug-icon-npm npm logo icon
.ug-icon-bootstrap Bootstrap logo icon
.ug-icon Base class (set mask-image yourself)
.ug-icon--xs Size: 0.5 × leading
.ug-icon--sm Size: 0.75 × leading
.ug-icon--md Size: 1 × leading (default)
.ug-icon--lg Size: 1.5 × leading
.ug-icon--xl Size: 2 × leading
.ug-icon--2xl Size: 3 × leading
.ug-icon--black Fill: $ug-black
.ug-icon--white Fill: $ug-white
.ug-icon--red Fill: $ug-red
.ug-icon--brown Fill: $ug-brown
.ug-icon--green Fill: $ug-green
.ug-icon--blue Fill: $ug-blue
.ug-icon--dark-gray Fill: $ug-dark-gray
.ug-icon--medium-gray Fill: $ug-medium-gray
.ug-icon--light-gray Fill: $ug-light-gray
.ug-icon--current Fill: currentColor (default)