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