@burdenoff/microfe-brainyrich 2026.509.101

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (114) hide show
  1. package/README.md +12 -0
  2. package/dist/brainyrich/BrainyRichRoot.d.ts +5 -0
  3. package/dist/brainyrich/BrainyRichRoot.d.ts.map +1 -0
  4. package/dist/brainyrich/BrainyRichRoot.js +161 -0
  5. package/dist/brainyrich/BrainyRichRoot.js.map +1 -0
  6. package/dist/brainyrich/BrainyRichRoutes.d.ts +2 -0
  7. package/dist/brainyrich/BrainyRichRoutes.d.ts.map +1 -0
  8. package/dist/brainyrich/BrainyRichRoutes.js +95 -0
  9. package/dist/brainyrich/BrainyRichRoutes.js.map +1 -0
  10. package/dist/brainyrich/index.d.ts +5 -0
  11. package/dist/brainyrich/index.d.ts.map +1 -0
  12. package/dist/brainyrich/index.js +3 -0
  13. package/dist/brainyrich/pages/AccountsPage.d.ts +2 -0
  14. package/dist/brainyrich/pages/AccountsPage.d.ts.map +1 -0
  15. package/dist/brainyrich/pages/AccountsPage.js +184 -0
  16. package/dist/brainyrich/pages/AccountsPage.js.map +1 -0
  17. package/dist/brainyrich/pages/AdvisorsPage.d.ts +2 -0
  18. package/dist/brainyrich/pages/AdvisorsPage.d.ts.map +1 -0
  19. package/dist/brainyrich/pages/AdvisorsPage.js +375 -0
  20. package/dist/brainyrich/pages/AdvisorsPage.js.map +1 -0
  21. package/dist/brainyrich/pages/AiAssistantPage.d.ts +2 -0
  22. package/dist/brainyrich/pages/AiAssistantPage.d.ts.map +1 -0
  23. package/dist/brainyrich/pages/AiAssistantPage.js +389 -0
  24. package/dist/brainyrich/pages/AiAssistantPage.js.map +1 -0
  25. package/dist/brainyrich/pages/AnalyticsPage.d.ts +2 -0
  26. package/dist/brainyrich/pages/AnalyticsPage.d.ts.map +1 -0
  27. package/dist/brainyrich/pages/AnalyticsPage.js +316 -0
  28. package/dist/brainyrich/pages/AnalyticsPage.js.map +1 -0
  29. package/dist/brainyrich/pages/AssistantPage.d.ts +2 -0
  30. package/dist/brainyrich/pages/AssistantPage.d.ts.map +1 -0
  31. package/dist/brainyrich/pages/AssistantPage.js +332 -0
  32. package/dist/brainyrich/pages/AssistantPage.js.map +1 -0
  33. package/dist/brainyrich/pages/DashboardPage.d.ts +2 -0
  34. package/dist/brainyrich/pages/DashboardPage.d.ts.map +1 -0
  35. package/dist/brainyrich/pages/DashboardPage.js +258 -0
  36. package/dist/brainyrich/pages/DashboardPage.js.map +1 -0
  37. package/dist/brainyrich/pages/EstatePage.d.ts +2 -0
  38. package/dist/brainyrich/pages/EstatePage.d.ts.map +1 -0
  39. package/dist/brainyrich/pages/EstatePage.js +269 -0
  40. package/dist/brainyrich/pages/EstatePage.js.map +1 -0
  41. package/dist/brainyrich/pages/FamilyPage.d.ts +2 -0
  42. package/dist/brainyrich/pages/FamilyPage.d.ts.map +1 -0
  43. package/dist/brainyrich/pages/FamilyPage.js +358 -0
  44. package/dist/brainyrich/pages/FamilyPage.js.map +1 -0
  45. package/dist/brainyrich/pages/GoalsPage.d.ts +2 -0
  46. package/dist/brainyrich/pages/GoalsPage.d.ts.map +1 -0
  47. package/dist/brainyrich/pages/GoalsPage.js +160 -0
  48. package/dist/brainyrich/pages/GoalsPage.js.map +1 -0
  49. package/dist/brainyrich/pages/InsurancePage.d.ts +2 -0
  50. package/dist/brainyrich/pages/InsurancePage.d.ts.map +1 -0
  51. package/dist/brainyrich/pages/InsurancePage.js +181 -0
  52. package/dist/brainyrich/pages/InsurancePage.js.map +1 -0
  53. package/dist/brainyrich/pages/InvestmentsPage.d.ts +2 -0
  54. package/dist/brainyrich/pages/InvestmentsPage.d.ts.map +1 -0
  55. package/dist/brainyrich/pages/InvestmentsPage.js +330 -0
  56. package/dist/brainyrich/pages/InvestmentsPage.js.map +1 -0
  57. package/dist/brainyrich/pages/MarketplacePage.d.ts +2 -0
  58. package/dist/brainyrich/pages/MarketplacePage.d.ts.map +1 -0
  59. package/dist/brainyrich/pages/MarketplacePage.js +450 -0
  60. package/dist/brainyrich/pages/MarketplacePage.js.map +1 -0
  61. package/dist/brainyrich/pages/PortfoliosPage.d.ts +2 -0
  62. package/dist/brainyrich/pages/PortfoliosPage.d.ts.map +1 -0
  63. package/dist/brainyrich/pages/PortfoliosPage.js +175 -0
  64. package/dist/brainyrich/pages/PortfoliosPage.js.map +1 -0
  65. package/dist/brainyrich/pages/ReportsPage.d.ts +2 -0
  66. package/dist/brainyrich/pages/ReportsPage.d.ts.map +1 -0
  67. package/dist/brainyrich/pages/ReportsPage.js +261 -0
  68. package/dist/brainyrich/pages/ReportsPage.js.map +1 -0
  69. package/dist/brainyrich/pages/RiskPage.d.ts +2 -0
  70. package/dist/brainyrich/pages/RiskPage.d.ts.map +1 -0
  71. package/dist/brainyrich/pages/RiskPage.js +222 -0
  72. package/dist/brainyrich/pages/RiskPage.js.map +1 -0
  73. package/dist/brainyrich/pages/TaxPage.d.ts +2 -0
  74. package/dist/brainyrich/pages/TaxPage.d.ts.map +1 -0
  75. package/dist/brainyrich/pages/TaxPage.js +246 -0
  76. package/dist/brainyrich/pages/TaxPage.js.map +1 -0
  77. package/dist/brainyrich/pages/_shared.d.ts +21 -0
  78. package/dist/brainyrich/pages/_shared.d.ts.map +1 -0
  79. package/dist/brainyrich/pages/_shared.js +63 -0
  80. package/dist/brainyrich/pages/_shared.js.map +1 -0
  81. package/dist/brainyrich/providers/BrainyRichProvider.d.ts +6 -0
  82. package/dist/brainyrich/providers/BrainyRichProvider.d.ts.map +1 -0
  83. package/dist/brainyrich/providers/BrainyRichProvider.js +27 -0
  84. package/dist/brainyrich/providers/BrainyRichProvider.js.map +1 -0
  85. package/dist/brainyrich/store/brainyrichStore.d.ts +19 -0
  86. package/dist/brainyrich/store/brainyrichStore.d.ts.map +1 -0
  87. package/dist/brainyrich/store/brainyrichStore.js +272 -0
  88. package/dist/brainyrich/store/brainyrichStore.js.map +1 -0
  89. package/dist/brainyrich/types/index.d.ts +116 -0
  90. package/dist/brainyrich/types/index.d.ts.map +1 -0
  91. package/dist/brainyrich/utils/cn.d.ts +4 -0
  92. package/dist/brainyrich/utils/cn.d.ts.map +1 -0
  93. package/dist/brainyrich/utils/i18n.d.ts +6 -0
  94. package/dist/brainyrich/utils/i18n.d.ts.map +1 -0
  95. package/dist/brainyrich/utils/i18n.js +15 -0
  96. package/dist/brainyrich/utils/i18n.js.map +1 -0
  97. package/dist/brainyrich/utils/navigation.d.ts +2 -0
  98. package/dist/brainyrich/utils/navigation.d.ts.map +1 -0
  99. package/dist/brainyrich/utils/navigation.js +8 -0
  100. package/dist/brainyrich/utils/navigation.js.map +1 -0
  101. package/dist/dev/main.d.ts +2 -0
  102. package/dist/dev/main.d.ts.map +1 -0
  103. package/dist/generated/global-operations.d.ts +2 -0
  104. package/dist/generated/global-operations.d.ts.map +1 -0
  105. package/dist/generated/global-types.d.ts +18199 -0
  106. package/dist/generated/global-types.d.ts.map +1 -0
  107. package/dist/generated/wspace-operations.d.ts +2 -0
  108. package/dist/generated/wspace-operations.d.ts.map +1 -0
  109. package/dist/generated/wspace-types.d.ts +43046 -0
  110. package/dist/generated/wspace-types.d.ts.map +1 -0
  111. package/dist/index.d.ts +2 -0
  112. package/dist/index.d.ts.map +1 -0
  113. package/dist/index.js +5 -0
  114. package/package.json +107 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DashboardPage.js","names":[],"sources":["../../../src/brainyrich/pages/DashboardPage.tsx"],"sourcesContent":["import {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n CardDescription,\n Button,\n Badge,\n} from '@burdenoff/fe-libs/ui';\nimport {\n TrendingUp,\n Target,\n Bell,\n Briefcase,\n ArrowUpRight,\n ArrowDownRight,\n BarChart3,\n Wallet,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { useBrainyRichStore } from '../store/brainyrichStore';\nimport { tWithFallback } from '../utils/i18n';\nimport { SectionShell, KpiGrid, formatMoney, statusBadgeVariant } from './_shared';\n\nconst marketIndices = [\n { name: 'S&P 500', value: '5,321.08', change: '+1.2%', positive: true },\n { name: 'NIFTY 50', value: '23,851.40', change: '+0.8%', positive: true },\n { name: 'NASDAQ', value: '16,742.39', change: '-0.3%', positive: false },\n];\n\nexport function DashboardPage() {\n const { t } = useI18n();\n const { metrics, workItems, portfolios, holdings, goals } = useBrainyRichStore();\n const translate = (key: string, fallback: string, params?: Record<string, string | number>) =>\n tWithFallback(t, key, fallback, params);\n\n const translatedMetrics = metrics.map((metric) => ({\n ...metric,\n label:\n metric.label === 'Net Worth'\n ? translate('brainyrich.dashboard.metrics.netWorth', 'Net Worth')\n : metric.label === 'Invested Assets'\n ? translate('brainyrich.dashboard.metrics.investedAssets', 'Invested Assets')\n : metric.label === 'Liquidity'\n ? translate('brainyrich.dashboard.metrics.liquidity', 'Liquidity')\n : metric.label === 'Goal Completion'\n ? translate('brainyrich.dashboard.metrics.goalCompletion', 'Goal Completion')\n : metric.label,\n }));\n\n const totalPortfolioValue = portfolios.reduce((s, p) => s + p.value, 0);\n const overallGoalPct = goals.length\n ? Math.round(\n goals.reduce((s, g) => s + (g.currentAmount / g.targetAmount) * 100, 0) / goals.length\n )\n : 0;\n\n return (\n <SectionShell\n title={translate('brainyrich.dashboard.title', 'Wealth Dashboard')}\n description={translate(\n 'brainyrich.dashboard.description',\n 'Your consolidated financial overview at a glance'\n )}\n actionLabel={translate('brainyrich.dashboard.actions.healthCheck', 'Run Health Check')}\n badges={[translate('brainyrich.dashboard.badges.liveData', 'Live Data')]}\n >\n {/* KPI row */}\n <KpiGrid items={translatedMetrics} />\n\n <div className=\"grid gap-6 lg:grid-cols-3\">\n {/* Portfolio summary */}\n <Card className=\"lg:col-span-2\">\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Briefcase className=\"h-5 w-5\" />\n {translate('brainyrich.dashboard.sections.portfolioSnapshot', 'Portfolio Snapshot')}\n </CardTitle>\n <CardDescription>\n {translate(\n 'brainyrich.dashboard.sections.portfolioSnapshotDescription',\n 'Current allocation across strategies'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-4\">\n <div className=\"flex items-baseline justify-between\">\n <span className=\"text-2xl font-bold\">{formatMoney(totalPortfolioValue)}</span>\n <span className=\"text-sm text-emerald-600 flex items-center gap-1\">\n <TrendingUp className=\"h-3 w-3\" />\n {translate('brainyrich.dashboard.weightedYtdPrefix', 'Weighted YTD +')}\n {(\n portfolios.reduce((s, p) => s + p.ytdReturnPct * p.value, 0) / totalPortfolioValue\n ).toFixed(1)}\n %\n </span>\n </div>\n {portfolios.map((p) => {\n const pct = Math.round((p.value / totalPortfolioValue) * 100);\n return (\n <div key={p.id} className=\"space-y-1\">\n <div className=\"flex items-center justify-between text-sm\">\n <span className=\"font-medium\">{p.name}</span>\n <span>\n {formatMoney(p.value)} ({pct}%)\n </span>\n </div>\n <div className=\"h-2 rounded bg-muted overflow-hidden\">\n <div className=\"h-2 rounded bg-primary\" style={{ width: `${pct}%` }} />\n </div>\n <div className=\"flex items-center justify-between text-xs text-muted-foreground\">\n <span>\n {translate('brainyrich.dashboard.portfolio.ytdPrefix', 'YTD +')}\n {p.ytdReturnPct}%\n </span>\n <Badge\n variant={\n p.risk === 'High'\n ? 'destructive'\n : p.risk === 'Moderate'\n ? 'secondary'\n : 'outline'\n }\n className=\"text-[10px]\"\n >\n {p.risk}\n </Badge>\n </div>\n </div>\n );\n })}\n </CardContent>\n </Card>\n\n {/* Market indices */}\n <div className=\"space-y-4\">\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"flex items-center gap-2 text-base\">\n <BarChart3 className=\"h-4 w-4\" />\n {translate('brainyrich.dashboard.sections.marketSummary', 'Market Summary')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {marketIndices.map((idx) => (\n <div key={idx.name} className=\"flex items-center justify-between\">\n <span className=\"text-sm font-medium\">{idx.name}</span>\n <div className=\"text-right\">\n <div className=\"text-sm\">{idx.value}</div>\n <div\n className={`text-xs flex items-center gap-0.5 ${idx.positive ? 'text-emerald-600' : 'text-red-600'}`}\n >\n {idx.positive ? (\n <ArrowUpRight className=\"h-3 w-3\" />\n ) : (\n <ArrowDownRight className=\"h-3 w-3\" />\n )}\n {idx.change}\n </div>\n </div>\n </div>\n ))}\n </CardContent>\n </Card>\n\n <Card>\n <CardHeader className=\"pb-3\">\n <CardTitle className=\"flex items-center gap-2 text-base\">\n <Target className=\"h-4 w-4\" />\n {translate('brainyrich.dashboard.sections.goalProgress', 'Goal Progress')}\n </CardTitle>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n <div className=\"text-center\">\n <span className=\"text-3xl font-bold\">{overallGoalPct}%</span>\n <p className=\"text-xs text-muted-foreground mt-1\">\n {translate(\n 'brainyrich.dashboard.goalProgress.averageCompletion',\n 'Average goal completion'\n )}\n </p>\n </div>\n {goals.map((g) => {\n const pct = Math.round((g.currentAmount / g.targetAmount) * 100);\n return (\n <div key={g.id} className=\"space-y-1\">\n <div className=\"flex justify-between text-xs\">\n <span>{g.title}</span>\n <span>{pct}%</span>\n </div>\n <div className=\"h-1.5 rounded bg-muted overflow-hidden\">\n <div className=\"h-1.5 rounded bg-emerald-500\" style={{ width: `${pct}%` }} />\n </div>\n </div>\n );\n })}\n </CardContent>\n </Card>\n </div>\n </div>\n\n {/* Top holdings row */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Wallet className=\"h-5 w-5\" />\n {translate('brainyrich.dashboard.sections.topHoldings', 'Top Holdings')}\n </CardTitle>\n <CardDescription>\n {translate(\n 'brainyrich.dashboard.sections.topHoldingsDescription',\n 'Highest-value positions across all portfolios'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-4\">\n {holdings.map((h) => (\n <div\n key={h.symbol}\n className=\"flex items-center justify-between rounded-lg border p-3\"\n >\n <div>\n <p className=\"font-semibold text-sm\">{h.symbol}</p>\n <p className=\"text-xs text-muted-foreground\">{h.sector}</p>\n </div>\n <div className=\"text-right\">\n <p className=\"text-sm font-medium\">{formatMoney(h.marketValue)}</p>\n <p\n className={`text-xs ${h.changePct >= 0 ? 'text-emerald-600' : 'text-red-600'}`}\n >\n {h.changePct >= 0 ? '+' : ''}\n {h.changePct}%\n </p>\n </div>\n </div>\n ))}\n </div>\n </CardContent>\n </Card>\n\n {/* Work items */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Bell className=\"h-5 w-5\" />\n {translate('brainyrich.dashboard.sections.activeWorkItems', 'Active Work Items')}\n </CardTitle>\n <CardDescription>\n {translate(\n 'brainyrich.dashboard.sections.activeWorkItemsDescription',\n 'Tasks and initiatives from your wealth operations teams'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {workItems.map((w) => (\n <div key={w.id} className=\"flex items-center justify-between rounded-lg border p-3\">\n <div className=\"space-y-0.5\">\n <p className=\"text-sm font-medium\">{w.title}</p>\n <p className=\"text-xs text-muted-foreground\">\n {w.owner} &middot; {w.updatedAt}\n </p>\n </div>\n <Badge variant={statusBadgeVariant(w.status)}>{w.status.replace('_', ' ')}</Badge>\n </div>\n ))}\n </CardContent>\n </Card>\n\n {/* Quick action strip */}\n <div className=\"grid gap-3 sm:grid-cols-2 lg:grid-cols-4\">\n {[\n {\n label: translate(\n 'brainyrich.dashboard.quickActions.placeTradeOrder',\n 'Place Trade Order'\n ),\n desc: translate(\n 'brainyrich.dashboard.quickActions.placeTradeOrderDesc',\n 'Buy or sell securities'\n ),\n },\n {\n label: translate(\n 'brainyrich.dashboard.quickActions.linkNewAccount',\n 'Link New Account'\n ),\n desc: translate(\n 'brainyrich.dashboard.quickActions.linkNewAccountDesc',\n 'Connect a financial account'\n ),\n },\n {\n label: translate('brainyrich.dashboard.quickActions.generateReport', 'Generate Report'),\n desc: translate(\n 'brainyrich.dashboard.quickActions.generateReportDesc',\n 'Create a wealth snapshot'\n ),\n },\n {\n label: translate('brainyrich.dashboard.quickActions.askWealthAi', 'Ask Wealth AI'),\n desc: translate(\n 'brainyrich.dashboard.quickActions.askWealthAiDesc',\n 'Get personalized advice'\n ),\n },\n ].map((a) => (\n <Button\n key={a.label}\n variant=\"outline\"\n className=\"h-auto flex-col items-start p-4 text-left\"\n >\n <span className=\"font-medium text-sm\">{a.label}</span>\n <span className=\"text-xs text-muted-foreground\">{a.desc}</span>\n </Button>\n ))}\n </div>\n </SectionShell>\n );\n}\n"],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function EstatePage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=EstatePage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EstatePage.d.ts","sourceRoot":"","sources":["../../../src/brainyrich/pages/EstatePage.tsx"],"names":[],"mappings":"AAmDA,wBAAgB,UAAU,4CAgLzB"}
@@ -0,0 +1,269 @@
1
+ import { KpiGrid as e, SectionShell as t, formatMoney as n } from "./_shared.js";
2
+ import { AlertTriangle as r, Calendar as i, CheckCircle as a, FileText as o, Shield as s, Users as c } from "lucide-react";
3
+ import { jsx as l, jsxs as u } from "react/jsx-runtime";
4
+ import { Badge as d, Button as f, Card as p, CardContent as m, CardDescription as h, CardHeader as g, CardTitle as _ } from "@burdenoff/fe-libs/ui";
5
+ //#region src/brainyrich/pages/EstatePage.tsx
6
+ var v = [
7
+ {
8
+ id: "d1",
9
+ title: "Last Will & Testament",
10
+ status: "Current",
11
+ lastUpdated: "2025-08-15",
12
+ attorney: "Smith & Associates"
13
+ },
14
+ {
15
+ id: "d2",
16
+ title: "Revocable Living Trust",
17
+ status: "Current",
18
+ lastUpdated: "2025-08-15",
19
+ attorney: "Smith & Associates"
20
+ },
21
+ {
22
+ id: "d3",
23
+ title: "Durable Power of Attorney",
24
+ status: "Current",
25
+ lastUpdated: "2025-05-20",
26
+ attorney: "Smith & Associates"
27
+ },
28
+ {
29
+ id: "d4",
30
+ title: "Healthcare Directive",
31
+ status: "Needs Update",
32
+ lastUpdated: "2024-03-10",
33
+ attorney: "Previous Attorney"
34
+ },
35
+ {
36
+ id: "d5",
37
+ title: "Beneficiary Designations",
38
+ status: "Missing",
39
+ lastUpdated: "",
40
+ attorney: ""
41
+ }
42
+ ], y = [
43
+ {
44
+ name: "Priya Krishnamurthy",
45
+ relationship: "Spouse",
46
+ allocation: 60,
47
+ type: "Primary"
48
+ },
49
+ {
50
+ name: "Arun Krishnamurthy",
51
+ relationship: "Son",
52
+ allocation: 20,
53
+ type: "Primary"
54
+ },
55
+ {
56
+ name: "Meera Krishnamurthy",
57
+ relationship: "Daughter",
58
+ allocation: 20,
59
+ type: "Primary"
60
+ },
61
+ {
62
+ name: "Ramesh Krishnamurthy",
63
+ relationship: "Brother",
64
+ allocation: 0,
65
+ type: "Contingent"
66
+ }
67
+ ];
68
+ function b() {
69
+ return /* @__PURE__ */ u(t, {
70
+ title: "Estate Planning",
71
+ description: "Protect your legacy with comprehensive estate and succession planning",
72
+ actionLabel: "Schedule Review",
73
+ badges: ["3 of 5 Documents Current"],
74
+ children: [
75
+ /* @__PURE__ */ l(e, { items: [
76
+ {
77
+ label: "Total Estate Value",
78
+ value: n(245e4),
79
+ trend: "All assets"
80
+ },
81
+ {
82
+ label: "Planning Score",
83
+ value: "78%",
84
+ trend: "Good foundation"
85
+ },
86
+ {
87
+ label: "Primary Beneficiaries",
88
+ value: "3"
89
+ },
90
+ {
91
+ label: "Documents Complete",
92
+ value: "3/5",
93
+ trend: "2 need attention"
94
+ }
95
+ ] }),
96
+ /* @__PURE__ */ u("div", {
97
+ className: "grid gap-4 lg:grid-cols-2",
98
+ children: [/* @__PURE__ */ u(p, { children: [/* @__PURE__ */ u(g, { children: [/* @__PURE__ */ u(_, {
99
+ className: "flex items-center gap-2",
100
+ children: [/* @__PURE__ */ l(o, { className: "h-5 w-5" }), "Estate Documents"]
101
+ }), /* @__PURE__ */ l(h, { children: "Legal documents and their current status" })] }), /* @__PURE__ */ l(m, {
102
+ className: "space-y-3",
103
+ children: v.map((e) => /* @__PURE__ */ u("div", {
104
+ className: "flex items-center justify-between rounded-lg border p-3",
105
+ children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
106
+ className: "font-medium text-sm",
107
+ children: e.title
108
+ }), /* @__PURE__ */ u("p", {
109
+ className: "text-xs text-muted-foreground",
110
+ children: [e.lastUpdated ? `Updated: ${e.lastUpdated}` : "Not yet created", e.attorney ? ` | ${e.attorney}` : ""]
111
+ })] }), /* @__PURE__ */ u(d, {
112
+ variant: e.status === "Current" ? "default" : e.status === "Needs Update" ? "secondary" : "destructive",
113
+ children: [
114
+ e.status === "Current" && /* @__PURE__ */ l(a, { className: "mr-1 h-3 w-3" }),
115
+ e.status === "Needs Update" && /* @__PURE__ */ l(r, { className: "mr-1 h-3 w-3" }),
116
+ e.status
117
+ ]
118
+ })]
119
+ }, e.id))
120
+ })] }), /* @__PURE__ */ u(p, { children: [/* @__PURE__ */ u(g, { children: [/* @__PURE__ */ u(_, {
121
+ className: "flex items-center gap-2",
122
+ children: [/* @__PURE__ */ l(c, { className: "h-5 w-5" }), "Beneficiary Allocation"]
123
+ }), /* @__PURE__ */ l(h, { children: "How your estate will be distributed" })] }), /* @__PURE__ */ l(m, {
124
+ className: "space-y-3",
125
+ children: y.map((e) => /* @__PURE__ */ u("div", {
126
+ className: "space-y-1",
127
+ children: [/* @__PURE__ */ u("div", {
128
+ className: "flex items-center justify-between",
129
+ children: [/* @__PURE__ */ u("div", { children: [/* @__PURE__ */ l("p", {
130
+ className: "font-medium text-sm",
131
+ children: e.name
132
+ }), /* @__PURE__ */ u("p", {
133
+ className: "text-xs text-muted-foreground",
134
+ children: [
135
+ e.relationship,
136
+ " · ",
137
+ e.type
138
+ ]
139
+ })] }), /* @__PURE__ */ l("span", {
140
+ className: "font-semibold text-sm",
141
+ children: e.allocation > 0 ? `${e.allocation}%` : "Contingent"
142
+ })]
143
+ }), e.allocation > 0 && /* @__PURE__ */ l("div", {
144
+ className: "h-2 rounded bg-muted overflow-hidden",
145
+ children: /* @__PURE__ */ l("div", {
146
+ className: "h-2 rounded bg-primary",
147
+ style: { width: `${e.allocation}%` }
148
+ })
149
+ })]
150
+ }, e.name))
151
+ })] })]
152
+ }),
153
+ /* @__PURE__ */ u(p, { children: [/* @__PURE__ */ u(g, { children: [/* @__PURE__ */ u(_, {
154
+ className: "flex items-center gap-2",
155
+ children: [/* @__PURE__ */ l(s, { className: "h-5 w-5" }), "Estate Asset Breakdown"]
156
+ }), /* @__PURE__ */ l(h, { children: "Composition of your total estate value" })] }), /* @__PURE__ */ u(m, {
157
+ className: "space-y-3",
158
+ children: [
159
+ [
160
+ {
161
+ asset: "Liquid Assets (Cash, Savings)",
162
+ value: 95e4
163
+ },
164
+ {
165
+ asset: "Real Estate (Primary + Investment)",
166
+ value: 85e4
167
+ },
168
+ {
169
+ asset: "Investment Portfolio",
170
+ value: 5e5
171
+ },
172
+ {
173
+ asset: "Business Interests",
174
+ value: 15e4
175
+ }
176
+ ].map((e) => {
177
+ let t = Math.round(e.value / 245e4 * 100);
178
+ return /* @__PURE__ */ u("div", {
179
+ className: "space-y-1",
180
+ children: [/* @__PURE__ */ u("div", {
181
+ className: "flex justify-between text-sm",
182
+ children: [/* @__PURE__ */ l("span", {
183
+ className: "font-medium",
184
+ children: e.asset
185
+ }), /* @__PURE__ */ u("span", { children: [
186
+ n(e.value),
187
+ " (",
188
+ t,
189
+ "%)"
190
+ ] })]
191
+ }), /* @__PURE__ */ l("div", {
192
+ className: "h-2 rounded bg-muted overflow-hidden",
193
+ children: /* @__PURE__ */ l("div", {
194
+ className: "h-2 rounded bg-primary",
195
+ style: { width: `${t}%` }
196
+ })
197
+ })]
198
+ }, e.asset);
199
+ }),
200
+ /* @__PURE__ */ u("div", {
201
+ className: "flex justify-between rounded-lg bg-muted/50 p-3 text-sm font-semibold mt-2",
202
+ children: [/* @__PURE__ */ l("span", { children: "Estimated Estate Tax" }), /* @__PURE__ */ l("span", {
203
+ className: "text-red-600",
204
+ children: n(245e3)
205
+ })]
206
+ }),
207
+ /* @__PURE__ */ u("div", {
208
+ className: "flex justify-between rounded-lg bg-emerald-50 p-3 text-sm font-semibold",
209
+ children: [/* @__PURE__ */ l("span", { children: "Net Bequest Amount" }), /* @__PURE__ */ l("span", {
210
+ className: "text-emerald-600",
211
+ children: n(2205e3)
212
+ })]
213
+ })
214
+ ]
215
+ })] }),
216
+ /* @__PURE__ */ u(p, { children: [/* @__PURE__ */ u(g, { children: [/* @__PURE__ */ l(_, { children: "Priority Action Items" }), /* @__PURE__ */ l(h, { children: "Tasks to improve your estate plan" })] }), /* @__PURE__ */ l(m, {
217
+ className: "space-y-3",
218
+ children: [
219
+ {
220
+ title: "Update Healthcare Directive",
221
+ desc: "Last updated March 2024 - needs annual review",
222
+ priority: "High",
223
+ color: "border-red-200 bg-red-50"
224
+ },
225
+ {
226
+ title: "Create Beneficiary Designations",
227
+ desc: "Update beneficiaries on retirement accounts and insurance",
228
+ priority: "High",
229
+ color: "border-yellow-200 bg-yellow-50"
230
+ },
231
+ {
232
+ title: "Explore Charitable Remainder Trust",
233
+ desc: "Additional tax benefits through charitable giving",
234
+ priority: "Medium",
235
+ color: "border-blue-200 bg-blue-50"
236
+ }
237
+ ].map((e) => /* @__PURE__ */ u("div", {
238
+ className: `rounded-lg border p-3 ${e.color}`,
239
+ children: [
240
+ /* @__PURE__ */ u("div", {
241
+ className: "flex items-center justify-between mb-1",
242
+ children: [/* @__PURE__ */ l("p", {
243
+ className: "font-medium text-sm",
244
+ children: e.title
245
+ }), /* @__PURE__ */ l(d, {
246
+ variant: e.priority === "High" ? "destructive" : "secondary",
247
+ children: e.priority
248
+ })]
249
+ }),
250
+ /* @__PURE__ */ l("p", {
251
+ className: "text-xs text-muted-foreground",
252
+ children: e.desc
253
+ }),
254
+ /* @__PURE__ */ u(f, {
255
+ variant: "outline",
256
+ size: "sm",
257
+ className: "mt-2",
258
+ children: [/* @__PURE__ */ l(i, { className: "mr-1 h-3 w-3" }), "Schedule"]
259
+ })
260
+ ]
261
+ }, e.title))
262
+ })] })
263
+ ]
264
+ });
265
+ }
266
+ //#endregion
267
+ export { b as EstatePage };
268
+
269
+ //# sourceMappingURL=EstatePage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EstatePage.js","names":[],"sources":["../../../src/brainyrich/pages/EstatePage.tsx"],"sourcesContent":["import {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n CardDescription,\n Badge,\n Button,\n} from '@burdenoff/fe-libs/ui';\nimport { FileText, Users, Shield, AlertTriangle, CheckCircle, Calendar } from 'lucide-react';\nimport { SectionShell, KpiGrid, formatMoney } from './_shared';\n\nconst documents = [\n {\n id: 'd1',\n title: 'Last Will & Testament',\n status: 'Current',\n lastUpdated: '2025-08-15',\n attorney: 'Smith & Associates',\n },\n {\n id: 'd2',\n title: 'Revocable Living Trust',\n status: 'Current',\n lastUpdated: '2025-08-15',\n attorney: 'Smith & Associates',\n },\n {\n id: 'd3',\n title: 'Durable Power of Attorney',\n status: 'Current',\n lastUpdated: '2025-05-20',\n attorney: 'Smith & Associates',\n },\n {\n id: 'd4',\n title: 'Healthcare Directive',\n status: 'Needs Update',\n lastUpdated: '2024-03-10',\n attorney: 'Previous Attorney',\n },\n { id: 'd5', title: 'Beneficiary Designations', status: 'Missing', lastUpdated: '', attorney: '' },\n];\n\nconst beneficiaries = [\n { name: 'Priya Krishnamurthy', relationship: 'Spouse', allocation: 60, type: 'Primary' },\n { name: 'Arun Krishnamurthy', relationship: 'Son', allocation: 20, type: 'Primary' },\n { name: 'Meera Krishnamurthy', relationship: 'Daughter', allocation: 20, type: 'Primary' },\n { name: 'Ramesh Krishnamurthy', relationship: 'Brother', allocation: 0, type: 'Contingent' },\n];\n\nexport function EstatePage() {\n return (\n <SectionShell\n title=\"Estate Planning\"\n description=\"Protect your legacy with comprehensive estate and succession planning\"\n actionLabel=\"Schedule Review\"\n badges={['3 of 5 Documents Current']}\n >\n <KpiGrid\n items={[\n { label: 'Total Estate Value', value: formatMoney(2450000), trend: 'All assets' },\n { label: 'Planning Score', value: '78%', trend: 'Good foundation' },\n { label: 'Primary Beneficiaries', value: '3' },\n { label: 'Documents Complete', value: '3/5', trend: '2 need attention' },\n ]}\n />\n\n <div className=\"grid gap-4 lg:grid-cols-2\">\n {/* Documents */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <FileText className=\"h-5 w-5\" />\n Estate Documents\n </CardTitle>\n <CardDescription>Legal documents and their current status</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {documents.map((d) => (\n <div key={d.id} className=\"flex items-center justify-between rounded-lg border p-3\">\n <div>\n <p className=\"font-medium text-sm\">{d.title}</p>\n <p className=\"text-xs text-muted-foreground\">\n {d.lastUpdated ? `Updated: ${d.lastUpdated}` : 'Not yet created'}\n {d.attorney ? ` | ${d.attorney}` : ''}\n </p>\n </div>\n <Badge\n variant={\n d.status === 'Current'\n ? 'default'\n : d.status === 'Needs Update'\n ? 'secondary'\n : 'destructive'\n }\n >\n {d.status === 'Current' && <CheckCircle className=\"mr-1 h-3 w-3\" />}\n {d.status === 'Needs Update' && <AlertTriangle className=\"mr-1 h-3 w-3\" />}\n {d.status}\n </Badge>\n </div>\n ))}\n </CardContent>\n </Card>\n\n {/* Beneficiaries */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Users className=\"h-5 w-5\" />\n Beneficiary Allocation\n </CardTitle>\n <CardDescription>How your estate will be distributed</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {beneficiaries.map((b) => (\n <div key={b.name} className=\"space-y-1\">\n <div className=\"flex items-center justify-between\">\n <div>\n <p className=\"font-medium text-sm\">{b.name}</p>\n <p className=\"text-xs text-muted-foreground\">\n {b.relationship} &middot; {b.type}\n </p>\n </div>\n <span className=\"font-semibold text-sm\">\n {b.allocation > 0 ? `${b.allocation}%` : 'Contingent'}\n </span>\n </div>\n {b.allocation > 0 && (\n <div className=\"h-2 rounded bg-muted overflow-hidden\">\n <div className=\"h-2 rounded bg-primary\" style={{ width: `${b.allocation}%` }} />\n </div>\n )}\n </div>\n ))}\n </CardContent>\n </Card>\n </div>\n\n {/* Estate breakdown */}\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Shield className=\"h-5 w-5\" />\n Estate Asset Breakdown\n </CardTitle>\n <CardDescription>Composition of your total estate value</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {[\n { asset: 'Liquid Assets (Cash, Savings)', value: 950000 },\n { asset: 'Real Estate (Primary + Investment)', value: 850000 },\n { asset: 'Investment Portfolio', value: 500000 },\n { asset: 'Business Interests', value: 150000 },\n ].map((a) => {\n const pct = Math.round((a.value / 2450000) * 100);\n return (\n <div key={a.asset} className=\"space-y-1\">\n <div className=\"flex justify-between text-sm\">\n <span className=\"font-medium\">{a.asset}</span>\n <span>\n {formatMoney(a.value)} ({pct}%)\n </span>\n </div>\n <div className=\"h-2 rounded bg-muted overflow-hidden\">\n <div className=\"h-2 rounded bg-primary\" style={{ width: `${pct}%` }} />\n </div>\n </div>\n );\n })}\n <div className=\"flex justify-between rounded-lg bg-muted/50 p-3 text-sm font-semibold mt-2\">\n <span>Estimated Estate Tax</span>\n <span className=\"text-red-600\">{formatMoney(245000)}</span>\n </div>\n <div className=\"flex justify-between rounded-lg bg-emerald-50 p-3 text-sm font-semibold\">\n <span>Net Bequest Amount</span>\n <span className=\"text-emerald-600\">{formatMoney(2205000)}</span>\n </div>\n </CardContent>\n </Card>\n\n {/* Action items */}\n <Card>\n <CardHeader>\n <CardTitle>Priority Action Items</CardTitle>\n <CardDescription>Tasks to improve your estate plan</CardDescription>\n </CardHeader>\n <CardContent className=\"space-y-3\">\n {[\n {\n title: 'Update Healthcare Directive',\n desc: 'Last updated March 2024 - needs annual review',\n priority: 'High',\n color: 'border-red-200 bg-red-50',\n },\n {\n title: 'Create Beneficiary Designations',\n desc: 'Update beneficiaries on retirement accounts and insurance',\n priority: 'High',\n color: 'border-yellow-200 bg-yellow-50',\n },\n {\n title: 'Explore Charitable Remainder Trust',\n desc: 'Additional tax benefits through charitable giving',\n priority: 'Medium',\n color: 'border-blue-200 bg-blue-50',\n },\n ].map((item) => (\n <div key={item.title} className={`rounded-lg border p-3 ${item.color}`}>\n <div className=\"flex items-center justify-between mb-1\">\n <p className=\"font-medium text-sm\">{item.title}</p>\n <Badge variant={item.priority === 'High' ? 'destructive' : 'secondary'}>\n {item.priority}\n </Badge>\n </div>\n <p className=\"text-xs text-muted-foreground\">{item.desc}</p>\n <Button variant=\"outline\" size=\"sm\" className=\"mt-2\">\n <Calendar className=\"mr-1 h-3 w-3\" />\n Schedule\n </Button>\n </div>\n ))}\n </CardContent>\n </Card>\n </SectionShell>\n );\n}\n"],"mappings":";;;;;AAYA,IAAM,IAAY;CAChB;EACE,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,aAAa;EACb,UAAU;EACX;CACD;EACE,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,aAAa;EACb,UAAU;EACX;CACD;EACE,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,aAAa;EACb,UAAU;EACX;CACD;EACE,IAAI;EACJ,OAAO;EACP,QAAQ;EACR,aAAa;EACb,UAAU;EACX;CACD;EAAE,IAAI;EAAM,OAAO;EAA4B,QAAQ;EAAW,aAAa;EAAI,UAAU;EAAI;CAClG,EAEK,IAAgB;CACpB;EAAE,MAAM;EAAuB,cAAc;EAAU,YAAY;EAAI,MAAM;EAAW;CACxF;EAAE,MAAM;EAAsB,cAAc;EAAO,YAAY;EAAI,MAAM;EAAW;CACpF;EAAE,MAAM;EAAuB,cAAc;EAAY,YAAY;EAAI,MAAM;EAAW;CAC1F;EAAE,MAAM;EAAwB,cAAc;EAAW,YAAY;EAAG,MAAM;EAAc;CAC7F;AAED,SAAgB,IAAa;AAC3B,QACE,kBAAC,GAAD;EACE,OAAM;EACN,aAAY;EACZ,aAAY;EACZ,QAAQ,CAAC,2BAA2B;YAJtC;GAME,kBAAC,GAAD,EACE,OAAO;IACL;KAAE,OAAO;KAAsB,OAAO,EAAY,MAAQ;KAAE,OAAO;KAAc;IACjF;KAAE,OAAO;KAAkB,OAAO;KAAO,OAAO;KAAmB;IACnE;KAAE,OAAO;KAAyB,OAAO;KAAK;IAC9C;KAAE,OAAO;KAAsB,OAAO;KAAO,OAAO;KAAoB;IACzE,EACD,CAAA;GAEF,kBAAC,OAAD;IAAK,WAAU;cAAf,CAEE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;KAAW,WAAU;eAArB,CACE,kBAAC,GAAD,EAAU,WAAU,WAAY,CAAA,EAAA,mBAEtB;QACZ,kBAAC,GAAD,EAAA,UAAiB,4CAA0D,CAAA,CAChE,EAAA,CAAA,EACb,kBAAC,GAAD;KAAa,WAAU;eACpB,EAAU,KAAK,MACd,kBAAC,OAAD;MAAgB,WAAU;gBAA1B,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;OAAG,WAAU;iBAAuB,EAAE;OAAU,CAAA,EAChD,kBAAC,KAAD;OAAG,WAAU;iBAAb,CACG,EAAE,cAAc,YAAY,EAAE,gBAAgB,mBAC9C,EAAE,WAAW,MAAM,EAAE,aAAa,GACjC;SACA,EAAA,CAAA,EACN,kBAAC,GAAD;OACE,SACE,EAAE,WAAW,YACT,YACA,EAAE,WAAW,iBACX,cACA;iBANV;QASG,EAAE,WAAW,aAAa,kBAAC,GAAD,EAAa,WAAU,gBAAiB,CAAA;QAClE,EAAE,WAAW,kBAAkB,kBAAC,GAAD,EAAe,WAAU,gBAAiB,CAAA;QACzE,EAAE;QACG;SACJ;QArBI,EAAE,GAqBN,CACN;KACU,CAAA,CACT,EAAA,CAAA,EAGP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;KAAW,WAAU;eAArB,CACE,kBAAC,GAAD,EAAO,WAAU,WAAY,CAAA,EAAA,yBAEnB;QACZ,kBAAC,GAAD,EAAA,UAAiB,uCAAqD,CAAA,CAC3D,EAAA,CAAA,EACb,kBAAC,GAAD;KAAa,WAAU;eACpB,EAAc,KAAK,MAClB,kBAAC,OAAD;MAAkB,WAAU;gBAA5B,CACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,OAAD,EAAA,UAAA,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAuB,EAAE;QAAS,CAAA,EAC/C,kBAAC,KAAD;QAAG,WAAU;kBAAb;SACG,EAAE;SAAa;SAAW,EAAE;SAC3B;UACA,EAAA,CAAA,EACN,kBAAC,QAAD;QAAM,WAAU;kBACb,EAAE,aAAa,IAAI,GAAG,EAAE,WAAW,KAAK;QACpC,CAAA,CACH;UACL,EAAE,aAAa,KACd,kBAAC,OAAD;OAAK,WAAU;iBACb,kBAAC,OAAD;QAAK,WAAU;QAAyB,OAAO,EAAE,OAAO,GAAG,EAAE,WAAW,IAAI;QAAI,CAAA;OAC5E,CAAA,CAEJ;QAjBI,EAAE,KAiBN,CACN;KACU,CAAA,CACT,EAAA,CAAA,CACH;;GAGN,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;IAAW,WAAU;cAArB,CACE,kBAAC,GAAD,EAAQ,WAAU,WAAY,CAAA,EAAA,yBAEpB;OACZ,kBAAC,GAAD,EAAA,UAAiB,0CAAwD,CAAA,CAC9D,EAAA,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cAAvB;KACG;MACC;OAAE,OAAO;OAAiC,OAAO;OAAQ;MACzD;OAAE,OAAO;OAAsC,OAAO;OAAQ;MAC9D;OAAE,OAAO;OAAwB,OAAO;OAAQ;MAChD;OAAE,OAAO;OAAsB,OAAO;OAAQ;MAC/C,CAAC,KAAK,MAAM;MACX,IAAM,IAAM,KAAK,MAAO,EAAE,QAAQ,QAAW,IAAI;AACjD,aACE,kBAAC,OAAD;OAAmB,WAAU;iBAA7B,CACE,kBAAC,OAAD;QAAK,WAAU;kBAAf,CACE,kBAAC,QAAD;SAAM,WAAU;mBAAe,EAAE;SAAa,CAAA,EAC9C,kBAAC,QAAD,EAAA,UAAA;SACG,EAAY,EAAE,MAAM;SAAC;SAAG;SAAI;SACxB,EAAA,CAAA,CACH;WACN,kBAAC,OAAD;QAAK,WAAU;kBACb,kBAAC,OAAD;SAAK,WAAU;SAAyB,OAAO,EAAE,OAAO,GAAG,EAAI,IAAI;SAAI,CAAA;QACnE,CAAA,CACF;SAVI,EAAE,MAUN;OAER;KACF,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD,EAAA,UAAM,wBAA2B,CAAA,EACjC,kBAAC,QAAD;OAAM,WAAU;iBAAgB,EAAY,MAAO;OAAQ,CAAA,CACvD;;KACN,kBAAC,OAAD;MAAK,WAAU;gBAAf,CACE,kBAAC,QAAD,EAAA,UAAM,sBAAyB,CAAA,EAC/B,kBAAC,QAAD;OAAM,WAAU;iBAAoB,EAAY,OAAQ;OAAQ,CAAA,CAC5D;;KACM;MACT,EAAA,CAAA;GAGP,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD,EAAA,UAAW,yBAAiC,CAAA,EAC5C,kBAAC,GAAD,EAAA,UAAiB,qCAAmD,CAAA,CACzD,EAAA,CAAA,EACb,kBAAC,GAAD;IAAa,WAAU;cACpB;KACC;MACE,OAAO;MACP,MAAM;MACN,UAAU;MACV,OAAO;MACR;KACD;MACE,OAAO;MACP,MAAM;MACN,UAAU;MACV,OAAO;MACR;KACD;MACE,OAAO;MACP,MAAM;MACN,UAAU;MACV,OAAO;MACR;KACF,CAAC,KAAK,MACL,kBAAC,OAAD;KAAsB,WAAW,yBAAyB,EAAK;eAA/D;MACE,kBAAC,OAAD;OAAK,WAAU;iBAAf,CACE,kBAAC,KAAD;QAAG,WAAU;kBAAuB,EAAK;QAAU,CAAA,EACnD,kBAAC,GAAD;QAAO,SAAS,EAAK,aAAa,SAAS,gBAAgB;kBACxD,EAAK;QACA,CAAA,CACJ;;MACN,kBAAC,KAAD;OAAG,WAAU;iBAAiC,EAAK;OAAS,CAAA;MAC5D,kBAAC,GAAD;OAAQ,SAAQ;OAAU,MAAK;OAAK,WAAU;iBAA9C,CACE,kBAAC,GAAD,EAAU,WAAU,gBAAiB,CAAA,EAAA,WAE9B;;MACL;OAZI,EAAK,MAYT,CACN;IACU,CAAA,CACT,EAAA,CAAA;GACM"}
@@ -0,0 +1,2 @@
1
+ export declare function FamilyPage(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=FamilyPage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FamilyPage.d.ts","sourceRoot":"","sources":["../../../src/brainyrich/pages/FamilyPage.tsx"],"names":[],"mappings":"AAmGA,wBAAgB,UAAU,4CAyOzB"}