@burdenoff/fe-libs 2026.930.1 → 2026.930.3
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.
- package/dist/shared/assistant/i18nManifest.d.ts +1 -1
- package/dist/shared/assistant/i18nManifest.d.ts.map +1 -1
- package/dist/shared/assistant/i18nManifest.js +1 -1
- package/dist/shared/assistant/preview/AssistantPreviewOverlay.d.ts.map +1 -1
- package/dist/shared/assistant/preview/AssistantPreviewOverlay.js +26 -25
- package/dist/shared/assistant/preview/types.d.ts +34 -4
- package/dist/shared/assistant/preview/types.d.ts.map +1 -1
- package/dist/shared/assistant/preview/types.js +6 -0
- package/dist/shared/assistant/ui/AIAssistantPanel.d.ts +5 -0
- package/dist/shared/assistant/ui/AIAssistantPanel.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AIAssistantPanel.js +67 -66
- package/dist/shared/assistant/ui/AssistantChatArea.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantChatArea.js +1 -0
- package/dist/shared/assistant/ui/AssistantEmptyState.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantEmptyState.js +24 -18
- package/dist/shared/assistant/ui/AssistantHeader.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantHeader.js +45 -44
- package/dist/shared/assistant/ui/AssistantOverlay.d.ts +14 -1
- package/dist/shared/assistant/ui/AssistantOverlay.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantOverlay.js +105 -90
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts +2 -0
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantWriteConfirmDialog.js +104 -104
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.d.ts +7 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.js +91 -87
- package/dist/shared/assistant/ui/AssistantWriteProposalSlot.d.ts.map +1 -1
- package/dist/shared/assistant/ui/AssistantWriteProposalSlot.js +3 -2
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts +38 -0
- package/dist/shared/assistant/ui/assistantOverlayState.d.ts.map +1 -1
- package/dist/shared/assistant/ui/assistantOverlayState.js +14 -10
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts +9 -0
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.d.ts.map +1 -1
- package/dist/shared/assistant/ui/composer/AssistantAttachmentButton.js +37 -33
- package/dist/shared/assistant/ui/composer/AssistantComposer.d.ts.map +1 -1
- package/dist/shared/assistant/ui/composer/AssistantComposer.js +2 -1
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts +16 -0
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.d.ts.map +1 -1
- package/dist/shared/assistant/ui/composer/AssistantConnectSourceItem.js +27 -24
- package/dist/shared/assistant/ui/useWriteProposalConfirm.d.ts +2 -2
- package/dist/shared/assistant/ui/useWriteProposals.d.ts +6 -0
- package/dist/shared/assistant/ui/useWriteProposals.d.ts.map +1 -1
- package/dist/shared/assistant/ui/useWriteProposals.js +11 -3
- package/dist/shared/assistant/ui/writeProposalPresentation.d.ts +26 -6
- package/dist/shared/assistant/ui/writeProposalPresentation.d.ts.map +1 -1
- package/dist/shared/assistant/ui/writeProposalPresentation.js +23 -16
- package/dist/shared-assistant.js +93 -92
- package/package.json +1 -1
|
@@ -1,81 +1,82 @@
|
|
|
1
1
|
import { useAssistantTr as e } from "../i18n.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
2
|
+
import { hasAssistantPreviewSurface as t } from "../preview/types.js";
|
|
3
|
+
import { useAssistantPreview as n } from "../preview/context.js";
|
|
4
|
+
import { AssistantMoreMenu as r } from "./AssistantMoreMenu.js";
|
|
5
|
+
import { Eye as i, History as a, PanelBottom as o, PanelRight as s, Plus as c, Sparkles as l, X as u } from "lucide-react";
|
|
6
|
+
import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
|
|
6
7
|
//#region src/shared/assistant/ui/AssistantHeader.tsx
|
|
7
|
-
var
|
|
8
|
-
let
|
|
9
|
-
return /* @__PURE__ */
|
|
8
|
+
var m = ({ contextLabel: m, onNewConversation: h, onOpenHistory: g, historyOpen: _, onTogglePreview: v, previewOpen: y, onClose: b, docked: x, onToggleDock: S }) => {
|
|
9
|
+
let C = e(), w = n();
|
|
10
|
+
return /* @__PURE__ */ p("div", {
|
|
10
11
|
className: "flex items-center gap-2 border-b border-border-default bg-bg-elevated px-3 py-2.5",
|
|
11
|
-
children: [/* @__PURE__ */
|
|
12
|
+
children: [/* @__PURE__ */ p("div", {
|
|
12
13
|
className: "flex min-w-0 flex-1 items-center gap-2",
|
|
13
|
-
children: [/* @__PURE__ */
|
|
14
|
+
children: [/* @__PURE__ */ f("span", {
|
|
14
15
|
className: "flex size-7 flex-shrink-0 items-center justify-center rounded-lg bg-gradient-to-br from-action-primary-bg/25 to-action-primary-bg/5 text-action-primary-bg",
|
|
15
|
-
children: /* @__PURE__ */
|
|
16
|
-
}), /* @__PURE__ */
|
|
16
|
+
children: /* @__PURE__ */ f(l, { className: "size-4" })
|
|
17
|
+
}), /* @__PURE__ */ p("span", {
|
|
17
18
|
className: "min-w-0 flex-1",
|
|
18
|
-
children: [/* @__PURE__ */
|
|
19
|
+
children: [/* @__PURE__ */ f("span", {
|
|
19
20
|
className: "block truncate text-[14px] font-semibold leading-tight text-text-primary",
|
|
20
|
-
children:
|
|
21
|
-
}), /* @__PURE__ */
|
|
21
|
+
children: C("header.title", "AI Assistant")
|
|
22
|
+
}), /* @__PURE__ */ p("span", {
|
|
22
23
|
className: "block truncate text-[11px] leading-tight text-text-muted",
|
|
23
|
-
children: [
|
|
24
|
+
children: [C("header.ready", "Ready"), m && /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f("span", {
|
|
24
25
|
"aria-hidden": "true",
|
|
25
26
|
children: " · "
|
|
26
|
-
}),
|
|
27
|
+
}), C("header.context", "Context: {{page}}", { page: m })] })]
|
|
27
28
|
})]
|
|
28
29
|
})]
|
|
29
|
-
}), /* @__PURE__ */
|
|
30
|
+
}), /* @__PURE__ */ p("div", {
|
|
30
31
|
className: "flex flex-shrink-0 items-center gap-0.5",
|
|
31
32
|
children: [
|
|
32
|
-
/* @__PURE__ */
|
|
33
|
+
/* @__PURE__ */ f("button", {
|
|
33
34
|
type: "button",
|
|
34
|
-
onClick:
|
|
35
|
+
onClick: h,
|
|
35
36
|
className: "rounded-lg p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
|
|
36
|
-
"aria-label":
|
|
37
|
+
"aria-label": C("header.newConversation", "New conversation"),
|
|
37
38
|
"data-testid": "assistant-new-conversation",
|
|
38
|
-
children: /* @__PURE__ */
|
|
39
|
+
children: /* @__PURE__ */ f(c, { className: "size-4" })
|
|
39
40
|
}),
|
|
40
|
-
/* @__PURE__ */
|
|
41
|
+
/* @__PURE__ */ f("button", {
|
|
41
42
|
type: "button",
|
|
42
|
-
onClick:
|
|
43
|
-
className: `rounded-lg p-1.5 transition-colors ${
|
|
44
|
-
"aria-label":
|
|
45
|
-
"aria-pressed":
|
|
43
|
+
onClick: g,
|
|
44
|
+
className: `rounded-lg p-1.5 transition-colors ${_ ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
|
|
45
|
+
"aria-label": C("header.history", "Conversation history"),
|
|
46
|
+
"aria-pressed": _,
|
|
46
47
|
"data-testid": "assistant-open-history",
|
|
47
|
-
children: /* @__PURE__ */
|
|
48
|
+
children: /* @__PURE__ */ f(a, { className: "size-4" })
|
|
48
49
|
}),
|
|
49
|
-
|
|
50
|
+
t(w) && v && /* @__PURE__ */ f("button", {
|
|
50
51
|
type: "button",
|
|
51
|
-
onClick:
|
|
52
|
-
className: `rounded-lg p-1.5 transition-colors ${
|
|
53
|
-
"aria-label":
|
|
54
|
-
"aria-pressed": !!
|
|
52
|
+
onClick: v,
|
|
53
|
+
className: `rounded-lg p-1.5 transition-colors ${y ? "bg-action-primary-bg/15 text-action-primary-bg" : "text-text-secondary hover:bg-bg-sunken hover:text-text-primary"}`,
|
|
54
|
+
"aria-label": w.label ?? C("header.preview", "Preview"),
|
|
55
|
+
"aria-pressed": !!y,
|
|
55
56
|
"data-testid": "assistant-toggle-preview",
|
|
56
|
-
children: /* @__PURE__ */
|
|
57
|
+
children: /* @__PURE__ */ f(i, { className: "size-4" })
|
|
57
58
|
}),
|
|
58
|
-
/* @__PURE__ */
|
|
59
|
-
|
|
59
|
+
/* @__PURE__ */ f(r, {}),
|
|
60
|
+
S && /* @__PURE__ */ f("button", {
|
|
60
61
|
type: "button",
|
|
61
|
-
onClick:
|
|
62
|
+
onClick: S,
|
|
62
63
|
className: "hidden rounded-lg p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary sm:inline-flex",
|
|
63
|
-
"aria-label":
|
|
64
|
-
"aria-pressed":
|
|
64
|
+
"aria-label": x ? C("header.float", "Float chat window") : C("header.dock", "Dock to side panel"),
|
|
65
|
+
"aria-pressed": x,
|
|
65
66
|
"data-testid": "assistant-toggle-dock",
|
|
66
|
-
children:
|
|
67
|
+
children: f(x ? o : s, { className: "size-4" })
|
|
67
68
|
}),
|
|
68
|
-
/* @__PURE__ */
|
|
69
|
+
/* @__PURE__ */ f("button", {
|
|
69
70
|
type: "button",
|
|
70
|
-
onClick:
|
|
71
|
+
onClick: b,
|
|
71
72
|
className: "rounded-lg p-1.5 text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary",
|
|
72
|
-
"aria-label":
|
|
73
|
+
"aria-label": C("header.close", "Close assistant"),
|
|
73
74
|
"data-testid": "assistant-close",
|
|
74
|
-
children: /* @__PURE__ */
|
|
75
|
+
children: /* @__PURE__ */ f(u, { className: "size-4" })
|
|
75
76
|
})
|
|
76
77
|
]
|
|
77
78
|
})]
|
|
78
79
|
});
|
|
79
80
|
};
|
|
80
81
|
//#endregion
|
|
81
|
-
export {
|
|
82
|
+
export { m as AssistantHeader };
|
|
@@ -12,6 +12,11 @@ export interface AssistantOverlayContextValue {
|
|
|
12
12
|
toggleDock: () => void;
|
|
13
13
|
/** Width the docked panel takes from the page right now, in px (0 if none). */
|
|
14
14
|
dockWidthPx: number;
|
|
15
|
+
/**
|
|
16
|
+
* How far the open assistant reaches in from the page's right edge, in px:
|
|
17
|
+
* docked or floating, 0 when closed or on a phone (BOFF-7799).
|
|
18
|
+
*/
|
|
19
|
+
panelInsetPx: number;
|
|
15
20
|
keys: AssistantOverlayKeys;
|
|
16
21
|
}
|
|
17
22
|
/** The overlay state in force, or null when no provider is mounted. */
|
|
@@ -22,6 +27,13 @@ export declare function useAssistantOverlayOrNull(): AssistantOverlayContextValu
|
|
|
22
27
|
* published as `var(--assistant-dock-width)` on `<html>` for CSS consumers.
|
|
23
28
|
*/
|
|
24
29
|
export declare function useAssistantDockWidth(): number;
|
|
30
|
+
/**
|
|
31
|
+
* How far, in px, the open assistant reaches in from the right of the page,
|
|
32
|
+
* docked OR floating: 0 when it is closed, on a phone, or not mounted at all.
|
|
33
|
+
* The same value is published as `var(--assistant-panel-inset)` on `<html>`.
|
|
34
|
+
* See `ASSISTANT_PANEL_INSET_VAR` for why it differs from the dock width.
|
|
35
|
+
*/
|
|
36
|
+
export declare function useAssistantPanelInset(): number;
|
|
25
37
|
/**
|
|
26
38
|
* Listen for `<product>:quota-exhausted` and hand each wall to the product.
|
|
27
39
|
*
|
|
@@ -62,7 +74,8 @@ export interface AssistantOverlayProviderProps {
|
|
|
62
74
|
* the panel's own close and dock buttons) without each path remembering to
|
|
63
75
|
* persist.
|
|
64
76
|
*
|
|
65
|
-
* Mount ONE per page: the published dock width
|
|
77
|
+
* Mount ONE per page: the published dock width and panel inset are single
|
|
78
|
+
* `<html>` variables.
|
|
66
79
|
*/
|
|
67
80
|
export declare function AssistantOverlayProvider({ keyPrefix, quota, children, }: AssistantOverlayProviderProps): import("react/jsx-runtime").JSX.Element;
|
|
68
81
|
/** What the overlay hands the panel it renders. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantOverlay.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantOverlay.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,EAUL,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AAGf,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAK1C,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAClF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AAErE,OAAO,
|
|
1
|
+
{"version":3,"file":"AssistantOverlay.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,174 +2,189 @@ import { useAssistantTr as e } from "../i18n.js";
|
|
|
2
2
|
import { quotaExhaustedEventName as t } from "../quota.js";
|
|
3
3
|
import { assistantPanelOwnsEscape as n } from "./panelOverlays.js";
|
|
4
4
|
import { AssistantPreviewBridgeHost as r } from "../preview/bridgeHost.js";
|
|
5
|
-
import { ASSISTANT_DOCK_WIDTH_VAR as i, ASSISTANT_OVERLAY_DESKTOP_QUERY as a, ASSISTANT_OVERLAY_TOP_VAR as o,
|
|
6
|
-
import { useAssistantServerHistory as
|
|
7
|
-
import { AIAssistantPanel as
|
|
8
|
-
import { createContext as
|
|
9
|
-
import { Sparkles as
|
|
10
|
-
import { jsx as
|
|
5
|
+
import { ASSISTANT_DOCK_WIDTH_VAR as i, ASSISTANT_OVERLAY_DESKTOP_QUERY as a, ASSISTANT_OVERLAY_TOP_VAR as o, ASSISTANT_PANEL_INSET_VAR as s, aboveAssistantBottomChrome as c, assistantOverlayClassName as l, assistantOverlayEscapeAction as u, assistantOverlayKeys as d, assistantQuotaKindOf as f, closestAround as p, createAssistantNavigate as m, isAssistantToggleShortcut as h, nextAssistantOpenState as g, publishedAssistantDockWidth as _, publishedAssistantPanelInset as v, readAssistantOverlayFlag as y, requestedAssistantOpenState as b, writeAssistantOverlayFlag as x } from "./assistantOverlayState.js";
|
|
6
|
+
import { useAssistantServerHistory as S } from "../history/useAssistantServerHistory.js";
|
|
7
|
+
import { AIAssistantPanel as C } from "./AIAssistantPanel.js";
|
|
8
|
+
import { createContext as w, useCallback as T, useContext as E, useEffect as D, useMemo as O, useRef as k, useState as A, useSyncExternalStore as j } from "react";
|
|
9
|
+
import { Sparkles as M } from "lucide-react";
|
|
10
|
+
import { jsx as N, jsxs as P } from "react/jsx-runtime";
|
|
11
11
|
//#region src/shared/assistant/ui/AssistantOverlay.tsx
|
|
12
|
-
var
|
|
13
|
-
function
|
|
14
|
-
return
|
|
12
|
+
var F = w(null);
|
|
13
|
+
function I() {
|
|
14
|
+
return E(F);
|
|
15
15
|
}
|
|
16
|
-
function
|
|
17
|
-
return
|
|
16
|
+
function L() {
|
|
17
|
+
return E(F)?.dockWidthPx ?? 0;
|
|
18
18
|
}
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
function R() {
|
|
20
|
+
return E(F)?.panelInsetPx ?? 0;
|
|
21
|
+
}
|
|
22
|
+
var z = () => typeof window > "u" ? void 0 : window.sessionStorage, B = () => typeof window > "u" ? void 0 : window.localStorage;
|
|
23
|
+
function V(e) {
|
|
21
24
|
if (typeof window > "u" || typeof window.matchMedia != "function") return () => {};
|
|
22
25
|
let t = window.matchMedia(a);
|
|
23
26
|
return t.addEventListener("change", e), () => t.removeEventListener("change", e);
|
|
24
27
|
}
|
|
25
|
-
function
|
|
28
|
+
function H() {
|
|
26
29
|
return typeof window < "u" && typeof window.matchMedia == "function" && window.matchMedia("(min-width: 640px)").matches;
|
|
27
30
|
}
|
|
28
|
-
function
|
|
29
|
-
return
|
|
31
|
+
function U() {
|
|
32
|
+
return j(V, H, () => !1);
|
|
30
33
|
}
|
|
31
|
-
function
|
|
32
|
-
let r =
|
|
33
|
-
|
|
34
|
+
function W(e, n) {
|
|
35
|
+
let r = k(n);
|
|
36
|
+
D(() => {
|
|
34
37
|
r.current = n;
|
|
35
|
-
}, [n]),
|
|
38
|
+
}, [n]), D(() => {
|
|
36
39
|
if (!e || typeof window > "u") return;
|
|
37
|
-
let n = t(e), i = (e) => r.current(
|
|
40
|
+
let n = t(e), i = (e) => r.current(f(e), e);
|
|
38
41
|
return window.addEventListener(n, i), () => window.removeEventListener(n, i);
|
|
39
42
|
}, [e]);
|
|
40
43
|
}
|
|
41
|
-
var
|
|
42
|
-
function
|
|
43
|
-
let r =
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
}, [r.openStorageKey, a]),
|
|
47
|
-
|
|
48
|
-
}, [r.dockStorageKey,
|
|
44
|
+
var G = () => {};
|
|
45
|
+
function K({ keyPrefix: e, quota: t, children: n }) {
|
|
46
|
+
let r = O(() => d(e), [e]), [a, o] = A(() => y(z, r.openStorageKey)), [c, l] = A(() => y(B, r.dockStorageKey)), u = T(() => o(!0), []), f = T(() => o(!1), []), p = T(() => o((e) => !e), []), m = T(() => l((e) => !e), []);
|
|
47
|
+
D(() => {
|
|
48
|
+
x(z, r.openStorageKey, a);
|
|
49
|
+
}, [r.openStorageKey, a]), D(() => {
|
|
50
|
+
x(B, r.dockStorageKey, c);
|
|
51
|
+
}, [r.dockStorageKey, c]), D(() => {
|
|
49
52
|
if (typeof window > "u") return;
|
|
50
53
|
let e = (e) => {
|
|
51
|
-
let t =
|
|
52
|
-
o((e) =>
|
|
54
|
+
let t = b(e);
|
|
55
|
+
o((e) => g(e, t));
|
|
53
56
|
};
|
|
54
57
|
return window.addEventListener(r.toggleEvent, e), () => window.removeEventListener(r.toggleEvent, e);
|
|
55
|
-
}, [r.toggleEvent]),
|
|
58
|
+
}, [r.toggleEvent]), D(() => {
|
|
56
59
|
if (typeof document > "u") return;
|
|
57
60
|
let e = (e) => {
|
|
58
|
-
|
|
61
|
+
h(e) && (e.preventDefault(), o((e) => !e));
|
|
59
62
|
};
|
|
60
63
|
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
61
|
-
}, []),
|
|
62
|
-
let
|
|
64
|
+
}, []), W(t?.product ?? null, t?.onExhausted ?? G);
|
|
65
|
+
let S = U(), C = _({
|
|
66
|
+
isOpen: a,
|
|
67
|
+
docked: c,
|
|
68
|
+
isDesktop: S
|
|
69
|
+
}), w = v({
|
|
63
70
|
isOpen: a,
|
|
64
|
-
docked:
|
|
65
|
-
isDesktop:
|
|
71
|
+
docked: c,
|
|
72
|
+
isDesktop: S
|
|
66
73
|
});
|
|
67
|
-
|
|
74
|
+
D(() => {
|
|
68
75
|
if (typeof document > "u") return;
|
|
69
76
|
let e = document.documentElement.style;
|
|
70
|
-
return e.setProperty(i, `${
|
|
77
|
+
return e.setProperty(i, `${C}px`), () => {
|
|
71
78
|
e.removeProperty(i);
|
|
72
79
|
};
|
|
73
|
-
}, [
|
|
74
|
-
|
|
80
|
+
}, [C]), D(() => {
|
|
81
|
+
if (typeof document > "u") return;
|
|
82
|
+
let e = document.documentElement.style;
|
|
83
|
+
return e.setProperty(s, `${w}px`), () => {
|
|
84
|
+
e.removeProperty(s);
|
|
85
|
+
};
|
|
86
|
+
}, [w]);
|
|
87
|
+
let E = O(() => ({
|
|
75
88
|
isOpen: a,
|
|
76
|
-
open:
|
|
77
|
-
close:
|
|
78
|
-
toggle:
|
|
79
|
-
docked:
|
|
80
|
-
toggleDock:
|
|
81
|
-
dockWidthPx:
|
|
89
|
+
open: u,
|
|
90
|
+
close: f,
|
|
91
|
+
toggle: p,
|
|
92
|
+
docked: c,
|
|
93
|
+
toggleDock: m,
|
|
94
|
+
dockWidthPx: C,
|
|
95
|
+
panelInsetPx: w,
|
|
82
96
|
keys: r
|
|
83
97
|
}), [
|
|
84
98
|
a,
|
|
85
|
-
|
|
86
|
-
d,
|
|
99
|
+
u,
|
|
87
100
|
f,
|
|
88
|
-
s,
|
|
89
101
|
p,
|
|
90
|
-
|
|
102
|
+
c,
|
|
103
|
+
m,
|
|
104
|
+
C,
|
|
105
|
+
w,
|
|
91
106
|
r
|
|
92
107
|
]);
|
|
93
|
-
return /* @__PURE__ */
|
|
94
|
-
value:
|
|
108
|
+
return /* @__PURE__ */ N(F.Provider, {
|
|
109
|
+
value: E,
|
|
95
110
|
children: n
|
|
96
111
|
});
|
|
97
112
|
}
|
|
98
|
-
var
|
|
113
|
+
var q = (e, t) => /* @__PURE__ */ N(C, {
|
|
99
114
|
...e,
|
|
100
115
|
...t
|
|
101
116
|
});
|
|
102
|
-
function
|
|
103
|
-
let t =
|
|
104
|
-
return t ? /* @__PURE__ */
|
|
117
|
+
function J(e) {
|
|
118
|
+
let t = I();
|
|
119
|
+
return t ? /* @__PURE__ */ N(Y, {
|
|
105
120
|
state: t,
|
|
106
121
|
...e
|
|
107
122
|
}) : null;
|
|
108
123
|
}
|
|
109
|
-
function
|
|
110
|
-
let { isOpen: y, close:
|
|
111
|
-
|
|
112
|
-
let [
|
|
124
|
+
function Y({ state: t, panelId: i = "ai-assistant", panelProps: a, renderPanel: s, navigate: d, isShellLessTarget: f, topOffsetPx: h = 56, launcherIcon: g, launcherBottomInset: _ = "1.5rem", showLauncher: v = !0 }) {
|
|
125
|
+
let { isOpen: y, close: b, toggle: x, docked: C, toggleDock: w } = t, T = e();
|
|
126
|
+
S(a?.serverHistory === !0);
|
|
127
|
+
let [E, k] = A(!1), j = O(() => d ? m({
|
|
113
128
|
navigate: d,
|
|
114
|
-
isShellLessTarget:
|
|
115
|
-
isDesktop:
|
|
116
|
-
collapseSheet: () =>
|
|
129
|
+
isShellLessTarget: f,
|
|
130
|
+
isDesktop: H,
|
|
131
|
+
collapseSheet: () => k(!1),
|
|
117
132
|
openInNewTab: (e) => window.open(e, "_blank", "noopener,noreferrer")
|
|
118
|
-
}) : void 0, [d,
|
|
119
|
-
|
|
133
|
+
}) : void 0, [d, f]);
|
|
134
|
+
D(() => {
|
|
120
135
|
if (!y) return;
|
|
121
136
|
let e = (e) => {
|
|
122
|
-
|
|
137
|
+
u({
|
|
123
138
|
key: e.key,
|
|
124
139
|
isOpen: y,
|
|
125
140
|
alreadyHandled: e.defaultPrevented,
|
|
126
141
|
dialogOpen: document.querySelector("[role=\"dialog\"],[role=\"alertdialog\"],dialog[open]") !== null,
|
|
127
|
-
pressedInsideDialog:
|
|
142
|
+
pressedInsideDialog: p(e.target, "[role=\"dialog\"],[role=\"alertdialog\"],dialog[open]") !== null,
|
|
128
143
|
panelOwnsEscape: n()
|
|
129
|
-
}) === "close" && (e.preventDefault(),
|
|
144
|
+
}) === "close" && (e.preventDefault(), b());
|
|
130
145
|
};
|
|
131
146
|
return document.addEventListener("keydown", e), () => document.removeEventListener("keydown", e);
|
|
132
|
-
}, [y,
|
|
147
|
+
}, [y, b]);
|
|
133
148
|
let F = {
|
|
134
149
|
panelId: i,
|
|
135
150
|
visible: !0,
|
|
136
|
-
onClose:
|
|
151
|
+
onClose: b,
|
|
137
152
|
docked: C,
|
|
138
153
|
onToggleDock: w,
|
|
139
|
-
onNavigate:
|
|
140
|
-
}, I =
|
|
141
|
-
return /* @__PURE__ */
|
|
154
|
+
onNavigate: j
|
|
155
|
+
}, I = T("overlay.launcher", "AI Assistant"), L = { [o]: `${h}px` };
|
|
156
|
+
return /* @__PURE__ */ P(r, {
|
|
142
157
|
preview: a?.preview,
|
|
143
|
-
children: [y && /* @__PURE__ */
|
|
144
|
-
className:
|
|
145
|
-
expanded:
|
|
158
|
+
children: [y && /* @__PURE__ */ P("div", {
|
|
159
|
+
className: l({
|
|
160
|
+
expanded: E,
|
|
146
161
|
docked: C
|
|
147
162
|
}),
|
|
148
163
|
style: L,
|
|
149
164
|
"data-testid": "assistant-overlay",
|
|
150
|
-
children: [/* @__PURE__ */
|
|
165
|
+
children: [/* @__PURE__ */ N("button", {
|
|
151
166
|
type: "button",
|
|
152
|
-
onClick: () =>
|
|
167
|
+
onClick: () => k((e) => !e),
|
|
153
168
|
className: "flex w-full shrink-0 justify-center pt-2 pb-1 sm:hidden",
|
|
154
|
-
"aria-label":
|
|
155
|
-
"aria-expanded":
|
|
169
|
+
"aria-label": E ? T("sheet.collapse", "Shrink the assistant") : T("sheet.expand", "Expand the assistant"),
|
|
170
|
+
"aria-expanded": E,
|
|
156
171
|
"data-testid": "assistant-sheet-handle",
|
|
157
|
-
children: /* @__PURE__ */
|
|
158
|
-
}), /* @__PURE__ */
|
|
172
|
+
children: /* @__PURE__ */ N("span", { className: "h-1.5 w-10 rounded-full bg-border-strong" })
|
|
173
|
+
}), /* @__PURE__ */ N("div", {
|
|
159
174
|
className: "flex min-h-0 flex-1 flex-col",
|
|
160
|
-
children:
|
|
175
|
+
children: s ? s(F) : q(a, F)
|
|
161
176
|
})]
|
|
162
|
-
}), v && /* @__PURE__ */
|
|
177
|
+
}), v && /* @__PURE__ */ N("button", {
|
|
163
178
|
type: "button",
|
|
164
|
-
onClick:
|
|
165
|
-
title:
|
|
179
|
+
onClick: x,
|
|
180
|
+
title: T("overlay.launcherTitle", "AI Assistant ({{shortcut}})", { shortcut: "Ctrl+Shift+A" }),
|
|
166
181
|
"aria-label": I,
|
|
167
182
|
"aria-haspopup": "dialog",
|
|
168
183
|
"aria-expanded": y,
|
|
169
184
|
"data-testid": "assistant-fab",
|
|
170
|
-
style: { bottom:
|
|
185
|
+
style: { bottom: c(_) },
|
|
171
186
|
className: "fixed right-6 z-30 size-14 items-center justify-center rounded-full border border-border-strong bg-[var(--color-accent-soft)] text-action-primary-bg shadow-float transition-colors duration-200 hover:border-action-primary-bg focus:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)] cursor-pointer " + (y ? "hidden sm:inline-flex" : "inline-flex"),
|
|
172
|
-
children: g ?? /* @__PURE__ */
|
|
187
|
+
children: g ?? /* @__PURE__ */ N(M, {
|
|
173
188
|
className: "size-6",
|
|
174
189
|
"aria-hidden": "true"
|
|
175
190
|
})
|
|
@@ -177,4 +192,4 @@ function K({ state: t, panelId: i = "ai-assistant", panelProps: a, renderPanel:
|
|
|
177
192
|
});
|
|
178
193
|
}
|
|
179
194
|
//#endregion
|
|
180
|
-
export {
|
|
195
|
+
export { J as AssistantOverlay, K as AssistantOverlayProvider, L as useAssistantDockWidth, I as useAssistantOverlayOrNull, R as useAssistantPanelInset, W as useAssistantQuotaExhausted };
|
|
@@ -41,6 +41,8 @@ export interface AssistantWriteConfirmDialogProps {
|
|
|
41
41
|
view: WriteProposalView | null;
|
|
42
42
|
/** The issuing sandbox's clock when `view` was read (`list().serverNow`). */
|
|
43
43
|
serverNow: number;
|
|
44
|
+
/** This device's clock when that read arrived (BOFF-8163). */
|
|
45
|
+
arrivedAt: number;
|
|
44
46
|
/** The ISSUING sandbox's `/health` write capabilities; absent = unknown. */
|
|
45
47
|
capabilities: SandboxWriteCapabilities | null | undefined;
|
|
46
48
|
/** A turn is running in this conversation: no decision can be made. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AssistantWriteConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantWriteConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,EAAE,EAGR,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EACV,wBAAwB,EAExB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAmB3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,gCAAgC;IAC/C,mFAAmF;IACnF,IAAI,EAAE,OAAO,CAAC;IACd,6DAA6D;IAC7D,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,YAAY,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAC;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB;;;OAGG;IACH,SAAS,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,qDAAqD;IACrD,SAAS,EAAE,CACT,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,iBAAiB,KACvB,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,iEAAiE;IACjE,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAiBD,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAC1C,gCAAgC,CAUjC,CAAC"}
|
|
1
|
+
{"version":3,"file":"AssistantWriteConfirmDialog.d.ts","sourceRoot":"","sources":["../../../../src/shared/assistant/ui/AssistantWriteConfirmDialog.tsx"],"names":[],"mappings":"AAAA,OAAO,EAKL,KAAK,EAAE,EAGR,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAC3C,OAAO,KAAK,EACV,wBAAwB,EAExB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAmB3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA8BG;AAEH,4DAA4D;AAC5D,eAAO,MAAM,oBAAoB,MAAM,CAAC;AAExC,MAAM,WAAW,gCAAgC;IAC/C,mFAAmF;IACnF,IAAI,EAAE,OAAO,CAAC;IACd,6DAA6D;IAC7D,IAAI,EAAE,iBAAiB,GAAG,IAAI,CAAC;IAC/B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,8DAA8D;IAC9D,SAAS,EAAE,MAAM,CAAC;IAClB,4EAA4E;IAC5E,YAAY,EAAE,wBAAwB,GAAG,IAAI,GAAG,SAAS,CAAC;IAC1D,uEAAuE;IACvE,YAAY,EAAE,OAAO,CAAC;IACtB,EAAE,EAAE,WAAW,CAAC;IAChB;;;OAGG;IACH,SAAS,EAAE,CAAC,OAAO,EAAE,iBAAiB,KAAK,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IACnE,qDAAqD;IACrD,SAAS,EAAE,CACT,MAAM,EAAE,eAAe,EACvB,OAAO,EAAE,iBAAiB,KACvB,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;IAC7B,iEAAiE;IACjE,WAAW,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACxC,6EAA6E;IAC7E,SAAS,EAAE,MAAM,IAAI,CAAC;CACvB;AAiBD,eAAO,MAAM,2BAA2B,EAAE,EAAE,CAC1C,gCAAgC,CAUjC,CAAC"}
|