@k2b/ui 0.2.0 → 0.3.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 (366) hide show
  1. package/dist/browser/actions/Button.js +11 -2
  2. package/dist/browser/actions/Button.js.map +1 -1
  3. package/dist/browser/actions/Disclosure.js +11 -8
  4. package/dist/browser/actions/Disclosure.js.map +1 -1
  5. package/dist/browser/actions/Dropdown.js +4 -1
  6. package/dist/browser/actions/Dropdown.js.map +1 -1
  7. package/dist/browser/actions/FilterChip.js +16 -2
  8. package/dist/browser/actions/FilterChip.js.map +1 -1
  9. package/dist/browser/actions/SplitButton.js +69 -22
  10. package/dist/browser/actions/SplitButton.js.map +1 -1
  11. package/dist/browser/actions/SpotlightSearch.js +3 -7
  12. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  13. package/dist/browser/actions/Tabs.js +132 -47
  14. package/dist/browser/actions/Tabs.js.map +1 -1
  15. package/dist/browser/actions/index.js +1 -1
  16. package/dist/browser/actions/index.js.map +1 -1
  17. package/dist/browser/chat/ChatComposer.js +751 -423
  18. package/dist/browser/chat/ChatComposer.js.map +1 -1
  19. package/dist/browser/chat/ChatContextPopup.js +123 -0
  20. package/dist/browser/chat/ChatContextPopup.js.map +1 -0
  21. package/dist/browser/chat/ChatPrimitives.js +141 -78
  22. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  23. package/dist/browser/chat/ChatTasks.js +112 -0
  24. package/dist/browser/chat/ChatTasks.js.map +1 -0
  25. package/dist/browser/chat/ChatTimeline.js +31 -14
  26. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  27. package/dist/browser/chat/chat-behavior.js +0 -5
  28. package/dist/browser/chat/chat-behavior.js.map +1 -1
  29. package/dist/browser/chat/composer-document.js +55 -0
  30. package/dist/browser/chat/composer-document.js.map +1 -0
  31. package/dist/browser/chat/index.js +6 -1
  32. package/dist/browser/chat/index.js.map +1 -1
  33. package/dist/browser/chat/types.js.map +1 -1
  34. package/dist/browser/content/Chart.js +148 -239
  35. package/dist/browser/content/Chart.js.map +1 -1
  36. package/dist/browser/content/ChartExplorer.js +324 -0
  37. package/dist/browser/content/ChartExplorer.js.map +1 -0
  38. package/dist/browser/content/ChartExplorerControls.js +153 -0
  39. package/dist/browser/content/ChartExplorerControls.js.map +1 -0
  40. package/dist/browser/content/ChartFilterControls.js +200 -0
  41. package/dist/browser/content/ChartFilterControls.js.map +1 -0
  42. package/dist/browser/content/ChartSnapshotView.js +113 -0
  43. package/dist/browser/content/ChartSnapshotView.js.map +1 -0
  44. package/dist/browser/content/DataTable.js +48 -32
  45. package/dist/browser/content/DataTable.js.map +1 -1
  46. package/dist/browser/content/FileBrowser.js +3 -0
  47. package/dist/browser/content/FileBrowser.js.map +1 -1
  48. package/dist/browser/content/FileGrid.js +93 -0
  49. package/dist/browser/content/FileGrid.js.map +1 -0
  50. package/dist/browser/content/FileTree.js +2 -2
  51. package/dist/browser/content/FileTree.js.map +1 -1
  52. package/dist/browser/content/FileView.js +507 -162
  53. package/dist/browser/content/FileView.js.map +1 -1
  54. package/dist/browser/content/MarkdownView.js +6 -0
  55. package/dist/browser/content/MarkdownView.js.map +1 -1
  56. package/dist/browser/content/PdfPreview.js +107 -90
  57. package/dist/browser/content/PdfPreview.js.map +1 -1
  58. package/dist/browser/content/chart-cursor.js +33 -0
  59. package/dist/browser/content/chart-cursor.js.map +1 -0
  60. package/dist/browser/content/chart-explorer.js +147 -0
  61. package/dist/browser/content/chart-explorer.js.map +1 -0
  62. package/dist/browser/content/chart-inspection.js +447 -0
  63. package/dist/browser/content/chart-inspection.js.map +1 -0
  64. package/dist/browser/content/chart-line-gaps.js +53 -0
  65. package/dist/browser/content/chart-line-gaps.js.map +1 -0
  66. package/dist/browser/content/chart-map-viewport.js +5 -1
  67. package/dist/browser/content/chart-map-viewport.js.map +1 -1
  68. package/dist/browser/content/chart-snapshot.js +63 -0
  69. package/dist/browser/content/chart-snapshot.js.map +1 -0
  70. package/dist/browser/content/chart-state-timeline.js +32 -4
  71. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  72. package/dist/browser/content/chart-svg.js +54 -0
  73. package/dist/browser/content/chart-svg.js.map +1 -0
  74. package/dist/browser/content/collection-selection.js +109 -0
  75. package/dist/browser/content/collection-selection.js.map +1 -0
  76. package/dist/browser/content/delimited-preferences.js +21 -0
  77. package/dist/browser/content/delimited-preferences.js.map +1 -0
  78. package/dist/browser/content/file-tree.js.map +1 -1
  79. package/dist/browser/content/file-view-preview.js +11 -7
  80. package/dist/browser/content/file-view-preview.js.map +1 -1
  81. package/dist/browser/content/index.js +9 -0
  82. package/dist/browser/content/index.js.map +1 -1
  83. package/dist/browser/feedback/InlineGuidance.js +17 -3
  84. package/dist/browser/feedback/InlineGuidance.js.map +1 -1
  85. package/dist/browser/feedback/dialog-core.js +81 -7
  86. package/dist/browser/feedback/dialog-core.js.map +1 -1
  87. package/dist/browser/feedback/prompts.js +6 -0
  88. package/dist/browser/feedback/prompts.js.map +1 -1
  89. package/dist/browser/feedback/toast.js +29 -6
  90. package/dist/browser/feedback/toast.js.map +1 -1
  91. package/dist/browser/inputs/SelectChip.js +3 -2
  92. package/dist/browser/inputs/SelectChip.js.map +1 -1
  93. package/dist/browser/inputs/TextInput.js +7 -1
  94. package/dist/browser/inputs/TextInput.js.map +1 -1
  95. package/dist/browser/inputs/markdown/MarkdownEditor.js +61 -37
  96. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  97. package/dist/browser/intl/Format.js +89 -16
  98. package/dist/browser/intl/Format.js.map +1 -1
  99. package/dist/browser/intl/index.js.map +1 -1
  100. package/dist/browser/intl/messages.js +130 -2
  101. package/dist/browser/intl/messages.js.map +1 -1
  102. package/dist/browser/layout/AppWorkspace.js +712 -624
  103. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  104. package/dist/browser/layout/BottomSheet.js +95 -0
  105. package/dist/browser/layout/BottomSheet.js.map +1 -0
  106. package/dist/browser/layout/DetailPanel.js +56 -44
  107. package/dist/browser/layout/DetailPanel.js.map +1 -1
  108. package/dist/browser/layout/Navigation.js +278 -0
  109. package/dist/browser/layout/Navigation.js.map +1 -0
  110. package/dist/browser/layout/PanelDialog.js +219 -71
  111. package/dist/browser/layout/PanelDialog.js.map +1 -1
  112. package/dist/browser/layout/ScrollArea.js +21 -1
  113. package/dist/browser/layout/ScrollArea.js.map +1 -1
  114. package/dist/browser/layout/Settings.js.map +1 -1
  115. package/dist/browser/layout/SidebarItemPreview.js +183 -0
  116. package/dist/browser/layout/SidebarItemPreview.js.map +1 -0
  117. package/dist/browser/layout/app-workspace-controller.js +3 -0
  118. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  119. package/dist/browser/layout/index.js +3 -0
  120. package/dist/browser/layout/index.js.map +1 -1
  121. package/dist/browser/layout/navigation-model.js +23 -0
  122. package/dist/browser/layout/navigation-model.js.map +1 -0
  123. package/dist/browser/layout/scroll-fade.js +100 -0
  124. package/dist/browser/layout/scroll-fade.js.map +1 -0
  125. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  126. package/dist/browser/surfaces/StatusBadge.js +2 -1
  127. package/dist/browser/surfaces/StatusBadge.js.map +1 -1
  128. package/dist/fonts/ibm-plex-mono-cyrillic-400-italic-4aded3f2f2a7d27d.woff2 +0 -0
  129. package/dist/fonts/ibm-plex-mono-cyrillic-400-normal-7635422bd10ddbbc.woff2 +0 -0
  130. package/dist/fonts/ibm-plex-mono-cyrillic-500-normal-1d89462e86cb8e87.woff2 +0 -0
  131. package/dist/fonts/ibm-plex-mono-cyrillic-600-normal-2b05a8695c7f9f4a.woff2 +0 -0
  132. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-italic-a0b3b8cbe5a516e7.woff2 +0 -0
  133. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-normal-f8c22ec1804bd696.woff2 +0 -0
  134. package/dist/fonts/ibm-plex-mono-cyrillic-ext-500-normal-3febe5c7f22e4b07.woff2 +0 -0
  135. package/dist/fonts/ibm-plex-mono-cyrillic-ext-600-normal-83109cdd4f8665b4.woff2 +0 -0
  136. package/dist/fonts/ibm-plex-mono-latin-400-italic-0840095faae86403.woff2 +0 -0
  137. package/dist/fonts/ibm-plex-mono-latin-400-normal-08949f728dc52d52.woff2 +0 -0
  138. package/dist/fonts/ibm-plex-mono-latin-500-normal-01d285447409c8a5.woff2 +0 -0
  139. package/dist/fonts/ibm-plex-mono-latin-600-normal-0d1f0b8d0722224e.woff2 +0 -0
  140. package/dist/fonts/ibm-plex-mono-latin-ext-400-italic-1b07eee6df7d26b3.woff2 +0 -0
  141. package/dist/fonts/ibm-plex-mono-latin-ext-400-normal-6bc0f226a5b7884a.woff2 +0 -0
  142. package/dist/fonts/ibm-plex-mono-latin-ext-500-normal-6bb06407c97584b0.woff2 +0 -0
  143. package/dist/fonts/ibm-plex-mono-latin-ext-600-normal-32057cf50dd14bdb.woff2 +0 -0
  144. package/dist/fonts/ibm-plex-mono-vietnamese-400-italic-a6bab38af4f9c761.woff2 +0 -0
  145. package/dist/fonts/ibm-plex-mono-vietnamese-400-normal-62632b6375305e70.woff2 +0 -0
  146. package/dist/fonts/ibm-plex-mono-vietnamese-500-normal-781633d95de88040.woff2 +0 -0
  147. package/dist/fonts/ibm-plex-mono-vietnamese-600-normal-51b74d53e106ba8a.woff2 +0 -0
  148. package/dist/fonts/ibm-plex-sans-cyrillic-400-italic-e8731a7e2b00fc4f.woff2 +0 -0
  149. package/dist/fonts/ibm-plex-sans-cyrillic-400-normal-69afad88a0740b6e.woff2 +0 -0
  150. package/dist/fonts/ibm-plex-sans-cyrillic-500-normal-200be3a2a6b1789f.woff2 +0 -0
  151. package/dist/fonts/ibm-plex-sans-cyrillic-600-normal-730becc6f005c18c.woff2 +0 -0
  152. package/dist/fonts/ibm-plex-sans-cyrillic-700-normal-40540598b4c9eb2c.woff2 +0 -0
  153. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-italic-4ffb25726a7ce4cc.woff2 +0 -0
  154. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-normal-e2580ad78906551e.woff2 +0 -0
  155. package/dist/fonts/ibm-plex-sans-cyrillic-ext-500-normal-08578d906af6d986.woff2 +0 -0
  156. package/dist/fonts/ibm-plex-sans-cyrillic-ext-600-normal-d60d3d0b182753d5.woff2 +0 -0
  157. package/dist/fonts/ibm-plex-sans-cyrillic-ext-700-normal-d07dd53642480097.woff2 +0 -0
  158. package/dist/fonts/ibm-plex-sans-greek-400-italic-1bc10b01688ba9fa.woff2 +0 -0
  159. package/dist/fonts/ibm-plex-sans-greek-400-normal-02296067bc904d2a.woff2 +0 -0
  160. package/dist/fonts/ibm-plex-sans-greek-500-normal-8cb6e20b4dbbaa5f.woff2 +0 -0
  161. package/dist/fonts/ibm-plex-sans-greek-600-normal-0a9ebd9019415ee9.woff2 +0 -0
  162. package/dist/fonts/ibm-plex-sans-greek-700-normal-c949641d10a3bebc.woff2 +0 -0
  163. package/dist/fonts/ibm-plex-sans-latin-400-italic-6de912e531b6c980.woff2 +0 -0
  164. package/dist/fonts/ibm-plex-sans-latin-400-normal-3b646991d30055a9.woff2 +0 -0
  165. package/dist/fonts/ibm-plex-sans-latin-500-normal-0717336fb31fcdcd.woff2 +0 -0
  166. package/dist/fonts/ibm-plex-sans-latin-600-normal-8960851d691c054e.woff2 +0 -0
  167. package/dist/fonts/ibm-plex-sans-latin-700-normal-42e7b0c143c19df9.woff2 +0 -0
  168. package/dist/fonts/ibm-plex-sans-latin-ext-400-italic-c5c00e8a32022dfe.woff2 +0 -0
  169. package/dist/fonts/ibm-plex-sans-latin-ext-400-normal-c93d2a12aaa280f6.woff2 +0 -0
  170. package/dist/fonts/ibm-plex-sans-latin-ext-500-normal-2846035d85100f84.woff2 +0 -0
  171. package/dist/fonts/ibm-plex-sans-latin-ext-600-normal-b25dfd4f979e442a.woff2 +0 -0
  172. package/dist/fonts/ibm-plex-sans-latin-ext-700-normal-92f0392bd74fa395.woff2 +0 -0
  173. package/dist/fonts/ibm-plex-sans-vietnamese-400-italic-675d4bace127bffb.woff2 +0 -0
  174. package/dist/fonts/ibm-plex-sans-vietnamese-400-normal-771538f7f26551bd.woff2 +0 -0
  175. package/dist/fonts/ibm-plex-sans-vietnamese-500-normal-85ba3d9c2488a813.woff2 +0 -0
  176. package/dist/fonts/ibm-plex-sans-vietnamese-600-normal-5d34b803637befe3.woff2 +0 -0
  177. package/dist/fonts/ibm-plex-sans-vietnamese-700-normal-b79d0c4b68b85007.woff2 +0 -0
  178. package/dist/plex.css +1 -1
  179. package/dist/ssr/actions/Button.js +11 -2
  180. package/dist/ssr/actions/Button.js.map +1 -1
  181. package/dist/ssr/actions/Disclosure.js +2 -2
  182. package/dist/ssr/actions/Disclosure.js.map +1 -1
  183. package/dist/ssr/actions/Dropdown.js +4 -1
  184. package/dist/ssr/actions/Dropdown.js.map +1 -1
  185. package/dist/ssr/actions/FilterChip.js +16 -2
  186. package/dist/ssr/actions/FilterChip.js.map +1 -1
  187. package/dist/ssr/actions/SplitButton.js +69 -22
  188. package/dist/ssr/actions/SplitButton.js.map +1 -1
  189. package/dist/ssr/actions/SpotlightSearch.js +3 -7
  190. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  191. package/dist/ssr/actions/Tabs.js +58 -11
  192. package/dist/ssr/actions/Tabs.js.map +1 -1
  193. package/dist/ssr/actions/index.js +1 -1
  194. package/dist/ssr/actions/index.js.map +1 -1
  195. package/dist/ssr/chat/ChatComposer.js +366 -134
  196. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  197. package/dist/ssr/chat/ChatContextPopup.js +86 -0
  198. package/dist/ssr/chat/ChatContextPopup.js.map +1 -0
  199. package/dist/ssr/chat/ChatPrimitives.js +49 -11
  200. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  201. package/dist/ssr/chat/ChatTasks.js +48 -0
  202. package/dist/ssr/chat/ChatTasks.js.map +1 -0
  203. package/dist/ssr/chat/ChatTimeline.js +14 -4
  204. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  205. package/dist/ssr/chat/chat-behavior.js +0 -5
  206. package/dist/ssr/chat/chat-behavior.js.map +1 -1
  207. package/dist/ssr/chat/composer-document.js +55 -0
  208. package/dist/ssr/chat/composer-document.js.map +1 -0
  209. package/dist/ssr/chat/index.js +6 -1
  210. package/dist/ssr/chat/index.js.map +1 -1
  211. package/dist/ssr/chat/types.js.map +1 -1
  212. package/dist/ssr/content/Chart.js +121 -219
  213. package/dist/ssr/content/Chart.js.map +1 -1
  214. package/dist/ssr/content/ChartExplorer.js +257 -0
  215. package/dist/ssr/content/ChartExplorer.js.map +1 -0
  216. package/dist/ssr/content/ChartExplorerControls.js +105 -0
  217. package/dist/ssr/content/ChartExplorerControls.js.map +1 -0
  218. package/dist/ssr/content/ChartFilterControls.js +139 -0
  219. package/dist/ssr/content/ChartFilterControls.js.map +1 -0
  220. package/dist/ssr/content/ChartSnapshotView.js +57 -0
  221. package/dist/ssr/content/ChartSnapshotView.js.map +1 -0
  222. package/dist/ssr/content/DataTable.js +13 -9
  223. package/dist/ssr/content/DataTable.js.map +1 -1
  224. package/dist/ssr/content/FileBrowser.js +3 -0
  225. package/dist/ssr/content/FileBrowser.js.map +1 -1
  226. package/dist/ssr/content/FileGrid.js +38 -0
  227. package/dist/ssr/content/FileGrid.js.map +1 -0
  228. package/dist/ssr/content/FileTree.js +2 -2
  229. package/dist/ssr/content/FileTree.js.map +1 -1
  230. package/dist/ssr/content/FileView.js +352 -75
  231. package/dist/ssr/content/FileView.js.map +1 -1
  232. package/dist/ssr/content/MarkdownView.js +6 -0
  233. package/dist/ssr/content/MarkdownView.js.map +1 -1
  234. package/dist/ssr/content/PdfPreview.js +37 -24
  235. package/dist/ssr/content/PdfPreview.js.map +1 -1
  236. package/dist/ssr/content/chart-cursor.js +33 -0
  237. package/dist/ssr/content/chart-cursor.js.map +1 -0
  238. package/dist/ssr/content/chart-explorer.js +147 -0
  239. package/dist/ssr/content/chart-explorer.js.map +1 -0
  240. package/dist/ssr/content/chart-inspection.js +447 -0
  241. package/dist/ssr/content/chart-inspection.js.map +1 -0
  242. package/dist/ssr/content/chart-line-gaps.js +53 -0
  243. package/dist/ssr/content/chart-line-gaps.js.map +1 -0
  244. package/dist/ssr/content/chart-map-viewport.js +5 -1
  245. package/dist/ssr/content/chart-map-viewport.js.map +1 -1
  246. package/dist/ssr/content/chart-snapshot.js +63 -0
  247. package/dist/ssr/content/chart-snapshot.js.map +1 -0
  248. package/dist/ssr/content/chart-state-timeline.js +32 -4
  249. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  250. package/dist/ssr/content/chart-svg.js +54 -0
  251. package/dist/ssr/content/chart-svg.js.map +1 -0
  252. package/dist/ssr/content/collection-selection.js +109 -0
  253. package/dist/ssr/content/collection-selection.js.map +1 -0
  254. package/dist/ssr/content/delimited-preferences.js +21 -0
  255. package/dist/ssr/content/delimited-preferences.js.map +1 -0
  256. package/dist/ssr/content/file-tree.js.map +1 -1
  257. package/dist/ssr/content/file-view-preview.js +11 -7
  258. package/dist/ssr/content/file-view-preview.js.map +1 -1
  259. package/dist/ssr/content/index.js +9 -0
  260. package/dist/ssr/content/index.js.map +1 -1
  261. package/dist/ssr/feedback/InlineGuidance.js +17 -3
  262. package/dist/ssr/feedback/InlineGuidance.js.map +1 -1
  263. package/dist/ssr/feedback/dialog-core.js +81 -7
  264. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  265. package/dist/ssr/feedback/prompts.js +6 -0
  266. package/dist/ssr/feedback/prompts.js.map +1 -1
  267. package/dist/ssr/feedback/toast.js +29 -6
  268. package/dist/ssr/feedback/toast.js.map +1 -1
  269. package/dist/ssr/inputs/SelectChip.js +3 -3
  270. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  271. package/dist/ssr/inputs/TextInput.js.map +1 -1
  272. package/dist/ssr/inputs/markdown/MarkdownEditor.js +19 -11
  273. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  274. package/dist/ssr/intl/Format.js +61 -0
  275. package/dist/ssr/intl/Format.js.map +1 -1
  276. package/dist/ssr/intl/index.js.map +1 -1
  277. package/dist/ssr/intl/messages.js +130 -2
  278. package/dist/ssr/intl/messages.js.map +1 -1
  279. package/dist/ssr/layout/AppWorkspace.js +368 -275
  280. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  281. package/dist/ssr/layout/BottomSheet.js +43 -0
  282. package/dist/ssr/layout/BottomSheet.js.map +1 -0
  283. package/dist/ssr/layout/DetailPanel.js +11 -4
  284. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  285. package/dist/ssr/layout/Navigation.js +181 -0
  286. package/dist/ssr/layout/Navigation.js.map +1 -0
  287. package/dist/ssr/layout/PanelDialog.js +111 -26
  288. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  289. package/dist/ssr/layout/ScrollArea.js +16 -1
  290. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  291. package/dist/ssr/layout/Settings.js.map +1 -1
  292. package/dist/ssr/layout/SidebarItemPreview.js +133 -0
  293. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -0
  294. package/dist/ssr/layout/app-workspace-controller.js +3 -0
  295. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  296. package/dist/ssr/layout/index.js +3 -0
  297. package/dist/ssr/layout/index.js.map +1 -1
  298. package/dist/ssr/layout/navigation-model.js +23 -0
  299. package/dist/ssr/layout/navigation-model.js.map +1 -0
  300. package/dist/ssr/layout/scroll-fade.js +100 -0
  301. package/dist/ssr/layout/scroll-fade.js.map +1 -0
  302. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  303. package/dist/ssr/surfaces/StatusBadge.js +2 -1
  304. package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
  305. package/dist/styles.css +1 -1
  306. package/dist/tabler.css +1 -1
  307. package/dist/types/actions/Button.d.ts +4 -0
  308. package/dist/types/actions/Disclosure.d.ts +1 -0
  309. package/dist/types/actions/FilterChip.d.ts +4 -0
  310. package/dist/types/actions/SplitButton.d.ts +6 -0
  311. package/dist/types/actions/SpotlightSearch.d.ts +0 -4
  312. package/dist/types/actions/Tabs.d.ts +4 -0
  313. package/dist/types/actions/index.d.ts +1 -1
  314. package/dist/types/chat/ChatComposer.d.ts +20 -2
  315. package/dist/types/chat/ChatContextPopup.d.ts +6 -0
  316. package/dist/types/chat/ChatPrimitives.d.ts +4 -0
  317. package/dist/types/chat/ChatTasks.d.ts +15 -0
  318. package/dist/types/chat/ChatTimeline.d.ts +2 -0
  319. package/dist/types/chat/chat-behavior.d.ts +0 -3
  320. package/dist/types/chat/composer-document.d.ts +14 -0
  321. package/dist/types/chat/index.d.ts +8 -1
  322. package/dist/types/chat/types.d.ts +7 -0
  323. package/dist/types/content/Chart.d.ts +42 -23
  324. package/dist/types/content/ChartExplorer.d.ts +34 -0
  325. package/dist/types/content/ChartExplorerControls.d.ts +10 -0
  326. package/dist/types/content/ChartFilterControls.d.ts +21 -0
  327. package/dist/types/content/ChartSnapshotView.d.ts +11 -0
  328. package/dist/types/content/DataTable.d.ts +4 -0
  329. package/dist/types/content/FileBrowser.d.ts +1 -0
  330. package/dist/types/content/FileGrid.d.ts +21 -0
  331. package/dist/types/content/FileView.d.ts +20 -0
  332. package/dist/types/content/PdfPreview.d.ts +8 -1
  333. package/dist/types/content/chart-cursor.d.ts +15 -0
  334. package/dist/types/content/chart-explorer.d.ts +48 -0
  335. package/dist/types/content/chart-inspection.d.ts +40 -0
  336. package/dist/types/content/chart-line-gaps.d.ts +5 -0
  337. package/dist/types/content/chart-map-viewport.d.ts +1 -1
  338. package/dist/types/content/chart-snapshot.d.ts +26 -0
  339. package/dist/types/content/chart-svg.d.ts +21 -0
  340. package/dist/types/content/collection-selection.d.ts +24 -0
  341. package/dist/types/content/delimited-preferences.d.ts +11 -0
  342. package/dist/types/content/file-tree.d.ts +2 -0
  343. package/dist/types/content/file-view-preview.d.ts +4 -1
  344. package/dist/types/content/index.d.ts +15 -1
  345. package/dist/types/feedback/InlineGuidance.d.ts +1 -0
  346. package/dist/types/feedback/dialog-core.d.ts +11 -0
  347. package/dist/types/feedback/prompts.d.ts +2 -0
  348. package/dist/types/feedback/toast.d.ts +7 -1
  349. package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -1
  350. package/dist/types/intl/Format.d.ts +9 -0
  351. package/dist/types/intl/index.d.ts +1 -1
  352. package/dist/types/intl/messages.d.ts +31 -1
  353. package/dist/types/layout/AppWorkspace.d.ts +35 -18
  354. package/dist/types/layout/BottomSheet.d.ts +23 -0
  355. package/dist/types/layout/DetailPanel.d.ts +1 -0
  356. package/dist/types/layout/Navigation.d.ts +8 -0
  357. package/dist/types/layout/PanelDialog.d.ts +14 -1
  358. package/dist/types/layout/ScrollArea.d.ts +4 -0
  359. package/dist/types/layout/Settings.d.ts +1 -1
  360. package/dist/types/layout/SidebarItemPreview.d.ts +11 -0
  361. package/dist/types/layout/index.d.ts +4 -1
  362. package/dist/types/layout/navigation-model.d.ts +48 -0
  363. package/dist/types/layout/scroll-fade.d.ts +3 -0
  364. package/dist/types/surfaces/DescriptionList.d.ts +1 -1
  365. package/dist/types/surfaces/StatusBadge.d.ts +1 -1
  366. package/package.json +5 -5
