()
| 42 | ] |
| 43 | |
| 44 | const HoverSpring = () => { |
| 45 | return ( |
| 46 | <div> |
| 47 | <div className="grid w-full grid-cols-2 gap-x-10 md:grid-cols-3"> |
| 48 | {ProjectsData.map((project) => { |
| 49 | return ( |
| 50 | <motion.div |
| 51 | whileHover={{ |
| 52 | y: -8, |
| 53 | }} |
| 54 | transition={{ |
| 55 | type: 'spring', |
| 56 | bounce: 0.7, |
| 57 | }} |
| 58 | key={project.id} |
| 59 | className="mt-5 text-left" |
| 60 | > |
| 61 | <a target="_blank" rel="noopener noreferrer" href={project.link}> |
| 62 | <Image |
| 63 | src={project.image} |
| 64 | width={30} |
| 65 | height={30} |
| 66 | className="mb-3 rounded-lg border-gray-400 dark:border" |
| 67 | alt={project.name} |
| 68 | /> |
| 69 | <div className="mb-1 text-sm font-medium text-gray-900 dark:text-gray-100"> |
| 70 | {project.name} |
| 71 | </div> |
| 72 | <div className="max-w-[250px] text-sm font-normal text-gray-500 dark:text-gray-500"> |
| 73 | {project.description} |
| 74 | </div> |
| 75 | </a> |
| 76 | </motion.div> |
| 77 | ) |
| 78 | })} |
| 79 | </div> |
| 80 | </div> |
| 81 | ) |
| 82 | } |
| 83 | |
| 84 | export default HoverSpring |
nothing calls this directly
no outgoing calls
no test coverage detected