@burdenoff/microfe-brainyrich 2026.827.1 → 2026.828.2

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 (43) 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 +1 -1
  6. package/dist/brainyrich/components/viz.js.map +1 -1
  7. package/dist/brainyrich/hooks/useBrainyRichApi.d.ts +3 -1
  8. package/dist/brainyrich/hooks/useBrainyRichApi.d.ts.map +1 -1
  9. package/dist/brainyrich/hooks/useBrainyRichApi.js +6 -2
  10. package/dist/brainyrich/hooks/useBrainyRichApi.js.map +1 -1
  11. package/dist/brainyrich/pages/AccountsPage.d.ts.map +1 -1
  12. package/dist/brainyrich/pages/AccountsPage.js +159 -148
  13. package/dist/brainyrich/pages/AccountsPage.js.map +1 -1
  14. package/dist/brainyrich/pages/AiAssistantPage.js +192 -192
  15. package/dist/brainyrich/pages/AiAssistantPage.js.map +1 -1
  16. package/dist/brainyrich/pages/AnalyticsPage.js +9 -9
  17. package/dist/brainyrich/pages/AnalyticsPage.js.map +1 -1
  18. package/dist/brainyrich/pages/DashboardPage.js +115 -115
  19. package/dist/brainyrich/pages/DashboardPage.js.map +1 -1
  20. package/dist/brainyrich/pages/FamilyPage.js +59 -59
  21. package/dist/brainyrich/pages/FamilyPage.js.map +1 -1
  22. package/dist/brainyrich/pages/GoalsPage.js +285 -285
  23. package/dist/brainyrich/pages/GoalsPage.js.map +1 -1
  24. package/dist/brainyrich/pages/InvestmentsPage.js +18 -18
  25. package/dist/brainyrich/pages/InvestmentsPage.js.map +1 -1
  26. package/dist/brainyrich/pages/PortfoliosPage.d.ts.map +1 -1
  27. package/dist/brainyrich/pages/PortfoliosPage.js +322 -322
  28. package/dist/brainyrich/pages/PortfoliosPage.js.map +1 -1
  29. package/dist/brainyrich/pages/ReportsPage.js +17 -17
  30. package/dist/brainyrich/pages/ReportsPage.js.map +1 -1
  31. package/dist/brainyrich/pages/RiskPage.js +16 -16
  32. package/dist/brainyrich/pages/RiskPage.js.map +1 -1
  33. package/dist/brainyrich/pages/TaxPage.d.ts.map +1 -1
  34. package/dist/brainyrich/pages/TaxPage.js +14 -14
  35. package/dist/brainyrich/pages/TaxPage.js.map +1 -1
  36. package/dist/brainyrich/types/bra.d.ts.map +1 -1
  37. package/dist/generated/global-operations.d.ts +31 -1
  38. package/dist/generated/global-operations.d.ts.map +1 -1
  39. package/dist/generated/wspace-operations.d.ts +31 -1
  40. package/dist/generated/wspace-operations.d.ts.map +1 -1
  41. package/dist/test/setup.d.ts +1 -0
  42. package/dist/test/setup.d.ts.map +1 -0
  43. package/package.json +11 -2
