@ponchia/ui 0.6.3 → 0.6.5

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 (51) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +7 -7
  3. package/behaviors/glyph.d.ts +7 -0
  4. package/behaviors/glyph.d.ts.map +1 -1
  5. package/behaviors/glyph.js +58 -4
  6. package/behaviors/index.d.ts +2 -0
  7. package/behaviors/index.d.ts.map +1 -1
  8. package/behaviors/index.js +2 -0
  9. package/behaviors/sources.d.ts +28 -0
  10. package/behaviors/sources.d.ts.map +1 -0
  11. package/behaviors/sources.js +158 -0
  12. package/classes/classes.json +210 -4
  13. package/classes/index.d.ts +75 -1
  14. package/classes/index.js +95 -1
  15. package/css/dots.css +210 -3
  16. package/css/report.css +359 -7
  17. package/css/skins.css +9 -0
  18. package/css/sources.css +18 -0
  19. package/css/spark.css +14 -0
  20. package/css/table.css +7 -1
  21. package/css/tokens.css +8 -1
  22. package/dist/bronto.css +1 -1
  23. package/dist/css/dots.css +1 -1
  24. package/dist/css/report.css +1 -1
  25. package/dist/css/skins.css +1 -1
  26. package/dist/css/sources.css +1 -1
  27. package/dist/css/spark.css +1 -1
  28. package/dist/css/table.css +1 -1
  29. package/dist/css/tokens.css +1 -1
  30. package/docs/dots.md +146 -0
  31. package/docs/frontier-primitives.md +262 -0
  32. package/docs/glyphs.md +114 -0
  33. package/docs/package-contract.md +263 -0
  34. package/docs/reference.md +115 -1
  35. package/docs/reporting.md +296 -16
  36. package/docs/sources.md +32 -0
  37. package/docs/stability.md +6 -3
  38. package/glyphs/glyphs.d.ts +61 -0
  39. package/glyphs/glyphs.js +593 -30
  40. package/llms.txt +79 -25
  41. package/package.json +13 -3
  42. package/qwik/index.d.ts +1 -0
  43. package/qwik/index.d.ts.map +1 -1
  44. package/qwik/index.js +5 -0
  45. package/react/index.d.ts +1 -0
  46. package/react/index.d.ts.map +1 -1
  47. package/react/index.js +3 -0
  48. package/solid/index.d.ts +2 -0
  49. package/solid/index.d.ts.map +1 -1
  50. package/solid/index.js +3 -0
  51. package/tokens/skins.js +22 -9
package/llms.txt CHANGED
@@ -9,7 +9,9 @@
9
9
  > This file orients an LLM/agent. The authoritative, always-correct API
10
10
  > is the TypeScript declarations shipped in this package (paths below):
11
11
  > they are generated from the runtime sources and CI-drift-checked, so
12
- > they never lie. Read them before guessing class or token names.
12
+ > they never lie. Read them before guessing class or token names. For the
13
+ > manifest-level inventory, use `docs/package-contract.md`: it is generated
14
+ > from package.json and lists every export, shipped path, and provenance gate.
13
15
 
14
16
  ## Use the framework
15
17
 
@@ -42,7 +44,7 @@ the path changes from source `css/` to built `dist/css/`:
42
44
  <!-- installed locally -->
43
45
  <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/<leaf>.css" />
44
46
  <!-- or from a CDN; pin the version (pre-1.0, breaking changes ship in the minor) -->
45
- <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.6.3/dist/css/<leaf>.css" />
47
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.6.5/dist/css/<leaf>.css" />
46
48
  ```
47
49
 
48
50
  The flattened default bundle is `dist/bronto.css` (bundler shorthand
@@ -76,6 +78,11 @@ role/aria-modal); `initDisabledGuard()` makes every `aria-disabled` control
76
78
  keyboard-inert (CSS alone is only pointer-inert). For the value-bearing fills,
77
79
  `attrs.meter(value)` / `attrs.progress(value)` from `@ponchia/ui/classes` return
78
80
  `role`+`aria-valuenow/min/max`+the `--value` style to spread onto the host.
81
+ `initSources()` wires `[data-bronto-sources]` citation/source islands:
82
+ `.ui-citation[href^="#"]` and `[data-bronto-source-ref]` focus/highlight the
83
+ matching `.ui-source-card`, seed lightweight preview metadata, and emit
84
+ `bronto:source:focus`; the host still owns numbering, fetching, trust decisions,
85
+ and any rich preview popover.
79
86
 
80
87
  For React/Solid/Qwik, optional thin hook bindings over those behaviors (peer
81
88
  deps `react` / `solid-js` / `@builder.io/qwik`, optional — core stays zero-dep):
@@ -87,13 +94,21 @@ import { useDialog, useToast } from '@ponchia/ui/react'; // or '@ponchia/ui/soli
87
94
  ```
