@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.
Files changed (65) hide show
  1. package/dist/chrome/AccountSwitcher.js +90 -89
  2. package/dist/chrome/Breadcrumbs.js +1 -1
  3. package/dist/chrome/CommandPalette.js +91 -90
  4. package/dist/chrome/Footer.js +31 -8
  5. package/dist/chrome/GlobalSearch.js +78 -77
  6. package/dist/chrome/HeaderBar.js +1 -1
  7. package/dist/chrome/HeaderThemeSwitcher.js +48 -47
  8. package/dist/chrome/LanguagePickerSheet.js +23 -22
  9. package/dist/chrome/NavCustomizeDialog.d.ts +0 -14
  10. package/dist/chrome/NavCustomizeDialog.js +114 -122
  11. package/dist/chrome/PanelTabs.js +45 -41
  12. package/dist/chrome/PersonaSurfaceControls.d.ts +0 -17
  13. package/dist/chrome/PersonaSurfaceControls.js +115 -118
  14. package/dist/chrome/PluginSettingsPage.js +29 -28
  15. package/dist/chrome/PluginWidgetGrid.js +19 -18
  16. package/dist/chrome/ProductPickerSheet.js +44 -47
  17. package/dist/chrome/ProductSwitcher.js +2 -6
  18. package/dist/chrome/ProfileSwitcher.js +6 -10
  19. package/dist/chrome/ShortcutHelpDialog.js +60 -65
  20. package/dist/chrome/SideNavigation.js +2 -2
  21. package/dist/chrome/Sidebar.js +44 -43
  22. package/dist/chrome/ThemePreferences.js +289 -267
  23. package/dist/chrome/contextSwitcher/EmptyState.js +31 -27
  24. package/dist/chrome/contextSwitcher/OrganizationList.js +40 -30
  25. package/dist/chrome/contextSwitcher/ProjectList.js +48 -44
  26. package/dist/chrome/contextSwitcher/SearchInput.js +44 -40
  27. package/dist/chrome/contextSwitcher/TriggerButton.js +2 -2
  28. package/dist/chrome/contextSwitcher/WorkspaceList.js +36 -32
  29. package/dist/chrome/globalSearch/AdvancedFiltersPanel.js +128 -126
  30. package/dist/chrome/globalSearch/ResultsList.js +25 -27
  31. package/dist/chrome/globalSearch/SearchInput.js +16 -14
  32. package/dist/chrome/notificationCenter/NotificationCardItem.js +58 -47
  33. package/dist/chrome/notificationCenter/NotificationFilters.js +76 -62
  34. package/dist/chrome/notificationCenter/NotificationFooter.js +21 -21
  35. package/dist/chrome/notificationCenter/NotificationHeader.js +67 -63
  36. package/dist/chrome/notificationCenter/NotificationList.js +75 -71
  37. package/dist/chrome/notificationCenter/NotificationPanel.js +37 -33
  38. package/dist/chrome/notificationCenter/PushOptInToggle.js +33 -32
  39. package/dist/chrome/notificationCenter/constants.d.ts +6 -1
  40. package/dist/chrome/notificationCenter/constants.js +12 -11
  41. package/dist/chrome/useThemeOptionLabels.d.ts +33 -0
  42. package/dist/chrome/useThemeOptionLabels.js +39 -0
  43. package/dist/shared/assistant/conversation.d.ts +8 -0
  44. package/dist/shared/assistant/history/historyMapping.js +1 -1
  45. package/dist/shared/assistant/ui/AssistantMarkdownRenderer.d.ts +6 -6
  46. package/dist/shared/assistant/ui/AssistantMarkdownRenderer.js +86 -85
  47. package/dist/shared/assistant/ui/AssistantMessageItem.js +101 -96
  48. package/dist/shared/assistant/ui/AssistantWriteProposalCard.d.ts +2 -0
  49. package/dist/shared/assistant/ui/AssistantWriteProposalCard.js +93 -89
  50. package/dist/shared/assistant/ui/WorkflowAssistantPanel.js +152 -140
  51. package/dist/shared/assistant/ui/useWriteProposals.js +122 -85
  52. package/dist/shared/assistant/writeProposalDiscovery.d.ts +3 -1
  53. package/dist/shared/assistant/writeProposalDiscovery.js +2 -2
  54. package/dist/shared/events/sinks/RybbitSink.js +2 -2
  55. package/dist/shared/providers/shell/interpolateShellLabel.d.ts +3 -0
  56. package/dist/shared/providers/shell/interpolateShellLabel.js +11 -0
  57. package/dist/shared/providers/shell/useAssistantShellLabels.d.ts +45 -0
  58. package/dist/shared/providers/shell/useAssistantShellLabels.js +54 -0
  59. package/dist/shared/tours/TourPlayer.js +33 -32
  60. package/dist/shared/tours/TourTooltip.js +108 -109
  61. package/dist/shared/tours/tourTrigger/MobileTourSheet.js +98 -85
  62. package/dist/shared/tours/tourTrigger/TourListItemDesktop.js +20 -18
  63. package/dist/shared/tours/tourTrigger/TourListItemMobile.js +23 -25
  64. package/dist/shared-assistant.js +188 -188
  65. 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 { useSafePermissions as s } from "../shared/providers/shell/PermissionProvider.js";
