@k2b/ui 0.2.0 → 0.4.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 (378) 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 +2 -2
  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 +114 -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 +511 -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/Pagination.js.map +1 -1
  57. package/dist/browser/content/PdfPreview.js +107 -90
  58. package/dist/browser/content/PdfPreview.js.map +1 -1
  59. package/dist/browser/content/chart-cursor.js +33 -0
  60. package/dist/browser/content/chart-cursor.js.map +1 -0
  61. package/dist/browser/content/chart-explorer.js +147 -0
  62. package/dist/browser/content/chart-explorer.js.map +1 -0
  63. package/dist/browser/content/chart-inspection.js +447 -0
  64. package/dist/browser/content/chart-inspection.js.map +1 -0
  65. package/dist/browser/content/chart-line-gaps.js +53 -0
  66. package/dist/browser/content/chart-line-gaps.js.map +1 -0
  67. package/dist/browser/content/chart-map-viewport.js +5 -1
  68. package/dist/browser/content/chart-map-viewport.js.map +1 -1
  69. package/dist/browser/content/chart-snapshot.js +63 -0
  70. package/dist/browser/content/chart-snapshot.js.map +1 -0
  71. package/dist/browser/content/chart-state-timeline.js +32 -4
  72. package/dist/browser/content/chart-state-timeline.js.map +1 -1
  73. package/dist/browser/content/chart-svg.js +54 -0
  74. package/dist/browser/content/chart-svg.js.map +1 -0
  75. package/dist/browser/content/collection-selection.js +109 -0
  76. package/dist/browser/content/collection-selection.js.map +1 -0
  77. package/dist/browser/content/delimited-preferences.js +21 -0
  78. package/dist/browser/content/delimited-preferences.js.map +1 -0
  79. package/dist/browser/content/file-tree.js.map +1 -1
  80. package/dist/browser/content/file-view-preview.js +11 -7
  81. package/dist/browser/content/file-view-preview.js.map +1 -1
  82. package/dist/browser/content/index.js +9 -0
  83. package/dist/browser/content/index.js.map +1 -1
  84. package/dist/browser/feedback/InlineGuidance.js +17 -3
  85. package/dist/browser/feedback/InlineGuidance.js.map +1 -1
  86. package/dist/browser/feedback/dialog-core.js +81 -7
  87. package/dist/browser/feedback/dialog-core.js.map +1 -1
  88. package/dist/browser/feedback/prompts.js +6 -0
  89. package/dist/browser/feedback/prompts.js.map +1 -1
  90. package/dist/browser/feedback/toast.js +29 -6
  91. package/dist/browser/feedback/toast.js.map +1 -1
  92. package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
  93. package/dist/browser/inputs/Select.js.map +1 -1
  94. package/dist/browser/inputs/SelectChip.js +3 -2
  95. package/dist/browser/inputs/SelectChip.js.map +1 -1
  96. package/dist/browser/inputs/TextInput.js +7 -1
  97. package/dist/browser/inputs/TextInput.js.map +1 -1
  98. package/dist/browser/inputs/markdown/MarkdownEditor.js +61 -37
  99. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  100. package/dist/browser/inputs/markdown/behaviors.js +1 -1
  101. package/dist/browser/inputs/markdown/behaviors.js.map +1 -1
  102. package/dist/browser/intl/Format.js +89 -16
  103. package/dist/browser/intl/Format.js.map +1 -1
  104. package/dist/browser/intl/index.js.map +1 -1
  105. package/dist/browser/intl/messages.js +130 -2
  106. package/dist/browser/intl/messages.js.map +1 -1
  107. package/dist/browser/layout/AppWorkspace.js +712 -624
  108. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  109. package/dist/browser/layout/BottomSheet.js +95 -0
  110. package/dist/browser/layout/BottomSheet.js.map +1 -0
  111. package/dist/browser/layout/DetailPanel.js +56 -44
  112. package/dist/browser/layout/DetailPanel.js.map +1 -1
  113. package/dist/browser/layout/Navigation.js +278 -0
  114. package/dist/browser/layout/Navigation.js.map +1 -0
  115. package/dist/browser/layout/PanelDialog.js +219 -71
  116. package/dist/browser/layout/PanelDialog.js.map +1 -1
  117. package/dist/browser/layout/ScrollArea.js +21 -1
  118. package/dist/browser/layout/ScrollArea.js.map +1 -1
  119. package/dist/browser/layout/Settings.js.map +1 -1
  120. package/dist/browser/layout/SidebarItemPreview.js +183 -0
  121. package/dist/browser/layout/SidebarItemPreview.js.map +1 -0
  122. package/dist/browser/layout/app-workspace-controller.js +3 -0
  123. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  124. package/dist/browser/layout/app-workspace-state.js.map +1 -1
  125. package/dist/browser/layout/index.js +3 -0
  126. package/dist/browser/layout/index.js.map +1 -1
  127. package/dist/browser/layout/navigation-model.js +23 -0
  128. package/dist/browser/layout/navigation-model.js.map +1 -0
  129. package/dist/browser/layout/scroll-fade.js +100 -0
  130. package/dist/browser/layout/scroll-fade.js.map +1 -0
  131. package/dist/browser/surfaces/DescriptionList.js.map +1 -1
  132. package/dist/browser/surfaces/StatusBadge.js +2 -1
  133. package/dist/browser/surfaces/StatusBadge.js.map +1 -1
  134. package/dist/fonts/ibm-plex-mono-cyrillic-400-italic-4aded3f2f2a7d27d.woff2 +0 -0
  135. package/dist/fonts/ibm-plex-mono-cyrillic-400-normal-7635422bd10ddbbc.woff2 +0 -0
  136. package/dist/fonts/ibm-plex-mono-cyrillic-500-normal-1d89462e86cb8e87.woff2 +0 -0
  137. package/dist/fonts/ibm-plex-mono-cyrillic-600-normal-2b05a8695c7f9f4a.woff2 +0 -0
  138. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-italic-a0b3b8cbe5a516e7.woff2 +0 -0
  139. package/dist/fonts/ibm-plex-mono-cyrillic-ext-400-normal-f8c22ec1804bd696.woff2 +0 -0
  140. package/dist/fonts/ibm-plex-mono-cyrillic-ext-500-normal-3febe5c7f22e4b07.woff2 +0 -0
  141. package/dist/fonts/ibm-plex-mono-cyrillic-ext-600-normal-83109cdd4f8665b4.woff2 +0 -0
  142. package/dist/fonts/ibm-plex-mono-latin-400-italic-0840095faae86403.woff2 +0 -0
  143. package/dist/fonts/ibm-plex-mono-latin-400-normal-08949f728dc52d52.woff2 +0 -0
  144. package/dist/fonts/ibm-plex-mono-latin-500-normal-01d285447409c8a5.woff2 +0 -0
  145. package/dist/fonts/ibm-plex-mono-latin-600-normal-0d1f0b8d0722224e.woff2 +0 -0
  146. package/dist/fonts/ibm-plex-mono-latin-ext-400-italic-1b07eee6df7d26b3.woff2 +0 -0
  147. package/dist/fonts/ibm-plex-mono-latin-ext-400-normal-6bc0f226a5b7884a.woff2 +0 -0
  148. package/dist/fonts/ibm-plex-mono-latin-ext-500-normal-6bb06407c97584b0.woff2 +0 -0
  149. package/dist/fonts/ibm-plex-mono-latin-ext-600-normal-32057cf50dd14bdb.woff2 +0 -0
  150. package/dist/fonts/ibm-plex-mono-vietnamese-400-italic-a6bab38af4f9c761.woff2 +0 -0
  151. package/dist/fonts/ibm-plex-mono-vietnamese-400-normal-62632b6375305e70.woff2 +0 -0
  152. package/dist/fonts/ibm-plex-mono-vietnamese-500-normal-781633d95de88040.woff2 +0 -0
  153. package/dist/fonts/ibm-plex-mono-vietnamese-600-normal-51b74d53e106ba8a.woff2 +0 -0
  154. package/dist/fonts/ibm-plex-sans-cyrillic-400-italic-e8731a7e2b00fc4f.woff2 +0 -0
  155. package/dist/fonts/ibm-plex-sans-cyrillic-400-normal-69afad88a0740b6e.woff2 +0 -0
  156. package/dist/fonts/ibm-plex-sans-cyrillic-500-normal-200be3a2a6b1789f.woff2 +0 -0
  157. package/dist/fonts/ibm-plex-sans-cyrillic-600-normal-730becc6f005c18c.woff2 +0 -0
  158. package/dist/fonts/ibm-plex-sans-cyrillic-700-normal-40540598b4c9eb2c.woff2 +0 -0
  159. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-italic-4ffb25726a7ce4cc.woff2 +0 -0
  160. package/dist/fonts/ibm-plex-sans-cyrillic-ext-400-normal-e2580ad78906551e.woff2 +0 -0
  161. package/dist/fonts/ibm-plex-sans-cyrillic-ext-500-normal-08578d906af6d986.woff2 +0 -0
  162. package/dist/fonts/ibm-plex-sans-cyrillic-ext-600-normal-d60d3d0b182753d5.woff2 +0 -0
  163. package/dist/fonts/ibm-plex-sans-cyrillic-ext-700-normal-d07dd53642480097.woff2 +0 -0
  164. package/dist/fonts/ibm-plex-sans-greek-400-italic-1bc10b01688ba9fa.woff2 +0 -0
  165. package/dist/fonts/ibm-plex-sans-greek-400-normal-02296067bc904d2a.woff2 +0 -0
  166. package/dist/fonts/ibm-plex-sans-greek-500-normal-8cb6e20b4dbbaa5f.woff2 +0 -0
  167. package/dist/fonts/ibm-plex-sans-greek-600-normal-0a9ebd9019415ee9.woff2 +0 -0
  168. package/dist/fonts/ibm-plex-sans-greek-700-normal-c949641d10a3bebc.woff2 +0 -0
  169. package/dist/fonts/ibm-plex-sans-latin-400-italic-6de912e531b6c980.woff2 +0 -0
  170. package/dist/fonts/ibm-plex-sans-latin-400-normal-3b646991d30055a9.woff2 +0 -0
  171. package/dist/fonts/ibm-plex-sans-latin-500-normal-0717336fb31fcdcd.woff2 +0 -0
  172. package/dist/fonts/ibm-plex-sans-latin-600-normal-8960851d691c054e.woff2 +0 -0
  173. package/dist/fonts/ibm-plex-sans-latin-700-normal-42e7b0c143c19df9.woff2 +0 -0
  174. package/dist/fonts/ibm-plex-sans-latin-ext-400-italic-c5c00e8a32022dfe.woff2 +0 -0
  175. package/dist/fonts/ibm-plex-sans-latin-ext-400-normal-c93d2a12aaa280f6.woff2 +0 -0
  176. package/dist/fonts/ibm-plex-sans-latin-ext-500-normal-2846035d85100f84.woff2 +0 -0
  177. package/dist/fonts/ibm-plex-sans-latin-ext-600-normal-b25dfd4f979e442a.woff2 +0 -0
  178. package/dist/fonts/ibm-plex-sans-latin-ext-700-normal-92f0392bd74fa395.woff2 +0 -0
  179. package/dist/fonts/ibm-plex-sans-vietnamese-400-italic-675d4bace127bffb.woff2 +0 -0
  180. package/dist/fonts/ibm-plex-sans-vietnamese-400-normal-771538f7f26551bd.woff2 +0 -0
  181. package/dist/fonts/ibm-plex-sans-vietnamese-500-normal-85ba3d9c2488a813.woff2 +0 -0
  182. package/dist/fonts/ibm-plex-sans-vietnamese-600-normal-5d34b803637befe3.woff2 +0 -0
  183. package/dist/fonts/ibm-plex-sans-vietnamese-700-normal-b79d0c4b68b85007.woff2 +0 -0
  184. package/dist/plex.css +1 -1
  185. package/dist/ssr/actions/Button.js +11 -2
  186. package/dist/ssr/actions/Button.js.map +1 -1
  187. package/dist/ssr/actions/Disclosure.js +2 -2
  188. package/dist/ssr/actions/Disclosure.js.map +1 -1
  189. package/dist/ssr/actions/Dropdown.js +4 -1
  190. package/dist/ssr/actions/Dropdown.js.map +1 -1
  191. package/dist/ssr/actions/FilterChip.js +16 -2
  192. package/dist/ssr/actions/FilterChip.js.map +1 -1
  193. package/dist/ssr/actions/SplitButton.js +69 -22
  194. package/dist/ssr/actions/SplitButton.js.map +1 -1
  195. package/dist/ssr/actions/SpotlightSearch.js +3 -7
  196. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  197. package/dist/ssr/actions/Tabs.js +58 -11
  198. package/dist/ssr/actions/Tabs.js.map +1 -1
  199. package/dist/ssr/actions/index.js +2 -2
  200. package/dist/ssr/actions/index.js.map +1 -1
  201. package/dist/ssr/chat/ChatComposer.js +366 -134
  202. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  203. package/dist/ssr/chat/ChatContextPopup.js +86 -0
  204. package/dist/ssr/chat/ChatContextPopup.js.map +1 -0
  205. package/dist/ssr/chat/ChatPrimitives.js +49 -11
  206. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  207. package/dist/ssr/chat/ChatTasks.js +48 -0
  208. package/dist/ssr/chat/ChatTasks.js.map +1 -0
  209. package/dist/ssr/chat/ChatTimeline.js +14 -4
  210. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  211. package/dist/ssr/chat/chat-behavior.js +0 -5
  212. package/dist/ssr/chat/chat-behavior.js.map +1 -1
  213. package/dist/ssr/chat/composer-document.js +55 -0
  214. package/dist/ssr/chat/composer-document.js.map +1 -0
  215. package/dist/ssr/chat/index.js +6 -1
  216. package/dist/ssr/chat/index.js.map +1 -1
  217. package/dist/ssr/chat/types.js.map +1 -1
  218. package/dist/ssr/content/Chart.js +121 -219
  219. package/dist/ssr/content/Chart.js.map +1 -1
  220. package/dist/ssr/content/ChartExplorer.js +257 -0
  221. package/dist/ssr/content/ChartExplorer.js.map +1 -0
  222. package/dist/ssr/content/ChartExplorerControls.js +105 -0
  223. package/dist/ssr/content/ChartExplorerControls.js.map +1 -0
  224. package/dist/ssr/content/ChartFilterControls.js +139 -0
  225. package/dist/ssr/content/ChartFilterControls.js.map +1 -0
  226. package/dist/ssr/content/ChartSnapshotView.js +58 -0
  227. package/dist/ssr/content/ChartSnapshotView.js.map +1 -0
  228. package/dist/ssr/content/DataTable.js +13 -9
  229. package/dist/ssr/content/DataTable.js.map +1 -1
  230. package/dist/ssr/content/FileBrowser.js +3 -0
  231. package/dist/ssr/content/FileBrowser.js.map +1 -1
  232. package/dist/ssr/content/FileGrid.js +38 -0
  233. package/dist/ssr/content/FileGrid.js.map +1 -0
  234. package/dist/ssr/content/FileTree.js +2 -2
  235. package/dist/ssr/content/FileTree.js.map +1 -1
  236. package/dist/ssr/content/FileView.js +356 -75
  237. package/dist/ssr/content/FileView.js.map +1 -1
  238. package/dist/ssr/content/MarkdownView.js +6 -0
  239. package/dist/ssr/content/MarkdownView.js.map +1 -1
  240. package/dist/ssr/content/Pagination.js.map +1 -1
  241. package/dist/ssr/content/PdfPreview.js +37 -24
  242. package/dist/ssr/content/PdfPreview.js.map +1 -1
  243. package/dist/ssr/content/chart-cursor.js +33 -0
  244. package/dist/ssr/content/chart-cursor.js.map +1 -0
  245. package/dist/ssr/content/chart-explorer.js +147 -0
  246. package/dist/ssr/content/chart-explorer.js.map +1 -0
  247. package/dist/ssr/content/chart-inspection.js +447 -0
  248. package/dist/ssr/content/chart-inspection.js.map +1 -0
  249. package/dist/ssr/content/chart-line-gaps.js +53 -0
  250. package/dist/ssr/content/chart-line-gaps.js.map +1 -0
  251. package/dist/ssr/content/chart-map-viewport.js +5 -1
  252. package/dist/ssr/content/chart-map-viewport.js.map +1 -1
  253. package/dist/ssr/content/chart-snapshot.js +63 -0
  254. package/dist/ssr/content/chart-snapshot.js.map +1 -0
  255. package/dist/ssr/content/chart-state-timeline.js +32 -4
  256. package/dist/ssr/content/chart-state-timeline.js.map +1 -1
  257. package/dist/ssr/content/chart-svg.js +54 -0
  258. package/dist/ssr/content/chart-svg.js.map +1 -0
  259. package/dist/ssr/content/collection-selection.js +109 -0
  260. package/dist/ssr/content/collection-selection.js.map +1 -0
  261. package/dist/ssr/content/delimited-preferences.js +21 -0
  262. package/dist/ssr/content/delimited-preferences.js.map +1 -0
  263. package/dist/ssr/content/file-tree.js.map +1 -1
  264. package/dist/ssr/content/file-view-preview.js +11 -7
  265. package/dist/ssr/content/file-view-preview.js.map +1 -1
  266. package/dist/ssr/content/index.js +9 -0
  267. package/dist/ssr/content/index.js.map +1 -1
  268. package/dist/ssr/feedback/InlineGuidance.js +17 -3
  269. package/dist/ssr/feedback/InlineGuidance.js.map +1 -1
  270. package/dist/ssr/feedback/dialog-core.js +81 -7
  271. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  272. package/dist/ssr/feedback/prompts.js +6 -0
  273. package/dist/ssr/feedback/prompts.js.map +1 -1
  274. package/dist/ssr/feedback/toast.js +29 -6
  275. package/dist/ssr/feedback/toast.js.map +1 -1
  276. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
  277. package/dist/ssr/inputs/Select.js.map +1 -1
  278. package/dist/ssr/inputs/SelectChip.js +3 -3
  279. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  280. package/dist/ssr/inputs/TextInput.js.map +1 -1
  281. package/dist/ssr/inputs/markdown/MarkdownEditor.js +19 -11
  282. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  283. package/dist/ssr/inputs/markdown/behaviors.js +1 -1
  284. package/dist/ssr/inputs/markdown/behaviors.js.map +1 -1
  285. package/dist/ssr/intl/Format.js +61 -0
  286. package/dist/ssr/intl/Format.js.map +1 -1
  287. package/dist/ssr/intl/index.js.map +1 -1
  288. package/dist/ssr/intl/messages.js +130 -2
  289. package/dist/ssr/intl/messages.js.map +1 -1
  290. package/dist/ssr/layout/AppWorkspace.js +368 -275
  291. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  292. package/dist/ssr/layout/BottomSheet.js +43 -0
  293. package/dist/ssr/layout/BottomSheet.js.map +1 -0
  294. package/dist/ssr/layout/DetailPanel.js +11 -4
  295. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  296. package/dist/ssr/layout/Navigation.js +181 -0
  297. package/dist/ssr/layout/Navigation.js.map +1 -0
  298. package/dist/ssr/layout/PanelDialog.js +111 -26
  299. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  300. package/dist/ssr/layout/ScrollArea.js +16 -1
  301. package/dist/ssr/layout/ScrollArea.js.map +1 -1
  302. package/dist/ssr/layout/Settings.js.map +1 -1
  303. package/dist/ssr/layout/SidebarItemPreview.js +133 -0
  304. package/dist/ssr/layout/SidebarItemPreview.js.map +1 -0
  305. package/dist/ssr/layout/app-workspace-controller.js +3 -0
  306. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  307. package/dist/ssr/layout/app-workspace-state.js.map +1 -1
  308. package/dist/ssr/layout/index.js +3 -0
  309. package/dist/ssr/layout/index.js.map +1 -1
  310. package/dist/ssr/layout/navigation-model.js +23 -0
  311. package/dist/ssr/layout/navigation-model.js.map +1 -0
  312. package/dist/ssr/layout/scroll-fade.js +100 -0
  313. package/dist/ssr/layout/scroll-fade.js.map +1 -0
  314. package/dist/ssr/surfaces/DescriptionList.js.map +1 -1
  315. package/dist/ssr/surfaces/StatusBadge.js +2 -1
  316. package/dist/ssr/surfaces/StatusBadge.js.map +1 -1
  317. package/dist/styles.css +1 -1
  318. package/dist/tabler.css +1 -1
  319. package/dist/types/actions/Button.d.ts +4 -0
  320. package/dist/types/actions/Disclosure.d.ts +1 -0
  321. package/dist/types/actions/FilterChip.d.ts +4 -0
  322. package/dist/types/actions/SplitButton.d.ts +6 -0
  323. package/dist/types/actions/SpotlightSearch.d.ts +0 -4
  324. package/dist/types/actions/Tabs.d.ts +4 -0
  325. package/dist/types/actions/index.d.ts +4 -4
  326. package/dist/types/chat/ChatComposer.d.ts +20 -2
  327. package/dist/types/chat/ChatContextPopup.d.ts +6 -0
  328. package/dist/types/chat/ChatPrimitives.d.ts +4 -0
  329. package/dist/types/chat/ChatTasks.d.ts +15 -0
  330. package/dist/types/chat/ChatTimeline.d.ts +2 -0
  331. package/dist/types/chat/chat-behavior.d.ts +0 -3
  332. package/dist/types/chat/composer-document.d.ts +14 -0
  333. package/dist/types/chat/index.d.ts +8 -1
  334. package/dist/types/chat/types.d.ts +7 -0
  335. package/dist/types/content/Chart.d.ts +42 -23
  336. package/dist/types/content/ChartExplorer.d.ts +34 -0
  337. package/dist/types/content/ChartExplorerControls.d.ts +10 -0
  338. package/dist/types/content/ChartFilterControls.d.ts +21 -0
  339. package/dist/types/content/ChartSnapshotView.d.ts +11 -0
  340. package/dist/types/content/DataTable.d.ts +4 -0
  341. package/dist/types/content/FileBrowser.d.ts +1 -0
  342. package/dist/types/content/FileGrid.d.ts +21 -0
  343. package/dist/types/content/FileView.d.ts +20 -0
  344. package/dist/types/content/PdfPreview.d.ts +8 -1
  345. package/dist/types/content/chart-cursor.d.ts +15 -0
  346. package/dist/types/content/chart-explorer.d.ts +48 -0
  347. package/dist/types/content/chart-inspection.d.ts +40 -0
  348. package/dist/types/content/chart-line-gaps.d.ts +5 -0
  349. package/dist/types/content/chart-map-viewport.d.ts +1 -1
  350. package/dist/types/content/chart-snapshot.d.ts +26 -0
  351. package/dist/types/content/chart-svg.d.ts +21 -0
  352. package/dist/types/content/collection-selection.d.ts +24 -0
  353. package/dist/types/content/delimited-preferences.d.ts +11 -0
  354. package/dist/types/content/file-tree.d.ts +2 -0
  355. package/dist/types/content/file-view-preview.d.ts +4 -1
  356. package/dist/types/content/index.d.ts +16 -2
  357. package/dist/types/feedback/InlineGuidance.d.ts +1 -0
  358. package/dist/types/feedback/dialog-core.d.ts +11 -0
  359. package/dist/types/feedback/prompts.d.ts +2 -0
  360. package/dist/types/feedback/toast.d.ts +7 -1
  361. package/dist/types/inputs/markdown/MarkdownEditor.d.ts +5 -1
  362. package/dist/types/intl/Format.d.ts +9 -0
  363. package/dist/types/intl/index.d.ts +1 -1
  364. package/dist/types/intl/messages.d.ts +31 -1
  365. package/dist/types/layout/AppWorkspace.d.ts +35 -18
  366. package/dist/types/layout/BottomSheet.d.ts +23 -0
  367. package/dist/types/layout/DetailPanel.d.ts +1 -0
  368. package/dist/types/layout/Navigation.d.ts +8 -0
  369. package/dist/types/layout/PanelDialog.d.ts +14 -1
  370. package/dist/types/layout/ScrollArea.d.ts +4 -0
  371. package/dist/types/layout/Settings.d.ts +1 -1
  372. package/dist/types/layout/SidebarItemPreview.d.ts +11 -0
  373. package/dist/types/layout/index.d.ts +4 -1
  374. package/dist/types/layout/navigation-model.d.ts +48 -0
  375. package/dist/types/layout/scroll-fade.d.ts +3 -0
  376. package/dist/types/surfaces/DescriptionList.d.ts +1 -1
  377. package/dist/types/surfaces/StatusBadge.d.ts +1 -1
  378. package/package.json +5 -7
