@adea-ai/ui 0.140.0 → 0.142.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 (455) hide show
  1. package/dist/components/composites/appearance-editor/appearance-editor.js +2 -2
  2. package/dist/components/composites/appearance-editor/appearance-editor.js.map +1 -1
  3. package/dist/components/composites/catalog-browser/catalog-browser-group.js +1 -1
  4. package/dist/components/composites/chain-of-thought/chain-of-thought.d.ts +56 -0
  5. package/dist/components/composites/chain-of-thought/chain-of-thought.d.ts.map +1 -0
  6. package/dist/components/composites/chain-of-thought/chain-of-thought.js +117 -0
  7. package/dist/components/composites/chain-of-thought/chain-of-thought.js.map +1 -0
  8. package/dist/components/composites/chain-of-thought/index.d.ts +2 -0
  9. package/dist/components/composites/chain-of-thought/index.d.ts.map +1 -0
  10. package/dist/components/composites/chain-of-thought/index.js +2 -0
  11. package/dist/components/composites/chat/chat.d.ts +67 -0
  12. package/dist/components/composites/chat/chat.d.ts.map +1 -0
  13. package/dist/components/composites/chat/chat.js +179 -0
  14. package/dist/components/composites/chat/chat.js.map +1 -0
  15. package/dist/components/composites/chat/index.d.ts +2 -0
  16. package/dist/components/composites/chat/index.d.ts.map +1 -0
  17. package/dist/components/composites/chat/index.js +2 -0
  18. package/dist/components/composites/checkpoint/checkpoint-model.d.ts +34 -0
  19. package/dist/components/composites/checkpoint/checkpoint-model.d.ts.map +1 -0
  20. package/dist/components/composites/checkpoint/checkpoint-model.js +48 -0
  21. package/dist/components/composites/checkpoint/checkpoint-model.js.map +1 -0
  22. package/dist/components/composites/checkpoint/checkpoint.d.ts +48 -0
  23. package/dist/components/composites/checkpoint/checkpoint.d.ts.map +1 -0
  24. package/dist/components/composites/checkpoint/checkpoint.js +160 -0
  25. package/dist/components/composites/checkpoint/checkpoint.js.map +1 -0
  26. package/dist/components/composites/checkpoint/index.d.ts +3 -0
  27. package/dist/components/composites/checkpoint/index.d.ts.map +1 -0
  28. package/dist/components/composites/checkpoint/index.js +3 -0
  29. package/dist/components/composites/confirmation/confirmation-model.d.ts +45 -0
  30. package/dist/components/composites/confirmation/confirmation-model.d.ts.map +1 -0
  31. package/dist/components/composites/confirmation/confirmation-model.js +51 -0
  32. package/dist/components/composites/confirmation/confirmation-model.js.map +1 -0
  33. package/dist/components/composites/confirmation/confirmation.d.ts +72 -0
  34. package/dist/components/composites/confirmation/confirmation.d.ts.map +1 -0
  35. package/dist/components/composites/confirmation/confirmation.js +300 -0
  36. package/dist/components/composites/confirmation/confirmation.js.map +1 -0
  37. package/dist/components/composites/confirmation/index.d.ts +3 -0
  38. package/dist/components/composites/confirmation/index.d.ts.map +1 -0
  39. package/dist/components/composites/confirmation/index.js +3 -0
  40. package/dist/components/composites/context/context-model.d.ts +69 -0
  41. package/dist/components/composites/context/context-model.d.ts.map +1 -0
  42. package/dist/components/composites/context/context-model.js +122 -0
  43. package/dist/components/composites/context/context-model.js.map +1 -0
  44. package/dist/components/composites/context/context.d.ts +38 -0
  45. package/dist/components/composites/context/context.d.ts.map +1 -0
  46. package/dist/components/composites/context/context.js +234 -0
  47. package/dist/components/composites/context/context.js.map +1 -0
  48. package/dist/components/composites/context/index.d.ts +3 -0
  49. package/dist/components/composites/context/index.d.ts.map +1 -0
  50. package/dist/components/composites/context/index.js +3 -0
  51. package/dist/components/composites/file-tree/build-file-tree.d.ts +138 -0
  52. package/dist/components/composites/file-tree/build-file-tree.d.ts.map +1 -0
  53. package/dist/components/composites/file-tree/build-file-tree.js +325 -0
  54. package/dist/components/composites/file-tree/build-file-tree.js.map +1 -0
  55. package/dist/components/composites/file-tree/file-tree.d.ts +74 -0
  56. package/dist/components/composites/file-tree/file-tree.d.ts.map +1 -0
  57. package/dist/components/composites/file-tree/file-tree.js +389 -0
  58. package/dist/components/composites/file-tree/file-tree.js.map +1 -0
  59. package/dist/components/composites/file-tree/index.d.ts +3 -0
  60. package/dist/components/composites/file-tree/index.d.ts.map +1 -0
  61. package/dist/components/composites/file-tree/index.js +3 -0
  62. package/dist/components/composites/inline-citation/citation.d.ts +37 -0
  63. package/dist/components/composites/inline-citation/citation.d.ts.map +1 -0
  64. package/dist/components/composites/inline-citation/citation.js +52 -0
  65. package/dist/components/composites/inline-citation/citation.js.map +1 -0
  66. package/dist/components/composites/inline-citation/index.d.ts +3 -0
  67. package/dist/components/composites/inline-citation/index.d.ts.map +1 -0
  68. package/dist/components/composites/inline-citation/index.js +3 -0
  69. package/dist/components/composites/inline-citation/inline-citation.d.ts +64 -0
  70. package/dist/components/composites/inline-citation/inline-citation.d.ts.map +1 -0
  71. package/dist/components/composites/inline-citation/inline-citation.js +272 -0
  72. package/dist/components/composites/inline-citation/inline-citation.js.map +1 -0
  73. package/dist/components/composites/message-scroller/index.d.ts +3 -0
  74. package/dist/components/composites/message-scroller/index.d.ts.map +1 -0
  75. package/dist/components/composites/message-scroller/index.js +3 -0
  76. package/dist/components/composites/message-scroller/message-scroller.d.ts +55 -0
  77. package/dist/components/composites/message-scroller/message-scroller.d.ts.map +1 -0
  78. package/dist/components/composites/message-scroller/message-scroller.js +201 -0
  79. package/dist/components/composites/message-scroller/message-scroller.js.map +1 -0
  80. package/dist/components/composites/message-scroller/scroll-anchor.d.ts +66 -0
  81. package/dist/components/composites/message-scroller/scroll-anchor.d.ts.map +1 -0
  82. package/dist/components/composites/message-scroller/scroll-anchor.js +122 -0
  83. package/dist/components/composites/message-scroller/scroll-anchor.js.map +1 -0
  84. package/dist/components/composites/model-selector/index.d.ts +3 -0
  85. package/dist/components/composites/model-selector/index.d.ts.map +1 -0
  86. package/dist/components/composites/model-selector/index.js +3 -0
  87. package/dist/components/composites/model-selector/model-selector.d.ts +55 -0
  88. package/dist/components/composites/model-selector/model-selector.d.ts.map +1 -0
  89. package/dist/components/composites/model-selector/model-selector.js +490 -0
  90. package/dist/components/composites/model-selector/model-selector.js.map +1 -0
  91. package/dist/components/composites/model-selector/models.d.ts +51 -0
  92. package/dist/components/composites/model-selector/models.d.ts.map +1 -0
  93. package/dist/components/composites/model-selector/models.js +71 -0
  94. package/dist/components/composites/model-selector/models.js.map +1 -0
  95. package/dist/components/composites/plan/index.d.ts +2 -0
  96. package/dist/components/composites/plan/index.d.ts.map +1 -0
  97. package/dist/components/composites/plan/index.js +2 -0
  98. package/dist/components/composites/plan/plan.d.ts +61 -0
  99. package/dist/components/composites/plan/plan.d.ts.map +1 -0
  100. package/dist/components/composites/plan/plan.js +130 -0
  101. package/dist/components/composites/plan/plan.js.map +1 -0
  102. package/dist/components/composites/queue/index.d.ts +2 -0
  103. package/dist/components/composites/queue/index.d.ts.map +1 -0
  104. package/dist/components/composites/queue/index.js +2 -0
  105. package/dist/components/composites/queue/queue.d.ts +77 -0
  106. package/dist/components/composites/queue/queue.d.ts.map +1 -0
  107. package/dist/components/composites/queue/queue.js +271 -0
  108. package/dist/components/composites/queue/queue.js.map +1 -0
  109. package/dist/components/composites/reasoning/index.d.ts +2 -0
  110. package/dist/components/composites/reasoning/index.d.ts.map +1 -0
  111. package/dist/components/composites/reasoning/index.js +2 -0
  112. package/dist/components/composites/reasoning/reasoning.d.ts +62 -0
  113. package/dist/components/composites/reasoning/reasoning.d.ts.map +1 -0
  114. package/dist/components/composites/reasoning/reasoning.js +156 -0
  115. package/dist/components/composites/reasoning/reasoning.js.map +1 -0
  116. package/dist/components/composites/sources/index.d.ts +3 -0
  117. package/dist/components/composites/sources/index.d.ts.map +1 -0
  118. package/dist/components/composites/sources/index.js +3 -0
  119. package/dist/components/composites/sources/source.d.ts +46 -0
  120. package/dist/components/composites/sources/source.d.ts.map +1 -0
  121. package/dist/components/composites/sources/source.js +74 -0
  122. package/dist/components/composites/sources/source.js.map +1 -0
  123. package/dist/components/composites/sources/sources.d.ts +45 -0
  124. package/dist/components/composites/sources/sources.d.ts.map +1 -0
  125. package/dist/components/composites/sources/sources.js +175 -0
  126. package/dist/components/composites/sources/sources.js.map +1 -0
  127. package/dist/components/composites/stack-trace/index.d.ts +3 -0
  128. package/dist/components/composites/stack-trace/index.d.ts.map +1 -0
  129. package/dist/components/composites/stack-trace/index.js +3 -0
  130. package/dist/components/composites/stack-trace/parse-stack-trace.d.ts +118 -0
  131. package/dist/components/composites/stack-trace/parse-stack-trace.d.ts.map +1 -0
  132. package/dist/components/composites/stack-trace/parse-stack-trace.js +376 -0
  133. package/dist/components/composites/stack-trace/parse-stack-trace.js.map +1 -0
  134. package/dist/components/composites/stack-trace/stack-trace.d.ts +63 -0
  135. package/dist/components/composites/stack-trace/stack-trace.d.ts.map +1 -0
  136. package/dist/components/composites/stack-trace/stack-trace.js +491 -0
  137. package/dist/components/composites/stack-trace/stack-trace.js.map +1 -0
  138. package/dist/components/composites/subagent/index.d.ts +2 -0
  139. package/dist/components/composites/subagent/index.d.ts.map +1 -0
  140. package/dist/components/composites/subagent/index.js +2 -0
  141. package/dist/components/composites/subagent/subagent.d.ts +55 -0
  142. package/dist/components/composites/subagent/subagent.d.ts.map +1 -0
  143. package/dist/components/composites/subagent/subagent.js +138 -0
  144. package/dist/components/composites/subagent/subagent.js.map +1 -0
  145. package/dist/components/composites/suggestion/index.d.ts +2 -0
  146. package/dist/components/composites/suggestion/index.d.ts.map +1 -0
  147. package/dist/components/composites/suggestion/index.js +2 -0
  148. package/dist/components/composites/suggestion/suggestion.d.ts +37 -0
  149. package/dist/components/composites/suggestion/suggestion.d.ts.map +1 -0
  150. package/dist/components/composites/suggestion/suggestion.js +100 -0
  151. package/dist/components/composites/suggestion/suggestion.js.map +1 -0
  152. package/dist/components/composites/task/index.d.ts +2 -0
  153. package/dist/components/composites/task/index.d.ts.map +1 -0
  154. package/dist/components/composites/task/index.js +2 -0
  155. package/dist/components/composites/task/task.d.ts +96 -0
  156. package/dist/components/composites/task/task.d.ts.map +1 -0
  157. package/dist/components/composites/task/task.js +311 -0
  158. package/dist/components/composites/task/task.js.map +1 -0
  159. package/dist/components/composites/terminal/ansi.d.ts +101 -0
  160. package/dist/components/composites/terminal/ansi.d.ts.map +1 -0
  161. package/dist/components/composites/terminal/ansi.js +544 -0
  162. package/dist/components/composites/terminal/ansi.js.map +1 -0
  163. package/dist/components/composites/terminal/index.d.ts +4 -0
  164. package/dist/components/composites/terminal/index.d.ts.map +1 -0
  165. package/dist/components/composites/terminal/index.js +4 -0
  166. package/dist/components/composites/terminal/terminal-model.d.ts +63 -0
  167. package/dist/components/composites/terminal/terminal-model.d.ts.map +1 -0
  168. package/dist/components/composites/terminal/terminal-model.js +69 -0
  169. package/dist/components/composites/terminal/terminal-model.js.map +1 -0
  170. package/dist/components/composites/terminal/terminal.d.ts +88 -0
  171. package/dist/components/composites/terminal/terminal.d.ts.map +1 -0
  172. package/dist/components/composites/terminal/terminal.js +500 -0
  173. package/dist/components/composites/terminal/terminal.js.map +1 -0
  174. package/dist/components/composites/test-results/index.d.ts +3 -0
  175. package/dist/components/composites/test-results/index.d.ts.map +1 -0
  176. package/dist/components/composites/test-results/index.js +3 -0
  177. package/dist/components/composites/test-results/test-results-model.d.ts +154 -0
  178. package/dist/components/composites/test-results/test-results-model.d.ts.map +1 -0
  179. package/dist/components/composites/test-results/test-results-model.js +252 -0
  180. package/dist/components/composites/test-results/test-results-model.js.map +1 -0
  181. package/dist/components/composites/test-results/test-results.d.ts +60 -0
  182. package/dist/components/composites/test-results/test-results.d.ts.map +1 -0
  183. package/dist/components/composites/test-results/test-results.js +631 -0
  184. package/dist/components/composites/test-results/test-results.js.map +1 -0
  185. package/dist/components/composites/tool/format-tool-value.d.ts +37 -0
  186. package/dist/components/composites/tool/format-tool-value.d.ts.map +1 -0
  187. package/dist/components/composites/tool/format-tool-value.js +135 -0
  188. package/dist/components/composites/tool/format-tool-value.js.map +1 -0
  189. package/dist/components/composites/tool/index.d.ts +3 -0
  190. package/dist/components/composites/tool/index.d.ts.map +1 -0
  191. package/dist/components/composites/tool/index.js +3 -0
  192. package/dist/components/composites/tool/tool.d.ts +69 -0
  193. package/dist/components/composites/tool/tool.d.ts.map +1 -0
  194. package/dist/components/composites/tool/tool.js +214 -0
  195. package/dist/components/composites/tool/tool.js.map +1 -0
  196. package/dist/components/composites/update-dialog/update-dialog.js +1 -1
  197. package/dist/components/conversation/conversation-surface.d.ts +7 -0
  198. package/dist/components/conversation/conversation-surface.d.ts.map +1 -1
  199. package/dist/components/conversation/conversation-surface.js +2 -0
  200. package/dist/components/conversation/conversation-surface.js.map +1 -1
  201. package/dist/components/conversation/scroll-follow-core.d.ts +24 -0
  202. package/dist/components/conversation/scroll-follow-core.d.ts.map +1 -1
  203. package/dist/components/conversation/scroll-follow-core.js +23 -1
  204. package/dist/components/conversation/scroll-follow-core.js.map +1 -1
  205. package/dist/components/conversation/scroll-follow.d.ts +3 -0
  206. package/dist/components/conversation/scroll-follow.d.ts.map +1 -1
  207. package/dist/components/conversation/scroll-follow.js +80 -1
  208. package/dist/components/conversation/scroll-follow.js.map +1 -1
  209. package/dist/components/ui/attachment/attachment.d.ts +58 -0
  210. package/dist/components/ui/attachment/attachment.d.ts.map +1 -0
  211. package/dist/components/ui/attachment/attachment.js +279 -0
  212. package/dist/components/ui/attachment/attachment.js.map +1 -0
  213. package/dist/components/ui/attachment/index.d.ts +2 -0
  214. package/dist/components/ui/attachment/index.d.ts.map +1 -0
  215. package/dist/components/ui/attachment/index.js +2 -0
  216. package/dist/components/ui/badge/badge.d.ts +1 -1
  217. package/dist/components/ui/bubble/bubble.d.ts +33 -0
  218. package/dist/components/ui/bubble/bubble.d.ts.map +1 -0
  219. package/dist/components/ui/bubble/bubble.js +95 -0
  220. package/dist/components/ui/bubble/bubble.js.map +1 -0
  221. package/dist/components/ui/bubble/index.d.ts +2 -0
  222. package/dist/components/ui/bubble/index.d.ts.map +1 -0
  223. package/dist/components/ui/bubble/index.js +2 -0
  224. package/dist/components/ui/button/button.d.ts +1 -1
  225. package/dist/components/ui/code-block/code-block.d.ts +56 -3
  226. package/dist/components/ui/code-block/code-block.d.ts.map +1 -1
  227. package/dist/components/ui/code-block/code-block.js +231 -50
  228. package/dist/components/ui/code-block/code-block.js.map +1 -1
  229. package/dist/components/ui/code-block/index.d.ts +1 -1
  230. package/dist/components/ui/code-block/index.d.ts.map +1 -1
  231. package/dist/components/ui/code-block/index.js +2 -2
  232. package/dist/components/ui/field/number-field.d.ts +21 -4
  233. package/dist/components/ui/field/number-field.d.ts.map +1 -1
  234. package/dist/components/ui/field/number-field.js +22 -11
  235. package/dist/components/ui/field/number-field.js.map +1 -1
  236. package/dist/components/ui/marker/index.d.ts +2 -0
  237. package/dist/components/ui/marker/index.d.ts.map +1 -0
  238. package/dist/components/ui/marker/index.js +2 -0
  239. package/dist/components/ui/marker/marker.d.ts +35 -0
  240. package/dist/components/ui/marker/marker.d.ts.map +1 -0
  241. package/dist/components/ui/marker/marker.js +123 -0
  242. package/dist/components/ui/marker/marker.js.map +1 -0
  243. package/dist/components/ui/message/cite-ranges.d.ts +42 -0
  244. package/dist/components/ui/message/cite-ranges.d.ts.map +1 -0
  245. package/dist/components/ui/message/cite-ranges.js +105 -0
  246. package/dist/components/ui/message/cite-ranges.js.map +1 -0
  247. package/dist/components/ui/message/index.d.ts +4 -0
  248. package/dist/components/ui/message/index.d.ts.map +1 -0
  249. package/dist/components/ui/message/index.js +4 -0
  250. package/dist/components/ui/message/message.d.ts +95 -0
  251. package/dist/components/ui/message/message.d.ts.map +1 -0
  252. package/dist/components/ui/message/message.js +443 -0
  253. package/dist/components/ui/message/message.js.map +1 -0
  254. package/dist/components/ui/message/parse-message-text.d.ts +93 -0
  255. package/dist/components/ui/message/parse-message-text.d.ts.map +1 -0
  256. package/dist/components/ui/message/parse-message-text.js +365 -0
  257. package/dist/components/ui/message/parse-message-text.js.map +1 -0
  258. package/dist/components/ui/questionnaire/index.d.ts +2 -0
  259. package/dist/components/ui/questionnaire/index.d.ts.map +1 -0
  260. package/dist/components/ui/questionnaire/index.js +2 -0
  261. package/dist/components/ui/questionnaire/questionnaire.d.ts +83 -0
  262. package/dist/components/ui/questionnaire/questionnaire.d.ts.map +1 -0
  263. package/dist/components/ui/questionnaire/questionnaire.js +470 -0
  264. package/dist/components/ui/questionnaire/questionnaire.js.map +1 -0
  265. package/dist/components/ui/status-chip/status-chip.d.ts +1 -1
  266. package/dist/components/ui/switch/switch.js +11 -11
  267. package/dist/components/ui/switch/switch.js.map +1 -1
  268. package/dist/components/ui/trace/index.d.ts +2 -0
  269. package/dist/components/ui/trace/index.d.ts.map +1 -0
  270. package/dist/components/ui/trace/index.js +2 -0
  271. package/dist/components/ui/trace/trace.d.ts +72 -0
  272. package/dist/components/ui/trace/trace.d.ts.map +1 -0
  273. package/dist/components/ui/trace/trace.js +340 -0
  274. package/dist/components/ui/trace/trace.js.map +1 -0
  275. package/dist/index.d.ts +26 -0
  276. package/dist/index.d.ts.map +1 -1
  277. package/dist/index.js +46 -5
  278. package/dist/r/attachment.json +25 -0
  279. package/dist/r/bubble.json +22 -0
  280. package/dist/r/chain-of-thought.json +26 -0
  281. package/dist/r/chat.json +24 -0
  282. package/dist/r/checkpoint.json +35 -0
  283. package/dist/r/confirmation.json +34 -0
  284. package/dist/r/context.json +33 -0
  285. package/dist/r/file-tree.json +32 -0
  286. package/dist/r/inline-citation.json +35 -0
  287. package/dist/r/marker.json +22 -0
  288. package/dist/r/message-scroller.json +31 -0
  289. package/dist/r/message.json +33 -0
  290. package/dist/r/model-selector.json +34 -0
  291. package/dist/r/plan.json +26 -0
  292. package/dist/r/questionnaire.json +28 -0
  293. package/dist/r/queue.json +26 -0
  294. package/dist/r/reasoning.json +26 -0
  295. package/dist/r/registry.json +811 -52
  296. package/dist/r/sources.json +32 -0
  297. package/dist/r/src/components/composites/chain-of-thought/chain-of-thought.tsx +141 -0
  298. package/dist/r/src/components/composites/chain-of-thought/index.ts +11 -0
  299. package/dist/r/src/components/composites/chat/chat.tsx +190 -0
  300. package/dist/r/src/components/composites/chat/index.ts +11 -0
  301. package/dist/r/src/components/composites/checkpoint/checkpoint-model.ts +71 -0
  302. package/dist/r/src/components/composites/checkpoint/checkpoint.tsx +214 -0
  303. package/dist/r/src/components/composites/checkpoint/index.ts +8 -0
  304. package/dist/r/src/components/composites/confirmation/confirmation-model.ts +83 -0
  305. package/dist/r/src/components/composites/confirmation/confirmation.tsx +311 -0
  306. package/dist/r/src/components/composites/confirmation/index.ts +9 -0
  307. package/dist/r/src/components/composites/context/context-model.ts +168 -0
  308. package/dist/r/src/components/composites/context/context.tsx +187 -0
  309. package/dist/r/src/components/composites/context/index.ts +18 -0
  310. package/dist/r/src/components/composites/file-tree/build-file-tree.ts +456 -0
  311. package/dist/r/src/components/composites/file-tree/file-tree.tsx +405 -0
  312. package/dist/r/src/components/composites/file-tree/index.ts +25 -0
  313. package/dist/r/src/components/composites/inline-citation/citation.ts +78 -0
  314. package/dist/r/src/components/composites/inline-citation/index.ts +9 -0
  315. package/dist/r/src/components/composites/inline-citation/inline-citation.tsx +285 -0
  316. package/dist/r/src/components/composites/message-scroller/index.ts +2 -0
  317. package/dist/r/src/components/composites/message-scroller/message-scroller.tsx +301 -0
  318. package/dist/r/src/components/composites/message-scroller/scroll-anchor.ts +170 -0
  319. package/dist/r/src/components/composites/model-selector/index.ts +14 -0
  320. package/dist/r/src/components/composites/model-selector/model-selector.tsx +420 -0
  321. package/dist/r/src/components/composites/model-selector/models.ts +103 -0
  322. package/dist/r/src/components/composites/plan/index.ts +1 -0
  323. package/dist/r/src/components/composites/plan/plan.tsx +155 -0
  324. package/dist/r/src/components/composites/queue/index.ts +10 -0
  325. package/dist/r/src/components/composites/queue/queue.tsx +264 -0
  326. package/dist/r/src/components/composites/reasoning/index.ts +1 -0
  327. package/dist/r/src/components/composites/reasoning/reasoning.tsx +176 -0
  328. package/dist/r/src/components/composites/sources/index.ts +11 -0
  329. package/dist/r/src/components/composites/sources/source.ts +116 -0
  330. package/dist/r/src/components/composites/sources/sources.tsx +163 -0
  331. package/dist/r/src/components/composites/stack-trace/index.ts +19 -0
  332. package/dist/r/src/components/composites/stack-trace/parse-stack-trace.ts +507 -0
  333. package/dist/r/src/components/composites/stack-trace/stack-trace.tsx +395 -0
  334. package/dist/r/src/components/composites/subagent/index.ts +1 -0
  335. package/dist/r/src/components/composites/subagent/subagent.tsx +159 -0
  336. package/dist/r/src/components/composites/suggestion/index.ts +1 -0
  337. package/dist/r/src/components/composites/suggestion/suggestion.tsx +140 -0
  338. package/dist/r/src/components/composites/task/index.ts +14 -0
  339. package/dist/r/src/components/composites/task/task.tsx +317 -0
  340. package/dist/r/src/components/composites/terminal/ansi.ts +674 -0
  341. package/dist/r/src/components/composites/terminal/index.ts +20 -0
  342. package/dist/r/src/components/composites/terminal/terminal-model.ts +111 -0
  343. package/dist/r/src/components/composites/terminal/terminal.tsx +574 -0
  344. package/dist/r/src/components/composites/test-results/index.ts +20 -0
  345. package/dist/r/src/components/composites/test-results/test-results-model.ts +368 -0
  346. package/dist/r/src/components/composites/test-results/test-results.tsx +586 -0
  347. package/dist/r/src/components/composites/tool/format-tool-value.ts +221 -0
  348. package/dist/r/src/components/composites/tool/index.ts +2 -0
  349. package/dist/r/src/components/composites/tool/tool.tsx +228 -0
  350. package/dist/r/src/components/conversation/conversation-surface.tsx +9 -0
  351. package/dist/r/src/components/conversation/scroll-follow-core.ts +31 -0
  352. package/dist/r/src/components/conversation/scroll-follow.ts +92 -0
  353. package/dist/r/src/components/ui/attachment/attachment.tsx +282 -0
  354. package/dist/r/src/components/ui/attachment/index.ts +10 -0
  355. package/dist/r/src/components/ui/bubble/bubble.tsx +86 -0
  356. package/dist/r/src/components/ui/bubble/index.ts +1 -0
  357. package/dist/r/src/components/ui/code-block/code-block.tsx +256 -26
  358. package/dist/r/src/components/ui/code-block/index.ts +9 -1
  359. package/dist/r/src/components/ui/field/number-field.tsx +51 -14
  360. package/dist/r/src/components/ui/marker/index.ts +1 -0
  361. package/dist/r/src/components/ui/marker/marker.tsx +90 -0
  362. package/dist/r/src/components/ui/message/cite-ranges.ts +144 -0
  363. package/dist/r/src/components/ui/message/index.ts +23 -0
  364. package/dist/r/src/components/ui/message/message.tsx +434 -0
  365. package/dist/r/src/components/ui/message/parse-message-text.ts +450 -0
  366. package/dist/r/src/components/ui/questionnaire/index.ts +10 -0
  367. package/dist/r/src/components/ui/questionnaire/questionnaire.tsx +446 -0
  368. package/dist/r/src/components/ui/trace/index.ts +9 -0
  369. package/dist/r/src/components/ui/trace/trace.tsx +334 -0
  370. package/dist/r/src/styles/base.css +34 -0
  371. package/dist/r/stack-trace.json +32 -0
  372. package/dist/r/subagent.json +27 -0
  373. package/dist/r/suggestion.json +24 -0
  374. package/dist/r/task.json +28 -0
  375. package/dist/r/terminal.json +35 -0
  376. package/dist/r/test-results.json +33 -0
  377. package/dist/r/tool.json +31 -0
  378. package/dist/r/trace.json +25 -0
  379. package/package.json +6 -3
  380. package/registry.json +811 -52
  381. package/src/components/composites/chain-of-thought/chain-of-thought.tsx +141 -0
  382. package/src/components/composites/chain-of-thought/index.ts +11 -0
  383. package/src/components/composites/chat/chat.tsx +190 -0
  384. package/src/components/composites/chat/index.ts +11 -0
  385. package/src/components/composites/checkpoint/checkpoint-model.ts +71 -0
  386. package/src/components/composites/checkpoint/checkpoint.tsx +214 -0
  387. package/src/components/composites/checkpoint/index.ts +8 -0
  388. package/src/components/composites/confirmation/confirmation-model.ts +83 -0
  389. package/src/components/composites/confirmation/confirmation.tsx +311 -0
  390. package/src/components/composites/confirmation/index.ts +9 -0
  391. package/src/components/composites/context/context-model.ts +168 -0
  392. package/src/components/composites/context/context.tsx +187 -0
  393. package/src/components/composites/context/index.ts +18 -0
  394. package/src/components/composites/file-tree/build-file-tree.ts +456 -0
  395. package/src/components/composites/file-tree/file-tree.tsx +405 -0
  396. package/src/components/composites/file-tree/index.ts +25 -0
  397. package/src/components/composites/inline-citation/citation.ts +78 -0
  398. package/src/components/composites/inline-citation/index.ts +9 -0
  399. package/src/components/composites/inline-citation/inline-citation.tsx +285 -0
  400. package/src/components/composites/message-scroller/index.ts +2 -0
  401. package/src/components/composites/message-scroller/message-scroller.tsx +301 -0
  402. package/src/components/composites/message-scroller/scroll-anchor.ts +170 -0
  403. package/src/components/composites/model-selector/index.ts +14 -0
  404. package/src/components/composites/model-selector/model-selector.tsx +420 -0
  405. package/src/components/composites/model-selector/models.ts +103 -0
  406. package/src/components/composites/plan/index.ts +1 -0
  407. package/src/components/composites/plan/plan.tsx +155 -0
  408. package/src/components/composites/queue/index.ts +10 -0
  409. package/src/components/composites/queue/queue.tsx +264 -0
  410. package/src/components/composites/reasoning/index.ts +1 -0
  411. package/src/components/composites/reasoning/reasoning.tsx +176 -0
  412. package/src/components/composites/sources/index.ts +11 -0
  413. package/src/components/composites/sources/source.ts +116 -0
  414. package/src/components/composites/sources/sources.tsx +163 -0
  415. package/src/components/composites/stack-trace/index.ts +19 -0
  416. package/src/components/composites/stack-trace/parse-stack-trace.ts +507 -0
  417. package/src/components/composites/stack-trace/stack-trace.tsx +395 -0
  418. package/src/components/composites/subagent/index.ts +1 -0
  419. package/src/components/composites/subagent/subagent.tsx +159 -0
  420. package/src/components/composites/suggestion/index.ts +1 -0
  421. package/src/components/composites/suggestion/suggestion.tsx +140 -0
  422. package/src/components/composites/task/index.ts +14 -0
  423. package/src/components/composites/task/task.tsx +317 -0
  424. package/src/components/composites/terminal/ansi.ts +674 -0
  425. package/src/components/composites/terminal/index.ts +20 -0
  426. package/src/components/composites/terminal/terminal-model.ts +111 -0
  427. package/src/components/composites/terminal/terminal.tsx +574 -0
  428. package/src/components/composites/test-results/index.ts +20 -0
  429. package/src/components/composites/test-results/test-results-model.ts +368 -0
  430. package/src/components/composites/test-results/test-results.tsx +586 -0
  431. package/src/components/composites/tool/format-tool-value.ts +221 -0
  432. package/src/components/composites/tool/index.ts +2 -0
  433. package/src/components/composites/tool/tool.tsx +228 -0
  434. package/src/components/conversation/conversation-surface.tsx +9 -0
  435. package/src/components/conversation/scroll-follow-core.ts +31 -0
  436. package/src/components/conversation/scroll-follow.ts +92 -0
  437. package/src/components/ui/attachment/attachment.tsx +282 -0
  438. package/src/components/ui/attachment/index.ts +10 -0
  439. package/src/components/ui/bubble/bubble.tsx +86 -0
  440. package/src/components/ui/bubble/index.ts +1 -0
  441. package/src/components/ui/code-block/code-block.tsx +256 -26
  442. package/src/components/ui/code-block/index.ts +9 -1
  443. package/src/components/ui/field/number-field.tsx +51 -14
  444. package/src/components/ui/marker/index.ts +1 -0
  445. package/src/components/ui/marker/marker.tsx +90 -0
  446. package/src/components/ui/message/cite-ranges.ts +144 -0
  447. package/src/components/ui/message/index.ts +23 -0
  448. package/src/components/ui/message/message.tsx +434 -0
  449. package/src/components/ui/message/parse-message-text.ts +450 -0
  450. package/src/components/ui/questionnaire/index.ts +10 -0
  451. package/src/components/ui/questionnaire/questionnaire.tsx +446 -0
  452. package/src/components/ui/trace/index.ts +9 -0
  453. package/src/components/ui/trace/trace.tsx +334 -0
  454. package/src/index.ts +26 -0
  455. package/src/styles/base.css +34 -0
