←Back

Notion Blocks – A NPM Package

Notion has a pretty awesome API but no React package to render the output of this API! Notion-Blocks gives you the ability to render everything in a single component and provide a helper function to fetch all nested blocks for each page.

Problem

Notion is a fantastic note taking app and great at putting together beautiful documentation, blog posts, tutorials and more quickly. So, whats the problem? well… There are two problems; I want to use Notion to create and share these blog posts on my own React projects, and Notion’s API doesn’t provide information on nested elements (like sub lists)

Solution

I built Notion-Blocks to be able to render all of Notion’s components and provide the user with a backend only helper function that fetches every component, subcomponent and nested components within a given page.

Usage

Using the Notion-Blocks package is super easy to integrate into your own React Project

NotionBlocks

JavaScript
import {NotionBlocks} from 'notion-blocks'
import 'notion-blocks/dist/styles/katex.css'


export const example = () => {
  const blocks = BLOCKS_FROM_NOTION_API;

  return (
    <NotionBlocks blocks={blocks}>
  )
}

FetchNotionBlocks

JavaScript
import { FetchNotionBlocks } from 'notion-blocks';

const { cover, response, blocks } = await FetchNotionBlocks({
  notionkey: process.env.NOTION_KEY,
  notionPageId: PAGE_ID,
});

API

Lets Take a look at some of the props you can pass into this React component or helper function

NotionBlocks

PropTypeDescription
blocksobjectlist of blocks that can be acquired from Notion’s API
codeThemestringlight or dark
containerStyleobjectObject to style container where blocks are rendered
codeOverlaybooleanTo Show overlay in code block that allows users to copy code, and see the language within the code block
headerStylesobjectStyle overrides for headers, These overrides do not include toggle headers
toggleHeaderStylesobjectStyle overrides for toggle headers. These styles do not include the content within the headers
toggleStylesobjectStyle overrides for toggle lists. These styles do not include the content within the headers
codeStylesobjectstyles placed onto the code block container.
pictureStylesobjectstyles for pictures
calloutStylesobjectstyles for callout container
quoteStylesobjectstyles for quote container
listStylesobjectstyles for individual block container
columnStylesobjectstyles for column container
bookmarkStylesobjectstyles for bookmark container
equationStylesobjectstyles for Equation container
childPageStylesobjectstyles for child page container
tableStyleobjectstyles for table container
tableRowStyleobjectstyles for all table rows except headers
tableHeaderStyleobjectstyles for table headers row and columns
onChildPageClickfunctionfunction to be called if user clicks on child page block. (id, title) => console.log(id, title)

FetchNotionBlocks

PropTypeDescription
notionKeystringnotion secret key
notionPageIdstringID of page you’d like to fetch

Leave a Reply

Your email address will not be published. Required fields are marked *