({ resource }: { resource: Resource })
| 144 | } |
| 145 | |
| 146 | function Resource({ resource }: { resource: Resource }) { |
| 147 | let mouseX = useMotionValue(0); |
| 148 | let mouseY = useMotionValue(0); |
| 149 | |
| 150 | function onMouseMove({ |
| 151 | currentTarget, |
| 152 | clientX, |
| 153 | clientY |
| 154 | }: React.MouseEvent<HTMLDivElement>) { |
| 155 | let { left, top } = currentTarget.getBoundingClientRect(); |
| 156 | mouseX.set(clientX - left); |
| 157 | mouseY.set(clientY - top); |
| 158 | } |
| 159 | |
| 160 | return ( |
| 161 | <div |
| 162 | key={resource.href} |
| 163 | onMouseMove={onMouseMove} |
| 164 | className="group relative flex rounded-2xl transition-shadow dark:hover:shadow-md dark:hover:shadow-black/5" |
| 165 | > |
| 166 | <div className="absolute inset-0 rounded-2xl ring-1 ring-inset ring-zinc-900/7.5 transition duration-300 group-hover:ring-[#7d79d8] dark:ring-white/10" /> |
| 167 | <div className="relative rounded-2xl px-4 pb-4 pt-16"> |
| 168 | <ResourceIcon icon={resource.icon} /> |
| 169 | <h3 className="leading-7mb-2 mt-4 flex items-center text-lg font-semibold text-black dark:text-white"> |
| 170 | <Link href={resource.href}> |
| 171 | <span className="absolute inset-0 rounded-2xl" /> |
| 172 | {resource.name} |
| 173 | </Link> |
| 174 | </h3> |
| 175 | <p className="mt-1 text-base text-zinc-600 dark:text-zinc-400"> |
| 176 | {resource.description} |
| 177 | </p> |
| 178 | </div> |
| 179 | </div> |
| 180 | ); |
| 181 | } |
| 182 | |
| 183 | export function Resources() { |
| 184 | return ( |
nothing calls this directly
no outgoing calls
no test coverage detected