_includes/resources/author/AuthorLayout.11ty.tsx (30 lines of code) (raw):
import {
ReferenceLayout,
ReferenceLayoutProps,
} from "../../layouts/ReferenceLayout.11y";
import { LayoutContext } from "../../../src/models";
import ResourceCard from "../../resourcecard/ResourceCard.11ty";
import { Author } from "./AuthorModels";
import { Fragment } from "jsx-async-runtime/jsx-dev-runtime";
export function AuthorLayout(
this: LayoutContext,
data: ReferenceLayoutProps,
): JSX.Element {
const { collections, content, page } = data;
const author = collections.resourceMap.get(
`author:${page.fileSlug}`,
) as Author;
if (!author) {
throw new Error(`Author "${page.fileSlug}" not in collection`);
}
const linkedResources = this.getResources().filter(
// @ts-ignore
(ci) => ci.author === author.label,
);
const listing = (
<Fragment>
{linkedResources.map((resource) => (
// @ts-ignore
<ResourceCard resource={resource}></ResourceCard>
))}
</Fragment>
);
return <ReferenceLayout {...data} listing={listing} content={content} />;
}
export const render = AuthorLayout;