Components
Loading preview...
HeroUI v3 ToggleButtonGroup — single/multiple selection toggle buttons with sizes, orientation, detached and controlled modes.
@reapollo
npx shadcn@latest add https://21st.dev/r/larsen66/heroui-toggle-button-group"use client"
import type { Key } from "@heroui/react"
import { Bold, Italic, Strikethrough, Underline } from "lucide-react"
import { useState } from "react"
import {
ToggleButtonGroup,
ToggleButton,
} from "@/components/ui/heroui-toggle-button-group"
export default function Controlled() {
const [selectedKeys, setSelectedKeys] = useState(new Set<Key>(["bold"]))
return (
<div className="flex flex-col gap-4">
<ToggleButtonGroup
selectedKeys={selectedKeys}
selectionMode="multiple"
onSelectionChange={setSelectedKeys}
>
<ToggleButton isIconOnly aria-label="Bold" id="bold">
<Bold />
</ToggleButton>
<ToggleButton isIconOnly aria-label="Italic" id="italic">
<ToggleButtonGroup.Separator />
<Italic />
</ToggleButton>
<ToggleButton isIconOnly aria-label="Underline" id="underline">
<ToggleButtonGroup.Separator />
<Underline />
</ToggleButton>
<ToggleButton isIconOnly aria-label="Strikethrough" id="strikethrough">
<ToggleButtonGroup.Separator />
<Strikethrough />
</ToggleButton>
</ToggleButtonGroup>
<p className="text-sm text-muted-foreground">
Selected:{" "}
<span className="font-medium">
{selectedKeys.size > 0 ? [...selectedKeys].join(", ") : "None"}
</span>
</p>
</div>
)
}