All Projects β†’ PaulieScanlon β†’ Gatsby Theme Terminal

PaulieScanlon / Gatsby Theme Terminal

A zero component Gatsby theme for developers πŸ”‹

Programming Languages

javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to Gatsby Theme Terminal

skin-ui
A Theme UI Live Preview and Code Editor 🎟️
Stars: ✭ 73 (-70.92%)
Mutual labels:  gatsby, mdx, gatsbyjs
Gatsby Mdx Blog Starter Project
Gatsby MDX Blog Starter Project
Stars: ✭ 248 (-1.2%)
Mutual labels:  gatsby, gatsbyjs, mdx
Gatsby Starter Portfolio Emma
Minimalistic portfolio with full-width grid, page transitions, support for additional MDX pages, and a focus on large images. Especially designers and/or photographers will love this theme! Built with MDX and Theme UI.
Stars: ✭ 253 (+0.8%)
Mutual labels:  gatsby, gatsbyjs, mdx
Gatsby Theme Chronoblog
⏳ Chronoblog is a Gatsbyjs theme specifically designed to create a personal website. The main idea of ​​Chronoblog is to allow you not only to write a personal blog but also to keep a record of everything important that you have done.
Stars: ✭ 101 (-59.76%)
Mutual labels:  gatsby, gatsbyjs, mdx
Gatsby Starter Minimal Blog
Typography driven, feature-rich blogging theme with minimal aesthetics. Includes tags/categories support and extensive features for code blocks such as live preview, line numbers, and line highlighting.
Stars: ✭ 752 (+199.6%)
Mutual labels:  gatsby, gatsbyjs, mdx
gatsby-theme-deck-n-blog
Create a deck (with mdx-deck) and a blog post from the same MDX
Stars: ✭ 17 (-93.23%)
Mutual labels:  gatsby, mdx, gatsbyjs
subtle-ui
A collection of clever yet understated user interactions found on the web
Stars: ✭ 39 (-84.46%)
Mutual labels:  gatsby, mdx, gatsbyjs
Gatsby Starter Portfolio Emilia
Minimalistic portfolio/photography site with masonry grid, page transitions and big images. Themeable with Theme UI. Includes Light/Dark mode.
Stars: ✭ 300 (+19.52%)
Mutual labels:  gatsby, gatsbyjs, mdx
Gatsby Starter Portfolio Cara
Playful and Colorful One-Page portfolio featuring Parallax effects and animations. Especially designers and/or photographers will love this theme! Built with MDX and Theme UI.
Stars: ✭ 1,101 (+338.65%)
Mutual labels:  gatsby, gatsbyjs, mdx
Mdx Deck
♠️ React MDX-based presentation decks
Stars: ✭ 10,487 (+4078.09%)
Mutual labels:  gatsby, gatsbyjs, mdx
Spacy Course
πŸ‘©β€πŸ« Advanced NLP with spaCy: A free online course
Stars: ✭ 1,920 (+664.94%)
Mutual labels:  gatsby, gatsbyjs
Gatsby Source Ghost
Source plugin for pulling data into Gatsby.js from the Ghost Public API.
Stars: ✭ 144 (-42.63%)
Mutual labels:  gatsby, gatsbyjs
Gatsby Theme Catalyst
An opinionated set of integrated themes and starters as a boilerplate to accelerate development with GatsbyJS
Stars: ✭ 144 (-42.63%)
Mutual labels:  gatsby, mdx
Gatsby Starter Delog
A blog for designers and developer, built with Gatsby and Netlfiy CMS. Live demo https://delog-w3layouts.netlify.com/
Stars: ✭ 145 (-42.23%)
Mutual labels:  gatsby, gatsbyjs
Gatsbyhub
Access everything Gatsby has to offer without ever leaving Visual Studio Code. This VSCode Extension allows you to generate a new Gatsby site using a starter, browse Gatsby plugins, and develop a server all with a click of a button.
Stars: ✭ 158 (-37.05%)
Mutual labels:  gatsby, gatsbyjs
Gatsby Remark Oembed
A GatsbyJS Plugin that transforms oembed links into its corresponding embed code.
Stars: ✭ 154 (-38.65%)
Mutual labels:  gatsby, gatsbyjs
Sentry Docs
The new place for the sentry documentation (and tools to build it)
Stars: ✭ 160 (-36.25%)
Mutual labels:  gatsby, gatsbyjs
Gatsby Starter Try Ghost
Publish flaring fast blogs with Gatsby and Ghost
Stars: ✭ 137 (-45.42%)
Mutual labels:  gatsby, gatsbyjs
Gatsby Plugin Favicon
Favicon Gatsby plugin
Stars: ✭ 175 (-30.28%)
Mutual labels:  gatsby, gatsbyjs
Gatsby Docker
Develop & Build GatsbyJS static sites within Docker.
Stars: ✭ 184 (-26.69%)
Mutual labels:  gatsby, gatsbyjs
gatsby-theme-termninal main image

gatsby-theme-terminal

Gatsby Theme Terminal aims to be a zero component theme. It provides data components to aid in the abstraction of presentational and data layers which together provide the most flexibility

The theme handles the data but how it's displayed is up to you!

You can create any page layout or component combination you like using your own components or components provided by theme-ui/components

πŸ‘€ Preview

πŸš€ Getting started

To help you get started you can either clone the starter gatsby-starter-terminal or read the below.

Install

npm install @pauliescanlon/gatsby-theme-terminal

Install Peer Dependencies

