svelte-animated-icons
Version:
A collection of animated SVG icons for Svelte with customizable draw transitions, events, and accessibility features. Each icon supports hover/click animations, customizable colors, sizes, and stroke widths.
117 lines (86 loc) • 3.19 kB
Markdown
# Svelte Animated Icons
A collection of animated SVG icons for Svelte with customizable draw transitions, events, and accessibility features. Each icon supports hover/click animations, customizable colors, sizes, and stroke widths.
## Features
- 🎨 Customizable colors, sizes, and stroke widths
- ✨ Animated draw transitions on hover or click
- ♿ Built-in accessibility features
- 🎯 TypeScript support
- 🔄 Configurable animation timing
- 🎮 Multiple event trigger options
## Installation
```bash
pnpm i -D svelte-animated-icons
```
## Usage
```svelte
<script>
import { ArrowDown } from 'svelte-animated-icons';
</script>
<ArrowDown />
```
### With Custom Properties
```svelte
<script>
import { ArrowDown } from 'svelte-animated-icons';
</script>
<ArrowDown
size={32}
color="#ff0000"
strokeWidth={2}
event="onclick"
pauseDuration={300}
transitionParams={{
duration: 800,
delay: 0
}}
/>
```
## Props
| Prop | Type | Default | Description |
| ---------------- | --------------------------- | --------------------------- | -------------------------------------- |
| size | number | 24 | Icon size in pixels |
| color | string | 'currentColor' | Icon color (any valid CSS color) |
| strokeWidth | number | 1.5 | Width of the icon strokes |
| event | 'onmouseenter' \| 'onclick' | 'onmouseenter' | Event that triggers the animation |
| pauseDuration | number | 300 | Pause duration between animations (ms) |
| transitionParams | object | { duration: 800, delay: 0 } | Svelte transition parameters |
| title | object | - | SVG title for accessibility |
| desc | object | - | SVG description for accessibility |
| ariaLabel | string | - | Aria label for the icon |
### Title and Description Props
```svelte
<ArrowDown
title={{
id: 'ArrowDown-title',
title: 'ArrowDown Icon'
}}
desc={{
id: 'ArrowDown-desc',
desc: 'A ArrowDown icon that animates on hover'
}}
/>
```
## Accessibility
All icons include proper ARIA attributes and support custom titles and descriptions. They are keyboard accessible when used with click events.
## Browser Support
Works in all modern browsers that support SVG and CSS animations.
## Development
### Setup
```bash
git clone git@github.com:shinokada/svelte-animated-icons.git
cd svelte-animated-icons
pnpm install
```
### Running Tests
```bash
pnpm test:e2e
pnpm test
```
### Building
```bash
pnpm build
```
## Contributing
Contributions are welcome! Please read our contributing guidelines before submitting a pull request.
## License
MIT License - see the [LICENSE](LICENSE) file for details.