@k2b/ui 0.31.0 → 0.33.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 (209) hide show
  1. package/dist/base.css +2 -0
  2. package/dist/browser/actions/Dropdown.js +159 -99
  3. package/dist/browser/actions/Dropdown.js.map +1 -1
  4. package/dist/browser/actions/FilterChip.js +113 -56
  5. package/dist/browser/actions/FilterChip.js.map +1 -1
  6. package/dist/browser/actions/ViewTabs.js +8 -0
  7. package/dist/browser/actions/ViewTabs.js.map +1 -1
  8. package/dist/browser/actions/filter-messages.js +26 -2
  9. package/dist/browser/actions/filter-messages.js.map +1 -1
  10. package/dist/browser/actions/menu-rows.js +23 -3
  11. package/dist/browser/actions/menu-rows.js.map +1 -1
  12. package/dist/browser/actions/menu-sheet.js +2 -7
  13. package/dist/browser/actions/menu-sheet.js.map +1 -1
  14. package/dist/browser/chat/ChatComposer.js +480 -403
  15. package/dist/browser/chat/ChatComposer.js.map +1 -1
  16. package/dist/browser/chat/chat-messages.js +14 -0
  17. package/dist/browser/chat/chat-messages.js.map +1 -1
  18. package/dist/browser/chat/index.js.map +1 -1
  19. package/dist/browser/content/Calendar.js +39 -29
  20. package/dist/browser/content/Calendar.js.map +1 -1
  21. package/dist/browser/content/CalendarDayView.js +159 -165
  22. package/dist/browser/content/CalendarDayView.js.map +1 -1
  23. package/dist/browser/content/Chart.js +104 -55
  24. package/dist/browser/content/Chart.js.map +1 -1
  25. package/dist/browser/content/ChartExplorer.js +5 -3
  26. package/dist/browser/content/ChartExplorer.js.map +1 -1
  27. package/dist/browser/content/MapView.js +4 -4
  28. package/dist/browser/content/MapView.js.map +1 -1
  29. package/dist/browser/content/MessageRow.js +607 -343
  30. package/dist/browser/content/MessageRow.js.map +1 -1
  31. package/dist/browser/content/ReactionBar.js +17 -0
  32. package/dist/browser/content/ReactionBar.js.map +1 -1
  33. package/dist/browser/content/chart-inspection-core.js +4 -1
  34. package/dist/browser/content/chart-inspection-core.js.map +1 -1
  35. package/dist/browser/content/code-highlight.js +66 -0
  36. package/dist/browser/content/code-highlight.js.map +1 -1
  37. package/dist/browser/content/index.js +2 -1
  38. package/dist/browser/content/index.js.map +1 -1
  39. package/dist/browser/content/map-view-live.js +47 -10
  40. package/dist/browser/content/map-view-live.js.map +1 -1
  41. package/dist/browser/content/map-view-types.js.map +1 -1
  42. package/dist/browser/feedback/dialog-core.js +6 -0
  43. package/dist/browser/feedback/dialog-core.js.map +1 -1
  44. package/dist/browser/inputs/AutocompleteEditor.js +167 -104
  45. package/dist/browser/inputs/AutocompleteEditor.js.map +1 -1
  46. package/dist/browser/inputs/RichSelect.js +1474 -0
  47. package/dist/browser/inputs/RichSelect.js.map +1 -0
  48. package/dist/browser/inputs/TextInput.js +99 -61
  49. package/dist/browser/inputs/TextInput.js.map +1 -1
  50. package/dist/browser/inputs/choice.js +19 -8
  51. package/dist/browser/inputs/choice.js.map +1 -1
  52. package/dist/browser/inputs/index.js +1 -0
  53. package/dist/browser/inputs/index.js.map +1 -1
  54. package/dist/browser/inputs/rich-select-messages.js +46 -0
  55. package/dist/browser/inputs/rich-select-messages.js.map +1 -0
  56. package/dist/browser/intl/shortcut-messages.js +4 -0
  57. package/dist/browser/intl/shortcut-messages.js.map +1 -1
  58. package/dist/browser/intl/shortcut.js +4 -0
  59. package/dist/browser/intl/shortcut.js.map +1 -1
  60. package/dist/browser/layout/AppWorkspace.js +624 -565
  61. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  62. package/dist/browser/layout/DetailPanel.js +10 -1
  63. package/dist/browser/layout/DetailPanel.js.map +1 -1
  64. package/dist/browser/layout/MobileShell.js +213 -38
  65. package/dist/browser/layout/MobileShell.js.map +1 -1
  66. package/dist/browser/layout/Navigation.js +14 -5
  67. package/dist/browser/layout/Navigation.js.map +1 -1
  68. package/dist/browser/layout/PageTitle.js +9 -3
  69. package/dist/browser/layout/PageTitle.js.map +1 -1
  70. package/dist/browser/layout/ResizeSeparator.js +8 -2
  71. package/dist/browser/layout/ResizeSeparator.js.map +1 -1
  72. package/dist/browser/layout/app-workspace-controller.js +192 -31
  73. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  74. package/dist/browser/layout/index.js +1 -0
  75. package/dist/browser/layout/index.js.map +1 -1
  76. package/dist/browser/layout/navigation-model.js.map +1 -1
  77. package/dist/browser/layout/resize-separator.js +25 -1
  78. package/dist/browser/layout/resize-separator.js.map +1 -1
  79. package/dist/browser/layout/scroll-fade.js +32 -5
  80. package/dist/browser/layout/scroll-fade.js.map +1 -1
  81. package/dist/browser/surfaces/NoticeCard.js +46 -30
  82. package/dist/browser/surfaces/NoticeCard.js.map +1 -1
  83. package/dist/browser/surfaces/Skeleton.js +14 -0
  84. package/dist/browser/surfaces/Skeleton.js.map +1 -0
  85. package/dist/browser/surfaces/index.js +1 -0
  86. package/dist/browser/surfaces/index.js.map +1 -1
  87. package/dist/browser/surfaces/resource-messages.js +2 -2
  88. package/dist/browser/surfaces/resource-messages.js.map +1 -1
  89. package/dist/ssr/actions/Dropdown.js +51 -27
  90. package/dist/ssr/actions/Dropdown.js.map +1 -1
  91. package/dist/ssr/actions/FilterChip.js +67 -16
  92. package/dist/ssr/actions/FilterChip.js.map +1 -1
  93. package/dist/ssr/actions/ViewTabs.js +8 -0
  94. package/dist/ssr/actions/ViewTabs.js.map +1 -1
  95. package/dist/ssr/actions/filter-messages.js +26 -2
  96. package/dist/ssr/actions/filter-messages.js.map +1 -1
  97. package/dist/ssr/actions/menu-rows.js +23 -3
  98. package/dist/ssr/actions/menu-rows.js.map +1 -1
  99. package/dist/ssr/actions/menu-sheet.js +2 -7
  100. package/dist/ssr/actions/menu-sheet.js.map +1 -1
  101. package/dist/ssr/chat/ChatComposer.js +96 -67
  102. package/dist/ssr/chat/ChatComposer.js.map +1 -1
  103. package/dist/ssr/chat/chat-messages.js +14 -0
  104. package/dist/ssr/chat/chat-messages.js.map +1 -1
  105. package/dist/ssr/chat/index.js.map +1 -1
  106. package/dist/ssr/content/Calendar.js +40 -31
  107. package/dist/ssr/content/Calendar.js.map +1 -1
  108. package/dist/ssr/content/CalendarDayView.js +40 -48
  109. package/dist/ssr/content/CalendarDayView.js.map +1 -1
  110. package/dist/ssr/content/Chart.js +27 -7
  111. package/dist/ssr/content/Chart.js.map +1 -1
  112. package/dist/ssr/content/ChartExplorer.js +5 -3
  113. package/dist/ssr/content/ChartExplorer.js.map +1 -1
  114. package/dist/ssr/content/MapView.js +4 -4
  115. package/dist/ssr/content/MapView.js.map +1 -1
  116. package/dist/ssr/content/MessageRow.js +264 -91
  117. package/dist/ssr/content/MessageRow.js.map +1 -1
  118. package/dist/ssr/content/ReactionBar.js +17 -0
  119. package/dist/ssr/content/ReactionBar.js.map +1 -1
  120. package/dist/ssr/content/chart-inspection-core.js +4 -1
  121. package/dist/ssr/content/chart-inspection-core.js.map +1 -1
  122. package/dist/ssr/content/code-highlight.js +66 -0
  123. package/dist/ssr/content/code-highlight.js.map +1 -1
  124. package/dist/ssr/content/index.js +2 -1
  125. package/dist/ssr/content/index.js.map +1 -1
  126. package/dist/ssr/content/map-view-types.js.map +1 -1
  127. package/dist/ssr/feedback/dialog-core.js +6 -0
  128. package/dist/ssr/feedback/dialog-core.js.map +1 -1
  129. package/dist/ssr/inputs/AutocompleteEditor.js +64 -24
  130. package/dist/ssr/inputs/AutocompleteEditor.js.map +1 -1
  131. package/dist/ssr/inputs/RichSelect.js +950 -0
  132. package/dist/ssr/inputs/RichSelect.js.map +1 -0
  133. package/dist/ssr/inputs/TextInput.js +44 -17
  134. package/dist/ssr/inputs/TextInput.js.map +1 -1
  135. package/dist/ssr/inputs/choice.js +19 -8
  136. package/dist/ssr/inputs/choice.js.map +1 -1
  137. package/dist/ssr/inputs/index.js +1 -0
  138. package/dist/ssr/inputs/index.js.map +1 -1
  139. package/dist/ssr/inputs/rich-select-messages.js +46 -0
  140. package/dist/ssr/inputs/rich-select-messages.js.map +1 -0
  141. package/dist/ssr/intl/shortcut-messages.js +4 -0
  142. package/dist/ssr/intl/shortcut-messages.js.map +1 -1
  143. package/dist/ssr/intl/shortcut.js +4 -0
  144. package/dist/ssr/intl/shortcut.js.map +1 -1
  145. package/dist/ssr/layout/AppWorkspace.js +166 -125
  146. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  147. package/dist/ssr/layout/DetailPanel.js +1 -1
  148. package/dist/ssr/layout/DetailPanel.js.map +1 -1
  149. package/dist/ssr/layout/MobileShell.js +100 -20
  150. package/dist/ssr/layout/MobileShell.js.map +1 -1
  151. package/dist/ssr/layout/Navigation.js +1 -1
  152. package/dist/ssr/layout/Navigation.js.map +1 -1
  153. package/dist/ssr/layout/PageTitle.js +9 -3
  154. package/dist/ssr/layout/PageTitle.js.map +1 -1
  155. package/dist/ssr/layout/ResizeSeparator.js +4 -1
  156. package/dist/ssr/layout/ResizeSeparator.js.map +1 -1
  157. package/dist/ssr/layout/app-workspace-controller.js +192 -31
  158. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  159. package/dist/ssr/layout/index.js +1 -0
  160. package/dist/ssr/layout/index.js.map +1 -1
  161. package/dist/ssr/layout/navigation-model.js.map +1 -1
  162. package/dist/ssr/layout/resize-separator.js +25 -1
  163. package/dist/ssr/layout/resize-separator.js.map +1 -1
  164. package/dist/ssr/layout/scroll-fade.js +32 -5
  165. package/dist/ssr/layout/scroll-fade.js.map +1 -1
  166. package/dist/ssr/surfaces/NoticeCard.js +21 -12
  167. package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
  168. package/dist/ssr/surfaces/Skeleton.js +8 -0
  169. package/dist/ssr/surfaces/Skeleton.js.map +1 -0
  170. package/dist/ssr/surfaces/index.js +1 -0
  171. package/dist/ssr/surfaces/index.js.map +1 -1
  172. package/dist/ssr/surfaces/resource-messages.js +2 -2
  173. package/dist/ssr/surfaces/resource-messages.js.map +1 -1
  174. package/dist/styles.css +1 -1
  175. package/dist/types/actions/Dropdown.d.ts +14 -0
  176. package/dist/types/actions/FilterChip.d.ts +11 -0
  177. package/dist/types/actions/filter-messages.d.ts +12 -0
  178. package/dist/types/actions/menu-rows.d.ts +7 -2
  179. package/dist/types/chat/ChatComposer.d.ts +13 -0
  180. package/dist/types/chat/chat-messages.d.ts +7 -0
  181. package/dist/types/chat/index.d.ts +1 -1
  182. package/dist/types/content/Calendar.d.ts +7 -0
  183. package/dist/types/content/Chart.d.ts +4 -2
  184. package/dist/types/content/ChartExplorer.d.ts +0 -1
  185. package/dist/types/content/MessageRow.d.ts +64 -2
  186. package/dist/types/content/code-highlight.d.ts +3 -1
  187. package/dist/types/content/index.d.ts +3 -2
  188. package/dist/types/content/map-view-live.d.ts +1 -1
  189. package/dist/types/content/map-view-types.d.ts +2 -0
  190. package/dist/types/feedback/dialog-core.d.ts +3 -0
  191. package/dist/types/inputs/AutocompleteEditor.d.ts +6 -1
  192. package/dist/types/inputs/RichSelect.d.ts +93 -0
  193. package/dist/types/inputs/TextInput.d.ts +5 -2
  194. package/dist/types/inputs/choice.d.ts +24 -4
  195. package/dist/types/inputs/index.d.ts +2 -0
  196. package/dist/types/inputs/rich-select-messages.d.ts +21 -0
  197. package/dist/types/intl/shortcut-messages.d.ts +2 -0
  198. package/dist/types/layout/AppWorkspace.d.ts +9 -0
  199. package/dist/types/layout/DetailPanel.d.ts +2 -0
  200. package/dist/types/layout/MobileShell.d.ts +52 -5
  201. package/dist/types/layout/app-workspace-controller.d.ts +2 -0
  202. package/dist/types/layout/index.d.ts +2 -1
  203. package/dist/types/layout/navigation-model.d.ts +2 -0
  204. package/dist/types/layout/resize-separator.d.ts +1 -0
  205. package/dist/types/layout/scroll-fade.d.ts +5 -0
  206. package/dist/types/surfaces/NoticeCard.d.ts +3 -0
  207. package/dist/types/surfaces/Skeleton.d.ts +6 -0
  208. package/dist/types/surfaces/index.d.ts +1 -0
  209. package/package.json +4 -4
