
Security News
CISA Rebuffs Funding Concerns as CVE Foundation Draws Criticism
CISA denies CVE funding issues amid backlash over a new CVE foundation formed by board members, raising concerns about transparency and program governance.
notion-block-renderer
Advanced tools
v2.0.x ~:
isNextJS
of main props was removed.
v2.3.x ~: Added new block type
table_of_contents
.
This package is suitable for use with Reactjs or Nextjs. Notion blocks are rendered into React components. That component has a CSS class name corresponding to the block type.
I'm a programmer (@takumafujimoto). I first created this feature for myself. Later, I thought it would be useful for everyone, so I made it public.
This package compatible to the 2022-02-22
and 2022-06-28
version of Notion API.
Notion API version: https://developers.notion.com/reference/changes-by-version
npm install notion-block-renderer
or
yarn add notion-block-renderer
import NotionBlocks from "notion-block-renderer";
const Sample = ({ blocks }) => {
return (
<div>
<NotionBlocks
blocks={blocks}
/>
</div>
);
}
You have to pass blocks
.
blocks
is result of a response object as follows:
const { results: blocks } = await notion.blocks.children.list({ block_id: id });
For more detail, see the Notion docs.
https://developers.notion.com/reference/get-block-children
Block Type |
---|
paragraph |
heading_1 |
heading_2 |
heading_3 |
bulleted_list_item |
numbered_list_item |
quote |
callout |
code |
image |
video |
table_of_contents |
By default, code blocks are unstyled. The option isCodeHighlighter
can be used to easily set the style.
This package defaults to react-syntax-highlighter when isCodeHighlighter
is true
. Use.
const Sample = ({ blocks }) => {
return (
<div>
<NotionBlocks
blocks={blocks}
isCodeHighlighter={true}
/>
</div>
);
}
You can also set custom style CSS for the syntaxHighlighterCSS
option.
You can choose to provide
Only Highlight.js of
react-syntax-highlighter
(not Prism.js) is supported at this time. So please use to import from"react-syntax-highlighter/dist/cjs/styles/hljs"
. See: https://react-syntax-highlighter.github.io/react-syntax-highlighter/demo/
First you need to install react-syntax-highlighter
.
https://www.npmjs.com/package/react-syntax-highlighter
Then import styles to use.
import {
monokaiSublime,
irBlack,
tomorrowNightBright,
monokai,
} from "react-syntax-highlighter/dist/cjs/styles/hljs";
const Sample = ({ blocks }) => {
return (
<div>
<NotionBlocks
blocks={blocks}
isCodeHighlighter={true}
syntaxHighlighterCSS={monokaiSublime}
/>
</div>
);
}
syntaxHighlighterCSS
has the following type.
{
[key: string]: React.CSSProperties;
}
Unstyled:
Styled:
https://github.com/takux/notion-block-renderer/tree/main/example/styles/tailwindcss-sample.css
The NotionBlocks
component has several props.
Prop name | Description | Default value | Example values |
---|---|---|---|
blocks | Notion api blocks. See Notion docs. | (None) | --- |
prefix | Add prefix to className of each html component. | "nbr" | --- |
blockPrefix | Add prefix to className of each block html component. | "block" | --- |
blocksPrefix | Add prefix to className of blocks html component. | "blocks" | --- |
isCodeHighlighter | Code block's style. If true, code blocks are styled by CSS. | false | true |
syntaxHighlighterCSS | If isCodeHighlighter is true, you can change style to your own CSS. Using react-syntax-highlighter's styled CSS is easy way. | tomorrowNightBright | monokaiSublime |
The props type for blocks
is as follows. This is just a reference code. See currect type: types.ts.
type BlocksProps = {
blocks: BlockType[];
prefix?: string;
blockPrefix?: string;
blocksPrefix?: string;
isCodeHighlighter?: boolean;
syntaxHighlighterCSS?: {
[key: string]: React.CSSProperties;
};
};
The
BlockType
is our original declarative type. The best way may refer to @notionhq/client's type. Replacing code would be taking time. So please contribute if you can.
FAQs
Notion Block to React Components.
The npm package notion-block-renderer receives a total of 152 weekly downloads. As such, notion-block-renderer popularity was classified as not popular.
We found that notion-block-renderer demonstrated a not healthy version release cadence and project activity because the last version was released a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
CISA denies CVE funding issues amid backlash over a new CVE foundation formed by board members, raising concerns about transparency and program governance.
Product
We’re excited to announce a powerful new capability in Socket: historical data and enhanced analytics.
Product
Module Reachability filters out unreachable CVEs so you can focus on vulnerabilities that actually matter to your application.