@ponchia/ui 0.6.6 → 0.6.8

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.
Files changed (160) hide show
  1. package/CHANGELOG.md +175 -6
  2. package/README.md +38 -25
  3. package/annotations/index.d.ts.map +1 -1
  4. package/annotations/index.js +21 -3
  5. package/behaviors/carousel.d.ts.map +1 -1
  6. package/behaviors/carousel.js +91 -32
  7. package/behaviors/combobox.d.ts.map +1 -1
  8. package/behaviors/combobox.js +117 -43
  9. package/behaviors/command.d.ts.map +1 -1
  10. package/behaviors/command.js +74 -14
  11. package/behaviors/connectors.d.ts.map +1 -1
  12. package/behaviors/connectors.js +92 -9
  13. package/behaviors/crosshair.d.ts.map +1 -1
  14. package/behaviors/crosshair.js +47 -1
  15. package/behaviors/dialog.d.ts.map +1 -1
  16. package/behaviors/dialog.js +37 -16
  17. package/behaviors/disclosure.d.ts.map +1 -1
  18. package/behaviors/disclosure.js +33 -3
  19. package/behaviors/dismissible.d.ts.map +1 -1
  20. package/behaviors/dismissible.js +3 -2
  21. package/behaviors/forms.d.ts.map +1 -1
  22. package/behaviors/forms.js +78 -5
  23. package/behaviors/glyph.d.ts.map +1 -1
  24. package/behaviors/glyph.js +17 -2
  25. package/behaviors/index.d.ts +2 -0
  26. package/behaviors/index.d.ts.map +1 -1
  27. package/behaviors/index.js +2 -0
  28. package/behaviors/inert.js +3 -2
  29. package/behaviors/internal.d.ts +2 -1
  30. package/behaviors/internal.d.ts.map +1 -1
  31. package/behaviors/internal.js +25 -4
  32. package/behaviors/legend.d.ts +0 -5
  33. package/behaviors/legend.d.ts.map +1 -1
  34. package/behaviors/legend.js +78 -14
  35. package/behaviors/menu.d.ts.map +1 -1
  36. package/behaviors/menu.js +13 -8
  37. package/behaviors/modal.d.ts.map +1 -1
  38. package/behaviors/modal.js +77 -19
  39. package/behaviors/popover.d.ts +4 -3
  40. package/behaviors/popover.d.ts.map +1 -1
  41. package/behaviors/popover.js +89 -9
  42. package/behaviors/sources.d.ts.map +1 -1
  43. package/behaviors/sources.js +14 -2
  44. package/behaviors/splitter.d.ts +26 -0
  45. package/behaviors/splitter.d.ts.map +1 -0
  46. package/behaviors/splitter.js +239 -0
  47. package/behaviors/spotlight.d.ts.map +1 -1
  48. package/behaviors/spotlight.js +28 -2
  49. package/behaviors/table.d.ts.map +1 -1
  50. package/behaviors/table.js +105 -13
  51. package/behaviors/tabs.d.ts.map +1 -1
  52. package/behaviors/tabs.js +82 -18
  53. package/behaviors/theme.d.ts.map +1 -1
  54. package/behaviors/theme.js +26 -6
  55. package/classes/classes.json +230 -4
  56. package/classes/index.d.ts +64 -3
  57. package/classes/index.js +56 -2
  58. package/classes/vscode.css-custom-data.json +1 -1
  59. package/connectors/index.d.ts +39 -6
  60. package/connectors/index.d.ts.map +1 -1
  61. package/connectors/index.js +67 -9
  62. package/css/analytical.css +3 -1
  63. package/css/annotations.css +12 -0
  64. package/css/app.css +4 -4
  65. package/css/clamp.css +92 -0
  66. package/css/crosshair.css +27 -2
  67. package/css/feedback.css +2 -30
  68. package/css/figure.css +102 -0
  69. package/css/highlights.css +50 -0
  70. package/css/interval.css +90 -0
  71. package/css/navigation.css +12 -0
  72. package/css/primitives.css +2 -3
  73. package/css/report-kit.css +38 -0
  74. package/css/report.css +23 -4
  75. package/css/sidenote.css +12 -2
  76. package/css/site.css +2 -1
  77. package/css/sources.css +5 -0
  78. package/css/state.css +120 -1
  79. package/css/table.css +4 -0
  80. package/css/tokens.css +25 -9
  81. package/css/workbench.css +101 -8
  82. package/dist/bronto.css +1 -1
  83. package/dist/css/analytical.css +1 -1
  84. package/dist/css/annotations.css +1 -1
  85. package/dist/css/app.css +1 -1
  86. package/dist/css/clamp.css +1 -0
  87. package/dist/css/crosshair.css +1 -1
  88. package/dist/css/feedback.css +1 -1
  89. package/dist/css/figure.css +1 -0
  90. package/dist/css/highlights.css +1 -0
  91. package/dist/css/interval.css +1 -0
  92. package/dist/css/navigation.css +1 -1
  93. package/dist/css/primitives.css +1 -1
  94. package/dist/css/report-kit.css +1 -0
  95. package/dist/css/report.css +1 -1
  96. package/dist/css/sidenote.css +1 -1
  97. package/dist/css/site.css +1 -1
  98. package/dist/css/sources.css +1 -1
  99. package/dist/css/state.css +1 -1
  100. package/dist/css/table.css +1 -1
  101. package/dist/css/tokens.css +1 -1
  102. package/dist/css/workbench.css +1 -1
  103. package/docs/adr/0001-color-system.md +3 -2
  104. package/docs/adr/0002-scope-and-2026-baseline.md +1 -1
  105. package/docs/annotations.md +12 -1
  106. package/docs/architecture.md +105 -48
  107. package/docs/clamp.md +49 -0
  108. package/docs/command.md +4 -1
  109. package/docs/connectors.md +16 -0
  110. package/docs/contrast.md +34 -24
  111. package/docs/crosshair.md +1 -1
  112. package/docs/d2.md +37 -0
  113. package/docs/dots.md +4 -1
  114. package/docs/figure.md +71 -0
  115. package/docs/frontier-primitives.md +25 -24
  116. package/docs/glyphs.md +11 -0
  117. package/docs/highlights.md +52 -0
  118. package/docs/interop/tailwind.md +148 -0
  119. package/docs/interval.md +55 -0
  120. package/docs/legends.md +3 -2
  121. package/docs/mermaid.md +6 -0
  122. package/docs/migrations/0.2-to-0.3.md +80 -0
  123. package/docs/migrations/0.3-to-0.4.md +48 -0
  124. package/docs/migrations/0.4-to-0.5.md +96 -0
  125. package/docs/migrations/0.5-to-0.6.md +82 -0
  126. package/docs/package-contract.md +44 -6
  127. package/docs/reference.md +78 -5
  128. package/docs/reporting.md +126 -60
  129. package/docs/sidenote.md +7 -1
  130. package/docs/sources.md +1 -1
  131. package/docs/stability.md +23 -5
  132. package/docs/state.md +67 -10
  133. package/docs/theming.md +12 -4
  134. package/docs/usage.md +47 -13
  135. package/docs/vega.md +4 -4
  136. package/docs/workbench.md +59 -18
  137. package/llms.txt +89 -16
  138. package/package.json +82 -6
  139. package/qwik/index.d.ts +1 -0
  140. package/qwik/index.d.ts.map +1 -1
  141. package/qwik/index.js +26 -21
  142. package/react/index.d.ts +1 -0
  143. package/react/index.d.ts.map +1 -1
  144. package/react/index.js +4 -1
  145. package/schemas/report-claims.v1.schema.json +137 -0
  146. package/solid/index.d.ts +2 -0
  147. package/solid/index.d.ts.map +1 -1
  148. package/solid/index.js +3 -0
  149. package/svelte/index.d.ts +114 -0
  150. package/svelte/index.d.ts.map +1 -0
  151. package/svelte/index.js +193 -0
  152. package/tailwind.css +87 -0
  153. package/tokens/figma.variables.json +2241 -0
  154. package/tokens/index.js +1 -1
  155. package/tokens/index.json +2 -2
  156. package/tokens/resolved.json +3 -3
  157. package/tokens/tokens.dtcg.json +1 -1
  158. package/vue/index.d.ts +116 -0
  159. package/vue/index.d.ts.map +1 -0
  160. package/vue/index.js +228 -0
