Lightweight UI components for Vue.js (v3) based on Bulma
npx @tessl/cli install tessl/npm-buefy@3.0.0Buefy is a lightweight Vue.js 3 component library built on top of the Bulma CSS framework. It provides 33 responsive UI components with both declarative (component-based) and programmatic APIs, delivering a complete solution for building modern web applications with consistent design and functionality.
npm install buefyimport Buefy from "buefy";For individual components:
import { BButton, BInput, BTable } from "buefy";For programmatic APIs:
import { DialogProgrammatic, ToastProgrammatic } from "buefy";import { createApp } from "vue";
import Buefy from "buefy";
import "buefy/dist/css/buefy.css";
const app = createApp({});
// Install all components
app.use(Buefy);
// Or install individual components
import { Button, Input } from "buefy";
app.use(Button);
app.use(Input);Buefy is organized around several key architectural patterns:
Complete form input components with validation, styling, and accessibility features built on Bulma form classes.
// Core form components
export const BInput: Component;
export const BButton: Component;
export const BCheckbox: Component;
export const BRadio: Component;
export const BSelect: Component;
export const BField: Component;Components for displaying structured data including tables, lists, and media content.
export const BTable: Component;
export const BTableColumn: Component;
export const BMessage: Component;
export const BTag: Component;
export const BProgress: Component;
export const BImage: Component;Navigation and layout components for building application structure and user workflows.
export const BNavbar: Component;
export const BBreadcrumb: Component;
export const BMenu: Component;
export const BTabs: Component;
export const BSteps: Component;
export const BPagination: Component;
export const BDropdown: Component;
export const BIcon: Component;Structural components for organizing content and creating responsive layouts.
export const BCarousel: Component;
export const BCollapse: Component;
export const BSidebar: Component;
export const BSkeleton: Component;Modal-style components that appear over main content, with both declarative and programmatic APIs.
export const BDialog: Component;
export const BModal: Component;
export const BToast: Component;
export const BNotification: Component;
export const BSnackbar: Component;
export const BLoading: Component;Specialized input components for date, time, and date-time selection with internationalization support.
export const BDatepicker: Component;
export const BTimepicker: Component;
export const BClockpicker: Component;
export const BDatetimepicker: Component;Sophisticated input components for complex data entry scenarios.
export const BAutocomplete: Component;
export const BColorpicker: Component;
export const BTaginput: Component;
export const BNumberinput: Component;
export const BSlider: Component;
export const BRate: Component;
export const BUpload: Component;JavaScript APIs for dynamically creating and managing overlay components without templates.
class DialogProgrammatic {
alert(params: string | DialogOpenParams): Promise<any> | DialogProgrammaticInstance;
confirm(params: DialogOpenParams): Promise<any> | DialogProgrammaticInstance;
prompt(params: DialogOpenParams): Promise<any> | DialogProgrammaticInstance;
}
class ToastProgrammatic {
open(params: string | ToastOpenParams): ToastProgrammaticInstance;
}Helper functions, color utilities, and type definitions for advanced usage and customization.
export default Color;
export * from "./utils/helpers";
export type * from "./utils/config";interface BuefyConfig {
defaultIconComponent?: string;
defaultIconPack?: string;
defaultToastPosition?: NoticePosition;
defaultSnackbarPosition?: NoticePosition;
defaultNotificationPosition?: NoticePosition;
defaultTooltipType?: string;
defaultTooltipAnimated?: boolean;
defaultInputAutocomplete?: string;
defaultDateFormatter?: (date: Date) => string;
defaultDateParser?: (dateString: string) => Date;
defaultDateCreator?: () => Date;
defaultTimeFormatter?: (date: Date) => string;
defaultTimeParser?: (timeString: string) => Date;
defaultModalCanCancel?: boolean | string[];
defaultModalScroll?: ModalScrollBehavior;
defaultDatepickerMobileNative?: boolean;
defaultTimepickerMobileNative?: boolean;
defaultNotificationDuration?: number;
defaultSnackbarDuration?: number;
defaultToastDuration?: number;
defaultProgrammaticPromise?: boolean;
defaultLinkTags?: string[];
defaultImageWebpFallback?: string;
defaultImageLazy?: boolean;
defaultUseHtml5Validation?: boolean;
defaultFieldLabelPosition?: string;
defaultFieldGrouped?: boolean;
defaultFieldGroupMultiline?: boolean;
defaultFieldAddons?: boolean;
defaultDatepickerCloseOnClick?: boolean;
defaultDatepickerShowWeekNumber?: boolean;
defaultDatepickerWeekNumberClickable?: boolean;
defaultDatepickerMobileModal?: boolean;
defaultTimepickerEnableSeconds?: boolean;
defaultTimepickerHoursLabel?: string;
defaultTimepickerMinutesLabel?: string;
defaultTimepickerSecondsLabel?: string;
defaultClockpickerType?: string;
defaultClockpickerHoursLabel?: string;
defaultClockpickerMinutesLabel?: string;
defaultTrapFocus?: boolean;
defaultAutoFocus?: boolean;
defaultTableSortIcon?: string;
defaultTableSortIconAsc?: string;
defaultTableSortIconDesc?: string;
defaultPaginationSimple?: boolean;
defaultPaginationSize?: string;
defaultPaginationPerPage?: number;
customIconPacks?: object;
}
type NoticePosition = 'is-top-right' | 'is-top' | 'is-top-left' | 'is-bottom-right' | 'is-bottom' | 'is-bottom-left';
type ModalScrollBehavior = 'clip' | 'keep';
type ModalCancellableOption = 'escape' | 'x' | 'outside' | 'button';