@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":"GoalsPage.js","names":[],"sources":["../../../src/brainyrich/pages/GoalsPage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Input,\n Label,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n Textarea,\n} from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n AlertTriangle,\n CalendarClock,\n Link2,\n MoreHorizontal,\n Plus,\n RefreshCw,\n Target,\n Trash2,\n TrendingDown,\n TrendingUp,\n Unlink,\n} from 'lucide-react';\nimport { tWithFallback } from '../utils/i18n';\nimport {\n useAccounts,\n useArchiveGoal,\n useCreateGoal,\n useGoal,\n useGoalFundings,\n useGoals,\n useHouseholds,\n useLinkGoalFunding,\n useRecalcGoalProjection,\n useUnlinkGoalFunding,\n useUpdateGoal,\n} from '../hooks/useBrainyRichApi';\nimport type {\n BraCreateGoalInput,\n BraGoal,\n BraGoalProjection,\n BraGoalStatus,\n BraGoalType,\n BraUpdateGoalInput,\n} from '../types/bra';\nimport {\n EmptyState,\n ErrorState,\n KpiGrid,\n LoadingState,\n SectionShell,\n formatDate,\n formatMoney,\n statusBadgeVariant,\n} from './_shared';\n\nconst GOAL_TYPES: BraGoalType[] = [\n 'RETIREMENT',\n 'EDUCATION',\n 'HOME',\n 'EMERGENCY_FUND',\n 'MAJOR_PURCHASE',\n 'WEALTH_GROWTH',\n 'CUSTOM',\n];\n\nconst GOAL_STATUSES: BraGoalStatus[] = ['ACTIVE', 'ACHIEVED', 'ON_HOLD', 'ABANDONED'];\n\ninterface ProjectionMeta {\n icon: typeof TrendingUp;\n tone: string;\n}\n\nfunction projectionMeta(projection: BraGoalProjection): ProjectionMeta {\n switch (projection) {\n case 'AHEAD':\n case 'ON_TRACK':\n return { icon: TrendingUp, tone: 'text-status-success-text' };\n case 'BEHIND':\n return { icon: TrendingDown, tone: 'text-status-warning-text' };\n case 'AT_RISK':\n default:\n return { icon: AlertTriangle, tone: 'text-status-error-text' };\n }\n}\n\nfunction humanize(value: string): string {\n return value\n .toLowerCase()\n .split('_')\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n\n/** yyyy-mm-dd for a date input, guarded against absent/invalid ISO strings. */\nfunction toDateInput(iso?: string | null): string {\n if (!iso) return '';\n const d = new Date(iso);\n if (Number.isNaN(d.getTime())) return '';\n return d.toISOString().slice(0, 10);\n}\n\ninterface GoalFormState {\n name: string;\n type: BraGoalType;\n status: BraGoalStatus;\n targetAmount: string;\n targetDate: string;\n monthlyContribution: string;\n priority: string;\n currency: string;\n householdId: string;\n notes: string;\n tags: string;\n}\n\nfunction emptyForm(): GoalFormState {\n return {\n name: '',\n type: 'CUSTOM',\n status: 'ACTIVE',\n targetAmount: '',\n targetDate: '',\n monthlyContribution: '',\n priority: '1',\n currency: 'USD',\n householdId: '',\n notes: '',\n tags: '',\n };\n}\n\nfunction formFromGoal(goal: BraGoal): GoalFormState {\n return {\n name: goal.name,\n type: goal.type,\n status: goal.status,\n targetAmount: String(goal.targetAmount),\n targetDate: toDateInput(goal.targetDate),\n monthlyContribution: String(goal.monthlyContribution),\n priority: String(goal.priority),\n currency: goal.currency,\n householdId: goal.householdId ?? '',\n notes: goal.notes ?? '',\n tags: goal.tags.join(', '),\n };\n}\n\nfunction parseTags(raw: string): string[] {\n return raw\n .split(',')\n .map((t) => t.trim())\n .filter(Boolean);\n}\n\nconst HOUSEHOLD_NONE = '__none__';\n\nexport function GoalsPage() {\n const { t } = useI18n();\n const translate = (key: string, fallback: string, params?: Record<string, string | number>) =>\n tWithFallback(t, key, fallback, params);\n\n const { data: goals, isLoading, isError, refetch } = useGoals();\n const { data: households } = useHouseholds();\n\n const createGoal = useCreateGoal();\n const updateGoal = useUpdateGoal();\n const archiveGoal = useArchiveGoal();\n\n const [createOpen, setCreateOpen] = useState(false);\n const [editing, setEditing] = useState<BraGoal | null>(null);\n const [detailId, setDetailId] = useState<string | null>(null);\n const [form, setForm] = useState<GoalFormState>(emptyForm);\n\n const setField = <K extends keyof GoalFormState>(key: K, value: GoalFormState[K]) =>\n setForm((prev) => ({ ...prev, [key]: value }));\n\n const totals = useMemo(() => {\n const totalTarget = goals.reduce((s, g) => s + g.targetAmount, 0);\n const totalMonthly = goals.reduce((s, g) => s + g.monthlyContribution, 0);\n const atRisk = goals.filter(\n (g) => g.projection === 'AT_RISK' || g.projection === 'BEHIND'\n ).length;\n return { totalTarget, totalMonthly, atRisk };\n }, [goals]);\n\n const currency = goals[0]?.currency ?? 'USD';\n\n const openCreate = () => {\n setForm(emptyForm());\n setCreateOpen(true);\n };\n\n const openEdit = (goal: BraGoal) => {\n setForm(formFromGoal(goal));\n setEditing(goal);\n };\n\n const formValid =\n form.name.trim().length > 0 && Number(form.targetAmount) > 0 && form.targetDate.length > 0;\n\n const handleCreate = () => {\n if (!formValid) return;\n const input: BraCreateGoalInput = {\n name: form.name.trim(),\n type: form.type,\n targetAmount: Number(form.targetAmount),\n targetDate: new Date(form.targetDate).toISOString(),\n monthlyContribution: Number(form.monthlyContribution) || 0,\n priority: Number(form.priority) || 1,\n currency: form.currency.trim() || 'USD',\n notes: form.notes.trim() || null,\n tags: parseTags(form.tags),\n ...(form.householdId ? { householdId: form.householdId } : {}),\n };\n createGoal.mutate(input, { onSuccess: () => setCreateOpen(false) });\n };\n\n const handleUpdate = () => {\n if (!editing || !formValid) return;\n const input: BraUpdateGoalInput = {\n name: form.name.trim(),\n type: form.type,\n status: form.status,\n targetAmount: Number(form.targetAmount),\n targetDate: new Date(form.targetDate).toISOString(),\n monthlyContribution: Number(form.monthlyContribution) || 0,\n priority: Number(form.priority) || 1,\n currency: form.currency.trim() || 'USD',\n notes: form.notes.trim() || null,\n tags: parseTags(form.tags),\n };\n updateGoal.mutate({ id: editing.id, input }, { onSuccess: () => setEditing(null) });\n };\n\n const body = () => {\n if (isLoading) return <LoadingState rows={4} />;\n if (isError)\n return (\n <ErrorState\n title={translate('brainyrich.goals.error.title', 'Could not load goals')}\n description={translate(\n 'brainyrich.goals.error.description',\n 'We could not reach the goals service. Please try again.'\n )}\n onRetry={() => refetch()}\n />\n );\n if (goals.length === 0)\n return (\n <EmptyState\n icon={<Target className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.goals.empty.title', 'No financial goals yet')}\n description={translate(\n 'brainyrich.goals.empty.description',\n 'Create your first goal to start tracking progress toward a milestone.'\n )}\n action={\n <Button size=\"sm\" onClick={openCreate}>\n <Plus className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.goals.actions.createGoal', 'New goal')}\n </Button>\n }\n />\n );\n\n return (\n <>\n <KpiGrid\n items={[\n {\n label: translate('brainyrich.goals.metrics.activeGoals', 'Goals'),\n value: String(goals.length),\n trend: translate('brainyrich.goals.metrics.activeGoalsTrend', 'Being tracked'),\n },\n {\n label: translate('brainyrich.goals.metrics.totalTarget', 'Total target'),\n value: formatMoney(totals.totalTarget, currency),\n },\n {\n label: translate('brainyrich.goals.metrics.monthly', 'Monthly contributions'),\n value: formatMoney(totals.totalMonthly, currency),\n trend: translate('brainyrich.goals.metrics.monthlyTrend', 'Across all goals'),\n },\n {\n label: translate('brainyrich.goals.metrics.atRisk', 'Needs attention'),\n value: String(totals.atRisk),\n trend: translate('brainyrich.goals.metrics.atRiskTrend', 'Behind or at risk'),\n deltaTone: totals.atRisk > 0 ? 'negative' : 'positive',\n },\n ]}\n />\n\n <div className=\"grid gap-4 md:grid-cols-2 xl:grid-cols-3\">\n {goals.map((g) => {\n const proj = projectionMeta(g.projection);\n const ProjIcon = proj.icon;\n return (\n <Card key={g.id} className=\"flex flex-col\">\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <CardTitle className=\"flex items-center gap-2 text-base\">\n <Target className=\"size-4 shrink-0 text-text-secondary\" aria-hidden=\"true\" />\n <span className=\"truncate\">{g.name}</span>\n </CardTitle>\n <CardDescription className=\"mt-1 flex flex-wrap items-center gap-2\">\n <Badge variant=\"outline\">{humanize(g.type)}</Badge>\n <Badge variant={statusBadgeVariant(g.status)}>{humanize(g.status)}</Badge>\n </CardDescription>\n </div>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={translate('brainyrich.goals.actions.menu', 'Goal actions')}\n >\n <MoreHorizontal className=\"size-4\" aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onSelect={() => setDetailId(g.id)}>\n <Link2 className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.goals.actions.manageFunding', 'Manage funding')}\n </DropdownMenuItem>\n <DropdownMenuItem onSelect={() => openEdit(g)}>\n <RefreshCw className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.goals.actions.editGoal', 'Edit goal')}\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n className=\"text-status-error-text focus:text-status-error-text\"\n disabled={archiveGoal.isPending}\n onSelect={() => archiveGoal.mutate(g.id)}\n >\n <Trash2 className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.goals.actions.archive', 'Archive goal')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </CardHeader>\n <CardContent className=\"flex flex-1 flex-col gap-4\">\n <div>\n <p className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.target', 'Target amount')}\n </p>\n <p className=\"text-2xl font-semibold text-text-primary\">\n {formatMoney(g.targetAmount, g.currency)}\n </p>\n <span\n className={`mt-1 inline-flex items-center gap-1 text-xs font-medium ${proj.tone}`}\n >\n <ProjIcon className=\"size-3.5\" aria-hidden=\"true\" />\n {humanize(g.projection)}\n </span>\n </div>\n\n <dl className=\"grid grid-cols-2 gap-3 rounded-lg bg-bg-sunken p-3 text-sm\">\n <div>\n <dt className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.targetDate', 'Target date')}\n </dt>\n <dd className=\"flex items-center gap-1 font-medium text-text-primary\">\n <CalendarClock\n className=\"size-3.5 text-text-secondary\"\n aria-hidden=\"true\"\n />\n {formatDate(g.targetDate)}\n </dd>\n </div>\n <div>\n <dt className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.monthly', 'Monthly')}\n </dt>\n <dd className=\"font-medium text-text-primary\">\n {formatMoney(g.monthlyContribution, g.currency)}\n </dd>\n </div>\n <div>\n <dt className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.priority', 'Priority')}\n </dt>\n <dd className=\"font-medium text-text-primary\">{g.priority}</dd>\n </div>\n <div>\n <dt className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.fundings', 'Funding links')}\n </dt>\n <dd className=\"font-medium text-text-primary\">{g.fundings.length}</dd>\n </div>\n </dl>\n\n <div className=\"mt-auto\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full\"\n onClick={() => setDetailId(g.id)}\n >\n {translate('brainyrich.goals.actions.viewDetails', 'View details & funding')}\n </Button>\n </div>\n </CardContent>\n </Card>\n );\n })}\n </div>\n </>\n );\n };\n\n return (\n <>\n <SectionShell\n title={translate('brainyrich.goals.title', 'Financial Goals')}\n description={translate(\n 'brainyrich.goals.description',\n 'Track progress toward your wealth milestones and life objectives'\n )}\n actionLabel={translate('brainyrich.goals.actions.createGoal', 'New goal')}\n onAction={openCreate}\n >\n {body()}\n </SectionShell>\n\n <GoalFormDialog\n open={createOpen}\n mode=\"create\"\n form={form}\n setField={setField}\n households={households.map((h) => ({ id: h.id, name: h.name }))}\n valid={formValid}\n pending={createGoal.isPending}\n onSubmit={handleCreate}\n onOpenChange={(v) => setCreateOpen(v)}\n translate={translate}\n />\n\n <GoalFormDialog\n open={Boolean(editing)}\n mode=\"edit\"\n form={form}\n setField={setField}\n households={households.map((h) => ({ id: h.id, name: h.name }))}\n valid={formValid}\n pending={updateGoal.isPending}\n onSubmit={handleUpdate}\n onOpenChange={(v) => {\n if (!v) setEditing(null);\n }}\n translate={translate}\n />\n\n <GoalDetailSheet\n goalId={detailId}\n onClose={() => setDetailId(null)}\n translate={translate}\n />\n </>\n );\n}\n\ntype Translate = (key: string, fallback: string, params?: Record<string, string | number>) => string;\n\ninterface GoalFormDialogProps {\n open: boolean;\n mode: 'create' | 'edit';\n form: GoalFormState;\n setField: <K extends keyof GoalFormState>(key: K, value: GoalFormState[K]) => void;\n households: { id: string; name: string }[];\n valid: boolean;\n pending: boolean;\n onSubmit: () => void;\n onOpenChange: (open: boolean) => void;\n translate: Translate;\n}\n\nfunction GoalFormDialog({\n open,\n mode,\n form,\n setField,\n households,\n valid,\n pending,\n onSubmit,\n onOpenChange,\n translate,\n}: GoalFormDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-h-[90vh] overflow-y-auto sm:max-w-lg\">\n <DialogHeader>\n <DialogTitle>\n {mode === 'create'\n ? translate('brainyrich.goals.form.createTitle', 'New goal')\n : translate('brainyrich.goals.form.editTitle', 'Edit goal')}\n </DialogTitle>\n <DialogDescription>\n {translate(\n 'brainyrich.goals.form.subtitle',\n 'Define the milestone, target and contribution plan.'\n )}\n </DialogDescription>\n </DialogHeader>\n\n <form\n className=\"space-y-4\"\n onSubmit={(e) => {\n e.preventDefault();\n onSubmit();\n }}\n >\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-name\">\n {translate('brainyrich.goals.form.name', 'Name')}\n </Label>\n <Input\n id=\"goal-name\"\n value={form.name}\n onChange={(e) => setField('name', e.target.value)}\n placeholder={translate('brainyrich.goals.form.namePlaceholder', 'e.g. Retirement fund')}\n required\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-type\">\n {translate('brainyrich.goals.form.type', 'Type')}\n </Label>\n <Select value={form.type} onValueChange={(v) => setField('type', v as BraGoalType)}>\n <SelectTrigger id=\"goal-type\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {GOAL_TYPES.map((tpe) => (\n <SelectItem key={tpe} value={tpe}>\n {humanize(tpe)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n {mode === 'edit' ? (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-status\">\n {translate('brainyrich.goals.form.status', 'Status')}\n </Label>\n <Select\n value={form.status}\n onValueChange={(v) => setField('status', v as BraGoalStatus)}\n >\n <SelectTrigger id=\"goal-status\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {GOAL_STATUSES.map((st) => (\n <SelectItem key={st} value={st}>\n {humanize(st)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n ) : (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-priority\">\n {translate('brainyrich.goals.form.priority', 'Priority')}\n </Label>\n <Input\n id=\"goal-priority\"\n type=\"number\"\n min={1}\n value={form.priority}\n onChange={(e) => setField('priority', e.target.value)}\n />\n </div>\n )}\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-target\">\n {translate('brainyrich.goals.form.targetAmount', 'Target amount')}\n </Label>\n <Input\n id=\"goal-target\"\n type=\"number\"\n min={0}\n step=\"0.01\"\n value={form.targetAmount}\n onChange={(e) => setField('targetAmount', e.target.value)}\n required\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-date\">\n {translate('brainyrich.goals.form.targetDate', 'Target date')}\n </Label>\n <Input\n id=\"goal-date\"\n type=\"date\"\n value={form.targetDate}\n onChange={(e) => setField('targetDate', e.target.value)}\n required\n />\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-monthly\">\n {translate('brainyrich.goals.form.monthly', 'Monthly contribution')}\n </Label>\n <Input\n id=\"goal-monthly\"\n type=\"number\"\n min={0}\n step=\"0.01\"\n value={form.monthlyContribution}\n onChange={(e) => setField('monthlyContribution', e.target.value)}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-currency\">\n {translate('brainyrich.goals.form.currency', 'Currency')}\n </Label>\n <Input\n id=\"goal-currency\"\n value={form.currency}\n onChange={(e) => setField('currency', e.target.value.toUpperCase())}\n maxLength={3}\n />\n </div>\n </div>\n\n {mode === 'edit' ? (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-priority-edit\">\n {translate('brainyrich.goals.form.priority', 'Priority')}\n </Label>\n <Input\n id=\"goal-priority-edit\"\n type=\"number\"\n min={1}\n value={form.priority}\n onChange={(e) => setField('priority', e.target.value)}\n />\n </div>\n ) : null}\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-household\">\n {translate('brainyrich.goals.form.household', 'Household (optional)')}\n </Label>\n <Select\n value={form.householdId || HOUSEHOLD_NONE}\n onValueChange={(v) => setField('householdId', v === HOUSEHOLD_NONE ? '' : v)}\n >\n <SelectTrigger id=\"goal-household\">\n <SelectValue\n placeholder={translate('brainyrich.goals.form.householdNone', 'None')}\n />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={HOUSEHOLD_NONE}>\n {translate('brainyrich.goals.form.householdNone', 'None')}\n </SelectItem>\n {households.map((h) => (\n <SelectItem key={h.id} value={h.id}>\n {h.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-tags\">\n {translate('brainyrich.goals.form.tags', 'Tags (comma separated)')}\n </Label>\n <Input\n id=\"goal-tags\"\n value={form.tags}\n onChange={(e) => setField('tags', e.target.value)}\n placeholder={translate('brainyrich.goals.form.tagsPlaceholder', 'e.g. long-term, family')}\n />\n </div>\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-notes\">\n {translate('brainyrich.goals.form.notes', 'Notes')}\n </Label>\n <Textarea\n id=\"goal-notes\"\n value={form.notes}\n onChange={(e) => setField('notes', e.target.value)}\n rows={3}\n />\n </div>\n\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={pending}\n >\n {translate('brainyrich.goals.form.cancel', 'Cancel')}\n </Button>\n <Button type=\"submit\" disabled={!valid || pending}>\n {pending\n ? translate('brainyrich.goals.form.saving', 'Saving…')\n : mode === 'create'\n ? translate('brainyrich.goals.form.create', 'Create goal')\n : translate('brainyrich.goals.form.save', 'Save changes')}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n\ntype FundingMode = 'PERCENT' | 'FIXED';\n\ninterface GoalDetailSheetProps {\n goalId: string | null;\n onClose: () => void;\n translate: Translate;\n}\n\nfunction GoalDetailSheet({ goalId, onClose, translate }: GoalDetailSheetProps) {\n const { data: goal, isLoading, isError, refetch } = useGoal(goalId ?? undefined);\n const { data: fundings } = useGoalFundings(goalId ?? undefined);\n const { data: accounts } = useAccounts();\n\n const linkFunding = useLinkGoalFunding();\n const unlinkFunding = useUnlinkGoalFunding();\n const recalc = useRecalcGoalProjection();\n\n const [accountId, setAccountId] = useState('');\n const [fundingMode, setFundingMode] = useState<FundingMode>('PERCENT');\n const [fundingValue, setFundingValue] = useState('');\n const [fundedAmount, setFundedAmount] = useState('');\n\n const fixedFunded = fundings.reduce((s, f) => s + (f.fixedAmount ?? 0), 0);\n const currency = goal?.currency ?? 'USD';\n\n const accountName = (id: string) => accounts.find((a) => a.id === id)?.name ?? id;\n\n const handleLink = () => {\n if (!goalId || !accountId) return;\n const numeric = Number(fundingValue);\n if (!Number.isFinite(numeric) || numeric <= 0) return;\n linkFunding.mutate(\n {\n goalId,\n accountId,\n ...(fundingMode === 'PERCENT'\n ? { allocationPct: numeric }\n : { fixedAmount: numeric }),\n },\n {\n onSuccess: () => {\n setAccountId('');\n setFundingValue('');\n },\n }\n );\n };\n\n const handleRecalc = () => {\n if (!goalId) return;\n const amount = fundedAmount === '' ? fixedFunded : Number(fundedAmount);\n if (!Number.isFinite(amount)) return;\n recalc.mutate({ id: goalId, fundedAmount: amount });\n };\n\n const linkValid = Boolean(accountId) && Number(fundingValue) > 0;\n\n return (\n <Sheet\n open={Boolean(goalId)}\n onOpenChange={(v) => {\n if (!v) onClose();\n }}\n >\n <SheetContent className=\"flex w-full flex-col gap-0 overflow-y-auto sm:max-w-md\">\n <SheetHeader>\n <SheetTitle>{goal?.name ?? translate('brainyrich.goals.detail.title', 'Goal')}</SheetTitle>\n <SheetDescription>\n {translate('brainyrich.goals.detail.subtitle', 'Manage funding links and projection.')}\n </SheetDescription>\n </SheetHeader>\n\n <div className=\"space-y-6 p-4\">\n {isLoading ? (\n <LoadingState rows={3} />\n ) : isError ? (\n <ErrorState\n title={translate('brainyrich.goals.detail.error', 'Could not load goal')}\n onRetry={() => refetch()}\n />\n ) : !goal ? (\n <EmptyState\n icon={<Target className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.goals.detail.notFound', 'Goal not found')}\n />\n ) : (\n <>\n <div className=\"grid grid-cols-2 gap-3\">\n <SummaryTile\n label={translate('brainyrich.goals.detail.target', 'Target')}\n value={formatMoney(goal.targetAmount, currency)}\n />\n <SummaryTile\n label={translate('brainyrich.goals.detail.funded', 'Funded (fixed)')}\n value={formatMoney(fixedFunded, currency)}\n />\n <SummaryTile\n label={translate('brainyrich.goals.detail.projection', 'Projection')}\n value={humanize(goal.projection)}\n tone={projectionMeta(goal.projection).tone}\n />\n <SummaryTile\n label={translate('brainyrich.goals.detail.targetDate', 'Target date')}\n value={formatDate(goal.targetDate)}\n />\n </div>\n\n {/* Fundings list */}\n <section className=\"space-y-3\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {translate('brainyrich.goals.detail.fundingLinks', 'Funding links')}\n </h3>\n {fundings.length === 0 ? (\n <p className=\"rounded-lg border border-dashed border-border-subtle bg-bg-surface px-4 py-6 text-center text-sm text-text-secondary\">\n {translate(\n 'brainyrich.goals.detail.noFundings',\n 'No accounts linked to fund this goal yet.'\n )}\n </p>\n ) : (\n <ul className=\"space-y-2\">\n {fundings.map((f) => (\n <li\n key={f.id}\n className=\"flex items-center justify-between gap-2 rounded-lg border border-border-subtle bg-bg-surface px-3 py-2\"\n >\n <div className=\"min-w-0\">\n <p className=\"truncate text-sm font-medium text-text-primary\">\n {accountName(f.accountId)}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {f.fixedAmount != null\n ? formatMoney(f.fixedAmount, currency)\n : translate('brainyrich.goals.detail.pctOfAccount', '{pct}% of account', {\n pct: f.allocationPct,\n })}\n </p>\n </div>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={translate('brainyrich.goals.detail.unlink', 'Unlink funding')}\n disabled={unlinkFunding.isPending}\n onClick={() => unlinkFunding.mutate(f.id)}\n >\n <Unlink className=\"size-4\" aria-hidden=\"true\" />\n </Button>\n </li>\n ))}\n </ul>\n )}\n </section>\n\n {/* Link a new funding */}\n <section className=\"space-y-3 rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {translate('brainyrich.goals.detail.linkTitle', 'Link an account')}\n </h3>\n {accounts.length === 0 ? (\n <p className=\"text-sm text-text-secondary\">\n {translate(\n 'brainyrich.goals.detail.noAccounts',\n 'No accounts available to link.'\n )}\n </p>\n ) : (\n <>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"funding-account\">\n {translate('brainyrich.goals.detail.account', 'Account')}\n </Label>\n <Select value={accountId} onValueChange={setAccountId}>\n <SelectTrigger id=\"funding-account\">\n <SelectValue\n placeholder={translate(\n 'brainyrich.goals.detail.selectAccount',\n 'Select account'\n )}\n />\n </SelectTrigger>\n <SelectContent>\n {accounts.map((a) => (\n <SelectItem key={a.id} value={a.id}>\n {a.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"funding-mode\">\n {translate('brainyrich.goals.detail.mode', 'Method')}\n </Label>\n <Select\n value={fundingMode}\n onValueChange={(v) => setFundingMode(v as FundingMode)}\n >\n <SelectTrigger id=\"funding-mode\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"PERCENT\">\n {translate('brainyrich.goals.detail.percent', 'Percentage')}\n </SelectItem>\n <SelectItem value=\"FIXED\">\n {translate('brainyrich.goals.detail.fixed', 'Fixed amount')}\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"funding-value\">\n {fundingMode === 'PERCENT'\n ? translate('brainyrich.goals.detail.pct', 'Percent')\n : translate('brainyrich.goals.detail.amount', 'Amount')}\n </Label>\n <Input\n id=\"funding-value\"\n type=\"number\"\n min={0}\n step=\"0.01\"\n value={fundingValue}\n onChange={(e) => setFundingValue(e.target.value)}\n />\n </div>\n </div>\n <Button\n size=\"sm\"\n className=\"w-full\"\n disabled={!linkValid || linkFunding.isPending}\n onClick={handleLink}\n >\n <Link2 className=\"size-4\" aria-hidden=\"true\" />\n {linkFunding.isPending\n ? translate('brainyrich.goals.detail.linking', 'Linking…')\n : translate('brainyrich.goals.detail.link', 'Link funding')}\n </Button>\n </>\n )}\n </section>\n\n {/* Recalc projection */}\n <section className=\"space-y-3 rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {translate('brainyrich.goals.detail.recalcTitle', 'Recalculate projection')}\n </h3>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"recalc-funded\">\n {translate('brainyrich.goals.detail.fundedAmount', 'Funded amount')}\n </Label>\n <Input\n id=\"recalc-funded\"\n type=\"number\"\n min={0}\n step=\"0.01\"\n value={fundedAmount}\n placeholder={String(fixedFunded)}\n onChange={(e) => setFundedAmount(e.target.value)}\n />\n <p className=\"text-xs text-text-secondary\">\n {translate(\n 'brainyrich.goals.detail.recalcHint',\n 'Defaults to the sum of fixed fundings when left blank.'\n )}\n </p>\n </div>\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"w-full\"\n disabled={recalc.isPending}\n onClick={handleRecalc}\n >\n <RefreshCw className=\"size-4\" aria-hidden=\"true\" />\n {recalc.isPending\n ? translate('brainyrich.goals.detail.recalculating', 'Recalculating…')\n : translate('brainyrich.goals.detail.recalc', 'Recalculate')}\n </Button>\n </section>\n </>\n )}\n </div>\n </SheetContent>\n </Sheet>\n );\n}\n\nfunction SummaryTile({ label, value, tone }: { label: string; value: string; tone?: string }) {\n return (\n <div className=\"rounded-lg bg-bg-sunken p-3\">\n <p className=\"text-xs text-text-secondary\">{label}</p>\n <p className={`text-sm font-semibold ${tone ?? 'text-text-primary'}`}>{value}</p>\n </div>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"GoalsPage.js","names":[],"sources":["../../../src/brainyrich/pages/GoalsPage.tsx"],"sourcesContent":["import { useMemo, useState } from 'react';\nimport {\n Badge,\n Button,\n Card,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n Dialog,\n DialogContent,\n DialogDescription,\n DialogFooter,\n DialogHeader,\n DialogTitle,\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n Input,\n Label,\n Select,\n SelectContent,\n SelectItem,\n SelectTrigger,\n SelectValue,\n Sheet,\n SheetContent,\n SheetDescription,\n SheetHeader,\n SheetTitle,\n Table,\n TableBody,\n TableCell,\n TableHead,\n TableHeader,\n TableRow,\n Textarea,\n} from '@burdenoff/fe-libs/ui';\nimport { useI18n } from '@burdenoff/fe-libs/shared/providers/shell/I18nProvider';\nimport {\n AlertTriangle,\n CalendarClock,\n Coins,\n Link2,\n LineChart,\n MoreHorizontal,\n PiggyBank,\n Plus,\n RefreshCw,\n Target,\n Trash2,\n TrendingDown,\n TrendingUp,\n Unlink,\n Wallet,\n} from 'lucide-react';\nimport { tWithFallback } from '../utils/i18n';\nimport {\n ConfirmDialog,\n FadeIn,\n GlassCard,\n LoadMore,\n MiniAreaChart,\n ProgressRing,\n StatTile,\n type AreaDatum,\n type VizTone,\n} from '../components';\nimport { TagField } from '../components/reuse/TagField';\nimport {\n useAccounts,\n useArchiveGoal,\n useCreateGoal,\n useGoal,\n useGoalFundings,\n useHouseholds,\n useLinkGoalFunding,\n usePagedGoals,\n useRecalcGoalProjection,\n useUnlinkGoalFunding,\n useUpdateGoal,\n} from '../hooks/useBrainyRichApi';\nimport type {\n BraCreateGoalInput,\n BraGoal,\n BraGoalFunding,\n BraGoalProjection,\n BraGoalStatus,\n BraGoalType,\n BraUpdateGoalInput,\n} from '../types/bra';\nimport {\n EmptyState,\n ErrorState,\n LoadingState,\n SectionShell,\n formatCompact,\n formatDate,\n formatMoney,\n formatPct,\n statusBadgeVariant,\n} from './_shared';\n\nconst GOAL_TYPES: BraGoalType[] = [\n 'RETIREMENT',\n 'EDUCATION',\n 'HOME',\n 'EMERGENCY_FUND',\n 'MAJOR_PURCHASE',\n 'WEALTH_GROWTH',\n 'CUSTOM',\n];\n\nconst GOAL_STATUSES: BraGoalStatus[] = ['ACTIVE', 'ACHIEVED', 'ON_HOLD', 'ABANDONED'];\n\ninterface ProjectionMeta {\n icon: typeof TrendingUp;\n tone: string;\n}\n\nfunction projectionMeta(projection: BraGoalProjection): ProjectionMeta {\n switch (projection) {\n case 'AHEAD':\n case 'ON_TRACK':\n return { icon: TrendingUp, tone: 'text-status-success-text' };\n case 'BEHIND':\n return { icon: TrendingDown, tone: 'text-status-warning-text' };\n case 'AT_RISK':\n default:\n return { icon: AlertTriangle, tone: 'text-status-error-text' };\n }\n}\n\nfunction humanize(value: string): string {\n return value\n .toLowerCase()\n .split('_')\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(' ');\n}\n\n/** Sum of the fixed-amount funding links wired to a goal (real backend value). */\nfunction goalFixedFunded(goal: Pick<BraGoal, 'fundings'>): number {\n return goal.fundings.reduce((s, f) => s + (f.fixedAmount ?? 0), 0);\n}\n\n/**\n * Funded-progress percentage for a goal. ACHIEVED goals read 100%; otherwise the\n * sum of fixed funding links over the target — every input is wired backend data,\n * never fabricated.\n */\nfunction fundedPercent(goal: Pick<BraGoal, 'fundings' | 'targetAmount' | 'status'>): number {\n if (goal.status === 'ACHIEVED') return 100;\n if (!(goal.targetAmount > 0)) return 0;\n return Math.max(0, Math.min(100, (goalFixedFunded(goal) / goal.targetAmount) * 100));\n}\n\n/** Ring/accent tone derived from the goal's real status + projection. */\nfunction goalTone(status: BraGoalStatus, projection: BraGoalProjection): VizTone {\n if (status === 'ACHIEVED') return 'success';\n switch (projection) {\n case 'AHEAD':\n case 'ON_TRACK':\n return 'brand';\n case 'BEHIND':\n return 'warning';\n case 'AT_RISK':\n default:\n return 'error';\n }\n}\n\n/**\n * A deterministic contribution trajectory from today to the target date, computed\n * purely from wired fields: starting funded balance + monthly contribution × month.\n * No randomness, no fabricated series — just the arithmetic funding path the user\n * has configured. Returns [] when there is nothing meaningful to chart.\n */\nfunction buildProjectionSeries(\n funded: number,\n monthly: number,\n targetIso?: string | null\n): AreaDatum[] {\n if (!targetIso) return [];\n const target = new Date(targetIso);\n if (Number.isNaN(target.getTime())) return [];\n const now = new Date();\n const totalMonths =\n (target.getFullYear() - now.getFullYear()) * 12 + (target.getMonth() - now.getMonth());\n if (totalMonths <= 0) return [];\n const steps = Math.min(Math.max(totalMonths, 2), 12);\n const fmt = new Intl.DateTimeFormat('en-US', { month: 'short', year: '2-digit' });\n const points: AreaDatum[] = [];\n for (let i = 0; i <= steps; i += 1) {\n const m = Math.round((totalMonths / steps) * i);\n const at = new Date(now.getFullYear(), now.getMonth() + m, 1);\n points.push({ x: fmt.format(at), y: Math.round(funded + monthly * m) });\n }\n return points;\n}\n\n/** yyyy-mm-dd for a date input, guarded against absent/invalid ISO strings. */\nfunction toDateInput(iso?: string | null): string {\n if (!iso) return '';\n const d = new Date(iso);\n if (Number.isNaN(d.getTime())) return '';\n return d.toISOString().slice(0, 10);\n}\n\ninterface GoalFormState {\n name: string;\n type: BraGoalType;\n status: BraGoalStatus;\n targetAmount: string;\n targetDate: string;\n monthlyContribution: string;\n priority: string;\n currency: string;\n householdId: string;\n notes: string;\n}\n\nfunction emptyForm(): GoalFormState {\n return {\n name: '',\n type: 'CUSTOM',\n status: 'ACTIVE',\n targetAmount: '',\n targetDate: '',\n monthlyContribution: '',\n priority: '1',\n currency: 'USD',\n householdId: '',\n notes: '',\n };\n}\n\nfunction formFromGoal(goal: BraGoal): GoalFormState {\n return {\n name: goal.name,\n type: goal.type,\n status: goal.status,\n targetAmount: String(goal.targetAmount),\n targetDate: toDateInput(goal.targetDate),\n monthlyContribution: String(goal.monthlyContribution),\n priority: String(goal.priority),\n currency: goal.currency,\n householdId: goal.householdId ?? '',\n notes: goal.notes ?? '',\n };\n}\n\nconst HOUSEHOLD_NONE = '__none__';\n\nexport function GoalsPage() {\n const { t } = useI18n();\n const translate = (key: string, fallback: string, params?: Record<string, string | number>) =>\n tWithFallback(t, key, fallback, params);\n\n const {\n items: goals,\n hasMore,\n loadMore,\n isFetchingNextPage,\n isLoading,\n isError,\n refetch,\n } = usePagedGoals();\n const { data: households } = useHouseholds();\n\n const createGoal = useCreateGoal();\n const updateGoal = useUpdateGoal();\n const archiveGoal = useArchiveGoal();\n\n const [createOpen, setCreateOpen] = useState(false);\n const [editing, setEditing] = useState<BraGoal | null>(null);\n const [detailId, setDetailId] = useState<string | null>(null);\n const [archiving, setArchiving] = useState<BraGoal | null>(null);\n const [form, setForm] = useState<GoalFormState>(emptyForm);\n\n const setField = <K extends keyof GoalFormState>(key: K, value: GoalFormState[K]) =>\n setForm((prev) => ({ ...prev, [key]: value }));\n\n const totals = useMemo(() => {\n const totalTarget = goals.reduce((s, g) => s + g.targetAmount, 0);\n const totalMonthly = goals.reduce((s, g) => s + g.monthlyContribution, 0);\n const atRisk = goals.filter(\n (g) => g.projection === 'AT_RISK' || g.projection === 'BEHIND'\n ).length;\n return { totalTarget, totalMonthly, atRisk };\n }, [goals]);\n\n const currency = goals[0]?.currency ?? 'USD';\n\n const openCreate = () => {\n setForm(emptyForm());\n setCreateOpen(true);\n };\n\n const openEdit = (goal: BraGoal) => {\n setForm(formFromGoal(goal));\n setEditing(goal);\n };\n\n const formValid =\n form.name.trim().length > 0 && Number(form.targetAmount) > 0 && form.targetDate.length > 0;\n\n const handleCreate = () => {\n if (!formValid) return;\n const input: BraCreateGoalInput = {\n name: form.name.trim(),\n type: form.type,\n targetAmount: Number(form.targetAmount),\n targetDate: new Date(form.targetDate).toISOString(),\n monthlyContribution: Number(form.monthlyContribution) || 0,\n priority: Number(form.priority) || 1,\n currency: form.currency.trim() || 'USD',\n notes: form.notes.trim() || null,\n tags: [],\n ...(form.householdId ? { householdId: form.householdId } : {}),\n };\n createGoal.mutate(input, { onSuccess: () => setCreateOpen(false) });\n };\n\n const handleUpdate = () => {\n if (!editing || !formValid) return;\n const input: BraUpdateGoalInput = {\n name: form.name.trim(),\n type: form.type,\n status: form.status,\n targetAmount: Number(form.targetAmount),\n targetDate: new Date(form.targetDate).toISOString(),\n monthlyContribution: Number(form.monthlyContribution) || 0,\n priority: Number(form.priority) || 1,\n currency: form.currency.trim() || 'USD',\n notes: form.notes.trim() || null,\n // Legacy `tags` scalar preserved as-is; the canonical tag surface is <TagField>.\n tags: editing.tags,\n };\n updateGoal.mutate({ id: editing.id, input }, { onSuccess: () => setEditing(null) });\n };\n\n const body = () => {\n if (isLoading) return <LoadingState rows={4} />;\n if (isError)\n return (\n <ErrorState\n title={translate('brainyrich.goals.error.title', 'Could not load goals')}\n description={translate(\n 'brainyrich.goals.error.description',\n 'We could not reach the goals service. Please try again.'\n )}\n onRetry={() => refetch()}\n />\n );\n if (goals.length === 0)\n return (\n <EmptyState\n icon={<Target className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.goals.empty.title', 'No financial goals yet')}\n description={translate(\n 'brainyrich.goals.empty.description',\n 'Create your first goal to start tracking progress toward a milestone.'\n )}\n action={\n <Button size=\"sm\" onClick={openCreate}>\n <Plus className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.goals.actions.createGoal', 'New goal')}\n </Button>\n }\n />\n );\n\n return (\n <>\n <div className=\"grid gap-4 sm:grid-cols-2 xl:grid-cols-4\">\n <FadeIn index={0}>\n <StatTile\n glow\n icon={<Target className=\"size-4\" aria-hidden=\"true\" />}\n label={translate('brainyrich.goals.metrics.activeGoals', 'Goals')}\n value={String(goals.length)}\n />\n </FadeIn>\n <FadeIn index={1}>\n <StatTile\n icon={<PiggyBank className=\"size-4\" aria-hidden=\"true\" />}\n label={translate('brainyrich.goals.metrics.totalTarget', 'Total target')}\n value={formatMoney(totals.totalTarget, currency)}\n />\n </FadeIn>\n <FadeIn index={2}>\n <StatTile\n icon={<Coins className=\"size-4\" aria-hidden=\"true\" />}\n label={translate('brainyrich.goals.metrics.monthly', 'Monthly contributions')}\n value={formatMoney(totals.totalMonthly, currency)}\n />\n </FadeIn>\n <FadeIn index={3}>\n <StatTile\n icon={<AlertTriangle className=\"size-4\" aria-hidden=\"true\" />}\n label={translate('brainyrich.goals.metrics.atRisk', 'Needs attention')}\n value={String(totals.atRisk)}\n className={\n totals.atRisk > 0\n ? 'ring-1 ring-status-error-text/30'\n : undefined\n }\n />\n </FadeIn>\n </div>\n\n <div className=\"grid gap-4 md:grid-cols-2 xl:grid-cols-3\">\n {goals.map((g, i) => {\n const proj = projectionMeta(g.projection);\n const ProjIcon = proj.icon;\n const tone = goalTone(g.status, g.projection);\n const pct = fundedPercent(g);\n const achieved = g.status === 'ACHIEVED';\n return (\n <FadeIn key={g.id} index={i}>\n <Card\n className={`group flex h-full flex-col transition-shadow motion-safe:hover:shadow-[var(--shadow-pop-hover,var(--shadow-elevation-2))] ${\n achieved ? 'ring-1 ring-status-success-text/30' : ''\n }`}\n >\n <CardHeader className=\"pb-3\">\n <div className=\"flex items-start justify-between gap-2\">\n <div className=\"min-w-0\">\n <CardTitle className=\"flex items-center gap-2 text-base\">\n <Target\n className=\"size-4 shrink-0 text-text-secondary\"\n aria-hidden=\"true\"\n />\n <span className=\"truncate\">{g.name}</span>\n </CardTitle>\n <CardDescription className=\"mt-1 flex flex-wrap items-center gap-2\">\n <Badge variant=\"outline\">{humanize(g.type)}</Badge>\n <Badge variant={statusBadgeVariant(g.status)}>{humanize(g.status)}</Badge>\n </CardDescription>\n </div>\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={translate('brainyrich.goals.actions.menu', 'Goal actions')}\n >\n <MoreHorizontal className=\"size-4\" aria-hidden=\"true\" />\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\">\n <DropdownMenuItem onSelect={() => setDetailId(g.id)}>\n <Link2 className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.goals.actions.manageFunding', 'Manage funding')}\n </DropdownMenuItem>\n <DropdownMenuItem onSelect={() => openEdit(g)}>\n <RefreshCw className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.goals.actions.editGoal', 'Edit goal')}\n </DropdownMenuItem>\n <DropdownMenuSeparator />\n <DropdownMenuItem\n className=\"text-status-error-text focus:text-status-error-text\"\n onSelect={() => setArchiving(g)}\n >\n <Trash2 className=\"size-4\" aria-hidden=\"true\" />\n {translate('brainyrich.goals.actions.archive', 'Archive goal')}\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n </div>\n </CardHeader>\n <CardContent className=\"flex flex-1 flex-col gap-4\">\n <div className=\"flex items-center gap-4\">\n <ProgressRing\n value={pct}\n tone={tone}\n size={92}\n strokeWidth={9}\n label={translate('brainyrich.goals.card.funded', 'funded')}\n />\n <div className=\"min-w-0 flex-1\">\n <p className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.target', 'Target amount')}\n </p>\n <p className=\"truncate text-2xl font-semibold text-text-primary\">\n {formatMoney(g.targetAmount, g.currency)}\n </p>\n <span\n className={`mt-1 inline-flex items-center gap-1 rounded-full bg-bg-sunken px-2 py-0.5 text-xs font-medium ${proj.tone}`}\n >\n <ProjIcon className=\"size-3.5\" aria-hidden=\"true\" />\n {humanize(g.projection)}\n </span>\n </div>\n </div>\n\n <dl className=\"grid grid-cols-2 gap-3 rounded-lg bg-bg-sunken p-3 text-sm\">\n <div>\n <dt className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.targetDate', 'Target date')}\n </dt>\n <dd className=\"flex items-center gap-1 font-medium text-text-primary\">\n <CalendarClock\n className=\"size-3.5 text-text-secondary\"\n aria-hidden=\"true\"\n />\n {formatDate(g.targetDate)}\n </dd>\n </div>\n <div>\n <dt className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.monthly', 'Monthly')}\n </dt>\n <dd className=\"font-medium text-text-primary\">\n {formatMoney(g.monthlyContribution, g.currency)}\n </dd>\n </div>\n <div>\n <dt className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.priority', 'Priority')}\n </dt>\n <dd className=\"font-medium text-text-primary\">{g.priority}</dd>\n </div>\n <div>\n <dt className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.card.fundings', 'Funding links')}\n </dt>\n <dd className=\"font-medium text-text-primary\">{g.fundings.length}</dd>\n </div>\n </dl>\n\n <div className=\"mt-auto\">\n <Button\n variant=\"outline\"\n size=\"sm\"\n className=\"w-full\"\n onClick={() => setDetailId(g.id)}\n >\n {translate('brainyrich.goals.actions.viewDetails', 'View details & funding')}\n </Button>\n </div>\n </CardContent>\n </Card>\n </FadeIn>\n );\n })}\n </div>\n\n <LoadMore\n hasMore={hasMore}\n loading={isFetchingNextPage}\n onClick={loadMore}\n label={translate('brainyrich.goals.actions.loadMore', 'Load more goals')}\n loadingLabel={translate('brainyrich.goals.actions.loadingMore', 'Loading…')}\n />\n </>\n );\n };\n\n return (\n <>\n <SectionShell\n title={translate('brainyrich.goals.title', 'Financial Goals')}\n description={translate(\n 'brainyrich.goals.description',\n 'Track progress toward your wealth milestones and life objectives'\n )}\n actionLabel={translate('brainyrich.goals.actions.createGoal', 'New goal')}\n onAction={openCreate}\n >\n {body()}\n </SectionShell>\n\n <GoalFormDialog\n open={createOpen}\n mode=\"create\"\n form={form}\n setField={setField}\n households={households.map((h) => ({ id: h.id, name: h.name }))}\n valid={formValid}\n pending={createGoal.isPending}\n onSubmit={handleCreate}\n onOpenChange={(v) => setCreateOpen(v)}\n translate={translate}\n />\n\n <GoalFormDialog\n open={Boolean(editing)}\n mode=\"edit\"\n goalId={editing?.id}\n form={form}\n setField={setField}\n households={households.map((h) => ({ id: h.id, name: h.name }))}\n valid={formValid}\n pending={updateGoal.isPending}\n onSubmit={handleUpdate}\n onOpenChange={(v) => {\n if (!v) setEditing(null);\n }}\n translate={translate}\n />\n\n <GoalDetailSheet goalId={detailId} onClose={() => setDetailId(null)} translate={translate} />\n\n <ConfirmDialog\n open={Boolean(archiving)}\n onOpenChange={(o) => {\n if (!o) setArchiving(null);\n }}\n title={translate('brainyrich.goals.archive.title', 'Archive goal?')}\n description={translate(\n 'brainyrich.goals.archive.description',\n 'This removes “{name}” from your active goals. You can no longer track its progress.',\n { name: archiving?.name ?? '' }\n )}\n confirmLabel={translate('brainyrich.goals.archive.confirm', 'Archive goal')}\n pendingLabel={translate('brainyrich.goals.archive.pending', 'Archiving…')}\n destructive\n pending={archiveGoal.isPending}\n onConfirm={() => {\n if (!archiving) return;\n archiveGoal.mutate(archiving.id, { onSuccess: () => setArchiving(null) });\n }}\n />\n </>\n );\n}\n\ntype Translate = (\n key: string,\n fallback: string,\n params?: Record<string, string | number>\n) => string;\n\ninterface GoalFormDialogProps {\n open: boolean;\n mode: 'create' | 'edit';\n goalId?: string;\n form: GoalFormState;\n setField: <K extends keyof GoalFormState>(key: K, value: GoalFormState[K]) => void;\n households: { id: string; name: string }[];\n valid: boolean;\n pending: boolean;\n onSubmit: () => void;\n onOpenChange: (open: boolean) => void;\n translate: Translate;\n}\n\nfunction GoalFormDialog({\n open,\n mode,\n goalId,\n form,\n setField,\n households,\n valid,\n pending,\n onSubmit,\n onOpenChange,\n translate,\n}: GoalFormDialogProps) {\n return (\n <Dialog open={open} onOpenChange={onOpenChange}>\n <DialogContent className=\"max-h-[90vh] overflow-y-auto sm:max-w-lg\">\n <DialogHeader>\n <DialogTitle>\n {mode === 'create'\n ? translate('brainyrich.goals.form.createTitle', 'New goal')\n : translate('brainyrich.goals.form.editTitle', 'Edit goal')}\n </DialogTitle>\n <DialogDescription>\n {translate(\n 'brainyrich.goals.form.subtitle',\n 'Define the milestone, target and contribution plan.'\n )}\n </DialogDescription>\n </DialogHeader>\n\n <form\n className=\"space-y-4\"\n onSubmit={(e) => {\n e.preventDefault();\n onSubmit();\n }}\n >\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-name\">{translate('brainyrich.goals.form.name', 'Name')}</Label>\n <Input\n id=\"goal-name\"\n value={form.name}\n onChange={(e) => setField('name', e.target.value)}\n placeholder={translate(\n 'brainyrich.goals.form.namePlaceholder',\n 'e.g. Retirement fund'\n )}\n required\n />\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-type\">{translate('brainyrich.goals.form.type', 'Type')}</Label>\n <Select value={form.type} onValueChange={(v) => setField('type', v as BraGoalType)}>\n <SelectTrigger id=\"goal-type\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {GOAL_TYPES.map((tpe) => (\n <SelectItem key={tpe} value={tpe}>\n {humanize(tpe)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n {mode === 'edit' ? (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-status\">\n {translate('brainyrich.goals.form.status', 'Status')}\n </Label>\n <Select\n value={form.status}\n onValueChange={(v) => setField('status', v as BraGoalStatus)}\n >\n <SelectTrigger id=\"goal-status\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {GOAL_STATUSES.map((st) => (\n <SelectItem key={st} value={st}>\n {humanize(st)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n ) : (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-priority\">\n {translate('brainyrich.goals.form.priority', 'Priority')}\n </Label>\n <Input\n id=\"goal-priority\"\n type=\"number\"\n min={1}\n value={form.priority}\n onChange={(e) => setField('priority', e.target.value)}\n />\n </div>\n )}\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-target\">\n {translate('brainyrich.goals.form.targetAmount', 'Target amount')}\n </Label>\n <Input\n id=\"goal-target\"\n type=\"number\"\n min={0}\n step=\"0.01\"\n value={form.targetAmount}\n onChange={(e) => setField('targetAmount', e.target.value)}\n required\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-date\">\n {translate('brainyrich.goals.form.targetDate', 'Target date')}\n </Label>\n <Input\n id=\"goal-date\"\n type=\"date\"\n value={form.targetDate}\n onChange={(e) => setField('targetDate', e.target.value)}\n required\n />\n </div>\n </div>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-monthly\">\n {translate('brainyrich.goals.form.monthly', 'Monthly contribution')}\n </Label>\n <Input\n id=\"goal-monthly\"\n type=\"number\"\n min={0}\n step=\"0.01\"\n value={form.monthlyContribution}\n onChange={(e) => setField('monthlyContribution', e.target.value)}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-currency\">\n {translate('brainyrich.goals.form.currency', 'Currency')}\n </Label>\n <Input\n id=\"goal-currency\"\n value={form.currency}\n onChange={(e) => setField('currency', e.target.value.toUpperCase())}\n maxLength={3}\n />\n </div>\n </div>\n\n {mode === 'edit' ? (\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-priority-edit\">\n {translate('brainyrich.goals.form.priority', 'Priority')}\n </Label>\n <Input\n id=\"goal-priority-edit\"\n type=\"number\"\n min={1}\n value={form.priority}\n onChange={(e) => setField('priority', e.target.value)}\n />\n </div>\n ) : null}\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-household\">\n {translate('brainyrich.goals.form.household', 'Household (optional)')}\n </Label>\n <Select\n value={form.householdId || HOUSEHOLD_NONE}\n onValueChange={(v) => setField('householdId', v === HOUSEHOLD_NONE ? '' : v)}\n >\n <SelectTrigger id=\"goal-household\">\n <SelectValue\n placeholder={translate('brainyrich.goals.form.householdNone', 'None')}\n />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value={HOUSEHOLD_NONE}>\n {translate('brainyrich.goals.form.householdNone', 'None')}\n </SelectItem>\n {households.map((h) => (\n <SelectItem key={h.id} value={h.id}>\n {h.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n\n {mode === 'edit' && goalId ? (\n <TagField\n entityType=\"brainyrich-goal\"\n entityId={goalId}\n label={translate('brainyrich.goals.form.tags', 'Tags')}\n />\n ) : (\n <div className=\"space-y-1.5\">\n <Label>{translate('brainyrich.goals.form.tags', 'Tags')}</Label>\n <p className=\"text-sm text-text-secondary\">\n {translate(\n 'brainyrich.goals.form.tagsAfterCreate',\n 'You can add tags after creating the goal.'\n )}\n </p>\n </div>\n )}\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"goal-notes\">{translate('brainyrich.goals.form.notes', 'Notes')}</Label>\n <Textarea\n id=\"goal-notes\"\n value={form.notes}\n onChange={(e) => setField('notes', e.target.value)}\n rows={3}\n />\n </div>\n\n <DialogFooter>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={() => onOpenChange(false)}\n disabled={pending}\n >\n {translate('brainyrich.goals.form.cancel', 'Cancel')}\n </Button>\n <Button type=\"submit\" disabled={!valid || pending}>\n {pending\n ? translate('brainyrich.goals.form.saving', 'Saving…')\n : mode === 'create'\n ? translate('brainyrich.goals.form.create', 'Create goal')\n : translate('brainyrich.goals.form.save', 'Save changes')}\n </Button>\n </DialogFooter>\n </form>\n </DialogContent>\n </Dialog>\n );\n}\n\ntype FundingMode = 'PERCENT' | 'FIXED';\n\ninterface GoalDetailSheetProps {\n goalId: string | null;\n onClose: () => void;\n translate: Translate;\n}\n\nfunction GoalDetailSheet({ goalId, onClose, translate }: GoalDetailSheetProps) {\n const { data: goal, isLoading, isError, refetch } = useGoal(goalId ?? undefined);\n const { data: fundings } = useGoalFundings(goalId ?? undefined);\n const { data: accounts } = useAccounts();\n\n const linkFunding = useLinkGoalFunding();\n const unlinkFunding = useUnlinkGoalFunding();\n const recalc = useRecalcGoalProjection();\n\n const [accountId, setAccountId] = useState('');\n const [fundingMode, setFundingMode] = useState<FundingMode>('PERCENT');\n const [fundingValue, setFundingValue] = useState('');\n const [fundedAmount, setFundedAmount] = useState('');\n const [unlinking, setUnlinking] = useState<BraGoalFunding | null>(null);\n\n const fixedFunded = fundings.reduce((s, f) => s + (f.fixedAmount ?? 0), 0);\n const currency = goal?.currency ?? 'USD';\n const fundedPct = goal ? fundedPercent(goal) : 0;\n const tone: VizTone = goal ? goalTone(goal.status, goal.projection) : 'brand';\n const projectionSeries = goal\n ? buildProjectionSeries(fixedFunded, goal.monthlyContribution, goal.targetDate)\n : [];\n\n const accountName = (id: string) => accounts.find((a) => a.id === id)?.name ?? id;\n\n const handleLink = () => {\n if (!goalId || !accountId) return;\n const numeric = Number(fundingValue);\n if (!Number.isFinite(numeric) || numeric <= 0) return;\n linkFunding.mutate(\n {\n goalId,\n accountId,\n ...(fundingMode === 'PERCENT' ? { allocationPct: numeric } : { fixedAmount: numeric }),\n },\n {\n onSuccess: () => {\n setAccountId('');\n setFundingValue('');\n },\n }\n );\n };\n\n const handleRecalc = () => {\n if (!goalId) return;\n const amount = fundedAmount === '' ? fixedFunded : Number(fundedAmount);\n if (!Number.isFinite(amount)) return;\n recalc.mutate({ id: goalId, fundedAmount: amount });\n };\n\n const linkValid = Boolean(accountId) && Number(fundingValue) > 0;\n\n const unlinkingLabel = unlinking\n ? unlinking.fixedAmount != null\n ? formatMoney(unlinking.fixedAmount, currency)\n : accountName(unlinking.accountId)\n : '';\n\n return (\n <>\n <Sheet\n open={Boolean(goalId)}\n onOpenChange={(v) => {\n if (!v) onClose();\n }}\n >\n <SheetContent className=\"flex w-full flex-col gap-0 overflow-y-auto sm:max-w-xl\">\n <SheetHeader>\n <SheetTitle>\n {goal?.name ?? translate('brainyrich.goals.detail.title', 'Goal')}\n </SheetTitle>\n <SheetDescription>\n {translate('brainyrich.goals.detail.subtitle', 'Manage funding links and projection.')}\n </SheetDescription>\n </SheetHeader>\n\n <div className=\"space-y-6 p-4\">\n {isLoading ? (\n <LoadingState rows={3} />\n ) : isError ? (\n <ErrorState\n title={translate('brainyrich.goals.detail.error', 'Could not load goal')}\n onRetry={() => refetch()}\n />\n ) : !goal ? (\n <EmptyState\n icon={<Target className=\"size-6\" aria-hidden=\"true\" />}\n title={translate('brainyrich.goals.detail.notFound', 'Goal not found')}\n />\n ) : (\n <>\n {/* Hero: funded progress ring + headline */}\n <GlassCard glow className=\"flex items-center gap-5\">\n <ProgressRing\n value={fundedPct}\n tone={tone}\n size={116}\n strokeWidth={11}\n label={translate('brainyrich.goals.detail.funded', 'funded')}\n />\n <div className=\"min-w-0 flex-1 space-y-1\">\n <Badge variant={statusBadgeVariant(goal.projection)}>\n {humanize(goal.projection)}\n </Badge>\n <p className=\"text-2xl font-semibold text-text-primary\">\n {formatMoney(fixedFunded, currency)}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {translate('brainyrich.goals.detail.ofTarget', 'of {target} target', {\n target: formatCompact(goal.targetAmount, currency),\n })}\n </p>\n </div>\n </GlassCard>\n\n <div className=\"grid grid-cols-2 gap-3\">\n <StatTile\n icon={<Target className=\"size-4\" aria-hidden=\"true\" />}\n label={translate('brainyrich.goals.detail.target', 'Target')}\n value={formatMoney(goal.targetAmount, currency)}\n />\n <StatTile\n icon={<Wallet className=\"size-4\" aria-hidden=\"true\" />}\n label={translate('brainyrich.goals.detail.funded', 'Funded (fixed)')}\n value={formatMoney(fixedFunded, currency)}\n />\n <StatTile\n icon={<Coins className=\"size-4\" aria-hidden=\"true\" />}\n label={translate('brainyrich.goals.detail.monthly', 'Monthly')}\n value={formatMoney(goal.monthlyContribution, currency)}\n />\n <StatTile\n icon={<CalendarClock className=\"size-4\" aria-hidden=\"true\" />}\n label={translate('brainyrich.goals.detail.targetDate', 'Target date')}\n value={formatDate(goal.targetDate)}\n />\n </div>\n\n {/* Projection trajectory toward the target line */}\n {projectionSeries.length >= 2 ? (\n <section className=\"space-y-3 rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <div className=\"flex items-center gap-2\">\n <LineChart className=\"size-4 text-text-secondary\" aria-hidden=\"true\" />\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {translate('brainyrich.goals.detail.projectionChart', 'Contribution projection')}\n </h3>\n </div>\n <MiniAreaChart\n data={projectionSeries}\n target={goal.targetAmount}\n tone={tone}\n height={180}\n valueFormatter={(v) => formatCompact(v, currency)}\n />\n <p className=\"text-xs text-text-secondary\">\n {translate(\n 'brainyrich.goals.detail.projectionHint',\n 'Starting balance plus {monthly}/mo through {date}.',\n {\n monthly: formatMoney(goal.monthlyContribution, currency),\n date: formatDate(goal.targetDate),\n }\n )}\n </p>\n </section>\n ) : null}\n\n {/* Funding sources table */}\n <section className=\"space-y-3\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {translate('brainyrich.goals.detail.fundingLinks', 'Funding sources')}\n </h3>\n {fundings.length === 0 ? (\n <p className=\"rounded-lg border border-dashed border-border-subtle bg-bg-surface px-4 py-6 text-center text-sm text-text-secondary\">\n {translate(\n 'brainyrich.goals.detail.noFundings',\n 'No accounts linked to fund this goal yet.'\n )}\n </p>\n ) : (\n <div className=\"overflow-x-auto rounded-lg border border-border-subtle\">\n <Table>\n <TableHeader>\n <TableRow>\n <TableHead>\n {translate('brainyrich.goals.detail.account', 'Account')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.goals.detail.allocation', 'Allocation')}\n </TableHead>\n <TableHead className=\"text-right\">\n {translate('brainyrich.goals.detail.fixedAmount', 'Fixed amount')}\n </TableHead>\n <TableHead className=\"w-10\" />\n </TableRow>\n </TableHeader>\n <TableBody>\n {fundings.map((f) => (\n <TableRow key={f.id}>\n <TableCell className=\"font-medium text-text-primary\">\n {accountName(f.accountId)}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-secondary\">\n {f.fixedAmount == null ? formatPct(f.allocationPct) : '—'}\n </TableCell>\n <TableCell className=\"text-right tabular-nums text-text-secondary\">\n {f.fixedAmount != null ? formatMoney(f.fixedAmount, currency) : '—'}\n </TableCell>\n <TableCell className=\"text-right\">\n <Button\n variant=\"ghost\"\n size=\"icon\"\n aria-label={translate(\n 'brainyrich.goals.detail.unlink',\n 'Unlink funding'\n )}\n onClick={() => setUnlinking(f)}\n >\n <Unlink className=\"size-4\" aria-hidden=\"true\" />\n </Button>\n </TableCell>\n </TableRow>\n ))}\n </TableBody>\n </Table>\n </div>\n )}\n </section>\n\n {/* Link a new funding */}\n <section className=\"space-y-3 rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {translate('brainyrich.goals.detail.linkTitle', 'Link an account')}\n </h3>\n {accounts.length === 0 ? (\n <p className=\"text-sm text-text-secondary\">\n {translate(\n 'brainyrich.goals.detail.noAccounts',\n 'No accounts available to link.'\n )}\n </p>\n ) : (\n <>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"funding-account\">\n {translate('brainyrich.goals.detail.account', 'Account')}\n </Label>\n <Select value={accountId} onValueChange={setAccountId}>\n <SelectTrigger id=\"funding-account\">\n <SelectValue\n placeholder={translate(\n 'brainyrich.goals.detail.selectAccount',\n 'Select account'\n )}\n />\n </SelectTrigger>\n <SelectContent>\n {accounts.map((a) => (\n <SelectItem key={a.id} value={a.id}>\n {a.name}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"funding-mode\">\n {translate('brainyrich.goals.detail.mode', 'Method')}\n </Label>\n <Select\n value={fundingMode}\n onValueChange={(v) => setFundingMode(v as FundingMode)}\n >\n <SelectTrigger id=\"funding-mode\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n <SelectItem value=\"PERCENT\">\n {translate('brainyrich.goals.detail.percent', 'Percentage')}\n </SelectItem>\n <SelectItem value=\"FIXED\">\n {translate('brainyrich.goals.detail.fixed', 'Fixed amount')}\n </SelectItem>\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"funding-value\">\n {fundingMode === 'PERCENT'\n ? translate('brainyrich.goals.detail.pct', 'Percent')\n : translate('brainyrich.goals.detail.amount', 'Amount')}\n </Label>\n <Input\n id=\"funding-value\"\n type=\"number\"\n min={0}\n step=\"0.01\"\n value={fundingValue}\n onChange={(e) => setFundingValue(e.target.value)}\n />\n </div>\n </div>\n <Button\n size=\"sm\"\n className=\"w-full\"\n disabled={!linkValid || linkFunding.isPending}\n onClick={handleLink}\n >\n <Link2 className=\"size-4\" aria-hidden=\"true\" />\n {linkFunding.isPending\n ? translate('brainyrich.goals.detail.linking', 'Linking…')\n : translate('brainyrich.goals.detail.link', 'Link funding')}\n </Button>\n </>\n )}\n </section>\n\n {/* Recalc projection */}\n <section className=\"space-y-3 rounded-lg border border-border-subtle bg-bg-surface p-4\">\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {translate('brainyrich.goals.detail.recalcTitle', 'Recalculate projection')}\n </h3>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"recalc-funded\">\n {translate('brainyrich.goals.detail.fundedAmount', 'Funded amount')}\n </Label>\n <Input\n id=\"recalc-funded\"\n type=\"number\"\n min={0}\n step=\"0.01\"\n value={fundedAmount}\n placeholder={String(fixedFunded)}\n onChange={(e) => setFundedAmount(e.target.value)}\n />\n <p className=\"text-xs text-text-secondary\">\n {translate(\n 'brainyrich.goals.detail.recalcHint',\n 'Defaults to the sum of fixed fundings when left blank.'\n )}\n </p>\n </div>\n <Button\n size=\"sm\"\n variant=\"outline\"\n className=\"w-full\"\n disabled={recalc.isPending}\n onClick={handleRecalc}\n >\n <RefreshCw className=\"size-4\" aria-hidden=\"true\" />\n {recalc.isPending\n ? translate('brainyrich.goals.detail.recalculating', 'Recalculating…')\n : translate('brainyrich.goals.detail.recalc', 'Recalculate')}\n </Button>\n </section>\n </>\n )}\n </div>\n </SheetContent>\n </Sheet>\n\n <ConfirmDialog\n open={Boolean(unlinking)}\n onOpenChange={(o) => {\n if (!o) setUnlinking(null);\n }}\n title={translate('brainyrich.goals.detail.unlinkTitle', 'Unlink funding?')}\n description={translate(\n 'brainyrich.goals.detail.unlinkConfirm',\n 'This removes the “{name}” funding link from this goal.',\n { name: unlinkingLabel }\n )}\n confirmLabel={translate('brainyrich.goals.detail.unlink', 'Unlink funding')}\n pendingLabel={translate('brainyrich.goals.detail.unlinking', 'Unlinking…')}\n destructive\n pending={unlinkFunding.isPending}\n onConfirm={() => {\n if (!unlinking) return;\n unlinkFunding.mutate(unlinking.id, { onSuccess: () => setUnlinking(null) });\n }}\n />\n </>\n );\n}\n\n"],"mappings":"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"}
|