Customizing the theme

Nehalem offers several way of customization:

  • change the appearance of it (Theming)
  • change metadata
  • component shadowing

Theming

Theming relies on the component shadowing technique - which basically means you need to create a file which mirrors the original file. To change our appearance we'll have to shadow our theme.ts file.

Just create this file under src/@nehalist/gatsby-theme-nehalem/styles/theme.ts and add the following content:

const Theme: DefaultTheme = {
  layout: {
   backgroundColor: `#fafafa`,
   primaryColor: `#a4cbb8`,
   linkColor: `#a4cbb8`,
  },
  breakpoints: {
   xs: `425px`,
   sm: `576px`,
   md: `768px`,
   lg: `992px`,
   xl: `1300px`,
  },
  fonts: {
   base: `-apple-system, BlinkMacSystemFont, Segoe UI, Roboto, Oxygen, Ubuntu, ` +
     `Cantarell, Fira Sans, Droid Sans, Helvetica Neue, sans-serif`,
  },
  components: {
   container: {
     width: `1260px`,
   },
   header: {
     height: `440px`,
     background: `linear-gradient(-45deg, #44596e, #a4cbb8) repeat scroll 0 0 transparent`,
   },
  },
};

export default Theme;

And change the values to your needs.

Metadata

Another way to change Nehalem is to change the siteMetadata within your gatsby-config.js. The default configuration is:

siteMetadata: {
  // Your site title
  title: `nehalem`,
  // Your site url
  siteUrl: `https://nehalem.netlify.com`,
  // Your site description
  description: `A Gatsby theme for %TOPICS%`,
  // These topics will be inserted at %TOPICS% in the description and used for the Typed component
  topics: [
    `bloggers`,
    `geeks`,
    `nerds`,
    `people`,
    `everyone`
  ],
  // The main menu
  menu: [
    {
      name: 'Home',
      path: '/'
    },
    {
      name: 'Example',
      path: '/page'
    },
  ],
  // Links in the footer
  footerMenu: [
    {
      name: 'RSS',
      path: '/rss.xml'
    },
  ],
  // En- or disable search
  search: true,
  // Basically who are you and where to find you
  author: {
    name: `nehalem`,
    description: `I'm <strong>nehalem</strong>, a Gatsby theme by 
    <a href="https://nehalist.io" rel="noopener" target="_blank">nehalist.io</a>. Go get me on 
    <a href="https://github.com/nehalist/gatsby-theme-nehalem" rel="noopener" target="_blank">GitHub</a> and don't forget to leave
    a star in case you like me!`,
    social: {
      facebook: ``,
      twitter: `https://twitter.com/nehalist`,
      linkedin: `https://www.linkedin.com/in/kevin-hirczy-7a9377106/`,
      instagram: ``,
      youtube: ``,
      github: `https://github.com/nehalist`,
      twitch: ``
    }
  }
}

Component shadowing

In case you've never heard of component shadowing I highly recommend to read the official docs regarding this topic. (I honestly had no idea about this when I started to work on this theme)

Nehalem provides a bunch of placeholder components which are meant to be shadowed by you - even though you don't have to do this (since most things can be done by simply editing the theme and gatsby-config.js).

Available placeholder components are:

  • Original path: src/components/logo/index.tsx
  • Shadowed path would be: src/@nehalist/gatsby-theme-nehalem/components/logo/index.tsx

This is the logo shown in the navigation.

Avatar

  • Original path: src/components/avatar/index.tsx
  • Shadowed path would be: src/@nehalist/gatsby-theme-nehalem/components/avatar/index.tsx

Your avatar picture shown in the bio.

Comments

  • Original path: src/components/comments/index.tsx
  • Shadowed path would be: src/@nehalist/gatsby-theme-nehalem/comments/index.tsx

The <Comments> component is embedded beneath every post and should make it easier for you to embed comments (like Commento, Disqus, ...).

SidebarContent

  • Original path: src/components/sidebar-content/index.tsx
  • Shadowed path would be: src/@nehalist/gatsby-theme-nehalem/sidebar-content/index.tsx

The sidebar content on the front page.

PageSidebarContent

  • Original path: src/components/page-sidebar-content/index.tsx
  • Shadowed path would be: src/@nehalist/gatsby-theme-nehalem/page-sidebar-content/index.tsx

The sidebar content for pages.


Cover image by @alex_andrews

Published under  on .

nehalem

nehalem

I'm nehalem, a Gatsby theme by nehalist.io. If you like what you see feel free to give a star on GitHub!