@@ -8,64 +8,65 @@ import { ssrStyle as _$ssrStyle } from "solid-js/web";
8
8
  import { ssrAttribute as _$ssrAttribute } from "solid-js/web";
9
9
  import { escape as _$escape } from "solid-js/web";
10
10
  var _tmpl$ = ["<button type=\"button\" class=\"k2b-app-workspace__resize\" role=\"separator\"", " style=\"", "\"><span aria-hidden=\"true\"></span></button>"],
11
- _tmpl$2 = ["<p class=\"k2b-truncate-fade\">", "</p>"],
12
- _tmpl$3 = ["<div class=\"k2b-app-workspace__level-actions\">", "</div>"],
13
- _tmpl$4 = ["<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>", "</header>"],
14
- _tmpl$5 = ["<style>", "</style>"],
15
- _tmpl$6 = ["<div class=\"k2b-app-workspace__main-primary\" data-workspace-main-region=\"main\"", ">", "</div>"],
16
- _tmpl$7 = ["<section", " class=\"", "\"", " style=\"", "\">", "</section>"],
17
- _tmpl$8 = "<i class=\"ti ti-chevron-left\" aria-hidden=\"true\"></i>",
18
- _tmpl$9 = ["<div class=\"k2b-app-workspace__level-body\"", ">", "</div>"],
19
- _tmpl$0 = "<i class=\"ti ti-layout-sidebar-right\" aria-hidden=\"true\"></i>",
20
- _tmpl$1 = ["<aside", " class=\"", "\"", "", " style=\"", "\"><button type=\"button\" class=\"k2b-app-workspace__detail-grabber\"", " aria-pressed=\"false\"><span aria-hidden=\"true\"></span></button>", "</aside>"],
21
- _tmpl$10 = ["<aside", " class=\"", "\"", "", " style=\"", "\">", "</aside>"],
22
- _tmpl$11 = ["<nav class=\"k2b-app-workspace__sidebar-sheet\"", " style=\"", "\">", "</nav>"],
23
- _tmpl$12 = ["<div class=\"k2b-app-workspace__sidebar-desktop\"", ">", "</div>"],
24
- _tmpl$13 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-all\" aria-haspopup=\"dialog\"", "><span>", "</span><i class=\"ti ti-chevron-down\" aria-hidden=\"true\"></i></button>"],
25
- _tmpl$14 = ["<script>", "</script>"],
26
- _tmpl$15 = ["<span aria-hidden=\"true\"><i", "></i></span>"],
27
- _tmpl$16 = ["<span class=\"k2b-app-workspace__sidebar-section-count\">", "</span>"],
28
- _tmpl$17 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-section-toggle\"", ">", "<i", " aria-hidden=\"true\"></i></button>"],
29
- _tmpl$18 = ["<div class=\"k2b-app-workspace__sidebar-section-actions\">", "</div>"],
30
- _tmpl$19 = ["<header class=\"k2b-app-workspace__sidebar-section-header\">", "", "</header>"],
31
- _tmpl$20 = ["<div", "", " class=\"k2b-app-workspace__sidebar-section-content\">", "</div>"],
32
- _tmpl$21 = ["<h2>", "</h2>"],
33
- _tmpl$22 = ["<div class=\"k2b-app-workspace__sidebar-item-actions\"", ">", "</div>"],
34
- _tmpl$23 = "<span class=\"k2b-app-workspace__sidebar-status-mention\" aria-hidden=\"true\">@</span>",
35
- _tmpl$24 = "<span class=\"k2b-app-workspace__sidebar-status-muted\" aria-hidden=\"true\"><i class=\"ti ti-bell-off\"></i></span>",
36
- _tmpl$25 = ["<span class=\"k2b-app-workspace__sidebar-status-count\"", ">", "</span>"],
37
- _tmpl$26 = ["<span class=\"k2b-app-workspace__sidebar-status-unread\" aria-hidden=\"true\">", "</span>"],
38
- _tmpl$27 = ["<span class=\"k2b-sr-only\">, ", "</span>"],
39
- _tmpl$28 = ["<span class=\"k2b-app-workspace__sidebar-status\"", ">", "</span>"],
40
- _tmpl$29 = "<span class=\"k2b-app-workspace__sidebar-status-dot\"></span>",
41
- _tmpl$30 = ["<span", " aria-hidden=\"true\">", "</span>"],
42
- _tmpl$31 = ["<span class=\"k2b-app-workspace__sidebar-item-context-meta\">", "</span>"],
43
- _tmpl$32 = ["<span class=\"k2b-app-workspace__sidebar-item-context\"><span class=\"k2b-app-workspace__sidebar-item-context-label k2b-truncate-fade\">", "</span>", "</span>"],
44
- _tmpl$33 = ["<span class=\"k2b-app-workspace__sidebar-item-description k2b-truncate-fade\">", "</span>"],
45
- _tmpl$34 = ["<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>"],
46
- _tmpl$35 = ["<span class=\"k2b-app-workspace__sidebar-item-meta\"", ">", "</span>"],
47
- _tmpl$36 = ["<i", "></i>"],
48
- _tmpl$37 = ["<a", " class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</a>"],
49
- _tmpl$38 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</button>"],
50
- _tmpl$39 = ["<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\">", "</span></span>"],
51
- _tmpl$40 = ["<span class=\"", "\"", ">", "</span>"],
52
- _tmpl$41 = ["<span class=\"k2b-app-workspace__nav-tree-toggle\" data-k2b-nav-tree-toggle aria-hidden=\"true\"><i class=\"", "\"></i></span>"],
53
- _tmpl$42 = ["<span class=\"k2b-app-workspace__sidebar-item-label\"", "><span class=\"k2b-app-workspace__sidebar-item-label-text k2b-truncate-fade-lines\">", "</span></span>"],
54
- _tmpl$43 = ["<div class=\"k2b-app-workspace__nav-tree-group\" role=\"group\">", "</div>"],
55
- _tmpl$44 = ["<div class=\"k2b-app-workspace__nav-tree-node\" role=\"treeitem\"", " style=\"", "\">", "", "</div>"],
56
- _tmpl$45 = ["<div class=\"", "\" role=\"tree\"", ">", "</div>"],
57
- _tmpl$46 = ["<div class=\"k2b-app-workspace__sidebar-icon-grid\"", ">", "</div>"],
58
- _tmpl$47 = ["<i", " aria-hidden=\"true\"></i>"],
59
- _tmpl$48 = ["<span class=\"k2b-app-workspace__head-primary-label\">", "</span>"],
60
- _tmpl$49 = "<i class=\"ti ti-layout-sidebar\" aria-hidden=\"true\"></i>",
61
- _tmpl$50 = ["<div class=\"k2b-app-workspace__head-views\">", "</div>"],
62
- _tmpl$51 = ["<div class=\"k2b-app-workspace__head-filters\" role=\"group\"", ">", "", "</div>"],
63
- _tmpl$52 = ["<span class=\"k2b-app-workspace__head-count\"><span>", "</span></span>"],
64
- _tmpl$53 = ["<div class=\"k2b-app-workspace__head-actions\">", "", "</div>"],
65
- _tmpl$54 = ["<div class=\"k2b-app-workspace__head\"", "><div class=\"k2b-app-workspace__head-lead\">", "", "", "", "", "</div>", "</div>"],
66
- _tmpl$55 = ["<h1 class=\"k2b-app-workspace__head-heading\" data-k2b-page-trail-title", ">", "</h1>"],
67
- _tmpl$56 = ["<div class=\"", "\" data-k2b-app-workspace", " style=\"", "\">", "</div>"],
68
- _tmpl$57 = ["<div class=\"", "\">", "</div>"];
11
+ _tmpl$2 = ["<span class=\"k2b-app-workspace__level-lead\">", "</span>"],
12
+ _tmpl$3 = ["<p class=\"k2b-truncate-fade\">", "</p>"],
13
+ _tmpl$4 = ["<div class=\"k2b-app-workspace__level-actions\">", "</div>"],
14
+ _tmpl$5 = ["<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>", "</header>"],
15
+ _tmpl$6 = ["<style>", "</style>"],
16
+ _tmpl$7 = ["<div class=\"k2b-app-workspace__main-primary\" data-workspace-main-region=\"main\"", ">", "</div>"],
17
+ _tmpl$8 = ["<section", " class=\"", "\"", " style=\"", "\">", "</section>"],
18
+ _tmpl$9 = "<i class=\"ti ti-chevron-left\" aria-hidden=\"true\"></i>",
19
+ _tmpl$0 = ["<div class=\"k2b-app-workspace__level-body\"", ">", "</div>"],
20
+ _tmpl$1 = "<i class=\"ti ti-layout-sidebar-right\" aria-hidden=\"true\"></i>",
21
+ _tmpl$10 = ["<aside", " class=\"", "\"", "", " style=\"", "\"><button type=\"button\" class=\"k2b-app-workspace__detail-grabber\"", " aria-pressed=\"false\"><span aria-hidden=\"true\"></span></button>", "</aside>"],
22
+ _tmpl$11 = ["<aside", " class=\"", "\"", "", " style=\"", "\">", "</aside>"],
23
+ _tmpl$12 = ["<nav class=\"k2b-app-workspace__sidebar-sheet\"", " style=\"", "\">", "</nav>"],
24
+ _tmpl$13 = ["<div class=\"k2b-app-workspace__sidebar-desktop\"", ">", "</div>"],
25
+ _tmpl$14 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-all\" aria-haspopup=\"dialog\"", "><span>", "</span><i class=\"ti ti-chevron-down\" aria-hidden=\"true\"></i></button>"],
26
+ _tmpl$15 = ["<script>", "</script>"],
27
+ _tmpl$16 = ["<span aria-hidden=\"true\"><i", "></i></span>"],
28
+ _tmpl$17 = ["<span class=\"k2b-app-workspace__sidebar-section-count\">", "</span>"],
29
+ _tmpl$18 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-section-toggle\"", ">", "<i", " aria-hidden=\"true\"></i></button>"],
30
+ _tmpl$19 = ["<div class=\"k2b-app-workspace__sidebar-section-actions\">", "</div>"],
31
+ _tmpl$20 = ["<header class=\"k2b-app-workspace__sidebar-section-header\">", "", "</header>"],
32
+ _tmpl$21 = ["<div", "", " class=\"k2b-app-workspace__sidebar-section-content\">", "</div>"],
33
+ _tmpl$22 = ["<h2>", "</h2>"],
34
+ _tmpl$23 = ["<div class=\"k2b-app-workspace__sidebar-item-actions\"", ">", "</div>"],
35
+ _tmpl$24 = "<span class=\"k2b-app-workspace__sidebar-status-mention\" aria-hidden=\"true\">@</span>",
36
+ _tmpl$25 = "<span class=\"k2b-app-workspace__sidebar-status-muted\" aria-hidden=\"true\"><i class=\"ti ti-bell-off\"></i></span>",
37
+ _tmpl$26 = ["<span class=\"k2b-app-workspace__sidebar-status-count\"", ">", "</span>"],
38
+ _tmpl$27 = ["<span class=\"k2b-app-workspace__sidebar-status-unread\" aria-hidden=\"true\">", "</span>"],
39
+ _tmpl$28 = ["<span class=\"k2b-sr-only\">, ", "</span>"],
40
+ _tmpl$29 = ["<span class=\"k2b-app-workspace__sidebar-status\"", ">", "</span>"],
41
+ _tmpl$30 = "<span class=\"k2b-app-workspace__sidebar-status-dot\"></span>",
42
+ _tmpl$31 = ["<span", " aria-hidden=\"true\">", "</span>"],
43
+ _tmpl$32 = ["<span class=\"k2b-app-workspace__sidebar-item-context-meta\">", "</span>"],
44
+ _tmpl$33 = ["<span class=\"k2b-app-workspace__sidebar-item-context\"><span class=\"k2b-app-workspace__sidebar-item-context-label k2b-truncate-fade\">", "</span>", "</span>"],
45
+ _tmpl$34 = ["<span class=\"k2b-app-workspace__sidebar-item-description k2b-truncate-fade\">", "</span>"],
46
+ _tmpl$35 = ["<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>"],
47
+ _tmpl$36 = ["<span class=\"k2b-app-workspace__sidebar-item-meta\"", ">", "</span>"],
48
+ _tmpl$37 = ["<i", "></i>"],
49
+ _tmpl$38 = ["<a", " class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</a>"],
50
+ _tmpl$39 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</button>"],
51
+ _tmpl$40 = ["<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\">", "</span></span>"],
52
+ _tmpl$41 = ["<span class=\"", "\"", ">", "</span>"],
53
+ _tmpl$42 = ["<span class=\"k2b-app-workspace__nav-tree-toggle\" data-k2b-nav-tree-toggle aria-hidden=\"true\"><i class=\"", "\"></i></span>"],
54
+ _tmpl$43 = ["<span class=\"k2b-app-workspace__sidebar-item-label\"", "><span class=\"k2b-app-workspace__sidebar-item-label-text k2b-truncate-fade-lines\">", "</span></span>"],
55
+ _tmpl$44 = ["<div class=\"k2b-app-workspace__nav-tree-group\" role=\"group\">", "</div>"],
56
+ _tmpl$45 = ["<div class=\"k2b-app-workspace__nav-tree-node\" role=\"treeitem\"", " style=\"", "\">", "", "</div>"],
57
+ _tmpl$46 = ["<div class=\"", "\" role=\"tree\"", ">", "</div>"],
58
+ _tmpl$47 = ["<div class=\"k2b-app-workspace__sidebar-icon-grid\"", ">", "</div>"],
59
+ _tmpl$48 = ["<i", " aria-hidden=\"true\"></i>"],
60
+ _tmpl$49 = ["<span class=\"k2b-app-workspace__head-primary-label\">", "</span>"],
61
+ _tmpl$50 = "<i class=\"ti ti-layout-sidebar\" aria-hidden=\"true\"></i>",
62
+ _tmpl$51 = ["<div class=\"k2b-app-workspace__head-views\">", "</div>"],
63
+ _tmpl$52 = ["<div class=\"k2b-app-workspace__head-filters\" role=\"group\"", ">", "", "</div>"],
64
+ _tmpl$53 = ["<span class=\"k2b-app-workspace__head-count\"><span>", "</span></span>"],
65
+ _tmpl$54 = ["<div class=\"k2b-app-workspace__head-actions\">", "", "</div>"],
66
+ _tmpl$55 = ["<div class=\"k2b-app-workspace__head\"", ">", "<div class=\"k2b-app-workspace__head-lead\">", "", "", "", "", "</div>", "</div>"],
67
+ _tmpl$56 = ["<h1 class=\"k2b-app-workspace__head-heading\" data-k2b-page-trail-title", ">", "</h1>"],
68
+ _tmpl$57 = ["<div class=\"", "\" data-k2b-app-workspace", " style=\"", "\">", "</div>"],
69
+ _tmpl$58 = ["<div class=\"", "\">", "</div>"];
69
70
  import { Link } from "@k2b/ssr/nav";
