@burdenoff/fe-libs 2026.927.3 → 2026.928.2

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 (44) hide show
  1. package/dist/chrome/SideNavigation.d.ts.map +1 -1
  2. package/dist/chrome/SideNavigation.js +71 -68
  3. package/dist/chrome/sideNavigation/sideNavEscape.d.ts +41 -0
  4. package/dist/chrome/sideNavigation/sideNavEscape.d.ts.map +1 -0
  5. package/dist/chrome/sideNavigation/sideNavEscape.js +8 -0
  6. package/dist/chrome/sideNavigation/useSideNavigationState.d.ts +8 -1
  7. package/dist/chrome/sideNavigation/useSideNavigationState.d.ts.map +1 -1
  8. package/dist/chrome/sideNavigation/useSideNavigationState.js +35 -23
  9. package/dist/shared/assistant/index.d.ts +1 -0
  10. package/dist/shared/assistant/index.d.ts.map +1 -1
  11. package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
  12. package/dist/shared/assistant/ui/AIAssistantPanel.js +82 -79
  13. package/dist/shared/assistant/ui/AssistantOverlay.d.ts.map +1 -1
  14. package/dist/shared/assistant/ui/AssistantOverlay.js +98 -96
  15. package/dist/shared/assistant/ui/assistantOverlayState.d.ts +31 -8
  16. package/dist/shared/assistant/ui/assistantOverlayState.d.ts.map +1 -1
  17. package/dist/shared/assistant/ui/assistantOverlayState.js +22 -16
  18. package/dist/shared/assistant/ui/panelOverlays.d.ts +31 -0
  19. package/dist/shared/assistant/ui/panelOverlays.d.ts.map +1 -1
  20. package/dist/shared/assistant/ui/panelOverlays.js +11 -8
  21. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.d.ts.map +1 -1
  22. package/dist/shared/assistant/ui/voice/AssistantVoiceSession.js +82 -72
  23. package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.d.ts.map +1 -1
  24. package/dist/shared/assistant/ui/voice/VoiceTranscriptDrawer.js +40 -39
  25. package/dist/shared/assistant/ui/voice/voiceSessionEscape.d.ts +57 -0
  26. package/dist/shared/assistant/ui/voice/voiceSessionEscape.d.ts.map +1 -0
  27. package/dist/shared/assistant/ui/voice/voiceSessionEscape.js +19 -0
  28. package/dist/shared/assistant/useAssistantKeyboardShortcuts.d.ts +3 -1
  29. package/dist/shared/assistant/useAssistantKeyboardShortcuts.d.ts.map +1 -1
  30. package/dist/shared/assistant/useAssistantKeyboardShortcuts.js +25 -25
  31. package/dist/shared/hooks/index.d.ts +1 -0
  32. package/dist/shared/hooks/index.d.ts.map +1 -1
  33. package/dist/shared/hooks/useReturnFocus.d.ts +56 -0
  34. package/dist/shared/hooks/useReturnFocus.d.ts.map +1 -0
  35. package/dist/shared/hooks/useReturnFocus.js +41 -0
  36. package/dist/shared/providers/AppShellProvider.d.ts +12 -1
  37. package/dist/shared/providers/AppShellProvider.d.ts.map +1 -1
  38. package/dist/shared/providers/AppShellProvider.js +175 -161
  39. package/dist/shared-assistant.js +76 -75
  40. package/dist/shared-hooks.js +34 -33
  41. package/dist/shared.js +89 -88
  42. package/dist/ui/modal-shell.d.ts.map +1 -1
  43. package/dist/ui/modal-shell.js +23 -13
  44. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SideNavigation.d.ts","sourceRoot":"","sources":["../../src/chrome/SideNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAMtD,YAAY,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,KAAK,EAAE,OAAO,EAAE,CAAC;IAEjB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IAEpB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,yBAAyB;IACzB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE9B,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,sEAAsE;IACtE,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEnC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,eAAe,CAAC;CACvC;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAuNlD,CAAC"}
