diff --git a/package-lock.json b/package-lock.json index f63e2af..a71b9d4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -25,6 +25,7 @@ "framer-motion": "10.16.4", "howler": "2.2.4", "js-confetti": "0.12.0", + "motion": "12.23.12", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hotkeys-hook": "3.2.1", @@ -20732,6 +20733,74 @@ "node": ">=0.10.0" } }, + "node_modules/motion": { + "version": "12.23.12", + "resolved": "https://registry.npmjs.org/motion/-/motion-12.23.12.tgz", + "integrity": "sha512-8jCD8uW5GD1csOoqh1WhH1A6j5APHVE15nuBkFeRiMzYBdRwyAHmSP/oXSuW0WJPZRXTFdBoG4hY9TFWNhhwng==", + "license": "MIT", + "dependencies": { + "framer-motion": "^12.23.12", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/motion-dom": { + "version": "12.23.12", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.23.12.tgz", + "integrity": "sha512-RcR4fvMCTESQBD/uKQe49D5RUeDOokkGRmz4ceaJKDBgHYtZtntC/s2vLvY38gqGaytinij/yi3hMcWVcEF5Kw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.23.6" + } + }, + "node_modules/motion-utils": { + "version": "12.23.6", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.23.6.tgz", + "integrity": "sha512-eAWoPgr4eFEOFfg2WjIsMoqJTW6Z8MTUCgn/GZ3VRpClWBdnbjryiA3ZSNLyxCTmCQx4RmYX6jX1iWHbenUPNQ==", + "license": "MIT" + }, + "node_modules/motion/node_modules/framer-motion": { + "version": "12.23.12", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.23.12.tgz", + "integrity": "sha512-6e78rdVtnBvlEVgu6eFEAgG9v3wLnYEboM8I5O5EXvfKC8gxGQB8wXJdhkMy10iVcn05jl6CNw7/HTsTCfwcWg==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.23.12", + "motion-utils": "^12.23.6", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/mrmime": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.0.tgz", diff --git a/package.json b/package.json index f68f5f4..7f6e7ae 100644 --- a/package.json +++ b/package.json @@ -41,6 +41,7 @@ "framer-motion": "10.16.4", "howler": "2.2.4", "js-confetti": "0.12.0", + "motion": "12.23.12", "react": "^18.2.0", "react-dom": "^18.2.0", "react-hotkeys-hook": "3.2.1", diff --git a/src/components/buttons/unselect/unselect.tsx b/src/components/buttons/unselect/unselect.tsx index 8934128..978d02b 100644 --- a/src/components/buttons/unselect/unselect.tsx +++ b/src/components/buttons/unselect/unselect.tsx @@ -1,6 +1,6 @@ import { useCallback } from 'react'; import { BiUndo, BiTrash } from 'react-icons/bi/index'; -import { AnimatePresence, motion } from 'framer-motion'; +import { AnimatePresence, motion } from 'motion/react'; import { useHotkeys } from 'react-hotkeys-hook'; import { Tooltip } from '@/components/tooltip'; diff --git a/src/components/categories/categories.tsx b/src/components/categories/categories.tsx index ffe4173..8e2f558 100644 --- a/src/components/categories/categories.tsx +++ b/src/components/categories/categories.tsx @@ -1,4 +1,4 @@ -import { AnimatePresence } from 'framer-motion'; +import { AnimatePresence } from 'motion/react'; import { Category } from './category'; import { Donate } from './donate'; diff --git a/src/components/modal/modal.tsx b/src/components/modal/modal.tsx index c4cf8b5..311915f 100644 --- a/src/components/modal/modal.tsx +++ b/src/components/modal/modal.tsx @@ -1,5 +1,5 @@ import { useEffect } from 'react'; -import { AnimatePresence, motion } from 'framer-motion'; +import { AnimatePresence, motion } from 'motion/react'; import { IoClose } from 'react-icons/io5/index'; import FocusTrap from 'focus-trap-react'; diff --git a/src/components/modals/breathing/exercise/exercise.tsx b/src/components/modals/breathing/exercise/exercise.tsx index 3920b27..9ecd8b4 100644 --- a/src/components/modals/breathing/exercise/exercise.tsx +++ b/src/components/modals/breathing/exercise/exercise.tsx @@ -1,5 +1,5 @@ import { useState, useEffect, useMemo, useCallback } from 'react'; -import { motion } from 'framer-motion'; +import { motion } from 'motion/react'; import { padNumber } from '@/helpers/number'; diff --git a/src/components/snackbar/snackbar.tsx b/src/components/snackbar/snackbar.tsx index 819623e..c48e952 100644 --- a/src/components/snackbar/snackbar.tsx +++ b/src/components/snackbar/snackbar.tsx @@ -1,4 +1,4 @@ -import { motion } from 'framer-motion'; +import { motion } from 'motion/react'; import { mix, fade, slideY } from '@/lib/motion'; diff --git a/src/components/sounds/sound/favorite/favorite.tsx b/src/components/sounds/sound/favorite/favorite.tsx index 580bb72..6eabd1d 100644 --- a/src/components/sounds/sound/favorite/favorite.tsx +++ b/src/components/sounds/sound/favorite/favorite.tsx @@ -1,5 +1,5 @@ import { BiHeart, BiSolidHeart } from 'react-icons/bi/index'; -import { AnimatePresence, motion } from 'framer-motion'; +import { AnimatePresence, motion } from 'motion/react'; import { useSoundStore } from '@/stores/sound'; import { cn } from '@/helpers/styles'; diff --git a/src/components/sounds/sounds.tsx b/src/components/sounds/sounds.tsx index b32baac..3274899 100644 --- a/src/components/sounds/sounds.tsx +++ b/src/components/sounds/sounds.tsx @@ -1,5 +1,5 @@ import { useState, useMemo, useCallback, useRef, useEffect } from 'react'; -import { AnimatePresence, motion } from 'framer-motion'; +import { AnimatePresence, motion } from 'motion/react'; import { Sound } from './sound'; import { useLocalStorage } from '@/hooks/use-local-storage'; diff --git a/src/components/toolbar/menu/menu.tsx b/src/components/toolbar/menu/menu.tsx index a04b596..33d8f51 100644 --- a/src/components/toolbar/menu/menu.tsx +++ b/src/components/toolbar/menu/menu.tsx @@ -2,7 +2,7 @@ import { useState, useMemo, useCallback } from 'react'; import { IoMenu, IoClose } from 'react-icons/io5/index'; import * as DropdownMenu from '@radix-ui/react-dropdown-menu'; import { useHotkeys } from 'react-hotkeys-hook'; -import { AnimatePresence, motion } from 'framer-motion'; +import { AnimatePresence, motion } from 'motion/react'; import { ShuffleItem, diff --git a/src/components/toolbar/scroll-to-top/scroll-to-top.tsx b/src/components/toolbar/scroll-to-top/scroll-to-top.tsx index 4757f90..0aec2ee 100644 --- a/src/components/toolbar/scroll-to-top/scroll-to-top.tsx +++ b/src/components/toolbar/scroll-to-top/scroll-to-top.tsx @@ -1,6 +1,6 @@ import { useState, useEffect } from 'react'; import { BiUpArrowAlt } from 'react-icons/bi/index'; -import { motion, AnimatePresence } from 'framer-motion'; +import { motion } from 'motion/react'; import { mix, fade, slideY } from '@/lib/motion'; @@ -30,22 +30,20 @@ export function ScrollToTop() { const variants = mix(fade(), slideY(10, 0)); return ( - - {isVisible ? ( - - - - ) : ( -
- )} - + + + ); } diff --git a/src/components/tooltip/tooltip.tsx b/src/components/tooltip/tooltip.tsx index a7e88b7..7b9e25f 100644 --- a/src/components/tooltip/tooltip.tsx +++ b/src/components/tooltip/tooltip.tsx @@ -1,5 +1,5 @@ import { useState } from 'react'; -import { motion, AnimatePresence } from 'framer-motion'; +import { motion, AnimatePresence } from 'motion/react'; import * as TooltipPrimitive from '@radix-ui/react-tooltip'; import { slideX, slideY, mix, fade } from '@/lib/motion'; diff --git a/src/contexts/snackbar.tsx b/src/contexts/snackbar.tsx index 886c8c9..4e9117d 100644 --- a/src/contexts/snackbar.tsx +++ b/src/contexts/snackbar.tsx @@ -5,7 +5,7 @@ import { useRef, useContext, } from 'react'; -import { AnimatePresence } from 'framer-motion'; +import { AnimatePresence } from 'motion/react'; import { Snackbar } from '@/components/snackbar';