@k2b/ui 0.21.0 → 0.23.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 (610) hide show
  1. package/dist/browser/actions/ContextMenu.js +3 -1
  2. package/dist/browser/actions/ContextMenu.js.map +1 -1
  3. package/dist/browser/actions/FilterChip.js +3 -1
  4. package/dist/browser/actions/FilterChip.js.map +1 -1
  5. package/dist/browser/actions/SpotlightSearch.js +3 -1
  6. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  7. package/dist/browser/actions/filter-messages.js +20 -0
  8. package/dist/browser/actions/filter-messages.js.map +1 -0
  9. package/dist/browser/actions/spotlight-messages.js +16 -0
  10. package/dist/browser/actions/spotlight-messages.js.map +1 -0
  11. package/dist/browser/chat/ChatComposer.js +47 -41
  12. package/dist/browser/chat/ChatComposer.js.map +1 -1
  13. package/dist/browser/chat/ChatPrimitives.js +25 -23
  14. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  15. package/dist/browser/chat/ChatRoot.js +3 -3
  16. package/dist/browser/chat/ChatRoot.js.map +1 -1
  17. package/dist/browser/chat/ChatTimeline.js +12 -12
  18. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  19. package/dist/browser/chat/chat-messages.js +236 -0
  20. package/dist/browser/chat/chat-messages.js.map +1 -0
  21. package/dist/browser/content/Calendar.js +1096 -1060
  22. package/dist/browser/content/Calendar.js.map +1 -1
  23. package/dist/browser/content/CalendarDayView.js +1187 -0
  24. package/dist/browser/content/CalendarDayView.js.map +1 -0
  25. package/dist/browser/content/CalendarWeekView.js +1571 -0
  26. package/dist/browser/content/CalendarWeekView.js.map +1 -0
  27. package/dist/browser/content/Chart.js +15 -8
  28. package/dist/browser/content/Chart.js.map +1 -1
  29. package/dist/browser/content/ChartExplorer.js +185 -85
  30. package/dist/browser/content/ChartExplorer.js.map +1 -1
  31. package/dist/browser/content/ChartExplorerControls.js +9 -7
  32. package/dist/browser/content/ChartExplorerControls.js.map +1 -1
  33. package/dist/browser/content/ChartFilterControls.js +93 -34
  34. package/dist/browser/content/ChartFilterControls.js.map +1 -1
  35. package/dist/browser/content/ChartSnapshotView.js +3 -3
  36. package/dist/browser/content/ChartSnapshotView.js.map +1 -1
  37. package/dist/browser/content/DataTable.js +238 -201
  38. package/dist/browser/content/DataTable.js.map +1 -1
  39. package/dist/browser/content/Docs.js +3 -1
  40. package/dist/browser/content/Docs.js.map +1 -1
  41. package/dist/browser/content/FileBrowser.js +30 -26
  42. package/dist/browser/content/FileBrowser.js.map +1 -1
  43. package/dist/browser/content/FileTree.js +9 -7
  44. package/dist/browser/content/FileTree.js.map +1 -1
  45. package/dist/browser/content/FileView.js +37 -28
  46. package/dist/browser/content/FileView.js.map +1 -1
  47. package/dist/browser/content/Lightbox.js +9 -7
  48. package/dist/browser/content/Lightbox.js.map +1 -1
  49. package/dist/browser/content/LogEntriesTable.js +3 -3
  50. package/dist/browser/content/LogEntriesTable.js.map +1 -1
  51. package/dist/browser/content/MessageRow.js +24 -22
  52. package/dist/browser/content/MessageRow.js.map +1 -1
  53. package/dist/browser/content/Pagination.js +7 -7
  54. package/dist/browser/content/Pagination.js.map +1 -1
  55. package/dist/browser/content/PdfPreview.js +15 -13
  56. package/dist/browser/content/PdfPreview.js.map +1 -1
  57. package/dist/browser/content/RangePicker.js +3 -1
  58. package/dist/browser/content/RangePicker.js.map +1 -1
  59. package/dist/browser/content/StructuredDataPreview.js +3 -1
  60. package/dist/browser/content/StructuredDataPreview.js.map +1 -1
  61. package/dist/browser/content/Timeline.js +13 -11
  62. package/dist/browser/content/Timeline.js.map +1 -1
  63. package/dist/browser/content/VideoPlayer.js +5 -5
  64. package/dist/browser/content/VideoPlayer.js.map +1 -1
  65. package/dist/browser/content/VirtualFeed.js +6 -4
  66. package/dist/browser/content/VirtualFeed.js.map +1 -1
  67. package/dist/browser/content/ZoomPanViewport.js +10 -7
  68. package/dist/browser/content/ZoomPanViewport.js.map +1 -1
  69. package/dist/browser/content/calendar-day-scroll.js +98 -0
  70. package/dist/browser/content/calendar-day-scroll.js.map +1 -0
  71. package/dist/browser/content/calendar-days.js +408 -0
  72. package/dist/browser/content/calendar-days.js.map +1 -0
  73. package/dist/browser/content/calendar-dialogs.js +236 -0
  74. package/dist/browser/content/calendar-dialogs.js.map +1 -0
  75. package/dist/browser/content/calendar-messages.js +249 -3
  76. package/dist/browser/content/calendar-messages.js.map +1 -1
  77. package/dist/browser/content/calendar-pointer.js +19 -6
  78. package/dist/browser/content/calendar-pointer.js.map +1 -1
  79. package/dist/browser/content/calendar-shared.js +328 -0
  80. package/dist/browser/content/calendar-shared.js.map +1 -0
  81. package/dist/browser/content/calendar-time-view.js +1649 -0
  82. package/dist/browser/content/calendar-time-view.js.map +1 -0
  83. package/dist/browser/content/chart-messages.js +146 -0
  84. package/dist/browser/content/chart-messages.js.map +1 -0
  85. package/dist/browser/content/collection-selection.js +2 -0
  86. package/dist/browser/content/collection-selection.js.map +1 -1
  87. package/dist/browser/content/data-table-messages.js +24 -0
  88. package/dist/browser/content/data-table-messages.js.map +1 -0
  89. package/dist/browser/content/docs-messages.js +24 -0
  90. package/dist/browser/content/docs-messages.js.map +1 -0
  91. package/dist/browser/content/feed-messages.js +34 -0
  92. package/dist/browser/content/feed-messages.js.map +1 -0
  93. package/dist/browser/content/file-browser-messages.js +69 -0
  94. package/dist/browser/content/file-browser-messages.js.map +1 -0
  95. package/dist/browser/content/file-view-messages.js +64 -0
  96. package/dist/browser/content/file-view-messages.js.map +1 -0
  97. package/dist/browser/content/index.js.map +1 -1
  98. package/dist/browser/content/lightbox-messages.js +36 -0
  99. package/dist/browser/content/lightbox-messages.js.map +1 -0
  100. package/dist/browser/content/log-entries-messages.js +20 -0
  101. package/dist/browser/content/log-entries-messages.js.map +1 -0
  102. package/dist/browser/content/markdown-info-block-messages.js +24 -0
  103. package/dist/browser/content/markdown-info-block-messages.js.map +1 -0
  104. package/dist/browser/content/markdown-info-blocks.js +3 -3
  105. package/dist/browser/content/markdown-info-blocks.js.map +1 -1
  106. package/dist/browser/content/markdown-links.js +2 -2
  107. package/dist/browser/content/markdown-links.js.map +1 -1
  108. package/dist/browser/content/markdown-reference-messages.js +30 -0
  109. package/dist/browser/content/markdown-reference-messages.js.map +1 -0
  110. package/dist/browser/content/pagination-messages.js +38 -0
  111. package/dist/browser/content/pagination-messages.js.map +1 -0
  112. package/dist/browser/content/pdf-messages.js +43 -0
  113. package/dist/browser/content/pdf-messages.js.map +1 -0
  114. package/dist/browser/content/range-picker-messages.js +20 -0
  115. package/dist/browser/content/range-picker-messages.js.map +1 -0
  116. package/dist/browser/content/structured-data-messages.js +22 -0
  117. package/dist/browser/content/structured-data-messages.js.map +1 -0
  118. package/dist/browser/content/timeline-messages.js +62 -0
  119. package/dist/browser/content/timeline-messages.js.map +1 -0
  120. package/dist/browser/content/video-messages.js +24 -0
  121. package/dist/browser/content/video-messages.js.map +1 -0
  122. package/dist/browser/content/viewport-messages.js +28 -0
  123. package/dist/browser/content/viewport-messages.js.map +1 -0
  124. package/dist/browser/feedback/HoverPreview.js +34 -6
  125. package/dist/browser/feedback/HoverPreview.js.map +1 -1
  126. package/dist/browser/feedback/InstallGuide.js +18 -18
  127. package/dist/browser/feedback/InstallGuide.js.map +1 -1
  128. package/dist/browser/feedback/install-messages.js +104 -0
  129. package/dist/browser/feedback/install-messages.js.map +1 -0
  130. package/dist/browser/feedback/prompt-messages.js +65 -0
  131. package/dist/browser/feedback/prompt-messages.js.map +1 -0
  132. package/dist/browser/feedback/prompts.js +14 -11
  133. package/dist/browser/feedback/prompts.js.map +1 -1
  134. package/dist/browser/feedback/toast-messages.js +18 -0
  135. package/dist/browser/feedback/toast-messages.js.map +1 -0
  136. package/dist/browser/feedback/toast.js +4 -3
  137. package/dist/browser/feedback/toast.js.map +1 -1
  138. package/dist/browser/index.js +1 -1
  139. package/dist/browser/index.js.map +1 -1
  140. package/dist/browser/inputs/AutocompleteEditor.js +6 -4
  141. package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
  142. package/dist/browser/inputs/AutocompleteSelect.js +10 -8
  143. package/dist/browser/inputs/AutocompleteSelect.js.map +1 -1
  144. package/dist/browser/inputs/ChoiceGroups.js +4 -0
  145. package/dist/browser/inputs/ChoiceGroups.js.map +1 -1
  146. package/dist/browser/inputs/ChoiceInputs.js +5 -5
  147. package/dist/browser/inputs/ChoiceInputs.js.map +1 -1
  148. package/dist/browser/inputs/Combobox.js +3 -2
  149. package/dist/browser/inputs/Combobox.js.map +1 -1
  150. package/dist/browser/inputs/FileDropTarget.js +6 -6
  151. package/dist/browser/inputs/FileDropTarget.js.map +1 -1
  152. package/dist/browser/inputs/FileInputs.js +30 -21
  153. package/dist/browser/inputs/FileInputs.js.map +1 -1
  154. package/dist/browser/inputs/MultiSelectInput.js +7 -5
  155. package/dist/browser/inputs/MultiSelectInput.js.map +1 -1
  156. package/dist/browser/inputs/NumberInput.js +4 -2
  157. package/dist/browser/inputs/NumberInput.js.map +1 -1
  158. package/dist/browser/inputs/QrScanner.js +5 -5
  159. package/dist/browser/inputs/QrScanner.js.map +1 -1
  160. package/dist/browser/inputs/Select.js +7 -5
  161. package/dist/browser/inputs/Select.js.map +1 -1
  162. package/dist/browser/inputs/SelectChip.js +3 -3
  163. package/dist/browser/inputs/SelectChip.js.map +1 -1
  164. package/dist/browser/inputs/SignatureInput.js +9 -3
  165. package/dist/browser/inputs/SignatureInput.js.map +1 -1
  166. package/dist/browser/inputs/SpecialInputs.js +4 -2
  167. package/dist/browser/inputs/SpecialInputs.js.map +1 -1
  168. package/dist/browser/inputs/TagEditor.js +8 -6
  169. package/dist/browser/inputs/TagEditor.js.map +1 -1
  170. package/dist/browser/inputs/TagsInput.js +5 -5
  171. package/dist/browser/inputs/TagsInput.js.map +1 -1
  172. package/dist/browser/inputs/TemplateEditor.js +5 -5
  173. package/dist/browser/inputs/TemplateEditor.js.map +1 -1
  174. package/dist/browser/inputs/TextInput.js +3 -1
  175. package/dist/browser/inputs/TextInput.js.map +1 -1
  176. package/dist/browser/inputs/completion-messages.js +24 -0
  177. package/dist/browser/inputs/completion-messages.js.map +1 -0
  178. package/dist/browser/inputs/file-drop-messages.js +63 -0
  179. package/dist/browser/inputs/file-drop-messages.js.map +1 -0
  180. package/dist/browser/inputs/file-drop.js.map +1 -1
  181. package/dist/browser/inputs/file-input-messages.js +60 -0
  182. package/dist/browser/inputs/file-input-messages.js.map +1 -0
  183. package/dist/browser/inputs/icon-messages.js +22 -0
  184. package/dist/browser/inputs/icon-messages.js.map +1 -0
  185. package/dist/browser/inputs/input-messages.js +38 -0
  186. package/dist/browser/inputs/input-messages.js.map +1 -0
  187. package/dist/browser/inputs/markdown/MarkdownEditor.js +10 -6
  188. package/dist/browser/inputs/markdown/MarkdownEditor.js.map +1 -1
  189. package/dist/browser/inputs/markdown/Toolbar.js +13 -13
  190. package/dist/browser/inputs/markdown/Toolbar.js.map +1 -1
  191. package/dist/browser/inputs/markdown/editor-messages.js +43 -0
  192. package/dist/browser/inputs/markdown/editor-messages.js.map +1 -0
  193. package/dist/browser/inputs/markdown/toolbar-messages.js +40 -0
  194. package/dist/browser/inputs/markdown/toolbar-messages.js.map +1 -0
  195. package/dist/browser/inputs/qr-messages.js +26 -0
  196. package/dist/browser/inputs/qr-messages.js.map +1 -0
  197. package/dist/browser/inputs/select-messages.js +63 -0
  198. package/dist/browser/inputs/select-messages.js.map +1 -0
  199. package/dist/browser/inputs/tag-messages.js +44 -0
  200. package/dist/browser/inputs/tag-messages.js.map +1 -0
  201. package/dist/browser/inputs/template-messages.js +22 -0
  202. package/dist/browser/inputs/template-messages.js.map +1 -0
  203. package/dist/browser/internal/render-error-messages.js +20 -0
  204. package/dist/browser/internal/render-error-messages.js.map +1 -0
  205. package/dist/browser/internal/render-error.js +3 -1
  206. package/dist/browser/internal/render-error.js.map +1 -1
  207. package/dist/browser/internal/text-selection.js +101 -0
  208. package/dist/browser/internal/text-selection.js.map +1 -0
  209. package/dist/browser/intl/messages.js +6 -1155
  210. package/dist/browser/intl/messages.js.map +1 -1
  211. package/dist/browser/layout/AppWorkspace.js +594 -425
  212. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  213. package/dist/browser/layout/BottomSheet.js +6 -1
  214. package/dist/browser/layout/BottomSheet.js.map +1 -1
  215. package/dist/browser/layout/Discussion.js +8 -5
  216. package/dist/browser/layout/Discussion.js.map +1 -1
  217. package/dist/browser/layout/FloatingWindow.js +8 -5
  218. package/dist/browser/layout/FloatingWindow.js.map +1 -1
  219. package/dist/browser/layout/Navigation.js +7 -6
  220. package/dist/browser/layout/Navigation.js.map +1 -1
  221. package/dist/browser/layout/PageTitle.js +373 -0
  222. package/dist/browser/layout/PageTitle.js.map +1 -0
  223. package/dist/browser/layout/PanelDialog.js +8 -6
  224. package/dist/browser/layout/PanelDialog.js.map +1 -1
  225. package/dist/browser/layout/Panes.js +23 -15
  226. package/dist/browser/layout/Panes.js.map +1 -1
  227. package/dist/browser/layout/PullToRefresh.js +13 -4
  228. package/dist/browser/layout/PullToRefresh.js.map +1 -1
  229. package/dist/browser/layout/Settings.js +14 -12
  230. package/dist/browser/layout/Settings.js.map +1 -1
  231. package/dist/browser/layout/SettingsCollection.js +6 -5
  232. package/dist/browser/layout/SettingsCollection.js.map +1 -1
  233. package/dist/browser/layout/SettingsModal.js +3 -1
  234. package/dist/browser/layout/SettingsModal.js.map +1 -1
  235. package/dist/browser/layout/app-workspace-controller.js +821 -12
  236. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  237. package/dist/browser/layout/app-workspace-state.js +3 -2
  238. package/dist/browser/layout/app-workspace-state.js.map +1 -1
  239. package/dist/browser/layout/floating-window-messages.js +28 -0
  240. package/dist/browser/layout/floating-window-messages.js.map +1 -0
  241. package/dist/browser/layout/index.js +2 -0
  242. package/dist/browser/layout/index.js.map +1 -1
  243. package/dist/browser/layout/navigation-model.js.map +1 -1
  244. package/dist/browser/layout/page-title-controller.js +169 -0
  245. package/dist/browser/layout/page-title-controller.js.map +1 -0
  246. package/dist/browser/layout/panel-dialog-messages.js +20 -0
  247. package/dist/browser/layout/panel-dialog-messages.js.map +1 -0
  248. package/dist/browser/layout/panes-messages.js +48 -0
  249. package/dist/browser/layout/panes-messages.js.map +1 -0
  250. package/dist/browser/layout/refresh-messages.js +20 -0
  251. package/dist/browser/layout/refresh-messages.js.map +1 -0
  252. package/dist/browser/layout/settings-messages.js +54 -0
  253. package/dist/browser/layout/settings-messages.js.map +1 -0
  254. package/dist/browser/layout/workspace-messages.js +56 -0
  255. package/dist/browser/layout/workspace-messages.js.map +1 -0
  256. package/dist/browser/surfaces/Avatar.js +5 -5
  257. package/dist/browser/surfaces/Avatar.js.map +1 -1
  258. package/dist/browser/surfaces/ResourceCard.js +4 -2
  259. package/dist/browser/surfaces/ResourceCard.js.map +1 -1
  260. package/dist/browser/surfaces/StatCell.js +18 -6
  261. package/dist/browser/surfaces/StatCell.js.map +1 -1
  262. package/dist/browser/surfaces/Tag.js +3 -3
  263. package/dist/browser/surfaces/Tag.js.map +1 -1
  264. package/dist/browser/surfaces/avatar-messages.js +26 -0
  265. package/dist/browser/surfaces/avatar-messages.js.map +1 -0
  266. package/dist/browser/surfaces/resource-messages.js +26 -0
  267. package/dist/browser/surfaces/resource-messages.js.map +1 -0
  268. package/dist/browser/widgets/Widget.js +6 -0
  269. package/dist/browser/widgets/Widget.js.map +1 -1
  270. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  271. package/dist/ssr/actions/FilterChip.js +3 -1
  272. package/dist/ssr/actions/FilterChip.js.map +1 -1
  273. package/dist/ssr/actions/SpotlightSearch.js +3 -1
  274. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  275. package/dist/ssr/actions/filter-messages.js +20 -0
  276. package/dist/ssr/actions/filter-messages.js.map +1 -0
  277. package/dist/ssr/actions/spotlight-messages.js +16 -0
  278. package/dist/ssr/actions/spotlight-messages.js.map +1 -0
  279. package/dist/ssr/chat/ChatComposer.js +47 -41
  280. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  281. package/dist/ssr/chat/ChatPrimitives.js +23 -21
  282. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  283. package/dist/ssr/chat/ChatRoot.js +3 -3
  284. package/dist/ssr/chat/ChatRoot.js.map +1 -1
  285. package/dist/ssr/chat/ChatTimeline.js +11 -11
  286. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  287. package/dist/ssr/chat/chat-messages.js +236 -0
  288. package/dist/ssr/chat/chat-messages.js.map +1 -0
  289. package/dist/ssr/content/Calendar.js +534 -346
  290. package/dist/ssr/content/Calendar.js.map +1 -1
  291. package/dist/ssr/content/CalendarDayView.js +800 -0
  292. package/dist/ssr/content/CalendarDayView.js.map +1 -0
  293. package/dist/ssr/content/CalendarWeekView.js +1069 -0
  294. package/dist/ssr/content/CalendarWeekView.js.map +1 -0
  295. package/dist/ssr/content/Chart.js +12 -5
  296. package/dist/ssr/content/Chart.js.map +1 -1
  297. package/dist/ssr/content/ChartExplorer.js +98 -37
  298. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  299. package/dist/ssr/content/ChartExplorerControls.js +9 -7
  300. package/dist/ssr/content/ChartExplorerControls.js.map +1 -1
  301. package/dist/ssr/content/ChartFilterControls.js +52 -8
  302. package/dist/ssr/content/ChartFilterControls.js.map +1 -1
  303. package/dist/ssr/content/ChartSnapshotView.js +3 -3
  304. package/dist/ssr/content/ChartSnapshotView.js.map +1 -1
  305. package/dist/ssr/content/DataTable.js +77 -53
  306. package/dist/ssr/content/DataTable.js.map +1 -1
  307. package/dist/ssr/content/Docs.js +3 -1
  308. package/dist/ssr/content/Docs.js.map +1 -1
  309. package/dist/ssr/content/FileBrowser.js +30 -26
  310. package/dist/ssr/content/FileBrowser.js.map +1 -1
  311. package/dist/ssr/content/FileTree.js +9 -7
  312. package/dist/ssr/content/FileTree.js.map +1 -1
  313. package/dist/ssr/content/FileView.js +37 -28
  314. package/dist/ssr/content/FileView.js.map +1 -1
  315. package/dist/ssr/content/Lightbox.js +8 -6
  316. package/dist/ssr/content/Lightbox.js.map +1 -1
  317. package/dist/ssr/content/LogEntriesTable.js +3 -3
  318. package/dist/ssr/content/LogEntriesTable.js.map +1 -1
  319. package/dist/ssr/content/MessageRow.js +24 -22
  320. package/dist/ssr/content/MessageRow.js.map +1 -1
  321. package/dist/ssr/content/Pagination.js +6 -6
  322. package/dist/ssr/content/Pagination.js.map +1 -1
  323. package/dist/ssr/content/PdfPreview.js +15 -13
  324. package/dist/ssr/content/PdfPreview.js.map +1 -1
  325. package/dist/ssr/content/RangePicker.js +3 -1
  326. package/dist/ssr/content/RangePicker.js.map +1 -1
  327. package/dist/ssr/content/StructuredDataPreview.js +3 -1
  328. package/dist/ssr/content/StructuredDataPreview.js.map +1 -1
  329. package/dist/ssr/content/Timeline.js +13 -11
  330. package/dist/ssr/content/Timeline.js.map +1 -1
  331. package/dist/ssr/content/VideoPlayer.js +5 -5
  332. package/dist/ssr/content/VideoPlayer.js.map +1 -1
  333. package/dist/ssr/content/VirtualFeed.js +6 -4
  334. package/dist/ssr/content/VirtualFeed.js.map +1 -1
  335. package/dist/ssr/content/ZoomPanViewport.js +7 -4
  336. package/dist/ssr/content/ZoomPanViewport.js.map +1 -1
  337. package/dist/ssr/content/calendar-day-scroll.js +98 -0
  338. package/dist/ssr/content/calendar-day-scroll.js.map +1 -0
  339. package/dist/ssr/content/calendar-days.js +408 -0
  340. package/dist/ssr/content/calendar-days.js.map +1 -0
  341. package/dist/ssr/content/calendar-dialogs.js +159 -0
  342. package/dist/ssr/content/calendar-dialogs.js.map +1 -0
  343. package/dist/ssr/content/calendar-messages.js +249 -3
  344. package/dist/ssr/content/calendar-messages.js.map +1 -1
  345. package/dist/ssr/content/calendar-pointer.js +19 -6
  346. package/dist/ssr/content/calendar-pointer.js.map +1 -1
  347. package/dist/ssr/content/calendar-shared.js +261 -0
  348. package/dist/ssr/content/calendar-shared.js.map +1 -0
  349. package/dist/ssr/content/calendar-time-view.js +1306 -0
  350. package/dist/ssr/content/calendar-time-view.js.map +1 -0
  351. package/dist/ssr/content/chart-messages.js +146 -0
  352. package/dist/ssr/content/chart-messages.js.map +1 -0
  353. package/dist/ssr/content/collection-selection.js +2 -0
  354. package/dist/ssr/content/collection-selection.js.map +1 -1
  355. package/dist/ssr/content/data-table-messages.js +24 -0
  356. package/dist/ssr/content/data-table-messages.js.map +1 -0
  357. package/dist/ssr/content/docs-messages.js +24 -0
  358. package/dist/ssr/content/docs-messages.js.map +1 -0
  359. package/dist/ssr/content/feed-messages.js +34 -0
  360. package/dist/ssr/content/feed-messages.js.map +1 -0
  361. package/dist/ssr/content/file-browser-messages.js +69 -0
  362. package/dist/ssr/content/file-browser-messages.js.map +1 -0
  363. package/dist/ssr/content/file-view-messages.js +64 -0
  364. package/dist/ssr/content/file-view-messages.js.map +1 -0
  365. package/dist/ssr/content/index.js.map +1 -1
  366. package/dist/ssr/content/lightbox-messages.js +36 -0
  367. package/dist/ssr/content/lightbox-messages.js.map +1 -0
  368. package/dist/ssr/content/log-entries-messages.js +20 -0
  369. package/dist/ssr/content/log-entries-messages.js.map +1 -0
  370. package/dist/ssr/content/markdown-info-block-messages.js +24 -0
  371. package/dist/ssr/content/markdown-info-block-messages.js.map +1 -0
  372. package/dist/ssr/content/markdown-info-blocks.js +3 -3
  373. package/dist/ssr/content/markdown-info-blocks.js.map +1 -1
  374. package/dist/ssr/content/markdown-links.js +2 -2
  375. package/dist/ssr/content/markdown-links.js.map +1 -1
  376. package/dist/ssr/content/markdown-reference-messages.js +30 -0
  377. package/dist/ssr/content/markdown-reference-messages.js.map +1 -0
  378. package/dist/ssr/content/pagination-messages.js +38 -0
  379. package/dist/ssr/content/pagination-messages.js.map +1 -0
  380. package/dist/ssr/content/pdf-messages.js +43 -0
  381. package/dist/ssr/content/pdf-messages.js.map +1 -0
  382. package/dist/ssr/content/range-picker-messages.js +20 -0
  383. package/dist/ssr/content/range-picker-messages.js.map +1 -0
  384. package/dist/ssr/content/structured-data-messages.js +22 -0
  385. package/dist/ssr/content/structured-data-messages.js.map +1 -0
  386. package/dist/ssr/content/timeline-messages.js +62 -0
  387. package/dist/ssr/content/timeline-messages.js.map +1 -0
  388. package/dist/ssr/content/video-messages.js +24 -0
  389. package/dist/ssr/content/video-messages.js.map +1 -0
  390. package/dist/ssr/content/viewport-messages.js +28 -0
  391. package/dist/ssr/content/viewport-messages.js.map +1 -0
  392. package/dist/ssr/feedback/HoverPreview.js +34 -6
  393. package/dist/ssr/feedback/HoverPreview.js.map +1 -1
  394. package/dist/ssr/feedback/InstallGuide.js +18 -18
  395. package/dist/ssr/feedback/InstallGuide.js.map +1 -1
  396. package/dist/ssr/feedback/install-messages.js +104 -0
  397. package/dist/ssr/feedback/install-messages.js.map +1 -0
  398. package/dist/ssr/feedback/prompt-messages.js +65 -0
  399. package/dist/ssr/feedback/prompt-messages.js.map +1 -0
  400. package/dist/ssr/feedback/prompts.js +14 -11
  401. package/dist/ssr/feedback/prompts.js.map +1 -1
  402. package/dist/ssr/feedback/toast-messages.js +18 -0
  403. package/dist/ssr/feedback/toast-messages.js.map +1 -0
  404. package/dist/ssr/feedback/toast.js +4 -3
  405. package/dist/ssr/feedback/toast.js.map +1 -1
  406. package/dist/ssr/index.js +1 -1
  407. package/dist/ssr/index.js.map +1 -1
  408. package/dist/ssr/inputs/AutocompleteEditor.js +5 -3
  409. package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
  410. package/dist/ssr/inputs/AutocompleteSelect.js +10 -8
  411. package/dist/ssr/inputs/AutocompleteSelect.js.map +1 -1
  412. package/dist/ssr/inputs/ChoiceGroups.js +4 -0
  413. package/dist/ssr/inputs/ChoiceGroups.js.map +1 -1
  414. package/dist/ssr/inputs/ChoiceInputs.js +5 -5
  415. package/dist/ssr/inputs/ChoiceInputs.js.map +1 -1
  416. package/dist/ssr/inputs/Combobox.js +3 -1
  417. package/dist/ssr/inputs/Combobox.js.map +1 -1
  418. package/dist/ssr/inputs/FileDropTarget.js +6 -6
  419. package/dist/ssr/inputs/FileDropTarget.js.map +1 -1
  420. package/dist/ssr/inputs/FileInputs.js +29 -20
  421. package/dist/ssr/inputs/FileInputs.js.map +1 -1
  422. package/dist/ssr/inputs/MultiSelectInput.js +7 -5
  423. package/dist/ssr/inputs/MultiSelectInput.js.map +1 -1
  424. package/dist/ssr/inputs/NumberInput.js +4 -2
  425. package/dist/ssr/inputs/NumberInput.js.map +1 -1
  426. package/dist/ssr/inputs/QrScanner.js +4 -4
  427. package/dist/ssr/inputs/QrScanner.js.map +1 -1
  428. package/dist/ssr/inputs/Select.js +7 -5
  429. package/dist/ssr/inputs/Select.js.map +1 -1
  430. package/dist/ssr/inputs/SelectChip.js +3 -3
  431. package/dist/ssr/inputs/SelectChip.js.map +1 -1
  432. package/dist/ssr/inputs/SignatureInput.js +9 -3
  433. package/dist/ssr/inputs/SignatureInput.js.map +1 -1
  434. package/dist/ssr/inputs/SpecialInputs.js +4 -2
  435. package/dist/ssr/inputs/SpecialInputs.js.map +1 -1
  436. package/dist/ssr/inputs/TagEditor.js +8 -6
  437. package/dist/ssr/inputs/TagEditor.js.map +1 -1
  438. package/dist/ssr/inputs/TagsInput.js +5 -5
  439. package/dist/ssr/inputs/TagsInput.js.map +1 -1
  440. package/dist/ssr/inputs/TemplateEditor.js +5 -5
  441. package/dist/ssr/inputs/TemplateEditor.js.map +1 -1
  442. package/dist/ssr/inputs/TextInput.js +3 -1
  443. package/dist/ssr/inputs/TextInput.js.map +1 -1
  444. package/dist/ssr/inputs/completion-messages.js +24 -0
  445. package/dist/ssr/inputs/completion-messages.js.map +1 -0
  446. package/dist/ssr/inputs/file-drop-messages.js +63 -0
  447. package/dist/ssr/inputs/file-drop-messages.js.map +1 -0
  448. package/dist/ssr/inputs/file-drop.js.map +1 -1
  449. package/dist/ssr/inputs/file-input-messages.js +60 -0
  450. package/dist/ssr/inputs/file-input-messages.js.map +1 -0
  451. package/dist/ssr/inputs/icon-messages.js +22 -0
  452. package/dist/ssr/inputs/icon-messages.js.map +1 -0
  453. package/dist/ssr/inputs/input-messages.js +38 -0
  454. package/dist/ssr/inputs/input-messages.js.map +1 -0
  455. package/dist/ssr/inputs/markdown/MarkdownEditor.js +9 -5
  456. package/dist/ssr/inputs/markdown/MarkdownEditor.js.map +1 -1
  457. package/dist/ssr/inputs/markdown/Toolbar.js +13 -13
  458. package/dist/ssr/inputs/markdown/Toolbar.js.map +1 -1
  459. package/dist/ssr/inputs/markdown/editor-messages.js +43 -0
  460. package/dist/ssr/inputs/markdown/editor-messages.js.map +1 -0
  461. package/dist/ssr/inputs/markdown/toolbar-messages.js +40 -0
  462. package/dist/ssr/inputs/markdown/toolbar-messages.js.map +1 -0
  463. package/dist/ssr/inputs/qr-messages.js +26 -0
  464. package/dist/ssr/inputs/qr-messages.js.map +1 -0
  465. package/dist/ssr/inputs/select-messages.js +63 -0
  466. package/dist/ssr/inputs/select-messages.js.map +1 -0
  467. package/dist/ssr/inputs/tag-messages.js +44 -0
  468. package/dist/ssr/inputs/tag-messages.js.map +1 -0
  469. package/dist/ssr/inputs/template-messages.js +22 -0
  470. package/dist/ssr/inputs/template-messages.js.map +1 -0
  471. package/dist/ssr/internal/render-error-messages.js +20 -0
  472. package/dist/ssr/internal/render-error-messages.js.map +1 -0
  473. package/dist/ssr/internal/render-error.js +3 -1
  474. package/dist/ssr/internal/render-error.js.map +1 -1
  475. package/dist/ssr/internal/text-selection.js +101 -0
  476. package/dist/ssr/internal/text-selection.js.map +1 -0
  477. package/dist/ssr/intl/messages.js +6 -1155
  478. package/dist/ssr/intl/messages.js.map +1 -1
  479. package/dist/ssr/layout/AppWorkspace.js +219 -103
  480. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  481. package/dist/ssr/layout/BottomSheet.js +1 -0
  482. package/dist/ssr/layout/BottomSheet.js.map +1 -1
  483. package/dist/ssr/layout/Discussion.js +8 -5
  484. package/dist/ssr/layout/Discussion.js.map +1 -1
  485. package/dist/ssr/layout/FloatingWindow.js +8 -5
  486. package/dist/ssr/layout/FloatingWindow.js.map +1 -1
  487. package/dist/ssr/layout/Navigation.js +6 -5
  488. package/dist/ssr/layout/Navigation.js.map +1 -1
  489. package/dist/ssr/layout/PageTitle.js +256 -0
  490. package/dist/ssr/layout/PageTitle.js.map +1 -0
  491. package/dist/ssr/layout/PanelDialog.js +8 -6
  492. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  493. package/dist/ssr/layout/Panes.js +22 -14
  494. package/dist/ssr/layout/Panes.js.map +1 -1
  495. package/dist/ssr/layout/PullToRefresh.js +13 -4
  496. package/dist/ssr/layout/PullToRefresh.js.map +1 -1
  497. package/dist/ssr/layout/Settings.js +14 -12
  498. package/dist/ssr/layout/Settings.js.map +1 -1
  499. package/dist/ssr/layout/SettingsCollection.js +6 -5
  500. package/dist/ssr/layout/SettingsCollection.js.map +1 -1
  501. package/dist/ssr/layout/SettingsModal.js +3 -1
  502. package/dist/ssr/layout/SettingsModal.js.map +1 -1
  503. package/dist/ssr/layout/app-workspace-controller.js +821 -12
  504. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  505. package/dist/ssr/layout/app-workspace-state.js +3 -2
  506. package/dist/ssr/layout/app-workspace-state.js.map +1 -1
  507. package/dist/ssr/layout/floating-window-messages.js +28 -0
  508. package/dist/ssr/layout/floating-window-messages.js.map +1 -0
  509. package/dist/ssr/layout/index.js +2 -0
  510. package/dist/ssr/layout/index.js.map +1 -1
  511. package/dist/ssr/layout/navigation-model.js.map +1 -1
  512. package/dist/ssr/layout/page-title-controller.js +169 -0
  513. package/dist/ssr/layout/page-title-controller.js.map +1 -0
  514. package/dist/ssr/layout/panel-dialog-messages.js +20 -0
  515. package/dist/ssr/layout/panel-dialog-messages.js.map +1 -0
  516. package/dist/ssr/layout/panes-messages.js +48 -0
  517. package/dist/ssr/layout/panes-messages.js.map +1 -0
  518. package/dist/ssr/layout/refresh-messages.js +20 -0
  519. package/dist/ssr/layout/refresh-messages.js.map +1 -0
  520. package/dist/ssr/layout/settings-messages.js +54 -0
  521. package/dist/ssr/layout/settings-messages.js.map +1 -0
  522. package/dist/ssr/layout/workspace-messages.js +56 -0
  523. package/dist/ssr/layout/workspace-messages.js.map +1 -0
  524. package/dist/ssr/surfaces/Avatar.js +5 -5
  525. package/dist/ssr/surfaces/Avatar.js.map +1 -1
  526. package/dist/ssr/surfaces/ResourceCard.js +4 -2
  527. package/dist/ssr/surfaces/ResourceCard.js.map +1 -1
  528. package/dist/ssr/surfaces/StatCell.js +2 -2
  529. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  530. package/dist/ssr/surfaces/Tag.js +3 -3
  531. package/dist/ssr/surfaces/Tag.js.map +1 -1
  532. package/dist/ssr/surfaces/avatar-messages.js +26 -0
  533. package/dist/ssr/surfaces/avatar-messages.js.map +1 -0
  534. package/dist/ssr/surfaces/resource-messages.js +26 -0
  535. package/dist/ssr/surfaces/resource-messages.js.map +1 -0
  536. package/dist/ssr/widgets/Widget.js +6 -0
  537. package/dist/ssr/widgets/Widget.js.map +1 -1
  538. package/dist/styles.css +1 -1
  539. package/dist/types/actions/filter-messages.d.ts +8 -0
  540. package/dist/types/actions/spotlight-messages.d.ts +8 -0
  541. package/dist/types/chat/chat-messages.d.ts +116 -0
  542. package/dist/types/content/Calendar.d.ts +91 -0
  543. package/dist/types/content/CalendarDayView.d.ts +7 -0
  544. package/dist/types/content/CalendarWeekView.d.ts +7 -0
  545. package/dist/types/content/ChartExplorer.d.ts +36 -1
  546. package/dist/types/content/ChartFilterControls.d.ts +6 -1
  547. package/dist/types/content/DataTable.d.ts +7 -0
  548. package/dist/types/content/FileView.d.ts +0 -10
  549. package/dist/types/content/calendar-day-scroll.d.ts +42 -0
  550. package/dist/types/content/calendar-days.d.ts +192 -0
  551. package/dist/types/content/calendar-dialogs.d.ts +22 -0
  552. package/dist/types/content/calendar-messages.d.ts +119 -1
  553. package/dist/types/content/calendar-pointer.d.ts +9 -0
  554. package/dist/types/content/calendar-shared.d.ts +69 -0
  555. package/dist/types/content/calendar-time-view.d.ts +252 -0
  556. package/dist/types/content/chart-messages.d.ts +37 -0
  557. package/dist/types/content/data-table-messages.d.ts +10 -0
  558. package/dist/types/content/docs-messages.d.ts +10 -0
  559. package/dist/types/content/feed-messages.d.ts +15 -0
  560. package/dist/types/content/file-browser-messages.d.ts +33 -0
  561. package/dist/types/content/file-view-messages.d.ts +30 -0
  562. package/dist/types/content/index.d.ts +2 -2
  563. package/dist/types/content/lightbox-messages.d.ts +16 -0
  564. package/dist/types/content/log-entries-messages.d.ts +8 -0
  565. package/dist/types/content/markdown-info-block-messages.d.ts +12 -0
  566. package/dist/types/content/markdown-reference-messages.d.ts +15 -0
  567. package/dist/types/content/pagination-messages.d.ts +17 -0
  568. package/dist/types/content/pdf-messages.d.ts +20 -0
  569. package/dist/types/content/range-picker-messages.d.ts +8 -0
  570. package/dist/types/content/structured-data-messages.d.ts +9 -0
  571. package/dist/types/content/timeline-messages.d.ts +29 -0
  572. package/dist/types/content/video-messages.d.ts +10 -0
  573. package/dist/types/content/viewport-messages.d.ts +12 -0
  574. package/dist/types/feedback/install-messages.d.ts +50 -0
  575. package/dist/types/feedback/prompt-messages.d.ts +31 -0
  576. package/dist/types/feedback/toast-messages.d.ts +9 -0
  577. package/dist/types/index.d.ts +1 -0
  578. package/dist/types/inputs/completion-messages.d.ts +10 -0
  579. package/dist/types/inputs/file-drop-messages.d.ts +30 -0
  580. package/dist/types/inputs/file-drop.d.ts +3 -3
  581. package/dist/types/inputs/file-input-messages.d.ts +28 -0
  582. package/dist/types/inputs/icon-messages.d.ts +9 -0
  583. package/dist/types/inputs/input-messages.d.ts +17 -0
  584. package/dist/types/inputs/markdown/editor-messages.d.ts +20 -0
  585. package/dist/types/inputs/markdown/toolbar-messages.d.ts +18 -0
  586. package/dist/types/inputs/qr-messages.d.ts +11 -0
  587. package/dist/types/inputs/select-messages.d.ts +30 -0
  588. package/dist/types/inputs/tag-messages.d.ts +20 -0
  589. package/dist/types/inputs/template-messages.d.ts +9 -0
  590. package/dist/types/internal/render-error-messages.d.ts +8 -0
  591. package/dist/types/internal/text-selection.d.ts +18 -0
  592. package/dist/types/intl/messages.d.ts +3 -544
  593. package/dist/types/layout/AppWorkspace.d.ts +42 -5
  594. package/dist/types/layout/PageTitle.d.ts +65 -0
  595. package/dist/types/layout/app-workspace-controller.d.ts +12 -0
  596. package/dist/types/layout/app-workspace-state.d.ts +3 -2
  597. package/dist/types/layout/floating-window-messages.d.ts +12 -0
  598. package/dist/types/layout/index.d.ts +3 -0
  599. package/dist/types/layout/navigation-model.d.ts +7 -0
  600. package/dist/types/layout/page-title-controller.d.ts +13 -0
  601. package/dist/types/layout/panel-dialog-messages.d.ts +8 -0
  602. package/dist/types/layout/panes-messages.d.ts +22 -0
  603. package/dist/types/layout/refresh-messages.d.ts +8 -0
  604. package/dist/types/layout/settings-messages.d.ts +25 -0
  605. package/dist/types/layout/workspace-messages.d.ts +26 -0
  606. package/dist/types/surfaces/StatCell.d.ts +5 -0
  607. package/dist/types/surfaces/avatar-messages.d.ts +11 -0
  608. package/dist/types/surfaces/resource-messages.d.ts +11 -0
  609. package/dist/types/widgets/Widget.d.ts +5 -1
  610. package/package.json +1 -1
