@fusedashlabs/widgets 0.4.5 → 0.5.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 (352) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +24 -3
  3. package/dist/catalog/engine.d.ts +9 -0
  4. package/dist/catalog/engine.d.ts.map +1 -0
  5. package/dist/catalog/engine.js +28 -0
  6. package/dist/catalog/engine.js.map +1 -0
  7. package/dist/catalog/evaluate.d.ts +11 -0
  8. package/dist/catalog/evaluate.d.ts.map +1 -0
  9. package/dist/catalog/evaluate.js +18 -0
  10. package/dist/catalog/evaluate.js.map +1 -0
  11. package/dist/catalog/index.d.ts +8 -0
  12. package/dist/catalog/index.d.ts.map +1 -0
  13. package/dist/catalog/index.js +25 -0
  14. package/dist/catalog/index.js.map +1 -0
  15. package/dist/catalog/load.d.ts +11 -0
  16. package/dist/catalog/load.d.ts.map +1 -0
  17. package/dist/catalog/load.js +140 -0
  18. package/dist/catalog/load.js.map +1 -0
  19. package/dist/catalog/schema.d.ts +5 -0
  20. package/dist/catalog/schema.d.ts.map +1 -0
  21. package/dist/catalog/schema.js +143 -0
  22. package/dist/catalog/schema.js.map +1 -0
  23. package/dist/catalog/types.d.ts +83 -0
  24. package/dist/catalog/types.d.ts.map +1 -0
  25. package/dist/catalog/types.js +45 -0
  26. package/dist/catalog/types.js.map +1 -0
  27. package/dist/catalog/when.d.ts +13 -0
  28. package/dist/catalog/when.d.ts.map +1 -0
  29. package/dist/catalog/when.js +236 -0
  30. package/dist/catalog/when.js.map +1 -0
  31. package/dist/components/approval-bar/element/ui9000-approval-bar.d.ts +17 -0
  32. package/dist/components/approval-bar/element/ui9000-approval-bar.d.ts.map +1 -0
  33. package/dist/components/approval-bar/element/ui9000-approval-bar.js +83 -0
  34. package/dist/components/approval-bar/element/ui9000-approval-bar.js.map +1 -0
  35. package/dist/components/approval-bar/index.d.ts +4 -0
  36. package/dist/components/approval-bar/index.d.ts.map +1 -0
  37. package/dist/components/approval-bar/index.js +11 -0
  38. package/dist/components/approval-bar/index.js.map +1 -0
  39. package/dist/components/approval-bar/lib/normalize.d.ts +7 -0
  40. package/dist/components/approval-bar/lib/normalize.d.ts.map +1 -0
  41. package/dist/components/approval-bar/lib/normalize.js +12 -0
  42. package/dist/components/approval-bar/lib/normalize.js.map +1 -0
  43. package/dist/components/approval-bar/metadata.json.d.ts +99 -0
  44. package/dist/components/approval-bar/metadata.json.js +63 -0
  45. package/dist/components/approval-bar/metadata.json.js.map +1 -0
  46. package/dist/components/bar-chart/metadata.json.d.ts +53 -0
  47. package/dist/components/bar-chart/metadata.json.js +21 -0
  48. package/dist/components/bar-chart/metadata.json.js.map +1 -1
  49. package/dist/components/button/element/ui9000-button.d.ts +15 -0
  50. package/dist/components/button/element/ui9000-button.d.ts.map +1 -0
  51. package/dist/components/button/element/ui9000-button.js +56 -0
  52. package/dist/components/button/element/ui9000-button.js.map +1 -0
  53. package/dist/components/button/index.d.ts +3 -0
  54. package/dist/components/button/index.d.ts.map +1 -0
  55. package/dist/components/button/index.js +9 -0
  56. package/dist/components/button/index.js.map +1 -0
  57. package/dist/components/button/metadata.json.d.ts +99 -0
  58. package/dist/components/button/metadata.json.js +63 -0
  59. package/dist/components/button/metadata.json.js.map +1 -0
  60. package/dist/components/chart-renderer/metadata.json.d.ts +1 -0
  61. package/dist/components/chart-renderer/metadata.json.js +3 -0
  62. package/dist/components/chart-renderer/metadata.json.js.map +1 -1
  63. package/dist/components/checkbox/element/ui9000-checkbox.d.ts +16 -0
  64. package/dist/components/checkbox/element/ui9000-checkbox.d.ts.map +1 -0
  65. package/dist/components/checkbox/element/ui9000-checkbox.js +71 -0
  66. package/dist/components/checkbox/element/ui9000-checkbox.js.map +1 -0
  67. package/dist/components/checkbox/index.d.ts +3 -0
  68. package/dist/components/checkbox/index.d.ts.map +1 -0
  69. package/dist/components/checkbox/index.js +9 -0
  70. package/dist/components/checkbox/index.js.map +1 -0
  71. package/dist/components/checkbox/metadata.json.d.ts +99 -0
  72. package/dist/components/checkbox/metadata.json.js +63 -0
  73. package/dist/components/checkbox/metadata.json.js.map +1 -0
  74. package/dist/components/custom-widget/element/ui9000-custom-widget.d.ts +1 -2
  75. package/dist/components/custom-widget/element/ui9000-custom-widget.d.ts.map +1 -1
  76. package/dist/components/custom-widget/element/ui9000-custom-widget.js +12 -35
  77. package/dist/components/custom-widget/element/ui9000-custom-widget.js.map +1 -1
  78. package/dist/components/custom-widget/index.js +1 -1
  79. package/dist/components/custom-widget/lib/content.d.ts +1 -12
  80. package/dist/components/custom-widget/lib/content.d.ts.map +1 -1
  81. package/dist/components/custom-widget/lib/markdown.d.ts +1 -3
  82. package/dist/components/custom-widget/lib/markdown.d.ts.map +1 -1
  83. package/dist/components/custom-widget/lib/normalize.js +2 -2
  84. package/dist/components/custom-widget/lib/table.d.ts +1 -54
  85. package/dist/components/custom-widget/lib/table.d.ts.map +1 -1
  86. package/dist/components/custom-widget/metadata.json.d.ts +2 -1
  87. package/dist/components/custom-widget/metadata.json.js +4 -1
  88. package/dist/components/custom-widget/metadata.json.js.map +1 -1
  89. package/dist/components/date-input/element/ui9000-date-input.d.ts +16 -0
  90. package/dist/components/date-input/element/ui9000-date-input.d.ts.map +1 -0
  91. package/dist/components/date-input/element/ui9000-date-input.js +71 -0
  92. package/dist/components/date-input/element/ui9000-date-input.js.map +1 -0
  93. package/dist/components/date-input/index.d.ts +3 -0
  94. package/dist/components/date-input/index.d.ts.map +1 -0
  95. package/dist/components/date-input/index.js +9 -0
  96. package/dist/components/date-input/index.js.map +1 -0
  97. package/dist/components/date-input/metadata.json.d.ts +99 -0
  98. package/dist/components/date-input/metadata.json.js +63 -0
  99. package/dist/components/date-input/metadata.json.js.map +1 -0
  100. package/dist/components/entity-detail/element/ui9000-entity-detail.d.ts +17 -0
  101. package/dist/components/entity-detail/element/ui9000-entity-detail.d.ts.map +1 -0
  102. package/dist/components/entity-detail/element/ui9000-entity-detail.js +91 -0
  103. package/dist/components/entity-detail/element/ui9000-entity-detail.js.map +1 -0
  104. package/dist/components/entity-detail/index.d.ts +4 -0
  105. package/dist/components/entity-detail/index.d.ts.map +1 -0
  106. package/dist/components/entity-detail/index.js +11 -0
  107. package/dist/components/entity-detail/index.js.map +1 -0
  108. package/dist/components/entity-detail/lib/normalize.d.ts +17 -0
  109. package/dist/components/entity-detail/lib/normalize.d.ts.map +1 -0
  110. package/dist/components/entity-detail/lib/normalize.js +34 -0
  111. package/dist/components/entity-detail/lib/normalize.js.map +1 -0
  112. package/dist/components/entity-detail/metadata.json.d.ts +110 -0
  113. package/dist/components/entity-detail/metadata.json.js +63 -0
  114. package/dist/components/entity-detail/metadata.json.js.map +1 -0
  115. package/dist/components/event-timeline/element/ui9000-event-timeline.d.ts +17 -0
  116. package/dist/components/event-timeline/element/ui9000-event-timeline.d.ts.map +1 -0
  117. package/dist/components/event-timeline/element/ui9000-event-timeline.js +78 -0
  118. package/dist/components/event-timeline/element/ui9000-event-timeline.js.map +1 -0
  119. package/dist/components/event-timeline/index.d.ts +4 -0
  120. package/dist/components/event-timeline/index.d.ts.map +1 -0
  121. package/dist/components/event-timeline/index.js +11 -0
  122. package/dist/components/event-timeline/index.js.map +1 -0
  123. package/dist/components/event-timeline/lib/normalize.d.ts +10 -0
  124. package/dist/components/event-timeline/lib/normalize.d.ts.map +1 -0
  125. package/dist/components/event-timeline/lib/normalize.js +25 -0
  126. package/dist/components/event-timeline/lib/normalize.js.map +1 -0
  127. package/dist/components/event-timeline/metadata.json.d.ts +124 -0
  128. package/dist/components/event-timeline/metadata.json.js +63 -0
  129. package/dist/components/event-timeline/metadata.json.js.map +1 -0
  130. package/dist/components/evidence-panel/element/ui9000-evidence-panel.d.ts +17 -0
  131. package/dist/components/evidence-panel/element/ui9000-evidence-panel.d.ts.map +1 -0
  132. package/dist/components/evidence-panel/element/ui9000-evidence-panel.js +84 -0
  133. package/dist/components/evidence-panel/element/ui9000-evidence-panel.js.map +1 -0
  134. package/dist/components/evidence-panel/index.d.ts +4 -0
  135. package/dist/components/evidence-panel/index.d.ts.map +1 -0
  136. package/dist/components/evidence-panel/index.js +11 -0
  137. package/dist/components/evidence-panel/index.js.map +1 -0
  138. package/dist/components/evidence-panel/lib/normalize.d.ts +19 -0
  139. package/dist/components/evidence-panel/lib/normalize.d.ts.map +1 -0
  140. package/dist/components/evidence-panel/lib/normalize.js +33 -0
  141. package/dist/components/evidence-panel/lib/normalize.js.map +1 -0
  142. package/dist/components/evidence-panel/metadata.json.d.ts +114 -0
  143. package/dist/components/evidence-panel/metadata.json.js +63 -0
  144. package/dist/components/evidence-panel/metadata.json.js.map +1 -0
  145. package/dist/components/form/element/ui9000-form.d.ts +21 -0
  146. package/dist/components/form/element/ui9000-form.d.ts.map +1 -0
  147. package/dist/components/form/element/ui9000-form.js +115 -0
  148. package/dist/components/form/element/ui9000-form.js.map +1 -0
  149. package/dist/components/form/index.d.ts +4 -0
  150. package/dist/components/form/index.d.ts.map +1 -0
  151. package/dist/components/form/index.js +11 -0
  152. package/dist/components/form/index.js.map +1 -0
  153. package/dist/components/form/lib/normalize.d.ts +14 -0
  154. package/dist/components/form/lib/normalize.d.ts.map +1 -0
  155. package/dist/components/form/lib/normalize.js +36 -0
  156. package/dist/components/form/lib/normalize.js.map +1 -0
  157. package/dist/components/form/metadata.json.d.ts +94 -0
  158. package/dist/components/form/metadata.json.js +63 -0
  159. package/dist/components/form/metadata.json.js.map +1 -0
  160. package/dist/components/histogram-chart/metadata.json.d.ts +47 -0
  161. package/dist/components/histogram-chart/metadata.json.js +21 -0
  162. package/dist/components/histogram-chart/metadata.json.js.map +1 -1
  163. package/dist/components/image/element/ui9000-image.d.ts +17 -0
  164. package/dist/components/image/element/ui9000-image.d.ts.map +1 -0
  165. package/dist/components/image/element/ui9000-image.js +74 -0
  166. package/dist/components/image/element/ui9000-image.js.map +1 -0
  167. package/dist/components/image/index.d.ts +4 -0
  168. package/dist/components/image/index.d.ts.map +1 -0
  169. package/dist/components/image/index.js +13 -0
  170. package/dist/components/image/index.js.map +1 -0
  171. package/dist/components/image/lib/url.d.ts +14 -0
  172. package/dist/components/image/lib/url.d.ts.map +1 -0
  173. package/dist/components/{custom-widget/lib/content.js → image/lib/url.js} +4 -3
  174. package/dist/components/image/lib/url.js.map +1 -0
  175. package/dist/components/image/metadata.json.d.ts +95 -0
  176. package/dist/components/image/metadata.json.js +63 -0
  177. package/dist/components/image/metadata.json.js.map +1 -0
  178. package/dist/components/kpi-widget/metadata.json.d.ts +47 -0
  179. package/dist/components/kpi-widget/metadata.json.js +21 -0
  180. package/dist/components/kpi-widget/metadata.json.js.map +1 -1
  181. package/dist/components/map-chart/metadata.json.d.ts +54 -2
  182. package/dist/components/map-chart/metadata.json.js +23 -2
  183. package/dist/components/map-chart/metadata.json.js.map +1 -1
  184. package/dist/components/multi-select/element/ui9000-multi-select.d.ts +16 -0
  185. package/dist/components/multi-select/element/ui9000-multi-select.d.ts.map +1 -0
  186. package/dist/components/multi-select/element/ui9000-multi-select.js +77 -0
  187. package/dist/components/multi-select/element/ui9000-multi-select.js.map +1 -0
  188. package/dist/components/multi-select/index.d.ts +3 -0
  189. package/dist/components/multi-select/index.d.ts.map +1 -0
  190. package/dist/components/multi-select/index.js +9 -0
  191. package/dist/components/multi-select/index.js.map +1 -0
  192. package/dist/components/multi-select/metadata.json.d.ts +99 -0
  193. package/dist/components/multi-select/metadata.json.js +63 -0
  194. package/dist/components/multi-select/metadata.json.js.map +1 -0
  195. package/dist/components/network-graph/metadata.json.d.ts +53 -2
  196. package/dist/components/network-graph/metadata.json.js +23 -2
  197. package/dist/components/network-graph/metadata.json.js.map +1 -1
  198. package/dist/components/number-input/element/ui9000-number-input.d.ts +16 -0
  199. package/dist/components/number-input/element/ui9000-number-input.d.ts.map +1 -0
  200. package/dist/components/number-input/element/ui9000-number-input.js +71 -0
  201. package/dist/components/number-input/element/ui9000-number-input.js.map +1 -0
  202. package/dist/components/number-input/index.d.ts +3 -0
  203. package/dist/components/number-input/index.d.ts.map +1 -0
  204. package/dist/components/number-input/index.js +9 -0
  205. package/dist/components/number-input/index.js.map +1 -0
  206. package/dist/components/number-input/metadata.json.d.ts +99 -0
  207. package/dist/components/number-input/metadata.json.js +63 -0
  208. package/dist/components/number-input/metadata.json.js.map +1 -0
  209. package/dist/components/select/element/ui9000-select.d.ts +16 -0
  210. package/dist/components/select/element/ui9000-select.d.ts.map +1 -0
  211. package/dist/components/select/element/ui9000-select.js +73 -0
  212. package/dist/components/select/element/ui9000-select.js.map +1 -0
  213. package/dist/components/select/index.d.ts +3 -0
  214. package/dist/components/select/index.d.ts.map +1 -0
  215. package/dist/components/select/index.js +9 -0
  216. package/dist/components/select/index.js.map +1 -0
  217. package/dist/components/select/metadata.json.d.ts +99 -0
  218. package/dist/components/select/metadata.json.js +63 -0
  219. package/dist/components/select/metadata.json.js.map +1 -0
  220. package/dist/components/table/element/styles.d.ts +2 -0
  221. package/dist/components/table/element/styles.d.ts.map +1 -0
  222. package/dist/components/table/element/styles.js +105 -0
  223. package/dist/components/table/element/styles.js.map +1 -0
  224. package/dist/components/table/element/ui9000-table.d.ts +17 -0
  225. package/dist/components/table/element/ui9000-table.d.ts.map +1 -0
  226. package/dist/components/table/element/ui9000-table.js +113 -0
  227. package/dist/components/table/element/ui9000-table.js.map +1 -0
  228. package/dist/components/table/index.d.ts +4 -0
  229. package/dist/components/table/index.d.ts.map +1 -0
  230. package/dist/components/table/index.js +14 -0
  231. package/dist/components/table/index.js.map +1 -0
  232. package/dist/components/table/lib/table.d.ts +55 -0
  233. package/dist/components/table/lib/table.d.ts.map +1 -0
  234. package/dist/components/table/lib/table.js.map +1 -0
  235. package/dist/components/table/metadata.json.d.ts +88 -0
  236. package/dist/components/table/metadata.json.js +63 -0
  237. package/dist/components/table/metadata.json.js.map +1 -0
  238. package/dist/components/text/element/ui9000-text.d.ts +16 -0
  239. package/dist/components/text/element/ui9000-text.d.ts.map +1 -0
  240. package/dist/components/text/element/ui9000-text.js +90 -0
  241. package/dist/components/text/element/ui9000-text.js.map +1 -0
  242. package/dist/components/text/index.d.ts +4 -0
  243. package/dist/components/text/index.d.ts.map +1 -0
  244. package/dist/components/text/index.js +11 -0
  245. package/dist/components/text/index.js.map +1 -0
  246. package/dist/components/text/lib/content.d.ts +2 -0
  247. package/dist/components/text/lib/content.d.ts.map +1 -0
  248. package/dist/components/text/lib/markdown.d.ts +4 -0
  249. package/dist/components/text/lib/markdown.d.ts.map +1 -0
  250. package/dist/components/text/lib/markdown.js.map +1 -0
  251. package/dist/components/text/metadata.json.d.ts +98 -0
  252. package/dist/components/text/metadata.json.js +63 -0
  253. package/dist/components/text/metadata.json.js.map +1 -0
  254. package/dist/components/text-input/element/ui9000-text-input.d.ts +16 -0
  255. package/dist/components/text-input/element/ui9000-text-input.d.ts.map +1 -0
  256. package/dist/components/text-input/element/ui9000-text-input.js +70 -0
  257. package/dist/components/text-input/element/ui9000-text-input.js.map +1 -0
  258. package/dist/components/text-input/index.d.ts +3 -0
  259. package/dist/components/text-input/index.d.ts.map +1 -0
  260. package/dist/components/text-input/index.js +9 -0
  261. package/dist/components/text-input/index.js.map +1 -0
  262. package/dist/components/text-input/metadata.json.d.ts +99 -0
  263. package/dist/components/text-input/metadata.json.js +63 -0
  264. package/dist/components/text-input/metadata.json.js.map +1 -0
  265. package/dist/element/dispatch-ui9000.d.ts +11 -0
  266. package/dist/element/dispatch-ui9000.d.ts.map +1 -0
  267. package/dist/element/dispatch-ui9000.js +21 -0
  268. package/dist/element/dispatch-ui9000.js.map +1 -0
  269. package/dist/element/surface-styles.d.ts +2 -0
  270. package/dist/element/surface-styles.d.ts.map +1 -0
  271. package/dist/element/surface-styles.js +84 -0
  272. package/dist/element/surface-styles.js.map +1 -0
  273. package/dist/index.d.ts +18 -2
  274. package/dist/index.d.ts.map +1 -1
  275. package/dist/index.js +99 -2
  276. package/dist/index.js.map +1 -1
  277. package/dist/lazy/approval-bar.d.ts +4 -0
  278. package/dist/lazy/approval-bar.d.ts.map +1 -0
  279. package/dist/lazy/approval-bar.js +5 -0
  280. package/dist/lazy/approval-bar.js.map +1 -0
  281. package/dist/lazy/button.d.ts +4 -0
  282. package/dist/lazy/button.d.ts.map +1 -0
  283. package/dist/lazy/button.js +5 -0
  284. package/dist/lazy/button.js.map +1 -0
  285. package/dist/lazy/checkbox.d.ts +4 -0
  286. package/dist/lazy/checkbox.d.ts.map +1 -0
  287. package/dist/lazy/checkbox.js +5 -0
  288. package/dist/lazy/checkbox.js.map +1 -0
  289. package/dist/lazy/custom-widget.js +5 -0
  290. package/dist/lazy/custom-widget.js.map +1 -0
  291. package/dist/lazy/date-input.d.ts +4 -0
  292. package/dist/lazy/date-input.d.ts.map +1 -0
  293. package/dist/lazy/date-input.js +5 -0
  294. package/dist/lazy/date-input.js.map +1 -0
  295. package/dist/lazy/entity-detail.d.ts +4 -0
  296. package/dist/lazy/entity-detail.d.ts.map +1 -0
  297. package/dist/lazy/entity-detail.js +5 -0
  298. package/dist/lazy/entity-detail.js.map +1 -0
  299. package/dist/lazy/event-timeline.d.ts +4 -0
  300. package/dist/lazy/event-timeline.d.ts.map +1 -0
  301. package/dist/lazy/event-timeline.js +5 -0
  302. package/dist/lazy/event-timeline.js.map +1 -0
  303. package/dist/lazy/evidence-panel.d.ts +4 -0
  304. package/dist/lazy/evidence-panel.d.ts.map +1 -0
  305. package/dist/lazy/evidence-panel.js +5 -0
  306. package/dist/lazy/evidence-panel.js.map +1 -0
  307. package/dist/lazy/form.d.ts +4 -0
  308. package/dist/lazy/form.d.ts.map +1 -0
  309. package/dist/lazy/form.js +5 -0
  310. package/dist/lazy/form.js.map +1 -0
  311. package/dist/lazy/image.d.ts +4 -0
  312. package/dist/lazy/image.d.ts.map +1 -0
  313. package/dist/lazy/image.js +5 -0
  314. package/dist/lazy/image.js.map +1 -0
  315. package/dist/lazy/index.d.ts +16 -1
  316. package/dist/lazy/index.d.ts.map +1 -1
  317. package/dist/lazy/index.js +120 -0
  318. package/dist/lazy/index.js.map +1 -1
  319. package/dist/lazy/multi-select.d.ts +4 -0
  320. package/dist/lazy/multi-select.d.ts.map +1 -0
  321. package/dist/lazy/multi-select.js +5 -0
  322. package/dist/lazy/multi-select.js.map +1 -0
  323. package/dist/lazy/number-input.d.ts +4 -0
  324. package/dist/lazy/number-input.d.ts.map +1 -0
  325. package/dist/lazy/number-input.js +5 -0
  326. package/dist/lazy/number-input.js.map +1 -0
  327. package/dist/lazy/select.d.ts +4 -0
  328. package/dist/lazy/select.d.ts.map +1 -0
  329. package/dist/lazy/select.js +5 -0
  330. package/dist/lazy/select.js.map +1 -0
  331. package/dist/lazy/table.d.ts +4 -0
  332. package/dist/lazy/table.d.ts.map +1 -0
  333. package/dist/lazy/table.js +5 -0
  334. package/dist/lazy/table.js.map +1 -0
  335. package/dist/lazy/text-input.d.ts +4 -0
  336. package/dist/lazy/text-input.d.ts.map +1 -0
  337. package/dist/lazy/text-input.js +5 -0
  338. package/dist/lazy/text-input.js.map +1 -0
  339. package/dist/lazy/text.d.ts +4 -0
  340. package/dist/lazy/text.d.ts.map +1 -0
  341. package/dist/lazy/text.js +5 -0
  342. package/dist/lazy/text.js.map +1 -0
  343. package/dist/lib/labelled-control.d.ts +12 -0
  344. package/dist/lib/labelled-control.d.ts.map +1 -0
  345. package/dist/lib/labelled-control.js +14 -0
  346. package/dist/lib/labelled-control.js.map +1 -0
  347. package/package.json +126 -1
  348. package/dist/components/custom-widget/lib/content.js.map +0 -1
  349. package/dist/components/custom-widget/lib/markdown.js.map +0 -1
  350. package/dist/components/custom-widget/lib/table.js.map +0 -1
  351. /package/dist/components/{custom-widget → table}/lib/table.js +0 -0
  352. /package/dist/components/{custom-widget → text}/lib/markdown.js +0 -0
