@ponchia/ui 0.6.5 → 0.6.7
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 +170 -0
- package/README.md +43 -23
- package/behaviors/carousel.d.ts.map +1 -1
- package/behaviors/carousel.js +3 -0
- package/behaviors/dialog.d.ts.map +1 -1
- package/behaviors/dialog.js +14 -8
- package/behaviors/forms.d.ts.map +1 -1
- package/behaviors/forms.js +11 -5
- package/behaviors/index.d.ts +2 -0
- package/behaviors/index.d.ts.map +1 -1
- package/behaviors/index.js +2 -0
- package/behaviors/internal.d.ts +2 -1
- package/behaviors/internal.d.ts.map +1 -1
- package/behaviors/internal.js +23 -3
- package/behaviors/legend.d.ts.map +1 -1
- package/behaviors/legend.js +41 -9
- package/behaviors/splitter.d.ts +26 -0
- package/behaviors/splitter.d.ts.map +1 -0
- package/behaviors/splitter.js +200 -0
- package/behaviors/table.js +3 -3
- package/behaviors/theme.js +2 -2
- package/classes/classes.json +230 -4
- package/classes/index.d.ts +49 -1
- package/classes/index.js +56 -1
- package/classes/vscode.css-custom-data.json +1 -1
- package/css/analytical.css +3 -1
- package/css/app.css +4 -4
- package/css/clamp.css +92 -0
- package/css/figure.css +102 -0
- package/css/highlights.css +50 -0
- package/css/interval.css +90 -0
- package/css/primitives.css +2 -3
- package/css/report-kit.css +38 -0
- package/css/report.css +51 -4
- package/css/sidenote.css +12 -2
- package/css/site.css +2 -1
- package/css/sources.css +5 -0
- package/css/state.css +120 -1
- package/css/table.css +4 -0
- package/css/tokens.css +9 -9
- package/css/workbench.css +101 -8
- package/dist/bronto.css +1 -1
- package/dist/css/analytical.css +1 -1
- package/dist/css/app.css +1 -1
- package/dist/css/clamp.css +1 -0
- package/dist/css/figure.css +1 -0
- package/dist/css/highlights.css +1 -0
- package/dist/css/interval.css +1 -0
- package/dist/css/primitives.css +1 -1
- package/dist/css/report-kit.css +1 -0
- package/dist/css/report.css +1 -1
- package/dist/css/sidenote.css +1 -1
- package/dist/css/site.css +1 -1
- package/dist/css/sources.css +1 -1
- 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/0002-scope-and-2026-baseline.md +1 -1
- package/docs/architecture.md +67 -43
- package/docs/clamp.md +49 -0
- package/docs/contrast.md +34 -24
- package/docs/d2.md +37 -0
- package/docs/figure.md +71 -0
- package/docs/frontier-primitives.md +48 -23
- package/docs/highlights.md +52 -0
- package/docs/interop/tailwind.md +148 -0
- package/docs/interval.md +55 -0
- package/docs/legends.md +3 -2
- package/docs/mermaid.md +6 -0
- package/docs/migrations/0.2-to-0.3.md +80 -0
- package/docs/migrations/0.3-to-0.4.md +48 -0
- package/docs/migrations/0.4-to-0.5.md +96 -0
- package/docs/migrations/0.5-to-0.6.md +82 -0
- package/docs/package-contract.md +40 -2
- package/docs/reference.md +79 -6
- package/docs/reporting.md +132 -56
- package/docs/sidenote.md +7 -1
- package/docs/sources.md +1 -1
- package/docs/stability.md +5 -3
- package/docs/state.md +67 -10
- package/docs/theming.md +10 -2
- package/docs/usage.md +31 -11
- package/docs/workbench.md +59 -18
- package/llms.txt +82 -14
- package/package.json +68 -6
- package/qwik/index.d.ts +1 -0
- package/qwik/index.d.ts.map +1 -1
- package/qwik/index.js +26 -21
- package/react/index.d.ts +1 -0
- package/react/index.d.ts.map +1 -1
- package/react/index.js +4 -1
- package/schemas/report-claims.v1.schema.json +137 -0
- package/solid/index.d.ts +2 -0
- package/solid/index.d.ts.map +1 -1
- package/solid/index.js +3 -0
- package/svelte/index.d.ts +88 -0
- package/svelte/index.d.ts.map +1 -0
- package/svelte/index.js +166 -0
- package/tailwind.css +87 -0
- package/tokens/figma.variables.json +2241 -0
- package/tokens/index.js +1 -1
- package/tokens/index.json +2 -2
- package/tokens/resolved.json +3 -3
- package/tokens/tokens.dtcg.json +1 -1
- package/vue/index.d.ts +79 -0
- package/vue/index.d.ts.map +1 -0
- package/vue/index.js +197 -0
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": 634,
|
|
5
|
+
"groups": 177
|
|
6
6
|
},
|
|
7
7
|
"groups": {
|
|
8
8
|
"ui-accordion": {
|
|
@@ -322,6 +322,17 @@
|
|
|
322
322
|
"ui-claim__status"
|
|
323
323
|
]
|
|
324
324
|
},
|
|
325
|
+
"ui-clamp": {
|
|
326
|
+
"base": "ui-clamp",
|
|
327
|
+
"modifiers": [],
|
|
328
|
+
"parts": [
|
|
329
|
+
"ui-clamp__body",
|
|
330
|
+
"ui-clamp__control",
|
|
331
|
+
"ui-clamp__less",
|
|
332
|
+
"ui-clamp__more",
|
|
333
|
+
"ui-clamp__toggle"
|
|
334
|
+
]
|
|
335
|
+
},
|
|
325
336
|
"ui-cluster": {
|
|
326
337
|
"base": "ui-cluster",
|
|
327
338
|
"modifiers": [
|
|
@@ -583,6 +594,21 @@
|
|
|
583
594
|
"modifiers": [],
|
|
584
595
|
"parts": []
|
|
585
596
|
},
|
|
597
|
+
"ui-figure": {
|
|
598
|
+
"base": "ui-figure",
|
|
599
|
+
"modifiers": [
|
|
600
|
+
"ui-figure__body--key-right"
|
|
601
|
+
],
|
|
602
|
+
"parts": [
|
|
603
|
+
"ui-figure__body",
|
|
604
|
+
"ui-figure__caption",
|
|
605
|
+
"ui-figure__data",
|
|
606
|
+
"ui-figure__key",
|
|
607
|
+
"ui-figure__media",
|
|
608
|
+
"ui-figure__overlay",
|
|
609
|
+
"ui-figure__stage"
|
|
610
|
+
]
|
|
611
|
+
},
|
|
586
612
|
"ui-file": {
|
|
587
613
|
"base": "ui-file",
|
|
588
614
|
"modifiers": [],
|
|
@@ -613,6 +639,11 @@
|
|
|
613
639
|
"modifiers": [],
|
|
614
640
|
"parts": []
|
|
615
641
|
},
|
|
642
|
+
"ui-highlights": {
|
|
643
|
+
"base": "ui-highlights",
|
|
644
|
+
"modifiers": [],
|
|
645
|
+
"parts": []
|
|
646
|
+
},
|
|
616
647
|
"ui-hint": {
|
|
617
648
|
"base": "ui-hint",
|
|
618
649
|
"modifiers": [
|
|
@@ -654,6 +685,37 @@
|
|
|
654
685
|
"ui-inspector__head"
|
|
655
686
|
]
|
|
656
687
|
},
|
|
688
|
+
"ui-interval": {
|
|
689
|
+
"base": "ui-interval",
|
|
690
|
+
"modifiers": [],
|
|
691
|
+
"parts": [
|
|
692
|
+
"ui-interval__bounds",
|
|
693
|
+
"ui-interval__label",
|
|
694
|
+
"ui-interval__point",
|
|
695
|
+
"ui-interval__range",
|
|
696
|
+
"ui-interval__track"
|
|
697
|
+
]
|
|
698
|
+
},
|
|
699
|
+
"ui-job": {
|
|
700
|
+
"base": "ui-job",
|
|
701
|
+
"modifiers": [
|
|
702
|
+
"ui-job--blocked",
|
|
703
|
+
"ui-job--compact",
|
|
704
|
+
"ui-job--complete",
|
|
705
|
+
"ui-job--failed",
|
|
706
|
+
"ui-job--queued",
|
|
707
|
+
"ui-job--running"
|
|
708
|
+
],
|
|
709
|
+
"parts": [
|
|
710
|
+
"ui-job__actions",
|
|
711
|
+
"ui-job__bar",
|
|
712
|
+
"ui-job__body",
|
|
713
|
+
"ui-job__head",
|
|
714
|
+
"ui-job__meta",
|
|
715
|
+
"ui-job__progress",
|
|
716
|
+
"ui-job__title"
|
|
717
|
+
]
|
|
718
|
+
},
|
|
657
719
|
"ui-kbd": {
|
|
658
720
|
"base": "ui-kbd",
|
|
659
721
|
"modifiers": [],
|
|
@@ -1134,6 +1196,17 @@
|
|
|
1134
1196
|
"modifiers": [],
|
|
1135
1197
|
"parts": []
|
|
1136
1198
|
},
|
|
1199
|
+
"ui-splitter": {
|
|
1200
|
+
"base": "ui-splitter",
|
|
1201
|
+
"modifiers": [
|
|
1202
|
+
"ui-splitter--horizontal",
|
|
1203
|
+
"ui-splitter--vertical"
|
|
1204
|
+
],
|
|
1205
|
+
"parts": [
|
|
1206
|
+
"ui-splitter__handle",
|
|
1207
|
+
"ui-splitter__pane"
|
|
1208
|
+
]
|
|
1209
|
+
},
|
|
1137
1210
|
"ui-spotlight": {
|
|
1138
1211
|
"base": "ui-spotlight",
|
|
1139
1212
|
"modifiers": [
|
|
@@ -1554,6 +1627,12 @@
|
|
|
1554
1627
|
"ui-claim__scope",
|
|
1555
1628
|
"ui-claim__statement",
|
|
1556
1629
|
"ui-claim__status",
|
|
1630
|
+
"ui-clamp",
|
|
1631
|
+
"ui-clamp__body",
|
|
1632
|
+
"ui-clamp__control",
|
|
1633
|
+
"ui-clamp__less",
|
|
1634
|
+
"ui-clamp__more",
|
|
1635
|
+
"ui-clamp__toggle",
|
|
1557
1636
|
"ui-cluster",
|
|
1558
1637
|
"ui-cluster--between",
|
|
1559
1638
|
"ui-code",
|
|
@@ -1667,6 +1746,15 @@
|
|
|
1667
1746
|
"ui-eyebrow--muted",
|
|
1668
1747
|
"ui-eyebrow--sm",
|
|
1669
1748
|
"ui-field",
|
|
1749
|
+
"ui-figure",
|
|
1750
|
+
"ui-figure__body",
|
|
1751
|
+
"ui-figure__body--key-right",
|
|
1752
|
+
"ui-figure__caption",
|
|
1753
|
+
"ui-figure__data",
|
|
1754
|
+
"ui-figure__key",
|
|
1755
|
+
"ui-figure__media",
|
|
1756
|
+
"ui-figure__overlay",
|
|
1757
|
+
"ui-figure__stage",
|
|
1670
1758
|
"ui-file",
|
|
1671
1759
|
"ui-generated",
|
|
1672
1760
|
"ui-generated__label",
|
|
@@ -1675,6 +1763,7 @@
|
|
|
1675
1763
|
"ui-glossary__term",
|
|
1676
1764
|
"ui-grid",
|
|
1677
1765
|
"ui-halftone",
|
|
1766
|
+
"ui-highlights",
|
|
1678
1767
|
"ui-hint",
|
|
1679
1768
|
"ui-hint--error",
|
|
1680
1769
|
"ui-icon",
|
|
@@ -1687,6 +1776,26 @@
|
|
|
1687
1776
|
"ui-inspector",
|
|
1688
1777
|
"ui-inspector__body",
|
|
1689
1778
|
"ui-inspector__head",
|
|
1779
|
+
"ui-interval",
|
|
1780
|
+
"ui-interval__bounds",
|
|
1781
|
+
"ui-interval__label",
|
|
1782
|
+
"ui-interval__point",
|
|
1783
|
+
"ui-interval__range",
|
|
1784
|
+
"ui-interval__track",
|
|
1785
|
+
"ui-job",
|
|
1786
|
+
"ui-job--blocked",
|
|
1787
|
+
"ui-job--compact",
|
|
1788
|
+
"ui-job--complete",
|
|
1789
|
+
"ui-job--failed",
|
|
1790
|
+
"ui-job--queued",
|
|
1791
|
+
"ui-job--running",
|
|
1792
|
+
"ui-job__actions",
|
|
1793
|
+
"ui-job__bar",
|
|
1794
|
+
"ui-job__body",
|
|
1795
|
+
"ui-job__head",
|
|
1796
|
+
"ui-job__meta",
|
|
1797
|
+
"ui-job__progress",
|
|
1798
|
+
"ui-job__title",
|
|
1690
1799
|
"ui-kbd",
|
|
1691
1800
|
"ui-keep",
|
|
1692
1801
|
"ui-key-value",
|
|
@@ -1895,6 +2004,11 @@
|
|
|
1895
2004
|
"ui-spark__bar--neg",
|
|
1896
2005
|
"ui-spark__bar--pos",
|
|
1897
2006
|
"ui-spinner",
|
|
2007
|
+
"ui-splitter",
|
|
2008
|
+
"ui-splitter--horizontal",
|
|
2009
|
+
"ui-splitter--vertical",
|
|
2010
|
+
"ui-splitter__handle",
|
|
2011
|
+
"ui-splitter__pane",
|
|
1898
2012
|
"ui-spotlight",
|
|
1899
2013
|
"ui-spotlight--ring",
|
|
1900
2014
|
"ui-spotlight__hole",
|
|
@@ -2026,7 +2140,7 @@
|
|
|
2026
2140
|
{
|
|
2027
2141
|
"class": "is-open",
|
|
2028
2142
|
"scope": "controlled .ui-modal / .ui-popover",
|
|
2029
|
-
"effect": "open state
|
|
2143
|
+
"effect": "open visibility state; focus management belongs to the matching behavior/host"
|
|
2030
2144
|
},
|
|
2031
2145
|
{
|
|
2032
2146
|
"class": "is-active",
|
|
@@ -2090,6 +2204,13 @@
|
|
|
2090
2204
|
"example": "92",
|
|
2091
2205
|
"note": "measured value as a UNITLESS number 0..100 (registered <number>, never a %). Set it on the meter/progress host — it inherits to the __fill/__bar. Prefer attrs.meter(value)/attrs.progress(value) from @ponchia/ui/classes, which sets it plus role + aria-valuenow/min/max together."
|
|
2092
2206
|
},
|
|
2207
|
+
{
|
|
2208
|
+
"name": "--job-progress",
|
|
2209
|
+
"on": ".ui-job",
|
|
2210
|
+
"type": "percentage",
|
|
2211
|
+
"example": "64%",
|
|
2212
|
+
"note": "determinate background-job progress. Set it on the .ui-job host; pair the .ui-job__progress element with role=\"progressbar\" and matching aria-valuenow/min/max when the value is known."
|
|
2213
|
+
},
|
|
2093
2214
|
{
|
|
2094
2215
|
"name": "--icon-mask",
|
|
2095
2216
|
"on": ".ui-icon",
|
|
@@ -2142,6 +2263,27 @@
|
|
|
2142
2263
|
"example": "var(--accent-soft)",
|
|
2143
2264
|
"note": "the ::target-text highlight wash for the matched cited sentence (default var(--accent-soft)). The host builds the #:~:text= href; Bronto owns the paint — see docs/textref.md."
|
|
2144
2265
|
},
|
|
2266
|
+
{
|
|
2267
|
+
"name": "--figure-max-inline",
|
|
2268
|
+
"on": ".ui-figure__stage",
|
|
2269
|
+
"type": "length",
|
|
2270
|
+
"example": "32rem",
|
|
2271
|
+
"note": "maximum inline size of the centered figure stage (default 42rem). The host still owns chart/media dimensions and data mapping."
|
|
2272
|
+
},
|
|
2273
|
+
{
|
|
2274
|
+
"name": "--figure-min-block",
|
|
2275
|
+
"on": ".ui-figure__stage",
|
|
2276
|
+
"type": "length",
|
|
2277
|
+
"example": "16rem",
|
|
2278
|
+
"note": "minimum block size reserved for a live or late-rendered figure stage (default 0px)."
|
|
2279
|
+
},
|
|
2280
|
+
{
|
|
2281
|
+
"name": "--figure-key-width",
|
|
2282
|
+
"on": ".ui-figure__body--key-right",
|
|
2283
|
+
"type": "length",
|
|
2284
|
+
"example": "12rem",
|
|
2285
|
+
"note": "width of the right-side key column before the figure body collapses to one column (default 14rem)."
|
|
2286
|
+
},
|
|
2145
2287
|
{
|
|
2146
2288
|
"name": "--v",
|
|
2147
2289
|
"on": ".ui-bullet__measure",
|
|
@@ -2178,6 +2320,78 @@
|
|
|
2178
2320
|
"example": "1rem",
|
|
2179
2321
|
"note": "the sticky inset from the top of the scroll container (default var(--space-md))."
|
|
2180
2322
|
},
|
|
2323
|
+
{
|
|
2324
|
+
"name": "--lo",
|
|
2325
|
+
"on": ".ui-interval",
|
|
2326
|
+
"type": "number 0..1",
|
|
2327
|
+
"example": "0.22",
|
|
2328
|
+
"required": true,
|
|
2329
|
+
"note": "REQUIRED — normalised lower bound of the interval. The host normalises; Bronto only paints."
|
|
2330
|
+
},
|
|
2331
|
+
{
|
|
2332
|
+
"name": "--hi",
|
|
2333
|
+
"on": ".ui-interval",
|
|
2334
|
+
"type": "number 0..1",
|
|
2335
|
+
"example": "0.68",
|
|
2336
|
+
"required": true,
|
|
2337
|
+
"note": "REQUIRED — normalised upper bound of the interval. The host normalises; Bronto only paints."
|
|
2338
|
+
},
|
|
2339
|
+
{
|
|
2340
|
+
"name": "--v",
|
|
2341
|
+
"on": ".ui-interval__point",
|
|
2342
|
+
"type": "number 0..1",
|
|
2343
|
+
"example": "0.52",
|
|
2344
|
+
"note": "optional normalised point estimate inside the interval. Omit the point element when there is no point estimate."
|
|
2345
|
+
},
|
|
2346
|
+
{
|
|
2347
|
+
"name": "--clamp-lines",
|
|
2348
|
+
"on": ".ui-clamp",
|
|
2349
|
+
"type": "integer",
|
|
2350
|
+
"example": "3",
|
|
2351
|
+
"note": "number of lines shown before the optional reveal control expands the excerpt (default 4)."
|
|
2352
|
+
},
|
|
2353
|
+
{
|
|
2354
|
+
"name": "--highlight-evidence",
|
|
2355
|
+
"on": ".ui-highlights",
|
|
2356
|
+
"type": "color",
|
|
2357
|
+
"example": "var(--accent-soft)",
|
|
2358
|
+
"note": "CSS Custom Highlight API wash for host-registered bronto-evidence ranges."
|
|
2359
|
+
},
|
|
2360
|
+
{
|
|
2361
|
+
"name": "--highlight-search",
|
|
2362
|
+
"on": ".ui-highlights",
|
|
2363
|
+
"type": "color",
|
|
2364
|
+
"example": "var(--warning-soft)",
|
|
2365
|
+
"note": "CSS Custom Highlight API wash for host-registered bronto-search ranges."
|
|
2366
|
+
},
|
|
2367
|
+
{
|
|
2368
|
+
"name": "--highlight-current",
|
|
2369
|
+
"on": ".ui-highlights",
|
|
2370
|
+
"type": "color",
|
|
2371
|
+
"example": "color-mix(in srgb, var(--accent) 22%, transparent)",
|
|
2372
|
+
"note": "CSS Custom Highlight API wash for the host-registered bronto-current range."
|
|
2373
|
+
},
|
|
2374
|
+
{
|
|
2375
|
+
"name": "--splitter-pos",
|
|
2376
|
+
"on": ".ui-splitter",
|
|
2377
|
+
"type": "percentage",
|
|
2378
|
+
"example": "36%",
|
|
2379
|
+
"note": "first pane size in the splitter axis. initSplitter keeps this and aria-valuenow in sync; the host may persist the last value."
|
|
2380
|
+
},
|
|
2381
|
+
{
|
|
2382
|
+
"name": "--splitter-handle",
|
|
2383
|
+
"on": ".ui-splitter",
|
|
2384
|
+
"type": "length",
|
|
2385
|
+
"example": "0.75rem",
|
|
2386
|
+
"note": "fixed size of the separator handle track (default 0.75rem)."
|
|
2387
|
+
},
|
|
2388
|
+
{
|
|
2389
|
+
"name": "--splitter-pane-min",
|
|
2390
|
+
"on": ".ui-splitter",
|
|
2391
|
+
"type": "length",
|
|
2392
|
+
"example": "12rem",
|
|
2393
|
+
"note": "minimum first-pane size before the grid track clamps (default 0px); pair with matching aria-valuemin when the limit is user-visible."
|
|
2394
|
+
},
|
|
2181
2395
|
{
|
|
2182
2396
|
"name": "--stack-gap",
|
|
2183
2397
|
"on": ".ui-stack",
|
|
@@ -2488,7 +2702,7 @@
|
|
|
2488
2702
|
"name": "data-bronto-modal",
|
|
2489
2703
|
"on": "a controlled (non-<dialog>) .ui-modal overlay",
|
|
2490
2704
|
"behavior": "initModal",
|
|
2491
|
-
"note": "inert focus-trap
|
|
2705
|
+
"note": "inert focus-trap, focus-return, and Escape close signal for a consumer-owned .is-open modal; needs an accessible name"
|
|
2492
2706
|
},
|
|
2493
2707
|
{
|
|
2494
2708
|
"name": "data-bronto-menu",
|
|
@@ -2515,6 +2729,13 @@
|
|
|
2515
2729
|
"behavior": "initSources",
|
|
2516
2730
|
"note": "scopes citation preview metadata and source-card focus/highlight behavior; the host still owns numbering, fetching, and trust decisions."
|
|
2517
2731
|
},
|
|
2732
|
+
{
|
|
2733
|
+
"name": "data-bronto-splitter",
|
|
2734
|
+
"on": "a .ui-splitter host",
|
|
2735
|
+
"value": "optional 'vertical' | 'horizontal' (otherwise inferred from .ui-splitter--horizontal / aria-orientation)",
|
|
2736
|
+
"behavior": "initSplitter",
|
|
2737
|
+
"note": "keyboard + pointer ARIA window-splitter behavior; updates --splitter-pos and aria-valuenow, then emits bronto:splitter:resize. The host owns persistence and pane state."
|
|
2738
|
+
},
|
|
2518
2739
|
{
|
|
2519
2740
|
"name": "data-bronto-source-ref",
|
|
2520
2741
|
"on": "a button/control that references a source card",
|
|
@@ -2728,6 +2949,11 @@
|
|
|
2728
2949
|
"on": ".ui-error-summary",
|
|
2729
2950
|
"require": "role=\"alert\" + tabindex=\"-1\" on the hand-authored summary so it is announced and focusable when validation fails",
|
|
2730
2951
|
"helper": "initFormValidation wires this for the dynamic summary; a static summary needs it hand-set"
|
|
2952
|
+
},
|
|
2953
|
+
{
|
|
2954
|
+
"on": ".ui-splitter__handle",
|
|
2955
|
+
"require": "role=\"separator\" + tabindex=\"0\" + aria-controls=\"<first-pane-id>\" + an accessible name + aria-orientation + aria-valuemin/max/now. The aria-valuenow value mirrors --splitter-pos.",
|
|
2956
|
+
"helper": "initSplitter fills missing role/tabindex/orientation/value defaults and updates aria-valuenow; author the accessible name, aria-controls, and meaningful min/max."
|
|
2731
2957
|
}
|
|
2732
2958
|
]
|
|
2733
2959
|
}
|
package/classes/index.d.ts
CHANGED
|
@@ -330,6 +330,15 @@ export declare const cls: {
|
|
|
330
330
|
readonly compare2up: 'ui-compare--2up';
|
|
331
331
|
readonly compareCol: 'ui-compare__col';
|
|
332
332
|
readonly compareHead: 'ui-compare__head';
|
|
333
|
+
readonly figure: 'ui-figure';
|
|
334
|
+
readonly figureCaption: 'ui-figure__caption';
|
|
335
|
+
readonly figureBody: 'ui-figure__body';
|
|
336
|
+
readonly figureBodyKeyRight: 'ui-figure__body--key-right';
|
|
337
|
+
readonly figureStage: 'ui-figure__stage';
|
|
338
|
+
readonly figureMedia: 'ui-figure__media';
|
|
339
|
+
readonly figureOverlay: 'ui-figure__overlay';
|
|
340
|
+
readonly figureKey: 'ui-figure__key';
|
|
341
|
+
readonly figureData: 'ui-figure__data';
|
|
333
342
|
readonly legend: 'ui-legend';
|
|
334
343
|
readonly legendVertical: 'ui-legend--vertical';
|
|
335
344
|
readonly legendCompact: 'ui-legend--compact';
|
|
@@ -459,6 +468,19 @@ export declare const cls: {
|
|
|
459
468
|
readonly srcReviewed: 'ui-src--reviewed';
|
|
460
469
|
readonly srcStale: 'ui-src--stale';
|
|
461
470
|
readonly srcConflict: 'ui-src--conflict';
|
|
471
|
+
readonly interval: 'ui-interval';
|
|
472
|
+
readonly intervalTrack: 'ui-interval__track';
|
|
473
|
+
readonly intervalRange: 'ui-interval__range';
|
|
474
|
+
readonly intervalPoint: 'ui-interval__point';
|
|
475
|
+
readonly intervalLabel: 'ui-interval__label';
|
|
476
|
+
readonly intervalBounds: 'ui-interval__bounds';
|
|
477
|
+
readonly clamp: 'ui-clamp';
|
|
478
|
+
readonly clampBody: 'ui-clamp__body';
|
|
479
|
+
readonly clampToggle: 'ui-clamp__toggle';
|
|
480
|
+
readonly clampControl: 'ui-clamp__control';
|
|
481
|
+
readonly clampMore: 'ui-clamp__more';
|
|
482
|
+
readonly clampLess: 'ui-clamp__less';
|
|
483
|
+
readonly highlights: 'ui-highlights';
|
|
462
484
|
readonly diff: 'ui-diff';
|
|
463
485
|
readonly diffSplit: 'ui-diff--split';
|
|
464
486
|
readonly diffPane: 'ui-diff__pane';
|
|
@@ -524,6 +546,20 @@ export declare const cls: {
|
|
|
524
546
|
readonly stateReviewed: 'ui-state--reviewed';
|
|
525
547
|
readonly stateNeedsReview: 'ui-state--needs-review';
|
|
526
548
|
readonly syncbar: 'ui-syncbar';
|
|
549
|
+
readonly job: 'ui-job';
|
|
550
|
+
readonly jobHead: 'ui-job__head';
|
|
551
|
+
readonly jobTitle: 'ui-job__title';
|
|
552
|
+
readonly jobMeta: 'ui-job__meta';
|
|
553
|
+
readonly jobBody: 'ui-job__body';
|
|
554
|
+
readonly jobProgress: 'ui-job__progress';
|
|
555
|
+
readonly jobBar: 'ui-job__bar';
|
|
556
|
+
readonly jobActions: 'ui-job__actions';
|
|
557
|
+
readonly jobCompact: 'ui-job--compact';
|
|
558
|
+
readonly jobQueued: 'ui-job--queued';
|
|
559
|
+
readonly jobRunning: 'ui-job--running';
|
|
560
|
+
readonly jobBlocked: 'ui-job--blocked';
|
|
561
|
+
readonly jobFailed: 'ui-job--failed';
|
|
562
|
+
readonly jobComplete: 'ui-job--complete';
|
|
527
563
|
readonly generated: 'ui-generated';
|
|
528
564
|
readonly generatedLabel: 'ui-generated__label';
|
|
529
565
|
readonly originLabel: 'ui-origin-label';
|
|
@@ -544,6 +580,11 @@ export declare const cls: {
|
|
|
544
580
|
readonly selectionbar: 'ui-selectionbar';
|
|
545
581
|
readonly selectionbarCount: 'ui-selectionbar__count';
|
|
546
582
|
readonly selectionbarActions: 'ui-selectionbar__actions';
|
|
583
|
+
readonly splitter: 'ui-splitter';
|
|
584
|
+
readonly splitterVertical: 'ui-splitter--vertical';
|
|
585
|
+
readonly splitterHorizontal: 'ui-splitter--horizontal';
|
|
586
|
+
readonly splitterPane: 'ui-splitter__pane';
|
|
587
|
+
readonly splitterHandle: 'ui-splitter__handle';
|
|
547
588
|
readonly command: 'ui-command';
|
|
548
589
|
readonly commandInput: 'ui-command__input';
|
|
549
590
|
readonly commandList: 'ui-command__list';
|
|
@@ -699,7 +740,7 @@ export interface DotbarOpts {
|
|
|
699
740
|
}
|
|
700
741
|
export interface ModalOpts {
|
|
701
742
|
drawer?: boolean;
|
|
702
|
-
/** Controlled non-dialog usage — adds the is-open state
|
|
743
|
+
/** Controlled non-dialog usage — adds only the is-open state; pair with initModal for focus management. */
|
|
703
744
|
open?: boolean;
|
|
704
745
|
}
|
|
705
746
|
export interface TabOpts {
|
|
@@ -810,6 +851,12 @@ export interface StateOpts {
|
|
|
810
851
|
/** Pulse the indicator for an in-progress state (saving / syncing / retrying). Reduced-motion-safe. */
|
|
811
852
|
busy?: boolean;
|
|
812
853
|
}
|
|
854
|
+
export type JobState = 'queued' | 'running' | 'blocked' | 'failed' | 'complete';
|
|
855
|
+
export interface JobOpts {
|
|
856
|
+
/** Persistent background-job state. Pair with written status text; tone is only a scanning aid. */
|
|
857
|
+
state?: JobState;
|
|
858
|
+
compact?: boolean;
|
|
859
|
+
}
|
|
813
860
|
export interface OriginLabelOpts {
|
|
814
861
|
/** Accent-tint the label for AI/model-generated origin (vs a neutral tag). */
|
|
815
862
|
ai?: boolean;
|
|
@@ -892,6 +939,7 @@ export interface Ui {
|
|
|
892
939
|
sparkBar(opts?: SparkBarOpts): string;
|
|
893
940
|
bulletMeasure(opts?: BulletMeasureOpts): string;
|
|
894
941
|
state(opts?: StateOpts): string;
|
|
942
|
+
job(opts?: JobOpts): string;
|
|
895
943
|
originLabel(opts?: OriginLabelOpts): string;
|
|
896
944
|
}
|
|
897
945
|
|
package/classes/index.js
CHANGED
|
@@ -346,6 +346,16 @@ export const cls = Object.freeze({
|
|
|
346
346
|
compare2up: 'ui-compare--2up',
|
|
347
347
|
compareCol: 'ui-compare__col',
|
|
348
348
|
compareHead: 'ui-compare__head',
|
|
349
|
+
// figure — analytical/report figure stage (css/figure.css)
|
|
350
|
+
figure: 'ui-figure',
|
|
351
|
+
figureCaption: 'ui-figure__caption',
|
|
352
|
+
figureBody: 'ui-figure__body',
|
|
353
|
+
figureBodyKeyRight: 'ui-figure__body--key-right',
|
|
354
|
+
figureStage: 'ui-figure__stage',
|
|
355
|
+
figureMedia: 'ui-figure__media',
|
|
356
|
+
figureOverlay: 'ui-figure__overlay',
|
|
357
|
+
figureKey: 'ui-figure__key',
|
|
358
|
+
figureData: 'ui-figure__data',
|
|
349
359
|
// legend (standalone data keys — css/legend.css)
|
|
350
360
|
legend: 'ui-legend',
|
|
351
361
|
legendVertical: 'ui-legend--vertical',
|
|
@@ -483,6 +493,22 @@ export const cls = Object.freeze({
|
|
|
483
493
|
srcReviewed: 'ui-src--reviewed',
|
|
484
494
|
srcStale: 'ui-src--stale',
|
|
485
495
|
srcConflict: 'ui-src--conflict',
|
|
496
|
+
// interval — low/high uncertainty span (css/interval.css)
|
|
497
|
+
interval: 'ui-interval',
|
|
498
|
+
intervalTrack: 'ui-interval__track',
|
|
499
|
+
intervalRange: 'ui-interval__range',
|
|
500
|
+
intervalPoint: 'ui-interval__point',
|
|
501
|
+
intervalLabel: 'ui-interval__label',
|
|
502
|
+
intervalBounds: 'ui-interval__bounds',
|
|
503
|
+
// clamp — bounded excerpt + reveal (css/clamp.css)
|
|
504
|
+
clamp: 'ui-clamp',
|
|
505
|
+
clampBody: 'ui-clamp__body',
|
|
506
|
+
clampToggle: 'ui-clamp__toggle',
|
|
507
|
+
clampControl: 'ui-clamp__control',
|
|
508
|
+
clampMore: 'ui-clamp__more',
|
|
509
|
+
clampLess: 'ui-clamp__less',
|
|
510
|
+
// highlights — CSS Custom Highlight API paint host (css/highlights.css)
|
|
511
|
+
highlights: 'ui-highlights',
|
|
486
512
|
// diff — line/row change-review grammar (css/diff.css)
|
|
487
513
|
diff: 'ui-diff',
|
|
488
514
|
diffSplit: 'ui-diff--split',
|
|
@@ -558,6 +584,20 @@ export const cls = Object.freeze({
|
|
|
558
584
|
stateReviewed: 'ui-state--reviewed',
|
|
559
585
|
stateNeedsReview: 'ui-state--needs-review',
|
|
560
586
|
syncbar: 'ui-syncbar',
|
|
587
|
+
job: 'ui-job',
|
|
588
|
+
jobHead: 'ui-job__head',
|
|
589
|
+
jobTitle: 'ui-job__title',
|
|
590
|
+
jobMeta: 'ui-job__meta',
|
|
591
|
+
jobBody: 'ui-job__body',
|
|
592
|
+
jobProgress: 'ui-job__progress',
|
|
593
|
+
jobBar: 'ui-job__bar',
|
|
594
|
+
jobActions: 'ui-job__actions',
|
|
595
|
+
jobCompact: 'ui-job--compact',
|
|
596
|
+
jobQueued: 'ui-job--queued',
|
|
597
|
+
jobRunning: 'ui-job--running',
|
|
598
|
+
jobBlocked: 'ui-job--blocked',
|
|
599
|
+
jobFailed: 'ui-job--failed',
|
|
600
|
+
jobComplete: 'ui-job--complete',
|
|
561
601
|
// generated content / AI-trust surfaces (css/generated.css)
|
|
562
602
|
generated: 'ui-generated',
|
|
563
603
|
generatedLabel: 'ui-generated__label',
|
|
@@ -570,7 +610,7 @@ export const cls = Object.freeze({
|
|
|
570
610
|
toolCallName: 'ui-tool-call__name',
|
|
571
611
|
toolCallStatus: 'ui-tool-call__status',
|
|
572
612
|
toolCallBody: 'ui-tool-call__body',
|
|
573
|
-
// workbench — inspector / property / selection bar (css/workbench.css)
|
|
613
|
+
// workbench — inspector / property / selection bar / splitter (css/workbench.css)
|
|
574
614
|
inspector: 'ui-inspector',
|
|
575
615
|
inspectorHead: 'ui-inspector__head',
|
|
576
616
|
inspectorBody: 'ui-inspector__body',
|
|
@@ -580,6 +620,11 @@ export const cls = Object.freeze({
|
|
|
580
620
|
selectionbar: 'ui-selectionbar',
|
|
581
621
|
selectionbarCount: 'ui-selectionbar__count',
|
|
582
622
|
selectionbarActions: 'ui-selectionbar__actions',
|
|
623
|
+
splitter: 'ui-splitter',
|
|
624
|
+
splitterVertical: 'ui-splitter--vertical',
|
|
625
|
+
splitterHorizontal: 'ui-splitter--horizontal',
|
|
626
|
+
splitterPane: 'ui-splitter__pane',
|
|
627
|
+
splitterHandle: 'ui-splitter__handle',
|
|
583
628
|
// command palette shell (css/command.css + initCommand)
|
|
584
629
|
command: 'ui-command',
|
|
585
630
|
commandInput: 'ui-command__input',
|
|
@@ -673,6 +718,15 @@ const stateTone = (state) =>
|
|
|
673
718
|
'needs-review': cls.stateNeedsReview,
|
|
674
719
|
})[state] || '';
|
|
675
720
|
|
|
721
|
+
const jobTone = (state) =>
|
|
722
|
+
({
|
|
723
|
+
queued: cls.jobQueued,
|
|
724
|
+
running: cls.jobRunning,
|
|
725
|
+
blocked: cls.jobBlocked,
|
|
726
|
+
failed: cls.jobFailed,
|
|
727
|
+
complete: cls.jobComplete,
|
|
728
|
+
})[state] || '';
|
|
729
|
+
|
|
676
730
|
// Trust-state → tone class, shared by the source/citation/provenance recipes.
|
|
677
731
|
// Object-literal lookup to match stateTone above (shorter, greppable, one idiom).
|
|
678
732
|
const srcTone = (state) =>
|
|
@@ -987,6 +1041,7 @@ export const ui = {
|
|
|
987
1041
|
tone === 'neg' && cls.bulletMeasureNeg,
|
|
988
1042
|
),
|
|
989
1043
|
state: ({ state, busy } = {}) => j(cls.state, stateTone(state), busy && cls.stateBusy),
|
|
1044
|
+
job: ({ state, compact } = {}) => j(cls.job, jobTone(state), compact && cls.jobCompact),
|
|
990
1045
|
originLabel: ({ ai } = {}) => j(cls.originLabel, ai && cls.originLabelAi),
|
|
991
1046
|
};
|
|
992
1047
|
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
},
|
|
40
40
|
{
|
|
41
41
|
"name": "--accent-strong",
|
|
42
|
-
"description": "Theme token. Light: `color-mix(in srgb, var(--accent) 83%, #000)` · Dark: `color-mix(in srgb, var(--accent)
|
|
42
|
+
"description": "Theme token. Light: `color-mix(in srgb, var(--accent) 83%, #000)` · Dark: `color-mix(in srgb, var(--accent) 80%, #fff)`"
|
|
43
43
|
},
|
|
44
44
|
{
|
|
45
45
|
"name": "--accent-text",
|
package/css/analytical.css
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
2
|
analytical — convenience roll-up of the opt-in analytical-primitive layers.
|
|
3
3
|
|
|
4
|
-
Import this one file instead of the
|
|
4
|
+
Import this one file instead of the nine leaves when you're building
|
|
5
5
|
analytical / generated-report UI:
|
|
6
6
|
|
|
7
7
|
@import '@ponchia/ui';
|
|
@@ -13,9 +13,11 @@
|
|
|
13
13
|
========================================================================== */
|
|
14
14
|
|
|
15
15
|
@import url('./annotations.css') layer(bronto);
|
|
16
|
+
@import url('./figure.css') layer(bronto);
|
|
16
17
|
@import url('./legend.css') layer(bronto);
|
|
17
18
|
@import url('./marks.css') layer(bronto);
|
|
18
19
|
@import url('./connectors.css') layer(bronto);
|
|
19
20
|
@import url('./spotlight.css') layer(bronto);
|
|
20
21
|
@import url('./crosshair.css') layer(bronto);
|
|
21
22
|
@import url('./selection.css') layer(bronto);
|
|
23
|
+
@import url('./highlights.css') layer(bronto);
|
package/css/app.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
/* ==========================================================================
|
|
2
|
-
app —
|
|
3
|
-
For admin
|
|
2
|
+
app — service shell (sidebar + topbar + panels + metrics)
|
|
3
|
+
For app, service, admin, and operator dashboards.
|
|
4
4
|
========================================================================== */
|
|
5
5
|
|
|
6
6
|
.ui-app-shell {
|
|
@@ -103,7 +103,7 @@
|
|
|
103
103
|
.ui-app-nav a[aria-current]:not([aria-current='false']) {
|
|
104
104
|
background: var(--accent-soft);
|
|
105
105
|
border-inline-start-color: var(--accent);
|
|
106
|
-
color: var(--
|
|
106
|
+
color: var(--text);
|
|
107
107
|
}
|
|
108
108
|
|
|
109
109
|
@media (pointer: coarse) {
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
/* --- Metric tiles ---
|
|
258
258
|
The metric primitive itself is shell-agnostic and now lives in
|
|
259
259
|
primitives.css as `.ui-stat` / `.ui-statgrid`; `.ui-app-metric*` and
|
|
260
|
-
`.ui-app-metrics` remain as permanent
|
|
260
|
+
`.ui-app-metrics` remain as permanent app-shell aliases (grouped on
|
|
261
261
|
the canonical rules there — identical output). Nothing app-specific
|
|
262
262
|
left to define here. */
|
|
263
263
|
|