Skip to content

Refresh Chart docs onto HIG 872906a9 candidate and drop HIG workarounds - #56

Merged
joeblau merged 2 commits into
mainfrom
hig-872906a9-refresh
Oct 15, 2026
Merged

joeblau merged 2 commits into
mainfrom
hig-872906a9-refresh

Conversation

@joeblau

@joeblau joeblau commented Oct 15, 2026

Copy link
Copy Markdown
Contributor

Summary

Moves the Chart docs onto the HIG 0.1.0-candidate.sha872906a9 tarballs, built from bloxwap/hig@872906a. It also removes the workarounds that the upstream fixes replace.

Part of bloxwap/hig#63 · Part of bloxwap/hig#64 · Part of bloxwap/hig#65 · Part of bloxwap/hig#66 · Part of bloxwap/hig#69

  • #66 roles: deletes apps/docs/styles/hig-roles.generated.css, its generator and its lint drift guard. The shell now uses the package role names (--hig-motion-duration-*, --hig-density-*-control, --hig-type-*-line-height). The CSS used --ease-spring, which was never defined; it now uses --hig-motion-easing-standard. npm run lint now fails on local role declarations and on the retired generated names.
  • #63 peers and recipes: deletes .npmrc (legacy-peer-deps=true). npm ci gives a single Radix tree (34 entries, none nested) and keeps the packages/chart workspace link. The install commands use the @bloxwap/hig-react/recipes/install-command entry, and the hero snippet uses recipes/code-window. Neither entry imports the overlay or any Radix peer.
  • #65 fonts: removes the .hig-button { font-family: var(--font-sans) } bridge. The browser test now checks that the button's first font family is a loaded Bloxwap face.
  • #64 TTFs: the web tokens tarball has no fonts any more (4,428,734 → 8,108 bytes). The OG card renderer (Satori) still needs two static TTFs, so it reads them from @bloxwap/hig-native-fonts, a build-time-only devDependency. This follows docs/migration/native.md.
  • #69 Callout/Tabs: <Callout> now passes ReactNode titles through (the generic fallback no longer replaces them) and maps note/idea to HIG note/tip. The local info/success edge CSS is deleted. A new keyboard check confirms that Tab from the selected tab lands on the install command <pre> and then on Copy, with no separate tabpanel stop.
  • hig#80 side effect: HIG buttons are now 44 px by default. On coarse pointers, the compact install and code regions set --hig-button to the comfortable 48 px target role, so the existing 48 px touch-target check still passes.

Before / after

Baseline is a3b0f6b (main), measured with the same Node 24 / Next 16.3.6 /chart export settings. Full data: docs/hig-adoption/hig-872906a9/size-report.json.

Measure Before After Delta
Vendored tarballs (bytes) 4,446,466 (3) 4,454,889 (4) +8,423
… web packages only (tokens + contracts + react) 4,446,466 34,514 −4,411,952
Lockfile entries 403 404 +1 (@bloxwap/hig-native-fonts)
Lockfile Radix entries (nested) 34 (0) 34 (0) 0, now without legacy-peer-deps
Export CSS bytes 152,712 163,176 +10,464
Export JS bytes 2,188,721 2,191,579 +2,858
Export fonts bytes 14,205,712 14,205,712 0
Export total bytes / files 29,686,679 / 827 29,701,348 / 827 +14,669 / 0
Generated role adapter 1,046 B — −1,046

The exported CSS is larger because HIG's stylesheet now carries the roles and Callout severities that the docs used to generate or patch locally. Total tarball bytes are flat only because the OG renderer still needs two static TTFs. Screenshots of 4 pages × 2 viewports, before and after, are in docs/hig-adoption/hig-872906a9/. They look the same except that desktop buttons are 4 px shorter (hig#80).

Validation (automated + browser; macOS, Node 24.10.0, npm 11.6.1, Chrome 155 via Playwright)

  • rm -rf node_modules && npm ci: exit 0, with no .npmrc. npm ls shows @bloxwap/chart -> ./packages/chart and reports nothing invalid or missing.
  • npm run docs:build: exit 0. Static export verified: 30 HTML pages, 1530 local links/assets, 25 social cards, /chart.
  • npm run docs:check, npm run lint, npm run typecheck: all exit 0.
  • npm test: 1869 tests, 1869 passed.
  • npm run docs:test: exit 0. Covers install tabs with a single tab stop, copy, fonts and motion, the distinctive playground demo (offline synthetic bars, settings/Escape, wheel), search, Callout, RTL/200%, and 390 px touch emulation.

No iOS Simulator, Android emulator or physical device was used.

Residuals

  • With npm 11.6, regenerating package-lock.json from scratch without --legacy-peer-deps drops the packages/chart workspace. The trigger is @bloxwap/hig-react's optional @bloxwap/chart peer, which shares the workspace's name; I confirmed this by repacking without that peer. npm ci, normal npm install and adding dependencies are not affected. The workaround is in vendor/bloxwap-hig/README.md. This is an upstream follow-up for hig#63.
  • HIG Tabs removes the panel's tabindex in an effect, so for one commit after a tab switch the panel is still a tab stop. The test waits for that commit before checking.

Rollback: revert this PR. It touches only tarballs, the lockfile, .npmrc, imports and CSS. Nothing is published, tagged or released.

🤖 Generated with Claude Code

joeblau and others added 2 commits October 15, 2026 11:39
Vendors the hig@872906a9 candidate tarballs. @bloxwap/hig-tokens/css now
emits radius/type/motion/density roles (hig#66), so styles/hig-roles.generated.css
and its lint drift guard are removed and the shell uses the package role names.
The caret Radix peers (hig#63) let npm ci work without legacy-peer-deps, and the
overlay-free recipes/install-command and recipes/code-window entries replace the
locally composed recipes. HIG CSS reads --hig-font-sans (hig#65), so the button
font bridge goes. Callout passes ReactNode titles and note/tip severities through
and drops the local info/success edges (hig#69). Social cards read their static
faces from @bloxwap/hig-native-fonts since the tokens package no longer ships TTFs
(hig#64).

Co-Authored-By: Claude Opus 5.5 <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant