--- title: Icons description: Lucide Icons animated with Motion. alpha: true --- import { CodeTabs } from '@/registry/components/code-tabs'; import { Icons } from '@/components/docs/icons'; import { ArrowRight } from '@/registry/icons/arrow-right'; import { IconShowcase } from '@/components/docs/icon-showcase'; We animated [Lucide Icons](https://lucide.dev) with [Motion](https://motion.dev), one of the most popular icon libraries on the web. ## Installation You need to install the icon wrapper components to use the animated icons. ## Icons ## Usage ### Install an icon ### How to use an icon Each icon has at least 3 animations: - `path`: an animation of the pathLength from 0 to 1 - `path-loop`: pathLength animation from 1 to 0 to 1 - `default`: the default animation, customized for each icon You can use the `animation` prop to select the animation. ```tsx ``` Some icons also have other animations created specifically for them.
Animations ending with `-loop` are animations that start at the initial state, do the animation and return to the initial state.
### Trigger animation by parent element You can use the `AnimateIcon` component to manage child icon animations. ```tsx
``` You can choose the animation on the `AnimateIcon` component. ```tsx
``` But you can also specify it directly on the icon, which will be given priority. ```tsx
``` ### Props void;', required: false, default: 'undefined', }, onAnimateStart: { description: 'The callback function to call when the animation starts', type: '() => void', required: false, default: 'undefined', }, onAnimateEnd: { description: 'The callback function to call when the animation ends', type: '() => void', required: false, default: 'undefined', }, animate: { description: 'Whether to animate the icon. You can also specify the animation to use.', type: 'boolean | string', required: false, default: 'false', }, animateOnHover: { description: 'Whether to animate the icon on hover. You can also specify the animation to use.', type: 'boolean | string', required: false, default: 'false', }, animateOnTap: { description: 'Whether to animate the icon on tap. You can also specify the animation to use.', type: 'boolean | string', required: false, default: 'false', }, animation: { description: 'The animation to use', type: 'string', required: true, }, loop: { description: 'Whether to loop the animation', type: 'boolean', required: false, default: 'false', }, loopDelay: { description: 'The delay before looping the animation', type: 'number', required: false, default: '0', }, }} /> ## Credits We use the [Lucide Icons](https://lucide.dev) library to create the icons and [Motion](https://motion.dev) to animate them. We took our inspiration from: - [Iconly](https://iconly.pro/) - [Lordicon](https://lordicon.com/) - [Flaticon](https://www.flaticon.com/) - [pqoqubbw/icons](https://icons.pqoqubbw.dev/)