nirs4all-ui 0.1.14 → 0.1.16

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 (313) hide show
  1. package/README.md +9 -1
  2. package/assets/qualification.css +37 -0
  3. package/assets/workbench.css +1482 -0
  4. package/dist/chains/NodeEffectForest.d.ts.map +1 -1
  5. package/dist/chains/NodeEffectForest.js +5 -1
  6. package/dist/chains/NodeEffectForest.js.map +1 -1
  7. package/dist/chains/contract.d.ts.map +1 -1
  8. package/dist/chains/contract.js +10 -5
  9. package/dist/chains/contract.js.map +1 -1
  10. package/dist/datasetBuilder/exportConfig.d.ts.map +1 -1
  11. package/dist/datasetBuilder/exportConfig.js +1 -7
  12. package/dist/datasetBuilder/exportConfig.js.map +1 -1
  13. package/dist/index.d.ts +4 -0
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +4 -0
  16. package/dist/index.js.map +1 -1
  17. package/dist/inspector/ChainList.d.ts +36 -0
  18. package/dist/inspector/ChainList.d.ts.map +1 -0
  19. package/dist/inspector/ChainList.js +89 -0
  20. package/dist/inspector/ChainList.js.map +1 -0
  21. package/dist/inspector/Inspector.d.ts +62 -0
  22. package/dist/inspector/Inspector.d.ts.map +1 -0
  23. package/dist/inspector/Inspector.js +640 -0
  24. package/dist/inspector/Inspector.js.map +1 -0
  25. package/dist/inspector/analysis.d.ts +100 -0
  26. package/dist/inspector/analysis.d.ts.map +1 -0
  27. package/dist/inspector/analysis.js +297 -0
  28. package/dist/inspector/analysis.js.map +1 -0
  29. package/dist/inspector/index.d.ts +30 -0
  30. package/dist/inspector/index.d.ts.map +1 -0
  31. package/dist/inspector/index.js +30 -0
  32. package/dist/inspector/index.js.map +1 -0
  33. package/dist/inspector/insights.d.ts +206 -0
  34. package/dist/inspector/insights.d.ts.map +1 -0
  35. package/dist/inspector/insights.js +404 -0
  36. package/dist/inspector/insights.js.map +1 -0
  37. package/dist/inspector/locale.d.ts +185 -0
  38. package/dist/inspector/locale.d.ts.map +1 -0
  39. package/dist/inspector/locale.js +403 -0
  40. package/dist/inspector/locale.js.map +1 -0
  41. package/dist/inspector/rankingViews.d.ts +25 -0
  42. package/dist/inspector/rankingViews.d.ts.map +1 -0
  43. package/dist/inspector/rankingViews.js +157 -0
  44. package/dist/inspector/rankingViews.js.map +1 -0
  45. package/dist/inspector/stepViews.d.ts +26 -0
  46. package/dist/inspector/stepViews.d.ts.map +1 -0
  47. package/dist/inspector/stepViews.js +93 -0
  48. package/dist/inspector/stepViews.js.map +1 -0
  49. package/dist/inspector/types.d.ts +66 -0
  50. package/dist/inspector/types.d.ts.map +1 -0
  51. package/dist/inspector/types.js +10 -0
  52. package/dist/inspector/types.js.map +1 -0
  53. package/dist/inspector/views.d.ts +133 -0
  54. package/dist/inspector/views.d.ts.map +1 -0
  55. package/dist/inspector/views.js +406 -0
  56. package/dist/inspector/views.js.map +1 -0
  57. package/dist/playground/OperatorPicker.d.ts +31 -0
  58. package/dist/playground/OperatorPicker.d.ts.map +1 -0
  59. package/dist/playground/OperatorPicker.js +145 -0
  60. package/dist/playground/OperatorPicker.js.map +1 -0
  61. package/dist/playground/ParamEditor.d.ts +10 -0
  62. package/dist/playground/ParamEditor.d.ts.map +1 -0
  63. package/dist/playground/ParamEditor.js +31 -0
  64. package/dist/playground/ParamEditor.js.map +1 -0
  65. package/dist/playground/PipelinePanel.d.ts +56 -0
  66. package/dist/playground/PipelinePanel.d.ts.map +1 -0
  67. package/dist/playground/PipelinePanel.js +72 -0
  68. package/dist/playground/PipelinePanel.js.map +1 -0
  69. package/dist/playground/Playground.d.ts +65 -0
  70. package/dist/playground/Playground.d.ts.map +1 -0
  71. package/dist/playground/Playground.js +578 -0
  72. package/dist/playground/Playground.js.map +1 -0
  73. package/dist/playground/index.d.ts +24 -0
  74. package/dist/playground/index.d.ts.map +1 -0
  75. package/dist/playground/index.js +24 -0
  76. package/dist/playground/index.js.map +1 -0
  77. package/dist/playground/locale.d.ts +183 -0
  78. package/dist/playground/locale.d.ts.map +1 -0
  79. package/dist/playground/locale.js +355 -0
  80. package/dist/playground/locale.js.map +1 -0
  81. package/dist/playground/model.d.ts +50 -0
  82. package/dist/playground/model.d.ts.map +1 -0
  83. package/dist/playground/model.js +203 -0
  84. package/dist/playground/model.js.map +1 -0
  85. package/dist/playground/pipeline.d.ts +41 -0
  86. package/dist/playground/pipeline.d.ts.map +1 -0
  87. package/dist/playground/pipeline.js +142 -0
  88. package/dist/playground/pipeline.js.map +1 -0
  89. package/dist/playground/types.d.ts +214 -0
  90. package/dist/playground/types.d.ts.map +1 -0
  91. package/dist/playground/types.js +12 -0
  92. package/dist/playground/types.js.map +1 -0
  93. package/dist/playground/views.d.ts +233 -0
  94. package/dist/playground/views.d.ts.map +1 -0
  95. package/dist/playground/views.js +866 -0
  96. package/dist/playground/views.js.map +1 -0
  97. package/dist/qualification/AvailabilitySummary.d.ts +10 -0
  98. package/dist/qualification/AvailabilitySummary.d.ts.map +1 -0
  99. package/dist/qualification/AvailabilitySummary.js +23 -0
  100. package/dist/qualification/AvailabilitySummary.js.map +1 -0
  101. package/dist/qualification/Badges.d.ts +22 -0
  102. package/dist/qualification/Badges.d.ts.map +1 -0
  103. package/dist/qualification/Badges.js +19 -0
  104. package/dist/qualification/Badges.js.map +1 -0
  105. package/dist/qualification/CapabilityTable.d.ts +9 -0
  106. package/dist/qualification/CapabilityTable.d.ts.map +1 -0
  107. package/dist/qualification/CapabilityTable.js +9 -0
  108. package/dist/qualification/CapabilityTable.js.map +1 -0
  109. package/dist/qualification/ChartDataTable.d.ts +13 -0
  110. package/dist/qualification/ChartDataTable.d.ts.map +1 -0
  111. package/dist/qualification/ChartDataTable.js +9 -0
  112. package/dist/qualification/ChartDataTable.js.map +1 -0
  113. package/dist/qualification/EvidenceTable.d.ts +12 -0
  114. package/dist/qualification/EvidenceTable.d.ts.map +1 -0
  115. package/dist/qualification/EvidenceTable.js +13 -0
  116. package/dist/qualification/EvidenceTable.js.map +1 -0
  117. package/dist/qualification/FindingList.d.ts +10 -0
  118. package/dist/qualification/FindingList.d.ts.map +1 -0
  119. package/dist/qualification/FindingList.js +12 -0
  120. package/dist/qualification/FindingList.js.map +1 -0
  121. package/dist/qualification/QualificationOverview.d.ts +10 -0
  122. package/dist/qualification/QualificationOverview.d.ts.map +1 -0
  123. package/dist/qualification/QualificationOverview.js +12 -0
  124. package/dist/qualification/QualificationOverview.js.map +1 -0
  125. package/dist/qualification/_cx.d.ts +2 -0
  126. package/dist/qualification/_cx.d.ts.map +1 -0
  127. package/dist/qualification/_cx.js +6 -0
  128. package/dist/qualification/_cx.js.map +1 -0
  129. package/dist/qualification/index.d.ts +23 -0
  130. package/dist/qualification/index.d.ts.map +1 -0
  131. package/dist/qualification/index.js +23 -0
  132. package/dist/qualification/index.js.map +1 -0
  133. package/dist/qualification/locale.d.ts +130 -0
  134. package/dist/qualification/locale.d.ts.map +1 -0
  135. package/dist/qualification/locale.js +71 -0
  136. package/dist/qualification/locale.js.map +1 -0
  137. package/dist/qualification/report.d.ts +22 -0
  138. package/dist/qualification/report.d.ts.map +1 -0
  139. package/dist/qualification/report.js +109 -0
  140. package/dist/qualification/report.js.map +1 -0
  141. package/dist/qualification/types.d.ts +118 -0
  142. package/dist/qualification/types.d.ts.map +1 -0
  143. package/dist/qualification/types.js +14 -0
  144. package/dist/qualification/types.js.map +1 -0
  145. package/dist/styles/index.d.ts +13 -1
  146. package/dist/styles/index.d.ts.map +1 -1
  147. package/dist/styles/index.js +12 -0
  148. package/dist/styles/index.js.map +1 -1
  149. package/dist/viz/BiasVarianceBars.d.ts +3 -1
  150. package/dist/viz/BiasVarianceBars.d.ts.map +1 -1
  151. package/dist/viz/BiasVarianceBars.js +19 -7
  152. package/dist/viz/BiasVarianceBars.js.map +1 -1
  153. package/dist/viz/BoxPlot.d.ts +3 -1
  154. package/dist/viz/BoxPlot.d.ts.map +1 -1
  155. package/dist/viz/BoxPlot.js +15 -2
  156. package/dist/viz/BoxPlot.js.map +1 -1
  157. package/dist/viz/ConformalIntervalStrip.d.ts +4 -2
  158. package/dist/viz/ConformalIntervalStrip.d.ts.map +1 -1
  159. package/dist/viz/ConformalIntervalStrip.js +25 -5
  160. package/dist/viz/ConformalIntervalStrip.js.map +1 -1
  161. package/dist/viz/ConfusionMatrix.d.ts +3 -1
  162. package/dist/viz/ConfusionMatrix.d.ts.map +1 -1
  163. package/dist/viz/ConfusionMatrix.js +28 -7
  164. package/dist/viz/ConfusionMatrix.js.map +1 -1
  165. package/dist/viz/FeatureImportanceBar.d.ts +3 -1
  166. package/dist/viz/FeatureImportanceBar.d.ts.map +1 -1
  167. package/dist/viz/FeatureImportanceBar.js +10 -3
  168. package/dist/viz/FeatureImportanceBar.js.map +1 -1
  169. package/dist/viz/FoldStabilityLines.d.ts +3 -1
  170. package/dist/viz/FoldStabilityLines.d.ts.map +1 -1
  171. package/dist/viz/FoldStabilityLines.js +14 -2
  172. package/dist/viz/FoldStabilityLines.js.map +1 -1
  173. package/dist/viz/Histogram.d.ts +3 -1
  174. package/dist/viz/Histogram.d.ts.map +1 -1
  175. package/dist/viz/Histogram.js +15 -3
  176. package/dist/viz/Histogram.js.map +1 -1
  177. package/dist/viz/PcaScatter.d.ts +3 -1
  178. package/dist/viz/PcaScatter.d.ts.map +1 -1
  179. package/dist/viz/PcaScatter.js +30 -6
  180. package/dist/viz/PcaScatter.js.map +1 -1
  181. package/dist/viz/PipelineFlow.d.ts +3 -1
  182. package/dist/viz/PipelineFlow.d.ts.map +1 -1
  183. package/dist/viz/PipelineFlow.js +8 -2
  184. package/dist/viz/PipelineFlow.js.map +1 -1
  185. package/dist/viz/PredictionScatter.d.ts +4 -2
  186. package/dist/viz/PredictionScatter.d.ts.map +1 -1
  187. package/dist/viz/PredictionScatter.js +25 -4
  188. package/dist/viz/PredictionScatter.js.map +1 -1
  189. package/dist/viz/ResidualPlot.d.ts +3 -1
  190. package/dist/viz/ResidualPlot.d.ts.map +1 -1
  191. package/dist/viz/ResidualPlot.js +18 -3
  192. package/dist/viz/ResidualPlot.js.map +1 -1
  193. package/dist/viz/ScoreHeatmap.d.ts +3 -1
  194. package/dist/viz/ScoreHeatmap.d.ts.map +1 -1
  195. package/dist/viz/ScoreHeatmap.js +23 -2
  196. package/dist/viz/ScoreHeatmap.js.map +1 -1
  197. package/dist/viz/ScoreSummary.d.ts +3 -1
  198. package/dist/viz/ScoreSummary.d.ts.map +1 -1
  199. package/dist/viz/ScoreSummary.js +8 -2
  200. package/dist/viz/ScoreSummary.js.map +1 -1
  201. package/dist/viz/ShapBeeswarm.d.ts +3 -1
  202. package/dist/viz/ShapBeeswarm.d.ts.map +1 -1
  203. package/dist/viz/ShapBeeswarm.js +20 -4
  204. package/dist/viz/ShapBeeswarm.js.map +1 -1
  205. package/dist/viz/SpectraPlot.d.ts +4 -2
  206. package/dist/viz/SpectraPlot.d.ts.map +1 -1
  207. package/dist/viz/SpectraPlot.js +27 -7
  208. package/dist/viz/SpectraPlot.js.map +1 -1
  209. package/dist/viz/WaterfallChart.d.ts +3 -1
  210. package/dist/viz/WaterfallChart.d.ts.map +1 -1
  211. package/dist/viz/WaterfallChart.js +18 -6
  212. package/dist/viz/WaterfallChart.js.map +1 -1
  213. package/dist/viz/description.d.ts +9 -0
  214. package/dist/viz/description.d.ts.map +1 -0
  215. package/dist/viz/description.js +25 -0
  216. package/dist/viz/description.js.map +1 -0
  217. package/dist/viz/index.d.ts +3 -1
  218. package/dist/viz/index.d.ts.map +1 -1
  219. package/dist/viz/index.js +3 -1
  220. package/dist/viz/index.js.map +1 -1
  221. package/dist/workbench/CanvasPlot.d.ts +84 -0
  222. package/dist/workbench/CanvasPlot.d.ts.map +1 -0
  223. package/dist/workbench/CanvasPlot.js +209 -0
  224. package/dist/workbench/CanvasPlot.js.map +1 -0
  225. package/dist/workbench/ColorLegend.d.ts +20 -0
  226. package/dist/workbench/ColorLegend.d.ts.map +1 -0
  227. package/dist/workbench/ColorLegend.js +20 -0
  228. package/dist/workbench/ColorLegend.js.map +1 -0
  229. package/dist/workbench/ColorSchemePicker.d.ts +27 -0
  230. package/dist/workbench/ColorSchemePicker.d.ts.map +1 -0
  231. package/dist/workbench/ColorSchemePicker.js +44 -0
  232. package/dist/workbench/ColorSchemePicker.js.map +1 -0
  233. package/dist/workbench/DistributionView.d.ts +40 -0
  234. package/dist/workbench/DistributionView.d.ts.map +1 -0
  235. package/dist/workbench/DistributionView.js +189 -0
  236. package/dist/workbench/DistributionView.js.map +1 -0
  237. package/dist/workbench/ProfileView.d.ts +50 -0
  238. package/dist/workbench/ProfileView.d.ts.map +1 -0
  239. package/dist/workbench/ProfileView.js +136 -0
  240. package/dist/workbench/ProfileView.js.map +1 -0
  241. package/dist/workbench/Scatter3DView.d.ts +39 -0
  242. package/dist/workbench/Scatter3DView.d.ts.map +1 -0
  243. package/dist/workbench/Scatter3DView.js +350 -0
  244. package/dist/workbench/Scatter3DView.js.map +1 -0
  245. package/dist/workbench/ScatterView.d.ts +112 -0
  246. package/dist/workbench/ScatterView.d.ts.map +1 -0
  247. package/dist/workbench/ScatterView.js +195 -0
  248. package/dist/workbench/ScatterView.js.map +1 -0
  249. package/dist/workbench/SpectraView.d.ts +84 -0
  250. package/dist/workbench/SpectraView.d.ts.map +1 -0
  251. package/dist/workbench/SpectraView.js +461 -0
  252. package/dist/workbench/SpectraView.js.map +1 -0
  253. package/dist/workbench/VirtualTable.d.ts +36 -0
  254. package/dist/workbench/VirtualTable.d.ts.map +1 -0
  255. package/dist/workbench/VirtualTable.js +48 -0
  256. package/dist/workbench/VirtualTable.js.map +1 -0
  257. package/dist/workbench/_cx.d.ts +2 -0
  258. package/dist/workbench/_cx.d.ts.map +1 -0
  259. package/dist/workbench/_cx.js +6 -0
  260. package/dist/workbench/_cx.js.map +1 -0
  261. package/dist/workbench/colorBy.d.ts +123 -0
  262. package/dist/workbench/colorBy.d.ts.map +1 -0
  263. package/dist/workbench/colorBy.js +215 -0
  264. package/dist/workbench/colorBy.js.map +1 -0
  265. package/dist/workbench/controls.d.ts +120 -0
  266. package/dist/workbench/controls.d.ts.map +1 -0
  267. package/dist/workbench/controls.js +129 -0
  268. package/dist/workbench/controls.js.map +1 -0
  269. package/dist/workbench/format.d.ts +7 -0
  270. package/dist/workbench/format.d.ts.map +1 -0
  271. package/dist/workbench/format.js +45 -0
  272. package/dist/workbench/format.js.map +1 -0
  273. package/dist/workbench/hooks.d.ts +21 -0
  274. package/dist/workbench/hooks.d.ts.map +1 -0
  275. package/dist/workbench/hooks.js +89 -0
  276. package/dist/workbench/hooks.js.map +1 -0
  277. package/dist/workbench/icons.d.ts +11 -0
  278. package/dist/workbench/icons.d.ts.map +1 -0
  279. package/dist/workbench/icons.js +61 -0
  280. package/dist/workbench/icons.js.map +1 -0
  281. package/dist/workbench/index.d.ts +39 -0
  282. package/dist/workbench/index.d.ts.map +1 -0
  283. package/dist/workbench/index.js +42 -0
  284. package/dist/workbench/index.js.map +1 -0
  285. package/dist/workbench/layout.d.ts +108 -0
  286. package/dist/workbench/layout.d.ts.map +1 -0
  287. package/dist/workbench/layout.js +132 -0
  288. package/dist/workbench/layout.js.map +1 -0
  289. package/dist/workbench/matrix.d.ts +47 -0
  290. package/dist/workbench/matrix.d.ts.map +1 -0
  291. package/dist/workbench/matrix.js +168 -0
  292. package/dist/workbench/matrix.js.map +1 -0
  293. package/dist/workbench/projection3d.d.ts +82 -0
  294. package/dist/workbench/projection3d.d.ts.map +1 -0
  295. package/dist/workbench/projection3d.js +127 -0
  296. package/dist/workbench/projection3d.js.map +1 -0
  297. package/dist/workbench/sampling.d.ts +20 -0
  298. package/dist/workbench/sampling.d.ts.map +1 -0
  299. package/dist/workbench/sampling.js +118 -0
  300. package/dist/workbench/sampling.js.map +1 -0
  301. package/dist/workbench/selection.d.ts +49 -0
  302. package/dist/workbench/selection.d.ts.map +1 -0
  303. package/dist/workbench/selection.js +99 -0
  304. package/dist/workbench/selection.js.map +1 -0
  305. package/dist/workbench/shortcuts.d.ts +27 -0
  306. package/dist/workbench/shortcuts.d.ts.map +1 -0
  307. package/dist/workbench/shortcuts.js +60 -0
  308. package/dist/workbench/shortcuts.js.map +1 -0
  309. package/dist/workbench/spatial.d.ts +44 -0
  310. package/dist/workbench/spatial.d.ts.map +1 -0
  311. package/dist/workbench/spatial.js +155 -0
  312. package/dist/workbench/spatial.js.map +1 -0
  313. package/package.json +18 -2