@@ -0,0 +1,105 @@
1
+ import { createComponent as _$createComponent } from "solid-js/web";
2
+ import { ssr as _$ssr } from "solid-js/web";
3
+ import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
4
+ import { escape as _$escape } from "solid-js/web";
5
+ var _tmpl$ = "<i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\"></i>",
6
+ _tmpl$2 = ["<span class=\"k2b-sr-only\">", " \xB7 ", ": ", "</span>"],
7
+ _tmpl$3 = ["<div class=\"k2b-chart-explorer__header\"><strong>", "</strong><div class=\"k2b-chart-explorer__actions\"><span class=\"k2b-chart-group-controls__loading\"", " role=\"status\"", ">", "</span>", "</div></div>"],
8
+ _tmpl$4 = "<i class=\"ti ti-x\" aria-hidden=\"true\"></i>",
9
+ _tmpl$5 = ["<div class=\"k2b-chart-explorer__actions\" aria-live=\"polite\">", "", "</div>"],
10
+ _tmpl$6 = "<span aria-hidden=\"true\">\u25CF</span>",
11
+ _tmpl$7 = "<span aria-hidden=\"true\">\u25CB</span>";
12
+ import { Show } from "solid-js";
13
+ import { Button } from "../actions/Button";
14
+ import { Paper } from "../surfaces/Paper";
15
+ import { StatusBadge } from "../surfaces/StatusBadge";
16
+ import { useUiMessages } from "../intl/messages";
17
+ import { ChartFilterControls } from "./ChartFilterControls";
18
+ export function ChartExplorerControls(props) {
19
+ const messages = useUiMessages();
20
+ const label = key => props.steps?.find(step => step.key === key)?.label ?? key ?? "";
21
+ return _$createComponent(Paper, {
22
+ "class": "k2b-chart-group-controls",
23
+ get children() {
24
+ return [_$ssr(_tmpl$3, _$escape(props.title), _$ssrAttribute("data-loading", _$escape(props.explorer.loading() || undefined, true), false), _$ssrAttribute("title", props.explorer.loading() ? `${_$escape(messages().loading, true)} · ${_$escape(messages().chartPreviousData, true)}: ${_$escape(label(props.explorer.snapshot().request.step), true)}` : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
25
+ get when() {
26
+ return props.explorer.loading();
27
+ },
28
+ get children() {
29
+ return [_$ssr(_tmpl$), _$ssr(_tmpl$2, _$escape(messages().loading), _$escape(messages().chartPreviousData), _$escape(label(props.explorer.snapshot().request.step)))];
30
+ }
31
+ })), _$escape(_$createComponent(Show, {
32
+ get when() {
33
+ return props.steps?.length && props.explorer.snapshot().request.step !== undefined;
34
+ },
35
+ get children() {
36
+ return [_$createComponent(Show, {
37
+ get when() {
38
+ return props.explorer.desired().referenceStep;
39
+ },
40
+ children: reference => _$createComponent(Button, {
41
+ size: "sm",
42
+ variant: "secondary",
43
+ onClick: () => void props.explorer.clearReference(),
44
+ get ["aria-label"]() {
45
+ return `${messages().chartRemoveComparison}: ${label(reference())}`;
46
+ },
47
+ get children() {
48
+ return [messages().chartReference, ": ", label(reference()), " ", _$ssr(_tmpl$4)];
49
+ }
50
+ })
51
+ }), _$createComponent(Button, {
52
+ size: "sm",
53
+ variant: "secondary",
54
+ get disabled() {
55
+ return props.explorer.loading() || props.explorer.error() !== null || props.explorer.desired().referenceStep === props.explorer.snapshot().request.step;
56
+ },
57
+ onClick: () => void props.explorer.pinReference(),
58
+ get children() {
59
+ return messages().chartPinReference;
60
+ }
61
+ })];
62
+ }
63
+ }))), _$createComponent(ChartFilterControls, {
64
+ get request() {
65
+ return props.explorer.desired();
66
+ },
67
+ get displayedRequest() {
68
+ return props.explorer.snapshot().request;
69
+ },
70
+ get steps() {
71
+ return props.steps;
72
+ },
73
+ get series() {
74
+ return props.series;
75
+ },
76
+ get dimensionLabel() {
77
+ return props.dimensionLabel;
78
+ },
79
+ get failed() {
80
+ return props.explorer.error() !== null;
81
+ },
82
+ onRequest: request => void props.explorer.setRequest(request),
83
+ onRetry: () => void props.explorer.retry()
84
+ }), _$createComponent(Show, {
85
+ get when() {
86
+ return props.explorer.snapshot().request.referenceStep;
87
+ },
88
+ children: reference => _$ssr(_tmpl$5, _$escape(_$createComponent(StatusBadge, {
89
+ tone: "neutral",
90
+ icon: null,
91
+ get label() {
92
+ return [_$ssr(_tmpl$6), " ", messages().chartCurrent, ": ", label(props.explorer.snapshot().request.step)];
93
+ }
94
+ })), _$escape(_$createComponent(StatusBadge, {
95
+ tone: "neutral",
96
+ icon: null,
97
+ get label() {
98
+ return [_$ssr(_tmpl$7), " ", messages().chartReference, ": ", label(reference())];
99
+ }
100
+ })))
101
+ })];
102
+ }
103
+ });
104
+ }
105
+ //# sourceMappingURL=ChartExplorerControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Show","Button","Paper","StatusBadge","useUiMessages","ChartFilterControls","ChartExplorerControls","props","messages","label","key","steps","find","step","_$createComponent","children","_$ssr","_tmpl$3","_$escape","title","_$ssrAttribute","explorer","loading","undefined","chartPreviousData","snapshot","request","when","_tmpl$","_tmpl$2","length","desired","referenceStep","reference","size","variant","onClick","clearReference","aria-label","chartRemoveComparison","chartReference","_tmpl$4","disabled","error","pinReference","chartPinReference","displayedRequest","series","dimensionLabel","failed","onRequest","setRequest","onRetry","retry","_tmpl$5","tone","icon","_tmpl$6","chartCurrent","_tmpl$7"],"sources":["content/ChartExplorerControls.tsx"],"sourcesContent":["import { Show } from \"solid-js\";\nimport { Button } from \"../actions/Button\";\nimport { Paper } from \"../surfaces/Paper\";\nimport { StatusBadge } from \"../surfaces/StatusBadge\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { ChartFilterControls, type ChartFilterControlsProps } from \"./ChartFilterControls\";\nimport type { ChartExplorerController, ChartExplorerCharts } from \"./chart-explorer\";\n\nexport type ChartExplorerControlsProps<C extends ChartExplorerCharts> = {\n explorer: ChartExplorerController<C>;\n title: string;\n steps?: ChartFilterControlsProps[\"steps\"];\n series?: ChartFilterControlsProps[\"series\"];\n dimensionLabel?: string;\n};\n\nexport function ChartExplorerControls<C extends ChartExplorerCharts>(props: ChartExplorerControlsProps<C>) {\n const messages = useUiMessages();\n const label = (key: string | undefined) => props.steps?.find((step) => step.key === key)?.label ?? key ?? \"\";\n return (\n <Paper class=\"k2b-chart-group-controls\">\n <div class=\"k2b-chart-explorer__header\">\n <strong>{props.title}</strong>\n <div class=\"k2b-chart-explorer__actions\">\n <span\n class=\"k2b-chart-group-controls__loading\"\n data-loading={props.explorer.loading() || undefined}\n role=\"status\"\n title={\n props.explorer.loading()\n ? `${messages().loading} · ${messages().chartPreviousData}: ${label(props.explorer.snapshot().request.step)}`\n : undefined\n }\n >\n <Show when={props.explorer.loading()}>\n <i class=\"ti ti-loader-2 k2b-spin\" aria-hidden=\"true\" />\n <span class=\"k2b-sr-only\">\n {messages().loading} · {messages().chartPreviousData}: {label(props.explorer.snapshot().request.step)}\n </span>\n </Show>\n </span>\n <Show when={props.steps?.length && props.explorer.snapshot().request.step !== undefined}>\n <Show when={props.explorer.desired().referenceStep}>\n {(reference) => (\n <Button\n size=\"sm\"\n variant=\"secondary\"\n onClick={() => void props.explorer.clearReference()}\n aria-label={`${messages().chartRemoveComparison}: ${label(reference())}`}\n >\n {messages().chartReference}: {label(reference())} <i class=\"ti ti-x\" aria-hidden=\"true\" />\n </Button>\n )}\n </Show>\n <Button\n size=\"sm\"\n variant=\"secondary\"\n disabled={\n props.explorer.loading() ||\n props.explorer.error() !== null ||\n props.explorer.desired().referenceStep === props.explorer.snapshot().request.step\n }\n onClick={() => void props.explorer.pinReference()}\n >\n {messages().chartPinReference}\n </Button>\n </Show>\n </div>\n </div>\n <ChartFilterControls\n request={props.explorer.desired()}\n displayedRequest={props.explorer.snapshot().request}\n steps={props.steps}\n series={props.series}\n dimensionLabel={props.dimensionLabel}\n failed={props.explorer.error() !== null}\n onRequest={(request) => void props.explorer.setRequest(request)}\n onRetry={() => void props.explorer.retry()}\n />\n <Show when={props.explorer.snapshot().request.referenceStep}>\n {(reference) => (\n <div class=\"k2b-chart-explorer__actions\" aria-live=\"polite\">\n <StatusBadge\n tone=\"neutral\"\n icon={null}\n label={\n <>\n <span aria-hidden=\"true\">●</span> {messages().chartCurrent}: {label(props.explorer.snapshot().request.step)}\n </>\n }\n />\n <StatusBadge\n tone=\"neutral\"\n icon={null}\n label={\n <>\n <span aria-hidden=\"true\">○</span> {messages().chartReference}: {label(reference())}\n </>\n }\n />\n </div>\n )}\n </Show>\n </Paper>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,139 @@
1
+ import { ssr as _$ssr } from "solid-js/web";
2
+ import { createComponent as _$createComponent } from "solid-js/web";
3
+ import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
4
+ import { escape as _$escape } from "solid-js/web";
5
+ var _tmpl$ = ["<div class=\"k2b-chart-explorer__dimension\" role=\"group\"", ">", "<output class=\"k2b-chart-explorer__dimension-value\" for=\"", "\">", "</output><div id=\"", "\" class=\"k2b-chart-explorer__steps\">", "</div></div>"],
6
+ _tmpl$2 = ["<div class=\"k2b-chart-explorer__legend\">", "<div class=\"k2b-chart-explorer__status\" role=\"status\">", "", "</div></div>"],
7
+ _tmpl$3 = ["<span", ">", "</span>"];
8
+ import { createEffect, createSignal, createUniqueId, For, Show } from "solid-js";
9
+ import { Slider } from "../inputs/ChoiceInputs";
10
+ import { FilterChip } from "../actions/FilterChip";
11
+ import { Button } from "../actions/Button";
12
+ import { useUiMessages } from "../intl/messages";
13
+ /** Shared controls for a standalone explorer or an atomic group of charts. */
14
+ export function ChartFilterControls(props) {
15
+ const validateOptions = () => {
16
+ for (const items of [props.steps, props.series]) {
17
+ const keys = items?.map(item => item.key) ?? [];
18
+ if (keys.some(key => !key) || new Set(keys).size !== keys.length) throw new Error("Chart control options require nonempty unique keys");
19
+ }
20
+ };
21
+ validateOptions();
22
+ createEffect(validateOptions);
23
+ const messages = useUiMessages();
24
+ const id = `k2b-chart-controls-${createUniqueId()}`;
25
+ const [keyboardSteps, setKeyboardSteps] = createSignal(false);
26
+ let pointerFocus = false;
27
+ const stepLabel = key => props.steps?.find(step => step.key === key)?.label ?? key ?? "";
28
+ return [_$createComponent(Show, {
29
+ get when() {
30
+ return props.steps?.length;
31
+ },
32
+ get children() {
33
+ return _$ssr(_tmpl$, _$ssrAttribute("aria-label", _$escape(props.dimensionLabel ?? messages().range, true), false) + _$ssrAttribute("data-keyboard", keyboardSteps() ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Slider, {
34
+ id: `${id}-dimension`,
35
+ showValue: false,
36
+ "aria-describedby": `${id}-steps`,
37
+ get label() {
38
+ return props.dimensionLabel ?? messages().range;
39
+ },
40
+ min: 0,
41
+ get max() {
42
+ return Math.max(0, (props.steps?.length ?? 1) - 1);
43
+ },
44
+ step: 1,
45
+ get value() {
46
+ return Math.max(0, props.steps?.findIndex(step => step.key === props.request.step) ?? 0);
47
+ },
48
+ get disabled() {
49
+ return props.disabled || (props.steps?.length ?? 0) < 2;
50
+ },
51
+ formatValue: index => props.steps?.[index]?.label ?? "",
52
+ get ["aria-valuetext"]() {
53
+ return stepLabel(props.request.step);
54
+ },
55
+ onValueChange: index => {
56
+ const step = props.steps?.[index];
57
+ if (step) props.onRequest({
58
+ ...props.request,
59
+ step: step.key
60
+ });
61
+ }
62
+ })), `${_$escape(id, true)}-dimension`, _$escape(stepLabel(props.request.step)), `${_$escape(id, true)}-steps`, _$escape(_$createComponent(For, {
63
+ get each() {
64
+ return props.steps;
65
+ },
66
+ children: step => _$ssr(_tmpl$3, _$ssrAttribute("data-current", step.key === props.request.step ? "true" : _$escape(undefined, true), false), _$escape(step.label))
67
+ })));
68
+ }
69
+ }), _$ssr(_tmpl$2, _$escape(_$createComponent(Show, {
70
+ get when() {
71
+ return props.series?.length;
72
+ },
73
+ get children() {
74
+ return _$createComponent(FilterChip, {
75
+ get label() {
76
+ return messages().chartSeries;
77
+ },
78
+ icon: "ti ti-chart-dots",
79
+ get disabled() {
80
+ return props.disabled;
81
+ },
82
+ get value() {
83
+ return props.request.visibleKeys ?? props.series?.map(item => item.key) ?? [];
84
+ },
85
+ get defaultValue() {
86
+ return props.series?.map(item => item.key) ?? [];
87
+ },
88
+ get isActive() {
89
+ return props.request.visibleKeys !== undefined && props.request.visibleKeys.length !== props.series?.length;
90
+ },
91
+ get options() {
92
+ return [{
93
+ multiple: true,
94
+ options: (props.series ?? []).map(item => ({
95
+ value: item.key,
96
+ label: item.label,
97
+ color: item.color
98
+ }))
99
+ }];
100
+ },
101
+ onValueChange: visibleKeys => props.onRequest({
102
+ ...props.request,
103
+ visibleKeys
104
+ })
105
+ });
106
+ }
107
+ })), _$escape(_$createComponent(Show, {
108
+ get when() {
109
+ return props.failed;
110
+ },
111
+ get children() {
112
+ return [messages().couldNotLoadData, " ", _$createComponent(Button, {
113
+ variant: "text",
114
+ size: "sm",
115
+ get onClick() {
116
+ return props.onRetry;
117
+ },
118
+ get children() {
119
+ return messages().retry;
120
+ }
121
+ })];
122
+ }
123
+ })), _$escape(_$createComponent(Show, {
124
+ get when() {
125
+ return props.failed;
126
+ },
127
+ get children() {
128
+ return ["\xB7 ", messages().chartPreviousData, _$createComponent(Show, {
129
+ get when() {
130
+ return props.steps?.length;
131
+ },
132
+ get children() {
133
+ return [": ", stepLabel(props.displayedRequest.step)];
134
+ }
135
+ })];
136
+ }
137
+ })))];
138
+ }
139
+ //# sourceMappingURL=ChartFilterControls.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createEffect","createSignal","createUniqueId","For","Show","Slider","FilterChip","Button","useUiMessages","ChartFilterControls","props","validateOptions","items","steps","series","keys","map","item","key","some","Set","size","length","Error","messages","id","keyboardSteps","setKeyboardSteps","pointerFocus","stepLabel","find","step","label","_$createComponent","when","children","_$ssr","_tmpl$","_$ssrAttribute","_$escape","dimensionLabel","range","undefined","showValue","min","max","Math","value","findIndex","request","disabled","formatValue","index","aria-valuetext","onValueChange","onRequest","each","_tmpl$3","_tmpl$2","chartSeries","icon","visibleKeys","defaultValue","isActive","options","multiple","color","failed","couldNotLoadData","variant","onClick","onRetry","retry","chartPreviousData","displayedRequest"],"sources":["content/ChartFilterControls.tsx"],"sourcesContent":["import { createEffect, createSignal, createUniqueId, For, Show } from \"solid-js\";\nimport { Slider } from \"../inputs/ChoiceInputs\";\nimport { FilterChip } from \"../actions/FilterChip\";\nimport { Button } from \"../actions/Button\";\nimport { useUiMessages } from \"../intl/messages\";\nimport type { ChartExplorerRequest } from \"./chart-explorer\";\n\nexport type ChartFilterControlsProps = {\n request: ChartExplorerRequest;\n displayedRequest: ChartExplorerRequest;\n steps?: readonly { key: string; label: string }[];\n series?: readonly { key: string; label: string; color: string }[];\n dimensionLabel?: string;\n disabled?: boolean;\n failed?: boolean;\n onRequest: (request: ChartExplorerRequest) => void;\n onRetry?: () => void;\n};\n\n/** Shared controls for a standalone explorer or an atomic group of charts. */\nexport function ChartFilterControls(props: ChartFilterControlsProps) {\n const validateOptions = () => {\n for (const items of [props.steps, props.series]) {\n const keys = items?.map((item) => item.key) ?? [];\n if (keys.some((key) => !key) || new Set(keys).size !== keys.length)\n throw new Error(\"Chart control options require nonempty unique keys\");\n }\n };\n validateOptions();\n createEffect(validateOptions);\n const messages = useUiMessages();\n const id = `k2b-chart-controls-${createUniqueId()}`;\n const [keyboardSteps, setKeyboardSteps] = createSignal(false);\n let pointerFocus = false;\n const stepLabel = (key: string | undefined) => props.steps?.find((step) => step.key === key)?.label ?? key ?? \"\";\n return (\n <>\n <Show when={props.steps?.length}>\n <div\n class=\"k2b-chart-explorer__dimension\"\n role=\"group\"\n aria-label={props.dimensionLabel ?? messages().range}\n data-keyboard={keyboardSteps() ? \"true\" : undefined}\n onPointerDown={() => {\n pointerFocus = true;\n setKeyboardSteps(false);\n }}\n onKeyDown={() => {\n pointerFocus = false;\n setKeyboardSteps(true);\n }}\n onFocusIn={(event) => {\n if (!pointerFocus && event.target.matches(\":focus-visible\")) setKeyboardSteps(true);\n }}\n onFocusOut={() => {\n pointerFocus = false;\n setKeyboardSteps(false);\n }}\n >\n <Slider\n id={`${id}-dimension`}\n showValue={false}\n aria-describedby={`${id}-steps`}\n label={props.dimensionLabel ?? messages().range}\n min={0}\n max={Math.max(0, (props.steps?.length ?? 1) - 1)}\n step={1}\n value={Math.max(0, props.steps?.findIndex((step) => step.key === props.request.step) ?? 0)}\n disabled={props.disabled || (props.steps?.length ?? 0) < 2}\n formatValue={(index) => props.steps?.[index]?.label ?? \"\"}\n aria-valuetext={stepLabel(props.request.step)}\n onValueChange={(index) => {\n const step = props.steps?.[index];\n if (step) props.onRequest({ ...props.request, step: step.key });\n }}\n />\n <output class=\"k2b-chart-explorer__dimension-value\" for={`${id}-dimension`}>\n {stepLabel(props.request.step)}\n </output>\n <div id={`${id}-steps`} class=\"k2b-chart-explorer__steps\">\n <For each={props.steps}>\n {(step) => <span data-current={step.key === props.request.step ? \"true\" : undefined}>{step.label}</span>}\n </For>\n </div>\n </div>\n </Show>\n <div class=\"k2b-chart-explorer__legend\">\n <Show when={props.series?.length}>\n <FilterChip\n label={messages().chartSeries}\n icon=\"ti ti-chart-dots\"\n disabled={props.disabled}\n value={props.request.visibleKeys ?? props.series?.map((item) => item.key) ?? []}\n defaultValue={props.series?.map((item) => item.key) ?? []}\n isActive={props.request.visibleKeys !== undefined && props.request.visibleKeys.length !== props.series?.length}\n options={[\n { multiple: true, options: (props.series ?? []).map((item) => ({ value: item.key, label: item.label, color: item.color })) },\n ]}\n onValueChange={(visibleKeys) => props.onRequest({ ...props.request, visibleKeys })}\n />\n </Show>\n <div class=\"k2b-chart-explorer__status\" role=\"status\">\n <Show when={props.failed}>\n {messages().couldNotLoadData}{\" \"}\n <Button variant=\"text\" size=\"sm\" onClick={props.onRetry}>\n {messages().retry}\n </Button>\n </Show>\n <Show when={props.failed}>\n · {messages().chartPreviousData}\n <Show when={props.steps?.length}>: {stepLabel(props.displayedRequest.step)}</Show>\n </Show>\n </div>\n </div>\n </>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,57 @@
1
+ import { ssr as _$ssr } from "solid-js/web";
2
+ import { ssrStyleProperty as _$ssrStyleProperty } from "solid-js/web";
3
+ import { ssrStyle as _$ssrStyle } from "solid-js/web";
4
+ import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
5
+ import { escape as _$escape } from "solid-js/web";
6
+ var _tmpl$ = ["<div class=\"k2b-chart\"", " data-interactive=\"true\" style=\"", "\" role=\"group\"", " tabindex=\"0\"><div class=\"k2b-chart__svg\"", " style=\"", "\">", "</div><span class=\"k2b-chart__anchor\" aria-hidden=\"true\"></span><span", " class=\"k2b-chart__tooltip k2b-tooltip\" role=\"tooltip\" popover=\"manual\" data-instant=\"true\"></span></div>"];
7
+ import { createEffect, createUniqueId, onCleanup, onMount } from "solid-js";
8
+ import { isServer } from "solid-js/web";
9
+ import { selectedChartSvg } from "./chart-svg";
10
+ import { useUiMessages } from "../intl/messages";
11
+ import { createChartInspection, sameChartDatum } from "./chart-inspection";
12
+ /** Internal display for server-prepared geometry. Viewports are snapshot-owned. */
13
+ export function ChartSnapshotView(props) {
14
+ const messages = useUiMessages();
15
+ let container;
16
+ let tooltip;
17
+ let anchor;
18
+ const id = `k2b-chart-tooltip-${createUniqueId()}`;
19
+ const inspection = createChartInspection({
20
+ container: () => container,
21
+ cursor: () => props.cursor,
22
+ tooltip: () => tooltip,
23
+ anchor: () => anchor,
24
+ kind: () => props.snapshot.kind,
25
+ enabled: () => true,
26
+ format: ({
27
+ datum
28
+ }) => props.snapshot.marks.find(m => sameChartDatum(m.datum, datum))?.tooltip ?? {
29
+ rows: []
30
+ },
31
+ select: ({
32
+ datum
33
+ }) => {
34
+ const mark = props.snapshot.marks.find(m => sameChartDatum(m.datum, datum));
35
+ if (mark) props.onSelect(mark.rowKey);
36
+ }
37
+ });
38
+ createEffect(() => {
39
+ props.snapshot;
40
+ inspection.invalidate();
41
+ });
42
+ createEffect(() => inspection.selectData(props.snapshot.marks.filter(m => m.rowKey === props.selectedKey).map(m => m.datum)));
43
+ onMount(() => {
44
+ const outside = event => {
45
+ if (event.target instanceof Node && !container?.contains(event.target)) inspection.close();
46
+ };
47
+ window.addEventListener("pointerdown", outside);
48
+ window.addEventListener("scroll", inspection.close, true);
49
+ onCleanup(() => {
50
+ window.removeEventListener("pointerdown", outside);
51
+ window.removeEventListener("scroll", inspection.close, true);
52
+ });
53
+ });
54
+ onCleanup(inspection.close);
55
+ return _$ssr(_tmpl$, _$ssrAttribute("data-chart-kind", _$escape(props.snapshot.kind, true), false), _$ssrStyle(props.style), _$ssrAttribute("aria-label", _$escape(messages().interactiveChart, true), false), _$ssrAttribute("data-stretch", props.snapshot.stretch ? "true" : _$escape(undefined, true), false), _$ssrStyleProperty("--k2b-chart-width:", `${_$escape(props.snapshot.width, true)}px`) + _$ssrStyleProperty(";--k2b-chart-height:", `${_$escape(props.snapshot.height, true)}px`) + _$ssrStyleProperty(";aspect-ratio:", `${_$escape(props.snapshot.width, true)}/${_$escape(props.snapshot.height, true)}`), isServer ? selectedChartSvg(props.snapshot.svg, props.snapshot.marks.filter(m => m.rowKey === props.selectedKey).map(m => m.datum)) : props.snapshot.svg, _$ssrAttribute("id", _$escape(id, true), false));
56
+ }
57
+ //# sourceMappingURL=ChartSnapshotView.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["createEffect","createUniqueId","onCleanup","onMount","isServer","selectedChartSvg","useUiMessages","createChartInspection","sameChartDatum","ChartSnapshotView","props","messages","container","tooltip","anchor","id","inspection","cursor","kind","snapshot","enabled","format","datum","marks","find","m","rows","select","mark","onSelect","rowKey","invalidate","selectData","filter","selectedKey","map","outside","event","target","Node","contains","close","window","addEventListener","removeEventListener","_$ssr","_tmpl$","_$ssrAttribute","_$escape","_$ssrStyle","style","interactiveChart","stretch","undefined","_$ssrStyleProperty","width","height","svg"],"sources":["content/ChartSnapshotView.tsx"],"sourcesContent":["import type { ChartCursor } from \"./chart-cursor\";\nimport { createEffect, createUniqueId, onCleanup, onMount, type JSX } from \"solid-js\";\nimport { isServer } from \"solid-js/web\";\nimport { selectedChartSvg } from \"./chart-svg\";\nimport { useUiMessages } from \"../intl/messages\";\nimport { createChartInspection, sameChartDatum } from \"./chart-inspection\";\nimport type { ChartSnapshot } from \"./chart-snapshot\";\n\n/** Internal display for server-prepared geometry. Viewports are snapshot-owned. */\nexport function ChartSnapshotView(props: {\n snapshot: ChartSnapshot;\n cursor?: ChartCursor;\n selectedKey: string | null;\n onSelect: (key: string) => void;\n style?: JSX.CSSProperties;\n}) {\n const messages = useUiMessages();\n let container: HTMLDivElement | undefined;\n let tooltip: HTMLSpanElement | undefined;\n let anchor: HTMLSpanElement | undefined;\n const id = `k2b-chart-tooltip-${createUniqueId()}`;\n const inspection = createChartInspection({\n container: () => container,\n cursor: () => props.cursor,\n tooltip: () => tooltip,\n anchor: () => anchor,\n kind: () => props.snapshot.kind,\n enabled: () => true,\n format: ({ datum }) => props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum))?.tooltip ?? { rows: [] },\n select: ({ datum }) => {\n const mark = props.snapshot.marks.find((m) => sameChartDatum(m.datum, datum));\n if (mark) props.onSelect(mark.rowKey);\n },\n });\n createEffect(() => {\n props.snapshot;\n inspection.invalidate();\n });\n createEffect(() => inspection.selectData(props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum)));\n onMount(() => {\n const outside = (event: Event) => {\n if (event.target instanceof Node && !container?.contains(event.target)) inspection.close();\n };\n window.addEventListener(\"pointerdown\", outside);\n window.addEventListener(\"scroll\", inspection.close, true);\n onCleanup(() => {\n window.removeEventListener(\"pointerdown\", outside);\n window.removeEventListener(\"scroll\", inspection.close, true);\n });\n });\n onCleanup(inspection.close);\n return (\n <div\n ref={container}\n class=\"k2b-chart\"\n data-chart-kind={props.snapshot.kind}\n data-interactive=\"true\"\n style={props.style}\n role=\"group\"\n aria-label={messages().interactiveChart}\n tabIndex={0}\n onPointerDown={inspection.down}\n onPointerMove={inspection.move}\n onClick={inspection.click}\n onPointerLeave={inspection.leave}\n onFocusIn={inspection.focus}\n onFocusOut={inspection.close}\n onKeyDown={inspection.key}\n >\n <div\n class=\"k2b-chart__svg\"\n data-stretch={props.snapshot.stretch ? \"true\" : undefined}\n style={{\n \"--k2b-chart-width\": `${props.snapshot.width}px`,\n \"--k2b-chart-height\": `${props.snapshot.height}px`,\n \"aspect-ratio\": `${props.snapshot.width}/${props.snapshot.height}`,\n }}\n innerHTML={\n isServer\n ? selectedChartSvg(\n props.snapshot.svg,\n props.snapshot.marks.filter((m) => m.rowKey === props.selectedKey).map((m) => m.datum),\n )\n : props.snapshot.svg\n }\n />\n <span ref={anchor} class=\"k2b-chart__anchor\" aria-hidden=\"true\" />\n <span ref={tooltip} id={id} class=\"k2b-chart__tooltip k2b-tooltip\" role=\"tooltip\" popover=\"manual\" data-instant=\"true\" />\n </div>\n );\n}\n"],"mappings":"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","ignoreList":[]}
@@ -22,8 +22,8 @@ var _tmpl$ = ["<span class=\"k2b-data-table__header-title\">", "</span>"],
22
22
  _tmpl$15 = ["<footer class=\"", "\">", "</footer>"];
