@k2b/ui 0.28.0 → 0.30.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 (278) hide show
  1. package/README.md +1 -1
  2. package/dist/base.css +2 -2
  3. package/dist/browser/actions/ContextMenu.js +5 -0
  4. package/dist/browser/actions/ContextMenu.js.map +1 -1
  5. package/dist/browser/actions/DragAndDrop.js +89 -0
  6. package/dist/browser/actions/DragAndDrop.js.map +1 -0
  7. package/dist/browser/actions/Dropdown.js +6 -3
  8. package/dist/browser/actions/Dropdown.js.map +1 -1
  9. package/dist/browser/actions/FilterChip.js +137 -7
  10. package/dist/browser/actions/FilterChip.js.map +1 -1
  11. package/dist/browser/actions/GestureMenu.js +26 -3
  12. package/dist/browser/actions/GestureMenu.js.map +1 -1
  13. package/dist/browser/actions/SegmentedControl.js +5 -9
  14. package/dist/browser/actions/SegmentedControl.js.map +1 -1
  15. package/dist/browser/actions/SpotlightSearch.js +6 -3
  16. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  17. package/dist/browser/actions/Tabs.js +5 -2
  18. package/dist/browser/actions/Tabs.js.map +1 -1
  19. package/dist/browser/actions/ViewTabs.js +294 -0
  20. package/dist/browser/actions/ViewTabs.js.map +1 -0
  21. package/dist/browser/actions/drag-and-drop-messages.js +75 -0
  22. package/dist/browser/actions/drag-and-drop-messages.js.map +1 -0
  23. package/dist/browser/actions/drag-and-drop.js +692 -0
  24. package/dist/browser/actions/drag-and-drop.js.map +1 -0
  25. package/dist/browser/actions/filter-messages.js +6 -2
  26. package/dist/browser/actions/filter-messages.js.map +1 -1
  27. package/dist/browser/actions/index.js +3 -1
  28. package/dist/browser/actions/index.js.map +1 -1
  29. package/dist/browser/chat/ChatComposer.js +1229 -605
  30. package/dist/browser/chat/ChatComposer.js.map +1 -1
  31. package/dist/browser/chat/ChatDecision.js +814 -0
  32. package/dist/browser/chat/ChatDecision.js.map +1 -0
  33. package/dist/browser/chat/ChatPrimitives.js +292 -153
  34. package/dist/browser/chat/ChatPrimitives.js.map +1 -1
  35. package/dist/browser/chat/ChatTimeline.js.map +1 -1
  36. package/dist/browser/chat/chat-messages.js +14 -0
  37. package/dist/browser/chat/chat-messages.js.map +1 -1
  38. package/dist/browser/chat/command-search.js +35 -17
  39. package/dist/browser/chat/command-search.js.map +1 -1
  40. package/dist/browser/chat/index.js +10 -3
  41. package/dist/browser/chat/index.js.map +1 -1
  42. package/dist/browser/chat/types.js.map +1 -1
  43. package/dist/browser/content/Calendar.js +146 -119
  44. package/dist/browser/content/Calendar.js.map +1 -1
  45. package/dist/browser/content/CalendarWeekView.js +291 -266
  46. package/dist/browser/content/CalendarWeekView.js.map +1 -1
  47. package/dist/browser/content/Chart.js +54 -71
  48. package/dist/browser/content/Chart.js.map +1 -1
  49. package/dist/browser/content/DataTable.js +224 -155
  50. package/dist/browser/content/DataTable.js.map +1 -1
  51. package/dist/browser/content/FileBrowser.js +2 -2
  52. package/dist/browser/content/FileBrowser.js.map +1 -1
  53. package/dist/browser/content/FileTree.js +42 -36
  54. package/dist/browser/content/FileTree.js.map +1 -1
  55. package/dist/browser/content/FileTypeIcon.js +72 -0
  56. package/dist/browser/content/FileTypeIcon.js.map +1 -0
  57. package/dist/browser/content/FileView.js +2 -2
  58. package/dist/browser/content/FileView.js.map +1 -1
  59. package/dist/browser/content/ReferenceChip.js +162 -0
  60. package/dist/browser/content/ReferenceChip.js.map +1 -0
  61. package/dist/browser/content/calendar-pointer.js +9 -0
  62. package/dist/browser/content/calendar-pointer.js.map +1 -1
  63. package/dist/browser/content/calendar-time-view.js +6 -3
  64. package/dist/browser/content/calendar-time-view.js.map +1 -1
  65. package/dist/browser/content/data-table-messages.js +4 -2
  66. package/dist/browser/content/data-table-messages.js.map +1 -1
  67. package/dist/browser/content/index.js +2 -0
  68. package/dist/browser/content/index.js.map +1 -1
  69. package/dist/browser/feedback/MovedHint.js +197 -0
  70. package/dist/browser/feedback/MovedHint.js.map +1 -0
  71. package/dist/browser/feedback/dialog-core.js +66 -9
  72. package/dist/browser/feedback/dialog-core.js.map +1 -1
  73. package/dist/browser/feedback/index.js +1 -0
  74. package/dist/browser/feedback/index.js.map +1 -1
  75. package/dist/browser/feedback/prompts.js +6 -1
  76. package/dist/browser/feedback/prompts.js.map +1 -1
  77. package/dist/browser/inputs/DatePicker.js +337 -212
  78. package/dist/browser/inputs/DatePicker.js.map +1 -1
  79. package/dist/browser/inputs/date-picker.js +59 -5
  80. package/dist/browser/inputs/date-picker.js.map +1 -1
  81. package/dist/browser/intl/messages.js +12 -0
  82. package/dist/browser/intl/messages.js.map +1 -1
  83. package/dist/browser/intl/weekend.js +39 -0
  84. package/dist/browser/intl/weekend.js.map +1 -0
  85. package/dist/browser/layout/AppOverview.js +1 -2
  86. package/dist/browser/layout/AppOverview.js.map +1 -1
  87. package/dist/browser/layout/AppWorkspace.js +947 -531
  88. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  89. package/dist/browser/layout/PageTitle.js +3 -2
  90. package/dist/browser/layout/PageTitle.js.map +1 -1
  91. package/dist/browser/layout/PanelDialog.js +88 -86
  92. package/dist/browser/layout/PanelDialog.js.map +1 -1
  93. package/dist/browser/layout/ResizeSeparator.js +81 -0
  94. package/dist/browser/layout/ResizeSeparator.js.map +1 -0
  95. package/dist/browser/layout/SettingsModal.js +2 -2
  96. package/dist/browser/layout/SettingsModal.js.map +1 -1
  97. package/dist/browser/layout/SidebarSwitcher.js +19 -11
  98. package/dist/browser/layout/SidebarSwitcher.js.map +1 -1
  99. package/dist/browser/layout/TabBar.js +16 -13
  100. package/dist/browser/layout/TabBar.js.map +1 -1
  101. package/dist/browser/layout/app-host-width.js +44 -0
  102. package/dist/browser/layout/app-host-width.js.map +1 -0
  103. package/dist/browser/layout/app-workspace-controller.js +337 -44
  104. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  105. package/dist/browser/layout/index.js +4 -1
  106. package/dist/browser/layout/index.js.map +1 -1
  107. package/dist/browser/layout/resize-separator.js +90 -0
  108. package/dist/browser/layout/resize-separator.js.map +1 -0
  109. package/dist/browser/layout/workspace-messages.js +12 -2
  110. package/dist/browser/layout/workspace-messages.js.map +1 -1
  111. package/dist/browser/surfaces/LinkCard.js +1 -1
  112. package/dist/browser/surfaces/LinkCard.js.map +1 -1
  113. package/dist/browser/surfaces/Placeholder.js +45 -11
  114. package/dist/browser/surfaces/Placeholder.js.map +1 -1
  115. package/dist/browser/surfaces/StatCell.js +23 -0
  116. package/dist/browser/surfaces/StatCell.js.map +1 -1
  117. package/dist/browser/widgets/Widget.js +1 -1
  118. package/dist/browser/widgets/Widget.js.map +1 -1
  119. package/dist/ssr/actions/ContextMenu.js +5 -0
  120. package/dist/ssr/actions/ContextMenu.js.map +1 -1
  121. package/dist/ssr/actions/DragAndDrop.js +63 -0
  122. package/dist/ssr/actions/DragAndDrop.js.map +1 -0
  123. package/dist/ssr/actions/Dropdown.js +5 -2
  124. package/dist/ssr/actions/Dropdown.js.map +1 -1
  125. package/dist/ssr/actions/FilterChip.js +59 -7
  126. package/dist/ssr/actions/FilterChip.js.map +1 -1
  127. package/dist/ssr/actions/GestureMenu.js +26 -3
  128. package/dist/ssr/actions/GestureMenu.js.map +1 -1
  129. package/dist/ssr/actions/SegmentedControl.js +1 -2
  130. package/dist/ssr/actions/SegmentedControl.js.map +1 -1
  131. package/dist/ssr/actions/SpotlightSearch.js +2 -2
  132. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  133. package/dist/ssr/actions/Tabs.js +2 -2
  134. package/dist/ssr/actions/Tabs.js.map +1 -1
  135. package/dist/ssr/actions/ViewTabs.js +211 -0
  136. package/dist/ssr/actions/ViewTabs.js.map +1 -0
  137. package/dist/ssr/actions/drag-and-drop-messages.js +75 -0
  138. package/dist/ssr/actions/drag-and-drop-messages.js.map +1 -0
  139. package/dist/ssr/actions/drag-and-drop.js +692 -0
  140. package/dist/ssr/actions/drag-and-drop.js.map +1 -0
  141. package/dist/ssr/actions/filter-messages.js +6 -2
  142. package/dist/ssr/actions/filter-messages.js.map +1 -1
  143. package/dist/ssr/actions/index.js +3 -1
  144. package/dist/ssr/actions/index.js.map +1 -1
  145. package/dist/ssr/chat/ChatComposer.js +668 -136
  146. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  147. package/dist/ssr/chat/ChatDecision.js +479 -0
  148. package/dist/ssr/chat/ChatDecision.js.map +1 -0
  149. package/dist/ssr/chat/ChatPrimitives.js +95 -24
  150. package/dist/ssr/chat/ChatPrimitives.js.map +1 -1
  151. package/dist/ssr/chat/ChatTimeline.js.map +1 -1
  152. package/dist/ssr/chat/chat-messages.js +14 -0
  153. package/dist/ssr/chat/chat-messages.js.map +1 -1
  154. package/dist/ssr/chat/command-search.js +35 -17
  155. package/dist/ssr/chat/command-search.js.map +1 -1
  156. package/dist/ssr/chat/index.js +10 -3
  157. package/dist/ssr/chat/index.js.map +1 -1
  158. package/dist/ssr/chat/types.js.map +1 -1
  159. package/dist/ssr/content/Calendar.js +112 -103
  160. package/dist/ssr/content/Calendar.js.map +1 -1
  161. package/dist/ssr/content/CalendarWeekView.js +42 -28
  162. package/dist/ssr/content/CalendarWeekView.js.map +1 -1
  163. package/dist/ssr/content/Chart.js +19 -23
  164. package/dist/ssr/content/Chart.js.map +1 -1
  165. package/dist/ssr/content/DataTable.js +78 -31
  166. package/dist/ssr/content/DataTable.js.map +1 -1
  167. package/dist/ssr/content/FileBrowser.js +2 -2
  168. package/dist/ssr/content/FileBrowser.js.map +1 -1
  169. package/dist/ssr/content/FileTree.js +21 -14
  170. package/dist/ssr/content/FileTree.js.map +1 -1
  171. package/dist/ssr/content/FileTypeIcon.js +50 -0
  172. package/dist/ssr/content/FileTypeIcon.js.map +1 -0
  173. package/dist/ssr/content/FileView.js +2 -2
  174. package/dist/ssr/content/FileView.js.map +1 -1
  175. package/dist/ssr/content/ReferenceChip.js +121 -0
  176. package/dist/ssr/content/ReferenceChip.js.map +1 -0
  177. package/dist/ssr/content/calendar-pointer.js +9 -0
  178. package/dist/ssr/content/calendar-pointer.js.map +1 -1
  179. package/dist/ssr/content/calendar-time-view.js +6 -3
  180. package/dist/ssr/content/calendar-time-view.js.map +1 -1
  181. package/dist/ssr/content/data-table-messages.js +4 -2
  182. package/dist/ssr/content/data-table-messages.js.map +1 -1
  183. package/dist/ssr/content/index.js +2 -0
  184. package/dist/ssr/content/index.js.map +1 -1
  185. package/dist/ssr/feedback/MovedHint.js +166 -0
  186. package/dist/ssr/feedback/MovedHint.js.map +1 -0
  187. package/dist/ssr/feedback/dialog-core.js +66 -9
  188. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  189. package/dist/ssr/feedback/index.js +1 -0
  190. package/dist/ssr/feedback/index.js.map +1 -1
  191. package/dist/ssr/feedback/prompts.js +6 -1
  192. package/dist/ssr/feedback/prompts.js.map +1 -1
  193. package/dist/ssr/inputs/DatePicker.js +138 -69
  194. package/dist/ssr/inputs/DatePicker.js.map +1 -1
  195. package/dist/ssr/inputs/date-picker.js +59 -5
  196. package/dist/ssr/inputs/date-picker.js.map +1 -1
  197. package/dist/ssr/intl/messages.js +12 -0
  198. package/dist/ssr/intl/messages.js.map +1 -1
  199. package/dist/ssr/intl/weekend.js +39 -0
  200. package/dist/ssr/intl/weekend.js.map +1 -0
  201. package/dist/ssr/layout/AppOverview.js +1 -2
  202. package/dist/ssr/layout/AppOverview.js.map +1 -1
  203. package/dist/ssr/layout/AppWorkspace.js +457 -116
  204. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  205. package/dist/ssr/layout/PageTitle.js +3 -2
  206. package/dist/ssr/layout/PageTitle.js.map +1 -1
  207. package/dist/ssr/layout/PanelDialog.js +7 -6
  208. package/dist/ssr/layout/PanelDialog.js.map +1 -1
  209. package/dist/ssr/layout/ResizeSeparator.js +45 -0
  210. package/dist/ssr/layout/ResizeSeparator.js.map +1 -0
  211. package/dist/ssr/layout/SettingsModal.js +2 -2
  212. package/dist/ssr/layout/SettingsModal.js.map +1 -1
  213. package/dist/ssr/layout/SidebarSwitcher.js +19 -11
  214. package/dist/ssr/layout/SidebarSwitcher.js.map +1 -1
  215. package/dist/ssr/layout/TabBar.js +2 -2
  216. package/dist/ssr/layout/TabBar.js.map +1 -1
  217. package/dist/ssr/layout/app-host-width.js +44 -0
  218. package/dist/ssr/layout/app-host-width.js.map +1 -0
  219. package/dist/ssr/layout/app-workspace-controller.js +337 -44
  220. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  221. package/dist/ssr/layout/index.js +4 -1
  222. package/dist/ssr/layout/index.js.map +1 -1
  223. package/dist/ssr/layout/resize-separator.js +90 -0
  224. package/dist/ssr/layout/resize-separator.js.map +1 -0
  225. package/dist/ssr/layout/workspace-messages.js +12 -2
  226. package/dist/ssr/layout/workspace-messages.js.map +1 -1
  227. package/dist/ssr/surfaces/LinkCard.js +1 -1
  228. package/dist/ssr/surfaces/LinkCard.js.map +1 -1
  229. package/dist/ssr/surfaces/Placeholder.js +25 -6
  230. package/dist/ssr/surfaces/Placeholder.js.map +1 -1
  231. package/dist/ssr/surfaces/StatCell.js +23 -0
  232. package/dist/ssr/surfaces/StatCell.js.map +1 -1
  233. package/dist/ssr/widgets/Widget.js +1 -1
  234. package/dist/ssr/widgets/Widget.js.map +1 -1
  235. package/dist/styles.css +1 -1
  236. package/dist/types/actions/ContextMenu.d.ts +1 -0
  237. package/dist/types/actions/DragAndDrop.d.ts +29 -0
  238. package/dist/types/actions/Dropdown.d.ts +4 -0
  239. package/dist/types/actions/FilterChip.d.ts +22 -0
  240. package/dist/types/actions/ViewTabs.d.ts +30 -0
  241. package/dist/types/actions/drag-and-drop-messages.d.ts +35 -0
  242. package/dist/types/actions/drag-and-drop.d.ts +36 -0
  243. package/dist/types/actions/filter-messages.d.ts +2 -0
  244. package/dist/types/actions/index.d.ts +6 -2
  245. package/dist/types/chat/ChatComposer.d.ts +71 -1
  246. package/dist/types/chat/ChatDecision.d.ts +149 -0
  247. package/dist/types/chat/ChatPrimitives.d.ts +14 -1
  248. package/dist/types/chat/ChatTimeline.d.ts +2 -1
  249. package/dist/types/chat/chat-messages.d.ts +7 -0
  250. package/dist/types/chat/command-search.d.ts +5 -0
  251. package/dist/types/chat/index.d.ts +28 -5
  252. package/dist/types/chat/types.d.ts +54 -1
  253. package/dist/types/content/Chart.d.ts +9 -3
  254. package/dist/types/content/DataTable.d.ts +3 -0
  255. package/dist/types/content/FileTypeIcon.d.ts +27 -0
  256. package/dist/types/content/ReferenceChip.d.ts +49 -0
  257. package/dist/types/content/calendar-pointer.d.ts +6 -0
  258. package/dist/types/content/data-table-messages.d.ts +1 -0
  259. package/dist/types/content/index.d.ts +3 -0
  260. package/dist/types/feedback/MovedHint.d.ts +25 -0
  261. package/dist/types/feedback/dialog-core.d.ts +5 -2
  262. package/dist/types/feedback/index.d.ts +2 -0
  263. package/dist/types/feedback/prompts.d.ts +2 -0
  264. package/dist/types/inputs/DatePicker.d.ts +7 -0
  265. package/dist/types/inputs/date-picker.d.ts +25 -1
  266. package/dist/types/intl/messages.d.ts +6 -0
  267. package/dist/types/intl/weekend.d.ts +12 -0
  268. package/dist/types/layout/AppWorkspace.d.ts +48 -10
  269. package/dist/types/layout/ResizeSeparator.d.ts +9 -0
  270. package/dist/types/layout/TabBar.d.ts +7 -0
  271. package/dist/types/layout/app-host-width.d.ts +6 -0
  272. package/dist/types/layout/app-workspace-controller.d.ts +2 -0
  273. package/dist/types/layout/index.d.ts +5 -2
  274. package/dist/types/layout/resize-separator.d.ts +18 -0
  275. package/dist/types/layout/workspace-messages.d.ts +5 -0
  276. package/dist/types/surfaces/Placeholder.d.ts +2 -1
  277. package/dist/types/surfaces/StatCell.d.ts +6 -0
  278. package/package.json +5 -5
