1.0.50 • Published 4 years ago

@tuwhana/react-gatsby-contentful v1.0.50

Weekly downloads
31
License
ISC
Repository
bitbucket
Last release
4 years ago

Rendering pages

All entities of Page Contentful type will be automatically generated for you if you register this theme in your gatsby-config.js:

require("dotenv").config({
  path: `.env.${process.env.NODE_ENV}`,
});

const contentfulConfig = {
  spaceId: process.env.CONTENTFUL_SPACE_ID,
  accessToken: process.env.CONTENTFUL_ACCESS_TOKEN,
};

if (process.env.CONTENTFUL_HOST) {
  contentfulConfig.host = process.env.CONTENTFUL_HOST;
}

const { spaceId, accessToken } = contentfulConfig;

if (!spaceId || !accessToken) {
  throw new Error(
    "Contentful spaceId and the access token need to be provided."
  );
}

module.exports = {
  plugins: [
    {
      resolve: "gatsby-source-contentful",
      options: contentfulConfig
    },
    {
      resolve: "@tuwhana/react-gatsby-contentful",
      options: { },
    },
  ],
}

Connecting and styling blocks

Create src/@tuwhana/react-gatsby-contentful/blocks/BlockConfig.ts file with block configuration.

To add and style a block type defined in the packacge add code similar to below:

import { blockConfig, blockGroupWithTitleConfig } from "@tuwhana/react-gatsby-contentful";
import css from './Block.module.css';

export default () => blockConfig.addBlocks([
  blockGroupWithTitleConfig({
    container: `container ${css.centeredContainer}`,
    title: css.verticalTitle,
  })
])

The following blocks are defined in the package:

  • BlockGroupWithTitle
  • CallToAction
  • PostList
  • ProjectList
  • StyledParagraph
  • PageList
  • TitleAndText
  • TitleTextAndImage

Defining custom blocks

To add a custom block matching CustomBlock Contentful Content Model register the custom block in src/@tuwhana/react-gatsby-contentful/blocks/BlockConfig.ts like this:

import { blockConfig } from "@tuwhana/react-gatsby-contentful";
import {CustomBlock} from './CustomBlock;
import css from './CustomBlock.module.css';

export default () => blockConfig.addBlocks([{
  name: "ContentfulCustomBlock",
  css,
  renderer: CustomBlock
}])

The custom block would be defined like:

//CustomBlock.tsx
import { graphql } from "gatsby";
import { Block, BlockProps } from '@tuwhana/react-gatsby-contentful';
import {BlockModel} from "..";

export const customBlockFields = graphql`
  fragment customBlockFields on ContentfulCustomBlock  {
    title
    customFields
  }
`

interface CustomBlockModel extends BlockModel {
  title: string,
  customFields: any
}

interface CustomBlockCSS {
  container: string,
  title: string,
}

export const CustomBlock: React.FunctionComponent<BlockProps<CustomBlockCSS, CustomBlockModel>> = ({css, data}) => (
  <section className={css.container}>
    <h2 className={css.title}>{data.title}</h2>
    <div>{data.customFields}</div>
  </section>
);
1.0.50

4 years ago

1.0.49

4 years ago

1.0.48

4 years ago

1.0.47

4 years ago

1.0.46

4 years ago

1.0.45

4 years ago

1.0.44

5 years ago

1.0.43

5 years ago

1.0.42

5 years ago

1.0.41

5 years ago

1.0.40

5 years ago

1.0.39

5 years ago

1.0.38

5 years ago

1.0.37

5 years ago

1.0.36

5 years ago

1.0.35

5 years ago

1.0.34

5 years ago

1.0.33

5 years ago

1.0.32

5 years ago

1.0.31

5 years ago

1.0.30

5 years ago

1.0.29

5 years ago

1.0.28

5 years ago

1.0.27

5 years ago

1.0.26

5 years ago

1.0.25

5 years ago

1.0.22

5 years ago

1.0.24

5 years ago

1.0.23

5 years ago

1.0.21

5 years ago

1.0.20

5 years ago

1.0.19

5 years ago

1.0.18

5 years ago

1.0.17

5 years ago

1.0.16

5 years ago

1.0.15

5 years ago

1.0.14

5 years ago

1.0.13

5 years ago

1.0.12

5 years ago

1.0.11

5 years ago

1.0.10

5 years ago

1.0.9

5 years ago

1.0.8

5 years ago

1.0.7

5 years ago

1.0.6

5 years ago

1.0.5

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago

1.0.0

5 years ago