@@ -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": 593,
5
- "groups": 171
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 (focus-trap is the host's)"
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 + .is-open toggling for a modal that is not a native <dialog>; needs an accessible name"
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
  }
@@ -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 (focus-trap is yours). */
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
 
@@ -911,9 +959,22 @@ export interface ValueAttrs {
911
959
  'aria-valuemax': number;
912
960
  style: { '--value': number };
913
961
  }
962
+ export interface MeterValueAttrs extends ValueAttrs {
963
+ role: 'meter';
964
+ }
965
+ export interface ProgressValueAttrs extends ValueAttrs {
966
+ role: 'progressbar';
967
+ }
968
+ export interface IndeterminateProgressAttrs {
969
+ role: 'progressbar';
970
+ 'aria-busy': 'true';
971
+ }
914
972
  export interface Attrs {
915
- meter(value: number, opts?: ValueRangeOpts): ValueAttrs;
916
- progress(value: number, opts?: ValueRangeOpts): ValueAttrs;
973
+ meter(value: number, opts?: ValueRangeOpts): MeterValueAttrs;
974
+ progress(value: number, opts?: ValueRangeOpts): ProgressValueAttrs;
975
+ progress(value?: undefined, opts?: ValueRangeOpts): IndeterminateProgressAttrs;
976
+ dotbar(value: number, opts?: ValueRangeOpts): ProgressValueAttrs;
977
+ dotbar(value?: undefined, opts?: ValueRangeOpts): IndeterminateProgressAttrs;
917
978
  }
