Top Related Projects
🐉 Vue Component Framework
A Vue.js 2.0 UI Toolkit for Web
Quasar Framework - Build high-performance VueJS user interfaces in record time
BootstrapVue provides one of the most comprehensive implementations of Bootstrap v4 for Vue.js. With extensive and automated WAI-ARIA accessibility markup.
Next Generation Vue UI Component Library
Quick Overview
Buefy is a lightweight UI component library for Vue.js based on the Bulma CSS framework. It provides a set of responsive and customizable components that can be easily integrated into Vue.js projects, offering a modern and clean design out of the box.
Pros
- Easy integration with Vue.js projects
- Lightweight and performant
- Extensive set of pre-built components
- Customizable with SASS variables
Cons
- Limited to Vue.js ecosystem
- Dependent on Bulma CSS framework
- May require additional styling for complex layouts
- Learning curve for those unfamiliar with Bulma
Code Examples
- Basic Button Component:
<template>
<b-button @click="handleClick">Click me!</b-button>
</template>
<script>
export default {
methods: {
handleClick() {
console.log('Button clicked!')
}
}
}
</script>
- Modal Component:
<template>
<div>
<b-button @click="isModalActive = true">Open Modal</b-button>
<b-modal v-model="isModalActive">
<div class="card">
<div class="card-content">
<p class="title">Modal Content</p>
</div>
</div>
</b-modal>
</div>
</template>
<script>
export default {
data() {
return {
isModalActive: false
}
}
}
</script>
- Table Component with Pagination:
<template>
<b-table
:data="data"
:columns="columns"
:paginated="true"
:per-page="5"
:current-page.sync="currentPage"
/>
</template>
<script>
export default {
data() {
return {
data: [/* ... */],
columns: [
{ field: 'id', label: 'ID' },
{ field: 'name', label: 'Name' },
{ field: 'age', label: 'Age' }
],
currentPage: 1
}
}
}
</script>
Getting Started
- Install Buefy in your Vue.js project:
npm install buefy
- Import and use Buefy in your main.js file:
import Vue from 'vue'
import Buefy from 'buefy'
import 'buefy/dist/buefy.css'
Vue.use(Buefy)
- Start using Buefy components in your Vue templates:
<template>
<div>
<b-field label="Name">
<b-input v-model="name"></b-input>
</b-field>
<b-button type="is-primary" @click="submit">Submit</b-button>
</div>
</template>
<script>
export default {
data() {
return {
name: ''
}
},
methods: {
submit() {
// Handle form submission
}
}
}
</script>
Competitor Comparisons
🐉 Vue Component Framework
Pros of Vuetify
- More comprehensive component library with a wider range of UI elements
- Stronger Material Design implementation and customization options
- Larger community and more frequent updates
Cons of Vuetify
- Steeper learning curve due to its extensive feature set
- Larger bundle size, which may impact initial load times
- More opinionated design, potentially limiting flexibility for custom designs
Code Comparison
Vuetify button example:
<v-btn color="primary" elevation="2">
Click me
</v-btn>
Buefy button example:
<b-button type="is-primary" raised>
Click me
</b-button>
Both Vuetify and Buefy are popular Vue.js UI component libraries, but they cater to different needs. Vuetify offers a more comprehensive set of components and follows Material Design principles closely, making it suitable for larger, feature-rich applications. Buefy, on the other hand, is lighter and easier to learn, making it a good choice for smaller projects or developers who prefer a simpler approach.
Vuetify's extensive documentation and active community support make it easier to find solutions to complex problems. However, this comes at the cost of a larger bundle size and potentially longer development time due to its complexity.
Buefy's simplicity and lightweight nature make it quicker to set up and use, but it may lack some advanced features found in Vuetify. The choice between the two ultimately depends on the project requirements and developer preferences.
A Vue.js 2.0 UI Toolkit for Web
Pros of Element
- More comprehensive component library with a wider range of UI elements
- Better documentation and examples, making it easier for developers to implement
- Larger community and more frequent updates, ensuring better long-term support
Cons of Element
- Heavier bundle size, which may impact performance for smaller projects
- Steeper learning curve due to its extensive feature set
- Less flexibility in customization compared to Buefy's lightweight approach
Code Comparison
Element:
<el-form :model="form" :rules="rules" ref="form">
<el-form-item label="Name" prop="name">
<el-input v-model="form.name"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm">Submit</el-button>
</el-form-item>
</el-form>
Buefy:
<b-form @submit="submitForm">
<b-field label="Name">
<b-input v-model="form.name" required></b-input>
</b-field>
<b-button type="is-primary" native-type="submit">Submit</b-button>
</b-form>
Both Element and Buefy offer Vue.js UI component libraries, but they cater to different project needs. Element provides a more extensive set of components and better documentation, making it suitable for large-scale applications. Buefy, on the other hand, offers a lightweight alternative with easier customization, ideal for smaller projects or those requiring more flexibility in design.
Quasar Framework - Build high-performance VueJS user interfaces in record time
Pros of Quasar
- More comprehensive framework with support for multiple build modes (SPA, SSR, PWA, etc.)
- Larger ecosystem with official plugins and extensions
- Better documentation and community support
Cons of Quasar
- Steeper learning curve due to its extensive feature set
- Larger bundle size, which may impact initial load times
- More opinionated structure, potentially limiting flexibility in some cases
Code Comparison
Buefy component usage:
<template>
<b-button @click="showModal = true">Open Modal</b-button>
<b-modal v-model="showModal">
Modal Content
</b-modal>
</template>
Quasar component usage:
<template>
<q-btn @click="showDialog = true">Open Dialog</q-btn>
<q-dialog v-model="showDialog">
<q-card>Dialog Content</q-card>
</q-dialog>
</template>
Both frameworks offer similar component-based structures, but Quasar provides more built-in features and a wider range of components out of the box. Buefy focuses on simplicity and lightweight implementation, while Quasar aims to be a complete solution for various application types.
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
- Wider range of components and features
- Better integration with existing Bootstrap projects
Cons of Bootstrap Vue
- Heavier bundle size due to Bootstrap dependency
- Less customizable styling compared to Buefy's Bulma-based approach
- Steeper learning curve for developers new to Bootstrap
Code Comparison
Bootstrap Vue example:
<template>
<b-button variant="primary" @click="handleClick">
Click me
</b-button>
</template>
Buefy example:
<template>
<b-button type="is-primary" @click="handleClick">
Click me
</b-button>
</template>
Both libraries offer similar component APIs, but Bootstrap Vue follows Bootstrap's class naming conventions, while Buefy uses Bulma's naming style. Bootstrap Vue provides more variants and options for components, reflecting its larger feature set. Buefy's syntax is often more concise and intuitive for developers familiar with Bulma.
Overall, Bootstrap Vue is better suited for larger projects with complex UI requirements or those already using Bootstrap, while Buefy offers a lighter-weight alternative with a focus on simplicity and ease of use.
Next Generation Vue UI Component Library
Pros of PrimeVue
- Larger component library with more advanced and specialized components
- Better documentation and examples, including a comprehensive showcase
- More frequent updates and active development
Cons of PrimeVue
- Steeper learning curve due to more complex API and configuration options
- Larger bundle size, which may impact initial load times
- Less focus on minimalism and simplicity compared to Buefy
Code Comparison
Buefy:
<template>
<b-field label="Name">
<b-input v-model="name"></b-input>
</b-field>
</template>
PrimeVue:
<template>
<span class="p-float-label">
<InputText id="name" v-model="name" />
<label for="name">Name</label>
</span>
</template>
Both libraries offer Vue.js components, but PrimeVue tends to have more customization options and a different approach to styling. Buefy follows Bulma's CSS framework closely, while PrimeVue has its own design system. PrimeVue's components often require more setup but offer greater flexibility, whereas Buefy aims for simplicity and ease of use out of the box.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
Buefy is a lightweight library of responsive UI components for Vue.js based on Bulma framework and design.
Check out the official
@ntohq/Buefy-next
fork in development forVue v3.0.0+
support.
Features
- Keep your current Bulma theme / variables easily
- Supports both Material Design Icons and FontAwesome
- Very lightweight with none internal dependencies aside from Vue & Bulma
- About 88KB min+gzip (with Bulma included)
- Semantic code output
- Follows Bulma design and some of the Material Design UX
- Focus on usability and performance without over-animating stuff
Documentation
The documentation is in the docs directory, it serves as the demo as well.
Browse online documentation here.
Quick start
You need Vue.js version 2.6+. (Vue 3 is supported here)
1 Install via npm
npm install buefy
2 Import and use Buefy
Bundle
import Vue from 'vue';
import Buefy from 'buefy';
import 'buefy/dist/buefy.css';
Vue.use(Buefy);
or Individual Components
import Vue from 'vue'
import { Field, Input } from 'buefy'
import 'buefy/dist/buefy.css'
Vue.use(Field)
Vue.use(Input)
3 Include Material Design Icons
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@mdi/font@5.8.55/css/materialdesignicons.min.css">
If you want to customize the icons or the theme, refer to the customization section on the documentation.
Alternatively, you can use a CDN or even download
<!-- Buefy CSS -->
<link rel="stylesheet" href="https://unpkg.com/buefy/dist/buefy.min.css">
<!-- Buefy JavaScript -->
<script src="https://unpkg.com/buefy/dist/buefy.min.js"></script>
Start On Cloud IDE
https://github.com/buefy/buefy
Browser support
Recent versions of Firefox, Chrome, Edge, Opera and Safari. IE10+ is only partially supported.
Contributing
Please see the contributing guidelines
Versioning
Version will follow v0.Y.Z, where:
- Y: Major (breaking changes)
- Z: Minor or patch
Core Team
Walter Tommasi |
Special thanks to Rafael Beraldo, the original author.
Contributors â¨
Thanks goes to these wonderful people (emoji key):
Rafael Beraldo ð» |
Alexandre Paradis ð» |
Yuxing Liao ð» |
Adrien ð» |
Apolokak Lab ð» |
Antério Vieira ð» |
Jorge Nieto ð» |
Mateus Machado Luna ð» |
All contributors |
This project follows the all-contributors specification. Contributions of any kind welcome!
License 
Code released under MIT license.
Top Related Projects
🐉 Vue Component Framework
A Vue.js 2.0 UI Toolkit for Web
Quasar Framework - Build high-performance VueJS user interfaces in record time
BootstrapVue provides one of the most comprehensive implementations of Bootstrap v4 for Vue.js. With extensive and automated WAI-ARIA accessibility markup.
Next Generation Vue UI Component Library
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot