@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
@@ -0,0 +1,56 @@
1
+ import { RefObject } from 'react';
2
+ /** The slice of a document this reads. */
3
+ export type FocusReturnDocument = Pick<Document, 'activeElement' | 'body'>;
4
+ type Focusable = Element & {
5
+ focus(options?: FocusOptions): void;
6
+ };
7
+ /**
8
+ * Was focus dropped, rather than moved somewhere on purpose?
9
+ *
10
+ * Yes when nothing is focused, `<body>` is (where the browser puts it when the
11
+ * focused element is removed), the focused element is no longer in the
12
+ * document, or it is inside `layer`, the layer that is closing.
13
+ */
14
+ export declare function focusWasDropped(doc: FocusReturnDocument, layer?: Pick<Node, 'contains'> | null): boolean;
15
+ /**
16
+ * Is `candidate` worth trying: still in the document, able to take focus at
17
+ * all, and not disabled?
18
+ */
19
+ export declare function canReturnFocusTo(candidate: Element | null | undefined): candidate is Focusable;
20
+ /**
21
+ * Focus the first candidate that takes it, and return it; null when none did.
22
+ *
23
+ * ★ Checked by reading focus back. `focus()` fails silently on an element that
24
+ * is hidden (`display: none`, such as the launcher on a phone while the panel
25
+ * is open) or inside an `inert` subtree (the composer behind a live voice
26
+ * session), so "it did not throw" says nothing. The next candidate gets its
27
+ * turn instead.
28
+ */
29
+ export declare function returnFocusTo(doc: FocusReturnDocument, candidates: ReadonlyArray<Element | null | undefined>): Element | null;
30
+ /** What is focused, when it is a real control rather than `<body>`. */
31
+ export declare function focusedControl(doc: FocusReturnDocument): Element | null;
32
+ export interface UseReturnFocusOptions {
33
+ /**
34
+ * Where focus goes when the opener is gone: the nearest ancestor of the
35
+ * layer matching this selector, found while the layer is still mounted.
36
+ * The assistant's layers pass the panel root, which is focusable
37
+ * (`tabIndex=-1`) and keeps focus inside the assistant.
38
+ */
39
+ fallbackSelector?: string;
40
+ }
41
+ /**
42
+ * Return focus to this layer's opener when it closes.
43
+ *
44
+ * The opener is what had focus when the layer first RENDERED, before any
45
+ * effect of its own (the voice session focuses End on open) moves focus into
46
+ * it. If that element is gone by the time the layer mounts, what focus fell
47
+ * back to then is used instead: the post-session transcript drawer renders
48
+ * while End still has focus, End is removed in that same commit, and by the
49
+ * time the drawer's effects run the voice session has handed focus back to
50
+ * the voice button.
51
+ *
52
+ * @param layerRef the layer's root element.
53
+ */
54
+ export declare function useReturnFocus(layerRef: RefObject<Element | null>, { fallbackSelector }?: UseReturnFocusOptions): void;
55
+ export {};
56
+ //# sourceMappingURL=useReturnFocus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useReturnFocus.d.ts","sourceRoot":"","sources":["../../../src/shared/hooks/useReturnFocus.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,EAAuB,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAE5D,0CAA0C;AAC1C,MAAM,MAAM,mBAAmB,GAAG,IAAI,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAAC,CAAC;AAE3E,KAAK,SAAS,GAAG,OAAO,GAAG;IAAE,KAAK,CAAC,OAAO,CAAC,EAAE,YAAY,GAAG,IAAI,CAAA;CAAE,CAAC;AAOnE;;;;;;GAMG;AACH,wBAAgB,eAAe,CAC7B,GAAG,EAAE,mBAAmB,EACxB,KAAK,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,UAAU,CAAC,GAAG,IAAI,GACpC,OAAO,CAIT;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,OAAO,GAAG,IAAI,GAAG,SAAS,GAAG,SAAS,IAAI,SAAS,CAK9F;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAC3B,GAAG,EAAE,mBAAmB,EACxB,UAAU,EAAE,aAAa,CAAC,OAAO,GAAG,IAAI,GAAG,SAAS,CAAC,GACpD,OAAO,GAAG,IAAI,CAOhB;AAED,uEAAuE;AACvE,wBAAgB,cAAc,CAAC,GAAG,EAAE,mBAAmB,GAAG,OAAO,GAAG,IAAI,CAGvE;AAID,MAAM,WAAW,qBAAqB;IACpC;;;;;OAKG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC3B;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,SAAS,CAAC,OAAO,GAAG,IAAI,CAAC,EACnC,EAAE,gBAAgB,EAAE,GAAE,qBAA0B,GAC/C,IAAI,CA0BN"}
@@ -0,0 +1,41 @@
1
+ import { useEffect as e, useState as t } from "react";
2
+ //#region src/shared/hooks/useReturnFocus.ts
3
+ function n(e) {
4
+ return "focus" in e && typeof e.focus == "function";
5
+ }
6
+ function r(e, t) {
7
+ let n = e.activeElement;
8
+ return !n || n === e.body || !n.isConnected ? !0 : !!(t && t.contains(n));
9
+ }
10
+ function i(e) {
11
+ return !e || !e.isConnected || !n(e) ? !1 : !("disabled" in e && e.disabled === !0);
12
+ }
13
+ function a(e, t) {
14
+ for (let n of t) if (i(n) && (n.focus(), e.activeElement === n)) return n;
15
+ return null;
16
+ }
17
+ function o(e) {
18
+ let t = e.activeElement;
19
+ return t && t !== e.body ? t : null;
20
+ }
21
+ var s = () => typeof document > "u" ? null : document;
22
+ function c(n, { fallbackSelector: i } = {}) {
23
+ let [c] = t(() => {
24
+ let e = s();
25
+ return e ? o(e) : null;
26
+ });
27
+ e(() => {
28
+ let e = s(), t = n.current;
29
+ if (!e || !t) return;
30
+ let l = i ? t.closest(i) : null, u = o(e), d = c?.isConnected ? c : u && !t.contains(u) ? u : null;
31
+ return () => {
32
+ t.isConnected || r(e, t) && a(e, [d, l]);
33
+ };
34
+ }, [
35
+ n,
36
+ c,
37
+ i
38
+ ]);
39
+ }
40
+ //#endregion
41
+ export { r as focusWasDropped, o as focusedControl, a as returnFocusTo, c as useReturnFocus };
@@ -1,4 +1,4 @@
1
- import { ReactNode } from 'react';
1
+ import { CSSProperties, ReactNode } from 'react';
2
2
  import { Brand, ThemeMode, Density, Typography, GlassIntensity } from './shell/ThemeProvider';