@@ -9,6 +9,13 @@ const lazyImport = "@ui9000/widgets/lazy/histogram-chart";
9
9
  const entry = "@ui9000/widgets/histogram-chart";
10
10
  const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true };
11
11
  const allowedActions = ["hover", "resize"];
12
+ const tier = "engine";
13
+ const intents = ["comparison"];
14
+ const dataRoles = [{ "id": "distribution", "required": true, "type": "number", "description": "Numeric values binned into a severity or score distribution." }];
15
+ const eligibility = [{ "when": "profile.hasNumericMetric && profile.rowCount >= 8", "reason": "Histogram shows the shape of a numeric distribution such as severity scores." }];
16
+ const disqualify = [{ "when": "profile.hasCategory && !profile.hasNumericMetric", "reason": "Category-only counts belong on bar-chart, not a histogram." }, { "when": "profile.hasGeo && !profile.hasNumericMetric", "reason": "Spatial-only data belongs on map-chart." }];
17
+ const accessibility = { "nameFrom": "title or xLabel", "keyboard": ["Tab into chart"], "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element." };
18
+ const evalCases = [{ "id": "histogram-picks-score-distribution", "intent": "comparison", "profile": { "hasNumericMetric": true, "rowCount": 40 }, "expect": "eligible", "reasonIncludes": "distribution" }, { "id": "histogram-rejects-categories-only", "intent": "comparison", "profile": { "hasCategory": true, "hasNumericMetric": false }, "expect": "disqualified", "reasonIncludes": "bar-chart" }];
12
19
  const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "oneOf": [{ "type": "array", "items": { "type": "object", "required": ["label", "value"], "properties": { "label": { "type": "string" }, "value": { "type": "number" }, "color": { "type": "string" } } } }, { "type": "object", "properties": { "bins": { "type": "array", "items": { "type": "object", "required": ["x0", "x1", "stacks"], "properties": { "x0": { "type": "number" }, "x1": { "type": "number" }, "stacks": { "type": "array", "items": { "type": "object", "required": ["group", "count"], "properties": { "group": { "type": "string" }, "count": { "type": "number" }, "color": { "type": "string" } } } } } } }, "xMin": { "type": "number" }, "xMax": { "type": "number" } }, "required": ["bins"] }, { "type": "object", "properties": { "xMin": { "type": "number" }, "xMax": { "type": "number" }, "groups": { "type": "array", "items": { "type": "string" } }, "data": { "type": "array", "items": { "type": "object", "required": ["bucketIndex", "count"], "properties": { "bucketIndex": { "type": "number" }, "count": { "type": "number" }, "group": { "type": "string" }, "color": { "type": "string" } } } } }, "required": ["xMin", "xMax", "data"] }] }, "scale": { "type": "string", "enum": ["compact", "default", "comfortable"], "default": "default" }, "showGrid": { "type": "boolean", "default": true }, "showLegend": { "type": "boolean", "default": true }, "showTooltip": { "type": "boolean", "default": true }, "xLabel": { "type": "string" }, "yLabel": { "type": "string" } }, "required": ["data"] };