88
95
 
89
96
  Optional display glyphs — dot-matrix bitmaps on the `.ui-dotmatrix` primitive
90
- (decorative by default; `renderGlyph` is SSR-safe, `initDotGlyph` is the DOM form):
97
+ (decorative by default; `renderGlyph` is SSR-safe, `initDotGlyph` is the DOM form).
98
+ `findGlyphs('delete')` resolves an intent word to real names; `renderReadout`
99
+ composes digits into a big Nothing-style numeric. Details: `docs/glyphs.md`.
91
100
 
92
101
  ```js
93
- import { renderGlyph, GLYPH_NAMES } from '@ponchia/ui/glyphs';
102
+ import { renderGlyph, findGlyphs, renderReadout, GLYPH_NAMES } from '@ponchia/ui/glyphs';
94
103
  el.innerHTML = renderGlyph('check', { label: 'Done' });
104
+ el.innerHTML = renderReadout('73%', { label: '73 percent of quota' });
95
105
  ```
96
106
 
107
+ The dot family also has data-bound reporting surfaces — `.ui-waffle` (unit
108
+ chart), `.ui-activity` (contribution grid), `.ui-level` (LED meter),
109
+ `.ui-dotgauge` (radial gauge), `.ui-halftone`, `.ui-readout` — same host-sets-
110
+ the-data / leaf-paints boundary as `ui-spark`/`ui-meter`. Details: `docs/dots.md`.
111
+
97
112
  Layout primitives (core bundle, no media queries — intrinsic Every-Layout
98
113
  composition that responds to content + available space): `ui-stack` (vertical
99
114
  rhythm), `ui-cluster` (wrapping inline row), `ui-grid` (auto-fit columns),
@@ -554,6 +569,7 @@ specifiers only work after a bundler rewrites them:
554
569
  <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/bronto.css" />
555
570
  <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/report.css" />
556
571
  <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/dataviz.css" />
572
+ <link rel="stylesheet" href="./node_modules/@ponchia/ui/dist/css/sources.css" />
557
573
  ```
558
574
 
559
575
  In Vite/webpack/etc., import `@ponchia/ui`, `@ponchia/ui/css/report.css`, and
@@ -577,25 +593,59 @@ Canonical report skeleton:
577
593
  <div class="ui-report__summary">
578
594
  <div class="ui-prose"><p>Use prose only for narrative body content.</p></div>
579
595
  </div>
596
+ <aside class="ui-report__decision" aria-labelledby="decision-title">
597
+ <p class="ui-report__decision-kicker">Decision</p>
598
+ <h3 class="ui-report__decision-title" id="decision-title">Ship the low-risk path</h3>
599
+ <p class="ui-report__decision-body">State the operator-facing call before the evidence.</p>
600
+ <dl class="ui-report__decision-grid">
601
+ <div class="ui-report__decision-item">
602
+ <dt class="ui-report__decision-label">Basis</dt>
603
+ <dd class="ui-report__decision-value">Two verified sources support the call.</dd>
604
+ </div>
605
+ </dl>
606
+ <p class="ui-report__decision-meta">Evidence state: supported · Sources: 4 verified</p>
607
+ </aside>
580
608
  </section>
581
609
  </main>
582
610
  ```
583
611
 