70
71
  import { children, createContext, createEffect, createMemo, createRoot, createSignal, createUniqueId, For, getOwner, mergeProps, on, onCleanup, onMount, Show, useContext } from "solid-js";
71
72
  import { Dynamic, isServer } from "solid-js/web";
@@ -73,7 +74,7 @@ import { Button, ButtonLink, IconButton, IconButtonLink } from "../actions/Butto
73
74
  import { useFilterMessages } from "../actions/filter-messages";
74
75
  import { dialogCore } from "../feedback/dialog-core";
75
76
  import { RenderErrorBoundary } from "../internal/render-error";
76
- import { APP_WORKSPACE_DETAIL_CLOSE_EVENT, APP_WORKSPACE_DETAIL_STEP_EVENT, APP_WORKSPACE_SIDEBAR_HIDE_EVENT, installAppWorkspaceController } from "./app-workspace-controller";
77
+ import { APP_WORKSPACE_DETAIL_CLOSE_EVENT, APP_WORKSPACE_DETAIL_OPEN_EVENT, APP_WORKSPACE_DETAIL_STEP_EVENT, APP_WORKSPACE_SIDEBAR_HIDE_EVENT, installAppWorkspaceController } from "./app-workspace-controller";
77
78
  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";
78
79
  import { appWorkspaceInverseWidthCss, appWorkspaceWidthCss, appWorkspaceWidthToken, isAppWorkspaceWidthShare } from "./app-workspace-width";
79
80
  import BottomSheet, { bottomSheetAdaptiveOptions } from "./BottomSheet";
@@ -168,19 +169,27 @@ function LevelHead(props) {
168
169
  // server and the client would then disagree on hydration keys.
169
170
  const description = children(() => props.description);
170
171
  const actions = children(() => props.actions);
171
- return _$ssr(_tmpl$4, _$escape(props.children), _$escape(props.label), _$escape(_$createComponent(Show, {
172
+ const lead = children(() => props.lead);
173
+ return _$ssr(_tmpl$5, _$escape(props.children), _$escape(_$createComponent(Show, {
174
+ get when() {
175
+ return lead();
176
+ },
177
+ get children() {
178
+ return _$ssr(_tmpl$2, _$escape(lead()));
179
+ }
180
+ })), _$escape(props.label), _$escape(_$createComponent(Show, {
172
181
  get when() {
173
182
  return description();
174
183
  },
175
184
  get children() {
176
- return _$ssr(_tmpl$2, _$escape(description()));
185
+ return _$ssr(_tmpl$3, _$escape(description()));
177
186
  }
178
187
  })), _$escape(_$createComponent(Show, {
179
188
  get when() {
180
189
  return actions();
181
190
  },
182
191
  get children() {
183
- return _$ssr(_tmpl$3, _$escape(actions()));
192
+ return _$ssr(_tmpl$4, _$escape(actions()));
184
193
  }
185
194
  })));
186
195
  }
@@ -287,7 +296,7 @@ function AppWorkspaceMain(props) {
287
296
  get when() {
288
297
  return minWidth();
289
298
  },
290
- children: value => _$ssr(_tmpl$5, minWidthRule(value()))
299
+ children: value => _$ssr(_tmpl$6, minWidthRule(value()))
291
300
  }), _$ssrElement("div", _$mergeProps({
292
301
  get ["class"]() {
293
302
  return `k2b-app-workspace__main ${hasPanes() ? "has-panes" : ""} ${props.class ?? ""}`;
@@ -334,7 +343,7 @@ function AppWorkspaceMain(props) {
334
343
  return props.mobilePane ?? (anchor?.type === "pane" ? anchor.slot.props.id : "main");
335
344
  };
336
345
  if (region.type === "primary") {
337
- return _$ssr(_tmpl$6, _$ssrAttribute("data-workspace-mobile-active", activeMobilePane() === "main" ? "true" : "false", false), _$escape(region.children));
346
+ return _$ssr(_tmpl$7, _$ssrAttribute("data-workspace-mobile-active", activeMobilePane() === "main" ? "true" : "false", false), _$escape(region.children));
338
347
  }
339
348
  const pane = region.slot;
340
349
  const levelIndex = () => levels().indexOf(pane) + 1;
@@ -390,7 +399,7 @@ function AppWorkspaceMain(props) {
390
399
  get children() {
391
400
  return handle();
392
401
  }
393
- }), _$ssr(_tmpl$7, _$ssrAttribute("id", _$escape(pane.domId, true), false), `k2b-app-workspace__main-pane ${isAnchor() ? "is-primary" : ""} ${_$escape(pane.props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(pane.props.label, true), false) + _$ssrAttribute("data-workspace-level", levelsMode() ? _$escape(levelIndex(), true) : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-level-shown", _$escape(levelAttr("shown"), true), false) + _$ssrAttribute("data-workspace-level-first", _$escape(levelAttr("first"), true), false) + _$ssrAttribute("data-workspace-level-last", _$escape(levelAttr("last"), true), false) + _$ssrAttribute("data-workspace-main-region", _$escape(pane.props.id, true), false) + _$ssrAttribute("data-workspace-mobile-active", (levelsMode() ? levelClasses(levelIndex(), "shown").split(" ").includes("1") : activeMobilePane() === pane.props.id) ? "true" : "false", false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId, true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false) + _$ssrAttribute("data-surface", pane.props.surface === "navigation" ? "navigation" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll", !levelsMode() && pane.props.scroll === false ? "false" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll-fade-mode", !levelsMode() && pane.props.scroll !== false && pane.props.scrollFade !== false ? "both" : _$escape(undefined, true), false), _$ssrStyle(isAnchor() ? undefined : {
402
+ }), _$ssr(_tmpl$8, _$ssrAttribute("id", _$escape(pane.domId, true), false), `k2b-app-workspace__main-pane ${isAnchor() ? "is-primary" : ""} ${_$escape(pane.props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(pane.props.label, true), false) + _$ssrAttribute("data-workspace-level", levelsMode() ? _$escape(levelIndex(), true) : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-level-shown", _$escape(levelAttr("shown"), true), false) + _$ssrAttribute("data-workspace-level-first", _$escape(levelAttr("first"), true), false) + _$ssrAttribute("data-workspace-level-last", _$escape(levelAttr("last"), true), false) + _$ssrAttribute("data-workspace-main-region", _$escape(pane.props.id, true), false) + _$ssrAttribute("data-workspace-mobile-active", (levelsMode() ? levelClasses(levelIndex(), "shown").split(" ").includes("1") : activeMobilePane() === pane.props.id) ? "true" : "false", false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId, true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false) + _$ssrAttribute("data-surface", pane.props.surface === "navigation" ? "navigation" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll", !levelsMode() && pane.props.scroll === false ? "false" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll-fade-mode", !levelsMode() && pane.props.scroll !== false && pane.props.scrollFade !== false ? "both" : _$escape(undefined, true), false), _$ssrStyle(isAnchor() ? undefined : {
394
403
  // A stored width keeps to this pane's limits before the controller attaches.
395
404
  "--k2b-workspace-panel-size": `clamp(${minSize()}px, var(${variable}, ${appWorkspaceWidthCss(defaultSize(), "var(--k2b-workspace-width)")}), ${maxSize()}px)`,
396
405
  "--k2b-workspace-panel-min": `${minSize()}px`
@@ -404,6 +413,9 @@ function AppWorkspaceMain(props) {
404
413
  get actions() {
405
414
  return pane.props.actions;
406
415
  },
416
+ get lead() {
417
+ return pane.props.lead;
418
+ },
407
419
  get children() {
408
420
  return _$createComponent(Show, {
409
421
  get when() {
@@ -427,13 +439,13 @@ function AppWorkspaceMain(props) {
427
439
  return props.onLevelNavigate ? navigateBack : undefined;
428
440
  },
429
441
  get children() {
430
- return _$ssr(_tmpl$8);
442
+ return _$ssr(_tmpl$9);
431
443
  }
432
444
  });
433
445
  }
434
446
  });
435
447
  }
436
- }), _$ssr(_tmpl$9, _$ssrAttribute("data-scroll", pane.props.scroll === false ? "false" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll-fade-mode", pane.props.scroll !== false && pane.props.scrollFade !== false ? "both" : _$escape(undefined, true), false), _$escape(pane.props.children))]) : _$escape(pane.props.children)), _$createComponent(Show, {
448
+ }), _$ssr(_tmpl$0, _$ssrAttribute("data-scroll", pane.props.scroll === false ? "false" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll-fade-mode", pane.props.scroll !== false && pane.props.scrollFade !== false ? "both" : _$escape(undefined, true), false), _$escape(pane.props.children))]) : _$escape(pane.props.children)), _$createComponent(Show, {
437
449
  get when() {
438
450
  return _$memo(() => !!resizable())() && before();
439
451
  },
@@ -486,20 +498,25 @@ function AppWorkspaceDetail(props) {
486
498
  let aside;
487
499
  onMount(() => {
488
500
  const close = () => props.onClose?.();
501
+ const open = () => {
502
+ if (props.available !== false) props.onOpen?.();
503
+ };
489
504
  const isStep = detail => typeof detail === "object" && detail !== null && "direction" in detail && (detail.direction === 1 || detail.direction === -1);
490
505
  const step = event => {
491
506
  if (!(event instanceof CustomEvent) || !isStep(event.detail)) return;
492
507
  const item = props.onStep?.(event.detail.direction);
493
508
  if (item instanceof HTMLElement) event.detail.item = item;
494
509
  };
510
+ aside?.addEventListener(APP_WORKSPACE_DETAIL_OPEN_EVENT, open);
495
511
  aside?.addEventListener(APP_WORKSPACE_DETAIL_CLOSE_EVENT, close);
496
512
  aside?.addEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);
497
513
  onCleanup(() => {
514
+ aside?.removeEventListener(APP_WORKSPACE_DETAIL_OPEN_EVENT, open);
498
515
  aside?.removeEventListener(APP_WORKSPACE_DETAIL_CLOSE_EVENT, close);
499
516
  aside?.removeEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);
500
517
  });
501
518
  });
502
- return [_$ssr(_tmpl$5, workspaceRule()), _$createComponent(Button, {
519
+ return [_$ssr(_tmpl$6, workspaceRule()), _$createComponent(Button, {
503
520
  type: "button",
504
521
  variant: "ghost",
505
522
  get ["aria-controls"]() {
@@ -507,9 +524,15 @@ function AppWorkspaceDetail(props) {
507
524
  },
508
525
  "aria-expanded": "false",
509
526
  "data-app-workspace-detail-toggle": "",
527
+ get ["data-workspace-detail-reopen"]() {
528
+ return props.onOpen ? "true" : undefined;
529
+ },
530
+ get disabled() {
531
+ return props.available === false;
532
+ },
510
533
  "class": "k2b-app-workspace__detail-toggle",
511
534
  get children() {
512
- return [_$ssr(_tmpl$0), workspaceMessages().details];
535
+ return [_$ssr(_tmpl$1), workspaceMessages().details];
513
536
  }
514
537
  }), _$createComponent(Show, {
515
538
  get when() {
@@ -534,12 +557,13 @@ function AppWorkspaceDetail(props) {
534
557
  get maxSize() {
535
558
  return maxWidth();
536
559
  },
560
+ shadow: true,
537
561
  get style() {
538
562
  return sizeStyle();
539
563
  }
540
564
  });
541
565
  }
542
- }), _$ssr(_tmpl$1, _$ssrAttribute("id", _$escape(domId(), true), false), `k2b-app-workspace__detail ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-width", _$escape(props.width ?? "md", true), false) + _$ssrAttribute("data-workspace-detail-phone", props.phone === "page" ? "page" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-detail-choice", props.openOnChoice === false ? "request" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId(), true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false) + _$ssrAttribute("data-workspace-detail-closable", props.onClose ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-detail-steppable", props.onStep ? "true" : _$escape(undefined, true), false), _$ssrAttribute("hidden", !props.open, true), _$ssrStyle({
566
+ }), _$ssr(_tmpl$10, _$ssrAttribute("id", _$escape(domId(), true), false), `k2b-app-workspace__detail ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-width", _$escape(props.width ?? "md", true), false) + _$ssrAttribute("data-workspace-detail-phone", props.phone === "page" ? "page" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-detail-choice", props.openOnChoice === false ? "request" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId(), true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false) + _$ssrAttribute("data-workspace-detail-reopen", props.onOpen ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-detail-closable", props.onClose ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-detail-steppable", props.onStep ? "true" : _$escape(undefined, true), false), _$ssrAttribute("hidden", !props.open || props.available === false, true), _$ssrStyle({
543
567
  ...sizeStyle(),
544
568
  "view-transition-name": props.viewTransitionName
545
569
  }), _$ssrAttribute("aria-label", _$escape(workspaceMessages().detailFullHeight, true), false), _$escape(props.children))];
@@ -590,7 +614,7 @@ function AppWorkspaceBottomDrawer(props) {
590
614
  }
591
615
  });
592
616
  }
593
- }), _$ssr(_tmpl$10, _$ssrAttribute("id", _$escape(domId(), true), false), `k2b-app-workspace__drawer ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-height", _$escape(props.height ?? "md", true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId(), true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false), _$ssrAttribute("hidden", !props.open, true), _$ssrStyleProperty("--k2b-workspace-panel-size:", `var(${_$escape(variable(), true)}, ${_$escape(defaultHeight(), true)}px)`) + _$ssrStyleProperty(";view-transition-name:", _$escape(props.viewTransitionName, true)), _$escape(props.children))];
617
+ }), _$ssr(_tmpl$11, _$ssrAttribute("id", _$escape(domId(), true), false), `k2b-app-workspace__drawer ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-height", _$escape(props.height ?? "md", true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(panelId(), true), false) + _$ssrAttribute("data-workspace-resizable", resizable() ? "true" : "false", false), _$ssrAttribute("hidden", !props.open, true), _$ssrStyleProperty("--k2b-workspace-panel-size:", `var(${_$escape(variable(), true)}, ${_$escape(defaultHeight(), true)}px)`) + _$ssrStyleProperty(";view-transition-name:", _$escape(props.viewTransitionName, true)), _$escape(props.children))];
594
618
  }
595
619
  function AppWorkspaceSidebar(props) {
596
620
  const rootResizable = useContext(ResizeContext);
@@ -675,7 +699,7 @@ function AppWorkspaceSidebar(props) {
675
699
  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.");
676
700
  return null;
677
701
  }
678
- return _$ssr(_tmpl$11, _$ssrAttribute("aria-label", _$escape(props.label, true), false), _$ssrStyle(accent), _$escape(resolved()));
702
+ return _$ssr(_tmpl$12, _$ssrAttribute("aria-label", _$escape(props.label, true), false), _$ssrStyle(accent), _$escape(resolved()));
679
703
  }
680
704
  });
681
705
  }
@@ -742,14 +766,14 @@ function AppWorkspaceSidebar(props) {
742
766
  return !props.hidden;
743
767
  },
744
768
  get children() {
745
- return [_$ssr(_tmpl$12, _$ssrAttribute("data-scroll-fade-mode", stacked() ? "both" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll-fade-axis", stacked() ? "horizontal" : _$escape(undefined, true), false), _$escape(desktop()?.children)), _$createComponent(Show, {
769
+ return [_$ssr(_tmpl$13, _$ssrAttribute("data-scroll-fade-mode", stacked() ? "both" : _$escape(undefined, true), false) + _$ssrAttribute("data-scroll-fade-axis", stacked() ? "horizontal" : _$escape(undefined, true), false), _$escape(desktop()?.children)), _$createComponent(Show, {
746
770
  get when() {
747
771
  return stacked();
748
772
  },
749
773
  get children() {
750
- return [_$ssr(_tmpl$13, _$ssrAttribute("aria-expanded", _$escape(sheetOpen(), true), false) + _$ssrAttribute("aria-label", props.label ? _$escape(workspaceMessages().sidebarAllLabel({
774
+ return [_$ssr(_tmpl$14, _$ssrAttribute("aria-expanded", _$escape(sheetOpen(), true), false) + _$ssrAttribute("aria-label", props.label ? _$escape(workspaceMessages().sidebarAllLabel({
751
775
  label: props.label
752
- }), true) : _$escape(undefined, true), false), _$escape(workspaceMessages().sidebarAll)), _$ssr(_tmpl$14, CHIP_ROW_SCRIPT)];
776
+ }), true) : _$escape(undefined, true), false), _$escape(workspaceMessages().sidebarAll)), _$ssr(_tmpl$15, CHIP_ROW_SCRIPT)];
753
777
  }
754
778
  })];
755
779
  }
@@ -829,7 +853,7 @@ const AppWorkspaceSidebarBody = props => {
829
853
  get ["data-scroll-fade-mode"]() {
830
854
  return props.scrollFade !== false ? "both" : undefined;
831
855
  }
832
- }, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), _$escape(props.children), false), _$ssr(_tmpl$14, SIDEBAR_SCROLL_MEMORY_SCRIPT)];
856
+ }, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), _$escape(props.children), false), _$ssr(_tmpl$15, SIDEBAR_SCROLL_MEMORY_SCRIPT)];
833
857
  };
834
858
  const AppWorkspaceSidebarFooter = props => _$ssrElement("footer", _$mergeProps({
835
859
  get ["class"]() {
@@ -845,14 +869,14 @@ const AppWorkspaceSidebarSection = props => {
845
869
  return props.icon;
846
870
  },
847
871
  get children() {
848
- return _$ssr(_tmpl$15, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
872
+ return _$ssr(_tmpl$16, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
849
873
  }
850
874
  }), props.title, _$createComponent(Show, {
851
875
  get when() {
852
876
  return props.count !== undefined;
853
877
  },
854
878
  get children() {
855
- return _$ssr(_tmpl$16, _$escape(props.count));
879
+ return _$ssr(_tmpl$17, _$escape(props.count));
856
880
  }
857
881
  })];
858
882
  return _$ssrElement("section", _$mergeProps({
@@ -867,7 +891,7 @@ const AppWorkspaceSidebarSection = props => {
867
891
  return props.title || props.actions;
868
892
  },
869
893
  get children() {
870
- return _$ssr(_tmpl$19, _$escape(_$createComponent(Show, {
894
+ return _$ssr(_tmpl$20, _$escape(_$createComponent(Show, {
871
895
  get when() {
872
896
  return props.collapsible;
873
897
  },
@@ -877,23 +901,23 @@ const AppWorkspaceSidebarSection = props => {
877
901
  return props.title;
878
902
  },
879
903
  get children() {
880
- return _$ssr(_tmpl$21, _$escape(title()));
904
+ return _$ssr(_tmpl$22, _$escape(title()));
881
905
  }
882
906
  });
883
907
  },
884
908
  get children() {
885
- return _$ssr(_tmpl$17, _$ssrAttribute("aria-expanded", _$escape(open(), true), false) + _$ssrAttribute("aria-controls", _$escape(id, true), false), _$escape(title()), _$ssrAttribute("class", open() ? "ti ti-chevron-down" : "ti ti-chevron-right", false));
909
+ return _$ssr(_tmpl$18, _$ssrAttribute("aria-expanded", _$escape(open(), true), false) + _$ssrAttribute("aria-controls", _$escape(id, true), false), _$escape(title()), _$ssrAttribute("class", open() ? "ti ti-chevron-down" : "ti ti-chevron-right", false));
886
910
  }
887
911
  })), _$escape(_$createComponent(Show, {
888
912
  get when() {
889
913
  return props.actions;
890
914
  },
891
915
  get children() {
892
- return _$ssr(_tmpl$18, _$escape(props.actions));
916
+ return _$ssr(_tmpl$19, _$escape(props.actions));
893
917
  }
894
918
  })));
895
919
  }
896
- })), _$ssr(_tmpl$20, _$ssrAttribute("id", _$escape(id, true), false), _$ssrAttribute("hidden", !open(), true), _$escape(props.children))], false);
920
+ })), _$ssr(_tmpl$21, _$ssrAttribute("id", _$escape(id, true), false), _$ssrAttribute("hidden", !open(), true), _$escape(props.children))], false);
897
921
  };
