Convert Figma logo to code with AI

antonreshetov logovue-unicons

1000+ Pixel-perfect svg icons for your next project as Vue components

1,005
57
1,005
18

Top Related Projects

The iconic SVG, font, and CSS toolkit

25,411

Simply beautiful open-source icons

17,753

Premium hand-crafted icons built by Ionic, for Ionic apps and web apps everywhere 🌎

A scalable set of icons handcrafted with <3 by GitHub

A set of over 5800 free MIT-licensed high-quality SVG icons for you to use in your web projects.

✒7000+ Material Design Icons from the Community

Quick Overview

Vue Unicons is a Vue.js component library that provides a comprehensive set of customizable icons for use in Vue applications. It offers over 1,000 vector icons that can be easily integrated and styled within Vue projects, enhancing the visual appeal and user experience of web applications.

Pros

  • Large collection of over 1,000 high-quality vector icons
  • Easy integration with Vue.js projects
  • Customizable icon properties such as size, color, and animation
  • Regular updates and additions to the icon set

Cons

  • Limited to Vue.js projects, not suitable for other frameworks
  • May increase bundle size if many icons are used
  • Requires additional setup compared to using standard image icons
  • Some advanced customizations may require deeper knowledge of SVG manipulation

Code Examples

  1. Basic icon usage:
<template>
  <unicon name="github" />
</template>

<script>
import { Unicon } from 'vue-unicons'
import { uniGithub } from 'vue-unicons/dist/icons'

Unicon.add([uniGithub])

export default {
  components: { Unicon }
}
</script>
  1. Customizing icon properties:
<template>
  <unicon
    name="heart"
    fill="red"
    width="32"
    height="32"
    :animation="{ type: 'beat', hover: true }"
  />
</template>
  1. Using icons in a button:
<template>
  <button class="icon-button">
    <unicon name="plus" />
    Add Item
  </button>
</template>

<style scoped>
.icon-button {
  display: flex;
  align-items: center;
  gap: 8px;
}
</style>

Getting Started

  1. Install the package:

    npm install vue-unicons
    
  2. Import and use in your Vue component:

    <template>
      <div>
        <unicon name="github" />
      </div>
    </template>
    
    <script>
    import Vue from 'vue'
    import Unicon from 'vue-unicons/dist/vue-unicons-vue2.umd'
    import { uniGithub } from 'vue-unicons/dist/icons'
    
    Unicon.add([uniGithub])
    Vue.use(Unicon)
    
    export default {
      name: 'MyComponent'
    }
    </script>
    
  3. For Vue 3, use the following import instead:

    import Unicon from 'vue-unicons/dist/vue-unicons-vue3.umd'
    

Competitor Comparisons

The iconic SVG, font, and CSS toolkit

Pros of Font-Awesome

  • Extensive icon library with over 7,000 icons
  • Well-established and widely recognized in the web development community
  • Supports multiple file formats (SVG, webfonts) and styling options

Cons of Font-Awesome

  • Larger file size, which may impact page load times
  • Requires additional setup and configuration for optimal performance
  • Not specifically designed for Vue.js integration

Code Comparison

Font-Awesome (using SVG with JS):

<script src="https://kit.fontawesome.com/your-kit-code.js" crossorigin="anonymous"></script>
<i class="fas fa-user"></i>

vue-unicons:

<template>
  <unicon name="user" />
</template>

<script>
import { Unicon } from 'vue-unicons'
import { uniUser } from 'vue-unicons/dist/icons'

Unicon.add([uniUser])
</script>

Key Differences

  • vue-unicons is specifically designed for Vue.js, offering easier integration and better performance in Vue applications
  • Font-Awesome provides a larger icon set and more styling options
  • vue-unicons has a smaller file size and faster load times, but with a more limited icon selection
  • Font-Awesome offers multiple implementation methods, while vue-unicons is focused on Vue.js components

Both libraries have their strengths, and the choice between them depends on project requirements, performance needs, and desired icon variety.

25,411

Simply beautiful open-source icons

Pros of Feather

  • Larger icon set with over 280 icons
  • Language-agnostic, can be used with any framework or vanilla JavaScript
  • Simpler API and implementation

Cons of Feather

  • Less Vue-specific optimizations
  • Fewer customization options out-of-the-box
  • Requires more setup for Vue projects

Code Comparison

Vue-unicons:

<template>
  <unicon name="github" fill="royalblue"></unicon>
</template>

<script>
import { Unicon } from 'vue-unicons'
import { uniGithub } from 'vue-unicons/dist/icons'

Unicon.add([uniGithub])
</script>

Feather:

<template>
  <feather-github size="24" color="royalblue"></feather-github>
</template>

<script>
import { GitHub } from 'feather-icons'
</script>

Summary

Vue-unicons is tailored specifically for Vue.js projects, offering seamless integration and Vue-specific optimizations. It provides a wide range of customization options and a Vue-friendly API. However, it has a smaller icon set compared to Feather.

