Files
Ubuntu 18c4ddcd05 drover: task-1767764907653950146
Task: Improve API documentation
2026-01-10 05:38:15 +00:00

2.0 KiB

Toggle Component API

A two-state button that can be on or off.


Installation

# Cargo.toml
[dependencies]
shadcn-ui-leptos-toggle = "0.7"
use shadcn_ui_leptos_toggle::Toggle;

Component API

Toggle

Prop Type Default Description
pressed Signal<bool> Required Toggle state
on_change Option<Callback<bool>> None Change handler
disabled Signal<bool> false Disable toggle
variant MaybeProp<ToggleVariant> Default Visual style
class MaybeProp<String> None Additional CSS classes

ToggleVariant

pub enum ToggleVariant {
    Default,
    Outline,
}

Usage Examples

Basic Toggle

use leptos::prelude::*;
use shadcn_ui_leptos_toggle::Toggle;

#[component]
pub fn MyComponent() -> impl IntoView {
    let (pressed, set_pressed) = signal(false);

    view! {
        <Toggle
            pressed=pressed.into()
            on_change=Some(Callback::new(move |v| set_pressed.set(v)))
        >
            "Toggle me"
        </Toggle>
    }
}

CSS Classes

.toggle {
    inline-flex items-center justify-center rounded-md
    text-sm font-medium transition-colors
    hover:bg-muted hover:text-muted-foreground
    focus-visible:outline-none focus-visible:ring-2
    focus-visible:ring-ring disabled:pointer-events-none
    disabled:opacity-50
}

.toggle[data-state=on] {
    bg-accent text-accent-foreground
}

Accessibility

Keyboard Navigation

Key Action
Enter Toggle state
Space Toggle state

TypeScript API

interface ToggleProps {
  pressed: boolean;
  onChange?: (pressed: boolean) => void;
  disabled?: boolean;
  variant?: 'default' | 'outline';
  className?: string;
}

export const Toggle: React.FC<ToggleProps>;

Source: packages/leptos/toggle/src/default.rs