1
+ {"version":3,"file":"SideNavigation.d.ts","sourceRoot":"","sources":["../../src/chrome/SideNavigation.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAU,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAExD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAMtD,YAAY,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,kCAAkC;IAClC,KAAK,EAAE,OAAO,EAAE,CAAC;IAEjB,0BAA0B;IAC1B,WAAW,EAAE,MAAM,CAAC;IAEpB,mCAAmC;IACnC,SAAS,CAAC,EAAE,OAAO,CAAC;IAEpB,yBAAyB;IACzB,WAAW,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IAEpC,8BAA8B;IAC9B,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAE9B,4BAA4B;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IAEvB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,6CAA6C;IAC7C,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,sEAAsE;IACtE,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAEnC,+CAA+C;IAC/C,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB,gDAAgD;IAChD,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAErC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,eAAe,CAAC;CACvC;AAED;;;;;GAKG;AACH,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA0NlD,CAAC"}
@@ -4,40 +4,43 @@ import { NavItemRenderer as a } from "./sideNavigation/NavItemRenderer.js";
4
4
  import { SidebarHeader as o } from "./sideNavigation/SidebarHeader.js";
5
5
  import { MobileActionsBar as s } from "./sideNavigation/MobileActionsBar.js";
6
6
  import { useSideNavigationState as c } from "./sideNavigation/useSideNavigationState.js";
7
- import { Fragment as l, jsx as u, jsxs as d } from "react/jsx-runtime";
7
+ import { useRef as l } from "react";
8
+ import { Fragment as u, jsx as d, jsxs as f } from "react/jsx-runtime";
8
9
  //#region src/chrome/SideNavigation.tsx
9
- var f = ({ items: f, currentPath: p, collapsed: m = !1, onItemClick: h, onToggleCollapse: g, collapseLabel: _, header: v, footer: y, mobileActions: b, groupOrder: x, groupLabels: S, maxDepth: C = 4, contextSearchParams: w }) => {
10
- let { expandedItems: T, toggleExpand: E, collapseAll: D } = c({
11
- items: f,
12
- currentPath: p,
13
- collapsed: m,
14
- onToggleCollapse: g
15
- }), O = i(), k = _ ?? O("nav.collapse", "Collapse"), A = O("nav.expand", "Expand"), j = f.filter((e) => e.visible !== !1), M = (() => {
16
- if (m) return [{
10
+ var p = ({ items: p, currentPath: m, collapsed: h = !1, onItemClick: g, onToggleCollapse: _, collapseLabel: v, header: y, footer: b, mobileActions: x, groupOrder: S, groupLabels: C, maxDepth: w = 4, contextSearchParams: T }) => {
11
+ let E = l(null), { expandedItems: D, toggleExpand: O, collapseAll: k } = c({
12
+ items: p,
13
+ currentPath: m,
14
+ collapsed: h,
15
+ onToggleCollapse: _,
16
+ navRef: E
17
+ }), A = i(), j = v ?? A("nav.collapse", "Collapse"), M = A("nav.expand", "Expand"), N = p.filter((e) => e.visible !== !1), P = (() => {
18
+ if (h) return [{
17
19
  id: "__all__",
18
20
  label: null,
19
- items: j
21
+ items: N
20
22
  }];
21
23
  let e = /* @__PURE__ */ new Map();
22
- for (let t of j) {
24
+ for (let t of N) {
23
25
  let n = t.group ?? "__default__", r = e.get(n);
24
26
  r ? r.push(t) : e.set(n, [t]);
25
27
  }
26
- return [...x ?? [], ...Array.from(e.keys()).filter((e) => !(x ?? []).includes(e))].filter((t) => (e.get(t)?.length ?? 0) > 0).map((t) => ({
28
+ return [...S ?? [], ...Array.from(e.keys()).filter((e) => !(S ?? []).includes(e))].filter((t) => (e.get(t)?.length ?? 0) > 0).map((t) => ({
27
29
  id: t,
28
- label: t === "__default__" ? null : S?.[t] ?? t,
30
+ label: t === "__default__" ? null : C?.[t] ?? t,
29
31
  items: e.get(t) ?? []
30
32
  }));
31
33
  })();
32
- return /* @__PURE__ */ d(l, { children: [!m && /* @__PURE__ */ d(l, { children: [/* @__PURE__ */ u("div", {
34
+ return /* @__PURE__ */ f(u, { children: [!h && /* @__PURE__ */ f(u, { children: [/* @__PURE__ */ d("div", {
33
35
  className: "fixed inset-0 bg-bg-overlay z-[109] md:hidden",
34
36
  "aria-hidden": "true"
35
- }), /* @__PURE__ */ u("button", {
37
+ }), /* @__PURE__ */ d("button", {
36
38
  type: "button",
37
39
  className: "fixed inset-y-0 right-0 left-64 z-[112] md:hidden cursor-pointer",
38
- onClick: g,
40
+ onClick: _,
39
41
  "aria-label": "Close sidebar"
40
- })] }), /* @__PURE__ */ d("aside", {
42
+ })] }), /* @__PURE__ */ f("aside", {
43
+ ref: E,
41
44
  className: `
42
45
  bg-bg-canvas supports-[backdrop-filter]:bg-[var(--color-surface-glass)] supports-[backdrop-filter]:backdrop-blur-[var(--blur-glass)]
43
46
  border-r border-border-seam
@@ -48,28 +51,28 @@ var f = ({ items: f, currentPath: p, collapsed: m = !1, onItemClick: h, onToggle
48
51
  z-[110] md:z-auto
49
52
  md:h-full
50
53
  overflow-x-hidden
51
- ${m ? "-translate-x-full md:translate-x-0" : "translate-x-0"}
54
+ ${h ? "-translate-x-full md:translate-x-0" : "translate-x-0"}
52
55
  w-64 md:w-auto
53
- ${m ? "md:w-16" : "md:w-64"}
56
+ ${h ? "md:w-16" : "md:w-64"}
54
57
  `,
55
58
  style: {
56
59
  paddingTop: "env(safe-area-inset-top)",
57
60
  paddingBottom: "env(safe-area-inset-bottom)"
58
61
  },
59
62
  children: [
60
- !m && g && /* @__PURE__ */ u("div", {
63
+ !h && _ && /* @__PURE__ */ d("div", {
61
64
  className: "md:hidden flex justify-end px-2 pt-2",
62
- children: /* @__PURE__ */ u("button", {
65
+ children: /* @__PURE__ */ d("button", {
63
66
  type: "button",
64
- onClick: g,
67
+ onClick: _,
65
68
  className: "p-2 rounded-button hover:bg-bg-sunken text-text-secondary hover:text-text-primary transition-colors",
66
69
  "aria-label": "Close sidebar",
67
- children: /* @__PURE__ */ u("svg", {
70
+ children: /* @__PURE__ */ d("svg", {
68
71
  className: "size-5",
69
72
  fill: "none",
70
73
  stroke: "currentColor",
71
74
  viewBox: "0 0 24 24",
72
- children: /* @__PURE__ */ u("path", {
75
+ children: /* @__PURE__ */ d("path", {
73
76
  strokeLinecap: "round",
74
77
  strokeLinejoin: "round",
75
78
  strokeWidth: 2,
@@ -78,62 +81,62 @@ var f = ({ items: f, currentPath: p, collapsed: m = !1, onItemClick: h, onToggle
78
81
  })
79
82
  })
80
83
  }),
81
- (v || g) && /* @__PURE__ */ u(o, {
82
- header: v,
83
- collapsed: m,
84
- expandedCount: T.size,
85
- onCollapseAll: D,
86
- onToggleCollapse: g,
87
- collapseLabel: k,
88
- expandLabel: A
84
+ (y || _) && /* @__PURE__ */ d(o, {
85
+ header: y,
86
+ collapsed: h,
87
+ expandedCount: D.size,
88
+ onCollapseAll: k,
89
+ onToggleCollapse: _,
90
+ collapseLabel: j,
91
+ expandLabel: M
89
92
  }),
90
- /* @__PURE__ */ u("nav", {
93
+ /* @__PURE__ */ d("nav", {
91
94
  className: "scrollbar-slim scrollbar-hover-only flex-1 min-h-0 py-card-padding overflow-y-auto overflow-x-hidden",
92
- children: /* @__PURE__ */ u(n, {
95
+ children: /* @__PURE__ */ d(n, {
93
96
  delayDuration: 300,
94
- children: /* @__PURE__ */ u("ul", {
97
+ children: /* @__PURE__ */ d("ul", {
95
98
  className: "space-y-list-gap",
96
- children: M.map((n, i) => /* @__PURE__ */ d("li", {
99
+ children: P.map((n, i) => /* @__PURE__ */ f("li", {
97
100
  className: "list-none",
98
101
  children: [
99
- i > 0 && !m && /* @__PURE__ */ u("div", { className: "my-2 border-t border-border-subtle" }),
100
- n.label && !m && /* @__PURE__ */ u("p", {
102
+ i > 0 && !h && /* @__PURE__ */ d("div", { className: "my-2 border-t border-border-subtle" }),
103
+ n.label && !h && /* @__PURE__ */ d("p", {
101
104
  className: "px-3 pb-1.5 pt-0.5 text-[11px] font-medium uppercase tracking-wider text-text-muted",
102
105
  children: n.label
103
106
  }),
104
- /* @__PURE__ */ u("ul", {
107
+ /* @__PURE__ */ d("ul", {
105
108
  className: "space-y-list-gap",
106
- children: n.items.map((n) => m ? /* @__PURE__ */ d(e, { children: [/* @__PURE__ */ u(r, {
109
+ children: n.items.map((n) => h ? /* @__PURE__ */ f(e, { children: [/* @__PURE__ */ d(r, {
107
110
  asChild: !0,
108
- children: /* @__PURE__ */ u(a, {
111
+ children: /* @__PURE__ */ d(a, {
109
112
  item: n,
110
113
  depth: 0,
111
- maxDepth: C,
112
- currentPath: p,
113
- expandedItems: T,
114
- toggleExpand: E,
115
- onItemClick: h,
116
- onToggleCollapse: g,
117
- collapsed: m,
118
- contextSearchParams: w
114
+ maxDepth: w,
115
+ currentPath: m,
116
+ expandedItems: D,
117
+ toggleExpand: O,
118
+ onItemClick: g,
119
+ onToggleCollapse: _,
120
+ collapsed: h,
121
+ contextSearchParams: T
119
122
  })
120
- }), /* @__PURE__ */ d(t, {
123
+ }), /* @__PURE__ */ f(t, {
121
124
  side: "right",
122
- children: [/* @__PURE__ */ u("p", { children: n.label }), n.badge !== void 0 && n.badge > 0 && /* @__PURE__ */ u("span", {
125
+ children: [/* @__PURE__ */ d("p", { children: n.label }), n.badge !== void 0 && n.badge > 0 && /* @__PURE__ */ d("span", {
123
126
  className: "ml-2 text-xs bg-status-error-bg-subtle text-status-error-text px-2 py-0.5 rounded-full",
124
127
  children: n.badge
125
128
  })]
126
- })] }, n.id) : /* @__PURE__ */ u(a, {
129
+ })] }, n.id) : /* @__PURE__ */ d(a, {
127
130
  item: n,
128
131
  depth: 0,
129
- maxDepth: C,
130
- currentPath: p,
131
- expandedItems: T,
132
- toggleExpand: E,
133
- onItemClick: h,
134
- onToggleCollapse: g,
135
- collapsed: m,
136
- contextSearchParams: w
132
+ maxDepth: w,
133
+ currentPath: m,
134
+ expandedItems: D,
135
+ toggleExpand: O,
136
+ onItemClick: g,
137
+ onToggleCollapse: _,
138
+ collapsed: h,
139
+ contextSearchParams: T
137
140
  }, n.id))
138
141
  })
139
142
  ]
@@ -141,17 +144,17 @@ var f = ({ items: f, currentPath: p, collapsed: m = !1, onItemClick: h, onToggle
141
144
  })
142
145
  })
143
146
  }),
144
- y && /* @__PURE__ */ u("div", {
145
- className: `py-card-padding border-t border-border-subtle ${m ? "md:px-2" : "px-card-padding"}`,
146
- children: y
147
+ b && /* @__PURE__ */ d("div", {
148
+ className: `py-card-padding border-t border-border-subtle ${h ? "md:px-2" : "px-card-padding"}`,
149
+ children: b
147
150
  }),
148
- b && b.length > 0 && /* @__PURE__ */ u(s, {
149
- actions: b,
150
- collapsed: m,
151
- onToggleCollapse: g
151
+ x && x.length > 0 && /* @__PURE__ */ d(s, {
152
+ actions: x,
153
+ collapsed: h,
154
+ onToggleCollapse: _
152
155
  })
153
156
  ]
154
157
  })] });
155
158
  };
156
159
  //#endregion
157
- export { f as SideNavigation };
160
+ export { p as SideNavigation };
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Whose Escape is it: the side nav's, or someone else's? (BOFF-8073)
3
+ *
4
+ * The expanded side nav used to collapse on ANY Escape that reached `window`
5
+ * unclaimed. With focus on the page body, the Escape that ended a voice
6
+ * session also collapsed the nav (VibeControls prod, 2026-09-28): one key,
7
+ * two things closed, and one of them was not even in front of the person.
8
+ *
9
+ * Escape is "back out of the thing I am in". The nav is that thing only when:
10
+ *
11
+ * - focus is inside it: the person is working the nav with the keyboard; or
12
+ * - it is an open OVERLAY: below `md` the expanded nav is a drawer over the
13
+ * page, with a backdrop, and Escape dismissing a drawer is the expected
14
+ * gesture wherever focus happens to be.
15
+ *
16
+ * It is never a global fallback, and a key another handler already took
17
+ * (`defaultPrevented`, as Radix sets when it closes a dialog or popover) is
18
+ * never the nav's.
19
+ *
20
+ * Kept DOM-free so it can be tested without rendering.
21
+ */
22
+ /**
23
+ * Below this viewport width the expanded nav is an overlay drawer: the same
24
+ * `md` breakpoint its classes switch on (`fixed … md:relative`, the
25
+ * `md:hidden` backdrop), and the one `useSideNavigationState` already
26
+ * collapses on when the window shrinks.
27
+ */
28
+ export declare const SIDE_NAV_OVERLAY_MAX_WIDTH_PX = 768;
29
+ /** Is the expanded nav an overlay drawer at this viewport width? */
30
+ export declare function sideNavIsOverlay(viewportWidth: number): boolean;
31
+ export type SideNavEscapeAction = 'collapse' | 'ignore';
32
+ /** What the side nav does with a key press. */
33
+ export declare function sideNavEscapeAction(input: {
34
+ key: string;
35
+ /** The key's `defaultPrevented`: an earlier handler already took it. */
36
+ alreadyHandled: boolean;
37
+ collapsed: boolean;
38
+ focusInsideNav: boolean;
39
+ navIsOverlay: boolean;
40
+ }): SideNavEscapeAction;
41
+ //# sourceMappingURL=sideNavEscape.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sideNavEscape.d.ts","sourceRoot":"","sources":["../../../src/chrome/sideNavigation/sideNavEscape.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH;;;;;GAKG;AACH,eAAO,MAAM,6BAA6B,MAAM,CAAC;AAEjD,oEAAoE;AACpE,wBAAgB,gBAAgB,CAAC,aAAa,EAAE,MAAM,GAAG,OAAO,CAE/D;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,QAAQ,CAAC;AAExD,+CAA+C;AAC/C,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,GAAG,EAAE,MAAM,CAAC;IACZ,wEAAwE;IACxE,cAAc,EAAE,OAAO,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,cAAc,EAAE,OAAO,CAAC;IACxB,YAAY,EAAE,OAAO,CAAC;CACvB,GAAG,mBAAmB,CAKtB"}
@@ -0,0 +1,8 @@
1
+ function e(e) {
2
+ return e < 768;
3
+ }
4
+ function t(e) {
5
+ return e.key !== "Escape" || e.collapsed || e.alreadyHandled ? "ignore" : e.focusInsideNav || e.navIsOverlay ? "collapse" : "ignore";
6
+ }
7
+ //#endregion
8
+ export { t as sideNavEscapeAction, e as sideNavIsOverlay };
@@ -1,15 +1,22 @@
1
+ import { RefObject } from 'react';
1
2
  import { NavItem } from './types';
2
3
  interface UseSideNavigationStateArgs {
3
4
  items: NavItem[];
4
5
  currentPath: string;
5
6
  collapsed: boolean;
6
7
  onToggleCollapse?: () => void;
8
+ /**
9
+ * The nav's root element. Escape collapses the nav only when focus is inside
10
+ * it, or when it is an open overlay (BOFF-8073). Without it, only the
11
+ * overlay case applies.
12
+ */
13
+ navRef?: RefObject<HTMLElement | null>;
7
14
  }
8
15
  interface UseSideNavigationStateResult {
9
16
  expandedItems: Set<string>;
10
17
  toggleExpand: (id: string) => void;
11
18
  collapseAll: () => void;
12
19
  }
13
- export declare function useSideNavigationState({ items, currentPath, collapsed, onToggleCollapse, }: UseSideNavigationStateArgs): UseSideNavigationStateResult;
20
+ export declare function useSideNavigationState({ items, currentPath, collapsed, onToggleCollapse, navRef, }: UseSideNavigationStateArgs): UseSideNavigationStateResult;
14
21
  export {};
15
22
  //# sourceMappingURL=useSideNavigationState.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useSideNavigationState.d.ts","sourceRoot":"","sources":["../../../src/chrome/sideNavigation/useSideNavigationState.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAIvC,UAAU,0BAA0B;IAClC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;CAC/B;AAED,UAAU,4BAA4B;IACpC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,GACjB,EAAE,0BAA0B,GAAG,4BAA4B,CAkF3D"}
1
+ {"version":3,"file":"useSideNavigationState.d.ts","sourceRoot":"","sources":["../../../src/chrome/sideNavigation/useSideNavigationState.ts"],"names":[],"mappings":"AAAA,OAAO,EAA4C,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AACjF,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAKvC,UAAU,0BAA0B;IAClC,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,IAAI,CAAC;IAC9B;;;;OAIG;IACH,MAAM,CAAC,EAAE,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC;CACxC;AAED,UAAU,4BAA4B;IACpC,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC3B,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,WAAW,EAAE,MAAM,IAAI,CAAC;CACzB;AAED,wBAAgB,sBAAsB,CAAC,EACrC,KAAK,EACL,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,MAAM,GACP,EAAE,0BAA0B,GAAG,4BAA4B,CAgG3D"}
@@ -1,46 +1,58 @@
1
1
  import { NAV_MORE_ID_PREFIX as e } from "./navVisibility.js";
2
2
  import { findAncestorIds as t } from "./helpers.js";
3
- import { useCallback as n, useEffect as r, useRef as i, useState as a } from "react";
3
+ import { sideNavEscapeAction as n, sideNavIsOverlay as r } from "./sideNavEscape.js";
4
+ import { useCallback as i, useEffect as a, useRef as o, useState as s } from "react";
4
5
  //#region src/chrome/sideNavigation/useSideNavigationState.ts
5
- function o({ items: o, currentPath: s, collapsed: c, onToggleCollapse: l }) {
6
- let [u, d] = a(/* @__PURE__ */ new Set()), f = i(c);
7
- return r(() => {
8
- f.current = c;
9
- }, [c]), r(() => {
10
- let n = new Set([...t(o, s)].filter((t) => !t.startsWith(e)));
11
- n.size > 0 && d((e) => {
6
+ function c({ items: c, currentPath: l, collapsed: u, onToggleCollapse: d, navRef: f }) {
7
+ let [p, m] = s(/* @__PURE__ */ new Set()), h = o(u);
8
+ return a(() => {
9
+ h.current = u;
10
+ }, [u]), a(() => {
11
+ let n = new Set([...t(c, l)].filter((t) => !t.startsWith(e)));
12
+ n.size > 0 && m((e) => {
12
13
  let t = new Set(e), r = !1;
13
14
  return n.forEach((e) => {
14
15
  t.has(e) || (t.add(e), r = !0);
15
16
  }), r ? t : e;
16
17
  });
17
- }, [s, o]), r(() => {
18
- if (typeof window > "u" || !l) return;
19
- let e = window.innerWidth < 768, t = () => {
20
- let t = window.innerWidth < 768;
21
- t && (!e || !f.current) && l(), e = t;
18
+ }, [l, c]), a(() => {
19
+ if (typeof window > "u" || !d) return;
20
+ let e = r(window.innerWidth), t = () => {
21
+ let t = r(window.innerWidth);
22
+ t && (!e || !h.current) && d(), e = t;
22
23
  };
23
24
  return t(), window.addEventListener("resize", t), () => {
24
25
  window.removeEventListener("resize", t);
25
26
  };
26
- }, [l]), r(() => {
27
- if (c) return;
27
+ }, [d]), a(() => {
28
+ if (u || !d) return;
28
29
  let e = (e) => {
29
- e.key === "Escape" && !e.defaultPrevented && l && l();
30
+ let t = f?.current ?? null, i = document.activeElement;
31
+ n({
32
+ key: e.key,
33
+ alreadyHandled: e.defaultPrevented,
34
+ collapsed: !1,
35
+ focusInsideNav: !!(t && i && t.contains(i)),
36
+ navIsOverlay: r(window.innerWidth)
37
+ }) === "collapse" && (e.preventDefault(), d());
30
38
  };
31
39
  return window.addEventListener("keydown", e), () => window.removeEventListener("keydown", e);
32
- }, [c, l]), {
33
- expandedItems: u,
34
- toggleExpand: n((e) => {
35
- d((t) => {
40
+ }, [
41
+ u,
42
+ d,
43
+ f
44
+ ]), {
45
+ expandedItems: p,
46
+ toggleExpand: i((e) => {
47
+ m((t) => {
36
48
  let n = new Set(t);
37
49
  return n.has(e) ? n.delete(e) : n.add(e), n;
38
50
  });
39
51
  }, []),
40
- collapseAll: n(() => {
41
- d(/* @__PURE__ */ new Set());
52
+ collapseAll: i(() => {
53
+ m(/* @__PURE__ */ new Set());
42
54
  }, [])
43
55
  };
44
56
  }
45
57
  //#endregion
46
- export { o as useSideNavigationState };
58
+ export { c as useSideNavigationState };
@@ -139,6 +139,7 @@ export * from './ui/voice/VoiceStage';
139
139
  export * from './ui/voice/VoiceStatusText';
140
140
  export * from './ui/voice/VoiceTranscriptDrawer';
141
141
  export * from './ui/voice/VoiceWaveform';
142
+ export * from './ui/voice/voiceSessionEscape';
142
143
  export * from './product';
143
144
  export * from './ui/AssistantMoreMenu';
144
145
  export * from './ui/AssistantHeader';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/assistant/index.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAkBrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAInE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC;IACrC;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAyOtD,CAAC"}
1
+ {"version":3,"file":"AIAssistantPanel.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AIAssistantPanel.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAU,KAAK,EAAE,EAAY,MAAM,OAAO,CAAC;AAClD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAIvE,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,6BAA6B,CAAC;AAkBrC,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;AAKnE,MAAM,MAAM,qBAAqB,GAAG,UAAU,GAAG;IAC/C,gEAAgE;IAChE,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,IAAI,CAAC;IAC1B;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,oBAAoB,CAAC;IACnC;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B;;;;;;;;;OASG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;;;;;;;;;;;OAaG;IACH,eAAe,CAAC,EAAE,MAAM,IAAI,CAAC;IAC7B;;;;;;;;;OASG;IACH,OAAO,CAAC,EAAE,0BAA0B,CAAC;IACrC;;;;;;;;;;;;;;OAcG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,CAAC;AAEF;;;;;;;GAOG;AACH,eAAO,MAAM,gBAAgB,EAAE,EAAE,CAAC,qBAAqB,CAkPtD,CAAC"}
@@ -1,97 +1,100 @@
1
- import { useAssistantPageLabel as e } from "../product.js";
2
- import { useAssistantTr as t } from "../i18n.js";
3
- import { AssistantNavigateProvider as n } from "./AssistantMarkdownRenderer.js";
4
- import { useAssistantStore as r } from "../store.js";
5
- import { AssistantSpeechProvider as i } from "./AssistantSpeechProvider.js";
6
- import { AssistantConnectSourceProvider as a } from "./composer/connectSource.js";
7
- import { ASSISTANT_OVERLAY_ATTR as o, ASSISTANT_PANEL_ATTR as s, activePanelOverlay as c, escapeDismisses as l, nextPanelOverlays as u } from "./panelOverlays.js";
8
- import { AssistantPreviewProvider as d } from "../preview/context.js";
9
- import { useAssistantPreviewBridge as f } from "../preview/useAssistantPreviewBridge.js";
10
- import { panelOwnedPreviewBridge as p, useHostedAssistantPreviewBridge as m } from "../preview/bridgeHostContext.js";
11
- import { AssistantPreviewOverlay as h } from "../preview/AssistantPreviewOverlay.js";
12
- import { AssistantHeader as g } from "./AssistantHeader.js";
13
- import { AssistantConversationList as _ } from "./AssistantConversationList.js";
14
- import { useAssistantServerHistory as v } from "../history/useAssistantServerHistory.js";
15
- import { useFilesServiceWarmup as y } from "../../../storage/warmFilesService.js";
16
- import { useAssistantHeartbeat as b } from "../useAssistantHeartbeat.js";
17
- import { useAssistantKeyboardShortcuts as x } from "../useAssistantKeyboardShortcuts.js";
18
- import { AssistantChatArea as S } from "./AssistantChatArea.js";
19
- import { useRef as C, useState as w } from "react";
20
- import { jsx as T, jsxs as E } from "react/jsx-runtime";
1
+ import { useReturnFocus as e } from "../../hooks/useReturnFocus.js";
2
+ import { useAssistantPageLabel as t } from "../product.js";
3
+ import { useAssistantTr as n } from "../i18n.js";
4
+ import { AssistantNavigateProvider as r } from "./AssistantMarkdownRenderer.js";
5
+ import { useAssistantStore as i } from "../store.js";
6
+ import { AssistantSpeechProvider as a } from "./AssistantSpeechProvider.js";
7
+ import { AssistantConnectSourceProvider as o } from "./composer/connectSource.js";
8
+ import { ASSISTANT_OVERLAY_ATTR as s, ASSISTANT_PANEL_ATTR as c, activePanelOverlay as l, escapeDismisses as u, nextPanelOverlays as d } from "./panelOverlays.js";
9
+ import { AssistantPreviewProvider as f } from "../preview/context.js";
10
+ import { useAssistantPreviewBridge as p } from "../preview/useAssistantPreviewBridge.js";
11
+ import { panelOwnedPreviewBridge as m, useHostedAssistantPreviewBridge as h } from "../preview/bridgeHostContext.js";
12
+ import { AssistantPreviewOverlay as g } from "../preview/AssistantPreviewOverlay.js";
13
+ import { AssistantHeader as _ } from "./AssistantHeader.js";
14
+ import { AssistantConversationList as v } from "./AssistantConversationList.js";
15
+ import { useAssistantServerHistory as y } from "../history/useAssistantServerHistory.js";
16
+ import { useFilesServiceWarmup as b } from "../../../storage/warmFilesService.js";
17
+ import { useAssistantHeartbeat as x } from "../useAssistantHeartbeat.js";
18
+ import { useAssistantKeyboardShortcuts as S } from "../useAssistantKeyboardShortcuts.js";
19
+ import { AssistantChatArea as C } from "./AssistantChatArea.js";
20
+ import { useRef as w, useState as T } from "react";
21
+ import { jsx as E, jsxs as D } from "react/jsx-runtime";
21
22
  //#region src/shared/assistant/ui/AIAssistantPanel.tsx
22
- var D = ({ onClose: D, visible: O, docked: k, onToggleDock: A, writeAccess: j, onNavigate: M, connectSourceHref: N, onConnectSource: P, preview: F, serverHistory: I = !1 }) => {
23
- let L = t();
24
- v(I);
25
- let [R, z] = w(!1);
26
- R && !F && z(!1);
27
- let B = R && !!F;
28
- f(p(F, m()));
29
- let V = C(null), { conversations: H, activeConversationId: U, conversationListOpen: W, setConversationListOpen: G, createConversation: K } = r(), q = W || B, J = c({
30
- historyOpen: W,
31
- previewOpen: B
32
- }), Y = (e) => {
33
- let t = u({
34
- historyOpen: W,
35
- previewOpen: B
23
+ var O = ({ onClose: O, visible: k, docked: A, onToggleDock: j, writeAccess: M, onNavigate: N, connectSourceHref: P, onConnectSource: F, preview: I, serverHistory: L = !1 }) => {
24
+ let R = n();
25
+ y(L);
26
+ let [z, B] = T(!1);
27
+ z && !I && B(!1);
28
+ let V = z && !!I;
29
+ p(m(I, h()));
30
+ let H = w(null);
31
+ e(H);
32
+ let { conversations: U, activeConversationId: W, conversationListOpen: G, setConversationListOpen: K, createConversation: q } = i(), J = G || V, Y = l({
33
+ historyOpen: G,
34
+ previewOpen: V
35
+ }), X = (e) => {
36
+ let t = d({
37
+ historyOpen: G,
38
+ previewOpen: V
36
39
  }, e);
37
- G(t.historyOpen), z(t.previewOpen);
38
- }, X = H.find((e) => e.id === U);
39
- b(X?.backendSessionId ?? null, X?.mode ?? null, O ?? !0), y(O ?? !0);
40
- let Z = e(O !== !1);
41
- return x({
42
- panelRef: V,
40
+ K(t.historyOpen), B(t.previewOpen);
41
+ }, Z = U.find((e) => e.id === W);
42
+ x(Z?.backendSessionId ?? null, Z?.mode ?? null, k ?? !0), b(k ?? !0);
43
+ let Q = t(k !== !1);
44
+ return S({
45
+ panelRef: H,
43
46
  onClose: () => {
44
- if (l({
45
- historyOpen: W,
46
- previewOpen: B
47
+ if (u({
48
+ historyOpen: G,
49
+ previewOpen: V
47
50
  }) === "overlay") {
48
- G(!1), z(!1);
51
+ K(!1), B(!1);
49
52
  return;
50
53
  }
51
- D();
54
+ O();
52
55
  }
53
- }), /* @__PURE__ */ T(i, {
54
- visible: O ?? !0,
55
- children: /* @__PURE__ */ T(d, {
56
- value: F,
57
- children: /* @__PURE__ */ T(n, {
58
- value: M,
59
- children: /* @__PURE__ */ T(a, {
60
- value: N,
61
- onOpen: P,
62
- children: /* @__PURE__ */ E("div", {
63
- ref: V,
56
+ }), /* @__PURE__ */ E(a, {
57
+ visible: k ?? !0,
58
+ children: /* @__PURE__ */ E(f, {
59
+ value: I,
60
+ children: /* @__PURE__ */ E(r, {
61
+ value: N,
62
+ children: /* @__PURE__ */ E(o, {
63
+ value: P,
64
+ onOpen: F,
65
+ children: /* @__PURE__ */ D("div", {
66
+ ref: H,
64
67
  className: "relative flex h-full w-full flex-col bg-bg-surface",
65
68
  role: "complementary",
66
- "aria-label": L("panel.ariaLabel", "AI Assistant"),
69
+ "aria-label": R("panel.ariaLabel", "AI Assistant"),
67
70
  "data-testid": "ai-assistant-panel",
68
- [s]: "",
69
- ...J ? { [o]: J } : {},
71
+ [c]: "",
72
+ ...Y ? { [s]: Y } : {},
70
73
  tabIndex: -1,
71
74
  children: [
72
- /* @__PURE__ */ T("div", {
75
+ /* @__PURE__ */ E("div", {
73
76
  className: "contents",
74
- inert: q || void 0,
75
- children: /* @__PURE__ */ T(g, {
76
- contextLabel: Z,
77
- onNewConversation: () => K(),
78
- onOpenHistory: () => Y("history"),
79
- historyOpen: W,
80
- onTogglePreview: () => Y("preview"),
81
- previewOpen: B,
82
- onClose: D,
83
- docked: k,
84
- onToggleDock: A
77
+ inert: J || void 0,
78
+ children: /* @__PURE__ */ E(_, {
79
+ contextLabel: Q,
80
+ onNewConversation: () => q(),
81
+ onOpenHistory: () => X("history"),
82
+ historyOpen: G,
83
+ onTogglePreview: () => X("preview"),
84
+ previewOpen: V,
85
+ onClose: O,
86
+ docked: A,
87
+ onToggleDock: j
85
88
  })
86
89
  }),
87
- W && /* @__PURE__ */ T(_, {}),
88
- B && /* @__PURE__ */ T(h, { onClose: () => z(!1) }),
89
- /* @__PURE__ */ T("div", {
90
+ G && /* @__PURE__ */ E(v, {}),
91
+ V && /* @__PURE__ */ E(g, { onClose: () => B(!1) }),
92
+ /* @__PURE__ */ E("div", {
90
93
  className: "contents",
91
- inert: q || void 0,
92
- children: /* @__PURE__ */ T(S, {
93
- visible: O ?? !0,
94
- writeAccess: j
94
+ inert: J || void 0,
95
+ children: /* @__PURE__ */ E(C, {
96
+ visible: k ?? !0,
97
+ writeAccess: M
95
98
  })
96
99
  })
97
100
  ]
@@ -102,4 +105,4 @@ var D = ({ onClose: D, visible: O, docked: k, onToggleDock: A, writeAccess: j, o
102
105
  });
103
106
  };
104
107
  //#endregion
105
- export { D as AIAssistantPanel };
108
+ export { O as AIAssistantPanel };