---
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/)