@@ -2,8 +2,8 @@ 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
4
  import { setStyleProperty as _$setStyleProperty } from "solid-js/web";
5
- import { setProperty as _$setProperty } from "solid-js/web";
6
5
  import { className as _$className } from "solid-js/web";
6
+ import { setProperty as _$setProperty } from "solid-js/web";
7
7
  import { runHydrationEvents as _$runHydrationEvents } from "solid-js/web";
8
8
  import { use as _$use } from "solid-js/web";
9
9
  import { spread as _$spread } from "solid-js/web";
@@ -17,67 +17,79 @@ import { setAttribute as _$setAttribute } from "solid-js/web";
17
17
  import { effect as _$effect } from "solid-js/web";
18
18
  import { getNextElement as _$getNextElement } from "solid-js/web";
19
19
  var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__resize role=separator><span aria-hidden=true>`),
20
- _tmpl$2 = /*#__PURE__*/_$template(`<p>`),
20
+ _tmpl$2 = /*#__PURE__*/_$template(`<p class=k2b-truncate-fade>`),
21
21
  _tmpl$3 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__level-actions>`),
22
- _tmpl$4 = /*#__PURE__*/_$template(`<header class=k2b-app-workspace__level-head><!$><!/><div class=k2b-app-workspace__level-title><h2 tabindex=-1></h2><!$><!/></div><!$><!/>`),
22
+ _tmpl$4 = /*#__PURE__*/_$template(`<header class=k2b-app-workspace__level-head><!$><!/><div class=k2b-app-workspace__level-title><h2 tabindex=-1><span class=k2b-truncate-fade></span></h2><!$><!/></div><!$><!/>`),
23
23
  _tmpl$5 = /*#__PURE__*/_$template(`<div>`),
24
- _tmpl$6 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__main-primary data-workspace-main-region=main>`),
25
- _tmpl$7 = /*#__PURE__*/_$template(`<section>`),
26
- _tmpl$8 = /*#__PURE__*/_$template(`<i class="ti ti-chevron-left"aria-hidden=true>`),
27
- _tmpl$9 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__level-body>`),
28
- _tmpl$0 = /*#__PURE__*/_$template(`<style>`),
29
- _tmpl$1 = /*#__PURE__*/_$template(`<aside><button type=button class=k2b-app-workspace__detail-grabber aria-pressed=false><span aria-hidden=true></span></button><!$><!/>`),
30
- _tmpl$10 = /*#__PURE__*/_$template(`<aside>`),
31
- _tmpl$11 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-desktop>`),
32
- _tmpl$12 = /*#__PURE__*/_$template(`<script>`),
33
- _tmpl$13 = /*#__PURE__*/_$template(`<footer>`),
34
- _tmpl$14 = /*#__PURE__*/_$template(`<span aria-hidden=true><i>`),
35
- _tmpl$15 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-section-count>`),
36
- _tmpl$16 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-section-toggle><!$><!/><i aria-hidden=true>`),
37
- _tmpl$17 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-section-actions>`),
38
- _tmpl$18 = /*#__PURE__*/_$template(`<header class=k2b-app-workspace__sidebar-section-header><!$><!/><!$><!/>`),
39
- _tmpl$19 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-section-content>`),
40
- _tmpl$20 = /*#__PURE__*/_$template(`<h2>`),
41
- _tmpl$21 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-item-actions>`),
42
- _tmpl$22 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-mention aria-hidden=true>@`),
43
- _tmpl$23 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-muted aria-hidden=true><i class="ti ti-bell-off">`),
44
- _tmpl$24 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-count>`),
45
- _tmpl$25 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-unread aria-hidden=true>`),
46
- _tmpl$26 = /*#__PURE__*/_$template(`<span class=k2b-sr-only>, <!$><!/>`),
47
- _tmpl$27 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status>`),
48
- _tmpl$28 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-dot>`),
49
- _tmpl$29 = /*#__PURE__*/_$template(`<button type=button>`),
50
- _tmpl$30 = /*#__PURE__*/_$template(`<a>`),
51
- _tmpl$31 = /*#__PURE__*/_$template(`<div><!$><!/><!$><!/>`),
52
- _tmpl$32 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true>`),
53
- _tmpl$33 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context-meta>`),
54
- _tmpl$34 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context><span class=k2b-app-workspace__sidebar-item-context-label></span><!$><!/>`),
55
- _tmpl$35 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-description>`),
56
- _tmpl$36 = /*#__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><!$><!/>`),
57
- _tmpl$37 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
58
- _tmpl$38 = /*#__PURE__*/_$template(`<i>`),
59
- _tmpl$39 = /*#__PURE__*/_$template(`<a class=k2b-app-workspace__sidebar-item-action>`),
60
- _tmpl$40 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-item-action>`),
61
- _tmpl$41 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon><i>`),
62
- _tmpl$42 = /*#__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>`),
63
- _tmpl$43 = /*#__PURE__*/_$template(`<span>`),
64
- _tmpl$44 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__nav-tree-toggle data-k2b-nav-tree-toggle aria-hidden=true><i>`),
65
- _tmpl$45 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text>`),
66
- _tmpl$46 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-group role=group>`),
67
- _tmpl$47 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-node role=treeitem><!$><!/><!$><!/>`),
68
- _tmpl$48 = /*#__PURE__*/_$template(`<div role=tree>`),
69
- _tmpl$49 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-icon-grid>`),
70
- _tmpl$50 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
71
- _tmpl$51 = /*#__PURE__*/_$template(`<i class="ti ti-layout-sidebar"aria-hidden=true>`),
72
- _tmpl$52 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__head><!$><!/><!$><!/>`),
73
- _tmpl$53 = /*#__PURE__*/_$template(`<h1 class=k2b-app-workspace__head-heading data-k2b-page-trail-title>`),
74
- _tmpl$54 = /*#__PURE__*/_$template(`<div data-k2b-app-workspace><!$><!/><!$><!/>`);
24
+ _tmpl$6 = /*#__PURE__*/_$template(`<style>`),
25
+ _tmpl$7 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__main-primary data-workspace-main-region=main>`),
26
+ _tmpl$8 = /*#__PURE__*/_$template(`<section>`),
27
+ _tmpl$9 = /*#__PURE__*/_$template(`<i class="ti ti-chevron-left"aria-hidden=true>`),
28
+ _tmpl$0 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__level-body>`),
29
+ _tmpl$1 = /*#__PURE__*/_$template(`<i class="ti ti-layout-sidebar-right"aria-hidden=true>`),
30
+ _tmpl$10 = /*#__PURE__*/_$template(`<aside><button type=button class=k2b-app-workspace__detail-grabber aria-pressed=false><span aria-hidden=true></span></button><!$><!/>`),
31
+ _tmpl$11 = /*#__PURE__*/_$template(`<aside>`),
32
+ _tmpl$12 = /*#__PURE__*/_$template(`<nav class=k2b-app-workspace__sidebar-sheet>`),
33
+ _tmpl$13 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-desktop>`),
34
+ _tmpl$14 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-all aria-haspopup=dialog><span></span><i class="ti ti-chevron-down"aria-hidden=true>`),
35
+ _tmpl$15 = /*#__PURE__*/_$template(`<script>`),
36
+ _tmpl$16 = /*#__PURE__*/_$template(`<footer>`),
37
+ _tmpl$17 = /*#__PURE__*/_$template(`<span aria-hidden=true><i>`),
38
+ _tmpl$18 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-section-count>`),
39
+ _tmpl$19 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-section-toggle><!$><!/><i aria-hidden=true>`),
40
+ _tmpl$20 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-section-actions>`),
41
+ _tmpl$21 = /*#__PURE__*/_$template(`<header class=k2b-app-workspace__sidebar-section-header><!$><!/><!$><!/>`),
42
+ _tmpl$22 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-section-content>`),
43
+ _tmpl$23 = /*#__PURE__*/_$template(`<h2>`),
44
+ _tmpl$24 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__sidebar-item-actions>`),
45
+ _tmpl$25 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-mention aria-hidden=true>@`),
46
+ _tmpl$26 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-muted aria-hidden=true><i class="ti ti-bell-off">`),
47
+ _tmpl$27 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-count>`),
48
+ _tmpl$28 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-unread aria-hidden=true>`),
49
+ _tmpl$29 = /*#__PURE__*/_$template(`<span class=k2b-sr-only>, <!$><!/>`),
50
+ _tmpl$30 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status>`),
51
+ _tmpl$31 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-dot>`),
52
+ _tmpl$32 = /*#__PURE__*/_$template(`<button type=button>`),
53
+ _tmpl$33 = /*#__PURE__*/_$template(`<a>`),
54
+ _tmpl$34 = /*#__PURE__*/_$template(`<div><!$><!/><!$><!/>`),
55
+ _tmpl$35 = /*#__PURE__*/_$template(`<span aria-hidden=true>`),
56
+ _tmpl$36 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context-meta>`),
57
+ _tmpl$37 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context><span class="k2b-app-workspace__sidebar-item-context-label k2b-truncate-fade"></span><!$><!/>`),
58
+ _tmpl$38 = /*#__PURE__*/_$template(`<span class="k2b-app-workspace__sidebar-item-description k2b-truncate-fade">`),
59
+ _tmpl$39 = /*#__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 k2b-truncate-fade-lines"></span></span><!$><!/>`),
60
+ _tmpl$40 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
61
+ _tmpl$41 = /*#__PURE__*/_$template(`<i>`),
62
+ _tmpl$42 = /*#__PURE__*/_$template(`<a class=k2b-app-workspace__sidebar-item-action>`),
63
+ _tmpl$43 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-item-action>`),
64
+ _tmpl$44 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon><i>`),
65
+ _tmpl$45 = /*#__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 k2b-truncate-fade-lines"></span></span><span class="k2b-app-workspace__sidebar-item-description k2b-truncate-fade">`),
66
+ _tmpl$46 = /*#__PURE__*/_$template(`<span>`),
67
+ _tmpl$47 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__nav-tree-toggle data-k2b-nav-tree-toggle aria-hidden=true><i>`),
68
+ _tmpl$48 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-label><span class="k2b-app-workspace__sidebar-item-label-text k2b-truncate-fade-lines">`),
69
+ _tmpl$49 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-group role=group>`),
70
+ _tmpl$50 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-node role=treeitem><!$><!/><!$><!/>`),
71
+ _tmpl$51 = /*#__PURE__*/_$template(`<div role=tree>`),
72
+ _tmpl$52 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-icon-grid>`),
73
+ _tmpl$53 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
74
+ _tmpl$54 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__head-primary-label>`),
75
+ _tmpl$55 = /*#__PURE__*/_$template(`<i class="ti ti-layout-sidebar"aria-hidden=true>`),
76
+ _tmpl$56 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__head-views>`),
77
+ _tmpl$57 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__head-filters role=group><!$><!/><!$><!/>`),
78
+ _tmpl$58 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__head-count><span>`),
79
+ _tmpl$59 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__head-actions><!$><!/><!$><!/>`),
80
+ _tmpl$60 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__head><div class=k2b-app-workspace__head-lead><!$><!/><!$><!/><!$><!/><!$><!/><!$><!/></div><!$><!/>`),
81
+ _tmpl$61 = /*#__PURE__*/_$template(`<h1 class=k2b-app-workspace__head-heading data-k2b-page-trail-title>`),
82
+ _tmpl$62 = /*#__PURE__*/_$template(`<div data-k2b-app-workspace>`);
75
83
  import { Link } from "@k2b/ssr/nav";
76
- import { children, createContext, createEffect, createMemo, createSignal, createUniqueId, For, mergeProps, on, onCleanup, onMount, Show, useContext } from "solid-js";
77
- import { isServer } from "solid-js/web";
78
- import { IconButton, IconButtonLink } from "../actions/Button";
84
+ import { children, createContext, createEffect, createMemo, createRoot, createSignal, createUniqueId, For, getOwner, mergeProps, on, onCleanup, onMount, Show, useContext } from "solid-js";
85
+ import { Dynamic, isServer } from "solid-js/web";
86
+ import { Button, ButtonLink, IconButton, IconButtonLink } from "../actions/Button";
87
+ import { useFilterMessages } from "../actions/filter-messages";
88
+ import { dialogCore } from "../feedback/dialog-core";
89
+ import { RenderErrorBoundary } from "../internal/render-error";
79
90
  import { APP_WORKSPACE_DETAIL_CLOSE_EVENT, APP_WORKSPACE_DETAIL_STEP_EVENT, APP_WORKSPACE_SIDEBAR_HIDE_EVENT, installAppWorkspaceController } from "./app-workspace-controller";
80
- 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";
91
+ 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_MAIN_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";
92
+ import BottomSheet, { bottomSheetAdaptiveOptions } from "./BottomSheet";
81
93
  import { PageTitle, usePageTrail } from "./PageTitle";
82
94
  import { SidebarItemPreview } from "./SidebarItemPreview";
83
95
  import { AppWorkspaceSidebarSwitcher } from "./SidebarSwitcher";
@@ -89,6 +101,8 @@ const ResizeContext = createContext(true);
89
101
  /** The enclosing workspace: its head names the sidebar, and a nested workspace leaves the page title to it. */
90
102
  const WorkspaceContext = createContext();
91
103
  const LayoutStateContext = createContext(null);
104
+ const HEAD = Symbol("AppWorkspace.Head");
105
+ const headSlot = value => !!value && typeof value === "object" && "kind" in value && value.kind === HEAD;
92
106
  const MAIN_PANE = Symbol("AppWorkspace.MainPane");
93
107
  const SIDEBAR_DESKTOP = Symbol("AppWorkspace.SidebarDesktop");
94
108
  const SIDEBAR_ITEM_ICON = Symbol("AppWorkspace.SidebarItemIcon");
@@ -108,6 +122,13 @@ const mainPaneSlot = value => Boolean(value && typeof value === "object" && "kin
108
122
  const sidebarChildSlot = value => Boolean(value && typeof value === "object" && "kind" in value && value.kind === SIDEBAR_DESKTOP);
109
123
  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));
110
124
  const navTreeItemSlot = value => Boolean(value && typeof value === "object" && "kind" in value && value.kind === NAV_TREE_ITEM);
125
+ /** Head row slot. Must be a direct child of AppWorkspace; its parts may be islands. */
126
+ function AppWorkspaceHeadSlot(props) {
127
+ return {
128
+ kind: HEAD,
129
+ props
130
+ };
131
+ }
111
132
  function ResizeHandle(props) {
112
133
  const workspaceMessages = useWorkspaceMessages();
113
134
  const workspace = useContext(WorkspaceContext);
@@ -214,36 +235,37 @@ function LevelHead(props) {
214
235
  const actions = children(() => props.actions);
215
236
  return (() => {
216
237
  var _el$2 = _$getNextElement(_tmpl$4),
217
- _el$9 = _el$2.firstChild,
218
- [_el$0, _co$2] = _$getNextMarker(_el$9.nextSibling),
219
- _el$3 = _el$0.nextSibling,
238
+ _el$0 = _el$2.firstChild,
239
+ [_el$1, _co$2] = _$getNextMarker(_el$0.nextSibling),
240
+ _el$3 = _el$1.nextSibling,
220
241
  _el$4 = _el$3.firstChild,
221
- _el$6 = _el$4.nextSibling,
222
- [_el$7, _co$] = _$getNextMarker(_el$6.nextSibling),
223
- _el$1 = _el$3.nextSibling,
224
- [_el$10, _co$3] = _$getNextMarker(_el$1.nextSibling);
225
- _$insert(_el$2, () => props.children, _el$0, _co$2);
226
- _$insert(_el$4, () => props.label);
242
+ _el$5 = _el$4.firstChild,
243
+ _el$7 = _el$4.nextSibling,
244
+ [_el$8, _co$] = _$getNextMarker(_el$7.nextSibling),
245
+ _el$10 = _el$3.nextSibling,
246
+ [_el$11, _co$3] = _$getNextMarker(_el$10.nextSibling);
247
+ _$insert(_el$2, () => props.children, _el$1, _co$2);
248
+ _$insert(_el$5, () => props.label);
227
249
  _$insert(_el$3, _$createComponent(Show, {
228
250
  get when() {
229
251
  return description();
230
252
  },
231
253
  get children() {
232
- var _el$5 = _$getNextElement(_tmpl$2);
233
- _$insert(_el$5, description);
234
- return _el$5;
254
+ var _el$6 = _$getNextElement(_tmpl$2);
255
+ _$insert(_el$6, description);
256
+ return _el$6;
235
257
  }
236
- }), _el$7, _co$);
258
+ }), _el$8, _co$);
237
259
  _$insert(_el$2, _$createComponent(Show, {
238
260
  get when() {
239
261
  return actions();
240
262
  },
241
263
  get children() {
242
- var _el$8 = _$getNextElement(_tmpl$3);
243
- _$insert(_el$8, actions);
244
- return _el$8;
264
+ var _el$9 = _$getNextElement(_tmpl$3);
265
+ _$insert(_el$9, actions);
266
+ return _el$9;
245
267
  }
246
- }), _el$10, _co$3);
268
+ }), _el$11, _co$3);
247
269
  return _el$2;
248
270
  })();
249
271
  }
@@ -334,14 +356,37 @@ function AppWorkspaceMain(props) {
334
356
  // layout. Deriving it from `regions()` made a workspace whose panes are all
335
357
  // closed fall back to `resolved()`, which renders the raw slot objects.
336
358
  const hasPanes = createMemo(() => paneIds().length > 0);
337
- return (() => {
338
- var _el$11 = _$getNextElement(_tmpl$5);
359
+ // The workspace's tracks and queries read Main's minimum on the workspace
360
+ // itself, which cannot read Main's own variables, so this rule hands it up,
361
+ // as `AppWorkspace.Detail` does with its width.
362
+ const minWidth = () => {
363
+ const value = props.minWidth;
364
+ return value !== undefined && Number.isFinite(value) && value > APP_WORKSPACE_MAIN_MIN ? Math.round(value) : undefined;
365
+ };
366
+ const minWidthRule = value => {
367
+ const main = `.k2b-app-workspace__main[data-workspace-main-min="${value}"]`;
368
+ return `.k2b-app-workspace:has(> .k2b-app-workspace__content > ${main}, > .k2b-app-workspace__content > :is(solid-island, solid-client) > ${main}){--k2b-workspace-main-min:${value}px}`;
369
+ };
370
+ return [_$createComponent(Show, {
371
+ get when() {
372
+ return minWidth();
373
+ },
374
+ children: value => (() => {
375
+ var _el$13 = _$getNextElement(_tmpl$6);
376
+ _$effect(() => _$setProperty(_el$13, "innerHTML", minWidthRule(value())));
377
+ return _el$13;
378
+ })()
379
+ }), (() => {
380
+ var _el$12 = _$getNextElement(_tmpl$5);
339
381
  var _ref$ = mainElement;
340
- typeof _ref$ === "function" ? _$use(_ref$, _el$11) : mainElement = _el$11;
341
- _$spread(_el$11, _$mergeProps({
382
+ typeof _ref$ === "function" ? _$use(_ref$, _el$12) : mainElement = _el$12;
383
+ _$spread(_el$12, _$mergeProps({
342
384
  get ["class"]() {
343
385
  return `k2b-app-workspace__main ${hasPanes() ? "has-panes" : ""} ${props.class ?? ""}`;
344
386
  },
387
+ get ["data-workspace-main-min"]() {
388
+ return minWidth();
389
+ },
345
390
  get ["data-workspace-levels"]() {
346
391
  return levelsMode() ? "" : undefined;
347
392
  },
@@ -364,7 +409,7 @@ function AppWorkspaceMain(props) {
364
409
  return props["aria-busy"];
365
410
  }
366
411
  }, () => scrollAttrs(props.scrollPreserveKey)), false, true);
367
- _$insert(_el$11, _$createComponent(Show, {
412
+ _$insert(_el$12, _$createComponent(Show, {
368
413
  get when() {
369
414
  return hasPanes();
370
415
  },
@@ -383,10 +428,10 @@ function AppWorkspaceMain(props) {
383
428
  };
384
429
  if (region.type === "primary") {
385
430
  return (() => {
386
- var _el$12 = _$getNextElement(_tmpl$6);
387
- _$insert(_el$12, () => region.children);
388
- _$effect(() => _$setAttribute(_el$12, "data-workspace-mobile-active", activeMobilePane() === "main" ? "true" : "false"));
389
- return _el$12;
431
+ var _el$14 = _$getNextElement(_tmpl$7);
432
+ _$insert(_el$14, () => region.children);
433
+ _$effect(() => _$setAttribute(_el$14, "data-workspace-mobile-active", activeMobilePane() === "main" ? "true" : "false"));
434
+ return _el$14;
390
435
  })();
391
436
  }
392
437
  const pane = region.slot;
@@ -441,9 +486,9 @@ function AppWorkspaceMain(props) {
441
486
  return handle();
442
487
  }
443
488
  }), (() => {
444
- var _el$13 = _$getNextElement(_tmpl$7);
445
- _$setAttribute(_el$13, "data-workspace-panel-id", panelId);
446
- _$insert(_el$13, (() => {
489
+ var _el$15 = _$getNextElement(_tmpl$8);
490
+ _$setAttribute(_el$15, "data-workspace-panel-id", panelId);
491
+ _$insert(_el$15, (() => {
447
492
  var _c$ = _$memo(() => !!levelsMode());
448
493
  return () => _c$() ? [_$createComponent(LevelHead, {
449
494
  get label() {
@@ -478,26 +523,26 @@ function AppWorkspaceMain(props) {
478
523
  return props.onLevelNavigate ? navigateBack : undefined;
479
524
  },
480
525
  get children() {
481
- return _$getNextElement(_tmpl$8);
526
+ return _$getNextElement(_tmpl$9);
482
527
  }
483
528
  });
484
529
  }
485
530
  });
486
531
  }
487
532
  }), (() => {
488
- var _el$15 = _$getNextElement(_tmpl$9);
489
- _$insert(_el$15, () => pane.props.children);
533
+ var _el$17 = _$getNextElement(_tmpl$0);
534
+ _$insert(_el$17, () => pane.props.children);
490
535
  _$effect(_p$ => {
491
536
  var _v$28 = pane.props.scroll === false ? "false" : undefined,
492
537
  _v$29 = pane.props.scroll !== false && pane.props.scrollFade !== false ? "both" : undefined;
493
- _v$28 !== _p$.e && _$setAttribute(_el$15, "data-scroll", _p$.e = _v$28);
494
- _v$29 !== _p$.t && _$setAttribute(_el$15, "data-scroll-fade-mode", _p$.t = _v$29);
538
+ _v$28 !== _p$.e && _$setAttribute(_el$17, "data-scroll", _p$.e = _v$28);
539
+ _v$29 !== _p$.t && _$setAttribute(_el$17, "data-scroll-fade-mode", _p$.t = _v$29);
495
540
  return _p$;
496
541
  }, {
497
542
  e: undefined,
498
543
  t: undefined
499
544
  });
500
- return _el$15;
545
+ return _el$17;
501
546
  })()] : pane.props.children;
502
547
  })());
503
548
  _$effect(_p$ => {
@@ -519,20 +564,20 @@ function AppWorkspaceMain(props) {
519
564
  "--k2b-workspace-panel-size": `clamp(${minSize()}px, var(${variable}, ${defaultSize()}px), ${maxSize()}px)`,
520
565
  "--k2b-workspace-panel-min": `${minSize()}px`
521
566
  };
522
- _v$14 !== _p$.e && _$setAttribute(_el$13, "id", _p$.e = _v$14);
523
- _v$15 !== _p$.t && _$className(_el$13, _p$.t = _v$15);
524
- _v$16 !== _p$.a && _$setAttribute(_el$13, "aria-label", _p$.a = _v$16);
525
- _v$17 !== _p$.o && _$setAttribute(_el$13, "data-workspace-level", _p$.o = _v$17);
526
- _v$18 !== _p$.i && _$setAttribute(_el$13, "data-workspace-level-shown", _p$.i = _v$18);
527
- _v$19 !== _p$.n && _$setAttribute(_el$13, "data-workspace-level-first", _p$.n = _v$19);
528
- _v$20 !== _p$.s && _$setAttribute(_el$13, "data-workspace-level-last", _p$.s = _v$20);
529
- _v$21 !== _p$.h && _$setAttribute(_el$13, "data-workspace-main-region", _p$.h = _v$21);
530
- _v$22 !== _p$.r && _$setAttribute(_el$13, "data-workspace-mobile-active", _p$.r = _v$22);
531
- _v$23 !== _p$.d && _$setAttribute(_el$13, "data-workspace-resizable", _p$.d = _v$23);
532
- _v$24 !== _p$.l && _$setAttribute(_el$13, "data-surface", _p$.l = _v$24);
533
- _v$25 !== _p$.u && _$setAttribute(_el$13, "data-scroll", _p$.u = _v$25);
534
- _v$26 !== _p$.c && _$setAttribute(_el$13, "data-scroll-fade-mode", _p$.c = _v$26);
535
- _p$.w = _$style(_el$13, _v$27, _p$.w);
567
+ _v$14 !== _p$.e && _$setAttribute(_el$15, "id", _p$.e = _v$14);
568
+ _v$15 !== _p$.t && _$className(_el$15, _p$.t = _v$15);
569
+ _v$16 !== _p$.a && _$setAttribute(_el$15, "aria-label", _p$.a = _v$16);
570
+ _v$17 !== _p$.o && _$setAttribute(_el$15, "data-workspace-level", _p$.o = _v$17);
571
+ _v$18 !== _p$.i && _$setAttribute(_el$15, "data-workspace-level-shown", _p$.i = _v$18);
572
+ _v$19 !== _p$.n && _$setAttribute(_el$15, "data-workspace-level-first", _p$.n = _v$19);
573
+ _v$20 !== _p$.s && _$setAttribute(_el$15, "data-workspace-level-last", _p$.s = _v$20);
574
+ _v$21 !== _p$.h && _$setAttribute(_el$15, "data-workspace-main-region", _p$.h = _v$21);
575
+ _v$22 !== _p$.r && _$setAttribute(_el$15, "data-workspace-mobile-active", _p$.r = _v$22);
576
+ _v$23 !== _p$.d && _$setAttribute(_el$15, "data-workspace-resizable", _p$.d = _v$23);
577
+ _v$24 !== _p$.l && _$setAttribute(_el$15, "data-surface", _p$.l = _v$24);
578
+ _v$25 !== _p$.u && _$setAttribute(_el$15, "data-scroll", _p$.u = _v$25);
579
+ _v$26 !== _p$.c && _$setAttribute(_el$15, "data-scroll-fade-mode", _p$.c = _v$26);
580
+ _p$.w = _$style(_el$15, _v$27, _p$.w);
536
581
  return _p$;
537
582
  }, {
538
583
  e: undefined,
@@ -550,7 +595,7 @@ function AppWorkspaceMain(props) {
550
595
  c: undefined,
551
596
  w: undefined
552
597
  });
553
- return _el$13;
598
+ return _el$15;
554
599
  })(), _$createComponent(Show, {
555
600
  get when() {
556
601
  return _$memo(() => !!resizable())() && before();
@@ -566,8 +611,8 @@ function AppWorkspaceMain(props) {
566
611
  }
567
612
  }));
568
613
  _$runHydrationEvents();
569
- return _el$11;
570
- })();
614
+ return _el$12;
615
+ })()];
571
616
  }
572
617
  function AppWorkspaceDetail(props) {
573
618
  const workspaceMessages = useWorkspaceMessages();
@@ -618,10 +663,22 @@ function AppWorkspaceDetail(props) {
618
663
  });
619
664
  });
620
665
  return [(() => {
621
- var _el$16 = _$getNextElement(_tmpl$0);
622
- _$effect(() => _$setProperty(_el$16, "innerHTML", workspaceRule()));
623
- return _el$16;
624
- })(), _$createComponent(Show, {
666
+ var _el$18 = _$getNextElement(_tmpl$6);
667
+ _$effect(() => _$setProperty(_el$18, "innerHTML", workspaceRule()));
668
+ return _el$18;
669
+ })(), _$createComponent(Button, {
670
+ type: "button",
671
+ variant: "ghost",
672
+ get ["aria-controls"]() {
673
+ return domId();
674
+ },
675
+ "aria-expanded": "false",
676
+ "data-app-workspace-detail-toggle": "",
677
+ "class": "k2b-app-workspace__detail-toggle",
678
+ get children() {
679
+ return [_$getNextElement(_tmpl$1), _$memo(() => workspaceMessages().details)];
680
+ }
681
+ }), _$createComponent(Show, {
625
682
  get when() {
626
683
  return resizable();
627
684
  },
@@ -650,39 +707,41 @@ function AppWorkspaceDetail(props) {
650
707
  });
651
708
  }
652
709
  }), (() => {
653
- var _el$17 = _$getNextElement(_tmpl$1),
654
- _el$18 = _el$17.firstChild,
655
- _el$19 = _el$18.nextSibling,
656
- [_el$20, _co$4] = _$getNextMarker(_el$19.nextSibling);
710
+ var _el$20 = _$getNextElement(_tmpl$10),
711
+ _el$21 = _el$20.firstChild,
712
+ _el$22 = _el$21.nextSibling,
713
+ [_el$23, _co$4] = _$getNextMarker(_el$22.nextSibling);
657
714
  var _ref$2 = aside;
658
- typeof _ref$2 === "function" ? _$use(_ref$2, _el$17) : aside = _el$17;
659
- _$insert(_el$17, () => props.children, _el$20, _co$4);
715
+ typeof _ref$2 === "function" ? _$use(_ref$2, _el$20) : aside = _el$20;
716
+ _$insert(_el$20, () => props.children, _el$23, _co$4);
660
717
  _$effect(_p$ => {
661
718
  var _v$30 = domId(),
662
719
  _v$31 = `k2b-app-workspace__detail ${props.class ?? ""}`,
663
720
  _v$32 = props.width ?? "md",
664
721
  _v$33 = props.phone === "page" ? "page" : undefined,
665
- _v$34 = panelId(),
666
- _v$35 = resizable() ? "true" : "false",
667
- _v$36 = props.onClose ? "true" : undefined,
668
- _v$37 = props.onStep ? "true" : undefined,
669
- _v$38 = !props.open,
670
- _v$39 = {
722
+ _v$34 = props.openOnChoice === false ? "request" : undefined,
723
+ _v$35 = panelId(),
724
+ _v$36 = resizable() ? "true" : "false",
725
+ _v$37 = props.onClose ? "true" : undefined,
726
+ _v$38 = props.onStep ? "true" : undefined,
727
+ _v$39 = !props.open,
728
+ _v$40 = {
671
729
  ...sizeStyle(),
672
730
  "view-transition-name": props.viewTransitionName
673
731
  },
674
- _v$40 = workspaceMessages().detailFullHeight;
675
- _v$30 !== _p$.e && _$setAttribute(_el$17, "id", _p$.e = _v$30);
676
- _v$31 !== _p$.t && _$className(_el$17, _p$.t = _v$31);
677
- _v$32 !== _p$.a && _$setAttribute(_el$17, "data-width", _p$.a = _v$32);
678
- _v$33 !== _p$.o && _$setAttribute(_el$17, "data-workspace-detail-phone", _p$.o = _v$33);
679
- _v$34 !== _p$.i && _$setAttribute(_el$17, "data-workspace-panel-id", _p$.i = _v$34);
680
- _v$35 !== _p$.n && _$setAttribute(_el$17, "data-workspace-resizable", _p$.n = _v$35);
681
- _v$36 !== _p$.s && _$setAttribute(_el$17, "data-workspace-detail-closable", _p$.s = _v$36);
682
- _v$37 !== _p$.h && _$setAttribute(_el$17, "data-workspace-detail-steppable", _p$.h = _v$37);
683
- _v$38 !== _p$.r && _$setProperty(_el$17, "hidden", _p$.r = _v$38);
684
- _p$.d = _$style(_el$17, _v$39, _p$.d);
685
- _v$40 !== _p$.l && _$setAttribute(_el$18, "aria-label", _p$.l = _v$40);
732
+ _v$41 = workspaceMessages().detailFullHeight;
733
+ _v$30 !== _p$.e && _$setAttribute(_el$20, "id", _p$.e = _v$30);
734
+ _v$31 !== _p$.t && _$className(_el$20, _p$.t = _v$31);
735
+ _v$32 !== _p$.a && _$setAttribute(_el$20, "data-width", _p$.a = _v$32);
736
+ _v$33 !== _p$.o && _$setAttribute(_el$20, "data-workspace-detail-phone", _p$.o = _v$33);
737
+ _v$34 !== _p$.i && _$setAttribute(_el$20, "data-workspace-detail-choice", _p$.i = _v$34);
738
+ _v$35 !== _p$.n && _$setAttribute(_el$20, "data-workspace-panel-id", _p$.n = _v$35);
739
+ _v$36 !== _p$.s && _$setAttribute(_el$20, "data-workspace-resizable", _p$.s = _v$36);
740
+ _v$37 !== _p$.h && _$setAttribute(_el$20, "data-workspace-detail-closable", _p$.h = _v$37);
741
+ _v$38 !== _p$.r && _$setAttribute(_el$20, "data-workspace-detail-steppable", _p$.r = _v$38);
742
+ _v$39 !== _p$.d && _$setProperty(_el$20, "hidden", _p$.d = _v$39);
743
+ _p$.l = _$style(_el$20, _v$40, _p$.l);
744
+ _v$41 !== _p$.u && _$setAttribute(_el$21, "aria-label", _p$.u = _v$41);
686
745
  return _p$;
687
746
  }, {
688
747
  e: undefined,
@@ -695,9 +754,10 @@ function AppWorkspaceDetail(props) {
695
754
  h: undefined,
696
755
  r: undefined,
697
756
  d: undefined,
698
- l: undefined
757
+ l: undefined,
758
+ u: undefined
699
759
  });
700
- return _el$17;
760
+ return _el$20;
701
761
  })()];
702
762
  }
703
763
  function AppWorkspaceBottomDrawer(props) {
@@ -747,25 +807,25 @@ function AppWorkspaceBottomDrawer(props) {
747
807
  });
748
808
  }
749
809
  }), (() => {
750
- var _el$21 = _$getNextElement(_tmpl$10);
751
- _$insert(_el$21, () => props.children);
810
+ var _el$24 = _$getNextElement(_tmpl$11);
811
+ _$insert(_el$24, () => props.children);
752
812
  _$effect(_p$ => {
753
- var _v$41 = domId(),
754
- _v$42 = `k2b-app-workspace__drawer ${props.class ?? ""}`,
755
- _v$43 = props.height ?? "md",
756
- _v$44 = panelId(),
757
- _v$45 = resizable() ? "true" : "false",
758
- _v$46 = !props.open,
759
- _v$47 = `var(${variable()}, ${defaultHeight()}px)`,
760
- _v$48 = props.viewTransitionName;
761
- _v$41 !== _p$.e && _$setAttribute(_el$21, "id", _p$.e = _v$41);
762
- _v$42 !== _p$.t && _$className(_el$21, _p$.t = _v$42);
763
- _v$43 !== _p$.a && _$setAttribute(_el$21, "data-height", _p$.a = _v$43);
764
- _v$44 !== _p$.o && _$setAttribute(_el$21, "data-workspace-panel-id", _p$.o = _v$44);
765
- _v$45 !== _p$.i && _$setAttribute(_el$21, "data-workspace-resizable", _p$.i = _v$45);
766
- _v$46 !== _p$.n && _$setProperty(_el$21, "hidden", _p$.n = _v$46);
767
- _v$47 !== _p$.s && _$setStyleProperty(_el$21, "--k2b-workspace-panel-size", _p$.s = _v$47);
768
- _v$48 !== _p$.h && _$setStyleProperty(_el$21, "view-transition-name", _p$.h = _v$48);
813
+ var _v$42 = domId(),
814
+ _v$43 = `k2b-app-workspace__drawer ${props.class ?? ""}`,
815
+ _v$44 = props.height ?? "md",
816
+ _v$45 = panelId(),
817
+ _v$46 = resizable() ? "true" : "false",
818
+ _v$47 = !props.open,
819
+ _v$48 = `var(${variable()}, ${defaultHeight()}px)`,
820
+ _v$49 = props.viewTransitionName;
821
+ _v$42 !== _p$.e && _$setAttribute(_el$24, "id", _p$.e = _v$42);
822
+ _v$43 !== _p$.t && _$className(_el$24, _p$.t = _v$43);
823
+ _v$44 !== _p$.a && _$setAttribute(_el$24, "data-height", _p$.a = _v$44);
824
+ _v$45 !== _p$.o && _$setAttribute(_el$24, "data-workspace-panel-id", _p$.o = _v$45);
825
+ _v$46 !== _p$.i && _$setAttribute(_el$24, "data-workspace-resizable", _p$.i = _v$46);
826
+ _v$47 !== _p$.n && _$setProperty(_el$24, "hidden", _p$.n = _v$47);
827
+ _v$48 !== _p$.s && _$setStyleProperty(_el$24, "--k2b-workspace-panel-size", _p$.s = _v$48);
828
+ _v$49 !== _p$.h && _$setStyleProperty(_el$24, "view-transition-name", _p$.h = _v$49);
769
829
  return _p$;
770
830
  }, {
771
831
  e: undefined,
@@ -777,7 +837,7 @@ function AppWorkspaceBottomDrawer(props) {
777
837
  s: undefined,
778
838
  h: undefined
779
839
  });
780
- return _el$21;
840
+ return _el$24;
781
841
  })()];
782
842
  }
783
843
  function AppWorkspaceSidebar(props) {
@@ -796,56 +856,210 @@ function AppWorkspaceSidebar(props) {
796
856
  const resolved = children(() => props.hidden ? undefined : props.children);
797
857
  const slots = createMemo(() => flatten(resolved()).filter(sidebarChildSlot));
798
858
  const desktop = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_DESKTOP));
859
+ const stacked = () => props.mobile === "stacked";
860
+ const workspaceMessages = useWorkspaceMessages();
861
+ const owner = getOwner();
862
+ const [sheetOpen, setSheetOpen] = createSignal(false);
799
863
  let aside;
864
+ let row;
865
+ // Fades mark the row's cut edges; the sidebar column never scrolls sideways, so it never shows one.
866
+ createScrollFade(() => row, () => stacked());
800
867
  onMount(() => {
801
868
  const requestHide = () => props.onHiddenChange?.(true);
802
869
  aside?.addEventListener(APP_WORKSPACE_SIDEBAR_HIDE_EVENT, requestHide);
803
870
  onCleanup(() => aside?.removeEventListener(APP_WORKSPACE_SIDEBAR_HIDE_EVENT, requestHide));
871
+ // A client-rendered row settles here; server markup settled in its inline script.
872
+ if (stacked() && row) settleChipRow(row, scrollFadeEdges);
804
873
  });
805
- return [(() => {
806
- var _el$22 = _$getNextElement(_tmpl$10);
807
- var _ref$3 = aside;
808
- typeof _ref$3 === "function" ? _$use(_ref$3, _el$22) : aside = _el$22;
809
- _$insert(_el$22, _$createComponent(Show, {
810
- get when() {
811
- return !props.hidden;
812
- },
813
- get children() {
814
- var _el$23 = _$getNextElement(_tmpl$11);
815
- _$insert(_el$23, () => desktop()?.children);
816
- return _el$23;
874
+ /**
875
+ * The complete sidebar for a chip row: a second rendering of the same
876
+ * children in a sheet. It shares the application's state through its
877
+ * signals, inherits this sidebar's context and accent, and is disposed with
878
+ * the sheet. A chosen link runs its own handlers in the sheet and closes it.
879
+ */
880
+ const openAll = button => {
881
+ if (sheetOpen() || !aside) return;
882
+ setSheetOpen(true);
883
+ const computed = getComputedStyle(aside);
884
+ const accent = Object.fromEntries(["--k2b-app-workspace-active", "--k2b-app-workspace-selected", "--k2b-link-accent", "--k2b-detail-panel-accent"].map(name => [name, computed.getPropertyValue(name).trim()]).filter(([, value]) => value));
885
+ // The sheet belongs to the chip row: when the workspace widens into the sidebar column, All disappears and the sheet closes.
886
+ const leave = new AbortController();
887
+ const watch = new ResizeObserver(() => {
888
+ if (button.getClientRects().length === 0) leave.abort();
889
+ });
890
+ watch.observe(button);
891
+ /** A chosen link closes the sheet once its own handlers ran, an enhanced navigation's included. */
892
+ const choose = (event, close) => {
893
+ const target = event.target;
894
+ if (!target?.closest?.("a[href]")) return;
895
+ if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
896
+ // A tree branch's disclosure inside its link only expands the branch.
897
+ if (target.closest("[data-k2b-nav-tree-toggle]")) return;
898
+ // A task, not a microtask: the document's delegated handlers run later in this dispatch.
899
+ setTimeout(close);
900
+ };
901
+ void dialogCore.open((close, context) => {
902
+ let dispose;
903
+ const view = createRoot(disposeRoot => {
904
+ dispose = disposeRoot;
905
+ return _$createComponent(BottomSheet, {
906
+ get onDismiss() {
907
+ return context.requestDismiss;
908
+ },
909
+ get children() {
910
+ return [_$createComponent(BottomSheet.Header, {
911
+ get title() {
912
+ return props.label;
913
+ },
914
+ close: () => void context.requestDismiss()
915
+ }), _$createComponent(BottomSheet.Body, {
916
+ get children() {
917
+ return _$createComponent(RenderErrorBoundary, {
918
+ onClose: () => void context.requestDismiss(),
919
+ content: () => {
920
+ const resolved = children(() => flatten(props.hidden ? undefined : props.children).filter(sidebarChildSlot).find(slot => slot.kind === SIDEBAR_DESKTOP)?.children);
921
+ // Pre-resolved children belong to the row; inserting them here would move its nodes into the sheet.
922
+ if (resolved.toArray().some(node => node instanceof Node && aside?.contains(node))) {
923
+ console.error("AppWorkspace.Sidebar: write the sidebar children as JSX inside AppWorkspace.Sidebar so they can render a second time in the All sheet; pre-resolved children cannot be reused.");
924
+ return null;
925
+ }
926
+ return (() => {
927
+ var _el$25 = _$getNextElement(_tmpl$12);
928
+ _$addEventListener(_el$25, "click", event => choose(event, () => close()));
929
+ _$insert(_el$25, resolved);
930
+ _$effect(_p$ => {
931
+ var _v$50 = props.label,
932
+ _v$51 = accent;
933
+ _v$50 !== _p$.e && _$setAttribute(_el$25, "aria-label", _p$.e = _v$50);
934
+ _p$.t = _$style(_el$25, _v$51, _p$.t);
935
+ return _p$;
936
+ }, {
937
+ e: undefined,
938
+ t: undefined
939
+ });
940
+ return _el$25;
941
+ })();
942
+ }
943
+ });
944
+ }
945
+ })];
946
+ }
947
+ });
948
+ }, owner);
949
+ onCleanup(() => dispose?.());
950
+ return view;
951
+ },
952
+ // No history entry: an application may replace the URL from inside the sidebar, such as a search, and an
953
+ // entry of the sheet would then outlive it. So Back leaves the page here, unlike other phone sheets.
954
+ {
955
+ ...bottomSheetAdaptiveOptions,
956
+ ariaLabel: props.label,
957
+ signal: leave.signal
958
+ }).finally(() => {
959
+ watch.disconnect();
960
+ setSheetOpen(false);
961
+ if (button.isConnected && !aside?.contains(document.activeElement)) {
962
+ if (button.getClientRects().length) button.focus({
963
+ preventScroll: true
964
+ });else {
965
+ const current = aside?.querySelector("[aria-current], .k2b-app-workspace__sidebar-item.is-active");
966
+ const link = current?.matches("a[href]") ? current : current?.querySelector("a[href]");
967
+ (link ?? aside?.querySelector("a[href]"))?.focus({
968
+ preventScroll: true
969
+ });
970
+ }
817
971
  }
818
- }));
819
- _$effect(_p$ => {
820
- var _v$49 = domId(),
821
- _v$50 = `k2b-app-workspace__sidebar ${props.class ?? ""}`,
822
- _v$51 = props.label,
823
- _v$52 = props.hidden || undefined,
824
- _v$53 = props.mobile === "stacked" ? "stacked" : undefined,
825
- _v$54 = resizable() ? "true" : "false",
826
- _v$55 = props.collapsible ? "true" : "false",
827
- _v$56 = props.onHiddenChange ? "true" : undefined;
828
- _v$49 !== _p$.e && _$setAttribute(_el$22, "id", _p$.e = _v$49);
829
- _v$50 !== _p$.t && _$className(_el$22, _p$.t = _v$50);
830
- _v$51 !== _p$.a && _$setAttribute(_el$22, "aria-label", _p$.a = _v$51);
831
- _v$52 !== _p$.o && _$setProperty(_el$22, "hidden", _p$.o = _v$52);
832
- _v$53 !== _p$.i && _$setAttribute(_el$22, "data-mobile", _p$.i = _v$53);
833
- _v$54 !== _p$.n && _$setAttribute(_el$22, "data-workspace-resizable", _p$.n = _v$54);
834
- _v$55 !== _p$.s && _$setAttribute(_el$22, "data-workspace-collapsible", _p$.s = _v$55);
835
- _v$56 !== _p$.h && _$setAttribute(_el$22, "data-workspace-hideable", _p$.h = _v$56);
836
- return _p$;
837
- }, {
838
- e: undefined,
839
- t: undefined,
840
- a: undefined,
841
- o: undefined,
842
- i: undefined,
843
- n: undefined,
844
- s: undefined,
845
- h: undefined
846
972
  });
847
- return _el$22;
848
- })(), _$createComponent(Show, {
973
+ };
974
+ return [_$createComponent(Dynamic, {
975
+ get component() {
976
+ return stacked() ? "nav" : "aside";
977
+ },
978
+ ref(r$) {
979
+ var _ref$3 = aside;
980
+ typeof _ref$3 === "function" ? _ref$3(r$) : aside = r$;
981
+ },
982
+ get id() {
983
+ return domId();
984
+ },
985
+ get ["class"]() {
986
+ return `k2b-app-workspace__sidebar ${props.class ?? ""}`;
987
+ },
988
+ get ["aria-label"]() {
989
+ return props.label;
990
+ },
991
+ get hidden() {
992
+ return props.hidden || undefined;
993
+ },
994
+ get ["data-mobile"]() {
995
+ return stacked() ? "stacked" : undefined;
996
+ },
997
+ get ["data-workspace-resizable"]() {
998
+ return resizable() ? "true" : "false";
999
+ },
1000
+ get ["data-workspace-collapsible"]() {
1001
+ return props.collapsible ? "true" : "false";
1002
+ },
1003
+ get ["data-workspace-hideable"]() {
1004
+ return props.onHiddenChange ? "true" : undefined;
1005
+ },
1006
+ get children() {
1007
+ return _$createComponent(Show, {
1008
+ get when() {
1009
+ return !props.hidden;
1010
+ },
1011
+ get children() {
1012
+ return [(() => {
1013
+ var _el$26 = _$getNextElement(_tmpl$13);
1014
+ var _ref$4 = row;
1015
+ typeof _ref$4 === "function" ? _$use(_ref$4, _el$26) : row = _el$26;
1016
+ _$insert(_el$26, () => desktop()?.children);
1017
+ _$effect(_p$ => {
1018
+ var _v$52 = stacked() ? "both" : undefined,
1019
+ _v$53 = stacked() ? "horizontal" : undefined;
1020
+ _v$52 !== _p$.e && _$setAttribute(_el$26, "data-scroll-fade-mode", _p$.e = _v$52);
1021
+ _v$53 !== _p$.t && _$setAttribute(_el$26, "data-scroll-fade-axis", _p$.t = _v$53);
1022
+ return _p$;
1023
+ }, {
1024
+ e: undefined,
1025
+ t: undefined
1026
+ });
1027
+ return _el$26;
1028
+ })(), _$createComponent(Show, {
1029
+ get when() {
1030
+ return stacked();
1031
+ },
1032
+ get children() {
1033
+ return [(() => {
1034
+ var _el$27 = _$getNextElement(_tmpl$14),
1035
+ _el$28 = _el$27.firstChild;
1036
+ _el$27.$$click = event => openAll(event.currentTarget);
1037
+ _$insert(_el$28, () => workspaceMessages().sidebarAll);
1038
+ _$effect(_p$ => {
1039
+ var _v$54 = sheetOpen(),
1040
+ _v$55 = props.label ? workspaceMessages().sidebarAllLabel({
1041
+ label: props.label
1042
+ }) : undefined;
1043
+ _v$54 !== _p$.e && _$setAttribute(_el$27, "aria-expanded", _p$.e = _v$54);
1044
+ _v$55 !== _p$.t && _$setAttribute(_el$27, "aria-label", _p$.t = _v$55);
1045
+ return _p$;
1046
+ }, {
1047
+ e: undefined,
1048
+ t: undefined
1049
+ });
1050
+ _$runHydrationEvents();
1051
+ return _el$27;
1052
+ })(), (() => {
1053
+ var _el$29 = _$getNextElement(_tmpl$15);
1054
+ _$setProperty(_el$29, "innerHTML", CHIP_ROW_SCRIPT);
1055
+ return _el$29;
1056
+ })()];
1057
+ }
1058
+ })];
1059
+ }
1060
+ });
1061
+ }
1062
+ }), _$createComponent(Show, {
849
1063
  get when() {
850
1064
  return _$memo(() => !!resizable())() && !props.hidden;
851
1065
  },
@@ -872,6 +1086,29 @@ function AppWorkspaceSidebar(props) {
872
1086
  }
873
1087
  })];
874
1088
  }
1089
+
1090
+ /**
1091
+ * A chip row that overflows shows the current object, centered when it is
1092
+ * not in view from the row's start, and fades its cut edges. Self-contained, because the inline script after server markup
1093
+ * embeds its source and runs it before the first paint; at 64 rem the column
1094
+ * does not overflow sideways and nothing changes.
1095
+ */
1096
+ function settleChipRow(row, edges) {
1097
+ if (!(row instanceof HTMLElement) || row.scrollWidth - row.clientWidth <= 1) return;
1098
+ const current = row.querySelector(".k2b-app-workspace__sidebar-item.is-active, [aria-current]");
1099
+ const chip = current && (current.closest(".k2b-app-workspace__sidebar-item") || current);
1100
+ if (chip) {
1101
+ // From the row's start, whatever scrolled it before (a body's own restore
1102
+ // runs first on the client, last on the server), so both paths agree.
1103
+ row.scrollLeft = 0;
1104
+ const bounds = row.getBoundingClientRect();
1105
+ const item = chip.getBoundingClientRect();
1106
+ if (item.left < bounds.left || item.right > bounds.right) row.scrollLeft += item.left - bounds.left - (bounds.width - item.width) / 2;
1107
+ }
1108
+ const fade = edges(row);
1109
+ if (fade) row.setAttribute("data-scroll-fade", fade);
1110
+ }
1111
+ const CHIP_ROW_SCRIPT = `(${settleChipRow})(document.currentScript&&document.currentScript.parentElement.querySelector(":scope>.k2b-app-workspace__sidebar-desktop"),${scrollFadeEdges})`;
875
1112
  const AppWorkspaceSidebarDesktop = props => ({
876
1113
  kind: SIDEBAR_DESKTOP,
877
1114
  children: props.children
@@ -890,10 +1127,10 @@ const AppWorkspaceSidebarBody = props => {
890
1127
  onMount(() => onCleanup(rememberSidebarScroll(body, scrollFadeEdges)));
891
1128
  createScrollFade(() => body, () => props.scrollFade !== false);
892
1129
  return [(() => {
893
- var _el$24 = _$getNextElement(_tmpl$5);
894
- var _ref$4 = body;
895
- typeof _ref$4 === "function" ? _$use(_ref$4, _el$24) : body = _el$24;
896
- _$spread(_el$24, _$mergeProps({
1130
+ var _el$30 = _$getNextElement(_tmpl$5);
1131
+ var _ref$5 = body;
1132
+ typeof _ref$5 === "function" ? _$use(_ref$5, _el$30) : body = _el$30;
1133
+ _$spread(_el$30, _$mergeProps({
897
1134
  get ["class"]() {
898
1135
  return `k2b-app-workspace__sidebar-body ${props.class ?? ""}`;
899
1136
  },
@@ -901,25 +1138,25 @@ const AppWorkspaceSidebarBody = props => {
901
1138
  return props.scrollFade !== false ? "both" : undefined;
902
1139
  }
903
1140
  }, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), false, true);
904
- _$insert(_el$24, () => props.children);
1141
+ _$insert(_el$30, () => props.children);
905
1142
  _$runHydrationEvents();
906
- return _el$24;
1143
+ return _el$30;
907
1144
  })(), (() => {
908
- var _el$25 = _$getNextElement(_tmpl$12);
909
- _$setProperty(_el$25, "innerHTML", SIDEBAR_SCROLL_MEMORY_SCRIPT);
910
- return _el$25;
1145
+ var _el$31 = _$getNextElement(_tmpl$15);
1146
+ _$setProperty(_el$31, "innerHTML", SIDEBAR_SCROLL_MEMORY_SCRIPT);
1147
+ return _el$31;
911
1148
  })()];
912
1149
  };
913
1150
  const AppWorkspaceSidebarFooter = props => (() => {
914
- var _el$26 = _$getNextElement(_tmpl$13);
915
- _$spread(_el$26, _$mergeProps({
1151
+ var _el$32 = _$getNextElement(_tmpl$16);
1152
+ _$spread(_el$32, _$mergeProps({
916
1153
  get ["class"]() {
917
1154
  return `k2b-app-workspace__sidebar-footer ${props.class ?? ""}`;
918
1155
  }
919
1156
  }, () => modeAttrs(props.sidebarMode)), false, true);
920
- _$insert(_el$26, () => props.children);
1157
+ _$insert(_el$32, () => props.children);
921
1158
  _$runHydrationEvents();
922
- return _el$26;
1159
+ return _el$32;
923
1160
  })();
924
1161
  const AppWorkspaceSidebarSection = props => {
925
1162
  const [expanded, setExpanded] = createSignal(props.defaultOpen ?? true);
@@ -930,27 +1167,27 @@ const AppWorkspaceSidebarSection = props => {
930
1167
  return props.icon;
931
1168
  },
932
1169
  get children() {
933
- var _el$27 = _$getNextElement(_tmpl$14),
934
- _el$28 = _el$27.firstChild;
935
- _$effect(() => _$className(_el$28, iconClass(props.icon)));
936
- return _el$27;
1170
+ var _el$33 = _$getNextElement(_tmpl$17),
1171
+ _el$34 = _el$33.firstChild;
1172
+ _$effect(() => _$className(_el$34, iconClass(props.icon)));
1173
+ return _el$33;
937
1174
  }
938
1175
  }), _$memo(() => props.title), _$createComponent(Show, {
939
1176
  get when() {
940
1177
  return props.count !== undefined;
941
1178
  },
942
1179
  get children() {
943
- var _el$29 = _$getNextElement(_tmpl$15);
944
- _$insert(_el$29, () => props.count);
945
- return _el$29;
1180
+ var _el$35 = _$getNextElement(_tmpl$18);
1181
+ _$insert(_el$35, () => props.count);
1182
+ return _el$35;
946
1183
  }
947
1184
  })];
948
1185
  return (() => {
949
- var _el$30 = _$getNextElement(_tmpl$19),
950
- _el$42 = _el$30.firstChild,
951
- [_el$43, _co$8] = _$getNextMarker(_el$42.nextSibling),
952
- _el$41 = _el$43.nextSibling;
953
- _$spread(_el$30, _$mergeProps({
1186
+ var _el$36 = _$getNextElement(_tmpl$22),
1187
+ _el$48 = _el$36.firstChild,
1188
+ [_el$49, _co$8] = _$getNextMarker(_el$48.nextSibling),
1189
+ _el$47 = _el$49.nextSibling;
1190
+ _$spread(_el$36, _$mergeProps({
954
1191
  get ["class"]() {
955
1192
  return `k2b-app-workspace__sidebar-section ${props.class ?? ""}`;
956
1193
  },
@@ -958,17 +1195,17 @@ const AppWorkspaceSidebarSection = props => {
958
1195
  return props.collapsible ? "true" : undefined;
959
1196
  }
960
1197
  }, () => modeAttrs(props.sidebarMode)), false, true);
961
- _$insert(_el$30, _$createComponent(Show, {
1198
+ _$insert(_el$36, _$createComponent(Show, {
962
1199
  get when() {
963
1200
  return props.title || props.actions;
964
1201
  },
965
1202
  get children() {
966
- var _el$31 = _$getNextElement(_tmpl$18),
967
- _el$37 = _el$31.firstChild,
968
- [_el$38, _co$6] = _$getNextMarker(_el$37.nextSibling),
969
- _el$39 = _el$38.nextSibling,
970
- [_el$40, _co$7] = _$getNextMarker(_el$39.nextSibling);
971
- _$insert(_el$31, _$createComponent(Show, {
1203
+ var _el$37 = _$getNextElement(_tmpl$21),
1204
+ _el$43 = _el$37.firstChild,
1205
+ [_el$44, _co$6] = _$getNextMarker(_el$43.nextSibling),
1206
+ _el$45 = _el$44.nextSibling,
1207
+ [_el$46, _co$7] = _$getNextMarker(_el$45.nextSibling);
1208
+ _$insert(_el$37, _$createComponent(Show, {
972
1209
  get when() {
973
1210
  return props.collapsible;
974
1211
  },
@@ -978,56 +1215,56 @@ const AppWorkspaceSidebarSection = props => {
978
1215
  return props.title;
979
1216
  },
980
1217
  get children() {
981
- var _el$44 = _$getNextElement(_tmpl$20);
982
- _$insert(_el$44, title);
983
- return _el$44;
1218
+ var _el$50 = _$getNextElement(_tmpl$23);
1219
+ _$insert(_el$50, title);
1220
+ return _el$50;
984
1221
  }
985
1222
  });
986
1223
  },
987
1224
  get children() {
988
- var _el$32 = _$getNextElement(_tmpl$16),
989
- _el$34 = _el$32.firstChild,
990
- [_el$35, _co$5] = _$getNextMarker(_el$34.nextSibling),
991
- _el$33 = _el$35.nextSibling;
992
- _el$32.$$click = () => {
1225
+ var _el$38 = _$getNextElement(_tmpl$19),
1226
+ _el$40 = _el$38.firstChild,
1227
+ [_el$41, _co$5] = _$getNextMarker(_el$40.nextSibling),
1228
+ _el$39 = _el$41.nextSibling;
1229
+ _el$38.$$click = () => {
993
1230
  const next = !open();
994
1231
  setExpanded(next);
995
1232
  props.onOpenChange?.(next);
996
1233
  };
997
- _$setAttribute(_el$32, "aria-controls", id);
998
- _$insert(_el$32, title, _el$35, _co$5);
1234
+ _$setAttribute(_el$38, "aria-controls", id);
1235
+ _$insert(_el$38, title, _el$41, _co$5);
999
1236
  _$effect(_p$ => {
1000
- var _v$57 = open(),
1001
- _v$58 = open() ? "ti ti-chevron-down" : "ti ti-chevron-right";
1002
- _v$57 !== _p$.e && _$setAttribute(_el$32, "aria-expanded", _p$.e = _v$57);
1003
- _v$58 !== _p$.t && _$className(_el$33, _p$.t = _v$58);
1237
+ var _v$56 = open(),
1238
+ _v$57 = open() ? "ti ti-chevron-down" : "ti ti-chevron-right";
1239
+ _v$56 !== _p$.e && _$setAttribute(_el$38, "aria-expanded", _p$.e = _v$56);
1240
+ _v$57 !== _p$.t && _$className(_el$39, _p$.t = _v$57);
1004
1241
  return _p$;
1005
1242
  }, {
1006
1243
  e: undefined,
1007
1244
  t: undefined
1008
1245
  });
1009
1246
  _$runHydrationEvents();
1010
- return _el$32;
1247
+ return _el$38;
1011
1248
  }
1012
- }), _el$38, _co$6);
1013
- _$insert(_el$31, _$createComponent(Show, {
1249
+ }), _el$44, _co$6);
1250
+ _$insert(_el$37, _$createComponent(Show, {
1014
1251
  get when() {
1015
1252
  return props.actions;
1016
1253
  },
1017
1254
  get children() {
1018
- var _el$36 = _$getNextElement(_tmpl$17);
1019
- _$insert(_el$36, () => props.actions);
1020
- return _el$36;
1255
+ var _el$42 = _$getNextElement(_tmpl$20);
1256
+ _$insert(_el$42, () => props.actions);
1257
+ return _el$42;
1021
1258
  }
1022
- }), _el$40, _co$7);
1023
- return _el$31;
1259
+ }), _el$46, _co$7);
1260
+ return _el$37;
1024
1261
  }
1025
- }), _el$43, _co$8);
1026
- _$setAttribute(_el$41, "id", id);
1027
- _$insert(_el$41, () => props.children);
1028
- _$effect(() => _$setProperty(_el$41, "hidden", !open()));
1262
+ }), _el$49, _co$8);
1263
+ _$setAttribute(_el$47, "id", id);
1264
+ _$insert(_el$47, () => props.children);
1265
+ _$effect(() => _$setProperty(_el$47, "hidden", !open()));
1029
1266
  _$runHydrationEvents();
1030
- return _el$30;
1267
+ return _el$36;
1031
1268
  })();
1032
1269
  };
1033
1270
  const AppWorkspaceSidebarItemIcon = props => mergeProps({
@@ -1043,10 +1280,10 @@ const AppWorkspaceSidebarItemAction = props => mergeProps({
1043
1280
  kind: SIDEBAR_ITEM_ACTION
1044
1281
  }, props);
1045
1282
  const AppWorkspaceSidebarItemActions = props => (() => {
1046
- var _el$45 = _$getNextElement(_tmpl$21);
1047
- _$insert(_el$45, () => props.children);
1048
- _$effect(() => _$setAttribute(_el$45, "data-visibility", props.visibility === "hover" ? "hover" : undefined));
1049
- return _el$45;
1283
+ var _el$51 = _$getNextElement(_tmpl$24);
1284
+ _$insert(_el$51, () => props.children);
1285
+ _$effect(() => _$setAttribute(_el$51, "data-visibility", props.visibility === "hover" ? "hover" : undefined));
1286
+ return _el$51;
1050
1287
  })();
1051
1288
  const AppWorkspaceSidebarItemStatus = props => {
1052
1289
  const workspaceMessages = useWorkspaceMessages();
@@ -1064,8 +1301,8 @@ const AppWorkspaceSidebarItemStatus = props => {
1064
1301
  // space, and it still keeps the row's label on one line, so the first count
1065
1302
  // never re-wraps the label and moves the rows below.
1066
1303
  return (() => {
1067
- var _el$46 = _$getNextElement(_tmpl$27);
1068
- _$insert(_el$46, _$createComponent(Show, {
1304
+ var _el$52 = _$getNextElement(_tmpl$30);
1305
+ _$insert(_el$52, _$createComponent(Show, {
1069
1306
  get when() {
1070
1307
  return description();
1071
1308
  },
@@ -1075,18 +1312,18 @@ const AppWorkspaceSidebarItemStatus = props => {
1075
1312
  return props.mention;
1076
1313
  },
1077
1314
  get children() {
1078
- return _$getNextElement(_tmpl$22);
1315
+ return _$getNextElement(_tmpl$25);
1079
1316
  }
1080
1317
  }), _$createComponent(Show, {
1081
1318
  get when() {
1082
1319
  return props.muted;
1083
1320
  },
1084
1321
  get children() {
1085
- return _$getNextElement(_tmpl$23);
1322
+ return _$getNextElement(_tmpl$26);
1086
1323
  }
1087
1324
  }), (() => {
1088
- var _el$49 = _$getNextElement(_tmpl$25);
1089
- _$insert(_el$49, _$createComponent(Show, {
1325
+ var _el$55 = _$getNextElement(_tmpl$28);
1326
+ _$insert(_el$55, _$createComponent(Show, {
1090
1327
  get when() {
1091
1328
  return count() || waiting() === 0;
1092
1329
  },
@@ -1096,42 +1333,42 @@ const AppWorkspaceSidebarItemStatus = props => {
1096
1333
  return dot();
1097
1334
  },
1098
1335
  get children() {
1099
- return _$getNextElement(_tmpl$28);
1336
+ return _$getNextElement(_tmpl$31);
1100
1337
  }
1101
1338
  });
1102
1339
  },
1103
1340
  get children() {
1104
- var _el$50 = _$getNextElement(_tmpl$24);
1105
- _$insert(_el$50, (() => {
1341
+ var _el$56 = _$getNextElement(_tmpl$27);
1342
+ _$insert(_el$56, (() => {
1106
1343
  var _c$2 = _$memo(() => count() > 99);
1107
1344
  return () => _c$2() ? "99+" : count();
1108
1345
  })());
1109
- _$effect(() => _$setAttribute(_el$50, "data-mention", props.mention ? "true" : undefined));
1110
- return _el$50;
1346
+ _$effect(() => _$setAttribute(_el$56, "data-mention", props.mention ? "true" : undefined));
1347
+ return _el$56;
1111
1348
  }
1112
1349
  }));
1113
- return _el$49;
1350
+ return _el$55;
1114
1351
  })(), (() => {
1115
- var _el$51 = _$getNextElement(_tmpl$26),
1116
- _el$52 = _el$51.firstChild,
1117
- _el$53 = _el$52.nextSibling,
1118
- [_el$54, _co$9] = _$getNextMarker(_el$53.nextSibling);
1119
- _$insert(_el$51, description, _el$54, _co$9);
1120
- return _el$51;
1352
+ var _el$57 = _$getNextElement(_tmpl$29),
1353
+ _el$58 = _el$57.firstChild,
1354
+ _el$59 = _el$58.nextSibling,
1355
+ [_el$60, _co$9] = _$getNextMarker(_el$59.nextSibling);
1356
+ _$insert(_el$57, description, _el$60, _co$9);
1357
+ return _el$57;
1121
1358
  })()];
1122
1359
  }
1123
1360
  }));
1124
1361
  _$effect(_p$ => {
1125
- var _v$59 = waiting() !== null ? undefined : count() ? "count" : dot() ? "dot" : undefined,
1126
- _v$60 = waiting() === null ? undefined : waiting() ? "count" : "zero";
1127
- _v$59 !== _p$.e && _$setAttribute(_el$46, "data-unread", _p$.e = _v$59);
1128
- _v$60 !== _p$.t && _$setAttribute(_el$46, "data-waiting", _p$.t = _v$60);
1362
+ var _v$58 = waiting() !== null ? undefined : count() ? "count" : dot() ? "dot" : undefined,
1363
+ _v$59 = waiting() === null ? undefined : waiting() ? "count" : "zero";
1364
+ _v$58 !== _p$.e && _$setAttribute(_el$52, "data-unread", _p$.e = _v$58);
1365
+ _v$59 !== _p$.t && _$setAttribute(_el$52, "data-waiting", _p$.t = _v$59);
1129
1366
  return _p$;
1130
1367
  }, {
1131
1368
  e: undefined,
1132
1369
  t: undefined
1133
1370
  });
1134
- return _el$46;
1371
+ return _el$52;
1135
1372
  })();
1136
1373
  };
1137
1374
  /** Shared visual and semantic row frame for flat sidebar items and tree items. */
@@ -1159,8 +1396,8 @@ function AppWorkspaceSidebarRow(props) {
1159
1396
  },
1160
1397
  get fallback() {
1161
1398
  return (() => {
1162
- var _el$56 = _$getNextElement(_tmpl$29);
1163
- _$spread(_el$56, _$mergeProps(attrs, {
1399
+ var _el$62 = _$getNextElement(_tmpl$32);
1400
+ _$spread(_el$62, _$mergeProps(attrs, {
1164
1401
  get tabIndex() {
1165
1402
  return props.tabIndex;
1166
1403
  },
@@ -1171,9 +1408,9 @@ function AppWorkspaceSidebarRow(props) {
1171
1408
  return props.onClick;
1172
1409
  }
1173
1410
  }), false, true);
1174
- _$insert(_el$56, () => props.children);
1411
+ _$insert(_el$62, () => props.children);
1175
1412
  _$runHydrationEvents();
1176
- return _el$56;
1413
+ return _el$62;
1177
1414
  })();
1178
1415
  },
1179
1416
  get children() {
@@ -1183,8 +1420,8 @@ function AppWorkspaceSidebarRow(props) {
1183
1420
  },
1184
1421
  get fallback() {
1185
1422
  return (() => {
1186
- var _el$57 = _$getNextElement(_tmpl$30);
1187
- _$spread(_el$57, _$mergeProps({
1423
+ var _el$63 = _$getNextElement(_tmpl$33);
1424
+ _$spread(_el$63, _$mergeProps({
1188
1425
  get href() {
1189
1426
  return props.href;
1190
1427
  }
@@ -1199,9 +1436,9 @@ function AppWorkspaceSidebarRow(props) {
1199
1436
  return props.onClick;
1200
1437
  }
1201
1438
  }), false, true);
1202
- _$insert(_el$57, () => props.children);
1439
+ _$insert(_el$63, () => props.children);
1203
1440
  _$runHydrationEvents();
1204
- return _el$57;
1441
+ return _el$63;
1205
1442
  })();
1206
1443
  },
1207
1444
  get children() {
@@ -1247,22 +1484,22 @@ function AppWorkspaceSidebarRow(props) {
1247
1484
  });
1248
1485
  },
1249
1486
  get children() {
1250
- var _el$58 = _$getNextElement(_tmpl$31),
1251
- _el$59 = _el$58.firstChild,
1252
- [_el$60, _co$0] = _$getNextMarker(_el$59.nextSibling),
1253
- _el$61 = _el$60.nextSibling,
1254
- [_el$62, _co$1] = _$getNextMarker(_el$61.nextSibling);
1255
- _$spread(_el$58, _$mergeProps(common, {
1487
+ var _el$64 = _$getNextElement(_tmpl$34),
1488
+ _el$65 = _el$64.firstChild,
1489
+ [_el$66, _co$0] = _$getNextMarker(_el$65.nextSibling),
1490
+ _el$67 = _el$66.nextSibling,
1491
+ [_el$68, _co$1] = _$getNextMarker(_el$67.nextSibling);
1492
+ _$spread(_el$64, _$mergeProps(common, {
1256
1493
  get ["data-disabled"]() {
1257
1494
  return props.disabled ? "true" : undefined;
1258
1495
  }
1259
1496
  }), false, true);
1260
- _$insert(_el$58, _$createComponent(Control, {
1497
+ _$insert(_el$64, _$createComponent(Control, {
1261
1498
  grouped: true
1262
- }), _el$60, _co$0);
1263
- _$insert(_el$58, () => props.actions, _el$62, _co$1);
1499
+ }), _el$66, _co$0);
1500
+ _$insert(_el$64, () => props.actions, _el$68, _co$1);
1264
1501
  _$runHydrationEvents();
1265
- return _el$58;
1502
+ return _el$64;
1266
1503
  }
1267
1504
  });
1268
1505
  }
@@ -1295,85 +1532,89 @@ function AppWorkspaceSidebarItem(props) {
1295
1532
  return iconContent() || icon();
1296
1533
  },
1297
1534
  get children() {
1298
- var _el$63 = _$getNextElement(_tmpl$32);
1299
- _$insert(_el$63, () => iconContent() ?? (() => {
1300
- var _el$78 = _$getNextElement(_tmpl$38);
1301
- _$effect(() => _$className(_el$78, iconClass(icon())));
1302
- return _el$78;
1535
+ var _el$69 = _$getNextElement(_tmpl$35);
1536
+ _$insert(_el$69, () => iconContent() ?? (() => {
1537
+ var _el$84 = _$getNextElement(_tmpl$41);
1538
+ _$effect(() => _$className(_el$84, iconClass(icon())));
1539
+ return _el$84;
1303
1540
  })());
1304
- return _el$63;
1541
+ _$effect(() => _$className(_el$69,
1542
+ // An object row's own glyph sits in a soft chip of the app colour; custom content such as an avatar keeps
1543
+ // its own look.
1544
+ props.variant === "object" && !iconContent() ? "k2b-app-workspace__sidebar-item-icon k2b-icon-tile" : "k2b-app-workspace__sidebar-item-icon"));
1545
+ return _el$69;
1305
1546
  }
1306
1547
  }), (() => {
1307
- var _el$64 = _$getNextElement(_tmpl$36),
1308
- _el$73 = _el$64.firstChild,
1309
- [_el$74, _co$11] = _$getNextMarker(_el$73.nextSibling),
1310
- _el$70 = _el$74.nextSibling,
1311
- _el$71 = _el$70.firstChild,
1312
- _el$75 = _el$70.nextSibling,
1313
- [_el$76, _co$12] = _$getNextMarker(_el$75.nextSibling);
1314
- _$insert(_el$64, _$createComponent(Show, {
1548
+ var _el$70 = _$getNextElement(_tmpl$39),
1549
+ _el$79 = _el$70.firstChild,
1550
+ [_el$80, _co$11] = _$getNextMarker(_el$79.nextSibling),
1551
+ _el$76 = _el$80.nextSibling,
1552
+ _el$77 = _el$76.firstChild,
1553
+ _el$81 = _el$76.nextSibling,
1554
+ [_el$82, _co$12] = _$getNextMarker(_el$81.nextSibling);
1555
+ _$insert(_el$70, _$createComponent(Show, {
1315
1556
  get when() {
1316
1557
  return props.context || props.contextMeta;
1317
1558
  },
1318
1559
  get children() {
1319
- var _el$65 = _$getNextElement(_tmpl$34),
1320
- _el$66 = _el$65.firstChild,
1321
- _el$68 = _el$66.nextSibling,
1322
- [_el$69, _co$10] = _$getNextMarker(_el$68.nextSibling);
1323
- _$insert(_el$66, () => props.context);
1324
- _$insert(_el$65, _$createComponent(Show, {
1560
+ var _el$71 = _$getNextElement(_tmpl$37),
1561
+ _el$72 = _el$71.firstChild,
1562
+ _el$74 = _el$72.nextSibling,
1563
+ [_el$75, _co$10] = _$getNextMarker(_el$74.nextSibling);
1564
+ _$insert(_el$72, () => props.context);
1565
+ _$insert(_el$71, _$createComponent(Show, {
1325
1566
  get when() {
1326
1567
  return props.contextMeta;
1327
1568
  },
1328
1569
  get children() {
1329
- var _el$67 = _$getNextElement(_tmpl$33);
1330
- _$insert(_el$67, () => props.contextMeta);
1331
- return _el$67;
1570
+ var _el$73 = _$getNextElement(_tmpl$36);
1571
+ _$insert(_el$73, () => props.contextMeta);
1572
+ return _el$73;
1332
1573
  }
1333
- }), _el$69, _co$10);
1334
- return _el$65;
1574
+ }), _el$75, _co$10);
1575
+ return _el$71;
1335
1576
  }
1336
- }), _el$74, _co$11);
1337
- _$insert(_el$71, () => label());
1338
- _$insert(_el$64, _$createComponent(Show, {
1577
+ }), _el$80, _co$11);
1578
+ _$insert(_el$77, () => label());
1579
+ _$insert(_el$70, _$createComponent(Show, {
1339
1580
  get when() {
1340
1581
  return props.description;
1341
1582
  },
1342
1583
  get children() {
1343
- var _el$72 = _$getNextElement(_tmpl$35);
1344
- _$insert(_el$72, () => props.description);
1345
- return _el$72;
1584
+ var _el$78 = _$getNextElement(_tmpl$38);
1585
+ _$insert(_el$78, () => props.description);
1586
+ return _el$78;
1346
1587
  }
1347
- }), _el$76, _co$12);
1588
+ }), _el$82, _co$12);
1348
1589
  _$effect(_p$ => {
1349
- var _v$61 = oneLine() ? "1" : undefined,
1350
- _v$62 = !oneLine() && typeof label() === "string" ? label() : undefined;
1351
- _v$61 !== _p$.e && _$setAttribute(_el$70, "data-lines", _p$.e = _v$61);
1352
- _v$62 !== _p$.t && _$setAttribute(_el$70, "data-label", _p$.t = _v$62);
1590
+ var _v$60 = oneLine() ? "1" : undefined,
1591
+ _v$61 = !oneLine() && typeof label() === "string" ? label() : undefined;
1592
+ _v$60 !== _p$.e && _$setAttribute(_el$76, "data-lines", _p$.e = _v$60);
1593
+ _v$61 !== _p$.t && _$setAttribute(_el$76, "data-label", _p$.t = _v$61);
1353
1594
  return _p$;
1354
1595
  }, {
1355
1596
  e: undefined,
1356
1597
  t: undefined
1357
1598
  });
1358
- return _el$64;
1599
+ return _el$70;
1359
1600
  })(), _$createComponent(Show, {
1360
1601
  get when() {
1361
1602
  return hasMeta();
1362
1603
  },
1363
1604
  get children() {
1364
- var _el$77 = _$getNextElement(_tmpl$37);
1365
- _$insert(_el$77, meta);
1605
+ var _el$83 = _$getNextElement(_tmpl$40);
1606
+ _$insert(_el$83, meta);
1366
1607
  _$effect(_p$ => {
1367
- var _v$63 = props.preview?.trigger === "row" ? metaId : undefined,
1368
- _v$64 = metaVisibility() === "hover" ? "hover" : undefined;
1369
- _v$63 !== _p$.e && _$setAttribute(_el$77, "id", _p$.e = _v$63);
1370
- _v$64 !== _p$.t && _$setAttribute(_el$77, "data-visibility", _p$.t = _v$64);
1608
+ var _v$62 = props.preview?.trigger === "row" ? metaId : undefined,
1609
+ _v$63 = metaVisibility() === "hover" ? "hover" : undefined;
1610
+ _v$62 !== _p$.e && _$setAttribute(_el$83, "id", _p$.e = _v$62);
1611
+ _v$63 !== _p$.t && _$setAttribute(_el$83, "data-visibility", _p$.t = _v$63);
1371
1612
  return _p$;
1372
1613
  }, {
1373
1614
  e: undefined,
1374
1615
  t: undefined
1375
1616
  });
1376
- return _el$77;
1617
+ return _el$83;
1377
1618
  }
1378
1619
  })];
1379
1620
  const singleAction = () => {
@@ -1389,9 +1630,9 @@ function AppWorkspaceSidebarItem(props) {
1389
1630
  props.onActionClick?.(event);
1390
1631
  };
1391
1632
  const content = () => actionSlot()?.children ?? (() => {
1392
- var _el$79 = _$getNextElement(_tmpl$38);
1393
- _$effect(() => _$className(_el$79, iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots")));
1394
- return _el$79;
1633
+ var _el$85 = _$getNextElement(_tmpl$41);
1634
+ _$effect(() => _$className(_el$85, iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots")));
1635
+ return _el$85;
1395
1636
  })();
1396
1637
  return _$createComponent(Show, {
1397
1638
  get when() {
@@ -1404,16 +1645,16 @@ function AppWorkspaceSidebarItem(props) {
1404
1645
  },
1405
1646
  get fallback() {
1406
1647
  return (() => {
1407
- var _el$81 = _$getNextElement(_tmpl$40);
1408
- _el$81.$$click = select;
1409
- _$insert(_el$81, content);
1648
+ var _el$87 = _$getNextElement(_tmpl$43);
1649
+ _el$87.$$click = select;
1650
+ _$insert(_el$87, content);
1410
1651
  _$effect(_p$ => {
1411
- var _v$68 = actionSlot()?.disabled,
1412
- _v$69 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1413
- _v$70 = label();
1414
- _v$68 !== _p$.e && _$setProperty(_el$81, "disabled", _p$.e = _v$68);
1415
- _v$69 !== _p$.t && _$setAttribute(_el$81, "data-visibility", _p$.t = _v$69);
1416
- _v$70 !== _p$.a && _$setAttribute(_el$81, "aria-label", _p$.a = _v$70);
1652
+ var _v$67 = actionSlot()?.disabled,
1653
+ _v$68 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1654
+ _v$69 = label();
1655
+ _v$67 !== _p$.e && _$setProperty(_el$87, "disabled", _p$.e = _v$67);
1656
+ _v$68 !== _p$.t && _$setAttribute(_el$87, "data-visibility", _p$.t = _v$68);
1657
+ _v$69 !== _p$.a && _$setAttribute(_el$87, "aria-label", _p$.a = _v$69);
1417
1658
  return _p$;
1418
1659
  }, {
1419
1660
  e: undefined,
@@ -1421,20 +1662,20 @@ function AppWorkspaceSidebarItem(props) {
1421
1662
  a: undefined
1422
1663
  });
1423
1664
  _$runHydrationEvents();
1424
- return _el$81;
1665
+ return _el$87;
1425
1666
  })();
1426
1667
  },
1427
1668
  get children() {
1428
- var _el$80 = _$getNextElement(_tmpl$39);
1429
- _el$80.$$click = select;
1430
- _$insert(_el$80, content);
1669
+ var _el$86 = _$getNextElement(_tmpl$42);
1670
+ _el$86.$$click = select;
1671
+ _$insert(_el$86, content);
1431
1672
  _$effect(_p$ => {
1432
- var _v$65 = actionSlot()?.href,
1433
- _v$66 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1434
- _v$67 = label();
1435
- _v$65 !== _p$.e && _$setAttribute(_el$80, "href", _p$.e = _v$65);
1436
- _v$66 !== _p$.t && _$setAttribute(_el$80, "data-visibility", _p$.t = _v$66);
1437
- _v$67 !== _p$.a && _$setAttribute(_el$80, "aria-label", _p$.a = _v$67);
1673
+ var _v$64 = actionSlot()?.href,
1674
+ _v$65 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1675
+ _v$66 = label();
1676
+ _v$64 !== _p$.e && _$setAttribute(_el$86, "href", _p$.e = _v$64);
1677
+ _v$65 !== _p$.t && _$setAttribute(_el$86, "data-visibility", _p$.t = _v$65);
1678
+ _v$66 !== _p$.a && _$setAttribute(_el$86, "aria-label", _p$.a = _v$66);
1438
1679
  return _p$;
1439
1680
  }, {
1440
1681
  e: undefined,
@@ -1442,7 +1683,7 @@ function AppWorkspaceSidebarItem(props) {
1442
1683
  a: undefined
1443
1684
  });
1444
1685
  _$runHydrationEvents();
1445
- return _el$80;
1686
+ return _el$86;
1446
1687
  }
1447
1688
  });
1448
1689
  }
@@ -1743,16 +1984,16 @@ const AppWorkspaceNavTree = props => {
1743
1984
  return rowIcon();
1744
1985
  },
1745
1986
  get children() {
1746
- var _el$82 = _$getNextElement(_tmpl$41),
1747
- _el$83 = _el$82.firstChild;
1748
- _$spread(_el$82, _$mergeProps({
1987
+ var _el$88 = _$getNextElement(_tmpl$44),
1988
+ _el$89 = _el$88.firstChild;
1989
+ _$spread(_el$88, _$mergeProps({
1749
1990
  get ["data-k2b-nav-tree-toggle"]() {
1750
1991
  return usesIconDisclosure() ? "" : undefined;
1751
1992
  }
1752
1993
  }, () => iconAccessibility(item.iconLabel)), false, true);
1753
- _$effect(() => _$className(_el$83, iconClass(rowIcon())));
1994
+ _$effect(() => _$className(_el$89, iconClass(rowIcon())));
1754
1995
  _$runHydrationEvents();
1755
- return _el$82;
1996
+ return _el$88;
1756
1997
  }
1757
1998
  }), _$createComponent(Show, {
1758
1999
  get when() {
@@ -1760,51 +2001,51 @@ const AppWorkspaceNavTree = props => {
1760
2001
  },
1761
2002
  get fallback() {
1762
2003
  return (() => {
1763
- var _el$91 = _$getNextElement(_tmpl$45),
1764
- _el$92 = _el$91.firstChild;
1765
- _$insert(_el$92, () => item.label);
1766
- _$effect(() => _$setAttribute(_el$91, "data-label", typeof item.label === "string" ? item.label : undefined));
1767
- return _el$91;
2004
+ var _el$97 = _$getNextElement(_tmpl$48),
2005
+ _el$98 = _el$97.firstChild;
2006
+ _$insert(_el$98, () => item.label);
2007
+ _$effect(() => _$setAttribute(_el$97, "data-label", typeof item.label === "string" ? item.label : undefined));
2008
+ return _el$97;
1768
2009
  })();
1769
2010
  },
1770
2011
  get children() {
1771
- var _el$84 = _$getNextElement(_tmpl$42),
1772
- _el$85 = _el$84.firstChild,
1773
- _el$86 = _el$85.firstChild,
1774
- _el$87 = _el$85.nextSibling;
1775
- _$insert(_el$86, () => item.label);
1776
- _$insert(_el$87, () => item.description);
1777
- _$effect(() => _$setAttribute(_el$85, "data-label", typeof item.label === "string" ? item.label : undefined));
1778
- return _el$84;
2012
+ var _el$90 = _$getNextElement(_tmpl$45),
2013
+ _el$91 = _el$90.firstChild,
2014
+ _el$92 = _el$91.firstChild,
2015
+ _el$93 = _el$91.nextSibling;
2016
+ _$insert(_el$92, () => item.label);
2017
+ _$insert(_el$93, () => item.description);
2018
+ _$effect(() => _$setAttribute(_el$91, "data-label", typeof item.label === "string" ? item.label : undefined));
2019
+ return _el$90;
1779
2020
  }
1780
2021
  }), _$createComponent(Show, {
1781
2022
  get when() {
1782
2023
  return item.meta !== undefined;
1783
2024
  },
1784
2025
  get children() {
1785
- var _el$88 = _$getNextElement(_tmpl$43);
1786
- _$insert(_el$88, () => item.meta);
2026
+ var _el$94 = _$getNextElement(_tmpl$46);
2027
+ _$insert(_el$94, () => item.meta);
1787
2028
  _$effect(_p$ => {
1788
- var _v$71 = `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`,
1789
- _v$72 = item.metaVisibility === "hover" ? "hover" : undefined;
1790
- _v$71 !== _p$.e && _$className(_el$88, _p$.e = _v$71);
1791
- _v$72 !== _p$.t && _$setAttribute(_el$88, "data-visibility", _p$.t = _v$72);
2029
+ var _v$70 = `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`,
2030
+ _v$71 = item.metaVisibility === "hover" ? "hover" : undefined;
2031
+ _v$70 !== _p$.e && _$className(_el$94, _p$.e = _v$70);
2032
+ _v$71 !== _p$.t && _$setAttribute(_el$94, "data-visibility", _p$.t = _v$71);
1792
2033
  return _p$;
1793
2034
  }, {
1794
2035
  e: undefined,
1795
2036
  t: undefined
1796
2037
  });
1797
- return _el$88;
2038
+ return _el$94;
1798
2039
  }
1799
2040
  }), _$createComponent(Show, {
1800
2041
  get when() {
1801
2042
  return _$memo(() => !!hasChildren())() && !usesIconDisclosure();
1802
2043
  },
1803
2044
  get children() {
1804
- var _el$89 = _$getNextElement(_tmpl$44),
1805
- _el$90 = _el$89.firstChild;
1806
- _$effect(() => _$className(_el$90, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`));
1807
- return _el$89;
2045
+ var _el$95 = _$getNextElement(_tmpl$47),
2046
+ _el$96 = _el$95.firstChild;
2047
+ _$effect(() => _$className(_el$96, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`));
2048
+ return _el$95;
1808
2049
  }
1809
2050
  })];
1810
2051
  const row = () => _$createComponent(AppWorkspaceSidebarRow, {
@@ -1912,56 +2153,56 @@ const AppWorkspaceNavTree = props => {
1912
2153
  requestMove(target.move, false);
1913
2154
  };
1914
2155
  return (() => {
1915
- var _el$93 = _$getNextElement(_tmpl$47),
1916
- _el$95 = _el$93.firstChild,
1917
- [_el$96, _co$13] = _$getNextMarker(_el$95.nextSibling),
1918
- _el$97 = _el$96.nextSibling,
1919
- [_el$98, _co$14] = _$getNextMarker(_el$97.nextSibling);
1920
- _el$93.addEventListener("drop", onDrop);
1921
- _$addEventListener(_el$93, "dragleave", item.onDragLeave);
1922
- _el$93.addEventListener("dragover", onDragOver);
1923
- _$addEventListener(_el$93, "dragenter", item.onDragEnter);
1924
- _el$93.addEventListener("dragstart", onDragStart);
1925
- _el$93.$$keydown = onKeyDown;
1926
- _el$93.addEventListener("focus", () => setFocusedId(item.id));
1927
- var _ref$5 = treeItem;
1928
- typeof _ref$5 === "function" ? _$use(_ref$5, _el$93) : treeItem = _el$93;
1929
- _$setAttribute(_el$93, "aria-level", depth + 1);
1930
- _$setAttribute(_el$93, "data-k2b-nav-tree-parent-id", parentId);
1931
- _$insert(_el$93, row, _el$96, _co$13);
1932
- _$insert(_el$93, _$createComponent(Show, {
2156
+ var _el$99 = _$getNextElement(_tmpl$50),
2157
+ _el$101 = _el$99.firstChild,
2158
+ [_el$102, _co$13] = _$getNextMarker(_el$101.nextSibling),
2159
+ _el$103 = _el$102.nextSibling,
2160
+ [_el$104, _co$14] = _$getNextMarker(_el$103.nextSibling);
2161
+ _el$99.addEventListener("drop", onDrop);
2162
+ _$addEventListener(_el$99, "dragleave", item.onDragLeave);
2163
+ _el$99.addEventListener("dragover", onDragOver);
2164
+ _$addEventListener(_el$99, "dragenter", item.onDragEnter);
2165
+ _el$99.addEventListener("dragstart", onDragStart);
2166
+ _el$99.$$keydown = onKeyDown;
2167
+ _el$99.addEventListener("focus", () => setFocusedId(item.id));
2168
+ var _ref$6 = treeItem;
2169
+ typeof _ref$6 === "function" ? _$use(_ref$6, _el$99) : treeItem = _el$99;
2170
+ _$setAttribute(_el$99, "aria-level", depth + 1);
2171
+ _$setAttribute(_el$99, "data-k2b-nav-tree-parent-id", parentId);
2172
+ _$insert(_el$99, row, _el$102, _co$13);
2173
+ _$insert(_el$99, _$createComponent(Show, {
1933
2174
  get when() {
1934
2175
  return _$memo(() => !!hasChildren())() && isExpanded(item.id);
1935
2176
  },
1936
2177
  get children() {
1937
- var _el$94 = _$getNextElement(_tmpl$46);
1938
- _$insert(_el$94, () => renderItems(nested, depth + 1, item.id));
1939
- return _el$94;
2178
+ var _el$100 = _$getNextElement(_tmpl$49);
2179
+ _$insert(_el$100, () => renderItems(nested, depth + 1, item.id));
2180
+ return _el$100;
1940
2181
  }
1941
- }), _el$98, _co$14);
2182
+ }), _el$104, _co$14);
1942
2183
  _$effect(_p$ => {
1943
- var _v$73 = siblings().length,
1944
- _v$74 = place() + 1,
1945
- _v$75 = selected(),
1946
- _v$76 = hasChildren() ? isExpanded(item.id) : undefined,
1947
- _v$77 = item.disabled ? "true" : undefined,
1948
- _v$78 = item.disabled ? -1 : tabStopId() === item.id ? 0 : -1,
1949
- _v$79 = movable() ? true : undefined,
1950
- _v$80 = item.id,
1951
- _v$81 = dragged()?.id === item.id ? "" : undefined,
1952
- _v$82 = dropTarget()?.id === item.id ? dropTarget().side : undefined,
1953
- _v$83 = String(props.indented === false ? 0 : depth);
1954
- _v$73 !== _p$.e && _$setAttribute(_el$93, "aria-setsize", _p$.e = _v$73);
1955
- _v$74 !== _p$.t && _$setAttribute(_el$93, "aria-posinset", _p$.t = _v$74);
1956
- _v$75 !== _p$.a && _$setAttribute(_el$93, "aria-selected", _p$.a = _v$75);
1957
- _v$76 !== _p$.o && _$setAttribute(_el$93, "aria-expanded", _p$.o = _v$76);
1958
- _v$77 !== _p$.i && _$setAttribute(_el$93, "aria-disabled", _p$.i = _v$77);
1959
- _v$78 !== _p$.n && _$setAttribute(_el$93, "tabindex", _p$.n = _v$78);
1960
- _v$79 !== _p$.s && _$setAttribute(_el$93, "draggable", _p$.s = _v$79);
1961
- _v$80 !== _p$.h && _$setAttribute(_el$93, "data-k2b-nav-tree-id", _p$.h = _v$80);
1962
- _v$81 !== _p$.r && _$setAttribute(_el$93, "data-k2b-nav-tree-dragging", _p$.r = _v$81);
1963
- _v$82 !== _p$.d && _$setAttribute(_el$93, "data-k2b-nav-tree-drop", _p$.d = _v$82);
1964
- _v$83 !== _p$.l && _$setStyleProperty(_el$93, "--k2b-nav-tree-depth", _p$.l = _v$83);
2184
+ var _v$72 = siblings().length,
2185
+ _v$73 = place() + 1,
2186
+ _v$74 = selected(),
2187
+ _v$75 = hasChildren() ? isExpanded(item.id) : undefined,
2188
+ _v$76 = item.disabled ? "true" : undefined,
2189
+ _v$77 = item.disabled ? -1 : tabStopId() === item.id ? 0 : -1,
2190
+ _v$78 = movable() ? true : undefined,
2191
+ _v$79 = item.id,
2192
+ _v$80 = dragged()?.id === item.id ? "" : undefined,
2193
+ _v$81 = dropTarget()?.id === item.id ? dropTarget().side : undefined,
2194
+ _v$82 = String(props.indented === false ? 0 : depth);
2195
+ _v$72 !== _p$.e && _$setAttribute(_el$99, "aria-setsize", _p$.e = _v$72);
2196
+ _v$73 !== _p$.t && _$setAttribute(_el$99, "aria-posinset", _p$.t = _v$73);
2197
+ _v$74 !== _p$.a && _$setAttribute(_el$99, "aria-selected", _p$.a = _v$74);
2198
+ _v$75 !== _p$.o && _$setAttribute(_el$99, "aria-expanded", _p$.o = _v$75);
2199
+ _v$76 !== _p$.i && _$setAttribute(_el$99, "aria-disabled", _p$.i = _v$76);
2200
+ _v$77 !== _p$.n && _$setAttribute(_el$99, "tabindex", _p$.n = _v$77);
2201
+ _v$78 !== _p$.s && _$setAttribute(_el$99, "draggable", _p$.s = _v$78);
2202
+ _v$79 !== _p$.h && _$setAttribute(_el$99, "data-k2b-nav-tree-id", _p$.h = _v$79);
2203
+ _v$80 !== _p$.r && _$setAttribute(_el$99, "data-k2b-nav-tree-dragging", _p$.r = _v$80);
2204
+ _v$81 !== _p$.d && _$setAttribute(_el$99, "data-k2b-nav-tree-drop", _p$.d = _v$81);
2205
+ _v$82 !== _p$.l && _$setStyleProperty(_el$99, "--k2b-nav-tree-depth", _p$.l = _v$82);
1965
2206
  return _p$;
1966
2207
  }, {
1967
2208
  e: undefined,
@@ -1977,7 +2218,7 @@ const AppWorkspaceNavTree = props => {
1977
2218
  l: undefined
1978
2219
  });
1979
2220
  _$runHydrationEvents();
1980
- return _el$93;
2221
+ return _el$99;
1981
2222
  })();
1982
2223
  }
1983
2224
  });
@@ -2002,62 +2243,62 @@ const AppWorkspaceNavTree = props => {
2002
2243
  });
2003
2244
  });
2004
2245
  return (() => {
2005
- var _el$99 = _$getNextElement(_tmpl$48);
2006
- _el$99.addEventListener("dragend", endDrag);
2007
- _el$99.addEventListener("dragleave", event => {
2246
+ var _el$105 = _$getNextElement(_tmpl$51);
2247
+ _el$105.addEventListener("dragend", endDrag);
2248
+ _el$105.addEventListener("dragleave", event => {
2008
2249
  if (!root?.contains(event.relatedTarget)) setDropTarget(null);
2009
2250
  });
2010
- _el$99.addEventListener("dragover", event => {
2251
+ _el$105.addEventListener("dragover", event => {
2011
2252
  // Runs after the rows: a position no row claimed shows no gap.
2012
2253
  if (claimedDragOver !== event) setDropTarget(null);
2013
2254
  });
2014
- var _ref$6 = root;
2015
- typeof _ref$6 === "function" ? _$use(_ref$6, _el$99) : root = _el$99;
2016
- _$insert(_el$99, () => renderItems(roots, 0));
2255
+ var _ref$7 = root;
2256
+ typeof _ref$7 === "function" ? _$use(_ref$7, _el$105) : root = _el$105;
2257
+ _$insert(_el$105, () => renderItems(roots, 0));
2017
2258
  _$effect(_p$ => {
2018
- var _v$84 = `k2b-app-workspace__nav-tree ${props.class ?? ""}`,
2019
- _v$85 = props.ariaLabel;
2020
- _v$84 !== _p$.e && _$className(_el$99, _p$.e = _v$84);
2021
- _v$85 !== _p$.t && _$setAttribute(_el$99, "aria-label", _p$.t = _v$85);
2259
+ var _v$83 = `k2b-app-workspace__nav-tree ${props.class ?? ""}`,
2260
+ _v$84 = props.ariaLabel;
2261
+ _v$83 !== _p$.e && _$className(_el$105, _p$.e = _v$83);
2262
+ _v$84 !== _p$.t && _$setAttribute(_el$105, "aria-label", _p$.t = _v$84);
2022
2263
  return _p$;
2023
2264
  }, {
2024
2265
  e: undefined,
2025
2266
  t: undefined
2026
2267
  });
2027
- return _el$99;
2268
+ return _el$105;
2028
2269
  })();
2029
2270
  };
2030
2271
  AppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;
2031
2272
  const AppWorkspaceSidebarIconGrid = props => (() => {
2032
- var _el$100 = _$getNextElement(_tmpl$49),
2033
- _el$102 = _el$100.firstChild,
2034
- [_el$103, _co$15] = _$getNextMarker(_el$102.nextSibling),
2035
- _el$101 = _el$103.nextSibling;
2036
- _$spread(_el$100, _$mergeProps({
2273
+ var _el$106 = _$getNextElement(_tmpl$52),
2274
+ _el$108 = _el$106.firstChild,
2275
+ [_el$109, _co$15] = _$getNextMarker(_el$108.nextSibling),
2276
+ _el$107 = _el$109.nextSibling;
2277
+ _$spread(_el$106, _$mergeProps({
2037
2278
  get ["class"]() {
2038
2279
  return `k2b-app-workspace__sidebar-icon-grid-wrap ${props.class ?? ""}`;
2039
2280
  }
2040
2281
  }, () => modeAttrs(props.sidebarMode)), false, true);
2041
- _$insert(_el$100, _$createComponent(Show, {
2282
+ _$insert(_el$106, _$createComponent(Show, {
2042
2283
  get when() {
2043
2284
  return props.title;
2044
2285
  },
2045
2286
  children: title => (() => {
2046
- var _el$104 = _$getNextElement(_tmpl$20);
2047
- _$insert(_el$104, title);
2048
- return _el$104;
2287
+ var _el$110 = _$getNextElement(_tmpl$23);
2288
+ _$insert(_el$110, title);
2289
+ return _el$110;
2049
2290
  })()
2050
- }), _el$103, _co$15);
2051
- _$insert(_el$101, () => props.children);
2052
- _$effect(() => _$setAttribute(_el$101, "data-columns", props.columns ?? 2));
2291
+ }), _el$109, _co$15);
2292
+ _$insert(_el$107, () => props.children);
2293
+ _$effect(() => _$setAttribute(_el$107, "data-columns", props.columns ?? 2));
2053
2294
  _$runHydrationEvents();
2054
- return _el$100;
2295
+ return _el$106;
2055
2296
  })();
2056
2297
  const AppWorkspaceSidebarIconAction = props => {
2057
2298
  const content = (() => {
2058
- var _el$105 = _$getNextElement(_tmpl$50);
2059
- _$effect(() => _$className(_el$105, iconClass(props.icon)));
2060
- return _el$105;
2299
+ var _el$111 = _$getNextElement(_tmpl$53);
2300
+ _$effect(() => _$className(_el$111, iconClass(props.icon)));
2301
+ return _el$111;
2061
2302
  })();
2062
2303
  const attrs = () => ({
2063
2304
  class: `k2b-app-workspace__sidebar-icon-action ${props.active ? "is-active" : ""}`,
@@ -2070,8 +2311,8 @@ const AppWorkspaceSidebarIconAction = props => {
2070
2311
  ...modeAttrs(props.sidebarMode)
2071
2312
  });
2072
2313
  if (!props.href || props.disabled) return (() => {
2073
- var _el$106 = _$getNextElement(_tmpl$29);
2074
- _$spread(_el$106, _$mergeProps(attrs, {
2314
+ var _el$112 = _$getNextElement(_tmpl$32);
2315
+ _$spread(_el$112, _$mergeProps(attrs, {
2075
2316
  get disabled() {
2076
2317
  return props.disabled;
2077
2318
  },
@@ -2079,13 +2320,13 @@ const AppWorkspaceSidebarIconAction = props => {
2079
2320
  return props.onClick;
2080
2321
  }
2081
2322
  }), false, true);
2082
- _$insert(_el$106, content);
2323
+ _$insert(_el$112, content);
2083
2324
  _$runHydrationEvents();
2084
- return _el$106;
2325
+ return _el$112;
2085
2326
  })();
2086
2327
  if (props.navigation !== "enhanced" || !props.onNavigate) return (() => {
2087
- var _el$107 = _$getNextElement(_tmpl$30);
2088
- _$spread(_el$107, _$mergeProps({
2328
+ var _el$113 = _$getNextElement(_tmpl$33);
2329
+ _$spread(_el$113, _$mergeProps({
2089
2330
  get href() {
2090
2331
  return props.href;
2091
2332
  }
@@ -2094,9 +2335,9 @@ const AppWorkspaceSidebarIconAction = props => {
2094
2335
  return props.onClick;
2095
2336
  }
2096
2337
  }), false, true);
2097
- _$insert(_el$107, content);
2338
+ _$insert(_el$113, content);
2098
2339
  _$runHydrationEvents();
2099
- return _el$107;
2340
+ return _el$113;
2100
2341
  })();
2101
2342
  return _$createComponent(Link, _$mergeProps({
2102
2343
  get href() {
@@ -2124,22 +2365,51 @@ const AppWorkspaceSidebarIconAction = props => {
2124
2365
  * host's page title with the way up (see `PageTitle`); the page's own
2125
2366
  * `PageTitle` takes its place. The visible title is no heading, because many
2126
2367
  * pages render their own `h1`. From 64 rem a sidebar that marks the current
2127
- * page names it already: the row hides, and only on a page without its own
2128
- * `h1` its heading stays for assistive technology. It is one fixed height
2129
- * and draws no line; CSS decides when it shows, so the server-rendered page
2130
- * already has its final geometry.
2368
+ * page names it already: the title and the way up hide, and only on a page
2369
+ * without its own `h1` its heading stays for assistive technology. With an
2370
+ * `AppWorkspace.Head` slot the row is always there and also carries the
2371
+ * views, the filters, the result count, and the actions; only its title
2372
+ * follows the rules above. It draws no line; CSS decides what shows and when
2373
+ * the filters wrap, so the server-rendered page already has its final
2374
+ * geometry.
2131
2375
  */
2132
2376
  function AppWorkspaceHead(props) {
2133
2377
  const messages = useWorkspaceMessages();
2378
+ const filters = useFilterMessages();
2379
+ // JSX prop getters construct their elements on every read. Share each
2380
+ // resolved slot between its presence check and its rendered content.
2381
+ const resolvedViews = children(() => props.head?.views);
2382
+ const resolvedFilters = children(() => props.head?.filters);
2383
+ const resolvedActions = children(() => props.head?.actions);
2384
+ const resolvedCount = children(() => props.head?.count);
2134
2385
  // A nested workspace is part of a page that already shows its title.
2135
2386
  const trail = props.nested ? () => undefined : usePageTrail();
2387
+ const resetContent = () => filters().reset;
2388
+ const primaryContent = () => [(() => {
2389
+ var _el$114 = _$getNextElement(_tmpl$53);
2390
+ _$effect(() => _$className(_el$114, props.head?.primary?.icon));
2391
+ return _el$114;
2392
+ })(), (() => {
2393
+ var _el$115 = _$getNextElement(_tmpl$54);
2394
+ _$insert(_el$115, () => props.head?.primary?.label);
2395
+ return _el$115;
2396
+ })()];
2136
2397
  return (() => {
2137
- var _el$108 = _$getNextElement(_tmpl$52),
2138
- _el$110 = _el$108.firstChild,
2139
- [_el$111, _co$16] = _$getNextMarker(_el$110.nextSibling),
2140
- _el$112 = _el$111.nextSibling,
2141
- [_el$113, _co$17] = _$getNextMarker(_el$112.nextSibling);
2142
- _$insert(_el$108, _$createComponent(IconButton, {
2398
+ var _el$116 = _$getNextElement(_tmpl$60),
2399
+ _el$117 = _el$116.firstChild,
2400
+ _el$127 = _el$117.firstChild,
2401
+ [_el$128, _co$18] = _$getNextMarker(_el$127.nextSibling),
2402
+ _el$129 = _el$128.nextSibling,
2403
+ [_el$130, _co$19] = _$getNextMarker(_el$129.nextSibling),
2404
+ _el$131 = _el$130.nextSibling,
2405
+ [_el$132, _co$20] = _$getNextMarker(_el$131.nextSibling),
2406
+ _el$133 = _el$132.nextSibling,
2407
+ [_el$134, _co$21] = _$getNextMarker(_el$133.nextSibling),
2408
+ _el$135 = _el$134.nextSibling,
2409
+ [_el$136, _co$22] = _$getNextMarker(_el$135.nextSibling),
2410
+ _el$142 = _el$117.nextSibling,
2411
+ [_el$143, _co$25] = _$getNextMarker(_el$142.nextSibling);
2412
+ _$insert(_el$117, _$createComponent(IconButton, {
2143
2413
  "class": "k2b-app-workspace__head-toggle",
2144
2414
  get label() {
2145
2415
  return messages().showNavigation;
@@ -2150,10 +2420,10 @@ function AppWorkspaceHead(props) {
2150
2420
  "aria-expanded": "false",
2151
2421
  "data-app-workspace-sidebar-toggle": "",
2152
2422
  get children() {
2153
- return _$getNextElement(_tmpl$51);
2423
+ return _$getNextElement(_tmpl$55);
2154
2424
  }
2155
- }), _el$111, _co$16);
2156
- _$insert(_el$108, _$createComponent(Show, {
2425
+ }), _el$128, _co$18);
2426
+ _$insert(_el$117, _$createComponent(Show, {
2157
2427
  get when() {
2158
2428
  return trail();
2159
2429
  },
@@ -2164,14 +2434,153 @@ function AppWorkspaceHead(props) {
2164
2434
  as: "p",
2165
2435
  fallback: true
2166
2436
  }), (() => {
2167
- var _el$114 = _$getNextElement(_tmpl$53);
2168
- _$setAttribute(_el$114, "data-k2b-server", isServer ? "" : undefined);
2169
- _$insert(_el$114, () => current().title);
2170
- return _el$114;
2437
+ var _el$144 = _$getNextElement(_tmpl$61);
2438
+ _$setAttribute(_el$144, "data-k2b-server", isServer ? "" : undefined);
2439
+ _$insert(_el$144, () => current().title);
2440
+ return _el$144;
2171
2441
  })()]
2172
- }), _el$113, _co$17);
2173
- _$effect(() => _$setAttribute(_el$108, "data-trail", trail()?.ancestors.length ? "up" : trail() ? "title" : undefined));
2174
- return _el$108;
2442
+ }), _el$130, _co$19);
2443
+ _$insert(_el$117, _$createComponent(Show, {
2444
+ get when() {
2445
+ return resolvedViews.toArray().some(Boolean);
2446
+ },
2447
+ get children() {
2448
+ var _el$119 = _$getNextElement(_tmpl$56);
2449
+ _$insert(_el$119, resolvedViews);
2450
+ return _el$119;
2451
+ }
2452
+ }), _el$132, _co$20);
2453
+ _$insert(_el$117, _$createComponent(Show, {
2454
+ get when() {
2455
+ return resolvedFilters.toArray().some(Boolean) || props.head?.filtered;
2456
+ },
2457
+ get children() {
2458
+ var _el$120 = _$getNextElement(_tmpl$57),
2459
+ _el$121 = _el$120.firstChild,
2460
+ [_el$122, _co$16] = _$getNextMarker(_el$121.nextSibling),
2461
+ _el$123 = _el$122.nextSibling,
2462
+ [_el$124, _co$17] = _$getNextMarker(_el$123.nextSibling);
2463
+ _$insert(_el$120, resolvedFilters, _el$122, _co$16);
2464
+ _$insert(_el$120, _$createComponent(Show, {
2465
+ get when() {
2466
+ return props.head?.filtered;
2467
+ },
2468
+ get children() {
2469
+ return _$createComponent(Show, {
2470
+ get when() {
2471
+ return props.head?.resetHref;
2472
+ },
2473
+ get fallback() {
2474
+ return _$createComponent(Button, {
2475
+ variant: "ghost",
2476
+ size: "sm",
2477
+ "class": "k2b-app-workspace__head-reset",
2478
+ onClick: () => props.head?.onReset?.(),
2479
+ get children() {
2480
+ return resetContent();
2481
+ }
2482
+ });
2483
+ },
2484
+ children: href => _$createComponent(ButtonLink, {
2485
+ variant: "ghost",
2486
+ size: "sm",
2487
+ "class": "k2b-app-workspace__head-reset",
2488
+ get href() {
2489
+ return href();
2490
+ },
2491
+ get onClick() {
2492
+ return props.head?.onReset ? event => {
2493
+ if (event.button !== 0 || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey) return;
2494
+ event.preventDefault();
2495
+ props.head?.onReset?.();
2496
+ } : undefined;
2497
+ },
2498
+ get children() {
2499
+ return resetContent();
2500
+ }
2501
+ })
2502
+ });
2503
+ }
2504
+ }), _el$124, _co$17);
2505
+ _$effect(() => _$setAttribute(_el$120, "aria-label", filters().filters));
2506
+ return _el$120;
2507
+ }
2508
+ }), _el$134, _co$21);
2509
+ _$insert(_el$117, _$createComponent(Show, {
2510
+ get when() {
2511
+ return _$memo(() => !!props.head?.filtered)() && resolvedCount.toArray().some(value => value !== undefined && value !== null && value !== false);
2512
+ },
2513
+ get children() {
2514
+ var _el$125 = _$getNextElement(_tmpl$58),
2515
+ _el$126 = _el$125.firstChild;
2516
+ _$insert(_el$126, resolvedCount);
2517
+ return _el$125;
2518
+ }
2519
+ }), _el$136, _co$22);
2520
+ _$insert(_el$116, _$createComponent(Show, {
2521
+ get when() {
2522
+ return resolvedActions.toArray().some(Boolean) || props.head?.primary;
2523
+ },
2524
+ get children() {
2525
+ var _el$137 = _$getNextElement(_tmpl$59),
2526
+ _el$138 = _el$137.firstChild,
2527
+ [_el$139, _co$23] = _$getNextMarker(_el$138.nextSibling),
2528
+ _el$140 = _el$139.nextSibling,
2529
+ [_el$141, _co$24] = _$getNextMarker(_el$140.nextSibling);
2530
+ _$insert(_el$137, resolvedActions, _el$139, _co$23);
2531
+ _$insert(_el$137, _$createComponent(Show, {
2532
+ get when() {
2533
+ return props.head?.primary;
2534
+ },
2535
+ children: primary => _$createComponent(Show, {
2536
+ get when() {
2537
+ return primary().href;
2538
+ },
2539
+ get fallback() {
2540
+ return _$createComponent(Button, {
2541
+ variant: "primary",
2542
+ size: "sm",
2543
+ "class": "k2b-app-workspace__head-primary",
2544
+ "data-workspace-primary": "",
2545
+ get onClick() {
2546
+ return primary().onClick;
2547
+ },
2548
+ get children() {
2549
+ return primaryContent();
2550
+ }
2551
+ });
2552
+ },
2553
+ children: href => _$createComponent(ButtonLink, {
2554
+ variant: "primary",
2555
+ size: "sm",
2556
+ "class": "k2b-app-workspace__head-primary",
2557
+ "data-workspace-primary": "",
2558
+ get href() {
2559
+ return href();
2560
+ },
2561
+ get onClick() {
2562
+ return primary().onClick;
2563
+ },
2564
+ get children() {
2565
+ return primaryContent();
2566
+ }
2567
+ })
2568
+ })
2569
+ }), _el$141, _co$24);
2570
+ return _el$137;
2571
+ }
2572
+ }), _el$143, _co$25);
2573
+ _$effect(_p$ => {
2574
+ var _v$85 = trail()?.ancestors.length ? "up" : trail() ? "title" : undefined,
2575
+ _v$86 = props.head ? "" : undefined;
2576
+ _v$85 !== _p$.e && _$setAttribute(_el$116, "data-trail", _p$.e = _v$85);
2577
+ _v$86 !== _p$.t && _$setAttribute(_el$116, "data-row", _p$.t = _v$86);
2578
+ return _p$;
2579
+ }, {
2580
+ e: undefined,
2581
+ t: undefined
2582
+ });
2583
+ return _el$116;
2175
2584
  })();
2176
2585
  }
2177
2586
  const AppWorkspace = props => {
@@ -2199,6 +2608,20 @@ const AppWorkspace = props => {
2199
2608
  writeState: state => props.onLayoutChange?.(state)
2200
2609
  }));
2201
2610
  });
2611
+ const contents = () => {
2612
+ const resolved = children(() => props.children);
2613
+ const slots = createMemo(() => flatten(resolved()));
2614
+ // Same props object, same memo value: a sibling change must not rebuild the head's slots.
2615
+ const head = createMemo(() => slots().find(headSlot)?.props);
2616
+ const content = () => slots().filter(value => !headSlot(value));
2617
+ return [_$createComponent(AppWorkspaceHead, {
2618
+ sidebarId: sidebarId,
2619
+ nested: nested,
2620
+ get head() {
2621
+ return head();
2622
+ }
2623
+ }), _$memo(content)];
2624
+ };
2202
2625
  return _$createComponent(ResizeContext.Provider, {
2203
2626
  get value() {
2204
2627
  return props.resizable !== false;
@@ -2207,31 +2630,23 @@ const AppWorkspace = props => {
2207
2630
  return _$createComponent(WorkspaceContext.Provider, {
2208
2631
  value: workspace,
2209
2632
  get children() {
2210
- var _el$115 = _$getNextElement(_tmpl$54),
2211
- _el$116 = _el$115.firstChild,
2212
- [_el$117, _co$18] = _$getNextMarker(_el$116.nextSibling),
2213
- _el$118 = _el$117.nextSibling,
2214
- [_el$119, _co$19] = _$getNextMarker(_el$118.nextSibling);
2215
- var _ref$7 = root;
2216
- typeof _ref$7 === "function" ? _$use(_ref$7, _el$115) : root = _el$115;
2217
- _$insert(_el$115, _$createComponent(AppWorkspaceHead, {
2218
- sidebarId: sidebarId,
2219
- nested: nested
2220
- }), _el$117, _co$18);
2221
- _$insert(_el$115, () => props.children, _el$119, _co$19);
2633
+ var _el$145 = _$getNextElement(_tmpl$62);
2634
+ var _ref$8 = root;
2635
+ typeof _ref$8 === "function" ? _$use(_ref$8, _el$145) : root = _el$145;
2636
+ _$insert(_el$145, contents);
2222
2637
  _$effect(_p$ => {
2223
- var _v$86 = `k2b-app-workspace ${props.class ?? ""}`,
2224
- _v$87 = props.mobileSurface,
2225
- _v$88 = props.flat ? "true" : undefined,
2226
- _v$89 = initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed),
2227
- _v$90 = props.resizable === false ? "false" : "true",
2228
- _v$91 = appWorkspaceLayoutStyle(initialLayoutState());
2229
- _v$86 !== _p$.e && _$className(_el$115, _p$.e = _v$86);
2230
- _v$87 !== _p$.t && _$setAttribute(_el$115, "data-mobile-surface", _p$.t = _v$87);
2231
- _v$88 !== _p$.a && _$setAttribute(_el$115, "data-flat", _p$.a = _v$88);
2232
- _v$89 !== _p$.o && _$setAttribute(_el$115, "data-sidebar-collapsed", _p$.o = _v$89);
2233
- _v$90 !== _p$.i && _$setAttribute(_el$115, "data-workspace-resizable", _p$.i = _v$90);
2234
- _p$.n = _$style(_el$115, _v$91, _p$.n);
2638
+ var _v$87 = `k2b-app-workspace ${props.class ?? ""}`,
2639
+ _v$88 = props.mobileSurface,
2640
+ _v$89 = props.flat ? "true" : undefined,
2641
+ _v$90 = initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed),
2642
+ _v$91 = props.resizable === false ? "false" : "true",
2643
+ _v$92 = appWorkspaceLayoutStyle(initialLayoutState());
2644
+ _v$87 !== _p$.e && _$className(_el$145, _p$.e = _v$87);
2645
+ _v$88 !== _p$.t && _$setAttribute(_el$145, "data-mobile-surface", _p$.t = _v$88);
2646
+ _v$89 !== _p$.a && _$setAttribute(_el$145, "data-flat", _p$.a = _v$89);
2647
+ _v$90 !== _p$.o && _$setAttribute(_el$145, "data-sidebar-collapsed", _p$.o = _v$90);
2648
+ _v$91 !== _p$.i && _$setAttribute(_el$145, "data-workspace-resizable", _p$.i = _v$91);
2649
+ _p$.n = _$style(_el$145, _v$92, _p$.n);
2235
2650
  return _p$;
2236
2651
  }, {
2237
2652
  e: undefined,
@@ -2241,7 +2656,7 @@ const AppWorkspace = props => {
2241
2656
  i: undefined,
2242
2657
  n: undefined
2243
2658
  });
2244
- return _el$115;
2659
+ return _el$145;
2245
2660
  }
2246
2661
  });
2247
2662
  }
@@ -2255,11 +2670,12 @@ AppWorkspace.LayoutStateProvider = props => _$createComponent(LayoutStateContext
2255
2670
  return props.children;
2256
2671
  }
2257
2672
  });
2673
+ AppWorkspace.Head = AppWorkspaceHeadSlot;
2258
2674
  AppWorkspace.Content = props => (() => {
2259
- var _el$120 = _$getNextElement(_tmpl$5);
2260
- _$insert(_el$120, () => props.children);
2261
- _$effect(() => _$className(_el$120, `k2b-app-workspace__content ${props.class ?? ""}`));
2262
- return _el$120;
2675
+ var _el$146 = _$getNextElement(_tmpl$5);
2676
+ _$insert(_el$146, () => props.children);
2677
+ _$effect(() => _$className(_el$146, `k2b-app-workspace__content ${props.class ?? ""}`));
2678
+ return _el$146;
2263
2679
  })();
2264
2680
  AppWorkspace.Main = AppWorkspaceMain;
2265
2681
  AppWorkspace.MainPane = AppWorkspaceMainPane;