@k2b/ui 0.23.0 → 0.25.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 (161) hide show
  1. package/README.md +2 -2
  2. package/dist/browser/actions/Dropdown.js +67 -52
  3. package/dist/browser/actions/Dropdown.js.map +1 -1
  4. package/dist/browser/actions/GestureMenu.js +3 -3
  5. package/dist/browser/actions/GestureMenu.js.map +1 -1
  6. package/dist/browser/actions/SpotlightSearch.js +13 -6
  7. package/dist/browser/actions/SpotlightSearch.js.map +1 -1
  8. package/dist/browser/actions/Toolbar.js +75 -1
  9. package/dist/browser/actions/Toolbar.js.map +1 -1
  10. package/dist/browser/content/Calendar.js +1570 -923
  11. package/dist/browser/content/Calendar.js.map +1 -1
  12. package/dist/browser/content/CalendarDayView.js +2 -2
  13. package/dist/browser/content/CalendarDayView.js.map +1 -1
  14. package/dist/browser/content/CalendarWeekView.js +29 -7
  15. package/dist/browser/content/CalendarWeekView.js.map +1 -1
  16. package/dist/browser/content/DataTable.js +45 -35
  17. package/dist/browser/content/DataTable.js.map +1 -1
  18. package/dist/browser/content/Kbd.js +51 -0
  19. package/dist/browser/content/Kbd.js.map +1 -0
  20. package/dist/browser/content/LabelChip.js +38 -0
  21. package/dist/browser/content/LabelChip.js.map +1 -0
  22. package/dist/browser/content/MarkdownView.js +2 -1
  23. package/dist/browser/content/MarkdownView.js.map +1 -1
  24. package/dist/browser/content/Steps.js +34 -0
  25. package/dist/browser/content/Steps.js.map +1 -0
  26. package/dist/browser/content/VirtualFeed.js +33 -1
  27. package/dist/browser/content/VirtualFeed.js.map +1 -1
  28. package/dist/browser/content/calendar-day-scroll.js +17 -4
  29. package/dist/browser/content/calendar-day-scroll.js.map +1 -1
  30. package/dist/browser/content/calendar-dialogs.js +32 -60
  31. package/dist/browser/content/calendar-dialogs.js.map +1 -1
  32. package/dist/browser/content/calendar-month-scroll.js +80 -0
  33. package/dist/browser/content/calendar-month-scroll.js.map +1 -0
  34. package/dist/browser/content/calendar-time-view.js +9 -4
  35. package/dist/browser/content/calendar-time-view.js.map +1 -1
  36. package/dist/browser/content/index.js +4 -1
  37. package/dist/browser/content/index.js.map +1 -1
  38. package/dist/browser/content/markdown-info-blocks.js +33 -5
  39. package/dist/browser/content/markdown-info-blocks.js.map +1 -1
  40. package/dist/browser/feedback/prompts.js +17 -3
  41. package/dist/browser/feedback/prompts.js.map +1 -1
  42. package/dist/browser/intl/index.js +1 -0
  43. package/dist/browser/intl/index.js.map +1 -1
  44. package/dist/browser/intl/shortcut-messages.js +77 -0
  45. package/dist/browser/intl/shortcut-messages.js.map +1 -0
  46. package/dist/browser/intl/shortcut.js +123 -0
  47. package/dist/browser/intl/shortcut.js.map +1 -0
  48. package/dist/browser/layout/AppWorkspace.js +345 -325
  49. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  50. package/dist/browser/layout/Navigation.js +18 -3
  51. package/dist/browser/layout/Navigation.js.map +1 -1
  52. package/dist/browser/layout/PageTitle.js +14 -0
  53. package/dist/browser/layout/PageTitle.js.map +1 -1
  54. package/dist/browser/layout/SidebarSwitcher.js +505 -0
  55. package/dist/browser/layout/SidebarSwitcher.js.map +1 -0
  56. package/dist/browser/layout/TableOfContents.js +115 -0
  57. package/dist/browser/layout/TableOfContents.js.map +1 -0
  58. package/dist/browser/layout/app-workspace-controller.js +15 -48
  59. package/dist/browser/layout/app-workspace-controller.js.map +1 -1
  60. package/dist/browser/layout/index.js +2 -0
  61. package/dist/browser/layout/index.js.map +1 -1
  62. package/dist/browser/layout/navigation-model.js +1 -0
  63. package/dist/browser/layout/navigation-model.js.map +1 -1
  64. package/dist/browser/layout/table-of-contents-messages.js +19 -0
  65. package/dist/browser/layout/table-of-contents-messages.js.map +1 -0
  66. package/dist/browser/surfaces/LinkCard.js +40 -24
  67. package/dist/browser/surfaces/LinkCard.js.map +1 -1
  68. package/dist/ssr/actions/Dropdown.js +11 -5
  69. package/dist/ssr/actions/Dropdown.js.map +1 -1
  70. package/dist/ssr/actions/GestureMenu.js +3 -3
  71. package/dist/ssr/actions/GestureMenu.js.map +1 -1
  72. package/dist/ssr/actions/SpotlightSearch.js +9 -3
  73. package/dist/ssr/actions/SpotlightSearch.js.map +1 -1
  74. package/dist/ssr/actions/Toolbar.js +67 -1
  75. package/dist/ssr/actions/Toolbar.js.map +1 -1
  76. package/dist/ssr/content/Calendar.js +895 -321
  77. package/dist/ssr/content/Calendar.js.map +1 -1
  78. package/dist/ssr/content/CalendarDayView.js +2 -2
  79. package/dist/ssr/content/CalendarDayView.js.map +1 -1
  80. package/dist/ssr/content/CalendarWeekView.js +28 -7
  81. package/dist/ssr/content/CalendarWeekView.js.map +1 -1
  82. package/dist/ssr/content/DataTable.js +21 -17
  83. package/dist/ssr/content/DataTable.js.map +1 -1
  84. package/dist/ssr/content/Kbd.js +38 -0
  85. package/dist/ssr/content/Kbd.js.map +1 -0
  86. package/dist/ssr/content/LabelChip.js +21 -0
  87. package/dist/ssr/content/LabelChip.js.map +1 -0
  88. package/dist/ssr/content/MarkdownView.js +2 -1
  89. package/dist/ssr/content/MarkdownView.js.map +1 -1
  90. package/dist/ssr/content/Steps.js +14 -0
  91. package/dist/ssr/content/Steps.js.map +1 -0
  92. package/dist/ssr/content/VirtualFeed.js +33 -1
  93. package/dist/ssr/content/VirtualFeed.js.map +1 -1
  94. package/dist/ssr/content/calendar-day-scroll.js +17 -4
  95. package/dist/ssr/content/calendar-day-scroll.js.map +1 -1
  96. package/dist/ssr/content/calendar-dialogs.js +12 -32
  97. package/dist/ssr/content/calendar-dialogs.js.map +1 -1
  98. package/dist/ssr/content/calendar-month-scroll.js +80 -0
  99. package/dist/ssr/content/calendar-month-scroll.js.map +1 -0
  100. package/dist/ssr/content/calendar-time-view.js +8 -3
  101. package/dist/ssr/content/calendar-time-view.js.map +1 -1
  102. package/dist/ssr/content/index.js +4 -1
  103. package/dist/ssr/content/index.js.map +1 -1
  104. package/dist/ssr/content/markdown-info-blocks.js +33 -5
  105. package/dist/ssr/content/markdown-info-blocks.js.map +1 -1
  106. package/dist/ssr/feedback/prompts.js +17 -3
  107. package/dist/ssr/feedback/prompts.js.map +1 -1
  108. package/dist/ssr/intl/index.js +1 -0
  109. package/dist/ssr/intl/index.js.map +1 -1
  110. package/dist/ssr/intl/shortcut-messages.js +77 -0
  111. package/dist/ssr/intl/shortcut-messages.js.map +1 -0
  112. package/dist/ssr/intl/shortcut.js +123 -0
  113. package/dist/ssr/intl/shortcut.js.map +1 -0
  114. package/dist/ssr/layout/AppWorkspace.js +67 -59
  115. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  116. package/dist/ssr/layout/Navigation.js +12 -2
  117. package/dist/ssr/layout/Navigation.js.map +1 -1
  118. package/dist/ssr/layout/PageTitle.js +14 -0
  119. package/dist/ssr/layout/PageTitle.js.map +1 -1
  120. package/dist/ssr/layout/SidebarSwitcher.js +271 -0
  121. package/dist/ssr/layout/SidebarSwitcher.js.map +1 -0
  122. package/dist/ssr/layout/TableOfContents.js +79 -0
  123. package/dist/ssr/layout/TableOfContents.js.map +1 -0
  124. package/dist/ssr/layout/app-workspace-controller.js +15 -48
  125. package/dist/ssr/layout/app-workspace-controller.js.map +1 -1
  126. package/dist/ssr/layout/index.js +2 -0
  127. package/dist/ssr/layout/index.js.map +1 -1
  128. package/dist/ssr/layout/navigation-model.js +1 -0
  129. package/dist/ssr/layout/navigation-model.js.map +1 -1
  130. package/dist/ssr/layout/table-of-contents-messages.js +19 -0
  131. package/dist/ssr/layout/table-of-contents-messages.js.map +1 -0
  132. package/dist/ssr/surfaces/LinkCard.js +26 -10
  133. package/dist/ssr/surfaces/LinkCard.js.map +1 -1
  134. package/dist/styles.css +1 -1
  135. package/dist/types/actions/Dropdown.d.ts +12 -0
  136. package/dist/types/actions/SpotlightSearch.d.ts +2 -0
  137. package/dist/types/content/Calendar.d.ts +20 -7
  138. package/dist/types/content/CalendarWeekView.d.ts +1 -1
  139. package/dist/types/content/DataTable.d.ts +9 -0
  140. package/dist/types/content/Kbd.d.ts +16 -0
  141. package/dist/types/content/LabelChip.d.ts +12 -0
  142. package/dist/types/content/MarkdownView.d.ts +2 -1
  143. package/dist/types/content/Steps.d.ts +12 -0
  144. package/dist/types/content/VirtualFeed.d.ts +8 -0
  145. package/dist/types/content/calendar-day-scroll.d.ts +9 -4
  146. package/dist/types/content/calendar-dialogs.d.ts +0 -2
  147. package/dist/types/content/calendar-month-scroll.d.ts +25 -0
  148. package/dist/types/content/index.d.ts +7 -1
  149. package/dist/types/content/markdown-info-blocks.d.ts +21 -4
  150. package/dist/types/feedback/prompts.d.ts +8 -2
  151. package/dist/types/intl/index.d.ts +2 -0
  152. package/dist/types/intl/shortcut-messages.d.ts +35 -0
  153. package/dist/types/intl/shortcut.d.ts +29 -0
  154. package/dist/types/layout/AppWorkspace.d.ts +5 -1
  155. package/dist/types/layout/SidebarSwitcher.d.ts +65 -0
  156. package/dist/types/layout/TableOfContents.d.ts +24 -0
  157. package/dist/types/layout/index.d.ts +3 -0
  158. package/dist/types/layout/navigation-model.d.ts +4 -0
  159. package/dist/types/layout/table-of-contents-messages.d.ts +4 -0
  160. package/dist/types/surfaces/LinkCard.d.ts +3 -0
  161. package/package.json +4 -4
