@k2b/ui 0.48.0 → 0.49.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 (46) hide show
  1. package/dist/browser/actions/CopyButton.js +26 -18
  2. package/dist/browser/actions/CopyButton.js.map +1 -1
  3. package/dist/browser/feedback/prompt-confirm.js +7 -4
  4. package/dist/browser/feedback/prompt-confirm.js.map +1 -1
  5. package/dist/browser/feedback/prompts.js +3 -3
  6. package/dist/browser/feedback/prompts.js.map +1 -1
  7. package/dist/browser/inputs/NumberInput.js +17 -5
  8. package/dist/browser/inputs/NumberInput.js.map +1 -1
  9. package/dist/browser/layout/AppWorkspace.js +574 -522
  10. package/dist/browser/layout/AppWorkspace.js.map +1 -1
  11. package/dist/browser/layout/MobileShell.js +26 -0
  12. package/dist/browser/layout/MobileShell.js.map +1 -1
  13. package/dist/browser/layout/index.js +1 -0
  14. package/dist/browser/layout/index.js.map +1 -1
  15. package/dist/browser/layout/sheet-handle.js +155 -0
  16. package/dist/browser/layout/sheet-handle.js.map +1 -0
  17. package/dist/browser/surfaces/NoticeCard.js +48 -29
  18. package/dist/browser/surfaces/NoticeCard.js.map +1 -1
  19. package/dist/ssr/actions/CopyButton.js +13 -8
  20. package/dist/ssr/actions/CopyButton.js.map +1 -1
  21. package/dist/ssr/feedback/prompt-confirm.js +7 -4
  22. package/dist/ssr/feedback/prompt-confirm.js.map +1 -1
  23. package/dist/ssr/feedback/prompts.js +3 -3
  24. package/dist/ssr/feedback/prompts.js.map +1 -1
  25. package/dist/ssr/inputs/NumberInput.js +17 -5
  26. package/dist/ssr/inputs/NumberInput.js.map +1 -1
  27. package/dist/ssr/layout/AppWorkspace.js +152 -114
  28. package/dist/ssr/layout/AppWorkspace.js.map +1 -1
  29. package/dist/ssr/layout/MobileShell.js +26 -0
  30. package/dist/ssr/layout/MobileShell.js.map +1 -1
  31. package/dist/ssr/layout/index.js +1 -0
  32. package/dist/ssr/layout/index.js.map +1 -1
  33. package/dist/ssr/layout/sheet-handle.js +155 -0
  34. package/dist/ssr/layout/sheet-handle.js.map +1 -0
  35. package/dist/ssr/surfaces/NoticeCard.js +25 -10
  36. package/dist/ssr/surfaces/NoticeCard.js.map +1 -1
  37. package/dist/styles.css +1 -1
  38. package/dist/types/feedback/prompt-confirm.d.ts +3 -1
  39. package/dist/types/feedback/prompts.d.ts +2 -2
  40. package/dist/types/inputs/NumberInput.d.ts +1 -1
  41. package/dist/types/layout/AppWorkspace.d.ts +16 -1
  42. package/dist/types/layout/MobileShell.d.ts +5 -0
  43. package/dist/types/layout/index.d.ts +2 -1
  44. package/dist/types/layout/sheet-handle.d.ts +21 -0
  45. package/dist/types/surfaces/NoticeCard.d.ts +5 -2
  46. package/package.json +1 -1