3
3
  import { TranslationDictionary } from './shell/I18nProvider';
4
4
  import { BurdenoffEventName } from '../events';
@@ -116,6 +116,17 @@ export interface AppShellObservabilityEnv {
116
116
  VITE_OTEL_HTTP_ENDPOINT?: string;
117
117
  VITE_BACKEND_AUDIT_ENDPOINT?: string;
118
118
  }
119
+ /**
120
+ * sonner's `richColors` palette, mapped onto the semantic status tokens.
121
+ *
122
+ * Left to itself sonner paints rich toasts with its own hard-coded colours, and
123
+ * its error pair measures 4.35:1 — under the WCAG AA 4.5:1 floor for the
124
+ * toast's 13px text (BOFF-8074). The status tokens clear AA in the light, dark
125
+ * and high-contrast themes, and they follow the app's theme, which sonner's own
126
+ * `data-sonner-theme` (always `light` here) does not. Set inline on the toaster
127
+ * element, they override sonner's stylesheet defaults.
128
+ */
129
+ export declare const RICH_TOAST_TOKEN_STYLE: CSSProperties;
119
130
  export declare function resolveAppShellObservabilityConfig(productSlug: string, env: AppShellObservabilityEnv): AppShellObservabilityConfig;
120
131
  export interface AppShellProviderProps {
121
132
  config: AppShellConfig;
@@ -1 +1 @@
1
- {"version":3,"file":"AppShellProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/AppShellProvider.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"AppShellProvider.d.ts","sourceRoot":"","sources":["../../../src/shared/providers/AppShellProvider.tsx"],"names":[],"mappings":"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"}