@burdenoff/microfe-brainyrich 2026.705.1 → 2026.706.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_virtual/__vite-optional-peer-dep_@emotion/is-prop-valid_framer-motion.js +10 -0
- package/dist/_virtual/__vite-optional-peer-dep_@emotion/is-prop-valid_framer-motion.js.map +1 -0
- package/dist/_virtual/_rolldown/runtime.js +20 -0
- package/dist/brainyrich/BrainyRichRoot.js +13 -13
- package/dist/brainyrich/components/ActorName.js +38 -0
- package/dist/brainyrich/components/ActorName.js.map +1 -0
- package/dist/brainyrich/components/ConfirmDialog.js +25 -0
- package/dist/brainyrich/components/ConfirmDialog.js.map +1 -0
- package/dist/brainyrich/components/LoadMore.js +24 -0
- package/dist/brainyrich/components/LoadMore.js.map +1 -0
- package/dist/brainyrich/components/index.js +6 -0
- package/dist/brainyrich/components/notify.js +38 -0
- package/dist/brainyrich/components/notify.js.map +1 -0
- package/dist/brainyrich/components/pickers.js +232 -0
- package/dist/brainyrich/components/pickers.js.map +1 -0
- package/dist/brainyrich/components/reuse/CommentThread.js +208 -0
- package/dist/brainyrich/components/reuse/CommentThread.js.map +1 -0
- package/dist/brainyrich/components/reuse/DocumentsPanel.js +237 -0
- package/dist/brainyrich/components/reuse/DocumentsPanel.js.map +1 -0
- package/dist/brainyrich/components/reuse/TagField.js +206 -0
- package/dist/brainyrich/components/reuse/TagField.js.map +1 -0
- package/dist/brainyrich/components/reuse/transport.js +24 -0
- package/dist/brainyrich/components/reuse/transport.js.map +1 -0
- package/dist/brainyrich/components/viz.js +628 -0
- package/dist/brainyrich/components/viz.js.map +1 -0
- package/dist/brainyrich/hooks/useBrainyRichApi.js +644 -372
- package/dist/brainyrich/hooks/useBrainyRichApi.js.map +1 -1
- package/dist/brainyrich/pages/AccountsPage.js +779 -524
- package/dist/brainyrich/pages/AccountsPage.js.map +1 -1
- package/dist/brainyrich/pages/AiAssistantPage.js +512 -361
- package/dist/brainyrich/pages/AiAssistantPage.js.map +1 -1
- package/dist/brainyrich/pages/AnalyticsPage.js +567 -390
- package/dist/brainyrich/pages/AnalyticsPage.js.map +1 -1
- package/dist/brainyrich/pages/DashboardPage.js +382 -232
- package/dist/brainyrich/pages/DashboardPage.js.map +1 -1
- package/dist/brainyrich/pages/FamilyPage.js +732 -315
- package/dist/brainyrich/pages/FamilyPage.js.map +1 -1
- package/dist/brainyrich/pages/GoalsPage.js +572 -382
- package/dist/brainyrich/pages/GoalsPage.js.map +1 -1
- package/dist/brainyrich/pages/InvestmentsPage.js +357 -213
- package/dist/brainyrich/pages/InvestmentsPage.js.map +1 -1
- package/dist/brainyrich/pages/PortfoliosPage.js +644 -476
- package/dist/brainyrich/pages/PortfoliosPage.js.map +1 -1
- package/dist/brainyrich/pages/ReportsPage.js +943 -324
- package/dist/brainyrich/pages/ReportsPage.js.map +1 -1
- package/dist/brainyrich/pages/RiskPage.js +717 -248
- package/dist/brainyrich/pages/RiskPage.js.map +1 -1
- package/dist/brainyrich/pages/TaxPage.js +721 -348
- package/dist/brainyrich/pages/TaxPage.js.map +1 -1
- package/dist/brainyrich/pages/_shared.js +81 -101
- package/dist/brainyrich/pages/_shared.js.map +1 -1
- package/dist/node_modules/clsx/dist/clsx.js +18 -0
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -0
- package/dist/node_modules/d3-array/src/ascending.js +8 -0
- package/dist/node_modules/d3-array/src/ascending.js.map +1 -0
- package/dist/node_modules/d3-array/src/bisect.js +10 -0
- package/dist/node_modules/d3-array/src/bisect.js.map +1 -0
- package/dist/node_modules/d3-array/src/bisector.js +43 -0
- package/dist/node_modules/d3-array/src/bisector.js.map +1 -0
- package/dist/node_modules/d3-array/src/descending.js +8 -0
- package/dist/node_modules/d3-array/src/descending.js.map +1 -0
- package/dist/node_modules/d3-array/src/max.js +14 -0
- package/dist/node_modules/d3-array/src/max.js.map +1 -0
- package/dist/node_modules/d3-array/src/min.js +14 -0
- package/dist/node_modules/d3-array/src/min.js.map +1 -0
- package/dist/node_modules/d3-array/src/number.js +15 -0
- package/dist/node_modules/d3-array/src/number.js.map +1 -0
- package/dist/node_modules/d3-array/src/quantile.js +25 -0
- package/dist/node_modules/d3-array/src/quantile.js.map +1 -0
- package/dist/node_modules/d3-array/src/quickselect.js +26 -0
- package/dist/node_modules/d3-array/src/quickselect.js.map +1 -0
- package/dist/node_modules/d3-array/src/range.js +10 -0
- package/dist/node_modules/d3-array/src/range.js.map +1 -0
- package/dist/node_modules/d3-array/src/sort.js +17 -0
- package/dist/node_modules/d3-array/src/sort.js.map +1 -0
- package/dist/node_modules/d3-array/src/ticks.js +34 -0
- package/dist/node_modules/d3-array/src/ticks.js.map +1 -0
- package/dist/node_modules/d3-color/src/color.js +291 -0
- package/dist/node_modules/d3-color/src/color.js.map +1 -0
- package/dist/node_modules/d3-color/src/define.js +13 -0
- package/dist/node_modules/d3-color/src/define.js.map +1 -0
- package/dist/node_modules/d3-format/src/defaultLocale.js +15 -0
- package/dist/node_modules/d3-format/src/defaultLocale.js.map +1 -0
- package/dist/node_modules/d3-format/src/exponent.js +9 -0
- package/dist/node_modules/d3-format/src/exponent.js.map +1 -0
- package/dist/node_modules/d3-format/src/formatDecimal.js +13 -0
- package/dist/node_modules/d3-format/src/formatDecimal.js.map +1 -0
- package/dist/node_modules/d3-format/src/formatGroup.js +11 -0
- package/dist/node_modules/d3-format/src/formatGroup.js.map +1 -0
- package/dist/node_modules/d3-format/src/formatNumerals.js +12 -0
- package/dist/node_modules/d3-format/src/formatNumerals.js.map +1 -0
- package/dist/node_modules/d3-format/src/formatPrefixAuto.js +13 -0
- package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +1 -0
- package/dist/node_modules/d3-format/src/formatRounded.js +12 -0
- package/dist/node_modules/d3-format/src/formatRounded.js.map +1 -0
- package/dist/node_modules/d3-format/src/formatSpecifier.js +29 -0
- package/dist/node_modules/d3-format/src/formatSpecifier.js.map +1 -0
- package/dist/node_modules/d3-format/src/formatTrim.js +20 -0
- package/dist/node_modules/d3-format/src/formatTrim.js.map +1 -0
- package/dist/node_modules/d3-format/src/formatTypes.js +23 -0
- package/dist/node_modules/d3-format/src/formatTypes.js.map +1 -0
- package/dist/node_modules/d3-format/src/identity.js +8 -0
- package/dist/node_modules/d3-format/src/identity.js.map +1 -0
- package/dist/node_modules/d3-format/src/locale.js +86 -0
- package/dist/node_modules/d3-format/src/locale.js.map +1 -0
- package/dist/node_modules/d3-format/src/precisionFixed.js +9 -0
- package/dist/node_modules/d3-format/src/precisionFixed.js.map +1 -0
- package/dist/node_modules/d3-format/src/precisionPrefix.js +9 -0
- package/dist/node_modules/d3-format/src/precisionPrefix.js.map +1 -0
- package/dist/node_modules/d3-format/src/precisionRound.js +9 -0
- package/dist/node_modules/d3-format/src/precisionRound.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/array.js +15 -0
- package/dist/node_modules/d3-interpolate/src/array.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/basis.js +16 -0
- package/dist/node_modules/d3-interpolate/src/basis.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/basisClosed.js +13 -0
- package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/color.js +25 -0
- package/dist/node_modules/d3-interpolate/src/color.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/constant.js +6 -0
- package/dist/node_modules/d3-interpolate/src/constant.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/date.js +11 -0
- package/dist/node_modules/d3-interpolate/src/date.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/number.js +10 -0
- package/dist/node_modules/d3-interpolate/src/number.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/numberArray.js +16 -0
- package/dist/node_modules/d3-interpolate/src/numberArray.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/object.js +14 -0
- package/dist/node_modules/d3-interpolate/src/object.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/piecewise.js +14 -0
- package/dist/node_modules/d3-interpolate/src/piecewise.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/rgb.js +19 -0
- package/dist/node_modules/d3-interpolate/src/rgb.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/round.js +10 -0
- package/dist/node_modules/d3-interpolate/src/round.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/string.js +28 -0
- package/dist/node_modules/d3-interpolate/src/string.js.map +1 -0
- package/dist/node_modules/d3-interpolate/src/value.js +18 -0
- package/dist/node_modules/d3-interpolate/src/value.js.map +1 -0
- package/dist/node_modules/d3-path/src/path.js +65 -0
- package/dist/node_modules/d3-path/src/path.js.map +1 -0
- package/dist/node_modules/d3-scale/src/band.js +52 -0
- package/dist/node_modules/d3-scale/src/band.js.map +1 -0
- package/dist/node_modules/d3-scale/src/constant.js +10 -0
- package/dist/node_modules/d3-scale/src/constant.js.map +1 -0
- package/dist/node_modules/d3-scale/src/continuous.js +73 -0
- package/dist/node_modules/d3-scale/src/continuous.js.map +1 -0
- package/dist/node_modules/d3-scale/src/diverging.js +82 -0
- package/dist/node_modules/d3-scale/src/diverging.js.map +1 -0
- package/dist/node_modules/d3-scale/src/identity.js +20 -0
- package/dist/node_modules/d3-scale/src/identity.js.map +1 -0
- package/dist/node_modules/d3-scale/src/init.js +29 -0
- package/dist/node_modules/d3-scale/src/init.js.map +1 -0
- package/dist/node_modules/d3-scale/src/linear.js +36 -0
- package/dist/node_modules/d3-scale/src/linear.js.map +1 -0
- package/dist/node_modules/d3-scale/src/log.js +77 -0
- package/dist/node_modules/d3-scale/src/log.js.map +1 -0
- package/dist/node_modules/d3-scale/src/nice.js +10 -0
- package/dist/node_modules/d3-scale/src/nice.js.map +1 -0
- package/dist/node_modules/d3-scale/src/number.js +8 -0
- package/dist/node_modules/d3-scale/src/number.js.map +1 -0
- package/dist/node_modules/d3-scale/src/ordinal.js +31 -0
- package/dist/node_modules/d3-scale/src/ordinal.js.map +1 -0
- package/dist/node_modules/d3-scale/src/pow.js +37 -0
- package/dist/node_modules/d3-scale/src/pow.js.map +1 -0
- package/dist/node_modules/d3-scale/src/quantile.js +37 -0
- package/dist/node_modules/d3-scale/src/quantile.js.map +1 -0
- package/dist/node_modules/d3-scale/src/quantize.js +33 -0
- package/dist/node_modules/d3-scale/src/quantize.js.map +1 -0
- package/dist/node_modules/d3-scale/src/radial.js +39 -0
- package/dist/node_modules/d3-scale/src/radial.js.map +1 -0
- package/dist/node_modules/d3-scale/src/sequential.js +67 -0
- package/dist/node_modules/d3-scale/src/sequential.js.map +1 -0
- package/dist/node_modules/d3-scale/src/sequentialQuantile.js +30 -0
- package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +1 -0
- package/dist/node_modules/d3-scale/src/symlog.js +30 -0
- package/dist/node_modules/d3-scale/src/symlog.js.map +1 -0
- package/dist/node_modules/d3-scale/src/threshold.js +25 -0
- package/dist/node_modules/d3-scale/src/threshold.js.map +1 -0
- package/dist/node_modules/d3-scale/src/tickFormat.js +31 -0
- package/dist/node_modules/d3-scale/src/tickFormat.js.map +1 -0
- package/dist/node_modules/d3-scale/src/time.js +47 -0
- package/dist/node_modules/d3-scale/src/time.js.map +1 -0
- package/dist/node_modules/d3-scale/src/utcTime.js +19 -0
- package/dist/node_modules/d3-scale/src/utcTime.js.map +1 -0
- package/dist/node_modules/d3-shape/src/area.js +55 -0
- package/dist/node_modules/d3-shape/src/area.js.map +1 -0
- package/dist/node_modules/d3-shape/src/array.js +8 -0
- package/dist/node_modules/d3-shape/src/array.js.map +1 -0
- package/dist/node_modules/d3-shape/src/constant.js +10 -0
- package/dist/node_modules/d3-shape/src/constant.js.map +1 -0
- package/dist/node_modules/d3-shape/src/curve/basis.js +49 -0
- package/dist/node_modules/d3-shape/src/curve/basis.js.map +1 -0
- package/dist/node_modules/d3-shape/src/curve/basisClosed.js +50 -0
- package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +1 -0
- package/dist/node_modules/d3-shape/src/curve/basisOpen.js +46 -0
- package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +1 -0
- package/dist/node_modules/d3-shape/src/curve/bump.js +40 -0
- package/dist/node_modules/d3-shape/src/curve/bump.js.map +1 -0
- package/dist/node_modules/d3-shape/src/curve/linear.js +36 -0
- package/dist/node_modules/d3-shape/src/curve/linear.js.map +1 -0
- package/dist/node_modules/d3-shape/src/curve/linearClosed.js +25 -0
- package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +1 -0
- package/dist/node_modules/d3-shape/src/curve/monotone.js +94 -0
- package/dist/node_modules/d3-shape/src/curve/monotone.js.map +1 -0
- package/dist/node_modules/d3-shape/src/curve/natural.js +39 -0
- package/dist/node_modules/d3-shape/src/curve/natural.js.map +1 -0
- package/dist/node_modules/d3-shape/src/curve/step.js +47 -0
- package/dist/node_modules/d3-shape/src/curve/step.js.map +1 -0
- package/dist/node_modules/d3-shape/src/line.js +30 -0
- package/dist/node_modules/d3-shape/src/line.js.map +1 -0
- package/dist/node_modules/d3-shape/src/math.js +8 -0
- package/dist/node_modules/d3-shape/src/math.js.map +1 -0
- package/dist/node_modules/d3-shape/src/noop.js +6 -0
- package/dist/node_modules/d3-shape/src/noop.js.map +1 -0
- package/dist/node_modules/d3-shape/src/offset/expand.js +15 -0
- package/dist/node_modules/d3-shape/src/offset/expand.js.map +1 -0
- package/dist/node_modules/d3-shape/src/offset/none.js +8 -0
- package/dist/node_modules/d3-shape/src/offset/none.js.map +1 -0
- package/dist/node_modules/d3-shape/src/offset/silhouette.js +15 -0
- package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +1 -0
- package/dist/node_modules/d3-shape/src/offset/wiggle.js +21 -0
- package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +1 -0
- package/dist/node_modules/d3-shape/src/order/none.js +9 -0
- package/dist/node_modules/d3-shape/src/order/none.js.map +1 -0
- package/dist/node_modules/d3-shape/src/path.js +19 -0
- package/dist/node_modules/d3-shape/src/path.js.map +1 -0
- package/dist/node_modules/d3-shape/src/point.js +11 -0
- package/dist/node_modules/d3-shape/src/point.js.map +1 -0
- package/dist/node_modules/d3-shape/src/stack.js +34 -0
- package/dist/node_modules/d3-shape/src/stack.js.map +1 -0
- package/dist/node_modules/d3-shape/src/symbol/circle.js +10 -0
- package/dist/node_modules/d3-shape/src/symbol/circle.js.map +1 -0
- package/dist/node_modules/d3-shape/src/symbol/cross.js +10 -0
- package/dist/node_modules/d3-shape/src/symbol/cross.js.map +1 -0
- package/dist/node_modules/d3-shape/src/symbol/diamond.js +10 -0
- package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +1 -0
- package/dist/node_modules/d3-shape/src/symbol/square.js +10 -0
- package/dist/node_modules/d3-shape/src/symbol/square.js.map +1 -0
- package/dist/node_modules/d3-shape/src/symbol/star.js +15 -0
- package/dist/node_modules/d3-shape/src/symbol/star.js.map +1 -0
- package/dist/node_modules/d3-shape/src/symbol/triangle.js +10 -0
- package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +1 -0
- package/dist/node_modules/d3-shape/src/symbol/wye.js +10 -0
- package/dist/node_modules/d3-shape/src/symbol/wye.js.map +1 -0
- package/dist/node_modules/d3-shape/src/symbol.js +23 -0
- package/dist/node_modules/d3-shape/src/symbol.js.map +1 -0
- package/dist/node_modules/d3-time/src/day.js +21 -0
- package/dist/node_modules/d3-time/src/day.js.map +1 -0
- package/dist/node_modules/d3-time/src/duration.js +6 -0
- package/dist/node_modules/d3-time/src/duration.js.map +1 -0
- package/dist/node_modules/d3-time/src/hour.js +19 -0
- package/dist/node_modules/d3-time/src/hour.js.map +1 -0
- package/dist/node_modules/d3-time/src/interval.js +28 -0
- package/dist/node_modules/d3-time/src/interval.js.map +1 -0
- package/dist/node_modules/d3-time/src/millisecond.js +14 -0
- package/dist/node_modules/d3-time/src/millisecond.js.map +1 -0
- package/dist/node_modules/d3-time/src/minute.js +19 -0
- package/dist/node_modules/d3-time/src/minute.js.map +1 -0
- package/dist/node_modules/d3-time/src/month.js +18 -0
- package/dist/node_modules/d3-time/src/month.js.map +1 -0
- package/dist/node_modules/d3-time/src/second.js +13 -0
- package/dist/node_modules/d3-time/src/second.js.map +1 -0
- package/dist/node_modules/d3-time/src/ticks.js +125 -0
- package/dist/node_modules/d3-time/src/ticks.js.map +1 -0
- package/dist/node_modules/d3-time/src/week.js +25 -0
- package/dist/node_modules/d3-time/src/week.js.map +1 -0
- package/dist/node_modules/d3-time/src/year.js +26 -0
- package/dist/node_modules/d3-time/src/year.js.map +1 -0
- package/dist/node_modules/d3-time-format/src/defaultLocale.js +62 -0
- package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +1 -0
- package/dist/node_modules/d3-time-format/src/locale.js +490 -0
- package/dist/node_modules/d3-time-format/src/locale.js.map +1 -0
- package/dist/node_modules/decimal.js-light/decimal.js +378 -0
- package/dist/node_modules/decimal.js-light/decimal.js.map +1 -0
- package/dist/node_modules/eventemitter3/index.js +95 -0
- package/dist/node_modules/eventemitter3/index.js.map +1 -0
- package/dist/node_modules/fast-equals/dist/es/index.js +267 -0
- package/dist/node_modules/fast-equals/dist/es/index.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js +22 -0
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js +8 -0
- package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/context/LazyContext.js +8 -0
- package/dist/node_modules/framer-motion/dist/es/context/LazyContext.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.js +12 -0
- package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.js +19 -0
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/index.js +8 -0
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/index.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js +17 -0
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/context/PresenceContext.js +8 -0
- package/dist/node_modules/framer-motion/dist/es/context/PresenceContext.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js +8 -0
- package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.js +10 -0
- package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/events/event-info.js +13 -0
- package/dist/node_modules/framer-motion/dist/es/events/event-info.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js +259 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js +24 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js +61 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.js +29 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.js +22 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js +135 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js +44 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/press.js +28 -0
- package/dist/node_modules/framer-motion/dist/es/gestures/press.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js +41 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js +27 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/animations.js +11 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/animations.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.js +53 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/drag.js +17 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/drag.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/gestures.js +15 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/gestures.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js +63 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout.js +11 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/load-features.js +15 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/load-features.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js +48 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js +26 -0
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/index.js +72 -0
- package/dist/node_modules/framer-motion/dist/es/motion/index.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.js +6 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js +24 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js +60 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js +52 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js +9 -0
- package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.js +12 -0
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.js +15 -0
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/proxy.js +9 -0
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/proxy.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js +10 -0
- package/dist/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js +23 -0
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js +21 -0
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js +9 -0
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.js +13 -0
- package/dist/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js +28 -0
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js +11 -0
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js +32 -0
- package/dist/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js +28 -0
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.js +13 -0
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js +10 -0
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/distance.js +10 -0
- package/dist/node_modules/framer-motion/dist/es/utils/distance.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.js +6 -0
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/is-browser.js +6 -0
- package/dist/node_modules/framer-motion/dist/es/utils/is-browser.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.js +8 -0
- package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js +15 -0
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/use-constant.js +11 -0
- package/dist/node_modules/framer-motion/dist/es/utils/use-constant.js.map +1 -0
- package/dist/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js +9 -0
- package/dist/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js.map +1 -0
- package/dist/node_modules/internmap/src/index.js +40 -0
- package/dist/node_modules/internmap/src/index.js.map +1 -0
- package/dist/node_modules/lodash/_DataView.js +12 -0
- package/dist/node_modules/lodash/_DataView.js.map +1 -0
- package/dist/node_modules/lodash/_Hash.js +23 -0
- package/dist/node_modules/lodash/_Hash.js.map +1 -0
- package/dist/node_modules/lodash/_ListCache.js +23 -0
- package/dist/node_modules/lodash/_ListCache.js.map +1 -0
- package/dist/node_modules/lodash/_Map.js +12 -0
- package/dist/node_modules/lodash/_Map.js.map +1 -0
- package/dist/node_modules/lodash/_MapCache.js +23 -0
- package/dist/node_modules/lodash/_MapCache.js.map +1 -0
- package/dist/node_modules/lodash/_Promise.js +12 -0
- package/dist/node_modules/lodash/_Promise.js.map +1 -0
- package/dist/node_modules/lodash/_Set.js +12 -0
- package/dist/node_modules/lodash/_Set.js.map +1 -0
- package/dist/node_modules/lodash/_SetCache.js +18 -0
- package/dist/node_modules/lodash/_SetCache.js.map +1 -0
- package/dist/node_modules/lodash/_Stack.js +20 -0
- package/dist/node_modules/lodash/_Stack.js.map +1 -0
- package/dist/node_modules/lodash/_Symbol.js +11 -0
- package/dist/node_modules/lodash/_Symbol.js.map +1 -0
- package/dist/node_modules/lodash/_Uint8Array.js +11 -0
- package/dist/node_modules/lodash/_Uint8Array.js.map +1 -0
- package/dist/node_modules/lodash/_WeakMap.js +12 -0
- package/dist/node_modules/lodash/_WeakMap.js.map +1 -0
- package/dist/node_modules/lodash/_apply.js +19 -0
- package/dist/node_modules/lodash/_apply.js.map +1 -0
- package/dist/node_modules/lodash/_arrayEvery.js +14 -0
- package/dist/node_modules/lodash/_arrayEvery.js.map +1 -0
- package/dist/node_modules/lodash/_arrayFilter.js +17 -0
- package/dist/node_modules/lodash/_arrayFilter.js.map +1 -0
- package/dist/node_modules/lodash/_arrayIncludes.js +15 -0
- package/dist/node_modules/lodash/_arrayIncludes.js.map +1 -0
- package/dist/node_modules/lodash/_arrayIncludesWith.js +14 -0
- package/dist/node_modules/lodash/_arrayIncludesWith.js.map +1 -0
- package/dist/node_modules/lodash/_arrayLikeKeys.js +22 -0
- package/dist/node_modules/lodash/_arrayLikeKeys.js.map +1 -0
- package/dist/node_modules/lodash/_arrayMap.js +14 -0
- package/dist/node_modules/lodash/_arrayMap.js.map +1 -0
- package/dist/node_modules/lodash/_arrayPush.js +14 -0
- package/dist/node_modules/lodash/_arrayPush.js.map +1 -0
- package/dist/node_modules/lodash/_arraySome.js +14 -0
- package/dist/node_modules/lodash/_arraySome.js.map +1 -0
- package/dist/node_modules/lodash/_asciiToArray.js +13 -0
- package/dist/node_modules/lodash/_asciiToArray.js.map +1 -0
- package/dist/node_modules/lodash/_assocIndexOf.js +16 -0
- package/dist/node_modules/lodash/_assocIndexOf.js.map +1 -0
- package/dist/node_modules/lodash/_baseAssignValue.js +20 -0
- package/dist/node_modules/lodash/_baseAssignValue.js.map +1 -0
- package/dist/node_modules/lodash/_baseEach.js +13 -0
- package/dist/node_modules/lodash/_baseEach.js.map +1 -0
- package/dist/node_modules/lodash/_baseEvery.js +18 -0
- package/dist/node_modules/lodash/_baseEvery.js.map +1 -0
- package/dist/node_modules/lodash/_baseExtremum.js +19 -0
- package/dist/node_modules/lodash/_baseExtremum.js.map +1 -0
- package/dist/node_modules/lodash/_baseFindIndex.js +14 -0
- package/dist/node_modules/lodash/_baseFindIndex.js.map +1 -0
- package/dist/node_modules/lodash/_baseFlatten.js +21 -0
- package/dist/node_modules/lodash/_baseFlatten.js.map +1 -0
- package/dist/node_modules/lodash/_baseFor.js +11 -0
- package/dist/node_modules/lodash/_baseFor.js.map +1 -0
- package/dist/node_modules/lodash/_baseForOwn.js +16 -0
- package/dist/node_modules/lodash/_baseForOwn.js.map +1 -0
- package/dist/node_modules/lodash/_baseGet.js +18 -0
- package/dist/node_modules/lodash/_baseGet.js.map +1 -0
- package/dist/node_modules/lodash/_baseGetAllKeys.js +17 -0
- package/dist/node_modules/lodash/_baseGetAllKeys.js.map +1 -0
- package/dist/node_modules/lodash/_baseGetTag.js +17 -0
- package/dist/node_modules/lodash/_baseGetTag.js.map +1 -0
- package/dist/node_modules/lodash/_baseGt.js +13 -0
- package/dist/node_modules/lodash/_baseGt.js.map +1 -0
- package/dist/node_modules/lodash/_baseHasIn.js +13 -0
- package/dist/node_modules/lodash/_baseHasIn.js.map +1 -0
- package/dist/node_modules/lodash/_baseIndexOf.js +17 -0
- package/dist/node_modules/lodash/_baseIndexOf.js.map +1 -0
- package/dist/node_modules/lodash/_baseIsArguments.js +16 -0
- package/dist/node_modules/lodash/_baseIsArguments.js.map +1 -0
- package/dist/node_modules/lodash/_baseIsEqual.js +16 -0
- package/dist/node_modules/lodash/_baseIsEqual.js.map +1 -0
- package/dist/node_modules/lodash/_baseIsEqualDeep.js +37 -0
- package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +1 -0
- package/dist/node_modules/lodash/_baseIsMatch.js +33 -0
- package/dist/node_modules/lodash/_baseIsMatch.js.map +1 -0
- package/dist/node_modules/lodash/_baseIsNaN.js +13 -0
- package/dist/node_modules/lodash/_baseIsNaN.js.map +1 -0
- package/dist/node_modules/lodash/_baseIsNative.js +18 -0
- package/dist/node_modules/lodash/_baseIsNative.js.map +1 -0
- package/dist/node_modules/lodash/_baseIsTypedArray.js +18 -0
- package/dist/node_modules/lodash/_baseIsTypedArray.js.map +1 -0
- package/dist/node_modules/lodash/_baseIteratee.js +19 -0
- package/dist/node_modules/lodash/_baseIteratee.js.map +1 -0
- package/dist/node_modules/lodash/_baseKeys.js +19 -0
- package/dist/node_modules/lodash/_baseKeys.js.map +1 -0
- package/dist/node_modules/lodash/_baseLt.js +13 -0
- package/dist/node_modules/lodash/_baseLt.js.map +1 -0
- package/dist/node_modules/lodash/_baseMap.js +19 -0
- package/dist/node_modules/lodash/_baseMap.js.map +1 -0
- package/dist/node_modules/lodash/_baseMatches.js +20 -0
- package/dist/node_modules/lodash/_baseMatches.js.map +1 -0
- package/dist/node_modules/lodash/_baseMatchesProperty.js +24 -0
- package/dist/node_modules/lodash/_baseMatchesProperty.js.map +1 -0
- package/dist/node_modules/lodash/_baseOrderBy.js +39 -0
- package/dist/node_modules/lodash/_baseOrderBy.js.map +1 -0
- package/dist/node_modules/lodash/_baseProperty.js +15 -0
- package/dist/node_modules/lodash/_baseProperty.js.map +1 -0
- package/dist/node_modules/lodash/_basePropertyDeep.js +17 -0
- package/dist/node_modules/lodash/_basePropertyDeep.js.map +1 -0
- package/dist/node_modules/lodash/_baseRange.js +15 -0
- package/dist/node_modules/lodash/_baseRange.js.map +1 -0
- package/dist/node_modules/lodash/_baseRest.js +17 -0
- package/dist/node_modules/lodash/_baseRest.js.map +1 -0
- package/dist/node_modules/lodash/_baseSetToString.js +21 -0
- package/dist/node_modules/lodash/_baseSetToString.js.map +1 -0
- package/dist/node_modules/lodash/_baseSlice.js +16 -0
- package/dist/node_modules/lodash/_baseSlice.js.map +1 -0
- package/dist/node_modules/lodash/_baseSome.js +18 -0
- package/dist/node_modules/lodash/_baseSome.js.map +1 -0
- package/dist/node_modules/lodash/_baseSortBy.js +15 -0
- package/dist/node_modules/lodash/_baseSortBy.js.map +1 -0
- package/dist/node_modules/lodash/_baseTimes.js +14 -0
- package/dist/node_modules/lodash/_baseTimes.js.map +1 -0
- package/dist/node_modules/lodash/_baseToString.js +22 -0
- package/dist/node_modules/lodash/_baseToString.js.map +1 -0
- package/dist/node_modules/lodash/_baseTrim.js +15 -0
- package/dist/node_modules/lodash/_baseTrim.js.map +1 -0
- package/dist/node_modules/lodash/_baseUnary.js +15 -0
- package/dist/node_modules/lodash/_baseUnary.js.map +1 -0
- package/dist/node_modules/lodash/_baseUniq.js +34 -0
- package/dist/node_modules/lodash/_baseUniq.js.map +1 -0
- package/dist/node_modules/lodash/_cacheHas.js +13 -0
- package/dist/node_modules/lodash/_cacheHas.js.map +1 -0
- package/dist/node_modules/lodash/_castPath.js +18 -0
- package/dist/node_modules/lodash/_castPath.js.map +1 -0
- package/dist/node_modules/lodash/_castSlice.js +16 -0
- package/dist/node_modules/lodash/_castSlice.js.map +1 -0
- package/dist/node_modules/lodash/_compareAscending.js +20 -0
- package/dist/node_modules/lodash/_compareAscending.js.map +1 -0
- package/dist/node_modules/lodash/_compareMultiple.js +19 -0
- package/dist/node_modules/lodash/_compareMultiple.js.map +1 -0
- package/dist/node_modules/lodash/_coreJsData.js +11 -0
- package/dist/node_modules/lodash/_coreJsData.js.map +1 -0
- package/dist/node_modules/lodash/_createBaseEach.js +20 -0
- package/dist/node_modules/lodash/_createBaseEach.js.map +1 -0
- package/dist/node_modules/lodash/_createBaseFor.js +19 -0
- package/dist/node_modules/lodash/_createBaseFor.js.map +1 -0
- package/dist/node_modules/lodash/_createCaseFirst.js +22 -0
- package/dist/node_modules/lodash/_createCaseFirst.js.map +1 -0
- package/dist/node_modules/lodash/_createFind.js +27 -0
- package/dist/node_modules/lodash/_createFind.js.map +1 -0
- package/dist/node_modules/lodash/_createRange.js +19 -0
- package/dist/node_modules/lodash/_createRange.js.map +1 -0
- package/dist/node_modules/lodash/_createSet.js +16 -0
- package/dist/node_modules/lodash/_createSet.js.map +1 -0
- package/dist/node_modules/lodash/_defineProperty.js +17 -0
- package/dist/node_modules/lodash/_defineProperty.js.map +1 -0
- package/dist/node_modules/lodash/_equalArrays.js +42 -0
- package/dist/node_modules/lodash/_equalArrays.js.map +1 -0
- package/dist/node_modules/lodash/_equalByTag.js +42 -0
- package/dist/node_modules/lodash/_equalByTag.js.map +1 -0
- package/dist/node_modules/lodash/_equalObjects.js +39 -0
- package/dist/node_modules/lodash/_equalObjects.js.map +1 -0
- package/dist/node_modules/lodash/_freeGlobal.js +10 -0
- package/dist/node_modules/lodash/_freeGlobal.js.map +1 -0
- package/dist/node_modules/lodash/_getAllKeys.js +17 -0
- package/dist/node_modules/lodash/_getAllKeys.js.map +1 -0
- package/dist/node_modules/lodash/_getMapData.js +16 -0
- package/dist/node_modules/lodash/_getMapData.js.map +1 -0
- package/dist/node_modules/lodash/_getMatchData.js +24 -0
- package/dist/node_modules/lodash/_getMatchData.js.map +1 -0
- package/dist/node_modules/lodash/_getNative.js +17 -0
- package/dist/node_modules/lodash/_getNative.js.map +1 -0
- package/dist/node_modules/lodash/_getPrototype.js +11 -0
- package/dist/node_modules/lodash/_getPrototype.js.map +1 -0
- package/dist/node_modules/lodash/_getRawTag.js +21 -0
- package/dist/node_modules/lodash/_getRawTag.js.map +1 -0
- package/dist/node_modules/lodash/_getSymbols.js +17 -0
- package/dist/node_modules/lodash/_getSymbols.js.map +1 -0
- package/dist/node_modules/lodash/_getTag.js +28 -0
- package/dist/node_modules/lodash/_getTag.js.map +1 -0
- package/dist/node_modules/lodash/_getValue.js +13 -0
- package/dist/node_modules/lodash/_getValue.js.map +1 -0
- package/dist/node_modules/lodash/_hasPath.js +26 -0
- package/dist/node_modules/lodash/_hasPath.js.map +1 -0
- package/dist/node_modules/lodash/_hasUnicode.js +14 -0
- package/dist/node_modules/lodash/_hasUnicode.js.map +1 -0
- package/dist/node_modules/lodash/_hashClear.js +15 -0
- package/dist/node_modules/lodash/_hashClear.js.map +1 -0
- package/dist/node_modules/lodash/_hashDelete.js +14 -0
- package/dist/node_modules/lodash/_hashDelete.js.map +1 -0
- package/dist/node_modules/lodash/_hashGet.js +20 -0
- package/dist/node_modules/lodash/_hashGet.js.map +1 -0
- package/dist/node_modules/lodash/_hashHas.js +16 -0
- package/dist/node_modules/lodash/_hashHas.js.map +1 -0
- package/dist/node_modules/lodash/_hashSet.js +16 -0
- package/dist/node_modules/lodash/_hashSet.js.map +1 -0
- package/dist/node_modules/lodash/_isFlattenable.js +17 -0
- package/dist/node_modules/lodash/_isFlattenable.js.map +1 -0
- package/dist/node_modules/lodash/_isIndex.js +15 -0
- package/dist/node_modules/lodash/_isIndex.js.map +1 -0
- package/dist/node_modules/lodash/_isIterateeCall.js +20 -0
- package/dist/node_modules/lodash/_isIterateeCall.js.map +1 -0
- package/dist/node_modules/lodash/_isKey.js +18 -0
- package/dist/node_modules/lodash/_isKey.js.map +1 -0
- package/dist/node_modules/lodash/_isKeyable.js +14 -0
- package/dist/node_modules/lodash/_isKeyable.js.map +1 -0
- package/dist/node_modules/lodash/_isMasked.js +18 -0
- package/dist/node_modules/lodash/_isMasked.js.map +1 -0
- package/dist/node_modules/lodash/_isPrototype.js +15 -0
- package/dist/node_modules/lodash/_isPrototype.js.map +1 -0
- package/dist/node_modules/lodash/_isStrictComparable.js +15 -0
- package/dist/node_modules/lodash/_isStrictComparable.js.map +1 -0
- package/dist/node_modules/lodash/_listCacheClear.js +13 -0
- package/dist/node_modules/lodash/_listCacheClear.js.map +1 -0
- package/dist/node_modules/lodash/_listCacheDelete.js +16 -0
- package/dist/node_modules/lodash/_listCacheDelete.js.map +1 -0
- package/dist/node_modules/lodash/_listCacheGet.js +16 -0
- package/dist/node_modules/lodash/_listCacheGet.js.map +1 -0
- package/dist/node_modules/lodash/_listCacheHas.js +15 -0
- package/dist/node_modules/lodash/_listCacheHas.js.map +1 -0
- package/dist/node_modules/lodash/_listCacheSet.js +16 -0
- package/dist/node_modules/lodash/_listCacheSet.js.map +1 -0
- package/dist/node_modules/lodash/_mapCacheClear.js +21 -0
- package/dist/node_modules/lodash/_mapCacheClear.js.map +1 -0
- package/dist/node_modules/lodash/_mapCacheDelete.js +16 -0
- package/dist/node_modules/lodash/_mapCacheDelete.js.map +1 -0
- package/dist/node_modules/lodash/_mapCacheGet.js +15 -0
- package/dist/node_modules/lodash/_mapCacheGet.js.map +1 -0
- package/dist/node_modules/lodash/_mapCacheHas.js +15 -0
- package/dist/node_modules/lodash/_mapCacheHas.js.map +1 -0
- package/dist/node_modules/lodash/_mapCacheSet.js +16 -0
- package/dist/node_modules/lodash/_mapCacheSet.js.map +1 -0
- package/dist/node_modules/lodash/_mapToArray.js +16 -0
- package/dist/node_modules/lodash/_mapToArray.js.map +1 -0
- package/dist/node_modules/lodash/_matchesStrictComparable.js +15 -0
- package/dist/node_modules/lodash/_matchesStrictComparable.js.map +1 -0
- package/dist/node_modules/lodash/_memoizeCapped.js +18 -0
- package/dist/node_modules/lodash/_memoizeCapped.js.map +1 -0
- package/dist/node_modules/lodash/_nativeCreate.js +11 -0
- package/dist/node_modules/lodash/_nativeCreate.js.map +1 -0
- package/dist/node_modules/lodash/_nativeKeys.js +11 -0
- package/dist/node_modules/lodash/_nativeKeys.js.map +1 -0
- package/dist/node_modules/lodash/_nodeUtil.js +16 -0
- package/dist/node_modules/lodash/_nodeUtil.js.map +1 -0
- package/dist/node_modules/lodash/_objectToString.js +14 -0
- package/dist/node_modules/lodash/_objectToString.js.map +1 -0
- package/dist/node_modules/lodash/_overArg.js +15 -0
- package/dist/node_modules/lodash/_overArg.js.map +1 -0
- package/dist/node_modules/lodash/_overRest.js +20 -0
- package/dist/node_modules/lodash/_overRest.js.map +1 -0
- package/dist/node_modules/lodash/_root.js +12 -0
- package/dist/node_modules/lodash/_root.js.map +1 -0
- package/dist/node_modules/lodash/_setCacheAdd.js +14 -0
- package/dist/node_modules/lodash/_setCacheAdd.js.map +1 -0
- package/dist/node_modules/lodash/_setCacheHas.js +13 -0
- package/dist/node_modules/lodash/_setCacheHas.js.map +1 -0
- package/dist/node_modules/lodash/_setToArray.js +16 -0
- package/dist/node_modules/lodash/_setToArray.js.map +1 -0
- package/dist/node_modules/lodash/_setToString.js +13 -0
- package/dist/node_modules/lodash/_setToString.js.map +1 -0
- package/dist/node_modules/lodash/_shortOut.js +21 -0
- package/dist/node_modules/lodash/_shortOut.js.map +1 -0
- package/dist/node_modules/lodash/_stackClear.js +15 -0
- package/dist/node_modules/lodash/_stackClear.js.map +1 -0
- package/dist/node_modules/lodash/_stackDelete.js +14 -0
- package/dist/node_modules/lodash/_stackDelete.js.map +1 -0
- package/dist/node_modules/lodash/_stackGet.js +13 -0
- package/dist/node_modules/lodash/_stackGet.js.map +1 -0
- package/dist/node_modules/lodash/_stackHas.js +13 -0
- package/dist/node_modules/lodash/_stackHas.js.map +1 -0
- package/dist/node_modules/lodash/_stackSet.js +23 -0
- package/dist/node_modules/lodash/_stackSet.js.map +1 -0
- package/dist/node_modules/lodash/_strictIndexOf.js +14 -0
- package/dist/node_modules/lodash/_strictIndexOf.js.map +1 -0
- package/dist/node_modules/lodash/_stringToArray.js +17 -0
- package/dist/node_modules/lodash/_stringToArray.js.map +1 -0
- package/dist/node_modules/lodash/_stringToPath.js +17 -0
- package/dist/node_modules/lodash/_stringToPath.js.map +1 -0
- package/dist/node_modules/lodash/_toKey.js +17 -0
- package/dist/node_modules/lodash/_toKey.js.map +1 -0
- package/dist/node_modules/lodash/_toSource.js +22 -0
- package/dist/node_modules/lodash/_toSource.js.map +1 -0
- package/dist/node_modules/lodash/_trimmedEndIndex.js +15 -0
- package/dist/node_modules/lodash/_trimmedEndIndex.js.map +1 -0
- package/dist/node_modules/lodash/_unicodeToArray.js +24 -0
- package/dist/node_modules/lodash/_unicodeToArray.js.map +1 -0
- package/dist/node_modules/lodash/constant.js +15 -0
- package/dist/node_modules/lodash/constant.js.map +1 -0
- package/dist/node_modules/lodash/debounce.js +57 -0
- package/dist/node_modules/lodash/debounce.js.map +1 -0
- package/dist/node_modules/lodash/eq.js +13 -0
- package/dist/node_modules/lodash/eq.js.map +1 -0
- package/dist/node_modules/lodash/every.js +20 -0
- package/dist/node_modules/lodash/every.js.map +1 -0
- package/dist/node_modules/lodash/find.js +12 -0
- package/dist/node_modules/lodash/find.js.map +1 -0
- package/dist/node_modules/lodash/findIndex.js +20 -0
- package/dist/node_modules/lodash/findIndex.js.map +1 -0
- package/dist/node_modules/lodash/flatMap.js +16 -0
- package/dist/node_modules/lodash/flatMap.js.map +1 -0
- package/dist/node_modules/lodash/get.js +16 -0
- package/dist/node_modules/lodash/get.js.map +1 -0
- package/dist/node_modules/lodash/hasIn.js +16 -0
- package/dist/node_modules/lodash/hasIn.js.map +1 -0
- package/dist/node_modules/lodash/identity.js +13 -0
- package/dist/node_modules/lodash/identity.js.map +1 -0
- package/dist/node_modules/lodash/isArguments.js +17 -0
- package/dist/node_modules/lodash/isArguments.js.map +1 -0
- package/dist/node_modules/lodash/isArray.js +10 -0
- package/dist/node_modules/lodash/isArray.js.map +1 -0
- package/dist/node_modules/lodash/isArrayLike.js +16 -0
- package/dist/node_modules/lodash/isArrayLike.js.map +1 -0
- package/dist/node_modules/lodash/isBoolean.js +16 -0
- package/dist/node_modules/lodash/isBoolean.js.map +1 -0
- package/dist/node_modules/lodash/isBuffer.js +13 -0
- package/dist/node_modules/lodash/isBuffer.js.map +1 -0
- package/dist/node_modules/lodash/isEqual.js +15 -0
- package/dist/node_modules/lodash/isEqual.js.map +1 -0
- package/dist/node_modules/lodash/isFunction.js +18 -0
- package/dist/node_modules/lodash/isFunction.js.map +1 -0
- package/dist/node_modules/lodash/isLength.js +14 -0
- package/dist/node_modules/lodash/isLength.js.map +1 -0
- package/dist/node_modules/lodash/isNaN.js +15 -0
- package/dist/node_modules/lodash/isNaN.js.map +1 -0
- package/dist/node_modules/lodash/isNil.js +13 -0
- package/dist/node_modules/lodash/isNil.js.map +1 -0
- package/dist/node_modules/lodash/isNumber.js +16 -0
- package/dist/node_modules/lodash/isNumber.js.map +1 -0
- package/dist/node_modules/lodash/isObject.js +14 -0
- package/dist/node_modules/lodash/isObject.js.map +1 -0
- package/dist/node_modules/lodash/isObjectLike.js +13 -0
- package/dist/node_modules/lodash/isObjectLike.js.map +1 -0
- package/dist/node_modules/lodash/isPlainObject.js +21 -0
- package/dist/node_modules/lodash/isPlainObject.js.map +1 -0
- package/dist/node_modules/lodash/isString.js +17 -0
- package/dist/node_modules/lodash/isString.js.map +1 -0
- package/dist/node_modules/lodash/isSymbol.js +16 -0
- package/dist/node_modules/lodash/isSymbol.js.map +1 -0
- package/dist/node_modules/lodash/isTypedArray.js +14 -0
- package/dist/node_modules/lodash/isTypedArray.js.map +1 -0
- package/dist/node_modules/lodash/keys.js +17 -0
- package/dist/node_modules/lodash/keys.js.map +1 -0
- package/dist/node_modules/lodash/last.js +14 -0
- package/dist/node_modules/lodash/last.js.map +1 -0
- package/dist/node_modules/lodash/map.js +18 -0
- package/dist/node_modules/lodash/map.js.map +1 -0
- package/dist/node_modules/lodash/mapValues.js +20 -0
- package/dist/node_modules/lodash/mapValues.js.map +1 -0
- package/dist/node_modules/lodash/max.js +17 -0
- package/dist/node_modules/lodash/max.js.map +1 -0
- package/dist/node_modules/lodash/maxBy.js +17 -0
- package/dist/node_modules/lodash/maxBy.js.map +1 -0
- package/dist/node_modules/lodash/memoize.js +22 -0
- package/dist/node_modules/lodash/memoize.js.map +1 -0
- package/dist/node_modules/lodash/min.js +17 -0
- package/dist/node_modules/lodash/min.js.map +1 -0
- package/dist/node_modules/lodash/minBy.js +17 -0
- package/dist/node_modules/lodash/minBy.js.map +1 -0
- package/dist/node_modules/lodash/noop.js +11 -0
- package/dist/node_modules/lodash/noop.js.map +1 -0
- package/dist/node_modules/lodash/now.js +14 -0
- package/dist/node_modules/lodash/now.js.map +1 -0
- package/dist/node_modules/lodash/property.js +18 -0
- package/dist/node_modules/lodash/property.js.map +1 -0
- package/dist/node_modules/lodash/range.js +11 -0
- package/dist/node_modules/lodash/range.js.map +1 -0
- package/dist/node_modules/lodash/some.js +20 -0
- package/dist/node_modules/lodash/some.js.map +1 -0
- package/dist/node_modules/lodash/sortBy.js +19 -0
- package/dist/node_modules/lodash/sortBy.js.map +1 -0
- package/dist/node_modules/lodash/stubArray.js +13 -0
- package/dist/node_modules/lodash/stubArray.js.map +1 -0
- package/dist/node_modules/lodash/stubFalse.js +13 -0
- package/dist/node_modules/lodash/stubFalse.js.map +1 -0
- package/dist/node_modules/lodash/throttle.js +22 -0
- package/dist/node_modules/lodash/throttle.js.map +1 -0
- package/dist/node_modules/lodash/toFinite.js +15 -0
- package/dist/node_modules/lodash/toFinite.js.map +1 -0
- package/dist/node_modules/lodash/toInteger.js +16 -0
- package/dist/node_modules/lodash/toInteger.js.map +1 -0
- package/dist/node_modules/lodash/toNumber.js +26 -0
- package/dist/node_modules/lodash/toNumber.js.map +1 -0
- package/dist/node_modules/lodash/toString.js +15 -0
- package/dist/node_modules/lodash/toString.js.map +1 -0
- package/dist/node_modules/lodash/uniqBy.js +16 -0
- package/dist/node_modules/lodash/uniqBy.js.map +1 -0
- package/dist/node_modules/lodash/upperFirst.js +11 -0
- package/dist/node_modules/lodash/upperFirst.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.js +109 -0
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.js +132 -0
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.js +86 -0
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.js +30 -0
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.js +12 -0
- package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.js +15 -0
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.js +34 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.js +24 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.js +168 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.js +11 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.js +18 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.js +11 -0
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.js +47 -0
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.js +56 -0
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.js +28 -0
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.js +23 -0
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.js +63 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.js +69 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.js +20 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.js +38 -0
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.js +24 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.js +20 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.js +27 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.js +29 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-animatable.js +7 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-animatable.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.js +21 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.js +18 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.js +15 -0
- package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.js +13 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.js +37 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.js +27 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.js +26 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.js +11 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.js +19 -0
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.js +32 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/frame.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/frame.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/microtask.js +7 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/microtask.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/order.js +15 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/order.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.js +35 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.js +17 -0
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.js +12 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js +13 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.js +38 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js +35 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.js +23 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js +30 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/state.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/state.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.js +18 -0
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.js +31 -0
- package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.js +41 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/copy.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/copy.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.js +45 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.js +32 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.js +31 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/models.js +20 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/models.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/utils.js +30 -0
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/utils.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.js +15 -0
- package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.js +24 -0
- package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js +590 -0
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/node/state.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/projection/node/state.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.js +53 -0
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.js +15 -0
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.js +15 -0
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.js +23 -0
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/each-axis.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/each-axis.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/flat-tree.js +21 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/flat-tree.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.js +20 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/Feature.js +11 -0
- package/dist/node_modules/motion-dom/dist/es/render/Feature.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.js +206 -0
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.js +30 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/is-css-var.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/is-css-var.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.js +58 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/style-set.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/style-set.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.js +37 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-styles.js +30 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-styles.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.js +37 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.js +13 -0
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/store.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/render/store.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.js +42 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.js +24 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.js +30 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.js +17 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/render.js +12 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/render.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.js +16 -0
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.js +137 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.js +21 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-variant-label.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-variant-label.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-position.js +15 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-position.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.js +24 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/motion-values.js +23 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/motion-values.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.js +13 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.js +22 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.js +22 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/shallow-compare.js +12 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/shallow-compare.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.js +39 -0
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.js +24 -0
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/resize/index.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/resize/index.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/stats/animation-count.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/stats/animation-count.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/stats/buffer.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/stats/buffer.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/delay.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/utils/delay.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.js +35 -0
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/is-html-element.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/utils/is-html-element.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-element.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-element.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.js +32 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.js +54 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/immediate.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/immediate.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/index.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/index.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/number.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/number.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/visibility.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/utils/mix/visibility.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js +16 -0
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/supports/flags.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/utils/supports/flags.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js +11 -0
- package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.js +7 -0
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/index.js +94 -0
- package/dist/node_modules/motion-dom/dist/es/value/index.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/auto.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/auto.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.js +21 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.js +23 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.js +17 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.js +17 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.js +18 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.js +28 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.js +54 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.js +16 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/dimensions.js +18 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/dimensions.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/int.js +10 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/int.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/defaults.js +26 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/defaults.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/number.js +66 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/number.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/transform.js +33 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/transform.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/index.js +17 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/index.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/units.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/units.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/test.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/test.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/color-regex.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/color-regex.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.js +14 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/float-regex.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/float-regex.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.js +8 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/sanitize.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/sanitize.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/utils/is-motion-value.js +6 -0
- package/dist/node_modules/motion-dom/dist/es/value/utils/is-motion-value.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/will-change/add-will-change.js +15 -0
- package/dist/node_modules/motion-dom/dist/es/value/will-change/add-will-change.js.map +1 -0
- package/dist/node_modules/motion-dom/dist/es/value/will-change/is.js +9 -0
- package/dist/node_modules/motion-dom/dist/es/value/will-change/is.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/array.js +12 -0
- package/dist/node_modules/motion-utils/dist/es/array.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/clamp.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/clamp.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/anticipate.js +7 -0
- package/dist/node_modules/motion-utils/dist/es/easing/anticipate.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/back.js +9 -0
- package/dist/node_modules/motion-utils/dist/es/easing/back.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/circ.js +8 -0
- package/dist/node_modules/motion-utils/dist/es/easing/circ.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.js +19 -0
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/ease.js +7 -0
- package/dist/node_modules/motion-utils/dist/es/easing/ease.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/mirror.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/mirror.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/reverse.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/reverse.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.js +33 -0
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/errors.js +12 -0
- package/dist/node_modules/motion-utils/dist/es/errors.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/format-error-message.js +8 -0
- package/dist/node_modules/motion-utils/dist/es/format-error-message.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/global-config.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/global-config.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/is-numerical-string.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/is-numerical-string.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/is-object.js +8 -0
- package/dist/node_modules/motion-utils/dist/es/is-object.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/is-zero-value-string.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/is-zero-value-string.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/memo.js +10 -0
- package/dist/node_modules/motion-utils/dist/es/memo.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/noop.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/noop.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/pipe.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/pipe.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/progress.js +9 -0
- package/dist/node_modules/motion-utils/dist/es/progress.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/subscription-manager.js +28 -0
- package/dist/node_modules/motion-utils/dist/es/subscription-manager.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/time-conversion.js +6 -0
- package/dist/node_modules/motion-utils/dist/es/time-conversion.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/velocity-per-second.js +8 -0
- package/dist/node_modules/motion-utils/dist/es/velocity-per-second.js.map +1 -0
- package/dist/node_modules/motion-utils/dist/es/warn-once.js +10 -0
- package/dist/node_modules/motion-utils/dist/es/warn-once.js.map +1 -0
- package/dist/node_modules/object-assign/index.js +41 -0
- package/dist/node_modules/object-assign/index.js.map +1 -0
- package/dist/node_modules/prop-types/checkPropTypes.js +46 -0
- package/dist/node_modules/prop-types/checkPropTypes.js.map +1 -0
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js +49 -0
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +1 -0
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +272 -0
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +1 -0
- package/dist/node_modules/prop-types/index.js +16 -0
- package/dist/node_modules/prop-types/index.js.map +1 -0
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +10 -0
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +1 -0
- package/dist/node_modules/prop-types/lib/has.js +10 -0
- package/dist/node_modules/prop-types/lib/has.js.map +1 -0
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +84 -0
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +1 -0
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +64 -0
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +1 -0
- package/dist/node_modules/prop-types/node_modules/react-is/index.js +12 -0
- package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +1 -0
- package/dist/node_modules/react-is/cjs/react-is.development.js +87 -0
- package/dist/node_modules/react-is/cjs/react-is.development.js.map +1 -0
- package/dist/node_modules/react-is/cjs/react-is.production.min.js +65 -0
- package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +1 -0
- package/dist/node_modules/react-is/index.js +12 -0
- package/dist/node_modules/react-is/index.js.map +1 -0
- package/dist/node_modules/react-smooth/es6/Animate.js +374 -0
- package/dist/node_modules/react-smooth/es6/Animate.js.map +1 -0
- package/dist/node_modules/react-smooth/es6/AnimateManager.js +73 -0
- package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +1 -0
- package/dist/node_modules/react-smooth/es6/configUpdate.js +173 -0
- package/dist/node_modules/react-smooth/es6/configUpdate.js.map +1 -0
- package/dist/node_modules/react-smooth/es6/easing.js +152 -0
- package/dist/node_modules/react-smooth/es6/easing.js.map +1 -0
- package/dist/node_modules/react-smooth/es6/index.js +9 -0
- package/dist/node_modules/react-smooth/es6/index.js.map +1 -0
- package/dist/node_modules/react-smooth/es6/setRafTimeout.js +14 -0
- package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +1 -0
- package/dist/node_modules/react-smooth/es6/util.js +92 -0
- package/dist/node_modules/react-smooth/es6/util.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/Area.js +435 -0
- package/dist/node_modules/recharts/es6/cartesian/Area.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/Bar.js +387 -0
- package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/Brush.js +499 -0
- package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js +338 -0
- package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js +243 -0
- package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js +173 -0
- package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js +178 -0
- package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js +254 -0
- package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/XAxis.js +144 -0
- package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/YAxis.js +143 -0
- package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js +18 -0
- package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +1 -0
- package/dist/node_modules/recharts/es6/cartesian/getTicks.js +121 -0
- package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +1 -0
- package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js +101 -0
- package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +1 -0
- package/dist/node_modules/recharts/es6/chart/AreaChart.js +22 -0
- package/dist/node_modules/recharts/es6/chart/AreaChart.js.map +1 -0
- package/dist/node_modules/recharts/es6/chart/BarChart.js +24 -0
- package/dist/node_modules/recharts/es6/chart/BarChart.js.map +1 -0
- package/dist/node_modules/recharts/es6/chart/PieChart.js +34 -0
- package/dist/node_modules/recharts/es6/chart/PieChart.js.map +1 -0
- package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js +1245 -0
- package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/Cell.js +9 -0
- package/dist/node_modules/recharts/es6/component/Cell.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/Cursor.js +93 -0
- package/dist/node_modules/recharts/es6/component/Cursor.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js +237 -0
- package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js +171 -0
- package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/Label.js +353 -0
- package/dist/node_modules/recharts/es6/component/Label.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/LabelList.js +166 -0
- package/dist/node_modules/recharts/es6/component/LabelList.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/Legend.js +234 -0
- package/dist/node_modules/recharts/es6/component/Legend.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js +187 -0
- package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/Text.js +225 -0
- package/dist/node_modules/recharts/es6/component/Text.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/Tooltip.js +182 -0
- package/dist/node_modules/recharts/es6/component/Tooltip.js.map +1 -0
- package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js +198 -0
- package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +1 -0
- package/dist/node_modules/recharts/es6/container/Layer.js +40 -0
- package/dist/node_modules/recharts/es6/container/Layer.js.map +1 -0
- package/dist/node_modules/recharts/es6/container/Surface.js +60 -0
- package/dist/node_modules/recharts/es6/container/Surface.js.map +1 -0
- package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +46 -0
- package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +1 -0
- package/dist/node_modules/recharts/es6/polar/Pie.js +435 -0
- package/dist/node_modules/recharts/es6/polar/Pie.js.map +1 -0
- package/dist/node_modules/recharts/es6/polar/PolarAngleAxis.js +215 -0
- package/dist/node_modules/recharts/es6/polar/PolarAngleAxis.js.map +1 -0
- package/dist/node_modules/recharts/es6/polar/PolarRadiusAxis.js +268 -0
- package/dist/node_modules/recharts/es6/polar/PolarRadiusAxis.js.map +1 -0
- package/dist/node_modules/recharts/es6/shape/Cross.js +112 -0
- package/dist/node_modules/recharts/es6/shape/Cross.js.map +1 -0
- package/dist/node_modules/recharts/es6/shape/Curve.js +136 -0
- package/dist/node_modules/recharts/es6/shape/Curve.js.map +1 -0
- package/dist/node_modules/recharts/es6/shape/Dot.js +27 -0
- package/dist/node_modules/recharts/es6/shape/Dot.js.map +1 -0
- package/dist/node_modules/recharts/es6/shape/Polygon.js +112 -0
- package/dist/node_modules/recharts/es6/shape/Polygon.js.map +1 -0
- package/dist/node_modules/recharts/es6/shape/Rectangle.js +205 -0
- package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +1 -0
- package/dist/node_modules/recharts/es6/shape/Sector.js +192 -0
- package/dist/node_modules/recharts/es6/shape/Sector.js.map +1 -0
- package/dist/node_modules/recharts/es6/shape/Symbols.js +143 -0
- package/dist/node_modules/recharts/es6/shape/Symbols.js.map +1 -0
- package/dist/node_modules/recharts/es6/shape/Trapezoid.js +175 -0
- package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js +181 -0
- package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/BarUtils.js +112 -0
- package/dist/node_modules/recharts/es6/util/BarUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/CartesianUtils.js +234 -0
- package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/ChartUtils.js +554 -0
- package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js +70 -0
- package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/DOMUtils.js +108 -0
- package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/DataUtils.js +57 -0
- package/dist/node_modules/recharts/es6/util/DataUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js +58 -0
- package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/Events.js +7 -0
- package/dist/node_modules/recharts/es6/util/Events.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/Global.js +21 -0
- package/dist/node_modules/recharts/es6/util/Global.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js +9 -0
- package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/LogUtils.js +15 -0
- package/dist/node_modules/recharts/es6/util/LogUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/PolarUtils.js +198 -0
- package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/ReactUtils.js +137 -0
- package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js +181 -0
- package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/ShallowEqual.js +10 -0
- package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/TickUtils.js +31 -0
- package/dist/node_modules/recharts/es6/util/TickUtils.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/calculateViewBox.js +25 -0
- package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js +23 -0
- package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js +16 -0
- package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js +17 -0
- package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js +12 -0
- package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/getLegendProps.js +88 -0
- package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js +13 -0
- package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js +12 -0
- package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/tooltip/translate.js +87 -0
- package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +1 -0
- package/dist/node_modules/recharts/es6/util/types.js +43 -0
- package/dist/node_modules/recharts/es6/util/types.js.map +1 -0
- package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js +132 -0
- package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +1 -0
- package/dist/node_modules/recharts-scale/es6/index.js +1 -0
- package/dist/node_modules/recharts-scale/es6/util/arithmetic.js +32 -0
- package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +1 -0
- package/dist/node_modules/recharts-scale/es6/util/utils.js +79 -0
- package/dist/node_modules/recharts-scale/es6/util/utils.js.map +1 -0
- package/dist/node_modules/sonner/dist/index.js +163 -0
- package/dist/node_modules/sonner/dist/index.js.map +1 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +1716 -0
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -0
- package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +13 -0
- package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +1 -0
- package/dist/node_modules/victory-vendor/es/d3-scale.js +53 -0
- package/dist/node_modules/victory-vendor/es/d3-scale.js.map +1 -0
- package/package.json +3 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ReportsPage.js","names":[],"sources":["../../../src/brainyrich/pages/ReportsPage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n CardDescription,\n Button,\n Badge,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n Tabs,\n TabsList,\n TabsTrigger,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from '@burdenoff/fe-libs/ui';\nimport {\n FileText,\n Printer,\n Download,\n Wallet,\n Layers,\n Receipt,\n ChevronDown,\n} from 'lucide-react';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { tWithFallback } from '../utils/i18n';\nimport {\n useNetWorthSummary,\n usePortfolios,\n useTransactions,\n} from '../hooks/useBrainyRichApi';\nimport type { BraHolding, BraTransaction } from '../types/bra';\nimport {\n SectionShell,\n KpiGrid,\n AllocationBars,\n EmptyState,\n LoadingState,\n ErrorState,\n formatMoney,\n formatDate,\n deltaToneClass,\n type KpiItem,\n type AllocationDatum,\n} from './_shared';\n\ntype Translate = (key: string, fallback: string, params?: Record<string, string | number>) => string;\n\ntype StatementView = 'networth' | 'holdings' | 'transactions';\n\n// ============================================================================\n// CSV helpers — client-side export built from REAL rows only\n// ============================================================================\n\nfunction toCsv(headers: string[], rows: (string | number)[][]): string {\n const escape = (cell: string | number) => {\n const s = String(cell ?? '');\n return /[\",\\n]/.test(s) ? `\"${s.replace(/\"/g, '\"\"')}\"` : s;\n };\n return [headers, ...rows].map((row) => row.map(escape).join(',')).join('\\n');\n}\n\nfunction downloadCsv(filename: string, csv: string) {\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n}\n\n// ============================================================================\n// Reports page — real, generatable statement views (net worth / holdings / ledger)\n// ============================================================================\n\nexport function ReportsPage() {\n const { t } = useI18n();\n const translate: Translate = (key, fallback, params) => tWithFallback(t, key, fallback, params);\n\n const [view, setView] = useState<StatementView>('networth');\n\n const summaryQuery = useNetWorthSummary();\n const portfoliosQuery = usePortfolios();\n const transactionsQuery = useTransactions();\n\n const summary = summaryQuery.data;\n const currency = summary?.currency ?? 'USD';\n\n // Holdings schedule: flatten every holding across the user's portfolios.\n const holdings: BraHolding[] = useMemo(() => {\n const rows = portfoliosQuery.data.flatMap((portfolio) => portfolio.holdings ?? []);\n return rows.slice().sort((a, b) => b.marketValue - a.marketValue);\n }, [portfoliosQuery.data]);\n\n const transactions: BraTransaction[] = useMemo(\n () =>\n transactionsQuery.data\n .slice()\n .sort((a, b) => new Date(b.tradeDate).getTime() - new Date(a.tradeDate).getTime()),\n [transactionsQuery.data]\n );\n\n const kpis: KpiItem[] = summary\n ? [\n {\n label: translate('brainyrich.reports.kpis.netWorth', 'Net Worth'),\n value: formatMoney(summary.totalNetWorth, currency),\n },\n {\n label: translate('brainyrich.reports.kpis.marketValue', 'Invested Value'),\n value: formatMoney(summary.totalMarketValue, currency),\n },\n {\n label: translate('brainyrich.reports.kpis.holdings', 'Holdings on Schedule'),\n value: String(holdings.length),\n },\n {\n label: translate('brainyrich.reports.kpis.transactions', 'Ledger Entries'),\n value: String(transactions.length),\n },\n ]\n : [\n {\n label: translate('brainyrich.reports.kpis.holdings', 'Holdings on Schedule'),\n value: String(holdings.length),\n },\n {\n label: translate('brainyrich.reports.kpis.transactions', 'Ledger Entries'),\n value: String(transactions.length),\n },\n ];\n\n // Primary \"Print / Export\" action for the currently selected statement.\n const exportCurrent = () => {\n if (view === 'networth') {\n if (!summary) return;\n const headers = ['Metric', 'Amount', 'Currency'];\n const rows: (string | number)[][] = [\n ['Total Net Worth', summary.totalNetWorth, currency],\n ['Total Market Value', summary.totalMarketValue, currency],\n ['Total Cash', summary.totalCash, currency],\n ['Account Count', summary.accountCount, ''],\n ...summary.byAssetClass.map((row) => [\n `Asset Class: ${row.assetClass.replace(/_/g, ' ')}`,\n row.marketValue,\n currency,\n ]),\n ];\n downloadCsv('brainyrich-net-worth-statement.csv', toCsv(headers, rows));\n return;\n }\n if (view === 'holdings') {\n const headers = ['Symbol', 'Name', 'Asset Class', 'Quantity', 'Cost Basis', 'Market Value', 'Currency'];\n const rows = holdings.map((h) => [\n h.symbol,\n h.name ?? '',\n h.assetClass.replace(/_/g, ' '),\n h.quantity,\n h.costBasis,\n h.marketValue,\n h.currency,\n ]);\n downloadCsv('brainyrich-holdings-schedule.csv', toCsv(headers, rows));\n return;\n }\n const headers = ['Trade Date', 'Type', 'Symbol', 'Quantity', 'Price', 'Amount', 'Fee', 'Currency'];\n const rows = transactions.map((tx) => [\n formatDate(tx.tradeDate),\n tx.type,\n tx.symbol ?? '',\n tx.quantity,\n tx.price,\n tx.amount,\n tx.fee,\n tx.currency,\n ]);\n downloadCsv('brainyrich-transaction-ledger.csv', toCsv(headers, rows));\n };\n\n return (\n <SectionShell\n title={translate('brainyrich.reports.title', 'Reports & Statements')}\n description={translate(\n 'brainyrich.reports.description',\n 'Generate statements directly from your live portfolio data — no fabricated schedules.'\n )}\n actions={\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button size=\"sm\">\n <Download className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.actions.export', 'Print / Export')}\n <ChevronDown className=\"size-4\" aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onSelect={exportCurrent}>\n <Download className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.actions.downloadCsv', 'Download CSV')}\n </DropdownMenuItem>\n <DropdownMenuItem onSelect={() => window.print()}>\n <Printer className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.actions.print', 'Print statement')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n }\n >\n <KpiGrid items={kpis} />\n\n <Tabs value={view} onValueChange={(value) => setView(value as StatementView)}>\n <TabsList>\n <TabsTrigger value=\"networth\">\n <Wallet className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.tabs.netWorth', 'Net Worth')}\n </TabsTrigger>\n <TabsTrigger value=\"holdings\">\n <Layers className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.tabs.holdings', 'Holdings')}\n </TabsTrigger>\n <TabsTrigger value=\"transactions\">\n <Receipt className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.tabs.ledger', 'Ledger')}\n </TabsTrigger>\n </TabsList>\n </Tabs>\n\n {view === 'networth' ? (\n <NetWorthStatement\n query={summaryQuery}\n translate={translate}\n />\n ) : view === 'holdings' ? (\n <HoldingsSchedule query={portfoliosQuery} holdings={holdings} translate={translate} />\n ) : (\n <TransactionLedger query={transactionsQuery} transactions={transactions} translate={translate} />\n )}\n </SectionShell>\n );\n}\n\n// ============================================================================\n// Net-worth statement\n// ============================================================================\n\nfunction NetWorthStatement({\n query,\n translate,\n}: {\n query: ReturnType<typeof useNetWorthSummary>;\n translate: Translate;\n}) {\n const summary = query.data;\n const currency = summary?.currency ?? 'USD';\n\n const allocation: AllocationDatum[] = useMemo(() => {\n if (!summary) return [];\n const total = summary.byAssetClass.reduce((sum, row) => sum + row.marketValue, 0);\n if (total <= 0) return [];\n return summary.byAssetClass\n .slice()\n .sort((a, b) => b.marketValue - a.marketValue)\n .map((row) => ({\n label: row.assetClass.replace(/_/g, ' '),\n value: (row.marketValue / total) * 100,\n caption: formatMoney(row.marketValue, currency),\n }));\n }, [summary, currency]);\n\n return (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Wallet className=\"size-5\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.netWorth.title', 'Net Worth Statement')}\n </CardTitle>\n <CardDescription>\n {translate(\n 'brainyrich.reports.netWorth.description',\n 'Consolidated assets, cash, and asset-class allocation as of today.'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n {query.isLoading ? (\n <LoadingState rows={3} />\n ) : query.isError ? (\n <ErrorState onRetry={() => query.refetch()} />\n ) : summary ? (\n <div className=\"space-y-6\">\n <div className=\"grid gap-4 sm:grid-cols-3\">\n <StatementLine\n label={translate('brainyrich.reports.netWorth.total', 'Total Net Worth')}\n value={formatMoney(summary.totalNetWorth, currency)}\n emphasis\n />\n <StatementLine\n label={translate('brainyrich.reports.netWorth.invested', 'Invested Value')}\n value={formatMoney(summary.totalMarketValue, currency)}\n />\n <StatementLine\n label={translate('brainyrich.reports.netWorth.cash', 'Cash & Liquidity')}\n value={formatMoney(summary.totalCash, currency)}\n />\n </div>\n\n <div className=\"space-y-3\">\n <p className=\"text-sm font-medium text-text-primary\">\n {translate('brainyrich.reports.netWorth.allocation', 'Allocation by Asset Class')}\n </p>\n {allocation.length > 0 ? (\n <AllocationBars data={allocation} />\n ) : (\n <p className=\"text-sm text-text-secondary\">\n {translate(\n 'brainyrich.reports.netWorth.noAllocation',\n 'No holdings to allocate yet.'\n )}\n </p>\n )}\n </div>\n </div>\n ) : (\n <EmptyState\n icon={<Wallet className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.reports.netWorth.emptyTitle', 'No net-worth data yet')}\n description={translate(\n 'brainyrich.reports.netWorth.emptyDesc',\n 'Link an account and add holdings to generate a net-worth statement.'\n )}\n />\n )}\n </CardContent>\n </Card>\n );\n}\n\nfunction StatementLine({\n label,\n value,\n emphasis,\n}: {\n label: string;\n value: string;\n emphasis?: boolean;\n}) {\n return (\n <div className=\"rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <p className=\"text-xs text-text-secondary\">{label}</p>\n <p\n className={\n emphasis\n ? 'mt-1 text-2xl font-semibold text-text-primary'\n : 'mt-1 text-xl font-semibold text-text-primary'\n }\n >\n {value}\n </p>\n </div>\n );\n}\n\n// ============================================================================\n// Holdings schedule\n// ============================================================================\n\nfunction HoldingsSchedule({\n query,\n holdings,\n translate,\n}: {\n query: ReturnType<typeof usePortfolios>;\n holdings: BraHolding[];\n translate: Translate;\n}) {\n return (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Layers className=\"size-5\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.holdings.title', 'Holdings Schedule')}\n </CardTitle>\n <CardDescription>\n {translate(\n 'brainyrich.reports.holdings.description',\n 'Every position across your portfolios with cost basis and market value.'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n {query.isLoading ? (\n <LoadingState rows={4} />\n ) : query.isError ? (\n <ErrorState onRetry={() => query.refetch()} />\n ) : holdings.length > 0 ? (\n <div className=\"overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{translate('brainyrich.reports.holdings.symbol', 'Symbol')}</TableHead>\n <TableHead>{translate('brainyrich.reports.holdings.assetClass', 'Asset Class')}</TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.quantity', 'Quantity')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.costBasis', 'Cost Basis')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.marketValue', 'Market Value')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.gainLoss', 'Unrealized')}\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {holdings.map((holding) => {\n const gain = holding.marketValue - holding.costBasis;\n return (\n <TableRow key={holding.id}>\n <TableCell>\n <div className=\"font-medium text-text-primary\">{holding.symbol}</div>\n {holding.name ? (\n <div className=\"text-xs text-text-secondary\">{holding.name}</div>\n ) : null}\n </TableCell>\n <TableCell>\n <Badge variant=\"outline\">{holding.assetClass.replace(/_/g, ' ')}</Badge>\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {holding.quantity}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(holding.costBasis, holding.currency)}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(holding.marketValue, holding.currency)}\n </TableCell>\n <TableCell className={`text-right tabular-nums font-medium ${deltaToneClass(gain)}`}>\n {gain > 0 ? '+' : ''}\n {formatMoney(gain, holding.currency)}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n ) : (\n <EmptyState\n icon={<Layers className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.reports.holdings.emptyTitle', 'No holdings on file')}\n description={translate(\n 'brainyrich.reports.holdings.emptyDesc',\n 'Add holdings to your portfolios to generate a holdings schedule.'\n )}\n />\n )}\n </CardContent>\n </Card>\n );\n}\n\n// ============================================================================\n// Transaction ledger\n// ============================================================================\n\nfunction TransactionLedger({\n query,\n transactions,\n translate,\n}: {\n query: ReturnType<typeof useTransactions>;\n transactions: BraTransaction[];\n translate: Translate;\n}) {\n return (\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Receipt className=\"size-5\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.ledger.title', 'Transaction Ledger')}\n </CardTitle>\n <CardDescription>\n {translate(\n 'brainyrich.reports.ledger.description',\n 'Every recorded transaction across your accounts, newest first.'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n {query.isLoading ? (\n <LoadingState rows={4} />\n ) : query.isError ? (\n <ErrorState onRetry={() => query.refetch()} />\n ) : transactions.length > 0 ? (\n <div className=\"overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>{translate('brainyrich.reports.ledger.date', 'Trade Date')}</TableHead>\n <TableHead>{translate('brainyrich.reports.ledger.type', 'Type')}</TableHead>\n <TableHead>{translate('brainyrich.reports.ledger.symbol', 'Symbol')}</TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.ledger.quantity', 'Quantity')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.ledger.price', 'Price')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.ledger.amount', 'Amount')}\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {transactions.map((tx) => (\n <TableRow key={tx.id}>\n <TableCell className=\"text-text-primary\">{formatDate(tx.tradeDate)}</TableCell>\n <TableCell>\n <Badge variant=\"outline\">{tx.type}</Badge>\n </TableCell>\n <TableCell className=\"text-text-primary\">{tx.symbol ?? '—'}</TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {tx.quantity}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(tx.price, tx.currency)}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(tx.amount, tx.currency)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n ) : (\n <EmptyState\n icon={<FileText className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.reports.ledger.emptyTitle', 'No transactions recorded')}\n description={translate(\n 'brainyrich.reports.ledger.emptyDesc',\n 'Record transactions on your accounts to build a ledger statement.'\n )}\n />\n )}\n </CardContent>\n </Card>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ReportsPage.js","names":[],"sources":["../../../src/brainyrich/pages/ReportsPage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport { useQuery } from '@tanstack/react-query';\nimport {\n Card,\n CardContent,\n CardHeader,\n CardTitle,\n CardDescription,\n Button,\n Badge,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n Tabs,\n TabsList,\n TabsTrigger,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n Skeleton,\n} from '@burdenoff/fe-libs/ui';\nimport {\n FileText,\n Printer,\n Download,\n Wallet,\n Layers,\n Receipt,\n ChevronDown,\n Users,\n Target,\n TrendingUp,\n} from 'lucide-react';\nimport { graphqlFetch } from '@burdenoff/fe-libs/shared/graphql';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport { tWithFallback } from '../utils/i18n';\nimport { useBrainyRich } from '../providers/BrainyRichProvider';\nimport {\n useNetWorthSummary,\n useAllTransactions,\n fetchAllAccounts,\n useHouseholds,\n useAccounts,\n useGoals,\n useGoalFundings,\n} from '../hooks/useBrainyRichApi';\nimport type {\n BraHolding,\n BraTransaction,\n BraHousehold,\n BraAccount,\n BraGoal,\n BraGoalProjection,\n BraTransactionType,\n} from '../types/bra';\nimport {\n SectionShell,\n EmptyState,\n LoadingState,\n ErrorState,\n formatMoney,\n formatCompact,\n formatDate,\n deltaToneClass,\n statusBadgeVariant,\n} from './_shared';\nimport {\n DonutChart,\n StatTile,\n TrendBars,\n Sparkline,\n ProgressRing,\n GlassCard,\n FadeIn,\n type VizTone,\n} from '../components/viz';\n\ntype Translate = (\n key: string,\n fallback: string,\n params?: Record<string, string | number>\n) => string;\n\ntype StatementView = 'networth' | 'holdings' | 'transactions' | 'statement';\n\n/** Minimal read-query surface the statement sub-cards need for their states. */\ninterface QueryStatus {\n isLoading: boolean;\n isError: boolean;\n refetch: () => void;\n}\n\n// ============================================================================\n// Asset-class presentation (labels + semantic tones) — display only\n// ============================================================================\n\nconst ASSET_CLASS_LABEL: Record<string, string> = {\n EQUITY: 'Equity',\n FIXED_INCOME: 'Fixed Income',\n CASH: 'Cash',\n REAL_ESTATE: 'Real Estate',\n COMMODITY: 'Commodity',\n CRYPTO: 'Crypto',\n ALTERNATIVE: 'Alternatives',\n};\n\nconst ASSET_CLASS_TONE: Record<string, VizTone> = {\n EQUITY: 'brand',\n FIXED_INCOME: 'blue',\n CASH: 'teal',\n REAL_ESTATE: 'warning',\n COMMODITY: 'indigo',\n CRYPTO: 'purple',\n ALTERNATIVE: 'info',\n};\n\nfunction assetClassLabel(ac: string): string {\n return ASSET_CLASS_LABEL[ac] ?? ac.replace(/_/g, ' ');\n}\n\n// ============================================================================\n// Cash-flow derivation — REAL ledger rows bucketed by month\n// ----------------------------------------------------------------------------\n// Inflow = money arriving (deposits, dividends, interest, sale proceeds).\n// Outflow = money leaving (withdrawals, fees, buys). TRANSFER is treated as\n// balance-neutral. Every value comes straight from recorded transactions.\n// ============================================================================\n\nconst INFLOW_TYPES: BraTransactionType[] = ['DEPOSIT', 'DIVIDEND', 'INTEREST', 'SELL'];\nconst OUTFLOW_TYPES: BraTransactionType[] = ['WITHDRAWAL', 'FEE', 'BUY'];\n\nfunction monthKey(iso: string): string | null {\n const d = new Date(iso);\n if (Number.isNaN(d.getTime())) return null;\n return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}`;\n}\n\nfunction monthLabel(key: string): string {\n const [y, m] = key.split('-').map(Number);\n return new Intl.DateTimeFormat('en-US', { month: 'short' }).format(new Date(y, m - 1, 1));\n}\n\ninterface CashflowDatum {\n label: string;\n inflow: number;\n outflow: number;\n}\n\nfunction buildCashflow(\n txns: BraTransaction[],\n months = 6\n): { bars: CashflowDatum[]; netSeries: number[] } {\n const map = new Map<string, { inflow: number; outflow: number }>();\n for (const t of txns) {\n const k = monthKey(t.tradeDate);\n if (!k) continue;\n const bucket = map.get(k) ?? { inflow: 0, outflow: 0 };\n const amt = Math.abs(t.amount);\n if (INFLOW_TYPES.includes(t.type)) bucket.inflow += amt;\n else if (OUTFLOW_TYPES.includes(t.type)) bucket.outflow += amt;\n map.set(k, bucket);\n }\n const recent = Array.from(map.keys()).sort().slice(-months);\n const bars = recent.map((k) => {\n const b = map.get(k)!;\n return { label: monthLabel(k), inflow: b.inflow, outflow: b.outflow };\n });\n let run = 0;\n const netSeries = recent.map((k) => {\n const b = map.get(k)!;\n run += b.inflow - b.outflow;\n return run;\n });\n return { bars, netSeries };\n}\n\nfunction cashflowTotals(txns: BraTransaction[]): { inflow: number; outflow: number; net: number } {\n let inflow = 0;\n let outflow = 0;\n for (const t of txns) {\n const a = Math.abs(t.amount);\n if (INFLOW_TYPES.includes(t.type)) inflow += a;\n else if (OUTFLOW_TYPES.includes(t.type)) outflow += a;\n }\n return { inflow, outflow, net: inflow - outflow };\n}\n\n// ============================================================================\n// Statement math — net worth composition for a set of accounts + their holdings\n// ============================================================================\n\ninterface StatementData {\n netWorth: number;\n invested: number;\n cash: number;\n allocation: { label: string; value: number; tone?: VizTone }[];\n /** Per-account total value (cash + holdings) — used to resolve goal funding %. */\n accountValues: Map<string, number>;\n}\n\nfunction computeStatement(accounts: BraAccount[], holdings: BraHolding[]): StatementData {\n const accountValues = new Map<string, number>();\n let cash = 0;\n for (const a of accounts) {\n accountValues.set(a.id, a.cashBalance);\n cash += a.cashBalance;\n }\n let invested = 0;\n const byClass = new Map<string, number>();\n for (const h of holdings) {\n invested += h.marketValue;\n byClass.set(h.assetClass, (byClass.get(h.assetClass) ?? 0) + h.marketValue);\n accountValues.set(h.accountId, (accountValues.get(h.accountId) ?? 0) + h.marketValue);\n }\n const allocation = Array.from(byClass.entries())\n .sort((a, b) => b[1] - a[1])\n .map(([ac, v]) => ({ label: assetClassLabel(ac), value: v, tone: ASSET_CLASS_TONE[ac] }));\n return { netWorth: cash + invested, invested, cash, allocation, accountValues };\n}\n\nfunction projectionTone(p: BraGoalProjection): VizTone {\n switch (p) {\n case 'AHEAD':\n return 'success';\n case 'BEHIND':\n return 'warning';\n case 'AT_RISK':\n return 'error';\n default:\n return 'brand';\n }\n}\n\n// ============================================================================\n// CSV helpers — client-side export built from REAL rows only\n// ============================================================================\n\nfunction toCsv(headers: string[], rows: (string | number)[][]): string {\n const escape = (cell: string | number) => {\n const s = String(cell ?? '');\n return /[\",\\n]/.test(s) ? `\"${s.replace(/\"/g, '\"\"')}\"` : s;\n };\n return [headers, ...rows].map((row) => row.map(escape).join(',')).join('\\n');\n}\n\nfunction downloadCsv(filename: string, csv: string) {\n const blob = new Blob([csv], { type: 'text/csv;charset=utf-8;' });\n const url = URL.createObjectURL(blob);\n const link = document.createElement('a');\n link.href = url;\n link.download = filename;\n document.body.appendChild(link);\n link.click();\n document.body.removeChild(link);\n URL.revokeObjectURL(url);\n}\n\nfunction slugify(name: string): string {\n return (\n name\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, '-')\n .replace(/^-+|-+$/g, '') || 'household'\n );\n}\n\n// ============================================================================\n// Full holdings schedule\n// ----------------------------------------------------------------------------\n// `braListPortfolios`/`braListAccounts` never inline `holdings`, and\n// `braListHoldings` is scoped to a single account/portfolio. To build a\n// COMPLETE holdings schedule (every position, not a truncated first page) we\n// enumerate the full account set via the foundation `fetchAllAccounts` pager,\n// then read each account's holdings (which `braListHoldings` returns in full,\n// un-paginated) and flatten. Real server rows only — no fabrication.\n// ============================================================================\n\nconst HOLDINGS_BY_ACCOUNT_QUERY = `query BraReportHoldings($accountId: ID) {\n braListHoldings(accountId: $accountId) {\n id workspaceId accountId portfolioId symbol name assetClass quantity lastPrice\n costBasis marketValue currency asOf createdAt updatedAt\n }\n}`;\n\nfunction useAllHoldings() {\n const { apiGatewayUrl } = useBrainyRich();\n const query = useQuery({\n queryKey: ['brainyrich', 'holdings', 'report-all'],\n queryFn: async () => {\n const accounts = await fetchAllAccounts(apiGatewayUrl);\n const perAccount = await Promise.all(\n accounts.map(async (account) => {\n const response = await graphqlFetch<{ braListHoldings: BraHolding[] }>({\n gateway: 'workspace',\n baseUrl: apiGatewayUrl,\n query: HOLDINGS_BY_ACCOUNT_QUERY,\n variables: { accountId: account.id },\n workspaceToken: true,\n });\n if (response.errors?.length) {\n throw new Error(response.errors[0]?.message ?? 'Failed to load holdings');\n }\n return response.data?.braListHoldings ?? [];\n })\n );\n return perAccount.flat();\n },\n });\n return { ...query, data: query.data ?? [] };\n}\n\n// ============================================================================\n// Reports page — real, generatable statement views\n// (net worth / holdings / ledger / client statement)\n// ============================================================================\n\nexport function ReportsPage() {\n const { t } = useI18n();\n const translate: Translate = (key, fallback, params) => tWithFallback(t, key, fallback, params);\n\n const [view, setView] = useState<StatementView>('networth');\n const [selectedHouseholdId, setSelectedHouseholdId] = useState<string | undefined>();\n\n const summaryQuery = useNetWorthSummary();\n // Aggregation sources: page through the FULL set so statements + CSV cover\n // every holding and every ledger entry, not a truncated first page.\n const holdingsQuery = useAllHoldings();\n const transactionsQuery = useAllTransactions();\n const householdsQuery = useHouseholds();\n\n const summary = summaryQuery.data;\n const currency = summary?.currency ?? 'USD';\n const households = householdsQuery.data;\n\n // Active household for the Client Statement (defaults to the first one).\n const activeHouseholdId = selectedHouseholdId ?? households[0]?.id;\n const activeHousehold = households.find((h) => h.id === activeHouseholdId);\n\n // Household-scoped sources. React-Query dedupes these against the statement\n // sub-tree, so passing an id here does not double-fetch.\n const householdAccountsQuery = useAccounts({ householdId: activeHouseholdId });\n const householdGoalsQuery = useGoals({ householdId: activeHouseholdId });\n const householdAccounts = householdAccountsQuery.data;\n const householdGoals = householdGoalsQuery.data;\n\n // Holdings schedule: every holding across every account, richest first.\n const holdings: BraHolding[] = useMemo(\n () => holdingsQuery.data.slice().sort((a, b) => b.marketValue - a.marketValue),\n [holdingsQuery.data]\n );\n\n const transactions: BraTransaction[] = useMemo(\n () =>\n transactionsQuery.data\n .slice()\n .sort((a, b) => new Date(b.tradeDate).getTime() - new Date(a.tradeDate).getTime()),\n [transactionsQuery.data]\n );\n\n const cashflow = useMemo(() => buildCashflow(transactions), [transactions]);\n\n // Household slices for the statement (built from already-loaded page data).\n const householdAccountIds = useMemo(\n () => new Set(householdAccounts.map((a) => a.id)),\n [householdAccounts]\n );\n const householdHoldings = useMemo(\n () =>\n holdings.filter((h) => householdAccountIds.has(h.accountId)).slice().sort((a, b) => b.marketValue - a.marketValue),\n [holdings, householdAccountIds]\n );\n const householdTxns = useMemo(\n () => transactions.filter((tx) => householdAccountIds.has(tx.accountId)),\n [transactions, householdAccountIds]\n );\n const statementData = useMemo(\n () => computeStatement(householdAccounts, householdHoldings),\n [householdAccounts, householdHoldings]\n );\n\n // Header KPIs — premium tiles, net worth carrying an emerald glow + a real\n // cumulative net-cash-flow spark (decorative, aria-hidden inside StatTile).\n const holdingsUnrealized = useMemo(\n () => holdings.reduce((sum, h) => sum + (h.marketValue - h.costBasis), 0),\n [holdings]\n );\n\n // Primary \"Print / Export\" action for the currently selected statement.\n // Each branch emits the COMPLETE dataset (full holdings / full ledger).\n const exportCurrent = () => {\n if (view === 'networth') {\n if (!summary) return;\n const headers = ['Metric', 'Amount', 'Currency'];\n const rows: (string | number)[][] = [\n ['Total Net Worth', summary.totalNetWorth, currency],\n ['Total Market Value', summary.totalMarketValue, currency],\n ['Total Cash', summary.totalCash, currency],\n ['Account Count', summary.accountCount, ''],\n ...summary.byAssetClass.map((row) => [\n `Asset Class: ${assetClassLabel(row.assetClass)}`,\n row.marketValue,\n currency,\n ]),\n ];\n downloadCsv('brainyrich-net-worth-statement.csv', toCsv(headers, rows));\n return;\n }\n if (view === 'holdings') {\n const headers = [\n 'Symbol',\n 'Name',\n 'Asset Class',\n 'Quantity',\n 'Cost Basis',\n 'Market Value',\n 'Currency',\n ];\n const rows = holdings.map((h) => [\n h.symbol,\n h.name ?? '',\n assetClassLabel(h.assetClass),\n h.quantity,\n h.costBasis,\n h.marketValue,\n h.currency,\n ]);\n downloadCsv('brainyrich-holdings-schedule.csv', toCsv(headers, rows));\n return;\n }\n if (view === 'statement') {\n if (!activeHousehold) return;\n const cur = activeHousehold.currency ?? currency;\n const headers = ['Section', 'Label', 'Amount', 'Currency'];\n const rows: (string | number)[][] = [\n ['Summary', 'Net Worth', statementData.netWorth, cur],\n ['Summary', 'Invested Value', statementData.invested, cur],\n ['Summary', 'Cash & Liquidity', statementData.cash, cur],\n ...statementData.allocation.map((a) => ['Allocation', a.label, a.value, cur]),\n ...householdHoldings.map((h) => [\n 'Holding',\n `${h.symbol}${h.name ? ` — ${h.name}` : ''}`,\n h.marketValue,\n h.currency,\n ]),\n ...householdGoals.map((g) => ['Goal', g.name, g.targetAmount, g.currency]),\n ];\n downloadCsv(`brainyrich-${slugify(activeHousehold.name)}-statement.csv`, toCsv(headers, rows));\n return;\n }\n const headers = [\n 'Trade Date',\n 'Type',\n 'Symbol',\n 'Quantity',\n 'Price',\n 'Amount',\n 'Fee',\n 'Currency',\n ];\n const rows = transactions.map((tx) => [\n formatDate(tx.tradeDate),\n tx.type,\n tx.symbol ?? '',\n tx.quantity,\n tx.price,\n tx.amount,\n tx.fee,\n tx.currency,\n ]);\n downloadCsv('brainyrich-transaction-ledger.csv', toCsv(headers, rows));\n };\n\n // The export action only produces a file for a statement that actually has\n // rows; disable it while the active statement is still loading / empty.\n const exportDisabled =\n (view === 'networth' && (summaryQuery.isLoading || !summary)) ||\n (view === 'holdings' && (holdingsQuery.isLoading || holdings.length === 0)) ||\n (view === 'transactions' && (transactionsQuery.isLoading || transactions.length === 0)) ||\n (view === 'statement' && (!activeHousehold || householdAccountsQuery.isLoading));\n\n return (\n <SectionShell\n title={translate('brainyrich.reports.title', 'Reports & Statements')}\n description={translate(\n 'brainyrich.reports.description',\n 'Generate statements directly from your live portfolio data — no fabricated schedules.'\n )}\n actions={\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n size=\"sm\"\n disabled={exportDisabled}\n aria-label={translate('brainyrich.reports.actions.export', 'Print / Export')}\n >\n <Download className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.actions.export', 'Print / Export')}\n <ChevronDown className=\"size-4\" aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onSelect={exportCurrent}>\n <Download className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.actions.downloadCsv', 'Download CSV')}\n </DropdownMenuItem>\n <DropdownMenuItem onSelect={() => window.print()}>\n <Printer className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.actions.print', 'Print statement')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n }\n >\n <FadeIn>\n <div className=\"grid gap-4 md:grid-cols-2 xl:grid-cols-4\">\n <StatTile\n label={translate('brainyrich.reports.kpis.netWorth', 'Net Worth')}\n value={summary ? formatMoney(summary.totalNetWorth, currency) : '—'}\n spark={cashflow.netSeries}\n glow\n />\n <StatTile\n label={translate('brainyrich.reports.kpis.marketValue', 'Invested Value')}\n value={summary ? formatMoney(summary.totalMarketValue, currency) : '—'}\n icon={<TrendingUp className=\"size-4\" aria-hidden=\"true\" />}\n />\n <StatTile\n label={translate('brainyrich.reports.kpis.holdings', 'Holdings on Schedule')}\n value={String(holdings.length)}\n icon={<Layers className=\"size-4\" aria-hidden=\"true\" />}\n />\n <StatTile\n label={translate('brainyrich.reports.kpis.transactions', 'Ledger Entries')}\n value={String(transactions.length)}\n icon={<Receipt className=\"size-4\" aria-hidden=\"true\" />}\n />\n </div>\n </FadeIn>\n\n <Tabs value={view} onValueChange={(value) => setView(value as StatementView)}>\n <TabsList>\n <TabsTrigger value=\"networth\">\n <Wallet className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.tabs.netWorth', 'Net Worth')}\n </TabsTrigger>\n <TabsTrigger value=\"holdings\">\n <Layers className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.tabs.holdings', 'Holdings')}\n </TabsTrigger>\n <TabsTrigger value=\"transactions\">\n <Receipt className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.tabs.ledger', 'Ledger')}\n </TabsTrigger>\n <TabsTrigger value=\"statement\">\n <Users className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.tabs.statement', 'Client Statement')}\n </TabsTrigger>\n </TabsList>\n </Tabs>\n\n {view === 'networth' ? (\n <NetWorthStatement\n query={summaryQuery}\n cashflow={cashflow.bars}\n netSeries={cashflow.netSeries}\n translate={translate}\n />\n ) : view === 'holdings' ? (\n <HoldingsSchedule\n query={holdingsQuery}\n holdings={holdings}\n unrealized={holdingsUnrealized}\n translate={translate}\n />\n ) : view === 'transactions' ? (\n <TransactionLedger\n query={transactionsQuery}\n transactions={transactions}\n cashflow={cashflow.bars}\n currency={currency}\n translate={translate}\n />\n ) : (\n <ClientStatementPanel\n householdsQuery={householdsQuery}\n households={households}\n activeHousehold={activeHousehold}\n onSelect={setSelectedHouseholdId}\n accountsQuery={householdAccountsQuery}\n goals={householdGoals}\n holdings={householdHoldings}\n transactions={householdTxns}\n statement={statementData}\n translate={translate}\n />\n )}\n </SectionShell>\n );\n}\n\n// ============================================================================\n// Net-worth statement — hero figure + allocation donut + asset-class schedule\n// ============================================================================\n\nfunction NetWorthStatement({\n query,\n cashflow,\n netSeries,\n translate,\n}: {\n query: ReturnType<typeof useNetWorthSummary>;\n cashflow: CashflowDatum[];\n netSeries: number[];\n translate: Translate;\n}) {\n const summary = query.data;\n const currency = summary?.currency ?? 'USD';\n\n const allocation = useMemo(() => {\n if (!summary) return [];\n return summary.byAssetClass\n .slice()\n .sort((a, b) => b.marketValue - a.marketValue)\n .map((row) => ({\n label: assetClassLabel(row.assetClass),\n value: row.marketValue,\n tone: ASSET_CLASS_TONE[row.assetClass],\n }));\n }, [summary]);\n\n if (query.isLoading) {\n return (\n <Card>\n <CardContent className=\"p-6\">\n <LoadingState rows={3} />\n </CardContent>\n </Card>\n );\n }\n if (query.isError) {\n return (\n <Card>\n <CardContent className=\"p-6\">\n <ErrorState onRetry={() => query.refetch()} />\n </CardContent>\n </Card>\n );\n }\n if (!summary) {\n return (\n <Card>\n <CardContent className=\"p-6\">\n <EmptyState\n icon={<Wallet className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.reports.netWorth.emptyTitle', 'No net-worth data yet')}\n description={translate(\n 'brainyrich.reports.netWorth.emptyDesc',\n 'Link an account and add holdings to generate a net-worth statement.'\n )}\n />\n </CardContent>\n </Card>\n );\n }\n\n const asOf = translate('brainyrich.reports.netWorth.asOf', 'as of {date}', {\n date: formatDate(new Date().toISOString()),\n });\n\n return (\n <div className=\"space-y-6\">\n <div className=\"grid gap-6 lg:grid-cols-[1.1fr_1fr]\">\n {/* Hero net-worth figure with emerald glow + real cumulative-flow spark */}\n <FadeIn>\n <GlassCard glow className=\"h-full\">\n <p className=\"text-xs font-medium uppercase tracking-wide text-text-secondary\">\n {translate('brainyrich.reports.netWorth.title', 'Net Worth Statement')} — {asOf}\n </p>\n <p className=\"mt-2 text-4xl font-semibold tracking-tight text-text-primary\">\n {formatMoney(summary.totalNetWorth, currency)}\n </p>\n <div className=\"mt-3 flex flex-wrap gap-2\">\n <span className=\"inline-flex items-center gap-1 rounded-full bg-bg-sunken px-2.5 py-1 text-xs text-text-secondary\">\n {translate('brainyrich.reports.netWorth.invested', 'Invested')}\n <span className=\"font-medium text-text-primary\">\n {formatMoney(summary.totalMarketValue, currency)}\n </span>\n </span>\n <span className=\"inline-flex items-center gap-1 rounded-full bg-bg-sunken px-2.5 py-1 text-xs text-text-secondary\">\n {translate('brainyrich.reports.netWorth.cash', 'Cash')}\n <span className=\"font-medium text-text-primary\">\n {formatMoney(summary.totalCash, currency)}\n </span>\n </span>\n <span className=\"inline-flex items-center gap-1 rounded-full bg-bg-sunken px-2.5 py-1 text-xs text-text-secondary\">\n {translate('brainyrich.reports.netWorth.accounts', 'Accounts')}\n <span className=\"font-medium text-text-primary\">{summary.accountCount}</span>\n </span>\n </div>\n {netSeries.length > 1 ? (\n <div className=\"mt-5\">\n <p className=\"mb-1 text-[11px] text-text-secondary\">\n {translate(\n 'brainyrich.reports.netWorth.netFlow',\n 'Cumulative net cash flow (recent months)'\n )}\n </p>\n <Sparkline data={netSeries} height={48} />\n </div>\n ) : null}\n </GlassCard>\n </FadeIn>\n\n {/* Allocation donut */}\n <FadeIn index={1}>\n <Card className=\"h-full\">\n <CardHeader>\n <CardTitle className=\"text-base\">\n {translate('brainyrich.reports.netWorth.allocation', 'Allocation by Asset Class')}\n </CardTitle>\n </CardHeader>\n <CardContent>\n {allocation.length > 0 ? (\n <DonutChart\n data={allocation}\n centerLabel={translate('brainyrich.reports.netWorth.invested', 'Invested')}\n centerValue={formatCompact(summary.totalMarketValue, currency)}\n valueFormatter={(v) => formatMoney(v, currency)}\n />\n ) : (\n <p className=\"text-sm text-text-secondary\">\n {translate(\n 'brainyrich.reports.netWorth.noAllocation',\n 'No holdings to allocate yet.'\n )}\n </p>\n )}\n </CardContent>\n </Card>\n </FadeIn>\n </div>\n\n {/* Asset-class schedule (statement table) */}\n <FadeIn index={2}>\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2 text-base\">\n <Wallet className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.netWorth.schedule', 'By Asset Class')}\n </CardTitle>\n </CardHeader>\n <CardContent>\n {allocation.length > 0 ? (\n <div className=\"overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>\n {translate('brainyrich.reports.netWorth.assetClass', 'Asset class')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.netWorth.total', 'Total')}\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {allocation.map((row) => (\n <TableRow\n key={row.label}\n className=\"transition-colors hover:bg-bg-elevated/60\"\n >\n <TableCell className=\"font-medium text-text-primary\">{row.label}</TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(row.value, currency)}\n </TableCell>\n </TableRow>\n ))}\n <TableRow>\n <TableCell className=\"font-semibold text-text-primary\">\n {translate('brainyrich.reports.netWorth.totals', 'Totals')}\n </TableCell>\n <TableCell className=\"text-right font-semibold tabular-nums text-status-success-text\">\n {formatMoney(summary.totalMarketValue, currency)}\n </TableCell>\n </TableRow>\n </TableBody>\n </Table>\n </div>\n ) : (\n <p className=\"text-sm text-text-secondary\">\n {translate(\n 'brainyrich.reports.netWorth.noAllocation',\n 'No holdings to allocate yet.'\n )}\n </p>\n )}\n </CardContent>\n </Card>\n </FadeIn>\n\n {/* Cash flow */}\n {cashflow.length > 0 ? (\n <FadeIn index={3}>\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2 text-base\">\n <TrendingUp className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.cashflow.title', 'Cash Flow')}\n </CardTitle>\n <CardDescription>\n {translate(\n 'brainyrich.reports.cashflow.description',\n 'Inflows and outflows recorded on your ledger, by month.'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n <TrendBars data={cashflow} valueFormatter={(v) => formatCompact(v, currency)} />\n </CardContent>\n </Card>\n </FadeIn>\n ) : null}\n </div>\n );\n}\n\n// ============================================================================\n// Holdings schedule\n// ============================================================================\n\nfunction HoldingsSchedule({\n query,\n holdings,\n unrealized,\n translate,\n}: {\n query: QueryStatus;\n holdings: BraHolding[];\n unrealized: number;\n translate: Translate;\n}) {\n const marketValue = holdings.reduce((sum, h) => sum + h.marketValue, 0);\n const costBasis = holdings.reduce((sum, h) => sum + h.costBasis, 0);\n const currency = holdings[0]?.currency ?? 'USD';\n\n return (\n <div className=\"space-y-6\">\n {!query.isLoading && !query.isError && holdings.length > 0 ? (\n <FadeIn>\n <div className=\"grid gap-4 sm:grid-cols-3\">\n <StatTile\n label={translate('brainyrich.reports.holdings.marketValue', 'Market Value')}\n value={formatMoney(marketValue, currency)}\n glow\n />\n <StatTile\n label={translate('brainyrich.reports.holdings.costBasis', 'Cost Basis')}\n value={formatMoney(costBasis, currency)}\n />\n <StatTile\n label={translate('brainyrich.reports.holdings.gainLoss', 'Unrealized')}\n value={formatMoney(unrealized, currency)}\n delta={costBasis > 0 ? (unrealized / costBasis) * 100 : undefined}\n sparkTone={unrealized >= 0 ? 'success' : 'error'}\n />\n </div>\n </FadeIn>\n ) : null}\n\n <FadeIn index={1}>\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Layers className=\"size-5\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.holdings.title', 'Holdings Schedule')}\n </CardTitle>\n <CardDescription>\n {translate(\n 'brainyrich.reports.holdings.description',\n 'Every position across your portfolios with cost basis and market value.'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n {query.isLoading ? (\n <LoadingState rows={4} />\n ) : query.isError ? (\n <ErrorState onRetry={() => query.refetch()} />\n ) : holdings.length > 0 ? (\n <div className=\"overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>\n {translate('brainyrich.reports.holdings.symbol', 'Symbol')}\n </TableHead>\n <TableHead>\n {translate('brainyrich.reports.holdings.assetClass', 'Asset Class')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.quantity', 'Quantity')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.costBasis', 'Cost Basis')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.marketValue', 'Market Value')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.gainLoss', 'Unrealized')}\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {holdings.map((holding) => {\n const gain = holding.marketValue - holding.costBasis;\n return (\n <TableRow\n key={holding.id}\n className=\"transition-colors hover:bg-bg-elevated/60\"\n >\n <TableCell>\n <div className=\"font-medium text-text-primary\">{holding.symbol}</div>\n {holding.name ? (\n <div className=\"text-xs text-text-secondary\">{holding.name}</div>\n ) : null}\n </TableCell>\n <TableCell>\n <Badge variant=\"outline\">{assetClassLabel(holding.assetClass)}</Badge>\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {holding.quantity}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(holding.costBasis, holding.currency)}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(holding.marketValue, holding.currency)}\n </TableCell>\n <TableCell\n className={`text-right tabular-nums font-medium ${deltaToneClass(gain)}`}\n >\n {gain > 0 ? '+' : ''}\n {formatMoney(gain, holding.currency)}\n </TableCell>\n </TableRow>\n );\n })}\n </TableBody>\n </Table>\n </div>\n ) : (\n <EmptyState\n icon={<Layers className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.reports.holdings.emptyTitle', 'No holdings on file')}\n description={translate(\n 'brainyrich.reports.holdings.emptyDesc',\n 'Add holdings to your portfolios to generate a holdings schedule.'\n )}\n />\n )}\n </CardContent>\n </Card>\n </FadeIn>\n </div>\n );\n}\n\n// ============================================================================\n// Transaction ledger\n// ============================================================================\n\nfunction TransactionLedger({\n query,\n transactions,\n cashflow,\n currency,\n translate,\n}: {\n query: QueryStatus;\n transactions: BraTransaction[];\n cashflow: CashflowDatum[];\n currency: string;\n translate: Translate;\n}) {\n const totals = useMemo(() => cashflowTotals(transactions), [transactions]);\n const showSummary = !query.isLoading && !query.isError && transactions.length > 0;\n\n return (\n <div className=\"space-y-6\">\n {showSummary ? (\n <FadeIn>\n <div className=\"grid gap-4 sm:grid-cols-3\">\n <StatTile\n label={translate('brainyrich.reports.ledger.inflow', 'Total Inflow')}\n value={formatMoney(totals.inflow, currency)}\n sparkTone=\"success\"\n />\n <StatTile\n label={translate('brainyrich.reports.ledger.outflow', 'Total Outflow')}\n value={formatMoney(totals.outflow, currency)}\n sparkTone=\"error\"\n />\n <StatTile\n label={translate('brainyrich.reports.ledger.net', 'Net Flow')}\n value={formatMoney(totals.net, currency)}\n glow={totals.net >= 0}\n delta={totals.inflow > 0 ? (totals.net / totals.inflow) * 100 : undefined}\n />\n </div>\n </FadeIn>\n ) : null}\n\n {showSummary && cashflow.length > 0 ? (\n <FadeIn index={1}>\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2 text-base\">\n <TrendingUp className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.cashflow.title', 'Cash Flow')}\n </CardTitle>\n </CardHeader>\n <CardContent>\n <TrendBars data={cashflow} valueFormatter={(v) => formatCompact(v, currency)} />\n </CardContent>\n </Card>\n </FadeIn>\n ) : null}\n\n <FadeIn index={2}>\n <Card>\n <CardHeader>\n <CardTitle className=\"flex items-center gap-2\">\n <Receipt className=\"size-5\" aria-hidden=\"true\" />\n {translate('brainyrich.reports.ledger.title', 'Transaction Ledger')}\n </CardTitle>\n <CardDescription>\n {translate(\n 'brainyrich.reports.ledger.description',\n 'Every recorded transaction across your accounts, newest first.'\n )}\n </CardDescription>\n </CardHeader>\n <CardContent>\n {query.isLoading ? (\n <LoadingState rows={4} />\n ) : query.isError ? (\n <ErrorState onRetry={() => query.refetch()} />\n ) : transactions.length > 0 ? (\n <div className=\"overflow-x-auto\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>\n {translate('brainyrich.reports.ledger.date', 'Trade Date')}\n </TableHead>\n <TableHead>{translate('brainyrich.reports.ledger.type', 'Type')}</TableHead>\n <TableHead>\n {translate('brainyrich.reports.ledger.symbol', 'Symbol')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.ledger.quantity', 'Quantity')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.ledger.price', 'Price')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.ledger.amount', 'Amount')}\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {transactions.map((tx) => (\n <TableRow key={tx.id} className=\"transition-colors hover:bg-bg-elevated/60\">\n <TableCell className=\"text-text-primary\">\n {formatDate(tx.tradeDate)}\n </TableCell>\n <TableCell>\n <Badge variant=\"outline\">{tx.type}</Badge>\n </TableCell>\n <TableCell className=\"text-text-primary\">{tx.symbol ?? '—'}</TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {tx.quantity}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(tx.price, tx.currency)}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(tx.amount, tx.currency)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n ) : (\n <EmptyState\n icon={<FileText className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.reports.ledger.emptyTitle', 'No transactions recorded')}\n description={translate(\n 'brainyrich.reports.ledger.emptyDesc',\n 'Record transactions on your accounts to build a ledger statement.'\n )}\n />\n )}\n </CardContent>\n </Card>\n </FadeIn>\n </div>\n );\n}\n\n// ============================================================================\n// Client statement — branded, per-household wealth statement (real data)\n// ============================================================================\n\nfunction ClientStatementPanel({\n householdsQuery,\n households,\n activeHousehold,\n onSelect,\n accountsQuery,\n goals,\n holdings,\n transactions,\n statement,\n translate,\n}: {\n householdsQuery: QueryStatus;\n households: BraHousehold[];\n activeHousehold: BraHousehold | undefined;\n onSelect: (id: string) => void;\n accountsQuery: QueryStatus;\n goals: BraGoal[];\n holdings: BraHolding[];\n transactions: BraTransaction[];\n statement: StatementData;\n translate: Translate;\n}) {\n if (householdsQuery.isLoading) {\n return (\n <Card>\n <CardContent className=\"space-y-3 p-6\">\n <Skeleton className=\"h-8 w-64\" />\n <Skeleton className=\"h-40 w-full\" />\n </CardContent>\n </Card>\n );\n }\n if (householdsQuery.isError) {\n return (\n <Card>\n <CardContent className=\"p-6\">\n <ErrorState onRetry={() => householdsQuery.refetch()} />\n </CardContent>\n </Card>\n );\n }\n if (households.length === 0 || !activeHousehold) {\n return (\n <Card>\n <CardContent className=\"p-6\">\n <EmptyState\n icon={<Users className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.reports.statement.emptyTitle', 'No households yet')}\n description={translate(\n 'brainyrich.reports.statement.emptyDesc',\n 'Create a household to generate a branded client wealth statement.'\n )}\n />\n </CardContent>\n </Card>\n );\n }\n\n const currency = activeHousehold.currency ?? 'USD';\n const netSeries = buildCashflow(transactions).netSeries;\n const asOf = formatDate(new Date().toISOString());\n\n return (\n <div className=\"space-y-4\">\n {/* Household picker */}\n <div className=\"flex flex-wrap items-center gap-3\">\n <span className=\"text-sm text-text-secondary\">\n {translate('brainyrich.reports.statement.for', 'Statement for')}\n </span>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button variant=\"outline\" size=\"sm\">\n <Users className=\"size-4\" aria-hidden=\"true\" />\n {activeHousehold.name}\n <ChevronDown className=\"size-4\" aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"start\" className=\"max-h-72 overflow-y-auto\">\n {households.map((h) => (\n <DropdownMenuItem key={h.id} onSelect={() => onSelect(h.id)}>\n {h.name}\n </DropdownMenuItem>\n ))}\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n\n {accountsQuery.isLoading ? (\n <Card>\n <CardContent className=\"p-6\">\n <LoadingState rows={3} />\n </CardContent>\n </Card>\n ) : accountsQuery.isError ? (\n <Card>\n <CardContent className=\"p-6\">\n <ErrorState onRetry={() => accountsQuery.refetch()} />\n </CardContent>\n </Card>\n ) : (\n <FadeIn>\n <GlassCard glow className=\"space-y-6\">\n {/* Branded header */}\n <div className=\"flex items-start justify-between gap-4 border-b border-border-subtle pb-4\">\n <div className=\"flex items-center gap-3\">\n <div className=\"flex size-10 items-center justify-center rounded-xl bg-[var(--color-action-primary-bg)] text-sm font-bold text-[var(--color-action-primary-text)]\">\n BR\n </div>\n <div>\n <h2 className=\"text-lg font-semibold text-text-primary\">\n {activeHousehold.name}\n </h2>\n <p className=\"text-xs text-text-secondary\">\n {translate('brainyrich.reports.statement.subtitle', 'Wealth Statement')} · {asOf}\n </p>\n </div>\n </div>\n <Badge variant={statusBadgeVariant(activeHousehold.status)}>\n {activeHousehold.status}\n </Badge>\n </div>\n\n {/* Net worth + allocation */}\n <div className=\"grid gap-6 md:grid-cols-2\">\n <div>\n <p className=\"text-xs font-medium uppercase tracking-wide text-text-secondary\">\n {translate('brainyrich.reports.statement.netWorth', 'Net Worth')}\n </p>\n <p className=\"mt-1 text-3xl font-semibold tracking-tight text-text-primary\">\n {formatMoney(statement.netWorth, currency)}\n </p>\n <div className=\"mt-2 flex flex-wrap gap-2 text-xs text-text-secondary\">\n <span>\n {translate('brainyrich.reports.netWorth.invested', 'Invested')}{' '}\n <span className=\"font-medium text-text-primary\">\n {formatMoney(statement.invested, currency)}\n </span>\n </span>\n <span>·</span>\n <span>\n {translate('brainyrich.reports.netWorth.cash', 'Cash')}{' '}\n <span className=\"font-medium text-text-primary\">\n {formatMoney(statement.cash, currency)}\n </span>\n </span>\n </div>\n {netSeries.length > 1 ? <Sparkline data={netSeries} height={44} className=\"mt-4\" /> : null}\n </div>\n <div>\n <p className=\"mb-2 text-xs font-medium uppercase tracking-wide text-text-secondary\">\n {translate('brainyrich.reports.statement.allocation', 'Asset Allocation')}\n </p>\n {statement.allocation.length > 0 ? (\n <DonutChart\n data={statement.allocation}\n height={200}\n valueFormatter={(v) => formatMoney(v, currency)}\n />\n ) : (\n <p className=\"text-sm text-text-secondary\">\n {translate('brainyrich.reports.netWorth.noAllocation', 'No holdings to allocate yet.')}\n </p>\n )}\n </div>\n </div>\n\n {/* Holdings schedule */}\n {holdings.length > 0 ? (\n <div>\n <p className=\"mb-2 text-xs font-medium uppercase tracking-wide text-text-secondary\">\n {translate('brainyrich.reports.statement.holdings', 'Holdings Schedule')}\n </p>\n <div className=\"overflow-x-auto rounded-lg border border-border-subtle\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>\n {translate('brainyrich.reports.holdings.symbol', 'Symbol')}\n </TableHead>\n <TableHead>\n {translate('brainyrich.reports.holdings.assetClass', 'Asset Class')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.quantity', 'Quantity')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.reports.holdings.marketValue', 'Market Value')}\n </TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {holdings.map((h) => (\n <TableRow key={h.id} className=\"transition-colors hover:bg-bg-elevated/60\">\n <TableCell>\n <div className=\"font-medium text-text-primary\">{h.symbol}</div>\n {h.name ? (\n <div className=\"text-xs text-text-secondary\">{h.name}</div>\n ) : null}\n </TableCell>\n <TableCell>\n <Badge variant=\"outline\">{assetClassLabel(h.assetClass)}</Badge>\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {h.quantity}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-primary\">\n {formatMoney(h.marketValue, h.currency)}\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n </div>\n ) : null}\n\n {/* Progress to goals */}\n {goals.length > 0 ? (\n <div>\n <p className=\"mb-3 text-xs font-medium uppercase tracking-wide text-text-secondary\">\n {translate('brainyrich.reports.statement.goals', 'Progress-to-Goals')}\n </p>\n <div className=\"grid gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {goals.map((g) => (\n <GoalProgressCard\n key={g.id}\n goal={g}\n accountValues={statement.accountValues}\n translate={translate}\n />\n ))}\n </div>\n </div>\n ) : null}\n\n {/* Footer */}\n <p className=\"border-t border-border-subtle pt-4 text-center text-xs text-text-secondary\">\n {translate('brainyrich.reports.statement.footer', 'BrainyRich · Confidential')}\n </p>\n </GlassCard>\n </FadeIn>\n )}\n </div>\n );\n}\n\n/**\n * One goal's progress ring. Funded amount is derived from the goal's REAL\n * fundings: a fixed amount when set, otherwise the funding's allocation\n * percentage applied to that account's total value (cash + holdings).\n */\nfunction GoalProgressCard({\n goal,\n accountValues,\n translate,\n}: {\n goal: BraGoal;\n accountValues: Map<string, number>;\n translate: Translate;\n}) {\n const fundings = useGoalFundings(goal.id);\n const funded = useMemo(\n () =>\n fundings.data.reduce((sum, f) => {\n if (f.fixedAmount != null) return sum + f.fixedAmount;\n const value = accountValues.get(f.accountId) ?? 0;\n return sum + (f.allocationPct / 100) * value;\n }, 0),\n [fundings.data, accountValues]\n );\n const pct = goal.targetAmount > 0 ? Math.min(100, (funded / goal.targetAmount) * 100) : 0;\n\n return (\n <div className=\"flex flex-col items-center gap-2 rounded-xl border border-border-subtle bg-bg-surface p-4 text-center transition-shadow motion-safe:hover:shadow-[var(--shadow-pop-hover,var(--shadow-elevation-2))]\">\n <ProgressRing value={pct} tone={projectionTone(goal.projection)} size={104} />\n <div className=\"flex items-center gap-1.5\">\n <Target className=\"size-3.5 text-text-secondary\" aria-hidden=\"true\" />\n <span className=\"text-sm font-medium text-text-primary\">{goal.name}</span>\n </div>\n <p className=\"text-xs text-text-secondary\">\n {formatMoney(funded, goal.currency)} / {formatMoney(goal.targetAmount, goal.currency)}\n </p>\n <Badge variant={statusBadgeVariant(goal.projection)}>\n {translate(\n `brainyrich.goals.projection.${goal.projection}`,\n goal.projection.replace(/_/g, ' ')\n )}\n </Badge>\n </div>\n );\n}\n"],"mappings":"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"}
|