Convert Figma logo to code with AI

buefy logobuefy

Lightweight UI components for Vue.js based on Bulma

9,577
1,114
9,577
40

Top Related Projects

40,356

🐉 Vue Component Framework

54,210

A Vue.js 2.0 UI Toolkit for Web

26,384

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.

12,135

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

  1. Basic Button Component:
<template>
  <b-button @click="handleClick">Click me!</b-button>
</template>

<script>
export default {
  methods: {
    handleClick() {
      console.log('Button clicked!')
    }
  }
}
</script>
  1. 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>
  1. 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

  1. Install Buefy in your Vue.js project:
npm install buefy
  1. 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)
  1. 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

40,356

🐉 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.

54,210

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.

26,384

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.

12,135

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 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

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 for Vue 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.

NPM DownloadsLast 30 Days