Docs menu

Get started

icons.json

dist/icons.json is the list of the whole set. It is built with the icons, so it always matches the files.

Fields

FieldValue
nameAlways "Bloom".
versionThe set’s version, 0.9.0 today.
sizeThe canvas, 24.
strokeThe stroke of the line styles, 1.5.
duotoneOpacityThe opacity of the secondary parts in the duotone styles, 0.5.
surfaceOpacityThe fill opacity of a single-object icon’s inside in Line Duotone, 0.2.
stylesThe five style folders under dist/.
filesThe path pattern, dist/<style>/<name>.svg.
motionFilesThe path pattern of the files that move on hover, dist/motion/<style>/<name>.svg, for the icons marked motion. See Hover motion.
motionCssdist/motion.css: every moving icon’s rules in one stylesheet, for pages that refuse inline styles.
categoriesEach category key with its title, in the order the icon browser lists them.
renamesNames that were renamed or removed, newest first: version, from, to (the icon to use now), kind and note. See Renamed icons.
iconsEvery icon as name, category and tags, sorted by name. "motion": true marks the 39 that also come in a moving version.

What it looks like

The start of the file, with the lists cut short:

{
  "name": "Bloom",
  "version": "0.9.0",
  "size": 24,
  "stroke": 1.5,
  "duotoneOpacity": 0.5,
  "surfaceOpacity": 0.2,
  "styles": ["linear", "line-duotone", "outline", "bold", "bold-duotone"],
  "files": "dist/<style>/<name>.svg",
  "motionFiles": "dist/motion/<style>/<name>.svg",
  "motionCss": "dist/motion.css",
  "categories": {
    "ui": "UI",
    "video": "Video",
    …
  },
  "renames": [
    {
      "version": "0.6.0",
      "from": "earth",
      "to": "globe",
      "kind": "removed",
      "note": "It looked almost the same as tennis-ball."
    },
    …
  ],
  "icons": [
    {
      "name": "air-conditioner",
      "category": "home",
      "tags": ["ac", "cooling", "climate", "appliance"]
    },
    {
      "name": "air-conditioner-waves",
      "category": "home",
      "tags": ["ac", "cooling", "airflow", "climate"]
    },
    …
  ]
}

Names and tags

A name says what the icon shows (gear, magnifier, tray-arrow-down). Tags carry the uses and other words for it (settings, search, download). To find an icon for a use, search the tags, not the names.

Read it from a script

import { readFile } from 'node:fs/promises';

const set = JSON.parse(await readFile('dist/icons.json', 'utf8'));
const forSettings = set.icons.filter((icon) => icon.tags.includes('settings'));
const paths = forSettings.map((icon) => `dist/linear/${icon.name}.svg`);