@ponchia/ui 0.8.1 → 0.10.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 +149 -3
- package/MIGRATIONS.json +117 -27
- package/README.md +19 -11
- package/behaviors/index.d.ts +0 -2
- package/behaviors/index.d.ts.map +1 -1
- package/behaviors/index.js +0 -2
- package/behaviors/popover.js +4 -4
- package/classes/classes.json +48 -10
- package/classes/index.d.ts +16 -3
- package/classes/index.js +28 -3
- package/classes/vscode.css-custom-data.json +10 -10
- package/css/app.css +52 -30
- package/css/base.css +10 -14
- package/css/content.css +23 -21
- package/css/core.css +1 -0
- package/css/disclosure.css +17 -17
- package/css/feedback.css +15 -15
- package/css/forms.css +8 -7
- package/css/navigation.css +3 -3
- package/css/overlay.css +37 -39
- package/css/primitives.css +48 -28
- package/css/report.css +66 -42
- package/css/row.css +154 -0
- package/css/state.css +95 -6
- package/css/table.css +3 -3
- package/css/tokens.css +10 -10
- package/css/workbench.css +22 -10
- package/dist/bronto.css +1 -1
- package/dist/css/app.css +1 -1
- package/dist/css/base.css +1 -1
- package/dist/css/content.css +1 -1
- package/dist/css/disclosure.css +1 -1
- package/dist/css/feedback.css +1 -1
- package/dist/css/forms.css +1 -1
- package/dist/css/navigation.css +1 -1
- package/dist/css/overlay.css +1 -1
- package/dist/css/primitives.css +1 -1
- package/dist/css/report-kit.css +1 -1
- package/dist/css/report.css +1 -1
- package/dist/css/row.css +1 -0
- package/dist/css/state.css +1 -1
- package/dist/css/table.css +1 -1
- package/dist/css/tokens.css +1 -1
- package/dist/css/workbench.css +1 -1
- package/docs/adr/0004-prune-unused-adapters.md +5 -1
- package/docs/adr/0005-productive-tools-and-editorial-reports.md +58 -0
- package/docs/adr/0006-trusted-publishing.md +92 -0
- package/docs/architecture.md +16 -23
- package/docs/command.md +1 -2
- package/docs/compositions.md +110 -0
- package/docs/frontier-primitives.md +1 -2
- package/docs/migrations/0.8-to-0.9.md +66 -0
- package/docs/migrations/0.9-to-0.10.md +47 -0
- package/docs/package-contract.md +13 -13
- package/docs/reference.md +43 -18
- package/docs/reporting.md +15 -9
- package/docs/stability.md +20 -55
- package/docs/state.md +47 -0
- package/docs/theming.md +16 -0
- package/docs/usage.md +60 -30
- package/llms.txt +7 -18
- package/package.json +15 -54
- package/tokens/figma.variables.json +20 -20
- package/tokens/index.js +10 -10
- package/tokens/index.json +20 -20
- package/tokens/resolved.json +10 -10
- package/tokens/tokens.dtcg.json +20 -20
- package/behaviors/modal.d.ts +0 -45
- package/behaviors/modal.d.ts.map +0 -1
- package/behaviors/modal.js +0 -373
- package/qwik/index.d.ts +0 -48
- package/qwik/index.d.ts.map +0 -1
- package/qwik/index.js +0 -227
- package/react/index.d.ts +0 -45
- package/react/index.d.ts.map +0 -1
- package/react/index.js +0 -165
- package/solid/index.d.ts +0 -75
- package/solid/index.d.ts.map +0 -1
- package/solid/index.js +0 -172
- package/svelte/index.d.ts +0 -114
- package/svelte/index.d.ts.map +0 -1
- package/svelte/index.js +0 -197
- package/vue/index.d.ts +0 -116
- package/vue/index.d.ts.map +0 -1
- package/vue/index.js +0 -266
package/docs/package-contract.md
CHANGED
|
@@ -15,7 +15,7 @@ semantic versioning contract for the surfaces listed here.
|
|
|
15
15
|
| --- | --- | --- |
|
|
16
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
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
|
|
18
|
+
| JS subpaths | Stable | ESM-only public subpaths. Runtime behavior is SSR-safe and dependency-free; framework lifecycles belong to consumers. |
|
|
19
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
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
21
|
| Fonts | Stable path pattern | Doto assets ship under `fonts/*` with their OFL license. |
|
|
@@ -49,6 +49,7 @@ semantic versioning contract for the surfaces listed here.
|
|
|
49
49
|
| `./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. |
|
|
50
50
|
| `./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. |
|
|
51
51
|
| `./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. |
|
|
52
|
+
| `./css/row.css` | `./dist/css/row.css` | Bundled layered CSS leaf | Stable additive | Generated layered direct-import leaf. Also included in dist/bronto.css. |
|
|
52
53
|
| `./css/figure.css` | `./dist/css/figure.css` | Opt-in layered CSS leaf | Stable additive | Generated layered direct-import leaf. Opt-in and not included in dist/bronto.css. |
|
|
53
54
|
| `./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. |
|
|
54
55
|
| `./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. |
|
|
@@ -94,6 +95,7 @@ semantic versioning contract for the surfaces listed here.
|
|
|
94
95
|
| `./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. |
|
|
95
96
|
| `./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. |
|
|
96
97
|
| `./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. |
|
|
98
|
+
| `./css/unlayered/row.css` | `./css/row.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
97
99
|
| `./css/unlayered/figure.css` | `./css/figure.css` | Unlayered CSS leaf | Stable path | Raw authored CSS leaf for consumers that deliberately opt out of @layer bronto on that leaf. |
|
|
98
100
|
| `./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. |
|
|
99
101
|
| `./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. |
|
|
@@ -195,7 +197,6 @@ semantic versioning contract for the surfaces listed here.
|
|
|
195
197
|
| `./behaviors/inert` | types: `./behaviors/inert.d.ts`<br>default: `./behaviors/inert.js` | Package subpath | Public | Exported package subpath. See docs/stability.md for semantic stability. |
|
|
196
198
|
| `./behaviors/legend` | types: `./behaviors/legend.d.ts`<br>default: `./behaviors/legend.js` | Package subpath | Public | Exported package subpath. See docs/stability.md for semantic stability. |
|
|
197
199
|
| `./behaviors/menu` | types: `./behaviors/menu.d.ts`<br>default: `./behaviors/menu.js` | Package subpath | Public | Exported package subpath. See docs/stability.md for semantic stability. |
|
|
198
|
-
| `./behaviors/modal` | types: `./behaviors/modal.d.ts`<br>default: `./behaviors/modal.js` | Package subpath | Public | Exported package subpath. See docs/stability.md for semantic stability. |
|
|
199
200
|
| `./behaviors/popover` | types: `./behaviors/popover.d.ts`<br>default: `./behaviors/popover.js` | Package subpath | Public | Exported package subpath. See docs/stability.md for semantic stability. |
|
|
200
201
|
| `./behaviors/sources` | types: `./behaviors/sources.d.ts`<br>default: `./behaviors/sources.js` | Package subpath | Public | Exported package subpath. See docs/stability.md for semantic stability. |
|
|
201
202
|
| `./behaviors/splitter` | types: `./behaviors/splitter.d.ts`<br>default: `./behaviors/splitter.js` | Package subpath | Public | Exported package subpath. See docs/stability.md for semantic stability. |
|
|
@@ -207,11 +208,6 @@ semantic versioning contract for the surfaces listed here.
|
|
|
207
208
|
| `./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. |
|
|
208
209
|
| `./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. |
|
|
209
210
|
| `./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. |
|
|
210
|
-
| `./react` | types: `./react/index.d.ts`<br>default: `./react/index.js` | Framework binding JS | Deprecated in 0.7 | Compatibility wrapper over vanilla behaviors. Scheduled for removal no earlier than 0.8 under ADR-0004; use direct behavior lifecycle cleanup. |
|
|
211
|
-
| `./solid` | types: `./solid/index.d.ts`<br>default: `./solid/index.js` | Framework binding JS | Deprecated in 0.7 | Compatibility wrapper over vanilla behaviors. Scheduled for removal no earlier than 0.8 under ADR-0004; use direct behavior lifecycle cleanup. |
|
|
212
|
-
| `./qwik` | types: `./qwik/index.d.ts`<br>default: `./qwik/index.js` | Framework binding JS | Deprecated in 0.7 | Compatibility wrapper over vanilla behaviors. Scheduled for removal no earlier than 0.8 under ADR-0004; use direct behavior lifecycle cleanup. |
|
|
213
|
-
| `./svelte` | types: `./svelte/index.d.ts`<br>default: `./svelte/index.js` | Framework binding JS | Deprecated in 0.7 | Compatibility wrapper over vanilla behaviors. Scheduled for removal no earlier than 0.8 under ADR-0004; use direct behavior lifecycle cleanup. |
|
|
214
|
-
| `./vue` | types: `./vue/index.d.ts`<br>default: `./vue/index.js` | Framework binding JS | Deprecated in 0.7 | Compatibility wrapper over vanilla behaviors. Scheduled for removal no earlier than 0.8 under ADR-0004; use direct behavior lifecycle cleanup. |
|
|
215
211
|
| `./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. |
|
|
216
212
|
| `./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. |
|
|
217
213
|
| `./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 +218,10 @@ semantic versioning contract for the surfaces listed here.
|
|
|
222
218
|
| `./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. |
|
|
223
219
|
| `./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. |
|
|
224
220
|
| `./fonts/*` | `./fonts/*` | Vendored font asset glob | Stable path pattern | Doto font files and license. Font file names are shipped assets, not JS APIs. |
|
|
221
|
+
| `./docs/compositions.md` | `./docs/compositions.md` | Shipped documentation | Stable path | Markdown documentation shipped in the tarball. Paths are public reading assets within a compatible minor. |
|
|
222
|
+
| `./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
|
+
| `./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
|
+
| `./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. |
|
|
225
225
|
|
|
226
226
|
## Shipped Files Allowlist
|
|
227
227
|
|
|
@@ -244,11 +244,6 @@ always includes `package.json`, `README.md`, `LICENSE`, and
|
|
|
244
244
|
| `schemas` | Machine-readable schemas | Declarative JSON schemas for package-adjacent report/tooling contracts. |
|
|
245
245
|
| `annotations` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
246
246
|
| `connectors` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
247
|
-
| `react` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
248
|
-
| `solid` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
249
|
-
| `qwik` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
250
|
-
| `svelte` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
251
|
-
| `vue` | Authored public JS directory | ESM source shipped as-is; adjacent declarations/maps are generated. |
|
|
252
247
|
| `shiki` | Theme data | Shiki theme JSON on the governed palette. |
|
|
253
248
|
| `llms.txt` | Agent entrypoint | Shipped plain-text orientation for offline LLM/agent consumers. |
|
|
254
249
|
| `CHANGELOG.md` | Release record | Shipped historical release notes. |
|
|
@@ -300,10 +295,15 @@ always includes `package.json`, `README.md`, `LICENSE`, and
|
|
|
300
295
|
| `docs/migrations/0.5-to-0.6.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
301
296
|
| `docs/migrations/0.6-to-0.7.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
302
297
|
| `docs/migrations/0.7-to-0.8.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
298
|
+
| `docs/migrations/0.8-to-0.9.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
303
299
|
| `docs/adr/0001-color-system.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
304
300
|
| `docs/adr/0002-scope-and-2026-baseline.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
305
301
|
| `docs/adr/0003-theme-model.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
306
302
|
| `docs/adr/0004-prune-unused-adapters.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
303
|
+
| `docs/compositions.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
304
|
+
| `docs/adr/0005-productive-tools-and-editorial-reports.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
305
|
+
| `docs/migrations/0.9-to-0.10.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
306
|
+
| `docs/adr/0006-trusted-publishing.md` | Shipped documentation | Curated Markdown reading asset shipped in the npm tarball. |
|
|
307
307
|
|
|
308
308
|
## Artifact Provenance
|
|
309
309
|
|
|
@@ -316,7 +316,7 @@ result. The listed gates are part of `npm run check`.
|
|
|
316
316
|
| 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
317
|
| 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
318
|
| 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 (
|
|
319
|
+
| Authored CSS graph | `css/core.css plus css/*.css leaves` | dist/bronto.css; dist/css/*.css (47 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. |
|
|
320
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. |
|
|
321
321
|
| 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
322
|
| 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. |
|
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
|
+
- 683 classes across 186 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`,
|
|
@@ -324,6 +324,7 @@ each one matches a real selector in the stylesheet.
|
|
|
324
324
|
| --- | --- | --- |
|
|
325
325
|
| `cls.chip` | `ui-chip` | base |
|
|
326
326
|
| `cls.chipAccent` | `ui-chip--accent` | modifier |
|
|
327
|
+
| `cls.chipDense` | `ui-chip--dense` | modifier |
|
|
327
328
|
|
|
328
329
|
### `.ui-citation`
|
|
329
330
|
|
|
@@ -874,6 +875,8 @@ each one matches a real selector in the stylesheet.
|
|
|
874
875
|
| `cls.menuItem` | `ui-menu__item` | part |
|
|
875
876
|
| `cls.menuLabel` | `ui-menu__label` | part |
|
|
876
877
|
| `cls.menuSep` | `ui-menu__sep` | part |
|
|
878
|
+
| `cls.menuAtPointer` | `ui-menu--at-pointer` | modifier |
|
|
879
|
+
| `cls.menuDropdown` | `ui-menu--dropdown` | modifier |
|
|
877
880
|
|
|
878
881
|
### `.ui-menu-host`
|
|
879
882
|
|
|
@@ -1117,6 +1120,17 @@ each one matches a real selector in the stylesheet.
|
|
|
1117
1120
|
| --- | --- | --- |
|
|
1118
1121
|
| `cls.reveal` | `ui-reveal` | base |
|
|
1119
1122
|
|
|
1123
|
+
### `.ui-row`
|
|
1124
|
+
|
|
1125
|
+
| Registry key | Class | Kind |
|
|
1126
|
+
| --- | --- | --- |
|
|
1127
|
+
| `cls.row` | `ui-row` | base |
|
|
1128
|
+
| `cls.rowMark` | `ui-row__mark` | part |
|
|
1129
|
+
| `cls.rowMeta` | `ui-row__meta` | part |
|
|
1130
|
+
| `cls.rowTitle` | `ui-row__title` | part |
|
|
1131
|
+
| `cls.rowRuled` | `ui-row--ruled` | modifier |
|
|
1132
|
+
| `cls.rowStacked` | `ui-row--stacked` | modifier |
|
|
1133
|
+
|
|
1120
1134
|
### `.ui-screen-only`
|
|
1121
1135
|
|
|
1122
1136
|
| Registry key | Class | Kind |
|
|
@@ -1201,6 +1215,12 @@ each one matches a real selector in the stylesheet.
|
|
|
1201
1215
|
| `cls.severityRowMeta` | `ui-severity-row__meta` | part |
|
|
1202
1216
|
| `cls.severityRowTitle` | `ui-severity-row__title` | part |
|
|
1203
1217
|
|
|
1218
|
+
### `.ui-severity-tone`
|
|
1219
|
+
|
|
1220
|
+
| Registry key | Class | Kind |
|
|
1221
|
+
| --- | --- | --- |
|
|
1222
|
+
| `cls.severityTone` | `ui-severity-tone` | base |
|
|
1223
|
+
|
|
1204
1224
|
### `.ui-shortcut`
|
|
1205
1225
|
|
|
1206
1226
|
| Registry key | Class | Kind |
|
|
@@ -1499,6 +1519,15 @@ each one matches a real selector in the stylesheet.
|
|
|
1499
1519
|
| `cls.timelineItem` | `ui-timeline__item` | part |
|
|
1500
1520
|
| `cls.timelineTime` | `ui-timeline__time` | part |
|
|
1501
1521
|
|
|
1522
|
+
### `.ui-timestrip`
|
|
1523
|
+
|
|
1524
|
+
| Registry key | Class | Kind |
|
|
1525
|
+
| --- | --- | --- |
|
|
1526
|
+
| `cls.timestrip` | `ui-timestrip` | base |
|
|
1527
|
+
| `cls.timestripAxis` | `ui-timestrip__axis` | part |
|
|
1528
|
+
| `cls.timestripEvent` | `ui-timestrip__event` | part |
|
|
1529
|
+
| `cls.timestripNow` | `ui-timestrip__now` | part |
|
|
1530
|
+
|
|
1502
1531
|
### `.ui-toast`
|
|
1503
1532
|
|
|
1504
1533
|
| Registry key | Class | Kind |
|
|
@@ -1651,13 +1680,9 @@ works in any framework without a binding layer:
|
|
|
1651
1680
|
families (`ui-alert`/`ui-toast`/`ui-meter`/`ui-dot`); the builders warn on an
|
|
1652
1681
|
out-of-set tone (see usage.md). Mapping an app's own variant
|
|
1653
1682
|
vocabulary onto a tone is application logic, not a framework class.
|
|
1654
|
-
- **Modal** — native `<dialog>`
|
|
1655
|
-
|
|
1656
|
-
(`
|
|
1657
|
-
`data-bronto-modal`, and run `initModal()` for the inert focus trap,
|
|
1658
|
-
focus-return, and Escape close signal. You still own the `is-open` state,
|
|
1659
|
-
backdrop, and top-layer stacking (`.is-open` is a bare grid — it does not
|
|
1660
|
-
float or stack on its own).
|
|
1683
|
+
- **Modal** — style a native `<dialog>` with `ui-modal`; use
|
|
1684
|
+
`initDialog()` for open/close triggers and focus return. Call
|
|
1685
|
+
`showModal()` to open the top layer; a CSS class is not an open state.
|
|
1661
1686
|
- **Current page** — mark the active link with `aria-current="page"`; it is
|
|
1662
1687
|
the programmatic cue the navs honour (`ui-sitenav`, `ui-app-nav`). The
|
|
1663
1688
|
`.is-active` class is the visual-only equivalent on `ui-app-nav`/`ui-tab`;
|
|
@@ -1705,10 +1730,10 @@ Exact mirror of the `:root` blocks in `css/tokens.css`
|
|
|
1705
1730
|
|
|
1706
1731
|
| Token | Value |
|
|
1707
1732
|
| --- | --- |
|
|
1708
|
-
| `--radius-xl` | `
|
|
1709
|
-
| `--radius-lg` | `
|
|
1710
|
-
| `--radius-md` | `
|
|
1711
|
-
| `--radius-sm` | `
|
|
1733
|
+
| `--radius-xl` | `8px` |
|
|
1734
|
+
| `--radius-lg` | `6px` |
|
|
1735
|
+
| `--radius-md` | `4px` |
|
|
1736
|
+
| `--radius-sm` | `2px` |
|
|
1712
1737
|
| `--radius-pill` | `999px` |
|
|
1713
1738
|
| `--space-2xs` | `0.25rem` |
|
|
1714
1739
|
| `--space-xs` | `0.5rem` |
|
|
@@ -1729,12 +1754,12 @@ Exact mirror of the `:root` blocks in `css/tokens.css`
|
|
|
1729
1754
|
| `--display` | `var(--dot-font)` |
|
|
1730
1755
|
| `--display-weight` | `700` |
|
|
1731
1756
|
| `--display-weight-strong` | `800` |
|
|
1732
|
-
| `--text-2xs` | `0.
|
|
1733
|
-
| `--text-xs` | `0.
|
|
1734
|
-
| `--text-sm` | `0.
|
|
1735
|
-
| `--text-base` | `
|
|
1736
|
-
| `--text-lg` | `1.
|
|
1737
|
-
| `--text-xl` | `1.
|
|
1757
|
+
| `--text-2xs` | `0.75rem` |
|
|
1758
|
+
| `--text-xs` | `0.8125rem` |
|
|
1759
|
+
| `--text-sm` | `0.875rem` |
|
|
1760
|
+
| `--text-base` | `1rem` |
|
|
1761
|
+
| `--text-lg` | `1.125rem` |
|
|
1762
|
+
| `--text-xl` | `1.5rem` |
|
|
1738
1763
|
| `--tracking-wide` | `0.14em` |
|
|
1739
1764
|
| `--tracking-wider` | `0.22em` |
|
|
1740
1765
|
| `--ease-standard` | `cubic-bezier(0.2, 0.8, 0.2, 1)` |
|
package/docs/reporting.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# Static reports
|
|
2
2
|
|
|
3
|
+
Reports use readable screen prose, a 68ch measure, sentence-case headings, and
|
|
4
|
+
an independent print treatment. Put the decision before navigation. Use
|
|
5
|
+
`details.ui-report__toc` for collapsed contents and `nav.ui-report__toc` for
|
|
6
|
+
always-visible contents. See [composition recipes](compositions.md).
|
|
7
|
+
|
|
8
|
+
|
|
3
9
|
`@ponchia/ui` can dress static, LLM-authored HTML reports without a component
|
|
4
10
|
runtime. Load the normal bundle, then either opt in to the complete report kit
|
|
5
11
|
or import only the leaves a narrow report actually uses.
|
|
@@ -54,18 +60,18 @@ No install? Link the same files from a CDN. Pin the version — pre-1.0, breakin
|
|
|
54
60
|
changes ship in the minor (see [stability.md](./stability.md)):
|
|
55
61
|
|
|
56
62
|
```html
|
|
57
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
58
|
-
<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.10.0/dist/bronto.css" />
|
|
64
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.10.0/dist/css/report-kit.css" />
|
|
59
65
|
```
|
|
60
66
|
|
|
61
67
|
Leaf-by-leaf CDN imports use the same `dist/css/` paths:
|
|
62
68
|
|
|
63
69
|
```html
|
|
64
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
65
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
66
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
67
|
-
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
68
|
-
<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.10.0/dist/bronto.css" />
|
|
71
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.10.0/dist/css/report.css" />
|
|
72
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.10.0/dist/css/dataviz.css" />
|
|
73
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.10.0/dist/css/annotations.css" />
|
|
74
|
+
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@ponchia/ui@0.10.0/dist/css/legend.css" />
|
|
69
75
|
```
|
|
70
76
|
|
|
71
77
|
The CDN serves the package's own `fonts/` next to the CSS, so font URLs resolve
|
|
@@ -579,7 +585,7 @@ raster).
|
|
|
579
585
|
> origin. A static report **opened from disk (`file://`) cannot import the module
|
|
580
586
|
> nor fetch `vega.json`** (CORS) — load Vega + Vega-Lite + vega-embed from pinned
|
|
581
587
|
> `/build/*.min.js` CDN tags and **inline the resolved `config` object**
|
|
582
|
-
> (generate it with `npm run emit:theme vega light`), the file
|
|
588
|
+
> (generate it with `npm run emit:theme vega light`), the `file://`-safe recipe in
|
|
583
589
|
> [vega.md](./vega.md#from-a-cdn-no-bundler). For a report
|
|
584
590
|
> you intend to **print/PDF**, prefer the frozen inline `<svg>` below — it has no
|
|
585
591
|
> runtime, prints exactly, and sidesteps all of this.
|
|
@@ -879,7 +885,7 @@ or validation runtime.
|
|
|
879
885
|
|
|
880
886
|
```json
|
|
881
887
|
{
|
|
882
|
-
"$schema": "https://cdn.jsdelivr.net/npm/@ponchia/ui@0.
|
|
888
|
+
"$schema": "https://cdn.jsdelivr.net/npm/@ponchia/ui@0.10.0/schemas/report-claims.v1.schema.json",
|
|
883
889
|
"schemaVersion": "bronto-report-claims.v1",
|
|
884
890
|
"report": { "title": "Decision readiness", "type": "decision" },
|
|
885
891
|
"claims": [
|
package/docs/stability.md
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
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.10.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
|
|
8
|
-
patches, or `^0.x`
|
|
8
|
+
patches, or `^0.x` for the same compatible pre-1.0 minor. This policy holds
|
|
9
9
|
until `1.0.0` is tagged. This matrix defines what counts as public API.
|
|
10
10
|
For the exhaustive package-manifest inventory — every `exports` key, every
|
|
11
11
|
shipped `files` entry, and the generated artifact provenance map — see
|
|
@@ -53,56 +53,22 @@ enough.
|
|
|
53
53
|
|
|
54
54
|
### Adoption evidence for 1.0
|
|
55
55
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
> full-surface audit of the largest downstream consumer (a Yjs-collaborative
|
|
73
|
-
> spatial canvas workspace: React, Vite, ~10k lines of its own CSS) found it
|
|
74
|
-
> using **26 of the 646 published classes**, and hand-rebuilding much of the
|
|
75
|
-
> rest — 10 bespoke empty states, 15 error surfaces, 17 control bars, three
|
|
76
|
-
> parallel severity vocabularies, its own Markdown prose layer, its own diff
|
|
77
|
-
> rows, its own meters, and two copies of visually-hidden text. Thirteen
|
|
78
|
-
> primitives that map almost exactly onto what it built return **zero** uses:
|
|
79
|
-
> `ui-state`, `ui-prose`, `ui-diff`, `ui-code`, `ui-meter`, `ui-progress`,
|
|
80
|
-
> `ui-toolstrip`, `ui-dot`, `ui-chip`, `ui-tag`, `ui-timeline`, `ui-steps`,
|
|
81
|
-
> `ui-job`.
|
|
82
|
-
>
|
|
83
|
-
> The lesson for this document is not about that consumer. It is that **"no
|
|
84
|
-
> inspected consumer imports the surface" has been measuring discoverability,
|
|
85
|
-
> not demand.** Those surfaces were not rejected; they were never found. The
|
|
86
|
-
> opt-in leaf model is right, but nothing tells a consumer which leaf it is
|
|
87
|
-
> about to reimplement — and `bronto-ui-check`, which catches part of it, was
|
|
88
|
-
> installed in that consumer and had never been run. Before any 1.0 decision
|
|
89
|
-
> retires a package-proven surface for lack of adoption, confirm the surface was
|
|
90
|
-
> *reachable*: named in the consumer's imports, or at least in a leaf it
|
|
91
|
-
> imports. Non-adoption of an unimported leaf is not evidence.
|
|
92
|
-
>
|
|
93
|
-
> The same audit produced this release's four consumer-driven changes (the tap
|
|
94
|
-
> target floor, the safe-area tokens, `ui-button__label`, and the dense tier)
|
|
95
|
-
> and the ADR-0001 canvas amendment. That is the intended loop: the consumer's
|
|
96
|
-
> local classes are the backlog, resolving either to a deletion there or an
|
|
97
|
-
> addition here.
|
|
98
|
-
|
|
99
|
-
| Surface family | Current evidence | 1.0 disposition |
|
|
100
|
-
| --- | --- | --- |
|
|
101
|
-
| Core CSS, class recipes, vanilla behaviors, tokens, and Tailwind bridge | Downstream-proven across five inspected non-example app, site, and service consumers. | Stabilize names and behavior contracts. Use consumer upgrades as the release-candidate proof. |
|
|
102
|
-
| Report, provenance, analytical CSS, annotations, glyphs, skins, workbench CSS, chart data, and Vega theme | Downstream-proven across four inspected report, site, dashboard, and tool consumers. | Keep opt-in. Stabilize the consumed paths; do not broaden the catalog during the freeze. |
|
|
103
|
-
| Controlled non-`<dialog>` modal | Package-proven by stack, portal, late-node, focus, and cleanup regressions. None of ten inspected non-example consumers initializes `initModal`. | Deprecated in 0.7; remove no earlier than 0.8 unless a real consumer adopts it. Native `<dialog>` + `initDialog` is the stable path. |
|
|
104
|
-
| React, Solid, Qwik, Svelte, and Vue lifecycle adapters | Package-proven by packed examples, types, and lifecycle tests. None of ten inspected non-example consumers imports an adapter entrypoint. | Deprecated in 0.7; remove no earlier than 0.8 unless a real consumer adopts one. Vanilla behaviors remain stable. |
|
|
105
|
-
| Mermaid, D2, Shiki, Figma Variables, and the report-claims schema | Package-proven by generated-data, render, schema, and drift checks. No inspected non-example consumer currently supplies downstream proof for every path. | Keep compatible through 0.8.x, but decide each 1.0 contract from adoption evidence rather than generator coverage alone. |
|
|
56
|
+
Separate downstream proof from package proof. An example build verifies the
|
|
57
|
+
published contract; a real application or report upgrade verifies that it is
|
|
58
|
+
useful. Record the candidate version, imported surface, visual/input checks,
|
|
59
|
+
and remaining consumer-specific overrides with the release.
|
|
60
|
+
|
|
61
|
+
The 0.10 direction is defined by
|
|
62
|
+
[ADR-0005](adr/0005-productive-tools-and-editorial-reports.md). The active
|
|
63
|
+
packed examples cover vanilla, Astro, SvelteKit, React, Tailwind, and static
|
|
64
|
+
reports. The unadopted framework adapters and controlled modal were removed
|
|
65
|
+
following their 0.7 deprecation; see the
|
|
66
|
+
[migration](migrations/0.9-to-0.10.md).
|
|
67
|
+
|
|
68
|
+
Do not maximize a consumer's fraction of the class catalog. Measure repeated
|
|
69
|
+
design decisions avoided and complete tasks improved. Check discoverability
|
|
70
|
+
before interpreting non-adoption, and keep legitimate domain-specific CSS in
|
|
71
|
+
the consumer.
|
|
106
72
|
|
|
107
73
|
After 1.0, breaking changes move to majors. Until then, the table below is the
|
|
108
74
|
current public-surface matrix and the release policy above still applies.
|
|
@@ -126,7 +92,6 @@ current public-surface matrix and the release policy above still applies.
|
|
|
126
92
|
| Consumer checker (`bronto-ui-check`) | Stable additive | The installed binary lexically validates literal `ui-*` classes and unresolved reserved-token references in supported code, style, and template sources after stripping comments; Markdown prose and generated/vendor directories are excluded. Exit 0 means no findings, exit 1 means contract findings, and exit 2 means invocation/input failure. New checks may be additive; an existing valid literal cannot become an error within a patch unless the corresponding public contract was already invalid. |
|
|
127
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. |
|
|
128
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. |
|
|
129
|
-
| Framework lifecycle adapters (`react`/`solid`/`qwik`/`svelte`/`vue`) | Deprecated in 0.7 | Hook/action/directive names, optional peer behavior, root resolver support, and cleanup remain compatible through 0.7. Scheduled for removal no earlier than 0.8 under ADR-0004. Use vanilla behaviors in framework lifecycle code. |
|
|
130
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. |
|
|
131
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. |
|
|
132
97
|
| 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. |
|
|
@@ -140,6 +105,7 @@ current public-surface matrix and the release policy above still applies.
|
|
|
140
105
|
| 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. |
|
|
141
106
|
| Spotlight (`css/spotlight.css`, `.ui-spotlight*`, `.ui-tour-note*`, `initSpotlight`) | Stable additive | Spotlight/tour-note class names, the `--spot-*` custom-property contract, and the `data-bronto-spotlight`/`data-target` attributes are public. Opt-in, not in the default bundle. Not a tour engine. |
|
|
142
107
|
| Crosshair (`css/crosshair.css`, `.ui-crosshair*`, `.ui-readout`, `initCrosshair`) | Stable additive | Crosshair/readout class names, the `--crosshair-x/y` properties, the `data-bronto-crosshair` attribute, and the `bronto:crosshair:move`/`:leave` event contract are public. Opt-in. Reports pointer position only — no data mapping. |
|
|
108
|
+
| Rows (`css/row.css`, `.ui-row*`) | Stable additive | Class names, the `__title` / `__meta` / `__mark` parts, the `--stacked` / `--ruled` modifiers, and the selection contract are public: `aria-selected`, `aria-current` and `.is-selected` all paint the selected state, so the visual state cannot disagree with the announced one. `__title` is the part that truncates and `__meta` is the part that does not — that asymmetry is the contract, not a detail. **In the default bundle**, unusually for a new surface: `.ui-menu__item` composes it, so a core component depends on it. Also exported standalone, which is why it appears here, but it is NOT opt-in. |
|
|
143
109
|
| Selection states (`css/selection.css`, `.ui-sel*`) | Stable additive | The `.ui-sel`/`--on`/`--off`/`--maybe` emphasis classes and recipe options are public. Opt-in, cross-cutting. The host owns selection logic; Bronto only styles the states. |
|
|
144
110
|
| Analytical roll-up (`css/analytical.css`) | Stable additive | A convenience `@import` of the nine analytical leaves (figure, annotations, legend, marks, connectors, spotlight, crosshair, selection, highlights). The set of leaves it bundles may grow additively; each leaf also stays individually exported. Opt-in, not in the default bundle. |
|
|
145
111
|
| Sources / provenance (`css/sources.css`, `.ui-citation*`, `.ui-source-card*`, `.ui-source-list*`, `.ui-provenance*`, `.ui-src--*`, `initSources`) | Stable additive | Citation/source/provenance class names, the cross-cutting `.ui-src--*` trust-state modifiers (always paired with an author label), the optional `data-bronto-sources` / `data-bronto-source-ref` behavior contract, `bronto:source:focus`, and the `ui.citation`/`ui.source`/`ui.provenance` recipes + `cls.sourceList` are public. Opt-in, not in the default bundle. |
|
|
@@ -149,7 +115,7 @@ current public-surface matrix and the release policy above still applies.
|
|
|
149
115
|
| Lifecycle state (`css/state.css`, `.ui-state*`, `.ui-syncbar`) | Stable additive | The `.ui-state`/`__label`/`__detail`/`--busy` classes, the canonical lifecycle state modifiers, `.ui-syncbar`, and the `ui.state` recipe are public. Opt-in, not in the default bundle. |
|
|
150
116
|
| Generated / AI-trust (`css/generated.css`, `.ui-generated*`, `.ui-origin-label*`, `.ui-reasoning*`, `.ui-tool-log`, `.ui-tool-call*`) | Stable additive | The generated-content, origin-label (incl. `--ai`), reasoning-trace and tool-log/tool-call class names and the `ui.originLabel` recipe are public. Opt-in, not in the default bundle. Not a chat kit; no confidence widget. |
|
|
151
117
|
| Workbench (`css/workbench.css`, `.ui-splitter*`, `.ui-inspector*`, `.ui-property*`, `.ui-selectionbar*`, `initSplitter`) | Stable additive | Splitter, inspector, property-row and selection-bar class + BEM part names are public (no recipe). `data-bronto-splitter`, `--splitter-pos`, `bronto:splitter:resize`, and the `initSplitter` cleanup contract are public. Opt-in, not in the default bundle. The host owns pane content, persistence, collapse policy, and selection state. |
|
|
152
|
-
| Command palette (`css/command.css`, `.ui-command*`, `initCommand`) | Stable additive | Command class/part names, the `data-bronto-command` attribute, and the event contract — `bronto:command:select` (`detail: { value, label }`) and `bronto:command:close` — are public. Bronto filters + navigates (APG combobox/listbox); the host owns the action registry/execution. Opt-in, not in the default bundle, no global hotkey.
|
|
118
|
+
| Command palette (`css/command.css`, `.ui-command*`, `initCommand`) | Stable additive | Command class/part names, the `data-bronto-command` attribute, and the event contract — `bronto:command:select` (`detail: { value, label }`) and `bronto:command:close` — are public. Bronto filters + navigates (APG combobox/listbox); the host owns the action registry/execution. Opt-in, not in the default bundle, no global hotkey. |
|
|
153
119
|
| Spark microcharts (`css/spark.css`, `.ui-spark*`) | Stable additive | Spark class names and inline sizing/label slots are public. Opt-in, not in the default bundle. The host owns data reduction and accessible surrounding text. |
|
|
154
120
|
| Bullet graphs (`css/bullet.css`, `.ui-bullet*`) | Stable additive | Bullet class names and measure/target/range custom-property slots are public. Opt-in, not in the default bundle. The host owns thresholds, units, and data mapping. |
|
|
155
121
|
| Diffs (`css/diff.css`, `.ui-diff*`) | Stable additive | Diff container/line/gutter class names and add/remove/highlight state modifiers are public. Opt-in, not in the default bundle. Bronto styles evidence; it does not compute diffs. |
|
|
@@ -159,7 +125,6 @@ current public-surface matrix and the release policy above still applies.
|
|
|
159
125
|
| Terms / glossary (`css/term.css`, `.ui-term`, `.ui-glossary`) | Stable additive | Term and glossary class names plus native-popover definition hooks are public. Opt-in, not in the default bundle. The host owns glossary content and terminology policy. |
|
|
160
126
|
| Contents rail (`css/toc.css`, `.ui-toc*`) | Stable additive | TOC rail class/part names and current-section state classes are public. Opt-in, not in the default bundle. The host owns section observation and active-state updates. |
|
|
161
127
|
| Tree outlines (`css/tree.css`, `.ui-tree*`) | Stable additive | Tree outline class names, depth styling, and native `<details>` composition are public. Opt-in, not in the default bundle. The host owns tree data, lazy loading, and selection state. |
|
|
162
|
-
| Controlled-modal focus trap (`initModal`, adapter `useModal`, `data-bronto-modal`) | Deprecated in 0.7 | The controlled non-`<dialog>` path remains compatible through 0.7 and is scheduled for removal no earlier than 0.8 under ADR-0004. Use native `<dialog>` with `initDialog()`; it remains stable. |
|
|
163
128
|
| Keyboard-shortcut hint (`.ui-shortcut`, `.ui-shortcut__sep`) | Stable additive | Class names for the chord/sequence hint over `.ui-kbd` are public. Ships in the core layer (class-only, no recipe). |
|
|
164
129
|
| Agent and migration data (`llms.txt`, `MIGRATIONS.json`) | Stable additive | `llms.txt` stays shipped as the offline agent entrypoint. `MIGRATIONS.json` stays a machine-readable migration map for breaking renames/removals. New migration entries are additive; removal of a migration record requires the same breaking-change discipline as the surface it describes. |
|
|
165
130
|
| Generated docs shipped in npm | Stable paths | Exported docs paths stay shipped and resolvable within a compatible minor. Markdown/text assets are for reading unless your runtime has a loader. Generated content may change with the source contract. |
|
package/docs/state.md
CHANGED
|
@@ -165,6 +165,52 @@ Colour is never the only channel (WCAG 1.4.1): `.ui-severity` carries an
|
|
|
165
165
|
author-written label, and `.ui-severity-dot` is only for rows that **also** name
|
|
166
166
|
their level in text.
|
|
167
167
|
|
|
168
|
+
### Painting a mark Bronto does not ship — `.ui-severity-tone`
|
|
169
|
+
|
|
170
|
+
The three classes above all draw something: a chip, a ruled row, a background
|
|
171
|
+
dot. A host painting its own mark — an SVG shape, a gradient stop, a canvas —
|
|
172
|
+
needs the tone as a **value** with none of that. `.ui-severity-tone` paints
|
|
173
|
+
nothing and only resolves `--severity-tone` from `data-level`:
|
|
174
|
+
|
|
175
|
+
```html
|
|
176
|
+
<circle class="ui-severity-tone" data-level="critical" fill="var(--severity-tone)" />
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
Reach for it when `background` is not the property you need. An SVG shape
|
|
180
|
+
ignores `background` entirely, so without this a consumer restates the whole
|
|
181
|
+
tier table in `fill` — and then it can drift from the rows beside it.
|
|
182
|
+
|
|
183
|
+
## Timestrip — `.ui-timestrip`
|
|
184
|
+
|
|
185
|
+
A status list answers *what*. The strip answers **when**, on one axis, at a
|
|
186
|
+
glance: a cluster of marks at the leading edge is a fresh incident, a lone mark
|
|
187
|
+
pinned to the trailing edge has been wrong for a while. It takes the same
|
|
188
|
+
`data-level` as the ladder, so a strip cannot disagree with the rows under it.
|
|
189
|
+
|
|
190
|
+
```html
|
|
191
|
+
<div class="ui-timestrip" role="img" aria-label="When these alerts started, last 24 hours">
|
|
192
|
+
<span class="ui-timestrip__axis"></span>
|
|
193
|
+
<span class="ui-timestrip__now"></span>
|
|
194
|
+
<span class="ui-timestrip__event" data-level="critical" style="--at: 0.92"></span>
|
|
195
|
+
<span class="ui-timestrip__event" data-level="warning" style="--at: 0.4"></span>
|
|
196
|
+
<span class="ui-timestrip__event" data-level="ok" data-outside style="--at: 0"></span>
|
|
197
|
+
</div>
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**This is geometry, not a chart.** The host owns the window, the clock, and the
|
|
201
|
+
arithmetic: it normalises each event to a position in `0..1` and writes it as
|
|
202
|
+
`--at`, where `0` is the oldest edge and `1` is now. Bronto owns the rail, the
|
|
203
|
+
now marker, and the mark. There are no scales, no ticks, no axis labels, and no
|
|
204
|
+
time parsing — a surface that wants those wants a chart, and Bronto
|
|
205
|
+
[refuses chart scales](./frontier-primitives.md).
|
|
206
|
+
|
|
207
|
+
`data-outside` marks an event older than the window. It stays at the edge at
|
|
208
|
+
reduced weight rather than vanishing, because a strip reading "quiet" while a
|
|
209
|
+
row says "failing for three days" is worse than one reading crowded.
|
|
210
|
+
|
|
211
|
+
The strip is decorative on its own: give it an `aria-label` naming what it
|
|
212
|
+
plots, and let the rows beneath it name each level in words.
|
|
213
|
+
|
|
168
214
|
## Recipe
|
|
169
215
|
|
|
170
216
|
```js
|
|
@@ -180,6 +226,7 @@ ui.job({ state: 'running' }); // "ui-job ui-job--running"
|
|
|
180
226
|
severity('critical'); // { class: 'ui-severity', 'data-level': 'critical' }
|
|
181
227
|
severity('warning', { part: 'row' }); // { class: 'ui-severity-row', … }
|
|
182
228
|
severity('nope'); // { class: 'ui-severity', 'data-level': 'unknown' }
|
|
229
|
+
severity('critical', { part: 'tone' }); // { class: 'ui-severity-tone', … }
|
|
183
230
|
|
|
184
231
|
SEVERITY_LEVELS; // ['critical','error','warning','notice','ok'] — sort/filter from this
|
|
185
232
|
```
|
package/docs/theming.md
CHANGED
|
@@ -130,6 +130,22 @@ you change CSS `--accent` later.
|
|
|
130
130
|
- **Spacing** — override the `--space-2xs … --space-2xl` scale, or use a
|
|
131
131
|
preset: `data-density="compact"` / `data-density="comfortable"` on any
|
|
132
132
|
element (defaults to the middle scale).
|
|
133
|
+
|
|
134
|
+
**Read this before relying on the preset.** It re-points the `--space-*`
|
|
135
|
+
scale, and only components whose padding is *expressed in that scale* move
|
|
136
|
+
with it — around 40 of them, including `ui-panel`, `ui-modal__body`,
|
|
137
|
+
`ui-evidence-item`, `ui-claim`, `ui-job`, `ui-code__body` and the report
|
|
138
|
+
surfaces. The rest carry tuned padding pairs like `0.5rem 0.55rem`, which the
|
|
139
|
+
seven-step scale cannot express, so **they do not respond at all** —
|
|
140
|
+
`ui-alert` and `ui-menu__item` are the two most likely to surprise you.
|
|
141
|
+
|
|
142
|
+
That is a real limit, not an oversight to work around: flattening a tuned pair
|
|
143
|
+
onto the nearest scale step would change how those components look at the
|
|
144
|
+
default density, which is the one nearly everyone uses. If you need a denser
|
|
145
|
+
variant of a component that does not respond, override its padding directly —
|
|
146
|
+
and if you find yourself doing that repeatedly for the same component, that is
|
|
147
|
+
worth reporting, because it is evidence for a real `--dense` modifier rather
|
|
148
|
+
than a preset that half-works.
|
|
133
149
|
- **Dark surface** — the dark theme's base is a deliberately *elevated*
|
|
134
150
|
near-black (`--bg: #121212`) for readability: pure black + bright text
|
|
135
151
|
causes halation, and near-black-on-black surface steps are imperceptible.
|