@tdacorp/signal-tokens
v0.1.1
Published
SIGNAL's design tokens as a versioned npm package: load it and stock shadcn components inherit SIGNAL automatically, no fork required.
Downloads
14
Readme
@tdacorp/signal-tokens
SIGNAL's design tokens (graphite ramp, electric-lime accent, both acts) plus the shadcn-over-SIGNAL alias bridge, as a versioned npm package. Load it and stock shadcn components inherit SIGNAL automatically, no fork required.
SIGNAL itself is defined in brand/architecture/brand-architecture.md in the
TDACorp workspace. This package implements it; it does not own or redefine it.
Install
npm i @tdacorp/signal-tokensUse
Import the barrel after your Tailwind entry, in your app's global CSS:
@import "tailwindcss";
@import "@tdacorp/signal-tokens/signal.css";That one import chains through three layers:
| Layer | Import | Holds |
|---|---|---|
| Barrel (default) | @tdacorp/signal-tokens/signal.css | core + acts + shadcn, everything below |
| Core | @tdacorp/signal-tokens/core.css | the raw ramp: colour, radius, motion, type faces |
| Acts | @tdacorp/signal-tokens/acts.css | the --sig-* semantic layer, both acts |
| shadcn bridge | @tdacorp/signal-tokens/shadcn.css | shadcn's variable names aliased onto --sig-* |
| Compat (optional) | @tdacorp/signal-tokens/compat-unprefixed.css | bare --bg/--surface/… names, for a SIGNAL-native consumer; mutually exclusive with the shadcn bridge, not additive to it |
Once loaded, any stock shadcn component — installed with a plain
shadcn add card, unforked — renders SIGNAL-styled, because it's already
written against the variable names the shadcn bridge redefines
(bg-card, text-muted-foreground, border-border, …).
Supply the two font variables yourself, via next/font or equivalent —
this package wires the fallback stack but does not load the fonts:
// next/font/google, variable names matter: the tokens reference these exactly
const plexSans = IBM_Plex_Sans({ variable: "--font-plex-sans", ... });
const plexMono = IBM_Plex_Mono({ variable: "--font-plex-mono", ... });Acts
Dark is the unconditional default. Invert any subtree, or the whole document, with:
<html data-act="light">What this package deliberately does not do
- Does not ship components. Signal's shadcn registry does that
separately — see the signal repo
for
@signal/button,@signal/input,@signal/select, and the sharedcontrol-sizemap, the handful of genuine deltas tokens can't express. - Does not redefine
--primaryas the lime. It resolves to a neutral raised surface; the accent is reachable through an explicitaccentvariant on the components that define one. SIGNAL's own rule is that the accent is used surgically, never as a field. - Does not invent values. Every token here traces to
products/tdacorp-site/src/app/globals.css, SIGNAL's canonical source, or is logged as a documented per-repo delta. Nothing is fabricated.
Versioning
Published versions are immutable once released. A token value changing is a version bump, picked up by any consumer on their own schedule — not a silent change to an already-built application.
License
Internal to TDACorp.
