diff --git a/apps/docs/src/components/Logo.tsx b/apps/docs/src/components/Logo.tsx index 870f63c..2b94edb 100644 --- a/apps/docs/src/components/Logo.tsx +++ b/apps/docs/src/components/Logo.tsx @@ -1,7 +1,7 @@ 'use client' import React from 'react' -import { motion } from 'framer-motion' +import { motion } from 'motion/react' const Logo = ({ height }: React.ComponentProps<'svg'>) => { return ( diff --git a/apps/docs/src/views/icon.tsx b/apps/docs/src/views/icon.tsx index 4afcc3d..27e4b43 100644 --- a/apps/docs/src/views/icon.tsx +++ b/apps/docs/src/views/icon.tsx @@ -6,7 +6,7 @@ import { RefObject, useEffect, useRef, useState, useTransition } from 'react' import DocPreview from '@/components/DocPreview' import icons from './icons.json' import { toast } from 'sonner' -import { useInView } from 'framer-motion' +import { useInView } from 'motion/react' const IconWrapper = ({ children, diff --git a/packages/actify/package.json b/packages/actify/package.json index 7282d11..5fa32cc 100644 --- a/packages/actify/package.json +++ b/packages/actify/package.json @@ -58,8 +58,7 @@ "clsx": "^2.1.1", "date-fns": "^4.1.0", "es-toolkit": "^1.29.0", - "motion": "12.0.0-alpha.2", - "popmotion": "^11.0.5", + "motion": "^11.14.4", "react-aria": "^3.36.0", "react-aria-components": "^1.5.0", "react-stately": "^3.34.0" diff --git a/packages/actify/rollup.config.mjs b/packages/actify/rollup.config.mjs index 78ddc84..c9b1333 100644 --- a/packages/actify/rollup.config.mjs +++ b/packages/actify/rollup.config.mjs @@ -46,11 +46,10 @@ export default [ external: [ 'clsx', 'react', + 'motion', 'tslib', 'date-fns', 'react-dom', - 'popmotion', - 'framer-motion', '@babel/runtime' ], plugins: [ diff --git a/packages/actify/src/components/Carousel/CarouselContent.tsx b/packages/actify/src/components/Carousel/CarouselContent.tsx index 1ee0ca5..246a024 100644 --- a/packages/actify/src/components/Carousel/CarouselContent.tsx +++ b/packages/actify/src/components/Carousel/CarouselContent.tsx @@ -1,10 +1,9 @@ 'use client' -import { AnimatePresence, motion } from 'framer-motion' +import { AnimatePresence, motion, wrap } from 'motion/react' import React, { Children, isValidElement, useEffect } from 'react' import { useCarousel } from './CarouselContext' -import { wrap } from 'popmotion' const variants = { enter: (direction: number) => { @@ -51,7 +50,6 @@ const CarouselContent = ({ children }: React.ComponentProps<'div'>) => { {Children.map(children, (child, index) => { if (isValidElement(child)) { - // @ts-expect-error const MotionComponent = motion(child.type) if (current == index) { return ( diff --git a/packages/actify/src/components/Field/Field.tsx b/packages/actify/src/components/Field/Field.tsx index 0f7c54f..1bde480 100644 --- a/packages/actify/src/components/Field/Field.tsx +++ b/packages/actify/src/components/Field/Field.tsx @@ -1,5 +1,5 @@ import { SupportingText, SupportingTextProps } from './SupportingText' -import { cubicBezier, motion } from 'framer-motion' +import { cubicBezier, motion } from 'motion/react' import React from 'react' import clsx from 'clsx' diff --git a/packages/actify/src/components/Lists/List.tsx b/packages/actify/src/components/Lists/List.tsx index 3d340ca..37a8ff3 100644 --- a/packages/actify/src/components/Lists/List.tsx +++ b/packages/actify/src/components/Lists/List.tsx @@ -3,7 +3,7 @@ import React, { useId } from 'react' import { ListContext } from './ListContext' -import { Transition } from 'framer-motion' +import { Transition } from 'motion/react' import clsx from 'clsx' import styles from './list.module.css' diff --git a/packages/actify/src/components/Lists/ListContext.tsx b/packages/actify/src/components/Lists/ListContext.tsx index 2e850f8..bd9d415 100644 --- a/packages/actify/src/components/Lists/ListContext.tsx +++ b/packages/actify/src/components/Lists/ListContext.tsx @@ -1,6 +1,6 @@ 'use client' -import { Transition } from 'framer-motion' +import { Transition } from 'motion/react' import { createContext } from 'react' const ListContext = createContext({ diff --git a/packages/actify/src/components/Lists/ListGroup.tsx b/packages/actify/src/components/Lists/ListGroup.tsx index 48fbc96..0c06bbe 100644 --- a/packages/actify/src/components/Lists/ListGroup.tsx +++ b/packages/actify/src/components/Lists/ListGroup.tsx @@ -11,7 +11,7 @@ import React, { import { Icon } from './../Icon' import { ListContext } from './ListContext' import clsx from 'clsx' -import { motion } from 'framer-motion' +import { motion } from 'motion/react' import styles from './list-group.module.css' interface ListItemProps extends React.ComponentProps<'li'> { diff --git a/packages/actify/src/components/Lists/ListItem.tsx b/packages/actify/src/components/Lists/ListItem.tsx index 6c35a4b..b745143 100644 --- a/packages/actify/src/components/Lists/ListItem.tsx +++ b/packages/actify/src/components/Lists/ListItem.tsx @@ -5,7 +5,7 @@ import React, { useContext, useId, useMemo, useState } from 'react' import { ListContext } from './ListContext' import { Ripple } from './../Ripple' import clsx from 'clsx' -import { motion } from 'framer-motion' +import { motion } from 'motion/react' import styles from './list-item.module.css' interface ListItemProps extends React.ComponentProps<'li'> { diff --git a/packages/actify/src/components/Menus/MenuPopover.tsx b/packages/actify/src/components/Menus/MenuPopover.tsx index c75bb65..80d2e58 100644 --- a/packages/actify/src/components/Menus/MenuPopover.tsx +++ b/packages/actify/src/components/Menus/MenuPopover.tsx @@ -8,7 +8,7 @@ import { } from 'react-aria-components' import React from 'react' -import { motion } from 'framer-motion' +import { motion } from 'motion/react' import styles from './menu-popover.module.css' export interface PopoverProps extends Omit { diff --git a/packages/actify/src/components/NavigationDrawer/DrawerContent.tsx b/packages/actify/src/components/NavigationDrawer/DrawerContent.tsx index d26eaff..be15c0c 100644 --- a/packages/actify/src/components/NavigationDrawer/DrawerContent.tsx +++ b/packages/actify/src/components/NavigationDrawer/DrawerContent.tsx @@ -1,6 +1,6 @@ 'use client' -import { AnimatePresence, motion } from 'framer-motion' +import { AnimatePresence, motion } from 'motion/react' import React, { useEffect, useState } from 'react' import clsx from 'clsx' diff --git a/packages/actify/src/components/Tooltips/TooltipGroup.tsx b/packages/actify/src/components/Tooltips/TooltipGroup.tsx index a611bff..8c54c9d 100644 --- a/packages/actify/src/components/Tooltips/TooltipGroup.tsx +++ b/packages/actify/src/components/Tooltips/TooltipGroup.tsx @@ -2,7 +2,7 @@ import { createContext, useId } from 'react' -import { LayoutGroup } from 'framer-motion' +import { LayoutGroup } from 'motion/react' import { Placement } from 'react-aria' export const TooltipGroupContext = createContext<{ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 4edaa5d..03d02b1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -139,11 +139,8 @@ importers: specifier: ^1.29.0 version: 1.29.0 motion: - specifier: 12.0.0-alpha.2 - version: 12.0.0-alpha.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - popmotion: - specifier: ^11.0.5 - version: 11.0.5 + specifier: ^11.14.4 + version: 11.14.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) react-aria: specifier: ^3.36.0 version: 3.36.0(react-dom@19.0.0(react@19.0.0))(react@19.0.0) @@ -2191,12 +2188,12 @@ packages: resolution: {integrity: sha512-Ld2g8rrAyMYFXBhEqMz8ZAHBi4J4uS1i/CxGMDnjyFWddMXLVcDp051DZfu+t7+ab7Wv6SMqpWmyFIj5UbfFvg==} engines: {node: '>=14'} - framer-motion@12.0.0-alpha.2: - resolution: {integrity: sha512-s603YLhCoX3GKaPDZnywwoFdd1T6gDFCfevVRek+TCpbvazUkITh+YZ3a6kqTvn4Aj7qQWT3vAmzWIjl/LsCFA==} + framer-motion@11.14.4: + resolution: {integrity: sha512-NQuzr9JbeJDMQmy0FFLhLzk9h1kAjVC1tGE/HY4ubF02B95EBm2lpA21LE3Od/OpXqXgp0zl5Hdqu25hliBRsA==} peerDependencies: '@emotion/is-prop-valid': '*' - react: ^19.0.0-rc.1 - react-dom: ^19.0.0-rc.1 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/is-prop-valid': optional: true @@ -2205,9 +2202,6 @@ packages: react-dom: optional: true - framesync@6.1.2: - resolution: {integrity: sha512-jBTqhX6KaQVDyus8muwZbBeGGP0XgujBRbQ7gM7BRdS3CadCZIHiawyzYLnafYcvZIh5j8WE7cxZKFn7dXhu9g==} - from2@2.3.0: resolution: {integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==} @@ -2377,9 +2371,6 @@ packages: hastscript@9.0.0: resolution: {integrity: sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==} - hey-listen@1.0.8: - resolution: {integrity: sha512-COpmrF2NOg4TBWUJ5UVyaCU2A88wEMkUPK4hNqyCkqHbxT92BbvfjoSozkAIIm6XhicGlJHhFdullInrdhwU8Q==} - homedir-polyfill@1.0.3: resolution: {integrity: sha512-eSmmWE5bZTK2Nou4g0AI3zZ9rswp7GRKoKXS1BLUkvPviOqs4YTN1djQIqrXy9k5gEtdLPy86JjRwsNM9tnDcA==} engines: {node: '>=0.10.0'} @@ -2933,12 +2924,18 @@ packages: resolution: {integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==} hasBin: true - motion@12.0.0-alpha.2: - resolution: {integrity: sha512-pslRUURjyS1Xb6lSdyc4LzOKhaCRj0PIqstb5dDIB/RxNO3MqSMU43o1rGtZs5h8DgRzRSPHE+E7yhh2NpwI8A==} + motion-dom@11.14.3: + resolution: {integrity: sha512-lW+D2wBy5vxLJi6aCP0xyxTxlTfiu+b+zcpVbGVFUxotwThqhdpPRSmX8xztAgtZMPMeU0WGVn/k1w4I+TbPqA==} + + motion-utils@11.14.3: + resolution: {integrity: sha512-Xg+8xnqIJTpr0L/cidfTTBFkvRw26ZtGGuIhA94J9PQ2p4mEa06Xx7QVYZH0BP+EpMSaDlu+q0I0mmvwADPsaQ==} + + motion@11.14.4: + resolution: {integrity: sha512-ZIaw6ko88B8rSmBEFzqbTCQMbo9xMu8f4PSXSGdb9DTDy8R0sXcbwMEKmTEYkrj9TmZ4n+Ebd0KYjtqHgzRkRQ==} peerDependencies: '@emotion/is-prop-valid': '*' - react: ^19.0.0-rc.1 - react-dom: ^19.0.0-rc.1 + react: ^18.0.0 || ^19.0.0 + react-dom: ^18.0.0 || ^19.0.0 peerDependenciesMeta: '@emotion/is-prop-valid': optional: true @@ -3241,9 +3238,6 @@ packages: resolution: {integrity: sha512-B7+VDyb8Tl6oMJT9oSO2CW8XC/T4UcJGrwOVoNGwOQsQYhlpfajmrMj5xeejqaASq3V/EqThyOeATEOMuSEXiA==} engines: {node: '>=12'} - popmotion@11.0.5: - resolution: {integrity: sha512-la8gPM1WYeFznb/JqF4GiTkRRPZsfaj2+kCxqQgr2MJylMmIKUwBfWW8Wa5fml/8gmtlD5yI01MP1QCZPWmppA==} - postcss-calc@8.2.4: resolution: {integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==} peerDependencies: @@ -3991,9 +3985,6 @@ packages: style-to-object@1.0.8: resolution: {integrity: sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==} - style-value-types@5.1.2: - resolution: {integrity: sha512-Vs9fNreYF9j6W2VvuDTP7kepALi7sk0xtk2Tu8Yxi9UoajJdEVpNpCov0HsLTqXvNGKX+Uv09pkozVITi1jf3Q==} - styled-jsx@5.1.6: resolution: {integrity: sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==} engines: {node: '>= 12.0.0'} @@ -4129,9 +4120,6 @@ packages: tslib@1.14.1: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} - tslib@2.4.0: - resolution: {integrity: sha512-d6xOpEDfsi2CZVlPQzGeux8XMwLT9hssAsaPYExaQMuYskwb+x1x7J371tWlbBdWHroy99KnVB6qIkUbs5X3UQ==} - tslib@2.7.0: resolution: {integrity: sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==} @@ -4615,7 +4603,7 @@ snapshots: '@emnapi/runtime@1.2.0': dependencies: - tslib: 2.7.0 + tslib: 2.8.1 optional: true '@eslint-community/eslint-utils@4.4.0(eslint@9.13.0(jiti@1.21.6))': @@ -4661,26 +4649,26 @@ snapshots: dependencies: '@formatjs/fast-memoize': 2.2.3 '@formatjs/intl-localematcher': 0.5.8 - tslib: 2.7.0 + tslib: 2.8.1 '@formatjs/fast-memoize@2.2.3': dependencies: - tslib: 2.7.0 + tslib: 2.8.1 '@formatjs/icu-messageformat-parser@2.9.4': dependencies: '@formatjs/ecma402-abstract': 2.2.4 '@formatjs/icu-skeleton-parser': 1.8.8 - tslib: 2.7.0 + tslib: 2.8.1 '@formatjs/icu-skeleton-parser@1.8.8': dependencies: '@formatjs/ecma402-abstract': 2.2.4 - tslib: 2.7.0 + tslib: 2.8.1 '@formatjs/intl-localematcher@0.5.8': dependencies: - tslib: 2.7.0 + tslib: 2.8.1 '@humanfs/core@0.19.1': {} @@ -6916,17 +6904,15 @@ snapshots: cross-spawn: 7.0.3 signal-exit: 4.1.0 - framer-motion@12.0.0-alpha.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + framer-motion@11.14.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - tslib: 2.7.0 + motion-dom: 11.14.3 + motion-utils: 11.14.3 + tslib: 2.8.1 optionalDependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) - framesync@6.1.2: - dependencies: - tslib: 2.4.0 - from2@2.3.0: dependencies: inherits: 2.0.4 @@ -7191,8 +7177,6 @@ snapshots: property-information: 6.5.0 space-separated-tokens: 2.0.2 - hey-listen@1.0.8: {} - homedir-polyfill@1.0.3: dependencies: parse-passwd: 1.0.0 @@ -7298,7 +7282,7 @@ snapshots: '@formatjs/ecma402-abstract': 2.2.4 '@formatjs/fast-memoize': 2.2.3 '@formatjs/icu-messageformat-parser': 2.9.4 - tslib: 2.7.0 + tslib: 2.8.1 ip@1.1.9: {} @@ -7929,10 +7913,14 @@ snapshots: dependencies: minimist: 1.2.8 - motion@12.0.0-alpha.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0): + motion-dom@11.14.3: {} + + motion-utils@11.14.3: {} + + motion@11.14.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0): dependencies: - framer-motion: 12.0.0-alpha.2(react-dom@19.0.0(react@19.0.0))(react@19.0.0) - tslib: 2.7.0 + framer-motion: 11.14.4(react-dom@19.0.0(react@19.0.0))(react@19.0.0) + tslib: 2.8.1 optionalDependencies: react: 19.0.0 react-dom: 19.0.0(react@19.0.0) @@ -8242,13 +8230,6 @@ snapshots: dependencies: queue-lit: 1.5.2 - popmotion@11.0.5: - dependencies: - framesync: 6.1.2 - hey-listen: 1.0.8 - style-value-types: 5.1.2 - tslib: 2.4.0 - postcss-calc@8.2.4(postcss@8.4.41): dependencies: postcss: 8.4.41 @@ -9137,11 +9118,6 @@ snapshots: dependencies: inline-style-parser: 0.2.4 - style-value-types@5.1.2: - dependencies: - hey-listen: 1.0.8 - tslib: 2.4.0 - styled-jsx@5.1.6(react@19.0.0): dependencies: client-only: 0.0.1 @@ -9301,8 +9277,6 @@ snapshots: tslib@1.14.1: {} - tslib@2.4.0: {} - tslib@2.7.0: {} tslib@2.8.1: {}