Components
HeroUI v3 ToggleButton — a two-state button that stays pressed/selected when toggled, for like, bookmark, mute and similar on/off actions. Supports default and ghost variants, sm/md/lg sizes, icon-only mode, controlled selection via isSelected/onChange, render-prop children for per-state content, and disabled state, with full React Aria toggle semantics and accessibility. A thin re-export of the genuine @heroui/react package with @heroui/styles, so consumers install and render the real HeroUI primitive.
npx @21st-dev/cli@beta add hero_ui/heroui-toggle-buttonLoading preview...
"use client"
import { Heart } from "lucide-react"
import { useState } from "react"
import { ToggleButton } from "@/components/ui/heroui-toggle-button"
export default function Controlled() {
const [isSelected, setIsSelected] = useState(false)
return (
<div className="flex flex-col gap-4">
<ToggleButton isSelected={isSelected} onChange={setIsSelected}>
{({ isSelected: selected }) => (
<>
{selected ? <Heart fill="currentColor" /> : <Heart />}
{selected ? "Liked" : "Like"}
</>
)}
</ToggleButton>
<p className="text-sm text-muted">
Status:{" "}
<span className="font-medium">
{isSelected ? "Selected" : "Not selected"}
</span>
</p>
</div>
)
}
Loading preview...
Loading preview...
Loading preview...
Loading preview...
Loading preview...