13
20
  const histogramMeta = {
14
21
  id,
@@ -22,20 +29,34 @@ const histogramMeta = {
22
29
  entry,
23
30
  usageConditions,
24
31
  allowedActions,
32
+ tier,
33
+ intents,
34
+ dataRoles,
35
+ eligibility,
36
+ disqualify,
37
+ accessibility,
38
+ evalCases,
25
39
  propsSchema
26
40
  };
27
41
  export {
42
+ accessibility,
28
43
  allowedActions,
29
44
  chartTypeKeys,
45
+ dataRoles,
30
46
  histogramMeta as default,
31
47
  description,
48
+ disqualify,
49
+ eligibility,
32
50
  entry,
51
+ evalCases,
33
52
  id,
53
+ intents,
34
54
  lazyImport,
35
55
  propsSchema,
36
56
  source,
37
57
  stack,
38
58
  tag,
59
+ tier,
39
60
  title,
40
61
  usageConditions
41
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,17 @@
1
+ import { LitElement, PropertyValues } from 'lit';
2
+ export declare class Ui9000Image extends LitElement {
3
+ static styles: import('lit').CSSResult[];
4
+ dataJson: string;
5
+ private _image;
6
+ private refresh;
7
+ connectedCallback(): void;
8
+ willUpdate(changed: PropertyValues): void;
9
+ render(): import('lit-html').TemplateResult<1>;
10
+ }
11
+ export declare function registerImage(): void;
12
+ declare global {
13
+ interface HTMLElementTagNameMap {
14
+ 'ui9000-image': Ui9000Image;
15
+ }
16
+ }
17
+ //# sourceMappingURL=ui9000-image.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui9000-image.d.ts","sourceRoot":"","sources":["../../../../src/components/image/element/ui9000-image.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,UAAU,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAoBjE,qBACa,WAAY,SAAQ,UAAU;IACzC,OAAgB,MAAM,4BAAgC;IAGtD,QAAQ,SAAQ;IAGhB,OAAO,CAAC,MAAM,CAA6C;IAE3D,OAAO,CAAC,OAAO;IAIN,iBAAiB,IAAI,IAAI;IAKzB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAIzC,MAAM;CAUhB;AAED,wBAAgB,aAAa,IAAI,IAAI,CAIpC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,cAAc,EAAE,WAAW,CAAC;KAC7B;CACF"}
@@ -0,0 +1,74 @@
1
+ import { LitElement, html, css } from "lit";
2
+ import { property, state, customElement } from "lit/decorators.js";
3
+ import { surfaceStyles } from "../../../element/surface-styles.js";
4
+ import { parseJsonAttr } from "../../../utils/chart-helpers.js";
5
+ import { normalizeImageContent } from "../lib/url.js";
6
+ var __defProp = Object.defineProperty;
7
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
8
+ var __decorateClass = (decorators, target, key, kind) => {
9
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
10
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
11
+ if (decorator = decorators[i])
12
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
13
+ if (kind && result) __defProp(target, key, result);
14
+ return result;
15
+ };
16
+ const imageStyles = css`
17
+ .image-pane {
18
+ display: flex;
19
+ overflow: hidden;
20
+ border-radius: 6px;
21
+ }
22
+ .image-pane img {
23
+ width: 100%;
24
+ height: 100%;
25
+ object-fit: cover;
26
+ }
27
+ `;
28
+ let Ui9000Image = class extends LitElement {
29
+ constructor() {
30
+ super(...arguments);
31
+ this.dataJson = "{}";
32
+ this._image = null;
33
+ }
34
+ refresh() {
35
+ this._image = normalizeImageContent(parseJsonAttr(this.dataJson, {}));
36
+ }
37
+ connectedCallback() {
38
+ super.connectedCallback();
39
+ this.refresh();
40
+ }
41
+ willUpdate(changed) {
42
+ if (changed.has("dataJson")) this.refresh();
43
+ }
44
+ render() {
45
+ if (!this._image) {
46
+ return html`<p class="blocked" role="status">Image URL must be http(s)</p>`;
47
+ }
48
+ return html`
49
+ <div class="root image-pane">
50
+ <img src=${this._image.src} alt=${this._image.alt} referrerpolicy="no-referrer" />
51
+ </div>
52
+ `;
53
+ }
54
+ };
55
+ Ui9000Image.styles = [surfaceStyles, imageStyles];
56
+ __decorateClass([
57
+ property({ type: String, attribute: "data" })
58
+ ], Ui9000Image.prototype, "dataJson", 2);
59
+ __decorateClass([
60
+ state()
61
+ ], Ui9000Image.prototype, "_image", 2);
62
+ Ui9000Image = __decorateClass([
63
+ customElement("ui9000-image")
64
+ ], Ui9000Image);
65
+ function registerImage() {
66
+ if (!customElements.get("ui9000-image")) {
67
+ customElements.define("ui9000-image", Ui9000Image);
68
+ }
69
+ }
70
+ export {
71
+ Ui9000Image,
72
+ registerImage
73
+ };
74
+ //# sourceMappingURL=ui9000-image.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui9000-image.js","sources":["../../../../src/components/image/element/ui9000-image.ts"],"sourcesContent":["import { css, html, LitElement, type PropertyValues } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\n\nimport { surfaceStyles } from '../../../element/surface-styles.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport { normalizeImageContent } from '../lib/url.js';\n\nconst imageStyles = css`\n .image-pane {\n display: flex;\n overflow: hidden;\n border-radius: 6px;\n }\n .image-pane img {\n width: 100%;\n height: 100%;\n object-fit: cover;\n }\n`;\n\n@customElement('ui9000-image')\nexport class Ui9000Image extends LitElement {\n static override styles = [surfaceStyles, imageStyles];\n\n @property({ type: String, attribute: 'data' })\n dataJson = '{}';\n\n @state()\n private _image: { src: string; alt: string } | null = null;\n\n private refresh(): void {\n this._image = normalizeImageContent(parseJsonAttr<Record<string, unknown>>(this.dataJson, {}));\n }\n\n override connectedCallback(): void {\n super.connectedCallback();\n this.refresh();\n }\n\n override willUpdate(changed: PropertyValues): void {\n if (changed.has('dataJson')) this.refresh();\n }\n\n override render() {\n if (!this._image) {\n return html`<p class=\"blocked\" role=\"status\">Image URL must be http(s)</p>`;\n }\n return html`\n <div class=\"root image-pane\">\n <img src=${this._image.src} alt=${this._image.alt} referrerpolicy=\"no-referrer\" />\n </div>\n `;\n }\n}\n\nexport function registerImage(): void {\n if (!customElements.get('ui9000-image')) {\n customElements.define('ui9000-image', Ui9000Image);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-image': Ui9000Image;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;;AAOA,MAAM,cAAc;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAcb,IAAM,cAAN,cAA0B,WAAW;AAAA,EAArC,cAAA;AAAA,UAAA,GAAA,SAAA;AAIL,SAAA,WAAW;AAGX,SAAQ,SAA8C;AAAA,EAAA;AAAA,EAE9C,UAAgB;AACtB,SAAK,SAAS,sBAAsB,cAAuC,KAAK,UAAU,CAAA,CAAE,CAAC;AAAA,EAC/F;AAAA,EAES,oBAA0B;AACjC,UAAM,kBAAA;AACN,SAAK,QAAA;AAAA,EACP;AAAA,EAES,WAAW,SAA+B;AACjD,QAAI,QAAQ,IAAI,UAAU,QAAQ,QAAA;AAAA,EACpC;AAAA,EAES,SAAS;AAChB,QAAI,CAAC,KAAK,QAAQ;AAChB,aAAO;AAAA,IACT;AACA,WAAO;AAAA;AAAA,mBAEQ,KAAK,OAAO,GAAG,QAAQ,KAAK,OAAO,GAAG;AAAA;AAAA;AAAA,EAGvD;AACF;AAhCa,YACK,SAAS,CAAC,eAAe,WAAW;AAGpD,gBAAA;AAAA,EADC,SAAS,EAAE,MAAM,QAAQ,WAAW,QAAQ;AAAA,GAHlC,YAIX,WAAA,YAAA,CAAA;AAGQ,gBAAA;AAAA,EADP,MAAA;AAAM,GANI,YAOH,WAAA,UAAA,CAAA;AAPG,cAAN,gBAAA;AAAA,EADN,cAAc,cAAc;AAAA,GAChB,WAAA;AAkCN,SAAS,gBAAsB;AACpC,MAAI,CAAC,eAAe,IAAI,cAAc,GAAG;AACvC,mBAAe,OAAO,gBAAgB,WAAW;AAAA,EACnD;AACF;"}
@@ -0,0 +1,4 @@
1
+ export { Ui9000Image, registerImage } from './element/ui9000-image.js';
2
+ export { isExternalImageUrl, normalizeImageContent, normalizeTextContent, } from './lib/url.js';
3
+ export { default as imageMetadata } from './metadata.json';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/image/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAC;AACvE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,iBAAiB,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { registerImage } from "./element/ui9000-image.js";
2
+ import { Ui9000Image } from "./element/ui9000-image.js";
3
+ import { isExternalImageUrl, normalizeImageContent, normalizeTextContent } from "./lib/url.js";
4
+ import { default as default2 } from "./metadata.json.js";
5
+ export {
6
+ Ui9000Image,
7
+ default2 as imageMetadata,
8
+ isExternalImageUrl,
9
+ normalizeImageContent,
10
+ normalizeTextContent,
11
+ registerImage
12
+ };
13
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;"}
@@ -0,0 +1,14 @@
1
+ /** Text + image panes — MCP is read-only (no editor, upload, or AI chat). */
2
+ export declare function normalizeTextContent(widget: {
3
+ text?: unknown;
4
+ }): string | null;
5
+ export declare function isExternalImageUrl(url: string): boolean;
6
+ export declare function normalizeImageContent(widget: {
7
+ imageUrl?: unknown;
8
+ src?: unknown;
9
+ alt?: unknown;
10
+ }): {
11
+ src: string;
12
+ alt: string;
13
+ } | null;
14
+ //# sourceMappingURL=url.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.d.ts","sourceRoot":"","sources":["../../../../src/components/image/lib/url.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAI7E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,MAAM,GAAG,IAAI,CAI9E;AAED,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEvD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,GAAG,CAAC,EAAE,OAAO,CAAC;CACf,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAOtC"}
@@ -8,8 +8,9 @@ function isExternalImageUrl(url) {
8
8
  return HTTP_URL.test(url.trim());
9
9
  }
10
10
  function normalizeImageContent(widget) {
11
- if (typeof widget.imageUrl !== "string") return null;
12
- const src = widget.imageUrl.trim();
11
+ const raw = typeof widget.imageUrl === "string" ? widget.imageUrl : widget.src;
12
+ if (typeof raw !== "string") return null;
13
+ const src = raw.trim();
13
14
  if (!src || src === "-" || !isExternalImageUrl(src)) return null;
14
15
  const alt = typeof widget.alt === "string" && widget.alt.trim() ? widget.alt.trim() : "Preview";
15
16
  return { src, alt };
@@ -19,4 +20,4 @@ export {
19
20
  normalizeImageContent,
20
21
  normalizeTextContent
21
22
  };
22
- //# sourceMappingURL=content.js.map
23
+ //# sourceMappingURL=url.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"url.js","sources":["../../../../src/components/image/lib/url.ts"],"sourcesContent":["/** Text + image panes — MCP is read-only (no editor, upload, or AI chat). */\n\nconst HTTP_URL = /^https?:\\/\\//i;\n\nexport function normalizeTextContent(widget: { text?: unknown }): string | null {\n if (typeof widget.text !== 'string') return null;\n const text = widget.text.trim();\n return text ? text : null;\n}\n\nexport function isExternalImageUrl(url: string): boolean {\n return HTTP_URL.test(url.trim());\n}\n\nexport function normalizeImageContent(widget: {\n imageUrl?: unknown;\n src?: unknown;\n alt?: unknown;\n}): { src: string; alt: string } | null {\n const raw = typeof widget.imageUrl === 'string' ? widget.imageUrl : widget.src;\n if (typeof raw !== 'string') return null;\n const src = raw.trim();\n if (!src || src === '-' || !isExternalImageUrl(src)) return null;\n const alt = typeof widget.alt === 'string' && widget.alt.trim() ? widget.alt.trim() : 'Preview';\n return { src, alt };\n}\n"],"names":[],"mappings":"AAEA,MAAM,WAAW;AAEV,SAAS,qBAAqB,QAA2C;AAC9E,MAAI,OAAO,OAAO,SAAS,SAAU,QAAO;AAC5C,QAAM,OAAO,OAAO,KAAK,KAAA;AACzB,SAAO,OAAO,OAAO;AACvB;AAEO,SAAS,mBAAmB,KAAsB;AACvD,SAAO,SAAS,KAAK,IAAI,KAAA,CAAM;AACjC;AAEO,SAAS,sBAAsB,QAIE;AACtC,QAAM,MAAM,OAAO,OAAO,aAAa,WAAW,OAAO,WAAW,OAAO;AAC3E,MAAI,OAAO,QAAQ,SAAU,QAAO;AACpC,QAAM,MAAM,IAAI,KAAA;AAChB,MAAI,CAAC,OAAO,QAAQ,OAAO,CAAC,mBAAmB,GAAG,EAAG,QAAO;AAC5D,QAAM,MAAM,OAAO,OAAO,QAAQ,YAAY,OAAO,IAAI,KAAA,IAAS,OAAO,IAAI,KAAA,IAAS;AACtF,SAAO,EAAE,KAAK,IAAA;AAChB;"}
@@ -0,0 +1,95 @@
1
+ declare const _default: {
2
+ "id": "image",
3
+ "tag": "ui9000-image",
4
+ "title": "Image",
5
+ "description": "http(s) screenshot / IOC image. Rejects javascript: and data: URLs.",
6
+ "chartTypeKeys": [],
7
+ "source": "ui9000-widgets Stage 2 close-out",
8
+ "stack": "lit",
9
+ "lazyImport": "@ui9000/widgets/lazy/image",
10
+ "entry": "@ui9000/widgets/image",
11
+ "usageConditions": {
12
+ "host": "mcp-chat",
13
+ "notFor": "fusedash-editor",
14
+ "mapsExcluded": true
15
+ },
16
+ "allowedActions": [
17
+ "resize"
18
+ ],
19
+ "tier": "engine",
20
+ "intents": [
21
+ "evidence"
22
+ ],
23
+ "dataRoles": [
24
+ {
25
+ "id": "image",
26
+ "required": true,
27
+ "description": "http(s) image URL."
28
+ }
29
+ ],
30
+ "eligibility": [
31
+ {
32
+ "when": "profile.hasClaim",
33
+ "reason": "Image supports a claim (screenshot, IOC)."
34
+ }
35
+ ],
36
+ "disqualify": [
37
+ {
38
+ "when": "!profile.hasClaim",
39
+ "reason": "An image without a claim is decoration; use evidence-panel."
40
+ }
41
+ ],
42
+ "accessibility": {
43
+ "nameFrom": "alt",
44
+ "keyboard": [
45
+ "Tab onto image"
46
+ ],
47
+ "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element."
48
+ },
49
+ "evalCases": [
50
+ {
51
+ "id": "image-picks-with-claim",
52
+ "intent": "evidence",
53
+ "profile": {
54
+ "hasClaim": true
55
+ },
56
+ "expect": "eligible",
57
+ "reasonIncludes": "screenshot"
58
+ },
59
+ {
60
+ "id": "image-rejects-no-claim",
61
+ "intent": "evidence",
62
+ "profile": {
63
+ "hasClaim": false
64
+ },
65
+ "expect": "disqualified",
66
+ "reasonIncludes": "evidence-panel"
67
+ }
68
+ ],
69
+ "propsSchema": {
70
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
71
+ "type": "object",
72
+ "properties": {
73
+ "data": {
74
+ "type": "object",
75
+ "properties": {
76
+ "src": {
77
+ "type": "string"
78
+ },
79
+ "imageUrl": {
80
+ "type": "string"
81
+ },
82
+ "alt": {
83
+ "type": "string"
84
+ }
85
+ }
86
+ }
87
+ },
88
+ "required": [
89
+ "data"
90
+ ]
91
+ }
92
+ }
93
+ ;
94
+
95
+ export default _default;
@@ -0,0 +1,63 @@
1
+ const id = "image";
2
+ const tag = "ui9000-image";
3
+ const title = "Image";
4
+ const description = "http(s) screenshot / IOC image. Rejects javascript: and data: URLs.";
5
+ const chartTypeKeys = [];
6
+ const source = "ui9000-widgets Stage 2 close-out";
7
+ const stack = "lit";
8
+ const lazyImport = "@ui9000/widgets/lazy/image";
9
+ const entry = "@ui9000/widgets/image";
10
+ const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true };
11
+ const allowedActions = ["resize"];
12
+ const tier = "engine";
13
+ const intents = ["evidence"];
14
+ const dataRoles = [{ "id": "image", "required": true, "description": "http(s) image URL." }];
15
+ const eligibility = [{ "when": "profile.hasClaim", "reason": "Image supports a claim (screenshot, IOC)." }];
16
+ const disqualify = [{ "when": "!profile.hasClaim", "reason": "An image without a claim is decoration; use evidence-panel." }];
17
+ const accessibility = { "nameFrom": "alt", "keyboard": ["Tab onto image"], "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element." };
18
+ const evalCases = [{ "id": "image-picks-with-claim", "intent": "evidence", "profile": { "hasClaim": true }, "expect": "eligible", "reasonIncludes": "screenshot" }, { "id": "image-rejects-no-claim", "intent": "evidence", "profile": { "hasClaim": false }, "expect": "disqualified", "reasonIncludes": "evidence-panel" }];
19
+ const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "type": "object", "properties": { "src": { "type": "string" }, "imageUrl": { "type": "string" }, "alt": { "type": "string" } } } }, "required": ["data"] };
20
+ const metadata = {
21
+ id,
22
+ tag,
23
+ title,
24
+ description,
25
+ chartTypeKeys,
26
+ source,
27
+ stack,
28
+ lazyImport,
29
+ entry,
30
+ usageConditions,
31
+ allowedActions,
32
+ tier,
33
+ intents,
34
+ dataRoles,
35
+ eligibility,
36
+ disqualify,
37
+ accessibility,
38
+ evalCases,
39
+ propsSchema
40
+ };
41
+ export {
42
+ accessibility,
43
+ allowedActions,
44
+ chartTypeKeys,
45
+ dataRoles,
46
+ metadata as default,
47
+ description,
48
+ disqualify,
49
+ eligibility,
50
+ entry,
51
+ evalCases,
52
+ id,
53
+ intents,
54
+ lazyImport,
55
+ propsSchema,
56
+ source,
57
+ stack,
58
+ tag,
59
+ tier,
60
+ title,
61
+ usageConditions
62
+ };
63
+ //# sourceMappingURL=metadata.json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -14,6 +14,53 @@ declare const _default: {
14
14
  "mapsExcluded": true
