@elabs-ai/components-ai 4.2.0 → 5.1.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 (462) hide show
  1. package/README.md +1 -1
  2. package/dist/{_audio-player-media-chrome-T3XVXWRZ.js → _audio-player-media-chrome.js} +1 -1
  3. package/dist/_code-block-theme.js +12 -0
  4. package/dist/_code-block-theme.js.map +1 -0
  5. package/dist/{_flow-boundary-SHNWLQG5.js → _flow-boundary.js} +1 -1
  6. package/dist/_flow-boundary.js.map +1 -0
  7. package/dist/_flow-lazy.js +8 -0
  8. package/dist/_flow-lazy.js.map +1 -0
  9. package/dist/_lazy-boundary-conformance.js +2 -0
  10. package/dist/_lazy-boundary-conformance.js.map +1 -0
  11. package/dist/_lazy-cjk.js +13 -0
  12. package/dist/_lazy-cjk.js.map +1 -0
  13. package/dist/_lazy-engine-boundary.js +9 -0
  14. package/dist/_lazy-engine-boundary.js.map +1 -0
  15. package/dist/_lazy-math.js +13 -0
  16. package/dist/_lazy-math.js.map +1 -0
  17. package/dist/_lazy-mermaid.js +12 -0
  18. package/dist/_lazy-mermaid.js.map +1 -0
  19. package/dist/_mermaid-error-panel.js +9 -0
  20. package/dist/_mermaid-error-panel.js.map +1 -0
  21. package/dist/{_persona-rive-JEG44YHX.js → _persona-rive.js} +19 -24
  22. package/dist/_persona-rive.js.map +1 -0
  23. package/dist/_streamdown-i18n.js +21 -0
  24. package/dist/_streamdown-i18n.js.map +1 -0
  25. package/dist/_streamdown-safety.js +10 -0
  26. package/dist/_streamdown-safety.js.map +1 -0
  27. package/dist/_theme-scope-store.js +13 -0
  28. package/dist/_theme-scope-store.js.map +1 -0
  29. package/dist/a2ui/a2ui-surface.js +17 -0
  30. package/dist/a2ui/a2ui-surface.js.map +1 -0
  31. package/dist/a2ui/core/catalog.generated.js +10 -0
  32. package/dist/a2ui/core/catalog.generated.js.map +1 -0
  33. package/dist/a2ui/core/complete-json.js +10 -0
  34. package/dist/a2ui/core/complete-json.js.map +1 -0
  35. package/dist/a2ui/core/index.js +37 -0
  36. package/dist/a2ui/core/index.js.map +1 -0
  37. package/dist/a2ui/core/schema.js +11 -0
  38. package/dist/a2ui/core/schema.js.map +1 -0
  39. package/dist/a2ui/core/spec.js +10 -0
  40. package/dist/a2ui/core/spec.js.map +1 -0
  41. package/dist/a2ui/core/validate.js +16 -0
  42. package/dist/a2ui/core/validate.js.map +1 -0
  43. package/dist/a2ui/index.js +54 -0
  44. package/dist/a2ui/index.js.map +1 -0
  45. package/dist/a2ui/ui-catalog.js +18 -0
  46. package/dist/a2ui/ui-catalog.js.map +1 -0
  47. package/dist/agent-event.js +10 -0
  48. package/dist/agent-event.js.map +1 -0
  49. package/dist/agent-timeline.js +11 -0
  50. package/dist/agent-timeline.js.map +1 -0
  51. package/dist/agent.js +25 -0
  52. package/dist/agent.js.map +1 -0
  53. package/dist/artifact.js +23 -0
  54. package/dist/artifact.js.map +1 -0
  55. package/dist/asset-preview.js +22 -0
  56. package/dist/asset-preview.js.map +1 -0
  57. package/dist/attachments.js +33 -0
  58. package/dist/attachments.js.map +1 -0
  59. package/dist/audio-player.js +30 -0
  60. package/dist/audio-player.js.map +1 -0
  61. package/dist/audio-visualizer.js +9 -0
  62. package/dist/audio-visualizer.js.map +1 -0
  63. package/dist/canvas.js +10 -0
  64. package/dist/canvas.js.map +1 -0
  65. package/dist/chain-of-thought.js +22 -0
  66. package/dist/chain-of-thought.js.map +1 -0
  67. package/dist/chat-greeting.js +8 -0
  68. package/dist/chat-greeting.js.map +1 -0
  69. package/dist/chat-shell.js +9 -0
  70. package/dist/chat-shell.js.map +1 -0
  71. package/dist/checkpoint.js +13 -0
  72. package/dist/checkpoint.js.map +1 -0
  73. package/dist/chunk-2XOIG5TG.js +72 -0
  74. package/dist/chunk-2XOIG5TG.js.map +1 -0
  75. package/dist/chunk-34CQ2VHM.js +172 -0
  76. package/dist/chunk-34CQ2VHM.js.map +1 -0
  77. package/dist/chunk-3TDHPXZZ.js +60 -0
  78. package/dist/chunk-3TDHPXZZ.js.map +1 -0
  79. package/dist/chunk-3XNPMDZY.js +478 -0
  80. package/dist/chunk-3XNPMDZY.js.map +1 -0
  81. package/dist/chunk-3YPT3V7L.js +56 -0
  82. package/dist/chunk-3YPT3V7L.js.map +1 -0
  83. package/dist/chunk-475UEU2Q.js +87 -0
  84. package/dist/chunk-475UEU2Q.js.map +1 -0
  85. package/dist/chunk-4CBTII2I.js +95 -0
  86. package/dist/chunk-4CBTII2I.js.map +1 -0
  87. package/dist/chunk-4XRNIZMG.js +22 -0
  88. package/dist/chunk-4XRNIZMG.js.map +1 -0
  89. package/dist/chunk-5NNWUKK5.js +2 -0
  90. package/dist/chunk-5NNWUKK5.js.map +1 -0
  91. package/dist/chunk-5UOMU27Z.js +164 -0
  92. package/dist/chunk-5UOMU27Z.js.map +1 -0
  93. package/dist/chunk-5VGYZ62I.js +264 -0
  94. package/dist/chunk-5VGYZ62I.js.map +1 -0
  95. package/dist/chunk-6IQPH2OS.js +21 -0
  96. package/dist/chunk-6IQPH2OS.js.map +1 -0
  97. package/dist/chunk-6PB2MXCI.js +482 -0
  98. package/dist/chunk-6PB2MXCI.js.map +1 -0
  99. package/dist/chunk-7FD5CZEU.js +215 -0
  100. package/dist/chunk-7FD5CZEU.js.map +1 -0
  101. package/dist/chunk-7RL6KZDF.js +266 -0
  102. package/dist/chunk-7RL6KZDF.js.map +1 -0
  103. package/dist/chunk-ADOYAGGK.js +482 -0
  104. package/dist/chunk-ADOYAGGK.js.map +1 -0
  105. package/dist/chunk-BA3AEMOU.js +21 -0
  106. package/dist/chunk-BA3AEMOU.js.map +1 -0
  107. package/dist/chunk-BBHFOYML.js +336 -0
  108. package/dist/chunk-BBHFOYML.js.map +1 -0
  109. package/dist/chunk-BHUVISIY.js +221 -0
  110. package/dist/chunk-BHUVISIY.js.map +1 -0
  111. package/dist/chunk-BM2LWERA.js +100 -0
  112. package/dist/chunk-BM2LWERA.js.map +1 -0
  113. package/dist/chunk-CMOYXNPJ.js +211 -0
  114. package/dist/chunk-CMOYXNPJ.js.map +1 -0
  115. package/dist/chunk-CZP3RHC4.js +74 -0
  116. package/dist/chunk-CZP3RHC4.js.map +1 -0
  117. package/dist/chunk-DDG5JHQT.js +112 -0
  118. package/dist/chunk-DDG5JHQT.js.map +1 -0
  119. package/dist/chunk-DJODXO7I.js +38 -0
  120. package/dist/chunk-DJODXO7I.js.map +1 -0
  121. package/dist/chunk-DWJDJLPU.js +192 -0
  122. package/dist/chunk-DWJDJLPU.js.map +1 -0
  123. package/dist/chunk-DZW6LM22.js +45 -0
  124. package/dist/chunk-DZW6LM22.js.map +1 -0
  125. package/dist/chunk-ELGCZLZF.js +305 -0
  126. package/dist/chunk-ELGCZLZF.js.map +1 -0
  127. package/dist/chunk-EV3U6ZZB.js +209 -0
  128. package/dist/chunk-EV3U6ZZB.js.map +1 -0
  129. package/dist/chunk-EY7LVUKQ.js +87 -0
  130. package/dist/chunk-EY7LVUKQ.js.map +1 -0
  131. package/dist/chunk-F4C74F7M.js +230 -0
  132. package/dist/chunk-F4C74F7M.js.map +1 -0
  133. package/dist/chunk-FERYDFZA.js +108 -0
  134. package/dist/chunk-FERYDFZA.js.map +1 -0
  135. package/dist/chunk-FUIYG2DS.js +166 -0
  136. package/dist/chunk-FUIYG2DS.js.map +1 -0
  137. package/dist/chunk-GA7M34KU.js +236 -0
  138. package/dist/chunk-GA7M34KU.js.map +1 -0
  139. package/dist/chunk-GKYZT3LA.js +136 -0
  140. package/dist/chunk-GKYZT3LA.js.map +1 -0
  141. package/dist/chunk-H42LRUQ4.js +102 -0
  142. package/dist/chunk-H42LRUQ4.js.map +1 -0
  143. package/dist/chunk-HVXM2G5F.js +222 -0
  144. package/dist/chunk-HVXM2G5F.js.map +1 -0
  145. package/dist/chunk-I4RDAGVY.js +53 -0
  146. package/dist/chunk-I4RDAGVY.js.map +1 -0
  147. package/dist/chunk-IQJG4IDX.js +208 -0
  148. package/dist/chunk-IQJG4IDX.js.map +1 -0
  149. package/dist/chunk-IX2PXG4Y.js +144 -0
  150. package/dist/chunk-IX2PXG4Y.js.map +1 -0
  151. package/dist/chunk-IXICSOOP.js +287 -0
  152. package/dist/chunk-IXICSOOP.js.map +1 -0
  153. package/dist/chunk-JY5HSN4D.js +84 -0
  154. package/dist/chunk-JY5HSN4D.js.map +1 -0
  155. package/dist/chunk-L4SU3QJV.js +174 -0
  156. package/dist/chunk-L4SU3QJV.js.map +1 -0
  157. package/dist/chunk-LMNSBOBG.js +19 -0
  158. package/dist/chunk-LMNSBOBG.js.map +1 -0
  159. package/dist/chunk-MBI7D6IL.js +42 -0
  160. package/dist/chunk-MBI7D6IL.js.map +1 -0
  161. package/dist/chunk-MLFMYCPH.js +192 -0
  162. package/dist/chunk-MLFMYCPH.js.map +1 -0
  163. package/dist/chunk-MOK66734.js +33 -0
  164. package/dist/chunk-MOK66734.js.map +1 -0
  165. package/dist/chunk-MXTAWPYM.js +196 -0
  166. package/dist/chunk-MXTAWPYM.js.map +1 -0
  167. package/dist/chunk-NCL2UZKI.js +96 -0
  168. package/dist/chunk-NCL2UZKI.js.map +1 -0
  169. package/dist/chunk-NET4YLRY.js +107 -0
  170. package/dist/chunk-NET4YLRY.js.map +1 -0
  171. package/dist/chunk-NIG67CFM.js +329 -0
  172. package/dist/chunk-NIG67CFM.js.map +1 -0
  173. package/dist/chunk-NMVNNO3L.js +10 -0
  174. package/dist/chunk-NMVNNO3L.js.map +1 -0
  175. package/dist/chunk-NP7VID4K.js +2 -0
  176. package/dist/chunk-NP7VID4K.js.map +1 -0
  177. package/dist/chunk-NPUCMAG2.js +382 -0
  178. package/dist/chunk-NPUCMAG2.js.map +1 -0
  179. package/dist/chunk-NSCLRHES.js +102 -0
  180. package/dist/chunk-NSCLRHES.js.map +1 -0
  181. package/dist/chunk-OEUXHVFW.js +86 -0
  182. package/dist/chunk-OEUXHVFW.js.map +1 -0
  183. package/dist/chunk-ONBHFIMZ.js +137 -0
  184. package/dist/chunk-ONBHFIMZ.js.map +1 -0
  185. package/dist/chunk-OPH2HHL2.js +228 -0
  186. package/dist/chunk-OPH2HHL2.js.map +1 -0
  187. package/dist/chunk-OQERHIQP.js +287 -0
  188. package/dist/chunk-OQERHIQP.js.map +1 -0
  189. package/dist/chunk-P6YJAZFG.js +103 -0
  190. package/dist/chunk-P6YJAZFG.js.map +1 -0
  191. package/dist/chunk-PG7ERDOD.js +65 -0
  192. package/dist/chunk-PG7ERDOD.js.map +1 -0
  193. package/dist/chunk-PIB5JBMA.js +90 -0
  194. package/dist/chunk-PIB5JBMA.js.map +1 -0
  195. package/dist/chunk-PQ5BPIWQ.js +22 -0
  196. package/dist/chunk-PQ5BPIWQ.js.map +1 -0
  197. package/dist/chunk-PQBF6ZIQ.js +55 -0
  198. package/dist/chunk-PQBF6ZIQ.js.map +1 -0
  199. package/dist/chunk-PTWCTSZL.js +173 -0
  200. package/dist/chunk-PTWCTSZL.js.map +1 -0
  201. package/dist/chunk-QJUNPVOS.js +101 -0
  202. package/dist/chunk-QJUNPVOS.js.map +1 -0
  203. package/dist/chunk-QOBSEGCG.js +996 -0
  204. package/dist/chunk-QOBSEGCG.js.map +1 -0
  205. package/dist/chunk-QUDZOTRV.js +43 -0
  206. package/dist/chunk-QUDZOTRV.js.map +1 -0
  207. package/dist/chunk-RB7G65JC.js +213 -0
  208. package/dist/chunk-RB7G65JC.js.map +1 -0
  209. package/dist/chunk-RPHAOR7P.js +45 -0
  210. package/dist/chunk-RPHAOR7P.js.map +1 -0
  211. package/dist/chunk-RTCSH2AN.js +331 -0
  212. package/dist/chunk-RTCSH2AN.js.map +1 -0
  213. package/dist/chunk-S3ISPW3A.js +28 -0
  214. package/dist/chunk-S3ISPW3A.js.map +1 -0
  215. package/dist/chunk-SEVN656N.js +36 -0
  216. package/dist/chunk-SEVN656N.js.map +1 -0
  217. package/dist/chunk-SKVG672B.js +64 -0
  218. package/dist/chunk-SKVG672B.js.map +1 -0
  219. package/dist/chunk-SSGJ6MEM.js +1076 -0
  220. package/dist/chunk-SSGJ6MEM.js.map +1 -0
  221. package/dist/chunk-SSKZ2AED.js +118 -0
  222. package/dist/chunk-SSKZ2AED.js.map +1 -0
  223. package/dist/chunk-T56JFGXI.js +561 -0
  224. package/dist/chunk-T56JFGXI.js.map +1 -0
  225. package/dist/chunk-TCB6O74A.js +137 -0
  226. package/dist/chunk-TCB6O74A.js.map +1 -0
  227. package/dist/chunk-TTEYPO6X.js +57 -0
  228. package/dist/chunk-TTEYPO6X.js.map +1 -0
  229. package/dist/chunk-TWPHAJNM.js +462 -0
  230. package/dist/chunk-TWPHAJNM.js.map +1 -0
  231. package/dist/chunk-TXJJLP4O.js +336 -0
  232. package/dist/chunk-TXJJLP4O.js.map +1 -0
  233. package/dist/chunk-TZ6TB7VM.js +245 -0
  234. package/dist/chunk-TZ6TB7VM.js.map +1 -0
  235. package/dist/chunk-UBLKJJ7K.js +278 -0
  236. package/dist/chunk-UBLKJJ7K.js.map +1 -0
  237. package/dist/chunk-UCJ6IUFS.js +52 -0
  238. package/dist/chunk-UCJ6IUFS.js.map +1 -0
  239. package/dist/chunk-UCKFJ3QF.js +197 -0
  240. package/dist/chunk-UCKFJ3QF.js.map +1 -0
  241. package/dist/chunk-UPXSLILN.js +20 -0
  242. package/dist/chunk-UPXSLILN.js.map +1 -0
  243. package/dist/chunk-V4DORGWJ.js +92 -0
  244. package/dist/chunk-V4DORGWJ.js.map +1 -0
  245. package/dist/chunk-V6E5DYZD.js +80 -0
  246. package/dist/chunk-V6E5DYZD.js.map +1 -0
  247. package/dist/chunk-VLLYKF3P.js +96 -0
  248. package/dist/chunk-VLLYKF3P.js.map +1 -0
  249. package/dist/chunk-VLNBTOH6.js +43 -0
  250. package/dist/chunk-VLNBTOH6.js.map +1 -0
  251. package/dist/chunk-WMDSMSPL.js +303 -0
  252. package/dist/chunk-WMDSMSPL.js.map +1 -0
  253. package/dist/chunk-WU5BLGTF.js +149 -0
  254. package/dist/chunk-WU5BLGTF.js.map +1 -0
  255. package/dist/chunk-WYTZVSGK.js +245 -0
  256. package/dist/chunk-WYTZVSGK.js.map +1 -0
  257. package/dist/chunk-X47QMM6K.js +187 -0
  258. package/dist/chunk-X47QMM6K.js.map +1 -0
  259. package/dist/chunk-YHUSW7D2.js +40 -0
  260. package/dist/chunk-YHUSW7D2.js.map +1 -0
  261. package/dist/chunk-YSKD7UXX.js +126 -0
  262. package/dist/chunk-YSKD7UXX.js.map +1 -0
  263. package/dist/chunk-YYRDGWOU.js +72 -0
  264. package/dist/chunk-YYRDGWOU.js.map +1 -0
  265. package/dist/chunk-ZIGZMWM7.js +19 -0
  266. package/dist/chunk-ZIGZMWM7.js.map +1 -0
  267. package/dist/chunk-ZKRTUKNP.js +40 -0
  268. package/dist/chunk-ZKRTUKNP.js.map +1 -0
  269. package/dist/code-block.js +38 -0
  270. package/dist/code-block.js.map +1 -0
  271. package/dist/commit.js +51 -0
  272. package/dist/commit.js.map +1 -0
  273. package/dist/composer.js +15 -0
  274. package/dist/composer.js.map +1 -0
  275. package/dist/confirmation.js +53 -0
  276. package/dist/confirmation.js.map +1 -0
  277. package/dist/connection.js +8 -0
  278. package/dist/connection.js.map +1 -0
  279. package/dist/context-panel.js +25 -0
  280. package/dist/context-panel.js.map +1 -0
  281. package/dist/controls.js +10 -0
  282. package/dist/controls.js.map +1 -0
  283. package/dist/conversation.js +19 -0
  284. package/dist/conversation.js.map +1 -0
  285. package/dist/diff-view.js +15 -0
  286. package/dist/diff-view.js.map +1 -0
  287. package/dist/edge.js +10 -0
  288. package/dist/edge.js.map +1 -0
  289. package/dist/environment-variables.js +29 -0
  290. package/dist/environment-variables.js.map +1 -0
  291. package/dist/file-tree.js +23 -0
  292. package/dist/file-tree.js.map +1 -0
  293. package/dist/gallery.js +9 -0
  294. package/dist/gallery.js.map +1 -0
  295. package/dist/grouped-parts.js +21 -0
  296. package/dist/grouped-parts.js.map +1 -0
  297. package/dist/image.js +9 -0
  298. package/dist/image.js.map +1 -0
  299. package/dist/index.d.ts +366 -98
  300. package/dist/index.js +672 -13577
  301. package/dist/index.js.map +1 -1
  302. package/dist/inline-citation.js +39 -0
  303. package/dist/inline-citation.js.map +1 -0
  304. package/dist/jsx-preview.js +17 -0
  305. package/dist/jsx-preview.js.map +1 -0
  306. package/dist/markdown-view.js +17 -0
  307. package/dist/markdown-view.js.map +1 -0
  308. package/dist/message-compare.js +12 -0
  309. package/dist/message-compare.js.map +1 -0
  310. package/dist/message-edit.js +19 -0
  311. package/dist/message-edit.js.map +1 -0
  312. package/dist/message-feedback.js +11 -0
  313. package/dist/message-feedback.js.map +1 -0
  314. package/dist/message-form-spec.js +38 -0
  315. package/dist/message-form-spec.js.map +1 -0
  316. package/dist/message-form.js +26 -0
  317. package/dist/message-form.js.map +1 -0
  318. package/dist/message-table-spec.js +26 -0
  319. package/dist/message-table-spec.js.map +1 -0
  320. package/dist/message-table.js +12 -0
  321. package/dist/message-table.js.map +1 -0
  322. package/dist/message.js +51 -0
  323. package/dist/message.js.map +1 -0
  324. package/dist/mic-selector.js +27 -0
  325. package/dist/mic-selector.js.map +1 -0
  326. package/dist/model-provider-logo.js +13 -0
  327. package/dist/model-provider-logo.js.map +1 -0
  328. package/dist/motion-config.js +9 -0
  329. package/dist/motion-config.js.map +1 -0
  330. package/dist/node.js +22 -0
  331. package/dist/node.js.map +1 -0
  332. package/dist/open-in-chat.js +31 -0
  333. package/dist/open-in-chat.js.map +1 -0
  334. package/dist/package-info.js +25 -0
  335. package/dist/package-info.js.map +1 -0
  336. package/dist/panel.js +10 -0
  337. package/dist/panel.js.map +1 -0
  338. package/dist/part-groups.js +18 -0
  339. package/dist/part-groups.js.map +1 -0
  340. package/dist/permission-mode-select.js +9 -0
  341. package/dist/permission-mode-select.js.map +1 -0
  342. package/dist/persona-sources.js +8 -0
  343. package/dist/persona-sources.js.map +1 -0
  344. package/dist/persona.js +14 -0
  345. package/dist/persona.js.map +1 -0
  346. package/dist/plan.js +32 -0
  347. package/dist/plan.js.map +1 -0
  348. package/dist/prompt-input-effort.js +9 -0
  349. package/dist/prompt-input-effort.js.map +1 -0
  350. package/dist/prompt-input-mode.js +10 -0
  351. package/dist/prompt-input-mode.js.map +1 -0
  352. package/dist/prompt-input-slash.js +12 -0
  353. package/dist/prompt-input-slash.js.map +1 -0
  354. package/dist/prompt-input.js +89 -0
  355. package/dist/prompt-input.js.map +1 -0
  356. package/dist/queue.js +37 -0
  357. package/dist/queue.js.map +1 -0
  358. package/dist/reasoning.js +23 -0
  359. package/dist/reasoning.js.map +1 -0
  360. package/dist/sandbox.js +28 -0
  361. package/dist/sandbox.js.map +1 -0
  362. package/dist/schema-display.js +33 -0
  363. package/dist/schema-display.js.map +1 -0
  364. package/dist/selection-toolbar.js +11 -0
  365. package/dist/selection-toolbar.js.map +1 -0
  366. package/dist/session-header.js +9 -0
  367. package/dist/session-header.js.map +1 -0
  368. package/dist/session-status-bar.js +9 -0
  369. package/dist/session-status-bar.js.map +1 -0
  370. package/dist/shimmer.js +9 -0
  371. package/dist/shimmer.js.map +1 -0
  372. package/dist/snippet.js +17 -0
  373. package/dist/snippet.js.map +1 -0
  374. package/dist/sources.js +17 -0
  375. package/dist/sources.js.map +1 -0
  376. package/dist/speech-input.js +9 -0
  377. package/dist/speech-input.js.map +1 -0
  378. package/dist/stack-trace.js +27 -0
  379. package/dist/stack-trace.js.map +1 -0
  380. package/dist/suggestion.js +16 -0
  381. package/dist/suggestion.js.map +1 -0
  382. package/dist/task.js +18 -0
  383. package/dist/task.js.map +1 -0
  384. package/dist/test-results.js +43 -0
  385. package/dist/test-results.js.map +1 -0
  386. package/dist/token-usage.js +27 -0
  387. package/dist/token-usage.js.map +1 -0
  388. package/dist/tool-result-card.js +9 -0
  389. package/dist/tool-result-card.js.map +1 -0
  390. package/dist/tool.js +27 -0
  391. package/dist/tool.js.map +1 -0
  392. package/dist/toolbar.js +10 -0
  393. package/dist/toolbar.js.map +1 -0
  394. package/dist/transcription.js +11 -0
  395. package/dist/transcription.js.map +1 -0
  396. package/dist/turn-status.js +9 -0
  397. package/dist/turn-status.js.map +1 -0
  398. package/dist/use-audio-level.js +9 -0
  399. package/dist/use-audio-level.js.map +1 -0
  400. package/dist/voice-selector.js +47 -0
  401. package/dist/voice-selector.js.map +1 -0
  402. package/dist/web-preview.js +19 -0
  403. package/dist/web-preview.js.map +1 -0
  404. package/package.json +11 -9
  405. package/schemas/a2ui-surface.v1.schema.json +5434 -0
  406. package/src/_chat-shell-rail.tsx +3 -1
  407. package/src/_flow-boundary.tsx +2 -2
  408. package/src/_persona-rive.tsx +27 -41
  409. package/src/a2ui/a2ui-surface.stories.tsx +662 -0
  410. package/src/a2ui/a2ui-surface.test.tsx +201 -0
  411. package/src/a2ui/a2ui-surface.tsx +354 -0
  412. package/src/a2ui/catalog.source.json +772 -0
  413. package/src/a2ui/core/a2ui-core.test.ts +178 -0
  414. package/src/a2ui/core/catalog.generated.ts +1019 -0
  415. package/src/a2ui/core/complete-json.ts +81 -0
  416. package/src/a2ui/core/index.ts +10 -0
  417. package/src/a2ui/core/schema.ts +111 -0
  418. package/src/a2ui/core/spec.ts +148 -0
  419. package/src/a2ui/core/validate.ts +266 -0
  420. package/src/a2ui/index.ts +7 -0
  421. package/src/a2ui/ui-catalog.tsx +225 -0
  422. package/src/a2ui/wave1-chart-spec.test.ts +87 -0
  423. package/src/a2ui/wave2-chart-spec.test.ts +108 -0
  424. package/src/agentic-workspace.stories.tsx +6 -45
  425. package/src/chat-shell.test.tsx +40 -10
  426. package/src/chat-shell.tsx +90 -44
  427. package/src/chat.stories.tsx +47 -42
  428. package/src/composer.stories.tsx +4 -5
  429. package/src/composer.test.tsx +45 -0
  430. package/src/composer.tsx +104 -21
  431. package/src/context-panel.stories.tsx +1 -1
  432. package/src/context-panel.tsx +1 -1
  433. package/src/conversation.stories.tsx +1 -0
  434. package/src/conversation.test.tsx +16 -0
  435. package/src/conversation.tsx +16 -2
  436. package/src/diff-view.stories.tsx +79 -0
  437. package/src/diff-view.tsx +3 -2
  438. package/src/file-tree.tsx +24 -17
  439. package/src/gallery.stories.tsx +42 -0
  440. package/src/gallery.tsx +2 -2
  441. package/src/grouped-parts.stories.tsx +23 -0
  442. package/src/grouped-parts.tsx +1 -1
  443. package/src/index.ts +1 -0
  444. package/src/message-compare.stories.tsx +40 -0
  445. package/src/message-compare.tsx +2 -1
  446. package/src/message-form.tsx +1 -1
  447. package/src/message-table.stories.tsx +24 -0
  448. package/src/message-table.tsx +1 -1
  449. package/src/package-info.tsx +12 -9
  450. package/src/reasoning.stories.tsx +27 -0
  451. package/src/reasoning.tsx +1 -1
  452. package/src/session-header.stories.tsx +35 -1
  453. package/src/session-header.tsx +1 -1
  454. package/src/sources.stories.tsx +30 -0
  455. package/src/sources.tsx +4 -1
  456. package/src/templates-ai-assistant.stories.tsx +151 -87
  457. package/src/tool.stories.tsx +39 -0
  458. package/src/tool.tsx +3 -3
  459. package/src/toolbar.tsx +0 -10
  460. package/dist/_flow-boundary-SHNWLQG5.js.map +0 -1
  461. package/dist/_persona-rive-JEG44YHX.js.map +0 -1
  462. /package/dist/{_audio-player-media-chrome-T3XVXWRZ.js.map → _audio-player-media-chrome.js.map} +0 -0
