Socket
Socket
Sign inDemoInstall

notionate

Package Overview
Dependencies
298
Maintainers
1
Versions
75
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    notionate

This is React components that uses the Notion API to display the Notion's database and page.


Version published
Maintainers
1
Install size
15.6 MB
Created

Readme

Source






Notionate






Notionate: This is React components that uses the Notion API to display the Notion's database and page.

MIT License

Example

Usage

Use API calls and components together. This is database list example:

import type { GetStaticProps, NextPage } from 'next'
import Link from 'next/link'
import {
  QueryDatabaseResponseEx,
  FetchDatabase,
  QueryDatabaseParameters,
  Link as NLink,
} from 'notionate'
import { DBList } from 'notionate/dist/components'
import 'notionate/dist/styles/notionate.css'
// Import when enable dark-mode
import 'notionate/dist/styles/notionate-dark.css'

type Props = {
  db: QueryDatabaseResponseEx
}

export const getStaticProps: GetStaticProps<Props> = async (context) => {
  const db = await FetchDatabase({
    database_id: process.env.NOTION_DBID,
    filter: {
      property: 'Published',
      checkbox: {
        equals: true
      },
    },
    sorts: [
      {
        property: 'Date',
        direction: 'descending'
      },
    ]
  } as QueryDatabaseParameters)

  return {
    props: {
      db,
    }
  }
}

export default const DB: NextPage<Props> = ({ db }) => {
  return (
    <>
      <List
        keys={['Name', 'spacer', 'Tags', 'Date']}
        db={db}
        href="/database/[id]"
        link={Link as NLink} />
    </>
  )
}

This is page example:

import type { GetStaticProps, NextPage } from 'next'
import { FetchBlocks, ListBlockChildrenResponseEx } from 'notionate'
import { Blocks } from 'notionate/dist/components'
import 'notionate/dist/styles/notionate.css'
// Import when enable dark-mode
import 'notionate/dist/styles/notionate-dark.css'

type Props = {
  blocks: ListBlockChildrenResponseEx
}

export const getStaticProps: GetStaticProps<Props> = async (context) => {
  const blocks = await FetchBlocks(process.env.NOTION_PAGEID)
  return {
    props: {
      blocks,
    }
  }
}

export default const Page: NextPage<Props> = ({ blocks }) => {
  return (
    <>
      <Blocks blocks={blocks} />
    </>
  )
}

Set the notion token as environment variable:

$ cat .env
NOTION_TOKEN=secret_vHVKhIeYm95ga1sjOv*************************
NOTION_PAGEID=23740912d6ac4018ab76c64e772a342a
NOTION_DBID=81781536afc6431da21721177e7bf8e0
Env nameDescriptionDefault
NOTION_TOKENRead permission is required in notion's credentials-
NOTIONATE_CACHEDIRCache directory name.cache
NOTIONATE_DOCROOTWeb server root directorypublic
NOTIONATE_IMAGEDIRWeb server image directoryimages
NOTIONATE_INCREMENTAL_CACHEEnable incremental cachefalse
NOTIONATE_WAITTIMEmilliseconds to wait right after api request due to ratelimit0
NOTIONATE_LIMITED_WAITTIMEmilliseconds to wait before backoff after ratelimit limit60sec
NOTIONATE_WEBP_QUALITYQuality for WebP converting95

API

This is the API available:

  • FetchDatabase: Returns page list and properties in database
  • FetchPage: Returns page title and properties
  • FetchBlocks: Returns blocks that is the content of the page.

Images are saved in NOTIONATE_IMAGEDIR locally.

Components

This is the components available:

  • Page Blocks
  • Database List View
  • Database Gallery View
  • Database Table View
  • Database Calendar View
  • Database Timeline View

Author

@linyows

FAQs

Last updated on 18 Dec 2023

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.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc