import AppWrapper from "@/components/AppWrapper"; import directus from "@/utils/directus"; import { cn } from "@/utils/helpers"; import { readItems } from "@directus/sdk"; import { GetStaticPropsResult, type NextPage } from "next"; import Link from "next/link"; type Props = { projects: Awaited>; }; async function getProjects() { return await directus.request( readItems("project", { fields: ["id", "name", "shortDescription", "icon", { links: ["url"] }], sort: "-date_updated", }), ); } export async function getStaticProps(): Promise> { return { props: { projects: await getProjects(), }, }; } const ProjectsPage: NextPage = ({ projects }) => { return (

Projects

created, maintained, or contributed to by me...
{projects.map( ({ id, name, shortDescription: description, links, icon }) => { const useAnchor = links?.length ?? 0 > 0; const DynamicLink = useAnchor ? Link : "div"; const linkProps = useAnchor ? { href: links![0]!.url, target: "_blank", rel: "noreferrer" } : {}; return (
{/* @ts-expect-error because div can't accept href */}
{name}
{description}
); }, )}
); }; export default ProjectsPage;