Read as Markdown ↗

tiny-isprite 2.2.0 — package quick start

The npm package generates SVG sprites and provides a React Icon component. The separate online editor recolors SVGs and exports optional fill animations. You can use the package without opening the editor. CLI: Node.js 18+. React component: React 17, 18 or 19.

Install and generate

npm install tiny-isprite@2.2.0

Create icons/star.svg with a viewBox:

<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
  <path fill="currentColor" d="M12 2L22 22H2Z"/>
</svg>

From the project root:

npx build-sprite ./icons ./public/sprite.svg --manifest ./src/generated/sprite.js

In a React component saved under src/:

import { Icon } from "tiny-isprite";
import sprite from "./generated/sprite.js";

export function Star() {
  return (
    <Icon name="star" spriteUrl={sprite.url} prefix={sprite.prefix} size={32} />
  );
}

Serve public/ at your site's root. The generator writes a mutable sprite.svg alias, a content-hashed SVG and an importable manifest. Use the manifest URL to pick up regenerated sprites; do not hardcode an old hash. name is the source filename without .svg or the symbol prefix. spriteUrl enables external mode.

Choose a color mode

Goal CLI options Result
Theme monochrome fills with CSS color Default options Monochrome explicit fills become currentColor; multicolor icons keep their colors.
Keep the original colors --preserve-colored Preserve monochrome fills too; multicolor icons are already preserved by default.
Edit fills and strokes through CSS variables --use-css-vars (monochrome), or --use-css-vars --all (all icons) Generate editable named paint variables and a stylesheet. Native currentColor and paint-server references remain unchanged.

Useful CLI flags

  • --watch: regenerate when source SVG files change.
  • --prefix <prefix>: symbol prefix, default icon-.
  • --public-path <url>: public asset directory, default /; end with /.
  • --manifest <file>: location for the generated importable module.
  • --preserve-colored: preserve original monochrome fills.
  • --use-css-vars: generate editable variables for monochrome icons.
  • --all: with --use-css-vars, generate variables for all icon colors.
  • --minify: collapse SVG whitespace.

For example:

npx build-sprite ./icons ./public/assets/sprite.svg --manifest ./src/generated/sprite.js --public-path /assets/ --use-css-vars --all --minify

The manifest gets cssUrl when CSS-variable generation is enabled by --use-css-vars or --all. Load that stylesheet in your app, for example <link rel="stylesheet" href={sprite.cssUrl} />. Override generated variable names on the Icon or its wrapper. Native currentColor inherits CSS color.

External SVG use must be served from the same origin as the page for reliable browser support. An asset CDN on another origin may be blocked by the browser; serve the sprite through your own origin or an origin-preserving proxy.

Icon accepts className, including Tailwind classes for currentColor. The npm Icon does not accept a style prop; apply CSS variables through a class or styled wrapper. The editor's standalone generated React component has a separate API. TypeScript declarations are included; import the exported type with import type { IconProps } from 'tiny-isprite'.

Browser generation API

import { buildSpriteContent } from "tiny-isprite/browser";
const { sprite, css } = await buildSpriteContent({
  icons: [{ name: "star.svg", content: trustedSvgMarkup }],
  prefix: "icon-",
  useCssVars: true,
});

This API returns strings; it does not sanitize untrusted SVG, write files or provide content-hashed delivery. The caller handles these responsibilities.

Editor and agent access

Open the editor. The editor needs JavaScript. Its WebMCP commands additionally require a compatible browser/client; a search-only or HTTP-fetch agent cannot execute them. Plain HTTP readers can use this guide, llms.txt and the normal static homepage. Requests with Accept: text/markdown also receive Markdown on the homepage, documentation, editor entry and Orbit demo. The npm Icon API does not include the editor's animation runtime.