@@ -37,34 +37,36 @@ var _tmpl$ = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspac
37
37
  _tmpl$17 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-mention aria-hidden=true>@`),
38
38
  _tmpl$18 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-muted aria-hidden=true><i class="ti ti-bell-off">`),
39
39
  _tmpl$19 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-count>`),
40
- _tmpl$20 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status><!$><!/><!$><!/><span class=k2b-app-workspace__sidebar-status-unread aria-hidden=true></span><span class=k2b-sr-only>, <!$><!/>`),
41
- _tmpl$21 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-dot>`),
42
- _tmpl$22 = /*#__PURE__*/_$template(`<button type=button>`),
43
- _tmpl$23 = /*#__PURE__*/_$template(`<a>`),
44
- _tmpl$24 = /*#__PURE__*/_$template(`<div><!$><!/><!$><!/>`),
45
- _tmpl$25 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true>`),
46
- _tmpl$26 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context-meta>`),
47
- _tmpl$27 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context><span class=k2b-app-workspace__sidebar-item-context-label></span><!$><!/>`),
48
- _tmpl$28 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-description>`),
49
- _tmpl$29 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-copy><!$><!/><span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text></span></span><!$><!/>`),
50
- _tmpl$30 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
51
- _tmpl$31 = /*#__PURE__*/_$template(`<i>`),
52
- _tmpl$32 = /*#__PURE__*/_$template(`<a class=k2b-app-workspace__sidebar-item-action>`),
53
- _tmpl$33 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-item-action>`),
54
- _tmpl$34 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon><i>`),
55
- _tmpl$35 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-copy><span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text></span></span><span class=k2b-app-workspace__sidebar-item-description>`),
56
- _tmpl$36 = /*#__PURE__*/_$template(`<span>`),
57
- _tmpl$37 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__nav-tree-toggle data-k2b-nav-tree-toggle aria-hidden=true><i>`),
58
- _tmpl$38 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text>`),
59
- _tmpl$39 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-group role=group>`),
60
- _tmpl$40 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-node role=treeitem><!$><!/><!$><!/>`),
61
- _tmpl$41 = /*#__PURE__*/_$template(`<div role=tree>`),
62
- _tmpl$42 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-icon-grid>`),
63
- _tmpl$43 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
64
- _tmpl$44 = /*#__PURE__*/_$template(`<i class="ti ti-layout-sidebar"aria-hidden=true>`),
65
- _tmpl$45 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__head><!$><!/><!$><!/>`),
66
- _tmpl$46 = /*#__PURE__*/_$template(`<h1 class=k2b-app-workspace__head-heading data-k2b-page-trail-title>`),
67
- _tmpl$47 = /*#__PURE__*/_$template(`<div data-k2b-app-workspace><!$><!/><!$><!/>`);
40
+ _tmpl$20 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-unread aria-hidden=true>`),
41
+ _tmpl$21 = /*#__PURE__*/_$template(`<span class=k2b-sr-only>, <!$><!/>`),
42
+ _tmpl$22 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status>`),
43
+ _tmpl$23 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-status-dot>`),
44
+ _tmpl$24 = /*#__PURE__*/_$template(`<button type=button>`),
45
+ _tmpl$25 = /*#__PURE__*/_$template(`<a>`),
46
+ _tmpl$26 = /*#__PURE__*/_$template(`<div><!$><!/><!$><!/>`),
47
+ _tmpl$27 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon aria-hidden=true>`),
48
+ _tmpl$28 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context-meta>`),
49
+ _tmpl$29 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-context><span class=k2b-app-workspace__sidebar-item-context-label></span><!$><!/>`),
50
+ _tmpl$30 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-description>`),
51
+ _tmpl$31 = /*#__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><!$><!/>`),
52
+ _tmpl$32 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-meta>`),
53
+ _tmpl$33 = /*#__PURE__*/_$template(`<i>`),
54
+ _tmpl$34 = /*#__PURE__*/_$template(`<a class=k2b-app-workspace__sidebar-item-action>`),
55
+ _tmpl$35 = /*#__PURE__*/_$template(`<button type=button class=k2b-app-workspace__sidebar-item-action>`),
56
+ _tmpl$36 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-icon><i>`),
57
+ _tmpl$37 = /*#__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>`),
58
+ _tmpl$38 = /*#__PURE__*/_$template(`<span>`),
59
+ _tmpl$39 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__nav-tree-toggle data-k2b-nav-tree-toggle aria-hidden=true><i>`),
60
+ _tmpl$40 = /*#__PURE__*/_$template(`<span class=k2b-app-workspace__sidebar-item-label><span class=k2b-app-workspace__sidebar-item-label-text>`),
61
+ _tmpl$41 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-group role=group>`),
62
+ _tmpl$42 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__nav-tree-node role=treeitem><!$><!/><!$><!/>`),
63
+ _tmpl$43 = /*#__PURE__*/_$template(`<div role=tree>`),
64
+ _tmpl$44 = /*#__PURE__*/_$template(`<section><!$><!/><div class=k2b-app-workspace__sidebar-icon-grid>`),
65
+ _tmpl$45 = /*#__PURE__*/_$template(`<i aria-hidden=true>`),
66
+ _tmpl$46 = /*#__PURE__*/_$template(`<i class="ti ti-layout-sidebar"aria-hidden=true>`),
67
+ _tmpl$47 = /*#__PURE__*/_$template(`<div class=k2b-app-workspace__head><!$><!/><!$><!/>`),
68
+ _tmpl$48 = /*#__PURE__*/_$template(`<h1 class=k2b-app-workspace__head-heading data-k2b-page-trail-title>`),
69
+ _tmpl$49 = /*#__PURE__*/_$template(`<div data-k2b-app-workspace><!$><!/><!$><!/>`);
68
70
  import { Link } from "@k2b/ssr/nav";
69
71
  import { children, createContext, createEffect, createMemo, createSignal, createUniqueId, For, mergeProps, onCleanup, onMount, Show, useContext } from "solid-js";
70
72
  import { isServer } from "solid-js/web";
@@ -73,6 +75,7 @@ import { APP_WORKSPACE_DETAIL_CLOSE_EVENT, APP_WORKSPACE_DETAIL_STEP_EVENT, APP_
73
75
  import { APP_WORKSPACE_DETAIL_DEFAULT, APP_WORKSPACE_DETAIL_MAX, APP_WORKSPACE_DETAIL_MIN, APP_WORKSPACE_DRAWER_DEFAULT, APP_WORKSPACE_DRAWER_MAX, APP_WORKSPACE_DRAWER_MIN, APP_WORKSPACE_PANE_DEFAULT, APP_WORKSPACE_PANE_MAX, APP_WORKSPACE_PANE_MIN, APP_WORKSPACE_SIDEBAR_COLLAPSED, APP_WORKSPACE_SIDEBAR_DEFAULT, APP_WORKSPACE_SIDEBAR_MAX, APP_WORKSPACE_SIDEBAR_MIN, appWorkspaceLayoutStyle, appWorkspacePanelVariable } from "./app-workspace-state";
74
76
  import { PageTitle, usePageTrail } from "./PageTitle";
75
77
  import { SidebarItemPreview } from "./SidebarItemPreview";
78
+ import { AppWorkspaceSidebarSwitcher } from "./SidebarSwitcher";
76
79
  import { createScrollFade } from "./scroll-fade";
77
80
  import { assertStableUiId, assertUniqueStableUiIds } from "./stable-id";
78
81
  import { useWorkspaceMessages } from "./workspace-messages";
@@ -866,75 +869,79 @@ const AppWorkspaceSidebarItemStatus = props => {
866
869
  }) : dot() ? workspaceMessages().sidebarNewActivity : "", props.mention ? workspaceMessages().sidebarMentioned : "", props.muted ? workspaceMessages().sidebarMuted : ""].filter(Boolean).join(", ");
867
870
  // The unread slot stays reserved at the end, and the marks that change most
868
871
  // often sit outermost, so new activity or a mention never moves another mark.
869
- return _$createComponent(Show, {
870
- get when() {
871
- return description();
872
- },
873
- get children() {
874
- var _el$33 = _$getNextElement(_tmpl$20),
875
- _el$42 = _el$33.firstChild,
876
- [_el$43, _co$7] = _$getNextMarker(_el$42.nextSibling),
877
- _el$44 = _el$43.nextSibling,
878
- [_el$45, _co$8] = _$getNextMarker(_el$44.nextSibling),
879
- _el$36 = _el$45.nextSibling,
880
- _el$38 = _el$36.nextSibling,
881
- _el$39 = _el$38.firstChild,
882
- _el$40 = _el$39.nextSibling,
883
- [_el$41, _co$6] = _$getNextMarker(_el$40.nextSibling);
884
- _$insert(_el$33, _$createComponent(Show, {
885
- get when() {
886
- return props.mention;
887
- },
888
- get children() {
889
- return _$getNextElement(_tmpl$17);
890
- }
891
- }), _el$43, _co$7);
892
- _$insert(_el$33, _$createComponent(Show, {
893
- get when() {
894
- return props.muted;
895
- },
896
- get children() {
897
- return _$getNextElement(_tmpl$18);
898
- }
899
- }), _el$45, _co$8);
900
- _$insert(_el$36, _$createComponent(Show, {
901
- get when() {
902
- return count() || waiting() === 0;
903
- },
904
- get fallback() {
905
- return _$createComponent(Show, {
872
+ // The element itself stays when there is nothing to show: empty, it takes no
873
+ // space, and it still keeps the row's label on one line, so the first count
874
+ // never re-wraps the label and moves the rows below.
875
+ return (() => {
876
+ var _el$33 = _$getNextElement(_tmpl$22);
877
+ _$insert(_el$33, _$createComponent(Show, {
878
+ get when() {
879
+ return description();
880
+ },
881
+ get children() {
882
+ return [_$createComponent(Show, {
883
+ get when() {
884
+ return props.mention;
885
+ },
886
+ get children() {
887
+ return _$getNextElement(_tmpl$17);
888
+ }
889
+ }), _$createComponent(Show, {
890
+ get when() {
891
+ return props.muted;
892
+ },
893
+ get children() {
894
+ return _$getNextElement(_tmpl$18);
895
+ }
896
+ }), (() => {
897
+ var _el$36 = _$getNextElement(_tmpl$20);
898
+ _$insert(_el$36, _$createComponent(Show, {
906
899
  get when() {
907
- return dot();
900
+ return count() || waiting() === 0;
901
+ },
902
+ get fallback() {
903
+ return _$createComponent(Show, {
904
+ get when() {
905
+ return dot();
906
+ },
907
+ get children() {
908
+ return _$getNextElement(_tmpl$23);
909
+ }
910
+ });
908
911
  },
909
912
  get children() {
910
- return _$getNextElement(_tmpl$21);
913
+ var _el$37 = _$getNextElement(_tmpl$19);
914
+ _$insert(_el$37, (() => {
915
+ var _c$ = _$memo(() => count() > 99);
916
+ return () => _c$() ? "99+" : count();
917
+ })());
918
+ _$effect(() => _$setAttribute(_el$37, "data-mention", props.mention ? "true" : undefined));
919
+ return _el$37;
911
920
  }
912
- });
913
- },
914
- get children() {
915
- var _el$37 = _$getNextElement(_tmpl$19);
916
- _$insert(_el$37, (() => {
917
- var _c$ = _$memo(() => count() > 99);
918
- return () => _c$() ? "99+" : count();
919
- })());
920
- _$effect(() => _$setAttribute(_el$37, "data-mention", props.mention ? "true" : undefined));
921
- return _el$37;
922
- }
923
- }));
924
- _$insert(_el$38, description, _el$41, _co$6);
925
- _$effect(_p$ => {
926
- var _v$51 = waiting() !== null ? undefined : count() ? "count" : dot() ? "dot" : undefined,
927
- _v$52 = waiting() === null ? undefined : waiting() ? "count" : "zero";
928
- _v$51 !== _p$.e && _$setAttribute(_el$33, "data-unread", _p$.e = _v$51);
929
- _v$52 !== _p$.t && _$setAttribute(_el$33, "data-waiting", _p$.t = _v$52);
930
- return _p$;
931
- }, {
932
- e: undefined,
933
- t: undefined
934
- });
935
- return _el$33;
936
- }
937
- });
921
+ }));
922
+ return _el$36;
923
+ })(), (() => {
924
+ var _el$38 = _$getNextElement(_tmpl$21),
925
+ _el$39 = _el$38.firstChild,
926
+ _el$40 = _el$39.nextSibling,
927
+ [_el$41, _co$6] = _$getNextMarker(_el$40.nextSibling);
928
+ _$insert(_el$38, description, _el$41, _co$6);
929
+ return _el$38;
930
+ })()];
931
+ }
932
+ }));
933
+ _$effect(_p$ => {
934
+ var _v$51 = waiting() !== null ? undefined : count() ? "count" : dot() ? "dot" : undefined,
935
+ _v$52 = waiting() === null ? undefined : waiting() ? "count" : "zero";
936
+ _v$51 !== _p$.e && _$setAttribute(_el$33, "data-unread", _p$.e = _v$51);
937
+ _v$52 !== _p$.t && _$setAttribute(_el$33, "data-waiting", _p$.t = _v$52);
938
+ return _p$;
939
+ }, {
940
+ e: undefined,
941
+ t: undefined
942
+ });
943
+ return _el$33;
944
+ })();
938
945
  };
939
946
  /** Shared visual and semantic row frame for flat sidebar items and tree items. */
940
947
  function AppWorkspaceSidebarRow(props) {
@@ -961,8 +968,8 @@ function AppWorkspaceSidebarRow(props) {
961
968
  },
962
969
  get fallback() {
963
970
  return (() => {
964
- var _el$47 = _$getNextElement(_tmpl$22);
965
- _$spread(_el$47, _$mergeProps(attrs, {
971
+ var _el$43 = _$getNextElement(_tmpl$24);
972
+ _$spread(_el$43, _$mergeProps(attrs, {
966
973
  get tabIndex() {
967
974
  return props.tabIndex;
968
975
  },
@@ -973,9 +980,9 @@ function AppWorkspaceSidebarRow(props) {
973
980
  return props.onClick;
974
981
  }
975
982
  }), false, true);
976
- _$insert(_el$47, () => props.children);
983
+ _$insert(_el$43, () => props.children);
977
984
  _$runHydrationEvents();
978
- return _el$47;
985
+ return _el$43;
979
986
  })();
980
987
  },
981
988
  get children() {
@@ -985,8 +992,8 @@ function AppWorkspaceSidebarRow(props) {
985
992
  },
986
993
  get fallback() {
987
994
  return (() => {
988
- var _el$48 = _$getNextElement(_tmpl$23);
989
- _$spread(_el$48, _$mergeProps({
995
+ var _el$44 = _$getNextElement(_tmpl$25);
996
+ _$spread(_el$44, _$mergeProps({
990
997
  get href() {
991
998
  return props.href;
992
999
  }
@@ -1001,9 +1008,9 @@ function AppWorkspaceSidebarRow(props) {
1001
1008
  return props.onClick;
1002
1009
  }
1003
1010
  }), false, true);
1004
- _$insert(_el$48, () => props.children);
1011
+ _$insert(_el$44, () => props.children);
1005
1012
  _$runHydrationEvents();
1006
- return _el$48;
1013
+ return _el$44;
1007
1014
  })();
1008
1015
  },
1009
1016
  get children() {
@@ -1049,22 +1056,22 @@ function AppWorkspaceSidebarRow(props) {
1049
1056
  });
1050
1057
  },
1051
1058
  get children() {
1052
- var _el$49 = _$getNextElement(_tmpl$24),
1053
- _el$50 = _el$49.firstChild,
1054
- [_el$51, _co$9] = _$getNextMarker(_el$50.nextSibling),
1055
- _el$52 = _el$51.nextSibling,
1056
- [_el$53, _co$0] = _$getNextMarker(_el$52.nextSibling);
1057
- _$spread(_el$49, _$mergeProps(common, {
1059
+ var _el$45 = _$getNextElement(_tmpl$26),
1060
+ _el$46 = _el$45.firstChild,
1061
+ [_el$47, _co$7] = _$getNextMarker(_el$46.nextSibling),
1062
+ _el$48 = _el$47.nextSibling,
1063
+ [_el$49, _co$8] = _$getNextMarker(_el$48.nextSibling);
1064
+ _$spread(_el$45, _$mergeProps(common, {
1058
1065
  get ["data-disabled"]() {
1059
1066
  return props.disabled ? "true" : undefined;
1060
1067
  }
1061
1068
  }), false, true);
1062
- _$insert(_el$49, _$createComponent(Control, {
1069
+ _$insert(_el$45, _$createComponent(Control, {
1063
1070
  grouped: true
1064
- }), _el$51, _co$9);
1065
- _$insert(_el$49, () => props.actions, _el$53, _co$0);
1071
+ }), _el$47, _co$7);
1072
+ _$insert(_el$45, () => props.actions, _el$49, _co$8);
1066
1073
  _$runHydrationEvents();
1067
- return _el$49;
1074
+ return _el$45;
1068
1075
  }
1069
1076
  });
1070
1077
  }
@@ -1080,10 +1087,11 @@ function AppWorkspaceSidebarItem(props) {
1080
1087
  const actionSlot = createMemo(() => slots().find(slot => slot.kind === SIDEBAR_ITEM_ACTION));
1081
1088
  const legacy = createMemo(() => values().filter(value => !sidebarItemSlot(value)));
1082
1089
  const label = () => labelSlot()?.children ?? (legacy().length === 1 ? legacy()[0] : legacy());
1090
+ const oneLine = () => !(labelSlot()?.marquee ?? (props.variant ?? "row") === "row");
1083
1091
  const icon = () => iconSlot()?.icon ?? props.icon;
1084
1092
  const iconContent = () => iconSlot()?.children;
1085
- // Resolved first, so a component that renders nothing, such as a status with
1086
- // nothing to show, leaves no empty slot in the browser either.
1093
+ // Resolved first, so metadata that renders nothing leaves no empty slot. An
1094
+ // empty status still renders its element; the stylesheet hides that slot.
1087
1095
  const meta = children(() => metaSlot()?.children ?? props.meta);
1088
1096
  const hasMeta = () => meta.toArray().some(Boolean);
1089
1097
  const metaId = createUniqueId();
@@ -1096,76 +1104,85 @@ function AppWorkspaceSidebarItem(props) {
1096
1104
  return iconContent() || icon();
1097
1105
  },
1098
1106
  get children() {
1099
- var _el$54 = _$getNextElement(_tmpl$25);
1100
- _$insert(_el$54, () => iconContent() ?? (() => {
1101
- var _el$69 = _$getNextElement(_tmpl$31);
1102
- _$effect(() => _$className(_el$69, iconClass(icon())));
1103
- return _el$69;
1107
+ var _el$50 = _$getNextElement(_tmpl$27);
1108
+ _$insert(_el$50, () => iconContent() ?? (() => {
1109
+ var _el$65 = _$getNextElement(_tmpl$33);
1110
+ _$effect(() => _$className(_el$65, iconClass(icon())));
1111
+ return _el$65;
1104
1112
  })());
1105
- return _el$54;
1113
+ return _el$50;
1106
1114
  }
1107
1115
  }), (() => {
1108
- var _el$55 = _$getNextElement(_tmpl$29),
1109
- _el$64 = _el$55.firstChild,
1110
- [_el$65, _co$10] = _$getNextMarker(_el$64.nextSibling),
1111
- _el$61 = _el$65.nextSibling,
1112
- _el$62 = _el$61.firstChild,
1113
- _el$66 = _el$61.nextSibling,
1114
- [_el$67, _co$11] = _$getNextMarker(_el$66.nextSibling);
1115
- _$insert(_el$55, _$createComponent(Show, {
1116
+ var _el$51 = _$getNextElement(_tmpl$31),
1117
+ _el$60 = _el$51.firstChild,
1118
+ [_el$61, _co$0] = _$getNextMarker(_el$60.nextSibling),
1119
+ _el$57 = _el$61.nextSibling,
1120
+ _el$58 = _el$57.firstChild,
1121
+ _el$62 = _el$57.nextSibling,
1122
+ [_el$63, _co$1] = _$getNextMarker(_el$62.nextSibling);
1123
+ _$insert(_el$51, _$createComponent(Show, {
1116
1124
  get when() {
1117
1125
  return props.context || props.contextMeta;
1118
1126
  },
1119
1127
  get children() {
1120
- var _el$56 = _$getNextElement(_tmpl$27),
1121
- _el$57 = _el$56.firstChild,
1122
- _el$59 = _el$57.nextSibling,
1123
- [_el$60, _co$1] = _$getNextMarker(_el$59.nextSibling);
1124
- _$insert(_el$57, () => props.context);
1125
- _$insert(_el$56, _$createComponent(Show, {
1128
+ var _el$52 = _$getNextElement(_tmpl$29),
1129
+ _el$53 = _el$52.firstChild,
1130
+ _el$55 = _el$53.nextSibling,
1131
+ [_el$56, _co$9] = _$getNextMarker(_el$55.nextSibling);
1132
+ _$insert(_el$53, () => props.context);
1133
+ _$insert(_el$52, _$createComponent(Show, {
1126
1134
  get when() {
1127
1135
  return props.contextMeta;
1128
1136
  },
1129
1137
  get children() {
1130
- var _el$58 = _$getNextElement(_tmpl$26);
1131
- _$insert(_el$58, () => props.contextMeta);
1132
- return _el$58;
1138
+ var _el$54 = _$getNextElement(_tmpl$28);
1139
+ _$insert(_el$54, () => props.contextMeta);
1140
+ return _el$54;
1133
1141
  }
1134
- }), _el$60, _co$1);
1135
- return _el$56;
1142
+ }), _el$56, _co$9);
1143
+ return _el$52;
1136
1144
  }
1137
- }), _el$65, _co$10);
1138
- _$insert(_el$62, () => label());
1139
- _$insert(_el$55, _$createComponent(Show, {
1145
+ }), _el$61, _co$0);
1146
+ _$insert(_el$58, () => label());
1147
+ _$insert(_el$51, _$createComponent(Show, {
1140
1148
  get when() {
1141
1149
  return props.description;
1142
1150
  },
1143
1151
  get children() {
1144
- var _el$63 = _$getNextElement(_tmpl$28);
1145
- _$insert(_el$63, () => props.description);
1146
- return _el$63;
1152
+ var _el$59 = _$getNextElement(_tmpl$30);
1153
+ _$insert(_el$59, () => props.description);
1154
+ return _el$59;
1147
1155
  }
1148
- }), _el$67, _co$11);
1149
- _$effect(() => _$setAttribute(_el$61, "data-marquee", labelSlot()?.marquee ?? (props.variant ?? "row") === "row" ? "true" : "false"));
1150
- return _el$55;
1156
+ }), _el$63, _co$1);
1157
+ _$effect(_p$ => {
1158
+ var _v$53 = oneLine() ? "1" : undefined,
1159
+ _v$54 = !oneLine() && typeof label() === "string" ? label() : undefined;
1160
+ _v$53 !== _p$.e && _$setAttribute(_el$57, "data-lines", _p$.e = _v$53);
1161
+ _v$54 !== _p$.t && _$setAttribute(_el$57, "data-label", _p$.t = _v$54);
1162
+ return _p$;
1163
+ }, {
1164
+ e: undefined,
1165
+ t: undefined
1166
+ });
1167
+ return _el$51;
1151
1168
  })(), _$createComponent(Show, {
1152
1169
  get when() {
1153
1170
  return hasMeta();
1154
1171
  },
1155
1172
  get children() {
1156
- var _el$68 = _$getNextElement(_tmpl$30);
1157
- _$insert(_el$68, meta);
1173
+ var _el$64 = _$getNextElement(_tmpl$32);
1174
+ _$insert(_el$64, meta);
1158
1175
  _$effect(_p$ => {
1159
- var _v$53 = props.preview?.trigger === "row" ? metaId : undefined,
1160
- _v$54 = metaVisibility() === "hover" ? "hover" : undefined;
1161
- _v$53 !== _p$.e && _$setAttribute(_el$68, "id", _p$.e = _v$53);
1162
- _v$54 !== _p$.t && _$setAttribute(_el$68, "data-visibility", _p$.t = _v$54);
1176
+ var _v$55 = props.preview?.trigger === "row" ? metaId : undefined,
1177
+ _v$56 = metaVisibility() === "hover" ? "hover" : undefined;
1178
+ _v$55 !== _p$.e && _$setAttribute(_el$64, "id", _p$.e = _v$55);
1179
+ _v$56 !== _p$.t && _$setAttribute(_el$64, "data-visibility", _p$.t = _v$56);
1163
1180
  return _p$;
1164
1181
  }, {
1165
1182
  e: undefined,
1166
1183
  t: undefined
1167
1184
  });
1168
- return _el$68;
1185
+ return _el$64;
1169
1186
  }
1170
1187
  })];
1171
1188
  const singleAction = () => {
@@ -1181,9 +1198,9 @@ function AppWorkspaceSidebarItem(props) {
1181
1198
  props.onActionClick?.(event);
1182
1199
  };
1183
1200
  const content = () => actionSlot()?.children ?? (() => {
1184
- var _el$70 = _$getNextElement(_tmpl$31);
1185
- _$effect(() => _$className(_el$70, iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots")));
1186
- return _el$70;
1201
+ var _el$66 = _$getNextElement(_tmpl$33);
1202
+ _$effect(() => _$className(_el$66, iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots")));
1203
+ return _el$66;
1187
1204
  })();
1188
1205
  return _$createComponent(Show, {
1189
1206
  get when() {
@@ -1196,16 +1213,16 @@ function AppWorkspaceSidebarItem(props) {
1196
1213
  },
1197
1214
  get fallback() {
1198
1215
  return (() => {
1199
- var _el$72 = _$getNextElement(_tmpl$33);
1200
- _el$72.$$click = select;
1201
- _$insert(_el$72, content);
1216
+ var _el$68 = _$getNextElement(_tmpl$35);
1217
+ _el$68.$$click = select;
1218
+ _$insert(_el$68, content);
1202
1219
  _$effect(_p$ => {
1203
- var _v$58 = actionSlot()?.disabled,
1204
- _v$59 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1205
- _v$60 = label();
1206
- _v$58 !== _p$.e && _$setProperty(_el$72, "disabled", _p$.e = _v$58);
1207
- _v$59 !== _p$.t && _$setAttribute(_el$72, "data-visibility", _p$.t = _v$59);
1208
- _v$60 !== _p$.a && _$setAttribute(_el$72, "aria-label", _p$.a = _v$60);
1220
+ var _v$60 = actionSlot()?.disabled,
1221
+ _v$61 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1222
+ _v$62 = label();
1223
+ _v$60 !== _p$.e && _$setProperty(_el$68, "disabled", _p$.e = _v$60);
1224
+ _v$61 !== _p$.t && _$setAttribute(_el$68, "data-visibility", _p$.t = _v$61);
1225
+ _v$62 !== _p$.a && _$setAttribute(_el$68, "aria-label", _p$.a = _v$62);
1209
1226
  return _p$;
1210
1227
  }, {
1211
1228
  e: undefined,
@@ -1213,20 +1230,20 @@ function AppWorkspaceSidebarItem(props) {
1213
1230
  a: undefined
1214
1231
  });
1215
1232
  _$runHydrationEvents();
1216
- return _el$72;
1233
+ return _el$68;
1217
1234
  })();
1218
1235
  },
1219
1236
  get children() {
1220
- var _el$71 = _$getNextElement(_tmpl$32);
1221
- _el$71.$$click = select;
1222
- _$insert(_el$71, content);
1237
+ var _el$67 = _$getNextElement(_tmpl$34);
1238
+ _el$67.$$click = select;
1239
+ _$insert(_el$67, content);
1223
1240
  _$effect(_p$ => {
1224
- var _v$55 = actionSlot()?.href,
1225
- _v$56 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1226
- _v$57 = label();
1227
- _v$55 !== _p$.e && _$setAttribute(_el$71, "href", _p$.e = _v$55);
1228
- _v$56 !== _p$.t && _$setAttribute(_el$71, "data-visibility", _p$.t = _v$56);
1229
- _v$57 !== _p$.a && _$setAttribute(_el$71, "aria-label", _p$.a = _v$57);
1241
+ var _v$57 = actionSlot()?.href,
1242
+ _v$58 = actionSlot()?.visibility === "hover" ? "hover" : undefined,
1243
+ _v$59 = label();
1244
+ _v$57 !== _p$.e && _$setAttribute(_el$67, "href", _p$.e = _v$57);
1245
+ _v$58 !== _p$.t && _$setAttribute(_el$67, "data-visibility", _p$.t = _v$58);
1246
+ _v$59 !== _p$.a && _$setAttribute(_el$67, "aria-label", _p$.a = _v$59);
1230
1247
  return _p$;
1231
1248
  }, {
1232
1249
  e: undefined,
@@ -1234,7 +1251,7 @@ function AppWorkspaceSidebarItem(props) {
1234
1251
  a: undefined
1235
1252
  });
1236
1253
  _$runHydrationEvents();
1237
- return _el$71;
1254
+ return _el$67;
1238
1255
  }
1239
1256
  });
1240
1257
  }
@@ -1535,16 +1552,16 @@ const AppWorkspaceNavTree = props => {
1535
1552
  return rowIcon();
1536
1553
  },
1537
1554
  get children() {
1538
- var _el$73 = _$getNextElement(_tmpl$34),
1539
- _el$74 = _el$73.firstChild;
1540
- _$spread(_el$73, _$mergeProps({
1555
+ var _el$69 = _$getNextElement(_tmpl$36),
1556
+ _el$70 = _el$69.firstChild;
1557
+ _$spread(_el$69, _$mergeProps({
1541
1558
  get ["data-k2b-nav-tree-toggle"]() {
1542
1559
  return usesIconDisclosure() ? "" : undefined;
1543
1560
  }
1544
1561
  }, () => iconAccessibility(item.iconLabel)), false, true);
1545
- _$effect(() => _$className(_el$74, iconClass(rowIcon())));
1562
+ _$effect(() => _$className(_el$70, iconClass(rowIcon())));
1546
1563
  _$runHydrationEvents();
1547
- return _el$73;
1564
+ return _el$69;
1548
1565
  }
1549
1566
  }), _$createComponent(Show, {
1550
1567
  get when() {
@@ -1552,49 +1569,51 @@ const AppWorkspaceNavTree = props => {
1552
1569
  },
1553
1570
  get fallback() {
1554
1571
  return (() => {
1555
- var _el$82 = _$getNextElement(_tmpl$38),
1556
- _el$83 = _el$82.firstChild;
1557
- _$insert(_el$83, () => item.label);
1558
- return _el$82;
1572
+ var _el$78 = _$getNextElement(_tmpl$40),
1573
+ _el$79 = _el$78.firstChild;
1574
+ _$insert(_el$79, () => item.label);
1575
+ _$effect(() => _$setAttribute(_el$78, "data-label", typeof item.label === "string" ? item.label : undefined));
1576
+ return _el$78;
1559
1577
  })();
1560
1578
  },
1561
1579
  get children() {
1562
- var _el$75 = _$getNextElement(_tmpl$35),
1563
- _el$76 = _el$75.firstChild,
1564
- _el$77 = _el$76.firstChild,
1565
- _el$78 = _el$76.nextSibling;
1566
- _$insert(_el$77, () => item.label);
1567
- _$insert(_el$78, () => item.description);
1568
- return _el$75;
1580
+ var _el$71 = _$getNextElement(_tmpl$37),
1581
+ _el$72 = _el$71.firstChild,
1582
+ _el$73 = _el$72.firstChild,
1583
+ _el$74 = _el$72.nextSibling;
1584
+ _$insert(_el$73, () => item.label);
1585
+ _$insert(_el$74, () => item.description);
1586
+ _$effect(() => _$setAttribute(_el$72, "data-label", typeof item.label === "string" ? item.label : undefined));
1587
+ return _el$71;
1569
1588
  }
1570
1589
  }), _$createComponent(Show, {
1571
1590
  get when() {
1572
1591
  return item.meta !== undefined;
1573
1592
  },
1574
1593
  get children() {
1575
- var _el$79 = _$getNextElement(_tmpl$36);
1576
- _$insert(_el$79, () => item.meta);
1594
+ var _el$75 = _$getNextElement(_tmpl$38);
1595
+ _$insert(_el$75, () => item.meta);
1577
1596
  _$effect(_p$ => {
1578
- var _v$61 = `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`,
1579
- _v$62 = item.metaVisibility === "hover" ? "hover" : undefined;
1580
- _v$61 !== _p$.e && _$className(_el$79, _p$.e = _v$61);
1581
- _v$62 !== _p$.t && _$setAttribute(_el$79, "data-visibility", _p$.t = _v$62);
1597
+ var _v$63 = `k2b-app-workspace__sidebar-item-meta ${hasChildren() ? "" : "k2b-app-workspace__nav-tree-leaf-meta"}`,
1598
+ _v$64 = item.metaVisibility === "hover" ? "hover" : undefined;
1599
+ _v$63 !== _p$.e && _$className(_el$75, _p$.e = _v$63);
1600
+ _v$64 !== _p$.t && _$setAttribute(_el$75, "data-visibility", _p$.t = _v$64);
1582
1601
  return _p$;
1583
1602
  }, {
1584
1603
  e: undefined,
1585
1604
  t: undefined
1586
1605
  });
1587
- return _el$79;
1606
+ return _el$75;
1588
1607
  }
1589
1608
  }), _$createComponent(Show, {
1590
1609
  get when() {
1591
1610
  return _$memo(() => !!hasChildren())() && !usesIconDisclosure();
1592
1611
  },
1593
1612
  get children() {
1594
- var _el$80 = _$getNextElement(_tmpl$37),
1595
- _el$81 = _el$80.firstChild;
1596
- _$effect(() => _$className(_el$81, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`));
1597
- return _el$80;
1613
+ var _el$76 = _$getNextElement(_tmpl$39),
1614
+ _el$77 = _el$76.firstChild;
1615
+ _$effect(() => _$className(_el$77, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`));
1616
+ return _el$76;
1598
1617
  }
1599
1618
  })];
1600
1619
  const row = () => _$createComponent(AppWorkspaceSidebarRow, {
@@ -1702,56 +1721,56 @@ const AppWorkspaceNavTree = props => {
1702
1721
  requestMove(target.move, false);
1703
1722
  };
1704
1723
  return (() => {
1705
- var _el$84 = _$getNextElement(_tmpl$40),
1706
- _el$86 = _el$84.firstChild,
1707
- [_el$87, _co$12] = _$getNextMarker(_el$86.nextSibling),
1708
- _el$88 = _el$87.nextSibling,
1709
- [_el$89, _co$13] = _$getNextMarker(_el$88.nextSibling);
1710
- _el$84.addEventListener("drop", onDrop);
1711
- _$addEventListener(_el$84, "dragleave", item.onDragLeave);
1712
- _el$84.addEventListener("dragover", onDragOver);
1713
- _$addEventListener(_el$84, "dragenter", item.onDragEnter);
1714
- _el$84.addEventListener("dragstart", onDragStart);
1715
- _el$84.$$keydown = onKeyDown;
1716
- _el$84.addEventListener("focus", () => setFocusedId(item.id));
1724
+ var _el$80 = _$getNextElement(_tmpl$42),
1725
+ _el$82 = _el$80.firstChild,
1726
+ [_el$83, _co$10] = _$getNextMarker(_el$82.nextSibling),
1727
+ _el$84 = _el$83.nextSibling,
1728
+ [_el$85, _co$11] = _$getNextMarker(_el$84.nextSibling);
1729
+ _el$80.addEventListener("drop", onDrop);
1730
+ _$addEventListener(_el$80, "dragleave", item.onDragLeave);
1731
+ _el$80.addEventListener("dragover", onDragOver);
1732
+ _$addEventListener(_el$80, "dragenter", item.onDragEnter);
1733
+ _el$80.addEventListener("dragstart", onDragStart);
1734
+ _el$80.$$keydown = onKeyDown;
1735
+ _el$80.addEventListener("focus", () => setFocusedId(item.id));
1717
1736
  var _ref$4 = treeItem;
1718
- typeof _ref$4 === "function" ? _$use(_ref$4, _el$84) : treeItem = _el$84;
1719
- _$setAttribute(_el$84, "aria-level", depth + 1);
1720
- _$setAttribute(_el$84, "data-k2b-nav-tree-parent-id", parentId);
1721
- _$insert(_el$84, row, _el$87, _co$12);
1722
- _$insert(_el$84, _$createComponent(Show, {
1737
+ typeof _ref$4 === "function" ? _$use(_ref$4, _el$80) : treeItem = _el$80;
1738
+ _$setAttribute(_el$80, "aria-level", depth + 1);
1739
+ _$setAttribute(_el$80, "data-k2b-nav-tree-parent-id", parentId);
1740
+ _$insert(_el$80, row, _el$83, _co$10);
1741
+ _$insert(_el$80, _$createComponent(Show, {
1723
1742
  get when() {
1724
1743
  return _$memo(() => !!hasChildren())() && isExpanded(item.id);
1725
1744
  },
1726
1745
  get children() {
1727
- var _el$85 = _$getNextElement(_tmpl$39);
1728
- _$insert(_el$85, () => renderItems(nested, depth + 1, item.id));
1729
- return _el$85;
1746
+ var _el$81 = _$getNextElement(_tmpl$41);
1747
+ _$insert(_el$81, () => renderItems(nested, depth + 1, item.id));
1748
+ return _el$81;
1730
1749
  }
1731
- }), _el$89, _co$13);
1750
+ }), _el$85, _co$11);
1732
1751
  _$effect(_p$ => {
1733
- var _v$63 = siblings().length,
1734
- _v$64 = place() + 1,
1735
- _v$65 = selected(),
1736
- _v$66 = hasChildren() ? isExpanded(item.id) : undefined,
1737
- _v$67 = item.disabled ? "true" : undefined,
1738
- _v$68 = item.disabled ? -1 : tabStopId() === item.id ? 0 : -1,
1739
- _v$69 = movable() ? true : undefined,
1740
- _v$70 = item.id,
1741
- _v$71 = dragged()?.id === item.id ? "" : undefined,
1742
- _v$72 = dropTarget()?.id === item.id ? dropTarget().side : undefined,
1743
- _v$73 = String(props.indented === false ? 0 : depth);
1744
- _v$63 !== _p$.e && _$setAttribute(_el$84, "aria-setsize", _p$.e = _v$63);
1745
- _v$64 !== _p$.t && _$setAttribute(_el$84, "aria-posinset", _p$.t = _v$64);
1746
- _v$65 !== _p$.a && _$setAttribute(_el$84, "aria-selected", _p$.a = _v$65);
1747
- _v$66 !== _p$.o && _$setAttribute(_el$84, "aria-expanded", _p$.o = _v$66);
1748
- _v$67 !== _p$.i && _$setAttribute(_el$84, "aria-disabled", _p$.i = _v$67);
1749
- _v$68 !== _p$.n && _$setAttribute(_el$84, "tabindex", _p$.n = _v$68);
1750
- _v$69 !== _p$.s && _$setAttribute(_el$84, "draggable", _p$.s = _v$69);
1751
- _v$70 !== _p$.h && _$setAttribute(_el$84, "data-k2b-nav-tree-id", _p$.h = _v$70);
1752
- _v$71 !== _p$.r && _$setAttribute(_el$84, "data-k2b-nav-tree-dragging", _p$.r = _v$71);
1753
- _v$72 !== _p$.d && _$setAttribute(_el$84, "data-k2b-nav-tree-drop", _p$.d = _v$72);
1754
- _v$73 !== _p$.l && _$setStyleProperty(_el$84, "--k2b-nav-tree-depth", _p$.l = _v$73);
1752
+ var _v$65 = siblings().length,
1753
+ _v$66 = place() + 1,
1754
+ _v$67 = selected(),
1755
+ _v$68 = hasChildren() ? isExpanded(item.id) : undefined,
1756
+ _v$69 = item.disabled ? "true" : undefined,
1757
+ _v$70 = item.disabled ? -1 : tabStopId() === item.id ? 0 : -1,
1758
+ _v$71 = movable() ? true : undefined,
1759
+ _v$72 = item.id,
1760
+ _v$73 = dragged()?.id === item.id ? "" : undefined,
1761
+ _v$74 = dropTarget()?.id === item.id ? dropTarget().side : undefined,
1762
+ _v$75 = String(props.indented === false ? 0 : depth);
1763
+ _v$65 !== _p$.e && _$setAttribute(_el$80, "aria-setsize", _p$.e = _v$65);
1764
+ _v$66 !== _p$.t && _$setAttribute(_el$80, "aria-posinset", _p$.t = _v$66);
1765
+ _v$67 !== _p$.a && _$setAttribute(_el$80, "aria-selected", _p$.a = _v$67);
1766
+ _v$68 !== _p$.o && _$setAttribute(_el$80, "aria-expanded", _p$.o = _v$68);
1767
+ _v$69 !== _p$.i && _$setAttribute(_el$80, "aria-disabled", _p$.i = _v$69);
1768
+ _v$70 !== _p$.n && _$setAttribute(_el$80, "tabindex", _p$.n = _v$70);
1769
+ _v$71 !== _p$.s && _$setAttribute(_el$80, "draggable", _p$.s = _v$71);
1770
+ _v$72 !== _p$.h && _$setAttribute(_el$80, "data-k2b-nav-tree-id", _p$.h = _v$72);
1771
+ _v$73 !== _p$.r && _$setAttribute(_el$80, "data-k2b-nav-tree-dragging", _p$.r = _v$73);
1772
+ _v$74 !== _p$.d && _$setAttribute(_el$80, "data-k2b-nav-tree-drop", _p$.d = _v$74);
1773
+ _v$75 !== _p$.l && _$setStyleProperty(_el$80, "--k2b-nav-tree-depth", _p$.l = _v$75);
1755
1774
  return _p$;
1756
1775
  }, {
1757
1776
  e: undefined,
@@ -1767,7 +1786,7 @@ const AppWorkspaceNavTree = props => {
1767
1786
  l: undefined
1768
1787
  });
1769
1788
  _$runHydrationEvents();
1770
- return _el$84;
1789
+ return _el$80;
1771
1790
  })();
1772
1791
  }
1773
1792
  });
@@ -1792,62 +1811,62 @@ const AppWorkspaceNavTree = props => {
1792
1811
  });
1793
1812
  });
1794
1813
  return (() => {
1795
- var _el$90 = _$getNextElement(_tmpl$41);
1796
- _el$90.addEventListener("dragend", endDrag);
1797
- _el$90.addEventListener("dragleave", event => {
1814
+ var _el$86 = _$getNextElement(_tmpl$43);
1815
+ _el$86.addEventListener("dragend", endDrag);
1816
+ _el$86.addEventListener("dragleave", event => {
1798
1817
  if (!root?.contains(event.relatedTarget)) setDropTarget(null);
1799
1818
  });
1800
- _el$90.addEventListener("dragover", event => {
1819
+ _el$86.addEventListener("dragover", event => {
1801
1820
  // Runs after the rows: a position no row claimed shows no gap.
1802
1821
  if (claimedDragOver !== event) setDropTarget(null);
1803
1822
  });
1804
1823
  var _ref$5 = root;
1805
- typeof _ref$5 === "function" ? _$use(_ref$5, _el$90) : root = _el$90;
1806
- _$insert(_el$90, () => renderItems(roots, 0));
1824
+ typeof _ref$5 === "function" ? _$use(_ref$5, _el$86) : root = _el$86;
1825
+ _$insert(_el$86, () => renderItems(roots, 0));
1807
1826
  _$effect(_p$ => {
1808
- var _v$74 = `k2b-app-workspace__nav-tree ${props.class ?? ""}`,
1809
- _v$75 = props.ariaLabel;
1810
- _v$74 !== _p$.e && _$className(_el$90, _p$.e = _v$74);
1811
- _v$75 !== _p$.t && _$setAttribute(_el$90, "aria-label", _p$.t = _v$75);
1827
+ var _v$76 = `k2b-app-workspace__nav-tree ${props.class ?? ""}`,
1828
+ _v$77 = props.ariaLabel;
1829
+ _v$76 !== _p$.e && _$className(_el$86, _p$.e = _v$76);
1830
+ _v$77 !== _p$.t && _$setAttribute(_el$86, "aria-label", _p$.t = _v$77);
1812
1831
  return _p$;
1813
1832
  }, {
1814
1833
  e: undefined,
1815
1834
  t: undefined
1816
1835
  });
1817
- return _el$90;
1836
+ return _el$86;
1818
1837
  })();
1819
1838
  };
1820
1839
  AppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;
1821
1840
  const AppWorkspaceSidebarIconGrid = props => (() => {
1822
- var _el$91 = _$getNextElement(_tmpl$42),
1823
- _el$93 = _el$91.firstChild,
1824
- [_el$94, _co$14] = _$getNextMarker(_el$93.nextSibling),
1825
- _el$92 = _el$94.nextSibling;
1826
- _$spread(_el$91, _$mergeProps({
1841
+ var _el$87 = _$getNextElement(_tmpl$44),
1842
+ _el$89 = _el$87.firstChild,
1843
+ [_el$90, _co$12] = _$getNextMarker(_el$89.nextSibling),
1844
+ _el$88 = _el$90.nextSibling;
1845
+ _$spread(_el$87, _$mergeProps({
1827
1846
  get ["class"]() {
1828
1847
  return `k2b-app-workspace__sidebar-icon-grid-wrap ${props.class ?? ""}`;
1829
1848
  }
1830
1849
  }, () => modeAttrs(props.sidebarMode)), false, true);
1831
- _$insert(_el$91, _$createComponent(Show, {
1850
+ _$insert(_el$87, _$createComponent(Show, {
1832
1851
  get when() {
1833
1852
  return props.title;
1834
1853
  },
1835
1854
  children: title => (() => {
1836
- var _el$95 = _$getNextElement(_tmpl$15);
1837
- _$insert(_el$95, title);
1838
- return _el$95;
1855
+ var _el$91 = _$getNextElement(_tmpl$15);
1856
+ _$insert(_el$91, title);
1857
+ return _el$91;
1839
1858
  })()
1840
- }), _el$94, _co$14);
1841
- _$insert(_el$92, () => props.children);
1842
- _$effect(() => _$setAttribute(_el$92, "data-columns", props.columns ?? 2));
1859
+ }), _el$90, _co$12);
1860
+ _$insert(_el$88, () => props.children);
1861
+ _$effect(() => _$setAttribute(_el$88, "data-columns", props.columns ?? 2));
1843
1862
  _$runHydrationEvents();
1844
- return _el$91;
1863
+ return _el$87;
1845
1864
  })();
1846
1865
  const AppWorkspaceSidebarIconAction = props => {
1847
1866
  const content = (() => {
1848
- var _el$96 = _$getNextElement(_tmpl$43);
1849
- _$effect(() => _$className(_el$96, iconClass(props.icon)));
1850
- return _el$96;
1867
+ var _el$92 = _$getNextElement(_tmpl$45);
1868
+ _$effect(() => _$className(_el$92, iconClass(props.icon)));
1869
+ return _el$92;
1851
1870
  })();
1852
1871
  const attrs = () => ({
1853
1872
  class: `k2b-app-workspace__sidebar-icon-action ${props.active ? "is-active" : ""}`,
@@ -1860,8 +1879,8 @@ const AppWorkspaceSidebarIconAction = props => {
1860
1879
  ...modeAttrs(props.sidebarMode)
1861
1880
  });
1862
1881
  if (!props.href || props.disabled) return (() => {
1863
- var _el$97 = _$getNextElement(_tmpl$22);
1864
- _$spread(_el$97, _$mergeProps(attrs, {
1882
+ var _el$93 = _$getNextElement(_tmpl$24);
1883
+ _$spread(_el$93, _$mergeProps(attrs, {
1865
1884
  get disabled() {
1866
1885
  return props.disabled;
1867
1886
  },
@@ -1869,13 +1888,13 @@ const AppWorkspaceSidebarIconAction = props => {
1869
1888
  return props.onClick;
1870
1889
  }
1871
1890
  }), false, true);
1872
- _$insert(_el$97, content);
1891
+ _$insert(_el$93, content);
1873
1892
  _$runHydrationEvents();
1874
- return _el$97;
1893
+ return _el$93;
1875
1894
  })();
1876
1895
  if (props.navigation !== "enhanced" || !props.onNavigate) return (() => {
1877
- var _el$98 = _$getNextElement(_tmpl$23);
1878
- _$spread(_el$98, _$mergeProps({
1896
+ var _el$94 = _$getNextElement(_tmpl$25);
1897
+ _$spread(_el$94, _$mergeProps({
1879
1898
  get href() {
1880
1899
  return props.href;
1881
1900
  }
@@ -1884,9 +1903,9 @@ const AppWorkspaceSidebarIconAction = props => {
1884
1903
  return props.onClick;
1885
1904
  }
1886
1905
  }), false, true);
1887
- _$insert(_el$98, content);
1906
+ _$insert(_el$94, content);
1888
1907
  _$runHydrationEvents();
1889
- return _el$98;
1908
+ return _el$94;
1890
1909
  })();
1891
1910
  return _$createComponent(Link, _$mergeProps({
1892
1911
  get href() {
@@ -1924,12 +1943,12 @@ function AppWorkspaceHead(props) {
1924
1943
  // A nested workspace is part of a page that already shows its title.
1925
1944
  const trail = props.nested ? () => undefined : usePageTrail();
1926
1945
  return (() => {
1927
- var _el$99 = _$getNextElement(_tmpl$45),
1928
- _el$101 = _el$99.firstChild,
1929
- [_el$102, _co$15] = _$getNextMarker(_el$101.nextSibling),
1930
- _el$103 = _el$102.nextSibling,
1931
- [_el$104, _co$16] = _$getNextMarker(_el$103.nextSibling);
1932
- _$insert(_el$99, _$createComponent(IconButton, {
1946
+ var _el$95 = _$getNextElement(_tmpl$47),
1947
+ _el$97 = _el$95.firstChild,
1948
+ [_el$98, _co$13] = _$getNextMarker(_el$97.nextSibling),
1949
+ _el$99 = _el$98.nextSibling,
1950
+ [_el$100, _co$14] = _$getNextMarker(_el$99.nextSibling);
1951
+ _$insert(_el$95, _$createComponent(IconButton, {
1933
1952
  "class": "k2b-app-workspace__head-toggle",
1934
1953
  get label() {
1935
1954
  return messages().showNavigation;
@@ -1940,10 +1959,10 @@ function AppWorkspaceHead(props) {
1940
1959
  "aria-expanded": "false",
1941
1960
  "data-app-workspace-sidebar-toggle": "",
1942
1961
  get children() {
1943
- return _$getNextElement(_tmpl$44);
1962
+ return _$getNextElement(_tmpl$46);
1944
1963
  }
1945
- }), _el$102, _co$15);
1946
- _$insert(_el$99, _$createComponent(Show, {
1964
+ }), _el$98, _co$13);
1965
+ _$insert(_el$95, _$createComponent(Show, {
1947
1966
  get when() {
1948
1967
  return trail();
1949
1968
  },
@@ -1954,14 +1973,14 @@ function AppWorkspaceHead(props) {
1954
1973
  as: "p",
1955
1974
  fallback: true
1956
1975
  }), (() => {
1957
- var _el$105 = _$getNextElement(_tmpl$46);
1958
- _$setAttribute(_el$105, "data-k2b-server", isServer ? "" : undefined);
1959
- _$insert(_el$105, () => current().title);
1960
- return _el$105;
1976
+ var _el$101 = _$getNextElement(_tmpl$48);
1977
+ _$setAttribute(_el$101, "data-k2b-server", isServer ? "" : undefined);
1978
+ _$insert(_el$101, () => current().title);
1979
+ return _el$101;
1961
1980
  })()]
1962
- }), _el$104, _co$16);
1963
- _$effect(() => _$setAttribute(_el$99, "data-trail", trail()?.ancestors.length ? "up" : trail() ? "title" : undefined));
1964
- return _el$99;
1981
+ }), _el$100, _co$14);
1982
+ _$effect(() => _$setAttribute(_el$95, "data-trail", trail()?.ancestors.length ? "up" : trail() ? "title" : undefined));
1983
+ return _el$95;
1965
1984
  })();
1966
1985
  }
1967
1986
  const AppWorkspace = props => {
@@ -1996,31 +2015,31 @@ const AppWorkspace = props => {
1996
2015
  return _$createComponent(WorkspaceContext.Provider, {
1997
2016
  value: workspace,
1998
2017
  get children() {
1999
- var _el$106 = _$getNextElement(_tmpl$47),
2000
- _el$107 = _el$106.firstChild,
2001
- [_el$108, _co$17] = _$getNextMarker(_el$107.nextSibling),
2002
- _el$109 = _el$108.nextSibling,
2003
- [_el$110, _co$18] = _$getNextMarker(_el$109.nextSibling);
2018
+ var _el$102 = _$getNextElement(_tmpl$49),
2019
+ _el$103 = _el$102.firstChild,
2020
+ [_el$104, _co$15] = _$getNextMarker(_el$103.nextSibling),
2021
+ _el$105 = _el$104.nextSibling,
2022
+ [_el$106, _co$16] = _$getNextMarker(_el$105.nextSibling);
2004
2023
  var _ref$6 = root;
2005
- typeof _ref$6 === "function" ? _$use(_ref$6, _el$106) : root = _el$106;
2006
- _$insert(_el$106, _$createComponent(AppWorkspaceHead, {
2024
+ typeof _ref$6 === "function" ? _$use(_ref$6, _el$102) : root = _el$102;
2025
+ _$insert(_el$102, _$createComponent(AppWorkspaceHead, {
2007
2026
  sidebarId: sidebarId,
2008
2027
  nested: nested
2009
- }), _el$108, _co$17);
2010
- _$insert(_el$106, () => props.children, _el$110, _co$18);
2028
+ }), _el$104, _co$15);
2029
+ _$insert(_el$102, () => props.children, _el$106, _co$16);
2011
2030
  _$effect(_p$ => {
2012
- var _v$76 = `k2b-app-workspace ${props.class ?? ""}`,
2013
- _v$77 = props.mobileSurface,
2014
- _v$78 = props.flat ? "true" : undefined,
2015
- _v$79 = initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed),
2016
- _v$80 = props.resizable === false ? "false" : "true",
2017
- _v$81 = appWorkspaceLayoutStyle(initialLayoutState());
2018
- _v$76 !== _p$.e && _$className(_el$106, _p$.e = _v$76);
2019
- _v$77 !== _p$.t && _$setAttribute(_el$106, "data-mobile-surface", _p$.t = _v$77);
2020
- _v$78 !== _p$.a && _$setAttribute(_el$106, "data-flat", _p$.a = _v$78);
2021
- _v$79 !== _p$.o && _$setAttribute(_el$106, "data-sidebar-collapsed", _p$.o = _v$79);
2022
- _v$80 !== _p$.i && _$setAttribute(_el$106, "data-workspace-resizable", _p$.i = _v$80);
2023
- _p$.n = _$style(_el$106, _v$81, _p$.n);
2031
+ var _v$78 = `k2b-app-workspace ${props.class ?? ""}`,
2032
+ _v$79 = props.mobileSurface,
2033
+ _v$80 = props.flat ? "true" : undefined,
2034
+ _v$81 = initialLayoutState()?.sidebarCollapsed === undefined ? undefined : String(initialLayoutState()?.sidebarCollapsed),
2035
+ _v$82 = props.resizable === false ? "false" : "true",
2036
+ _v$83 = appWorkspaceLayoutStyle(initialLayoutState());
2037
+ _v$78 !== _p$.e && _$className(_el$102, _p$.e = _v$78);
2038
+ _v$79 !== _p$.t && _$setAttribute(_el$102, "data-mobile-surface", _p$.t = _v$79);
2039
+ _v$80 !== _p$.a && _$setAttribute(_el$102, "data-flat", _p$.a = _v$80);
2040
+ _v$81 !== _p$.o && _$setAttribute(_el$102, "data-sidebar-collapsed", _p$.o = _v$81);
2041
+ _v$82 !== _p$.i && _$setAttribute(_el$102, "data-workspace-resizable", _p$.i = _v$82);
2042
+ _p$.n = _$style(_el$102, _v$83, _p$.n);
2024
2043
  return _p$;
2025
2044
  }, {
2026
2045
  e: undefined,
@@ -2030,7 +2049,7 @@ const AppWorkspace = props => {
2030
2049
  i: undefined,
2031
2050
  n: undefined
2032
2051
  });
2033
- return _el$106;
2052
+ return _el$102;
2034
2053
  }
2035
2054
  });
2036
2055
  }
@@ -2045,10 +2064,10 @@ AppWorkspace.LayoutStateProvider = props => _$createComponent(LayoutStateContext
2045
2064
  }
2046
2065
  });
2047
2066
  AppWorkspace.Content = props => (() => {
2048
- var _el$111 = _$getNextElement(_tmpl$2);
2049
- _$insert(_el$111, () => props.children);
2050
- _$effect(() => _$className(_el$111, `k2b-app-workspace__content ${props.class ?? ""}`));
2051
- return _el$111;
2067
+ var _el$107 = _$getNextElement(_tmpl$2);
2068
+ _$insert(_el$107, () => props.children);
2069
+ _$effect(() => _$className(_el$107, `k2b-app-workspace__content ${props.class ?? ""}`));
2070
+ return _el$107;
2052
2071
  })();
2053
2072
  AppWorkspace.Main = AppWorkspaceMain;
2054
2073
  AppWorkspace.MainPane = AppWorkspaceMainPane;
@@ -2056,6 +2075,7 @@ AppWorkspace.Detail = AppWorkspaceDetail;
2056
2075
  AppWorkspace.BottomDrawer = AppWorkspaceBottomDrawer;
2057
2076
  AppWorkspace.Sidebar = AppWorkspaceSidebar;
2058
2077
  AppWorkspace.SidebarDesktop = AppWorkspaceSidebarDesktop;
2078
+ AppWorkspace.SidebarSwitcher = AppWorkspaceSidebarSwitcher;
2059
2079
  AppWorkspace.SidebarSection = AppWorkspaceSidebarSection;
2060
2080
  AppWorkspace.SidebarBody = AppWorkspaceSidebarBody;
2061
2081
  AppWorkspace.SidebarFooter = AppWorkspaceSidebarFooter;