898
922
  const AppWorkspaceSidebarItemIcon = props => mergeProps({
899
923
  kind: SIDEBAR_ITEM_ICON
@@ -907,7 +931,7 @@ const AppWorkspaceSidebarItemMeta = props => mergeProps({
907
931
  const AppWorkspaceSidebarItemAction = props => mergeProps({
908
932
  kind: SIDEBAR_ITEM_ACTION
909
933
  }, props);
910
- const AppWorkspaceSidebarItemActions = props => _$ssr(_tmpl$22, _$ssrAttribute("data-visibility", props.visibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(props.children));
934
+ const AppWorkspaceSidebarItemActions = props => _$ssr(_tmpl$23, _$ssrAttribute("data-visibility", props.visibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(props.children));
911
935
  const AppWorkspaceSidebarItemStatus = props => {
912
936
  const workspaceMessages = useWorkspaceMessages();
913
937
  const waiting = () => props.waiting && Number.isFinite(props.waiting.count) ? Math.max(0, Math.floor(props.waiting.count)) : null;
@@ -923,7 +947,7 @@ const AppWorkspaceSidebarItemStatus = props => {
923
947
  // The element itself stays when there is nothing to show: empty, it takes no
924
948
  // space, and it still keeps the row's label on one line, so the first count
925
949
  // never re-wraps the label and moves the rows below.
926
- return _$ssr(_tmpl$28, _$ssrAttribute("data-unread", waiting() !== null ? _$escape(undefined, true) : count() ? "count" : dot() ? "dot" : _$escape(undefined, true), false) + _$ssrAttribute("data-waiting", waiting() === null ? _$escape(undefined, true) : waiting() ? "count" : "zero", false), _$escape(_$createComponent(Show, {
950
+ return _$ssr(_tmpl$29, _$ssrAttribute("data-unread", waiting() !== null ? _$escape(undefined, true) : count() ? "count" : dot() ? "dot" : _$escape(undefined, true), false) + _$ssrAttribute("data-waiting", waiting() === null ? _$escape(undefined, true) : waiting() ? "count" : "zero", false), _$escape(_$createComponent(Show, {
927
951
  get when() {
928
952
  return description();
929
953
  },
@@ -933,16 +957,16 @@ const AppWorkspaceSidebarItemStatus = props => {
933
957
  return props.mention;
934
958
  },
935
959
  get children() {
936
- return _$ssr(_tmpl$23);
960
+ return _$ssr(_tmpl$24);
937
961
  }
938
962
  }), _$createComponent(Show, {
939
963
  get when() {
940
964
  return props.muted;
941
965
  },
942
966
  get children() {
943
- return _$ssr(_tmpl$24);
967
+ return _$ssr(_tmpl$25);
944
968
  }
945
- }), _$ssr(_tmpl$26, _$escape(_$createComponent(Show, {
969
+ }), _$ssr(_tmpl$27, _$escape(_$createComponent(Show, {
946
970
  get when() {
947
971
  return count() || waiting() === 0;
948
972
  },
@@ -952,14 +976,14 @@ const AppWorkspaceSidebarItemStatus = props => {
952
976
  return dot();
953
977
  },
954
978
  get children() {
955
- return _$ssr(_tmpl$29);
979
+ return _$ssr(_tmpl$30);
956
980
  }
957
981
  });
958
982
  },
959
983
  get children() {
960
- return _$ssr(_tmpl$25, _$ssrAttribute("data-mention", props.mention ? "true" : _$escape(undefined, true), false), count() > 99 ? "99+" : _$escape(count()));
984
+ return _$ssr(_tmpl$26, _$ssrAttribute("data-mention", props.mention ? "true" : _$escape(undefined, true), false), count() > 99 ? "99+" : _$escape(count()));
961
985
  }
962
- }))), _$ssr(_tmpl$27, _$escape(description()))];
986
+ }))), _$ssr(_tmpl$28, _$escape(description()))];
963
987
  }
964
988
  })));
965
989
  };
@@ -1099,22 +1123,22 @@ function AppWorkspaceSidebarItem(props) {
1099
1123
  return iconContent() || icon();
1100
1124
  },
1101
1125
  get children() {
1102
- return _$ssr(_tmpl$30, _$ssrAttribute("class",
1126
+ return _$ssr(_tmpl$31, _$ssrAttribute("class",
1103
1127
  // An object row's own glyph sits in a soft chip of the app colour; custom content such as an avatar keeps
1104
1128
  // its own look.
1105
- props.variant === "object" && !iconContent() ? "k2b-app-workspace__sidebar-item-icon k2b-icon-tile" : "k2b-app-workspace__sidebar-item-icon", false), _$escape(iconContent() ?? _$ssr(_tmpl$36, _$ssrAttribute("class", _$escape(iconClass(icon()), true), false))));
1129
+ props.variant === "object" && !iconContent() ? "k2b-app-workspace__sidebar-item-icon k2b-icon-tile" : "k2b-app-workspace__sidebar-item-icon", false), _$escape(iconContent() ?? _$ssr(_tmpl$37, _$ssrAttribute("class", _$escape(iconClass(icon()), true), false))));
1106
1130
  }
1107
- }), _$ssr(_tmpl$34, _$escape(_$createComponent(Show, {
1131
+ }), _$ssr(_tmpl$35, _$escape(_$createComponent(Show, {
1108
1132
  get when() {
1109
1133
  return props.context || props.contextMeta;
1110
1134
  },
1111
1135
  get children() {
1112
- return _$ssr(_tmpl$32, _$escape(props.context), _$escape(_$createComponent(Show, {
1136
+ return _$ssr(_tmpl$33, _$escape(props.context), _$escape(_$createComponent(Show, {
1113
1137
  get when() {
1114
1138
  return props.contextMeta;
1115
1139
  },
1116
1140
  get children() {
1117
- return _$ssr(_tmpl$31, _$escape(props.contextMeta));
1141
+ return _$ssr(_tmpl$32, _$escape(props.contextMeta));
1118
1142
  }
1119
1143
  })));
1120
1144
  }
@@ -1123,14 +1147,14 @@ function AppWorkspaceSidebarItem(props) {
1123
1147
  return props.description;
1124
1148
  },
1125
1149
  get children() {
1126
- return _$ssr(_tmpl$33, _$escape(props.description));
1150
+ return _$ssr(_tmpl$34, _$escape(props.description));
1127
1151
  }
1128
1152
  }))), _$createComponent(Show, {
1129
1153
  get when() {
1130
1154
  return hasMeta();
1131
1155
  },
1132
1156
  get children() {
1133
- return _$ssr(_tmpl$35, _$ssrAttribute("id", props.preview?.trigger === "row" ? _$escape(metaId, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-visibility", metaVisibility() === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(meta()));
1157
+ return _$ssr(_tmpl$36, _$ssrAttribute("id", props.preview?.trigger === "row" ? _$escape(metaId, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-visibility", metaVisibility() === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(meta()));
1134
1158
  }
1135
1159
  })];
1136
1160
  const singleAction = () => {
@@ -1145,7 +1169,7 @@ function AppWorkspaceSidebarItem(props) {
1145
1169
  actionSlot()?.onSelect?.(event);
1146
1170
  props.onActionClick?.(event);
1147
1171
  };
1148
- const content = () => actionSlot()?.children ?? _$ssr(_tmpl$36, _$ssrAttribute("class", _$escape(iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots"), true), false));
1172
+ const content = () => actionSlot()?.children ?? _$ssr(_tmpl$37, _$ssrAttribute("class", _$escape(iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots"), true), false));
1149
1173
  return _$createComponent(Show, {
1150
1174
  get when() {
1151
1175
  return Boolean(actionSlot() || props.actionIcon);
@@ -1156,10 +1180,10 @@ function AppWorkspaceSidebarItem(props) {
1156
1180
  return _$memo(() => !!actionSlot()?.href)() && !actionSlot()?.disabled;
1157
1181
  },
1158
1182
  get fallback() {
1159
- return _$ssr(_tmpl$38, _$ssrAttribute("disabled", actionSlot()?.disabled, true) + _$ssrAttribute("data-visibility", actionSlot()?.visibility === "hover" ? "hover" : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(label(), true), false), _$escape(content()));
1183
+ return _$ssr(_tmpl$39, _$ssrAttribute("disabled", actionSlot()?.disabled, true) + _$ssrAttribute("data-visibility", actionSlot()?.visibility === "hover" ? "hover" : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(label(), true), false), _$escape(content()));
1160
1184
  },
1161
1185
  get children() {
1162
- return _$ssr(_tmpl$37, _$ssrAttribute("href", _$escape(actionSlot()?.href, true), false), _$ssrAttribute("data-visibility", actionSlot()?.visibility === "hover" ? "hover" : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(label(), true), false), _$escape(content()));
1186
+ return _$ssr(_tmpl$38, _$ssrAttribute("href", _$escape(actionSlot()?.href, true), false), _$ssrAttribute("data-visibility", actionSlot()?.visibility === "hover" ? "hover" : _$escape(undefined, true), false) + _$ssrAttribute("aria-label", _$escape(label(), true), false), _$escape(content()));
1163
1187
  }
1164
1188
  });
1165
1189
  }
@@ -1465,31 +1489,31 @@ const AppWorkspaceNavTree = props => {
1465
1489
  get ["data-k2b-nav-tree-toggle"]() {
1466
1490
  return usesIconDisclosure() ? "" : undefined;
1467
1491
  }
1468
- }, () => iconAccessibility(item.iconLabel)), _$ssr(_tmpl$36, _$ssrAttribute("class", _$escape(iconClass(rowIcon()), true), false)), false);
1492
+ }, () => iconAccessibility(item.iconLabel)), _$ssr(_tmpl$37, _$ssrAttribute("class", _$escape(iconClass(rowIcon()), true), false)), false);
1469
1493
  }
1470
1494
  }), _$createComponent(Show, {
1471
1495
  get when() {
1472
1496
  return item.description !== undefined;
1473
1497
  },
1474
1498
  get fallback() {
1475
- return _$ssr(_tmpl$42, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label));
1499
+ return _$ssr(_tmpl$43, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label));
1476
1500
  },
1477
1501
  get children() {
1478
- return _$ssr(_tmpl$39, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label), _$escape(item.description));
1502
+ return _$ssr(_tmpl$40, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label), _$escape(item.description));
1479
1503
  }
1480
1504
  }), _$createComponent(Show, {
1481
1505
  get when() {
1482
1506
  return item.meta !== undefined;
1483
1507
  },
1484
1508
  get children() {
1485
- return _$ssr(_tmpl$40, `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`, _$ssrAttribute("data-visibility", item.metaVisibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(item.meta));
1509
+ return _$ssr(_tmpl$41, `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`, _$ssrAttribute("data-visibility", item.metaVisibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(item.meta));
1486
1510
  }
1487
1511
  }), _$createComponent(Show, {
1488
1512
  get when() {
1489
1513
  return _$memo(() => !!hasChildren())() && !usesIconDisclosure();
1490
1514
  },
1491
1515
  get children() {
1492
- return _$ssr(_tmpl$41, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`);
1516
+ return _$ssr(_tmpl$42, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`);
1493
1517
  }
1494
1518
  })];
1495
1519
  const row = () => _$createComponent(AppWorkspaceSidebarRow, {
@@ -1596,12 +1620,12 @@ const AppWorkspaceNavTree = props => {
1596
1620
  endDrag();
1597
1621
  requestMove(target.move, false);
1598
1622
  };
1599
- return _$ssr(_tmpl$44, _$ssrAttribute("aria-level", _$escape(depth, true) + 1, false) + _$ssrAttribute("aria-setsize", _$escape(siblings().length, true), false) + _$ssrAttribute("aria-posinset", _$escape(place(), true) + 1, false) + _$ssrAttribute("aria-selected", _$escape(selected(), true), false) + _$ssrAttribute("aria-expanded", hasChildren() ? _$escape(isExpanded(item.id), true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-disabled", item.disabled ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", item.disabled ? -1 : tabStopId() === item.id ? 0 : -1, false) + _$ssrAttribute("draggable", movable() ? _$escape(true, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-k2b-nav-tree-id", _$escape(item.id, true), false) + _$ssrAttribute("data-k2b-nav-tree-parent-id", _$escape(parentId, true), false) + _$ssrAttribute("data-k2b-nav-tree-dragging", dragged()?.id === item.id ? "" : _$escape(undefined, true), false) + _$ssrAttribute("data-k2b-nav-tree-drop", dropTarget()?.id === item.id ? _$escape(dropTarget().side, true) : _$escape(undefined, true), false), _$ssrStyleProperty("--k2b-nav-tree-depth:", _$escape(String(props.indented === false ? 0 : depth), true)), _$escape(row()), _$escape(_$createComponent(Show, {
1623
+ return _$ssr(_tmpl$45, _$ssrAttribute("aria-level", _$escape(depth, true) + 1, false) + _$ssrAttribute("aria-setsize", _$escape(siblings().length, true), false) + _$ssrAttribute("aria-posinset", _$escape(place(), true) + 1, false) + _$ssrAttribute("aria-selected", _$escape(selected(), true), false) + _$ssrAttribute("aria-expanded", hasChildren() ? _$escape(isExpanded(item.id), true) : _$escape(undefined, true), false) + _$ssrAttribute("aria-disabled", item.disabled ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("tabindex", item.disabled ? -1 : tabStopId() === item.id ? 0 : -1, false) + _$ssrAttribute("draggable", movable() ? _$escape(true, true) : _$escape(undefined, true), false) + _$ssrAttribute("data-k2b-nav-tree-id", _$escape(item.id, true), false) + _$ssrAttribute("data-k2b-nav-tree-parent-id", _$escape(parentId, true), false) + _$ssrAttribute("data-k2b-nav-tree-dragging", dragged()?.id === item.id ? "" : _$escape(undefined, true), false) + _$ssrAttribute("data-k2b-nav-tree-drop", dropTarget()?.id === item.id ? _$escape(dropTarget().side, true) : _$escape(undefined, true), false), _$ssrStyleProperty("--k2b-nav-tree-depth:", _$escape(String(props.indented === false ? 0 : depth), true)), _$escape(row()), _$escape(_$createComponent(Show, {
1600
1624
  get when() {
1601
1625
  return _$memo(() => !!hasChildren())() && isExpanded(item.id);
1602
1626
  },
1603
1627
  get children() {
1604
- return _$ssr(_tmpl$43, _$escape(renderItems(nested, depth + 1, item.id)));
1628
+ return _$ssr(_tmpl$44, _$escape(renderItems(nested, depth + 1, item.id)));
1605
1629
  }
1606
1630
  })));
1607
1631
  }
@@ -1626,7 +1650,7 @@ const AppWorkspaceNavTree = props => {
1626
1650
  doc?.removeEventListener("pointermove", forgetDrag, true);
1627
1651
  });
1628
1652
  });
1629
- return _$ssr(_tmpl$45, `k2b-app-workspace__nav-tree ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(props.ariaLabel, true), false), _$escape(renderItems(roots, 0)));
1653
+ return _$ssr(_tmpl$46, `k2b-app-workspace__nav-tree ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(props.ariaLabel, true), false), _$escape(renderItems(roots, 0)));
1630
1654
  };
1631
1655
  AppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;
1632
1656
  const AppWorkspaceSidebarIconGrid = props => _$ssrElement("section", _$mergeProps({
@@ -1637,10 +1661,10 @@ const AppWorkspaceSidebarIconGrid = props => _$ssrElement("section", _$mergeProp
1637
1661
  get when() {
1638
1662
  return props.title;
1639
1663
  },
1640
- children: title => _$ssr(_tmpl$21, _$escape(title()))
1641
- })), _$ssr(_tmpl$46, _$ssrAttribute("data-columns", _$escape(props.columns ?? 2, true), false), _$escape(props.children))], false);
1664
+ children: title => _$ssr(_tmpl$22, _$escape(title()))
1665
+ })), _$ssr(_tmpl$47, _$ssrAttribute("data-columns", _$escape(props.columns ?? 2, true), false), _$escape(props.children))], false);
1642
1666
  const AppWorkspaceSidebarIconAction = props => {
1643
- const content = _$ssr(_tmpl$47, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
1667
+ const content = _$ssr(_tmpl$48, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
1644
1668
  const attrs = () => ({
1645
1669
  class: `k2b-app-workspace__sidebar-icon-action ${props.active ? "is-active" : ""}`,
1646
1670
  title: props.label,
@@ -1708,9 +1732,23 @@ function AppWorkspaceHead(props) {
1708
1732
  const resolvedCount = children(() => props.head?.count);
1709
1733
  // A nested workspace is part of a page that already shows its title.
1710
1734
  const trail = props.nested ? () => undefined : usePageTrail();
1735
+ // Main already publishes the active region in SSR and on each selection.
1736
+ // Scope both sides to this workspace, including transparent island hosts;
1737
+ // a nested Main must never decide whether its parent's head is visible.
1738
+ const mobilePane = () => props.head?.mobilePane === undefined ? undefined : assertStableUiId(props.head.mobilePane, "AppWorkspace.Head mobilePane");
1739
+ const mobilePaneRule = pane => {
1740
+ const main = `.k2b-app-workspace__main.has-panes:not([data-workspace-levels]) > [data-workspace-mobile-active="true"]:not([data-workspace-main-region="${pane}"])`;
1741
+ const host = `.k2b-ui .k2b-app-workspace:has(> .k2b-app-workspace__head[data-workspace-head-pane="${pane}"]):has(> .k2b-app-workspace__content > ${main}, > .k2b-app-workspace__content > :is(solid-island, solid-client) > ${main})`;
1742
+ return `@media not all and (min-width:48rem){${host} > .k2b-app-workspace__head,${host} > .k2b-app-workspace__content > .k2b-app-workspace__detail-toggle,${host} > .k2b-app-workspace__content > :is(solid-island, solid-client) > .k2b-app-workspace__detail-toggle{display:none}}`;
1743
+ };
1711
1744
  const resetContent = () => filters().reset;
1712
- const primaryContent = () => [_$ssr(_tmpl$47, _$ssrAttribute("class", _$escape(props.head?.primary?.icon, true), false)), _$ssr(_tmpl$48, _$escape(props.head?.primary?.label))];
1713
- return _$ssr(_tmpl$54, _$ssrAttribute("data-trail", trail()?.ancestors.length ? "up" : trail() ? "title" : _$escape(undefined, true), false) + _$ssrAttribute("data-row", props.head ? "" : _$escape(undefined, true), false), _$escape(_$createComponent(IconButton, {
1745
+ const primaryContent = () => [_$ssr(_tmpl$48, _$ssrAttribute("class", _$escape(props.head?.primary?.icon, true), false)), _$ssr(_tmpl$49, _$escape(props.head?.primary?.label))];
1746
+ return _$ssr(_tmpl$55, _$ssrAttribute("data-trail", trail()?.ancestors.length ? "up" : trail() ? "title" : _$escape(undefined, true), false) + _$ssrAttribute("data-row", props.head ? "" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-head-pane", _$escape(mobilePane(), true), false), _$escape(_$createComponent(Show, {
1747
+ get when() {
1748
+ return mobilePane();
1749
+ },
1750
+ children: pane => _$ssr(_tmpl$6, mobilePaneRule(pane()))
1751
+ })), _$escape(_$createComponent(IconButton, {
1714
1752
  "class": "k2b-app-workspace__head-toggle",
1715
1753
  get label() {
1716
1754
  return messages().showNavigation;
@@ -1721,7 +1759,7 @@ function AppWorkspaceHead(props) {
1721
1759
  "aria-expanded": "false",
1722
1760
  "data-app-workspace-sidebar-toggle": "",
1723
1761
  get children() {
1724
- return _$ssr(_tmpl$49);
1762
+ return _$ssr(_tmpl$50);
1725
1763
  }
1726
1764
  })), _$escape(_$createComponent(Show, {
1727
1765
  get when() {
@@ -1733,20 +1771,20 @@ function AppWorkspaceHead(props) {
1733
1771
  },
1734
1772
  as: "p",
1735
1773
  fallback: true
1736
- }), _$ssr(_tmpl$55, _$ssrAttribute("data-k2b-server", isServer ? "" : _$escape(undefined, true), false), _$escape(current().title))]
1774
+ }), _$ssr(_tmpl$56, _$ssrAttribute("data-k2b-server", isServer ? "" : _$escape(undefined, true), false), _$escape(current().title))]
1737
1775
  })), _$escape(_$createComponent(Show, {
1738
1776
  get when() {
1739
1777
  return resolvedViews.toArray().some(Boolean);
1740
1778
  },
1741
1779
  get children() {
1742
- return _$ssr(_tmpl$50, _$escape(resolvedViews()));
1780
+ return _$ssr(_tmpl$51, _$escape(resolvedViews()));
1743
1781
  }
1744
1782
  })), _$escape(_$createComponent(Show, {
1745
1783
  get when() {
1746
1784
  return resolvedFilters.toArray().some(Boolean) || props.head?.filtered;
1747
1785
  },
1748
1786
  get children() {
1749
- return _$ssr(_tmpl$51, _$ssrAttribute("aria-label", _$escape(filters().filters, true), false), _$escape(resolvedFilters()), _$escape(_$createComponent(Show, {
1787
+ return _$ssr(_tmpl$52, _$ssrAttribute("aria-label", _$escape(filters().filters, true), false), _$escape(resolvedFilters()), _$escape(_$createComponent(Show, {
1750
1788
  get when() {
1751
1789
  return props.head?.filtered;
1752
1790
  },
@@ -1793,14 +1831,14 @@ function AppWorkspaceHead(props) {
1793
1831
  return _$memo(() => !!props.head?.filtered)() && resolvedCount.toArray().some(value => value !== undefined && value !== null && value !== false);
1794
1832
  },
1795
1833
  get children() {
1796
- return _$ssr(_tmpl$52, _$escape(resolvedCount()));
1834
+ return _$ssr(_tmpl$53, _$escape(resolvedCount()));
1797
1835
  }
1798
1836
  })), _$escape(_$createComponent(Show, {
1799
1837
  get when() {
1800
1838
  return resolvedActions.toArray().some(Boolean) || props.head?.primary;
1801
1839
  },
1802
1840
  get children() {
1803
- return _$ssr(_tmpl$53, _$escape(resolvedActions()), _$escape(_$createComponent(Show, {
1841
+ return _$ssr(_tmpl$54, _$escape(resolvedActions()), _$escape(_$createComponent(Show, {
1804
1842
  get when() {
1805
1843
  return props.head?.primary;
1806
1844
  },
@@ -1872,14 +1910,17 @@ const AppWorkspace = props => {
1872
1910
  const slots = createMemo(() => flatten(resolved()));
1873
1911
  // Same props object, same memo value: a sibling change must not rebuild the head's slots.
1874
1912
  const head = createMemo(() => slots().find(headSlot)?.props);
1875
- const content = () => slots().filter(value => !headSlot(value));
1876
- return [_$createComponent(AppWorkspaceHead, {
1913
+ // Keep one head instance at the explicit slot's position. Object links
1914
+ // before it must also precede its view controls in SSR and keyboard order.
1915
+ // Callers without a slot retain the automatic leading head.
1916
+ const renderedHead = _$createComponent(AppWorkspaceHead, {
1877
1917
  sidebarId: sidebarId,
1878
1918
  nested: nested,
1879
1919
  get head() {
1880
1920
  return head();
1881
1921
  }
1882
- }), content()];
1922
+ });
1923
+ return head() ? slots().map(value => headSlot(value) ? value.props === head() ? renderedHead : null : value) : [renderedHead, ...slots()];
1883
1924
  };
1884
1925
  return _$createComponent(ResizeContext.Provider, {
1885
1926
  get value() {
@@ -1889,7 +1930,7 @@ const AppWorkspace = props => {
1889
1930
  return _$createComponent(WorkspaceContext.Provider, {
1890
1931
  value: workspace,
1891
1932
  get children() {
1892
- return _$ssr(_tmpl$56, `k2b-app-workspace ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-mobile-surface", _$escape(props.mobileSurface, true), false) + _$ssrAttribute("data-flat", props.flat ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-sidebar-collapsed", initialLayoutState()?.sidebarCollapsed === undefined ? _$escape(undefined, true) : _$escape(String(initialLayoutState()?.sidebarCollapsed), true), false) + _$ssrAttribute("data-workspace-resizable", props.resizable === false ? "false" : "true", false), _$ssrStyle(appWorkspaceLayoutStyle(initialLayoutState())), _$escape(contents()));
1933
+ return _$ssr(_tmpl$57, `k2b-app-workspace ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("data-mobile-surface", _$escape(props.mobileSurface, true), false) + _$ssrAttribute("data-flat", props.flat ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-sidebar-collapsed", initialLayoutState()?.sidebarCollapsed === undefined ? _$escape(undefined, true) : _$escape(String(initialLayoutState()?.sidebarCollapsed), true), false) + _$ssrAttribute("data-workspace-resizable", props.resizable === false ? "false" : "true", false), _$ssrStyle(appWorkspaceLayoutStyle(initialLayoutState())), _$escape(contents()));
1893
1934
  }
1894
1935
  });
1895
1936
  }
@@ -1904,7 +1945,7 @@ AppWorkspace.LayoutStateProvider = props => _$createComponent(LayoutStateContext
1904
1945
  }
1905
1946
  });
1906
1947
  AppWorkspace.Head = AppWorkspaceHeadSlot;
1907
- AppWorkspace.Content = props => _$ssr(_tmpl$57, `k2b-app-workspace__content ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
1948
+ AppWorkspace.Content = props => _$ssr(_tmpl$58, `k2b-app-workspace__content ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
1908
1949
  AppWorkspace.Main = AppWorkspaceMain;
1909
1950
  AppWorkspace.MainPane = AppWorkspaceMainPane;
1910
1951
  AppWorkspace.Detail = AppWorkspaceDetail;