Gatsby Logo

Blueprint Gatsby Plugin

Turn-key solution for using Blueprint in a Gatsby site



Contents

Installation

To use Blueprint in your Gatsby site, you need to install the plugin and its peer dependencies.

npm i @hover/gatsby-plugin @hover/blueprint @emotion/react @emotion/styled framer-motion

# or

yarn add @hover/gatsby-plugin @hover/blueprint @emotion/react @emotion/styled framer-motion

Usage

  1. Add @hover/gatsby-plugin as a plugin in your Gatsby config.
// gatsby-config.js
module.exports = {
  plugins: ["@hover/gatsby-plugin"],
}
  1. Use Blueprint
// src/pages/index.js
import React from "react"
import { Box, Body } from "@hover/blueprint"

function IndexPage() {
  return (
    <Box padding={600}>
      <Body size={500}>Hello World</Text>
    </Box>
  )
}

export default IndexPage

Plugin options

By default, this plugin adds the main context provider (BlueprintProvider) to make all components work correctly. Any options specified in the plugin configuration will be passed to the BlueprintProvider.

  • BlueprintProvider composes ChakraProvider, which configures the Blueprint theme and accepts ChakraProvider Props
<BlueprintProvider resetCSS={resetCSS} portalZIndex={portalZIndex}>
  {element}
</BlueprintProvider>

You can disable either of these with Gatsby options:

// gatsby-config.js
module.exports = {
  plugins: [
    {
      resolve: "@hover/gatsby-plugin",
      options: {
        /**
         * @property {boolean} [resetCSS=false]
         * if `false`, this plugin will not use `<CSSReset />
         */
        resetCSS: true,
        /**
         * @property {number} [portalZIndex=40]
         * The z-index to apply to all portal nodes. This is useful
         * if your app uses a lot z-index to position elements.
         */
        portalZIndex: 40,
      },
    },
  ],
}

Customizing the theme

⚠️ Note: this should only be necessary for augmenting or adding components that Blueprint does not support. Any necessary customizations should be discussed with the design systems team so we can consider incorporating them upstream in @hover/chakra-theme.

To use customize the theme in your Gatsby site, you can shadow the plugin’s src/@hover/gatsby-plugin/theme.js file with your own theme:

// src/@hover/gatsby-plugin/theme.js
import { extendTheme } from "@hover/blueprint"

const theme = {
  colors: {
    primary: "rebeccapurple",
  },
}

export default extendTheme(theme)

You can learn more about custom theme at Chakra UI’s documentation.