or run

npx @tessl/cli init
Log in

Version

Tile

Overview

Evals

Files

docs

advanced-inputs.mddata-display.mddatetime.mdform-components.mdindex.mdlayout.mdnavigation.mdoverlay.mdprogrammatic.mdutilities.md
tile.json

overlay.mddocs/

Overlay Components

Modal-style components that appear over main content, providing both declarative template usage and programmatic JavaScript APIs.

Dialog Component

Modal dialog for confirmations, alerts, and user input with declarative and programmatic APIs.

export const BDialog: Component<{
  active?: boolean;
  title?: string;
  message?: string;
  icon?: string;
  iconPack?: string;
  hasIcon?: boolean;
  type?: 'is-white' | 'is-light' | 'is-dark' | 'is-black' | 'is-text' | 
         'is-primary' | 'is-link' | 'is-info' | 'is-success' | 'is-warning' | 'is-danger';
  size?: 'is-small' | 'is-medium' | 'is-large';
  confirmText?: string;
  cancelText?: string;
  canCancel?: boolean | string[];
  hasInput?: boolean;
  inputAttrs?: object;
  inputValue?: string;
  trapFocus?: boolean;
  autoFocus?: boolean;
  container?: string;
  programmatic?: boolean;
  onConfirm?: (value?: string) => void;
  onCancel?: () => void;
}>;

Usage example:

import { BDialog } from "buefy";

// Template usage
<BDialog 
  v-model:active="showDialog"
  title="Confirm Action"
  message="Are you sure you want to delete this item?"
  type="is-danger"
  :has-icon="true"
  icon="alert-circle"
  @confirm="handleConfirm"
  @cancel="handleCancel"
/>

// Programmatic usage (see Programmatic APIs section)

Modal Component

Generic modal container for custom content with full control over layout and styling.

export const BModal: Component<{
  active?: boolean;
  component?: Component;
  content?: string;
  programmatic?: boolean;
  props?: object;
  events?: object;
  width?: string | number;
  hasModalCard?: boolean;
  animation?: string;
  canCancel?: boolean | string[];
  scroll?: 'clip' | 'keep';
  fullScreen?: boolean;
  trapFocus?: boolean;
  autoFocus?: boolean;
  customClass?: string;
  ariaRole?: string;
  ariaModal?: boolean;
  ariaLabel?: string;
  destroyOnHide?: boolean;
  container?: string;
  onCancel?: () => void;
}>;

Usage example:

import { BModal } from "buefy";

// Basic modal
<BModal v-model:active="showModal" :width="640" scroll="keep">
  <div class="modal-card" style="width: auto">
    <header class="modal-card-head">
      <p class="modal-card-title">Custom Modal</p>
    </header>
    <section class="modal-card-body">
      <p>Modal content goes here</p>
    </section>
    <footer class="modal-card-foot">
      <BButton @click="showModal = false">Close</BButton>
    </footer>
  </div>
</BModal>

// Component modal
<BModal 
  v-model:active="showComponentModal"
  :component="CustomComponent"
  :props="{ title: 'Dynamic Title' }"
  :events="{ save: onSave }"
/>

Toast Component

Temporary notification messages that appear briefly and auto-dismiss.

export const BToast: Component<{
  active?: boolean;
  message?: string;
  type?: 'is-white' | 'is-light' | 'is-dark' | 'is-black' | 'is-text' | 
         'is-primary' | 'is-link' | 'is-info' | 'is-success' | 'is-warning' | 'is-danger';
  position?: NoticePosition;
  duration?: number;
  queue?: boolean;
  indefinite?: boolean;
  pauseOnHover?: boolean;
  container?: string;
  onClose?: () => void;
}>;

Notification Component

Persistent notification messages with close buttons and action support.

export const BNotification: Component<{
  active?: boolean;
  type?: 'is-white' | 'is-light' | 'is-dark' | 'is-black' | 'is-text' | 
         'is-primary' | 'is-link' | 'is-info' | 'is-success' | 'is-warning' | 'is-danger';
  message?: string;
  duration?: number;
  indefinite?: boolean;
  pauseOnHover?: boolean;
  hasIcon?: boolean;
  icon?: string;
  iconPack?: string;
  iconSize?: string;
  autoClose?: boolean;
  queue?: boolean;
  position?: NoticePosition;
  container?: string;
  onClose?: () => void;
}>;

