@burdenoff/microfe-brainyrich 2026.828.1 → 2026.830.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.
Files changed (39) hide show
  1. package/dist/brainyrich/BrainyRichRoot.d.ts.map +1 -1
  2. package/dist/brainyrich/BrainyRichRoot.js +59 -59
  3. package/dist/brainyrich/BrainyRichRoot.js.map +1 -1
  4. package/dist/brainyrich/components/viz.d.ts.map +1 -1
  5. package/dist/brainyrich/components/viz.js +149 -148
  6. package/dist/brainyrich/components/viz.js.map +1 -1
  7. package/dist/brainyrich/hooks/useTr.d.ts +17 -0
  8. package/dist/brainyrich/hooks/useTr.d.ts.map +1 -0
  9. package/dist/brainyrich/hooks/useTr.js +14 -0
  10. package/dist/brainyrich/hooks/useTr.js.map +1 -0
  11. package/dist/brainyrich/pages/AiAssistantPage.js +192 -192
  12. package/dist/brainyrich/pages/AiAssistantPage.js.map +1 -1
  13. package/dist/brainyrich/pages/AnalyticsPage.d.ts.map +1 -1
  14. package/dist/brainyrich/pages/AnalyticsPage.js +253 -252
  15. package/dist/brainyrich/pages/AnalyticsPage.js.map +1 -1
  16. package/dist/brainyrich/pages/DashboardPage.js +115 -115
  17. package/dist/brainyrich/pages/DashboardPage.js.map +1 -1
  18. package/dist/brainyrich/pages/FamilyPage.js +59 -59
  19. package/dist/brainyrich/pages/FamilyPage.js.map +1 -1
  20. package/dist/brainyrich/pages/GoalsPage.js +285 -285
  21. package/dist/brainyrich/pages/GoalsPage.js.map +1 -1
  22. package/dist/brainyrich/pages/InvestmentsPage.js +18 -18
  23. package/dist/brainyrich/pages/InvestmentsPage.js.map +1 -1
  24. package/dist/brainyrich/pages/PortfoliosPage.d.ts.map +1 -1
  25. package/dist/brainyrich/pages/PortfoliosPage.js +477 -471
  26. package/dist/brainyrich/pages/PortfoliosPage.js.map +1 -1
  27. package/dist/brainyrich/pages/ReportsPage.js +52 -52
  28. package/dist/brainyrich/pages/ReportsPage.js.map +1 -1
  29. package/dist/brainyrich/pages/RiskPage.d.ts.map +1 -1
  30. package/dist/brainyrich/pages/RiskPage.js +272 -271
  31. package/dist/brainyrich/pages/RiskPage.js.map +1 -1
  32. package/dist/brainyrich/pages/TaxPage.d.ts.map +1 -1
  33. package/dist/brainyrich/pages/TaxPage.js +198 -197
  34. package/dist/brainyrich/pages/TaxPage.js.map +1 -1
  35. package/dist/brainyrich/pages/_shared.d.ts.map +1 -1
  36. package/dist/brainyrich/pages/_shared.js +84 -82
  37. package/dist/brainyrich/pages/_shared.js.map +1 -1
  38. package/dist/brainyrich/types/bra.d.ts.map +1 -1
  39. package/package.json +1 -1
