import * as React from 'react'; import { motion, useMotionTemplate, useMotionValue } from 'framer-motion'; import { cn } from '../lib/utils'; export type CardProps = React.HTMLAttributes & { spotlight?: boolean; gradient?: boolean; degrees?: number; }; const Card = React.forwardRef( ({ className, children, gradient = false, spotlight = false, degrees = 120, ...props }, ref) => { const mouseX = useMotionValue(0); const mouseY = useMotionValue(0); const handleMouseMove = ({ currentTarget, clientX, clientY }: React.MouseEvent) => { const { left, top } = currentTarget.getBoundingClientRect(); mouseX.set(clientX - left); mouseY.set(clientY - top); }; return (
{spotlight && ( )} {children}
); }, ); Card.displayName = 'Card'; const CardHeader = React.forwardRef>( ({ className, ...props }, ref) => (
), ); CardHeader.displayName = 'CardHeader'; const CardTitle = React.forwardRef>( ({ className, ...props }, ref) => (

), ); CardTitle.displayName = 'CardTitle'; const CardDescription = React.forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className, ...props }, ref) => (

)); CardDescription.displayName = 'CardDescription'; const CardContent = React.forwardRef>( ({ className, ...props }, ref) => (

), ); CardContent.displayName = 'CardContent'; const CardFooter = React.forwardRef>( ({ className, ...props }, ref) => (
), ); CardFooter.displayName = 'CardFooter'; export { Card, CardHeader, CardFooter, CardTitle, CardDescription, CardContent };