@@ -9,63 +9,66 @@ 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
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 = ["<div class=\"k2b-app-workspace__level-body\"", ">", "</div>"],
19
- _tmpl$0 = "<i class=\"ti ti-chevron-left\" aria-hidden=\"true\"></i>",
20
- _tmpl$1 = ["<i", " 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", " aria-hidden=\"true\">", "</span>"],
36
- _tmpl$25 = ["<span class=\"k2b-app-workspace__sidebar-item-context-meta\">", "</span>"],
37
- _tmpl$26 = ["<span class=\"k2b-app-workspace__sidebar-item-context\"><span class=\"k2b-app-workspace__sidebar-item-context-label k2b-truncate-fade\">", "</span>", "</span>"],
38
- _tmpl$27 = ["<span class=\"k2b-app-workspace__sidebar-item-description k2b-truncate-fade\">", "</span>"],
39
- _tmpl$28 = ["<span class=\"k2b-app-workspace__sidebar-item-note k2b-truncate-fade\"", ">", "</span>"],
40
- _tmpl$29 = ["<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>"],
41
- _tmpl$30 = ["<span class=\"k2b-app-workspace__sidebar-item-meta\"", ">", "</span>"],
42
- _tmpl$31 = ["<i", "></i>"],
43
- _tmpl$32 = ["<a", " class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</a>"],
44
- _tmpl$33 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</button>"],
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 class=\"k2b-app-workspace__sidebar-item-description k2b-truncate-fade\">", "</span></span>"],
46
- _tmpl$35 = ["<span class=\"", "\"", ">", "</span>"],
47
- _tmpl$36 = ["<span class=\"k2b-app-workspace__nav-tree-toggle\" data-k2b-nav-tree-toggle aria-hidden=\"true\"><i class=\"", "\"></i></span>"],
48
- _tmpl$37 = ["<span class=\"k2b-app-workspace__sidebar-item-label\"", "><span class=\"k2b-app-workspace__sidebar-item-label-text k2b-truncate-fade-lines\">", "</span></span>"],
49
- _tmpl$38 = ["<div class=\"k2b-app-workspace__nav-tree-group\" role=\"group\">", "</div>"],
50
- _tmpl$39 = ["<div class=\"k2b-app-workspace__nav-tree-node\" role=\"treeitem\"", " style=\"", "\">", "", "</div>"],
51
- _tmpl$40 = ["<div class=\"", "\" role=\"tree\"", ">", "</div>"],
52
- _tmpl$41 = ["<div class=\"k2b-app-workspace__sidebar-icon-grid\"", ">", "</div>"],
53
- _tmpl$42 = "<i class=\"ti ti-chevron-down k2b-app-workspace__head-primary-chevron\" aria-hidden=\"true\"></i>",
54
- _tmpl$43 = ["<span class=\"k2b-app-workspace__head-primary-label\">", "", "</span>"],
55
- _tmpl$44 = "<i class=\"ti ti-layout-sidebar\" aria-hidden=\"true\"></i>",
56
- _tmpl$45 = ["<div class=\"k2b-app-workspace__head-views\">", "</div>"],
57
- _tmpl$46 = ["<div class=\"k2b-app-workspace__head-filters\" role=\"group\"", ">", "", "</div>"],
58
- _tmpl$47 = ["<span class=\"k2b-app-workspace__head-count\"><span>", "</span></span>"],
59
- _tmpl$48 = ["<div class=\"k2b-app-workspace__head-actions\">", "", "</div>"],
60
- _tmpl$49 = ["<div class=\"k2b-app-workspace__head\"", ">", "<div class=\"k2b-app-workspace__head-lead\">", "", "", "", "", "</div>", "</div>"],
61
- _tmpl$50 = ["<h1 class=\"k2b-app-workspace__head-heading\" data-k2b-page-trail-title", ">", "</h1>"],
62
- _tmpl$51 = ["<div class=\"", "\" data-k2b-app-workspace", " style=\"", "\">", "</div>"],
63
- _tmpl$52 = ["<div class=\"", "\">", "</div>"];
12
+ _tmpl$3 = ["<span class=\"k2b-truncate-fade\">", "</span>"],
13
+ _tmpl$4 = ["<p class=\"k2b-truncate-fade\">", "</p>"],
14
+ _tmpl$5 = ["<div class=\"k2b-app-workspace__level-actions\">", "</div>"],
15
+ _tmpl$6 = ["<header class=\"k2b-app-workspace__level-head\">", "<div class=\"k2b-app-workspace__level-title\"><h2 tabindex=\"-1\"", ">", "</h2>", "", "</div>", "</header>"],
16
+ _tmpl$7 = ["<button type=\"button\" class=\"k2b-app-workspace__level-switch\" aria-haspopup=\"menu\" aria-label=\"", "\">", "<i class=\"ti ti-chevron-down k2b-app-workspace__level-switch-chevron\" aria-hidden=\"true\"></i></button>"],
17
+ _tmpl$8 = ["<style>", "</style>"],
18
+ _tmpl$9 = ["<div class=\"k2b-app-workspace__main-primary\" data-workspace-main-region=\"main\"", ">", "</div>"],
19
+ _tmpl$0 = ["<section", " class=\"", "\"", " style=\"", "\">", "</section>"],
20
+ _tmpl$1 = ["<div class=\"k2b-app-workspace__level-body\"", ">", "</div>"],
21
+ _tmpl$10 = "<i class=\"ti ti-chevron-left\" aria-hidden=\"true\"></i>",
22
+ _tmpl$11 = ["<i", " aria-hidden=\"true\"></i>"],
23
+ _tmpl$12 = ["<aside", " class=\"", "\"", "", " style=\"", "\"><button type=\"button\" class=\"k2b-app-workspace__detail-grabber\"", " aria-pressed=\"false\"><span aria-hidden=\"true\"></span></button>", "</aside>"],
24
+ _tmpl$13 = ["<aside", " class=\"", "\"", "", " style=\"", "\">", "</aside>"],
25
+ _tmpl$14 = ["<nav class=\"k2b-app-workspace__sidebar-sheet\"", " style=\"", "\">", "</nav>"],
26
+ _tmpl$15 = ["<div class=\"k2b-app-workspace__sidebar-desktop\"", ">", "</div>"],
27
+ _tmpl$16 = ["<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>"],
28
+ _tmpl$17 = ["<script>", "</script>"],
29
+ _tmpl$18 = ["<span aria-hidden=\"true\"><i", "></i></span>"],
30
+ _tmpl$19 = ["<span class=\"k2b-app-workspace__sidebar-section-count\">", "</span>"],
31
+ _tmpl$20 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-section-toggle\"", ">", "<i", " aria-hidden=\"true\"></i></button>"],
32
+ _tmpl$21 = ["<div class=\"k2b-app-workspace__sidebar-section-actions\">", "</div>"],
33
+ _tmpl$22 = ["<header class=\"k2b-app-workspace__sidebar-section-header\">", "", "</header>"],
34
+ _tmpl$23 = ["<div", "", " class=\"k2b-app-workspace__sidebar-section-content\">", "</div>"],
35
+ _tmpl$24 = ["<h2>", "</h2>"],
36
+ _tmpl$25 = ["<div class=\"k2b-app-workspace__sidebar-item-actions\"", ">", "</div>"],
37
+ _tmpl$26 = ["<span", " aria-hidden=\"true\">", "</span>"],
38
+ _tmpl$27 = ["<span class=\"k2b-app-workspace__sidebar-item-context-meta\">", "</span>"],
39
+ _tmpl$28 = ["<span class=\"k2b-app-workspace__sidebar-item-context\"><span class=\"k2b-app-workspace__sidebar-item-context-label k2b-truncate-fade\">", "</span>", "</span>"],
40
+ _tmpl$29 = ["<span class=\"k2b-app-workspace__sidebar-item-description k2b-truncate-fade\">", "</span>"],
41
+ _tmpl$30 = ["<span class=\"k2b-app-workspace__sidebar-item-note k2b-truncate-fade\"", ">", "</span>"],
42
+ _tmpl$31 = ["<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>"],
43
+ _tmpl$32 = ["<span class=\"k2b-app-workspace__sidebar-item-meta\"", ">", "</span>"],
44
+ _tmpl$33 = ["<i", "></i>"],
45
+ _tmpl$34 = ["<a", " class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</a>"],
46
+ _tmpl$35 = ["<button type=\"button\" class=\"k2b-app-workspace__sidebar-item-action\"", ">", "</button>"],
47
+ _tmpl$36 = ["<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>"],
48
+ _tmpl$37 = ["<span class=\"", "\"", ">", "</span>"],
49
+ _tmpl$38 = ["<span class=\"k2b-app-workspace__nav-tree-toggle\" data-k2b-nav-tree-toggle aria-hidden=\"true\"><i class=\"", "\"></i></span>"],
50
+ _tmpl$39 = ["<span class=\"k2b-app-workspace__sidebar-item-label\"", "><span class=\"k2b-app-workspace__sidebar-item-label-text k2b-truncate-fade-lines\">", "</span></span>"],
51
+ _tmpl$40 = ["<div class=\"k2b-app-workspace__nav-tree-group\" role=\"group\">", "</div>"],
52
+ _tmpl$41 = ["<div class=\"k2b-app-workspace__nav-tree-node\" role=\"treeitem\"", " style=\"", "\">", "", "</div>"],
53
+ _tmpl$42 = ["<div class=\"", "\" role=\"tree\"", ">", "</div>"],
54
+ _tmpl$43 = ["<div class=\"k2b-app-workspace__sidebar-icon-grid\"", ">", "</div>"],
55
+ _tmpl$44 = "<i class=\"ti ti-chevron-down k2b-app-workspace__head-primary-chevron\" aria-hidden=\"true\"></i>",
56
+ _tmpl$45 = ["<span class=\"k2b-app-workspace__head-primary-label\">", "", "</span>"],
57
+ _tmpl$46 = "<i class=\"ti ti-layout-sidebar\" aria-hidden=\"true\"></i>",
58
+ _tmpl$47 = ["<div class=\"k2b-app-workspace__head-views\">", "</div>"],
59
+ _tmpl$48 = ["<div class=\"k2b-app-workspace__head-filters\" role=\"group\"", ">", "", "</div>"],
60
+ _tmpl$49 = ["<span class=\"k2b-app-workspace__head-count\"><span>", "</span></span>"],
61
+ _tmpl$50 = ["<div class=\"k2b-app-workspace__head-actions\">", "", "</div>"],
62
+ _tmpl$51 = ["<div class=\"k2b-app-workspace__head\"", ">", "<div class=\"k2b-app-workspace__head-lead\">", "", "", "", "", "</div>", "</div>"],
63
+ _tmpl$52 = ["<h1 class=\"k2b-app-workspace__head-heading\" data-k2b-page-trail-title", ">", "</h1>"],
64
+ _tmpl$53 = ["<div class=\"", "\" data-k2b-app-workspace", " style=\"", "\">", "</div>"],
65
+ _tmpl$54 = ["<div class=\"", "\">", "</div>"];
64
66
  import { AppWorkspaceSidebarItemStatus } from "./AppWorkspaceSidebarItemStatus";
