Vitral 0.2
Form

ToggleButton

A button that stays pressed, with its own on and off labels and icons.

Import

main.ts
import { ToggleButton } from '@vitral/vue';

Basic

pressed: false
<script setup lang="ts">import { ToggleButton } from '@vitral/vue';import { ref } from 'vue'; const bold = ref(false);</script> <template>    <div style="display: grid; gap: 0.5rem; justify-items: start">        <ToggleButton v-model="bold" on-label="Bold" off-label="Bold" />        <small style="color: var(--vt-text-muted-color)">pressed: {{ bold }}</small>    </div></template>

Icons and labels

<script setup lang="ts">import { ToggleButton } from '@vitral/vue';import { ref } from 'vue'; const starred = ref(true);const locked = ref(false);</script> <template>    <ToggleButton v-model="starred" on-label="Starred" off-label="Star" on-icon="star" off-icon="star" aria-label="Star" />    <ToggleButton v-model="locked" on-label="On" off-label="Off" on-icon="check" off-icon="close" aria-label="Lock editing" /></template>

Sizes and states

<script setup lang="ts">import { ToggleButton } from '@vitral/vue';</script> <template>    <ToggleButton :model-value="true" on-label="Small" off-label="Small" size="small" />    <ToggleButton :model-value="false" on-label="Large" off-label="Large" size="large" />    <ToggleButton :model-value="false" on-label="Invalid" off-label="Invalid" invalid />    <ToggleButton :model-value="true" on-label="Disabled" off-label="Disabled" disabled /></template>

API

Read from packages/vue/src/components/ToggleButton/types.ts, so it says what the component actually accepts.

Props

NameTypeDescription
onLabelstring—
offLabelstring—
onIconIconProp—
offIconIconProp—
sizeSize—
disabledboolean—
invalidboolean—
fluidboolean—

Plus pt, dt and unstyled from BaseProps, see pass-through and unstyled mode.

Emits

EventPayloadDescription
changeevent: ToggleButtonChangeEvent—

Slots

NameSlot propsDescription
default(props: { checked: boolean })Replaces the label; receives the current state.
icon(props: { checked: boolean })—