Toggle Group
A set of two-state buttons that can be toggled on or off.
import ToggleGroup from '@dinui/react/toggle-group'import { IconBold, IconItalic, IconUnderline } from '@tabler/icons-react'
export default function ToggleGroupDemo() { return ( <ToggleGroup type="multiple" icon> <ToggleGroup.Item value="bold" aria-label="Toggle bold" icon={false}> <ToggleGroup.Item.LeftIcon> <IconBold /> </ToggleGroup.Item.LeftIcon> Bold </ToggleGroup.Item> <ToggleGroup.Item value="italic" aria-label="Toggle italic"> <ToggleGroup.Item.Icon> <IconItalic /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> <ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough"> <ToggleGroup.Item.Icon> <IconUnderline /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> </ToggleGroup> )}Outline
import ToggleGroup from '@dinui/react/toggle-group'import { IconBold, IconItalic, IconUnderline } from '@tabler/icons-react'
export default function ToggleGroupOutlineDemo() { return ( <ToggleGroup type="multiple" variant="outline"> <ToggleGroup.Item value="bold" aria-label="Toggle bold" icon={false}> <ToggleGroup.Item.LeftIcon> <IconBold /> </ToggleGroup.Item.LeftIcon> Bold </ToggleGroup.Item> <ToggleGroup.Item value="italic" aria-label="Toggle italic"> <ToggleGroup.Item.Icon> <IconItalic /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> <ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough"> <ToggleGroup.Item.Icon> <IconUnderline /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> </ToggleGroup> )}Single
import ToggleGroup from '@dinui/react/toggle-group'import { IconBold, IconItalic, IconUnderline } from '@tabler/icons-react'
export default function ToggleGroupSingleDemo() { return ( <ToggleGroup type="single"> <ToggleGroup.Item value="bold" aria-label="Toggle bold" icon={false}> <ToggleGroup.Item.LeftIcon> <IconBold /> </ToggleGroup.Item.LeftIcon> Bold </ToggleGroup.Item> <ToggleGroup.Item value="italic" aria-label="Toggle italic"> <ToggleGroup.Item.Icon> <IconItalic /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> <ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough"> <ToggleGroup.Item.Icon> <IconUnderline /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> </ToggleGroup> )}Small
import ToggleGroup from '@dinui/react/toggle-group'import { IconBold, IconItalic, IconUnderline } from '@tabler/icons-react'
export default function ToggleGroupSmDemo() { return ( <ToggleGroup type="single" size="sm"> <ToggleGroup.Item value="bold" aria-label="Toggle bold" icon={false}> <ToggleGroup.Item.LeftIcon> <IconBold /> </ToggleGroup.Item.LeftIcon> Bold </ToggleGroup.Item> <ToggleGroup.Item value="italic" aria-label="Toggle italic"> <ToggleGroup.Item.Icon> <IconItalic /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> <ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough"> <ToggleGroup.Item.Icon> <IconUnderline /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> </ToggleGroup> )}Large
import ToggleGroup from '@dinui/react/toggle-group'import { IconBold, IconItalic, IconUnderline } from '@tabler/icons-react'
export default function ToggleGroupLgDemo() { return ( <ToggleGroup type="multiple" size="lg"> <ToggleGroup.Item value="bold" aria-label="Toggle bold" icon={false}> <ToggleGroup.Item.LeftIcon> <IconBold /> </ToggleGroup.Item.LeftIcon> Bold </ToggleGroup.Item> <ToggleGroup.Item value="italic" aria-label="Toggle italic"> <ToggleGroup.Item.Icon> <IconItalic /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> <ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough"> <ToggleGroup.Item.Icon> <IconUnderline /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> </ToggleGroup> )}Disabled
import ToggleGroup from '@dinui/react/toggle-group'import { IconBold, IconItalic, IconUnderline } from '@tabler/icons-react'
export default function ToggleGroupDisabledDemo() { return ( <ToggleGroup type="multiple" disabled> <ToggleGroup.Item value="bold" aria-label="Toggle bold" icon={false}> <ToggleGroup.Item.LeftIcon> <IconBold /> </ToggleGroup.Item.LeftIcon> Bold </ToggleGroup.Item> <ToggleGroup.Item value="italic" aria-label="Toggle italic"> <ToggleGroup.Item.Icon> <IconItalic /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> <ToggleGroup.Item value="strikethrough" aria-label="Toggle strikethrough"> <ToggleGroup.Item.Icon> <IconUnderline /> </ToggleGroup.Item.Icon> </ToggleGroup.Item> </ToggleGroup> )}Installation
-
Follow Installation Guide
To enable DinUI functionality in your project, you will need to properly set up Tailwind and install the necessary dependencies. -
All done
You now can start using this component in your project.
-
Follow Installation Guide
To enable DinUI functionality in your project, you will need to properly set up Tailwind and install the necessary dependencies. -
Run the following command in your project
Terminal window npx @dinui/cli@latest add toggle-groupTerminal window yarn dlx @dinui/cli@latest add toggle-groupTerminal window pnpm dlx @dinui/cli@latest add toggle-groupTerminal window bunx @dinui/cli@latest add toggle-group -
Update the import paths to match your project setup
-
All done
You now can start using this component in your project.
-
Follow Installation Guide
To enable DinUI functionality in your project, you will need to properly set up Tailwind and install the necessary dependencies. -
Install dependencies
Terminal window npm install @radix-ui/react-toggle-group tailwind-variants type-festTerminal window yarn add @radix-ui/react-toggle-group tailwind-variants type-festTerminal window pnpm add @radix-ui/react-toggle-group tailwind-variants type-festTerminal window bun add @radix-ui/react-toggle-group tailwind-variants type-fest -
Copy and paste the following code into your project
'use client'import Toggle, { toggle } from '@dinui/react/toggle'import * as ToggleGroupPrimitive from '@radix-ui/react-toggle-group'import { createContext, forwardRef, useContext } from 'react'import { tv, type VariantProps } from 'tailwind-variants'import type { Merge } from 'type-fest'const toggleGroup = tv({slots: {group: 'flex items-center justify-center gap-1',},})type ToggleVariantProps = VariantProps<typeof toggle>const ToggleGroupContext = createContext<ToggleVariantProps>(toggle.defaultVariants)const ToggleGroupRoot = forwardRef<React.ElementRef<typeof ToggleGroupPrimitive.Root>,Merge<React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root>, ToggleVariantProps>>(({ variant, icon, size, ...props }, ref) => {const variantProps = { variant, icon, size }const { group } = toggleGroup()return (<ToggleGroupContext.Provider value={variantProps}><ToggleGroupPrimitive.Root{...props}ref={ref}className={group({ className: props.className })}/></ToggleGroupContext.Provider>)})ToggleGroupRoot.displayName = ToggleGroupPrimitive.Root.displayNameconst ToggleGroupItem = forwardRef<React.ElementRef<typeof ToggleGroupPrimitive.Item>,Merge<React.ComponentPropsWithoutRef<typeof Toggle>,React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item>>>(({ children, asChild, ...props }, ref) => {const variantProps = useContext(ToggleGroupContext)return (<ToggleGroupPrimitive.Item {...variantProps} {...props} ref={ref} asChild><Toggle asChild={asChild}>{children}</Toggle></ToggleGroupPrimitive.Item>)})ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayNameconst ToggleGroup = Object.assign(ToggleGroupRoot, {Item: Object.assign({ ...Toggle }, ToggleGroupItem),})export default ToggleGroupexport { toggleGroup, toggle, ToggleGroupPrimitive } -
Update the import paths to match your project setup
-
All done
You now can start using this component in your project.