@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":"NutritionPage.js","names":[],"sources":["../../../../src/mybodyshield/pages/nutrition/NutritionPage.tsx"],"sourcesContent":["/**\n * Nutrition — plans, meal logging and daily macro targets.\n * @module mybodyshield/pages/nutrition\n *\n * Three tabs, all wired to the real `myb*` nutrition contract (no mock data):\n * - Today: daily macro roll-up (calories ring + macro bar + per-macro meters)\n * and the meals logged today, with inline \"Log meal\".\n * - Plan: the member's active nutrition plan (targets, dates, notes) with\n * create / edit-targets dialogs.\n * - Meals: the full meal log, filterable by meal type, offset-paginated.\n */\n\nimport { useMemo, useState, type ReactNode } from 'react';\nimport { motion, useReducedMotion, type Variants } from 'framer-motion';\nimport {\n Flame,\n ClipboardList,\n UtensilsCrossed,\n Salad,\n Plus,\n Trash2,\n Pencil,\n Beef,\n Wheat,\n Droplet,\n Star,\n Calendar,\n CheckCircle2,\n} from 'lucide-react';\nimport {\n Button,\n Input,\n Label,\n Textarea,\n Switch,\n Select,\n SelectTrigger,\n SelectContent,\n SelectItem,\n SelectValue,\n GlassCard,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n} from '@burdenoff/fe-libs/ui';\nimport {\n PageLayout,\n Tabs,\n type TabItem,\n StatusBadge,\n DataTable,\n type Column,\n FilterTabs,\n type FilterOption,\n Pagination,\n EmptyState,\n LoadingView,\n ErrorView,\n Section,\n} from '../../components';\nimport {\n useMybDailyMacros,\n useMybActiveNutritionPlan,\n useMybMeals,\n useMybCreateNutritionPlan,\n useMybUpdateNutritionPlan,\n useMybActivateNutritionPlan,\n useMybLogMeal,\n useMybDeleteMeal,\n useOffsetPager,\n useMybSearchFoods,\n useMybFoodByBarcode,\n useTr,\n} from '../../hooks';\nimport type { MybMealType, MybGoalType, MybMealLog, MybNutritionPlan, MybFood } from '../../types';\nimport {\n formatKcal,\n formatGrams,\n formatNumber,\n formatDate,\n formatRelativeTime,\n formatEnumLabel,\n} from '../../utils/formatters';\nimport { Meter, ProgressRing, MacroBar, IconChip, MACRO_HUE } from '../_shared/visuals';\n\n// ---------------------------------------------------------------------------\n// Constants & helpers\n// ---------------------------------------------------------------------------\n\ntype NutritionTab = 'today' | 'plan' | 'meals';\ntype MealFilterValue = 'ALL' | MybMealType;\n\nconst PAGE_SIZE = 25;\n\nconst MEAL_TYPES: MybMealType[] = ['BREAKFAST', 'LUNCH', 'DINNER', 'SNACK'];\nconst GOAL_TYPES: MybGoalType[] = [\n 'WEIGHT_LOSS',\n 'MUSCLE_GAIN',\n 'STRENGTH',\n 'ENDURANCE',\n 'MOBILITY',\n 'GENERAL_FITNESS',\n];\n\nfunction useTabItems(t: ReturnType<typeof useTr>): TabItem<NutritionTab>[] {\n return [\n {\n value: 'today',\n label: t('mybodyshield.pages.nutrition.today', 'Today'),\n icon: <Flame className=\"h-4 w-4\" />,\n },\n {\n value: 'plan',\n label: t('mybodyshield.pages.nutrition.plan', 'Plan'),\n icon: <ClipboardList className=\"h-4 w-4\" />,\n },\n {\n value: 'meals',\n label: t('mybodyshield.pages.nutrition.meals', 'Meals'),\n icon: <UtensilsCrossed className=\"h-4 w-4\" />,\n },\n ];\n}\n\nfunction useMealFilterOptions(t: ReturnType<typeof useTr>): FilterOption<MealFilterValue>[] {\n return [\n { value: 'ALL', label: t('mybodyshield.common.all', 'All') },\n ...MEAL_TYPES.map((type) => ({ value: type, label: formatEnumLabel(type) })),\n ];\n}\n\n/** Parse a numeric text field: empty → undefined, else the finite number. */\nconst numOrUndef = (raw: string): number | undefined => {\n const t = raw.trim();\n if (!t) return undefined;\n const n = Number(t);\n return Number.isFinite(n) ? n : undefined;\n};\n\n/** Render a positive number back into a text-input value ('' for 0/unset). */\nconst numToStr = (n: number | null | undefined): string => (n ? String(n) : '');\n\n/** ISO DateTime → yyyy-mm-dd for a native date input ('' when absent/invalid). */\nconst toDateInput = (iso: string | null | undefined): string => {\n if (!iso) return '';\n const d = new Date(iso);\n return Number.isNaN(d.getTime()) ? '' : d.toISOString().slice(0, 10);\n};\n\n/** yyyy-mm-dd date-input value → ISO string (undefined when empty). */\nconst fromDateInput = (v: string): string | undefined =>\n v ? new Date(v).toISOString() : undefined;\n\ninterface MealForm {\n name: string;\n mealType: MybMealType;\n calories: string;\n proteinG: string;\n carbsG: string;\n fatG: string;\n servings: string;\n isFavorite: boolean;\n /** Set when the meal was populated from an Open Food Facts search/barcode hit (BOFF-4173). */\n barcode: string | null;\n}\n\nconst EMPTY_MEAL: MealForm = {\n name: '',\n mealType: 'BREAKFAST',\n calories: '',\n proteinG: '',\n carbsG: '',\n fatG: '',\n servings: '',\n isFavorite: false,\n barcode: null,\n};\n\ninterface PlanForm {\n name: string;\n goalType: MybGoalType;\n calorieTarget: string;\n proteinTarget: string;\n carbsTarget: string;\n fatTarget: string;\n startDate: string;\n endDate: string;\n notes: string;\n}\n\nconst EMPTY_PLAN: PlanForm = {\n name: '',\n goalType: 'GENERAL_FITNESS',\n calorieTarget: '',\n proteinTarget: '',\n carbsTarget: '',\n fatTarget: '',\n startDate: '',\n endDate: '',\n notes: '',\n};\n\n// ---------------------------------------------------------------------------\n// Page\n// ---------------------------------------------------------------------------\n\nexport function NutritionPage() {\n const t = useTr();\n const [tab, setTab] = useState<NutritionTab>('today');\n const reduceMotion = useReducedMotion();\n const TAB_ITEMS = useTabItems(t);\n const MEAL_FILTER_OPTIONS = useMealFilterOptions(t);\n\n // Data ---------------------------------------------------------------------\n const macros = useMybDailyMacros();\n const activePlan = useMybActiveNutritionPlan();\n const todayMealsQuery = useMybMeals({});\n\n const [mealFilter, setMealFilter] = useState<MealFilterValue>('ALL');\n const pager = useOffsetPager(PAGE_SIZE);\n const mealsQuery = useMybMeals({\n mealType: mealFilter === 'ALL' ? undefined : mealFilter,\n pagination: { limit: PAGE_SIZE, offset: pager.offset },\n });\n\n // Mutations ----------------------------------------------------------------\n const logMeal = useMybLogMeal();\n const deleteMeal = useMybDeleteMeal();\n const createPlan = useMybCreateNutritionPlan();\n const updatePlan = useMybUpdateNutritionPlan();\n const activatePlan = useMybActivateNutritionPlan();\n\n // Local UI state -----------------------------------------------------------\n const [actionError, setActionError] = useState<string | null>(null);\n const [pendingDeleteId, setPendingDeleteId] = useState<string | null>(null);\n\n // A just-created plan is NOT auto-activated by the backend, so it won't show\n // up via `useMybActiveNutritionPlan`. Hold it here so we can display it and\n // offer to activate it. Cleared once it becomes the active plan.\n const [shownPlanOverride, setShownPlanOverride] = useState<MybNutritionPlan | null>(null);\n\n const [mealOpen, setMealOpen] = useState(false);\n const [mealForm, setMealForm] = useState<MealForm>(EMPTY_MEAL);\n const [mealErr, setMealErr] = useState<string | null>(null);\n\n // BOFF-4173: fast food-logging via the Open Food Facts search/barcode\n // lookup — fills the manual fields below rather than replacing them, so a\n // member can always fine-tune a portion after picking a match.\n const [foodQuery, setFoodQuery] = useState('');\n const foodSearch = useMybSearchFoods(foodQuery);\n const [barcodeInput, setBarcodeInput] = useState('');\n const [barcodeErr, setBarcodeErr] = useState<string | null>(null);\n const barcodeLookup = useMybFoodByBarcode();\n\n const applyFood = (food: MybFood) => {\n setMealForm({\n ...mealForm,\n name: food.name,\n calories: numToStr(food.calories),\n proteinG: numToStr(food.proteinG),\n carbsG: numToStr(food.carbsG),\n fatG: numToStr(food.fatG),\n servings: mealForm.servings || '1',\n barcode: food.barcode ?? null,\n });\n setFoodQuery('');\n };\n\n const submitBarcodeLookup = async () => {\n const code = barcodeInput.trim();\n if (!code) return;\n setBarcodeErr(null);\n try {\n const food = await barcodeLookup.mutateAsync(code);\n if (!food) {\n setBarcodeErr(\n t(\n 'mybodyshield.pages.nutrition.noProductForBarcode',\n 'No product found for barcode {{barcode}}.',\n { barcode: code }\n )\n );\n return;\n }\n applyFood(food);\n setBarcodeInput('');\n } catch (e) {\n setBarcodeErr(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.barcodeLookupFailed', 'Barcode lookup failed.')\n );\n }\n };\n\n const [planOpen, setPlanOpen] = useState(false);\n const [planMode, setPlanMode] = useState<'create' | 'edit'>('create');\n const [planForm, setPlanForm] = useState<PlanForm>(EMPTY_PLAN);\n const [planErr, setPlanErr] = useState<string | null>(null);\n\n const activePlanData = activePlan.data ?? null;\n // The plan surfaced in the Plan tab: a freshly created (not-yet-active) plan\n // takes precedence over the active one so the member can act on it.\n const plan = shownPlanOverride ?? activePlanData;\n\n // Derived: meals logged today (client-side filter on loggedAt) --------------\n const todayMeals = useMemo(() => {\n const rows = todayMealsQuery.data?.items ?? [];\n const todayKey = new Date().toDateString();\n return rows\n .filter((m) => {\n const d = new Date(m.loggedAt);\n return !Number.isNaN(d.getTime()) && d.toDateString() === todayKey;\n })\n .sort((a, b) => new Date(b.loggedAt).getTime() - new Date(a.loggedAt).getTime());\n }, [todayMealsQuery.data]);\n\n const mealRows = mealsQuery.data?.items ?? [];\n\n // Handlers -----------------------------------------------------------------\n const onMealFilterChange = (v: MealFilterValue) => {\n setMealFilter(v);\n pager.reset();\n };\n\n const openLogMeal = () => {\n setMealForm(EMPTY_MEAL);\n setMealErr(null);\n setFoodQuery('');\n setBarcodeInput('');\n setBarcodeErr(null);\n setMealOpen(true);\n };\n\n const openCreatePlan = () => {\n setPlanMode('create');\n setPlanForm(EMPTY_PLAN);\n setPlanErr(null);\n setPlanOpen(true);\n };\n\n const openEditPlan = () => {\n if (!plan) return;\n setPlanMode('edit');\n setPlanForm({\n name: plan.name,\n goalType: plan.goalType,\n calorieTarget: numToStr(plan.calorieTarget),\n proteinTarget: numToStr(plan.proteinTarget),\n carbsTarget: numToStr(plan.carbsTarget),\n fatTarget: numToStr(plan.fatTarget),\n startDate: toDateInput(plan.startDate),\n endDate: toDateInput(plan.endDate),\n notes: plan.notes ?? '',\n });\n setPlanErr(null);\n setPlanOpen(true);\n };\n\n const submitMeal = async () => {\n if (!mealForm.name.trim()) {\n setMealErr(t('mybodyshield.pages.nutrition.mealNameRequired', 'Meal name is required.'));\n return;\n }\n setMealErr(null);\n try {\n await logMeal.mutateAsync({\n name: mealForm.name.trim(),\n mealType: mealForm.mealType,\n calories: numOrUndef(mealForm.calories),\n proteinG: numOrUndef(mealForm.proteinG),\n carbsG: numOrUndef(mealForm.carbsG),\n fatG: numOrUndef(mealForm.fatG),\n servings: numOrUndef(mealForm.servings),\n isFavorite: mealForm.isFavorite,\n planId: plan?.id ?? undefined,\n loggedAt: new Date().toISOString(),\n barcode: mealForm.barcode ?? undefined,\n });\n setMealOpen(false);\n setMealForm(EMPTY_MEAL);\n } catch (e) {\n setMealErr(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.failedToLogMeal', 'Failed to log meal.')\n );\n }\n };\n\n const submitPlan = async () => {\n if (!planForm.name.trim()) {\n setPlanErr(t('mybodyshield.pages.nutrition.planNameRequired', 'Plan name is required.'));\n return;\n }\n setPlanErr(null);\n const shared = {\n goalType: planForm.goalType,\n calorieTarget: numOrUndef(planForm.calorieTarget),\n proteinTarget: numOrUndef(planForm.proteinTarget),\n carbsTarget: numOrUndef(planForm.carbsTarget),\n fatTarget: numOrUndef(planForm.fatTarget),\n startDate: fromDateInput(planForm.startDate),\n endDate: fromDateInput(planForm.endDate),\n notes: planForm.notes.trim() || undefined,\n };\n try {\n if (planMode === 'edit' && plan) {\n const updated = await updatePlan.mutateAsync({\n id: plan.id,\n input: { name: planForm.name.trim(), ...shared },\n });\n // Keep a held (not-yet-active) plan in sync with its edits.\n setShownPlanOverride((prev) => (prev && prev.id === updated.id ? updated : prev));\n } else {\n // Create does NOT auto-activate — surface the new plan and offer to\n // activate it from the Plan tab.\n const created = await createPlan.mutateAsync({ name: planForm.name.trim(), ...shared });\n setShownPlanOverride(created);\n setTab('plan');\n }\n setPlanOpen(false);\n } catch (e) {\n setPlanErr(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.failedToSavePlan', 'Failed to save plan.')\n );\n }\n };\n\n const handleActivatePlan = async (id: string) => {\n setActionError(null);\n try {\n await activatePlan.mutateAsync(id);\n // Once active, drop the override so we track the refetched active plan.\n setShownPlanOverride(null);\n } catch (e) {\n setActionError(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.failedToActivatePlan', 'Failed to activate plan.')\n );\n }\n };\n\n const handleDeleteMeal = async (id: string) => {\n if (\n !window.confirm(\n t(\n 'mybodyshield.pages.nutrition.deleteMealConfirm',\n 'Delete this meal log? This cannot be undone.'\n )\n )\n )\n return;\n setPendingDeleteId(id);\n setActionError(null);\n try {\n await deleteMeal.mutateAsync(id);\n } catch (e) {\n setActionError(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.failedToDeleteMeal', 'Failed to delete meal.')\n );\n } finally {\n setPendingDeleteId(null);\n }\n };\n\n const planPending = planMode === 'edit' ? updatePlan.isPending : createPlan.isPending;\n\n // Motion — subtle staggered entrance / tab-switch. Respects reduced motion:\n // when set, transforms collapse to a single-shot fade and stagger is disabled.\n const listVariants: Variants = {\n hidden: {},\n show: {\n transition: {\n staggerChildren: reduceMotion ? 0 : 0.06,\n delayChildren: reduceMotion ? 0 : 0.03,\n },\n },\n };\n const itemVariants: Variants = {\n hidden: reduceMotion ? { opacity: 0 } : { opacity: 0, y: 14 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: reduceMotion ? 0.2 : 0.45, ease: 'easeOut' },\n },\n };\n\n // Meals-tab table columns --------------------------------------------------\n const mealColumns: Column<MybMealLog>[] = [\n {\n key: 'favorite',\n header: <Star className=\"h-3.5 w-3.5 text-action-primary-bg\" aria-hidden=\"true\" />,\n align: 'center',\n sortValue: (row) => (row.isFavorite ? 1 : 0),\n render: (row) => (\n <span\n className=\"inline-flex\"\n title={\n row.isFavorite\n ? t('mybodyshield.pages.nutrition.favoriteMeal', 'Favorite meal')\n : t('mybodyshield.pages.nutrition.notFavorite', 'Not a favorite')\n }\n >\n <Star\n className={`h-4 w-4 transition-colors ${\n row.isFavorite ? 'fill-current text-action-primary-bg' : 'text-text-tertiary'\n }`}\n />\n <span className=\"sr-only\">\n {row.isFavorite\n ? t('mybodyshield.pages.nutrition.favorite', 'Favorite')\n : t('mybodyshield.pages.nutrition.notFavoriteShort', 'Not favorite')}\n </span>\n </span>\n ),\n },\n {\n key: 'name',\n header: t('mybodyshield.pages.nutrition.meal', 'Meal'),\n render: (row) => <span className=\"font-medium text-text-primary\">{row.name}</span>,\n },\n {\n key: 'mealType',\n header: t('mybodyshield.pages.nutrition.mealType', 'Type'),\n render: (row) => <StatusBadge status={row.mealType} />,\n },\n {\n key: 'calories',\n header: t('mybodyshield.pages.nutrition.calories', 'Calories'),\n align: 'right',\n sortValue: (row) => row.calories,\n render: (row) => (\n <span className=\"font-semibold tabular-nums text-text-primary\">\n {formatKcal(row.calories)}\n </span>\n ),\n },\n {\n key: 'proteinG',\n header: t('mybodyshield.pages.nutrition.protein', 'Protein'),\n align: 'right',\n hideOnMobile: true,\n sortValue: (row) => row.proteinG,\n render: (row) => (\n <span className=\"tabular-nums text-text-secondary\">{formatGrams(row.proteinG)}</span>\n ),\n },\n {\n key: 'carbsG',\n header: t('mybodyshield.pages.nutrition.carbs', 'Carbs'),\n align: 'right',\n hideOnMobile: true,\n sortValue: (row) => row.carbsG,\n render: (row) => (\n <span className=\"tabular-nums text-text-secondary\">{formatGrams(row.carbsG)}</span>\n ),\n },\n {\n key: 'fatG',\n header: t('mybodyshield.pages.nutrition.fat', 'Fat'),\n align: 'right',\n hideOnMobile: true,\n sortValue: (row) => row.fatG,\n render: (row) => (\n <span className=\"tabular-nums text-text-secondary\">{formatGrams(row.fatG)}</span>\n ),\n },\n {\n key: 'servings',\n header: t('mybodyshield.pages.nutrition.servingsLabel', 'Servings'),\n align: 'right',\n sortValue: (row) => row.servings,\n render: (row) => <span className=\"tabular-nums\">{formatNumber(row.servings)}</span>,\n },\n {\n key: 'loggedAt',\n header: t('mybodyshield.pages.nutrition.logged', 'Logged'),\n hideOnMobile: true,\n sortValue: (row) => new Date(row.loggedAt).getTime(),\n render: (row) => (\n <span className=\"text-text-secondary\">{formatRelativeTime(row.loggedAt)}</span>\n ),\n },\n {\n key: 'actions',\n header: '',\n align: 'right',\n render: (row) => (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => handleDeleteMeal(row.id)}\n disabled={pendingDeleteId === row.id}\n aria-label={t('mybodyshield.pages.nutrition.deleteMeal', 'Delete meal')}\n >\n <Trash2 className=\"h-4 w-4 text-status-error-text\" />\n </Button>\n ),\n },\n ];\n\n // Per-tab header actions ---------------------------------------------------\n const actions =\n tab === 'plan' ? (\n <div className=\"flex flex-wrap items-center gap-2\">\n {plan && (\n <Button variant=\"outline\" onClick={openEditPlan}>\n <Pencil className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.editTargets', 'Edit targets')}\n </Button>\n )}\n <Button onClick={openCreatePlan}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.createPlan', 'Create plan')}\n </Button>\n </div>\n ) : (\n <Button onClick={openLogMeal}>\n <Plus className=\"mr-1.5 h-4 w-4\" /> {t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n );\n\n // -------------------------------------------------------------------------\n // Tab renderers\n // -------------------------------------------------------------------------\n\n const renderTodayTab = () => {\n if (macros.isLoading)\n return (\n <LoadingView\n label={t('mybodyshield.pages.nutrition.loadingToday', \"Loading today's nutrition…\")}\n />\n );\n if (macros.isError) {\n return (\n <ErrorView\n message={t(\n 'mybodyshield.pages.nutrition.errorToday',\n \"We couldn't load your daily macros.\"\n )}\n onRetry={() => macros.refetch()}\n />\n );\n }\n const macroData = macros.data;\n if (!macroData)\n return (\n <LoadingView\n label={t('mybodyshield.pages.nutrition.loadingToday', \"Loading today's nutrition…\")}\n />\n );\n\n const hasTarget = macroData.calorieTarget > 0;\n const hasConsumption = macroData.calories > 0 || todayMeals.length > 0;\n if (!hasTarget && !hasConsumption) {\n return (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Salad className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.nutrition.noNutritionData', 'No nutrition tracked yet')}\n description={t(\n 'mybodyshield.pages.nutrition.noNutritionDescription',\n 'Activate a nutrition plan or log your first meal to start tracking daily macros.'\n )}\n action={\n <Button onClick={openLogMeal}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n }\n />\n );\n }\n\n const caloriePct = macroData.calorieTarget\n ? (macroData.calories / macroData.calorieTarget) * 100\n : 0;\n const pctFull = Math.round(Math.max(0, Math.min(100, caloriePct)));\n const macroTiles = [\n {\n label: t('mybodyshield.pages.nutrition.protein', 'Protein'),\n value: macroData.proteinG,\n target: macroData.proteinTarget,\n color: MACRO_HUE.protein,\n },\n {\n label: t('mybodyshield.pages.nutrition.carbs', 'Carbs'),\n value: macroData.carbsG,\n target: macroData.carbsTarget,\n color: MACRO_HUE.carbs,\n },\n {\n label: t('mybodyshield.pages.nutrition.fat', 'Fat'),\n value: macroData.fatG,\n target: macroData.fatTarget,\n color: MACRO_HUE.fat,\n },\n ];\n\n return (\n <motion.div initial=\"hidden\" animate=\"show\" variants={listVariants} className=\"space-y-6\">\n {/* Hero — calorie ring + stacked macro bar + % of target ------------- */}\n <motion.div variants={itemVariants}>\n <GlassCard treatment=\"glass\" glow className=\"p-6 sm:p-7\">\n <div className=\"mb-5\">\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.nutrition.todaysMacros', \"Today's macros\")}\n </h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.nutrition.macrosDescription',\n 'Calories & macros logged against your active plan.'\n )}\n </p>\n </div>\n <div className=\"flex flex-col items-center gap-6 sm:flex-row sm:items-center sm:gap-8\">\n <div className=\"relative flex shrink-0 items-center justify-center\">\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-3 rounded-full blur-2xl\"\n style={{\n background:\n 'radial-gradient(circle, color-mix(in srgb, var(--color-action-primary-bg) 30%, transparent), transparent 68%)',\n }}\n />\n <ProgressRing value={caloriePct} size={168} stroke={14} className=\"relative\">\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 w-full flex-1 flex-col gap-4\">\n <MacroBar\n proteinG={macroData.proteinG}\n carbsG={macroData.carbsG}\n fatG={macroData.fatG}\n height={12}\n />\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-stretch\">\n <div className=\"flex-1 space-y-2.5\">\n {macroTiles.map((tile) => (\n <div key={tile.label} className=\"flex items-center justify-between gap-3\">\n <span className=\"inline-flex items-center gap-2 text-sm text-text-secondary\">\n <span\n className=\"h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: tile.color }}\n />\n {tile.label}\n </span>\n <span className=\"text-sm font-semibold tabular-nums text-text-primary\">\n {formatGrams(tile.value)}\n </span>\n </div>\n ))}\n </div>\n <div\n className=\"flex flex-col justify-center rounded-2xl px-4 py-3 sm:min-w-[9rem]\"\n style={{\n backgroundColor:\n 'color-mix(in srgb, var(--color-action-primary-bg) 12%, transparent)',\n }}\n >\n <span className=\"text-xs font-medium text-text-tertiary\">\n {t('mybodyshield.pages.nutrition.calorieRing', 'Calorie ring')}\n </span>\n <span className=\"text-2xl font-bold tabular-nums text-action-primary-bg\">\n {pctFull}%\n </span>\n <span className=\"text-xs text-text-secondary\">\n {t('mybodyshield.pages.nutrition.ofDailyTarget', 'of daily target')}\n </span>\n </div>\n </div>\n </div>\n </div>\n </GlassCard>\n </motion.div>\n\n {/* Per-macro meter tiles -------------------------------------------- */}\n <motion.div\n variants={listVariants}\n className=\"grid grid-cols-1 gap-3 sm:grid-cols-3 sm:gap-4\"\n >\n {macroTiles.map((tile) => (\n <motion.div key={tile.label} variants={itemVariants}>\n <GlassCard treatment=\"metric\" className=\"p-4\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <span className=\"inline-flex items-center gap-2 text-sm font-medium text-text-primary\">\n <span\n className=\"h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: tile.color }}\n />\n {tile.label}\n </span>\n <span className=\"text-sm tabular-nums text-text-secondary\">\n <span className=\"font-semibold text-text-primary\">\n {formatNumber(tile.value)}\n </span>{' '}\n / {formatNumber(tile.target)} g\n </span>\n </div>\n <Meter\n value={tile.target ? (tile.value / tile.target) * 100 : 0}\n color={tile.color}\n height={8}\n className=\"mt-3\"\n />\n </GlassCard>\n </motion.div>\n ))}\n </motion.div>\n\n {/* Today's meals ---------------------------------------------------- */}\n <motion.div variants={itemVariants}>\n <Section\n title={t('mybodyshield.pages.nutrition.todaysMeals', \"Today's meals\")}\n description={t(\n 'mybodyshield.pages.nutrition.todaysMealsDescription',\n \"Everything you've logged today.\"\n )}\n >\n {todayMealsQuery.isLoading ? (\n <LoadingView\n label={t('mybodyshield.common.loadingWithName', 'Loading {{name}}…', {\n name: t('mybodyshield.pages.nutrition.meals', 'Meals'),\n })}\n />\n ) : todayMealsQuery.isError ? (\n <ErrorView\n message={t(\n 'mybodyshield.pages.nutrition.errorMeals',\n \"We couldn't load today's meals.\"\n )}\n onRetry={() => todayMealsQuery.refetch()}\n />\n ) : todayMeals.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Salad className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.nutrition.noMealsToday', 'No meals logged today')}\n description={t(\n 'mybodyshield.pages.nutrition.noMealsTodayDescription',\n 'Use \"Log meal\" to record what you\\'ve eaten and keep your macros current.'\n )}\n action={\n <Button onClick={openLogMeal}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n }\n />\n ) : (\n <GlassCard treatment=\"plain\" className=\"divide-y divide-border-seam/60 px-2 sm:px-3\">\n {todayMeals.map((m) => (\n <div\n key={m.id}\n className=\"flex items-center gap-3 rounded-xl px-2 py-3 transition-colors hover:bg-bg-sunken/40\"\n >\n <StatusBadge status={m.mealType} />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-1.5\">\n <p className=\"truncate text-sm font-medium text-text-primary\">{m.name}</p>\n {m.isFavorite && (\n <Star\n className=\"h-3.5 w-3.5 shrink-0 fill-current text-action-primary-bg\"\n aria-label={t(\n 'mybodyshield.pages.nutrition.favoriteMeal',\n 'Favorite meal'\n )}\n />\n )}\n </div>\n <p className=\"text-xs text-text-tertiary\">\n {formatGrams(m.proteinG)}{' '}\n {t('mybodyshield.pages.nutrition.proteinShort', 'P')} ·{' '}\n {formatGrams(m.carbsG)} {t('mybodyshield.pages.nutrition.carbsShort', 'C')}{' '}\n · {formatGrams(m.fatG)} {t('mybodyshield.pages.nutrition.fatShort', 'F')} ·{' '}\n {formatNumber(m.servings)}{' '}\n {m.servings === 1\n ? t('mybodyshield.pages.nutrition.serving', 'serving')\n : t('mybodyshield.pages.nutrition.servings', 'servings')}\n </p>\n </div>\n <span className=\"shrink-0 text-sm font-semibold tabular-nums text-text-primary\">\n {formatKcal(m.calories)}\n </span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => handleDeleteMeal(m.id)}\n disabled={pendingDeleteId === m.id}\n aria-label={t('mybodyshield.pages.nutrition.deleteMeal', 'Delete meal')}\n className=\"shrink-0\"\n >\n <Trash2 className=\"h-4 w-4 text-status-error-text\" />\n </Button>\n </div>\n ))}\n </GlassCard>\n )}\n </Section>\n </motion.div>\n </motion.div>\n );\n };\n\n const renderPlanTab = () => {\n if (activePlan.isLoading)\n return (\n <LoadingView\n label={t('mybodyshield.pages.nutrition.loadingPlan', 'Loading your nutrition plan…')}\n />\n );\n if (activePlan.isError) {\n return (\n <ErrorView\n message={t(\n 'mybodyshield.pages.nutrition.errorPlan',\n \"We couldn't load your active nutrition plan.\"\n )}\n onRetry={() => activePlan.refetch()}\n />\n );\n }\n if (!plan) {\n return (\n <EmptyState\n illustration=\"empty-data\"\n icon={<ClipboardList className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.nutrition.noActivePlan', 'No active nutrition plan')}\n description={t(\n 'mybodyshield.pages.nutrition.noActivePlanDescription',\n 'Create a nutrition plan to set your daily calorie and macro targets.'\n )}\n action={\n <Button onClick={openCreatePlan}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.createPlan', 'Create plan')}\n </Button>\n }\n />\n );\n }\n\n const planStats: { icon: ReactNode; label: string; value: string; tint: string }[] = [\n {\n icon: <Flame className=\"h-5 w-5\" />,\n label: t('mybodyshield.pages.nutrition.calorieTarget', 'Calorie target'),\n value: plan.calorieTarget ? `${formatNumber(plan.calorieTarget)} kcal` : '—',\n tint: 'var(--color-action-primary-bg)',\n },\n {\n icon: <Beef className=\"h-5 w-5\" />,\n label: t('mybodyshield.pages.nutrition.proteinTarget', 'Protein target'),\n value: plan.proteinTarget ? formatGrams(plan.proteinTarget) : '—',\n tint: MACRO_HUE.protein,\n },\n {\n icon: <Wheat className=\"h-5 w-5\" />,\n label: t('mybodyshield.pages.nutrition.carbsTarget', 'Carbs target'),\n value: plan.carbsTarget ? formatGrams(plan.carbsTarget) : '—',\n tint: MACRO_HUE.carbs,\n },\n {\n icon: <Droplet className=\"h-5 w-5\" />,\n label: t('mybodyshield.pages.nutrition.fatTarget', 'Fat target'),\n value: plan.fatTarget ? formatGrams(plan.fatTarget) : '—',\n tint: MACRO_HUE.fat,\n },\n ];\n\n return (\n <motion.div initial=\"hidden\" animate=\"show\" variants={listVariants} className=\"space-y-6\">\n {!plan.isActive && (\n <motion.div\n variants={itemVariants}\n className=\"flex flex-wrap items-center justify-between gap-3 rounded-2xl border p-4\"\n style={{\n borderColor: 'color-mix(in srgb, var(--color-action-primary-bg) 32%, transparent)',\n backgroundColor: 'color-mix(in srgb, var(--color-action-primary-bg) 8%, transparent)',\n }}\n >\n <div className=\"flex min-w-0 items-center gap-3\">\n <IconChip icon={<CheckCircle2 className=\"h-5 w-5\" />} />\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary\">\n {t('mybodyshield.pages.nutrition.planNotActive', \"This plan isn't active yet\")}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {t(\n 'mybodyshield.pages.nutrition.planNotActiveDescription',\n \"Activate it to track today's macros against these targets.\"\n )}\n </p>\n </div>\n </div>\n <Button onClick={() => handleActivatePlan(plan.id)} disabled={activatePlan.isPending}>\n <CheckCircle2 className=\"mr-1.5 h-4 w-4\" />\n {activatePlan.isPending\n ? t('mybodyshield.common.activating', 'Activating…')\n : t('mybodyshield.common.activate', 'Activate this plan')}\n </Button>\n </motion.div>\n )}\n\n <motion.div variants={itemVariants}>\n <GlassCard treatment=\"glass\" glow className=\"relative overflow-hidden p-6 sm:p-7\">\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0\"\n style={{\n background:\n 'radial-gradient(120% 120% at 0% 0%, color-mix(in srgb, var(--color-action-primary-bg) 13%, transparent), transparent 55%)',\n }}\n />\n <div className=\"relative flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <p className=\"text-xs font-semibold uppercase tracking-wide text-action-primary-bg\">\n {plan.isActive\n ? t('mybodyshield.pages.nutrition.activePlan', 'Active plan')\n : t('mybodyshield.pages.nutrition.nutritionPlan', 'Nutrition plan')}\n </p>\n <div className=\"mt-1.5 flex flex-wrap items-baseline gap-x-2 gap-y-1\">\n <h2 className=\"text-2xl font-bold text-text-primary\">{plan.name}</h2>\n {plan.calorieTarget > 0 && (\n <span className=\"text-lg font-semibold tabular-nums text-text-tertiary\">\n {formatNumber(plan.calorieTarget)} kcal\n </span>\n )}\n {plan.isActive ? (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-status-success-bg-subtle px-2.5 py-0.5 text-xs font-medium text-status-success-text\">\n <CheckCircle2 className=\"h-3.5 w-3.5\" />{' '}\n {t('mybodyshield.common.active', 'Active')}\n </span>\n ) : (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-bg-sunken px-2.5 py-0.5 text-xs font-medium text-text-secondary\">\n {t('mybodyshield.common.inactive', 'Inactive')}\n </span>\n )}\n </div>\n {(plan.startDate || plan.endDate) && (\n <p className=\"mt-2 inline-flex items-center gap-1.5 text-sm text-text-secondary\">\n <Calendar className=\"h-4 w-4 text-text-tertiary\" />\n {formatDate(plan.startDate)} – {formatDate(plan.endDate)}\n </p>\n )}\n </div>\n <div className=\"flex shrink-0 items-center gap-2\">\n <span className=\"text-sm text-text-tertiary\">\n {t('mybodyshield.common.goal', 'Goal')}\n </span>\n <StatusBadge status={plan.goalType} />\n </div>\n </div>\n\n <motion.div\n variants={listVariants}\n className=\"relative mt-6 grid grid-cols-2 gap-3 sm:gap-4 lg:grid-cols-4\"\n >\n {planStats.map((s) => (\n <motion.div\n key={s.label}\n variants={itemVariants}\n className=\"rounded-2xl border border-border-seam bg-bg-sunken/40 p-4 transition-shadow duration-200 hover:shadow-elevation-2\"\n >\n <IconChip icon={s.icon} tint={s.tint} />\n <p className=\"mt-3 text-xs text-text-tertiary\">{s.label}</p>\n <p className=\"mt-1 text-xl font-bold tabular-nums text-text-primary\">{s.value}</p>\n </motion.div>\n ))}\n </motion.div>\n </GlassCard>\n </motion.div>\n\n {plan.notes && (\n <motion.div variants={itemVariants}>\n <Section title={t('mybodyshield.pages.nutrition.planNotes', 'Notes')}>\n <GlassCard treatment=\"plain\" className=\"p-4\">\n <p className=\"whitespace-pre-wrap text-sm text-text-secondary\">{plan.notes}</p>\n </GlassCard>\n </Section>\n </motion.div>\n )}\n </motion.div>\n );\n };\n\n const renderMealsTab = () => {\n if (mealsQuery.isLoading)\n return (\n <LoadingView label={t('mybodyshield.pages.nutrition.loadingMeals', 'Loading meal log…')} />\n );\n if (mealsQuery.isError) {\n return (\n <ErrorView\n message={t('mybodyshield.pages.nutrition.errorMeals', \"We couldn't load your meal log.\")}\n onRetry={() => mealsQuery.refetch()}\n />\n );\n }\n\n return (\n <motion.div initial=\"hidden\" animate=\"show\" variants={listVariants} className=\"space-y-4\">\n <motion.div variants={itemVariants}>\n <FilterTabs\n options={MEAL_FILTER_OPTIONS}\n value={mealFilter}\n onChange={onMealFilterChange}\n />\n </motion.div>\n {mealRows.length === 0 ? (\n <motion.div variants={itemVariants}>\n <EmptyState\n illustration=\"empty-data\"\n icon={<UtensilsCrossed className=\"h-10 w-10\" />}\n title={\n mealFilter === 'ALL'\n ? t('mybodyshield.pages.nutrition.emptyMealsTitle', 'No meals logged yet')\n : t(\n 'mybodyshield.pages.nutrition.emptyMealsFilteredTitle',\n 'No meals for this filter'\n )\n }\n description={\n mealFilter === 'ALL'\n ? t(\n 'mybodyshield.pages.nutrition.emptyMealsDescription',\n 'Log meals from the Today tab to build up your nutrition history.'\n )\n : t(\n 'mybodyshield.pages.nutrition.emptyMealsFilteredDescription',\n 'Try a different meal type, or log a meal to get started.'\n )\n }\n action={\n <Button onClick={openLogMeal}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n }\n />\n </motion.div>\n ) : (\n <>\n <motion.div variants={itemVariants}>\n <DataTable\n columns={mealColumns}\n rows={mealRows}\n rowKey={(row) => row.id}\n defaultSort={{ key: 'loggedAt', dir: 'desc' }}\n />\n </motion.div>\n <motion.div variants={itemVariants}>\n <Pagination\n page={pager.page}\n pageSize={PAGE_SIZE}\n itemCount={mealRows.length}\n hasMore={mealsQuery.data?.pageInfo?.hasMore ?? false}\n onPageChange={(target) => pager.onPageChange(target)}\n />\n </motion.div>\n </>\n )}\n </motion.div>\n );\n };\n\n // -------------------------------------------------------------------------\n return (\n <PageLayout\n title={t('mybodyshield.pages.nutrition.title', 'Nutrition')}\n description={t(\n 'mybodyshield.pages.nutrition.description',\n 'Plans, meal logging and daily macro targets.'\n )}\n actions={actions}\n >\n <Tabs items={TAB_ITEMS} value={tab} onChange={setTab} className=\"mb-6\" />\n\n {actionError && (\n <div className=\"mb-4 rounded-lg border border-status-error-text/40 bg-status-error-bg-subtle px-4 py-2 text-sm text-status-error-text\">\n {actionError}\n </div>\n )}\n\n {tab === 'today' && renderTodayTab()}\n {tab === 'plan' && renderPlanTab()}\n {tab === 'meals' && renderMealsTab()}\n\n {/* Log-meal dialog ---------------------------------------------------- */}\n <ResponsiveDialog open={mealOpen} onOpenChange={setMealOpen}>\n <ResponsiveDialogContent className=\"sm:max-w-lg\">\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {t('mybodyshield.pages.nutrition.logMealDialogTitle', 'Log a meal')}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {t(\n 'mybodyshield.pages.nutrition.logMealDialogDescription',\n \"Record what you ate to update today's macros.\"\n )}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-4 py-2\">\n {mealErr && (\n <div className=\"rounded-lg border border-status-error-text/40 bg-status-error-bg-subtle px-3 py-2 text-sm text-status-error-text\">\n {mealErr}\n </div>\n )}\n\n {/* BOFF-4173: Open Food Facts search + barcode lookup — fills the\n fields below; the member can still fine-tune before saving. */}\n <div className=\"space-y-2 rounded-xl border border-seam bg-surface p-3\">\n <Label htmlFor=\"meal-food-search\">\n {t('mybodyshield.pages.nutrition.foodSearchHint', 'Quick-log from food database')}\n </Label>\n <Input\n id=\"meal-food-search\"\n value={foodQuery}\n onChange={(e) => setFoodQuery(e.target.value)}\n placeholder={t(\n 'mybodyshield.pages.nutrition.foodSearchPlaceholder',\n 'Search foods (e.g. grilled chicken)'\n )}\n />\n {foodSearch.isFetching && (\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.common.loading', 'Loading…')}\n </p>\n )}\n {!foodSearch.isFetching &&\n foodQuery.trim().length >= 2 &&\n (foodSearch.data?.length ?? 0) === 0 && (\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.common.noResults', 'No matches found.')}\n </p>\n )}\n {(foodSearch.data?.length ?? 0) > 0 && (\n <ul className=\"max-h-40 space-y-1 overflow-y-auto\">\n {foodSearch.data!.map((food, i) => (\n <li key={`${food.barcode ?? food.name}-${i}`}>\n <button\n type=\"button\"\n onClick={() => applyFood(food)}\n className=\"flex w-full items-center justify-between rounded-lg px-2 py-1.5 text-left text-sm hover:bg-surface-hover\"\n >\n <span className=\"truncate\">\n {food.name}\n {food.brand ? (\n <span className=\"text-text-tertiary\"> · {food.brand}</span>\n ) : null}\n </span>\n <span className=\"ml-2 shrink-0 text-xs text-text-tertiary\">\n {t(\n 'mybodyshield.pages.nutrition.foodSearchMeta',\n '{{calories}} kcal / {{servingG}}g',\n { calories: food.calories, servingG: food.servingG }\n )}\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n <div className=\"flex items-end gap-2 pt-1\">\n <div className=\"flex-1 space-y-1.5\">\n <Label htmlFor=\"meal-barcode\">\n {t(\n 'mybodyshield.pages.nutrition.barcodePlaceholder',\n 'Or scan/enter a barcode'\n )}\n </Label>\n <Input\n id=\"meal-barcode\"\n value={barcodeInput}\n onChange={(e) => setBarcodeInput(e.target.value)}\n placeholder={t(\n 'mybodyshield.pages.nutrition.barcodeExample',\n 'e.g. 3017620422003'\n )}\n />\n </div>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={submitBarcodeLookup}\n disabled={barcodeLookup.isPending || !barcodeInput.trim()}\n >\n {barcodeLookup.isPending\n ? t('mybodyshield.common.loading', 'Loading…')\n : t('mybodyshield.pages.nutrition.barcodeLookup', 'Look up')}\n </Button>\n </div>\n {barcodeErr && <p className=\"text-xs text-status-error-text\">{barcodeErr}</p>}\n </div>\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-name\">{t('mybodyshield.common.name', 'Name')}</Label>\n <Input\n id=\"meal-name\"\n value={mealForm.name}\n onChange={(e) => setMealForm({ ...mealForm, name: e.target.value })}\n placeholder={t(\n 'mybodyshield.pages.nutrition.mealNamePlaceholder',\n 'Grilled chicken salad'\n )}\n />\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-type\">{t('mybodyshield.common.type', 'Type')}</Label>\n <Select\n value={mealForm.mealType}\n onValueChange={(v) =>\n // v is constrained to MEAL_TYPES rendered below.\n setMealForm({ ...mealForm, mealType: v as MybMealType })\n }\n >\n <SelectTrigger id=\"meal-type\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {MEAL_TYPES.map((type) => (\n <SelectItem key={type} value={type}>\n {formatEnumLabel(type)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-servings\">\n {t('mybodyshield.pages.nutrition.servingsLabel', 'Servings')}\n </Label>\n <Input\n id=\"meal-servings\"\n type=\"number\"\n min={0}\n step=\"0.5\"\n value={mealForm.servings}\n onChange={(e) => setMealForm({ ...mealForm, servings: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.servingsPlaceholder', '1')}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-calories\">\n {t('mybodyshield.pages.nutrition.calories', 'Calories')} (kcal)\n </Label>\n <Input\n id=\"meal-calories\"\n type=\"number\"\n min={0}\n value={mealForm.calories}\n onChange={(e) => setMealForm({ ...mealForm, calories: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.caloriesPlaceholder', '0')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-protein\">\n {t('mybodyshield.pages.nutrition.protein', 'Protein')} (g)\n </Label>\n <Input\n id=\"meal-protein\"\n type=\"number\"\n min={0}\n value={mealForm.proteinG}\n onChange={(e) => setMealForm({ ...mealForm, proteinG: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.proteinPlaceholder', '0')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-carbs\">\n {t('mybodyshield.pages.nutrition.carbs', 'Carbs')} (g)\n </Label>\n <Input\n id=\"meal-carbs\"\n type=\"number\"\n min={0}\n value={mealForm.carbsG}\n onChange={(e) => setMealForm({ ...mealForm, carbsG: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.carbsPlaceholder', '0')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-fat\">{t('mybodyshield.pages.nutrition.fat', 'Fat')} (g)</Label>\n <Input\n id=\"meal-fat\"\n type=\"number\"\n min={0}\n value={mealForm.fatG}\n onChange={(e) => setMealForm({ ...mealForm, fatG: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.fatPlaceholder', '0')}\n />\n </div>\n </div>\n <div className=\"flex items-center justify-between gap-4 rounded-xl bg-bg-sunken/60 p-3\">\n <div className=\"min-w-0\">\n <Label htmlFor=\"meal-favorite\" className=\"cursor-pointer\">\n {t('mybodyshield.pages.nutrition.favorite', 'Favorite')}\n </Label>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.nutrition.favoriteHint', 'Save for quick re-log')}\n </p>\n </div>\n <Switch\n id=\"meal-favorite\"\n checked={mealForm.isFavorite}\n onCheckedChange={(v) => setMealForm({ ...mealForm, isFavorite: v })}\n />\n </div>\n </div>\n\n <ResponsiveDialogFooter>\n <Button\n variant=\"outline\"\n onClick={() => setMealOpen(false)}\n disabled={logMeal.isPending}\n >\n {t('mybodyshield.common.cancel', 'Cancel')}\n </Button>\n <Button onClick={submitMeal} disabled={logMeal.isPending}>\n {logMeal.isPending\n ? t('mybodyshield.common.logging', 'Logging…')\n : t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n\n {/* Create / edit plan dialog ----------------------------------------- */}\n <ResponsiveDialog open={planOpen} onOpenChange={setPlanOpen}>\n <ResponsiveDialogContent className=\"sm:max-w-lg\">\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {planMode === 'edit'\n ? t('mybodyshield.pages.nutrition.editTargetsDialogTitle', 'Edit nutrition targets')\n : t('mybodyshield.pages.nutrition.createPlanDialogTitle', 'Create nutrition plan')}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {planMode === 'edit'\n ? t(\n 'mybodyshield.pages.nutrition.editTargetsDescription',\n 'Update your calorie and macro targets for this plan.'\n )\n : t(\n 'mybodyshield.pages.nutrition.createPlanDescription',\n 'Set your daily calorie and macro targets.'\n )}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-4 py-2\">\n {planErr && (\n <div className=\"rounded-lg border border-status-error-text/40 bg-status-error-bg-subtle px-3 py-2 text-sm text-status-error-text\">\n {planErr}\n </div>\n )}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-name\">{t('mybodyshield.common.name', 'Name')}</Label>\n <Input\n id=\"plan-name\"\n value={planForm.name}\n onChange={(e) => setPlanForm({ ...planForm, name: e.target.value })}\n placeholder={t(\n 'mybodyshield.pages.nutrition.planNamePlaceholder',\n 'Lean bulk — Q3'\n )}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-goal\">{t('mybodyshield.common.goalType', 'Goal type')}</Label>\n <Select\n value={planForm.goalType}\n onValueChange={(v) =>\n // v is constrained to GOAL_TYPES rendered below.\n setPlanForm({ ...planForm, goalType: v as MybGoalType })\n }\n >\n <SelectTrigger id=\"plan-goal\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {GOAL_TYPES.map((g) => (\n <SelectItem key={g} value={g}>\n {formatEnumLabel(g)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-calories\">\n {t('mybodyshield.pages.nutrition.calorieTarget', 'Calorie target')} (kcal)\n </Label>\n <Input\n id=\"plan-calories\"\n type=\"number\"\n min={0}\n value={planForm.calorieTarget}\n onChange={(e) => setPlanForm({ ...planForm, calorieTarget: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.calorieTargetPlaceholder', '2400')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-protein\">\n {t('mybodyshield.pages.nutrition.proteinTarget', 'Protein target')} (g)\n </Label>\n <Input\n id=\"plan-protein\"\n type=\"number\"\n min={0}\n value={planForm.proteinTarget}\n onChange={(e) => setPlanForm({ ...planForm, proteinTarget: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.proteinTargetPlaceholder', '180')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-carbs\">\n {t('mybodyshield.pages.nutrition.carbsTarget', 'Carbs target')} (g)\n </Label>\n <Input\n id=\"plan-carbs\"\n type=\"number\"\n min={0}\n value={planForm.carbsTarget}\n onChange={(e) => setPlanForm({ ...planForm, carbsTarget: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.carbsTargetPlaceholder', '250')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-fat\">\n {t('mybodyshield.pages.nutrition.fatTarget', 'Fat target')} (g)\n </Label>\n <Input\n id=\"plan-fat\"\n type=\"number\"\n min={0}\n value={planForm.fatTarget}\n onChange={(e) => setPlanForm({ ...planForm, fatTarget: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.fatTargetPlaceholder', '70')}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-start\">\n {t('mybodyshield.common.startDate', 'Start date')}\n </Label>\n <Input\n id=\"plan-start\"\n type=\"date\"\n value={planForm.startDate}\n onChange={(e) => setPlanForm({ ...planForm, startDate: e.target.value })}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-end\">{t('mybodyshield.common.endDate', 'End date')}</Label>\n <Input\n id=\"plan-end\"\n type=\"date\"\n value={planForm.endDate}\n onChange={(e) => setPlanForm({ ...planForm, endDate: e.target.value })}\n />\n </div>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-notes\">{t('mybodyshield.common.notes', 'Notes')}</Label>\n <Textarea\n id=\"plan-notes\"\n value={planForm.notes}\n onChange={(e) => setPlanForm({ ...planForm, notes: e.target.value })}\n placeholder={t(\n 'mybodyshield.pages.nutrition.planNotesPlaceholder',\n 'Coaching notes, refeed schedule, supplements…'\n )}\n rows={3}\n />\n </div>\n </div>\n\n <ResponsiveDialogFooter>\n <Button variant=\"outline\" onClick={() => setPlanOpen(false)} disabled={planPending}>\n {t('mybodyshield.common.cancel', 'Cancel')}\n </Button>\n <Button onClick={submitPlan} disabled={planPending}>\n {planPending\n ? t('mybodyshield.common.saving', 'Saving…')\n : planMode === 'edit'\n ? t('mybodyshield.pages.nutrition.saveTargets', 'Save targets')\n : t('mybodyshield.pages.nutrition.createPlan', 'Create plan')}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NutritionPage.js","names":["_Fragment","Fragment$1","PAGE_SIZE","MEAL_TYPES","GOAL_TYPES","useTabItems","t","Flame","ClipboardList","UtensilsCrossed","useMealFilterOptions","type","formatEnumLabel","numOrUndef","raw","numToStr","n","toDateInput","iso","d","fromDateInput","v","EMPTY_MEAL","EMPTY_PLAN","NutritionPage","useTr","tab","setTab","useState","reduceMotion","useReducedMotion","TAB_ITEMS","MEAL_FILTER_OPTIONS","macros","useMybDailyMacros","activePlan","useMybActiveNutritionPlan","todayMealsQuery","useMybMeals","mealFilter","setMealFilter","pager","useOffsetPager","mealsQuery","logMeal","useMybLogMeal","deleteMeal","useMybDeleteMeal","createPlan","useMybCreateNutritionPlan","updatePlan","useMybUpdateNutritionPlan","activatePlan","useMybActivateNutritionPlan","actionError","setActionError","pendingDeleteId","setPendingDeleteId","shownPlanOverride","setShownPlanOverride","mealOpen","setMealOpen","mealForm","setMealForm","mealErr","setMealErr","foodQuery","setFoodQuery","foodSearch","useMybSearchFoods","barcodeInput","setBarcodeInput","barcodeErr","setBarcodeErr","barcodeLookup","useMybFoodByBarcode","applyFood","food","submitBarcodeLookup","code","planOpen","setPlanOpen","planMode","setPlanMode","planForm","setPlanForm","planErr","setPlanErr","activePlanData","plan","todayMeals","useMemo","rows","todayKey","m","b","a","mealRows","onMealFilterChange","openLogMeal","openCreatePlan","openEditPlan","submitMeal","submitPlan","shared","updated","prev","created","handleActivatePlan","id","handleDeleteMeal","planPending","listVariants","itemVariants","mealColumns","Star","row","StatusBadge","formatKcal","formatGrams","formatNumber","formatRelativeTime","Button","Trash2","actions","Pencil","Plus","PageLayout","Tabs","LoadingView","ErrorView","macroData","hasTarget","hasConsumption","EmptyState","Salad","caloriePct","pctFull","macroTiles","MACRO_HUE","motion","GlassCard","ProgressRing","MacroBar","tile","Meter","Section","planStats","Beef","Wheat","Droplet","IconChip","CheckCircle2","Calendar","formatDate","s","FilterTabs","DataTable","Pagination","target","ResponsiveDialog","ResponsiveDialogContent","ResponsiveDialogHeader","ResponsiveDialogTitle","ResponsiveDialogDescription","Label","Input","i","Select","SelectTrigger","SelectValue","SelectContent","SelectItem","Switch","ResponsiveDialogFooter","g","Textarea"],"sources":["../../../../src/mybodyshield/pages/nutrition/NutritionPage.tsx"],"sourcesContent":["/**\n * Nutrition — plans, meal logging and daily macro targets.\n * @module mybodyshield/pages/nutrition\n *\n * Three tabs, all wired to the real `myb*` nutrition contract (no mock data):\n * - Today: daily macro roll-up (calories ring + macro bar + per-macro meters)\n * and the meals logged today, with inline \"Log meal\".\n * - Plan: the member's active nutrition plan (targets, dates, notes) with\n * create / edit-targets dialogs.\n * - Meals: the full meal log, filterable by meal type, offset-paginated.\n */\n\nimport { useMemo, useState, type ReactNode } from 'react';\nimport { motion, useReducedMotion, type Variants } from 'framer-motion';\nimport {\n Flame,\n ClipboardList,\n UtensilsCrossed,\n Salad,\n Plus,\n Trash2,\n Pencil,\n Beef,\n Wheat,\n Droplet,\n Star,\n Calendar,\n CheckCircle2,\n} from 'lucide-react';\nimport {\n Button,\n Input,\n Label,\n Textarea,\n Switch,\n Select,\n SelectTrigger,\n SelectContent,\n SelectItem,\n SelectValue,\n GlassCard,\n ResponsiveDialog,\n ResponsiveDialogContent,\n ResponsiveDialogHeader,\n ResponsiveDialogTitle,\n ResponsiveDialogDescription,\n ResponsiveDialogFooter,\n} from '@burdenoff/fe-libs/ui';\nimport {\n PageLayout,\n Tabs,\n type TabItem,\n StatusBadge,\n DataTable,\n type Column,\n FilterTabs,\n type FilterOption,\n Pagination,\n EmptyState,\n LoadingView,\n ErrorView,\n Section,\n} from '../../components';\nimport {\n useMybDailyMacros,\n useMybActiveNutritionPlan,\n useMybMeals,\n useMybCreateNutritionPlan,\n useMybUpdateNutritionPlan,\n useMybActivateNutritionPlan,\n useMybLogMeal,\n useMybDeleteMeal,\n useOffsetPager,\n useMybSearchFoods,\n useMybFoodByBarcode,\n useTr,\n} from '../../hooks';\nimport type { MybMealType, MybGoalType, MybMealLog, MybNutritionPlan, MybFood } from '../../types';\nimport {\n formatKcal,\n formatGrams,\n formatNumber,\n formatDate,\n formatRelativeTime,\n formatEnumLabel,\n} from '../../utils/formatters';\nimport { Meter, ProgressRing, MacroBar, IconChip, MACRO_HUE } from '../_shared/visuals';\n\n// ---------------------------------------------------------------------------\n// Constants & helpers\n// ---------------------------------------------------------------------------\n\ntype NutritionTab = 'today' | 'plan' | 'meals';\ntype MealFilterValue = 'ALL' | MybMealType;\n\nconst PAGE_SIZE = 25;\n\nconst MEAL_TYPES: MybMealType[] = ['BREAKFAST', 'LUNCH', 'DINNER', 'SNACK'];\nconst GOAL_TYPES: MybGoalType[] = [\n 'WEIGHT_LOSS',\n 'MUSCLE_GAIN',\n 'STRENGTH',\n 'ENDURANCE',\n 'MOBILITY',\n 'GENERAL_FITNESS',\n];\n\nfunction useTabItems(t: ReturnType<typeof useTr>): TabItem<NutritionTab>[] {\n return [\n {\n value: 'today',\n label: t('mybodyshield.pages.nutrition.today', 'Today'),\n icon: <Flame className=\"h-4 w-4\" />,\n },\n {\n value: 'plan',\n label: t('mybodyshield.pages.nutrition.plan', 'Plan'),\n icon: <ClipboardList className=\"h-4 w-4\" />,\n },\n {\n value: 'meals',\n label: t('mybodyshield.pages.nutrition.meals', 'Meals'),\n icon: <UtensilsCrossed className=\"h-4 w-4\" />,\n },\n ];\n}\n\nfunction useMealFilterOptions(t: ReturnType<typeof useTr>): FilterOption<MealFilterValue>[] {\n return [\n { value: 'ALL', label: t('mybodyshield.common.all', 'All') },\n ...MEAL_TYPES.map((type) => ({ value: type, label: formatEnumLabel(type) })),\n ];\n}\n\n/** Parse a numeric text field: empty → undefined, else the finite number. */\nconst numOrUndef = (raw: string): number | undefined => {\n const t = raw.trim();\n if (!t) return undefined;\n const n = Number(t);\n return Number.isFinite(n) ? n : undefined;\n};\n\n/** Render a positive number back into a text-input value ('' for 0/unset). */\nconst numToStr = (n: number | null | undefined): string => (n ? String(n) : '');\n\n/** ISO DateTime → yyyy-mm-dd for a native date input ('' when absent/invalid). */\nconst toDateInput = (iso: string | null | undefined): string => {\n if (!iso) return '';\n const d = new Date(iso);\n return Number.isNaN(d.getTime()) ? '' : d.toISOString().slice(0, 10);\n};\n\n/** yyyy-mm-dd date-input value → ISO string (undefined when empty). */\nconst fromDateInput = (v: string): string | undefined =>\n v ? new Date(v).toISOString() : undefined;\n\ninterface MealForm {\n name: string;\n mealType: MybMealType;\n calories: string;\n proteinG: string;\n carbsG: string;\n fatG: string;\n servings: string;\n isFavorite: boolean;\n /** Set when the meal was populated from an Open Food Facts search/barcode hit (BOFF-4173). */\n barcode: string | null;\n}\n\nconst EMPTY_MEAL: MealForm = {\n name: '',\n mealType: 'BREAKFAST',\n calories: '',\n proteinG: '',\n carbsG: '',\n fatG: '',\n servings: '',\n isFavorite: false,\n barcode: null,\n};\n\ninterface PlanForm {\n name: string;\n goalType: MybGoalType;\n calorieTarget: string;\n proteinTarget: string;\n carbsTarget: string;\n fatTarget: string;\n startDate: string;\n endDate: string;\n notes: string;\n}\n\nconst EMPTY_PLAN: PlanForm = {\n name: '',\n goalType: 'GENERAL_FITNESS',\n calorieTarget: '',\n proteinTarget: '',\n carbsTarget: '',\n fatTarget: '',\n startDate: '',\n endDate: '',\n notes: '',\n};\n\n// ---------------------------------------------------------------------------\n// Page\n// ---------------------------------------------------------------------------\n\nexport function NutritionPage() {\n const t = useTr();\n const [tab, setTab] = useState<NutritionTab>('today');\n const reduceMotion = useReducedMotion();\n const TAB_ITEMS = useTabItems(t);\n const MEAL_FILTER_OPTIONS = useMealFilterOptions(t);\n\n // Data ---------------------------------------------------------------------\n const macros = useMybDailyMacros();\n const activePlan = useMybActiveNutritionPlan();\n const todayMealsQuery = useMybMeals({});\n\n const [mealFilter, setMealFilter] = useState<MealFilterValue>('ALL');\n const pager = useOffsetPager(PAGE_SIZE);\n const mealsQuery = useMybMeals({\n mealType: mealFilter === 'ALL' ? undefined : mealFilter,\n pagination: { limit: PAGE_SIZE, offset: pager.offset },\n });\n\n // Mutations ----------------------------------------------------------------\n const logMeal = useMybLogMeal();\n const deleteMeal = useMybDeleteMeal();\n const createPlan = useMybCreateNutritionPlan();\n const updatePlan = useMybUpdateNutritionPlan();\n const activatePlan = useMybActivateNutritionPlan();\n\n // Local UI state -----------------------------------------------------------\n const [actionError, setActionError] = useState<string | null>(null);\n const [pendingDeleteId, setPendingDeleteId] = useState<string | null>(null);\n\n // A just-created plan is NOT auto-activated by the backend, so it won't show\n // up via `useMybActiveNutritionPlan`. Hold it here so we can display it and\n // offer to activate it. Cleared once it becomes the active plan.\n const [shownPlanOverride, setShownPlanOverride] = useState<MybNutritionPlan | null>(null);\n\n const [mealOpen, setMealOpen] = useState(false);\n const [mealForm, setMealForm] = useState<MealForm>(EMPTY_MEAL);\n const [mealErr, setMealErr] = useState<string | null>(null);\n\n // BOFF-4173: fast food-logging via the Open Food Facts search/barcode\n // lookup — fills the manual fields below rather than replacing them, so a\n // member can always fine-tune a portion after picking a match.\n const [foodQuery, setFoodQuery] = useState('');\n const foodSearch = useMybSearchFoods(foodQuery);\n const [barcodeInput, setBarcodeInput] = useState('');\n const [barcodeErr, setBarcodeErr] = useState<string | null>(null);\n const barcodeLookup = useMybFoodByBarcode();\n\n const applyFood = (food: MybFood) => {\n setMealForm({\n ...mealForm,\n name: food.name,\n calories: numToStr(food.calories),\n proteinG: numToStr(food.proteinG),\n carbsG: numToStr(food.carbsG),\n fatG: numToStr(food.fatG),\n servings: mealForm.servings || '1',\n barcode: food.barcode ?? null,\n });\n setFoodQuery('');\n };\n\n const submitBarcodeLookup = async () => {\n const code = barcodeInput.trim();\n if (!code) return;\n setBarcodeErr(null);\n try {\n const food = await barcodeLookup.mutateAsync(code);\n if (!food) {\n setBarcodeErr(\n t(\n 'mybodyshield.pages.nutrition.noProductForBarcode',\n 'No product found for barcode {{barcode}}.',\n { barcode: code }\n )\n );\n return;\n }\n applyFood(food);\n setBarcodeInput('');\n } catch (e) {\n setBarcodeErr(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.barcodeLookupFailed', 'Barcode lookup failed.')\n );\n }\n };\n\n const [planOpen, setPlanOpen] = useState(false);\n const [planMode, setPlanMode] = useState<'create' | 'edit'>('create');\n const [planForm, setPlanForm] = useState<PlanForm>(EMPTY_PLAN);\n const [planErr, setPlanErr] = useState<string | null>(null);\n\n const activePlanData = activePlan.data ?? null;\n // The plan surfaced in the Plan tab: a freshly created (not-yet-active) plan\n // takes precedence over the active one so the member can act on it.\n const plan = shownPlanOverride ?? activePlanData;\n\n // Derived: meals logged today (client-side filter on loggedAt) --------------\n const todayMeals = useMemo(() => {\n const rows = todayMealsQuery.data?.items ?? [];\n const todayKey = new Date().toDateString();\n return rows\n .filter((m) => {\n const d = new Date(m.loggedAt);\n return !Number.isNaN(d.getTime()) && d.toDateString() === todayKey;\n })\n .sort((a, b) => new Date(b.loggedAt).getTime() - new Date(a.loggedAt).getTime());\n }, [todayMealsQuery.data]);\n\n const mealRows = mealsQuery.data?.items ?? [];\n\n // Handlers -----------------------------------------------------------------\n const onMealFilterChange = (v: MealFilterValue) => {\n setMealFilter(v);\n pager.reset();\n };\n\n const openLogMeal = () => {\n setMealForm(EMPTY_MEAL);\n setMealErr(null);\n setFoodQuery('');\n setBarcodeInput('');\n setBarcodeErr(null);\n setMealOpen(true);\n };\n\n const openCreatePlan = () => {\n setPlanMode('create');\n setPlanForm(EMPTY_PLAN);\n setPlanErr(null);\n setPlanOpen(true);\n };\n\n const openEditPlan = () => {\n if (!plan) return;\n setPlanMode('edit');\n setPlanForm({\n name: plan.name,\n goalType: plan.goalType,\n calorieTarget: numToStr(plan.calorieTarget),\n proteinTarget: numToStr(plan.proteinTarget),\n carbsTarget: numToStr(plan.carbsTarget),\n fatTarget: numToStr(plan.fatTarget),\n startDate: toDateInput(plan.startDate),\n endDate: toDateInput(plan.endDate),\n notes: plan.notes ?? '',\n });\n setPlanErr(null);\n setPlanOpen(true);\n };\n\n const submitMeal = async () => {\n if (!mealForm.name.trim()) {\n setMealErr(t('mybodyshield.pages.nutrition.mealNameRequired', 'Meal name is required.'));\n return;\n }\n setMealErr(null);\n try {\n await logMeal.mutateAsync({\n name: mealForm.name.trim(),\n mealType: mealForm.mealType,\n calories: numOrUndef(mealForm.calories),\n proteinG: numOrUndef(mealForm.proteinG),\n carbsG: numOrUndef(mealForm.carbsG),\n fatG: numOrUndef(mealForm.fatG),\n servings: numOrUndef(mealForm.servings),\n isFavorite: mealForm.isFavorite,\n planId: plan?.id ?? undefined,\n loggedAt: new Date().toISOString(),\n barcode: mealForm.barcode ?? undefined,\n });\n setMealOpen(false);\n setMealForm(EMPTY_MEAL);\n } catch (e) {\n setMealErr(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.failedToLogMeal', 'Failed to log meal.')\n );\n }\n };\n\n const submitPlan = async () => {\n if (!planForm.name.trim()) {\n setPlanErr(t('mybodyshield.pages.nutrition.planNameRequired', 'Plan name is required.'));\n return;\n }\n setPlanErr(null);\n const shared = {\n goalType: planForm.goalType,\n calorieTarget: numOrUndef(planForm.calorieTarget),\n proteinTarget: numOrUndef(planForm.proteinTarget),\n carbsTarget: numOrUndef(planForm.carbsTarget),\n fatTarget: numOrUndef(planForm.fatTarget),\n startDate: fromDateInput(planForm.startDate),\n endDate: fromDateInput(planForm.endDate),\n notes: planForm.notes.trim() || undefined,\n };\n try {\n if (planMode === 'edit' && plan) {\n const updated = await updatePlan.mutateAsync({\n id: plan.id,\n input: { name: planForm.name.trim(), ...shared },\n });\n // Keep a held (not-yet-active) plan in sync with its edits.\n setShownPlanOverride((prev) => (prev && prev.id === updated.id ? updated : prev));\n } else {\n // Create does NOT auto-activate — surface the new plan and offer to\n // activate it from the Plan tab.\n const created = await createPlan.mutateAsync({ name: planForm.name.trim(), ...shared });\n setShownPlanOverride(created);\n setTab('plan');\n }\n setPlanOpen(false);\n } catch (e) {\n setPlanErr(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.failedToSavePlan', 'Failed to save plan.')\n );\n }\n };\n\n const handleActivatePlan = async (id: string) => {\n setActionError(null);\n try {\n await activatePlan.mutateAsync(id);\n // Once active, drop the override so we track the refetched active plan.\n setShownPlanOverride(null);\n } catch (e) {\n setActionError(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.failedToActivatePlan', 'Failed to activate plan.')\n );\n }\n };\n\n const handleDeleteMeal = async (id: string) => {\n if (\n !window.confirm(\n t(\n 'mybodyshield.pages.nutrition.deleteMealConfirm',\n 'Delete this meal log? This cannot be undone.'\n )\n )\n )\n return;\n setPendingDeleteId(id);\n setActionError(null);\n try {\n await deleteMeal.mutateAsync(id);\n } catch (e) {\n setActionError(\n e instanceof Error\n ? e.message\n : t('mybodyshield.pages.nutrition.failedToDeleteMeal', 'Failed to delete meal.')\n );\n } finally {\n setPendingDeleteId(null);\n }\n };\n\n const planPending = planMode === 'edit' ? updatePlan.isPending : createPlan.isPending;\n\n // Motion — subtle staggered entrance / tab-switch. Respects reduced motion:\n // when set, transforms collapse to a single-shot fade and stagger is disabled.\n const listVariants: Variants = {\n hidden: {},\n show: {\n transition: {\n staggerChildren: reduceMotion ? 0 : 0.06,\n delayChildren: reduceMotion ? 0 : 0.03,\n },\n },\n };\n const itemVariants: Variants = {\n hidden: reduceMotion ? { opacity: 0 } : { opacity: 0, y: 14 },\n show: {\n opacity: 1,\n y: 0,\n transition: { duration: reduceMotion ? 0.2 : 0.45, ease: 'easeOut' },\n },\n };\n\n // Meals-tab table columns --------------------------------------------------\n const mealColumns: Column<MybMealLog>[] = [\n {\n key: 'favorite',\n header: <Star className=\"h-3.5 w-3.5 text-action-primary-bg\" aria-hidden=\"true\" />,\n align: 'center',\n sortValue: (row) => (row.isFavorite ? 1 : 0),\n render: (row) => (\n <span\n className=\"inline-flex\"\n title={\n row.isFavorite\n ? t('mybodyshield.pages.nutrition.favoriteMeal', 'Favorite meal')\n : t('mybodyshield.pages.nutrition.notFavorite', 'Not a favorite')\n }\n >\n <Star\n className={`h-4 w-4 transition-colors ${\n row.isFavorite ? 'fill-current text-action-primary-bg' : 'text-text-tertiary'\n }`}\n />\n <span className=\"sr-only\">\n {row.isFavorite\n ? t('mybodyshield.pages.nutrition.favorite', 'Favorite')\n : t('mybodyshield.pages.nutrition.notFavoriteShort', 'Not favorite')}\n </span>\n </span>\n ),\n },\n {\n key: 'name',\n header: t('mybodyshield.pages.nutrition.meal', 'Meal'),\n render: (row) => <span className=\"font-medium text-text-primary\">{row.name}</span>,\n },\n {\n key: 'mealType',\n header: t('mybodyshield.pages.nutrition.mealType', 'Type'),\n render: (row) => <StatusBadge status={row.mealType} />,\n },\n {\n key: 'calories',\n header: t('mybodyshield.pages.nutrition.calories', 'Calories'),\n align: 'right',\n sortValue: (row) => row.calories,\n render: (row) => (\n <span className=\"font-semibold tabular-nums text-text-primary\">\n {formatKcal(row.calories)}\n </span>\n ),\n },\n {\n key: 'proteinG',\n header: t('mybodyshield.pages.nutrition.protein', 'Protein'),\n align: 'right',\n hideOnMobile: true,\n sortValue: (row) => row.proteinG,\n render: (row) => (\n <span className=\"tabular-nums text-text-secondary\">{formatGrams(row.proteinG)}</span>\n ),\n },\n {\n key: 'carbsG',\n header: t('mybodyshield.pages.nutrition.carbs', 'Carbs'),\n align: 'right',\n hideOnMobile: true,\n sortValue: (row) => row.carbsG,\n render: (row) => (\n <span className=\"tabular-nums text-text-secondary\">{formatGrams(row.carbsG)}</span>\n ),\n },\n {\n key: 'fatG',\n header: t('mybodyshield.pages.nutrition.fat', 'Fat'),\n align: 'right',\n hideOnMobile: true,\n sortValue: (row) => row.fatG,\n render: (row) => (\n <span className=\"tabular-nums text-text-secondary\">{formatGrams(row.fatG)}</span>\n ),\n },\n {\n key: 'servings',\n header: t('mybodyshield.pages.nutrition.servingsLabel', 'Servings'),\n align: 'right',\n sortValue: (row) => row.servings,\n render: (row) => <span className=\"tabular-nums\">{formatNumber(row.servings)}</span>,\n },\n {\n key: 'loggedAt',\n header: t('mybodyshield.pages.nutrition.logged', 'Logged'),\n hideOnMobile: true,\n sortValue: (row) => new Date(row.loggedAt).getTime(),\n render: (row) => (\n <span className=\"text-text-secondary\">{formatRelativeTime(row.loggedAt)}</span>\n ),\n },\n {\n key: 'actions',\n header: '',\n align: 'right',\n render: (row) => (\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => handleDeleteMeal(row.id)}\n disabled={pendingDeleteId === row.id}\n aria-label={t('mybodyshield.pages.nutrition.deleteMeal', 'Delete meal')}\n >\n <Trash2 className=\"h-4 w-4 text-status-error-text\" />\n </Button>\n ),\n },\n ];\n\n // Per-tab header actions ---------------------------------------------------\n const actions =\n tab === 'plan' ? (\n <div className=\"flex flex-wrap items-center gap-2\">\n {plan && (\n <Button variant=\"outline\" onClick={openEditPlan}>\n <Pencil className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.editTargets', 'Edit targets')}\n </Button>\n )}\n <Button onClick={openCreatePlan}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.createPlan', 'Create plan')}\n </Button>\n </div>\n ) : (\n <Button onClick={openLogMeal}>\n <Plus className=\"mr-1.5 h-4 w-4\" /> {t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n );\n\n // -------------------------------------------------------------------------\n // Tab renderers\n // -------------------------------------------------------------------------\n\n const renderTodayTab = () => {\n if (macros.isLoading)\n return (\n <LoadingView\n label={t('mybodyshield.pages.nutrition.loadingToday', \"Loading today's nutrition…\")}\n />\n );\n if (macros.isError) {\n return (\n <ErrorView\n message={t(\n 'mybodyshield.pages.nutrition.errorToday',\n \"We couldn't load your daily macros.\"\n )}\n onRetry={() => macros.refetch()}\n />\n );\n }\n const macroData = macros.data;\n if (!macroData)\n return (\n <LoadingView\n label={t('mybodyshield.pages.nutrition.loadingToday', \"Loading today's nutrition…\")}\n />\n );\n\n const hasTarget = macroData.calorieTarget > 0;\n const hasConsumption = macroData.calories > 0 || todayMeals.length > 0;\n if (!hasTarget && !hasConsumption) {\n return (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Salad className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.nutrition.noNutritionData', 'No nutrition tracked yet')}\n description={t(\n 'mybodyshield.pages.nutrition.noNutritionDescription',\n 'Activate a nutrition plan or log your first meal to start tracking daily macros.'\n )}\n action={\n <Button onClick={openLogMeal}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n }\n />\n );\n }\n\n const caloriePct = macroData.calorieTarget\n ? (macroData.calories / macroData.calorieTarget) * 100\n : 0;\n const pctFull = Math.round(Math.max(0, Math.min(100, caloriePct)));\n const macroTiles = [\n {\n label: t('mybodyshield.pages.nutrition.protein', 'Protein'),\n value: macroData.proteinG,\n target: macroData.proteinTarget,\n color: MACRO_HUE.protein,\n },\n {\n label: t('mybodyshield.pages.nutrition.carbs', 'Carbs'),\n value: macroData.carbsG,\n target: macroData.carbsTarget,\n color: MACRO_HUE.carbs,\n },\n {\n label: t('mybodyshield.pages.nutrition.fat', 'Fat'),\n value: macroData.fatG,\n target: macroData.fatTarget,\n color: MACRO_HUE.fat,\n },\n ];\n\n return (\n <motion.div initial=\"hidden\" animate=\"show\" variants={listVariants} className=\"space-y-6\">\n {/* Hero — calorie ring + stacked macro bar + % of target ------------- */}\n <motion.div variants={itemVariants}>\n <GlassCard treatment=\"glass\" glow className=\"p-6 sm:p-7\">\n <div className=\"mb-5\">\n <h2 className=\"text-base font-semibold text-text-primary\">\n {t('mybodyshield.pages.nutrition.todaysMacros', \"Today's macros\")}\n </h2>\n <p className=\"mt-0.5 text-sm text-text-secondary\">\n {t(\n 'mybodyshield.pages.nutrition.macrosDescription',\n 'Calories & macros logged against your active plan.'\n )}\n </p>\n </div>\n <div className=\"flex flex-col items-center gap-6 sm:flex-row sm:items-center sm:gap-8\">\n <div className=\"relative flex shrink-0 items-center justify-center\">\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-3 rounded-full blur-2xl\"\n style={{\n background:\n 'radial-gradient(circle, color-mix(in srgb, var(--color-action-primary-bg) 30%, transparent), transparent 68%)',\n }}\n />\n <ProgressRing value={caloriePct} size={168} stroke={14} className=\"relative\">\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 w-full flex-1 flex-col gap-4\">\n <MacroBar\n proteinG={macroData.proteinG}\n carbsG={macroData.carbsG}\n fatG={macroData.fatG}\n height={12}\n />\n <div className=\"flex flex-col gap-4 sm:flex-row sm:items-stretch\">\n <div className=\"flex-1 space-y-2.5\">\n {macroTiles.map((tile) => (\n <div key={tile.label} className=\"flex items-center justify-between gap-3\">\n <span className=\"inline-flex items-center gap-2 text-sm text-text-secondary\">\n <span\n className=\"h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: tile.color }}\n />\n {tile.label}\n </span>\n <span className=\"text-sm font-semibold tabular-nums text-text-primary\">\n {formatGrams(tile.value)}\n </span>\n </div>\n ))}\n </div>\n <div\n className=\"flex flex-col justify-center rounded-2xl px-4 py-3 sm:min-w-[9rem]\"\n style={{\n backgroundColor:\n 'color-mix(in srgb, var(--color-action-primary-bg) 12%, transparent)',\n }}\n >\n <span className=\"text-xs font-medium text-text-tertiary\">\n {t('mybodyshield.pages.nutrition.calorieRing', 'Calorie ring')}\n </span>\n <span className=\"text-2xl font-bold tabular-nums text-action-primary-bg\">\n {pctFull}%\n </span>\n <span className=\"text-xs text-text-secondary\">\n {t('mybodyshield.pages.nutrition.ofDailyTarget', 'of daily target')}\n </span>\n </div>\n </div>\n </div>\n </div>\n </GlassCard>\n </motion.div>\n\n {/* Per-macro meter tiles -------------------------------------------- */}\n <motion.div\n variants={listVariants}\n className=\"grid grid-cols-1 gap-3 sm:grid-cols-3 sm:gap-4\"\n >\n {macroTiles.map((tile) => (\n <motion.div key={tile.label} variants={itemVariants}>\n <GlassCard treatment=\"metric\" className=\"p-4\">\n <div className=\"flex flex-wrap items-center justify-between gap-2\">\n <span className=\"inline-flex items-center gap-2 text-sm font-medium text-text-primary\">\n <span\n className=\"h-2.5 w-2.5 rounded-full\"\n style={{ backgroundColor: tile.color }}\n />\n {tile.label}\n </span>\n <span className=\"text-sm tabular-nums text-text-secondary\">\n <span className=\"font-semibold text-text-primary\">\n {formatNumber(tile.value)}\n </span>{' '}\n / {formatNumber(tile.target)} g\n </span>\n </div>\n <Meter\n value={tile.target ? (tile.value / tile.target) * 100 : 0}\n color={tile.color}\n height={8}\n className=\"mt-3\"\n />\n </GlassCard>\n </motion.div>\n ))}\n </motion.div>\n\n {/* Today's meals ---------------------------------------------------- */}\n <motion.div variants={itemVariants}>\n <Section\n title={t('mybodyshield.pages.nutrition.todaysMeals', \"Today's meals\")}\n description={t(\n 'mybodyshield.pages.nutrition.todaysMealsDescription',\n \"Everything you've logged today.\"\n )}\n >\n {todayMealsQuery.isLoading ? (\n <LoadingView\n label={t('mybodyshield.common.loadingWithName', 'Loading {{name}}…', {\n name: t('mybodyshield.pages.nutrition.meals', 'Meals'),\n })}\n />\n ) : todayMealsQuery.isError ? (\n <ErrorView\n message={t(\n 'mybodyshield.pages.nutrition.errorMeals',\n \"We couldn't load today's meals.\"\n )}\n onRetry={() => todayMealsQuery.refetch()}\n />\n ) : todayMeals.length === 0 ? (\n <EmptyState\n illustration=\"empty-data\"\n icon={<Salad className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.nutrition.noMealsToday', 'No meals logged today')}\n description={t(\n 'mybodyshield.pages.nutrition.noMealsTodayDescription',\n 'Use \"Log meal\" to record what you\\'ve eaten and keep your macros current.'\n )}\n action={\n <Button onClick={openLogMeal}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n }\n />\n ) : (\n <GlassCard treatment=\"plain\" className=\"divide-y divide-border-seam/60 px-2 sm:px-3\">\n {todayMeals.map((m) => (\n <div\n key={m.id}\n className=\"flex items-center gap-3 rounded-xl px-2 py-3 transition-colors hover:bg-bg-sunken/40\"\n >\n <StatusBadge status={m.mealType} />\n <div className=\"min-w-0 flex-1\">\n <div className=\"flex items-center gap-1.5\">\n <p className=\"truncate text-sm font-medium text-text-primary\">{m.name}</p>\n {m.isFavorite && (\n <Star\n className=\"h-3.5 w-3.5 shrink-0 fill-current text-action-primary-bg\"\n aria-label={t(\n 'mybodyshield.pages.nutrition.favoriteMeal',\n 'Favorite meal'\n )}\n />\n )}\n </div>\n <p className=\"text-xs text-text-tertiary\">\n {formatGrams(m.proteinG)}{' '}\n {t('mybodyshield.pages.nutrition.proteinShort', 'P')} ·{' '}\n {formatGrams(m.carbsG)} {t('mybodyshield.pages.nutrition.carbsShort', 'C')}{' '}\n · {formatGrams(m.fatG)} {t('mybodyshield.pages.nutrition.fatShort', 'F')} ·{' '}\n {formatNumber(m.servings)}{' '}\n {m.servings === 1\n ? t('mybodyshield.pages.nutrition.serving', 'serving')\n : t('mybodyshield.pages.nutrition.servings', 'servings')}\n </p>\n </div>\n <span className=\"shrink-0 text-sm font-semibold tabular-nums text-text-primary\">\n {formatKcal(m.calories)}\n </span>\n <Button\n variant=\"ghost\"\n size=\"icon-sm\"\n onClick={() => handleDeleteMeal(m.id)}\n disabled={pendingDeleteId === m.id}\n aria-label={t('mybodyshield.pages.nutrition.deleteMeal', 'Delete meal')}\n className=\"shrink-0\"\n >\n <Trash2 className=\"h-4 w-4 text-status-error-text\" />\n </Button>\n </div>\n ))}\n </GlassCard>\n )}\n </Section>\n </motion.div>\n </motion.div>\n );\n };\n\n const renderPlanTab = () => {\n if (activePlan.isLoading)\n return (\n <LoadingView\n label={t('mybodyshield.pages.nutrition.loadingPlan', 'Loading your nutrition plan…')}\n />\n );\n if (activePlan.isError) {\n return (\n <ErrorView\n message={t(\n 'mybodyshield.pages.nutrition.errorPlan',\n \"We couldn't load your active nutrition plan.\"\n )}\n onRetry={() => activePlan.refetch()}\n />\n );\n }\n if (!plan) {\n return (\n <EmptyState\n illustration=\"empty-data\"\n icon={<ClipboardList className=\"h-10 w-10\" />}\n title={t('mybodyshield.pages.nutrition.noActivePlan', 'No active nutrition plan')}\n description={t(\n 'mybodyshield.pages.nutrition.noActivePlanDescription',\n 'Create a nutrition plan to set your daily calorie and macro targets.'\n )}\n action={\n <Button onClick={openCreatePlan}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.createPlan', 'Create plan')}\n </Button>\n }\n />\n );\n }\n\n const planStats: { icon: ReactNode; label: string; value: string; tint: string }[] = [\n {\n icon: <Flame className=\"h-5 w-5\" />,\n label: t('mybodyshield.pages.nutrition.calorieTarget', 'Calorie target'),\n value: plan.calorieTarget ? `${formatNumber(plan.calorieTarget)} kcal` : '—',\n tint: 'var(--color-action-primary-bg)',\n },\n {\n icon: <Beef className=\"h-5 w-5\" />,\n label: t('mybodyshield.pages.nutrition.proteinTarget', 'Protein target'),\n value: plan.proteinTarget ? formatGrams(plan.proteinTarget) : '—',\n tint: MACRO_HUE.protein,\n },\n {\n icon: <Wheat className=\"h-5 w-5\" />,\n label: t('mybodyshield.pages.nutrition.carbsTarget', 'Carbs target'),\n value: plan.carbsTarget ? formatGrams(plan.carbsTarget) : '—',\n tint: MACRO_HUE.carbs,\n },\n {\n icon: <Droplet className=\"h-5 w-5\" />,\n label: t('mybodyshield.pages.nutrition.fatTarget', 'Fat target'),\n value: plan.fatTarget ? formatGrams(plan.fatTarget) : '—',\n tint: MACRO_HUE.fat,\n },\n ];\n\n return (\n <motion.div initial=\"hidden\" animate=\"show\" variants={listVariants} className=\"space-y-6\">\n {!plan.isActive && (\n <motion.div\n variants={itemVariants}\n className=\"flex flex-wrap items-center justify-between gap-3 rounded-2xl border p-4\"\n style={{\n borderColor: 'color-mix(in srgb, var(--color-action-primary-bg) 32%, transparent)',\n backgroundColor: 'color-mix(in srgb, var(--color-action-primary-bg) 8%, transparent)',\n }}\n >\n <div className=\"flex min-w-0 items-center gap-3\">\n <IconChip icon={<CheckCircle2 className=\"h-5 w-5\" />} />\n <div className=\"min-w-0\">\n <p className=\"text-sm font-medium text-text-primary\">\n {t('mybodyshield.pages.nutrition.planNotActive', \"This plan isn't active yet\")}\n </p>\n <p className=\"text-xs text-text-secondary\">\n {t(\n 'mybodyshield.pages.nutrition.planNotActiveDescription',\n \"Activate it to track today's macros against these targets.\"\n )}\n </p>\n </div>\n </div>\n <Button onClick={() => handleActivatePlan(plan.id)} disabled={activatePlan.isPending}>\n <CheckCircle2 className=\"mr-1.5 h-4 w-4\" />\n {activatePlan.isPending\n ? t('mybodyshield.common.activating', 'Activating…')\n : t('mybodyshield.common.activate', 'Activate this plan')}\n </Button>\n </motion.div>\n )}\n\n <motion.div variants={itemVariants}>\n <GlassCard treatment=\"glass\" glow className=\"relative overflow-hidden p-6 sm:p-7\">\n <div\n aria-hidden=\"true\"\n className=\"pointer-events-none absolute inset-0\"\n style={{\n background:\n 'radial-gradient(120% 120% at 0% 0%, color-mix(in srgb, var(--color-action-primary-bg) 13%, transparent), transparent 55%)',\n }}\n />\n <div className=\"relative flex flex-wrap items-start justify-between gap-4\">\n <div className=\"min-w-0\">\n <p className=\"text-xs font-semibold uppercase tracking-wide text-action-primary-bg\">\n {plan.isActive\n ? t('mybodyshield.pages.nutrition.activePlan', 'Active plan')\n : t('mybodyshield.pages.nutrition.nutritionPlan', 'Nutrition plan')}\n </p>\n <div className=\"mt-1.5 flex flex-wrap items-baseline gap-x-2 gap-y-1\">\n <h2 className=\"text-2xl font-bold text-text-primary\">{plan.name}</h2>\n {plan.calorieTarget > 0 && (\n <span className=\"text-lg font-semibold tabular-nums text-text-tertiary\">\n {formatNumber(plan.calorieTarget)} kcal\n </span>\n )}\n {plan.isActive ? (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-status-success-bg-subtle px-2.5 py-0.5 text-xs font-medium text-status-success-text\">\n <CheckCircle2 className=\"h-3.5 w-3.5\" />{' '}\n {t('mybodyshield.common.active', 'Active')}\n </span>\n ) : (\n <span className=\"inline-flex items-center gap-1 rounded-full bg-bg-sunken px-2.5 py-0.5 text-xs font-medium text-text-secondary\">\n {t('mybodyshield.common.inactive', 'Inactive')}\n </span>\n )}\n </div>\n {(plan.startDate || plan.endDate) && (\n <p className=\"mt-2 inline-flex items-center gap-1.5 text-sm text-text-secondary\">\n <Calendar className=\"h-4 w-4 text-text-tertiary\" />\n {formatDate(plan.startDate)} – {formatDate(plan.endDate)}\n </p>\n )}\n </div>\n <div className=\"flex shrink-0 items-center gap-2\">\n <span className=\"text-sm text-text-tertiary\">\n {t('mybodyshield.common.goal', 'Goal')}\n </span>\n <StatusBadge status={plan.goalType} />\n </div>\n </div>\n\n <motion.div\n variants={listVariants}\n className=\"relative mt-6 grid grid-cols-2 gap-3 sm:gap-4 lg:grid-cols-4\"\n >\n {planStats.map((s) => (\n <motion.div\n key={s.label}\n variants={itemVariants}\n className=\"rounded-2xl border border-border-seam bg-bg-sunken/40 p-4 transition-shadow duration-200 hover:shadow-elevation-2\"\n >\n <IconChip icon={s.icon} tint={s.tint} />\n <p className=\"mt-3 text-xs text-text-tertiary\">{s.label}</p>\n <p className=\"mt-1 text-xl font-bold tabular-nums text-text-primary\">{s.value}</p>\n </motion.div>\n ))}\n </motion.div>\n </GlassCard>\n </motion.div>\n\n {plan.notes && (\n <motion.div variants={itemVariants}>\n <Section title={t('mybodyshield.pages.nutrition.planNotes', 'Notes')}>\n <GlassCard treatment=\"plain\" className=\"p-4\">\n <p className=\"whitespace-pre-wrap text-sm text-text-secondary\">{plan.notes}</p>\n </GlassCard>\n </Section>\n </motion.div>\n )}\n </motion.div>\n );\n };\n\n const renderMealsTab = () => {\n if (mealsQuery.isLoading)\n return (\n <LoadingView label={t('mybodyshield.pages.nutrition.loadingMeals', 'Loading meal log…')} />\n );\n if (mealsQuery.isError) {\n return (\n <ErrorView\n message={t('mybodyshield.pages.nutrition.errorMeals', \"We couldn't load your meal log.\")}\n onRetry={() => mealsQuery.refetch()}\n />\n );\n }\n\n return (\n <motion.div initial=\"hidden\" animate=\"show\" variants={listVariants} className=\"space-y-4\">\n <motion.div variants={itemVariants}>\n <FilterTabs\n options={MEAL_FILTER_OPTIONS}\n value={mealFilter}\n onChange={onMealFilterChange}\n />\n </motion.div>\n {mealRows.length === 0 ? (\n <motion.div variants={itemVariants}>\n <EmptyState\n illustration=\"empty-data\"\n icon={<UtensilsCrossed className=\"h-10 w-10\" />}\n title={\n mealFilter === 'ALL'\n ? t('mybodyshield.pages.nutrition.emptyMealsTitle', 'No meals logged yet')\n : t(\n 'mybodyshield.pages.nutrition.emptyMealsFilteredTitle',\n 'No meals for this filter'\n )\n }\n description={\n mealFilter === 'ALL'\n ? t(\n 'mybodyshield.pages.nutrition.emptyMealsDescription',\n 'Log meals from the Today tab to build up your nutrition history.'\n )\n : t(\n 'mybodyshield.pages.nutrition.emptyMealsFilteredDescription',\n 'Try a different meal type, or log a meal to get started.'\n )\n }\n action={\n <Button onClick={openLogMeal}>\n <Plus className=\"mr-1.5 h-4 w-4\" />{' '}\n {t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n }\n />\n </motion.div>\n ) : (\n <>\n <motion.div variants={itemVariants}>\n <DataTable\n columns={mealColumns}\n rows={mealRows}\n rowKey={(row) => row.id}\n defaultSort={{ key: 'loggedAt', dir: 'desc' }}\n />\n </motion.div>\n <motion.div variants={itemVariants}>\n <Pagination\n page={pager.page}\n pageSize={PAGE_SIZE}\n itemCount={mealRows.length}\n hasMore={mealsQuery.data?.pageInfo?.hasMore ?? false}\n onPageChange={(target) => pager.onPageChange(target)}\n />\n </motion.div>\n </>\n )}\n </motion.div>\n );\n };\n\n // -------------------------------------------------------------------------\n return (\n <PageLayout\n title={t('mybodyshield.pages.nutrition.title', 'Nutrition')}\n description={t(\n 'mybodyshield.pages.nutrition.description',\n 'Plans, meal logging and daily macro targets.'\n )}\n actions={actions}\n >\n <Tabs items={TAB_ITEMS} value={tab} onChange={setTab} className=\"mb-6\" />\n\n {actionError && (\n <div className=\"mb-4 rounded-lg border border-status-error-text/40 bg-status-error-bg-subtle px-4 py-2 text-sm text-status-error-text\">\n {actionError}\n </div>\n )}\n\n {tab === 'today' && renderTodayTab()}\n {tab === 'plan' && renderPlanTab()}\n {tab === 'meals' && renderMealsTab()}\n\n {/* Log-meal dialog ---------------------------------------------------- */}\n <ResponsiveDialog open={mealOpen} onOpenChange={setMealOpen}>\n <ResponsiveDialogContent className=\"sm:max-w-lg\">\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {t('mybodyshield.pages.nutrition.logMealDialogTitle', 'Log a meal')}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {t(\n 'mybodyshield.pages.nutrition.logMealDialogDescription',\n \"Record what you ate to update today's macros.\"\n )}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-4 py-2\">\n {mealErr && (\n <div className=\"rounded-lg border border-status-error-text/40 bg-status-error-bg-subtle px-3 py-2 text-sm text-status-error-text\">\n {mealErr}\n </div>\n )}\n\n {/* BOFF-4173: Open Food Facts search + barcode lookup — fills the\n fields below; the member can still fine-tune before saving. */}\n <div className=\"space-y-2 rounded-xl border border-seam bg-surface p-3\">\n <Label htmlFor=\"meal-food-search\">\n {t('mybodyshield.pages.nutrition.foodSearchHint', 'Quick-log from food database')}\n </Label>\n <Input\n id=\"meal-food-search\"\n value={foodQuery}\n onChange={(e) => setFoodQuery(e.target.value)}\n placeholder={t(\n 'mybodyshield.pages.nutrition.foodSearchPlaceholder',\n 'Search foods (e.g. grilled chicken)'\n )}\n />\n {foodSearch.isFetching && (\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.common.loading', 'Loading…')}\n </p>\n )}\n {!foodSearch.isFetching &&\n foodQuery.trim().length >= 2 &&\n (foodSearch.data?.length ?? 0) === 0 && (\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.common.noResults', 'No matches found.')}\n </p>\n )}\n {(foodSearch.data?.length ?? 0) > 0 && (\n <ul className=\"max-h-40 space-y-1 overflow-y-auto\">\n {foodSearch.data!.map((food, i) => (\n <li key={`${food.barcode ?? food.name}-${i}`}>\n <button\n type=\"button\"\n onClick={() => applyFood(food)}\n className=\"flex w-full items-center justify-between rounded-lg px-2 py-1.5 text-left text-sm hover:bg-surface-hover\"\n >\n <span className=\"truncate\">\n {food.name}\n {food.brand ? (\n <span className=\"text-text-tertiary\"> · {food.brand}</span>\n ) : null}\n </span>\n <span className=\"ml-2 shrink-0 text-xs text-text-tertiary\">\n {t(\n 'mybodyshield.pages.nutrition.foodSearchMeta',\n '{{calories}} kcal / {{servingG}}g',\n { calories: food.calories, servingG: food.servingG }\n )}\n </span>\n </button>\n </li>\n ))}\n </ul>\n )}\n <div className=\"flex items-end gap-2 pt-1\">\n <div className=\"flex-1 space-y-1.5\">\n <Label htmlFor=\"meal-barcode\">\n {t(\n 'mybodyshield.pages.nutrition.barcodePlaceholder',\n 'Or scan/enter a barcode'\n )}\n </Label>\n <Input\n id=\"meal-barcode\"\n value={barcodeInput}\n onChange={(e) => setBarcodeInput(e.target.value)}\n placeholder={t(\n 'mybodyshield.pages.nutrition.barcodeExample',\n 'e.g. 3017620422003'\n )}\n />\n </div>\n <Button\n type=\"button\"\n variant=\"outline\"\n onClick={submitBarcodeLookup}\n disabled={barcodeLookup.isPending || !barcodeInput.trim()}\n >\n {barcodeLookup.isPending\n ? t('mybodyshield.common.loading', 'Loading…')\n : t('mybodyshield.pages.nutrition.barcodeLookup', 'Look up')}\n </Button>\n </div>\n {barcodeErr && <p className=\"text-xs text-status-error-text\">{barcodeErr}</p>}\n </div>\n\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-name\">{t('mybodyshield.common.name', 'Name')}</Label>\n <Input\n id=\"meal-name\"\n value={mealForm.name}\n onChange={(e) => setMealForm({ ...mealForm, name: e.target.value })}\n placeholder={t(\n 'mybodyshield.pages.nutrition.mealNamePlaceholder',\n 'Grilled chicken salad'\n )}\n />\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-type\">{t('mybodyshield.common.type', 'Type')}</Label>\n <Select\n value={mealForm.mealType}\n onValueChange={(v) =>\n // v is constrained to MEAL_TYPES rendered below.\n setMealForm({ ...mealForm, mealType: v as MybMealType })\n }\n >\n <SelectTrigger id=\"meal-type\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {MEAL_TYPES.map((type) => (\n <SelectItem key={type} value={type}>\n {formatEnumLabel(type)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-servings\">\n {t('mybodyshield.pages.nutrition.servingsLabel', 'Servings')}\n </Label>\n <Input\n id=\"meal-servings\"\n type=\"number\"\n min={0}\n step=\"0.5\"\n value={mealForm.servings}\n onChange={(e) => setMealForm({ ...mealForm, servings: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.servingsPlaceholder', '1')}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-calories\">\n {t('mybodyshield.pages.nutrition.calories', 'Calories')} (kcal)\n </Label>\n <Input\n id=\"meal-calories\"\n type=\"number\"\n min={0}\n value={mealForm.calories}\n onChange={(e) => setMealForm({ ...mealForm, calories: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.caloriesPlaceholder', '0')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-protein\">\n {t('mybodyshield.pages.nutrition.protein', 'Protein')} (g)\n </Label>\n <Input\n id=\"meal-protein\"\n type=\"number\"\n min={0}\n value={mealForm.proteinG}\n onChange={(e) => setMealForm({ ...mealForm, proteinG: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.proteinPlaceholder', '0')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-carbs\">\n {t('mybodyshield.pages.nutrition.carbs', 'Carbs')} (g)\n </Label>\n <Input\n id=\"meal-carbs\"\n type=\"number\"\n min={0}\n value={mealForm.carbsG}\n onChange={(e) => setMealForm({ ...mealForm, carbsG: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.carbsPlaceholder', '0')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"meal-fat\">{t('mybodyshield.pages.nutrition.fat', 'Fat')} (g)</Label>\n <Input\n id=\"meal-fat\"\n type=\"number\"\n min={0}\n value={mealForm.fatG}\n onChange={(e) => setMealForm({ ...mealForm, fatG: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.fatPlaceholder', '0')}\n />\n </div>\n </div>\n <div className=\"flex items-center justify-between gap-4 rounded-xl bg-bg-sunken/60 p-3\">\n <div className=\"min-w-0\">\n <Label htmlFor=\"meal-favorite\" className=\"cursor-pointer\">\n {t('mybodyshield.pages.nutrition.favorite', 'Favorite')}\n </Label>\n <p className=\"text-xs text-text-tertiary\">\n {t('mybodyshield.pages.nutrition.favoriteHint', 'Save for quick re-log')}\n </p>\n </div>\n <Switch\n id=\"meal-favorite\"\n checked={mealForm.isFavorite}\n onCheckedChange={(v) => setMealForm({ ...mealForm, isFavorite: v })}\n />\n </div>\n </div>\n\n <ResponsiveDialogFooter>\n <Button\n variant=\"outline\"\n onClick={() => setMealOpen(false)}\n disabled={logMeal.isPending}\n >\n {t('mybodyshield.common.cancel', 'Cancel')}\n </Button>\n <Button onClick={submitMeal} disabled={logMeal.isPending}>\n {logMeal.isPending\n ? t('mybodyshield.common.logging', 'Logging…')\n : t('mybodyshield.pages.nutrition.logMeal', 'Log meal')}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n\n {/* Create / edit plan dialog ----------------------------------------- */}\n <ResponsiveDialog open={planOpen} onOpenChange={setPlanOpen}>\n <ResponsiveDialogContent className=\"sm:max-w-lg\">\n <ResponsiveDialogHeader>\n <ResponsiveDialogTitle>\n {planMode === 'edit'\n ? t('mybodyshield.pages.nutrition.editTargetsDialogTitle', 'Edit nutrition targets')\n : t('mybodyshield.pages.nutrition.createPlanDialogTitle', 'Create nutrition plan')}\n </ResponsiveDialogTitle>\n <ResponsiveDialogDescription>\n {planMode === 'edit'\n ? t(\n 'mybodyshield.pages.nutrition.editTargetsDescription',\n 'Update your calorie and macro targets for this plan.'\n )\n : t(\n 'mybodyshield.pages.nutrition.createPlanDescription',\n 'Set your daily calorie and macro targets.'\n )}\n </ResponsiveDialogDescription>\n </ResponsiveDialogHeader>\n\n <div className=\"space-y-4 py-2\">\n {planErr && (\n <div className=\"rounded-lg border border-status-error-text/40 bg-status-error-bg-subtle px-3 py-2 text-sm text-status-error-text\">\n {planErr}\n </div>\n )}\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-name\">{t('mybodyshield.common.name', 'Name')}</Label>\n <Input\n id=\"plan-name\"\n value={planForm.name}\n onChange={(e) => setPlanForm({ ...planForm, name: e.target.value })}\n placeholder={t(\n 'mybodyshield.pages.nutrition.planNamePlaceholder',\n 'Lean bulk — Q3'\n )}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-goal\">{t('mybodyshield.common.goalType', 'Goal type')}</Label>\n <Select\n value={planForm.goalType}\n onValueChange={(v) =>\n // v is constrained to GOAL_TYPES rendered below.\n setPlanForm({ ...planForm, goalType: v as MybGoalType })\n }\n >\n <SelectTrigger id=\"plan-goal\">\n <SelectValue />\n </SelectTrigger>\n <SelectContent>\n {GOAL_TYPES.map((g) => (\n <SelectItem key={g} value={g}>\n {formatEnumLabel(g)}\n </SelectItem>\n ))}\n </SelectContent>\n </Select>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-calories\">\n {t('mybodyshield.pages.nutrition.calorieTarget', 'Calorie target')} (kcal)\n </Label>\n <Input\n id=\"plan-calories\"\n type=\"number\"\n min={0}\n value={planForm.calorieTarget}\n onChange={(e) => setPlanForm({ ...planForm, calorieTarget: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.calorieTargetPlaceholder', '2400')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-protein\">\n {t('mybodyshield.pages.nutrition.proteinTarget', 'Protein target')} (g)\n </Label>\n <Input\n id=\"plan-protein\"\n type=\"number\"\n min={0}\n value={planForm.proteinTarget}\n onChange={(e) => setPlanForm({ ...planForm, proteinTarget: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.proteinTargetPlaceholder', '180')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-carbs\">\n {t('mybodyshield.pages.nutrition.carbsTarget', 'Carbs target')} (g)\n </Label>\n <Input\n id=\"plan-carbs\"\n type=\"number\"\n min={0}\n value={planForm.carbsTarget}\n onChange={(e) => setPlanForm({ ...planForm, carbsTarget: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.carbsTargetPlaceholder', '250')}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-fat\">\n {t('mybodyshield.pages.nutrition.fatTarget', 'Fat target')} (g)\n </Label>\n <Input\n id=\"plan-fat\"\n type=\"number\"\n min={0}\n value={planForm.fatTarget}\n onChange={(e) => setPlanForm({ ...planForm, fatTarget: e.target.value })}\n placeholder={t('mybodyshield.pages.nutrition.fatTargetPlaceholder', '70')}\n />\n </div>\n </div>\n <div className=\"grid grid-cols-2 gap-3\">\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-start\">\n {t('mybodyshield.common.startDate', 'Start date')}\n </Label>\n <Input\n id=\"plan-start\"\n type=\"date\"\n value={planForm.startDate}\n onChange={(e) => setPlanForm({ ...planForm, startDate: e.target.value })}\n />\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-end\">{t('mybodyshield.common.endDate', 'End date')}</Label>\n <Input\n id=\"plan-end\"\n type=\"date\"\n value={planForm.endDate}\n onChange={(e) => setPlanForm({ ...planForm, endDate: e.target.value })}\n />\n </div>\n </div>\n <div className=\"space-y-1.5\">\n <Label htmlFor=\"plan-notes\">{t('mybodyshield.common.notes', 'Notes')}</Label>\n <Textarea\n id=\"plan-notes\"\n value={planForm.notes}\n onChange={(e) => setPlanForm({ ...planForm, notes: e.target.value })}\n placeholder={t(\n 'mybodyshield.pages.nutrition.planNotesPlaceholder',\n 'Coaching notes, refeed schedule, supplements…'\n )}\n rows={3}\n />\n </div>\n </div>\n\n <ResponsiveDialogFooter>\n <Button variant=\"outline\" onClick={() => setPlanOpen(false)} disabled={planPending}>\n {t('mybodyshield.common.cancel', 'Cancel')}\n </Button>\n <Button onClick={submitPlan} disabled={planPending}>\n {planPending\n ? t('mybodyshield.common.saving', 'Saving…')\n : planMode === 'edit'\n ? t('mybodyshield.pages.nutrition.saveTargets', 'Save targets')\n : t('mybodyshield.pages.nutrition.createPlan', 'Create plan')}\n </Button>\n </ResponsiveDialogFooter>\n </ResponsiveDialogContent>\n </ResponsiveDialog>\n </PageLayout>\n );\n}\n"],"mappings":"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"}
|
|
@@ -6,5 +6,5 @@
|
|
|
6
6
|
* transition controls (activate / complete / archive) and dialogs to add
|
|
7
7
|
* workouts and exercises. All data & mutations hit the real `myb*` contract.
|
|
8
8
|
*/
|
|
9
|
-
export declare function ProgramDetailPage(): import(
|
|
9
|
+
export declare function ProgramDetailPage(): import('react').JSX.Element;
|
|
10
10
|
//# sourceMappingURL=ProgramDetailPage.d.ts.map
|