{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "toggle-group", "registryDependencies": [ "toggle" ], "files": [ { "path": "registry/new-york/ui/toggle-group.tsx", "content": "import type { VariantProps } from \"class-variance-authority\";\nimport * as React from \"react\";\nimport { toggleVariants } from \"@/components/ui/toggle\";\nimport { cn } from \"@/lib/utils\";\n\ninterface ToggleGroupContextValue extends VariantProps {\n\tvalue?: string | string[];\n\tonValueChange?: (value: string) => void;\n\ttype: \"single\" | \"multiple\";\n}\n\nconst ToggleGroupContext = React.createContext({\n\tsize: \"default\",\n\tvariant: \"default\",\n\ttype: \"single\",\n});\n\ninterface ToggleGroupProps\n\textends React.HTMLAttributes,\n\t\tVariantProps {\n\ttype: \"single\" | \"multiple\";\n\tvalue?: string | string[];\n\tonValueChange?: (value: string) => void;\n}\n\nconst ToggleGroup = React.forwardRef(\n\t(\n\t\t{\n\t\t\tclassName,\n\t\t\tvariant,\n\t\t\tsize,\n\t\t\ttype,\n\t\t\tvalue,\n\t\t\tonValueChange,\n\t\t\tchildren,\n\t\t\t...props\n\t\t},\n\t\tref,\n\t) => (\n\t\t\n\t\t\t\n\t\t\t\t{children}\n\t\t\t\n\t\t\n\t),\n);\n\nToggleGroup.displayName = \"ToggleGroup\";\n\ninterface ToggleGroupItemProps\n\textends React.ButtonHTMLAttributes,\n\t\tVariantProps {\n\tvalue: string;\n}\n\nconst ToggleGroupItem = React.forwardRef<\n\tHTMLButtonElement,\n\tToggleGroupItemProps\n>(({ className, children, variant, size, value, onClick, ...props }, ref) => {\n\tconst context = React.useContext(ToggleGroupContext);\n\n\tconst isPressed =\n\t\tcontext.type === \"single\"\n\t\t\t? context.value === value\n\t\t\t: Array.isArray(context.value) && context.value.includes(value);\n\n\tconst handleClick = (e: React.MouseEvent) => {\n\t\tonClick?.(e);\n\t\tcontext.onValueChange?.(value);\n\t};\n\n\treturn (\n\t\t\n\t\t\t{children}\n\t\t\n\t);\n});\n\nToggleGroupItem.displayName = \"ToggleGroupItem\";\n\nexport { ToggleGroup, ToggleGroupItem };\n", "type": "registry:ui" } ], "type": "registry:ui" }