@k2b/ui 0.1.0-rc.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 (548) hide show
  1. package/LICENSE +661 -0
  2. package/README.md +343 -0
  3. package/dist/.build-complete +0 -0
  4. package/dist/browser/actions/Button.js +236 -0
  5. package/dist/browser/actions/Button.js.map +1 -0
  6. package/dist/browser/actions/ContextMenu.js +199 -0
  7. package/dist/browser/actions/ContextMenu.js.map +1 -0
  8. package/dist/browser/actions/CopyButton.js +97 -0
  9. package/dist/browser/actions/CopyButton.js.map +1 -0
  10. package/dist/browser/actions/Disclosure.js +83 -0
  11. package/dist/browser/actions/Disclosure.js.map +1 -0
  12. package/dist/browser/actions/Dropdown.js +669 -0
  13. package/dist/browser/actions/Dropdown.js.map +1 -0
  14. package/dist/browser/actions/FilterChip.js +149 -0
  15. package/dist/browser/actions/FilterChip.js.map +1 -0
  16. package/dist/browser/actions/RemoveButton.js +47 -0
  17. package/dist/browser/actions/RemoveButton.js.map +1 -0
  18. package/dist/browser/actions/SegmentedControl.js +138 -0
  19. package/dist/browser/actions/SegmentedControl.js.map +1 -0
  20. package/dist/browser/actions/SplitButton.js +76 -0
  21. package/dist/browser/actions/SplitButton.js.map +1 -0
  22. package/dist/browser/actions/SpotlightSearch.js +87 -0
  23. package/dist/browser/actions/SpotlightSearch.js.map +1 -0
  24. package/dist/browser/actions/Tabs.js +185 -0
  25. package/dist/browser/actions/Tabs.js.map +1 -0
  26. package/dist/browser/actions/Toolbar.js +87 -0
  27. package/dist/browser/actions/Toolbar.js.map +1 -0
  28. package/dist/browser/actions/index.js +13 -0
  29. package/dist/browser/actions/index.js.map +1 -0
  30. package/dist/browser/chat/ChatComposer.js +760 -0
  31. package/dist/browser/chat/ChatComposer.js.map +1 -0
  32. package/dist/browser/chat/ChatPrimitives.js +688 -0
  33. package/dist/browser/chat/ChatPrimitives.js.map +1 -0
  34. package/dist/browser/chat/ChatRoot.js +27 -0
  35. package/dist/browser/chat/ChatRoot.js.map +1 -0
  36. package/dist/browser/chat/ChatTimeline.js +404 -0
  37. package/dist/browser/chat/ChatTimeline.js.map +1 -0
  38. package/dist/browser/chat/chat-behavior.js +53 -0
  39. package/dist/browser/chat/chat-behavior.js.map +1 -0
  40. package/dist/browser/chat/index.js +17 -0
  41. package/dist/browser/chat/index.js.map +1 -0
  42. package/dist/browser/chat/types.js +2 -0
  43. package/dist/browser/chat/types.js.map +1 -0
  44. package/dist/browser/content/Calendar.js +2168 -0
  45. package/dist/browser/content/Calendar.js.map +1 -0
  46. package/dist/browser/content/Chart.js +680 -0
  47. package/dist/browser/content/Chart.js.map +1 -0
  48. package/dist/browser/content/CodeDisplay.js +104 -0
  49. package/dist/browser/content/CodeDisplay.js.map +1 -0
  50. package/dist/browser/content/DataTable.js +724 -0
  51. package/dist/browser/content/DataTable.js.map +1 -0
  52. package/dist/browser/content/Docs.js +227 -0
  53. package/dist/browser/content/Docs.js.map +1 -0
  54. package/dist/browser/content/FileBrowser.js +462 -0
  55. package/dist/browser/content/FileBrowser.js.map +1 -0
  56. package/dist/browser/content/FileTree.js +453 -0
  57. package/dist/browser/content/FileTree.js.map +1 -0
  58. package/dist/browser/content/FileView.js +842 -0
  59. package/dist/browser/content/FileView.js.map +1 -0
  60. package/dist/browser/content/Lightbox.js +285 -0
  61. package/dist/browser/content/Lightbox.js.map +1 -0
  62. package/dist/browser/content/LogEntriesTable.js +139 -0
  63. package/dist/browser/content/LogEntriesTable.js.map +1 -0
  64. package/dist/browser/content/MarkdownView.js +138 -0
  65. package/dist/browser/content/MarkdownView.js.map +1 -0
  66. package/dist/browser/content/Pagination.js +182 -0
  67. package/dist/browser/content/Pagination.js.map +1 -0
  68. package/dist/browser/content/PdfPreview.js +204 -0
  69. package/dist/browser/content/PdfPreview.js.map +1 -0
  70. package/dist/browser/content/RangePicker.js +83 -0
  71. package/dist/browser/content/RangePicker.js.map +1 -0
  72. package/dist/browser/content/StructuredDataPreview.js +194 -0
  73. package/dist/browser/content/StructuredDataPreview.js.map +1 -0
  74. package/dist/browser/content/calendar-event-layout.js +92 -0
  75. package/dist/browser/content/calendar-event-layout.js.map +1 -0
  76. package/dist/browser/content/calendar-pointer.js +114 -0
  77. package/dist/browser/content/calendar-pointer.js.map +1 -0
  78. package/dist/browser/content/chart-map-viewport.js +33 -0
  79. package/dist/browser/content/chart-map-viewport.js.map +1 -0
  80. package/dist/browser/content/chart-state-timeline.js +124 -0
  81. package/dist/browser/content/chart-state-timeline.js.map +1 -0
  82. package/dist/browser/content/code-highlight.js +144 -0
  83. package/dist/browser/content/code-highlight.js.map +1 -0
  84. package/dist/browser/content/file-tree.js +93 -0
  85. package/dist/browser/content/file-tree.js.map +1 -0
  86. package/dist/browser/content/file-view-preview.js +112 -0
  87. package/dist/browser/content/file-view-preview.js.map +1 -0
  88. package/dist/browser/content/index.js +16 -0
  89. package/dist/browser/content/index.js.map +1 -0
  90. package/dist/browser/feedback/InlineGuidance.js +46 -0
  91. package/dist/browser/feedback/InlineGuidance.js.map +1 -0
  92. package/dist/browser/feedback/Tooltip.js +189 -0
  93. package/dist/browser/feedback/Tooltip.js.map +1 -0
  94. package/dist/browser/feedback/dialog-core.js +207 -0
  95. package/dist/browser/feedback/dialog-core.js.map +1 -0
  96. package/dist/browser/feedback/index.js +6 -0
  97. package/dist/browser/feedback/index.js.map +1 -0
  98. package/dist/browser/feedback/prompts.js +991 -0
  99. package/dist/browser/feedback/prompts.js.map +1 -0
  100. package/dist/browser/feedback/toast.js +271 -0
  101. package/dist/browser/feedback/toast.js.map +1 -0
  102. package/dist/browser/feedback/tooltip-position.js +25 -0
  103. package/dist/browser/feedback/tooltip-position.js.map +1 -0
  104. package/dist/browser/index.js +11 -0
  105. package/dist/browser/index.js.map +1 -0
  106. package/dist/browser/inputs/AutocompleteEditor.js +610 -0
  107. package/dist/browser/inputs/AutocompleteEditor.js.map +1 -0
  108. package/dist/browser/inputs/AutocompleteSelect.js +632 -0
  109. package/dist/browser/inputs/AutocompleteSelect.js.map +1 -0
  110. package/dist/browser/inputs/Checkbox.js +137 -0
  111. package/dist/browser/inputs/Checkbox.js.map +1 -0
  112. package/dist/browser/inputs/CheckboxCard.js +130 -0
  113. package/dist/browser/inputs/CheckboxCard.js.map +1 -0
  114. package/dist/browser/inputs/ChoiceGroups.js +174 -0
  115. package/dist/browser/inputs/ChoiceGroups.js.map +1 -0
  116. package/dist/browser/inputs/ChoiceInputs.js +400 -0
  117. package/dist/browser/inputs/ChoiceInputs.js.map +1 -0
  118. package/dist/browser/inputs/Combobox.js +274 -0
  119. package/dist/browser/inputs/Combobox.js.map +1 -0
  120. package/dist/browser/inputs/DatePicker.js +923 -0
  121. package/dist/browser/inputs/DatePicker.js.map +1 -0
  122. package/dist/browser/inputs/FileInputs.js +736 -0
  123. package/dist/browser/inputs/FileInputs.js.map +1 -0
  124. package/dist/browser/inputs/MultiSelectInput.js +565 -0
  125. package/dist/browser/inputs/MultiSelectInput.js.map +1 -0
  126. package/dist/browser/inputs/NumberInput.js +288 -0
  127. package/dist/browser/inputs/NumberInput.js.map +1 -0
  128. package/dist/browser/inputs/Select.js +507 -0
  129. package/dist/browser/inputs/Select.js.map +1 -0
  130. package/dist/browser/inputs/SelectChip.js +151 -0
  131. package/dist/browser/inputs/SelectChip.js.map +1 -0
  132. package/dist/browser/inputs/SpecialInputs.js +117 -0
  133. package/dist/browser/inputs/SpecialInputs.js.map +1 -0
  134. package/dist/browser/inputs/Switch.js +117 -0
  135. package/dist/browser/inputs/Switch.js.map +1 -0
  136. package/dist/browser/inputs/TagEditor.js +358 -0
  137. package/dist/browser/inputs/TagEditor.js.map +1 -0
  138. package/dist/browser/inputs/TagsInput.js +195 -0
  139. package/dist/browser/inputs/TagsInput.js.map +1 -0
  140. package/dist/browser/inputs/TemplateEditor.js +190 -0
  141. package/dist/browser/inputs/TemplateEditor.js.map +1 -0
  142. package/dist/browser/inputs/TextInput.js +318 -0
  143. package/dist/browser/inputs/TextInput.js.map +1 -0
  144. package/dist/browser/inputs/choice.js +188 -0
  145. package/dist/browser/inputs/choice.js.map +1 -0
  146. package/dist/browser/inputs/completion/behaviors.js +108 -0
  147. package/dist/browser/inputs/completion/behaviors.js.map +1 -0
  148. package/dist/browser/inputs/completion/engine.js +103 -0
  149. package/dist/browser/inputs/completion/engine.js.map +1 -0
  150. package/dist/browser/inputs/completion/index.js +4 -0
  151. package/dist/browser/inputs/completion/index.js.map +1 -0
  152. package/dist/browser/inputs/completion/overlay.js +25 -0
  153. package/dist/browser/inputs/completion/overlay.js.map +1 -0
  154. package/dist/browser/inputs/date-picker.js +123 -0
  155. package/dist/browser/inputs/date-picker.js.map +1 -0
  156. package/dist/browser/inputs/editor-dom.js +26 -0
  157. package/dist/browser/inputs/editor-dom.js.map +1 -0
  158. package/dist/browser/inputs/field-contract.js +9 -0
  159. package/dist/browser/inputs/field-contract.js.map +1 -0
  160. package/dist/browser/inputs/icon-options.js +46 -0
  161. package/dist/browser/inputs/icon-options.js.map +1 -0
  162. package/dist/browser/inputs/image-crop.js +145 -0
  163. package/dist/browser/inputs/image-crop.js.map +1 -0
  164. package/dist/browser/inputs/index.js +23 -0
  165. package/dist/browser/inputs/index.js.map +1 -0
  166. package/dist/browser/inputs/markdown/MarkdownEditor.js +725 -0
  167. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -0
  168. package/dist/browser/inputs/markdown/Toolbar.js +172 -0
  169. package/dist/browser/inputs/markdown/Toolbar.js.map +1 -0
  170. package/dist/browser/inputs/markdown/actions.js +140 -0
  171. package/dist/browser/inputs/markdown/actions.js.map +1 -0
  172. package/dist/browser/inputs/markdown/active-formats.js +36 -0
  173. package/dist/browser/inputs/markdown/active-formats.js.map +1 -0
  174. package/dist/browser/inputs/markdown/behaviors.js +63 -0
  175. package/dist/browser/inputs/markdown/behaviors.js.map +1 -0
  176. package/dist/browser/inputs/markdown/code-zone.js +8 -0
  177. package/dist/browser/inputs/markdown/code-zone.js.map +1 -0
  178. package/dist/browser/internal/color.js +18 -0
  179. package/dist/browser/internal/color.js.map +1 -0
  180. package/dist/browser/internal/field.js +158 -0
  181. package/dist/browser/internal/field.js.map +1 -0
  182. package/dist/browser/internal/portal.js +17 -0
  183. package/dist/browser/internal/portal.js.map +1 -0
  184. package/dist/browser/intl/Format.js +273 -0
  185. package/dist/browser/intl/Format.js.map +1 -0
  186. package/dist/browser/intl/index.js +3 -0
  187. package/dist/browser/intl/index.js.map +1 -0
  188. package/dist/browser/intl/locale.js +63 -0
  189. package/dist/browser/intl/locale.js.map +1 -0
  190. package/dist/browser/intl/messages.js +753 -0
  191. package/dist/browser/intl/messages.js.map +1 -0
  192. package/dist/browser/layout/AppOverview.js +151 -0
  193. package/dist/browser/layout/AppOverview.js.map +1 -0
  194. package/dist/browser/layout/AppWorkspace.js +1502 -0
  195. package/dist/browser/layout/AppWorkspace.js.map +1 -0
  196. package/dist/browser/layout/DataPanel.js +122 -0
  197. package/dist/browser/layout/DataPanel.js.map +1 -0
  198. package/dist/browser/layout/DetailPanel.js +484 -0
  199. package/dist/browser/layout/DetailPanel.js.map +1 -0
  200. package/dist/browser/layout/Discussion.js +511 -0
  201. package/dist/browser/layout/Discussion.js.map +1 -0
  202. package/dist/browser/layout/FloatingWindow.js +332 -0
  203. package/dist/browser/layout/FloatingWindow.js.map +1 -0
  204. package/dist/browser/layout/PanelDialog.js +236 -0
  205. package/dist/browser/layout/PanelDialog.js.map +1 -0
  206. package/dist/browser/layout/PanelHeader.js +91 -0
  207. package/dist/browser/layout/PanelHeader.js.map +1 -0
  208. package/dist/browser/layout/Panes.js +978 -0
  209. package/dist/browser/layout/Panes.js.map +1 -0
  210. package/dist/browser/layout/ScrollArea.js +29 -0
  211. package/dist/browser/layout/ScrollArea.js.map +1 -0
  212. package/dist/browser/layout/Settings.js +381 -0
  213. package/dist/browser/layout/Settings.js.map +1 -0
  214. package/dist/browser/layout/SettingsCollection.js +212 -0
  215. package/dist/browser/layout/SettingsCollection.js.map +1 -0
  216. package/dist/browser/layout/SettingsModal.js +281 -0
  217. package/dist/browser/layout/SettingsModal.js.map +1 -0
  218. package/dist/browser/layout/app-workspace-controller.js +419 -0
  219. package/dist/browser/layout/app-workspace-controller.js.map +1 -0
  220. package/dist/browser/layout/app-workspace-state.js +125 -0
  221. package/dist/browser/layout/app-workspace-state.js.map +1 -0
  222. package/dist/browser/layout/floating-window-geometry.js +15 -0
  223. package/dist/browser/layout/floating-window-geometry.js.map +1 -0
  224. package/dist/browser/layout/index.js +17 -0
  225. package/dist/browser/layout/index.js.map +1 -0
  226. package/dist/browser/layout/panes-layout.js +436 -0
  227. package/dist/browser/layout/panes-layout.js.map +1 -0
  228. package/dist/browser/layout/stable-id.js +17 -0
  229. package/dist/browser/layout/stable-id.js.map +1 -0
  230. package/dist/browser/semantics.js +2 -0
  231. package/dist/browser/semantics.js.map +1 -0
  232. package/dist/browser/surfaces/Avatar.js +97 -0
  233. package/dist/browser/surfaces/Avatar.js.map +1 -0
  234. package/dist/browser/surfaces/DescriptionList.js +66 -0
  235. package/dist/browser/surfaces/DescriptionList.js.map +1 -0
  236. package/dist/browser/surfaces/LinkCard.js +40 -0
  237. package/dist/browser/surfaces/LinkCard.js.map +1 -0
  238. package/dist/browser/surfaces/NotFoundState.js +85 -0
  239. package/dist/browser/surfaces/NotFoundState.js.map +1 -0
  240. package/dist/browser/surfaces/NoticeCard.js +145 -0
  241. package/dist/browser/surfaces/NoticeCard.js.map +1 -0
  242. package/dist/browser/surfaces/Paper.js +33 -0
  243. package/dist/browser/surfaces/Paper.js.map +1 -0
  244. package/dist/browser/surfaces/Placeholder.js +90 -0
  245. package/dist/browser/surfaces/Placeholder.js.map +1 -0
  246. package/dist/browser/surfaces/ProgressBar.js +58 -0
  247. package/dist/browser/surfaces/ProgressBar.js.map +1 -0
  248. package/dist/browser/surfaces/StatCell.js +172 -0
  249. package/dist/browser/surfaces/StatCell.js.map +1 -0
  250. package/dist/browser/surfaces/StatGrid.js +80 -0
  251. package/dist/browser/surfaces/StatGrid.js.map +1 -0
  252. package/dist/browser/surfaces/StatusBadge.js +70 -0
  253. package/dist/browser/surfaces/StatusBadge.js.map +1 -0
  254. package/dist/browser/surfaces/Tag.js +94 -0
  255. package/dist/browser/surfaces/Tag.js.map +1 -0
  256. package/dist/browser/surfaces/index.js +13 -0
  257. package/dist/browser/surfaces/index.js.map +1 -0
  258. package/dist/browser/widgets/Widget.js +89 -0
  259. package/dist/browser/widgets/Widget.js.map +1 -0
  260. package/dist/browser/widgets/WidgetHero.js +47 -0
  261. package/dist/browser/widgets/WidgetHero.js.map +1 -0
  262. package/dist/browser/widgets/WidgetList.js +125 -0
  263. package/dist/browser/widgets/WidgetList.js.map +1 -0
  264. package/dist/browser/widgets/WidgetPills.js +78 -0
  265. package/dist/browser/widgets/WidgetPills.js.map +1 -0
  266. package/dist/browser/widgets/WidgetStat.js +114 -0
  267. package/dist/browser/widgets/WidgetStat.js.map +1 -0
  268. package/dist/browser/widgets/WidgetStatus.js +54 -0
  269. package/dist/browser/widgets/WidgetStatus.js.map +1 -0
  270. package/dist/browser/widgets/index.js +7 -0
  271. package/dist/browser/widgets/index.js.map +1 -0
  272. package/dist/global.css +3 -0
  273. package/dist/licenses/ibm-plex-mono.txt +93 -0
  274. package/dist/licenses/ibm-plex-sans.txt +93 -0
  275. package/dist/licenses/tabler-icons.txt +21 -0
  276. package/dist/plex.css +1 -0
  277. package/dist/ssr/actions/Button.js +203 -0
  278. package/dist/ssr/actions/Button.js.map +1 -0
  279. package/dist/ssr/actions/ContextMenu.js +128 -0
  280. package/dist/ssr/actions/ContextMenu.js.map +1 -0
  281. package/dist/ssr/actions/CopyButton.js +79 -0
  282. package/dist/ssr/actions/CopyButton.js.map +1 -0
  283. package/dist/ssr/actions/Disclosure.js +26 -0
  284. package/dist/ssr/actions/Disclosure.js.map +1 -0
  285. package/dist/ssr/actions/Dropdown.js +443 -0
  286. package/dist/ssr/actions/Dropdown.js.map +1 -0
  287. package/dist/ssr/actions/FilterChip.js +132 -0
  288. package/dist/ssr/actions/FilterChip.js.map +1 -0
  289. package/dist/ssr/actions/RemoveButton.js +45 -0
  290. package/dist/ssr/actions/RemoveButton.js.map +1 -0
  291. package/dist/ssr/actions/SegmentedControl.js +57 -0
  292. package/dist/ssr/actions/SegmentedControl.js.map +1 -0
  293. package/dist/ssr/actions/SplitButton.js +74 -0
  294. package/dist/ssr/actions/SplitButton.js.map +1 -0
  295. package/dist/ssr/actions/SpotlightSearch.js +38 -0
  296. package/dist/ssr/actions/SpotlightSearch.js.map +1 -0
  297. package/dist/ssr/actions/Tabs.js +91 -0
  298. package/dist/ssr/actions/Tabs.js.map +1 -0
  299. package/dist/ssr/actions/Toolbar.js +33 -0
  300. package/dist/ssr/actions/Toolbar.js.map +1 -0
  301. package/dist/ssr/actions/index.js +13 -0
  302. package/dist/ssr/actions/index.js.map +1 -0
  303. package/dist/ssr/chat/ChatComposer.js +392 -0
  304. package/dist/ssr/chat/ChatComposer.js.map +1 -0
  305. package/dist/ssr/chat/ChatPrimitives.js +377 -0
  306. package/dist/ssr/chat/ChatPrimitives.js.map +1 -0
  307. package/dist/ssr/chat/ChatRoot.js +10 -0
  308. package/dist/ssr/chat/ChatRoot.js.map +1 -0
  309. package/dist/ssr/chat/ChatTimeline.js +301 -0
  310. package/dist/ssr/chat/ChatTimeline.js.map +1 -0
  311. package/dist/ssr/chat/chat-behavior.js +53 -0
  312. package/dist/ssr/chat/chat-behavior.js.map +1 -0
  313. package/dist/ssr/chat/index.js +17 -0
  314. package/dist/ssr/chat/index.js.map +1 -0
  315. package/dist/ssr/chat/types.js +2 -0
  316. package/dist/ssr/chat/types.js.map +1 -0
  317. package/dist/ssr/content/Calendar.js +1542 -0
  318. package/dist/ssr/content/Calendar.js.map +1 -0
  319. package/dist/ssr/content/Chart.js +552 -0
  320. package/dist/ssr/content/Chart.js.map +1 -0
  321. package/dist/ssr/content/CodeDisplay.js +55 -0
  322. package/dist/ssr/content/CodeDisplay.js.map +1 -0
  323. package/dist/ssr/content/DataTable.js +470 -0
  324. package/dist/ssr/content/DataTable.js.map +1 -0
  325. package/dist/ssr/content/Docs.js +108 -0
  326. package/dist/ssr/content/Docs.js.map +1 -0
  327. package/dist/ssr/content/FileBrowser.js +422 -0
  328. package/dist/ssr/content/FileBrowser.js.map +1 -0
  329. package/dist/ssr/content/FileTree.js +299 -0
  330. package/dist/ssr/content/FileTree.js.map +1 -0
  331. package/dist/ssr/content/FileView.js +612 -0
  332. package/dist/ssr/content/FileView.js.map +1 -0
  333. package/dist/ssr/content/Lightbox.js +164 -0
  334. package/dist/ssr/content/Lightbox.js.map +1 -0
  335. package/dist/ssr/content/LogEntriesTable.js +106 -0
  336. package/dist/ssr/content/LogEntriesTable.js.map +1 -0
  337. package/dist/ssr/content/MarkdownView.js +119 -0
  338. package/dist/ssr/content/MarkdownView.js.map +1 -0
  339. package/dist/ssr/content/Pagination.js +141 -0
  340. package/dist/ssr/content/Pagination.js.map +1 -0
  341. package/dist/ssr/content/PdfPreview.js +126 -0
  342. package/dist/ssr/content/PdfPreview.js.map +1 -0
  343. package/dist/ssr/content/RangePicker.js +35 -0
  344. package/dist/ssr/content/RangePicker.js.map +1 -0
  345. package/dist/ssr/content/StructuredDataPreview.js +127 -0
  346. package/dist/ssr/content/StructuredDataPreview.js.map +1 -0
  347. package/dist/ssr/content/calendar-event-layout.js +92 -0
  348. package/dist/ssr/content/calendar-event-layout.js.map +1 -0
  349. package/dist/ssr/content/calendar-pointer.js +114 -0
  350. package/dist/ssr/content/calendar-pointer.js.map +1 -0
  351. package/dist/ssr/content/chart-map-viewport.js +33 -0
  352. package/dist/ssr/content/chart-map-viewport.js.map +1 -0
  353. package/dist/ssr/content/chart-state-timeline.js +124 -0
  354. package/dist/ssr/content/chart-state-timeline.js.map +1 -0
  355. package/dist/ssr/content/code-highlight.js +144 -0
  356. package/dist/ssr/content/code-highlight.js.map +1 -0
  357. package/dist/ssr/content/file-tree.js +93 -0
  358. package/dist/ssr/content/file-tree.js.map +1 -0
  359. package/dist/ssr/content/file-view-preview.js +112 -0
  360. package/dist/ssr/content/file-view-preview.js.map +1 -0
  361. package/dist/ssr/content/index.js +16 -0
  362. package/dist/ssr/content/index.js.map +1 -0
  363. package/dist/ssr/feedback/InlineGuidance.js +26 -0
  364. package/dist/ssr/feedback/InlineGuidance.js.map +1 -0
  365. package/dist/ssr/feedback/Tooltip.js +156 -0
  366. package/dist/ssr/feedback/Tooltip.js.map +1 -0
  367. package/dist/ssr/feedback/dialog-core.js +207 -0
  368. package/dist/ssr/feedback/dialog-core.js.map +1 -0
  369. package/dist/ssr/feedback/index.js +6 -0
  370. package/dist/ssr/feedback/index.js.map +1 -0
  371. package/dist/ssr/feedback/prompts.js +703 -0
  372. package/dist/ssr/feedback/prompts.js.map +1 -0
  373. package/dist/ssr/feedback/toast.js +271 -0
  374. package/dist/ssr/feedback/toast.js.map +1 -0
  375. package/dist/ssr/feedback/tooltip-position.js +25 -0
  376. package/dist/ssr/feedback/tooltip-position.js.map +1 -0
  377. package/dist/ssr/index.js +11 -0
  378. package/dist/ssr/index.js.map +1 -0
  379. package/dist/ssr/inputs/AutocompleteEditor.js +463 -0
  380. package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -0
  381. package/dist/ssr/inputs/AutocompleteSelect.js +420 -0
  382. package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -0
  383. package/dist/ssr/inputs/Checkbox.js +75 -0
  384. package/dist/ssr/inputs/Checkbox.js.map +1 -0
  385. package/dist/ssr/inputs/CheckboxCard.js +69 -0
  386. package/dist/ssr/inputs/CheckboxCard.js.map +1 -0
  387. package/dist/ssr/inputs/ChoiceGroups.js +101 -0
  388. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -0
  389. package/dist/ssr/inputs/ChoiceInputs.js +250 -0
  390. package/dist/ssr/inputs/ChoiceInputs.js.map +1 -0
  391. package/dist/ssr/inputs/Combobox.js +177 -0
  392. package/dist/ssr/inputs/Combobox.js.map +1 -0
  393. package/dist/ssr/inputs/DatePicker.js +629 -0
  394. package/dist/ssr/inputs/DatePicker.js.map +1 -0
  395. package/dist/ssr/inputs/FileInputs.js +543 -0
  396. package/dist/ssr/inputs/FileInputs.js.map +1 -0
  397. package/dist/ssr/inputs/MultiSelectInput.js +347 -0
  398. package/dist/ssr/inputs/MultiSelectInput.js.map +1 -0
  399. package/dist/ssr/inputs/NumberInput.js +177 -0
  400. package/dist/ssr/inputs/NumberInput.js.map +1 -0
  401. package/dist/ssr/inputs/Select.js +308 -0
  402. package/dist/ssr/inputs/Select.js.map +1 -0
  403. package/dist/ssr/inputs/SelectChip.js +129 -0
  404. package/dist/ssr/inputs/SelectChip.js.map +1 -0
  405. package/dist/ssr/inputs/SpecialInputs.js +116 -0
  406. package/dist/ssr/inputs/SpecialInputs.js.map +1 -0
  407. package/dist/ssr/inputs/Switch.js +62 -0
  408. package/dist/ssr/inputs/Switch.js.map +1 -0
  409. package/dist/ssr/inputs/TagEditor.js +280 -0
  410. package/dist/ssr/inputs/TagEditor.js.map +1 -0
  411. package/dist/ssr/inputs/TagsInput.js +122 -0
  412. package/dist/ssr/inputs/TagsInput.js.map +1 -0
  413. package/dist/ssr/inputs/TemplateEditor.js +164 -0
  414. package/dist/ssr/inputs/TemplateEditor.js.map +1 -0
  415. package/dist/ssr/inputs/TextInput.js +211 -0
  416. package/dist/ssr/inputs/TextInput.js.map +1 -0
  417. package/dist/ssr/inputs/choice.js +188 -0
  418. package/dist/ssr/inputs/choice.js.map +1 -0
  419. package/dist/ssr/inputs/completion/behaviors.js +108 -0
  420. package/dist/ssr/inputs/completion/behaviors.js.map +1 -0
  421. package/dist/ssr/inputs/completion/engine.js +103 -0
  422. package/dist/ssr/inputs/completion/engine.js.map +1 -0
  423. package/dist/ssr/inputs/completion/index.js +4 -0
  424. package/dist/ssr/inputs/completion/index.js.map +1 -0
  425. package/dist/ssr/inputs/completion/overlay.js +25 -0
  426. package/dist/ssr/inputs/completion/overlay.js.map +1 -0
  427. package/dist/ssr/inputs/date-picker.js +123 -0
  428. package/dist/ssr/inputs/date-picker.js.map +1 -0
  429. package/dist/ssr/inputs/editor-dom.js +26 -0
  430. package/dist/ssr/inputs/editor-dom.js.map +1 -0
  431. package/dist/ssr/inputs/field-contract.js +9 -0
  432. package/dist/ssr/inputs/field-contract.js.map +1 -0
  433. package/dist/ssr/inputs/icon-options.js +46 -0
  434. package/dist/ssr/inputs/icon-options.js.map +1 -0
  435. package/dist/ssr/inputs/image-crop.js +145 -0
  436. package/dist/ssr/inputs/image-crop.js.map +1 -0
  437. package/dist/ssr/inputs/index.js +23 -0
  438. package/dist/ssr/inputs/index.js.map +1 -0
  439. package/dist/ssr/inputs/markdown/MarkdownEditor.js +516 -0
  440. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -0
  441. package/dist/ssr/inputs/markdown/Toolbar.js +115 -0
  442. package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -0
  443. package/dist/ssr/inputs/markdown/actions.js +140 -0
  444. package/dist/ssr/inputs/markdown/actions.js.map +1 -0
  445. package/dist/ssr/inputs/markdown/active-formats.js +36 -0
  446. package/dist/ssr/inputs/markdown/active-formats.js.map +1 -0
  447. package/dist/ssr/inputs/markdown/behaviors.js +63 -0
  448. package/dist/ssr/inputs/markdown/behaviors.js.map +1 -0
  449. package/dist/ssr/inputs/markdown/code-zone.js +8 -0
  450. package/dist/ssr/inputs/markdown/code-zone.js.map +1 -0
  451. package/dist/ssr/internal/color.js +18 -0
  452. package/dist/ssr/internal/color.js.map +1 -0
  453. package/dist/ssr/internal/field.js +90 -0
  454. package/dist/ssr/internal/field.js.map +1 -0
  455. package/dist/ssr/internal/portal.js +17 -0
  456. package/dist/ssr/internal/portal.js.map +1 -0
  457. package/dist/ssr/intl/Format.js +192 -0
  458. package/dist/ssr/intl/Format.js.map +1 -0
  459. package/dist/ssr/intl/index.js +3 -0
  460. package/dist/ssr/intl/index.js.map +1 -0
  461. package/dist/ssr/intl/locale.js +63 -0
  462. package/dist/ssr/intl/locale.js.map +1 -0
  463. package/dist/ssr/intl/messages.js +753 -0
  464. package/dist/ssr/intl/messages.js.map +1 -0
  465. package/dist/ssr/layout/AppOverview.js +85 -0
  466. package/dist/ssr/layout/AppOverview.js.map +1 -0
  467. package/dist/ssr/layout/AppWorkspace.js +976 -0
  468. package/dist/ssr/layout/AppWorkspace.js.map +1 -0
  469. package/dist/ssr/layout/DataPanel.js +101 -0
  470. package/dist/ssr/layout/DataPanel.js.map +1 -0
  471. package/dist/ssr/layout/DetailPanel.js +284 -0
  472. package/dist/ssr/layout/DetailPanel.js.map +1 -0
  473. package/dist/ssr/layout/Discussion.js +319 -0
  474. package/dist/ssr/layout/Discussion.js.map +1 -0
  475. package/dist/ssr/layout/FloatingWindow.js +259 -0
  476. package/dist/ssr/layout/FloatingWindow.js.map +1 -0
  477. package/dist/ssr/layout/PanelDialog.js +136 -0
  478. package/dist/ssr/layout/PanelDialog.js.map +1 -0
  479. package/dist/ssr/layout/PanelHeader.js +45 -0
  480. package/dist/ssr/layout/PanelHeader.js.map +1 -0
  481. package/dist/ssr/layout/Panes.js +678 -0
  482. package/dist/ssr/layout/Panes.js.map +1 -0
  483. package/dist/ssr/layout/ScrollArea.js +18 -0
  484. package/dist/ssr/layout/ScrollArea.js.map +1 -0
  485. package/dist/ssr/layout/Settings.js +219 -0
  486. package/dist/ssr/layout/Settings.js.map +1 -0
  487. package/dist/ssr/layout/SettingsCollection.js +150 -0
  488. package/dist/ssr/layout/SettingsCollection.js.map +1 -0
  489. package/dist/ssr/layout/SettingsModal.js +156 -0
  490. package/dist/ssr/layout/SettingsModal.js.map +1 -0
  491. package/dist/ssr/layout/app-workspace-controller.js +419 -0
  492. package/dist/ssr/layout/app-workspace-controller.js.map +1 -0
  493. package/dist/ssr/layout/app-workspace-state.js +125 -0
  494. package/dist/ssr/layout/app-workspace-state.js.map +1 -0
  495. package/dist/ssr/layout/floating-window-geometry.js +15 -0
  496. package/dist/ssr/layout/floating-window-geometry.js.map +1 -0
  497. package/dist/ssr/layout/index.js +17 -0
  498. package/dist/ssr/layout/index.js.map +1 -0
  499. package/dist/ssr/layout/panes-layout.js +436 -0
  500. package/dist/ssr/layout/panes-layout.js.map +1 -0
  501. package/dist/ssr/layout/stable-id.js +17 -0
  502. package/dist/ssr/layout/stable-id.js.map +1 -0
  503. package/dist/ssr/semantics.js +2 -0
  504. package/dist/ssr/semantics.js.map +1 -0
  505. package/dist/ssr/surfaces/Avatar.js +43 -0
  506. package/dist/ssr/surfaces/Avatar.js.map +1 -0
  507. package/dist/ssr/surfaces/DescriptionList.js +25 -0
  508. package/dist/ssr/surfaces/DescriptionList.js.map +1 -0
  509. package/dist/ssr/surfaces/LinkCard.js +25 -0
  510. package/dist/ssr/surfaces/LinkCard.js.map +1 -0
  511. package/dist/ssr/surfaces/NotFoundState.js +38 -0
  512. package/dist/ssr/surfaces/NotFoundState.js.map +1 -0
  513. package/dist/ssr/surfaces/NoticeCard.js +83 -0
  514. package/dist/ssr/surfaces/NoticeCard.js.map +1 -0
  515. package/dist/ssr/surfaces/Paper.js +32 -0
  516. package/dist/ssr/surfaces/Paper.js.map +1 -0
  517. package/dist/ssr/surfaces/Placeholder.js +76 -0
  518. package/dist/ssr/surfaces/Placeholder.js.map +1 -0
  519. package/dist/ssr/surfaces/ProgressBar.js +13 -0
  520. package/dist/ssr/surfaces/ProgressBar.js.map +1 -0
  521. package/dist/ssr/surfaces/StatCell.js +80 -0
  522. package/dist/ssr/surfaces/StatCell.js.map +1 -0
  523. package/dist/ssr/surfaces/StatGrid.js +62 -0
  524. package/dist/ssr/surfaces/StatGrid.js.map +1 -0
  525. package/dist/ssr/surfaces/StatusBadge.js +38 -0
  526. package/dist/ssr/surfaces/StatusBadge.js.map +1 -0
  527. package/dist/ssr/surfaces/Tag.js +32 -0
  528. package/dist/ssr/surfaces/Tag.js.map +1 -0
  529. package/dist/ssr/surfaces/index.js +13 -0
  530. package/dist/ssr/surfaces/index.js.map +1 -0
  531. package/dist/ssr/widgets/Widget.js +54 -0
  532. package/dist/ssr/widgets/Widget.js.map +1 -0
  533. package/dist/ssr/widgets/WidgetHero.js +23 -0
  534. package/dist/ssr/widgets/WidgetHero.js.map +1 -0
  535. package/dist/ssr/widgets/WidgetList.js +73 -0
  536. package/dist/ssr/widgets/WidgetList.js.map +1 -0
  537. package/dist/ssr/widgets/WidgetPills.js +40 -0
  538. package/dist/ssr/widgets/WidgetPills.js.map +1 -0
  539. package/dist/ssr/widgets/WidgetStat.js +45 -0
  540. package/dist/ssr/widgets/WidgetStat.js.map +1 -0
  541. package/dist/ssr/widgets/WidgetStatus.js +23 -0
  542. package/dist/ssr/widgets/WidgetStatus.js.map +1 -0
  543. package/dist/ssr/widgets/index.js +7 -0
  544. package/dist/ssr/widgets/index.js.map +1 -0
  545. package/dist/styles.css +1 -0
  546. package/dist/tabler-icons-q30jt7jk.woff2 +0 -0
  547. package/dist/tabler.css +4 -0
  548. package/package.json +77 -0
