@burdenoff/microfe-brainyrich 2026.1101.2 → 2026.1101.3

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/brainyrich/BrainyRichRoot.d.ts.map +1 -1
  2. package/dist/brainyrich/BrainyRichRoot.js +22 -107
  3. package/dist/brainyrich/BrainyRichRoot.js.map +1 -1
  4. package/dist/brainyrich/BrainyRichRoutes.d.ts.map +1 -1
  5. package/dist/brainyrich/BrainyRichRoutes.js +65 -46
  6. package/dist/brainyrich/BrainyRichRoutes.js.map +1 -1
  7. package/dist/brainyrich/components/mobile/MobilePage.d.ts +44 -0
  8. package/dist/brainyrich/components/mobile/MobilePage.d.ts.map +1 -0
  9. package/dist/brainyrich/components/mobile/MobilePage.js +45 -0
  10. package/dist/brainyrich/components/mobile/MobilePage.js.map +1 -0
  11. package/dist/brainyrich/components/mobile/MobileTabBar.d.ts +20 -0
  12. package/dist/brainyrich/components/mobile/MobileTabBar.d.ts.map +1 -0
  13. package/dist/brainyrich/components/mobile/MobileTabBar.js +139 -0
  14. package/dist/brainyrich/components/mobile/MobileTabBar.js.map +1 -0
  15. package/dist/brainyrich/components/mobile/index.d.ts +8 -0
  16. package/dist/brainyrich/components/mobile/index.d.ts.map +1 -0
  17. package/dist/brainyrich/components/mobile/index.js +2 -0
  18. package/dist/brainyrich/hooks/useBrainyRichApi.d.ts +48 -12
  19. package/dist/brainyrich/hooks/useBrainyRichApi.d.ts.map +1 -1
  20. package/dist/brainyrich/hooks/useBrainyRichApi.js +120 -108
  21. package/dist/brainyrich/hooks/useBrainyRichApi.js.map +1 -1
  22. package/dist/brainyrich/hooks/useIsMobileViewport.d.ts +14 -0
  23. package/dist/brainyrich/hooks/useIsMobileViewport.d.ts.map +1 -0
  24. package/dist/brainyrich/hooks/useIsMobileViewport.js +23 -0
  25. package/dist/brainyrich/hooks/useIsMobileViewport.js.map +1 -0
  26. package/dist/brainyrich/navItems.d.ts +36 -0
  27. package/dist/brainyrich/navItems.d.ts.map +1 -0
  28. package/dist/brainyrich/navItems.js +54 -0
  29. package/dist/brainyrich/navItems.js.map +1 -0
  30. package/dist/brainyrich/pages/AccountsPage.d.ts.map +1 -1
  31. package/dist/brainyrich/pages/AccountsPage.js +411 -390
  32. package/dist/brainyrich/pages/AccountsPage.js.map +1 -1
  33. package/dist/brainyrich/pages/DashboardPage.d.ts.map +1 -1
  34. package/dist/brainyrich/pages/DashboardPage.js +220 -174
  35. package/dist/brainyrich/pages/DashboardPage.js.map +1 -1
  36. package/dist/brainyrich/pages/GoalsPage.d.ts.map +1 -1
  37. package/dist/brainyrich/pages/GoalsPage.js +560 -551
  38. package/dist/brainyrich/pages/GoalsPage.js.map +1 -1
  39. package/dist/brainyrich/pages/mobile/MobileAccountsView.d.ts +28 -0
  40. package/dist/brainyrich/pages/mobile/MobileAccountsView.d.ts.map +1 -0
  41. package/dist/brainyrich/pages/mobile/MobileAccountsView.js +139 -0
  42. package/dist/brainyrich/pages/mobile/MobileAccountsView.js.map +1 -0
  43. package/dist/brainyrich/pages/mobile/MobileDashboardView.d.ts +24 -0
  44. package/dist/brainyrich/pages/mobile/MobileDashboardView.d.ts.map +1 -0
  45. package/dist/brainyrich/pages/mobile/MobileDashboardView.js +245 -0
  46. package/dist/brainyrich/pages/mobile/MobileDashboardView.js.map +1 -0
  47. package/dist/brainyrich/pages/mobile/MobileGoalsView.d.ts +30 -0
  48. package/dist/brainyrich/pages/mobile/MobileGoalsView.d.ts.map +1 -0
  49. package/dist/brainyrich/pages/mobile/MobileGoalsView.js +180 -0
  50. package/dist/brainyrich/pages/mobile/MobileGoalsView.js.map +1 -0
  51. package/dist/brainyrich/pages/mobile/mobileShared.d.ts +24 -0
  52. package/dist/brainyrich/pages/mobile/mobileShared.d.ts.map +1 -0
  53. package/dist/brainyrich/pages/mobile/mobileShared.js +25 -0
  54. package/dist/brainyrich/pages/mobile/mobileShared.js.map +1 -0
  55. package/dist/brainyrich/utils/cn.js +10 -0
  56. package/dist/brainyrich/utils/cn.js.map +1 -0
  57. package/dist/brainyrich/utils/goalMetrics.d.ts +13 -0
  58. package/dist/brainyrich/utils/goalMetrics.d.ts.map +1 -0
  59. package/dist/brainyrich/utils/goalMetrics.js +20 -0
  60. package/dist/brainyrich/utils/goalMetrics.js.map +1 -0
  61. package/dist/test/brainyrichFixtures.d.ts +7 -0
  62. package/dist/test/brainyrichFixtures.d.ts.map +1 -0
  63. package/dist/test/viewport.d.ts +8 -0
  64. package/dist/test/viewport.d.ts.map +1 -0
  65. package/package.json +1 -1
@@ -7,13 +7,15 @@ import "../components/index.js";
7
7
  import { EmptyState as h, ErrorState as g, LoadingState as _, SectionShell as v, formatCompact as y, formatDate as b, formatMoney as x, statusBadgeVariant as S } from "./_shared.js";
8
8
  import { hapticSuccess as C, showToast as w } from "../utils/nativeControls.js";
