Gatsby themes allow you to override configuration from the theme by defining the same property in your gatsby-config.js
at the root of your project. You can see the default configuration provided by the theme’s gatsby-config.js
file.
To add a title and description to each page, simply provide them to siteMetadata in your gatsby-config.js
file.
module.exports = {siteMetadata: {title: 'Gatsby Theme Carbon',description: 'A Gatsby theme for the carbon design system',keywords: 'gatsby,theme,carbon',},plugins: ['gatsby-theme-carbon'],};
One of the first configurations should be to override the default manifest options, you can do this in gatsby-config.js
. Any options you don’t set, will be provided by the theme. See the example project.
siteMetadata: {title: 'Gatsby Theme Carbon',},plugins: ['gatsby-theme-carbon',{resolve: 'gatsby-plugin-manifest',options: {name: 'Carbon Design Gatsby Theme',short_name: 'Gatsby Theme Carbon',start_url: '/',background_color: '#ffffff',theme_color: '#0062ff',display: 'browser',},},],
If you need to override the default favicon, you can do so by passing a relative path to the icon. It’s recommended to provide a 512 x 512 version.
IMPORTANT: For best results, if you’re providing an icon for generation it should be…
plugins: [{resolve: 'gatsby-theme-carbon',options: {iconPath: './src/images/custom-icon-512.png'},},],
If needed, you can add support for additional Plex font weights. Don’t forget to specify italics for the additional weights if needed.
plugins: [{resolve: 'gatsby-theme-carbon',options: {// will get added to default [300, 400, 600]additionalFontWeights: ['200', '200i]},},],
You can enable WebP by passing withWebp: true
or providing your own optimization level. See the gatsby-remark-images plugin options. You can also tweak the image quality based on design tolerance and performance thresholds.
module.exports = {plugins: [{resolve: 'gatsby-theme-carbon',options: {withWebp: true, // true, false (default false)imageQuality: 50, // 0-100 (default 75)},},],};
The GlobalSearch component is disabled by default. If you’d like to implement search functionality, you’ll need to follow these two steps:
plugins: [{resolve: 'gatsby-theme-carbon',options: {isSearchEnabled: true},},],
/src/util/hooks/useSearch.js
import { useEffect } from 'react';const useAlgoliaSearch = () => {// ...};export default useAlgoliaSearch;
The example useSearch
hook demonstrates implementing search with Algolia. Algolia is free for open source libraries. You can shadow this hook and replace it with your Algolia credentials or a library of your choosing.
To add a link to the bottom of each page that points to the current page source in GitHub, provide an repository
object to siteMetadata
in your gatsby-config.js
file. You can provide a baseUrl
, and if needed, the subDirectory
where your site source lives.
plugins: [{resolve: 'gatsby-theme-carbon',options: {repository: {baseUrl: 'https://github.com/carbon-design-system/gatsby-theme-carbon',subDirectory: '/packages/example',},},},],
additionalFontWeights
– add support for additional Plex font weights. Don’t forget to specify italics for the additional weights if needed.
mdxExtensions
– change the file extensions processed by gatsby-mdx
(default [‘.mdx’, ‘.md’])
titleType
– pick between three formats for the <title>
element for your site. Here are the three options using this page as an example:
page
: “Configuration” (default)site
: “Gatsby Theme Carbon”append
: “Gatsby Theme Carbon – Configuration”plugins: [{resolve: 'gatsby-theme-carbon',options: {additionalFontWeights: ['200', '200i'],mdxExtensions: ['.mdx'],titleType: 'append'},},],