65
67
  import { Link } from "@k2b/ssr/nav";
66
68
  import { children, createContext, createEffect, createMemo, createRoot, createSignal, createUniqueId, For, getOwner, mergeProps, on, onCleanup, onMount, Show, useContext } from "solid-js";
67
69
  import { Dynamic, isServer } from "solid-js/web";
68
70
  import { Button, ButtonLink, IconButton, IconButtonLink } from "../actions/Button";
71
+ import { Dropdown } from "../actions/Dropdown";
69
72
  import { useFilterMessages } from "../actions/filter-messages";
70
73
  import { dialogCore } from "../feedback/dialog-core";
71
74
  import { Tooltip } from "../feedback/Tooltip";
@@ -139,6 +142,8 @@ function ResizeHandle(props) {
139
142
  return _$ssr(_tmpl$, _$ssrAttribute("aria-label", _$escape(props.label ?? (props.kind === "sidebar" ? workspaceMessages().resizeNavigation : props.kind === "pane" ? workspaceMessages().resizeWorkspacePane : props.kind === "detail" ? workspaceMessages().resizeDetailPanel : workspaceMessages().resizeBottomDrawer), true), false) + _$ssrAttribute("aria-controls", _$escape(props.controls, true), false) + _$ssrAttribute("aria-orientation", props.kind === "drawer" ? "horizontal" : "vertical", false) + _$ssrAttribute("aria-valuemin", _$escape(props.minSize, true), false) + _$ssrAttribute("aria-valuemax", _$escape(props.maxSize, true), false) + _$ssrAttribute("aria-valuenow", _$escape(initialSize(), true), false) + _$ssrAttribute("data-workspace-level-shown", _$escape(props.levelShown, true), false) + _$ssrAttribute("data-app-workspace-resize", _$escape(props.kind, true), false) + _$ssrAttribute("data-workspace-panel-id", _$escape(props.panelId, true), false) + _$ssrAttribute("data-workspace-resize-edge", _$escape(props.edge, true), false) + _$ssrAttribute("data-workspace-resize-shadow", props.shadow ? "true" : _$escape(undefined, true), false) + _$ssrAttribute("data-workspace-default-size", _$escape(appWorkspaceWidthToken(props.defaultSize), true), false) + _$ssrAttribute("data-workspace-min-size", _$escape(props.minSize, true), false) + _$ssrAttribute("data-workspace-max-size", _$escape(props.maxSize, true), false), _$ssrStyle(props.style));
140
143
  }
141
144
 
145
+ /** The places a level title switches between; `label` names the menu, such as "Switch Space". */
146
+
142
147
  /** One requested place for an item among its unchanged siblings. */
143
148
 