23
23
  import { createContext, createEffect, createMemo, createSignal, createUniqueId, For, onCleanup, onMount, Show, useContext } from "solid-js";
24
24
  import { Dynamic } from "solid-js/web";
25
- import { useUiMessages } from "../intl/messages";
26
25
  import { useLocale } from "../intl/locale";
26
+ import { useUiMessages } from "../intl/messages";
27
27
  import { PanelHeader } from "../layout/PanelHeader";
28
28
  import { Paper } from "../surfaces/Paper";
29
29
  import Placeholder from "../surfaces/Placeholder";
@@ -42,7 +42,7 @@ const renderColumnPart = (part, col) => {
42
42
  });
43
43
  return part;
44
44
  };
45
- const rowInteractiveSelector = ["a[href]", "button", "input", "select", "textarea", "summary", "[contenteditable]", "[role='button']", "[role='checkbox']", "[role='link']", "[role='menuitem']", "[role='option']", "[role='radio']", "[role='switch']", "[role='tab']", "[tabindex]"].join(",");
45
+ const rowInteractiveSelector = ["a[href]", "button", "input", "label", "select", "textarea", "summary", "[contenteditable]", "[role='button']", "[role='checkbox']", "[role='link']", "[role='menuitem']", "[role='option']", "[role='radio']", "[role='switch']", "[role='tab']", "[tabindex]"].join(",");
46
46
  const isNestedRowControl = event => event.target instanceof Element && event.target.closest(rowInteractiveSelector) !== event.currentTarget;
