@burdenoff/microfe-brainyrich 2026.706.4 → 2026.713.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.d.ts +5 -0
- package/dist/brainyrich/BrainyRichRoot.d.ts.map +1 -0
- package/dist/brainyrich/BrainyRichRoutes.d.ts +2 -0
- package/dist/brainyrich/BrainyRichRoutes.d.ts.map +1 -0
- package/dist/brainyrich/BrainyRichRoutes.js +27 -15
- package/dist/brainyrich/BrainyRichRoutes.js.map +1 -1
- package/dist/brainyrich/components/ActorName.d.ts +26 -0
- package/dist/brainyrich/components/ActorName.d.ts.map +1 -0
- package/dist/brainyrich/components/ConfirmDialog.d.ts +20 -0
- package/dist/brainyrich/components/ConfirmDialog.d.ts.map +1 -0
- package/dist/brainyrich/components/LoadMore.d.ts +21 -0
- package/dist/brainyrich/components/LoadMore.d.ts.map +1 -0
- package/dist/brainyrich/components/index.d.ts +11 -0
- package/dist/brainyrich/components/index.d.ts.map +1 -0
- package/dist/brainyrich/components/notify.d.ts +33 -0
- package/dist/brainyrich/components/notify.d.ts.map +1 -0
- package/dist/brainyrich/components/pickers.d.ts +63 -0
- package/dist/brainyrich/components/pickers.d.ts.map +1 -0
- package/dist/brainyrich/components/reuse/CommentThread.d.ts +35 -0
- package/dist/brainyrich/components/reuse/CommentThread.d.ts.map +1 -0
- package/dist/brainyrich/components/reuse/DocumentsPanel.d.ts +33 -0
- package/dist/brainyrich/components/reuse/DocumentsPanel.d.ts.map +1 -0
- package/dist/brainyrich/components/reuse/TagField.d.ts +34 -0
- package/dist/brainyrich/components/reuse/TagField.d.ts.map +1 -0
- package/dist/brainyrich/components/reuse/transport.d.ts +20 -0
- package/dist/brainyrich/components/reuse/transport.d.ts.map +1 -0
- package/dist/brainyrich/components/viz.d.ts +129 -0
- package/dist/brainyrich/components/viz.d.ts.map +1 -0
- package/dist/brainyrich/components/viz.js.map +1 -1
- package/dist/brainyrich/hooks/useBrainyRichAnalytics.d.ts +17 -0
- package/dist/brainyrich/hooks/useBrainyRichAnalytics.d.ts.map +1 -0
- package/dist/brainyrich/hooks/useBrainyRichAnalytics.js +24 -0
- package/dist/brainyrich/hooks/useBrainyRichAnalytics.js.map +1 -0
- package/dist/brainyrich/hooks/useBrainyRichApi.d.ts +2125 -0
- package/dist/brainyrich/hooks/useBrainyRichApi.d.ts.map +1 -0
- package/dist/brainyrich/hooks/useBrainyRichApi.js +1 -1
- package/dist/brainyrich/hooks/useBrainyRichApi.js.map +1 -1
- package/dist/brainyrich/index.d.ts +6 -0
- package/dist/brainyrich/index.d.ts.map +1 -0
- package/dist/brainyrich/index.js +1 -0
- package/dist/brainyrich/pages/AccountsPage.d.ts +2 -0
- package/dist/brainyrich/pages/AccountsPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/AccountsPage.js +608 -593
- package/dist/brainyrich/pages/AccountsPage.js.map +1 -1
- package/dist/brainyrich/pages/AiAssistantPage.d.ts +2 -0
- package/dist/brainyrich/pages/AiAssistantPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/AnalyticsPage.d.ts +2 -0
- package/dist/brainyrich/pages/AnalyticsPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/DashboardPage.d.ts +2 -0
- package/dist/brainyrich/pages/DashboardPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/DashboardPage.js +264 -256
- package/dist/brainyrich/pages/DashboardPage.js.map +1 -1
- package/dist/brainyrich/pages/FamilyPage.d.ts +2 -0
- package/dist/brainyrich/pages/FamilyPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/FamilyPage.js +467 -446
- package/dist/brainyrich/pages/FamilyPage.js.map +1 -1
- package/dist/brainyrich/pages/GoalsPage.d.ts +2 -0
- package/dist/brainyrich/pages/GoalsPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/GoalsPage.js +553 -531
- package/dist/brainyrich/pages/GoalsPage.js.map +1 -1
- package/dist/brainyrich/pages/InvestmentsPage.d.ts +2 -0
- package/dist/brainyrich/pages/InvestmentsPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/PortfoliosPage.d.ts +2 -0
- package/dist/brainyrich/pages/PortfoliosPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/PortfoliosPage.js +378 -354
- package/dist/brainyrich/pages/PortfoliosPage.js.map +1 -1
- package/dist/brainyrich/pages/ReportsPage.d.ts +2 -0
- package/dist/brainyrich/pages/ReportsPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/RiskPage.d.ts +2 -0
- package/dist/brainyrich/pages/RiskPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/TaxPage.d.ts +2 -0
- package/dist/brainyrich/pages/TaxPage.d.ts.map +1 -0
- package/dist/brainyrich/pages/_shared.d.ts +77 -0
- package/dist/brainyrich/pages/_shared.d.ts.map +1 -0
- package/dist/brainyrich/providers/BrainyRichProvider.d.ts +6 -0
- package/dist/brainyrich/providers/BrainyRichProvider.d.ts.map +1 -0
- package/dist/brainyrich/services/createSandboxAssistantTransport.d.ts +24 -0
- package/dist/brainyrich/services/createSandboxAssistantTransport.d.ts.map +1 -0
- package/dist/brainyrich/services/createSandboxAssistantTransport.js +14 -0
- package/dist/brainyrich/services/createSandboxAssistantTransport.js.map +1 -0
- package/dist/brainyrich/types/bra.d.ts +394 -0
- package/dist/brainyrich/types/bra.d.ts.map +1 -0
- package/dist/brainyrich/types/index.d.ts +39 -0
- package/dist/brainyrich/types/index.d.ts.map +1 -0
- package/dist/brainyrich/utils/cn.d.ts +4 -0
- package/dist/brainyrich/utils/cn.d.ts.map +1 -0
- package/dist/brainyrich/utils/i18n.d.ts +6 -0
- package/dist/brainyrich/utils/i18n.d.ts.map +1 -0
- package/dist/brainyrich/utils/nativeControls.d.ts +12 -0
- package/dist/brainyrich/utils/nativeControls.d.ts.map +1 -0
- package/dist/brainyrich/utils/nativeControls.js +12 -0
- package/dist/brainyrich/utils/nativeControls.js.map +1 -0
- package/dist/brainyrich/utils/navigation.d.ts +2 -0
- package/dist/brainyrich/utils/navigation.d.ts.map +1 -0
- package/dist/brainyrich/utils/pageContext.d.ts +30 -0
- package/dist/brainyrich/utils/pageContext.d.ts.map +1 -0
- package/dist/brainyrich/utils/pageContext.js +46 -0
- package/dist/brainyrich/utils/pageContext.js.map +1 -0
- package/dist/dev/main.d.ts +2 -0
- package/dist/dev/main.d.ts.map +1 -0
- package/dist/generated/global-operations.d.ts +2 -0
- package/dist/generated/global-operations.d.ts.map +1 -0
- package/dist/generated/global-types.d.ts +18199 -0
- package/dist/generated/global-types.d.ts.map +1 -0
- package/dist/generated/wspace-operations.d.ts +2 -0
- package/dist/generated/wspace-operations.d.ts.map +1 -0
- package/dist/generated/wspace-types.d.ts +43046 -0
- package/dist/generated/wspace-types.d.ts.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2 -1
- package/package.json +6 -2
|
@@ -6,39 +6,41 @@ import { ActorName as l } from "../components/ActorName.js";
|
|
|
6
6
|
import { DonutChart as u, FadeIn as d, GlassCard as f, StatTile as p } from "../components/viz.js";
|
|
7
7
|
import "../components/index.js";
|
|
8
8
|
import { EmptyState as m, ErrorState as ne, LoadingState as re, SectionShell as ie, formatCompact as h, formatDate as g, formatMoney as _, statusBadgeVariant as v } from "./_shared.js";
|
|
9
|
+
import { hapticSuccess as y, showToast as b } from "../utils/nativeControls.js";
|
|
10
|
+
import { useTrackBrainyRichPageView as x } from "../hooks/useBrainyRichAnalytics.js";
|
|
9
11
|
import { DocumentsPanel as ae } from "../components/reuse/DocumentsPanel.js";
|
|
10
|
-
import { TagField as
|
|
11
|
-
import { CommentThread as
|
|
12
|
-
import { useMemo as oe, useState as
|
|
13
|
-
import { Archive as
|
|
14
|
-
import { useI18n as
|
|
15
|
-
import { jsx as
|
|
16
|
-
import { Badge as
|
|
12
|
+
import { TagField as S } from "../components/reuse/TagField.js";
|
|
13
|
+
import { CommentThread as C } from "../components/reuse/CommentThread.js";
|
|
14
|
+
import { useMemo as oe, useState as w } from "react";
|
|
15
|
+
import { Archive as T, Briefcase as E, Building2 as se, Eye as ce, Mail as le, MoreHorizontal as ue, Pencil as de, Target as D, TrendingUp as O, UserCircle2 as fe, Users as k, Wallet as A } from "lucide-react";
|
|
16
|
+
import { useI18n as pe } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
|
|
17
|
+
import { jsx as j, jsxs as M } from "react/jsx-runtime";
|
|
18
|
+
import { Badge as N, Button as P, Card as F, CardContent as I, Dialog as L, DialogClose as R, DialogContent as me, DialogDescription as z, DialogFooter as B, DialogHeader as V, DialogTitle as he, DropdownMenu as ge, DropdownMenuContent as _e, DropdownMenuItem as H, DropdownMenuSeparator as ve, DropdownMenuTrigger as ye, Input as U, Label as W, Select as G, SelectContent as K, SelectItem as q, SelectTrigger as J, SelectValue as Y, Separator as be, Sheet as xe, SheetContent as Se, SheetDescription as Ce, SheetHeader as we, SheetTitle as Te, Table as Ee, TableBody as De, TableCell as X, TableHead as Z, TableHeader as Oe, TableRow as ke, Tabs as Ae, TabsContent as Q, TabsList as je, TabsTrigger as $, Textarea as Me } from "@burdenoff/fe-libs/ui";
|
|
17
19
|
//#region src/brainyrich/pages/FamilyPage.tsx
|
|
18
|
-
var
|
|
20
|
+
var Ne = [
|
|
19
21
|
"PROSPECT",
|
|
20
22
|
"ONBOARDING",
|
|
21
23
|
"ACTIVE",
|
|
22
24
|
"INACTIVE"
|
|
23
|
-
],
|
|
25
|
+
], Pe = [
|
|
24
26
|
"CONSERVATIVE",
|
|
25
27
|
"MODERATE",
|
|
26
28
|
"BALANCED",
|
|
27
29
|
"GROWTH",
|
|
28
30
|
"AGGRESSIVE"
|
|
29
|
-
],
|
|
31
|
+
], Fe = [
|
|
30
32
|
"USD",
|
|
31
33
|
"EUR",
|
|
32
34
|
"GBP",
|
|
33
35
|
"INR",
|
|
34
36
|
"AED",
|
|
35
37
|
"SGD"
|
|
36
|
-
],
|
|
38
|
+
], Ie = {
|
|
37
39
|
ACTIVE: "brand",
|
|
38
40
|
ONBOARDING: "info",
|
|
39
41
|
PROSPECT: "warning",
|
|
40
42
|
INACTIVE: "neutral"
|
|
41
|
-
},
|
|
43
|
+
}, Le = {
|
|
42
44
|
name: "",
|
|
43
45
|
status: "PROSPECT",
|
|
44
46
|
riskProfile: "BALANCED",
|
|
@@ -49,21 +51,23 @@ var je = [
|
|
|
49
51
|
notes: "",
|
|
50
52
|
tags: ""
|
|
51
53
|
};
|
|
52
|
-
function
|
|
54
|
+
function Re(e) {
|
|
53
55
|
return e.split(",").map((e) => e.trim()).filter(Boolean);
|
|
54
56
|
}
|
|
55
|
-
function
|
|
57
|
+
function ze(e) {
|
|
56
58
|
let t = (e.holdings ?? []).reduce((e, t) => e + (Number.isFinite(t.marketValue) ? t.marketValue : 0), 0);
|
|
57
59
|
return (Number.isFinite(e.cashBalance) ? e.cashBalance : 0) + t;
|
|
58
60
|
}
|
|
59
|
-
function
|
|
60
|
-
let { t } =
|
|
61
|
+
function Be() {
|
|
62
|
+
let { t } = pe(), i = (n, r, i) => e(t, n, r, i);
|
|
63
|
+
x("brainyrich.family.viewed");
|
|
64
|
+
let { items: a, hasMore: s, loadMore: u, isLoading: f, isFetchingNextPage: h, isError: g, refetch: ae } = o(), S = r(), C = c(), E = n(), [se, D] = w(!1), [O, A] = w(null), [L, R] = w(Le), [me, z] = w(void 0), [B, V] = w(null), he = (e, t) => R((n) => ({
|
|
61
65
|
...n,
|
|
62
66
|
[e]: t
|
|
63
|
-
})),
|
|
64
|
-
|
|
65
|
-
},
|
|
66
|
-
|
|
67
|
+
})), U = () => {
|
|
68
|
+
A(null), R(Le), D(!0);
|
|
69
|
+
}, W = (e) => {
|
|
70
|
+
A(e), R({
|
|
67
71
|
name: e.name,
|
|
68
72
|
status: e.status,
|
|
69
73
|
riskProfile: e.riskProfile,
|
|
@@ -73,8 +77,8 @@ function Re() {
|
|
|
73
77
|
primaryContactEmail: e.primaryContactEmail ?? "",
|
|
74
78
|
notes: e.notes ?? "",
|
|
75
79
|
tags: e.tags.join(", ")
|
|
76
|
-
}),
|
|
77
|
-
},
|
|
80
|
+
}), D(!0);
|
|
81
|
+
}, G = oe(() => {
|
|
78
82
|
let e = a[0]?.currency ?? "USD", t = a.length, n = a.filter((e) => e.status === "ACTIVE").length, r = a.filter((e) => e.status === "PROSPECT").length, i = a.filter((e) => e.status === "ONBOARDING").length, o = a.reduce((e, t) => e + (Number.isFinite(t.aum) ? t.aum : 0), 0), s = /* @__PURE__ */ new Map();
|
|
79
83
|
for (let e of a) {
|
|
80
84
|
let t = e.advisorId?.trim() || "";
|
|
@@ -94,382 +98,392 @@ function Re() {
|
|
|
94
98
|
advisors: c,
|
|
95
99
|
advisorCount: c.filter((e) => e.advisorId).length,
|
|
96
100
|
advisorMax: c.reduce((e, t) => Math.max(e, t.value), 0),
|
|
97
|
-
statusMix:
|
|
101
|
+
statusMix: Ne.map((e) => ({
|
|
98
102
|
label: e.charAt(0) + e.slice(1).toLowerCase(),
|
|
99
103
|
value: a.filter((t) => t.status === e).length,
|
|
100
|
-
tone:
|
|
104
|
+
tone: Ie[e]
|
|
101
105
|
})).filter((e) => e.value > 0)
|
|
102
106
|
};
|
|
103
|
-
}, [a]),
|
|
104
|
-
if (
|
|
107
|
+
}, [a]), K = S.isPending || C.isPending, q = L.name.trim().length > 0 && !K, J = () => {
|
|
108
|
+
if (q) if (O) {
|
|
105
109
|
let e = {
|
|
106
|
-
name:
|
|
107
|
-
status:
|
|
108
|
-
riskProfile:
|
|
109
|
-
currency:
|
|
110
|
-
primaryContactName:
|
|
111
|
-
primaryContactEmail:
|
|
112
|
-
notes:
|
|
113
|
-
tags:
|
|
110
|
+
name: L.name.trim(),
|
|
111
|
+
status: L.status,
|
|
112
|
+
riskProfile: L.riskProfile,
|
|
113
|
+
currency: L.currency,
|
|
114
|
+
primaryContactName: L.primaryContactName.trim() || null,
|
|
115
|
+
primaryContactEmail: L.primaryContactEmail.trim() || null,
|
|
116
|
+
notes: L.notes.trim() || null,
|
|
117
|
+
tags: Re(L.tags)
|
|
114
118
|
};
|
|
115
|
-
|
|
116
|
-
id:
|
|
119
|
+
C.mutate({
|
|
120
|
+
id: O.id,
|
|
117
121
|
input: e
|
|
118
|
-
}, { onSuccess: () =>
|
|
122
|
+
}, { onSuccess: () => {
|
|
123
|
+
y(), b(i("brainyrich.households.saved", "Household saved")), D(!1);
|
|
124
|
+
} });
|
|
119
125
|
} else {
|
|
120
126
|
let e = {
|
|
121
|
-
name:
|
|
122
|
-
status:
|
|
123
|
-
riskProfile:
|
|
124
|
-
currency:
|
|
125
|
-
primaryContactName:
|
|
126
|
-
primaryContactEmail:
|
|
127
|
-
notes:
|
|
128
|
-
tags:
|
|
127
|
+
name: L.name.trim(),
|
|
128
|
+
status: L.status,
|
|
129
|
+
riskProfile: L.riskProfile,
|
|
130
|
+
currency: L.currency,
|
|
131
|
+
primaryContactName: L.primaryContactName.trim() || null,
|
|
132
|
+
primaryContactEmail: L.primaryContactEmail.trim() || null,
|
|
133
|
+
notes: L.notes.trim() || null,
|
|
134
|
+
tags: Re(L.tags)
|
|
129
135
|
};
|
|
130
|
-
|
|
136
|
+
L.advisorId.trim() && (e.advisorId = L.advisorId.trim()), S.mutate(e, { onSuccess: () => {
|
|
137
|
+
y(), b(i("brainyrich.households.created", "Household created")), D(!1);
|
|
138
|
+
} });
|
|
131
139
|
}
|
|
132
|
-
},
|
|
133
|
-
return /* @__PURE__ */ j(
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
140
|
+
}, Y = !f && !g && a.length > 0;
|
|
141
|
+
return /* @__PURE__ */ j("div", {
|
|
142
|
+
"data-tour": "brainyrich-page-households",
|
|
143
|
+
className: "contents",
|
|
144
|
+
children: /* @__PURE__ */ M(ie, {
|
|
145
|
+
title: i("brainyrich.households.title", "Households"),
|
|
146
|
+
description: i("brainyrich.households.description", "Client households and family units under advisement"),
|
|
147
|
+
badges: a.length ? [i("brainyrich.households.count", "{count} households", { count: a.length })] : [],
|
|
148
|
+
actionLabel: i("brainyrich.households.new", "New household"),
|
|
149
|
+
onAction: U,
|
|
150
|
+
children: [
|
|
151
|
+
Y ? /* @__PURE__ */ j(Ve, {
|
|
152
|
+
firm: G,
|
|
153
|
+
tr: i
|
|
154
|
+
}) : /* @__PURE__ */ M("div", {
|
|
155
|
+
className: "grid gap-4 md:grid-cols-2 xl:grid-cols-4",
|
|
156
|
+
children: [
|
|
157
|
+
/* @__PURE__ */ j(p, {
|
|
158
|
+
label: i("brainyrich.households.kpi.aum", "Total AUM"),
|
|
159
|
+
value: "—",
|
|
160
|
+
glow: !0
|
|
161
|
+
}),
|
|
162
|
+
/* @__PURE__ */ j(p, {
|
|
163
|
+
label: i("brainyrich.households.kpi.total", "Households"),
|
|
164
|
+
value: "—"
|
|
165
|
+
}),
|
|
166
|
+
/* @__PURE__ */ j(p, {
|
|
167
|
+
label: i("brainyrich.households.kpi.active", "Active"),
|
|
168
|
+
value: "—"
|
|
169
|
+
}),
|
|
170
|
+
/* @__PURE__ */ j(p, {
|
|
171
|
+
label: i("brainyrich.households.kpi.prospects", "Prospects"),
|
|
172
|
+
value: "—"
|
|
173
|
+
})
|
|
174
|
+
]
|
|
175
|
+
}),
|
|
176
|
+
f ? /* @__PURE__ */ j(re, { rows: 5 }) : g ? /* @__PURE__ */ j(ne, {
|
|
177
|
+
title: i("brainyrich.households.error.title", "Could not load households"),
|
|
178
|
+
onRetry: () => ae()
|
|
179
|
+
}) : a.length === 0 ? /* @__PURE__ */ j(m, {
|
|
180
|
+
icon: /* @__PURE__ */ j(k, {
|
|
181
|
+
className: "size-6",
|
|
182
|
+
"aria-hidden": "true"
|
|
158
183
|
}),
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
184
|
+
title: i("brainyrich.households.empty.title", "No households yet"),
|
|
185
|
+
description: i("brainyrich.households.empty.description", "Create your first client household to start organizing accounts, portfolios and goals."),
|
|
186
|
+
action: /* @__PURE__ */ j(P, {
|
|
187
|
+
size: "sm",
|
|
188
|
+
onClick: U,
|
|
189
|
+
children: i("brainyrich.households.new", "New household")
|
|
162
190
|
})
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
title: i("brainyrich.households.empty.title", "No households yet"),
|
|
174
|
-
description: i("brainyrich.households.empty.description", "Create your first client household to start organizing accounts, portfolios and goals."),
|
|
175
|
-
action: /* @__PURE__ */ A(N, {
|
|
176
|
-
size: "sm",
|
|
177
|
-
onClick: H,
|
|
178
|
-
children: i("brainyrich.households.new", "New household")
|
|
179
|
-
})
|
|
180
|
-
}) : /* @__PURE__ */ A(d, {
|
|
181
|
-
as: "section",
|
|
182
|
-
children: /* @__PURE__ */ A(P, {
|
|
183
|
-
className: "overflow-hidden",
|
|
184
|
-
children: /* @__PURE__ */ A(F, {
|
|
185
|
-
className: "p-0",
|
|
186
|
-
children: /* @__PURE__ */ A("div", {
|
|
187
|
-
className: "overflow-x-auto",
|
|
188
|
-
children: /* @__PURE__ */ j(we, { children: [/* @__PURE__ */ A(Ee, { children: /* @__PURE__ */ j(De, {
|
|
189
|
-
className: "hover:bg-transparent",
|
|
190
|
-
children: [
|
|
191
|
-
/* @__PURE__ */ A(X, { children: i("brainyrich.households.col.name", "Household") }),
|
|
192
|
-
/* @__PURE__ */ A(X, { children: i("brainyrich.households.col.status", "Status") }),
|
|
193
|
-
/* @__PURE__ */ A(X, {
|
|
194
|
-
className: "hidden md:table-cell",
|
|
195
|
-
children: i("brainyrich.households.col.risk", "Risk profile")
|
|
196
|
-
}),
|
|
197
|
-
/* @__PURE__ */ A(X, {
|
|
198
|
-
className: "hidden lg:table-cell",
|
|
199
|
-
children: i("brainyrich.households.col.contact", "Primary contact")
|
|
200
|
-
}),
|
|
201
|
-
/* @__PURE__ */ A(X, {
|
|
202
|
-
className: "hidden sm:table-cell",
|
|
203
|
-
children: i("brainyrich.households.col.advisor", "Advisor")
|
|
204
|
-
}),
|
|
205
|
-
/* @__PURE__ */ A(X, {
|
|
206
|
-
className: "text-right",
|
|
207
|
-
children: i("brainyrich.households.col.aum", "AUM")
|
|
208
|
-
}),
|
|
209
|
-
/* @__PURE__ */ A(X, {
|
|
210
|
-
className: "w-12 text-right",
|
|
211
|
-
children: /* @__PURE__ */ A("span", {
|
|
212
|
-
className: "sr-only",
|
|
213
|
-
children: i("brainyrich.households.col.actions", "Actions")
|
|
214
|
-
})
|
|
215
|
-
})
|
|
216
|
-
]
|
|
217
|
-
}) }), /* @__PURE__ */ A(Te, { children: a.map((e) => {
|
|
218
|
-
let t = W.aum > 0 ? Math.min(100, e.aum / W.aum * 100) : 0;
|
|
219
|
-
return /* @__PURE__ */ j(De, {
|
|
220
|
-
className: "group cursor-pointer transition-colors",
|
|
221
|
-
onClick: () => R(e.id),
|
|
191
|
+
}) : /* @__PURE__ */ j(d, {
|
|
192
|
+
as: "section",
|
|
193
|
+
children: /* @__PURE__ */ j(F, {
|
|
194
|
+
className: "overflow-hidden",
|
|
195
|
+
children: /* @__PURE__ */ j(I, {
|
|
196
|
+
className: "p-0",
|
|
197
|
+
children: /* @__PURE__ */ j("div", {
|
|
198
|
+
className: "overflow-x-auto",
|
|
199
|
+
children: /* @__PURE__ */ M(Ee, { children: [/* @__PURE__ */ j(Oe, { children: /* @__PURE__ */ M(ke, {
|
|
200
|
+
className: "hover:bg-transparent",
|
|
222
201
|
children: [
|
|
223
|
-
/* @__PURE__ */ j(
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
}), e.tags.length > 0 ? /* @__PURE__ */ j("div", {
|
|
227
|
-
className: "mt-1 flex flex-wrap gap-1",
|
|
228
|
-
children: [e.tags.slice(0, 3).map((e) => /* @__PURE__ */ A(M, {
|
|
229
|
-
variant: "outline",
|
|
230
|
-
className: "text-xs",
|
|
231
|
-
children: e
|
|
232
|
-
}, e)), e.tags.length > 3 ? /* @__PURE__ */ j(M, {
|
|
233
|
-
variant: "outline",
|
|
234
|
-
className: "text-xs",
|
|
235
|
-
children: ["+", e.tags.length - 3]
|
|
236
|
-
}) : null]
|
|
237
|
-
}) : null] }),
|
|
238
|
-
/* @__PURE__ */ A(Y, { children: /* @__PURE__ */ A(M, {
|
|
239
|
-
variant: v(e.status),
|
|
240
|
-
children: e.status
|
|
241
|
-
}) }),
|
|
242
|
-
/* @__PURE__ */ A(Y, {
|
|
202
|
+
/* @__PURE__ */ j(Z, { children: i("brainyrich.households.col.name", "Household") }),
|
|
203
|
+
/* @__PURE__ */ j(Z, { children: i("brainyrich.households.col.status", "Status") }),
|
|
204
|
+
/* @__PURE__ */ j(Z, {
|
|
243
205
|
className: "hidden md:table-cell",
|
|
244
|
-
children:
|
|
245
|
-
variant: "secondary",
|
|
246
|
-
children: e.riskProfile
|
|
247
|
-
})
|
|
206
|
+
children: i("brainyrich.households.col.risk", "Risk profile")
|
|
248
207
|
}),
|
|
249
|
-
/* @__PURE__ */
|
|
208
|
+
/* @__PURE__ */ j(Z, {
|
|
250
209
|
className: "hidden lg:table-cell",
|
|
251
|
-
children:
|
|
252
|
-
className: "space-y-0.5",
|
|
253
|
-
children: [/* @__PURE__ */ A("p", {
|
|
254
|
-
className: "text-sm text-text-primary",
|
|
255
|
-
children: e.primaryContactName
|
|
256
|
-
}), e.primaryContactEmail ? /* @__PURE__ */ j("p", {
|
|
257
|
-
className: "flex items-center gap-1 text-xs text-text-secondary",
|
|
258
|
-
children: [/* @__PURE__ */ A(se, {
|
|
259
|
-
className: "size-3",
|
|
260
|
-
"aria-hidden": "true"
|
|
261
|
-
}), e.primaryContactEmail]
|
|
262
|
-
}) : null]
|
|
263
|
-
}) : /* @__PURE__ */ A("span", {
|
|
264
|
-
className: "text-sm text-text-muted",
|
|
265
|
-
children: "—"
|
|
266
|
-
})
|
|
210
|
+
children: i("brainyrich.households.col.contact", "Primary contact")
|
|
267
211
|
}),
|
|
268
|
-
/* @__PURE__ */
|
|
212
|
+
/* @__PURE__ */ j(Z, {
|
|
269
213
|
className: "hidden sm:table-cell",
|
|
270
|
-
children:
|
|
271
|
-
className: "flex items-center gap-1.5 text-sm text-text-secondary",
|
|
272
|
-
children: [/* @__PURE__ */ A(ue, {
|
|
273
|
-
className: "size-3.5",
|
|
274
|
-
"aria-hidden": "true"
|
|
275
|
-
}), /* @__PURE__ */ A(l, { id: e.advisorId })]
|
|
276
|
-
}) : /* @__PURE__ */ A("span", {
|
|
277
|
-
className: "text-sm text-text-muted",
|
|
278
|
-
children: i("brainyrich.common.unassigned", "Unassigned")
|
|
279
|
-
})
|
|
214
|
+
children: i("brainyrich.households.col.advisor", "Advisor")
|
|
280
215
|
}),
|
|
281
|
-
/* @__PURE__ */
|
|
216
|
+
/* @__PURE__ */ j(Z, {
|
|
282
217
|
className: "text-right",
|
|
283
|
-
children:
|
|
284
|
-
className: "flex flex-col items-end gap-1",
|
|
285
|
-
children: [/* @__PURE__ */ A("span", {
|
|
286
|
-
className: "font-medium tabular-nums text-text-primary",
|
|
287
|
-
children: _(e.aum, e.currency)
|
|
288
|
-
}), /* @__PURE__ */ A("span", {
|
|
289
|
-
className: "h-1 w-16 overflow-hidden rounded-full bg-bg-sunken",
|
|
290
|
-
"aria-hidden": "true",
|
|
291
|
-
children: /* @__PURE__ */ A("span", {
|
|
292
|
-
className: "block h-full rounded-full bg-[var(--color-action-primary-bg)]",
|
|
293
|
-
style: { width: `${t}%` }
|
|
294
|
-
})
|
|
295
|
-
})]
|
|
296
|
-
})
|
|
218
|
+
children: i("brainyrich.households.col.aum", "AUM")
|
|
297
219
|
}),
|
|
298
|
-
/* @__PURE__ */
|
|
299
|
-
className: "text-right",
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
220
|
+
/* @__PURE__ */ j(Z, {
|
|
221
|
+
className: "w-12 text-right",
|
|
222
|
+
children: /* @__PURE__ */ j("span", {
|
|
223
|
+
className: "sr-only",
|
|
224
|
+
children: i("brainyrich.households.col.actions", "Actions")
|
|
225
|
+
})
|
|
226
|
+
})
|
|
227
|
+
]
|
|
228
|
+
}) }), /* @__PURE__ */ j(De, { children: a.map((e) => {
|
|
229
|
+
let t = G.aum > 0 ? Math.min(100, e.aum / G.aum * 100) : 0;
|
|
230
|
+
return /* @__PURE__ */ M(ke, {
|
|
231
|
+
className: "group cursor-pointer transition-colors",
|
|
232
|
+
onClick: () => z(e.id),
|
|
233
|
+
children: [
|
|
234
|
+
/* @__PURE__ */ M(X, { children: [/* @__PURE__ */ j("span", {
|
|
235
|
+
className: "font-medium text-text-primary transition-colors group-hover:text-[var(--color-action-primary-text)]",
|
|
236
|
+
children: e.name
|
|
237
|
+
}), e.tags.length > 0 ? /* @__PURE__ */ M("div", {
|
|
238
|
+
className: "mt-1 flex flex-wrap gap-1",
|
|
239
|
+
children: [e.tags.slice(0, 3).map((e) => /* @__PURE__ */ j(N, {
|
|
240
|
+
variant: "outline",
|
|
241
|
+
className: "text-xs",
|
|
242
|
+
children: e
|
|
243
|
+
}, e)), e.tags.length > 3 ? /* @__PURE__ */ M(N, {
|
|
244
|
+
variant: "outline",
|
|
245
|
+
className: "text-xs",
|
|
246
|
+
children: ["+", e.tags.length - 3]
|
|
247
|
+
}) : null]
|
|
248
|
+
}) : null] }),
|
|
249
|
+
/* @__PURE__ */ j(X, { children: /* @__PURE__ */ j(N, {
|
|
250
|
+
variant: v(e.status),
|
|
251
|
+
children: e.status
|
|
252
|
+
}) }),
|
|
253
|
+
/* @__PURE__ */ j(X, {
|
|
254
|
+
className: "hidden md:table-cell",
|
|
255
|
+
children: /* @__PURE__ */ j(N, {
|
|
256
|
+
variant: "secondary",
|
|
257
|
+
children: e.riskProfile
|
|
311
258
|
})
|
|
312
|
-
}),
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
children: [/* @__PURE__ */ A(le, {
|
|
325
|
-
className: "size-4",
|
|
259
|
+
}),
|
|
260
|
+
/* @__PURE__ */ j(X, {
|
|
261
|
+
className: "hidden lg:table-cell",
|
|
262
|
+
children: e.primaryContactName ? /* @__PURE__ */ M("div", {
|
|
263
|
+
className: "space-y-0.5",
|
|
264
|
+
children: [/* @__PURE__ */ j("p", {
|
|
265
|
+
className: "text-sm text-text-primary",
|
|
266
|
+
children: e.primaryContactName
|
|
267
|
+
}), e.primaryContactEmail ? /* @__PURE__ */ M("p", {
|
|
268
|
+
className: "flex items-center gap-1 text-xs text-text-secondary",
|
|
269
|
+
children: [/* @__PURE__ */ j(le, {
|
|
270
|
+
className: "size-3",
|
|
326
271
|
"aria-hidden": "true"
|
|
327
|
-
}),
|
|
328
|
-
})
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
272
|
+
}), e.primaryContactEmail]
|
|
273
|
+
}) : null]
|
|
274
|
+
}) : /* @__PURE__ */ j("span", {
|
|
275
|
+
className: "text-sm text-text-muted",
|
|
276
|
+
children: "—"
|
|
277
|
+
})
|
|
278
|
+
}),
|
|
279
|
+
/* @__PURE__ */ j(X, {
|
|
280
|
+
className: "hidden sm:table-cell",
|
|
281
|
+
children: e.advisorId ? /* @__PURE__ */ M("span", {
|
|
282
|
+
className: "flex items-center gap-1.5 text-sm text-text-secondary",
|
|
283
|
+
children: [/* @__PURE__ */ j(fe, {
|
|
284
|
+
className: "size-3.5",
|
|
285
|
+
"aria-hidden": "true"
|
|
286
|
+
}), /* @__PURE__ */ j(l, { id: e.advisorId })]
|
|
287
|
+
}) : /* @__PURE__ */ j("span", {
|
|
288
|
+
className: "text-sm text-text-muted",
|
|
289
|
+
children: i("brainyrich.common.unassigned", "Unassigned")
|
|
290
|
+
})
|
|
291
|
+
}),
|
|
292
|
+
/* @__PURE__ */ j(X, {
|
|
293
|
+
className: "text-right",
|
|
294
|
+
children: /* @__PURE__ */ M("div", {
|
|
295
|
+
className: "flex flex-col items-end gap-1",
|
|
296
|
+
children: [/* @__PURE__ */ j("span", {
|
|
297
|
+
className: "font-medium tabular-nums text-text-primary",
|
|
298
|
+
children: _(e.aum, e.currency)
|
|
299
|
+
}), /* @__PURE__ */ j("span", {
|
|
300
|
+
className: "h-1 w-16 overflow-hidden rounded-full bg-bg-sunken",
|
|
301
|
+
"aria-hidden": "true",
|
|
302
|
+
children: /* @__PURE__ */ j("span", {
|
|
303
|
+
className: "block h-full rounded-full bg-[var(--color-action-primary-bg)]",
|
|
304
|
+
style: { width: `${t}%` }
|
|
305
|
+
})
|
|
306
|
+
})]
|
|
307
|
+
})
|
|
308
|
+
}),
|
|
309
|
+
/* @__PURE__ */ j(X, {
|
|
310
|
+
className: "text-right",
|
|
311
|
+
onClick: (e) => e.stopPropagation(),
|
|
312
|
+
children: /* @__PURE__ */ M(ge, { children: [/* @__PURE__ */ j(ye, {
|
|
313
|
+
asChild: !0,
|
|
314
|
+
children: /* @__PURE__ */ j(P, {
|
|
315
|
+
variant: "ghost",
|
|
316
|
+
size: "icon",
|
|
317
|
+
"aria-label": i("brainyrich.households.rowMenu", "Household actions"),
|
|
318
|
+
children: /* @__PURE__ */ j(ue, {
|
|
334
319
|
className: "size-4",
|
|
335
320
|
"aria-hidden": "true"
|
|
336
|
-
})
|
|
321
|
+
})
|
|
337
322
|
})
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
323
|
+
}), /* @__PURE__ */ M(_e, {
|
|
324
|
+
align: "end",
|
|
325
|
+
children: [
|
|
326
|
+
/* @__PURE__ */ M(H, {
|
|
327
|
+
onClick: () => z(e.id),
|
|
328
|
+
children: [/* @__PURE__ */ j(ce, {
|
|
329
|
+
className: "size-4",
|
|
330
|
+
"aria-hidden": "true"
|
|
331
|
+
}), i("brainyrich.households.action.view", "View details")]
|
|
332
|
+
}),
|
|
333
|
+
/* @__PURE__ */ M(H, {
|
|
334
|
+
onClick: () => W(e),
|
|
335
|
+
children: [/* @__PURE__ */ j(de, {
|
|
336
|
+
className: "size-4",
|
|
337
|
+
"aria-hidden": "true"
|
|
338
|
+
}), i("brainyrich.households.action.edit", "Edit")]
|
|
339
|
+
}),
|
|
340
|
+
/* @__PURE__ */ j(ve, {}),
|
|
341
|
+
/* @__PURE__ */ M(H, {
|
|
342
|
+
className: "text-status-error-text focus:text-status-error-text",
|
|
343
|
+
onClick: () => V(e),
|
|
344
|
+
children: [/* @__PURE__ */ j(T, {
|
|
345
|
+
className: "size-4",
|
|
346
|
+
"aria-hidden": "true"
|
|
347
|
+
}), i("brainyrich.households.action.archive", "Archive")]
|
|
348
|
+
})
|
|
349
|
+
]
|
|
350
|
+
})] })
|
|
351
|
+
})
|
|
352
|
+
]
|
|
353
|
+
}, e.id);
|
|
354
|
+
}) })] })
|
|
355
|
+
})
|
|
344
356
|
})
|
|
345
357
|
})
|
|
358
|
+
}),
|
|
359
|
+
!f && !g && a.length > 0 ? /* @__PURE__ */ j(ee, {
|
|
360
|
+
hasMore: s,
|
|
361
|
+
onClick: u,
|
|
362
|
+
loading: h,
|
|
363
|
+
label: i("brainyrich.households.loadMore", "Load more households")
|
|
364
|
+
}) : null,
|
|
365
|
+
/* @__PURE__ */ j(He, {
|
|
366
|
+
open: se,
|
|
367
|
+
onOpenChange: D,
|
|
368
|
+
editing: O,
|
|
369
|
+
form: L,
|
|
370
|
+
setField: he,
|
|
371
|
+
onSubmit: J,
|
|
372
|
+
canSubmit: q,
|
|
373
|
+
submitting: K,
|
|
374
|
+
tr: i
|
|
375
|
+
}),
|
|
376
|
+
/* @__PURE__ */ j(Ue, {
|
|
377
|
+
householdId: me,
|
|
378
|
+
onClose: () => z(void 0),
|
|
379
|
+
onEdit: (e) => {
|
|
380
|
+
z(void 0), W(e);
|
|
381
|
+
},
|
|
382
|
+
tr: i
|
|
383
|
+
}),
|
|
384
|
+
/* @__PURE__ */ j(te, {
|
|
385
|
+
open: !!B,
|
|
386
|
+
onOpenChange: (e) => e ? void 0 : V(null),
|
|
387
|
+
title: i("brainyrich.households.archive.title", "Archive household?"),
|
|
388
|
+
description: i("brainyrich.households.archive.description", "Archiving “{name}” removes it from the active list. You can still access its records, but it will no longer appear here.", { name: B?.name ?? "" }),
|
|
389
|
+
confirmLabel: i("brainyrich.households.action.archive", "Archive"),
|
|
390
|
+
pendingLabel: i("brainyrich.households.archive.pending", "Archiving…"),
|
|
391
|
+
destructive: !0,
|
|
392
|
+
pending: E.isPending,
|
|
393
|
+
onConfirm: () => {
|
|
394
|
+
B && E.mutate(B.id, { onSuccess: () => {
|
|
395
|
+
y(), b(i("brainyrich.households.archived", "Household archived", { name: B.name })), V(null);
|
|
396
|
+
} });
|
|
397
|
+
}
|
|
346
398
|
})
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
hasMore: s,
|
|
350
|
-
onClick: u,
|
|
351
|
-
loading: h,
|
|
352
|
-
label: i("brainyrich.households.loadMore", "Load more households")
|
|
353
|
-
}) : null,
|
|
354
|
-
/* @__PURE__ */ A(Be, {
|
|
355
|
-
open: w,
|
|
356
|
-
onOpenChange: E,
|
|
357
|
-
editing: D,
|
|
358
|
-
form: I,
|
|
359
|
-
setField: pe,
|
|
360
|
-
onSubmit: q,
|
|
361
|
-
canSubmit: K,
|
|
362
|
-
submitting: G,
|
|
363
|
-
tr: i
|
|
364
|
-
}),
|
|
365
|
-
/* @__PURE__ */ A(Ve, {
|
|
366
|
-
householdId: fe,
|
|
367
|
-
onClose: () => R(void 0),
|
|
368
|
-
onEdit: (e) => {
|
|
369
|
-
R(void 0), U(e);
|
|
370
|
-
},
|
|
371
|
-
tr: i
|
|
372
|
-
}),
|
|
373
|
-
/* @__PURE__ */ A(te, {
|
|
374
|
-
open: !!z,
|
|
375
|
-
onOpenChange: (e) => e ? void 0 : B(null),
|
|
376
|
-
title: i("brainyrich.households.archive.title", "Archive household?"),
|
|
377
|
-
description: i("brainyrich.households.archive.description", "Archiving “{name}” removes it from the active list. You can still access its records, but it will no longer appear here.", { name: z?.name ?? "" }),
|
|
378
|
-
confirmLabel: i("brainyrich.households.action.archive", "Archive"),
|
|
379
|
-
pendingLabel: i("brainyrich.households.archive.pending", "Archiving…"),
|
|
380
|
-
destructive: !0,
|
|
381
|
-
pending: C.isPending,
|
|
382
|
-
onConfirm: () => {
|
|
383
|
-
z && C.mutate(z.id, { onSuccess: () => B(null) });
|
|
384
|
-
}
|
|
385
|
-
})
|
|
386
|
-
]
|
|
399
|
+
]
|
|
400
|
+
})
|
|
387
401
|
});
|
|
388
402
|
}
|
|
389
|
-
function
|
|
390
|
-
return /* @__PURE__ */
|
|
403
|
+
function Ve({ firm: e, tr: t }) {
|
|
404
|
+
return /* @__PURE__ */ M(d, {
|
|
391
405
|
as: "section",
|
|
392
406
|
className: "space-y-4",
|
|
393
|
-
children: [/* @__PURE__ */
|
|
407
|
+
children: [/* @__PURE__ */ M("div", {
|
|
394
408
|
className: "grid gap-4 md:grid-cols-2 xl:grid-cols-4",
|
|
395
409
|
children: [
|
|
396
|
-
/* @__PURE__ */
|
|
410
|
+
/* @__PURE__ */ j(p, {
|
|
397
411
|
label: t("brainyrich.households.kpi.aum", "Total AUM"),
|
|
398
412
|
value: _(e.aum, e.currency),
|
|
399
413
|
glow: !0,
|
|
400
|
-
icon: /* @__PURE__ */ A
|
|
414
|
+
icon: /* @__PURE__ */ j(A, {
|
|
401
415
|
className: "size-4",
|
|
402
416
|
"aria-hidden": "true"
|
|
403
417
|
})
|
|
404
418
|
}),
|
|
405
|
-
/* @__PURE__ */
|
|
419
|
+
/* @__PURE__ */ j(p, {
|
|
406
420
|
label: t("brainyrich.households.kpi.total", "Households"),
|
|
407
421
|
value: String(e.total),
|
|
408
|
-
icon: /* @__PURE__ */
|
|
422
|
+
icon: /* @__PURE__ */ j(k, {
|
|
409
423
|
className: "size-4",
|
|
410
424
|
"aria-hidden": "true"
|
|
411
425
|
})
|
|
412
426
|
}),
|
|
413
|
-
/* @__PURE__ */
|
|
427
|
+
/* @__PURE__ */ j(p, {
|
|
414
428
|
label: t("brainyrich.households.kpi.active", "Active"),
|
|
415
429
|
value: String(e.active),
|
|
416
|
-
icon: /* @__PURE__ */
|
|
430
|
+
icon: /* @__PURE__ */ j(O, {
|
|
417
431
|
className: "size-4",
|
|
418
432
|
"aria-hidden": "true"
|
|
419
433
|
})
|
|
420
434
|
}),
|
|
421
|
-
/* @__PURE__ */
|
|
435
|
+
/* @__PURE__ */ j(p, {
|
|
422
436
|
label: t("brainyrich.households.kpi.prospects", "Prospects"),
|
|
423
437
|
value: String(e.prospects),
|
|
424
|
-
icon: /* @__PURE__ */
|
|
438
|
+
icon: /* @__PURE__ */ j(D, {
|
|
425
439
|
className: "size-4",
|
|
426
440
|
"aria-hidden": "true"
|
|
427
441
|
})
|
|
428
442
|
})
|
|
429
443
|
]
|
|
430
|
-
}), /* @__PURE__ */
|
|
444
|
+
}), /* @__PURE__ */ M("div", {
|
|
431
445
|
className: "grid gap-4 lg:grid-cols-3",
|
|
432
|
-
children: [/* @__PURE__ */
|
|
446
|
+
children: [/* @__PURE__ */ M(f, {
|
|
433
447
|
className: "lg:col-span-2",
|
|
434
|
-
children: [/* @__PURE__ */
|
|
448
|
+
children: [/* @__PURE__ */ M("div", {
|
|
435
449
|
className: "mb-4 flex items-center justify-between gap-2",
|
|
436
|
-
children: [/* @__PURE__ */
|
|
450
|
+
children: [/* @__PURE__ */ M("div", { children: [/* @__PURE__ */ j("h2", {
|
|
437
451
|
className: "text-sm font-semibold text-text-primary",
|
|
438
452
|
children: t("brainyrich.households.firm.byAdvisor", "AUM by advisor")
|
|
439
|
-
}), /* @__PURE__ */
|
|
453
|
+
}), /* @__PURE__ */ j("p", {
|
|
440
454
|
className: "text-xs text-text-secondary",
|
|
441
455
|
children: t("brainyrich.households.firm.advisorCount", "{count} advisors", { count: e.advisorCount })
|
|
442
|
-
})] }), /* @__PURE__ */
|
|
456
|
+
})] }), /* @__PURE__ */ j(se, {
|
|
443
457
|
className: "size-4 text-text-secondary",
|
|
444
458
|
"aria-hidden": "true"
|
|
445
459
|
})]
|
|
446
|
-
}), /* @__PURE__ */
|
|
460
|
+
}), /* @__PURE__ */ j("ul", {
|
|
447
461
|
className: "space-y-3.5",
|
|
448
462
|
"aria-label": t("brainyrich.households.firm.byAdvisor", "AUM by advisor"),
|
|
449
463
|
children: e.advisors.map((n) => {
|
|
450
464
|
let r = e.advisorMax > 0 ? Math.max(2, n.value / e.advisorMax * 100) : 0;
|
|
451
|
-
return /* @__PURE__ */
|
|
465
|
+
return /* @__PURE__ */ M("li", {
|
|
452
466
|
className: "space-y-1.5",
|
|
453
|
-
children: [/* @__PURE__ */
|
|
467
|
+
children: [/* @__PURE__ */ M("div", {
|
|
454
468
|
className: "flex items-center justify-between gap-3 text-xs",
|
|
455
|
-
children: [/* @__PURE__ */
|
|
469
|
+
children: [/* @__PURE__ */ M("span", {
|
|
456
470
|
className: "flex items-center gap-1.5 truncate font-medium text-text-primary",
|
|
457
|
-
children: [/* @__PURE__ */
|
|
471
|
+
children: [/* @__PURE__ */ j(fe, {
|
|
458
472
|
className: "size-3.5 shrink-0 text-text-secondary",
|
|
459
473
|
"aria-hidden": "true"
|
|
460
|
-
}), n.advisorId ? /* @__PURE__ */
|
|
461
|
-
}), /* @__PURE__ */
|
|
474
|
+
}), n.advisorId ? /* @__PURE__ */ j(l, { id: n.advisorId }) : t("brainyrich.common.unassigned", "Unassigned")]
|
|
475
|
+
}), /* @__PURE__ */ j("span", {
|
|
462
476
|
className: "shrink-0 tabular-nums text-text-secondary",
|
|
463
477
|
children: h(n.value, e.currency)
|
|
464
478
|
})]
|
|
465
|
-
}), /* @__PURE__ */
|
|
479
|
+
}), /* @__PURE__ */ j("div", {
|
|
466
480
|
className: "h-2 w-full overflow-hidden rounded-full bg-bg-sunken",
|
|
467
481
|
role: "progressbar",
|
|
468
482
|
"aria-valuenow": Math.round(r),
|
|
469
483
|
"aria-valuemin": 0,
|
|
470
484
|
"aria-valuemax": 100,
|
|
471
485
|
"aria-label": n.advisorId || "Unassigned",
|
|
472
|
-
children: /* @__PURE__ */
|
|
486
|
+
children: /* @__PURE__ */ j("div", {
|
|
473
487
|
className: "h-full rounded-full bg-[var(--color-action-primary-bg)] transition-[width] duration-500 ease-out",
|
|
474
488
|
style: { width: `${r}%` }
|
|
475
489
|
})
|
|
@@ -477,44 +491,44 @@ function ze({ firm: e, tr: t }) {
|
|
|
477
491
|
}, n.advisorId || "unassigned");
|
|
478
492
|
})
|
|
479
493
|
})]
|
|
480
|
-
}), /* @__PURE__ */
|
|
494
|
+
}), /* @__PURE__ */ M(f, { children: [/* @__PURE__ */ j("div", {
|
|
481
495
|
className: "mb-2 flex items-center justify-between gap-2",
|
|
482
|
-
children: /* @__PURE__ */
|
|
496
|
+
children: /* @__PURE__ */ j("h2", {
|
|
483
497
|
className: "text-sm font-semibold text-text-primary",
|
|
484
498
|
children: t("brainyrich.households.firm.bookMix", "Book by status")
|
|
485
499
|
})
|
|
486
|
-
}), e.statusMix.length > 0 ? /* @__PURE__ */
|
|
500
|
+
}), e.statusMix.length > 0 ? /* @__PURE__ */ j(u, {
|
|
487
501
|
data: e.statusMix,
|
|
488
502
|
centerValue: String(e.total),
|
|
489
503
|
centerLabel: t("brainyrich.households.kpi.total", "Households"),
|
|
490
504
|
legend: !0,
|
|
491
505
|
height: 200,
|
|
492
506
|
valueFormatter: (e) => String(e)
|
|
493
|
-
}) : /* @__PURE__ */
|
|
507
|
+
}) : /* @__PURE__ */ j("p", {
|
|
494
508
|
className: "text-sm text-text-secondary",
|
|
495
509
|
children: t("brainyrich.households.firm.noMix", "No households to chart yet.")
|
|
496
510
|
})] })]
|
|
497
511
|
})]
|
|
498
512
|
});
|
|
499
513
|
}
|
|
500
|
-
function
|
|
501
|
-
return /* @__PURE__ */
|
|
514
|
+
function He({ open: e, onOpenChange: t, editing: n, form: r, setField: i, onSubmit: a, canSubmit: o, submitting: s, tr: c }) {
|
|
515
|
+
return /* @__PURE__ */ j(L, {
|
|
502
516
|
open: e,
|
|
503
517
|
onOpenChange: t,
|
|
504
|
-
children: /* @__PURE__ */
|
|
518
|
+
children: /* @__PURE__ */ M(me, {
|
|
505
519
|
className: "max-h-[90vh] overflow-y-auto sm:max-w-lg",
|
|
506
|
-
children: [/* @__PURE__ */
|
|
520
|
+
children: [/* @__PURE__ */ M(V, { children: [/* @__PURE__ */ j(he, { children: n ? c("brainyrich.households.form.editTitle", "Edit household") : c("brainyrich.households.form.createTitle", "New household") }), /* @__PURE__ */ j(z, { children: c("brainyrich.households.form.subtitle", "A household groups a client family’s accounts, portfolios and goals.") })] }), /* @__PURE__ */ M("form", {
|
|
507
521
|
className: "space-y-4",
|
|
508
522
|
onSubmit: (e) => {
|
|
509
523
|
e.preventDefault(), a();
|
|
510
524
|
},
|
|
511
525
|
children: [
|
|
512
|
-
/* @__PURE__ */
|
|
526
|
+
/* @__PURE__ */ M("div", {
|
|
513
527
|
className: "space-y-2",
|
|
514
|
-
children: [/* @__PURE__ */
|
|
528
|
+
children: [/* @__PURE__ */ M(W, {
|
|
515
529
|
htmlFor: "hh-name",
|
|
516
530
|
children: [c("brainyrich.households.form.name", "Name"), " *"]
|
|
517
|
-
}), /* @__PURE__ */
|
|
531
|
+
}), /* @__PURE__ */ j(U, {
|
|
518
532
|
id: "hh-name",
|
|
519
533
|
value: r.name,
|
|
520
534
|
onChange: (e) => i("name", e.target.value),
|
|
@@ -522,49 +536,49 @@ function Be({ open: e, onOpenChange: t, editing: n, form: r, setField: i, onSubm
|
|
|
522
536
|
required: !0
|
|
523
537
|
})]
|
|
524
538
|
}),
|
|
525
|
-
/* @__PURE__ */
|
|
539
|
+
/* @__PURE__ */ M("div", {
|
|
526
540
|
className: "grid gap-4 sm:grid-cols-2",
|
|
527
|
-
children: [/* @__PURE__ */
|
|
541
|
+
children: [/* @__PURE__ */ M("div", {
|
|
528
542
|
className: "space-y-2",
|
|
529
|
-
children: [/* @__PURE__ */
|
|
543
|
+
children: [/* @__PURE__ */ j(W, { children: c("brainyrich.households.form.status", "Status") }), /* @__PURE__ */ M(G, {
|
|
530
544
|
value: r.status,
|
|
531
545
|
onValueChange: (e) => i("status", e),
|
|
532
|
-
children: [/* @__PURE__ */
|
|
546
|
+
children: [/* @__PURE__ */ j(J, { children: /* @__PURE__ */ j(Y, {}) }), /* @__PURE__ */ j(K, { children: Ne.map((e) => /* @__PURE__ */ j(q, {
|
|
533
547
|
value: e,
|
|
534
548
|
children: e
|
|
535
549
|
}, e)) })]
|
|
536
550
|
})]
|
|
537
|
-
}), /* @__PURE__ */
|
|
551
|
+
}), /* @__PURE__ */ M("div", {
|
|
538
552
|
className: "space-y-2",
|
|
539
|
-
children: [/* @__PURE__ */
|
|
553
|
+
children: [/* @__PURE__ */ j(W, { children: c("brainyrich.households.form.risk", "Risk profile") }), /* @__PURE__ */ M(G, {
|
|
540
554
|
value: r.riskProfile,
|
|
541
555
|
onValueChange: (e) => i("riskProfile", e),
|
|
542
|
-
children: [/* @__PURE__ */
|
|
556
|
+
children: [/* @__PURE__ */ j(J, { children: /* @__PURE__ */ j(Y, {}) }), /* @__PURE__ */ j(K, { children: Pe.map((e) => /* @__PURE__ */ j(q, {
|
|
543
557
|
value: e,
|
|
544
558
|
children: e
|
|
545
559
|
}, e)) })]
|
|
546
560
|
})]
|
|
547
561
|
})]
|
|
548
562
|
}),
|
|
549
|
-
/* @__PURE__ */
|
|
563
|
+
/* @__PURE__ */ M("div", {
|
|
550
564
|
className: "grid gap-4 sm:grid-cols-2",
|
|
551
|
-
children: [/* @__PURE__ */
|
|
565
|
+
children: [/* @__PURE__ */ M("div", {
|
|
552
566
|
className: "space-y-2",
|
|
553
|
-
children: [/* @__PURE__ */
|
|
567
|
+
children: [/* @__PURE__ */ j(W, {
|
|
554
568
|
htmlFor: "hh-contact-name",
|
|
555
569
|
children: c("brainyrich.households.form.contactName", "Primary contact")
|
|
556
|
-
}), /* @__PURE__ */
|
|
570
|
+
}), /* @__PURE__ */ j(U, {
|
|
557
571
|
id: "hh-contact-name",
|
|
558
572
|
value: r.primaryContactName,
|
|
559
573
|
onChange: (e) => i("primaryContactName", e.target.value),
|
|
560
574
|
placeholder: c("brainyrich.households.form.contactNamePh", "Full name")
|
|
561
575
|
})]
|
|
562
|
-
}), /* @__PURE__ */
|
|
576
|
+
}), /* @__PURE__ */ M("div", {
|
|
563
577
|
className: "space-y-2",
|
|
564
|
-
children: [/* @__PURE__ */
|
|
578
|
+
children: [/* @__PURE__ */ j(W, {
|
|
565
579
|
htmlFor: "hh-contact-email",
|
|
566
580
|
children: c("brainyrich.households.form.contactEmail", "Contact email")
|
|
567
|
-
}), /* @__PURE__ */
|
|
581
|
+
}), /* @__PURE__ */ j(U, {
|
|
568
582
|
id: "hh-contact-email",
|
|
569
583
|
type: "email",
|
|
570
584
|
value: r.primaryContactEmail,
|
|
@@ -573,24 +587,24 @@ function Be({ open: e, onOpenChange: t, editing: n, form: r, setField: i, onSubm
|
|
|
573
587
|
})]
|
|
574
588
|
})]
|
|
575
589
|
}),
|
|
576
|
-
/* @__PURE__ */
|
|
590
|
+
/* @__PURE__ */ M("div", {
|
|
577
591
|
className: "grid gap-4 sm:grid-cols-2",
|
|
578
|
-
children: [/* @__PURE__ */
|
|
592
|
+
children: [/* @__PURE__ */ M("div", {
|
|
579
593
|
className: "space-y-2",
|
|
580
|
-
children: [/* @__PURE__ */
|
|
594
|
+
children: [/* @__PURE__ */ j(W, { children: c("brainyrich.households.form.currency", "Currency") }), /* @__PURE__ */ M(G, {
|
|
581
595
|
value: r.currency,
|
|
582
596
|
onValueChange: (e) => i("currency", e),
|
|
583
|
-
children: [/* @__PURE__ */
|
|
597
|
+
children: [/* @__PURE__ */ j(J, { children: /* @__PURE__ */ j(Y, {}) }), /* @__PURE__ */ j(K, { children: Fe.map((e) => /* @__PURE__ */ j(q, {
|
|
584
598
|
value: e,
|
|
585
599
|
children: e
|
|
586
600
|
}, e)) })]
|
|
587
601
|
})]
|
|
588
|
-
}), n ? null : /* @__PURE__ */
|
|
602
|
+
}), n ? null : /* @__PURE__ */ M("div", {
|
|
589
603
|
className: "space-y-2",
|
|
590
|
-
children: [/* @__PURE__ */
|
|
604
|
+
children: [/* @__PURE__ */ j(W, {
|
|
591
605
|
htmlFor: "hh-advisor",
|
|
592
606
|
children: c("brainyrich.households.form.advisor", "Advisor ID")
|
|
593
|
-
}), /* @__PURE__ */
|
|
607
|
+
}), /* @__PURE__ */ j(U, {
|
|
594
608
|
id: "hh-advisor",
|
|
595
609
|
value: r.advisorId,
|
|
596
610
|
onChange: (e) => i("advisorId", e.target.value),
|
|
@@ -598,42 +612,42 @@ function Be({ open: e, onOpenChange: t, editing: n, form: r, setField: i, onSubm
|
|
|
598
612
|
})]
|
|
599
613
|
})]
|
|
600
614
|
}),
|
|
601
|
-
n ? /* @__PURE__ */
|
|
615
|
+
n ? /* @__PURE__ */ j(S, {
|
|
602
616
|
entityType: "brainyrich-household",
|
|
603
617
|
entityId: n.id,
|
|
604
618
|
label: c("brainyrich.households.form.tags", "Tags")
|
|
605
|
-
}) : /* @__PURE__ */
|
|
619
|
+
}) : /* @__PURE__ */ M("div", {
|
|
606
620
|
className: "space-y-2",
|
|
607
|
-
children: [/* @__PURE__ */
|
|
621
|
+
children: [/* @__PURE__ */ j(W, {
|
|
608
622
|
htmlFor: "hh-tags",
|
|
609
623
|
children: c("brainyrich.households.form.tags", "Tags")
|
|
610
|
-
}), /* @__PURE__ */
|
|
624
|
+
}), /* @__PURE__ */ j(U, {
|
|
611
625
|
id: "hh-tags",
|
|
612
626
|
value: r.tags,
|
|
613
627
|
onChange: (e) => i("tags", e.target.value),
|
|
614
628
|
placeholder: c("brainyrich.households.form.tagsPh", "Comma-separated")
|
|
615
629
|
})]
|
|
616
630
|
}),
|
|
617
|
-
/* @__PURE__ */
|
|
631
|
+
/* @__PURE__ */ M("div", {
|
|
618
632
|
className: "space-y-2",
|
|
619
|
-
children: [/* @__PURE__ */
|
|
633
|
+
children: [/* @__PURE__ */ j(W, {
|
|
620
634
|
htmlFor: "hh-notes",
|
|
621
635
|
children: c("brainyrich.households.form.notes", "Notes")
|
|
622
|
-
}), /* @__PURE__ */
|
|
636
|
+
}), /* @__PURE__ */ j(Me, {
|
|
623
637
|
id: "hh-notes",
|
|
624
638
|
value: r.notes,
|
|
625
639
|
onChange: (e) => i("notes", e.target.value),
|
|
626
640
|
rows: 3
|
|
627
641
|
})]
|
|
628
642
|
}),
|
|
629
|
-
/* @__PURE__ */
|
|
643
|
+
/* @__PURE__ */ M(B, { children: [/* @__PURE__ */ j(R, {
|
|
630
644
|
asChild: !0,
|
|
631
|
-
children: /* @__PURE__ */
|
|
645
|
+
children: /* @__PURE__ */ j(P, {
|
|
632
646
|
type: "button",
|
|
633
647
|
variant: "outline",
|
|
634
648
|
children: c("brainyrich.common.cancel", "Cancel")
|
|
635
649
|
})
|
|
636
|
-
}), /* @__PURE__ */
|
|
650
|
+
}), /* @__PURE__ */ j(P, {
|
|
637
651
|
type: "submit",
|
|
638
652
|
disabled: !o,
|
|
639
653
|
children: s ? c("brainyrich.common.saving", "Saving…") : n ? c("brainyrich.common.save", "Save changes") : c("brainyrich.households.form.create", "Create household")
|
|
@@ -643,86 +657,86 @@ function Be({ open: e, onOpenChange: t, editing: n, form: r, setField: i, onSubm
|
|
|
643
657
|
})
|
|
644
658
|
});
|
|
645
659
|
}
|
|
646
|
-
function
|
|
647
|
-
let { data: c, isLoading: ee, isError: te, refetch: d } = a(e), { data: p } = t(e ? { householdId: e } : {}), { data: ie } = s(e ? { householdId: e } : {}), { data: y } = i(e ? { householdId: e } : {}),
|
|
660
|
+
function Ue({ householdId: e, onClose: n, onEdit: r, tr: o }) {
|
|
661
|
+
let { data: c, isLoading: ee, isError: te, refetch: d } = a(e), { data: p } = t(e ? { householdId: e } : {}), { data: ie } = s(e ? { householdId: e } : {}), { data: y } = i(e ? { householdId: e } : {}), b = !!e, x = oe(() => [...p].map((e) => ({
|
|
648
662
|
account: e,
|
|
649
|
-
value:
|
|
650
|
-
})).sort((e, t) => t.value - e.value), [p]), w =
|
|
663
|
+
value: ze(e)
|
|
664
|
+
})).sort((e, t) => t.value - e.value), [p]), w = x.reduce((e, t) => e + t.value, 0), T = x.filter((e) => e.value > 0).slice(0, 6).map((e) => ({
|
|
651
665
|
label: e.account.name,
|
|
652
666
|
value: e.value
|
|
653
667
|
}));
|
|
654
|
-
return /* @__PURE__ */
|
|
655
|
-
open:
|
|
668
|
+
return /* @__PURE__ */ j(xe, {
|
|
669
|
+
open: b,
|
|
656
670
|
onOpenChange: (e) => e ? void 0 : n(),
|
|
657
|
-
children: /* @__PURE__ */
|
|
671
|
+
children: /* @__PURE__ */ j(Se, {
|
|
658
672
|
className: "flex w-full flex-col gap-0 overflow-y-auto p-0 sm:max-w-xl",
|
|
659
|
-
children: ee ? /* @__PURE__ */
|
|
673
|
+
children: ee ? /* @__PURE__ */ j("div", {
|
|
660
674
|
className: "p-6",
|
|
661
|
-
children: /* @__PURE__ */
|
|
662
|
-
}) : te ? /* @__PURE__ */
|
|
675
|
+
children: /* @__PURE__ */ j(re, { rows: 4 })
|
|
676
|
+
}) : te ? /* @__PURE__ */ j("div", {
|
|
663
677
|
className: "p-6",
|
|
664
|
-
children: /* @__PURE__ */
|
|
678
|
+
children: /* @__PURE__ */ j(ne, {
|
|
665
679
|
title: o("brainyrich.households.detail.error", "Could not load household"),
|
|
666
680
|
onRetry: () => d()
|
|
667
681
|
})
|
|
668
|
-
}) : c ? /* @__PURE__ */
|
|
682
|
+
}) : c ? /* @__PURE__ */ M("div", {
|
|
669
683
|
className: "space-y-5 p-6",
|
|
670
684
|
children: [
|
|
671
|
-
/* @__PURE__ */
|
|
685
|
+
/* @__PURE__ */ M(we, {
|
|
672
686
|
className: "space-y-2 p-0 text-left",
|
|
673
687
|
children: [
|
|
674
|
-
/* @__PURE__ */
|
|
688
|
+
/* @__PURE__ */ j(Te, {
|
|
675
689
|
className: "text-xl",
|
|
676
690
|
children: c.name
|
|
677
691
|
}),
|
|
678
|
-
/* @__PURE__ */
|
|
692
|
+
/* @__PURE__ */ j(Ce, {
|
|
679
693
|
className: "sr-only",
|
|
680
694
|
children: o("brainyrich.households.detail.subtitle", "Household overview")
|
|
681
695
|
}),
|
|
682
|
-
/* @__PURE__ */
|
|
696
|
+
/* @__PURE__ */ M("div", {
|
|
683
697
|
className: "flex flex-wrap items-center gap-2 pt-1",
|
|
684
|
-
children: [/* @__PURE__ */
|
|
698
|
+
children: [/* @__PURE__ */ j(N, {
|
|
685
699
|
variant: v(c.status),
|
|
686
700
|
children: c.status
|
|
687
|
-
}), /* @__PURE__ */
|
|
701
|
+
}), /* @__PURE__ */ j(N, {
|
|
688
702
|
variant: "secondary",
|
|
689
703
|
children: c.riskProfile
|
|
690
704
|
})]
|
|
691
705
|
})
|
|
692
706
|
]
|
|
693
707
|
}),
|
|
694
|
-
/* @__PURE__ */
|
|
708
|
+
/* @__PURE__ */ j(f, {
|
|
695
709
|
glow: !0,
|
|
696
|
-
children: /* @__PURE__ */
|
|
710
|
+
children: /* @__PURE__ */ M("div", {
|
|
697
711
|
className: "grid grid-cols-1 gap-4 sm:grid-cols-2",
|
|
698
|
-
children: [/* @__PURE__ */
|
|
699
|
-
/* @__PURE__ */
|
|
712
|
+
children: [/* @__PURE__ */ M("div", { children: [
|
|
713
|
+
/* @__PURE__ */ j("p", {
|
|
700
714
|
className: "text-xs uppercase tracking-wide text-text-secondary",
|
|
701
715
|
children: o("brainyrich.households.detail.aum", "AUM")
|
|
702
716
|
}),
|
|
703
|
-
/* @__PURE__ */
|
|
717
|
+
/* @__PURE__ */ j("p", {
|
|
704
718
|
className: "mt-1 text-3xl font-semibold tracking-tight text-text-primary",
|
|
705
719
|
children: _(c.aum, c.currency)
|
|
706
720
|
}),
|
|
707
|
-
/* @__PURE__ */
|
|
721
|
+
/* @__PURE__ */ j("p", {
|
|
708
722
|
className: "mt-1 text-xs text-text-secondary",
|
|
709
723
|
children: c.currency
|
|
710
724
|
})
|
|
711
|
-
] }), /* @__PURE__ */
|
|
725
|
+
] }), /* @__PURE__ */ M("div", {
|
|
712
726
|
className: "sm:text-right",
|
|
713
727
|
children: [
|
|
714
|
-
/* @__PURE__ */
|
|
728
|
+
/* @__PURE__ */ j("p", {
|
|
715
729
|
className: "text-xs uppercase tracking-wide text-text-secondary",
|
|
716
730
|
children: o("brainyrich.households.detail.contact", "Primary contact")
|
|
717
731
|
}),
|
|
718
|
-
/* @__PURE__ */
|
|
732
|
+
/* @__PURE__ */ j("p", {
|
|
719
733
|
className: "mt-1 text-base font-medium text-text-primary",
|
|
720
734
|
children: c.primaryContactName ?? "—"
|
|
721
735
|
}),
|
|
722
|
-
c.primaryContactEmail ? /* @__PURE__ */
|
|
736
|
+
c.primaryContactEmail ? /* @__PURE__ */ M("a", {
|
|
723
737
|
href: `mailto:${c.primaryContactEmail}`,
|
|
724
738
|
className: "mt-0.5 inline-flex items-center gap-1 text-xs text-text-secondary hover:text-[var(--color-action-primary-text)] sm:justify-end",
|
|
725
|
-
children: [/* @__PURE__ */
|
|
739
|
+
children: [/* @__PURE__ */ j(le, {
|
|
726
740
|
className: "size-3",
|
|
727
741
|
"aria-hidden": "true"
|
|
728
742
|
}), c.primaryContactEmail]
|
|
@@ -731,27 +745,27 @@ function Ve({ householdId: e, onClose: n, onEdit: r, tr: o }) {
|
|
|
731
745
|
})]
|
|
732
746
|
})
|
|
733
747
|
}),
|
|
734
|
-
/* @__PURE__ */
|
|
748
|
+
/* @__PURE__ */ M("div", {
|
|
735
749
|
className: "grid grid-cols-3 gap-3",
|
|
736
750
|
children: [
|
|
737
|
-
/* @__PURE__ */
|
|
738
|
-
icon: /* @__PURE__ */ A
|
|
751
|
+
/* @__PURE__ */ j(We, {
|
|
752
|
+
icon: /* @__PURE__ */ j(A, {
|
|
739
753
|
className: "size-4",
|
|
740
754
|
"aria-hidden": "true"
|
|
741
755
|
}),
|
|
742
756
|
label: o("brainyrich.households.detail.accounts", "Accounts"),
|
|
743
757
|
value: String(p.length)
|
|
744
758
|
}),
|
|
745
|
-
/* @__PURE__ */
|
|
746
|
-
icon: /* @__PURE__ */
|
|
759
|
+
/* @__PURE__ */ j(We, {
|
|
760
|
+
icon: /* @__PURE__ */ j(E, {
|
|
747
761
|
className: "size-4",
|
|
748
762
|
"aria-hidden": "true"
|
|
749
763
|
}),
|
|
750
764
|
label: o("brainyrich.households.detail.portfolios", "Portfolios"),
|
|
751
765
|
value: String(ie.length)
|
|
752
766
|
}),
|
|
753
|
-
/* @__PURE__ */
|
|
754
|
-
icon: /* @__PURE__ */
|
|
767
|
+
/* @__PURE__ */ j(We, {
|
|
768
|
+
icon: /* @__PURE__ */ j(D, {
|
|
755
769
|
className: "size-4",
|
|
756
770
|
"aria-hidden": "true"
|
|
757
771
|
}),
|
|
@@ -760,52 +774,52 @@ function Ve({ householdId: e, onClose: n, onEdit: r, tr: o }) {
|
|
|
760
774
|
})
|
|
761
775
|
]
|
|
762
776
|
}),
|
|
763
|
-
c.tags.length > 0 ? /* @__PURE__ */
|
|
777
|
+
c.tags.length > 0 ? /* @__PURE__ */ j("div", {
|
|
764
778
|
className: "flex flex-wrap gap-1",
|
|
765
|
-
children: c.tags.map((e) => /* @__PURE__ */
|
|
779
|
+
children: c.tags.map((e) => /* @__PURE__ */ j(N, {
|
|
766
780
|
variant: "outline",
|
|
767
781
|
children: e
|
|
768
782
|
}, e))
|
|
769
783
|
}) : null,
|
|
770
|
-
/* @__PURE__ */
|
|
784
|
+
/* @__PURE__ */ M(Ae, {
|
|
771
785
|
defaultValue: "overview",
|
|
772
786
|
className: "w-full",
|
|
773
787
|
children: [
|
|
774
|
-
/* @__PURE__ */
|
|
788
|
+
/* @__PURE__ */ M(je, {
|
|
775
789
|
className: "w-full justify-start overflow-x-auto",
|
|
776
790
|
children: [
|
|
777
|
-
/* @__PURE__ */
|
|
791
|
+
/* @__PURE__ */ j($, {
|
|
778
792
|
value: "overview",
|
|
779
793
|
children: o("brainyrich.households.tab.overview", "Overview")
|
|
780
794
|
}),
|
|
781
|
-
/* @__PURE__ */
|
|
795
|
+
/* @__PURE__ */ j($, {
|
|
782
796
|
value: "accounts",
|
|
783
797
|
children: o("brainyrich.households.detail.accounts", "Accounts")
|
|
784
798
|
}),
|
|
785
|
-
/* @__PURE__ */
|
|
799
|
+
/* @__PURE__ */ j($, {
|
|
786
800
|
value: "goals",
|
|
787
801
|
children: o("brainyrich.households.detail.goals", "Goals")
|
|
788
802
|
}),
|
|
789
|
-
/* @__PURE__ */
|
|
803
|
+
/* @__PURE__ */ j($, {
|
|
790
804
|
value: "documents",
|
|
791
805
|
children: o("brainyrich.households.detail.documents", "Documents")
|
|
792
806
|
}),
|
|
793
|
-
/* @__PURE__ */
|
|
807
|
+
/* @__PURE__ */ j($, {
|
|
794
808
|
value: "discussion",
|
|
795
809
|
children: o("brainyrich.households.detail.discussion", "Discussion")
|
|
796
810
|
})
|
|
797
811
|
]
|
|
798
812
|
}),
|
|
799
|
-
/* @__PURE__ */
|
|
813
|
+
/* @__PURE__ */ M(Q, {
|
|
800
814
|
value: "overview",
|
|
801
815
|
className: "mt-4 space-y-4",
|
|
802
816
|
children: [
|
|
803
|
-
T.length > 0 ? /* @__PURE__ */
|
|
817
|
+
T.length > 0 ? /* @__PURE__ */ j(F, { children: /* @__PURE__ */ M(I, {
|
|
804
818
|
className: "p-4",
|
|
805
|
-
children: [/* @__PURE__ */
|
|
819
|
+
children: [/* @__PURE__ */ j("h3", {
|
|
806
820
|
className: "mb-3 text-sm font-medium text-text-primary",
|
|
807
821
|
children: o("brainyrich.households.detail.allocation", "Where assets sit")
|
|
808
|
-
}), /* @__PURE__ */
|
|
822
|
+
}), /* @__PURE__ */ j(u, {
|
|
809
823
|
data: T,
|
|
810
824
|
centerValue: h(w, c.currency),
|
|
811
825
|
centerLabel: o("brainyrich.households.detail.invested", "Invested"),
|
|
@@ -813,85 +827,92 @@ function Ve({ householdId: e, onClose: n, onEdit: r, tr: o }) {
|
|
|
813
827
|
valueFormatter: (e) => _(e, c.currency)
|
|
814
828
|
})]
|
|
815
829
|
}) }) : null,
|
|
816
|
-
/* @__PURE__ */
|
|
830
|
+
/* @__PURE__ */ j(F, { children: /* @__PURE__ */ M(I, {
|
|
817
831
|
className: "space-y-3 p-4 text-sm",
|
|
818
832
|
children: [
|
|
819
|
-
/* @__PURE__ */
|
|
833
|
+
/* @__PURE__ */ M("div", {
|
|
820
834
|
className: "flex items-center justify-between gap-4",
|
|
821
|
-
children: [/* @__PURE__ */
|
|
835
|
+
children: [/* @__PURE__ */ j("span", {
|
|
822
836
|
className: "text-text-secondary",
|
|
823
837
|
children: o("brainyrich.households.detail.advisor", "Advisor")
|
|
824
|
-
}), /* @__PURE__ */
|
|
838
|
+
}), /* @__PURE__ */ j("span", {
|
|
825
839
|
className: "text-right font-medium text-text-primary",
|
|
826
|
-
children: c.advisorId ? /* @__PURE__ */
|
|
840
|
+
children: c.advisorId ? /* @__PURE__ */ j(l, { id: c.advisorId }) : o("brainyrich.common.unassigned", "Unassigned")
|
|
827
841
|
})]
|
|
828
842
|
}),
|
|
829
|
-
/* @__PURE__ */
|
|
830
|
-
/* @__PURE__ */
|
|
843
|
+
/* @__PURE__ */ j(be, {}),
|
|
844
|
+
/* @__PURE__ */ j(Ge, {
|
|
831
845
|
label: o("brainyrich.households.detail.created", "Created"),
|
|
832
846
|
value: g(c.createdAt)
|
|
833
847
|
}),
|
|
834
|
-
/* @__PURE__ */
|
|
848
|
+
/* @__PURE__ */ j(Ge, {
|
|
835
849
|
label: o("brainyrich.households.detail.updated", "Last updated"),
|
|
836
850
|
value: g(c.updatedAt)
|
|
837
851
|
})
|
|
838
852
|
]
|
|
839
853
|
}) }),
|
|
840
|
-
c.notes ? /* @__PURE__ */
|
|
854
|
+
c.notes ? /* @__PURE__ */ j(F, { children: /* @__PURE__ */ M(I, {
|
|
841
855
|
className: "space-y-1 p-4",
|
|
842
|
-
children: [/* @__PURE__ */
|
|
856
|
+
children: [/* @__PURE__ */ j("p", {
|
|
843
857
|
className: "text-xs font-medium uppercase tracking-wide text-text-secondary",
|
|
844
858
|
children: o("brainyrich.households.detail.summary", "Summary")
|
|
845
|
-
}), /* @__PURE__ */
|
|
859
|
+
}), /* @__PURE__ */ j("p", {
|
|
846
860
|
className: "text-sm text-text-primary",
|
|
847
861
|
children: c.notes
|
|
848
862
|
})]
|
|
849
|
-
}) }) : null
|
|
863
|
+
}) }) : null,
|
|
864
|
+
/* @__PURE__ */ j(F, { children: /* @__PURE__ */ j(I, {
|
|
865
|
+
className: "p-4",
|
|
866
|
+
children: /* @__PURE__ */ j(S, {
|
|
867
|
+
entityType: "brainyrich-household",
|
|
868
|
+
entityId: c.id
|
|
869
|
+
})
|
|
870
|
+
}) })
|
|
850
871
|
]
|
|
851
872
|
}),
|
|
852
|
-
/* @__PURE__ */
|
|
873
|
+
/* @__PURE__ */ j(Q, {
|
|
853
874
|
value: "accounts",
|
|
854
875
|
className: "mt-4 space-y-2",
|
|
855
|
-
children:
|
|
856
|
-
icon: /* @__PURE__ */ A
|
|
876
|
+
children: x.length === 0 ? /* @__PURE__ */ j(m, {
|
|
877
|
+
icon: /* @__PURE__ */ j(A, {
|
|
857
878
|
className: "size-6",
|
|
858
879
|
"aria-hidden": "true"
|
|
859
880
|
}),
|
|
860
881
|
title: o("brainyrich.households.detail.noAccounts", "No accounts linked")
|
|
861
|
-
}) :
|
|
882
|
+
}) : x.map(({ account: e, value: t }) => /* @__PURE__ */ M("div", {
|
|
862
883
|
className: "flex items-center justify-between gap-3 rounded-lg border border-border-subtle bg-bg-surface p-3 transition-colors hover:border-[var(--color-action-primary-border)]",
|
|
863
|
-
children: [/* @__PURE__ */
|
|
884
|
+
children: [/* @__PURE__ */ M("div", {
|
|
864
885
|
className: "min-w-0",
|
|
865
|
-
children: [/* @__PURE__ */
|
|
886
|
+
children: [/* @__PURE__ */ j("p", {
|
|
866
887
|
className: "truncate text-sm font-medium text-text-primary",
|
|
867
888
|
children: e.name
|
|
868
|
-
}), /* @__PURE__ */
|
|
889
|
+
}), /* @__PURE__ */ M("p", {
|
|
869
890
|
className: "text-xs text-text-secondary",
|
|
870
891
|
children: [e.institution ?? e.type, e.accountMask ? ` ·••${e.accountMask}` : ""]
|
|
871
892
|
})]
|
|
872
|
-
}), /* @__PURE__ */
|
|
893
|
+
}), /* @__PURE__ */ j("span", {
|
|
873
894
|
className: "shrink-0 text-sm font-semibold tabular-nums text-status-success-text",
|
|
874
895
|
children: _(t, e.currency)
|
|
875
896
|
})]
|
|
876
897
|
}, e.id))
|
|
877
898
|
}),
|
|
878
|
-
/* @__PURE__ */
|
|
899
|
+
/* @__PURE__ */ j(Q, {
|
|
879
900
|
value: "goals",
|
|
880
901
|
className: "mt-4 space-y-2",
|
|
881
|
-
children: y.length === 0 ? /* @__PURE__ */
|
|
882
|
-
icon: /* @__PURE__ */
|
|
902
|
+
children: y.length === 0 ? /* @__PURE__ */ j(m, {
|
|
903
|
+
icon: /* @__PURE__ */ j(D, {
|
|
883
904
|
className: "size-6",
|
|
884
905
|
"aria-hidden": "true"
|
|
885
906
|
}),
|
|
886
907
|
title: o("brainyrich.households.detail.noGoals", "No goals set")
|
|
887
|
-
}) : y.map((e) => /* @__PURE__ */
|
|
908
|
+
}) : y.map((e) => /* @__PURE__ */ M("div", {
|
|
888
909
|
className: "flex items-center justify-between gap-3 rounded-lg border border-border-subtle bg-bg-surface p-3",
|
|
889
|
-
children: [/* @__PURE__ */
|
|
910
|
+
children: [/* @__PURE__ */ M("div", {
|
|
890
911
|
className: "min-w-0",
|
|
891
|
-
children: [/* @__PURE__ */
|
|
912
|
+
children: [/* @__PURE__ */ j("p", {
|
|
892
913
|
className: "truncate text-sm font-medium text-text-primary",
|
|
893
914
|
children: e.name
|
|
894
|
-
}), /* @__PURE__ */
|
|
915
|
+
}), /* @__PURE__ */ M("p", {
|
|
895
916
|
className: "text-xs text-text-secondary",
|
|
896
917
|
children: [
|
|
897
918
|
o("brainyrich.households.detail.goalTarget", "Target"),
|
|
@@ -901,26 +922,26 @@ function Ve({ householdId: e, onClose: n, onEdit: r, tr: o }) {
|
|
|
901
922
|
g(e.targetDate)
|
|
902
923
|
]
|
|
903
924
|
})]
|
|
904
|
-
}), /* @__PURE__ */
|
|
925
|
+
}), /* @__PURE__ */ j(N, {
|
|
905
926
|
variant: v(e.projection),
|
|
906
927
|
className: "shrink-0",
|
|
907
928
|
children: e.projection.replace(/_/g, " ")
|
|
908
929
|
})]
|
|
909
930
|
}, e.id))
|
|
910
931
|
}),
|
|
911
|
-
/* @__PURE__ */
|
|
932
|
+
/* @__PURE__ */ j(Q, {
|
|
912
933
|
value: "documents",
|
|
913
934
|
className: "mt-4",
|
|
914
|
-
children: /* @__PURE__ */
|
|
935
|
+
children: /* @__PURE__ */ j(ae, {
|
|
915
936
|
entityType: "brainyrich-household",
|
|
916
937
|
entityId: c.id,
|
|
917
938
|
heading: o("brainyrich.households.detail.documents", "Documents")
|
|
918
939
|
})
|
|
919
940
|
}),
|
|
920
|
-
/* @__PURE__ */
|
|
941
|
+
/* @__PURE__ */ j(Q, {
|
|
921
942
|
value: "discussion",
|
|
922
943
|
className: "mt-4",
|
|
923
|
-
children: /* @__PURE__ */
|
|
944
|
+
children: /* @__PURE__ */ j(C, {
|
|
924
945
|
entityType: "brainyrich-household",
|
|
925
946
|
entityId: c.id,
|
|
926
947
|
heading: o("brainyrich.households.detail.discussion", "Discussion")
|
|
@@ -928,20 +949,20 @@ function Ve({ householdId: e, onClose: n, onEdit: r, tr: o }) {
|
|
|
928
949
|
})
|
|
929
950
|
]
|
|
930
951
|
}),
|
|
931
|
-
/* @__PURE__ */
|
|
952
|
+
/* @__PURE__ */ M(P, {
|
|
932
953
|
variant: "outline",
|
|
933
954
|
className: "w-full",
|
|
934
955
|
onClick: () => r(c),
|
|
935
|
-
children: [/* @__PURE__ */
|
|
956
|
+
children: [/* @__PURE__ */ j(de, {
|
|
936
957
|
className: "size-4",
|
|
937
958
|
"aria-hidden": "true"
|
|
938
959
|
}), o("brainyrich.households.action.edit", "Edit")]
|
|
939
960
|
})
|
|
940
961
|
]
|
|
941
|
-
}) : /* @__PURE__ */
|
|
962
|
+
}) : /* @__PURE__ */ j("div", {
|
|
942
963
|
className: "p-6",
|
|
943
|
-
children: /* @__PURE__ */
|
|
944
|
-
icon: /* @__PURE__ */
|
|
964
|
+
children: /* @__PURE__ */ j(m, {
|
|
965
|
+
icon: /* @__PURE__ */ j(k, {
|
|
945
966
|
className: "size-6",
|
|
946
967
|
"aria-hidden": "true"
|
|
947
968
|
}),
|
|
@@ -951,38 +972,38 @@ function Ve({ householdId: e, onClose: n, onEdit: r, tr: o }) {
|
|
|
951
972
|
})
|
|
952
973
|
});
|
|
953
974
|
}
|
|
954
|
-
function
|
|
955
|
-
return /* @__PURE__ */
|
|
975
|
+
function We({ icon: e, label: t, value: n }) {
|
|
976
|
+
return /* @__PURE__ */ M("div", {
|
|
956
977
|
className: "rounded-lg border border-border-subtle bg-bg-surface p-3 text-center transition-shadow motion-safe:hover:shadow-[var(--shadow-pop-hover,var(--shadow-elevation-2))]",
|
|
957
978
|
children: [
|
|
958
|
-
/* @__PURE__ */
|
|
979
|
+
/* @__PURE__ */ j("div", {
|
|
959
980
|
className: "mx-auto mb-1 flex size-8 items-center justify-center rounded-full bg-bg-sunken text-text-secondary",
|
|
960
981
|
children: e
|
|
961
982
|
}),
|
|
962
|
-
/* @__PURE__ */
|
|
983
|
+
/* @__PURE__ */ j("p", {
|
|
963
984
|
className: "text-lg font-semibold text-text-primary",
|
|
964
985
|
children: n
|
|
965
986
|
}),
|
|
966
|
-
/* @__PURE__ */
|
|
987
|
+
/* @__PURE__ */ j("p", {
|
|
967
988
|
className: "text-xs text-text-secondary",
|
|
968
989
|
children: t
|
|
969
990
|
})
|
|
970
991
|
]
|
|
971
992
|
});
|
|
972
993
|
}
|
|
973
|
-
function
|
|
974
|
-
return /* @__PURE__ */
|
|
994
|
+
function Ge({ label: e, value: t }) {
|
|
995
|
+
return /* @__PURE__ */ M("div", {
|
|
975
996
|
className: "flex items-center justify-between gap-4",
|
|
976
|
-
children: [/* @__PURE__ */
|
|
997
|
+
children: [/* @__PURE__ */ j("span", {
|
|
977
998
|
className: "text-text-secondary",
|
|
978
999
|
children: e
|
|
979
|
-
}), /* @__PURE__ */
|
|
1000
|
+
}), /* @__PURE__ */ j("span", {
|
|
980
1001
|
className: "text-right font-medium text-text-primary",
|
|
981
1002
|
children: t
|
|
982
1003
|
})]
|
|
983
1004
|
});
|
|
984
1005
|
}
|
|
985
1006
|
//#endregion
|
|
986
|
-
export {
|
|
1007
|
+
export { Be as FamilyPage };
|
|
987
1008
|
|
|
988
1009
|
//# sourceMappingURL=FamilyPage.js.map
|