import Link from 'next/link' import { motion, useMotionTemplate, useMotionValue } from 'framer-motion' import { GridPattern } from '@/components/GridPattern' import { Heading } from '@/components/Heading' import { ChatBubbleIcon } from '@/components/icons/ChatBubbleIcon' import { EnvelopeIcon } from '@/components/icons/EnvelopeIcon' import { UserIcon } from '@/components/icons/UserIcon' import { UsersIcon } from '@/components/icons/UsersIcon' const resources = [ { href: '/contacts', name: 'Contacts', description: 'Learn about the contact model and how to create, retrieve, update, delete, and list contacts.', icon: UserIcon, pattern: { y: 16, squares: [ [0, 1], [1, 3], ], }, }, { href: '/conversations', name: 'Conversations', description: 'Learn about the conversation model and how to create, retrieve, update, delete, and list conversations.', icon: ChatBubbleIcon, pattern: { y: -6, squares: [ [-1, 2], [1, 3], ], }, }, { href: '/messages', name: 'Messages', description: 'Learn about the message model and how to create, retrieve, update, delete, and list messages.', icon: EnvelopeIcon, pattern: { y: 32, squares: [ [0, 2], [1, 4], ], }, }, { href: '/groups', name: 'Groups', description: 'Learn about the group model and how to create, retrieve, update, delete, and list groups.', icon: UsersIcon, pattern: { y: 22, squares: [[0, 1]], }, }, ] function ResourceIcon({ icon: Icon }) { return (
) } function ResourcePattern({ mouseX, mouseY, ...gridProps }) { let maskImage = useMotionTemplate`radial-gradient(180px at ${mouseX}px ${mouseY}px, white, transparent)` let style = { maskImage, WebkitMaskImage: maskImage } return (
) } function Resource({ resource }) { let mouseX = useMotionValue(0) let mouseY = useMotionValue(0) function onMouseMove({ currentTarget, clientX, clientY }) { let { left, top } = currentTarget.getBoundingClientRect() mouseX.set(clientX - left) mouseY.set(clientY - top) } return (

{resource.name}

{resource.description}

) } export function Resources() { return (
Resources
{resources.map((resource) => ( ))}
) }