@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
@@ -0,0 +1,99 @@
1
+ declare const _default: {
2
+ "id": "checkbox",
3
+ "tag": "ui9000-checkbox",
4
+ "title": "Checkbox",
5
+ "description": "Checkbox control. Fail-closed without a label.",
6
+ "chartTypeKeys": [],
7
+ "source": "ui9000-widgets Stage 2 close-out",
8
+ "stack": "lit",
9
+ "lazyImport": "@ui9000/widgets/lazy/checkbox",
10
+ "entry": "@ui9000/widgets/checkbox",
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
+ "form"
22
+ ],
23
+ "dataRoles": [
24
+ {
25
+ "id": "value",
26
+ "required": false,
27
+ "description": "Control value."
28
+ }
29
+ ],
30
+ "eligibility": [
31
+ {
32
+ "when": "profile.allControlsLabelled && profile.controlCount >= 1",
33
+ "reason": "Form controls are eligible when every control has a label."
34
+ }
35
+ ],
36
+ "disqualify": [
37
+ {
38
+ "when": "!profile.allControlsLabelled",
39
+ "reason": "Unlabelled control is refused."
40
+ },
41
+ {
42
+ "when": "profile.controlCount === 0",
43
+ "reason": "No controls to render."
44
+ }
45
+ ],
46
+ "accessibility": {
47
+ "nameFrom": "label",
48
+ "keyboard": [
49
+ "Tab into the labelled control"
50
+ ],
51
+ "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element."
52
+ },
53
+ "evalCases": [
54
+ {
55
+ "id": "checkbox-picks-labelled",
56
+ "intent": "form",
57
+ "profile": {
58
+ "allControlsLabelled": true,
59
+ "controlCount": 1
60
+ },
61
+ "expect": "eligible",
62
+ "reasonIncludes": "label"
63
+ },
64
+ {
65
+ "id": "checkbox-rejects-unlabelled",
66
+ "intent": "form",
67
+ "profile": {
68
+ "allControlsLabelled": false,
69
+ "controlCount": 1
70
+ },
71
+ "expect": "disqualified",
72
+ "reasonIncludes": "Unlabelled"
73
+ }
74
+ ],
75
+ "propsSchema": {
76
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
77
+ "type": "object",
78
+ "properties": {
79
+ "data": {
80
+ "type": "object",
81
+ "properties": {
82
+ "label": {
83
+ "type": "string"
84
+ },
85
+ "name": {
86
+ "type": "string"
87
+ },
88
+ "value": {}
89
+ }
90
+ }
91
+ },
92
+ "required": [
93
+ "data"
94
+ ]
95
+ }
96
+ }
97
+ ;
98
+
99
+ export default _default;
@@ -0,0 +1,63 @@
1
+ const id = "checkbox";
2
+ const tag = "ui9000-checkbox";
3
+ const title = "Checkbox";
4
+ const description = "Checkbox control. Fail-closed without a label.";
5
+ const chartTypeKeys = [];
6
+ const source = "ui9000-widgets Stage 2 close-out";
7
+ const stack = "lit";
8
+ const lazyImport = "@ui9000/widgets/lazy/checkbox";
9
+ const entry = "@ui9000/widgets/checkbox";
10
+ const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true };
11
+ const allowedActions = ["resize"];
12
+ const tier = "engine";
13
+ const intents = ["form"];
14
+ const dataRoles = [{ "id": "value", "required": false, "description": "Control value." }];
15
+ const eligibility = [{ "when": "profile.allControlsLabelled && profile.controlCount >= 1", "reason": "Form controls are eligible when every control has a label." }];
16
+ const disqualify = [{ "when": "!profile.allControlsLabelled", "reason": "Unlabelled control is refused." }, { "when": "profile.controlCount === 0", "reason": "No controls to render." }];
17
+ const accessibility = { "nameFrom": "label", "keyboard": ["Tab into the labelled control"], "shadowBoundary": "Do not use aria-labelledby across the host; set aria-label on the host element." };
18
+ const evalCases = [{ "id": "checkbox-picks-labelled", "intent": "form", "profile": { "allControlsLabelled": true, "controlCount": 1 }, "expect": "eligible", "reasonIncludes": "label" }, { "id": "checkbox-rejects-unlabelled", "intent": "form", "profile": { "allControlsLabelled": false, "controlCount": 1 }, "expect": "disqualified", "reasonIncludes": "Unlabelled" }];
19
+ const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "type": "object", "properties": { "label": { "type": "string" }, "name": { "type": "string" }, "value": {} } } }, "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":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -5,8 +5,7 @@ import { ArrangingDirection } from '../lib/index.js';
5
5
  /**
6
6
  * FuseDash CustomWidget shell: title, optional KPI band, and up to two arranged
7
7
  * panes. Chart panes mount `ui9000-chart-renderer`, the KPI band mounts
8
- * `ui9000-kpi-widget`; table / text / image panes render inline. Child charts
9
- * are lazy-loaded so this entry stays small.
8
+ * `ui9000-kpi-widget`; table / text / image panes mount those primitives.
10
9
  */
