@contraagent/elements 0.0.0-stage → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (648) hide show
  1. package/README.md +83 -2
  2. package/custom-elements.json +5022 -0
  3. package/dist/charts/bar-chart.d.ts +32 -0
  4. package/dist/charts/bar-chart.d.ts.map +1 -0
  5. package/dist/charts/bar-chart.js +70 -0
  6. package/dist/charts/bar-chart.js.map +1 -0
  7. package/dist/charts/base.d.ts +48 -0
  8. package/dist/charts/base.d.ts.map +1 -0
  9. package/dist/charts/base.js +203 -0
  10. package/dist/charts/base.js.map +1 -0
  11. package/dist/charts/column-chart.d.ts +42 -0
  12. package/dist/charts/column-chart.d.ts.map +1 -0
  13. package/dist/charts/column-chart.js +146 -0
  14. package/dist/charts/column-chart.js.map +1 -0
  15. package/dist/charts/heatmap.d.ts +42 -0
  16. package/dist/charts/heatmap.d.ts.map +1 -0
  17. package/dist/charts/heatmap.js +124 -0
  18. package/dist/charts/heatmap.js.map +1 -0
  19. package/dist/charts/index.d.ts +9 -0
  20. package/dist/charts/index.d.ts.map +1 -0
  21. package/dist/charts/index.js +11 -0
  22. package/dist/charts/index.js.map +1 -0
  23. package/dist/charts/line-chart.d.ts +36 -0
  24. package/dist/charts/line-chart.d.ts.map +1 -0
  25. package/dist/charts/line-chart.js +118 -0
  26. package/dist/charts/line-chart.js.map +1 -0
  27. package/dist/charts/scale.d.ts +32 -0
  28. package/dist/charts/scale.d.ts.map +1 -0
  29. package/dist/charts/scale.js +50 -0
  30. package/dist/charts/scale.js.map +1 -0
  31. package/dist/charts/state-grid.d.ts +64 -0
  32. package/dist/charts/state-grid.d.ts.map +1 -0
  33. package/dist/charts/state-grid.js +223 -0
  34. package/dist/charts/state-grid.js.map +1 -0
  35. package/dist/charts/types.d.ts +34 -0
  36. package/dist/charts/types.d.ts.map +1 -0
  37. package/dist/charts/types.js +11 -0
  38. package/dist/charts/types.js.map +1 -0
  39. package/dist/checks/check-table.d.ts +32 -0
  40. package/dist/checks/check-table.d.ts.map +1 -0
  41. package/dist/checks/check-table.js +94 -0
  42. package/dist/checks/check-table.js.map +1 -0
  43. package/dist/checks/index.d.ts +4 -0
  44. package/dist/checks/index.d.ts.map +1 -0
  45. package/dist/checks/index.js +6 -0
  46. package/dist/checks/index.js.map +1 -0
  47. package/dist/checks/styles.d.ts +5 -0
  48. package/dist/checks/styles.d.ts.map +1 -0
  49. package/dist/checks/styles.js +30 -0
  50. package/dist/checks/styles.js.map +1 -0
  51. package/dist/checks/types.d.ts +35 -0
  52. package/dist/checks/types.d.ts.map +1 -0
  53. package/dist/checks/types.js +12 -0
  54. package/dist/checks/types.js.map +1 -0
  55. package/dist/code/code.d.ts +83 -0
  56. package/dist/code/code.d.ts.map +1 -0
  57. package/dist/code/code.js +206 -0
  58. package/dist/code/code.js.map +1 -0
  59. package/dist/code/highlight.d.ts +25 -0
  60. package/dist/code/highlight.d.ts.map +1 -0
  61. package/dist/code/highlight.js +312 -0
  62. package/dist/code/highlight.js.map +1 -0
  63. package/dist/code/index.d.ts +3 -0
  64. package/dist/code/index.d.ts.map +1 -0
  65. package/dist/code/index.js +5 -0
  66. package/dist/code/index.js.map +1 -0
  67. package/dist/core/clock.d.ts +20 -0
  68. package/dist/core/clock.d.ts.map +1 -0
  69. package/dist/core/clock.js +45 -0
  70. package/dist/core/clock.js.map +1 -0
  71. package/dist/core/define.d.ts +3 -0
  72. package/dist/core/define.d.ts.map +1 -0
  73. package/dist/core/define.js +8 -0
  74. package/dist/core/define.js.map +1 -0
  75. package/dist/core/events.d.ts +78 -0
  76. package/dist/core/events.d.ts.map +1 -0
  77. package/dist/core/events.js +8 -0
  78. package/dist/core/events.js.map +1 -0
  79. package/dist/core/format.d.ts +8 -0
  80. package/dist/core/format.d.ts.map +1 -0
  81. package/dist/core/format.js +28 -0
  82. package/dist/core/format.js.map +1 -0
  83. package/dist/core/frame.d.ts +4 -0
  84. package/dist/core/frame.d.ts.map +1 -0
  85. package/dist/core/frame.js +5 -0
  86. package/dist/core/frame.js.map +1 -0
  87. package/dist/core/strings.d.ts +3 -0
  88. package/dist/core/strings.d.ts.map +1 -0
  89. package/dist/core/strings.js +14 -0
  90. package/dist/core/strings.js.map +1 -0
  91. package/dist/core/tone.d.ts +8 -0
  92. package/dist/core/tone.d.ts.map +1 -0
  93. package/dist/core/tone.js +9 -0
  94. package/dist/core/tone.js.map +1 -0
  95. package/dist/count/count.d.ts +22 -0
  96. package/dist/count/count.d.ts.map +1 -0
  97. package/dist/count/count.js +60 -0
  98. package/dist/count/count.js.map +1 -0
  99. package/dist/count/elapsed.d.ts +18 -0
  100. package/dist/count/elapsed.d.ts.map +1 -0
  101. package/dist/count/elapsed.js +33 -0
  102. package/dist/count/elapsed.js.map +1 -0
  103. package/dist/count/index.d.ts +3 -0
  104. package/dist/count/index.d.ts.map +1 -0
  105. package/dist/count/index.js +5 -0
  106. package/dist/count/index.js.map +1 -0
  107. package/dist/define/all.d.ts +15 -0
  108. package/dist/define/all.d.ts.map +1 -0
  109. package/dist/define/all.js +16 -0
  110. package/dist/define/all.js.map +1 -0
  111. package/dist/define/charts.d.ts +8 -0
  112. package/dist/define/charts.d.ts.map +1 -0
  113. package/dist/define/charts.js +15 -0
  114. package/dist/define/charts.js.map +1 -0
  115. package/dist/define/check-table.d.ts +4 -0
  116. package/dist/define/check-table.d.ts.map +1 -0
  117. package/dist/define/check-table.js +7 -0
  118. package/dist/define/check-table.js.map +1 -0
  119. package/dist/define/code.d.ts +4 -0
  120. package/dist/define/code.d.ts.map +1 -0
  121. package/dist/define/code.js +7 -0
  122. package/dist/define/code.js.map +1 -0
  123. package/dist/define/count.d.ts +5 -0
  124. package/dist/define/count.d.ts.map +1 -0
  125. package/dist/define/count.js +9 -0
  126. package/dist/define/count.js.map +1 -0
  127. package/dist/define/data-table.d.ts +4 -0
  128. package/dist/define/data-table.d.ts.map +1 -0
  129. package/dist/define/data-table.js +7 -0
  130. package/dist/define/data-table.js.map +1 -0
  131. package/dist/define/graph.d.ts +6 -0
  132. package/dist/define/graph.d.ts.map +1 -0
  133. package/dist/define/graph.js +9 -0
  134. package/dist/define/graph.js.map +1 -0
  135. package/dist/define/json-tree.d.ts +4 -0
  136. package/dist/define/json-tree.d.ts.map +1 -0
  137. package/dist/define/json-tree.js +7 -0
  138. package/dist/define/json-tree.js.map +1 -0
  139. package/dist/define/lanes.d.ts +4 -0
  140. package/dist/define/lanes.d.ts.map +1 -0
  141. package/dist/define/lanes.js +7 -0
  142. package/dist/define/lanes.js.map +1 -0
  143. package/dist/define/markdown.d.ts +4 -0
  144. package/dist/define/markdown.d.ts.map +1 -0
  145. package/dist/define/markdown.js +7 -0
  146. package/dist/define/markdown.js.map +1 -0
  147. package/dist/define/matrix.d.ts +4 -0
  148. package/dist/define/matrix.d.ts.map +1 -0
  149. package/dist/define/matrix.js +7 -0
  150. package/dist/define/matrix.js.map +1 -0
  151. package/dist/define/segmented.d.ts +4 -0
  152. package/dist/define/segmented.d.ts.map +1 -0
  153. package/dist/define/segmented.js +7 -0
  154. package/dist/define/segmented.js.map +1 -0
  155. package/dist/define/tiles.d.ts +5 -0
  156. package/dist/define/tiles.d.ts.map +1 -0
  157. package/dist/define/tiles.js +9 -0
  158. package/dist/define/tiles.js.map +1 -0
  159. package/dist/define/transcript.d.ts +4 -0
  160. package/dist/define/transcript.d.ts.map +1 -0
  161. package/dist/define/transcript.js +7 -0
  162. package/dist/define/transcript.js.map +1 -0
  163. package/dist/define/tree.d.ts +4 -0
  164. package/dist/define/tree.d.ts.map +1 -0
  165. package/dist/define/tree.js +7 -0
  166. package/dist/define/tree.js.map +1 -0
  167. package/dist/graph/arrange.d.ts +43 -0
  168. package/dist/graph/arrange.d.ts.map +1 -0
  169. package/dist/graph/arrange.js +390 -0
  170. package/dist/graph/arrange.js.map +1 -0
  171. package/dist/graph/card.d.ts +71 -0
  172. package/dist/graph/card.d.ts.map +1 -0
  173. package/dist/graph/card.js +185 -0
  174. package/dist/graph/card.js.map +1 -0
  175. package/dist/graph/host.d.ts +82 -0
  176. package/dist/graph/host.d.ts.map +1 -0
  177. package/dist/graph/host.js +21 -0
  178. package/dist/graph/host.js.map +1 -0
  179. package/dist/graph/icons.d.ts +7 -0
  180. package/dist/graph/icons.d.ts.map +1 -0
  181. package/dist/graph/icons.js +18 -0
  182. package/dist/graph/icons.js.map +1 -0
  183. package/dist/graph/index.d.ts +15 -0
  184. package/dist/graph/index.d.ts.map +1 -0
  185. package/dist/graph/index.js +17 -0
  186. package/dist/graph/index.js.map +1 -0
  187. package/dist/graph/layered-graph.d.ts +226 -0
  188. package/dist/graph/layered-graph.d.ts.map +1 -0
  189. package/dist/graph/layered-graph.js +396 -0
  190. package/dist/graph/layered-graph.js.map +1 -0
  191. package/dist/graph/layout.d.ts +80 -0
  192. package/dist/graph/layout.d.ts.map +1 -0
  193. package/dist/graph/layout.js +264 -0
  194. package/dist/graph/layout.js.map +1 -0
  195. package/dist/graph/marks.d.ts +24 -0
  196. package/dist/graph/marks.d.ts.map +1 -0
  197. package/dist/graph/marks.js +38 -0
  198. package/dist/graph/marks.js.map +1 -0
  199. package/dist/graph/nav.d.ts +14 -0
  200. package/dist/graph/nav.d.ts.map +1 -0
  201. package/dist/graph/nav.js +14 -0
  202. package/dist/graph/nav.js.map +1 -0
  203. package/dist/graph/pan-zoom.d.ts +80 -0
  204. package/dist/graph/pan-zoom.d.ts.map +1 -0
  205. package/dist/graph/pan-zoom.js +191 -0
  206. package/dist/graph/pan-zoom.js.map +1 -0
  207. package/dist/graph/paths.d.ts +9 -0
  208. package/dist/graph/paths.d.ts.map +1 -0
  209. package/dist/graph/paths.js +44 -0
  210. package/dist/graph/paths.js.map +1 -0
  211. package/dist/graph/place-card.d.ts +36 -0
  212. package/dist/graph/place-card.d.ts.map +1 -0
  213. package/dist/graph/place-card.js +68 -0
  214. package/dist/graph/place-card.js.map +1 -0
  215. package/dist/graph/strings.d.ts +50 -0
  216. package/dist/graph/strings.d.ts.map +1 -0
  217. package/dist/graph/strings.js +37 -0
  218. package/dist/graph/strings.js.map +1 -0
  219. package/dist/graph/styles.d.ts +2 -0
  220. package/dist/graph/styles.d.ts.map +1 -0
  221. package/dist/graph/styles.js +203 -0
  222. package/dist/graph/styles.js.map +1 -0
  223. package/dist/graph/types.d.ts +184 -0
  224. package/dist/graph/types.d.ts.map +1 -0
  225. package/dist/graph/types.js +2 -0
  226. package/dist/graph/types.js.map +1 -0
  227. package/dist/graph/view.d.ts +17 -0
  228. package/dist/graph/view.d.ts.map +1 -0
  229. package/dist/graph/view.js +21 -0
  230. package/dist/graph/view.js.map +1 -0
  231. package/dist/graph/views/dag.d.ts +10 -0
  232. package/dist/graph/views/dag.d.ts.map +1 -0
  233. package/dist/graph/views/dag.js +292 -0
  234. package/dist/graph/views/dag.js.map +1 -0
  235. package/dist/graph/views/foot.d.ts +8 -0
  236. package/dist/graph/views/foot.d.ts.map +1 -0
  237. package/dist/graph/views/foot.js +103 -0
  238. package/dist/graph/views/foot.js.map +1 -0
  239. package/dist/graph/views/node-table.d.ts +17 -0
  240. package/dist/graph/views/node-table.d.ts.map +1 -0
  241. package/dist/graph/views/node-table.js +80 -0
  242. package/dist/graph/views/node-table.js.map +1 -0
  243. package/dist/index.d.ts +24 -0
  244. package/dist/index.d.ts.map +1 -0
  245. package/dist/index.js +28 -0
  246. package/dist/index.js.map +1 -0
  247. package/dist/json/index.d.ts +2 -0
  248. package/dist/json/index.d.ts.map +1 -0
  249. package/dist/json/index.js +3 -0
  250. package/dist/json/index.js.map +1 -0
  251. package/dist/json/json-tree.d.ts +21 -0
  252. package/dist/json/json-tree.d.ts.map +1 -0
  253. package/dist/json/json-tree.js +51 -0
  254. package/dist/json/json-tree.js.map +1 -0
  255. package/dist/lanes/index.d.ts +5 -0
  256. package/dist/lanes/index.d.ts.map +1 -0
  257. package/dist/lanes/index.js +7 -0
  258. package/dist/lanes/index.js.map +1 -0
  259. package/dist/lanes/lanes.d.ts +56 -0
  260. package/dist/lanes/lanes.d.ts.map +1 -0
  261. package/dist/lanes/lanes.js +160 -0
  262. package/dist/lanes/lanes.js.map +1 -0
  263. package/dist/lanes/stack.d.ts +26 -0
  264. package/dist/lanes/stack.d.ts.map +1 -0
  265. package/dist/lanes/stack.js +43 -0
  266. package/dist/lanes/stack.js.map +1 -0
  267. package/dist/lanes/styles.d.ts +2 -0
  268. package/dist/lanes/styles.d.ts.map +1 -0
  269. package/dist/lanes/styles.js +30 -0
  270. package/dist/lanes/styles.js.map +1 -0
  271. package/dist/lanes/types.d.ts +41 -0
  272. package/dist/lanes/types.d.ts.map +1 -0
  273. package/dist/lanes/types.js +6 -0
  274. package/dist/lanes/types.js.map +1 -0
  275. package/dist/markdown/cae-markdown.d.ts +37 -0
  276. package/dist/markdown/cae-markdown.d.ts.map +1 -0
  277. package/dist/markdown/cae-markdown.js +68 -0
  278. package/dist/markdown/cae-markdown.js.map +1 -0
  279. package/dist/markdown/highlight.d.ts +2 -0
  280. package/dist/markdown/highlight.d.ts.map +1 -0
  281. package/dist/markdown/highlight.js +3 -0
  282. package/dist/markdown/highlight.js.map +1 -0
  283. package/dist/markdown/index.d.ts +4 -0
  284. package/dist/markdown/index.d.ts.map +1 -0
  285. package/dist/markdown/index.js +6 -0
  286. package/dist/markdown/index.js.map +1 -0
  287. package/dist/markdown/markdown.d.ts +4 -0
  288. package/dist/markdown/markdown.d.ts.map +1 -0
  289. package/dist/markdown/markdown.js +105 -0
  290. package/dist/markdown/markdown.js.map +1 -0
  291. package/dist/matrix/grid-step.d.ts +8 -0
  292. package/dist/matrix/grid-step.d.ts.map +1 -0
  293. package/dist/matrix/grid-step.js +69 -0
  294. package/dist/matrix/grid-step.js.map +1 -0
  295. package/dist/matrix/index.d.ts +5 -0
  296. package/dist/matrix/index.d.ts.map +1 -0
  297. package/dist/matrix/index.js +7 -0
  298. package/dist/matrix/index.js.map +1 -0
  299. package/dist/matrix/mark-matrix.d.ts +97 -0
  300. package/dist/matrix/mark-matrix.d.ts.map +1 -0
  301. package/dist/matrix/mark-matrix.js +272 -0
  302. package/dist/matrix/mark-matrix.js.map +1 -0
  303. package/dist/matrix/styles.d.ts +4 -0
  304. package/dist/matrix/styles.d.ts.map +1 -0
  305. package/dist/matrix/styles.js +47 -0
  306. package/dist/matrix/styles.js.map +1 -0
  307. package/dist/matrix/types.d.ts +79 -0
  308. package/dist/matrix/types.d.ts.map +1 -0
  309. package/dist/matrix/types.js +5 -0
  310. package/dist/matrix/types.js.map +1 -0
  311. package/dist/primitives/fact-line.d.ts +14 -0
  312. package/dist/primitives/fact-line.d.ts.map +1 -0
  313. package/dist/primitives/fact-line.js +18 -0
  314. package/dist/primitives/fact-line.js.map +1 -0
  315. package/dist/primitives/icon.d.ts +14 -0
  316. package/dist/primitives/icon.d.ts.map +1 -0
  317. package/dist/primitives/icon.js +19 -0
  318. package/dist/primitives/icon.js.map +1 -0
  319. package/dist/primitives/index.d.ts +10 -0
  320. package/dist/primitives/index.d.ts.map +1 -0
  321. package/dist/primitives/index.js +13 -0
  322. package/dist/primitives/index.js.map +1 -0
  323. package/dist/primitives/legend.d.ts +28 -0
  324. package/dist/primitives/legend.d.ts.map +1 -0
  325. package/dist/primitives/legend.js +28 -0
  326. package/dist/primitives/legend.js.map +1 -0
  327. package/dist/primitives/pill.d.ts +23 -0
  328. package/dist/primitives/pill.d.ts.map +1 -0
  329. package/dist/primitives/pill.js +40 -0
  330. package/dist/primitives/pill.js.map +1 -0
  331. package/dist/primitives/roving-focus.d.ts +47 -0
  332. package/dist/primitives/roving-focus.d.ts.map +1 -0
  333. package/dist/primitives/roving-focus.js +111 -0
  334. package/dist/primitives/roving-focus.js.map +1 -0
  335. package/dist/primitives/segmented.d.ts +41 -0
  336. package/dist/primitives/segmented.d.ts.map +1 -0
  337. package/dist/primitives/segmented.js +88 -0
  338. package/dist/primitives/segmented.js.map +1 -0
  339. package/dist/primitives/share-bar.d.ts +37 -0
  340. package/dist/primitives/share-bar.d.ts.map +1 -0
  341. package/dist/primitives/share-bar.js +69 -0
  342. package/dist/primitives/share-bar.js.map +1 -0
  343. package/dist/primitives/states.d.ts +19 -0
  344. package/dist/primitives/states.d.ts.map +1 -0
  345. package/dist/primitives/states.js +11 -0
  346. package/dist/primitives/states.js.map +1 -0
  347. package/dist/primitives/window.d.ts +24 -0
  348. package/dist/primitives/window.d.ts.map +1 -0
  349. package/dist/primitives/window.js +56 -0
  350. package/dist/primitives/window.js.map +1 -0
  351. package/dist/styles/chips.d.ts +2 -0
  352. package/dist/styles/chips.d.ts.map +1 -0
  353. package/dist/styles/chips.js +18 -0
  354. package/dist/styles/chips.js.map +1 -0
  355. package/dist/styles/facts.d.ts +2 -0
  356. package/dist/styles/facts.d.ts.map +1 -0
  357. package/dist/styles/facts.js +7 -0
  358. package/dist/styles/facts.js.map +1 -0
  359. package/dist/styles/index.d.ts +16 -0
  360. package/dist/styles/index.d.ts.map +1 -0
  361. package/dist/styles/index.js +15 -0
  362. package/dist/styles/index.js.map +1 -0
  363. package/dist/styles/layout.d.ts +2 -0
  364. package/dist/styles/layout.d.ts.map +1 -0
  365. package/dist/styles/layout.js +33 -0
  366. package/dist/styles/layout.js.map +1 -0
  367. package/dist/styles/marks.d.ts +2 -0
  368. package/dist/styles/marks.d.ts.map +1 -0
  369. package/dist/styles/marks.js +30 -0
  370. package/dist/styles/marks.js.map +1 -0
  371. package/dist/styles/meter.d.ts +3 -0
  372. package/dist/styles/meter.d.ts.map +1 -0
  373. package/dist/styles/meter.js +9 -0
  374. package/dist/styles/meter.js.map +1 -0
  375. package/dist/styles/motion.d.ts +2 -0
  376. package/dist/styles/motion.d.ts.map +1 -0
  377. package/dist/styles/motion.js +27 -0
  378. package/dist/styles/motion.js.map +1 -0
  379. package/dist/styles/prose.d.ts +3 -0
  380. package/dist/styles/prose.d.ts.map +1 -0
  381. package/dist/styles/prose.js +64 -0
  382. package/dist/styles/prose.js.map +1 -0
  383. package/dist/styles/reset.d.ts +2 -0
  384. package/dist/styles/reset.d.ts.map +1 -0
  385. package/dist/styles/reset.js +13 -0
  386. package/dist/styles/reset.js.map +1 -0
  387. package/dist/styles/status.d.ts +2 -0
  388. package/dist/styles/status.d.ts.map +1 -0
  389. package/dist/styles/status.js +52 -0
  390. package/dist/styles/status.js.map +1 -0
  391. package/dist/styles/text.d.ts +2 -0
  392. package/dist/styles/text.d.ts.map +1 -0
  393. package/dist/styles/text.js +21 -0
  394. package/dist/styles/text.js.map +1 -0
  395. package/dist/styles/tokens.d.ts +8 -0
  396. package/dist/styles/tokens.d.ts.map +1 -0
  397. package/dist/styles/tokens.js +32 -0
  398. package/dist/styles/tokens.js.map +1 -0
  399. package/dist/table/data-table.d.ts +106 -0
  400. package/dist/table/data-table.d.ts.map +1 -0
  401. package/dist/table/data-table.js +408 -0
  402. package/dist/table/data-table.js.map +1 -0
  403. package/dist/table/index.d.ts +4 -0
  404. package/dist/table/index.d.ts.map +1 -0
  405. package/dist/table/index.js +6 -0
  406. package/dist/table/index.js.map +1 -0
  407. package/dist/table/styles.d.ts +2 -0
  408. package/dist/table/styles.d.ts.map +1 -0
  409. package/dist/table/styles.js +32 -0
  410. package/dist/table/styles.js.map +1 -0
  411. package/dist/table/types.d.ts +48 -0
  412. package/dist/table/types.d.ts.map +1 -0
  413. package/dist/table/types.js +30 -0
  414. package/dist/table/types.js.map +1 -0
  415. package/dist/themes/boot.d.ts +7 -0
  416. package/dist/themes/boot.d.ts.map +1 -0
  417. package/dist/themes/boot.js +14 -0
  418. package/dist/themes/boot.js.map +1 -0
  419. package/dist/themes/choice.d.ts +16 -0
  420. package/dist/themes/choice.d.ts.map +1 -0
  421. package/dist/themes/choice.js +45 -0
  422. package/dist/themes/choice.js.map +1 -0
  423. package/dist/themes/data.d.ts +43 -0
  424. package/dist/themes/data.d.ts.map +1 -0
  425. package/dist/themes/data.js +408 -0
  426. package/dist/themes/data.js.map +1 -0
  427. package/dist/themes/index.d.ts +7 -0
  428. package/dist/themes/index.d.ts.map +1 -0
  429. package/dist/themes/index.js +11 -0
  430. package/dist/themes/index.js.map +1 -0
  431. package/dist/themes/sheet.d.ts +16 -0
  432. package/dist/themes/sheet.d.ts.map +1 -0
  433. package/dist/themes/sheet.js +28 -0
  434. package/dist/themes/sheet.js.map +1 -0
  435. package/dist/themes/token-meanings.d.ts +3 -0
  436. package/dist/themes/token-meanings.d.ts.map +1 -0
  437. package/dist/themes/token-meanings.js +67 -0
  438. package/dist/themes/token-meanings.js.map +1 -0
  439. package/dist/themes/tokens-list.d.ts +14 -0
  440. package/dist/themes/tokens-list.d.ts.map +1 -0
  441. package/dist/themes/tokens-list.js +69 -0
  442. package/dist/themes/tokens-list.js.map +1 -0
  443. package/dist/tiles/index.d.ts +4 -0
  444. package/dist/tiles/index.d.ts.map +1 -0
  445. package/dist/tiles/index.js +6 -0
  446. package/dist/tiles/index.js.map +1 -0
  447. package/dist/tiles/stat-tiles.d.ts +40 -0
  448. package/dist/tiles/stat-tiles.d.ts.map +1 -0
  449. package/dist/tiles/stat-tiles.js +99 -0
  450. package/dist/tiles/stat-tiles.js.map +1 -0
  451. package/dist/tiles/styles.d.ts +2 -0
  452. package/dist/tiles/styles.d.ts.map +1 -0
  453. package/dist/tiles/styles.js +23 -0
  454. package/dist/tiles/styles.js.map +1 -0
  455. package/dist/tiles/types.d.ts +22 -0
  456. package/dist/tiles/types.d.ts.map +1 -0
  457. package/dist/tiles/types.js +2 -0
  458. package/dist/tiles/types.js.map +1 -0
  459. package/dist/transcript/follow-scroll.d.ts +21 -0
  460. package/dist/transcript/follow-scroll.d.ts.map +1 -0
  461. package/dist/transcript/follow-scroll.js +76 -0
  462. package/dist/transcript/follow-scroll.js.map +1 -0
  463. package/dist/transcript/index.d.ts +5 -0
  464. package/dist/transcript/index.d.ts.map +1 -0
  465. package/dist/transcript/index.js +7 -0
  466. package/dist/transcript/index.js.map +1 -0
  467. package/dist/transcript/styles.d.ts +2 -0
  468. package/dist/transcript/styles.d.ts.map +1 -0
  469. package/dist/transcript/styles.js +114 -0
  470. package/dist/transcript/styles.js.map +1 -0
  471. package/dist/transcript/tags.d.ts +6 -0
  472. package/dist/transcript/tags.d.ts.map +1 -0
  473. package/dist/transcript/tags.js +13 -0
  474. package/dist/transcript/tags.js.map +1 -0
  475. package/dist/transcript/tool-card.d.ts +16 -0
  476. package/dist/transcript/tool-card.d.ts.map +1 -0
  477. package/dist/transcript/tool-card.js +87 -0
  478. package/dist/transcript/tool-card.js.map +1 -0
  479. package/dist/transcript/transcript.d.ts +103 -0
  480. package/dist/transcript/transcript.d.ts.map +1 -0
  481. package/dist/transcript/transcript.js +397 -0
  482. package/dist/transcript/transcript.js.map +1 -0
  483. package/dist/transcript/types.d.ts +161 -0
  484. package/dist/transcript/types.d.ts.map +1 -0
  485. package/dist/transcript/types.js +25 -0
  486. package/dist/transcript/types.js.map +1 -0
  487. package/dist/tree/index.d.ts +2 -0
  488. package/dist/tree/index.d.ts.map +1 -0
  489. package/dist/tree/index.js +4 -0
  490. package/dist/tree/index.js.map +1 -0
  491. package/dist/tree/tree.d.ts +83 -0
  492. package/dist/tree/tree.d.ts.map +1 -0
  493. package/dist/tree/tree.js +251 -0
  494. package/dist/tree/tree.js.map +1 -0
  495. package/docs/charts.md +58 -0
  496. package/docs/check-table.md +40 -0
  497. package/docs/code.md +55 -0
  498. package/docs/data-table.md +57 -0
  499. package/docs/examples/charts.ts +61 -0
  500. package/docs/examples/check-table.ts +19 -0
  501. package/docs/examples/ci-pipeline.ts +271 -0
  502. package/docs/examples/code.ts +28 -0
  503. package/docs/examples/data-table.ts +39 -0
  504. package/docs/examples/graph.ts +57 -0
  505. package/docs/examples/lanes.ts +40 -0
  506. package/docs/examples/matrix.ts +56 -0
  507. package/docs/examples/page.css +34 -0
  508. package/docs/examples/segmented.ts +18 -0
  509. package/docs/examples/status.ts +30 -0
  510. package/docs/examples/theme.css +54 -0
  511. package/docs/examples/tiles.ts +27 -0
  512. package/docs/examples/transcript.ts +59 -0
  513. package/docs/examples/tree.ts +44 -0
  514. package/docs/graph.md +112 -0
  515. package/docs/lanes.md +48 -0
  516. package/docs/matrix.md +34 -0
  517. package/docs/page.md +87 -0
  518. package/docs/primitives.md +57 -0
  519. package/docs/strings.md +16 -0
  520. package/docs/theming.md +147 -0
  521. package/docs/tiles.md +40 -0
  522. package/docs/transcript.md +73 -0
  523. package/docs/tree.md +44 -0
  524. package/docs/tsconfig.json +20 -0
  525. package/package.json +177 -4
  526. package/src/charts/bar-chart.ts +74 -0
  527. package/src/charts/base.ts +188 -0
  528. package/src/charts/column-chart.ts +153 -0
  529. package/src/charts/heatmap.ts +129 -0
  530. package/src/charts/index.ts +10 -0
  531. package/src/charts/line-chart.ts +128 -0
  532. package/src/charts/scale.ts +61 -0
  533. package/src/charts/state-grid.ts +245 -0
  534. package/src/charts/types.ts +48 -0
  535. package/src/checks/check-table.ts +85 -0
  536. package/src/checks/index.ts +5 -0
  537. package/src/checks/styles.ts +31 -0
  538. package/src/checks/types.ts +48 -0
  539. package/src/code/code.ts +199 -0
  540. package/src/code/highlight.ts +378 -0
  541. package/src/code/index.ts +4 -0
  542. package/src/core/clock.ts +46 -0
  543. package/src/core/define.ts +7 -0
  544. package/src/core/events.ts +89 -0
  545. package/src/core/format.ts +25 -0
  546. package/src/core/frame.ts +5 -0
  547. package/src/core/strings.ts +11 -0
  548. package/src/core/tone.ts +14 -0
  549. package/src/count/count.ts +54 -0
  550. package/src/count/elapsed.ts +33 -0
  551. package/src/count/index.ts +4 -0
  552. package/src/define/all.ts +15 -0
  553. package/src/define/charts.ts +17 -0
  554. package/src/define/check-table.ts +9 -0
  555. package/src/define/code.ts +9 -0
  556. package/src/define/count.ts +11 -0
  557. package/src/define/data-table.ts +9 -0
  558. package/src/define/graph.ts +11 -0
  559. package/src/define/json-tree.ts +9 -0
  560. package/src/define/lanes.ts +9 -0
  561. package/src/define/markdown.ts +9 -0
  562. package/src/define/matrix.ts +9 -0
  563. package/src/define/segmented.ts +9 -0
  564. package/src/define/tiles.ts +11 -0
  565. package/src/define/transcript.ts +9 -0
  566. package/src/define/tree.ts +9 -0
  567. package/src/graph/arrange.ts +399 -0
  568. package/src/graph/card.ts +209 -0
  569. package/src/graph/host.ts +100 -0
  570. package/src/graph/icons.ts +23 -0
  571. package/src/graph/index.ts +16 -0
  572. package/src/graph/layered-graph.ts +417 -0
  573. package/src/graph/layout.ts +331 -0
  574. package/src/graph/marks.ts +42 -0
  575. package/src/graph/nav.ts +19 -0
  576. package/src/graph/pan-zoom.ts +219 -0
  577. package/src/graph/paths.ts +41 -0
  578. package/src/graph/place-card.ts +93 -0
  579. package/src/graph/strings.ts +86 -0
  580. package/src/graph/styles.ts +204 -0
  581. package/src/graph/types.ts +202 -0
  582. package/src/graph/view.ts +28 -0
  583. package/src/graph/views/dag.ts +294 -0
  584. package/src/graph/views/foot.ts +109 -0
  585. package/src/graph/views/node-table.ts +90 -0
  586. package/src/index.ts +27 -0
  587. package/src/json/index.ts +2 -0
  588. package/src/json/json-tree.ts +49 -0
  589. package/src/lanes/index.ts +6 -0
  590. package/src/lanes/lanes.ts +143 -0
  591. package/src/lanes/stack.ts +51 -0
  592. package/src/lanes/styles.ts +30 -0
  593. package/src/lanes/types.ts +51 -0
  594. package/src/markdown/cae-markdown.ts +64 -0
  595. package/src/markdown/highlight.ts +2 -0
  596. package/src/markdown/index.ts +5 -0
  597. package/src/markdown/markdown.ts +110 -0
  598. package/src/matrix/grid-step.ts +58 -0
  599. package/src/matrix/index.ts +6 -0
  600. package/src/matrix/mark-matrix.ts +285 -0
  601. package/src/matrix/styles.ts +48 -0
  602. package/src/matrix/types.ts +83 -0
  603. package/src/primitives/fact-line.ts +26 -0
  604. package/src/primitives/icon.ts +26 -0
  605. package/src/primitives/index.ts +12 -0
  606. package/src/primitives/legend.ts +56 -0
  607. package/src/primitives/pill.ts +58 -0
  608. package/src/primitives/roving-focus.ts +138 -0
  609. package/src/primitives/segmented.ts +92 -0
  610. package/src/primitives/share-bar.ts +94 -0
  611. package/src/primitives/states.ts +28 -0
  612. package/src/primitives/window.ts +65 -0
  613. package/src/styles/chips.ts +18 -0
  614. package/src/styles/facts.ts +7 -0
  615. package/src/styles/index.ts +19 -0
  616. package/src/styles/layout.ts +33 -0
  617. package/src/styles/marks.ts +30 -0
  618. package/src/styles/meter.ts +9 -0
  619. package/src/styles/motion.ts +27 -0
  620. package/src/styles/prose.ts +64 -0
  621. package/src/styles/reset.ts +13 -0
  622. package/src/styles/status.ts +52 -0
  623. package/src/styles/text.ts +21 -0
  624. package/src/styles/tokens.ts +35 -0
  625. package/src/table/data-table.ts +367 -0
  626. package/src/table/index.ts +5 -0
  627. package/src/table/styles.ts +32 -0
  628. package/src/table/types.ts +73 -0
  629. package/src/themes/boot.ts +14 -0
  630. package/src/themes/choice.ts +47 -0
  631. package/src/themes/data.ts +433 -0
  632. package/src/themes/index.ts +10 -0
  633. package/src/themes/sheet.ts +29 -0
  634. package/src/themes/token-meanings.ts +67 -0
  635. package/src/themes/tokens-list.ts +82 -0
  636. package/src/tiles/index.ts +5 -0
  637. package/src/tiles/stat-tiles.ts +92 -0
  638. package/src/tiles/styles.ts +23 -0
  639. package/src/tiles/types.ts +20 -0
  640. package/src/transcript/follow-scroll.ts +72 -0
  641. package/src/transcript/index.ts +6 -0
  642. package/src/transcript/styles.ts +114 -0
  643. package/src/transcript/tags.ts +18 -0
  644. package/src/transcript/tool-card.ts +103 -0
  645. package/src/transcript/transcript.ts +358 -0
  646. package/src/transcript/types.ts +167 -0
  647. package/src/tree/index.ts +3 -0
  648. package/src/tree/tree.ts +263 -0
