stunning screenshots in seconds https://moocup.jaydip.me
at from-github 59 lines 1.7 kB view raw
1import * as React from "react" 2import * as ToggleGroupPrimitive from "@radix-ui/react-toggle-group" 3import { type VariantProps } from "class-variance-authority" 4 5import { cn } from "@/lib/utils" 6import { toggleVariants } from "@/components/ui/toggle" 7 8const ToggleGroupContext = React.createContext< 9 VariantProps<typeof toggleVariants> 10>({ 11 size: "default", 12 variant: "default", 13}) 14 15const ToggleGroup = React.forwardRef< 16 React.ElementRef<typeof ToggleGroupPrimitive.Root>, 17 React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Root> & 18 VariantProps<typeof toggleVariants> 19>(({ className, variant, size, children, ...props }, ref) => ( 20 <ToggleGroupPrimitive.Root 21 ref={ref} 22 className={cn("flex items-center justify-center gap-1", className)} 23 {...props} 24 > 25 <ToggleGroupContext.Provider value={{ variant, size }}> 26 {children} 27 </ToggleGroupContext.Provider> 28 </ToggleGroupPrimitive.Root> 29)) 30 31ToggleGroup.displayName = ToggleGroupPrimitive.Root.displayName 32 33const ToggleGroupItem = React.forwardRef< 34 React.ElementRef<typeof ToggleGroupPrimitive.Item>, 35 React.ComponentPropsWithoutRef<typeof ToggleGroupPrimitive.Item> & 36 VariantProps<typeof toggleVariants> 37>(({ className, children, variant, size, ...props }, ref) => { 38 const context = React.useContext(ToggleGroupContext) 39 40 return ( 41 <ToggleGroupPrimitive.Item 42 ref={ref} 43 className={cn( 44 toggleVariants({ 45 variant: context.variant || variant, 46 size: context.size || size, 47 }), 48 className 49 )} 50 {...props} 51 > 52 {children} 53 </ToggleGroupPrimitive.Item> 54 ) 55}) 56 57ToggleGroupItem.displayName = ToggleGroupPrimitive.Item.displayName 58 59export { ToggleGroup, ToggleGroupItem }