Convert Figma logo to code with AI

vuematerial logovue-material

Vue.js Framework - ready-to-use Vue components with Material Design, free forever.

9,878
1,158
9,878
244

Top Related Projects

39,623

🐉 Vue Component Framework

54,105

A Vue.js 2.0 UI Toolkit for Web

9,547

Lightweight UI components for Vue.js based on Bulma

BootstrapVue provides one of the most comprehensive implementations of Bootstrap v4 for Vue.js. With extensive and automated WAI-ARIA accessibility markup.

25,724

Quasar Framework - Build high-performance VueJS user interfaces in record time

Quick Overview

Vue Material is a lightweight framework for building user interfaces with Vue.js, following Google's Material Design specifications. It provides a set of reusable and customizable components that help developers create consistent and attractive web applications with ease.

Pros

  • Comprehensive set of Material Design components
  • Easy integration with Vue.js projects
  • Customizable themes and styles
  • Active community and regular updates

Cons

  • Learning curve for developers new to Material Design
  • Some components may have limited customization options
  • Documentation can be improved in certain areas
  • Occasional breaking changes between major versions

Code Examples

  1. Creating a simple button:
<template>
  <md-button class="md-primary md-raised">Click me</md-button>
</template>
  1. Using a dialog component:
<template>
  <div>
    <md-button @click="showDialog = true">Open Dialog</md-button>
    <md-dialog :md-active.sync="showDialog">
      <md-dialog-title>Dialog Title</md-dialog-title>
      <md-dialog-content>Dialog content goes here.</md-dialog-content>
      <md-dialog-actions>
        <md-button class="md-primary" @click="showDialog = false">Close</md-button>
      </md-dialog-actions>
    </md-dialog>
  </div>
</template>

<script>
export default {
  data: () => ({
    showDialog: false
  })
}
</script>
  1. Creating a data table:
<template>
  <md-table v-model="users" md-sort="name" md-sort-order="asc" md-card md-fixed-header>
    <md-table-toolbar>
      <h1 class="md-title">Users</h1>
    </md-table-toolbar>
    <md-table-row slot="md-table-row" slot-scope="{ item }">
      <md-table-cell md-label="ID" md-sort-by="id">{{ item.id }}</md-table-cell>
      <md-table-cell md-label="Name" md-sort-by="name">{{ item.name }}</md-table-cell>
      <md-table-cell md-label="Email" md-sort-by="email">{{ item.email }}</md-table-cell>
    </md-table-row>
  </md-table>
</template>

<script>
export default {
  data: () => ({
    users: [
      { id: 1, name: 'John Doe', email: 'john@example.com' },
      { id: 2, name: 'Jane Smith', email: 'jane@example.com' }
    ]
  })
}
</script>

Getting Started

  1. Install Vue Material in your Vue.js project:
npm install vue-material --save
  1. Import and use Vue Material in your main.js file:
import Vue from 'vue'
import VueMaterial from 'vue-material'
import 'vue-material/dist/vue-material.min.css'
import 'vue-material/dist/theme/default.css'

Vue.use(VueMaterial)
  1. Start using Vue Material components in your Vue templates:
<template>
  <div>
    <md-button class="md-primary">Hello, Vue Material!</md-button>
  </div>
</template>

Competitor Comparisons

39,623

🐉 Vue Component Framework

Pros of Vuetify

  • Larger community and more frequent updates
  • Extensive documentation and better learning resources
  • Wider range of pre-built components and layouts

Cons of Vuetify

  • Larger bundle size, which may impact initial load times
  • More opinionated design system, potentially limiting customization
  • Steeper learning curve for beginners due to its extensive feature set

Code Comparison

Vue Material:

<md-button class="md-primary md-raised">Primary Button</md-button>

Vuetify:

<v-btn color="primary" elevation="2">Primary Button</v-btn>

Both Vue Material and Vuetify are popular UI component libraries for Vue.js applications, implementing Material Design principles. Vuetify generally offers a more comprehensive set of components and features, making it suitable for larger projects. However, this comes at the cost of a larger bundle size and potentially more complex usage.

Vue Material, on the other hand, provides a lighter-weight alternative with a focus on simplicity and ease of use. It may be more appropriate for smaller projects or developers who prefer a minimalist approach.

The choice between the two libraries ultimately depends on the specific requirements of your project, team expertise, and performance considerations.

54,105

A Vue.js 2.0 UI Toolkit for Web

Pros of Element

  • Larger community and more frequent updates
  • More comprehensive component library
  • Better documentation and examples

Cons of Element

  • Heavier bundle size
  • Less customizable default theme
  • Steeper learning curve for beginners

Code Comparison

Element:

<el-button type="primary" @click="handleClick">
  Click me
</el-button>

Vue Material:

<md-button class="md-primary" @click="handleClick">
  Click me
</md-button>

Summary

Element and Vue Material are both popular UI component libraries for Vue.js applications. Element offers a more extensive set of components and better documentation, making it suitable for large-scale projects. However, it comes with a larger bundle size and may be overwhelming for beginners.

Vue Material, on the other hand, provides a lighter-weight solution with a focus on Material Design principles. It's easier to get started with and offers more flexibility in terms of customization. However, it has a smaller community and fewer components compared to Element.

The choice between these libraries depends on project requirements, team expertise, and design preferences. Element is better suited for complex applications with diverse UI needs, while Vue Material is ideal for projects aiming for a Material Design aesthetic with a smaller footprint.

9,547

Lightweight UI components for Vue.js based on Bulma

