@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
@@ -1,8 +1,8 @@
1
1
  import { template as _$template } from "solid-js/web";
2
2
  import { delegateEvents as _$delegateEvents } from "solid-js/web";
3
- import { use as _$use } from "solid-js/web";
4
3
  import { addEventListener as _$addEventListener } from "solid-js/web";
5
4
  import { getNextMarker as _$getNextMarker } from "solid-js/web";
5
+ import { use as _$use } from "solid-js/web";
6
6
  import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
7
7
  import { setProperty as _$setProperty } from "solid-js/web";
8
8
  import { className as _$className } from "solid-js/web";
@@ -21,47 +21,49 @@ var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspac
21
21
  _tmpl$3 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__main-primary data-workspace-main-region=main>`),
22
22
  _tmpl$4 = /*#__PURE__*/_$template(`<section>`),
23
23
  _tmpl$5 = /*#__PURE__*/_$template(`<aside>`),
24
- _tmpl$6 = /*#__PURE__*/_$template(`<nav class=k2b-app-workspace__sidebar-mobile><details><summary><span class=k2b-app-workspace__sidebar-mobile-trigger><i class="ti ti-menu-2"aria-hidden=true></i><span></span></span><i class="ti ti-chevron-down"aria-hidden=true></i></summary><!$><!/>`),
25
- _tmpl$7 = /*#__PURE__*/_$template(`<aside><div class=k2b-app-workspace__sidebar-desktop>`),
26
- _tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-mobile-items>`),
27
- _tmpl$9 = /*#__PURE__*/_$template(`<footer>`),
28
- _tmpl$0 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-section-actions>`),
29
- _tmpl$1 = /*#__PURE__*/_$template(`<header class=k2b-app-workspace__sidebar-section-header><!$><!/><!$><!/>`),
30
- _tmpl$10 = /*#__PURE__*/_$template(`<section><!$><!/><!$><!/>`),
31
- _tmpl$11 = /*#__PURE__*/_$template(`<h2>`),
32
- _tmpl$12 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-item-actions>`),
33
- _tmpl$13 = /*#__PURE__*/_$template(`<div><button type=button class=k2b-app-workspace__sidebar-item-main></button><!$><!/>`),
34
- _tmpl$14 = /*#__PURE__*/_$template(`<div><a class=k2b-app-workspace__sidebar-item-main></a><!$><!/>`),
35
- _tmpl$15 = /*#__PURE__*/_$template(`<div><!$><!/><!$><!/>`),
36
- _tmpl$16 = /*#__PURE__*/_$template(`<button type=button>`),
37
- _tmpl$17 = /*#__PURE__*/_$template(`<a>`),
38
- _tmpl$18 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true>`),
39
- _tmpl$19 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text>`),
40
- _tmpl$20 = /*#__PURE__*/_$template(`<i>`),
41
- _tmpl$21 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
42
- _tmpl$22 = /*#__PURE__*/_$template(`<a class=k2b-app-workspace__sidebar-item-action>`),
43
- _tmpl$23 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-item-action>`),
44
- _tmpl$24 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true><i>`),
45
- _tmpl$25 = /*#__PURE__*/_$template(`<span>`),
46
- _tmpl$26 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__nav-tree-toggle data-k2b-nav-tree-toggle aria-hidden=true><i>`),
47
- _tmpl$27 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-group role=group>`),
48
- _tmpl$28 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-node role=treeitem><!$><!/><!$><!/>`),
49
- _tmpl$29 = /*#__PURE__*/_$template(`<div role=tree>`),
50
- _tmpl$30 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-icon-grid>`),
51
- _tmpl$31 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
52
- _tmpl$32 = /*#__PURE__*/_$template(`<div data-k2b-app-workspace>`);
24
+ _tmpl$6 = /*#__PURE__*/_$template(`<aside><div class=k2b-app-workspace__sidebar-desktop>`),
25
+ _tmpl$7 = /*#__PURE__*/_$template(`<footer>`),
26
+ _tmpl$8 = /*#__PURE__*/_$template(`<span aria-hidden=true><i>`),
27
+ _tmpl$9 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-section-count>`),
28
+ _tmpl$0 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-section-toggle><!$><!/><i aria-hidden=true>`),
29
+ _tmpl$1 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-section-actions>`),
30
+ _tmpl$10 = /*#__PURE__*/_$template(`<header class=k2b-app-workspace__sidebar-section-header><!$><!/><!$><!/>`),
31
+ _tmpl$11 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-section-content>`),
32
+ _tmpl$12 = /*#__PURE__*/_$template(`<h2>`),
33
+ _tmpl$13 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-item-actions>`),
34
+ _tmpl$14 = /*#__PURE__*/_$template(`<button type=button>`),
35
+ _tmpl$15 = /*#__PURE__*/_$template(`<a>`),
36
+ _tmpl$16 = /*#__PURE__*/_$template(`<div><!$><!/><!$><!/>`),
37
+ _tmpl$17 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true>`),
38
+ _tmpl$18 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context-meta>`),
39
+ _tmpl$19 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context><span class=k2b-app-workspace__sidebar-item-context-label></span><!$><!/>`),
40
+ _tmpl$20 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-description>`),
41
+ _tmpl$21 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-copy><!$><!/><span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text></span></span><!$><!/>`),
42
+ _tmpl$22 = /*#__PURE__*/_$template(`<i>`),
43
+ _tmpl$23 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
44
+ _tmpl$24 = /*#__PURE__*/_$template(`<a class=k2b-app-workspace__sidebar-item-action>`),
45
+ _tmpl$25 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-item-action>`),
46
+ _tmpl$26 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true><i>`),
47
+ _tmpl$27 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text>`),
48
+ _tmpl$28 = /*#__PURE__*/_$template(`<span>`),
49
+ _tmpl$29 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__nav-tree-toggle data-k2b-nav-tree-toggle aria-hidden=true><i>`),
50
+ _tmpl$30 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-group role=group>`),
51
+ _tmpl$31 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-node role=treeitem><!$><!/><!$><!/>`),
52
+ _tmpl$32 = /*#__PURE__*/_$template(`<div role=tree>`),
53
+ _tmpl$33 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-icon-grid>`),
54
+ _tmpl$34 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
55
+ _tmpl$35 = /*#__PURE__*/_$template(`<div data-k2b-app-workspace>`);
53
56
  import { Link } from "@k2b/ssr/nav";
54
- import { children, createContext, createMemo, createSignal, createUniqueId, For, onCleanup, onMount, Show, useContext } from "solid-js";
57
+ import { children, createContext, createMemo, createSignal, createUniqueId, For, mergeProps, onCleanup, onMount, Show, useContext } from "solid-js";
55
58
  import { useUiMessages } from "../intl/messages";
56
59
  import { installAppWorkspaceController } from "./app-workspace-controller";
57
60
  import { APP_WORKSPACE_DETAIL_DEFAULT, APP_WORKSPACE_DETAIL_MAX, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DRAWER_DEFAULT, APP_WORKSPACE_DRAWER_MAX, APP_WORKSPACE_DRAWER_MIN, APP_WORKSPACE_PANE_DEFAULT, APP_WORKSPACE_PANE_MAX, APP_WORKSPACE_PANE_MIN, APP_WORKSPACE_SIDEBAR_COLLAPSED, APP_WORKSPACE_SIDEBAR_DEFAULT, APP_WORKSPACE_SIDEBAR_MAX, APP_WORKSPACE_SIDEBAR_MIN, appWorkspaceLayoutStyle, appWorkspacePanelVariable } from "./app-workspace-state";
61
+ import { SidebarItemPreview } from "./SidebarItemPreview";
62
+ import { createScrollFade } from "./scroll-fade";
58
63
  import { assertStableUiId, assertUniqueStableUiIds } from "./stable-id";
59
64
  const ResizeContext = createContext(true);
60
65
  const LayoutStateContext = createContext(null);
61
- const SidebarModeContext = createContext("desktop");
62
66
  const MAIN_PANE = Symbol("AppWorkspace.MainPane");
63
- const SIDEBAR_MOBILE_TRIGGER = Symbol("AppWorkspace.SidebarMobileTrigger");
64
- const SIDEBAR_MOBILE = Symbol("AppWorkspace.SidebarMobile");
65
67
  const SIDEBAR_DESKTOP = Symbol("AppWorkspace.SidebarDesktop");
66
68
  const SIDEBAR_ITEM_ICON = Symbol("AppWorkspace.SidebarItemIcon");
67
69
  const SIDEBAR_ITEM_LABEL = Symbol("AppWorkspace.SidebarItemLabel");
@@ -77,7 +79,7 @@ const flatten = value => {
77
79
  return value === null || value === undefined || typeof value === "boolean" ? [] : [value];
78
80
  };
79
81
  const mainPaneSlot = value => Boolean(value && typeof value === "object" && "kind" in value && value.kind === MAIN_PANE);
80
- const sidebarChildSlot = value => Boolean(value && typeof value === "object" && "kind" in value && [SIDEBAR_MOBILE_TRIGGER, SIDEBAR_MOBILE, SIDEBAR_DESKTOP].includes(value.kind));
82
+ const sidebarChildSlot = value => Boolean(value && typeof value === "object" && "kind" in value && value.kind === SIDEBAR_DESKTOP);
81
83
  const sidebarItemSlot = value => Boolean(value && typeof value === "object" && "kind" in value && [SIDEBAR_ITEM_ICON, SIDEBAR_ITEM_LABEL, SIDEBAR_ITEM_META, SIDEBAR_ITEM_ACTION].includes(value.kind));
82
84
  const navTreeItemSlot = value => Boolean(value && typeof value === "object" && "kind" in value && value.kind === NAV_TREE_ITEM);
83
85
  function ResizeHandle(props) {
@@ -167,7 +169,7 @@ function AppWorkspaceMain(props) {
167
169
  const result = [];
168
170
  all.forEach((value, index) => {
169
171
  if (mainPaneSlot(value)) {
170
- if (value.props.open !== false) result.push({
172
+ result.push({
171
173
  type: "pane",
172
174
  index,
173
175
  slot: value
@@ -183,7 +185,7 @@ function AppWorkspaceMain(props) {
183
185
  });
184
186
  return result;
185
187
  });
186
- const anchorRegion = createMemo(() => regions().find(candidate => candidate.type === "primary") ?? regions()[0]);
188
+ const anchorRegion = createMemo(() => regions().find(candidate => candidate.type === "primary") ?? regions().find(candidate => candidate.type === "pane" && candidate.slot.props.open !== false));
187
189
  // Presence of a MainPane slot — not of an *open* one — decides the split
188
190
  // layout. Deriving it from `regions()` made a workspace whose panes are all
189
191
  // closed fall back to `resolved()`, which renders the raw slot objects.
@@ -197,6 +199,9 @@ function AppWorkspaceMain(props) {
197
199
  get ["data-mobile-pane"]() {
198
200
  return props.mobilePane;
199
201
  },
202
+ get ["data-scroll-fade-mode"]() {
203
+ return !hasPanes() && props.scroll !== false && props.scrollFade !== false ? "both" : undefined;
204
+ },
200
205
  get ["data-scroll"]() {
201
206
  return props.scroll === false ? "false" : undefined;
202
207
  },
@@ -212,82 +217,121 @@ function AppWorkspaceMain(props) {
212
217
  return resolved();
213
218
  },
214
219
  get children() {
215
- return regions().flatMap(region => {
216
- const anchor = anchorRegion();
217
- const activeMobilePane = props.mobilePane ?? (anchor?.type === "pane" ? anchor.slot.props.id : "main");
218
- if (region.type === "primary") {
219
- return (() => {
220
- var _el$3 = _$getNextElement(_tmpl$3);
221
- _$setAttribute(_el$3, "data-workspace-mobile-active", activeMobilePane === "main" ? "true" : "false");
222
- _$insert(_el$3, () => region.children);
223
- return _el$3;
224
- })();
225
- }
226
- const pane = region.slot;
227
- const panelId = assertStableUiId(pane.props.id, "AppWorkspace.MainPane id");
228
- const variable = appWorkspacePanelVariable("pane", panelId);
229
- const isAnchor = region === anchor;
230
- const resizable = !isAnchor && (pane.props.resizable ?? rootResizable);
231
- const defaultSize = pane.props.defaultSize ?? APP_WORKSPACE_PANE_DEFAULT;
232
- const minSize = pane.props.minSize ?? APP_WORKSPACE_PANE_MIN;
233
- const maxSize = Math.max(minSize, pane.props.maxSize ?? APP_WORKSPACE_PANE_MAX);
234
- const content = (() => {
235
- var _el$4 = _$getNextElement(_tmpl$4);
236
- _$setAttribute(_el$4, "data-workspace-panel-id", panelId);
237
- _$setAttribute(_el$4, "data-workspace-resizable", resizable ? "true" : "false");
238
- _$insert(_el$4, () => pane.props.children);
239
- _$effect(_p$ => {
240
- var _v$13 = pane.domId,
241
- _v$14 = `k2b-app-workspace__main-pane ${isAnchor ? "is-primary" : ""} ${pane.props.class ?? ""}`,
242
- _v$15 = pane.props.label,
243
- _v$16 = pane.props.id,
244
- _v$17 = activeMobilePane === pane.props.id ? "true" : "false",
245
- _v$18 = pane.props.surface === "navigation" ? "navigation" : undefined,
246
- _v$19 = pane.props.scroll === false ? "false" : undefined,
247
- _v$20 = isAnchor ? undefined : {
248
- "--k2b-workspace-panel-size": `var(${variable}, ${defaultSize}px)`
249
- };
250
- _v$13 !== _p$.e && _$setAttribute(_el$4, "id", _p$.e = _v$13);
251
- _v$14 !== _p$.t && _$className(_el$4, _p$.t = _v$14);
252
- _v$15 !== _p$.a && _$setAttribute(_el$4, "aria-label", _p$.a = _v$15);
253
- _v$16 !== _p$.o && _$setAttribute(_el$4, "data-workspace-main-region", _p$.o = _v$16);
254
- _v$17 !== _p$.i && _$setAttribute(_el$4, "data-workspace-mobile-active", _p$.i = _v$17);
255
- _v$18 !== _p$.n && _$setAttribute(_el$4, "data-surface", _p$.n = _v$18);
256
- _v$19 !== _p$.s && _$setAttribute(_el$4, "data-scroll", _p$.s = _v$19);
257
- _p$.h = _$style(_el$4, _v$20, _p$.h);
258
- return _p$;
259
- }, {
260
- e: undefined,
261
- t: undefined,
262
- a: undefined,
263
- o: undefined,
264
- i: undefined,
265
- n: undefined,
266
- s: undefined,
267
- h: undefined
268
- });
269
- return _el$4;
270
- })();
271
- if (!resizable) return content;
272
- const before = region.index < (anchor?.index ?? 0);
273
- const handle = _$createComponent(ResizeHandle, {
274
- kind: "pane",
275
- edge: before ? "end" : "start",
276
- get controls() {
277
- return pane.domId;
278
- },
279
- panelId: panelId,
280
- defaultSize: defaultSize,
281
- minSize: minSize,
282
- maxSize: maxSize,
283
- get shadow() {
284
- return pane.props.resizeShadow !== false;
285
- },
286
- get label() {
287
- return `Resize ${pane.props.label}`;
220
+ return _$createComponent(For, {
221
+ get each() {
222
+ return regions();
223
+ },
224
+ children: region => {
225
+ const activeMobilePane = () => {
226
+ const anchor = anchorRegion();
227
+ return props.mobilePane ?? (anchor?.type === "pane" ? anchor.slot.props.id : "main");
228
+ };
229
+ if (region.type === "primary") {
230
+ return (() => {
231
+ var _el$3 = _$getNextElement(_tmpl$3);
232
+ _$insert(_el$3, () => region.children);
233
+ _$effect(() => _$setAttribute(_el$3, "data-workspace-mobile-active", activeMobilePane() === "main" ? "true" : "false"));
234
+ return _el$3;
235
+ })();
288
236
  }
289
- });
290
- return before ? [content, handle] : [handle, content];
237
+ const pane = region.slot;
238
+ const panelId = assertStableUiId(pane.props.id, "AppWorkspace.MainPane id");
239
+ const variable = appWorkspacePanelVariable("pane", panelId);
240
+ const isAnchor = () => region === anchorRegion();
241
+ const resizable = () => !isAnchor() && (pane.props.resizable ?? rootResizable);
242
+ const defaultSize = () => pane.props.defaultSize ?? APP_WORKSPACE_PANE_DEFAULT;
243
+ const minSize = () => pane.props.minSize ?? APP_WORKSPACE_PANE_MIN;
244
+ const maxSize = () => Math.max(minSize(), pane.props.maxSize ?? APP_WORKSPACE_PANE_MAX);
245
+ const before = () => region.index < (anchorRegion()?.index ?? 0);
246
+ const handle = () => _$createComponent(ResizeHandle, {
247
+ kind: "pane",
248
+ get edge() {
249
+ return before() ? "end" : "start";
250
+ },
251
+ get controls() {
252
+ return pane.domId;
253
+ },
254
+ panelId: panelId,
255
+ get defaultSize() {
256
+ return defaultSize();
257
+ },
258
+ get minSize() {
259
+ return minSize();
260
+ },
261
+ get maxSize() {
262
+ return maxSize();
263
+ },
264
+ get shadow() {
265
+ return pane.props.resizeShadow !== false;
266
+ },
267
+ get label() {
268
+ return `Resize ${pane.props.label}`;
269
+ }
270
+ });
271
+ return _$createComponent(Show, {
272
+ get when() {
273
+ return pane.props.open !== false;
274
+ },
275
+ get children() {
276
+ return [_$createComponent(Show, {
277
+ get when() {
278
+ return _$memo(() => !!resizable())() && !before();
279
+ },
280
+ get children() {
281
+ return handle();
282
+ }
283
+ }), (() => {
284
+ var _el$4 = _$getNextElement(_tmpl$4);
285
+ _$setAttribute(_el$4, "data-workspace-panel-id", panelId);
286
+ _$insert(_el$4, () => pane.props.children);
287
+ _$effect(_p$ => {
288
+ var _v$13 = pane.domId,
289
+ _v$14 = `k2b-app-workspace__main-pane ${isAnchor() ? "is-primary" : ""} ${pane.props.class ?? ""}`,
290
+ _v$15 = pane.props.label,
291
+ _v$16 = pane.props.id,
292
+ _v$17 = activeMobilePane() === pane.props.id ? "true" : "false",
293
+ _v$18 = resizable() ? "true" : "false",
294
+ _v$19 = pane.props.surface === "navigation" ? "navigation" : undefined,
295
+ _v$20 = pane.props.scroll === false ? "false" : undefined,
296
+ _v$21 = pane.props.scroll !== false && pane.props.scrollFade !== false ? "both" : undefined,
297
+ _v$22 = isAnchor() ? undefined : {
298
+ "--k2b-workspace-panel-size": `var(${variable}, ${defaultSize()}px)`
299
+ };
300
+ _v$13 !== _p$.e && _$setAttribute(_el$4, "id", _p$.e = _v$13);
301
+ _v$14 !== _p$.t && _$className(_el$4, _p$.t = _v$14);
302
+ _v$15 !== _p$.a && _$setAttribute(_el$4, "aria-label", _p$.a = _v$15);
303
+ _v$16 !== _p$.o && _$setAttribute(_el$4, "data-workspace-main-region", _p$.o = _v$16);
304
+ _v$17 !== _p$.i && _$setAttribute(_el$4, "data-workspace-mobile-active", _p$.i = _v$17);
305
+ _v$18 !== _p$.n && _$setAttribute(_el$4, "data-workspace-resizable", _p$.n = _v$18);
306
+ _v$19 !== _p$.s && _$setAttribute(_el$4, "data-surface", _p$.s = _v$19);
307
+ _v$20 !== _p$.h && _$setAttribute(_el$4, "data-scroll", _p$.h = _v$20);
308
+ _v$21 !== _p$.r && _$setAttribute(_el$4, "data-scroll-fade-mode", _p$.r = _v$21);
309
+ _p$.d = _$style(_el$4, _v$22, _p$.d);
310
+ return _p$;
311
+ }, {
312
+ e: undefined,
313
+ t: undefined,
314
+ a: undefined,
315
+ o: undefined,
316
+ i: undefined,
317
+ n: undefined,
318
+ s: undefined,
319
+ h: undefined,
320
+ r: undefined,
321
+ d: undefined
322
+ });
323
+ return _el$4;
324
+ })(), _$createComponent(Show, {
325
+ get when() {
326
+ return _$memo(() => !!resizable())() && before();
327
+ },
328
+ get children() {
329
+ return handle();
330
+ }
331
+ })];
332
+ }
333
+ });
334
+ }
291
335
  });
292
336
  }
293
337
  }));
@@ -347,22 +391,22 @@ function AppWorkspaceDetail(props) {
347
391
  var _el$5 = _$getNextElement(_tmpl$5);
348
392
  _$insert(_el$5, () => props.children);
349
393
  _$effect(_p$ => {
350
- var _v$21 = domId(),
351
- _v$22 = `k2b-app-workspace__detail ${props.class ?? ""}`,
352
- _v$23 = props.width ?? "md",
353
- _v$24 = panelId(),
354
- _v$25 = resizable() ? "true" : "false",
355
- _v$26 = !props.open,
356
- _v$27 = `var(${variable()}, ${defaultWidth()}px)`,
357
- _v$28 = props.viewTransitionName;
358
- _v$21 !== _p$.e && _$setAttribute(_el$5, "id", _p$.e = _v$21);
359
- _v$22 !== _p$.t && _$className(_el$5, _p$.t = _v$22);
360
- _v$23 !== _p$.a && _$setAttribute(_el$5, "data-width", _p$.a = _v$23);
361
- _v$24 !== _p$.o && _$setAttribute(_el$5, "data-workspace-panel-id", _p$.o = _v$24);
362
- _v$25 !== _p$.i && _$setAttribute(_el$5, "data-workspace-resizable", _p$.i = _v$25);
363
- _v$26 !== _p$.n && _$setProperty(_el$5, "hidden", _p$.n = _v$26);
364
- _v$27 !== _p$.s && _$setStyleProperty(_el$5, "--k2b-workspace-panel-size", _p$.s = _v$27);
365
- _v$28 !== _p$.h && _$setStyleProperty(_el$5, "view-transition-name", _p$.h = _v$28);
394
+ var _v$23 = domId(),
395
+ _v$24 = `k2b-app-workspace__detail ${props.class ?? ""}`,
396
+ _v$25 = props.width ?? "md",
397
+ _v$26 = panelId(),
398
+ _v$27 = resizable() ? "true" : "false",
399
+ _v$28 = !props.open,
400
+ _v$29 = `var(${variable()}, ${defaultWidth()}px)`,
401
+ _v$30 = props.viewTransitionName;
402
+ _v$23 !== _p$.e && _$setAttribute(_el$5, "id", _p$.e = _v$23);
403
+ _v$24 !== _p$.t && _$className(_el$5, _p$.t = _v$24);
404
+ _v$25 !== _p$.a && _$setAttribute(_el$5, "data-width", _p$.a = _v$25);
405
+ _v$26 !== _p$.o && _$setAttribute(_el$5, "data-workspace-panel-id", _p$.o = _v$26);
406
+ _v$27 !== _p$.i && _$setAttribute(_el$5, "data-workspace-resizable", _p$.i = _v$27);
407
+ _v$28 !== _p$.n && _$setProperty(_el$5, "hidden", _p$.n = _v$28);
408
+ _v$29 !== _p$.s && _$setStyleProperty(_el$5, "--k2b-workspace-panel-size", _p$.s = _v$29);
409
+ _v$30 !== _p$.h && _$setStyleProperty(_el$5, "view-transition-name", _p$.h = _v$30);
366
410
  return _p$;
367
411
  }, {
368
412
  e: undefined,
@@ -427,22 +471,22 @@ function AppWorkspaceBottomDrawer(props) {
427
471
  var _el$6 = _$getNextElement(_tmpl$5);
428
472
  _$insert(_el$6, () => props.children);
429
473
  _$effect(_p$ => {
430
- var _v$29 = domId(),
431
- _v$30 = `k2b-app-workspace__drawer ${props.class ?? ""}`,
432
- _v$31 = props.height ?? "md",
433
- _v$32 = panelId(),
434
- _v$33 = resizable() ? "true" : "false",
435
- _v$34 = !props.open,
436
- _v$35 = `var(${variable()}, ${defaultHeight()}px)`,
437
- _v$36 = props.viewTransitionName;
438
- _v$29 !== _p$.e && _$setAttribute(_el$6, "id", _p$.e = _v$29);
439
- _v$30 !== _p$.t && _$className(_el$6, _p$.t = _v$30);
440
- _v$31 !== _p$.a && _$setAttribute(_el$6, "data-height", _p$.a = _v$31);
441
- _v$32 !== _p$.o && _$setAttribute(_el$6, "data-workspace-panel-id", _p$.o = _v$32);
442
- _v$33 !== _p$.i && _$setAttribute(_el$6, "data-workspace-resizable", _p$.i = _v$33);
443
- _v$34 !== _p$.n && _$setProperty(_el$6, "hidden", _p$.n = _v$34);
444
- _v$35 !== _p$.s && _$setStyleProperty(_el$6, "--k2b-workspace-panel-size", _p$.s = _v$35);
445
- _v$36 !== _p$.h && _$setStyleProperty(_el$6, "view-transition-name", _p$.h = _v$36);
474
+ var _v$31 = domId(),
475
+ _v$32 = `k2b-app-workspace__drawer ${props.class ?? ""}`,
476
+ _v$33 = props.height ?? "md",
477
+ _v$34 = panelId(),
478
+ _v$35 = resizable() ? "true" : "false",
479
+ _v$36 = !props.open,
480
+ _v$37 = `var(${variable()}, ${defaultHeight()}px)`,
481
+ _v$38 = props.viewTransitionName;
482
+ _v$31 !== _p$.e && _$setAttribute(_el$6, "id", _p$.e = _v$31);
483
+ _v$32 !== _p$.t && _$className(_el$6, _p$.t = _v$32);
484
+ _v$33 !== _p$.a && _$setAttribute(_el$6, "data-height", _p$.a = _v$33);
485
+ _v$34 !== _p$.o && _$setAttribute(_el$6, "data-workspace-panel-id", _p$.o = _v$34);
486
+ _v$35 !== _p$.i && _$setAttribute(_el$6, "data-workspace-resizable", _p$.i = _v$35);
487
+ _v$36 !== _p$.n && _$setProperty(_el$6, "hidden", _p$.n = _v$36);
488
+ _v$37 !== _p$.s && _$setStyleProperty(_el$6, "--k2b-workspace-panel-size", _p$.s = _v$37);
489
+ _v$38 !== _p$.h && _$setStyleProperty(_el$6, "view-transition-name", _p$.h = _v$38);
446
490
  return _p$;
447
491
  }, {
448
492
  e: undefined,
@@ -457,10 +501,6 @@ function AppWorkspaceBottomDrawer(props) {
457
501
  return _el$6;
458
502
  })()];
459
503
  }
460
- const AppWorkspaceSidebarMobileTrigger = props => ({
461
- kind: SIDEBAR_MOBILE_TRIGGER,
462
- ...props
463
- });
464
504
  function AppWorkspaceSidebar(props) {
465
505
  const rootResizable = useContext(ResizeContext);
466
506
  const resizable = () => props.resizable ?? rootResizable;
@@ -471,51 +511,21 @@ function AppWorkspaceSidebar(props) {
471
511
  const domId = `k2b-workspace-sidebar-${generatedId}`;
472
512
  const resolved = children(() => props.children);
473
513
  const slots = createMemo(() => flatten(resolved()).filter(sidebarChildSlot));
474
- const mobileTrigger = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_MOBILE_TRIGGER));
475
- const mobile = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_MOBILE));
476
514
  const desktop = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_DESKTOP));
477
- return [_$createComponent(Show, {
478
- get when() {
479
- return _$memo(() => !!mobileTrigger())() && mobile();
480
- },
481
- get children() {
482
- var _el$7 = _$getNextElement(_tmpl$6),
483
- _el$8 = _el$7.firstChild,
484
- _el$9 = _el$8.firstChild,
485
- _el$0 = _el$9.firstChild,
486
- _el$1 = _el$0.firstChild,
487
- _el$10 = _el$1.nextSibling,
488
- _el$11 = _el$9.nextSibling,
489
- [_el$12, _co$] = _$getNextMarker(_el$11.nextSibling);
490
- _$insert(_el$10, () => mobileTrigger().label);
491
- _$insert(_el$8, _$createComponent(SidebarModeContext.Provider, {
492
- value: "mobile",
493
- get children() {
494
- return mobile().children;
495
- }
496
- }), _el$12, _co$);
497
- _$effect(() => _$setAttribute(_el$7, "aria-label", mobileTrigger().label));
498
- return _el$7;
499
- }
500
- }), (() => {
501
- var _el$13 = _$getNextElement(_tmpl$7),
502
- _el$14 = _el$13.firstChild;
503
- _$setAttribute(_el$13, "id", domId);
504
- _$insert(_el$14, _$createComponent(SidebarModeContext.Provider, {
505
- value: "desktop",
506
- get children() {
507
- return desktop()?.children;
508
- }
509
- }));
515
+ return [(() => {
516
+ var _el$7 = _$getNextElement(_tmpl$6),
517
+ _el$8 = _el$7.firstChild;
518
+ _$setAttribute(_el$7, "id", domId);
519
+ _$insert(_el$8, () => desktop()?.children);
510
520
  _$effect(_p$ => {
511
- var _v$37 = `k2b-app-workspace__sidebar ${props.class ?? ""}`,
512
- _v$38 = mobileTrigger()?.label,
513
- _v$39 = resizable() ? "true" : "false",
514
- _v$40 = props.collapsible ? "true" : "false";
515
- _v$37 !== _p$.e && _$className(_el$13, _p$.e = _v$37);
516
- _v$38 !== _p$.t && _$setAttribute(_el$13, "aria-label", _p$.t = _v$38);
517
- _v$39 !== _p$.a && _$setAttribute(_el$13, "data-workspace-resizable", _p$.a = _v$39);
518
- _v$40 !== _p$.o && _$setAttribute(_el$13, "data-workspace-collapsible", _p$.o = _v$40);
521
+ var _v$39 = `k2b-app-workspace__sidebar ${props.class ?? ""}`,
522
+ _v$40 = props.label,
523
+ _v$41 = resizable() ? "true" : "false",
524
+ _v$42 = props.collapsible ? "true" : "false";
525
+ _v$39 !== _p$.e && _$className(_el$7, _p$.e = _v$39);
526
+ _v$40 !== _p$.t && _$setAttribute(_el$7, "aria-label", _p$.t = _v$40);
527
+ _v$41 !== _p$.a && _$setAttribute(_el$7, "data-workspace-resizable", _p$.a = _v$41);
528
+ _v$42 !== _p$.o && _$setAttribute(_el$7, "data-workspace-collapsible", _p$.o = _v$42);
519
529
  return _p$;
520
530
  }, {
521
531
  e: undefined,
@@ -523,7 +533,7 @@ function AppWorkspaceSidebar(props) {
523
533
  a: undefined,
524
534
  o: undefined
525
535
  });
526
- return _el$13;
536
+ return _el$7;
527
537
  })(), _$createComponent(Show, {
528
538
  get when() {
529
539
  return resizable();
@@ -549,123 +559,167 @@ function AppWorkspaceSidebar(props) {
549
559
  }
550
560
  })];
551
561
  }
552
- const AppWorkspaceSidebarMobile = props => ({
553
- kind: SIDEBAR_MOBILE,
554
- children: props.children
555
- });
556
562
  const AppWorkspaceSidebarDesktop = props => ({
557
563
  kind: SIDEBAR_DESKTOP,
558
564
  children: props.children
559
565
  });
560
- const AppWorkspaceSidebarMobileItems = props => (() => {
561
- var _el$15 = _$getNextElement(_tmpl$8);
562
- _$spread(_el$15, _$mergeProps(() => scrollAttrs(props.scrollPreserveKey)), false, true);
563
- _$insert(_el$15, () => props.children);
564
- _$runHydrationEvents();
565
- return _el$15;
566
- })();
567
- const AppWorkspaceSidebarBody = props => (() => {
568
- var _el$16 = _$getNextElement(_tmpl$2);
569
- _$spread(_el$16, _$mergeProps({
570
- get ["class"]() {
571
- return `k2b-app-workspace__sidebar-body ${props.class ?? ""}`;
572
- }
573
- }, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), false, true);
574
- _$insert(_el$16, () => props.children);
575
- _$runHydrationEvents();
576
- return _el$16;
577
- })();
578
- const AppWorkspaceSidebarMobileBody = props => (() => {
579
- var _el$17 = _$getNextElement(_tmpl$2);
580
- _$spread(_el$17, _$mergeProps({
581
- get ["class"]() {
582
- return `k2b-app-workspace__sidebar-mobile-body ${props.class ?? ""}`;
583
- }
584
- }, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), false, true);
585
- _$insert(_el$17, () => props.children);
586
- _$runHydrationEvents();
587
- return _el$17;
588
- })();
566
+ const AppWorkspaceSidebarBody = props => {
567
+ let body;
568
+ createScrollFade(() => body, () => props.scrollFade !== false);
569
+ return (() => {
570
+ var _el$9 = _$getNextElement(_tmpl$2);
571
+ var _ref$ = body;
572
+ typeof _ref$ === "function" ? _$use(_ref$, _el$9) : body = _el$9;
573
+ _$spread(_el$9, _$mergeProps({
574
+ get ["class"]() {
575
+ return `k2b-app-workspace__sidebar-body ${props.class ?? ""}`;
576
+ },
577
+ get ["data-scroll-fade-mode"]() {
578
+ return props.scrollFade !== false ? "both" : undefined;
579
+ }
580
+ }, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), false, true);
581
+ _$insert(_el$9, () => props.children);
582
+ _$runHydrationEvents();
583
+ return _el$9;
584
+ })();
585
+ };
589
586
  const AppWorkspaceSidebarFooter = props => (() => {
590
- var _el$18 = _$getNextElement(_tmpl$9);
591
- _$spread(_el$18, _$mergeProps({
587
+ var _el$0 = _$getNextElement(_tmpl$7);
588
+ _$spread(_el$0, _$mergeProps({
592
589
  get ["class"]() {
593
590
  return `k2b-app-workspace__sidebar-footer ${props.class ?? ""}`;
594
591
  }
595
592
  }, () => modeAttrs(props.sidebarMode)), false, true);
596
- _$insert(_el$18, () => props.children);
593
+ _$insert(_el$0, () => props.children);
597
594
  _$runHydrationEvents();
598
- return _el$18;
595
+ return _el$0;
599
596
  })();
600
- const AppWorkspaceSidebarSection = props => (() => {
601
- var _el$19 = _$getNextElement(_tmpl$10),
602
- _el$26 = _el$19.firstChild,
603
- [_el$27, _co$4] = _$getNextMarker(_el$26.nextSibling),
604
- _el$28 = _el$27.nextSibling,
605
- [_el$29, _co$5] = _$getNextMarker(_el$28.nextSibling);
606
- _$spread(_el$19, _$mergeProps({
607
- get ["class"]() {
608
- return `k2b-app-workspace__sidebar-section ${props.class ?? ""}`;
597
+ const AppWorkspaceSidebarSection = props => {
598
+ const [expanded, setExpanded] = createSignal(props.defaultOpen ?? true);
599
+ const open = () => !props.collapsible || (props.open ?? expanded());
600
+ const id = `sidebar-section-${createUniqueId()}`;
601
+ const title = () => [_$createComponent(Show, {
602
+ get when() {
603
+ return props.icon;
604
+ },
605
+ get children() {
606
+ var _el$1 = _$getNextElement(_tmpl$8),
607
+ _el$10 = _el$1.firstChild;
608
+ _$effect(() => _$className(_el$10, iconClass(props.icon)));
609
+ return _el$1;
609
610
  }
610
- }, () => modeAttrs(props.sidebarMode)), false, true);
611
- _$insert(_el$19, _$createComponent(Show, {
611
+ }), _$memo(() => props.title), _$createComponent(Show, {
612
612
  get when() {
613
- return props.title || props.actions;
613
+ return props.count !== undefined;
614
614
  },
615
615
  get children() {
616
- var _el$20 = _$getNextElement(_tmpl$1),
617
- _el$22 = _el$20.firstChild,
618
- [_el$23, _co$2] = _$getNextMarker(_el$22.nextSibling),
619
- _el$24 = _el$23.nextSibling,
620
- [_el$25, _co$3] = _$getNextMarker(_el$24.nextSibling);
621
- _$insert(_el$20, _$createComponent(Show, {
622
- get when() {
623
- return props.title;
624
- },
625
- children: title => (() => {
626
- var _el$30 = _$getNextElement(_tmpl$11);
627
- _$insert(_el$30, title);
628
- return _el$30;
629
- })()
630
- }), _el$23, _co$2);
631
- _$insert(_el$20, _$createComponent(Show, {
632
- get when() {
633
- return props.actions;
634
- },
635
- get children() {
636
- var _el$21 = _$getNextElement(_tmpl$0);
637
- _$insert(_el$21, () => props.actions);
638
- return _el$21;
639
- }
640
- }), _el$25, _co$3);
641
- return _el$20;
616
+ var _el$11 = _$getNextElement(_tmpl$9);
617
+ _$insert(_el$11, () => props.count);
618
+ return _el$11;
642
619
  }
643
- }), _el$27, _co$4);
644
- _$insert(_el$19, () => props.children, _el$29, _co$5);
645
- _$runHydrationEvents();
646
- return _el$19;
647
- })();
648
- const AppWorkspaceSidebarItemIcon = props => ({
649
- kind: SIDEBAR_ITEM_ICON,
650
- ...props
651
- });
652
- const AppWorkspaceSidebarItemLabel = props => ({
653
- kind: SIDEBAR_ITEM_LABEL,
654
- ...props
655
- });
656
- const AppWorkspaceSidebarItemMeta = props => ({
657
- kind: SIDEBAR_ITEM_META,
658
- ...props
659
- });
660
- const AppWorkspaceSidebarItemAction = props => ({
661
- kind: SIDEBAR_ITEM_ACTION,
662
- ...props
663
- });
620
+ })];
621
+ return (() => {
622
+ var _el$12 = _$getNextElement(_tmpl$11),
623
+ _el$24 = _el$12.firstChild,
624
+ [_el$25, _co$4] = _$getNextMarker(_el$24.nextSibling),
625
+ _el$23 = _el$25.nextSibling;
626
+ _$spread(_el$12, _$mergeProps({
627
+ get ["class"]() {
628
+ return `k2b-app-workspace__sidebar-section ${props.class ?? ""}`;
629
+ },
630
+ get ["data-collapsible"]() {
631
+ return props.collapsible ? "true" : undefined;
632
+ }
633
+ }, () => modeAttrs(props.sidebarMode)), false, true);
634
+ _$insert(_el$12, _$createComponent(Show, {
635
+ get when() {
636
+ return props.title || props.actions;
637
+ },
638
+ get children() {
639
+ var _el$13 = _$getNextElement(_tmpl$10),
640
+ _el$19 = _el$13.firstChild,
641
+ [_el$20, _co$2] = _$getNextMarker(_el$19.nextSibling),
642
+ _el$21 = _el$20.nextSibling,
643
+ [_el$22, _co$3] = _$getNextMarker(_el$21.nextSibling);
644
+ _$insert(_el$13, _$createComponent(Show, {
645
+ get when() {
646
+ return props.collapsible;
647
+ },
648
+ get fallback() {
649
+ return _$createComponent(Show, {
650
+ get when() {
651
+ return props.title;
652
+ },
653
+ get children() {
654
+ var _el$26 = _$getNextElement(_tmpl$12);
655
+ _$insert(_el$26, title);
656
+ return _el$26;
657
+ }
658
+ });
659
+ },
660
+ get children() {
661
+ var _el$14 = _$getNextElement(_tmpl$0),
662
+ _el$16 = _el$14.firstChild,
663
+ [_el$17, _co$] = _$getNextMarker(_el$16.nextSibling),
664
+ _el$15 = _el$17.nextSibling;
665
+ _el$14.$$click = () => {
666
+ const next = !open();
667
+ setExpanded(next);
668
+ props.onOpenChange?.(next);
669
+ };
670
+ _$setAttribute(_el$14, "aria-controls", id);
671
+ _$insert(_el$14, title, _el$17, _co$);
672
+ _$effect(_p$ => {
673
+ var _v$43 = open(),
674
+ _v$44 = open() ? "ti ti-chevron-down" : "ti ti-chevron-right";
675
+ _v$43 !== _p$.e && _$setAttribute(_el$14, "aria-expanded", _p$.e = _v$43);
676
+ _v$44 !== _p$.t && _$className(_el$15, _p$.t = _v$44);
677
+ return _p$;
678
+ }, {
679
+ e: undefined,
680
+ t: undefined
681
+ });
682
+ _$runHydrationEvents();
683
+ return _el$14;
684
+ }
685
+ }), _el$20, _co$2);
686
+ _$insert(_el$13, _$createComponent(Show, {
687
+ get when() {
688
+ return props.actions;
689
+ },
690
+ get children() {
691
+ var _el$18 = _$getNextElement(_tmpl$1);
692
+ _$insert(_el$18, () => props.actions);
693
+ return _el$18;
694
+ }
695
+ }), _el$22, _co$3);
696
+ return _el$13;
697
+ }
698
+ }), _el$25, _co$4);
699
+ _$setAttribute(_el$23, "id", id);
700
+ _$insert(_el$23, () => props.children);
701
+ _$effect(() => _$setProperty(_el$23, "hidden", !open()));
702
+ _$runHydrationEvents();
703
+ return _el$12;
704
+ })();
705
+ };
706
+ const AppWorkspaceSidebarItemIcon = props => mergeProps({
707
+ kind: SIDEBAR_ITEM_ICON
708
+ }, props);
709
+ const AppWorkspaceSidebarItemLabel = props => mergeProps({
710
+ kind: SIDEBAR_ITEM_LABEL
711
+ }, props);
712
+ const AppWorkspaceSidebarItemMeta = props => mergeProps({
713
+ kind: SIDEBAR_ITEM_META
714
+ }, props);
715
+ const AppWorkspaceSidebarItemAction = props => mergeProps({
716
+ kind: SIDEBAR_ITEM_ACTION
717
+ }, props);
664
718
  const AppWorkspaceSidebarItemActions = props => (() => {
665
- var _el$31 = _$getNextElement(_tmpl$12);
666
- _$insert(_el$31, () => props.children);
667
- _$effect(() => _$setAttribute(_el$31, "data-visibility", props.visibility === "hover" ? "hover" : undefined));
668
- return _el$31;
719
+ var _el$27 = _$getNextElement(_tmpl$13);
720
+ _$insert(_el$27, () => props.children);
721
+ _$effect(() => _$setAttribute(_el$27, "data-visibility", props.visibility === "hover" ? "hover" : undefined));
722
+ return _el$27;
669
723
  })();
670
724
  /** Shared visual and semantic row frame for flat sidebar items and tree items. */
671
725
  function AppWorkspaceSidebarRow(props) {
@@ -675,7 +729,6 @@ function AppWorkspaceSidebarRow(props) {
675
729
  class: className(),
676
730
  title: props.title,
677
731
  "data-tone": props.tone,
678
- "data-mode": props.mode,
679
732
  style: {
680
733
  "view-transition-name": props.viewTransitionName,
681
734
  "--k2b-sidebar-item-depth": props.depth === undefined ? undefined : String(Math.max(0, props.depth))
@@ -683,174 +736,125 @@ function AppWorkspaceSidebarRow(props) {
683
736
  ...data()
684
737
  });
685
738
  const current = () => props.active ? "page" : undefined;
686
- if (props.hasActions) {
687
- if (!props.href || props.disabled) {
688
- return (() => {
689
- var _el$32 = _$getNextElement(_tmpl$13),
690
- _el$33 = _el$32.firstChild,
691
- _el$34 = _el$33.nextSibling,
692
- [_el$35, _co$6] = _$getNextMarker(_el$34.nextSibling);
693
- _$spread(_el$32, _$mergeProps(common, {
694
- get ["data-disabled"]() {
695
- return props.disabled ? "true" : undefined;
739
+ const Control = control => {
740
+ const attrs = () => control.grouped ? {
741
+ class: "k2b-app-workspace__sidebar-item-main"
742
+ } : common();
743
+ return _$createComponent(Show, {
744
+ get when() {
745
+ return Boolean(props.href && !props.disabled);
746
+ },
747
+ get fallback() {
748
+ return (() => {
749
+ var _el$28 = _$getNextElement(_tmpl$14);
750
+ _$spread(_el$28, _$mergeProps(attrs, {
751
+ get tabIndex() {
752
+ return props.tabIndex;
753
+ },
754
+ get disabled() {
755
+ return props.disabled;
756
+ },
757
+ get onClick() {
758
+ return props.onClick;
759
+ }
760
+ }), false, true);
761
+ _$insert(_el$28, () => props.children);
762
+ _$runHydrationEvents();
763
+ return _el$28;
764
+ })();
765
+ },
766
+ get children() {
767
+ return _$createComponent(Show, {
768
+ get when() {
769
+ return _$memo(() => props.navigation === "enhanced")() && Boolean(props.onNavigate);
770
+ },
771
+ get fallback() {
772
+ return (() => {
773
+ var _el$29 = _$getNextElement(_tmpl$15);
774
+ _$spread(_el$29, _$mergeProps({
775
+ get href() {
776
+ return props.href;
777
+ }
778
+ }, attrs, {
779
+ get tabIndex() {
780
+ return props.tabIndex;
781
+ },
782
+ get ["aria-current"]() {
783
+ return current();
784
+ },
785
+ get onClick() {
786
+ return props.onClick;
787
+ }
788
+ }), false, true);
789
+ _$insert(_el$29, () => props.children);
790
+ _$runHydrationEvents();
791
+ return _el$29;
792
+ })();
793
+ },
794
+ get children() {
795
+ return _$createComponent(Link, _$mergeProps({
796
+ get href() {
797
+ return props.href;
798
+ }
799
+ }, attrs, {
800
+ get tabIndex() {
801
+ return props.tabIndex;
802
+ },
803
+ get ["aria-current"]() {
804
+ return current();
805
+ },
806
+ get replace() {
807
+ return props.replace;
808
+ },
809
+ get scroll() {
810
+ return props.scroll;
811
+ },
812
+ get onNavigate() {
813
+ return props.onNavigate;
814
+ },
815
+ get onClick() {
816
+ return props.onClick;
817
+ },
818
+ get children() {
819
+ return props.children;
820
+ }
821
+ }));
696
822
  }
697
- }), false, true);
698
- _$addEventListener(_el$33, "click", props.onClick, true);
699
- _$insert(_el$33, () => props.children);
700
- _$insert(_el$32, () => props.actions, _el$35, _co$6);
701
- _$effect(_p$ => {
702
- var _v$41 = props.tabIndex,
703
- _v$42 = props.disabled;
704
- _v$41 !== _p$.e && _$setAttribute(_el$33, "tabindex", _p$.e = _v$41);
705
- _v$42 !== _p$.t && _$setProperty(_el$33, "disabled", _p$.t = _v$42);
706
- return _p$;
707
- }, {
708
- e: undefined,
709
- t: undefined
710
- });
711
- _$runHydrationEvents();
712
- return _el$32;
713
- })();
714
- }
715
- if (props.navigation !== "enhanced" || !props.onNavigate) {
716
- return (() => {
717
- var _el$36 = _$getNextElement(_tmpl$14),
718
- _el$37 = _el$36.firstChild,
719
- _el$38 = _el$37.nextSibling,
720
- [_el$39, _co$7] = _$getNextMarker(_el$38.nextSibling);
721
- _$spread(_el$36, _$mergeProps(common), false, true);
722
- _$addEventListener(_el$37, "click", props.onClick, true);
723
- _$insert(_el$37, () => props.children);
724
- _$insert(_el$36, () => props.actions, _el$39, _co$7);
725
- _$effect(_p$ => {
726
- var _v$43 = props.href,
727
- _v$44 = props.tabIndex,
728
- _v$45 = current();
729
- _v$43 !== _p$.e && _$setAttribute(_el$37, "href", _p$.e = _v$43);
730
- _v$44 !== _p$.t && _$setAttribute(_el$37, "tabindex", _p$.t = _v$44);
731
- _v$45 !== _p$.a && _$setAttribute(_el$37, "aria-current", _p$.a = _v$45);
732
- return _p$;
733
- }, {
734
- e: undefined,
735
- t: undefined,
736
- a: undefined
737
823
  });
738
- _$runHydrationEvents();
739
- return _el$36;
740
- })();
741
- }
742
- return (() => {
743
- var _el$40 = _$getNextElement(_tmpl$15),
744
- _el$41 = _el$40.firstChild,
745
- [_el$42, _co$8] = _$getNextMarker(_el$41.nextSibling),
746
- _el$43 = _el$42.nextSibling,
747
- [_el$44, _co$9] = _$getNextMarker(_el$43.nextSibling);
748
- _$spread(_el$40, _$mergeProps(common), false, true);
749
- _$insert(_el$40, _$createComponent(Link, {
750
- get href() {
751
- return props.href;
752
- },
753
- "class": "k2b-app-workspace__sidebar-item-main",
754
- get tabIndex() {
755
- return props.tabIndex;
756
- },
757
- get ["aria-current"]() {
758
- return current();
759
- },
760
- get replace() {
761
- return props.replace;
762
- },
763
- get scroll() {
764
- return props.scroll;
765
- },
766
- get onNavigate() {
767
- return props.onNavigate;
768
- },
769
- get onClick() {
770
- return props.onClick;
771
- },
772
- get children() {
773
- return props.children;
774
- }
775
- }), _el$42, _co$8);
776
- _$insert(_el$40, () => props.actions, _el$44, _co$9);
777
- _$runHydrationEvents();
778
- return _el$40;
779
- })();
780
- }
781
- if (!props.href || props.disabled) {
782
- return (() => {
783
- var _el$45 = _$getNextElement(_tmpl$16);
784
- _$spread(_el$45, _$mergeProps(common, {
785
- get tabIndex() {
786
- return props.tabIndex;
787
- },
788
- get disabled() {
789
- return props.disabled;
790
- },
791
- get onClick() {
792
- return props.onClick;
793
- }
794
- }), false, true);
795
- _$insert(_el$45, () => props.children);
796
- _$runHydrationEvents();
797
- return _el$45;
798
- })();
799
- }
800
- if (props.navigation !== "enhanced" || !props.onNavigate) {
801
- return (() => {
802
- var _el$46 = _$getNextElement(_tmpl$17);
803
- _$spread(_el$46, _$mergeProps({
804
- get href() {
805
- return props.href;
806
- }
807
- }, common, {
808
- get tabIndex() {
809
- return props.tabIndex;
810
- },
811
- get ["aria-current"]() {
812
- return current();
813
- },
814
- get onClick() {
815
- return props.onClick;
816
- }
817
- }), false, true);
818
- _$insert(_el$46, () => props.children);
819
- _$runHydrationEvents();
820
- return _el$46;
821
- })();
822
- }
823
- return _$createComponent(Link, _$mergeProps({
824
- get href() {
825
- return props.href;
826
- }
827
- }, common, {
828
- get tabIndex() {
829
- return props.tabIndex;
830
- },
831
- get ["aria-current"]() {
832
- return current();
833
- },
834
- get replace() {
835
- return props.replace;
836
- },
837
- get scroll() {
838
- return props.scroll;
839
- },
840
- get onNavigate() {
841
- return props.onNavigate;
824
+ }
825
+ });
826
+ };
827
+ return _$createComponent(Show, {
828
+ get when() {
829
+ return props.hasActions;
842
830
  },
843
- get onClick() {
844
- return props.onClick;
831
+ get fallback() {
832
+ return _$createComponent(Control, {
833
+ grouped: false
834
+ });
845
835
  },
846
836
  get children() {
847
- return props.children;
837
+ var _el$30 = _$getNextElement(_tmpl$16),
838
+ _el$31 = _el$30.firstChild,
839
+ [_el$32, _co$5] = _$getNextMarker(_el$31.nextSibling),
840
+ _el$33 = _el$32.nextSibling,
841
+ [_el$34, _co$6] = _$getNextMarker(_el$33.nextSibling);
842
+ _$spread(_el$30, _$mergeProps(common, {
843
+ get ["data-disabled"]() {
844
+ return props.disabled ? "true" : undefined;
845
+ }
846
+ }), false, true);
847
+ _$insert(_el$30, _$createComponent(Control, {
848
+ grouped: true
849
+ }), _el$32, _co$5);
850
+ _$insert(_el$30, () => props.actions, _el$34, _co$6);
851
+ _$runHydrationEvents();
852
+ return _el$30;
848
853
  }
849
- }));
854
+ });
850
855
  }
851
856
  function AppWorkspaceSidebarItem(props) {
852
857
  const messages = useUiMessages();
853
- const mode = useContext(SidebarModeContext);
854
858
  const resolved = children(() => props.children);
855
859
  const resolvedActions = children(() => props.actions);
856
860
  const values = createMemo(() => flatten(resolved()));
@@ -867,89 +871,173 @@ function AppWorkspaceSidebarItem(props) {
867
871
  const metaVisibility = () => metaSlot()?.visibility ?? props.metaVisibility;
868
872
  const customActions = () => resolvedActions();
869
873
  const hasCustomActions = () => Boolean(customActions());
870
- const hasAction = () => Boolean(actionSlot() || props.actionIcon || hasCustomActions());
874
+ const hasAction = () => Boolean(actionSlot() || props.actionIcon || hasCustomActions() || props.preview);
871
875
  const mainContent = [_$createComponent(Show, {
872
876
  get when() {
873
877
  return iconContent() || icon();
874
878
  },
875
879
  get children() {
876
- var _el$47 = _$getNextElement(_tmpl$18);
877
- _$insert(_el$47, () => iconContent() ?? (() => {
878
- var _el$50 = _$getNextElement(_tmpl$20);
879
- _$effect(() => _$className(_el$50, iconClass(icon())));
880
- return _el$50;
880
+ var _el$35 = _$getNextElement(_tmpl$17);
881
+ _$insert(_el$35, () => iconContent() ?? (() => {
882
+ var _el$49 = _$getNextElement(_tmpl$22);
883
+ _$effect(() => _$className(_el$49, iconClass(icon())));
884
+ return _el$49;
881
885
  })());
882
- return _el$47;
886
+ return _el$35;
883
887
  }
884
888
  }), (() => {
885
- var _el$48 = _$getNextElement(_tmpl$19),
886
- _el$49 = _el$48.firstChild;
887
- _$insert(_el$49, () => label());
888
- _$effect(() => _$setAttribute(_el$48, "data-marquee", labelSlot()?.marquee === false ? undefined : "true"));
889
- return _el$48;
889
+ var _el$36 = _$getNextElement(_tmpl$21),
890
+ _el$45 = _el$36.firstChild,
891
+ [_el$46, _co$8] = _$getNextMarker(_el$45.nextSibling),
892
+ _el$42 = _el$46.nextSibling,
893
+ _el$43 = _el$42.firstChild,
894
+ _el$47 = _el$42.nextSibling,
895
+ [_el$48, _co$9] = _$getNextMarker(_el$47.nextSibling);
896
+ _$insert(_el$36, _$createComponent(Show, {
897
+ get when() {
898
+ return props.context || props.contextMeta;
899
+ },
900
+ get children() {
901
+ var _el$37 = _$getNextElement(_tmpl$19),
902
+ _el$38 = _el$37.firstChild,
903
+ _el$40 = _el$38.nextSibling,
904
+ [_el$41, _co$7] = _$getNextMarker(_el$40.nextSibling);
905
+ _$insert(_el$38, () => props.context);
906
+ _$insert(_el$37, _$createComponent(Show, {
907
+ get when() {
908
+ return props.contextMeta;
909
+ },
910
+ get children() {
911
+ var _el$39 = _$getNextElement(_tmpl$18);
912
+ _$insert(_el$39, () => props.contextMeta);
913
+ return _el$39;
914
+ }
915
+ }), _el$41, _co$7);
916
+ return _el$37;
917
+ }
918
+ }), _el$46, _co$8);
919
+ _$insert(_el$43, () => label());
920
+ _$insert(_el$36, _$createComponent(Show, {
921
+ get when() {
922
+ return props.description;
923
+ },
924
+ get children() {
925
+ var _el$44 = _$getNextElement(_tmpl$20);
926
+ _$insert(_el$44, () => props.description);
927
+ return _el$44;
928
+ }
929
+ }), _el$48, _co$9);
930
+ _$effect(() => _$setAttribute(_el$42, "data-marquee", labelSlot()?.marquee ?? props.variant !== "card" ? "true" : "false"));
931
+ return _el$36;
890
932
  })(), _$createComponent(Show, {
891
933
  get when() {
892
934
  return meta();
893
935
  },
894
936
  children: value => (() => {
895
- var _el$51 = _$getNextElement(_tmpl$21);
896
- _$insert(_el$51, value);
897
- _$effect(() => _$setAttribute(_el$51, "data-visibility", metaVisibility() === "hover" ? "hover" : undefined));
898
- return _el$51;
937
+ var _el$50 = _$getNextElement(_tmpl$23);
938
+ _$insert(_el$50, value);
939
+ _$effect(() => _$setAttribute(_el$50, "data-visibility", metaVisibility() === "hover" ? "hover" : undefined));
940
+ return _el$50;
899
941
  })()
900
942
  })];
901
943
  const singleAction = () => {
902
- const slot = actionSlot();
903
- if (!slot && !props.actionIcon) return null;
904
- const content = slot?.children ?? (() => {
905
- var _el$52 = _$getNextElement(_tmpl$20);
906
- _$effect(() => _$className(_el$52, iconClass(slot?.icon ?? props.actionIcon, "ti-dots")));
907
- return _el$52;
908
- })();
909
- const label = slot?.label ?? props.actionLabel ?? messages().rowAction;
944
+ const label = () => actionSlot()?.label ?? props.actionLabel ?? messages().rowAction;
910
945
  const select = event => {
911
- event.preventDefault();
912
- event.stopPropagation();
913
- slot?.onSelect?.(event);
914
- props.onActionClick?.(event);
915
- };
916
- // A row action that is a link must still navigate — only the row's own
917
- // click handling is suppressed.
918
- const follow = event => {
919
946
  event.stopPropagation();
920
- slot?.onSelect?.(event);
947
+ if (actionSlot()?.disabled) {
948
+ event.preventDefault();
949
+ return;
950
+ }
951
+ if (!actionSlot()?.href) event.preventDefault();
952
+ actionSlot()?.onSelect?.(event);
921
953
  props.onActionClick?.(event);
922
954
  };
923
- return slot?.href ? (() => {
924
- var _el$53 = _$getNextElement(_tmpl$22);
925
- _el$53.$$click = follow;
926
- _$setAttribute(_el$53, "aria-label", label);
927
- _$insert(_el$53, content);
928
- _$effect(_p$ => {
929
- var _v$46 = slot.href,
930
- _v$47 = slot.visibility === "hover" ? "hover" : undefined;
931
- _v$46 !== _p$.e && _$setAttribute(_el$53, "href", _p$.e = _v$46);
932
- _v$47 !== _p$.t && _$setAttribute(_el$53, "data-visibility", _p$.t = _v$47);
933
- return _p$;
934
- }, {
935
- e: undefined,
936
- t: undefined
937
- });
938
- _$runHydrationEvents();
939
- return _el$53;
940
- })() : (() => {
941
- var _el$54 = _$getNextElement(_tmpl$23);
942
- _el$54.$$click = select;
943
- _$setAttribute(_el$54, "aria-label", label);
944
- _$insert(_el$54, content);
945
- _$effect(() => _$setAttribute(_el$54, "data-visibility", slot?.visibility === "hover" ? "hover" : undefined));
946
- _$runHydrationEvents();
947
- return _el$54;
955
+ const content = () => actionSlot()?.children ?? (() => {
956
+ var _el$51 = _$getNextElement(_tmpl$22);
957
+ _$effect(() => _$className(_el$51, iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots")));
958
+ return _el$51;
948
959
  })();
960
+ return _$createComponent(Show, {
961
+ get when() {
962
+ return Boolean(actionSlot() || props.actionIcon);
963
+ },
964
+ get children() {
965
+ return _$createComponent(Show, {
966
+ get when() {
967
+ return _$memo(() => !!actionSlot()?.href)() && !actionSlot()?.disabled;
968
+ },
969
+ get fallback() {
970
+ return (() => {
971
+ var _el$53 = _$getNextElement(_tmpl$25);
972
+ _el$53.$$click = select;
973
+ _$insert(_el$53, content);
974
+ _$effect(_p$ => {
975
+ var _v$48 = actionSlot()?.disabled,
976
+ _v$49 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
977
+ _v$50 = label();
978
+ _v$48 !== _p$.e && _$setProperty(_el$53, "disabled", _p$.e = _v$48);
979
+ _v$49 !== _p$.t && _$setAttribute(_el$53, "data-visibility", _p$.t = _v$49);
980
+ _v$50 !== _p$.a && _$setAttribute(_el$53, "aria-label", _p$.a = _v$50);
981
+ return _p$;
982
+ }, {
983
+ e: undefined,
984
+ t: undefined,
985
+ a: undefined
986
+ });
987
+ _$runHydrationEvents();
988
+ return _el$53;
989
+ })();
990
+ },
991
+ get children() {
992
+ var _el$52 = _$getNextElement(_tmpl$24);
993
+ _el$52.$$click = select;
994
+ _$insert(_el$52, content);
995
+ _$effect(_p$ => {
996
+ var _v$45 = actionSlot()?.href,
997
+ _v$46 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
998
+ _v$47 = label();
999
+ _v$45 !== _p$.e && _$setAttribute(_el$52, "href", _p$.e = _v$45);
1000
+ _v$46 !== _p$.t && _$setAttribute(_el$52, "data-visibility", _p$.t = _v$46);
1001
+ _v$47 !== _p$.a && _$setAttribute(_el$52, "aria-label", _p$.a = _v$47);
1002
+ return _p$;
1003
+ }, {
1004
+ e: undefined,
1005
+ t: undefined,
1006
+ a: undefined
1007
+ });
1008
+ _$runHydrationEvents();
1009
+ return _el$52;
1010
+ }
1011
+ });
1012
+ }
1013
+ });
949
1014
  };
950
- const actions = () => [_$memo(customActions), _$memo(singleAction)];
1015
+ const actions = () => [_$memo(customActions), _$memo(singleAction), _$createComponent(Show, {
1016
+ get when() {
1017
+ return props.preview;
1018
+ },
1019
+ children: preview => _$createComponent(SidebarItemPreview, {
1020
+ get label() {
1021
+ return preview().label;
1022
+ },
1023
+ get trigger() {
1024
+ return preview().trigger;
1025
+ },
1026
+ get align() {
1027
+ return preview().align;
1028
+ },
1029
+ get viewportSize() {
1030
+ return preview().viewportSize;
1031
+ },
1032
+ get onOpenChange() {
1033
+ return preview().onOpenChange;
1034
+ },
1035
+ get children() {
1036
+ return preview().content;
1037
+ }
1038
+ })
1039
+ })];
951
1040
  return _$createComponent(AppWorkspaceSidebarRow, {
952
- mode: mode,
953
1041
  get hasActions() {
954
1042
  return hasAction();
955
1043
  },
@@ -1002,6 +1090,7 @@ function AppWorkspaceSidebarItem(props) {
1002
1090
  return {
1003
1091
  ...props.data,
1004
1092
  ...modeData(props.sidebarMode),
1093
+ variant: props.variant ?? "row",
1005
1094
  "has-actions": hasCustomActions() ? "true" : undefined,
1006
1095
  "action-visibility": actionSlot()?.visibility === "hover" ? "hover" : undefined
1007
1096
  };
@@ -1015,7 +1104,6 @@ const AppWorkspaceNavTreeItem = props => ({
1015
1104
  ...props
1016
1105
  });
1017
1106
  const AppWorkspaceNavTree = props => {
1018
- const mode = useContext(SidebarModeContext);
1019
1107
  let root;
1020
1108
  const resolved = children(() => props.children);
1021
1109
  const roots = createMemo(() => navTreeItems(resolved()));
@@ -1058,9 +1146,11 @@ const AppWorkspaceNavTree = props => {
1058
1146
  preventScroll: true
1059
1147
  });
1060
1148
  };
1149
+
1150
+ // Items arrive through an accessor so a changed nested list reconciles rows by identity instead of rebuilding the list.
1061
1151
  const renderItems = (value, depth, parentId) => _$createComponent(For, {
1062
1152
  get each() {
1063
- return navTreeItems(value);
1153
+ return navTreeItems(value());
1064
1154
  },
1065
1155
  children: item => {
1066
1156
  const nested = createMemo(() => navTreeItems(item.children));
@@ -1152,57 +1242,56 @@ const AppWorkspaceNavTree = props => {
1152
1242
  return rowIcon();
1153
1243
  },
1154
1244
  get children() {
1155
- var _el$55 = _$getNextElement(_tmpl$24),
1156
- _el$56 = _el$55.firstChild;
1245
+ var _el$54 = _$getNextElement(_tmpl$26),
1246
+ _el$55 = _el$54.firstChild;
1157
1247
  _$effect(_p$ => {
1158
- var _v$48 = usesIconDisclosure() ? "" : undefined,
1159
- _v$49 = iconClass(rowIcon());
1160
- _v$48 !== _p$.e && _$setAttribute(_el$55, "data-k2b-nav-tree-toggle", _p$.e = _v$48);
1161
- _v$49 !== _p$.t && _$className(_el$56, _p$.t = _v$49);
1248
+ var _v$51 = usesIconDisclosure() ? "" : undefined,
1249
+ _v$52 = iconClass(rowIcon());
1250
+ _v$51 !== _p$.e && _$setAttribute(_el$54, "data-k2b-nav-tree-toggle", _p$.e = _v$51);
1251
+ _v$52 !== _p$.t && _$className(_el$55, _p$.t = _v$52);
1162
1252
  return _p$;
1163
1253
  }, {
1164
1254
  e: undefined,
1165
1255
  t: undefined
1166
1256
  });
1167
- return _el$55;
1257
+ return _el$54;
1168
1258
  }
1169
1259
  }), (() => {
1170
- var _el$57 = _$getNextElement(_tmpl$19),
1171
- _el$58 = _el$57.firstChild;
1172
- _$insert(_el$58, () => item.label);
1173
- return _el$57;
1260
+ var _el$56 = _$getNextElement(_tmpl$27),
1261
+ _el$57 = _el$56.firstChild;
1262
+ _$insert(_el$57, () => item.label);
1263
+ return _el$56;
1174
1264
  })(), _$createComponent(Show, {
1175
1265
  get when() {
1176
1266
  return item.meta !== undefined;
1177
1267
  },
1178
1268
  get children() {
1179
- var _el$59 = _$getNextElement(_tmpl$25);
1180
- _$insert(_el$59, () => item.meta);
1269
+ var _el$58 = _$getNextElement(_tmpl$28);
1270
+ _$insert(_el$58, () => item.meta);
1181
1271
  _$effect(_p$ => {
1182
- var _v$50 = `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`,
1183
- _v$51 = item.metaVisibility === "hover" ? "hover" : undefined;
1184
- _v$50 !== _p$.e && _$className(_el$59, _p$.e = _v$50);
1185
- _v$51 !== _p$.t && _$setAttribute(_el$59, "data-visibility", _p$.t = _v$51);
1272
+ var _v$53 = `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`,
1273
+ _v$54 = item.metaVisibility === "hover" ? "hover" : undefined;
1274
+ _v$53 !== _p$.e && _$className(_el$58, _p$.e = _v$53);
1275
+ _v$54 !== _p$.t && _$setAttribute(_el$58, "data-visibility", _p$.t = _v$54);
1186
1276
  return _p$;
1187
1277
  }, {
1188
1278
  e: undefined,
1189
1279
  t: undefined
1190
1280
  });
1191
- return _el$59;
1281
+ return _el$58;
1192
1282
  }
1193
1283
  }), _$createComponent(Show, {
1194
1284
  get when() {
1195
1285
  return _$memo(() => !!hasChildren())() && !usesIconDisclosure();
1196
1286
  },
1197
1287
  get children() {
1198
- var _el$60 = _$getNextElement(_tmpl$26),
1199
- _el$61 = _el$60.firstChild;
1200
- _$effect(() => _$className(_el$61, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`));
1201
- return _el$60;
1288
+ var _el$59 = _$getNextElement(_tmpl$29),
1289
+ _el$60 = _el$59.firstChild;
1290
+ _$effect(() => _$className(_el$60, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`));
1291
+ return _el$59;
1202
1292
  }
1203
1293
  })];
1204
1294
  const row = () => _$createComponent(AppWorkspaceSidebarRow, {
1205
- mode: mode,
1206
1295
  get hasActions() {
1207
1296
  return Boolean(item.actions);
1208
1297
  },
@@ -1255,43 +1344,43 @@ const AppWorkspaceNavTree = props => {
1255
1344
  children: rowContent
1256
1345
  });
1257
1346
  return (() => {
1258
- var _el$62 = _$getNextElement(_tmpl$28),
1259
- _el$64 = _el$62.firstChild,
1260
- [_el$65, _co$0] = _$getNextMarker(_el$64.nextSibling),
1261
- _el$66 = _el$65.nextSibling,
1262
- [_el$67, _co$1] = _$getNextMarker(_el$66.nextSibling);
1263
- _$addEventListener(_el$62, "drop", item.onDrop);
1264
- _$addEventListener(_el$62, "dragleave", item.onDragLeave);
1265
- _$addEventListener(_el$62, "dragover", item.onDragOver);
1266
- _$addEventListener(_el$62, "dragenter", item.onDragEnter);
1267
- _el$62.$$keydown = onKeyDown;
1268
- _el$62.addEventListener("focus", () => setFocusedId(item.id));
1269
- var _ref$ = treeItem;
1270
- typeof _ref$ === "function" ? _$use(_ref$, _el$62) : treeItem = _el$62;
1271
- _$setAttribute(_el$62, "aria-level", depth + 1);
1272
- _$setAttribute(_el$62, "data-k2b-nav-tree-parent-id", parentId);
1273
- _$insert(_el$62, row, _el$65, _co$0);
1274
- _$insert(_el$62, _$createComponent(Show, {
1347
+ var _el$61 = _$getNextElement(_tmpl$31),
1348
+ _el$63 = _el$61.firstChild,
1349
+ [_el$64, _co$0] = _$getNextMarker(_el$63.nextSibling),
1350
+ _el$65 = _el$64.nextSibling,
1351
+ [_el$66, _co$1] = _$getNextMarker(_el$65.nextSibling);
1352
+ _$addEventListener(_el$61, "drop", item.onDrop);
1353
+ _$addEventListener(_el$61, "dragleave", item.onDragLeave);
1354
+ _$addEventListener(_el$61, "dragover", item.onDragOver);
1355
+ _$addEventListener(_el$61, "dragenter", item.onDragEnter);
1356
+ _el$61.$$keydown = onKeyDown;
1357
+ _el$61.addEventListener("focus", () => setFocusedId(item.id));
1358
+ var _ref$2 = treeItem;
1359
+ typeof _ref$2 === "function" ? _$use(_ref$2, _el$61) : treeItem = _el$61;
1360
+ _$setAttribute(_el$61, "aria-level", depth + 1);
1361
+ _$setAttribute(_el$61, "data-k2b-nav-tree-parent-id", parentId);
1362
+ _$insert(_el$61, row, _el$64, _co$0);
1363
+ _$insert(_el$61, _$createComponent(Show, {
1275
1364
  get when() {
1276
1365
  return _$memo(() => !!hasChildren())() && isExpanded(item.id);
1277
1366
  },
1278
1367
  get children() {
1279
- var _el$63 = _$getNextElement(_tmpl$27);
1280
- _$insert(_el$63, () => renderItems(nested(), depth + 1, item.id));
1281
- return _el$63;
1368
+ var _el$62 = _$getNextElement(_tmpl$30);
1369
+ _$insert(_el$62, () => renderItems(nested, depth + 1, item.id));
1370
+ return _el$62;
1282
1371
  }
1283
- }), _el$67, _co$1);
1372
+ }), _el$66, _co$1);
1284
1373
  _$effect(_p$ => {
1285
- var _v$52 = selected(),
1286
- _v$53 = hasChildren() ? isExpanded(item.id) : undefined,
1287
- _v$54 = item.disabled ? "true" : undefined,
1288
- _v$55 = item.disabled ? -1 : tabStopId() === item.id ? 0 : -1,
1289
- _v$56 = item.id;
1290
- _v$52 !== _p$.e && _$setAttribute(_el$62, "aria-selected", _p$.e = _v$52);
1291
- _v$53 !== _p$.t && _$setAttribute(_el$62, "aria-expanded", _p$.t = _v$53);
1292
- _v$54 !== _p$.a && _$setAttribute(_el$62, "aria-disabled", _p$.a = _v$54);
1293
- _v$55 !== _p$.o && _$setAttribute(_el$62, "tabindex", _p$.o = _v$55);
1294
- _v$56 !== _p$.i && _$setAttribute(_el$62, "data-k2b-nav-tree-id", _p$.i = _v$56);
1374
+ var _v$55 = selected(),
1375
+ _v$56 = hasChildren() ? isExpanded(item.id) : undefined,
1376
+ _v$57 = item.disabled ? "true" : undefined,
1377
+ _v$58 = item.disabled ? -1 : tabStopId() === item.id ? 0 : -1,
1378
+ _v$59 = item.id;
1379
+ _v$55 !== _p$.e && _$setAttribute(_el$61, "aria-selected", _p$.e = _v$55);
1380
+ _v$56 !== _p$.t && _$setAttribute(_el$61, "aria-expanded", _p$.t = _v$56);
1381
+ _v$57 !== _p$.a && _$setAttribute(_el$61, "aria-disabled", _p$.a = _v$57);
1382
+ _v$58 !== _p$.o && _$setAttribute(_el$61, "tabindex", _p$.o = _v$58);
1383
+ _v$59 !== _p$.i && _$setAttribute(_el$61, "data-k2b-nav-tree-id", _p$.i = _v$59);
1295
1384
  return _p$;
1296
1385
  }, {
1297
1386
  e: undefined,
@@ -1301,59 +1390,59 @@ const AppWorkspaceNavTree = props => {
1301
1390
  i: undefined
1302
1391
  });
1303
1392
  _$runHydrationEvents();
1304
- return _el$62;
1393
+ return _el$61;
1305
1394
  })();
1306
1395
  }
1307
1396
  });
1308
1397
  return (() => {
1309
- var _el$68 = _$getNextElement(_tmpl$29);
1310
- var _ref$2 = root;
1311
- typeof _ref$2 === "function" ? _$use(_ref$2, _el$68) : root = _el$68;
1312
- _$insert(_el$68, () => renderItems(roots(), 0));
1398
+ var _el$67 = _$getNextElement(_tmpl$32);
1399
+ var _ref$3 = root;
1400
+ typeof _ref$3 === "function" ? _$use(_ref$3, _el$67) : root = _el$67;
1401
+ _$insert(_el$67, () => renderItems(roots, 0));
1313
1402
  _$effect(_p$ => {
1314
- var _v$57 = `k2b-app-workspace__nav-tree ${props.class ?? ""}`,
1315
- _v$58 = props.ariaLabel;
1316
- _v$57 !== _p$.e && _$className(_el$68, _p$.e = _v$57);
1317
- _v$58 !== _p$.t && _$setAttribute(_el$68, "aria-label", _p$.t = _v$58);
1403
+ var _v$60 = `k2b-app-workspace__nav-tree ${props.class ?? ""}`,
1404
+ _v$61 = props.ariaLabel;
1405
+ _v$60 !== _p$.e && _$className(_el$67, _p$.e = _v$60);
1406
+ _v$61 !== _p$.t && _$setAttribute(_el$67, "aria-label", _p$.t = _v$61);
1318
1407
  return _p$;
1319
1408
  }, {
1320
1409
  e: undefined,
1321
1410
  t: undefined
1322
1411
  });
1323
- return _el$68;
1412
+ return _el$67;
1324
1413
  })();
1325
1414
  };
1326
1415
  AppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;
1327
1416
  const AppWorkspaceSidebarIconGrid = props => (() => {
1328
- var _el$69 = _$getNextElement(_tmpl$30),
1329
- _el$71 = _el$69.firstChild,
1330
- [_el$72, _co$10] = _$getNextMarker(_el$71.nextSibling),
1331
- _el$70 = _el$72.nextSibling;
1332
- _$spread(_el$69, _$mergeProps({
1417
+ var _el$68 = _$getNextElement(_tmpl$33),
1418
+ _el$70 = _el$68.firstChild,
1419
+ [_el$71, _co$10] = _$getNextMarker(_el$70.nextSibling),
1420
+ _el$69 = _el$71.nextSibling;
1421
+ _$spread(_el$68, _$mergeProps({
1333
1422
  get ["class"]() {
1334
1423
  return `k2b-app-workspace__sidebar-icon-grid-wrap ${props.class ?? ""}`;
1335
1424
  }
1336
1425
  }, () => modeAttrs(props.sidebarMode)), false, true);
1337
- _$insert(_el$69, _$createComponent(Show, {
1426
+ _$insert(_el$68, _$createComponent(Show, {
1338
1427
  get when() {
1339
1428
  return props.title;
1340
1429
  },
1341
1430
  children: title => (() => {
1342
- var _el$73 = _$getNextElement(_tmpl$11);
1343
- _$insert(_el$73, title);
1344
- return _el$73;
1431
+ var _el$72 = _$getNextElement(_tmpl$12);
1432
+ _$insert(_el$72, title);
1433
+ return _el$72;
1345
1434
  })()
1346
- }), _el$72, _co$10);
1347
- _$insert(_el$70, () => props.children);
1348
- _$effect(() => _$setAttribute(_el$70, "data-columns", props.columns ?? 2));
1435
+ }), _el$71, _co$10);
1436
+ _$insert(_el$69, () => props.children);
1437
+ _$effect(() => _$setAttribute(_el$69, "data-columns", props.columns ?? 2));
1349
1438
  _$runHydrationEvents();
1350
- return _el$69;
1439
+ return _el$68;
1351
1440
  })();
1352
1441
  const AppWorkspaceSidebarIconAction = props => {
1353
1442
  const content = (() => {
1354
- var _el$74 = _$getNextElement(_tmpl$31);
1355
- _$effect(() => _$className(_el$74, iconClass(props.icon)));
1356
- return _el$74;
1443
+ var _el$73 = _$getNextElement(_tmpl$34);
1444
+ _$effect(() => _$className(_el$73, iconClass(props.icon)));
1445
+ return _el$73;
1357
1446
  })();
1358
1447
  const attrs = () => ({
1359
1448
  class: `k2b-app-workspace__sidebar-icon-action ${props.active ? "is-active" : ""}`,
@@ -1366,8 +1455,8 @@ const AppWorkspaceSidebarIconAction = props => {
1366
1455
  ...modeAttrs(props.sidebarMode)
1367
1456
  });
1368
1457
  if (!props.href || props.disabled) return (() => {
1369
- var _el$75 = _$getNextElement(_tmpl$16);
1370
- _$spread(_el$75, _$mergeProps(attrs, {
1458
+ var _el$74 = _$getNextElement(_tmpl$14);
1459
+ _$spread(_el$74, _$mergeProps(attrs, {
1371
1460
  get disabled() {
1372
1461
  return props.disabled;
1373
1462
  },
@@ -1375,13 +1464,13 @@ const AppWorkspaceSidebarIconAction = props => {
1375
1464
  return props.onClick;
1376
1465
  }
1377
1466
  }), false, true);
1378
- _$insert(_el$75, content);
1467
+ _$insert(_el$74, content);
1379
1468
  _$runHydrationEvents();
1380
- return _el$75;
1469
+ return _el$74;
1381
1470
  })();
1382
1471
  if (props.navigation !== "enhanced" || !props.onNavigate) return (() => {
1383
- var _el$76 = _$getNextElement(_tmpl$17);
1384
- _$spread(_el$76, _$mergeProps({
1472
+ var _el$75 = _$getNextElement(_tmpl$15);
1473
+ _$spread(_el$75, _$mergeProps({
1385
1474
  get href() {
1386
1475
  return props.href;
1387
1476
  }
@@ -1390,9 +1479,9 @@ const AppWorkspaceSidebarIconAction = props => {
1390
1479
  return props.onClick;
1391
1480
  }
1392
1481
  }), false, true);
1393
- _$insert(_el$76, content);
1482
+ _$insert(_el$75, content);
1394
1483
  _$runHydrationEvents();
1395
- return _el$76;
1484
+ return _el$75;
1396
1485
  })();
1397
1486
  return _$createComponent(Link, _$mergeProps({
1398
1487
  get href() {
@@ -1437,27 +1526,30 @@ const AppWorkspace = props => {
1437
1526
  return props.resizable !== false;
1438
1527
  },
1439
1528
  get children() {
1440
- var _el$77 = _$getNextElement(_tmpl$32);
1441
- var _ref$3 = root;
1442
- typeof _ref$3 === "function" ? _$use(_ref$3, _el$77) : root = _el$77;
1443
- _$insert(_el$77, () => props.children);
1529
+ var _el$76 = _$getNextElement(_tmpl$35);
1530
+ var _ref$4 = root;
1531
+ typeof _ref$4 === "function" ? _$use(_ref$4, _el$76) : root = _el$76;
1532
+ _$insert(_el$76, () => props.children);
1444
1533
  _$effect(_p$ => {
1445
- var _v$59 = `k2b-app-workspace ${props.class ?? ""}`,
1446
- _v$60 = initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed),
1447
- _v$61 = props.resizable === false ? "false" : "true",
1448
- _v$62 = appWorkspaceLayoutStyle(initialLayoutState());
1449
- _v$59 !== _p$.e && _$className(_el$77, _p$.e = _v$59);
1450
- _v$60 !== _p$.t && _$setAttribute(_el$77, "data-sidebar-collapsed", _p$.t = _v$60);
1451
- _v$61 !== _p$.a && _$setAttribute(_el$77, "data-workspace-resizable", _p$.a = _v$61);
1452
- _p$.o = _$style(_el$77, _v$62, _p$.o);
1534
+ var _v$62 = `k2b-app-workspace ${props.class ?? ""}`,
1535
+ _v$63 = props.mobileSurface,
1536
+ _v$64 = initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed),
1537
+ _v$65 = props.resizable === false ? "false" : "true",
1538
+ _v$66 = appWorkspaceLayoutStyle(initialLayoutState());
1539
+ _v$62 !== _p$.e && _$className(_el$76, _p$.e = _v$62);
1540
+ _v$63 !== _p$.t && _$setAttribute(_el$76, "data-mobile-surface", _p$.t = _v$63);
1541
+ _v$64 !== _p$.a && _$setAttribute(_el$76, "data-sidebar-collapsed", _p$.a = _v$64);
1542
+ _v$65 !== _p$.o && _$setAttribute(_el$76, "data-workspace-resizable", _p$.o = _v$65);
1543
+ _p$.i = _$style(_el$76, _v$66, _p$.i);
1453
1544
  return _p$;
1454
1545
  }, {
1455
1546
  e: undefined,
1456
1547
  t: undefined,
1457
1548
  a: undefined,
1458
- o: undefined
1549
+ o: undefined,
1550
+ i: undefined
1459
1551
  });
1460
- return _el$77;
1552
+ return _el$76;
1461
1553
  }
1462
1554
  });
1463
1555
  };
@@ -1470,20 +1562,16 @@ AppWorkspace.LayoutStateProvider = props => _$createComponent(LayoutStateContext
1470
1562
  }
1471
1563
  });
1472
1564
  AppWorkspace.Content = props => (() => {
1473
- var _el$78 = _$getNextElement(_tmpl$2);
1474
- _$insert(_el$78, () => props.children);
1475
- _$effect(() => _$className(_el$78, `k2b-app-workspace__content ${props.class ?? ""}`));
1476
- return _el$78;
1565
+ var _el$77 = _$getNextElement(_tmpl$2);
1566
+ _$insert(_el$77, () => props.children);
1567
+ _$effect(() => _$className(_el$77, `k2b-app-workspace__content ${props.class ?? ""}`));
1568
+ return _el$77;
1477
1569
  })();
1478
1570
  AppWorkspace.Main = AppWorkspaceMain;
1479
1571
  AppWorkspace.MainPane = AppWorkspaceMainPane;
1480
1572
  AppWorkspace.Detail = AppWorkspaceDetail;
1481
1573
  AppWorkspace.BottomDrawer = AppWorkspaceBottomDrawer;
1482
1574
  AppWorkspace.Sidebar = AppWorkspaceSidebar;
1483
- AppWorkspace.SidebarMobileTrigger = AppWorkspaceSidebarMobileTrigger;
1484
- AppWorkspace.SidebarMobile = AppWorkspaceSidebarMobile;
1485
- AppWorkspace.SidebarMobileItems = AppWorkspaceSidebarMobileItems;
1486
- AppWorkspace.SidebarMobileBody = AppWorkspaceSidebarMobileBody;
1487
1575
  AppWorkspace.SidebarDesktop = AppWorkspaceSidebarDesktop;
1488
1576
  AppWorkspace.SidebarSection = AppWorkspaceSidebarSection;
1489
1577
  AppWorkspace.SidebarBody = AppWorkspaceSidebarBody;