@burdenoff/fe-libs 2026.1021.6 → 2026.1021.8
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/chrome/AccountSwitcher.js +7 -7
- package/dist/chrome/AutoBreadcrumbs.js +3 -3
- package/dist/chrome/Breadcrumbs.js +24 -24
- package/dist/chrome/ContextSwitcher.js +7 -7
- package/dist/chrome/DynamicFooter.js +3 -3
- package/dist/chrome/HeaderThemeSwitcher.js +14 -14
- package/dist/chrome/LanguagePickerSheet.js +7 -7
- package/dist/chrome/NativeTopBar.js +4 -4
- package/dist/chrome/NavCustomizeDialog.js +12 -12
- package/dist/chrome/ProductPickerSheet.js +7 -7
- package/dist/chrome/SideNavigation.js +17 -17
- package/dist/chrome/Sidebar.js +34 -34
- package/dist/chrome/Tabs.js +20 -20
- package/dist/chrome/ThemePreferences.js +188 -188
- package/dist/shared/assistant/ui/AssistantChatArea.js +4 -4
- package/dist/shared/components/ContextConversationWidget.js +7 -7
- package/dist/shared/components/QuotaUpgradeBridge.js +13 -13
- package/dist/shared/pages/AiPage.js +6 -6
- package/dist/shared/providers/AppShellProvider.d.ts +13 -0
- package/dist/shared/providers/AppShellProvider.js +196 -193
- package/dist/shared/providers/shell/ProfileI18nBridge.js +11 -11
- package/dist/shared/tours/catalogs.d.ts +21 -0
- package/dist/shared/tours/catalogs.js +981 -0
- package/dist/shared/tours/index.d.ts +3 -1
- package/dist/shared/tours/routeCatalog.d.ts +28 -0
- package/dist/shared/tours/routeCatalog.js +103 -918
- package/dist/shared/tours/useTourRouteCatalog.d.ts +14 -0
- package/dist/shared/tours/useTourRouteCatalog.js +13 -0
- package/dist/shared-hooks-shell.js +7 -7
- package/dist/shared-providers-shell.js +6 -6
- package/dist/shared-tours.js +7 -5
- package/dist/shared.js +12 -10
- package/dist/ui/branded-splash.d.ts +25 -2
- package/dist/ui/branded-splash.js +48 -31
- package/dist/ui/cta-overflow-menu.js +17 -17
- package/dist/ui/guidance.js +19 -19
- package/dist/ui/index.d.ts +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useI18n as e } from "../../providers/shell/I18nProvider.js";
|
|
2
|
+
import { useThemeOrNull as t } from "../../providers/shell/ThemeProvider.js";
|
|
3
3
|
import { useAuthToken as n } from "../../providers/shell/AuthTokenProvider.js";
|
|
4
4
|
import "../../../shared-providers-shell.js";
|
|
5
5
|
import { useAssistantControl as r } from "../appControls/useAssistantControl.js";
|
|
@@ -130,7 +130,7 @@ var Ti = () => () => {}, Ei = () => "off", Di = ({ visible: Di = !0, writeAccess
|
|
|
130
130
|
productWriteApproval: F,
|
|
131
131
|
capabilities: r ? n.sandboxWriteCapabilities[r] : null
|
|
132
132
|
});
|
|
133
|
-
}, [F]), { getAccessToken: I, getWorkspaceToken: Fi, userId: L } = n(), { locale: R, isLocaleLoading: Ii } =
|
|
133
|
+
}, [F]), { getAccessToken: I, getWorkspaceToken: Fi, userId: L } = n(), { locale: R, isLocaleLoading: Ii } = e(), Li = g((e) => e.voiceGraceMs), Ri = g((e) => e.handsFreeInterrupt), zi = g((e) => e.handsFreeStreamNoticeAccepted), Bi = g((e) => e.acceptHandsFreeStreamNotice), Vi = g((e) => e.assistantLanguage), Hi = g((e) => e.replyLanguage), Ui = D(() => S(Vi, Hi, R), [
|
|
134
134
|
Vi,
|
|
135
135
|
Hi,
|
|
136
136
|
R
|
|
@@ -535,7 +535,7 @@ var Ti = () => () => {}, Ei = () => "off", Di = ({ visible: Di = !0, writeAccess
|
|
|
535
535
|
V,
|
|
536
536
|
ta,
|
|
537
537
|
M
|
|
538
|
-
]), jo =
|
|
538
|
+
]), jo = t(), { speakFinishedReply: Mo, speakingMessageId: No, stop: Po } = hn(), Fo = O(null), Io = T((e, t) => {
|
|
539
539
|
let n = Fo.current;
|
|
540
540
|
n?.token === e && n.exchange === null && (n.exchange = t);
|
|
541
541
|
}, []), Lo = T((e) => {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { useGatewayClient as e } from "../graphql/GatewayContext.js";
|
|
2
2
|
import "../../shared-graphql.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
3
|
+
import { useI18n as t } from "../providers/shell/I18nProvider.js";
|
|
4
|
+
import { useAuth as n } from "../providers/shell/AuthProvider.js";
|
|
5
|
+
import { useActiveContext as r } from "../providers/shell/ActiveContextProvider.js";
|
|
6
|
+
import { Card as ee, CardContent as te } from "../../ui/card.js";
|
|
7
7
|
import "../../ui.js";
|
|
8
8
|
import { usePageConversationContext as ne } from "../providers/shell/PageConversationContextProvider.js";
|
|
9
9
|
import "../../shared-providers-shell.js";
|
|
@@ -26,7 +26,7 @@ import { useQuery as h } from "@apollo/client/react";
|
|
|
26
26
|
import { useNavigate as ge } from "react-router";
|
|
27
27
|
//#region src/shared/components/ContextConversationWidget.tsx
|
|
28
28
|
function g({ className: g, widgetKey: _ }) {
|
|
29
|
-
let { t: v } =
|
|
29
|
+
let { t: v } = t(), { workspaceId: y } = r(), b = n(), x = ne(), S = e("workspace"), C = ge(), [w, T] = f(null), [E, D] = f(null), [O, k] = f(""), [A, _e] = f(() => typeof window < "u" ? window.innerWidth < 768 : !1), [j, M] = f(null), [N, P] = f(null), [F, I] = f(""), [L, R] = f(null), [z, B] = f([]), V = he(null), H = d(() => (e, t) => {
|
|
30
30
|
let n = v(e);
|
|
31
31
|
return n === e ? t : n;
|
|
32
32
|
}, [v]), U = b.user?.id ?? null, W = _ ?? x.widgetKey ?? "default", G = d(() => {
|
|
@@ -139,7 +139,7 @@ function g({ className: g, widgetKey: _ }) {
|
|
|
139
139
|
}, Se = async () => {
|
|
140
140
|
!N || !F.trim() || (await X.saveEdit(N, F.trim()), P(null), I(""));
|
|
141
141
|
};
|
|
142
|
-
return /* @__PURE__ */ m(
|
|
142
|
+
return /* @__PURE__ */ m(ee, {
|
|
143
143
|
className: g,
|
|
144
144
|
children: [/* @__PURE__ */ p(me, {
|
|
145
145
|
conversationTitle: K.data?.conversation?.title,
|
|
@@ -159,7 +159,7 @@ function g({ className: g, widgetKey: _ }) {
|
|
|
159
159
|
},
|
|
160
160
|
onOpenInbox: () => w && C(`/conversations/${w}`),
|
|
161
161
|
tr: H
|
|
162
|
-
}), !A && /* @__PURE__ */ m(
|
|
162
|
+
}), !A && /* @__PURE__ */ m(te, {
|
|
163
163
|
className: "space-y-4",
|
|
164
164
|
children: [
|
|
165
165
|
L && /* @__PURE__ */ p("div", {
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useOptionalI18n as e } from "../providers/shell/I18nProvider.js";
|
|
2
|
+
import { QUOTA_EXHAUSTED_CODE as t } from "../utils/quotaErrors.js";
|
|
3
3
|
import { dispatchUpgradePrompt as n } from "./UpgradePromptModal.js";
|
|
4
4
|
import { quotaExhaustedEventName as r } from "../assistant/quota.js";
|
|
5
5
|
import { useEffect as i, useRef as a } from "react";
|
|
@@ -61,7 +61,7 @@ function v(e, t) {
|
|
|
61
61
|
return n.displayName = `withQuotaDialogOwnership(${e.displayName ?? e.name ?? "Component"})`, n;
|
|
62
62
|
}
|
|
63
63
|
function y({ product: o, copy: s }) {
|
|
64
|
-
let d =
|
|
64
|
+
let d = e()?.t, f = a({
|
|
65
65
|
copy: s,
|
|
66
66
|
translate: d
|
|
67
67
|
});
|
|
@@ -72,28 +72,28 @@ function y({ product: o, copy: s }) {
|
|
|
72
72
|
};
|
|
73
73
|
}, [s, d]), i(() => {
|
|
74
74
|
if (!o || typeof window > "u") return;
|
|
75
|
-
let
|
|
75
|
+
let e = r(o), i = /* @__PURE__ */ new Set(), a = (e, t) => {
|
|
76
76
|
let n = f.current.translate;
|
|
77
77
|
if (!e || !n) return t;
|
|
78
78
|
let r = n(e, t);
|
|
79
79
|
return r && r !== e ? r : t;
|
|
80
|
-
}, s = (
|
|
81
|
-
let r = c(
|
|
80
|
+
}, s = (e) => {
|
|
81
|
+
let r = c(e), s = l(e), d = g(o), p = setTimeout(() => {
|
|
82
82
|
if (i.delete(p), d()) return;
|
|
83
|
-
let
|
|
83
|
+
let e = u(f.current.copy, r);
|
|
84
84
|
n({
|
|
85
85
|
extensions: s ? {
|
|
86
|
-
code:
|
|
86
|
+
code: t,
|
|
87
87
|
quotaName: s
|
|
88
|
-
} : { code:
|
|
89
|
-
title: a(
|
|
90
|
-
description: a(
|
|
88
|
+
} : { code: t },
|
|
89
|
+
title: a(e.titleKey, e.title),
|
|
90
|
+
description: a(e.messageKey, e.message)
|
|
91
91
|
});
|
|
92
92
|
}, 0);
|
|
93
93
|
i.add(p);
|
|
94
94
|
};
|
|
95
|
-
return window.addEventListener(
|
|
96
|
-
window.removeEventListener(
|
|
95
|
+
return window.addEventListener(e, s), () => {
|
|
96
|
+
window.removeEventListener(e, s);
|
|
97
97
|
for (let e of i) clearTimeout(e);
|
|
98
98
|
i.clear();
|
|
99
99
|
};
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { useSafeGatewayClient as e } from "../graphql/GatewayContext.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { useI18n as t } from "../providers/shell/I18nProvider.js";
|
|
3
|
+
import { useAuth as n } from "../providers/shell/AuthProvider.js";
|
|
4
|
+
import { useActiveContext as r } from "../providers/shell/ActiveContextProvider.js";
|
|
5
5
|
import { PermissionProvider as i, usePermissions as a, useSafePermissions as o } from "../providers/shell/PermissionProvider.js";
|
|
6
6
|
import { MODELS as s, PROVIDERS as c, SUMMARY as l, catalog as u, sevenDays as d, summary as f } from "./ai/contracts.js";
|
|
7
7
|
import { useAiTr as p } from "./ai/i18n.js";
|
|
@@ -35,15 +35,15 @@ function C({ productName: t, productId: n }) {
|
|
|
35
35
|
});
|
|
36
36
|
}
|
|
37
37
|
function w({ children: e }) {
|
|
38
|
-
let t = o(), { workspaceId:
|
|
38
|
+
let t = o(), { workspaceId: n } = r();
|
|
39
39
|
return t ? e : /* @__PURE__ */ x(i, {
|
|
40
|
-
scopeId:
|
|
40
|
+
scopeId: n ?? null,
|
|
41
41
|
gateway: "workspace",
|
|
42
42
|
children: e
|
|
43
43
|
});
|
|
44
44
|
}
|
|
45
45
|
function T({ productId: e, client: i }) {
|
|
46
|
-
let o =
|
|
46
|
+
let o = n(), { workspaceId: C } = r(), w = a(), { locale: T } = t(), E = p(), D = v(() => ({
|
|
47
47
|
workspaceId: C ?? "",
|
|
48
48
|
actorId: o.user?.id ?? "",
|
|
49
49
|
profileId: o.activeProfileId,
|
|
@@ -2,6 +2,7 @@ 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';
|
|
5
|
+
import { TourRouteCatalogEntry } from '../tours/routeCatalog';
|
|
5
6
|
export interface AppShellConfig {
|
|
6
7
|
/** Product display name (e.g., "VibeControls", "FluidGrids") */
|
|
7
8
|
productName: string;
|
|
@@ -94,6 +95,18 @@ export interface AppShellConfig {
|
|
|
94
95
|
* for any path the shell does not want to name, and the default applies.
|
|
95
96
|
*/
|
|
96
97
|
tourPageIdFromPath?: (pathname: string) => string | undefined;
|
|
98
|
+
/**
|
|
99
|
+
* The shell's tour route catalog: where each tour `moduleId`/`pageId` lives.
|
|
100
|
+
* Registered for `productSlug` while the shell is mounted, and used by the
|
|
101
|
+
* tour trigger to navigate to a tour's page and by the tour builder to offer
|
|
102
|
+
* the shell's pages. Pass a module constant (a new array identity
|
|
103
|
+
* re-registers). Pair it with
|
|
104
|
+
* `tourPageIdFromPath: createTourPageIdResolver(catalog)` when the shell's
|
|
105
|
+
* pageIds are not the first path segment. Shells that omit it fall back to the
|
|
106
|
+
* built-in catalog in `@burdenoff/fe-libs/shared/tours` for now; that fallback
|
|
107
|
+
* is being removed.
|
|
108
|
+
*/
|
|
109
|
+
tourRouteCatalog?: readonly TourRouteCatalogEntry[];
|
|
97
110
|
/** Resolve workspace RBAC above the tour runtime for permission-targeted tours. */
|
|
98
111
|
enableWorkspaceTourPermissions?: boolean;
|
|
99
112
|
}
|