Skip to content

Built-in components

29 components, already in the box

No install, no import, no registration. They are custom elements the library defines when it starts, so writing the tag is the whole usage.

Every component below is running on this page, rendered by the same voodoo.full.min.js the install guide hands you. The code under each one is the markup that produced it, and the props are read out of the source rather than typed by hand.

Actions

Things a person presses.

<v-button>

accepts content
Save Cancel Sending
v-button.html
<v-button variant="primary">Save</v-button>
<v-button variant="ghost">Cancel</v-button>
<v-button variant="primary" loading>Sending</v-button>

Props

variant size icon iconRight type loading disabled block rounded ariaLabel

<v-icon-button>

v-icon-button.html
<v-icon-button icon="plus" label="Add"></v-icon-button>
<v-icon-button icon="search" label="Search"></v-icon-button>
<v-icon-button icon="trash" label="Delete" variant="ghost"></v-icon-button>

Props

icon label variant size type disabled loading rounded

<v-tooltip-button>

accepts content
Copy
v-tooltip-button.html
<v-tooltip-button tip="Copies to the clipboard">Copy</v-tooltip-button>

Props

tooltip placement variant size icon type disabled ariaLabel

Form fields

Every one works with v-model, and with the validation directives.

<v-input>

v-input.html
<v-input label="Email" type="email" placeholder="you@example.com"></v-input>

Props

label type placeholder hint error value name id icon suffix size autocomplete inputmode maxlength min max step required disabled readonly clearable

<v-textarea>

v-textarea.html
<v-textarea label="Notes" rows="3"></v-textarea>

Props

label placeholder hint error value name id rows maxlength size resize required disabled readonly counter

<v-select>

v-select.html
<div v-data="{ countries: ['Brazil', 'Portugal', 'Japan'] }">
  <v-select label="Country" :options="countries"></v-select>
</div>

Props

label placeholder searchPlaceholder emptyText options value hint error name id size multiple searchable clearable disabled required

<v-checkbox>

accepts content
v-checkbox.html
<v-checkbox label="Remember me"></v-checkbox>

Props

label description error name id value checked disabled required

<v-radio>

accepts content
v-radio.html
<v-radio name="plan" label="Monthly"></v-radio>

Props

label description error name id value checked disabled required

<v-switch>

accepts content
v-switch.html
<v-switch label="Notifications"></v-switch>

Props

label description name id size checked disabled

<v-field>

accepts content
v-field.html
<v-field label="Name" hint="As it appears on your card"></v-field>

Props

label hint error for required disabled

<v-label>

accepts content
Email
v-label.html
<v-label for="email">Email</v-label>

Props

for size required

Status

Telling the reader what is going on.

<v-alert>

accepts content
The library starts itself.
v-alert.html
<v-alert tone="info" title="Heads up">The library starts itself.</v-alert>

Props

tone title icon closable closeLabel

<v-badge>

accepts content
Active Overdue
v-badge.html
<v-badge tone="success">Active</v-badge>
<v-badge tone="danger">Overdue</v-badge>

Props

tone variant size icon dot

<v-tag>

accepts content
design frontend
v-tag.html
<v-tag>design</v-tag>
<v-tag closable>frontend</v-tag>

Props

tone variant icon closable removeLabel

<v-progress>

v-progress.html
<v-progress value="70"></v-progress>

Props

value max tone size label showValue indeterminate

<v-spinner>

v-spinner.html
<v-spinner></v-spinner>

Props

size tone label

<v-skeleton>

v-skeleton.html
<v-skeleton lines="3"></v-skeleton>

Props

width height radius lines circle

<v-rating>

v-rating.html
<v-rating value="4"></v-rating>

Props

value max size label readonly disabled showValue allowClear

Layout and data

Structure, and the shapes data arrives in.

<v-card>

accepts content
Everything included.
v-card.html
<v-card title="Plan" subtitle="Monthly">Everything included.</v-card>

Props

title subtitle icon padded hoverable

<v-table>

v-table.html
<div v-data="{
  cols: ['Name', 'Role'],
  people: [['Ada', 'Engineer'], ['Grace', 'Admiral']]
}">
  <v-table :columns="cols" :rows="people"></v-table>
</div>

Props

columns rows empty sortable dense striped hover caption

<v-stat>

accepts content
v-stat.html
<v-stat label="Revenue" value="12,480" trend="up"></v-stat>

Props

label value delta hint icon suffix inverted

<v-timeline>

accepts content
v-timeline.html
<div v-data="{ events: ['Opened', 'In review', 'Merged'] }">
  <v-timeline :items="events"></v-timeline>
</div>

Props

items

<v-divider>

v-divider.html
<v-divider></v-divider>

Props

label vertical spacing

<v-empty-state>

accepts content
v-empty-state.html
<v-empty-state title="Nothing here yet" text="Add your first item."></v-empty-state>

Props

icon title description

<v-code-block>

accepts content
v-code-block.html
<v-code-block code="&lt;div v-data=&quot;{ n: 0 }&quot;&gt;"></v-code-block>

Props

code language filename copyLabel copiedLabel wrap

<v-avatar>

v-avatar.html
<v-avatar name="Ada Lovelace"></v-avatar>

Props

name src alt size shape status