Snackbar Component

Brief messages with optional actions, typically shown at the bottom of the screen.

export const BSnackbar: Component<{
  active?: boolean;
  message?: string;
  type?: 'is-white' | 'is-light' | 'is-dark' | 'is-black' | 'is-text' | 
         'is-primary' | 'is-link' | 'is-info' | 'is-success' | 'is-warning' | 'is-danger';
  position?: NoticePosition;
  duration?: number;
  queue?: boolean;
  indefinite?: boolean;
  pauseOnHover?: boolean;
  actionText?: string;
  container?: string;
  onAction?: () => void;
  onClose?: () => void;
}>;

Loading Component

Full-screen or container-specific loading overlay with spinner animation.

export const BLoading: Component<{
  active?: boolean;
  programmatic?: boolean;
  container?: HTMLElement | string;
  isFullPage?: boolean;
  animation?: string;
  canCancel?: boolean;
  onCancel?: () => void;
}>;

Tooltip Component

Contextual help text that appears on hover or focus.

export const BTooltip: Component<{
  label?: string;
  type?: 'is-white' | 'is-light' | 'is-dark' | 'is-black' | 'is-text' | 
         'is-primary' | 'is-link' | 'is-info' | 'is-success' | 'is-warning' | 'is-danger';
  size?: 'is-small' | 'is-medium' | 'is-large';
  position?: 'is-top' | 'is-bottom' | 'is-left' | 'is-right';
  always?: boolean;
  animated?: boolean;
  square?: boolean;
  dashed?: boolean;
  multilined?: boolean;
  delay?: number;
  appendToBody?: boolean;
  triggers?: string[];
}>;

Usage examples:

import { 
  BToast, 
  BNotification, 
  BSnackbar, 
  BLoading, 
  BTooltip 
} from "buefy";

// Toast notification
<BToast 
  v-model:active="showToast"
  message="Operation completed!"
  type="is-success"
  position="is-top-right"
/>

// Persistent notification
<BNotification 
  v-model:active="showNotification"
  type="is-info"
  :has-icon="true"
  message="New updates available"
/>

// Snackbar with action
<BSnackbar 
  v-model:active="showSnackbar"
  message="Item deleted"
  action-text="Undo"
  @action="undoDelete"
/>

// Loading overlay
<BLoading v-model:active="isLoading" :is-full-page="true" />

// Tooltip
<BTooltip label="This is helpful information" position="is-top">
  <BButton>Hover me</BButton>
</BTooltip>

Programmatic Usage

All overlay components can be created programmatically:

import { 
  DialogProgrammatic, 
  ToastProgrammatic, 
  ModalProgrammatic, 
  NotificationProgrammatic, 
  SnackbarProgrammatic, 
  LoadingProgrammatic 
} from "buefy";

// Programmatic toast
ToastProgrammatic.open({
  message: 'Hello World!',
  type: 'is-success',
  duration: 4000
});

// Programmatic dialog
const result = await DialogProgrammatic.confirm({
  title: 'Confirm',
  message: 'Are you sure?',
  type: 'is-danger'
});

// Programmatic modal
ModalProgrammatic.open({
  component: MyComponent,
  props: { data: someData },
  events: { close: onModalClose }
});

// Programmatic loading
const loading = LoadingProgrammatic.open();
await someAsyncOperation();
loading.close();

Global Configuration

Configure default behavior for overlay components:

app.use(Buefy, {
  defaultToastPosition: 'is-bottom-right',
  defaultNotificationPosition: 'is-top-right',
  defaultToastDuration: 4000,
  defaultNotificationDuration: 5000,
  defaultModalCanCancel: ['escape', 'x', 'outside'],
  defaultModalScroll: 'keep',
  defaultProgrammaticPromise: true
});