@burdenoff/fe-libs 2026.1027.3 → 2026.1027.5

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.
@@ -1,7 +1,14 @@
1
+ import { ReactNode } from 'react';
1
2
  import { MobileActionItem } from './HeaderBar';
2
3
  export interface MobileTabBarProps {
3
- /** Product name — used for the tab bar's accessible label. */
4
+ /** Product name — used for the tab bar's accessible label and, with `logo`, the More sheet's brand header. */
4
5
  appName: string;
6
+ /**
7
+ * Brand mark shown with `appName` at the top of the More sheet (same
8
+ * `logo` prop shape as `ProductSideNav`: a short string or an SVG/img
9
+ * node). Omit to keep the sheet's plain "More" title.
10
+ */
11
+ logo?: ReactNode;
5
12
  /** Nav group ordering for the More sheet (same as ProductSideNav). */
6
13
  groupOrder?: string[];
7
14
  /** Nav group display labels for the More sheet (same as ProductSideNav). */
@@ -20,6 +27,6 @@ export interface MobileTabBarProps {
20
27
  hideWhenKeyboardOpen?: boolean;
21
28
  className?: string;
22
29
  }
23
- export declare function MobileTabBar({ appName, groupOrder, groupLabels, maxTabs, moreLabel, mobileActions, hideWhenKeyboardOpen, className, }: MobileTabBarProps): import('react/jsx-runtime').JSX.Element;
30
+ export declare function MobileTabBar({ appName, logo, groupOrder, groupLabels, maxTabs, moreLabel, mobileActions, hideWhenKeyboardOpen, className, }: MobileTabBarProps): import('react/jsx-runtime').JSX.Element;
24
31
  export { useMobileTabBarVisible } from './mobileTabBar/useMobileTabBarVisible';
25
32
  export { selectMobileTabs } from './mobileTabBar/selectTabs';
@@ -39,14 +39,14 @@ function D(e, t, n) {
39
39
  items: r.get(e) ?? []
40
40
  }));
41
41
  }