Feather, on the other hand, offers a larger icon set and is more versatile across different frameworks. It has a simpler API but requires more setup for Vue projects. Feather is a good choice for projects that may need to work with multiple frameworks or require a larger variety of icons.

17,753

Premium hand-crafted icons built by Ionic, for Ionic apps and web apps everywhere 🌎

Pros of Ionicons

  • Larger icon set with over 1,200 icons
  • Supports multiple frameworks (React, Vue, Angular, Web Components)
  • Backed by the Ionic team, ensuring regular updates and maintenance

Cons of Ionicons

  • Larger file size due to the extensive icon set
  • May require additional setup for framework-specific usage
  • Less focused on Vue.js compared to Vue Unicons

Code Comparison

Vue Unicons:

<template>
  <uniBookmark />
</template>

<script>
import { uniBookmark } from 'vue-unicons/dist/icons'
</script>

Ionicons:

<template>
  <ion-icon name="bookmark"></ion-icon>
</template>

<script>
import { addIcons } from 'ionicons'
import { bookmark } from 'ionicons/icons'

addIcons({ bookmark })
</script>

Summary

Ionicons offers a more extensive icon set and broader framework support, making it suitable for larger projects or those using multiple frameworks. However, it comes with a larger file size and may require additional setup. Vue Unicons, on the other hand, is more focused on Vue.js and offers a simpler implementation for Vue projects, but with a smaller icon set. The choice between the two depends on project requirements, framework preferences, and desired simplicity of implementation.

A scalable set of icons handcrafted with <3 by GitHub

Pros of Octicons

  • Larger icon set with over 200 icons
  • Official GitHub design system, ensuring consistency with GitHub's UI
  • Supports multiple formats (SVG, PNG, WebFont)

Cons of Octicons

  • Not specifically designed for Vue.js integration
  • May require additional setup for Vue.js projects
  • Less flexibility in customization compared to Vue-specific libraries

Code Comparison

Vue Unicons usage:

<template>
  <unicon name="github" fill="currentColor"></unicon>
</template>

<script>
import { Unicon } from 'vue-unicons'
import { uniGithub } from 'vue-unicons/dist/icons'

Unicon.add([uniGithub])
</script>

Octicons usage (with additional Vue setup):

<template>
  <octicon name="mark-github" :size="24"></octicon>
</template>

<script>
import Octicon from '@primer/octicons-vue'
import { markGithub } from '@primer/octicons'

export default {
  components: { Octicon }
}
</script>

Both libraries offer icon components, but Vue Unicons provides a more Vue-centric approach with easier integration. Octicons, while not Vue-specific, offers a broader range of icons and formats, making it suitable for various project types beyond Vue.js applications.

A set of over 5800 free MIT-licensed high-quality SVG icons for you to use in your web projects.

Pros of tabler-icons

  • Larger icon set with over 3,200 icons, offering more variety
  • Supports multiple formats including SVG, React, and web font
  • Regular updates and active maintenance

Cons of tabler-icons

  • Not specifically designed for Vue.js, requiring additional setup for Vue projects
  • Larger file size due to the extensive icon set

Code comparison

tabler-icons (React usage):

import { IconHome } from '@tabler/icons-react';

function App() {
  return <IconHome size={24} color="blue" />;
}

vue-unicons:

<template>
  <unicon name="home" fill="blue" width="24" height="24" />
</template>

<script>
import { Unicon } from 'vue-unicons'
import { uniHome } from 'vue-unicons/dist/icons'

Unicon.add([uniHome])
</script>

Summary

tabler-icons offers a more extensive icon set with broader framework support, making it suitable for various projects. However, vue-unicons provides a more streamlined experience for Vue.js developers with its Vue-specific implementation. The choice between the two depends on the project requirements, with tabler-icons being more versatile across different frameworks and vue-unicons offering a more integrated solution for Vue.js projects.

✒7000+ Material Design Icons from the Community

Pros of MaterialDesign

  • Extensive icon library with over 7,000 icons
  • Regular updates and community contributions
  • Supports multiple file formats (SVG, PNG, XAML)

Cons of MaterialDesign

  • Not specifically designed for Vue.js integration
  • Requires additional setup for use in Vue projects
  • Larger file size due to the extensive icon set

Code Comparison

MaterialDesign usage (with additional setup):

<template>
  <svg viewBox="0 0 24 24">
    <path :d="mdiAccount" />
  </svg>
</template>

<script>
import { mdiAccount } from '@mdi/js'
</script>

vue-unicons usage:

<template>
  <unicon name="user" />
</template>

<script>
import { Unicon } from 'vue-unicons'
import { uniUser } from 'vue-unicons/dist/icons'

Unicon.add([uniUser])
</script>

Summary

