@burdenoff/microfe-mybodyshield 2026.1028.1 → 2026.1101.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/_rolldown/runtime.js +11 -5
- package/dist/dev/main.d.ts +0 -1
- package/dist/mybodyshield/MyBodyShieldRoot.d.ts +0 -1
- package/dist/mybodyshield/MyBodyShieldRoot.js +22 -21
- package/dist/mybodyshield/MyBodyShieldRoot.js.map +1 -1
- package/dist/mybodyshield/MyBodyShieldRoutes.d.ts +0 -1
- package/dist/mybodyshield/MyBodyShieldRoutes.js +5 -6
- package/dist/mybodyshield/MyBodyShieldRoutes.js.map +1 -1
- package/dist/mybodyshield/components/DataTable.d.ts +1 -2
- package/dist/mybodyshield/components/DataTable.js +1 -2
- package/dist/mybodyshield/components/DataTable.js.map +1 -1
- package/dist/mybodyshield/components/EmptyState.d.ts +0 -1
- package/dist/mybodyshield/components/EmptyState.js +1 -2
- package/dist/mybodyshield/components/EmptyState.js.map +1 -1
- package/dist/mybodyshield/components/EvidenceUpload.d.ts +1 -2
- package/dist/mybodyshield/components/EvidenceUpload.js +1 -2
- package/dist/mybodyshield/components/EvidenceUpload.js.map +1 -1
- package/dist/mybodyshield/components/FeatureFlagGuard.d.ts +0 -1
- package/dist/mybodyshield/components/FeatureFlagGuard.js +1 -2
- package/dist/mybodyshield/components/FeatureFlagGuard.js.map +1 -1
- package/dist/mybodyshield/components/FileLink.d.ts +1 -1
- package/dist/mybodyshield/components/FileLink.js +1 -2
- package/dist/mybodyshield/components/FileLink.js.map +1 -1
- package/dist/mybodyshield/components/FilterTabs.d.ts +1 -1
- package/dist/mybodyshield/components/FilterTabs.js +1 -2
- package/dist/mybodyshield/components/FilterTabs.js.map +1 -1
- package/dist/mybodyshield/components/MetricsCard.d.ts +0 -1
- package/dist/mybodyshield/components/MetricsCard.js +1 -2
- package/dist/mybodyshield/components/MetricsCard.js.map +1 -1
- package/dist/mybodyshield/components/MiniBar.d.ts +1 -1
- package/dist/mybodyshield/components/MiniBar.js +1 -2
- package/dist/mybodyshield/components/MiniBar.js.map +1 -1
- package/dist/mybodyshield/components/MybDiscussion.d.ts +1 -1
- package/dist/mybodyshield/components/MybDiscussion.js +15 -16
- package/dist/mybodyshield/components/MybDiscussion.js.map +1 -1
- package/dist/mybodyshield/components/MybTags.d.ts +1 -1
- package/dist/mybodyshield/components/MybTags.js +1 -2
- package/dist/mybodyshield/components/MybTags.js.map +1 -1
- package/dist/mybodyshield/components/PageDisabled.d.ts +0 -1
- package/dist/mybodyshield/components/PageDisabled.js +1 -2
- package/dist/mybodyshield/components/PageDisabled.js.map +1 -1
- package/dist/mybodyshield/components/PageLayout.d.ts +0 -1
- package/dist/mybodyshield/components/PageLayout.js +1 -2
- package/dist/mybodyshield/components/PageLayout.js.map +1 -1
- package/dist/mybodyshield/components/Pagination.d.ts +1 -1
- package/dist/mybodyshield/components/Pagination.js +1 -2
- package/dist/mybodyshield/components/Pagination.js.map +1 -1
- package/dist/mybodyshield/components/StateViews.d.ts +0 -1
- package/dist/mybodyshield/components/StateViews.js +1 -2
- package/dist/mybodyshield/components/StateViews.js.map +1 -1
- package/dist/mybodyshield/components/StatusBadge.d.ts +0 -1
- package/dist/mybodyshield/components/StatusBadge.js +2 -3
- package/dist/mybodyshield/components/StatusBadge.js.map +1 -1
- package/dist/mybodyshield/components/Tabs.d.ts +1 -2
- package/dist/mybodyshield/components/Tabs.js +1 -2
- package/dist/mybodyshield/components/Tabs.js.map +1 -1
- package/dist/mybodyshield/components/UserSearchSelect.d.ts +1 -1
- package/dist/mybodyshield/components/UserSearchSelect.js +1 -2
- package/dist/mybodyshield/components/UserSearchSelect.js.map +1 -1
- package/dist/mybodyshield/components/index.js +18 -17
- package/dist/mybodyshield/context/MyBodyShieldContext.d.ts +0 -1
- package/dist/mybodyshield/context/MyBodyShieldContext.js +1 -2
- package/dist/mybodyshield/context/MyBodyShieldContext.js.map +1 -1
- package/dist/mybodyshield/context/index.js +1 -1
- package/dist/mybodyshield/data/programTemplates.d.ts +0 -1
- package/dist/mybodyshield/data/programTemplates.js +1 -2
- package/dist/mybodyshield/data/programTemplates.js.map +1 -1
- package/dist/mybodyshield/hooks/index.js +9 -8
- package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js +1 -2
- package/dist/mybodyshield/hooks/useMyBodyShieldAnalytics.js.map +1 -1
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.d.ts +0 -1
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.js +1 -2
- package/dist/mybodyshield/hooks/useMyBodyShieldApi.js.map +1 -1
- package/dist/mybodyshield/hooks/useMybComments.js +1 -2
- package/dist/mybodyshield/hooks/useMybComments.js.map +1 -1
- package/dist/mybodyshield/hooks/useMybFiles.js +1 -2
- package/dist/mybodyshield/hooks/useMybFiles.js.map +1 -1
- package/dist/mybodyshield/hooks/useMybTags.js +6 -7
- package/dist/mybodyshield/hooks/useMybTags.js.map +1 -1
- package/dist/mybodyshield/hooks/useMybUsers.js +1 -2
- package/dist/mybodyshield/hooks/useMybUsers.js.map +1 -1
- package/dist/mybodyshield/hooks/usePager.js +1 -2
- package/dist/mybodyshield/hooks/usePager.js.map +1 -1
- package/dist/mybodyshield/hooks/useTr.d.ts +0 -1
- package/dist/mybodyshield/hooks/useTr.js +1 -2
- package/dist/mybodyshield/hooks/useTr.js.map +1 -1
- package/dist/mybodyshield/index.js +6 -5
- package/dist/mybodyshield/lib/offlineSessionQueue.js +34 -35
- package/dist/mybodyshield/lib/offlineSessionQueue.js.map +1 -1
- package/dist/mybodyshield/lib/useOfflineSessionSync.d.ts +0 -1
- package/dist/mybodyshield/lib/useOfflineSessionSync.js +1 -2
- package/dist/mybodyshield/lib/useOfflineSessionSync.js.map +1 -1
- package/dist/mybodyshield/pages/DashboardPage.d.ts +1 -1
- package/dist/mybodyshield/pages/DashboardPage.js +132 -133
- package/dist/mybodyshield/pages/DashboardPage.js.map +1 -1
- package/dist/mybodyshield/pages/SettingsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/SettingsPage.js +2 -3
- package/dist/mybodyshield/pages/SettingsPage.js.map +1 -1
- package/dist/mybodyshield/pages/_shared/visuals.d.ts +0 -1
- package/dist/mybodyshield/pages/_shared/visuals.js +1 -2
- package/dist/mybodyshield/pages/_shared/visuals.js.map +1 -1
- package/dist/mybodyshield/pages/ai/AiControlsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/ai/AiControlsPage.js +90 -91
- package/dist/mybodyshield/pages/ai/AiControlsPage.js.map +1 -1
- package/dist/mybodyshield/pages/coaching/CoachClientPage.d.ts +1 -1
- package/dist/mybodyshield/pages/coaching/CoachClientPage.js +35 -37
- package/dist/mybodyshield/pages/coaching/CoachClientPage.js.map +1 -1
- package/dist/mybodyshield/pages/coaching/CoachingPage.d.ts +1 -1
- package/dist/mybodyshield/pages/coaching/CoachingPage.js +169 -170
- package/dist/mybodyshield/pages/coaching/CoachingPage.js.map +1 -1
- package/dist/mybodyshield/pages/coaching/coachAnalytics.d.ts +0 -1
- package/dist/mybodyshield/pages/coaching/coachAnalytics.js +1 -2
- package/dist/mybodyshield/pages/coaching/coachAnalytics.js.map +1 -1
- package/dist/mybodyshield/pages/goals/GoalsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/goals/GoalsPage.js +219 -221
- package/dist/mybodyshield/pages/goals/GoalsPage.js.map +1 -1
- package/dist/mybodyshield/pages/insights/InsightsCharts.d.ts +5 -6
- package/dist/mybodyshield/pages/insights/InsightsCharts.js +117 -118
- package/dist/mybodyshield/pages/insights/InsightsCharts.js.map +1 -1
- package/dist/mybodyshield/pages/insights/InsightsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/insights/InsightsPage.js +67 -68
- package/dist/mybodyshield/pages/insights/InsightsPage.js.map +1 -1
- package/dist/mybodyshield/pages/nutrition/NutritionPage.d.ts +1 -1
- package/dist/mybodyshield/pages/nutrition/NutritionPage.js +519 -518
- package/dist/mybodyshield/pages/nutrition/NutritionPage.js.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.d.ts +1 -1
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.js +420 -421
- package/dist/mybodyshield/pages/programs/ProgramDetailPage.js.map +1 -1
- package/dist/mybodyshield/pages/programs/ProgramsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/programs/ProgramsPage.js +258 -259
- package/dist/mybodyshield/pages/programs/ProgramsPage.js.map +1 -1
- package/dist/mybodyshield/pages/progress/ProgressPage.d.ts +1 -1
- package/dist/mybodyshield/pages/progress/ProgressPage.js +139 -140
- package/dist/mybodyshield/pages/progress/ProgressPage.js.map +1 -1
- package/dist/mybodyshield/pages/recovery/MindfulnessPage.d.ts +1 -1
- package/dist/mybodyshield/pages/recovery/MindfulnessPage.js +3 -4
- package/dist/mybodyshield/pages/recovery/MindfulnessPage.js.map +1 -1
- package/dist/mybodyshield/pages/recovery/RecoveryPage.d.ts +1 -1
- package/dist/mybodyshield/pages/recovery/RecoveryPage.js +205 -206
- package/dist/mybodyshield/pages/recovery/RecoveryPage.js.map +1 -1
- package/dist/mybodyshield/pages/train/SessionDetailPage.d.ts +1 -1
- package/dist/mybodyshield/pages/train/SessionDetailPage.js +118 -125
- package/dist/mybodyshield/pages/train/SessionDetailPage.js.map +1 -1
- package/dist/mybodyshield/pages/train/SessionsPage.d.ts +1 -1
- package/dist/mybodyshield/pages/train/SessionsPage.js +156 -157
- package/dist/mybodyshield/pages/train/SessionsPage.js.map +1 -1
- package/dist/mybodyshield/services/createSandboxAssistantTransport.js +1 -2
- package/dist/mybodyshield/services/createSandboxAssistantTransport.js.map +1 -1
- package/dist/mybodyshield/types/index.d.ts +0 -1
- package/dist/mybodyshield/utils/cn.d.ts +0 -1
- package/dist/mybodyshield/utils/cn.js +2 -3
- package/dist/mybodyshield/utils/cn.js.map +1 -1
- package/dist/mybodyshield/utils/formatters.js +1 -2
- package/dist/mybodyshield/utils/formatters.js.map +1 -1
- package/dist/mybodyshield/utils/i18n.d.ts +0 -1
- package/dist/mybodyshield/utils/i18n.js +1 -2
- package/dist/mybodyshield/utils/i18n.js.map +1 -1
- package/dist/mybodyshield/utils/navigation.js +1 -2
- package/dist/mybodyshield/utils/navigation.js.map +1 -1
- package/dist/mybodyshield/utils/pageContext.js +2 -3
- package/dist/mybodyshield/utils/pageContext.js.map +1 -1
- package/dist/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js +4 -5
- package/dist/node_modules/@emotion/is-prop-valid/dist/emotion-is-prop-valid.esm.js.map +1 -1
- package/dist/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js +2 -3
- package/dist/node_modules/@emotion/memoize/dist/emotion-memoize.esm.js.map +1 -1
- package/dist/node_modules/clsx/dist/clsx.js +8 -7
- package/dist/node_modules/clsx/dist/clsx.js.map +1 -1
- package/dist/node_modules/d3-array/src/ascending.js +1 -2
- package/dist/node_modules/d3-array/src/ascending.js.map +1 -1
- package/dist/node_modules/d3-array/src/bisect.js +2 -3
- package/dist/node_modules/d3-array/src/bisect.js.map +1 -1
- package/dist/node_modules/d3-array/src/bisector.js +1 -2
- package/dist/node_modules/d3-array/src/bisector.js.map +1 -1
- package/dist/node_modules/d3-array/src/descending.js +1 -2
- package/dist/node_modules/d3-array/src/descending.js.map +1 -1
- package/dist/node_modules/d3-array/src/max.js +1 -2
- package/dist/node_modules/d3-array/src/max.js.map +1 -1
- package/dist/node_modules/d3-array/src/min.js +1 -2
- package/dist/node_modules/d3-array/src/min.js.map +1 -1
- package/dist/node_modules/d3-array/src/number.js +1 -2
- package/dist/node_modules/d3-array/src/number.js.map +1 -1
- package/dist/node_modules/d3-array/src/quantile.js +17 -18
- package/dist/node_modules/d3-array/src/quantile.js.map +1 -1
- package/dist/node_modules/d3-array/src/quickselect.js +1 -2
- package/dist/node_modules/d3-array/src/quickselect.js.map +1 -1
- package/dist/node_modules/d3-array/src/range.js +1 -2
- package/dist/node_modules/d3-array/src/range.js.map +1 -1
- package/dist/node_modules/d3-array/src/sort.js +1 -2
- package/dist/node_modules/d3-array/src/sort.js.map +1 -1
- package/dist/node_modules/d3-array/src/ticks.js +5 -5
- package/dist/node_modules/d3-array/src/ticks.js.map +1 -1
- package/dist/node_modules/d3-color/src/color.js +2 -3
- package/dist/node_modules/d3-color/src/color.js.map +1 -1
- package/dist/node_modules/d3-color/src/define.js +1 -2
- package/dist/node_modules/d3-color/src/define.js.map +1 -1
- package/dist/node_modules/d3-format/src/defaultLocale.js +2 -3
- package/dist/node_modules/d3-format/src/defaultLocale.js.map +1 -1
- package/dist/node_modules/d3-format/src/exponent.js +1 -2
- package/dist/node_modules/d3-format/src/exponent.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatDecimal.js +1 -2
- package/dist/node_modules/d3-format/src/formatDecimal.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatGroup.js +1 -2
- package/dist/node_modules/d3-format/src/formatGroup.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatNumerals.js +1 -2
- package/dist/node_modules/d3-format/src/formatNumerals.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatPrefixAuto.js +1 -2
- package/dist/node_modules/d3-format/src/formatPrefixAuto.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatRounded.js +1 -2
- package/dist/node_modules/d3-format/src/formatRounded.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatSpecifier.js +2 -3
- package/dist/node_modules/d3-format/src/formatSpecifier.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatTrim.js +1 -3
- package/dist/node_modules/d3-format/src/formatTrim.js.map +1 -1
- package/dist/node_modules/d3-format/src/formatTypes.js +1 -2
- package/dist/node_modules/d3-format/src/formatTypes.js.map +1 -1
- package/dist/node_modules/d3-format/src/identity.js +1 -2
- package/dist/node_modules/d3-format/src/identity.js.map +1 -1
- package/dist/node_modules/d3-format/src/locale.js +10 -13
- package/dist/node_modules/d3-format/src/locale.js.map +1 -1
- package/dist/node_modules/d3-format/src/precisionFixed.js +1 -2
- package/dist/node_modules/d3-format/src/precisionFixed.js.map +1 -1
- package/dist/node_modules/d3-format/src/precisionPrefix.js +1 -2
- package/dist/node_modules/d3-format/src/precisionPrefix.js.map +1 -1
- package/dist/node_modules/d3-format/src/precisionRound.js +1 -2
- package/dist/node_modules/d3-format/src/precisionRound.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/array.js +2 -4
- package/dist/node_modules/d3-interpolate/src/array.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/basis.js +1 -2
- package/dist/node_modules/d3-interpolate/src/basis.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/basisClosed.js +1 -2
- package/dist/node_modules/d3-interpolate/src/basisClosed.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/color.js +1 -2
- package/dist/node_modules/d3-interpolate/src/color.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/constant.js +1 -2
- package/dist/node_modules/d3-interpolate/src/constant.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/date.js +1 -2
- package/dist/node_modules/d3-interpolate/src/date.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/number.js +1 -2
- package/dist/node_modules/d3-interpolate/src/number.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/numberArray.js +1 -2
- package/dist/node_modules/d3-interpolate/src/numberArray.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/object.js +2 -3
- package/dist/node_modules/d3-interpolate/src/object.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/piecewise.js +1 -2
- package/dist/node_modules/d3-interpolate/src/piecewise.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/rgb.js +1 -2
- package/dist/node_modules/d3-interpolate/src/rgb.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/round.js +1 -2
- package/dist/node_modules/d3-interpolate/src/round.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/string.js +1 -2
- package/dist/node_modules/d3-interpolate/src/string.js.map +1 -1
- package/dist/node_modules/d3-interpolate/src/value.js +10 -11
- package/dist/node_modules/d3-interpolate/src/value.js.map +1 -1
- package/dist/node_modules/d3-path/src/path.js +8 -7
- package/dist/node_modules/d3-path/src/path.js.map +1 -1
- package/dist/node_modules/d3-scale/src/band.js +1 -2
- package/dist/node_modules/d3-scale/src/band.js.map +1 -1
- package/dist/node_modules/d3-scale/src/constant.js +1 -2
- package/dist/node_modules/d3-scale/src/constant.js.map +1 -1
- package/dist/node_modules/d3-scale/src/continuous.js +7 -8
- package/dist/node_modules/d3-scale/src/continuous.js.map +1 -1
- package/dist/node_modules/d3-scale/src/diverging.js +35 -36
- package/dist/node_modules/d3-scale/src/diverging.js.map +1 -1
- package/dist/node_modules/d3-scale/src/identity.js +6 -7
- package/dist/node_modules/d3-scale/src/identity.js.map +1 -1
- package/dist/node_modules/d3-scale/src/init.js +3 -8
- package/dist/node_modules/d3-scale/src/init.js.map +1 -1
- package/dist/node_modules/d3-scale/src/linear.js +6 -7
- package/dist/node_modules/d3-scale/src/linear.js.map +1 -1
- package/dist/node_modules/d3-scale/src/log.js +32 -33
- package/dist/node_modules/d3-scale/src/log.js.map +1 -1
- package/dist/node_modules/d3-scale/src/nice.js +1 -2
- package/dist/node_modules/d3-scale/src/nice.js.map +1 -1
- package/dist/node_modules/d3-scale/src/number.js +1 -2
- package/dist/node_modules/d3-scale/src/number.js.map +1 -1
- package/dist/node_modules/d3-scale/src/ordinal.js +1 -2
- package/dist/node_modules/d3-scale/src/ordinal.js.map +1 -1
- package/dist/node_modules/d3-scale/src/pow.js +13 -14
- package/dist/node_modules/d3-scale/src/pow.js.map +1 -1
- package/dist/node_modules/d3-scale/src/quantile.js +2 -3
- package/dist/node_modules/d3-scale/src/quantile.js.map +1 -1
- package/dist/node_modules/d3-scale/src/quantize.js +5 -6
- package/dist/node_modules/d3-scale/src/quantize.js.map +1 -1
- package/dist/node_modules/d3-scale/src/radial.js +8 -9
- package/dist/node_modules/d3-scale/src/radial.js.map +1 -1
- package/dist/node_modules/d3-scale/src/sequential.js +27 -28
- package/dist/node_modules/d3-scale/src/sequential.js.map +1 -1
- package/dist/node_modules/d3-scale/src/sequentialQuantile.js +6 -7
- package/dist/node_modules/d3-scale/src/sequentialQuantile.js.map +1 -1
- package/dist/node_modules/d3-scale/src/symlog.js +12 -13
- package/dist/node_modules/d3-scale/src/symlog.js.map +1 -1
- package/dist/node_modules/d3-scale/src/threshold.js +2 -3
- package/dist/node_modules/d3-scale/src/threshold.js.map +1 -1
- package/dist/node_modules/d3-scale/src/tickFormat.js +7 -10
- package/dist/node_modules/d3-scale/src/tickFormat.js.map +1 -1
- package/dist/node_modules/d3-scale/src/time.js +27 -28
- package/dist/node_modules/d3-scale/src/time.js.map +1 -1
- package/dist/node_modules/d3-scale/src/utcTime.js +13 -14
- package/dist/node_modules/d3-scale/src/utcTime.js.map +1 -1
- package/dist/node_modules/d3-shape/src/area.js +34 -33
- package/dist/node_modules/d3-shape/src/area.js.map +1 -1
- package/dist/node_modules/d3-shape/src/array.js +0 -1
- package/dist/node_modules/d3-shape/src/array.js.map +1 -1
- package/dist/node_modules/d3-shape/src/constant.js +1 -2
- package/dist/node_modules/d3-shape/src/constant.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/basis.js +4 -9
- package/dist/node_modules/d3-shape/src/curve/basis.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/basisClosed.js +3 -8
- package/dist/node_modules/d3-shape/src/curve/basisClosed.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/basisOpen.js +2 -5
- package/dist/node_modules/d3-shape/src/curve/basisOpen.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/bump.js +2 -5
- package/dist/node_modules/d3-shape/src/curve/bump.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/linear.js +2 -5
- package/dist/node_modules/d3-shape/src/curve/linear.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/linearClosed.js +1 -2
- package/dist/node_modules/d3-shape/src/curve/linearClosed.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/monotone.js +4 -9
- package/dist/node_modules/d3-shape/src/curve/monotone.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/natural.js +5 -4
- package/dist/node_modules/d3-shape/src/curve/natural.js.map +1 -1
- package/dist/node_modules/d3-shape/src/curve/step.js +6 -9
- package/dist/node_modules/d3-shape/src/curve/step.js.map +1 -1
- package/dist/node_modules/d3-shape/src/line.js +16 -17
- package/dist/node_modules/d3-shape/src/line.js.map +1 -1
- package/dist/node_modules/d3-shape/src/math.js +1 -2
- package/dist/node_modules/d3-shape/src/math.js.map +1 -1
- package/dist/node_modules/d3-shape/src/noop.js +1 -2
- package/dist/node_modules/d3-shape/src/noop.js.map +1 -1
- package/dist/node_modules/d3-shape/src/offset/expand.js +1 -2
- package/dist/node_modules/d3-shape/src/offset/expand.js.map +1 -1
- package/dist/node_modules/d3-shape/src/offset/none.js +1 -2
- package/dist/node_modules/d3-shape/src/offset/none.js.map +1 -1
- package/dist/node_modules/d3-shape/src/offset/silhouette.js +1 -2
- package/dist/node_modules/d3-shape/src/offset/silhouette.js.map +1 -1
- package/dist/node_modules/d3-shape/src/offset/wiggle.js +2 -3
- package/dist/node_modules/d3-shape/src/offset/wiggle.js.map +1 -1
- package/dist/node_modules/d3-shape/src/order/none.js +1 -2
- package/dist/node_modules/d3-shape/src/order/none.js.map +1 -1
- package/dist/node_modules/d3-shape/src/path.js +1 -2
- package/dist/node_modules/d3-shape/src/path.js.map +1 -1
- package/dist/node_modules/d3-shape/src/point.js +1 -2
- package/dist/node_modules/d3-shape/src/point.js.map +1 -1
- package/dist/node_modules/d3-shape/src/stack.js +13 -14
- package/dist/node_modules/d3-shape/src/stack.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/circle.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/circle.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/cross.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/cross.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/diamond.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/diamond.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/square.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/square.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/star.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/star.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/triangle.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/triangle.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol/wye.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol/wye.js.map +1 -1
- package/dist/node_modules/d3-shape/src/symbol.js +1 -2
- package/dist/node_modules/d3-shape/src/symbol.js.map +1 -1
- package/dist/node_modules/d3-time/src/day.js +1 -2
- package/dist/node_modules/d3-time/src/day.js.map +1 -1
- package/dist/node_modules/d3-time/src/duration.js +1 -2
- package/dist/node_modules/d3-time/src/duration.js.map +1 -1
- package/dist/node_modules/d3-time/src/hour.js +1 -2
- package/dist/node_modules/d3-time/src/hour.js.map +1 -1
- package/dist/node_modules/d3-time/src/interval.js +5 -4
- package/dist/node_modules/d3-time/src/interval.js.map +1 -1
- package/dist/node_modules/d3-time/src/millisecond.js +1 -2
- package/dist/node_modules/d3-time/src/millisecond.js.map +1 -1
- package/dist/node_modules/d3-time/src/minute.js +1 -2
- package/dist/node_modules/d3-time/src/minute.js.map +1 -1
- package/dist/node_modules/d3-time/src/month.js +1 -2
- package/dist/node_modules/d3-time/src/month.js.map +1 -1
- package/dist/node_modules/d3-time/src/second.js +1 -2
- package/dist/node_modules/d3-time/src/second.js.map +1 -1
- package/dist/node_modules/d3-time/src/ticks.js +27 -28
- package/dist/node_modules/d3-time/src/ticks.js.map +1 -1
- package/dist/node_modules/d3-time/src/week.js +2 -3
- package/dist/node_modules/d3-time/src/week.js.map +1 -1
- package/dist/node_modules/d3-time/src/year.js +1 -2
- package/dist/node_modules/d3-time/src/year.js.map +1 -1
- package/dist/node_modules/d3-time-format/src/defaultLocale.js +6 -7
- package/dist/node_modules/d3-time-format/src/defaultLocale.js.map +1 -1
- package/dist/node_modules/d3-time-format/src/locale.js +1 -2
- package/dist/node_modules/d3-time-format/src/locale.js.map +1 -1
- package/dist/node_modules/decimal.js-light/decimal.js +33 -30
- package/dist/node_modules/decimal.js-light/decimal.js.map +1 -1
- package/dist/node_modules/eventemitter3/index.js +2 -3
- package/dist/node_modules/eventemitter3/index.js.map +1 -1
- package/dist/node_modules/fast-equals/dist/es/index.js +3 -4
- package/dist/node_modules/fast-equals/dist/es/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.js +3 -4
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PopChild.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js +7 -8
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/PresenceChild.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/use-presence.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/components/AnimatePresence/utils.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/LayoutGroupContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/LazyContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/LazyContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/MotionConfigContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/create.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/index.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js +7 -8
- package/dist/node_modules/framer-motion/dist/es/context/MotionContext/utils.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/PresenceContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/PresenceContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/context/SwitchLayoutGroupContext.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/events/add-pointer-event.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/events/event-info.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/events/event-info.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js +92 -101
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/VisualElementDragControls.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js +11 -12
- package/dist/node_modules/framer-motion/dist/es/gestures/drag/utils/constraints.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/gestures/focus.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/gestures/hover.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js +37 -38
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/PanSession.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js +5 -6
- package/dist/node_modules/framer-motion/dist/es/gestures/pan/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/gestures/press.js +9 -10
- package/dist/node_modules/framer-motion/dist/es/gestures/press.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js +12 -13
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/exit.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/motion/features/animation/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/animations.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/animations.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.js +2 -3
- package/dist/node_modules/framer-motion/dist/es/motion/features/definitions.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/drag.js +9 -10
- package/dist/node_modules/framer-motion/dist/es/motion/features/drag.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/gestures.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/gestures.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js +15 -16
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout/MeasureLayout.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/layout.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/load-features.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/load-features.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js +4 -5
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/features/viewport/observers.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/index.js +34 -35
- package/dist/node_modules/framer-motion/dist/es/motion/index.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/motion/utils/symbol.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js +7 -7
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-motion-ref.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js +17 -18
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-element.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js +22 -23
- package/dist/node_modules/framer-motion/dist/es/motion/utils/use-visual-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js +2 -3
- package/dist/node_modules/framer-motion/dist/es/motion/utils/valid-prop.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/components/create-proxy.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/feature-bundle.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/proxy.js +4 -5
- package/dist/node_modules/framer-motion/dist/es/render/components/motion/proxy.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js +4 -5
- package/dist/node_modules/framer-motion/dist/es/render/dom/create-visual-element.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js +5 -6
- package/dist/node_modules/framer-motion/dist/es/render/dom/use-render.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js +2 -3
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/filter-props.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/dom/utils/is-svg-component.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.js +5 -6
- package/dist/node_modules/framer-motion/dist/es/render/html/use-html-visual-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js +8 -9
- package/dist/node_modules/framer-motion/dist/es/render/html/use-props.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/html/utils/create-render-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/svg/lowercase-elements.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-props.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.js +5 -6
- package/dist/node_modules/framer-motion/dist/es/render/svg/use-svg-visual-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/render/svg/utils/create-render-state.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/distance.js +2 -3
- package/dist/node_modules/framer-motion/dist/es/utils/distance.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/get-context-window.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/is-browser.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/is-browser.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/is-ref-object.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js +7 -8
- package/dist/node_modules/framer-motion/dist/es/utils/reduced-motion/use-reduced-motion.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/use-composed-ref.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-constant.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/use-constant.js.map +1 -1
- package/dist/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js +1 -2
- package/dist/node_modules/framer-motion/dist/es/utils/use-isomorphic-effect.js.map +1 -1
- package/dist/node_modules/internmap/src/index.js +1 -2
- package/dist/node_modules/internmap/src/index.js.map +1 -1
- package/dist/node_modules/lodash/_DataView.js +4 -5
- package/dist/node_modules/lodash/_DataView.js.map +1 -1
- package/dist/node_modules/lodash/_Hash.js +1 -2
- package/dist/node_modules/lodash/_Hash.js.map +1 -1
- package/dist/node_modules/lodash/_ListCache.js +1 -2
- package/dist/node_modules/lodash/_ListCache.js.map +1 -1
- package/dist/node_modules/lodash/_Map.js +4 -5
- package/dist/node_modules/lodash/_Map.js.map +1 -1
- package/dist/node_modules/lodash/_MapCache.js +1 -2
- package/dist/node_modules/lodash/_MapCache.js.map +1 -1
- package/dist/node_modules/lodash/_Promise.js +4 -5
- package/dist/node_modules/lodash/_Promise.js.map +1 -1
- package/dist/node_modules/lodash/_Set.js +4 -5
- package/dist/node_modules/lodash/_Set.js.map +1 -1
- package/dist/node_modules/lodash/_SetCache.js +1 -2
- package/dist/node_modules/lodash/_SetCache.js.map +1 -1
- package/dist/node_modules/lodash/_Stack.js +3 -3
- package/dist/node_modules/lodash/_Stack.js.map +1 -1
- package/dist/node_modules/lodash/_Symbol.js +1 -2
- package/dist/node_modules/lodash/_Symbol.js.map +1 -1
- package/dist/node_modules/lodash/_Uint8Array.js +1 -2
- package/dist/node_modules/lodash/_Uint8Array.js.map +1 -1
- package/dist/node_modules/lodash/_WeakMap.js +4 -5
- package/dist/node_modules/lodash/_WeakMap.js.map +1 -1
- package/dist/node_modules/lodash/_apply.js +1 -2
- package/dist/node_modules/lodash/_apply.js.map +1 -1
- package/dist/node_modules/lodash/_arrayEvery.js +1 -2
- package/dist/node_modules/lodash/_arrayEvery.js.map +1 -1
- package/dist/node_modules/lodash/_arrayFilter.js +1 -2
- package/dist/node_modules/lodash/_arrayFilter.js.map +1 -1
- package/dist/node_modules/lodash/_arrayIncludes.js +1 -2
- package/dist/node_modules/lodash/_arrayIncludes.js.map +1 -1
- package/dist/node_modules/lodash/_arrayIncludesWith.js +1 -2
- package/dist/node_modules/lodash/_arrayIncludesWith.js.map +1 -1
- package/dist/node_modules/lodash/_arrayLikeKeys.js +5 -6
- package/dist/node_modules/lodash/_arrayLikeKeys.js.map +1 -1
- package/dist/node_modules/lodash/_arrayMap.js +1 -2
- package/dist/node_modules/lodash/_arrayMap.js.map +1 -1
- package/dist/node_modules/lodash/_arrayPush.js +1 -2
- package/dist/node_modules/lodash/_arrayPush.js.map +1 -1
- package/dist/node_modules/lodash/_arraySome.js +1 -2
- package/dist/node_modules/lodash/_arraySome.js.map +1 -1
- package/dist/node_modules/lodash/_asciiToArray.js +1 -2
- package/dist/node_modules/lodash/_asciiToArray.js.map +1 -1
- package/dist/node_modules/lodash/_assocIndexOf.js +1 -2
- package/dist/node_modules/lodash/_assocIndexOf.js.map +1 -1
- package/dist/node_modules/lodash/_baseAssignValue.js +1 -2
- package/dist/node_modules/lodash/_baseAssignValue.js.map +1 -1
- package/dist/node_modules/lodash/_baseEach.js +1 -2
- package/dist/node_modules/lodash/_baseEach.js.map +1 -1
- package/dist/node_modules/lodash/_baseEvery.js +1 -2
- package/dist/node_modules/lodash/_baseEvery.js.map +1 -1
- package/dist/node_modules/lodash/_baseExtremum.js +1 -2
- package/dist/node_modules/lodash/_baseExtremum.js.map +1 -1
- package/dist/node_modules/lodash/_baseFindIndex.js +1 -2
- package/dist/node_modules/lodash/_baseFindIndex.js.map +1 -1
- package/dist/node_modules/lodash/_baseFlatten.js +1 -2
- package/dist/node_modules/lodash/_baseFlatten.js.map +1 -1
- package/dist/node_modules/lodash/_baseFor.js +1 -2
- package/dist/node_modules/lodash/_baseFor.js.map +1 -1
- package/dist/node_modules/lodash/_baseForOwn.js +4 -5
- package/dist/node_modules/lodash/_baseForOwn.js.map +1 -1
- package/dist/node_modules/lodash/_baseGet.js +1 -2
- package/dist/node_modules/lodash/_baseGet.js.map +1 -1
- package/dist/node_modules/lodash/_baseGetAllKeys.js +4 -5
- package/dist/node_modules/lodash/_baseGetAllKeys.js.map +1 -1
- package/dist/node_modules/lodash/_baseGetTag.js +1 -2
- package/dist/node_modules/lodash/_baseGetTag.js.map +1 -1
- package/dist/node_modules/lodash/_baseGt.js +1 -2
- package/dist/node_modules/lodash/_baseGt.js.map +1 -1
- package/dist/node_modules/lodash/_baseHasIn.js +1 -2
- package/dist/node_modules/lodash/_baseHasIn.js.map +1 -1
- package/dist/node_modules/lodash/_baseIndexOf.js +1 -2
- package/dist/node_modules/lodash/_baseIndexOf.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsArguments.js +1 -2
- package/dist/node_modules/lodash/_baseIsArguments.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsEqual.js +4 -5
- package/dist/node_modules/lodash/_baseIsEqual.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsEqualDeep.js +10 -11
- package/dist/node_modules/lodash/_baseIsEqualDeep.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsMatch.js +1 -2
- package/dist/node_modules/lodash/_baseIsMatch.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsNaN.js +1 -2
- package/dist/node_modules/lodash/_baseIsNaN.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsNative.js +5 -6
- package/dist/node_modules/lodash/_baseIsNative.js.map +1 -1
- package/dist/node_modules/lodash/_baseIsTypedArray.js +4 -5
- package/dist/node_modules/lodash/_baseIsTypedArray.js.map +1 -1
- package/dist/node_modules/lodash/_baseIteratee.js +6 -7
- package/dist/node_modules/lodash/_baseIteratee.js.map +1 -1
- package/dist/node_modules/lodash/_baseKeys.js +1 -2
- package/dist/node_modules/lodash/_baseKeys.js.map +1 -1
- package/dist/node_modules/lodash/_baseLt.js +1 -2
- package/dist/node_modules/lodash/_baseLt.js.map +1 -1
- package/dist/node_modules/lodash/_baseMap.js +4 -5
- package/dist/node_modules/lodash/_baseMap.js.map +1 -1
- package/dist/node_modules/lodash/_baseMatches.js +1 -2
- package/dist/node_modules/lodash/_baseMatches.js.map +1 -1
- package/dist/node_modules/lodash/_baseMatchesProperty.js +7 -8
- package/dist/node_modules/lodash/_baseMatchesProperty.js.map +1 -1
- package/dist/node_modules/lodash/_baseOrderBy.js +11 -12
- package/dist/node_modules/lodash/_baseOrderBy.js.map +1 -1
- package/dist/node_modules/lodash/_baseProperty.js +1 -2
- package/dist/node_modules/lodash/_baseProperty.js.map +1 -1
- package/dist/node_modules/lodash/_basePropertyDeep.js +1 -2
- package/dist/node_modules/lodash/_basePropertyDeep.js.map +1 -1
- package/dist/node_modules/lodash/_baseRange.js +1 -2
- package/dist/node_modules/lodash/_baseRange.js.map +1 -1
- package/dist/node_modules/lodash/_baseRest.js +1 -2
- package/dist/node_modules/lodash/_baseRest.js.map +1 -1
- package/dist/node_modules/lodash/_baseSetToString.js +5 -6
- package/dist/node_modules/lodash/_baseSetToString.js.map +1 -1
- package/dist/node_modules/lodash/_baseSlice.js +1 -2
- package/dist/node_modules/lodash/_baseSlice.js.map +1 -1
- package/dist/node_modules/lodash/_baseSome.js +1 -2
- package/dist/node_modules/lodash/_baseSome.js.map +1 -1
- package/dist/node_modules/lodash/_baseSortBy.js +1 -2
- package/dist/node_modules/lodash/_baseSortBy.js.map +1 -1
- package/dist/node_modules/lodash/_baseTimes.js +1 -2
- package/dist/node_modules/lodash/_baseTimes.js.map +1 -1
- package/dist/node_modules/lodash/_baseToString.js +6 -7
- package/dist/node_modules/lodash/_baseToString.js.map +1 -1
- package/dist/node_modules/lodash/_baseTrim.js +1 -2
- package/dist/node_modules/lodash/_baseTrim.js.map +1 -1
- package/dist/node_modules/lodash/_baseUnary.js +1 -2
- package/dist/node_modules/lodash/_baseUnary.js.map +1 -1
- package/dist/node_modules/lodash/_baseUniq.js +7 -8
- package/dist/node_modules/lodash/_baseUniq.js.map +1 -1
- package/dist/node_modules/lodash/_cacheHas.js +1 -2
- package/dist/node_modules/lodash/_cacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_castPath.js +1 -2
- package/dist/node_modules/lodash/_castPath.js.map +1 -1
- package/dist/node_modules/lodash/_castSlice.js +1 -2
- package/dist/node_modules/lodash/_castSlice.js.map +1 -1
- package/dist/node_modules/lodash/_compareAscending.js +1 -2
- package/dist/node_modules/lodash/_compareAscending.js.map +1 -1
- package/dist/node_modules/lodash/_compareMultiple.js +1 -2
- package/dist/node_modules/lodash/_compareMultiple.js.map +1 -1
- package/dist/node_modules/lodash/_coreJsData.js +1 -2
- package/dist/node_modules/lodash/_coreJsData.js.map +1 -1
- package/dist/node_modules/lodash/_createBaseEach.js +1 -2
- package/dist/node_modules/lodash/_createBaseEach.js.map +1 -1
- package/dist/node_modules/lodash/_createBaseFor.js +1 -2
- package/dist/node_modules/lodash/_createBaseFor.js.map +1 -1
- package/dist/node_modules/lodash/_createCaseFirst.js +6 -7
- package/dist/node_modules/lodash/_createCaseFirst.js.map +1 -1
- package/dist/node_modules/lodash/_createFind.js +5 -6
- package/dist/node_modules/lodash/_createFind.js.map +1 -1
- package/dist/node_modules/lodash/_createRange.js +4 -5
- package/dist/node_modules/lodash/_createRange.js.map +1 -1
- package/dist/node_modules/lodash/_createSet.js +6 -7
- package/dist/node_modules/lodash/_createSet.js.map +1 -1
- package/dist/node_modules/lodash/_defineProperty.js +1 -2
- package/dist/node_modules/lodash/_defineProperty.js.map +1 -1
- package/dist/node_modules/lodash/_equalArrays.js +1 -2
- package/dist/node_modules/lodash/_equalArrays.js.map +1 -1
- package/dist/node_modules/lodash/_equalByTag.js +5 -6
- package/dist/node_modules/lodash/_equalByTag.js.map +1 -1
- package/dist/node_modules/lodash/_equalObjects.js +1 -2
- package/dist/node_modules/lodash/_equalObjects.js.map +1 -1
- package/dist/node_modules/lodash/_freeGlobal.js +1 -2
- package/dist/node_modules/lodash/_freeGlobal.js.map +1 -1
- package/dist/node_modules/lodash/_getAllKeys.js +1 -2
- package/dist/node_modules/lodash/_getAllKeys.js.map +1 -1
- package/dist/node_modules/lodash/_getMapData.js +1 -2
- package/dist/node_modules/lodash/_getMapData.js.map +1 -1
- package/dist/node_modules/lodash/_getMatchData.js +4 -5
- package/dist/node_modules/lodash/_getMatchData.js.map +1 -1
- package/dist/node_modules/lodash/_getNative.js +1 -2
- package/dist/node_modules/lodash/_getNative.js.map +1 -1
- package/dist/node_modules/lodash/_getPrototype.js +1 -2
- package/dist/node_modules/lodash/_getPrototype.js.map +1 -1
- package/dist/node_modules/lodash/_getRawTag.js +1 -2
- package/dist/node_modules/lodash/_getRawTag.js.map +1 -1
- package/dist/node_modules/lodash/_getSymbols.js +1 -2
- package/dist/node_modules/lodash/_getSymbols.js.map +1 -1
- package/dist/node_modules/lodash/_getTag.js +9 -10
- package/dist/node_modules/lodash/_getTag.js.map +1 -1
- package/dist/node_modules/lodash/_getValue.js +1 -2
- package/dist/node_modules/lodash/_getValue.js.map +1 -1
- package/dist/node_modules/lodash/_hasPath.js +8 -9
- package/dist/node_modules/lodash/_hasPath.js.map +1 -1
- package/dist/node_modules/lodash/_hasUnicode.js +1 -2
- package/dist/node_modules/lodash/_hasUnicode.js.map +1 -1
- package/dist/node_modules/lodash/_hashClear.js +1 -2
- package/dist/node_modules/lodash/_hashClear.js.map +1 -1
- package/dist/node_modules/lodash/_hashDelete.js +1 -2
- package/dist/node_modules/lodash/_hashDelete.js.map +1 -1
- package/dist/node_modules/lodash/_hashGet.js +1 -2
- package/dist/node_modules/lodash/_hashGet.js.map +1 -1
- package/dist/node_modules/lodash/_hashHas.js +1 -2
- package/dist/node_modules/lodash/_hashHas.js.map +1 -1
- package/dist/node_modules/lodash/_hashSet.js +1 -2
- package/dist/node_modules/lodash/_hashSet.js.map +1 -1
- package/dist/node_modules/lodash/_isFlattenable.js +5 -6
- package/dist/node_modules/lodash/_isFlattenable.js.map +1 -1
- package/dist/node_modules/lodash/_isIndex.js +6 -7
- package/dist/node_modules/lodash/_isIndex.js.map +1 -1
- package/dist/node_modules/lodash/_isIterateeCall.js +5 -6
- package/dist/node_modules/lodash/_isIterateeCall.js.map +1 -1
- package/dist/node_modules/lodash/_isKey.js +1 -2
- package/dist/node_modules/lodash/_isKey.js.map +1 -1
- package/dist/node_modules/lodash/_isKeyable.js +1 -2
- package/dist/node_modules/lodash/_isKeyable.js.map +1 -1
- package/dist/node_modules/lodash/_isMasked.js +1 -2
- package/dist/node_modules/lodash/_isMasked.js.map +1 -1
- package/dist/node_modules/lodash/_isPrototype.js +1 -2
- package/dist/node_modules/lodash/_isPrototype.js.map +1 -1
- package/dist/node_modules/lodash/_isStrictComparable.js +1 -2
- package/dist/node_modules/lodash/_isStrictComparable.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheClear.js +1 -2
- package/dist/node_modules/lodash/_listCacheClear.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheDelete.js +1 -2
- package/dist/node_modules/lodash/_listCacheDelete.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheGet.js +1 -2
- package/dist/node_modules/lodash/_listCacheGet.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheHas.js +1 -2
- package/dist/node_modules/lodash/_listCacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_listCacheSet.js +1 -2
- package/dist/node_modules/lodash/_listCacheSet.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheClear.js +1 -2
- package/dist/node_modules/lodash/_mapCacheClear.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheDelete.js +1 -2
- package/dist/node_modules/lodash/_mapCacheDelete.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheGet.js +1 -2
- package/dist/node_modules/lodash/_mapCacheGet.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheHas.js +1 -2
- package/dist/node_modules/lodash/_mapCacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_mapCacheSet.js +1 -2
- package/dist/node_modules/lodash/_mapCacheSet.js.map +1 -1
- package/dist/node_modules/lodash/_mapToArray.js +1 -2
- package/dist/node_modules/lodash/_mapToArray.js.map +1 -1
- package/dist/node_modules/lodash/_matchesStrictComparable.js +2 -3
- package/dist/node_modules/lodash/_matchesStrictComparable.js.map +1 -1
- package/dist/node_modules/lodash/_memoizeCapped.js +1 -2
- package/dist/node_modules/lodash/_memoizeCapped.js.map +1 -1
- package/dist/node_modules/lodash/_nativeCreate.js +1 -2
- package/dist/node_modules/lodash/_nativeCreate.js.map +1 -1
- package/dist/node_modules/lodash/_nativeKeys.js +1 -2
- package/dist/node_modules/lodash/_nativeKeys.js.map +1 -1
- package/dist/node_modules/lodash/_nodeUtil.js +1 -2
- package/dist/node_modules/lodash/_nodeUtil.js.map +1 -1
- package/dist/node_modules/lodash/_objectToString.js +1 -2
- package/dist/node_modules/lodash/_objectToString.js.map +1 -1
- package/dist/node_modules/lodash/_overArg.js +1 -2
- package/dist/node_modules/lodash/_overArg.js.map +1 -1
- package/dist/node_modules/lodash/_overRest.js +1 -2
- package/dist/node_modules/lodash/_overRest.js.map +1 -1
- package/dist/node_modules/lodash/_root.js +1 -2
- package/dist/node_modules/lodash/_root.js.map +1 -1
- package/dist/node_modules/lodash/_setCacheAdd.js +4 -6
- package/dist/node_modules/lodash/_setCacheAdd.js.map +1 -1
- package/dist/node_modules/lodash/_setCacheHas.js +1 -2
- package/dist/node_modules/lodash/_setCacheHas.js.map +1 -1
- package/dist/node_modules/lodash/_setToArray.js +1 -2
- package/dist/node_modules/lodash/_setToArray.js.map +1 -1
- package/dist/node_modules/lodash/_setToString.js +1 -2
- package/dist/node_modules/lodash/_setToString.js.map +1 -1
- package/dist/node_modules/lodash/_shortOut.js +8 -9
- package/dist/node_modules/lodash/_shortOut.js.map +1 -1
- package/dist/node_modules/lodash/_stackClear.js +1 -2
- package/dist/node_modules/lodash/_stackClear.js.map +1 -1
- package/dist/node_modules/lodash/_stackDelete.js +1 -2
- package/dist/node_modules/lodash/_stackDelete.js.map +1 -1
- package/dist/node_modules/lodash/_stackGet.js +1 -2
- package/dist/node_modules/lodash/_stackGet.js.map +1 -1
- package/dist/node_modules/lodash/_stackHas.js +1 -2
- package/dist/node_modules/lodash/_stackHas.js.map +1 -1
- package/dist/node_modules/lodash/_stackSet.js +1 -2
- package/dist/node_modules/lodash/_stackSet.js.map +1 -1
- package/dist/node_modules/lodash/_strictIndexOf.js +1 -2
- package/dist/node_modules/lodash/_strictIndexOf.js.map +1 -1
- package/dist/node_modules/lodash/_stringToArray.js +4 -5
- package/dist/node_modules/lodash/_stringToArray.js.map +1 -1
- package/dist/node_modules/lodash/_stringToPath.js +1 -2
- package/dist/node_modules/lodash/_stringToPath.js.map +1 -1
- package/dist/node_modules/lodash/_toKey.js +2 -3
- package/dist/node_modules/lodash/_toKey.js.map +1 -1
- package/dist/node_modules/lodash/_toSource.js +1 -2
- package/dist/node_modules/lodash/_toSource.js.map +1 -1
- package/dist/node_modules/lodash/_trimmedEndIndex.js +1 -2
- package/dist/node_modules/lodash/_trimmedEndIndex.js.map +1 -1
- package/dist/node_modules/lodash/_unicodeToArray.js +1 -2
- package/dist/node_modules/lodash/_unicodeToArray.js.map +1 -1
- package/dist/node_modules/lodash/constant.js +1 -2
- package/dist/node_modules/lodash/constant.js.map +1 -1
- package/dist/node_modules/lodash/debounce.js +1 -2
- package/dist/node_modules/lodash/debounce.js.map +1 -1
- package/dist/node_modules/lodash/eq.js +1 -2
- package/dist/node_modules/lodash/eq.js.map +1 -1
- package/dist/node_modules/lodash/every.js +7 -8
- package/dist/node_modules/lodash/every.js.map +1 -1
- package/dist/node_modules/lodash/find.js +1 -2
- package/dist/node_modules/lodash/find.js.map +1 -1
- package/dist/node_modules/lodash/findIndex.js +4 -5
- package/dist/node_modules/lodash/findIndex.js.map +1 -1
- package/dist/node_modules/lodash/flatMap.js +1 -2
- package/dist/node_modules/lodash/flatMap.js.map +1 -1
- package/dist/node_modules/lodash/get.js +1 -2
- package/dist/node_modules/lodash/get.js.map +1 -1
- package/dist/node_modules/lodash/hasIn.js +1 -2
- package/dist/node_modules/lodash/hasIn.js.map +1 -1
- package/dist/node_modules/lodash/identity.js +1 -2
- package/dist/node_modules/lodash/identity.js.map +1 -1
- package/dist/node_modules/lodash/isArguments.js +4 -5
- package/dist/node_modules/lodash/isArguments.js.map +1 -1
- package/dist/node_modules/lodash/isArray.js +1 -2
- package/dist/node_modules/lodash/isArray.js.map +1 -1
- package/dist/node_modules/lodash/isArrayLike.js +1 -2
- package/dist/node_modules/lodash/isArrayLike.js.map +1 -1
- package/dist/node_modules/lodash/isBoolean.js +1 -2
- package/dist/node_modules/lodash/isBoolean.js.map +1 -1
- package/dist/node_modules/lodash/isBuffer.js +1 -2
- package/dist/node_modules/lodash/isBuffer.js.map +1 -1
- package/dist/node_modules/lodash/isEqual.js +1 -2
- package/dist/node_modules/lodash/isEqual.js.map +1 -1
- package/dist/node_modules/lodash/isFunction.js +1 -2
- package/dist/node_modules/lodash/isFunction.js.map +1 -1
- package/dist/node_modules/lodash/isLength.js +4 -6
- package/dist/node_modules/lodash/isLength.js.map +1 -1
- package/dist/node_modules/lodash/isNaN.js +1 -2
- package/dist/node_modules/lodash/isNaN.js.map +1 -1
- package/dist/node_modules/lodash/isNil.js +1 -2
- package/dist/node_modules/lodash/isNil.js.map +1 -1
- package/dist/node_modules/lodash/isNumber.js +1 -2
- package/dist/node_modules/lodash/isNumber.js.map +1 -1
- package/dist/node_modules/lodash/isObject.js +1 -2
- package/dist/node_modules/lodash/isObject.js.map +1 -1
- package/dist/node_modules/lodash/isObjectLike.js +1 -2
- package/dist/node_modules/lodash/isObjectLike.js.map +1 -1
- package/dist/node_modules/lodash/isPlainObject.js +4 -5
- package/dist/node_modules/lodash/isPlainObject.js.map +1 -1
- package/dist/node_modules/lodash/isString.js +4 -5
- package/dist/node_modules/lodash/isString.js.map +1 -1
- package/dist/node_modules/lodash/isSymbol.js +1 -2
- package/dist/node_modules/lodash/isSymbol.js.map +1 -1
- package/dist/node_modules/lodash/isTypedArray.js +1 -2
- package/dist/node_modules/lodash/isTypedArray.js.map +1 -1
- package/dist/node_modules/lodash/keys.js +1 -2
- package/dist/node_modules/lodash/keys.js.map +1 -1
- package/dist/node_modules/lodash/last.js +1 -2
- package/dist/node_modules/lodash/last.js.map +1 -1
- package/dist/node_modules/lodash/map.js +6 -7
- package/dist/node_modules/lodash/map.js.map +1 -1
- package/dist/node_modules/lodash/mapValues.js +4 -5
- package/dist/node_modules/lodash/mapValues.js.map +1 -1
- package/dist/node_modules/lodash/max.js +5 -6
- package/dist/node_modules/lodash/max.js.map +1 -1
- package/dist/node_modules/lodash/memoize.js +1 -2
- package/dist/node_modules/lodash/memoize.js.map +1 -1
- package/dist/node_modules/lodash/min.js +5 -6
- package/dist/node_modules/lodash/min.js.map +1 -1
- package/dist/node_modules/lodash/noop.js +1 -2
- package/dist/node_modules/lodash/noop.js.map +1 -1
- package/dist/node_modules/lodash/now.js +1 -2
- package/dist/node_modules/lodash/now.js.map +1 -1
- package/dist/node_modules/lodash/property.js +6 -7
- package/dist/node_modules/lodash/property.js.map +1 -1
- package/dist/node_modules/lodash/range.js +1 -2
- package/dist/node_modules/lodash/range.js.map +1 -1
- package/dist/node_modules/lodash/some.js +7 -8
- package/dist/node_modules/lodash/some.js.map +1 -1
- package/dist/node_modules/lodash/sortBy.js +1 -2
- package/dist/node_modules/lodash/sortBy.js.map +1 -1
- package/dist/node_modules/lodash/stubArray.js +1 -2
- package/dist/node_modules/lodash/stubArray.js.map +1 -1
- package/dist/node_modules/lodash/stubFalse.js +1 -2
- package/dist/node_modules/lodash/stubFalse.js.map +1 -1
- package/dist/node_modules/lodash/throttle.js +4 -5
- package/dist/node_modules/lodash/throttle.js.map +1 -1
- package/dist/node_modules/lodash/toFinite.js +2 -3
- package/dist/node_modules/lodash/toFinite.js.map +1 -1
- package/dist/node_modules/lodash/toInteger.js +1 -2
- package/dist/node_modules/lodash/toInteger.js.map +1 -1
- package/dist/node_modules/lodash/toNumber.js +4 -5
- package/dist/node_modules/lodash/toNumber.js.map +1 -1
- package/dist/node_modules/lodash/toString.js +1 -2
- package/dist/node_modules/lodash/toString.js.map +1 -1
- package/dist/node_modules/lodash/uniqBy.js +1 -2
- package/dist/node_modules/lodash/uniqBy.js.map +1 -1
- package/dist/node_modules/lodash/upperFirst.js +1 -2
- package/dist/node_modules/lodash/upperFirst.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.js +22 -23
- package/dist/node_modules/motion-dom/dist/es/animation/AsyncMotionValueAnimation.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.js +29 -30
- package/dist/node_modules/motion-dom/dist/es/animation/JSAnimation.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.js +17 -18
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimation.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.js +10 -11
- package/dist/node_modules/motion-dom/dist/es/animation/NativeAnimationExtended.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.js +5 -6
- package/dist/node_modules/motion-dom/dist/es/animation/animate/single-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.js +6 -7
- package/dist/node_modules/motion-dom/dist/es/animation/drivers/frame.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/inertia.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.js +4 -5
- package/dist/node_modules/motion-dom/dist/es/animation/generators/keyframes.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.js +50 -49
- package/dist/node_modules/motion-dom/dist/es/animation/generators/spring.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/calc-duration.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/create-generator-easing.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/is-generator.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/generators/utils/velocity.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.js +17 -18
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/motion-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.js +23 -24
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-target.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.js +12 -12
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element-variant.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/interfaces/visual-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.js +35 -37
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/DOMKeyframesResolver.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.js +18 -19
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/KeyframesResolver.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/get-final.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/default.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/fill.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/offsets/time.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/fill-wildcards.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/is-none.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/make-none-animatable.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.js +9 -10
- package/dist/node_modules/motion-dom/dist/es/animation/keyframes/utils/unit-conversion.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.js +3 -3
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/data-id.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/optimized-appear/get-appear-id.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/WithPromise.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/calc-child-stagger.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/can-animate.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/utils/css-variables-conversion.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/default-transitions.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/get-value-transition.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-animatable.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-animatable.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.js +3 -4
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-css-variable.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/utils/is-transition-defined.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/make-animation-instant.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.js +9 -10
- package/dist/node_modules/motion-dom/dist/es/animation/utils/replace-transition-type.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/utils/resolve-transition.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/cubic-bezier.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.js +4 -5
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/map-easing.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.js +5 -6
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/easing/supported.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/start-waapi-animation.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.js +3 -4
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/supports/waapi.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/accelerated-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/apply-generator.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/is-browser-color.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/linear.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/animation/waapi/utils/unsupported-easing.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/events/add-dom-event.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/batcher.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/frame.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/frame.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/microtask.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/microtask.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/order.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/order.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/render-step.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/frameloop/sync-time.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/is-active.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/drag/state/set-active.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.js +2 -9
- package/dist/node_modules/motion-dom/dist/es/gestures/hover.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js +16 -17
- package/dist/node_modules/motion-dom/dist/es/gestures/press/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.js +3 -4
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/is-keyboard-accessible.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/keyboard.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/state.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/press/utils/state.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-node-or-child.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/is-primary-pointer.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/gestures/utils/setup.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.js +15 -16
- package/dist/node_modules/motion-dom/dist/es/projection/animation/mix-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/conversion.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/copy.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/copy.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-apply.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.js +16 -17
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-calc.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.js +6 -7
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/delta-remove.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/models.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/models.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/utils.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/geometry/utils.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/node/DocumentProjectionNode.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/node/HTMLProjectionNode.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js +175 -180
- package/dist/node_modules/motion-dom/dist/es/projection/node/create-projection-node.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/node/state.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/node/state.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/projection/shared/stack.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.js +6 -5
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-border-radius.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-box-shadow.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/styles/scale-correction.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/styles/transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/compare-by-depth.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/each-axis.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/each-axis.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/flat-tree.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/flat-tree.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/has-transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/projection/utils/measure.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/Feature.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/Feature.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.js +58 -59
- package/dist/node_modules/motion-dom/dist/es/render/VisualElement.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/DOMVisualElement.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/is-css-var.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/is-css-var.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/parse-transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/style-set.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/style-set.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/dom/utils/camel-to-dash.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.js +9 -10
- package/dist/node_modules/motion-dom/dist/es/render/html/HTMLVisualElement.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-styles.js +10 -15
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-styles.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.js +10 -11
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/build-transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/render.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/html/utils/scrape-motion-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/store.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/store.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.js +11 -12
- package/dist/node_modules/motion-dom/dist/es/render/svg/SVGVisualElement.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/build-attrs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/camel-case-attrs.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/is-svg-tag.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/path.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/render.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/render.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.js +6 -7
- package/dist/node_modules/motion-dom/dist/es/render/svg/utils/scrape-motion-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.js +57 -58
- package/dist/node_modules/motion-dom/dist/es/render/utils/animation-state.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/get-variant-context.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-animation-controls.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-controlling-variants.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-forced-motion-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-keyframes-target.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-variant-label.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/is-variant-label.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-position.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-position.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/render/utils/keys-transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/motion-values.js +9 -8
- package/dist/node_modules/motion-dom/dist/es/render/utils/motion-values.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.js +8 -7
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/reduced-motion/state.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-dynamic-variants.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/resolve-variants.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/setters.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/shallow-compare.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/shallow-compare.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/render/utils/variant-props.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/resize/handle-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/resize/handle-window.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/resize/index.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/resize/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/stats/buffer.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/stats/buffer.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/border-radius.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/border-radius.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/delay.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/utils/delay.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.js +10 -7
- package/dist/node_modules/motion-dom/dist/es/utils/interpolate.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/is-html-element.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/is-html-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-element.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/is-svg-svg-element.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.js +17 -18
- package/dist/node_modules/motion-dom/dist/es/utils/mix/color.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.js +13 -14
- package/dist/node_modules/motion-dom/dist/es/utils/mix/complex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/immediate.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/mix/immediate.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/index.js +4 -5
- package/dist/node_modules/motion-dom/dist/es/utils/mix/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/number.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/mix/number.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/mix/visibility.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/utils/mix/visibility.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/resolve-elements.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/flags.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/supports/flags.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/utils/supports/linear-easing.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/supports/memo.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/utils/supports/scroll-timeline.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/index.js +20 -21
- package/dist/node_modules/motion-dom/dist/es/value/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/auto.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/auto.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.js +5 -6
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla-to-rgba.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/value/types/color/hsla.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.js +7 -8
- package/dist/node_modules/motion-dom/dist/es/value/types/color/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.js +4 -5
- package/dist/node_modules/motion-dom/dist/es/value/types/color/rgba.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/color/utils.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.js +10 -11
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/filter.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.js +13 -14
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/complex/mask.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/dimensions.js +8 -9
- package/dist/node_modules/motion-dom/dist/es/value/types/dimensions.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/int.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/int.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/defaults.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/defaults.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/number.js +58 -59
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/number.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/transform.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/maps/transform.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/index.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/index.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/units.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/value/types/numbers/units.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/test.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/test.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.js +2 -3
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/animatable-none.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/color-regex.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/color-regex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.js +5 -6
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/find.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/float-regex.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/float-regex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/get-as-type.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/is-nullish.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/sanitize.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/sanitize.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/types/utils/single-color-regex.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/utils/is-motion-value.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/utils/is-motion-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/utils/resolve-motion-value.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/will-change/add-will-change.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/will-change/add-will-change.js.map +1 -1
- package/dist/node_modules/motion-dom/dist/es/value/will-change/is.js +1 -2
- package/dist/node_modules/motion-dom/dist/es/value/will-change/is.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/array.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/array.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/clamp.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/clamp.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/anticipate.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/anticipate.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/back.js +2 -3
- package/dist/node_modules/motion-utils/dist/es/easing/back.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/circ.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/circ.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.js +2 -3
- package/dist/node_modules/motion-utils/dist/es/easing/cubic-bezier.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/ease.js +2 -3
- package/dist/node_modules/motion-utils/dist/es/easing/ease.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/mirror.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/mirror.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/reverse.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/modifiers/reverse.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-bezier-definition.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/easing/utils/is-easing-array.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.js +12 -13
- package/dist/node_modules/motion-utils/dist/es/easing/utils/map.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/errors.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/errors.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/format-error-message.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/format-error-message.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/global-config.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/global-config.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/is-numerical-string.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/is-numerical-string.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/is-object.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/is-object.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/is-zero-value-string.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/is-zero-value-string.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/memo.js +2 -3
- package/dist/node_modules/motion-utils/dist/es/memo.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/noop.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/noop.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/pipe.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/pipe.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/progress.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/progress.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/subscription-manager.js +7 -6
- package/dist/node_modules/motion-utils/dist/es/subscription-manager.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/time-conversion.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/time-conversion.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/velocity-per-second.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/velocity-per-second.js.map +1 -1
- package/dist/node_modules/motion-utils/dist/es/warn-once.js +1 -2
- package/dist/node_modules/motion-utils/dist/es/warn-once.js.map +1 -1
- package/dist/node_modules/object-assign/index.js +1 -2
- package/dist/node_modules/object-assign/index.js.map +1 -1
- package/dist/node_modules/prop-types/checkPropTypes.js +1 -2
- package/dist/node_modules/prop-types/checkPropTypes.js.map +1 -1
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js +1 -2
- package/dist/node_modules/prop-types/factoryWithThrowingShims.js.map +1 -1
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js +3 -3
- package/dist/node_modules/prop-types/factoryWithTypeCheckers.js.map +1 -1
- package/dist/node_modules/prop-types/index.js +1 -2
- package/dist/node_modules/prop-types/index.js.map +1 -1
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js +1 -2
- package/dist/node_modules/prop-types/lib/ReactPropTypesSecret.js.map +1 -1
- package/dist/node_modules/prop-types/lib/has.js +1 -2
- package/dist/node_modules/prop-types/lib/has.js.map +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js +1 -2
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.development.js.map +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js +1 -2
- package/dist/node_modules/prop-types/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
- package/dist/node_modules/prop-types/node_modules/react-is/index.js +2 -3
- package/dist/node_modules/prop-types/node_modules/react-is/index.js.map +1 -1
- package/dist/node_modules/react-is/cjs/react-is.development.js +31 -32
- package/dist/node_modules/react-is/cjs/react-is.development.js.map +1 -1
- package/dist/node_modules/react-is/cjs/react-is.production.min.js +1 -2
- package/dist/node_modules/react-is/cjs/react-is.production.min.js.map +1 -1
- package/dist/node_modules/react-is/index.js +2 -3
- package/dist/node_modules/react-is/index.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/Animate.js +33 -41
- package/dist/node_modules/react-smooth/es6/Animate.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/AnimateManager.js +2 -5
- package/dist/node_modules/react-smooth/es6/AnimateManager.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/configUpdate.js +1 -2
- package/dist/node_modules/react-smooth/es6/configUpdate.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/easing.js +1 -2
- package/dist/node_modules/react-smooth/es6/easing.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/index.js +1 -2
- package/dist/node_modules/react-smooth/es6/index.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/setRafTimeout.js +1 -2
- package/dist/node_modules/react-smooth/es6/setRafTimeout.js.map +1 -1
- package/dist/node_modules/react-smooth/es6/util.js +17 -16
- package/dist/node_modules/react-smooth/es6/util.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Area.js +99 -100
- package/dist/node_modules/recharts/es6/cartesian/Area.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Bar.js +103 -104
- package/dist/node_modules/recharts/es6/cartesian/Bar.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Brush.js +35 -36
- package/dist/node_modules/recharts/es6/cartesian/Brush.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js +60 -67
- package/dist/node_modules/recharts/es6/cartesian/CartesianAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js +45 -46
- package/dist/node_modules/recharts/es6/cartesian/CartesianGrid.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js +20 -21
- package/dist/node_modules/recharts/es6/cartesian/ErrorBar.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Line.js +79 -80
- package/dist/node_modules/recharts/es6/cartesian/Line.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js +29 -30
- package/dist/node_modules/recharts/es6/cartesian/ReferenceArea.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js +23 -24
- package/dist/node_modules/recharts/es6/cartesian/ReferenceDot.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js +31 -32
- package/dist/node_modules/recharts/es6/cartesian/ReferenceLine.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/Scatter.js +81 -82
- package/dist/node_modules/recharts/es6/cartesian/Scatter.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/XAxis.js +10 -11
- package/dist/node_modules/recharts/es6/cartesian/XAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/YAxis.js +10 -11
- package/dist/node_modules/recharts/es6/cartesian/YAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/ZAxis.js +2 -3
- package/dist/node_modules/recharts/es6/cartesian/ZAxis.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js +5 -6
- package/dist/node_modules/recharts/es6/cartesian/getEquidistantTicks.js.map +1 -1
- package/dist/node_modules/recharts/es6/cartesian/getTicks.js +7 -8
- package/dist/node_modules/recharts/es6/cartesian/getTicks.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js +2 -5
- package/dist/node_modules/recharts/es6/chart/AccessibilityManager.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/AreaChart.js +5 -6
- package/dist/node_modules/recharts/es6/chart/AreaChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/BarChart.js +7 -8
- package/dist/node_modules/recharts/es6/chart/BarChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/ComposedChart.js +18 -19
- package/dist/node_modules/recharts/es6/chart/ComposedChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js +534 -533
- package/dist/node_modules/recharts/es6/chart/generateCategoricalChart.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Cell.js +1 -2
- package/dist/node_modules/recharts/es6/component/Cell.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Cursor.js +17 -18
- package/dist/node_modules/recharts/es6/component/Cursor.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js +35 -36
- package/dist/node_modules/recharts/es6/component/DefaultLegendContent.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js +16 -17
- package/dist/node_modules/recharts/es6/component/DefaultTooltipContent.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Label.js +85 -86
- package/dist/node_modules/recharts/es6/component/Label.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/LabelList.js +20 -21
- package/dist/node_modules/recharts/es6/component/LabelList.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Legend.js +26 -23
- package/dist/node_modules/recharts/es6/component/Legend.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js +16 -17
- package/dist/node_modules/recharts/es6/component/ResponsiveContainer.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Text.js +18 -21
- package/dist/node_modules/recharts/es6/component/Text.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/Tooltip.js +16 -17
- package/dist/node_modules/recharts/es6/component/Tooltip.js.map +1 -1
- package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js +3 -4
- package/dist/node_modules/recharts/es6/component/TooltipBoundingBox.js.map +1 -1
- package/dist/node_modules/recharts/es6/container/Layer.js +5 -6
- package/dist/node_modules/recharts/es6/container/Layer.js.map +1 -1
- package/dist/node_modules/recharts/es6/container/Surface.js +5 -6
- package/dist/node_modules/recharts/es6/container/Surface.js.map +1 -1
- package/dist/node_modules/recharts/es6/context/chartLayoutContext.js +21 -21
- package/dist/node_modules/recharts/es6/context/chartLayoutContext.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Cross.js +4 -5
- package/dist/node_modules/recharts/es6/shape/Cross.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Curve.js +51 -52
- package/dist/node_modules/recharts/es6/shape/Curve.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Dot.js +3 -4
- package/dist/node_modules/recharts/es6/shape/Dot.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Rectangle.js +8 -9
- package/dist/node_modules/recharts/es6/shape/Rectangle.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Sector.js +33 -34
- package/dist/node_modules/recharts/es6/shape/Sector.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Symbols.js +33 -34
- package/dist/node_modules/recharts/es6/shape/Symbols.js.map +1 -1
- package/dist/node_modules/recharts/es6/shape/Trapezoid.js +8 -9
- package/dist/node_modules/recharts/es6/shape/Trapezoid.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js +24 -25
- package/dist/node_modules/recharts/es6/util/ActiveShapeUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/BarUtils.js +10 -11
- package/dist/node_modules/recharts/es6/util/BarUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/CartesianUtils.js +33 -34
- package/dist/node_modules/recharts/es6/util/CartesianUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ChartUtils.js +237 -236
- package/dist/node_modules/recharts/es6/util/ChartUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js +1 -2
- package/dist/node_modules/recharts/es6/util/CssPrefixUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/DOMUtils.js +1 -2
- package/dist/node_modules/recharts/es6/util/DOMUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/DataUtils.js +7 -8
- package/dist/node_modules/recharts/es6/util/DataUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js +20 -21
- package/dist/node_modules/recharts/es6/util/DetectReferenceElementsDomain.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/Events.js +0 -1
- package/dist/node_modules/recharts/es6/util/Events.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/Global.js +0 -1
- package/dist/node_modules/recharts/es6/util/Global.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js +1 -2
- package/dist/node_modules/recharts/es6/util/IfOverflowMatches.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/LogUtils.js +9 -8
- package/dist/node_modules/recharts/es6/util/LogUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/PolarUtils.js +4 -5
- package/dist/node_modules/recharts/es6/util/PolarUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ReactUtils.js +11 -12
- package/dist/node_modules/recharts/es6/util/ReactUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js +5 -6
- package/dist/node_modules/recharts/es6/util/ReduceCSSCalc.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ScatterUtils.js +5 -6
- package/dist/node_modules/recharts/es6/util/ScatterUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/ShallowEqual.js +1 -2
- package/dist/node_modules/recharts/es6/util/ShallowEqual.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/TickUtils.js +4 -4
- package/dist/node_modules/recharts/es6/util/TickUtils.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/calculateViewBox.js +0 -1
- package/dist/node_modules/recharts/es6/util/calculateViewBox.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js +7 -6
- package/dist/node_modules/recharts/es6/util/cursor/getCursorPoints.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js +1 -2
- package/dist/node_modules/recharts/es6/util/cursor/getCursorRectangle.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js +1 -2
- package/dist/node_modules/recharts/es6/util/cursor/getRadialCursorPoints.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js +1 -2
- package/dist/node_modules/recharts/es6/util/getEveryNthWithCondition.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/getLegendProps.js +9 -10
- package/dist/node_modules/recharts/es6/util/getLegendProps.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js +1 -2
- package/dist/node_modules/recharts/es6/util/isDomainSpecifiedByUser.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js +4 -5
- package/dist/node_modules/recharts/es6/util/payload/getUniqPayload.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/tooltip/translate.js +3 -4
- package/dist/node_modules/recharts/es6/util/tooltip/translate.js.map +1 -1
- package/dist/node_modules/recharts/es6/util/types.js +2 -3
- package/dist/node_modules/recharts/es6/util/types.js.map +1 -1
- package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js +2 -3
- package/dist/node_modules/recharts-scale/es6/getNiceTickValues.js.map +1 -1
- package/dist/node_modules/recharts-scale/es6/index.js +1 -1
- package/dist/node_modules/recharts-scale/es6/util/arithmetic.js +1 -2
- package/dist/node_modules/recharts-scale/es6/util/arithmetic.js.map +1 -1
- package/dist/node_modules/recharts-scale/es6/util/utils.js +3 -4
- package/dist/node_modules/recharts-scale/es6/util/utils.js.map +1 -1
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js +134 -151
- package/dist/node_modules/tailwind-merge/dist/bundle-mjs.js.map +1 -1
- package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js +2 -3
- package/dist/node_modules/tiny-invariant/dist/esm/tiny-invariant.js.map +1 -1
- package/dist/node_modules/victory-vendor/es/d3-scale.js +2 -3
- package/dist/node_modules/victory-vendor/es/d3-scale.js.map +1 -1
- package/dist/stories/EmptyState.stories.d.ts +0 -1
- package/dist/stories/InsightsCharts.stories.d.ts +0 -1
- package/dist/stories/MetricsCard.stories.d.ts +0 -1
- package/dist/stories/StatusBadge.stories.d.ts +0 -1
- package/package.json +21 -7
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DashboardPage.js","names":[],"sources":["../../../src/mybodyshield/pages/DashboardPage.tsx"],"sourcesContent":["/**\n * Dashboard — MyBodyShield health & fitness overview.\n * @module mybodyshield/pages\n *\n * KPIs are aggregated client-side from the real `myb*` list endpoints:\n * active programs, this-week's sessions, goal progress, today's macros vs\n * target, latest body weight and recovery readiness. No mock data.\n */\n\nimport { useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { motion, useReducedMotion } from 'framer-motion';\nimport {\n Dumbbell,\n Flame,\n Target,\n Salad,\n Moon,\n ArrowRight,\n CheckCircle2,\n Weight,\n CalendarCheck,\n Sparkles,\n BedDouble,\n TrendingUp,\n Utensils,\n} from 'lucide-react';\nimport { GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { MetricsCard } from '../components/MetricsCard';\nimport { StatusBadge } from '../components/StatusBadge';\nimport { MiniBar } from '../components/MiniBar';\nimport { LoadingView, Section } from '../components/StateViews';\nimport { EmptyState } from '../components/EmptyState';\nimport {\n Meter,\n ProgressRing,\n MacroBar,\n MacroLegend,\n IconChip,\n GOAL_TYPE_META,\n RECOVERY_META,\n WORKOUT_TYPE_META,\n computeGoalProgress,\n} from './_shared/visuals';\nimport { useMyBodyShield } from '../context';\nimport {\n useMybPrograms,\n useMybSessions,\n useMybGoals,\n useMybDailyMacros,\n useMybBodyMetrics,\n useMybRecoveryLogs,\n useMybTodayGuidance,\n useTr,\n} from '../hooks';\nimport type { MybGuidanceAction } from '../types';\n\nimport {\n formatNumber,\n formatRelativeTime,\n formatKcal,\n formatWeight,\n formatPercent,\n formatEnumLabel,\n} from '../utils/formatters';\n\n/** Shared easing for entrance / hover motion (smooth ease-out). */\nconst EASE_OUT: [number, number, number, number] = [0.16, 1, 0.3, 1];\n\n/** Icon + status-token accent per guidance action (BOFF-4174). */\nconst GUIDANCE_ACTION_META: Record<\n MybGuidanceAction,\n { icon: typeof Moon; textClass: string; bgClass: string; labelKey: string; labelFallback: string }\n> = {\n REST: {\n icon: BedDouble,\n textClass: 'text-status-error-text',\n bgClass: 'bg-status-error-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.rest',\n labelFallback: 'Rest',\n },\n LIGHTEN_SESSION: {\n icon: Moon,\n textClass: 'text-status-warning-text',\n bgClass: 'bg-status-warning-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.lightenSession',\n labelFallback: 'Lighten session',\n },\n PROCEED_AS_PLANNED: {\n icon: CheckCircle2,\n textClass: 'text-status-success-text',\n bgClass: 'bg-status-success-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.proceedAsPlanned',\n labelFallback: 'Proceed as planned',\n },\n INCREASE_LOAD: {\n icon: TrendingUp,\n textClass: 'text-status-success-text',\n bgClass: 'bg-status-success-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.increaseLoad',\n labelFallback: 'Increase load',\n },\n REVIEW_NUTRITION: {\n icon: Utensils,\n textClass: 'text-status-warning-text',\n bgClass: 'bg-status-warning-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.reviewNutrition',\n labelFallback: 'Review nutrition',\n },\n};\n\nexport function DashboardPage() {\n const t = useTr();\n const { navigateTo, currentUser } = useMyBodyShield();\n const reduceMotion = useReducedMotion();\n\n /** Staggered fade/rise entrance — one-shot, skipped under reduced motion. */\n const rise = (i: number) =>\n reduceMotion\n ? {}\n : {\n initial: { opacity: 0, y: 14 },\n whileInView: { opacity: 1, y: 0 },\n viewport: { once: true, amount: 0.15 },\n transition: { duration: 0.45, delay: Math.min(i, 8) * 0.05, ease: EASE_OUT },\n };\n\n /** Gentle hover lift for cards. */\n const lift = reduceMotion\n ? {}\n : { whileHover: { y: -3, transition: { duration: 0.2, ease: EASE_OUT } } };\n\n /** Hover lift + tap feedback for interactive cards. */\n const liftTap = reduceMotion\n ? {}\n : {\n whileHover: { y: -3, transition: { duration: 0.2, ease: EASE_OUT } },\n whileTap: { scale: 0.985 },\n };\n\n const programs = useMybPrograms({ status: 'ACTIVE', pagination: { limit: 50 } });\n const sessions = useMybSessions({ pagination: { limit: 20 } });\n const goals = useMybGoals({ status: 'ACTIVE', pagination: { limit: 50 } });\n const macros = useMybDailyMacros();\n const weightMetrics = useMybBodyMetrics({ type: 'WEIGHT', pagination: { limit: 30 } });\n const readiness = useMybRecoveryLogs('READINESS');\n // BOFF-4174: recovery-aware adaptive guidance — deterministic rule-based\n // cards, always available; `aiSummary` is an optional richer add-on.\n const guidance = useMybTodayGuidance();\n\n const programRows = programs.data?.items ?? [];\n const sessionRows = sessions.data?.items ?? [];\n const goalRows = goals.data?.items ?? [];\n const weightRows = weightMetrics.data?.items ?? [];\n const readinessRows = readiness.data?.items ?? [];\n\n const now = new Date();\n const weekAgo = now.getTime() - 7 * 24 * 60 * 60 * 1000;\n const sessionsThisWeek = sessionRows.filter((s) => {\n const ref = s.completedAt ?? s.startedAt ?? s.scheduledFor ?? s.createdAt;\n return ref ? new Date(ref).getTime() >= weekAgo : false;\n });\n const completedThisWeek = sessionsThisWeek.filter((s) => s.status === 'COMPLETED').length;\n const activeSession = sessionRows.find((s) => s.status === 'IN_PROGRESS');\n const upcomingSession = sessionRows\n .filter((s) => s.status === 'SCHEDULED' && s.scheduledFor)\n .sort((a, b) => new Date(a.scheduledFor!).getTime() - new Date(b.scheduledFor!).getTime())[0];\n\n const latestWeight = weightRows[0];\n const priorWeight = weightRows[1];\n const weightDelta =\n latestWeight && priorWeight ? latestWeight.value - priorWeight.value : undefined;\n\n const latestReadiness = readinessRows\n .slice()\n .sort((a, b) => new Date(b.loggedAt).getTime() - new Date(a.loggedAt).getTime())[0];\n\n const goalProgressAvg = useMemo(() => {\n if (goalRows.length === 0) return 0;\n const sum = goalRows.reduce((acc, g) => acc + computeGoalProgress(g), 0);\n return sum / goalRows.length;\n }, [goalRows]);\n\n const macroData = macros.data;\n const caloriePct = macroData?.calorieTarget\n ? (macroData.calories / macroData.calorieTarget) * 100\n : 0;\n\n const isInitialLoading =\n programs.isLoading && sessions.isLoading && goals.isLoading && macros.isLoading;\n\n if (isInitialLoading) {\n return (\n <PageLayout\n title={t('mybodyshield.pages.dashboard.title', 'MyBodyShield')}\n titleGradient\n aurora\n >\n <LoadingView\n label={t('mybodyshield.pages.dashboard.loading', 'Loading your fitness overview…')}\n />\n </PageLayout>\n );\n }\n\n const greetingName =\n currentUser?.firstName ||\n currentUser?.name ||\n t('mybodyshield.pages.dashboard.greetingFallback', 'there');\n\n const kpiCards: { id: string; node: ReactNode }[] = [\n {\n id: 'programs',\n node: (\n <MetricsCard\n icon={<Dumbbell className=\"h-5 w-5\" />}\n value={formatNumber(programRows.length)}\n label={t('mybodyshield.pages.dashboard.activePrograms', 'Active programs')}\n footer={\n <p className=\"text-xs text-text-tertiary\">\n <button\n type=\"button\"\n onClick={() => navigateTo('programs')}\n className=\"font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.managePrograms', 'Manage programs')}\n </button>\n </p>\n }\n />\n ),\n },\n {\n id: 'sessions',\n node: (\n <MetricsCard\n icon={<Flame className=\"h-5 w-5\" />}\n value={formatNumber(completedThisWeek)}\n label={t('mybodyshield.pages.dashboard.sessionsThisWeek', 'Sessions this week')}\n accent={activeSession ? 'warning' : undefined}\n footer={\n activeSession ? (\n <button\n type=\"button\"\n onClick={() => navigateTo(`train/${activeSession.id}`)}\n className=\"text-xs font-medium text-status-warning-text hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.resumeLiveSession', 'Resume live session →')}\n </button>\n ) : (\n <p className=\"text-xs text-text-tertiary\">\n <span className=\"tabular-nums text-text-secondary\">{sessionsThisWeek.length}</span>{' '}\n {t('mybodyshield.pages.dashboard.logged', 'logged')}\n </p>\n )\n }\n />\n ),\n },\n {\n id: 'goals',\n node: (\n <MetricsCard\n icon={<Target className=\"h-5 w-5\" />}\n value={formatNumber(goalRows.length)}\n label={t('mybodyshield.pages.dashboard.activeGoals', 'Active goals')}\n footer={\n <div className=\"space-y-2\">\n <MiniBar value={goalProgressAvg} height={4} barClassName=\"bg-action-primary-bg\" />\n <p className=\"text-xs text-text-tertiary\">\n <span className=\"tabular-nums text-text-secondary\">\n {formatPercent(goalProgressAvg)}\n </span>{' '}\n {t('mybodyshield.pages.dashboard.avgProgress', 'avg progress')}\n </p>\n </div>\n }\n />\n ),\n },\n {\n id: 'weight',\n node: (\n <MetricsCard\n icon={<Weight className=\"h-5 w-5\" />}\n value={latestWeight ? formatWeight(latestWeight.value) : '—'}\n label={t('mybodyshield.pages.dashboard.latestWeight', 'Latest weight')}\n footer={\n weightDelta != null ? (\n <p className=\"text-xs text-text-tertiary\">\n <span\n className={\n weightDelta <= 0\n ? 'font-medium text-status-success-text'\n : 'font-medium text-text-secondary'\n }\n >\n {t('mybodyshield.pages.dashboard.weightDelta', '{{delta}} kg', {\n delta: `${weightDelta > 0 ? '+' : ''}${weightDelta.toFixed(1)}`,\n })}\n </span>{' '}\n {t('mybodyshield.pages.dashboard.vsLast', 'vs last')}\n </p>\n ) : (\n <button\n type=\"button\"\n onClick={() => navigateTo('progress')}\n className=\"text-xs font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.logMeasurement', 'Log a measurement →')}\n </button>\n )\n }\n />\n ),\n },\n {\n id: 'recovery',\n node: (\n <MetricsCard\n icon={<Moon className=\"h-5 w-5\" />}\n value={latestReadiness ? `${latestReadiness.score}` : '—'}\n label={t('mybodyshield.pages.dashboard.recoveryReadiness', 'Recovery readiness')}\n accent={\n latestReadiness\n ? latestReadiness.score >= 70\n ? 'success'\n : latestReadiness.score >= 40\n ? 'warning'\n : 'error'\n : undefined\n }\n footer={\n latestReadiness ? (\n <p className=\"text-xs text-text-tertiary\">\n {formatRelativeTime(latestReadiness.loggedAt)}\n </p>\n ) : (\n <button\n type=\"button\"\n onClick={() => navigateTo('recovery')}\n className=\"text-xs font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.logRecovery', 'Log recovery →')}\n </button>\n )\n }\n />\n ),\n },\n ];\n\n return (\n <PageLayout\n title={t('mybodyshield.pages.dashboard.title', 'MyBodyShield')}\n titleGradient\n aurora\n description={t(\n 'mybodyshield.pages.dashboard.description',\n 'Welcome back, {{name}} — your training, nutrition, progress & recovery control room.',\n { name: greetingName }\n )}\n >\n {/* KPI grid */}\n <div\n data-tour=\"mybodyshield-dashboard-kpi-grid\"\n className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5\"\n >\n {kpiCards.map((card, i) => (\n <motion.div\n key={card.id}\n className=\"group relative rounded-2xl transition-shadow duration-300 hover:shadow-float\"\n {...rise(i)}\n {...lift}\n >\n {/* Emerald top-edge accent — brightens on hover */}\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-x-6 top-0 z-10 h-px rounded-full bg-gradient-to-r from-transparent via-action-primary-bg to-transparent opacity-40 transition-opacity duration-300 group-hover:opacity-90\"\n />\n {card.node}\n </motion.div>\n ))}\n </div>\n\n {/* BOFF-4174: recovery-aware adaptive guidance. Only rendered once\n there's something to say (loading finished + at least one card),\n so a brand-new workspace with zero logged data doesn't get an\n empty/loading box competing with the KPI grid above. */}\n {!guidance.isLoading && (guidance.data?.cards.length ?? 0) > 0 && (\n <motion.div className=\"mt-6\" {...rise(0)}>\n <GlassCard treatment=\"glass\" className=\"p-6\">\n <div className=\"mb-4 flex items-center gap-2\">\n <IconChip\n icon={<Sparkles className=\"h-5 w-5\" />}\n tint=\"var(--color-accent-primary)\"\n />\n <div>\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.dashboard.todaysGuidance', \"Today's guidance\")}\n </h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.dashboard.guidanceDescription',\n 'Recovery-aware suggestions from your logged training & recovery data.'\n )}\n </p>\n </div>\n </div>\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {guidance.data?.cards.map((card, i) => {\n const meta = GUIDANCE_ACTION_META[card.action];\n const Icon = meta.icon;\n return (\n <div\n key={`${card.signal}-${i}`}\n className={`rounded-xl border border-seam ${meta.bgClass} p-4`}\n >\n <div className=\"mb-1.5 flex items-center gap-1.5\">\n <Icon className={`h-4 w-4 shrink-0 ${meta.textClass}`} />\n <span\n className={`text-xs font-semibold uppercase tracking-wide ${meta.textClass}`}\n >\n {t(meta.labelKey, meta.labelFallback)}\n </span>\n </div>\n <p className=\"text-sm text-text-secondary\">{card.reason}</p>\n </div>\n );\n })}\n </div>\n {guidance.data?.aiSummary && (\n <p className=\"mt-4 rounded-lg bg-surface p-3 text-sm italic text-text-secondary\">\n {guidance.data.aiSummary}\n </p>\n )}\n </GlassCard>\n </motion.div>\n )}\n\n <div className=\"mt-6 grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Today's nutrition */}\n <motion.div\n data-tour=\"mybodyshield-dashboard-nutrition\"\n className=\"lg:col-span-2\"\n {...rise(0)}\n >\n <GlassCard treatment=\"glass\" className=\"h-full p-6\">\n <div className=\"mb-4 flex flex-wrap items-start justify-between gap-3\">\n <div>\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.dashboard.todaysNutrition', \"Today's nutrition\")}\n </h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.dashboard.nutritionDescription',\n 'Calories & macros logged against your active plan.'\n )}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => navigateTo('nutrition')}\n className=\"inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.nav.nutrition', 'Nutrition')} <ArrowRight className=\"h-4 w-4\" />\n </button>\n </div>\n {!macroData || (macroData.calorieTarget === 0 && macroData.calories === 0) ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Salad className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.dashboard.noNutritionData', 'No nutrition data yet')}\n description={t(\n 'mybodyshield.pages.dashboard.noNutritionDescription',\n 'Activate a nutrition plan and log meals to track your daily macros here.'\n )}\n />\n ) : (\n <div className=\"flex flex-col gap-8 sm:flex-row sm:items-center\">\n {/* Calorie ring — the nutrition hero */}\n <div className=\"relative mx-auto flex shrink-0 items-center justify-center sm:mx-0\">\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-2 rounded-full opacity-70 blur-2xl\"\n style={{\n background:\n 'radial-gradient(circle, color-mix(in srgb, var(--color-action-primary-bg) 26%, transparent), transparent 70%)',\n }}\n />\n <ProgressRing value={caloriePct} size={188} stroke={16}>\n <span className=\"text-[11px] font-medium uppercase tracking-wide text-text-tertiary\">\n {t('mybodyshield.pages.dashboard.calories', 'Calories')}\n </span>\n <span className=\"text-3xl font-bold tabular-nums text-text-primary\">\n {formatNumber(macroData.calories)}\n </span>\n <span className=\"mt-0.5 text-xs text-text-tertiary\">\n / {formatNumber(macroData.calorieTarget)} kcal\n </span>\n </ProgressRing>\n </div>\n <div className=\"flex-1 space-y-4\">\n <div className=\"space-y-2\">\n <MacroBar\n proteinG={macroData.proteinG}\n carbsG={macroData.carbsG}\n fatG={macroData.fatG}\n height={12}\n />\n <MacroLegend />\n </div>\n <div className=\"grid grid-cols-3 gap-3\">\n {(\n [\n [\n 'mybodyshield.pages.dashboard.protein',\n 'Protein',\n macroData.proteinG,\n macroData.proteinTarget,\n ],\n [\n 'mybodyshield.pages.dashboard.carbs',\n 'Carbs',\n macroData.carbsG,\n macroData.carbsTarget,\n ],\n [\n 'mybodyshield.pages.dashboard.fat',\n 'Fat',\n macroData.fatG,\n macroData.fatTarget,\n ],\n ] as const\n ).map(([labelKey, labelFallback, val, target]) => {\n const pct = target ? (val / target) * 100 : 0;\n return (\n <div\n key={labelKey}\n className=\"rounded-2xl bg-bg-sunken/60 p-3 ring-1 ring-inset ring-border-seam/40 transition-shadow hover:shadow-float\"\n >\n <div className=\"flex items-center justify-between gap-1\">\n <p className=\"text-xs font-medium text-text-tertiary\">\n {t(labelKey, labelFallback)}\n </p>\n <span className=\"text-[11px] tabular-nums text-text-tertiary\">\n {formatPercent(pct)}\n </span>\n </div>\n <p className=\"mt-1 text-sm font-semibold tabular-nums text-text-primary\">\n {formatNumber(val)}\n <span className=\"text-xs font-normal text-text-tertiary\">\n {' '}\n / {formatNumber(target)} g\n </span>\n </p>\n <Meter value={pct} height={5} className=\"mt-2\" />\n </div>\n );\n })}\n </div>\n </div>\n </div>\n )}\n </GlassCard>\n </motion.div>\n\n {/* Next up */}\n <motion.div data-tour=\"mybodyshield-dashboard-next-up\" {...rise(1)}>\n <GlassCard treatment=\"glass\" className=\"h-full p-6\">\n <div className=\"mb-4 flex items-center justify-between gap-3\">\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.dashboard.nextUp', 'Next up')}\n </h2>\n <button\n type=\"button\"\n onClick={() => navigateTo('train')}\n className=\"inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.nav.train', 'Train')} <ArrowRight className=\"h-4 w-4\" />\n </button>\n </div>\n {activeSession ? (\n <motion.button\n type=\"button\"\n onClick={() => navigateTo(`train/${activeSession.id}`)}\n className=\"w-full rounded-2xl border border-status-warning-text/40 bg-status-warning-bg-subtle p-4 text-left transition-shadow hover:shadow-float\"\n {...liftTap}\n >\n <div className=\"flex items-center gap-2\">\n <StatusBadge status={activeSession.status} />\n </div>\n <p className=\"mt-2 text-sm font-medium text-text-primary\">\n {t(\n 'mybodyshield.pages.dashboard.liveWorkoutInProgress',\n 'Live workout in progress'\n )}\n </p>\n <p className=\"mt-0.5 text-xs text-text-tertiary\">\n {t('mybodyshield.pages.dashboard.startedAgo', 'Started {{time}}', {\n time: formatRelativeTime(activeSession.startedAt),\n })}\n </p>\n </motion.button>\n ) : upcomingSession ? (\n <motion.button\n type=\"button\"\n onClick={() => navigateTo(`train/${upcomingSession.id}`)}\n className=\"w-full rounded-2xl bg-bg-sunken/60 p-4 text-left ring-1 ring-inset ring-border-seam/40 transition-shadow hover:shadow-float\"\n {...liftTap}\n >\n <div className=\"flex items-center gap-2\">\n <IconChip icon={<CalendarCheck className=\"h-4 w-4\" />} />\n <div>\n <p className=\"text-sm font-medium text-text-primary\">\n {t('mybodyshield.pages.dashboard.scheduledSession', 'Scheduled session')}\n </p>\n <p className=\"text-xs text-text-tertiary\">\n {formatRelativeTime(upcomingSession.scheduledFor)}\n </p>\n </div>\n </div>\n </motion.button>\n ) : (\n <div className=\"flex flex-col items-center justify-center rounded-2xl border border-dashed border-border-seam py-8 text-center\">\n <span className=\"flex size-11 items-center justify-center rounded-full bg-[var(--color-accent-soft)]\">\n <Flame className=\"h-5 w-5 text-accent\" />\n </span>\n <p className=\"mt-3 text-sm font-medium text-text-primary\">\n {t('mybodyshield.pages.dashboard.noSessionScheduled', 'No session scheduled')}\n </p>\n <button\n type=\"button\"\n onClick={() => navigateTo('train')}\n className=\"mt-1 text-xs font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.startWorkout', 'Start a workout')}\n </button>\n </div>\n )}\n </GlassCard>\n </motion.div>\n </div>\n\n {/* Active goals */}\n <Section\n data-tour=\"mybodyshield-dashboard-active-goals\"\n title={t('mybodyshield.pages.dashboard.activeGoalsSection', 'Active goals')}\n description={t(\n 'mybodyshield.pages.dashboard.activeGoalsDescription',\n 'Your current targets across training, nutrition and body composition.'\n )}\n action={\n <button\n type=\"button\"\n onClick={() => navigateTo('goals')}\n className=\"inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.allGoals', 'All goals')}{' '}\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n }\n >\n {goalRows.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Target className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.dashboard.noActiveGoals', 'No active goals')}\n description={t(\n 'mybodyshield.pages.dashboard.noActiveGoalsDescription',\n 'Set a goal to give your training and nutrition a clear target to work toward.'\n )}\n />\n ) : (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {goalRows.slice(0, 6).map((g, i) => {\n const pct = computeGoalProgress(g);\n const meta = GOAL_TYPE_META[g.type];\n const Icon = meta.icon;\n return (\n <motion.button\n key={g.id}\n type=\"button\"\n onClick={() => navigateTo('goals')}\n className=\"text-left\"\n {...rise(i)}\n {...liftTap}\n >\n <GlassCard\n treatment=\"plain\"\n className=\"h-full p-4 transition-shadow hover:shadow-float\"\n >\n <div className=\"flex items-start gap-3\">\n <IconChip icon={<Icon className=\"h-4 w-4\" />} tint={meta.tint} />\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-semibold text-text-primary\">\n {g.title}\n </p>\n <p className=\"text-xs text-text-tertiary\">{formatEnumLabel(g.type)}</p>\n </div>\n </div>\n <div className=\"mt-3 space-y-1.5\">\n <Meter value={pct} />\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"tabular-nums text-text-secondary\">\n {formatNumber(g.currentValue)}\n {g.unit ? ` ${g.unit}` : ''} / {formatNumber(g.targetValue)}\n {g.unit ? ` ${g.unit}` : ''}\n </span>\n <span className=\"tabular-nums text-text-tertiary\">\n {formatPercent(pct)}\n </span>\n </div>\n </div>\n </GlassCard>\n </motion.button>\n );\n })}\n </div>\n )}\n </Section>\n\n {/* Recent sessions */}\n <Section\n data-tour=\"mybodyshield-dashboard-recent-sessions\"\n title={t('mybodyshield.pages.dashboard.recentSessions', 'Recent sessions')}\n description={t(\n 'mybodyshield.pages.dashboard.recentSessionsDescription',\n 'Your latest logged and scheduled workouts.'\n )}\n action={\n <button\n type=\"button\"\n onClick={() => navigateTo('train')}\n className=\"inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.allSessions', 'All sessions')}{' '}\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n }\n >\n {sessionRows.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Flame className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.dashboard.noSessions', 'No sessions yet')}\n description={t(\n 'mybodyshield.pages.dashboard.noSessionsDescription',\n 'Start a workout session to begin logging sets and tracking your training.'\n )}\n />\n ) : (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {sessionRows.slice(0, 6).map((s, i) => {\n const meta = WORKOUT_TYPE_META.STRENGTH;\n const Icon = s.status === 'COMPLETED' ? CheckCircle2 : meta.icon;\n return (\n <motion.button\n key={s.id}\n type=\"button\"\n onClick={() => navigateTo(`train/${s.id}`)}\n className=\"text-left\"\n {...rise(i)}\n {...liftTap}\n >\n <GlassCard treatment=\"plain\" className=\"p-4 transition-shadow hover:shadow-float\">\n <div className=\"flex items-center justify-between gap-2\">\n <IconChip icon={<Icon className=\"h-4 w-4\" />} tint={meta.tint} />\n <StatusBadge status={s.status} />\n </div>\n <p className=\"mt-3 text-sm font-medium text-text-primary\">\n {s.caloriesBurned > 0\n ? t('mybodyshield.pages.dashboard.kcalBurned', '{{kcal}} kcal burned', {\n kcal: formatNumber(s.caloriesBurned),\n })\n : t('mybodyshield.pages.dashboard.workoutSession', 'Workout session')}\n </p>\n <p className=\"mt-0.5 text-xs text-text-tertiary\">\n {formatRelativeTime(s.completedAt ?? s.startedAt ?? s.createdAt)}\n </p>\n </GlassCard>\n </motion.button>\n );\n })}\n </div>\n )}\n </Section>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"DashboardPage.js","names":["EASE_OUT","GUIDANCE_ACTION_META","BedDouble","Moon","CheckCircle2","TrendingUp","Utensils","DashboardPage","t","useTr","useMyBodyShield","reduceMotion","useReducedMotion","rise","i","lift","liftTap","programs","useMybPrograms","sessions","useMybSessions","goals","useMybGoals","macros","useMybDailyMacros","weightMetrics","useMybBodyMetrics","readiness","useMybRecoveryLogs","guidance","useMybTodayGuidance","programRows","sessionRows","goalRows","weightRows","readinessRows","weekAgo","sessionsThisWeek","ref","s","completedThisWeek","activeSession","upcomingSession","a","b","latestWeight","priorWeight","weightDelta","latestReadiness","goalProgressAvg","useMemo","acc","computeGoalProgress","g","macroData","caloriePct","PageLayout","LoadingView","greetingName","currentUser","kpiCards","MetricsCard","Dumbbell","formatNumber","navigateTo","Flame","Target","MiniBar","formatPercent","Weight","formatWeight","formatRelativeTime","motion","card","GlassCard","IconChip","Sparkles","meta","Icon","ArrowRight","EmptyState","Salad","ProgressRing","MacroBar","MacroLegend","labelKey","labelFallback","val","target","pct","Meter","StatusBadge","CalendarCheck","Section","GOAL_TYPE_META","formatEnumLabel","WORKOUT_TYPE_META"],"sources":["../../../src/mybodyshield/pages/DashboardPage.tsx"],"sourcesContent":["/**\n * Dashboard — MyBodyShield health & fitness overview.\n * @module mybodyshield/pages\n *\n * KPIs are aggregated client-side from the real `myb*` list endpoints:\n * active programs, this-week's sessions, goal progress, today's macros vs\n * target, latest body weight and recovery readiness. No mock data.\n */\n\nimport { useMemo } from 'react';\nimport type { ReactNode } from 'react';\nimport { motion, useReducedMotion } from 'framer-motion';\nimport {\n Dumbbell,\n Flame,\n Target,\n Salad,\n Moon,\n ArrowRight,\n CheckCircle2,\n Weight,\n CalendarCheck,\n Sparkles,\n BedDouble,\n TrendingUp,\n Utensils,\n} from 'lucide-react';\nimport { GlassCard } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { MetricsCard } from '../components/MetricsCard';\nimport { StatusBadge } from '../components/StatusBadge';\nimport { MiniBar } from '../components/MiniBar';\nimport { LoadingView, Section } from '../components/StateViews';\nimport { EmptyState } from '../components/EmptyState';\nimport {\n Meter,\n ProgressRing,\n MacroBar,\n MacroLegend,\n IconChip,\n GOAL_TYPE_META,\n RECOVERY_META,\n WORKOUT_TYPE_META,\n computeGoalProgress,\n} from './_shared/visuals';\nimport { useMyBodyShield } from '../context';\nimport {\n useMybPrograms,\n useMybSessions,\n useMybGoals,\n useMybDailyMacros,\n useMybBodyMetrics,\n useMybRecoveryLogs,\n useMybTodayGuidance,\n useTr,\n} from '../hooks';\nimport type { MybGuidanceAction } from '../types';\n\nimport {\n formatNumber,\n formatRelativeTime,\n formatKcal,\n formatWeight,\n formatPercent,\n formatEnumLabel,\n} from '../utils/formatters';\n\n/** Shared easing for entrance / hover motion (smooth ease-out). */\nconst EASE_OUT: [number, number, number, number] = [0.16, 1, 0.3, 1];\n\n/** Icon + status-token accent per guidance action (BOFF-4174). */\nconst GUIDANCE_ACTION_META: Record<\n MybGuidanceAction,\n { icon: typeof Moon; textClass: string; bgClass: string; labelKey: string; labelFallback: string }\n> = {\n REST: {\n icon: BedDouble,\n textClass: 'text-status-error-text',\n bgClass: 'bg-status-error-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.rest',\n labelFallback: 'Rest',\n },\n LIGHTEN_SESSION: {\n icon: Moon,\n textClass: 'text-status-warning-text',\n bgClass: 'bg-status-warning-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.lightenSession',\n labelFallback: 'Lighten session',\n },\n PROCEED_AS_PLANNED: {\n icon: CheckCircle2,\n textClass: 'text-status-success-text',\n bgClass: 'bg-status-success-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.proceedAsPlanned',\n labelFallback: 'Proceed as planned',\n },\n INCREASE_LOAD: {\n icon: TrendingUp,\n textClass: 'text-status-success-text',\n bgClass: 'bg-status-success-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.increaseLoad',\n labelFallback: 'Increase load',\n },\n REVIEW_NUTRITION: {\n icon: Utensils,\n textClass: 'text-status-warning-text',\n bgClass: 'bg-status-warning-bg-subtle',\n labelKey: 'mybodyshield.pages.dashboard.reviewNutrition',\n labelFallback: 'Review nutrition',\n },\n};\n\nexport function DashboardPage() {\n const t = useTr();\n const { navigateTo, currentUser } = useMyBodyShield();\n const reduceMotion = useReducedMotion();\n\n /** Staggered fade/rise entrance — one-shot, skipped under reduced motion. */\n const rise = (i: number) =>\n reduceMotion\n ? {}\n : {\n initial: { opacity: 0, y: 14 },\n whileInView: { opacity: 1, y: 0 },\n viewport: { once: true, amount: 0.15 },\n transition: { duration: 0.45, delay: Math.min(i, 8) * 0.05, ease: EASE_OUT },\n };\n\n /** Gentle hover lift for cards. */\n const lift = reduceMotion\n ? {}\n : { whileHover: { y: -3, transition: { duration: 0.2, ease: EASE_OUT } } };\n\n /** Hover lift + tap feedback for interactive cards. */\n const liftTap = reduceMotion\n ? {}\n : {\n whileHover: { y: -3, transition: { duration: 0.2, ease: EASE_OUT } },\n whileTap: { scale: 0.985 },\n };\n\n const programs = useMybPrograms({ status: 'ACTIVE', pagination: { limit: 50 } });\n const sessions = useMybSessions({ pagination: { limit: 20 } });\n const goals = useMybGoals({ status: 'ACTIVE', pagination: { limit: 50 } });\n const macros = useMybDailyMacros();\n const weightMetrics = useMybBodyMetrics({ type: 'WEIGHT', pagination: { limit: 30 } });\n const readiness = useMybRecoveryLogs('READINESS');\n // BOFF-4174: recovery-aware adaptive guidance — deterministic rule-based\n // cards, always available; `aiSummary` is an optional richer add-on.\n const guidance = useMybTodayGuidance();\n\n const programRows = programs.data?.items ?? [];\n const sessionRows = sessions.data?.items ?? [];\n const goalRows = goals.data?.items ?? [];\n const weightRows = weightMetrics.data?.items ?? [];\n const readinessRows = readiness.data?.items ?? [];\n\n const now = new Date();\n const weekAgo = now.getTime() - 7 * 24 * 60 * 60 * 1000;\n const sessionsThisWeek = sessionRows.filter((s) => {\n const ref = s.completedAt ?? s.startedAt ?? s.scheduledFor ?? s.createdAt;\n return ref ? new Date(ref).getTime() >= weekAgo : false;\n });\n const completedThisWeek = sessionsThisWeek.filter((s) => s.status === 'COMPLETED').length;\n const activeSession = sessionRows.find((s) => s.status === 'IN_PROGRESS');\n const upcomingSession = sessionRows\n .filter((s) => s.status === 'SCHEDULED' && s.scheduledFor)\n .sort((a, b) => new Date(a.scheduledFor!).getTime() - new Date(b.scheduledFor!).getTime())[0];\n\n const latestWeight = weightRows[0];\n const priorWeight = weightRows[1];\n const weightDelta =\n latestWeight && priorWeight ? latestWeight.value - priorWeight.value : undefined;\n\n const latestReadiness = readinessRows\n .slice()\n .sort((a, b) => new Date(b.loggedAt).getTime() - new Date(a.loggedAt).getTime())[0];\n\n const goalProgressAvg = useMemo(() => {\n if (goalRows.length === 0) return 0;\n const sum = goalRows.reduce((acc, g) => acc + computeGoalProgress(g), 0);\n return sum / goalRows.length;\n }, [goalRows]);\n\n const macroData = macros.data;\n const caloriePct = macroData?.calorieTarget\n ? (macroData.calories / macroData.calorieTarget) * 100\n : 0;\n\n const isInitialLoading =\n programs.isLoading && sessions.isLoading && goals.isLoading && macros.isLoading;\n\n if (isInitialLoading) {\n return (\n <PageLayout\n title={t('mybodyshield.pages.dashboard.title', 'MyBodyShield')}\n titleGradient\n aurora\n >\n <LoadingView\n label={t('mybodyshield.pages.dashboard.loading', 'Loading your fitness overview…')}\n />\n </PageLayout>\n );\n }\n\n const greetingName =\n currentUser?.firstName ||\n currentUser?.name ||\n t('mybodyshield.pages.dashboard.greetingFallback', 'there');\n\n const kpiCards: { id: string; node: ReactNode }[] = [\n {\n id: 'programs',\n node: (\n <MetricsCard\n icon={<Dumbbell className=\"h-5 w-5\" />}\n value={formatNumber(programRows.length)}\n label={t('mybodyshield.pages.dashboard.activePrograms', 'Active programs')}\n footer={\n <p className=\"text-xs text-text-tertiary\">\n <button\n type=\"button\"\n onClick={() => navigateTo('programs')}\n className=\"font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.managePrograms', 'Manage programs')}\n </button>\n </p>\n }\n />\n ),\n },\n {\n id: 'sessions',\n node: (\n <MetricsCard\n icon={<Flame className=\"h-5 w-5\" />}\n value={formatNumber(completedThisWeek)}\n label={t('mybodyshield.pages.dashboard.sessionsThisWeek', 'Sessions this week')}\n accent={activeSession ? 'warning' : undefined}\n footer={\n activeSession ? (\n <button\n type=\"button\"\n onClick={() => navigateTo(`train/${activeSession.id}`)}\n className=\"text-xs font-medium text-status-warning-text hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.resumeLiveSession', 'Resume live session →')}\n </button>\n ) : (\n <p className=\"text-xs text-text-tertiary\">\n <span className=\"tabular-nums text-text-secondary\">{sessionsThisWeek.length}</span>{' '}\n {t('mybodyshield.pages.dashboard.logged', 'logged')}\n </p>\n )\n }\n />\n ),\n },\n {\n id: 'goals',\n node: (\n <MetricsCard\n icon={<Target className=\"h-5 w-5\" />}\n value={formatNumber(goalRows.length)}\n label={t('mybodyshield.pages.dashboard.activeGoals', 'Active goals')}\n footer={\n <div className=\"space-y-2\">\n <MiniBar value={goalProgressAvg} height={4} barClassName=\"bg-action-primary-bg\" />\n <p className=\"text-xs text-text-tertiary\">\n <span className=\"tabular-nums text-text-secondary\">\n {formatPercent(goalProgressAvg)}\n </span>{' '}\n {t('mybodyshield.pages.dashboard.avgProgress', 'avg progress')}\n </p>\n </div>\n }\n />\n ),\n },\n {\n id: 'weight',\n node: (\n <MetricsCard\n icon={<Weight className=\"h-5 w-5\" />}\n value={latestWeight ? formatWeight(latestWeight.value) : '—'}\n label={t('mybodyshield.pages.dashboard.latestWeight', 'Latest weight')}\n footer={\n weightDelta != null ? (\n <p className=\"text-xs text-text-tertiary\">\n <span\n className={\n weightDelta <= 0\n ? 'font-medium text-status-success-text'\n : 'font-medium text-text-secondary'\n }\n >\n {t('mybodyshield.pages.dashboard.weightDelta', '{{delta}} kg', {\n delta: `${weightDelta > 0 ? '+' : ''}${weightDelta.toFixed(1)}`,\n })}\n </span>{' '}\n {t('mybodyshield.pages.dashboard.vsLast', 'vs last')}\n </p>\n ) : (\n <button\n type=\"button\"\n onClick={() => navigateTo('progress')}\n className=\"text-xs font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.logMeasurement', 'Log a measurement →')}\n </button>\n )\n }\n />\n ),\n },\n {\n id: 'recovery',\n node: (\n <MetricsCard\n icon={<Moon className=\"h-5 w-5\" />}\n value={latestReadiness ? `${latestReadiness.score}` : '—'}\n label={t('mybodyshield.pages.dashboard.recoveryReadiness', 'Recovery readiness')}\n accent={\n latestReadiness\n ? latestReadiness.score >= 70\n ? 'success'\n : latestReadiness.score >= 40\n ? 'warning'\n : 'error'\n : undefined\n }\n footer={\n latestReadiness ? (\n <p className=\"text-xs text-text-tertiary\">\n {formatRelativeTime(latestReadiness.loggedAt)}\n </p>\n ) : (\n <button\n type=\"button\"\n onClick={() => navigateTo('recovery')}\n className=\"text-xs font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.logRecovery', 'Log recovery →')}\n </button>\n )\n }\n />\n ),\n },\n ];\n\n return (\n <PageLayout\n title={t('mybodyshield.pages.dashboard.title', 'MyBodyShield')}\n titleGradient\n aurora\n description={t(\n 'mybodyshield.pages.dashboard.description',\n 'Welcome back, {{name}} — your training, nutrition, progress & recovery control room.',\n { name: greetingName }\n )}\n >\n {/* KPI grid */}\n <div\n data-tour=\"mybodyshield-dashboard-kpi-grid\"\n className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-5\"\n >\n {kpiCards.map((card, i) => (\n <motion.div\n key={card.id}\n className=\"group relative rounded-2xl transition-shadow duration-300 hover:shadow-float\"\n {...rise(i)}\n {...lift}\n >\n {/* Emerald top-edge accent — brightens on hover */}\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-x-6 top-0 z-10 h-px rounded-full bg-gradient-to-r from-transparent via-action-primary-bg to-transparent opacity-40 transition-opacity duration-300 group-hover:opacity-90\"\n />\n {card.node}\n </motion.div>\n ))}\n </div>\n\n {/* BOFF-4174: recovery-aware adaptive guidance. Only rendered once\n there's something to say (loading finished + at least one card),\n so a brand-new workspace with zero logged data doesn't get an\n empty/loading box competing with the KPI grid above. */}\n {!guidance.isLoading && (guidance.data?.cards.length ?? 0) > 0 && (\n <motion.div className=\"mt-6\" {...rise(0)}>\n <GlassCard treatment=\"glass\" className=\"p-6\">\n <div className=\"mb-4 flex items-center gap-2\">\n <IconChip\n icon={<Sparkles className=\"h-5 w-5\" />}\n tint=\"var(--color-accent-primary)\"\n />\n <div>\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.dashboard.todaysGuidance', \"Today's guidance\")}\n </h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.dashboard.guidanceDescription',\n 'Recovery-aware suggestions from your logged training & recovery data.'\n )}\n </p>\n </div>\n </div>\n <div className=\"grid grid-cols-1 gap-3 sm:grid-cols-2 lg:grid-cols-3\">\n {guidance.data?.cards.map((card, i) => {\n const meta = GUIDANCE_ACTION_META[card.action];\n const Icon = meta.icon;\n return (\n <div\n key={`${card.signal}-${i}`}\n className={`rounded-xl border border-seam ${meta.bgClass} p-4`}\n >\n <div className=\"mb-1.5 flex items-center gap-1.5\">\n <Icon className={`h-4 w-4 shrink-0 ${meta.textClass}`} />\n <span\n className={`text-xs font-semibold uppercase tracking-wide ${meta.textClass}`}\n >\n {t(meta.labelKey, meta.labelFallback)}\n </span>\n </div>\n <p className=\"text-sm text-text-secondary\">{card.reason}</p>\n </div>\n );\n })}\n </div>\n {guidance.data?.aiSummary && (\n <p className=\"mt-4 rounded-lg bg-surface p-3 text-sm italic text-text-secondary\">\n {guidance.data.aiSummary}\n </p>\n )}\n </GlassCard>\n </motion.div>\n )}\n\n <div className=\"mt-6 grid grid-cols-1 gap-6 lg:grid-cols-3\">\n {/* Today's nutrition */}\n <motion.div\n data-tour=\"mybodyshield-dashboard-nutrition\"\n className=\"lg:col-span-2\"\n {...rise(0)}\n >\n <GlassCard treatment=\"glass\" className=\"h-full p-6\">\n <div className=\"mb-4 flex flex-wrap items-start justify-between gap-3\">\n <div>\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.dashboard.todaysNutrition', \"Today's nutrition\")}\n </h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.dashboard.nutritionDescription',\n 'Calories & macros logged against your active plan.'\n )}\n </p>\n </div>\n <button\n type=\"button\"\n onClick={() => navigateTo('nutrition')}\n className=\"inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.nav.nutrition', 'Nutrition')} <ArrowRight className=\"h-4 w-4\" />\n </button>\n </div>\n {!macroData || (macroData.calorieTarget === 0 && macroData.calories === 0) ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Salad className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.dashboard.noNutritionData', 'No nutrition data yet')}\n description={t(\n 'mybodyshield.pages.dashboard.noNutritionDescription',\n 'Activate a nutrition plan and log meals to track your daily macros here.'\n )}\n />\n ) : (\n <div className=\"flex flex-col gap-8 sm:flex-row sm:items-center\">\n {/* Calorie ring — the nutrition hero */}\n <div className=\"relative mx-auto flex shrink-0 items-center justify-center sm:mx-0\">\n <span\n aria-hidden\n className=\"pointer-events-none absolute inset-2 rounded-full opacity-70 blur-2xl\"\n style={{\n background:\n 'radial-gradient(circle, color-mix(in srgb, var(--color-action-primary-bg) 26%, transparent), transparent 70%)',\n }}\n />\n <ProgressRing value={caloriePct} size={188} stroke={16}>\n <span className=\"text-[11px] font-medium uppercase tracking-wide text-text-tertiary\">\n {t('mybodyshield.pages.dashboard.calories', 'Calories')}\n </span>\n <span className=\"text-3xl font-bold tabular-nums text-text-primary\">\n {formatNumber(macroData.calories)}\n </span>\n <span className=\"mt-0.5 text-xs text-text-tertiary\">\n / {formatNumber(macroData.calorieTarget)} kcal\n </span>\n </ProgressRing>\n </div>\n <div className=\"flex-1 space-y-4\">\n <div className=\"space-y-2\">\n <MacroBar\n proteinG={macroData.proteinG}\n carbsG={macroData.carbsG}\n fatG={macroData.fatG}\n height={12}\n />\n <MacroLegend />\n </div>\n <div className=\"grid grid-cols-3 gap-3\">\n {(\n [\n [\n 'mybodyshield.pages.dashboard.protein',\n 'Protein',\n macroData.proteinG,\n macroData.proteinTarget,\n ],\n [\n 'mybodyshield.pages.dashboard.carbs',\n 'Carbs',\n macroData.carbsG,\n macroData.carbsTarget,\n ],\n [\n 'mybodyshield.pages.dashboard.fat',\n 'Fat',\n macroData.fatG,\n macroData.fatTarget,\n ],\n ] as const\n ).map(([labelKey, labelFallback, val, target]) => {\n const pct = target ? (val / target) * 100 : 0;\n return (\n <div\n key={labelKey}\n className=\"rounded-2xl bg-bg-sunken/60 p-3 ring-1 ring-inset ring-border-seam/40 transition-shadow hover:shadow-float\"\n >\n <div className=\"flex items-center justify-between gap-1\">\n <p className=\"text-xs font-medium text-text-tertiary\">\n {t(labelKey, labelFallback)}\n </p>\n <span className=\"text-[11px] tabular-nums text-text-tertiary\">\n {formatPercent(pct)}\n </span>\n </div>\n <p className=\"mt-1 text-sm font-semibold tabular-nums text-text-primary\">\n {formatNumber(val)}\n <span className=\"text-xs font-normal text-text-tertiary\">\n {' '}\n / {formatNumber(target)} g\n </span>\n </p>\n <Meter value={pct} height={5} className=\"mt-2\" />\n </div>\n );\n })}\n </div>\n </div>\n </div>\n )}\n </GlassCard>\n </motion.div>\n\n {/* Next up */}\n <motion.div data-tour=\"mybodyshield-dashboard-next-up\" {...rise(1)}>\n <GlassCard treatment=\"glass\" className=\"h-full p-6\">\n <div className=\"mb-4 flex items-center justify-between gap-3\">\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.dashboard.nextUp', 'Next up')}\n </h2>\n <button\n type=\"button\"\n onClick={() => navigateTo('train')}\n className=\"inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.nav.train', 'Train')} <ArrowRight className=\"h-4 w-4\" />\n </button>\n </div>\n {activeSession ? (\n <motion.button\n type=\"button\"\n onClick={() => navigateTo(`train/${activeSession.id}`)}\n className=\"w-full rounded-2xl border border-status-warning-text/40 bg-status-warning-bg-subtle p-4 text-left transition-shadow hover:shadow-float\"\n {...liftTap}\n >\n <div className=\"flex items-center gap-2\">\n <StatusBadge status={activeSession.status} />\n </div>\n <p className=\"mt-2 text-sm font-medium text-text-primary\">\n {t(\n 'mybodyshield.pages.dashboard.liveWorkoutInProgress',\n 'Live workout in progress'\n )}\n </p>\n <p className=\"mt-0.5 text-xs text-text-tertiary\">\n {t('mybodyshield.pages.dashboard.startedAgo', 'Started {{time}}', {\n time: formatRelativeTime(activeSession.startedAt),\n })}\n </p>\n </motion.button>\n ) : upcomingSession ? (\n <motion.button\n type=\"button\"\n onClick={() => navigateTo(`train/${upcomingSession.id}`)}\n className=\"w-full rounded-2xl bg-bg-sunken/60 p-4 text-left ring-1 ring-inset ring-border-seam/40 transition-shadow hover:shadow-float\"\n {...liftTap}\n >\n <div className=\"flex items-center gap-2\">\n <IconChip icon={<CalendarCheck className=\"h-4 w-4\" />} />\n <div>\n <p className=\"text-sm font-medium text-text-primary\">\n {t('mybodyshield.pages.dashboard.scheduledSession', 'Scheduled session')}\n </p>\n <p className=\"text-xs text-text-tertiary\">\n {formatRelativeTime(upcomingSession.scheduledFor)}\n </p>\n </div>\n </div>\n </motion.button>\n ) : (\n <div className=\"flex flex-col items-center justify-center rounded-2xl border border-dashed border-border-seam py-8 text-center\">\n <span className=\"flex size-11 items-center justify-center rounded-full bg-[var(--color-accent-soft)]\">\n <Flame className=\"h-5 w-5 text-accent\" />\n </span>\n <p className=\"mt-3 text-sm font-medium text-text-primary\">\n {t('mybodyshield.pages.dashboard.noSessionScheduled', 'No session scheduled')}\n </p>\n <button\n type=\"button\"\n onClick={() => navigateTo('train')}\n className=\"mt-1 text-xs font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.startWorkout', 'Start a workout')}\n </button>\n </div>\n )}\n </GlassCard>\n </motion.div>\n </div>\n\n {/* Active goals */}\n <Section\n data-tour=\"mybodyshield-dashboard-active-goals\"\n title={t('mybodyshield.pages.dashboard.activeGoalsSection', 'Active goals')}\n description={t(\n 'mybodyshield.pages.dashboard.activeGoalsDescription',\n 'Your current targets across training, nutrition and body composition.'\n )}\n action={\n <button\n type=\"button\"\n onClick={() => navigateTo('goals')}\n className=\"inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.allGoals', 'All goals')}{' '}\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n }\n >\n {goalRows.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Target className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.dashboard.noActiveGoals', 'No active goals')}\n description={t(\n 'mybodyshield.pages.dashboard.noActiveGoalsDescription',\n 'Set a goal to give your training and nutrition a clear target to work toward.'\n )}\n />\n ) : (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {goalRows.slice(0, 6).map((g, i) => {\n const pct = computeGoalProgress(g);\n const meta = GOAL_TYPE_META[g.type];\n const Icon = meta.icon;\n return (\n <motion.button\n key={g.id}\n type=\"button\"\n onClick={() => navigateTo('goals')}\n className=\"text-left\"\n {...rise(i)}\n {...liftTap}\n >\n <GlassCard\n treatment=\"plain\"\n className=\"h-full p-4 transition-shadow hover:shadow-float\"\n >\n <div className=\"flex items-start gap-3\">\n <IconChip icon={<Icon className=\"h-4 w-4\" />} tint={meta.tint} />\n <div className=\"min-w-0 flex-1\">\n <p className=\"truncate text-sm font-semibold text-text-primary\">\n {g.title}\n </p>\n <p className=\"text-xs text-text-tertiary\">{formatEnumLabel(g.type)}</p>\n </div>\n </div>\n <div className=\"mt-3 space-y-1.5\">\n <Meter value={pct} />\n <div className=\"flex items-center justify-between text-xs\">\n <span className=\"tabular-nums text-text-secondary\">\n {formatNumber(g.currentValue)}\n {g.unit ? ` ${g.unit}` : ''} / {formatNumber(g.targetValue)}\n {g.unit ? ` ${g.unit}` : ''}\n </span>\n <span className=\"tabular-nums text-text-tertiary\">\n {formatPercent(pct)}\n </span>\n </div>\n </div>\n </GlassCard>\n </motion.button>\n );\n })}\n </div>\n )}\n </Section>\n\n {/* Recent sessions */}\n <Section\n data-tour=\"mybodyshield-dashboard-recent-sessions\"\n title={t('mybodyshield.pages.dashboard.recentSessions', 'Recent sessions')}\n description={t(\n 'mybodyshield.pages.dashboard.recentSessionsDescription',\n 'Your latest logged and scheduled workouts.'\n )}\n action={\n <button\n type=\"button\"\n onClick={() => navigateTo('train')}\n className=\"inline-flex items-center gap-1 text-sm font-medium text-accent hover:underline\"\n >\n {t('mybodyshield.pages.dashboard.allSessions', 'All sessions')}{' '}\n <ArrowRight className=\"h-4 w-4\" />\n </button>\n }\n >\n {sessionRows.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Flame className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.dashboard.noSessions', 'No sessions yet')}\n description={t(\n 'mybodyshield.pages.dashboard.noSessionsDescription',\n 'Start a workout session to begin logging sets and tracking your training.'\n )}\n />\n ) : (\n <div className=\"grid grid-cols-1 gap-4 sm:grid-cols-2 lg:grid-cols-3\">\n {sessionRows.slice(0, 6).map((s, i) => {\n const meta = WORKOUT_TYPE_META.STRENGTH;\n const Icon = s.status === 'COMPLETED' ? CheckCircle2 : meta.icon;\n return (\n <motion.button\n key={s.id}\n type=\"button\"\n onClick={() => navigateTo(`train/${s.id}`)}\n className=\"text-left\"\n {...rise(i)}\n {...liftTap}\n >\n <GlassCard treatment=\"plain\" className=\"p-4 transition-shadow hover:shadow-float\">\n <div className=\"flex items-center justify-between gap-2\">\n <IconChip icon={<Icon className=\"h-4 w-4\" />} tint={meta.tint} />\n <StatusBadge status={s.status} />\n </div>\n <p className=\"mt-3 text-sm font-medium text-text-primary\">\n {s.caloriesBurned > 0\n ? t('mybodyshield.pages.dashboard.kcalBurned', '{{kcal}} kcal burned', {\n kcal: formatNumber(s.caloriesBurned),\n })\n : t('mybodyshield.pages.dashboard.workoutSession', 'Workout session')}\n </p>\n <p className=\"mt-0.5 text-xs text-text-tertiary\">\n {formatRelativeTime(s.completedAt ?? s.startedAt ?? s.createdAt)}\n </p>\n </GlassCard>\n </motion.button>\n );\n })}\n </div>\n )}\n </Section>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* members can enable or withdraw consent without leaving the app. Rule-based
|
|
7
7
|
* guidance and manual logging continue to work when consent is withdrawn.
|
|
8
8
|
*/
|
|
9
|
-
export declare function SettingsPage(): import(
|
|
9
|
+
export declare function SettingsPage(): import('react').JSX.Element;
|
|
10
10
|
//# sourceMappingURL=SettingsPage.d.ts.map
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { PageLayout as e } from "../components/PageLayout.js";
|
|
2
2
|
import { useMybAiProcessingConsent as t, useMybSetAiProcessingConsent as n } from "../hooks/useMyBodyShieldApi.js";
|
|
3
3
|
import { useTr as r } from "../hooks/useTr.js";
|
|
4
|
-
import "../hooks/index.js";
|
|
5
4
|
import { ErrorView as i, LoadingView as a, Section as o } from "../components/StateViews.js";
|
|
5
|
+
import "../hooks/index.js";
|
|
6
6
|
import { IconChip as s } from "./_shared/visuals.js";
|
|
7
7
|
import { ExternalLink as c, FileText as l, ShieldCheck as u, Sparkles as d } from "lucide-react";
|
|
8
8
|
import { Fragment as f, jsx as p, jsxs as m } from "react/jsx-runtime";
|
|
9
9
|
import { Button as h, GlassCard as g, Switch as _ } from "@burdenoff/fe-libs/ui";
|
|
10
|
-
|
|
10
|
+
// src/mybodyshield/pages/SettingsPage.tsx
|
|
11
11
|
function v() {
|
|
12
12
|
let v = r(), y = t(), b = n();
|
|
13
13
|
if (y.isLoading) return /* @__PURE__ */ p(e, {
|
|
@@ -89,7 +89,6 @@ function v() {
|
|
|
89
89
|
})
|
|
90
90
|
});
|
|
91
91
|
}
|
|
92
|
-
//#endregion
|
|
93
92
|
export { v as SettingsPage };
|
|
94
93
|
|
|
95
94
|
//# sourceMappingURL=SettingsPage.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SettingsPage.js","names":[],"sources":["../../../src/mybodyshield/pages/SettingsPage.tsx"],"sourcesContent":["/**\n * MyBodyShield Settings — AI-processing consent and related controls.\n * @module mybodyshield/pages\n *\n * BOFF-3838: exposes the AI-processing consent toggle inside the product so\n * members can enable or withdraw consent without leaving the app. Rule-based\n * guidance and manual logging continue to work when consent is withdrawn.\n */\n\nimport { Sparkles, ShieldCheck, ExternalLink, FileText } from 'lucide-react';\nimport { GlassCard, Switch, Button } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { LoadingView, ErrorView, Section } from '../components/StateViews';\nimport { useMybAiProcessingConsent, useMybSetAiProcessingConsent, useTr } from '../hooks';\nimport { IconChip } from './_shared/visuals';\n\nexport function SettingsPage() {\n const t = useTr();\n const consent = useMybAiProcessingConsent();\n const setConsent = useMybSetAiProcessingConsent();\n\n if (consent.isLoading) {\n return (\n <PageLayout title={t('mybodyshield.pages.settings.title', 'Settings')}>\n <LoadingView label={t('mybodyshield.pages.settings.loading', 'Loading settings…')} />\n </PageLayout>\n );\n }\n\n if (consent.isError) {\n return (\n <PageLayout title={t('mybodyshield.pages.settings.title', 'Settings')}>\n <ErrorView\n title={t('mybodyshield.pages.settings.errorTitle', 'Could not load settings')}\n message={\n consent.error instanceof Error\n ? consent.error.message\n : t('mybodyshield.common.unknownError', 'Unknown error')\n }\n onRetry={() => consent.refetch()}\n />\n </PageLayout>\n );\n }\n\n const enabled = consent.data?.enabled ?? false;\n\n return (\n <PageLayout\n title={t('mybodyshield.pages.settings.title', 'Settings')}\n description={t(\n 'mybodyshield.pages.settings.description',\n 'Manage MyBodyShield preferences and AI-processing consent.'\n )}\n >\n <Section\n title={t('mybodyshield.pages.settings.aiProcessing', 'AI processing')}\n description={t(\n 'mybodyshield.pages.settings.aiProcessingDescription',\n 'Control whether AI can read your health data to generate summaries and suggestions.'\n )}\n >\n <GlassCard treatment=\"glass\" className=\"p-5\">\n <div className=\"flex items-start gap-4\">\n <IconChip icon={<Sparkles className=\"h-5 w-5\" />} />\n <div className=\"min-w-0 flex-1 space-y-3\">\n <div>\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t('mybodyshield.pages.settings.allowAi', 'Allow AI to read my health data')}\n </h3>\n <p className=\"text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.settings.aiDetail',\n 'When on, AI can generate plain-language summaries from your logged training, nutrition, recovery and body-metric data. Rule-based guidance works either way.'\n )}\n </p>\n </div>\n\n <div className=\"flex items-center justify-between gap-4 rounded-xl bg-bg-sunken/60 p-3 ring-1 ring-inset ring-border-seam/40\">\n <div className=\"flex items-center gap-2\">\n <ShieldCheck className=\"h-4 w-4 text-status-success-text\" />\n <span className=\"text-sm text-text-secondary\">\n {enabled\n ? t('mybodyshield.pages.settings.aiEnabled', 'AI processing is enabled')\n : t('mybodyshield.pages.settings.aiWithdrawn', 'AI processing is withdrawn')}\n </span>\n </div>\n <Switch\n checked={enabled}\n onCheckedChange={(checked) => setConsent.mutate(checked)}\n disabled={setConsent.isPending}\n aria-label={t(\n 'mybodyshield.pages.settings.allowAi',\n 'Allow AI to read my health data'\n )}\n />\n </div>\n\n {consent.data?.acceptedAt && (\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.common.consentAccepted', 'Consent accepted', {\n date: new Date(consent.data.acceptedAt).toLocaleDateString(undefined, {\n dateStyle: 'medium',\n }),\n })}\n {consent.data.withdrawnAt && (\n <>\n {' '}\n {t('mybodyshield.common.consentWithdrawn', '· withdrawn', {\n date: new Date(consent.data.withdrawnAt).toLocaleDateString(undefined, {\n dateStyle: 'medium',\n }),\n })}\n </>\n )}\n </p>\n )}\n\n <div className=\"flex flex-wrap items-center gap-3 pt-1\">\n <Button variant=\"outline\" size=\"sm\" asChild>\n <a\n href=\"https://mybodyshield.com/ai-policy\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1.5\"\n >\n <FileText className=\"h-4 w-4\" />\n {t('mybodyshield.common.aiPolicy', 'Read the AI Policy')}\n <ExternalLink className=\"h-3.5 w-3.5 opacity-70\" />\n </a>\n </Button>\n </div>\n </div>\n </div>\n </GlassCard>\n </Section>\n </PageLayout>\n );\n}\n"],"mappings":";;;;;;;;;;AAgBA,
|
|
1
|
+
{"version":3,"file":"SettingsPage.js","names":["_Fragment","SettingsPage","t","useTr","consent","useMybAiProcessingConsent","setConsent","useMybSetAiProcessingConsent","PageLayout","LoadingView","ErrorView","enabled","Section","GlassCard","IconChip","Sparkles","ShieldCheck","Switch","checked","Fragment","Button","FileText","ExternalLink"],"sources":["../../../src/mybodyshield/pages/SettingsPage.tsx"],"sourcesContent":["/**\n * MyBodyShield Settings — AI-processing consent and related controls.\n * @module mybodyshield/pages\n *\n * BOFF-3838: exposes the AI-processing consent toggle inside the product so\n * members can enable or withdraw consent without leaving the app. Rule-based\n * guidance and manual logging continue to work when consent is withdrawn.\n */\n\nimport { Sparkles, ShieldCheck, ExternalLink, FileText } from 'lucide-react';\nimport { GlassCard, Switch, Button } from '@burdenoff/fe-libs/ui';\nimport { PageLayout } from '../components/PageLayout';\nimport { LoadingView, ErrorView, Section } from '../components/StateViews';\nimport { useMybAiProcessingConsent, useMybSetAiProcessingConsent, useTr } from '../hooks';\nimport { IconChip } from './_shared/visuals';\n\nexport function SettingsPage() {\n const t = useTr();\n const consent = useMybAiProcessingConsent();\n const setConsent = useMybSetAiProcessingConsent();\n\n if (consent.isLoading) {\n return (\n <PageLayout title={t('mybodyshield.pages.settings.title', 'Settings')}>\n <LoadingView label={t('mybodyshield.pages.settings.loading', 'Loading settings…')} />\n </PageLayout>\n );\n }\n\n if (consent.isError) {\n return (\n <PageLayout title={t('mybodyshield.pages.settings.title', 'Settings')}>\n <ErrorView\n title={t('mybodyshield.pages.settings.errorTitle', 'Could not load settings')}\n message={\n consent.error instanceof Error\n ? consent.error.message\n : t('mybodyshield.common.unknownError', 'Unknown error')\n }\n onRetry={() => consent.refetch()}\n />\n </PageLayout>\n );\n }\n\n const enabled = consent.data?.enabled ?? false;\n\n return (\n <PageLayout\n title={t('mybodyshield.pages.settings.title', 'Settings')}\n description={t(\n 'mybodyshield.pages.settings.description',\n 'Manage MyBodyShield preferences and AI-processing consent.'\n )}\n >\n <Section\n title={t('mybodyshield.pages.settings.aiProcessing', 'AI processing')}\n description={t(\n 'mybodyshield.pages.settings.aiProcessingDescription',\n 'Control whether AI can read your health data to generate summaries and suggestions.'\n )}\n >\n <GlassCard treatment=\"glass\" className=\"p-5\">\n <div className=\"flex items-start gap-4\">\n <IconChip icon={<Sparkles className=\"h-5 w-5\" />} />\n <div className=\"min-w-0 flex-1 space-y-3\">\n <div>\n <h3 className=\"text-sm font-semibold text-text-primary\">\n {t('mybodyshield.pages.settings.allowAi', 'Allow AI to read my health data')}\n </h3>\n <p className=\"text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.settings.aiDetail',\n 'When on, AI can generate plain-language summaries from your logged training, nutrition, recovery and body-metric data. Rule-based guidance works either way.'\n )}\n </p>\n </div>\n\n <div className=\"flex items-center justify-between gap-4 rounded-xl bg-bg-sunken/60 p-3 ring-1 ring-inset ring-border-seam/40\">\n <div className=\"flex items-center gap-2\">\n <ShieldCheck className=\"h-4 w-4 text-status-success-text\" />\n <span className=\"text-sm text-text-secondary\">\n {enabled\n ? t('mybodyshield.pages.settings.aiEnabled', 'AI processing is enabled')\n : t('mybodyshield.pages.settings.aiWithdrawn', 'AI processing is withdrawn')}\n </span>\n </div>\n <Switch\n checked={enabled}\n onCheckedChange={(checked) => setConsent.mutate(checked)}\n disabled={setConsent.isPending}\n aria-label={t(\n 'mybodyshield.pages.settings.allowAi',\n 'Allow AI to read my health data'\n )}\n />\n </div>\n\n {consent.data?.acceptedAt && (\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.common.consentAccepted', 'Consent accepted', {\n date: new Date(consent.data.acceptedAt).toLocaleDateString(undefined, {\n dateStyle: 'medium',\n }),\n })}\n {consent.data.withdrawnAt && (\n <>\n {' '}\n {t('mybodyshield.common.consentWithdrawn', '· withdrawn', {\n date: new Date(consent.data.withdrawnAt).toLocaleDateString(undefined, {\n dateStyle: 'medium',\n }),\n })}\n </>\n )}\n </p>\n )}\n\n <div className=\"flex flex-wrap items-center gap-3 pt-1\">\n <Button variant=\"outline\" size=\"sm\" asChild>\n <a\n href=\"https://mybodyshield.com/ai-policy\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"inline-flex items-center gap-1.5\"\n >\n <FileText className=\"h-4 w-4\" />\n {t('mybodyshield.common.aiPolicy', 'Read the AI Policy')}\n <ExternalLink className=\"h-3.5 w-3.5 opacity-70\" />\n </a>\n </Button>\n </div>\n </div>\n </div>\n </GlassCard>\n </Section>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import { FC, ReactNode } from 'react';
|
|
2
2
|
import { Dumbbell, Timer, Weight, Target, Gauge } from 'lucide-react';
|
|
3
3
|
import { MybBodyMetricType, MybGoalType, MybMuscleGroup, MybRecoveryMetric, MybWorkoutType } from '../../types';
|
|
4
|
-
|
|
5
4
|
export declare const Meter: FC<{
|
|
6
5
|
/** 0–100 percentage. */
|
|
7
6
|
value: number;
|
|
@@ -3,7 +3,7 @@ import { useTr as t } from "../../hooks/useTr.js";
|
|
|
3
3
|
import "../../hooks/index.js";
|
|
4
4
|
import { Activity as n, BedDouble as r, Brain as i, Dumbbell as a, Flower2 as o, Gauge as s, Heart as c, HeartPulse as l, Moon as u, Percent as d, Ruler as f, Smile as p, Sparkles as m, StretchHorizontal as h, TrendingDown as g, TrendingUp as _, Waves as v, Weight as y, Zap as b } from "lucide-react";
|
|
5
5
|
import { jsx as x, jsxs as S } from "react/jsx-runtime";
|
|
6
|
-
|
|
6
|
+
// src/mybodyshield/pages/_shared/visuals.tsx
|
|
7
7
|
var C = ({ value: t, color: n = "var(--color-action-primary-bg)", height: r = 8, className: i }) => {
|
|
8
8
|
let a = Math.max(0, Math.min(100, t));
|
|
9
9
|
return /* @__PURE__ */ x("div", {
|
|
@@ -265,7 +265,6 @@ function I(e) {
|
|
|
265
265
|
let n = (e.currentValue - e.baselineValue) / t * 100;
|
|
266
266
|
return Math.max(0, Math.min(100, n));
|
|
267
267
|
}
|
|
268
|
-
//#endregion
|
|
269
268
|
export { j as GOAL_TYPE_META, P as IconChip, T as MACRO_HUE, M as METRIC_META, A as MUSCLE_META, E as MacroBar, D as MacroLegend, C as Meter, w as ProgressRing, N as RECOVERY_META, F as TrendPill, k as WORKOUT_TYPE_META, I as computeGoalProgress };
|
|
270
269
|
|
|
271
270
|
//# sourceMappingURL=visuals.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"visuals.js","names":[],"sources":["../../../../src/mybodyshield/pages/_shared/visuals.tsx"],"sourcesContent":["/**\n * Shared fitness-domain visual helpers.\n * @module mybodyshield/pages/_shared\n *\n * Token-driven (no raw colors) SVG/CSS visual primitives + domain icon/tint\n * maps reused across the MyBodyShield pages. Everything reads fe-libs semantic\n * tokens so light/dark themes and custom themes work automatically.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport {\n Dumbbell,\n HeartPulse,\n Timer,\n Activity,\n StretchHorizontal,\n Flower2,\n Moon,\n Weight,\n Ruler,\n Percent,\n Heart,\n TrendingDown,\n TrendingUp,\n Zap,\n Waves,\n Target,\n Sparkles,\n Brain,\n BedDouble,\n Gauge,\n Smile,\n} from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { useTr } from '../../hooks';\nimport type {\n MybBodyMetricType,\n MybGoalType,\n MybMuscleGroup,\n MybRecoveryMetric,\n MybWorkoutType,\n} from '../../types';\n\n// ============================================================================\n// Meter — a horizontal progress bar with a token-driven fill\n// ============================================================================\n\nexport const Meter: FC<{\n /** 0–100 percentage. */\n value: number;\n /** CSS color for the fill (default: brand emerald). */\n color?: string;\n height?: number;\n className?: string;\n}> = ({ value, color = 'var(--color-action-primary-bg)', height = 8, className }) => {\n const pct = Math.max(0, Math.min(100, value));\n return (\n <div\n className={cn('w-full overflow-hidden rounded-full bg-bg-sunken', className)}\n style={{ height }}\n role=\"progressbar\"\n aria-valuenow={Math.round(pct)}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className=\"h-full rounded-full transition-[width] duration-500 ease-out\"\n style={{ width: `${pct}%`, backgroundColor: color }}\n />\n </div>\n );\n};\n\n// ============================================================================\n// ProgressRing — a circular progress indicator (goal progress, readiness)\n// ============================================================================\n\nexport const ProgressRing: FC<{\n value: number;\n size?: number;\n stroke?: number;\n color?: string;\n trackColor?: string;\n children?: ReactNode;\n className?: string;\n}> = ({\n value,\n size = 96,\n stroke = 9,\n color = 'var(--color-action-primary-bg)',\n trackColor = 'var(--color-bg-sunken)',\n children,\n className,\n}) => {\n const pct = Math.max(0, Math.min(100, value));\n const r = (size - stroke) / 2;\n const c = 2 * Math.PI * r;\n const offset = c - (pct / 100) * c;\n return (\n <div\n className={cn('relative inline-flex items-center justify-center', className)}\n style={{ width: size, height: size }}\n >\n <svg width={size} height={size} className=\"-rotate-90\">\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={trackColor}\n strokeWidth={stroke}\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={color}\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n strokeDasharray={c}\n strokeDashoffset={offset}\n className=\"transition-[stroke-dashoffset] duration-700 ease-out\"\n />\n </svg>\n {children != null && (\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">{children}</div>\n )}\n </div>\n );\n};\n\n// ============================================================================\n// MacroBar — a stacked protein/carbs/fat bar (grams → proportion)\n// ============================================================================\n\nexport const MACRO_HUE = {\n protein: 'var(--color-action-primary-bg)',\n carbs: 'var(--color-status-warning-text)',\n fat: 'var(--color-accent-primary)',\n} as const;\n\nexport const MacroBar: FC<{\n proteinG: number;\n carbsG: number;\n fatG: number;\n height?: number;\n className?: string;\n}> = ({ proteinG, carbsG, fatG, height = 8, className }) => {\n const total = Math.max(1, proteinG + carbsG + fatG);\n const seg = (g: number) => `${(g / total) * 100}%`;\n return (\n <div\n className={cn('flex w-full overflow-hidden rounded-full bg-bg-sunken', className)}\n style={{ height }}\n >\n <div style={{ width: seg(proteinG), backgroundColor: MACRO_HUE.protein }} />\n <div style={{ width: seg(carbsG), backgroundColor: MACRO_HUE.carbs }} />\n <div style={{ width: seg(fatG), backgroundColor: MACRO_HUE.fat }} />\n </div>\n );\n};\n\nexport const MacroLegend: FC<{ className?: string }> = ({ className }) => {\n const t = useTr();\n return (\n <div className={cn('flex flex-wrap items-center gap-3 text-xs text-text-tertiary', className)}>\n {(['protein', 'carbs', 'fat'] as const).map((k) => (\n <span key={k} className=\"inline-flex items-center gap-1.5\">\n <span className=\"size-2 rounded-full\" style={{ backgroundColor: MACRO_HUE[k] }} />\n <span className=\"capitalize\">\n {t(\n `mybodyshield.common.${k}`,\n k === 'protein' ? 'Protein' : k === 'carbs' ? 'Carbs' : 'Fat'\n )}\n </span>\n </span>\n ))}\n </div>\n );\n};\n\n// ============================================================================\n// Domain icon + tint maps (semantic tokens only)\n// ============================================================================\n\n/**\n * Wrap an enum→meta map so an unknown server enum value (svc stores enums as\n * TEXT, so a value outside the client union is plausible) resolves to a safe\n * fallback entry instead of `undefined` — accessing `.icon`/`.tint`/`.label` on\n * `undefined` would otherwise crash the whole page.\n */\nfunction metaWithFallback<K extends string, V>(\n source: Record<K, V>,\n fallback: NoInfer<K>\n): Record<K, V> {\n return new Proxy(source, {\n get(target, prop: string) {\n return (target as Record<string, V>)[prop] ?? target[fallback];\n },\n }) as Record<K, V>;\n}\n\nconst WORKOUT_TYPE_META_SOURCE: Record<MybWorkoutType, { icon: typeof Dumbbell; tint: string }> = {\n STRENGTH: { icon: Dumbbell, tint: 'var(--color-accent-primary)' },\n CARDIO: { icon: HeartPulse, tint: 'var(--color-status-warning-text)' },\n HIIT: { icon: Zap, tint: 'var(--color-status-error-text)' },\n MOBILITY: { icon: StretchHorizontal, tint: 'var(--color-action-primary-bg)' },\n YOGA: { icon: Flower2, tint: 'var(--color-action-primary-bg)' },\n RECOVERY: { icon: Moon, tint: 'var(--color-status-success-text)' },\n};\nexport const WORKOUT_TYPE_META = metaWithFallback(WORKOUT_TYPE_META_SOURCE, 'STRENGTH');\n\nconst MUSCLE_META_SOURCE: Record<MybMuscleGroup, { tint: string }> = {\n CHEST: { tint: 'var(--color-accent-primary)' },\n BACK: { tint: 'var(--color-action-primary-bg)' },\n LEGS: { tint: 'var(--color-status-warning-text)' },\n SHOULDERS: { tint: 'var(--color-status-error-text)' },\n ARMS: { tint: 'var(--color-accent-primary)' },\n CORE: { tint: 'var(--color-status-success-text)' },\n FULL_BODY: { tint: 'var(--color-text-secondary)' },\n};\nexport const MUSCLE_META = metaWithFallback(MUSCLE_META_SOURCE, 'FULL_BODY');\n\nconst GOAL_TYPE_META_SOURCE: Record<MybGoalType, { icon: typeof Target; tint: string }> = {\n WEIGHT_LOSS: { icon: TrendingDown, tint: 'var(--color-action-primary-bg)' },\n MUSCLE_GAIN: { icon: Dumbbell, tint: 'var(--color-accent-primary)' },\n STRENGTH: { icon: Weight, tint: 'var(--color-status-error-text)' },\n ENDURANCE: { icon: Activity, tint: 'var(--color-status-warning-text)' },\n MOBILITY: { icon: StretchHorizontal, tint: 'var(--color-action-primary-bg)' },\n GENERAL_FITNESS: { icon: Sparkles, tint: 'var(--color-text-secondary)' },\n};\nexport const GOAL_TYPE_META = metaWithFallback(GOAL_TYPE_META_SOURCE, 'GENERAL_FITNESS');\n\nconst METRIC_META_SOURCE: Record<\n MybBodyMetricType,\n { icon: typeof Weight; tint: string; unit: string }\n> = {\n WEIGHT: { icon: Weight, tint: 'var(--color-accent-primary)', unit: 'kg' },\n BODY_FAT: { icon: Percent, tint: 'var(--color-status-warning-text)', unit: '%' },\n RESTING_HEART_RATE: { icon: Heart, tint: 'var(--color-status-error-text)', unit: 'bpm' },\n WAIST: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n CHEST: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n HIPS: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n ARM: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n THIGH: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n};\nexport const METRIC_META = metaWithFallback(METRIC_META_SOURCE, 'WEIGHT');\n\nconst RECOVERY_META_SOURCE: Record<\n MybRecoveryMetric,\n { icon: typeof Gauge; tint: string; labelKey: string; labelFallback: string }\n> = {\n SLEEP: {\n icon: BedDouble,\n tint: 'var(--color-accent-primary)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.sleep',\n labelFallback: 'Sleep',\n },\n READINESS: {\n icon: Gauge,\n tint: 'var(--color-status-success-text)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.readiness',\n labelFallback: 'Readiness',\n },\n SORENESS: {\n icon: Waves,\n tint: 'var(--color-status-warning-text)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.soreness',\n labelFallback: 'Soreness',\n },\n STRESS: {\n icon: Brain,\n tint: 'var(--color-status-error-text)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.stress',\n labelFallback: 'Stress',\n },\n MOOD: {\n icon: Smile,\n tint: 'var(--color-action-primary-bg)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.mood',\n labelFallback: 'Mood',\n },\n};\nexport const RECOVERY_META = metaWithFallback(RECOVERY_META_SOURCE, 'READINESS');\n\n// ============================================================================\n// Small helpers\n// ============================================================================\n\n/** Circular icon chip with a soft tinted background. */\nexport const IconChip: FC<{ icon: ReactNode; tint?: string; className?: string }> = ({\n icon,\n tint = 'var(--color-action-primary-bg)',\n className,\n}) => (\n <span\n className={cn('flex size-9 shrink-0 items-center justify-center rounded-lg', className)}\n style={{ backgroundColor: `color-mix(in srgb, ${tint} 16%, transparent)`, color: tint }}\n >\n {icon}\n </span>\n);\n\n/** A small trend delta pill (up/down/flat) with semantic color. */\nexport const TrendPill: FC<{ delta: number; unit?: string; goodDirection?: 'up' | 'down' }> = ({\n delta,\n unit = '',\n goodDirection = 'up',\n}) => {\n if (!Number.isFinite(delta) || delta === 0) {\n return <span className=\"text-xs text-text-tertiary\">±0{unit}</span>;\n }\n const up = delta > 0;\n const good = goodDirection === 'up' ? up : !up;\n const Icon = up ? TrendingUp : TrendingDown;\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1 text-xs font-medium tabular-nums',\n good ? 'text-status-success-text' : 'text-status-error-text'\n )}\n >\n <Icon className=\"h-3.5 w-3.5\" />\n {up ? '+' : ''}\n {delta.toFixed(1)}\n {unit}\n </span>\n );\n};\n\n/** Compute a goal's completion percentage from baseline → target → current. */\nexport function computeGoalProgress(goal: {\n baselineValue: number;\n targetValue: number;\n currentValue: number;\n}): number {\n const span = goal.targetValue - goal.baselineValue;\n if (span === 0) return goal.currentValue >= goal.targetValue ? 100 : 0;\n const done = ((goal.currentValue - goal.baselineValue) / span) * 100;\n return Math.max(0, Math.min(100, done));\n}\n\nexport { Timer };\n"],"mappings":";;;;;;AA+CA,IAAa,KAOP,EAAE,UAAO,WAAQ,kCAAkC,YAAS,GAAG,mBAAgB;CACnF,IAAM,IAAM,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,EAAM,CAAC;AAC7C,QACE,kBAAC,OAAD;EACE,WAAW,EAAG,oDAAoD,EAAU;EAC5E,OAAO,EAAE,WAAQ;EACjB,MAAK;EACL,iBAAe,KAAK,MAAM,EAAI;EAC9B,iBAAe;EACf,iBAAe;YAEf,kBAAC,OAAD;GACE,WAAU;GACV,OAAO;IAAE,OAAO,GAAG,EAAI;IAAI,iBAAiB;IAAO;GACnD,CAAA;EACE,CAAA;GAQG,KAQP,EACJ,UACA,UAAO,IACP,YAAS,GACT,WAAQ,kCACR,gBAAa,0BACb,aACA,mBACI;CACJ,IAAM,IAAM,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,EAAM,CAAC,EACvC,KAAK,IAAO,KAAU,GACtB,IAAI,IAAI,KAAK,KAAK,GAClB,IAAS,IAAK,IAAM,MAAO;AACjC,QACE,kBAAC,OAAD;EACE,WAAW,EAAG,oDAAoD,EAAU;EAC5E,OAAO;GAAE,OAAO;GAAM,QAAQ;GAAM;YAFtC,CAIE,kBAAC,OAAD;GAAK,OAAO;GAAM,QAAQ;GAAM,WAAU;aAA1C,CACE,kBAAC,UAAD;IACE,IAAI,IAAO;IACX,IAAI,IAAO;IACR;IACH,MAAK;IACL,QAAQ;IACR,aAAa;IACb,CAAA,EACF,kBAAC,UAAD;IACE,IAAI,IAAO;IACX,IAAI,IAAO;IACR;IACH,MAAK;IACL,QAAQ;IACR,aAAa;IACb,eAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,WAAU;IACV,CAAA,CACE;MACL,KAAY,QACX,kBAAC,OAAD;GAAK,WAAU;GAA8D;GAAe,CAAA,CAE1F;;GAQG,IAAY;CACvB,SAAS;CACT,OAAO;CACP,KAAK;CACN,EAEY,KAMP,EAAE,aAAU,WAAQ,SAAM,YAAS,GAAG,mBAAgB;CAC1D,IAAM,IAAQ,KAAK,IAAI,GAAG,IAAW,IAAS,EAAK,EAC7C,KAAO,MAAc,GAAI,IAAI,IAAS,IAAI;AAChD,QACE,kBAAC,OAAD;EACE,WAAW,EAAG,yDAAyD,EAAU;EACjF,OAAO,EAAE,WAAQ;YAFnB;GAIE,kBAAC,OAAD,EAAK,OAAO;IAAE,OAAO,EAAI,EAAS;IAAE,iBAAiB,EAAU;IAAS,EAAI,CAAA;GAC5E,kBAAC,OAAD,EAAK,OAAO;IAAE,OAAO,EAAI,EAAO;IAAE,iBAAiB,EAAU;IAAO,EAAI,CAAA;GACxE,kBAAC,OAAD,EAAK,OAAO;IAAE,OAAO,EAAI,EAAK;IAAE,iBAAiB,EAAU;IAAK,EAAI,CAAA;GAChE;;GAIG,KAA2C,EAAE,mBAAgB;CACxE,IAAM,IAAI,GAAO;AACjB,QACE,kBAAC,OAAD;EAAK,WAAW,EAAG,gEAAgE,EAAU;YACzF;GAAC;GAAW;GAAS;GAAM,CAAW,KAAK,MAC3C,kBAAC,QAAD;GAAc,WAAU;aAAxB,CACE,kBAAC,QAAD;IAAM,WAAU;IAAsB,OAAO,EAAE,iBAAiB,EAAU,IAAI;IAAI,CAAA,EAClF,kBAAC,QAAD;IAAM,WAAU;cACb,EACC,uBAAuB,KACvB,MAAM,YAAY,YAAY,MAAM,UAAU,UAAU,MACzD;IACI,CAAA,CACF;KARI,EAQJ,CACP;EACE,CAAA;;AAcV,SAAS,EACP,GACA,GACc;AACd,QAAO,IAAI,MAAM,GAAQ,EACvB,IAAI,GAAQ,GAAc;AACxB,SAAQ,EAA6B,MAAS,EAAO;IAExD,CAAC;;AAWJ,IAAa,IAAoB,EARiE;CAChG,UAAU;EAAE,MAAM;EAAU,MAAM;EAA+B;CACjE,QAAQ;EAAE,MAAM;EAAY,MAAM;EAAoC;CACtE,MAAM;EAAE,MAAM;EAAK,MAAM;EAAkC;CAC3D,UAAU;EAAE,MAAM;EAAmB,MAAM;EAAkC;CAC7E,MAAM;EAAE,MAAM;EAAS,MAAM;EAAkC;CAC/D,UAAU;EAAE,MAAM;EAAM,MAAM;EAAoC;CACnE,EAC2E,WAAW,EAW1E,IAAc,EAT0C;CACnE,OAAO,EAAE,MAAM,+BAA+B;CAC9C,MAAM,EAAE,MAAM,kCAAkC;CAChD,MAAM,EAAE,MAAM,oCAAoC;CAClD,WAAW,EAAE,MAAM,kCAAkC;CACrD,MAAM,EAAE,MAAM,+BAA+B;CAC7C,MAAM,EAAE,MAAM,oCAAoC;CAClD,WAAW,EAAE,MAAM,+BAA+B;CACnD,EAC+D,YAAY,EAU/D,IAAiB,EAR4D;CACxF,aAAa;EAAE,MAAM;EAAc,MAAM;EAAkC;CAC3E,aAAa;EAAE,MAAM;EAAU,MAAM;EAA+B;CACpE,UAAU;EAAE,MAAM;EAAQ,MAAM;EAAkC;CAClE,WAAW;EAAE,MAAM;EAAU,MAAM;EAAoC;CACvE,UAAU;EAAE,MAAM;EAAmB,MAAM;EAAkC;CAC7E,iBAAiB;EAAE,MAAM;EAAU,MAAM;EAA+B;CACzE,EACqE,kBAAkB,EAe3E,IAAc,EAVvB;CACF,QAAQ;EAAE,MAAM;EAAQ,MAAM;EAA+B,MAAM;EAAM;CACzE,UAAU;EAAE,MAAM;EAAS,MAAM;EAAoC,MAAM;EAAK;CAChF,oBAAoB;EAAE,MAAM;EAAO,MAAM;EAAkC,MAAM;EAAO;CACxF,OAAO;EAAE,MAAM;EAAO,MAAM;EAAkC,MAAM;EAAM;CAC1E,OAAO;EAAE,MAAM;EAAO,MAAM;EAAkC,MAAM;EAAM;CAC1E,MAAM;EAAE,MAAM;EAAO,MAAM;EAAkC,MAAM;EAAM;CACzE,KAAK;EAAE,MAAM;EAAO,MAAM;EAAkC,MAAM;EAAM;CACxE,OAAO;EAAE,MAAM;EAAO,MAAM;EAAkC,MAAM;EAAM;CAC3E,EAC+D,SAAS,EAqC5D,IAAgB,EAhCzB;CACF,OAAO;EACL,MAAM;EACN,MAAM;EACN,UAAU;EACV,eAAe;EAChB;CACD,WAAW;EACT,MAAM;EACN,MAAM;EACN,UAAU;EACV,eAAe;EAChB;CACD,UAAU;EACR,MAAM;EACN,MAAM;EACN,UAAU;EACV,eAAe;EAChB;CACD,QAAQ;EACN,MAAM;EACN,MAAM;EACN,UAAU;EACV,eAAe;EAChB;CACD,MAAM;EACJ,MAAM;EACN,MAAM;EACN,UAAU;EACV,eAAe;EAChB;CACF,EACmE,YAAY,EAOnE,KAAwE,EACnF,SACA,UAAO,kCACP,mBAEA,kBAAC,QAAD;CACE,WAAW,EAAG,+DAA+D,EAAU;CACvF,OAAO;EAAE,iBAAiB,sBAAsB,EAAK;EAAqB,OAAO;EAAM;WAEtF;CACI,CAAA,EAII,KAAkF,EAC7F,UACA,UAAO,IACP,mBAAgB,WACZ;AACJ,KAAI,CAAC,OAAO,SAAS,EAAM,IAAI,MAAU,EACvC,QAAO,kBAAC,QAAD;EAAM,WAAU;YAAhB,CAA6C,MAAG,EAAY;;CAErE,IAAM,IAAK,IAAQ,GACb,IAAO,MAAkB,OAAO,IAAK,CAAC,GACtC,IAAO,IAAK,IAAa;AAC/B,QACE,kBAAC,QAAD;EACE,WAAW,EACT,mEACA,IAAO,6BAA6B,yBACrC;YAJH;GAME,kBAAC,GAAD,EAAM,WAAU,eAAgB,CAAA;GAC/B,IAAK,MAAM;GACX,EAAM,QAAQ,EAAE;GAChB;GACI;;;AAKX,SAAgB,EAAoB,GAIzB;CACT,IAAM,IAAO,EAAK,cAAc,EAAK;AACrC,KAAI,MAAS,EAAG,QAAO,EAAK,gBAAgB,EAAK,cAAc,MAAM;CACrE,IAAM,KAAS,EAAK,eAAe,EAAK,iBAAiB,IAAQ;AACjE,QAAO,KAAK,IAAI,GAAG,KAAK,IAAI,KAAK,EAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"visuals.js","names":["Meter","pct","value","cn","className","color","ProgressRing","r","size","stroke","c","offset","trackColor","children","MACRO_HUE","MacroBar","total","proteinG","carbsG","fatG","seg","g","MacroLegend","t","useTr","k","metaWithFallback","source","target","prop","fallback","WORKOUT_TYPE_META","Dumbbell","HeartPulse","Zap","StretchHorizontal","Flower2","Moon","MUSCLE_META","GOAL_TYPE_META","TrendingDown","Weight","Activity","Sparkles","METRIC_META","Percent","Heart","Ruler","RECOVERY_META","BedDouble","Gauge","Waves","Brain","Smile","IconChip","tint","icon","TrendPill","delta","unit","up","good","goodDirection","Icon","TrendingUp","computeGoalProgress","span","goal","done"],"sources":["../../../../src/mybodyshield/pages/_shared/visuals.tsx"],"sourcesContent":["/**\n * Shared fitness-domain visual helpers.\n * @module mybodyshield/pages/_shared\n *\n * Token-driven (no raw colors) SVG/CSS visual primitives + domain icon/tint\n * maps reused across the MyBodyShield pages. Everything reads fe-libs semantic\n * tokens so light/dark themes and custom themes work automatically.\n */\n\nimport type { FC, ReactNode } from 'react';\nimport {\n Dumbbell,\n HeartPulse,\n Timer,\n Activity,\n StretchHorizontal,\n Flower2,\n Moon,\n Weight,\n Ruler,\n Percent,\n Heart,\n TrendingDown,\n TrendingUp,\n Zap,\n Waves,\n Target,\n Sparkles,\n Brain,\n BedDouble,\n Gauge,\n Smile,\n} from 'lucide-react';\nimport { cn } from '../../utils/cn';\nimport { useTr } from '../../hooks';\nimport type {\n MybBodyMetricType,\n MybGoalType,\n MybMuscleGroup,\n MybRecoveryMetric,\n MybWorkoutType,\n} from '../../types';\n\n// ============================================================================\n// Meter — a horizontal progress bar with a token-driven fill\n// ============================================================================\n\nexport const Meter: FC<{\n /** 0–100 percentage. */\n value: number;\n /** CSS color for the fill (default: brand emerald). */\n color?: string;\n height?: number;\n className?: string;\n}> = ({ value, color = 'var(--color-action-primary-bg)', height = 8, className }) => {\n const pct = Math.max(0, Math.min(100, value));\n return (\n <div\n className={cn('w-full overflow-hidden rounded-full bg-bg-sunken', className)}\n style={{ height }}\n role=\"progressbar\"\n aria-valuenow={Math.round(pct)}\n aria-valuemin={0}\n aria-valuemax={100}\n >\n <div\n className=\"h-full rounded-full transition-[width] duration-500 ease-out\"\n style={{ width: `${pct}%`, backgroundColor: color }}\n />\n </div>\n );\n};\n\n// ============================================================================\n// ProgressRing — a circular progress indicator (goal progress, readiness)\n// ============================================================================\n\nexport const ProgressRing: FC<{\n value: number;\n size?: number;\n stroke?: number;\n color?: string;\n trackColor?: string;\n children?: ReactNode;\n className?: string;\n}> = ({\n value,\n size = 96,\n stroke = 9,\n color = 'var(--color-action-primary-bg)',\n trackColor = 'var(--color-bg-sunken)',\n children,\n className,\n}) => {\n const pct = Math.max(0, Math.min(100, value));\n const r = (size - stroke) / 2;\n const c = 2 * Math.PI * r;\n const offset = c - (pct / 100) * c;\n return (\n <div\n className={cn('relative inline-flex items-center justify-center', className)}\n style={{ width: size, height: size }}\n >\n <svg width={size} height={size} className=\"-rotate-90\">\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={trackColor}\n strokeWidth={stroke}\n />\n <circle\n cx={size / 2}\n cy={size / 2}\n r={r}\n fill=\"none\"\n stroke={color}\n strokeWidth={stroke}\n strokeLinecap=\"round\"\n strokeDasharray={c}\n strokeDashoffset={offset}\n className=\"transition-[stroke-dashoffset] duration-700 ease-out\"\n />\n </svg>\n {children != null && (\n <div className=\"absolute inset-0 flex flex-col items-center justify-center\">{children}</div>\n )}\n </div>\n );\n};\n\n// ============================================================================\n// MacroBar — a stacked protein/carbs/fat bar (grams → proportion)\n// ============================================================================\n\nexport const MACRO_HUE = {\n protein: 'var(--color-action-primary-bg)',\n carbs: 'var(--color-status-warning-text)',\n fat: 'var(--color-accent-primary)',\n} as const;\n\nexport const MacroBar: FC<{\n proteinG: number;\n carbsG: number;\n fatG: number;\n height?: number;\n className?: string;\n}> = ({ proteinG, carbsG, fatG, height = 8, className }) => {\n const total = Math.max(1, proteinG + carbsG + fatG);\n const seg = (g: number) => `${(g / total) * 100}%`;\n return (\n <div\n className={cn('flex w-full overflow-hidden rounded-full bg-bg-sunken', className)}\n style={{ height }}\n >\n <div style={{ width: seg(proteinG), backgroundColor: MACRO_HUE.protein }} />\n <div style={{ width: seg(carbsG), backgroundColor: MACRO_HUE.carbs }} />\n <div style={{ width: seg(fatG), backgroundColor: MACRO_HUE.fat }} />\n </div>\n );\n};\n\nexport const MacroLegend: FC<{ className?: string }> = ({ className }) => {\n const t = useTr();\n return (\n <div className={cn('flex flex-wrap items-center gap-3 text-xs text-text-tertiary', className)}>\n {(['protein', 'carbs', 'fat'] as const).map((k) => (\n <span key={k} className=\"inline-flex items-center gap-1.5\">\n <span className=\"size-2 rounded-full\" style={{ backgroundColor: MACRO_HUE[k] }} />\n <span className=\"capitalize\">\n {t(\n `mybodyshield.common.${k}`,\n k === 'protein' ? 'Protein' : k === 'carbs' ? 'Carbs' : 'Fat'\n )}\n </span>\n </span>\n ))}\n </div>\n );\n};\n\n// ============================================================================\n// Domain icon + tint maps (semantic tokens only)\n// ============================================================================\n\n/**\n * Wrap an enum→meta map so an unknown server enum value (svc stores enums as\n * TEXT, so a value outside the client union is plausible) resolves to a safe\n * fallback entry instead of `undefined` — accessing `.icon`/`.tint`/`.label` on\n * `undefined` would otherwise crash the whole page.\n */\nfunction metaWithFallback<K extends string, V>(\n source: Record<K, V>,\n fallback: NoInfer<K>\n): Record<K, V> {\n return new Proxy(source, {\n get(target, prop: string) {\n return (target as Record<string, V>)[prop] ?? target[fallback];\n },\n }) as Record<K, V>;\n}\n\nconst WORKOUT_TYPE_META_SOURCE: Record<MybWorkoutType, { icon: typeof Dumbbell; tint: string }> = {\n STRENGTH: { icon: Dumbbell, tint: 'var(--color-accent-primary)' },\n CARDIO: { icon: HeartPulse, tint: 'var(--color-status-warning-text)' },\n HIIT: { icon: Zap, tint: 'var(--color-status-error-text)' },\n MOBILITY: { icon: StretchHorizontal, tint: 'var(--color-action-primary-bg)' },\n YOGA: { icon: Flower2, tint: 'var(--color-action-primary-bg)' },\n RECOVERY: { icon: Moon, tint: 'var(--color-status-success-text)' },\n};\nexport const WORKOUT_TYPE_META = metaWithFallback(WORKOUT_TYPE_META_SOURCE, 'STRENGTH');\n\nconst MUSCLE_META_SOURCE: Record<MybMuscleGroup, { tint: string }> = {\n CHEST: { tint: 'var(--color-accent-primary)' },\n BACK: { tint: 'var(--color-action-primary-bg)' },\n LEGS: { tint: 'var(--color-status-warning-text)' },\n SHOULDERS: { tint: 'var(--color-status-error-text)' },\n ARMS: { tint: 'var(--color-accent-primary)' },\n CORE: { tint: 'var(--color-status-success-text)' },\n FULL_BODY: { tint: 'var(--color-text-secondary)' },\n};\nexport const MUSCLE_META = metaWithFallback(MUSCLE_META_SOURCE, 'FULL_BODY');\n\nconst GOAL_TYPE_META_SOURCE: Record<MybGoalType, { icon: typeof Target; tint: string }> = {\n WEIGHT_LOSS: { icon: TrendingDown, tint: 'var(--color-action-primary-bg)' },\n MUSCLE_GAIN: { icon: Dumbbell, tint: 'var(--color-accent-primary)' },\n STRENGTH: { icon: Weight, tint: 'var(--color-status-error-text)' },\n ENDURANCE: { icon: Activity, tint: 'var(--color-status-warning-text)' },\n MOBILITY: { icon: StretchHorizontal, tint: 'var(--color-action-primary-bg)' },\n GENERAL_FITNESS: { icon: Sparkles, tint: 'var(--color-text-secondary)' },\n};\nexport const GOAL_TYPE_META = metaWithFallback(GOAL_TYPE_META_SOURCE, 'GENERAL_FITNESS');\n\nconst METRIC_META_SOURCE: Record<\n MybBodyMetricType,\n { icon: typeof Weight; tint: string; unit: string }\n> = {\n WEIGHT: { icon: Weight, tint: 'var(--color-accent-primary)', unit: 'kg' },\n BODY_FAT: { icon: Percent, tint: 'var(--color-status-warning-text)', unit: '%' },\n RESTING_HEART_RATE: { icon: Heart, tint: 'var(--color-status-error-text)', unit: 'bpm' },\n WAIST: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n CHEST: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n HIPS: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n ARM: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n THIGH: { icon: Ruler, tint: 'var(--color-action-primary-bg)', unit: 'cm' },\n};\nexport const METRIC_META = metaWithFallback(METRIC_META_SOURCE, 'WEIGHT');\n\nconst RECOVERY_META_SOURCE: Record<\n MybRecoveryMetric,\n { icon: typeof Gauge; tint: string; labelKey: string; labelFallback: string }\n> = {\n SLEEP: {\n icon: BedDouble,\n tint: 'var(--color-accent-primary)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.sleep',\n labelFallback: 'Sleep',\n },\n READINESS: {\n icon: Gauge,\n tint: 'var(--color-status-success-text)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.readiness',\n labelFallback: 'Readiness',\n },\n SORENESS: {\n icon: Waves,\n tint: 'var(--color-status-warning-text)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.soreness',\n labelFallback: 'Soreness',\n },\n STRESS: {\n icon: Brain,\n tint: 'var(--color-status-error-text)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.stress',\n labelFallback: 'Stress',\n },\n MOOD: {\n icon: Smile,\n tint: 'var(--color-action-primary-bg)',\n labelKey: 'mybodyshield.pages.recovery.metricNames.mood',\n labelFallback: 'Mood',\n },\n};\nexport const RECOVERY_META = metaWithFallback(RECOVERY_META_SOURCE, 'READINESS');\n\n// ============================================================================\n// Small helpers\n// ============================================================================\n\n/** Circular icon chip with a soft tinted background. */\nexport const IconChip: FC<{ icon: ReactNode; tint?: string; className?: string }> = ({\n icon,\n tint = 'var(--color-action-primary-bg)',\n className,\n}) => (\n <span\n className={cn('flex size-9 shrink-0 items-center justify-center rounded-lg', className)}\n style={{ backgroundColor: `color-mix(in srgb, ${tint} 16%, transparent)`, color: tint }}\n >\n {icon}\n </span>\n);\n\n/** A small trend delta pill (up/down/flat) with semantic color. */\nexport const TrendPill: FC<{ delta: number; unit?: string; goodDirection?: 'up' | 'down' }> = ({\n delta,\n unit = '',\n goodDirection = 'up',\n}) => {\n if (!Number.isFinite(delta) || delta === 0) {\n return <span className=\"text-xs text-text-tertiary\">±0{unit}</span>;\n }\n const up = delta > 0;\n const good = goodDirection === 'up' ? up : !up;\n const Icon = up ? TrendingUp : TrendingDown;\n return (\n <span\n className={cn(\n 'inline-flex items-center gap-1 text-xs font-medium tabular-nums',\n good ? 'text-status-success-text' : 'text-status-error-text'\n )}\n >\n <Icon className=\"h-3.5 w-3.5\" />\n {up ? '+' : ''}\n {delta.toFixed(1)}\n {unit}\n </span>\n );\n};\n\n/** Compute a goal's completion percentage from baseline → target → current. */\nexport function computeGoalProgress(goal: {\n baselineValue: number;\n targetValue: number;\n currentValue: number;\n}): number {\n const span = goal.targetValue - goal.baselineValue;\n if (span === 0) return goal.currentValue >= goal.targetValue ? 100 : 0;\n const done = ((goal.currentValue - goal.baselineValue) / span) * 100;\n return Math.max(0, Math.min(100, done));\n}\n\nexport { Timer };\n"],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* (Gemini / OpenAI / Anthropic), the model name, a daily operation allowance,
|
|
7
7
|
* and an optional provider API key. Shows the redacted audit log of AI ops.
|
|
8
8
|
*/
|
|
9
|
-
export declare function AiControlsPage(): import(
|
|
9
|
+
export declare function AiControlsPage(): import('react').JSX.Element;
|
|
10
10
|
//# sourceMappingURL=AiControlsPage.d.ts.map
|