@burdenoff/fe-libs 2026.1018.1 → 2026.1019.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.
- package/dist/chrome/AccountSwitcher.js +90 -89
- package/dist/chrome/Breadcrumbs.js +1 -1
- package/dist/chrome/CommandPalette.js +91 -90
- package/dist/chrome/Footer.js +31 -8
- package/dist/chrome/GlobalSearch.js +78 -77
- package/dist/chrome/HeaderBar.js +1 -1
- package/dist/chrome/HeaderThemeSwitcher.js +48 -47
- package/dist/chrome/LanguagePickerSheet.js +23 -22
- package/dist/chrome/NavCustomizeDialog.d.ts +0 -14
- package/dist/chrome/NavCustomizeDialog.js +114 -122
- package/dist/chrome/PanelTabs.js +45 -41
- package/dist/chrome/PersonaSurfaceControls.d.ts +0 -17
- package/dist/chrome/PersonaSurfaceControls.js +115 -118
- package/dist/chrome/PluginSettingsPage.js +29 -28
- package/dist/chrome/PluginWidgetGrid.js +19 -18
- package/dist/chrome/ProductPickerSheet.js +44 -47
- package/dist/chrome/ProductSwitcher.js +2 -6
- package/dist/chrome/ProfileSwitcher.js +6 -10
- package/dist/chrome/ShortcutHelpDialog.js +60 -65
- package/dist/chrome/SideNavigation.js +2 -2
- package/dist/chrome/Sidebar.js +44 -43
- package/dist/chrome/ThemePreferences.js +289 -267
- package/dist/chrome/contextSwitcher/EmptyState.js +31 -27
- package/dist/chrome/contextSwitcher/OrganizationList.js +40 -30
- package/dist/chrome/contextSwitcher/ProjectList.js +48 -44
- package/dist/chrome/contextSwitcher/SearchInput.js +44 -40
- package/dist/chrome/contextSwitcher/TriggerButton.js +2 -2
- package/dist/chrome/contextSwitcher/WorkspaceList.js +36 -32
- package/dist/chrome/globalSearch/AdvancedFiltersPanel.js +128 -126
- package/dist/chrome/globalSearch/ResultsList.js +25 -27
- package/dist/chrome/globalSearch/SearchInput.js +16 -14
- package/dist/chrome/notificationCenter/NotificationCardItem.js +58 -47
- package/dist/chrome/notificationCenter/NotificationFilters.js +76 -62
- package/dist/chrome/notificationCenter/NotificationFooter.js +21 -21
- package/dist/chrome/notificationCenter/NotificationHeader.js +67 -63
- package/dist/chrome/notificationCenter/NotificationList.js +75 -71
- package/dist/chrome/notificationCenter/NotificationPanel.js +37 -33
- package/dist/chrome/notificationCenter/PushOptInToggle.js +33 -32
- package/dist/chrome/notificationCenter/constants.d.ts +6 -1
- package/dist/chrome/notificationCenter/constants.js +12 -11
- package/dist/chrome/useThemeOptionLabels.d.ts +33 -0
- package/dist/chrome/useThemeOptionLabels.js +39 -0
- package/dist/shared/assistant/conversation.d.ts +8 -0
- package/dist/shared/assistant/history/historyMapping.js +1 -1
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.d.ts +6 -6
- package/dist/shared/assistant/ui/AssistantMarkdownRenderer.js +86 -85
- package/dist/shared/assistant/ui/AssistantMessageItem.js +101 -96
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.d.ts +2 -0
- package/dist/shared/assistant/ui/AssistantWriteProposalCard.js +93 -89
- package/dist/shared/assistant/ui/WorkflowAssistantPanel.js +152 -140
- package/dist/shared/assistant/ui/useWriteProposals.js +122 -85
- package/dist/shared/assistant/writeProposalDiscovery.d.ts +3 -1
- package/dist/shared/assistant/writeProposalDiscovery.js +2 -2
- package/dist/shared/events/sinks/RybbitSink.js +2 -2
- package/dist/shared/providers/shell/interpolateShellLabel.d.ts +3 -0
- package/dist/shared/providers/shell/interpolateShellLabel.js +11 -0
- package/dist/shared/providers/shell/useAssistantShellLabels.d.ts +45 -0
- package/dist/shared/providers/shell/useAssistantShellLabels.js +54 -0
- package/dist/shared/tours/TourPlayer.js +33 -32
- package/dist/shared/tours/TourTooltip.js +108 -109
- package/dist/shared/tours/tourTrigger/MobileTourSheet.js +98 -85
- package/dist/shared/tours/tourTrigger/TourListItemDesktop.js +20 -18
- package/dist/shared/tours/tourTrigger/TourListItemMobile.js +23 -25
- package/dist/shared-assistant.js +188 -188
- package/package.json +2 -2
package/dist/chrome/Footer.js
CHANGED
|
@@ -118,8 +118,31 @@ var u = [
|
|
|
118
118
|
href: "https://discord.gg/burdenoff",
|
|
119
119
|
icon: /* @__PURE__ */ s(a, { className: "size-5" })
|
|
120
120
|
}
|
|
121
|
-
], f = ({ logo: i, productName: a = "Burdenoff Workspaces", tagline: o
|
|
122
|
-
let x = t(), S = (/* @__PURE__ */ new Date()).getFullYear(), C =
|
|
121
|
+
], f = ({ logo: i, productName: a = "Burdenoff Workspaces", tagline: o, columns: f, socialLinks: p = d, copyright: m, version: h, buildInfo: g, context: _, children: v, renderLink: y, hideOnInstalledApp: b = !0 }) => {
|
|
122
|
+
let x = t(), S = (/* @__PURE__ */ new Date()).getFullYear(), C = o ?? x("chrome.footer.tagline", "Enterprise collaboration made simple"), w = {
|
|
123
|
+
products: x("footer.columns.products", "Products"),
|
|
124
|
+
resources: x("footer.columns.resources", "Resources"),
|
|
125
|
+
legal: x("footer.columns.legal", "Legal"),
|
|
126
|
+
docs: x("footer.links.docs", "Documentation"),
|
|
127
|
+
api: x("footer.links.api", "API Reference"),
|
|
128
|
+
status: x("footer.links.status", "Status Page"),
|
|
129
|
+
changelog: x("footer.links.changelog", "Changelog"),
|
|
130
|
+
terms: x("footer.links.terms", "Terms of Service"),
|
|
131
|
+
privacy: x("footer.links.privacy", "Privacy Policy"),
|
|
132
|
+
security: x("footer.links.security", "Security"),
|
|
133
|
+
compliance: x("footer.links.compliance", "Compliance")
|
|
134
|
+
}, T = [
|
|
135
|
+
w.products,
|
|
136
|
+
w.resources,
|
|
137
|
+
w.legal
|
|
138
|
+
], E = f ?? u.map((e, t) => ({
|
|
139
|
+
...e,
|
|
140
|
+
title: T[t] ?? e.title,
|
|
141
|
+
links: e.links.map((e) => ({
|
|
142
|
+
...e,
|
|
143
|
+
label: e.brand ? e.label : Object.entries(w).find(([t]) => t === e.id)?.[1] ?? e.label
|
|
144
|
+
}))
|
|
145
|
+
})), D = m ?? x("footer.copyright", `${S} Burdenoff. All rights reserved.`).replace("{year}", String(S)), O = y ?? (({ href: e, external: t, children: n, className: r }) => /* @__PURE__ */ s("a", {
|
|
123
146
|
href: e,
|
|
124
147
|
target: t ? "_blank" : void 0,
|
|
125
148
|
rel: t ? "noopener noreferrer" : void 0,
|
|
@@ -132,7 +155,7 @@ var u = [
|
|
|
132
155
|
/* @__PURE__ */ s("div", {
|
|
133
156
|
className: "max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-12",
|
|
134
157
|
children: /* @__PURE__ */ c("div", {
|
|
135
|
-
className: `grid grid-cols-2 ${l(
|
|
158
|
+
className: `grid grid-cols-2 ${l(E.length)} gap-8`,
|
|
136
159
|
children: [/* @__PURE__ */ c("div", {
|
|
137
160
|
className: "col-span-2",
|
|
138
161
|
children: [
|
|
@@ -148,7 +171,7 @@ var u = [
|
|
|
148
171
|
}),
|
|
149
172
|
/* @__PURE__ */ s("p", {
|
|
150
173
|
className: "text-text-secondary text-sm mb-6 max-w-xs",
|
|
151
|
-
children:
|
|
174
|
+
children: C
|
|
152
175
|
}),
|
|
153
176
|
p.length > 0 && /* @__PURE__ */ s("div", {
|
|
154
177
|
className: "flex items-center gap-4",
|
|
@@ -162,12 +185,12 @@ var u = [
|
|
|
162
185
|
}, e.id))
|
|
163
186
|
})
|
|
164
187
|
]
|
|
165
|
-
}),
|
|
188
|
+
}), E.map((e) => /* @__PURE__ */ c("div", { children: [/* @__PURE__ */ s("h3", {
|
|
166
189
|
className: "text-sm font-semibold text-text-primary mb-4",
|
|
167
190
|
children: e.title
|
|
168
191
|
}), /* @__PURE__ */ s("ul", {
|
|
169
192
|
className: "space-y-3",
|
|
170
|
-
children: e.links.map((e) => /* @__PURE__ */ s("li", { children: /* @__PURE__ */ c(
|
|
193
|
+
children: e.links.map((e) => /* @__PURE__ */ s("li", { children: /* @__PURE__ */ c(O, {
|
|
171
194
|
href: e.href,
|
|
172
195
|
external: e.external,
|
|
173
196
|
className: "text-sm text-text-secondary hover:text-text-primary transition-colors inline-flex items-center gap-1",
|
|
@@ -190,7 +213,7 @@ var u = [
|
|
|
190
213
|
children: [
|
|
191
214
|
/* @__PURE__ */ s("div", {
|
|
192
215
|
className: "flex items-center gap-2",
|
|
193
|
-
children: /* @__PURE__ */ c("span", { children: ["© ",
|
|
216
|
+
children: /* @__PURE__ */ c("span", { children: ["© ", D] })
|
|
194
217
|
}),
|
|
195
218
|
_ && Object.values(_).some(Boolean) && /* @__PURE__ */ s("div", {
|
|
196
219
|
className: "flex items-center gap-3",
|
|
@@ -213,7 +236,7 @@ var u = [
|
|
|
213
236
|
className: "text-border-subtle",
|
|
214
237
|
children: "|"
|
|
215
238
|
}),
|
|
216
|
-
g && /* @__PURE__ */
|
|
239
|
+
g && /* @__PURE__ */ s("span", { children: x("footer.buildInfo", "Build {{build}}", { build: g }) })
|
|
217
240
|
]
|
|
218
241
|
})
|
|
219
242
|
]
|
|
@@ -1,109 +1,110 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { useShellLabel as e } from "../shared/providers/shell/useShellLabel.js";
|
|
2
|
+
import { useGlobalUiOrNull as t } from "../shared/providers/shell/GlobalUiProvider.js";
|
|
3
|
+
import { useAssistantControl as n } from "../shared/assistant/appControls/useAssistantControl.js";
|
|
4
|
+
import { EscapeLayer as r } from "../shared/components/EscapeLayer.js";
|
|
5
|
+
import { SHELL_OVERLAY_LAYER_CLASS as i } from "./shellOverlayLayer.js";
|
|
6
|
+
import { cn as a } from "../utils/cn.js";
|
|
6
7
|
import "../utils/index.js";
|
|
7
|
-
import { debounce as
|
|
8
|
-
import { SearchInput as
|
|
9
|
-
import { CategoryTabs as
|
|
10
|
-
import { SearchModeBar as
|
|
11
|
-
import { AdvancedFiltersPanel as
|
|
12
|
-
import { ResultsList as
|
|
13
|
-
import { useAdvancedFilters as
|
|
14
|
-
import { useCallback as
|
|
15
|
-
import { ExternalLink as
|
|
16
|
-
import { jsx as
|
|
8
|
+
import { debounce as o, isSearchResults as s } from "./globalSearch/utils.js";
|
|
9
|
+
import { SearchInput as c } from "./globalSearch/SearchInput.js";
|
|
10
|
+
import { CategoryTabs as l } from "./globalSearch/CategoryTabs.js";
|
|
11
|
+
import { SearchModeBar as u } from "./globalSearch/SearchModeBar.js";
|
|
12
|
+
import { AdvancedFiltersPanel as d } from "./globalSearch/AdvancedFiltersPanel.js";
|
|
13
|
+
import { ResultsList as f } from "./globalSearch/ResultsList.js";
|
|
14
|
+
import { useAdvancedFilters as p } from "./globalSearch/useAdvancedFilters.js";
|
|
15
|
+
import { useCallback as m, useEffect as h, useMemo as g, useState as _ } from "react";
|
|
16
|
+
import { ExternalLink as v } from "lucide-react";
|
|
17
|
+
import { jsx as y, jsxs as b } from "react/jsx-runtime";
|
|
17
18
|
//#region src/chrome/GlobalSearch.tsx
|
|
18
|
-
function
|
|
19
|
-
let [
|
|
20
|
-
|
|
21
|
-
!
|
|
22
|
-
}, [
|
|
23
|
-
|
|
24
|
-
}, [
|
|
25
|
-
let
|
|
19
|
+
function x({ open: x, onClose: S, categories: C = [], placeholder: w, recentSearches: T = [], onSearch: E, onSelect: D, onViewAllResults: O, className: k }) {
|
|
20
|
+
let A = e(), [j, M] = _(""), [N, P] = _(void 0), [F, I] = _([]), [L, R] = _(!1), [z, B] = _(null), [V, H] = _(!1), U = p(), { buildFilters: W, reset: G, searchMode: K, setSearchMode: q } = U, J = t()?.openGlobalSearch, [Y, X] = _(null);
|
|
21
|
+
n("header.search", g(() => J ? { run: ({ query: e }) => (X(e === null ? null : { query: e }), J(), { status: "done" }) } : null, [J])), h(() => {
|
|
22
|
+
!x || !Y || (M(Y.query), X(null));
|
|
23
|
+
}, [x, Y]), h(() => {
|
|
24
|
+
x || (M(""), P(void 0), I([]), B(null), H(!1), G());
|
|
25
|
+
}, [x, G]);
|
|
26
|
+
let Z = g(() => o(async (e, t, n) => {
|
|
26
27
|
if (!e.trim()) {
|
|
27
|
-
|
|
28
|
+
I([]), B(null);
|
|
28
29
|
return;
|
|
29
30
|
}
|
|
30
|
-
|
|
31
|
+
R(!0), B(null);
|
|
31
32
|
try {
|
|
32
|
-
let r = await
|
|
33
|
-
if (!
|
|
34
|
-
|
|
33
|
+
let r = await E(e, t, n);
|
|
34
|
+
if (!s(r)) throw TypeError(A("search.invalidResults", "Invalid search results format"));
|
|
35
|
+
I(r);
|
|
35
36
|
} catch (e) {
|
|
36
|
-
|
|
37
|
+
B(e instanceof Error ? e.message : A("search.failed", "Search failed")), I([]), console.error("Search error:", e);
|
|
37
38
|
} finally {
|
|
38
|
-
|
|
39
|
+
R(!1);
|
|
39
40
|
}
|
|
40
|
-
}, 300), [
|
|
41
|
-
|
|
42
|
-
|
|
41
|
+
}, 300), [E, A]);
|
|
42
|
+
h(() => {
|
|
43
|
+
Z(j, N, W());
|
|
43
44
|
}, [
|
|
44
|
-
k,
|
|
45
45
|
j,
|
|
46
|
-
|
|
47
|
-
|
|
46
|
+
N,
|
|
47
|
+
Z,
|
|
48
|
+
W
|
|
48
49
|
]);
|
|
49
|
-
let
|
|
50
|
+
let Q = g(() => F.reduce((e, t) => {
|
|
50
51
|
let n = t.category;
|
|
51
52
|
return e[n] || (e[n] = []), e[n].push(t), e;
|
|
52
|
-
}, {}), [
|
|
53
|
-
|
|
54
|
-
}, [
|
|
55
|
-
return
|
|
53
|
+
}, {}), [F]), $ = m((e) => {
|
|
54
|
+
D(e), S();
|
|
55
|
+
}, [D, S]);
|
|
56
|
+
return x ? /* @__PURE__ */ y(r, {
|
|
56
57
|
modal: !0,
|
|
57
|
-
onDismiss:
|
|
58
|
-
children: /* @__PURE__ */
|
|
59
|
-
className:
|
|
60
|
-
onClick:
|
|
61
|
-
"data-state":
|
|
58
|
+
onDismiss: S,
|
|
59
|
+
children: /* @__PURE__ */ y("div", {
|
|
60
|
+
className: a("fixed inset-0 flex items-center justify-center bg-bg-overlay backdrop-blur-md", i, "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", k),
|
|
61
|
+
onClick: S,
|
|
62
|
+
"data-state": x ? "open" : "closed",
|
|
62
63
|
role: "dialog",
|
|
63
64
|
"aria-modal": "true",
|
|
64
|
-
children: /* @__PURE__ */
|
|
65
|
+
children: /* @__PURE__ */ y("div", {
|
|
65
66
|
className: "w-full max-w-lg mx-4 max-h-[85dvh] overflow-hidden",
|
|
66
67
|
onClick: (e) => e.stopPropagation(),
|
|
67
|
-
children: /* @__PURE__ */
|
|
68
|
+
children: /* @__PURE__ */ b("div", {
|
|
68
69
|
className: "overflow-hidden rounded-2xl border border-border-subtle bg-bg-elevated shadow-[var(--shadow-elevation-5)]",
|
|
69
70
|
children: [
|
|
70
|
-
/* @__PURE__ */
|
|
71
|
-
value:
|
|
72
|
-
placeholder:
|
|
73
|
-
onChange:
|
|
74
|
-
onClear: () =>
|
|
71
|
+
/* @__PURE__ */ y(c, {
|
|
72
|
+
value: j,
|
|
73
|
+
placeholder: w ?? A("search.globalPlaceholder", "Search everything..."),
|
|
74
|
+
onChange: M,
|
|
75
|
+
onClear: () => M("")
|
|
75
76
|
}),
|
|
76
|
-
/* @__PURE__ */
|
|
77
|
-
categories:
|
|
78
|
-
selectedCategory:
|
|
79
|
-
onSelect:
|
|
77
|
+
/* @__PURE__ */ y(l, {
|
|
78
|
+
categories: C,
|
|
79
|
+
selectedCategory: N,
|
|
80
|
+
onSelect: P
|
|
80
81
|
}),
|
|
81
|
-
/* @__PURE__ */
|
|
82
|
-
searchMode:
|
|
83
|
-
onSearchModeChange:
|
|
84
|
-
showAdvanced:
|
|
85
|
-
onToggleAdvanced: () =>
|
|
82
|
+
/* @__PURE__ */ y(u, {
|
|
83
|
+
searchMode: K,
|
|
84
|
+
onSearchModeChange: q,
|
|
85
|
+
showAdvanced: V,
|
|
86
|
+
onToggleAdvanced: () => H((e) => !e)
|
|
86
87
|
}),
|
|
87
|
-
|
|
88
|
-
/* @__PURE__ */
|
|
89
|
-
loading:
|
|
90
|
-
error:
|
|
91
|
-
query:
|
|
92
|
-
results:
|
|
93
|
-
groupedResults:
|
|
94
|
-
recentSearches:
|
|
95
|
-
onRecentSelect:
|
|
96
|
-
onResultSelect:
|
|
88
|
+
V && /* @__PURE__ */ y(d, { filters: U }),
|
|
89
|
+
/* @__PURE__ */ y(f, {
|
|
90
|
+
loading: L,
|
|
91
|
+
error: z,
|
|
92
|
+
query: j,
|
|
93
|
+
results: F,
|
|
94
|
+
groupedResults: Q,
|
|
95
|
+
recentSearches: T,
|
|
96
|
+
onRecentSelect: M,
|
|
97
|
+
onResultSelect: $
|
|
97
98
|
}),
|
|
98
|
-
|
|
99
|
+
j && F.length > 0 && O && /* @__PURE__ */ y("div", {
|
|
99
100
|
className: "border-t border-border-subtle p-2",
|
|
100
|
-
children: /* @__PURE__ */
|
|
101
|
+
children: /* @__PURE__ */ b("button", {
|
|
101
102
|
type: "button",
|
|
102
103
|
onClick: () => {
|
|
103
|
-
|
|
104
|
+
O(j, W(), N), S();
|
|
104
105
|
},
|
|
105
106
|
className: "w-full flex items-center justify-center gap-2 py-2 text-sm font-medium text-text-link hover:bg-bg-sunken rounded-button transition-colors",
|
|
106
|
-
children: [/* @__PURE__ */ v
|
|
107
|
+
children: [/* @__PURE__ */ y(v, { className: "size-4" }), A("search.viewAllResults", "View all results")]
|
|
107
108
|
})
|
|
108
109
|
})
|
|
109
110
|
]
|
|
@@ -113,4 +114,4 @@ function b({ open: b, onClose: x, categories: S = [], placeholder: C = "Search e
|
|
|
113
114
|
}) : null;
|
|
114
115
|
}
|
|
115
116
|
//#endregion
|
|
116
|
-
export {
|
|
117
|
+
export { x as GlobalSearch };
|
package/dist/chrome/HeaderBar.js
CHANGED
|
@@ -37,7 +37,7 @@ var a = ({ logo: a, appName: o, onLogoClick: s, onMenuToggle: c, onSearchClick:
|
|
|
37
37
|
onKeyDown: s ? (e) => {
|
|
38
38
|
(e.key === "Enter" || e.key === " ") && (e.preventDefault(), s());
|
|
39
39
|
} : void 0,
|
|
40
|
-
"aria-label": s ? "Go to home" : void 0,
|
|
40
|
+
"aria-label": s ? D("nav.goHome", "Go to home") : void 0,
|
|
41
41
|
children: typeof a == "string" ? /* @__PURE__ */ r("span", {
|
|
42
42
|
className: "text-action-primary-text font-bold text-sm",
|
|
43
43
|
children: a
|
|
@@ -2,20 +2,21 @@ import { DropdownMenu as e, DropdownMenuContent as t, DropdownMenuItem as n, Dro
|
|
|
2
2
|
import { useTheme as o } from "../shared/providers/shell/ThemeProvider.js";
|
|
3
3
|
import { useShellLabel as s } from "../shared/providers/shell/useShellLabel.js";
|
|
4
4
|
import { useExclusiveMenu as c } from "../shared/hooks/useExclusiveMenu.js";
|
|
5
|
-
import {
|
|
5
|
+
import { useThemeOptionLabels as l } from "./useThemeOptionLabels.js";
|
|
6
|
+
import { cn as u } from "../utils/cn.js";
|
|
6
7
|
import "../utils/index.js";
|
|
7
|
-
import { useCallback as
|
|
8
|
-
import { Check as
|
|
9
|
-
import { jsx as
|
|
8
|
+
import { useCallback as d, useState as f } from "react";
|
|
9
|
+
import { Check as p, Contrast as m, Monitor as h, Moon as g, Palette as _, Sun as v, Sunset as y, Trees as b, Waves as x } from "lucide-react";
|
|
10
|
+
import { jsx as S, jsxs as C } from "react/jsx-runtime";
|
|
10
11
|
//#region src/chrome/HeaderThemeSwitcher.tsx
|
|
11
|
-
var
|
|
12
|
-
light:
|
|
13
|
-
dark:
|
|
14
|
-
forest:
|
|
15
|
-
ocean:
|
|
16
|
-
sunset:
|
|
17
|
-
"high-contrast":
|
|
18
|
-
},
|
|
12
|
+
var w = {
|
|
13
|
+
light: v,
|
|
14
|
+
dark: g,
|
|
15
|
+
forest: b,
|
|
16
|
+
ocean: x,
|
|
17
|
+
sunset: y,
|
|
18
|
+
"high-contrast": m
|
|
19
|
+
}, T = [
|
|
19
20
|
{
|
|
20
21
|
value: "light",
|
|
21
22
|
label: "Light"
|
|
@@ -41,67 +42,67 @@ var C = {
|
|
|
41
42
|
label: "High contrast"
|
|
42
43
|
}
|
|
43
44
|
];
|
|
44
|
-
function
|
|
45
|
-
let [
|
|
46
|
-
c("header-theme",
|
|
47
|
-
let { mode:
|
|
48
|
-
return /* @__PURE__ */
|
|
49
|
-
open:
|
|
50
|
-
onOpenChange:
|
|
51
|
-
children: [/* @__PURE__ */
|
|
45
|
+
function E({ mobileOptimized: n = !0 }) {
|
|
46
|
+
let [p, m] = f(!1);
|
|
47
|
+
c("header-theme", p, d(() => m(!1), []));
|
|
48
|
+
let { mode: y, setMode: b, resolvedTheme: x } = o(), E = s(), O = l(), k = E("themeSwitcher.label", "Theme"), A = x === "dark" ? g : v, j = d((e) => b(e), [b]);
|
|
49
|
+
return /* @__PURE__ */ C(e, {
|
|
50
|
+
open: p,
|
|
51
|
+
onOpenChange: m,
|
|
52
|
+
children: [/* @__PURE__ */ S(a, {
|
|
52
53
|
asChild: !0,
|
|
53
|
-
children: /* @__PURE__ */
|
|
54
|
+
children: /* @__PURE__ */ S("button", {
|
|
54
55
|
type: "button",
|
|
55
|
-
"aria-label":
|
|
56
|
-
title:
|
|
57
|
-
className:
|
|
58
|
-
children: /* @__PURE__ */
|
|
56
|
+
"aria-label": k,
|
|
57
|
+
title: k,
|
|
58
|
+
className: u("flex size-9 items-center justify-center rounded-button text-text-primary transition-colors", "hover:bg-bg-sunken focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[var(--color-focus-ring)]", n ? "hidden md:flex" : ""),
|
|
59
|
+
children: /* @__PURE__ */ S(A, {
|
|
59
60
|
className: "size-5",
|
|
60
61
|
"aria-hidden": "true"
|
|
61
62
|
})
|
|
62
63
|
})
|
|
63
|
-
}), /* @__PURE__ */
|
|
64
|
+
}), /* @__PURE__ */ C(t, {
|
|
64
65
|
align: "end",
|
|
65
66
|
className: "w-56",
|
|
66
67
|
children: [
|
|
67
|
-
/* @__PURE__ */
|
|
68
|
+
/* @__PURE__ */ C(r, {
|
|
68
69
|
className: "flex items-center gap-2 text-text-secondary",
|
|
69
|
-
children: [/* @__PURE__ */
|
|
70
|
+
children: [/* @__PURE__ */ S(_, {
|
|
70
71
|
className: "size-4",
|
|
71
72
|
"aria-hidden": "true"
|
|
72
|
-
}), "Appearance"]
|
|
73
|
+
}), E("themeSwitcher.heading", "Appearance")]
|
|
73
74
|
}),
|
|
74
|
-
/* @__PURE__ */
|
|
75
|
-
/* @__PURE__ */
|
|
76
|
-
active:
|
|
77
|
-
icon:
|
|
78
|
-
label: "System",
|
|
79
|
-
onSelect: () =>
|
|
75
|
+
/* @__PURE__ */ S(i, {}),
|
|
76
|
+
/* @__PURE__ */ S(D, {
|
|
77
|
+
active: y === "system",
|
|
78
|
+
icon: h,
|
|
79
|
+
label: E("themeSwitcher.system", "System"),
|
|
80
|
+
onSelect: () => j("system")
|
|
80
81
|
}),
|
|
81
|
-
|
|
82
|
-
active:
|
|
83
|
-
icon:
|
|
84
|
-
label: e.
|
|
85
|
-
onSelect: () =>
|
|
82
|
+
T.map((e) => /* @__PURE__ */ S(D, {
|
|
83
|
+
active: y === e.value,
|
|
84
|
+
icon: w[e.value],
|
|
85
|
+
label: e.value === "high-contrast" ? O.highContrastMenu : O.themes[e.value],
|
|
86
|
+
onSelect: () => j(e.value)
|
|
86
87
|
}, e.value))
|
|
87
88
|
]
|
|
88
89
|
})]
|
|
89
90
|
});
|
|
90
91
|
}
|
|
91
|
-
function
|
|
92
|
-
return /* @__PURE__ */
|
|
92
|
+
function D({ active: e, icon: t, label: r, onSelect: i }) {
|
|
93
|
+
return /* @__PURE__ */ C(n, {
|
|
93
94
|
onSelect: i,
|
|
94
|
-
className:
|
|
95
|
+
className: u("gap-2", e && "bg-[var(--color-accent-soft)] text-text-primary"),
|
|
95
96
|
children: [
|
|
96
|
-
/* @__PURE__ */
|
|
97
|
+
/* @__PURE__ */ S(t, {
|
|
97
98
|
className: "size-4 text-text-secondary",
|
|
98
99
|
"aria-hidden": "true"
|
|
99
100
|
}),
|
|
100
|
-
/* @__PURE__ */
|
|
101
|
+
/* @__PURE__ */ S("span", {
|
|
101
102
|
className: "flex-1",
|
|
102
103
|
children: r
|
|
103
104
|
}),
|
|
104
|
-
e && /* @__PURE__ */
|
|
105
|
+
e && /* @__PURE__ */ S(p, {
|
|
105
106
|
className: "size-4 text-action-primary-bg",
|
|
106
107
|
"aria-hidden": "true"
|
|
107
108
|
})
|
|
@@ -109,4 +110,4 @@ function E({ active: e, icon: t, label: r, onSelect: i }) {
|
|
|
109
110
|
});
|
|
110
111
|
}
|
|
111
112
|
//#endregion
|
|
112
|
-
export {
|
|
113
|
+
export { E as HeaderThemeSwitcher };
|
|
@@ -1,47 +1,48 @@
|
|
|
1
1
|
import { Sheet as e, SheetContent as t, SheetHeader as n, SheetTitle as r } from "../ui/sheet.js";
|
|
2
|
-
import {
|
|
2
|
+
import { useShellLabel as i } from "../shared/providers/shell/useShellLabel.js";
|
|
3
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
3
4
|
//#region src/chrome/LanguagePickerSheet.tsx
|
|
4
|
-
var
|
|
5
|
-
let
|
|
6
|
-
|
|
5
|
+
var s = ({ open: s, onOpenChange: c, languages: l, currentLanguage: u, onLanguageChange: d }) => {
|
|
6
|
+
let f = i(), p = (e) => {
|
|
7
|
+
d && d(e), c(!1);
|
|
7
8
|
};
|
|
8
|
-
return /* @__PURE__ */
|
|
9
|
-
open:
|
|
10
|
-
onOpenChange:
|
|
11
|
-
children: /* @__PURE__ */
|
|
9
|
+
return /* @__PURE__ */ a(e, {
|
|
10
|
+
open: s,
|
|
11
|
+
onOpenChange: c,
|
|
12
|
+
children: /* @__PURE__ */ o(t, {
|
|
12
13
|
side: "bottom",
|
|
13
14
|
className: "h-[60vh] flex flex-col p-0",
|
|
14
|
-
children: [/* @__PURE__ */
|
|
15
|
+
children: [/* @__PURE__ */ a(n, {
|
|
15
16
|
className: "px-4 pt-4 pb-2 border-b border-border-subtle",
|
|
16
|
-
children: /* @__PURE__ */
|
|
17
|
+
children: /* @__PURE__ */ a(r, {
|
|
17
18
|
className: "text-text-primary",
|
|
18
|
-
children: "Select Language"
|
|
19
|
+
children: f("languageSwitcher.title", "Select Language")
|
|
19
20
|
})
|
|
20
|
-
}), /* @__PURE__ */
|
|
21
|
+
}), /* @__PURE__ */ a("div", {
|
|
21
22
|
className: "flex-1 overflow-y-auto py-2",
|
|
22
|
-
children:
|
|
23
|
-
onClick: () =>
|
|
24
|
-
className: `w-full flex items-center gap-4 px-4 py-3.5 text-body-sm transition-colors ${e.code ===
|
|
23
|
+
children: l.map((e) => /* @__PURE__ */ o("button", {
|
|
24
|
+
onClick: () => p(e),
|
|
25
|
+
className: `w-full flex items-center gap-4 px-4 py-3.5 text-body-sm transition-colors ${e.code === u ? "bg-[var(--color-accent-soft)]" : "hover:bg-bg-sunken"}`,
|
|
25
26
|
children: [
|
|
26
|
-
e.flag && /* @__PURE__ */
|
|
27
|
+
e.flag && /* @__PURE__ */ a("span", {
|
|
27
28
|
className: "text-2xl flex-shrink-0",
|
|
28
29
|
children: e.flag
|
|
29
30
|
}),
|
|
30
|
-
/* @__PURE__ */
|
|
31
|
+
/* @__PURE__ */ o("div", {
|
|
31
32
|
className: "flex-1 text-left min-w-0",
|
|
32
|
-
children: [/* @__PURE__ */
|
|
33
|
+
children: [/* @__PURE__ */ a("p", {
|
|
33
34
|
className: "font-medium text-text-primary",
|
|
34
35
|
children: e.name
|
|
35
|
-
}), /* @__PURE__ */
|
|
36
|
+
}), /* @__PURE__ */ a("p", {
|
|
36
37
|
className: "text-xs text-text-secondary",
|
|
37
38
|
children: e.nativeName
|
|
38
39
|
})]
|
|
39
40
|
}),
|
|
40
|
-
e.code ===
|
|
41
|
+
e.code === u && /* @__PURE__ */ a("svg", {
|
|
41
42
|
className: "size-5 text-action-primary-bg flex-shrink-0",
|
|
42
43
|
fill: "currentColor",
|
|
43
44
|
viewBox: "0 0 20 20",
|
|
44
|
-
children: /* @__PURE__ */
|
|
45
|
+
children: /* @__PURE__ */ a("path", {
|
|
45
46
|
fillRule: "evenodd",
|
|
46
47
|
d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",
|
|
47
48
|
clipRule: "evenodd"
|
|
@@ -54,4 +55,4 @@ var o = ({ open: o, onOpenChange: s, languages: c, currentLanguage: l, onLanguag
|
|
|
54
55
|
});
|
|
55
56
|
};
|
|
56
57
|
//#endregion
|
|
57
|
-
export {
|
|
58
|
+
export { s as LanguagePickerSheet };
|
|
@@ -1,17 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* NavCustomizeDialog — "Customize menu" for persona surfaces.
|
|
3
|
-
*
|
|
4
|
-
* Shows the FULL RBAC-permitted nav tree with a visibility toggle per item.
|
|
5
|
-
* Hard-hidden (RBAC-removed) items never appear here — there is nothing
|
|
6
|
-
* usable to reveal. Toggles write sparse per-item overrides that win over
|
|
7
|
-
* the active surface's defaults; flipping an item back to its surface
|
|
8
|
-
* default clears its override so the item keeps following future surface
|
|
9
|
-
* improvements. Also hosts the surface picker and (for workspace admins /
|
|
10
|
-
* super admins) the role-simulation picker, so every control is reachable
|
|
11
|
-
* from the collapsed rail and from mobile.
|
|
12
|
-
*
|
|
13
|
-
* Rendered by ProductSideNav; opens via PersonaSurfaceControls.
|
|
14
|
-
*/
|
|
15
1
|
export interface NavCustomizeDialogProps {
|
|
16
2
|
/** Group labels, reused from the sidebar so sections read identically. */
|
|
17
3
|
groupLabels?: Record<string, string>;
|