@@ -0,0 +1,377 @@
1
+ import { mergeProps as _$mergeProps } from "solid-js/web";
2
+ import { ssrStyle as _$ssrStyle } from "solid-js/web";
3
+ import { createComponent as _$createComponent } from "solid-js/web";
4
+ import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
5
+ import { escape as _$escape } from "solid-js/web";
6
+ import { ssr as _$ssr } from "solid-js/web";
7
+ var _tmpl$ = "<span class=\"k2b-chat-progress-dots\" aria-hidden=\"true\"><span></span><span></span><span></span></span>",
8
+ _tmpl$2 = ["<div class=\"k2b-chat-message__attachments\" role=\"list\"", ">", "</div>"],
9
+ _tmpl$3 = ["<div class=\"k2b-chat-message__bubble\"><div class=\"k2b-chat-message__content\">", "</div></div>"],
10
+ _tmpl$4 = ["<span class=\"k2b-chat-message__status k2b-chat-message__status--streaming\" role=\"status\"", ">", "</span>"],
11
+ _tmpl$5 = ["<span class=\"k2b-chat-message__actions\" role=\"group\"", ">", "</span>"],
12
+ _tmpl$6 = "<i class=\"ti ti-dots\" aria-hidden=\"true\"></i>",
13
+ _tmpl$7 = ["<footer class=\"k2b-chat-message__meta\">", "", "", "", "</footer>"],
14
+ _tmpl$8 = ["<article class=\"", "\"", "><span class=\"k2b-sr-only\">", ": </span>", "", "", "</article>"],
15
+ _tmpl$9 = ["<img", ">"],
16
+ _tmpl$0 = ["<span>", "</span>"],
17
+ _tmpl$1 = ["<i", " aria-hidden=\"true\"></i>"],
18
+ _tmpl$10 = ["<div class=\"k2b-chat-message__attachment\" role=\"listitem\"", ">", "</div>"],
19
+ _tmpl$11 = ["<a class=\"k2b-chat-message__attachment\" role=\"listitem\"", " target=\"_blank\" rel=\"noopener noreferrer\"", ">", "</a>"],
20
+ _tmpl$12 = ["<span class=\"k2b-chat-message__status\"", "><i", " aria-hidden=\"true\"></i>", "</span>"],
21
+ _tmpl$13 = ["<time", ">", "</time>"],
22
+ _tmpl$14 = ["<button type=\"button\"", "", "><i", " aria-hidden=\"true\"></i></button>"],
23
+ _tmpl$15 = ["<span class=\"k2b-chat-activity__leading\" aria-hidden=\"true\">", "</span>"],
24
+ _tmpl$16 = ["<span class=\"k2b-chat-activity__copy\"><strong>", "</strong>", "</span>"],
25
+ _tmpl$17 = ["<span class=\"k2b-chat-activity__trailing\">", "</span>"],
26
+ _tmpl$18 = "<i class=\"ti ti-chevron-right k2b-chat-activity__chevron\" aria-hidden=\"true\"></i>",
27
+ _tmpl$19 = ["<i", "></i>"],
28
+ _tmpl$20 = ["<small>", "</small>"],
29
+ _tmpl$21 = ["<details class=\"", "\"", " style=\"", "\"", "><summary class=\"k2b-chat-activity__row\">", "</summary><div class=\"k2b-chat-activity__body\">", "</div></details>"],
30
+ _tmpl$22 = ["<div class=\"", "\"", " style=\"", "\"", "><div class=\"k2b-chat-activity__row\">", "</div></div>"],
31
+ _tmpl$23 = "<i class=\"ti ti-brain\" aria-hidden=\"true\"></i>",
32
+ _tmpl$24 = ["<div><dt>", "</dt><dd>", "</dd></div>"],
33
+ _tmpl$25 = ["<div class=\"k2b-chat-context__tooltip\"><strong>", "</strong>", "<dl>", "<div><dt>", "</dt><dd>", "</dd></div><div><dt>", "</dt><dd>", "</dd></div>", "<div><dt>", "</dt><dd>", "</dd></div>", "</dl></div>"];
34
+ import { createSignal, For, onCleanup, Show } from "solid-js";
35
+ import { Dropdown } from "../actions/Dropdown";
36
+ import { Tooltip } from "../feedback/Tooltip";
37
+ import { useUiMessages } from "../intl/messages";
38
+ import { ProgressBar } from "../surfaces/ProgressBar";
39
+ import { executeChatAction } from "./chat-behavior";
40
+ const roleLabel = (role, messages) => {
41
+ if (role === "assistant") return messages.assistant;
42
+ if (role === "user") return messages.user;
43
+ if (role === "tool") return messages.tool;
44
+ return messages.system;
45
+ };
46
+ const statusLabel = (status, messages) => {
47
+ if (status === "pending") return messages.waiting;
48
+ if (status === "streaming") return messages.generating;
49
+ if (status === "error") return messages.failed;
50
+ return null;
51
+ };
52
+ const statusIcon = status => {
53
+ if (status === "pending") return "ti ti-clock";
54
+ return "ti ti-alert-circle";
55
+ };
56
+ const ChatProgressDots = () => _$ssr(_tmpl$);
57
+ const attachmentIcon = attachment => attachment.icon ?? (attachment.kind === "image" ? "ti ti-photo" : attachment.kind === "resource" ? "ti ti-link" : "ti ti-file");
58
+ const finiteNonNegative = value => typeof value === "number" && Number.isFinite(value) ? Math.max(0, value) : 0;
59
+ const finiteUsageValue = value => typeof value === "number" && Number.isFinite(value) && value >= 0 ? value : null;
60
+ const normalizedUsage = usage => {
61
+ const input = finiteUsageValue(usage?.input);
62
+ const output = finiteUsageValue(usage?.output);
63
+ const explicitTotal = finiteUsageValue(usage?.total);
64
+ const total = explicitTotal ?? (input !== null || output !== null ? (input ?? 0) + (output ?? 0) : null);
65
+ return {
66
+ input,
67
+ output,
68
+ total,
69
+ reported: total !== null
70
+ };
71
+ };
72
+ const formatStableInteger = value => {
73
+ const digits = String(Math.round(finiteNonNegative(value)));
74
+ return digits.replace(/\B(?=(\d{3})+(?!\d))/g, ",");
75
+ };
76
+ export const formatChatTokens = tokens => {
77
+ const value = finiteNonNegative(tokens);
78
+ if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`;
79
+ if (value >= 1_000) return `${(value / 1_000).toFixed(1)}k`;
80
+ return String(Math.round(value));
81
+ };
82
+ const dateTime = value => {
83
+ if (!value) return null;
84
+ const date = value instanceof Date ? value : new Date(value);
85
+ return Number.isFinite(date.getTime()) ? date.toISOString() : null;
86
+ };
87
+ export function ChatMessage(props) {
88
+ const messages = useUiMessages();
89
+ const [busyActionId, setBusyActionId] = createSignal(null);
90
+ const [completedActionId, setCompletedActionId] = createSignal(null);
91
+ let completedTimer;
92
+ const status = () => statusLabel(props.status, messages());
93
+ const timestamp = () => dateTime(props.createdAt);
94
+ // Locale and timezone are application policy. Requiring an explicit visible
95
+ // label keeps SSR and hydration byte-stable while `createdAt` still supplies
96
+ // the semantic machine-readable timestamp.
97
+ const time = () => props.timeLabel ?? null;
98
+ const actions = () => props.actions ?? [];
99
+ const actionDisplay = () => props.actionDisplay === "auto" || !props.actionDisplay ? props.role === "user" ? "menu" : "inline" : props.actionDisplay;
100
+ const hasMeta = () => props.status === "streaming" || status() !== null || Boolean(time()) || actions().length > 0;
101
+ const runAction = async action => {
102
+ if (action.disabled || busyActionId()) return;
103
+ setBusyActionId(action.id);
104
+ try {
105
+ await executeChatAction(action);
106
+ setCompletedActionId(action.id);
107
+ if (completedTimer) clearTimeout(completedTimer);
108
+ completedTimer = setTimeout(() => setCompletedActionId(null), 1400);
109
+ } catch (error) {
110
+ props.onActionError?.(error);
111
+ } finally {
112
+ setBusyActionId(null);
113
+ }
114
+ };
115
+ const actionIcon = action => busyActionId() === action.id ? "ti ti-loader-2 k2b-spin" : completedActionId() === action.id ? "ti ti-check" : action.icon ?? "ti ti-dots";
116
+ onCleanup(() => {
117
+ if (completedTimer) clearTimeout(completedTimer);
118
+ });
119
+ const menuItems = () => actions().map(action => ({
120
+ icon: actionIcon(action),
121
+ label: action.label,
122
+ variant: action.variant,
123
+ disabled: action.disabled || Boolean(busyActionId()),
124
+ action: () => void runAction(action)
125
+ }));
126
+ return _$ssr(_tmpl$8, `k2b-chat-message ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-role", _$escape(props.role, true), false) + _$ssrAttribute("data-status", _$escape(props.status ?? "complete", true), false) + _$ssrAttribute("data-chat-anchor", props.anchorId !== undefined ? _$escape(String(props.anchorId), true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-busy", props.status === "pending" || props.status === "streaming" ? "true" : _$escape(undefined, true), false), _$escape(props.label ?? roleLabel(props.role, messages())), _$escape(_$createComponent(Show, {
127
+ get when() {
128
+ return (props.attachments?.length ?? 0) > 0;
129
+ },
130
+ get children() {
131
+ return _$ssr(_tmpl$2, _$ssrAttribute("aria-label", _$escape(messages().attachments, true), false), _$escape(_$createComponent(For, {
132
+ get each() {
133
+ return props.attachments;
134
+ },
135
+ children: attachment => {
136
+ const content = () => [_$createComponent(Show, {
137
+ get when() {
138
+ return attachment.kind === "image" && attachment.previewUrl;
139
+ },
140
+ get fallback() {
141
+ return _$ssr(_tmpl$1, _$ssrAttribute("class", _$escape(attachmentIcon(attachment), true), false));
142
+ },
143
+ get children() {
144
+ return _$ssr(_tmpl$9, _$ssrAttribute("src", _$escape(attachment.previewUrl, true), false) + _$ssrAttribute("alt", _$escape(attachment.alt ?? attachment.name, true), false));
145
+ }
146
+ }), _$createComponent(Show, {
147
+ get when() {
148
+ return attachment.kind !== "image";
149
+ },
150
+ get children() {
151
+ return _$ssr(_tmpl$0, _$escape(attachment.name));
152
+ }
153
+ })];
154
+ return _$createComponent(Show, {
155
+ get when() {
156
+ return attachment.href;
157
+ },
158
+ get fallback() {
159
+ return _$ssr(_tmpl$10, _$ssrAttribute("title", _$escape(attachment.name, true), false), _$escape(content()));
160
+ },
161
+ children: href => _$ssr(_tmpl$11, _$ssrAttribute("title", _$escape(attachment.name, true), false) + _$ssrAttribute("href", _$escape(href(), true), false), _$ssrAttribute("aria-label", _$escape(messages().openInNewTab({
162
+ name: attachment.name
163
+ }), true), false), _$escape(content()))
164
+ });
165
+ }
166
+ })));
167
+ }
168
+ })), _$escape(_$createComponent(Show, {
169
+ get when() {
170
+ return props.children !== undefined && props.children !== null && props.children !== "";
171
+ },
172
+ get children() {
173
+ return _$ssr(_tmpl$3, _$escape(props.children));
174
+ }
175
+ })), _$escape(_$createComponent(Show, {
176
+ get when() {
177
+ return hasMeta();
178
+ },
179
+ get children() {
180
+ return _$ssr(_tmpl$7, _$escape(_$createComponent(Show, {
181
+ get when() {
182
+ return props.status === "streaming";
183
+ },
184
+ get fallback() {
185
+ return _$createComponent(Show, {
186
+ get when() {
187
+ return status();
188
+ },
189
+ children: label => _$ssr(_tmpl$12, _$ssrAttribute("role", props.status === "error" ? "alert" : "status", false), _$ssrAttribute("class", _$escape(statusIcon(props.status), true), false), _$escape(label()))
190
+ });
191
+ },
192
+ get children() {
193
+ return _$ssr(_tmpl$4, _$ssrAttribute("aria-label", _$escape(messages().generating, true), false), _$escape(_$createComponent(ChatProgressDots, {})));
194
+ }
195
+ })), _$escape(_$createComponent(Show, {
196
+ get when() {
197
+ return time();
198
+ },
199
+ children: label => _$ssr(_tmpl$13, _$ssrAttribute("datetime", _$escape(timestamp() ?? undefined, true), false), _$escape(label()))
200
+ })), _$escape(_$createComponent(Show, {
201
+ get when() {
202
+ return actions().length > 0 && actionDisplay() === "inline";
203
+ },
204
+ get children() {
205
+ return _$ssr(_tmpl$5, _$ssrAttribute("aria-label", _$escape(messages().messageActions, true), false), _$escape(_$createComponent(For, {
206
+ get each() {
207
+ return actions();
208
+ },
209
+ children: action => _$ssr(_tmpl$14, _$ssrAttribute("aria-label", _$escape(action.label, true), false) + _$ssrAttribute("aria-pressed", _$escape(action.pressed, true), false) + _$ssrAttribute("title", _$escape(action.label, true), false) + _$ssrAttribute("data-danger", action.variant === "danger" ? "true" : _$escape(undefined, true), false), _$ssrAttribute("disabled", action.disabled || Boolean(busyActionId()), true), _$ssrAttribute("class", _$escape(actionIcon(action), true), false))
210
+ })));
211
+ }
212
+ })), _$escape(_$createComponent(Show, {
213
+ get when() {
214
+ return actions().length > 0 && actionDisplay() === "menu";
215
+ },
216
+ get children() {
217
+ return _$createComponent(Dropdown.Root, {
218
+ position: "bottom-left",
219
+ width: "12rem",
220
+ get label() {
221
+ return messages().messageActions;
222
+ },
223
+ get items() {
224
+ return menuItems();
225
+ },
226
+ get children() {
227
+ return _$createComponent(Dropdown.Trigger, {
228
+ appearance: "plain",
229
+ "class": "k2b-chat-message__menu",
230
+ get label() {
231
+ return messages().messageActions;
232
+ },
233
+ get title() {
234
+ return messages().messageActions;
235
+ },
236
+ get children() {
237
+ return _$ssr(_tmpl$6);
238
+ }
239
+ });
240
+ }
241
+ });
242
+ }
243
+ })));
244
+ }
245
+ })));
246
+ }
247
+ const ActivityContent = props => [_$ssr(_tmpl$15, _$escape(_$createComponent(Show, {
248
+ get when() {
249
+ return props.leading;
250
+ },
251
+ get fallback() {
252
+ return _$ssr(_tmpl$19, _$ssrAttribute("class", _$escape(props.icon ?? "ti ti-sparkles", true), false));
253
+ },
254
+ get children() {
255
+ return props.leading;
256
+ }
257
+ }))), _$ssr(_tmpl$16, _$escape(props.label), _$escape(_$createComponent(Show, {
258
+ get when() {
259
+ return props.description;
260
+ },
261
+ children: description => _$ssr(_tmpl$20, _$escape(description()))
262
+ }))), _$createComponent(Show, {
263
+ get when() {
264
+ return props.trailing;
265
+ },
266
+ get children() {
267
+ return _$ssr(_tmpl$17, _$escape(props.trailing));
268
+ }
269
+ }), _$createComponent(Show, {
270
+ get when() {
271
+ return props.disclosure;
272
+ },
273
+ get children() {
274
+ return _$ssr(_tmpl$18);
275
+ }
276
+ })];
277
+ export function ChatActivity(props) {
278
+ const tone = () => props.tone ?? "neutral";
279
+ const style = () => props.accent ? {
280
+ "--k2b-chat-activity-accent": props.accent
281
+ } : undefined;
282
+ return _$createComponent(Show, {
283
+ get when() {
284
+ return props.children;
285
+ },
286
+ get fallback() {
287
+ return _$ssr(_tmpl$22, `k2b-chat-activity ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-tone", _$escape(tone(), true), false) + _$ssrAttribute("data-accent", props.accent ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-busy", props.busy ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-chat-anchor", props.anchorId !== undefined ? _$escape(String(props.anchorId), true) : _$escape(undefined, true), false), _$ssrStyle(style()), _$ssrAttribute("aria-busy", props.busy ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(ActivityContent, props)));
288
+ },
289
+ get children() {
290
+ return _$ssr(_tmpl$21, `k2b-chat-activity ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-tone", _$escape(tone(), true), false) + _$ssrAttribute("data-accent", props.accent ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-busy", props.busy ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-body-inset", props.bodyInset === false ? "false" : _$escape(undefined, true), false) + _$ssrAttribute("data-chat-anchor", props.anchorId !== undefined ? _$escape(String(props.anchorId), true) : _$escape(undefined, true), false), _$ssrStyle(style()), _$ssrAttribute("open", props.open ?? props.defaultOpen, true) + _$ssrAttribute("aria-busy", props.busy ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(ActivityContent, _$mergeProps(props, {
291
+ disclosure: true
292
+ }))), _$escape(props.children));
293
+ }
294
+ });
295
+ }
296
+ export function ChatContextUsage(props) {
297
+ const messages = useUiMessages();
298
+ const formatNumber = value => (props.formatNumber ?? formatStableInteger)(value);
299
+ const formattedUsageValue = value => value === null ? messages().unknown : formatNumber(value);
300
+ const usage = () => normalizedUsage(props.usage);
301
+ const loopUsage = () => normalizedUsage(props.loopUsage);
302
+ const total = () => usage().total ?? 0;
303
+ const windowSize = () => finiteNonNegative(props.contextWindow);
304
+ const reported = () => usage().reported;
305
+ const percent = () => reported() && windowSize() > 0 ? Math.min(100, Math.round(total() / windowSize() * 100)) : null;
306
+ const remaining = () => reported() && windowSize() > 0 ? Math.max(0, windowSize() - total()) : null;
307
+ const accessibleLabel = () => {
308
+ if (!reported()) {
309
+ return windowSize() > 0 ? messages().contextUsageUnavailableWithWindow({
310
+ window: formatNumber(windowSize())
311
+ }) : messages().contextUsageUnavailable;
312
+ }
313
+ return percent() === null ? messages().tokensUsed({
314
+ total: formatNumber(total())
315
+ }) : messages().tokensUsedPercent({
316
+ total: formatNumber(total()),
317
+ percent: percent()
318
+ });
319
+ };
320
+ return _$createComponent(Tooltip.Trigger, {
321
+ placement: "top",
322
+ get content() {
323
+ return _$ssr(_tmpl$25, _$escape(messages().lastRequestContext), _$escape(_$createComponent(Show, {
324
+ get when() {
325
+ return percent() !== null;
326
+ },
327
+ get children() {
328
+ return _$createComponent(ProgressBar, {
329
+ get value() {
330
+ return percent() ?? 0;
331
+ },
332
+ size: "xs",
333
+ get tone() {
334
+ return (percent() ?? 0) >= 85 ? "danger" : "info";
335
+ },
336
+ get label() {
337
+ return messages().contextWindowUsed;
338
+ }
339
+ });
340
+ }
341
+ })), _$escape(_$createComponent(Show, {
342
+ get when() {
343
+ return props.modelLabel;
344
+ },
345
+ children: model => _$ssr(_tmpl$24, _$escape(messages().model), _$escape(model()))
346
+ })), _$escape(messages().input), _$escape(formattedUsageValue(usage().input)), _$escape(messages().output), _$escape(formattedUsageValue(usage().output)), _$escape(_$createComponent(Show, {
347
+ get when() {
348
+ return loopUsage().reported;
349
+ },
350
+ get children() {
351
+ return _$ssr(_tmpl$24, _$escape(messages().loopTotal), _$escape(formattedUsageValue(loopUsage().total)));
352
+ }
353
+ })), _$escape(messages().window), windowSize() > 0 ? _$escape(formatNumber(windowSize())) : _$escape(messages().notConfigured), _$escape(_$createComponent(Show, {
354
+ get when() {
355
+ return remaining() !== null;
356
+ },
357
+ get children() {
358
+ return _$ssr(_tmpl$24, _$escape(messages().remaining), remaining() === null ? _$escape(messages().unknown) : _$escape(formatNumber(remaining())));
359
+ }
360
+ })));
361
+ },
362
+ type: "button",
363
+ get ["class"]() {
364
+ return `k2b-chat-context ${props.class ?? ""}`;
365
+ },
366
+ get ["data-warning"]() {
367
+ return reported() && (percent() ?? 0) >= 85 ? "true" : undefined;
368
+ },
369
+ get ["aria-label"]() {
370
+ return accessibleLabel();
371
+ },
372
+ get children() {
373
+ return [_$ssr(_tmpl$23), _$ssr(_tmpl$0, percent() === null ? "–" : `${_$escape(percent())}%`)];
374
+ }
375
+ });
376
+ }
377
+ //# sourceMappingURL=ChatPrimitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createSignal","For","onCleanup","Show","Dropdown","Tooltip","useUiMessages","ProgressBar","executeChatAction","roleLabel","role","messages","assistant","user","tool","system","statusLabel","status","waiting","generating","failed","statusIcon","ChatProgressDots","_$ssr","_tmpl$","attachmentIcon","attachment","icon","kind","finiteNonNegative","value","Number","isFinite","Math","max","finiteUsageValue","normalizedUsage","usage","input","output","explicitTotal","total","reported","formatStableInteger","digits","String","round","replace","formatChatTokens","tokens","toFixed","dateTime","date","Date","getTime","toISOString","ChatMessage","props","busyActionId","setBusyActionId","completedActionId","setCompletedActionId","completedTimer","timestamp","createdAt","time","timeLabel","actions","actionDisplay","hasMeta","Boolean","length","runAction","action","disabled","id","clearTimeout","setTimeout","error","onActionError","actionIcon","menuItems","map","label","variant","_tmpl$8","_$escape","class","_$ssrAttribute","anchorId","undefined","_$createComponent","when","attachments","children","_tmpl$2","each","content","previewUrl","fallback","_tmpl$1","_tmpl$9","alt","name","_tmpl$0","href","_tmpl$10","_tmpl$11","openInNewTab","_tmpl$3","_tmpl$7","_tmpl$12","_tmpl$4","_tmpl$13","_tmpl$5","messageActions","_tmpl$14","pressed","Root","position","width","items","Trigger","appearance","title","_tmpl$6","ActivityContent","_tmpl$15","leading","_tmpl$19","_tmpl$16","description","_tmpl$20","trailing","_tmpl$17","disclosure","_tmpl$18","ChatActivity","tone","style","accent","_tmpl$22","busy","_$ssrStyle","_tmpl$21","bodyInset","open","defaultOpen","_$mergeProps","ChatContextUsage","formatNumber","formattedUsageValue","unknown","loopUsage","windowSize","contextWindow","percent","min","remaining","accessibleLabel","contextUsageUnavailableWithWindow","window","contextUsageUnavailable","tokensUsed","tokensUsedPercent","placement","_tmpl$25","lastRequestContext","size","contextWindowUsed","modelLabel","model","_tmpl$24","loopTotal","notConfigured","type","data-warning","aria-label","_tmpl$23"],"sources":["chat/ChatPrimitives.tsx"],"sourcesContent":["import { createSignal, For, type JSX, onCleanup, Show } from \"solid-js\";\nimport { Dropdown, type DropdownItem } from \"../actions/Dropdown\";\nimport { Tooltip } from \"../feedback/Tooltip\";\nimport { type UiMessages, useUiMessages } from \"../intl/messages\";\nimport { ProgressBar } from \"../surfaces/ProgressBar\";\nimport { executeChatAction } from \"./chat-behavior\";\nimport type { ChatAction, ChatActivityTone, ChatAttachment, ChatContextUsageData, ChatMessageStatus, ChatRole } from \"./types\";\n\nexport type ChatMessageProps = {\n role: ChatRole;\n children?: JSX.Element;\n label?: string;\n createdAt?: string | Date;\n timeLabel?: string;\n status?: ChatMessageStatus;\n attachments?: readonly ChatAttachment[];\n actions?: readonly ChatAction[];\n actionDisplay?: \"auto\" | \"inline\" | \"menu\";\n anchorId?: string | number;\n onActionError?: (error: unknown) => void;\n class?: string;\n};\n\nexport type ChatActivityProps = {\n label: string;\n description?: string;\n icon?: string;\n /** Optional host-owned leading visual rendered instead of the icon. */\n leading?: JSX.Element;\n /** Optional identity accent for the leading visual. Semantic tones still take precedence. */\n accent?: string;\n tone?: ChatActivityTone;\n /** Marks the activity as running with the shared accent sweep. */\n busy?: boolean;\n trailing?: JSX.Element;\n /** Controlled disclosure state. Omit to keep native details behavior. */\n open?: boolean;\n /** Reports disclosure changes when `open` is controlled by the host. */\n onOpenChange?: (open: boolean) => void;\n defaultOpen?: boolean;\n /** Set to false when the body is a peer list that should align with the activity row. */\n bodyInset?: boolean;\n anchorId?: string | number;\n children?: JSX.Element;\n class?: string;\n};\n\nexport type ChatContextUsageProps = ChatContextUsageData & {\n /** Host-owned number formatting. The default is locale-independent and SSR-stable. */\n formatNumber?: (value: number) => string;\n class?: string;\n};\n\nconst roleLabel = (role: ChatRole, messages: UiMessages): string => {\n if (role === \"assistant\") return messages.assistant;\n if (role === \"user\") return messages.user;\n if (role === \"tool\") return messages.tool;\n return messages.system;\n};\n\nconst statusLabel = (status: ChatMessageStatus | undefined, messages: UiMessages): string | null => {\n if (status === \"pending\") return messages.waiting;\n if (status === \"streaming\") return messages.generating;\n if (status === \"error\") return messages.failed;\n return null;\n};\n\nconst statusIcon = (status: ChatMessageStatus | undefined): string => {\n if (status === \"pending\") return \"ti ti-clock\";\n return \"ti ti-alert-circle\";\n};\n\nconst ChatProgressDots = () => (\n <span class=\"k2b-chat-progress-dots\" aria-hidden=\"true\">\n <span />\n <span />\n <span />\n </span>\n);\n\nconst attachmentIcon = (attachment: ChatAttachment): string =>\n attachment.icon ?? (attachment.kind === \"image\" ? \"ti ti-photo\" : attachment.kind === \"resource\" ? \"ti ti-link\" : \"ti ti-file\");\n\nconst finiteNonNegative = (value: number | undefined): number =>\n typeof value === \"number\" && Number.isFinite(value) ? Math.max(0, value) : 0;\n\nconst finiteUsageValue = (value: number | undefined): number | null =>\n typeof value === \"number\" && Number.isFinite(value) && value >= 0 ? value : null;\n\nconst normalizedUsage = (usage: ChatContextUsageData[\"usage\"]) => {\n const input = finiteUsageValue(usage?.input);\n const output = finiteUsageValue(usage?.output);\n const explicitTotal = finiteUsageValue(usage?.total);\n const total = explicitTotal ?? (input !== null || output !== null ? (input ?? 0) + (output ?? 0) : null);\n return { input, output, total, reported: total !== null };\n};\n\nconst formatStableInteger = (value: number): string => {\n const digits = String(Math.round(finiteNonNegative(value)));\n return digits.replace(/\\B(?=(\\d{3})+(?!\\d))/g, \",\");\n};\n\nexport const formatChatTokens = (tokens: number): string => {\n const value = finiteNonNegative(tokens);\n if (value >= 1_000_000) return `${(value / 1_000_000).toFixed(1)}M`;\n if (value >= 1_000) return `${(value / 1_000).toFixed(1)}k`;\n return String(Math.round(value));\n};\n\nconst dateTime = (value: string | Date | undefined): string | null => {\n if (!value) return null;\n const date = value instanceof Date ? value : new Date(value);\n return Number.isFinite(date.getTime()) ? date.toISOString() : null;\n};\n\nexport function ChatMessage(props: ChatMessageProps): JSX.Element {\n const messages = useUiMessages();\n const [busyActionId, setBusyActionId] = createSignal<string | null>(null);\n const [completedActionId, setCompletedActionId] = createSignal<string | null>(null);\n let completedTimer: ReturnType<typeof setTimeout> | undefined;\n const status = () => statusLabel(props.status, messages());\n const timestamp = () => dateTime(props.createdAt);\n // Locale and timezone are application policy. Requiring an explicit visible\n // label keeps SSR and hydration byte-stable while `createdAt` still supplies\n // the semantic machine-readable timestamp.\n const time = () => props.timeLabel ?? null;\n const actions = () => props.actions ?? [];\n const actionDisplay = () =>\n props.actionDisplay === \"auto\" || !props.actionDisplay ? (props.role === \"user\" ? \"menu\" : \"inline\") : props.actionDisplay;\n const hasMeta = () => props.status === \"streaming\" || status() !== null || Boolean(time()) || actions().length > 0;\n\n const runAction = async (action: ChatAction) => {\n if (action.disabled || busyActionId()) return;\n setBusyActionId(action.id);\n try {\n await executeChatAction(action);\n setCompletedActionId(action.id);\n if (completedTimer) clearTimeout(completedTimer);\n completedTimer = setTimeout(() => setCompletedActionId(null), 1400);\n } catch (error) {\n props.onActionError?.(error);\n } finally {\n setBusyActionId(null);\n }\n };\n\n const actionIcon = (action: ChatAction) =>\n busyActionId() === action.id\n ? \"ti ti-loader-2 k2b-spin\"\n : completedActionId() === action.id\n ? \"ti ti-check\"\n : (action.icon ?? \"ti ti-dots\");\n\n onCleanup(() => {\n if (completedTimer) clearTimeout(completedTimer);\n });\n\n const menuItems = (): readonly DropdownItem[] =>\n actions().map((action) => ({\n icon: actionIcon(action),\n label: action.label,\n variant: action.variant,\n disabled: action.disabled || Boolean(busyActionId()),\n action: () => void runAction(action),\n }));\n\n return (\n <article\n class={`k2b-chat-message ${props.class ?? \"\"}`}\n data-role={props.role}\n data-status={props.status ?? \"complete\"}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n aria-busy={props.status === \"pending\" || props.status === \"streaming\" ? \"true\" : undefined}\n >\n <span class=\"k2b-sr-only\">{props.label ?? roleLabel(props.role, messages())}: </span>\n <Show when={(props.attachments?.length ?? 0) > 0}>\n <div class=\"k2b-chat-message__attachments\" role=\"list\" aria-label={messages().attachments}>\n <For each={props.attachments}>\n {(attachment) => {\n const content = () => (\n <>\n <Show\n when={attachment.kind === \"image\" && attachment.previewUrl}\n fallback={<i class={attachmentIcon(attachment)} aria-hidden=\"true\" />}\n >\n <img src={attachment.previewUrl} alt={attachment.alt ?? attachment.name} />\n </Show>\n <Show when={attachment.kind !== \"image\"}>\n <span>{attachment.name}</span>\n </Show>\n </>\n );\n return (\n <Show\n when={attachment.href}\n fallback={\n <div class=\"k2b-chat-message__attachment\" role=\"listitem\" title={attachment.name}>\n {content()}\n </div>\n }\n >\n {(href) => (\n <a\n class=\"k2b-chat-message__attachment\"\n role=\"listitem\"\n title={attachment.name}\n href={href()}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n aria-label={messages().openInNewTab({ name: attachment.name })}\n >\n {content()}\n </a>\n )}\n </Show>\n );\n }}\n </For>\n </div>\n </Show>\n\n <Show when={props.children !== undefined && props.children !== null && props.children !== \"\"}>\n <div class=\"k2b-chat-message__bubble\">\n <div class=\"k2b-chat-message__content\">{props.children}</div>\n </div>\n </Show>\n\n <Show when={hasMeta()}>\n <footer class=\"k2b-chat-message__meta\">\n <Show\n when={props.status === \"streaming\"}\n fallback={\n <Show when={status()}>\n {(label) => (\n <span class=\"k2b-chat-message__status\" role={props.status === \"error\" ? \"alert\" : \"status\"}>\n <i class={statusIcon(props.status)} aria-hidden=\"true\" />\n {label()}\n </span>\n )}\n </Show>\n }\n >\n <span class=\"k2b-chat-message__status k2b-chat-message__status--streaming\" role=\"status\" aria-label={messages().generating}>\n <ChatProgressDots />\n </span>\n </Show>\n <Show when={time()}>{(label) => <time dateTime={timestamp() ?? undefined}>{label()}</time>}</Show>\n <Show when={actions().length > 0 && actionDisplay() === \"inline\"}>\n <span class=\"k2b-chat-message__actions\" role=\"group\" aria-label={messages().messageActions}>\n <For each={actions()}>\n {(action) => (\n <button\n type=\"button\"\n aria-label={action.label}\n aria-pressed={action.pressed}\n title={action.label}\n data-danger={action.variant === \"danger\" ? \"true\" : undefined}\n disabled={action.disabled || Boolean(busyActionId())}\n onClick={() => void runAction(action)}\n >\n <i class={actionIcon(action)} aria-hidden=\"true\" />\n </button>\n )}\n </For>\n </span>\n </Show>\n <Show when={actions().length > 0 && actionDisplay() === \"menu\"}>\n <Dropdown.Root position=\"bottom-left\" width=\"12rem\" label={messages().messageActions} items={menuItems()}>\n <Dropdown.Trigger\n appearance=\"plain\"\n class=\"k2b-chat-message__menu\"\n label={messages().messageActions}\n title={messages().messageActions}\n >\n <i class=\"ti ti-dots\" aria-hidden=\"true\" />\n </Dropdown.Trigger>\n </Dropdown.Root>\n </Show>\n </footer>\n </Show>\n </article>\n );\n}\n\nconst ActivityContent = (props: ChatActivityProps & { disclosure?: boolean }) => (\n <>\n <span class=\"k2b-chat-activity__leading\" aria-hidden=\"true\">\n <Show when={props.leading} fallback={<i class={props.icon ?? \"ti ti-sparkles\"} />}>\n {props.leading}\n </Show>\n </span>\n <span class=\"k2b-chat-activity__copy\">\n <strong>{props.label}</strong>\n <Show when={props.description}>{(description) => <small>{description()}</small>}</Show>\n </span>\n <Show when={props.trailing}>\n <span class=\"k2b-chat-activity__trailing\">{props.trailing}</span>\n </Show>\n <Show when={props.disclosure}>\n <i class=\"ti ti-chevron-right k2b-chat-activity__chevron\" aria-hidden=\"true\" />\n </Show>\n </>\n);\n\nexport function ChatActivity(props: ChatActivityProps): JSX.Element {\n const tone = () => props.tone ?? \"neutral\";\n const style = () => (props.accent ? { \"--k2b-chat-activity-accent\": props.accent } : undefined);\n return (\n <Show\n when={props.children}\n fallback={\n <div\n class={`k2b-chat-activity ${props.class ?? \"\"}`}\n data-tone={tone()}\n data-accent={props.accent ? \"true\" : undefined}\n data-busy={props.busy ? \"true\" : undefined}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n style={style()}\n aria-busy={props.busy ? \"true\" : undefined}\n >\n <div class=\"k2b-chat-activity__row\">\n <ActivityContent {...props} />\n </div>\n </div>\n }\n >\n <details\n class={`k2b-chat-activity ${props.class ?? \"\"}`}\n data-tone={tone()}\n data-accent={props.accent ? \"true\" : undefined}\n data-busy={props.busy ? \"true\" : undefined}\n data-body-inset={props.bodyInset === false ? \"false\" : undefined}\n data-chat-anchor={props.anchorId !== undefined ? String(props.anchorId) : undefined}\n style={style()}\n open={props.open ?? props.defaultOpen}\n onToggle={(event) => props.onOpenChange?.(event.currentTarget.open)}\n aria-busy={props.busy ? \"true\" : undefined}\n >\n <summary class=\"k2b-chat-activity__row\">\n <ActivityContent {...props} disclosure />\n </summary>\n <div class=\"k2b-chat-activity__body\">{props.children}</div>\n </details>\n </Show>\n );\n}\n\nexport function ChatContextUsage(props: ChatContextUsageProps): JSX.Element {\n const messages = useUiMessages();\n const formatNumber = (value: number) => (props.formatNumber ?? formatStableInteger)(value);\n const formattedUsageValue = (value: number | null): string => (value === null ? messages().unknown : formatNumber(value));\n const usage = () => normalizedUsage(props.usage);\n const loopUsage = () => normalizedUsage(props.loopUsage);\n const total = () => usage().total ?? 0;\n const windowSize = () => finiteNonNegative(props.contextWindow);\n const reported = () => usage().reported;\n const percent = () => (reported() && windowSize() > 0 ? Math.min(100, Math.round((total() / windowSize()) * 100)) : null);\n const remaining = () => (reported() && windowSize() > 0 ? Math.max(0, windowSize() - total()) : null);\n const accessibleLabel = () => {\n if (!reported()) {\n return windowSize() > 0\n ? messages().contextUsageUnavailableWithWindow({ window: formatNumber(windowSize()) })\n : messages().contextUsageUnavailable;\n }\n return percent() === null\n ? messages().tokensUsed({ total: formatNumber(total()) })\n : messages().tokensUsedPercent({ total: formatNumber(total()), percent: percent()! });\n };\n\n return (\n <Tooltip.Trigger\n placement=\"top\"\n content={\n <div class=\"k2b-chat-context__tooltip\">\n <strong>{messages().lastRequestContext}</strong>\n <Show when={percent() !== null}>\n <ProgressBar\n value={percent() ?? 0}\n size=\"xs\"\n tone={(percent() ?? 0) >= 85 ? \"danger\" : \"info\"}\n label={messages().contextWindowUsed}\n />\n </Show>\n <dl>\n <Show when={props.modelLabel}>\n {(model) => (\n <div>\n <dt>{messages().model}</dt>\n <dd>{model()}</dd>\n </div>\n )}\n </Show>\n <div>\n <dt>{messages().input}</dt>\n <dd>{formattedUsageValue(usage().input)}</dd>\n </div>\n <div>\n <dt>{messages().output}</dt>\n <dd>{formattedUsageValue(usage().output)}</dd>\n </div>\n <Show when={loopUsage().reported}>\n <div>\n <dt>{messages().loopTotal}</dt>\n <dd>{formattedUsageValue(loopUsage().total)}</dd>\n </div>\n </Show>\n <div>\n <dt>{messages().window}</dt>\n <dd>{windowSize() > 0 ? formatNumber(windowSize()) : messages().notConfigured}</dd>\n </div>\n <Show when={remaining() !== null}>\n <div>\n <dt>{messages().remaining}</dt>\n <dd>{remaining() === null ? messages().unknown : formatNumber(remaining()!)}</dd>\n </div>\n </Show>\n </dl>\n </div>\n }\n type=\"button\"\n class={`k2b-chat-context ${props.class ?? \"\"}`}\n data-warning={reported() && (percent() ?? 0) >= 85 ? \"true\" : undefined}\n aria-label={accessibleLabel()}\n >\n <i class=\"ti ti-brain\" aria-hidden=\"true\" />\n <span>{percent() === null ? \"–\" : `${percent()}%`}</span>\n </Tooltip.Trigger>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,10 @@
1
+ import { ssr as _$ssr } from "solid-js/web";
2
+ import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
3
+ import { escape as _$escape } from "solid-js/web";
4
+ var _tmpl$ = ["<section class=\"", "\"", ">", "</section>"];
5
+ import { useUiMessages } from "../intl/messages";
6
+ export function ChatRoot(props) {
7
+ const messages = useUiMessages();
8
+ return _$ssr(_tmpl$, `k2b-chat ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(props.label ?? messages().chat, true), false), _$escape(props.children));
9
+ }
10
+ //# sourceMappingURL=ChatRoot.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useUiMessages","ChatRoot","props","messages","_$ssr","_tmpl$","_$escape","class","_$ssrAttribute","label","chat","children"],"sources":["chat/ChatRoot.tsx"],"sourcesContent":["import type { JSX } from \"solid-js\";\nimport { useUiMessages } from \"../intl/messages\";\n\nexport type ChatRootProps = {\n children: JSX.Element;\n class?: string;\n label?: string;\n};\n\nexport function ChatRoot(props: ChatRootProps): JSX.Element {\n const messages = useUiMessages();\n return (\n <section class={`k2b-chat ${props.class ?? \"\"}`} aria-label={props.label ?? messages().chat}>\n {props.children}\n </section>\n );\n}\n"],"mappings":";;;;AACA,SAASA,aAAa,QAAQ,kBAAkB;AAQhD,OAAO,SAASC,QAAQA,CAACC,KAAoB,EAAe;EAC1D,MAAMC,QAAQ,GAAGH,aAAa,CAAC,CAAC;EAChC,OAAAI,KAAA,CAAAC,MAAA,EACkB,YAAAC,QAAA,CAAYJ,KAAK,CAACK,KAAK,IAAI,EAAE,SAAE,EAAAC,cAAA,eAAAF,QAAA,CAAcJ,KAAK,CAACO,KAAK,IAAIN,QAAQ,CAAC,CAAC,CAACO,IAAI,iBAAAJ,QAAA,CACxFJ,KAAK,CAACS,QAAQ;AAGrB","ignoreList":[]}