@@ -0,0 +1,470 @@
1
+ import { cn } from "../../../lib/utils.js";
2
+ import { Button } from "../button/button.js";
3
+ import { Checkbox } from "../checkbox/checkbox.js";
4
+ import { RadioGroup, RadioGroupItem } from "../radio-group/radio-group.js";
5
+ import { Textarea } from "../textarea/textarea.js";
6
+ import { createComponent, delegateEvents, effect, insert, memo, mergeProps, setAttribute, spread, template, use } from "solid-js/web";
7
+ import { Check, CircleHelp, Clock, LoaderCircle } from "lucide-solid";
8
+ import { For, Show, createEffect, createMemo, createSignal, createUniqueId, on, splitProps } from "solid-js";
9
+ //#region src/components/ui/questionnaire/questionnaire.tsx
10
+ var _tmpl$ = /*#__PURE__*/ template(`<p class="m-0 mt-0.5 text-xs text-muted-foreground">`);
11
+ var _tmpl$2 = /*#__PURE__*/ template(`<span class="flex items-center gap-1 text-xs text-muted-foreground">Answered`);
12
+ var _tmpl$3 = /*#__PURE__*/ template(`<span class="text-xs text-muted-foreground">No longer waiting`);
13
+ var _tmpl$4 = /*#__PURE__*/ template(`<p role=status class="m-0 text-xs text-muted-foreground">`);
14
+ var _tmpl$5 = /*#__PURE__*/ template(`<p role=alert class="m-0 text-xs text-destructive">`);
15
+ var _tmpl$6 = /*#__PURE__*/ template(`<footer class="flex items-center justify-between gap-2">`);
16
+ var _tmpl$7 = /*#__PURE__*/ template(`<section data-slot=questionnaire tabindex=-1><header class="flex items-start gap-2.5"><span aria-hidden=true class="mt-0.5 text-muted-foreground [&amp;_svg]:size-4"></span><div class="min-w-0 flex-1"><h3 class="m-0 text-sm font-semibold">`);
17
+ var _tmpl$8 = /*#__PURE__*/ template(`<dl class="m-0 flex flex-col gap-2">`);
18
+ var _tmpl$9 = /*#__PURE__*/ template(`<div class="flex flex-col gap-0.5"><dt class="text-xs text-muted-foreground"></dt><dd class="m-0 text-sm [overflow-wrap:anywhere] whitespace-pre-wrap">`);
19
+ var _tmpl$0 = /*#__PURE__*/ template(`<span class="block text-xs text-muted-foreground tabular-nums">Question <!> of `);
20
+ var _tmpl$1 = /*#__PURE__*/ template(`<span class="mt-0.5 block text-xs font-normal text-muted-foreground">`);
21
+ var _tmpl$10 = /*#__PURE__*/ template(`<div role=group class="grid gap-2">`);
22
+ var _tmpl$11 = /*#__PURE__*/ template(`<div class="flex flex-col gap-1"><label class="text-xs text-muted-foreground">`);
23
+ var _tmpl$12 = /*#__PURE__*/ template(`<fieldset class="m-0 flex min-w-0 flex-col gap-2.5 border-0 p-0"><legend class="mb-1 p-0"><h4 tabindex=-1 class="m-0 text-sm font-medium outline-none [overflow-wrap:anywhere]">`);
24
+ var _tmpl$13 = /*#__PURE__*/ template(`<span>`);
25
+ var EMPTY = {
26
+ optionIds: [],
27
+ text: ""
28
+ };
29
+ /**
30
+ * The answer a record holds for a question. Question ids are host strings, and
31
+ * the record is an ordinary object, so `constructor`, `toString` and `__proto__`
32
+ * are valid ids that a plain index would resolve to inherited values and a
33
+ * summary or a validity check would then read `optionIds` from.
34
+ */
35
+ function answerFor(record, question) {
36
+ return Object.hasOwn(record, question.id) ? record[question.id] : void 0;
37
+ }
38
+ /** Whether a question has what it needs. */
39
+ function isQuestionAnswered(question, answer) {
40
+ if (question.optional) return true;
41
+ return (answer?.optionIds.length ?? 0) > 0 || (answer?.text.trim().length ?? 0) > 0;
42
+ }
43
+ function Questionnaire(props) {
44
+ const [local, rest] = splitProps(props, [
45
+ "class",
46
+ "questions",
47
+ "title",
48
+ "description",
49
+ "status",
50
+ "answers",
51
+ "defaultAnswers",
52
+ "onAnswersChange",
53
+ "onSubmit",
54
+ "disabledReason",
55
+ "error",
56
+ "submitLabel"
57
+ ]);
58
+ const uid = createUniqueId();
59
+ const [internal, setInternal] = createSignal(local.defaultAnswers ?? {});
60
+ const [step, setStep] = createSignal(0);
61
+ const answers = () => local.answers ?? internal();
62
+ const status = () => local.status ?? "open";
63
+ const settled = () => status() === "answered" || status() === "expired";
64
+ const hostDisabledReason = () => local.disabledReason?.trim() ? local.disabledReason : void 0;
65
+ const locked = () => status() !== "open" || hostDisabledReason() !== void 0;
66
+ const count = () => local.questions.length;
67
+ const current = () => local.questions[Math.min(step(), count() - 1)];
68
+ const last = () => step() >= count() - 1;
69
+ const reasonId = `${uid}-reason`;
70
+ const submitReason = () => hostDisabledReason() ?? (status() === "open" && last() && local.onSubmit === void 0 ? "Sending answers is not available here." : void 0);
71
+ let questionHeading;
72
+ const answerOf = (question) => answerFor(answers(), question) ?? EMPTY;
73
+ const change = (question, next) => {
74
+ const value = {
75
+ ...answers(),
76
+ [question.id]: next
77
+ };
78
+ if (local.answers === void 0) setInternal(value);
79
+ local.onAnswersChange?.(value);
80
+ };
81
+ const canAdvance = () => {
82
+ const question = current();
83
+ return question !== void 0 && isQuestionAnswered(question, answerFor(answers(), question));
84
+ };
85
+ const canSubmit = () => local.questions.every((question) => isQuestionAnswered(question, answerFor(answers(), question)));
86
+ let sending = false;
87
+ const submit = async () => {
88
+ if (sending || locked() || !canSubmit() || local.onSubmit === void 0) return;
89
+ sending = true;
90
+ try {
91
+ await local.onSubmit?.(answers());
92
+ } finally {
93
+ sending = false;
94
+ }
95
+ };
96
+ let root;
97
+ let focusWithin = false;
98
+ let wasSettled = settled();
99
+ createEffect(on(settled, (done) => {
100
+ if (done === wasSettled) return;
101
+ wasSettled = done;
102
+ if (done && focusWithin && document.activeElement === document.body) root?.focus({ preventScroll: true });
103
+ focusWithin = false;
104
+ }, { defer: true }));
105
+ let firstStep = true;
106
+ createEffect(() => {
107
+ step();
108
+ if (firstStep) {
109
+ firstStep = false;
110
+ return;
111
+ }
112
+ questionHeading?.focus();
113
+ });
114
+ const onKeyDown = (event) => {
115
+ if (event.key === "Enter" && (event.metaKey || event.ctrlKey) && last()) {
116
+ event.preventDefault();
117
+ submit();
118
+ }
119
+ };
120
+ const summary = createMemo(() => local.questions.map((question) => {
121
+ const answer = answerFor(answers(), question) ?? EMPTY;
122
+ return {
123
+ question,
124
+ parts: [...(question.options ?? []).filter((option) => answer.optionIds.includes(option.id)).map((option) => option.label), ...answer.text.trim() ? [answer.text.trim()] : []]
125
+ };
126
+ }));
127
+ return (() => {
128
+ var _el$ = _tmpl$7(), _el$2 = _el$.firstChild, _el$3 = _el$2.firstChild, _el$4 = _el$3.nextSibling, _el$5 = _el$4.firstChild;
129
+ _el$.$$focusout = (event) => {
130
+ const next = event.relatedTarget;
131
+ if (next instanceof Node && !event.currentTarget.contains(next)) focusWithin = false;
132
+ };
133
+ _el$.$$focusin = () => focusWithin = true;
134
+ _el$.$$keydown = onKeyDown;
135
+ use((element) => root = element, _el$);
136
+ spread(_el$, mergeProps({
137
+ get ["data-status"]() {
138
+ return status();
139
+ },
140
+ get ["aria-label"]() {
141
+ return local.title ?? "Question from the agent";
142
+ },
143
+ get ["class"]() {
144
+ return cn("flex w-full max-w-xl min-w-0 flex-col gap-3 rounded-xl border bg-card p-4 outline-none focus-visible:ring-3 focus-visible:ring-primary-subtle", {
145
+ "border-border": settled(),
146
+ "border-ring": !settled()
147
+ });
148
+ }
149
+ }, rest), false, true);
150
+ insert(_el$3, createComponent(Show, {
151
+ get when() {
152
+ return status() === "expired";
153
+ },
154
+ get fallback() {
155
+ return createComponent(CircleHelp, {});
156
+ },
157
+ get children() {
158
+ return createComponent(Clock, {});
159
+ }
160
+ }));
161
+ insert(_el$5, () => local.title ?? "The agent has a question");
162
+ insert(_el$4, createComponent(Show, {
163
+ get when() {
164
+ return local.description;
165
+ },
166
+ get children() {
167
+ var _el$6 = _tmpl$();
168
+ insert(_el$6, () => local.description);
169
+ return _el$6;
170
+ }
171
+ }), null);
172
+ insert(_el$2, createComponent(Show, {
173
+ get when() {
174
+ return status() === "answered";
175
+ },
176
+ get children() {
177
+ var _el$7 = _tmpl$2(), _el$8 = _el$7.firstChild;
178
+ insert(_el$7, createComponent(Check, {
179
+ "aria-hidden": "true",
180
+ "class": "size-3.5"
181
+ }), _el$8);
182
+ return _el$7;
183
+ }
184
+ }), null);
185
+ insert(_el$2, createComponent(Show, {
186
+ get when() {
187
+ return status() === "expired";
188
+ },
189
+ get children() {
190
+ return _tmpl$3();
191
+ }
192
+ }), null);
193
+ insert(_el$, createComponent(Show, {
194
+ get when() {
195
+ return !settled();
196
+ },
197
+ get fallback() {
198
+ return (() => {
199
+ var _el$11 = _tmpl$8();
200
+ insert(_el$11, createComponent(For, {
201
+ get each() {
202
+ return summary();
203
+ },
204
+ children: (entry) => (() => {
205
+ var _el$12 = _tmpl$9(), _el$13 = _el$12.firstChild, _el$14 = _el$13.nextSibling;
206
+ insert(_el$13, () => entry.question.prompt);
207
+ insert(_el$14, (() => {
208
+ var _c$ = memo(() => entry.parts.length > 0);
209
+ return () => _c$() ? entry.parts.join(", ") : "Skipped";
210
+ })());
211
+ return _el$12;
212
+ })()
213
+ }));
214
+ return _el$11;
215
+ })();
216
+ },
217
+ get children() {
218
+ return [
219
+ createComponent(Show, {
220
+ get when() {
221
+ return current();
222
+ },
223
+ keyed: true,
224
+ children: (question) => (() => {
225
+ var _el$15 = _tmpl$12(), _el$16 = _el$15.firstChild, _el$21 = _el$16.firstChild;
226
+ insert(_el$16, createComponent(Show, {
227
+ get when() {
228
+ return count() > 1;
229
+ },
230
+ get children() {
231
+ var _el$17 = _tmpl$0(), _el$20 = _el$17.firstChild.nextSibling;
232
+ _el$20.nextSibling;
233
+ insert(_el$17, () => step() + 1, _el$20);
234
+ insert(_el$17, count, null);
235
+ return _el$17;
236
+ }
237
+ }), _el$21);
238
+ use((element) => questionHeading = element, _el$21);
239
+ insert(_el$21, () => question.prompt);
240
+ insert(_el$16, createComponent(Show, {
241
+ get when() {
242
+ return question.description;
243
+ },
244
+ get children() {
245
+ var _el$22 = _tmpl$1();
246
+ insert(_el$22, () => question.description);
247
+ return _el$22;
248
+ }
249
+ }), null);
250
+ insert(_el$15, createComponent(Show, {
251
+ get when() {
252
+ return (question.options?.length ?? 0) > 0;
253
+ },
254
+ get children() {
255
+ return createComponent(Show, {
256
+ get when() {
257
+ return question.multiple;
258
+ },
259
+ get fallback() {
260
+ return createComponent(RadioGroup, {
261
+ get ["aria-label"]() {
262
+ return question.prompt;
263
+ },
264
+ get value() {
265
+ return answerOf(question).optionIds[0] ?? "";
266
+ },
267
+ onChange: (value) => change(question, {
268
+ ...answerOf(question),
269
+ optionIds: value ? [value] : []
270
+ }),
271
+ get disabled() {
272
+ return locked();
273
+ },
274
+ get children() {
275
+ return createComponent(For, {
276
+ get each() {
277
+ return question.options;
278
+ },
279
+ children: (option) => createComponent(RadioGroupItem, {
280
+ get value() {
281
+ return option.id;
282
+ },
283
+ get label() {
284
+ return option.label;
285
+ },
286
+ get description() {
287
+ return option.description;
288
+ },
289
+ variant: "card"
290
+ })
291
+ });
292
+ }
293
+ });
294
+ },
295
+ get children() {
296
+ var _el$23 = _tmpl$10();
297
+ insert(_el$23, createComponent(For, {
298
+ get each() {
299
+ return question.options;
300
+ },
301
+ children: (option) => createComponent(Checkbox, {
302
+ get label() {
303
+ return option.label;
304
+ },
305
+ get description() {
306
+ return option.description;
307
+ },
308
+ get checked() {
309
+ return answerOf(question).optionIds.includes(option.id);
310
+ },
311
+ get disabled() {
312
+ return locked();
313
+ },
314
+ onChange: (checked) => {
315
+ const ids = answerOf(question).optionIds;
316
+ change(question, {
317
+ ...answerOf(question),
318
+ optionIds: checked ? [...ids.filter((id) => id !== option.id), option.id] : ids.filter((id) => id !== option.id)
319
+ });
320
+ }
321
+ })
322
+ }));
323
+ effect(() => setAttribute(_el$23, "aria-label", question.prompt));
324
+ return _el$23;
325
+ }
326
+ });
327
+ }
328
+ }), null);
329
+ insert(_el$15, createComponent(Show, {
330
+ get when() {
331
+ return (question.options?.length ?? 0) === 0 || question.allowText;
332
+ },
333
+ get children() {
334
+ var _el$24 = _tmpl$11(), _el$25 = _el$24.firstChild;
335
+ insert(_el$25, () => question.textLabel ?? ((question.options?.length ?? 0) > 0 ? "Something else" : "Your answer"));
336
+ insert(_el$24, createComponent(Textarea, {
337
+ get id() {
338
+ return `${uid}-${question.id}-text`;
339
+ },
340
+ rows: 2,
341
+ get placeholder() {
342
+ return question.textPlaceholder;
343
+ },
344
+ get value() {
345
+ return answerOf(question).text;
346
+ },
347
+ get disabled() {
348
+ return locked();
349
+ },
350
+ get ["aria-describedby"]() {
351
+ return locked() && hostDisabledReason() ? reasonId : void 0;
352
+ },
353
+ onInput: (event) => change(question, {
354
+ ...answerOf(question),
355
+ text: event.currentTarget.value
356
+ })
357
+ }), null);
358
+ effect(() => setAttribute(_el$25, "for", `${uid}-${question.id}-text`));
359
+ return _el$24;
360
+ }
361
+ }), null);
362
+ effect(() => _el$15.disabled = locked());
363
+ return _el$15;
364
+ })()
365
+ }),
366
+ createComponent(Show, {
367
+ get when() {
368
+ return submitReason();
369
+ },
370
+ get children() {
371
+ var _el$0 = _tmpl$4();
372
+ setAttribute(_el$0, "id", reasonId);
373
+ insert(_el$0, submitReason);
374
+ return _el$0;
375
+ }
376
+ }),
377
+ createComponent(Show, {
378
+ get when() {
379
+ return local.error;
380
+ },
381
+ get children() {
382
+ var _el$1 = _tmpl$5();
383
+ insert(_el$1, () => local.error);
384
+ return _el$1;
385
+ }
386
+ }),
387
+ (() => {
388
+ var _el$10 = _tmpl$6();
389
+ insert(_el$10, createComponent(Show, {
390
+ get when() {
391
+ return count() > 1;
392
+ },
393
+ get fallback() {
394
+ return _tmpl$13();
395
+ },
396
+ get children() {
397
+ return createComponent(Button, {
398
+ type: "button",
399
+ variant: "ghost",
400
+ size: "sm",
401
+ get disabled() {
402
+ return step() === 0 || locked();
403
+ },
404
+ onClick: () => setStep((value) => Math.max(0, value - 1)),
405
+ children: "Back"
406
+ });
407
+ }
408
+ }), null);
409
+ insert(_el$10, createComponent(Show, {
410
+ get when() {
411
+ return last();
412
+ },
413
+ get fallback() {
414
+ return createComponent(Button, {
415
+ type: "button",
416
+ size: "sm",
417
+ get disabled() {
418
+ return locked() || !canAdvance();
419
+ },
420
+ get ["aria-describedby"]() {
421
+ return hostDisabledReason() ? reasonId : void 0;
422
+ },
423
+ onClick: () => setStep((value) => Math.min(count() - 1, value + 1)),
424
+ children: "Next"
425
+ });
426
+ },
427
+ get children() {
428
+ return createComponent(Button, {
429
+ type: "button",
430
+ size: "sm",
431
+ get disabled() {
432
+ return locked() || !canSubmit() || local.onSubmit === void 0;
433
+ },
434
+ get ["aria-describedby"]() {
435
+ return submitReason() ? reasonId : void 0;
436
+ },
437
+ onClick: () => void submit(),
438
+ get children() {
439
+ return [createComponent(Show, {
440
+ get when() {
441
+ return status() === "submitting";
442
+ },
443
+ get children() {
444
+ return createComponent(LoaderCircle, {
445
+ "aria-hidden": "true",
446
+ "class": "motion-safe:animate-spin"
447
+ });
448
+ }
449
+ }), memo(() => local.submitLabel ?? "Send answer")];
450
+ }
451
+ });
452
+ }
453
+ }), null);
454
+ return _el$10;
455
+ })()
456
+ ];
457
+ }
458
+ }), null);
459
+ return _el$;
460
+ })();
461
+ }
462
+ delegateEvents([
463
+ "keydown",
464
+ "focusin",
465
+ "focusout"
466
+ ]);
467
+ //#endregion
468
+ export { Questionnaire, answerFor, isQuestionAnswered };
469
+
470
+ //# sourceMappingURL=questionnaire.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"questionnaire.js","names":["Check","CircleHelp","Clock","LoaderCircle","createEffect","createMemo","createSignal","createUniqueId","For","on","Show","splitProps","ComponentProps","JSX","cn","Button","Checkbox","RadioGroup","RadioGroupItem","Textarea","QuestionnaireOption","Readonly","id","label","description","QuestionnaireQuestion","prompt","options","multiple","allowText","textLabel","textPlaceholder","optional","QuestionnaireAnswer","optionIds","text","QuestionnaireAnswers","Record","QuestionnaireStatus","EMPTY","answerFor","record","question","Pick","Object","hasOwn","undefined","isQuestionAnswered","answer","length","trim","QuestionnaireProps","Omit","questions","title","status","answers","defaultAnswers","onAnswersChange","onSubmit","Promise","disabledReason","error","submitLabel","Questionnaire","props","local","rest","uid","internal","setInternal","step","setStep","settled","hostDisabledReason","locked","count","current","Math","min","last","reasonId","submitReason","questionHeading","HTMLHeadingElement","answerOf","change","next","value","canAdvance","canSubmit","every","sending","submit","root","HTMLElement","focusWithin","wasSettled","done","document","activeElement","body","focus","preventScroll","defer","firstStep","onKeyDown","EventHandler","KeyboardEvent","event","key","metaKey","ctrlKey","preventDefault","summary","map","chosen","filter","option","includes","parts","_el$","_tmpl$7","_el$2","firstChild","_el$3","_el$4","nextSibling","_el$5","$$focusout","relatedTarget","Node","currentTarget","contains","$$focusin","$$keydown","_$use","element","_$spread","_$mergeProps","data-status","aria-label","class","_$insert","_$createComponent","when","fallback","children","_el$6","_tmpl$","_el$7","_tmpl$2","_el$8","_tmpl$3","_el$11","_tmpl$8","each","entry","_el$12","_tmpl$9","_el$13","_el$14","_c$","_$memo","join","keyed","_el$15","_tmpl$12","_el$16","_el$21","_el$17","_tmpl$0","_el$18","_el$20","_el$19","_el$22","_tmpl$1","onChange","disabled","variant","_el$23","_tmpl$10","checked","ids","_$effect","_$setAttribute","_el$24","_tmpl$11","_el$25","rows","placeholder","aria-describedby","onInput","_el$0","_tmpl$4","_el$1","_tmpl$5","_el$10","_tmpl$6","_tmpl$13","type","size","onClick","max","_$delegateEvents","_$mergeProps","_$createComponent","_$memo","_$setAttribute","_$delegateEvents"],"sources":["../../../../src/components/ui/questionnaire/questionnaire.tsx"],"sourcesContent":["import { Check, CircleHelp, Clock, LoaderCircle } from 'lucide-solid'\nimport {\n createEffect,\n createMemo,\n createSignal,\n createUniqueId,\n For,\n on,\n Show,\n splitProps,\n type ComponentProps,\n type JSX,\n} from 'solid-js'\nimport { cn } from '#lib/utils'\nimport { Button } from '../button'\nimport { Checkbox } from '../checkbox'\nimport { RadioGroup, RadioGroupItem } from '../radio-group'\nimport { Textarea } from '../textarea'\n\n/**\n * Questionnaire.\n *\n * The agent has stopped and is asking the person something before it continues.\n * This is the one place in a transcript where the reader *must* act, so it is\n * the one element allowed to look like a card — and it only ever asks what the\n * runtime actually asked.\n *\n * ## What it models\n *\n * One question or several. Each has a prompt and, optionally, a closed set of\n * options (single choice, or `multiple`) and/or a free-text answer. A question\n * with only a prompt is a text box; the runtime contract that exists today is\n * exactly that. Options are shown only when the producer supplied them, which is\n * why they are data here and not something this component can invent.\n *\n * Several questions are asked one at a time, with \"Question 2 of 3\" and Back /\n * Next, because a wall of unrelated fields is how a person answers none of them\n * well. Moving between them returns focus to the question, so a screen-reader\n * user hears what they are now answering.\n *\n * ## It does not decide whether you may answer\n *\n * `status` and `disabledReason` come from the host, which owns authority (is\n * this session connected, is the generation current, does this client have the\n * input). A disabled questionnaire says *why* in words next to the button.\n * `answered` and `expired` render the exchange read-only, so a settled question\n * stays in the record as what was asked and what was answered.\n *\n * Submit is `Cmd/Ctrl+Enter` from any text field; plain Enter stays a newline.\n */\nexport type QuestionnaireOption = Readonly<{\n id: string\n label: string\n description?: string\n}>\n\nexport type QuestionnaireQuestion = Readonly<{\n id: string\n prompt: string\n description?: string\n options?: readonly QuestionnaireOption[]\n /** Allow more than one option. */\n multiple?: boolean\n /** Offer a free-text answer (always present when there are no options). */\n allowText?: boolean\n textLabel?: string\n textPlaceholder?: string\n /** The question may be skipped. */\n optional?: boolean\n}>\n\nexport type QuestionnaireAnswer = Readonly<{ optionIds: readonly string[]; text: string }>\nexport type QuestionnaireAnswers = Readonly<Record<string, QuestionnaireAnswer>>\nexport type QuestionnaireStatus = 'open' | 'submitting' | 'answered' | 'expired'\n\nconst EMPTY: QuestionnaireAnswer = { optionIds: [], text: '' }\n\n/**\n * The answer a record holds for a question. Question ids are host strings, and\n * the record is an ordinary object, so `constructor`, `toString` and `__proto__`\n * are valid ids that a plain index would resolve to inherited values and a\n * summary or a validity check would then read `optionIds` from.\n */\nexport function answerFor(\n record: QuestionnaireAnswers,\n question: Pick<QuestionnaireQuestion, 'id'>\n): QuestionnaireAnswer | undefined {\n return Object.hasOwn(record, question.id) ? record[question.id] : undefined\n}\n\n/** Whether a question has what it needs. */\nexport function isQuestionAnswered(\n question: QuestionnaireQuestion,\n answer: QuestionnaireAnswer | undefined\n): boolean {\n if (question.optional) return true\n return (answer?.optionIds.length ?? 0) > 0 || (answer?.text.trim().length ?? 0) > 0\n}\n\nexport type QuestionnaireProps = Omit<ComponentProps<'section'>, 'onSubmit' | 'title'> & {\n questions: readonly QuestionnaireQuestion[]\n title?: string\n description?: string\n status?: QuestionnaireStatus\n answers?: QuestionnaireAnswers\n defaultAnswers?: QuestionnaireAnswers\n onAnswersChange?: (answers: QuestionnaireAnswers) => void\n onSubmit?: (answers: QuestionnaireAnswers) => void | Promise<void>\n /** Why answering is not possible right now; shown beside the button. */\n disabledReason?: string\n /** A failed submit, in words. */\n error?: string\n submitLabel?: string\n}\n\nexport function Questionnaire(props: QuestionnaireProps) {\n const [local, rest] = splitProps(props, [\n 'class',\n 'questions',\n 'title',\n 'description',\n 'status',\n 'answers',\n 'defaultAnswers',\n 'onAnswersChange',\n 'onSubmit',\n 'disabledReason',\n 'error',\n 'submitLabel',\n ])\n const uid = createUniqueId()\n const [internal, setInternal] = createSignal<QuestionnaireAnswers>(local.defaultAnswers ?? {})\n const [step, setStep] = createSignal(0)\n const answers = () => local.answers ?? internal()\n const status = () => local.status ?? 'open'\n const settled = () => status() === 'answered' || status() === 'expired'\n const hostDisabledReason = () => (local.disabledReason?.trim() ? local.disabledReason : undefined)\n const locked = () => status() !== 'open' || hostDisabledReason() !== undefined\n const count = () => local.questions.length\n const current = () => local.questions[Math.min(step(), count() - 1)]\n const last = () => step() >= count() - 1\n const reasonId = `${uid}-reason`\n const submitReason = () =>\n hostDisabledReason() ??\n (status() === 'open' && last() && local.onSubmit === undefined\n ? 'Sending answers is not available here.'\n : undefined)\n let questionHeading: HTMLHeadingElement | undefined\n\n const answerOf = (question: QuestionnaireQuestion) => answerFor(answers(), question) ?? EMPTY\n const change = (question: QuestionnaireQuestion, next: QuestionnaireAnswer) => {\n const value = { ...answers(), [question.id]: next }\n if (local.answers === undefined) setInternal(value)\n local.onAnswersChange?.(value)\n }\n\n const canAdvance = () => {\n const question = current()\n return question !== undefined && isQuestionAnswered(question, answerFor(answers(), question))\n }\n const canSubmit = () =>\n local.questions.every((question) =>\n isQuestionAnswered(question, answerFor(answers(), question))\n )\n\n // A host that is slow to report `submitting` must not be handed the same answer\n // twice by a second Ctrl+Enter or a double click.\n let sending = false\n const submit = async () => {\n if (sending || locked() || !canSubmit() || local.onSubmit === undefined) return\n sending = true\n try {\n await local.onSubmit?.(answers())\n } finally {\n sending = false\n }\n }\n\n // The control that had focus is removed when the exchange settles into its\n // read-only record. Give focus to the record instead of dropping it on <body>,\n // but only if it was inside this questionnaire to begin with.\n let root: HTMLElement | undefined\n let focusWithin = false\n let wasSettled = settled()\n createEffect(\n on(\n settled,\n (done) => {\n // `settled` is not memoised, so this also runs for open -> submitting.\n if (done === wasSettled) return\n wasSettled = done\n if (done && focusWithin && document.activeElement === document.body) {\n root?.focus({ preventScroll: true })\n }\n focusWithin = false\n },\n { defer: true }\n )\n )\n\n // Land on the new question when the step changes, not on the Next button that\n // has just been replaced by one for a different question.\n let firstStep = true\n createEffect(() => {\n void step()\n if (firstStep) {\n firstStep = false\n return\n }\n questionHeading?.focus()\n })\n\n const onKeyDown: JSX.EventHandler<HTMLElement, KeyboardEvent> = (event) => {\n if (event.key === 'Enter' && (event.metaKey || event.ctrlKey) && last()) {\n event.preventDefault()\n void submit()\n }\n }\n\n const summary = createMemo(() =>\n local.questions.map((question) => {\n const answer = answerFor(answers(), question) ?? EMPTY\n const chosen = (question.options ?? [])\n .filter((option) => answer.optionIds.includes(option.id))\n .map((option) => option.label)\n return {\n question,\n parts: [...chosen, ...(answer.text.trim() ? [answer.text.trim()] : [])],\n }\n })\n )\n\n return (\n <section\n ref={(element) => (root = element)}\n data-slot=\"questionnaire\"\n data-status={status()}\n aria-label={local.title ?? 'Question from the agent'}\n // Not a tab stop: only the landing place for focus when a control goes away.\n tabindex=\"-1\"\n class={cn(\n 'flex w-full max-w-xl min-w-0 flex-col gap-3 rounded-xl border bg-card p-4 outline-none focus-visible:ring-3 focus-visible:ring-primary-subtle',\n {\n 'border-border': settled(),\n 'border-ring': !settled(),\n }\n )}\n onKeyDown={onKeyDown}\n onFocusIn={() => (focusWithin = true)}\n onFocusOut={(event) => {\n // Moving to another element ends it; a control disappearing does not.\n const next = event.relatedTarget\n if (next instanceof Node && !event.currentTarget.contains(next)) focusWithin = false\n }}\n {...rest}\n >\n <header class=\"flex items-start gap-2.5\">\n <span aria-hidden=\"true\" class=\"mt-0.5 text-muted-foreground [&_svg]:size-4\">\n <Show when={status() === 'expired'} fallback={<CircleHelp />}>\n <Clock />\n </Show>\n </span>\n <div class=\"min-w-0 flex-1\">\n <h3 class=\"m-0 text-sm font-semibold\">{local.title ?? 'The agent has a question'}</h3>\n <Show when={local.description}>\n <p class=\"m-0 mt-0.5 text-xs text-muted-foreground\">{local.description}</p>\n </Show>\n </div>\n <Show when={status() === 'answered'}>\n <span class=\"flex items-center gap-1 text-xs text-muted-foreground\">\n <Check aria-hidden=\"true\" class=\"size-3.5\" />\n Answered\n </span>\n </Show>\n <Show when={status() === 'expired'}>\n <span class=\"text-xs text-muted-foreground\">No longer waiting</span>\n </Show>\n </header>\n\n <Show\n when={!settled()}\n fallback={\n <dl class=\"m-0 flex flex-col gap-2\">\n <For each={summary()}>\n {(entry) => (\n <div class=\"flex flex-col gap-0.5\">\n <dt class=\"text-xs text-muted-foreground\">{entry.question.prompt}</dt>\n <dd class=\"m-0 text-sm [overflow-wrap:anywhere] whitespace-pre-wrap\">\n {entry.parts.length > 0 ? entry.parts.join(', ') : 'Skipped'}\n </dd>\n </div>\n )}\n </For>\n </dl>\n }\n >\n <Show when={current()} keyed>\n {(question) => (\n <fieldset class=\"m-0 flex min-w-0 flex-col gap-2.5 border-0 p-0\" disabled={locked()}>\n <legend class=\"mb-1 p-0\">\n <Show when={count() > 1}>\n <span class=\"block text-xs text-muted-foreground tabular-nums\">\n Question {step() + 1} of {count()}\n </span>\n </Show>\n <h4\n ref={(element) => (questionHeading = element)}\n tabindex=\"-1\"\n class=\"m-0 text-sm font-medium outline-none [overflow-wrap:anywhere]\"\n >\n {question.prompt}\n </h4>\n <Show when={question.description}>\n <span class=\"mt-0.5 block text-xs font-normal text-muted-foreground\">\n {question.description}\n </span>\n </Show>\n </legend>\n\n <Show when={(question.options?.length ?? 0) > 0}>\n <Show\n when={question.multiple}\n fallback={\n <RadioGroup\n aria-label={question.prompt}\n value={answerOf(question).optionIds[0] ?? ''}\n onChange={(value) =>\n change(question, { ...answerOf(question), optionIds: value ? [value] : [] })\n }\n disabled={locked()}\n >\n <For each={question.options}>\n {(option) => (\n <RadioGroupItem\n value={option.id}\n label={option.label}\n description={option.description}\n variant=\"card\"\n />\n )}\n </For>\n </RadioGroup>\n }\n >\n <div role=\"group\" aria-label={question.prompt} class=\"grid gap-2\">\n <For each={question.options}>\n {(option) => (\n <Checkbox\n label={option.label}\n description={option.description}\n checked={answerOf(question).optionIds.includes(option.id)}\n disabled={locked()}\n onChange={(checked: boolean) => {\n const ids = answerOf(question).optionIds\n change(question, {\n ...answerOf(question),\n optionIds: checked\n ? [...ids.filter((id) => id !== option.id), option.id]\n : ids.filter((id) => id !== option.id),\n })\n }}\n />\n )}\n </For>\n </div>\n </Show>\n </Show>\n\n <Show when={(question.options?.length ?? 0) === 0 || question.allowText}>\n <div class=\"flex flex-col gap-1\">\n <label class=\"text-xs text-muted-foreground\" for={`${uid}-${question.id}-text`}>\n {question.textLabel ??\n ((question.options?.length ?? 0) > 0 ? 'Something else' : 'Your answer')}\n </label>\n <Textarea\n id={`${uid}-${question.id}-text`}\n rows={2}\n placeholder={question.textPlaceholder}\n value={answerOf(question).text}\n disabled={locked()}\n aria-describedby={locked() && hostDisabledReason() ? reasonId : undefined}\n onInput={(event) =>\n change(question, { ...answerOf(question), text: event.currentTarget.value })\n }\n />\n </div>\n </Show>\n </fieldset>\n )}\n </Show>\n\n <Show when={submitReason()}>\n <p id={reasonId} role=\"status\" class=\"m-0 text-xs text-muted-foreground\">\n {submitReason()}\n </p>\n </Show>\n <Show when={local.error}>\n <p role=\"alert\" class=\"m-0 text-xs text-destructive\">\n {local.error}\n </p>\n </Show>\n\n <footer class=\"flex items-center justify-between gap-2\">\n <Show when={count() > 1} fallback={<span />}>\n <Button\n type=\"button\"\n variant=\"ghost\"\n size=\"sm\"\n disabled={step() === 0 || locked()}\n onClick={() => setStep((value) => Math.max(0, value - 1))}\n >\n Back\n </Button>\n </Show>\n <Show\n when={last()}\n fallback={\n <Button\n type=\"button\"\n size=\"sm\"\n disabled={locked() || !canAdvance()}\n aria-describedby={hostDisabledReason() ? reasonId : undefined}\n onClick={() => setStep((value) => Math.min(count() - 1, value + 1))}\n >\n Next\n </Button>\n }\n >\n <Button\n type=\"button\"\n size=\"sm\"\n disabled={locked() || !canSubmit() || local.onSubmit === undefined}\n aria-describedby={submitReason() ? reasonId : undefined}\n onClick={() => void submit()}\n >\n <Show when={status() === 'submitting'}>\n <LoaderCircle aria-hidden=\"true\" class=\"motion-safe:animate-spin\" />\n </Show>\n {local.submitLabel ?? 'Send answer'}\n </Button>\n </Show>\n </footer>\n </Show>\n </section>\n )\n}\n"],"mappings":"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"}
@@ -30,7 +30,7 @@ import { type ComponentProps, type JSX } from 'solid-js';
30
30
  * the only signal.
