@burdenoff/microfe-brainyrich 2026.819.1 → 2026.827.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 (514) hide show
  1. package/dist/_virtual/_rolldown/runtime.js +1 -1
  2. package/dist/brainyrich/BrainyRichRoot.d.ts +0 -1
  3. package/dist/brainyrich/BrainyRichRoot.js.map +1 -1
  4. package/dist/brainyrich/BrainyRichRoutes.js.map +1 -1
  5. package/dist/brainyrich/components/ActorName.js.map +1 -1
  6. package/dist/brainyrich/components/ConfirmDialog.d.ts +0 -1
  7. package/dist/brainyrich/components/ConfirmDialog.js.map +1 -1
  8. package/dist/brainyrich/components/LoadMore.js.map +1 -1
  9. package/dist/brainyrich/components/notify.js.map +1 -1
  10. package/dist/brainyrich/components/pickers.js.map +1 -1
  11. package/dist/brainyrich/components/reuse/CommentThread.js.map +1 -1
  12. package/dist/brainyrich/components/reuse/DocumentsPanel.d.ts +4 -0
  13. package/dist/brainyrich/components/reuse/DocumentsPanel.d.ts.map +1 -1
  14. package/dist/brainyrich/components/reuse/DocumentsPanel.js +150 -99
  15. package/dist/brainyrich/components/reuse/DocumentsPanel.js.map +1 -1
  16. package/dist/brainyrich/components/reuse/TagField.js.map +1 -1
  17. package/dist/brainyrich/components/reuse/transport.js.map +1 -1
  18. package/dist/brainyrich/components/viz.d.ts +0 -1
  19. package/dist/brainyrich/components/viz.js.map +1 -1
  20. package/dist/brainyrich/hooks/useBrainyRichAnalytics.js.map +1 -1
  21. package/dist/brainyrich/hooks/useBrainyRichApi.d.ts +176 -1
  22. package/dist/brainyrich/hooks/useBrainyRichApi.d.ts.map +1 -1
  23. package/dist/brainyrich/hooks/useBrainyRichApi.js +96 -82
  24. package/dist/brainyrich/hooks/useBrainyRichApi.js.map +1 -1
  25. package/dist/brainyrich/pages/AccountsPage.d.ts.map +1 -1
  26. package/dist/brainyrich/pages/AccountsPage.js +367 -363
  27. package/dist/brainyrich/pages/AccountsPage.js.map +1 -1
  28. package/dist/brainyrich/pages/AdminFirmPage.d.ts.map +1 -1
  29. package/dist/brainyrich/pages/AdminFirmPage.js +115 -83
  30. package/dist/brainyrich/pages/AdminFirmPage.js.map +1 -1
  31. package/dist/brainyrich/pages/AiAssistantPage.d.ts.map +1 -1
  32. package/dist/brainyrich/pages/AiAssistantPage.js +251 -230
  33. package/dist/brainyrich/pages/AiAssistantPage.js.map +1 -1
  34. package/dist/brainyrich/pages/AnalyticsPage.js.map +1 -1
  35. package/dist/brainyrich/pages/DashboardPage.js.map +1 -1
  36. package/dist/brainyrich/pages/FamilyPage.js.map +1 -1
  37. package/dist/brainyrich/pages/FirmPage.d.ts.map +1 -1
  38. package/dist/brainyrich/pages/FirmPage.js +148 -116
  39. package/dist/brainyrich/pages/FirmPage.js.map +1 -1
  40. package/dist/brainyrich/pages/GoalsPage.js.map +1 -1
  41. package/dist/brainyrich/pages/InvestmentsPage.js.map +1 -1
  42. package/dist/brainyrich/pages/PortfoliosPage.d.ts +14 -0
  43. package/dist/brainyrich/pages/PortfoliosPage.d.ts.map +1 -1
  44. package/dist/brainyrich/pages/PortfoliosPage.js +530 -353
  45. package/dist/brainyrich/pages/PortfoliosPage.js.map +1 -1
  46. package/dist/brainyrich/pages/ReportsPage.js.map +1 -1
  47. package/dist/brainyrich/pages/RiskPage.d.ts.map +1 -1
  48. package/dist/brainyrich/pages/RiskPage.js +381 -396
  49. package/dist/brainyrich/pages/RiskPage.js.map +1 -1
  50. package/dist/brainyrich/pages/TaxPage.js.map +1 -1
  51. package/dist/brainyrich/pages/_shared.d.ts +21 -1
  52. package/dist/brainyrich/pages/_shared.d.ts.map +1 -1
  53. package/dist/brainyrich/pages/_shared.js +66 -31
  54. package/dist/brainyrich/pages/_shared.js.map +1 -1
  55. package/dist/brainyrich/providers/BrainyRichProvider.d.ts +0 -1
  56. package/dist/brainyrich/providers/BrainyRichProvider.js.map +1 -1
  57. package/dist/brainyrich/services/createSandboxAssistantTransport.js.map +1 -1
  58. package/dist/brainyrich/types/bra.d.ts.map +1 -1
  59. package/dist/brainyrich/types/index.d.ts +0 -1
  60. package/dist/brainyrich/utils/cn.d.ts +0 -1
  61. package/dist/brainyrich/utils/i18n.d.ts +0 -1
  62. package/dist/brainyrich/utils/i18n.js.map +1 -1
  63. package/dist/brainyrich/utils/nativeControls.d.ts +0 -1
  64. package/dist/brainyrich/utils/nativeControls.js.map +1 -1
  65. package/dist/brainyrich/utils/navigation.js.map +1 -1
  66. package/dist/brainyrich/utils/pageContext.js.map +1 -1
  67. package/dist/dev/main.d.ts +0 -1
  68. package/dist/node_modules/clsx/dist/clsx.js.map +1 -1
  69. package/dist/node_modules/d3-array/src/ascending.js.map +1 -1
  70. package/dist/node_modules/d3-array/src/bisect.js.map +1 -1
  71. package/dist/node_modules/d3-array/src/bisector.js.map +1 -1
  72. package/dist/node_modules/d3-array/src/descending.js.map +1 -1
  73. package/dist/node_modules/d3-array/src/max.js.map +1 -1
  74. package/dist/node_modules/d3-array/src/min.js.map +1 -1
  75. package/dist/node_modules/d3-array/src/number.js.map +1 -1
  76. package/dist/node_modules/d3-array/src/quantile.js.map +1 -1
  77. package/dist/node_modules/d3-array/src/quickselect.js.map +1 -1
  78. package/dist/node_modules/d3-array/src/range.js.map +1 -1
  79. package/dist/node_modules/d3-array/src/sort.js.map +1 -1
  80. package/dist/node_modules/d3-array/src/ticks.js.map +1 -1
  81. package/dist/node_modules/d3-color/src/color.js.map +1 -1
  82. package/dist/node_modules/d3-color/src/define.js.map +1 -1
  83. package/dist/node_modules/d3-format/src/defaultLocale.js.map +1 -1
  84. package/dist/node_modules/d3-format/src/exponent.js.map +1 -1
  85. package/dist/node_modules/d3-format/src/formatDecimal.js.map +1 -1
  86. package/dist/node_modules/d3-format/src/formatGroup.js.map +1 -1
  87. package/dist/node_modules/d3-format/src/formatNumerals.js.map +1 -1
  88. package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +1 -1
  89. package/dist/node_modules/d3-format/src/formatRounded.js.map +1 -1
  90. package/dist/node_modules/d3-format/src/formatSpecifier.js.map +1 -1
  91. package/dist/node_modules/d3-format/src/formatTrim.js.map +1 -1
  92. package/dist/node_modules/d3-format/src/formatTypes.js.map +1 -1
  93. package/dist/node_modules/d3-format/src/identity.js.map +1 -1
  94. package/dist/node_modules/d3-format/src/locale.js.map +1 -1
  95. package/dist/node_modules/d3-format/src/precisionFixed.js.map +1 -1
  96. package/dist/node_modules/d3-format/src/precisionPrefix.js.map +1 -1
  97. package/dist/node_modules/d3-format/src/precisionRound.js.map +1 -1
  98. package/dist/node_modules/d3-interpolate/src/array.js.map +1 -1
  99. package/dist/node_modules/d3-interpolate/src/basis.js.map +1 -1
  100. package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +1 -1
  101. package/dist/node_modules/d3-interpolate/src/color.js.map +1 -1
  102. package/dist/node_modules/d3-interpolate/src/date.js.map +1 -1
  103. package/dist/node_modules/d3-interpolate/src/number.js.map +1 -1
  104. package/dist/node_modules/d3-interpolate/src/numberArray.js.map +1 -1
  105. package/dist/node_modules/d3-interpolate/src/object.js.map +1 -1
  106. package/dist/node_modules/d3-interpolate/src/piecewise.js.map +1 -1
  107. package/dist/node_modules/d3-interpolate/src/rgb.js.map +1 -1
  108. package/dist/node_modules/d3-interpolate/src/round.js.map +1 -1
  109. package/dist/node_modules/d3-interpolate/src/string.js.map +1 -1
  110. package/dist/node_modules/d3-interpolate/src/value.js.map +1 -1
  111. package/dist/node_modules/d3-path/src/path.js.map +1 -1
  112. package/dist/node_modules/d3-scale/src/band.js.map +1 -1
  113. package/dist/node_modules/d3-scale/src/constant.js.map +1 -1
  114. package/dist/node_modules/d3-scale/src/continuous.js.map +1 -1
  115. package/dist/node_modules/d3-scale/src/diverging.js.map +1 -1
  116. package/dist/node_modules/d3-scale/src/identity.js.map +1 -1
  117. package/dist/node_modules/d3-scale/src/init.js.map +1 -1
  118. package/dist/node_modules/d3-scale/src/linear.js.map +1 -1
  119. package/dist/node_modules/d3-scale/src/log.js.map +1 -1
  120. package/dist/node_modules/d3-scale/src/nice.js.map +1 -1
  121. package/dist/node_modules/d3-scale/src/number.js.map +1 -1
  122. package/dist/node_modules/d3-scale/src/ordinal.js.map +1 -1
  123. package/dist/node_modules/d3-scale/src/pow.js.map +1 -1
  124. package/dist/node_modules/d3-scale/src/quantile.js.map +1 -1
  125. package/dist/node_modules/d3-scale/src/quantize.js.map +1 -1
  126. package/dist/node_modules/d3-scale/src/radial.js.map +1 -1
  127. package/dist/node_modules/d3-scale/src/sequential.js.map +1 -1
  128. package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +1 -1
  129. package/dist/node_modules/d3-scale/src/symlog.js.map +1 -1
  130. package/dist/node_modules/d3-scale/src/threshold.js.map +1 -1
  131. package/dist/node_modules/d3-scale/src/tickFormat.js.map +1 -1
  132. package/dist/node_modules/d3-scale/src/time.js.map +1 -1
  133. package/dist/node_modules/d3-scale/src/utcTime.js.map +1 -1
  134. package/dist/node_modules/d3-shape/src/area.js.map +1 -1
  135. package/dist/node_modules/d3-shape/src/array.js.map +1 -1
  136. package/dist/node_modules/d3-shape/src/constant.js.map +1 -1
  137. package/dist/node_modules/d3-shape/src/curve/basis.js.map +1 -1
  138. package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +1 -1
  139. package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +1 -1
  140. package/dist/node_modules/d3-shape/src/curve/bump.js.map +1 -1
  141. package/dist/node_modules/d3-shape/src/curve/linear.js.map +1 -1
  142. package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +1 -1
  143. package/dist/node_modules/d3-shape/src/curve/monotone.js.map +1 -1
  144. package/dist/node_modules/d3-shape/src/curve/natural.js.map +1 -1
  145. package/dist/node_modules/d3-shape/src/curve/step.js.map +1 -1
  146. package/dist/node_modules/d3-shape/src/line.js.map +1 -1
  147. package/dist/node_modules/d3-shape/src/noop.js.map +1 -1
  148. package/dist/node_modules/d3-shape/src/offset/expand.js.map +1 -1
  149. package/dist/node_modules/d3-shape/src/offset/none.js.map +1 -1
  150. package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +1 -1
  151. package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +1 -1
  152. package/dist/node_modules/d3-shape/src/order/none.js.map +1 -1
  153. package/dist/node_modules/d3-shape/src/path.js.map +1 -1
  154. package/dist/node_modules/d3-shape/src/point.js.map +1 -1
  155. package/dist/node_modules/d3-shape/src/stack.js.map +1 -1
  156. package/dist/node_modules/d3-shape/src/symbol/circle.js.map +1 -1
  157. package/dist/node_modules/d3-shape/src/symbol/cross.js.map +1 -1
  158. package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +1 -1
  159. package/dist/node_modules/d3-shape/src/symbol/square.js.map +1 -1
  160. package/dist/node_modules/d3-shape/src/symbol/star.js.map +1 -1
  161. package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +1 -1
  162. package/dist/node_modules/d3-shape/src/symbol/wye.js.map +1 -1
  163. package/dist/node_modules/d3-shape/src/symbol.js.map +1 -1
  164. package/dist/node_modules/d3-time/src/day.js.map +1 -1
  165. package/dist/node_modules/d3-time/src/hour.js.map +1 -1
  166. package/dist/node_modules/d3-time/src/interval.js.map +1 -1
  167. package/dist/node_modules/d3-time/src/millisecond.js.map +1 -1
  168. package/dist/node_modules/d3-time/src/minute.js.map +1 -1
  169. package/dist/node_modules/d3-time/src/month.js.map +1 -1
  170. package/dist/node_modules/d3-time/src/second.js.map +1 -1
  171. package/dist/node_modules/d3-time/src/ticks.js.map +1 -1
  172. package/dist/node_modules/d3-time/src/week.js.map +1 -1
  173. package/dist/node_modules/d3-time/src/year.js.map +1 -1
  174. package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +1 -1
  175. package/dist/node_modules/d3-time-format/src/locale.js.map +1 -1
  176. package/dist/node_modules/decimal.js-light/decimal.js.map +1 -1
  177. package/dist/node_modules/eventemitter3/index.js.map +1 -1
  178. package/dist/node_modules/fast-equals/dist/es/index.js.map +1 -1
  179. package/dist/node_modules/internmap/src/index.js.map +1 -1
  180. package/dist/node_modules/lodash/_DataView.js.map +1 -1
  181. package/dist/node_modules/lodash/_Hash.js.map +1 -1
  182. package/dist/node_modules/lodash/_ListCache.js.map +1 -1
  183. package/dist/node_modules/lodash/_Map.js.map +1 -1
  184. package/dist/node_modules/lodash/_MapCache.js.map +1 -1
  185. package/dist/node_modules/lodash/_Promise.js.map +1 -1
  186. package/dist/node_modules/lodash/_Set.js.map +1 -1
  187. package/dist/node_modules/lodash/_SetCache.js.map +1 -1
  188. package/dist/node_modules/lodash/_Stack.js +2 -1
  189. package/dist/node_modules/lodash/_Stack.js.map +1 -1
  190. package/dist/node_modules/lodash/_Symbol.js.map +1 -1
  191. package/dist/node_modules/lodash/_Uint8Array.js.map +1 -1
  192. package/dist/node_modules/lodash/_WeakMap.js.map +1 -1
  193. package/dist/node_modules/lodash/_apply.js.map +1 -1
  194. package/dist/node_modules/lodash/_arrayEvery.js.map +1 -1
  195. package/dist/node_modules/lodash/_arrayFilter.js.map +1 -1
  196. package/dist/node_modules/lodash/_arrayIncludes.js.map +1 -1
  197. package/dist/node_modules/lodash/_arrayIncludesWith.js.map +1 -1
  198. package/dist/node_modules/lodash/_arrayLikeKeys.js.map +1 -1
  199. package/dist/node_modules/lodash/_arrayMap.js.map +1 -1
  200. package/dist/node_modules/lodash/_arrayPush.js.map +1 -1
  201. package/dist/node_modules/lodash/_arraySome.js.map +1 -1
  202. package/dist/node_modules/lodash/_asciiToArray.js.map +1 -1
  203. package/dist/node_modules/lodash/_assocIndexOf.js.map +1 -1
  204. package/dist/node_modules/lodash/_baseAssignValue.js.map +1 -1
  205. package/dist/node_modules/lodash/_baseEach.js.map +1 -1
  206. package/dist/node_modules/lodash/_baseEvery.js.map +1 -1
  207. package/dist/node_modules/lodash/_baseExtremum.js.map +1 -1
  208. package/dist/node_modules/lodash/_baseFindIndex.js.map +1 -1
  209. package/dist/node_modules/lodash/_baseFlatten.js.map +1 -1
  210. package/dist/node_modules/lodash/_baseFor.js.map +1 -1
  211. package/dist/node_modules/lodash/_baseForOwn.js.map +1 -1
  212. package/dist/node_modules/lodash/_baseGet.js.map +1 -1
  213. package/dist/node_modules/lodash/_baseGetAllKeys.js.map +1 -1
  214. package/dist/node_modules/lodash/_baseGetTag.js.map +1 -1
  215. package/dist/node_modules/lodash/_baseGt.js.map +1 -1
  216. package/dist/node_modules/lodash/_baseHasIn.js.map +1 -1
  217. package/dist/node_modules/lodash/_baseIndexOf.js.map +1 -1
  218. package/dist/node_modules/lodash/_baseIsArguments.js.map +1 -1
  219. package/dist/node_modules/lodash/_baseIsEqual.js.map +1 -1
  220. package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +1 -1
  221. package/dist/node_modules/lodash/_baseIsMatch.js.map +1 -1
  222. package/dist/node_modules/lodash/_baseIsNaN.js.map +1 -1
  223. package/dist/node_modules/lodash/_baseIsNative.js.map +1 -1
  224. package/dist/node_modules/lodash/_baseIsTypedArray.js.map +1 -1
  225. package/dist/node_modules/lodash/_baseIteratee.js.map +1 -1
  226. package/dist/node_modules/lodash/_baseKeys.js.map +1 -1
  227. package/dist/node_modules/lodash/_baseLt.js.map +1 -1
  228. package/dist/node_modules/lodash/_baseMap.js.map +1 -1
  229. package/dist/node_modules/lodash/_baseMatches.js.map +1 -1
  230. package/dist/node_modules/lodash/_baseMatchesProperty.js.map +1 -1
  231. package/dist/node_modules/lodash/_baseOrderBy.js.map +1 -1
  232. package/dist/node_modules/lodash/_baseProperty.js.map +1 -1
  233. package/dist/node_modules/lodash/_basePropertyDeep.js.map +1 -1
  234. package/dist/node_modules/lodash/_baseRange.js.map +1 -1
  235. package/dist/node_modules/lodash/_baseRest.js.map +1 -1
  236. package/dist/node_modules/lodash/_baseSetToString.js.map +1 -1
  237. package/dist/node_modules/lodash/_baseSlice.js.map +1 -1
  238. package/dist/node_modules/lodash/_baseSome.js.map +1 -1
  239. package/dist/node_modules/lodash/_baseSortBy.js.map +1 -1
  240. package/dist/node_modules/lodash/_baseTimes.js.map +1 -1
  241. package/dist/node_modules/lodash/_baseToString.js.map +1 -1
  242. package/dist/node_modules/lodash/_baseTrim.js.map +1 -1
  243. package/dist/node_modules/lodash/_baseUnary.js.map +1 -1
  244. package/dist/node_modules/lodash/_baseUniq.js.map +1 -1
  245. package/dist/node_modules/lodash/_cacheHas.js.map +1 -1
  246. package/dist/node_modules/lodash/_castPath.js.map +1 -1
  247. package/dist/node_modules/lodash/_castSlice.js.map +1 -1
  248. package/dist/node_modules/lodash/_compareAscending.js.map +1 -1
  249. package/dist/node_modules/lodash/_compareMultiple.js.map +1 -1
  250. package/dist/node_modules/lodash/_coreJsData.js.map +1 -1
  251. package/dist/node_modules/lodash/_createBaseEach.js.map +1 -1
  252. package/dist/node_modules/lodash/_createBaseFor.js.map +1 -1
  253. package/dist/node_modules/lodash/_createCaseFirst.js.map +1 -1
  254. package/dist/node_modules/lodash/_createFind.js.map +1 -1
  255. package/dist/node_modules/lodash/_createRange.js.map +1 -1
  256. package/dist/node_modules/lodash/_createSet.js.map +1 -1
  257. package/dist/node_modules/lodash/_defineProperty.js.map +1 -1
  258. package/dist/node_modules/lodash/_equalArrays.js.map +1 -1
  259. package/dist/node_modules/lodash/_equalByTag.js.map +1 -1
  260. package/dist/node_modules/lodash/_equalObjects.js.map +1 -1
  261. package/dist/node_modules/lodash/_freeGlobal.js.map +1 -1
  262. package/dist/node_modules/lodash/_getAllKeys.js.map +1 -1
  263. package/dist/node_modules/lodash/_getMapData.js.map +1 -1
  264. package/dist/node_modules/lodash/_getMatchData.js.map +1 -1
  265. package/dist/node_modules/lodash/_getNative.js.map +1 -1
  266. package/dist/node_modules/lodash/_getPrototype.js.map +1 -1
  267. package/dist/node_modules/lodash/_getRawTag.js.map +1 -1
  268. package/dist/node_modules/lodash/_getSymbols.js.map +1 -1
  269. package/dist/node_modules/lodash/_getTag.js.map +1 -1
  270. package/dist/node_modules/lodash/_getValue.js.map +1 -1
  271. package/dist/node_modules/lodash/_hasPath.js.map +1 -1
  272. package/dist/node_modules/lodash/_hasUnicode.js.map +1 -1
  273. package/dist/node_modules/lodash/_hashClear.js.map +1 -1
  274. package/dist/node_modules/lodash/_hashDelete.js.map +1 -1
  275. package/dist/node_modules/lodash/_hashGet.js.map +1 -1
  276. package/dist/node_modules/lodash/_hashHas.js.map +1 -1
  277. package/dist/node_modules/lodash/_hashSet.js.map +1 -1
  278. package/dist/node_modules/lodash/_isFlattenable.js.map +1 -1
  279. package/dist/node_modules/lodash/_isIndex.js.map +1 -1
  280. package/dist/node_modules/lodash/_isIterateeCall.js.map +1 -1
  281. package/dist/node_modules/lodash/_isKey.js.map +1 -1
  282. package/dist/node_modules/lodash/_isKeyable.js.map +1 -1
  283. package/dist/node_modules/lodash/_isMasked.js.map +1 -1
  284. package/dist/node_modules/lodash/_isPrototype.js.map +1 -1
  285. package/dist/node_modules/lodash/_isStrictComparable.js.map +1 -1
  286. package/dist/node_modules/lodash/_listCacheClear.js.map +1 -1
  287. package/dist/node_modules/lodash/_listCacheDelete.js.map +1 -1
  288. package/dist/node_modules/lodash/_listCacheGet.js.map +1 -1
  289. package/dist/node_modules/lodash/_listCacheHas.js.map +1 -1
  290. package/dist/node_modules/lodash/_listCacheSet.js.map +1 -1
  291. package/dist/node_modules/lodash/_mapCacheClear.js.map +1 -1
  292. package/dist/node_modules/lodash/_mapCacheDelete.js.map +1 -1
  293. package/dist/node_modules/lodash/_mapCacheGet.js.map +1 -1
  294. package/dist/node_modules/lodash/_mapCacheHas.js.map +1 -1
  295. package/dist/node_modules/lodash/_mapCacheSet.js.map +1 -1
  296. package/dist/node_modules/lodash/_mapToArray.js.map +1 -1
  297. package/dist/node_modules/lodash/_matchesStrictComparable.js.map +1 -1
  298. package/dist/node_modules/lodash/_memoizeCapped.js.map +1 -1
  299. package/dist/node_modules/lodash/_nativeCreate.js.map +1 -1
  300. package/dist/node_modules/lodash/_nativeKeys.js.map +1 -1
  301. package/dist/node_modules/lodash/_nodeUtil.js.map +1 -1
  302. package/dist/node_modules/lodash/_objectToString.js.map +1 -1
  303. package/dist/node_modules/lodash/_overArg.js.map +1 -1
  304. package/dist/node_modules/lodash/_overRest.js.map +1 -1
  305. package/dist/node_modules/lodash/_root.js.map +1 -1
  306. package/dist/node_modules/lodash/_setCacheAdd.js.map +1 -1
  307. package/dist/node_modules/lodash/_setCacheHas.js.map +1 -1
  308. package/dist/node_modules/lodash/_setToArray.js.map +1 -1
  309. package/dist/node_modules/lodash/_setToString.js.map +1 -1
  310. package/dist/node_modules/lodash/_shortOut.js.map +1 -1
  311. package/dist/node_modules/lodash/_stackClear.js.map +1 -1
  312. package/dist/node_modules/lodash/_stackDelete.js.map +1 -1
  313. package/dist/node_modules/lodash/_stackGet.js.map +1 -1
  314. package/dist/node_modules/lodash/_stackHas.js.map +1 -1
  315. package/dist/node_modules/lodash/_stackSet.js.map +1 -1
  316. package/dist/node_modules/lodash/_strictIndexOf.js.map +1 -1
  317. package/dist/node_modules/lodash/_stringToArray.js.map +1 -1
  318. package/dist/node_modules/lodash/_stringToPath.js.map +1 -1
  319. package/dist/node_modules/lodash/_toKey.js.map +1 -1
  320. package/dist/node_modules/lodash/_toSource.js.map +1 -1
  321. package/dist/node_modules/lodash/_trimmedEndIndex.js.map +1 -1
  322. package/dist/node_modules/lodash/_unicodeToArray.js.map +1 -1
  323. package/dist/node_modules/lodash/constant.js.map +1 -1
  324. package/dist/node_modules/lodash/debounce.js.map +1 -1
  325. package/dist/node_modules/lodash/eq.js.map +1 -1
  326. package/dist/node_modules/lodash/every.js.map +1 -1
  327. package/dist/node_modules/lodash/find.js.map +1 -1
  328. package/dist/node_modules/lodash/findIndex.js.map +1 -1
  329. package/dist/node_modules/lodash/flatMap.js.map +1 -1
  330. package/dist/node_modules/lodash/get.js.map +1 -1
  331. package/dist/node_modules/lodash/hasIn.js.map +1 -1
  332. package/dist/node_modules/lodash/identity.js.map +1 -1
  333. package/dist/node_modules/lodash/isArguments.js.map +1 -1
  334. package/dist/node_modules/lodash/isArray.js.map +1 -1
  335. package/dist/node_modules/lodash/isArrayLike.js.map +1 -1
  336. package/dist/node_modules/lodash/isBoolean.js.map +1 -1
  337. package/dist/node_modules/lodash/isBuffer.js.map +1 -1
  338. package/dist/node_modules/lodash/isEqual.js.map +1 -1
  339. package/dist/node_modules/lodash/isFunction.js.map +1 -1
  340. package/dist/node_modules/lodash/isLength.js.map +1 -1
  341. package/dist/node_modules/lodash/isNaN.js.map +1 -1
  342. package/dist/node_modules/lodash/isNil.js.map +1 -1
  343. package/dist/node_modules/lodash/isNumber.js.map +1 -1
  344. package/dist/node_modules/lodash/isObject.js.map +1 -1
  345. package/dist/node_modules/lodash/isObjectLike.js.map +1 -1
  346. package/dist/node_modules/lodash/isPlainObject.js.map +1 -1
  347. package/dist/node_modules/lodash/isString.js.map +1 -1
  348. package/dist/node_modules/lodash/isSymbol.js.map +1 -1
  349. package/dist/node_modules/lodash/isTypedArray.js.map +1 -1
  350. package/dist/node_modules/lodash/keys.js.map +1 -1
  351. package/dist/node_modules/lodash/last.js.map +1 -1
  352. package/dist/node_modules/lodash/map.js.map +1 -1
  353. package/dist/node_modules/lodash/mapValues.js.map +1 -1
  354. package/dist/node_modules/lodash/max.js.map +1 -1
  355. package/dist/node_modules/lodash/maxBy.js.map +1 -1
  356. package/dist/node_modules/lodash/memoize.js.map +1 -1
  357. package/dist/node_modules/lodash/min.js.map +1 -1
  358. package/dist/node_modules/lodash/minBy.js.map +1 -1
  359. package/dist/node_modules/lodash/noop.js.map +1 -1
  360. package/dist/node_modules/lodash/now.js.map +1 -1
  361. package/dist/node_modules/lodash/property.js.map +1 -1
  362. package/dist/node_modules/lodash/range.js.map +1 -1
  363. package/dist/node_modules/lodash/some.js.map +1 -1
  364. package/dist/node_modules/lodash/sortBy.js.map +1 -1
  365. package/dist/node_modules/lodash/stubArray.js.map +1 -1
  366. package/dist/node_modules/lodash/stubFalse.js.map +1 -1
  367. package/dist/node_modules/lodash/throttle.js.map +1 -1
  368. package/dist/node_modules/lodash/toFinite.js.map +1 -1
  369. package/dist/node_modules/lodash/toInteger.js.map +1 -1
  370. package/dist/node_modules/lodash/toNumber.js.map +1 -1
  371. package/dist/node_modules/lodash/toString.js.map +1 -1
  372. package/dist/node_modules/lodash/uniqBy.js.map +1 -1
  373. package/dist/node_modules/lodash/upperFirst.js.map +1 -1
  374. package/dist/node_modules/object-assign/index.js.map +1 -1
  375. package/dist/node_modules/prop-types/checkPropTypes.js.map +1 -1
  376. package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +1 -1
  377. package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +1 -1
  378. package/dist/node_modules/prop-types/index.js.map +1 -1
  379. package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +1 -1
  380. package/dist/node_modules/prop-types/lib/has.js.map +1 -1
  381. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +1 -1
  382. package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
  383. package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +1 -1
  384. package/dist/node_modules/react-is/cjs/react-is.development.js.map +1 -1
  385. package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
  386. package/dist/node_modules/react-is/index.js.map +1 -1
  387. package/dist/node_modules/react-smooth/es6/Animate.js +2 -2
  388. package/dist/node_modules/react-smooth/es6/Animate.js.map +1 -1
  389. package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +1 -1
  390. package/dist/node_modules/react-smooth/es6/configUpdate.js.map +1 -1
  391. package/dist/node_modules/react-smooth/es6/easing.js.map +1 -1
  392. package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +1 -1
  393. package/dist/node_modules/react-smooth/es6/util.js.map +1 -1
  394. package/dist/node_modules/recharts/es6/cartesian/Area.js +13 -13
  395. package/dist/node_modules/recharts/es6/cartesian/Area.js.map +1 -1
  396. package/dist/node_modules/recharts/es6/cartesian/Bar.js +9 -9
  397. package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +1 -1
  398. package/dist/node_modules/recharts/es6/cartesian/Brush.js +12 -12
  399. package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +1 -1
  400. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js +7 -7
  401. package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +1 -1
  402. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js +4 -4
  403. package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +1 -1
  404. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js +3 -3
  405. package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +1 -1
  406. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js +3 -3
  407. package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +1 -1
  408. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js +4 -4
  409. package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +1 -1
  410. package/dist/node_modules/recharts/es6/cartesian/XAxis.js +3 -3
  411. package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +1 -1
  412. package/dist/node_modules/recharts/es6/cartesian/YAxis.js +3 -3
  413. package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +1 -1
  414. package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +1 -1
  415. package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +1 -1
  416. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js +1 -1
  417. package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +1 -1
  418. package/dist/node_modules/recharts/es6/chart/AreaChart.js.map +1 -1
  419. package/dist/node_modules/recharts/es6/chart/BarChart.js.map +1 -1
  420. package/dist/node_modules/recharts/es6/chart/PieChart.js.map +1 -1
  421. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js +22 -22
  422. package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +1 -1
  423. package/dist/node_modules/recharts/es6/component/Cell.js.map +1 -1
  424. package/dist/node_modules/recharts/es6/component/Cursor.js +1 -1
  425. package/dist/node_modules/recharts/es6/component/Cursor.js.map +1 -1
  426. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js +11 -11
  427. package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +1 -1
  428. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js +6 -6
  429. package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +1 -1
  430. package/dist/node_modules/recharts/es6/component/Label.js +14 -14
  431. package/dist/node_modules/recharts/es6/component/Label.js.map +1 -1
  432. package/dist/node_modules/recharts/es6/component/LabelList.js +6 -6
  433. package/dist/node_modules/recharts/es6/component/LabelList.js.map +1 -1
  434. package/dist/node_modules/recharts/es6/component/Legend.js +5 -5
  435. package/dist/node_modules/recharts/es6/component/Legend.js.map +1 -1
  436. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js +3 -3
  437. package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +1 -1
  438. package/dist/node_modules/recharts/es6/component/Text.js +2 -2
  439. package/dist/node_modules/recharts/es6/component/Text.js.map +1 -1
  440. package/dist/node_modules/recharts/es6/component/Tooltip.js +3 -3
  441. package/dist/node_modules/recharts/es6/component/Tooltip.js.map +1 -1
  442. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js +2 -2
  443. package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +1 -1
  444. package/dist/node_modules/recharts/es6/container/Layer.js +2 -2
  445. package/dist/node_modules/recharts/es6/container/Layer.js.map +1 -1
  446. package/dist/node_modules/recharts/es6/container/Surface.js +2 -2
  447. package/dist/node_modules/recharts/es6/container/Surface.js.map +1 -1
  448. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +2 -2
  449. package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +1 -1
  450. package/dist/node_modules/recharts/es6/polar/Pie.js +13 -13
  451. package/dist/node_modules/recharts/es6/polar/Pie.js.map +1 -1
  452. package/dist/node_modules/recharts/es6/polar/PolarAngleAxis.js +8 -8
  453. package/dist/node_modules/recharts/es6/polar/PolarAngleAxis.js.map +1 -1
  454. package/dist/node_modules/recharts/es6/polar/PolarRadiusAxis.js +6 -6
  455. package/dist/node_modules/recharts/es6/polar/PolarRadiusAxis.js.map +1 -1
  456. package/dist/node_modules/recharts/es6/shape/Cross.js +1 -1
  457. package/dist/node_modules/recharts/es6/shape/Cross.js.map +1 -1
  458. package/dist/node_modules/recharts/es6/shape/Curve.js +1 -1
  459. package/dist/node_modules/recharts/es6/shape/Curve.js.map +1 -1
  460. package/dist/node_modules/recharts/es6/shape/Dot.js +1 -1
  461. package/dist/node_modules/recharts/es6/shape/Dot.js.map +1 -1
  462. package/dist/node_modules/recharts/es6/shape/Polygon.js +4 -4
  463. package/dist/node_modules/recharts/es6/shape/Polygon.js.map +1 -1
  464. package/dist/node_modules/recharts/es6/shape/Rectangle.js +4 -4
  465. package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +1 -1
  466. package/dist/node_modules/recharts/es6/shape/Sector.js +1 -1
  467. package/dist/node_modules/recharts/es6/shape/Sector.js.map +1 -1
  468. package/dist/node_modules/recharts/es6/shape/Symbols.js +1 -1
  469. package/dist/node_modules/recharts/es6/shape/Symbols.js.map +1 -1
  470. package/dist/node_modules/recharts/es6/shape/Trapezoid.js +4 -4
  471. package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +1 -1
  472. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js +9 -9
  473. package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +1 -1
  474. package/dist/node_modules/recharts/es6/util/BarUtils.js +1 -1
  475. package/dist/node_modules/recharts/es6/util/BarUtils.js.map +1 -1
  476. package/dist/node_modules/recharts/es6/util/CartesianUtils.js +1 -1
  477. package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +1 -1
  478. package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +1 -1
  479. package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +1 -1
  480. package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +1 -1
  481. package/dist/node_modules/recharts/es6/util/DataUtils.js.map +1 -1
  482. package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +1 -1
  483. package/dist/node_modules/recharts/es6/util/Events.js.map +1 -1
  484. package/dist/node_modules/recharts/es6/util/Global.js.map +1 -1
  485. package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +1 -1
  486. package/dist/node_modules/recharts/es6/util/LogUtils.js.map +1 -1
  487. package/dist/node_modules/recharts/es6/util/PolarUtils.js +1 -1
  488. package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +1 -1
  489. package/dist/node_modules/recharts/es6/util/ReactUtils.js +1 -1
  490. package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +1 -1
  491. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js +1 -1
  492. package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +1 -1
  493. package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +1 -1
  494. package/dist/node_modules/recharts/es6/util/TickUtils.js.map +1 -1
  495. package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +1 -1
  496. package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +1 -1
  497. package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +1 -1
  498. package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +1 -1
  499. package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +1 -1
  500. package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +1 -1
  501. package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +1 -1
  502. package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +1 -1
  503. package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +1 -1
  504. package/dist/node_modules/recharts/es6/util/types.js +1 -1
  505. package/dist/node_modules/recharts/es6/util/types.js.map +1 -1
  506. package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +1 -1
  507. package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +1 -1
  508. package/dist/node_modules/recharts-scale/es6/util/utils.js.map +1 -1
  509. package/dist/node_modules/sonner/dist/index.js.map +1 -1
  510. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +1 -1
  511. package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -1
  512. package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +1 -1
  513. package/dist/stories/LoadMore.stories.d.ts +0 -1
  514. package/package.json +15 -7