@@ -1,9 +1,9 @@
1
1
  import { template as _$template } from "solid-js/web";
2
2
  import { delegateEvents as _$delegateEvents } from "solid-js/web";
3
3
  import { addEventListener as _$addEventListener } from "solid-js/web";
4
+ import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
4
5
  import { getNextMarker as _$getNextMarker } from "solid-js/web";
5
6
  import { use as _$use } from "solid-js/web";
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";
9
9
  import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
@@ -20,54 +20,65 @@ var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspac
20
20
  _tmpl$2 = /*#__PURE__*/_$template(`<div>`),
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
- _tmpl$5 = /*#__PURE__*/_$template(`<aside>`),
24
- _tmpl$6 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-desktop>`),
25
- _tmpl$7 = /*#__PURE__*/_$template(`<script>`),
26
- _tmpl$8 = /*#__PURE__*/_$template(`<footer>`),
27
- _tmpl$9 = /*#__PURE__*/_$template(`<span aria-hidden=true><i>`),
28
- _tmpl$0 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-section-count>`),
29
- _tmpl$1 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-section-toggle><!$><!/><i aria-hidden=true>`),
30
- _tmpl$10 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-section-actions>`),
31
- _tmpl$11 = /*#__PURE__*/_$template(`<header class=k2b-app-workspace__sidebar-section-header><!$><!/><!$><!/>`),
32
- _tmpl$12 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-section-content>`),
33
- _tmpl$13 = /*#__PURE__*/_$template(`<h2>`),
34
- _tmpl$14 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-item-actions>`),
35
- _tmpl$15 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-mention aria-hidden=true>@`),
36
- _tmpl$16 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-muted aria-hidden=true><i class="ti ti-bell-off">`),
37
- _tmpl$17 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-count>`),
38
- _tmpl$18 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status><!$><!/><!$><!/><span class=k2b-app-workspace__sidebar-status-unread aria-hidden=true></span><span class=k2b-sr-only>, <!$><!/>`),
39
- _tmpl$19 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-dot>`),
40
- _tmpl$20 = /*#__PURE__*/_$template(`<button type=button>`),
41
- _tmpl$21 = /*#__PURE__*/_$template(`<a>`),
42
- _tmpl$22 = /*#__PURE__*/_$template(`<div><!$><!/><!$><!/>`),
43
- _tmpl$23 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true>`),
44
- _tmpl$24 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context-meta>`),
45
- _tmpl$25 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context><span class=k2b-app-workspace__sidebar-item-context-label></span><!$><!/>`),
46
- _tmpl$26 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-description>`),
47
- _tmpl$27 = /*#__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><!$><!/>`),
48
- _tmpl$28 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
49
- _tmpl$29 = /*#__PURE__*/_$template(`<i>`),
50
- _tmpl$30 = /*#__PURE__*/_$template(`<a class=k2b-app-workspace__sidebar-item-action>`),
51
- _tmpl$31 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-item-action>`),
52
- _tmpl$32 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon><i>`),
53
- _tmpl$33 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text>`),
54
- _tmpl$34 = /*#__PURE__*/_$template(`<span>`),
55
- _tmpl$35 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__nav-tree-toggle data-k2b-nav-tree-toggle aria-hidden=true><i>`),
56
- _tmpl$36 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-group role=group>`),
57
- _tmpl$37 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-node role=treeitem><!$><!/><!$><!/>`),
58
- _tmpl$38 = /*#__PURE__*/_$template(`<div role=tree>`),
59
- _tmpl$39 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-icon-grid>`),
60
- _tmpl$40 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
61
- _tmpl$41 = /*#__PURE__*/_$template(`<div data-k2b-app-workspace>`);
23
+ _tmpl$5 = /*#__PURE__*/_$template(`<style>`),
24
+ _tmpl$6 = /*#__PURE__*/_$template(`<aside><button type=button class=k2b-app-workspace__detail-grabber aria-pressed=false><span aria-hidden=true></span></button><!$><!/>`),
25
+ _tmpl$7 = /*#__PURE__*/_$template(`<aside>`),
26
+ _tmpl$8 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-desktop>`),
27
+ _tmpl$9 = /*#__PURE__*/_$template(`<script>`),
28
+ _tmpl$0 = /*#__PURE__*/_$template(`<footer>`),
29
+ _tmpl$1 = /*#__PURE__*/_$template(`<span aria-hidden=true><i>`),
30
+ _tmpl$10 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-section-count>`),
31
+ _tmpl$11 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-section-toggle><!$><!/><i aria-hidden=true>`),
32
+ _tmpl$12 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-section-actions>`),
33
+ _tmpl$13 = /*#__PURE__*/_$template(`<header class=k2b-app-workspace__sidebar-section-header><!$><!/><!$><!/>`),
34
+ _tmpl$14 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-section-content>`),
35
+ _tmpl$15 = /*#__PURE__*/_$template(`<h2>`),
36
+ _tmpl$16 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-item-actions>`),
37
+ _tmpl$17 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-mention aria-hidden=true>@`),
38
+ _tmpl$18 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-muted aria-hidden=true><i class="ti ti-bell-off">`),
39
+ _tmpl$19 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-count>`),
40
+ _tmpl$20 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status><!$><!/><!$><!/><span class=k2b-app-workspace__sidebar-status-unread aria-hidden=true></span><span class=k2b-sr-only>, <!$><!/>`),
41
+ _tmpl$21 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-dot>`),
42
+ _tmpl$22 = /*#__PURE__*/_$template(`<button type=button>`),
43
+ _tmpl$23 = /*#__PURE__*/_$template(`<a>`),
44
+ _tmpl$24 = /*#__PURE__*/_$template(`<div><!$><!/><!$><!/>`),
45
+ _tmpl$25 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true>`),
46
+ _tmpl$26 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context-meta>`),
47
+ _tmpl$27 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context><span class=k2b-app-workspace__sidebar-item-context-label></span><!$><!/>`),
48
+ _tmpl$28 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-description>`),
49
+ _tmpl$29 = /*#__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><!$><!/>`),
50
+ _tmpl$30 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
51
+ _tmpl$31 = /*#__PURE__*/_$template(`<i>`),
52
+ _tmpl$32 = /*#__PURE__*/_$template(`<a class=k2b-app-workspace__sidebar-item-action>`),
53
+ _tmpl$33 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-item-action>`),
54
+ _tmpl$34 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon><i>`),
55
+ _tmpl$35 = /*#__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><span class=k2b-app-workspace__sidebar-item-description>`),
56
+ _tmpl$36 = /*#__PURE__*/_$template(`<span>`),
57
+ _tmpl$37 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__nav-tree-toggle data-k2b-nav-tree-toggle aria-hidden=true><i>`),
58
+ _tmpl$38 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text>`),
59
+ _tmpl$39 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-group role=group>`),
60
+ _tmpl$40 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-node role=treeitem><!$><!/><!$><!/>`),
61
+ _tmpl$41 = /*#__PURE__*/_$template(`<div role=tree>`),
62
+ _tmpl$42 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-icon-grid>`),
63
+ _tmpl$43 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
64
+ _tmpl$44 = /*#__PURE__*/_$template(`<i class="ti ti-layout-sidebar"aria-hidden=true>`),
65
+ _tmpl$45 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__head><!$><!/><!$><!/>`),
66
+ _tmpl$46 = /*#__PURE__*/_$template(`<h1 class=k2b-app-workspace__head-heading data-k2b-page-trail-title>`),
67
+ _tmpl$47 = /*#__PURE__*/_$template(`<div data-k2b-app-workspace><!$><!/><!$><!/>`);
62
68
  import { Link } from "@k2b/ssr/nav";