package/README.md CHANGED
@@ -25,8 +25,12 @@ spectra motion asset.
25
25
  | `tuning` | `nirs4all-ui/tuning` | Validation and pure view-model projection for native nirs4all `TuningResult.to_dict()` payloads, lightweight `TuningResult.summary_artifact()` / `nirs4all.tuning.summary` cards, and pre-execution `nirs4all.tuning.ordered_search_space` artifacts for Studio/Web forms without optimizer logic. |
26
26
  | `dataset` | `nirs4all-ui/dataset` | Dataset preview contracts, counts, split summaries, spectral ranges, task labels, badges, and stats. |
27
27
  | `components` | `nirs4all-ui/components` | Stateless React components that render shared runtime, diagnostic, and metric affordances. |
28
+ | `viz` | `nirs4all-ui/viz` | Dependency-free scientific SVG charts. Each chart provides a data-derived accessible description and accepts a `description` override for localized or domain-specific wording. Hosts supply computed values and retain analysis/execution. |
28
29
  | `dag` | `nirs4all-ui/dag` | Interactive compiled-DAG explorer (layered layout, pan/zoom, culling/LOD, collapsible clusters) plus the pure engine and a `fromCompiledGraph` adapter for a serialized DAG-ML graph/plan. |
29
30
  | `chains` | `nirs4all-ui/chains` | Chain-effect explorer over a corpus of scored pipelines: per-node influence ranking, position (early/mid/late) and predecessor×successor order effects, and with/without distribution shift, with per-dataset rank/z normalization. Pure engine + charts + interactive explorer, plus a `parseChainEffectAnalysis` adapter for the serialized `dag-ml` artifact. |
