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: '/ipa/resources/accounts', name: 'Accounts', description: 'Learn how to list and update accounts.', icon: UserIcon, pattern: { y: 16, squares: [ [0, 1], [1, 3], ], }, }, { href: '/ipa/resources/users', name: 'Users', description: 'Learn how to create, update, delete, and list users.', icon: ChatBubbleIcon, pattern: { y: -6, squares: [ [-1, 2], [1, 3], ], }, }, { href: '/ipa/resources/tokens', name: 'Tokens', description: 'Learn how to create, retrieve, delete, and list tokens.', icon: ChatBubbleIcon, pattern: { y: -6, squares: [ [-1, 2], [1, 3], ], }, }, { href: '/ipa/resources/peers', name: 'Peers', description: 'Learn how to retrieve, update, delete, and list peers.', icon: EnvelopeIcon, pattern: { y: 32, squares: [ [0, 2], [1, 4], ], }, }, { href: '/ipa/resources/setup-keys', name: 'Setup Keys', description: 'Learn how to create, retrieve, update, and list setup keys.', icon: UsersIcon, pattern: { y: 22, squares: [[0, 1]], }, }, { href: '/ipa/resources/groups', name: 'Groups', description: 'Learn how to create, retrieve, update, delete, and list groups.', icon: UsersIcon, pattern: { y: 22, squares: [[0, 1]], }, }, { href: '/ipa/resources/rules', name: 'Rules', description: 'Learn how to create, retrieve, update, delete, and list rules.', icon: UsersIcon, pattern: { y: 22, squares: [[0, 1]], }, }, { href: '/ipa/resources/policies', name: 'Policies', description: 'Learn how to create, retrieve, update, delete, and list policies.', icon: UsersIcon, pattern: { y: 22, squares: [[0, 1]], }, }, { href: '/ipa/resources/routes', name: 'Routes', description: 'Learn about how to create, retrieve, update, delete, and list routes.', icon: UsersIcon, pattern: { y: 22, squares: [[0, 1]], }, }, { href: '/ipa/resources/dns', name: 'DNS', description: 'Learn about how to create, retrieve, update, delete, and list nameserver groups and update and retrieve DNS settings.', icon: UsersIcon, pattern: { y: 22, squares: [[0, 1]], }, }, { href: '/ipa/resources/events', name: 'Events', description: 'Learn about how to list events.', 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) => ( ))}
) }