@burdenoff/microfe-brainyrich 2026.705.1 → 2026.706.1
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/brainyrich/BrainyRichRoot.js +13 -13
- package/dist/brainyrich/components/ActorName.js +38 -0
- package/dist/brainyrich/components/ActorName.js.map +1 -0
- package/dist/brainyrich/components/ConfirmDialog.js +25 -0
- package/dist/brainyrich/components/ConfirmDialog.js.map +1 -0
- package/dist/brainyrich/components/LoadMore.js +24 -0
- package/dist/brainyrich/components/LoadMore.js.map +1 -0
- package/dist/brainyrich/components/index.js +5 -0
- package/dist/brainyrich/components/notify.js +38 -0
- package/dist/brainyrich/components/notify.js.map +1 -0
- package/dist/brainyrich/components/pickers.js +232 -0
- package/dist/brainyrich/components/pickers.js.map +1 -0
- package/dist/brainyrich/components/reuse/CommentThread.js +208 -0
- package/dist/brainyrich/components/reuse/CommentThread.js.map +1 -0
- package/dist/brainyrich/components/reuse/DocumentsPanel.js +237 -0
- package/dist/brainyrich/components/reuse/DocumentsPanel.js.map +1 -0
- package/dist/brainyrich/components/reuse/TagField.js +206 -0
- package/dist/brainyrich/components/reuse/TagField.js.map +1 -0
- package/dist/brainyrich/components/reuse/transport.js +24 -0
- package/dist/brainyrich/components/reuse/transport.js.map +1 -0
- package/dist/brainyrich/hooks/useBrainyRichApi.js +644 -372
- package/dist/brainyrich/hooks/useBrainyRichApi.js.map +1 -1
- package/dist/brainyrich/pages/AccountsPage.js +346 -293
- package/dist/brainyrich/pages/AccountsPage.js.map +1 -1
- package/dist/brainyrich/pages/AiAssistantPage.js +339 -320
- package/dist/brainyrich/pages/AiAssistantPage.js.map +1 -1
- package/dist/brainyrich/pages/AnalyticsPage.js +178 -164
- package/dist/brainyrich/pages/AnalyticsPage.js.map +1 -1
- package/dist/brainyrich/pages/DashboardPage.js +195 -169
- package/dist/brainyrich/pages/DashboardPage.js.map +1 -1
- package/dist/brainyrich/pages/FamilyPage.js +247 -198
- package/dist/brainyrich/pages/FamilyPage.js.map +1 -1
- package/dist/brainyrich/pages/GoalsPage.js +478 -442
- package/dist/brainyrich/pages/GoalsPage.js.map +1 -1
- package/dist/brainyrich/pages/InvestmentsPage.js.map +1 -1
- package/dist/brainyrich/pages/PortfoliosPage.js +438 -396
- package/dist/brainyrich/pages/PortfoliosPage.js.map +1 -1
- package/dist/brainyrich/pages/ReportsPage.js +246 -213
- package/dist/brainyrich/pages/ReportsPage.js.map +1 -1
- package/dist/brainyrich/pages/RiskPage.js +321 -173
- package/dist/brainyrich/pages/RiskPage.js.map +1 -1
- package/dist/brainyrich/pages/TaxPage.js +258 -225
- package/dist/brainyrich/pages/TaxPage.js.map +1 -1
- package/dist/brainyrich/pages/_shared.js.map +1 -1
- package/dist/node_modules/sonner/dist/index.js +163 -0
- package/dist/node_modules/sonner/dist/index.js.map +1 -0
- package/package.json +3 -2
|
@@ -1,20 +1,20 @@
|
|
|
1
|
-
import { useAccounts as e,
|
|
1
|
+
import { useAccounts as e, useAllTransactions as t, useHoldings as n, useNetWorthSummary as r, useRecordTransaction as i } from "../hooks/useBrainyRichApi.js";
|
|
2
2
|
import { AllocationBars as a, EmptyState as o, ErrorState as ee, KpiGrid as te, LoadingState as s, SectionShell as ne, formatDate as re, formatMoney as c, formatPct as ie } from "./_shared.js";
|
|
3
3
|
import { useMemo as l, useState as ae } from "react";
|
|
4
|
-
import { ArrowDownRight as oe, ArrowUpRight as se, BarChart3 as u, Minus as d, PieChart as ce, Plus as le, Wallet as
|
|
5
|
-
import { jsx as
|
|
6
|
-
import { Badge as
|
|
4
|
+
import { ArrowDownRight as oe, ArrowUpRight as se, BarChart3 as u, Minus as d, PieChart as ce, Plus as le, Wallet as f } from "lucide-react";
|
|
5
|
+
import { jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
6
|
+
import { Badge as ue, Button as h, Card as g, CardContent as _, CardDescription as v, CardHeader as y, CardTitle as b, Dialog as de, DialogContent as fe, DialogDescription as pe, DialogFooter as me, DialogHeader as he, DialogTitle as ge, DialogTrigger as _e, Input as x, Label as S, Select as C, SelectContent as w, SelectItem as T, SelectTrigger as E, SelectValue as D, Table as O, TableBody as k, TableCell as A, TableHead as j, TableHeader as M, TableRow as N, Tabs as ve, TabsContent as P, TabsList as ye, TabsTrigger as F, Textarea as be } from "@burdenoff/fe-libs/ui";
|
|
7
7
|
//#region src/brainyrich/pages/AnalyticsPage.tsx
|
|
8
|
-
var
|
|
8
|
+
var I = (e) => e.toLowerCase().split("_").map((e) => e && e[0].toUpperCase() + e.slice(1)).join(" "), L = [
|
|
9
9
|
"DEPOSIT",
|
|
10
10
|
"DIVIDEND",
|
|
11
11
|
"INTEREST",
|
|
12
12
|
"SELL"
|
|
13
|
-
],
|
|
13
|
+
], R = [
|
|
14
14
|
"WITHDRAWAL",
|
|
15
15
|
"FEE",
|
|
16
16
|
"BUY"
|
|
17
|
-
],
|
|
17
|
+
], z = (e) => L.includes(e) ? "in" : R.includes(e) ? "out" : "neutral", xe = (e) => {
|
|
18
18
|
let t = new Date(e);
|
|
19
19
|
return Number.isNaN(t.getTime()) ? null : {
|
|
20
20
|
key: `${t.getFullYear()}-${String(t.getMonth() + 1).padStart(2, "0")}`,
|
|
@@ -23,12 +23,12 @@ var F = (e) => e.toLowerCase().split("_").map((e) => e && e[0].toUpperCase() + e
|
|
|
23
23
|
year: "numeric"
|
|
24
24
|
}).format(t)
|
|
25
25
|
};
|
|
26
|
-
},
|
|
26
|
+
}, Se = (e) => {
|
|
27
27
|
let t = /* @__PURE__ */ new Map();
|
|
28
28
|
for (let n of e) {
|
|
29
|
-
let e =
|
|
29
|
+
let e = xe(n.tradeDate);
|
|
30
30
|
if (!e) continue;
|
|
31
|
-
let r =
|
|
31
|
+
let r = z(n.type);
|
|
32
32
|
if (r === "neutral") continue;
|
|
33
33
|
let i = Math.abs(n.amount), a = t.get(e.key) ?? {
|
|
34
34
|
key: e.key,
|
|
@@ -39,21 +39,21 @@ var F = (e) => e.toLowerCase().split("_").map((e) => e && e[0].toUpperCase() + e
|
|
|
39
39
|
r === "in" ? a.inflow += i : a.outflow += i, t.set(e.key, a);
|
|
40
40
|
}
|
|
41
41
|
return Array.from(t.values()).sort((e, t) => e.key.localeCompare(t.key));
|
|
42
|
-
},
|
|
42
|
+
}, Ce = (e) => {
|
|
43
43
|
let t = /* @__PURE__ */ new Map();
|
|
44
44
|
for (let n of e) t.set(n.type, (t.get(n.type) ?? 0) + Math.abs(n.amount));
|
|
45
45
|
return Array.from(t.entries()).map(([e, t]) => ({
|
|
46
46
|
type: e,
|
|
47
47
|
total: t,
|
|
48
|
-
dir:
|
|
48
|
+
dir: z(e)
|
|
49
49
|
})).sort((e, t) => t.total - e.total);
|
|
50
50
|
};
|
|
51
|
-
function
|
|
51
|
+
function we({ value: e, currency: t }) {
|
|
52
52
|
let n = e > 0, r = e < 0, i = n ? se : r ? oe : d, a = n ? "text-status-success-text" : r ? "text-status-error-text" : "text-text-secondary", o = n ? "+" : r ? "-" : "";
|
|
53
|
-
return /* @__PURE__ */
|
|
53
|
+
return /* @__PURE__ */ m("span", {
|
|
54
54
|
className: `inline-flex items-center justify-end gap-1 font-medium ${a}`,
|
|
55
55
|
children: [
|
|
56
|
-
/* @__PURE__ */
|
|
56
|
+
/* @__PURE__ */ p(i, {
|
|
57
57
|
className: "size-3.5",
|
|
58
58
|
"aria-hidden": "true"
|
|
59
59
|
}),
|
|
@@ -62,7 +62,7 @@ function Te({ value: e, currency: t }) {
|
|
|
62
62
|
]
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
|
-
var
|
|
65
|
+
var Te = {
|
|
66
66
|
accountId: "",
|
|
67
67
|
type: "DEPOSIT",
|
|
68
68
|
amount: "",
|
|
@@ -80,8 +80,8 @@ var z = {
|
|
|
80
80
|
"TRANSFER"
|
|
81
81
|
];
|
|
82
82
|
function B() {
|
|
83
|
-
let d =
|
|
84
|
-
label:
|
|
83
|
+
let d = r(), L = t(), R = e(), [z, xe] = ae(void 0), B = R.data, De = z ?? B[0]?.id, V = n({ accountId: De }), H = i(), [Oe, U] = ae(!1), [W, G] = ae(Te), K = d.data, q = K?.currency ?? "USD", J = L.data, ke = l(() => !K || K.totalMarketValue <= 0 ? [] : K.byAssetClass.filter((e) => e.marketValue !== 0).map((e) => ({
|
|
84
|
+
label: I(e.assetClass),
|
|
85
85
|
value: e.marketValue / K.totalMarketValue * 100,
|
|
86
86
|
caption: c(e.marketValue, q),
|
|
87
87
|
tone: "accent"
|
|
@@ -99,7 +99,7 @@ function B() {
|
|
|
99
99
|
caption: c(K.totalCash, q),
|
|
100
100
|
tone: "warning"
|
|
101
101
|
}];
|
|
102
|
-
}, [K, q]), Y = l(() =>
|
|
102
|
+
}, [K, q]), Y = l(() => Se(J), [J]), je = l(() => Ce(J), [J]), X = l(() => {
|
|
103
103
|
let e = 0, t = 0;
|
|
104
104
|
for (let n of Y) e += n.inflow, t += n.outflow;
|
|
105
105
|
return {
|
|
@@ -118,91 +118,97 @@ function B() {
|
|
|
118
118
|
totalCost: Me.reduce((e, t) => e + t.costBasis, 0)
|
|
119
119
|
};
|
|
120
120
|
}, [Me]);
|
|
121
|
-
if (d.isLoading) return /* @__PURE__ */
|
|
121
|
+
if (d.isLoading) return /* @__PURE__ */ p(ne, {
|
|
122
122
|
title: "Wealth Analytics",
|
|
123
123
|
description: "Allocation, cash flow, and holdings performance derived from your real accounts.",
|
|
124
|
-
children: /* @__PURE__ */
|
|
124
|
+
children: /* @__PURE__ */ p(s, { rows: 5 })
|
|
125
125
|
});
|
|
126
|
-
if (d.isError || !K) return /* @__PURE__ */
|
|
126
|
+
if (d.isError || !K) return /* @__PURE__ */ p(ne, {
|
|
127
127
|
title: "Wealth Analytics",
|
|
128
128
|
description: "Allocation, cash flow, and holdings performance derived from your real accounts.",
|
|
129
|
-
children: /* @__PURE__ */
|
|
129
|
+
children: /* @__PURE__ */ p(ee, {
|
|
130
130
|
title: "Could not load analytics",
|
|
131
131
|
description: "We couldn't reach the wealth service. Please retry.",
|
|
132
132
|
onRetry: () => d.refetch()
|
|
133
133
|
})
|
|
134
134
|
});
|
|
135
|
-
let $ = Number(W.amount), Ne = !!W.accountId && !!W.tradeDate && W.amount.trim() !== "" && Number.isFinite($) && $ > 0 && !H.isPending, Pe = /* @__PURE__ */
|
|
135
|
+
let $ = Number(W.amount), Ne = !!W.accountId && !!W.tradeDate && W.amount.trim() !== "" && Number.isFinite($) && $ > 0 && !H.isPending, Pe = /* @__PURE__ */ m(de, {
|
|
136
136
|
open: Oe,
|
|
137
137
|
onOpenChange: (e) => {
|
|
138
|
-
U(e), e || G(
|
|
138
|
+
U(e), e || G(Te);
|
|
139
139
|
},
|
|
140
|
-
children: [/* @__PURE__ */
|
|
140
|
+
children: [/* @__PURE__ */ p(_e, {
|
|
141
141
|
asChild: !0,
|
|
142
|
-
children: /* @__PURE__ */
|
|
142
|
+
children: /* @__PURE__ */ m(h, {
|
|
143
143
|
size: "sm",
|
|
144
|
-
|
|
145
|
-
children: [/* @__PURE__ */ f(le, {
|
|
144
|
+
children: [/* @__PURE__ */ p(le, {
|
|
146
145
|
className: "mr-1 size-4",
|
|
147
146
|
"aria-hidden": "true"
|
|
148
147
|
}), "Record Transaction"]
|
|
149
148
|
})
|
|
150
|
-
}), /* @__PURE__ */
|
|
151
|
-
/* @__PURE__ */
|
|
152
|
-
/* @__PURE__ */ p(
|
|
149
|
+
}), /* @__PURE__ */ m(fe, { children: [
|
|
150
|
+
/* @__PURE__ */ m(he, { children: [/* @__PURE__ */ p(ge, { children: "Record Transaction" }), /* @__PURE__ */ p(pe, { children: "Log a real cash flow or trade. It updates your cash-flow analytics immediately." })] }),
|
|
151
|
+
B.length === 0 ? /* @__PURE__ */ p(o, {
|
|
152
|
+
icon: /* @__PURE__ */ p(f, {
|
|
153
|
+
className: "size-6",
|
|
154
|
+
"aria-hidden": "true"
|
|
155
|
+
}),
|
|
156
|
+
title: "Create an account first",
|
|
157
|
+
description: "You need at least one account before you can record a transaction. Open the Accounts page to add one, then come back here."
|
|
158
|
+
}) : /* @__PURE__ */ m("div", {
|
|
153
159
|
className: "space-y-4",
|
|
154
160
|
children: [
|
|
155
|
-
/* @__PURE__ */
|
|
161
|
+
/* @__PURE__ */ m("div", {
|
|
156
162
|
className: "space-y-1.5",
|
|
157
|
-
children: [/* @__PURE__ */
|
|
163
|
+
children: [/* @__PURE__ */ p(S, {
|
|
158
164
|
htmlFor: "tx-account",
|
|
159
165
|
children: "Account"
|
|
160
|
-
}), /* @__PURE__ */
|
|
166
|
+
}), /* @__PURE__ */ m(C, {
|
|
161
167
|
value: W.accountId,
|
|
162
168
|
onValueChange: (e) => G((t) => ({
|
|
163
169
|
...t,
|
|
164
170
|
accountId: e
|
|
165
171
|
})),
|
|
166
|
-
children: [/* @__PURE__ */
|
|
172
|
+
children: [/* @__PURE__ */ p(E, {
|
|
167
173
|
id: "tx-account",
|
|
168
|
-
children: /* @__PURE__ */
|
|
169
|
-
}), /* @__PURE__ */
|
|
174
|
+
children: /* @__PURE__ */ p(D, { placeholder: "Select an account" })
|
|
175
|
+
}), /* @__PURE__ */ p(w, { children: B.map((e) => /* @__PURE__ */ p(T, {
|
|
170
176
|
value: e.id,
|
|
171
177
|
children: e.name
|
|
172
178
|
}, e.id)) })]
|
|
173
179
|
})]
|
|
174
180
|
}),
|
|
175
|
-
/* @__PURE__ */
|
|
181
|
+
/* @__PURE__ */ m("div", {
|
|
176
182
|
className: "grid grid-cols-2 gap-4",
|
|
177
|
-
children: [/* @__PURE__ */
|
|
183
|
+
children: [/* @__PURE__ */ m("div", {
|
|
178
184
|
className: "space-y-1.5",
|
|
179
|
-
children: [/* @__PURE__ */
|
|
185
|
+
children: [/* @__PURE__ */ p(S, {
|
|
180
186
|
htmlFor: "tx-type",
|
|
181
187
|
children: "Type"
|
|
182
|
-
}), /* @__PURE__ */
|
|
188
|
+
}), /* @__PURE__ */ m(C, {
|
|
183
189
|
value: W.type,
|
|
184
190
|
onValueChange: (e) => G((t) => ({
|
|
185
191
|
...t,
|
|
186
192
|
type: e
|
|
187
193
|
})),
|
|
188
|
-
children: [/* @__PURE__ */
|
|
194
|
+
children: [/* @__PURE__ */ p(E, {
|
|
189
195
|
id: "tx-type",
|
|
190
|
-
children: /* @__PURE__ */
|
|
191
|
-
}), /* @__PURE__ */
|
|
196
|
+
children: /* @__PURE__ */ p(D, {})
|
|
197
|
+
}), /* @__PURE__ */ p(w, { children: Ee.map((e) => /* @__PURE__ */ p(T, {
|
|
192
198
|
value: e,
|
|
193
|
-
children:
|
|
199
|
+
children: I(e)
|
|
194
200
|
}, e)) })]
|
|
195
201
|
})]
|
|
196
|
-
}), /* @__PURE__ */
|
|
202
|
+
}), /* @__PURE__ */ m("div", {
|
|
197
203
|
className: "space-y-1.5",
|
|
198
|
-
children: [/* @__PURE__ */
|
|
204
|
+
children: [/* @__PURE__ */ m(S, {
|
|
199
205
|
htmlFor: "tx-amount",
|
|
200
206
|
children: [
|
|
201
207
|
"Amount (",
|
|
202
208
|
q,
|
|
203
209
|
")"
|
|
204
210
|
]
|
|
205
|
-
}), /* @__PURE__ */
|
|
211
|
+
}), /* @__PURE__ */ p(x, {
|
|
206
212
|
id: "tx-amount",
|
|
207
213
|
type: "number",
|
|
208
214
|
min: "0",
|
|
@@ -217,14 +223,14 @@ function B() {
|
|
|
217
223
|
})]
|
|
218
224
|
})]
|
|
219
225
|
}),
|
|
220
|
-
/* @__PURE__ */
|
|
226
|
+
/* @__PURE__ */ m("div", {
|
|
221
227
|
className: "grid grid-cols-2 gap-4",
|
|
222
|
-
children: [/* @__PURE__ */
|
|
228
|
+
children: [/* @__PURE__ */ m("div", {
|
|
223
229
|
className: "space-y-1.5",
|
|
224
|
-
children: [/* @__PURE__ */
|
|
230
|
+
children: [/* @__PURE__ */ p(S, {
|
|
225
231
|
htmlFor: "tx-date",
|
|
226
232
|
children: "Trade date"
|
|
227
|
-
}), /* @__PURE__ */
|
|
233
|
+
}), /* @__PURE__ */ p(x, {
|
|
228
234
|
id: "tx-date",
|
|
229
235
|
type: "date",
|
|
230
236
|
value: W.tradeDate,
|
|
@@ -233,12 +239,12 @@ function B() {
|
|
|
233
239
|
tradeDate: e.target.value
|
|
234
240
|
}))
|
|
235
241
|
})]
|
|
236
|
-
}), /* @__PURE__ */
|
|
242
|
+
}), /* @__PURE__ */ m("div", {
|
|
237
243
|
className: "space-y-1.5",
|
|
238
|
-
children: [/* @__PURE__ */
|
|
244
|
+
children: [/* @__PURE__ */ p(S, {
|
|
239
245
|
htmlFor: "tx-symbol",
|
|
240
246
|
children: "Symbol (optional)"
|
|
241
|
-
}), /* @__PURE__ */
|
|
247
|
+
}), /* @__PURE__ */ p(x, {
|
|
242
248
|
id: "tx-symbol",
|
|
243
249
|
placeholder: "e.g. AAPL",
|
|
244
250
|
value: W.symbol,
|
|
@@ -249,12 +255,12 @@ function B() {
|
|
|
249
255
|
})]
|
|
250
256
|
})]
|
|
251
257
|
}),
|
|
252
|
-
/* @__PURE__ */
|
|
258
|
+
/* @__PURE__ */ m("div", {
|
|
253
259
|
className: "space-y-1.5",
|
|
254
|
-
children: [/* @__PURE__ */
|
|
260
|
+
children: [/* @__PURE__ */ p(S, {
|
|
255
261
|
htmlFor: "tx-notes",
|
|
256
262
|
children: "Notes (optional)"
|
|
257
|
-
}), /* @__PURE__ */
|
|
263
|
+
}), /* @__PURE__ */ p(be, {
|
|
258
264
|
id: "tx-notes",
|
|
259
265
|
rows: 2,
|
|
260
266
|
placeholder: "Context for this transaction",
|
|
@@ -265,17 +271,17 @@ function B() {
|
|
|
265
271
|
}))
|
|
266
272
|
})]
|
|
267
273
|
}),
|
|
268
|
-
H.isError ? /* @__PURE__ */
|
|
274
|
+
H.isError ? /* @__PURE__ */ p("p", {
|
|
269
275
|
className: "text-sm text-status-error-text",
|
|
270
276
|
children: H.error instanceof Error ? H.error.message : "Could not record transaction."
|
|
271
277
|
}) : null
|
|
272
278
|
]
|
|
273
279
|
}),
|
|
274
|
-
/* @__PURE__ */
|
|
280
|
+
/* @__PURE__ */ m(me, { children: [/* @__PURE__ */ p(h, {
|
|
275
281
|
variant: "outline",
|
|
276
282
|
onClick: () => U(!1),
|
|
277
|
-
children: "Cancel"
|
|
278
|
-
}), /* @__PURE__ */
|
|
283
|
+
children: B.length === 0 ? "Close" : "Cancel"
|
|
284
|
+
}), B.length > 0 ? /* @__PURE__ */ p(h, {
|
|
279
285
|
onClick: () => {
|
|
280
286
|
Ne && H.mutate({
|
|
281
287
|
accountId: W.accountId,
|
|
@@ -285,20 +291,20 @@ function B() {
|
|
|
285
291
|
tradeDate: new Date(W.tradeDate).toISOString(),
|
|
286
292
|
notes: W.notes.trim() ? W.notes.trim() : void 0
|
|
287
293
|
}, { onSuccess: () => {
|
|
288
|
-
U(!1), G(
|
|
294
|
+
U(!1), G(Te);
|
|
289
295
|
} });
|
|
290
296
|
},
|
|
291
297
|
disabled: !Ne,
|
|
292
298
|
children: H.isPending ? "Recording…" : "Record"
|
|
293
|
-
})] })
|
|
299
|
+
}) : null] })
|
|
294
300
|
] })]
|
|
295
301
|
});
|
|
296
|
-
return /* @__PURE__ */
|
|
302
|
+
return /* @__PURE__ */ m(ne, {
|
|
297
303
|
title: "Wealth Analytics",
|
|
298
304
|
description: "Allocation, cash flow, and holdings performance derived from your real accounts.",
|
|
299
305
|
badges: [`${K.accountCount} accounts`],
|
|
300
306
|
actions: Pe,
|
|
301
|
-
children: [/* @__PURE__ */
|
|
307
|
+
children: [/* @__PURE__ */ p(te, { items: [
|
|
302
308
|
{
|
|
303
309
|
label: "Net Worth",
|
|
304
310
|
value: c(K.totalNetWorth, q)
|
|
@@ -317,307 +323,315 @@ function B() {
|
|
|
317
323
|
deltaTone: X.net > 0 ? "positive" : X.net < 0 ? "negative" : "neutral",
|
|
318
324
|
trend: J.length > 0 ? `${c(X.inflow, q)} in · ${c(X.outflow, q)} out` : "No transactions yet"
|
|
319
325
|
}
|
|
320
|
-
] }), /* @__PURE__ */
|
|
326
|
+
] }), /* @__PURE__ */ m(ve, {
|
|
321
327
|
defaultValue: "allocation",
|
|
322
328
|
className: "space-y-4",
|
|
323
329
|
children: [
|
|
324
|
-
/* @__PURE__ */
|
|
330
|
+
/* @__PURE__ */ m(ye, {
|
|
325
331
|
className: "grid w-full grid-cols-3",
|
|
326
332
|
children: [
|
|
327
|
-
/* @__PURE__ */
|
|
333
|
+
/* @__PURE__ */ p(F, {
|
|
328
334
|
value: "allocation",
|
|
329
335
|
children: "Allocation"
|
|
330
336
|
}),
|
|
331
|
-
/* @__PURE__ */
|
|
337
|
+
/* @__PURE__ */ p(F, {
|
|
332
338
|
value: "cashflow",
|
|
333
339
|
children: "Cash Flow"
|
|
334
340
|
}),
|
|
335
|
-
/* @__PURE__ */
|
|
341
|
+
/* @__PURE__ */ p(F, {
|
|
336
342
|
value: "performance",
|
|
337
343
|
children: "Performance"
|
|
338
344
|
})
|
|
339
345
|
]
|
|
340
346
|
}),
|
|
341
|
-
/* @__PURE__ */
|
|
347
|
+
/* @__PURE__ */ m(P, {
|
|
342
348
|
value: "allocation",
|
|
343
349
|
className: "space-y-4",
|
|
344
|
-
children: [/* @__PURE__ */
|
|
350
|
+
children: [/* @__PURE__ */ m(g, { children: [/* @__PURE__ */ m(y, { children: [/* @__PURE__ */ m(b, {
|
|
345
351
|
className: "flex items-center gap-2",
|
|
346
|
-
children: [/* @__PURE__ */
|
|
352
|
+
children: [/* @__PURE__ */ p(ce, {
|
|
347
353
|
className: "size-5",
|
|
348
354
|
"aria-hidden": "true"
|
|
349
355
|
}), "Asset Allocation"]
|
|
350
|
-
}), /* @__PURE__ */
|
|
351
|
-
icon: /* @__PURE__ */
|
|
356
|
+
}), /* @__PURE__ */ p(v, { children: "Share of invested value by asset class, from your holdings." })] }), /* @__PURE__ */ p(_, { children: ke.length === 0 ? /* @__PURE__ */ p(o, {
|
|
357
|
+
icon: /* @__PURE__ */ p(ce, {
|
|
352
358
|
className: "size-6",
|
|
353
359
|
"aria-hidden": "true"
|
|
354
360
|
}),
|
|
355
361
|
title: "No invested holdings yet",
|
|
356
362
|
description: "Add holdings to your accounts to see an asset-class breakdown here."
|
|
357
|
-
}) : /* @__PURE__ */
|
|
363
|
+
}) : /* @__PURE__ */ m("div", {
|
|
358
364
|
className: "space-y-4",
|
|
359
|
-
children: [/* @__PURE__ */
|
|
360
|
-
/* @__PURE__ */
|
|
361
|
-
/* @__PURE__ */
|
|
365
|
+
children: [/* @__PURE__ */ p(a, { data: ke }), /* @__PURE__ */ m(O, { children: [/* @__PURE__ */ p(M, { children: /* @__PURE__ */ m(N, { children: [
|
|
366
|
+
/* @__PURE__ */ p(j, { children: "Asset class" }),
|
|
367
|
+
/* @__PURE__ */ p(j, {
|
|
362
368
|
className: "text-right",
|
|
363
369
|
children: "Market value"
|
|
364
370
|
}),
|
|
365
|
-
/* @__PURE__ */
|
|
371
|
+
/* @__PURE__ */ p(j, {
|
|
366
372
|
className: "text-right",
|
|
367
373
|
children: "Weight"
|
|
368
374
|
})
|
|
369
|
-
] }) }), /* @__PURE__ */
|
|
370
|
-
/* @__PURE__ */
|
|
375
|
+
] }) }), /* @__PURE__ */ p(k, { children: ke.map((e) => /* @__PURE__ */ m(N, { children: [
|
|
376
|
+
/* @__PURE__ */ p(A, {
|
|
371
377
|
className: "font-medium text-text-primary",
|
|
372
378
|
children: e.label
|
|
373
379
|
}),
|
|
374
|
-
/* @__PURE__ */
|
|
380
|
+
/* @__PURE__ */ p(A, {
|
|
375
381
|
className: "text-right",
|
|
376
382
|
children: e.caption
|
|
377
383
|
}),
|
|
378
|
-
/* @__PURE__ */
|
|
384
|
+
/* @__PURE__ */ p(A, {
|
|
379
385
|
className: "text-right text-text-secondary",
|
|
380
386
|
children: ie(e.value)
|
|
381
387
|
})
|
|
382
388
|
] }, e.label)) })] })]
|
|
383
|
-
}) })] }), /* @__PURE__ */
|
|
389
|
+
}) })] }), /* @__PURE__ */ m(g, { children: [/* @__PURE__ */ m(y, { children: [/* @__PURE__ */ m(b, {
|
|
384
390
|
className: "flex items-center gap-2",
|
|
385
|
-
children: [/* @__PURE__ */ f
|
|
391
|
+
children: [/* @__PURE__ */ p(f, {
|
|
386
392
|
className: "size-5",
|
|
387
393
|
"aria-hidden": "true"
|
|
388
394
|
}), "Net Worth Composition"]
|
|
389
|
-
}), /* @__PURE__ */
|
|
390
|
-
icon: /* @__PURE__ */ f
|
|
395
|
+
}), /* @__PURE__ */ p(v, { children: "Invested value versus liquid cash." })] }), /* @__PURE__ */ p(_, { children: Ae.length === 0 ? /* @__PURE__ */ p(o, {
|
|
396
|
+
icon: /* @__PURE__ */ p(f, {
|
|
391
397
|
className: "size-6",
|
|
392
398
|
"aria-hidden": "true"
|
|
393
399
|
}),
|
|
394
400
|
title: "No balances yet",
|
|
395
401
|
description: "Add accounts with balances or holdings to see your composition."
|
|
396
|
-
}) : /* @__PURE__ */
|
|
402
|
+
}) : /* @__PURE__ */ p(a, { data: Ae }) })] })]
|
|
397
403
|
}),
|
|
398
|
-
/* @__PURE__ */
|
|
404
|
+
/* @__PURE__ */ m(P, {
|
|
399
405
|
value: "cashflow",
|
|
400
406
|
className: "space-y-4",
|
|
401
|
-
children: [/* @__PURE__ */
|
|
407
|
+
children: [/* @__PURE__ */ m(g, { children: [/* @__PURE__ */ m(y, { children: [/* @__PURE__ */ m(b, {
|
|
402
408
|
className: "flex items-center gap-2",
|
|
403
|
-
children: [/* @__PURE__ */
|
|
409
|
+
children: [/* @__PURE__ */ p(u, {
|
|
404
410
|
className: "size-5",
|
|
405
411
|
"aria-hidden": "true"
|
|
406
412
|
}), "Inflows vs Outflows"]
|
|
407
|
-
}), /* @__PURE__ */
|
|
408
|
-
|
|
413
|
+
}), /* @__PURE__ */ m(v, { children: ["Monthly cash flow aggregated from your recorded transactions.", J.length > 0 ? /* @__PURE__ */ m("span", {
|
|
414
|
+
className: "mt-0.5 block text-xs text-text-secondary",
|
|
415
|
+
children: [
|
|
416
|
+
"Based on ",
|
|
417
|
+
J.length.toLocaleString(),
|
|
418
|
+
" ",
|
|
419
|
+
J.length === 1 ? "transaction" : "transactions",
|
|
420
|
+
"."
|
|
421
|
+
]
|
|
422
|
+
}) : null] })] }), /* @__PURE__ */ p(_, { children: L.isLoading ? /* @__PURE__ */ p(s, { rows: 4 }) : L.isError ? /* @__PURE__ */ p(ee, { onRetry: () => L.refetch() }) : Y.length === 0 ? /* @__PURE__ */ p(o, {
|
|
423
|
+
icon: /* @__PURE__ */ p(u, {
|
|
409
424
|
className: "size-6",
|
|
410
425
|
"aria-hidden": "true"
|
|
411
426
|
}),
|
|
412
427
|
title: "No cash flow to analyze yet",
|
|
413
428
|
description: "Record deposits, withdrawals, or trades to build a cash-flow history.",
|
|
414
|
-
action: /* @__PURE__ */
|
|
429
|
+
action: /* @__PURE__ */ m(h, {
|
|
415
430
|
size: "sm",
|
|
416
431
|
onClick: () => U(!0),
|
|
417
|
-
|
|
418
|
-
children: [/* @__PURE__ */ f(le, {
|
|
432
|
+
children: [/* @__PURE__ */ p(le, {
|
|
419
433
|
className: "mr-1 size-4",
|
|
420
434
|
"aria-hidden": "true"
|
|
421
435
|
}), "Record Transaction"]
|
|
422
436
|
})
|
|
423
|
-
}) : /* @__PURE__ */
|
|
437
|
+
}) : /* @__PURE__ */ m("div", {
|
|
424
438
|
className: "space-y-4",
|
|
425
|
-
children: [Y.map((e) => /* @__PURE__ */
|
|
439
|
+
children: [Y.map((e) => /* @__PURE__ */ m("div", {
|
|
426
440
|
className: "space-y-1.5",
|
|
427
441
|
children: [
|
|
428
|
-
/* @__PURE__ */
|
|
442
|
+
/* @__PURE__ */ m("div", {
|
|
429
443
|
className: "flex items-center justify-between text-xs",
|
|
430
|
-
children: [/* @__PURE__ */
|
|
444
|
+
children: [/* @__PURE__ */ p("span", {
|
|
431
445
|
className: "font-medium text-text-primary",
|
|
432
446
|
children: e.label
|
|
433
|
-
}), /* @__PURE__ */
|
|
447
|
+
}), /* @__PURE__ */ m("span", {
|
|
434
448
|
className: "flex gap-3",
|
|
435
|
-
children: [/* @__PURE__ */
|
|
449
|
+
children: [/* @__PURE__ */ m("span", {
|
|
436
450
|
className: "text-status-success-text",
|
|
437
|
-
children: [/* @__PURE__ */
|
|
451
|
+
children: [/* @__PURE__ */ p(se, {
|
|
438
452
|
className: "mr-0.5 inline size-3",
|
|
439
453
|
"aria-hidden": "true"
|
|
440
454
|
}), c(e.inflow, q)]
|
|
441
|
-
}), /* @__PURE__ */
|
|
455
|
+
}), /* @__PURE__ */ m("span", {
|
|
442
456
|
className: "text-status-error-text",
|
|
443
|
-
children: [/* @__PURE__ */
|
|
457
|
+
children: [/* @__PURE__ */ p(oe, {
|
|
444
458
|
className: "mr-0.5 inline size-3",
|
|
445
459
|
"aria-hidden": "true"
|
|
446
460
|
}), c(e.outflow, q)]
|
|
447
461
|
})]
|
|
448
462
|
})]
|
|
449
463
|
}),
|
|
450
|
-
/* @__PURE__ */
|
|
464
|
+
/* @__PURE__ */ p("div", {
|
|
451
465
|
className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
|
|
452
466
|
role: "progressbar",
|
|
453
467
|
"aria-label": `${e.label} inflow`,
|
|
454
468
|
"aria-valuenow": Math.round(e.inflow / Z * 100),
|
|
455
469
|
"aria-valuemin": 0,
|
|
456
470
|
"aria-valuemax": 100,
|
|
457
|
-
children: /* @__PURE__ */
|
|
471
|
+
children: /* @__PURE__ */ p("div", {
|
|
458
472
|
className: "h-full rounded-full bg-status-success-bg motion-safe:transition-[width] motion-safe:duration-200",
|
|
459
473
|
style: { width: `${e.inflow / Z * 100}%` }
|
|
460
474
|
})
|
|
461
475
|
}),
|
|
462
|
-
/* @__PURE__ */
|
|
476
|
+
/* @__PURE__ */ p("div", {
|
|
463
477
|
className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
|
|
464
478
|
role: "progressbar",
|
|
465
479
|
"aria-label": `${e.label} outflow`,
|
|
466
480
|
"aria-valuenow": Math.round(e.outflow / Z * 100),
|
|
467
481
|
"aria-valuemin": 0,
|
|
468
482
|
"aria-valuemax": 100,
|
|
469
|
-
children: /* @__PURE__ */
|
|
483
|
+
children: /* @__PURE__ */ p("div", {
|
|
470
484
|
className: "h-full rounded-full bg-status-error-bg motion-safe:transition-[width] motion-safe:duration-200",
|
|
471
485
|
style: { width: `${e.outflow / Z * 100}%` }
|
|
472
486
|
})
|
|
473
487
|
})
|
|
474
488
|
]
|
|
475
|
-
}, e.key)), /* @__PURE__ */
|
|
489
|
+
}, e.key)), /* @__PURE__ */ m("div", {
|
|
476
490
|
className: "flex flex-wrap gap-4 pt-1 text-xs text-text-secondary",
|
|
477
|
-
children: [/* @__PURE__ */
|
|
491
|
+
children: [/* @__PURE__ */ m("span", {
|
|
478
492
|
className: "inline-flex items-center gap-1.5",
|
|
479
|
-
children: [/* @__PURE__ */
|
|
480
|
-
}), /* @__PURE__ */
|
|
493
|
+
children: [/* @__PURE__ */ p("span", { className: "inline-block size-2.5 rounded-full bg-status-success-bg" }), "Inflow"]
|
|
494
|
+
}), /* @__PURE__ */ m("span", {
|
|
481
495
|
className: "inline-flex items-center gap-1.5",
|
|
482
|
-
children: [/* @__PURE__ */
|
|
496
|
+
children: [/* @__PURE__ */ p("span", { className: "inline-block size-2.5 rounded-full bg-status-error-bg" }), "Outflow"]
|
|
483
497
|
})]
|
|
484
498
|
})]
|
|
485
|
-
}) })] }), je.length > 0 ? /* @__PURE__ */
|
|
486
|
-
/* @__PURE__ */
|
|
487
|
-
/* @__PURE__ */
|
|
488
|
-
/* @__PURE__ */
|
|
499
|
+
}) })] }), je.length > 0 ? /* @__PURE__ */ m(g, { children: [/* @__PURE__ */ m(y, { children: [/* @__PURE__ */ p(b, { children: "By Transaction Type" }), /* @__PURE__ */ p(v, { children: "Total value moved per transaction type." })] }), /* @__PURE__ */ p(_, { children: /* @__PURE__ */ m(O, { children: [/* @__PURE__ */ p(M, { children: /* @__PURE__ */ m(N, { children: [
|
|
500
|
+
/* @__PURE__ */ p(j, { children: "Type" }),
|
|
501
|
+
/* @__PURE__ */ p(j, { children: "Direction" }),
|
|
502
|
+
/* @__PURE__ */ p(j, {
|
|
489
503
|
className: "text-right",
|
|
490
504
|
children: "Total"
|
|
491
505
|
})
|
|
492
|
-
] }) }), /* @__PURE__ */
|
|
493
|
-
/* @__PURE__ */
|
|
506
|
+
] }) }), /* @__PURE__ */ p(k, { children: je.map((e) => /* @__PURE__ */ m(N, { children: [
|
|
507
|
+
/* @__PURE__ */ p(A, {
|
|
494
508
|
className: "font-medium text-text-primary",
|
|
495
|
-
children:
|
|
509
|
+
children: I(e.type)
|
|
496
510
|
}),
|
|
497
|
-
/* @__PURE__ */
|
|
511
|
+
/* @__PURE__ */ p(A, { children: /* @__PURE__ */ p(ue, {
|
|
498
512
|
variant: e.dir === "in" ? "default" : e.dir === "out" ? "destructive" : "secondary",
|
|
499
513
|
children: e.dir === "in" ? "Inflow" : e.dir === "out" ? "Outflow" : "Neutral"
|
|
500
514
|
}) }),
|
|
501
|
-
/* @__PURE__ */
|
|
515
|
+
/* @__PURE__ */ p(A, {
|
|
502
516
|
className: "text-right font-medium",
|
|
503
517
|
children: c(e.total, q)
|
|
504
518
|
})
|
|
505
519
|
] }, e.type)) })] }) })] }) : null]
|
|
506
520
|
}),
|
|
507
|
-
/* @__PURE__ */
|
|
521
|
+
/* @__PURE__ */ p(P, {
|
|
508
522
|
value: "performance",
|
|
509
523
|
className: "space-y-4",
|
|
510
|
-
children: /* @__PURE__ */
|
|
524
|
+
children: /* @__PURE__ */ m(g, { children: [/* @__PURE__ */ m(y, {
|
|
511
525
|
className: "flex flex-col gap-3 md:flex-row md:items-start md:justify-between",
|
|
512
|
-
children: [/* @__PURE__ */
|
|
526
|
+
children: [/* @__PURE__ */ m("div", { children: [/* @__PURE__ */ p(b, { children: "Holdings Performance" }), /* @__PURE__ */ p(v, { children: "Unrealized gain or loss — market value versus cost basis." })] }), B.length > 0 ? /* @__PURE__ */ m("div", {
|
|
513
527
|
className: "w-full md:w-56",
|
|
514
|
-
children: [/* @__PURE__ */
|
|
528
|
+
children: [/* @__PURE__ */ p(S, {
|
|
515
529
|
htmlFor: "perf-account",
|
|
516
530
|
className: "sr-only",
|
|
517
531
|
children: "Account"
|
|
518
|
-
}), /* @__PURE__ */
|
|
532
|
+
}), /* @__PURE__ */ m(C, {
|
|
519
533
|
value: De ?? "",
|
|
520
|
-
onValueChange: (e) =>
|
|
521
|
-
children: [/* @__PURE__ */
|
|
534
|
+
onValueChange: (e) => xe(e),
|
|
535
|
+
children: [/* @__PURE__ */ p(E, {
|
|
522
536
|
id: "perf-account",
|
|
523
|
-
children: /* @__PURE__ */
|
|
524
|
-
}), /* @__PURE__ */
|
|
537
|
+
children: /* @__PURE__ */ p(D, { placeholder: "Select account" })
|
|
538
|
+
}), /* @__PURE__ */ p(w, { children: B.map((e) => /* @__PURE__ */ p(T, {
|
|
525
539
|
value: e.id,
|
|
526
540
|
children: e.name
|
|
527
541
|
}, e.id)) })]
|
|
528
542
|
})]
|
|
529
543
|
}) : null]
|
|
530
|
-
}), /* @__PURE__ */
|
|
531
|
-
icon: /* @__PURE__ */ f
|
|
544
|
+
}), /* @__PURE__ */ p(_, { children: R.isLoading ? /* @__PURE__ */ p(s, { rows: 3 }) : B.length === 0 ? /* @__PURE__ */ p(o, {
|
|
545
|
+
icon: /* @__PURE__ */ p(f, {
|
|
532
546
|
className: "size-6",
|
|
533
547
|
"aria-hidden": "true"
|
|
534
548
|
}),
|
|
535
549
|
title: "No accounts yet",
|
|
536
550
|
description: "Create an account and add holdings to analyze performance."
|
|
537
|
-
}) : V.isLoading ? /* @__PURE__ */
|
|
538
|
-
icon: /* @__PURE__ */
|
|
551
|
+
}) : V.isLoading ? /* @__PURE__ */ p(s, { rows: 3 }) : V.isError ? /* @__PURE__ */ p(ee, { onRetry: () => V.refetch() }) : Q.rows.length === 0 ? /* @__PURE__ */ p(o, {
|
|
552
|
+
icon: /* @__PURE__ */ p(u, {
|
|
539
553
|
className: "size-6",
|
|
540
554
|
"aria-hidden": "true"
|
|
541
555
|
}),
|
|
542
556
|
title: "No holdings in this account",
|
|
543
557
|
description: "Add holdings to this account to see unrealized gains and losses."
|
|
544
|
-
}) : /* @__PURE__ */
|
|
558
|
+
}) : /* @__PURE__ */ m("div", {
|
|
545
559
|
className: "space-y-4",
|
|
546
|
-
children: [/* @__PURE__ */
|
|
560
|
+
children: [/* @__PURE__ */ m("div", {
|
|
547
561
|
className: "grid gap-4 sm:grid-cols-3",
|
|
548
562
|
children: [
|
|
549
|
-
/* @__PURE__ */
|
|
563
|
+
/* @__PURE__ */ m("div", {
|
|
550
564
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
|
|
551
|
-
children: [/* @__PURE__ */
|
|
565
|
+
children: [/* @__PURE__ */ p("p", {
|
|
552
566
|
className: "text-xs text-text-secondary",
|
|
553
567
|
children: "Total unrealized"
|
|
554
|
-
}), /* @__PURE__ */
|
|
568
|
+
}), /* @__PURE__ */ p("p", {
|
|
555
569
|
className: "mt-1 text-xl font-semibold",
|
|
556
|
-
children: /* @__PURE__ */
|
|
570
|
+
children: /* @__PURE__ */ p(we, {
|
|
557
571
|
value: Q.totalUnrealized,
|
|
558
572
|
currency: q
|
|
559
573
|
})
|
|
560
574
|
})]
|
|
561
575
|
}),
|
|
562
|
-
/* @__PURE__ */
|
|
576
|
+
/* @__PURE__ */ m("div", {
|
|
563
577
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
|
|
564
|
-
children: [/* @__PURE__ */
|
|
578
|
+
children: [/* @__PURE__ */ p("p", {
|
|
565
579
|
className: "text-xs text-text-secondary",
|
|
566
580
|
children: "Cost basis"
|
|
567
|
-
}), /* @__PURE__ */
|
|
581
|
+
}), /* @__PURE__ */ p("p", {
|
|
568
582
|
className: "mt-1 text-xl font-semibold text-text-primary",
|
|
569
583
|
children: c(Q.totalCost, q)
|
|
570
584
|
})]
|
|
571
585
|
}),
|
|
572
|
-
/* @__PURE__ */
|
|
586
|
+
/* @__PURE__ */ m("div", {
|
|
573
587
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-4",
|
|
574
|
-
children: [/* @__PURE__ */
|
|
588
|
+
children: [/* @__PURE__ */ p("p", {
|
|
575
589
|
className: "text-xs text-text-secondary",
|
|
576
590
|
children: "Return on cost"
|
|
577
|
-
}), /* @__PURE__ */
|
|
591
|
+
}), /* @__PURE__ */ p("p", {
|
|
578
592
|
className: "mt-1 text-xl font-semibold text-text-primary",
|
|
579
593
|
children: ie(Q.totalCost > 0 ? Q.totalUnrealized / Q.totalCost * 100 : null)
|
|
580
594
|
})]
|
|
581
595
|
})
|
|
582
596
|
]
|
|
583
|
-
}), /* @__PURE__ */
|
|
584
|
-
/* @__PURE__ */
|
|
585
|
-
/* @__PURE__ */
|
|
597
|
+
}), /* @__PURE__ */ m(O, { children: [/* @__PURE__ */ p(M, { children: /* @__PURE__ */ m(N, { children: [
|
|
598
|
+
/* @__PURE__ */ p(j, { children: "Holding" }),
|
|
599
|
+
/* @__PURE__ */ p(j, {
|
|
586
600
|
className: "text-right",
|
|
587
601
|
children: "Market value"
|
|
588
602
|
}),
|
|
589
|
-
/* @__PURE__ */
|
|
603
|
+
/* @__PURE__ */ p(j, {
|
|
590
604
|
className: "text-right",
|
|
591
605
|
children: "Cost basis"
|
|
592
606
|
}),
|
|
593
|
-
/* @__PURE__ */
|
|
607
|
+
/* @__PURE__ */ p(j, {
|
|
594
608
|
className: "text-right",
|
|
595
609
|
children: "Unrealized"
|
|
596
610
|
})
|
|
597
|
-
] }) }), /* @__PURE__ */
|
|
598
|
-
/* @__PURE__ */
|
|
611
|
+
] }) }), /* @__PURE__ */ p(k, { children: Q.rows.map(({ holding: e, unrealized: t }) => /* @__PURE__ */ m(N, { children: [
|
|
612
|
+
/* @__PURE__ */ m(A, { children: [/* @__PURE__ */ p("div", {
|
|
599
613
|
className: "font-medium text-text-primary",
|
|
600
614
|
children: e.symbol
|
|
601
|
-
}), /* @__PURE__ */
|
|
615
|
+
}), /* @__PURE__ */ m("div", {
|
|
602
616
|
className: "text-xs text-text-secondary",
|
|
603
617
|
children: [
|
|
604
|
-
e.name ??
|
|
618
|
+
e.name ?? I(e.assetClass),
|
|
605
619
|
" · as of",
|
|
606
620
|
" ",
|
|
607
621
|
re(e.asOf)
|
|
608
622
|
]
|
|
609
623
|
})] }),
|
|
610
|
-
/* @__PURE__ */
|
|
624
|
+
/* @__PURE__ */ p(A, {
|
|
611
625
|
className: "text-right",
|
|
612
626
|
children: c(e.marketValue, e.currency)
|
|
613
627
|
}),
|
|
614
|
-
/* @__PURE__ */
|
|
628
|
+
/* @__PURE__ */ p(A, {
|
|
615
629
|
className: "text-right text-text-secondary",
|
|
616
630
|
children: c(e.costBasis, e.currency)
|
|
617
631
|
}),
|
|
618
|
-
/* @__PURE__ */
|
|
632
|
+
/* @__PURE__ */ p(A, {
|
|
619
633
|
className: "text-right",
|
|
620
|
-
children: /* @__PURE__ */
|
|
634
|
+
children: /* @__PURE__ */ p(we, {
|
|
621
635
|
value: t,
|
|
622
636
|
currency: e.currency
|
|
623
637
|
})
|