Skip to main content

Installation

npm install @kuzenbo/core

Usage

import { Toggle } from "@kuzenbo/core";
import { BoldIcon } from "lucide-react";

function Example() {
  return (
    <Toggle aria-label="Toggle bold">
      <BoldIcon />
    </Toggle>
  );
}

Props

pressed
boolean
The controlled pressed state.
defaultPressed
boolean
The default pressed state (uncontrolled mode).
onPressedChange
(pressed: boolean) => void
Callback when the pressed state changes.
disabled
boolean
Whether the toggle is disabled.
variant
'default' | 'outline'
default:"'default'"
The visual style variant.
size
'xs' | 'sm' | 'md' | 'lg' | 'xl'
default:"'md'"
The size of the toggle.
className
string
Additional CSS classes to apply.

Examples

Basic Toggle

<Toggle aria-label="Toggle italic">
  <ItalicIcon />
</Toggle>

With Text

<Toggle aria-label="Toggle bold">
  <BoldIcon />
  Bold
</Toggle>

Outline Variant

<Toggle variant="outline" aria-label="Toggle underline">
  <UnderlineIcon />
</Toggle>

Different Sizes

<div className="flex items-center gap-2">
  <Toggle size="xs" aria-label="Extra small">
    <BoldIcon />
  </Toggle>
  <Toggle size="sm" aria-label="Small">
    <BoldIcon />
  </Toggle>
  <Toggle size="md" aria-label="Medium">
    <BoldIcon />
  </Toggle>
  <Toggle size="lg" aria-label="Large">
    <BoldIcon />
  </Toggle>
  <Toggle size="xl" aria-label="Extra large">
    <BoldIcon />
  </Toggle>
</div>

Controlled State

const [pressed, setPressed] = useState(false);

<Toggle
  pressed={pressed}
  onPressedChange={setPressed}
  aria-label="Toggle bold"
>
  <BoldIcon />
</Toggle>

Disabled State

<Toggle disabled aria-label="Toggle bold">
  <BoldIcon />
</Toggle>

Text Formatting Toolbar

function TextFormatting() {
  return (
    <div className="flex gap-1">
      <Toggle aria-label="Toggle bold">
        <BoldIcon />
      </Toggle>
      <Toggle aria-label="Toggle italic">
        <ItalicIcon />
      </Toggle>
      <Toggle aria-label="Toggle underline">
        <UnderlineIcon />
      </Toggle>
      <Toggle aria-label="Toggle strikethrough">
        <StrikethroughIcon />
      </Toggle>
    </div>
  );
}

Build docs developers (and LLMs) love