'use client' import Toggle, { toggle } from './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 const ToggleGroupContext = createContext(toggle.defaultVariants) const ToggleGroupRoot = forwardRef< React.ElementRef, Merge, ToggleVariantProps> >(({ variant, icon, size, ...props }, ref) => { const variantProps = { variant, icon, size } const { group } = toggleGroup() return ( ) }) ToggleGroupRoot.displayName = ToggleGroupPrimitive.Root.displayName const ToggleGroupItem = forwardRef< React.ElementRef, Merge< React.ComponentPropsWithoutRef, React.ComponentPropsWithoutRef > >(({ children, asChild, ...props }, ref) => { const variantProps = useContext(ToggleGroupContext) return ( {children} ) }) ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName const ToggleGroup = Object.assign(ToggleGroupRoot, { Item: Object.assign({ ...Toggle }, ToggleGroupItem), }) export default ToggleGroup export { toggleGroup, toggle, ToggleGroupPrimitive }