@ponchia/ui 0.10.0 → 0.12.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +84 -0
- package/MIGRATIONS.json +52 -9
- package/README.md +3 -3
- package/behaviors/forms.d.ts +1 -1
- package/behaviors/internal.d.ts +1 -1
- package/classes/classes.json +31 -2
- package/classes/index.d.ts +12 -0
- package/classes/index.js +13 -0
- package/css/annotations.css +2 -2
- package/css/app.css +3 -1
- package/css/command.css +4 -4
- package/css/dataviz.css +117 -64
- package/css/discussion.css +150 -0
- package/css/figure.css +6 -4
- package/css/generated.css +19 -12
- package/css/legend.css +14 -7
- package/css/report.css +25 -11
- package/css/sources.css +1 -1
- package/dist/bronto.css +1 -1
- package/dist/css/analytical.css +1 -1
- package/dist/css/annotations.css +1 -1
- package/dist/css/app.css +1 -1
- package/dist/css/command.css +1 -1
- package/dist/css/dataviz.css +1 -1
- package/dist/css/discussion.css +1 -0
- package/dist/css/figure.css +1 -1
- package/dist/css/generated.css +1 -1
- package/dist/css/legend.css +1 -1
- package/dist/css/report-kit.css +1 -1
- package/dist/css/report.css +1 -1
- package/dist/css/sources.css +1 -1
- package/docs/adr/0001-color-system.md +29 -0
- package/docs/architecture.md +1 -1
- package/docs/compositions.md +23 -2
- package/docs/contrast.md +24 -24
- package/docs/discussion.md +64 -0
- package/docs/figure.md +10 -1
- package/docs/frontier-primitives.md +5 -0
- package/docs/mermaid.md +1 -1
- package/docs/migrations/0.10-to-0.11.md +61 -0
- package/docs/migrations/0.11-to-0.12.md +47 -0
- package/docs/package-contract.md +14 -2
- package/docs/reference.md +18 -1
- package/docs/renderer.md +100 -0
- package/docs/reporting.md +9 -9
- package/docs/stability.md +4 -2
- package/docs/theming.md +29 -19
- package/docs/usage.md +12 -8
- package/docs/vega.md +24 -23
- package/llms.txt +8 -4
- package/package.json +18 -3
- package/renderer/index.d.ts +203 -0
- package/renderer/index.d.ts.map +1 -0
- package/renderer/index.js +650 -0
- package/tokens/charts.d.ts +16 -10
- package/tokens/charts.js +65 -49
- package/tokens/charts.json +77 -29
- package/tokens/mermaid.js +56 -56
- package/tokens/mermaid.json +56 -56
- package/tokens/vega.d.ts +3 -3
- package/tokens/vega.js +111 -72
- package/tokens/vega.json +198 -126
package/docs/contrast.md
CHANGED
|
@@ -283,40 +283,40 @@ palette untouched). Accents are authored in OKLCH; `--accent-text` is the
|
|
|
283
283
|
|
|
284
284
|
## Data-viz palette (advisory)
|
|
285
285
|
|
|
286
|
-
The opt-in Tier-4
|
|
287
|
-
`tokens/charts.js`) is gated differently:
|
|
288
|
-
|
|
289
|
-
vision** (`check:charts`,
|
|
290
|
-
each series ships a matching
|
|
291
|
-
WCAG ratios below are **advisory**
|
|
292
|
-
|
|
293
|
-
the
|
|
286
|
+
The opt-in Tier-4 categorical palette (`@ponchia/ui/css/dataviz.css`, authored
|
|
287
|
+
in `tokens/charts.js`) is gated differently: each slot sits inside the theme's
|
|
288
|
+
OKLCH lightness band and above the chroma floor, and **adjacent slots stay apart
|
|
289
|
+
under simulated protanopia/deuteranopia and in normal vision** (`check:charts`,
|
|
290
|
+
OKLab ΔE). Colour is **never the sole signal** — each series ships a matching
|
|
291
|
+
`--chart-pattern-*` dot-matrix fill. So the WCAG ratios below are **advisory**
|
|
292
|
+
(a chart fill is not body text); for thin lines, points or text use the slot's
|
|
293
|
+
`--cat-N-ink`, which `check:charts` holds to 4.5:1. No slot is the accent.
|
|
294
294
|
|
|
295
295
|
### Light theme — categorical vs `--bg`
|
|
296
296
|
|
|
297
297
|
| Series | Colour | Ratio _(advisory)_ | APCA _(advisory)_ |
|
|
298
298
|
| --- | --- | --- | --- |
|
|
299
|
-
| 1 _(accent)_ | `#
|
|
300
|
-
| 2 | `#
|
|
301
|
-
| 3 | `#
|
|
302
|
-
| 4 | `#
|
|
303
|
-
| 5 | `#
|
|
304
|
-
| 6 | `#
|
|
305
|
-
| 7 | `#
|
|
306
|
-
| 8 | `#
|
|
299
|
+
| 1 _(accent)_ | `#2a78d6` | 4.01:1 | Lc 63.5 |
|
|
300
|
+
| 2 | `#eb6834` | 2.91:1 | Lc 51.8 |
|
|
301
|
+
| 3 | `#1baf7a` | 2.56:1 | Lc 46.9 |
|
|
302
|
+
| 4 | `#eda100` | 1.97:1 | Lc 35.5 |
|
|
303
|
+
| 5 | `#e87ba4` | 2.44:1 | Lc 45.2 |
|
|
304
|
+
| 6 | `#008300` | 4.49:1 | Lc 66.8 |
|
|
305
|
+
| 7 | `#4a3aa7` | 7.77:1 | Lc 82.3 |
|
|
306
|
+
| 8 | `#e34948` | 3.59:1 | Lc 59.1 |
|
|
307
307
|
|
|
308
308
|
### Dark theme — categorical vs `--bg`
|
|
309
309
|
|
|
310
310
|
| Series | Colour | Ratio _(advisory)_ | APCA _(advisory)_ |
|
|
311
311
|
| --- | --- | --- | --- |
|
|
312
|
-
| 1 _(accent)_ | `#
|
|
313
|
-
| 2 | `#
|
|
314
|
-
| 3 | `#
|
|
315
|
-
| 4 | `#
|
|
316
|
-
| 5 | `#
|
|
317
|
-
| 6 | `#
|
|
318
|
-
| 7 | `#
|
|
319
|
-
| 8 | `#
|
|
312
|
+
| 1 _(accent)_ | `#3987e5` | 5.15:1 | Lc 37.5 |
|
|
313
|
+
| 2 | `#d95926` | 4.82:1 | Lc 35.6 |
|
|
314
|
+
| 3 | `#199e70` | 5.50:1 | Lc 40.1 |
|
|
315
|
+
| 4 | `#c98500` | 6.10:1 | Lc 43.9 |
|
|
316
|
+
| 5 | `#d55181` | 4.75:1 | Lc 35.0 |
|
|
317
|
+
| 6 | `#008300` | 3.79:1 | Lc 27.7 |
|
|
318
|
+
| 7 | `#9085e9` | 5.99:1 | Lc 43.0 |
|
|
319
|
+
| 8 | `#e66767` | 5.80:1 | Lc 42.2 |
|
|
320
320
|
|
|
321
321
|
## Scope & caveats
|
|
322
322
|
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Discussions
|
|
2
|
+
|
|
3
|
+
Use the opt-in discussion leaf for readable thread lists, messages, quotations,
|
|
4
|
+
and composers in a host application:
|
|
5
|
+
|
|
6
|
+
```css
|
|
7
|
+
@import '@ponchia/ui';
|
|
8
|
+
@import '@ponchia/ui/css/discussion.css';
|
|
9
|
+
```
|
|
10
|
+
|
|
11
|
+
BrontoUI supplies the visual structure. The host owns storage, identity,
|
|
12
|
+
thread resolution, text anchoring, unread state, and posting behavior. This leaf
|
|
13
|
+
adds no JavaScript or editor dependency.
|
|
14
|
+
|
|
15
|
+
## Thread structure
|
|
16
|
+
|
|
17
|
+
```html
|
|
18
|
+
<section class="ui-discussion" aria-labelledby="thread-title">
|
|
19
|
+
<header class="ui-discussion__header">
|
|
20
|
+
<div>
|
|
21
|
+
<h2 id="thread-title">Discussion</h2>
|
|
22
|
+
<p>Release notes</p>
|
|
23
|
+
</div>
|
|
24
|
+
</header>
|
|
25
|
+
<p class="ui-discussion__state">Open · passage attached</p>
|
|
26
|
+
<blockquote class="ui-discussion__quote">The selected passage.</blockquote>
|
|
27
|
+
<ol class="ui-discussion__messages">
|
|
28
|
+
<li class="ui-discussion__message">
|
|
29
|
+
<p class="ui-discussion__meta"><strong>Reviewer</strong> · today</p>
|
|
30
|
+
<p>Can we clarify this sentence?</p>
|
|
31
|
+
</li>
|
|
32
|
+
</ol>
|
|
33
|
+
<form class="ui-discussion__composer">
|
|
34
|
+
<label for="reply">Reply</label>
|
|
35
|
+
<textarea id="reply" name="reply" rows="4"></textarea>
|
|
36
|
+
<div class="ui-discussion__actions">
|
|
37
|
+
<button class="ui-button" type="submit">Post reply</button>
|
|
38
|
+
</div>
|
|
39
|
+
</form>
|
|
40
|
+
</section>
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
Wire the form to the host's posting mechanism. Keep the draft when posting
|
|
44
|
+
fails, disable duplicate submissions while a request is pending, and announce
|
|
45
|
+
success only after confirmation. Use native buttons for actions and real links
|
|
46
|
+
for navigation. A modal host must supply focus management and focus return.
|
|
47
|
+
|
|
48
|
+
## Reading and recovery
|
|
49
|
+
|
|
50
|
+
The styles use sentence case and sans-serif prose, wrap long text, and allow
|
|
51
|
+
action rows to wrap in narrow panels. Keep secondary actions visually quiet
|
|
52
|
+
with `ui-button--ghost`; posting is normally the primary action. The quote
|
|
53
|
+
should remain visible when its anchor disappears, with a clear status and a
|
|
54
|
+
host-owned way to choose a new target. Anchor status and thread resolution
|
|
55
|
+
answer different questions and should be labelled separately.
|
|
56
|
+
|
|
57
|
+
`ui-discussion__list` and `ui-discussion__item` style a host-owned thread index.
|
|
58
|
+
Keep the list bounded and offer more results explicitly. If a canvas uses pins,
|
|
59
|
+
provide the same discussions in a keyboard-accessible list. Pins, positions,
|
|
60
|
+
and annotation geometry are outside this CSS leaf.
|
|
61
|
+
|
|
62
|
+
The [discussion specimen](https://ponchia.github.io/bronto-ui/demo/discussion.html) includes a narrow-container
|
|
63
|
+
example and a local reply/resolve demonstration. Its state lasts only until
|
|
64
|
+
the page reloads.
|
package/docs/figure.md
CHANGED
|
@@ -61,7 +61,7 @@ when the same stage appears in a dashboard, doc page, or generated artifact.
|
|
|
61
61
|
| --- | --- | --- |
|
|
62
62
|
| `--figure-max-inline` | `.ui-figure__stage` | Maximum stage width, default `42rem`. |
|
|
63
63
|
| `--figure-min-block` | `.ui-figure__stage` | Reserved stage height for late-rendered media. |
|
|
64
|
-
| `--figure-key-width` | `.ui-figure__body--key-right` | Right key column width before
|
|
64
|
+
| `--figure-key-width` | `.ui-figure__body--key-right` | Right key column width before the figure container stacks. |
|
|
65
65
|
|
|
66
66
|
## Boundary
|
|
67
67
|
|
|
@@ -76,3 +76,12 @@ when the same stage appears in a dashboard, doc page, or generated artifact.
|
|
|
76
76
|
|
|
77
77
|
- [Usage](usage.md#static-reports) shows report figure composition.
|
|
78
78
|
- [Reference](reference.md) lists the generated figure and report classes.
|
|
79
|
+
|
|
80
|
+
## Narrow containers
|
|
81
|
+
|
|
82
|
+
The figure establishes the named `bronto-figure` inline-size container. Its
|
|
83
|
+
right-hand key stacks below 44rem of figure width, even in a wide browser.
|
|
84
|
+
Print disables size containment and uses document flow. Keep annotation text
|
|
85
|
+
and strokes within the authored `viewBox`; container layout does not reposition
|
|
86
|
+
chart geometry. Verify a 280px parent with long legend names and a fallback
|
|
87
|
+
table, not just a narrow viewport.
|
|
@@ -235,6 +235,11 @@ consumer since**; their follow-ons are demand-gated, not queued. Active work
|
|
|
235
235
|
is therefore consolidation of the report lane (hub routing, print/PDF
|
|
236
236
|
fidelity, consumer-contract gates), not new surfaces.
|
|
237
237
|
|
|
238
|
+
> **Superseded (2026-10-01).** A canvas workspace now consumes the command,
|
|
239
|
+
> workbench and state leaves daily, and its notes and visual models carry more
|
|
240
|
+
> agent-authored prose than reports do. The north star moved to objects on a
|
|
241
|
+
> canvas that explain themselves; see the [roadmap](https://github.com/Ponchia/bronto-ui/blob/main/ROADMAP.md#north-star).
|
|
242
|
+
|
|
238
243
|
### Report-lane primitives shipped in 0.6.7
|
|
239
244
|
|
|
240
245
|
From the 2026-06-09 local scout. These were kept on merit, then shipped only
|
package/docs/mermaid.md
CHANGED
|
@@ -92,7 +92,7 @@ switch, re-`initialize` with the other palette and re-render.
|
|
|
92
92
|
- **Chart-like** diagrams carry a categorical series palette — **pie**
|
|
93
93
|
(`pie1`…`pie12`), **git** (`git0`…`git7`), and **user-journey**
|
|
94
94
|
(`fillType0`…`fillType7`) are wired to the CVD-safe
|
|
95
|
-
[charts palette](./legends.md) (
|
|
95
|
+
[charts palette](./legends.md) (blue first; no slot is the accent).
|
|
96
96
|
- **Structural** diagrams — flowchart, sequence, class, ER, state — use the
|
|
97
97
|
monochrome node/edge/cluster grammar and spend the accent only on notes.
|
|
98
98
|
- **Not themed: `gantt` and `timeline`.** Their colours come from
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# Upgrade from 0.10 to 0.11
|
|
2
|
+
|
|
3
|
+
0.11 completes the readable composition direction. The structured visual
|
|
4
|
+
changes are in [`MIGRATIONS.json`](../../MIGRATIONS.json). JavaScript exports,
|
|
5
|
+
classes, and tokens remain available. If you are coming from 0.9, apply the
|
|
6
|
+
[0.10 migration](0.9-to-0.10.md) first, including the retired adapters/modal.
|
|
7
|
+
|
|
8
|
+
## Review reusable layouts
|
|
9
|
+
|
|
10
|
+
Figures use their own inline-size container to stack a right-hand key below
|
|
11
|
+
44rem. Decision grids and action lists stack their rows below 32rem of their
|
|
12
|
+
own width, including inside an otherwise wide report. Keep the documented
|
|
13
|
+
`ui-report__decision-grid` and `ui-report__actions` wrappers. Two-up comparisons
|
|
14
|
+
need no wrapper: they keep at most two columns, with a 16rem reading floor.
|
|
15
|
+
|
|
16
|
+
Test a 280px and 320px parent inside a 1440px browser. Check that charts have
|
|
17
|
+
useful drawing width, text columns remain readable, long labels wrap and all
|
|
18
|
+
sources are reachable. Zero page overflow alone does not prove those things.
|
|
19
|
+
Keep authored SVG labels and annotations inside the drawing's `viewBox`, or
|
|
20
|
+
provide a narrow fallback with the same information. Bronto does not own chart
|
|
21
|
+
geometry. Named size containment is disabled in print; review your PDF too.
|
|
22
|
+
|
|
23
|
+
## Review typography overrides by role
|
|
24
|
+
|
|
25
|
+
Figure captions, legends, generated labels and command groups use sans and
|
|
26
|
+
sentence case. Technical log bodies and identifiers keep mono. Inline citation
|
|
27
|
+
markers have a 12px floor at a default 16px root. Do not globally replace `Doto`:
|
|
28
|
+
keep intentional hero/display and readout roles.
|
|
29
|
+
|
|
30
|
+
1. Find explicit `font-family: var(--display)` and `var(--dot-font)` declarations
|
|
31
|
+
in your loaded consumer styles, plus old root-size and control-height rules.
|
|
32
|
+
2. Classify each use: display identity, numeric readout, heading, instruction,
|
|
33
|
+
control label or metadata. Check grouped selectors individually.
|
|
34
|
+
3. Remove overrides that recreate old generic styles. Use `var(--sans)` for
|
|
35
|
+
local explanatory headings and labels; keep intentional display roles.
|
|
36
|
+
4. Inspect complete tasks, not just the homepage. Include setup, result,
|
|
37
|
+
filtering, error/retry, source details and an empty state where applicable.
|
|
38
|
+
5. Compare long names and translated text at narrow, laptop, and desktop widths,
|
|
39
|
+
in both themes, with keyboard and touch input.
|
|
40
|
+
|
|
41
|
+
Consumer CSS outside a layer takes precedence over the package's `bronto` layer.
|
|
42
|
+
Updating the package alone cannot change those explicit overrides. A prepared
|
|
43
|
+
patch from an older application revision must be reintegrated and checked
|
|
44
|
+
against current source before it can count as migration evidence.
|
|
45
|
+
|
|
46
|
+
## Verify the package and consumer together
|
|
47
|
+
|
|
48
|
+
Install the packed candidate into an isolated consumer checkout before changing
|
|
49
|
+
production pins. Record the exact package version, consumer revision and screens
|
|
50
|
+
checked. Update the dependency and registry lock file together after publication;
|
|
51
|
+
do not commit a task-local tarball path into a production lock file.
|
|
52
|
+
|
|
53
|
+
Use the [composition guide](../compositions.md) for the service's local state
|
|
54
|
+
scenarios, container boundaries and report reading/print checks. Existing package
|
|
55
|
+
checks remain necessary; real consumer tasks provide additional evidence.
|
|
56
|
+
|
|
57
|
+
## Optional discussion UI
|
|
58
|
+
|
|
59
|
+
Import `@ponchia/ui/css/discussion.css` for thread lists, quotations, messages,
|
|
60
|
+
and composers. The new `ui-discussion` vocabulary is additive. It carries no
|
|
61
|
+
posting behavior, storage, or editor dependency; see [Discussions](../discussion.md).
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# Upgrade from 0.11 to 0.12
|
|
2
|
+
|
|
3
|
+
0.12 replaces the categorical palette and adds a runtime resolver for
|
|
4
|
+
renderers. Classes and core tokens are unchanged; the structured changes are
|
|
5
|
+
in [`MIGRATIONS.json`](../../MIGRATIONS.json). If you are coming from 0.10,
|
|
6
|
+
apply the [0.11 migration](0.10-to-0.11.md) first.
|
|
7
|
+
|
|
8
|
+
## Review charts that relied on series 1 being the accent
|
|
9
|
+
|
|
10
|
+
Until 0.11, `--chart-1` was `var(--accent)` and series 2–8 were Okabe-Ito.
|
|
11
|
+
From 0.12 the eight slots are fixed hues: blue, orange, aqua, yellow, magenta,
|
|
12
|
+
green, violet, red. No slot is the accent.
|
|
13
|
+
|
|
14
|
+
1. Find uses of `--chart-1`, `range.category[0]`, `charts.<theme>.categorical[0]`
|
|
15
|
+
and `ACCENT` from `@ponchia/ui/charts`. `ACCENT` is removed.
|
|
16
|
+
2. Where a chart meant "the brand", paint that one mark with the accent through
|
|
17
|
+
an explicit encoding (`brontoVegaAccent(theme)`, or `var(--accent)` in SVG),
|
|
18
|
+
and leave the categorical palette for categories.
|
|
19
|
+
3. Where you pinned `--chart-1` to a fixed value to keep the accent out of
|
|
20
|
+
your data, delete the pin.
|
|
21
|
+
4. `brontoVegaAccent(theme)` now returns the resolved `--accent`, and
|
|
22
|
+
`brontoVegaNeutral(theme)` the resolved `--text-dim`. They no longer index
|
|
23
|
+
`range.category`.
|
|
24
|
+
|
|
25
|
+
## Sequential ramps have five steps
|
|
26
|
+
|
|
27
|
+
`--chart-seq-6` is removed; `--chart-seq-1..5` is one blue hue, step 1 nearest
|
|
28
|
+
the surface. Re-map a six-bin choropleth or heatmap to five bins, or
|
|
29
|
+
interpolate between steps in your renderer.
|
|
30
|
+
|
|
31
|
+
## The static Vega config is frameless
|
|
32
|
+
|
|
33
|
+
`brontoVegaConfig()` sets `view.stroke: null` (no plot frame), draws a single
|
|
34
|
+
series in the first categorical hue, keeps a `--panel` gap between adjacent
|
|
35
|
+
rect, arc and area fills, and sets readable label sizes. A spec's own `config`
|
|
36
|
+
still wins. Review dashboards that relied on the frame or the accent-coloured
|
|
37
|
+
default mark.
|
|
38
|
+
|
|
39
|
+
## New: categorical identity and runtime tokens
|
|
40
|
+
|
|
41
|
+
- `--cat-N`, `--cat-N-tint` and `--cat-N-ink` carry the same hues for tags,
|
|
42
|
+
participants and user-chosen tints. Replace hand-picked tag colours, and
|
|
43
|
+
status tokens borrowed as category colours, with these.
|
|
44
|
+
- `@ponchia/ui/renderer` resolves the live theme for canvas, WebGL and SVG
|
|
45
|
+
renderers (`readTokens`, `observeTokens`, `vegaConfig`, `xtermTheme`). A page
|
|
46
|
+
that switches skin, contrast or the OLED surface should use it instead of
|
|
47
|
+
`charts.json` or the static Vega files. See [renderer](../renderer.md).
|
package/docs/package-contract.md
CHANGED
|
@@ -150,6 +150,7 @@ semantic versioning contract for the surfaces listed here.
|
|
|
150
150
|
| `./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. |
|
|
151
151
|
| `./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. |
|
|
152
152
|
| `./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. |
|
|
153
|
+
| `./docs/renderer.md` | `./docs/renderer.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
153
154
|
| `./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. |
|
|
154
155
|
| `./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. |
|
|
155
156
|
| `./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. |
|
|
@@ -208,6 +209,7 @@ semantic versioning contract for the surfaces listed here.
|
|
|
208
209
|
| `./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. |
|
|
209
210
|
| `./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. |
|
|
210
211
|
| `./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. |
|
|
212
|
+
| `./renderer` | types: `./renderer/index.d.ts`<br>default: `./renderer/index.js` | Renderer/theme helper JS | Stable additive | ESM theme data/helpers for opt-in skins, chart palettes, and external renderers. |
|
|
211
213
|
| `./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. |
|
|
212
214
|
| `./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. |
|
|
213
215
|
| `./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. |
|
|
@@ -222,6 +224,11 @@ semantic versioning contract for the surfaces listed here.
|
|
|
222
224
|
| `./docs/adr/0005-productive-tools-and-editorial-reports.md` | `./docs/adr/0005-productive-tools-and-editorial-reports.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
223
225
|
| `./docs/migrations/0.9-to-0.10.md` | `./docs/migrations/0.9-to-0.10.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
224
226
|
| `./docs/adr/0006-trusted-publishing.md` | `./docs/adr/0006-trusted-publishing.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
227
|
+
| `./docs/migrations/0.10-to-0.11.md` | `./docs/migrations/0.10-to-0.11.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
228
|
+
| `./docs/migrations/0.11-to-0.12.md` | `./docs/migrations/0.11-to-0.12.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
229
|
+
| `./css/discussion.css` | `./dist/css/discussion.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
230
|
+
| `./css/unlayered/discussion.css` | `./css/discussion.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
231
|
+
| `./docs/discussion.md` | `./docs/discussion.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
225
232
|
|
|
226
233
|
## Shipped Files Allowlist
|
|
227
234
|
|
|
@@ -244,6 +251,7 @@ always includes `package.json`, `README.md`, `LICENSE`, and
|
|
|
244
251
|
| `schemas` | Machine-readable schemas | Declarative JSON schemas for package-adjacent report/tooling contracts. |
|
|
245
252
|
| `annotations` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
246
253
|
| `connectors` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
254
|
+
| `renderer` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
247
255
|
| `shiki` | Theme data | Shiki theme JSON on the governed palette. |
|
|
248
256
|
| `llms.txt` | Agent entrypoint | Shipped plain-text orientation for offline LLM/agent consumers. |
|
|
249
257
|
| `CHANGELOG.md` | Release record | Shipped historical release notes. |
|
|
@@ -264,9 +272,11 @@ always includes `package.json`, `README.md`, `LICENSE`, and
|
|
|
264
272
|
| `docs/vega.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
265
273
|
| `docs/figure.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
266
274
|
| `docs/annotations.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
275
|
+
| `docs/discussion.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
267
276
|
| `docs/legends.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
268
277
|
| `docs/marks.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
269
278
|
| `docs/connectors.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
279
|
+
| `docs/renderer.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
270
280
|
| `docs/spotlight.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
271
281
|
| `docs/crosshair.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
272
282
|
| `docs/selection.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
@@ -304,6 +314,8 @@ always includes `package.json`, `README.md`, `LICENSE`, and
|
|
|
304
314
|
| `docs/adr/0005-productive-tools-and-editorial-reports.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
305
315
|
| `docs/migrations/0.9-to-0.10.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
306
316
|
| `docs/adr/0006-trusted-publishing.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
317
|
+
| `docs/migrations/0.10-to-0.11.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
318
|
+
| `docs/migrations/0.11-to-0.12.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
307
319
|
|
|
308
320
|
## Artifact Provenance
|
|
309
321
|
|
|
@@ -316,8 +328,8 @@ result. The listed gates are part of `npm run check`.
|
|
|
316
328
|
| Package manifest | `package.json` | docs/package-contract.md | `npm run package-contract:build` | check:fresh; check:exports; check:pack; check:consumer-surface; check:consumer-types; check:publint; check:attw | The complete export/file matrix in this document is generated from the manifest; packed tarball imports, concrete file resolution, and package-level type resolution are smoke-tested in clean consumers. |
|
|
317
329
|
| Token model | `tokens/index.js` | css/tokens.css; tokens/index.json; tokens/tokens.dtcg.json; tokens/resolved.json; tokens/figma.variables.json; tokens/index.d.ts | `npm run tokens:css:build; tokens:build; dtcg:build; resolved:build; figma:variables:build; dts:build` | check:fresh; check:contrast | Token names/roles are public. Resolved and Figma handoff values are visual tuning before 1.0. |
|
|
318
330
|
| 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. |
|
|
319
|
-
| Authored CSS graph | `css/core.css plus css/*.css leaves` | dist/bronto.css; dist/css/*.css (
|
|
320
|
-
| JSDoc-authored public JS | `behaviors/; annotations/; connectors/; react/; solid/; qwik/; svelte/; vue/` | adjacent *.d.ts and *.d.ts.map files | `npm run dts:emit` | check:dts-emit; check:types; check:consumer-surface; check:consumer-types; check:behavior-matrix; check:attw; check:publint | Declarations are emitted from the shipped JS, package subpath imports are compiled from a packed clean consumer, and public behavior exports are docs/unit/browser owned. |
|
|
331
|
+
| Authored CSS graph | `css/core.css plus css/*.css leaves` | dist/bronto.css; dist/css/*.css (48 layered outputs) | `npm run dist:build` | check:dist; check:exports; check:component-matrix | Default bundle and direct layered leaf imports are generated from authored CSS, size-gated, and coverage-owned as foundation or component leaves. |
|
|
332
|
+
| JSDoc-authored public JS | `behaviors/; annotations/; connectors/; renderer/; react/; solid/; qwik/; svelte/; vue/` | adjacent *.d.ts and *.d.ts.map files | `npm run dts:emit` | check:dts-emit; check:types; check:consumer-surface; check:consumer-types; check:behavior-matrix; check:attw; check:publint | Declarations are emitted from the shipped JS, package subpath imports are compiled from a packed clean consumer, and public behavior exports are docs/unit/browser owned. |
|
|
321
333
|
| Glyph registry | `glyphs/glyphs.js` | glyphs/glyphs.d.ts | `npm run glyphs:build` | check:glyphs; check:unit | Glyph names and render options are public. The registry stays sorted and type-covered. |
|
|
322
334
|
| 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. |
|
|
323
335
|
| 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. |
|
package/docs/reference.md
CHANGED
|
@@ -9,7 +9,7 @@ rendering of every class is the kitchen-sink demo:
|
|
|
9
9
|
**<https://ponchia.github.io/bronto-ui/>**. Theming knobs and the token
|
|
10
10
|
contract: [docs/theming.md](theming.md).
|
|
11
11
|
|
|
12
|
-
-
|
|
12
|
+
- 695 classes across 187 component groups
|
|
13
13
|
- Import the typed registry: `import { cls, ui, cx } from '@ponchia/ui/classes'`
|
|
14
14
|
- Validate markup as data (no JS/TS): `@ponchia/ui/classes.json` — the same
|
|
15
15
|
vocabulary as language-neutral JSON (`groups`, `classes`, `states`,
|
|
@@ -487,6 +487,23 @@ each one matches a real selector in the stylesheet.
|
|
|
487
487
|
| `cls.diffRowRemove` | `ui-diff__row--remove` | modifier |
|
|
488
488
|
| `cls.diffSplit` | `ui-diff--split` | modifier |
|
|
489
489
|
|
|
490
|
+
### `.ui-discussion`
|
|
491
|
+
|
|
492
|
+
| Registry key | Class | Kind |
|
|
493
|
+
| --- | --- | --- |
|
|
494
|
+
| `cls.discussion` | `ui-discussion` | base |
|
|
495
|
+
| `cls.discussionActions` | `ui-discussion__actions` | part |
|
|
496
|
+
| `cls.discussionComposer` | `ui-discussion__composer` | part |
|
|
497
|
+
| `cls.discussionHeader` | `ui-discussion__header` | part |
|
|
498
|
+
| `cls.discussionHint` | `ui-discussion__hint` | part |
|
|
499
|
+
| `cls.discussionItem` | `ui-discussion__item` | part |
|
|
500
|
+
| `cls.discussionList` | `ui-discussion__list` | part |
|
|
501
|
+
| `cls.discussionMessage` | `ui-discussion__message` | part |
|
|
502
|
+
| `cls.discussionMessages` | `ui-discussion__messages` | part |
|
|
503
|
+
| `cls.discussionMeta` | `ui-discussion__meta` | part |
|
|
504
|
+
| `cls.discussionQuote` | `ui-discussion__quote` | part |
|
|
505
|
+
| `cls.discussionState` | `ui-discussion__state` | part |
|
|
506
|
+
|
|
490
507
|
### `.ui-display`
|
|
491
508
|
|
|
492
509
|
| Registry key | Class | Kind |
|
package/docs/renderer.md
ADDED
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Renderer tokens
|
|
2
|
+
|
|
3
|
+
`@ponchia/ui/renderer` resolves the live bronto theme for renderers that cannot
|
|
4
|
+
read CSS: Vega, xterm.js, a canvas or WebGL graph, a map, a 3D scene. Those
|
|
5
|
+
engines take literal colours, so a page that switches theme, skin, contrast or
|
|
6
|
+
the OLED surface has to resolve its tokens again before each repaint that
|
|
7
|
+
matters.
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
import { readTokens, observeTokens, vegaConfig, xtermTheme } from '@ponchia/ui/renderer';
|
|
11
|
+
|
|
12
|
+
const tokens = readTokens(); // { scheme, bg, panel, text, line, accent, categorical, … }
|
|
13
|
+
view = await embed(el, spec, { config: vegaConfig(tokens, { narrow: el.clientWidth < 480 }) });
|
|
14
|
+
terminal.options.theme = xtermTheme(tokens);
|
|
15
|
+
|
|
16
|
+
const stop = observeTokens((next) => {
|
|
17
|
+
terminal.options.theme = xtermTheme(next);
|
|
18
|
+
rebuildChart(vegaConfig(next));
|
|
19
|
+
});
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
The static exports serve a different host. [`charts.json`](./theming.md#data-viz-palette)
|
|
23
|
+
and [`tokens/vega.js`](./vega.md) are snapshots per light/dark theme for a
|
|
24
|
+
report, a `file://` document or a build step. They cannot follow a skin or the
|
|
25
|
+
OLED preset; this module reads the page.
|
|
26
|
+
|
|
27
|
+
## What `readTokens()` returns
|
|
28
|
+
|
|
29
|
+
Every colour is a renderer literal: `#rrggbb` when opaque, `rgba(r, g, b, a)`
|
|
30
|
+
when translucent. Canvas, SVG, d3-color, xterm.js, three.js and MapLibre all
|
|
31
|
+
accept both.
|
|
32
|
+
|
|
33
|
+
| Field | Token | Use |
|
|
34
|
+
| --- | --- | --- |
|
|
35
|
+
| `scheme` | luminance of `--bg` | `'light'` or `'dark'` |
|
|
36
|
+
| `bg`, `bgElevated`, `panel`, `panelStrong` | `--bg`, `--bg-elevated`, `--panel`, `--panel-strong` | Backgrounds; draw on `panel` |
|
|
37
|
+
| `text`, `textSoft`, `textDim` | `--text`, `--text-soft`, `--text-dim` | Labels, secondary and tertiary ink |
|
|
38
|
+
| `line`, `lineStrong` | `--line`, `--line-strong` | Grid and hairlines; axes and rules |
|
|
39
|
+
| `accent`, `accentText`, `onAccent`, `focus` | accent family | The one emphasis, its text forms, focus |
|
|
40
|
+
| `selection` | `--accent` at 27% | A translucent selection wash |
|
|
41
|
+
| `success`, `warning`, `danger`, `info` | status tier | Status only, never categories |
|
|
42
|
+
| `sans`, `mono` | `--sans`, `--mono` | Font stacks for a canvas renderer |
|
|
43
|
+
| `categorical` | `--cat-1..8` | Eight hues in fixed order |
|
|
44
|
+
| `categoricalTint` | `--cat-N-tint` | Each hue as a wash over `panel` |
|
|
45
|
+
| `categoricalInk` | `--cat-N-ink` | Each hue as text, 4.5:1 on panel and tint |
|
|
46
|
+
| `sequential`, `diverging` | `--chart-seq-*`, `--chart-div-*` | Ramps for magnitude and ± data |
|
|
47
|
+
|
|
48
|
+
`readTokens(element)` reads the custom properties as computed on `element`, so a
|
|
49
|
+
subtree that re-points tokens is honoured. Without `css/dataviz.css` on the
|
|
50
|
+
page, the categorical set and the ramps fall back to the packaged palette for
|
|
51
|
+
the resolved scheme, and the tint is computed over the live panel. Without a
|
|
52
|
+
DOM (SSR, tests) it returns the packaged values; pass `{ scheme: 'dark' }` to
|
|
53
|
+
choose.
|
|
54
|
+
|
|
55
|
+
## Following changes
|
|
56
|
+
|
|
57
|
+
`observeTokens(callback, { element, signal })` calls back with fresh tokens
|
|
58
|
+
when the root's `data-theme`, `data-bronto-skin`, `data-contrast`,
|
|
59
|
+
`data-surface`, `data-density`, `class` or `style` changes and a token's value
|
|
60
|
+
moved with it, or when the system colour-scheme or contrast preference flips.
|
|
61
|
+
A host that writes its own inline properties on the root every frame (a canvas
|
|
62
|
+
zoom, say) costs one computed-style read per frame and no callback. Calls are
|
|
63
|
+
coalesced to one per animation frame. It returns a stop function; an
|
|
64
|
+
`AbortSignal` also stops it.
|
|
65
|
+
|
|
66
|
+
A host that already announces its own settled appearance change can read
|
|
67
|
+
`readTokens()` on that event instead and skip the observer.
|
|
68
|
+
|
|
69
|
+
## Mappings
|
|
70
|
+
|
|
71
|
+
- **`vegaConfig(tokens, { mode, narrow, background })`** — a Vega-Lite (default)
|
|
72
|
+
or Vega `config`. Quiet chrome in the bronto inks, no plot frame, the
|
|
73
|
+
categorical palette as `range.category` (a single series takes its first
|
|
74
|
+
hue), the sequential ramp for `ordinal`/`ramp`/`heatmap`, the diverging ramp
|
|
75
|
+
for `diverging`. `narrow` moves the legend under the plot and thins ticks;
|
|
76
|
+
`background` defaults to transparent so the host panel shows. A spec's own
|
|
77
|
+
`config` still wins where Vega merges it. The static
|
|
78
|
+
[`tokens/vega.js`](./vega.md) is this mapping applied to each theme's
|
|
79
|
+
packaged tokens.
|
|
80
|
+
- **`xtermTheme(tokens)`** — an xterm.js `ITheme`: page ink on the page
|
|
81
|
+
background, the accent as cursor, the status colours for red, green, yellow
|
|
82
|
+
and blue, and the categorical magenta and aqua inks for magenta and cyan, so
|
|
83
|
+
all six ANSI hues differ.
|
|
84
|
+
|
|
85
|
+
For any other engine, map the fields yourself: they are already the roles a
|
|
86
|
+
renderer needs.
|
|
87
|
+
|
|
88
|
+
## Conversions
|
|
89
|
+
|
|
90
|
+
- **`parseColor(value)`** — a resolved CSS colour to `{ r, g, b, alpha }`,
|
|
91
|
+
clipped into sRGB: hex, `rgb()`, `hsl()`, `oklch()`, `oklab()`, `lab()`,
|
|
92
|
+
`lch()` and `color(srgb | srgb-linear | display-p3 | xyz-d65 | xyz-d50 …)`.
|
|
93
|
+
It returns null for `var()`, `color-mix()`, `light-dark()` and named colours,
|
|
94
|
+
which only a browser can compute.
|
|
95
|
+
- **`formatColor(rgba)`** — `#rrggbb` or `rgba(r, g, b, a)`.
|
|
96
|
+
- **`resolveColor(value, { element })`** — any colour expression to a literal,
|
|
97
|
+
asking the browser for what `parseColor()` cannot compute.
|
|
98
|
+
|
|
99
|
+
The module is SSR-safe: it touches the DOM only inside a call that needs it.
|
|
100
|
+
It owns no renderer and imports none.
|
package/docs/reporting.md
CHANGED
|
@@ -60,18 +60,18 @@ No install? Link the same files from a CDN. Pin the version — pre-1.0, breakin
|
|
|
60
60
|
changes ship in the minor (see [stability.md](./stability.md)):
|
|
61
61
|
|
|
62
62
|
```html
|
|
63
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
64
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
63
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.12.0/dist/bronto.css" />
|
|
64
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.12.0/dist/css/report-kit.css" />
|
|
65
65
|
```
|
|
66
66
|
|
|
67
67
|
Leaf-by-leaf CDN imports use the same `dist/css/` paths:
|
|
68
68
|
|
|
69
69
|
```html
|
|
70
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
71
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
72
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
73
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
74
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
70
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.12.0/dist/bronto.css" />
|
|
71
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.12.0/dist/css/report.css" />
|
|
72
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.12.0/dist/css/dataviz.css" />
|
|
73
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.12.0/dist/css/annotations.css" />
|
|
74
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.12.0/dist/css/legend.css" />
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
The CDN serves the package's own `fonts/` next to the CSS, so font URLs resolve
|
|
@@ -649,7 +649,7 @@ directly; for a Vega chart, the same colours arrive through
|
|
|
649
649
|
`brontoVegaConfig`'s `range.*` ramps, projected from `@ponchia/ui/charts.json`.
|
|
650
650
|
|
|
651
651
|
For a **sequential** figure (a heatmap, a choropleth, a magnitude ramp) fill the
|
|
652
|
-
cells from the single-hue ramp tokens `--chart-seq-1` … `--chart-seq-
|
|
652
|
+
cells from the single-hue ramp tokens `--chart-seq-1` … `--chart-seq-5`
|
|
653
653
|
(low → high); for a **diverging** figure (−…0…+) use `--chart-div-1` …
|
|
654
654
|
`--chart-div-7` (the middle band is the neutral midpoint). Both ramps live in
|
|
655
655
|
`css/dataviz.css`, and their resolved per-theme hexes are in
|
|
@@ -885,7 +885,7 @@ or validation runtime.
|
|
|
885
885
|
|
|
886
886
|
```json
|
|
887
887
|
{
|
|
888
|
-
"$schema": "https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
888
|
+
"$schema": "https://cdn.jsdelivr.net/npm/@ponchia/ui@0.12.0/schemas/report-claims.v1.schema.json",
|
|
889
889
|
"schemaVersion": "bronto-report-claims.v1",
|
|
890
890
|
"report": { "title": "Decision readiness", "type": "decision" },
|
|
891
891
|
"claims": [
|
package/docs/stability.md
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# Public API stability
|
|
2
2
|
|
|
3
3
|
`@ponchia/ui` is pre-1.0. Breaking changes ship in the minor (`0.x.0`), and
|
|
4
|
-
patches are non-breaking. In practical terms: **PATCH releases (`0.
|
|
4
|
+
patches are non-breaking. In practical terms: **PATCH releases (`0.12.x`) are
|
|
5
5
|
non-breaking bug-fixes and additive changes — safe to upgrade without review;
|
|
6
6
|
MINOR releases (`0.x.0`) may include breaking changes and consumers should
|
|
7
7
|
review the CHANGELOG before upgrading.** Pin `~0.x` (tilde) to accept only
|
|
@@ -93,13 +93,15 @@ current public-surface matrix and the release policy above still applies.
|
|
|
93
93
|
| Glyph registry/renderers (`@ponchia/ui/glyphs`) | Stable additive | Existing glyph names stay valid. New glyphs are additive. Renderer option names and accessibility defaults are public. |
|
|
94
94
|
| `.ui-icon` mask renderer | Stable | Class name, `--icon-size`, currentColor inheritance, and `--icon-mask` contract are public. The internal data URL encoding is not. |
|
|
95
95
|
| Skins (`@ponchia/ui/skins`, `css/skins.css`) | Stable additive | Existing skin names stay valid. New skins are additive. Skins are root-level choices. Skin CSS is opt-in, not in the default bundle. |
|
|
96
|
-
| Charts (`@ponchia/ui/charts`, `charts.json`, `css/dataviz.css`) | Stable additive | Token names, JSON shape, and 8 categorical slots are public. `css/dataviz.css` is opt-in, not in the default bundle. Exact palette values may tune if gates and release notes justify it. |
|
|
96
|
+
| Charts (`@ponchia/ui/charts`, `charts.json`, `css/dataviz.css`) | Stable additive | Token names (`--chart-*`, `--cat-N`, `--cat-N-tint`, `--cat-N-ink`), `CATEGORICAL_HUES`, the JSON shape, and the 8 categorical slots in fixed hue order are public. `css/dataviz.css` is opt-in, not in the default bundle. Exact palette values may tune if gates and release notes justify it. |
|
|
97
|
+
| Renderer tokens (`@ponchia/ui/renderer`) | Stable additive | Function names, option names and the `RendererTokens` field names are public; new fields are additive. Colours are returned as `#rrggbb` or `rgba()` literals. The exact Vega/xterm mapping may tune with the token model. |
|
|
97
98
|
| External renderer themes (`@ponchia/ui/mermaid`, `@ponchia/ui/mermaid.json`, `@ponchia/ui/d2`, `@ponchia/ui/d2.json`, `@ponchia/ui/vega`, `@ponchia/ui/vega.json`) | Stable additive | Theme helper names, JSON shapes, and supported renderer theme slots are public. Values are resolved colours because Mermaid, D2, and Vega cannot consume Bronto CSS variables directly. Exact colours may tune with token changes, but `check:mermaid`, `check:d2`, and `check:vega` must prove every exported theme resolves with no `var()` leaks. No renderer runtime ships. |
|
|
98
99
|
| Shiki theme data (`@ponchia/ui/shiki/nothing.json`) | Stable additive | The bundled Shiki theme JSON shape and token-derived scope roles are public for syntax-highlighting consumers. Exact colours may tune with the token model and must stay generated from the governed palette. |
|
|
99
100
|
| Reports (`css/report.css`, `.ui-report*`, print utilities) | Stable additive | Report class names, BEM part names, and print utility names are public. Report CSS is opt-in and not imported by the default bundle. The data key now lives in the standalone Legends layer (below), not `css/report.css`; charting is via the Vega theme target (`@ponchia/ui/vega`, see [vega](./vega.md)) or a token-themed inline SVG, not a shipped renderer. |
|
|
100
101
|
| Report kit roll-up (`css/report-kit.css`) | Stable additive | A convenience `@import` of the complete static-report vocabulary. The set of leaves it bundles may grow additively; each leaf also stays individually exported. Opt-in, not in the default bundle. |
|
|
101
102
|
| Figure stage (`css/figure.css`, `.ui-figure*`) | Stable additive | Figure class names, overlay/key/fallback-data slots, and report composition hooks are public. Opt-in, not in the default bundle. Bronto owns the figure frame, not chart rendering, scales, or data mapping. |
|
|
102
103
|
| Annotations (`@ponchia/ui/annotations`, `css/annotations.css`, `.ui-annotation*`) | Stable additive | SVG annotation class names, recipe option names, and helper function names are public. Helper internals and exact path-control heuristics may tune before 1.0. Opt-in, not in the default bundle. Rich placement, renderer, editing, and chart/diagram adapter APIs belong to the sibling `@ponchia/annotations` package; `@ponchia/ui` does not depend on it at runtime or through public declarations. |
|
|
104
|
+
| Discussions (`css/discussion.css`, `.ui-discussion*`) | Stable additive | Thread-list, message, quotation and composer class names are public. Opt-in, not in the default bundle. The host owns posting, persistence, identity, resolution, text anchors and focus management. |
|
|
103
105
|
| Legends (`css/legend.css`, `.ui-legend*`, `@ponchia/ui/behaviors` `initLegend`) | Stable additive | Legend class names, recipe option names, and the `bronto:legend:toggle` event contract (`aria-pressed="true"` ⇒ shown) are public. Opt-in, not in the default bundle; swatch colours are gated to the `--chart-*` palette. |
|
|
104
106
|
| Marks (`css/marks.css`, `.ui-mark*`, `.ui-bracket-note*`) | Stable additive | Text-mark and bracket-note class names and recipe option names are public. Opt-in, not in the default bundle. Uses semantic tones only. |
|
|
105
107
|
| Connectors (`@ponchia/ui/connectors`, `css/connectors.css`, `.ui-connector*`, `initConnectors`) | Stable additive | Connector class names, the `data-bronto-connector` attribute contract, geometry helper function names, and recipe options are public. Helper internals/heuristics may tune before 1.0. Opt-in, not in the default bundle. |
|