9
9
  import { useTrackBrainyRichPageView as ee } from "../hooks/useBrainyRichAnalytics.js";
10
- import { useMemo as T, useState as E } from "react";
11
- import { Bell as te, Briefcase as D, Check as O, CircleCheck as k, Coins as A, Info as j, Landmark as ne, MoreHorizontal as M, PlusCircle as N, ShieldAlert as re, Target as P, TrendingUp as F, TriangleAlert as I, Wallet as L, X as ie } from "lucide-react";
12
- import { useI18n as R } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
13
- import { jsx as z, jsxs as B } from "react/jsx-runtime";
14
- import { Badge as V, Button as H, Card as U, CardContent as W, CardDescription as G, CardHeader as K, CardTitle as q, DropdownMenu as J, DropdownMenuContent as ae, DropdownMenuItem as Y, DropdownMenuTrigger as oe, Input as X, Label as Z, ResponsiveDialog as se, ResponsiveDialogContent as ce, ResponsiveDialogDescription as le, ResponsiveDialogFooter as ue, ResponsiveDialogHeader as de, ResponsiveDialogTitle as fe, Select as pe, SelectContent as me, SelectItem as he, SelectTrigger as ge, SelectValue as _e } from "@burdenoff/fe-libs/ui";
10
+ import { useIsMobileViewport as te } from "../hooks/useIsMobileViewport.js";
11
+ import { MobileDashboardView as T } from "./mobile/MobileDashboardView.js";
12
+ import { useMemo as ne, useState as E } from "react";
13
+ import { Bell as re, Briefcase as D, Check as O, CircleCheck as k, Coins as ie, Info as A, Landmark as ae, MoreHorizontal as j, Plus as M, PlusCircle as N, ShieldAlert as oe, Target as P, TrendingUp as se, TriangleAlert as F, Wallet as I, X as ce } from "lucide-react";
14
+ import { useI18n as le } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
15
+ import { jsx as L, jsxs as R } from "react/jsx-runtime";
16
+ import { Badge as z, Button as B, Card as V, CardContent as H, CardDescription as U, CardHeader as W, CardTitle as G, DropdownMenu as ue, DropdownMenuContent as de, DropdownMenuItem as K, DropdownMenuTrigger as fe, Input as q, Label as J, ResponsiveDialog as pe, ResponsiveDialogContent as me, ResponsiveDialogDescription as he, ResponsiveDialogFooter as ge, ResponsiveDialogHeader as _e, ResponsiveDialogTitle as ve, Select as Y, SelectContent as ye, SelectItem as be, SelectTrigger as xe, SelectValue as Se } from "@burdenoff/fe-libs/ui";
15
17
  //#region src/brainyrich/pages/DashboardPage.tsx
