@ponchia/ui 0.6.4 → 0.6.6
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.
- package/CHANGELOG.md +106 -0
- package/README.md +17 -10
- package/behaviors/index.d.ts +2 -0
- package/behaviors/index.d.ts.map +1 -1
- package/behaviors/index.js +2 -0
- package/behaviors/sources.d.ts +28 -0
- package/behaviors/sources.d.ts.map +1 -0
- package/behaviors/sources.js +158 -0
- package/classes/classes.json +146 -2
- package/classes/index.d.ts +63 -0
- package/classes/index.js +80 -0
- package/css/report.css +384 -3
- package/css/sources.css +18 -0
- package/css/tokens.css +8 -1
- package/dist/bronto.css +1 -1
- package/dist/css/report.css +1 -1
- package/dist/css/sources.css +1 -1
- package/dist/css/tokens.css +1 -1
- package/docs/frontier-primitives.md +286 -0
- package/docs/package-contract.md +263 -0
- package/docs/reference.md +75 -2
- package/docs/reporting.md +305 -15
- package/docs/sources.md +32 -0
- package/docs/stability.md +6 -3
- package/llms.txt +71 -25
- package/package.json +11 -3
- package/qwik/index.d.ts +1 -0
- package/qwik/index.d.ts.map +1 -1
- package/qwik/index.js +5 -0
- package/react/index.d.ts +1 -0
- package/react/index.d.ts.map +1 -1
- package/react/index.js +3 -0
- package/solid/index.d.ts +2 -0
- package/solid/index.d.ts.map +1 -1
- package/solid/index.js +3 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
# Frontier primitives
|
|
2
|
+
|
|
3
|
+
This is the strategic memory for Bronto's design-system differentiation. The
|
|
4
|
+
goal is not to out-catalog Radix, Carbon, Atlassian, Fluent, Spectrum, or
|
|
5
|
+
shadcn. Those systems already cover the standard component center: buttons,
|
|
6
|
+
forms, dialogs, tabs, menus, cards, tables, tooltips, badges, navigation,
|
|
7
|
+
loaders, and date inputs.
|
|
8
|
+
|
|
9
|
+
Bronto should instead own the interface layer that makes complex work legible:
|
|
10
|
+
explanation, provenance, relationships, command access, workbench ergonomics,
|
|
11
|
+
generated reports, and durable system state. In short: interfaces that explain
|
|
12
|
+
themselves.
|
|
13
|
+
|
|
14
|
+
## Boundary
|
|
15
|
+
|
|
16
|
+
The pattern that worked for annotations should stay the rule:
|
|
17
|
+
|
|
18
|
+
- Bronto owns visual grammar, class vocabulary, token use, accessibility
|
|
19
|
+
guidance, pure geometry helpers, and small idempotent behavior kernels.
|
|
20
|
+
- The host owns domain state, data mapping, chart scales, tour step order,
|
|
21
|
+
command execution, persistence, AI/tool orchestration, and announcements that
|
|
22
|
+
need product-specific wording.
|
|
23
|
+
- New surfaces stay opt-in. They should not enter `dist/bronto.css` by default
|
|
24
|
+
unless they are clearly universal chrome.
|
|
25
|
+
- Prefer CSS and markup first. Add JS only when the browser cannot express the
|
|
26
|
+
behavior without measuring, filtering, keyboard state, or pointer tracking.
|
|
27
|
+
|
|
28
|
+
This keeps Bronto useful across Astro, SvelteKit, React, Solid, Qwik, plain
|
|
29
|
+
HTML, and generated static reports without becoming a framework component kit.
|
|
30
|
+
|
|
31
|
+
## Already aligned in 0.5.0
|
|
32
|
+
|
|
33
|
+
The analytical/generated-report suite is already the first concrete expression
|
|
34
|
+
of this strategy:
|
|
35
|
+
|
|
36
|
+
- `annotations`: subject / connector / note grammar for SVG figures.
|
|
37
|
+
- `legends`: data keys that prevent chart meaning drifting from palette tokens.
|
|
38
|
+
- `marks`: semantic prose evidence and passage brackets.
|
|
39
|
+
- `connectors`: DOMRect leader lines between related UI regions.
|
|
40
|
+
- `spotlight`: the visual language of guided focus without a tour engine.
|
|
41
|
+
- `crosshair`: pointer/ruler/readout surface without chart-domain mapping.
|
|
42
|
+
- `selection`: shared selected/excluded/candidate states without hit-testing.
|
|
43
|
+
- `sources`: citation / source-card / source-list / provenance with a
|
|
44
|
+
trust-state grammar (candidate #1 below — now shipped in 0.5.0).
|
|
45
|
+
|
|
46
|
+
These are intentionally not a chart framework. They are communication
|
|
47
|
+
primitives.
|
|
48
|
+
|
|
49
|
+
## 2026 scout batch — report & evidence grammar
|
|
50
|
+
|
|
51
|
+
A multi-source scout pass (2026-06-03) surfaced the next concrete batch. All
|
|
52
|
+
four are novel, Baseline-clean on the 2026 floor, and squarely on the
|
|
53
|
+
"explains itself" north star — the report / review / evidence lane. They ship
|
|
54
|
+
as opt-in surfaces (never default `dist/bronto.css`), CSS-and-markup first,
|
|
55
|
+
each with the same host-owns-state boundary that kept the chart renderer out in
|
|
56
|
+
0.6.0. **All four shipped** — `ui-diff` in PR #97, then `ui-code` / `ui-spark` /
|
|
57
|
+
`ui-sidenote` in PR #100 — opt-in leaves, unreleased on the 0.6.0 package line.
|
|
58
|
+
|
|
59
|
+
### `ui-diff` — line/row change grammar ✅ shipped
|
|
60
|
+
|
|
61
|
+
A CSS-grid gutter grammar (`ui-diff`, `__row --add/--remove/--context`,
|
|
62
|
+
`__hunk`, `--unified/--split`). The host supplies pre-classified rows; Bronto
|
|
63
|
+
only paints — redundant `::before` +/- sign glyphs (never colour-only), tone
|
|
64
|
+
tints, and optional subgrid alignment that degrades to plain grid. Composes
|
|
65
|
+
with the shipped `ui-compare--2up`. Boundary: all tokenizing, row alignment,
|
|
66
|
+
and hunk computation stay in the host — the moment Bronto parses or aligns rows
|
|
67
|
+
it crosses the line that deleted the bar renderer in 0.6.0. Diff is the most
|
|
68
|
+
explanation-dense surface Bronto does not yet own.
|
|
69
|
+
|
|
70
|
+
### `ui-code` — fenced-code evidence chrome
|
|
71
|
+
|
|
72
|
+
A static code surface that paints already-tokenized markup (head bar,
|
|
73
|
+
line-number gutter via CSS counters, `.is-add` / `.is-del` / `.is-hl` line
|
|
74
|
+
states) and **never parses**. The host — or Shiki, via the shipped
|
|
75
|
+
`shiki/nothing.json` token-colour theme — supplies the token spans; Bronto owns
|
|
76
|
+
chrome only. Code-as-evidence for changelogs, version history, and generated
|
|
77
|
+
reports; pairs with the `.ui-src` provenance pill and marks. Degrades to a
|
|
78
|
+
plain scrollable `<pre>`.
|
|
79
|
+
|
|
80
|
+
### `ui-spark` — inline datawords
|
|
81
|
+
|
|
82
|
+
Word-sized inline microcharts (line / bar / tristate / win-loss) for
|
|
83
|
+
trend-in-a-sentence inside reports and dense tables — the inline-series gap the
|
|
84
|
+
scalar `ui-delta` / `ui-num` / `ui-stat` leave open, and one block-level Vega
|
|
85
|
+
will not fill. The host normalises each point to `0..1` (`--v`); Bronto paints
|
|
86
|
+
geometry via inline SVG + custom properties + `currentColor`. No JS,
|
|
87
|
+
SSR-static, print-survivable. Boundary: Bronto refuses raw values and
|
|
88
|
+
min/max/scale computation, and every spark carries a host-supplied text / aria
|
|
89
|
+
equivalent (a bare sparkline is opaque to AT).
|
|
90
|
+
|
|
91
|
+
### `ui-sidenote` / `ui-marginnote` — marginal explanation
|
|
92
|
+
|
|
93
|
+
Numbered margin sidenotes plus unnumbered marginnotes with CSS-counter
|
|
94
|
+
numbering and zero-JS responsive collapse (the Tufte `:checked` pattern);
|
|
95
|
+
degrades to an inline aside on narrow viewports and a footnote under
|
|
96
|
+
`@media print`. The channel for evidence, caveats, and provenance asides that
|
|
97
|
+
do not belong in the main column. Scope it as typographic margin notes,
|
|
98
|
+
reconciled with the existing `report.css` `__footnotes` numbering — not a
|
|
99
|
+
second backref engine.
|
|
100
|
+
|
|
101
|
+
## 2026 scout batch #2 — explanation & provenance cluster ✅ shipped
|
|
102
|
+
|
|
103
|
+
A second scout pass (2026-06-04) ranked the next five and they all shipped as
|
|
104
|
+
opt-in leaves (unreleased on the 0.6.0 line). All clear web-native + fit +
|
|
105
|
+
leverage, and sit dead-centre on the explanation / provenance / orientation
|
|
106
|
+
lanes — not component parity.
|
|
107
|
+
|
|
108
|
+
### `ui-textref` — deep-link to the cited sentence ✅ shipped
|
|
109
|
+
|
|
110
|
+
`@ponchia/ui/css/textref.css`. A citation whose `href` is a URL Text Fragment
|
|
111
|
+
(`#…:~:text=`): the browser scrolls to + highlights the exact quoted text, and
|
|
112
|
+
Bronto owns the on-brand `::target-text` paint (`--textref-highlight`). The
|
|
113
|
+
cheapest high-leverage item in the scout — extends the `sources.css` trust layer
|
|
114
|
+
from "label a source" to "point inside it". The host builds the fragment URL (a
|
|
115
|
+
three-line pure encoder, documented); no kernel. Degrades cleanly where Text
|
|
116
|
+
Fragments are unsupported.
|
|
117
|
+
|
|
118
|
+
### `ui-bullet` — Stephen-Few bullet graph ✅ shipped
|
|
119
|
+
|
|
120
|
+
`@ponchia/ui/css/bullet.css`. Measure bar + target tick + 2–3 grayscale
|
|
121
|
+
qualitative bands — the canonical SLO / error-budget figure `ui-meter` cannot
|
|
122
|
+
encode. Same host-normalises-to-0..1 contract as `ui-spark` (`--v` measure,
|
|
123
|
+
`--t` target, `--band-lo`/`--band-hi` boundaries; `ui.bulletMeasure({ tone })`).
|
|
124
|
+
Few designed it grayscale, which is exactly the Nothing palette. Requires a
|
|
125
|
+
host-written `role="img"` + `aria-label`.
|
|
126
|
+
|
|
127
|
+
### `ui-term` / `ui-glossary` — inline glossary ✅ shipped
|
|
128
|
+
|
|
129
|
+
`@ponchia/ui/css/term.css`. The accessible upgrade of the touch/keyboard-broken
|
|
130
|
+
`abbr[title]`: a `ui-term` `<button popovertarget>` whose `ui-def` definition is
|
|
131
|
+
a native `[popover]`, plus an end-of-document `ui-glossary` `<dl>`. The native
|
|
132
|
+
popover pairing gives open/Esc/light-dismiss for free — no kernel. Popovers don't
|
|
133
|
+
print, so the printed doc leans on the glossary block.
|
|
134
|
+
|
|
135
|
+
### `ui-toc` — scrollspy table of contents ✅ shipped
|
|
136
|
+
|
|
137
|
+
`@ponchia/ui/css/toc.css`. A sticky contents rail (`--toc-top`) whose active
|
|
138
|
+
entry keys on `aria-current="true"`. CSS can't know the in-view section, so the
|
|
139
|
+
host mirrors it — statically, or with a small copy-paste IntersectionObserver
|
|
140
|
+
(no kernel ships). Degrades to a plain anchored list.
|
|
141
|
+
|
|
142
|
+
### `ui-tree` — hierarchy outline ✅ shipped
|
|
143
|
+
|
|
144
|
+
`@ponchia/ui/css/tree.css`. A depth-indented outline on nested native
|
|
145
|
+
`<details>` (`ui-tree__branch`/`__leaf`/`__summary`/`__label`; add `name` for an
|
|
146
|
+
exclusive-accordion group). Composes the disclosure grammar `ui-accordion` owns —
|
|
147
|
+
it does not reinvent it. A11y honesty: a `<details>` group is a disclosure group,
|
|
148
|
+
NOT an ARIA `tree`; the roving-focus kernel is deferred behind a real consumer
|
|
149
|
+
(e.g. a workbench file pane).
|
|
150
|
+
|
|
151
|
+
## Next strong candidates
|
|
152
|
+
|
|
153
|
+
### 1. Source, citation, and provenance UI — ✅ shipped in 0.5.0
|
|
154
|
+
|
|
155
|
+
Shipped as `@ponchia/ui/css/sources.css` (`ui-citation`/`ui-source-card`/
|
|
156
|
+
`ui-source-list`/`ui-provenance` + the cross-cutting `ui-src--*` trust states),
|
|
157
|
+
matching the surface below. The optional `initSources` behavior now adds
|
|
158
|
+
source-card focus, a temporary `.is-source-active` cue, and lightweight preview
|
|
159
|
+
metadata over existing citation/source IDs.
|
|
160
|
+
|
|
161
|
+
Why it matters: AI output, generated reports, audit views, docs, and operational
|
|
162
|
+
tools all need to answer "where did this come from?" Normal UI kits have tags
|
|
163
|
+
and footnotes, but not a trust grammar. The shipped surface and its trust-state
|
|
164
|
+
vocabulary are documented with the component; richer preview popovers remain
|
|
165
|
+
host-owned.
|
|
166
|
+
|
|
167
|
+
### 2. Lifecycle and system-state UI — 🟡 `ui-state` family shipped in 0.5.0
|
|
168
|
+
|
|
169
|
+
Shipped as `@ponchia/ui/css/state.css` (`ui-state` + the canonical state matrix
|
|
170
|
+
+ `ui-syncbar`), matching the "good first build" below. `ui-job` (background
|
|
171
|
+
progress) and `ui-conflict` (resolution affordances) remain deferred until a
|
|
172
|
+
consumer needs them; `ui-review-state` is covered by the reviewed/needs-review
|
|
173
|
+
state modifiers.
|
|
174
|
+
|
|
175
|
+
Why it matters: serious apps spend a lot of time in states like saving, saved,
|
|
176
|
+
queued, offline, stale, retrying, conflicted, locked, reviewed, and background
|
|
177
|
+
job running. These states are usually improvised per product, so even good apps
|
|
178
|
+
feel inconsistent. Still deferred: `ui-job` (background progress) and
|
|
179
|
+
`ui-conflict` (resolution affordances), each until a consumer needs it.
|
|
180
|
+
|
|
181
|
+
### 3. Command-first UI — ✅ shipped in 0.5.0
|
|
182
|
+
|
|
183
|
+
The keyboard-hint primitive (`.ui-shortcut` + `.ui-shortcut__sep` over `.ui-kbd`,
|
|
184
|
+
core chrome) landed first, then the `ui-command` palette: the
|
|
185
|
+
`@ponchia/ui/css/command.css` shell + the `initCommand` `data-bronto-command`
|
|
186
|
+
behavior (filter, roving focus, `bronto:command:select`/`close`) + `useCommand`
|
|
187
|
+
bindings. The host still owns the action registry and execution — Bronto only
|
|
188
|
+
filters and navigates.
|
|
189
|
+
|
|
190
|
+
Why it matters: command palettes turn a product from a page collection into a
|
|
191
|
+
tool. Existing libraries such as cmdk and kbar are good, but Bronto can own the
|
|
192
|
+
design-system contract: shortcuts, actions, groups, disabled reasons, context,
|
|
193
|
+
and command result feedback. The host still owns the action registry and
|
|
194
|
+
execution; global Cmd/Ctrl+K stays opt-in by design.
|
|
195
|
+
|
|
196
|
+
### 4. Workbench UI — 🟡 inspector / property / selectionbar shipped in 0.5.0
|
|
197
|
+
|
|
198
|
+
Shipped as `@ponchia/ui/css/workbench.css` (`ui-inspector`, `ui-property`,
|
|
199
|
+
`ui-selectionbar`) — the low-risk CSS core below. Resizable split panes
|
|
200
|
+
(`ui-splitter`, an ARIA window-splitter behavior) and drag handles remain
|
|
201
|
+
deferred until a consumer needs them.
|
|
202
|
+
|
|
203
|
+
Why it matters: real tools need inspectors, object action bars, split panes,
|
|
204
|
+
resize handles, property rows, dense trees, and selected-object affordances.
|
|
205
|
+
Generic UI kits tend to stop at cards/tables/forms, leaving every app to build
|
|
206
|
+
its own half-consistent workbench. Still open: a `ui-splitter` ARIA
|
|
207
|
+
window-splitter behavior (focusable separator, `aria-valuemin/max/now`,
|
|
208
|
+
arrow-key resize) and drag/drop affordances — both deferred, and Bronto should
|
|
209
|
+
style drag handles, not become a drag-and-drop framework.
|
|
210
|
+
|
|
211
|
+
### 5. Generated-content and AI trust primitives — 🟡 shipped in 0.5.0
|
|
212
|
+
|
|
213
|
+
Shipped as `@ponchia/ui/css/generated.css` (`ui-generated`, `ui-origin-label`,
|
|
214
|
+
`ui-reasoning`, `ui-tool-log` / `ui-tool-call`) — the origin/provenance labels,
|
|
215
|
+
generated-content wrapper, and tool-call log of the "good first build" below.
|
|
216
|
+
Chat-thread components and a `ui-confidence` widget are intentionally not shipped.
|
|
217
|
+
|
|
218
|
+
Why it matters: AI interfaces are becoming common, but most UI systems either
|
|
219
|
+
ship chat bubbles or nothing. Bronto should not become a chat framework. It
|
|
220
|
+
should own the trust surfaces around generated content. The host still owns model
|
|
221
|
+
metadata, tool execution, traces, redaction, and safety; chat-thread components
|
|
222
|
+
and a `ui-confidence` widget are intentionally not shipped (never fabricate a
|
|
223
|
+
precision signal the product does not have).
|
|
224
|
+
|
|
225
|
+
## Priority
|
|
226
|
+
|
|
227
|
+
The CSS cores of candidates 1–5 shipped in 0.5.0, the 2026 scout batch shipped
|
|
228
|
+
in PRs #97/#100, and scout batch #2 (textref / bullet / term / toc / tree)
|
|
229
|
+
shipped 2026-06-04.
|
|
230
|
+
|
|
231
|
+
**The proven lane is report / provenance / explanation** — it is the only lane
|
|
232
|
+
with a real consumer (LLM-authored reports). The command, workbench, and
|
|
233
|
+
durable-state lanes shipped their CSS cores and have had **no non-demo
|
|
234
|
+
consumer since**; their follow-ons are demand-gated, not queued. Active work
|
|
235
|
+
is therefore consolidation of the report lane (hub routing, print/PDF
|
|
236
|
+
fidelity, consumer-contract gates), not new surfaces.
|
|
237
|
+
|
|
238
|
+
### Report-lane candidates (build only after the routing hub carries them)
|
|
239
|
+
|
|
240
|
+
From the 2026-06-09 local scout — kept on merit, deliberately NOT started
|
|
241
|
+
until the reporting.md routing/adoption pass has landed (shipping more leaves
|
|
242
|
+
into an unrouted hub repeats the discoverability gap):
|
|
243
|
+
|
|
244
|
+
1. `ui-interval` — honest low–high uncertainty span + ± chip, inline in
|
|
245
|
+
reports; the error-bar grammar generic kits never ship.
|
|
246
|
+
2. `ui-clamp` — N-line clamp + fade + native show-more for claim-basis and
|
|
247
|
+
source excerpts (`-webkit-line-clamp` + `mask-image` + `<details>`).
|
|
248
|
+
3. `ui-highlights` — cited-evidence / search-hit spans painted from host
|
|
249
|
+
Ranges via the CSS Custom Highlight API (progressive enhancement; clean
|
|
250
|
+
no-op below the floor).
|
|
251
|
+
|
|
252
|
+
### Dormant (build with the first real app consumer, not before)
|
|
253
|
+
|
|
254
|
+
- `ui-job` / `ui-conflict` lifecycle surfaces (candidate 2).
|
|
255
|
+
- `ui-splitter` ARIA window-splitter behavior + drag affordances
|
|
256
|
+
(candidate 4), which is also the gating consumer for `ui-tree`'s deferred
|
|
257
|
+
roving-focus tree kernel.
|
|
258
|
+
- Any command/workbench follow-ons beyond the shipped CSS cores.
|
|
259
|
+
|
|
260
|
+
Dormant items stay gated on a real consumer needing them. This posture keeps
|
|
261
|
+
Bronto differentiated while staying inside its core philosophy: small,
|
|
262
|
+
framework-agnostic primitives that make complex interfaces clearer.
|
|
263
|
+
|
|
264
|
+
## Inspiration watchlist
|
|
265
|
+
|
|
266
|
+
These are examples of the kind of older or under-supported work worth mining for
|
|
267
|
+
ideas. They are not dependency recommendations; the useful part is the shape of
|
|
268
|
+
the primitive, not the implementation stack.
|
|
269
|
+
|
|
270
|
+
| Project | Useful idea | Bronto-shaped lesson |
|
|
271
|
+
| --- | --- | --- |
|
|
272
|
+
| Susie Lu `d3-annotation` | Subject / connector / note grammar for explaining SVG figures. | Keep annotation as a grammar, not a chart engine or editor. |
|
|
273
|
+
| Susie Lu `d3-legend` | Colour, size, and symbol legends as reusable figure keys. | Legends belong in the design system because they explain visual encodings. |
|
|
274
|
+
| Twitter `labella.js` | One-dimensional label collision avoidance for timelines and dense axes. | A tiny `declutterLabels` helper can be more valuable than another component. |
|
|
275
|
+
| `D3-Labeler` / `d3fc-label-layout` | Greedy/simulated-annealing label placement. | Direct labels need layout helpers; host still owns chart scales and data. |
|
|
276
|
+
| `d3-lasso` | Possible / not-possible / selected / not-selected states while drawing a region. | Bronto should own selection vocabulary and maybe region visuals, not hit-testing. |
|
|
277
|
+
| `leader-line` / `react-xarrows` | Lines and arrows between DOM elements. | DOMRect connectors are broadly useful, but should be styleable and token-bound. |
|
|
278
|
+
| LinkedIn `hopscotch` / `chardin.js` | Guided tours as target + note + step metadata. | Bronto should own spotlight visuals, not the tour state machine. |
|
|
279
|
+
| `Waypoints` / `gumshoe` | Scroll-triggered section awareness and scrollspy navigation. | Long documents and reports may need section-progress/navigation affordances. |
|
|
280
|
+
| `mark.js`, `Rangy`, `TextHighlighter` | Search hits, user text selections, persistent text highlights. | Evidence/source marks need careful semantics around ranges and generated content. |
|
|
281
|
+
| `Mousetrap` / `Keypress` | Keyboard shortcut grammar and key sequences. | Command-first UI needs shortcut display and action dispatch boundaries. |
|
|
282
|
+
| `Split.js` | Small, unopinionated resizable split views. | Workbench panes are worth styling; behavior must follow accessible splitter rules. |
|
|
283
|
+
| jQuery Steps / old wizard plugins | Multi-step flows with progress, validation, and branching. | If Bronto adds stepper/wizard UI, it should be state vocabulary first. |
|
|
284
|
+
| `progressbar.js` | Lightweight progress shapes and determinate/indeterminate motion. | Lifecycle/job UI should make long-running work persistent and legible. |
|
|
285
|
+
| `react-json-view` / old JSON viewers | Inspectable structured data with collapse/copy/path affordances. | Generated/tool output needs compact inspector primitives without a React lock-in. |
|
|
286
|
+
| old diff viewers / `jsdifflib` | Side-by-side and inline change explanation. | Becoming `ui-diff` (2026 batch): Bronto paints the row/gutter grammar, the host pre-classifies rows — parsing and alignment stay outside Bronto. |
|
|
@@ -0,0 +1,263 @@
|
|
|
1
|
+
<!-- @ponchia/ui - GENERATED from package.json by scripts/gen-package-contract.mjs.
|
|
2
|
+
Do not edit by hand; run `npm run package-contract:build`.
|
|
3
|
+
Drift-checked in CI through check:fresh. -->
|
|
4
|
+
|
|
5
|
+
# Package Contract
|
|
6
|
+
|
|
7
|
+
This is the manifest-facing contract for `@ponchia/ui`: every exported
|
|
8
|
+
subpath, every `files` allowlist entry, and the committed generated-artifact
|
|
9
|
+
pipeline. It complements [stability.md](./stability.md), which defines the
|
|
10
|
+
semantic versioning contract for the surfaces listed here.
|
|
11
|
+
|
|
12
|
+
## Contract Summary
|
|
13
|
+
|
|
14
|
+
| Surface group | Stability | Contract |
|
|
15
|
+
| --- | --- | --- |
|
|
16
|
+
| CSS root and `dist/bronto.css` | Stable | CSS-only default bundle. CSS side-effect imports are supported in CSS-aware bundlers; Node/runtime JS root imports are not. |
|
|
17
|
+
| CSS leaves | Stable additive | Direct leaves are generated as layered `dist/css/*.css` exports; raw unlayered source leaves are explicit escape hatches under `./css/unlayered/*`. |
|
|
18
|
+
| JS subpaths | Stable | ESM-only public subpaths. Runtime behavior is SSR-safe and dependency-free unless a framework binding declares an optional peer. |
|
|
19
|
+
| Machine-readable data | Stable additive | JSON/data exports are for non-JS hosts, validators, renderers, and offline agents. Additive fields are allowed within a compatible minor. |
|
|
20
|
+
| Shipped docs | Stable paths | Curated Markdown/text docs ship inside the npm tarball for offline readers. Generated docs are regenerated and drift-checked. |
|
|
21
|
+
| Fonts | Stable path pattern | Doto assets ship under `fonts/*` with their OFL license. |
|
|
22
|
+
| Repo tooling, demos, tests, examples, workflows | Internal | Useful for development and learning, but not shipped runtime API unless a path is explicitly exported below. |
|
|
23
|
+
|
|
24
|
+
## Export Matrix
|
|
25
|
+
|
|
26
|
+
| Export | Target | Group | Stability | Contract |
|
|
27
|
+
| --- | --- | --- | --- | --- |
|
|
28
|
+
| `.` | style: `./dist/bronto.css`<br>default: `./dist/bronto.css` | CSS root bundle | Stable | CSS-only package root. Supported as a CSS side-effect import in CSS-aware bundlers; not a Node/runtime JS entrypoint. |
|
|
29
|
+
| `./dist/bronto.css` | `./dist/bronto.css` | Flattened CSS bundle | Stable path | The prebuilt default stylesheet. Generated from css/core.css and byte-checked by check:dist. |
|
|
30
|
+
| `./css` | `./css/core.css` | CSS source fan-out | Stable path | Bundler entrypoint for css/core.css. It preserves source @import boundaries and layer behavior. |
|
|
31
|
+
| `./css/core.css` | `./css/core.css` | CSS source fan-out | Stable path | Source fan-out file for consumers that want the authored leaf graph through a bundler. |
|
|
32
|
+
| `./css/tokens.css` | `./dist/css/tokens.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
33
|
+
| `./css/fonts.css` | `./dist/css/fonts.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
34
|
+
| `./css/base.css` | `./dist/css/base.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
35
|
+
| `./css/motion.css` | `./dist/css/motion.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
36
|
+
| `./css/dots.css` | `./dist/css/dots.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
37
|
+
| `./css/navigation.css` | `./dist/css/navigation.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
38
|
+
| `./css/site.css` | `./dist/css/site.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
39
|
+
| `./css/content.css` | `./dist/css/content.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
40
|
+
| `./css/primitives.css` | `./dist/css/primitives.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
41
|
+
| `./css/forms.css` | `./dist/css/forms.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
42
|
+
| `./css/feedback.css` | `./dist/css/feedback.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
43
|
+
| `./css/overlay.css` | `./dist/css/overlay.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
44
|
+
| `./css/disclosure.css` | `./dist/css/disclosure.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
45
|
+
| `./css/table.css` | `./dist/css/table.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
46
|
+
| `./css/app.css` | `./dist/css/app.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
47
|
+
| `./css/skins.css` | `./dist/css/skins.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
48
|
+
| `./css/dataviz.css` | `./dist/css/dataviz.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
49
|
+
| `./css/report.css` | `./dist/css/report.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
50
|
+
| `./css/annotations.css` | `./dist/css/annotations.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
51
|
+
| `./css/legend.css` | `./dist/css/legend.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
52
|
+
| `./css/marks.css` | `./dist/css/marks.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
53
|
+
| `./css/connectors.css` | `./dist/css/connectors.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
54
|
+
| `./css/spotlight.css` | `./dist/css/spotlight.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
55
|
+
| `./css/crosshair.css` | `./dist/css/crosshair.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
56
|
+
| `./css/selection.css` | `./dist/css/selection.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
57
|
+
| `./css/sources.css` | `./dist/css/sources.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
58
|
+
| `./css/diff.css` | `./dist/css/diff.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
59
|
+
| `./css/code.css` | `./dist/css/code.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
60
|
+
| `./css/spark.css` | `./dist/css/spark.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
61
|
+
| `./css/sidenote.css` | `./dist/css/sidenote.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
62
|
+
| `./css/textref.css` | `./dist/css/textref.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
63
|
+
| `./css/bullet.css` | `./dist/css/bullet.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
64
|
+
| `./css/term.css` | `./dist/css/term.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
65
|
+
| `./css/toc.css` | `./dist/css/toc.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
66
|
+
| `./css/tree.css` | `./dist/css/tree.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
67
|
+
| `./css/state.css` | `./dist/css/state.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
68
|
+
| `./css/generated.css` | `./dist/css/generated.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
69
|
+
| `./css/workbench.css` | `./dist/css/workbench.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
70
|
+
| `./css/command.css` | `./dist/css/command.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
71
|
+
| `./css/analytical.css` | `./dist/css/analytical.css` | Opt-in CSS roll-up | Stable additive | Generated layered roll-up of the analytical leaves. Not included in the default bundle. |
|
|
72
|
+
| `./css/unlayered/tokens.css` | `./css/tokens.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
73
|
+
| `./css/unlayered/fonts.css` | `./css/fonts.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
74
|
+
| `./css/unlayered/base.css` | `./css/base.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
75
|
+
| `./css/unlayered/motion.css` | `./css/motion.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
76
|
+
| `./css/unlayered/dots.css` | `./css/dots.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
77
|
+
| `./css/unlayered/navigation.css` | `./css/navigation.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
78
|
+
| `./css/unlayered/site.css` | `./css/site.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
79
|
+
| `./css/unlayered/content.css` | `./css/content.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
80
|
+
| `./css/unlayered/primitives.css` | `./css/primitives.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
81
|
+
| `./css/unlayered/forms.css` | `./css/forms.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
82
|
+
| `./css/unlayered/feedback.css` | `./css/feedback.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
83
|
+
| `./css/unlayered/overlay.css` | `./css/overlay.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
84
|
+
| `./css/unlayered/disclosure.css` | `./css/disclosure.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
85
|
+
| `./css/unlayered/table.css` | `./css/table.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
86
|
+
| `./css/unlayered/app.css` | `./css/app.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
87
|
+
| `./css/unlayered/skins.css` | `./css/skins.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
88
|
+
| `./css/unlayered/dataviz.css` | `./css/dataviz.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
89
|
+
| `./css/unlayered/report.css` | `./css/report.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
90
|
+
| `./css/unlayered/annotations.css` | `./css/annotations.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
91
|
+
| `./css/unlayered/legend.css` | `./css/legend.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
92
|
+
| `./css/unlayered/marks.css` | `./css/marks.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
93
|
+
| `./css/unlayered/connectors.css` | `./css/connectors.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
94
|
+
| `./css/unlayered/spotlight.css` | `./css/spotlight.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
95
|
+
| `./css/unlayered/crosshair.css` | `./css/crosshair.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
96
|
+
| `./css/unlayered/selection.css` | `./css/selection.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
97
|
+
| `./css/unlayered/sources.css` | `./css/sources.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
98
|
+
| `./css/unlayered/diff.css` | `./css/diff.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
99
|
+
| `./css/unlayered/code.css` | `./css/code.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
100
|
+
| `./css/unlayered/spark.css` | `./css/spark.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
101
|
+
| `./css/unlayered/sidenote.css` | `./css/sidenote.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
102
|
+
| `./css/unlayered/textref.css` | `./css/textref.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
103
|
+
| `./css/unlayered/bullet.css` | `./css/bullet.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
104
|
+
| `./css/unlayered/term.css` | `./css/term.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
105
|
+
| `./css/unlayered/toc.css` | `./css/toc.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
106
|
+
| `./css/unlayered/tree.css` | `./css/tree.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
107
|
+
| `./css/unlayered/state.css` | `./css/state.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
108
|
+
| `./css/unlayered/generated.css` | `./css/generated.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
109
|
+
| `./css/unlayered/workbench.css` | `./css/workbench.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
110
|
+
| `./css/unlayered/command.css` | `./css/command.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
111
|
+
| `./tokens` | types: `./tokens/index.d.ts`<br>default: `./tokens/index.js` | Design tokens JS | Stable names/roles | ESM token registry and helpers. Token names and documented roles are public; exact values may tune before 1.0. |
|
|
112
|
+
| `./vscode.css-custom-data.json` | `./classes/vscode.css-custom-data.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
113
|
+
| `./tokens.json` | `./tokens/index.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
114
|
+
| `./tokens.dtcg.json` | `./tokens/tokens.dtcg.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
115
|
+
| `./tokens/resolved.json` | `./tokens/resolved.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
116
|
+
| `./shiki/nothing.json` | `./shiki/nothing.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
117
|
+
| `./llms.txt` | `./llms.txt` | Agent entrypoint | Stable path | Plain-text orientation file shipped for offline agents and tooling. |
|
|
118
|
+
| `./docs/architecture.md` | `./docs/architecture.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
119
|
+
| `./docs/reference.md` | `./docs/reference.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
120
|
+
| `./docs/theming.md` | `./docs/theming.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
121
|
+
| `./docs/contrast.md` | `./docs/contrast.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
122
|
+
| `./docs/stability.md` | `./docs/stability.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
123
|
+
| `./docs/package-contract.md` | `./docs/package-contract.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
124
|
+
| `./docs/usage.md` | `./docs/usage.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
125
|
+
| `./docs/frontier-primitives.md` | `./docs/frontier-primitives.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
126
|
+
| `./docs/reporting.md` | `./docs/reporting.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
127
|
+
| `./docs/dots.md` | `./docs/dots.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
128
|
+
| `./docs/glyphs.md` | `./docs/glyphs.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
129
|
+
| `./docs/mermaid.md` | `./docs/mermaid.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
130
|
+
| `./docs/d2.md` | `./docs/d2.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
131
|
+
| `./docs/vega.md` | `./docs/vega.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
132
|
+
| `./docs/annotations.md` | `./docs/annotations.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
133
|
+
| `./docs/legends.md` | `./docs/legends.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
134
|
+
| `./docs/marks.md` | `./docs/marks.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
135
|
+
| `./docs/connectors.md` | `./docs/connectors.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
136
|
+
| `./docs/spotlight.md` | `./docs/spotlight.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
137
|
+
| `./docs/crosshair.md` | `./docs/crosshair.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
138
|
+
| `./docs/selection.md` | `./docs/selection.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
139
|
+
| `./docs/sources.md` | `./docs/sources.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
140
|
+
| `./docs/diff.md` | `./docs/diff.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
141
|
+
| `./docs/code.md` | `./docs/code.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
142
|
+
| `./docs/spark.md` | `./docs/spark.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
143
|
+
| `./docs/sidenote.md` | `./docs/sidenote.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
144
|
+
| `./docs/textref.md` | `./docs/textref.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
145
|
+
| `./docs/bullet.md` | `./docs/bullet.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
146
|
+
| `./docs/term.md` | `./docs/term.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
147
|
+
| `./docs/toc.md` | `./docs/toc.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
148
|
+
| `./docs/tree.md` | `./docs/tree.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
149
|
+
| `./docs/state.md` | `./docs/state.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
150
|
+
| `./docs/generated.md` | `./docs/generated.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
151
|
+
| `./docs/workbench.md` | `./docs/workbench.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
152
|
+
| `./docs/command.md` | `./docs/command.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
153
|
+
| `./docs/adr/0001-color-system.md` | `./docs/adr/0001-color-system.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
154
|
+
| `./docs/adr/0002-scope-and-2026-baseline.md` | `./docs/adr/0002-scope-and-2026-baseline.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
155
|
+
| `./docs/adr/0003-theme-model.md` | `./docs/adr/0003-theme-model.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
156
|
+
| `./classes` | types: `./classes/index.d.ts`<br>default: `./classes/index.js` | Class recipes JS | Stable | ESM class registry, recipes, attrs helpers, and cx joiner. The emitted class vocabulary is public. |
|
|
157
|
+
| `./classes.json` | `./classes/classes.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
158
|
+
| `./behaviors` | types: `./behaviors/index.d.ts`<br>default: `./behaviors/index.js` | Vanilla behavior JS | Stable | ESM, SSR-safe, cleanup-returning behavior initializers. Behavior internals are not public. |
|
|
159
|
+
| `./glyphs` | types: `./glyphs/glyphs.d.ts`<br>default: `./glyphs/glyphs.js` | Geometry/render helper JS | Stable additive | ESM helper surface. Function names, options, and data shapes are public; rendering heuristics may tune. |
|
|
160
|
+
| `./annotations` | types: `./annotations/index.d.ts`<br>default: `./annotations/index.js` | Geometry/render helper JS | Stable additive | ESM helper surface. Function names, options, and data shapes are public; rendering heuristics may tune. |
|
|
161
|
+
| `./connectors` | types: `./connectors/index.d.ts`<br>default: `./connectors/index.js` | Geometry/render helper JS | Stable additive | ESM helper surface. Function names, options, and data shapes are public; rendering heuristics may tune. |
|
|
162
|
+
| `./react` | types: `./react/index.d.ts`<br>default: `./react/index.js` | Framework binding JS | Stable thin adapter | Optional peer wrapper over vanilla behaviors. It owns lifecycle hookup, not markup or component state. |
|
|
163
|
+
| `./solid` | types: `./solid/index.d.ts`<br>default: `./solid/index.js` | Framework binding JS | Stable thin adapter | Optional peer wrapper over vanilla behaviors. It owns lifecycle hookup, not markup or component state. |
|
|
164
|
+
| `./qwik` | types: `./qwik/index.d.ts`<br>default: `./qwik/index.js` | Framework binding JS | Stable thin adapter | Optional peer wrapper over vanilla behaviors. It owns lifecycle hookup, not markup or component state. |
|
|
165
|
+
| `./skins` | types: `./tokens/skins.d.ts`<br>default: `./tokens/skins.js` | Renderer/theme helper JS | Stable additive | ESM theme data/helpers for opt-in skins, chart palettes, and external renderers. |
|
|
166
|
+
| `./charts` | types: `./tokens/charts.d.ts`<br>default: `./tokens/charts.js` | Renderer/theme helper JS | Stable additive | ESM theme data/helpers for opt-in skins, chart palettes, and external renderers. |
|
|
167
|
+
| `./charts.json` | `./tokens/charts.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
168
|
+
| `./mermaid` | types: `./tokens/mermaid.d.ts`<br>default: `./tokens/mermaid.js` | Renderer/theme helper JS | Stable additive | ESM theme data/helpers for opt-in skins, chart palettes, and external renderers. |
|
|
169
|
+
| `./mermaid.json` | `./tokens/mermaid.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
170
|
+
| `./d2` | types: `./tokens/d2.d.ts`<br>default: `./tokens/d2.js` | Renderer/theme helper JS | Stable additive | ESM theme data/helpers for opt-in skins, chart palettes, and external renderers. |
|
|
171
|
+
| `./d2.json` | `./tokens/d2.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
172
|
+
| `./vega` | types: `./tokens/vega.d.ts`<br>default: `./tokens/vega.js` | Renderer/theme helper JS | Stable additive | ESM theme data/helpers for opt-in skins, chart palettes, and external renderers. |
|
|
173
|
+
| `./vega.json` | `./tokens/vega.json` | Machine-readable data | Stable additive | JSON package data for non-JS/tooling consumers. Shape is public unless the paired doc marks a field internal. |
|
|
174
|
+
| `./fonts/*` | `./fonts/*` | Vendored font asset glob | Stable path pattern | Doto font files and license. Font file names are shipped assets, not JS APIs. |
|
|
175
|
+
|
|
176
|
+
## Shipped Files Allowlist
|
|
177
|
+
|
|
178
|
+
`package.json` controls the npm tarball with this `files` list. npm also
|
|
179
|
+
always includes `package.json`, `README.md`, `LICENSE`, and
|
|
180
|
+
`CHANGELOG.md`; `check:pack` verifies no dev-only path leaks.
|
|
181
|
+
|
|
182
|
+
| Path | Kind | Contract |
|
|
183
|
+
| --- | --- | --- |
|
|
184
|
+
| `css` | Source CSS directory | Public source leaves. Mostly hand-authored; generated exceptions are called out in the provenance table. |
|
|
185
|
+
| `dist` | Generated CSS directory | Prebuilt layered bundle and leaves. Never hand-edit. |
|
|
186
|
+
| `fonts` | Vendored assets | Doto woff2 files plus OFL license. |
|
|
187
|
+
| `tokens` | Mixed source/generated data | Token source plus generated JSON, declarations, and renderer theme data. |
|
|
188
|
+
| `classes` | Mixed source/generated data | Class recipe source plus generated JSON/declarations/custom-data. |
|
|
189
|
+
| `behaviors` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
190
|
+
| `glyphs` | Authored public JS directory | Glyph registry/renderers shipped as JS; declarations are generated. |
|
|
191
|
+
| `annotations` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
192
|
+
| `connectors` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
193
|
+
| `react` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
194
|
+
| `solid` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
195
|
+
| `qwik` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
196
|
+
| `shiki` | Theme data | Shiki theme JSON on the governed palette. |
|
|
197
|
+
| `llms.txt` | Agent entrypoint | Shipped plain-text orientation for offline LLM/agent consumers. |
|
|
198
|
+
| `CHANGELOG.md` | Release record | Shipped historical release notes. |
|
|
199
|
+
| `MIGRATIONS.json` | Migration data | Shipped rename/migration map for tooling. |
|
|
200
|
+
| `docs/architecture.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
201
|
+
| `docs/reference.md` | Generated documentation | Committed generated doc; never hand-edit. |
|
|
202
|
+
| `docs/theming.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
203
|
+
| `docs/contrast.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
204
|
+
| `docs/stability.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
205
|
+
| `docs/package-contract.md` | Generated documentation | Committed generated doc; never hand-edit. |
|
|
206
|
+
| `docs/usage.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
207
|
+
| `docs/frontier-primitives.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
208
|
+
| `docs/reporting.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
209
|
+
| `docs/dots.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
210
|
+
| `docs/glyphs.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
211
|
+
| `docs/mermaid.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
212
|
+
| `docs/d2.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
213
|
+
| `docs/vega.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
214
|
+
| `docs/annotations.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
215
|
+
| `docs/legends.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
216
|
+
| `docs/marks.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
217
|
+
| `docs/connectors.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
218
|
+
| `docs/spotlight.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
219
|
+
| `docs/crosshair.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
220
|
+
| `docs/selection.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
221
|
+
| `docs/sources.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
222
|
+
| `docs/diff.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
223
|
+
| `docs/code.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
224
|
+
| `docs/spark.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
225
|
+
| `docs/sidenote.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
226
|
+
| `docs/textref.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
227
|
+
| `docs/bullet.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
228
|
+
| `docs/term.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
229
|
+
| `docs/toc.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
230
|
+
| `docs/tree.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
231
|
+
| `docs/state.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
232
|
+
| `docs/generated.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
233
|
+
| `docs/workbench.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
234
|
+
| `docs/command.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
235
|
+
| `docs/adr/0001-color-system.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
236
|
+
| `docs/adr/0002-scope-and-2026-baseline.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
237
|
+
| `docs/adr/0003-theme-model.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
238
|
+
|
|
239
|
+
## Artifact Provenance
|
|
240
|
+
|
|
241
|
+
Generated files are committed so the package can publish without a consumer-side
|
|
242
|
+
build step. Edit the source of truth, run the listed generator, and commit the
|
|
243
|
+
result. The listed gates are part of `npm run check`.
|
|
244
|
+
|
|
245
|
+
| Surface | Source of truth | Generated outputs | Generator | Gate | Note |
|
|
246
|
+
| --- | --- | --- | --- | --- | --- |
|
|
247
|
+
| Package manifest | `package.json` | docs/package-contract.md | `npm run package-contract:build` | check:fresh | The complete export/file matrix in this document is generated from the manifest. |
|
|
248
|
+
| Token model | `tokens/index.js` | css/tokens.css; tokens/index.json; tokens/tokens.dtcg.json; tokens/resolved.json; tokens/index.d.ts | `npm run tokens:css:build; tokens:build; dtcg:build; resolved:build; dts:build` | check:fresh; check:contrast | Token names/roles are public. Resolved values are visual tuning before 1.0. |
|
|
249
|
+
| Class registry | `classes/index.js plus css/*.css selectors` | classes/classes.json; classes/index.d.ts; classes/vscode.css-custom-data.json; docs/reference.md | `npm run classes:json:build; dts:build; vscode:build; reference:build` | check:fresh; check:classes; check:contract | The typed registry, JSON vocabulary, and generated reference stay aligned with real selectors. |
|
|
250
|
+
| Authored CSS graph | `css/core.css plus css/*.css leaves` | dist/bronto.css; dist/css/*.css (40 layered outputs) | `npm run dist:build` | check:dist; check:exports | Default bundle and direct layered leaf imports are generated from authored CSS and size-gated. |
|
|
251
|
+
| JSDoc-authored public JS | `behaviors/; annotations/; connectors/; react/; solid/; qwik/` | adjacent *.d.ts and *.d.ts.map files | `npm run dts:emit` | check:dts-emit; check:types; check:attw; check:publint | Declarations are emitted from the shipped JS, not separately maintained. |
|
|
252
|
+
| Glyph registry | `glyphs/glyphs.js` | glyphs/glyphs.d.ts | `npm run glyphs:build` | check:glyphs; npm test | Glyph names and render options are public. The registry stays sorted and type-covered. |
|
|
253
|
+
| Display colorways | `tokens/skins.js` | css/skins.css; tokens/skins.d.ts | `npm run skins:build` | check:skins; check:contrast | Skins are opt-in root-level choices and never part of dist/bronto.css. |
|
|
254
|
+
| Chart palette | `tokens/charts.js` | css/dataviz.css; tokens/charts.json; tokens/charts.d.ts | `npm run charts:build` | check:charts | Data-viz colors are opt-in, CVD-gated, and never UI chrome. |
|
|
255
|
+
| External renderer themes | `tokens/mermaid.js; tokens/d2.js; tokens/vega.js` | tokens/{mermaid,d2,vega}.{js,json,d.ts} | `npm run mermaid:build; d2:build; vega:build` | check:mermaid; check:d2; check:vega | Renderer configs use resolved colors because the external renderers cannot consume CSS variables directly. |
|
|
256
|
+
| Contrast report | `tokens/resolved.json; tokens/skins.js; tokens/charts.js` | docs/contrast.md | `npm run contrast:build` | check:contrast | WCAG floors are hard-gated; APCA is reported as advisory. |
|
|
257
|
+
|
|
258
|
+
## Internal Paths
|
|
259
|
+
|
|
260
|
+
These paths are intentionally not part of the npm runtime surface:
|
|
261
|
+
`scripts/`, `demo/`, `test/`, `examples/`, `.github/`, local config
|
|
262
|
+
files, visual baselines, and development-only audit artifacts. They may change
|
|
263
|
+
without a package-level compatibility promise.
|