31
+ | `workbench` | `nirs4all-ui/workbench` | Shared interactive-analysis kit behind the capsules: selection algebra (click / box / lasso, Shift add · Alt subtract · Ctrl toggle), color-by resolution, canvas views (`SpectraView` lines / bands / density, `ScatterView`, `DistributionView`, `ProfileView`) on a layered `CanvasPlot`, view grid with layout presets, panel chrome, virtual table, capsule-scoped shortcuts. |
32
+ | `playground` | `nirs4all-ui/playground` | The **Playground capsule**: dataset exploration and live operator chains (pipeline timeline with preview cursor, operator picker, linked spectra / scores / target / T²–Q / loadings / r(λ) / folds / replicates / samples views, selection drawer). The host executes `PlaygroundRunRequest`s and returns `PlaygroundResult`s. |
33
+ | `inspector` | `nirs4all-ui/inspector` | The **Inspector capsule**: rank and dissect trained chains (leaderboard with ☆ compare, score landscape, pivot heatmap, generalization, hyper-parameters, step effects, parity, residuals, fold stability, confusion, hard samples, chain details with step diff). The host supplies chains, score references and on-demand predictions. |
30
34
  | `lab` | `nirs4all-ui/lab` | Quality/lab decision, sample lifecycle, health, model report, worklist, and budget display contracts plus presentational components. |