@@ -0,0 +1,772 @@
1
+ {
2
+ "$comment": "A2UI catalog SOURCE (D2 — the generative-UI path). Hand-authored: which @elabs-ai/components-ui components an agent may name in a surface, which may hold children, and which events a node's `on` map can bind. `pnpm gen` (packages/cli/scripts/gen-a2ui-catalog.mjs) merges each entry with the manifest's prop table + cva variants into core/catalog.generated.ts. Two entries are `builtin` layout nodes the renderer draws itself. A type with `\"package\": \"@elabs-ai/components-charts\"` is generated into that package's own `src/a2ui/catalog.generated.ts` and bound there (`CHARTS_A2UI_BINDINGS`); an app merges it with `createA2uiCatalog`, because `ai` may not import `charts`. Keep the list small and real: a type here is a promise an agent will rely on.",
3
+ "version": "1",
4
+ "types": {
5
+ "Stack": {
6
+ "builtin": true,
7
+ "children": true,
8
+ "summary": "Vertical or horizontal flex group. The default container — put siblings in a Stack, never bare.",
9
+ "props": {
10
+ "direction": {
11
+ "enum": ["column", "row"],
12
+ "default": "column"
13
+ },
14
+ "gap": {
15
+ "enum": ["none", "xs", "sm", "md", "lg"],
16
+ "default": "md"
17
+ },
18
+ "align": {
19
+ "enum": ["start", "center", "end", "stretch"],
20
+ "default": "stretch"
21
+ },
22
+ "justify": {
23
+ "enum": ["start", "center", "end", "between"],
24
+ "default": "start"
25
+ },
26
+ "wrap": {
27
+ "type": "boolean",
28
+ "default": false
29
+ }
30
+ }
31
+ },
32
+ "Grid": {
33
+ "builtin": true,
34
+ "children": true,
35
+ "summary": "Responsive CSS grid, 1–4 equal columns (collapses to one column on narrow screens).",
36
+ "props": {
37
+ "columns": {
38
+ "enum": [1, 2, 3, 4],
39
+ "default": 2
40
+ },
41
+ "gap": {
42
+ "enum": ["none", "xs", "sm", "md", "lg"],
43
+ "default": "md"
44
+ }
45
+ }
46
+ },
47
+ "Heading": {
48
+ "children": true,
49
+ "summary": "Section heading; `level` sets the HTML rank (1–6), `size` the type role.",
50
+ "props": {
51
+ "level": {
52
+ "enum": [1, 2, 3, 4, 5, 6],
53
+ "default": 2
54
+ }
55
+ }
56
+ },
57
+ "Text": {
58
+ "children": true,
59
+ "summary": "A paragraph or inline run of text with a type role and tone."
60
+ },
61
+ "Card": {
62
+ "children": true,
63
+ "summary": "The one generic surface — compose CardHeader / CardContent / CardFooter inside.",
64
+ "omit": ["detailReveal", "detailSize", "interactive"]
65
+ },
66
+ "CardHeader": {
67
+ "children": true
68
+ },
69
+ "CardTitle": {
70
+ "children": true
71
+ },
72
+ "CardDescription": {
73
+ "children": true
74
+ },
75
+ "CardContent": {
76
+ "children": true
77
+ },
78
+ "CardFooter": {
79
+ "children": true
80
+ },
81
+ "CardAction": {
82
+ "children": true,
83
+ "summary": "The header's trailing action slot (a Button, a Badge)."
84
+ },
85
+ "SectionHeader": {
86
+ "summary": "Title + description + optional actions above a region.",
87
+ "props": {
88
+ "title": {
89
+ "type": "node",
90
+ "required": true
91
+ },
92
+ "description": {
93
+ "type": "node"
94
+ },
95
+ "eyebrow": {
96
+ "type": "node"
97
+ },
98
+ "actions": {
99
+ "type": "node"
100
+ }
101
+ }
102
+ },
103
+ "Separator": {
104
+ "props": {
105
+ "orientation": {
106
+ "enum": ["horizontal", "vertical"],
107
+ "default": "horizontal"
108
+ }
109
+ }
110
+ },
111
+ "Badge": {
112
+ "children": true
113
+ },
114
+ "StatusBadge": {
115
+ "summary": "A closed status vocabulary with icon + text (never colour alone).",
116
+ "props": {
117
+ "status": {
118
+ "enum": [
119
+ "pending",
120
+ "running",
121
+ "complete",
122
+ "awaiting-approval",
123
+ "denied",
124
+ "failed",
125
+ "skipped"
126
+ ],
127
+ "required": true
128
+ },
129
+ "hideIcon": {
130
+ "type": "boolean"
131
+ }
132
+ }
133
+ },
134
+ "Alert": {
135
+ "children": true,
136
+ "summary": "Compose AlertTitle + AlertDescription inside.",
137
+ "props": {
138
+ "variant": {
139
+ "enum": ["default", "destructive", "success", "warning", "info"]
140
+ }
141
+ }
142
+ },
143
+ "AlertTitle": {
144
+ "children": true
145
+ },
146
+ "AlertDescription": {
147
+ "children": true
148
+ },
149
+ "Progress": {
150
+ "props": {
151
+ "value": {
152
+ "type": "number",
153
+ "required": true
154
+ },
155
+ "max": {
156
+ "type": "number"
157
+ },
158
+ "aria-label": {
159
+ "type": "string"
160
+ }
161
+ }
162
+ },
163
+ "MetricCard": {
164
+ "summary": "One KPI: label, value, optional delta. Put several in a Grid.",
165
+ "props": {
166
+ "valueFormat": {
167
+ "enum": ["number", "compact", "currency", "percent"]
168
+ },
169
+ "delta": {
170
+ "type": "string"
171
+ },
172
+ "deltaDirection": {
173
+ "enum": ["up", "down", "neutral"]
174
+ },
175
+ "positiveIsGood": {
176
+ "type": "boolean"
177
+ },
178
+ "currency": {
179
+ "type": "string"
180
+ }
181
+ },
182
+ "omit": ["announceLoading", "copyExactValue", "icon", "visual"]
183
+ },
184
+ "Descriptions": {
185
+ "children": true,
186
+ "summary": "Key–value list; children are DescriptionsItem.",
187
+ "props": {
188
+ "columns": {
189
+ "enum": [1, 2, 3]
190
+ },
191
+ "layout": {
192
+ "enum": ["horizontal", "vertical"]
193
+ }
194
+ }
195
+ },
196
+ "DescriptionsItem": {
197
+ "children": true
198
+ },
199
+ "Table": {
200
+ "children": true,
201
+ "summary": "Compose TableHeader/TableBody → TableRow → TableHead/TableCell."
202
+ },
203
+ "TableHeader": {
204
+ "children": true
205
+ },
206
+ "TableBody": {
207
+ "children": true
208
+ },
209
+ "TableFooter": {
210
+ "children": true
211
+ },
212
+ "TableRow": {
213
+ "children": true
214
+ },
215
+ "TableHead": {
216
+ "children": true
217
+ },
218
+ "TableCell": {
219
+ "children": true
220
+ },
221
+ "TableCaption": {
222
+ "children": true
223
+ },
224
+ "Tabs": {
225
+ "children": true,
226
+ "summary": "Compose TabsList (TabsTrigger…) + TabsContent per value.",
227
+ "props": {
228
+ "defaultValue": {
229
+ "type": "string",
230
+ "required": true
231
+ }
232
+ },
233
+ "events": {
234
+ "change": "onValueChange"
235
+ }
236
+ },
237
+ "TabsList": {
238
+ "children": true
239
+ },
240
+ "TabsTrigger": {
241
+ "children": true,
242
+ "props": {
243
+ "value": {
244
+ "type": "string",
245
+ "required": true
246
+ },
247
+ "disabled": {
248
+ "type": "boolean"
249
+ }
250
+ }
251
+ },
252
+ "TabsContent": {
253
+ "children": true,
254
+ "props": {
255
+ "value": {
256
+ "type": "string",
257
+ "required": true
258
+ }
259
+ }
260
+ },
261
+ "Accordion": {
262
+ "children": true,
263
+ "props": {
264
+ "type": {
265
+ "enum": ["single", "multiple"],
266
+ "required": true
267
+ },
268
+ "defaultValue": {
269
+ "type": "string"
270
+ },
271
+ "collapsible": {
272
+ "type": "boolean"
273
+ }
274
+ },
275
+ "events": {
276
+ "change": "onValueChange"
277
+ }
278
+ },
279
+ "AccordionItem": {
280
+ "children": true,
281
+ "props": {
282
+ "value": {
283
+ "type": "string",
284
+ "required": true
285
+ }
286
+ }
287
+ },
288
+ "AccordionTrigger": {
289
+ "children": true
290
+ },
291
+ "AccordionContent": {
292
+ "children": true
293
+ },
294
+ "Timeline": {
295
+ "summary": "Ordered status timeline from `items` (title, status, timestamp, description).",
296
+ "props": {
297
+ "items": {
298
+ "type": "array",
299
+ "required": true,
300
+ "description": "[{ title, description?, status?: \"done\"|\"active\"|\"pending\", timestamp? }]"
301
+ }
302
+ }
303
+ },
304
+ "EmptyState": {
305
+ "summary": "Nothing here yet — title, description, optional actions."
306
+ },
307
+ "StatePanel": {
308
+ "summary": "An empty / error / loading message panel."
309
+ },
310
+ "Avatar": {
311
+ "children": true,
312
+ "summary": "Compose AvatarFallback (initials) inside."
313
+ },
314
+ "AvatarFallback": {
315
+ "children": true
316
+ },
317
+ "Kbd": {
318
+ "children": true
319
+ },
320
+ "Button": {
321
+ "children": true,
322
+ "summary": "An action. Bind `on.click`; one `variant: \"default\"` per group.",
323
+ "props": {
324
+ "disabled": {
325
+ "type": "boolean"
326
+ },
327
+ "type": {
328
+ "enum": ["button", "submit"],
329
+ "default": "button"
330
+ }
331
+ },
332
+ "events": {
333
+ "click": "onClick"
334
+ }
335
+ },
336
+ "ButtonGroup": {
337
+ "children": true
338
+ },
339
+ "Label": {
340
+ "children": true,
341
+ "props": {
342
+ "htmlFor": {
343
+ "type": "string"
344
+ }
345
+ }
346
+ },
347
+ "Input": {
348
+ "props": {
349
+ "id": {
350
+ "type": "string"
351
+ },
352
+ "type": {
353
+ "enum": ["text", "email", "number", "password", "search", "tel", "url", "date"]
354
+ },
355
+ "placeholder": {
356
+ "type": "string"
357
+ },
358
+ "defaultValue": {
359
+ "type": "string"
360
+ },
361
+ "disabled": {
362
+ "type": "boolean"
363
+ },
364
+ "required": {
365
+ "type": "boolean"
366
+ },
367
+ "aria-label": {
368
+ "type": "string"
369
+ }
370
+ },
371
+ "events": {
372
+ "change": "onChange"
373
+ }
374
+ },
375
+ "Textarea": {
376
+ "props": {
377
+ "id": {
378
+ "type": "string"
379
+ },
380
+ "placeholder": {
381
+ "type": "string"
382
+ },
383
+ "defaultValue": {
384
+ "type": "string"
385
+ },
386
+ "rows": {
387
+ "type": "number"
388
+ },
389
+ "disabled": {
390
+ "type": "boolean"
391
+ },
392
+ "aria-label": {
393
+ "type": "string"
394
+ }
395
+ },
396
+ "events": {
397
+ "change": "onChange"
398
+ }
399
+ },
400
+ "Checkbox": {
401
+ "props": {
402
+ "id": {
403
+ "type": "string"
404
+ },
405
+ "defaultChecked": {
406
+ "type": "boolean"
407
+ },
408
+ "disabled": {
409
+ "type": "boolean"
410
+ },
411
+ "aria-label": {
412
+ "type": "string"
413
+ }
414
+ },
415
+ "events": {
416
+ "change": "onCheckedChange"
417
+ }
418
+ },
419
+ "Switch": {
420
+ "props": {
421
+ "id": {
422
+ "type": "string"
423
+ },
424
+ "defaultChecked": {
425
+ "type": "boolean"
426
+ },
427
+ "disabled": {
428
+ "type": "boolean"
429
+ },
430
+ "aria-label": {
431
+ "type": "string"
432
+ }
433
+ },
434
+ "events": {
435
+ "change": "onCheckedChange"
436
+ }
437
+ },
438
+ "RadioGroup": {
439
+ "children": true,
440
+ "props": {
441
+ "defaultValue": {
442
+ "type": "string"
443
+ },
444
+ "aria-label": {
445
+ "type": "string"
446
+ }
447
+ },
448
+ "events": {
449
+ "change": "onValueChange"
450
+ }
451
+ },
452
+ "RadioGroupItem": {
453
+ "props": {
454
+ "value": {
455
+ "type": "string",
456
+ "required": true
457
+ },
458
+ "id": {
459
+ "type": "string"
460
+ },
461
+ "disabled": {
462
+ "type": "boolean"
463
+ },
464
+ "aria-label": {
465
+ "type": "string"
466
+ }
467
+ }
468
+ },
469
+ "Slider": {
470
+ "props": {
471
+ "defaultValue": {
472
+ "type": "array"
473
+ },
474
+ "min": {
475
+ "type": "number"
476
+ },
477
+ "max": {
478
+ "type": "number"
479
+ },
480
+ "step": {
481
+ "type": "number"
482
+ },
483
+ "aria-label": {
484
+ "type": "string"
485
+ }
486
+ },
487
+ "events": {
488
+ "change": "onValueChange"
489
+ }
490
+ },
491
+ "Select": {
492
+ "children": true,
493
+ "summary": "Compose SelectTrigger (SelectValue) + SelectContent (SelectItem…).",
494
+ "props": {
495
+ "defaultValue": {
496
+ "type": "string"
497
+ },
498
+ "disabled": {
499
+ "type": "boolean"
500
+ }
501
+ },
502
+ "events": {
503
+ "change": "onValueChange"
504
+ }
505
+ },
506
+ "SelectTrigger": {
507
+ "children": true,
508
+ "props": {
509
+ "aria-label": {
510
+ "type": "string"
511
+ }
512
+ }
513
+ },
514
+ "SelectValue": {
515
+ "props": {
516
+ "placeholder": {
517
+ "type": "string"
518
+ }
519
+ }
520
+ },
521
+ "SelectContent": {
522
+ "children": true
523
+ },
524
+ "SelectItem": {
525
+ "children": true,
526
+ "props": {
527
+ "value": {
528
+ "type": "string",
529
+ "required": true
530
+ },
531
+ "disabled": {
532
+ "type": "boolean"
533
+ }
534
+ }
535
+ },
536
+ "Collapsible": {
537
+ "children": true,
538
+ "props": {
539
+ "defaultOpen": {
540
+ "type": "boolean"
541
+ }
542
+ },
543
+ "events": {
544
+ "change": "onOpenChange"
545
+ }
546
+ },
547
+ "CollapsibleTrigger": {
548
+ "children": true,
549
+ "props": {
550
+ "asChild": {
551
+ "type": "boolean"
552
+ }
553
+ }
554
+ },
555
+ "CollapsibleContent": {
556
+ "children": true
557
+ },
558
+ "BentoGrid": {
559
+ "children": true,
560
+ "summary": "Feature/bento grid; children are BentoGridItem."
561
+ },
562
+ "BentoGridItem": {
563
+ "children": true,
564
+ "props": {
565
+ "size": {
566
+ "enum": ["sm", "md", "lg", "hero"]
567
+ }
568
+ }
569
+ },
570
+ "AutoChart": {
571
+ "package": "@elabs-ai/components-charts",
572
+ "summary": "ONE chart from a serializable ChartSpec — AutoChart picks the mark when `type` is omitted. The chart the agent should reach for.",
573
+ "props": {
574
+ "spec": {
575
+ "type": "object",
576
+ "required": true,
577
+ "description": "{ data: row[], x: string, series: string[] | { key, label?, axis?: left|right, mark?: line|area|column }[] (type: \"dual-axis\" only: default axis left, mark line; needs ≥1 line series, no right-axis columns), type?: line|area|bar|pie|scatter|radar|funnel|candlestick|heatmap|calendar|waterfall|dumbbell|unit|treemap|histogram|box|strip|bump|stream|diverging-bar|dual-axis, xType?: time|category|number, y2?, axes?: { y2?: { align?: independent|ticks, proportional?: boolean, zero?: both|auto } } (type: \"dual-axis\" only, right axis vs left; default align ticks, zero auto), group?, title?, description?, stacked?: boolean|percent|diverging, orientation?: vertical|horizontal, donut?, legend?: boolean (an object form exists; AutoChart reads it as boolean truthy today), valueFormat?: number|compact|currency|percent, currency?, palette?: mono|sequential|categorical, emphasis?: analytical|editorial, kind?: steps|records|ranking|change (change: a two-measure spec reads as a before/after move, for dumbbell), nulls?: gap|zero|connect (line/area/stream non-numeric sample, default gap), curve?: linear|monotone|natural|step|step-before|step-after (line/area/stream, default monotone), symbols?: { placement?: all|ends|first|last, shape?: circle|square|triangle|diamond|cross|star|plus|hexagon, style?: filled|hollow, size? } (line/area/stream point markers), size?: { key, range?: [lo,hi] } (scatter bubble size), shapeBy?: { key, shapes?: marker-shape[] } (scatter shape by category), trend?: linear|log (scatter trend line), shapes?: [{ kind: line|path, … }] (scatter reference lines/areas), variant?: dumbbell|slope|arrow|dots (dumbbell only, default dumbbell), delta?: { show, mode: absolute|percent } (dumbbell delta label), groupSmall?: { threshold?, max?, label? } (pie: fold small slices into an Other slice), half?: boolean (pie half-donut, default false), labels?: { series?: end|key|none, values?: { placement: first|last|all|peaks, count?, minGap?, outline?, matchColor?, format? }, points?: { key, mode?: auto|all, priorityKey? }, slices?: { placement?: inside|outside|none, show: (label|value|percent)[], matchColor?, minAngle? }, comparison?: value|difference|none } (label engine), annotations?: [{ kind: text|range|line|row, … }] (notes, bands, reference lines, row notes in data units), divergingCenter?: string (neutral series when stacked is diverging), sort?: asc|desc|none|{by,dir} (bar) | start|end|delta|deltaPercent|data|label|none (dumbbell) | desc|none (pie) | data|increasesFirst|decreasesFirst (waterfall, default data), groupBy?: string (bar/dumbbell row grouping; waterfall: a subtotal after each group), colorBy?: { key, scale?: categorical|sequential|diverging, steps? } (bar per-bar / scatter per-point colour), overlays?: [{ kind: value|range, … }] (bar value markers, range spans), comparison?: { key, label? } (bar muted prior-period column), notes?: string (italic notes under an enclosing ChartFrame), byline?: { kind?: chart|map|table, author } (ChartFrame footer: kind + author), source?: string | { name, href? } (ChartFrame footer attribution), altText?: string (image text alternative, default: description), tooltip?: { variant?: rows|table|inline, focus?: boolean, pin?: boolean } (forwarded to ChartTooltip, default rows), facet?: { by: string | { series: true }, columns?, scales?: { y?: shared|independent, rangeRounding? }, sort?: start|end|delta|deltaPercent|range|title|data, baseline?: { key } | { series }, panelHeight? } (line/area/bar/pie small multiples), dataFormat?: differences|runningTotals (waterfall only, default differences), zoomToDifferences?: boolean (waterfall only, default false) }"
578
+ },
579
+ "height": {
580
+ "type": "number",
581
+ "description": "Pixels; omit for the default."
582
+ },
583
+ "loading": {
584
+ "type": "boolean"
585
+ }
586
+ },
587
+ "events": {
588
+ "datapointClick": "onDatapointClick"
589
+ },
590
+ "omit": ["copyValueOnActivate", "dimExcluded"]
591
+ },
592
+ "ChartCard": {
593
+ "package": "@elabs-ai/components-charts",
594
+ "children": true,
595
+ "summary": "A titled card around a chart: title, description, source line; put an AutoChart inside.",
596
+ "props": {
597
+ "title": {
598
+ "type": "node",
599
+ "required": true
600
+ },
601
+ "description": {
602
+ "type": "node"
603
+ },
604
+ "actions": {
605
+ "type": "node"
606
+ },
607
+ "source": {
608
+ "type": "node",
609
+ "description": "Where the numbers come from — always state it."
610
+ },
611
+ "height": {
612
+ "type": "number"
613
+ },
614
+ "loading": {
615
+ "type": "boolean"
616
+ }
617
+ },
618
+ "omit": ["titleAs"]
619
+ },
620
+ "MetricGrid": {
621
+ "package": "@elabs-ai/components-charts",
622
+ "children": true,
623
+ "summary": "The KPI summary row: 2–4 MetricCards, optionally one featured (wider).",
624
+ "props": {
625
+ "columns": {
626
+ "enum": [2, 3, 4]
627
+ },
628
+ "featured": {
629
+ "type": "number",
630
+ "description": "Index of the tile to feature (0-based)."
631
+ },
632
+ "featuredSpan": {
633
+ "enum": [2, 3]
634
+ },
635
+ "reveal": {
636
+ "type": "boolean"
637
+ },
638
+ "loading": {
639
+ "type": "boolean"
640
+ }
641
+ }
642
+ },
643
+ "Sparkline": {
644
+ "package": "@elabs-ai/components-charts",
645
+ "summary": "A tiny trend (bar or line) with an optional target line and normal band — inside a MetricCard or a table cell.",
646
+ "props": {
647
+ "values": {
648
+ "type": "array",
649
+ "required": true,
650
+ "description": "Numbers, oldest first."
651
+ },
652
+ "variant": {
653
+ "enum": ["bar", "line"]
654
+ },
655
+ "label": {
656
+ "type": "string",
657
+ "description": "Accessible name — say what the series is."
658
+ },
659
+ "target": {
660
+ "type": "number"
661
+ },
662
+ "band": {
663
+ "type": "array",
664
+ "description": "[low, high] — the normal range, shaded."
665
+ },
666
+ "showLastValue": {
667
+ "type": "boolean"
668
+ },
669
+ "emphasizeLast": {
670
+ "type": "boolean"
671
+ },
672
+ "width": {
673
+ "type": "number"
674
+ },
675
+ "height": {
676
+ "type": "number"
677
+ },
678
+ "fit": {
679
+ "enum": ["fixed", "fill"]
680
+ },
681
+ "lastValueSuffix": {
682
+ "type": "string"
683
+ }
684
+ }
685
+ },
686
+ "BulletChart": {
687
+ "package": "@elabs-ai/components-charts",
688
+ "summary": "Actual vs target inside qualitative bands — the honest 'am I on target?' mark.",
689
+ "props": {
690
+ "value": {
691
+ "type": "number",
692
+ "required": true
693
+ },
694
+ "target": {
695
+ "type": "number"
696
+ },
697
+ "comparative": {
698
+ "type": "number",
699
+ "description": "A second reference, e.g. last year."
700
+ },
701
+ "bands": {
702
+ "type": "array",
703
+ "description": "[{ to: number, label?: string }] ascending."
704
+ },
705
+ "min": {
706
+ "type": "number"
707
+ },
708
+ "max": {
709
+ "type": "number"
710
+ },
711
+ "orientation": {
712
+ "enum": ["horizontal", "vertical"]
713
+ },
714
+ "size": {
715
+ "enum": ["sm", "md"]
716
+ },
717
+ "showAxis": {
718
+ "type": "boolean"
719
+ },
720
+ "valueFormat": {
721
+ "enum": ["number", "compact", "currency", "percent"]
722
+ },
723
+ "higherIsBetter": {
724
+ "type": "boolean"
725
+ },
726
+ "accessibleLabel": {
727
+ "type": "string"
728
+ }
729
+ }
730
+ },
731
+ "Gauge": {
732
+ "package": "@elabs-ai/components-charts",
733
+ "summary": "A notched gauge for one value against a scale, with optional target and milestones.",
734
+ "props": {
735
+ "value": {
736
+ "type": "number",
737
+ "required": true,
738
+ "description": "0–100 share of the scale."
739
+ },
740
+ "centerValue": {
741
+ "type": "number",
742
+ "required": true,
743
+ "description": "The figure shown in the middle."
744
+ },
745
+ "defaultLabel": {
746
+ "type": "string"
747
+ },
748
+ "prefix": {
749
+ "type": "string"
750
+ },
751
+ "suffix": {
752
+ "type": "string"
753
+ },
754
+ "target": {
755
+ "type": "number"
756
+ },
757
+ "milestones": {
758
+ "type": "array"
759
+ },
760
+ "width": {
761
+ "type": "number"
762
+ },
763
+ "height": {
764
+ "type": "number"
765
+ },
766
+ "accessibleLabel": {
767
+ "type": "string"
768
+ }
769
+ }
770
+ }
771
+ }
772
+ }