@miragon/pulse-widget-shell 0.0.0-stage → 0.21.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 (831) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +164 -2
  3. package/dist/adapt-data-widget.d.ts +7 -0
  4. package/dist/adapt-data-widget.d.ts.map +1 -0
  5. package/dist/adapt-data-widget.js +7 -0
  6. package/dist/adapt-data-widget.js.map +1 -0
  7. package/dist/bpmn-names.d.ts +42 -0
  8. package/dist/bpmn-names.d.ts.map +1 -0
  9. package/dist/bpmn-names.js +151 -0
  10. package/dist/bpmn-names.js.map +1 -0
  11. package/dist/bpmn-names.test.d.ts +2 -0
  12. package/dist/bpmn-names.test.d.ts.map +1 -0
  13. package/dist/bpmn-names.test.js +143 -0
  14. package/dist/bpmn-names.test.js.map +1 -0
  15. package/dist/build-data-feed-result.test.d.ts +2 -0
  16. package/dist/build-data-feed-result.test.d.ts.map +1 -0
  17. package/dist/build-data-feed-result.test.js +28 -0
  18. package/dist/build-data-feed-result.test.js.map +1 -0
  19. package/dist/build-single-widget-view.test.d.ts +2 -0
  20. package/dist/build-single-widget-view.test.d.ts.map +1 -0
  21. package/dist/build-single-widget-view.test.js +136 -0
  22. package/dist/build-single-widget-view.test.js.map +1 -0
  23. package/dist/builder-texts.d.ts +27 -0
  24. package/dist/builder-texts.d.ts.map +1 -0
  25. package/dist/builder-texts.js +32 -0
  26. package/dist/builder-texts.js.map +1 -0
  27. package/dist/builder-texts.test.d.ts +2 -0
  28. package/dist/builder-texts.test.d.ts.map +1 -0
  29. package/dist/builder-texts.test.js +54 -0
  30. package/dist/builder-texts.test.js.map +1 -0
  31. package/dist/catalogue-sync.d.ts +18 -0
  32. package/dist/catalogue-sync.d.ts.map +1 -0
  33. package/dist/catalogue-sync.js +31 -0
  34. package/dist/catalogue-sync.js.map +1 -0
  35. package/dist/catalogue-sync.test.d.ts +2 -0
  36. package/dist/catalogue-sync.test.d.ts.map +1 -0
  37. package/dist/catalogue-sync.test.js +22 -0
  38. package/dist/catalogue-sync.test.js.map +1 -0
  39. package/dist/composed-server.d.ts +110 -0
  40. package/dist/composed-server.d.ts.map +1 -0
  41. package/dist/composed-server.edge.test.d.ts +2 -0
  42. package/dist/composed-server.edge.test.d.ts.map +1 -0
  43. package/dist/composed-server.edge.test.js +184 -0
  44. package/dist/composed-server.edge.test.js.map +1 -0
  45. package/dist/composed-server.fonts.test.d.ts +2 -0
  46. package/dist/composed-server.fonts.test.d.ts.map +1 -0
  47. package/dist/composed-server.fonts.test.js +186 -0
  48. package/dist/composed-server.fonts.test.js.map +1 -0
  49. package/dist/composed-server.js +260 -0
  50. package/dist/composed-server.js.map +1 -0
  51. package/dist/composed-server.test.d.ts +2 -0
  52. package/dist/composed-server.test.d.ts.map +1 -0
  53. package/dist/composed-server.test.js +332 -0
  54. package/dist/composed-server.test.js.map +1 -0
  55. package/dist/composition.d.ts +155 -0
  56. package/dist/composition.d.ts.map +1 -0
  57. package/dist/composition.js +163 -0
  58. package/dist/composition.js.map +1 -0
  59. package/dist/composition.test.d.ts +2 -0
  60. package/dist/composition.test.d.ts.map +1 -0
  61. package/dist/composition.test.js +275 -0
  62. package/dist/composition.test.js.map +1 -0
  63. package/dist/dashboard-store-postgres.d.ts +43 -0
  64. package/dist/dashboard-store-postgres.d.ts.map +1 -0
  65. package/dist/dashboard-store-postgres.js +225 -0
  66. package/dist/dashboard-store-postgres.js.map +1 -0
  67. package/dist/dashboard-store-postgres.test.d.ts +2 -0
  68. package/dist/dashboard-store-postgres.test.d.ts.map +1 -0
  69. package/dist/dashboard-store-postgres.test.js +272 -0
  70. package/dist/dashboard-store-postgres.test.js.map +1 -0
  71. package/dist/font-assets.d.ts +47 -0
  72. package/dist/font-assets.d.ts.map +1 -0
  73. package/dist/font-assets.js +93 -0
  74. package/dist/font-assets.js.map +1 -0
  75. package/dist/font-assets.test.d.ts +2 -0
  76. package/dist/font-assets.test.d.ts.map +1 -0
  77. package/dist/font-assets.test.js +123 -0
  78. package/dist/font-assets.test.js.map +1 -0
  79. package/dist/health.d.ts +59 -0
  80. package/dist/health.d.ts.map +1 -0
  81. package/dist/health.js +74 -0
  82. package/dist/health.js.map +1 -0
  83. package/dist/health.test.d.ts +2 -0
  84. package/dist/health.test.d.ts.map +1 -0
  85. package/dist/health.test.js +140 -0
  86. package/dist/health.test.js.map +1 -0
  87. package/dist/host-boot.d.ts +56 -0
  88. package/dist/host-boot.d.ts.map +1 -0
  89. package/dist/host-boot.js +64 -0
  90. package/dist/host-boot.js.map +1 -0
  91. package/dist/host-boot.test.d.ts +2 -0
  92. package/dist/host-boot.test.d.ts.map +1 -0
  93. package/dist/host-boot.test.js +59 -0
  94. package/dist/host-boot.test.js.map +1 -0
  95. package/dist/http-edge.d.ts +117 -0
  96. package/dist/http-edge.d.ts.map +1 -0
  97. package/dist/http-edge.js +219 -0
  98. package/dist/http-edge.js.map +1 -0
  99. package/dist/http-edge.test.d.ts +2 -0
  100. package/dist/http-edge.test.d.ts.map +1 -0
  101. package/dist/http-edge.test.js +255 -0
  102. package/dist/http-edge.test.js.map +1 -0
  103. package/dist/metrics.d.ts +48 -0
  104. package/dist/metrics.d.ts.map +1 -0
  105. package/dist/metrics.js +124 -0
  106. package/dist/metrics.js.map +1 -0
  107. package/dist/metrics.test.d.ts +2 -0
  108. package/dist/metrics.test.d.ts.map +1 -0
  109. package/dist/metrics.test.js +154 -0
  110. package/dist/metrics.test.js.map +1 -0
  111. package/dist/node-listener.d.ts +61 -0
  112. package/dist/node-listener.d.ts.map +1 -0
  113. package/dist/node-listener.js +165 -0
  114. package/dist/node-listener.js.map +1 -0
  115. package/dist/node-listener.test.d.ts +2 -0
  116. package/dist/node-listener.test.d.ts.map +1 -0
  117. package/dist/node-listener.test.js +331 -0
  118. package/dist/node-listener.test.js.map +1 -0
  119. package/dist/oauth-env.d.ts +42 -0
  120. package/dist/oauth-env.d.ts.map +1 -0
  121. package/dist/oauth-env.js +78 -0
  122. package/dist/oauth-env.js.map +1 -0
  123. package/dist/oauth-env.test.d.ts +2 -0
  124. package/dist/oauth-env.test.d.ts.map +1 -0
  125. package/dist/oauth-env.test.js +76 -0
  126. package/dist/oauth-env.test.js.map +1 -0
  127. package/dist/postgres.d.ts +59 -0
  128. package/dist/postgres.d.ts.map +1 -0
  129. package/dist/postgres.js +80 -0
  130. package/dist/postgres.js.map +1 -0
  131. package/dist/profile-advisory.d.ts +19 -0
  132. package/dist/profile-advisory.d.ts.map +1 -0
  133. package/dist/profile-advisory.js +48 -0
  134. package/dist/profile-advisory.js.map +1 -0
  135. package/dist/profile-advisory.test.d.ts +2 -0
  136. package/dist/profile-advisory.test.d.ts.map +1 -0
  137. package/dist/profile-advisory.test.js +53 -0
  138. package/dist/profile-advisory.test.js.map +1 -0
  139. package/dist/profile-constants.d.ts +37 -0
  140. package/dist/profile-constants.d.ts.map +1 -0
  141. package/dist/profile-constants.js +37 -0
  142. package/dist/profile-constants.js.map +1 -0
  143. package/dist/profile-migrations.d.ts +71 -0
  144. package/dist/profile-migrations.d.ts.map +1 -0
  145. package/dist/profile-migrations.js +88 -0
  146. package/dist/profile-migrations.js.map +1 -0
  147. package/dist/profile-migrations.test.d.ts +2 -0
  148. package/dist/profile-migrations.test.d.ts.map +1 -0
  149. package/dist/profile-migrations.test.js +200 -0
  150. package/dist/profile-migrations.test.js.map +1 -0
  151. package/dist/profile-record.d.ts +60 -0
  152. package/dist/profile-record.d.ts.map +1 -0
  153. package/dist/profile-record.js +78 -0
  154. package/dist/profile-record.js.map +1 -0
  155. package/dist/profile-slice.d.ts +53 -0
  156. package/dist/profile-slice.d.ts.map +1 -0
  157. package/dist/profile-slice.js +73 -0
  158. package/dist/profile-slice.js.map +1 -0
  159. package/dist/profile-slice.test.d.ts +2 -0
  160. package/dist/profile-slice.test.d.ts.map +1 -0
  161. package/dist/profile-slice.test.js +73 -0
  162. package/dist/profile-slice.test.js.map +1 -0
  163. package/dist/profile-store-env.d.ts +34 -0
  164. package/dist/profile-store-env.d.ts.map +1 -0
  165. package/dist/profile-store-env.js +44 -0
  166. package/dist/profile-store-env.js.map +1 -0
  167. package/dist/profile-store-env.test.d.ts +2 -0
  168. package/dist/profile-store-env.test.d.ts.map +1 -0
  169. package/dist/profile-store-env.test.js +69 -0
  170. package/dist/profile-store-env.test.js.map +1 -0
  171. package/dist/profile-store-postgres.d.ts +33 -0
  172. package/dist/profile-store-postgres.d.ts.map +1 -0
  173. package/dist/profile-store-postgres.js +87 -0
  174. package/dist/profile-store-postgres.js.map +1 -0
  175. package/dist/profile-store-raw.test.d.ts +2 -0
  176. package/dist/profile-store-raw.test.d.ts.map +1 -0
  177. package/dist/profile-store-raw.test.js +185 -0
  178. package/dist/profile-store-raw.test.js.map +1 -0
  179. package/dist/profile-store.d.ts +85 -0
  180. package/dist/profile-store.d.ts.map +1 -0
  181. package/dist/profile-store.js +182 -0
  182. package/dist/profile-store.js.map +1 -0
  183. package/dist/profile-store.test.d.ts +2 -0
  184. package/dist/profile-store.test.d.ts.map +1 -0
  185. package/dist/profile-store.test.js +353 -0
  186. package/dist/profile-store.test.js.map +1 -0
  187. package/dist/profile.d.ts +75 -0
  188. package/dist/profile.d.ts.map +1 -0
  189. package/dist/profile.js +85 -0
  190. package/dist/profile.js.map +1 -0
  191. package/dist/profile.test.d.ts +2 -0
  192. package/dist/profile.test.d.ts.map +1 -0
  193. package/dist/profile.test.js +71 -0
  194. package/dist/profile.test.js.map +1 -0
  195. package/dist/request-context.d.ts +47 -0
  196. package/dist/request-context.d.ts.map +1 -0
  197. package/dist/request-context.js +85 -0
  198. package/dist/request-context.js.map +1 -0
  199. package/dist/request-context.test.d.ts +2 -0
  200. package/dist/request-context.test.d.ts.map +1 -0
  201. package/dist/request-context.test.js +107 -0
  202. package/dist/request-context.test.js.map +1 -0
  203. package/dist/served-fonts.d.ts +38 -0
  204. package/dist/served-fonts.d.ts.map +1 -0
  205. package/dist/served-fonts.js +51 -0
  206. package/dist/served-fonts.js.map +1 -0
  207. package/dist/served-fonts.test.d.ts +2 -0
  208. package/dist/served-fonts.test.d.ts.map +1 -0
  209. package/dist/served-fonts.test.js +30 -0
  210. package/dist/served-fonts.test.js.map +1 -0
  211. package/dist/server-locale.d.ts +58 -0
  212. package/dist/server-locale.d.ts.map +1 -0
  213. package/dist/server-locale.js +64 -0
  214. package/dist/server-locale.js.map +1 -0
  215. package/dist/server-locale.test.d.ts +2 -0
  216. package/dist/server-locale.test.d.ts.map +1 -0
  217. package/dist/server-locale.test.js +90 -0
  218. package/dist/server-locale.test.js.map +1 -0
  219. package/dist/server.d.ts +43 -0
  220. package/dist/server.d.ts.map +1 -0
  221. package/dist/server.js +34 -0
  222. package/dist/server.js.map +1 -0
  223. package/dist/shell-catalogue.d.ts +12 -0
  224. package/dist/shell-catalogue.d.ts.map +1 -0
  225. package/dist/shell-catalogue.js +142 -0
  226. package/dist/shell-catalogue.js.map +1 -0
  227. package/dist/shell-settings-contract.d.ts +34 -0
  228. package/dist/shell-settings-contract.d.ts.map +1 -0
  229. package/dist/shell-settings-contract.js +21 -0
  230. package/dist/shell-settings-contract.js.map +1 -0
  231. package/dist/shell-settings.d.ts +24 -0
  232. package/dist/shell-settings.d.ts.map +1 -0
  233. package/dist/shell-settings.js +148 -0
  234. package/dist/shell-settings.js.map +1 -0
  235. package/dist/shell-settings.test.d.ts +2 -0
  236. package/dist/shell-settings.test.d.ts.map +1 -0
  237. package/dist/shell-settings.test.js +115 -0
  238. package/dist/shell-settings.test.js.map +1 -0
  239. package/dist/testing/catalog-text.d.ts +53 -0
  240. package/dist/testing/catalog-text.d.ts.map +1 -0
  241. package/dist/testing/catalog-text.js +146 -0
  242. package/dist/testing/catalog-text.js.map +1 -0
  243. package/dist/testing/catalog-text.test.d.ts +2 -0
  244. package/dist/testing/catalog-text.test.d.ts.map +1 -0
  245. package/dist/testing/catalog-text.test.js +137 -0
  246. package/dist/testing/catalog-text.test.js.map +1 -0
  247. package/dist/testing/colors.d.ts +34 -0
  248. package/dist/testing/colors.d.ts.map +1 -0
  249. package/dist/testing/colors.js +124 -0
  250. package/dist/testing/colors.js.map +1 -0
  251. package/dist/testing/colors.test.d.ts +2 -0
  252. package/dist/testing/colors.test.d.ts.map +1 -0
  253. package/dist/testing/colors.test.js +166 -0
  254. package/dist/testing/colors.test.js.map +1 -0
  255. package/dist/testing/contrast.d.ts +77 -0
  256. package/dist/testing/contrast.d.ts.map +1 -0
  257. package/dist/testing/contrast.js +382 -0
  258. package/dist/testing/contrast.js.map +1 -0
  259. package/dist/testing/contrast.test.d.ts +2 -0
  260. package/dist/testing/contrast.test.d.ts.map +1 -0
  261. package/dist/testing/contrast.test.js +230 -0
  262. package/dist/testing/contrast.test.js.map +1 -0
  263. package/dist/testing/display-texts.d.ts +23 -0
  264. package/dist/testing/display-texts.d.ts.map +1 -0
  265. package/dist/testing/display-texts.js +88 -0
  266. package/dist/testing/display-texts.js.map +1 -0
  267. package/dist/testing/display-texts.test.d.ts +2 -0
  268. package/dist/testing/display-texts.test.d.ts.map +1 -0
  269. package/dist/testing/display-texts.test.js +169 -0
  270. package/dist/testing/display-texts.test.js.map +1 -0
  271. package/dist/testing/glossary.d.ts +52 -0
  272. package/dist/testing/glossary.d.ts.map +1 -0
  273. package/dist/testing/glossary.js +135 -0
  274. package/dist/testing/glossary.js.map +1 -0
  275. package/dist/testing/glossary.test.d.ts +2 -0
  276. package/dist/testing/glossary.test.d.ts.map +1 -0
  277. package/dist/testing/glossary.test.js +78 -0
  278. package/dist/testing/glossary.test.js.map +1 -0
  279. package/dist/testing/glyphs.d.ts +27 -0
  280. package/dist/testing/glyphs.d.ts.map +1 -0
  281. package/dist/testing/glyphs.js +130 -0
  282. package/dist/testing/glyphs.js.map +1 -0
  283. package/dist/testing/glyphs.test.d.ts +2 -0
  284. package/dist/testing/glyphs.test.d.ts.map +1 -0
  285. package/dist/testing/glyphs.test.js +146 -0
  286. package/dist/testing/glyphs.test.js.map +1 -0
  287. package/dist/testing/icon-sizes.d.ts +22 -0
  288. package/dist/testing/icon-sizes.d.ts.map +1 -0
  289. package/dist/testing/icon-sizes.js +39 -0
  290. package/dist/testing/icon-sizes.js.map +1 -0
  291. package/dist/testing/icon-sizes.test.d.ts +2 -0
  292. package/dist/testing/icon-sizes.test.d.ts.map +1 -0
  293. package/dist/testing/icon-sizes.test.js +36 -0
  294. package/dist/testing/icon-sizes.test.js.map +1 -0
  295. package/dist/testing/index.d.ts +40 -0
  296. package/dist/testing/index.d.ts.map +1 -0
  297. package/dist/testing/index.js +40 -0
  298. package/dist/testing/index.js.map +1 -0
  299. package/dist/testing/source-scan.d.ts +16 -0
  300. package/dist/testing/source-scan.d.ts.map +1 -0
  301. package/dist/testing/source-scan.js +57 -0
  302. package/dist/testing/source-scan.js.map +1 -0
  303. package/dist/testing/tone-pairs.d.ts +20 -0
  304. package/dist/testing/tone-pairs.d.ts.map +1 -0
  305. package/dist/testing/tone-pairs.js +154 -0
  306. package/dist/testing/tone-pairs.js.map +1 -0
  307. package/dist/testing/type-scale.d.ts +40 -0
  308. package/dist/testing/type-scale.d.ts.map +1 -0
  309. package/dist/testing/type-scale.js +55 -0
  310. package/dist/testing/type-scale.js.map +1 -0
  311. package/dist/testing/type-scale.test.d.ts +2 -0
  312. package/dist/testing/type-scale.test.d.ts.map +1 -0
  313. package/dist/testing/type-scale.test.js +61 -0
  314. package/dist/testing/type-scale.test.js.map +1 -0
  315. package/dist/tool-schema-trim.d.ts +24 -0
  316. package/dist/tool-schema-trim.d.ts.map +1 -0
  317. package/dist/tool-schema-trim.js +49 -0
  318. package/dist/tool-schema-trim.js.map +1 -0
  319. package/dist/tool-schema-trim.test.d.ts +2 -0
  320. package/dist/tool-schema-trim.test.d.ts.map +1 -0
  321. package/dist/tool-schema-trim.test.js +53 -0
  322. package/dist/tool-schema-trim.test.js.map +1 -0
  323. package/dist/toolsets.d.ts +76 -0
  324. package/dist/toolsets.d.ts.map +1 -0
  325. package/dist/toolsets.js +41 -0
  326. package/dist/toolsets.js.map +1 -0
  327. package/dist/toolsets.test.d.ts +2 -0
  328. package/dist/toolsets.test.d.ts.map +1 -0
  329. package/dist/toolsets.test.js +86 -0
  330. package/dist/toolsets.test.js.map +1 -0
  331. package/dist/ui/action-feedback.d.ts +33 -0
  332. package/dist/ui/action-feedback.d.ts.map +1 -0
  333. package/dist/ui/action-feedback.js +51 -0
  334. package/dist/ui/action-feedback.js.map +1 -0
  335. package/dist/ui/action-feedback.test.d.ts +2 -0
  336. package/dist/ui/action-feedback.test.d.ts.map +1 -0
  337. package/dist/ui/action-feedback.test.js +77 -0
  338. package/dist/ui/action-feedback.test.js.map +1 -0
  339. package/dist/ui/app-shell-providers.d.ts +18 -0
  340. package/dist/ui/app-shell-providers.d.ts.map +1 -0
  341. package/dist/ui/app-shell-providers.js +19 -0
  342. package/dist/ui/app-shell-providers.js.map +1 -0
  343. package/dist/ui/app-shell-providers.test.d.ts +2 -0
  344. package/dist/ui/app-shell-providers.test.d.ts.map +1 -0
  345. package/dist/ui/app-shell-providers.test.js +249 -0
  346. package/dist/ui/app-shell-providers.test.js.map +1 -0
  347. package/dist/ui/ask-ai-button.d.ts +56 -0
  348. package/dist/ui/ask-ai-button.d.ts.map +1 -0
  349. package/dist/ui/ask-ai-button.js +36 -0
  350. package/dist/ui/ask-ai-button.js.map +1 -0
  351. package/dist/ui/ask-ai-button.test.d.ts +2 -0
  352. package/dist/ui/ask-ai-button.test.d.ts.map +1 -0
  353. package/dist/ui/ask-ai-button.test.js +103 -0
  354. package/dist/ui/ask-ai-button.test.js.map +1 -0
  355. package/dist/ui/ask-ai-prompt.d.ts +115 -0
  356. package/dist/ui/ask-ai-prompt.d.ts.map +1 -0
  357. package/dist/ui/ask-ai-prompt.js +174 -0
  358. package/dist/ui/ask-ai-prompt.js.map +1 -0
  359. package/dist/ui/ask-ai-prompt.test.d.ts +2 -0
  360. package/dist/ui/ask-ai-prompt.test.d.ts.map +1 -0
  361. package/dist/ui/ask-ai-prompt.test.js +240 -0
  362. package/dist/ui/ask-ai-prompt.test.js.map +1 -0
  363. package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts +2 -0
  364. package/dist/ui/bpmn-heatmap/heat-ramp.test.d.ts.map +1 -0
  365. package/dist/ui/bpmn-heatmap/heat-ramp.test.js +174 -0
  366. package/dist/ui/bpmn-heatmap/heat-ramp.test.js.map +1 -0
  367. package/dist/ui/bpmn-heatmap/heat-utils.d.ts +119 -0
  368. package/dist/ui/bpmn-heatmap/heat-utils.d.ts.map +1 -0
  369. package/dist/ui/bpmn-heatmap/heat-utils.js +231 -0
  370. package/dist/ui/bpmn-heatmap/heat-utils.js.map +1 -0
  371. package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts +2 -0
  372. package/dist/ui/bpmn-heatmap/heat-utils.test.d.ts.map +1 -0
  373. package/dist/ui/bpmn-heatmap/heat-utils.test.js +59 -0
  374. package/dist/ui/bpmn-heatmap/heat-utils.test.js.map +1 -0
  375. package/dist/ui/bpmn-heatmap-labels.d.ts +46 -0
  376. package/dist/ui/bpmn-heatmap-labels.d.ts.map +1 -0
  377. package/dist/ui/bpmn-heatmap-labels.js +16 -0
  378. package/dist/ui/bpmn-heatmap-labels.js.map +1 -0
  379. package/dist/ui/bpmn-heatmap-widget.d.ts +38 -0
  380. package/dist/ui/bpmn-heatmap-widget.d.ts.map +1 -0
  381. package/dist/ui/bpmn-heatmap-widget.js +65 -0
  382. package/dist/ui/bpmn-heatmap-widget.js.map +1 -0
  383. package/dist/ui/bpmn-heatmap-widget.test.d.ts +2 -0
  384. package/dist/ui/bpmn-heatmap-widget.test.d.ts.map +1 -0
  385. package/dist/ui/bpmn-heatmap-widget.test.js +173 -0
  386. package/dist/ui/bpmn-heatmap-widget.test.js.map +1 -0
  387. package/dist/ui/bpmn-heatmap.d.ts +61 -0
  388. package/dist/ui/bpmn-heatmap.d.ts.map +1 -0
  389. package/dist/ui/bpmn-heatmap.js +119 -0
  390. package/dist/ui/bpmn-heatmap.js.map +1 -0
  391. package/dist/ui/bpmn-tokens.d.ts +81 -0
  392. package/dist/ui/bpmn-tokens.d.ts.map +1 -0
  393. package/dist/ui/bpmn-tokens.js +114 -0
  394. package/dist/ui/bpmn-tokens.js.map +1 -0
  395. package/dist/ui/bpmn-tokens.test.d.ts +2 -0
  396. package/dist/ui/bpmn-tokens.test.d.ts.map +1 -0
  397. package/dist/ui/bpmn-tokens.test.js +98 -0
  398. package/dist/ui/bpmn-tokens.test.js.map +1 -0
  399. package/dist/ui/bpmn-zoom-controls.d.ts +30 -0
  400. package/dist/ui/bpmn-zoom-controls.d.ts.map +1 -0
  401. package/dist/ui/bpmn-zoom-controls.js +29 -0
  402. package/dist/ui/bpmn-zoom-controls.js.map +1 -0
  403. package/dist/ui/brand-gates.test.d.ts +2 -0
  404. package/dist/ui/brand-gates.test.d.ts.map +1 -0
  405. package/dist/ui/brand-gates.test.js +131 -0
  406. package/dist/ui/brand-gates.test.js.map +1 -0
  407. package/dist/ui/brand-mark.d.ts +37 -0
  408. package/dist/ui/brand-mark.d.ts.map +1 -0
  409. package/dist/ui/brand-mark.js +33 -0
  410. package/dist/ui/brand-mark.js.map +1 -0
  411. package/dist/ui/brand-mark.test.d.ts +2 -0
  412. package/dist/ui/brand-mark.test.d.ts.map +1 -0
  413. package/dist/ui/brand-mark.test.js +111 -0
  414. package/dist/ui/brand-mark.test.js.map +1 -0
  415. package/dist/ui/confirm-dialog.d.ts +55 -0
  416. package/dist/ui/confirm-dialog.d.ts.map +1 -0
  417. package/dist/ui/confirm-dialog.js +59 -0
  418. package/dist/ui/confirm-dialog.js.map +1 -0
  419. package/dist/ui/confirm-dialog.test.d.ts +2 -0
  420. package/dist/ui/confirm-dialog.test.d.ts.map +1 -0
  421. package/dist/ui/confirm-dialog.test.js +115 -0
  422. package/dist/ui/confirm-dialog.test.js.map +1 -0
  423. package/dist/ui/count-tone.d.ts +20 -0
  424. package/dist/ui/count-tone.d.ts.map +1 -0
  425. package/dist/ui/count-tone.js +27 -0
  426. package/dist/ui/count-tone.js.map +1 -0
  427. package/dist/ui/count-tone.test.d.ts +2 -0
  428. package/dist/ui/count-tone.test.d.ts.map +1 -0
  429. package/dist/ui/count-tone.test.js +27 -0
  430. package/dist/ui/count-tone.test.js.map +1 -0
  431. package/dist/ui/create-use-t.d.ts +15 -0
  432. package/dist/ui/create-use-t.d.ts.map +1 -0
  433. package/dist/ui/create-use-t.js +17 -0
  434. package/dist/ui/create-use-t.js.map +1 -0
  435. package/dist/ui/declare-served-fonts.d.ts +14 -0
  436. package/dist/ui/declare-served-fonts.d.ts.map +1 -0
  437. package/dist/ui/declare-served-fonts.js +38 -0
  438. package/dist/ui/declare-served-fonts.js.map +1 -0
  439. package/dist/ui/declare-served-fonts.test.d.ts +2 -0
  440. package/dist/ui/declare-served-fonts.test.d.ts.map +1 -0
  441. package/dist/ui/declare-served-fonts.test.js +44 -0
  442. package/dist/ui/declare-served-fonts.test.js.map +1 -0
  443. package/dist/ui/describe-error.d.ts +71 -0
  444. package/dist/ui/describe-error.d.ts.map +1 -0
  445. package/dist/ui/describe-error.js +175 -0
  446. package/dist/ui/describe-error.js.map +1 -0
  447. package/dist/ui/describe-error.test.d.ts +2 -0
  448. package/dist/ui/describe-error.test.d.ts.map +1 -0
  449. package/dist/ui/describe-error.test.js +274 -0
  450. package/dist/ui/describe-error.test.js.map +1 -0
  451. package/dist/ui/display-mode-toggle.d.ts +32 -0
  452. package/dist/ui/display-mode-toggle.d.ts.map +1 -0
  453. package/dist/ui/display-mode-toggle.js +39 -0
  454. package/dist/ui/display-mode-toggle.js.map +1 -0
  455. package/dist/ui/error-labels.d.ts +65 -0
  456. package/dist/ui/error-labels.d.ts.map +1 -0
  457. package/dist/ui/error-labels.js +111 -0
  458. package/dist/ui/error-labels.js.map +1 -0
  459. package/dist/ui/format.d.ts +81 -0
  460. package/dist/ui/format.d.ts.map +1 -0
  461. package/dist/ui/format.js +189 -0
  462. package/dist/ui/format.js.map +1 -0
  463. package/dist/ui/format.test.d.ts +2 -0
  464. package/dist/ui/format.test.d.ts.map +1 -0
  465. package/dist/ui/format.test.js +181 -0
  466. package/dist/ui/format.test.js.map +1 -0
  467. package/dist/ui/generic-widgets.d.ts +15 -0
  468. package/dist/ui/generic-widgets.d.ts.map +1 -0
  469. package/dist/ui/generic-widgets.js +122 -0
  470. package/dist/ui/generic-widgets.js.map +1 -0
  471. package/dist/ui/generic-widgets.test.d.ts +2 -0
  472. package/dist/ui/generic-widgets.test.d.ts.map +1 -0
  473. package/dist/ui/generic-widgets.test.js +139 -0
  474. package/dist/ui/generic-widgets.test.js.map +1 -0
  475. package/dist/ui/hand-off-button.d.ts +44 -0
  476. package/dist/ui/hand-off-button.d.ts.map +1 -0
  477. package/dist/ui/hand-off-button.js +44 -0
  478. package/dist/ui/hand-off-button.js.map +1 -0
  479. package/dist/ui/hand-off-button.test.d.ts +2 -0
  480. package/dist/ui/hand-off-button.test.d.ts.map +1 -0
  481. package/dist/ui/hand-off-button.test.js +78 -0
  482. package/dist/ui/hand-off-button.test.js.map +1 -0
  483. package/dist/ui/host-context.d.ts +66 -0
  484. package/dist/ui/host-context.d.ts.map +1 -0
  485. package/dist/ui/host-context.js +122 -0
  486. package/dist/ui/host-context.js.map +1 -0
  487. package/dist/ui/host-context.test.d.ts +2 -0
  488. package/dist/ui/host-context.test.d.ts.map +1 -0
  489. package/dist/ui/host-context.test.js +160 -0
  490. package/dist/ui/host-context.test.js.map +1 -0
  491. package/dist/ui/host-document.d.ts +25 -0
  492. package/dist/ui/host-document.d.ts.map +1 -0
  493. package/dist/ui/host-document.js +93 -0
  494. package/dist/ui/host-document.js.map +1 -0
  495. package/dist/ui/host-document.test.d.ts +2 -0
  496. package/dist/ui/host-document.test.d.ts.map +1 -0
  497. package/dist/ui/host-document.test.js +112 -0
  498. package/dist/ui/host-document.test.js.map +1 -0
  499. package/dist/ui/host-widgets.d.ts +8 -0
  500. package/dist/ui/host-widgets.d.ts.map +1 -0
  501. package/dist/ui/host-widgets.js +18 -0
  502. package/dist/ui/host-widgets.js.map +1 -0
  503. package/dist/ui/humanize-key.d.ts +11 -0
  504. package/dist/ui/humanize-key.d.ts.map +1 -0
  505. package/dist/ui/humanize-key.js +26 -0
  506. package/dist/ui/humanize-key.js.map +1 -0
  507. package/dist/ui/humanize-key.test.d.ts +2 -0
  508. package/dist/ui/humanize-key.test.d.ts.map +1 -0
  509. package/dist/ui/humanize-key.test.js +42 -0
  510. package/dist/ui/humanize-key.test.js.map +1 -0
  511. package/dist/ui/icon.d.ts +37 -0
  512. package/dist/ui/icon.d.ts.map +1 -0
  513. package/dist/ui/icon.js +32 -0
  514. package/dist/ui/icon.js.map +1 -0
  515. package/dist/ui/id-breaks.d.ts +17 -0
  516. package/dist/ui/id-breaks.d.ts.map +1 -0
  517. package/dist/ui/id-breaks.js +36 -0
  518. package/dist/ui/id-breaks.js.map +1 -0
  519. package/dist/ui/id-breaks.test.d.ts +2 -0
  520. package/dist/ui/id-breaks.test.d.ts.map +1 -0
  521. package/dist/ui/id-breaks.test.js +37 -0
  522. package/dist/ui/id-breaks.test.js.map +1 -0
  523. package/dist/ui/id-text.d.ts +29 -0
  524. package/dist/ui/id-text.d.ts.map +1 -0
  525. package/dist/ui/id-text.js +103 -0
  526. package/dist/ui/id-text.js.map +1 -0
  527. package/dist/ui/id-text.test.d.ts +2 -0
  528. package/dist/ui/id-text.test.d.ts.map +1 -0
  529. package/dist/ui/id-text.test.js +122 -0
  530. package/dist/ui/id-text.test.js.map +1 -0
  531. package/dist/ui/index.d.ts +57 -0
  532. package/dist/ui/index.d.ts.map +1 -0
  533. package/dist/ui/index.js +65 -0
  534. package/dist/ui/index.js.map +1 -0
  535. package/dist/ui/index.test.d.ts +2 -0
  536. package/dist/ui/index.test.d.ts.map +1 -0
  537. package/dist/ui/index.test.js +34 -0
  538. package/dist/ui/index.test.js.map +1 -0
  539. package/dist/ui/inline-budget.d.ts +35 -0
  540. package/dist/ui/inline-budget.d.ts.map +1 -0
  541. package/dist/ui/inline-budget.js +27 -0
  542. package/dist/ui/inline-budget.js.map +1 -0
  543. package/dist/ui/inline-fit-registry.d.ts +56 -0
  544. package/dist/ui/inline-fit-registry.d.ts.map +1 -0
  545. package/dist/ui/inline-fit-registry.js +114 -0
  546. package/dist/ui/inline-fit-registry.js.map +1 -0
  547. package/dist/ui/inline-fit-solve.d.ts +50 -0
  548. package/dist/ui/inline-fit-solve.d.ts.map +1 -0
  549. package/dist/ui/inline-fit-solve.js +83 -0
  550. package/dist/ui/inline-fit-solve.js.map +1 -0
  551. package/dist/ui/inline-fit-solve.test.d.ts +2 -0
  552. package/dist/ui/inline-fit-solve.test.d.ts.map +1 -0
  553. package/dist/ui/inline-fit-solve.test.js +108 -0
  554. package/dist/ui/inline-fit-solve.test.js.map +1 -0
  555. package/dist/ui/inline-fit-time.test.d.ts +2 -0
  556. package/dist/ui/inline-fit-time.test.d.ts.map +1 -0
  557. package/dist/ui/inline-fit-time.test.js +110 -0
  558. package/dist/ui/inline-fit-time.test.js.map +1 -0
  559. package/dist/ui/inline-fit.d.ts +77 -0
  560. package/dist/ui/inline-fit.d.ts.map +1 -0
  561. package/dist/ui/inline-fit.js +242 -0
  562. package/dist/ui/inline-fit.js.map +1 -0
  563. package/dist/ui/inline-fit.test-support.d.ts +26 -0
  564. package/dist/ui/inline-fit.test-support.d.ts.map +1 -0
  565. package/dist/ui/inline-fit.test-support.js +34 -0
  566. package/dist/ui/inline-fit.test-support.js.map +1 -0
  567. package/dist/ui/inline-fit.test.d.ts +2 -0
  568. package/dist/ui/inline-fit.test.d.ts.map +1 -0
  569. package/dist/ui/inline-fit.test.js +159 -0
  570. package/dist/ui/inline-fit.test.js.map +1 -0
  571. package/dist/ui/kit-labels.d.ts +80 -0
  572. package/dist/ui/kit-labels.d.ts.map +1 -0
  573. package/dist/ui/kit-labels.js +110 -0
  574. package/dist/ui/kit-labels.js.map +1 -0
  575. package/dist/ui/kit-labels.test.d.ts +2 -0
  576. package/dist/ui/kit-labels.test.d.ts.map +1 -0
  577. package/dist/ui/kit-labels.test.js +98 -0
  578. package/dist/ui/kit-labels.test.js.map +1 -0
  579. package/dist/ui/kit-type-roles.test.d.ts +2 -0
  580. package/dist/ui/kit-type-roles.test.d.ts.map +1 -0
  581. package/dist/ui/kit-type-roles.test.js +122 -0
  582. package/dist/ui/kit-type-roles.test.js.map +1 -0
  583. package/dist/ui/komet-svg.d.ts +15 -0
  584. package/dist/ui/komet-svg.d.ts.map +1 -0
  585. package/dist/ui/komet-svg.js +21 -0
  586. package/dist/ui/komet-svg.js.map +1 -0
  587. package/dist/ui/list-table.d.ts +108 -0
  588. package/dist/ui/list-table.d.ts.map +1 -0
  589. package/dist/ui/list-table.js +161 -0
  590. package/dist/ui/list-table.js.map +1 -0
  591. package/dist/ui/list-table.test.d.ts +2 -0
  592. package/dist/ui/list-table.test.d.ts.map +1 -0
  593. package/dist/ui/list-table.test.js +169 -0
  594. package/dist/ui/list-table.test.js.map +1 -0
  595. package/dist/ui/localized-app-view.d.ts +40 -0
  596. package/dist/ui/localized-app-view.d.ts.map +1 -0
  597. package/dist/ui/localized-app-view.js +71 -0
  598. package/dist/ui/localized-app-view.js.map +1 -0
  599. package/dist/ui/log-text.d.ts +24 -0
  600. package/dist/ui/log-text.d.ts.map +1 -0
  601. package/dist/ui/log-text.js +31 -0
  602. package/dist/ui/log-text.js.map +1 -0
  603. package/dist/ui/menu-item.d.ts +12 -0
  604. package/dist/ui/menu-item.d.ts.map +1 -0
  605. package/dist/ui/menu-item.js +13 -0
  606. package/dist/ui/menu-item.js.map +1 -0
  607. package/dist/ui/named-id.d.ts +23 -0
  608. package/dist/ui/named-id.d.ts.map +1 -0
  609. package/dist/ui/named-id.js +21 -0
  610. package/dist/ui/named-id.js.map +1 -0
  611. package/dist/ui/named-id.test.d.ts +2 -0
  612. package/dist/ui/named-id.test.d.ts.map +1 -0
  613. package/dist/ui/named-id.test.js +57 -0
  614. package/dist/ui/named-id.test.js.map +1 -0
  615. package/dist/ui/native-select.d.ts +17 -0
  616. package/dist/ui/native-select.d.ts.map +1 -0
  617. package/dist/ui/native-select.js +20 -0
  618. package/dist/ui/native-select.js.map +1 -0
  619. package/dist/ui/navigation-focus.d.ts +20 -0
  620. package/dist/ui/navigation-focus.d.ts.map +1 -0
  621. package/dist/ui/navigation-focus.js +25 -0
  622. package/dist/ui/navigation-focus.js.map +1 -0
  623. package/dist/ui/navigation-focus.test.d.ts +2 -0
  624. package/dist/ui/navigation-focus.test.d.ts.map +1 -0
  625. package/dist/ui/navigation-focus.test.js +28 -0
  626. package/dist/ui/navigation-focus.test.js.map +1 -0
  627. package/dist/ui/open-in-cockpit-link.d.ts +28 -0
  628. package/dist/ui/open-in-cockpit-link.d.ts.map +1 -0
  629. package/dist/ui/open-in-cockpit-link.js +41 -0
  630. package/dist/ui/open-in-cockpit-link.js.map +1 -0
  631. package/dist/ui/paged-list-footer.test.d.ts +2 -0
  632. package/dist/ui/paged-list-footer.test.d.ts.map +1 -0
  633. package/dist/ui/paged-list-footer.test.js +128 -0
  634. package/dist/ui/paged-list-footer.test.js.map +1 -0
  635. package/dist/ui/paged-rows.d.ts +24 -0
  636. package/dist/ui/paged-rows.d.ts.map +1 -0
  637. package/dist/ui/paged-rows.js +25 -0
  638. package/dist/ui/paged-rows.js.map +1 -0
  639. package/dist/ui/parse-tool-result.test.d.ts +2 -0
  640. package/dist/ui/parse-tool-result.test.d.ts.map +1 -0
  641. package/dist/ui/parse-tool-result.test.js +88 -0
  642. package/dist/ui/parse-tool-result.test.js.map +1 -0
  643. package/dist/ui/profile-gate.d.ts +37 -0
  644. package/dist/ui/profile-gate.d.ts.map +1 -0
  645. package/dist/ui/profile-gate.js +126 -0
  646. package/dist/ui/profile-gate.js.map +1 -0
  647. package/dist/ui/profile-gate.test.d.ts +2 -0
  648. package/dist/ui/profile-gate.test.d.ts.map +1 -0
  649. package/dist/ui/profile-gate.test.js +246 -0
  650. package/dist/ui/profile-gate.test.js.map +1 -0
  651. package/dist/ui/query-fallback.d.ts +27 -0
  652. package/dist/ui/query-fallback.d.ts.map +1 -0
  653. package/dist/ui/query-fallback.js +30 -0
  654. package/dist/ui/query-fallback.js.map +1 -0
  655. package/dist/ui/query-fallback.test.d.ts +2 -0
  656. package/dist/ui/query-fallback.test.d.ts.map +1 -0
  657. package/dist/ui/query-fallback.test.js +49 -0
  658. package/dist/ui/query-fallback.test.js.map +1 -0
  659. package/dist/ui/row-card.d.ts +13 -0
  660. package/dist/ui/row-card.d.ts.map +1 -0
  661. package/dist/ui/row-card.js +11 -0
  662. package/dist/ui/row-card.js.map +1 -0
  663. package/dist/ui/section.d.ts +18 -0
  664. package/dist/ui/section.d.ts.map +1 -0
  665. package/dist/ui/section.js +14 -0
  666. package/dist/ui/section.js.map +1 -0
  667. package/dist/ui/segmented-control.d.ts +25 -0
  668. package/dist/ui/segmented-control.d.ts.map +1 -0
  669. package/dist/ui/segmented-control.js +22 -0
  670. package/dist/ui/segmented-control.js.map +1 -0
  671. package/dist/ui/settings-labels.d.ts +33 -0
  672. package/dist/ui/settings-labels.d.ts.map +1 -0
  673. package/dist/ui/settings-labels.js +50 -0
  674. package/dist/ui/settings-labels.js.map +1 -0
  675. package/dist/ui/settings-layout.d.ts +29 -0
  676. package/dist/ui/settings-layout.d.ts.map +1 -0
  677. package/dist/ui/settings-layout.js +49 -0
  678. package/dist/ui/settings-layout.js.map +1 -0
  679. package/dist/ui/settings-layout.test.d.ts +2 -0
  680. package/dist/ui/settings-layout.test.d.ts.map +1 -0
  681. package/dist/ui/settings-layout.test.js +73 -0
  682. package/dist/ui/settings-layout.test.js.map +1 -0
  683. package/dist/ui/settings.d.ts +47 -0
  684. package/dist/ui/settings.d.ts.map +1 -0
  685. package/dist/ui/settings.js +48 -0
  686. package/dist/ui/settings.js.map +1 -0
  687. package/dist/ui/settings.test.d.ts +2 -0
  688. package/dist/ui/settings.test.d.ts.map +1 -0
  689. package/dist/ui/settings.test.js +38 -0
  690. package/dist/ui/settings.test.js.map +1 -0
  691. package/dist/ui/shell-host.d.ts +46 -0
  692. package/dist/ui/shell-host.d.ts.map +1 -0
  693. package/dist/ui/shell-host.js +56 -0
  694. package/dist/ui/shell-host.js.map +1 -0
  695. package/dist/ui/shell-settings.d.ts +31 -0
  696. package/dist/ui/shell-settings.d.ts.map +1 -0
  697. package/dist/ui/shell-settings.js +97 -0
  698. package/dist/ui/shell-settings.js.map +1 -0
  699. package/dist/ui/shell-settings.test.d.ts +2 -0
  700. package/dist/ui/shell-settings.test.d.ts.map +1 -0
  701. package/dist/ui/shell-settings.test.js +108 -0
  702. package/dist/ui/shell-settings.test.js.map +1 -0
  703. package/dist/ui/shell-widgets.d.ts +14 -0
  704. package/dist/ui/shell-widgets.d.ts.map +1 -0
  705. package/dist/ui/shell-widgets.js +18 -0
  706. package/dist/ui/shell-widgets.js.map +1 -0
  707. package/dist/ui/table.d.ts +61 -0
  708. package/dist/ui/table.d.ts.map +1 -0
  709. package/dist/ui/table.js +43 -0
  710. package/dist/ui/table.js.map +1 -0
  711. package/dist/ui/tone-components.test.d.ts +2 -0
  712. package/dist/ui/tone-components.test.d.ts.map +1 -0
  713. package/dist/ui/tone-components.test.js +145 -0
  714. package/dist/ui/tone-components.test.js.map +1 -0
  715. package/dist/ui/tone-contrast.test.d.ts +2 -0
  716. package/dist/ui/tone-contrast.test.d.ts.map +1 -0
  717. package/dist/ui/tone-contrast.test.js +66 -0
  718. package/dist/ui/tone-contrast.test.js.map +1 -0
  719. package/dist/ui/toolkit-overlap.test.d.ts +2 -0
  720. package/dist/ui/toolkit-overlap.test.d.ts.map +1 -0
  721. package/dist/ui/toolkit-overlap.test.js +86 -0
  722. package/dist/ui/toolkit-overlap.test.js.map +1 -0
  723. package/dist/ui/use-apply-theme.d.ts +11 -0
  724. package/dist/ui/use-apply-theme.d.ts.map +1 -0
  725. package/dist/ui/use-apply-theme.js +37 -0
  726. package/dist/ui/use-apply-theme.js.map +1 -0
  727. package/dist/ui/use-apply-theme.test.d.ts +2 -0
  728. package/dist/ui/use-apply-theme.test.d.ts.map +1 -0
  729. package/dist/ui/use-apply-theme.test.js +102 -0
  730. package/dist/ui/use-apply-theme.test.js.map +1 -0
  731. package/dist/ui/use-bpmn-viewer.d.ts +135 -0
  732. package/dist/ui/use-bpmn-viewer.d.ts.map +1 -0
  733. package/dist/ui/use-bpmn-viewer.js +257 -0
  734. package/dist/ui/use-bpmn-viewer.js.map +1 -0
  735. package/dist/ui/use-bpmn-viewer.test.d.ts +2 -0
  736. package/dist/ui/use-bpmn-viewer.test.d.ts.map +1 -0
  737. package/dist/ui/use-bpmn-viewer.test.js +239 -0
  738. package/dist/ui/use-bpmn-viewer.test.js.map +1 -0
  739. package/dist/ui/use-detail-view.d.ts +49 -0
  740. package/dist/ui/use-detail-view.d.ts.map +1 -0
  741. package/dist/ui/use-detail-view.js +52 -0
  742. package/dist/ui/use-detail-view.js.map +1 -0
  743. package/dist/ui/use-detail-view.test.d.ts +2 -0
  744. package/dist/ui/use-detail-view.test.d.ts.map +1 -0
  745. package/dist/ui/use-detail-view.test.js +178 -0
  746. package/dist/ui/use-detail-view.test.js.map +1 -0
  747. package/dist/ui/use-paged-list-view.d.ts +48 -0
  748. package/dist/ui/use-paged-list-view.d.ts.map +1 -0
  749. package/dist/ui/use-paged-list-view.js +41 -0
  750. package/dist/ui/use-paged-list-view.js.map +1 -0
  751. package/dist/ui/use-paged-list-view.test.d.ts +2 -0
  752. package/dist/ui/use-paged-list-view.test.d.ts.map +1 -0
  753. package/dist/ui/use-paged-list-view.test.js +136 -0
  754. package/dist/ui/use-paged-list-view.test.js.map +1 -0
  755. package/dist/ui/use-paged-view-data.d.ts +103 -0
  756. package/dist/ui/use-paged-view-data.d.ts.map +1 -0
  757. package/dist/ui/use-paged-view-data.js +173 -0
  758. package/dist/ui/use-paged-view-data.js.map +1 -0
  759. package/dist/ui/use-paged-view-data.seeded.test.d.ts +2 -0
  760. package/dist/ui/use-paged-view-data.seeded.test.d.ts.map +1 -0
  761. package/dist/ui/use-paged-view-data.seeded.test.js +144 -0
  762. package/dist/ui/use-paged-view-data.seeded.test.js.map +1 -0
  763. package/dist/ui/use-paged-view-data.test.d.ts +2 -0
  764. package/dist/ui/use-paged-view-data.test.d.ts.map +1 -0
  765. package/dist/ui/use-paged-view-data.test.js +330 -0
  766. package/dist/ui/use-paged-view-data.test.js.map +1 -0
  767. package/dist/ui/use-reset-on-change.d.ts +22 -0
  768. package/dist/ui/use-reset-on-change.d.ts.map +1 -0
  769. package/dist/ui/use-reset-on-change.js +29 -0
  770. package/dist/ui/use-reset-on-change.js.map +1 -0
  771. package/dist/ui/use-reset-on-change.test.d.ts +2 -0
  772. package/dist/ui/use-reset-on-change.test.d.ts.map +1 -0
  773. package/dist/ui/use-reset-on-change.test.js +61 -0
  774. package/dist/ui/use-reset-on-change.test.js.map +1 -0
  775. package/dist/ui/use-view-data.seeded.test.d.ts +2 -0
  776. package/dist/ui/use-view-data.seeded.test.d.ts.map +1 -0
  777. package/dist/ui/use-view-data.seeded.test.js +168 -0
  778. package/dist/ui/use-view-data.seeded.test.js.map +1 -0
  779. package/dist/ui/view-data-state.d.ts +52 -0
  780. package/dist/ui/view-data-state.d.ts.map +1 -0
  781. package/dist/ui/view-data-state.js +54 -0
  782. package/dist/ui/view-data-state.js.map +1 -0
  783. package/dist/ui/view-data-state.test.d.ts +2 -0
  784. package/dist/ui/view-data-state.test.d.ts.map +1 -0
  785. package/dist/ui/view-data-state.test.js +62 -0
  786. package/dist/ui/view-data-state.test.js.map +1 -0
  787. package/dist/ui/view-meta.d.ts +70 -0
  788. package/dist/ui/view-meta.d.ts.map +1 -0
  789. package/dist/ui/view-meta.js +84 -0
  790. package/dist/ui/view-meta.js.map +1 -0
  791. package/dist/ui/view-meta.test.d.ts +2 -0
  792. package/dist/ui/view-meta.test.d.ts.map +1 -0
  793. package/dist/ui/view-meta.test.js +92 -0
  794. package/dist/ui/view-meta.test.js.map +1 -0
  795. package/dist/ui/view-refresh-state.d.ts +26 -0
  796. package/dist/ui/view-refresh-state.d.ts.map +1 -0
  797. package/dist/ui/view-refresh-state.js +15 -0
  798. package/dist/ui/view-refresh-state.js.map +1 -0
  799. package/dist/ui/widget-shell.d.ts +24 -0
  800. package/dist/ui/widget-shell.d.ts.map +1 -0
  801. package/dist/ui/widget-shell.js +50 -0
  802. package/dist/ui/widget-shell.js.map +1 -0
  803. package/dist/ui/widget-shell.test.d.ts +2 -0
  804. package/dist/ui/widget-shell.test.d.ts.map +1 -0
  805. package/dist/ui/widget-shell.test.js +41 -0
  806. package/dist/ui/widget-shell.test.js.map +1 -0
  807. package/dist/view-results.d.ts +42 -0
  808. package/dist/view-results.d.ts.map +1 -0
  809. package/dist/view-results.js +17 -0
  810. package/dist/view-results.js.map +1 -0
  811. package/dist/widget-meta-defaults.d.ts +48 -0
  812. package/dist/widget-meta-defaults.d.ts.map +1 -0
  813. package/dist/widget-meta-defaults.js +80 -0
  814. package/dist/widget-meta-defaults.js.map +1 -0
  815. package/dist/widget-meta-defaults.test.d.ts +2 -0
  816. package/dist/widget-meta-defaults.test.d.ts.map +1 -0
  817. package/dist/widget-meta-defaults.test.js +196 -0
  818. package/dist/widget-meta-defaults.test.js.map +1 -0
  819. package/dist/widget-tool-bindings.d.ts +71 -0
  820. package/dist/widget-tool-bindings.d.ts.map +1 -0
  821. package/dist/widget-tool-bindings.js +80 -0
  822. package/dist/widget-tool-bindings.js.map +1 -0
  823. package/dist/widget-tool-bindings.test.d.ts +2 -0
  824. package/dist/widget-tool-bindings.test.d.ts.map +1 -0
  825. package/dist/widget-tool-bindings.test.js +83 -0
  826. package/dist/widget-tool-bindings.test.js.map +1 -0
  827. package/dist/with-tool-errors.test.d.ts +2 -0
  828. package/dist/with-tool-errors.test.d.ts.map +1 -0
  829. package/dist/with-tool-errors.test.js +38 -0
  830. package/dist/with-tool-errors.test.js.map +1 -0
  831. package/package.json +113 -3