MaterialDesign offers a vast icon library with multiple format options, making it versatile for various projects. However, it requires additional setup for Vue.js integration. vue-unicons, on the other hand, is specifically designed for Vue.js, offering easier implementation but with a more limited icon set. The choice between the two depends on project requirements, icon variety needs, and ease of integration preferences.

Convert Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

logo of vue-unicons repository

1000+ Pixel-perfect svg unicons for your next project as Vue components

Supporting

Vue Unicons is open source project and completely free to use.

If you like the project, you can donate to support the development via the following methods:

Donate via Patreon Donate via PayPal Donate via Bitcoin

Demo

https://antonreshetov.github.io/vue-unicons

Developed with love for developers

A simple way to add the necessary icons and install them.

demo

Install

NPM

Installing with npm is recommended and it works seamlessly with webpack.

npm i vue-unicons

Download

You can download latest version from the Github: Download

Quick start

Global

To use in your project:

  1. Import vue-unicons
  2. Grab the icons you want and add then into Unicon library
  3. Install Unicon into Vue

main.js

Vue 3

import { createApp } from 'vue'
import App from './App.vue'
import Unicon from 'vue-unicons'
import { uniLayerGroupMonochrome, uniCarWash } from 'vue-unicons/dist/icons'

Unicon.add([uniLayerGroupMonochrome, uniCarWash])

createApp(App).use(Unicon).mount('#app')

Vue 2

import Vue from 'vue'
import App from './App.vue'
import Unicon from 'vue-unicons/dist/vue-unicons-vue2.umd'
import { uniLayerGroupMonochrome, uniCarWash } from 'vue-unicons/dist/icons'

Unicon.add([uniLayerGroupMonochrome, uniCarWash])
Vue.use(Unicon)

new Vue({
  render: h => h(App)
}).$mount('#app')

App.vue

Use the name of icon without the uni prefix, icon style and in the kebab-case:
uniCarWash -> car-wash
uniLayerGroupMonochrome -> layer-group

<template>
  <div>
    <unicon name="car-wash" fill="limegreen"></unicon>
    <unicon name="layer-group" fill="royalblue" icon-style="monochrome"></unicon>
  </div>
</template>

Config

You can configure the icons globally. Simply specify the required parameters during installation.

...
createApp(App)
  .use(Unicon, {
    fill: 'deeppink',
    height: 32,
    width: 32
  })
  .mount('#app')

Add custom icons

No icons you need? No problem, you can add custom svg icons.

custom-icons.js

// Always use a prefix to avoid coincidence with existing icons.
export const myCustomIcon = {
  name: 'my-custom-icon',
  style: 'line',
  path: '<path d="M16.327 10.775a.312.312 0 0...</path>' // Copy everything inside the svg tag of the icon you want and past there
}

For correct positioning of svg icon please make sure that the icon to be added has viewBox="0 0 X X"

main.js

import { createApp } from 'vue'
import App from './App.vue'
import Unicon from 'vue-unicons'
import { uniLayerGroupMonochrome, uniCarWash } from 'vue-unicons/dist/icons'
import { myCustomIcon } from './custom-icons'

Unicon.add([uniLayerGroupMonochrome, uniCarWash, myCustomIcon])

createApp(App).use(Unicon).mount('#app')

App.vue

<template>
  <div>
    <unicon name="constructor" fill="royalblue"></unicon>
    <unicon name="car-wash" fill="limegreen"></unicon>
    <unicon name="my-custom-icon" fill="royalblue" />
  </div>
</template>

See example

Nuxt

Installation in Nuxt is almost the same, except that you need to create a separate file in the plugins folder:

plugins/vue-unicons.js

import Vue from 'vue'
import Unicon from 'vue-unicons/dist/vue-unicons-vue2.umd'
import { uniLayerGroupMonochrome, uniCarWash } from 'vue-unicons/dist/icons'

Unicon.add([uniLayerGroupMonochrome, uniCarWash])
Vue.use(Unicon)

Then we add the file path inside the plugins key in nuxt.config.js, and set mode: 'client' to make vue-unicons work only in a browser.

  ...
  plugins: [
    { src: '~/plugins/vue-unicons', mode: 'client' }
  ]
  ...
<template>
  <div>
    <client-only>
      <unicon name="car-wash" fill="limegreen"></unicon>
      <unicon name="layer-group" fill="royalblue" icon-style="monochrome"></unicon>
    </client-only>
  </div>
</template>

Props

NameDescriptionTypeAccepted valuesDefault value
nameIcon namestring--
widthWidth of iconstring--
heightHeight of iconstring--
fillFill color of iconstringHEX or color name-
hover-fillFill color on hoverstringHEX or color name-
icon-styleIcon stylestringline / monochromeline

Events

NameDescriptionPayload
clickTriggered when icon was clicked-

License

Vue Unicons licensed under MIT.

Unicons licensed under Apache 2.0

NPM DownloadsLast 30 Days