584
- Report rules for agents: static output by default; do not initialize behaviors
585
- over untrusted generated content; sanitize arbitrary LLM/CMS/user HTML before
586
- rendering; use semantic headings; give tables captions and header cells; give
587
- charts captions, legends/direct labels, and fallback data; for a chart, theme
588
- Vega-Lite with `@ponchia/ui/vega` (or hand-author a token-themed inline `<svg>`)
589
- inside a `ui-report__figure` bronto ships no chart component; use
590
- `ui-delta` (`--up`/`--down`/`--flat`, `--invert` when up is bad) for a
591
- trend figure and `ui-compare` (`--2up`) for an A/B / before-after section; use
592
- `ui-report__section--unnumbered` for appendices in numbered reports; never
593
- use raw chromatic inline colors. Format numbers/dates yourself (the framework
594
- aligns figures, it does not format them) — see the reporting cookbook. To make
595
- a PDF, render with `chrome-headless-shell` (or any Chromium) using
596
- `printBackground: true` so figure fills survive — reports are static/zero-JS, so
597
- it is just load print; see "Print and PDF" in `docs/reporting.md`. Full
598
- cookbook: `docs/reporting.md`.
612
+ Report rules for agents:
613
+
614
+ - Static output by default; do not initialize behaviors over untrusted generated
615
+ content; sanitize arbitrary LLM/CMS/user HTML before rendering.
616
+ - Use semantic headings; give tables captions and header cells; give charts
617
+ captions, legends/direct labels, and fallback data.
618
+ - For a chart, theme Vega-Lite with `@ponchia/ui/vega` or hand-author a
619
+ token-themed inline `<svg>` inside a `ui-report__figure`. Bronto ships no
620
+ chart component.
621
+ - Put the above-the-fold call in `ui-report__decision`; use
622
+ `ui-report__finding--critical|--major|--minor|--resolved` only when the
623
+ written finding label also states the severity/status.
624
+ - Use `ui-claim` (`--supported|--partial|--disputed|--unsupported|--unknown`)
625
+ for auditable claims. Pair it with written `ui-claim__status`, source links,
626
+ scope, basis, limits, and caveats; tone is only a scanning aid.
627
+ - Use `ui-evidence-grid` / `ui-evidence-item` for compact evidence packets and
628
+ `ui-evidence-ledger` + `ui-table` for claim/evidence/source matrices.
629
+ - Use `ui-report__actions` for follow-up rows. Real workflow actions should
630
+ include title, owner, due/recheck date, status, criteria, and source/claim
631
+ link when available.
632
+ - Use `ui-source-card` + `ui-provenance` for source-backed claims; stale,
633
+ conflicting, unverified, or generated inputs should be surfaced near affected
634
+ claims, not only in the source appendix.
635
+ - For important reports, emit a sidecar `claims.json` / source archive manifest
636
+ with stable claim IDs, source IDs, status, risk, retrieval time, and
637
+ claim-source relations. The visible HTML remains the primary artifact, but the
638
+ sidecar lets tools prove IDs and high-risk evidence still resolve.
639
+ - Use `ui-delta` (`--up`/`--down`/`--flat`, `--invert` when up is bad) for a
640
+ trend figure and `ui-compare` (`--2up`) for an A/B / before-after section.
641
+ - Use `ui-report__section--unnumbered` for appendices in numbered reports.
642
+ Never use raw chromatic inline colors. Format numbers/dates yourself (the
643
+ framework aligns figures, it does not format them).
644
+ - To make a PDF, render with `chrome-headless-shell` (or any Chromium) using
645
+ `printBackground: true` so figure fills survive. Reports are static/zero-JS,
646
+ so it is just load → print; see "Print and PDF" in `docs/reporting.md`.
647
+
648
+ Full cookbook: `docs/reporting.md`.
599
649
 
600
650
  ## Authoritative offline references (shipped in this package)
601
651
 
@@ -624,8 +674,8 @@ Read these from `node_modules/@ponchia/ui/` — no network needed:
624
674
  density, prose-in-card, when to add a behavior. Read this before
625
675
  re-implementing UI the framework already has an opinion about.
626
676
  - `docs/reporting.md` — static/PDF-first report cookbook for LLM-authored
627
- reports, including report skeletons, chart rules, print utilities, and safety
628
- boundaries.
677
+ reports, including report skeletons, decision/finding/evidence patterns,
678
+ chart rules, print utilities, and safety boundaries.
629
679
  - `docs/annotations.md` — SVG annotation recipes and helper guidance for
630
680
  analytical figures.