47
47
  const scrollbarMetrics = (viewportSize, contentSize, scrollOffset) => {
48
48
  if (viewportSize <= 0 || contentSize <= viewportSize + 1) return {
@@ -90,7 +90,7 @@ function DataTableRoot(props) {
90
90
  let previousLoadingMore = !!props.loadingMore;
91
91
  let previousHasMore = !!props.hasMore;
92
92
  const rowId = row => props.getRowId?.(row);
93
- const isInteractive = () => !!props.onRowClick || !!props.onRowDoubleClick;
93
+ const isInteractive = () => !!props.selection || !!props.onRowClick || !!props.onRowDoubleClick;
94
94
  const shouldHoverRows = () => props.hoverRows ?? isInteractive();
95
95
  const shouldRenderLoadMoreSentinel = () => !!props.onLoadMore;
96
96
  const labelledBy = () => props.ariaLabelledBy ?? (panel?.hasHeading() ? panel.headingId : undefined);
@@ -211,9 +211,9 @@ function DataTableRoot(props) {
211
211
 
212
212
  /** Only a sortable column carries a sort state; the rest carry none at all. */
213
213
  const ariaSortFor = col => {
214
- const sort = sortLinkFor(col);
215
- if (!sort) return undefined;
216
- if (!sort.active) return "none";
214
+ const key = sortKeyOf(col);
215
+ if (!key || !props.sortHref && !props.renderHeader) return undefined;
216
+ if (props.sort?.key !== key) return "none";
217
217
  return props.sort?.direction === "asc" ? "ascending" : "descending";
218
218
  };
219
219
  const renderHeaderDefault = col => {
@@ -234,12 +234,16 @@ function DataTableRoot(props) {
234
234
  const onRowKeyDown = (event, row) => {
235
235
  if (!isInteractive()) return;
236
236
  if (isNestedRowControl(event)) return;
237
+ const id = rowId(row);
238
+ if (id !== undefined && props.selection?.keyDown(event, id)) return;
237
239
  if (event.key !== "Enter" && event.key !== " ") return;
238
240
  event.preventDefault();
239
- (props.onRowClick ?? props.onRowDoubleClick)?.(row);
241
+ (props.selection ? props.onRowDoubleClick : props.onRowClick ?? props.onRowDoubleClick)?.(row);
240
242
  };
241
243
  const onRowClick = (event, row) => {
242
244
  if (isNestedRowControl(event)) return;
245
+ const id = rowId(row);
246
+ if (id !== undefined) props.selection?.select(id, event);
243
247
  props.onRowClick?.(row);
244
248
  };
245
249
  const onRowDoubleClick = (event, row) => {
@@ -354,8 +358,8 @@ function DataTableRoot(props) {
354
358
  },
355
359
  children: row => {
356
360
  const id = () => rowId(row);
357
- const isSelected = () => props.selectedRowId && id() === props.selectedRowId;
358
- return _$ssr(_tmpl$0, `k2b-data-table__row ${_$escape(rowClass(row), true)}`, _$ssrAttribute("data-hover", shouldHoverRows() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-clickable", shouldHoverRows() && isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-selected", isSelected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", isInteractive() ? 0 : _$escape(undefined, true), false), _$escape(_$createComponent(For, {
361
+ const isSelected = () => props.selection ? props.selection.selected().has(id() ?? "") : props.selectedRowId && id() === props.selectedRowId;
362
+ return _$ssr(_tmpl$0, `k2b-data-table__row ${_$escape(rowClass(row), true)}`, _$ssrAttribute("data-hover", shouldHoverRows() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-clickable", shouldHoverRows() && isInteractive() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-selected", isSelected() ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("aria-selected", props.selection ? !!isSelected() : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", props.selection ? props.selection.focused() === id() ? 0 : -1 : isInteractive() ? 0 : _$escape(undefined, true), false), _$escape(_$createComponent(For, {
359
363
  get each() {
360
364
  return props.columns;
361
365
  },