@@ -7,21 +7,25 @@ var _tmpl$ = ["<button type=\"button\" class=\"k2b-content-file-view__action\"",
7
7
  _tmpl$3 = ["<div class=\"k2b-content-file-view__overlay\">", "</div>"],
8
8
  _tmpl$4 = ["<div class=\"k2b-content-file-view__panel\"><div class=\"k2b-content-file-view__preview\">", "</div>", "</div>"],
9
9
  _tmpl$5 = ["<button type=\"button\" class=\"k2b-markdown-editor__tool\"", " tabindex=\"-1\"", "><i", "></i></button>"],
10
- _tmpl$6 = ["<div class=\"k2b-content-file-view__document\">", "</div>"],
11
- _tmpl$7 = ["<div class=\"k2b-content-file-view__editor\">", "</div>"],
12
- _tmpl$8 = ["<div class=\"k2b-content-file-view__editor\"><div class=\"k2b-markdown-editor\" data-fill=\"true\" role=\"group\"", "><div class=\"k2b-markdown-editor__toolbar k2b-content-file-view__code-toolbar\"><span class=\"k2b-content-file-view__code-language\">", "</span><span class=\"k2b-markdown-editor__trailing\">", "", "</span></div><div class=\"k2b-markdown-editor__surface\"><textarea class=\"k2b-content-file-view__code-input\"", " spellcheck=\"false\"></textarea></div></div></div>"],
13
- _tmpl$9 = ["<a class=\"k2b-markdown-editor__tool\"", "><i class=\"ti ti-download\"></i></a>"],
14
- _tmpl$0 = ["<p class=\"k2b-content-file-view__truncated\">", "</p>"],
15
- _tmpl$1 = ["<div class=\"k2b-content-file-view__sheet\"><table class=\"k2b-content-file-view__table\"><thead><tr>", "</tr></thead><tbody>", "</tbody></table>", "</div>"],
16
- _tmpl$10 = ["<th scope=\"col\"><span>", "</span></th>"],
17
- _tmpl$11 = ["<tr>", "</tr>"],
18
- _tmpl$12 = ["<td>", "</td>"],
19
- _tmpl$13 = ["<div class=\"k2b-content-file-view__media\"><img", "></div>"],
20
- _tmpl$14 = ["<object", " type=\"application/pdf\" class=\"k2b-content-file-view__pdf\"", "></object>"],
21
- _tmpl$15 = ["<div class=\"k2b-content-file-view__media\" data-kind=\"audio\"><audio controls preload=\"metadata\"", ">", "</audio></div>"],
22
- _tmpl$16 = ["<div class=\"k2b-content-file-view__media\" data-kind=\"video\"><video controls preload=\"metadata\" playsinline", ">", "</video></div>"],
23
- _tmpl$17 = ["<a class=\"k2b-button\" data-variant=\"secondary\" data-size=\"sm\"", " download><i class=\"ti ti-download\" aria-hidden=\"true\"></i>", "</a>"],
24
- _tmpl$18 = ["<div class=\"", "\">", "</div>"];
10
+ _tmpl$6 = ["<div class=\"k2b-content-file-view__truncated\">", "</div>"],
11
+ _tmpl$7 = ["<span>", "</span>"],
12
+ _tmpl$8 = ["<div class=\"", "\">", "</div>"],
13
+ _tmpl$9 = ["<div class=\"k2b-content-file-view__document\">", "</div>"],
14
+ _tmpl$0 = ["<div class=\"k2b-content-file-view__editor\">", "</div>"],
15
+ _tmpl$1 = ["<div class=\"k2b-content-file-view__editor\"><div class=\"k2b-markdown-editor\" data-fill=\"true\" role=\"group\"", "><div class=\"k2b-markdown-editor__toolbar k2b-content-file-view__code-toolbar\"><span class=\"k2b-content-file-view__code-language\">", "</span><span class=\"k2b-markdown-editor__trailing\">", "", "</span></div><div class=\"k2b-markdown-editor__surface\"><textarea class=\"k2b-content-file-view__code-input\"", " spellcheck=\"false\"></textarea></div></div></div>"],
16
+ _tmpl$10 = ["<a class=\"k2b-markdown-editor__tool\"", "><i class=\"ti ti-download\"></i></a>"],
17
+ _tmpl$11 = ["<div class=\"k2b-content-file-view__settings\">", "", "", "</div>"],
18
+ _tmpl$12 = ["<div class=\"k2b-content-file-view__sheet\"><table class=\"k2b-content-file-view__table\"><thead><tr>", "</tr></thead><tbody>", "</tbody></table>", "", "</div>"],
19
+ _tmpl$13 = ["<th scope=\"col\"><span>", "</span></th>"],
20
+ _tmpl$14 = ["<tr>", "</tr>"],
21
+ _tmpl$15 = ["<td>", "</td>"],
22
+ _tmpl$16 = ["<div class=\"k2b-content-file-view__pagination\">", "<span>", "\u2013", " / ", "</span>", "</div>"],
23
+ _tmpl$17 = ["<div class=\"k2b-content-file-view__media\"><img", "></div>"],
24
+ _tmpl$18 = ["<object", " type=\"application/pdf\" class=\"k2b-content-file-view__pdf\"", "></object>"],
25
+ _tmpl$19 = ["<div class=\"k2b-content-file-view__media\" data-kind=\"audio\"><audio", " controls preload=\"metadata\"", ">", "</audio></div>"],
26
+ _tmpl$20 = ["<div class=\"k2b-content-file-view__media\" data-kind=\"video\"><video", " controls preload=\"metadata\" playsinline", ">", "</video></div>"],
27
+ _tmpl$21 = ["<a class=\"k2b-button\" data-variant=\"secondary\" data-size=\"sm\"", " download><i class=\"ti ti-download\" aria-hidden=\"true\"></i>", "</a>"],
28
+ _tmpl$22 = ["<div class=\"", "\"", ">", "</div>"];
25
29
  /**
26
30
  * FileView — renders one file through a small renderer registry keyed by
27
31
  * media type / path. Editing is enabled purely by the presence of `save`;
@@ -33,12 +37,16 @@ var _tmpl$ = ["<button type=\"button\" class=\"k2b-content-file-view__action\"",
33
37
  */
34
38
 
35
39
  import { mutation } from "@k2b/stdlib/solid";
36
- import { createEffect, createMemo, createResource, createSignal, For, Match, onCleanup, Show, Switch, untrack } from "solid-js";
40
+ import { createEffect, createMemo, createResource, createSignal, For, Match, onCleanup, onMount, Show, Switch, untrack } from "solid-js";
41
+ import { Button } from "../actions/Button";
42
+ import { prompts } from "../feedback/prompts";
37
43
  import { toast } from "../feedback/toast";
38
44
  import { MarkdownEditor } from "../inputs/markdown/MarkdownEditor";
45
+ import { Select } from "../inputs/Select";
39
46
  import { useUiMessages } from "../intl/messages";
40
47
  import Placeholder from "../surfaces/Placeholder";
41
48
  import CodeDisplay from "./CodeDisplay";
49
+ import { decodeDelimitedContent, readDelimitedPreferences } from "./delimited-preferences";
42
50
  import { fileViewExtension, getFileViewPreviewKind, parseDelimitedText } from "./file-view-preview";
43
51
  import MarkdownView from "./MarkdownView";
44
52
  import StructuredDataPreview from "./StructuredDataPreview";
@@ -116,6 +124,73 @@ function EditorToolButton(props) {
116
124
 
117
125
  // ── Built-in renderers ──────────────────────────────────────────────────────
118
126
 
127
+ function MoreLines(props) {
128
+ const messages = useUiMessages();
129
+ return _$createComponent(Show, {
130
+ get when() {
131
+ return props.count > 0;
132
+ },
133
+ get children() {
134
+ return _$ssr(_tmpl$6, _$escape(_$createComponent(Show, {
135
+ get when() {
136
+ return props.onClick;
137
+ },
138
+ get fallback() {
139
+ return _$ssr(_tmpl$7, _$escape(messages().previewMoreLines(props.count)));
140
+ },
141
+ get children() {
142
+ return _$createComponent(Button, {
143
+ size: "sm",
144
+ variant: "ghost",
145
+ get onClick() {
146
+ return props.onClick;
147
+ },
148
+ get children() {
149
+ return messages().previewMoreLines(props.count);
150
+ }
151
+ });
152
+ }
153
+ })));
154
+ }
155
+ });
156
+ }
157
+ function TextExcerpt(props) {
158
+ const lines = createMemo(() => props.text.replace(/\r\n?/g, "\n").replace(/\n$/, "").split("\n"));
159
+ const limit = () => props.renderer.previewLines === undefined ? lines().length : Math.max(1, props.renderer.previewLines);
160
+ const text = () => lines().slice(0, limit()).join("\n");
161
+ return [_$ssr(_tmpl$8, props.renderer.previewLines !== undefined ? "k2b-content-file-view__excerpt" : "", _$escape(_$createComponent(Show, {
162
+ get when() {
163
+ return props.markdown;
164
+ },
165
+ get fallback() {
166
+ return _$createComponent(CodeDisplay, {
167
+ get code() {
168
+ return text();
169
+ },
170
+ get language() {
171
+ return codeLanguage(props.renderer.file.path);
172
+ }
173
+ });
174
+ },
175
+ get children() {
176
+ return _$createComponent(MarkdownView, {
177
+ get markdown() {
178
+ return text();
179
+ },
180
+ get headingScale() {
181
+ return props.renderer.headingScale ?? "compact";
182
+ }
183
+ });
184
+ }
185
+ }))), _$createComponent(MoreLines, {
186
+ get count() {
187
+ return lines().length - limit();
188
+ },
189
+ get onClick() {
190
+ return props.renderer.onExpandPreview;
191
+ }
192
+ })];
193
+ }
119
194
  function MarkdownRenderer(props) {
120
195
  const messages = useUiMessages();
121
196
  const [editing, setEditing] = createSignal(false);
@@ -142,18 +217,19 @@ function MarkdownRenderer(props) {
142
217
  }), _$createComponent(DownloadAction, props)];
143
218
  },