631
681
  - `docs/mermaid.md` — theme Mermaid diagrams from bronto tokens (resolved
@@ -673,10 +723,14 @@ Read these from `node_modules/@ponchia/ui/` — no network needed:
673
723
  (§"Table-local state classes" / §"Composition & state") and emitted by the
674
724
  `ui.*()` recipes, but deliberately NOT in `cls`. Do not strip them.
675
725
  - Prefer the `ui.*()` recipes over hand-concatenating modifier strings.
676
- Report/layout classes added in 0.4.1 are the exception: use `cls.report*`,
677
- `cls.chart*`, `cls.printOnly`, or literal documented class names because
678
- there are no `ui.report()` / `ui.chart()` recipes yet. Annotations do have a
679
- `ui.annotation()` recipe for variant/tone selection.
726
+ Report/layout classes are mostly literal (`cls.report*`, `cls.printOnly`,
727
+ `ui-evidence-grid`, `ui-evidence-ledger`, `ui-evidence-item`,
728
+ `ui-evidence-item__title`, `ui-evidence-item__meta`, and
729
+ `ui-evidence-item__body`); use `ui.reportFinding({ severity })` for finding
730
+ severity, `ui.claim({ status })` for claim status, and
731
+ `ui.compare({ cols: 2 })` for hard A/B layouts. Bronto still has no chart
732
+ recipe or component. Annotations do have a `ui.annotation()` recipe for
733
+ variant/tone selection.
680
734
  - For a standalone HTML report, never `<link>` a `@ponchia/ui/css/*.css`
681
735
  package specifier (it does not resolve in a browser) and never assume
682
736
  `dist/bronto.css` carries the report/chart/legend/annotation layers — it
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ponchia/ui",
3
- "version": "0.6.3",
3
+ "version": "0.6.5",
4
4
  "type": "module",
5
5
  "description": "CSS-first design system for interfaces that explain themselves — works in HTML, every framework, and PDF, no component runtime. A standard component set plus an opt-in analytical & report layer (annotations, legends, connectors, data-viz, report grammar). Monochrome with one rationed accent, re-skinnable from one --accent knob. Zero runtime dependencies.",
6
6
  "keywords": [
@@ -63,8 +63,12 @@
63
63
  "docs/theming.md",
64
64
  "docs/contrast.md",
65
65
  "docs/stability.md",
66
+ "docs/package-contract.md",
66
67
  "docs/usage.md",
68
+ "docs/frontier-primitives.md",
67
69
  "docs/reporting.md",
70
+ "docs/dots.md",
71
+ "docs/glyphs.md",
68
72
  "docs/mermaid.md",
69
73
  "docs/d2.md",
70
74
  "docs/vega.md",
@@ -118,6 +122,7 @@
118
122
  "d2:build": "node scripts/gen-d2.mjs",
119
123
  "vega:build": "node scripts/gen-vega.mjs",
120
124
  "reference:build": "node scripts/gen-reference.mjs",
125
+ "package-contract:build": "node scripts/gen-package-contract.mjs",
121
126
  "classes:json:build": "node scripts/gen-classes-json.mjs",
122
127
  "contrast:build": "node scripts/gen-contrast.mjs",
123
128
  "vscode:build": "node scripts/gen-vscode-data.mjs",
@@ -143,14 +148,15 @@
143
148
  "check:pack": "node scripts/check-pack.mjs",
144
149
  "check:release": "node scripts/check-release.mjs",
145
150
  "check:versions": "node scripts/check-versions.mjs",
151
+ "check:public-metadata": "node scripts/check-public-metadata.mjs",
146
152
  "check:doc-recipes": "node scripts/check-doc-recipes.mjs",
147
153
  "check:contract": "node scripts/check-contract.mjs",
148
154
  "check:contrast": "node scripts/check-contrast.mjs",
149
155
  "check:publint": "publint --strict",
150
156
  "check:attw": "attw --pack --ignore-rules no-resolution cjs-resolves-to-esm",
151
- "check": "npm run lint && npm run check:format && npm run check:exports && npm run check:fresh && npm run check:classes && npm run check:recipe-types && npm run check:types && npm run check:shiki && npm run check:dist && npm run check:pack && npm run check:publint && npm run check:attw && npm run check:release && npm run check:versions && npm run check:doc-recipes && npm run check:contract && npm run check:contrast && npm run check:dts-emit && npm run check:glyphs && npm run check:color-policy && npm run check:skins && npm run check:charts && npm run check:mermaid && npm run check:d2 && npm run check:vega && npm run check:report && npm run check:legend && npm run check:chain",
157
+ "check": "npm run lint && npm run check:format && npm run check:exports && npm run check:fresh && npm run check:classes && npm run check:recipe-types && npm run check:types && npm run check:shiki && npm run check:dist && npm run check:pack && npm run check:publint && npm run check:attw && npm run check:release && npm run check:versions && npm run check:public-metadata && npm run check:doc-recipes && npm run check:contract && npm run check:contrast && npm run check:dts-emit && npm run check:glyphs && npm run check:color-policy && npm run check:skins && npm run check:charts && npm run check:mermaid && npm run check:d2 && npm run check:vega && npm run check:report && npm run check:legend && npm run check:chain",
152
158
  "test": "node --test \"test/*.test.mjs\"",
153
- "prepack": "npm run tokens:css:build && npm run tokens:build && npm run dtcg:build && npm run resolved:build && npm run dts:build && npm run dts:emit && npm run reference:build && npm run classes:json:build && npm run contrast:build && npm run vscode:build && npm run skins:build && npm run charts:build && npm run mermaid:build && npm run d2:build && npm run vega:build && npm run dist:build && npm run glyphs:build",
159
+ "prepack": "npm run tokens:css:build && npm run tokens:build && npm run dtcg:build && npm run resolved:build && npm run dts:build && npm run dts:emit && npm run reference:build && npm run package-contract:build && npm run classes:json:build && npm run contrast:build && npm run vscode:build && npm run skins:build && npm run charts:build && npm run mermaid:build && npm run d2:build && npm run vega:build && npm run dist:build && npm run glyphs:build",
154
160
  "prepublishOnly": "npm run check && npm test"
155
161
  },
156
162
  "devDependencies": {
@@ -289,8 +295,12 @@
289
295
  "./docs/theming.md": "./docs/theming.md",
290
296
  "./docs/contrast.md": "./docs/contrast.md",
291
297
  "./docs/stability.md": "./docs/stability.md",
298
+ "./docs/package-contract.md": "./docs/package-contract.md",
292
299
  "./docs/usage.md": "./docs/usage.md",
300
+ "./docs/frontier-primitives.md": "./docs/frontier-primitives.md",
293
301
  "./docs/reporting.md": "./docs/reporting.md",
302
+ "./docs/dots.md": "./docs/dots.md",
303
+ "./docs/glyphs.md": "./docs/glyphs.md",
294
304
  "./docs/mermaid.md": "./docs/mermaid.md",
295
305
  "./docs/d2.md": "./docs/d2.md",
296
306
  "./docs/vega.md": "./docs/vega.md",
package/qwik/index.d.ts CHANGED
@@ -25,6 +25,7 @@ export function useConnectors(opts?: BrontoBindingOptsResolver): void;
25
25
  export function useSpotlight(opts?: BrontoBindingOptsResolver): void;
26
26
  export function useCrosshair(opts?: BrontoBindingOptsResolver): void;
27
27
  export function useCommand(opts?: BrontoBindingOptsResolver): void;
28
+ export function useSources(opts?: BrontoBindingOptsResolver): void;
28
29
  export function useToast(): (message: string, opts?: ToastOpts) => Cleanup;
29
30
  export { applyStoredTheme };
30
31
  export type Cleanup = import("../behaviors/index.js").Cleanup;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAgHA;;;;;;sBAMsB;AACtB,wCAHY,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,SACvC,yBAAyB,GACvB,IAAI,CAIjB;AAGM,sCADK,yBAAyB,CAAC,gBAAgB,GAAG,YAAY,CAAC,GAAmB,IAAI,CAGhC;AAEtD,sCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,wCADK,yBAAyB,GAAmB,IAAI,CAGG;AAExD,qCADK,yBAAyB,GAAmB,IAAI,CAGA;AAErD,+BADK,yBAAyB,GAAmB,IAAI,CAGN;AAE/C,yCADK,yBAAyB,GAAmB,IAAI,CAGI;AAEzD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,+BADK,yBAAyB,GAAmB,IAAI,CAGN;AAE/C,iCADK,yBAAyB,GAAmB,IAAI,CAGJ;AAEjD,gCADK,yBAAyB,GAAmB,IAAI,CAGL;AAEhD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,iCADK,yBAAyB,GAAmB,IAAI,CAGJ;AAEjD,qCADK,yBAAyB,GAAmB,IAAI,CAGA;AAErD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAIlD,4BADO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CACzB;;sBAhLtB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;gCAEzC,QAAQ,GACd,OAAO,GACP;IAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAClD,CAAC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC7C,IAAI,GACJ,SAAS;8BAIa,CAAC,SAAhB,YAAa,sDACd,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;CAAE;sCAI9B,CAAC,SAAhB,YAAa,sDACd,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,IAAI,GACJ,SAAS;iCAyBT,uBAAuB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAiHA;;;;;;sBAMsB;AACtB,wCAHY,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,SACvC,yBAAyB,GACvB,IAAI,CAIjB;AAGM,sCADK,yBAAyB,CAAC,gBAAgB,GAAG,YAAY,CAAC,GAAmB,IAAI,CAGhC;AAEtD,sCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,wCADK,yBAAyB,GAAmB,IAAI,CAGG;AAExD,qCADK,yBAAyB,GAAmB,IAAI,CAGA;AAErD,+BADK,yBAAyB,GAAmB,IAAI,CAGN;AAE/C,yCADK,yBAAyB,GAAmB,IAAI,CAGI;AAEzD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,+BADK,yBAAyB,GAAmB,IAAI,CAGN;AAE/C,iCADK,yBAAyB,GAAmB,IAAI,CAGJ;AAEjD,gCADK,yBAAyB,GAAmB,IAAI,CAGL;AAEhD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,mCADK,yBAAyB,GAAmB,IAAI,CAGF;AAEnD,iCADK,yBAAyB,GAAmB,IAAI,CAGJ;AAEjD,qCADK,yBAAyB,GAAmB,IAAI,CAGA;AAErD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,oCADK,yBAAyB,GAAmB,IAAI,CAGD;AAEpD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAElD,kCADK,yBAAyB,GAAmB,IAAI,CAGH;AAIlD,4BADO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CACzB;;sBArLtB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;gCAEzC,QAAQ,GACd,OAAO,GACP;IAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAChD;IAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAClD,CAAC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC7C,IAAI,GACJ,SAAS;8BAIa,CAAC,SAAhB,YAAa,sDACd,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;CAAE;sCAI9B,CAAC,SAAhB,YAAa,sDACd,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,IAAI,GACJ,SAAS;iCA0BT,uBAAuB"}
package/qwik/index.js CHANGED
@@ -73,6 +73,7 @@ import {
73
73
  initSpotlight,
74
74
  initCrosshair,
75
75
  initCommand,
76
+ initSources,
76
77
  toast,
77
78
  } from '../behaviors/index.js';
78
79
 
@@ -198,6 +199,10 @@ export const useCrosshair = (opts) =>
198
199
  export const useCommand = (opts) =>
199
200
  // eslint-disable-next-line qwik/no-use-visible-task -- delegated DOM glue + cleanup
200
201
  useVisibleTask$((ctx) => start(initCommand, opts, ctx));
202
+ /** @param {BrontoBindingOptsResolver} [opts] @returns {void} */
203
+ export const useSources = (opts) =>
204
+ // eslint-disable-next-line qwik/no-use-visible-task -- delegated DOM glue + cleanup
205
+ useVisibleTask$((ctx) => start(initSources, opts, ctx));
201
206
 
202
207
  /** The `toast()` imperative (no lifecycle of its own).
203
208
  * @returns {(message: string, opts?: ToastOpts) => Cleanup} */
package/react/index.d.ts CHANGED
@@ -24,6 +24,7 @@ export function useConnectors(opts?: BrontoBindingOptsResolver): void;
24
24
  export function useSpotlight(opts?: BrontoBindingOptsResolver): void;
25
25
  export function useCrosshair(opts?: BrontoBindingOptsResolver): void;
26
26
  export function useCommand(opts?: BrontoBindingOptsResolver): void;
27
+ export function useSources(opts?: BrontoBindingOptsResolver): void;
27
28
  export function useToast(): (message: string, opts?: ToastOpts) => Cleanup;
28
29
  export { applyStoredTheme };
29
30
  export type Cleanup = import("../behaviors/index.js").Cleanup;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AA8FA;;;;;sBAKsB;AACtB,wCAHY,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,SACvC,yBAAyB,GACvB,IAAI,CAGjB;AAGM,sCADK,yBAAyB,CAAC,gBAAgB,GAAG,YAAY,CAAC,GAAmB,IAAI,CACb;AAEzE,sCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,wCADK,yBAAyB,GAAmB,IAAI,CACwB;AAE7E,qCADK,yBAAyB,GAAmB,IAAI,CACkB;AAEvE,+BADK,yBAAyB,GAAmB,IAAI,CACM;AAE3D,yCADK,yBAAyB,GAAmB,IAAI,CAC0B;AAE/E,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAEjE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,+BADK,yBAAyB,GAAmB,IAAI,CACM;AAE3D,iCADK,yBAAyB,GAAmB,IAAI,CACU;AAE/D,gCADK,yBAAyB,GAAmB,IAAI,CACQ;AAE7D,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,iCADK,yBAAyB,GAAmB,IAAI,CACU;AAE/D,qCADK,yBAAyB,GAAmB,IAAI,CACkB;AAEvE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAIjE,4BADO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CACzB;;sBA3HtB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;gCAEzC,QAAQ,GACd,OAAO,GACP;IAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAClD,CAAC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC7C,IAAI,GACJ,SAAS;8BAIa,CAAC,SAAhB,YAAa,sDACd,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;CAAE;sCAI9B,CAAC,SAAhB,YAAa,sDACd,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,IAAI,GACJ,SAAS;iCAyBT,uBAAuB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AA+FA;;;;;sBAKsB;AACtB,wCAHY,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,SACvC,yBAAyB,GACvB,IAAI,CAGjB;AAGM,sCADK,yBAAyB,CAAC,gBAAgB,GAAG,YAAY,CAAC,GAAmB,IAAI,CACb;AAEzE,sCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,wCADK,yBAAyB,GAAmB,IAAI,CACwB;AAE7E,qCADK,yBAAyB,GAAmB,IAAI,CACkB;AAEvE,+BADK,yBAAyB,GAAmB,IAAI,CACM;AAE3D,yCADK,yBAAyB,GAAmB,IAAI,CAC0B;AAE/E,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAEjE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,+BADK,yBAAyB,GAAmB,IAAI,CACM;AAE3D,iCADK,yBAAyB,GAAmB,IAAI,CACU;AAE/D,gCADK,yBAAyB,GAAmB,IAAI,CACQ;AAE7D,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,mCADK,yBAAyB,GAAmB,IAAI,CACc;AAEnE,iCADK,yBAAyB,GAAmB,IAAI,CACU;AAE/D,qCADK,yBAAyB,GAAmB,IAAI,CACkB;AAEvE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,oCADK,yBAAyB,GAAmB,IAAI,CACgB;AAErE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAEjE,kCADK,yBAAyB,GAAmB,IAAI,CACY;AAIjE,4BADO,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CACzB;;sBA9HtB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;gCAEzC,QAAQ,GACd,OAAO,GACP;IAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAClD,CAAC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC7C,IAAI,GACJ,SAAS;8BAIa,CAAC,SAAhB,YAAa,sDACd,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;CAAE;sCAI9B,CAAC,SAAhB,YAAa,sDACd,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,IAAI,GACJ,SAAS;iCA0BT,uBAAuB"}
package/react/index.js CHANGED
@@ -67,6 +67,7 @@ import {
67
67
  initSpotlight,
68
68
  initCrosshair,
69
69
  initCommand,
70
+ initSources,
70
71
  toast,
71
72
  } from '../behaviors/index.js';
72
73
 
@@ -140,6 +141,8 @@ export const useSpotlight = (opts) => useBrontoBehavior(initSpotlight, opts);
140
141
  export const useCrosshair = (opts) => useBrontoBehavior(initCrosshair, opts);
141
142
  /** @param {BrontoBindingOptsResolver} [opts] @returns {void} */
142
143
  export const useCommand = (opts) => useBrontoBehavior(initCommand, opts);
144
+ /** @param {BrontoBindingOptsResolver} [opts] @returns {void} */
145
+ export const useSources = (opts) => useBrontoBehavior(initSources, opts);
143
146
 
144
147
  /** The `toast()` imperative (no lifecycle of its own).
145
148
  * @returns {(message: string, opts?: ToastOpts) => Cleanup} */
package/solid/index.d.ts CHANGED
@@ -43,6 +43,8 @@ export const useSpotlight: (opts?: BrontoBindingOptsResolver) => void;
43
43
  export const useCrosshair: (opts?: BrontoBindingOptsResolver) => void;
44
44
  /** @type {(opts?: BrontoBindingOptsResolver) => void} */
45
45
  export const useCommand: (opts?: BrontoBindingOptsResolver) => void;
46
+ /** @type {(opts?: BrontoBindingOptsResolver) => void} */
47
+ export const useSources: (opts?: BrontoBindingOptsResolver) => void;
46
48
  /** The `toast()` imperative (no lifecycle of its own).
47
49
  * @type {() => (message: string, opts?: ToastOpts) => Cleanup} */
48
50
  export const useToast: () => (message: string, opts?: ToastOpts) => Cleanup;
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAgGA;;;;;GAKG;AACH,wCAJW,CAAC,IAAI,CAAC,EAAE,YAAY,KAAK,OAAO,GAAG,IAAI,SACvC,yBAAyB,GACvB,IAAI,CAOhB;AAED,0FAA0F;AAC1F,6BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,CAAC,gBAAgB,GAAG,YAAY,CAAC,KAAK,IAAI,CACL;AACjF,yDAAyD;AACzD,6BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACwB;AAC7E,yDAAyD;AACzD,+BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACgC;AACrF,yDAAyD;AACzD,4BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CAC0B;AAC/E,yDAAyD;AACzD,sBADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACc;AACnE,yDAAyD;AACzD,gCADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACkC;AACvF,yDAAyD;AACzD,0BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACsB;AAC3E,yDAAyD;AACzD,yBADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACoB;AACzE,yDAAyD;AACzD,2BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACwB;AAC7E,yDAAyD;AACzD,sBADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACc;AACnE,yDAAyD;AACzD,wBADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACkB;AACvE,yDAAyD;AACzD,uBADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACgB;AACrE,yDAAyD;AACzD,0BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACsB;AAC3E,yDAAyD;AACzD,0BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACsB;AAC3E,yDAAyD;AACzD,wBADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACkB;AACvE,yDAAyD;AACzD,4BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CAC0B;AAC/E,yDAAyD;AACzD,2BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACwB;AAC7E,yDAAyD;AACzD,2BADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACwB;AAC7E,yDAAyD;AACzD,yBADW,CAAC,IAAI,CAAC,EAAE,yBAAyB,KAAK,IAAI,CACoB;AAEzE;kEACkE;AAClE,uBADU,MAAM,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,SAAS,KAAK,OAAO,CAC1B;;sBAhIvB,OAAO,uBAAuB,EAAE,OAAO;2BACvC,OAAO,uBAAuB,EAAE,YAAY;+BAC5C,OAAO,uBAAuB,EAAE,gBAAgB;wBAChD,OAAO,uBAAuB,EAAE,SAAS;gCAEzC,QAAQ,GACd,OAAO,GACP;IAAE,OAAO,EAAE,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAA;CAAE,GAClD,CAAC,MAAM,QAAQ,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GAC7C,IAAI,GACJ,SAAS;;;;8BAKa,CAAC,SAAhB,YAAa,sDACd,IAAI,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,iBAAiB,CAAA;CAAE;;;;sCAK9B,CAAC,SAAhB,YAAa,sDACd,iBAAiB,CAAC,CAAC,CAAC,GAC1B,CAAC,MAAM,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,GAAG,SAAS,CAAC,GAC/C,IAAI,GACJ,SAAS;iCAyBT,uBAAuB"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"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"}
package/solid/index.js CHANGED
@@ -69,6 +69,7 @@ import {
69
69
  initSpotlight,
70
70
  initCrosshair,
71
71
  initCommand,
72
+ initSources,
72
73
  toast,
73
74
  } from '../behaviors/index.js';
74
75
 
@@ -145,6 +146,8 @@ export const useSpotlight = (opts) => useBrontoBehavior(initSpotlight, opts);
145
146
  export const useCrosshair = (opts) => useBrontoBehavior(initCrosshair, opts);
146
147
  /** @type {(opts?: BrontoBindingOptsResolver) => void} */
147
148
  export const useCommand = (opts) => useBrontoBehavior(initCommand, opts);
149
+ /** @type {(opts?: BrontoBindingOptsResolver) => void} */
150
+ export const useSources = (opts) => useBrontoBehavior(initSources, opts);
148
151
 
149
152
  /** The `toast()` imperative (no lifecycle of its own).
150
153
  * @type {() => (message: string, opts?: ToastOpts) => Cleanup} */
package/tokens/skins.js CHANGED
@@ -38,22 +38,35 @@ export const skins = {
38
38
  'amber-crt': {
39
39
  label: 'Amber CRT',
40
40
  // Phosphor amber. Dark+saturated in light theme (AA under a white label),
41
- // bright with a warm bloom in dark theme (the classic CRT glow).
42
- light: { '--accent': 'oklch(52% 0.11 67deg)' },
43
- dark: { '--accent': 'oklch(82% 0.15 82deg)', '--dotmatrix-glow': '0.4em' },
41
+ // bright with a warm bloom in dark theme (the classic CRT glow). The glow
42
+ // and a deeper --pulse breath (`--dotmatrix-pulse-min`) are the Tier-3
43
+ // "display expression" knobs the colorway is allowed to re-point.
44
+ light: { '--accent': 'oklch(52% 0.11 67deg)', '--dotmatrix-pulse-min': '0.35' },
45
+ dark: {
46
+ '--accent': 'oklch(82% 0.15 82deg)',
47
+ '--dotmatrix-glow': '0.4em',
48
+ '--dotmatrix-pulse-min': '0.3',
49
+ },
44
50
  },
45
51
  'phosphor-green': {
46
52
  label: 'Phosphor Green',
47
- // P1-phosphor green. Same light=dark-ink / dark=bright-glow split.
48
- light: { '--accent': 'oklch(52% 0.13 150deg)' },
49
- dark: { '--accent': 'oklch(84% 0.19 150deg)', '--dotmatrix-glow': '0.4em' },
53
+ // P1-phosphor green. Same light=dark-ink / dark=bright-glow split, with the
54
+ // same deeper phosphor breath as Amber CRT.
55
+ light: { '--accent': 'oklch(52% 0.13 150deg)', '--dotmatrix-pulse-min': '0.35' },
56
+ dark: {
57
+ '--accent': 'oklch(84% 0.19 150deg)',
58
+ '--dotmatrix-glow': '0.4em',
59
+ '--dotmatrix-pulse-min': '0.3',
60
+ },
50
61
  },
51
62
  'e-ink': {
52
63
  label: 'E-ink',
53
64
  // The opposite move: drop the hue almost entirely → a near-monochrome
54
- // ink/paper accent, no glow. The most restrained look in the set.
55
- light: { '--accent': 'oklch(34% 0.012 250deg)' },
56
- dark: { '--accent': 'oklch(84% 0.008 250deg)' },
65
+ // ink/paper accent, no glow. The most restrained look in the set — and the
66
+ // --reveal scan snaps on instantly (`--dotmatrix-reveal-step: 0ms`), since
67
+ // e-ink panels don't sweep, they flip.
68
+ light: { '--accent': 'oklch(34% 0.012 250deg)', '--dotmatrix-reveal-step': '0ms' },
69
+ dark: { '--accent': 'oklch(84% 0.008 250deg)', '--dotmatrix-reveal-step': '0ms' },
57
70
  },
58
71
  };
59
72