Releases: code-sherpas/pharos-tokens
Release list
v0.4.0
Minor Changes
- 0d202cf: Flip default sans-serif family to Outfit-first + Inter fallback (Decision D8) and relax
engines.nodefrom>=24to>=22to unblock consumers that run Node 22 (e.g.alexandria-web-application). The primary-face loading stays on the consumer side — see RULES.md §8 for Next.js, Vite and email/PDF setups.
v0.3.0
Minor Changes
-
762be3b: rebalance
color.semantic.error.*shades for WCAG AA 4.5:1 on filled buttonsAlexandria's original
#ef2828— inherited aserror.fgthrough 0.2.x —
has contrast 4.19 vs white, which fails WCAG AA 4.5:1 for normal text.
pharos-react's Button destructive variant (14px regular-weight white
label on the red fill) tripped this in Chromatic a11y. Same precedent
assuccess.fgandinfo.fg, which were already darkened from their
Alexandria originals for the same reason in earlier releases.This release shifts the whole
error.*scale one step darker so the
rest state clears AA 4.5:1 and the hover / active states remain
distinct and monotonically darker:error.fg:oklch(54% 0.22 27.48)— wasoklch(61.28% 0.2305 27.48).
Contrast vs white goes from 4.19 → 5.68.error.fg-hover:oklch(47% 0.205 27.48)— wasoklch(54% 0.22 27.48).
Contrast vs white 7.26, passes AA 4.5:1 with margin.error.fg-active:oklch(40% 0.175 27.48)— wasoklch(46% 0.195 27.48).
Contrast vs white 9.69, passes AAA 7:1.error.bg: 6.3%-alpha tint tracks the newfgvalue so the
subtle-background relationship stays consistent with the fill color.
WCAG test matrix tightened
The test case for
error.fgvsonnow asserts againstAA_NORMAL
(4.5:1), notAA_LARGE(3:1). Same change applied tosuccess.fgand
info.fg, since their values already passed AA normal — this locks
in the contract so a future value tweak can't silently regress it.warning.fgstays onAA_LARGE(3:1) because its pairedonis
neutral-900(dark text on light amber). Passing AA normal there would
force the amber darker than any usable amber colour — industry
convention (Material, Carbon, Primer) is to accept AA large for
warning surfaces when combined with icons / heavier weight.Visual migration impact
Alexandria's dominant red shifts from bright
#ef2828toward a darker,
more serious-looking red (#d00113). This is the "DS quality above
current-Alexandria visual fidelity" principle applied: the WCAG
violation in Alexandria's red is fixed systemically in Pharos rather
than papered over per-component.
v0.2.0
Minor Changes
-
70a1695: add interactive state shades for
color.semantic.errorPharos previously exposed a single error color (
fg) plus its subtle
background (bg) and on-color (on). Interactive surfaces built with
fghad no darker shade to fall back on for:hover/:active,
which pushed consumers toward opacity or filter workarounds — neither
of which produce a proper darker-on-hover signal on a light surface.This change introduces two new tokens:
color.semantic.error.fg-hover— darker shade offgfor hover
states on filled destructive surfaces. Passes WCAG AA 4.5:1 against
error.on(white).color.semantic.error.fg-active— darker still, for pressed /
active states. Passes WCAG AAA 7:1 againsterror.on.
The new tokens emit as
--pharos-color-semantic-error-fg-hoverand
--pharos-color-semantic-error-fg-active. Existing tokens are
unchanged, so consumers can adopt them incrementally.Equivalent shades for
success,warningandinfowill follow when
pharos-react ships the corresponding filled semantic buttons.
v0.1.3
Patch Changes
- ce0b669: Clean up
.npmrc: dropstrict-peer-dependencies=falseandauto-install-peers=true. Both are pnpm-only keys that npm CLI logged as "Unknown project config" warnings in release logs, and pnpm 9+ already defaults toauto-install-peers=true. Removing them is safe (install + lockfile remain stable with the existingpnpm.overrides), leaving only one unavoidable pnpm-specific key (minimum-release-age=7).
v0.1.2
Patch Changes
-
09c4c7a: Upgrade CI runners and local-dev pinning to Node 24.15.0 LTS (Krypton). Node 24 ships with npm 11.7+, which implements the OIDC handshake required by npm Trusted Publishing natively — no manual
npm install -g npm@latestworkaround needed.package.jsonengines remains atnode: ">=22"so consumers that still run on Node 22 (e.g. Alexandria) are not forced to upgrade.
v0.1.0
Minor Changes
-
aa3194a: Initial release — tokens extracted from Alexandria and normalized per Fase 0 analysis.
Highlights:
- Full color scale in OKLCH:
color.neutral.{50..950},color.primary.{50..900},color.semantic.{success,error,warning,info}.{fg,bg,on},color.base.{white,black}. - Spacing aligned with the Tailwind default (
spacing.0throughspacing.24), removing Alexandria's redundantcs-*scale per decision D1. - Radius scale using the Tailwind default plus
radius.full(117 usages in Alexandria). - Typography with
font.size.sm(14px) as the body default per decision D3. - Z-index scale preserving Alexandria's semantic levels (
header,modal,drawer,dropdown,tooltip). - Duration (
fast/normal/slow) and easing (in/out/in-out) normalized from Alexandria's ad-hoc durations.
WCAG adjustments vs Alexandria source:
color.semantic.success.fgdarkened from#05b661(L=68%, failed AA) tooklch(52% 0.17 152)to pass WCAG AA 4.5:1 against white.color.semantic.info.fgdarkened from#009bf9(L=67%, failed AA) tooklch(52% 0.17 246)for the same reason.
Decisions applied (see
PLAN-pharos-alexandria.mdFase 0 checkpoint):- D1: no duplicated
cs-*scales. - D2: single red (
color.semantic.error.fg), nolaser-reddistinction. - D3: body typography = 14px.
- D6: no legacy deprecated tokens included.
- Full color scale in OKLCH:
Patch Changes
-
bc0691e: Batch major-version bumps of dev dependencies:
style-dictionary4 → 5 (also surfaces 17 previously-hidden tokens as CSS vars:--pharos-font-family-*,--pharos-font-weight-*,--pharos-font-line-height-*,--pharos-font-letter-spacing-*,--pharos-easing-*).typescript5 → 6.eslint9 → 10.eslint-config-prettier9 → 10.@types/node22 → 25.- GitHub Action
pnpm/action-setupv5 → v6.
No token values or naming change. Consumers gain access to font and easing tokens via CSS without any code change on their side.
-
2eabbcb: Fix two moderate transitive CVEs reached via vitest:
esbuild≤ 0.24.2 (dev-server request forgery, GHSA-67mh-4wv8-2f99) → pinned to^0.25.0via pnpm overrides.vite≤ 6.4.1 (path traversal in optimized deps.map, GHSA-4w7w-66w2-5vf9) → pinned to^7.0.0via pnpm overrides.
Bumped
vitest2.1.9 → 4.1.4 along the way. Test suite (22 cases) still passes.No runtime impact on the published package — pharos-tokens has zero runtime dependencies. This only affects the dev/test loop.