Which is Better Vue Icon Libraries?
vue-material-design-icons vs vue-awesome

1 Year
vue-material-design-iconsvue-awesome
What's Vue Icon Libraries?

Icon libraries in Vue provide a collection of customizable icons that can be easily integrated into Vue projects to enhance the visual appeal and user experience. These libraries offer a wide range of icons for various purposes, such as navigation, buttons, and decorative elements. They help streamline the development process by providing a consistent set of icons that adhere to design principles and can be easily customized to match the project's style.

NPM Package Downloads Trend
Github Stars Ranking
Stat Detail
Package
Downloads
Stars
Size
Issues
Publish
License
vue-material-design-icons36,2571618.21 MB65 months agoMIT
vue-awesome14,7122,4182.58 MB37-MIT
Feature Comparison: vue-material-design-icons vs vue-awesome

Icon Variety

  • vue-material-design-icons: Vue-Material-Design-Icons focuses on providing icons that align with Google's Material Design language. The icons are designed to be consistent with Material Design principles, offering a cohesive visual language for applications following Material Design guidelines.
  • vue-awesome: Vue-Awesome offers a diverse range of icons sourced from popular icon libraries such as Font Awesome, Material Design Icons, and Bootstrap Icons. This extensive collection allows developers to choose from a wide selection of icons to suit different design styles and requirements.

Customization Options

  • vue-material-design-icons: Vue-Material-Design-Icons provides icons that are specifically designed to align with Material Design guidelines, offering a consistent visual style that maintains coherence with other Material Design elements in the application. While customization options may be more limited compared to Vue-Awesome, the focus is on maintaining design consistency.
  • vue-awesome: Vue-Awesome allows for easy customization of icons through CSS styling, enabling developers to adjust the size, color, and other visual properties of the icons to match the project's design. This flexibility ensures that icons can be seamlessly integrated into the overall aesthetic of the application.

Integration with Vue Components

  • vue-material-design-icons: Vue-Material-Design-Icons is designed to work seamlessly with Vue components, providing a set of icons that can be directly used within Vue templates. This integration ensures that icons align with the overall design language of the application and can be easily implemented in various Vue components.
  • vue-awesome: Vue-Awesome seamlessly integrates with Vue components, allowing developers to easily incorporate icons into their Vue projects using simple syntax and directives. This integration simplifies the process of adding icons to different parts of the application, enhancing the overall user interface.

Accessibility and Usability

  • vue-material-design-icons: Vue-Material-Design-Icons adhere to Google's Material Design guidelines, which emphasize usability and accessibility in icon design. The icons are designed to be intuitive and easy to understand, following established principles for effective visual communication in user interfaces.
  • vue-awesome: Vue-Awesome icons are optimized for accessibility and usability, ensuring that they are easily recognizable and understandable by users. The icons follow best practices for icon design, such as clear shapes and intuitive meanings, to enhance user experience and usability.

Maintenance and Updates

  • vue-material-design-icons: Vue-Material-Design-Icons is maintained by the Material Design team at Google, ensuring that the icons are aligned with the latest Material Design guidelines and updates. The library is continuously updated to reflect changes in Material Design principles and to provide developers with a reliable source of Material Design icons.
  • vue-awesome: Vue-Awesome is regularly maintained and updated to ensure compatibility with the latest Vue versions and browser requirements. The library receives updates to add new icons, improve performance, and address any issues reported by the community, ensuring a reliable and up-to-date icon solution.
How to Choose: vue-material-design-icons vs vue-awesome
  • vue-material-design-icons: Choose Vue-Material-Design-Icons if you are following Google's Material Design guidelines and want to maintain consistency with the Material Design language. This library provides a set of icons specifically designed to align with Material Design principles, ensuring a cohesive and visually appealing user interface.
  • vue-awesome: Choose Vue-Awesome if you prefer a library that offers a wide variety of icons from multiple icon sets, allowing for more flexibility and customization options. Vue-Awesome provides a comprehensive collection of icons that can be easily integrated and styled to suit different design requirements.