@@ -0,0 +1,249 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @vitest-environment happy-dom
3
+ import { afterEach, describe, expect, it, vi } from "vitest";
4
+ import { bootstrapView, disposeView } from "mcp-use/react";
5
+ import { queryClient, useLocale } from "@miragon/mcp-toolkit-ui";
6
+ import { useHostBridge } from "@miragon/mcp-toolkit-ui/app";
7
+ import { AppShellProviders } from "./app-shell-providers.js";
8
+ import { SHELL_SETTINGS_DATA } from "../shell-settings-contract.js";
9
+ import { useHostWidgets } from "./host-widgets.js";
10
+ import { LocalizedAppView } from "./localized-app-view.js";
11
+ import { useHostDisplayMode } from "./widget-shell.js";
12
+ const PROFILE_FEED = SHELL_SETTINGS_DATA;
13
+ function profileResult(view) {
14
+ return {
15
+ content: [{ type: "text", text: JSON.stringify(view) }],
16
+ structuredContent: view,
17
+ };
18
+ }
19
+ /** A minimal host: answers `ui/initialize` and `tools/call`, records everything the view sent. */
20
+ function createFakeHost(options) {
21
+ const sent = [];
22
+ const transport = {
23
+ onmessage: undefined,
24
+ onclose: undefined,
25
+ onerror: undefined,
26
+ start: () => Promise.resolve(),
27
+ close: () => {
28
+ transport.onclose?.();
29
+ return Promise.resolve();
30
+ },
31
+ send: (message) => {
32
+ sent.push(message);
33
+ if (message.id !== undefined && message.method) {
34
+ const reply = answer(message);
35
+ queueMicrotask(() => transport.onmessage?.({ jsonrpc: "2.0", id: message.id, ...reply }));
36
+ }
37
+ return Promise.resolve();
38
+ },
39
+ };
40
+ function answer(message) {
41
+ if (message.method === "ui/initialize") {
42
+ return {
43
+ result: {
44
+ protocolVersion: message.params?.protocolVersion,
45
+ hostInfo: { name: "fake-host", version: "1.0.0" },
46
+ hostCapabilities: options.hostCapabilities ?? {
47
+ serverTools: {},
48
+ updateModelContext: { text: {} },
49
+ },
50
+ hostContext: options.hostContext,
51
+ },
52
+ };
53
+ }
54
+ if (message.method === "tools/call") {
55
+ const result = options.tools?.[String(message.params?.name)];
56
+ if (result)
57
+ return { result };
58
+ return { error: { code: -32602, message: `unknown tool ${String(message.params?.name)}` } };
59
+ }
60
+ return { result: {} };
61
+ }
62
+ return {
63
+ transport: transport,
64
+ /** The methods the view sent, in order (requests and notifications). */
65
+ methods: () => sent.map((m) => m.method),
66
+ toolCalls: () => sent
67
+ .filter((m) => m.method === "tools/call")
68
+ .map((m) => ({ name: m.params?.name, arguments: m.params?.arguments })),
69
+ notify: (method, params) => transport.onmessage?.({ jsonrpc: "2.0", method, params }),
70
+ };
71
+ }
72
+ const DemoWidget = () => null;
73
+ /** Everything the stack provides, in one line: locale | display mode | registry. */
74
+ function Probe() {
75
+ // Throws without the host bridge above — part of what is under test.
76
+ useHostBridge();
77
+ const widgets = Object.keys(useHostWidgets()).join(",");
78
+ return _jsx("output", { "data-testid": "probe", children: `${useLocale()}|${useHostDisplayMode()}|${widgets}` });
79
+ }
80
+ function mount(host) {
81
+ bootstrapView({
82
+ default: () => (_jsx(AppShellProviders, { widgets: { "demo:widget": DemoWidget }, children: _jsx(Probe, {}) })),
83
+ }, { transport: host.transport });
84
+ }
85
+ const probe = () => document.querySelector("[data-testid=probe]")?.textContent;
86
+ const root = document.documentElement;
87
+ afterEach(async () => {
88
+ await disposeView();
89
+ document.getElementById("root")?.remove();
90
+ // The toolkit's query client is a module singleton shared by every mount —
91
+ // the suite runs on its PRODUCTION defaults (react-query's retries
92
+ // included); cancelling stops any retry still waiting.
93
+ await queryClient.cancelQueries();
94
+ queryClient.clear();
95
+ root.className = "";
96
+ root.lang = "";
97
+ root.removeAttribute("data-theme");
98
+ root.removeAttribute("style");
99
+ vi.unstubAllGlobals();
100
+ });
101
+ describe("AppShellProviders (real mcp-use view runtime)", () => {
102
+ it("wires host bridge → display mode → profile → widget registry, in that order", async () => {
103
+ const host = createFakeHost({
104
+ hostContext: {
105
+ theme: "dark",
106
+ displayMode: "fullscreen",
107
+ availableDisplayModes: ["inline", "fullscreen"],
108
+ },
109
+ tools: { [PROFILE_FEED]: profileResult({ language: "de" }) },
110
+ });
111
+ mount(host);
112
+ // ProfileGate reached the host through the bridge ABOVE it (the profile
113
+ // locale arrived), the display mode came from the view scope, and the
114
+ // registry is provided below the gate.
115
+ await vi.waitFor(() => expect(probe()).toBe("de|fullscreen|demo:widget"));
116
+ expect(host.toolCalls()).toEqual([{ name: PROFILE_FEED, arguments: {} }]);
117
+ // The profile language and the host's theme are applied document-wide —
118
+ // one theme on every channel the CSS, the host and native controls read.
119
+ expect(root.lang).toBe("de");
120
+ expect(root.classList.contains("dark")).toBe(true);
121
+ expect(root.getAttribute("data-theme")).toBe("dark");
122
+ expect(root.style.getPropertyValue("color-scheme")).toBe("dark");
123
+ });
124
+ it("follows the HOST's theme and, for a system profile, its locale — over a light OS and English defaults (#339)", async () => {
125
+ vi.stubGlobal("matchMedia", vi.fn().mockReturnValue({
126
+ matches: false,
127
+ addEventListener: vi.fn(),
128
+ removeEventListener: vi.fn(),
129
+ }));
130
+ const host = createFakeHost({
131
+ hostContext: { theme: "dark", locale: "de-DE" },
132
+ tools: { [PROFILE_FEED]: profileResult({ language: "system" }) },
133
+ });
134
+ mount(host);
135
+ await vi.waitFor(() => expect(probe()).toBe("de|inline|demo:widget"));
136
+ expect(root.lang).toBe("de");
137
+ expect(root.classList.contains("dark")).toBe(true);
138
+ expect(root.getAttribute("data-theme")).toBe("dark");
139
+ });
140
+ it("puts the host's style variables and font on the document, and fills it in fullscreen", async () => {
141
+ const host = createFakeHost({
142
+ hostContext: {
143
+ theme: "light",
144
+ displayMode: "fullscreen",
145
+ availableDisplayModes: ["inline", "fullscreen"],
146
+ styles: {
147
+ variables: { "--font-sans": "HostSans, sans-serif", "--font-mono": "HostMono" },
148
+ css: { fonts: "@font-face { font-family: HostSans; src: local(Arial); }" },
149
+ },
150
+ },
151
+ tools: { [PROFILE_FEED]: profileResult({ language: "en" }) },
152
+ });
153
+ mount(host);
154
+ await vi.waitFor(() => expect(probe()).toBe("en|fullscreen|demo:widget"));
155
+ // The host's font fills the fallback slot of the theme's font roles
156
+ // (adoptHostFontVariables), so the stack stays Geist first, then the
157
+ // host's font, then the system; the role names themselves are not
158
+ // overwritten.
159
+ expect(root.style.getPropertyValue("--host-font-sans")).toBe("HostSans, sans-serif");
160
+ expect(root.style.getPropertyValue("--host-font-mono")).toBe("HostMono");
161
+ expect(root.style.getPropertyValue("--font-sans")).toBe("");
162
+ expect(root.style.getPropertyValue("--font-mono")).toBe("");
163
+ expect(document.getElementById("__mcp-host-fonts")?.textContent).toContain("HostSans");
164
+ expect(root.style.height).toBe("100%");
165
+ document.getElementById("__mcp-host-fonts")?.remove();
166
+ });
167
+ it("follows a host display-mode change live", async () => {
168
+ const host = createFakeHost({
169
+ hostContext: { displayMode: "fullscreen", availableDisplayModes: ["inline", "fullscreen"] },
170
+ tools: { [PROFILE_FEED]: profileResult({ language: "en" }) },
171
+ });
172
+ mount(host);
173
+ await vi.waitFor(() => expect(probe()).toBe("en|fullscreen|demo:widget"));
174
+ host.notify("ui/notifications/host-context-changed", { displayMode: "inline" });
175
+ await vi.waitFor(() => expect(probe()).toBe("en|inline|demo:widget"));
176
+ });
177
+ it("still renders, in English and the OS theme, on a host that cannot call server tools", async () => {
178
+ // No `serverTools` capability: every tool call (the profile feed
179
+ // included) rejects inside the guest — the gate must degrade, not crash,
180
+ // and not wait out react-query's retries (the toolkit's client keeps the
181
+ // default 3, ~7 s of backoff): the first failure releases it.
182
+ // A dark OS, so the theme fallback is observable (light is the default).
183
+ vi.stubGlobal("matchMedia", vi.fn().mockReturnValue({
184
+ matches: true,
185
+ addEventListener: vi.fn(),
186
+ removeEventListener: vi.fn(),
187
+ }));
188
+ const host = createFakeHost({ hostContext: {}, hostCapabilities: {} });
189
+ mount(host);
190
+ // Within 1 s — inside the gate's 1.5 s profile bound, so the bound cannot
191
+ // be what released it …
192
+ await vi.waitFor(() => expect(probe()).toBe("en|inline|demo:widget"), { timeout: 1_000 });
193
+ // … while the retries still run: the query is pending after one failure.
194
+ expect(queryClient.getQueryState(["shell:settings", {}])).toMatchObject({
195
+ status: "pending",
196
+ fetchFailureCount: 1,
197
+ });
198
+ expect(host.toolCalls()).toEqual([]);
199
+ expect(root.lang).toBe("en");
200
+ expect(root.classList.contains("dark")).toBe(true);
201
+ });
202
+ });
203
+ /** A module widget with its own heading, as `WidgetHeader` renders it. */
204
+ const HeadedWidget = () => _jsx("h2", { children: "Widget heading" });
205
+ const VIEW_WIDGETS = { "demo:headed": HeadedWidget };
206
+ /** A `show_*` / `render-view` result: the server's view title over one widget. */
207
+ const VIEW_RESULT = {
208
+ content: [{ type: "text", text: "Rendered the view." }],
209
+ structuredContent: {
210
+ title: "Server view title",
211
+ context: { keys: {}, stepIds: [], stepData: {}, errors: [] },
212
+ layout: { rows: [{ row: [{ widget: "demo:headed" }] }] },
213
+ },
214
+ };
215
+ /**
216
+ * Mount a view the way every composed-server bundle does (AppShellProviders +
217
+ * LocalizedAppView), deliver the tool's result over the real view runtime and
218
+ * return the headings it renders. `toolName` is what the host names in
219
+ * SEP-1865 `toolInfo`; the chain under test is toolInfo → ShellHost.toolName
220
+ * (ViewHostBridge) → viewTitleMode → the toolkit toolbar's title.
221
+ */
222
+ async function viewHeadings(toolName) {
223
+ const host = createFakeHost({
224
+ hostContext: toolName
225
+ ? { toolInfo: { tool: { name: toolName, inputSchema: { type: "object" } } } }
226
+ : {},
227
+ tools: { [PROFILE_FEED]: profileResult({ language: "en" }) },
228
+ });
229
+ bootstrapView({
230
+ default: () => (_jsx(AppShellProviders, { widgets: VIEW_WIDGETS, children: _jsx(LocalizedAppView, { widgets: VIEW_WIDGETS }) })),
231
+ }, { transport: host.transport });
232
+ await vi.waitFor(() => expect(host.methods()).toContain("ui/notifications/initialized"));
233
+ host.notify("ui/notifications/tool-input", { arguments: {} });
234
+ host.notify("ui/notifications/tool-result", VIEW_RESULT);
235
+ await vi.waitFor(() => expect(document.body.textContent).toContain("Widget heading"));
236
+ return [...document.querySelectorAll("h1, h2, h3, h4, h5, h6")].map((h) => h.textContent);
237
+ }
238
+ describe("LocalizedAppView: one title per view (real mcp-use view runtime)", () => {
239
+ it("hides the toolbar title over a module view: the widget's heading is the one title", async () => {
240
+ expect(await viewHeadings("camunda7_show_process_list")).toEqual(["Widget heading"]);
241
+ });
242
+ it("keeps the toolbar title over a composed render-view, whose widgets carry none", async () => {
243
+ expect(await viewHeadings("render-view")).toEqual(["Server view title", "Widget heading"]);
244
+ });
245
+ it("keeps it where the host does not name the rendering tool", async () => {
246
+ expect(await viewHeadings(undefined)).toEqual(["Server view title", "Widget heading"]);
247
+ });
248
+ });
249
+ //# sourceMappingURL=app-shell-providers.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"app-shell-providers.test.js","sourceRoot":"","sources":["../../src/ui/app-shell-providers.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,56 @@
1
+ import type { AskAiPrompt } from "./ask-ai-prompt.js";
2
+ import { type LucideIcon } from "./icon.js";
3
+ /**
4
+ * Placement tiers. All but `menuitem` render as the same secondary outline
5
+ * button (a hand-off is never the view's primary action: the deterministic
6
+ * next step, Retry or Resolve, is); `icon` drops the visible label for dense
7
+ * rows; `menuitem` is an entry of a row's action menu ({@link MENU_ITEM},
8
+ * `role="menuitem"`), whose card is its surface.
9
+ */
10
+ export type AskAiVariant = "primary" | "subtle" | "icon" | "menuitem";
11
+ export interface AskAiButtonProps {
12
+ /**
13
+ * The hand-off posted to the agent as the user's chat message (`askAi` →
14
+ * `sendFollowup`). Only {@link askAiPrompt} builds one: a short localized
15
+ * intent + ids, engine text fenced as untrusted data, and only the tools
16
+ * the deployment registers for the model. `null` — nothing in the task is
17
+ * available here (or not yet known) — renders no button at all.
18
+ */
19
+ prompt: AskAiPrompt | null;
20
+ /**
21
+ * The Lucide icon of the CONCRETE function the chat will do — `FileSearch`
22
+ * to explain an error, `ClipboardList` to draft a ticket, `GitCompare` to
23
+ * compare (CI: no sparkles, no generic "AI" symbol). Defaults to a neutral
24
+ * `MessageSquare` (it goes to the chat).
25
+ */
26
+ icon?: LucideIcon;
27
+ /**
28
+ * A verb phrase that says the work happens in the chat: "Im Chat
29
+ * erklären" / "Explain in chat", "Ticket im Chat entwerfen". Defaults to
30
+ * the locale's "Im Chat analysieren" / "Analyze in chat". For `icon` it
31
+ * moves to `aria-label`/`title`.
32
+ */
33
+ label?: string;
34
+ /**
35
+ * `primary` = the one surface-level entry of a view; `subtle` = per-row /
36
+ * per-section (the common case); `icon` = dense table rows (icon only,
37
+ * label → aria-label); `menuitem` = an entry of a row's action menu.
38
+ */
39
+ variant?: AskAiVariant;
40
+ /** Tooltip/aria override; defaults to `label`. */
41
+ title?: string;
42
+ disabled?: boolean;
43
+ /** Optional hook fired after the handoff is dispatched. */
44
+ onSent?: () => void;
45
+ }
46
+ /**
47
+ * The single "cross into chat" affordance for the whole cockpit and the ONLY
48
+ * owner of the {@link useHostActions} `askAi` call site (a structural test
49
+ * fails on any other) for analyze / explain / compare / draft / prepare-action
50
+ * handoffs. Renders the same everywhere: an outline button with the icon of
51
+ * the concrete function and a verb that names the chat. Deterministic
52
+ * navigation (`useNav`/`showWidget`) and mutations must NOT use this — they
53
+ * keep their own controls.
54
+ */
55
+ export declare function AskAiButton({ prompt, icon, label, variant, title, disabled, onSent, }: AskAiButtonProps): import("react").JSX.Element | null;
56
+ //# sourceMappingURL=ask-ai-button.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-ai-button.d.ts","sourceRoot":"","sources":["../../src/ui/ask-ai-button.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAQ,KAAK,UAAU,EAAE,MAAM,WAAW,CAAA;AAIjD;;;;;;GAMG;AACH,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAA;AAErE,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,MAAM,EAAE,WAAW,GAAG,IAAI,CAAA;IAC1B;;;;;OAKG;IACH,IAAI,CAAC,EAAE,UAAU,CAAA;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd;;;;OAIG;IACH,OAAO,CAAC,EAAE,YAAY,CAAA;IACtB,kDAAkD;IAClD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,2DAA2D;IAC3D,MAAM,CAAC,EAAE,MAAM,IAAI,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAgB,WAAW,CAAC,EAC1B,MAAM,EACN,IAAoB,EACpB,KAAK,EACL,OAAkB,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GACP,EAAE,gBAAgB,sCA2ClB"}
@@ -0,0 +1,36 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button, useLocale } from "@miragon/mcp-toolkit-ui";
3
+ import { MessageSquare } from "lucide-react";
4
+ import { useHostActions } from "@miragon/mcp-toolkit-ui/app";
5
+ import { Icon } from "./icon.js";
6
+ import { kitLabels } from "./kit-labels.js";
7
+ import { MENU_ITEM } from "./menu-item.js";
8
+ /**
9
+ * The single "cross into chat" affordance for the whole cockpit and the ONLY
10
+ * owner of the {@link useHostActions} `askAi` call site (a structural test
11
+ * fails on any other) for analyze / explain / compare / draft / prepare-action
12
+ * handoffs. Renders the same everywhere: an outline button with the icon of
13
+ * the concrete function and a verb that names the chat. Deterministic
14
+ * navigation (`useNav`/`showWidget`) and mutations must NOT use this — they
15
+ * keep their own controls.
16
+ */
17
+ export function AskAiButton({ prompt, icon = MessageSquare, label, variant = "subtle", title, disabled, onSent, }) {
18
+ const host = useHostActions();
19
+ const locale = useLocale();
20
+ if (prompt === null)
21
+ return null;
22
+ // The kit has no message catalog of its own, so the default verb follows the
23
+ // ambient locale — otherwise every label-less call site leaks English into a
24
+ // localized cockpit.
25
+ const effectiveLabel = label ?? kitLabels(locale).askAiDefault;
26
+ const send = () => {
27
+ host.askAi(prompt);
28
+ onSent?.();
29
+ };
30
+ if (variant === "menuitem") {
31
+ return (_jsxs("button", { type: "button", role: "menuitem", tabIndex: -1, disabled: disabled, title: title, className: MENU_ITEM, onClick: send, children: [_jsx(Icon, { icon: icon, dense: true }), effectiveLabel] }));
32
+ }
33
+ const isIcon = variant === "icon";
34
+ return (_jsxs(Button, { type: "button", variant: "outline", size: isIcon ? "icon-sm" : "sm", disabled: disabled, "aria-label": isIcon ? (title ?? effectiveLabel) : undefined, title: isIcon ? (title ?? effectiveLabel) : title, onClick: send, children: [_jsx(Icon, { icon: icon, dense: isIcon }), !isIcon && effectiveLabel] }));
35
+ }
36
+ //# sourceMappingURL=ask-ai-button.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-ai-button.js","sourceRoot":"","sources":["../../src/ui/ask-ai-button.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAA;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAA;AAE5D,OAAO,EAAE,IAAI,EAAmB,MAAM,WAAW,CAAA;AACjD,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAA;AAC3C,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AA+C1C;;;;;;;;GAQG;AACH,MAAM,UAAU,WAAW,CAAC,EAC1B,MAAM,EACN,IAAI,GAAG,aAAa,EACpB,KAAK,EACL,OAAO,GAAG,QAAQ,EAClB,KAAK,EACL,QAAQ,EACR,MAAM,GACW;IACjB,MAAM,IAAI,GAAG,cAAc,EAAE,CAAA;IAC7B,MAAM,MAAM,GAAG,SAAS,EAAE,CAAA;IAC1B,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAA;IAChC,6EAA6E;IAC7E,6EAA6E;IAC7E,qBAAqB;IACrB,MAAM,cAAc,GAAG,KAAK,IAAI,SAAS,CAAC,MAAM,CAAC,CAAC,YAAY,CAAA;IAC9D,MAAM,IAAI,GAAG,GAAG,EAAE;QAChB,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;QAClB,MAAM,EAAE,EAAE,CAAA;IACZ,CAAC,CAAA;IACD,IAAI,OAAO,KAAK,UAAU,EAAE,CAAC;QAC3B,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,IAAI,EAAC,UAAU,EACf,QAAQ,EAAE,CAAC,CAAC,EACZ,QAAQ,EAAE,QAAQ,EAClB,KAAK,EAAE,KAAK,EACZ,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,IAAI,aAEb,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,SAAG,EACzB,cAAc,IACR,CACV,CAAA;IACH,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,KAAK,MAAM,CAAA;IACjC,OAAO,CACL,MAAC,MAAM,IACL,IAAI,EAAC,QAAQ,EACb,OAAO,EAAC,SAAS,EACjB,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,EAC/B,QAAQ,EAAE,QAAQ,gBACN,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,SAAS,EAC1D,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,IAAI,cAAc,CAAC,CAAC,CAAC,CAAC,KAAK,EACjD,OAAO,EAAE,IAAI,aAEb,KAAC,IAAI,IAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,GAAI,EAClC,CAAC,MAAM,IAAI,cAAc,IACnB,CACV,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ask-ai-button.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-ai-button.test.d.ts","sourceRoot":"","sources":["../../src/ui/ask-ai-button.test.tsx"],"names":[],"mappings":""}
@@ -0,0 +1,103 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ // @vitest-environment happy-dom
3
+ import { afterEach, describe, expect, it, vi } from "vitest";
4
+ import { cleanup, fireEvent, render, screen } from "@testing-library/react";
5
+ import { LocaleProvider } from "@miragon/mcp-toolkit-ui";
6
+ import { HostBridgeProvider } from "@miragon/mcp-toolkit-ui/app";
7
+ import { FileSearch } from "lucide-react";
8
+ import { AskAiButton } from "./ask-ai-button.js";
9
+ import { askAiPrompt } from "./ask-ai-prompt.js";
10
+ afterEach(cleanup);
11
+ function renderButton(prompt, locale = "en", props = {}) {
12
+ const sendFollowup = vi.fn();
13
+ const bridge = {
14
+ callTool: vi.fn(),
15
+ sendFollowup,
16
+ openExternal: vi.fn(),
17
+ getWidgetData: () => null,
18
+ };
19
+ const view = render(_jsx(HostBridgeProvider, { bridge: bridge, children: _jsx(LocaleProvider, { locale: locale, children: _jsx(AskAiButton, { prompt: prompt, ...props }) }) }));
20
+ return { ...view, sendFollowup };
21
+ }
22
+ const prompt = (locale = "en") => askAiPrompt({
23
+ intent: "Explain this.",
24
+ locale,
25
+ ids: { incidentId: "i1" },
26
+ surface: { has: () => true },
27
+ });
28
+ describe("AskAiButton", () => {
29
+ it("posts the built hand-off unchanged as the follow-up", () => {
30
+ const { sendFollowup } = renderButton(prompt());
31
+ fireEvent.click(screen.getByRole("button", { name: "Analyze in chat" }));
32
+ expect(sendFollowup).toHaveBeenCalledWith('Explain this.\nIds: incidentId="i1"');
33
+ });
34
+ it("renders nothing for a hand-off with nothing available in this deployment", () => {
35
+ const { container } = renderButton(null);
36
+ expect(container.querySelector("button")).toBeNull();
37
+ });
38
+ it("defaults its verb to the locale, a verb that names the chat", () => {
39
+ renderButton(prompt("de"), "de");
40
+ expect(screen.getByRole("button", { name: "Im Chat analysieren" })).toBeTruthy();
41
+ });
42
+ it("draws a decorative Lucide icon (default: the chat bubble), never the ✦ sparkle", () => {
43
+ const { container } = renderButton(prompt());
44
+ const svg = container.querySelector("svg");
45
+ expect(svg.getAttribute("class")).toContain("lucide-message-square");
46
+ expect(svg.getAttribute("aria-hidden")).toBe("true");
47
+ expect(container.textContent).not.toContain("✦");
48
+ });
49
+ it("shows the icon of the concrete function and the caller's verb", () => {
50
+ const { container } = renderButton(prompt(), "en", {
51
+ icon: FileSearch,
52
+ label: "Explain in chat",
53
+ });
54
+ expect(screen.getByRole("button", { name: "Explain in chat" })).toBeTruthy();
55
+ expect(container.querySelector("svg").getAttribute("class")).toContain("lucide-file-search");
56
+ });
57
+ it("the icon variant moves the label into the accessible name and the tooltip", () => {
58
+ const { container } = renderButton(prompt(), "en", {
59
+ variant: "icon",
60
+ label: "Draft a ticket in chat",
61
+ });
62
+ const button = screen.getByRole("button", { name: "Draft a ticket in chat" });
63
+ expect(button.getAttribute("title")).toBe("Draft a ticket in chat");
64
+ expect(button.textContent).toBe("");
65
+ // A dense icon bar: the CI's narrower stroke, set on the icon itself.
66
+ expect(container.querySelector("svg").getAttribute("stroke-width")).toBe("2");
67
+ });
68
+ it("the menuitem variant is a plain entry of a menu that posts the same hand-off", () => {
69
+ const onSent = vi.fn();
70
+ const { container, sendFollowup } = renderButton(prompt(), "en", {
71
+ variant: "menuitem",
72
+ icon: FileSearch,
73
+ label: "Explain error in chat",
74
+ onSent,
75
+ });
76
+ const item = screen.getByRole("menuitem", { name: "Explain error in chat" });
77
+ expect(item.getAttribute("tabindex")).toBe("-1");
78
+ // No button chrome: the menu's card is its surface (CI §8): an entry on
79
+ // the small radius in the dense step, the blue-soft hover, half opacity
80
+ // when off, its focus ring drawn inside.
81
+ expect(item.getAttribute("data-slot")).toBeNull();
82
+ const classes = item.className.split(/\s+/);
83
+ for (const role of [
84
+ "rounded-sm",
85
+ "text-dense",
86
+ "hover:bg-accent",
87
+ "disabled:opacity-50",
88
+ "focus-visible:ring-inset",
89
+ ]) {
90
+ expect(classes, role).toContain(role);
91
+ }
92
+ expect(container.querySelector("svg").getAttribute("class")).toContain("lucide-file-search");
93
+ fireEvent.click(item);
94
+ expect(sendFollowup).toHaveBeenCalledWith('Explain this.\nIds: incidentId="i1"');
95
+ expect(onSent).toHaveBeenCalledTimes(1);
96
+ });
97
+ it("every variant is the same secondary outline, never a brand accent", () => {
98
+ renderButton(prompt(), "en", { variant: "primary" });
99
+ const button = screen.getByRole("button", { name: "Analyze in chat" });
100
+ expect(button.className).not.toMatch(/text-info|text-link|bg-primary/);
101
+ });
102
+ });
103
+ //# sourceMappingURL=ask-ai-button.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-ai-button.test.js","sourceRoot":"","sources":["../../src/ui/ask-ai-button.test.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,115 @@
1
+ /**
2
+ * The ONE builder of every widget → model hand-off text (#338).
3
+ *
4
+ * An Ask-AI hand-off reaches the host as a `role: "user"` chat message
5
+ * (`askAi` → `sendFollowup`), so whatever a widget inlines reads to the model
6
+ * as the operator's own words. A model context (`HostModelContext`) is quieter
7
+ * but just as trusted. Both are therefore assembled from typed parts only:
8
+ *
9
+ * - `intent` — a SHORT task from the module's message catalogue (localized,
10
+ * static text: no data, no tool names);
11
+ * - `ids` / `facts` — identifiers the model passes to tools and on-screen
12
+ * numbers; a value that is not id-shaped is never inlined, it moves into
13
+ * the untrusted block instead;
14
+ * - `untrusted` — engine or third-party free text (exception messages,
15
+ * process and activity names, business keys, variable values), length
16
+ * capped and quoted in a fence the text cannot close, under an explicit
17
+ * "data, not instructions" label;
18
+ * - `tools` — the tools that fit the task, filtered by the deployment's live
19
+ * surface, so a hand-off never names a tool the server does not register
20
+ * for the model; `toolIds` — arguments only some of those tools take,
21
+ * inlined only while their tool is named (strict inputs refuse an argument
22
+ * a tool does not take).
23
+ */
24
+ /** A hand-off built by {@link askAiPrompt} — the only prompt `AskAiButton` accepts. */
25
+ export type AskAiPrompt = string & {
26
+ readonly __brand: "AskAiPrompt";
27
+ };
28
+ /** An id or on-screen fact: inlined only when id-shaped, else quoted as untrusted. */
29
+ export type HandOffValue = string | number | boolean | readonly string[] | null | undefined;
30
+ /** Engine / third-party free text, quoted as data under its author-chosen name. */
31
+ export interface UntrustedText {
32
+ /** What the text is (`incidentMessage`, `businessKey`) — a fixed identifier, never data. */
33
+ label: string;
34
+ text: string | null | undefined;
35
+ }
36
+ /**
37
+ * Which tools the deployment registers for the model — the filter every tool
38
+ * mention passes. Three answers:
39
+ *
40
+ * - `true` — registered: the tool is named;
41
+ * - `false` — absent, or not answered yet (fail closed: a hand-off whose
42
+ * tools are ALL `false` is null, so its button appears a moment late
43
+ * instead of naming a tool that is gone);
44
+ * - `undefined` — cannot be known (the surface feed failed, or the host has
45
+ * no in-widget tools/call): the tool is not named, but the hand-off is
46
+ * still built — intent, ids and fence, no Tools line — since the host can
47
+ * still post it.
48
+ */
49
+ export interface ToolSurface {
50
+ has(tool: string): boolean | undefined;
51
+ }
52
+ /** A surface that confirms nothing (no tool is ever mentioned). */
53
+ export declare const EMPTY_TOOL_SURFACE: ToolSurface;
54
+ export interface HandOffParts {
55
+ /** Identifiers the model passes to the listed tools (`engine`, `incidentId`, …). */
56
+ ids?: Readonly<Record<string, HandOffValue>>;
57
+ /** On-screen numbers and flags the task refers to (`openIncidents`, …). */
58
+ facts?: Readonly<Record<string, HandOffValue>>;
59
+ /** Engine / third-party free text — only ever inside the fence. */
60
+ untrusted?: readonly UntrustedText[];
61
+ /** The tools that fit the task; the ones off `surface` are dropped. */
62
+ tools?: readonly string[];
63
+ /**
64
+ * Arguments only SOME listed tools take (`period` for an analytics drill),
65
+ * keyed by tool: inlined into the Ids line only while that tool is named —
66
+ * a dropped tool must not leave behind an argument the remaining tools'
67
+ * strict inputs refuse.
68
+ */
69
+ toolIds?: Readonly<Record<string, Readonly<Record<string, HandOffValue>>>>;
70
+ surface: ToolSurface;
71
+ }
72
+ export interface AskAiPromptSpec extends HandOffParts {
73
+ /** The short task, from the module's catalogue (`t("askAi.…")`) — static text. */
74
+ intent: string;
75
+ /** The active locale — decides the language of the fixed labels. */
76
+ locale: string;
77
+ }
78
+ export interface ModelContextSpec extends HandOffParts {
79
+ /** What the operator is looking at — static, model-facing text. */
80
+ summary: string;
81
+ }
82
+ /** Max characters of ONE untrusted text; longer text keeps its head. */
83
+ export declare const MAX_UNTRUSTED_CHARS = 600;
84
+ interface Labels {
85
+ ids: string;
86
+ facts: string;
87
+ tools: string;
88
+ untrusted: string;
89
+ }
90
+ /** The kit has no catalogue of its own; these few labels follow the locale like AskAiButton's verb. */
91
+ export declare const ASK_AI_PROMPT_LABELS: Readonly<Record<"en" | "de", Labels>>;
92
+ /**
93
+ * A fenced block the text cannot close: the fence is one backtick longer than
94
+ * the longest backtick run inside (at least three). A closing fence must be at
95
+ * least as long as the opening one, so no line of the text can end the block —
96
+ * whatever it says stays quoted data.
97
+ */
98
+ export declare function fenceUntrusted(text: string): string;
99
+ /**
100
+ * Build an Ask-AI hand-off. Returns `null` — and `AskAiButton` renders
101
+ * nothing — when the task named tools and the surface answers `false` for
102
+ * EVERY one: there is nothing the model could do with it in this deployment
103
+ * (or the surface has not answered yet; the button then appears once it
104
+ * has). A tool the surface cannot know (`undefined`) keeps the hand-off,
105
+ * built without naming that tool.
106
+ */
107
+ export declare function askAiPrompt(spec: AskAiPromptSpec): AskAiPrompt | null;
108
+ /**
109
+ * Build a model-context text (`HostModelContext` content) from the same parts.
110
+ * Never null: the context describes the view whether or not a tool fits.
111
+ * English — it addresses the model, not the user.
112
+ */
113
+ export declare function modelContextText(spec: ModelContextSpec): string;
114
+ export {};
115
+ //# sourceMappingURL=ask-ai-prompt.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ask-ai-prompt.d.ts","sourceRoot":"","sources":["../../src/ui/ask-ai-prompt.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,uFAAuF;AACvF,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG;IAAE,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAA;CAAE,CAAA;AAEtE,sFAAsF;AACtF,MAAM,MAAM,YAAY,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,MAAM,EAAE,GAAG,IAAI,GAAG,SAAS,CAAA;AAE3F,mFAAmF;AACnF,MAAM,WAAW,aAAa;IAC5B,4FAA4F;IAC5F,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAA;CAChC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,WAAW;IAC1B,GAAG,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,CAAA;CACvC;AAED,mEAAmE;AACnE,eAAO,MAAM,kBAAkB,EAAE,WAAkC,CAAA;AAEnE,MAAM,WAAW,YAAY;IAC3B,oFAAoF;IACpF,GAAG,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAC5C,2EAA2E;IAC3E,KAAK,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAA;IAC9C,mEAAmE;IACnE,SAAS,CAAC,EAAE,SAAS,aAAa,EAAE,CAAA;IACpC,uEAAuE;IACvE,KAAK,CAAC,EAAE,SAAS,MAAM,EAAE,CAAA;IACzB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,CAAA;IAC1E,OAAO,EAAE,WAAW,CAAA;CACrB;AAED,MAAM,WAAW,eAAgB,SAAQ,YAAY;IACnD,kFAAkF;IAClF,MAAM,EAAE,MAAM,CAAA;IACd,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAA;CACf;AAED,MAAM,WAAW,gBAAiB,SAAQ,YAAY;IACpD,mEAAmE;IACnE,OAAO,EAAE,MAAM,CAAA;CAChB;AAED,wEAAwE;AACxE,eAAO,MAAM,mBAAmB,MAAM,CAAA;AAiBtC,UAAU,MAAM;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,SAAS,EAAE,MAAM,CAAA;CAClB;AAED,uGAAuG;AACvG,eAAO,MAAM,oBAAoB,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,GAAG,IAAI,EAAE,MAAM,CAAC,CAetE,CAAA;AAsCD;;;;;GAKG;AACH,wBAAgB,cAAc,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAKnD;AAiDD;;;;;;;GAOG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,eAAe,GAAG,WAAW,GAAG,IAAI,CAWrE;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,gBAAgB,GAAG,MAAM,CAE/D"}