@burdenoff/fe-libs 2026.617.1 → 2026.618.1
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/components/assistantWidget/AssistantWidget.d.ts +20 -0
- package/dist/shared/components/assistantWidget/AssistantWidget.d.ts.map +1 -0
- package/dist/shared/components/assistantWidget/AssistantWidget.js +211 -0
- package/dist/shared/components/assistantWidget/types.d.ts +41 -0
- package/dist/shared/components/assistantWidget/types.d.ts.map +1 -0
- package/dist/shared/components/assistantWidget/useVoiceInput.d.ts +19 -0
- package/dist/shared/components/assistantWidget/useVoiceInput.d.ts.map +1 -0
- package/dist/shared/components/assistantWidget/useVoiceInput.js +41 -0
- package/dist/shared/components/index.d.ts +5 -0
- package/dist/shared/components/index.d.ts.map +1 -1
- package/dist/shared/utils/cn.js +8 -0
- package/dist/shared-components.js +3 -1
- package/dist/shared.js +58 -56
- package/package.json +1 -1
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { FC } from 'react';
|
|
2
|
+
import { AssistantTransport } from './types';
|
|
3
|
+
export interface AssistantWidgetProps {
|
|
4
|
+
/** Backend adapter supplied by the host product. */
|
|
5
|
+
transport: AssistantTransport;
|
|
6
|
+
/** Window header title. */
|
|
7
|
+
title?: string;
|
|
8
|
+
/** Short helper line shown above the first message. */
|
|
9
|
+
subtitle?: string;
|
|
10
|
+
/** Input placeholder. */
|
|
11
|
+
placeholder?: string;
|
|
12
|
+
/** Extra classes for the launcher button (e.g. to reposition). */
|
|
13
|
+
launcherClassName?: string;
|
|
14
|
+
/** Speech-recognition language tag. */
|
|
15
|
+
voiceLang?: string;
|
|
16
|
+
}
|
|
17
|
+
/** External toggle hook so command palettes / plugins can open the widget. */
|
|
18
|
+
export declare const ASSISTANT_WIDGET_TOGGLE_EVENT = "bf:toggle-assistant-widget";
|
|
19
|
+
export declare const AssistantWidget: FC<AssistantWidgetProps>;
|
|
20
|
+
//# sourceMappingURL=AssistantWidget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AssistantWidget.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/assistantWidget/AssistantWidget.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,EAML,KAAK,EAAE,EAER,MAAM,OAAO,CAAC;AAIf,OAAO,KAAK,EAAE,kBAAkB,EAA0B,MAAM,SAAS,CAAC;AAE1E,MAAM,WAAW,oBAAoB;IACnC,oDAAoD;IACpD,SAAS,EAAE,kBAAkB,CAAC;IAC9B,2BAA2B;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,uDAAuD;IACvD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yBAAyB;IACzB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kEAAkE;IAClE,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,uCAAuC;IACvC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,8EAA8E;AAC9E,eAAO,MAAM,6BAA6B,+BAA+B,CAAC;AAyB1E,eAAO,MAAM,eAAe,EAAE,EAAE,CAAC,oBAAoB,CA6RpD,CAAC"}
|
|
@@ -0,0 +1,211 @@
|
|
|
1
|
+
import { cn as e } from "../../utils/cn.js";
|
|
2
|
+
import { useVoiceInput as t } from "./useVoiceInput.js";
|
|
3
|
+
import { useCallback as n, useEffect as r, useMemo as i, useRef as a, useState as o } from "react";
|
|
4
|
+
import { Loader2 as s, MessageCircle as c, Mic as l, Send as u, Sparkles as d, X as f } from "lucide-react";
|
|
5
|
+
import { Fragment as p, jsx as m, jsxs as h } from "react/jsx-runtime";
|
|
6
|
+
//#region src/shared/components/assistantWidget/AssistantWidget.tsx
|
|
7
|
+
var g = "bf:toggle-assistant-widget", _ = "bf:assistant-widget:isOpen";
|
|
8
|
+
function v() {
|
|
9
|
+
if (typeof window > "u") return !1;
|
|
10
|
+
try {
|
|
11
|
+
return window.sessionStorage.getItem(_) === "1";
|
|
12
|
+
} catch {
|
|
13
|
+
return !1;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function y(e) {
|
|
17
|
+
if (!(typeof window > "u")) try {
|
|
18
|
+
window.sessionStorage.setItem(_, e ? "1" : "0");
|
|
19
|
+
} catch {}
|
|
20
|
+
}
|
|
21
|
+
function b() {
|
|
22
|
+
return `${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
|
|
23
|
+
}
|
|
24
|
+
var x = ({ transport: _, title: x = "AI Assistant", subtitle: S = "Ask me to do things on this screen — I can run them for you.", placeholder: C = "Ask anything, or describe what to create…", launcherClassName: w, voiceLang: T = "en-US" }) => {
|
|
25
|
+
let [E, D] = o(() => v()), [O, k] = o([]), [A, j] = o(""), [M, N] = o(!1), P = a(null), F = a(null), I = a(null), L = t(T), R = n(() => {
|
|
26
|
+
y(!0), D(!0);
|
|
27
|
+
}, []), z = n(() => {
|
|
28
|
+
y(!1), D(!1);
|
|
29
|
+
}, []), B = n(() => {
|
|
30
|
+
D((e) => {
|
|
31
|
+
let t = !e;
|
|
32
|
+
return y(t), t;
|
|
33
|
+
});
|
|
34
|
+
}, []);
|
|
35
|
+
r(() => {
|
|
36
|
+
let e = (e) => {
|
|
37
|
+
let t = e.detail;
|
|
38
|
+
t?.open === !0 ? R() : t?.open === !1 ? z() : B();
|
|
39
|
+
};
|
|
40
|
+
return window.addEventListener(g, e), () => window.removeEventListener(g, e);
|
|
41
|
+
}, [
|
|
42
|
+
R,
|
|
43
|
+
z,
|
|
44
|
+
B
|
|
45
|
+
]), r(() => {
|
|
46
|
+
L.isListening && L.transcript && j(L.transcript);
|
|
47
|
+
}, [L.transcript, L.isListening]), r(() => {
|
|
48
|
+
E && F.current && (F.current.scrollTop = F.current.scrollHeight);
|
|
49
|
+
}, [O, E]);
|
|
50
|
+
let V = n((e, t) => {
|
|
51
|
+
k((n) => n.map((n) => n.id === e ? {
|
|
52
|
+
...n,
|
|
53
|
+
...t
|
|
54
|
+
} : n));
|
|
55
|
+
}, []), H = n(async () => {
|
|
56
|
+
let e = A.trim();
|
|
57
|
+
if (!e || M) return;
|
|
58
|
+
L.isListening && L.stop(), L.reset(), j(""), P.current && (P.current.style.height = "auto");
|
|
59
|
+
let t = {
|
|
60
|
+
id: b(),
|
|
61
|
+
role: "user",
|
|
62
|
+
content: e
|
|
63
|
+
}, n = b();
|
|
64
|
+
k((e) => [
|
|
65
|
+
...e,
|
|
66
|
+
t,
|
|
67
|
+
{
|
|
68
|
+
id: n,
|
|
69
|
+
role: "assistant",
|
|
70
|
+
content: "",
|
|
71
|
+
pending: !0
|
|
72
|
+
}
|
|
73
|
+
]), N(!0);
|
|
74
|
+
let r = new AbortController();
|
|
75
|
+
I.current = r;
|
|
76
|
+
try {
|
|
77
|
+
let { text: t } = await _.sendPrompt({
|
|
78
|
+
prompt: e,
|
|
79
|
+
signal: r.signal,
|
|
80
|
+
onProgress: (e) => V(n, { content: e })
|
|
81
|
+
});
|
|
82
|
+
V(n, {
|
|
83
|
+
content: t,
|
|
84
|
+
pending: !1
|
|
85
|
+
});
|
|
86
|
+
} catch (e) {
|
|
87
|
+
V(n, {
|
|
88
|
+
content: `Sorry, I couldn't complete that: ${e instanceof Error ? e.message : "Something went wrong. Please try again."}`,
|
|
89
|
+
pending: !1,
|
|
90
|
+
error: !0
|
|
91
|
+
});
|
|
92
|
+
} finally {
|
|
93
|
+
N(!1), I.current = null;
|
|
94
|
+
}
|
|
95
|
+
}, [
|
|
96
|
+
A,
|
|
97
|
+
M,
|
|
98
|
+
V,
|
|
99
|
+
_,
|
|
100
|
+
L
|
|
101
|
+
]), U = n((e) => {
|
|
102
|
+
e.key === "Enter" && !e.shiftKey && (e.preventDefault(), H());
|
|
103
|
+
}, [H]), W = n(() => {
|
|
104
|
+
let e = P.current;
|
|
105
|
+
e && (e.style.height = "auto", e.style.height = `${Math.min(e.scrollHeight, 120)}px`);
|
|
106
|
+
}, []), G = n(() => {
|
|
107
|
+
L.isListening ? L.stop() : L.start();
|
|
108
|
+
}, [L]);
|
|
109
|
+
return /* @__PURE__ */ h(p, { children: [i(() => /* @__PURE__ */ m("button", {
|
|
110
|
+
type: "button",
|
|
111
|
+
onClick: B,
|
|
112
|
+
"aria-label": E ? "Close AI assistant" : "Open AI assistant",
|
|
113
|
+
"aria-expanded": E,
|
|
114
|
+
"data-testid": "assistant-widget-launcher",
|
|
115
|
+
className: e("fixed bottom-6 right-6 z-[100] inline-flex size-14 items-center justify-center rounded-full", "bg-action-primary-bg text-action-primary-text shadow-xl transition-transform duration-200", "hover:scale-105 hover:bg-action-primary-bg-hover focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong cursor-pointer", w),
|
|
116
|
+
children: m(E ? f : d, { className: "size-6" })
|
|
117
|
+
}), [
|
|
118
|
+
E,
|
|
119
|
+
B,
|
|
120
|
+
w
|
|
121
|
+
]), E ? /* @__PURE__ */ h("div", {
|
|
122
|
+
role: "dialog",
|
|
123
|
+
"aria-label": x,
|
|
124
|
+
"data-testid": "assistant-widget-window",
|
|
125
|
+
className: e("fixed z-[100] flex flex-col overflow-hidden rounded-xl border border-border-default bg-bg-surface shadow-2xl", "bottom-24 right-6 h-[560px] max-h-[calc(100vh-7rem)] w-[calc(100vw-3rem)] sm:w-[400px]", "animate-in slide-in-from-bottom-2 fade-in duration-200"),
|
|
126
|
+
children: [
|
|
127
|
+
/* @__PURE__ */ h("div", {
|
|
128
|
+
className: "flex items-center justify-between gap-2 border-b border-border-subtle bg-bg-surface px-4 py-3",
|
|
129
|
+
children: [/* @__PURE__ */ h("div", {
|
|
130
|
+
className: "flex min-w-0 items-center gap-2",
|
|
131
|
+
children: [/* @__PURE__ */ m("span", {
|
|
132
|
+
className: "inline-flex size-7 shrink-0 items-center justify-center rounded-full bg-action-primary-bg/10 text-action-primary-bg",
|
|
133
|
+
children: /* @__PURE__ */ m(d, { className: "size-4" })
|
|
134
|
+
}), /* @__PURE__ */ m("h2", {
|
|
135
|
+
className: "truncate text-sm font-semibold text-text-primary",
|
|
136
|
+
children: x
|
|
137
|
+
})]
|
|
138
|
+
}), /* @__PURE__ */ m("button", {
|
|
139
|
+
type: "button",
|
|
140
|
+
onClick: z,
|
|
141
|
+
"aria-label": "Close AI assistant",
|
|
142
|
+
"data-testid": "assistant-widget-close",
|
|
143
|
+
className: "inline-flex size-8 shrink-0 items-center justify-center rounded-md text-text-secondary transition-colors hover:bg-bg-sunken hover:text-text-primary focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong cursor-pointer",
|
|
144
|
+
children: /* @__PURE__ */ m(f, { className: "size-4" })
|
|
145
|
+
})]
|
|
146
|
+
}),
|
|
147
|
+
/* @__PURE__ */ m("div", {
|
|
148
|
+
ref: F,
|
|
149
|
+
className: "flex-1 space-y-3 overflow-y-auto px-4 py-4",
|
|
150
|
+
"data-testid": "assistant-widget-messages",
|
|
151
|
+
children: O.length === 0 ? /* @__PURE__ */ h("div", {
|
|
152
|
+
className: "flex h-full flex-col items-center justify-center gap-3 text-center",
|
|
153
|
+
children: [/* @__PURE__ */ m("span", {
|
|
154
|
+
className: "inline-flex size-12 items-center justify-center rounded-full bg-bg-sunken text-action-primary-bg",
|
|
155
|
+
children: /* @__PURE__ */ m(c, { className: "size-6" })
|
|
156
|
+
}), /* @__PURE__ */ m("p", {
|
|
157
|
+
className: "max-w-[16rem] text-xs leading-relaxed text-text-secondary",
|
|
158
|
+
children: S
|
|
159
|
+
})]
|
|
160
|
+
}) : O.map((t) => /* @__PURE__ */ m("div", {
|
|
161
|
+
className: e("flex", t.role === "user" ? "justify-end" : "justify-start"),
|
|
162
|
+
children: /* @__PURE__ */ h("div", {
|
|
163
|
+
"data-testid": `assistant-widget-message-${t.role}`,
|
|
164
|
+
className: e("max-w-[85%] whitespace-pre-wrap break-words rounded-lg px-3 py-2 text-xs leading-relaxed", t.role === "user" ? "bg-action-primary-bg text-action-primary-text" : t.error ? "bg-status-error-bg/10 text-status-error-bg" : "bg-bg-sunken text-text-primary"),
|
|
165
|
+
children: [t.content || (t.pending, ""), t.pending ? /* @__PURE__ */ h("span", {
|
|
166
|
+
className: "mt-1 inline-flex items-center gap-1 text-text-secondary",
|
|
167
|
+
children: [/* @__PURE__ */ m(s, { className: "size-3 animate-spin" }), /* @__PURE__ */ m("span", { children: "Thinking…" })]
|
|
168
|
+
}) : null]
|
|
169
|
+
})
|
|
170
|
+
}, t.id))
|
|
171
|
+
}),
|
|
172
|
+
/* @__PURE__ */ h("div", {
|
|
173
|
+
className: "flex items-end gap-2 border-t border-border-default bg-bg-surface px-3 py-2.5",
|
|
174
|
+
children: [
|
|
175
|
+
L.isSupported ? /* @__PURE__ */ m("button", {
|
|
176
|
+
type: "button",
|
|
177
|
+
onClick: G,
|
|
178
|
+
"aria-label": L.isListening ? "Stop voice input" : "Start voice input",
|
|
179
|
+
"aria-pressed": L.isListening,
|
|
180
|
+
"data-testid": "assistant-widget-mic",
|
|
181
|
+
className: e("flex size-9 shrink-0 items-center justify-center rounded-lg transition-colors focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong cursor-pointer", L.isListening ? "animate-pulse bg-status-error-bg text-action-primary-text" : "bg-bg-sunken text-text-secondary hover:text-text-primary"),
|
|
182
|
+
children: /* @__PURE__ */ m(l, { className: "size-4" })
|
|
183
|
+
}) : null,
|
|
184
|
+
/* @__PURE__ */ m("textarea", {
|
|
185
|
+
ref: P,
|
|
186
|
+
value: A,
|
|
187
|
+
onChange: (e) => j(e.target.value),
|
|
188
|
+
onKeyDown: U,
|
|
189
|
+
onInput: W,
|
|
190
|
+
rows: 1,
|
|
191
|
+
placeholder: C,
|
|
192
|
+
"aria-label": "Message the assistant",
|
|
193
|
+
"data-testid": "assistant-widget-input",
|
|
194
|
+
className: "flex-1 resize-none rounded-lg border border-border-default bg-bg-sunken px-3 py-2 text-xs leading-relaxed text-text-primary placeholder:text-text-muted focus:border-action-primary-bg focus:outline-none"
|
|
195
|
+
}),
|
|
196
|
+
/* @__PURE__ */ m("button", {
|
|
197
|
+
type: "button",
|
|
198
|
+
onClick: () => void H(),
|
|
199
|
+
disabled: M || A.trim().length === 0,
|
|
200
|
+
"aria-label": "Send message",
|
|
201
|
+
"data-testid": "assistant-widget-send",
|
|
202
|
+
className: "flex size-9 shrink-0 items-center justify-center rounded-lg bg-action-primary-bg text-action-primary-text transition-colors hover:bg-action-primary-bg-hover focus:outline-none focus-visible:ring-2 focus-visible:ring-border-strong disabled:opacity-50 cursor-pointer",
|
|
203
|
+
children: M ? /* @__PURE__ */ m(s, { className: "size-4 animate-spin" }) : /* @__PURE__ */ m(u, { className: "size-4" })
|
|
204
|
+
})
|
|
205
|
+
]
|
|
206
|
+
})
|
|
207
|
+
]
|
|
208
|
+
}) : null] });
|
|
209
|
+
};
|
|
210
|
+
//#endregion
|
|
211
|
+
export { g as ASSISTANT_WIDGET_TOGGLE_EVENT, x as AssistantWidget };
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared, product-agnostic types for the floating AssistantWidget.
|
|
3
|
+
*
|
|
4
|
+
* The widget itself (fe-libs, Layer 1) knows nothing about how prompts are
|
|
5
|
+
* fulfilled — each host product injects an `AssistantTransport` that performs
|
|
6
|
+
* the actual backend work (e.g. VibeControls wraps its sandbox `api-calls`
|
|
7
|
+
* agent). This keeps the UI reusable across every product shell while the
|
|
8
|
+
* backend wiring lives in the product layer that is allowed to depend on it.
|
|
9
|
+
*/
|
|
10
|
+
export type AssistantWidgetRole = 'user' | 'assistant';
|
|
11
|
+
export interface AssistantWidgetMessage {
|
|
12
|
+
id: string;
|
|
13
|
+
role: AssistantWidgetRole;
|
|
14
|
+
/** Rendered as plain text / lightweight markdown. */
|
|
15
|
+
content: string;
|
|
16
|
+
/** Marks an assistant message that is still streaming. */
|
|
17
|
+
pending?: boolean;
|
|
18
|
+
/** Marks an assistant message that ended in an error. */
|
|
19
|
+
error?: boolean;
|
|
20
|
+
}
|
|
21
|
+
export interface AssistantSendArgs {
|
|
22
|
+
/** The user's prompt text. */
|
|
23
|
+
prompt: string;
|
|
24
|
+
/**
|
|
25
|
+
* Called repeatedly with the latest partial assistant text while the turn
|
|
26
|
+
* streams. The widget renders this live so users see progress.
|
|
27
|
+
*/
|
|
28
|
+
onProgress: (partialText: string) => void;
|
|
29
|
+
/** Aborts the in-flight turn when the user closes/cancels. */
|
|
30
|
+
signal: AbortSignal;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Backend adapter the host product supplies. A single transport instance is
|
|
34
|
+
* reused across turns so it can keep a warm session/sandbox between sends.
|
|
35
|
+
*/
|
|
36
|
+
export interface AssistantTransport {
|
|
37
|
+
sendPrompt: (args: AssistantSendArgs) => Promise<{
|
|
38
|
+
text: string;
|
|
39
|
+
}>;
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/assistantWidget/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,WAAW,CAAC;AAEvD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,mBAAmB,CAAC;IAC1B,qDAAqD;IACrD,OAAO,EAAE,MAAM,CAAC;IAChB,0DAA0D;IAC1D,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,yDAAyD;IACzD,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,WAAW,iBAAiB;IAChC,8BAA8B;IAC9B,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,UAAU,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,IAAI,CAAC;IAC1C,8DAA8D;IAC9D,MAAM,EAAE,WAAW,CAAC;CACrB;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,CAAC,IAAI,EAAE,iBAAiB,KAAK,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACpE"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Speech-to-text hook for the AssistantWidget (browser Web Speech API).
|
|
3
|
+
*
|
|
4
|
+
* Input-only: it transcribes microphone speech into text. There is no
|
|
5
|
+
* text-to-speech here by design (the widget does not read replies aloud).
|
|
6
|
+
* Gracefully degrades — `isSupported` is false on browsers without
|
|
7
|
+
* SpeechRecognition, and the mic button is hidden in that case.
|
|
8
|
+
*/
|
|
9
|
+
export interface UseVoiceInputReturn {
|
|
10
|
+
isSupported: boolean;
|
|
11
|
+
isListening: boolean;
|
|
12
|
+
/** Final transcript accumulated since the last `reset()`. */
|
|
13
|
+
transcript: string;
|
|
14
|
+
start: () => void;
|
|
15
|
+
stop: () => void;
|
|
16
|
+
reset: () => void;
|
|
17
|
+
}
|
|
18
|
+
export declare function useVoiceInput(lang?: string): UseVoiceInputReturn;
|
|
19
|
+
//# sourceMappingURL=useVoiceInput.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"useVoiceInput.d.ts","sourceRoot":"","sources":["../../../../src/shared/components/assistantWidget/useVoiceInput.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAsCH,MAAM,WAAW,mBAAmB;IAClC,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,OAAO,CAAC;IACrB,6DAA6D;IAC7D,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,KAAK,EAAE,MAAM,IAAI,CAAC;CACnB;AAED,wBAAgB,aAAa,CAAC,IAAI,SAAU,GAAG,mBAAmB,CAkEjE"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { useCallback as e, useEffect as t, useRef as n, useState as r } from "react";
|
|
2
|
+
//#region src/shared/components/assistantWidget/useVoiceInput.ts
|
|
3
|
+
function i() {
|
|
4
|
+
if (typeof window > "u") return null;
|
|
5
|
+
let e = window;
|
|
6
|
+
return e.SpeechRecognition ?? e.webkitSpeechRecognition ?? null;
|
|
7
|
+
}
|
|
8
|
+
function a(a = "en-US") {
|
|
9
|
+
let [o, s] = r(!1), [c, l] = r(""), u = n(null), d = i(), f = d !== null;
|
|
10
|
+
return t(() => () => {
|
|
11
|
+
u.current &&= (u.current.abort(), null);
|
|
12
|
+
}, []), {
|
|
13
|
+
isSupported: f,
|
|
14
|
+
isListening: o,
|
|
15
|
+
transcript: c,
|
|
16
|
+
start: e(() => {
|
|
17
|
+
if (!d || u.current) return;
|
|
18
|
+
let e = new d();
|
|
19
|
+
e.continuous = !0, e.interimResults = !0, e.lang = a, e.onresult = (e) => {
|
|
20
|
+
let t = "";
|
|
21
|
+
for (let n = e.resultIndex; n < e.results.length; n++) {
|
|
22
|
+
let r = e.results[n];
|
|
23
|
+
r.isFinal && (t += r[0].transcript);
|
|
24
|
+
}
|
|
25
|
+
t && l((e) => e ? `${e} ${t}` : t);
|
|
26
|
+
}, e.onerror = () => {
|
|
27
|
+
s(!1), u.current = null;
|
|
28
|
+
}, e.onend = () => {
|
|
29
|
+
s(!1), u.current = null;
|
|
30
|
+
}, u.current = e, e.start(), s(!0);
|
|
31
|
+
}, [d, a]),
|
|
32
|
+
stop: e(() => {
|
|
33
|
+
u.current &&= (u.current.stop(), null), s(!1);
|
|
34
|
+
}, []),
|
|
35
|
+
reset: e(() => {
|
|
36
|
+
l("");
|
|
37
|
+
}, [])
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
//#endregion
|
|
41
|
+
export { a as useVoiceInput };
|
|
@@ -26,4 +26,9 @@ export type { UpgradePromptModalProps, UpgradePromptDetail } from './UpgradeProm
|
|
|
26
26
|
export { UpgradeInlineBanner } from './UpgradeInlineBanner';
|
|
27
27
|
export type { UpgradeInlineBannerProps } from './UpgradeInlineBanner';
|
|
28
28
|
export { getSSORedirectUrl, SSORedirectSpinner, checkSLO, checkRemoteSLO, clearLocalAuthState, } from './SSORedirectGuard';
|
|
29
|
+
export { AssistantWidget, ASSISTANT_WIDGET_TOGGLE_EVENT } from './assistantWidget/AssistantWidget';
|
|
30
|
+
export type { AssistantWidgetProps } from './assistantWidget/AssistantWidget';
|
|
31
|
+
export { useVoiceInput } from './assistantWidget/useVoiceInput';
|
|
32
|
+
export type { UseVoiceInputReturn } from './assistantWidget/useVoiceInput';
|
|
33
|
+
export type { AssistantTransport, AssistantSendArgs, AssistantWidgetMessage, AssistantWidgetRole, } from './assistantWidget/types';
|
|
29
34
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpF,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAI/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACjG,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAGtE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,mBAAmB,GACpB,MAAM,oBAAoB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/shared/components/index.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAC1D,YAAY,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAC;AAGzE,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACpF,YAAY,EACV,mBAAmB,EACnB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAChE,YAAY,EAAE,iBAAiB,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAI/E,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,0BAA0B,EAAE,MAAM,8BAA8B,CAAC;AAC1E,YAAY,EAAE,+BAA+B,EAAE,MAAM,8BAA8B,CAAC;AAEpF,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AACjG,YAAY,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,YAAY,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,aAAa,IAAI,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAEvE,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AACxE,YAAY,EAAE,8BAA8B,EAAE,MAAM,6BAA6B,CAAC;AAGlF,OAAO,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAGxE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,YAAY,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAGpD,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,oBAAoB,GACrB,MAAM,sBAAsB,CAAC;AAC9B,YAAY,EAAE,uBAAuB,EAAE,mBAAmB,EAAE,MAAM,sBAAsB,CAAC;AAEzF,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC5D,YAAY,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAGtE,OAAO,EACL,iBAAiB,EACjB,kBAAkB,EAClB,QAAQ,EACR,cAAc,EACd,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,eAAe,EAAE,6BAA6B,EAAE,MAAM,mCAAmC,CAAC;AACnG,YAAY,EAAE,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAC9E,OAAO,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAChE,YAAY,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAC3E,YAAY,EACV,kBAAkB,EAClB,iBAAiB,EACjB,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,yBAAyB,CAAC"}
|
|
@@ -14,4 +14,6 @@ import { KeyboardHelpDialogWrapper as S } from "./shared/components/KeyboardHelp
|
|
|
14
14
|
import { QuotaMeter as C } from "./shared/components/QuotaMeter.js";
|
|
15
15
|
import { UPGRADE_PROMPT_EVENT as w, UpgradePromptModal as T, dispatchUpgradePrompt as E } from "./shared/components/UpgradePromptModal.js";
|
|
16
16
|
import { UpgradeInlineBanner as D } from "./shared/components/UpgradeInlineBanner.js";
|
|
17
|
-
|
|
17
|
+
import { useVoiceInput as O } from "./shared/components/assistantWidget/useVoiceInput.js";
|
|
18
|
+
import { ASSISTANT_WIDGET_TOGGLE_EVENT as k, AssistantWidget as A } from "./shared/components/assistantWidget/AssistantWidget.js";
|
|
19
|
+
export { k as ASSISTANT_WIDGET_TOGGLE_EVENT, d as AccessDenied, b as AppErrorBoundary, A as AssistantWidget, v as ConditionalShell, x as ContextConversationWidget, a as ErrorBoundary, p as ErrorFallback, S as KeyboardHelpDialogWrapper, m as LoadingFallback, _ as MicrofrontendErrorBoundary, y as PWAInstallBanner, h as PageLoadingFallback, c as PermissionButton, f as PermissionDenied, l as PermissionGate, u as PermissionLink, C as QuotaMeter, o as RequireAuth, s as RequireGuest, e as SSORedirectSpinner, g as SectionLoadingFallback, w as UPGRADE_PROMPT_EVENT, D as UpgradeInlineBanner, T as UpgradePromptModal, t as checkRemoteSLO, n as checkSLO, r as clearLocalAuthState, E as dispatchUpgradePrompt, i as getSSORedirectUrl, O as useVoiceInput };
|
package/dist/shared.js
CHANGED
|
@@ -52,65 +52,67 @@ import { KeyboardHelpDialogWrapper as gn } from "./shared/components/KeyboardHel
|
|
|
52
52
|
import { QuotaMeter as _n } from "./shared/components/QuotaMeter.js";
|
|
53
53
|
import { UPGRADE_PROMPT_EVENT as vn, UpgradePromptModal as yn, dispatchUpgradePrompt as bn } from "./shared/components/UpgradePromptModal.js";
|
|
54
54
|
import { UpgradeInlineBanner as xn } from "./shared/components/UpgradeInlineBanner.js";
|
|
55
|
+
import { useVoiceInput as Sn } from "./shared/components/assistantWidget/useVoiceInput.js";
|
|
56
|
+
import { ASSISTANT_WIDGET_TOGGLE_EVENT as Cn, AssistantWidget as wn } from "./shared/components/assistantWidget/AssistantWidget.js";
|
|
55
57
|
import "./shared-components.js";
|
|
56
|
-
import { DevtoolsSink as
|
|
57
|
-
import { BroadcastChannelSink as
|
|
58
|
-
import { BackendAuditSink as
|
|
59
|
-
import { RybbitSink as
|
|
60
|
-
import { OtelBrowserSink as
|
|
61
|
-
import { EventBusProvider as
|
|
62
|
-
import { useDebounce as
|
|
63
|
-
import { useThrottle as
|
|
64
|
-
import { BREAKPOINTS as
|
|
65
|
-
import { useOnClickOutside as
|
|
66
|
-
import { useKeyPress as
|
|
67
|
-
import { useCopyToClipboard as
|
|
68
|
-
import { useLocalStorage as
|
|
69
|
-
import { useSessionStorage as
|
|
70
|
-
import { usePrevious as
|
|
71
|
-
import { useConditionalToggle as
|
|
72
|
-
import { useAsync as
|
|
73
|
-
import { MODIFIER_KEYS as
|
|
74
|
-
import { useKeyboardShortcuts as
|
|
75
|
-
import { useHotkeys as
|
|
76
|
-
import { useShortcutHelp as
|
|
77
|
-
import { GLOBAL_SHORTCUT_CATEGORIES as
|
|
78
|
-
import { useLogger as
|
|
79
|
-
import { useHasAnimated as
|
|
80
|
-
import { useReferralAttribution as
|
|
81
|
-
import { useRecordProductVisit as
|
|
82
|
-
import { QUOTA_EXHAUSTED_EVENT as
|
|
83
|
-
import { PLAN_USAGE_SNAPSHOT_EVENT as
|
|
84
|
-
import { appendContextToPath as
|
|
85
|
-
import { MicrofrontendContext as
|
|
86
|
-
import { detectDeviceType as
|
|
87
|
-
import { useTourPlayer as
|
|
88
|
-
import { TourSpotlight as
|
|
89
|
-
import { TourTooltip as
|
|
90
|
-
import { TourPlayerProvider as
|
|
91
|
-
import { TourPlayer as
|
|
92
|
-
import { getTourContextRank as
|
|
93
|
-
import { withTourProgressStatus as
|
|
94
|
-
import { ToursProvider as
|
|
95
|
-
import { TourInitializer as
|
|
96
|
-
import { AppShellProvider as
|
|
97
|
-
import { MicrofrontendProvider as
|
|
98
|
-
import { TourTrigger as
|
|
58
|
+
import { DevtoolsSink as Tn } from "./shared/events/sinks/DevtoolsSink.js";
|
|
59
|
+
import { BroadcastChannelSink as En } from "./shared/events/sinks/BroadcastChannelSink.js";
|
|
60
|
+
import { BackendAuditSink as Dn } from "./shared/events/sinks/BackendAuditSink.js";
|
|
61
|
+
import { RybbitSink as On } from "./shared/events/sinks/RybbitSink.js";
|
|
62
|
+
import { OtelBrowserSink as kn } from "./shared/events/sinks/OtelBrowserSink.js";
|
|
63
|
+
import { EventBusProvider as An, createEventBus as jn, useEvent as Mn, useEventBus as Nn, useEventEmitter as Pn } from "./shared-events.js";
|
|
64
|
+
import { useDebounce as Fn } from "./shared/hooks/useDebounce.js";
|
|
65
|
+
import { useThrottle as In } from "./shared/hooks/useThrottle.js";
|
|
66
|
+
import { BREAKPOINTS as Ln, useBreakpoint as Rn, useMobileBreakpoint as zn } from "./shared/hooks/useBreakpoint.js";
|
|
67
|
+
import { useOnClickOutside as Bn, useOnClickOutsideWithRef as Vn } from "./shared/hooks/useOnClickOutside.js";
|
|
68
|
+
import { useKeyPress as Hn, useKeyboardShortcut as Un } from "./shared/hooks/useKeyPress.js";
|
|
69
|
+
import { useCopyToClipboard as Wn } from "./shared/hooks/useCopyToClipboard.js";
|
|
70
|
+
import { useLocalStorage as Gn } from "./shared/hooks/useLocalStorage.js";
|
|
71
|
+
import { useSessionStorage as Kn } from "./shared/hooks/useSessionStorage.js";
|
|
72
|
+
import { usePrevious as qn, usePreviousDistinct as Jn, usePreviousHistory as Yn } from "./shared/hooks/usePrevious.js";
|
|
73
|
+
import { useConditionalToggle as Xn, useToggle as Zn, useToggleObject as Qn } from "./shared/hooks/useToggle.js";
|
|
74
|
+
import { useAsync as $n, useAsyncImmediate as er } from "./shared/hooks/useAsync.js";
|
|
75
|
+
import { MODIFIER_KEYS as tr, PLATFORM_TYPES as nr } from "./shared/keyboard/types.js";
|
|
76
|
+
import { useKeyboardShortcuts as rr } from "./shared/keyboard/useKeyboardShortcuts.js";
|
|
77
|
+
import { useHotkeys as ir } from "./shared/keyboard/useHotkeys.js";
|
|
78
|
+
import { useShortcutHelp as ar } from "./shared/keyboard/useShortcutHelp.js";
|
|
79
|
+
import { GLOBAL_SHORTCUT_CATEGORIES as or, createGlobalShortcuts as sr, getGlobalShortcutsByCategory as cr, mergeShortcuts as lr } from "./shared/keyboard/globalShortcuts.js";
|
|
80
|
+
import { useLogger as ur } from "./shared/logger/useLogger.js";
|
|
81
|
+
import { useHasAnimated as dr } from "./shared/hooks/useHasAnimated.js";
|
|
82
|
+
import { useReferralAttribution as fr } from "./shared/hooks/useReferralAttribution.js";
|
|
83
|
+
import { useRecordProductVisit as pr } from "./shared/hooks/useRecordProductVisit.js";
|
|
84
|
+
import { QUOTA_EXHAUSTED_EVENT as mr, dispatchQuotaExhausted as hr, useQuotaErrorToast as gr } from "./shared/hooks/useQuotaErrorToast.js";
|
|
85
|
+
import { PLAN_USAGE_SNAPSHOT_EVENT as _r, publishPlanUsageSnapshot as vr, useUpgradePrompt as yr } from "./shared/hooks/useUpgradePrompt.js";
|
|
86
|
+
import { appendContextToPath as br, useCurrentContextSearchParams as xr } from "./shared/hooks/useCurrentContextSearchParams.js";
|
|
87
|
+
import { MicrofrontendContext as Sr, useMicrofrontendContext as Cr } from "./shared-hooks.js";
|
|
88
|
+
import { detectDeviceType as wr, getResponsiveSelector as Tr } from "./shared/tours/types.js";
|
|
89
|
+
import { useTourPlayer as Er } from "./shared/tours/useTourPlayer.js";
|
|
90
|
+
import { TourSpotlight as Dr } from "./shared/tours/TourSpotlight.js";
|
|
91
|
+
import { TourTooltip as Or } from "./shared/tours/TourTooltip.js";
|
|
92
|
+
import { TourPlayerProvider as kr, useIsTourPlaying as Ar, useStartTour as jr, useStopTour as Mr, useTourPlayerContext as Nr } from "./shared/tours/TourPlayerProvider.js";
|
|
93
|
+
import { TourPlayer as Pr, TourTriggerButton as Fr, usePlayTour as Ir } from "./shared/tours/TourPlayer.js";
|
|
94
|
+
import { getTourContextRank as Lr, getTourRouteCatalog as Rr, getTourRouteModules as zr, getTourRoutePages as Br, isTourVisibleForContext as Vr, normalizeTourPath as Hr, registerTourRouteCatalog as Ur, resolveTourTargetPath as Wr } from "./shared/tours/routeCatalog.js";
|
|
95
|
+
import { withTourProgressStatus as Gr } from "./shared/tours/progress.js";
|
|
96
|
+
import { ToursProvider as Kr, useAutoStartTour as qr, useSafeToursContext as Jr, useTours as Yr, useToursContext as Xr } from "./shared/tours/ToursContext.js";
|
|
97
|
+
import { TourInitializer as Zr } from "./shared/tours/TourInitializer.js";
|
|
98
|
+
import { AppShellProvider as Qr, resolveAppShellObservabilityConfig as $r } from "./shared/providers/AppShellProvider.js";
|
|
99
|
+
import { MicrofrontendProvider as ei } from "./shared-providers.js";
|
|
100
|
+
import { TourTrigger as ti } from "./shared/tours/TourTrigger.js";
|
|
99
101
|
import "./shared-tours.js";
|
|
100
|
-
import { getNativeBridge as
|
|
101
|
-
import { getPlatform as
|
|
102
|
-
import { nativeConfirm as
|
|
103
|
-
import { SafeAreaView as
|
|
104
|
-
import { useNativePlatform as
|
|
105
|
-
import { useSafeArea as
|
|
106
|
-
import { useNativeKeyboard as
|
|
107
|
-
import { useAppState as
|
|
108
|
-
import { useDeviceInfo as
|
|
109
|
-
import { useHaptics as
|
|
110
|
-
import { useStatusBar as
|
|
102
|
+
import { getNativeBridge as ni } from "./shared/native/bridge.js";
|
|
103
|
+
import { getPlatform as ri, isAndroid as ii, isIOS as ai, isNative as oi, isWeb as si } from "./shared/native/platform.js";
|
|
104
|
+
import { nativeConfirm as ci, nativeCopyText as li, nativeImpact as ui, nativeNotify as di, nativeOpenUrl as fi, nativeShare as pi, nativeToast as mi } from "./shared/native/consumers.js";
|
|
105
|
+
import { SafeAreaView as hi } from "./shared/native/SafeAreaView.js";
|
|
106
|
+
import { useNativePlatform as gi } from "./shared/native/hooks/useNativePlatform.js";
|
|
107
|
+
import { useSafeArea as _i } from "./shared/native/hooks/useSafeArea.js";
|
|
108
|
+
import { useNativeKeyboard as vi } from "./shared/native/hooks/useNativeKeyboard.js";
|
|
109
|
+
import { useAppState as yi } from "./shared/native/hooks/useAppState.js";
|
|
110
|
+
import { useDeviceInfo as bi } from "./shared/native/hooks/useDeviceInfo.js";
|
|
111
|
+
import { useHaptics as xi } from "./shared/native/hooks/useHaptics.js";
|
|
112
|
+
import { useStatusBar as Si } from "./shared/native/hooks/useStatusBar.js";
|
|
111
113
|
import "./shared-native.js";
|
|
112
114
|
import "./shared/actors/index.js";
|
|
113
115
|
//#region src/shared/index.ts
|
|
114
|
-
var
|
|
116
|
+
var Ci = "1.0.0";
|
|
115
117
|
//#endregion
|
|
116
|
-
export { Rt as AccessDenied, kt as ActorIdentity, Me as ApolloClient, Ne as ApolloProvider, Jt as AppErrorBoundary, ot as AppInitializer,
|
|
118
|
+
export { Cn as ASSISTANT_WIDGET_TOGGLE_EVENT, Rt as AccessDenied, kt as ActorIdentity, Me as ApolloClient, Ne as ApolloProvider, Jt as AppErrorBoundary, ot as AppInitializer, Qr as AppShellProvider, wn as AssistantWidget, re as BACKEND_ERROR_EVENT, Ln as BREAKPOINTS, Dn as BackendAuditSink, En as BroadcastChannelSink, W as COMMON_SHELL_LESS_ROUTES, ie as CONNECTION_STATUS_EVENT, Gt as ConditionalShell, pt as ConsoleTransport, tn as ContextConversationWidget, X as DEFAULT_PAGE_SIZE, G as DEFAULT_SHELL_CONFIG, Tn as DevtoolsSink, Mt as ErrorBoundary, Bt as ErrorFallback, An as EventBusProvider, Ci as FE_SHARED_VERSION, Yt as FeatureFlagProvider, en as FeatureGate, Z as GATEWAYS, or as GLOBAL_SHORTCUT_CATEGORIES, Ee as GatewayProvider, Pe as InMemoryCache, gn as KeyboardHelpDialogWrapper, Vt as LoadingFallback, lt as LogLevel, dt as LogManager, ut as Logger, tr as MODIFIER_KEYS, Sr as MicrofrontendContext, Wt as MicrofrontendErrorBoundary, ei as MicrofrontendProvider, kn as OtelBrowserSink, _r as PLAN_USAGE_SNAPSHOT_EVENT, nr as PLATFORM_TYPES, B as PRODUCTS, V as PRODUCT_URLS, qt as PWAInstallBanner, Ht as PageLoadingFallback, Ft as PermissionButton, zt as PermissionDenied, It as PermissionGate, Lt as PermissionLink, yt as QUOTA_EXHAUSTED_CODE, mr as QUOTA_EXHAUSTED_EVENT, _n as QuotaMeter, bt as RESOURCE_CAP_EXCEEDED_CODE, Nt as RequireAuth, Pt as RequireGuest, On as RybbitSink, be as SSELink, tt as SSORedirectSpinner, xt as STORAGE_QUOTA_EXCEEDED_CODE, hi as SafeAreaView, Ut as SectionLoadingFallback, Zr as TourInitializer, Pr as TourPlayer, kr as TourPlayerProvider, Dr as TourSpotlight, Or as TourTooltip, ti as TourTrigger, Fr as TourTriggerButton, Kr as ToursProvider, St as UPGRADE_ERROR_CODES, vn as UPGRADE_PROMPT_EVENT, xn as UpgradeInlineBanner, yn as UpgradePromptModal, je as WsLink, n as alertTokens, br as appendContextToPath, Ve as attemptTokenRefresh, At as buildActorFallback, Ct as buildQuotaExhaustedMessage, p as capitalizeFirst, m as capitalizeWords, r as categoryTokens, nt as checkRemoteSLO, rt as checkSLO, He as clearAuthSessionStorage, it as clearLocalAuthState, qe as clearSSoCookie, Je as clearShellSsoCookies, mt as clearUserContext, Ot as cn, t as createApolloClient, jn as createEventBus, sr as createGlobalShortcuts, xe as createGraphQLClient, _t as createProfileScopedStorage, wr as detectDeviceType, nn as detectPlatform, ae as dispatchBackendErrorEvent, hr as dispatchQuotaExhausted, bn as dispatchUpgradePrompt, oe as extractBackendError, wt as extractQuotaExhaustedExtensions, Tt as extractUpgradeErrorExtensions, h as formatBytes, g as formatCompactNumber, _ as formatCurrency, v as formatCurrencyCompact, y as formatDate, b as formatDateTime, x as formatDuration, rn as formatKeyCombo, S as formatList, C as formatNumber, w as formatOrdinal, T as formatPercentage, E as formatRelativeTime, D as formatTime, i as getAlertTokens, a as getCategoryTokens, an as getDisplayKeysForPlatform, Q as getGatewayConfig, $ as getGatewayUrl, Se as getGlobalClient, cr as getGlobalShortcutsByCategory, ee as getGraphQLEndpoint, ni as getNativeBridge, ri as getPlatform, H as getProductUrl, U as getProductsWithUrls, vt as getProfileScopedKey, o as getProgressTokens, Tr as getResponsiveSelector, at as getSSORedirectUrl, Ye as getSSoCookie, K as getShellConfig, on as getShortcutLabel, s as getStatusBadgeTokens, c as getStatusTokens, fe as getStoredAuthToken, pe as getStoredLocale, me as getStoredOrganizationId, he as getStoredProjectId, ge as getStoredWorkspaceId, _e as getStoredWorkspaceToken, Lr as getTourContextRank, Rr as getTourRouteCatalog, zr as getTourRouteModules, Br as getTourRoutePages, l as getTrendTokens, Ce as getWorkspaceClient, te as getWorkspaceTokenPayload, Fe as gql, ve as graphqlFetch, Ue as hasAuthGraphQLErrors, we as initializeAppClients, ht as initializeLogger, I as installGatewayFetchRewrite, se as isAbortError, ii as isAndroid, We as isAuthGraphQLError, Ge as isAuthNetworkError, ce as isBackendErrorDisplay, N as isChunkLoadError, ai as isIOS, sn as isMac, cn as isMobileDevice, oi as isNative, Et as isQuotaExhaustedError, Xe as isSharedSsoCookieDomain, q as isShellLessRoute, ln as isTabletDevice, Vr as isTourVisibleForContext, le as isTransportError, Ze as isTrustedSsoOrigin, Dt as isUpgradeError, si as isWeb, ne as isWorkspaceTokenValidForContext, P as lazyWithRetry, ft as logManager, ue as markConnectionHealthy, un as matchesKeyCombo, lr as mergeShortcuts, ci as nativeConfirm, li as nativeCopyText, ui as nativeImpact, di as nativeNotify, fi as nativeOpenUrl, pi as nativeShare, mi as nativeToast, dn as normalizeKey, fn as normalizePlatformCombo, Hr as normalizeTourPath, pn as parseKeyCombo, O as pluralize, u as progressTokens, vr as publishPlanUsageSnapshot, Qe as readShellSsoCookie, Ke as redirectToLogin, Ur as registerTourRouteCatalog, Te as resetAppClients, $r as resolveAppShellObservabilityConfig, z as resolveAuthBridgeConfig, L as resolveGatewayBases, ye as resolveGatewayUrl, F as resolveGatewayUrls, Wr as resolveTourTargetPath, $e as setSSoCookie, et as setShellSsoCookies, gt as setUserContext, mn as shouldEnableKeyboardShortcuts, hn as shouldIgnoreShortcut, J as shouldShowBreadcrumb, Y as shouldShowSidebar, de as shouldToastBackendError, k as slugify, d as statusTokens, R as suppressConsole, A as toCamelCase, j as toPascalCase, f as trendTokens, M as truncateText, jt as useActorProfiles, Ie as useApolloClient, yi as useAppState, $n as useAsync, er as useAsyncImmediate, qr as useAutoStartTour, Rn as useBreakpoint, Xn as useConditionalToggle, Wn as useCopyToClipboard, xr as useCurrentContextSearchParams, Fn as useDebounce, bi as useDeviceInfo, Mn as useEvent, Nn as useEventBus, Pn as useEventEmitter, Zt as useFeatureFlag, Qt as useFeatureFlagDetails, $t as useFeatureFlagValue, Xt as useFeatureFlags, De as useGateway, Oe as useGatewayClient, xi as useHaptics, dr as useHasAnimated, ir as useHotkeys, Ar as useIsTourPlaying, Hn as useKeyPress, Un as useKeyboardShortcut, rr as useKeyboardShortcuts, Le as useLazyQuery, Gn as useLocalStorage, ur as useLogger, e as useMediaQuery, Cr as useMicrofrontendContext, zn as useMobileBreakpoint, Re as useMutation, vi as useNativeKeyboard, gi as useNativePlatform, Bn as useOnClickOutside, Vn as useOnClickOutsideWithRef, Kt as usePWA, Ir as usePlayTour, qn as usePrevious, Jn as usePreviousDistinct, Yn as usePreviousHistory, ze as useQuery, gr as useQuotaErrorToast, pr as useRecordProductVisit, fr as useReferralAttribution, st as useRegistryHelpers, _i as useSafeArea, ke as useSafeGateway, Ae as useSafeGatewayClient, Jr as useSafeToursContext, Kn as useSessionStorage, ct as useShellNavigate, ar as useShortcutHelp, jr as useStartTour, Si as useStatusBar, Mr as useStopTour, Be as useSubscription, In as useThrottle, Zn as useToggle, Qn as useToggleObject, Er as useTourPlayer, Nr as useTourPlayerContext, Yr as useTours, Xr as useToursContext, yr as useUpgradePrompt, Sn as useVoiceInput, Gr as withTourProgressStatus };
|