63
69
  import { children, createContext, createEffect, createMemo, createSignal, createUniqueId, For, mergeProps, onCleanup, onMount, Show, useContext } from "solid-js";
64
- import { useUiMessages } from "../intl/messages";
65
- import { APP_WORKSPACE_SIDEBAR_HIDE_EVENT, installAppWorkspaceController } from "./app-workspace-controller";
70
+ import { isServer } from "solid-js/web";
71
+ import { IconButton } from "../actions/Button";
72
+ import { APP_WORKSPACE_DETAIL_CLOSE_EVENT, APP_WORKSPACE_DETAIL_STEP_EVENT, APP_WORKSPACE_SIDEBAR_HIDE_EVENT, installAppWorkspaceController } from "./app-workspace-controller";
66
73
  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";
74
+ import { PageTitle, usePageTrail } from "./PageTitle";
67
75
  import { SidebarItemPreview } from "./SidebarItemPreview";
68
76
  import { createScrollFade } from "./scroll-fade";
69
77
  import { assertStableUiId, assertUniqueStableUiIds } from "./stable-id";
78
+ import { useWorkspaceMessages } from "./workspace-messages";
70
79
  const ResizeContext = createContext(true);
80
+ /** The enclosing workspace: its head names the sidebar, and a nested workspace leaves the page title to it. */
81
+ const WorkspaceContext = createContext();
71
82
  const LayoutStateContext = createContext(null);