Pros of Buefy

  • Lightweight and modular, allowing for smaller bundle sizes
  • Based on Bulma CSS framework, providing a clean and modern design
  • Extensive documentation and active community support

Cons of Buefy

  • Less comprehensive component set compared to Vue Material
  • May require additional customization for complex UI requirements
  • Limited theming options out of the box

Code Comparison

Buefy:

<template>
  <b-button @click="showModal">Open Modal</b-button>
  <b-modal v-model="isModalActive">
    <p>Modal content</p>
  </b-modal>
</template>

Vue Material:

<template>
  <md-button @click="showDialog">Open Dialog</md-button>
  <md-dialog :md-active.sync="isDialogActive">
    <md-dialog-content>Dialog content</md-dialog-content>
  </md-dialog>
</template>

Both libraries offer similar component structures, but Vue Material tends to use more specific component names (e.g., md-dialog instead of b-modal). Buefy's syntax is often more concise, while Vue Material provides more granular control over component parts.

BootstrapVue provides one of the most comprehensive implementations of Bootstrap v4 for Vue.js. With extensive and automated WAI-ARIA accessibility markup.

Pros of Bootstrap Vue

  • Larger community and more extensive documentation
  • Seamless integration with Bootstrap's CSS framework
  • Wider range of components and utilities

Cons of Bootstrap Vue

  • Heavier bundle size due to Bootstrap dependency
  • Less customizable design, tied to Bootstrap's aesthetic
  • Steeper learning curve for those unfamiliar with Bootstrap

Code Comparison

Bootstrap Vue:

<template>
  <b-button variant="primary" @click="handleClick">
    Click me
  </b-button>
</template>

Vue Material:

<template>
  <md-button class="md-primary" @click="handleClick">
    Click me
  </md-button>
</template>

Both libraries offer similar component structures, but Bootstrap Vue uses the b- prefix for its components, while Vue Material uses the md- prefix. The main difference lies in the styling and customization options available for each library.

Bootstrap Vue provides a more comprehensive set of components and utilities, making it suitable for rapid development of complex applications. However, Vue Material offers a more modern and customizable design language, adhering closely to Material Design principles.

Ultimately, the choice between these libraries depends on project requirements, design preferences, and team familiarity with Bootstrap or Material Design concepts.

25,724

Quasar Framework - Build high-performance VueJS user interfaces in record time

Pros of Quasar

  • More comprehensive framework with built-in components for mobile, desktop, and web development
  • Offers SSR (Server-Side Rendering) and PWA (Progressive Web App) support out of the box
  • Larger and more active community, resulting in frequent updates and better documentation

Cons of Quasar

  • Steeper learning curve due to its extensive feature set
  • Larger bundle size, which may impact initial load times for smaller projects
  • More opinionated structure, potentially limiting flexibility for custom designs

Code Comparison

Vue Material:

<template>
  <md-button class="md-raised md-primary">Click me</md-button>
</template>

<script>
import { MdButton } from 'vue-material/dist/components'
</script>

Quasar:

<template>
  <q-btn color="primary" label="Click me" />
</template>

<script>
import { QBtn } from 'quasar'
</script>

Both frameworks offer Material Design-inspired components, but Quasar's syntax is generally more concise. Quasar also provides a wider range of pre-built components and utilities, making it easier to create complex layouts and functionality with less custom code.

While Vue Material focuses primarily on Material Design components for web applications, Quasar extends its capabilities to mobile and desktop development, offering a more versatile solution for cross-platform projects.

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

Material Design for Vue.js

Build Status Downloads License Chat

Vue Material is Simple, lightweight and built exactly according to the Google Material Design specs

Build well-designed apps that can fit on every screen with support to all modern Web Browsers with dynamic themes, components on demand and all with an ease-to-use API

Demo and Documentation

Documentation & demos

Examples

Installation and Usage

Install Vue Material through npm or yarn

npm install vue-material --save
yarn add vue-material

* Others package managers like JSPM and Bower are not supported yet.

Import or require Vue and Vue Material in your code:

import Vue from 'vue'
import VueMaterial from 'vue-material'
import 'vue-material/dist/vue-material.min.css'

Vue.use(VueMaterial)

Or use individual components:

import Vue from 'vue'
import { MdButton, MdContent, MdTabs } from 'vue-material/dist/components'
import 'vue-material/dist/vue-material.min.css'

Vue.use(MdButton)
Vue.use(MdContent)
Vue.use(MdTabs)

Alternatively you can download and reference the script and the stylesheet in your HTML:

<link rel="stylesheet" href="path/to/vue-material.css">
<script src="path/to/vue-material.js"></script>

Optionally import Roboto font & Material Icons from Google CDN:

<link rel="stylesheet" href="//fonts.googleapis.com/css?family=Roboto:300,400,500,700,400italic|Material+Icons">

Changelog

Changelog

Questions

If you have any questions, ideas or you want to discuss with Vue Material community, use Discord to join us.

Contributing

Please make sure to read the Contributing Guide before making a pull request.

Browser Support

Vue Material supports all modern browsers.

May work in other browsers but it's untested.

Become a part of the Vue Material community

This project exists thanks to all the people who contribute

Sponsors & Backers

Thank you to all our backers! 🙏 [Become a backer]

Credits and Thanks

Vue Material does not run under the umbrella of any company or anything like that. It is an independent project created by Marcos Moura in his spare time, which has become one of the most used UI Libraries for Vue.js. The development is active and we are working hard to release great things for you.

License

MIT

NPM DownloadsLast 30 Days