@@ -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":"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"}
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":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"useBrainyRichAnalytics.js","names":[],"sources":["../../../src/brainyrich/hooks/useBrainyRichAnalytics.ts"],"sourcesContent":["/**\n * BrainyRich analytics helpers.\n *\n * Emits product-scoped events on the shared shell event bus. The app shell's\n * RybbitSink forwards allow-listed fact events to Rybbit Cloud for product\n * analytics, and the OTel sink forwards them to the SRE telemetry pipeline.\n */\n\nimport { useCallback, useEffect } from 'react';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\n\nexport type BrainyRichPageEvent =\n | 'brainyrich.dashboard.viewed'\n | 'brainyrich.accounts.viewed'\n | 'brainyrich.account.viewed'\n | 'brainyrich.family.viewed'\n | 'brainyrich.household.viewed'\n | 'brainyrich.goals.viewed'\n | 'brainyrich.goal.viewed'\n | 'brainyrich.portfolios.viewed'\n | 'brainyrich.portfolio.viewed'\n | 'brainyrich.investments.viewed'\n | 'brainyrich.risk.viewed'\n | 'brainyrich.tax.viewed'\n | 'brainyrich.reports.viewed'\n | 'brainyrich.analytics.viewed'\n | 'brainyrich.aiAssistant.viewed';\n\nexport function useBrainyRichAnalytics() {\n const bus = useEventBus();\n\n const emit = useCallback(\n (name: BrainyRichPageEvent, payload: Record<string, unknown> = {}) => {\n bus.emitCustom(name, payload);\n },\n [bus]\n );\n\n const trackPageView = useCallback(\n (name: BrainyRichPageEvent, payload: Record<string, unknown> = {}) => {\n emit(name, payload);\n },\n [emit]\n );\n\n return { emit, trackPageView };\n}\n\n/**\n * Emit a BrainyRich page-view event once per unique (name, id) tuple.\n */\nexport function useTrackBrainyRichPageView(\n name: BrainyRichPageEvent,\n payload: Record<string, unknown> = {}\n): void {\n const { trackPageView } = useBrainyRichAnalytics();\n\n useEffect(() => {\n trackPageView(name, payload);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [name, JSON.stringify(payload)]);\n}\n"],"mappings":";;;AA4BA,SAAgB,IAAyB;CACvC,IAAM,IAAM,GAAa,EAEnB,IAAO,GACV,GAA2B,IAAmC,EAAE,KAAK;AACpE,IAAI,WAAW,GAAM,EAAQ;IAE/B,CAAC,EAAI,CACN;AASD,QAAO;EAAE;EAAM,eAPO,GACnB,GAA2B,IAAmC,EAAE,KAAK;AACpE,KAAK,GAAM,EAAQ;KAErB,CAAC,EAAK,CACP;EAE6B;;AAMhC,SAAgB,EACd,GACA,IAAmC,EAAE,EAC/B;CACN,IAAM,EAAE,qBAAkB,GAAwB;AAElD,SAAgB;AACd,IAAc,GAAM,EAAQ;IAE3B,CAAC,GAAM,KAAK,UAAU,EAAQ,CAAC,CAAC"}
1
+ {"version":3,"file":"useBrainyRichAnalytics.js","names":[],"sources":["../../../src/brainyrich/hooks/useBrainyRichAnalytics.ts"],"sourcesContent":["/**\n * BrainyRich analytics helpers.\n *\n * Emits product-scoped events on the shared shell event bus. The app shell's\n * RybbitSink forwards allow-listed fact events to Rybbit Cloud for product\n * analytics, and the OTel sink forwards them to the SRE telemetry pipeline.\n */\n\nimport { useCallback, useEffect } from 'react';\nimport { useEventBus } from '@burdenoff/fe-libs/shared/events';\n\nexport type BrainyRichPageEvent =\n | 'brainyrich.dashboard.viewed'\n | 'brainyrich.accounts.viewed'\n | 'brainyrich.account.viewed'\n | 'brainyrich.family.viewed'\n | 'brainyrich.household.viewed'\n | 'brainyrich.goals.viewed'\n | 'brainyrich.goal.viewed'\n | 'brainyrich.portfolios.viewed'\n | 'brainyrich.portfolio.viewed'\n | 'brainyrich.investments.viewed'\n | 'brainyrich.risk.viewed'\n | 'brainyrich.tax.viewed'\n | 'brainyrich.reports.viewed'\n | 'brainyrich.analytics.viewed'\n | 'brainyrich.aiAssistant.viewed';\n\nexport function useBrainyRichAnalytics() {\n const bus = useEventBus();\n\n const emit = useCallback(\n (name: BrainyRichPageEvent, payload: Record<string, unknown> = {}) => {\n bus.emitCustom(name, payload);\n },\n [bus]\n );\n\n const trackPageView = useCallback(\n (name: BrainyRichPageEvent, payload: Record<string, unknown> = {}) => {\n emit(name, payload);\n },\n [emit]\n );\n\n return { emit, trackPageView };\n}\n\n/**\n * Emit a BrainyRich page-view event once per unique (name, id) tuple.\n */\nexport function useTrackBrainyRichPageView(\n name: BrainyRichPageEvent,\n payload: Record<string, unknown> = {}\n): void {\n const { trackPageView } = useBrainyRichAnalytics();\n\n useEffect(() => {\n trackPageView(name, payload);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [name, JSON.stringify(payload)]);\n}\n"],"mappings":";;;AA4BA,SAAgB,IAAyB;CACvC,IAAM,IAAM,EAAY,GAElB,IAAO,GACV,GAA2B,IAAmC,CAAC,MAAM;EACpE,EAAI,WAAW,GAAM,CAAO;CAC9B,GACA,CAAC,CAAG,CACN;CASA,OAAO;EAAE;EAAM,eAPO,GACnB,GAA2B,IAAmC,CAAC,MAAM;GACpE,EAAK,GAAM,CAAO;EACpB,GACA,CAAC,CAAI,CAGQ;CAAc;AAC/B;AAKA,SAAgB,EACd,GACA,IAAmC,CAAC,GAC9B;CACN,IAAM,EAAE,qBAAkB,EAAuB;CAEjD,QAAgB;EACd,EAAc,GAAM,CAAO;CAE7B,GAAG,CAAC,GAAM,KAAK,UAAU,CAAO,CAAC,CAAC;AACpC"}
@@ -1,5 +1,4 @@
1
1
  import { Connection, BraNetWorthSummary, BraAccount, BraAccountStatus, BraPortfolio, BraPortfolioStatus, BraHolding, BraModelPortfolio, BraGoal, BraGoalStatus, BraGoalFunding, BraHousehold, BraHouseholdStatus, BraInsight, BraInsightSeverity, BraInsightStatus, BraTransaction, BraTransactionType, BraRebalanceProposal, BraRebalanceStatus, BraPortfolioRiskReport, BraRiskSummary, BraTaxLossReport, BraTaxLossThresholds, BraAdvisor, BraAdvisorRole, BraFirmReport, BraAdminFirmSummary, BraAdvisorBranding, BraUpsertAdvisorBrandingInput, BraClientPortalSummary, BraScheduledReport, BraReportRun, BraCreateScheduledReportInput, BraGenerateReportNowInput, BraMarketQuote, BraHoldingPriceRefreshResult, BraTradeInstruction, BraTradeInstructionStatus, BraCreateTradeInstructionInput, BraCreateAccountInput, BraUpdateAccountInput, BraCreatePortfolioInput, BraUpdatePortfolioInput, BraCreateHoldingInput, BraUpdateHoldingInput, BraCreateModelPortfolioInput, BraCreateGoalInput, BraUpdateGoalInput, BraLinkGoalFundingInput, BraCreateHouseholdInput, BraUpdateHouseholdInput, BraCreateInsightInput, BraCreateTransactionInput, BraCreateRebalanceProposalInput, PaginationInput } from '../types/bra';
2
-
3
2
  export interface AccountFilters {
4
3
  householdId?: string;
5
4
  status?: BraAccountStatus;
@@ -2166,6 +2165,182 @@ export declare const useAllAccounts: (filters?: Omit<AccountFilters, "pagination
2166
2165
  fetchStatus: import('@tanstack/query-core').FetchStatus;
2167
2166
  promise: Promise<BraAccount[]>;
2168
2167
  };
2168
+ /**
2169
+ * Aggregation-ready hook: ALL holdings matching `filters` (every page).
2170
+ *
2171
+ * With no `accountId`/`portfolioId` filter, `braListHoldings` returns every
2172
+ * holding sitting in an account the caller can see — the SAME visibility scope
2173
+ * `BraPortfolio.holdings` resolves under (both constrain `accountId` to the
2174
+ * caller's visible accounts). Grouping this one set by `holding.portfolioId`
2175
+ * therefore yields exactly the positions each portfolio's own detail view
2176
+ * shows, without a per-portfolio round trip and without the silent first-page
2177
+ * truncation a nested `holdings` selection on a list query would carry.
2178
+ */
2179
+ export declare const useAllHoldings: (filters?: HoldingFilters, options?: {
2180
+ enabled?: boolean;
2181
+ }) => {
2182
+ data: BraHolding[];
2183
+ error: Error;
2184
+ isError: true;
2185
+ isPending: false;
2186
+ isLoading: false;
2187
+ isLoadingError: false;
2188
+ isRefetchError: true;
2189
+ isSuccess: false;
2190
+ isPlaceholderData: false;
2191
+ status: "error";
2192
+ dataUpdatedAt: number;
2193
+ errorUpdatedAt: number;
2194
+ failureCount: number;
2195
+ failureReason: Error | null;
2196
+ errorUpdateCount: number;
2197
+ isFetched: boolean;
2198
+ isFetchedAfterMount: boolean;
2199
+ isFetching: boolean;
2200
+ isInitialLoading: boolean;
2201
+ isPaused: boolean;
2202
+ isRefetching: boolean;
2203
+ isStale: boolean;
2204
+ isEnabled: boolean;
2205
+ refetch: (options?: import('@tanstack/query-core').RefetchOptions) => Promise<import('@tanstack/query-core').QueryObserverResult<BraHolding[], Error>>;
2206
+ fetchStatus: import('@tanstack/query-core').FetchStatus;
2207
+ promise: Promise<BraHolding[]>;
2208
+ } | {
2209
+ data: BraHolding[];
2210
+ error: null;
2211
+ isError: false;
2212
+ isPending: false;
2213
+ isLoading: false;
2214
+ isLoadingError: false;
2215
+ isRefetchError: false;
2216
+ isSuccess: true;
2217
+ isPlaceholderData: false;
2218
+ status: "success";
2219
+ dataUpdatedAt: number;
2220
+ errorUpdatedAt: number;
2221
+ failureCount: number;
2222
+ failureReason: Error | null;
2223
+ errorUpdateCount: number;
2224
+ isFetched: boolean;
2225
+ isFetchedAfterMount: boolean;
2226
+ isFetching: boolean;
2227
+ isInitialLoading: boolean;
2228
+ isPaused: boolean;
2229
+ isRefetching: boolean;
2230
+ isStale: boolean;
2231
+ isEnabled: boolean;
2232
+ refetch: (options?: import('@tanstack/query-core').RefetchOptions) => Promise<import('@tanstack/query-core').QueryObserverResult<BraHolding[], Error>>;
2233
+ fetchStatus: import('@tanstack/query-core').FetchStatus;
2234
+ promise: Promise<BraHolding[]>;
2235
+ } | {
2236
+ data: BraHolding[];
2237
+ error: Error;
2238
+ isError: true;
2239
+ isPending: false;
2240
+ isLoading: false;
2241
+ isLoadingError: true;
2242
+ isRefetchError: false;
2243
+ isSuccess: false;
2244
+ isPlaceholderData: false;
2245
+ status: "error";
2246
+ dataUpdatedAt: number;
2247
+ errorUpdatedAt: number;
2248
+ failureCount: number;
2249
+ failureReason: Error | null;
2250
+ errorUpdateCount: number;
2251
+ isFetched: boolean;
2252
+ isFetchedAfterMount: boolean;
2253
+ isFetching: boolean;
2254
+ isInitialLoading: boolean;
2255
+ isPaused: boolean;
2256
+ isRefetching: boolean;
2257
+ isStale: boolean;
2258
+ isEnabled: boolean;
2259
+ refetch: (options?: import('@tanstack/query-core').RefetchOptions) => Promise<import('@tanstack/query-core').QueryObserverResult<BraHolding[], Error>>;
2260
+ fetchStatus: import('@tanstack/query-core').FetchStatus;
2261
+ promise: Promise<BraHolding[]>;
2262
+ } | {
2263
+ data: BraHolding[];
2264
+ error: null;
2265
+ isError: false;
2266
+ isPending: true;
2267
+ isLoading: true;
2268
+ isLoadingError: false;
2269
+ isRefetchError: false;
2270
+ isSuccess: false;
2271
+ isPlaceholderData: false;
2272
+ status: "pending";
2273
+ dataUpdatedAt: number;
2274
+ errorUpdatedAt: number;
2275
+ failureCount: number;
2276
+ failureReason: Error | null;
2277
+ errorUpdateCount: number;
2278
+ isFetched: boolean;
2279
+ isFetchedAfterMount: boolean;
2280
+ isFetching: boolean;
2281
+ isInitialLoading: boolean;
2282
+ isPaused: boolean;
2283
+ isRefetching: boolean;
2284
+ isStale: boolean;
2285
+ isEnabled: boolean;
2286
+ refetch: (options?: import('@tanstack/query-core').RefetchOptions) => Promise<import('@tanstack/query-core').QueryObserverResult<BraHolding[], Error>>;
2287
+ fetchStatus: import('@tanstack/query-core').FetchStatus;
2288
+ promise: Promise<BraHolding[]>;
2289
+ } | {
2290
+ data: BraHolding[];
2291
+ error: null;
2292
+ isError: false;
2293
+ isPending: true;
2294
+ isLoadingError: false;
2295
+ isRefetchError: false;
2296
+ isSuccess: false;
2297
+ isPlaceholderData: false;
2298
+ status: "pending";
2299
+ dataUpdatedAt: number;
2300
+ errorUpdatedAt: number;
2301
+ failureCount: number;
2302
+ failureReason: Error | null;
2303
+ errorUpdateCount: number;
2304
+ isFetched: boolean;
2305
+ isFetchedAfterMount: boolean;
2306
+ isFetching: boolean;
2307
+ isLoading: boolean;
2308
+ isInitialLoading: boolean;
2309
+ isPaused: boolean;
2310
+ isRefetching: boolean;
2311
+ isStale: boolean;
2312
+ isEnabled: boolean;
2313
+ refetch: (options?: import('@tanstack/query-core').RefetchOptions) => Promise<import('@tanstack/query-core').QueryObserverResult<BraHolding[], Error>>;
2314
+ fetchStatus: import('@tanstack/query-core').FetchStatus;
2315
+ promise: Promise<BraHolding[]>;
2316
+ } | {
2317
+ data: BraHolding[];
2318
+ isError: false;
2319
+ error: null;
2320
+ isPending: false;
2321
+ isLoading: false;
2322
+ isLoadingError: false;
2323
+ isRefetchError: false;
2324
+ isSuccess: true;
2325
+ isPlaceholderData: true;
2326
+ status: "success";
2327
+ dataUpdatedAt: number;
2328
+ errorUpdatedAt: number;
2329
+ failureCount: number;
2330
+ failureReason: Error | null;
2331
+ errorUpdateCount: number;
2332
+ isFetched: boolean;
2333
+ isFetchedAfterMount: boolean;
2334
+ isFetching: boolean;
2335
+ isInitialLoading: boolean;
2336
+ isPaused: boolean;
2337
+ isRefetching: boolean;
2338
+ isStale: boolean;
2339
+ isEnabled: boolean;
2340
+ refetch: (options?: import('@tanstack/query-core').RefetchOptions) => Promise<import('@tanstack/query-core').QueryObserverResult<BraHolding[], Error>>;
2341
+ fetchStatus: import('@tanstack/query-core').FetchStatus;
2342
+ promise: Promise<BraHolding[]>;
2343
+ };
2169
2344
  /** The calling actor's own firm-roster row, or null if they haven't registered yet. */
2170
2345
  export declare const useMyAdvisorProfile: () => import('@tanstack/react-query').UseQueryResult<BraAdvisor | null, Error>;
2171
2346
  export interface BraEnsureAdvisorInput {
@@ -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":"AAAA;;;;;;;;;;;;GAYG;AAOH,OAAO,KAAK,EACV,UAAU,EACV,kBAAkB,EAClB,UAAU,EACV,gBAAgB,EAChB,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,iBAAiB,EAEjB,OAAO,EACP,aAAa,EACb,cAAc,EACd,YAAY,EACZ,kBAAkB,EAClB,UAAU,EACV,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,kBAAkB,EAClB,oBAAoB,EACpB,kBAAkB,EAClB,sBAAsB,EACtB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,UAAU,EACV,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,6BAA6B,EAC7B,sBAAsB,EACtB,kBAAkB,EAClB,YAAY,EACZ,6BAA6B,EAC7B,yBAAyB,EACzB,cAAc,EACd,4BAA4B,EAC5B,mBAAmB,EACnB,yBAAyB,EACzB,8BAA8B,EAC9B,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,qBAAqB,EACrB,4BAA4B,EAC5B,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,qBAAqB,EACrB,yBAAyB,EACzB,+BAA+B,EAC/B,eAAe,EAChB,MAAM,cAAc,CAAC;AAwNtB,MAAM,WAAW,cAAc;IAC7B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,CAAC,EAAE,kBAAkB,CAAC;IAC5B,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,kBAAkB,CAAC;IAC9B,MAAM,CAAC,EAAE,gBAAgB,CAAC;IAC1B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,kBAAkB,CAAC;IAC1B,UAAU,CAAC,EAAE,eAAe,CAAC;CAC9B;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,kBAAkB,CAAC;CAC7B;AAMD,eAAO,MAAM,YAAY,qEAaxB,CAAC;AAMF,eAAO,MAAM,kBAAkB,GAAI,UAAU,MAAM,8EAelD,CAAC;AAMF,eAAO,MAAM,WAAW,GAAI,SAAQ,cAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BtD,CAAC;AAQF,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,GAAG,SAAS,6EAsBhD,CAAC;AAEF,eAAO,MAAM,gBAAgB,8GAsB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;QAIM,MAAM;WAAS,qBAAqB;WAmBtE,CAAC;AAEF,eAAO,MAAM,iBAAiB,4FAoB7B,CAAC;AAMF,eAAO,MAAM,aAAa,GAAI,SAAQ,gBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B1D,CAAC;AAKF,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,GAAG,SAAS,+EAqBlD,CAAC;AAEF,eAAO,MAAM,kBAAkB,kHAmB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;QAII,MAAM;WAAS,uBAAuB;WAkBxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,4FAiB/B,CAAC;AAMF,eAAO,MAAM,WAAW,GAAI,QAAQ,cAAc;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,8GAwB5B,CAAC;AAEF,eAAO,MAAM,gBAAgB;QAIM,MAAM;WAAS,qBAAqB;WAoBtE,CAAC;AAEF,eAAO,MAAM,gBAAgB,4FAsB5B,CAAC;AA2BF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqB9B,CAAC;AAEF,eAAO,MAAM,iBAAiB,GAAI,IAAI,MAAM,GAAG,SAAS,oFAkBvD,CAAC;AAEF,eAAO,MAAM,uBAAuB,4HAqBnC,CAAC;AAMF,eAAO,MAAM,QAAQ,GAAI,SAAQ,WAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2BhD,CAAC;AAKF,eAAO,MAAM,OAAO,GAAI,IAAI,MAAM,GAAG,SAAS,0EAqB7C,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,MAAM,GAAG,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoBzD,CAAC;AAEF,eAAO,MAAM,aAAa,wGAmBzB,CAAC;AAEF,eAAO,MAAM,aAAa;QAIS,MAAM;WAAS,kBAAkB;WAkBnE,CAAC;AAEF,eAAO,MAAM,cAAc,4FAiB1B,CAAC;AAEF,eAAO,MAAM,uBAAuB;QAID,MAAM;kBAAgB,MAAM;WAkB9D,CAAC;AAEF,eAAO,MAAM,kBAAkB,oHAsB9B,CAAC;AAEF,eAAO,MAAM,oBAAoB,4FAsBhC,CAAC;AAMF,eAAO,MAAM,aAAa,GAAI,SAAQ,gBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuB1D,CAAC;AAEF,eAAO,MAAM,YAAY,GAAI,IAAI,MAAM,GAAG,SAAS,+EAgBlD,CAAC;AAEF,eAAO,MAAM,kBAAkB,kHAmB9B,CAAC;AAEF,eAAO,MAAM,kBAAkB;QAII,MAAM;WAAS,uBAAuB;WAkBxE,CAAC;AAEF,eAAO,MAAM,mBAAmB,4FAiB/B,CAAC;AAMF,eAAO,MAAM,WAAW,GAAI,SAAQ,cAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6BtD,CAAC;AAEF,eAAO,MAAM,UAAU,GAAI,IAAI,MAAM,GAAG,SAAS,6EAgBhD,CAAC;AAEF,eAAO,MAAM,gBAAgB,8GAmB5B,CAAC;AAEF,eAAO,MAAM,qBAAqB,+FAsBjC,CAAC;AAEF,eAAO,MAAM,iBAAiB,+FAsB7B,CAAC;AAEF,eAAO,MAAM,iBAAiB,+FAsB7B,CAAC;AAQF;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,GAAI,aAAa,MAAM,GAAG,SAAS,kFAmBtE,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,iGAsBnC,CAAC;AAEF;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,GAAI,aAAa,MAAM,GAAG,SAAS,0EAkBtE,CAAC;AAUF;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,GAClC,aAAa,MAAM,GAAG,SAAS,EAC/B,aAAa,oBAAoB,4EAqBlC,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,yBAAyB;iBAQnB,MAAM;iBACN,oBAAoB;WAmBtC,CAAC;AAMF,eAAO,MAAM,eAAe,GAAI,SAAQ,kBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2B9D,CAAC;AAEF,eAAO,MAAM,oBAAoB,sHAuBhC,CAAC;AAMF,eAAO,MAAM,qBAAqB,GAAI,SAAQ,gBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlE,CAAC;AAEF,eAAO,MAAM,0BAA0B,kIAmBtC,CAAC;AAEF,eAAO,MAAM,8BAA8B;QAIR,MAAM;YAAU,kBAAkB;WAepE,CAAC;AAmBF,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,iDAAiD;IACjD,KAAK,EAAE,CAAC,EAAE,CAAC;IACX,2BAA2B;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,gDAAgD;IAChD,QAAQ,EAAE,MAAM,IAAI,CAAC;IACrB,4BAA4B;IAC5B,SAAS,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,kBAAkB,EAAE,OAAO,CAAC;IAC5B,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAmDD,eAAO,MAAM,gBAAgB,GAAI,SAAQ,cAAmB,KAAG,eAAe,CAAC,UAAU,CAerF,CAAC;AAEL,eAAO,MAAM,kBAAkB,GAAI,SAAQ,gBAAqB,KAAG,eAAe,CAAC,YAAY,CAe3F,CAAC;AAEL,eAAO,MAAM,aAAa,GAAI,SAAQ,WAAgB,KAAG,eAAe,CAAC,OAAO,CAe5E,CAAC;AAEL,eAAO,MAAM,kBAAkB,GAAI,SAAQ,gBAAqB,KAAG,eAAe,CAAC,YAAY,CAW3F,CAAC;AAEL,eAAO,MAAM,gBAAgB,GAAI,SAAQ,cAAmB,KAAG,eAAe,CAAC,UAAU,CAiBrF,CAAC;AAEL,eAAO,MAAM,oBAAoB,GAC/B,SAAQ,kBAAuB,KAC9B,eAAe,CAAC,cAAc,CAgB7B,CAAC;AAwBL,8DAA8D;AAC9D,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,GAAE,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAM,EACpD,QAAQ,SAAM,GACb,OAAO,CAAC,cAAc,EAAE,CAAC,CAc3B;AAED;;;;;GAKG;AACH,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,GAAE,cAAmB,EAC5B,QAAQ,SAAM,GACb,OAAO,CAAC,UAAU,EAAE,CAAC,CAcvB;AAED;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,GAAI,UAAS,IAAI,CAAC,kBAAkB,EAAE,YAAY,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAOtF,CAAC;AAEF,0DAA0D;AAC1D,wBAAsB,gBAAgB,CACpC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,OAAO,GAAE,IAAI,CAAC,cAAc,EAAE,YAAY,CAAM,EAChD,QAAQ,SAAM,GACb,OAAO,CAAC,UAAU,EAAE,CAAC,CAcvB;AAED;;;;;;GAMG;AACH,eAAO,MAAM,cAAc,GAAI,UAAS,IAAI,CAAC,cAAc,EAAE,YAAY,CAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAO9E,CAAC;AAEF;;;;;;;;;;GAUG;AACH,eAAO,MAAM,cAAc,GACzB,UAAS,cAAmB,EAC5B,UAAS;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CASpC,CAAC;AAUF,uFAAuF;AACvF,eAAO,MAAM,mBAAmB,gFAa/B,CAAC;AAEF,MAAM,WAAW,qBAAqB;IACpC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,mHAAmH;AACnH,eAAO,MAAM,uBAAuB,8GAsBnC,CAAC;AAEF,qGAAqG;AACrG,eAAO,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAcvB,CAAC;AAEF,eAAO,MAAM,iBAAiB;YAIqB,MAAM;UAAQ,cAAc;WAe9E,CAAC;AAEF,wEAAwE;AACxE,eAAO,MAAM,aAAa,4EAqBzB,CAAC;AAEF,wGAAwG;AACxG,eAAO,MAAM,mBAAmB,kFAoB/B,CAAC;AAWF,uFAAuF;AACvF,eAAO,MAAM,oBAAoB,wFAahC,CAAC;AAEF,eAAO,MAAM,0BAA0B,8HAmBtC,CAAC;AAEF,uGAAuG;AACvG,eAAO,MAAM,sBAAsB,qFAkBlC,CAAC;AAWF,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAc/B,CAAC;AAEF,eAAO,MAAM,wBAAwB,8HAmBpC,CAAC;AAEF,eAAO,MAAM,2BAA2B;QAII,MAAM;WAAS,OAAO;WAejE,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,oBAAoB,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBvD,CAAC;AAEF,mIAAmI;AACnI,eAAO,MAAM,oBAAoB,oHAuBhC,CAAC;AAEF,wIAAwI;AACxI,wBAAsB,oBAAoB,CACxC,aAAa,EAAE,MAAM,GAAG,SAAS,EACjC,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,IAAI,CAAC,CAqBf;AAED,eAAO,MAAM,uBAAuB,+FAOnC,CAAC;AAMF,oHAAoH;AACpH,eAAO,MAAM,cAAc,GAAI,QAAQ,MAAM,GAAG,SAAS,0EAgBxD,CAAC;AAEF,gFAAgF;AAChF,eAAO,MAAM,uBAAuB,iHA6BnC,CAAC;AAOF,0FAA0F;AAC1F,eAAO,MAAM,oBAAoB,GAAI,cAAc,MAAM,EAAE,SAAS,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgB5F,CAAC;AAEF,eAAO,MAAM,yBAAyB,gIAsBrC,CAAC;AAEF,gIAAgI;AAChI,eAAO,MAAM,yBAAyB;QAQ5B,MAAM;YACF,OAAO,CAAC,yBAAyB,EAAE,cAAc,GAAG,WAAW,CAAC;WAsB7E,CAAC"}