144
149
  const modeAttrs = mode => mode && mode !== "always" ? {
@@ -174,26 +179,55 @@ function LevelHead(props) {
174
179
  const description = children(() => props.description);
175
180
  const actions = children(() => props.actions);
176
181
  const lead = children(() => props.lead);
177
- return _$ssr(_tmpl$5, _$escape(props.children), _$escape(_$createComponent(Show, {
182
+ let switchButton;
183
+ const title = () => [_$createComponent(Show, {
178
184
  get when() {
179
185
  return lead();
180
186
  },
181
187
  get children() {
182
188
  return _$ssr(_tmpl$2, _$escape(lead()));
183
189
  }
184
- })), _$escape(props.label), _$escape(_$createComponent(Show, {
190
+ }), _$ssr(_tmpl$3, _$escape(props.label))];
191
+ return _$ssr(_tmpl$6, _$escape(props.children), _$ssrAttribute("data-switcher", props.switcher ? "" : _$escape(undefined, true), false), _$escape(_$createComponent(Show, {
192
+ get when() {
193
+ return props.switcher;
194
+ },
195
+ get fallback() {
196
+ return title();
197
+ },
198
+ children: switcher => _$ssr(_tmpl$7, `${_$escape(props.label, true)}, ${_$escape(switcher().label, true)}`, _$escape(title()))
199
+ })), _$escape(_$createComponent(Show, {
200
+ get when() {
201
+ return props.switcher;
202
+ },
203
+ children: switcher => _$createComponent(Dropdown, {
204
+ get items() {
205
+ return switcher().items;
206
+ },
207
+ get label() {
208
+ return switcher().label;
209
+ },
210
+ get search() {
211
+ return switcher().search;
212
+ },
213
+ phone: "sheet",
214
+ variant: "touch",
215
+ position: "bottom-left",
216
+ attach: () => switchButton
217
+ })
218
+ })), _$escape(_$createComponent(Show, {
185
219
  get when() {
186
220
  return description();
187
221
  },
188
222
  get children() {
189
- return _$ssr(_tmpl$3, _$escape(description()));
223
+ return _$ssr(_tmpl$4, _$escape(description()));
190
224
  }
191
225
  })), _$escape(_$createComponent(Show, {
192
226
  get when() {
193
227
  return actions();
194
228
  },
195
229
  get children() {
196
- return _$ssr(_tmpl$4, _$escape(actions()));
230
+ return _$ssr(_tmpl$5, _$escape(actions()));
197
231
  }
198
232
  })));
199
233
  }
@@ -312,7 +346,7 @@ function AppWorkspaceMain(props) {
312
346
  get when() {
313
347
  return minWidth();
314
348
  },
315
- children: value => _$ssr(_tmpl$6, minWidthRule(value()))
349
+ children: value => _$ssr(_tmpl$8, minWidthRule(value()))
316
350
  }), _$ssrElement("div", _$mergeProps({
317
351
  get ["class"]() {
318
352
  return `k2b-app-workspace__main ${hasPanes() ? "has-panes" : ""} ${props.class ?? ""}`;
@@ -359,7 +393,7 @@ function AppWorkspaceMain(props) {
359
393
  return props.mobilePane ?? (anchor?.type === "pane" ? anchor.slot.props.id : "main");
360
394
  };
361
395
  if (region.type === "primary") {
362
- return _$ssr(_tmpl$7, _$ssrAttribute("data-workspace-mobile-active", activeMobilePane() === "main" ? "true" : "false", false), _$escape(region.children));
396
+ return _$ssr(_tmpl$9, _$ssrAttribute("data-workspace-mobile-active", activeMobilePane() === "main" ? "true" : "false", false), _$escape(region.children));
363
397
  }
364
398
  const pane = region.slot;
365
399
  const levelIndex = () => levels().indexOf(pane) + 1;
@@ -415,7 +449,7 @@ function AppWorkspaceMain(props) {
415
449
  get children() {
416
450
  return handle();
417
451
  }
418
- }), _$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-heading", levelsMode() ? _$escape(pane.props.heading, true) : _$escape(undefined, 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(nonEmptyStyle({
452
+ }), _$ssr(_tmpl$0, _$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-heading", levelsMode() ? _$escape(pane.props.heading, true) : _$escape(undefined, 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(nonEmptyStyle({
419
453
  ...(isAnchor() ? {} : {
420
454
  // A stored width keeps to this pane's limits before the controller attaches.
421
455
  "--k2b-workspace-panel-size": `clamp(${minSize()}px, var(${variable}, ${appWorkspaceWidthCss(defaultSize(), "var(--k2b-workspace-width)")}), ${maxSize()}px)`,
@@ -439,6 +473,9 @@ function AppWorkspaceMain(props) {
439
473
  get lead() {
440
474
  return pane.props.lead;
441
475
  },
476
+ get switcher() {
477
+ return pane.props.switcher;
478
+ },
442
479
  get children() {
443
480
  return _$createComponent(Show, {
444
481
  get when() {
@@ -467,7 +504,7 @@ function AppWorkspaceMain(props) {
467
504
  return props.onLevelNavigate ? navigateBack : undefined;
468
505
  },
469
506
  get children() {
470
- return _$ssr(_tmpl$0);
507
+ return _$ssr(_tmpl$10);
471
508
  }
472
509
  });
473
510
  }
@@ -484,12 +521,12 @@ function AppWorkspaceMain(props) {
484
521
  });
485
522
  },
486
523
  get children() {
487
- return _$ssr(_tmpl$0);
524
+ return _$ssr(_tmpl$10);
488
525
  }
489
526
  })
490
527
  });
491
528
  }
492
- }), _$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, {
529
+ }), _$ssr(_tmpl$1, _$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, {
493
530
  get when() {
494
531
  return _$memo(() => !!resizable())() && before();
495
532
  },
@@ -560,7 +597,7 @@ function AppWorkspaceDetail(props) {
560
597
  aside?.removeEventListener(APP_WORKSPACE_DETAIL_STEP_EVENT, step);
561
598
  });
562
599
  });
563
- return [_$ssr(_tmpl$6, workspaceRule()), _$createComponent(Show, {
600
+ return [_$ssr(_tmpl$8, workspaceRule()), _$createComponent(Show, {
564
601
  get when() {
565
602
  return props.toggle !== false;
566
603
  },
@@ -581,7 +618,7 @@ function AppWorkspaceDetail(props) {
581
618
  },
582
619
  "class": "k2b-app-workspace__detail-toggle k2b-details-toggle",
583
620
  get children() {
584
- return [_$ssr(_tmpl$1, _$ssrAttribute("class", _$escape(DETAILS_ICON, true), false)), workspaceMessages().details];
621
+ return [_$ssr(_tmpl$11, _$ssrAttribute("class", _$escape(DETAILS_ICON, true), false)), workspaceMessages().details];
585
622
  }
586
623
  });
587
624
  }
@@ -614,7 +651,7 @@ function AppWorkspaceDetail(props) {
614
651
  }
615
652
  });
616
653
  }
