├── browserslist
├── .gitignore
├── config.toml
├── pages
├── pages
│ ├── articles-list
│ │ └── index.md
│ └── philosophy
│ │ └── index.md
├── _template.jsx
├── articles
│ ├── 2017-03-22-zombie-ipsum
│ │ └── index.md
│ ├── 2017-03-26-cupcake-ipsum
│ │ └── index.md
│ ├── 2017-03-29-batman-ipsum
│ │ └── index.md
│ ├── 2017-03-19-coffee-ipsum
│ │ └── index.md
│ └── 2017-03-17-cat-ipsum
│ │ └── index.md
└── index.jsx
├── styles
├── base
│ ├── _mq.css
│ ├── _variables.css
│ ├── _defaults.css
│ ├── _logo.css
│ └── _normalize.css
├── main.css
├── components
│ ├── _post.css
│ ├── _page.css
│ ├── _articles-list.css
│ └── _article.css
└── markdown-styles.css
├── .eslintrc
├── gatsby-node.js
├── components
├── Article.jsx
├── Page.jsx
├── Post.jsx
└── ArticlesList.jsx
├── wrappers
└── md.jsx
├── license
├── utils
└── typography.js
├── html.jsx
├── package.json
└── readme.md
/browserslist:
--------------------------------------------------------------------------------
1 | # Browsers that we support
2 |
3 | > 1%
4 | Last 2 versions
5 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules/
3 | public/
4 | *.log
5 | .gatsby-context.js
6 |
--------------------------------------------------------------------------------
/config.toml:
--------------------------------------------------------------------------------
1 | siteTitle="Alchemy"
2 | siteDescription="A Gatsby starter with PostCSS powers"
3 |
4 | linkPrefix = "/gatsby-starter-alchemy"
5 |
--------------------------------------------------------------------------------
/pages/pages/articles-list/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Articles"
3 | layout: articles
4 | path: "/articles"
5 | ---
6 |
7 | Our fine selection of readings, grab a coffee and enjoy!
8 |
--------------------------------------------------------------------------------
/styles/base/_mq.css:
--------------------------------------------------------------------------------
1 | @custom-media --mobile (min-width: 500px);
2 | @custom-media --tablet (min-width: 650px);
3 | @custom-media --desktop (min-width: 800px);
4 | @custom-media --retina (-webkit-min-device-pixel-ratio: 2);
5 |
--------------------------------------------------------------------------------
/styles/base/_variables.css:
--------------------------------------------------------------------------------
1 | :root {
2 | --bgColor: #2b4496;
3 | --logoOuter: #a0740a;
4 | --logoTriangle: var(--logoOuter);
5 | --logoSquareInner: #886309;
6 | --logoSquareBorder: #b8850c;
7 | --logoCircle: #b8850c;
8 | }
9 |
--------------------------------------------------------------------------------
/pages/_template.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 |
3 | import '../styles/main.css';
4 |
5 | class Template extends React.Component {
6 | render() {
7 | const { children } = this.props;
8 |
9 | return (
10 |
11 | {children}
12 |
13 | );
14 | }
15 | }
16 |
17 | export default Template;
18 |
--------------------------------------------------------------------------------
/styles/main.css:
--------------------------------------------------------------------------------
1 | /* base */
2 | @import './base/_normalize.css';
3 | @import './base/_variables.css';
4 | @import './base/_mq.css';
5 | @import './base/_defaults.css';
6 | @import './base/_logo.css';
7 |
8 | /* components */
9 | @import './components/_page.css';
10 | @import './components/_post.css';
11 | @import './components/_articles-list.css';
12 | @import './components/_article.css';
13 |
--------------------------------------------------------------------------------
/.eslintrc:
--------------------------------------------------------------------------------
1 | {
2 | "parser": "babel-eslint",
3 | "plugins": [
4 | "react"
5 | ],
6 | "ecmaFeatures": {
7 | "jsx": true
8 | },
9 | "env": {
10 | "es6": true,
11 | "browser": true,
12 | "node": true
13 | },
14 | "rules": {
15 | "quotes": ["error", "single"],
16 | "jsx-quotes": ["error", "prefer-double"],
17 | "newline-before-return": "error",
18 | "object-curly-spacing": ["error", "always"],
19 | "no-unused-vars": "error",
20 | "react/jsx-uses-vars": 1
21 | }
22 | }
23 |
--------------------------------------------------------------------------------
/gatsby-node.js:
--------------------------------------------------------------------------------
1 | const rucksack = require('rucksack-css');
2 | const lost = require('lost');
3 | const cssnext = require('postcss-cssnext');
4 | const cssnested = require('postcss-nested');
5 | const atImport = require('postcss-import');
6 |
7 | exports.modifyWebpackConfig = function (config) {
8 | config.merge({
9 | postcss: [
10 | atImport(),
11 | cssnested,
12 | lost(),
13 | rucksack(),
14 | cssnext({
15 | browsers: ['>1%', 'last 2 versions']
16 | }),
17 | ],
18 | });
19 |
20 | return config;
21 | };
22 |
--------------------------------------------------------------------------------
/styles/components/_post.css:
--------------------------------------------------------------------------------
1 | .post {
2 | lost-column: 1/1 0 0;
3 | padding-left: 50px;
4 | padding-right: 50px;
5 |
6 | @media (--tablet) {
7 | padding-left: 35px;
8 | padding-right: 35px;
9 | }
10 |
11 | @media (--desktop) {
12 | padding-left: 20px;
13 | padding-right: 20px;
14 | }
15 |
16 | &-container {
17 | lost-center: 980px;
18 | lost-align: center;
19 | text-align: center;
20 | margin-top: 30px;
21 |
22 | &-title {}
23 |
24 | &-body {
25 | font-size: responsive 15px 20px;
26 | line-height: 1.5;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/styles/components/_page.css:
--------------------------------------------------------------------------------
1 | .page {
2 | lost-column: 1/1 0 0;
3 | padding-left: 50px;
4 | padding-right: 50px;
5 |
6 | @media (--tablet) {
7 | padding-left: 35px;
8 | padding-right: 35px;
9 | }
10 |
11 | @media (--desktop) {
12 | padding-left: 20px;
13 | padding-right: 20px;
14 | }
15 |
16 | &-container {
17 | lost-center: 980px;
18 | lost-align: center;
19 | text-align: center;
20 | margin-top: 30px;
21 |
22 | &-title {}
23 |
24 | &-body {
25 | font-size: responsive 15px 20px;
26 | line-height: 1.5;
27 | }
28 | }
29 | }
30 |
--------------------------------------------------------------------------------
/pages/pages/philosophy/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Philosophy"
3 | layout: page
4 | path: "/philosophy"
5 | ---
6 |
7 | Alchemy was designed to provide easy and quick customization, this starter is not a theme, is a boilerplate.
8 |
9 | Use this boilerplate to design your own site from the ground up.
10 |
11 | Just watch the structure, navigate through files and get to know how everything fits together, then make the appropriate changes.
12 |
13 | This starter focuses on working with PostCSS, it contains some useful plugins out of the box, read more on the [Github readme](https://github.com/bntzio/gatsby-starter-alchemy#postcss-plugins).
14 |
--------------------------------------------------------------------------------
/pages/articles/2017-03-22-zombie-ipsum/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Zombie Ipsum"
3 | date: "2017-03-22"
4 | layout: post
5 | path: "/zombie-ipsum/"
6 | category: "Welcome"
7 | description: "Zombies reversus ab inferno, nam malum cerebro."
8 | ---
9 |
10 | Zombies reversus ab inferno, nam malum cerebro. De carne animata corpora quaeritis. Summus sit, morbo vel maleficia? De Apocalypsi undead dictum mauris. Hi mortuis soulless creaturas, imo monstra adventus vultus comedat cerebella viventium. Qui offenderit rapto, terribilem incessu. The voodoo sacerdos suscitat mortuos comedere carnem. Search for solum oculi eorum defunctis cerebro. Nescio an Undead zombies. Sicut malus movie horror.
11 |
--------------------------------------------------------------------------------
/styles/components/_articles-list.css:
--------------------------------------------------------------------------------
1 | .articles-list {
2 | lost-column: 1/1 0 0;
3 | padding-left: 50px;
4 | padding-right: 50px;
5 |
6 | @media (--tablet) {
7 | padding-left: 35px;
8 | padding-right: 35px;
9 | }
10 |
11 | @media (--desktop) {
12 | padding-left: 20px;
13 | padding-right: 20px;
14 | }
15 |
16 | &-container {
17 | lost-center: 980px;
18 | lost-align: center;
19 | text-align: center;
20 | margin-top: 30px;
21 |
22 | &-title {}
23 |
24 | &-body {
25 | font-size: responsive 15px 20px;
26 | line-height: 1.5;
27 | }
28 |
29 | &-posts {
30 | lost-center: 90%;
31 | lost-align: center;
32 | margin-bottom: 30px;
33 | }
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/components/Article.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router';
3 | import { prefixLink } from 'gatsby-helpers';
4 |
5 | class Article extends React.Component {
6 | render() {
7 | const { title, path, description } = this.props.data;
8 |
9 | return (
10 |
11 |
12 |
{title}
13 |
14 |
17 |
18 | Read
19 |
20 |
21 | );
22 | }
23 | }
24 |
25 | export default Article;
26 |
--------------------------------------------------------------------------------
/wrappers/md.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Helmet from 'react-helmet';
3 |
4 | import Post from '../components/Post';
5 | import Page from '../components/Page';
6 | import ArticlesList from '../components/ArticlesList';
7 |
8 | import { config } from 'config';
9 | import '../styles/markdown-styles.css';
10 |
11 | class MarkdownWrapper extends React.Component {
12 | render() {
13 | const { route } = this.props;
14 | const post = route.page.data;
15 | const layout = post.layout;
16 | let template;
17 |
18 | if (layout === 'post') {
19 | template = ;
20 | } else if (layout === 'page') {
21 | template = ;
22 | } else {
23 | template = ;
24 | }
25 |
26 | return (
27 |
28 |
29 | {template}
30 |
31 | );
32 | }
33 | }
34 |
35 | export default MarkdownWrapper;
36 |
--------------------------------------------------------------------------------
/pages/articles/2017-03-26-cupcake-ipsum/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Cupcake Ipsum"
3 | date: "2017-03-26"
4 | layout: post
5 | path: "/cupcake-ipsum/"
6 | category: "Welcome"
7 | description: "Cupcake ipsum dolor sit amet powder. Brownie cupcake jelly carrot cake."
8 | ---
9 |
10 | Cupcake ipsum dolor sit amet powder. Brownie cupcake jelly carrot cake. Pudding carrot cake topping. Jelly cake gummi bears I love tiramisu muffin powder tart.
11 |
12 | Cupcake chupa chups lemon drops muffin pastry. Brownie lemon drops danish. Cotton candy sweet roll marshmallow jujubes gingerbread oat cake toffee chupa chups topping. Candy canes lollipop soufflé.
13 | Cake soufflé carrot cake powder lemon drops icing cheesecake lollipop. I love candy canes soufflé soufflé candy icing. I love fruitcake bonbon jelly sugar plum. Carrot cake cookie bonbon dessert icing apple pie pastry bear claw.
14 |
15 | Carrot cake chocolate dragée. Tart sugar plum carrot cake muffin I love cake biscuit pudding. Candy canes sugar plum halvah I love chocolate cake icing carrot cake.
16 |
--------------------------------------------------------------------------------
/styles/components/_article.css:
--------------------------------------------------------------------------------
1 | .article {
2 | lost-column: 1/1 1 20px;
3 | lost-align: center;
4 | display: flex;
5 | flex-direction: column;
6 | height: 320px;
7 | text-align: center;
8 | background: white;
9 | color: black;
10 | border-radius: 2.7px;
11 | margin-bottom: 20px;
12 | padding: 0 25px;
13 |
14 | @media (--tablet) {
15 | lost-column: 1/2 2 20px;
16 | }
17 |
18 | @media (--desktop) {
19 | lost-column: 1/3 3 20px;
20 | }
21 |
22 | &-title {
23 | margin-bottom: 15px;
24 |
25 | h3 {
26 | margin: 0;
27 |
28 | a {
29 | font-size: responsive 20px 23px;
30 | color: #262626;
31 | text-decoration: none;
32 | }
33 | }
34 | }
35 |
36 | &-description {
37 | margin-bottom: 15px;
38 |
39 | p {
40 | margin: 0;
41 | font-size: responsive 13px 16px;
42 | color: #333333;
43 | }
44 | }
45 |
46 | &-read {
47 | a {
48 | font-size: responsive 13px 16px;
49 | color: #262626;
50 | }
51 | }
52 | }
53 |
--------------------------------------------------------------------------------
/license:
--------------------------------------------------------------------------------
1 | MIT License
2 |
3 | Copyright (c) 2017 Enrique Benitez (bntz.io)
4 |
5 | Permission is hereby granted, free of charge, to any person obtaining a copy
6 | of this software and associated documentation files (the "Software"), to deal
7 | in the Software without restriction, including without limitation the rights
8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 | copies of the Software, and to permit persons to whom the Software is
10 | furnished to do so, subject to the following conditions:
11 |
12 | The above copyright notice and this permission notice shall be included in all
13 | copies or substantial portions of the Software.
14 |
15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21 | SOFTWARE.
22 |
--------------------------------------------------------------------------------
/components/Page.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router';
3 | import { prefixLink } from 'gatsby-helpers';
4 |
5 | class Page extends React.Component {
6 | render() {
7 | const { route } = this.props;
8 | const post = route.page.data;
9 |
10 | return (
11 |
12 |
13 |
14 |
15 |
23 |
24 |
25 |
26 |
{post.title}
27 |
29 |
30 |
31 |
32 |
33 | );
34 | }
35 | }
36 |
37 | export default Page;
38 |
--------------------------------------------------------------------------------
/pages/articles/2017-03-29-batman-ipsum/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Batman Ipsum"
3 | date: "2017-03-29"
4 | layout: post
5 | path: "/batman-ipsum/"
6 | category: "Welcome"
7 | description: "Never underestimate Gotham City."
8 | ---
9 |
10 | Never underestimate Gotham City. People get mugged coming home from work every day of the week. Sometimes things just go bad.
11 |
12 | Ooh, you think darkness is your ally? You merely adopted the dark, I was born in it. Molded by it. I didn't see the light until I was already a man. By then there was nothing to be but blinded.
13 |
14 | Theatricality and deception, powerful agents to the uninitiated. But we are initiated aren't we, Bruce? Members of the League of Shadows. And you betrayed us.
15 |
16 | Your anger gives you great power. But if you Iet it, it will destroy you as it almost did me.
17 |
18 | The first time I stole so that I wouldn't starve, yes. I lost many assumptions about the simple nature of right and wrong. And when I traveled I learned the fear before a crime and the thrill of success. But I never became one of them.
19 |
20 | I'm not sure you made it loud enough, sir.
21 |
22 | Bane was a member of the League of Shadows. And then he was excommunicated. And any man who is too extreme for Ra's Al Ghul, is not to be trifled with.
23 |
--------------------------------------------------------------------------------
/utils/typography.js:
--------------------------------------------------------------------------------
1 | import ReactDOM from 'react-dom/server';
2 | import React from 'react';
3 | import Typography from 'typography';
4 | import { GoogleFont } from 'react-typography';
5 | import CodePlugin from 'typography-plugin-code';
6 |
7 | const options = {
8 | googleFonts: [
9 | {
10 | name: 'Roboto Slab',
11 | styles: [
12 | '700',
13 | ],
14 | },
15 | {
16 | name: 'Arvo',
17 | styles: [
18 | '400',
19 | '400i',
20 | '700',
21 | ],
22 | },
23 | ],
24 | headerFontFamily: ['Roboto Slab', 'serif'],
25 | bodyFontFamily: ['Arvo', 'sans-serif'],
26 | baseFontSize: '18px',
27 | baseLineHeight: 1.65,
28 | scaleRatio: 2.25,
29 | plugins: [
30 | new CodePlugin(),
31 | ],
32 | };
33 |
34 | const typography = new Typography(options);
35 |
36 | // Hot reload typography in development.
37 | if (process.env.NODE_ENV !== 'production') {
38 | typography.injectStyles();
39 | if (typeof document !== 'undefined') {
40 | const googleFonts = ReactDOM.renderToStaticMarkup(
41 | React.createFactory(GoogleFont)({ typography })
42 | );
43 | const head = document.getElementsByTagName('head')[0];
44 | head.insertAdjacentHTML('beforeend', googleFonts);
45 | }
46 | }
47 |
48 | export default typography;
49 |
--------------------------------------------------------------------------------
/styles/base/_defaults.css:
--------------------------------------------------------------------------------
1 | @lost flexbox flex;
2 |
3 | body {
4 | background-color: var(--bgColor);
5 | color: white;
6 | font-size: responsive 14px 18px;
7 | }
8 |
9 | a {
10 | color: white;
11 |
12 | &:hover {
13 | color: white;
14 | }
15 | &:visited {
16 | color: white;
17 | }
18 | &:focus {
19 | color: white;
20 | }
21 | }
22 |
23 | .main {
24 | display: table;
25 | width: 100%;
26 | height: 100vh;
27 | font-size: responsive 14px 21px;
28 |
29 | &-container {
30 | display: table-cell;
31 | text-align: center;
32 | vertical-align: middle;
33 |
34 | &-title {}
35 |
36 | &-subtitle {
37 | h3 {
38 | font-size: responsive 14px 21px;
39 | }
40 | }
41 |
42 | &-links {
43 | & > ul {
44 | list-style-type: none;
45 | padding-left: 0;
46 | margin-left: 0;
47 |
48 | & li {
49 | padding: 6px 0;
50 |
51 | & > a {
52 | color: white;
53 | }
54 | }
55 | }
56 | }
57 | }
58 |
59 | &-footer {
60 | lost-column: 1/1;
61 | lost-align: right;
62 | position: absolute;
63 | bottom: 5px;
64 | right: 35px;
65 |
66 | & > p {
67 | font-size: 12px;
68 | color: whitesmoke;
69 |
70 | & > a {
71 | color: whitesmoke;
72 | text-decoration: none;
73 | }
74 | }
75 | }
76 | }
77 |
--------------------------------------------------------------------------------
/html.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Helmet from 'react-helmet';
3 | import { prefixLink } from 'gatsby-helpers';
4 | import { TypographyStyle, GoogleFont } from 'react-typography';
5 | import typography from './utils/typography';
6 |
7 | const BUILD_TIME = new Date().getTime();
8 |
9 | module.exports = React.createClass({
10 | propTypes () {
11 | return {
12 | body: React.PropTypes.string
13 | }
14 | },
15 | render () {
16 | const head = Helmet.rewind()
17 |
18 | let css
19 | if (process.env.NODE_ENV === 'production') {
20 | css =
21 | }
22 |
23 | return (
24 |
25 |
26 |
27 |
28 |
29 | {head.title.toComponent()}
30 | {head.meta.toComponent()}
31 |
32 |
33 | {css}
34 |
35 |
36 |
37 |
38 |
39 |
40 | );
41 | }
42 | });
43 |
--------------------------------------------------------------------------------
/pages/articles/2017-03-19-coffee-ipsum/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Coffee Ipsum"
3 | date: "2017-03-19"
4 | layout: post
5 | path: "/coffee-ipsum/"
6 | category: "Welcome"
7 | description: "Americano, seasonal con panna café au lait black galão french press."
8 | ---
9 |
10 | Americano, seasonal con panna café au lait black galão french press. Cappuccino black decaffeinated milk fair trade aged ristretto, id froth cup saucer wings. Siphon con panna, café au lait spoon cup shop cinnamon. Cup, in and dripper caffeine acerbic skinny.
11 |
12 | Breve, cortado saucer affogato redeye robusta spoon decaffeinated. French press, espresso steamed brewed body cinnamon crema. Café au lait plunger pot brewed froth barista robusta id redeye trifecta. Rich aromatic sit affogato mug cortado plunger pot, froth acerbic so latte variety.
13 |
14 | Rich espresso strong chicory ristretto in, variety french press galão percolator aftertaste. Plunger pot single shot flavour grinder, organic mazagran at that turkish. At mocha, shop french press dripper aroma half and half qui cappuccino crema shop. Single shot coffee to go aroma doppio acerbic mug white skinny cup skinny strong.
15 |
16 | Seasonal, cultivar, brewed saucer organic seasonal robust dripper. Café au lait rich kopi-luwak bar, qui, barista, doppio wings et and iced. Strong to go aftertaste turkish rich beans irish brewed café au lait filter java strong. Cinnamon rich irish, seasonal irish brewed americano redeye black.
17 |
--------------------------------------------------------------------------------
/styles/base/_logo.css:
--------------------------------------------------------------------------------
1 | .logo.fixed {
2 | position: fixed;
3 | margin: auto;
4 | top: 12px;
5 | left: 12px;
6 | width: calc(100px/2+10px);
7 | height: calc(100px/2+10px);
8 | background: transparent;
9 | }
10 |
11 | .logo.centre {
12 | position: relative;
13 | margin: auto;
14 | right: 0;
15 | bottom: auto;
16 | left: 0;
17 | width: 100px;
18 | height: 100px;
19 | background: transparent;
20 | }
21 |
22 | .logo {
23 | &-outerCircle {
24 | position: absolute;
25 | background: transparent;
26 | border-radius: 100%;
27 | width: 90%;
28 | height: 90%;
29 | top: 1%;
30 | left: 1%;
31 | border: 4px solid var(--logoOuter);
32 |
33 | &-triangle {
34 | position: absolute;
35 | width: 80%;
36 | height: 80%;
37 | left: 10%;
38 | background: var(--logoTriangle);
39 | -webkit-clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
40 | clip-path: polygon(50% 0%, 0% 100%, 100% 100%);
41 |
42 | &-square {
43 | position: absolute;
44 | width: 45%;
45 | height: 45%;
46 | bottom: 1%;
47 | left: 27.5%;
48 | background: var(--logoSquareInner);
49 | border: 2px solid var(--logoSquareBorder);
50 |
51 | &-innerCircle {
52 | position: absolute;
53 | width: 100%;
54 | height: 100%;
55 | bottom: 0;
56 | background: var(--logoCircle);
57 | border-radius: 100%;
58 | }
59 | }
60 | }
61 | }
62 | }
63 |
--------------------------------------------------------------------------------
/styles/markdown-styles.css:
--------------------------------------------------------------------------------
1 | /*
2 | Orginal Style from ethanschoonover.com/solarized (c) Jeremy Hull
3 | */
4 |
5 | pre code {
6 | display: block;
7 | overflow-x: auto;
8 | padding: 0.5em;
9 | background: #fdf6e3;
10 | color: #657b83;
11 | }
12 |
13 | .hljs-comment,
14 | .hljs-quote {
15 | color: #93a1a1;
16 | }
17 |
18 | /* Solarized Green */
19 | .hljs-keyword,
20 | .hljs-selector-tag,
21 | .hljs-addition {
22 | color: #859900;
23 | }
24 |
25 | /* Solarized Cyan */
26 | .hljs-number,
27 | .hljs-string,
28 | .hljs-meta .hljs-meta-string,
29 | .hljs-literal,
30 | .hljs-doctag,
31 | .hljs-regexp {
32 | color: #2aa198;
33 | }
34 |
35 | /* Solarized Blue */
36 | .hljs-title,
37 | .hljs-section,
38 | .hljs-name,
39 | .hljs-selector-id,
40 | .hljs-selector-class {
41 | color: #268bd2;
42 | }
43 |
44 | /* Solarized Yellow */
45 | .hljs-attribute,
46 | .hljs-attr,
47 | .hljs-variable,
48 | .hljs-template-variable,
49 | .hljs-class .hljs-title,
50 | .hljs-type {
51 | color: #b58900;
52 | }
53 |
54 | /* Solarized Orange */
55 | .hljs-symbol,
56 | .hljs-bullet,
57 | .hljs-subst,
58 | .hljs-meta,
59 | .hljs-meta .hljs-keyword,
60 | .hljs-selector-attr,
61 | .hljs-selector-pseudo,
62 | .hljs-link {
63 | color: #cb4b16;
64 | }
65 |
66 | /* Solarized Red */
67 | .hljs-built_in,
68 | .hljs-deletion {
69 | color: #dc322f;
70 | }
71 |
72 | .hljs-formula {
73 | background: #eee8d5;
74 | }
75 |
76 | .hljs-emphasis {
77 | font-style: italic;
78 | }
79 |
80 | .hljs-strong {
81 | font-weight: bold;
82 | }
83 |
--------------------------------------------------------------------------------
/pages/articles/2017-03-17-cat-ipsum/index.md:
--------------------------------------------------------------------------------
1 | ---
2 | title: "Cat Ipsum"
3 | date: "2017-03-17"
4 | layout: post
5 | path: "/cat-ipsum/"
6 | category: "Welcome"
7 | description: "Cat ipsum dolor sit amet, russian blue cheetah yet norwegian forest."
8 | ---
9 |
10 | Cat ipsum dolor sit amet, russian blue cheetah yet norwegian forest. Maine coon singapura bombay for siamese. Puma maine coon siamese but himalayan. Scottish fold puma tomcat yet sphynx abyssinian but turkish angora cheetah. Puma siamese or tabby american bobtail savannah. Lynx singapura. Lion leopard, savannah. Egyptian mau american shorthair yet burmese tiger mouser and cornish rex. Cougar cheetah yet lynx munchkin. American shorthair lion lion, so bengal persian grimalkin. Savannah havana brown, balinese . Cornish rex puma for jaguar turkish angora, but devonshire rex cougar. Siamese russian blue jaguar. Balinese . Tom lynx so turkish angora for burmese abyssinian . Sphynx ocelot, burmese egyptian mau for puma.
11 |
12 | Ocelot maine coon, devonshire rex and tomcat for lynx. Cornish rex abyssinian . Singapura maine coon kitty. Manx siamese. Balinese kitty. Munchkin sphynx and savannah devonshire rex and scottish fold so scottish fold kitten.
13 |
14 | Tom russian blue norwegian forest ragdoll. Manx abyssinian abyssinian ocelot, persian for bobcat. Thai british shorthair. Bengal. Cougar american shorthair so puma and puma so malkin or lynx. Sphynx maine coon yet tiger but turkish angora sphynx. Egyptian mau. Havana brown tiger tom.
15 |
16 | Scottish fold. Bengal himalayan cornish rex. Kitty egyptian mau for panther. Puma sphynx for maine coon or devonshire rex so havana brown. Lynx birman and egyptian mau cougar for tabby. Bengal.
17 |
--------------------------------------------------------------------------------
/components/Post.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router';
3 | import { prefixLink } from 'gatsby-helpers';
4 |
5 | class Post extends React.Component {
6 | componentWillMount() {
7 | if (typeof window !== 'undefined') {
8 | const body = document.getElementsByTagName('body');
9 | const css = body[0].style;
10 | css.color = '#333';
11 | css.backgroundColor = '#fff';
12 | }
13 | }
14 | componentWillUnmount() {
15 | if (typeof window !== 'undefined') {
16 | const body = document.getElementsByTagName('body');
17 | const css = body[0].style;
18 | css.color = '#fff';
19 | css.backgroundColor = '#2b4496';
20 | }
21 | }
22 | render() {
23 | const { route } = this.props;
24 | const post = route.page.data;
25 |
26 | return (
27 |
28 |
29 |
30 |
31 |
39 |
40 |
41 |
42 |
{post.title}
43 |
45 |
46 |
47 |
48 |
49 | );
50 | }
51 | }
52 |
53 | export default Post;
54 |
--------------------------------------------------------------------------------
/pages/index.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import Helmet from 'react-helmet';
3 | import { Link } from 'react-router';
4 | import { prefixLink } from 'gatsby-helpers';
5 |
6 | import { config } from 'config';
7 |
8 | export default class Index extends React.Component {
9 | render() {
10 | return (
11 |
12 |
13 |
14 |
15 |
24 |
25 |
26 |
Alchemy
27 |
28 |
29 |
30 |
A Gatsby starter with PostCSS powers
31 |
32 |
33 |
34 |
35 | -
36 | Philosophy
37 |
38 | -
39 | Articles
40 |
41 | -
42 | Github
43 |
44 |
45 |
46 |
47 |
48 |
53 |
54 | );
55 | }
56 | }
57 |
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "gatsby-starter-alchemy",
3 | "version": "1.0.0",
4 | "description": "A Gatsby starter with PostCSS powers",
5 | "main": "n/a",
6 | "scripts": {
7 | "build": "gatsby build",
8 | "develop": "gatsby develop",
9 | "test": "echo \"Error: no test specified\" && exit 1"
10 | },
11 | "repository": {
12 | "type": "git",
13 | "url": "git+https://github.com/bntzio/gatsby-starter-alchemy.git"
14 | },
15 | "keywords": [
16 | "gatsby",
17 | "postcss",
18 | "react"
19 | ],
20 | "author": "Enrique Benitez ",
21 | "license": "MIT",
22 | "bugs": {
23 | "url": "https://github.com/bntzio/gatsby-starter-alchemy/issues"
24 | },
25 | "homepage": "https://github.com/bntzio/gatsby-starter-alchemy#readme",
26 | "dependencies": {
27 | "babel-plugin-add-module-exports": "^0.2.1",
28 | "babel-preset-es2015": "^6.13.2",
29 | "babel-preset-react": "^6.11.1",
30 | "babel-preset-stage-0": "^6.5.0",
31 | "classnames": "^2.1.2",
32 | "front-matter": "^2.1.0",
33 | "gatsby": "^0.12.39",
34 | "history": "^2.1.2",
35 | "lodash": "^4.17.2",
36 | "moment": "^2.17.1",
37 | "raw-loader": "^0.5.1",
38 | "react": "^15.4.1",
39 | "react-dom": "^15.4.1",
40 | "react-ga": "^2.1.2",
41 | "react-helmet": "^4.0.0",
42 | "react-router": "^2.6.1",
43 | "react-typography": "^0.15.0",
44 | "safe-access": "^0.1.0",
45 | "typography": "^0.15.8",
46 | "typography-plugin-code": "^0.15.0",
47 | "underscore.string": "^3.2.3",
48 | "url-loader": "^0.5.7"
49 | },
50 | "devDependencies": {
51 | "autoprefixer": "^6.7.7",
52 | "babel-core": "^6.13.2",
53 | "babel-eslint": "^7.2.0",
54 | "babel-loader": "^6.2.5",
55 | "babel-preset-react-hmre": "^1.1.1",
56 | "css-loader": "^0.26.1",
57 | "eslint": "^3.x",
58 | "eslint-plugin-react": "^6.10.3",
59 | "file-loader": "^0.10.0",
60 | "image-webpack-loader": "^2.0.0",
61 | "lost": "^8.0.0",
62 | "node-uuid": "^1.4.7",
63 | "null-loader": "^0.1.1",
64 | "postcss-loader": "^1.2.2",
65 | "postcss-nested": "^1.0.0",
66 | "react-transform-catch-errors": "^1.0.2",
67 | "react-transform-hmr": "^1.0.4",
68 | "redbox-react": "^1.3.0",
69 | "rucksack-css": "^0.9.1",
70 | "style-loader": "^0.13.1",
71 | "webpack": "^1.13.2"
72 | }
73 | }
74 |
--------------------------------------------------------------------------------
/components/ArticlesList.jsx:
--------------------------------------------------------------------------------
1 | import React from 'react';
2 | import { Link } from 'react-router';
3 | import { prefixLink } from 'gatsby-helpers';
4 | import uuid from 'node-uuid';
5 | import moment from 'moment';
6 | import _ from 'lodash';
7 |
8 | import Article from './Article';
9 |
10 | class ArticlesList extends React.Component {
11 | componentWillMount() {
12 | if (typeof window !== 'undefined') {
13 | const body = document.getElementsByTagName('body');
14 | const css = body[0].style;
15 | css.color = '#fff';
16 | css.backgroundColor = '#4938aa';
17 | }
18 | }
19 | componentWillUnmount() {
20 | if (typeof window !== 'undefined') {
21 | const body = document.getElementsByTagName('body');
22 | const css = body[0].style;
23 | css.color = '#fff';
24 | css.backgroundColor = '#2b4496';
25 | }
26 | }
27 | renderPosts(route) {
28 | const posts = [];
29 | route.pages.map((page) => {
30 | if (page.data.layout === 'post') {
31 | posts.push(page);
32 | }
33 | });
34 |
35 | const ordered = _.sortBy(posts, (o) => {
36 | return new moment(o.data.date);
37 | }).reverse();
38 |
39 | return ordered.map((orderedPost) => {
40 | return ;
41 | });
42 | }
43 | render() {
44 | const { route } = this.props;
45 | const post = route.page.data;
46 |
47 | return (
48 |
49 |
50 |
51 |
52 |
60 |
61 |
62 |
{post.title}
63 |
65 |
66 |
67 |
68 | {this.renderPosts(route)}
69 |
70 |
71 |
72 | );
73 | }
74 | }
75 |
76 | export default ArticlesList;
77 |
--------------------------------------------------------------------------------
/readme.md:
--------------------------------------------------------------------------------
1 | 
2 |
3 | Alchemy
4 |
5 | A Gatsby starter with PostCSS powers ✨🔮
6 |
7 | ## What is Alchemy?
8 | Alchemy is a Gatsby starter with PostCSS powers, you get the power of Gatsby and the power of PostCSS.
9 |
10 | This starter is intended to get you up and running with your first Gatsby site.
11 |
12 | Alchemy was designed to provide easy and quick customization, this starter is not a theme, is a boilerplate.
13 |
14 | Use this boilerplate to design your own site from 0.
15 |
16 | ## Features
17 | - Uses PostCSS
18 | - Includes PostCSS plugins out of the box
19 | - Uses Lost Grid as the grid system
20 | - Easy to customize
21 | - Neat folder structure
22 |
23 | ## PostCSS plugins
24 | - [postcss-nested](https://github.com/postcss/postcss-nested)
25 | - [postcss-import](https://github.com/postcss/postcss-import)
26 | - [postcss-cssnext](https://github.com/MoOx/postcss-cssnext)
27 | - [rucksack](https://github.com/simplaio/rucksack)
28 | - [lost](https://github.com/peterramsing/lost)
29 |
30 | ## Folder structure
31 | #### Must edit
32 | - **components** - your react components
33 | - **pages/articles** - the articles for your blog
34 | - **pages/pages** - the pages for your site
35 | - **pages/index.jsx** - the index of your site
36 | - **pages/_template.jsx** - the main template of your site
37 | - **styles/base** - your base styles
38 | - **styles/components** - the styles for your components
39 | - **styles/main.css** - your main stylesheet
40 | - **config.toml** - configuration file
41 |
42 | #### May leave as it is
43 | - **utils** - utilities such as typography.js
44 | - **wrappers** - wrappers for Gatsby, such as html, md, and so on.
45 | - **styles/markdown-styles.css** - the styles used for your code blocks (highlight.js)
46 | - **gatsby-node.js** - webpack configuration overrides
47 | - **html.jsx** - the main html tree
48 |
49 | ## Installing
50 | `gatsby new my-site https://github.com/bntzio/gatsby-starter-alchemy`
51 |
52 | `cd my-site`
53 |
54 | `npm run develop`
55 |
56 | ## License
57 | MIT License
58 |
59 | Copyright (c) 2017 Enrique Benitez (bntz.io)
60 |
61 | Permission is hereby granted, free of charge, to any person obtaining a copy
62 | of this software and associated documentation files (the "Software"), to deal
63 | in the Software without restriction, including without limitation the rights
64 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
65 | copies of the Software, and to permit persons to whom the Software is
66 | furnished to do so, subject to the following conditions:
67 |
68 | The above copyright notice and this permission notice shall be included in all
69 | copies or substantial portions of the Software.
70 |
71 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
72 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
73 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
74 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
75 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
76 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
77 | SOFTWARE.
78 |
--------------------------------------------------------------------------------
/styles/base/_normalize.css:
--------------------------------------------------------------------------------
1 | /*! normalize.css v5.0.0 | MIT License | github.com/necolas/normalize.css */
2 |
3 | /**
4 | * 1. Change the default font family in all browsers (opinionated).
5 | * 2. Correct the line height in all browsers.
6 | * 3. Prevent adjustments of font size after orientation changes in
7 | * IE on Windows Phone and in iOS.
8 | */
9 |
10 | /* Document
11 | ========================================================================== */
12 |
13 | html {
14 | font-family: sans-serif; /* 1 */
15 | line-height: 1.15; /* 2 */
16 | -ms-text-size-adjust: 100%; /* 3 */
17 | -webkit-text-size-adjust: 100%; /* 3 */
18 | }
19 |
20 | /* Sections
21 | ========================================================================== */
22 |
23 | /**
24 | * Remove the margin in all browsers (opinionated).
25 | */
26 |
27 | body {
28 | margin: 0;
29 | }
30 |
31 | /**
32 | * Add the correct display in IE 9-.
33 | */
34 |
35 | article,
36 | aside,
37 | footer,
38 | header,
39 | nav,
40 | section {
41 | display: block;
42 | }
43 |
44 | /**
45 | * Correct the font size and margin on `h1` elements within `section` and
46 | * `article` contexts in Chrome, Firefox, and Safari.
47 | */
48 |
49 | h1 {
50 | font-size: 2em;
51 | margin: 0.67em 0;
52 | }
53 |
54 | /* Grouping content
55 | ========================================================================== */
56 |
57 | /**
58 | * Add the correct display in IE 9-.
59 | * 1. Add the correct display in IE.
60 | */
61 |
62 | figcaption,
63 | figure,
64 | main { /* 1 */
65 | display: block;
66 | }
67 |
68 | /**
69 | * Add the correct margin in IE 8.
70 | */
71 |
72 | figure {
73 | margin: 1em 40px;
74 | }
75 |
76 | /**
77 | * 1. Add the correct box sizing in Firefox.
78 | * 2. Show the overflow in Edge and IE.
79 | */
80 |
81 | hr {
82 | box-sizing: content-box; /* 1 */
83 | height: 0; /* 1 */
84 | overflow: visible; /* 2 */
85 | }
86 |
87 | /**
88 | * 1. Correct the inheritance and scaling of font size in all browsers.
89 | * 2. Correct the odd `em` font sizing in all browsers.
90 | */
91 |
92 | pre {
93 | font-family: monospace, monospace; /* 1 */
94 | font-size: 1em; /* 2 */
95 | }
96 |
97 | /* Text-level semantics
98 | ========================================================================== */
99 |
100 | /**
101 | * 1. Remove the gray background on active links in IE 10.
102 | * 2. Remove gaps in links underline in iOS 8+ and Safari 8+.
103 | */
104 |
105 | a {
106 | background-color: transparent; /* 1 */
107 | -webkit-text-decoration-skip: objects; /* 2 */
108 | }
109 |
110 | /**
111 | * Remove the outline on focused links when they are also active or hovered
112 | * in all browsers (opinionated).
113 | */
114 |
115 | a:active,
116 | a:hover {
117 | outline-width: 0;
118 | }
119 |
120 | /**
121 | * 1. Remove the bottom border in Firefox 39-.
122 | * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
123 | */
124 |
125 | abbr[title] {
126 | border-bottom: none; /* 1 */
127 | text-decoration: underline; /* 2 */
128 | text-decoration: underline dotted; /* 2 */
129 | }
130 |
131 | /**
132 | * Prevent the duplicate application of `bolder` by the next rule in Safari 6.
133 | */
134 |
135 | b,
136 | strong {
137 | font-weight: inherit;
138 | }
139 |
140 | /**
141 | * Add the correct font weight in Chrome, Edge, and Safari.
142 | */
143 |
144 | b,
145 | strong {
146 | font-weight: bolder;
147 | }
148 |
149 | /**
150 | * 1. Correct the inheritance and scaling of font size in all browsers.
151 | * 2. Correct the odd `em` font sizing in all browsers.
152 | */
153 |
154 | code,
155 | kbd,
156 | samp {
157 | font-family: monospace, monospace; /* 1 */
158 | font-size: 1em; /* 2 */
159 | }
160 |
161 | /**
162 | * Add the correct font style in Android 4.3-.
163 | */
164 |
165 | dfn {
166 | font-style: italic;
167 | }
168 |
169 | /**
170 | * Add the correct background and color in IE 9-.
171 | */
172 |
173 | mark {
174 | background-color: #ff0;
175 | color: #000;
176 | }
177 |
178 | /**
179 | * Add the correct font size in all browsers.
180 | */
181 |
182 | small {
183 | font-size: 80%;
184 | }
185 |
186 | /**
187 | * Prevent `sub` and `sup` elements from affecting the line height in
188 | * all browsers.
189 | */
190 |
191 | sub,
192 | sup {
193 | font-size: 75%;
194 | line-height: 0;
195 | position: relative;
196 | vertical-align: baseline;
197 | }
198 |
199 | sub {
200 | bottom: -0.25em;
201 | }
202 |
203 | sup {
204 | top: -0.5em;
205 | }
206 |
207 | /* Embedded content
208 | ========================================================================== */
209 |
210 | /**
211 | * Add the correct display in IE 9-.
212 | */
213 |
214 | audio,
215 | video {
216 | display: inline-block;
217 | }
218 |
219 | /**
220 | * Add the correct display in iOS 4-7.
221 | */
222 |
223 | audio:not([controls]) {
224 | display: none;
225 | height: 0;
226 | }
227 |
228 | /**
229 | * Remove the border on images inside links in IE 10-.
230 | */
231 |
232 | img {
233 | border-style: none;
234 | }
235 |
236 | /**
237 | * Hide the overflow in IE.
238 | */
239 |
240 | svg:not(:root) {
241 | overflow: hidden;
242 | }
243 |
244 | /* Forms
245 | ========================================================================== */
246 |
247 | /**
248 | * 1. Change the font styles in all browsers (opinionated).
249 | * 2. Remove the margin in Firefox and Safari.
250 | */
251 |
252 | button,
253 | input,
254 | optgroup,
255 | select,
256 | textarea {
257 | font-family: sans-serif; /* 1 */
258 | font-size: 100%; /* 1 */
259 | line-height: 1.15; /* 1 */
260 | margin: 0; /* 2 */
261 | }
262 |
263 | /**
264 | * Show the overflow in IE.
265 | * 1. Show the overflow in Edge.
266 | */
267 |
268 | button,
269 | input { /* 1 */
270 | overflow: visible;
271 | }
272 |
273 | /**
274 | * Remove the inheritance of text transform in Edge, Firefox, and IE.
275 | * 1. Remove the inheritance of text transform in Firefox.
276 | */
277 |
278 | button,
279 | select { /* 1 */
280 | text-transform: none;
281 | }
282 |
283 | /**
284 | * 1. Prevent a WebKit bug where (2) destroys native `audio` and `video`
285 | * controls in Android 4.
286 | * 2. Correct the inability to style clickable types in iOS and Safari.
287 | */
288 |
289 | button,
290 | html [type="button"], /* 1 */
291 | [type="reset"],
292 | [type="submit"] {
293 | -webkit-appearance: button; /* 2 */
294 | }
295 |
296 | /**
297 | * Remove the inner border and padding in Firefox.
298 | */
299 |
300 | button::-moz-focus-inner,
301 | [type="button"]::-moz-focus-inner,
302 | [type="reset"]::-moz-focus-inner,
303 | [type="submit"]::-moz-focus-inner {
304 | border-style: none;
305 | padding: 0;
306 | }
307 |
308 | /**
309 | * Restore the focus styles unset by the previous rule.
310 | */
311 |
312 | button:-moz-focusring,
313 | [type="button"]:-moz-focusring,
314 | [type="reset"]:-moz-focusring,
315 | [type="submit"]:-moz-focusring {
316 | outline: 1px dotted ButtonText;
317 | }
318 |
319 | /**
320 | * Change the border, margin, and padding in all browsers (opinionated).
321 | */
322 |
323 | fieldset {
324 | border: 1px solid #c0c0c0;
325 | margin: 0 2px;
326 | padding: 0.35em 0.625em 0.75em;
327 | }
328 |
329 | /**
330 | * 1. Correct the text wrapping in Edge and IE.
331 | * 2. Correct the color inheritance from `fieldset` elements in IE.
332 | * 3. Remove the padding so developers are not caught out when they zero out
333 | * `fieldset` elements in all browsers.
334 | */
335 |
336 | legend {
337 | box-sizing: border-box; /* 1 */
338 | color: inherit; /* 2 */
339 | display: table; /* 1 */
340 | max-width: 100%; /* 1 */
341 | padding: 0; /* 3 */
342 | white-space: normal; /* 1 */
343 | }
344 |
345 | /**
346 | * 1. Add the correct display in IE 9-.
347 | * 2. Add the correct vertical alignment in Chrome, Firefox, and Opera.
348 | */
349 |
350 | progress {
351 | display: inline-block; /* 1 */
352 | vertical-align: baseline; /* 2 */
353 | }
354 |
355 | /**
356 | * Remove the default vertical scrollbar in IE.
357 | */
358 |
359 | textarea {
360 | overflow: auto;
361 | }
362 |
363 | /**
364 | * 1. Add the correct box sizing in IE 10-.
365 | * 2. Remove the padding in IE 10-.
366 | */
367 |
368 | [type="checkbox"],
369 | [type="radio"] {
370 | box-sizing: border-box; /* 1 */
371 | padding: 0; /* 2 */
372 | }
373 |
374 | /**
375 | * Correct the cursor style of increment and decrement buttons in Chrome.
376 | */
377 |
378 | [type="number"]::-webkit-inner-spin-button,
379 | [type="number"]::-webkit-outer-spin-button {
380 | height: auto;
381 | }
382 |
383 | /**
384 | * 1. Correct the odd appearance in Chrome and Safari.
385 | * 2. Correct the outline style in Safari.
386 | */
387 |
388 | [type="search"] {
389 | -webkit-appearance: textfield; /* 1 */
390 | outline-offset: -2px; /* 2 */
391 | }
392 |
393 | /**
394 | * Remove the inner padding and cancel buttons in Chrome and Safari on macOS.
395 | */
396 |
397 | [type="search"]::-webkit-search-cancel-button,
398 | [type="search"]::-webkit-search-decoration {
399 | -webkit-appearance: none;
400 | }
401 |
402 | /**
403 | * 1. Correct the inability to style clickable types in iOS and Safari.
404 | * 2. Change font properties to `inherit` in Safari.
405 | */
406 |
407 | ::-webkit-file-upload-button {
408 | -webkit-appearance: button; /* 1 */
409 | font: inherit; /* 2 */
410 | }
411 |
412 | /* Interactive
413 | ========================================================================== */
414 |
415 | /*
416 | * Add the correct display in IE 9-.
417 | * 1. Add the correct display in Edge, IE, and Firefox.
418 | */
419 |
420 | details, /* 1 */
421 | menu {
422 | display: block;
423 | }
424 |
425 | /*
426 | * Add the correct display in all browsers.
427 | */
428 |
429 | summary {
430 | display: list-item;
431 | }
432 |
433 | /* Scripting
434 | ========================================================================== */
435 |
436 | /**
437 | * Add the correct display in IE 9-.
438 | */
439 |
440 | canvas {
441 | display: inline-block;
442 | }
443 |
444 | /**
445 | * Add the correct display in IE.
446 | */
447 |
448 | template {
449 | display: none;
450 | }
451 |
452 | /* Hidden
453 | ========================================================================== */
454 |
455 | /**
456 | * Add the correct display in IE 10-.
457 | */
458 |
459 | [hidden] {
460 | display: none;
461 | }
462 |
--------------------------------------------------------------------------------