@taylorwhite/copacetic-frontity-theme
Version:
A frontity theme made with Chakra UI
62 lines (55 loc) • 1.99 kB
JavaScript
import { Box, Heading, SimpleGrid } from "@chakra-ui/core";
import { connect } from "frontity";
import React from "react";
import { FeaturedPostSection } from "../featured-post/featured-post";
import { formatPostData, splitPosts } from "../helpers";
import { Newsletter } from "../newsletter";
import ArchiveItem from "./archive-item";
import { PaginationButton } from "./pagination";
import { PatternBox } from "../styles/pattern-box";
const HomepageArchive = ({ state, libraries }) => {
// Get the data of the current list.
const data = state.source.get(state.router.link);
const [firstThreePosts, othersPosts] = splitPosts(state, data.items);
return (
<Box bg="accent.50" as="section">
<PatternBox bg="accent.100" bgAttachment="fixed" bgSize="cover" backgroundPattern={state.theme.backgroundPattern}>
<FeaturedPostSection
data={firstThreePosts.map(post => formatPostData(state, post))}
/>
<Box
py={{ base: "64px", md: "80px" }}
px={{ base: "24px", md: "40px" }}
width={{ base: "auto", lg: "80%" }}
maxWidth="1200px"
mx="auto"
>
<Heading
textAlign="center"
fontSize={{ base: "4xl", md: "6xl" }}
color="accent.400"
>
Latest Posts
</Heading>
<SimpleGrid
mt={{ base: "64px", md: "80px" }}
columns={{ base: 1, md: 2 }}
spacing="40px"
>
{othersPosts.map(({ type, id }) => {
const item = state.source[type][id];
return <ArchiveItem key={item.id} item={item} />;
})}
</SimpleGrid>
<PaginationButton mt="40px" link="/page/2">
More posts
</PaginationButton>
</Box>
{libraries.newsletter && (
<Newsletter showPattern={state.theme.showBackgroundPattern} backgroundPattern={state.theme.backgroundPattern} />
)}
</PatternBox>
</Box>
);
};
export default connect(HomepageArchive);