15
15
  },
16
16
  "allowedActions": ["resize"],
17
+ "tier": "engine",
18
+ "intents": ["summary"],
19
+ "dataRoles": [
20
+ {
21
+ "id": "metric",
22
+ "required": true,
23
+ "type": "number",
24
+ "description": "One or more headline counts or scores."
25
+ }
26
+ ],
27
+ "eligibility": [
28
+ {
29
+ "when": "profile.hasNumericMetric && profile.categoryCardinality <= 12",
30
+ "reason": "KPI summarises a small set of numeric headlines."
31
+ }
32
+ ],
33
+ "disqualify": [
34
+ {
35
+ "when": "profile.hasTabularRows && profile.rowCount > 20 && !profile.hasNumericMetric",
36
+ "reason": "Row-heavy evidence belongs on table, not KPI cards."
37
+ },
38
+ {
39
+ "when": "profile.hasGeo && !profile.hasNumericMetric",
40
+ "reason": "Spatial-only data belongs on map-chart."
41
+ }
42
+ ],
43
+ "accessibility": {
44
+ "nameFrom": "card name",
45
+ "keyboard": ["Tab between cards"],
46
+ "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element."
47
+ },
48
+ "evalCases": [
49
+ {
50
+ "id": "kpi-picks-counts",
51
+ "intent": "summary",
52
+ "profile": { "hasNumericMetric": true, "categoryCardinality": 4 },
53
+ "expect": "eligible",
54
+ "reasonIncludes": "headlines"
55
+ },
56
+ {
57
+ "id": "kpi-rejects-geo-only",
58
+ "intent": "spatial",
59
+ "profile": { "hasGeo": true, "hasNumericMetric": false },
60
+ "expect": "disqualified",
61
+ "reasonIncludes": "map-chart"
62
+ }
63
+ ],
17
64
  "propsSchema": {
18
65
  "$schema": "https://json-schema.org/draft/2020-12/schema",
19
66
  "type": "object",
@@ -9,6 +9,13 @@ const lazyImport = "@ui9000/widgets/lazy/kpi-widget";
9
9
  const entry = "@ui9000/widgets/kpi-widget";
10
10
  const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true };