918
979
  /** Set the painted value AND its ARIA together so they cannot drift. */
919
980
  export declare const attrs: Attrs;
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',
@@ -457,7 +467,6 @@ export const cls = Object.freeze({
457
467
  crosshairLineX: 'ui-crosshair__line--x',
458
468
  crosshairLineY: 'ui-crosshair__line--y',
459
469
  crosshairBadge: 'ui-crosshair__badge',
460
- readout: 'ui-readout',
461
470
  // selection-state vocabulary (cross-cutting — css/selection.css)
462
471
  sel: 'ui-sel',
463
472
  selOn: 'ui-sel--on',
@@ -483,6 +492,22 @@ export const cls = Object.freeze({
483
492
  srcReviewed: 'ui-src--reviewed',
484
493
  srcStale: 'ui-src--stale',
485
494
  srcConflict: 'ui-src--conflict',
495
+ // interval — low/high uncertainty span (css/interval.css)
496
+ interval: 'ui-interval',
497
+ intervalTrack: 'ui-interval__track',
498
+ intervalRange: 'ui-interval__range',
499
+ intervalPoint: 'ui-interval__point',
500
+ intervalLabel: 'ui-interval__label',
501
+ intervalBounds: 'ui-interval__bounds',
502
+ // clamp — bounded excerpt + reveal (css/clamp.css)
503
+ clamp: 'ui-clamp',
504
+ clampBody: 'ui-clamp__body',
505
+ clampToggle: 'ui-clamp__toggle',
506
+ clampControl: 'ui-clamp__control',
507
+ clampMore: 'ui-clamp__more',
508
+ clampLess: 'ui-clamp__less',
509
+ // highlights — CSS Custom Highlight API paint host (css/highlights.css)
510
+ highlights: 'ui-highlights',
486
511
  // diff — line/row change-review grammar (css/diff.css)
487
512
  diff: 'ui-diff',
488
513
  diffSplit: 'ui-diff--split',
@@ -558,6 +583,20 @@ export const cls = Object.freeze({
558
583
  stateReviewed: 'ui-state--reviewed',
559
584
  stateNeedsReview: 'ui-state--needs-review',
560
585
  syncbar: 'ui-syncbar',
586
+ job: 'ui-job',
587
+ jobHead: 'ui-job__head',
588
+ jobTitle: 'ui-job__title',
589
+ jobMeta: 'ui-job__meta',
590
+ jobBody: 'ui-job__body',
591
+ jobProgress: 'ui-job__progress',
592
+ jobBar: 'ui-job__bar',
593
+ jobActions: 'ui-job__actions',
594
+ jobCompact: 'ui-job--compact',
595
+ jobQueued: 'ui-job--queued',
596
+ jobRunning: 'ui-job--running',
597
+ jobBlocked: 'ui-job--blocked',
598
+ jobFailed: 'ui-job--failed',
599
+ jobComplete: 'ui-job--complete',
561
600
  // generated content / AI-trust surfaces (css/generated.css)
562
601
  generated: 'ui-generated',
563
602
  generatedLabel: 'ui-generated__label',
@@ -570,7 +609,7 @@ export const cls = Object.freeze({
570
609
  toolCallName: 'ui-tool-call__name',
571
610
  toolCallStatus: 'ui-tool-call__status',
572
611
  toolCallBody: 'ui-tool-call__body',
573
- // workbench — inspector / property / selection bar (css/workbench.css)
612
+ // workbench — inspector / property / selection bar / splitter (css/workbench.css)
574
613
  inspector: 'ui-inspector',
575
614
  inspectorHead: 'ui-inspector__head',
576
615
  inspectorBody: 'ui-inspector__body',
@@ -580,6 +619,11 @@ export const cls = Object.freeze({
580
619
  selectionbar: 'ui-selectionbar',
581
620
  selectionbarCount: 'ui-selectionbar__count',
582
621
  selectionbarActions: 'ui-selectionbar__actions',
622
+ splitter: 'ui-splitter',
623
+ splitterVertical: 'ui-splitter--vertical',
624
+ splitterHorizontal: 'ui-splitter--horizontal',
625
+ splitterPane: 'ui-splitter__pane',
626
+ splitterHandle: 'ui-splitter__handle',
583
627
  // command palette shell (css/command.css + initCommand)
584
628
  command: 'ui-command',
585
629
  commandInput: 'ui-command__input',
@@ -673,6 +717,15 @@ const stateTone = (state) =>
673
717
  'needs-review': cls.stateNeedsReview,
674
718
  })[state] || '';
675
719
 
720
+ const jobTone = (state) =>
721
+ ({
722
+ queued: cls.jobQueued,
723
+ running: cls.jobRunning,
724
+ blocked: cls.jobBlocked,
725
+ failed: cls.jobFailed,
726
+ complete: cls.jobComplete,
727
+ })[state] || '';
728
+
676
729
  // Trust-state → tone class, shared by the source/citation/provenance recipes.
677
730
  // Object-literal lookup to match stateTone above (shorter, greppable, one idiom).
678
731
  const srcTone = (state) =>
@@ -987,6 +1040,7 @@ export const ui = {
987
1040
  tone === 'neg' && cls.bulletMeasureNeg,
988
1041
  ),
989
1042
  state: ({ state, busy } = {}) => j(cls.state, stateTone(state), busy && cls.stateBusy),
1043
+ job: ({ state, compact } = {}) => j(cls.job, jobTone(state), compact && cls.jobCompact),
990
1044
  originLabel: ({ ai } = {}) => j(cls.originLabel, ai && cls.originLabelAi),
991
1045
  };
992
1046
 
@@ -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) 84%, #fff)`"
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",
@@ -1,9 +1,42 @@
1
- export function finite(name: any, value: any, fallback: any): any;
2
- export function dimension(name: any, value: any, fallback: any): any;
3
- export function roundNumber(value: any): number;
4
- export function fmt(value: any): string;
5
- export function point(x: any, y: any): string;
6
- export function clamp(value: any, min: any, max: any): any;
1
+ /**
2
+ * Resolve a numeric option with an optional fallback.
3
+ * @param {string} name
4
+ * @param {number | null | undefined} value
5
+ * @param {number | null | undefined} [fallback]
6
+ * @returns {number}
7
+ */
8
+ export function finite(name: string, value: number | null | undefined, fallback?: number | null | undefined): number;
9
+ /**
10
+ * Resolve a non-negative numeric option with an optional fallback.
11
+ * @param {string} name
12
+ * @param {number | null | undefined} value
13
+ * @param {number | null | undefined} [fallback]
14
+ * @returns {number}
15
+ */
16
+ export function dimension(name: string, value: number | null | undefined, fallback?: number | null | undefined): number;
17
+ /**
18
+ * @param {number} value
19
+ * @returns {number}
20
+ */
21
+ export function roundNumber(value: number): number;
22
+ /**
23
+ * @param {number} value
24
+ * @returns {string}
25
+ */
26
+ export function fmt(value: number): string;
27
+ /**
28
+ * @param {number} x
29
+ * @param {number} y
30
+ * @returns {string}
31
+ */
32
+ export function point(x: number, y: number): string;
33
+ /**
34
+ * @param {number} value
35
+ * @param {number} min
36
+ * @param {number} max
37
+ * @returns {number}
38
+ */
39
+ export function clamp(value: number, min: number, max: number): number;
7
40
  /**
8
41
  * A point on a rect's edge (or centre). `rect` is `{ x, y, width, height }`.
9
42
  * @param {Rect} rect
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAkDA,kEAIC;AAED,qEAIC;AAKD,gDAGC;AAED,wCAEC;AAED,8CAEC;AAID,2DAGC;AAED;;;;;GAKG;AACH,kCAJW,IAAI,SACJ,IAAI,GACF,KAAK,CAoBjB;AAED;;;;;GAKG;AACH,mCAJW,KAAK,MACL,KAAK,GACH,MAAM,CAOlB;AAED;;;;;GAKG;AACH,mCAJW,KAAK,MACL,KAAK,GACH,MAAM,CAOlB;AAED;;;;;;GAMG;AACH,gCALW,KAAK,MACL,KAAK,SACL;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACd,MAAM,CAgBlB;AAED;;;;;;GAMG;AACH,gCALW,KAAK,MACL,KAAK,SACL;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACpB,MAAM,CAclB;AAED;;;;GAIG;AACH,qCAHW,oBAAoB,GAClB,MAAM,CAOlB;AAED;;;;;;;;GAQG;AACH,6BAPW,KAAK,SACL,MAAM,SACN,MAAM,WACN,MAAM,GAEJ,MAAM,CAalB;AAED;;;;;GAKG;AACH,2BAJW,KAAK,WACL,MAAM,GACJ,MAAM,CAUlB;AAED;;;;;;;;;GASG;AACH,+BANW,MAAM,OACN,MAAM,SACN,MAAM,UACN,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;GAKG;AACH,oCAJW,IAAI,UACJ,IAAI,GACF;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAWpC;AAED;;;;;;;;GAQG;AACH,sCALW,KAAK,MACL,KAAK,UACL,cAAc,GACZ,MAAM,CAQlB;AAED;;;;;;GAMG;AACH,oCAHW,mBAAmB,GACjB,kBAAkB,CAW9B;AAvSD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAMH,wBAAyB,IAAI,CAAC;oBAhCjB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE;mBACxB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;mBACvD,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ;6BAC9C,UAAU,GAAG,OAAO,GAAG,OAAO;;UAG7B,KAAK;QACL,KAAK;;;;;;;;;;;;cAML,IAAI;YACJ,IAAI;;;;;;;;;;;;;;OAQJ,MAAM;UACN,KAAK;QACL,KAAK;;;;WACL,MAAM"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.js"],"names":[],"mappings":"AAkDA;;;;;;GAMG;AACH,6BALW,MAAM,SACN,MAAM,GAAG,IAAI,GAAG,SAAS,aACzB,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB,MAAM,CAMlB;AAED;;;;;;GAMG;AACH,gCALW,MAAM,SACN,MAAM,GAAG,IAAI,GAAG,SAAS,aACzB,MAAM,GAAG,IAAI,GAAG,SAAS,GACvB,MAAM,CAMlB;AAKD;;;GAGG;AACH,mCAHW,MAAM,GACJ,MAAM,CAKlB;AAED;;;GAGG;AACH,2BAHW,MAAM,GACJ,MAAM,CAIlB;AAED;;;;GAIG;AACH,yBAJW,MAAM,KACN,MAAM,GACJ,MAAM,CAIlB;AAID;;;;;GAKG;AACH,6BALW,MAAM,OACN,MAAM,OACN,MAAM,GACJ,MAAM,CAKlB;AAqBD;;;;;GAKG;AACH,kCAJW,IAAI,SACJ,IAAI,GACF,KAAK,CAoBjB;AAED;;;;;GAKG;AACH,mCAJW,KAAK,MACL,KAAK,GACH,MAAM,CAOlB;AAED;;;;;GAKG;AACH,mCAJW,KAAK,MACL,KAAK,GACH,MAAM,CAOlB;AAED;;;;;;GAMG;AACH,gCALW,KAAK,MACL,KAAK,SACL;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GACd,MAAM,CAgBlB;AAED;;;;;;GAMG;AACH,gCALW,KAAK,MACL,KAAK,SACL;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAE,GACpB,MAAM,CAclB;AAED;;;;GAIG;AACH,qCAHW,oBAAoB,GAClB,MAAM,CAQlB;AAED;;;;;;;;GAQG;AACH,6BAPW,KAAK,SACL,MAAM,SACN,MAAM,WACN,MAAM,GAEJ,MAAM,CAalB;AAED;;;;;GAKG;AACH,2BAJW,KAAK,WACL,MAAM,GACJ,MAAM,CAUlB;AAED;;;;;;;;;GASG;AACH,+BANW,MAAM,OACN,MAAM,SACN,MAAM,UACN,MAAM,GACJ,MAAM,CAIlB;AAED;;;;;GAKG;AACH,oCAJW,IAAI,UACJ,IAAI,GACF;IAAE,IAAI,EAAE,IAAI,CAAC;IAAC,EAAE,EAAE,IAAI,CAAA;CAAE,CAWpC;AAED;;;;;;;;GAQG;AACH,sCALW,KAAK,MACL,KAAK,UACL,cAAc,GACZ,MAAM,CASlB;AAED;;;;;;GAMG;AACH,oCAHW,mBAAmB,GACjB,kBAAkB,CAe9B;AAjWD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAMH,wBAAyB,IAAI,CAAC;oBAhCjB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE;mBACxB;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE;mBACvD,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,GAAG,QAAQ;6BAC9C,UAAU,GAAG,OAAO,GAAG,OAAO;;UAG7B,KAAK;QACL,KAAK;;;;;;;;;;;;cAML,IAAI;YACJ,IAAI;;;;;;;;;;;;;;OAQJ,MAAM;UACN,KAAK;QACL,KAAK;;;;WACL,MAAM"}