5
- import { useSafePersonaSurface as c } from "../shared/providers/shell/PersonaSurfaceProvider.js";
6
- import { applyPermissionFilter as l, isItemEffectivelyShown as u } from "./sideNavigation/navVisibility.js";
7
- import { useEffect as d, useMemo as f, useState as p } from "react";
8
- import { Fragment as m, jsx as h, jsxs as g } from "react/jsx-runtime";
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 _({ item: e, depth: t, parentShown: n, surfaceVisibleItems: r, overrides: i, onToggle: a }) {
11
- let s = u(e, n, r, i), c = s && (!r || r.includes(e.id) || i[e.id] === "shown");
12
- return /* @__PURE__ */ g(m, { children: [/* @__PURE__ */ g("div", {
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__ */ h("span", {
16
- className: `truncate text-body-sm ${s ? "text-text-primary" : "text-text-muted"}`,
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__ */ h(o, {
19
- checked: s,
20
+ }), /* @__PURE__ */ g(o, {
21
+ checked: l,
20
22
  onCheckedChange: (t) => a(e, n, t === !0),
21
- "aria-label": `Show ${e.label} in the menu`,
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__ */ h(_, {
26
+ }), e.children?.map((e) => /* @__PURE__ */ g(v, {
25
27
  item: e,
26
28
  depth: t + 1,
27
- parentShown: c,
29
+ parentShown: u,
28
30
  surfaceVisibleItems: r,
29
31
  overrides: i,
30
32
  onToggle: a
31
33
  }, e.id))] });
32
34
  }
33
- function v(e, t, n) {
35
+ function y(e, t, n) {
34
36
  let r = [], i = (e, a) => {
35
37
  for (let o of e) {
36
- let e = u(o, a, t, n);
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 y({ groupLabels: o, groupOrder: m, everythingLabel: y = "Everything" }) {
45
- let b = c(), x = s(), S = a((e) => e.items), [C, w] = p(""), [T, E] = p(null), [D, O] = p(!1), [k, A] = p(null), j = x?.hasPermission, M = x?.isLoading ?? !1, N = f(() => {
46
- let e = S.filter((e) => e.visible !== !1);
47
- return !j || M ? e : l(e, j);
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
- S,
50
- j,
51
- M
51
+ w,
52
+ N,
53
+ P
52
54
  ]);
53
- d(() => {
54
- w(""), E(null), A(null);
55
- }, [b?.customizeOpen ?? !1]);
56
- let ee = f(() => {
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 N) {
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 [...m ?? [], ...Array.from(e.keys()).filter((e) => !(m ?? []).includes(e))].filter((t) => (e.get(t)?.length ?? 0) > 0).map((t) => ({
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
- N,
69
- m,
70
+ F,
71
+ h,
70
72
  o
71
73
  ]);
72
- if (!b) return null;
73
- let { activeSurfaceId: P, activeSurface: F, overrides: I, setItemOverride: L, resetOverrides: R, customizeOpen: z, setCustomizeOpen: te, simulation: B, customViews: ne, canManageViews: V, createCustomView: H, renameCustomView: U, deleteCustomView: W } = b, G = F ? F.visibleItems : null, K = (e, t, n) => {
74
- let r = u(e, t, G, {});
75
- L(e.id, n === r ? null : n ? "shown" : "hidden");
76
- }, q = Object.keys(I).length, J = P === "everything" ? y : F?.label ?? P, Y = ne.find((e) => e.id === P) ?? null, X = async () => {
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
- E(null);
88
+ O(null);
87
89
  return;
88
90
  }
89
- O(!0), A(null);
90
- let t = await U(Y.id, e);
91
- O(!1), t ? E(null) : A("Could not rename the view — try a different name.");
92
- }, re = async () => {
93
- if (!Y || D) return;
94
- O(!0), A(null);
95
- let e = await W(Y.id);
96
- O(!1), e || A("Could not delete the view.");
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__ */ h(e, {
99
- open: z,
100
- onOpenChange: te,
101
- children: /* @__PURE__ */ g(t, {
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__ */ g(r, { children: [/* @__PURE__ */ h(i, { children: "Customize menu" }), /* @__PURE__ */ g(n, { children: [
104
- "Choose which pages appear in the",
105
- " ",
106
- /* @__PURE__ */ h("span", {
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 && !B && /* @__PURE__ */ g("section", {
111
+ Y && !W && /* @__PURE__ */ _("section", {
115
112
  className: "space-y-2",
116
113
  "data-testid": "persona-dialog-manage-view",
117
- children: [/* @__PURE__ */ h("h3", {
114
+ children: [/* @__PURE__ */ g("h3", {
118
115
  className: "text-[11px] font-medium uppercase tracking-wider text-text-muted",
119
- children: "This view"
120
- }), T === null ? /* @__PURE__ */ g("div", {
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__ */ h("span", {
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__ */ h("button", {
124
+ /* @__PURE__ */ g("button", {
128
125
  type: "button",
129
- onClick: () => E(Y.name),
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__ */ h("button", {
131
+ /* @__PURE__ */ g("button", {
135
132
  type: "button",
136
- onClick: re,
137
- disabled: D,
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__ */ g("div", {
140
+ }) : /* @__PURE__ */ _("div", {
144
141
  className: "flex items-center gap-2",
145
- children: [/* @__PURE__ */ h("input", {
146
- value: T,
147
- onChange: (e) => E(e.target.value),
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__ */ h("button", {
151
+ }), /* @__PURE__ */ g("button", {
155
152
  type: "button",
156
153
  onClick: () => void Z(),
157
- disabled: D,
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__ */ g("section", {
161
+ /* @__PURE__ */ _("section", {
165
162
  className: "space-y-1",
166
163
  "data-testid": "persona-dialog-items",
167
- children: [/* @__PURE__ */ g("div", {
164
+ children: [/* @__PURE__ */ _("div", {
168
165
  className: "flex items-center justify-between",
169
- children: [/* @__PURE__ */ h("h3", {
166
+ children: [/* @__PURE__ */ g("h3", {
170
167
  className: "text-[11px] font-medium uppercase tracking-wider text-text-muted",
171
- children: "Menu items"
172
- }), q > 0 && /* @__PURE__ */ g("button", {
168
+ children: x("nav.menuItems", "Menu items")
169
+ }), J > 0 && /* @__PURE__ */ g("button", {
173
170
  type: "button",
174
- onClick: R,
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
- }), B ? /* @__PURE__ */ h("p", {
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
- }) : ee.map((e) => /* @__PURE__ */ g("div", {
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__ */ h("p", {
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__ */ h("div", {
184
+ }), /* @__PURE__ */ g("div", {
193
185
  className: "divide-y divide-border-subtle",
194
- children: e.items.map((e) => /* @__PURE__ */ h(_, {
186
+ children: e.items.map((e) => /* @__PURE__ */ g(v, {
195
187
  item: e,
196
188
  depth: 0,
197
189
  parentShown: !1,
198
- surfaceVisibleItems: G,
199
- overrides: I,
200
- onToggle: K
190
+ surfaceVisibleItems: q,
191
+ overrides: z,
192
+ onToggle: ie
201
193
  }, e.id))
202
194
  })]
203
195
  }, e.key))]
204
196
  }),
205
- V && !B && /* @__PURE__ */ g("section", {
197
+ K && !W && /* @__PURE__ */ _("section", {
206
198
  className: "space-y-2",
207
199
  "data-testid": "persona-dialog-save-view",
208
200
  children: [
209
- /* @__PURE__ */ h("h3", {
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__ */ h("p", {
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__ */ g("div", {
209
+ /* @__PURE__ */ _("div", {
218
210
  className: "flex items-center gap-2",
219
- children: [/* @__PURE__ */ h("input", {
220
- value: C,
221
- onChange: (e) => w(e.target.value),
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__ */ h("button", {
221
+ }), /* @__PURE__ */ g("button", {
230
222
  type: "button",
231
223
  onClick: () => void X(),
232
- disabled: D || !C.trim(),
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
- k && /* @__PURE__ */ h("p", {
230
+ j && /* @__PURE__ */ g("p", {
239
231
  className: "text-body-sm text-status-error-text",
240
- children: k
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 { y as NavCustomizeDialog };
242
+ export { b as NavCustomizeDialog };
@@ -1,44 +1,48 @@
1
- import { Maximize2 as e, Minimize2 as t, Minus as n, X as r } from "lucide-react";
2
- import { jsx as i, jsxs as a } from "react/jsx-runtime";
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 o = ({ tabs: o, activeTabId: s, onTabClick: c, onClose: l, onMinimize: u, onMaximize: d, isMaximized: f }) => /* @__PURE__ */ a("div", {
5
- className: "flex items-center justify-between border-b border-border-subtle bg-bg-sunken h-9 px-2 flex-shrink-0",
6
- children: [/* @__PURE__ */ i("div", {
7
- className: "flex items-center gap-0.5 overflow-x-auto",
8
- children: o.map((e) => {
9
- let t = e.icon;
10
- return /* @__PURE__ */ a("button", {
11
- onClick: () => c(e.id),
12
- className: `flex items-center gap-1.5 px-3 py-1.5 text-xs font-medium rounded-t transition-colors ${e.id === s ? "bg-bg-surface text-text-primary border-b-2 border-action-primary-bg" : "text-text-secondary hover:text-text-primary hover:bg-bg-surface"}`,
13
- children: [t && /* @__PURE__ */ i(t, { className: "size-3.5" }), /* @__PURE__ */ i("span", { children: e.title })]
14
- }, e.id);
15
- })
16
- }), /* @__PURE__ */ a("div", {
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 { o as PanelTabs };
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;