16
- var ve = [
18
+ var Ce = [
17
19
  "BANK",
18
20
  "BROKERAGE",
19
21
  "RETIREMENT",
@@ -22,7 +24,7 @@ var ve = [
22
24
  "REAL_ESTATE",
23
25
  "ALTERNATIVE",
24
26
  "LIABILITY"
25
- ], ye = {
27
+ ], we = {
26
28
  EQUITY: "brand",
27
29
  FIXED_INCOME: "blue",
28
30
  CASH: "teal",
@@ -31,18 +33,18 @@ var ve = [
31
33
  CRYPTO: "purple",
32
34
  ALTERNATIVE: "info"
33
35
  };
34
- function Q(e) {
36
+ function X(e) {
35
37
  let t = e.replace(/_/g, " ").toLowerCase();
36
38
  return t.charAt(0).toUpperCase() + t.slice(1);
37
39
  }
38
- function be() {
39
- let { t } = R(), n = (n, r, i) => e(t, n, r, i);
40
+ function Te() {
41
+ let { t } = le(), n = (n, r, i) => e(t, n, r, i);
40
42
  ee("brainyrich.dashboard.viewed");
41
- let r = o(), c = s(), l = i(), m = a({ status: "OPEN" }), C = r.data, w = C?.currency ?? "USD", E = C ? [
43
+ let r = te(), c = o(), l = s(), m = i(), C = a({ status: "OPEN" }), w = c.data, E = w?.currency ?? "USD", O = w ? [
42
44
  {
43
45
  label: n("brainyrich.dashboard.metrics.netWorth", "Net Worth"),
44
- value: y(C.totalNetWorth, w),
45
- icon: /* @__PURE__ */ z(L, {
46
+ value: y(w.totalNetWorth, E),
47
+ icon: /* @__PURE__ */ L(I, {
46
48
  className: "size-4",
47
49
  "aria-hidden": "true"
48
50
  }),
@@ -50,49 +52,84 @@ function be() {
50
52
  },
51
53
  {
52
54
  label: n("brainyrich.dashboard.metrics.investedAssets", "Invested Assets"),
53
- value: y(C.totalMarketValue, w),
54
- icon: /* @__PURE__ */ z(F, {
55
+ value: y(w.totalMarketValue, E),
56
+ icon: /* @__PURE__ */ L(se, {
55
57
  className: "size-4",
56
58
  "aria-hidden": "true"
57
59
  })
58
60
  },
59
61
  {
60
62
  label: n("brainyrich.dashboard.metrics.liquidity", "Cash & Liquidity"),
61
- value: y(C.totalCash, w),
62
- icon: /* @__PURE__ */ z(A, {
63
+ value: y(w.totalCash, E),
64
+ icon: /* @__PURE__ */ L(ie, {
63
65
  className: "size-4",
64
66
  "aria-hidden": "true"
65
67
  })
66
68
  },
67
69
  {
68
70
  label: n("brainyrich.dashboard.metrics.accounts", "Linked Accounts"),
69
- value: String(C.accountCount),
70
- icon: /* @__PURE__ */ z(ne, {
71
+ value: String(w.accountCount),
72
+ icon: /* @__PURE__ */ L(ae, {
71
73
  className: "size-4",
72
74
  "aria-hidden": "true"
73
75
  })
74
76
  }
75
- ] : [], O = T(() => C ? C.byAssetClass.filter((e) => Number.isFinite(e.marketValue) && e.marketValue > 0).slice().sort((e, t) => t.marketValue - e.marketValue).map((e) => ({
76
- label: Q(e.assetClass),
77
+ ] : [], A = ne(() => w ? w.byAssetClass.filter((e) => Number.isFinite(e.marketValue) && e.marketValue > 0).slice().sort((e, t) => t.marketValue - e.marketValue).map((e) => ({
78
+ label: X(e.assetClass),
77
79
  value: e.marketValue,
78
- tone: ye[e.assetClass]
79
- })) : [], [C]), j = c.data.slice(0, 5), M = l.data.slice(0, 5), N = m.data.slice(0, 6);
80
- return /* @__PURE__ */ z("div", {
80
+ tone: we[e.assetClass]
81
+ })) : [], [w]), j = l.data.slice(0, 5), M = m.data.slice(0, 5), N = C.data.slice(0, 6);
82
+ return r ? /* @__PURE__ */ L(T, {
83
+ translate: n,
84
+ summary: {
85
+ data: w,
86
+ isLoading: c.isLoading,
87
+ isError: c.isError,
88
+ refetch: () => void c.refetch()
89
+ },
90
+ allocation: A,
91
+ insights: {
92
+ data: C.data,
93
+ isLoading: C.isLoading,
94
+ isError: C.isError,
95
+ refetch: () => void C.refetch()
96
+ },
97
+ goals: {
98
+ data: m.data,
99
+ isLoading: m.isLoading,
100
+ isError: m.isError,
101
+ refetch: () => void m.refetch()
102
+ },
103
+ portfolios: {
104
+ data: l.data,
105
+ isLoading: l.isLoading,
106
+ isError: l.isError,
107
+ refetch: () => void l.refetch()
108
+ },
109
+ renderInsight: (e) => /* @__PURE__ */ L(Q, {
110
+ insight: e,
111
+ translate: n
112
+ }),
113
+ newAccountAction: /* @__PURE__ */ L($, {
114
+ translate: n,
115
+ compact: !0
116
+ })
117
+ }) : /* @__PURE__ */ L("div", {
81
118
  "data-tour": "brainyrich-page-dashboard",
82
119
  className: "contents",
83
- children: /* @__PURE__ */ B(v, {
120
+ children: /* @__PURE__ */ R(v, {
84
121
  title: n("brainyrich.dashboard.title", "Wealth Dashboard"),
85
122
  description: n("brainyrich.dashboard.description", "Your consolidated financial overview at a glance"),
86
- actions: /* @__PURE__ */ z(Ce, { translate: n }),
123
+ actions: /* @__PURE__ */ L($, { translate: n }),
87
124
  children: [
88
- r.isLoading ? /* @__PURE__ */ z(_, { rows: 1 }) : r.isError ? /* @__PURE__ */ z(g, {
125
+ c.isLoading ? /* @__PURE__ */ L(_, { rows: 1 }) : c.isError ? /* @__PURE__ */ L(g, {
89
126
  title: n("brainyrich.dashboard.netWorthError", "Could not load net worth"),
90
- onRetry: () => r.refetch()
91
- }) : C ? /* @__PURE__ */ z("div", {
127
+ onRetry: () => c.refetch()
128
+ }) : w ? /* @__PURE__ */ L("div", {
92
129
  className: "grid gap-4 sm:grid-cols-2 xl:grid-cols-4",
93
- children: E.map((e, t) => /* @__PURE__ */ z(d, {
130
+ children: O.map((e, t) => /* @__PURE__ */ L(d, {
94
131
  index: t,
95
- children: /* @__PURE__ */ z(p, {
132
+ children: /* @__PURE__ */ L(p, {
96
133
  label: e.label,
97
134
  value: e.value,
98
135
  icon: e.icon,
@@ -100,41 +137,41 @@ function be() {
100
137
  className: "h-full"
101
138
  })
102
139
  }, e.label))
103
- }) : /* @__PURE__ */ z(h, {
104
- icon: /* @__PURE__ */ z(L, {
140
+ }) : /* @__PURE__ */ L(h, {
141
+ icon: /* @__PURE__ */ L(I, {
105
142
  className: "size-6",
106
143
  "aria-hidden": "true"
107
144
  }),
108
145
  title: n("brainyrich.dashboard.noSummary", "No financial data yet"),
109
146
  description: n("brainyrich.dashboard.noSummaryDesc", "Link your first account to see your net worth here.")
110
147
  }),
111
- /* @__PURE__ */ B("div", {
148
+ /* @__PURE__ */ R("div", {
112
149
  className: "grid gap-6 lg:grid-cols-3",
113
- children: [/* @__PURE__ */ z(d, {
150
+ children: [/* @__PURE__ */ L(d, {
114
151
  index: 0,
115
152
  className: "lg:col-span-2",
116
- children: /* @__PURE__ */ B(f, {
153
+ children: /* @__PURE__ */ R(f, {
117
154
  className: "h-full",
118
- children: [/* @__PURE__ */ B("div", {
155
+ children: [/* @__PURE__ */ R("div", {
119
156
  className: "mb-4 space-y-1",
120
- children: [/* @__PURE__ */ B("h2", {
157
+ children: [/* @__PURE__ */ R("h2", {
121
158
  className: "flex items-center gap-2 text-base font-semibold text-text-primary",
122
- children: [/* @__PURE__ */ z(D, {
159
+ children: [/* @__PURE__ */ L(D, {
123
160
  className: "size-5",
124
161
  "aria-hidden": "true"
125
162
  }), n("brainyrich.dashboard.sections.positiveAssetAllocation", "Asset allocation")]
126
- }), /* @__PURE__ */ z("p", {
163
+ }), /* @__PURE__ */ L("p", {
127
164
  className: "text-sm text-text-secondary",
128
165
  children: n("brainyrich.dashboard.sections.positiveAssetAllocationDescription", "Positive holdings and cash balances; negative balances are excluded from this chart.")
129
166
  })]
130
- }), r.isLoading ? /* @__PURE__ */ z(_, { rows: 3 }) : r.isError ? /* @__PURE__ */ z(g, { onRetry: () => r.refetch() }) : O.length > 0 ? /* @__PURE__ */ z(u, {
131
- data: O,
167
+ }), c.isLoading ? /* @__PURE__ */ L(_, { rows: 3 }) : c.isError ? /* @__PURE__ */ L(g, { onRetry: () => c.refetch() }) : A.length > 0 ? /* @__PURE__ */ L(u, {
168
+ data: A,
132
169
  height: 260,
133
- centerValue: y(O.reduce((e, t) => e + t.value, 0), w),
170
+ centerValue: y(A.reduce((e, t) => e + t.value, 0), E),
134
171
  centerLabel: n("brainyrich.dashboard.metrics.allocationTotal", "Assets shown"),
135
- valueFormatter: (e) => x(e, w)
136
- }) : /* @__PURE__ */ z(h, {
137
- icon: /* @__PURE__ */ z(D, {
172
+ valueFormatter: (e) => x(e, E)
173
+ }) : /* @__PURE__ */ L(h, {
174
+ icon: /* @__PURE__ */ L(D, {
138
175
  className: "size-6",
139
176
  "aria-hidden": "true"
140
177
  }),
@@ -142,28 +179,28 @@ function be() {
142
179
  description: n("brainyrich.dashboard.noAllocationDesc", "Add holdings to your accounts to see how your wealth is allocated.")
143
180
  })]
144
181
  })
145
- }), /* @__PURE__ */ B("div", {
182
+ }), /* @__PURE__ */ R("div", {
146
183
  className: "space-y-6",
147
- children: [/* @__PURE__ */ z(d, {
184
+ children: [/* @__PURE__ */ L(d, {
148
185
  index: 1,
149
- children: /* @__PURE__ */ B(U, {
186
+ children: /* @__PURE__ */ R(V, {
150
187
  className: "motion-safe:transition-shadow motion-safe:hover:shadow-[var(--shadow-pop-hover,var(--shadow-elevation-2))]",
151
- children: [/* @__PURE__ */ z(K, {
188
+ children: [/* @__PURE__ */ L(W, {
152
189
  className: "pb-3",
153
- children: /* @__PURE__ */ B(q, {
190
+ children: /* @__PURE__ */ R(G, {
154
191
  className: "flex items-center gap-2 text-base",
155
- children: [/* @__PURE__ */ z(te, {
192
+ children: [/* @__PURE__ */ L(re, {
156
193
  className: "size-4",
157
194
  "aria-hidden": "true"
158
195
  }), n("brainyrich.dashboard.sections.needsAttention", "Needs attention")]
159
196
  })
160
- }), /* @__PURE__ */ z(W, {
197
+ }), /* @__PURE__ */ L(H, {
161
198
  className: "space-y-2.5",
162
- children: m.isLoading ? /* @__PURE__ */ z(_, { rows: 2 }) : m.isError ? /* @__PURE__ */ z(g, { onRetry: () => m.refetch() }) : N.length > 0 ? N.map((e) => /* @__PURE__ */ z(Se, {
199
+ children: C.isLoading ? /* @__PURE__ */ L(_, { rows: 2 }) : C.isError ? /* @__PURE__ */ L(g, { onRetry: () => C.refetch() }) : N.length > 0 ? N.map((e) => /* @__PURE__ */ L(Q, {
163
200
  insight: e,
164
201
  translate: n
165
- }, e.id)) : /* @__PURE__ */ z(h, {
166
- icon: /* @__PURE__ */ z(k, {
202
+ }, e.id)) : /* @__PURE__ */ L(h, {
203
+ icon: /* @__PURE__ */ L(k, {
167
204
  className: "size-6",
168
205
  "aria-hidden": "true"
169
206
  }),
@@ -172,29 +209,29 @@ function be() {
172
209
  })
173
210
  })]
174
211
  })
175
- }), /* @__PURE__ */ z(d, {
212
+ }), /* @__PURE__ */ L(d, {
176
213
  index: 2,
177
- children: /* @__PURE__ */ B(U, {
214
+ children: /* @__PURE__ */ R(V, {
178
215
  className: "motion-safe:transition-shadow motion-safe:hover:shadow-[var(--shadow-pop-hover,var(--shadow-elevation-2))]",
179
- children: [/* @__PURE__ */ z(K, {
216
+ children: [/* @__PURE__ */ L(W, {
180
217
  className: "pb-3",
181
- children: /* @__PURE__ */ B(q, {
218
+ children: /* @__PURE__ */ R(G, {
182
219
  className: "flex items-center gap-2 text-base",
183
- children: [/* @__PURE__ */ z(P, {
220
+ children: [/* @__PURE__ */ L(P, {
184
221
  className: "size-4",
185
222
  "aria-hidden": "true"
186
223
  }), n("brainyrich.dashboard.sections.goals", "Goals on track")]
187
224
  })
188
- }), /* @__PURE__ */ z(W, {
225
+ }), /* @__PURE__ */ L(H, {
189
226
  className: "space-y-2.5",
190
- children: l.isLoading ? /* @__PURE__ */ z(_, { rows: 3 }) : l.isError ? /* @__PURE__ */ z(g, { onRetry: () => l.refetch() }) : M.length > 0 ? M.map((e) => /* @__PURE__ */ B("div", {
227
+ children: m.isLoading ? /* @__PURE__ */ L(_, { rows: 3 }) : m.isError ? /* @__PURE__ */ L(g, { onRetry: () => m.refetch() }) : M.length > 0 ? M.map((e) => /* @__PURE__ */ R("div", {
191
228
  className: "flex items-start justify-between gap-2 rounded-lg border border-border-subtle p-3 motion-safe:transition-colors hover:border-[var(--color-action-primary-border)]/50 hover:bg-bg-elevated",
192
- children: [/* @__PURE__ */ B("div", {
229
+ children: [/* @__PURE__ */ R("div", {
193
230
  className: "min-w-0 space-y-0.5",
194
- children: [/* @__PURE__ */ z("p", {
231
+ children: [/* @__PURE__ */ L("p", {
195
232
  className: "truncate text-sm font-medium text-text-primary",
196
233
  children: e.name
197
- }), /* @__PURE__ */ B("p", {
234
+ }), /* @__PURE__ */ R("p", {
198
235
  className: "text-xs text-text-secondary",
199
236
  children: [
200
237
  x(e.targetAmount, e.currency),
@@ -202,13 +239,13 @@ function be() {
202
239
  b(e.targetDate)
203
240
  ]
204
241
  })]
205
- }), /* @__PURE__ */ z(V, {
242
+ }), /* @__PURE__ */ L(z, {
206
243
  variant: S(e.projection),
207
244
  className: "shrink-0",
208
- children: Q(e.projection)
245
+ children: X(e.projection)
209
246
  })]
210
- }, e.id)) : /* @__PURE__ */ z(h, {
211
- icon: /* @__PURE__ */ z(P, {
247
+ }, e.id)) : /* @__PURE__ */ L(h, {
248
+ icon: /* @__PURE__ */ L(P, {
212
249
  className: "size-6",
213
250
  "aria-hidden": "true"
214
251
  }),
@@ -220,38 +257,38 @@ function be() {
220
257
  })]
221
258
  })]
222
259
  }),
223
- /* @__PURE__ */ z(d, {
260
+ /* @__PURE__ */ L(d, {
224
261
  index: 3,
225
- children: /* @__PURE__ */ B(U, { children: [/* @__PURE__ */ B(K, { children: [/* @__PURE__ */ B(q, {
262
+ children: /* @__PURE__ */ R(V, { children: [/* @__PURE__ */ R(W, { children: [/* @__PURE__ */ R(G, {
226
263
  className: "flex items-center gap-2",
227
- children: [/* @__PURE__ */ z(L, {
264
+ children: [/* @__PURE__ */ L(I, {
228
265
  className: "size-5",
229
266
  "aria-hidden": "true"
230
267
  }), n("brainyrich.dashboard.sections.portfolios", "Portfolios")]
231
- }), /* @__PURE__ */ z(G, { children: n("brainyrich.dashboard.sections.portfoliosDescription", "Your active investment strategies") })] }), /* @__PURE__ */ z(W, { children: c.isLoading ? /* @__PURE__ */ z(_, { rows: 3 }) : c.isError ? /* @__PURE__ */ z(g, { onRetry: () => c.refetch() }) : j.length > 0 ? /* @__PURE__ */ z("div", {
268
+ }), /* @__PURE__ */ L(U, { children: n("brainyrich.dashboard.sections.portfoliosDescription", "Your active investment strategies") })] }), /* @__PURE__ */ L(H, { children: l.isLoading ? /* @__PURE__ */ L(_, { rows: 3 }) : l.isError ? /* @__PURE__ */ L(g, { onRetry: () => l.refetch() }) : j.length > 0 ? /* @__PURE__ */ L("div", {
232
269
  className: "grid gap-3 sm:grid-cols-2",
233
- children: j.map((e) => /* @__PURE__ */ B("div", {
270
+ children: j.map((e) => /* @__PURE__ */ R("div", {
234
271
  className: "flex items-start justify-between gap-2 rounded-lg border border-border-subtle p-3 motion-safe:transition-colors hover:border-[var(--color-action-primary-border)]/50 hover:bg-bg-elevated",
235
- children: [/* @__PURE__ */ B("div", {
272
+ children: [/* @__PURE__ */ R("div", {
236
273
  className: "min-w-0 space-y-0.5",
237
- children: [/* @__PURE__ */ z("p", {
274
+ children: [/* @__PURE__ */ L("p", {
238
275
  className: "truncate text-sm font-medium text-text-primary",
239
276
  children: e.name
240
- }), e.description ? /* @__PURE__ */ z("p", {
277
+ }), e.description ? /* @__PURE__ */ L("p", {
241
278
  className: "truncate text-xs text-text-secondary",
242
279
  children: e.description
243
- }) : /* @__PURE__ */ z("p", {
280
+ }) : /* @__PURE__ */ L("p", {
244
281
  className: "text-xs text-text-secondary",
245
282
  children: e.baseCurrency
246
283
  })]
247
- }), /* @__PURE__ */ z(V, {
284
+ }), /* @__PURE__ */ L(z, {
248
285
  variant: S(e.status),
249
286
  className: "shrink-0",
250
287
  children: e.status
251
288
  })]
252
289
  }, e.id))
253
- }) : /* @__PURE__ */ z(h, {
254
- icon: /* @__PURE__ */ z(L, {
290
+ }) : /* @__PURE__ */ L(h, {
291
+ icon: /* @__PURE__ */ L(I, {
255
292
  className: "size-6",
256
293
  "aria-hidden": "true"
257
294
  }),
@@ -263,11 +300,11 @@ function be() {
263
300
  })
264
301
  });
265
302
  }
266
- var $ = {
303
+ var Z = {
267
304
  CRITICAL: {
268
305
  chip: "text-status-error-text bg-status-error-bg",
269
306
  rail: "bg-status-error",
270
- icon: /* @__PURE__ */ z(re, {
307
+ icon: /* @__PURE__ */ L(oe, {
271
308
  className: "size-3",
272
309
  "aria-hidden": "true"
273
310
  })
@@ -275,7 +312,7 @@ var $ = {
275
312
  HIGH: {
276
313
  chip: "text-status-error-text bg-status-error-bg",
277
314
  rail: "bg-status-error",
278
- icon: /* @__PURE__ */ z(I, {
315
+ icon: /* @__PURE__ */ L(F, {
279
316
  className: "size-3",
280
317
  "aria-hidden": "true"
281
318
  })
@@ -283,7 +320,7 @@ var $ = {
283
320
  MEDIUM: {
284
321
  chip: "text-status-warning-text bg-status-warning-bg",
285
322
  rail: "bg-status-warning",
286
- icon: /* @__PURE__ */ z(I, {
323
+ icon: /* @__PURE__ */ L(F, {
287
324
  className: "size-3",
288
325
  "aria-hidden": "true"
289
326
  })
@@ -291,7 +328,7 @@ var $ = {
291
328
  LOW: {
292
329
  chip: "text-status-info-text bg-status-info-bg",
293
330
  rail: "bg-status-info",
294
- icon: /* @__PURE__ */ z(j, {
331
+ icon: /* @__PURE__ */ L(A, {
295
332
  className: "size-3",
296
333
  "aria-hidden": "true"
297
334
  })
@@ -299,88 +336,88 @@ var $ = {
299
336
  INFO: {
300
337
  chip: "text-status-info-text bg-status-info-bg",
301
338
  rail: "bg-status-info",
302
- icon: /* @__PURE__ */ z(j, {
339
+ icon: /* @__PURE__ */ L(A, {
303
340
  className: "size-3",
304
341
  "aria-hidden": "true"
305
342
  })
306
343
  }
307
344
  };
308
- function xe({ severity: e }) {
309
- let t = $[e] ?? $.INFO;
310
- return /* @__PURE__ */ B("span", {
345
+ function Ee({ severity: e }) {
346
+ let t = Z[e] ?? Z.INFO;
347
+ return /* @__PURE__ */ R("span", {
311
348
  className: `inline-flex shrink-0 items-center gap-1 rounded-full px-2 py-0.5 text-[10px] font-semibold uppercase tracking-wide ${t.chip}`,
312
349
  children: [t.icon, e]
313
350
  });
314
351
  }
315
- function Se({ insight: e, translate: n }) {
316
- let i = t(), a = r(), o = c(), [s, u] = E(!1), d = i.isPending || a.isPending || o.isPending, f = ($[e.severity] ?? $.INFO).rail;
317
- return /* @__PURE__ */ B("div", {
352
+ function Q({ insight: e, translate: n }) {
353
+ let i = t(), a = r(), o = c(), [s, u] = E(!1), d = i.isPending || a.isPending || o.isPending, f = (Z[e.severity] ?? Z.INFO).rail;
354
+ return /* @__PURE__ */ R("div", {
318
355
  className: "relative flex items-start justify-between gap-3 overflow-hidden rounded-lg border border-border-subtle p-3 pl-4 motion-safe:transition-colors hover:border-[var(--color-action-primary-border)]/50 hover:bg-bg-elevated",
319
356
  children: [
320
- /* @__PURE__ */ z("span", {
357
+ /* @__PURE__ */ L("span", {
321
358
  "aria-hidden": "true",
322
359
  className: `absolute inset-y-0 left-0 w-1 ${f}`
323
360
  }),
324
- /* @__PURE__ */ B("div", {
361
+ /* @__PURE__ */ R("div", {
325
362
  className: "min-w-0 space-y-1",
326
363
  children: [
327
- /* @__PURE__ */ B("div", {
364
+ /* @__PURE__ */ R("div", {
328
365
  className: "flex items-center gap-2",
329
- children: [/* @__PURE__ */ z(xe, { severity: e.severity }), /* @__PURE__ */ z("span", {
366
+ children: [/* @__PURE__ */ L(Ee, { severity: e.severity }), /* @__PURE__ */ L("span", {
330
367
  className: "truncate text-xs text-text-secondary",
331
- children: Q(e.type)
368
+ children: X(e.type)
332
369
  })]
333
370
  }),
334
- /* @__PURE__ */ z("p", {
371
+ /* @__PURE__ */ L("p", {
335
372
  className: "text-sm font-medium text-text-primary",
336
373
  children: e.title
337
374
  }),
338
- e.detail ? /* @__PURE__ */ z("p", {
375
+ e.detail ? /* @__PURE__ */ L("p", {
339
376
  className: "text-xs text-text-secondary",
340
377
  children: e.detail
341
378
  }) : null
342
379
  ]
343
380
  }),
344
- /* @__PURE__ */ B(J, { children: [/* @__PURE__ */ z(oe, {
381
+ /* @__PURE__ */ R(ue, { children: [/* @__PURE__ */ L(fe, {
345
382
  asChild: !0,
346
- children: /* @__PURE__ */ z(H, {
383
+ children: /* @__PURE__ */ L(B, {
347
384
  variant: "ghost",
348
385
  size: "icon",
349
386
  className: "shrink-0",
350
387
  disabled: d,
351
388
  "aria-label": n("brainyrich.dashboard.insightActions", "Insight actions"),
352
- children: /* @__PURE__ */ z(M, {
389
+ children: /* @__PURE__ */ L(j, {
353
390
  className: "size-4",
354
391
  "aria-hidden": "true"
355
392
  })
356
393
  })
357
- }), /* @__PURE__ */ B(ae, {
394
+ }), /* @__PURE__ */ R(de, {
358
395
  align: "end",
359
396
  children: [
360
- /* @__PURE__ */ B(Y, {
397
+ /* @__PURE__ */ R(K, {
361
398
  onSelect: () => i.mutate(e.id),
362
- children: [/* @__PURE__ */ z(O, {
399
+ children: [/* @__PURE__ */ L(O, {
363
400
  className: "size-4",
364
401
  "aria-hidden": "true"
365
402
  }), n("brainyrich.dashboard.insight.acknowledge", "Acknowledge")]
366
403
  }),
367
- /* @__PURE__ */ B(Y, {
404
+ /* @__PURE__ */ R(K, {
368
405
  onSelect: () => o.mutate(e.id),
369
- children: [/* @__PURE__ */ z(k, {
406
+ children: [/* @__PURE__ */ L(k, {
370
407
  className: "size-4",
371
408
  "aria-hidden": "true"
372
409
  }), n("brainyrich.dashboard.insight.resolve", "Resolve")]
373
410
  }),
374
- /* @__PURE__ */ B(Y, {
411
+ /* @__PURE__ */ R(K, {
375
412
  onSelect: () => u(!0),
376
- children: [/* @__PURE__ */ z(ie, {
413
+ children: [/* @__PURE__ */ L(ce, {
377
414
  className: "size-4",
378
415
  "aria-hidden": "true"
379
416
  }), n("brainyrich.dashboard.insight.dismiss", "Dismiss")]
380
417
  })
381
418
  ]
382
419
  })] }),
383
- /* @__PURE__ */ z(l, {
420
+ /* @__PURE__ */ L(l, {
384
421
  open: s,
385
422
  onOpenChange: u,
386
423
  title: n("brainyrich.dashboard.insight.dismissTitle", "Dismiss this insight?"),
@@ -394,141 +431,150 @@ function Se({ insight: e, translate: n }) {
394
431
  ]
395
432
  });
396
433
  }
397
- function Ce({ translate: e }) {
398
- let [t, r] = E(!1), [i, a] = E(""), [o, s] = E("BROKERAGE"), [c, l] = E(""), [u, d] = E(""), [f, p] = E("USD"), [h, g] = E(null), _ = n(), v = i.trim(), y = v.length > 0 && !_.isPending, b = () => {
399
- a(""), s("BROKERAGE"), l(""), d(""), p("USD"), g(null), _.reset();
434
+ function $({ translate: e, compact: t = !1 }) {
435
+ let [r, i] = E(!1), [a, o] = E(""), [s, c] = E("BROKERAGE"), [l, u] = E(""), [d, f] = E(""), [p, h] = E("USD"), [g, _] = E(null), v = n(), y = a.trim(), b = y.length > 0 && !v.isPending, x = () => {
436
+ o(""), c("BROKERAGE"), u(""), f(""), h("USD"), _(null), v.reset();
400
437
  };
401
- return /* @__PURE__ */ B(se, {
402
- open: t,
438
+ return /* @__PURE__ */ R(pe, {
439
+ open: r,
403
440
  onOpenChange: (e) => {
404
- r(e), e || b();
441
+ i(e), e || x();
405
442
  },
406
- children: [/* @__PURE__ */ B(H, {
443
+ children: [t ? /* @__PURE__ */ L(B, {
444
+ size: "icon",
445
+ className: "size-11 rounded-full",
446
+ onClick: () => i(!0),
447
+ "aria-label": e("brainyrich.dashboard.actions.newAccount", "New Account"),
448
+ children: /* @__PURE__ */ L(M, {
449
+ className: "size-5",
450
+ "aria-hidden": "true"
451
+ })
452
+ }) : /* @__PURE__ */ R(B, {
407
453
  size: "sm",
408
- onClick: () => r(!0),
409
- children: [/* @__PURE__ */ z(N, {
454
+ onClick: () => i(!0),
455
+ children: [/* @__PURE__ */ L(N, {
410
456
  className: "size-4",
411
457
  "aria-hidden": "true"
412
458
  }), e("brainyrich.dashboard.actions.newAccount", "New Account")]
413
- }), /* @__PURE__ */ z(ce, { children: /* @__PURE__ */ B("form", {
459
+ }), /* @__PURE__ */ L(me, { children: /* @__PURE__ */ R("form", {
414
460
  onSubmit: (t) => {
415
- if (t.preventDefault(), !y) return;
416
- let n = Number.parseFloat(u), i = {
417
- name: v,
418
- type: o,
419
- currency: f.trim() || "USD",
461
+ if (t.preventDefault(), !b) return;
462
+ let n = Number.parseFloat(d), r = {
463
+ name: y,
464
+ type: s,
465
+ currency: p.trim() || "USD",
420
466
  isManual: !0,
421
- ...c.trim() ? { institution: c.trim() } : {},
467
+ ...l.trim() ? { institution: l.trim() } : {},
422
468
  ...Number.isFinite(n) ? { cashBalance: n } : {},
423
- ...h ? { householdId: h } : {}
469
+ ...g ? { householdId: g } : {}
424
470
  };
425
- _.mutate(i, { onSuccess: () => {
426
- C(), w(e("brainyrich.dashboard.newAccount.success", "Account created")), b(), r(!1);
471
+ v.mutate(r, { onSuccess: () => {
472
+ C(), w(e("brainyrich.dashboard.newAccount.success", "Account created")), x(), i(!1);
427
473
  } });
428
474
  },
429
475
  className: "space-y-4",
430
476
  children: [
431
- /* @__PURE__ */ B(de, { children: [/* @__PURE__ */ z(fe, { children: e("brainyrich.dashboard.newAccount.title", "New Account") }), /* @__PURE__ */ z(le, { children: e("brainyrich.dashboard.newAccount.description", "Add a manual account to track alongside your linked institutions.") })] }),
432
- /* @__PURE__ */ B("div", {
477
+ /* @__PURE__ */ R(_e, { children: [/* @__PURE__ */ L(ve, { children: e("brainyrich.dashboard.newAccount.title", "New Account") }), /* @__PURE__ */ L(he, { children: e("brainyrich.dashboard.newAccount.description", "Add a manual account to track alongside your linked institutions.") })] }),
478
+ /* @__PURE__ */ R("div", {
433
479
  className: "space-y-2",
434
- children: [/* @__PURE__ */ z(Z, {
480
+ children: [/* @__PURE__ */ L(J, {
435
481
  htmlFor: "bra-account-name",
436
482
  children: e("brainyrich.dashboard.newAccount.name", "Account name")
437
- }), /* @__PURE__ */ z(X, {
483
+ }), /* @__PURE__ */ L(q, {
438
484
  id: "bra-account-name",
439
- value: i,
440
- onChange: (e) => a(e.target.value),
485
+ value: a,
486
+ onChange: (e) => o(e.target.value),
441
487
  placeholder: e("brainyrich.dashboard.newAccount.namePlaceholder", "e.g. Fidelity Brokerage"),
442
488
  required: !0,
443
489
  autoFocus: !0
444
490
  })]
445
491
  }),
446
- /* @__PURE__ */ B("div", {
492
+ /* @__PURE__ */ R("div", {
447
493
  className: "grid gap-4 sm:grid-cols-2",
448
- children: [/* @__PURE__ */ B("div", {
494
+ children: [/* @__PURE__ */ R("div", {
449
495
  className: "space-y-2",
450
- children: [/* @__PURE__ */ z(Z, {
496
+ children: [/* @__PURE__ */ L(J, {
451
497
  htmlFor: "bra-account-type",
452
498
  children: e("brainyrich.dashboard.newAccount.type", "Type")
453
- }), /* @__PURE__ */ B(pe, {
454
- value: o,
455
- onValueChange: (e) => s(e),
456
- children: [/* @__PURE__ */ z(ge, {
499
+ }), /* @__PURE__ */ R(Y, {
500
+ value: s,
501
+ onValueChange: (e) => c(e),
502
+ children: [/* @__PURE__ */ L(xe, {
457
503
  id: "bra-account-type",
458
- children: /* @__PURE__ */ z(_e, {})
459
- }), /* @__PURE__ */ z(me, { children: ve.map((e) => /* @__PURE__ */ z(he, {
504
+ children: /* @__PURE__ */ L(Se, {})
505
+ }), /* @__PURE__ */ L(ye, { children: Ce.map((e) => /* @__PURE__ */ L(be, {
460
506
  value: e,
461
507
  children: e.replace(/_/g, " ")
462
508
  }, e)) })]
463
509
  })]
464
- }), /* @__PURE__ */ B("div", {
510
+ }), /* @__PURE__ */ R("div", {
465
511
  className: "space-y-2",
466
- children: [/* @__PURE__ */ z(Z, {
512
+ children: [/* @__PURE__ */ L(J, {
467
513
  htmlFor: "bra-account-currency",
468
514
  children: e("brainyrich.dashboard.newAccount.currency", "Currency")
469
- }), /* @__PURE__ */ z(X, {
515
+ }), /* @__PURE__ */ L(q, {
470
516
  id: "bra-account-currency",
471
- value: f,
472
- onChange: (e) => p(e.target.value.toUpperCase()),
517
+ value: p,
518
+ onChange: (e) => h(e.target.value.toUpperCase()),
473
519
  maxLength: 3
474
520
  })]
475
521
  })]
476
522
  }),
477
- /* @__PURE__ */ B("div", {
523
+ /* @__PURE__ */ R("div", {
478
524
  className: "space-y-2",
479
- children: [/* @__PURE__ */ z(Z, {
525
+ children: [/* @__PURE__ */ L(J, {
480
526
  htmlFor: "bra-account-institution",
481
527
  children: e("brainyrich.dashboard.newAccount.institution", "Institution (optional)")
482
- }), /* @__PURE__ */ z(X, {
528
+ }), /* @__PURE__ */ L(q, {
483
529
  id: "bra-account-institution",
484
- value: c,
485
- onChange: (e) => l(e.target.value),
530
+ value: l,
531
+ onChange: (e) => u(e.target.value),
486
532
  placeholder: e("brainyrich.dashboard.newAccount.institutionPlaceholder", "e.g. Fidelity")
487
533
  })]
488
534
  }),
489
- /* @__PURE__ */ z(m, {
535
+ /* @__PURE__ */ L(m, {
490
536
  id: "bra-account-household",
491
- value: h,
492
- onChange: g,
537
+ value: g,
538
+ onChange: _,
493
539
  label: e("brainyrich.dashboard.newAccount.household", "Household (optional)"),
494
540
  noneLabel: e("brainyrich.dashboard.newAccount.noHousehold", "No household"),
495
- disabled: _.isPending
541
+ disabled: v.isPending
496
542
  }),
497
- /* @__PURE__ */ B("div", {
543
+ /* @__PURE__ */ R("div", {
498
544
  className: "space-y-2",
499
- children: [/* @__PURE__ */ z(Z, {
545
+ children: [/* @__PURE__ */ L(J, {
500
546
  htmlFor: "bra-account-cash",
501
547
  children: e("brainyrich.dashboard.newAccount.cash", "Cash balance (optional)")
502
- }), /* @__PURE__ */ z(X, {
548
+ }), /* @__PURE__ */ L(q, {
503
549
  id: "bra-account-cash",
504
550
  type: "number",
505
551
  inputMode: "decimal",
506
552
  step: "0.01",
507
- value: u,
508
- onChange: (e) => d(e.target.value),
553
+ value: d,
554
+ onChange: (e) => f(e.target.value),
509
555
  placeholder: "0.00"
510
556
  })]
511
557
  }),
512
- _.isError ? /* @__PURE__ */ z("p", {
558
+ v.isError ? /* @__PURE__ */ L("p", {
513
559
  className: "text-sm text-status-error-text",
514
- children: _.error instanceof Error ? _.error.message : e("brainyrich.dashboard.newAccount.error", "Could not create account.")
560
+ children: v.error instanceof Error ? v.error.message : e("brainyrich.dashboard.newAccount.error", "Could not create account.")
515
561
  }) : null,
516
- /* @__PURE__ */ B(ue, { children: [/* @__PURE__ */ z(H, {
562
+ /* @__PURE__ */ R(ge, { children: [/* @__PURE__ */ L(B, {
517
563
  type: "button",
518
564
  variant: "outline",
519
- onClick: () => r(!1),
520
- disabled: _.isPending,
565
+ onClick: () => i(!1),
566
+ disabled: v.isPending,
521
567
  children: e("brainyrich.common.cancel", "Cancel")
522
- }), /* @__PURE__ */ z(H, {
568
+ }), /* @__PURE__ */ L(B, {
523
569
  type: "submit",
524
- disabled: !y,
525
- children: _.isPending ? e("brainyrich.dashboard.newAccount.creating", "Creating…") : e("brainyrich.dashboard.newAccount.create", "Create account")
570
+ disabled: !b,
571
+ children: v.isPending ? e("brainyrich.dashboard.newAccount.creating", "Creating…") : e("brainyrich.dashboard.newAccount.create", "Create account")
526
572
  })] })
527
573
  ]
528
574
  }) })]
529
575
  });
530
576
  }
531
577
  //#endregion
532
- export { be as DashboardPage };
578
+ export { Te as DashboardPage };
533
579
 
534
580
  //# sourceMappingURL=DashboardPage.js.map