Link
ComponentsStyled anchor links with hover effects.
Live Functional Playground Interactive Hooks • useState
Motion Physics & Animation Showcase Framer Motion ✨
Format:
Required Animation Library: framer-motion & lucide-react
Install this package in your project before importing the animated component.
npm i framer-motion lucide-react <a href="#" class="font-medium text-primary underline decoration-primary/30 underline-offset-4 hover:decoration-primary">Explore our documentation</a> <a href="#" className="font-medium text-primary underline decoration-primary/30 underline-offset-4 hover:decoration-primary">Explore our documentation</a> "use client";
import React, { useState } from "react";
interface LinkProps {
className?: string;
children?: React.ReactNode;
}
export default function Link({
className = "",
children,
}: LinkProps) {
const [isActive, setIsActive] = useState(false);
return (
<div
onClick={() => setIsActive(!isActive)}
className={`transition-all ${isActive ? "ring-2 ring-primary/30 rounded-xl" : ""} ${className}`}
>
<a href="#" className="font-medium text-primary underline decoration-primary/30 underline-offset-4 hover:decoration-primary">Explore our documentation</a>
</div>
);
} "use client";
import React from "react";
import { motion } from "framer-motion";
export default function AnimatedLink() {
return (
<motion.div
initial={{ opacity: 0, scale: 0.96 }}
animate={{ opacity: 1, scale: 1 }}
whileHover={{ scale: 1.02 }}
whileTap={{ scale: 0.98 }}
transition={{ type: "spring", stiffness: 350, damping: 25 }}
className="cursor-pointer"
>
<a href="#" className="font-medium text-primary underline decoration-primary/30 underline-offset-4 hover:decoration-primary">Explore our documentation</a>
</motion.div>
);
}