@react95/gatsby-theme
Version:
A React95 theme for your Gatsby blog
204 lines (154 loc) • 4.3 kB
Markdown
<p align="center">
<a href="https://www.gatsbyjs.com">
<img alt="Gatsby" src="https://raw.githubusercontent.com/React95/gatsby-theme/master/React95-Gatsby.png" width="260" />
</a>
</p>
<h1 align="center">
The React95 Gatsby theme
</h1>
## Installation
### For a new site
If you're creating a new site and want to use the React95 theme, you can use the [Gatsby CLI](https://www.gatsbyjs.com/docs/reference/gatsby-cli/#new) (make sure to select styled-components as your styling system)
```shell
gatsby new my-nostalgic-blog
```
Follow the CLI and when you've finished, go to the next step
### For an existing site
If you already have a site you'd like to add the React95 theme to, you can manually configure it.
1. Install the React95 theme
```bash
npm install @react95/core @react95/gatsby-theme styled-components
# or
yarn add @react95/core @react95/gatsby-theme styled-components
```
2. Add the configuration to your `gatsby-config.js` file
```js
// gatsby-config.js
module.exports = {
plugins: [
{
resolve: `@react95/gatsby-theme`,
options: {
// basePath defaults to `/`
basePath: `/site`,
},
},
],
};
```
3. Add content to your site by creating `md` or `mdx` files inside `/content` folder.
> React95 theme will create everything for you so you might not need `src/pages`.
> Note that if you've changed the default `contentPath` in the configuration, you'll want to add your markdown files in the directory specified by that path.
4. Run your site using `gatsby develop` and see your content in the TaskBar. If you used the above configuration, your URL will be `http://localhost:8000/site`
> If you have no content in the beginning, React95 theme will generate a starter for you.
## Usage
### Theme options
| Key | Default value | Description |
| ------------- | ------------- | ------------------------ |
| `basePath` | `/` | Root url for all content |
| `contentPath` | `content` | Location of your content |
### Additional configuration
In addition to the theme options, there are a handful of items you can customize via the `siteMetadata` object in your site's `gatsby-config.js`
```js
// gatsby-config.js
module.exports = {
siteMetadata: {
// Used for the site title and SEO
title: `Gatsby - Powered By React95`,
// Used for SEO
description: `This is a Gatsby website that uses React95`,
// Used for resolving images in social cards
siteUrl: `https://example.com`,
// Used for SEO in social cards
image: `/path-to/your/image`,
// Used for SEO
author: `@mynickname`,
},
};
```
### Content Fields
The following are the defined content fields based on the node interface in the schema
| Field | Type |
| ----------- | ------- |
| title | String |
| image | String |
| description | String |
| icon | Icon |
| image | String |
| modal | Boolean |
Icon type
| Field | Type |
| ------- | ------ |
| name | String |
| variant | String |
```md
# content/getting-started.mdx
title: Getting Started
description: Your awesome and nostalgic website!
modal:false
icon:
name: Computer
variant: 32x32_4
# Your website starts on this folder
Feel free to add your content!
```
### Image Behavior
Content can include references to images from static folder inside frontmatter.
```md
title: Hello World (example)
image: /some-image.jpg
icon:
name: Computer
variant: 32x32_4
```
When adding an `image` it will be the featured image within the post.
### How Styles work
Inside any `mdx` file you have all React95 components at your service:
```md
title: How to
icon:
name: FolderExe
variant: 16x16_4
<Frame
bg="white"
p={6}
boxShadow="in"
height="100%"
>
# How to
...
</Frame>
```
## Examples
<table>
<tr>
<td>
File structure
</td>
<td>
<img alt="folder structure" src="./screenshots/file-structure.png" />
</td>
</tr>
<tr>
<td>
Desktop View
</td>
<td>
<img alt="Desktop view" src="./screenshots/desktop-view.png" />
</td>
</tr>
<tr>
<td>
404 page
</td>
<td>
<img alt="Desktop view" src="./screenshots/404.png" />
</td>
</tr>
</table>