@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/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,90 @@
|
|
|
5
5
|
|> `^0` / `*` wildcard does **not** protect you. See README → Versioning, and
|
|
6
6
|
|> the deprecation policy in CONTRIBUTING.md.
|
|
7
7
|
|
|
8
|
+
## 0.12.0 — 2026-10-01
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- **BREAKING: a categorical palette with no accent slot.** `--chart-1..8` are
|
|
13
|
+
now eight fixed hues — blue, orange, aqua, yellow, magenta, green, violet,
|
|
14
|
+
red — authored as measured sRGB per theme. Series 1 is no longer
|
|
15
|
+
`var(--accent)`, so an ordinary first series stops reading as an alert, and
|
|
16
|
+
the `ACCENT` export of `@ponchia/ui/charts` is removed. The 0.11 set failed
|
|
17
|
+
the measurable palette checks on the package's own surfaces (Okabe-Ito
|
|
18
|
+
yellow and the slate outside the lightness band, the slate under the chroma
|
|
19
|
+
floor). The values come from a consumer that validated and shipped them as a
|
|
20
|
+
recorded divergence. `CATEGORICAL_HUES` names the slots.
|
|
21
|
+
- **BREAKING: `--chart-seq-*` is one blue hue in five steps.** `--chart-seq-6`
|
|
22
|
+
is removed. Step 1 sits nearest the surface in both themes.
|
|
23
|
+
- **BREAKING: the static Vega config is frameless.** `brontoVegaConfig()` sets
|
|
24
|
+
no plot frame, draws a single series in the first categorical hue, keeps a
|
|
25
|
+
`--panel` gap between adjacent fills and sets readable label sizes. It is now
|
|
26
|
+
generated from `@ponchia/ui/renderer`'s `vegaConfig()`, so the static and
|
|
27
|
+
runtime configs share one mapping. `brontoVegaAccent()` returns `--accent`
|
|
28
|
+
and `brontoVegaNeutral()` returns `--text-dim`.
|
|
29
|
+
- `check:charts` measures what a reader sees: per theme and against the panel,
|
|
30
|
+
the page and the OLED surfaces, each slot sits inside the OKLCH lightness
|
|
31
|
+
band and above the chroma floor, and adjacent slots stay apart under
|
|
32
|
+
simulated protanopia/deuteranopia (ΔE×100 ≥ 6) and normal vision (≥ 15).
|
|
33
|
+
All-pairs separation and sub-3:1 contrast are reported, not gated; the
|
|
34
|
+
pattern fill remains the second channel. ADR-0001 step 7 records the
|
|
35
|
+
amendment.
|
|
36
|
+
|
|
37
|
+
### Added
|
|
38
|
+
|
|
39
|
+
- **Categorical identity tokens** in `css/dataviz.css`: `--cat-1..8` (the same
|
|
40
|
+
hues), `--cat-N-tint` (a 16% wash over `--panel`, so it follows skins and
|
|
41
|
+
OLED) and `--cat-N-ink` (text that holds 4.5:1 on the panel, the page and its
|
|
42
|
+
own tint, gated). For tags, participants and user-chosen tints — never
|
|
43
|
+
status. `charts.json` gains `hues`, `tint` and `ink`.
|
|
44
|
+
- **`@ponchia/ui/renderer`** — the live theme for renderers that cannot read
|
|
45
|
+
CSS. `readTokens()` resolves the bronto roles a renderer needs (surfaces,
|
|
46
|
+
inks, lines, accent, status, fonts, categorical set and ramps) to `#rrggbb`
|
|
47
|
+
or `rgba()` literals, following skins, contrast and the OLED surface.
|
|
48
|
+
`observeTokens()` calls back when one of them changed. `vegaConfig()` and
|
|
49
|
+
`xtermTheme()` map tokens to those renderers' configuration; `parseColor()`,
|
|
50
|
+
`formatColor()` and `resolveColor()` convert any CSS colour, including
|
|
51
|
+
`oklch()`, `lab()` and `color(display-p3 …)`.
|
|
52
|
+
|
|
53
|
+
See [the migration guide](docs/migrations/0.11-to-0.12.md).
|
|
54
|
+
|
|
55
|
+
## 0.11.0 — 2026-09-09
|
|
56
|
+
|
|
57
|
+
### Changed
|
|
58
|
+
|
|
59
|
+
- **BREAKING: complete the supporting typography.** Figure captions, legend
|
|
60
|
+
text, generated-content labels and command groups use sentence-case sans.
|
|
61
|
+
Technical log bodies and identifiers retain mono. Caption text is 14px at
|
|
62
|
+
the default root size; inline citations no longer shrink below 12px.
|
|
63
|
+
- Figure keys and decision/action rows respond to their own available width.
|
|
64
|
+
Two-up comparisons wrap intrinsically, including outside a report. Named
|
|
65
|
+
containment on figure, decision-grid and actions wrappers is disabled for
|
|
66
|
+
print to preserve document flow.
|
|
67
|
+
|
|
68
|
+
### Fixed
|
|
69
|
+
|
|
70
|
+
- Narrow evidence panels no longer squeeze a chart into 40px or decision text
|
|
71
|
+
into 21px on a wide page. Long action status and legend labels wrap.
|
|
72
|
+
- Long mobile navigation labels wrap while keeping every destination reachable.
|
|
73
|
+
- The figure specimen's authored annotation stays inside its viewBox.
|
|
74
|
+
- Generated-content disclosure summaries retain the coarse-pointer target floor.
|
|
75
|
+
|
|
76
|
+
### Added
|
|
77
|
+
|
|
78
|
+
- Optional `discussion.css` with thread lists, quoted passages, messages and
|
|
79
|
+
composers. State and posting remain host-owned; includes a local interactive
|
|
80
|
+
specimen and a narrow-panel example.
|
|
81
|
+
|
|
82
|
+
- A working service specimen with deterministic loading, empty, error and stale
|
|
83
|
+
states, environment/search filtering, retry and native-dialog sample creation.
|
|
84
|
+
Unavailable observations never retain an operational health claim. Product
|
|
85
|
+
state stays in the specimen; no framework state machine or data dependency.
|
|
86
|
+
- Narrow-parent regression checks, including a comparison outside a report,
|
|
87
|
+
annotation bounds, long action status, citation text and recovery journeys.
|
|
88
|
+
- A complete-screen migration recipe for explicit consumer typography overrides.
|
|
89
|
+
|
|
90
|
+
See [the migration guide](docs/migrations/0.10-to-0.11.md).
|
|
91
|
+
|
|
8
92
|
## 0.10.0 — 2026-09-08
|
|
9
93
|
|
|
10
94
|
### Changed
|
package/MIGRATIONS.json
CHANGED
|
@@ -83,7 +83,7 @@
|
|
|
83
83
|
{
|
|
84
84
|
"old": "hero / project-* / post-card / essay-* / page-* / home-* / signal-panel / worklog-summary",
|
|
85
85
|
"new": "the ui-* content layer",
|
|
86
|
-
"note": "Long-form content: .ui-prose / .ui-quote. Cards: .ui-card. Layout: .ui-grid / .ui-stack. Site chrome: the ui-site* shell. No 1:1 mapping
|
|
86
|
+
"note": "Long-form content: .ui-prose / .ui-quote. Cards: .ui-card. Layout: .ui-grid / .ui-stack. Site chrome: the ui-site* shell. No 1:1 mapping — re-compose with the content primitives."
|
|
87
87
|
},
|
|
88
88
|
{
|
|
89
89
|
"old": "callout",
|
|
@@ -98,7 +98,7 @@
|
|
|
98
98
|
{
|
|
99
99
|
"old": "tag-list / tag",
|
|
100
100
|
"new": "ui-tags / ui-tag",
|
|
101
|
-
"note": "Compact variant .tag-list--compact
|
|
101
|
+
"note": "Compact variant .tag-list--compact → .ui-tags--compact; verify accent-on-accent contrast (see CHANGELOG 0.3.0 a11y fix)."
|
|
102
102
|
}
|
|
103
103
|
],
|
|
104
104
|
"codemod": "See docs/migrations/0.2-to-0.3.md for a ready-to-run ripgrep+sed recipe covering the 'safe' rules."
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
"manual": [
|
|
112
112
|
{
|
|
113
113
|
"old": "--orange / --orange-soft",
|
|
114
|
-
"new": "(removed
|
|
114
|
+
"new": "(removed — re-declare in a consumer :root override if referenced)",
|
|
115
115
|
"note": "Orphan token pair: defined in the token mirrors but referenced by no shipped component and documented nowhere, and untiered under the new colour model. Removed under the CONTRIBUTING 'provably-unreferenced surface' exception. If you used it: :root { --orange: #a85f32; --orange-soft: rgb(168 95 50 / 0.13); }"
|
|
116
116
|
}
|
|
117
117
|
],
|
|
@@ -120,7 +120,7 @@
|
|
|
120
120
|
{
|
|
121
121
|
"from": "0.4",
|
|
122
122
|
"to": "0.5",
|
|
123
|
-
"summary": "Adds the analytical-primitives suite (annotations, legend, marks, connectors, spotlight, crosshair, selection + the analytical.css roll-up); all additive/opt-in. Three breaking changes: the chart data key moved out of the report kit into the standalone Legends layer (`.ui-chart__legend`/`.ui-chart__swatch` removed); annotation arrowheads now render via the shared connectors geometry kernel (a small visual path change, no API change); and the marks/bracket-note rationed-accent tone was renamed `evidence
|
|
123
|
+
"summary": "Adds the analytical-primitives suite (annotations, legend, marks, connectors, spotlight, crosshair, selection + the analytical.css roll-up); all additive/opt-in. Three breaking changes: the chart data key moved out of the report kit into the standalone Legends layer (`.ui-chart__legend`/`.ui-chart__swatch` removed); annotation arrowheads now render via the shared connectors geometry kernel (a small visual path change, no API change); and the marks/bracket-note rationed-accent tone was renamed `evidence`→`accent` to match the annotation/connector tone vocabulary (`.ui-annotation--evidence` stays — it's a marker variant, not a tone).",
|
|
124
124
|
"safe": [
|
|
125
125
|
{
|
|
126
126
|
"old": "ui-chart__swatch",
|
|
@@ -139,12 +139,12 @@
|
|
|
139
139
|
{
|
|
140
140
|
"old": "ui.mark({ tone: 'evidence' }) / ui.bracketNote({ tone: 'evidence' })",
|
|
141
141
|
"new": "tone: 'accent'",
|
|
142
|
-
"note": "The rationed-accent tone option on the mark/bracket-note recipes is now 'accent' (was 'evidence'), matching ui.connector/ui.annotation. Do NOT rewrite ui.annotation({ variant: 'evidence' }) or the 'evidence' subject marker
|
|
142
|
+
"note": "The rationed-accent tone option on the mark/bracket-note recipes is now 'accent' (was 'evidence'), matching ui.connector/ui.annotation. Do NOT rewrite ui.annotation({ variant: 'evidence' }) or the 'evidence' subject marker — those are a marker shape, not a tone, and are unchanged."
|
|
143
143
|
},
|
|
144
144
|
{
|
|
145
145
|
"old": "ui-chart__legend",
|
|
146
146
|
"new": "ui-legend",
|
|
147
|
-
"note": "Also import '@ponchia/ui/css/legend.css' beside report.css, and wrap each entry's content as <li class=\"ui-legend__item\">
|
|
147
|
+
"note": "Also import '@ponchia/ui/css/legend.css' beside report.css, and wrap each entry's content as <li class=\"ui-legend__item\"> … <span class=\"ui-legend__label\">…</span>. The swatch's --chart-color/--chart-pattern inline contract is unchanged; the categorical --chart-N colour is also available via .ui-legend__swatch--N. See docs/legends.md."
|
|
148
148
|
},
|
|
149
149
|
{
|
|
150
150
|
"old": "connectorEndArrow (annotations)",
|
|
@@ -157,16 +157,16 @@
|
|
|
157
157
|
{
|
|
158
158
|
"from": "0.5",
|
|
159
159
|
"to": "0.6",
|
|
160
|
-
"summary": "Charting realignment. The local static bar-chart renderer (.ui-chart*) is removed
|
|
160
|
+
"summary": "Charting realignment. The local static bar-chart renderer (.ui-chart*) is removed — a chart needs scales + data binding, out of scope for the analytical layer. bronto is now a themeable target for Vega-Lite (@ponchia/ui/vega), the same tokens-as-data path as Mermaid/D2. The --chart-* data-viz palette, tokens/charts.json, and the .ui-legend layer are unchanged.",
|
|
161
161
|
"safe": [],
|
|
162
162
|
"manual": [
|
|
163
163
|
{
|
|
164
164
|
"old": "ui-chart / ui-chart__plot / ui-chart__bar / ui-chart__label / ui-chart__track / ui-chart__fill / ui-chart__fallback / ui-chart__caption",
|
|
165
165
|
"new": "a Vega-Lite chart themed with @ponchia/ui/vega, or a token-themed inline <svg>",
|
|
166
|
-
"note": "No 1:1 class mapping
|
|
166
|
+
"note": "No 1:1 class mapping — the renderer is removed. For a real chart: import '@ponchia/ui/vega', pass brontoVegaConfig(theme) to vega-embed, and place the result in a <figure class=\"ui-report__figure\"> with a <figcaption class=\"ui-report__caption\"> and a <ul class=\"ui-legend\"> key (see docs/vega.md). For a frozen/print chart: hand-author an inline <svg> using the --chart-N palette tokens for fills. The --chart-value inline knob is gone; --chart-color/--chart-pattern remain on .ui-legend__swatch."
|
|
167
167
|
}
|
|
168
168
|
],
|
|
169
|
-
"codemod": "No codemod
|
|
169
|
+
"codemod": "No codemod — the .ui-chart* renderer has no replacement class. rg -l 'ui-chart\\\\b|ui-chart__' to find call sites, then rebuild each as a Vega-Lite chart (@ponchia/ui/vega) or a token-themed inline <svg>. See docs/vega.md."
|
|
170
170
|
},
|
|
171
171
|
{
|
|
172
172
|
"from": "0.6",
|
|
@@ -205,6 +205,49 @@
|
|
|
205
205
|
}
|
|
206
206
|
],
|
|
207
207
|
"codemod": "See docs/migrations/0.9-to-0.10.md. Changes require consumer lifecycle and visual review; no blanket replacement is safe."
|
|
208
|
+
},
|
|
209
|
+
{
|
|
210
|
+
"from": "0.10",
|
|
211
|
+
"to": "0.11",
|
|
212
|
+
"summary": "Readable supporting typography and container-aware evidence layouts.",
|
|
213
|
+
"safe": [],
|
|
214
|
+
"manual": [
|
|
215
|
+
{
|
|
216
|
+
"old": "viewport-based figure/report layouts",
|
|
217
|
+
"new": "container-aware figure, decision-grid and actions layouts; intrinsic two-up comparisons",
|
|
218
|
+
"note": "Keep the documented wrappers, verify narrow parents on wide screens and review print. New inline-size containment can change intrinsic sizing."
|
|
219
|
+
},
|
|
220
|
+
{
|
|
221
|
+
"old": "uppercase mono explanatory labels and unconstrained superscript citations",
|
|
222
|
+
"new": "sentence-case sans supporting text and a citation size floor",
|
|
223
|
+
"note": "Review explicit consumer overrides by role, preserving intentional display and technical identifiers."
|
|
224
|
+
}
|
|
225
|
+
],
|
|
226
|
+
"codemod": "No automatic rewrite: review complete consumer tasks and docs/migrations/0.10-to-0.11.md."
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
"from": "0.11",
|
|
230
|
+
"to": "0.12",
|
|
231
|
+
"summary": "Categorical palette with no accent slot, categorical identity tokens, runtime renderer tokens.",
|
|
232
|
+
"safe": [],
|
|
233
|
+
"manual": [
|
|
234
|
+
{
|
|
235
|
+
"old": "--chart-1 = var(--accent) / ACCENT from @ponchia/ui/charts",
|
|
236
|
+
"new": "fixed hues; paint an emphasised mark with var(--accent) or brontoVegaAccent(theme)",
|
|
237
|
+
"note": "ACCENT is removed. Charts that meant 'the brand' need an explicit accent encoding."
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
"old": "--chart-seq-6",
|
|
241
|
+
"new": "--chart-seq-1..5",
|
|
242
|
+
"note": "Re-map six-bin sequential figures to five bins."
|
|
243
|
+
},
|
|
244
|
+
{
|
|
245
|
+
"old": "brontoVegaConfig() framed plot, accent default mark",
|
|
246
|
+
"new": "frameless plot, first categorical hue as the default mark",
|
|
247
|
+
"note": "A spec's own config still wins; review dashboards that relied on the frame."
|
|
248
|
+
}
|
|
249
|
+
],
|
|
250
|
+
"codemod": "No automatic rewrite: see docs/migrations/0.11-to-0.12.md."
|
|
208
251
|
}
|
|
209
252
|
]
|
|
210
253
|
}
|
package/README.md
CHANGED
|
@@ -93,7 +93,7 @@ Or drop it in with no build step, straight from a CDN (replace the version only
|
|
|
93
93
|
when deliberately upgrading across a breaking pre-1.0 minor):
|
|
94
94
|
|
|
95
95
|
```html
|
|
96
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
96
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.12.0/dist/bronto.css">
|
|
97
97
|
```
|
|
98
98
|
|
|
99
99
|
## Quick start
|
|
@@ -171,7 +171,7 @@ Arrows, chevrons, check/close/plus/minus, search/menu/gear, info/warning/bell/lo
|
|
|
171
171
|
- **Motion & dots** — the dot-matrix motif kit: dot grid, status dots, dot loaders, the orbital spinner, matrix reveal — all reduced-motion aware.
|
|
172
172
|
- **Glyphs** — `@ponchia/ui/glyphs`, a 71-glyph dot-matrix icon set on the `.ui-dotmatrix` primitive (display marks + crisp `solid` inline icons + one-node `.ui-icon` mask rendering).
|
|
173
173
|
- **Colorways** _(opt-in)_ — `data-bronto-skin="amber-crt | phosphor-green | e-ink"`: a root-level recolour of the one accent (OKLCH, per-theme, contrast-gated), never in the default bundle.
|
|
174
|
-
- **
|
|
174
|
+
- **Categorical + data-viz** _(opt-in)_ — eight fixed hues as chart series (`--chart-*`, sequential/diverging ramps, dot-matrix pattern fills) and as categorical identity (`--cat-*` with tint and text ink), measured per theme and surface. Never UI chrome. `@ponchia/ui/renderer` resolves them, with the chrome, for canvas/WebGL/SVG renderers.
|
|
175
175
|
|
|
176
176
|
Full generated catalog of every class: **[docs/reference.md](https://github.com/Ponchia/bronto-ui/blob/main/docs/reference.md)**. The decision guide (which primitive when): **[docs/usage.md](https://github.com/Ponchia/bronto-ui/blob/main/docs/usage.md)**.
|
|
177
177
|
|
|
@@ -221,7 +221,7 @@ Per-framework getting-started guides + runnable example apps live in the repo:
|
|
|
221
221
|
|
|
222
222
|
- **Tokens as data** — `import tokens, { themeColor, cssVars } from '@ponchia/ui/tokens'` (plus authored `tokens.json`, a structured DTCG 2025.10 `tokens.dtcg.json`, `tokens/resolved.json` for concrete values in canvas/SVG/MapLibre, and `tokens/figma.variables.json` for local Figma Variables import/sync scripts).
|
|
223
223
|
- **Consumer contract checker** — after an upgrade, run `npx --no-install bronto-ui-check src` to catch unknown literal `ui-*` classes and unresolved Bronto token references in code, style, and template sources before build or deployment. Comments, generated/vendor directories, and Markdown prose are excluded.
|
|
224
|
-
- **Chart colours for dashboards** — `import charts from '@ponchia/ui/charts.json' with { type: 'json' }` in Node ESM, or the same path through a bundler JSON import (resolved hex per theme
|
|
224
|
+
- **Chart colours for dashboards** — `import charts from '@ponchia/ui/charts.json' with { type: 'json' }` in Node ESM, or the same path through a bundler JSON import (resolved hex per theme, eight fixed hues) plus the opt-in `@ponchia/ui/css/dataviz.css`; for a live page that switches skin or theme, `@ponchia/ui/renderer` resolves the same palette and chrome at runtime.
|
|
225
225
|
- **Static reports for LLMs** — add `@ponchia/ui/css/report-kit.css` for the complete report vocabulary, or `@ponchia/ui/css/report.css` plus the specific leaves a smaller report needs. Sidecar claim/source contracts can validate against `@ponchia/ui/schemas/report-claims.v1.schema.json`. Full cookbook: `docs/reporting.md`.
|
|
226
226
|
- **Modern-platform motion** — overlays (modal/drawer/popover), toasts and the `<details>` accordion animate **in and out** with zero JS (`@starting-style` + `allow-discrete`, `::details-content` + `interpolate-size`). Progressive-enhancement extras: `.ui-scroll-progress` / `.ui-scroll-reveal` (scroll-driven, no JS) and `.ui-vt` for View Transitions. All degrade to a static end-state and respect `prefers-reduced-motion`. For smooth **cross-document** navigations, add the document-global one-liner to your own top-level (unlayered) CSS: `@view-transition { navigation: auto; }`.
|
|
227
227
|
- **Editor IntelliSense** — point VS Code at the shipped custom-data file so every token autocompletes in `var(--…)`:
|
package/behaviors/forms.d.ts
CHANGED
|
@@ -37,7 +37,7 @@ export type FormValidationOpts = {
|
|
|
37
37
|
/**
|
|
38
38
|
* Event-delegation root; default: `document`.
|
|
39
39
|
*/
|
|
40
|
-
root?:
|
|
40
|
+
root?: Element | Document | null | undefined;
|
|
41
41
|
/**
|
|
42
42
|
* Localized validation-summary title. A summary/form
|
|
43
43
|
* `data-bronto-error-summary-title` attribute overrides it, and an authored
|
package/behaviors/internal.d.ts
CHANGED
|
@@ -21,6 +21,6 @@ export type DelegateOpts = {
|
|
|
21
21
|
* Event-delegation root; also scopes which controls are queried. Default: `document`.
|
|
22
22
|
* `null` means a scope was requested but is not ready yet, so the behavior no-ops.
|
|
23
23
|
*/
|
|
24
|
-
root?:
|
|
24
|
+
root?: Element | Document | null | undefined;
|
|
25
25
|
};
|
|
26
26
|
//# sourceMappingURL=internal.d.ts.map
|
package/classes/classes.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "@ponchia/ui class vocabulary as language-neutral data — validate emitted markup without executing the ESM cls map or parsing the .d.ts. Generated from classes/index.js — do not edit by hand; run `npm run classes:json:build`. Drift-checked in CI. `groups[].base` is null for a parts-only namespace (no standalone base class — do NOT emit it). A modifier whose name contains `__` (e.g. `ui-spark__bar--pos`) attaches to THAT part, not the base host. `states` is the author-applied `is-*` hooks (runtime/behavior-managed hooks are excluded); `behaviorAttributes` are the `data-bronto-*` wiring hooks the optional behaviors delegate on; `requiredAria` is the role/aria a generator must emit per component. `states` + `customProperties` are documented in docs/reference.md and ship outside `cls` by design.",
|
|
3
3
|
"counts": {
|
|
4
|
-
"classes":
|
|
5
|
-
"groups":
|
|
4
|
+
"classes": 695,
|
|
5
|
+
"groups": 187
|
|
6
6
|
},
|
|
7
7
|
"groups": {
|
|
8
8
|
"ui-accordion": {
|
|
@@ -465,6 +465,23 @@
|
|
|
465
465
|
"ui-diff__row"
|
|
466
466
|
]
|
|
467
467
|
},
|
|
468
|
+
"ui-discussion": {
|
|
469
|
+
"base": "ui-discussion",
|
|
470
|
+
"modifiers": [],
|
|
471
|
+
"parts": [
|
|
472
|
+
"ui-discussion__actions",
|
|
473
|
+
"ui-discussion__composer",
|
|
474
|
+
"ui-discussion__header",
|
|
475
|
+
"ui-discussion__hint",
|
|
476
|
+
"ui-discussion__item",
|
|
477
|
+
"ui-discussion__list",
|
|
478
|
+
"ui-discussion__message",
|
|
479
|
+
"ui-discussion__messages",
|
|
480
|
+
"ui-discussion__meta",
|
|
481
|
+
"ui-discussion__quote",
|
|
482
|
+
"ui-discussion__state"
|
|
483
|
+
]
|
|
484
|
+
},
|
|
468
485
|
"ui-display": {
|
|
469
486
|
"base": "ui-display",
|
|
470
487
|
"modifiers": [],
|
|
@@ -1799,6 +1816,18 @@
|
|
|
1799
1816
|
"ui-diff__row--add",
|
|
1800
1817
|
"ui-diff__row--context",
|
|
1801
1818
|
"ui-diff__row--remove",
|
|
1819
|
+
"ui-discussion",
|
|
1820
|
+
"ui-discussion__actions",
|
|
1821
|
+
"ui-discussion__composer",
|
|
1822
|
+
"ui-discussion__header",
|
|
1823
|
+
"ui-discussion__hint",
|
|
1824
|
+
"ui-discussion__item",
|
|
1825
|
+
"ui-discussion__list",
|
|
1826
|
+
"ui-discussion__message",
|
|
1827
|
+
"ui-discussion__messages",
|
|
1828
|
+
"ui-discussion__meta",
|
|
1829
|
+
"ui-discussion__quote",
|
|
1830
|
+
"ui-discussion__state",
|
|
1802
1831
|
"ui-display",
|
|
1803
1832
|
"ui-divider",
|
|
1804
1833
|
"ui-dot",
|
package/classes/index.d.ts
CHANGED
|
@@ -382,6 +382,18 @@ export declare const cls: {
|
|
|
382
382
|
readonly legendTrack: 'ui-legend__track';
|
|
383
383
|
readonly legendTicks: 'ui-legend__ticks';
|
|
384
384
|
readonly legendTick: 'ui-legend__tick';
|
|
385
|
+
readonly discussion: 'ui-discussion';
|
|
386
|
+
readonly discussionHeader: 'ui-discussion__header';
|
|
387
|
+
readonly discussionActions: 'ui-discussion__actions';
|
|
388
|
+
readonly discussionQuote: 'ui-discussion__quote';
|
|
389
|
+
readonly discussionMessages: 'ui-discussion__messages';
|
|
390
|
+
readonly discussionList: 'ui-discussion__list';
|
|
391
|
+
readonly discussionMessage: 'ui-discussion__message';
|
|
392
|
+
readonly discussionMeta: 'ui-discussion__meta';
|
|
393
|
+
readonly discussionHint: 'ui-discussion__hint';
|
|
394
|
+
readonly discussionState: 'ui-discussion__state';
|
|
395
|
+
readonly discussionItem: 'ui-discussion__item';
|
|
396
|
+
readonly discussionComposer: 'ui-discussion__composer';
|
|
385
397
|
readonly annotation: 'ui-annotation';
|
|
386
398
|
readonly annotationSubject: 'ui-annotation__subject';
|
|
387
399
|
readonly annotationConnector: 'ui-annotation__connector';
|
package/classes/index.js
CHANGED
|
@@ -400,6 +400,19 @@ export const cls = Object.freeze({
|
|
|
400
400
|
legendTrack: 'ui-legend__track',
|
|
401
401
|
legendTicks: 'ui-legend__ticks',
|
|
402
402
|
legendTick: 'ui-legend__tick',
|
|
403
|
+
// discussions (opt-in discussion.css; host-owned state)
|
|
404
|
+
discussion: 'ui-discussion',
|
|
405
|
+
discussionHeader: 'ui-discussion__header',
|
|
406
|
+
discussionActions: 'ui-discussion__actions',
|
|
407
|
+
discussionQuote: 'ui-discussion__quote',
|
|
408
|
+
discussionMessages: 'ui-discussion__messages',
|
|
409
|
+
discussionList: 'ui-discussion__list',
|
|
410
|
+
discussionMessage: 'ui-discussion__message',
|
|
411
|
+
discussionMeta: 'ui-discussion__meta',
|
|
412
|
+
discussionHint: 'ui-discussion__hint',
|
|
413
|
+
discussionState: 'ui-discussion__state',
|
|
414
|
+
discussionItem: 'ui-discussion__item',
|
|
415
|
+
discussionComposer: 'ui-discussion__composer',
|
|
403
416
|
annotation: 'ui-annotation',
|
|
404
417
|
annotationSubject: 'ui-annotation__subject',
|
|
405
418
|
annotationConnector: 'ui-annotation__connector',
|
package/css/annotations.css
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
--annotation-stroke-width: 1.5;
|
|
15
15
|
|
|
16
16
|
color: var(--annotation-color);
|
|
17
|
-
font-family: var(--
|
|
17
|
+
font-family: var(--sans);
|
|
18
18
|
font-size: var(--text-xs);
|
|
19
19
|
overflow: visible;
|
|
20
20
|
}
|
|
@@ -96,7 +96,7 @@
|
|
|
96
96
|
stroke: var(--annotation-note-bg);
|
|
97
97
|
stroke-linejoin: round;
|
|
98
98
|
stroke-width: 3;
|
|
99
|
-
text-transform:
|
|
99
|
+
text-transform: none;
|
|
100
100
|
}
|
|
101
101
|
|
|
102
102
|
.ui-annotation__label {
|
package/css/app.css
CHANGED
|
@@ -73,6 +73,8 @@
|
|
|
73
73
|
}
|
|
74
74
|
|
|
75
75
|
.ui-app-nav a {
|
|
76
|
+
min-inline-size: 0;
|
|
77
|
+
overflow-wrap: anywhere;
|
|
76
78
|
align-items: center;
|
|
77
79
|
border-inline-start: 2px solid transparent;
|
|
78
80
|
color: var(--text-soft);
|
|
@@ -354,7 +356,7 @@
|
|
|
354
356
|
justify-content: center;
|
|
355
357
|
border-inline-start: 0;
|
|
356
358
|
border-block-end: 2px solid transparent;
|
|
357
|
-
white-space:
|
|
359
|
+
white-space: normal;
|
|
358
360
|
}
|
|
359
361
|
|
|
360
362
|
.ui-app-nav a.is-active,
|
package/css/command.css
CHANGED
|
@@ -43,11 +43,11 @@
|
|
|
43
43
|
|
|
44
44
|
.ui-command__group {
|
|
45
45
|
color: var(--text-dim);
|
|
46
|
-
font-family: var(--
|
|
47
|
-
font-size: var(--text-
|
|
48
|
-
letter-spacing:
|
|
46
|
+
font-family: var(--sans);
|
|
47
|
+
font-size: var(--text-xs);
|
|
48
|
+
letter-spacing: 0;
|
|
49
49
|
padding: 0.5rem 0.6rem 0.25rem;
|
|
50
|
-
text-transform:
|
|
50
|
+
text-transform: none;
|
|
51
51
|
}
|
|
52
52
|
|
|
53
53
|
.ui-command__item {
|
package/css/dataviz.css
CHANGED
|
@@ -1,27 +1,39 @@
|
|
|
1
1
|
/* @ponchia/ui — GENERATED from tokens/charts.js by scripts/gen-charts.mjs.
|
|
2
2
|
* Do not edit by hand; run `npm run charts:build`. Drift-checked in CI.
|
|
3
3
|
*
|
|
4
|
-
* Tier-4 data-viz palette (ADR-0001). OPT-IN: import
|
|
5
|
-
* on demand; never in the default bundle, never
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Tier-4 categorical + data-viz palette (ADR-0001). OPT-IN: import
|
|
5
|
+
* `@ponchia/ui/css/dataviz.css` on demand; never in the default bundle, never
|
|
6
|
+
* UI chrome. Eight fixed hues (blue, orange, aqua, yellow, magenta, green,
|
|
7
|
+
* violet, red) in two namespaces:
|
|
8
|
+
* --cat-N / --cat-N-tint / --cat-N-ink categorical identity (a tag, a
|
|
9
|
+
* participant, a user-chosen tint): ink holds 4.5:1 on the panel and tint.
|
|
10
|
+
* --chart-N, --chart-seq-*, --chart-div-* data-viz series and ramps.
|
|
11
|
+
* Pair colour N with pattern N (a 2nd, non-colour channel):
|
|
12
|
+
* background: var(--chart-3); background-image: var(--chart-pattern-3);
|
|
8
13
|
* background-size: var(--chart-pattern-size); --chart-pattern-ink: <contrast>. */
|
|
9
14
|
|
|
10
15
|
:root {
|
|
11
|
-
--
|
|
12
|
-
--
|
|
13
|
-
--
|
|
14
|
-
--
|
|
15
|
-
--
|
|
16
|
-
--
|
|
17
|
-
--
|
|
18
|
-
--
|
|
19
|
-
--
|
|
20
|
-
--
|
|
21
|
-
--
|
|
22
|
-
--
|
|
23
|
-
--
|
|
24
|
-
--
|
|
16
|
+
--cat-1: #2a78d6;
|
|
17
|
+
--cat-2: #eb6834;
|
|
18
|
+
--cat-3: #1baf7a;
|
|
19
|
+
--cat-4: #eda100;
|
|
20
|
+
--cat-5: #e87ba4;
|
|
21
|
+
--cat-6: #008300;
|
|
22
|
+
--cat-7: #4a3aa7;
|
|
23
|
+
--cat-8: #e34948;
|
|
24
|
+
--cat-1-ink: #1467c3;
|
|
25
|
+
--cat-2-ink: #bf3f00;
|
|
26
|
+
--cat-3-ink: #007d4c;
|
|
27
|
+
--cat-4-ink: #a45d00;
|
|
28
|
+
--cat-5-ink: #b04972;
|
|
29
|
+
--cat-6-ink: #007800;
|
|
30
|
+
--cat-7-ink: #4a3aa7;
|
|
31
|
+
--cat-8-ink: #c62b30;
|
|
32
|
+
--chart-seq-1: #80b0e8;
|
|
33
|
+
--chart-seq-2: #5598e7;
|
|
34
|
+
--chart-seq-3: #2a78d6;
|
|
35
|
+
--chart-seq-4: #1c5cab;
|
|
36
|
+
--chart-seq-5: #104281;
|
|
25
37
|
--chart-div-1: oklch(45% 0.14 255deg);
|
|
26
38
|
--chart-div-2: oklch(62% 0.1 250deg);
|
|
27
39
|
--chart-div-3: oklch(82% 0.05 245deg);
|
|
@@ -30,11 +42,31 @@
|
|
|
30
42
|
--chart-div-6: oklch(66% 0.13 55deg);
|
|
31
43
|
--chart-div-7: oklch(56% 0.15 45deg);
|
|
32
44
|
|
|
45
|
+
/* Theme-independent: each series and tint follows its slot, and the tint
|
|
46
|
+
follows whichever --panel the page, a skin or the OLED preset set. */
|
|
47
|
+
--cat-1-tint: color-mix(in oklch, var(--cat-1) 16%, var(--panel));
|
|
48
|
+
--cat-2-tint: color-mix(in oklch, var(--cat-2) 16%, var(--panel));
|
|
49
|
+
--cat-3-tint: color-mix(in oklch, var(--cat-3) 16%, var(--panel));
|
|
50
|
+
--cat-4-tint: color-mix(in oklch, var(--cat-4) 16%, var(--panel));
|
|
51
|
+
--cat-5-tint: color-mix(in oklch, var(--cat-5) 16%, var(--panel));
|
|
52
|
+
--cat-6-tint: color-mix(in oklch, var(--cat-6) 16%, var(--panel));
|
|
53
|
+
--cat-7-tint: color-mix(in oklch, var(--cat-7) 16%, var(--panel));
|
|
54
|
+
--cat-8-tint: color-mix(in oklch, var(--cat-8) 16%, var(--panel));
|
|
55
|
+
--chart-1: var(--cat-1);
|
|
56
|
+
--chart-2: var(--cat-2);
|
|
57
|
+
--chart-3: var(--cat-3);
|
|
58
|
+
--chart-4: var(--cat-4);
|
|
59
|
+
--chart-5: var(--cat-5);
|
|
60
|
+
--chart-6: var(--cat-6);
|
|
61
|
+
--chart-7: var(--cat-7);
|
|
62
|
+
--chart-8: var(--cat-8);
|
|
63
|
+
|
|
33
64
|
/* Dot-matrix pattern fills — pair with the matching colour (WCAG 1.4.1).
|
|
34
|
-
Series 1
|
|
35
|
-
|
|
36
|
-
check:charts), so a colour+pattern chart stays
|
|
37
|
-
pattern-ONLY chart must still give series 1 a fill or
|
|
65
|
+
Series 1 is intentionally `none`: absence-of-pattern IS its redundant
|
|
66
|
+
channel. Adjacent series are separated under simulated colour-vision
|
|
67
|
+
deficiency (gated by check:charts), so a colour+pattern chart stays
|
|
68
|
+
distinguishable; a pattern-ONLY chart must still give series 1 a fill or
|
|
69
|
+
a labelled legend. */
|
|
38
70
|
--chart-pattern-size: 8px;
|
|
39
71
|
--chart-pattern-ink: rgb(0 0 0 / 0.34);
|
|
40
72
|
--chart-pattern-1: none;
|
|
@@ -49,20 +81,27 @@
|
|
|
49
81
|
|
|
50
82
|
@media (prefers-color-scheme: dark) {
|
|
51
83
|
:root:not([data-theme='light']) {
|
|
52
|
-
--
|
|
53
|
-
--
|
|
54
|
-
--
|
|
55
|
-
--
|
|
56
|
-
--
|
|
57
|
-
--
|
|
58
|
-
--
|
|
59
|
-
--
|
|
60
|
-
--
|
|
61
|
-
--
|
|
62
|
-
--
|
|
63
|
-
--
|
|
64
|
-
--
|
|
65
|
-
--
|
|
84
|
+
--cat-1: #3987e5;
|
|
85
|
+
--cat-2: #d95926;
|
|
86
|
+
--cat-3: #199e70;
|
|
87
|
+
--cat-4: #c98500;
|
|
88
|
+
--cat-5: #d55181;
|
|
89
|
+
--cat-6: #008300;
|
|
90
|
+
--cat-7: #9085e9;
|
|
91
|
+
--cat-8: #e66767;
|
|
92
|
+
--cat-1-ink: #4694f3;
|
|
93
|
+
--cat-2-ink: #e86f42;
|
|
94
|
+
--cat-3-ink: #27a677;
|
|
95
|
+
--cat-4-ink: #cb8705;
|
|
96
|
+
--cat-5-ink: #e46792;
|
|
97
|
+
--cat-6-ink: #38a433;
|
|
98
|
+
--cat-7-ink: #9187eb;
|
|
99
|
+
--cat-8-ink: #eb6c6c;
|
|
100
|
+
--chart-seq-1: #1b5298;
|
|
101
|
+
--chart-seq-2: #256abf;
|
|
102
|
+
--chart-seq-3: #3987e5;
|
|
103
|
+
--chart-seq-4: #6da7ec;
|
|
104
|
+
--chart-seq-5: #9ec5f4;
|
|
66
105
|
--chart-div-1: oklch(70% 0.13 250deg);
|
|
67
106
|
--chart-div-2: oklch(60% 0.12 252deg);
|
|
68
107
|
--chart-div-3: oklch(48% 0.08 255deg);
|
|
@@ -75,20 +114,27 @@
|
|
|
75
114
|
}
|
|
76
115
|
|
|
77
116
|
:root[data-theme='dark'] {
|
|
78
|
-
--
|
|
79
|
-
--
|
|
80
|
-
--
|
|
81
|
-
--
|
|
82
|
-
--
|
|
83
|
-
--
|
|
84
|
-
--
|
|
85
|
-
--
|
|
86
|
-
--
|
|
87
|
-
--
|
|
88
|
-
--
|
|
89
|
-
--
|
|
90
|
-
--
|
|
91
|
-
--
|
|
117
|
+
--cat-1: #3987e5;
|
|
118
|
+
--cat-2: #d95926;
|
|
119
|
+
--cat-3: #199e70;
|
|
120
|
+
--cat-4: #c98500;
|
|
121
|
+
--cat-5: #d55181;
|
|
122
|
+
--cat-6: #008300;
|
|
123
|
+
--cat-7: #9085e9;
|
|
124
|
+
--cat-8: #e66767;
|
|
125
|
+
--cat-1-ink: #4694f3;
|
|
126
|
+
--cat-2-ink: #e86f42;
|
|
127
|
+
--cat-3-ink: #27a677;
|
|
128
|
+
--cat-4-ink: #cb8705;
|
|
129
|
+
--cat-5-ink: #e46792;
|
|
130
|
+
--cat-6-ink: #38a433;
|
|
131
|
+
--cat-7-ink: #9187eb;
|
|
132
|
+
--cat-8-ink: #eb6c6c;
|
|
133
|
+
--chart-seq-1: #1b5298;
|
|
134
|
+
--chart-seq-2: #256abf;
|
|
135
|
+
--chart-seq-3: #3987e5;
|
|
136
|
+
--chart-seq-4: #6da7ec;
|
|
137
|
+
--chart-seq-5: #9ec5f4;
|
|
92
138
|
--chart-div-1: oklch(70% 0.13 250deg);
|
|
93
139
|
--chart-div-2: oklch(60% 0.12 252deg);
|
|
94
140
|
--chart-div-3: oklch(48% 0.08 255deg);
|
|
@@ -101,20 +147,27 @@
|
|
|
101
147
|
|
|
102
148
|
@media print {
|
|
103
149
|
:root:not([data-theme='light']) {
|
|
104
|
-
--
|
|
105
|
-
--
|
|
106
|
-
--
|
|
107
|
-
--
|
|
108
|
-
--
|
|
109
|
-
--
|
|
110
|
-
--
|
|
111
|
-
--
|
|
112
|
-
--
|
|
113
|
-
--
|
|
114
|
-
--
|
|
115
|
-
--
|
|
116
|
-
--
|
|
117
|
-
--
|
|
150
|
+
--cat-1: #2a78d6;
|
|
151
|
+
--cat-2: #eb6834;
|
|
152
|
+
--cat-3: #1baf7a;
|
|
153
|
+
--cat-4: #eda100;
|
|
154
|
+
--cat-5: #e87ba4;
|
|
155
|
+
--cat-6: #008300;
|
|
156
|
+
--cat-7: #4a3aa7;
|
|
157
|
+
--cat-8: #e34948;
|
|
158
|
+
--cat-1-ink: #1467c3;
|
|
159
|
+
--cat-2-ink: #bf3f00;
|
|
160
|
+
--cat-3-ink: #007d4c;
|
|
161
|
+
--cat-4-ink: #a45d00;
|
|
162
|
+
--cat-5-ink: #b04972;
|
|
163
|
+
--cat-6-ink: #007800;
|
|
164
|
+
--cat-7-ink: #4a3aa7;
|
|
165
|
+
--cat-8-ink: #c62b30;
|
|
166
|
+
--chart-seq-1: #80b0e8;
|
|
167
|
+
--chart-seq-2: #5598e7;
|
|
168
|
+
--chart-seq-3: #2a78d6;
|
|
169
|
+
--chart-seq-4: #1c5cab;
|
|
170
|
+
--chart-seq-5: #104281;
|
|
118
171
|
--chart-div-1: oklch(45% 0.14 255deg);
|
|
119
172
|
--chart-div-2: oklch(62% 0.1 250deg);
|
|
120
173
|
--chart-div-3: oklch(82% 0.05 245deg);
|