11
11
  const allowedActions = ["resize"];
12
+ const tier = "engine";
13
+ const intents = ["summary"];
14
+ const dataRoles = [{ "id": "metric", "required": true, "type": "number", "description": "One or more headline counts or scores." }];
15
+ const eligibility = [{ "when": "profile.hasNumericMetric && profile.categoryCardinality <= 12", "reason": "KPI summarises a small set of numeric headlines." }];
16
+ const disqualify = [{ "when": "profile.hasTabularRows && profile.rowCount > 20 && !profile.hasNumericMetric", "reason": "Row-heavy evidence belongs on table, not KPI cards." }, { "when": "profile.hasGeo && !profile.hasNumericMetric", "reason": "Spatial-only data belongs on map-chart." }];
17
+ const accessibility = { "nameFrom": "card name", "keyboard": ["Tab between cards"], "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element." };
18
+ const evalCases = [{ "id": "kpi-picks-counts", "intent": "summary", "profile": { "hasNumericMetric": true, "categoryCardinality": 4 }, "expect": "eligible", "reasonIncludes": "headlines" }, { "id": "kpi-rejects-geo-only", "intent": "spatial", "profile": { "hasGeo": true, "hasNumericMetric": false }, "expect": "disqualified", "reasonIncludes": "map-chart" }];
12
19
  const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "oneOf": [{ "type": "object", "description": "Multi-KPI dashboard (chartType KPIs)", "properties": { "chartType": { "const": "KPIs" }, "items": { "type": "array" } } }, { "type": "object", "description": "Single FuseDash KPI item (chartType KPI)", "properties": { "chartType": { "const": "KPI" }, "type": { "type": "string" }, "data": { "type": "array" } } }, { "type": "array", "description": "Array of KPI items from MCP tool output" }] }, "scale": { "type": "string", "enum": ["compact", "default", "comfortable"] } } };