11
10
  export declare class Ui9000CustomWidget extends Ui9000ChartElement {
12
11
  static styles: import('lit').CSSResult[];
@@ -1 +1 @@
1
- {"version":3,"file":"ui9000-custom-widget.d.ts","sourceRoot":"","sources":["../../../../src/components/custom-widget/element/ui9000-custom-widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAI9E,OAAO,EAAoB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAIL,KAAK,kBAAkB,EAGxB,MAAM,iBAAiB,CAAC;AA0BzB;;;;;GAKG;AACH,qBACa,kBAAmB,SAAQ,kBAAkB;IACxD,OAAgB,MAAM,4BAA0C;IAGhE,KAAK,EAAE,WAAW,CAAa;IAE/B,uDAAuD;IAEvD,SAAS,EAAE,kBAAkB,GAAG,EAAE,CAAM;IAGxC,QAAQ,UAAQ;IAGhB,UAAU,UAAQ;IAGlB,WAAW,UAAQ;IAGnB,OAAO,CAAC,MAAM,CAAkC;IAEvC,iBAAiB,IAAI,IAAI;IAMzB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAOlD,4DAA4D;YAC9C,gBAAgB;IAS9B,OAAO,KAAK,iBAAiB,GAI5B;IAED,2EAA2E;IAC3E,OAAO,CAAC,IAAI;IAIZ;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB,sFAAsF;IACtF,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAuCnB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,WAAW;IAqBnB,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,aAAa;IAYZ,MAAM;CAyBhB;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;CACF"}
1
+ {"version":3,"file":"ui9000-custom-widget.d.ts","sourceRoot":"","sources":["../../../../src/components/custom-widget/element/ui9000-custom-widget.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,cAAc,EAAE,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAI9E,OAAO,EAAoB,kBAAkB,EAAE,MAAM,uCAAuC,CAAC;AAE7F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAE3D,OAAO,EAGL,KAAK,kBAAkB,EAGxB,MAAM,iBAAiB,CAAC;AA0BzB;;;;GAIG;AACH,qBACa,kBAAmB,SAAQ,kBAAkB;IACxD,OAAgB,MAAM,4BAA0C;IAGhE,KAAK,EAAE,WAAW,CAAa;IAE/B,uDAAuD;IAEvD,SAAS,EAAE,kBAAkB,GAAG,EAAE,CAAM;IAGxC,QAAQ,UAAQ;IAGhB,UAAU,UAAQ;IAGlB,WAAW,UAAQ;IAGnB,OAAO,CAAC,MAAM,CAAkC;IAEvC,iBAAiB,IAAI,IAAI;IAMzB,UAAU,CAAC,OAAO,EAAE,cAAc,GAAG,IAAI;IAOlD,4DAA4D;YAC9C,gBAAgB;IAkB9B,OAAO,KAAK,iBAAiB,GAI5B;IAED,2EAA2E;IAC3E,OAAO,CAAC,IAAI;IAIZ;;;OAGG;IACH,OAAO,CAAC,aAAa;IAKrB,sFAAsF;IACtF,OAAO,CAAC,WAAW;IAKnB,OAAO,CAAC,WAAW;IAWnB,OAAO,CAAC,WAAW;IAYnB,OAAO,CAAC,UAAU;IAelB,OAAO,CAAC,WAAW;IAenB,OAAO,CAAC,UAAU;IAiClB,OAAO,CAAC,aAAa;IAYZ,MAAM;CAyBhB;AAED,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,sBAAsB,EAAE,kBAAkB,CAAC;KAC5C;CACF"}
@@ -6,7 +6,6 @@ import { loadChart } from "../../../lazy/index.js";
6
6
  import { parseJsonAttr } from "../../../utils/chart-helpers.js";
7
7
  import { customWidgetStyles } from "./styles.js";
8
8
  import { normalizeCustomWidget } from "../lib/normalize.js";
9
- import { renderMarkdown } from "../lib/markdown.js";
10
9
  import { paneFlexDirection } from "../lib/layout.js";
11
10
  import { chartShellStyles } from "../../../element/chart-shell-styles.js";
12
11
  var __defProp = Object.defineProperty;
@@ -61,6 +60,15 @@ let Ui9000CustomWidget = class extends Ui9000ChartElement {
61
60
  if (this._model.panes.some((pane) => pane.kind === "chartWidget" && pane.renderable)) {
62
61
  pending.push(loadChart("chart-renderer"));
63
62
  }
63
+ if (this._model.panes.some((pane) => pane.kind === "tableWidget" && pane.renderable)) {
64
+ pending.push(loadChart("table"));
65
+ }
66
+ if (this._model.panes.some((pane) => pane.kind === "textWidget" && pane.renderable)) {
67
+ pending.push(loadChart("text"));
68
+ }
69
+ if (this._model.panes.some((pane) => pane.kind === "imageWidget" && pane.renderable)) {
70
+ pending.push(loadChart("image"));
71
+ }
64
72
  await Promise.all(pending);
65
73
  }
66
74
  get resolvedDirection() {
@@ -102,32 +110,7 @@ let Ui9000CustomWidget = class extends Ui9000ChartElement {
102
110
  }
103
111
  return html`
104
112
  <div class="pane" data-kind=${pane.kind}>
105
- <div class="table-root">
106
- <div class="table-scroll">
107
- <table class="table">
108
- <thead>
109
- <tr>
110
- ${table.columns.map(
111
- (col) => html`<th class="table-cell" data-header>${col.label}</th>`
112
- )}
113
- </tr>
114
- </thead>
115
- <tbody>
116
- ${table.cells.map(
117
- (row) => html`
118
- <tr class="table-row">
119
- ${row.map(
120
- (cell) => cell.badge ? html`<td class="table-cell">
121
- <span class="table-badge" data-type=${cell.badge}>${cell.text}</span>
122
- </td>` : html`<td class="table-cell">${cell.text}</td>`
123
- )}
124
- </tr>
125
- `
126
- )}
127
- </tbody>
128
- </table>
129
- </div>
130
- </div>
113
+ <ui9000-table data=${JSON.stringify(table)}></ui9000-table>
131
114
  </div>
132
115
  `;
133
116
  }
@@ -141,7 +124,7 @@ let Ui9000CustomWidget = class extends Ui9000ChartElement {
141
124
  }
142
125
  return html`
143
126
  <div class="pane" data-kind=${pane.kind}>
144
- <div class="text-pane">${renderMarkdown(pane.text)}</div>
127
+ <ui9000-text data=${JSON.stringify({ text: pane.text })}></ui9000-text>
145
128
  </div>
146
129
  `;
147
130
  }
@@ -155,13 +138,7 @@ let Ui9000CustomWidget = class extends Ui9000ChartElement {
155
138
  }
156
139
  return html`
157
140
  <div class="pane" data-kind=${pane.kind}>
158
- <div class="image-pane">
159
- <img
160
- src=${pane.image.src}
161
- alt=${pane.image.alt}
162
- referrerpolicy="no-referrer"
163
- />
164
- </div>
141
+ <ui9000-image data=${JSON.stringify({ src: pane.image.src, alt: pane.image.alt })}></ui9000-image>
165
142
  </div>
166
143
  `;
167
144
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ui9000-custom-widget.js","sources":["../../../../src/components/custom-widget/element/ui9000-custom-widget.ts"],"sourcesContent":["import { html, nothing, type PropertyValues, type TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { chartShellStyles, Ui9000ChartElement } from '../../../element/ui9000-chart-base.js';\nimport { loadChart } from '../../../lazy/index.js';\nimport type { WidgetScale } from '../../../types/index.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport {\n normalizeCustomWidget,\n paneFlexDirection,\n renderMarkdown,\n type ArrangingDirection,\n type CustomPane,\n type CustomWidgetModel,\n} from '../lib/index.js';\nimport { customWidgetStyles } from './styles.js';\n\n/**\n * `show-*` flags default to on; `show-x=\"false\"` turns them off. Matches how\n * `ui9000-chart-renderer` reads the same attributes.\n */\nconst flagConverter = {\n fromAttribute: (value: string | null): boolean => value !== null && value !== 'false',\n toAttribute: (value: boolean): string => (value ? '' : 'false'),\n};\n\nconst EMPTY_MODEL: CustomWidgetModel = {\n title: '',\n direction: 'vertical',\n hasKpi: false,\n panes: [],\n widget: null,\n isEmpty: true,\n};\n\n/** Client `WidgetDefaultState` copy, minus the editor-only toolbar */\nconst DEFAULT_STATE_TITLE = 'Choose an Option';\nconst DEFAULT_STATE_SUBTITLE =\n 'We recommend starting with a chart, then enhancing your widget with lists, tables, or descriptions.';\n\n/**\n * FuseDash CustomWidget shell: title, optional KPI band, and up to two arranged\n * panes. Chart panes mount `ui9000-chart-renderer`, the KPI band mounts\n * `ui9000-kpi-widget`; table / text / image panes render inline. Child charts\n * are lazy-loaded so this entry stays small.\n */\n@customElement('ui9000-custom-widget')\nexport class Ui9000CustomWidget extends Ui9000ChartElement {\n static override styles = [customWidgetStyles, chartShellStyles];\n\n @property({ type: String, attribute: 'scale' })\n scale: WidgetScale = 'default';\n\n /** Overrides `arranging.direction` from the payload */\n @property({ type: String, attribute: 'direction' })\n direction: ArrangingDirection | '' = '';\n\n @property({ converter: flagConverter, attribute: 'show-grid' })\n showGrid = true;\n\n @property({ converter: flagConverter, attribute: 'show-legend' })\n showLegend = true;\n\n @property({ converter: flagConverter, attribute: 'show-tooltip' })\n showTooltip = true;\n\n @state()\n private _model: CustomWidgetModel = EMPTY_MODEL;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._model = normalizeCustomWidget(parseJsonAttr<unknown>(this.dataJson, null));\n void this.loadPaneElements();\n }\n\n override willUpdate(changed: PropertyValues): void {\n if (changed.has('dataJson')) {\n this._model = normalizeCustomWidget(parseJsonAttr<unknown>(this.dataJson, null));\n void this.loadPaneElements();\n }\n }\n\n /** Register the child elements this model actually uses. */\n private async loadPaneElements(): Promise<void> {\n const pending: Promise<unknown>[] = [];\n if (this._model.hasKpi) pending.push(loadChart('kpi-widget'));\n if (this._model.panes.some((pane) => pane.kind === 'chartWidget' && pane.renderable)) {\n pending.push(loadChart('chart-renderer'));\n }\n await Promise.all(pending);\n }\n\n private get resolvedDirection(): ArrangingDirection {\n return this.direction === 'horizontal' || this.direction === 'vertical'\n ? this.direction\n : this._model.direction;\n }\n\n /** chart-renderer reads absent as \"unset\", so forward an explicit value */\n private flag(value: boolean): string {\n return value ? '' : 'false';\n }\n\n /**\n * Inner FuseDash chartType for the chart pane. Must be forwarded as\n * `chart-type` so the renderer does not treat `isCustom` as customWidget.\n */\n private paneChartType(): string {\n const chartType = this._model.widget?.chartType;\n return typeof chartType === 'string' ? chartType.trim() : '';\n }\n\n /** KPI cards only — omit widget `name` so the band does not repeat the shell title */\n private kpiDataJson(): string {\n const kpis = this._model.widget?.kpis;\n return JSON.stringify(Array.isArray(kpis) ? kpis : []);\n }\n\n private renderEmpty(title: string, subtitle: string, className: string): TemplateResult {\n return html`\n <div class=${className}>\n <div>\n <strong>${title}</strong>\n <span>${subtitle}</span>\n </div>\n </div>\n `;\n }\n\n private renderTable(pane: CustomPane): TemplateResult {\n const table = pane.table;\n if (!table) {\n return this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty');\n }\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n <div class=\"table-root\">\n <div class=\"table-scroll\">\n <table class=\"table\">\n <thead>\n <tr>\n ${table.columns.map(\n (col) => html`<th class=\"table-cell\" data-header>${col.label}</th>`,\n )}\n </tr>\n </thead>\n <tbody>\n ${table.cells.map(\n (row) => html`\n <tr class=\"table-row\">\n ${row.map((cell) =>\n cell.badge\n ? html`<td class=\"table-cell\">\n <span class=\"table-badge\" data-type=${cell.badge}>${cell.text}</span>\n </td>`\n : html`<td class=\"table-cell\">${cell.text}</td>`,\n )}\n </tr>\n `,\n )}\n </tbody>\n </table>\n </div>\n </div>\n </div>\n `;\n }\n\n private renderText(pane: CustomPane): TemplateResult {\n if (!pane.text) {\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n ${this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty')}\n </div>\n `;\n }\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n <div class=\"text-pane\">${renderMarkdown(pane.text)}</div>\n </div>\n `;\n }\n\n private renderImage(pane: CustomPane): TemplateResult {\n if (!pane.image) {\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n ${this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty')}\n </div>\n `;\n }\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n <div class=\"image-pane\">\n <img\n src=${pane.image.src}\n alt=${pane.image.alt}\n referrerpolicy=\"no-referrer\"\n />\n </div>\n </div>\n `;\n }\n\n private renderPane(pane: CustomPane): TemplateResult {\n if (pane.kind === 'tableWidget') {\n return pane.renderable ? this.renderTable(pane) : html`\n <div class=\"pane\" data-kind=${pane.kind}>\n ${this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty')}\n </div>\n `;\n }\n if (pane.kind === 'textWidget') return this.renderText(pane);\n if (pane.kind === 'imageWidget') return this.renderImage(pane);\n if (!pane.renderable) {\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n ${this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty')}\n </div>\n `;\n }\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n <ui9000-chart-renderer\n embedded\n data=${this.dataJson}\n chart-type=${this.paneChartType()}\n scale=${this.scale}\n show-header=\"false\"\n show-grid=${this.flag(this.showGrid)}\n show-legend=${this.flag(this.showLegend)}\n show-tooltip=${this.flag(this.showTooltip)}\n ></ui9000-chart-renderer>\n </div>\n `;\n }\n\n private renderKpiBand(): TemplateResult {\n return html`\n <div class=\"kpi-band\">\n <ui9000-kpi-widget\n data=${this.kpiDataJson()}\n scale=${this.scale}\n show-header=\"false\"\n ></ui9000-kpi-widget>\n </div>\n `;\n }\n\n override render() {\n const model = this._model;\n const title = this.headerTitle();\n\n return html`\n <div class=\"widget-shell custom-root\" part=\"shell\">\n ${this.renderShellHeader(title)} ${model.hasKpi ? this.renderKpiBand() : nothing}\n ${model.isEmpty\n ? this.renderEmpty(DEFAULT_STATE_TITLE, DEFAULT_STATE_SUBTITLE, 'default-state')\n : html`\n <div\n class=\"custom-content\"\n data-direction=${this.resolvedDirection}\n data-panes=${model.panes.length}\n style=${styleMap({\n flexDirection: paneFlexDirection(this.resolvedDirection),\n })}\n >\n ${model.panes.map((pane) => this.renderPane(pane))}\n </div>\n `}\n ${this.renderShellLabelTooltip()}\n </div>\n `;\n }\n}\n\nexport function registerCustomWidget(): void {\n if (!customElements.get('ui9000-custom-widget')) {\n customElements.define('ui9000-custom-widget', Ui9000CustomWidget);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-custom-widget': Ui9000CustomWidget;\n }\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ui9000-custom-widget.js","sources":["../../../../src/components/custom-widget/element/ui9000-custom-widget.ts"],"sourcesContent":["import { html, nothing, type PropertyValues, type TemplateResult } from 'lit';\nimport { customElement, property, state } from 'lit/decorators.js';\nimport { styleMap } from 'lit/directives/style-map.js';\n\nimport { chartShellStyles, Ui9000ChartElement } from '../../../element/ui9000-chart-base.js';\nimport { loadChart } from '../../../lazy/index.js';\nimport type { WidgetScale } from '../../../types/index.js';\nimport { parseJsonAttr } from '../../../utils/chart-helpers.js';\nimport {\n normalizeCustomWidget,\n paneFlexDirection,\n type ArrangingDirection,\n type CustomPane,\n type CustomWidgetModel,\n} from '../lib/index.js';\nimport { customWidgetStyles } from './styles.js';\n\n/**\n * `show-*` flags default to on; `show-x=\"false\"` turns them off. Matches how\n * `ui9000-chart-renderer` reads the same attributes.\n */\nconst flagConverter = {\n fromAttribute: (value: string | null): boolean => value !== null && value !== 'false',\n toAttribute: (value: boolean): string => (value ? '' : 'false'),\n};\n\nconst EMPTY_MODEL: CustomWidgetModel = {\n title: '',\n direction: 'vertical',\n hasKpi: false,\n panes: [],\n widget: null,\n isEmpty: true,\n};\n\n/** Client `WidgetDefaultState` copy, minus the editor-only toolbar */\nconst DEFAULT_STATE_TITLE = 'Choose an Option';\nconst DEFAULT_STATE_SUBTITLE =\n 'We recommend starting with a chart, then enhancing your widget with lists, tables, or descriptions.';\n\n/**\n * FuseDash CustomWidget shell: title, optional KPI band, and up to two arranged\n * panes. Chart panes mount `ui9000-chart-renderer`, the KPI band mounts\n * `ui9000-kpi-widget`; table / text / image panes mount those primitives.\n */\n@customElement('ui9000-custom-widget')\nexport class Ui9000CustomWidget extends Ui9000ChartElement {\n static override styles = [customWidgetStyles, chartShellStyles];\n\n @property({ type: String, attribute: 'scale' })\n scale: WidgetScale = 'default';\n\n /** Overrides `arranging.direction` from the payload */\n @property({ type: String, attribute: 'direction' })\n direction: ArrangingDirection | '' = '';\n\n @property({ converter: flagConverter, attribute: 'show-grid' })\n showGrid = true;\n\n @property({ converter: flagConverter, attribute: 'show-legend' })\n showLegend = true;\n\n @property({ converter: flagConverter, attribute: 'show-tooltip' })\n showTooltip = true;\n\n @state()\n private _model: CustomWidgetModel = EMPTY_MODEL;\n\n override connectedCallback(): void {\n super.connectedCallback();\n this._model = normalizeCustomWidget(parseJsonAttr<unknown>(this.dataJson, null));\n void this.loadPaneElements();\n }\n\n override willUpdate(changed: PropertyValues): void {\n if (changed.has('dataJson')) {\n this._model = normalizeCustomWidget(parseJsonAttr<unknown>(this.dataJson, null));\n void this.loadPaneElements();\n }\n }\n\n /** Register the child elements this model actually uses. */\n private async loadPaneElements(): Promise<void> {\n const pending: Promise<unknown>[] = [];\n if (this._model.hasKpi) pending.push(loadChart('kpi-widget'));\n if (this._model.panes.some((pane) => pane.kind === 'chartWidget' && pane.renderable)) {\n pending.push(loadChart('chart-renderer'));\n }\n if (this._model.panes.some((pane) => pane.kind === 'tableWidget' && pane.renderable)) {\n pending.push(loadChart('table'));\n }\n if (this._model.panes.some((pane) => pane.kind === 'textWidget' && pane.renderable)) {\n pending.push(loadChart('text'));\n }\n if (this._model.panes.some((pane) => pane.kind === 'imageWidget' && pane.renderable)) {\n pending.push(loadChart('image'));\n }\n await Promise.all(pending);\n }\n\n private get resolvedDirection(): ArrangingDirection {\n return this.direction === 'horizontal' || this.direction === 'vertical'\n ? this.direction\n : this._model.direction;\n }\n\n /** chart-renderer reads absent as \"unset\", so forward an explicit value */\n private flag(value: boolean): string {\n return value ? '' : 'false';\n }\n\n /**\n * Inner FuseDash chartType for the chart pane. Must be forwarded as\n * `chart-type` so the renderer does not treat `isCustom` as customWidget.\n */\n private paneChartType(): string {\n const chartType = this._model.widget?.chartType;\n return typeof chartType === 'string' ? chartType.trim() : '';\n }\n\n /** KPI cards only — omit widget `name` so the band does not repeat the shell title */\n private kpiDataJson(): string {\n const kpis = this._model.widget?.kpis;\n return JSON.stringify(Array.isArray(kpis) ? kpis : []);\n }\n\n private renderEmpty(title: string, subtitle: string, className: string): TemplateResult {\n return html`\n <div class=${className}>\n <div>\n <strong>${title}</strong>\n <span>${subtitle}</span>\n </div>\n </div>\n `;\n }\n\n private renderTable(pane: CustomPane): TemplateResult {\n const table = pane.table;\n if (!table) {\n return this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty');\n }\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n <ui9000-table data=${JSON.stringify(table)}></ui9000-table>\n </div>\n `;\n }\n\n private renderText(pane: CustomPane): TemplateResult {\n if (!pane.text) {\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n ${this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty')}\n </div>\n `;\n }\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n <ui9000-text data=${JSON.stringify({ text: pane.text })}></ui9000-text>\n </div>\n `;\n }\n\n private renderImage(pane: CustomPane): TemplateResult {\n if (!pane.image) {\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n ${this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty')}\n </div>\n `;\n }\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n <ui9000-image data=${JSON.stringify({ src: pane.image.src, alt: pane.image.alt })}></ui9000-image>\n </div>\n `;\n }\n\n private renderPane(pane: CustomPane): TemplateResult {\n if (pane.kind === 'tableWidget') {\n return pane.renderable ? this.renderTable(pane) : html`\n <div class=\"pane\" data-kind=${pane.kind}>\n ${this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty')}\n </div>\n `;\n }\n if (pane.kind === 'textWidget') return this.renderText(pane);\n if (pane.kind === 'imageWidget') return this.renderImage(pane);\n if (!pane.renderable) {\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n ${this.renderEmpty(pane.emptyTitle, pane.emptySubtitle, 'pane-empty')}\n </div>\n `;\n }\n return html`\n <div class=\"pane\" data-kind=${pane.kind}>\n <ui9000-chart-renderer\n embedded\n data=${this.dataJson}\n chart-type=${this.paneChartType()}\n scale=${this.scale}\n show-header=\"false\"\n show-grid=${this.flag(this.showGrid)}\n show-legend=${this.flag(this.showLegend)}\n show-tooltip=${this.flag(this.showTooltip)}\n ></ui9000-chart-renderer>\n </div>\n `;\n }\n\n private renderKpiBand(): TemplateResult {\n return html`\n <div class=\"kpi-band\">\n <ui9000-kpi-widget\n data=${this.kpiDataJson()}\n scale=${this.scale}\n show-header=\"false\"\n ></ui9000-kpi-widget>\n </div>\n `;\n }\n\n override render() {\n const model = this._model;\n const title = this.headerTitle();\n\n return html`\n <div class=\"widget-shell custom-root\" part=\"shell\">\n ${this.renderShellHeader(title)} ${model.hasKpi ? this.renderKpiBand() : nothing}\n ${model.isEmpty\n ? this.renderEmpty(DEFAULT_STATE_TITLE, DEFAULT_STATE_SUBTITLE, 'default-state')\n : html`\n <div\n class=\"custom-content\"\n data-direction=${this.resolvedDirection}\n data-panes=${model.panes.length}\n style=${styleMap({\n flexDirection: paneFlexDirection(this.resolvedDirection),\n })}\n >\n ${model.panes.map((pane) => this.renderPane(pane))}\n </div>\n `}\n ${this.renderShellLabelTooltip()}\n </div>\n `;\n }\n}\n\nexport function registerCustomWidget(): void {\n if (!customElements.get('ui9000-custom-widget')) {\n customElements.define('ui9000-custom-widget', Ui9000CustomWidget);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-custom-widget': Ui9000CustomWidget;\n }\n}\n"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@ import { Ui9000CustomWidget } from "./element/ui9000-custom-widget.js";
3
3
  import { default as default2 } from "./metadata.json.js";
4
4
  import { KPI_ROW_HEIGHT, MAX_PANES, PANE_GAP, paneFlexDirection } from "./lib/layout.js";
5
5
  import { isContentChartType, normalizeCustomWidget } from "./lib/normalize.js";
6
- import { normalizeTableModel } from "./lib/table.js";
6
+ import { normalizeTableModel } from "../table/lib/table.js";
7
7
  export {
8
8
  KPI_ROW_HEIGHT,
9
9
  MAX_PANES,
@@ -1,13 +1,2 @@
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
- alt?: unknown;
9
- }): {
10
- src: string;
11
- alt: string;
12
- } | null;
1
+ export { isExternalImageUrl, normalizeImageContent, normalizeTextContent, } from '../../image/lib/url.js';
13
2
  //# sourceMappingURL=content.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../src/components/custom-widget/lib/content.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;CACf,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMtC"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../../../../src/components/custom-widget/lib/content.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,wBAAwB,CAAC"}
@@ -1,4 +1,2 @@
1
- import { TemplateResult } from 'lit';
2
- /** Client TextWidget markdown view — headings, lists, emphasis, code, http(s) links. */
3
- export declare function renderMarkdown(source: string): TemplateResult;
1
+ export { renderMarkdown } from '../../text/lib/markdown.js';
4
2
  //# sourceMappingURL=markdown.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../src/components/custom-widget/lib/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,KAAK,cAAc,EAAE,MAAM,KAAK,CAAC;AAkDhD,wFAAwF;AACxF,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,CA0F7D"}
1
+ {"version":3,"file":"markdown.d.ts","sourceRoot":"","sources":["../../../../src/components/custom-widget/lib/markdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC"}
@@ -1,6 +1,6 @@
1
- import { normalizeTextContent, normalizeImageContent } from "./content.js";
2
1
  import { MAX_PANES } from "./layout.js";
3
- import { parseTableHeaders, getSourceFromContains, normalizeTableModel } from "./table.js";
2
+ import { parseTableHeaders, getSourceFromContains, normalizeTableModel } from "../../table/lib/table.js";
3
+ import { normalizeTextContent, normalizeImageContent } from "../../image/lib/url.js";
4
4
  const PANE_KINDS = [
5
5
  "chartWidget",
6
6
  "tableWidget",
@@ -1,55 +1,2 @@
1
- /** Client CustomWidget TableWidget — sources, zip-by-index rows, MCP preview fallback. */
2
- export type TableColumnSource = {
3
- type: 'dataset';
4
- datasetId: string;
5
- field: string;
6
- } | {
7
- type: 'chart';
8
- field: string;
9
- } | {
10
- type: 'static';
11
- field: string;
12
- };
13
- export interface TableHeaderContains {
14
- key?: string;
15
- source?: TableColumnSource;
16
- }
17
- export interface TableHeader {
18
- label: string;
19
- contains?: TableHeaderContains[];
20
- }
21
- export type DataRow = Record<string, string | number | boolean | null | undefined>;
22
- export interface TableCellModel {
23
- text: string;
24
- badge?: 'success' | 'error';
25
- }
26
- export interface CustomTableModel {
27
- columns: {
28
- key: string;
29
- label: string;
30
- }[];
31
- cells: TableCellModel[][];
32
- }
33
- export declare function stripDataPrefix(field: string): string;
34
- export declare function buildQualifiedDatasetColumnKey(datasetId: string, field: string): string;
35
- export declare function buildQualifiedChartColumnKey(field: string): string;
36
- export declare function buildQualifiedStaticColumnKey(field: string): string;
37
- export declare function getSourceFromContains(header: TableHeader): TableColumnSource | undefined;
38
- export declare function parseTableHeaders(input: unknown): TableHeader[];
39
- export declare function asDataRows(input: unknown): DataRow[];
40
- /** Client `buildLiveTableRowsFromSources` — zip sources by row index, not a join. */
41
- export declare function buildLiveTableRowsFromSources({ headers, datasetRows, chartRows, tableDataRows, }: {
42
- headers: TableHeader[];
43
- datasetRows: DataRow[];
44
- chartRows: DataRow[];
45
- tableDataRows?: DataRow[];
46
- }): DataRow[];
47
- /** Client `getCellValue` — stringify + Findings badge. */
48
- export declare function formatTableCell(header: TableHeader, row: DataRow): TableCellModel;
49
- export declare function normalizeTableModel(widget: {
50
- headers?: unknown;
51
- data?: unknown;
52
- tableData?: unknown;
53
- tablePreviewRows?: unknown;
54
- }): CustomTableModel | null;
1
+ export { asDataRows, buildLiveTableRowsFromSources, buildQualifiedChartColumnKey, buildQualifiedDatasetColumnKey, buildQualifiedStaticColumnKey, formatTableCell, getSourceFromContains, normalizeTableModel, parseTableHeaders, stripDataPrefix, type CustomTableModel, type DataRow, type TableCellModel, type TableColumnSource, type TableHeader, type TableHeaderContains, } from '../../table/lib/table.js';
55
2
  //# sourceMappingURL=table.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/components/custom-widget/lib/table.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,MAAM,MAAM,iBAAiB,GACzB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GACrD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,GAChC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAEtC,MAAM,WAAW,mBAAmB;IAClC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,iBAAiB,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,mBAAmB,EAAE,CAAC;CAClC;AAED,MAAM,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,CAAC;AAEnF,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,SAAS,GAAG,OAAO,CAAC;CAC7B;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAC1C,KAAK,EAAE,cAAc,EAAE,EAAE,CAAC;CAC3B;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,wBAAgB,8BAA8B,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAEvF;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAElE;AAED,wBAAgB,6BAA6B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEnE;AAgBD,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,GAAG,SAAS,CAExF;AAED,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,WAAW,EAAE,CAqB/D;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAKpD;AAED,qFAAqF;AACrF,wBAAgB,6BAA6B,CAAC,EAC5C,OAAO,EACP,WAAW,EACX,SAAS,EACT,aAAkB,GACnB,EAAE;IACD,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,WAAW,EAAE,OAAO,EAAE,CAAC;IACvB,SAAS,EAAE,OAAO,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,OAAO,EAAE,CAAC;CAC3B,GAAG,OAAO,EAAE,CAwDZ;AAsBD,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,MAAM,EAAE,WAAW,EAAE,GAAG,EAAE,OAAO,GAAG,cAAc,CA8BjF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE;IAC1C,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B,GAAG,gBAAgB,GAAG,IAAI,CAqB1B"}
1
+ {"version":3,"file":"table.d.ts","sourceRoot":"","sources":["../../../../src/components/custom-widget/lib/table.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,UAAU,EACV,6BAA6B,EAC7B,4BAA4B,EAC5B,8BAA8B,EAC9B,6BAA6B,EAC7B,eAAe,EACf,qBAAqB,EACrB,mBAAmB,EACnB,iBAAiB,EACjB,eAAe,EACf,KAAK,gBAAgB,EACrB,KAAK,OAAO,EACZ,KAAK,cAAc,EACnB,KAAK,iBAAiB,EACtB,KAAK,WAAW,EAChB,KAAK,mBAAmB,GACzB,MAAM,0BAA0B,CAAC"}
@@ -2,12 +2,13 @@ declare const _default: {
2
2
  "id": "custom-widget",
3
3
  "tag": "ui9000-custom-widget",
4
4
  "title": "Custom Widget",
5
- "description": "FuseDash CustomWidget shell — title, optional KPI band, and up to two arranged panes. Chart panes mount ui9000-chart-renderer, the KPI band mounts ui9000-kpi-widget, table/text/image panes render inline. No Redux.",
5
+ "description": "FuseDash CustomWidget shell — title, optional KPI band, and up to two arranged panes. Chart panes mount ui9000-chart-renderer, the KPI band mounts ui9000-kpi-widget, table/text/image panes mount those primitives. No Redux.",
6
6
  "chartTypeKeys": ["customWidget"],
7
7
  "source": "client/libs/shared/components/src/Widgets/CustomWidget/",
8
8
  "stack": "composite",
9
9
  "lazyImport": "@ui9000/widgets/lazy/custom-widget",
10
10
  "entry": "@ui9000/widgets/custom-widget",
11
+ "tier": "host",
11
12
  "usageConditions": {
12
13
  "host": "mcp-chat",
13
14
  "notFor": "fusedash-editor",
@@ -1,12 +1,13 @@
1
1
  const id = "custom-widget";
2
2
  const tag = "ui9000-custom-widget";
3
3
  const title = "Custom Widget";
4
- const description = "FuseDash CustomWidget shell — title, optional KPI band, and up to two arranged panes. Chart panes mount ui9000-chart-renderer, the KPI band mounts ui9000-kpi-widget, table/text/image panes render inline. No Redux.";
4
+ const description = "FuseDash CustomWidget shell — title, optional KPI band, and up to two arranged panes. Chart panes mount ui9000-chart-renderer, the KPI band mounts ui9000-kpi-widget, table/text/image panes mount those primitives. No Redux.";
5
5
  const chartTypeKeys = ["customWidget"];
6
6
  const source = "client/libs/shared/components/src/Widgets/CustomWidget/";
7
7
  const stack = "composite";
8
8
  const lazyImport = "@ui9000/widgets/lazy/custom-widget";
9
9
  const entry = "@ui9000/widgets/custom-widget";
10
+ const tier = "host";
10
11
  const usageConditions = { "host": "mcp-chat", "notFor": "fusedash-editor", "mapsExcluded": true, "requiresArranging": "Reads arranging.widgets / arranging.hasKpi / arranging.direction; renders the default state when both are absent.", "panesSupported": ["chartWidget", "tableWidget", "textWidget", "imageWidget"], "maxPanes": 2 };
11
12
  const allowedActions = ["resize", "download"];
12
13
  const propsSchema = { "$schema": "https://json-schema.org/draft/2020-12/schema", "type": "object", "properties": { "data": { "type": "object", "description": "FuseDash WidgetItem JSON for the custom widget, including arranging, kpis, and pane fields (text, imageUrl, headers, tableData, tablePreviewRows)", "properties": { "id": { "type": "string" }, "name": { "type": "string" }, "chartType": { "type": "string", "description": "Chart type of the chartWidget pane; content types (tableChart, textChart, imageChart) render the pane empty state" }, "text": { "type": "string", "description": "Markdown/plain text for a textWidget pane" }, "imageUrl": { "type": "string", "description": "http(s) URL for an imageWidget pane" }, "alt": { "type": "string" }, "headers": { "type": "array", "description": "Table columns. Each contains[].source is dataset | chart | static" }, "tableData": { "type": "array", "description": "Personal/static rows for static-sourced columns" }, "tablePreviewRows": { "type": "array", "description": "MCP snapshot used as dataset rows when the host has no live select" }, "arranging": { "type": "object", "properties": { "widgets": { "type": "array", "maxItems": 2, "items": { "type": "string", "enum": ["chartWidget", "tableWidget", "textWidget", "imageWidget"] } }, "hasKpi": { "type": "boolean", "default": false }, "direction": { "type": "string", "enum": ["vertical", "horizontal"], "default": "vertical", "description": "FuseDash semantics — vertical lays panes side by side, horizontal stacks them" } } }, "kpis": { "type": "array", "description": "KPI items rendered in the KPI band when arranging.hasKpi is true" } } }, "chartTitle": { "type": "string", "description": "Header title override; falls back to data.name" }, "direction": { "type": "string", "enum": ["vertical", "horizontal"], "description": "Overrides data.arranging.direction" }, "scale": { "type": "string", "enum": ["compact", "default", "comfortable"], "default": "default" }, "showHeader": { "type": "boolean", "default": true }, "showGrid": { "type": "boolean", "default": true }, "showLegend": { "type": "boolean", "default": true }, "showTooltip": { "type": "boolean", "default": true } }, "required": ["data"] };
@@ -20,6 +21,7 @@ const metadata = {
20
21
  stack,
21
22
  lazyImport,
22
23
  entry,
24
+ tier,
23
25
  usageConditions,
24
26
  allowedActions,
25
27
  propsSchema
@@ -36,6 +38,7 @@ export {
36
38
  source,
37
39
  stack,
38
40
  tag,
41
+ tier,
39
42
  title,
40
43
  usageConditions
41
44
  };
@@ -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,16 @@
1
+ import { LitElement } from 'lit';
2
+ export declare class Ui9000DateInput extends LitElement {
3
+ static styles: import('lit').CSSResult;
4
+ dataJson: string;
5
+ label: string;
6
+ name: string;
7
+ value?: string;
8
+ render(): import('lit-html').TemplateResult<1>;
9
+ }
10
+ export declare function registerDateInput(): void;
11
+ declare global {
12
+ interface HTMLElementTagNameMap {
13
+ 'ui9000-date-input': Ui9000DateInput;
14
+ }
15
+ }
16
+ //# sourceMappingURL=ui9000-date-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui9000-date-input.d.ts","sourceRoot":"","sources":["../../../../src/components/date-input/element/ui9000-date-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAQ,UAAU,EAAE,MAAM,KAAK,CAAC;AAMvC,qBACa,eAAgB,SAAQ,UAAU;IAC7C,OAAgB,MAAM,0BAAiB;IAEQ,QAAQ,SAAQ;IACnC,KAAK,SAAM;IACX,IAAI,SAAM;IACQ,KAAK,CAAC,EAAE,MAAM,CAAC;IAEpD,MAAM;CAuBhB;AAED,wBAAgB,iBAAiB,IAAI,IAAI,CAIxC;AAED,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,qBAAqB;QAC7B,mBAAmB,EAAE,eAAe,CAAC;KACtC;CACF"}
@@ -0,0 +1,71 @@
1
+ import { LitElement, html } from "lit";
2
+ import { property, customElement } from "lit/decorators.js";
3
+ import { surfaceStyles } from "../../../element/surface-styles.js";
4
+ import { parseLabelledField } from "../../../lib/labelled-control.js";
5
+ var __defProp = Object.defineProperty;
6
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
7
+ var __decorateClass = (decorators, target, key, kind) => {
8
+ var result = kind > 1 ? void 0 : kind ? __getOwnPropDesc(target, key) : target;
9
+ for (var i = decorators.length - 1, decorator; i >= 0; i--)
10
+ if (decorator = decorators[i])
11
+ result = (kind ? decorator(target, key, result) : decorator(result)) || result;
12
+ if (kind && result) __defProp(target, key, result);
13
+ return result;
14
+ };
15
+ let Ui9000DateInput = class extends LitElement {
16
+ constructor() {
17
+ super(...arguments);
18
+ this.dataJson = "{}";
19
+ this.label = "";
20
+ this.name = "";
21
+ }
22
+ render() {
23
+ const field = parseLabelledField(this.dataJson, {
24
+ label: this.label,
25
+ name: this.name,
26
+ value: this.value
27
+ });
28
+ if (!field) return html`<p class="blocked" role="alert">Label required</p>`;
29
+ return html`
30
+ <div class="root">
31
+ <label for=${field.name}>${field.label}</label>
32
+ <input
33
+ class="field"
34
+ id=${field.name}
35
+ name=${field.name}
36
+ type="date"
37
+ .value=${field.value}
38
+ @input=${(e) => {
39
+ this.value = e.target.value;
40
+ }}
41
+ />
42
+ </div>
43
+ `;
44
+ }
45
+ };
46
+ Ui9000DateInput.styles = surfaceStyles;
47
+ __decorateClass([
48
+ property({ type: String, attribute: "data" })
49
+ ], Ui9000DateInput.prototype, "dataJson", 2);
50
+ __decorateClass([
51
+ property({ type: String })
52
+ ], Ui9000DateInput.prototype, "label", 2);
53
+ __decorateClass([
54
+ property({ type: String })
55
+ ], Ui9000DateInput.prototype, "name", 2);
56
+ __decorateClass([
57
+ property({ type: String, attribute: false })
58
+ ], Ui9000DateInput.prototype, "value", 2);
59
+ Ui9000DateInput = __decorateClass([
60
+ customElement("ui9000-date-input")
61
+ ], Ui9000DateInput);
62
+ function registerDateInput() {
63
+ if (!customElements.get("ui9000-date-input")) {
64
+ customElements.define("ui9000-date-input", Ui9000DateInput);
65
+ }
66
+ }
67
+ export {
68
+ Ui9000DateInput,
69
+ registerDateInput
70
+ };
71
+ //# sourceMappingURL=ui9000-date-input.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui9000-date-input.js","sources":["../../../../src/components/date-input/element/ui9000-date-input.ts"],"sourcesContent":["import { html, LitElement } from 'lit';\nimport { customElement, property } from 'lit/decorators.js';\n\nimport { surfaceStyles } from '../../../element/surface-styles.js';\nimport { parseLabelledField } from '../../../lib/labelled-control.js';\n\n@customElement('ui9000-date-input')\nexport class Ui9000DateInput extends LitElement {\n static override styles = surfaceStyles;\n\n @property({ type: String, attribute: 'data' }) dataJson = '{}';\n @property({ type: String }) label = '';\n @property({ type: String }) name = '';\n @property({ type: String, attribute: false }) value?: string;\n\n override render() {\n const field = parseLabelledField(this.dataJson, {\n label: this.label,\n name: this.name,\n value: this.value,\n });\n if (!field) return html`<p class=\"blocked\" role=\"alert\">Label required</p>`;\n return html`\n <div class=\"root\">\n <label for=${field.name}>${field.label}</label>\n <input\n class=\"field\"\n id=${field.name}\n name=${field.name}\n type=\"date\"\n .value=${field.value}\n @input=${(e: Event) => {\n this.value = (e.target as HTMLInputElement).value;\n }}\n />\n </div>\n `;\n }\n}\n\nexport function registerDateInput(): void {\n if (!customElements.get('ui9000-date-input')) {\n customElements.define('ui9000-date-input', Ui9000DateInput);\n }\n}\n\ndeclare global {\n interface HTMLElementTagNameMap {\n 'ui9000-date-input': Ui9000DateInput;\n }\n}\n"],"names":[],"mappings":";;;;;;;;;;;;;;AAOO,IAAM,kBAAN,cAA8B,WAAW;AAAA,EAAzC,cAAA;AAAA,UAAA,GAAA,SAAA;AAG0C,SAAA,WAAW;AAC9B,SAAA,QAAQ;AACR,SAAA,OAAO;AAAA,EAAA;AAAA,EAG1B,SAAS;AAChB,UAAM,QAAQ,mBAAmB,KAAK,UAAU;AAAA,MAC9C,OAAO,KAAK;AAAA,MACZ,MAAM,KAAK;AAAA,MACX,OAAO,KAAK;AAAA,IAAA,CACb;AACD,QAAI,CAAC,MAAO,QAAO;AACnB,WAAO;AAAA;AAAA,qBAEU,MAAM,IAAI,IAAI,MAAM,KAAK;AAAA;AAAA;AAAA,eAG/B,MAAM,IAAI;AAAA,iBACR,MAAM,IAAI;AAAA;AAAA,mBAER,MAAM,KAAK;AAAA,mBACX,CAAC,MAAa;AACrB,WAAK,QAAS,EAAE,OAA4B;AAAA,IAC9C,CAAC;AAAA;AAAA;AAAA;AAAA,EAIT;AACF;AA/Ba,gBACK,SAAS;AAEsB,gBAAA;AAAA,EAA9C,SAAS,EAAE,MAAM,QAAQ,WAAW,QAAQ;AAAA,GAHlC,gBAGoC,WAAA,YAAA,CAAA;AACnB,gBAAA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GAJf,gBAIiB,WAAA,SAAA,CAAA;AACA,gBAAA;AAAA,EAA3B,SAAS,EAAE,MAAM,OAAA,CAAQ;AAAA,GALf,gBAKiB,WAAA,QAAA,CAAA;AACkB,gBAAA;AAAA,EAA7C,SAAS,EAAE,MAAM,QAAQ,WAAW,OAAO;AAAA,GANjC,gBAMmC,WAAA,SAAA,CAAA;AANnC,kBAAN,gBAAA;AAAA,EADN,cAAc,mBAAmB;AAAA,GACrB,eAAA;AAiCN,SAAS,oBAA0B;AACxC,MAAI,CAAC,eAAe,IAAI,mBAAmB,GAAG;AAC5C,mBAAe,OAAO,qBAAqB,eAAe;AAAA,EAC5D;AACF;"}
@@ -0,0 +1,3 @@
1
+ export { Ui9000DateInput, registerDateInput } from './element/ui9000-date-input.js';
2
+ export { default as dateInputMetadata } from './metadata.json';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/components/date-input/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACpF,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,iBAAiB,CAAC"}