Meticulously crafted animated SVG icons built for modern React and Next.js applications.
Void Icons is a collection of high-quality, lightweight, and performant animated icons. Built on top of the incredible Lucide foundation and powered by Motion (formerly Framer Motion), these icons are designed to add personality and delight to your user interface with minimal effort.
- 🚀 Drop-in Ready: Use them like any other React component. No complex configuration required.
- ⚡ Performant SVG: Inline SVGs optimized for the web—no external requests or layout shifts.
- 🎨 Fully Customizable: Easily control size, color, stroke width, and animation states via props or Tailwind CSS.
- 🌀 Motion Powered: Smooth, physics-based animations that feel alive and responsive.
- 🛠️ Developer Friendly: Written in TypeScript with full IntelliSense support.
Currently, Void Icons is in its early stages. You can clone this repository to use the icons in your project:
git clone https://github.com/villAsh/void-icons.gitRun the documentation site locally:
pnpm install
pnpm devOpen http://localhost:3000 to browse the icon set.
Import the icon you need and use it in your React component:
import StarIcon from "@/icons/star";
export default function App() {
return (
<div className="p-4">
<StarIcon
size={24}
strokeWidth={2}
className="text-blue-500"
/>
</div>
);
}All icons accept standard SVG attributes along with:
| Prop | Type | Default | Description |
|---|---|---|---|
size |
number |
24 |
Width and height of the icon. |
strokeWidth |
number |
2 |
Thickness of the icon strokes. |
className |
string |
"" |
Additional CSS classes (compatible with Tailwind). |
/
├── src/
│ ├── app/ # Next.js App Router (Docs & Showcase)
│ ├── components/ # UI components for the documentation site
│ ├── icons/ # ⬅️ The Icon Library (Animated SVG components)
│ ├── lib/ # Utility functions and icon collections
│ └── styles/ # Global styles and Tailwind configuration
├── public/ # Static assets
└── package.json # Dependencies and scripts
We welcome contributions! Whether it's adding a new icon or improving an existing one, follow these steps:
- Select a Base: Find the SVG path from Lucide Icons.
- Create File: Create a new
.tsxfile insrc/icons/(e.g.,src/icons/my-new-icon.tsx). - Implement Animation: Use
motion/reactto animate paths, groups, or the entire SVG. - Export & Register:
- Export the component as default.
- Register it in
src/lib/collections.tsto show it on the showcase page.
- Subtle & Smooth: Avoid jarring animations. Use
easeInOutor elastic transitions. - Micro-interactions: Most icons should animate
whileHover. - Consistency: Use the
IconPropsinterface and standardvariantspattern.
Example pattern:
const pathVariants: Variants = {
initial: { pathLength: 1, opacity: 1 },
hover: {
pathLength: [1, 0.8, 1],
transition: { duration: 0.5 }
},
};This project is licensed under the MIT License. See the LICENSE file for details.
Lucide Icons
Void Icons are built by deriving the base SVG paths from the incredible Lucide open-source icon library. Lucide Icons are licensed under the ISC License. Their original license and copyright notices are included in the LICENSE file of this repository. We are incredibly grateful for their work in creating such a robust and beautiful icon foundation.