@ponchia/ui 0.14.0 → 0.16.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.
Files changed (49) hide show
  1. package/CHANGELOG.md +46 -0
  2. package/README.md +1 -1
  3. package/classes/classes.json +5 -1
  4. package/classes/index.d.ts +6 -0
  5. package/classes/index.js +10 -1
  6. package/classes/vscode.css-custom-data.json +4 -0
  7. package/css/annotations.css +4 -2
  8. package/css/blocknote.css +14 -0
  9. package/css/connectors.css +4 -2
  10. package/css/marks.css +3 -2
  11. package/css/primitives.css +13 -0
  12. package/css/tokens.css +1 -0
  13. package/dist/bronto.css +1 -1
  14. package/dist/css/analytical.css +1 -1
  15. package/dist/css/annotations.css +1 -1
  16. package/dist/css/blocknote.css +1 -1
  17. package/dist/css/connectors.css +1 -1
  18. package/dist/css/marks.css +1 -1
  19. package/dist/css/primitives.css +1 -1
  20. package/dist/css/report-kit.css +1 -1
  21. package/dist/css/tokens.css +1 -1
  22. package/dist/css/tool.css +1 -1
  23. package/docs/compositions.md +2 -2
  24. package/docs/connectors.md +4 -2
  25. package/docs/contrast.md +16 -0
  26. package/docs/d2.md +10 -10
  27. package/docs/interop/blocknote.md +5 -0
  28. package/docs/marks.md +2 -1
  29. package/docs/mermaid.md +2 -0
  30. package/docs/reference.md +4 -1
  31. package/docs/renderer.md +1 -0
  32. package/docs/reporting.md +8 -8
  33. package/docs/stability.md +1 -1
  34. package/docs/theming.md +10 -1
  35. package/llms.txt +1 -1
  36. package/package.json +2 -2
  37. package/renderer/index.d.ts +5 -0
  38. package/renderer/index.d.ts.map +1 -1
  39. package/renderer/index.js +6 -1
  40. package/tokens/d2.js +2 -2
  41. package/tokens/d2.json +2 -2
  42. package/tokens/figma.variables.json +26 -0
  43. package/tokens/index.d.ts +2 -2
  44. package/tokens/index.js +6 -0
  45. package/tokens/index.json +4 -2
  46. package/tokens/mermaid.js +2 -2
  47. package/tokens/mermaid.json +2 -2
  48. package/tokens/resolved.json +2 -0
  49. package/tokens/tokens.dtcg.json +42 -0
package/docs/reference.md CHANGED
@@ -9,7 +9,7 @@ rendering of every class is the kitchen-sink demo:
9
9
  **<https://ponchia.github.io/bronto-ui/>**. Theming knobs and the token
10
10
  contract: [docs/theming.md](theming.md).
11
11
 
12
- - 700 classes across 188 component groups
12
+ - 702 classes across 188 component groups
13
13
  - Import the typed registry: `import { cls, ui, cx } from '@ponchia/ui/classes'`
14
14
  - Validate markup as data (no JS/TS): `@ponchia/ui/classes.json` — the same