Similar Npm Packages to vue-material-design-icons

vue-material-design-icons is a package that provides a collection of Material Design icons for use in Vue.js applications. These icons follow the Material Design guidelines and can be easily integrated into Vue projects to enhance the visual appeal and user experience. While vue-material-design-icons offers a convenient way to incorporate Material Design icons, there are other alternatives available in the Vue ecosystem.

  • vue-awesome is another popular package that offers a wide range of icons for Vue applications. It provides a variety of icon sets, including Font Awesome, Material Design Icons, and more, giving developers flexibility in choosing the icons that best suit their project.

Check out this comparison: Comparing vue-awesome vs vue-material-design-icons.

README for vue-material-design-icons

Vue Material Design Icon Components

This library is a collection of Vue single-file components to render Material Design Icons, sourced from the MaterialDesign project. It also includes some CSS that helps make the scaling of the icons a little easier.

Getting started

  1. Install the package

    yarn add vue-material-design-icons
    

    OR

    npm i vue-material-design-icons
    
  2. Import the icon, and declare it as a local component:

    import MenuIcon from 'vue-material-design-icons/Menu.vue';
    
    components: {
      MenuIcon;
    }
    

    OR

    Declare it as a global component:

    import MenuIcon from 'vue-material-design-icons/Menu.vue';
    
    Vue.component('menu-icon', MenuIcon);
    

    Note Icon files are pascal cased, e.g. CheckboxMarkedCircle.vue, and their default name has Icon appended e.g. CheckboxMarkedCircleIcon.

  3. Then use it in your template code!

    <menu-icon />
    
  4. Optional Add the included stylesheet. This few lines of CSS will cause the icons to scale with any surrounding text, which can be helpful when you primarily style with CSS. Note that if you intend to handle sizing with the size prop, you probably don't want to use this as it may conflict.

    import 'vue-material-design-icons/styles.css';
    

Props

  • title - This changes the hover tooltip as well as the title shown to screen readers. For accessibility purposes, if a title is not provided, then the icon is hidden from screen readers. This is to force developers to use meaningful titles for their icon usage.

    Example:

    <android-icon title="this is an icon!" />
    
  • fillColor - This property allows you to set the fill colour of an icon via JS instead of requiring CSS changes. Note that any CSS values, such as fill: currentColor; provided by the optional CSS file, may override colours set with this prop.

    Example:

    <android-icon fillColor="#FF0000" />
    
  • size - This property overrides the width and height attributes on the SVG. The default is 24.

    Example:

    <android-icon :size="48" />
    

Icons

A list of the icons can be found at the Material Design Icons website. The icons packaged here are pascal cased versions of the names displayed on the website, to match the Vue Style Guide. For example, the icon named ultra-high-definition would be imported as "vue-material-design-icons/UltraHighDefinition.vue".

Tips

  • Use resolve in your Webpack config to clean up the imports:

    resolve: {
      alias : {
        "icons": path.resolve(__dirname, "node_modules/vue-material-design-icons")
      },
      extensions: [
        ".vue"
      ]
    }
    

    This will give you much shorter and more readable imports, like import Android from "icons/Android", rather than import Android from "vue-material-design-icons/Android.vue". Much better!

  • If you want custom sizing, add your own css to adjust the height and width of the icons

    .material-design-icon.icon-2x {
      height: 2em;
      width: 2em;
    }
    
    .material-design-icon.icon-2x > .material-design-icon__svg {
      height: 2em;
      width: 2em;
    }
    

    Then add your size class

    <fullscreen-icon class="icon-2x" />
    

    While I recommend using CSS for styling, you can also pass in a size prop, detailed in the Props section above.

Credits

Austin Andrews / Templarian for the MaterialDesign project. This supplies the SVG icons for this project, which are packaged as Vue single file components.

Elliot Dahl for this article on prototypr.io. This is where the recommended CSS comes from.

Attila Max Ruf / therufa for the mdi-vue library which inspired this one. It also produces single file components from material design icons.