{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "hover-gradient-navbar", "type": "registry:ui", "title": "Hover Gradient Navbar", "description": "A navigation bar with gradient hover effects and smooth transitions.", "dependencies": [ "motion", "lucide-react" ], "files": [ { "path": "registry/ruixenui/hover-gradient-navbar.tsx", "content": "\"use client\";\nimport React from \"react\";\nimport { motion, Variants } from \"motion/react\";\nimport {\n Home,\n Settings,\n Bell,\n User,\n Mail,\n BarChart3,\n HelpCircle,\n LogOut,\n} from \"lucide-react\";\n\n// --- HoverGradientNavBar Component ---\n\ninterface HoverGradientMenuItem {\n icon: React.ReactNode;\n label: string;\n href: string;\n gradient: string;\n iconColor: string;\n}\n\nconst menuItems: HoverGradientMenuItem[] = [\n {\n icon: ,\n label: \"Home\",\n href: \"#\",\n gradient:\n \"radial-gradient(circle, rgba(59,130,246,0.15) 0%, rgba(37,99,235,0.06) 50%, rgba(29,78,216,0) 100%)\",\n iconColor: \"group-hover:text-blue-500 dark:group-hover:text-blue-400\",\n },\n {\n icon: ,\n label: \"Messages\",\n href: \"#\",\n gradient:\n \"radial-gradient(circle, rgba(147,51,234,0.15) 0%, rgba(126,34,206,0.06) 50%, rgba(88,28,135,0) 100%)\",\n iconColor: \"group-hover:text-purple-500 dark:group-hover:text-purple-400\",\n },\n {\n icon: ,\n label: \"Settings\",\n href: \"#\",\n gradient:\n \"radial-gradient(circle, rgba(59,130,246,0.15) 0%, rgba(37,99,235,0.06) 50%, rgba(29,78,216,0) 100%)\",\n iconColor: \"group-hover:text-blue-500 dark:group-hover:text-blue-400\",\n },\n {\n icon: ,\n label: \"Profile\",\n href: \"#\",\n gradient:\n \"radial-gradient(circle, rgba(239,68,68,0.15) 0%, rgba(220,38,38,0.06) 50%, rgba(185,28,28,0) 100%)\",\n iconColor: \"group-hover:text-red-500 dark:group-hover:text-red-400\",\n },\n {\n icon: ,\n label: \"Help\",\n href: \"#\",\n gradient:\n \"radial-gradient(circle, rgba(20,184,166,0.15) 0%, rgba(13,148,136,0.06) 50%, rgba(15,118,110,0) 100%)\",\n iconColor: \"group-hover:text-teal-500 dark:group-hover:text-teal-400\",\n },\n {\n icon: ,\n label: \"Logout\",\n href: \"#\",\n gradient:\n \"radial-gradient(circle, rgba(161,98,7,0.15) 0%, rgba(133,77,14,0.06) 50%, rgba(100,62,8,0) 100%)\",\n iconColor: \"group-hover:text-amber-600 dark:group-hover:text-amber-400\",\n },\n];\n\n// Animation variants\nconst itemVariants: Variants = {\n initial: { rotateX: 0, opacity: 1 },\n hover: { rotateX: -90, opacity: 0 },\n};\n\nconst backVariants: Variants = {\n initial: { rotateX: 90, opacity: 0 },\n hover: { rotateX: 0, opacity: 1 },\n};\n\nconst glowVariants: Variants = {\n initial: { opacity: 0, scale: 0.8 },\n hover: {\n opacity: 1,\n scale: 2,\n transition: {\n opacity: { duration: 0.5, ease: [0.4, 0, 0.2, 1] },\n scale: { duration: 0.5, type: \"spring\", stiffness: 300, damping: 25 },\n },\n },\n};\n\nconst sharedTransition = {\n type: \"spring\" as const,\n stiffness: 100,\n damping: 20,\n duration: 0.5,\n};\n\nfunction HoverGradientNavBar(): React.JSX.Element {\n return (\n
\n \n
    \n {menuItems.map((item: HoverGradientMenuItem) => (\n \n \n {/* Per-item glow */}\n \n {/* Front-facing */}\n \n \n {item.icon}\n \n \n {item.label}\n \n \n {/* Back-facing */}\n \n \n {item.icon}\n \n \n {item.label}\n \n \n \n \n ))}\n
\n \n
\n );\n}\n\nexport default HoverGradientNavBar;\n", "type": "registry:ui", "target": "components/ruixen/hover-gradient-navbar.tsx" } ] }