144
219
  get children() {
145
- return _$ssr(_tmpl$6, _$escape(_$createComponent(MarkdownView, {
146
- get markdown() {
220
+ return _$ssr(_tmpl$9, _$escape(_$createComponent(TextExcerpt, {
221
+ renderer: props,
222
+ get text() {
147
223
  return stripFrontmatter(props.editor?.draft() ?? props.content.content);
148
224
  },
149
- headingScale: "compact"
225
+ markdown: true
150
226
  })));
151
227
  }
152
228
  });
153
229
  },
154
230
  children: _ => {
155
231
  const editor = props.editor;
156
- return _$ssr(_tmpl$7, _$escape(_$createComponent(MarkdownEditor, {
232
+ return _$ssr(_tmpl$0, _$escape(_$createComponent(MarkdownEditor, {
157
233
  "class": "k2b-content-file-view__markdown-field",
158
234
  get ["aria-label"]() {
159
235
  return `Edit ${props.file.path.slice(props.file.path.lastIndexOf("/") + 1)}`;
@@ -198,12 +274,10 @@ function TextRenderer(props) {
198
274
  return _$createComponent(DownloadAction, props);
199
275
  },
200
276
  get children() {
201
- return _$createComponent(CodeDisplay, {
202
- get code() {
277
+ return _$createComponent(TextExcerpt, {
278
+ renderer: props,
279
+ get text() {
203
280
  return props.content.content;
204
- },
205
- get language() {
206
- return codeLanguage(props.file.path);
207
281
  }
208
282
  });
209
283
  }
@@ -211,11 +285,11 @@ function TextRenderer(props) {
211
285
  },
212
286
  children: editor => // Same chrome as the markdown editor — literally the same classes, so
213
287
  // border, radius, focus ring, toolbar height and text metrics cannot drift.
214
- _$ssr(_tmpl$8, _$ssrAttribute("aria-label", _$escape(messages().textEditor, true), false), _$escape(codeLanguage(props.file.path)), _$escape(_$createComponent(Show, {
288
+ _$ssr(_tmpl$1, _$ssrAttribute("aria-label", _$escape(messages().textEditor, true), false), _$escape(codeLanguage(props.file.path)), _$escape(_$createComponent(Show, {
215
289
  get when() {
216
290
  return props.downloadHref;
217
291
  },
218
- children: href => _$ssr(_tmpl$9, _$ssrAttribute("href", _$escape(href(), true), false) + _$ssrAttribute("download", _$escape(props.file.path.slice(props.file.path.lastIndexOf("/") + 1), true), false) + _$ssrAttribute("title", _$escape(messages().download, true), false) + _$ssrAttribute("aria-label", _$escape(messages().download, true), false))
292
+ children: href => _$ssr(_tmpl$10, _$ssrAttribute("href", _$escape(href(), true), false) + _$ssrAttribute("download", _$escape(props.file.path.slice(props.file.path.lastIndexOf("/") + 1), true), false) + _$ssrAttribute("title", _$escape(messages().download, true), false) + _$ssrAttribute("aria-label", _$escape(messages().download, true), false))
219
293
  })), _$escape(_$createComponent(EditorToolButton, {
220
294
  get icon() {
221
295
  return editor().saving() ? "ti ti-loader-2 k2b-spin" : "ti ti-device-floppy";
@@ -252,24 +326,39 @@ function JsonRenderer(props) {
252
326
  return _$createComponent(DownloadAction, props);
253
327
  },
254
328
  get children() {
255
- return _$ssr(_tmpl$6, _$escape(_$createComponent(Show, {
329
+ return _$ssr(_tmpl$9, _$escape(_$createComponent(Show, {
256
330
  get when() {
257
331
  return parsed().ok;
258
332
  },
259
333
  get fallback() {
260
- return _$createComponent(CodeDisplay, {
261
- get code() {
334
+ return _$createComponent(TextExcerpt, {
335
+ renderer: props,
336
+ get text() {
262
337
  return props.content.content;
263
- },
264
- language: "text"
338
+ }
265
339
  });
266
340
  },
267
341
  get children() {
268
- return _$createComponent(StructuredDataPreview, {
269
- get data() {
270
- return parsedValue();
342
+ return _$createComponent(Show, {
343
+ get when() {
344
+ return props.previewLines === undefined;
345
+ },
346
+ get fallback() {
347
+ return _$createComponent(TextExcerpt, {
348
+ renderer: props,
349
+ get text() {
350
+ return JSON.stringify(parsedValue(), null, 2);
351
+ }
352
+ });
271
353
  },
272
- maxRows: 200
354
+ get children() {
355
+ return _$createComponent(StructuredDataPreview, {
356
+ get data() {
357
+ return parsedValue();
358
+ },
359
+ maxRows: 200
360
+ });
361
+ }
273
362
  });
274
363
  }
275
364
  })));
@@ -278,56 +367,230 @@ function JsonRenderer(props) {
278
367
  }
279
368
  function DelimitedTextRenderer(props) {
280
369
  const messages = useUiMessages();
281
- const delimiter = () => fileViewExtension(props.file.path) === "tsv" || props.content.mediaType === "text/tab-separated-values" ? "\t" : ",";
282
- const preview = createMemo(() => parseDelimitedText(props.content.content, delimiter()));
370
+ const [preferences, setPreferences] = createSignal({
371
+ encoding: "utf-8",
372
+ delimiter: "auto",
373
+ view: "table"
374
+ });
375
+ onMount(() => {
376
+ if (!props.previewPreferencesKey) return;
377
+ try {
378
+ setPreferences(readDelimitedPreferences(localStorage.getItem(props.previewPreferencesKey)));
379
+ } catch {
380
+ /* Storage may be disabled. */
381
+ }
382
+ });
383
+ const update = patch => {
384
+ const next = {
385
+ ...preferences(),
386
+ ...patch
387
+ };
388
+ setPreferences(next);
389
+ if (props.previewPreferencesKey) {
390
+ try {
391
+ localStorage.setItem(props.previewPreferencesKey, JSON.stringify(next));
392
+ } catch {
393
+ /* Keep the local selection. */
394
+ }
395
+ }
396
+ };
397
+ const text = createMemo(() => decodeDelimitedContent(props.content, preferences().encoding));
398
+ const delimiter = () => preferences().delimiter === "auto" ? fileViewExtension(props.file.path) === "tsv" || props.content.mediaType === "text/tab-separated-values" ? "\t" : "," : preferences().delimiter;
399
+ const [page, setPage] = createSignal(0);
400
+ createEffect(() => {
401
+ text();
402
+ delimiter();
403
+ props.previewLines;
404
+ setPage(0);
405
+ });
406
+ const pageSize = () => props.previewLines === undefined ? 200 : Math.max(1, props.previewLines);
407
+ const preview = createMemo(() => parseDelimitedText(text(), delimiter(), {
408
+ rows: pageSize() + 1,
409
+ offset: page() * pageSize()
410
+ }));
411
+ const settings = () => prompts.dialog(() => _$ssr(_tmpl$11, _$escape(_$createComponent(Select, {
412
+ get label() {
413
+ return messages().csvEncoding;
414
+ },
415
+ get value() {
416
+ return preferences().encoding;
417
+ },
418
+ get disabled() {
419
+ return props.content.encoding !== "base64";
420
+ },
421
+ options: ["utf-8", "windows-1252", "utf-16le", "utf-16be"],
422
+ onValueChange: value => {
423
+ if (value) update({
424
+ encoding: value
425
+ });
426
+ }
427
+ })), _$escape(_$createComponent(Select, {
428
+ get label() {
429
+ return messages().csvSeparator;
430
+ },
431
+ get value() {
432
+ return preferences().delimiter;
433
+ },
434
+ get options() {
435
+ return [{
436
+ value: "auto",
437
+ label: messages().csvDefaultSeparator
438
+ }, {
439
+ value: ",",
440
+ label: messages().csvComma
441
+ }, {
442
+ value: ";",
443
+ label: messages().csvSemicolon
444
+ }, {
445
+ value: "\t",
446
+ label: messages().csvTab
447
+ }, {
448
+ value: "|",
449
+ label: "|"
450
+ }];
451
+ },
452
+ onValueChange: value => {
453
+ if (value) update({
454
+ delimiter: value
455
+ });
456
+ }
457
+ })), _$escape(_$createComponent(Select, {
458
+ get label() {
459
+ return messages().csvView;
460
+ },
461
+ get value() {
462
+ return preferences().view;
463
+ },
464
+ get options() {
465
+ return [{
466
+ value: "table",
467
+ label: messages().dataTable
468
+ }, {
469
+ value: "raw",
470
+ label: messages().csvRaw
471
+ }];
472
+ },
473
+ onValueChange: value => {
474
+ if (value === "table" || value === "raw") update({
475
+ view: value
476
+ });
477
+ }
478
+ }))), {
479
+ title: messages().csvSettings
480
+ });
283
481
  const headers = createMemo(() => preview().rows[0] ?? []);
284
482
  const rows = createMemo(() => preview().rows.slice(1));
285
483
  return _$createComponent(OverlayPanel, {
286
484
  get actions() {
287
- return _$createComponent(DownloadAction, props);
485
+ return [_$createComponent(OverlayAction, {
486
+ icon: "ti-adjustments-horizontal",
487
+ get title() {
488
+ return messages().csvSettings;
489
+ },
490
+ onClick: () => void settings()
491
+ }), _$createComponent(DownloadAction, props)];
288
492
  },
289
493
  get children() {
290
494
  return _$createComponent(Show, {
291
495
  get when() {
292
- return headers().length > 0;
496
+ return preferences().view === "table";
293
497
  },
294
498
  get fallback() {
295
- return _$createComponent(Placeholder, {
296
- icon: "ti ti-table",
297
- get title() {
298
- return messages().emptyFile;
299
- },
300
- get description() {
301
- return messages().delimitedFileEmpty;
499
+ return _$createComponent(TextExcerpt, {
500
+ renderer: props,
501
+ get text() {
502
+ return text();
302
503
  }
303
504
  });
304
505
  },
305
506
  get children() {
306
- return _$ssr(_tmpl$1, _$escape(_$createComponent(For, {
307
- get each() {
308
- return headers();
309
- },
310
- children: (header, index) => _$ssr(_tmpl$10, _$escape(header || messages().column({
311
- number: index() + 1
312
- })))
313
- })), _$escape(_$createComponent(For, {
314
- get each() {
315
- return rows();
316
- },
317
- children: row => _$ssr(_tmpl$11, _$escape(_$createComponent(For, {
318
- get each() {
319
- return headers();
320
- },
321
- children: (_, index) => _$ssr(_tmpl$12, _$escape(row[index()] ?? ""))
322
- })))
323
- })), _$escape(_$createComponent(Show, {
507
+ return _$createComponent(Show, {
324
508
  get when() {
325
- return preview().truncated;
509
+ return headers().length > 0;
510
+ },
511
+ get fallback() {
512
+ return _$createComponent(Placeholder, {
513
+ icon: "ti ti-table",
514
+ get title() {
515
+ return messages().emptyFile;
516
+ },
517
+ get description() {
518
+ return messages().delimitedFileEmpty;
519
+ }
520
+ });
326
521
  },
327
522
  get children() {
328
- return _$ssr(_tmpl$0, _$escape(messages().previewLimited));
523
+ return _$ssr(_tmpl$12, _$escape(_$createComponent(For, {
524
+ get each() {
525
+ return headers();
526
+ },
527
+ children: (header, index) => _$ssr(_tmpl$13, _$escape(header || messages().column({
528
+ number: index() + 1
529
+ })))
530
+ })), _$escape(_$createComponent(For, {
531
+ get each() {
532
+ return rows();
533
+ },
534
+ children: row => _$ssr(_tmpl$14, _$escape(_$createComponent(For, {
535
+ get each() {
536
+ return headers();
537
+ },
538
+ children: (_, index) => _$ssr(_tmpl$15, _$escape(row[index()] ?? ""))
539
+ })))
540
+ })), _$escape(_$createComponent(Show, {
541
+ get when() {
542
+ return preview().columnsTruncated;
543
+ },
544
+ get children() {
545
+ return _$ssr(_tmpl$6, _$escape(messages().previewColumnsLimited));
546
+ }
547
+ })), _$escape(_$createComponent(Show, {
548
+ get when() {
549
+ return props.previewLines !== undefined;
550
+ },
551
+ get fallback() {
552
+ return _$createComponent(Show, {
553
+ get when() {
554
+ return preview().totalRows > 201;
555
+ },
556
+ get children() {
557
+ return _$ssr(_tmpl$16, _$escape(_$createComponent(Button, {
558
+ size: "sm",
559
+ variant: "ghost",
560
+ get disabled() {
561
+ return page() === 0;
562
+ },
563
+ onClick: () => setPage(page() - 1),
564
+ get children() {
565
+ return messages().previous;
566
+ }
567
+ })), _$escape(page()) * _$escape(pageSize()) + 1, _$escape(Math.min((page() + 1) * pageSize(), preview().totalRows - 1)), _$escape(preview().totalRows) - 1, _$escape(_$createComponent(Button, {
568
+ size: "sm",
569
+ variant: "ghost",
570
+ get disabled() {
571
+ return (page() + 1) * pageSize() >= preview().totalRows - 1;
572
+ },
573
+ onClick: () => setPage(page() + 1),
574
+ get children() {
575
+ return messages().next;
576
+ }
577
+ })));
578
+ }
579
+ });
580
+ },
581
+ get children() {
582
+ return _$createComponent(MoreLines, {
583
+ get count() {
584
+ return preview().totalRows - rows().length - 1;
585
+ },
586
+ get onClick() {
587
+ return props.onExpandPreview;
588
+ }
589
+ });
590
+ }
591
+ })));
329
592
  }
330
- })));
593
+ });
331
594
  }
332
595
  });
333
596
  }
@@ -340,7 +603,7 @@ function ImageRenderer(props) {
340
603
  return _$createComponent(DownloadAction, props);
341
604
  },
342
605
  get children() {
343
- return _$ssr(_tmpl$13, _$ssrAttribute("src", _$escape(mediaSource(props), true), false) + _$ssrAttribute("alt", _$escape(props.file.path, true), false));
606
+ return _$ssr(_tmpl$17, _$ssrAttribute("crossorigin", _$escape(props.crossOrigin, true), false) + _$ssrAttribute("src", _$escape(mediaSource(props), true), false) + _$ssrAttribute("alt", _$escape(props.file.path, true), false));
344
607
  }
345
608
  });
346
609
  }
@@ -360,7 +623,7 @@ function PdfRenderer(props) {
360
623
  }
361
624
  });
362
625
  },
363
- children: href => _$ssr(_tmpl$14, _$ssrAttribute("data", _$escape(href(), true), false), _$ssrAttribute("aria-label", _$escape(props.file.path, true), false))
626
+ children: href => _$ssr(_tmpl$18, _$ssrAttribute("data", _$escape(href(), true), false), _$ssrAttribute("aria-label", _$escape(props.file.path, true), false))
364
627
  });
365
628
  }
366
629
  function AudioRenderer(props) {
@@ -370,7 +633,7 @@ function AudioRenderer(props) {
370
633
  return _$createComponent(DownloadAction, props);
371
634
  },
372
635
  get children() {
373
- return _$ssr(_tmpl$15, _$ssrAttribute("src", _$escape(mediaSource(props), true), false) + _$ssrAttribute("aria-label", _$escape(props.file.path, true), false), _$escape(messages().audioUnsupported));
636
+ return _$ssr(_tmpl$19, _$ssrAttribute("crossorigin", _$escape(props.crossOrigin, true), false), _$ssrAttribute("src", _$escape(mediaSource(props), true), false) + _$ssrAttribute("aria-label", _$escape(props.file.path, true), false), _$escape(messages().audioUnsupported));
374
637
  }
375
638
  });
376
639
  }
@@ -381,7 +644,7 @@ function VideoRenderer(props) {
381
644
  return _$createComponent(DownloadAction, props);
382
645
  },
383
646
  get children() {
384
- return _$ssr(_tmpl$16, _$ssrAttribute("src", _$escape(mediaSource(props), true), false) + _$ssrAttribute("aria-label", _$escape(props.file.path, true), false), _$escape(messages().videoUnsupported));
647
+ return _$ssr(_tmpl$20, _$ssrAttribute("crossorigin", _$escape(props.crossOrigin, true), false), _$ssrAttribute("src", _$escape(mediaSource(props), true), false) + _$ssrAttribute("aria-label", _$escape(props.file.path, true), false), _$escape(messages().videoUnsupported));
385
648
  }
386
649
  });
387
650
  }
@@ -400,7 +663,7 @@ function BinaryRenderer(props) {
400
663
  get when() {
401
664
  return props.downloadHref;
402
665
  },
403
- children: href => _$ssr(_tmpl$17, _$ssrAttribute("href", _$escape(href(), true), false), _$escape(messages().download))
666
+ children: href => _$ssr(_tmpl$21, _$ssrAttribute("href", _$escape(href(), true), false), _$escape(messages().download))
404
667
  });
405
668
  }
406
669
  });
@@ -433,7 +696,7 @@ const BUILTIN_RENDERERS = [{
433
696
  component: JsonRenderer
434
697
  }, {
435
698
  id: "delimited-text",
436
- match: (file, content) => content.encoding === "utf8" && getFileViewPreviewKind({
699
+ match: (file, content) => getFileViewPreviewKind({
437
700
  ...file,
438
701
  mediaType: content.mediaType || file.mediaType
439
702
  }) === "delimited-text",
@@ -552,7 +815,7 @@ export default function FileView(props) {
552
815
  saving: saveMutation.loading,
553
816
  save
554
817
  } : null;
555
- return _$ssr(_tmpl$18, `k2b-content-file-view ${_$escape(props.class ?? "", true)}`, _$escape(_$createComponent(Switch, {
818
+ return _$ssr(_tmpl$22, `k2b-content-file-view ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-variant", _$escape(props.variant, true), false) + _$ssrAttribute("data-excerpt", props.previewLines !== undefined ? "true" : _$escape(undefined, true), false), _$escape(_$createComponent(Switch, {
556
819
  get children() {
557
820
  return [_$createComponent(Match, {
558
821
  get when() {
@@ -588,6 +851,18 @@ export default function FileView(props) {
588
851
  children: active => {
589
852
  const Renderer = active().component;
590
853
  return _$createComponent(Renderer, {
854
+ get previewLines() {
855
+ return props.previewLines;
856
+ },
857
+ get onExpandPreview() {
858
+ return props.onExpandPreview;
859
+ },
860
+ get headingScale() {
861
+ return props.headingScale;
862
+ },
863
+ get previewPreferencesKey() {
864
+ return props.previewPreferencesKey;
865
+ },
591
866
  get file() {
592
867
  return props.file;
593
868
  },
@@ -597,6 +872,12 @@ export default function FileView(props) {
597
872
  get previewHref() {
598
873
  return nativePreviewHref();
599
874
  },
875
+ get crossOrigin() {
876
+ return props.crossOrigin;
877
+ },
878
+ get onPreviewError() {
879
+ return props.onPreviewError;
880
+ },
600
881
  get downloadHref() {
601
882
  return props.downloadHref ?? null;
602
883
  },