@@ -1 +1 @@
1
- {"version":3,"file":"BrainyRichRoot.d.ts","sourceRoot":"","sources":["../../src/brainyrich/BrainyRichRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAmBhC,OAAO,KAAK,EAAW,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAK5D,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CAuIlD,CAAC"}
1
+ {"version":3,"file":"BrainyRichRoot.d.ts","sourceRoot":"","sources":["../../src/brainyrich/BrainyRichRoot.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC;AAmBhC,OAAO,KAAK,EAAW,mBAAmB,EAAE,MAAM,SAAS,CAAC;AAK5D,eAAO,MAAM,cAAc,EAAE,EAAE,CAAC,mBAAmB,CA0IlD,CAAC"}
@@ -2,132 +2,132 @@ import { BrainyRichProvider as e } from "./providers/BrainyRichProvider.js";
2
2
  import { tWithFallback as t } from "./utils/i18n.js";
3
3
  import { joinPath as n } from "./utils/navigation.js";
4
4
  import { BrainyRichRoutes as r } from "./BrainyRichRoutes.js";
5
- import { useEffect as i } from "react";
6
- import { BarChart3 as a, Bot as o, Briefcase as s, Building2 as c, Calculator as l, FileBarChart as u, Landmark as d, LayoutDashboard as f, ShieldAlert as p, Target as m, TrendingUp as h, UsersRound as g } from "lucide-react";
7
- import { useI18n as _ } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
8
- import { jsx as v } from "react/jsx-runtime";
9
- import { FeatureFlagProvider as y } from "@burdenoff/fe-libs/shared/feature-flags";
5
+ import { useCallback as i, useEffect as a } from "react";
6
+ import { BarChart3 as o, Bot as s, Briefcase as c, Building2 as l, Calculator as u, FileBarChart as d, Landmark as f, LayoutDashboard as p, ShieldAlert as m, Target as h, TrendingUp as g, UsersRound as _ } from "lucide-react";
7
+ import { useI18n as v } from "@burdenoff/fe-libs/shared/providers/shell/I18nProvider";
8
+ import { jsx as y } from "react/jsx-runtime";
9
+ import { FeatureFlagProvider as b } from "@burdenoff/fe-libs/shared/feature-flags";
10
10
  //#region src/brainyrich/BrainyRichRoot.tsx
11
- var b = (b) => {
12
- let { registerNavItems: x, registerFooterItems: S, basePath: C = "/" } = b, { t: w } = _(), T = (e, n) => t(w, e, n);
13
- return i(() => {
14
- if (x) return x({
11
+ var x = (x) => {
12
+ let { registerNavItems: S, registerFooterItems: C, basePath: w = "/" } = x, { t: T } = v(), E = i((e, n) => t(T, e, n), [T]);
13
+ return a(() => {
14
+ if (S) return S({
15
15
  id: "brainyrich",
16
- label: T("brainyrich.nav.root", "BrainyRich"),
17
- path: C,
18
- icon: /* @__PURE__ */ v(f, { size: 20 }),
16
+ label: E("brainyrich.nav.root", "BrainyRich"),
17
+ path: w,
18
+ icon: /* @__PURE__ */ y(p, { size: 20 }),
19
19
  order: 80,
20
20
  group: "products",
21
21
  children: [
22
22
  {
23
23
  id: "brainyrich-dashboard",
24
- label: T("brainyrich.nav.dashboard", "Dashboard"),
25
- path: C,
26
- icon: /* @__PURE__ */ v(f, { size: 16 }),
24
+ label: E("brainyrich.nav.dashboard", "Dashboard"),
25
+ path: w,
26
+ icon: /* @__PURE__ */ y(p, { size: 16 }),
27
27
  order: 0
28
28
  },
29
29
  {
30
30
  id: "brainyrich-portfolios",
31
- label: T("brainyrich.nav.portfolios", "Portfolios"),
32
- path: n(C, "portfolios"),
33
- icon: /* @__PURE__ */ v(s, { size: 16 }),
31
+ label: E("brainyrich.nav.portfolios", "Portfolios"),
32
+ path: n(w, "portfolios"),
33
+ icon: /* @__PURE__ */ y(c, { size: 16 }),
34
34
  order: 10
35
35
  },
36
36
  {
37
37
  id: "brainyrich-investments",
38
- label: T("brainyrich.nav.investments", "Investments"),
39
- path: n(C, "investments"),
40
- icon: /* @__PURE__ */ v(h, { size: 16 }),
38
+ label: E("brainyrich.nav.investments", "Investments"),
39
+ path: n(w, "investments"),
40
+ icon: /* @__PURE__ */ y(g, { size: 16 }),
41
41
  order: 11
42
42
  },
43
43
  {
44
44
  id: "brainyrich-goals",
45
- label: T("brainyrich.nav.goals", "Goals"),
46
- path: n(C, "goals"),
47
- icon: /* @__PURE__ */ v(m, { size: 16 }),
45
+ label: E("brainyrich.nav.goals", "Goals"),
46
+ path: n(w, "goals"),
47
+ icon: /* @__PURE__ */ y(h, { size: 16 }),
48
48
  order: 12
49
49
  },
50
50
  {
51
51
  id: "brainyrich-accounts",
52
- label: T("brainyrich.nav.accounts", "Accounts"),
53
- path: n(C, "accounts"),
54
- icon: /* @__PURE__ */ v(d, { size: 16 }),
52
+ label: E("brainyrich.nav.accounts", "Accounts"),
53
+ path: n(w, "accounts"),
54
+ icon: /* @__PURE__ */ y(f, { size: 16 }),
55
55
  order: 13
56
56
  },
57
57
  {
58
58
  id: "brainyrich-analytics",
59
- label: T("brainyrich.nav.analytics", "Analytics"),
60
- path: n(C, "analytics"),
61
- icon: /* @__PURE__ */ v(a, { size: 16 }),
59
+ label: E("brainyrich.nav.analytics", "Analytics"),
60
+ path: n(w, "analytics"),
61
+ icon: /* @__PURE__ */ y(o, { size: 16 }),
62
62
  order: 21
63
63
  },
64
64
  {
65
65
  id: "brainyrich-risk",
66
- label: T("brainyrich.nav.risk", "Rebalancing"),
67
- path: n(C, "risk"),
68
- icon: /* @__PURE__ */ v(p, { size: 16 }),
66
+ label: E("brainyrich.nav.risk", "Rebalancing"),
67
+ path: n(w, "risk"),
68
+ icon: /* @__PURE__ */ y(m, { size: 16 }),
69
69
  order: 22
70
70
  },
71
71
  {
72
72
  id: "brainyrich-tax",
73
- label: T("brainyrich.nav.tax", "Tax"),
74
- path: n(C, "tax"),
75
- icon: /* @__PURE__ */ v(l, { size: 16 }),
73
+ label: E("brainyrich.nav.tax", "Tax"),
74
+ path: n(w, "tax"),
75
+ icon: /* @__PURE__ */ y(u, { size: 16 }),
76
76
  order: 30
77
77
  },
78
78
  {
79
79
  id: "brainyrich-family",
80
- label: T("brainyrich.nav.family", "Households"),
81
- path: n(C, "family"),
82
- icon: /* @__PURE__ */ v(g, { size: 16 }),
80
+ label: E("brainyrich.nav.family", "Households"),
81
+ path: n(w, "family"),
82
+ icon: /* @__PURE__ */ y(_, { size: 16 }),
83
83
  order: 40
84
84
  },
85
85
  {
86
86
  id: "brainyrich-reports",
87
- label: T("brainyrich.nav.reports", "Reports"),
88
- path: n(C, "reports"),
89
- icon: /* @__PURE__ */ v(u, { size: 16 }),
87
+ label: E("brainyrich.nav.reports", "Reports"),
88
+ path: n(w, "reports"),
89
+ icon: /* @__PURE__ */ y(d, { size: 16 }),
90
90
  order: 42
91
91
  },
92
92
  {
93
93
  id: "brainyrich-firm",
94
- label: T("brainyrich.nav.firm", "Firm"),
95
- path: n(C, "firm"),
96
- icon: /* @__PURE__ */ v(c, { size: 16 }),
94
+ label: E("brainyrich.nav.firm", "Firm"),
95
+ path: n(w, "firm"),
96
+ icon: /* @__PURE__ */ y(l, { size: 16 }),
97
97
  order: 45
98
98
  },
99
99
  {
100
100
  id: "brainyrich-ai-assistant",
101
- label: T("brainyrich.nav.aiAssistant", "Insights"),
102
- path: n(C, "ai-assistant"),
103
- icon: /* @__PURE__ */ v(o, { size: 16 }),
101
+ label: E("brainyrich.nav.aiAssistant", "Insights"),
102
+ path: n(w, "ai-assistant"),
103
+ icon: /* @__PURE__ */ y(s, { size: 16 }),
104
104
  order: 50
105
105
  }
106
106
  ]
107
107
  });
108
108
  }, [
109
- x,
110
- C,
111
- w
112
- ]), i(() => {
113
- if (S) return S([{
109
+ S,
110
+ w,
111
+ E
112
+ ]), a(() => {
113
+ if (C) return C([{
114
114
  id: "brainyrich-status",
115
- label: T("brainyrich.footer.ready", "BrainyRich Ready"),
115
+ label: E("brainyrich.footer.ready", "BrainyRich Ready"),
116
116
  type: "status",
117
117
  section: "left",
118
118
  order: 10
119
119
  }]);
120
- }, [S, w]), /* @__PURE__ */ v(y, {
120
+ }, [C, E]), /* @__PURE__ */ y(b, {
121
121
  workspaceId: null,
122
122
  gateway: "global",
123
123
  defaultEnabled: !0,
124
- children: /* @__PURE__ */ v(e, {
125
- ...b,
126
- children: /* @__PURE__ */ v(r, {})
124
+ children: /* @__PURE__ */ y(e, {
125
+ ...x,
126
+ children: /* @__PURE__ */ y(r, {})
127
127
  })
128
128
  });
129
129
  };
130
130
  //#endregion
131
- export { b as BrainyRichRoot };
131
+ export { x as BrainyRichRoot };
132
132
 
133
133
  //# sourceMappingURL=BrainyRichRoot.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"BrainyRichRoot.js","names":[],"sources":["../../src/brainyrich/BrainyRichRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useEffect } from 'react';\nimport {\n LayoutDashboard,\n Briefcase,\n TrendingUp,\n Target,\n Landmark,\n BarChart3,\n ShieldAlert,\n Calculator,\n UsersRound,\n FileBarChart,\n Bot,\n Building2,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { BrainyRichProvider } from './providers/BrainyRichProvider';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport type { NavItem, BrainyRichRootProps } from './types';\nimport { tWithFallback } from './utils/i18n';\nimport { BrainyRichRoutes } from './BrainyRichRoutes';\nimport { joinPath } from './utils/navigation';\n\nexport const BrainyRichRoot: FC<BrainyRichRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const { t } = useI18n();\n const translate = (key: string, fallback: string) => tWithFallback(t, key, fallback);\n\n useEffect(() => {\n if (!registerNavItems) return;\n const navItem: NavItem = {\n id: 'brainyrich',\n label: translate('brainyrich.nav.root', 'BrainyRich'),\n path: basePath,\n icon: <LayoutDashboard size={20} />,\n order: 80,\n group: 'products',\n children: [\n // Overview\n {\n id: 'brainyrich-dashboard',\n label: translate('brainyrich.nav.dashboard', 'Dashboard'),\n path: basePath,\n icon: <LayoutDashboard size={16} />,\n order: 0,\n },\n\n // Wealth Management\n {\n id: 'brainyrich-portfolios',\n label: translate('brainyrich.nav.portfolios', 'Portfolios'),\n path: joinPath(basePath, 'portfolios'),\n icon: <Briefcase size={16} />,\n order: 10,\n },\n {\n id: 'brainyrich-investments',\n label: translate('brainyrich.nav.investments', 'Investments'),\n path: joinPath(basePath, 'investments'),\n icon: <TrendingUp size={16} />,\n order: 11,\n },\n {\n id: 'brainyrich-goals',\n label: translate('brainyrich.nav.goals', 'Goals'),\n path: joinPath(basePath, 'goals'),\n icon: <Target size={16} />,\n order: 12,\n },\n {\n id: 'brainyrich-accounts',\n label: translate('brainyrich.nav.accounts', 'Accounts'),\n path: joinPath(basePath, 'accounts'),\n icon: <Landmark size={16} />,\n order: 13,\n },\n\n // Advisory & Insights\n {\n id: 'brainyrich-analytics',\n label: translate('brainyrich.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'analytics'),\n icon: <BarChart3 size={16} />,\n order: 21,\n },\n {\n id: 'brainyrich-risk',\n label: translate('brainyrich.nav.risk', 'Rebalancing'),\n path: joinPath(basePath, 'risk'),\n icon: <ShieldAlert size={16} />,\n order: 22,\n },\n\n // Tax\n {\n id: 'brainyrich-tax',\n label: translate('brainyrich.nav.tax', 'Tax'),\n path: joinPath(basePath, 'tax'),\n icon: <Calculator size={16} />,\n order: 30,\n },\n\n // Households & Reports\n {\n id: 'brainyrich-family',\n label: translate('brainyrich.nav.family', 'Households'),\n path: joinPath(basePath, 'family'),\n icon: <UsersRound size={16} />,\n order: 40,\n },\n {\n id: 'brainyrich-reports',\n label: translate('brainyrich.nav.reports', 'Reports'),\n path: joinPath(basePath, 'reports'),\n icon: <FileBarChart size={16} />,\n order: 42,\n },\n {\n id: 'brainyrich-firm',\n label: translate('brainyrich.nav.firm', 'Firm'),\n path: joinPath(basePath, 'firm'),\n icon: <Building2 size={16} />,\n order: 45,\n },\n\n // Insights\n {\n id: 'brainyrich-ai-assistant',\n label: translate('brainyrich.nav.aiAssistant', 'Insights'),\n path: joinPath(basePath, 'ai-assistant'),\n icon: <Bot size={16} />,\n order: 50,\n },\n ],\n };\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, t]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n return registerFooterItems([\n {\n id: 'brainyrich-status',\n label: translate('brainyrich.footer.ready', 'BrainyRich Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, t]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <BrainyRichProvider {...props}>\n <BrainyRichRoutes />\n </BrainyRichProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
1
+ {"version":3,"file":"BrainyRichRoot.js","names":[],"sources":["../../src/brainyrich/BrainyRichRoot.tsx"],"sourcesContent":["import type { FC } from 'react';\nimport { useCallback, useEffect } from 'react';\nimport {\n LayoutDashboard,\n Briefcase,\n TrendingUp,\n Target,\n Landmark,\n BarChart3,\n ShieldAlert,\n Calculator,\n UsersRound,\n FileBarChart,\n Bot,\n Building2,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { BrainyRichProvider } from './providers/BrainyRichProvider';\nimport { FeatureFlagProvider } from '@burdenoff/fe-libs/shared/feature-flags';\nimport type { NavItem, BrainyRichRootProps } from './types';\nimport { tWithFallback } from './utils/i18n';\nimport { BrainyRichRoutes } from './BrainyRichRoutes';\nimport { joinPath } from './utils/navigation';\n\nexport const BrainyRichRoot: FC<BrainyRichRootProps> = (props) => {\n const { registerNavItems, registerFooterItems, basePath = '/' } = props;\n const { t } = useI18n();\n const translate = useCallback(\n (key: string, fallback: string) => tWithFallback(t, key, fallback),\n [t]\n );\n\n useEffect(() => {\n if (!registerNavItems) return;\n const navItem: NavItem = {\n id: 'brainyrich',\n label: translate('brainyrich.nav.root', 'BrainyRich'),\n path: basePath,\n icon: <LayoutDashboard size={20} />,\n order: 80,\n group: 'products',\n children: [\n // Overview\n {\n id: 'brainyrich-dashboard',\n label: translate('brainyrich.nav.dashboard', 'Dashboard'),\n path: basePath,\n icon: <LayoutDashboard size={16} />,\n order: 0,\n },\n\n // Wealth Management\n {\n id: 'brainyrich-portfolios',\n label: translate('brainyrich.nav.portfolios', 'Portfolios'),\n path: joinPath(basePath, 'portfolios'),\n icon: <Briefcase size={16} />,\n order: 10,\n },\n {\n id: 'brainyrich-investments',\n label: translate('brainyrich.nav.investments', 'Investments'),\n path: joinPath(basePath, 'investments'),\n icon: <TrendingUp size={16} />,\n order: 11,\n },\n {\n id: 'brainyrich-goals',\n label: translate('brainyrich.nav.goals', 'Goals'),\n path: joinPath(basePath, 'goals'),\n icon: <Target size={16} />,\n order: 12,\n },\n {\n id: 'brainyrich-accounts',\n label: translate('brainyrich.nav.accounts', 'Accounts'),\n path: joinPath(basePath, 'accounts'),\n icon: <Landmark size={16} />,\n order: 13,\n },\n\n // Advisory & Insights\n {\n id: 'brainyrich-analytics',\n label: translate('brainyrich.nav.analytics', 'Analytics'),\n path: joinPath(basePath, 'analytics'),\n icon: <BarChart3 size={16} />,\n order: 21,\n },\n {\n id: 'brainyrich-risk',\n label: translate('brainyrich.nav.risk', 'Rebalancing'),\n path: joinPath(basePath, 'risk'),\n icon: <ShieldAlert size={16} />,\n order: 22,\n },\n\n // Tax\n {\n id: 'brainyrich-tax',\n label: translate('brainyrich.nav.tax', 'Tax'),\n path: joinPath(basePath, 'tax'),\n icon: <Calculator size={16} />,\n order: 30,\n },\n\n // Households & Reports\n {\n id: 'brainyrich-family',\n label: translate('brainyrich.nav.family', 'Households'),\n path: joinPath(basePath, 'family'),\n icon: <UsersRound size={16} />,\n order: 40,\n },\n {\n id: 'brainyrich-reports',\n label: translate('brainyrich.nav.reports', 'Reports'),\n path: joinPath(basePath, 'reports'),\n icon: <FileBarChart size={16} />,\n order: 42,\n },\n {\n id: 'brainyrich-firm',\n label: translate('brainyrich.nav.firm', 'Firm'),\n path: joinPath(basePath, 'firm'),\n icon: <Building2 size={16} />,\n order: 45,\n },\n\n // Insights\n {\n id: 'brainyrich-ai-assistant',\n label: translate('brainyrich.nav.aiAssistant', 'Insights'),\n path: joinPath(basePath, 'ai-assistant'),\n icon: <Bot size={16} />,\n order: 50,\n },\n ],\n };\n return registerNavItems(navItem);\n }, [registerNavItems, basePath, translate]);\n\n useEffect(() => {\n if (!registerFooterItems) return;\n return registerFooterItems([\n {\n id: 'brainyrich-status',\n label: translate('brainyrich.footer.ready', 'BrainyRich Ready'),\n type: 'status',\n section: 'left',\n order: 10,\n },\n ]);\n }, [registerFooterItems, translate]);\n\n return (\n <FeatureFlagProvider workspaceId={null} gateway=\"global\" defaultEnabled={true}>\n <BrainyRichProvider {...props}>\n <BrainyRichRoutes />\n </BrainyRichProvider>\n </FeatureFlagProvider>\n );\n};\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"viz.d.ts","sourceRoot":"","sources":["../../../src/brainyrich/components/viz.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"viz.d.ts","sourceRoot":"","sources":["../../../src/brainyrich/components/viz.tsx"],"names":[],"mappings":"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"}
@@ -119,7 +119,7 @@ function k() {
119
119
  padding: "8px 12px",
120
120
  color: e.textPrimary,
121
121
  fontSize: 12,
122
- boxShadow: "var(--shadow-pop, 0 8px 24px rgba(0,0,0,0.35))"
122
+ boxShadow: "var(--shadow-pop)"
123
123
  },
124
124
  label: {
125
125
  color: e.textSecondary,
@@ -1 +1 @@
1
- {"version":3,"file":"viz.js","names":[],"sources":["../../../src/brainyrich/components/viz.tsx"],"sourcesContent":["/**\n * BrainyRich data-viz + polish kit.\n * @module brainyrich/components/viz\n *\n * A tokenized, responsive, dark-mode-first visualization + motion kit built on\n * recharts (^2.15) with lightweight, dependency-free CSS motion. Every colour is read from the\n * platform's SEMANTIC CSS variables at runtime (see {@link useVizColors}) so\n * charts always track the active theme and the emerald BrainyRich brand\n * (`--color-action-primary-bg`). No raw hex/rgb literals live in this file.\n *\n * All chart components are wrapped in a recharts `<ResponsiveContainer>` so they\n * resize with their parent. Motion is tasteful (<=250ms) and disabled under\n * `prefers-reduced-motion`.\n *\n * Page agents: import from `#brainyrich/components/viz` (or the components\n * barrel). Pass values straight from the real `bra*` hooks — this kit only\n * renders; it never fabricates data.\n */\nimport { useEffect, useId, useMemo, useState, type CSSProperties, type ReactNode } from 'react';\nimport {\n Area,\n AreaChart,\n Bar,\n BarChart,\n Cell,\n Line,\n LineChart,\n Pie,\n PieChart,\n ReferenceLine,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nfunction cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n\n// ============================================================================\n// Motion primitives (dependency-free, pure CSS — no animation library)\n// ============================================================================\n\n/**\n * SSR-safe `prefers-reduced-motion` hook. Returns `false` on the server and on\n * the first client render, then subscribes to the media query so all motion in\n * this kit is disabled the moment the user asks for reduced motion.\n */\nfunction prefersReducedMotion(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false;\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\nexport function useReducedMotion(): boolean {\n // Read the current preference lazily at mount (SSR-safe: `false` on the\n // server), then only update via the media-query change listener.\n const [reduced, setReduced] = useState<boolean>(prefersReducedMotion);\n\n useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n const onChange = (e: MediaQueryListEvent) => setReduced(e.matches);\n mq.addEventListener('change', onChange);\n return () => mq.removeEventListener('change', onChange);\n }, []);\n\n return reduced;\n}\n\n// Enter animation (translateY + opacity) injected once as a real stylesheet so\n// the keyframes + `.br-fade-in` class exist before the first animated paint.\nconst FADE_IN_STYLE_ID = 'brainyrich-viz-motion';\nconst FADE_IN_CSS = `\n@keyframes br-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: none; }\n}\n.br-fade-in {\n animation: br-fade-in 240ms var(--motion-easing-standard, ease-out) both;\n}\n`;\n\nif (typeof document !== 'undefined' && !document.getElementById(FADE_IN_STYLE_ID)) {\n const el = document.createElement('style');\n el.id = FADE_IN_STYLE_ID;\n el.textContent = FADE_IN_CSS;\n document.head.appendChild(el);\n}\n\n// ============================================================================\n// Token → colour resolution\n// ============================================================================\n//\n// recharts needs concrete colour strings (fills, stroke, gradient stops), so we\n// resolve each semantic CSS variable to its computed value off\n// `document.documentElement` and re-read whenever the theme attribute flips.\n// Consumers NEVER hard-code colours: they name a semantic token here.\n\nconst CORE_TOKENS = {\n brand: '--color-action-primary-bg',\n brandBorder: '--color-action-primary-border',\n grid: '--color-chart-grid',\n axis: '--color-chart-axis',\n positive: '--color-chart-positive',\n negative: '--color-chart-negative',\n success: '--color-status-success',\n error: '--color-status-error',\n warning: '--color-status-warning',\n info: '--color-status-info',\n teal: '--color-accent-teal',\n blue: '--color-accent-blue',\n purple: '--color-accent-purple',\n indigo: '--color-accent-indigo',\n textPrimary: '--color-text-primary',\n textSecondary: '--color-text-secondary',\n surface: '--color-bg-elevated',\n border: '--color-border-subtle',\n} as const;\n\ntype CoreToken = keyof typeof CORE_TOKENS;\n\n/** Ordered categorical palette — emerald brand first, then distinct chart hues. */\nconst PALETTE_VARS = [\n '--color-action-primary-bg',\n '--color-chart-2',\n '--color-chart-3',\n '--color-chart-4',\n '--color-chart-5',\n '--color-chart-6',\n '--color-chart-7',\n '--color-chart-8',\n '--color-chart-9',\n '--color-chart-10',\n '--color-chart-11',\n '--color-chart-12',\n];\n\nexport type VizColors = Record<CoreToken, string> & {\n /** Categorical palette (index 0 = emerald brand). */\n palette: string[];\n /** Resolve any semantic tone name to a concrete colour string. */\n tone: (tone?: VizTone) => string;\n};\n\n/** Named tones a datum may request; falls back to the categorical palette. */\nexport type VizTone =\n | 'brand'\n | 'primary'\n | 'success'\n | 'positive'\n | 'error'\n | 'negative'\n | 'warning'\n | 'info'\n | 'teal'\n | 'blue'\n | 'purple'\n | 'indigo'\n | 'neutral';\n\nfunction readVar(name: string): string {\n if (typeof window === 'undefined') return `var(${name})`;\n const v = getComputedStyle(document.documentElement).getPropertyValue(name).trim();\n return v || `var(${name})`;\n}\n\n/**\n * Resolve the semantic viz palette from CSS variables and keep it in sync with\n * the active theme. Returns concrete colour strings for use in recharts props.\n */\nexport function useVizColors(): VizColors {\n const [tick, setTick] = useState(0);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const rerender = () => setTick((t) => t + 1);\n const obs = new MutationObserver(rerender);\n obs.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-theme', 'class', 'style'],\n });\n return () => obs.disconnect();\n }, []);\n\n return useMemo(() => {\n void tick; // re-resolve whenever the theme attribute changes\n const core = Object.fromEntries(\n (Object.keys(CORE_TOKENS) as CoreToken[]).map((k) => [k, readVar(CORE_TOKENS[k])])\n ) as Record<CoreToken, string>;\n const palette = PALETTE_VARS.map(readVar);\n\n const tone = (t?: VizTone): string => {\n switch (t) {\n case 'brand':\n case 'primary':\n return core.brand;\n case 'success':\n case 'positive':\n return core.success;\n case 'error':\n case 'negative':\n return core.error;\n case 'warning':\n return core.warning;\n case 'info':\n return core.info;\n case 'teal':\n return core.teal;\n case 'blue':\n return core.blue;\n case 'purple':\n return core.purple;\n case 'indigo':\n return core.indigo;\n case 'neutral':\n return core.textSecondary;\n default:\n return core.brand;\n }\n };\n\n return { ...core, palette, tone };\n }, [tick]);\n}\n\n// ============================================================================\n// Shared chart tooltip (themed — recharts' default is light-only)\n// ============================================================================\n\ninterface TooltipEntry {\n name?: string | number;\n value?: string | number;\n color?: string;\n payload?: Record<string, unknown>;\n}\n\nfunction useTooltipStyles(): { wrapper: CSSProperties; label: CSSProperties } {\n const c = useVizColors();\n return {\n wrapper: {\n background: c.surface,\n border: `1px solid ${c.border}`,\n borderRadius: 10,\n padding: '8px 12px',\n color: c.textPrimary,\n fontSize: 12,\n boxShadow: 'var(--shadow-pop, 0 8px 24px rgba(0,0,0,0.35))',\n },\n label: { color: c.textSecondary, marginBottom: 4, fontSize: 11 },\n };\n}\n\nfunction ChartTooltip({\n active,\n payload,\n label,\n valueFormatter,\n}: {\n active?: boolean;\n payload?: TooltipEntry[];\n label?: string | number;\n valueFormatter?: (v: number) => string;\n}) {\n const styles = useTooltipStyles();\n if (!active || !payload || payload.length === 0) return null;\n return (\n <div style={styles.wrapper} role=\"tooltip\">\n {label !== undefined && label !== '' ? <div style={styles.label}>{label}</div> : null}\n {payload.map((entry, i) => {\n const raw = typeof entry.value === 'number' ? entry.value : Number(entry.value);\n const shown =\n valueFormatter && Number.isFinite(raw) ? valueFormatter(raw) : String(entry.value ?? '');\n return (\n <div key={i} className=\"flex items-center gap-2\">\n {entry.color ? (\n <span\n aria-hidden=\"true\"\n style={{\n width: 8,\n height: 8,\n borderRadius: 9999,\n background: entry.color,\n display: 'inline-block',\n }}\n />\n ) : null}\n {entry.name ? <span style={{ color: styles.label.color }}>{entry.name}:</span> : null}\n <span style={{ fontWeight: 600 }}>{shown}</span>\n </div>\n );\n })}\n </div>\n );\n}\n\n// ============================================================================\n// Motion helpers\n// ============================================================================\n\n/**\n * Staggered enter animation (translateY + opacity). Fully disabled under\n * `prefers-reduced-motion` (renders a plain element). Use `index` to stagger a\n * list/grid of cards.\n */\nexport function FadeIn({\n children,\n index = 0,\n delay = 0,\n className,\n as: Tag = 'div',\n}: {\n children: ReactNode;\n index?: number;\n delay?: number;\n className?: string;\n as?: 'div' | 'li' | 'section';\n}) {\n const reduce = useReducedMotion();\n if (reduce) {\n return <Tag className={className}>{children}</Tag>;\n }\n return (\n <Tag\n className={cn('br-fade-in', className)}\n style={{ animationDelay: `${delay + index * 0.04}s` }}\n >\n {children}\n </Tag>\n );\n}\n\n// ============================================================================\n// GlassCard — sanctioned glass/elevation surface with graceful fallback\n// ============================================================================\n\n/**\n * Floating/hero surface using the sanctioned glass tokens. Falls back to the\n * standard elevated surface when a glass token is absent (older brand builds).\n */\nexport function GlassCard({\n children,\n className,\n glow = false,\n}: {\n children: ReactNode;\n className?: string;\n /** Add a subtle emerald glow ring. */\n glow?: boolean;\n}) {\n return (\n <div\n className={cn(\n 'rounded-2xl border p-5',\n // Glass tokens with hard fallbacks to always-present semantic tokens.\n 'border-[var(--color-border-glass,var(--color-border-subtle))]',\n 'bg-[var(--color-surface-glass,var(--color-bg-elevated))]',\n 'shadow-[var(--shadow-float,var(--shadow-elevation-3))]',\n 'backdrop-blur-[var(--blur-glass,12px)]',\n glow && 'ring-1 ring-[var(--color-action-primary-border)]/40',\n className\n )}\n >\n {children}\n </div>\n );\n}\n\n// ============================================================================\n// DonutChart\n// ============================================================================\n\nexport interface DonutDatum {\n label: string;\n value: number;\n tone?: VizTone;\n}\n\nexport function DonutChart({\n data,\n centerLabel,\n centerValue,\n legend = true,\n height = 220,\n valueFormatter,\n}: {\n data: DonutDatum[];\n centerLabel?: string;\n centerValue?: string;\n legend?: boolean;\n height?: number;\n valueFormatter?: (v: number) => string;\n}) {\n const c = useVizColors();\n const reduce = useReducedMotion();\n const rows = data.filter((d) => Number.isFinite(d.value) && d.value > 0);\n\n if (rows.length === 0) {\n return <p className=\"text-sm text-text-secondary\">No data.</p>;\n }\n\n const colorFor = (d: DonutDatum, i: number) =>\n d.tone ? c.tone(d.tone) : c.palette[i % c.palette.length];\n\n return (\n <div className=\"flex flex-col items-center gap-4 sm:flex-row sm:items-center\">\n <div className=\"relative\" style={{ width: '100%', maxWidth: 260, height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <PieChart>\n <Pie\n data={rows}\n dataKey=\"value\"\n nameKey=\"label\"\n innerRadius=\"62%\"\n outerRadius=\"90%\"\n paddingAngle={2}\n stroke=\"transparent\"\n isAnimationActive={!reduce}\n animationDuration={250}\n >\n {rows.map((d, i) => (\n <Cell key={d.label} fill={colorFor(d, i)} />\n ))}\n </Pie>\n <Tooltip content={<ChartTooltip valueFormatter={valueFormatter} />} />\n </PieChart>\n </ResponsiveContainer>\n {centerValue || centerLabel ? (\n <div className=\"pointer-events-none absolute inset-0 flex flex-col items-center justify-center\">\n {centerValue ? (\n <span className=\"text-xl font-semibold text-text-primary\">{centerValue}</span>\n ) : null}\n {centerLabel ? (\n <span className=\"text-xs text-text-secondary\">{centerLabel}</span>\n ) : null}\n </div>\n ) : null}\n </div>\n {legend ? (\n <ul className=\"grid flex-1 grid-cols-1 gap-2 sm:grid-cols-2\" aria-label=\"Legend\">\n {rows.map((d, i) => (\n <li key={d.label} className=\"flex items-center gap-2 text-xs\">\n <span\n aria-hidden=\"true\"\n className=\"size-2.5 shrink-0 rounded-full\"\n style={{ background: colorFor(d, i) }}\n />\n <span className=\"truncate text-text-secondary\">{d.label}</span>\n <span className=\"ml-auto font-medium text-text-primary\">\n {valueFormatter ? valueFormatter(d.value) : d.value}\n </span>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n\n// ============================================================================\n// Sparkline\n// ============================================================================\n\nexport function Sparkline({\n data,\n tone = 'brand',\n height = 40,\n className,\n}: {\n data: number[];\n tone?: VizTone;\n height?: number;\n className?: string;\n}) {\n const c = useVizColors();\n const stroke = c.tone(tone);\n const points = data.filter((n) => Number.isFinite(n));\n const gradientId = `spark-${useId().replace(/:/g, '')}`;\n if (points.length < 2) {\n return <div className={className} style={{ height }} aria-hidden=\"true\" />;\n }\n const chartData = points.map((y, x) => ({ x, y }));\n return (\n <div className={className} style={{ width: '100%', height }} aria-hidden=\"true\">\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart data={chartData} margin={{ top: 2, right: 0, bottom: 0, left: 0 }}>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={stroke} stopOpacity={0.28} />\n <stop offset=\"100%\" stopColor={stroke} stopOpacity={0} />\n </linearGradient>\n </defs>\n <Area\n type=\"monotone\"\n dataKey=\"y\"\n stroke={stroke}\n strokeWidth={2}\n fill={`url(#${gradientId})`}\n isAnimationActive={false}\n dot={false}\n />\n </AreaChart>\n </ResponsiveContainer>\n </div>\n );\n}\n\n// ============================================================================\n// ProgressRing — clean SVG radial progress\n// ============================================================================\n\nexport function ProgressRing({\n value,\n label,\n tone = 'brand',\n size = 120,\n strokeWidth = 10,\n}: {\n value: number;\n label?: string;\n tone?: VizTone;\n size?: number;\n strokeWidth?: number;\n}) {\n const c = useVizColors();\n const reduce = useReducedMotion();\n const pct = Math.max(0, Math.min(100, Number.isFinite(value) ? value : 0));\n const r = (size - strokeWidth) / 2;\n const circ = 2 * Math.PI * r;\n const dash = (pct / 100) * circ;\n const stroke = c.tone(tone);\n const targetOffset = circ - dash;\n // Reduced motion renders filled immediately; otherwise start empty and fill\n // on the next frame so the ring animates from 0 → value via CSS.\n const [dashOffset, setDashOffset] = useState(reduce ? targetOffset : circ);\n\n useEffect(() => {\n const id = requestAnimationFrame(() => setDashOffset(targetOffset));\n return () => cancelAnimationFrame(id);\n }, [targetOffset]);\n\n return (\n <div\n className=\"relative inline-flex items-center justify-center\"\n style={{ width: size, height: size }}\n role=\"progressbar\"\n aria-valuenow={Math.round(pct)}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label ?? 'Progress'}\n >\n <svg width={size} height={size} className=\"-rotate-90\">\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={c.border}\n strokeWidth={strokeWidth}\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={stroke}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circ}\n strokeDashoffset={dashOffset}\n style={{ transition: reduce ? 'none' : 'stroke-dashoffset 600ms ease' }}\n />\n </svg>\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n <span className=\"text-lg font-semibold text-text-primary\">{Math.round(pct)}%</span>\n {label ? <span className=\"text-[10px] text-text-secondary\">{label}</span> : null}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// TrendBars — diverging inflow/outflow cashflow bars\n// ============================================================================\n\nexport interface TrendDatum {\n label: string;\n inflow: number;\n outflow: number;\n}\n\nexport function TrendBars({\n data,\n height = 240,\n valueFormatter,\n}: {\n data: TrendDatum[];\n height?: number;\n valueFormatter?: (v: number) => string;\n}) {\n const c = useVizColors();\n const reduce = useReducedMotion();\n const rows = data.filter((d) => Number.isFinite(d.inflow) && Number.isFinite(d.outflow));\n if (rows.length === 0) {\n return <p className=\"text-sm text-text-secondary\">No cashflow data.</p>;\n }\n // Diverging: inflow up (positive), outflow down (negative).\n const chartData = rows.map((d) => ({\n label: d.label,\n inflow: Math.abs(d.inflow),\n outflow: -Math.abs(d.outflow),\n }));\n\n return (\n <div style={{ width: '100%', height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <BarChart\n data={chartData}\n margin={{ top: 8, right: 8, bottom: 0, left: 8 }}\n stackOffset=\"sign\"\n >\n <XAxis\n dataKey=\"label\"\n tick={{ fill: c.textSecondary, fontSize: 11 }}\n axisLine={{ stroke: c.grid }}\n tickLine={false}\n />\n <YAxis\n tick={{ fill: c.textSecondary, fontSize: 11 }}\n axisLine={false}\n tickLine={false}\n width={44}\n tickFormatter={(v: number) =>\n valueFormatter ? valueFormatter(Math.abs(v)) : String(Math.abs(v))\n }\n />\n <ReferenceLine y={0} stroke={c.grid} />\n <Tooltip\n cursor={{ fill: c.border, opacity: 0.25 }}\n content={\n <ChartTooltip\n valueFormatter={(v) =>\n valueFormatter ? valueFormatter(Math.abs(v)) : String(Math.abs(v))\n }\n />\n }\n />\n <Bar\n dataKey=\"inflow\"\n name=\"Inflow\"\n fill={c.positive}\n radius={[4, 4, 0, 0]}\n isAnimationActive={!reduce}\n animationDuration={250}\n />\n <Bar\n dataKey=\"outflow\"\n name=\"Outflow\"\n fill={c.negative}\n radius={[0, 0, 4, 4]}\n isAnimationActive={!reduce}\n animationDuration={250}\n />\n </BarChart>\n </ResponsiveContainer>\n </div>\n );\n}\n\n// ============================================================================\n// MiniAreaChart — projection with optional dashed target line\n// ============================================================================\n\nexport interface AreaDatum {\n x: string | number;\n y: number;\n}\n\nexport function MiniAreaChart({\n data,\n target,\n tone = 'brand',\n height = 200,\n valueFormatter,\n}: {\n data: AreaDatum[];\n target?: number;\n tone?: VizTone;\n height?: number;\n valueFormatter?: (v: number) => string;\n}) {\n const c = useVizColors();\n const reduce = useReducedMotion();\n const stroke = c.tone(tone);\n const rows = data.filter((d) => Number.isFinite(d.y));\n const gradientId = `area-${useId().replace(/:/g, '')}`;\n if (rows.length < 2) {\n return <p className=\"text-sm text-text-secondary\">Not enough data to chart.</p>;\n }\n return (\n <div style={{ width: '100%', height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart data={rows} margin={{ top: 8, right: 8, bottom: 0, left: 8 }}>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={stroke} stopOpacity={0.3} />\n <stop offset=\"100%\" stopColor={stroke} stopOpacity={0.02} />\n </linearGradient>\n </defs>\n <XAxis\n dataKey=\"x\"\n tick={{ fill: c.textSecondary, fontSize: 11 }}\n axisLine={{ stroke: c.grid }}\n tickLine={false}\n />\n <YAxis\n tick={{ fill: c.textSecondary, fontSize: 11 }}\n axisLine={false}\n tickLine={false}\n width={44}\n tickFormatter={(v: number) => (valueFormatter ? valueFormatter(v) : String(v))}\n />\n <Tooltip content={<ChartTooltip valueFormatter={valueFormatter} />} />\n {target !== undefined && Number.isFinite(target) ? (\n <ReferenceLine\n y={target}\n stroke={c.textSecondary}\n strokeDasharray=\"5 4\"\n label={{\n value: valueFormatter ? `Target ${valueFormatter(target)}` : `Target ${target}`,\n position: 'insideTopRight',\n fill: c.textSecondary,\n fontSize: 10,\n }}\n />\n ) : null}\n <Area\n type=\"monotone\"\n dataKey=\"y\"\n stroke={stroke}\n strokeWidth={2}\n fill={`url(#${gradientId})`}\n isAnimationActive={!reduce}\n animationDuration={250}\n dot={false}\n />\n </AreaChart>\n </ResponsiveContainer>\n </div>\n );\n}\n\n// ============================================================================\n// LifecycleStepper — horizontal proposal/rebalance lifecycle\n// ============================================================================\n\nconst NEGATIVE_TERMINAL = /reject|cancel|abandon|decline|fail/i;\n\nexport function LifecycleStepper({\n steps,\n current,\n className,\n}: {\n steps: string[];\n current: string;\n className?: string;\n}) {\n const isNegativeTerminal = NEGATIVE_TERMINAL.test(current);\n const currentIndex = steps.findIndex((s) => s.toLowerCase() === current.toLowerCase());\n\n return (\n <ol\n className={cn('flex w-full items-center overflow-x-auto', className)}\n aria-label=\"Lifecycle progress\"\n >\n {steps.map((step, i) => {\n const isLast = i === steps.length - 1;\n const done = currentIndex >= 0 && i < currentIndex;\n const active = currentIndex >= 0 && i === currentIndex && !isNegativeTerminal;\n const state = done ? 'done' : active ? 'active' : 'upcoming';\n return (\n <li\n key={step}\n className=\"flex min-w-fit flex-1 items-center\"\n aria-current={active ? 'step' : undefined}\n >\n <div className=\"flex flex-col items-center gap-1.5 px-1\">\n <span\n className={cn(\n 'flex size-7 items-center justify-center rounded-full border text-xs font-semibold transition-colors',\n state === 'done' &&\n 'border-transparent bg-[var(--color-action-primary-bg)] text-[var(--color-action-primary-text)]',\n state === 'active' &&\n 'border-[var(--color-action-primary-border)] bg-[var(--color-action-primary-bg)]/15 text-[var(--color-action-primary-text)]',\n state === 'upcoming' && 'border-border-subtle bg-bg-sunken text-text-secondary'\n )}\n aria-hidden=\"true\"\n >\n {done ? '✓' : i + 1}\n </span>\n <span\n className={cn(\n 'whitespace-nowrap text-[11px]',\n active ? 'font-medium text-text-primary' : 'text-text-secondary'\n )}\n >\n {step}\n </span>\n </div>\n {!isLast ? (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'mx-1 h-0.5 flex-1 rounded-full',\n done ? 'bg-[var(--color-action-primary-bg)]' : 'bg-border-subtle'\n )}\n />\n ) : null}\n </li>\n );\n })}\n {isNegativeTerminal ? (\n <li className=\"ml-2 flex min-w-fit items-center gap-1.5\" aria-current=\"step\">\n <span className=\"mx-1 h-0.5 w-6 rounded-full bg-status-error-border\" aria-hidden=\"true\" />\n <div className=\"flex flex-col items-center gap-1.5 px-1\">\n <span\n className=\"flex size-7 items-center justify-center rounded-full border border-transparent bg-status-error text-xs font-semibold text-status-error-text\"\n aria-hidden=\"true\"\n >\n ✕\n </span>\n <span className=\"whitespace-nowrap text-[11px] font-medium text-status-error-text\">\n {current}\n </span>\n </div>\n </li>\n ) : null}\n </ol>\n );\n}\n\n// ============================================================================\n// StatTile — premium KPI tile\n// ============================================================================\n\nexport function StatTile({\n label,\n value,\n delta,\n deltaTone,\n deltaSuffix = '%',\n spark,\n sparkTone = 'brand',\n glow = false,\n icon,\n className,\n}: {\n label: string;\n value: string;\n /** Optional signed delta rendered as a chip (icon + sign + status colour). */\n delta?: number;\n /** Override the auto tone derived from the delta sign. */\n deltaTone?: 'positive' | 'negative' | 'neutral';\n deltaSuffix?: string;\n /** Optional inline sparkline series. */\n spark?: number[];\n sparkTone?: VizTone;\n /** Subtle emerald glow ring for hero tiles. */\n glow?: boolean;\n icon?: ReactNode;\n className?: string;\n}) {\n const positive = deltaTone ? deltaTone === 'positive' : (delta ?? 0) > 0;\n const negative = deltaTone ? deltaTone === 'negative' : (delta ?? 0) < 0;\n const deltaClass = positive\n ? 'text-status-success-text bg-status-success-bg'\n : negative\n ? 'text-status-error-text bg-status-error-bg'\n : 'text-text-secondary bg-bg-sunken';\n const sign = delta !== undefined && delta > 0 ? '+' : '';\n\n return (\n <div\n className={cn(\n 'group relative overflow-hidden rounded-xl border border-border-subtle bg-bg-surface p-4 transition-shadow',\n 'motion-safe:hover:shadow-[var(--shadow-pop-hover,var(--shadow-elevation-2))]',\n glow && 'ring-1 ring-[var(--color-action-primary-border)]/40',\n className\n )}\n >\n {glow ? (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute -right-8 -top-8 size-24 rounded-full bg-[var(--color-action-primary-bg)]/15 blur-2xl\"\n />\n ) : null}\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"text-xs text-text-secondary\">{label}</p>\n {icon ? <span className=\"text-text-secondary\">{icon}</span> : null}\n </div>\n <p className=\"mt-1 text-2xl font-semibold text-text-primary\">{value}</p>\n <div className=\"mt-2 flex items-center justify-between gap-2\">\n {delta !== undefined && Number.isFinite(delta) ? (\n <span\n className={cn(\n 'inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 text-xs font-medium',\n deltaClass\n )}\n >\n <span aria-hidden=\"true\">{positive ? '▲' : negative ? '▼' : '—'}</span>\n {sign}\n {delta.toFixed(1)}\n {deltaSuffix}\n </span>\n ) : (\n <span />\n )}\n {spark && spark.length > 1 ? (\n <div className=\"w-20 shrink-0\">\n <Sparkline data={spark} tone={sparkTone} height={28} />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"],"mappings":";;;;;;;;;;;;;;;;;AAsCA,SAAS,EAAG,GAAG,GAA8B;CAC3C,OAAO,EAAQ,EAAK,CAAM,CAAC;AAC7B;AAWA,SAAS,IAAgC;CAEvC,OADI,OAAO,SAAW,OAAe,OAAO,OAAO,cAAe,aAAmB,KAC9E,OAAO,WAAW,kCAAkC,EAAE;AAC/D;AAEA,SAAgB,IAA4B;CAG1C,IAAM,CAAC,GAAS,KAAc,EAAkB,CAAoB;CAUpE,OARA,QAAgB;EACd,IAAI,OAAO,SAAW,OAAe,OAAO,OAAO,cAAe,YAAY;EAC9E,IAAM,IAAK,OAAO,WAAW,kCAAkC,GACzD,KAAY,MAA2B,EAAW,EAAE,OAAO;EAEjE,OADA,EAAG,iBAAiB,UAAU,CAAQ,SACzB,EAAG,oBAAoB,UAAU,CAAQ;CACxD,GAAG,CAAC,CAAC,GAEE;AACT;AAIA,IAAM,IAAmB,yBACnB,IAAc;AAUpB,IAAI,OAAO,WAAa,OAAe,CAAC,SAAS,eAAe,CAAgB,GAAG;CACjF,IAAM,IAAK,SAAS,cAAc,OAAO;CAGzC,AAFA,EAAG,KAAK,GACR,EAAG,cAAc,GACjB,SAAS,KAAK,YAAY,CAAE;AAC9B;AAWA,IAAM,IAAc;CAClB,OAAO;CACP,aAAa;CACb,MAAM;CACN,MAAM;CACN,UAAU;CACV,UAAU;CACV,SAAS;CACT,OAAO;CACP,SAAS;CACT,MAAM;CACN,MAAM;CACN,MAAM;CACN,QAAQ;CACR,QAAQ;CACR,aAAa;CACb,eAAe;CACf,SAAS;CACT,QAAQ;AACV,GAKM,IAAe;CACnB;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;CACA;AACF;AAyBA,SAAS,EAAQ,GAAsB;CAGrC,OAFI,OAAO,SAAW,MAAoB,OAAO,EAAK,KAC5C,iBAAiB,SAAS,eAAe,EAAE,iBAAiB,CAAI,EAAE,KACrE,KAAK,OAAO,EAAK;AAC1B;AAMA,SAAgB,IAA0B;CACxC,IAAM,CAAC,GAAM,KAAW,EAAS,CAAC;CAalC,OAXA,QAAgB;EACd,IAAI,OAAO,SAAW,KAAa;EAEnC,IAAM,IAAM,IAAI,uBADO,GAAS,MAAM,IAAI,CAAC,CACF;EAKzC,OAJA,EAAI,QAAQ,SAAS,iBAAiB;GACpC,YAAY;GACZ,iBAAiB;IAAC;IAAc;IAAS;GAAO;EAClD,CAAC,SACY,EAAI,WAAW;CAC9B,GAAG,CAAC,CAAC,GAEE,QAAc;EAEnB,IAAM,IAAO,OAAO,YACjB,OAAO,KAAK,CAAW,EAAkB,KAAK,MAAM,CAAC,GAAG,EAAQ,EAAY,EAAE,CAAC,CAAC,CACnF,GACM,IAAU,EAAa,IAAI,CAAO,GAElC,KAAQ,MAAwB;GACpC,QAAQ,GAAR;IACE,KAAK;IACL,KAAK,WACH,OAAO,EAAK;IACd,KAAK;IACL,KAAK,YACH,OAAO,EAAK;IACd,KAAK;IACL,KAAK,YACH,OAAO,EAAK;IACd,KAAK,WACH,OAAO,EAAK;IACd,KAAK,QACH,OAAO,EAAK;IACd,KAAK,QACH,OAAO,EAAK;IACd,KAAK,QACH,OAAO,EAAK;IACd,KAAK,UACH,OAAO,EAAK;IACd,KAAK,UACH,OAAO,EAAK;IACd,KAAK,WACH,OAAO,EAAK;IACd,SACE,OAAO,EAAK;GAChB;EACF;EAEA,OAAO;GAAE,GAAG;GAAM;GAAS;EAAK;CAClC,GAAG,CAAC,CAAI,CAAC;AACX;AAaA,SAAS,IAAqE;CAC5E,IAAM,IAAI,EAAa;CACvB,OAAO;EACL,SAAS;GACP,YAAY,EAAE;GACd,QAAQ,aAAa,EAAE;GACvB,cAAc;GACd,SAAS;GACT,OAAO,EAAE;GACT,UAAU;GACV,WAAW;EACb;EACA,OAAO;GAAE,OAAO,EAAE;GAAe,cAAc;GAAG,UAAU;EAAG;CACjE;AACF;AAEA,SAAS,EAAa,EACpB,WACA,YACA,UACA,qBAMC;CACD,IAAM,IAAS,EAAiB;CAEhC,OADI,CAAC,KAAU,CAAC,KAAW,EAAQ,WAAW,IAAU,OAEtD,kBAAC,OAAD;EAAK,OAAO,EAAO;EAAS,MAAK;YAAjC,CACG,MAAU,KAAA,KAAa,MAAU,KAAK,kBAAC,OAAD;GAAK,OAAO,EAAO;aAAQ;EAAW,CAAA,IAAI,MAChF,EAAQ,KAAK,GAAO,MAAM;GACzB,IAAM,IAAM,OAAO,EAAM,SAAU,WAAW,EAAM,QAAQ,OAAO,EAAM,KAAK,GACxE,IACJ,KAAkB,OAAO,SAAS,CAAG,IAAI,EAAe,CAAG,IAAI,OAAO,EAAM,SAAS,EAAE;GACzF,OACE,kBAAC,OAAD;IAAa,WAAU;cAAvB;KACG,EAAM,QACL,kBAAC,QAAD;MACE,eAAY;MACZ,OAAO;OACL,OAAO;OACP,QAAQ;OACR,cAAc;OACd,YAAY,EAAM;OAClB,SAAS;MACX;KACD,CAAA,IACC;KACH,EAAM,OAAO,kBAAC,QAAD;MAAM,OAAO,EAAE,OAAO,EAAO,MAAM,MAAM;gBAAzC,CAA6C,EAAM,MAAK,GAAO;UAAI;KACjF,kBAAC,QAAD;MAAM,OAAO,EAAE,YAAY,IAAI;gBAAI;KAAY,CAAA;IAC5C;MAfK,CAeL;EAET,CAAC,CACE;;AAET;AAWA,SAAgB,EAAO,EACrB,aACA,WAAQ,GACR,WAAQ,GACR,cACA,IAAI,IAAM,SAOT;CAKD,OAJe,EACX,IACK,kBAAC,GAAD;EAAgB;EAAY;CAAc,CAAA,IAGjD,kBAAC,GAAD;EACE,WAAW,EAAG,cAAc,CAAS;EACrC,OAAO,EAAE,gBAAgB,GAAG,IAAQ,IAAQ,IAAK,GAAG;EAEnD;CACE,CAAA;AAET;AAUA,SAAgB,EAAU,EACxB,aACA,cACA,UAAO,MAMN;CACD,OACE,kBAAC,OAAD;EACE,WAAW,EACT,0BAEA,iEACA,4DACA,0DACA,0CACA,KAAQ,uDACR,CACF;EAEC;CACE,CAAA;AAET;AAYA,SAAgB,EAAW,EACzB,SACA,gBACA,gBACA,YAAS,IACT,YAAS,KACT,qBAQC;CACD,IAAM,IAAI,EAAa,GACjB,IAAS,EAAiB,GAC1B,IAAO,EAAK,QAAQ,MAAM,OAAO,SAAS,EAAE,KAAK,KAAK,EAAE,QAAQ,CAAC;CAEvE,IAAI,EAAK,WAAW,GAClB,OAAO,kBAAC,KAAD;EAAG,WAAU;YAA8B;CAAW,CAAA;CAG/D,IAAM,KAAY,GAAe,MAC/B,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,IAAI,EAAE,QAAQ,IAAI,EAAE,QAAQ;CAEpD,OACE,kBAAC,OAAD;EAAK,WAAU;YAAf,CACE,kBAAC,OAAD;GAAK,WAAU;GAAW,OAAO;IAAE,OAAO;IAAQ,UAAU;IAAK;GAAO;aAAxE,CACE,kBAAC,GAAD;IAAqB,OAAM;IAAO,QAAO;cACvC,kBAAC,GAAD,EAAA,UAAA,CACE,kBAAC,GAAD;KACE,MAAM;KACN,SAAQ;KACR,SAAQ;KACR,aAAY;KACZ,aAAY;KACZ,cAAc;KACd,QAAO;KACP,mBAAmB,CAAC;KACpB,mBAAmB;eAElB,EAAK,KAAK,GAAG,MACZ,kBAAC,GAAD,EAAoB,MAAM,EAAS,GAAG,CAAC,EAAI,GAAhC,EAAE,KAA8B,CAC5C;IACE,CAAA,GACL,kBAAC,GAAD,EAAS,SAAS,kBAAC,GAAD,EAA8B,kBAAiB,CAAA,EAAI,CAAA,CAC7D,EAAA,CAAA;GACS,CAAA,GACpB,KAAe,IACd,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,IACC,kBAAC,QAAD;KAAM,WAAU;eAA2C;IAAkB,CAAA,IAC3E,MACH,IACC,kBAAC,QAAD;KAAM,WAAU;eAA+B;IAAkB,CAAA,IAC/D,IACD;QACH,IACD;MACJ,IACC,kBAAC,MAAD;GAAI,WAAU;GAA+C,cAAW;aACrE,EAAK,KAAK,GAAG,MACZ,kBAAC,MAAD;IAAkB,WAAU;cAA5B;KACE,kBAAC,QAAD;MACE,eAAY;MACZ,WAAU;MACV,OAAO,EAAE,YAAY,EAAS,GAAG,CAAC,EAAE;KACrC,CAAA;KACD,kBAAC,QAAD;MAAM,WAAU;gBAAgC,EAAE;KAAY,CAAA;KAC9D,kBAAC,QAAD;MAAM,WAAU;gBACb,IAAiB,EAAe,EAAE,KAAK,IAAI,EAAE;KAC1C,CAAA;IACJ;MAVK,EAAE,KAUP,CACL;EACC,CAAA,IACF,IACD;;AAET;AAMA,SAAgB,EAAU,EACxB,SACA,UAAO,SACP,YAAS,IACT,gBAMC;CAED,IAAM,IADI,EACK,EAAE,KAAK,CAAI,GACpB,IAAS,EAAK,QAAQ,MAAM,OAAO,SAAS,CAAC,CAAC,GAC9C,IAAa,SAAS,EAAM,EAAE,QAAQ,MAAM,EAAE;CACpD,IAAI,EAAO,SAAS,GAClB,OAAO,kBAAC,OAAD;EAAgB;EAAW,OAAO,EAAE,UAAO;EAAG,eAAY;CAAQ,CAAA;CAE3E,IAAM,IAAY,EAAO,KAAK,GAAG,OAAO;EAAE;EAAG;CAAE,EAAE;CACjD,OACE,kBAAC,OAAD;EAAgB;EAAW,OAAO;GAAE,OAAO;GAAQ;EAAO;EAAG,eAAY;YACvE,kBAAC,GAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,kBAAC,GAAD;IAAW,MAAM;IAAW,QAAQ;KAAE,KAAK;KAAG,OAAO;KAAG,QAAQ;KAAG,MAAM;IAAE;cAA3E,CACE,kBAAC,QAAD,EAAA,UACE,kBAAC,kBAAD;KAAgB,IAAI;KAAY,IAAG;KAAI,IAAG;KAAI,IAAG;KAAI,IAAG;eAAxD,CACE,kBAAC,QAAD;MAAM,QAAO;MAAK,WAAW;MAAQ,aAAa;KAAO,CAAA,GACzD,kBAAC,QAAD;MAAM,QAAO;MAAO,WAAW;MAAQ,aAAa;KAAI,CAAA,CAC1C;OACZ,CAAA,GACN,kBAAC,GAAD;KACE,MAAK;KACL,SAAQ;KACA;KACR,aAAa;KACb,MAAM,QAAQ,EAAW;KACzB,mBAAmB;KACnB,KAAK;IACN,CAAA,CACQ;;EACQ,CAAA;CAClB,CAAA;AAET;AAMA,SAAgB,EAAa,EAC3B,UACA,UACA,UAAO,SACP,UAAO,KACP,iBAAc,MAOb;CACD,IAAM,IAAI,EAAa,GACjB,IAAS,EAAiB,GAC1B,IAAM,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,OAAO,SAAS,CAAK,IAAI,IAAQ,CAAC,CAAC,GACnE,KAAK,IAAO,KAAe,GAC3B,IAAO,IAAI,KAAK,KAAK,GACrB,IAAQ,IAAM,MAAO,GACrB,IAAS,EAAE,KAAK,CAAI,GACpB,IAAe,IAAO,GAGtB,CAAC,GAAY,KAAiB,EAAS,IAAS,IAAe,CAAI;CAOzE,OALA,QAAgB;EACd,IAAM,IAAK,4BAA4B,EAAc,CAAY,CAAC;EAClE,aAAa,qBAAqB,CAAE;CACtC,GAAG,CAAC,CAAY,CAAC,GAGf,kBAAC,OAAD;EACE,WAAU;EACV,OAAO;GAAE,OAAO;GAAM,QAAQ;EAAK;EACnC,MAAK;EACL,iBAAe,KAAK,MAAM,CAAG;EAC7B,iBAAe;EACf,iBAAe;EACf,cAAY,KAAS;YAPvB,CASE,kBAAC,OAAD;GAAK,OAAO;GAAM,QAAQ;GAAM,WAAU;aAA1C,CACE,kBAAC,UAAD;IACE,IAAI,IAAO;IACX,IAAI,IAAO;IACR;IACH,MAAK;IACL,QAAQ,EAAE;IACG;GACd,CAAA,GACD,kBAAC,UAAD;IACE,IAAI,IAAO;IACX,IAAI,IAAO;IACR;IACH,MAAK;IACG;IACK;IACb,eAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,OAAO,EAAE,YAAY,IAAS,SAAS,+BAA+B;GACvE,CAAA,CACE;MACL,kBAAC,OAAD;GAAK,WAAU;aAAf,CACE,kBAAC,QAAD;IAAM,WAAU;cAAhB,CAA2D,KAAK,MAAM,CAAG,GAAE,GAAO;OACjF,IAAQ,kBAAC,QAAD;IAAM,WAAU;cAAmC;GAAY,CAAA,IAAI,IACzE;IACF;;AAET;AAYA,SAAgB,EAAU,EACxB,SACA,YAAS,KACT,qBAKC;CACD,IAAM,IAAI,EAAa,GACjB,IAAS,EAAiB,GAC1B,IAAO,EAAK,QAAQ,MAAM,OAAO,SAAS,EAAE,MAAM,KAAK,OAAO,SAAS,EAAE,OAAO,CAAC;CACvF,IAAI,EAAK,WAAW,GAClB,OAAO,kBAAC,KAAD;EAAG,WAAU;YAA8B;CAAoB,CAAA;CAGxE,IAAM,IAAY,EAAK,KAAK,OAAO;EACjC,OAAO,EAAE;EACT,QAAQ,KAAK,IAAI,EAAE,MAAM;EACzB,SAAS,CAAC,KAAK,IAAI,EAAE,OAAO;CAC9B,EAAE;CAEF,OACE,kBAAC,OAAD;EAAK,OAAO;GAAE,OAAO;GAAQ;EAAO;YAClC,kBAAC,GAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,kBAAC,GAAD;IACE,MAAM;IACN,QAAQ;KAAE,KAAK;KAAG,OAAO;KAAG,QAAQ;KAAG,MAAM;IAAE;IAC/C,aAAY;cAHd;KAKE,kBAAC,GAAD;MACE,SAAQ;MACR,MAAM;OAAE,MAAM,EAAE;OAAe,UAAU;MAAG;MAC5C,UAAU,EAAE,QAAQ,EAAE,KAAK;MAC3B,UAAU;KACX,CAAA;KACD,kBAAC,GAAD;MACE,MAAM;OAAE,MAAM,EAAE;OAAe,UAAU;MAAG;MAC5C,UAAU;MACV,UAAU;MACV,OAAO;MACP,gBAAgB,MACd,IAAiB,EAAe,KAAK,IAAI,CAAC,CAAC,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC;KAEpE,CAAA;KACD,kBAAC,GAAD;MAAe,GAAG;MAAG,QAAQ,EAAE;KAAO,CAAA;KACtC,kBAAC,GAAD;MACE,QAAQ;OAAE,MAAM,EAAE;OAAQ,SAAS;MAAK;MACxC,SACE,kBAAC,GAAD,EACE,iBAAiB,MACf,IAAiB,EAAe,KAAK,IAAI,CAAC,CAAC,IAAI,OAAO,KAAK,IAAI,CAAC,CAAC,EAEpE,CAAA;KAEJ,CAAA;KACD,kBAAC,GAAD;MACE,SAAQ;MACR,MAAK;MACL,MAAM,EAAE;MACR,QAAQ;OAAC;OAAG;OAAG;OAAG;MAAC;MACnB,mBAAmB,CAAC;MACpB,mBAAmB;KACpB,CAAA;KACD,kBAAC,GAAD;MACE,SAAQ;MACR,MAAK;MACL,MAAM,EAAE;MACR,QAAQ;OAAC;OAAG;OAAG;OAAG;MAAC;MACnB,mBAAmB,CAAC;MACpB,mBAAmB;KACpB,CAAA;IACO;;EACS,CAAA;CAClB,CAAA;AAET;AAWA,SAAgB,EAAc,EAC5B,SACA,WACA,UAAO,SACP,YAAS,KACT,qBAOC;CACD,IAAM,IAAI,EAAa,GACjB,IAAS,EAAiB,GAC1B,IAAS,EAAE,KAAK,CAAI,GACpB,IAAO,EAAK,QAAQ,MAAM,OAAO,SAAS,EAAE,CAAC,CAAC,GAC9C,IAAa,QAAQ,EAAM,EAAE,QAAQ,MAAM,EAAE;CAInD,OAHI,EAAK,SAAS,IACT,kBAAC,KAAD;EAAG,WAAU;YAA8B;CAA4B,CAAA,IAG9E,kBAAC,OAAD;EAAK,OAAO;GAAE,OAAO;GAAQ;EAAO;YAClC,kBAAC,GAAD;GAAqB,OAAM;GAAO,QAAO;aACvC,kBAAC,GAAD;IAAW,MAAM;IAAM,QAAQ;KAAE,KAAK;KAAG,OAAO;KAAG,QAAQ;KAAG,MAAM;IAAE;cAAtE;KACE,kBAAC,QAAD,EAAA,UACE,kBAAC,kBAAD;MAAgB,IAAI;MAAY,IAAG;MAAI,IAAG;MAAI,IAAG;MAAI,IAAG;gBAAxD,CACE,kBAAC,QAAD;OAAM,QAAO;OAAK,WAAW;OAAQ,aAAa;MAAM,CAAA,GACxD,kBAAC,QAAD;OAAM,QAAO;OAAO,WAAW;OAAQ,aAAa;MAAO,CAAA,CAC7C;QACZ,CAAA;KACN,kBAAC,GAAD;MACE,SAAQ;MACR,MAAM;OAAE,MAAM,EAAE;OAAe,UAAU;MAAG;MAC5C,UAAU,EAAE,QAAQ,EAAE,KAAK;MAC3B,UAAU;KACX,CAAA;KACD,kBAAC,GAAD;MACE,MAAM;OAAE,MAAM,EAAE;OAAe,UAAU;MAAG;MAC5C,UAAU;MACV,UAAU;MACV,OAAO;MACP,gBAAgB,MAAe,IAAiB,EAAe,CAAC,IAAI,OAAO,CAAC;KAC7E,CAAA;KACD,kBAAC,GAAD,EAAS,SAAS,kBAAC,GAAD,EAA8B,kBAAiB,CAAA,EAAI,CAAA;KACpE,MAAW,KAAA,KAAa,OAAO,SAAS,CAAM,IAC7C,kBAAC,GAAD;MACE,GAAG;MACH,QAAQ,EAAE;MACV,iBAAgB;MAChB,OAAO;OACL,OAAO,IAAiB,UAAU,EAAe,CAAM,MAAM,UAAU;OACvE,UAAU;OACV,MAAM,EAAE;OACR,UAAU;MACZ;KACD,CAAA,IACC;KACJ,kBAAC,GAAD;MACE,MAAK;MACL,SAAQ;MACA;MACR,aAAa;MACb,MAAM,QAAQ,EAAW;MACzB,mBAAmB,CAAC;MACpB,mBAAmB;MACnB,KAAK;KACN,CAAA;IACQ;;EACQ,CAAA;CAClB,CAAA;AAET;AAMA,IAAM,IAAoB;AAE1B,SAAgB,EAAiB,EAC/B,UACA,YACA,gBAKC;CACD,IAAM,IAAqB,EAAkB,KAAK,CAAO,GACnD,IAAe,EAAM,WAAW,MAAM,EAAE,YAAY,MAAM,EAAQ,YAAY,CAAC;CAErF,OACE,kBAAC,MAAD;EACE,WAAW,EAAG,4CAA4C,CAAS;EACnE,cAAW;YAFb,CAIG,EAAM,KAAK,GAAM,MAAM;GACtB,IAAM,IAAS,MAAM,EAAM,SAAS,GAC9B,IAAO,KAAgB,KAAK,IAAI,GAChC,IAAS,KAAgB,KAAK,MAAM,KAAgB,CAAC,GACrD,IAAQ,IAAO,SAAS,IAAS,WAAW;GAClD,OACE,kBAAC,MAAD;IAEE,WAAU;IACV,gBAAc,IAAS,SAAS,KAAA;cAHlC,CAKE,kBAAC,OAAD;KAAK,WAAU;eAAf,CACE,kBAAC,QAAD;MACE,WAAW,EACT,uGACA,MAAU,UACR,kGACF,MAAU,YACR,8HACF,MAAU,cAAc,uDAC1B;MACA,eAAY;gBAEX,IAAO,MAAM,IAAI;KACd,CAAA,GACN,kBAAC,QAAD;MACE,WAAW,EACT,iCACA,IAAS,kCAAkC,qBAC7C;gBAEC;KACG,CAAA,CACH;QACH,IAQE,OAPF,kBAAC,QAAD;KACE,eAAY;KACZ,WAAW,EACT,kCACA,IAAO,wCAAwC,kBACjD;IACD,CAAA,CAED;MApCG,CAoCH;EAER,CAAC,GACA,IACC,kBAAC,MAAD;GAAI,WAAU;GAA2C,gBAAa;aAAtE,CACE,kBAAC,QAAD;IAAM,WAAU;IAAqD,eAAY;GAAQ,CAAA,GACzF,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,QAAD;KACE,WAAU;KACV,eAAY;eACb;IAEK,CAAA,GACN,kBAAC,QAAD;KAAM,WAAU;eACb;IACG,CAAA,CACH;KACH;OACF,IACF;;AAER;AAMA,SAAgB,EAAS,EACvB,UACA,UACA,UACA,cACA,iBAAc,KACd,UACA,eAAY,SACZ,UAAO,IACP,SACA,gBAgBC;CACD,IAAM,IAAW,IAAY,MAAc,cAAc,KAAS,KAAK,GACjE,IAAW,IAAY,MAAc,cAAc,KAAS,KAAK,GACjE,IAAa,IACf,kDACA,IACE,8CACA,oCACA,IAAO,MAAU,KAAA,KAAa,IAAQ,IAAI,MAAM;CAEtD,OACE,kBAAC,OAAD;EACE,WAAW,EACT,6GACA,gFACA,KAAQ,uDACR,CACF;YANF;GAQG,IACC,kBAAC,QAAD;IACE,eAAY;IACZ,WAAU;GACX,CAAA,IACC;GACJ,kBAAC,OAAD;IAAK,WAAU;cAAf,CACE,kBAAC,KAAD;KAAG,WAAU;eAA+B;IAAS,CAAA,GACpD,IAAO,kBAAC,QAAD;KAAM,WAAU;eAAuB;IAAW,CAAA,IAAI,IAC3D;;GACL,kBAAC,KAAD;IAAG,WAAU;cAAiD;GAAS,CAAA;GACvE,kBAAC,OAAD;IAAK,WAAU;cAAf,CACG,MAAU,KAAA,KAAa,OAAO,SAAS,CAAK,IAC3C,kBAAC,QAAD;KACE,WAAW,EACT,mFACA,CACF;eAJF;MAME,kBAAC,QAAD;OAAM,eAAY;iBAAQ,IAAW,MAAM,IAAW,MAAM;MAAU,CAAA;MACrE;MACA,EAAM,QAAQ,CAAC;MACf;KACG;SAEN,kBAAC,QAAD,CAAO,CAAA,GAER,KAAS,EAAM,SAAS,IACvB,kBAAC,OAAD;KAAK,WAAU;eACb,kBAAC,GAAD;MAAW,MAAM;MAAO,MAAM;MAAW,QAAQ;KAAK,CAAA;IACnD,CAAA,IACH,IACD;;EACF;;AAET"}
1
+ {"version":3,"file":"viz.js","names":[],"sources":["../../../src/brainyrich/components/viz.tsx"],"sourcesContent":["/**\n * BrainyRich data-viz + polish kit.\n * @module brainyrich/components/viz\n *\n * A tokenized, responsive, dark-mode-first visualization + motion kit built on\n * recharts (^2.15) with lightweight, dependency-free CSS motion. Every colour is read from the\n * platform's SEMANTIC CSS variables at runtime (see {@link useVizColors}) so\n * charts always track the active theme and the emerald BrainyRich brand\n * (`--color-action-primary-bg`). No raw hex/rgb literals live in this file.\n *\n * All chart components are wrapped in a recharts `<ResponsiveContainer>` so they\n * resize with their parent. Motion is tasteful (<=250ms) and disabled under\n * `prefers-reduced-motion`.\n *\n * Page agents: import from `#brainyrich/components/viz` (or the components\n * barrel). Pass values straight from the real `bra*` hooks — this kit only\n * renders; it never fabricates data.\n */\nimport { useEffect, useId, useMemo, useState, type CSSProperties, type ReactNode } from 'react';\nimport {\n Area,\n AreaChart,\n Bar,\n BarChart,\n Cell,\n Pie,\n PieChart,\n ReferenceLine,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts';\nimport { clsx, type ClassValue } from 'clsx';\nimport { twMerge } from 'tailwind-merge';\n\nfunction cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n\n// ============================================================================\n// Motion primitives (dependency-free, pure CSS — no animation library)\n// ============================================================================\n\n/**\n * SSR-safe `prefers-reduced-motion` hook. Returns `false` on the server and on\n * the first client render, then subscribes to the media query so all motion in\n * this kit is disabled the moment the user asks for reduced motion.\n */\nfunction prefersReducedMotion(): boolean {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return false;\n return window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n}\n\nexport function useReducedMotion(): boolean {\n // Read the current preference lazily at mount (SSR-safe: `false` on the\n // server), then only update via the media-query change listener.\n const [reduced, setReduced] = useState<boolean>(prefersReducedMotion);\n\n useEffect(() => {\n if (typeof window === 'undefined' || typeof window.matchMedia !== 'function') return;\n const mq = window.matchMedia('(prefers-reduced-motion: reduce)');\n const onChange = (e: MediaQueryListEvent) => setReduced(e.matches);\n mq.addEventListener('change', onChange);\n return () => mq.removeEventListener('change', onChange);\n }, []);\n\n return reduced;\n}\n\n// Enter animation (translateY + opacity) injected once as a real stylesheet so\n// the keyframes + `.br-fade-in` class exist before the first animated paint.\nconst FADE_IN_STYLE_ID = 'brainyrich-viz-motion';\nconst FADE_IN_CSS = `\n@keyframes br-fade-in {\n from { opacity: 0; transform: translateY(8px); }\n to { opacity: 1; transform: none; }\n}\n.br-fade-in {\n animation: br-fade-in 240ms var(--motion-easing-standard, ease-out) both;\n}\n`;\n\nif (typeof document !== 'undefined' && !document.getElementById(FADE_IN_STYLE_ID)) {\n const el = document.createElement('style');\n el.id = FADE_IN_STYLE_ID;\n el.textContent = FADE_IN_CSS;\n document.head.appendChild(el);\n}\n\n// ============================================================================\n// Token → colour resolution\n// ============================================================================\n//\n// recharts needs concrete colour strings (fills, stroke, gradient stops), so we\n// resolve each semantic CSS variable to its computed value off\n// `document.documentElement` and re-read whenever the theme attribute flips.\n// Consumers NEVER hard-code colours: they name a semantic token here.\n\nconst CORE_TOKENS = {\n brand: '--color-action-primary-bg',\n brandBorder: '--color-action-primary-border',\n grid: '--color-chart-grid',\n axis: '--color-chart-axis',\n positive: '--color-chart-positive',\n negative: '--color-chart-negative',\n success: '--color-status-success',\n error: '--color-status-error',\n warning: '--color-status-warning',\n info: '--color-status-info',\n teal: '--color-accent-teal',\n blue: '--color-accent-blue',\n purple: '--color-accent-purple',\n indigo: '--color-accent-indigo',\n textPrimary: '--color-text-primary',\n textSecondary: '--color-text-secondary',\n surface: '--color-bg-elevated',\n border: '--color-border-subtle',\n} as const;\n\ntype CoreToken = keyof typeof CORE_TOKENS;\n\n/** Ordered categorical palette — emerald brand first, then distinct chart hues. */\nconst PALETTE_VARS = [\n '--color-action-primary-bg',\n '--color-chart-2',\n '--color-chart-3',\n '--color-chart-4',\n '--color-chart-5',\n '--color-chart-6',\n '--color-chart-7',\n '--color-chart-8',\n '--color-chart-9',\n '--color-chart-10',\n '--color-chart-11',\n '--color-chart-12',\n];\n\nexport type VizColors = Record<CoreToken, string> & {\n /** Categorical palette (index 0 = emerald brand). */\n palette: string[];\n /** Resolve any semantic tone name to a concrete colour string. */\n tone: (tone?: VizTone) => string;\n};\n\n/** Named tones a datum may request; falls back to the categorical palette. */\nexport type VizTone =\n | 'brand'\n | 'primary'\n | 'success'\n | 'positive'\n | 'error'\n | 'negative'\n | 'warning'\n | 'info'\n | 'teal'\n | 'blue'\n | 'purple'\n | 'indigo'\n | 'neutral';\n\nfunction readVar(name: string): string {\n if (typeof window === 'undefined') return `var(${name})`;\n const v = getComputedStyle(document.documentElement).getPropertyValue(name).trim();\n return v || `var(${name})`;\n}\n\n/**\n * Resolve the semantic viz palette from CSS variables and keep it in sync with\n * the active theme. Returns concrete colour strings for use in recharts props.\n */\nexport function useVizColors(): VizColors {\n const [tick, setTick] = useState(0);\n\n useEffect(() => {\n if (typeof window === 'undefined') return;\n const rerender = () => setTick((t) => t + 1);\n const obs = new MutationObserver(rerender);\n obs.observe(document.documentElement, {\n attributes: true,\n attributeFilter: ['data-theme', 'class', 'style'],\n });\n return () => obs.disconnect();\n }, []);\n\n return useMemo(() => {\n void tick; // re-resolve whenever the theme attribute changes\n const core = Object.fromEntries(\n (Object.keys(CORE_TOKENS) as CoreToken[]).map((k) => [k, readVar(CORE_TOKENS[k])])\n ) as Record<CoreToken, string>;\n const palette = PALETTE_VARS.map(readVar);\n\n const tone = (t?: VizTone): string => {\n switch (t) {\n case 'brand':\n case 'primary':\n return core.brand;\n case 'success':\n case 'positive':\n return core.success;\n case 'error':\n case 'negative':\n return core.error;\n case 'warning':\n return core.warning;\n case 'info':\n return core.info;\n case 'teal':\n return core.teal;\n case 'blue':\n return core.blue;\n case 'purple':\n return core.purple;\n case 'indigo':\n return core.indigo;\n case 'neutral':\n return core.textSecondary;\n default:\n return core.brand;\n }\n };\n\n return { ...core, palette, tone };\n }, [tick]);\n}\n\n// ============================================================================\n// Shared chart tooltip (themed — recharts' default is light-only)\n// ============================================================================\n\ninterface TooltipEntry {\n name?: string | number;\n value?: string | number;\n color?: string;\n payload?: Record<string, unknown>;\n}\n\nfunction useTooltipStyles(): { wrapper: CSSProperties; label: CSSProperties } {\n const c = useVizColors();\n return {\n wrapper: {\n background: c.surface,\n border: `1px solid ${c.border}`,\n borderRadius: 10,\n padding: '8px 12px',\n color: c.textPrimary,\n fontSize: 12,\n boxShadow: 'var(--shadow-pop)',\n },\n label: { color: c.textSecondary, marginBottom: 4, fontSize: 11 },\n };\n}\n\nfunction ChartTooltip({\n active,\n payload,\n label,\n valueFormatter,\n}: {\n active?: boolean;\n payload?: TooltipEntry[];\n label?: string | number;\n valueFormatter?: (v: number) => string;\n}) {\n const styles = useTooltipStyles();\n if (!active || !payload || payload.length === 0) return null;\n return (\n <div style={styles.wrapper} role=\"tooltip\">\n {label !== undefined && label !== '' ? <div style={styles.label}>{label}</div> : null}\n {payload.map((entry, i) => {\n const raw = typeof entry.value === 'number' ? entry.value : Number(entry.value);\n const shown =\n valueFormatter && Number.isFinite(raw) ? valueFormatter(raw) : String(entry.value ?? '');\n return (\n <div key={i} className=\"flex items-center gap-2\">\n {entry.color ? (\n <span\n aria-hidden=\"true\"\n style={{\n width: 8,\n height: 8,\n borderRadius: 9999,\n background: entry.color,\n display: 'inline-block',\n }}\n />\n ) : null}\n {entry.name ? <span style={{ color: styles.label.color }}>{entry.name}:</span> : null}\n <span style={{ fontWeight: 600 }}>{shown}</span>\n </div>\n );\n })}\n </div>\n );\n}\n\n// ============================================================================\n// Motion helpers\n// ============================================================================\n\n/**\n * Staggered enter animation (translateY + opacity). Fully disabled under\n * `prefers-reduced-motion` (renders a plain element). Use `index` to stagger a\n * list/grid of cards.\n */\nexport function FadeIn({\n children,\n index = 0,\n delay = 0,\n className,\n as: Tag = 'div',\n}: {\n children: ReactNode;\n index?: number;\n delay?: number;\n className?: string;\n as?: 'div' | 'li' | 'section';\n}) {\n const reduce = useReducedMotion();\n if (reduce) {\n return <Tag className={className}>{children}</Tag>;\n }\n return (\n <Tag\n className={cn('br-fade-in', className)}\n style={{ animationDelay: `${delay + index * 0.04}s` }}\n >\n {children}\n </Tag>\n );\n}\n\n// ============================================================================\n// GlassCard — sanctioned glass/elevation surface with graceful fallback\n// ============================================================================\n\n/**\n * Floating/hero surface using the sanctioned glass tokens. Falls back to the\n * standard elevated surface when a glass token is absent (older brand builds).\n */\nexport function GlassCard({\n children,\n className,\n glow = false,\n}: {\n children: ReactNode;\n className?: string;\n /** Add a subtle emerald glow ring. */\n glow?: boolean;\n}) {\n return (\n <div\n className={cn(\n 'rounded-2xl border p-5',\n // Glass tokens with hard fallbacks to always-present semantic tokens.\n 'border-[var(--color-border-glass,var(--color-border-subtle))]',\n 'bg-[var(--color-surface-glass,var(--color-bg-elevated))]',\n 'shadow-[var(--shadow-float,var(--shadow-elevation-3))]',\n 'backdrop-blur-[var(--blur-glass,12px)]',\n glow && 'ring-1 ring-[var(--color-action-primary-border)]/40',\n className\n )}\n >\n {children}\n </div>\n );\n}\n\n// ============================================================================\n// DonutChart\n// ============================================================================\n\nexport interface DonutDatum {\n label: string;\n value: number;\n tone?: VizTone;\n}\n\nexport function DonutChart({\n data,\n centerLabel,\n centerValue,\n legend = true,\n height = 220,\n valueFormatter,\n}: {\n data: DonutDatum[];\n centerLabel?: string;\n centerValue?: string;\n legend?: boolean;\n height?: number;\n valueFormatter?: (v: number) => string;\n}) {\n const c = useVizColors();\n const reduce = useReducedMotion();\n const rows = data.filter((d) => Number.isFinite(d.value) && d.value > 0);\n\n if (rows.length === 0) {\n return <p className=\"text-sm text-text-secondary\">No data.</p>;\n }\n\n const colorFor = (d: DonutDatum, i: number) =>\n d.tone ? c.tone(d.tone) : c.palette[i % c.palette.length];\n\n return (\n <div className=\"flex flex-col items-center gap-4 sm:flex-row sm:items-center\">\n <div className=\"relative\" style={{ width: '100%', maxWidth: 260, height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <PieChart>\n <Pie\n data={rows}\n dataKey=\"value\"\n nameKey=\"label\"\n innerRadius=\"62%\"\n outerRadius=\"90%\"\n paddingAngle={2}\n stroke=\"transparent\"\n isAnimationActive={!reduce}\n animationDuration={250}\n >\n {rows.map((d, i) => (\n <Cell key={d.label} fill={colorFor(d, i)} />\n ))}\n </Pie>\n <Tooltip content={<ChartTooltip valueFormatter={valueFormatter} />} />\n </PieChart>\n </ResponsiveContainer>\n {centerValue || centerLabel ? (\n <div className=\"pointer-events-none absolute inset-0 flex flex-col items-center justify-center\">\n {centerValue ? (\n <span className=\"text-xl font-semibold text-text-primary\">{centerValue}</span>\n ) : null}\n {centerLabel ? (\n <span className=\"text-xs text-text-secondary\">{centerLabel}</span>\n ) : null}\n </div>\n ) : null}\n </div>\n {legend ? (\n <ul className=\"grid flex-1 grid-cols-1 gap-2 sm:grid-cols-2\" aria-label=\"Legend\">\n {rows.map((d, i) => (\n <li key={d.label} className=\"flex items-center gap-2 text-xs\">\n <span\n aria-hidden=\"true\"\n className=\"size-2.5 shrink-0 rounded-full\"\n style={{ background: colorFor(d, i) }}\n />\n <span className=\"truncate text-text-secondary\">{d.label}</span>\n <span className=\"ml-auto font-medium text-text-primary\">\n {valueFormatter ? valueFormatter(d.value) : d.value}\n </span>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n\n// ============================================================================\n// Sparkline\n// ============================================================================\n\nexport function Sparkline({\n data,\n tone = 'brand',\n height = 40,\n className,\n}: {\n data: number[];\n tone?: VizTone;\n height?: number;\n className?: string;\n}) {\n const c = useVizColors();\n const stroke = c.tone(tone);\n const points = data.filter((n) => Number.isFinite(n));\n const gradientId = `spark-${useId().replace(/:/g, '')}`;\n if (points.length < 2) {\n return <div className={className} style={{ height }} aria-hidden=\"true\" />;\n }\n const chartData = points.map((y, x) => ({ x, y }));\n return (\n <div className={className} style={{ width: '100%', height }} aria-hidden=\"true\">\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart data={chartData} margin={{ top: 2, right: 0, bottom: 0, left: 0 }}>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={stroke} stopOpacity={0.28} />\n <stop offset=\"100%\" stopColor={stroke} stopOpacity={0} />\n </linearGradient>\n </defs>\n <Area\n type=\"monotone\"\n dataKey=\"y\"\n stroke={stroke}\n strokeWidth={2}\n fill={`url(#${gradientId})`}\n isAnimationActive={false}\n dot={false}\n />\n </AreaChart>\n </ResponsiveContainer>\n </div>\n );\n}\n\n// ============================================================================\n// ProgressRing — clean SVG radial progress\n// ============================================================================\n\nexport function ProgressRing({\n value,\n label,\n tone = 'brand',\n size = 120,\n strokeWidth = 10,\n}: {\n value: number;\n label?: string;\n tone?: VizTone;\n size?: number;\n strokeWidth?: number;\n}) {\n const c = useVizColors();\n const reduce = useReducedMotion();\n const pct = Math.max(0, Math.min(100, Number.isFinite(value) ? value : 0));\n const r = (size - strokeWidth) / 2;\n const circ = 2 * Math.PI * r;\n const dash = (pct / 100) * circ;\n const stroke = c.tone(tone);\n const targetOffset = circ - dash;\n // Reduced motion renders filled immediately; otherwise start empty and fill\n // on the next frame so the ring animates from 0 → value via CSS.\n const [dashOffset, setDashOffset] = useState(reduce ? targetOffset : circ);\n\n useEffect(() => {\n const id = requestAnimationFrame(() => setDashOffset(targetOffset));\n return () => cancelAnimationFrame(id);\n }, [targetOffset]);\n\n return (\n <div\n className=\"relative inline-flex items-center justify-center\"\n style={{ width: size, height: size }}\n role=\"progressbar\"\n aria-valuenow={Math.round(pct)}\n aria-valuemin={0}\n aria-valuemax={100}\n aria-label={label ?? 'Progress'}\n >\n <svg width={size} height={size} className=\"-rotate-90\">\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={c.border}\n strokeWidth={strokeWidth}\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={stroke}\n strokeWidth={strokeWidth}\n strokeLinecap=\"round\"\n strokeDasharray={circ}\n strokeDashoffset={dashOffset}\n style={{ transition: reduce ? 'none' : 'stroke-dashoffset 600ms ease' }}\n />\n </svg>\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">\n <span className=\"text-lg font-semibold text-text-primary\">{Math.round(pct)}%</span>\n {label ? <span className=\"text-[10px] text-text-secondary\">{label}</span> : null}\n </div>\n </div>\n );\n}\n\n// ============================================================================\n// TrendBars — diverging inflow/outflow cashflow bars\n// ============================================================================\n\nexport interface TrendDatum {\n label: string;\n inflow: number;\n outflow: number;\n}\n\nexport function TrendBars({\n data,\n height = 240,\n valueFormatter,\n}: {\n data: TrendDatum[];\n height?: number;\n valueFormatter?: (v: number) => string;\n}) {\n const c = useVizColors();\n const reduce = useReducedMotion();\n const rows = data.filter((d) => Number.isFinite(d.inflow) && Number.isFinite(d.outflow));\n if (rows.length === 0) {\n return <p className=\"text-sm text-text-secondary\">No cashflow data.</p>;\n }\n // Diverging: inflow up (positive), outflow down (negative).\n const chartData = rows.map((d) => ({\n label: d.label,\n inflow: Math.abs(d.inflow),\n outflow: -Math.abs(d.outflow),\n }));\n\n return (\n <div style={{ width: '100%', height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <BarChart\n data={chartData}\n margin={{ top: 8, right: 8, bottom: 0, left: 8 }}\n stackOffset=\"sign\"\n >\n <XAxis\n dataKey=\"label\"\n tick={{ fill: c.textSecondary, fontSize: 11 }}\n axisLine={{ stroke: c.grid }}\n tickLine={false}\n />\n <YAxis\n tick={{ fill: c.textSecondary, fontSize: 11 }}\n axisLine={false}\n tickLine={false}\n width={44}\n tickFormatter={(v: number) =>\n valueFormatter ? valueFormatter(Math.abs(v)) : String(Math.abs(v))\n }\n />\n <ReferenceLine y={0} stroke={c.grid} />\n <Tooltip\n cursor={{ fill: c.border, opacity: 0.25 }}\n content={\n <ChartTooltip\n valueFormatter={(v) =>\n valueFormatter ? valueFormatter(Math.abs(v)) : String(Math.abs(v))\n }\n />\n }\n />\n <Bar\n dataKey=\"inflow\"\n name=\"Inflow\"\n fill={c.positive}\n radius={[4, 4, 0, 0]}\n isAnimationActive={!reduce}\n animationDuration={250}\n />\n <Bar\n dataKey=\"outflow\"\n name=\"Outflow\"\n fill={c.negative}\n radius={[0, 0, 4, 4]}\n isAnimationActive={!reduce}\n animationDuration={250}\n />\n </BarChart>\n </ResponsiveContainer>\n </div>\n );\n}\n\n// ============================================================================\n// MiniAreaChart — projection with optional dashed target line\n// ============================================================================\n\nexport interface AreaDatum {\n x: string | number;\n y: number;\n}\n\nexport function MiniAreaChart({\n data,\n target,\n tone = 'brand',\n height = 200,\n valueFormatter,\n}: {\n data: AreaDatum[];\n target?: number;\n tone?: VizTone;\n height?: number;\n valueFormatter?: (v: number) => string;\n}) {\n const c = useVizColors();\n const reduce = useReducedMotion();\n const stroke = c.tone(tone);\n const rows = data.filter((d) => Number.isFinite(d.y));\n const gradientId = `area-${useId().replace(/:/g, '')}`;\n if (rows.length < 2) {\n return <p className=\"text-sm text-text-secondary\">Not enough data to chart.</p>;\n }\n return (\n <div style={{ width: '100%', height }}>\n <ResponsiveContainer width=\"100%\" height=\"100%\">\n <AreaChart data={rows} margin={{ top: 8, right: 8, bottom: 0, left: 8 }}>\n <defs>\n <linearGradient id={gradientId} x1=\"0\" y1=\"0\" x2=\"0\" y2=\"1\">\n <stop offset=\"0%\" stopColor={stroke} stopOpacity={0.3} />\n <stop offset=\"100%\" stopColor={stroke} stopOpacity={0.02} />\n </linearGradient>\n </defs>\n <XAxis\n dataKey=\"x\"\n tick={{ fill: c.textSecondary, fontSize: 11 }}\n axisLine={{ stroke: c.grid }}\n tickLine={false}\n />\n <YAxis\n tick={{ fill: c.textSecondary, fontSize: 11 }}\n axisLine={false}\n tickLine={false}\n width={44}\n tickFormatter={(v: number) => (valueFormatter ? valueFormatter(v) : String(v))}\n />\n <Tooltip content={<ChartTooltip valueFormatter={valueFormatter} />} />\n {target !== undefined && Number.isFinite(target) ? (\n <ReferenceLine\n y={target}\n stroke={c.textSecondary}\n strokeDasharray=\"5 4\"\n label={{\n value: valueFormatter ? `Target ${valueFormatter(target)}` : `Target ${target}`,\n position: 'insideTopRight',\n fill: c.textSecondary,\n fontSize: 10,\n }}\n />\n ) : null}\n <Area\n type=\"monotone\"\n dataKey=\"y\"\n stroke={stroke}\n strokeWidth={2}\n fill={`url(#${gradientId})`}\n isAnimationActive={!reduce}\n animationDuration={250}\n dot={false}\n />\n </AreaChart>\n </ResponsiveContainer>\n </div>\n );\n}\n\n// ============================================================================\n// LifecycleStepper — horizontal proposal/rebalance lifecycle\n// ============================================================================\n\nconst NEGATIVE_TERMINAL = /reject|cancel|abandon|decline|fail/i;\n\nexport function LifecycleStepper({\n steps,\n current,\n className,\n}: {\n steps: string[];\n current: string;\n className?: string;\n}) {\n const isNegativeTerminal = NEGATIVE_TERMINAL.test(current);\n const currentIndex = steps.findIndex((s) => s.toLowerCase() === current.toLowerCase());\n\n return (\n <ol\n className={cn('flex w-full items-center overflow-x-auto', className)}\n aria-label=\"Lifecycle progress\"\n >\n {steps.map((step, i) => {\n const isLast = i === steps.length - 1;\n const done = currentIndex >= 0 && i < currentIndex;\n const active = currentIndex >= 0 && i === currentIndex && !isNegativeTerminal;\n const state = done ? 'done' : active ? 'active' : 'upcoming';\n return (\n <li\n key={step}\n className=\"flex min-w-fit flex-1 items-center\"\n aria-current={active ? 'step' : undefined}\n >\n <div className=\"flex flex-col items-center gap-1.5 px-1\">\n <span\n className={cn(\n 'flex size-7 items-center justify-center rounded-full border text-xs font-semibold transition-colors',\n state === 'done' &&\n 'border-transparent bg-[var(--color-action-primary-bg)] text-[var(--color-action-primary-text)]',\n state === 'active' &&\n 'border-[var(--color-action-primary-border)] bg-[var(--color-action-primary-bg)]/15 text-[var(--color-action-primary-text)]',\n state === 'upcoming' && 'border-border-subtle bg-bg-sunken text-text-secondary'\n )}\n aria-hidden=\"true\"\n >\n {done ? '✓' : i + 1}\n </span>\n <span\n className={cn(\n 'whitespace-nowrap text-[11px]',\n active ? 'font-medium text-text-primary' : 'text-text-secondary'\n )}\n >\n {step}\n </span>\n </div>\n {!isLast ? (\n <span\n aria-hidden=\"true\"\n className={cn(\n 'mx-1 h-0.5 flex-1 rounded-full',\n done ? 'bg-[var(--color-action-primary-bg)]' : 'bg-border-subtle'\n )}\n />\n ) : null}\n </li>\n );\n })}\n {isNegativeTerminal ? (\n <li className=\"ml-2 flex min-w-fit items-center gap-1.5\" aria-current=\"step\">\n <span className=\"mx-1 h-0.5 w-6 rounded-full bg-status-error-border\" aria-hidden=\"true\" />\n <div className=\"flex flex-col items-center gap-1.5 px-1\">\n <span\n className=\"flex size-7 items-center justify-center rounded-full border border-transparent bg-status-error text-xs font-semibold text-status-error-text\"\n aria-hidden=\"true\"\n >\n ✕\n </span>\n <span className=\"whitespace-nowrap text-[11px] font-medium text-status-error-text\">\n {current}\n </span>\n </div>\n </li>\n ) : null}\n </ol>\n );\n}\n\n// ============================================================================\n// StatTile — premium KPI tile\n// ============================================================================\n\nexport function StatTile({\n label,\n value,\n delta,\n deltaTone,\n deltaSuffix = '%',\n spark,\n sparkTone = 'brand',\n glow = false,\n icon,\n className,\n}: {\n label: string;\n value: string;\n /** Optional signed delta rendered as a chip (icon + sign + status colour). */\n delta?: number;\n /** Override the auto tone derived from the delta sign. */\n deltaTone?: 'positive' | 'negative' | 'neutral';\n deltaSuffix?: string;\n /** Optional inline sparkline series. */\n spark?: number[];\n sparkTone?: VizTone;\n /** Subtle emerald glow ring for hero tiles. */\n glow?: boolean;\n icon?: ReactNode;\n className?: string;\n}) {\n const positive = deltaTone ? deltaTone === 'positive' : (delta ?? 0) > 0;\n const negative = deltaTone ? deltaTone === 'negative' : (delta ?? 0) < 0;\n const deltaClass = positive\n ? 'text-status-success-text bg-status-success-bg'\n : negative\n ? 'text-status-error-text bg-status-error-bg'\n : 'text-text-secondary bg-bg-sunken';\n const sign = delta !== undefined && delta > 0 ? '+' : '';\n\n return (\n <div\n className={cn(\n 'group relative overflow-hidden rounded-xl border border-border-subtle bg-bg-surface p-4 transition-shadow',\n 'motion-safe:hover:shadow-[var(--shadow-pop-hover,var(--shadow-elevation-2))]',\n glow && 'ring-1 ring-[var(--color-action-primary-border)]/40',\n className\n )}\n >\n {glow ? (\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute -right-8 -top-8 size-24 rounded-full bg-[var(--color-action-primary-bg)]/15 blur-2xl\"\n />\n ) : null}\n <div className=\"flex items-start justify-between gap-2\">\n <p className=\"text-xs text-text-secondary\">{label}</p>\n {icon ? <span className=\"text-text-secondary\">{icon}</span> : null}\n </div>\n <p className=\"mt-1 text-2xl font-semibold text-text-primary\">{value}</p>\n <div className=\"mt-2 flex items-center justify-between gap-2\">\n {delta !== undefined && Number.isFinite(delta) ? (\n <span\n className={cn(\n 'inline-flex items-center gap-0.5 rounded-full px-1.5 py-0.5 text-xs font-medium',\n deltaClass\n )}\n >\n <span aria-hidden=\"true\">{positive ? '▲' : negative ? '▼' : '—'}</span>\n {sign}\n {delta.toFixed(1)}\n {deltaSuffix}\n </span>\n ) : (\n <span />\n )}\n {spark && spark.length > 1 ? (\n <div className=\"w-20 shrink-0\">\n <Sparkline data={spark} tone={sparkTone} height={28} />\n </div>\n ) : null}\n </div>\n </div>\n );\n}\n"],"mappings":"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"}
@@ -1815,7 +1815,9 @@ export declare const usePagedPortfolios: (params?: PortfolioFilters) => PagedLis
1815
1815
  export declare const usePagedGoals: (params?: GoalFilters) => PagedListResult<BraGoal>;
1816
1816
  export declare const usePagedHouseholds: (params?: HouseholdFilters) => PagedListResult<BraHousehold>;
1817
1817
  export declare const usePagedInsights: (params?: InsightFilters) => PagedListResult<BraInsight>;
1818
- export declare const usePagedTransactions: (params?: TransactionFilters) => PagedListResult<BraTransaction>;
1818
+ export declare const usePagedTransactions: (params?: TransactionFilters, options?: {
1819
+ enabled?: boolean;
1820
+ }) => PagedListResult<BraTransaction>;
1819
1821
  /** Fetch EVERY transaction matching `filters` (all pages). */
1820
1822
  export declare function fetchAllTransactions(apiGatewayUrl: string | undefined, filters?: Omit<TransactionFilters, 'pagination'>, pageSize?: number): Promise<BraTransaction[]>;
1821
1823
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useBrainyRichApi.d.ts","sourceRoot":"","sources":["../../../src/brainyrich/hooks/useBrainyRichApi.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"useBrainyRichApi.d.ts","sourceRoot":"","sources":["../../../src/brainyrich/hooks/useBrainyRichApi.ts"],"names":[],"mappings":"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"}
@@ -703,7 +703,10 @@ var f = {
703
703
  ...d({
704
704
  success: "Transaction recorded",
705
705
  onSuccess: (e) => {
706
- n.invalidateQueries({ queryKey: f.transactions }), n.invalidateQueries({ queryKey: f.account(e.accountId) }), n.invalidateQueries({ queryKey: f.netWorth });
706
+ n.invalidateQueries({
707
+ predicate: (e) => e.queryKey[0] === "brainyrich" && e.queryKey[1] === "transactions",
708
+ refetchType: "all"
709
+ }), n.invalidateQueries({ queryKey: f.account(e.accountId) }), n.invalidateQueries({ queryKey: f.netWorth });
707
710
  }
708
711
  })
709
712
  });
@@ -867,7 +870,7 @@ var Me = (e = {}) => W({
867
870
  pagination: t
868
871
  }),
869
872
  select: (e) => e.braListInsights
870
- }), Le = (e = {}) => W({
873
+ }), Le = (e = {}, t = {}) => W({
871
874
  queryKey: [
872
875
  ...f.transactions,
873
876
  "paged",
@@ -884,6 +887,7 @@ var Me = (e = {}) => W({
884
887
  type: e.type,
885
888
  pagination: t
886
889
  }),
890
+ enabled: t.enabled,
887
891
  select: (e) => e.braListTransactions
888
892
  });
889
893
  async function G(e, t = 200, n = 500) {