@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
|
@@ -1,39 +1,41 @@
|
|
|
1
1
|
import { ResponsiveDialog as e, ResponsiveDialogContent as t, ResponsiveDialogDescription as n, ResponsiveDialogHeader as r, ResponsiveDialogTitle as i } from "../ui/responsive-dialog.js";
|
|
2
2
|
import { useNavRegistryStore as a } from "../shared/hooks/shell/useNavRegistry.js";
|
|
3
3
|
import { Switch as o } from "../ui/switch.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
4
|
+
import { useShellLabel as s } from "../shared/providers/shell/useShellLabel.js";
|
|
5
|
+
import { useSafePermissions as c } from "../shared/providers/shell/PermissionProvider.js";
|
|
6
|
+
import { useSafePersonaSurface as l } from "../shared/providers/shell/PersonaSurfaceProvider.js";
|
|
7
|
+
import { interpolateShellLabel as u } from "../shared/providers/shell/interpolateShellLabel.js";
|
|
8
|
+
import { applyPermissionFilter as d, isItemEffectivelyShown as f } from "./sideNavigation/navVisibility.js";
|
|
9
|
+
import { useEffect as ee, useMemo as p, useState as m } from "react";
|
|
10
|
+
import { Fragment as h, jsx as g, jsxs as _ } from "react/jsx-runtime";
|
|
9
11
|
//#region src/chrome/NavCustomizeDialog.tsx
|
|
10
|
-
function
|
|
11
|
-
let s =
|
|
12
|
-
return /* @__PURE__ */
|
|
12
|
+
function v({ item: e, depth: t, parentShown: n, surfaceVisibleItems: r, overrides: i, onToggle: a }) {
|
|
13
|
+
let c = s(), l = f(e, n, r, i), u = l && (!r || r.includes(e.id) || i[e.id] === "shown");
|
|
14
|
+
return /* @__PURE__ */ _(h, { children: [/* @__PURE__ */ _("div", {
|
|
13
15
|
className: "flex items-center justify-between gap-3 py-1.5",
|
|
14
16
|
style: { paddingLeft: t * 16 },
|
|
15
|
-
children: [/* @__PURE__ */
|
|
16
|
-
className: `truncate text-body-sm ${
|
|
17
|
+
children: [/* @__PURE__ */ g("span", {
|
|
18
|
+
className: `truncate text-body-sm ${l ? "text-text-primary" : "text-text-muted"}`,
|
|
17
19
|
children: e.label
|
|
18
|
-
}), /* @__PURE__ */
|
|
19
|
-
checked:
|
|
20
|
+
}), /* @__PURE__ */ g(o, {
|
|
21
|
+
checked: l,
|
|
20
22
|
onCheckedChange: (t) => a(e, n, t === !0),
|
|
21
|
-
"aria-label":
|
|
23
|
+
"aria-label": c("nav.showNamedItem", "Show {{label}} in the menu", { label: e.label }),
|
|
22
24
|
"data-testid": `persona-toggle-${e.id}`
|
|
23
25
|
})]
|
|
24
|
-
}), e.children?.map((e) => /* @__PURE__ */
|
|
26
|
+
}), e.children?.map((e) => /* @__PURE__ */ g(v, {
|
|
25
27
|
item: e,
|
|
26
28
|
depth: t + 1,
|
|
27
|
-
parentShown:
|
|
29
|
+
parentShown: u,
|
|
28
30
|
surfaceVisibleItems: r,
|
|
29
31
|
overrides: i,
|
|
30
32
|
onToggle: a
|
|
31
33
|
}, e.id))] });
|
|
32
34
|
}
|
|
33
|
-
function
|
|
35
|
+
function y(e, t, n) {
|
|
34
36
|
let r = [], i = (e, a) => {
|
|
35
37
|
for (let o of e) {
|
|
36
|
-
let e =
|
|
38
|
+
let e = f(o, a, t, n);
|
|
37
39
|
e && r.push(o.id);
|
|
38
40
|
let s = e && (!t || t.includes(o.id) || n[o.id] === "shown");
|
|
39
41
|
o.children && i(o.children, s);
|
|
@@ -41,203 +43,193 @@ function v(e, t, n) {
|
|
|
41
43
|
};
|
|
42
44
|
return i(e, !1), r;
|
|
43
45
|
}
|
|
44
|
-
function
|
|
45
|
-
let
|
|
46
|
-
let e =
|
|
47
|
-
return !
|
|
46
|
+
function b({ groupLabels: o, groupOrder: h, everythingLabel: b = "Everything" }) {
|
|
47
|
+
let x = s(), S = l(), C = c(), w = a((e) => e.items), [T, E] = m(""), [D, O] = m(null), [k, A] = m(!1), [j, M] = m(null), N = C?.hasPermission, P = C?.isLoading ?? !1, F = p(() => {
|
|
48
|
+
let e = w.filter((e) => e.visible !== !1);
|
|
49
|
+
return !N || P ? e : d(e, N);
|
|
48
50
|
}, [
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
51
|
+
w,
|
|
52
|
+
N,
|
|
53
|
+
P
|
|
52
54
|
]);
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
}, [
|
|
56
|
-
let
|
|
55
|
+
ee(() => {
|
|
56
|
+
E(""), O(null), M(null);
|
|
57
|
+
}, [S?.customizeOpen ?? !1]);
|
|
58
|
+
let I = p(() => {
|
|
57
59
|
let e = /* @__PURE__ */ new Map();
|
|
58
|
-
for (let t of
|
|
60
|
+
for (let t of F) {
|
|
59
61
|
let n = t.group ?? "__default__", r = e.get(n);
|
|
60
62
|
r ? r.push(t) : e.set(n, [t]);
|
|
61
63
|
}
|
|
62
|
-
return [...
|
|
64
|
+
return [...h ?? [], ...Array.from(e.keys()).filter((e) => !(h ?? []).includes(e))].filter((t) => (e.get(t)?.length ?? 0) > 0).map((t) => ({
|
|
63
65
|
key: t,
|
|
64
66
|
label: t === "__default__" ? null : o?.[t] ?? t,
|
|
65
67
|
items: e.get(t) ?? []
|
|
66
68
|
}));
|
|
67
69
|
}, [
|
|
68
|
-
|
|
69
|
-
|
|
70
|
+
F,
|
|
71
|
+
h,
|
|
70
72
|
o
|
|
71
73
|
]);
|
|
72
|
-
if (!
|
|
73
|
-
let { activeSurfaceId:
|
|
74
|
-
let r =
|
|
75
|
-
|
|
76
|
-
},
|
|
77
|
-
let e = C.trim();
|
|
78
|
-
if (!e || D) return;
|
|
79
|
-
O(!0), A(null);
|
|
80
|
-
let t = await H(e, v(N, G, I));
|
|
81
|
-
O(!1), t ? w("") : A("Could not save the view — try a different name.");
|
|
82
|
-
}, Z = async () => {
|
|
83
|
-
if (!Y || T === null || D) return;
|
|
74
|
+
if (!S) return null;
|
|
75
|
+
let { activeSurfaceId: L, activeSurface: R, overrides: z, setItemOverride: B, resetOverrides: V, customizeOpen: H, setCustomizeOpen: U, simulation: W, customViews: G, canManageViews: K, createCustomView: te, renameCustomView: ne, deleteCustomView: re } = S, q = R ? R.visibleItems : null, ie = (e, t, n) => {
|
|
76
|
+
let r = f(e, t, q, {});
|
|
77
|
+
B(e.id, n === r ? null : n ? "shown" : "hidden");
|
|
78
|
+
}, J = Object.keys(z).length, ae = L === "everything" ? b : R?.label ?? L, Y = G.find((e) => e.id === L) ?? null, X = async () => {
|
|
84
79
|
let e = T.trim();
|
|
80
|
+
if (!e || k) return;
|
|
81
|
+
A(!0), M(null);
|
|
82
|
+
let t = await te(e, y(F, q, z));
|
|
83
|
+
A(!1), t ? E("") : M(x("nav.saveViewError", "Could not save the view — try a different name."));
|
|
84
|
+
}, Z = async () => {
|
|
85
|
+
if (!Y || D === null || k) return;
|
|
86
|
+
let e = D.trim();
|
|
85
87
|
if (!e || e === Y.name) {
|
|
86
|
-
|
|
88
|
+
O(null);
|
|
87
89
|
return;
|
|
88
90
|
}
|
|
89
|
-
|
|
90
|
-
let t = await
|
|
91
|
-
|
|
92
|
-
},
|
|
93
|
-
if (!Y ||
|
|
94
|
-
|
|
95
|
-
let e = await
|
|
96
|
-
|
|
91
|
+
A(!0), M(null);
|
|
92
|
+
let t = await ne(Y.id, e);
|
|
93
|
+
A(!1), t ? O(null) : M(x("nav.renameViewError", "Could not rename the view — try a different name."));
|
|
94
|
+
}, oe = async () => {
|
|
95
|
+
if (!Y || k) return;
|
|
96
|
+
A(!0), M(null);
|
|
97
|
+
let e = await re(Y.id);
|
|
98
|
+
A(!1), e || M(x("nav.deleteViewError", "Could not delete the view."));
|
|
97
99
|
}, Q = "w-full rounded-button border border-border-subtle bg-bg-canvas px-3 py-2 text-body-sm text-text-primary placeholder:text-text-muted", $ = "rounded-button border border-border-subtle px-3 py-2 text-body-sm font-medium text-text-primary hover:bg-bg-sunken transition-colors disabled:opacity-50";
|
|
98
|
-
return /* @__PURE__ */
|
|
99
|
-
open:
|
|
100
|
-
onOpenChange:
|
|
101
|
-
children: /* @__PURE__ */
|
|
100
|
+
return /* @__PURE__ */ g(e, {
|
|
101
|
+
open: H,
|
|
102
|
+
onOpenChange: U,
|
|
103
|
+
children: /* @__PURE__ */ _(t, {
|
|
102
104
|
className: "max-h-[85vh] overflow-y-auto sm:max-w-lg",
|
|
103
|
-
children: [/* @__PURE__ */
|
|
104
|
-
"
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
className: "font-medium text-text-primary",
|
|
108
|
-
children: J
|
|
109
|
-
}),
|
|
110
|
-
" view. Hidden pages stay one click away under “more” and in search — nothing is removed."
|
|
111
|
-
] })] }), /* @__PURE__ */ g("div", {
|
|
105
|
+
children: [/* @__PURE__ */ _(r, { children: [/* @__PURE__ */ g(i, { children: x("nav.customizeMenu", "Customize menu") }), /* @__PURE__ */ g(n, { children: u(x("nav.customizeDescription", "Choose which pages appear in the {{view}} view. Hidden pages stay one click away under “more” and in search — nothing is removed."), { view: /* @__PURE__ */ g("span", {
|
|
106
|
+
className: "font-medium text-text-primary",
|
|
107
|
+
children: ae
|
|
108
|
+
}) }) })] }), /* @__PURE__ */ _("div", {
|
|
112
109
|
className: "space-y-5",
|
|
113
110
|
children: [
|
|
114
|
-
Y && !
|
|
111
|
+
Y && !W && /* @__PURE__ */ _("section", {
|
|
115
112
|
className: "space-y-2",
|
|
116
113
|
"data-testid": "persona-dialog-manage-view",
|
|
117
|
-
children: [/* @__PURE__ */
|
|
114
|
+
children: [/* @__PURE__ */ g("h3", {
|
|
118
115
|
className: "text-[11px] font-medium uppercase tracking-wider text-text-muted",
|
|
119
|
-
children: "This view"
|
|
120
|
-
}),
|
|
116
|
+
children: x("nav.thisView", "This view")
|
|
117
|
+
}), D === null ? /* @__PURE__ */ _("div", {
|
|
121
118
|
className: "flex items-center gap-2",
|
|
122
119
|
children: [
|
|
123
|
-
/* @__PURE__ */
|
|
120
|
+
/* @__PURE__ */ g("span", {
|
|
124
121
|
className: "min-w-0 flex-1 truncate text-body-sm text-text-primary",
|
|
125
122
|
children: Y.name
|
|
126
123
|
}),
|
|
127
|
-
/* @__PURE__ */
|
|
124
|
+
/* @__PURE__ */ g("button", {
|
|
128
125
|
type: "button",
|
|
129
|
-
onClick: () =>
|
|
126
|
+
onClick: () => O(Y.name),
|
|
130
127
|
className: $,
|
|
131
128
|
"data-testid": "persona-dialog-rename-view",
|
|
132
|
-
children: "Rename"
|
|
129
|
+
children: x("files.common.actions.rename", "Rename")
|
|
133
130
|
}),
|
|
134
|
-
/* @__PURE__ */
|
|
131
|
+
/* @__PURE__ */ g("button", {
|
|
135
132
|
type: "button",
|
|
136
|
-
onClick:
|
|
137
|
-
disabled:
|
|
133
|
+
onClick: oe,
|
|
134
|
+
disabled: k,
|
|
138
135
|
className: `${$} text-status-error-text`,
|
|
139
136
|
"data-testid": "persona-dialog-delete-view",
|
|
140
|
-
children: "Delete"
|
|
137
|
+
children: x("common.actions.delete", "Delete")
|
|
141
138
|
})
|
|
142
139
|
]
|
|
143
|
-
}) : /* @__PURE__ */
|
|
140
|
+
}) : /* @__PURE__ */ _("div", {
|
|
144
141
|
className: "flex items-center gap-2",
|
|
145
|
-
children: [/* @__PURE__ */
|
|
146
|
-
value:
|
|
147
|
-
onChange: (e) =>
|
|
142
|
+
children: [/* @__PURE__ */ g("input", {
|
|
143
|
+
value: D,
|
|
144
|
+
onChange: (e) => O(e.target.value),
|
|
148
145
|
onKeyDown: (e) => {
|
|
149
146
|
e.key === "Enter" && Z();
|
|
150
147
|
},
|
|
151
148
|
maxLength: 60,
|
|
152
149
|
className: Q,
|
|
153
150
|
"data-testid": "persona-dialog-rename-input"
|
|
154
|
-
}), /* @__PURE__ */
|
|
151
|
+
}), /* @__PURE__ */ g("button", {
|
|
155
152
|
type: "button",
|
|
156
153
|
onClick: () => void Z(),
|
|
157
|
-
disabled:
|
|
154
|
+
disabled: k,
|
|
158
155
|
className: $,
|
|
159
156
|
"data-testid": "persona-dialog-rename-save",
|
|
160
|
-
children: "Save"
|
|
157
|
+
children: x("common.save", "Save")
|
|
161
158
|
})]
|
|
162
159
|
})]
|
|
163
160
|
}),
|
|
164
|
-
/* @__PURE__ */
|
|
161
|
+
/* @__PURE__ */ _("section", {
|
|
165
162
|
className: "space-y-1",
|
|
166
163
|
"data-testid": "persona-dialog-items",
|
|
167
|
-
children: [/* @__PURE__ */
|
|
164
|
+
children: [/* @__PURE__ */ _("div", {
|
|
168
165
|
className: "flex items-center justify-between",
|
|
169
|
-
children: [/* @__PURE__ */
|
|
166
|
+
children: [/* @__PURE__ */ g("h3", {
|
|
170
167
|
className: "text-[11px] font-medium uppercase tracking-wider text-text-muted",
|
|
171
|
-
children: "Menu items"
|
|
172
|
-
}),
|
|
168
|
+
children: x("nav.menuItems", "Menu items")
|
|
169
|
+
}), J > 0 && /* @__PURE__ */ g("button", {
|
|
173
170
|
type: "button",
|
|
174
|
-
onClick:
|
|
171
|
+
onClick: V,
|
|
175
172
|
className: "text-body-sm text-text-secondary underline-offset-2 hover:text-text-primary hover:underline",
|
|
176
173
|
"data-testid": "persona-dialog-reset-overrides",
|
|
177
|
-
children:
|
|
178
|
-
"Reset ",
|
|
179
|
-
q,
|
|
180
|
-
" change",
|
|
181
|
-
q === 1 ? "" : "s"
|
|
182
|
-
]
|
|
174
|
+
children: J === 1 ? x("nav.resetOneChange", "Reset {{count}} change", { count: J }) : x("nav.resetChanges", "Reset {{count}} changes", { count: J })
|
|
183
175
|
})]
|
|
184
|
-
}),
|
|
176
|
+
}), W ? /* @__PURE__ */ g("p", {
|
|
185
177
|
className: "py-2 text-body-sm text-text-muted",
|
|
186
|
-
children: "Exit role simulation to customize your own menu."
|
|
187
|
-
}) :
|
|
178
|
+
children: x("nav.exitSimulationHint", "Exit role simulation to customize your own menu.")
|
|
179
|
+
}) : I.map((e) => /* @__PURE__ */ _("div", {
|
|
188
180
|
className: "pt-2",
|
|
189
|
-
children: [e.label && /* @__PURE__ */
|
|
181
|
+
children: [e.label && /* @__PURE__ */ g("p", {
|
|
190
182
|
className: "pb-1 text-[11px] font-medium uppercase tracking-wider text-text-muted",
|
|
191
183
|
children: e.label
|
|
192
|
-
}), /* @__PURE__ */
|
|
184
|
+
}), /* @__PURE__ */ g("div", {
|
|
193
185
|
className: "divide-y divide-border-subtle",
|
|
194
|
-
children: e.items.map((e) => /* @__PURE__ */
|
|
186
|
+
children: e.items.map((e) => /* @__PURE__ */ g(v, {
|
|
195
187
|
item: e,
|
|
196
188
|
depth: 0,
|
|
197
189
|
parentShown: !1,
|
|
198
|
-
surfaceVisibleItems:
|
|
199
|
-
overrides:
|
|
200
|
-
onToggle:
|
|
190
|
+
surfaceVisibleItems: q,
|
|
191
|
+
overrides: z,
|
|
192
|
+
onToggle: ie
|
|
201
193
|
}, e.id))
|
|
202
194
|
})]
|
|
203
195
|
}, e.key))]
|
|
204
196
|
}),
|
|
205
|
-
|
|
197
|
+
K && !W && /* @__PURE__ */ _("section", {
|
|
206
198
|
className: "space-y-2",
|
|
207
199
|
"data-testid": "persona-dialog-save-view",
|
|
208
200
|
children: [
|
|
209
|
-
/* @__PURE__ */
|
|
201
|
+
/* @__PURE__ */ g("h3", {
|
|
210
202
|
className: "text-[11px] font-medium uppercase tracking-wider text-text-muted",
|
|
211
|
-
children: "Save as new view"
|
|
203
|
+
children: x("nav.saveAsNewView", "Save as new view")
|
|
212
204
|
}),
|
|
213
|
-
/* @__PURE__ */
|
|
205
|
+
/* @__PURE__ */ g("p", {
|
|
214
206
|
className: "text-body-sm text-text-muted",
|
|
215
|
-
children: "Saves the menu exactly as configured above as your own view, available on all your devices."
|
|
207
|
+
children: x("nav.saveViewHelp", "Saves the menu exactly as configured above as your own view, available on all your devices.")
|
|
216
208
|
}),
|
|
217
|
-
/* @__PURE__ */
|
|
209
|
+
/* @__PURE__ */ _("div", {
|
|
218
210
|
className: "flex items-center gap-2",
|
|
219
|
-
children: [/* @__PURE__ */
|
|
220
|
-
value:
|
|
221
|
-
onChange: (e) =>
|
|
211
|
+
children: [/* @__PURE__ */ g("input", {
|
|
212
|
+
value: T,
|
|
213
|
+
onChange: (e) => E(e.target.value),
|
|
222
214
|
onKeyDown: (e) => {
|
|
223
215
|
e.key === "Enter" && X();
|
|
224
216
|
},
|
|
225
|
-
placeholder: "View name (e.g. Harvest season)",
|
|
217
|
+
placeholder: x("nav.viewNamePlaceholder", "View name (e.g. Harvest season)"),
|
|
226
218
|
maxLength: 60,
|
|
227
219
|
className: Q,
|
|
228
220
|
"data-testid": "persona-dialog-new-view-name"
|
|
229
|
-
}), /* @__PURE__ */
|
|
221
|
+
}), /* @__PURE__ */ g("button", {
|
|
230
222
|
type: "button",
|
|
231
223
|
onClick: () => void X(),
|
|
232
|
-
disabled:
|
|
224
|
+
disabled: k || !T.trim(),
|
|
233
225
|
className: $,
|
|
234
226
|
"data-testid": "persona-dialog-new-view-save",
|
|
235
|
-
children: "Save"
|
|
227
|
+
children: x("common.save", "Save")
|
|
236
228
|
})]
|
|
237
229
|
}),
|
|
238
|
-
|
|
230
|
+
j && /* @__PURE__ */ g("p", {
|
|
239
231
|
className: "text-body-sm text-status-error-text",
|
|
240
|
-
children:
|
|
232
|
+
children: j
|
|
241
233
|
})
|
|
242
234
|
]
|
|
243
235
|
})
|
|
@@ -247,4 +239,4 @@ function y({ groupLabels: o, groupOrder: m, everythingLabel: y = "Everything" })
|
|
|
247
239
|
});
|
|
248
240
|
}
|
|
249
241
|
//#endregion
|
|
250
|
-
export {
|
|
242
|
+
export { b as NavCustomizeDialog };
|
package/dist/chrome/PanelTabs.js
CHANGED
|
@@ -1,44 +1,48 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { useShellLabel as e } from "../shared/providers/shell/useShellLabel.js";
|
|
2
|
+
import { Maximize2 as t, Minimize2 as n, Minus as r, X as i } from "lucide-react";
|
|
3
|
+
import { jsx as a, jsxs as o } from "react/jsx-runtime";
|
|
3
4
|
//#region src/chrome/PanelTabs.tsx
|
|
4
|
-
var
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
className: "flex items-center
|
|
8
|
-
children:
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
className: "flex items-center gap-0.5",
|
|
18
|
-
children: [
|
|
19
|
-
u && /* @__PURE__ */ i("button", {
|
|
20
|
-
type: "button",
|
|
21
|
-
onClick: u,
|
|
22
|
-
className: "p-1 rounded text-text-muted hover:text-text-primary hover:bg-bg-sunken transition-colors",
|
|
23
|
-
"aria-label": "Minimize panel",
|
|
24
|
-
children: /* @__PURE__ */ i(n, { className: "size-3.5" })
|
|
25
|
-
}),
|
|
26
|
-
d && /* @__PURE__ */ i("button", {
|
|
27
|
-
type: "button",
|
|
28
|
-
onClick: d,
|
|
29
|
-
className: "p-1 rounded text-text-muted hover:text-text-primary hover:bg-bg-sunken transition-colors",
|
|
30
|
-
"aria-label": f ? "Restore panel" : "Maximize panel",
|
|
31
|
-
children: i(f ? t : e, { className: "size-3.5" })
|
|
32
|
-
}),
|
|
33
|
-
/* @__PURE__ */ i("button", {
|
|
34
|
-
type: "button",
|
|
35
|
-
onClick: l,
|
|
36
|
-
className: "p-1 rounded text-text-muted hover:text-text-primary hover:bg-bg-sunken transition-colors",
|
|
37
|
-
"aria-label": "Close panel",
|
|
38
|
-
children: /* @__PURE__ */ i(r, { className: "size-3.5" })
|
|
5
|
+
var s = ({ tabs: s, activeTabId: c, onTabClick: l, onClose: u, onMinimize: d, onMaximize: f, isMaximized: p }) => {
|
|
6
|
+
let m = e();
|
|
7
|
+
return /* @__PURE__ */ o("div", {
|
|
8
|
+
className: "flex items-center justify-between border-b border-border-subtle bg-bg-sunken h-9 px-2 flex-shrink-0",
|
|
9
|
+
children: [/* @__PURE__ */ a("div", {
|
|
10
|
+
className: "flex items-center gap-0.5 overflow-x-auto",
|
|
11
|
+
children: s.map((e) => {
|
|
12
|
+
let t = e.icon;
|
|
13
|
+
return /* @__PURE__ */ o("button", {
|
|
14
|
+
onClick: () => l(e.id),
|
|
15
|
+
className: `flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-t transition-colors ${e.id === c ? "bg-bg-surface text-text-primary border-b-2 border-action-primary-bg" : "text-text-secondary hover:text-text-primary hover:bg-bg-surface"}`,
|
|
16
|
+
children: [t && /* @__PURE__ */ a(t, { className: "size-3.5" }), /* @__PURE__ */ a("span", { children: e.title })]
|
|
17
|
+
}, e.id);
|
|
39
18
|
})
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
19
|
+
}), /* @__PURE__ */ o("div", {
|
|
20
|
+
className: "flex items-center gap-0.5",
|
|
21
|
+
children: [
|
|
22
|
+
d && /* @__PURE__ */ a("button", {
|
|
23
|
+
type: "button",
|
|
24
|
+
onClick: d,
|
|
25
|
+
className: "p-1 rounded text-text-muted hover:text-text-primary hover:bg-bg-sunken transition-colors",
|
|
26
|
+
"aria-label": m("appShell.minimizePanel", "Minimize panel"),
|
|
27
|
+
children: /* @__PURE__ */ a(r, { className: "size-3.5" })
|
|
28
|
+
}),
|
|
29
|
+
f && /* @__PURE__ */ a("button", {
|
|
30
|
+
type: "button",
|
|
31
|
+
onClick: f,
|
|
32
|
+
className: "p-1 rounded text-text-muted hover:text-text-primary hover:bg-bg-sunken transition-colors",
|
|
33
|
+
"aria-label": p ? m("appShell.restorePanel", "Restore panel") : m("appShell.maximizePanel", "Maximize panel"),
|
|
34
|
+
children: a(p ? n : t, { className: "size-3.5" })
|
|
35
|
+
}),
|
|
36
|
+
/* @__PURE__ */ a("button", {
|
|
37
|
+
type: "button",
|
|
38
|
+
onClick: u,
|
|
39
|
+
className: "p-1 rounded text-text-muted hover:text-text-primary hover:bg-bg-sunken transition-colors",
|
|
40
|
+
"aria-label": m("notifCommon.closePanel", "Close panel"),
|
|
41
|
+
children: /* @__PURE__ */ a(i, { className: "size-3.5" })
|
|
42
|
+
})
|
|
43
|
+
]
|
|
44
|
+
})]
|
|
45
|
+
});
|
|
46
|
+
};
|
|
43
47
|
//#endregion
|
|
44
|
-
export {
|
|
48
|
+
export { s as PanelTabs };
|
|
@@ -1,20 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* PersonaSurfaceControls — sidebar-footer widget for persona surfaces.
|
|
3
|
-
*
|
|
4
|
-
* Rendered automatically by ProductSideNav when a PersonaSurfaceProvider is
|
|
5
|
-
* mounted. One compact row: a searchable VIEW DROPDOWN (the user's surfaces —
|
|
6
|
-
* their own role preselected and marked — plus Everything, and, for workspace
|
|
7
|
-
* admins / super admins, a "Preview a role" section) and a Customize button
|
|
8
|
-
* that opens the per-item visibility dialog. The dropdown panel portals to
|
|
9
|
-
* document.body with a stable width (min 300px, clamped to the viewport) and
|
|
10
|
-
* tracks the trigger's rect — anchored inside the sidebar it would inherit
|
|
11
|
-
* the sidebar's animating width and be clipped by the aside's
|
|
12
|
-
* overflow-x-hidden. No backdrop/overlay, so it never deadens the nav or the
|
|
13
|
-
* mobile drawer. During role preview the trigger tints amber and an "Exit
|
|
14
|
-
* preview" row appears; a viewport-fixed pill (rendered by ProductSideNav
|
|
15
|
-
* OUTSIDE the aside — its backdrop-filter would trap fixed positioning)
|
|
16
|
-
* mirrors the state on all breakpoints.
|
|
17
|
-
*/
|
|
18
1
|
export interface PersonaSurfaceControlsProps {
|
|
19
2
|
/** Label for the built-in uncurated surface. @default "Everything" */
|
|
20
3
|
everythingLabel?: string;
|