@@ -8,7 +8,7 @@ import { CalendarClock as re, ChevronDown as ie, Download as ae, FileText as N,
8
8
  import { useI18n as _e } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
9
9
  import { useQuery as ve } from "@tanstack/react-query";
10
10
  import { jsx as F, jsxs as I } from "react/jsx-runtime";
11
- import { Badge as L, Button as R, Card as z, CardContent as B, CardDescription as V, CardHeader as H, CardTitle as U, Dialog as ye, DialogClose as be, DialogContent as xe, DialogDescription as Se, DialogFooter as Ce, DialogHeader as we, DialogTitle as Te, DropdownMenu as Ee, DropdownMenuContent as De, DropdownMenuItem as Oe, DropdownMenuTrigger as ke, Input as Ae, Label as W, Select as je, SelectContent as Me, SelectItem as Ne, SelectTrigger as Pe, SelectValue as Fe, Skeleton as Ie, Table as G, TableBody as K, TableCell as q, TableHead as J, TableHeader as Y, TableRow as X, Tabs as Le, TabsList as Re, TabsTrigger as Z, Textarea as ze } from "@burdenoff/fe-libs/ui";
11
+ import { Badge as L, Button as R, Card as z, CardContent as B, CardDescription as V, CardHeader as H, CardTitle as U, DropdownMenu as ye, DropdownMenuContent as be, DropdownMenuItem as xe, DropdownMenuTrigger as Se, Input as Ce, Label as W, ResponsiveDialog as we, ResponsiveDialogClose as Te, ResponsiveDialogContent as Ee, ResponsiveDialogDescription as De, ResponsiveDialogFooter as Oe, ResponsiveDialogHeader as ke, ResponsiveDialogTitle as Ae, Select as je, SelectContent as Me, SelectItem as Ne, SelectTrigger as Pe, SelectValue as Fe, Skeleton as Ie, Table as G, TableBody as K, TableCell as q, TableHead as J, TableHeader as Y, TableRow as X, Tabs as Le, TabsList as Re, TabsTrigger as Z, Textarea as ze } from "@burdenoff/fe-libs/ui";
12
12
  //#region src/brainyrich/pages/ReportsPage.tsx
13
13
  var Be = {
14
14
  EQUITY: "Equity",
@@ -272,7 +272,7 @@ function $e() {
272
272
  return /* @__PURE__ */ I(ne, {
273
273
  title: n("brainyrich.reports.title", "Reports & Statements"),
274
274
  description: n("brainyrich.reports.description", "Generate statements directly from your live portfolio data — no fabricated schedules."),
275
- actions: /* @__PURE__ */ I(Ee, { children: [/* @__PURE__ */ F(ke, {
275
+ actions: /* @__PURE__ */ I(ye, { children: [/* @__PURE__ */ F(Se, {
276
276
  asChild: !0,
277
277
  children: /* @__PURE__ */ I(R, {
278
278
  size: "sm",
@@ -290,15 +290,15 @@ function $e() {
290
290
  })
291
291
  ]
292
292
  })
293
- }), /* @__PURE__ */ I(De, {
293
+ }), /* @__PURE__ */ I(be, {
294
294
  align: "end",
295
- children: [/* @__PURE__ */ I(Oe, {
295
+ children: [/* @__PURE__ */ I(xe, {
296
296
  onSelect: le,
297
297
  children: [/* @__PURE__ */ F(ae, {
298
298
  className: "size-4",
299
299
  "aria-hidden": "true"
300
300
  }), n("brainyrich.reports.actions.downloadCsv", "Download CSV")]
301
- }), /* @__PURE__ */ I(Oe, {
301
+ }), /* @__PURE__ */ I(xe, {
302
302
  onSelect: () => window.print(),
303
303
  children: [/* @__PURE__ */ F(ue, {
304
304
  className: "size-4",
@@ -424,7 +424,7 @@ function et({ households: e, translate: t }) {
424
424
  children: [
425
425
  /* @__PURE__ */ I(z, { children: [/* @__PURE__ */ I(H, {
426
426
  className: "flex flex-row items-center justify-between gap-4",
427
- children: [/* @__PURE__ */ I("div", { children: [/* @__PURE__ */ F(U, { children: t("brainyrich.reports.scheduled.title", "Scheduled Client Reports") }), /* @__PURE__ */ F(V, { children: t("brainyrich.reports.scheduled.description", "Real recurring PDF report generation, regenerated on demand from a stored snapshot — no fabricated schedules.") })] }), /* @__PURE__ */ I(ye, {
427
+ children: [/* @__PURE__ */ I("div", { children: [/* @__PURE__ */ F(U, { children: t("brainyrich.reports.scheduled.title", "Scheduled Client Reports") }), /* @__PURE__ */ F(V, { children: t("brainyrich.reports.scheduled.description", "Real recurring PDF report generation, regenerated on demand from a stored snapshot — no fabricated schedules.") })] }), /* @__PURE__ */ I(we, {
428
428
  open: g,
429
429
  onOpenChange: _,
430
430
  children: [/* @__PURE__ */ I(R, {
@@ -434,8 +434,8 @@ function et({ households: e, translate: t }) {
434
434
  className: "size-4",
435
435
  "aria-hidden": "true"
436
436
  }), t("brainyrich.reports.scheduled.new", "New schedule")]
437
- }), /* @__PURE__ */ I(xe, { children: [
438
- /* @__PURE__ */ I(we, { children: [/* @__PURE__ */ F(Te, { children: t("brainyrich.reports.scheduled.newTitle", "New scheduled report") }), /* @__PURE__ */ F(Se, { children: t("brainyrich.reports.scheduled.newDescription", "Recurring reports render the same real path as an on-demand generation.") })] }),
437
+ }), /* @__PURE__ */ I(Ee, { children: [
438
+ /* @__PURE__ */ I(ke, { children: [/* @__PURE__ */ F(Ae, { children: t("brainyrich.reports.scheduled.newTitle", "New scheduled report") }), /* @__PURE__ */ F(De, { children: t("brainyrich.reports.scheduled.newDescription", "Recurring reports render the same real path as an on-demand generation.") })] }),
439
439
  /* @__PURE__ */ I("div", {
440
440
  className: "space-y-4",
441
441
  children: [
@@ -444,7 +444,7 @@ function et({ households: e, translate: t }) {
444
444
  children: [/* @__PURE__ */ F(W, {
445
445
  htmlFor: "schedule-name",
446
446
  children: t("brainyrich.reports.scheduled.fields.name", "Name")
447
- }), /* @__PURE__ */ F(Ae, {
447
+ }), /* @__PURE__ */ F(Ce, {
448
448
  id: "schedule-name",
449
449
  value: v,
450
450
  onChange: (e) => y(e.target.value),
@@ -459,15 +459,15 @@ function et({ households: e, translate: t }) {
459
459
  children: [/* @__PURE__ */ F(Pe, { children: /* @__PURE__ */ F(Fe, {}) }), /* @__PURE__ */ I(Me, { children: [
460
460
  /* @__PURE__ */ F(Ne, {
461
461
  value: "WEEKLY",
462
- children: "Weekly"
462
+ children: t("brainyrich.reports.scheduled.frequency.weekly", "Weekly")
463
463
  }),
464
464
  /* @__PURE__ */ F(Ne, {
465
465
  value: "MONTHLY",
466
- children: "Monthly"
466
+ children: t("brainyrich.reports.scheduled.frequency.monthly", "Monthly")
467
467
  }),
468
468
  /* @__PURE__ */ F(Ne, {
469
469
  value: "QUARTERLY",
470
- children: "Quarterly"
470
+ children: t("brainyrich.reports.scheduled.frequency.quarterly", "Quarterly")
471
471
  })
472
472
  ] })]
473
473
  })]
@@ -485,11 +485,11 @@ function et({ households: e, translate: t }) {
485
485
  })
486
486
  ]
487
487
  }),
488
- /* @__PURE__ */ I(Ce, { children: [/* @__PURE__ */ F(be, {
488
+ /* @__PURE__ */ I(Oe, { children: [/* @__PURE__ */ F(Te, {
489
489
  asChild: !0,
490
490
  children: /* @__PURE__ */ F(R, {
491
491
  variant: "secondary",
492
- children: "Cancel"
492
+ children: t("brainyrich.common.cancel", "Cancel")
493
493
  })
494
494
  }), /* @__PURE__ */ F(R, {
495
495
  onClick: () => {
@@ -511,14 +511,14 @@ function et({ households: e, translate: t }) {
511
511
  }),
512
512
  title: t("brainyrich.reports.scheduled.empty", "No scheduled reports yet")
513
513
  }) : /* @__PURE__ */ I(G, { children: [/* @__PURE__ */ F(Y, { children: /* @__PURE__ */ I(X, { children: [
514
- /* @__PURE__ */ F(J, { children: "Name" }),
515
- /* @__PURE__ */ F(J, { children: "Frequency" }),
516
- /* @__PURE__ */ F(J, { children: "Status" }),
517
- /* @__PURE__ */ F(J, { children: "Next run" }),
518
- /* @__PURE__ */ F(J, { children: "Last run" }),
514
+ /* @__PURE__ */ F(J, { children: t("brainyrich.reports.scheduled.columns.name", "Name") }),
515
+ /* @__PURE__ */ F(J, { children: t("brainyrich.reports.scheduled.columns.frequency", "Frequency") }),
516
+ /* @__PURE__ */ F(J, { children: t("brainyrich.reports.scheduled.columns.status", "Status") }),
517
+ /* @__PURE__ */ F(J, { children: t("brainyrich.reports.scheduled.columns.nextRun", "Next run") }),
518
+ /* @__PURE__ */ F(J, { children: t("brainyrich.reports.scheduled.columns.lastRun", "Last run") }),
519
519
  /* @__PURE__ */ F(J, {
520
520
  className: "text-right",
521
- children: "Actions"
521
+ children: t("brainyrich.reports.scheduled.columns.actions", "Actions")
522
522
  })
523
523
  ] }) }), /* @__PURE__ */ F(K, { children: n.data.map((e) => /* @__PURE__ */ I(X, { children: [
524
524
  /* @__PURE__ */ F(q, {
@@ -568,12 +568,12 @@ function et({ households: e, translate: t }) {
568
568
  }),
569
569
  title: t("brainyrich.reports.runs.empty", "No report runs yet")
570
570
  }) : /* @__PURE__ */ I(G, { children: [/* @__PURE__ */ F(Y, { children: /* @__PURE__ */ I(X, { children: [
571
- /* @__PURE__ */ F(J, { children: "Period" }),
572
- /* @__PURE__ */ F(J, { children: "Status" }),
573
- /* @__PURE__ */ F(J, { children: "Generated" }),
571
+ /* @__PURE__ */ F(J, { children: t("brainyrich.reports.runs.columns.period", "Period") }),
572
+ /* @__PURE__ */ F(J, { children: t("brainyrich.reports.runs.columns.status", "Status") }),
573
+ /* @__PURE__ */ F(J, { children: t("brainyrich.reports.runs.columns.generated", "Generated") }),
574
574
  /* @__PURE__ */ F(J, {
575
575
  className: "text-right",
576
- children: "Actions"
576
+ children: t("brainyrich.reports.runs.columns.actions", "Actions")
577
577
  })
578
578
  ] }) }), /* @__PURE__ */ F(K, { children: r.data.map((e) => /* @__PURE__ */ I(X, { children: [
579
579
  /* @__PURE__ */ I(q, { children: [
@@ -614,8 +614,8 @@ function et({ households: e, translate: t }) {
614
614
  ]
615
615
  });
616
616
  }
617
- function tt({ branding: e, isSaving: t, onSave: n }) {
618
- let [r, i] = M(() => e?.firmName ?? ""), [a, o] = M(() => e?.primaryColor ?? ""), [s, c] = M(() => e?.contactEmail ?? ""), [l, u] = M(() => e?.disclaimer ?? "");
617
+ function tt({ branding: e, isSaving: n, onSave: r }) {
618
+ let { t: i } = _e(), a = (e, n, r) => t(i, e, n, r), [o, s] = M(() => e?.firmName ?? ""), [c, l] = M(() => e?.primaryColor ?? ""), [u, d] = M(() => e?.contactEmail ?? ""), [f, ee] = M(() => e?.disclaimer ?? "");
619
619
  return /* @__PURE__ */ I("div", {
620
620
  className: "grid gap-4 md:grid-cols-2",
621
621
  children: [
@@ -623,60 +623,60 @@ function tt({ branding: e, isSaving: t, onSave: n }) {
623
623
  className: "space-y-1.5",
624
624
  children: [/* @__PURE__ */ F(W, {
625
625
  htmlFor: "branding-firm",
626
- children: "Firm name"
627
- }), /* @__PURE__ */ F(Ae, {
626
+ children: a("brainyrich.reports.branding.firmName", "Firm name")
627
+ }), /* @__PURE__ */ F(Ce, {
628
628
  id: "branding-firm",
629
- value: r,
630
- onChange: (e) => i(e.target.value)
629
+ value: o,
630
+ onChange: (e) => s(e.target.value)
631
631
  })]
632
632
  }),
633
633
  /* @__PURE__ */ I("div", {
634
634
  className: "space-y-1.5",
635
635
  children: [/* @__PURE__ */ F(W, {
636
636
  htmlFor: "branding-color",
637
- children: "Primary color (hex)"
638
- }), /* @__PURE__ */ F(Ae, {
637
+ children: a("brainyrich.reports.branding.primaryColor", "Primary color (hex)")
638
+ }), /* @__PURE__ */ F(Ce, {
639
639
  id: "branding-color",
640
- value: a,
641
- onChange: (e) => o(e.target.value),
642
- placeholder: "#0B5FFF"
640
+ value: c,
641
+ onChange: (e) => l(e.target.value),
642
+ placeholder: a("brainyrich.reports.branding.primaryColorPlaceholder", "Primary brand color")
643
643
  })]
644
644
  }),
645
645
  /* @__PURE__ */ I("div", {
646
646
  className: "space-y-1.5",
647
647
  children: [/* @__PURE__ */ F(W, {
648
648
  htmlFor: "branding-email",
649
- children: "Contact email"
650
- }), /* @__PURE__ */ F(Ae, {
649
+ children: a("brainyrich.reports.branding.contactEmail", "Contact email")
650
+ }), /* @__PURE__ */ F(Ce, {
651
651
  id: "branding-email",
652
652
  type: "email",
653
- value: s,
654
- onChange: (e) => c(e.target.value)
653
+ value: u,
654
+ onChange: (e) => d(e.target.value)
655
655
  })]
656
656
  }),
657
657
  /* @__PURE__ */ I("div", {
658
658
  className: "space-y-1.5 md:col-span-2",
659
659
  children: [/* @__PURE__ */ F(W, {
660
660
  htmlFor: "branding-disclaimer",
661
- children: "Disclaimer"
661
+ children: a("brainyrich.reports.branding.disclaimer", "Disclaimer")
662
662
  }), /* @__PURE__ */ F(ze, {
663
663
  id: "branding-disclaimer",
664
- value: l,
665
- onChange: (e) => u(e.target.value),
664
+ value: f,
665
+ onChange: (e) => ee(e.target.value),
666
666
  rows: 3
667
667
  })]
668
668
  }),
669
669
  /* @__PURE__ */ F("div", {
670
670
  className: "md:col-span-2",
671
671
  children: /* @__PURE__ */ F(R, {
672
- disabled: t,
673
- onClick: () => n({
674
- firmName: r || void 0,
675
- primaryColor: a || void 0,
676
- contactEmail: s || void 0,
677
- disclaimer: l || void 0
672
+ disabled: n,
673
+ onClick: () => r({
674
+ firmName: o || void 0,
675
+ primaryColor: c || void 0,
676
+ contactEmail: u || void 0,
677
+ disclaimer: f || void 0
678
678
  }),
679
- children: t ? "Saving…" : "Save branding"
679
+ children: n ? "Saving…" : "Save branding"
680
680
  })
681
681
  })
682
682
  ]
@@ -1067,7 +1067,7 @@ function at({ householdsQuery: e, households: t, activeHousehold: n, onSelect: r
1067
1067
  children: [/* @__PURE__ */ F("span", {
1068
1068
  className: "text-sm text-text-secondary",
1069
1069
  children: l("brainyrich.reports.statement.for", "Statement for")
1070
- }), /* @__PURE__ */ I(Ee, { children: [/* @__PURE__ */ F(ke, {
1070
+ }), /* @__PURE__ */ I(ye, { children: [/* @__PURE__ */ F(Se, {
1071
1071
  asChild: !0,
1072
1072
  children: /* @__PURE__ */ I(R, {
1073
1073
  variant: "outline",
@@ -1084,10 +1084,10 @@ function at({ householdsQuery: e, households: t, activeHousehold: n, onSelect: r
1084
1084
  })
1085
1085
  ]
1086
1086
  })
1087
- }), /* @__PURE__ */ F(De, {
1087
+ }), /* @__PURE__ */ F(be, {
1088
1088
  align: "start",
1089
1089
  className: "max-h-72 overflow-y-auto",
1090
- children: t.map((e) => /* @__PURE__ */ F(Oe, {
1090
+ children: t.map((e) => /* @__PURE__ */ F(xe, {
1091
1091
  onSelect: () => r(e.id),
1092
1092
  children: e.name
1093
1093
  }, e.id))