Brand·Icons v0.1.0-canary.0
· Documentation · v0.1.0-canary.0 · 5 chapters

Docs.

Everything you need to ship Brand Icons. Install, integrate, ship a smaller bundle, keep up with releases.

01 · Install

One command. Any framework.

Brand Icons ships as ESM-only npm packages, one component per icon. Pick your framework, pick your package manager — the CLI flags are identical.

shell
$ pnpm add @brand-icons/react

Requirements

  • React 19+, Vue 3.5+, Svelte 5+, or modern browser (Web Components)
  • Node 18+ for bundlers
  • ES Modules — no CJS fallback shipped

Packages

  • @brand-icons/react — React 19 components
  • @brand-icons/vue — Vue 3.5 components
  • @brand-icons/svelte — Svelte 5 components
  • @brand-icons/wc — framework-agnostic Web Components
02 · Usage

Import. Place. Style.

Every icon ships as a per-framework component with identical props — size, variant (color · mono), and an optional year to pin a historical millésime. Icons paint in currentColor when variant="mono". No CSS to load.

React

react
import { GitHubLatestIcon, NotionLatestIcon, LinearLatestIcon } from '@brand-icons/react';

export const Stack = () => (
  <div className="stack">
    <GitHubLatestIcon size={20} />
    <NotionLatestIcon size={20} />
    <LinearLatestIcon size={20} variant="mono" />
  </div>
);

Vue

vue
<script setup>
import { GitHubLatestIcon, NotionLatestIcon, LinearLatestIcon } from '@brand-icons/vue';
</script>

<template>
  <div class="stack">
    <GitHubLatestIcon :size="20" />
    <NotionLatestIcon :size="20" />
    <LinearLatestIcon :size="20" variant="mono" />
  </div>
</template>

Svelte

svelte
<script>
  import { GitHubLatestIcon, NotionLatestIcon, LinearLatestIcon } from '@brand-icons/svelte';
</script>

<div class="stack">
  <GitHubLatestIcon size={20} />
  <NotionLatestIcon size={20} />
  <LinearLatestIcon size={20} variant="mono" />
</div>

Web Components

html
<script type="module">
  import '@brand-icons/wc';
</script>

<div class="stack">
  <brand-icon name="github" size="20"></brand-icon>
  <brand-icon name="notion" size="20"></brand-icon>
  <brand-icon name="linear" size="20" variant="mono"></brand-icon>
</div>

Theming via CSS

css
.stack       { color: var(--ink); }
.stack:hover { color: var(--accent); }
/* every mono icon follows currentColor */

Accessibility

react
<GitHubLatestIcon size={20} title="Open on GitHub" />
// title sets <title> and role="img" on the <svg>
03 · Props

Seven props. No surprises.

Every icon component accepts the same flat prop set. The historical millésime is encoded in the component name itself — e.g. <Apple1976Icon /> vs <Apple1998Icon /> — not a runtime prop, so unused millésimes tree-shake away.

Prop
Type
Default
Description
size
number | string
"1em"
Width and height. Number → px, string → any CSS length.
variant
"color" | "mono"
"color"
Render the official multi-color or monochrome variant.
color
string
undefined
Override currentColor on mono fills when mode="mono".
mode
"as-is" | "bw" | "wb" | "mono"
"as-is"
Color transform — bw: grayscale, wb: inverted, mono: force mono variant.
background
boolean | string
undefined
Paint a rect behind the icon. true → brand color, string → any CSS color.
title
string
undefined
Sets <title> and role="img" on the <svg> root.
className
string
undefined
Forwarded to the <svg> root.
04 · Tree shaking

Pay for what you render.

Every package ships as ESM with "sideEffects": false and one entry per icon. Bundlers (esbuild, Rollup, Vite, Webpack 5, Rspack) drop every icon you don't import — sizes below are minified + gzip.

01.
1
icon
1.8 kB
02.
10
icons
9.4 kB
03.
47
brands · latest
41 kB
04.
103
every millésime
89 kB

// measured with esbuild · react + react-dom external · brotli ≈ 20% lower

Good — granular import

ok
import { GitHubLatestIcon, NotionLatestIcon } from '@brand-icons/react';
// bundler keeps only the two icons + shared runtime

Avoid — namespace import

warn
import * as Icons from '@brand-icons/react';
// referencing the namespace defeats tree-shaking — every icon ships
05 · Changelog

Every release. No drama.

No stable release yet. Track work on GitHub .

Search brand-icons

Find an icon or jump to a doc page.