nirs4all-ui 0.1.12 → 0.1.13

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 (521) hide show
  1. package/README.md +39 -1
  2. package/assets/brands/README.md +28 -8
  3. package/assets/brands/dag-ml/favicon.ico +0 -0
  4. package/assets/brands/dag-ml/horizontal-dark.svg +5 -0
  5. package/assets/brands/dag-ml/horizontal.png +0 -0
  6. package/assets/brands/dag-ml/horizontal.svg +5 -0
  7. package/assets/brands/dag-ml/icon-180.png +0 -0
  8. package/assets/brands/dag-ml/icon-256.png +0 -0
  9. package/assets/brands/dag-ml/icon-32.png +0 -0
  10. package/assets/brands/dag-ml/icon-512.png +0 -0
  11. package/assets/brands/dag-ml/icon.svg +3 -0
  12. package/assets/brands/dag-ml/og.png +0 -0
  13. package/assets/brands/dag-ml/stacked-dark.svg +5 -0
  14. package/assets/brands/dag-ml/stacked.png +0 -0
  15. package/assets/brands/dag-ml/stacked.svg +5 -0
  16. package/assets/brands/dag-ml-data/favicon.ico +0 -0
  17. package/assets/brands/dag-ml-data/horizontal-dark.svg +6 -0
  18. package/assets/brands/dag-ml-data/horizontal.png +0 -0
  19. package/assets/brands/dag-ml-data/horizontal.svg +6 -0
  20. package/assets/brands/dag-ml-data/icon-180.png +0 -0
  21. package/assets/brands/dag-ml-data/icon-256.png +0 -0
  22. package/assets/brands/dag-ml-data/icon-32.png +0 -0
  23. package/assets/brands/dag-ml-data/icon-512.png +0 -0
  24. package/assets/brands/dag-ml-data/icon.svg +3 -0
  25. package/assets/brands/dag-ml-data/og.png +0 -0
  26. package/assets/brands/dag-ml-data/stacked-dark.svg +6 -0
  27. package/assets/brands/dag-ml-data/stacked.png +0 -0
  28. package/assets/brands/dag-ml-data/stacked.svg +6 -0
  29. package/assets/brands/nirs4all/favicon.ico +0 -0
  30. package/assets/brands/nirs4all/horizontal-dark.svg +36 -0
  31. package/assets/brands/nirs4all/horizontal.png +0 -0
  32. package/assets/brands/nirs4all/horizontal.svg +35 -11
  33. package/assets/brands/nirs4all/icon-180.png +0 -0
  34. package/assets/brands/nirs4all/icon-256.png +0 -0
  35. package/assets/brands/nirs4all/icon-32.png +0 -0
  36. package/assets/brands/nirs4all/icon-512.png +0 -0
  37. package/assets/brands/nirs4all/icon.svg +32 -7
  38. package/assets/brands/nirs4all/og.png +0 -0
  39. package/assets/brands/nirs4all/stacked-dark.svg +36 -0
  40. package/assets/brands/nirs4all/stacked.png +0 -0
  41. package/assets/brands/nirs4all/stacked.svg +35 -11
  42. package/assets/brands/nirs4all-benchmarks/favicon.ico +0 -0
  43. package/assets/brands/nirs4all-benchmarks/horizontal-dark.svg +37 -0
  44. package/assets/brands/nirs4all-benchmarks/horizontal.png +0 -0
  45. package/assets/brands/nirs4all-benchmarks/horizontal.svg +37 -0
  46. package/assets/brands/nirs4all-benchmarks/icon-180.png +0 -0
  47. package/assets/brands/nirs4all-benchmarks/icon-256.png +0 -0
  48. package/assets/brands/nirs4all-benchmarks/icon-32.png +0 -0
  49. package/assets/brands/nirs4all-benchmarks/icon-512.png +0 -0
  50. package/assets/brands/nirs4all-benchmarks/icon.svg +33 -0
  51. package/assets/brands/nirs4all-benchmarks/og.png +0 -0
  52. package/assets/brands/nirs4all-benchmarks/stacked-dark.svg +36 -0
  53. package/assets/brands/nirs4all-benchmarks/stacked.png +0 -0
  54. package/assets/brands/nirs4all-benchmarks/stacked.svg +36 -0
  55. package/assets/brands/nirs4all-cluster/favicon.ico +0 -0
  56. package/assets/brands/nirs4all-cluster/horizontal-dark.svg +37 -0
  57. package/assets/brands/nirs4all-cluster/horizontal.png +0 -0
  58. package/assets/brands/nirs4all-cluster/horizontal.svg +37 -0
  59. package/assets/brands/nirs4all-cluster/icon-180.png +0 -0
  60. package/assets/brands/nirs4all-cluster/icon-256.png +0 -0
  61. package/assets/brands/nirs4all-cluster/icon-32.png +0 -0
  62. package/assets/brands/nirs4all-cluster/icon-512.png +0 -0
  63. package/assets/brands/nirs4all-cluster/icon.svg +33 -0
  64. package/assets/brands/nirs4all-cluster/og.png +0 -0
  65. package/assets/brands/nirs4all-cluster/stacked-dark.svg +36 -0
  66. package/assets/brands/nirs4all-cluster/stacked.png +0 -0
  67. package/assets/brands/nirs4all-cluster/stacked.svg +36 -0
  68. package/assets/brands/nirs4all-core/favicon.ico +0 -0
  69. package/assets/brands/nirs4all-core/horizontal-dark.svg +37 -0
  70. package/assets/brands/nirs4all-core/horizontal.png +0 -0
  71. package/assets/brands/nirs4all-core/horizontal.svg +36 -11
  72. package/assets/brands/nirs4all-core/icon-180.png +0 -0
  73. package/assets/brands/nirs4all-core/icon-256.png +0 -0
  74. package/assets/brands/nirs4all-core/icon-32.png +0 -0
  75. package/assets/brands/nirs4all-core/icon-512.png +0 -0
  76. package/assets/brands/nirs4all-core/icon.svg +32 -7
  77. package/assets/brands/nirs4all-core/og.png +0 -0
  78. package/assets/brands/nirs4all-core/stacked-dark.svg +36 -0
  79. package/assets/brands/nirs4all-core/stacked.png +0 -0
  80. package/assets/brands/nirs4all-core/stacked.svg +35 -11
  81. package/assets/brands/nirs4all-datasets/favicon.ico +0 -0
  82. package/assets/brands/nirs4all-datasets/horizontal-dark.svg +37 -0
  83. package/assets/brands/nirs4all-datasets/horizontal.png +0 -0
  84. package/assets/brands/nirs4all-datasets/horizontal.svg +37 -0
  85. package/assets/brands/nirs4all-datasets/icon-180.png +0 -0
  86. package/assets/brands/nirs4all-datasets/icon-256.png +0 -0
  87. package/assets/brands/nirs4all-datasets/icon-32.png +0 -0
  88. package/assets/brands/nirs4all-datasets/icon-512.png +0 -0
  89. package/assets/brands/nirs4all-datasets/icon.svg +33 -0
  90. package/assets/brands/nirs4all-datasets/og.png +0 -0
  91. package/assets/brands/nirs4all-datasets/stacked-dark.svg +36 -0
  92. package/assets/brands/nirs4all-datasets/stacked.png +0 -0
  93. package/assets/brands/nirs4all-datasets/stacked.svg +36 -0
  94. package/assets/brands/nirs4all-device/favicon.ico +0 -0
  95. package/assets/brands/nirs4all-device/horizontal-dark.svg +37 -0
  96. package/assets/brands/nirs4all-device/horizontal.png +0 -0
  97. package/assets/brands/nirs4all-device/horizontal.svg +37 -0
  98. package/assets/brands/nirs4all-device/icon-180.png +0 -0
  99. package/assets/brands/nirs4all-device/icon-256.png +0 -0
  100. package/assets/brands/nirs4all-device/icon-32.png +0 -0
  101. package/assets/brands/nirs4all-device/icon-512.png +0 -0
  102. package/assets/brands/nirs4all-device/icon.svg +33 -0
  103. package/assets/brands/nirs4all-device/og.png +0 -0
  104. package/assets/brands/nirs4all-device/stacked-dark.svg +36 -0
  105. package/assets/brands/nirs4all-device/stacked.png +0 -0
  106. package/assets/brands/nirs4all-device/stacked.svg +36 -0
  107. package/assets/brands/nirs4all-formats/favicon.ico +0 -0
  108. package/assets/brands/nirs4all-formats/horizontal-dark.svg +37 -0
  109. package/assets/brands/nirs4all-formats/horizontal.png +0 -0
  110. package/assets/brands/nirs4all-formats/horizontal.svg +37 -0
  111. package/assets/brands/nirs4all-formats/icon-180.png +0 -0
  112. package/assets/brands/nirs4all-formats/icon-256.png +0 -0
  113. package/assets/brands/nirs4all-formats/icon-32.png +0 -0
  114. package/assets/brands/nirs4all-formats/icon-512.png +0 -0
  115. package/assets/brands/nirs4all-formats/icon.svg +33 -0
  116. package/assets/brands/nirs4all-formats/og.png +0 -0
  117. package/assets/brands/nirs4all-formats/stacked-dark.svg +36 -0
  118. package/assets/brands/nirs4all-formats/stacked.png +0 -0
  119. package/assets/brands/nirs4all-formats/stacked.svg +36 -0
  120. package/assets/brands/nirs4all-io/favicon.ico +0 -0
  121. package/assets/brands/nirs4all-io/horizontal-dark.svg +37 -0
  122. package/assets/brands/nirs4all-io/horizontal.png +0 -0
  123. package/assets/brands/nirs4all-io/horizontal.svg +37 -0
  124. package/assets/brands/nirs4all-io/icon-180.png +0 -0
  125. package/assets/brands/nirs4all-io/icon-256.png +0 -0
  126. package/assets/brands/nirs4all-io/icon-32.png +0 -0
  127. package/assets/brands/nirs4all-io/icon-512.png +0 -0
  128. package/assets/brands/nirs4all-io/icon.svg +33 -0
  129. package/assets/brands/nirs4all-io/og.png +0 -0
  130. package/assets/brands/nirs4all-io/stacked-dark.svg +36 -0
  131. package/assets/brands/nirs4all-io/stacked.png +0 -0
  132. package/assets/brands/nirs4all-io/stacked.svg +36 -0
  133. package/assets/brands/nirs4all-methods/favicon.ico +0 -0
  134. package/assets/brands/nirs4all-methods/horizontal-dark.svg +37 -0
  135. package/assets/brands/nirs4all-methods/horizontal.png +0 -0
  136. package/assets/brands/nirs4all-methods/horizontal.svg +37 -0
  137. package/assets/brands/nirs4all-methods/icon-180.png +0 -0
  138. package/assets/brands/nirs4all-methods/icon-256.png +0 -0
  139. package/assets/brands/nirs4all-methods/icon-32.png +0 -0
  140. package/assets/brands/nirs4all-methods/icon-512.png +0 -0
  141. package/assets/brands/nirs4all-methods/icon.svg +33 -0
  142. package/assets/brands/nirs4all-methods/og.png +0 -0
  143. package/assets/brands/nirs4all-methods/stacked-dark.svg +36 -0
  144. package/assets/brands/nirs4all-methods/stacked.png +0 -0
  145. package/assets/brands/nirs4all-methods/stacked.svg +36 -0
  146. package/assets/brands/nirs4all-papers/favicon.ico +0 -0
  147. package/assets/brands/nirs4all-papers/horizontal-dark.svg +37 -0
  148. package/assets/brands/nirs4all-papers/horizontal.png +0 -0
  149. package/assets/brands/nirs4all-papers/horizontal.svg +37 -0
  150. package/assets/brands/nirs4all-papers/icon-180.png +0 -0
  151. package/assets/brands/nirs4all-papers/icon-256.png +0 -0
  152. package/assets/brands/nirs4all-papers/icon-32.png +0 -0
  153. package/assets/brands/nirs4all-papers/icon-512.png +0 -0
  154. package/assets/brands/nirs4all-papers/icon.svg +33 -0
  155. package/assets/brands/nirs4all-papers/og.png +0 -0
  156. package/assets/brands/nirs4all-papers/stacked-dark.svg +36 -0
  157. package/assets/brands/nirs4all-papers/stacked.png +0 -0
  158. package/assets/brands/nirs4all-papers/stacked.svg +36 -0
  159. package/assets/brands/nirs4all-providers/favicon.ico +0 -0
  160. package/assets/brands/nirs4all-providers/horizontal-dark.svg +37 -0
  161. package/assets/brands/nirs4all-providers/horizontal.png +0 -0
  162. package/assets/brands/nirs4all-providers/horizontal.svg +36 -11
  163. package/assets/brands/nirs4all-providers/icon-180.png +0 -0
  164. package/assets/brands/nirs4all-providers/icon-256.png +0 -0
  165. package/assets/brands/nirs4all-providers/icon-32.png +0 -0
  166. package/assets/brands/nirs4all-providers/icon-512.png +0 -0
  167. package/assets/brands/nirs4all-providers/icon.svg +32 -7
  168. package/assets/brands/nirs4all-providers/og.png +0 -0
  169. package/assets/brands/nirs4all-providers/stacked-dark.svg +36 -0
  170. package/assets/brands/nirs4all-providers/stacked.png +0 -0
  171. package/assets/brands/nirs4all-providers/stacked.svg +35 -11
  172. package/assets/brands/nirs4all-quality/favicon.ico +0 -0
  173. package/assets/brands/nirs4all-quality/horizontal-dark.svg +36 -0
  174. package/assets/brands/nirs4all-quality/horizontal.svg +35 -11
  175. package/assets/brands/nirs4all-quality/icon-180.png +0 -0
  176. package/assets/brands/nirs4all-quality/icon-256.png +0 -0
  177. package/assets/brands/nirs4all-quality/icon-32.png +0 -0
  178. package/assets/brands/nirs4all-quality/icon-512.png +0 -0
  179. package/assets/brands/nirs4all-quality/icon.svg +32 -7
  180. package/assets/brands/nirs4all-quality/og.png +0 -0
  181. package/assets/brands/nirs4all-quality/stacked-dark.svg +36 -0
  182. package/assets/brands/nirs4all-quality/stacked.svg +35 -11
  183. package/assets/brands/nirs4all-repository/favicon.ico +0 -0
  184. package/assets/brands/nirs4all-repository/horizontal-dark.svg +37 -0
  185. package/assets/brands/nirs4all-repository/horizontal.png +0 -0
  186. package/assets/brands/nirs4all-repository/horizontal.svg +37 -0
  187. package/assets/brands/nirs4all-repository/icon-180.png +0 -0
  188. package/assets/brands/nirs4all-repository/icon-256.png +0 -0
  189. package/assets/brands/nirs4all-repository/icon-32.png +0 -0
  190. package/assets/brands/nirs4all-repository/icon-512.png +0 -0
  191. package/assets/brands/nirs4all-repository/icon.svg +33 -0
  192. package/assets/brands/nirs4all-repository/og.png +0 -0
  193. package/assets/brands/nirs4all-repository/stacked-dark.svg +36 -0
  194. package/assets/brands/nirs4all-repository/stacked.png +0 -0
  195. package/assets/brands/nirs4all-repository/stacked.svg +36 -0
  196. package/assets/brands/nirs4all-studio/favicon.ico +0 -0
  197. package/assets/brands/nirs4all-studio/horizontal-dark.svg +37 -0
  198. package/assets/brands/nirs4all-studio/horizontal.png +0 -0
  199. package/assets/brands/nirs4all-studio/horizontal.svg +37 -0
  200. package/assets/brands/nirs4all-studio/icon-180.png +0 -0
  201. package/assets/brands/nirs4all-studio/icon-256.png +0 -0
  202. package/assets/brands/nirs4all-studio/icon-32.png +0 -0
  203. package/assets/brands/nirs4all-studio/icon-512.png +0 -0
  204. package/assets/brands/nirs4all-studio/icon.svg +33 -0
  205. package/assets/brands/nirs4all-studio/og.png +0 -0
  206. package/assets/brands/nirs4all-studio/stacked-dark.svg +36 -0
  207. package/assets/brands/nirs4all-studio/stacked.png +0 -0
  208. package/assets/brands/nirs4all-studio/stacked.svg +36 -0
  209. package/assets/brands/nirs4all-tools/favicon.ico +0 -0
  210. package/assets/brands/nirs4all-tools/horizontal-dark.svg +37 -0
  211. package/assets/brands/nirs4all-tools/horizontal.png +0 -0
  212. package/assets/brands/nirs4all-tools/horizontal.svg +37 -0
  213. package/assets/brands/nirs4all-tools/icon-180.png +0 -0
  214. package/assets/brands/nirs4all-tools/icon-256.png +0 -0
  215. package/assets/brands/nirs4all-tools/icon-32.png +0 -0
  216. package/assets/brands/nirs4all-tools/icon-512.png +0 -0
  217. package/assets/brands/nirs4all-tools/icon.svg +33 -0
  218. package/assets/brands/nirs4all-tools/og.png +0 -0
  219. package/assets/brands/nirs4all-tools/stacked-dark.svg +36 -0
  220. package/assets/brands/nirs4all-tools/stacked.png +0 -0
  221. package/assets/brands/nirs4all-tools/stacked.svg +36 -0
  222. package/assets/brands/nirs4all-ui/favicon.ico +0 -0
  223. package/assets/brands/nirs4all-ui/horizontal-dark.svg +37 -0
  224. package/assets/brands/nirs4all-ui/horizontal.png +0 -0
  225. package/assets/brands/nirs4all-ui/horizontal.svg +36 -11
  226. package/assets/brands/nirs4all-ui/icon-180.png +0 -0
  227. package/assets/brands/nirs4all-ui/icon-256.png +0 -0
  228. package/assets/brands/nirs4all-ui/icon-32.png +0 -0
  229. package/assets/brands/nirs4all-ui/icon-512.png +0 -0
  230. package/assets/brands/nirs4all-ui/icon.svg +32 -7
  231. package/assets/brands/nirs4all-ui/og.png +0 -0
  232. package/assets/brands/nirs4all-ui/stacked-dark.svg +36 -0
  233. package/assets/brands/nirs4all-ui/stacked.png +0 -0
  234. package/assets/brands/nirs4all-ui/stacked.svg +35 -11
  235. package/assets/brands/nirs4all-web/favicon.ico +0 -0
  236. package/assets/brands/nirs4all-web/horizontal-dark.svg +37 -0
  237. package/assets/brands/nirs4all-web/horizontal.png +0 -0
  238. package/assets/brands/nirs4all-web/horizontal.svg +37 -0
  239. package/assets/brands/nirs4all-web/icon-180.png +0 -0
  240. package/assets/brands/nirs4all-web/icon-256.png +0 -0
  241. package/assets/brands/nirs4all-web/icon-32.png +0 -0
  242. package/assets/brands/nirs4all-web/icon-512.png +0 -0
  243. package/assets/brands/nirs4all-web/icon.svg +33 -0
  244. package/assets/brands/nirs4all-web/og.png +0 -0
  245. package/assets/brands/nirs4all-web/stacked-dark.svg +36 -0
  246. package/assets/brands/nirs4all-web/stacked.png +0 -0
  247. package/assets/brands/nirs4all-web/stacked.svg +36 -0
  248. package/assets/chains.css +601 -0
  249. package/assets/conformal.css +323 -0
  250. package/assets/dag.css +446 -0
  251. package/assets/motion/nirs-spectra.svg +26 -9
  252. package/assets/viz.css +152 -0
  253. package/dist/brand/index.d.ts +24 -126
  254. package/dist/brand/index.d.ts.map +1 -1
  255. package/dist/brand/index.js +52 -200
  256. package/dist/brand/index.js.map +1 -1
  257. package/dist/chains/ChainExplorer.d.ts +34 -0
  258. package/dist/chains/ChainExplorer.d.ts.map +1 -0
  259. package/dist/chains/ChainExplorer.js +119 -0
  260. package/dist/chains/ChainExplorer.js.map +1 -0
  261. package/dist/chains/ChainNodeHub.d.ts +31 -0
  262. package/dist/chains/ChainNodeHub.d.ts.map +1 -0
  263. package/dist/chains/ChainNodeHub.js +150 -0
  264. package/dist/chains/ChainNodeHub.js.map +1 -0
  265. package/dist/chains/ChainNodeOrbit.d.ts +31 -0
  266. package/dist/chains/ChainNodeOrbit.d.ts.map +1 -0
  267. package/dist/chains/ChainNodeOrbit.js +158 -0
  268. package/dist/chains/ChainNodeOrbit.js.map +1 -0
  269. package/dist/chains/ChainScoreBeeswarm.d.ts +25 -0
  270. package/dist/chains/ChainScoreBeeswarm.d.ts.map +1 -0
  271. package/dist/chains/ChainScoreBeeswarm.js +84 -0
  272. package/dist/chains/ChainScoreBeeswarm.js.map +1 -0
  273. package/dist/chains/NodeEffectForest.d.ts +33 -0
  274. package/dist/chains/NodeEffectForest.d.ts.map +1 -0
  275. package/dist/chains/NodeEffectForest.js +85 -0
  276. package/dist/chains/NodeEffectForest.js.map +1 -0
  277. package/dist/chains/PositionEffectHeatmap.d.ts +25 -0
  278. package/dist/chains/PositionEffectHeatmap.d.ts.map +1 -0
  279. package/dist/chains/PositionEffectHeatmap.js +77 -0
  280. package/dist/chains/PositionEffectHeatmap.js.map +1 -0
  281. package/dist/chains/SequenceEffectHeatmap.d.ts +22 -0
  282. package/dist/chains/SequenceEffectHeatmap.d.ts.map +1 -0
  283. package/dist/chains/SequenceEffectHeatmap.js +74 -0
  284. package/dist/chains/SequenceEffectHeatmap.js.map +1 -0
  285. package/dist/chains/_cx.d.ts +2 -0
  286. package/dist/chains/_cx.d.ts.map +1 -0
  287. package/dist/chains/_cx.js +8 -0
  288. package/dist/chains/_cx.js.map +1 -0
  289. package/dist/chains/analysis.d.ts +100 -0
  290. package/dist/chains/analysis.d.ts.map +1 -0
  291. package/dist/chains/analysis.js +440 -0
  292. package/dist/chains/analysis.js.map +1 -0
  293. package/dist/chains/colors.d.ts +26 -0
  294. package/dist/chains/colors.d.ts.map +1 -0
  295. package/dist/chains/colors.js +58 -0
  296. package/dist/chains/colors.js.map +1 -0
  297. package/dist/chains/contract.d.ts +54 -0
  298. package/dist/chains/contract.d.ts.map +1 -0
  299. package/dist/chains/contract.js +125 -0
  300. package/dist/chains/contract.js.map +1 -0
  301. package/dist/chains/index.d.ts +35 -0
  302. package/dist/chains/index.d.ts.map +1 -0
  303. package/dist/chains/index.js +41 -0
  304. package/dist/chains/index.js.map +1 -0
  305. package/dist/chains/normalize.d.ts +27 -0
  306. package/dist/chains/normalize.d.ts.map +1 -0
  307. package/dist/chains/normalize.js +104 -0
  308. package/dist/chains/normalize.js.map +1 -0
  309. package/dist/chains/radial.d.ts +21 -0
  310. package/dist/chains/radial.d.ts.map +1 -0
  311. package/dist/chains/radial.js +52 -0
  312. package/dist/chains/radial.js.map +1 -0
  313. package/dist/chains/types.d.ts +240 -0
  314. package/dist/chains/types.d.ts.map +1 -0
  315. package/dist/chains/types.js +52 -0
  316. package/dist/chains/types.js.map +1 -0
  317. package/dist/components/ConformalPredictionTree.d.ts +79 -0
  318. package/dist/components/ConformalPredictionTree.d.ts.map +1 -0
  319. package/dist/components/ConformalPredictionTree.js +223 -0
  320. package/dist/components/ConformalPredictionTree.js.map +1 -0
  321. package/dist/components/DatasetResultCard.d.ts +33 -0
  322. package/dist/components/DatasetResultCard.d.ts.map +1 -0
  323. package/dist/components/DatasetResultCard.js +9 -0
  324. package/dist/components/DatasetResultCard.js.map +1 -0
  325. package/dist/components/PerClassTable.d.ts +27 -0
  326. package/dist/components/PerClassTable.d.ts.map +1 -0
  327. package/dist/components/PerClassTable.js +9 -0
  328. package/dist/components/PerClassTable.js.map +1 -0
  329. package/dist/components/PredictionCard.d.ts +27 -0
  330. package/dist/components/PredictionCard.d.ts.map +1 -0
  331. package/dist/components/PredictionCard.js +6 -0
  332. package/dist/components/PredictionCard.js.map +1 -0
  333. package/dist/components/RankingsTable.d.ts +28 -0
  334. package/dist/components/RankingsTable.d.ts.map +1 -0
  335. package/dist/components/RankingsTable.js +14 -0
  336. package/dist/components/RankingsTable.js.map +1 -0
  337. package/dist/components/ScoreCardTree.d.ts +31 -0
  338. package/dist/components/ScoreCardTree.d.ts.map +1 -0
  339. package/dist/components/ScoreCardTree.js +17 -0
  340. package/dist/components/ScoreCardTree.js.map +1 -0
  341. package/dist/components/index.d.ts +6 -0
  342. package/dist/components/index.d.ts.map +1 -1
  343. package/dist/components/index.js +6 -0
  344. package/dist/components/index.js.map +1 -1
  345. package/dist/conformal/index.d.ts +2 -0
  346. package/dist/conformal/index.d.ts.map +1 -0
  347. package/dist/conformal/index.js +2 -0
  348. package/dist/conformal/index.js.map +1 -0
  349. package/dist/conformal/result.d.ts +224 -0
  350. package/dist/conformal/result.d.ts.map +1 -0
  351. package/dist/conformal/result.js +461 -0
  352. package/dist/conformal/result.js.map +1 -0
  353. package/dist/dag/DagGraphView.d.ts +35 -0
  354. package/dist/dag/DagGraphView.d.ts.map +1 -0
  355. package/dist/dag/DagGraphView.js +424 -0
  356. package/dist/dag/DagGraphView.js.map +1 -0
  357. package/dist/dag/_cx.d.ts +2 -0
  358. package/dist/dag/_cx.d.ts.map +1 -0
  359. package/dist/dag/_cx.js +8 -0
  360. package/dist/dag/_cx.js.map +1 -0
  361. package/dist/dag/collapse.d.ts +81 -0
  362. package/dist/dag/collapse.d.ts.map +1 -0
  363. package/dist/dag/collapse.js +210 -0
  364. package/dist/dag/collapse.js.map +1 -0
  365. package/dist/dag/colors.d.ts +19 -0
  366. package/dist/dag/colors.d.ts.map +1 -0
  367. package/dist/dag/colors.js +54 -0
  368. package/dist/dag/colors.js.map +1 -0
  369. package/dist/dag/fromCompiledGraph.d.ts +27 -0
  370. package/dist/dag/fromCompiledGraph.d.ts.map +1 -0
  371. package/dist/dag/fromCompiledGraph.js +133 -0
  372. package/dist/dag/fromCompiledGraph.js.map +1 -0
  373. package/dist/dag/hierarchy.d.ts +38 -0
  374. package/dist/dag/hierarchy.d.ts.map +1 -0
  375. package/dist/dag/hierarchy.js +75 -0
  376. package/dist/dag/hierarchy.js.map +1 -0
  377. package/dist/dag/index.d.ts +28 -0
  378. package/dist/dag/index.d.ts.map +1 -0
  379. package/dist/dag/index.js +33 -0
  380. package/dist/dag/index.js.map +1 -0
  381. package/dist/dag/layout.d.ts +57 -0
  382. package/dist/dag/layout.d.ts.map +1 -0
  383. package/dist/dag/layout.js +267 -0
  384. package/dist/dag/layout.js.map +1 -0
  385. package/dist/dag/locale.d.ts +31 -0
  386. package/dist/dag/locale.d.ts.map +1 -0
  387. package/dist/dag/locale.js +32 -0
  388. package/dist/dag/locale.js.map +1 -0
  389. package/dist/dag/shape.d.ts +48 -0
  390. package/dist/dag/shape.d.ts.map +1 -0
  391. package/dist/dag/shape.js +263 -0
  392. package/dist/dag/shape.js.map +1 -0
  393. package/dist/dag/types.d.ts +106 -0
  394. package/dist/dag/types.d.ts.map +1 -0
  395. package/dist/dag/types.js +56 -0
  396. package/dist/dag/types.js.map +1 -0
  397. package/dist/index.d.ts +7 -0
  398. package/dist/index.d.ts.map +1 -1
  399. package/dist/index.js +7 -0
  400. package/dist/index.js.map +1 -1
  401. package/dist/keywordRegistry/index.d.ts +9 -0
  402. package/dist/keywordRegistry/index.d.ts.map +1 -0
  403. package/dist/keywordRegistry/index.js +9 -0
  404. package/dist/keywordRegistry/index.js.map +1 -0
  405. package/dist/keywordRegistry/registry.d.ts +107 -0
  406. package/dist/keywordRegistry/registry.d.ts.map +1 -0
  407. package/dist/keywordRegistry/registry.js +234 -0
  408. package/dist/keywordRegistry/registry.js.map +1 -0
  409. package/dist/robustness/index.d.ts +12 -0
  410. package/dist/robustness/index.d.ts.map +1 -0
  411. package/dist/robustness/index.js +12 -0
  412. package/dist/robustness/index.js.map +1 -0
  413. package/dist/robustness/modes.d.ts +15 -0
  414. package/dist/robustness/modes.d.ts.map +1 -0
  415. package/dist/robustness/modes.js +64 -0
  416. package/dist/robustness/modes.js.map +1 -0
  417. package/dist/robustness/scenarios.d.ts +38 -0
  418. package/dist/robustness/scenarios.d.ts.map +1 -0
  419. package/dist/robustness/scenarios.js +159 -0
  420. package/dist/robustness/scenarios.js.map +1 -0
  421. package/dist/robustness/summary.d.ts +135 -0
  422. package/dist/robustness/summary.d.ts.map +1 -0
  423. package/dist/robustness/summary.js +284 -0
  424. package/dist/robustness/summary.js.map +1 -0
  425. package/dist/styles/index.d.ts +19 -1
  426. package/dist/styles/index.d.ts.map +1 -1
  427. package/dist/styles/index.js +21 -0
  428. package/dist/styles/index.js.map +1 -1
  429. package/dist/tuning/index.d.ts +3 -0
  430. package/dist/tuning/index.d.ts.map +1 -0
  431. package/dist/tuning/index.js +3 -0
  432. package/dist/tuning/index.js.map +1 -0
  433. package/dist/tuning/result.d.ts +144 -0
  434. package/dist/tuning/result.d.ts.map +1 -0
  435. package/dist/tuning/result.js +277 -0
  436. package/dist/tuning/result.js.map +1 -0
  437. package/dist/tuning/searchSpace.d.ts +54 -0
  438. package/dist/tuning/searchSpace.d.ts.map +1 -0
  439. package/dist/tuning/searchSpace.js +118 -0
  440. package/dist/tuning/searchSpace.js.map +1 -0
  441. package/dist/viz/BiasVarianceBars.d.ts +27 -0
  442. package/dist/viz/BiasVarianceBars.d.ts.map +1 -0
  443. package/dist/viz/BiasVarianceBars.js +53 -0
  444. package/dist/viz/BiasVarianceBars.js.map +1 -0
  445. package/dist/viz/BoxPlot.d.ts +24 -0
  446. package/dist/viz/BoxPlot.d.ts.map +1 -0
  447. package/dist/viz/BoxPlot.js +50 -0
  448. package/dist/viz/BoxPlot.js.map +1 -0
  449. package/dist/viz/ConformalIntervalStrip.d.ts +66 -0
  450. package/dist/viz/ConformalIntervalStrip.d.ts.map +1 -0
  451. package/dist/viz/ConformalIntervalStrip.js +167 -0
  452. package/dist/viz/ConformalIntervalStrip.js.map +1 -0
  453. package/dist/viz/ConfusionMatrix.d.ts +24 -0
  454. package/dist/viz/ConfusionMatrix.d.ts.map +1 -0
  455. package/dist/viz/ConfusionMatrix.js +39 -0
  456. package/dist/viz/ConfusionMatrix.js.map +1 -0
  457. package/dist/viz/FeatureImportanceBar.d.ts +26 -0
  458. package/dist/viz/FeatureImportanceBar.d.ts.map +1 -0
  459. package/dist/viz/FeatureImportanceBar.js +49 -0
  460. package/dist/viz/FeatureImportanceBar.js.map +1 -0
  461. package/dist/viz/FoldStabilityLines.d.ts +29 -0
  462. package/dist/viz/FoldStabilityLines.d.ts.map +1 -0
  463. package/dist/viz/FoldStabilityLines.js +57 -0
  464. package/dist/viz/FoldStabilityLines.js.map +1 -0
  465. package/dist/viz/Histogram.d.ts +33 -0
  466. package/dist/viz/Histogram.d.ts.map +1 -0
  467. package/dist/viz/Histogram.js +64 -0
  468. package/dist/viz/Histogram.js.map +1 -0
  469. package/dist/viz/PcaScatter.d.ts +36 -0
  470. package/dist/viz/PcaScatter.d.ts.map +1 -0
  471. package/dist/viz/PcaScatter.js +72 -0
  472. package/dist/viz/PcaScatter.js.map +1 -0
  473. package/dist/viz/PipelineFlow.d.ts +28 -0
  474. package/dist/viz/PipelineFlow.d.ts.map +1 -0
  475. package/dist/viz/PipelineFlow.js +57 -0
  476. package/dist/viz/PipelineFlow.js.map +1 -0
  477. package/dist/viz/PredictionScatter.d.ts +41 -0
  478. package/dist/viz/PredictionScatter.d.ts.map +1 -0
  479. package/dist/viz/PredictionScatter.js +41 -0
  480. package/dist/viz/PredictionScatter.js.map +1 -0
  481. package/dist/viz/ResidualPlot.d.ts +32 -0
  482. package/dist/viz/ResidualPlot.d.ts.map +1 -0
  483. package/dist/viz/ResidualPlot.js +58 -0
  484. package/dist/viz/ResidualPlot.js.map +1 -0
  485. package/dist/viz/ScoreHeatmap.d.ts +30 -0
  486. package/dist/viz/ScoreHeatmap.d.ts.map +1 -0
  487. package/dist/viz/ScoreHeatmap.js +61 -0
  488. package/dist/viz/ScoreHeatmap.js.map +1 -0
  489. package/dist/viz/ScoreSummary.d.ts +23 -0
  490. package/dist/viz/ScoreSummary.d.ts.map +1 -0
  491. package/dist/viz/ScoreSummary.js +32 -0
  492. package/dist/viz/ScoreSummary.js.map +1 -0
  493. package/dist/viz/ShapBeeswarm.d.ts +29 -0
  494. package/dist/viz/ShapBeeswarm.d.ts.map +1 -0
  495. package/dist/viz/ShapBeeswarm.js +60 -0
  496. package/dist/viz/ShapBeeswarm.js.map +1 -0
  497. package/dist/viz/SpectraPlot.d.ts +50 -0
  498. package/dist/viz/SpectraPlot.d.ts.map +1 -0
  499. package/dist/viz/SpectraPlot.js +46 -0
  500. package/dist/viz/SpectraPlot.js.map +1 -0
  501. package/dist/viz/WaterfallChart.d.ts +30 -0
  502. package/dist/viz/WaterfallChart.d.ts.map +1 -0
  503. package/dist/viz/WaterfallChart.js +73 -0
  504. package/dist/viz/WaterfallChart.js.map +1 -0
  505. package/dist/viz/_cx.d.ts +2 -0
  506. package/dist/viz/_cx.d.ts.map +1 -0
  507. package/dist/viz/_cx.js +8 -0
  508. package/dist/viz/_cx.js.map +1 -0
  509. package/dist/viz/geometry.d.ts +87 -0
  510. package/dist/viz/geometry.d.ts.map +1 -0
  511. package/dist/viz/geometry.js +208 -0
  512. package/dist/viz/geometry.js.map +1 -0
  513. package/dist/viz/index.d.ts +33 -0
  514. package/dist/viz/index.d.ts.map +1 -0
  515. package/dist/viz/index.js +38 -0
  516. package/dist/viz/index.js.map +1 -0
  517. package/dist/viz/theme.d.ts +50 -0
  518. package/dist/viz/theme.d.ts.map +1 -0
  519. package/dist/viz/theme.js +100 -0
  520. package/dist/viz/theme.js.map +1 -0
  521. package/package.json +34 -2
