artcraft/frontend/libs/icons
Brandon Thomas 0004726a36 ArtCraft Desktop (fresh start)
This is a fresh start for the `artcraft` repo.

The old monorepo, which included our web API gateway, job services, SRE
tools, various frontends, and more has moved to `artcraft-services`

You can find the full git history here:

https://github.com/storytold/artcraft-services

This change was motivated by the fact that the entire git history was
hundreds of gigabytes in size, which is unwieldy for anyone not in the
core team that doesn't care about support services outside of the core
artcraft app.

We wanted to keep this repo in its well-known place since we already
have users and activity here.

Please update your remotes to either `artcraft-services` or make a fresh
clone of this repo.

History can be found at the artcraft-services repo.
2026-09-11 14:19:51 -04:00
..
src ArtCraft Desktop (fresh start) 2026-09-11 14:19:51 -04:00
README.md ArtCraft Desktop (fresh start) 2026-09-11 14:19:51 -04:00
package.json ArtCraft Desktop (fresh start) 2026-09-11 14:19:51 -04:00
tsconfig.json ArtCraft Desktop (fresh start) 2026-09-11 14:19:51 -04:00
tsconfig.lib.json ArtCraft Desktop (fresh start) 2026-09-11 14:19:51 -04:00
vite.config.ts ArtCraft Desktop (fresh start) 2026-09-11 14:19:51 -04:00

README.md

@storyteller/icons

Companion lib for Lucide icons. Regular icons come straight from lucide-react — import them directly:

import { PlayIcon } from 'lucide-react';

<PlayIcon className="h-4 w-4" />

This lib holds the pieces Lucide doesn't provide:

  • dynamic-icon.tsx — <DynamicIcon icon={active ? PauseIcon : PlayIcon} /> for icons chosen at runtime (item.icon, conditional toggles). Static call sites should render the Lucide component directly.
  • brand-icons.tsx — brand logos (DiscordIcon, TiktokIcon, ...) as inlined SVG paths; Lucide ships no brand marks by policy.
  • custom-icons.tsx — icons with no Lucide equivalent (HighDefinitionIcon / StandardDefinitionIcon quality badges), drawn in Lucide's stroke style.

Sizing: each app's global stylesheet sets .lucide { width/height: 1.2em } so Lucide icons scale with the surrounding font size (1.2em because Lucide draws on a 20px grid inside its 24px viewBox — the visible mark then fills a full em, matching the previous solid-glyph icon sizes). Explicit Tailwind sizing classes still win. Brand icons from this lib are full-bleed paths and default to a plain 1em.