15
15
  vocabulary as language-neutral JSON (`groups`, `classes`, `states`,
@@ -651,6 +651,8 @@ each one matches a real selector in the stylesheet.
651
651
  | Registry key | Class | Kind |
652
652
  | --- | --- | --- |
653
653
  | `cls.eyebrow` | `ui-eyebrow` | base |
654
+ | `cls.eyebrowCaps` | `ui-eyebrow--caps` | modifier |
655
+ | `cls.eyebrowMono` | `ui-eyebrow--mono` | modifier |
654
656
  | `cls.eyebrowMuted` | `ui-eyebrow--muted` | modifier |
655
657
  | `cls.eyebrowSm` | `ui-eyebrow--sm` | modifier |
656
658
 
@@ -1850,6 +1852,7 @@ Exact mirror of the `:root` blocks in `css/tokens.css`
1850
1852
  | `--surface-muted` | `var(--panel-soft)` |
1851
1853
  | `--border` | `var(--line)` |
1852
1854
  | `--border-strong` | `var(--line-strong)` |
1855
+ | `--edge` | `var(--text-dim)` |
1853
1856
 
1854
1857
  ### Light theme
1855
1858
 
package/docs/renderer.md CHANGED
@@ -36,6 +36,7 @@ accept both.
36
36
  | `bg`, `bgElevated`, `panel`, `panelStrong` | `--bg`, `--bg-elevated`, `--panel`, `--panel-strong` | Backgrounds; draw on `panel` |
37
37
  | `text`, `textSoft`, `textDim` | `--text`, `--text-soft`, `--text-dim` | Labels, secondary and tertiary ink |
38
38
  | `line`, `lineStrong` | `--line`, `--line-strong` | Grid and hairlines; axes and rules |
39
+ | `edge` | `--edge` | A line that carries meaning: a relationship, connector or leader. 3:1 against the surface; `line` and `lineStrong` are decorative and are not |
39
40
  | `accent`, `accentText`, `onAccent`, `focus` | accent family | The one emphasis, its text forms, focus |
40
41
  | `selection` | `--accent` at 27% | A translucent selection wash |
41
42
  | `success`, `warning`, `danger`, `info` | status tier | Status only, never categories |
package/docs/reporting.md CHANGED
@@ -60,18 +60,18 @@ No install? Link the same files from a CDN. Pin the version — pre-1.0, breakin
60
60
  changes ship in the minor (see [stability.md](./stability.md)):
61
61
 
62
62
  ```html
63
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.14.0/dist/bronto.css" />
64
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.14.0/dist/css/report-kit.css" />
63
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.16.0/dist/bronto.css" />
64
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.16.0/dist/css/report-kit.css" />
65
65
  ```
66
66
 
67
67
  Leaf-by-leaf CDN imports use the same `dist/css/` paths:
68
68
 
69
69
  ```html
70
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.14.0/dist/bronto.css" />
71
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.14.0/dist/css/report.css" />
72
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.14.0/dist/css/dataviz.css" />
73
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.14.0/dist/css/annotations.css" />
74
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.14.0/dist/css/legend.css" />
70
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.16.0/dist/bronto.css" />
71
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.16.0/dist/css/report.css" />
72
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.16.0/dist/css/dataviz.css" />
73
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.16.0/dist/css/annotations.css" />
74
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.16.0/dist/css/legend.css" />
75
75
  ```
76
76
 
77
77
  The CDN serves the package's own `fonts/` next to the CSS, so font URLs resolve
@@ -885,7 +885,7 @@ or validation runtime.
885
885
 
886
886
  ```json
887
887
  {
888
- "$schema": "https://cdn.jsdelivr.net/npm/@ponchia/ui@0.14.0/schemas/report-claims.v1.schema.json",
888
+ "$schema": "https://cdn.jsdelivr.net/npm/@ponchia/ui@0.16.0/schemas/report-claims.v1.schema.json",
889
889
  "schemaVersion": "bronto-report-claims.v1",
890
890
  "report": { "title": "Decision readiness", "type": "decision" },
891
891
  "claims": [
package/docs/stability.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Public API stability
2
2
 
3
3
  `@ponchia/ui` is pre-1.0. Breaking changes ship in the minor (`0.x.0`), and
4
- patches are non-breaking. In practical terms: **PATCH releases (`0.14.x`) are
4
+ patches are non-breaking. In practical terms: **PATCH releases (`0.16.x`) are
5
5
  non-breaking bug-fixes and additive changes — safe to upgrade without review;
6
6
  MINOR releases (`0.x.0`) may include breaking changes and consumers should
7
7
  review the CHANGELOG before upgrading.** Pin `~0.x` (tilde) to accept only
package/docs/theming.md CHANGED
@@ -431,11 +431,20 @@ semantics — the CSS can't add ARIA for you:
431
431
 
432
432
  ## Contrast
433
433
 
434
+ - **Lines that carry meaning use `--edge`, not a hairline.** `--line` and
435
+ `--line-strong` are decorative borders, which WCAG 1.4.11 exempts and the
436
+ contrast gate reports without enforcing. A relationship between nodes, a
437
+ connector or annotation leader, or a bracket mark is a graphical object
438
+ the reader needs, so it must hold 3:1 against its surface. `--edge` is the
439
+ dim-text ink (`var(--text-dim)`), gated at 3:1 on the page and on a card in
440
+ every theme and colorway. Connectors, annotations, the bracket note, Mermaid
441
+ edges and D2 connections draw in it; renderers read it as `edge`.
434
442
  - `data-contrast="high"` on any element, **and** the OS
435
443
  `prefers-contrast: more` signal, collapse the soft greys toward the
436
444
  strong end (hairlines → `--line-strong`, dim text → `--text-soft`,
437
445
  solid focus ring). Theme-agnostic — they reference the per-theme
438
- `*-strong` tokens, so they work under light and dark.
446
+ `*-strong` tokens, so they work under light and dark. `--edge` follows the
447
+ dim text up with them.
439
448
  - Windows High Contrast / `forced-colors: active` is handled in
440
449
  `base.css`: state that was signalled only by a fill (progress, status
441
450
  dots, switch, segmented) is re-asserted with system colors.
package/llms.txt CHANGED
@@ -45,7 +45,7 @@ the path changes from source `css/` to built `dist/css/`:
45
45
  <!-- installed locally -->
46
46
  <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/<leaf>.css" />
47
47
  <!-- or from a CDN; pin the version (pre-1.0, breaking changes ship in the minor) -->
48
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.14.0/dist/css/<leaf>.css" />
48
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.16.0/dist/css/<leaf>.css" />
49
49
  ```
50
50
 
51
51
  The flattened default bundle is `dist/bronto.css` (bundler shorthand
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ponchia/ui",
3
- "version": "0.14.0",
3
+ "version": "0.16.0",
4
4
  "type": "module",
5
5
  "description": "CSS-first identity and UI layer for services, tools, sites, and reports — works in HTML, every framework, and PDF, no component runtime. Shared app shell, forms, tables, workflow chrome, plus opt-in analytical/report primitives. Monochrome with one rationed accent. Zero runtime dependencies.",
6
6
  "keywords": [
@@ -552,7 +552,7 @@
552
552
  "./docs/discussion.md": "./docs/discussion.md"
553
553
  },
554
554
  "overrides": {
555
- "adm-zip": "0.6.0",
555
+ "adm-zip": "0.6.1",
556
556
  "esbuild": "0.28.1"
557
557
  }
558
558
  }
@@ -135,6 +135,11 @@ export type RendererTokens = {
135
135
  * Axis, domain and rule (`--line-strong`).
136
136
  */
137
137
  lineStrong: string;
138
+ /**
139
+ * A line that carries meaning: a relationship,
140
+ * connector or leader (`--edge`). 3:1 against the surface, unlike `line`.
141
+ */
142
+ edge: string;
138
143
  /**
139
144
  * The one accent (`--accent`).
140
145
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAkOA;;;;;;;;GAQG;AACH,kCAHW,MAAM,GACJ,IAAI,GAAG,IAAI,CAcvB;AAED;;;;;GAKG;AACH,gDAFW,IAAI,UAMd;AAED;;;;;;;GAOG;AACH,oCAHW,MAAM,YACN;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,iBAqB/B;AAkCD;;;;;;;;;;GAUG;AACH,qCAJW,OAAO,YACP;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAAE,GAC3B,cAAc,CA6E1B;AAqDD;;;;;;;;;;;GAWG;AACH,wCAJW,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,YAChC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACzC,MAAM,IAAI,CAqDtB;AAID;;;;;;;;;;;GAWG;AACH,mCANW,cAAc,YACd;IAAE,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAGpE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6E/B;AAED;;;;;;GAMG;AACH,mCAHW,cAAc,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BlC;;;;mBAjnBY;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;;;;;YAOjD,OAAO,GAAG,MAAM;;;;QAChB,MAAM;;;;gBACN,MAAM;;;;WACN,MAAM;;;;iBACN,MAAM;;;;UACN,MAAM;;;;cACN,MAAM;;;;aACN,MAAM;;;;UACN,MAAM;;;;gBACN,MAAM;;;;YACN,MAAM;;;;gBACN,MAAM;;;;cACN,MAAM;;;;WACN,MAAM;;;;eACN,MAAM;;;;aACN,MAAM;;;;aACN,MAAM;;;;YACN,MAAM;;;;UACN,MAAM;;;;UACN,MAAM;;;;UACN,MAAM;;;;iBACN,MAAM,EAAE;;;;qBACR,MAAM,EAAE;;;;oBACR,MAAM,EAAE;;;;gBACR,MAAM,EAAE;;;;eACR,MAAM,EAAE"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAoOA;;;;;;;;GAQG;AACH,kCAHW,MAAM,GACJ,IAAI,GAAG,IAAI,CAcvB;AAED;;;;;GAKG;AACH,gDAFW,IAAI,UAMd;AAED;;;;;;;GAOG;AACH,oCAHW,MAAM,YACN;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,iBAqB/B;AAkCD;;;;;;;;;;GAUG;AACH,qCAJW,OAAO,YACP;IAAE,MAAM,CAAC,EAAE,OAAO,GAAG,MAAM,CAAA;CAAE,GAC3B,cAAc,CA+E1B;AAsDD;;;;;;;;;;;GAWG;AACH,wCAJW,CAAC,MAAM,EAAE,cAAc,KAAK,IAAI,YAChC;IAAE,OAAO,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,WAAW,CAAA;CAAE,GACzC,MAAM,IAAI,CAqDtB;AAID;;;;;;;;;;;GAWG;AACH,mCANW,cAAc,YACd;IAAE,IAAI,CAAC,EAAE,WAAW,GAAG,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,MAAM,CAAA;CAAE,GAGpE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CA6E/B;AAED;;;;;;GAMG;AACH,mCAHW,cAAc,GACZ,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CA2BlC;;;;mBAtnBY;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE;;;;;;;;;YAOjD,OAAO,GAAG,MAAM;;;;QAChB,MAAM;;;;gBACN,MAAM;;;;WACN,MAAM;;;;iBACN,MAAM;;;;UACN,MAAM;;;;cACN,MAAM;;;;aACN,MAAM;;;;UACN,MAAM;;;;gBACN,MAAM;;;;;UACN,MAAM;;;;YAEN,MAAM;;;;gBACN,MAAM;;;;cACN,MAAM;;;;WACN,MAAM;;;;eACN,MAAM;;;;aACN,MAAM;;;;aACN,MAAM;;;;YACN,MAAM;;;;UACN,MAAM;;;;UACN,MAAM;;;;UACN,MAAM;;;;iBACN,MAAM,EAAE;;;;qBACR,MAAM,EAAE;;;;oBACR,MAAM,EAAE;;;;gBACR,MAAM,EAAE;;;;eACR,MAAM,EAAE"}
package/renderer/index.js CHANGED
@@ -39,6 +39,8 @@ import { cssVars } from '../tokens/index.js';
39
39
  * @property {string} textDim Tertiary ink (`--text-dim`).
40
40
  * @property {string} line Hairline and grid (`--line`).
41
41
  * @property {string} lineStrong Axis, domain and rule (`--line-strong`).
42
+ * @property {string} edge A line that carries meaning: a relationship,
43
+ * connector or leader (`--edge`). 3:1 against the surface, unlike `line`.
42
44
  * @property {string} accent The one accent (`--accent`).
43
45
  * @property {string} accentText Accent as text on the page (`--accent-text`).
44
46
  * @property {string} onAccent Ink on an accent fill (`--on-accent`).
@@ -357,6 +359,7 @@ export function readTokens(element, options = {}) {
357
359
  const bg = bgValue || packaged('--bg');
358
360
  const panel = token('--panel', bg);
359
361
  const text = token('--text', scheme === 'dark' ? '#ffffff' : '#000000');
362
+ const textDim = token('--text-dim', text);
360
363
  const accent = token('--accent', text);
361
364
  const line = token('--line', text);
362
365
  const list = (prefix, count, fallback) => {
@@ -384,9 +387,10 @@ export function readTokens(element, options = {}) {
384
387
  panelStrong: token('--panel-strong', panel),
385
388
  text,
386
389
  textSoft: token('--text-soft', text),
387
- textDim: token('--text-dim', text),
390
+ textDim,
388
391
  line,
389
392
  lineStrong: token('--line-strong', line),
393
+ edge: token('--edge', textDim),
390
394
  accent,
391
395
  accentText: token('--accent-text', accent),
392
396
  onAccent: token('--on-accent', scheme === 'dark' ? '#000000' : '#ffffff'),
@@ -425,6 +429,7 @@ const FINGERPRINTED = [
425
429
  '--text-dim',
426
430
  '--line',
427
431
  '--line-strong',
432
+ '--edge',
428
433
  '--accent',
429
434
  '--accent-text',
430
435
  '--on-accent',
package/tokens/d2.js CHANGED
@@ -16,7 +16,7 @@ export const d2 = {
16
16
  N5: '#d8d8d4',
17
17
  N6: '#ececea',
18
18
  N7: '#f4f4f2',
19
- B1: '#a8a8a2',
19
+ B1: '#686863',
20
20
  B2: '#d8d8d4',
21
21
  B3: '#d8d8d4',
22
22
  B4: '#ececea',
@@ -36,7 +36,7 @@ export const d2 = {
36
36
  N5: '#383838',
37
37
  N6: '#242424',
38
38
  N7: '#121212',
39
- B1: '#555555',
39
+ B1: '#a0a0a0',
40
40
  B2: '#383838',
41
41
  B3: '#383838',
42
42
  B4: '#242424',
package/tokens/d2.json CHANGED
@@ -8,7 +8,7 @@
8
8
  "N5": "#d8d8d4",
9
9
  "N6": "#ececea",
10
10
  "N7": "#f4f4f2",
11
- "B1": "#a8a8a2",
11
+ "B1": "#686863",
12
12
  "B2": "#d8d8d4",
13
13
  "B3": "#d8d8d4",
14
14
  "B4": "#ececea",
@@ -28,7 +28,7 @@
28
28
  "N5": "#383838",
29
29
  "N6": "#242424",
30
30
  "N7": "#121212",
31
- "B1": "#555555",
31
+ "B1": "#a0a0a0",
32
32
  "B2": "#383838",
33
33
  "B3": "#383838",
34
34
  "B4": "#242424",
@@ -903,6 +903,32 @@
903
903
  }
904
904
  }
905
905
  },
906
+ {
907
+ "name": "edge",
908
+ "type": "COLOR",
909
+ "sourceCssVariable": "--edge",
910
+ "valuesByMode": {
911
+ "light": {
912
+ "r": 0.407843,
913
+ "g": 0.407843,
914
+ "b": 0.388235,
915
+ "a": 1
916
+ },
917
+ "dark": {
918
+ "r": 0.627451,
919
+ "g": 0.627451,
920
+ "b": 0.627451,
921
+ "a": 1
922
+ }
923
+ },
924
+ "$extensions": {
925
+ "com.ponchia.css": {
926
+ "variable": "--edge",
927
+ "value": "#686863",
928
+ "darkValue": "#a0a0a0"
929
+ }
930
+ }
931
+ },
906
932
  {
907
933
  "name": "field/dot",
908
934
  "type": "COLOR",
package/tokens/index.d.ts CHANGED
@@ -3,7 +3,7 @@
3
3
 
4
4
  export type ThemeName = 'light' | 'dark';
5
5
 
6
- export type GlobalTokenName = '--radius-xl' | '--radius-lg' | '--radius-md' | '--radius-sm' | '--radius-pill' | '--space-2xs' | '--space-xs' | '--space-sm' | '--space-md' | '--space-lg' | '--space-xl' | '--space-2xl' | '--space-0-5' | '--space-0-75' | '--space-1-5' | '--space-2-5' | '--tap-target' | '--tap-target-min' | '--safe-area-top' | '--safe-area-right' | '--safe-area-bottom' | '--safe-area-left' | '--mono' | '--sans' | '--dot-font' | '--display' | '--display-weight' | '--display-weight-strong' | '--text-2xs' | '--text-xs' | '--text-sm' | '--text-base' | '--text-lg' | '--text-xl' | '--tracking-wide' | '--tracking-wider' | '--ease-standard' | '--ease-spring' | '--ease-out' | '--duration-fast' | '--duration-base' | '--duration-slow' | '--dot-size' | '--dot-gap' | '--z-base' | '--z-raised' | '--z-sticky' | '--z-overlay' | '--z-popover' | '--z-toast' | '--z-canvas' | '--z-chrome' | '--z-panel' | '--z-modal' | '--z-menu' | '--z-tooltip' | '--z-navigation' | '--ui-zoom' | '--ui-px' | '--hairline' | '--focus-ring-width' | '--focus-ring-offset' | '--accent-1' | '--accent-2' | '--accent-3' | '--accent-4' | '--accent-5' | '--accent-6' | '--surface-1' | '--surface-2' | '--surface-3' | '--surface-4' | '--surface-5' | '--surface-6' | '--bronto-color-bg' | '--bronto-color-surface' | '--bronto-color-surface-raised' | '--bronto-color-border' | '--bronto-color-border-strong' | '--bronto-color-text' | '--bronto-color-text-muted' | '--bronto-color-action' | '--bronto-color-on-action' | '--bronto-color-focus' | '--bronto-color-success' | '--bronto-color-warning' | '--bronto-color-danger' | '--bronto-color-info' | '--surface' | '--surface-raised' | '--surface-muted' | '--border' | '--border-strong';
6
+ export type GlobalTokenName = '--radius-xl' | '--radius-lg' | '--radius-md' | '--radius-sm' | '--radius-pill' | '--space-2xs' | '--space-xs' | '--space-sm' | '--space-md' | '--space-lg' | '--space-xl' | '--space-2xl' | '--space-0-5' | '--space-0-75' | '--space-1-5' | '--space-2-5' | '--tap-target' | '--tap-target-min' | '--safe-area-top' | '--safe-area-right' | '--safe-area-bottom' | '--safe-area-left' | '--mono' | '--sans' | '--dot-font' | '--display' | '--display-weight' | '--display-weight-strong' | '--text-2xs' | '--text-xs' | '--text-sm' | '--text-base' | '--text-lg' | '--text-xl' | '--tracking-wide' | '--tracking-wider' | '--ease-standard' | '--ease-spring' | '--ease-out' | '--duration-fast' | '--duration-base' | '--duration-slow' | '--dot-size' | '--dot-gap' | '--z-base' | '--z-raised' | '--z-sticky' | '--z-overlay' | '--z-popover' | '--z-toast' | '--z-canvas' | '--z-chrome' | '--z-panel' | '--z-modal' | '--z-menu' | '--z-tooltip' | '--z-navigation' | '--ui-zoom' | '--ui-px' | '--hairline' | '--focus-ring-width' | '--focus-ring-offset' | '--accent-1' | '--accent-2' | '--accent-3' | '--accent-4' | '--accent-5' | '--accent-6' | '--surface-1' | '--surface-2' | '--surface-3' | '--surface-4' | '--surface-5' | '--surface-6' | '--bronto-color-bg' | '--bronto-color-surface' | '--bronto-color-surface-raised' | '--bronto-color-border' | '--bronto-color-border-strong' | '--bronto-color-text' | '--bronto-color-text-muted' | '--bronto-color-action' | '--bronto-color-on-action' | '--bronto-color-focus' | '--bronto-color-success' | '--bronto-color-warning' | '--bronto-color-danger' | '--bronto-color-info' | '--surface' | '--surface-raised' | '--surface-muted' | '--border' | '--border-strong' | '--edge';
7
7
  export type LightTokenName = '--bg' | '--bg-elevated' | '--bg-accent' | '--panel' | '--panel-strong' | '--panel-soft' | '--line' | '--line-strong' | '--text' | '--text-soft' | '--text-dim' | '--accent' | '--accent-ramp-end' | '--accent-strong' | '--accent-text' | '--on-accent' | '--accent-soft' | '--success' | '--success-soft' | '--warning' | '--warning-soft' | '--danger' | '--danger-soft' | '--info' | '--info-soft' | '--code-bg' | '--button-text' | '--field-dot' | '--field-dot-hot' | '--field-dot-accent' | '--focus-ring' | '--shadow' | '--shadow-raised';
8
8
  export type DarkTokenName = '--bg' | '--bg-elevated' | '--bg-accent' | '--panel' | '--panel-strong' | '--panel-soft' | '--line' | '--line-strong' | '--text' | '--text-soft' | '--text-dim' | '--accent' | '--accent-ramp-end' | '--accent-strong' | '--accent-text' | '--on-accent' | '--accent-soft' | '--success' | '--success-soft' | '--warning' | '--warning-soft' | '--danger' | '--danger-soft' | '--info' | '--info-soft' | '--code-bg' | '--button-text' | '--field-dot' | '--field-dot-hot' | '--field-dot-accent' | '--focus-ring' | '--shadow' | '--shadow-raised';
9
9
 
@@ -14,7 +14,7 @@ export declare const cssVars: {
14
14
  dark: Record<DarkTokenName, string>;
15
15
  };
16
16
 
17
- export type ScaleKey = 'radius-xl' | 'radius-lg' | 'radius-md' | 'radius-sm' | 'radius-pill' | 'space-2xs' | 'space-xs' | 'space-sm' | 'space-md' | 'space-lg' | 'space-xl' | 'space-2xl' | 'space-0-5' | 'space-0-75' | 'space-1-5' | 'space-2-5' | 'tap-target' | 'tap-target-min' | 'safe-area-top' | 'safe-area-right' | 'safe-area-bottom' | 'safe-area-left' | 'mono' | 'sans' | 'dot-font' | 'display' | 'display-weight' | 'display-weight-strong' | 'text-2xs' | 'text-xs' | 'text-sm' | 'text-base' | 'text-lg' | 'text-xl' | 'tracking-wide' | 'tracking-wider' | 'ease-standard' | 'ease-spring' | 'ease-out' | 'duration-fast' | 'duration-base' | 'duration-slow' | 'dot-size' | 'dot-gap' | 'z-base' | 'z-raised' | 'z-sticky' | 'z-overlay' | 'z-popover' | 'z-toast' | 'z-canvas' | 'z-chrome' | 'z-panel' | 'z-modal' | 'z-menu' | 'z-tooltip' | 'z-navigation' | 'ui-zoom' | 'ui-px' | 'hairline' | 'focus-ring-width' | 'focus-ring-offset' | 'accent-1' | 'accent-2' | 'accent-3' | 'accent-4' | 'accent-5' | 'accent-6' | 'surface-1' | 'surface-2' | 'surface-3' | 'surface-4' | 'surface-5' | 'surface-6' | 'bronto-color-bg' | 'bronto-color-surface' | 'bronto-color-surface-raised' | 'bronto-color-border' | 'bronto-color-border-strong' | 'bronto-color-text' | 'bronto-color-text-muted' | 'bronto-color-action' | 'bronto-color-on-action' | 'bronto-color-focus' | 'bronto-color-success' | 'bronto-color-warning' | 'bronto-color-danger' | 'bronto-color-info' | 'surface' | 'surface-raised' | 'surface-muted' | 'border' | 'border-strong';
17
+ export type ScaleKey = 'radius-xl' | 'radius-lg' | 'radius-md' | 'radius-sm' | 'radius-pill' | 'space-2xs' | 'space-xs' | 'space-sm' | 'space-md' | 'space-lg' | 'space-xl' | 'space-2xl' | 'space-0-5' | 'space-0-75' | 'space-1-5' | 'space-2-5' | 'tap-target' | 'tap-target-min' | 'safe-area-top' | 'safe-area-right' | 'safe-area-bottom' | 'safe-area-left' | 'mono' | 'sans' | 'dot-font' | 'display' | 'display-weight' | 'display-weight-strong' | 'text-2xs' | 'text-xs' | 'text-sm' | 'text-base' | 'text-lg' | 'text-xl' | 'tracking-wide' | 'tracking-wider' | 'ease-standard' | 'ease-spring' | 'ease-out' | 'duration-fast' | 'duration-base' | 'duration-slow' | 'dot-size' | 'dot-gap' | 'z-base' | 'z-raised' | 'z-sticky' | 'z-overlay' | 'z-popover' | 'z-toast' | 'z-canvas' | 'z-chrome' | 'z-panel' | 'z-modal' | 'z-menu' | 'z-tooltip' | 'z-navigation' | 'ui-zoom' | 'ui-px' | 'hairline' | 'focus-ring-width' | 'focus-ring-offset' | 'accent-1' | 'accent-2' | 'accent-3' | 'accent-4' | 'accent-5' | 'accent-6' | 'surface-1' | 'surface-2' | 'surface-3' | 'surface-4' | 'surface-5' | 'surface-6' | 'bronto-color-bg' | 'bronto-color-surface' | 'bronto-color-surface-raised' | 'bronto-color-border' | 'bronto-color-border-strong' | 'bronto-color-text' | 'bronto-color-text-muted' | 'bronto-color-action' | 'bronto-color-on-action' | 'bronto-color-focus' | 'bronto-color-success' | 'bronto-color-warning' | 'bronto-color-danger' | 'bronto-color-info' | 'surface' | 'surface-raised' | 'surface-muted' | 'border' | 'border-strong' | 'edge';
18
18
  export type ColorKey = 'bg' | 'bg-elevated' | 'bg-accent' | 'panel' | 'panel-strong' | 'panel-soft' | 'line' | 'line-strong' | 'text' | 'text-soft' | 'text-dim' | 'accent' | 'accent-ramp-end' | 'accent-strong' | 'accent-text' | 'on-accent' | 'accent-soft' | 'success' | 'success-soft' | 'warning' | 'warning-soft' | 'danger' | 'danger-soft' | 'info' | 'info-soft' | 'code-bg' | 'button-text' | 'field-dot' | 'field-dot-hot' | 'field-dot-accent' | 'focus-ring' | 'shadow' | 'shadow-raised';
19
19
 
20
20
  /** Ergonomic view derived from {@link cssVars} (`--` prefix stripped). */
package/tokens/index.js CHANGED
@@ -144,6 +144,12 @@ export const cssVars = {
144
144
  '--surface-muted': 'var(--panel-soft)',
145
145
  '--border': 'var(--line)',
146
146
  '--border-strong': 'var(--line-strong)',
147
+ // A line that carries meaning: a relationship between nodes, a connector
148
+ // or annotation leader, a bracket mark. The hairlines (--line,
149
+ // --line-strong) are decorative borders that WCAG 1.4.11 exempts; this is
150
+ // a graphical object it holds to 3:1, so it rides the dim-text ink, which
151
+ // clears that on every surface and takes the high-contrast step with it.
152
+ '--edge': 'var(--text-dim)',
147
153
  },
148
154
  // Light palette — :root, :root[data-theme='light'].
149
155
  light: {
package/tokens/index.json CHANGED
@@ -94,7 +94,8 @@
94
94
  "--surface-raised": "var(--panel-strong)",
95
95
  "--surface-muted": "var(--panel-soft)",
96
96
  "--border": "var(--line)",
97
- "--border-strong": "var(--line-strong)"
97
+ "--border-strong": "var(--line-strong)",
98
+ "--edge": "var(--text-dim)"
98
99
  },
99
100
  "light": {
100
101
  "--bg": "#f4f4f2",
@@ -261,7 +262,8 @@
261
262
  "surface-raised": "var(--panel-strong)",
262
263
  "surface-muted": "var(--panel-soft)",
263
264
  "border": "var(--line)",
264
- "border-strong": "var(--line-strong)"
265
+ "border-strong": "var(--line-strong)",
266
+ "edge": "var(--text-dim)"
265
267
  },
266
268
  "color": {
267
269
  "light": {
package/tokens/mermaid.js CHANGED
@@ -22,7 +22,7 @@ export const mermaid = {
22
22
  tertiaryColor: '#fbfbfa',
23
23
  tertiaryTextColor: '#0a0a0a',
24
24
  tertiaryBorderColor: '#d8d8d4',
25
- lineColor: '#a8a8a2',
25
+ lineColor: '#686863',
26
26
  textColor: '#0a0a0a',
27
27
  mainBkg: '#ffffff',
28
28
  nodeBorder: '#a8a8a2',
@@ -103,7 +103,7 @@ export const mermaid = {
103
103
  tertiaryColor: '#181818',
104
104
  tertiaryTextColor: '#e6e6e6',
105
105
  tertiaryBorderColor: '#383838',
106
- lineColor: '#555555',
106
+ lineColor: '#a0a0a0',
107
107
  textColor: '#e6e6e6',
108
108
  mainBkg: '#1c1c1c',
109
109
  nodeBorder: '#555555',
@@ -13,7 +13,7 @@
13
13
  "tertiaryColor": "#fbfbfa",
14
14
  "tertiaryTextColor": "#0a0a0a",
15
15
  "tertiaryBorderColor": "#d8d8d4",
16
- "lineColor": "#a8a8a2",
16
+ "lineColor": "#686863",
17
17
  "textColor": "#0a0a0a",
18
18
  "mainBkg": "#ffffff",
19
19
  "nodeBorder": "#a8a8a2",
@@ -93,7 +93,7 @@
93
93
  "tertiaryColor": "#181818",
94
94
  "tertiaryTextColor": "#e6e6e6",
95
95
  "tertiaryBorderColor": "#383838",
96
- "lineColor": "#555555",
96
+ "lineColor": "#a0a0a0",
97
97
  "textColor": "#e6e6e6",
98
98
  "mainBkg": "#1c1c1c",
99
99
  "nodeBorder": "#555555",
@@ -32,6 +32,7 @@
32
32
  "--surface-muted": "#ececea",
33
33
  "--border": "#d8d8d4",
34
34
  "--border-strong": "#a8a8a2",
35
+ "--edge": "#686863",
35
36
  "--bg": "#f4f4f2",
36
37
  "--bg-elevated": "#fbfbfa",
37
38
  "--bg-accent": "rgba(215, 25, 33, 0.06)",
@@ -96,6 +97,7 @@
96
97
  "--surface-muted": "#242424",
97
98
  "--border": "#383838",
98
99
  "--border-strong": "#555555",
100
+ "--edge": "#a0a0a0",
99
101
  "--bg": "#121212",
100
102
  "--bg-elevated": "#181818",
101
103
  "--bg-accent": "rgba(255, 59, 65, 0.08)",
@@ -1420,6 +1420,27 @@
1420
1420
  }
1421
1421
  }
1422
1422
  },
1423
+ "edge": {
1424
+ "DEFAULT": {
1425
+ "$type": "color",
1426
+ "$value": {
1427
+ "colorSpace": "srgb",
1428
+ "components": [
1429
+ 0.407843,
1430
+ 0.407843,
1431
+ 0.388235
1432
+ ],
1433
+ "alpha": 1,
1434
+ "hex": "#686863"
1435
+ },
1436
+ "$extensions": {
1437
+ "com.ponchia.css": {
1438
+ "variable": "--edge",
1439
+ "authoredValue": "var(--text-dim)"
1440
+ }
1441
+ }
1442
+ }
1443
+ },
1423
1444
  "bg": {
1424
1445
  "DEFAULT": {
1425
1446
  "$type": "color",
@@ -2624,6 +2645,27 @@
2624
2645
  }
2625
2646
  }
2626
2647
  },
2648
+ "edge": {
2649
+ "DEFAULT": {
2650
+ "$type": "color",
2651
+ "$value": {
2652
+ "colorSpace": "srgb",
2653
+ "components": [
2654
+ 0.627451,
2655
+ 0.627451,
2656
+ 0.627451
2657
+ ],
2658
+ "alpha": 1,
2659
+ "hex": "#a0a0a0"
2660
+ },
2661
+ "$extensions": {
2662
+ "com.ponchia.css": {
2663
+ "variable": "--edge",
2664
+ "authoredValue": "var(--text-dim)"
2665
+ }
2666
+ }
2667
+ }
2668
+ },
2627
2669
  "bg": {
2628
2670
  "DEFAULT": {
2629
2671
  "$type": "color",