72
83
  const MAIN_PANE = Symbol("AppWorkspace.MainPane");
73
84
  const SIDEBAR_DESKTOP = Symbol("AppWorkspace.SidebarDesktop");
@@ -89,11 +100,11 @@ const sidebarChildSlot = value => Boolean(value && typeof value === "object" &&
89
100
  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));
90
101
  const navTreeItemSlot = value => Boolean(value && typeof value === "object" && "kind" in value && value.kind === NAV_TREE_ITEM);
91
102
  function ResizeHandle(props) {
92
- const messages = useUiMessages();
103
+ const workspaceMessages = useWorkspaceMessages();
93
104
  return (() => {
94
105
  var _el$ = _$getNextElement(_tmpl$);
95
106
  _$effect(_p$ => {
96
- var _v$ = props.label ?? (props.kind === "sidebar" ? messages().resizeNavigation : props.kind === "pane" ? messages().resizeWorkspacePane : props.kind === "detail" ? messages().resizeDetailPanel : messages().resizeBottomDrawer),
107
+ var _v$ = props.label ?? (props.kind === "sidebar" ? workspaceMessages().resizeNavigation : props.kind === "pane" ? workspaceMessages().resizeWorkspacePane : props.kind === "detail" ? workspaceMessages().resizeDetailPanel : workspaceMessages().resizeBottomDrawer),
97
108
  _v$2 = props.controls,
98
109
  _v$3 = props.kind === "drawer" ? "horizontal" : "vertical",
99
110
  _v$4 = props.minSize,
@@ -320,7 +331,8 @@ function AppWorkspaceMain(props) {
320
331
  _v$20 = pane.props.scroll === false ? "false" : undefined,
321
332
  _v$21 = pane.props.scroll !== false && pane.props.scrollFade !== false ? "both" : undefined,
322
333
  _v$22 = isAnchor() ? undefined : {
323
- "--k2b-workspace-panel-size": `var(${variable}, ${defaultSize()}px)`
334
+ "--k2b-workspace-panel-size": `var(${variable}, ${defaultSize()}px)`,
335
+ "--k2b-workspace-panel-min": `${minSize()}px`
324
336
  };
325
337
  _v$13 !== _p$.e && _$setAttribute(_el$4, "id", _p$.e = _v$13);
326
338
  _v$14 !== _p$.t && _$className(_el$4, _p$.t = _v$14);
@@ -365,15 +377,16 @@ function AppWorkspaceMain(props) {
365
377
  })();
366
378
  }
367
379
  function AppWorkspaceDetail(props) {
380
+ const workspaceMessages = useWorkspaceMessages();
368
381
  const rootResizable = useContext(ResizeContext);
369
382
  const panelId = () => assertStableUiId(props.id, "AppWorkspace.Detail id");
370
383
  const domId = () => `k2b-workspace-detail-${panelId()}`;
371
384
  const variable = () => appWorkspacePanelVariable("detail", panelId());
372
- // Cloud's `detailDefaultWidth`. These feed `aria-valuenow` and the
385
+ // Start widths of 20, 26, 30, and 34 rem. They feed `aria-valuenow` and the
373
386
  // `var(…, Npx)` first-paint fallback, so they are behaviour, not taste.
374
387
  const widths = {
375
- sm: 288,
376
- md: 384,
388
+ sm: 320,
389
+ md: 416,
377
390
  lg: 480,
378
391
  xl: 544
379
392
  };
@@ -381,7 +394,41 @@ function AppWorkspaceDetail(props) {
381
394
  const minWidth = () => props.minWidth ?? APP_WORKSPACE_DETAIL_MIN;
382
395
  const maxWidth = () => Math.max(minWidth(), props.maxWidth ?? APP_WORKSPACE_DETAIL_MAX);
383
396
  const resizable = () => props.resizable ?? rootResizable;
384
- return [_$createComponent(Show, {
397
+ const size = () => resizable() ? `var(${variable()}, ${defaultWidth()}px)` : `${defaultWidth()}px`;
398
+ const sizeStyle = () => ({
399
+ "--k2b-workspace-panel-size": size(),
400
+ "--k2b-workspace-panel-min": `${minWidth()}px`,
401
+ "--k2b-workspace-panel-max": `${maxWidth()}px`
402
+ });
403
+ // An open panel takes a column at the workspace's end, sized in CSS alone,
404
+ // so a server-rendered page arrives in its final geometry. The workspace
405
+ // cannot read the panel's own variables, so this rule hands the open
406
+ // panel's size to its workspace.
407
+ const workspaceRule = () => {
408
+ const open = `#${domId()}:not([hidden])`;
409
+ return `.k2b-app-workspace:has(> .k2b-app-workspace__content > ${open}, > .k2b-app-workspace__content > :is(solid-island, solid-client) > ${open}){--k2b-detail-size:${size()};--k2b-detail-min:${minWidth()}px;--k2b-detail-max:${maxWidth()}px}`;
410
+ };
411
+ let aside;
412
+ onMount(() => {
413
+ const close = () => props.onClose?.();
414
+ const isStep = detail => typeof detail === "object" && detail !== null && "direction" in detail && (detail.direction === 1 || detail.direction === -1);
415
+ const step = event => {
416
+ if (!(event instanceof CustomEvent) || !isStep(event.detail)) return;
417
+ const item = props.onStep?.(event.detail.direction);
418
+ if (item instanceof HTMLElement) event.detail.item = item;
419
+ };
420
+ aside?.addEventListener(APP_WORKSPACE_DETAIL_CLOSE_EVENT, close);
421
+ aside?.addEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);
422
+ onCleanup(() => {
423
+ aside?.removeEventListener(APP_WORKSPACE_DETAIL_CLOSE_EVENT, close);
424
+ aside?.removeEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);
425
+ });
426
+ });
427
+ return [(() => {
428
+ var _el$5 = _$getNextElement(_tmpl$5);
429
+ _$effect(() => _$setProperty(_el$5, "innerHTML", workspaceRule()));
430
+ return _el$5;
431
+ })(), _$createComponent(Show, {
385
432
  get when() {
386
433
  return resizable();
387
434
  },
@@ -404,34 +451,43 @@ function AppWorkspaceDetail(props) {
404
451
  get maxSize() {
405
452
  return maxWidth();
406
453
  },
407
- shadow: true,
408
454
  get style() {
409
- return {
410
- "--k2b-workspace-panel-size": `var(${variable()}, ${defaultWidth()}px)`
411
- };
455
+ return sizeStyle();
412
456
  }
413
457
  });
414
458
  }
415
459
  }), (() => {
416
- var _el$5 = _$getNextElement(_tmpl$5);
417
- _$insert(_el$5, () => props.children);
460
+ var _el$6 = _$getNextElement(_tmpl$6),
461
+ _el$7 = _el$6.firstChild,
462
+ _el$8 = _el$7.nextSibling,
463
+ [_el$9, _co$] = _$getNextMarker(_el$8.nextSibling);
464
+ var _ref$ = aside;
465
+ typeof _ref$ === "function" ? _$use(_ref$, _el$6) : aside = _el$6;
466
+ _$insert(_el$6, () => props.children, _el$9, _co$);
418
467
  _$effect(_p$ => {
419
468
  var _v$23 = domId(),
420
469
  _v$24 = `k2b-app-workspace__detail ${props.class ?? ""}`,
421
470
  _v$25 = props.width ?? "md",
422
471
  _v$26 = panelId(),
423
472
  _v$27 = resizable() ? "true" : "false",
424
- _v$28 = !props.open,
425
- _v$29 = `var(${variable()}, ${defaultWidth()}px)`,
426
- _v$30 = props.viewTransitionName;
427
- _v$23 !== _p$.e && _$setAttribute(_el$5, "id", _p$.e = _v$23);
428
- _v$24 !== _p$.t && _$className(_el$5, _p$.t = _v$24);
429
- _v$25 !== _p$.a && _$setAttribute(_el$5, "data-width", _p$.a = _v$25);
430
- _v$26 !== _p$.o && _$setAttribute(_el$5, "data-workspace-panel-id", _p$.o = _v$26);
431
- _v$27 !== _p$.i && _$setAttribute(_el$5, "data-workspace-resizable", _p$.i = _v$27);
432
- _v$28 !== _p$.n && _$setProperty(_el$5, "hidden", _p$.n = _v$28);
433
- _v$29 !== _p$.s && _$setStyleProperty(_el$5, "--k2b-workspace-panel-size", _p$.s = _v$29);
434
- _v$30 !== _p$.h && _$setStyleProperty(_el$5, "view-transition-name", _p$.h = _v$30);
473
+ _v$28 = props.onClose ? "true" : undefined,
474
+ _v$29 = props.onStep ? "true" : undefined,
475
+ _v$30 = !props.open,
476
+ _v$31 = {
477
+ ...sizeStyle(),
478
+ "view-transition-name": props.viewTransitionName
479
+ },
480
+ _v$32 = workspaceMessages().detailFullHeight;
481
+ _v$23 !== _p$.e && _$setAttribute(_el$6, "id", _p$.e = _v$23);
482
+ _v$24 !== _p$.t && _$className(_el$6, _p$.t = _v$24);
483
+ _v$25 !== _p$.a && _$setAttribute(_el$6, "data-width", _p$.a = _v$25);
484
+ _v$26 !== _p$.o && _$setAttribute(_el$6, "data-workspace-panel-id", _p$.o = _v$26);
485
+ _v$27 !== _p$.i && _$setAttribute(_el$6, "data-workspace-resizable", _p$.i = _v$27);
486
+ _v$28 !== _p$.n && _$setAttribute(_el$6, "data-workspace-detail-closable", _p$.n = _v$28);
487
+ _v$29 !== _p$.s && _$setAttribute(_el$6, "data-workspace-detail-steppable", _p$.s = _v$29);
488
+ _v$30 !== _p$.h && _$setProperty(_el$6, "hidden", _p$.h = _v$30);
489
+ _p$.r = _$style(_el$6, _v$31, _p$.r);
490
+ _v$32 !== _p$.d && _$setAttribute(_el$7, "aria-label", _p$.d = _v$32);
435
491
  return _p$;
436
492
  }, {
437
493
  e: undefined,
@@ -441,9 +497,11 @@ function AppWorkspaceDetail(props) {
441
497
  i: undefined,
442
498
  n: undefined,
443
499
  s: undefined,
444
- h: undefined
500
+ h: undefined,
501
+ r: undefined,
502
+ d: undefined
445
503
  });
446
- return _el$5;
504
+ return _el$6;
447
505
  })()];
448
506
  }
449
507
  function AppWorkspaceBottomDrawer(props) {
@@ -493,25 +551,25 @@ function AppWorkspaceBottomDrawer(props) {
493
551
  });
494
552
  }
495
553
  }), (() => {
496
- var _el$6 = _$getNextElement(_tmpl$5);
497
- _$insert(_el$6, () => props.children);
554
+ var _el$0 = _$getNextElement(_tmpl$7);
555
+ _$insert(_el$0, () => props.children);
498
556
  _$effect(_p$ => {
499
- var _v$31 = domId(),
500
- _v$32 = `k2b-app-workspace__drawer ${props.class ?? ""}`,
501
- _v$33 = props.height ?? "md",
502
- _v$34 = panelId(),
503
- _v$35 = resizable() ? "true" : "false",
504
- _v$36 = !props.open,
505
- _v$37 = `var(${variable()}, ${defaultHeight()}px)`,
506
- _v$38 = props.viewTransitionName;
507
- _v$31 !== _p$.e && _$setAttribute(_el$6, "id", _p$.e = _v$31);
508
- _v$32 !== _p$.t && _$className(_el$6, _p$.t = _v$32);
509
- _v$33 !== _p$.a && _$setAttribute(_el$6, "data-height", _p$.a = _v$33);
510
- _v$34 !== _p$.o && _$setAttribute(_el$6, "data-workspace-panel-id", _p$.o = _v$34);
511
- _v$35 !== _p$.i && _$setAttribute(_el$6, "data-workspace-resizable", _p$.i = _v$35);
512
- _v$36 !== _p$.n && _$setProperty(_el$6, "hidden", _p$.n = _v$36);
513
- _v$37 !== _p$.s && _$setStyleProperty(_el$6, "--k2b-workspace-panel-size", _p$.s = _v$37);
514
- _v$38 !== _p$.h && _$setStyleProperty(_el$6, "view-transition-name", _p$.h = _v$38);
557
+ var _v$33 = domId(),
558
+ _v$34 = `k2b-app-workspace__drawer ${props.class ?? ""}`,
559
+ _v$35 = props.height ?? "md",
560
+ _v$36 = panelId(),
561
+ _v$37 = resizable() ? "true" : "false",
562
+ _v$38 = !props.open,
563
+ _v$39 = `var(${variable()}, ${defaultHeight()}px)`,
564
+ _v$40 = props.viewTransitionName;
565
+ _v$33 !== _p$.e && _$setAttribute(_el$0, "id", _p$.e = _v$33);
566
+ _v$34 !== _p$.t && _$className(_el$0, _p$.t = _v$34);
567
+ _v$35 !== _p$.a && _$setAttribute(_el$0, "data-height", _p$.a = _v$35);
568
+ _v$36 !== _p$.o && _$setAttribute(_el$0, "data-workspace-panel-id", _p$.o = _v$36);
569
+ _v$37 !== _p$.i && _$setAttribute(_el$0, "data-workspace-resizable", _p$.i = _v$37);
570
+ _v$38 !== _p$.n && _$setProperty(_el$0, "hidden", _p$.n = _v$38);
571
+ _v$39 !== _p$.s && _$setStyleProperty(_el$0, "--k2b-workspace-panel-size", _p$.s = _v$39);
572
+ _v$40 !== _p$.h && _$setStyleProperty(_el$0, "view-transition-name", _p$.h = _v$40);
515
573
  return _p$;
516
574
  }, {
517
575
  e: undefined,
@@ -523,7 +581,7 @@ function AppWorkspaceBottomDrawer(props) {
523
581
  s: undefined,
524
582
  h: undefined
525
583
  });
526
- return _el$6;
584
+ return _el$0;
527
585
  })()];
528
586
  }
529
587
  function AppWorkspaceSidebar(props) {
@@ -532,8 +590,11 @@ function AppWorkspaceSidebar(props) {
532
590
  const defaultSize = () => props.defaultSize ?? APP_WORKSPACE_SIDEBAR_DEFAULT;
533
591
  const minSize = () => props.minSize ?? (props.collapsible ? APP_WORKSPACE_SIDEBAR_COLLAPSED : APP_WORKSPACE_SIDEBAR_MIN);
534
592
  const maxSize = () => props.maxSize ?? APP_WORKSPACE_SIDEBAR_MAX;
593
+ const workspace = useContext(WorkspaceContext);
535
594
  const generatedId = createUniqueId();
536
- const domId = () => props.id ?? `k2b-workspace-sidebar-${generatedId}`;
595
+ const domId = () => props.id ?? workspace?.sidebarId ?? `k2b-workspace-sidebar-${generatedId}`;
596
+ // The head's navigation button names this sidebar.
597
+ createEffect(() => workspace?.setSidebarId(domId()));
537
598
  // Hidden navigation is not rendered at all, so its labels are neither shown
538
599
  // nor reachable; reading the children lazily keeps them from being created.
539
600
  const resolved = children(() => props.hidden ? undefined : props.children);
@@ -546,36 +607,36 @@ function AppWorkspaceSidebar(props) {
546
607
  onCleanup(() => aside?.removeEventListener(APP_WORKSPACE_SIDEBAR_HIDE_EVENT, requestHide));
547
608
  });
548
609
  return [(() => {
549
- var _el$7 = _$getNextElement(_tmpl$5);
550
- var _ref$ = aside;
551
- typeof _ref$ === "function" ? _$use(_ref$, _el$7) : aside = _el$7;
552
- _$insert(_el$7, _$createComponent(Show, {
610
+ var _el$1 = _$getNextElement(_tmpl$7);
611
+ var _ref$2 = aside;
612
+ typeof _ref$2 === "function" ? _$use(_ref$2, _el$1) : aside = _el$1;
613
+ _$insert(_el$1, _$createComponent(Show, {
553
614
  get when() {
554
615
  return !props.hidden;
555
616
  },
556
617
  get children() {
557
- var _el$8 = _$getNextElement(_tmpl$6);
558
- _$insert(_el$8, () => desktop()?.children);
559
- return _el$8;
618
+ var _el$10 = _$getNextElement(_tmpl$8);
619
+ _$insert(_el$10, () => desktop()?.children);
620
+ return _el$10;
560
621
  }
561
622
  }));
562
623
  _$effect(_p$ => {
563
- var _v$39 = domId(),
564
- _v$40 = `k2b-app-workspace__sidebar ${props.class ?? ""}`,
565
- _v$41 = props.label,
566
- _v$42 = props.hidden || undefined,
567
- _v$43 = props.mobile === "stacked" ? "stacked" : undefined,
568
- _v$44 = resizable() ? "true" : "false",
569
- _v$45 = props.collapsible ? "true" : "false",
570
- _v$46 = props.onHiddenChange ? "true" : undefined;
571
- _v$39 !== _p$.e && _$setAttribute(_el$7, "id", _p$.e = _v$39);
572
- _v$40 !== _p$.t && _$className(_el$7, _p$.t = _v$40);
573
- _v$41 !== _p$.a && _$setAttribute(_el$7, "aria-label", _p$.a = _v$41);
574
- _v$42 !== _p$.o && _$setProperty(_el$7, "hidden", _p$.o = _v$42);
575
- _v$43 !== _p$.i && _$setAttribute(_el$7, "data-mobile", _p$.i = _v$43);
576
- _v$44 !== _p$.n && _$setAttribute(_el$7, "data-workspace-resizable", _p$.n = _v$44);
577
- _v$45 !== _p$.s && _$setAttribute(_el$7, "data-workspace-collapsible", _p$.s = _v$45);
578
- _v$46 !== _p$.h && _$setAttribute(_el$7, "data-workspace-hideable", _p$.h = _v$46);
624
+ var _v$41 = domId(),
625
+ _v$42 = `k2b-app-workspace__sidebar ${props.class ?? ""}`,
626
+ _v$43 = props.label,
627
+ _v$44 = props.hidden || undefined,
628
+ _v$45 = props.mobile === "stacked" ? "stacked" : undefined,
629
+ _v$46 = resizable() ? "true" : "false",
630
+ _v$47 = props.collapsible ? "true" : "false",
631
+ _v$48 = props.onHiddenChange ? "true" : undefined;
632
+ _v$41 !== _p$.e && _$setAttribute(_el$1, "id", _p$.e = _v$41);
633
+ _v$42 !== _p$.t && _$className(_el$1, _p$.t = _v$42);
634
+ _v$43 !== _p$.a && _$setAttribute(_el$1, "aria-label", _p$.a = _v$43);
635
+ _v$44 !== _p$.o && _$setProperty(_el$1, "hidden", _p$.o = _v$44);
636
+ _v$45 !== _p$.i && _$setAttribute(_el$1, "data-mobile", _p$.i = _v$45);
637
+ _v$46 !== _p$.n && _$setAttribute(_el$1, "data-workspace-resizable", _p$.n = _v$46);
638
+ _v$47 !== _p$.s && _$setAttribute(_el$1, "data-workspace-collapsible", _p$.s = _v$47);
639
+ _v$48 !== _p$.h && _$setAttribute(_el$1, "data-workspace-hideable", _p$.h = _v$48);
579
640
  return _p$;
580
641
  }, {
581
642
  e: undefined,
@@ -587,7 +648,7 @@ function AppWorkspaceSidebar(props) {
587
648
  s: undefined,
588
649
  h: undefined
589
650
  });
590
- return _el$7;
651
+ return _el$1;
591
652
  })(), _$createComponent(Show, {
592
653
  get when() {
593
654
  return _$memo(() => !!resizable())() && !props.hidden;
@@ -625,19 +686,20 @@ const AppWorkspaceSidebarDesktop = props => ({
625
686
  // hydrates. Islands load asynchronously and server-only sidebars never mount,
626
687
  // so `onMount` would be too late or never run. The memory is one
627
688
  // `sessionStorage` entry per path segment and sidebar position and ends with
628
- // the tab. A stored offset is applied first; the current item is then kept in
629
- // view, which is a no-op when the offset already shows it. The frame callback
689
+ // the tab. A stored offset is applied first; the current item, or on a deeper
690
+ // page the item that contains it, is then kept in view, which is a no-op when
691
+ // the offset already shows it. The frame callback
630
692
  // repeats the restore once the whole document is parsed, because content that
631
693
  // follows the sidebar can still change its height before the first paint.
632
- const SIDEBAR_SCROLL_MEMORY_SCRIPT = ["(function(){", "var body=document.currentScript&&document.currentScript.previousElementSibling;if(!body)return;", "var storage;try{storage=window.sessionStorage}catch(_){return}", 'var key="k2b-sidebar-scroll:"+location.pathname.split("/")[1]+":"+document.querySelectorAll(".k2b-app-workspace__sidebar-body").length;', "var restore=function(){", "var stored=storage.getItem(key);if(stored!==null)body.scrollTop=Number(stored);", 'var current=body.querySelector(\'[aria-current="page"]\');if(current)current.scrollIntoView({block:"nearest"});', "};", "restore();requestAnimationFrame(restore);", "var frame=0;", 'body.addEventListener("scroll",function(){if(frame)return;frame=requestAnimationFrame(function(){frame=0;try{storage.setItem(key,String(body.scrollTop))}catch(_){}})},{passive:true});', "})();"].join("");
694
+ const SIDEBAR_SCROLL_MEMORY_SCRIPT = ["(function(){", "var body=document.currentScript&&document.currentScript.previousElementSibling;if(!body)return;", "var storage;try{storage=window.sessionStorage}catch(_){return}", 'var key="k2b-sidebar-scroll:"+location.pathname.split("/")[1]+":"+document.querySelectorAll(".k2b-app-workspace__sidebar-body").length;', "var restore=function(){", "var stored=storage.getItem(key);if(stored!==null)body.scrollTop=Number(stored);", 'var current=body.querySelector(\'[aria-current="page"]\')||body.querySelector(\'[aria-current="true"]\');if(current)current.scrollIntoView({block:"nearest"});', "};", "restore();requestAnimationFrame(restore);", "var frame=0;", 'body.addEventListener("scroll",function(){if(frame)return;frame=requestAnimationFrame(function(){frame=0;try{storage.setItem(key,String(body.scrollTop))}catch(_){}})},{passive:true});', "})();"].join("");
633
695
  const AppWorkspaceSidebarBody = props => {
634
696
  let body;
635
697
  createScrollFade(() => body, () => props.scrollFade !== false);
636
698
  return [(() => {
637
- var _el$9 = _$getNextElement(_tmpl$2);
638
- var _ref$2 = body;
639
- typeof _ref$2 === "function" ? _$use(_ref$2, _el$9) : body = _el$9;
640
- _$spread(_el$9, _$mergeProps({
699
+ var _el$11 = _$getNextElement(_tmpl$2);
700
+ var _ref$3 = body;
701
+ typeof _ref$3 === "function" ? _$use(_ref$3, _el$11) : body = _el$11;
702
+ _$spread(_el$11, _$mergeProps({
641
703
  get ["class"]() {
642
704
  return `k2b-app-workspace__sidebar-body ${props.class ?? ""}`;
643
705
  },
@@ -645,25 +707,25 @@ const AppWorkspaceSidebarBody = props => {
645
707
  return props.scrollFade !== false ? "both" : undefined;
646
708
  }
647
709
  }, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), false, true);
648
- _$insert(_el$9, () => props.children);
710
+ _$insert(_el$11, () => props.children);
649
711
  _$runHydrationEvents();
650
- return _el$9;
712
+ return _el$11;
651
713
  })(), (() => {
652
- var _el$0 = _$getNextElement(_tmpl$7);
653
- _$setProperty(_el$0, "innerHTML", SIDEBAR_SCROLL_MEMORY_SCRIPT);
654
- return _el$0;
714
+ var _el$12 = _$getNextElement(_tmpl$9);
715
+ _$setProperty(_el$12, "innerHTML", SIDEBAR_SCROLL_MEMORY_SCRIPT);
716
+ return _el$12;
655
717
  })()];
656
718
  };
657
719
  const AppWorkspaceSidebarFooter = props => (() => {
658
- var _el$1 = _$getNextElement(_tmpl$8);
659
- _$spread(_el$1, _$mergeProps({
720
+ var _el$13 = _$getNextElement(_tmpl$0);
721
+ _$spread(_el$13, _$mergeProps({
660
722
  get ["class"]() {
661
723
  return `k2b-app-workspace__sidebar-footer ${props.class ?? ""}`;
662
724
  }
663
725
  }, () => modeAttrs(props.sidebarMode)), false, true);
664
- _$insert(_el$1, () => props.children);
726
+ _$insert(_el$13, () => props.children);
665
727
  _$runHydrationEvents();
666
- return _el$1;
728
+ return _el$13;
667
729
  })();
668
730
  const AppWorkspaceSidebarSection = props => {
669
731
  const [expanded, setExpanded] = createSignal(props.defaultOpen ?? true);
@@ -674,27 +736,27 @@ const AppWorkspaceSidebarSection = props => {
674
736
  return props.icon;
675
737
  },
676
738
  get children() {
677
- var _el$10 = _$getNextElement(_tmpl$9),
678
- _el$11 = _el$10.firstChild;
679
- _$effect(() => _$className(_el$11, iconClass(props.icon)));
680
- return _el$10;
739
+ var _el$14 = _$getNextElement(_tmpl$1),
740
+ _el$15 = _el$14.firstChild;
741
+ _$effect(() => _$className(_el$15, iconClass(props.icon)));
742
+ return _el$14;
681
743
  }
682
744
  }), _$memo(() => props.title), _$createComponent(Show, {
683
745
  get when() {
684
746
  return props.count !== undefined;
685
747
  },
686
748
  get children() {
687
- var _el$12 = _$getNextElement(_tmpl$0);
688
- _$insert(_el$12, () => props.count);
689
- return _el$12;
749
+ var _el$16 = _$getNextElement(_tmpl$10);
750
+ _$insert(_el$16, () => props.count);
751
+ return _el$16;
690
752
  }
691
753
  })];
692
754
  return (() => {
693
- var _el$13 = _$getNextElement(_tmpl$12),
694
- _el$25 = _el$13.firstChild,
695
- [_el$26, _co$4] = _$getNextMarker(_el$25.nextSibling),
696
- _el$24 = _el$26.nextSibling;
697
- _$spread(_el$13, _$mergeProps({
755
+ var _el$17 = _$getNextElement(_tmpl$14),
756
+ _el$29 = _el$17.firstChild,
757
+ [_el$30, _co$5] = _$getNextMarker(_el$29.nextSibling),
758
+ _el$28 = _el$30.nextSibling;
759
+ _$spread(_el$17, _$mergeProps({
698
760
  get ["class"]() {
699
761
  return `k2b-app-workspace__sidebar-section ${props.class ?? ""}`;
700
762
  },
@@ -702,17 +764,17 @@ const AppWorkspaceSidebarSection = props => {
702
764
  return props.collapsible ? "true" : undefined;
703
765
  }
704
766
  }, () => modeAttrs(props.sidebarMode)), false, true);
705
- _$insert(_el$13, _$createComponent(Show, {
767
+ _$insert(_el$17, _$createComponent(Show, {
706
768
  get when() {
707
769
  return props.title || props.actions;
708
770
  },
709
771
  get children() {
710
- var _el$14 = _$getNextElement(_tmpl$11),
711
- _el$20 = _el$14.firstChild,
712
- [_el$21, _co$2] = _$getNextMarker(_el$20.nextSibling),
713
- _el$22 = _el$21.nextSibling,
714
- [_el$23, _co$3] = _$getNextMarker(_el$22.nextSibling);
715
- _$insert(_el$14, _$createComponent(Show, {
772
+ var _el$18 = _$getNextElement(_tmpl$13),
773
+ _el$24 = _el$18.firstChild,
774
+ [_el$25, _co$3] = _$getNextMarker(_el$24.nextSibling),
775
+ _el$26 = _el$25.nextSibling,
776
+ [_el$27, _co$4] = _$getNextMarker(_el$26.nextSibling);
777
+ _$insert(_el$18, _$createComponent(Show, {
716
778
  get when() {
717
779
  return props.collapsible;
718
780
  },
@@ -722,56 +784,56 @@ const AppWorkspaceSidebarSection = props => {
722
784
  return props.title;
723
785
  },
724
786
  get children() {
725
- var _el$27 = _$getNextElement(_tmpl$13);
726
- _$insert(_el$27, title);
727
- return _el$27;
787
+ var _el$31 = _$getNextElement(_tmpl$15);
788
+ _$insert(_el$31, title);
789
+ return _el$31;
728
790
  }
729
791
  });
730
792
  },
731
793
  get children() {
732
- var _el$15 = _$getNextElement(_tmpl$1),
733
- _el$17 = _el$15.firstChild,
734
- [_el$18, _co$] = _$getNextMarker(_el$17.nextSibling),
735
- _el$16 = _el$18.nextSibling;
736
- _el$15.$$click = () => {
794
+ var _el$19 = _$getNextElement(_tmpl$11),
795
+ _el$21 = _el$19.firstChild,
796
+ [_el$22, _co$2] = _$getNextMarker(_el$21.nextSibling),
797
+ _el$20 = _el$22.nextSibling;
798
+ _el$19.$$click = () => {
737
799
  const next = !open();
738
800
  setExpanded(next);
739
801
  props.onOpenChange?.(next);
740
802
  };
741
- _$setAttribute(_el$15, "aria-controls", id);
742
- _$insert(_el$15, title, _el$18, _co$);
803
+ _$setAttribute(_el$19, "aria-controls", id);
804
+ _$insert(_el$19, title, _el$22, _co$2);
743
805
  _$effect(_p$ => {
744
- var _v$47 = open(),
745
- _v$48 = open() ? "ti ti-chevron-down" : "ti ti-chevron-right";
746
- _v$47 !== _p$.e && _$setAttribute(_el$15, "aria-expanded", _p$.e = _v$47);
747
- _v$48 !== _p$.t && _$className(_el$16, _p$.t = _v$48);
806
+ var _v$49 = open(),
807
+ _v$50 = open() ? "ti ti-chevron-down" : "ti ti-chevron-right";
808
+ _v$49 !== _p$.e && _$setAttribute(_el$19, "aria-expanded", _p$.e = _v$49);
809
+ _v$50 !== _p$.t && _$className(_el$20, _p$.t = _v$50);
748
810
  return _p$;
749
811
  }, {
750
812
  e: undefined,
751
813
  t: undefined
752
814
  });
753
815
  _$runHydrationEvents();
754
- return _el$15;
816
+ return _el$19;
755
817
  }
756
- }), _el$21, _co$2);
757
- _$insert(_el$14, _$createComponent(Show, {
818
+ }), _el$25, _co$3);
819
+ _$insert(_el$18, _$createComponent(Show, {
758
820
  get when() {
759
821
  return props.actions;
760
822
  },
761
823
  get children() {
762
- var _el$19 = _$getNextElement(_tmpl$10);
763
- _$insert(_el$19, () => props.actions);
764
- return _el$19;
824
+ var _el$23 = _$getNextElement(_tmpl$12);
825
+ _$insert(_el$23, () => props.actions);
826
+ return _el$23;
765
827
  }
766
- }), _el$23, _co$3);
767
- return _el$14;
828
+ }), _el$27, _co$4);
829
+ return _el$18;
768
830
  }
769
- }), _el$26, _co$4);
770
- _$setAttribute(_el$24, "id", id);
771
- _$insert(_el$24, () => props.children);
772
- _$effect(() => _$setProperty(_el$24, "hidden", !open()));
831
+ }), _el$30, _co$5);
832
+ _$setAttribute(_el$28, "id", id);
833
+ _$insert(_el$28, () => props.children);
834
+ _$effect(() => _$setProperty(_el$28, "hidden", !open()));
773
835
  _$runHydrationEvents();
774
- return _el$13;
836
+ return _el$17;
775
837
  })();
776
838
  };
777
839
  const AppWorkspaceSidebarItemIcon = props => mergeProps({
@@ -787,20 +849,21 @@ const AppWorkspaceSidebarItemAction = props => mergeProps({
787
849
  kind: SIDEBAR_ITEM_ACTION
788
850
  }, props);
789
851
  const AppWorkspaceSidebarItemActions = props => (() => {
790
- var _el$28 = _$getNextElement(_tmpl$14);
791
- _$insert(_el$28, () => props.children);
792
- _$effect(() => _$setAttribute(_el$28, "data-visibility", props.visibility === "hover" ? "hover" : undefined));
793
- return _el$28;
852
+ var _el$32 = _$getNextElement(_tmpl$16);
853
+ _$insert(_el$32, () => props.children);
854
+ _$effect(() => _$setAttribute(_el$32, "data-visibility", props.visibility === "hover" ? "hover" : undefined));
855
+ return _el$32;
794
856
  })();
795
857
  const AppWorkspaceSidebarItemStatus = props => {
796
- const messages = useUiMessages();
797
- const count = () => typeof props.unread === "number" && props.unread >= 1 ? Math.floor(props.unread) : 0;
798
- const dot = () => props.unread === true;
858
+ const workspaceMessages = useWorkspaceMessages();
859
+ const waiting = () => props.waiting && Number.isFinite(props.waiting.count) ? Math.max(0, Math.floor(props.waiting.count)) : null;
860
+ const count = () => waiting() ?? (typeof props.unread === "number" && props.unread >= 1 ? Math.floor(props.unread) : 0);
861
+ const dot = () => waiting() === null && props.unread === true;
799
862
  // The marks are decorative; the row's accessible name gets one phrase instead,
800
863
  // which says no more than the "99+" a capped count shows.
801
- const description = () => [count() > 99 ? messages().sidebarUnreadMany : count() ? messages().sidebarUnread({
864
+ const description = () => [waiting() !== null ? props.waiting?.label ?? "" : count() > 99 ? workspaceMessages().sidebarUnreadMany : count() ? workspaceMessages().sidebarUnread({
802
865
  count: count()
803
- }) : dot() ? messages().sidebarNewActivity : "", props.mention ? messages().sidebarMentioned : "", props.muted ? messages().sidebarMuted : ""].filter(Boolean).join(", ");
866
+ }) : dot() ? workspaceMessages().sidebarNewActivity : "", props.mention ? workspaceMessages().sidebarMentioned : "", props.muted ? workspaceMessages().sidebarMuted : ""].filter(Boolean).join(", ");
804
867
  // The unread slot stays reserved at the end, and the marks that change most
805
868
  // often sit outermost, so new activity or a mention never moves another mark.
806
869
  return _$createComponent(Show, {
@@ -808,35 +871,35 @@ const AppWorkspaceSidebarItemStatus = props => {
808
871
  return description();
809
872
  },
810
873
  get children() {
811
- var _el$29 = _$getNextElement(_tmpl$18),
812
- _el$38 = _el$29.firstChild,
813
- [_el$39, _co$6] = _$getNextMarker(_el$38.nextSibling),
874
+ var _el$33 = _$getNextElement(_tmpl$20),
875
+ _el$42 = _el$33.firstChild,
876
+ [_el$43, _co$7] = _$getNextMarker(_el$42.nextSibling),
877
+ _el$44 = _el$43.nextSibling,
878
+ [_el$45, _co$8] = _$getNextMarker(_el$44.nextSibling),
879
+ _el$36 = _el$45.nextSibling,
880
+ _el$38 = _el$36.nextSibling,
881
+ _el$39 = _el$38.firstChild,
814
882
  _el$40 = _el$39.nextSibling,
815
- [_el$41, _co$7] = _$getNextMarker(_el$40.nextSibling),
816
- _el$32 = _el$41.nextSibling,
817
- _el$34 = _el$32.nextSibling,
818
- _el$35 = _el$34.firstChild,
819
- _el$36 = _el$35.nextSibling,
820
- [_el$37, _co$5] = _$getNextMarker(_el$36.nextSibling);
821
- _$insert(_el$29, _$createComponent(Show, {
883
+ [_el$41, _co$6] = _$getNextMarker(_el$40.nextSibling);
884
+ _$insert(_el$33, _$createComponent(Show, {
822
885
  get when() {
823
886
  return props.mention;
824
887
  },
825
888
  get children() {
826
- return _$getNextElement(_tmpl$15);
889
+ return _$getNextElement(_tmpl$17);
827
890
  }
828
- }), _el$39, _co$6);
829
- _$insert(_el$29, _$createComponent(Show, {
891
+ }), _el$43, _co$7);
892
+ _$insert(_el$33, _$createComponent(Show, {
830
893
  get when() {
831
894
  return props.muted;
832
895
  },
833
896
  get children() {
834
- return _$getNextElement(_tmpl$16);
897
+ return _$getNextElement(_tmpl$18);
835
898
  }
836
- }), _el$41, _co$7);
837
- _$insert(_el$32, _$createComponent(Show, {
899
+ }), _el$45, _co$8);
900
+ _$insert(_el$36, _$createComponent(Show, {
838
901
  get when() {
839
- return count();
902
+ return count() || waiting() === 0;
840
903
  },
841
904
  get fallback() {
842
905
  return _$createComponent(Show, {
@@ -844,23 +907,32 @@ const AppWorkspaceSidebarItemStatus = props => {
844
907
  return dot();
845
908
  },
846
909
  get children() {
847
- return _$getNextElement(_tmpl$19);
910
+ return _$getNextElement(_tmpl$21);
848
911
  }
849
912
  });
850
913
  },
851
914
  get children() {
852
- var _el$33 = _$getNextElement(_tmpl$17);
853
- _$insert(_el$33, (() => {
915
+ var _el$37 = _$getNextElement(_tmpl$19);
916
+ _$insert(_el$37, (() => {
854
917
  var _c$ = _$memo(() => count() > 99);
855
918
  return () => _c$() ? "99+" : count();
856
919
  })());
857
- _$effect(() => _$setAttribute(_el$33, "data-mention", props.mention ? "true" : undefined));
858
- return _el$33;
920
+ _$effect(() => _$setAttribute(_el$37, "data-mention", props.mention ? "true" : undefined));
921
+ return _el$37;
859
922
  }
860
923
  }));
861
- _$insert(_el$34, description, _el$37, _co$5);
862
- _$effect(() => _$setAttribute(_el$29, "data-unread", count() ? "count" : dot() ? "dot" : undefined));
863
- return _el$29;
924
+ _$insert(_el$38, description, _el$41, _co$6);
925
+ _$effect(_p$ => {
926
+ var _v$51 = waiting() !== null ? undefined : count() ? "count" : dot() ? "dot" : undefined,
927
+ _v$52 = waiting() === null ? undefined : waiting() ? "count" : "zero";
928
+ _v$51 !== _p$.e && _$setAttribute(_el$33, "data-unread", _p$.e = _v$51);
929
+ _v$52 !== _p$.t && _$setAttribute(_el$33, "data-waiting", _p$.t = _v$52);
930
+ return _p$;
931
+ }, {
932
+ e: undefined,
933
+ t: undefined
934
+ });
935
+ return _el$33;
864
936
  }
865
937
  });
866
938
  };
@@ -878,7 +950,7 @@ function AppWorkspaceSidebarRow(props) {
878
950
  },
879
951
  ...data()
880
952
  });
881
- const current = () => props.active ? "page" : undefined;
953
+ const current = () => props.active === "ancestor" ? "true" : props.active ? "page" : undefined;
882
954
  const Control = control => {
883
955
  const attrs = () => control.grouped ? {
884
956
  class: "k2b-app-workspace__sidebar-item-main"
@@ -889,8 +961,8 @@ function AppWorkspaceSidebarRow(props) {
889
961
  },
890
962
  get fallback() {
891
963
  return (() => {
892
- var _el$43 = _$getNextElement(_tmpl$20);
893
- _$spread(_el$43, _$mergeProps(attrs, {
964
+ var _el$47 = _$getNextElement(_tmpl$22);
965
+ _$spread(_el$47, _$mergeProps(attrs, {
894
966
  get tabIndex() {
895
967
  return props.tabIndex;
896
968
  },
@@ -901,9 +973,9 @@ function AppWorkspaceSidebarRow(props) {
901
973
  return props.onClick;
902
974
  }
903
975
  }), false, true);
904
- _$insert(_el$43, () => props.children);
976
+ _$insert(_el$47, () => props.children);
905
977
  _$runHydrationEvents();
906
- return _el$43;
978
+ return _el$47;
907
979
  })();
908
980
  },
909
981
  get children() {
@@ -913,8 +985,8 @@ function AppWorkspaceSidebarRow(props) {
913
985
  },
914
986
  get fallback() {
915
987
  return (() => {
916
- var _el$44 = _$getNextElement(_tmpl$21);
917
- _$spread(_el$44, _$mergeProps({
988
+ var _el$48 = _$getNextElement(_tmpl$23);
989
+ _$spread(_el$48, _$mergeProps({
918
990
  get href() {
919
991
  return props.href;
920
992
  }
@@ -929,9 +1001,9 @@ function AppWorkspaceSidebarRow(props) {
929
1001
  return props.onClick;
930
1002
  }
931
1003
  }), false, true);
932
- _$insert(_el$44, () => props.children);
1004
+ _$insert(_el$48, () => props.children);
933
1005
  _$runHydrationEvents();
934
- return _el$44;
1006
+ return _el$48;
935
1007
  })();
936
1008
  },
937
1009
  get children() {
@@ -977,27 +1049,27 @@ function AppWorkspaceSidebarRow(props) {
977
1049
  });
978
1050
  },
979
1051
  get children() {
980
- var _el$45 = _$getNextElement(_tmpl$22),
981
- _el$46 = _el$45.firstChild,
982
- [_el$47, _co$8] = _$getNextMarker(_el$46.nextSibling),
983
- _el$48 = _el$47.nextSibling,
984
- [_el$49, _co$9] = _$getNextMarker(_el$48.nextSibling);
985
- _$spread(_el$45, _$mergeProps(common, {
1052
+ var _el$49 = _$getNextElement(_tmpl$24),
1053
+ _el$50 = _el$49.firstChild,
1054
+ [_el$51, _co$9] = _$getNextMarker(_el$50.nextSibling),
1055
+ _el$52 = _el$51.nextSibling,
1056
+ [_el$53, _co$0] = _$getNextMarker(_el$52.nextSibling);
1057
+ _$spread(_el$49, _$mergeProps(common, {
986
1058
  get ["data-disabled"]() {
987
1059
  return props.disabled ? "true" : undefined;
988
1060
  }
989
1061
  }), false, true);
990
- _$insert(_el$45, _$createComponent(Control, {
1062
+ _$insert(_el$49, _$createComponent(Control, {
991
1063
  grouped: true
992
- }), _el$47, _co$8);
993
- _$insert(_el$45, () => props.actions, _el$49, _co$9);
1064
+ }), _el$51, _co$9);
1065
+ _$insert(_el$49, () => props.actions, _el$53, _co$0);
994
1066
  _$runHydrationEvents();
995
- return _el$45;
1067
+ return _el$49;
996
1068
  }
997
1069
  });
998
1070
  }
999
1071
  function AppWorkspaceSidebarItem(props) {
1000
- const messages = useUiMessages();
1072
+ const workspaceMessages = useWorkspaceMessages();
1001
1073
  const resolved = children(() => props.children);
1002
1074
  const resolvedActions = children(() => props.actions);
1003
1075
  const values = createMemo(() => flatten(resolved()));
@@ -1024,80 +1096,80 @@ function AppWorkspaceSidebarItem(props) {
1024
1096
  return iconContent() || icon();
1025
1097
  },
1026
1098
  get children() {
1027
- var _el$50 = _$getNextElement(_tmpl$23);
1028
- _$insert(_el$50, () => iconContent() ?? (() => {
1029
- var _el$65 = _$getNextElement(_tmpl$29);
1030
- _$effect(() => _$className(_el$65, iconClass(icon())));
1031
- return _el$65;
1099
+ var _el$54 = _$getNextElement(_tmpl$25);
1100
+ _$insert(_el$54, () => iconContent() ?? (() => {
1101
+ var _el$69 = _$getNextElement(_tmpl$31);
1102
+ _$effect(() => _$className(_el$69, iconClass(icon())));
1103
+ return _el$69;
1032
1104
  })());
1033
- return _el$50;
1105
+ return _el$54;
1034
1106
  }
1035
1107
  }), (() => {
1036
- var _el$51 = _$getNextElement(_tmpl$27),
1037
- _el$60 = _el$51.firstChild,
1038
- [_el$61, _co$1] = _$getNextMarker(_el$60.nextSibling),
1039
- _el$57 = _el$61.nextSibling,
1040
- _el$58 = _el$57.firstChild,
1041
- _el$62 = _el$57.nextSibling,
1042
- [_el$63, _co$10] = _$getNextMarker(_el$62.nextSibling);
1043
- _$insert(_el$51, _$createComponent(Show, {
1108
+ var _el$55 = _$getNextElement(_tmpl$29),
1109
+ _el$64 = _el$55.firstChild,
1110
+ [_el$65, _co$10] = _$getNextMarker(_el$64.nextSibling),
1111
+ _el$61 = _el$65.nextSibling,
1112
+ _el$62 = _el$61.firstChild,
1113
+ _el$66 = _el$61.nextSibling,
1114
+ [_el$67, _co$11] = _$getNextMarker(_el$66.nextSibling);
1115
+ _$insert(_el$55, _$createComponent(Show, {
1044
1116
  get when() {
1045
1117
  return props.context || props.contextMeta;
1046
1118
  },
1047
1119
  get children() {
1048
- var _el$52 = _$getNextElement(_tmpl$25),
1049
- _el$53 = _el$52.firstChild,
1050
- _el$55 = _el$53.nextSibling,
1051
- [_el$56, _co$0] = _$getNextMarker(_el$55.nextSibling);
1052
- _$insert(_el$53, () => props.context);
1053
- _$insert(_el$52, _$createComponent(Show, {
1120
+ var _el$56 = _$getNextElement(_tmpl$27),
1121
+ _el$57 = _el$56.firstChild,
1122
+ _el$59 = _el$57.nextSibling,
1123
+ [_el$60, _co$1] = _$getNextMarker(_el$59.nextSibling);
1124
+ _$insert(_el$57, () => props.context);
1125
+ _$insert(_el$56, _$createComponent(Show, {
1054
1126
  get when() {
1055
1127
  return props.contextMeta;
1056
1128
  },
1057
1129
  get children() {
1058
- var _el$54 = _$getNextElement(_tmpl$24);
1059
- _$insert(_el$54, () => props.contextMeta);
1060
- return _el$54;
1130
+ var _el$58 = _$getNextElement(_tmpl$26);
1131
+ _$insert(_el$58, () => props.contextMeta);
1132
+ return _el$58;
1061
1133
  }
1062
- }), _el$56, _co$0);
1063
- return _el$52;
1134
+ }), _el$60, _co$1);
1135
+ return _el$56;
1064
1136
  }
1065
- }), _el$61, _co$1);
1066
- _$insert(_el$58, () => label());
1067
- _$insert(_el$51, _$createComponent(Show, {
1137
+ }), _el$65, _co$10);
1138
+ _$insert(_el$62, () => label());
1139
+ _$insert(_el$55, _$createComponent(Show, {
1068
1140
  get when() {
1069
1141
  return props.description;
1070
1142
  },
1071
1143
  get children() {
1072
- var _el$59 = _$getNextElement(_tmpl$26);
1073
- _$insert(_el$59, () => props.description);
1074
- return _el$59;
1144
+ var _el$63 = _$getNextElement(_tmpl$28);
1145
+ _$insert(_el$63, () => props.description);
1146
+ return _el$63;
1075
1147
  }
1076
- }), _el$63, _co$10);
1077
- _$effect(() => _$setAttribute(_el$57, "data-marquee", labelSlot()?.marquee ?? (props.variant ?? "row") === "row" ? "true" : "false"));
1078
- return _el$51;
1148
+ }), _el$67, _co$11);
1149
+ _$effect(() => _$setAttribute(_el$61, "data-marquee", labelSlot()?.marquee ?? (props.variant ?? "row") === "row" ? "true" : "false"));
1150
+ return _el$55;
1079
1151
  })(), _$createComponent(Show, {
1080
1152
  get when() {
1081
1153
  return hasMeta();
1082
1154
  },
1083
1155
  get children() {
1084
- var _el$64 = _$getNextElement(_tmpl$28);
1085
- _$insert(_el$64, meta);
1156
+ var _el$68 = _$getNextElement(_tmpl$30);
1157
+ _$insert(_el$68, meta);
1086
1158
  _$effect(_p$ => {
1087
- var _v$49 = props.preview?.trigger === "row" ? metaId : undefined,
1088
- _v$50 = metaVisibility() === "hover" ? "hover" : undefined;
1089
- _v$49 !== _p$.e && _$setAttribute(_el$64, "id", _p$.e = _v$49);
1090
- _v$50 !== _p$.t && _$setAttribute(_el$64, "data-visibility", _p$.t = _v$50);
1159
+ var _v$53 = props.preview?.trigger === "row" ? metaId : undefined,
1160
+ _v$54 = metaVisibility() === "hover" ? "hover" : undefined;
1161
+ _v$53 !== _p$.e && _$setAttribute(_el$68, "id", _p$.e = _v$53);
1162
+ _v$54 !== _p$.t && _$setAttribute(_el$68, "data-visibility", _p$.t = _v$54);
1091
1163
  return _p$;
1092
1164
  }, {
1093
1165
  e: undefined,
1094
1166
  t: undefined
1095
1167
  });
1096
- return _el$64;
1168
+ return _el$68;
1097
1169
  }
1098
1170
  })];
1099
1171
  const singleAction = () => {
1100
- const label = () => actionSlot()?.label ?? props.actionLabel ?? messages().rowAction;
1172
+ const label = () => actionSlot()?.label ?? props.actionLabel ?? workspaceMessages().rowAction;
1101
1173
  const select = event => {
1102
1174
  event.stopPropagation();
1103
1175
  if (actionSlot()?.disabled) {
@@ -1109,9 +1181,9 @@ function AppWorkspaceSidebarItem(props) {
1109
1181
  props.onActionClick?.(event);
1110
1182
  };
1111
1183
  const content = () => actionSlot()?.children ?? (() => {
1112
- var _el$66 = _$getNextElement(_tmpl$29);
1113
- _$effect(() => _$className(_el$66, iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots")));
1114
- return _el$66;
1184
+ var _el$70 = _$getNextElement(_tmpl$31);
1185
+ _$effect(() => _$className(_el$70, iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots")));
1186
+ return _el$70;
1115
1187
  })();
1116
1188
  return _$createComponent(Show, {
1117
1189
  get when() {
@@ -1124,16 +1196,16 @@ function AppWorkspaceSidebarItem(props) {
1124
1196
  },
1125
1197
  get fallback() {
1126
1198
  return (() => {
1127
- var _el$68 = _$getNextElement(_tmpl$31);
1128
- _el$68.$$click = select;
1129
- _$insert(_el$68, content);
1199
+ var _el$72 = _$getNextElement(_tmpl$33);
1200
+ _el$72.$$click = select;
1201
+ _$insert(_el$72, content);
1130
1202
  _$effect(_p$ => {
1131
- var _v$54 = actionSlot()?.disabled,
1132
- _v$55 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1133
- _v$56 = label();
1134
- _v$54 !== _p$.e && _$setProperty(_el$68, "disabled", _p$.e = _v$54);
1135
- _v$55 !== _p$.t && _$setAttribute(_el$68, "data-visibility", _p$.t = _v$55);
1136
- _v$56 !== _p$.a && _$setAttribute(_el$68, "aria-label", _p$.a = _v$56);
1203
+ var _v$58 = actionSlot()?.disabled,
1204
+ _v$59 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1205
+ _v$60 = label();
1206
+ _v$58 !== _p$.e && _$setProperty(_el$72, "disabled", _p$.e = _v$58);
1207
+ _v$59 !== _p$.t && _$setAttribute(_el$72, "data-visibility", _p$.t = _v$59);
1208
+ _v$60 !== _p$.a && _$setAttribute(_el$72, "aria-label", _p$.a = _v$60);
1137
1209
  return _p$;
1138
1210
  }, {
1139
1211
  e: undefined,
@@ -1141,20 +1213,20 @@ function AppWorkspaceSidebarItem(props) {
1141
1213
  a: undefined
1142
1214
  });
1143
1215
  _$runHydrationEvents();
1144
- return _el$68;
1216
+ return _el$72;
1145
1217
  })();
1146
1218
  },
1147
1219
  get children() {
1148
- var _el$67 = _$getNextElement(_tmpl$30);
1149
- _el$67.$$click = select;
1150
- _$insert(_el$67, content);
1220
+ var _el$71 = _$getNextElement(_tmpl$32);
1221
+ _el$71.$$click = select;
1222
+ _$insert(_el$71, content);
1151
1223
  _$effect(_p$ => {
1152
- var _v$51 = actionSlot()?.href,
1153
- _v$52 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1154
- _v$53 = label();
1155
- _v$51 !== _p$.e && _$setAttribute(_el$67, "href", _p$.e = _v$51);
1156
- _v$52 !== _p$.t && _$setAttribute(_el$67, "data-visibility", _p$.t = _v$52);
1157
- _v$53 !== _p$.a && _$setAttribute(_el$67, "aria-label", _p$.a = _v$53);
1224
+ var _v$55 = actionSlot()?.href,
1225
+ _v$56 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1226
+ _v$57 = label();
1227
+ _v$55 !== _p$.e && _$setAttribute(_el$71, "href", _p$.e = _v$55);
1228
+ _v$56 !== _p$.t && _$setAttribute(_el$71, "data-visibility", _p$.t = _v$56);
1229
+ _v$57 !== _p$.a && _$setAttribute(_el$71, "aria-label", _p$.a = _v$57);
1158
1230
  return _p$;
1159
1231
  }, {
1160
1232
  e: undefined,
@@ -1162,7 +1234,7 @@ function AppWorkspaceSidebarItem(props) {
1162
1234
  a: undefined
1163
1235
  });
1164
1236
  _$runHydrationEvents();
1165
- return _el$67;
1237
+ return _el$71;
1166
1238
  }
1167
1239
  });
1168
1240
  }
@@ -1354,6 +1426,8 @@ const AppWorkspaceNavTree = props => {
1354
1426
  const selected = () => props.selectedId === item.id;
1355
1427
  const siblingIndex = id => siblings().findIndex(sibling => sibling.id === id);
1356
1428
  const movable = () => Boolean(props.onMove && item.movable && !item.disabled);
1429
+ // A folder that nobody selects: its row only expands and collapses it.
1430
+ const disclosureOnly = () => hasChildren() && !item.href && !item.onSelect && !props.onSelectedIdChange;
1357
1431
  let treeItem;
1358
1432
  const ownRow = () => treeItem?.firstElementChild;
1359
1433
 
@@ -1375,7 +1449,7 @@ const AppWorkspaceNavTree = props => {
1375
1449
  preventScroll: true
1376
1450
  });
1377
1451
  setFocusedId(item.id);
1378
- if (hasChildren() && !item.href && !item.onSelect && !props.onSelectedIdChange) {
1452
+ if (disclosureOnly()) {
1379
1453
  setExpanded(item.id, !isExpanded(item.id));
1380
1454
  return;
1381
1455
  }
@@ -1461,50 +1535,66 @@ const AppWorkspaceNavTree = props => {
1461
1535
  return rowIcon();
1462
1536
  },
1463
1537
  get children() {
1464
- var _el$69 = _$getNextElement(_tmpl$32),
1465
- _el$70 = _el$69.firstChild;
1466
- _$spread(_el$69, _$mergeProps({
1538
+ var _el$73 = _$getNextElement(_tmpl$34),
1539
+ _el$74 = _el$73.firstChild;
1540
+ _$spread(_el$73, _$mergeProps({
1467
1541
  get ["data-k2b-nav-tree-toggle"]() {
1468
1542
  return usesIconDisclosure() ? "" : undefined;
1469
1543
  }
1470
1544
  }, () => iconAccessibility(item.iconLabel)), false, true);
1471
- _$effect(() => _$className(_el$70, iconClass(rowIcon())));
1545
+ _$effect(() => _$className(_el$74, iconClass(rowIcon())));
1472
1546
  _$runHydrationEvents();
1473
- return _el$69;
1547
+ return _el$73;
1474
1548
  }
1475
- }), (() => {
1476
- var _el$71 = _$getNextElement(_tmpl$33),
1477
- _el$72 = _el$71.firstChild;
1478
- _$insert(_el$72, () => item.label);
1479
- return _el$71;
1480
- })(), _$createComponent(Show, {
1549
+ }), _$createComponent(Show, {
1550
+ get when() {
1551
+ return item.description !== undefined;
1552
+ },
1553
+ get fallback() {
1554
+ return (() => {
1555
+ var _el$82 = _$getNextElement(_tmpl$38),
1556
+ _el$83 = _el$82.firstChild;
1557
+ _$insert(_el$83, () => item.label);
1558
+ return _el$82;
1559
+ })();
1560
+ },
1561
+ get children() {
1562
+ var _el$75 = _$getNextElement(_tmpl$35),
1563
+ _el$76 = _el$75.firstChild,
1564
+ _el$77 = _el$76.firstChild,
1565
+ _el$78 = _el$76.nextSibling;
1566
+ _$insert(_el$77, () => item.label);
1567
+ _$insert(_el$78, () => item.description);
1568
+ return _el$75;
1569
+ }
1570
+ }), _$createComponent(Show, {
1481
1571
  get when() {
1482
1572
  return item.meta !== undefined;
1483
1573
  },
1484
1574
  get children() {
1485
- var _el$73 = _$getNextElement(_tmpl$34);
1486
- _$insert(_el$73, () => item.meta);
1575
+ var _el$79 = _$getNextElement(_tmpl$36);
1576
+ _$insert(_el$79, () => item.meta);
1487
1577
  _$effect(_p$ => {
1488
- var _v$57 = `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`,
1489
- _v$58 = item.metaVisibility === "hover" ? "hover" : undefined;
1490
- _v$57 !== _p$.e && _$className(_el$73, _p$.e = _v$57);
1491
- _v$58 !== _p$.t && _$setAttribute(_el$73, "data-visibility", _p$.t = _v$58);
1578
+ var _v$61 = `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`,
1579
+ _v$62 = item.metaVisibility === "hover" ? "hover" : undefined;
1580
+ _v$61 !== _p$.e && _$className(_el$79, _p$.e = _v$61);
1581
+ _v$62 !== _p$.t && _$setAttribute(_el$79, "data-visibility", _p$.t = _v$62);
1492
1582
  return _p$;
1493
1583
  }, {
1494
1584
  e: undefined,
1495
1585
  t: undefined
1496
1586
  });
1497
- return _el$73;
1587
+ return _el$79;
1498
1588
  }
1499
1589
  }), _$createComponent(Show, {
1500
1590
  get when() {
1501
1591
  return _$memo(() => !!hasChildren())() && !usesIconDisclosure();
1502
1592
  },
1503
1593
  get children() {
1504
- var _el$74 = _$getNextElement(_tmpl$35),
1505
- _el$75 = _el$74.firstChild;
1506
- _$effect(() => _$className(_el$75, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`));
1507
- return _el$74;
1594
+ var _el$80 = _$getNextElement(_tmpl$37),
1595
+ _el$81 = _el$80.firstChild;
1596
+ _$effect(() => _$className(_el$81, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`));
1597
+ return _el$80;
1508
1598
  }
1509
1599
  })];
1510
1600
  const row = () => _$createComponent(AppWorkspaceSidebarRow, {
@@ -1554,7 +1644,8 @@ const AppWorkspaceNavTree = props => {
1554
1644
  },
1555
1645
  get data() {
1556
1646
  return {
1557
- "has-actions": item.actions ? "true" : undefined
1647
+ "has-actions": item.actions ? "true" : undefined,
1648
+ "k2b-nav-tree-disclosure": disclosureOnly() ? "true" : undefined
1558
1649
  };
1559
1650
  },
1560
1651
  children: rowContent
@@ -1611,56 +1702,56 @@ const AppWorkspaceNavTree = props => {
1611
1702
  requestMove(target.move, false);
1612
1703
  };
1613
1704
  return (() => {
1614
- var _el$76 = _$getNextElement(_tmpl$37),
1615
- _el$78 = _el$76.firstChild,
1616
- [_el$79, _co$11] = _$getNextMarker(_el$78.nextSibling),
1617
- _el$80 = _el$79.nextSibling,
1618
- [_el$81, _co$12] = _$getNextMarker(_el$80.nextSibling);
1619
- _el$76.addEventListener("drop", onDrop);
1620
- _$addEventListener(_el$76, "dragleave", item.onDragLeave);
1621
- _el$76.addEventListener("dragover", onDragOver);
1622
- _$addEventListener(_el$76, "dragenter", item.onDragEnter);
1623
- _el$76.addEventListener("dragstart", onDragStart);
1624
- _el$76.$$keydown = onKeyDown;
1625
- _el$76.addEventListener("focus", () => setFocusedId(item.id));
1626
- var _ref$3 = treeItem;
1627
- typeof _ref$3 === "function" ? _$use(_ref$3, _el$76) : treeItem = _el$76;
1628
- _$setAttribute(_el$76, "aria-level", depth + 1);
1629
- _$setAttribute(_el$76, "data-k2b-nav-tree-parent-id", parentId);
1630
- _$insert(_el$76, row, _el$79, _co$11);
1631
- _$insert(_el$76, _$createComponent(Show, {
1705
+ var _el$84 = _$getNextElement(_tmpl$40),
1706
+ _el$86 = _el$84.firstChild,
1707
+ [_el$87, _co$12] = _$getNextMarker(_el$86.nextSibling),
1708
+ _el$88 = _el$87.nextSibling,
1709
+ [_el$89, _co$13] = _$getNextMarker(_el$88.nextSibling);
1710
+ _el$84.addEventListener("drop", onDrop);
1711
+ _$addEventListener(_el$84, "dragleave", item.onDragLeave);
1712
+ _el$84.addEventListener("dragover", onDragOver);
1713
+ _$addEventListener(_el$84, "dragenter", item.onDragEnter);
1714
+ _el$84.addEventListener("dragstart", onDragStart);
1715
+ _el$84.$$keydown = onKeyDown;
1716
+ _el$84.addEventListener("focus", () => setFocusedId(item.id));
1717
+ var _ref$4 = treeItem;
1718
+ typeof _ref$4 === "function" ? _$use(_ref$4, _el$84) : treeItem = _el$84;
1719
+ _$setAttribute(_el$84, "aria-level", depth + 1);
1720
+ _$setAttribute(_el$84, "data-k2b-nav-tree-parent-id", parentId);
1721
+ _$insert(_el$84, row, _el$87, _co$12);
1722
+ _$insert(_el$84, _$createComponent(Show, {
1632
1723
  get when() {
1633
1724
  return _$memo(() => !!hasChildren())() && isExpanded(item.id);
1634
1725
  },
1635
1726
  get children() {
1636
- var _el$77 = _$getNextElement(_tmpl$36);
1637
- _$insert(_el$77, () => renderItems(nested, depth + 1, item.id));
1638
- return _el$77;
1727
+ var _el$85 = _$getNextElement(_tmpl$39);
1728
+ _$insert(_el$85, () => renderItems(nested, depth + 1, item.id));
1729
+ return _el$85;
1639
1730
  }
1640
- }), _el$81, _co$12);
1731
+ }), _el$89, _co$13);
1641
1732
  _$effect(_p$ => {
1642
- var _v$59 = siblings().length,
1643
- _v$60 = place() + 1,
1644
- _v$61 = selected(),
1645
- _v$62 = hasChildren() ? isExpanded(item.id) : undefined,
1646
- _v$63 = item.disabled ? "true" : undefined,
1647
- _v$64 = item.disabled ? -1 : tabStopId() === item.id ? 0 : -1,
1648
- _v$65 = movable() ? true : undefined,
1649
- _v$66 = item.id,
1650
- _v$67 = dragged()?.id === item.id ? "" : undefined,
1651
- _v$68 = dropTarget()?.id === item.id ? dropTarget().side : undefined,
1652
- _v$69 = String(props.indented === false ? 0 : depth);
1653
- _v$59 !== _p$.e && _$setAttribute(_el$76, "aria-setsize", _p$.e = _v$59);
1654
- _v$60 !== _p$.t && _$setAttribute(_el$76, "aria-posinset", _p$.t = _v$60);
1655
- _v$61 !== _p$.a && _$setAttribute(_el$76, "aria-selected", _p$.a = _v$61);
1656
- _v$62 !== _p$.o && _$setAttribute(_el$76, "aria-expanded", _p$.o = _v$62);
1657
- _v$63 !== _p$.i && _$setAttribute(_el$76, "aria-disabled", _p$.i = _v$63);
1658
- _v$64 !== _p$.n && _$setAttribute(_el$76, "tabindex", _p$.n = _v$64);
1659
- _v$65 !== _p$.s && _$setAttribute(_el$76, "draggable", _p$.s = _v$65);
1660
- _v$66 !== _p$.h && _$setAttribute(_el$76, "data-k2b-nav-tree-id", _p$.h = _v$66);
1661
- _v$67 !== _p$.r && _$setAttribute(_el$76, "data-k2b-nav-tree-dragging", _p$.r = _v$67);
1662
- _v$68 !== _p$.d && _$setAttribute(_el$76, "data-k2b-nav-tree-drop", _p$.d = _v$68);
1663
- _v$69 !== _p$.l && _$setStyleProperty(_el$76, "--k2b-nav-tree-depth", _p$.l = _v$69);
1733
+ var _v$63 = siblings().length,
1734
+ _v$64 = place() + 1,
1735
+ _v$65 = selected(),
1736
+ _v$66 = hasChildren() ? isExpanded(item.id) : undefined,
1737
+ _v$67 = item.disabled ? "true" : undefined,
1738
+ _v$68 = item.disabled ? -1 : tabStopId() === item.id ? 0 : -1,
1739
+ _v$69 = movable() ? true : undefined,
1740
+ _v$70 = item.id,
1741
+ _v$71 = dragged()?.id === item.id ? "" : undefined,
1742
+ _v$72 = dropTarget()?.id === item.id ? dropTarget().side : undefined,
1743
+ _v$73 = String(props.indented === false ? 0 : depth);
1744
+ _v$63 !== _p$.e && _$setAttribute(_el$84, "aria-setsize", _p$.e = _v$63);
1745
+ _v$64 !== _p$.t && _$setAttribute(_el$84, "aria-posinset", _p$.t = _v$64);
1746
+ _v$65 !== _p$.a && _$setAttribute(_el$84, "aria-selected", _p$.a = _v$65);
1747
+ _v$66 !== _p$.o && _$setAttribute(_el$84, "aria-expanded", _p$.o = _v$66);
1748
+ _v$67 !== _p$.i && _$setAttribute(_el$84, "aria-disabled", _p$.i = _v$67);
1749
+ _v$68 !== _p$.n && _$setAttribute(_el$84, "tabindex", _p$.n = _v$68);
1750
+ _v$69 !== _p$.s && _$setAttribute(_el$84, "draggable", _p$.s = _v$69);
1751
+ _v$70 !== _p$.h && _$setAttribute(_el$84, "data-k2b-nav-tree-id", _p$.h = _v$70);
1752
+ _v$71 !== _p$.r && _$setAttribute(_el$84, "data-k2b-nav-tree-dragging", _p$.r = _v$71);
1753
+ _v$72 !== _p$.d && _$setAttribute(_el$84, "data-k2b-nav-tree-drop", _p$.d = _v$72);
1754
+ _v$73 !== _p$.l && _$setStyleProperty(_el$84, "--k2b-nav-tree-depth", _p$.l = _v$73);
1664
1755
  return _p$;
1665
1756
  }, {
1666
1757
  e: undefined,
@@ -1676,7 +1767,7 @@ const AppWorkspaceNavTree = props => {
1676
1767
  l: undefined
1677
1768
  });
1678
1769
  _$runHydrationEvents();
1679
- return _el$76;
1770
+ return _el$84;
1680
1771
  })();
1681
1772
  }
1682
1773
  });
@@ -1701,62 +1792,62 @@ const AppWorkspaceNavTree = props => {
1701
1792
  });
1702
1793
  });
1703
1794
  return (() => {
1704
- var _el$82 = _$getNextElement(_tmpl$38);
1705
- _el$82.addEventListener("dragend", endDrag);
1706
- _el$82.addEventListener("dragleave", event => {
1795
+ var _el$90 = _$getNextElement(_tmpl$41);
1796
+ _el$90.addEventListener("dragend", endDrag);
1797
+ _el$90.addEventListener("dragleave", event => {
1707
1798
  if (!root?.contains(event.relatedTarget)) setDropTarget(null);
1708
1799
  });
1709
- _el$82.addEventListener("dragover", event => {
1800
+ _el$90.addEventListener("dragover", event => {
1710
1801
  // Runs after the rows: a position no row claimed shows no gap.
1711
1802
  if (claimedDragOver !== event) setDropTarget(null);
1712
1803
  });
1713
- var _ref$4 = root;
1714
- typeof _ref$4 === "function" ? _$use(_ref$4, _el$82) : root = _el$82;
1715
- _$insert(_el$82, () => renderItems(roots, 0));
1804
+ var _ref$5 = root;
1805
+ typeof _ref$5 === "function" ? _$use(_ref$5, _el$90) : root = _el$90;
1806
+ _$insert(_el$90, () => renderItems(roots, 0));
1716
1807
  _$effect(_p$ => {
1717
- var _v$70 = `k2b-app-workspace__nav-tree ${props.class ?? ""}`,
1718
- _v$71 = props.ariaLabel;
1719
- _v$70 !== _p$.e && _$className(_el$82, _p$.e = _v$70);
1720
- _v$71 !== _p$.t && _$setAttribute(_el$82, "aria-label", _p$.t = _v$71);
1808
+ var _v$74 = `k2b-app-workspace__nav-tree ${props.class ?? ""}`,
1809
+ _v$75 = props.ariaLabel;
1810
+ _v$74 !== _p$.e && _$className(_el$90, _p$.e = _v$74);
1811
+ _v$75 !== _p$.t && _$setAttribute(_el$90, "aria-label", _p$.t = _v$75);
1721
1812
  return _p$;
1722
1813
  }, {
1723
1814
  e: undefined,
1724
1815
  t: undefined
1725
1816
  });
1726
- return _el$82;
1817
+ return _el$90;
1727
1818
  })();
1728
1819
  };
1729
1820
  AppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;
1730
1821
  const AppWorkspaceSidebarIconGrid = props => (() => {
1731
- var _el$83 = _$getNextElement(_tmpl$39),
1732
- _el$85 = _el$83.firstChild,
1733
- [_el$86, _co$13] = _$getNextMarker(_el$85.nextSibling),
1734
- _el$84 = _el$86.nextSibling;
1735
- _$spread(_el$83, _$mergeProps({
1822
+ var _el$91 = _$getNextElement(_tmpl$42),
1823
+ _el$93 = _el$91.firstChild,
1824
+ [_el$94, _co$14] = _$getNextMarker(_el$93.nextSibling),
1825
+ _el$92 = _el$94.nextSibling;
1826
+ _$spread(_el$91, _$mergeProps({
1736
1827
  get ["class"]() {
1737
1828
  return `k2b-app-workspace__sidebar-icon-grid-wrap ${props.class ?? ""}`;
1738
1829
  }
1739
1830
  }, () => modeAttrs(props.sidebarMode)), false, true);
1740
- _$insert(_el$83, _$createComponent(Show, {
1831
+ _$insert(_el$91, _$createComponent(Show, {
1741
1832
  get when() {
1742
1833
  return props.title;
1743
1834
  },
1744
1835
  children: title => (() => {
1745
- var _el$87 = _$getNextElement(_tmpl$13);
1746
- _$insert(_el$87, title);
1747
- return _el$87;
1836
+ var _el$95 = _$getNextElement(_tmpl$15);
1837
+ _$insert(_el$95, title);
1838
+ return _el$95;
1748
1839
  })()
1749
- }), _el$86, _co$13);
1750
- _$insert(_el$84, () => props.children);
1751
- _$effect(() => _$setAttribute(_el$84, "data-columns", props.columns ?? 2));
1840
+ }), _el$94, _co$14);
1841
+ _$insert(_el$92, () => props.children);
1842
+ _$effect(() => _$setAttribute(_el$92, "data-columns", props.columns ?? 2));
1752
1843
  _$runHydrationEvents();
1753
- return _el$83;
1844
+ return _el$91;
1754
1845
  })();
1755
1846
  const AppWorkspaceSidebarIconAction = props => {
1756
1847
  const content = (() => {
1757
- var _el$88 = _$getNextElement(_tmpl$40);
1758
- _$effect(() => _$className(_el$88, iconClass(props.icon)));
1759
- return _el$88;
1848
+ var _el$96 = _$getNextElement(_tmpl$43);
1849
+ _$effect(() => _$className(_el$96, iconClass(props.icon)));
1850
+ return _el$96;
1760
1851
  })();
1761
1852
  const attrs = () => ({
1762
1853
  class: `k2b-app-workspace__sidebar-icon-action ${props.active ? "is-active" : ""}`,
@@ -1769,8 +1860,8 @@ const AppWorkspaceSidebarIconAction = props => {
1769
1860
  ...modeAttrs(props.sidebarMode)
1770
1861
  });
1771
1862
  if (!props.href || props.disabled) return (() => {
1772
- var _el$89 = _$getNextElement(_tmpl$20);
1773
- _$spread(_el$89, _$mergeProps(attrs, {
1863
+ var _el$97 = _$getNextElement(_tmpl$22);
1864
+ _$spread(_el$97, _$mergeProps(attrs, {
1774
1865
  get disabled() {
1775
1866
  return props.disabled;
1776
1867
  },
@@ -1778,13 +1869,13 @@ const AppWorkspaceSidebarIconAction = props => {
1778
1869
  return props.onClick;
1779
1870
  }
1780
1871
  }), false, true);
1781
- _$insert(_el$89, content);
1872
+ _$insert(_el$97, content);
1782
1873
  _$runHydrationEvents();
1783
- return _el$89;
1874
+ return _el$97;
1784
1875
  })();
1785
1876
  if (props.navigation !== "enhanced" || !props.onNavigate) return (() => {
1786
- var _el$90 = _$getNextElement(_tmpl$21);
1787
- _$spread(_el$90, _$mergeProps({
1877
+ var _el$98 = _$getNextElement(_tmpl$23);
1878
+ _$spread(_el$98, _$mergeProps({
1788
1879
  get href() {
1789
1880
  return props.href;
1790
1881
  }
@@ -1793,9 +1884,9 @@ const AppWorkspaceSidebarIconAction = props => {
1793
1884
  return props.onClick;
1794
1885
  }
1795
1886
  }), false, true);
1796
- _$insert(_el$90, content);
1887
+ _$insert(_el$98, content);
1797
1888
  _$runHydrationEvents();
1798
- return _el$90;
1889
+ return _el$98;
1799
1890
  })();
1800
1891
  return _$createComponent(Link, _$mergeProps({
1801
1892
  get href() {
@@ -1817,9 +1908,71 @@ const AppWorkspaceSidebarIconAction = props => {
1817
1908
  children: content
1818
1909
  }));
1819
1910
  };
1911
+ /**
1912
+ * The row above the work area. From 48 to 64 rem it holds the button that
1913
+ * opens the overlay sidebar. On a page with a page above it, it shows the
1914
+ * host's page title with the way up (see `PageTitle`); the page's own
1915
+ * `PageTitle` takes its place. The visible title is no heading, because many
1916
+ * pages render their own `h1`. From 64 rem a sidebar that marks the current
1917
+ * page names it already: the row hides, and only on a page without its own
1918
+ * `h1` its heading stays for assistive technology. It is one fixed height
1919
+ * and draws no line; CSS decides when it shows, so the server-rendered page
1920
+ * already has its final geometry.
1921
+ */
1922
+ function AppWorkspaceHead(props) {
1923
+ const messages = useWorkspaceMessages();
1924
+ // A nested workspace is part of a page that already shows its title.
1925
+ const trail = props.nested ? () => undefined : usePageTrail();
1926
+ return (() => {
1927
+ var _el$99 = _$getNextElement(_tmpl$45),
1928
+ _el$101 = _el$99.firstChild,
1929
+ [_el$102, _co$15] = _$getNextMarker(_el$101.nextSibling),
1930
+ _el$103 = _el$102.nextSibling,
1931
+ [_el$104, _co$16] = _$getNextMarker(_el$103.nextSibling);
1932
+ _$insert(_el$99, _$createComponent(IconButton, {
1933
+ "class": "k2b-app-workspace__head-toggle",
1934
+ get label() {
1935
+ return messages().showNavigation;
1936
+ },
1937
+ get ["aria-controls"]() {
1938
+ return props.sidebarId();
1939
+ },
1940
+ "aria-expanded": "false",
1941
+ "data-app-workspace-sidebar-toggle": "",
1942
+ get children() {
1943
+ return _$getNextElement(_tmpl$44);
1944
+ }
1945
+ }), _el$102, _co$15);
1946
+ _$insert(_el$99, _$createComponent(Show, {
1947
+ get when() {
1948
+ return trail();
1949
+ },
1950
+ children: current => [_$createComponent(PageTitle, {
1951
+ get trail() {
1952
+ return current();
1953
+ },
1954
+ as: "p",
1955
+ fallback: true
1956
+ }), (() => {
1957
+ var _el$105 = _$getNextElement(_tmpl$46);
1958
+ _$setAttribute(_el$105, "data-k2b-server", isServer ? "" : undefined);
1959
+ _$insert(_el$105, () => current().title);
1960
+ return _el$105;
1961
+ })()]
1962
+ }), _el$104, _co$16);
1963
+ _$effect(() => _$setAttribute(_el$99, "data-trail", trail()?.ancestors.length ? "up" : trail() ? "title" : undefined));
1964
+ return _el$99;
1965
+ })();
1966
+ }
1820
1967
  const AppWorkspace = props => {
1821
1968
  let root;
1822
1969
  const serverLayoutState = useContext(LayoutStateContext);
1970
+ const nested = Boolean(useContext(WorkspaceContext));
1971
+ const [sidebarId, setSidebarId] = createSignal(`k2b-workspace-sidebar-${createUniqueId()}`);
1972
+ const workspace = {
1973
+ sidebarId: sidebarId(),
1974
+ setSidebarId
1975
+ };
1823
1976
  const initialLayoutState = () => props.layoutState?.() ?? serverLayoutState;
1824
1977
 
1825
1978
  // The resize handles are inert markup until the controller is attached, so
@@ -1840,30 +1993,46 @@ const AppWorkspace = props => {
1840
1993
  return props.resizable !== false;
1841
1994
  },
1842
1995
  get children() {
1843
- var _el$91 = _$getNextElement(_tmpl$41);
1844
- var _ref$5 = root;
1845
- typeof _ref$5 === "function" ? _$use(_ref$5, _el$91) : root = _el$91;
1846
- _$insert(_el$91, () => props.children);
1847
- _$effect(_p$ => {
1848
- var _v$72 = `k2b-app-workspace ${props.class ?? ""}`,
1849
- _v$73 = props.mobileSurface,
1850
- _v$74 = initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed),
1851
- _v$75 = props.resizable === false ? "false" : "true",
1852
- _v$76 = appWorkspaceLayoutStyle(initialLayoutState());
1853
- _v$72 !== _p$.e && _$className(_el$91, _p$.e = _v$72);
1854
- _v$73 !== _p$.t && _$setAttribute(_el$91, "data-mobile-surface", _p$.t = _v$73);
1855
- _v$74 !== _p$.a && _$setAttribute(_el$91, "data-sidebar-collapsed", _p$.a = _v$74);
1856
- _v$75 !== _p$.o && _$setAttribute(_el$91, "data-workspace-resizable", _p$.o = _v$75);
1857
- _p$.i = _$style(_el$91, _v$76, _p$.i);
1858
- return _p$;
1859
- }, {
1860
- e: undefined,
1861
- t: undefined,
1862
- a: undefined,
1863
- o: undefined,
1864
- i: undefined
1996
+ return _$createComponent(WorkspaceContext.Provider, {
1997
+ value: workspace,
1998
+ get children() {
1999
+ var _el$106 = _$getNextElement(_tmpl$47),
2000
+ _el$107 = _el$106.firstChild,
2001
+ [_el$108, _co$17] = _$getNextMarker(_el$107.nextSibling),
2002
+ _el$109 = _el$108.nextSibling,
2003
+ [_el$110, _co$18] = _$getNextMarker(_el$109.nextSibling);
2004
+ var _ref$6 = root;
2005
+ typeof _ref$6 === "function" ? _$use(_ref$6, _el$106) : root = _el$106;
2006
+ _$insert(_el$106, _$createComponent(AppWorkspaceHead, {
2007
+ sidebarId: sidebarId,
2008
+ nested: nested
2009
+ }), _el$108, _co$17);
2010
+ _$insert(_el$106, () => props.children, _el$110, _co$18);
2011
+ _$effect(_p$ => {
2012
+ var _v$76 = `k2b-app-workspace ${props.class ?? ""}`,
2013
+ _v$77 = props.mobileSurface,
2014
+ _v$78 = props.flat ? "true" : undefined,
2015
+ _v$79 = initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed),
2016
+ _v$80 = props.resizable === false ? "false" : "true",
2017
+ _v$81 = appWorkspaceLayoutStyle(initialLayoutState());
2018
+ _v$76 !== _p$.e && _$className(_el$106, _p$.e = _v$76);
2019
+ _v$77 !== _p$.t && _$setAttribute(_el$106, "data-mobile-surface", _p$.t = _v$77);
2020
+ _v$78 !== _p$.a && _$setAttribute(_el$106, "data-flat", _p$.a = _v$78);
2021
+ _v$79 !== _p$.o && _$setAttribute(_el$106, "data-sidebar-collapsed", _p$.o = _v$79);
2022
+ _v$80 !== _p$.i && _$setAttribute(_el$106, "data-workspace-resizable", _p$.i = _v$80);
2023
+ _p$.n = _$style(_el$106, _v$81, _p$.n);
2024
+ return _p$;
2025
+ }, {
2026
+ e: undefined,
2027
+ t: undefined,
2028
+ a: undefined,
2029
+ o: undefined,
2030
+ i: undefined,
2031
+ n: undefined
2032
+ });
2033
+ return _el$106;
2034
+ }
1865
2035
  });
1866
- return _el$91;
1867
2036
  }
1868
2037
  });
1869
2038
  };
@@ -1876,10 +2045,10 @@ AppWorkspace.LayoutStateProvider = props => _$createComponent(LayoutStateContext
1876
2045
  }
1877
2046
  });
1878
2047
  AppWorkspace.Content = props => (() => {
1879
- var _el$92 = _$getNextElement(_tmpl$2);
1880
- _$insert(_el$92, () => props.children);
1881
- _$effect(() => _$className(_el$92, `k2b-app-workspace__content ${props.class ?? ""}`));
1882
- return _el$92;
2048
+ var _el$111 = _$getNextElement(_tmpl$2);
2049
+ _$insert(_el$111, () => props.children);
2050
+ _$effect(() => _$className(_el$111, `k2b-app-workspace__content ${props.class ?? ""}`));
2051
+ return _el$111;
1883
2052
  })();
1884
2053
  AppWorkspace.Main = AppWorkspaceMain;
1885
2054
  AppWorkspace.MainPane = AppWorkspaceMainPane;