npm install @mdx-js/mdx @mdx-js/react gatsby gatsby-plugin-mdx gatsby-source-filesystem react react-dom

Setup

gatsby-config.js

Add the siteMetaData and @pauliescanlon/gatsby-theme-terminal to your gatsby-config.js

// gatsby-config.js
module.exports = {
  siteMetadata: {
    name: "Your blog title",
    description: "I like tech",
    keywords: ["tech", "blog", "boop"],
    siteUrl: 'https://gatsby-theme-terminal.netlify.com',
    siteImage: 'name-of-open-graph-image.jpg', // pop an image in the static folder to use it as the og:image,
    profileImage: 'name-of-profile-image.jpg'
    lang: `eng`,
    config: {
      sidebarWidth: 240 // optional,
    },
  },
  plugins: ['@pauliescanlon/gatsby-theme-terminal']
}

directory structure

To add pages create .mdx files in the src/pages directory. You need at least one file called index.mdx located at src/pages or you'll see a GraphQL error.

|-- src
    |-- pages
        |-- index.mdx
        |-- about.mdx
        |-- contact.mdx 

frontmatter setup

Pages

Pages must include navigationLabel in the frontmatter

// src/pages/about.mdx
---
navigationLabel: About
---

# About

This is about page

Theme options

Additional .mdx can be sourced from anywhere outside the pages directory but you need to tell the theme where to source these files from.

Use the source option in gatsby-config.js

// gatsby-config.js
...
  plugins: [
    {
      resolve: `@pauliescanlon/gatsby-theme-terminal`,
      options: {
        source: [`posts`, `projects`], // can be a string or array of strings
      },
    },
  ],
}

Then create the relevant files and directories

|-- src
    |-- pages
    ...
    |-- posts 
      |--2020
        |--02
          |-- some-post.mdx
          |-- featuredImage: markus-spiske-466ENaLuhLY-unsplash.jpg
          |-- markus-spiske-FXFz-sW0uwo-unsplash.jpg
    |-- projects
      |-- some-project.mdx  

Any file that is not sourced from pages can contain any of the following frontmatter but a title is required, this is how the theme distinguishes between pages and other .mdx files

// src/posts/2020/02/some-post.mdx
---
title: Some Post
tags: ["JavaScript", "React", "GatsbyJs", "HTML", "CSS", "theme-ui"]
date: 2020-01-01
dateModified: 20-20-2020
author: Paul Scanlon
status: draft // => means it won't be rendered
isPrivate: // => it will be rendered but you can use this prop as a filter
url: "https://example.com"  // => could be an external url
misc: "Ahoy" // => use how you wish
pinned: false // => Could be used as a filter for pinned posts
featuredImage: markus-spiske-466ENaLuhLY-unsplash.jpg
featuredImageUrl: https://via.placeholder.com/936x528
embeddedImages:
  - markus-spiske-FXFz-sW0uwo-unsplash.jpg
embeddedImageUrls:
  - https://via.placeholder.com/468x264
---

Embedded Images

By using the The <Img /> component from gatsby-image you can pass the image data queried by GraphQL.

The original, fixed and fluid data is available via props.embedded.image(n)

<Img fluid={props.embedded.image1.fluid} />
<Img fixed={props.embedded.image1.fixed} />

You can also use the Theme UI <Image /> component by passing it a src

<Image src={props.embedded.image1.fluid.src} />

image1 in this example would be markus-spiske-FXFz-sW0uwo-unsplash.jpg

EmbeddedImages can also be sourced from a remote url, in this case use the <Image /> component and pass it the url

<Image src={props.embedded.image2.url} />

markdown

The theme supports the complete markdown spec and you can see how to use markdown in the demo

theme-ui/components

The theme supports all the components provided by theme-ui/components and you can see in the demo how they are used.

gatsby-theme-terminal/components

The theme also comes with it's own components but... These are purely to provide access to the source nodes. What you choose to render is completely up to you!

For example to display a list of all files sourced from the source theme option you could do something like this. This component can be used in ANY .mdx file 😎

<SourceList>
  {source => (
    <ul>
      {source.map((edge, index) => {
        const {
          frontmatter: { title },
        } = edge.node
        return <li key={index}>{title}</li>
      })}
    </ul>
  )}
</SourceList>

You can see more about how to use the theme components in the demo

Component Shadowing

There is very little to shadow because almost everything is exposed by the components but you might want to add your own logo.

To do this create the following directories @pauliescanlon/gatsby-theme-terminal/components/Logo in the src directory of your project and then create a Logo.js file. You can do anything you like in here.

|-- src
    |-- @pauliescanlon
      |-- gatsby-theme-terminal
        |-- components
          |-- Logo
            |-- Logo.js

If you would like to customize any part of the theme you can do so by shadowing the theme file.

To do this create the following directory src/gatsby-plugin-theme-ui and then create an index.js

// src/gatsby-plugin-theme-ui/index.js

import baseTheme from '@pauliescanlon/gatsby-theme-terminal/src/gatsby-plugin-theme-ui'

export default {
  ...baseTheme,
  colors: {
    ...baseTheme.colors,
    primary: '#FF4081',
    secondary: '#03A9F4',
    success: '#FFEB3B',
    background: '#232323',
    surface: '#393939',
  },
}

favicon

favicon(s) need to be saved in static/images and named favicon-16x16.png and favicon-32x32.png along with an .icon file called favicon.ico

If you're using gatsby-theme-terminal in your project i'd love to hear from you @pauliescanlon

ko-fi

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].