Icons
Single source of truth for app icons, the web manifest, and the social-share card.
@halostack/icons is the single source of truth for the app's icons — favicons,
the touch icon, and the PWA icons — along with the web manifest
(site.webmanifest) and the social-share card (og-image.png). It's a
dependency-free package: nothing but the canonical assets under src/assets/,
exposed through the ./assets/* export. Apps don't commit their own copies of
these files; instead they sync from here. The sync script that copies a chosen
subset into a consumer's directory (for example, an app's public/) lives in
@halostack/scripts at tools/scripts/src/commands/sync-icons.ts, and it resolves the
assets through that same ./assets/* export.
Structure
src/assets/— the canonical icon files (favicon.ico,favicon.svg, and so on).
Importing / using
The assets are reachable through the exports map at @halostack/icons/assets/*,
which works both for bundlers and for the @halostack/scripts sync script. A
consumer wires the sync into its package lifecycle hooks so the icons land in
place automatically on install, dev, and build:
The script's --assets flag (use src=dst to rename a file) overrides the
default set; omit it to sync the full default set. A consumer should gitignore
the synced copies — they're derived artifacts, and @halostack/icons remains the
source of truth.
Conventions
To add or update an icon, edit the files under src/assets/ — never the synced
copies in a consumer. Keep the package dependency-free; the canonical default
asset list lives alongside the sync script in @halostack/scripts. And when you
add a new top-level export folder, give it a matching exports entry.