package/assets/dag.css ADDED
@@ -0,0 +1,446 @@
1
+ /* nirs4all-ui — default styles for the interactive compiled-DAG viewer.
2
+ *
3
+ * The component sets category colors inline as SVG attributes (node cards,
4
+ * accents, minimap dots, emphasized edges); this stylesheet themes everything
5
+ * left to CSS on purpose: chrome, frames, recessive edges, text, and the
6
+ * light/dark surfaces. It reads the shared nirs4all design tokens when present
7
+ * (load `nirs4all-default.css` or `theme.css`) and degrades to hardcoded
8
+ * fallbacks otherwise.
9
+ *
10
+ * Consumed as `nirs4all-ui/assets/dag.css`.
11
+ */
12
+
13
+ .n4dag {
14
+ --n4dag-surface: var(--n4-color-surface, #fcfcfb);
15
+ --n4dag-node-bg: var(--n4-color-surface, #ffffff);
16
+ --n4dag-border: var(--n4-color-border, #e2e8f0);
17
+ --n4dag-text: var(--n4-color-text, #0f172a);
18
+ --n4dag-muted: var(--n4-color-muted, #64748b);
19
+ --n4dag-grid: color-mix(in srgb, var(--n4dag-muted) 16%, transparent);
20
+ display: flex;
21
+ flex-direction: column;
22
+ gap: 8px;
23
+ font-family: var(--n4-font-sans, "Inter", -apple-system, system-ui, sans-serif);
24
+ color: var(--n4dag-text);
25
+ }
26
+
27
+ /* ---- toolbar ---- */
28
+ .n4dag__toolbar {
29
+ display: flex;
30
+ align-items: center;
31
+ gap: 8px;
32
+ flex-wrap: wrap;
33
+ }
34
+ .n4dag__title {
35
+ font-size: 13px;
36
+ font-weight: 700;
37
+ letter-spacing: -0.01em;
38
+ }
39
+ .n4dag__counts {
40
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
41
+ font-size: 10.5px;
42
+ color: var(--n4dag-muted);
43
+ }
44
+ .n4dag__spacer {
45
+ flex: 1 1 auto;
46
+ }
47
+ .n4dag__group {
48
+ display: inline-flex;
49
+ align-items: center;
50
+ gap: 2px;
51
+ padding: 2px;
52
+ border: 1px solid var(--n4dag-border);
53
+ border-radius: 8px;
54
+ background: color-mix(in srgb, var(--n4dag-muted) 5%, transparent);
55
+ }
56
+ .n4dag__depth {
57
+ font-family: var(--n4-font-mono, monospace);
58
+ font-size: 10.5px;
59
+ color: var(--n4dag-muted);
60
+ padding: 0 4px;
61
+ min-width: 52px;
62
+ text-align: center;
63
+ }
64
+ .n4dag__btn {
65
+ appearance: none;
66
+ border: 1px solid transparent;
67
+ background: transparent;
68
+ color: var(--n4dag-text);
69
+ border-radius: 6px;
70
+ min-width: 26px;
71
+ height: 26px;
72
+ padding: 0 7px;
73
+ font-size: 13px;
74
+ line-height: 1;
75
+ cursor: pointer;
76
+ transition: background 120ms ease, border-color 120ms ease;
77
+ }
78
+ .n4dag__btn:hover {
79
+ background: color-mix(in srgb, var(--n4-color-primary, #0d9488) 12%, transparent);
80
+ border-color: color-mix(in srgb, var(--n4-color-primary, #0d9488) 40%, transparent);
81
+ }
82
+ .n4dag__btn--text {
83
+ font-size: 11px;
84
+ font-weight: 600;
85
+ border: 1px solid var(--n4dag-border);
86
+ }
87
+ .n4dag__btn--on {
88
+ background: color-mix(in srgb, var(--n4-color-primary, #0d9488) 16%, transparent);
89
+ border-color: color-mix(in srgb, var(--n4-color-primary, #0d9488) 45%, transparent);
90
+ color: var(--n4-color-primary, #0d9488);
91
+ }
92
+ .n4dag__search-input {
93
+ appearance: none;
94
+ height: 26px;
95
+ width: 170px;
96
+ padding: 0 9px;
97
+ font-size: 12px;
98
+ color: var(--n4dag-text);
99
+ background: var(--n4dag-node-bg);
100
+ border: 1px solid var(--n4dag-border);
101
+ border-radius: 8px;
102
+ }
103
+ .n4dag__search-input:focus-visible {
104
+ outline: 2px solid color-mix(in srgb, var(--n4-color-primary, #0d9488) 55%, transparent);
105
+ outline-offset: 1px;
106
+ }
107
+
108
+ /* ---- stage ---- */
109
+ .n4dag__stage {
110
+ position: relative;
111
+ width: 100%;
112
+ overflow: hidden;
113
+ border: 1px solid var(--n4dag-border);
114
+ border-radius: 14px;
115
+ background-color: var(--n4dag-surface);
116
+ background-image: radial-gradient(var(--n4dag-grid) 1px, transparent 1px);
117
+ background-size: 22px 22px;
118
+ box-shadow: inset 0 1px 0 color-mix(in srgb, #ffffff 40%, transparent);
119
+ }
120
+ .n4dag__canvas {
121
+ display: block;
122
+ touch-action: none;
123
+ cursor: grab;
124
+ }
125
+ .n4dag__canvas:active {
126
+ cursor: grabbing;
127
+ }
128
+ .n4dag__empty {
129
+ fill: var(--n4dag-muted);
130
+ font-size: 13px;
131
+ }
132
+
133
+ /* ---- cluster frames ---- */
134
+ .n4dag__frame-box {
135
+ fill: color-mix(in srgb, var(--n4dag-muted) 6%, transparent);
136
+ stroke: color-mix(in srgb, var(--n4dag-muted) 40%, transparent);
137
+ stroke-width: 1;
138
+ stroke-dasharray: 4 4;
139
+ }
140
+ .n4dag__frame-header {
141
+ cursor: pointer;
142
+ }
143
+ .n4dag__frame-tab {
144
+ fill: color-mix(in srgb, var(--n4dag-muted) 16%, var(--n4dag-surface));
145
+ stroke: color-mix(in srgb, var(--n4dag-muted) 30%, transparent);
146
+ stroke-width: 1;
147
+ }
148
+ .n4dag__frame-header:hover .n4dag__frame-tab {
149
+ fill: color-mix(in srgb, var(--n4-color-primary, #0d9488) 18%, var(--n4dag-surface));
150
+ }
151
+ .n4dag__frame-label {
152
+ font-size: 10.5px;
153
+ font-weight: 700;
154
+ fill: var(--n4dag-muted);
155
+ letter-spacing: 0.01em;
156
+ }
157
+
158
+ /* ---- edges ---- */
159
+ .n4dag__edge {
160
+ color: color-mix(in srgb, var(--n4dag-muted) 55%, transparent);
161
+ stroke-linecap: round;
162
+ transition: opacity 120ms ease;
163
+ }
164
+ .n4dag__edge--back {
165
+ stroke-dasharray: 5 4;
166
+ }
167
+ .n4dag__edge--dim {
168
+ opacity: 0.12;
169
+ }
170
+ .n4dag__edge--on {
171
+ opacity: 1;
172
+ }
173
+ .n4dag__arrowhead {
174
+ fill: color-mix(in srgb, var(--n4dag-muted) 55%, transparent);
175
+ }
176
+
177
+ /* ---- nodes ---- */
178
+ .n4dag__node {
179
+ cursor: pointer;
180
+ }
181
+ .n4dag__node--dim {
182
+ opacity: 0.3;
183
+ transition: opacity 120ms ease;
184
+ }
185
+ .n4dag__node-lod {
186
+ cursor: pointer;
187
+ }
188
+ .n4dag__node-stack {
189
+ opacity: 0.28;
190
+ }
191
+ .n4dag__node-card {
192
+ transition: stroke-width 100ms ease;
193
+ }
194
+ .n4dag__node--selected .n4dag__node-card {
195
+ filter: drop-shadow(0 2px 8px color-mix(in srgb, var(--n4-color-primary, #0d9488) 30%, transparent));
196
+ }
197
+ .n4dag__node--match .n4dag__node-card {
198
+ stroke-dasharray: 3 2;
199
+ }
200
+ .n4dag__node-label {
201
+ font-size: 12px;
202
+ font-weight: 650;
203
+ fill: var(--n4dag-text);
204
+ pointer-events: none;
205
+ }
206
+ .n4dag__node-sub {
207
+ font-size: 9.5px;
208
+ fill: var(--n4dag-muted);
209
+ pointer-events: none;
210
+ }
211
+ .n4dag__node-expand {
212
+ font-size: 13px;
213
+ font-weight: 700;
214
+ fill: var(--n4dag-muted);
215
+ pointer-events: none;
216
+ }
217
+ .n4dag__node-badge {
218
+ font-family: var(--n4-font-mono, monospace);
219
+ font-size: 10px;
220
+ font-weight: 700;
221
+ fill: var(--n4dag-text);
222
+ pointer-events: none;
223
+ }
224
+ .n4dag__node-shape {
225
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
226
+ font-size: 9.5px;
227
+ font-weight: 600;
228
+ fill: var(--n4dag-muted);
229
+ pointer-events: none;
230
+ }
231
+ .n4dag__node-port {
232
+ stroke: var(--n4dag-node-bg, #ffffff);
233
+ stroke-width: 1.5;
234
+ }
235
+
236
+ /* ---- shape labels on edges (data leaving a collapsed cluster) ---- */
237
+ .n4dag__edge-shape-bg {
238
+ fill: color-mix(in srgb, var(--n4dag-surface) 90%, transparent);
239
+ stroke: var(--n4dag-border);
240
+ stroke-width: 1;
241
+ }
242
+ .n4dag__edge-shape-text {
243
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
244
+ font-size: 9px;
245
+ font-weight: 600;
246
+ fill: var(--n4dag-muted);
247
+ }
248
+ .n4dag__node-status[data-status="running"] { fill: #d97706; }
249
+ .n4dag__node-status[data-status="done"] { fill: #10b981; }
250
+ .n4dag__node-status[data-status="failed"] { fill: #e11d48; }
251
+ .n4dag__node-status[data-status="skipped"] { fill: #94a3b8; }
252
+ .n4dag__node-status[data-status="idle"] { fill: #cbd5e1; }
253
+
254
+ /* ---- legend ---- */
255
+ .n4dag__legend {
256
+ position: absolute;
257
+ left: 10px;
258
+ top: 10px;
259
+ display: flex;
260
+ flex-wrap: wrap;
261
+ gap: 4px 10px;
262
+ max-width: 62%;
263
+ padding: 7px 9px;
264
+ border: 1px solid var(--n4dag-border);
265
+ border-radius: 10px;
266
+ background: color-mix(in srgb, var(--n4dag-surface) 92%, transparent);
267
+ box-shadow: 0 4px 14px -8px rgba(15, 23, 42, 0.3);
268
+ }
269
+ .n4dag__legend-item {
270
+ display: inline-flex;
271
+ align-items: center;
272
+ gap: 5px;
273
+ font-size: 10px;
274
+ color: var(--n4dag-muted);
275
+ }
276
+ .n4dag__legend-swatch {
277
+ width: 9px;
278
+ height: 9px;
279
+ border-radius: 3px;
280
+ flex: none;
281
+ }
282
+
283
+ /* ---- minimap ---- */
284
+ .n4dag__minimap {
285
+ position: absolute;
286
+ right: 10px;
287
+ bottom: 10px;
288
+ border: 1px solid var(--n4dag-border);
289
+ border-radius: 8px;
290
+ box-shadow: 0 6px 20px -8px rgba(15, 23, 42, 0.35);
291
+ cursor: crosshair;
292
+ }
293
+ .n4dag__minimap-bg {
294
+ fill: color-mix(in srgb, var(--n4dag-surface) 92%, transparent);
295
+ }
296
+ .n4dag__minimap-view {
297
+ fill: color-mix(in srgb, var(--n4-color-primary, #0d9488) 14%, transparent);
298
+ stroke: var(--n4-color-primary, #0d9488);
299
+ stroke-width: 1;
300
+ }
301
+
302
+ /* ---- inspector ---- */
303
+ .n4dag__inspector {
304
+ position: absolute;
305
+ top: 10px;
306
+ right: 10px;
307
+ width: 268px;
308
+ max-height: calc(100% - 20px);
309
+ overflow: auto;
310
+ padding: 12px 14px;
311
+ border: 1px solid var(--n4dag-border);
312
+ border-radius: 12px;
313
+ background: color-mix(in srgb, var(--n4dag-surface) 97%, transparent);
314
+ box-shadow: 0 10px 30px -12px rgba(15, 23, 42, 0.4);
315
+ }
316
+ .n4dag__inspector-close {
317
+ position: absolute;
318
+ top: 8px;
319
+ right: 8px;
320
+ appearance: none;
321
+ border: none;
322
+ background: transparent;
323
+ font-size: 16px;
324
+ line-height: 1;
325
+ color: var(--n4dag-muted);
326
+ cursor: pointer;
327
+ }
328
+ .n4dag__inspector-head {
329
+ display: flex;
330
+ align-items: center;
331
+ gap: 7px;
332
+ margin-bottom: 8px;
333
+ padding-right: 16px;
334
+ }
335
+ .n4dag__inspector-dot {
336
+ width: 10px;
337
+ height: 10px;
338
+ border-radius: 3px;
339
+ flex: none;
340
+ }
341
+ .n4dag__inspector-title {
342
+ font-size: 12.5px;
343
+ font-weight: 700;
344
+ overflow-wrap: anywhere;
345
+ }
346
+
347
+ /* ---- inspector: dataset-shape in → out ---- */
348
+ .n4dag__io {
349
+ margin: 0 0 10px;
350
+ padding: 8px 9px;
351
+ border: 1px solid var(--n4dag-border);
352
+ border-radius: 9px;
353
+ background: color-mix(in srgb, var(--n4dag-muted) 5%, transparent);
354
+ display: grid;
355
+ gap: 4px;
356
+ }
357
+ .n4dag__io-title {
358
+ font-size: 9px;
359
+ font-weight: 700;
360
+ letter-spacing: 0.07em;
361
+ text-transform: uppercase;
362
+ color: var(--n4dag-muted);
363
+ }
364
+ .n4dag__io-row {
365
+ display: flex;
366
+ align-items: baseline;
367
+ gap: 6px;
368
+ flex-wrap: wrap;
369
+ }
370
+ .n4dag__io-tag {
371
+ min-width: 24px;
372
+ font-size: 9px;
373
+ font-weight: 700;
374
+ letter-spacing: 0.06em;
375
+ text-transform: uppercase;
376
+ color: var(--n4dag-muted);
377
+ }
378
+ .n4dag__io-row--out .n4dag__io-tag,
379
+ .n4dag__io-row--out .n4dag__io-shape {
380
+ color: var(--n4-color-primary, #0d9488);
381
+ }
382
+ .n4dag__io-shape {
383
+ font-size: 12px;
384
+ font-weight: 700;
385
+ }
386
+ .n4dag__io-rep,
387
+ .n4dag__io-sources {
388
+ font-size: 9.5px;
389
+ color: var(--n4dag-muted);
390
+ }
391
+ .n4dag__io-note {
392
+ font-size: 9px;
393
+ font-weight: 600;
394
+ padding: 0 5px;
395
+ border-radius: 999px;
396
+ color: var(--n4-color-primary, #0d9488);
397
+ background: color-mix(in srgb, var(--n4-color-primary, #0d9488) 12%, transparent);
398
+ }
399
+ .n4dag__io-delta {
400
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
401
+ font-size: 10px;
402
+ color: var(--n4dag-text);
403
+ padding-top: 2px;
404
+ border-top: 1px dashed var(--n4dag-border);
405
+ }
406
+ .n4dag__inspector-dl {
407
+ margin: 0;
408
+ display: grid;
409
+ gap: 6px;
410
+ }
411
+ .n4dag__inspector-dl > div {
412
+ display: grid;
413
+ grid-template-columns: 62px 1fr;
414
+ gap: 8px;
415
+ align-items: baseline;
416
+ }
417
+ .n4dag__inspector-dl dt {
418
+ font-size: 9.5px;
419
+ font-weight: 700;
420
+ letter-spacing: 0.06em;
421
+ text-transform: uppercase;
422
+ color: var(--n4dag-muted);
423
+ }
424
+ .n4dag__inspector-dl dd {
425
+ margin: 0;
426
+ font-size: 11.5px;
427
+ overflow-wrap: anywhere;
428
+ }
429
+ .n4dag__mono {
430
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
431
+ font-size: 11px;
432
+ }
433
+
434
+ /* ---- standalone dark fallback (when design tokens are not loaded) ---- */
435
+ :root[data-theme="dark"] .n4dag,
436
+ .n4-theme-dark .n4dag {
437
+ --n4dag-surface: var(--n4-color-surface, #17181a);
438
+ --n4dag-node-bg: var(--n4-color-surface, #1f2123);
439
+ --n4dag-border: var(--n4-color-border, rgba(255, 255, 255, 0.14));
440
+ --n4dag-text: var(--n4-color-text, rgba(255, 255, 255, 0.92));
441
+ --n4dag-muted: var(--n4-color-muted, rgba(255, 255, 255, 0.6));
442
+ }
443
+ :root[data-theme="dark"] .n4dag__stage,
444
+ .n4-theme-dark .n4dag__stage {
445
+ box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05);
446
+ }
@@ -3,25 +3,42 @@
3
3
  <defs>
4
4
  <linearGradient id="n4-motion-gradient" x1="0" x2="1" y1="0" y2="0">
5
5
  <stop offset="0" stop-color="#0f766e"/>
6
- <stop offset=".45" stop-color="#06b6d4"/>
6
+ <stop offset=".5" stop-color="#06b6d4"/>
7
7
  <stop offset="1" stop-color="#10b981"/>
8
8
  </linearGradient>
9
- <filter id="n4-motion-glow" x="-20%" y="-40%" width="140%" height="180%">
10
- <feGaussianBlur stdDeviation="4" result="blur"/>
9
+ <filter id="n4-motion-glow" x="-10%" y="-40%" width="120%" height="180%">
10
+ <feGaussianBlur stdDeviation="3.2" result="blur"/>
11
11
  <feMerge>
12
12
  <feMergeNode in="blur"/>
13
13
  <feMergeNode in="SourceGraphic"/>
14
14
  </feMerge>
15
15
  </filter>
16
16
  </defs>
17
+
17
18
  <rect width="720" height="180" rx="18" fill="#faf7f0"/>
18
- <path d="M36 98C72 48 102 48 138 98s66 50 102 0 66-50 102 0 66 50 102 0 66-50 102 0 66 50 138-16" fill="none" stroke="url(#n4-motion-gradient)" stroke-width="8" stroke-linecap="round" filter="url(#n4-motion-glow)">
19
- <animate attributeName="stroke-dasharray" values="16 24;32 12;16 24" dur="10s" repeatCount="indefinite"/>
19
+ <g stroke="#0d9488" stroke-opacity=".08" stroke-width="1">
20
+ <line x1="0" y1="45" x2="720" y2="45"/>
21
+ <line x1="0" y1="90" x2="720" y2="90"/>
22
+ <line x1="0" y1="135" x2="720" y2="135"/>
23
+ </g>
24
+
25
+ <!-- faint reference spectrum -->
26
+ <path d="M24 132 C 96 128 132 96 176 108 S 268 150 330 84 S 452 148 520 112 S 626 58 700 120"
27
+ fill="none" stroke="#4f46e5" stroke-width="3" stroke-linecap="round" stroke-linejoin="round" opacity=".28">
28
+ <animate attributeName="opacity" values=".18;.4;.18" dur="9s" repeatCount="indefinite"/>
20
29
  </path>
21
- <path d="M36 124C84 104 126 104 174 124s90 20 138 0 90-20 138 0 96 24 234-28" fill="none" stroke="#4f46e5" stroke-width="4" stroke-linecap="round" opacity=".62">
22
- <animate attributeName="opacity" values=".38;.78;.38" dur="8s" repeatCount="indefinite"/>
30
+
31
+ <!-- primary absorbance spectrum -->
32
+ <path d="M24 138 C 92 134 128 58 176 92 S 262 152 324 66 S 438 150 508 104 S 612 40 700 128"
33
+ fill="none" stroke="url(#n4-motion-gradient)" stroke-width="6" stroke-linecap="round" stroke-linejoin="round"
34
+ filter="url(#n4-motion-glow)" stroke-dasharray="26 20">
35
+ <animate attributeName="stroke-dashoffset" values="0;-92" dur="8s" repeatCount="indefinite"/>
23
36
  </path>
24
- <circle cx="602" cy="82" r="7" fill="#10b981">
25
- <animate attributeName="cx" values="602;646;602" dur="7s" repeatCount="indefinite"/>
37
+
38
+ <!-- glowing peak dot -->
39
+ <circle r="6" fill="#10b981" filter="url(#n4-motion-glow)">
40
+ <animate attributeName="cx" values="176;324;508;700;508;324;176" dur="12s" repeatCount="indefinite"/>
41
+ <animate attributeName="cy" values="92;66;104;128;104;66;92" dur="12s" repeatCount="indefinite"/>
42
+ <animate attributeName="r" values="5;7;5" dur="3s" repeatCount="indefinite"/>
26
43
  </circle>
27
44
  </svg>
package/assets/viz.css ADDED
@@ -0,0 +1,152 @@
1
+ /* nirs4all-ui — default styles for the reusable `viz` scientific charts.
2
+ *
3
+ * The chart components set data colors (bars, dots, cells, lines, node cards)
4
+ * inline as SVG attributes; this stylesheet only themes the elements that are
5
+ * left to CSS on purpose: axes, gridlines, connectors, and text. It reads the
6
+ * shared nirs4all design tokens when present (load `nirs4all-default.css` or
7
+ * `theme.css`) and degrades to hardcoded fallbacks otherwise.
8
+ *
9
+ * Consumed as `nirs4all-ui/assets/viz.css`.
10
+ */
11
+
12
+ .n4viz {
13
+ display: block;
14
+ width: 100%;
15
+ height: auto;
16
+ overflow: visible;
17
+ font-family: var(--n4-font-sans, "Inter", -apple-system, system-ui, sans-serif);
18
+ }
19
+
20
+ /* structural strokes (never set inline by the components) */
21
+ .n4viz-grid {
22
+ stroke: var(--n4-color-border, #e2e8f0);
23
+ stroke-width: 1;
24
+ }
25
+
26
+ .n4viz-axis {
27
+ stroke: var(--n4-color-muted, #94a3b8);
28
+ stroke-opacity: 0.55;
29
+ stroke-width: 1;
30
+ }
31
+
32
+ .n4viz-edge {
33
+ stroke: var(--n4-color-border, #cbd5e1);
34
+ stroke-width: 1.5;
35
+ }
36
+
37
+ /* text roles */
38
+ .n4viz-tick {
39
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
40
+ font-size: 10px;
41
+ fill: var(--n4-color-muted, #64748b);
42
+ }
43
+
44
+ .n4viz-axis-label {
45
+ font-size: 11px;
46
+ font-weight: 600;
47
+ fill: var(--n4-color-muted, #64748b);
48
+ }
49
+
50
+ .n4viz-badge {
51
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
52
+ font-size: 11px;
53
+ font-weight: 700;
54
+ fill: var(--n4-color-text, #0f172a);
55
+ }
56
+
57
+ .n4viz-cell-value {
58
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
59
+ font-size: 11px;
60
+ fill: var(--n4-color-text, #0f172a);
61
+ }
62
+
63
+ .n4viz-cell-value-strong {
64
+ fill: #ffffff;
65
+ }
66
+
67
+ .n4viz-legend-label {
68
+ font-size: 10px;
69
+ fill: var(--n4-color-muted, #64748b);
70
+ }
71
+
72
+ /* score-summary tiles */
73
+ .n4viz-stat-label {
74
+ font-size: 9px;
75
+ font-weight: 700;
76
+ letter-spacing: 0.07em;
77
+ text-transform: uppercase;
78
+ fill: var(--n4-color-muted, #64748b);
79
+ }
80
+
81
+ .n4viz-stat-value {
82
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
83
+ font-size: 20px;
84
+ font-weight: 700;
85
+ fill: var(--n4-color-text, #0f172a);
86
+ }
87
+
88
+ .n4viz-stat-delta {
89
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
90
+ font-size: 10px;
91
+ font-weight: 600;
92
+ }
93
+
94
+ /* pipeline node text */
95
+ .n4viz-node-label {
96
+ font-size: 13px;
97
+ font-weight: 650;
98
+ fill: var(--n4-color-text, #0f172a);
99
+ }
100
+
101
+ .n4viz-node-detail {
102
+ font-size: 10px;
103
+ fill: var(--n4-color-muted, #64748b);
104
+ }
105
+
106
+ .n4viz-node-metric-value {
107
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
108
+ font-size: 10px;
109
+ font-weight: 700;
110
+ fill: var(--n4-color-text, #0f172a);
111
+ }
112
+
113
+ .n4viz-line-mean {
114
+ filter: drop-shadow(0 1px 2px rgba(13, 148, 136, 0.35));
115
+ }
116
+
117
+ /* conformal interval strip */
118
+ .n4viz-conf-title {
119
+ font-size: 12.5px;
120
+ font-weight: 700;
121
+ letter-spacing: -0.01em;
122
+ fill: var(--n4-color-text, #0f172a);
123
+ }
124
+ .n4viz-conf-readout {
125
+ font-family: var(--n4-font-mono, "JetBrains Mono", monospace);
126
+ font-size: 10.5px;
127
+ font-weight: 700;
128
+ fill: var(--n4-color-muted, #64748b);
129
+ }
130
+ .n4viz-conf-empty {
131
+ font-size: 12px;
132
+ fill: var(--n4-color-muted, #94a3b8);
133
+ }
134
+ .n4viz-conf-band {
135
+ transition: opacity 120ms ease;
136
+ }
137
+ /* outline the guarantee (target) band so it reads out of the nested stack */
138
+ .n4viz-conf-band--target {
139
+ stroke: color-mix(in srgb, var(--n4-color-text, #0f172a) 26%, transparent);
140
+ stroke-width: 1;
141
+ }
142
+ .n4viz-conf-point {
143
+ stroke-linecap: round;
144
+ }
145
+
146
+ /* standalone dark fallback (when design tokens are not loaded) */
147
+ :root[data-theme="dark"] .n4viz,
148
+ .n4-theme-dark .n4viz {
149
+ --n4-color-border: rgba(255, 255, 255, 0.14);
150
+ --n4-color-muted: rgba(255, 255, 255, 0.62);
151
+ --n4-color-text: rgba(255, 255, 255, 0.92);
152
+ }