{ "name": "social-button", "type": "registry:component", "dependencies": [ "lucide-react", "motion" ], "registryDependencies": [ "button" ], "files": [ { "type": "registry:component", "content": "\"use client\";\n\n/**\n * @author: @dorianbaffier\n * @description: Social Button\n * @version: 1.0.0\n * @date: 2025-06-26\n * @license: MIT\n * @website: https://kokonutui.com\n * @github: https://github.com/kokonut-labs/kokonutui\n */\n\nimport type { LucideIcon } from \"lucide-react\";\nimport { Instagram, Link, Linkedin, Twitter } from \"lucide-react\";\nimport { motion } from \"motion/react\";\nimport { useState } from \"react\";\nimport { Button } from \"@/components/ui/button\";\nimport { cn } from \"@/lib/utils\";\n\ninterface ShareItem {\n icon: LucideIcon;\n label: string;\n}\n\ninterface SocialButtonProps\n extends React.ButtonHTMLAttributes {\n label?: string;\n items?: ShareItem[];\n onShare?: (index: number, item: ShareItem) => void;\n className?: string;\n}\n\nconst DEFAULT_SHARE_ITEMS: ShareItem[] = [\n { icon: Twitter, label: \"Share on Twitter\" },\n { icon: Instagram, label: \"Share on Instagram\" },\n { icon: Linkedin, label: \"Share on LinkedIn\" },\n { icon: Link, label: \"Copy link\" },\n];\n\nexport default function SocialButton({\n label = \"Share\",\n items = DEFAULT_SHARE_ITEMS,\n onShare,\n className,\n ...props\n}: SocialButtonProps) {\n const [isVisible, setIsVisible] = useState(false);\n const [activeIndex, setActiveIndex] = useState(null);\n\n const handleShare = (index: number) => {\n setActiveIndex(index);\n onShare?.(index, items[index]);\n setTimeout(() => setActiveIndex(null), 300);\n };\n\n return (\n setIsVisible(true)}\n onMouseLeave={() => setIsVisible(false)}\n >\n \n \n \n \n {label}\n \n \n \n\n \n {items.map((button, i) => (\n handleShare(i)}\n transition={{\n duration: 0.3,\n ease: [0.23, 1, 0.32, 1],\n delay: isVisible ? i * 0.05 : 0,\n }}\n type=\"button\"\n >\n \n \n \n \n \n ))}\n \n \n );\n}\n", "path": "/components/kokonutui/social-button.tsx", "target": "components/kokonutui/social-button.tsx" } ] }