@ware-square/logo
v0.1.1
Published
Isometric hex-in-hex logo system — geometry, palette, and stroke rules shared verbatim between static icon export and the live React component. Ported from [Binorama](https://github.com/justinware/binorama), where it was proven out (multi-letter support,
Readme
@ware-square/logo
Isometric hex-in-hex logo system — geometry, palette, and stroke rules shared verbatim between static icon export and the live React component. Ported from Binorama, where it was proven out (multi-letter support, theming via Radix accent colors, small-size simplification tiers).
What's here
src/brand/— framework-agnostic construction logic (buildLogoLayers, geometry, palette, tiers, types) plus the bakedglyphPaths.generated.tsglyph-outline table. Pure functions, no Node or DOM dependency — safe to import from a browser bundle.src/Logo.tsx— the React component. Renders via a data-URI<img>, not inline<svg>(see comment in the file for why). Expects a--scalingCSS custom property in scope (set by Radix Themes'<Theme scaling>) — if you're not using Radix Themes, override--scaling: 1yourself.scripts/— Node-only, usesopentype.jsto read the font directly:generate-icon.ts(bin:generate-icon) — writes static SVG icon files todesign/in whatever project you run it from.generate-favicons.ts(bin:generate-favicons) — rasterizes favicons/PWA icons topublic/in whatever project you run it from.generate-glyph-data.ts— maintainer-only, not published as a bin. Regeneratessrc/brand/glyphPaths.generated.ts(the table<Logo>reads from). Run this inside theware-squaremonorepo whenever a new brand needs a letter that isn't already baked in, then bump the package version and publish.
No build step: the package ships raw TypeScript (main/exports/types all point at .ts files under src/). This works because every intended consumer is a Vite or Bun project that already transpiles its dependencies' TS — see the root README before publishing anywhere that assumption doesn't hold.
Usage in a consuming project
bun add @ware-square/logoimport { Logo } from '@ware-square/logo/react';
<Logo accent="indigo" letter="W" size={32} />bunx generate-icon --letter=W indigo blue
bunx generate-favicons indigoletter must already exist in src/brand/glyphPaths.generated.ts for <Logo> (currently: B, W, T, V) — generate-icon/generate-favicons have no such restriction since they parse the font directly at generation time.
License
UNLICENSED for now — set an explicit license before publishing publicly.