31
35
  | `datasetBuilder` | `nirs4all-ui/datasetBuilder` | Multisource dataset-builder wizard components and pure dataset-config helpers. |
32
36
  | `brand` | `nirs4all-ui/brand` | Ecosystem brand definitions, stable asset paths, palettes, and deterministic SVG generators. |
@@ -36,7 +40,7 @@ spectra motion asset.
36
40
  The root export also exposes namespace barrels:
37
41
 
38
42
  ```ts
39
- import { brand, chains, conformal, dag, dataset, datasetBuilder, keywordRegistry, lab, nodeRegistry, robustness, runtime, score, styles, tuning } from "nirs4all-ui";
43
+ import { brand, chains, conformal, dag, inspector, playground, workbench, dataset, datasetBuilder, keywordRegistry, lab, nodeRegistry, robustness, runtime, score, styles, tuning } from "nirs4all-ui";
40
44
  ```
41
45
 
42
46
  Prefer domain imports when a consumer only needs one area:
@@ -51,6 +55,9 @@ import { createKeywordRegistryFieldViews, createKeywordRegistryWorkspacePredicti
51
55
  import { projectN4mManifest } from "nirs4all-ui/nodeRegistry";
52
56
  import { createTuningSearchSpacePreview, createTuningStudySummary, createTuningSummaryCard, createTuningTrialRows, parseOrderedTuningSearchSpaceArtifact, parseTuningResultArtifact, parseTuningSummaryArtifact } from "nirs4all-ui/tuning";
53
57
  import { DatasetBuilder } from "nirs4all-ui/datasetBuilder";
58
+ import { Playground } from "nirs4all-ui/playground";
59
+ import { Inspector } from "nirs4all-ui/inspector";
60
+ import { SpectraView, ScatterView, combineSelection } from "nirs4all-ui/workbench";
54
61
  import { DagGraphView, fromCompiledGraph } from "nirs4all-ui/dag";
55
62
  import { ChainExplorer, fromScoredChains, parseChainEffectAnalysis } from "nirs4all-ui/chains";
56
63
  import { DecisionBadge } from "nirs4all-ui/lab";
@@ -70,6 +77,7 @@ Static assets are published through the existing `nirs4all-ui/assets/*` export:
70
77
  ```css
71
78
  @import "nirs4all-ui/assets/styles/nirs4all-default.css";
72
79
  @import "nirs4all-ui/assets/datasetBuilder.css";
80
+ @import "nirs4all-ui/assets/workbench.css";
73
81
  @import "nirs4all-ui/assets/theme.css";
74
82
  ```
75
83
 
@@ -0,0 +1,37 @@
1
+ /* nirs4all-ui qualification domain. Variables fall back to the shared teal/red brand. */
2
+ .n4q-badge{display:inline-flex;align-items:center;gap:.4em;padding:.15em .6em;border-radius:999px;font-size:.78rem;font-weight:600;border:1px solid currentColor;background:var(--n4q-badge-bg,transparent);white-space:nowrap}
3
+ .n4q-reason{font-weight:400;font-size:.72rem;opacity:.85}
4
+ .n4q-profile-exploratory{color:#b45309}.n4q-profile-partial{color:#0f766e}.n4q-profile-complete{color:#047857}
5
+ .n4q-avail-computed{color:#047857}.n4q-avail-not_applicable,.n4q-avail-undefined{color:#475569}
6
+ .n4q-avail-insufficient_data,.n4q-avail-unsupported,.n4q-avail-not_identifiable{color:#b45309}
7
+ .n4q-avail-cancelled{color:#6d28d9}.n4q-avail-error{color:#b91c1c}
8
+ .n4q-conf-unknown{color:#475569}.n4q-conf-low{color:#b45309}.n4q-conf-medium{color:#0f766e}.n4q-conf-high{color:#047857}
9
+ .n4q-sev-info{color:#0f766e}.n4q-sev-warning{color:#b45309}.n4q-sev-high{color:#b91c1c}.n4q-sev-blocking{color:#7f1d1d}
10
+ .n4q-table-wrap{overflow-x:auto;max-width:100%}
11
+ .n4q-table-wrap:focus-visible,.n4q-datatable summary:focus-visible{outline:2px solid var(--n4q-focus,#058e96);outline-offset:2px}
12
+ .n4q-table{width:100%;border-collapse:collapse;font-size:.88rem}
13
+ .n4q-table caption{text-align:left;font-weight:600;padding:.4rem 0}
14
+ .n4q-table th,.n4q-table td{padding:.45rem .6rem;border-bottom:1px solid var(--n4q-line,rgba(100,116,139,.3));text-align:left;vertical-align:top}
15
+ .n4q-table thead th{font-size:.76rem;text-transform:uppercase;letter-spacing:.04em}
16
+ .n4q-table-compact th,.n4q-table-compact td{padding:.25rem .5rem}
17
+ .n4q-num{text-align:right;font-variant-numeric:tabular-nums}
18
+ .n4q-sub{display:block;font-size:.76rem;opacity:.75}
19
+ .n4q-null{opacity:.7;font-style:italic}
20
+ .n4q-unit{opacity:.75}
21
+ .n4q-findings{list-style:none;margin:0;padding:0;display:grid;gap:.6rem}
22
+ .n4q-finding{border:1px solid var(--n4q-line,rgba(100,116,139,.3));border-left-width:4px;border-radius:8px;padding:.6rem .8rem}
23
+ .n4q-finding[data-severity=blocking]{border-left-color:#7f1d1d}.n4q-finding[data-severity=high]{border-left-color:#b91c1c}.n4q-finding[data-severity=warning]{border-left-color:#b45309}.n4q-finding[data-severity=info]{border-left-color:#058e96}
24
+ .n4q-finding-head{display:flex;flex-wrap:wrap;gap:.4rem;align-items:center}
25
+ .n4q-finding p{margin:.35rem 0 0}
26
+ .n4q-empty{opacity:.8}
27
+ .n4q-overview{display:grid;gap:.8rem}
28
+ .n4q-overview-head{display:flex;flex-wrap:wrap;gap:.6rem;align-items:center}.n4q-overview-head p{margin:0}
29
+ .n4q-provenance{display:grid;grid-template-columns:max-content 1fr;gap:.2rem .8rem;margin:0;font-size:.85rem}.n4q-provenance dt{opacity:.75}.n4q-provenance dd{margin:0}
30
+ .n4q-summary{margin:0;display:grid;gap:.5rem}
31
+ .n4q-bar{width:100%;height:14px;border-radius:7px;overflow:hidden;background:rgba(100,116,139,.15)}
32
+ .n4q-swatch{display:inline-block;width:.8em;height:.8em;margin-right:.5em;border-radius:2px;vertical-align:baseline}
33
+ .n4q-fill-computed{fill:#059669;background:#059669}.n4q-fill-not_applicable{fill:#94a3b8;background:#94a3b8}
34
+ .n4q-fill-insufficient_data{fill:#d97706;background:#d97706}.n4q-fill-unsupported{fill:#b45309;background:#b45309}
35
+ .n4q-fill-not_identifiable{fill:#0891b2;background:#0891b2}.n4q-fill-undefined{fill:#64748b;background:#64748b}
36
+ .n4q-fill-cancelled{fill:#7c3aed;background:#7c3aed}.n4q-fill-error{fill:#dc2626;background:#dc2626}
37
+ .n4q-datatable summary{cursor:pointer;font-size:.85rem}