42
- function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4, moreLabel: M, mobileActions: N, hideWhenKeyboardOpen: P = !0, className: F }) {
43
- let I = o(), L = M ?? I("nav.more", "More"), R = w(), z = C(), B = c(), { items: V } = l(), [H, U] = v(!1), W = _(null), { tabs: G, more: K, hasMore: q } = g(() => f(V, j), [V, j]), J = g(() => D(K, O, A), [
44
- K,
45
- O,
46
- A
47
- ]), Y = !!N && N.length > 0, X = q || Y;
42
+ function O({ appName: a, logo: O, groupOrder: A = [], groupLabels: j = {}, maxTabs: M = 4, moreLabel: N, mobileActions: P, hideWhenKeyboardOpen: F = !0, className: I }) {
43
+ let L = o(), R = N ?? L("nav.more", "More"), z = w(), B = C(), V = c(), { items: H } = l(), [U, W] = v(!1), G = _(null), { tabs: K, more: q, hasMore: J } = g(() => f(H, M), [H, M]), Y = g(() => D(q, A, j), [
44
+ q,
45
+ A,
46
+ j
47
+ ]), X = !!P && P.length > 0, Z = J || X;
48
48
  h(() => {
49
- let e = W.current;
49
+ let e = G.current;
50
50
  if (!e || typeof window > "u") return;
51
51
  let t = document.documentElement, n = () => t.style.setProperty(T, `${e.offsetHeight}px`);
52
52
  n();
@@ -55,25 +55,25 @@ function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4
55
55
  r?.disconnect(), t.style.removeProperty(T);
56
56
  };
57
57
  }, []), m(() => {
58
- U(!1);
59
- }, [z.pathname]);
60
- let Z = p((e) => {
61
- E(), R(s(e, B));
62
- }, [R, B]), Q = g(() => !!q && K.some((e) => u(e, z.pathname)), [
58
+ W(!1);
59
+ }, [B.pathname]);
60
+ let Q = p((e) => {
61
+ E(), z(s(e, V));
62
+ }, [z, V]), $ = g(() => !!J && q.some((e) => u(e, B.pathname)), [
63
+ J,
63
64
  q,
64
- K,
65
- z.pathname
65
+ B.pathname
66
66
  ]);
67
67
  return /* @__PURE__ */ S(b, { children: [/* @__PURE__ */ S("nav", {
68
- ref: W,
68
+ ref: G,
69
69
  role: "tablist",
70
- "aria-label": I("nav.primaryNavigation", `${a} navigation`),
70
+ "aria-label": L("nav.primaryNavigation", `${a} navigation`),
71
71
  "data-mobile-tabbar": "",
72
72
  "data-shell-chrome": "",
73
- "data-keyboard-keep": P ? void 0 : "",
74
- className: e("fixed inset-x-0 bottom-0 z-[60] flex items-stretch", "bg-bg-surface text-text-primary", F),
75
- children: [G.map((t) => {
76
- let n = u(t, z.pathname);
73
+ "data-keyboard-keep": F ? void 0 : "",
74
+ className: e("fixed inset-x-0 bottom-0 z-[60] flex items-stretch", "bg-bg-surface text-text-primary", I),
75
+ children: [K.map((t) => {
76
+ let n = u(t, B.pathname);
77
77
  return /* @__PURE__ */ S("button", {
78
78
  type: "button",
79
79
  role: "tab",
@@ -83,7 +83,7 @@ function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4
83
83
  "data-mobile-tab": t.id,
84
84
  className: e("mobile-tab relative flex min-w-0 flex-1 flex-col items-center justify-center gap-0.5", "text-text-muted transition-colors duration-150", n && "text-text-link"),
85
85
  onClick: () => {
86
- n && !t.children?.length || Z(d(t));
86
+ n && !t.children?.length || Q(d(t));
87
87
  },
88
88
  children: [/* @__PURE__ */ S("span", {
89
89
  className: "mobile-tab__icon relative inline-flex items-center justify-center",
@@ -97,18 +97,18 @@ function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4
97
97
  children: t.label
98
98
  })]
99
99
  }, t.id);
100
- }), X ? /* @__PURE__ */ S("button", {
100
+ }), Z ? /* @__PURE__ */ S("button", {
101
101
  type: "button",
102
102
  role: "tab",
103
- "aria-selected": Q,
103
+ "aria-selected": $,
104
104
  "aria-haspopup": "dialog",
105
- "aria-expanded": H,
106
- "aria-label": L,
107
- "data-active": Q ? "" : void 0,
105
+ "aria-expanded": U,
106
+ "aria-label": R,
107
+ "data-active": $ ? "" : void 0,
108
108
  "data-mobile-tab": "__more",
109
- className: e("mobile-tab relative flex min-w-0 flex-1 flex-col items-center justify-center gap-0.5", "text-text-muted transition-colors duration-150", Q && "text-text-link"),
109
+ className: e("mobile-tab relative flex min-w-0 flex-1 flex-col items-center justify-center gap-0.5", "text-text-muted transition-colors duration-150", $ && "text-text-link"),
110
110
  onClick: () => {
111
- E(), U(!0);
111
+ E(), W(!0);
112
112
  },
113
113
  children: [/* @__PURE__ */ x("span", {
114
114
  className: "mobile-tab__icon inline-flex items-center justify-center",
@@ -116,19 +116,28 @@ function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4
116
116
  children: /* @__PURE__ */ x(y, {})
117
117
  }), /* @__PURE__ */ x("span", {
118
118
  className: "mobile-tab__label max-w-full truncate",
119
- children: L
119
+ children: R
120
120
  })]
121
121
  }) : null]
122
- }), X ? /* @__PURE__ */ x(t, {
123
- open: H,
124
- onOpenChange: U,
122
+ }), Z ? /* @__PURE__ */ x(t, {
123
+ open: U,
124
+ onOpenChange: W,
125
125
  children: /* @__PURE__ */ S(n, {
126
- "aria-label": L,
126
+ "aria-label": R,
127
127
  "data-swipe-ignore": "",
128
- children: [/* @__PURE__ */ x(r, { children: /* @__PURE__ */ x(i, { children: L }) }), /* @__PURE__ */ S("div", {
128
+ children: [/* @__PURE__ */ S(r, { children: [O ? /* @__PURE__ */ S("div", {
129
+ className: "mb-1 flex items-center gap-2",
130
+ children: [/* @__PURE__ */ x("div", {
131
+ className: "flex size-8 flex-shrink-0 items-center justify-center",
132
+ children: O
133
+ }), /* @__PURE__ */ x("span", {
134
+ className: "text-heading-h4 font-semibold text-text-primary",
135
+ children: a
136
+ })]
137
+ }) : null, /* @__PURE__ */ x(i, { children: R })] }), /* @__PURE__ */ S("div", {
129
138
  className: "flex flex-col gap-4 pb-2",
130
139
  "data-mobile-tabbar-more": "",
131
- children: [J.map((e) => /* @__PURE__ */ S("section", {
140
+ children: [Y.map((e) => /* @__PURE__ */ S("section", {
132
141
  "aria-label": e.label ?? void 0,
133
142
  children: [e.label ? /* @__PURE__ */ x("p", {
134
143
  className: "mb-1 px-1 text-[11px] font-medium uppercase tracking-wider text-text-muted",
@@ -136,29 +145,29 @@ function O({ appName: a, groupOrder: O = [], groupLabels: A = {}, maxTabs: j = 4
136
145
  }) : null, /* @__PURE__ */ x("ul", {
137
146
  className: "flex flex-col",
138
147
  children: e.items.map((e) => {
139
- let t = u(e, z.pathname);
148
+ let t = u(e, B.pathname);
140
149
  return /* @__PURE__ */ x("li", { children: /* @__PURE__ */ x(k, {
141
150
  icon: e.icon,
142
151
  label: e.label,
143
152
  badge: e.badge,
144
153
  active: t,
145
- onSelect: () => Z(d(e))
154
+ onSelect: () => Q(d(e))
146
155
  }) }, e.id);
147
156
  })
148
157
  })]
149
- }, e.key || "__ungrouped")), Y ? /* @__PURE__ */ S("section", {
150
- "aria-label": I("appShell.quickActions", "Quick Actions"),
158
+ }, e.key || "__ungrouped")), X ? /* @__PURE__ */ S("section", {
159
+ "aria-label": L("appShell.quickActions", "Quick Actions"),
151
160
  children: [/* @__PURE__ */ x("p", {
152
161
  className: "mb-1 px-1 text-[11px] font-medium uppercase tracking-wider text-text-muted",
153
- children: I("appShell.quickActions", "Quick Actions")
162
+ children: L("appShell.quickActions", "Quick Actions")
154
163
  }), /* @__PURE__ */ x("ul", {
155
164
  className: "flex flex-col",
156
- children: N?.map((e) => /* @__PURE__ */ x("li", { children: /* @__PURE__ */ x(k, {
165
+ children: P?.map((e) => /* @__PURE__ */ x("li", { children: /* @__PURE__ */ x(k, {
157
166
  icon: e.icon,
158
167
  label: e.label,
159
168
  active: !!e.isToggle && !!e.isActive,
160
169
  onSelect: () => {
161
- E(), e.onClick(), U(!1);
170
+ E(), e.onClick(), W(!1);
162
171
  }
163
172
  }) }, e.id))
164
173
  })]
@@ -1,59 +1,60 @@
1
- import { useShellLabel as e } from "../shared/providers/shell/useShellLabel.js";
2
- import { Sheet as t, SheetContent as n, SheetHeader as r, SheetTitle as i } from "../ui/sheet.js";
3
- import { useAssistantControl as a } from "../shared/assistant/appControls/useAssistantControl.js";
4
- import { useIsMobile as o } from "./contextSwitcher/useIsMobile.js";
5
- import { useEffect as s, useMemo as c, useRef as l, useState as u } from "react";
6
- import { Fragment as d, jsx as f, jsxs as p } from "react/jsx-runtime";
1
+ import { isInstalledApp as e } from "../shared/native/platform.js";
2
+ import { useShellLabel as t } from "../shared/providers/shell/useShellLabel.js";
3
+ import { Sheet as n, SheetContent as r, SheetHeader as i, SheetTitle as a } from "../ui/sheet.js";
4
+ import { useAssistantControl as o } from "../shared/assistant/appControls/useAssistantControl.js";
5
+ import { useIsMobile as s } from "./contextSwitcher/useIsMobile.js";
6
+ import { useEffect as c, useMemo as l, useRef as u, useState as d } from "react";
7
+ import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
7
8
  //#region src/chrome/ProfileSwitcher.tsx
8
- var m = ({ user: m, accounts: h = [], activeAccountId: g, onViewProfile: _, onLogout: v, onSwitchAccount: y, onAddAccount: b, onRemoveAccount: x, compact: S = !1 }) => {
9
- let [C, w] = u(!1), T = l(null), E = e(), D = o(), O = l(v);
10
- O.current = v;
11
- let k = v !== void 0;
12
- if (a("account.logout", c(() => k ? { run: () => {
13
- let e = O.current;
9
+ var h = ({ user: h, accounts: g = [], activeAccountId: _, onViewProfile: v, onLogout: y, onSwitchAccount: b, onAddAccount: x, onRemoveAccount: S, compact: C = !1 }) => {
10
+ let [w, T] = d(!1), E = u(null), D = t(), O = s() && e(), k = u(y);
11
+ k.current = y;
12
+ let A = y !== void 0;
13
+ if (o("account.logout", l(() => A ? { run: () => {
14
+ let e = k.current;
14
15
  return e ? (e(), { status: "done" }) : { status: "failed" };
15
- } } : null, [k])), s(() => {
16
- if (D) return;
16
+ } } : null, [A])), c(() => {
17
+ if (O) return;
17
18
  let e = (e) => {
18
- T.current && !T.current.contains(e.target) && w(!1);
19
+ E.current && !E.current.contains(e.target) && T(!1);
19
20
  };
20
- if (C) return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
21
- }, [C, D]), !m) return null;
22
- let A = `${m.firstName.charAt(0)}${m.lastName.charAt(0)}`.toUpperCase(), j = h.length > 1, M = h.find((e) => e.id === g), N = h.filter((e) => e.id !== g), P = /* @__PURE__ */ p("button", {
23
- onClick: () => w(!C),
24
- className: `flex items-center gap-2 p-2 rounded-button hover:bg-bg-sunken transition-colors ${C ? "bg-bg-sunken" : ""}`,
25
- "aria-label": E("appShell.userMenu", "User menu"),
26
- "aria-expanded": C,
21
+ if (w) return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
22
+ }, [w, O]), !h) return null;
23
+ let j = `${h.firstName.charAt(0)}${h.lastName.charAt(0)}`.toUpperCase(), M = g.length > 1, N = g.find((e) => e.id === _), P = g.filter((e) => e.id !== _), F = /* @__PURE__ */ m("button", {
24
+ onClick: () => T(!w),
25
+ className: `flex items-center gap-2 p-2 rounded-button hover:bg-bg-sunken transition-colors ${w ? "bg-bg-sunken" : ""}`,
26
+ "aria-label": D("appShell.userMenu", "User menu"),
27
+ "aria-expanded": w,
27
28
  children: [
28
- /* @__PURE__ */ f("div", {
29
+ /* @__PURE__ */ p("div", {
29
30
  className: "size-8 rounded-full bg-action-primary-bg flex items-center justify-center flex-shrink-0",
30
- children: m.avatar ? /* @__PURE__ */ f("img", {
31
- src: m.avatar,
32
- alt: `${m.firstName} ${m.lastName}`,
31
+ children: h.avatar ? /* @__PURE__ */ p("img", {
32
+ src: h.avatar,
33
+ alt: `${h.firstName} ${h.lastName}`,
33
34
  className: "w-full h-full rounded-full object-cover"
34
- }) : /* @__PURE__ */ f("span", {
35
+ }) : /* @__PURE__ */ p("span", {
35
36
  className: "text-action-primary-text font-semibold text-sm",
36
- children: A
37
+ children: j
37
38
  })
38
39
  }),
39
- !S && /* @__PURE__ */ p("span", {
40
+ !C && /* @__PURE__ */ m("span", {
40
41
  className: "text-body-sm font-medium text-text-primary",
41
42
  children: [
42
- m.firstName,
43
+ h.firstName,
43
44
  " ",
44
- m.lastName
45
+ h.lastName
45
46
  ]
46
47
  }),
47
- !S && j && /* @__PURE__ */ f("span", {
48
+ !C && M && /* @__PURE__ */ p("span", {
48
49
  className: "text-xs bg-action-primary-bg text-action-primary-text rounded-full size-5 flex items-center justify-center font-semibold",
49
- children: h.length
50
+ children: g.length
50
51
  }),
51
- !S && /* @__PURE__ */ f("svg", {
52
- className: `w-4 h-4 text-text-secondary transition-transform ${C ? "rotate-180" : ""}`,
52
+ !C && /* @__PURE__ */ p("svg", {
53
+ className: `w-4 h-4 text-text-secondary transition-transform ${w ? "rotate-180" : ""}`,
53
54
  fill: "none",
54
55
  stroke: "currentColor",
55
56
  viewBox: "0 0 24 24",
56
- children: /* @__PURE__ */ f("path", {
57
+ children: /* @__PURE__ */ p("path", {
57
58
  strokeLinecap: "round",
58
59
  strokeLinejoin: "round",
59
60
  strokeWidth: 2,
@@ -61,113 +62,113 @@ var m = ({ user: m, accounts: h = [], activeAccountId: g, onViewProfile: _, onLo
61
62
  })
62
63
  })
63
64
  ]
64
- }), F = () => /* @__PURE__ */ p(d, { children: [
65
- !j && /* @__PURE__ */ p("div", {
65
+ }), I = () => /* @__PURE__ */ m(f, { children: [
66
+ !M && /* @__PURE__ */ m("div", {
66
67
  className: "px-6 py-4 text-center border-b border-border-subtle",
67
68
  children: [
68
- /* @__PURE__ */ f("div", {
69
+ /* @__PURE__ */ p("div", {
69
70
  className: "size-20 mx-auto mb-3 rounded-full bg-action-primary-bg flex items-center justify-center",
70
- children: m.avatar ? /* @__PURE__ */ f("img", {
71
- src: m.avatar,
72
- alt: m.firstName,
71
+ children: h.avatar ? /* @__PURE__ */ p("img", {
72
+ src: h.avatar,
73
+ alt: h.firstName,
73
74
  className: "w-full h-full rounded-full object-cover"
74
- }) : /* @__PURE__ */ f("span", {
75
+ }) : /* @__PURE__ */ p("span", {
75
76
  className: "text-action-primary-text font-bold text-2xl",
76
- children: A
77
+ children: j
77
78
  })
78
79
  }),
79
- /* @__PURE__ */ f("h3", {
80
+ /* @__PURE__ */ p("h3", {
80
81
  className: "text-base font-semibold text-text-primary mb-1",
81
- children: E("userMenu.greeting", "Hi, {{name}}!", { name: m.firstName })
82
+ children: D("userMenu.greeting", "Hi, {{name}}!", { name: h.firstName })
82
83
  }),
83
- m.email && /* @__PURE__ */ f("p", {
84
+ h.email && /* @__PURE__ */ p("p", {
84
85
  className: "text-body-sm text-text-secondary truncate",
85
- children: m.email
86
+ children: h.email
86
87
  })
87
88
  ]
88
89
  }),
89
- j && M && /* @__PURE__ */ p("div", {
90
+ M && N && /* @__PURE__ */ m("div", {
90
91
  className: "px-4 py-3 border-b border-border-subtle",
91
- children: [/* @__PURE__ */ p("p", {
92
+ children: [/* @__PURE__ */ m("p", {
92
93
  className: "text-body-sm font-semibold text-text-primary",
93
94
  children: [
94
- M.firstName,
95
+ N.firstName,
95
96
  " ",
96
- M.lastName
97
+ N.lastName
97
98
  ]
98
- }), /* @__PURE__ */ f("p", {
99
+ }), /* @__PURE__ */ p("p", {
99
100
  className: "text-xs text-text-muted mt-0.5 truncate",
100
- children: M.email
101
+ children: N.email
101
102
  })]
102
103
  }),
103
- _ && /* @__PURE__ */ f("div", {
104
+ v && /* @__PURE__ */ p("div", {
104
105
  className: "px-4 py-2",
105
- children: /* @__PURE__ */ f("button", {
106
+ children: /* @__PURE__ */ p("button", {
106
107
  type: "button",
107
108
  onClick: () => {
108
- _(), w(!1);
109
+ v(), T(!1);
109
110
  },
110
111
  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",
111
- children: E("userMenu.viewProfile", "View Profile")
112
+ children: D("userMenu.viewProfile", "View Profile")
112
113
  })
113
114
  }),
114
- j && N.length > 0 && /* @__PURE__ */ p(d, { children: [/* @__PURE__ */ f("div", {
115
+ M && P.length > 0 && /* @__PURE__ */ m(f, { children: [/* @__PURE__ */ p("div", {
115
116
  className: "px-4 pt-2 pb-1",
116
- children: /* @__PURE__ */ f("p", {
117
+ children: /* @__PURE__ */ p("p", {
117
118
  className: "text-[11px] font-medium text-text-muted uppercase tracking-wider",
118
- children: E("auth.security.switchAccount", "Switch Account")
119
+ children: D("auth.security.switchAccount", "Switch Account")
119
120
  })
120
- }), /* @__PURE__ */ f("div", {
121
- className: `${N.length >= 3 ? "max-h-48 overflow-y-auto" : ""}`,
122
- children: N.map((e) => {
121
+ }), /* @__PURE__ */ p("div", {
122
+ className: `${P.length >= 3 ? "max-h-48 overflow-y-auto" : ""}`,
123
+ children: P.map((e) => {
123
124
  let t = `${e.firstName?.charAt(0) || ""}${e.lastName?.charAt(0) || ""}`.toUpperCase();
124
- return /* @__PURE__ */ f("div", {
125
+ return /* @__PURE__ */ p("div", {
125
126
  className: "px-4 py-2 hover:bg-bg-sunken transition-colors group",
126
- children: /* @__PURE__ */ p("div", {
127
+ children: /* @__PURE__ */ m("div", {
127
128
  className: "flex items-center gap-3",
128
129
  children: [
129
- /* @__PURE__ */ f("div", {
130
+ /* @__PURE__ */ p("div", {
130
131
  className: "size-10 rounded-full bg-action-primary-bg flex items-center justify-center flex-shrink-0",
131
- children: e.avatar ? /* @__PURE__ */ f("img", {
132
+ children: e.avatar ? /* @__PURE__ */ p("img", {
132
133
  src: e.avatar,
133
134
  alt: e.name,
134
135
  className: "w-full h-full rounded-full object-cover"
135
- }) : /* @__PURE__ */ f("span", {
136
+ }) : /* @__PURE__ */ p("span", {
136
137
  className: "text-action-primary-text font-semibold text-sm",
137
138
  children: t
138
139
  })
139
140
  }),
140
- /* @__PURE__ */ p("button", {
141
+ /* @__PURE__ */ m("button", {
141
142
  type: "button",
142
143
  onClick: () => {
143
- y && (y(e), w(!1));
144
+ b && (b(e), T(!1));
144
145
  },
145
146
  className: "flex-1 text-left min-w-0",
146
- children: [/* @__PURE__ */ p("p", {
147
+ children: [/* @__PURE__ */ m("p", {
147
148
  className: "text-body-sm font-medium text-text-primary truncate",
148
149
  children: [
149
150
  e.firstName,
150
151
  " ",
151
152
  e.lastName
152
153
  ]
153
- }), /* @__PURE__ */ f("p", {
154
+ }), /* @__PURE__ */ p("p", {
154
155
  className: "text-xs text-text-muted truncate",
155
156
  children: e.email
156
157
  })]
157
158
  }),
158
- x && /* @__PURE__ */ f("button", {
159
+ S && /* @__PURE__ */ p("button", {
159
160
  type: "button",
160
161
  onClick: (t) => {
161
- t.stopPropagation(), x(e.id);
162
+ t.stopPropagation(), S(e.id);
162
163
  },
163
164
  className: "size-6 flex items-center justify-center rounded-full hover:bg-status-error-bg-subtle text-text-muted hover:text-status-error-text transition-colors opacity-0 group-hover:opacity-100",
164
- "aria-label": E("appShell.removeAccount", "Remove account"),
165
- children: /* @__PURE__ */ f("svg", {
165
+ "aria-label": D("appShell.removeAccount", "Remove account"),
166
+ children: /* @__PURE__ */ p("svg", {
166
167
  className: "size-4",
167
168
  fill: "none",
168
169
  stroke: "currentColor",
169
170
  viewBox: "0 0 24 24",
170
- children: /* @__PURE__ */ f("path", {
171
+ children: /* @__PURE__ */ p("path", {
171
172
  strokeLinecap: "round",
172
173
  strokeLinejoin: "round",
173
174
  strokeWidth: 2,
@@ -180,78 +181,78 @@ var m = ({ user: m, accounts: h = [], activeAccountId: g, onViewProfile: _, onLo
180
181
  }, e.id);
181
182
  })
182
183
  })] }),
183
- /* @__PURE__ */ f("div", {
184
+ /* @__PURE__ */ p("div", {
184
185
  className: "px-4 py-3 border-t border-border-subtle",
185
- children: /* @__PURE__ */ p("div", {
186
+ children: /* @__PURE__ */ m("div", {
186
187
  className: "grid grid-cols-2 gap-2",
187
- children: [b && /* @__PURE__ */ p("button", {
188
+ children: [x && /* @__PURE__ */ m("button", {
188
189
  type: "button",
189
190
  onClick: () => {
190
- b(), w(!1);
191
+ x(), T(!1);
191
192
  },
192
193
  className: "flex items-center justify-center gap-2 px-3 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",
193
- children: [/* @__PURE__ */ f("svg", {
194
+ children: [/* @__PURE__ */ p("svg", {
194
195
  className: "size-4",
195
196
  fill: "none",
196
197
  stroke: "currentColor",
197
198
  viewBox: "0 0 24 24",
198
- children: /* @__PURE__ */ f("path", {
199
+ children: /* @__PURE__ */ p("path", {
199
200
  strokeLinecap: "round",
200
201
  strokeLinejoin: "round",
201
202
  strokeWidth: 2,
202
203
  d: "M12 4v16m8-8H4"
203
204
  })
204
- }), /* @__PURE__ */ f("span", { children: E("auth.profileMenu.addAccount", "Add account") })]
205
- }), v && /* @__PURE__ */ p("button", {
205
+ }), /* @__PURE__ */ p("span", { children: D("auth.profileMenu.addAccount", "Add account") })]
206
+ }), y && /* @__PURE__ */ m("button", {
206
207
  type: "button",
207
208
  onClick: () => {
208
- v(), w(!1);
209
+ y(), T(!1);
209
210
  },
210
211
  className: "flex items-center justify-center gap-2 px-3 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",
211
- children: [/* @__PURE__ */ f("svg", {
212
+ children: [/* @__PURE__ */ p("svg", {
212
213
  className: "size-4",
213
214
  fill: "none",
214
215
  stroke: "currentColor",
215
216
  viewBox: "0 0 24 24",
216
- children: /* @__PURE__ */ f("path", {
217
+ children: /* @__PURE__ */ p("path", {
217
218
  strokeLinecap: "round",
218
219
  strokeLinejoin: "round",
219
220
  strokeWidth: 2,
220
221
  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"
221
222
  })
222
- }), /* @__PURE__ */ f("span", { children: E("auth.security.signOutDialogConfirm", "Sign out") })]
223
+ }), /* @__PURE__ */ p("span", { children: D("auth.security.signOutDialogConfirm", "Sign out") })]
223
224
  })]
224
225
  })
225
226
  })
226
227
  ] });
227
- return D ? /* @__PURE__ */ p("div", {
228
+ return O ? /* @__PURE__ */ m("div", {
228
229
  className: "relative",
229
- children: [P, /* @__PURE__ */ f(t, {
230
- open: C,
231
- onOpenChange: w,
232
- children: /* @__PURE__ */ p(n, {
230
+ children: [F, /* @__PURE__ */ p(n, {
231
+ open: w,
232
+ onOpenChange: T,
233
+ children: /* @__PURE__ */ m(r, {
233
234
  side: "bottom",
234
235
  className: "h-[70vh] flex flex-col p-0",
235
- children: [/* @__PURE__ */ f(r, {
236
+ children: [/* @__PURE__ */ p(i, {
236
237
  className: "px-4 pt-4 pb-2 border-b border-border-subtle",
237
- children: /* @__PURE__ */ f(i, {
238
+ children: /* @__PURE__ */ p(a, {
238
239
  className: "text-text-primary",
239
- children: E("appShell.userMenuSheetTitle", "Account")
240
+ children: D("appShell.userMenuSheetTitle", "Account")
240
241
  })
241
- }), /* @__PURE__ */ f("div", {
242
+ }), /* @__PURE__ */ p("div", {
242
243
  className: "flex-1 overflow-y-auto",
243
- children: F()
244
+ children: I()
244
245
  })]
245
246
  })
246
247
  })]
247
- }) : /* @__PURE__ */ p("div", {
248
+ }) : /* @__PURE__ */ m("div", {
248
249
  className: "relative",
249
- ref: T,
250
- children: [P, C && /* @__PURE__ */ f("div", {
250
+ ref: E,
251
+ children: [F, w && /* @__PURE__ */ p("div", {
251
252
  className: "absolute right-0 mt-2 w-[calc(100vw-1.5rem)] sm:w-72 max-w-72 bg-bg-elevated border border-border-subtle rounded-card shadow-[var(--shadow-elevation-4)] overflow-hidden z-50 animate-in fade-in-0 zoom-in-95 slide-in-from-top-2 duration-200",
252
- children: F()
253
+ children: I()
253
254
  })]
254
255
  });
255
256
  };
256
257
  //#endregion
257
- export { m as ProfileSwitcher };
258
+ export { h as ProfileSwitcher };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@burdenoff/fe-libs",
3
- "version": "2026.1027.3",
3
+ "version": "2026.1027.5",
4
4
  "description": "Burdenoff frontend primitives and domain libraries",
5
5
  "type": "module",
6
6
  "bin": {