@bsuite/theme 0.9.0 → 0.10.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,7 +1,7 @@
1
1
  import { jsx as _jsx } from "react/jsx-runtime";
2
2
  /*
3
3
  * Role-bound, not palette-bound. Until 0.7.0 these were raw Tailwind palette
4
- * classes (`bg-emerald-50`, `bg-red-50`, …), which meant the design-system
4
+ * theme-audit-ok: prose. classes (`bg-emerald-50`, `bg-red-50`, …), which meant the design-system
5
5
  * component every app imports was invisible to tenant white-labelling —
6
6
  * BrandingProvider mutates the role layer, and these bound below it.
7
7
  *
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bsuite/theme",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "type": "module",
5
5
  "license": "UNLICENSED",
6
6
  "publishConfig": {
@@ -281,3 +281,17 @@
281
281
  --dot-color: oklch(0.72 0.060 90 / 0.16);
282
282
  --grid-color: oklch(0.82 0.020 250 / 0.055);
283
283
  }
284
+
285
+ /* ============================================================
286
+ BASE — the heading ramp, APPLIED. The tokens existed and nothing bound
287
+ them to an actual h1..h6, so every level rendered as flat body colour.
288
+ Contract values, verbatim.
289
+ ============================================================ */
290
+ @layer base {
291
+ h1 { font-family: var(--font-display); color: var(--role-h1); font-size: 25px; font-weight: 600; letter-spacing: var(--track-display); }
292
+ h2 { font-family: var(--font-heading); color: var(--role-h2); font-size: 19px; font-weight: 700; }
293
+ h3 { font-family: var(--font-heading); color: var(--role-h3); font-size: 16px; font-weight: 700; }
294
+ h4 { font-family: var(--font-heading); color: var(--role-h4); font-size: 14px; font-weight: 700; }
295
+ h5 { font-family: var(--font-heading); color: var(--role-h5); font-size: 13px; font-weight: 700; }
296
+ h6 { font-family: var(--font-heading); color: var(--role-h6); font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: var(--track-eyebrow); }
297
+ }
package/src/css/vars.css CHANGED
@@ -482,3 +482,37 @@
482
482
 
483
483
  /* Shadcn bridge picks up rebindings automatically via var() chain */
484
484
  }
485
+
486
+ /* ============================================================
487
+ BASE — the heading ramp, APPLIED.
488
+ ============================================================
489
+ Added 2026-08-03 after operator review: "borders and heading levels
490
+ unstyled" (conduit) and "Document Management looks all black" (BSU).
491
+
492
+ Both were the same omission. --role-h1..h6 existed as tokens and NOTHING
493
+ bound them to an actual h1..h6, so every heading fell through to
494
+ --role-text-body — one flat near-black for all six levels. A ramp nobody
495
+ applies is not a ramp, it is six unused variables, and that is exactly what
496
+ an operator sees as "unstyled".
497
+
498
+ Values are the contract's, verbatim (d2c-theme-source-of-truth.html and the
499
+ Corporate equivalent). Each level shifts HUE as well as lightness, so the
500
+ hierarchy survives greyscale and both dichromacies rather than relying on
501
+ size alone.
502
+
503
+ Scoped to @layer base so any component class still wins — this sets the
504
+ floor, it does not fight Tailwind utilities. */
505
+ @layer base {
506
+ h1 { color: var(--role-h1); font-size: 25px; font-weight: 700; letter-spacing: var(--track-display); }
507
+ h2 { color: var(--role-h2); font-size: 19px; }
508
+ h3 { color: var(--role-h3); font-size: 16px; }
509
+ h4 { color: var(--role-h4); font-size: 14px; }
510
+ h5 { color: var(--role-h5); font-size: 13px; }
511
+ h6 {
512
+ color: var(--role-h6);
513
+ font-size: 11px;
514
+ text-transform: uppercase;
515
+ letter-spacing: var(--track-eyebrow);
516
+ font-weight: 700;
517
+ }
518
+ }