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
The controlled pressed state.
The default pressed state (uncontrolled mode).
onPressedChange
(pressed: boolean) => void
Callback when the pressed state changes.
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.
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>
);
}