Spaces:
Runtime error
Runtime error
File size: 1,023 Bytes
cd6f98e |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
import clsx from "clsx";
import { motion, useMotionTemplate } from "framer-motion";
import React from "react";
import { useMouseMovement } from "../hooks/useMouseMovement";
const colors = {
blue: "bg-gradient-to-r from-sky-500/30 to-sky-500/20",
purple: "bg-gradient-to-r from-purple-500/30 to-purple-500/20",
} as const;
interface Props {
color: keyof typeof colors;
}
const Highlight = (props: Props) => {
const { mouseX, mouseY, onMouseMove } = useMouseMovement();
const maskImage = useMotionTemplate`radial-gradient(200px at ${mouseX}px ${mouseY}px, white, transparent)`;
const style = { maskImage, WebkitMaskImage: maskImage };
return (
<div className="absolute inset-0 z-10 h-full w-full" onMouseMove={onMouseMove}>
<motion.div
className={clsx(
"pointer-events-none h-full w-full rounded-xl opacity-0 transition duration-300 group-hover:opacity-100",
colors[props.color]
)}
style={style}
/>
</div>
);
};
export default Highlight;
|