{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "split-button", "dependencies": [ "lucide-react" ], "registryDependencies": [ "button", "dropdown-menu", "https://reusables.vercel.app/r/utils.json" ], "files": [ { "path": "registry/reusables/ui/split-button.tsx", "content": "\"use client\"\n\nimport type * as React from \"react\"\nimport { ChevronDown } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\nimport { Button } from \"@/components/ui/button\"\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuTrigger,\n} from \"@/components/ui/dropdown-menu\"\n\nexport interface SplitButtonOption {\n label: string\n onClick: () => void\n}\n\ninterface SplitButtonProps extends React.ButtonHTMLAttributes {\n options: SplitButtonOption[]\n mainAction: () => void\n variant?:\n | \"default\"\n | \"destructive\"\n | \"outline\"\n | \"secondary\"\n | \"ghost\"\n | \"link\"\n size?: \"default\" | \"sm\" | \"lg\" | \"icon\"\n dropdownAlign?: \"start\" | \"center\" | \"end\"\n}\n\nexport function SplitButton({\n children,\n options,\n mainAction,\n variant = \"default\",\n size = \"default\",\n dropdownAlign = \"end\",\n className,\n ...props\n}: SplitButtonProps) {\n return (\n
\n \n {children}\n \n \n \n \n \n \n \n \n {options.map((option, index) => (\n \n {option.label}\n \n ))}\n \n \n
\n )\n}\n", "type": "registry:ui", "target": "components/ui/split-button.tsx" } ], "type": "registry:ui" }