31
31
  */
32
32
  export declare const statusDotVariants: (props?: ({
33
- tone?: "success" | "warning" | "info" | "neutral" | "danger" | "pending" | "unknown" | null | undefined;
33
+ tone?: "success" | "warning" | "info" | "neutral" | "pending" | "danger" | "unknown" | null | undefined;
34
34
  } & import("class-variance-authority/types").ClassProp) | undefined) => string;
35
35
  export type StatusTone = 'neutral' | 'success' | 'warning' | 'danger' | 'info' | 'pending' | 'unknown';
36
36
  export type StatusChipProps = Omit<ComponentProps<'span'>, 'children'> & {
@@ -2,10 +2,10 @@ import { cn } from "../../../lib/utils.js";
2
2
  import { useFormFieldControl } from "../../../lib/form-field.js";
3
3
  import { createComponent, insert, memo, mergeProps, template } from "solid-js/web";
4
4
  import { splitProps } from "solid-js";
5
- import { Switch } from "@kobalte/core/switch";
5
+ import { Switch as Switch$1 } from "@kobalte/core/switch";
6
6
  //#region src/components/ui/switch/switch.tsx
7
7
  var _tmpl$ = /*#__PURE__*/ template(`<div class="grid gap-0.5">`);
8
- function Switch$1(props) {
8
+ function Switch$2(props) {
9
9
  const [local, rest] = splitProps(props, [
10
10
  "class",
11
11
  "controlClass",
@@ -33,7 +33,7 @@ function Switch$1(props) {
33
33
  "aria-invalid": local["aria-invalid"],
34
34
  "aria-errormessage": local["aria-errormessage"]
35
35
  });
36
- return createComponent(Switch, mergeProps({
36
+ return createComponent(Switch$1, mergeProps({
37
37
  "data-slot": "switch",
38
38
  get id() {
39
39
  return field ? void 0 : local.id;
@@ -46,7 +46,7 @@ function Switch$1(props) {
46
46
  }
47
47
  }, rest, { get children() {
48
48
  return [
49
- createComponent(Switch.Input, {
49
+ createComponent(Switch$1.Input, {
50
50
  get id() {
51
51
  return field?.id ?? local.inputId;
52
52
  },
@@ -72,12 +72,12 @@ function Switch$1(props) {
72
72
  return local.title;
73
73
  }
74
74
  }),
75
- createComponent(Switch.Control, {
75
+ createComponent(Switch$1.Control, {
76
76
  get ["class"]() {
77
77
  return cn("bg-input inline-flex h-5 w-9 shrink-0 items-center rounded-full border border-transparent", "transition-colors ease-out outline-none", "focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-primary-subtle", "data-[checked]:bg-primary", "data-[invalid]:border-destructive", "data-[disabled]:cursor-not-allowed data-[disabled]:opacity-50", local.controlClass);
78
78
  },
79
79
  get children() {
80
- return createComponent(Switch.Thumb, { get ["class"]() {
80
+ return createComponent(Switch$1.Thumb, { get ["class"]() {
81
81
  return cn("bg-background pointer-events-none block size-4 rounded-full shadow-xs", "transition-transform ease-out", "data-[checked]:translate-x-4", local.thumbClass);
82
82
  } });
83
83
  }
@@ -86,7 +86,7 @@ function Switch$1(props) {
86
86
  var _el$ = _tmpl$();
87
87
  insert(_el$, (() => {
88
88
  var _c$ = memo(() => !!local.label);
89
- return () => _c$() ? createComponent(Switch.Label, {
89
+ return () => _c$() ? createComponent(Switch$1.Label, {
90
90
  get ["class"]() {
91
91
  return cn("text-sm leading-none font-medium", local.labelClass);
92
92
  },
@@ -97,7 +97,7 @@ function Switch$1(props) {
97
97
  })(), null);
98
98
  insert(_el$, (() => {
99
99
  var _c$2 = memo(() => !!local.description);
100
- return () => _c$2() ? createComponent(Switch.Description, {
100
+ return () => _c$2() ? createComponent(Switch$1.Description, {
101
101
  get ["class"]() {
102
102
  return cn("text-muted-foreground text-sm", local.descriptionClass);
103
103
  },
@@ -119,17 +119,17 @@ function Switch$1(props) {
119
119
  */
120
120
  function SwitchLabel(props) {
121
121
  const [local, rest] = splitProps(props, ["class"]);
122
- return createComponent(Switch.Label, mergeProps({ get ["class"]() {
122
+ return createComponent(Switch$1.Label, mergeProps({ get ["class"]() {
123
123
  return cn("text-sm leading-none font-medium", local.class);
124
124
  } }, rest));
125
125
  }
126
126
  function SwitchDescription(props) {
127
127
  const [local, rest] = splitProps(props, ["class"]);
128
- return createComponent(Switch.Description, mergeProps({ get ["class"]() {
128
+ return createComponent(Switch$1.Description, mergeProps({ get ["class"]() {
129
129
  return cn("text-muted-foreground text-sm", local.class);
130
130
  } }, rest));
131
131
  }
132
132
  //#endregion
133
- export { Switch$1 as Switch, SwitchDescription, SwitchLabel };
133
+ export { Switch$2 as Switch, SwitchDescription, SwitchLabel };
134
134
 
135
135
  //# sourceMappingURL=switch.js.map