617
- }), _$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({
654
+ }), _$ssr(_tmpl$12, _$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({
618
655
  ...sizeStyle(),
619
656
  "view-transition-name": props.viewTransitionName
620
657
  }), _$ssrAttribute("aria-label", _$escape(workspaceMessages().detailFullHeight, true), false), _$escape(props.children))];
@@ -665,7 +702,7 @@ function AppWorkspaceBottomDrawer(props) {
665
702
  }
666
703
  });
667
704
  }
668
- }), _$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))];
705
+ }), _$ssr(_tmpl$13, _$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))];
669
706
  }
670
707
  function AppWorkspaceSidebar(props) {
671
708
  const rootResizable = useContext(ResizeContext);
@@ -755,7 +792,7 @@ function AppWorkspaceSidebar(props) {
755
792
  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.");
756
793
  return null;
757
794
  }
758
- return _$ssr(_tmpl$12, _$ssrAttribute("aria-label", _$escape(props.label, true), false), _$ssrStyle(accent), _$escape(resolved()));
795
+ return _$ssr(_tmpl$14, _$ssrAttribute("aria-label", _$escape(props.label, true), false), _$ssrStyle(accent), _$escape(resolved()));
759
796
  }
760
797
  });
761
798
  }
@@ -822,14 +859,14 @@ function AppWorkspaceSidebar(props) {
822
859
  return !props.hidden;
823
860
  },
824
861
  get children() {
825
- 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, {
862
+ return [_$ssr(_tmpl$15, _$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, {
826
863
  get when() {
827
864
  return stacked();
828
865
  },
829
866
  get children() {
830
- return [_$ssr(_tmpl$14, _$ssrAttribute("aria-expanded", _$escape(sheetOpen(), true), false) + _$ssrAttribute("aria-label", props.label ? _$escape(workspaceMessages().sidebarAllLabel({
867
+ return [_$ssr(_tmpl$16, _$ssrAttribute("aria-expanded", _$escape(sheetOpen(), true), false) + _$ssrAttribute("aria-label", props.label ? _$escape(workspaceMessages().sidebarAllLabel({
831
868
  label: props.label
832
- }), true) : _$escape(undefined, true), false), _$escape(workspaceMessages().sidebarAll)), _$ssr(_tmpl$15, CHIP_ROW_SCRIPT)];
869
+ }), true) : _$escape(undefined, true), false), _$escape(workspaceMessages().sidebarAll)), _$ssr(_tmpl$17, CHIP_ROW_SCRIPT)];
833
870
  }
834
871
  })];
835
872
  }
@@ -909,7 +946,7 @@ const AppWorkspaceSidebarBody = props => {
909
946
  get ["data-scroll-fade-mode"]() {
910
947
  return props.scrollFade !== false ? "both" : undefined;
911
948
  }
912
- }, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), _$escape(props.children), false), _$ssr(_tmpl$15, SIDEBAR_SCROLL_MEMORY_SCRIPT)];
949
+ }, () => scrollAttrs(props.scrollPreserveKey), () => modeAttrs(props.sidebarMode)), _$escape(props.children), false), _$ssr(_tmpl$17, SIDEBAR_SCROLL_MEMORY_SCRIPT)];
913
950
  };
914
951
  const AppWorkspaceSidebarFooter = props => _$ssrElement("footer", _$mergeProps({
915
952
  get ["class"]() {
@@ -925,14 +962,14 @@ const AppWorkspaceSidebarSection = props => {
925
962
  return props.icon;
926
963
  },
927
964
  get children() {
928
- return _$ssr(_tmpl$16, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
965
+ return _$ssr(_tmpl$18, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
929
966
  }
930
967
  }), props.title, _$createComponent(Show, {
931
968
  get when() {
932
969
  return props.count !== undefined;
933
970
  },
934
971
  get children() {
935
- return _$ssr(_tmpl$17, _$escape(props.count));
972
+ return _$ssr(_tmpl$19, _$escape(props.count));
936
973
  }
937
974
  })];
938
975
  return _$ssrElement("section", _$mergeProps({
@@ -947,7 +984,7 @@ const AppWorkspaceSidebarSection = props => {
947
984
  return props.title || props.actions;
948
985
  },
949
986
  get children() {
950
- return _$ssr(_tmpl$20, _$escape(_$createComponent(Show, {
987
+ return _$ssr(_tmpl$22, _$escape(_$createComponent(Show, {
951
988
  get when() {
952
989
  return props.collapsible;
953
990
  },
@@ -957,23 +994,23 @@ const AppWorkspaceSidebarSection = props => {
957
994
  return props.title;
958
995
  },
959
996
  get children() {
960
- return _$ssr(_tmpl$22, _$escape(title()));
997
+ return _$ssr(_tmpl$24, _$escape(title()));
961
998
  }
962
999
  });
963
1000
  },
964
1001
  get children() {
965
- 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));
1002
+ return _$ssr(_tmpl$20, _$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));
966
1003
  }
967
1004
  })), _$escape(_$createComponent(Show, {
968
1005
  get when() {
969
1006
  return props.actions;
970
1007
  },
971
1008
  get children() {
972
- return _$ssr(_tmpl$19, _$escape(props.actions));
1009
+ return _$ssr(_tmpl$21, _$escape(props.actions));
973
1010
  }
974
1011
  })));
975
1012
  }
976
- })), _$ssr(_tmpl$21, _$ssrAttribute("id", _$escape(id, true), false), _$ssrAttribute("hidden", !open(), true), _$escape(props.children))], false);
1013
+ })), _$ssr(_tmpl$23, _$ssrAttribute("id", _$escape(id, true), false), _$ssrAttribute("hidden", !open(), true), _$escape(props.children))], false);
977
1014
  };
