@blueforge-studio/os-icons

OS-logo icon set for the downloads-experience family — Apple, Windows, Linux, Android, ChromeOS, Ubuntu, Debian, Fedora. Framework-free catalog entry point plus React and Astro component builds and a <symbol> sprite.

Package Info

Latest Version0.1.0
LicenseMIT
Keywordsicons, svg, os, logo, sprite, astro, react
Repositorygit+https://github.com/blueforge-studio/blueforge-org.git
Author-
Homepagehttps://github.com/blueforge-studio/blueforge-org#readme
Bugs[object Object]

Versions

VersionPublished
0.1.02026-09-28

Per-version supply chain

VersionSigSBOMAtt
0.1.0

Click a version to view its details.

Supply chain

Provenance

Published by
web:14
When
2026-09-28T13:33:31Z
sha256 (registry-computed)
efde68ed0b1c2edc81688c793e9b374e5e911421bec23bef4cbf6e25a8f48e36

Observed by the registry at publish.

Claimed by the build

The publisher claimed nothing about its build.

Attachments

Signature
none
SBOM
none

Dependencies

Loading dependency graph...

README

@blueforge-studio/os-icons

OS-logo icon set for the downloads-experience family — 8 icons: Apple, Windows, Linux (Tux), Android, ChromeOS, Ubuntu, Debian, Fedora.

Artwork comes from simple-icons (CC0-1.0), pinned exactly in devDependencies (see scripts/sync-sources.mjs for why: windows was removed upstream in simple-icons v12, so the pin is load-bearing). Canonical 24×24 currentColor sources live in svg/*.svg; everything in dist/ is generated from them.

Install / use

Root entry (framework-free — catalog metadata + sprite):

import { OS_ICONS, SYMBOL_IDS, iconKeys, spriteSvg } from "@blueforge-studio/os-icons";

React (react >= 18 peer, optional):

import { AppleIcon } from "@blueforge-studio/os-icons/react";
<AppleIcon size={32} class="os-logo" title="macOS download" />

Astro:

---
import { WindowsIcon } from "@blueforge-studio/os-icons/astro";
// or a single file: import WindowsIcon from "@blueforge-studio/os-icons/astro/WindowsIcon.astro";
---
<WindowsIcon size={32} class="os-logo" />

Sprite (for the blueforge catalog and any <use>-based renderer):

import { spritePath, symbolIds } from "@blueforge-studio/os-icons/sprite";
import { spriteSvg } from "@blueforge-studio/os-icons";
// spriteSvg() -> full <svg><symbol id="bf-os-*">…</symbol></svg> string
// spritePath  -> "./dist/sprite/sprite.svg" (shipped file)

Scripts

ScriptWhat it does
pnpm sync-sourcesRegenerates svg/*.svg from the pinned simple-icons
pnpm buildgenerate → tsc → fix-esm-imports → verify-exports
pnpm testBuilds, then runs vitest against dist/
pnpm typechecktsc --noEmit over hand-written src/

Tests intentionally import from ../dist/… so a green test run also proves the package exports map matches the build output.

License

MIT (code). Icon artwork: CC0-1.0 via simple-icons.