mirror of
https://github.com/mastermindzh/rickvanlieshout.com
synced 2025-03-14 11:28:56 +01:00
82 lines
2.0 KiB
TypeScript
82 lines
2.0 KiB
TypeScript
|
import React from "react";
|
||
|
|
||
|
import { graphql } from "gatsby";
|
||
|
|
||
|
import { Feed } from "@/components/Feed";
|
||
|
import { Layout } from "@/components/Layout";
|
||
|
import { Page } from "@/components/Page";
|
||
|
import { Pagination } from "@/components/Pagination";
|
||
|
import { Sidebar } from "@/components/Sidebar";
|
||
|
import { useSiteMetadata } from "@/hooks";
|
||
|
import { AllMarkdownRemark, PageContext } from "@/types";
|
||
|
|
||
|
interface Props {
|
||
|
data: {
|
||
|
allMarkdownRemark: AllMarkdownRemark;
|
||
|
};
|
||
|
pageContext: PageContext;
|
||
|
}
|
||
|
|
||
|
const CategoryTemplate: React.FC<Props> = ({ data, pageContext }: Props) => {
|
||
|
const { title: siteTitle, subtitle: siteSubtitle } = useSiteMetadata();
|
||
|
|
||
|
const { group, pagination } = pageContext;
|
||
|
const { currentPage, prevPagePath, nextPagePath, hasPrevPage, hasNextPage } =
|
||
|
pagination;
|
||
|
|
||
|
const { edges } = data.allMarkdownRemark;
|
||
|
const pageTitle =
|
||
|
currentPage > 0
|
||
|
? `${group} - Page ${currentPage} - ${siteTitle}`
|
||
|
: `${group} - ${siteTitle}`;
|
||
|
|
||
|
return (
|
||
|
<Layout title={pageTitle} description={siteSubtitle}>
|
||
|
<Sidebar />
|
||
|
<Page title={group}>
|
||
|
<Feed edges={edges} />
|
||
|
<Pagination
|
||
|
prevPagePath={prevPagePath}
|
||
|
nextPagePath={nextPagePath}
|
||
|
hasPrevPage={hasPrevPage}
|
||
|
hasNextPage={hasNextPage}
|
||
|
/>
|
||
|
</Page>
|
||
|
</Layout>
|
||
|
);
|
||
|
};
|
||
|
|
||
|
export const query = graphql`
|
||
|
query CategoryPage($category: String, $postsLimit: Int!, $postsOffset: Int!) {
|
||
|
allMarkdownRemark(
|
||
|
limit: $postsLimit
|
||
|
skip: $postsOffset
|
||
|
filter: {
|
||
|
frontmatter: {
|
||
|
category: { eq: $category }
|
||
|
template: { eq: "post" }
|
||
|
draft: { ne: true }
|
||
|
}
|
||
|
}
|
||
|
sort: { order: DESC, fields: [frontmatter___date] }
|
||
|
) {
|
||
|
edges {
|
||
|
node {
|
||
|
fields {
|
||
|
slug
|
||
|
categorySlug
|
||
|
}
|
||
|
frontmatter {
|
||
|
description
|
||
|
category
|
||
|
title
|
||
|
date
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
`;
|
||
|
|
||
|
export default CategoryTemplate;
|