@@ -0,0 +1,73 @@
1
+ # Transcript
2
+
3
+ `<cae-transcript>` shows a conversation with an agent: chat bubbles for the
4
+ prompts, the answers and the model's reasoning, lines of the agent's own log,
5
+ and a card per tool call that opens on its command and output. A web search
6
+ lists the pages it returned as links; a page read shows its URL. Register it
7
+ with `@contraagent/elements/transcript/define`; the types are in
8
+ `@contraagent/elements/transcript`.
9
+
10
+ ![A transcript of two sessions: an API request sent again, a web search with 2 results, a log line, and the assistant's answer](images/transcript.webp)
11
+
12
+ <!-- not on the site -->
13
+ Live on this topic's page of the documentation site (`pnpm run docs` in `web/`).
14
+
15
+ ::code{file="examples/transcript.ts"}
16
+
17
+ ## Sections and items
18
+
19
+ The conversation comes in sections, one per session with the agent. Above two
20
+ sections, a picker shows one at a time; each section names itself (`title`),
21
+ can add short facts after its name (a model) and a mark of how it ended
22
+ (`verdict`: ✓ with the tone `done`, ✕ otherwise). A section's head shows its
23
+ `tags` (who ran it) and its `details`: folded texts, code (a command line) or
24
+ prose (a prompt). A `footer` after the items says how the section ended, with
25
+ a list (errors) or a note.
26
+
27
+ ::code{file="../src/transcript/types.ts" from="export interface TranscriptSection {" to="/** Where the reader was in a transcript. */"}
28
+
29
+ An item is a prompt, a message or reasoning (markdown), an event (a glyph, a
30
+ title and a detail), a notice, or a tool card:
31
+
32
+ ::code{file="../src/transcript/types.ts" from="/** One tool call:" to="/** A labelled value in a section's head (who ran it). */"}
33
+
34
+ ## Following and reading
35
+
36
+ `shown` picks a section (0-based); null follows the latest. While the reader
37
+ is at the bottom, new content scrolls into view. Once they scroll up, it stays
38
+ where they are, and a button counts what arrived below: `count` is how much
39
+ the transcript holds (by default its sections and items), so a host that
40
+ counts events sets it. A section that starts while the reader is scrolled up
41
+ in the latest one keeps the one they read on screen. `live` shows the agent
42
+ working, and a tool call with no result as running; without it, such a call
43
+ was interrupted.
44
+
45
+ A host that loads a transcript in pages sets `loading` until the first page
46
+ has arrived, and `earlier` to the number of lines before it that are not
47
+ loaded: a button then asks for them with `cae-load-earlier`, and the next
48
+ `sections` it gets is the content from further back, which keeps the reader's
49
+ place. For another transcript, give it a new element.
50
+
51
+ `memory` keeps what the reader opened and where they were: `isOpen` and
52
+ `setOpen` for the tool cards, `scroll` and `setScroll` for the position, which
53
+ is restored once the content has arrived. Without it, both last as long as the
54
+ element. `reveal(id)` opens a tool card and scrolls it into view once its
55
+ section is shown; it returns that section's index for the host to show.
56
+
57
+ ## Events
58
+
59
+ - `cae-section-change` with `{index}`: the reader picked a section (null: the
60
+ latest). The host sets `shown`.
61
+ - `cae-section-shown` with `{index}`: the section on screen changed (-1: none),
62
+ also when a new section keeps the one being read.
63
+ - `cae-load-earlier`: the reader asked for the content before `earlier`.
64
+
65
+ ## Look and words
66
+
67
+ Markdown is turned into HTML by `markdown` (`md` of
68
+ `@contraagent/elements/markdown` escapes the text); without it, answers and
69
+ reasoning show as plain text. `renderDetail` draws an open prose detail. The
70
+ parts are `picker`, `section`, `tag`, `bubble`, `notice`, `tool`, `tool-body`
71
+ and `verdict`; `tagChips` and `tagStyles` draw tags elsewhere in the same
72
+ look. The words are `strings` ([Strings](strings.md)): the picker's name and
73
+ tooltip, the bubbles' heads, the tool cards' statuses, the counts.
package/docs/tree.md ADDED
@@ -0,0 +1,44 @@
1
+ # Tree
2
+
3
+ `<cae-tree>` shows items in a tree, the children of each under it, folded and
4
+ opened by the reader: files and directories, say. Register it with
5
+ `@contraagent/elements/tree/define`; the types are in
6
+ `@contraagent/elements/tree`.
7
+
8
+ <!-- not on the site -->
9
+ Live on this topic's page of the documentation site (`pnpm run docs` in `web/`).
10
+
11
+ ::code{file="examples/tree.ts"}
12
+
13
+ ## Items
14
+
15
+ An item is a `TreeItem`: an `id` unique in the tree, a `name` and its
16
+ `children`. Its icon is a directory for an item with children and a file for one
17
+ without, unless `icon` names one. A `badge` is a word beside the name in the
18
+ colour of its `tone`, with the tone's mark (✓ done, ✕ failed, ◌ attention).
19
+ `open: false` folds an item at first.
20
+
21
+ ::code{file="../src/tree/tree.ts" from="/** One item of a tree" to="export interface TreeStrings"}
22
+
23
+ ## Selection
24
+
25
+ `selected` is the selected item's id; the element shows it and opens its
26
+ ancestors, and the host sets it. A click, Enter or Space on a selectable item
27
+ sends `cae-select` with its id: by default an item with no children is
28
+ selectable, and an item with children opens and closes instead. The toggle
29
+ before an item with children, Right and Left open and close it and send
30
+ `cae-toggle`. A host pairs a tree with `<cae-code>` by showing the selected
31
+ file's text beside it ([Code](code.md)).
32
+
33
+ ## Keyboard
34
+
35
+ The tree is one tab stop, on the selected item or else the first. Up and Down
36
+ move between the items shown, Right opens an item and then moves to its first
37
+ child, Left closes it or moves to its parent, Home and End go to the first and
38
+ the last item, and a letter moves to the next item whose name starts with it. A
39
+ screen reader hears each item's level, its place among its siblings, and whether
40
+ it is open and selected.
41
+
42
+ ## Look
43
+
44
+ The parts are `tree`, `item` (with `data-id`) and `empty`.
@@ -0,0 +1,20 @@
1
+ {
2
+ // The examples are documentation: they compile against the package as it is.
3
+ "extends": "../../../tsconfig.base.json",
4
+ "compilerOptions": {
5
+ "noEmit": true,
6
+ "paths": {
7
+ "@contraagent/elements": ["../src/index.ts"],
8
+ "@contraagent/elements/segmented/define": ["../src/define/segmented.ts"],
9
+ "@contraagent/elements/data-table": ["../src/table/index.ts"],
10
+ "@contraagent/elements/data-table/define": ["../src/define/data-table.ts"],
11
+ "@contraagent/elements/tiles": ["../src/tiles/index.ts"],
12
+ "@contraagent/elements/tiles/define": ["../src/define/tiles.ts"],
13
+ "@contraagent/elements/lanes": ["../src/lanes/index.ts"],
14
+ "@contraagent/elements/lanes/define": ["../src/define/lanes.ts"],
15
+ "@contraagent/elements/check-table": ["../src/checks/index.ts"],
16
+ "@contraagent/elements/check-table/define": ["../src/define/check-table.ts"]
17
+ }
18
+ },
19
+ "include": ["examples/**/*.ts"]
20
+ }
package/package.json CHANGED
@@ -1,6 +1,179 @@
1
1
  {
2
2
  "name": "@contraagent/elements",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.2.0",
4
+ "description": "Generic web components (Lit) and their parts: design tokens, themes, status pills, legends, a segmented control, a data table, a layered graph, a mark matrix, stat tiles, time lanes, charts (columns, lines, a heatmap, horizontal bars), a check table, a transcript, a JSON tree, markdown, highlighted code, a tree of items and counters. No contraagent data, no localization library",
5
+ "license": "MIT",
6
+ "keywords": [
7
+ "web-components",
8
+ "lit",
9
+ "custom-elements",
10
+ "charts",
11
+ "data-table",
12
+ "design-tokens"
13
+ ],
14
+ "homepage": "https://t-tani.github.io/contraagent/",
15
+ "repository": {
16
+ "type": "git",
17
+ "url": "git+https://github.com/t-tani/contraagent.git",
18
+ "directory": "web/packages/elements"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/t-tani/contraagent/issues"
22
+ },
23
+ "type": "module",
24
+ "exports": {
25
+ ".": {
26
+ "types": "./dist/index.d.ts",
27
+ "default": "./dist/index.js"
28
+ },
29
+ "./primitives": {
30
+ "types": "./dist/primitives/index.d.ts",
31
+ "default": "./dist/primitives/index.js"
32
+ },
33
+ "./styles": {
34
+ "types": "./dist/styles/index.d.ts",
35
+ "default": "./dist/styles/index.js"
36
+ },
37
+ "./themes": {
38
+ "types": "./dist/themes/index.d.ts",
39
+ "default": "./dist/themes/index.js"
40
+ },
41
+ "./json-tree": {
42
+ "types": "./dist/json/index.d.ts",
43
+ "default": "./dist/json/index.js"
44
+ },
45
+ "./markdown": {
46
+ "types": "./dist/markdown/index.d.ts",
47
+ "default": "./dist/markdown/index.js"
48
+ },
49
+ "./code": {
50
+ "types": "./dist/code/index.d.ts",
51
+ "default": "./dist/code/index.js"
52
+ },
53
+ "./tree": {
54
+ "types": "./dist/tree/index.d.ts",
55
+ "default": "./dist/tree/index.js"
56
+ },
57
+ "./count": {
58
+ "types": "./dist/count/index.d.ts",
59
+ "default": "./dist/count/index.js"
60
+ },
61
+ "./data-table": {
62
+ "types": "./dist/table/index.d.ts",
63
+ "default": "./dist/table/index.js"
64
+ },
65
+ "./graph": {
66
+ "types": "./dist/graph/index.d.ts",
67
+ "default": "./dist/graph/index.js"
68
+ },
69
+ "./matrix": {
70
+ "types": "./dist/matrix/index.d.ts",
71
+ "default": "./dist/matrix/index.js"
72
+ },
73
+ "./tiles": {
74
+ "types": "./dist/tiles/index.d.ts",
75
+ "default": "./dist/tiles/index.js"
76
+ },
77
+ "./lanes": {
78
+ "types": "./dist/lanes/index.d.ts",
79
+ "default": "./dist/lanes/index.js"
80
+ },
81
+ "./charts": {
82
+ "types": "./dist/charts/index.d.ts",
83
+ "default": "./dist/charts/index.js"
84
+ },
85
+ "./check-table": {
86
+ "types": "./dist/checks/index.d.ts",
87
+ "default": "./dist/checks/index.js"
88
+ },
89
+ "./transcript": {
90
+ "types": "./dist/transcript/index.d.ts",
91
+ "default": "./dist/transcript/index.js"
92
+ },
93
+ "./define": {
94
+ "types": "./dist/define/all.d.ts",
95
+ "default": "./dist/define/all.js"
96
+ },
97
+ "./json-tree/define": {
98
+ "types": "./dist/define/json-tree.d.ts",
99
+ "default": "./dist/define/json-tree.js"
100
+ },
101
+ "./markdown/define": {
102
+ "types": "./dist/define/markdown.d.ts",
103
+ "default": "./dist/define/markdown.js"
104
+ },
105
+ "./code/define": {
106
+ "types": "./dist/define/code.d.ts",
107
+ "default": "./dist/define/code.js"
108
+ },
109
+ "./tree/define": {
110
+ "types": "./dist/define/tree.d.ts",
111
+ "default": "./dist/define/tree.js"
112
+ },
113
+ "./count/define": {
114
+ "types": "./dist/define/count.d.ts",
115
+ "default": "./dist/define/count.js"
116
+ },
117
+ "./segmented/define": {
118
+ "types": "./dist/define/segmented.d.ts",
119
+ "default": "./dist/define/segmented.js"
120
+ },
121
+ "./data-table/define": {
122
+ "types": "./dist/define/data-table.d.ts",
123
+ "default": "./dist/define/data-table.js"
124
+ },
125
+ "./graph/define": {
126
+ "types": "./dist/define/graph.d.ts",
127
+ "default": "./dist/define/graph.js"
128
+ },
129
+ "./matrix/define": {
130
+ "types": "./dist/define/matrix.d.ts",
131
+ "default": "./dist/define/matrix.js"
132
+ },
133
+ "./tiles/define": {
134
+ "types": "./dist/define/tiles.d.ts",
135
+ "default": "./dist/define/tiles.js"
136
+ },
137
+ "./lanes/define": {
138
+ "types": "./dist/define/lanes.d.ts",
139
+ "default": "./dist/define/lanes.js"
140
+ },
141
+ "./charts/define": {
142
+ "types": "./dist/define/charts.d.ts",
143
+ "default": "./dist/define/charts.js"
144
+ },
145
+ "./check-table/define": {
146
+ "types": "./dist/define/check-table.d.ts",
147
+ "default": "./dist/define/check-table.js"
148
+ },
149
+ "./transcript/define": {
150
+ "types": "./dist/define/transcript.d.ts",
151
+ "default": "./dist/define/transcript.js"
152
+ },
153
+ "./custom-elements.json": "./custom-elements.json"
154
+ },
155
+ "customElements": "custom-elements.json",
156
+ "files": [
157
+ "dist",
158
+ "src",
159
+ "!src/**/*.test.ts",
160
+ "!src/**/__snapshots__",
161
+ "docs",
162
+ "!docs/images",
163
+ "custom-elements.json"
164
+ ],
165
+ "sideEffects": [
166
+ "./dist/define/*.js"
167
+ ],
168
+ "peerDependencies": {
169
+ "lit": "^3.3.3"
170
+ },
171
+ "devDependencies": {
172
+ "@custom-elements-manifest/analyzer": "^0.11.0",
173
+ "lit": "^3.3.3"
174
+ },
175
+ "scripts": {
176
+ "build": "tsc -p tsconfig.build.json && cem analyze --litelement --globs 'src/*/{segmented,data-table,layered-graph,mark-matrix,stat-tiles,lanes,column-chart,line-chart,heatmap,bar-chart,check-table,transcript,json-tree,cae-markdown,code,tree,count,elapsed}.ts'",
177
+ "typecheck": "tsc -p tsconfig.json --noEmit && tsc -p docs"
178
+ }
179
+ }
@@ -0,0 +1,74 @@
1
+ import { css, html, nothing, type TemplateResult } from 'lit';
2
+ import { property } from 'lit/decorators.js';
3
+ import { toneAttr } from '../core/tone.js';
4
+ import type { LegendItem } from '../primitives/legend.js';
5
+ import { ChartElement } from './base.js';
6
+ import type { ChartBar } from './types.js';
7
+
8
+ /**
9
+ * Horizontal bars, one per label, in the order given (a funnel's stages, a ranking):
10
+ * each its label, a bar as long as its value against the longest, and the value in
11
+ * words. A bar with a `tone` takes that status colour, the others one colour. Every
12
+ * value is written beside its bar, so no tooltip is needed; the switch shows them as
13
+ * a table.
14
+ *
15
+ * @tagname cae-bar-chart
16
+ * @csspart plot - the bars
17
+ * @csspart table - the table of its values
18
+ * @csspart switch - the button between the two
19
+ * @csspart empty - what it shows with no values
20
+ */
21
+ export class CaeBarChart extends ChartElement {
22
+ static override styles = [
23
+ ...ChartElement.styles,
24
+ css`
25
+ .bars { display: grid; grid-template-columns: minmax(80px, max-content) minmax(0, 1fr) max-content; gap: 6px 12px; align-items: center;
26
+ font-size: var(--font-size-sm); }
27
+ .bars .r { display: contents; }
28
+ .bars .l { color: var(--text-2); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 34ch; }
29
+ .bars .track { display: block; height: 12px; }
30
+ .bars .bar { display: block; height: 100%; min-width: 2px; border-radius: 1px 4px 4px 1px; background: var(--series-1); }
31
+ .bars .bar[data-tone] { background: var(--tone); }
32
+ .bars .v { color: var(--text-2); font-variant-numeric: tabular-nums; text-align: right; }
33
+ `,
34
+ ];
35
+
36
+ @property({ attribute: false }) bars: readonly ChartBar[] = [];
37
+
38
+ protected hasValues(): boolean {
39
+ return this.bars.length > 0;
40
+ }
41
+
42
+ protected legendItems(): LegendItem[] {
43
+ return [];
44
+ }
45
+
46
+ protected itemCount(): number {
47
+ return 0;
48
+ }
49
+
50
+ protected plot(): TemplateResult {
51
+ const top = Math.max(0, ...this.bars.map((b) => b.value));
52
+ return html`<div class="bars" role="list" aria-label=${this.label || nothing}>
53
+ ${this.bars.map(
54
+ (b) => html`<div class="r" role="listitem" aria-label="${b.label} | ${this.format(b.value)}">
55
+ <span class="l" aria-hidden="true" title=${b.label}>${b.label}</span>
56
+ <span class="track" aria-hidden="true"><span class="bar" data-tone=${toneAttr(b.tone)}
57
+ style="width: ${top > 0 ? (100 * Math.max(0, b.value)) / top : 0}%"></span></span>
58
+ <span class="v" aria-hidden="true">${this.format(b.value)}</span></div>`,
59
+ )}
60
+ </div>`;
61
+ }
62
+
63
+ protected table(): TemplateResult {
64
+ return html`<table aria-label=${this.label || nothing}>
65
+ <tbody>${this.bars.map((b) => html`<tr><th scope="row">${b.label}</th><td>${this.format(b.value)}</td></tr>`)}</tbody>
66
+ </table>`;
67
+ }
68
+ }
69
+
70
+ declare global {
71
+ interface HTMLElementTagNameMap {
72
+ 'cae-bar-chart': CaeBarChart;
73
+ }
74
+ }
@@ -0,0 +1,188 @@
1
+ // What every chart shares: its width, its words, a legend, the switch to a table of
2
+ // its values, and the tooltip of the item the reader points at or moves to.
3
+ import { LitElement, css, html, nothing, type TemplateResult } from 'lit';
4
+ import { property, state } from 'lit/decorators.js';
5
+ import { withDefaults } from '../core/strings.js';
6
+ import { legend, legendStyles, type LegendItem } from '../primitives/legend.js';
7
+ import { base } from '../styles/index.js';
8
+ import { plainNumber } from './scale.js';
9
+ import { DEFAULT_CHART_STRINGS, type ChartStrings, type ValueText } from './types.js';
10
+
11
+ /** The size of the axis labels, in px. */
12
+ const AXIS_PX = 10.5;
13
+ /** The room beside a label, in px, so that labels side by side do not touch. */
14
+ const LABEL_ROOM = 6;
15
+
16
+ let measurer: CanvasRenderingContext2D | null | undefined;
17
+ const measured = new Map<string, number>();
18
+
19
+ /** `text`'s width in px in the CSS font `font`; where there is no canvas to measure it, an estimate. */
20
+ function measureText(text: string, font: string): number {
21
+ measurer ??= typeof document === 'undefined' ? null : document.createElement('canvas').getContext('2d');
22
+ if (!measurer) return text.length * AXIS_PX * 0.62;
23
+ const key = `${font}\n${text}`;
24
+ let w = measured.get(key);
25
+ if (w === undefined) {
26
+ measurer.font = font;
27
+ w = measurer.measureText(text).width;
28
+ measured.set(key, w);
29
+ }
30
+ return w;
31
+ }
32
+
33
+ export abstract class ChartElement extends LitElement {
34
+ static override styles = [
35
+ base,
36
+ legendStyles,
37
+ css`
38
+ :host { display: block; min-width: 0; }
39
+ .head { display: flex; align-items: flex-start; gap: 12px; margin-bottom: 8px; min-height: 22px; }
40
+ .head .legend { flex: 1; min-width: 0; }
41
+ .head .legend span { color: var(--text-2); }
42
+ .switch { margin-left: auto; flex: none; background: none; border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px;
43
+ font: inherit; font-size: var(--font-size-sm); color: var(--text-muted); cursor: pointer; }
44
+ .switch:hover, .switch:focus-visible { color: var(--text); border-color: var(--line2); }
45
+ .plot { position: relative; outline-offset: 2px; }
46
+ .plot:focus-visible { outline: 2px solid var(--accent); border-radius: var(--radius-sm); }
47
+ svg { display: block; overflow: visible; }
48
+ .axis { font-size: ${AXIS_PX}px; fill: var(--text-muted); font-variant-numeric: tabular-nums; }
49
+ .grid { stroke: var(--line); stroke-width: 1; shape-rendering: crispEdges; }
50
+ .base { stroke: var(--line2); stroke-width: 1; shape-rendering: crispEdges; }
51
+ .hit { fill: transparent; }
52
+ .band { fill: var(--text); opacity: 0.05; }
53
+ .tip { position: absolute; z-index: 2; pointer-events: none; padding: 6px 9px; border-radius: var(--radius-sm); background: var(--raise);
54
+ border: 1px solid var(--line2); box-shadow: 0 4px 14px var(--shadow); color: var(--text); font-size: var(--font-size-sm);
55
+ white-space: nowrap; line-height: 1.45; }
56
+ .tip b { font-weight: 600; }
57
+ .tip .row { display: flex; align-items: center; gap: 6px; }
58
+ .tip .row i { width: 9px; height: 9px; border-radius: 2px; flex: none; }
59
+ .tip .row .v { margin-left: auto; padding-left: 12px; font-variant-numeric: tabular-nums; }
60
+ .scale { display: inline-flex; gap: 1px; margin-right: 6px; vertical-align: -1px; }
61
+ .legend .scale i { width: 12px; height: 10px; margin: 0; border-radius: 2px; }
62
+ .empty { padding: 18px 0; color: var(--text-muted); font-size: var(--font-size-sm); }
63
+ table { border-collapse: collapse; font-size: var(--font-size-sm); font-variant-numeric: tabular-nums; }
64
+ .tbl { overflow-x: auto; max-width: 100%; }
65
+ th, td { padding: 4px 12px 4px 0; text-align: right; white-space: nowrap; border-bottom: 1px solid var(--line); }
66
+ th { color: var(--text-muted); font-weight: 500; }
67
+ th:first-child, td:first-child { text-align: left; }
68
+ td { color: var(--text-2); }
69
+ `,
70
+ ];
71
+
72
+ /** The chart's accessible name (its title, or what it shows). */
73
+ @property() label = '';
74
+ /** A value in words: the host's format for the chart's unit. */
75
+ @property({ attribute: false }) format: ValueText = plainNumber;
76
+ @property({ attribute: false }) strings: Partial<ChartStrings> = {};
77
+ /** The plot's height in px (the axis included). */
78
+ @property({ type: Number }) height = 200;
79
+
80
+ /** The width the chart has, in px. */
81
+ @state() protected width = 0;
82
+ /** The values shown as a table instead of the chart. */
83
+ @state() protected asTable = false;
84
+ /** The item the reader points at or moved to with the keys; null: none. */
85
+ @state() protected active: number | null = null;
86
+
87
+ private resized: ResizeObserver | null = null;
88
+
89
+ protected get words(): ChartStrings {
90
+ return withDefaults(DEFAULT_CHART_STRINGS, this.strings);
91
+ }
92
+
93
+ override connectedCallback(): void {
94
+ super.connectedCallback();
95
+ if (typeof ResizeObserver === 'undefined') return;
96
+ this.resized ??= new ResizeObserver((entries) => {
97
+ const w = Math.floor(entries[0]?.contentRect.width ?? 0);
98
+ if (w && Math.abs(w - this.width) >= 1) this.width = w;
99
+ });
100
+ this.resized.observe(this);
101
+ document.fonts?.addEventListener('loadingdone', this.fontsLoaded);
102
+ }
103
+
104
+ override disconnectedCallback(): void {
105
+ super.disconnectedCallback();
106
+ this.resized?.disconnect();
107
+ document.fonts?.removeEventListener('loadingdone', this.fontsLoaded);
108
+ }
109
+
110
+ /** A font that loads late changes the labels' widths: they are measured again. */
111
+ private readonly fontsLoaded = (): void => {
112
+ measured.clear();
113
+ this.requestUpdate();
114
+ };
115
+
116
+ /** An axis label's width in px, as the chart draws it, with room beside it: measured in the chart's font. */
117
+ protected labelWidth(text: string): number {
118
+ const cs = getComputedStyle(this);
119
+ return Math.ceil(measureText(text, `${cs.fontStyle} ${cs.fontWeight} ${AXIS_PX}px ${cs.fontFamily}`)) + LABEL_ROOM;
120
+ }
121
+
122
+ protected override firstUpdated(): void {
123
+ if (!this.width) this.width = Math.floor(this.getBoundingClientRect().width) || 600;
124
+ }
125
+
126
+ /** The plot area's width: the element's, never less than a narrow screen's. */
127
+ protected get plotWidth(): number {
128
+ return Math.max(240, this.width || 600);
129
+ }
130
+
131
+ /** Whether there is anything to draw. */
132
+ protected abstract hasValues(): boolean;
133
+ /** The legend's entries: none for a single series, whose title names it. */
134
+ protected abstract legendItems(): LegendItem[];
135
+ /** How many items the keys move between. */
136
+ protected abstract itemCount(): number;
137
+ /** How many items the up and down keys move by: a row of a grid; 1 for a row of items. */
138
+ protected rowLength(): number {
139
+ return 1;
140
+ }
141
+ protected abstract plot(): TemplateResult;
142
+ protected abstract table(): TemplateResult;
143
+
144
+ override render() {
145
+ const s = this.words;
146
+ if (!this.hasValues()) return html`<div class="empty" part="empty">${s.empty}</div>`;
147
+ const items = this.legendItems();
148
+ return html`<div class="head">
149
+ ${items.length ? legend(items, { label: this.label }) : html`<span class="legend"></span>`}
150
+ <button type="button" class="switch" part="switch" aria-pressed=${this.asTable}
151
+ @click=${() => ((this.asTable = !this.asTable), (this.active = null))}>${this.asTable ? s.showChart : s.showTable}</button>
152
+ </div>
153
+ ${this.asTable
154
+ ? html`<div class="tbl" part="table">${this.table()}</div>`
155
+ : html`<div class="plot" part="plot" tabindex=${this.itemCount() ? 0 : nothing} role="group" aria-label=${this.label || nothing}
156
+ @keydown=${this.onKey} @blur=${() => (this.active = null)} @mouseleave=${() => (this.active = null)}>${this.plot()}</div>`}`;
157
+ }
158
+
159
+ /** The arrow keys move between the items (up and down by a row of a grid), Home and End to the first and the last; Escape hides the tooltip. */
160
+ private readonly onKey = (e: KeyboardEvent): void => {
161
+ const n = this.itemCount();
162
+ if (!n) return;
163
+ const at = this.active;
164
+ let next: number | null = at;
165
+ const row = this.rowLength();
166
+ const by = e.key === 'ArrowRight' ? 1 : e.key === 'ArrowLeft' ? -1 : e.key === 'ArrowDown' ? row : e.key === 'ArrowUp' ? -row : 0;
167
+ if (by) next = at === null ? (by > 0 ? 0 : n - 1) : Math.min(n - 1, Math.max(0, at + by));
168
+ else if (e.key === 'Home') next = 0;
169
+ else if (e.key === 'End') next = n - 1;
170
+ else if (e.key === 'Escape') next = null;
171
+ else return;
172
+ e.preventDefault();
173
+ this.active = next;
174
+ };
175
+
176
+ /** A tooltip at `left` px (its middle) and `top` px of the plot, kept inside it. */
177
+ protected tip(left: number, top: number, body: TemplateResult): TemplateResult {
178
+ const w = this.plotWidth;
179
+ const side = left > w * 0.6 ? 'right' : 'left';
180
+ const x = side === 'left' ? Math.max(0, left + 12) : Math.max(0, w - left + 12);
181
+ return html`<div class="tip" role="status" style="${side}: ${x}px; top: ${Math.max(0, top)}px">${body}</div>`;
182
+ }
183
+
184
+ /** One line of a tooltip: a swatch, a name and its value. */
185
+ protected tipRow(colour: string | null, name: string, value: string): TemplateResult {
186
+ return html`<div class="row">${colour ? html`<i style="background: ${colour}"></i>` : nothing}<span>${name}</span><span class="v">${value}</span></div>`;
187
+ }
188
+ }