Toggle

A pressable button that alternates between on and off.

Basic

Toggle manages pressed state internally when used uncontrolled via defaultPressed. Use onPressedChange to react to state changes.

Off
'use client';

import { useState } from 'react';
import { Toggle } from '@venator-ui/ui';

export function ToggleExample() {
const [pressed, setPressed] = useState(false);

return (
  <div className="flex items-center gap-3">
    <Toggle pressed={pressed} onPressedChange={setPressed}>
      Bold
    </Toggle>
    <span className="text-sm text-neutral-500">
      {pressed ? 'On' : 'Off'}
    </span>
  </div>
);
}

Sizes

Use the size prop to control padding and font size.

<Toggle size="sm">Small</Toggle>
<Toggle size="md">Medium</Toggle>
<Toggle size="lg">Large</Toggle>

Disabled

Set disabled to prevent interaction and apply muted styles.

<Toggle disabled>Disabled off</Toggle>
<Toggle defaultPressed disabled>Disabled on</Toggle>

Props

Toggle

PropTypeDefaultDescription
pressedbooleanControlled pressed state
defaultPressedbooleanfalseInitial pressed state in uncontrolled mode
onPressedChange(pressed: boolean) => voidCalled when pressed state changes
size'sm' | 'md' | 'lg''md'Controls padding and font size
disabledbooleanfalsePrevents interaction and applies muted styles
classNamestringAdditional Tailwind classes
childrenReactNodeLabel or icon content