978
1015
  const AppWorkspaceSidebarItemIcon = props => mergeProps({
979
1016
  kind: SIDEBAR_ITEM_ICON
@@ -987,7 +1024,7 @@ const AppWorkspaceSidebarItemMeta = props => mergeProps({
987
1024
  const AppWorkspaceSidebarItemAction = props => mergeProps({
988
1025
  kind: SIDEBAR_ITEM_ACTION
989
1026
  }, props);
990
- const AppWorkspaceSidebarItemActions = props => _$ssr(_tmpl$23, _$ssrAttribute("data-visibility", props.visibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(props.children));
1027
+ const AppWorkspaceSidebarItemActions = props => _$ssr(_tmpl$25, _$ssrAttribute("data-visibility", props.visibility === "hover" ? "hover" : _$escape(undefined, true), false), _$escape(props.children));
991
1028
  /**
992
1029
  * Hover actions overlay a row's end, so the label and count under them fade
993
1030
  * out while they show. The row measures how far the overlay reaches into its
@@ -1206,22 +1243,22 @@ function AppWorkspaceSidebarItem(props) {
1206
1243
  return iconContent() || icon();
1207
1244
  },
1208
1245
  get children() {
1209
- return _$ssr(_tmpl$24, _$ssrAttribute("class",
1246
+ return _$ssr(_tmpl$26, _$ssrAttribute("class",
1210
1247
  // An object row's own glyph sits in a soft chip of the app colour; custom content such as an avatar keeps
1211
1248
  // its own look.
1212
- props.variant === "object" && !iconContent() ? "k2b-app-workspace__sidebar-item-icon k2b-icon-tile" : "k2b-app-workspace__sidebar-item-icon", false), _$escape(iconContent() ?? _$ssr(_tmpl$31, _$ssrAttribute("class", _$escape(iconClass(icon()), true), false))));
1249
+ props.variant === "object" && !iconContent() ? "k2b-app-workspace__sidebar-item-icon k2b-icon-tile" : "k2b-app-workspace__sidebar-item-icon", false), _$escape(iconContent() ?? _$ssr(_tmpl$33, _$ssrAttribute("class", _$escape(iconClass(icon()), true), false))));
1213
1250
  }
1214
- }), _$ssr(_tmpl$29, _$escape(_$createComponent(Show, {
1251
+ }), _$ssr(_tmpl$31, _$escape(_$createComponent(Show, {
1215
1252
  get when() {
1216
1253
  return props.context || props.contextMeta;
1217
1254
  },
1218
1255
  get children() {
1219
- return _$ssr(_tmpl$26, _$escape(props.context), _$escape(_$createComponent(Show, {
1256
+ return _$ssr(_tmpl$28, _$escape(props.context), _$escape(_$createComponent(Show, {
1220
1257
  get when() {
1221
1258
  return props.contextMeta;
1222
1259
  },
1223
1260
  get children() {
1224
- return _$ssr(_tmpl$25, _$escape(props.contextMeta));
1261
+ return _$ssr(_tmpl$27, _$escape(props.contextMeta));
1225
1262
  }
1226
1263
  })));
1227
1264
  }
@@ -1230,21 +1267,21 @@ function AppWorkspaceSidebarItem(props) {
1230
1267
  return props.description;
1231
1268
  },
1232
1269
  get children() {
1233
- return _$ssr(_tmpl$27, _$escape(props.description));
1270
+ return _$ssr(_tmpl$29, _$escape(props.description));
1234
1271
  }
1235
1272
  })), _$escape(_$createComponent(Show, {
1236
1273
  get when() {
1237
1274
  return props.note;
1238
1275
  },
1239
1276
  get children() {
1240
- return _$ssr(_tmpl$28, _$ssrAttribute("data-tone", _$escape(props.noteTone ?? "neutral", true), false), _$escape(props.note));
1277
+ return _$ssr(_tmpl$30, _$ssrAttribute("data-tone", _$escape(props.noteTone ?? "neutral", true), false), _$escape(props.note));
1241
1278
  }
1242
1279
  }))), _$createComponent(Show, {
1243
1280
  get when() {
1244
1281
  return hasMeta();
1245
1282
  },
1246
1283
  get children() {
1247
- return _$ssr(_tmpl$30, _$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()));
1284
+ return _$ssr(_tmpl$32, _$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()));
1248
1285
  }
1249
1286
  })];
1250
1287
  const singleAction = () => {
@@ -1259,7 +1296,7 @@ function AppWorkspaceSidebarItem(props) {
1259
1296
  actionSlot()?.onSelect?.(event);
1260
1297
  props.onActionClick?.(event);
1261
1298
  };
1262
- const content = () => actionSlot()?.children ?? _$ssr(_tmpl$31, _$ssrAttribute("class", _$escape(iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots"), true), false));
1299
+ const content = () => actionSlot()?.children ?? _$ssr(_tmpl$33, _$ssrAttribute("class", _$escape(iconClass(actionSlot()?.icon ?? props.actionIcon, "ti-dots"), true), false));
1263
1300
  return _$createComponent(Show, {
1264
1301
  get when() {
1265
1302
  return Boolean(actionSlot() || props.actionIcon);
@@ -1270,10 +1307,10 @@ function AppWorkspaceSidebarItem(props) {
1270
1307
  return _$memo(() => !!actionSlot()?.href)() && !actionSlot()?.disabled;
1271
1308
  },
1272
1309
  get fallback() {
1273
- return _$ssr(_tmpl$33, _$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()));
1310
+ return _$ssr(_tmpl$35, _$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()));
1274
1311
  },
1275
1312
  get children() {
1276
- return _$ssr(_tmpl$32, _$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()));
1313
+ return _$ssr(_tmpl$34, _$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()));
1277
1314
  }
1278
1315
  });
1279
1316
  }
@@ -1582,31 +1619,31 @@ const AppWorkspaceNavTree = props => {
1582
1619
  get ["data-k2b-nav-tree-toggle"]() {
1583
1620
  return usesIconDisclosure() ? "" : undefined;
1584
1621
  }
1585
- }, () => iconAccessibility(item.iconLabel)), _$ssr(_tmpl$31, _$ssrAttribute("class", _$escape(iconClass(rowIcon()), true), false)), false);
1622
+ }, () => iconAccessibility(item.iconLabel)), _$ssr(_tmpl$33, _$ssrAttribute("class", _$escape(iconClass(rowIcon()), true), false)), false);
1586
1623
  }
1587
1624
  }), _$createComponent(Show, {
1588
1625
  get when() {
1589
1626
  return item.description !== undefined;
1590
1627
  },
1591
1628
  get fallback() {
1592
- return _$ssr(_tmpl$37, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label));
1629
+ return _$ssr(_tmpl$39, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label));
1593
1630
  },
1594
1631
  get children() {
1595
- return _$ssr(_tmpl$34, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label), _$escape(item.description));
1632
+ return _$ssr(_tmpl$36, _$ssrAttribute("data-label", typeof item.label === "string" ? _$escape(item.label, true) : _$escape(undefined, true), false), _$escape(item.label), _$escape(item.description));
1596
1633
  }
1597
1634
  }), _$createComponent(Show, {
1598
1635
  get when() {
1599
1636
  return item.meta !== undefined;
1600
1637
  },
1601
1638
  get children() {
1602
- return _$ssr(_tmpl$35, `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));
1639
+ return _$ssr(_tmpl$37, `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));
1603
1640
  }
1604
1641
  }), _$createComponent(Show, {
1605
1642
  get when() {
1606
1643
  return _$memo(() => !!hasChildren())() && !usesIconDisclosure();
1607
1644
  },
1608
1645
  get children() {
1609
- return _$ssr(_tmpl$36, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`);
1646
+ return _$ssr(_tmpl$38, `ti ${isExpanded(item.id) ? "ti-chevron-down" : "ti-chevron-right"}`);
1610
1647
  }
1611
1648
  })];
1612
1649
  const row = () => _$createComponent(AppWorkspaceSidebarRow, {
@@ -1717,12 +1754,12 @@ const AppWorkspaceNavTree = props => {
1717
1754
  endDrag();
1718
1755
  requestMove(target.move, false);
1719
1756
  };
1720
- return _$ssr(_tmpl$39, _$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, {
1757
+ return _$ssr(_tmpl$41, _$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, {
1721
1758
  get when() {
1722
1759
  return _$memo(() => !!hasChildren())() && isExpanded(item.id);
1723
1760
  },
1724
1761
  get children() {
1725
- return _$ssr(_tmpl$38, _$escape(renderItems(nested, depth + 1, item.id)));
1762
+ return _$ssr(_tmpl$40, _$escape(renderItems(nested, depth + 1, item.id)));
1726
1763
  }
1727
1764
  })));
1728
1765
  }
@@ -1747,7 +1784,7 @@ const AppWorkspaceNavTree = props => {
1747
1784
  doc?.removeEventListener("pointermove", forgetDrag, true);
1748
1785
  });
1749
1786
  });
1750
- return _$ssr(_tmpl$40, `k2b-app-workspace__nav-tree ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(props.ariaLabel, true), false), _$escape(renderItems(roots, 0)));
1787
+ return _$ssr(_tmpl$42, `k2b-app-workspace__nav-tree ${_$escape(props.class ?? "", true)}`, _$ssrAttribute("aria-label", _$escape(props.ariaLabel, true), false), _$escape(renderItems(roots, 0)));
1751
1788
  };
1752
1789
  AppWorkspaceNavTree.Item = AppWorkspaceNavTreeItem;
1753
1790
  const AppWorkspaceSidebarIconGrid = props => _$ssrElement("section", _$mergeProps({
@@ -1758,11 +1795,11 @@ const AppWorkspaceSidebarIconGrid = props => _$ssrElement("section", _$mergeProp
1758
1795
  get when() {
1759
1796
  return props.title;
1760
1797
  },
1761
- children: title => _$ssr(_tmpl$22, _$escape(title()))
1762
- })), _$ssr(_tmpl$41, _$ssrAttribute("data-columns", _$escape(props.columns ?? 2, true), false), _$escape(props.children))], false);
1798
+ children: title => _$ssr(_tmpl$24, _$escape(title()))
1799
+ })), _$ssr(_tmpl$43, _$ssrAttribute("data-columns", _$escape(props.columns ?? 2, true), false), _$escape(props.children))], false);
1763
1800
  const AppWorkspaceSidebarIconAction = props => {
1764
1801
  let target;
1765
- const content = _$ssr(_tmpl$1, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
1802
+ const content = _$ssr(_tmpl$11, _$ssrAttribute("class", _$escape(iconClass(props.icon), true), false));
1766
1803
  const attrs = () => ({
1767
1804
  ref: element => target = element,
1768
1805
  class: `k2b-app-workspace__sidebar-icon-action ${props.active ? "is-active" : ""}`,
@@ -1823,7 +1860,8 @@ const AppWorkspaceSidebarIconAction = props => {
1823
1860
  * host's page title with the way up (see `PageTitle`); the page's own
1824
1861
  * `PageTitle` takes its place. The visible title is no heading, because many
1825
1862
  * pages render their own `h1`. From 64 rem a sidebar that marks the current
1826
- * page names it already: the title and the way up hide, and only on a page
1863
+ * page, or the item a deeper page belongs to, names it already and links the
1864
+ * way up: the title and the way up hide, and only on a page
1827
1865
  * without its own `h1` its heading stays for assistive technology. With an
1828
1866
  * `AppWorkspace.Head` slot the row is always there and also carries the
1829
1867
  * views, the filters, the result count, and the actions; only its title
@@ -1852,19 +1890,19 @@ function AppWorkspaceHead(props) {
1852
1890
  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}}`;
1853
1891
  };
1854
1892
  const resetContent = () => filters().reset;
1855
- const primaryContent = () => [_$ssr(_tmpl$1, _$ssrAttribute("class", _$escape(props.head?.primary?.icon, true), false)), _$ssr(_tmpl$43, _$escape(props.head?.primary?.label), _$escape(_$createComponent(Show, {
1893
+ const primaryContent = () => [_$ssr(_tmpl$11, _$ssrAttribute("class", _$escape(props.head?.primary?.icon, true), false)), _$ssr(_tmpl$45, _$escape(props.head?.primary?.label), _$escape(_$createComponent(Show, {
1856
1894
  get when() {
1857
1895
  return props.head?.primary?.popup;
1858
1896
  },
1859
1897
  get children() {
1860
- return _$ssr(_tmpl$42);
1898
+ return _$ssr(_tmpl$44);
1861
1899
  }
1862
1900
  })))];
1863
- return _$ssr(_tmpl$49, _$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, {
1901
+ return _$ssr(_tmpl$51, _$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, {
1864
1902
  get when() {
1865
1903
  return mobilePane();
1866
1904
  },
1867
- children: pane => _$ssr(_tmpl$6, mobilePaneRule(pane()))
1905
+ children: pane => _$ssr(_tmpl$8, mobilePaneRule(pane()))
1868
1906
  })), _$escape(_$createComponent(IconButton, {
1869
1907
  "class": "k2b-app-workspace__head-toggle",
1870
1908
  get label() {
@@ -1876,7 +1914,7 @@ function AppWorkspaceHead(props) {
1876
1914
  "aria-expanded": "false",
1877
1915
  "data-app-workspace-sidebar-toggle": "",
1878
1916
  get children() {
1879
- return _$ssr(_tmpl$44);
1917
+ return _$ssr(_tmpl$46);
1880
1918
  }
1881
1919
  })), _$escape(_$createComponent(Show, {
1882
1920
  get when() {
@@ -1888,20 +1926,20 @@ function AppWorkspaceHead(props) {
1888
1926
  },
1889
1927
  as: "p",
1890
1928
  fallback: true
1891
- }), _$ssr(_tmpl$50, _$ssrAttribute("data-k2b-server", isServer ? "" : _$escape(undefined, true), false), _$escape(current().title))]
1929
+ }), _$ssr(_tmpl$52, _$ssrAttribute("data-k2b-server", isServer ? "" : _$escape(undefined, true), false), _$escape(current().title))]
1892
1930
  })), _$escape(_$createComponent(Show, {
1893
1931
  get when() {
1894
1932
  return resolvedViews.toArray().some(Boolean);
1895
1933
  },
1896
1934
  get children() {
1897
- return _$ssr(_tmpl$45, _$escape(resolvedViews()));
1935
+ return _$ssr(_tmpl$47, _$escape(resolvedViews()));
1898
1936
  }
1899
1937
  })), _$escape(_$createComponent(Show, {
1900
1938
  get when() {
1901
1939
  return resolvedFilters.toArray().some(Boolean) || props.head?.filtered;
1902
1940
  },
1903
1941
  get children() {
1904
- return _$ssr(_tmpl$46, _$ssrAttribute("aria-label", _$escape(filters().filters, true), false), _$escape(resolvedFilters()), _$escape(_$createComponent(Show, {
1942
+ return _$ssr(_tmpl$48, _$ssrAttribute("aria-label", _$escape(filters().filters, true), false), _$escape(resolvedFilters()), _$escape(_$createComponent(Show, {
1905
1943
  get when() {
1906
1944
  return props.head?.filtered;
1907
1945
  },
@@ -1948,14 +1986,14 @@ function AppWorkspaceHead(props) {
1948
1986
  return _$memo(() => !!props.head?.filtered)() && resolvedCount.toArray().some(value => value !== undefined && value !== null && value !== false);
1949
1987
  },
1950
1988
  get children() {
1951
- return _$ssr(_tmpl$47, _$escape(resolvedCount()));
1989
+ return _$ssr(_tmpl$49, _$escape(resolvedCount()));
1952
1990
  }
1953
1991
  })), _$escape(_$createComponent(Show, {
1954
1992
  get when() {
1955
1993
  return resolvedActions.toArray().some(Boolean) || props.head?.primary;
1956
1994
  },
1957
1995
  get children() {
1958
- return _$ssr(_tmpl$48, _$escape(resolvedActions()), _$escape(_$createComponent(Show, {
1996
+ return _$ssr(_tmpl$50, _$escape(resolvedActions()), _$escape(_$createComponent(Show, {
1959
1997
  get when() {
1960
1998
  return props.head?.primary;
1961
1999
  },
@@ -2061,7 +2099,7 @@ const AppWorkspace = props => {
2061
2099
  return _$createComponent(WorkspaceContext.Provider, {
2062
2100
  value: workspace,
2063
2101
  get children() {
2064
- return _$ssr(_tmpl$51, `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()));
2102
+ return _$ssr(_tmpl$53, `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()));
2065
2103
  }
2066
2104
  });
2067
2105
  }
@@ -2076,7 +2114,7 @@ AppWorkspace.LayoutStateProvider = props => _$createComponent(LayoutStateContext
2076
2114
  }
2077
2115
  });
2078
2116
  AppWorkspace.Head = AppWorkspaceHeadSlot;
2079
- AppWorkspace.Content = props => _$ssr(_tmpl$52, `k2b-app-workspace__content ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
2117
+ AppWorkspace.Content = props => _$ssr(_tmpl$54, `k2b-app-workspace__content ${_$escape(props.class ?? "", true)}`, _$escape(props.children));
2080
2118
  AppWorkspace.Main = AppWorkspaceMain;
2081
2119
  AppWorkspace.MainPane = AppWorkspaceMainPane;
2082
2120
  AppWorkspace.Detail = AppWorkspaceDetail;