@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,111 +1,108 @@
|
|
|
1
1
|
import { isSameProductSlug as e } from "../shared/config/productSlug.js";
|
|
2
2
|
import { Sheet as t, SheetContent as n, SheetHeader as r, SheetTitle as i } from "../ui/sheet.js";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
3
|
+
import { useShellLabel as a } from "../shared/providers/shell/useShellLabel.js";
|
|
4
|
+
import { filterProducts as o, resolveProductLogo as s } from "./ProductSwitcher.js";
|
|
5
|
+
import { useMemo as c, useState as l } from "react";
|
|
6
|
+
import { jsx as u, jsxs as d } from "react/jsx-runtime";
|
|
6
7
|
//#region src/chrome/ProductPickerSheet.tsx
|
|
7
|
-
var
|
|
8
|
-
let [t, n] =
|
|
9
|
-
return r && !t ? /* @__PURE__ */
|
|
8
|
+
var f = 6, p = ({ product: e }) => {
|
|
9
|
+
let [t, n] = l(!1), r = s(e);
|
|
10
|
+
return r && !t ? /* @__PURE__ */ u("div", {
|
|
10
11
|
className: "size-10 rounded-lg bg-white p-1 ring-1 ring-border-default dark:ring-border-strong flex items-center justify-center flex-shrink-0 overflow-hidden",
|
|
11
|
-
children: /* @__PURE__ */
|
|
12
|
+
children: /* @__PURE__ */ u("img", {
|
|
12
13
|
src: r,
|
|
13
14
|
alt: e.name,
|
|
14
15
|
className: "size-full object-contain",
|
|
15
16
|
onError: () => n(!0)
|
|
16
17
|
})
|
|
17
|
-
}) : e.icon ? /* @__PURE__ */
|
|
18
|
+
}) : e.icon ? /* @__PURE__ */ u("div", {
|
|
18
19
|
className: "size-10 rounded-lg bg-[var(--color-accent-soft)] flex items-center justify-center flex-shrink-0",
|
|
19
20
|
children: e.icon
|
|
20
|
-
}) : /* @__PURE__ */
|
|
21
|
+
}) : /* @__PURE__ */ u("div", {
|
|
21
22
|
className: "size-10 rounded-lg bg-action-primary-bg flex items-center justify-center flex-shrink-0",
|
|
22
|
-
children: /* @__PURE__ */
|
|
23
|
+
children: /* @__PURE__ */ u("span", {
|
|
23
24
|
className: "text-action-primary-text font-bold text-sm",
|
|
24
25
|
children: e.name.substring(0, 2).toUpperCase()
|
|
25
26
|
})
|
|
26
27
|
});
|
|
27
|
-
},
|
|
28
|
-
let [
|
|
29
|
-
|
|
28
|
+
}, m = ({ open: s, onOpenChange: m, products: h, currentProductId: g, onProductChange: _ }) => {
|
|
29
|
+
let v = a(), [y, b] = l(""), x = h.length > f, S = c(() => o(h, y), [h, y]), C = (e) => {
|
|
30
|
+
_ && _(e), m(!1);
|
|
30
31
|
};
|
|
31
|
-
return /* @__PURE__ */
|
|
32
|
-
open:
|
|
32
|
+
return /* @__PURE__ */ u(t, {
|
|
33
|
+
open: s,
|
|
33
34
|
onOpenChange: (e) => {
|
|
34
|
-
e ||
|
|
35
|
+
e || b(""), m(e);
|
|
35
36
|
},
|
|
36
|
-
children: /* @__PURE__ */
|
|
37
|
+
children: /* @__PURE__ */ d(n, {
|
|
37
38
|
side: "bottom",
|
|
38
39
|
className: "h-[60vh] flex flex-col p-0",
|
|
39
40
|
children: [
|
|
40
|
-
/* @__PURE__ */
|
|
41
|
+
/* @__PURE__ */ u(r, {
|
|
41
42
|
className: "px-4 pt-4 pb-2 border-b border-border-subtle",
|
|
42
|
-
children: /* @__PURE__ */
|
|
43
|
+
children: /* @__PURE__ */ u(i, {
|
|
43
44
|
className: "text-text-primary",
|
|
44
|
-
children: "Switch Product"
|
|
45
|
+
children: v("productSwitcher.title", "Switch Product")
|
|
45
46
|
})
|
|
46
47
|
}),
|
|
47
|
-
|
|
48
|
+
x && /* @__PURE__ */ d("div", {
|
|
48
49
|
className: "relative px-4 py-2 border-b border-border-subtle",
|
|
49
|
-
children: [/* @__PURE__ */
|
|
50
|
+
children: [/* @__PURE__ */ u("svg", {
|
|
50
51
|
className: "pointer-events-none absolute left-7 top-1/2 -translate-y-1/2 size-4 text-text-muted",
|
|
51
52
|
fill: "none",
|
|
52
53
|
stroke: "currentColor",
|
|
53
54
|
viewBox: "0 0 24 24",
|
|
54
|
-
children: /* @__PURE__ */
|
|
55
|
+
children: /* @__PURE__ */ u("path", {
|
|
55
56
|
strokeLinecap: "round",
|
|
56
57
|
strokeLinejoin: "round",
|
|
57
58
|
strokeWidth: 2,
|
|
58
59
|
d: "M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"
|
|
59
60
|
})
|
|
60
|
-
}), /* @__PURE__ */
|
|
61
|
+
}), /* @__PURE__ */ u("input", {
|
|
61
62
|
type: "text",
|
|
62
|
-
value:
|
|
63
|
-
onChange: (e) =>
|
|
64
|
-
placeholder: "Search products…",
|
|
65
|
-
"aria-label": "Search products",
|
|
63
|
+
value: y,
|
|
64
|
+
onChange: (e) => b(e.target.value),
|
|
65
|
+
placeholder: v("productSwitcher.searchPlaceholder", "Search products…"),
|
|
66
|
+
"aria-label": v("productSwitcher.searchAria", "Search products"),
|
|
66
67
|
className: "w-full rounded-md border border-border-subtle bg-bg-surface py-2.5 pl-9 pr-3 text-sm text-text-primary placeholder:text-text-muted focus:border-transparent focus:outline-none focus:ring-2 focus:ring-[var(--color-action-primary-border)]"
|
|
67
68
|
})]
|
|
68
69
|
}),
|
|
69
|
-
/* @__PURE__ */
|
|
70
|
+
/* @__PURE__ */ d("div", {
|
|
70
71
|
className: "flex-1 overflow-y-auto py-2",
|
|
71
|
-
children: [
|
|
72
|
+
children: [S.length === 0 && /* @__PURE__ */ u("p", {
|
|
72
73
|
className: "px-4 py-6 text-center text-body-sm text-text-muted",
|
|
74
|
+
children: v("productSwitcher.noMatches", "No products match “{{query}}”", { query: y })
|
|
75
|
+
}), S.map((t) => /* @__PURE__ */ d("button", {
|
|
76
|
+
onClick: () => C(t),
|
|
77
|
+
className: `w-full flex items-center gap-4 px-4 py-3.5 text-body-sm transition-colors ${e(t.id, g) ? "bg-[var(--color-accent-soft)]" : "hover:bg-bg-sunken"}`,
|
|
73
78
|
children: [
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
"”"
|
|
77
|
-
]
|
|
78
|
-
}), b.map((t) => /* @__PURE__ */ u("button", {
|
|
79
|
-
onClick: () => x(t),
|
|
80
|
-
className: `w-full flex items-center gap-4 px-4 py-3.5 text-body-sm transition-colors ${e(t.id, h) ? "bg-[var(--color-accent-soft)]" : "hover:bg-bg-sunken"}`,
|
|
81
|
-
children: [
|
|
82
|
-
/* @__PURE__ */ l(f, { product: t }),
|
|
83
|
-
/* @__PURE__ */ u("div", {
|
|
79
|
+
/* @__PURE__ */ u(p, { product: t }),
|
|
80
|
+
/* @__PURE__ */ d("div", {
|
|
84
81
|
className: "flex-1 text-left min-w-0",
|
|
85
|
-
children: [/* @__PURE__ */
|
|
82
|
+
children: [/* @__PURE__ */ u("p", {
|
|
86
83
|
className: "font-medium text-text-primary",
|
|
87
84
|
children: t.name
|
|
88
|
-
}), t.description && /* @__PURE__ */
|
|
85
|
+
}), t.description && /* @__PURE__ */ u("p", {
|
|
89
86
|
className: "text-xs text-text-secondary truncate",
|
|
90
87
|
children: t.description
|
|
91
88
|
})]
|
|
92
89
|
}),
|
|
93
|
-
e(t.id,
|
|
90
|
+
e(t.id, g) && /* @__PURE__ */ u("svg", {
|
|
94
91
|
className: "size-5 text-action-primary-bg flex-shrink-0",
|
|
95
92
|
fill: "currentColor",
|
|
96
93
|
viewBox: "0 0 20 20",
|
|
97
|
-
children: /* @__PURE__ */
|
|
94
|
+
children: /* @__PURE__ */ u("path", {
|
|
98
95
|
fillRule: "evenodd",
|
|
99
96
|
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",
|
|
100
97
|
clipRule: "evenodd"
|
|
101
98
|
})
|
|
102
99
|
}),
|
|
103
|
-
t.url && !e(t.id,
|
|
100
|
+
t.url && !e(t.id, g) && /* @__PURE__ */ u("svg", {
|
|
104
101
|
className: "size-4 text-text-muted flex-shrink-0",
|
|
105
102
|
fill: "none",
|
|
106
103
|
stroke: "currentColor",
|
|
107
104
|
viewBox: "0 0 24 24",
|
|
108
|
-
children: /* @__PURE__ */
|
|
105
|
+
children: /* @__PURE__ */ u("path", {
|
|
109
106
|
strokeLinecap: "round",
|
|
110
107
|
strokeLinejoin: "round",
|
|
111
108
|
strokeWidth: 2,
|
|
@@ -120,4 +117,4 @@ var d = 6, f = ({ product: e }) => {
|
|
|
120
117
|
});
|
|
121
118
|
};
|
|
122
119
|
//#endregion
|
|
123
|
-
export {
|
|
120
|
+
export { m as ProductPickerSheet };
|
|
@@ -144,13 +144,9 @@ var m = ({ products: t, currentProductId: u, onProductChange: m, compact: h = !1
|
|
|
144
144
|
}),
|
|
145
145
|
/* @__PURE__ */ c("div", {
|
|
146
146
|
className: "py-1 max-h-96 overflow-y-auto",
|
|
147
|
-
children: [T.length === 0 && /* @__PURE__ */
|
|
147
|
+
children: [T.length === 0 && /* @__PURE__ */ s("p", {
|
|
148
148
|
className: "px-4 py-6 text-center text-body-sm text-text-muted",
|
|
149
|
-
children:
|
|
150
|
-
"No products match “",
|
|
151
|
-
y,
|
|
152
|
-
"”"
|
|
153
|
-
]
|
|
149
|
+
children: g("productSwitcher.noMatches", "No products match “{{query}}”", { query: y })
|
|
154
150
|
}), T.map((t) => /* @__PURE__ */ c("button", {
|
|
155
151
|
onClick: () => E(t),
|
|
156
152
|
disabled: t.comingSoon,
|
|
@@ -79,13 +79,9 @@ var l = ({ user: l, accounts: u = [], activeAccountId: d, onViewProfile: f, onLo
|
|
|
79
79
|
children: w
|
|
80
80
|
})
|
|
81
81
|
}),
|
|
82
|
-
/* @__PURE__ */
|
|
82
|
+
/* @__PURE__ */ s("h3", {
|
|
83
83
|
className: "text-base font-semibold text-text-primary mb-1",
|
|
84
|
-
children:
|
|
85
|
-
"Hi, ",
|
|
86
|
-
l.firstName,
|
|
87
|
-
"!"
|
|
88
|
-
]
|
|
84
|
+
children: x("userMenu.greeting", "Hi, {{name}}!", { name: l.firstName })
|
|
89
85
|
}),
|
|
90
86
|
l.email && /* @__PURE__ */ s("p", {
|
|
91
87
|
className: "text-body-sm text-text-secondary truncate",
|
|
@@ -115,14 +111,14 @@ var l = ({ user: l, accounts: u = [], activeAccountId: d, onViewProfile: f, onLo
|
|
|
115
111
|
f(), y(!1);
|
|
116
112
|
},
|
|
117
113
|
className: "w-full px-4 py-2.5 text-body-sm font-medium text-text-primary bg-bg-surface hover:bg-bg-sunken rounded-button border border-border-subtle transition-colors",
|
|
118
|
-
children: "View Profile"
|
|
114
|
+
children: x("userMenu.viewProfile", "View Profile")
|
|
119
115
|
})
|
|
120
116
|
}),
|
|
121
117
|
T && D.length > 0 && /* @__PURE__ */ c(o, { children: [/* @__PURE__ */ s("div", {
|
|
122
118
|
className: "px-4 pt-2 pb-1",
|
|
123
119
|
children: /* @__PURE__ */ s("p", {
|
|
124
120
|
className: "text-[11px] font-medium text-text-muted uppercase tracking-wider",
|
|
125
|
-
children: "Switch Account"
|
|
121
|
+
children: x("auth.security.switchAccount", "Switch Account")
|
|
126
122
|
})
|
|
127
123
|
}), /* @__PURE__ */ s("div", {
|
|
128
124
|
className: `${D.length >= 3 ? "max-h-48 overflow-y-auto" : ""}`,
|
|
@@ -208,7 +204,7 @@ var l = ({ user: l, accounts: u = [], activeAccountId: d, onViewProfile: f, onLo
|
|
|
208
204
|
strokeWidth: 2,
|
|
209
205
|
d: "M12 4v16m8-8H4"
|
|
210
206
|
})
|
|
211
|
-
}), /* @__PURE__ */ s("span", { children: "Add account" })]
|
|
207
|
+
}), /* @__PURE__ */ s("span", { children: x("auth.profileMenu.addAccount", "Add account") })]
|
|
212
208
|
}), p && /* @__PURE__ */ c("button", {
|
|
213
209
|
type: "button",
|
|
214
210
|
onClick: () => {
|
|
@@ -226,7 +222,7 @@ var l = ({ user: l, accounts: u = [], activeAccountId: d, onViewProfile: f, onLo
|
|
|
226
222
|
strokeWidth: 2,
|
|
227
223
|
d: "M17 16l4-4m0 0l-4-4m4 4H7m6 4v1a3 3 0 01-3 3H6a3 3 0 01-3-3V7a3 3 0 013-3h4a3 3 0 013 3v1"
|
|
228
224
|
})
|
|
229
|
-
}), /* @__PURE__ */ s("span", { children: "Sign out" })]
|
|
225
|
+
}), /* @__PURE__ */ s("span", { children: x("auth.security.signOutDialogConfirm", "Sign out") })]
|
|
230
226
|
})]
|
|
231
227
|
})
|
|
232
228
|
})
|
|
@@ -1,122 +1,117 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
1
|
+
import { useShellLabel as e } from "../shared/providers/shell/useShellLabel.js";
|
|
2
|
+
import { interpolateShellLabel as t } from "../shared/providers/shell/interpolateShellLabel.js";
|
|
3
|
+
import { detectPlatform as n, getDisplayKeysForPlatform as r } from "../shared/keyboard/utils.js";
|
|
4
|
+
import { EscapeLayer as i } from "../shared/components/EscapeLayer.js";
|
|
5
|
+
import { SHELL_OVERLAY_LAYER_CLASS as a } from "./shellOverlayLayer.js";
|
|
6
|
+
import { useEffect as o, useRef as s } from "react";
|
|
7
|
+
import { X as c } from "lucide-react";
|
|
8
|
+
import { jsx as l, jsxs as u } from "react/jsx-runtime";
|
|
7
9
|
//#region src/chrome/ShortcutHelpDialog.tsx
|
|
8
|
-
var
|
|
9
|
-
let
|
|
10
|
-
if (
|
|
11
|
-
|
|
12
|
-
}),
|
|
13
|
-
if (!
|
|
10
|
+
var d = ({ isOpen: d, onClose: f, shortcuts: p }) => {
|
|
11
|
+
let m = e(), h = s(null), g = s(f);
|
|
12
|
+
if (o(() => {
|
|
13
|
+
g.current = f;
|
|
14
|
+
}), o(() => {
|
|
15
|
+
if (!d) return;
|
|
14
16
|
let e = setTimeout(() => {
|
|
15
17
|
let e = (e) => {
|
|
16
|
-
e.key === "?" && (e.preventDefault(), e.stopPropagation(),
|
|
18
|
+
e.key === "?" && (e.preventDefault(), e.stopPropagation(), g.current());
|
|
17
19
|
};
|
|
18
|
-
|
|
20
|
+
h.current = e, document.addEventListener("keydown", e);
|
|
19
21
|
}, 100);
|
|
20
22
|
return () => {
|
|
21
|
-
clearTimeout(e),
|
|
23
|
+
clearTimeout(e), h.current &&= (document.removeEventListener("keydown", h.current), null);
|
|
22
24
|
};
|
|
23
|
-
}, [
|
|
24
|
-
if (
|
|
25
|
+
}, [d]), o(() => {
|
|
26
|
+
if (d) return document.body.style.overflow = "hidden", () => {
|
|
25
27
|
document.body.style.overflow = "";
|
|
26
28
|
};
|
|
27
|
-
}, [
|
|
28
|
-
let
|
|
29
|
-
let n = t.category || "Other";
|
|
29
|
+
}, [d]), !d) return null;
|
|
30
|
+
let _ = p.reduce((e, t) => {
|
|
31
|
+
let n = t.category || m("appShell.otherShortcuts", "Other");
|
|
30
32
|
return e[n] || (e[n] = []), e[n].push(t), e;
|
|
31
|
-
}, {}),
|
|
33
|
+
}, {}), v = Object.keys(_).sort((e, t) => {
|
|
32
34
|
let n = {
|
|
33
35
|
Navigation: 0,
|
|
34
36
|
Actions: 1,
|
|
35
37
|
UI: 2
|
|
36
38
|
}, r = n[e] ?? 99, i = n[t] ?? 99;
|
|
37
39
|
return r === i ? e.localeCompare(t) : r - i;
|
|
38
|
-
}),
|
|
39
|
-
return /* @__PURE__ */
|
|
40
|
+
}), y = n(), b = y === "mac" ? "macOS" : y === "windows" ? "Windows" : "Linux";
|
|
41
|
+
return /* @__PURE__ */ l(i, {
|
|
40
42
|
modal: !0,
|
|
41
|
-
onDismiss:
|
|
42
|
-
children: /* @__PURE__ */
|
|
43
|
-
className: `fixed inset-0 ${
|
|
43
|
+
onDismiss: f,
|
|
44
|
+
children: /* @__PURE__ */ u("div", {
|
|
45
|
+
className: `fixed inset-0 ${a} flex items-center justify-center animate-in fade-in duration-200`,
|
|
44
46
|
role: "dialog",
|
|
45
47
|
"aria-modal": "true",
|
|
46
48
|
"aria-labelledby": "shortcut-dialog-title",
|
|
47
|
-
children: [/* @__PURE__ */
|
|
49
|
+
children: [/* @__PURE__ */ l("div", {
|
|
48
50
|
className: "absolute inset-0 bg-bg-overlay backdrop-blur-sm",
|
|
49
|
-
onClick:
|
|
51
|
+
onClick: f,
|
|
50
52
|
"aria-hidden": "true"
|
|
51
|
-
}), /* @__PURE__ */
|
|
53
|
+
}), /* @__PURE__ */ u("div", {
|
|
52
54
|
className: "relative bg-bg-elevated border border-border-subtle rounded-card shadow-[var(--shadow-elevation-4)] max-w-2xl w-full mx-4 max-h-[85dvh] flex flex-col animate-in fade-in-0 zoom-in-95 slide-in-from-bottom-4 duration-300",
|
|
53
55
|
children: [
|
|
54
|
-
/* @__PURE__ */
|
|
56
|
+
/* @__PURE__ */ u("div", {
|
|
55
57
|
className: "flex items-center justify-between p-6 border-b border-border-subtle",
|
|
56
|
-
children: [/* @__PURE__ */
|
|
58
|
+
children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("h2", {
|
|
57
59
|
id: "shortcut-dialog-title",
|
|
58
60
|
className: "text-lg font-semibold text-text-primary",
|
|
59
|
-
children: "Keyboard Shortcuts"
|
|
60
|
-
}), /* @__PURE__ */
|
|
61
|
+
children: m("shortcuts.title", "Keyboard Shortcuts")
|
|
62
|
+
}), /* @__PURE__ */ l("p", {
|
|
61
63
|
className: "text-text-secondary text-sm mt-1",
|
|
62
|
-
children: "Quickly navigate and perform actions using your keyboard"
|
|
63
|
-
})] }), /* @__PURE__ */
|
|
64
|
+
children: m("appShell.shortcutsDescription", "Quickly navigate and perform actions using your keyboard")
|
|
65
|
+
})] }), /* @__PURE__ */ l("button", {
|
|
64
66
|
type: "button",
|
|
65
|
-
onClick:
|
|
67
|
+
onClick: f,
|
|
66
68
|
className: "p-2 hover:bg-bg-sunken rounded-button text-text-secondary transition-colors",
|
|
67
|
-
"aria-label": "Close",
|
|
68
|
-
children: /* @__PURE__ */
|
|
69
|
+
"aria-label": m("common.close", "Close"),
|
|
70
|
+
children: /* @__PURE__ */ l(c, { className: "size-5" })
|
|
69
71
|
})]
|
|
70
72
|
}),
|
|
71
|
-
/* @__PURE__ */
|
|
73
|
+
/* @__PURE__ */ l("div", {
|
|
72
74
|
className: "flex-1 overflow-y-auto p-6",
|
|
73
|
-
children: /* @__PURE__ */
|
|
75
|
+
children: /* @__PURE__ */ l("div", {
|
|
74
76
|
className: "grid grid-cols-1 md:grid-cols-2 gap-8",
|
|
75
|
-
children:
|
|
77
|
+
children: v.map((e) => /* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("h3", {
|
|
76
78
|
className: "text-sm font-semibold text-text-primary mb-3",
|
|
77
79
|
children: e
|
|
78
|
-
}), /* @__PURE__ */
|
|
80
|
+
}), /* @__PURE__ */ l("div", {
|
|
79
81
|
className: "space-y-1",
|
|
80
|
-
children:
|
|
82
|
+
children: _[e].map((e, t) => /* @__PURE__ */ u("div", {
|
|
81
83
|
className: "flex items-center justify-between py-2 px-3 rounded-button hover:bg-bg-sunken transition-all duration-200 hover:translate-x-0.5",
|
|
82
|
-
style: { animationDelay: `${
|
|
83
|
-
children: [/* @__PURE__ */
|
|
84
|
+
style: { animationDelay: `${t * 30}ms` },
|
|
85
|
+
children: [/* @__PURE__ */ l("span", {
|
|
84
86
|
className: "text-text-primary text-sm",
|
|
85
87
|
children: e.description
|
|
86
|
-
}), /* @__PURE__ */
|
|
88
|
+
}), /* @__PURE__ */ l("kbd", {
|
|
87
89
|
className: "ml-4 px-2.5 py-1 bg-bg-sunken border border-border-subtle rounded text-text-secondary text-xs font-mono whitespace-nowrap transition-all duration-200 hover:scale-105",
|
|
88
|
-
children:
|
|
90
|
+
children: r(e.keys)
|
|
89
91
|
})]
|
|
90
92
|
}, e.id))
|
|
91
93
|
})] }, e))
|
|
92
94
|
})
|
|
93
95
|
}),
|
|
94
|
-
/* @__PURE__ */
|
|
96
|
+
/* @__PURE__ */ l("div", {
|
|
95
97
|
className: "p-4 border-t border-border-subtle bg-bg-sunken/50 rounded-b-card",
|
|
96
|
-
children: /* @__PURE__ */
|
|
98
|
+
children: /* @__PURE__ */ u("div", {
|
|
97
99
|
className: "flex items-center justify-between text-xs",
|
|
98
|
-
children: [/* @__PURE__ */
|
|
100
|
+
children: [/* @__PURE__ */ l("p", {
|
|
99
101
|
className: "text-text-muted",
|
|
100
|
-
children:
|
|
101
|
-
}), /* @__PURE__ */
|
|
102
|
+
children: m("appShell.platformShortcuts", "{{platform}} shortcuts", { platform: b })
|
|
103
|
+
}), /* @__PURE__ */ l("p", {
|
|
102
104
|
className: "text-text-secondary",
|
|
103
|
-
children:
|
|
104
|
-
"
|
|
105
|
-
" ",
|
|
106
|
-
/* @__PURE__ */ s("kbd", {
|
|
105
|
+
children: t(m("appShell.closeShortcutsHint", "Press {{question}} or {{escape}} to close"), {
|
|
106
|
+
question: /* @__PURE__ */ l("kbd", {
|
|
107
107
|
className: "px-1.5 py-0.5 bg-bg-surface border border-border-subtle rounded font-mono",
|
|
108
108
|
children: "?"
|
|
109
109
|
}),
|
|
110
|
-
|
|
111
|
-
"or",
|
|
112
|
-
" ",
|
|
113
|
-
/* @__PURE__ */ s("kbd", {
|
|
110
|
+
escape: /* @__PURE__ */ l("kbd", {
|
|
114
111
|
className: "px-1.5 py-0.5 bg-bg-surface border border-border-subtle rounded font-mono",
|
|
115
112
|
children: "Esc"
|
|
116
|
-
})
|
|
117
|
-
|
|
118
|
-
"to close"
|
|
119
|
-
]
|
|
113
|
+
})
|
|
114
|
+
})
|
|
120
115
|
})]
|
|
121
116
|
})
|
|
122
117
|
})
|
|
@@ -126,4 +121,4 @@ var l = ({ isOpen: l, onClose: u, shortcuts: d }) => {
|
|
|
126
121
|
});
|
|
127
122
|
};
|
|
128
123
|
//#endregion
|
|
129
|
-
export {
|
|
124
|
+
export { d as ShortcutHelpDialog };
|
|
@@ -82,7 +82,7 @@ var h = ({ items: h, currentPath: g, collapsed: _ = !1, onItemClick: v, onToggle
|
|
|
82
82
|
type: "button",
|
|
83
83
|
className: "fixed inset-y-0 right-0 left-64 z-[112] md:hidden cursor-pointer",
|
|
84
84
|
onClick: y,
|
|
85
|
-
"aria-label": "Close sidebar"
|
|
85
|
+
"aria-label": P("appShell.closeSidebar", "Close sidebar")
|
|
86
86
|
})] }), /* @__PURE__ */ m("aside", {
|
|
87
87
|
ref: O,
|
|
88
88
|
className: `
|
|
@@ -110,7 +110,7 @@ var h = ({ items: h, currentPath: g, collapsed: _ = !1, onItemClick: v, onToggle
|
|
|
110
110
|
type: "button",
|
|
111
111
|
onClick: y,
|
|
112
112
|
className: "p-2 rounded-button hover:bg-bg-sunken text-text-secondary hover:text-text-primary transition-colors",
|
|
113
|
-
"aria-label": "Close sidebar",
|
|
113
|
+
"aria-label": P("appShell.closeSidebar", "Close sidebar"),
|
|
114
114
|
children: /* @__PURE__ */ p("svg", {
|
|
115
115
|
className: "size-5",
|
|
116
116
|
fill: "none",
|
package/dist/chrome/Sidebar.js
CHANGED
|
@@ -1,72 +1,73 @@
|
|
|
1
1
|
import { cn as e } from "../shared-utils.js";
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
2
|
+
import { useShellLabel as t } from "../shared/providers/shell/useShellLabel.js";
|
|
3
|
+
import { useState as n } from "react";
|
|
4
|
+
import { Fragment as r, jsx as i, jsxs as a } from "react/jsx-runtime";
|
|
4
5
|
//#region src/chrome/Sidebar.tsx
|
|
5
|
-
var
|
|
6
|
-
let [
|
|
7
|
-
|
|
6
|
+
var o = ({ sections: o, isCollapsed: s = !1, onToggleCollapse: c, header: l, footer: u, className: d, width: f = "280px", collapsedWidth: p = "64px" }) => {
|
|
7
|
+
let m = t(), [h, g] = n(new Set(o.filter((e) => e.defaultCollapsed).map((e) => e.title))), _ = (e) => {
|
|
8
|
+
g((t) => {
|
|
8
9
|
let n = new Set(t);
|
|
9
10
|
return n.has(e) ? n.delete(e) : n.add(e), n;
|
|
10
11
|
});
|
|
11
12
|
};
|
|
12
|
-
return /* @__PURE__ */
|
|
13
|
-
className: e("flex flex-col bg-bg-surface border-r border-border-subtle transition-all duration-300",
|
|
14
|
-
style: { width:
|
|
13
|
+
return /* @__PURE__ */ a("aside", {
|
|
14
|
+
className: e("flex flex-col bg-bg-surface border-r border-border-subtle transition-all duration-300", d),
|
|
15
|
+
style: { width: s ? p : f },
|
|
15
16
|
children: [
|
|
16
|
-
|
|
17
|
-
className: e("flex items-center border-b border-border-subtle",
|
|
18
|
-
children:
|
|
17
|
+
l && /* @__PURE__ */ i("div", {
|
|
18
|
+
className: e("flex items-center border-b border-border-subtle", s ? "justify-center p-4" : "px-card-padding py-4"),
|
|
19
|
+
children: l
|
|
19
20
|
}),
|
|
20
|
-
/* @__PURE__ */
|
|
21
|
+
/* @__PURE__ */ i("nav", {
|
|
21
22
|
className: "scrollbar-slim scrollbar-hover-only flex-1 overflow-y-auto py-section-gap",
|
|
22
|
-
children:
|
|
23
|
-
let
|
|
24
|
-
return /* @__PURE__ */
|
|
23
|
+
children: o.map((t) => {
|
|
24
|
+
let n = h.has(t.title);
|
|
25
|
+
return /* @__PURE__ */ a("div", {
|
|
25
26
|
className: "mb-section-gap",
|
|
26
|
-
children: [!
|
|
27
|
+
children: [!s && /* @__PURE__ */ i("div", {
|
|
27
28
|
className: "px-card-padding mb-2",
|
|
28
|
-
children: t.collapsible ? /* @__PURE__ */
|
|
29
|
+
children: t.collapsible ? /* @__PURE__ */ a("button", {
|
|
29
30
|
type: "button",
|
|
30
|
-
onClick: () =>
|
|
31
|
+
onClick: () => _(t.title),
|
|
31
32
|
className: "flex items-center justify-between w-full text-text-muted text-[11px] font-medium uppercase tracking-wider hover:text-text-secondary transition-colors",
|
|
32
|
-
"aria-expanded": !
|
|
33
|
-
children: [/* @__PURE__ */
|
|
34
|
-
className: e("w-4 h-4 transition-transform",
|
|
33
|
+
"aria-expanded": !n,
|
|
34
|
+
children: [/* @__PURE__ */ i("span", { children: t.title }), /* @__PURE__ */ i("svg", {
|
|
35
|
+
className: e("w-4 h-4 transition-transform", n && "rotate-180"),
|
|
35
36
|
fill: "none",
|
|
36
37
|
stroke: "currentColor",
|
|
37
38
|
viewBox: "0 0 24 24",
|
|
38
|
-
children: /* @__PURE__ */
|
|
39
|
+
children: /* @__PURE__ */ i("path", {
|
|
39
40
|
strokeLinecap: "round",
|
|
40
41
|
strokeLinejoin: "round",
|
|
41
42
|
strokeWidth: 2,
|
|
42
43
|
d: "M19 9l-7 7-7-7"
|
|
43
44
|
})
|
|
44
45
|
})]
|
|
45
|
-
}) : /* @__PURE__ */
|
|
46
|
+
}) : /* @__PURE__ */ i("div", {
|
|
46
47
|
className: "text-text-muted text-[11px] font-medium uppercase tracking-wider",
|
|
47
48
|
children: t.title
|
|
48
49
|
})
|
|
49
|
-
}), (!t.collapsible || !
|
|
50
|
+
}), (!t.collapsible || !n) && /* @__PURE__ */ i("ul", {
|
|
50
51
|
className: "space-y-1 px-2",
|
|
51
|
-
children: t.items.map((t) => /* @__PURE__ */
|
|
52
|
+
children: t.items.map((t) => /* @__PURE__ */ i("li", { children: /* @__PURE__ */ a("button", {
|
|
52
53
|
onClick: t.onClick,
|
|
53
54
|
disabled: t.disabled,
|
|
54
|
-
className: e("w-full flex items-center gap-3 rounded-button text-sm transition-all duration-200 ease-[var(--motion-easing-out)]", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-border",
|
|
55
|
+
className: e("w-full flex items-center gap-3 rounded-button text-sm transition-all duration-200 ease-[var(--motion-easing-out)]", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-border", s ? "justify-center p-3" : "px-3 py-2", {
|
|
55
56
|
"bg-[var(--color-accent-soft)] text-text-primary font-medium": t.isActive && !t.disabled,
|
|
56
57
|
"text-text-secondary hover:text-text-primary hover:bg-bg-sunken": !t.isActive && !t.disabled,
|
|
57
58
|
"text-text-disabled cursor-not-allowed opacity-50": t.disabled
|
|
58
59
|
}),
|
|
59
|
-
"aria-label":
|
|
60
|
+
"aria-label": s ? t.label : void 0,
|
|
60
61
|
"aria-current": t.isActive ? "page" : void 0,
|
|
61
|
-
title:
|
|
62
|
+
title: s ? t.label : void 0,
|
|
62
63
|
type: "button",
|
|
63
|
-
children: [t.icon && /* @__PURE__ */
|
|
64
|
+
children: [t.icon && /* @__PURE__ */ i("span", {
|
|
64
65
|
className: "flex items-center flex-shrink-0",
|
|
65
66
|
children: t.icon
|
|
66
|
-
}), !
|
|
67
|
+
}), !s && /* @__PURE__ */ a(r, { children: [/* @__PURE__ */ i("span", {
|
|
67
68
|
className: "flex-1 text-left truncate",
|
|
68
69
|
children: t.label
|
|
69
|
-
}), t.badge !== void 0 && /* @__PURE__ */
|
|
70
|
+
}), t.badge !== void 0 && /* @__PURE__ */ i("span", {
|
|
70
71
|
className: e("flex items-center justify-center min-w-[20px] h-5 px-1.5 rounded-full text-xs font-medium tabular-nums", t.isActive ? "bg-action-primary-bg text-action-primary-text" : "bg-status-info-bg-subtle text-status-info-text"),
|
|
71
72
|
children: typeof t.badge == "number" && t.badge > 99 ? "99+" : t.badge
|
|
72
73
|
})] })]
|
|
@@ -75,22 +76,22 @@ var a = ({ sections: a, isCollapsed: o = !1, onToggleCollapse: s, header: c, foo
|
|
|
75
76
|
}, t.title);
|
|
76
77
|
})
|
|
77
78
|
}),
|
|
78
|
-
|
|
79
|
-
className: e("border-t border-border-subtle",
|
|
80
|
-
children:
|
|
79
|
+
u && /* @__PURE__ */ i("div", {
|
|
80
|
+
className: e("border-t border-border-subtle", s ? "flex justify-center p-4" : "px-card-padding py-4"),
|
|
81
|
+
children: u
|
|
81
82
|
}),
|
|
82
|
-
|
|
83
|
-
onClick:
|
|
84
|
-
className: e("border-t border-border-subtle p-4 text-text-secondary hover:text-text-primary hover:bg-bg-sunken transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-border",
|
|
85
|
-
"aria-label":
|
|
86
|
-
title:
|
|
83
|
+
c && /* @__PURE__ */ i("button", {
|
|
84
|
+
onClick: c,
|
|
85
|
+
className: e("border-t border-border-subtle p-4 text-text-secondary hover:text-text-primary hover:bg-bg-sunken transition-colors", "focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-action-primary-border", s && "flex justify-center"),
|
|
86
|
+
"aria-label": s ? m("nav.expandSidebar", "Expand sidebar") : m("nav.collapseSidebar", "Collapse sidebar"),
|
|
87
|
+
title: s ? m("nav.expandSidebar", "Expand sidebar") : m("nav.collapseSidebar", "Collapse sidebar"),
|
|
87
88
|
type: "button",
|
|
88
|
-
children: /* @__PURE__ */
|
|
89
|
-
className: e("w-5 h-5 transition-transform",
|
|
89
|
+
children: /* @__PURE__ */ i("svg", {
|
|
90
|
+
className: e("w-5 h-5 transition-transform", s && "rotate-180"),
|
|
90
91
|
fill: "none",
|
|
91
92
|
stroke: "currentColor",
|
|
92
93
|
viewBox: "0 0 24 24",
|
|
93
|
-
children: /* @__PURE__ */
|
|
94
|
+
children: /* @__PURE__ */ i("path", {
|
|
94
95
|
strokeLinecap: "round",
|
|
95
96
|
strokeLinejoin: "round",
|
|
96
97
|
strokeWidth: 2,
|
|
@@ -102,4 +103,4 @@ var a = ({ sections: a, isCollapsed: o = !1, onToggleCollapse: s, header: c, foo
|
|
|
102
103
|
});
|
|
103
104
|
};
|
|
104
105
|
//#endregion
|
|
105
|
-
export {
|
|
106
|
+
export { o as Sidebar };
|