@solar-icons/vue
The versatile, all-in-one package for using Solar Icons in Vue, with support for dynamic styles and global configuration.
The @solar-icons/vue package is the most flexible and feature-rich way to use Solar Icons in a Vue application. It's designed for ease of use and supports dynamic style changes, global configuration, and works seamlessly with Vue 3 and Nuxt.
npm install @solar-icons/vueKey Features
- Dynamic Weights: Change the icon style on the fly using the
weightprop - Global Configuration: Use the
SolarProviderto set default styles for all icons - Tree-Shakable: Only the icons you import will be included in your final bundle
- Vue 3 Support: Built specifically for Vue 3 with Composition API support
- Nuxt Compatible: Works with Nuxt 3 (though dedicated
@solar-icons/nuxtpackage recommended for deeper integration) - TypeScript Ready: Comes with full TypeScript support
Usage
Import any icon and use it as a standard Vue component:
<template>
<div>
<Home weight="Bold" color="purple" :size="32" />
</div>
</template>
<script setup>
import { Home } from '@solar-icons/vue'
</script>Component Props
Each icon component accepts the following props, in addition to all standard SVG attributes like class and @click.
| Prop | Type | Default | Description |
|---|---|---|---|
color | string | currentColor | Sets the icon's color. Inherits from SolarProvider. |
size | string | number | 24 | Sets the icon's width and height. Inherits from SolarProvider. |
weight | 'Bold' | 'Linear' | 'Outline' | 'BoldDuotone' | 'LineDuotone' | 'Broken' | Linear | Sets the icon style. Inherits from SolarProvider. |
mirrored | boolean | false | Flips the icon horizontally if true. Inherits from SolarProvider. |
alt | string | undefined | Provides an accessible title for the icon. |
Advanced Usage
Global Configuration with SolarProvider
For applying consistent styles across your app, wrap your components with the SolarProvider:
<template>
<SolarProvider :size="32" color="purple" weight="Linear">
<YourComponents />
</SolarProvider>
</template>
<script setup>
import { SolarProvider } from '@solar-icons/vue'
</script>Vue Plugin Installation
Alternatively, install the package as a Vue plugin for global configuration:
import { createApp } from 'vue'
import { SolarIconsPlugin } from '@solar-icons/vue'
const app = createApp(App)
app.use(SolarIconsPlugin, {
color: 'currentColor',
size: '24',
weight: 'Linear',
mirrored: false,
})
app.mount('#app')Composition API
You can also access and modify the icon configuration using the Composition API:
<template>
<div>
<ArrowUp :size="iconSize" weight="Outline" />
<button @click="increaseSize">Increase Size</button>
</div>
</template>
<script setup>
import { ref } from 'vue'
import { ArrowUp, useSolar } from '@solar-icons/vue'
const { config, setSize } = useSolar()
const iconSize = ref(24)
const increaseSize = () => {
const newSize = parseInt(iconSize.value) + 4
iconSize.value = newSize
setSize(newSize)
}
</script>Category Imports
You can also import all icons from a specific category as a single object:
<template>
<div>
<Arrows.ArrowUp weight="Bold" />
<Arrows.ArrowDown weight="Linear" />
</div>
</template>
<script setup>
import { Arrows } from '@solar-icons/vue/category'
</script>Nuxt Integration
While @solar-icons/vue is compatible with Nuxt, we recommend using the dedicated @solar-icons/nuxt package for deeper integration with the Nuxt ecosystem, including auto-import capabilities and optimized performance.
nuxi module add @solar-icons/nuxtHow is this guide?