13
20
  const kpiMeta = {
14
21
  id,
@@ -22,20 +29,34 @@ const kpiMeta = {
22
29
  entry,
23
30
  usageConditions,
24
31
  allowedActions,
32
+ tier,
33
+ intents,
34
+ dataRoles,
35
+ eligibility,
36
+ disqualify,
37
+ accessibility,
38
+ evalCases,
25
39
  propsSchema
26
40
  };
27
41
  export {
42
+ accessibility,
28
43
  allowedActions,
29
44
  chartTypeKeys,
45
+ dataRoles,
30
46
  kpiMeta as default,
31
47
  description,
48
+ disqualify,
49
+ eligibility,
32
50
  entry,
51
+ evalCases,
33
52
  id,
53
+ intents,
34
54
  lazyImport,
35
55
  propsSchema,
36
56
  source,
37
57
  stack,
38
58
  tag,
59
+ tier,
39
60
  title,
40
61
  usageConditions
41
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -6,8 +6,8 @@ declare const _default: {
6
6
  "chartTypeKeys": ["mapChart", "UniversalMap"],
7
7
  "source": "client/libs/shared/components/src/Widgets/MapBox/",
8
8
  "stack": "mapbox-gl",
9
- "lazyImport": "@fusedashlabs/widgets/lazy/map-chart",
10
- "entry": "@fusedashlabs/widgets/map-chart",
9
+ "lazyImport": "@ui9000/widgets/lazy/map-chart",
10
+ "entry": "@ui9000/widgets/map-chart",
11
11
  "usageConditions": {
12
12
  "host": "mcp-chat",
13
13
  "notFor": "fusedash-editor",
@@ -16,6 +16,58 @@ declare const _default: {
16
16
  "requires": ["mapbox-token", "geojson", "pmtiles"]
17
17
  },
18
18
  "allowedActions": ["hover", "pan", "zoom", "resize"],
19
+ "tier": "engine",
20
+ "intents": ["spatial"],
21
+ "dataRoles": [
22
+ {
23
+ "id": "geo",
24
+ "required": true,
25
+ "description": "lat/lng or a region id that joins to GeoJSON / PMTiles."
26
+ },
27
+ {
28
+ "id": "metric",
29
+ "required": false,
30
+ "type": "number",
31
+ "description": "Optional fill or bubble magnitude."
32
+ }
33
+ ],
34
+ "eligibility": [
35
+ {
36
+ "when": "profile.hasGeo && profile.hasMapToken",
37
+ "reason": "Map is eligible when the profile is spatial and a Mapbox token plus tiles are available (lazy entry)."
38
+ }
39
+ ],
40
+ "disqualify": [
41
+ {
42
+ "when": "!profile.hasGeo",
43
+ "reason": "Without geo fields the map has nothing to join; use bar-chart or table."
44
+ },
45
+ {
46
+ "when": "profile.hasGeo && !profile.hasMapToken",
47
+ "reason": "Map stays lazy until the host injects a token and tile URLs."
48
+ }
49
+ ],
50
+ "accessibility": {
51
+ "nameFrom": "title",
52
+ "keyboard": ["Tab into map chrome", "legend filters"],
53
+ "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element."
54
+ },
55
+ "evalCases": [
56
+ {
57
+ "id": "map-picks-geo-with-token",
58
+ "intent": "spatial",
59
+ "profile": { "hasGeo": true, "hasMapToken": true },
60
+ "expect": "eligible",
61
+ "reasonIncludes": "spatial"
62
+ },
63
+ {
64
+ "id": "map-rejects-no-geo",
65
+ "intent": "comparison",
66
+ "profile": { "hasGeo": false, "hasCategory": true, "hasNumericMetric": true },
67
+ "expect": "disqualified",
68
+ "reasonIncludes": "bar-chart"
69
+ }
70
+ ],
19
71
  "propsSchema": {
20
72
  "$schema": "https://json-schema.org/draft/2020-12/schema",
21
73
  "type": "object",
@@ -5,10 +5,17 @@ const description = "FuseDash MapBox / UniversalMap as a Shadow DOM web componen
5
5
  const chartTypeKeys = ["mapChart", "UniversalMap"];
6
6
  const source = "client/libs/shared/components/src/Widgets/MapBox/";
7
7
  const stack = "mapbox-gl";
8
- const lazyImport = "@fusedashlabs/widgets/lazy/map-chart";
9
- const entry = "@fusedashlabs/widgets/map-chart";
8
+ const lazyImport = "@ui9000/widgets/lazy/map-chart";
9
+ const entry = "@ui9000/widgets/map-chart";
10
10
  const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": false, "hostReady": true, "requires": ["mapbox-token", "geojson", "pmtiles"] };
11
11
  const allowedActions = ["hover", "pan", "zoom", "resize"];
12
+ const tier = "engine";
13
+ const intents = ["spatial"];
14
+ const dataRoles = [{ "id": "geo", "required": true, "description": "lat/lng or a region id that joins to GeoJSON / PMTiles." }, { "id": "metric", "required": false, "type": "number", "description": "Optional fill or bubble magnitude." }];
15
+ const eligibility = [{ "when": "profile.hasGeo && profile.hasMapToken", "reason": "Map is eligible when the profile is spatial and a Mapbox token plus tiles are available (lazy entry)." }];
16
+ const disqualify = [{ "when": "!profile.hasGeo", "reason": "Without geo fields the map has nothing to join; use bar-chart or table." }, { "when": "profile.hasGeo && !profile.hasMapToken", "reason": "Map stays lazy until the host injects a token and tile URLs." }];
17
+ const accessibility = { "nameFrom": "title", "keyboard": ["Tab into map chrome", "legend filters"], "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element." };
18
+ const evalCases = [{ "id": "map-picks-geo-with-token", "intent": "spatial", "profile": { "hasGeo": true, "hasMapToken": true }, "expect": "eligible", "reasonIncludes": "spatial" }, { "id": "map-rejects-no-geo", "intent": "comparison", "profile": { "hasGeo": false, "hasCategory": true, "hasNumericMetric": true }, "expect": "disqualified", "reasonIncludes": "bar-chart" }];
12
19
  const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "oneOf": [{ "type": "object", "description": "FuseDash WidgetItem-shaped map payload (layers[].data + geospatialData).", "properties": { "name": { "type": "string" }, "chartType": { "type": "string", "const": "mapChart" }, "layers": { "type": "array", "items": { "type": "object", "properties": { "name": { "type": "string" }, "visualisationType": { "type": "string", "enum": ["choropleth", "bubbles", "spike", "markers"] }, "geospatialData": { "type": "array", "items": { "type": "string" } }, "arrangeByMetric": { "type": "array", "items": { "type": "string" } }, "data": { "type": "array", "items": { "type": "object" } } } } } } }, { "type": "array", "description": "Chat rows { label, value } joined as a country choropleth.", "items": { "type": "object", "required": ["label", "value"], "properties": { "label": { "type": "string" }, "value": { "type": "number" } } } }] }, "chart-title": { "type": "string" }, "show-header": { "type": "boolean", "default": true }, "show-legend": { "type": "boolean", "default": true }, "show-tooltip": { "type": "boolean", "default": true }, "mapbox-token": { "type": "string" }, "geojson-base-url": { "type": "string", "description": "Base URL that serves {country,state,county,city,province}.json centroid FeatureCollections used for the data-join / bubbles / spikes." }, "pmtiles-base-url": { "type": "string", "default": "/pmtiles", "description": "Base URL that serves world-countries.pmtiles (and other admin archives). Choropleth fills use these vector tiles — the GeoJSON files are centroids, not polygons." } }, "required": ["data"] };
13
20
  const mapChartMeta = {
14
21
  id,
@@ -22,20 +29,34 @@ const mapChartMeta = {
22
29
  entry,
23
30
  usageConditions,
24
31
  allowedActions,
32
+ tier,
33
+ intents,
34
+ dataRoles,
35
+ eligibility,
36
+ disqualify,
37
+ accessibility,
38
+ evalCases,
25
39
  propsSchema
26
40
  };
27
41
  export {
42
+ accessibility,
28
43
  allowedActions,
29
44
  chartTypeKeys,
45
+ dataRoles,
30
46
  mapChartMeta as default,
31
47
  description,
48
+ disqualify,
49
+ eligibility,
32
50
  entry,
51
+ evalCases,
33
52
  id,
53
+ intents,
34
54
  lazyImport,
35
55
  propsSchema,
36
56
  source,
37
57
  stack,
38
58
  tag,
59
+ tier,
39
60
  title,
40
61
  usageConditions
41
62
  };
@@ -1 +1 @@
1
- {"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"metadata.json.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}