_includes/resources/tutorial/TutorialsLayout.11ty.tsx (36 lines of code) (raw):
import {
ReferenceLayout,
ReferenceLayoutProps,
} from "../../layouts/ReferenceLayout.11y";
import { LayoutContext } from "../../../src/models";
import ResourceCard from "../../resourcecard/ResourceCard.11ty";
import { Tutorial } from "./TutorialModels";
import { Fragment } from "jsx-async-runtime/jsx-dev-runtime";
import { jsxToString } from "jsx-async-runtime";
export default class TutorialsLayout {
data() {
return {
eleventyExcludeFromCollections: true,
title: "Tutorials",
subtitle:
"Learn how to work with technologies using detailed, multi-step lessons accompanied by code samples, instructions, and videos.",
};
}
async render(
this: LayoutContext,
data: ReferenceLayoutProps,
): Promise<string> {
const { content, pagination } = data;
const paginationItems = pagination ? pagination.items : [];
const tutorials: Tutorial[] = paginationItems.map((t: any) => {
return this.getResource(t.url) as Tutorial;
});
const listing = (
<Fragment>
{tutorials.map((tutorial) => {
return <ResourceCard resource={tutorial}></ResourceCard>;
})}
</Fragment>
);
return await jsxToString(
<ReferenceLayout {...data} listing={listing} content={content} />,
);
}
}