upgrade to Gatsby 0.11
5
.babelrc
@ -1,3 +1,4 @@
|
||||
{
|
||||
"stage": 2,
|
||||
}
|
||||
"presets": ['react', 'es2015', 'stage-0'],
|
||||
"plugins": ['add-module-exports']
|
||||
}
|
@ -10,8 +10,11 @@
|
||||
"no-else-return": [0],
|
||||
"space-infix-ops": [0],
|
||||
"react/prefer-es6-class": [0],
|
||||
"react/prefer-stateless-function": [0],
|
||||
"import/no-unresolved": [0],
|
||||
"global-require": [0],
|
||||
},
|
||||
"globals": {
|
||||
"__PREFIX_LINKS__": true,
|
||||
},
|
||||
}
|
||||
}
|
30
.gitignore
vendored
@ -1,27 +1,5 @@
|
||||
# Logs
|
||||
logs
|
||||
*.log
|
||||
node_modules/
|
||||
public
|
||||
|
||||
# Runtime data
|
||||
pids
|
||||
*.pid
|
||||
*.seed
|
||||
|
||||
# Directory for instrumented libs generated by jscoverage/JSCover
|
||||
lib-cov
|
||||
|
||||
# Coverage directory used by tools like istanbul
|
||||
coverage
|
||||
|
||||
# Grunt intermediate storage (http://gruntjs.com/creating-plugins#storing-task-files)
|
||||
.grunt
|
||||
|
||||
# node-waf configuration
|
||||
.lock-wscript
|
||||
|
||||
# Compiled binary addons (http://nodejs.org/api/addons.html)
|
||||
build/Release
|
||||
|
||||
# Dependency directory
|
||||
# https://www.npmjs.org/doc/misc/npm-faq.html#should-i-check-my-node_modules-folder-into-git
|
||||
node_modules
|
||||
.gatsby-context.js
|
||||
pages/.manifest
|
11
.project
Normal file
@ -0,0 +1,11 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<projectDescription>
|
||||
<name>gatsby-starter-lumen</name>
|
||||
<comment></comment>
|
||||
<projects>
|
||||
</projects>
|
||||
<buildSpec>
|
||||
</buildSpec>
|
||||
<natures>
|
||||
</natures>
|
||||
</projectDescription>
|
10
app.js
@ -1,10 +0,0 @@
|
||||
exports.loadContext = function(callback) {
|
||||
let context = require.context('./pages', true)
|
||||
if (module.hot) {
|
||||
module.hot.accept(context.id, () => {
|
||||
context = require.context('./pages', true)
|
||||
return callback(context)
|
||||
})
|
||||
}
|
||||
return callback(context)
|
||||
}
|
6
browserlist
Normal file
@ -0,0 +1,6 @@
|
||||
# Browsers that we support
|
||||
|
||||
>1%
|
||||
ie >= 9
|
||||
safari >= 6
|
||||
last 3 versions
|
@ -1 +0,0 @@
|
||||
import './style.sss'
|
@ -1,24 +0,0 @@
|
||||
.wrapper
|
||||
lost-center: 1070px
|
||||
.content
|
||||
lost-column: 2/3
|
||||
.main-inner
|
||||
padding: 40px 35px
|
||||
|
||||
@media screen and (max-width: 1100px)
|
||||
.content
|
||||
lost-column: 2/4
|
||||
.main-inner
|
||||
padding: 35px 20px
|
||||
|
||||
@media screen and (max-width: 900px)
|
||||
.content
|
||||
lost-column: 7/12
|
||||
.main-inner
|
||||
padding: 30px 20px
|
||||
|
||||
@media screen and (max-width: 500px)
|
||||
.content
|
||||
lost-column: 4/4
|
||||
.main-inner
|
||||
padding: 25px 20px
|
@ -1,8 +1,8 @@
|
||||
import React from 'react'
|
||||
import { RouteHandler, Link } from 'react-router'
|
||||
import { link } from 'gatsby-helpers'
|
||||
import { prefixLink } from 'gatsby-helpers'
|
||||
|
||||
import './style.sss'
|
||||
import './style.css'
|
||||
|
||||
class BlogNav extends React.Component {
|
||||
render() {
|
||||
@ -11,15 +11,15 @@ class BlogNav extends React.Component {
|
||||
<nav className='blog-nav'>
|
||||
<ul>
|
||||
<li>
|
||||
<Link to="/" className={ location.pathname === link('/') ? "current" : null }> Articles
|
||||
<Link to="/" className={ location.pathname === prefixLink('/') ? "current" : null }> Articles
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link to="/about" className={ location.pathname === link('/about') ? "current" : null }> About me
|
||||
<Link to="/about" className={ location.pathname === prefixLink('/about') ? "current" : null }> About me
|
||||
</Link>
|
||||
</li>
|
||||
<li>
|
||||
<Link to="/contact" className={ location.pathname === link('/contact') ? "current" : null }> Contact me
|
||||
<Link to="/contact" className={ location.pathname === prefixLink('/contact') ? "current" : null }> Contact me
|
||||
</Link>
|
||||
</li>
|
||||
</ul>
|
||||
|
24
components/BlogNav/style.css
Normal file
@ -0,0 +1,24 @@
|
||||
.blog-nav {
|
||||
margin: 20px 0px 10px;
|
||||
}
|
||||
.blog-nav ul {
|
||||
list-style: none;
|
||||
padding-left: 0;
|
||||
}
|
||||
.blog-nav ul li {
|
||||
margin: 10px 0 10px;
|
||||
}
|
||||
.blog-nav ul li a {
|
||||
font-size: 16px;
|
||||
line-heigh: 26px;
|
||||
margin-bottom: 26px;
|
||||
border-bottom: 0;
|
||||
font-weight: 400;
|
||||
color: #222;
|
||||
}
|
||||
.blog-nav ul li a.current {
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
.blog-nav ul li a:hover {
|
||||
border-bottom: 1px solid;
|
||||
}
|
@ -1,23 +0,0 @@
|
||||
.blog-nav
|
||||
margin: 20px 0px 10px
|
||||
|
||||
.blog-nav ul
|
||||
list-style: none
|
||||
padding-left: 0
|
||||
|
||||
.blog-nav ul li
|
||||
margin: 10px 0 10px
|
||||
|
||||
.blog-nav ul li a
|
||||
font-size: 16px
|
||||
line-heigh: 26px
|
||||
margin-bottom: 26px
|
||||
border-bottom: 0
|
||||
font-weight: 400
|
||||
color: #222
|
||||
|
||||
.blog-nav ul li a.current
|
||||
border-bottom: 1px solid
|
||||
|
||||
.blog-nav ul li a:hover
|
||||
border-bottom: 1px solid
|
@ -1,13 +1,13 @@
|
||||
import React from 'react'
|
||||
import moment from 'moment'
|
||||
import { RouteHandler, Link } from 'react-router'
|
||||
import { link } from 'gatsby-helpers'
|
||||
import { prefixLink } from 'gatsby-helpers'
|
||||
import DocumentTitle from 'react-document-title'
|
||||
import SidebarLeft from '../SidebarLeft'
|
||||
import access from 'safe-access'
|
||||
import { config } from 'config'
|
||||
|
||||
import './style.sss';
|
||||
import './style.css';
|
||||
|
||||
class BlogPage extends React.Component {
|
||||
render() {
|
||||
|
17
components/BlogPage/style.css
Normal file
@ -0,0 +1,17 @@
|
||||
.blog-page {
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.blog-page h1 {
|
||||
font-size: responsive 20px 36px;
|
||||
margin-top: 0;
|
||||
}
|
||||
.blog-page p {
|
||||
font-size: 16px;
|
||||
line-height: 26px;
|
||||
margin-bottom: 26px;
|
||||
}
|
||||
@media (max-width:900px) {
|
||||
.blog-single .text, .blog-single .footer {
|
||||
padding: 0 15px;
|
||||
}
|
||||
}
|
@ -1,16 +0,0 @@
|
||||
.blog-page
|
||||
margin-bottom: 40px
|
||||
|
||||
.blog-page h1
|
||||
font-size: responsive 20px 36px
|
||||
margin-top: 0
|
||||
|
||||
.blog-page p
|
||||
font-size: responsive 14px 16px
|
||||
line-height: 1.5
|
||||
margin-top: 10px
|
||||
|
||||
@media (max-width: 900px)
|
||||
.blog-single .text,
|
||||
.blog-single .footer
|
||||
padding: 0 15px
|
@ -2,13 +2,11 @@ import React from 'react'
|
||||
import moment from 'moment'
|
||||
import { RouteHandler, Link } from 'react-router'
|
||||
import DocumentTitle from 'react-document-title'
|
||||
import { link } from 'gatsby-helpers'
|
||||
import { prefixLink } from 'gatsby-helpers'
|
||||
import access from 'safe-access'
|
||||
import ReadNext from '../ReadNext'
|
||||
import { config } from 'config'
|
||||
|
||||
import './style.sss'
|
||||
|
||||
import ReadNext from '../ReadNext'
|
||||
import './style.css'
|
||||
import '../../static/css/highlight.css'
|
||||
|
||||
class BlogPost extends React.Component {
|
||||
@ -17,7 +15,7 @@ class BlogPost extends React.Component {
|
||||
const post = route.page.data
|
||||
const home = (
|
||||
<div>
|
||||
<Link className='gohome' to={ link('/') }> All Articles
|
||||
<Link className='gohome' to={ prefixLink('/') }> All Articles
|
||||
</Link>
|
||||
</div>
|
||||
)
|
||||
@ -39,7 +37,7 @@ class BlogPost extends React.Component {
|
||||
<p>
|
||||
{ config.siteDescr }
|
||||
<a href={ config.twitter }>
|
||||
<br></br> <strong>{ config.authorName }</strong> on Twitter</a>
|
||||
<br></br> <strong>{ config.siteAuthor }</strong> on Twitter</a>
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
105
components/BlogPost/style.css
Normal file
@ -0,0 +1,105 @@
|
||||
.blog-post {
|
||||
margin-bottom: 30px;
|
||||
}
|
||||
.blog-post:last-child {
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
.blog-post h2 {
|
||||
margin-top: 10px;
|
||||
line-height: 30px;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
.blog-post h2 a:hover {
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
.blog-post p {
|
||||
font-size: 16px;
|
||||
line-height: 26px;
|
||||
margin-bottom: 26px;
|
||||
}
|
||||
.blog-post time {
|
||||
font-size: 14px;
|
||||
color: #222;
|
||||
font-weight: 500;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.blog-post .blog-category {
|
||||
font-size: 14px;
|
||||
color: #f7a046;
|
||||
font-weight: 500;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
.blog-post .readmore {
|
||||
font-size: 16px;
|
||||
color: #5d93ff;
|
||||
}
|
||||
.blog-post .readmore:hover {
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
.blog-single {
|
||||
max-width: 945px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.blog-single h1 {
|
||||
text-align: center;
|
||||
margin-top: 30px;
|
||||
}
|
||||
.blog-single .text {
|
||||
line-height: 31px;
|
||||
margin-bottom: 31px;
|
||||
}
|
||||
.blog-single h1, .blog-single .date-published, .blog-single .text *:not(div) {
|
||||
max-width: 630px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.blog-single .text img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
.blog-single .footer {
|
||||
max-width: 630px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
line-height: 31px;
|
||||
margin-bottom: 31px;
|
||||
}
|
||||
.gohome {
|
||||
position: fixed;
|
||||
left: 20px;
|
||||
font-size: 16px;
|
||||
text-align: center;
|
||||
padding: 8px 16px;
|
||||
color: #999;
|
||||
background: #f4f4f4;
|
||||
font-weight: 400;
|
||||
border-radius: 3px;
|
||||
}
|
||||
.gohome:focus {
|
||||
color: #444;
|
||||
background: #f4f4f4;
|
||||
border: 0;
|
||||
}
|
||||
.gohome:hover {
|
||||
color: #444;
|
||||
background: #f4f4f4;
|
||||
border: 0;
|
||||
}
|
||||
@media (max-width:900px) {
|
||||
.blog-single h1 {
|
||||
margin-top: 15px;
|
||||
}
|
||||
.blog-single .text, .blog-single .footer {
|
||||
padding: 0 15px;
|
||||
line-height: 26px;
|
||||
margin-bottom: 26px;
|
||||
}
|
||||
.gohome {
|
||||
position: static;
|
||||
margin: 20px auto 0;
|
||||
text-align: center;
|
||||
width: 85px;
|
||||
display: block;
|
||||
}
|
||||
}
|
@ -1,108 +0,0 @@
|
||||
.blog-post
|
||||
margin-bottom: 30px
|
||||
|
||||
.blog-post:last-child
|
||||
margin-bottom: 10px
|
||||
|
||||
.blog-post h2
|
||||
margin-top: 10px
|
||||
line-height: 30px
|
||||
margin-bottom: 20px
|
||||
|
||||
.blog-post h2 a:hover
|
||||
border-bottom: 1px solid
|
||||
|
||||
.blog-post p
|
||||
font-size: 16px
|
||||
line-height: 26px
|
||||
margin-bottom: 26px
|
||||
|
||||
.blog-post time
|
||||
font-size: 14px
|
||||
color: #222
|
||||
font-weight: 600
|
||||
text-transform: uppercase
|
||||
letter-spacing: 0.04rem
|
||||
font-family: "Roboto", Helvetica, Arial, sans-serif
|
||||
|
||||
.blog-post .blog-category
|
||||
font-size: 14px
|
||||
color: #f7a046
|
||||
font-weight: 600
|
||||
text-transform: uppercase
|
||||
letter-spacing: 0.04rem
|
||||
font-family: "Roboto", Helvetica, Arial, sans-serif
|
||||
|
||||
.blog-post .readmore
|
||||
font-size: 16px
|
||||
color: #5d93ff
|
||||
font-weight: 600
|
||||
font-family: 'Raleway', Helvetica, Arial, sans-serif
|
||||
|
||||
.blog-post .readmore:hover
|
||||
border-bottom: 1px solid
|
||||
|
||||
.blog-single h1
|
||||
text-align: center
|
||||
margin-top: 30px
|
||||
|
||||
.blog-single .text
|
||||
line-height: 31px
|
||||
line-height: 1.722222222222222rem
|
||||
margin-bottom: 31px
|
||||
margin-bottom: 1.722222222222222rem
|
||||
|
||||
.blog-single h1,
|
||||
.blog-single .date-published,
|
||||
.blog-single .text div :not(figure)
|
||||
max-width: 35rem
|
||||
margin-left: auto
|
||||
margin-right: auto
|
||||
|
||||
.blog-single .text img
|
||||
max-width: 100%
|
||||
height: auto
|
||||
|
||||
.blog-single .footer
|
||||
max-width: 35rem
|
||||
margin-left: auto
|
||||
margin-right: auto
|
||||
line-height: 31px
|
||||
line-height: 1.722222222222222rem
|
||||
margin-bottom: 31px
|
||||
margin-bottom: 1.722222222222222rem
|
||||
|
||||
.gohome
|
||||
font-family: 'Raleway', Helvetica, Arial, sans-serif
|
||||
font-size: 16px
|
||||
text-align: center
|
||||
color: #343e47
|
||||
font-weight: 600
|
||||
position: fixed
|
||||
left: 20px
|
||||
top: 20px
|
||||
opacity: 0.5
|
||||
padding: 8px 18px
|
||||
border: 2px solid #343e47 !important
|
||||
border-radius: 3px
|
||||
|
||||
.gohome:hover
|
||||
color: #201e28
|
||||
opacity: 1
|
||||
|
||||
@media (max-width: 900px)
|
||||
.blog-single h1
|
||||
margin-top: 15px
|
||||
.blog-single .text,
|
||||
.blog-single .footer
|
||||
padding: 0 15px
|
||||
line-height: 26px
|
||||
line-height: 1.625rem
|
||||
margin: 0px 0px 26px
|
||||
margin: 0rem 0rem 1.625rem
|
||||
.gohome
|
||||
position: static
|
||||
margin: 20px auto 0
|
||||
text-align: center
|
||||
width: 85px
|
||||
display: block
|
@ -1,45 +1,38 @@
|
||||
import React from 'react'
|
||||
import { RouteHandler, Link } from 'react-router'
|
||||
import { link } from 'gatsby-helpers'
|
||||
import { prefixLink } from 'gatsby-helpers'
|
||||
import { config } from 'config'
|
||||
|
||||
import './style.sss'
|
||||
import './style.css'
|
||||
import '../../static/fonts/fontawesome/style.css'
|
||||
|
||||
class BlogSocial extends React.Component {
|
||||
render() {
|
||||
|
||||
const twitter = config.blogTitle
|
||||
const vk = config.vk
|
||||
const rss = config.rss
|
||||
const email = config.email
|
||||
const github = config.github
|
||||
const telegram = config.telegram
|
||||
|
||||
return (
|
||||
<div className='blog-social'>
|
||||
<ul>
|
||||
<li>
|
||||
<a href={ twitter }><i className='fa fa-twitter'></i></a>
|
||||
<a href={ config.siteTwitterUrl }><i className='fa fa-twitter'></i></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href={ github }><i className='fa fa-github-alt'></i></a>
|
||||
<a href={ config.siteGithubUrl }><i className='fa fa-github-alt'></i></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href={ vk }><i className='fa fa-vk'></i></a>
|
||||
<a href={ config.siteVkUrl }><i className='fa fa-vk'></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<a href={ email }><i className='fa fa-envelope-o'></i></a>
|
||||
<a href={ config.siteEmailUrl }><i className='fa fa-envelope-o'></i></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href={ telegram }><i className='fa fa-paper-plane'></i></a>
|
||||
<a href={ config.siteTelegramUrl }><i className='fa fa-paper-plane'></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul>
|
||||
<li>
|
||||
<a href={ rss }><i className='fa fa-rss'></i></a>
|
||||
<a href={ config.siteRssUrl }><i className='fa fa-rss'></i></a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
32
components/BlogSocial/style.css
Normal file
@ -0,0 +1,32 @@
|
||||
.blog-social {
|
||||
margin-top: 30px;
|
||||
}
|
||||
.blog-social ul {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 10px 0;
|
||||
clear: fix-legacy;
|
||||
}
|
||||
.blog-social ul > li {
|
||||
float: left;
|
||||
margin-right: 5px;
|
||||
text-align: center;
|
||||
height: 24px;
|
||||
width: 24px;
|
||||
border-radius: 3px;
|
||||
background: #f4f4f4;
|
||||
}
|
||||
.blog-social ul > li:hover {
|
||||
background: #f4f4f4;
|
||||
}
|
||||
.blog-social ul > li > a {
|
||||
border-bottom: 0;
|
||||
}
|
||||
.blog-social ul > li > a > i {
|
||||
color: #606060;
|
||||
font-size: 14px;
|
||||
line-height: 24px;
|
||||
}
|
||||
.blog-social ul > li:hover a > i {
|
||||
color: #444;
|
||||
}
|
@ -1,34 +0,0 @@
|
||||
.blog-social
|
||||
margin-top: 30px
|
||||
|
||||
.blog-social ul
|
||||
list-style: none
|
||||
padding: 0
|
||||
margin: 10px 0
|
||||
clear: fix-legacy
|
||||
|
||||
.blog-social ul > li
|
||||
float: left
|
||||
margin-right: 5px
|
||||
text-align: center
|
||||
line-height: 21px
|
||||
height: 24px
|
||||
width: 24px
|
||||
border-radius: 3px
|
||||
background: #f4edde
|
||||
|
||||
.blog-social ul > li:hover
|
||||
background: #f4efe8
|
||||
|
||||
.blog-social ul > li > a
|
||||
border-bottom: 0
|
||||
line-height: 21px
|
||||
cursor: pointer
|
||||
|
||||
.blog-social ul > li > a > i
|
||||
color: #333
|
||||
font-size: 14px
|
||||
line-height: 21px
|
||||
|
||||
.blog-social ul > li:hover a > i
|
||||
color: #222
|
@ -3,7 +3,7 @@ import { Link } from 'react-router'
|
||||
import { prune, include as includes } from 'underscore.string'
|
||||
import find from 'lodash/find'
|
||||
|
||||
import './style.sss'
|
||||
import './style.css'
|
||||
|
||||
class ReadNext extends React.Component {
|
||||
render() {
|
||||
|
4
components/ReadNext/style.css
Normal file
@ -0,0 +1,4 @@
|
||||
.description {
|
||||
font-size: responsive 12px 14px;
|
||||
line-height: 1.6;
|
||||
}
|
@ -1,3 +0,0 @@
|
||||
.description
|
||||
font-size: responsive 12px 14px
|
||||
line-height: 1.6
|
@ -1,27 +1,30 @@
|
||||
import React from 'react'
|
||||
import { RouteHandler, Link } from 'react-router'
|
||||
import { link } from 'gatsby-helpers'
|
||||
import { prefixLink } from 'gatsby-helpers'
|
||||
import { config } from 'config'
|
||||
import BlogNav from '../BlogNav'
|
||||
import BlogSocial from '../BlogSocial'
|
||||
import './style.sss'
|
||||
import './style.css'
|
||||
|
||||
class SidebarLeft extends React.Component {
|
||||
render() {
|
||||
const {location, children} = this.props
|
||||
let header
|
||||
const isHome = location.pathname === prefixLink('/')
|
||||
|
||||
header = (
|
||||
<header>
|
||||
<Link style={ { textDecoration: 'none', borderBottom: 'none', outline: 'none'} } to={ link('/') }>
|
||||
<img src='./images/photo9.jpg' width='75' height='75' />
|
||||
</Link>
|
||||
<h1><Link style={ { textDecoration: 'none', borderBottom: 'none', color: 'inherit'} } to={ link('/') } > { config.siteTitle } </Link></h1>
|
||||
<p>
|
||||
{ config.siteDescr }
|
||||
</p>
|
||||
</header>
|
||||
);
|
||||
let header = (
|
||||
<header>
|
||||
<Link style={ { textDecoration: 'none', borderBottom: 'none', outline: 'none'} } to={ prefixLink('/') }>
|
||||
<img src='./photo.jpg' width='75' height='75' />
|
||||
</Link>
|
||||
{ isHome ? (
|
||||
<h1><Link style={ { textDecoration: 'none', borderBottom: 'none', color: 'inherit'} } to={ prefixLink('/') }> { config.siteAuthor } </Link></h1>
|
||||
) :
|
||||
<h2><Link style={ { textDecoration: 'none', borderBottom: 'none', color: 'inherit'} } to={ prefixLink('/') }> { config.siteAuthor } </Link></h2> }
|
||||
<p>
|
||||
{ config.siteDescr }
|
||||
</p>
|
||||
</header>
|
||||
)
|
||||
|
||||
return (
|
||||
<div className='sidebar'>
|
||||
|
67
components/SidebarLeft/style.css
Normal file
@ -0,0 +1,67 @@
|
||||
.sidebar {
|
||||
lost-column: 1/3;
|
||||
}
|
||||
.sidebar .sidebar-inner {
|
||||
position: relative;
|
||||
padding: 40px;
|
||||
}
|
||||
.sidebar .sidebar-inner:after {
|
||||
background: #eee;
|
||||
background: linear-gradient(to bottom, #eee 0%, #eee 48%, #fff 100%);
|
||||
position: absolute;
|
||||
content: '';
|
||||
width: 1px;
|
||||
height: 540px;
|
||||
top: 30px;
|
||||
right: -10px;
|
||||
bottom: 0;
|
||||
}
|
||||
.sidebar .sidebar-inner img {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
border-radius: 50%;
|
||||
background-clip: padding-box;
|
||||
}
|
||||
.sidebar .sidebar-inner h1, .sidebar .sidebar-inner h2 {
|
||||
font-size: 18px;
|
||||
font-weight: 500;
|
||||
line-height: 18px;
|
||||
margin: 20px 0 10px;
|
||||
}
|
||||
.sidebar .sidebar-inner p {
|
||||
color: #888;
|
||||
font-size: 16px;
|
||||
line-height: 26px;
|
||||
margin-bottom: 26px;
|
||||
}
|
||||
.sidebar .sidebar-inner p.copyright {
|
||||
color: #b6b6b6;
|
||||
font-size: 14px;
|
||||
}
|
||||
@media (max-width:1100px) {
|
||||
.sidebar .sidebar-inner {
|
||||
padding: 35px 20px 0;
|
||||
}
|
||||
.sidebar {
|
||||
lost-column: 1/2;
|
||||
}
|
||||
}
|
||||
@media (max-width:900px) {
|
||||
.sidebar {
|
||||
lost-column: 5/12;
|
||||
}
|
||||
.sidebar .sidebar-inner {
|
||||
padding: 30px 20px 0;
|
||||
}
|
||||
}
|
||||
@media (max-width:500px) {
|
||||
.sidebar {
|
||||
lost-column: 1;
|
||||
}
|
||||
.sidebar .sidebar-inner {
|
||||
padding: 25px 20px 0;
|
||||
}
|
||||
.sidebar .sidebar-inner:after {
|
||||
display: none;
|
||||
}
|
||||
}
|
@ -1,59 +0,0 @@
|
||||
.sidebar
|
||||
lost-column: 1/3
|
||||
|
||||
.sidebar .sidebar-inner
|
||||
position: relative
|
||||
padding: 40px
|
||||
|
||||
.sidebar .sidebar-inner:after
|
||||
background: #eee
|
||||
background: linear-gradient(to bottom, #eee 0%, #eee 48%, #fff 100%)
|
||||
position: absolute
|
||||
content: ''
|
||||
width: 1px
|
||||
height: 540px
|
||||
top: 30px
|
||||
right: -10px
|
||||
bottom: 0
|
||||
|
||||
.sidebar .sidebar-inner img
|
||||
display: inline-block
|
||||
margin-bottom: 0
|
||||
border-radius: 50%
|
||||
background-clip: padding-box
|
||||
|
||||
.sidebar .sidebar-inner h1,
|
||||
.sidebar .sidebar-inner h2
|
||||
font-size: responsive 16px 18px
|
||||
line-height: 1
|
||||
margin: 20px 0 10px
|
||||
|
||||
.sidebar .sidebar-inner p
|
||||
font-size: 14px
|
||||
color: #888
|
||||
line-height: 23px
|
||||
margin-bottom: 23px
|
||||
|
||||
.sidebar .sidebar-inner p.copyright
|
||||
color: #b6b6b6
|
||||
font-size: 12px
|
||||
|
||||
@media (max-width: 1100px)
|
||||
.sidebar .sidebar-inner
|
||||
padding: 35px 20px 0
|
||||
.sidebar
|
||||
lost-column: 2/4
|
||||
|
||||
@media (max-width: 900px)
|
||||
.sidebar
|
||||
lost-column: 5/12
|
||||
.sidebar .sidebar-inner
|
||||
padding: 30px 20px 0
|
||||
|
||||
@media (max-width: 500px)
|
||||
.sidebar
|
||||
lost-column: 4/4
|
||||
.sidebar .sidebar-inner
|
||||
padding: 25px 20px 0
|
||||
.sidebar .sidebar-inner:after
|
||||
display: none
|
17
config.toml
@ -1,13 +1,12 @@
|
||||
siteTitle = "Blog by John Doe"
|
||||
siteDescr = "Lorem Ipsum is simply dummy text of the printing and typesetting industry. "
|
||||
siteDescr = "Lorem Ipsum is simply dummy text of the printing and typesetting industry."
|
||||
siteAuthor = "John Doe"
|
||||
|
||||
authorName = "John Doe"
|
||||
|
||||
linkTelegram = "#"
|
||||
linkTwitter = "#"
|
||||
linkGithub = "#"
|
||||
linkEmail = "#"
|
||||
linkRss = "/feed.xml"
|
||||
linkVk = "#"
|
||||
siteTelegramUrl = "#"
|
||||
siteTwitterUrl = "#"
|
||||
siteGithubUrl = "#"
|
||||
siteEmailUrl = "#"
|
||||
siteRssUrl = "#"
|
||||
siteVkUrl = "#"
|
||||
|
||||
linkPrefix = "/lumen"
|
13
gatsby-node.js
Normal file
@ -0,0 +1,13 @@
|
||||
var rucksack = require('rucksack-css')
|
||||
var lost = require("lost")
|
||||
|
||||
exports.modifyWebpackConfig = function(config, env) {
|
||||
config.merge({
|
||||
postcss: [
|
||||
lost(),
|
||||
rucksack()
|
||||
]
|
||||
})
|
||||
|
||||
return config
|
||||
};
|
@ -1,54 +0,0 @@
|
||||
import webpack from 'webpack'
|
||||
import precss from 'precss'
|
||||
import lost from 'lost'
|
||||
import rucksack from 'rucksack-css'
|
||||
import ExtractTextPlugin from 'extract-text-webpack-plugin'
|
||||
|
||||
module.exports = function(config, env) {
|
||||
var is_static = env === 'static';
|
||||
var is_develop = env === 'develop';
|
||||
var is_production = env === 'production';
|
||||
|
||||
config.merge({
|
||||
postcss: [
|
||||
lost(),
|
||||
rucksack({
|
||||
autoprefixer: true
|
||||
})
|
||||
]
|
||||
});
|
||||
|
||||
config.removeLoader('css');
|
||||
|
||||
if (is_develop) {
|
||||
config.loader('css', function(cfg) {
|
||||
cfg.test = /\.css/;
|
||||
cfg.loaders = ['style', 'css-loader', 'postcss-loader'];
|
||||
return cfg
|
||||
})
|
||||
config.loader('postcss', function(cfg) {
|
||||
cfg.test = /\.sss/;
|
||||
cfg.loaders = ['style', 'css-loader', 'postcss-loader?parser=sugarss'];
|
||||
return cfg
|
||||
})
|
||||
} else {
|
||||
config.loader('css', function(cfg) {
|
||||
cfg.test = /\.css/;
|
||||
cfg.loader = ExtractTextPlugin.extract(['css-loader', 'postcss-loader']);
|
||||
return cfg
|
||||
})
|
||||
config.loader('postcss', function(cfg) {
|
||||
cfg.test = /\.sss/;
|
||||
cfg.loader = ExtractTextPlugin.extract(['css-loader', 'postcss-loader?parser=sugarss']);
|
||||
return cfg
|
||||
})
|
||||
}
|
||||
|
||||
config.plugin('extract-css',
|
||||
ExtractTextPlugin,
|
||||
["styles.css", {
|
||||
allChunks: true
|
||||
}]);
|
||||
|
||||
return config
|
||||
};
|
45
html.js
@ -1,22 +1,34 @@
|
||||
import React from 'react'
|
||||
import DocumentTitle from 'react-document-title'
|
||||
import { link } from 'gatsby-helpers'
|
||||
import { prefixLink } from 'gatsby-helpers'
|
||||
|
||||
const BUILD_TIME = new Date().getTime()
|
||||
|
||||
module.exports = React.createClass({
|
||||
propTypes() {
|
||||
return {
|
||||
title: React.PropTypes.string,
|
||||
}
|
||||
displayName: 'HTML',
|
||||
propTypes: {
|
||||
body: React.PropTypes.string,
|
||||
},
|
||||
render() {
|
||||
let title = DocumentTitle.rewind()
|
||||
if (this.props.title) {
|
||||
title = this.props.title
|
||||
}
|
||||
const {body, route} = this.props
|
||||
const title = DocumentTitle.rewind()
|
||||
|
||||
let cssLink
|
||||
const font = `
|
||||
WebFontConfig = {
|
||||
google: { families: [ 'Roboto:400,500,700:latin,cyrillic' ] }
|
||||
};
|
||||
(function() {
|
||||
var wf = document.createElement('script');
|
||||
wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1/webfont.js';
|
||||
wf.type = 'text/javascript';
|
||||
wf.async = 'true';
|
||||
var s = document.getElementsByTagName('script')[0];
|
||||
s.parentNode.insertBefore(wf, s);
|
||||
})();
|
||||
`
|
||||
let css
|
||||
if (process.env.NODE_ENV === 'production') {
|
||||
cssLink = <link rel="stylesheet" href={ link('/styles.css') } />
|
||||
css = <style dangerouslySetInnerHTML={ { __html: require('!raw!postcss!./public/styles.css')} } />
|
||||
}
|
||||
|
||||
return (
|
||||
@ -24,19 +36,18 @@ module.exports = React.createClass({
|
||||
<head>
|
||||
<meta charSet="utf-8" />
|
||||
<meta httpEquiv="X-UA-Compatible" content="IE=edge" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0 maximum-scale=1.0" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0 maximum-scale=5.0" />
|
||||
<title>
|
||||
{ title }
|
||||
</title>
|
||||
<link rel="shortcut icon" href={ this.props.favicon } />
|
||||
<link href='https://fonts.googleapis.com/css?family=Roboto:700|Raleway:600,700|PT+Sans:400,400italic,700,700italic' rel='stylesheet' type='text/css' />
|
||||
{ cssLink }
|
||||
</head>
|
||||
<body>
|
||||
<div id="react-mount" dangerouslySetInnerHTML={ { __html: this.props.body} } />
|
||||
<script src={ link('/bundle.js') } />
|
||||
<script dangerouslySetInnerHTML={ { __html: font} } />
|
||||
{ css }
|
||||
<script src={ prefixLink(`/bundle.js?t=${BUILD_TIME}`) } />
|
||||
</body>
|
||||
</html>
|
||||
)
|
||||
},
|
||||
})
|
||||
})
|
57
package.json
@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "gatsby-theme-lumen",
|
||||
"version": "1.0.0",
|
||||
"description": "Awesome Theme for Gatsby",
|
||||
"name": "gatsby-starter-lumen",
|
||||
"description": "Simple starter for Gatsby",
|
||||
"main": "n/a",
|
||||
"scripts": {
|
||||
"lint": "./node_modules/.bin/eslint --ext .js,.jsx --ignore-pattern public .",
|
||||
@ -9,41 +9,40 @@
|
||||
},
|
||||
"keywords": [
|
||||
"gatsby",
|
||||
"theme",
|
||||
"lumen"
|
||||
"lumen",
|
||||
"starter"
|
||||
],
|
||||
"author": "Alexander Shelepenok <a.shelepenok@gmail.com>",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"react": "^0.14.7",
|
||||
"babel-plugin-add-module-exports": "^0.2.0",
|
||||
"babel-preset-es2015": "^6.6.0",
|
||||
"babel-preset-react": "^6.5.0",
|
||||
"babel-preset-stage-0": "^6.5.0",
|
||||
"babel-preset-stage-1": "^6.5.0",
|
||||
"classnames": "^2.1.2",
|
||||
"front-matter": "^2.0.8",
|
||||
"gatsby": "^0.11.2",
|
||||
"history": "^2.1.1",
|
||||
"lodash": "^4.12.0",
|
||||
"moment": "^2.12.0",
|
||||
"markdown-it": "^6.0.2",
|
||||
"react-document-title": "^2.0.1",
|
||||
"react-dom": "^0.14.7",
|
||||
"react-router": "^2.0.0",
|
||||
"lodash": "^4.5.0",
|
||||
"react-google-analytics": "^0.2.0",
|
||||
"react-router": "^2.4.0",
|
||||
"safe-access": "^0.1.0",
|
||||
"underscore.string": "^3.2.3",
|
||||
"moment": "^2.11.2"
|
||||
"underscore.string": "^3.2.3"
|
||||
},
|
||||
"devDependencies": {
|
||||
"webpack": "^1.12.2",
|
||||
"webpack-dev-server": "^1.12.0",
|
||||
"webpack-hot-middleware": "^2.2.0",
|
||||
"extract-text-webpack-plugin": "^1.0.1",
|
||||
"file-loader": "^0.8.4",
|
||||
"url-loader": "^0.5.7",
|
||||
"sugarss": "^0.1.0",
|
||||
"precss": "^1.4.0",
|
||||
"postcss-scss": "^0.1.7",
|
||||
"postcss-loader": "^0.8.0",
|
||||
"postcss-modules": "^0.1.3",
|
||||
"lost": "^6.7.0",
|
||||
"autoprefixer": "^6.3.6",
|
||||
"file-loader": "^0.8.5",
|
||||
"rucksack-css": "^0.8.5",
|
||||
"babel-plugin-react-transform": "^1.1.1",
|
||||
"eslint": "^2.3.0",
|
||||
"eslint-config-airbnb": "^6.1.0",
|
||||
"eslint-plugin-react": "^4.2.0",
|
||||
"react-transform-catch-errors": "^1.0.0",
|
||||
"react-transform-hmr": "^1.0.0",
|
||||
"redbox-react": "^1.0.1"
|
||||
"lost": "^6.7.2",
|
||||
"babel-preset-react-hmre": "^1.1.1",
|
||||
"eslint": "^2.9.0",
|
||||
"eslint-config-airbnb": "^9.0.1",
|
||||
"eslint-plugin-import": "^1.8.0",
|
||||
"eslint-plugin-jsx-a11y": "^1.2.0",
|
||||
"eslint-plugin-react": "^5.1.1"
|
||||
}
|
||||
}
|
||||
|
@ -1,7 +1,7 @@
|
||||
---
|
||||
path: /404.html
|
||||
layout: page
|
||||
---
|
||||
|
||||
# NOT FOUND
|
||||
|
||||
You just hit a route that doesn't exist... the sadness.
|
||||
|
@ -1,9 +1,10 @@
|
||||
import React from 'react'
|
||||
import { Link } from 'react-router'
|
||||
import { link } from 'gatsby-helpers'
|
||||
import { prefixLink } from 'gatsby-helpers'
|
||||
import { config } from 'config'
|
||||
|
||||
import '../static/css/reset.css'
|
||||
import '../static/css/base.css'
|
||||
import '../static/css/typography.css'
|
||||
|
||||
class Template extends React.Component {
|
||||
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 151 KiB |
Before Width: | Height: | Size: 319 KiB After Width: | Height: | Size: 319 KiB |
Before Width: | Height: | Size: 1.8 MiB After Width: | Height: | Size: 1.8 MiB |
Before Width: | Height: | Size: 8.4 KiB |
Before Width: | Height: | Size: 5.5 KiB |
Before Width: | Height: | Size: 4.3 KiB |
Before Width: | Height: | Size: 5.9 KiB |
Before Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 4.7 KiB |
Before Width: | Height: | Size: 3.5 KiB |
Before Width: | Height: | Size: 5.0 KiB |
Before Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 3.0 KiB |
Before Width: | Height: | Size: 4.9 KiB |
Before Width: | Height: | Size: 3.3 KiB |
@ -1,14 +1,14 @@
|
||||
import React from 'react'
|
||||
import { Link } from 'react-router'
|
||||
import sortBy from 'lodash/sortBy'
|
||||
import moment from 'moment';
|
||||
import moment from 'moment'
|
||||
import DocumentTitle from 'react-document-title'
|
||||
import { link } from 'gatsby-helpers'
|
||||
import { prefixLink } from 'gatsby-helpers'
|
||||
import access from 'safe-access'
|
||||
import { config } from 'config'
|
||||
|
||||
import BlogPost from '../components/BlogPost'
|
||||
import SidebarLeft from '../components/SidebarLeft'
|
||||
import BlogContent from '../components/BlogContent'
|
||||
|
||||
class BlogIndex extends React.Component {
|
||||
render() {
|
||||
@ -30,9 +30,9 @@ class BlogIndex extends React.Component {
|
||||
</time>
|
||||
<span style={ { padding: '5px'} }></span>
|
||||
<span className='blog-category'>{ category }</span>
|
||||
<h2><Link style={ { borderBottom: 'none',} } to={ link(page.path) } > { title } </Link></h2>
|
||||
<h2><Link style={ { borderBottom: 'none',} } to={ prefixLink(page.path) } > { title } </Link></h2>
|
||||
<p dangerouslySetInnerHTML={ { __html: description} } />
|
||||
<Link className='readmore' to={ link(page.path) }> Read
|
||||
<Link className='readmore' to={ prefixLink(page.path) }> Read
|
||||
</Link>
|
||||
</div>
|
||||
)
|
||||
|
Before Width: | Height: | Size: 4.3 KiB After Width: | Height: | Size: 4.3 KiB |
33
static/css/base.css
Normal file
@ -0,0 +1,33 @@
|
||||
.wrapper {
|
||||
lost-center: 1070px;
|
||||
}
|
||||
.content {
|
||||
lost-column: 2/3;
|
||||
}
|
||||
.main-inner {
|
||||
padding: 40px 35px;
|
||||
}
|
||||
@media screen and (max-width:1100px) {
|
||||
.content {
|
||||
lost-column: 2/4;
|
||||
}
|
||||
.main-inner {
|
||||
padding: 35px 20px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width:900px) {
|
||||
.content {
|
||||
lost-column: 7/12;
|
||||
}
|
||||
.main-inner {
|
||||
padding: 30px 20px;
|
||||
}
|
||||
}
|
||||
@media screen and (max-width:500px) {
|
||||
.content {
|
||||
lost-column: 4/4;
|
||||
}
|
||||
.main-inner {
|
||||
padding: 25px 20px;
|
||||
}
|
||||
}
|
@ -1,21 +1,188 @@
|
||||
/*! Gatsby Lumen Typography. Based on Gutengerg <- https://github.com/matejlatin/Gutenberg/ -> */
|
||||
html, body {
|
||||
/*
|
||||
Gutenberg: Web Typography Starter Kit
|
||||
Website ....... http://matejlatin.github.io/Gutenberg/
|
||||
Version ....... 1.1
|
||||
Github ........ https://github.com/matejlatin/Gutenberg
|
||||
Authors ....... Matej Latin (@matejlatin)
|
||||
License ....... Creative Commmons Attribution 3.0
|
||||
License URL ... https://raw.githubusercontent.com/matejlatin/Gutenberg/master/license.txt
|
||||
*/
|
||||
|
||||
/* Font themes
|
||||
========================================================================== */
|
||||
@media screen and (min-width:40em) {
|
||||
.floatLeft {
|
||||
float: left;
|
||||
}
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
.floatCenter {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
.floatRight {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
/* Defaults
|
||||
========================================================================== */
|
||||
@media screen and (min-width:40em) {
|
||||
body, html {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
}
|
||||
}
|
||||
html {
|
||||
box-sizing: border-box;
|
||||
font-size: 16px;
|
||||
font-size: 100%;
|
||||
font-family: "PT Sans", Georgia, Times, serif;
|
||||
font-family: "Roboto", Arial, sans-serif;
|
||||
color: #222;
|
||||
-ms-text-size-adjust: 100%;
|
||||
-webkit-text-size-adjust: 100%;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
html {
|
||||
font-size: 18px;
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
}
|
||||
*, *::before, *::after {
|
||||
box-sizing: inherit;
|
||||
}
|
||||
body {
|
||||
margin: 0;
|
||||
}
|
||||
footer {
|
||||
display: block;
|
||||
}
|
||||
body > footer {
|
||||
margin: 0 auto;
|
||||
width: 80%;
|
||||
}
|
||||
header {
|
||||
display: block;
|
||||
}
|
||||
main {
|
||||
display: block;
|
||||
}
|
||||
section {
|
||||
display: block;
|
||||
}
|
||||
|
||||
/* Paragraph
|
||||
========================================================================== */
|
||||
/* Links
|
||||
========================================================================== */
|
||||
a {
|
||||
background: transparent;
|
||||
color: #222;
|
||||
text-decoration: none;
|
||||
transition: all .3s;
|
||||
}
|
||||
a:active, a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
a:hover {
|
||||
color: #222;
|
||||
}
|
||||
a:active {
|
||||
color: #222;
|
||||
}
|
||||
article {
|
||||
display: block;
|
||||
margin: 0 auto;
|
||||
width: 80%;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
article {
|
||||
max-width: 945px;
|
||||
max-width: 52.5rem;
|
||||
}
|
||||
}
|
||||
audio {
|
||||
display: inline-block;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
audio:not([controls]) {
|
||||
display: none;
|
||||
height: 0;
|
||||
}
|
||||
canvas {
|
||||
display: inline-block;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
pre {
|
||||
overflow: auto;
|
||||
}
|
||||
code, kbd, pre, samp {
|
||||
font-family: monospace, monospace;
|
||||
}
|
||||
code {
|
||||
padding: 26px;
|
||||
padding: 1.625rem;
|
||||
display: block;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
code {
|
||||
padding: 31px;
|
||||
padding: 1.722222222222222rem;
|
||||
}
|
||||
}
|
||||
details {
|
||||
display: block;
|
||||
}
|
||||
summary {
|
||||
display: block;
|
||||
}
|
||||
figcaption {
|
||||
line-height: 26px;
|
||||
line-height: 1.625rem;
|
||||
color: #222;
|
||||
display: block;
|
||||
font-size: .8125rem;
|
||||
font-style: italic;
|
||||
margin-bottom: 0;
|
||||
text-align: center;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
figcaption {
|
||||
line-height: 31px;
|
||||
line-height: 1.722222222222222rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
}
|
||||
figure {
|
||||
display: block;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
figure.floatLeft, figure.floatRight {
|
||||
max-width: 315px;
|
||||
max-width: 17.5rem;
|
||||
padding: 0px 31px;
|
||||
padding: 0rem 1.722222222222222rem;
|
||||
}
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
figure.floatLeft blockquote, figure.floatRight blockquote {
|
||||
padding: 0px;
|
||||
padding: 0rem;
|
||||
text-align: left;
|
||||
}
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
figure.floatLeft blockquote p, figure.floatRight blockquote p {
|
||||
font-size: 19.2px;
|
||||
font-size: 1.2rem;
|
||||
line-height: 31px;
|
||||
line-height: 1.722222222222222rem;
|
||||
}
|
||||
}
|
||||
|
||||
/* Headings
|
||||
========================================================================== */
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-family: "Raleway", Helvetica, Arial, sans-serif;
|
||||
color: #222;
|
||||
}
|
||||
========================================================================== */
|
||||
h1 {
|
||||
font-size: 40px;
|
||||
font-size: 2.5rem;
|
||||
@ -76,168 +243,7 @@ h6 {
|
||||
margin-bottom: 13px;
|
||||
margin-bottom: 0.8125rem;
|
||||
}
|
||||
h1 + h2 {
|
||||
margin-top: 26px;
|
||||
margin-top: 1.625rem;
|
||||
}
|
||||
h2 + h3, h3 + h4, h4 + h5 {
|
||||
margin-top: 13px;
|
||||
margin-top: 0.8125rem;
|
||||
}
|
||||
h5 + h6 {
|
||||
margin-top: -13px;
|
||||
margin-top: -0.8125rem;
|
||||
}
|
||||
h6 {
|
||||
font-style: italic;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* Links
|
||||
========================================================================== */
|
||||
a {
|
||||
color: #5d93ff;
|
||||
text-decoration: none;
|
||||
transition: all .3s ease;
|
||||
}
|
||||
a:hover {
|
||||
border-bottom: 1px solid;
|
||||
text-decoration: none;
|
||||
}
|
||||
a:visited {
|
||||
color: #222;
|
||||
}
|
||||
a:visited:hover {
|
||||
color: #222;
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
a:active {
|
||||
color: #222;
|
||||
border-bottom: 1px solid;
|
||||
}
|
||||
h2 a {
|
||||
color: #222;
|
||||
}
|
||||
|
||||
/* Figures & other elements
|
||||
========================================================================== */
|
||||
figcaption {
|
||||
line-height: 26px;
|
||||
line-height: 1.625rem;
|
||||
color: #222;
|
||||
font-size: .8125rem;
|
||||
font-style: italic;
|
||||
margin-bottom: 0;
|
||||
text-align: center;
|
||||
}
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
padding-left: 1.4375rem;
|
||||
}
|
||||
cite {
|
||||
font-style: normal;
|
||||
}
|
||||
figure blockquote {
|
||||
padding: 31px 0px;
|
||||
padding: 1.722222222222222rem 0rem;
|
||||
text-align: center;
|
||||
}
|
||||
figure blockquote p {
|
||||
font-size: 27px;
|
||||
font-size: 1.6875rem;
|
||||
margin-top: 0;
|
||||
line-height: 46.5px;
|
||||
line-height: 2.583333333333334rem;
|
||||
}
|
||||
figure.floatLeft, figure.floatRight {
|
||||
max-width: 315px;
|
||||
max-width: 17.5rem;
|
||||
padding: 0px 31px;
|
||||
padding: 0rem 1.722222222222222rem;
|
||||
}
|
||||
figure.floatLeft blockquote, figure.floatRight blockquote {
|
||||
text-align: left;
|
||||
padding: 0px;
|
||||
padding: 0rem;
|
||||
}
|
||||
figure.floatLeft blockquote p, figure.floatRight blockquote p {
|
||||
font-size: 19.2px;
|
||||
font-size: 1.2rem;
|
||||
line-height: 31px;
|
||||
line-height: 1.722222222222222rem;
|
||||
}
|
||||
figcaption {
|
||||
line-height: 31px;
|
||||
line-height: 1.722222222222222rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.floatLeft {
|
||||
float: left;
|
||||
}
|
||||
.floatCenter {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.floatRight {
|
||||
float: right;
|
||||
}
|
||||
ul li, ol li {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
hr {
|
||||
margin-top: 52px;
|
||||
margin-top: 3.25rem;
|
||||
margin-bottom: 52px;
|
||||
margin-bottom: 3.25rem;
|
||||
border: 0;
|
||||
color: #222;
|
||||
display: block;
|
||||
height: 26px;
|
||||
height: 1.625rem;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
background-size: 100% 26px;
|
||||
background-size: 100% 1.625rem;
|
||||
background-image: linear-gradient(to bottom, transparent 1px, transparent 11px, #222 11px, #222 15px, transparent 15px, transparent 26px);
|
||||
width: 100px;
|
||||
}
|
||||
small {
|
||||
line-height: 13px;
|
||||
line-height: 0.8125rem;
|
||||
}
|
||||
code {
|
||||
padding: 26px;
|
||||
padding: 1.625rem;
|
||||
}
|
||||
.alignLeft {
|
||||
text-align: left;
|
||||
}
|
||||
.alignCenter {
|
||||
text-align: center;
|
||||
}
|
||||
.alignRight {
|
||||
text-align: right;
|
||||
}
|
||||
|
||||
/* Put your styles below this line
|
||||
========================================================================== */
|
||||
@media screen and (min-width:40em) {
|
||||
|
||||
/* Mixins
|
||||
========================================================================== */
|
||||
body, html {
|
||||
margin: 0;
|
||||
width: 100%;
|
||||
max-width: none;
|
||||
}
|
||||
html {
|
||||
font-size: 18px;
|
||||
font-size: 1.125rem;
|
||||
}
|
||||
article {
|
||||
max-width: 945px;
|
||||
max-width: 52.5rem;
|
||||
}
|
||||
h1 {
|
||||
font-size: 40px;
|
||||
font-size: 2.5rem;
|
||||
@ -298,74 +304,63 @@ code {
|
||||
margin-bottom: 15.5px;
|
||||
margin-bottom: 0.861111111111111rem;
|
||||
}
|
||||
}
|
||||
h1 + h2 {
|
||||
margin-top: 26px;
|
||||
margin-top: 1.625rem;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
h1 + h2 {
|
||||
margin-top: 31px;
|
||||
margin-top: 1.722222222222222rem;
|
||||
}
|
||||
}
|
||||
h2 + h3, h3 + h4, h4 + h5 {
|
||||
margin-top: 13px;
|
||||
margin-top: 0.8125rem;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
h2 + h3, h3 + h4, h4 + h5 {
|
||||
margin-top: 15.5px;
|
||||
margin-top: 0.861111111111111rem;
|
||||
}
|
||||
}
|
||||
h5 + h6 {
|
||||
margin-top: -13px;
|
||||
margin-top: -0.8125rem;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
h5 + h6 {
|
||||
margin-top: -15.5px;
|
||||
margin-top: -0.861111111111111rem;
|
||||
}
|
||||
figcaption {
|
||||
line-height: 31px;
|
||||
line-height: 1.722222222222222rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
figure blockquote {
|
||||
padding: 31px 0px;
|
||||
padding: 1.722222222222222rem 0rem;
|
||||
text-align: center;
|
||||
}
|
||||
figure blockquote p {
|
||||
font-size: 27px;
|
||||
font-size: 1.6875rem;
|
||||
margin-top: 0;
|
||||
line-height: 46.5px;
|
||||
line-height: 2.583333333333334rem;
|
||||
}
|
||||
figure.floatLeft, figure.floatRight {
|
||||
max-width: 315px;
|
||||
max-width: 17.5rem;
|
||||
padding: 0px 31px;
|
||||
padding: 0rem 1.722222222222222rem;
|
||||
}
|
||||
figure.floatLeft blockquote, figure.floatRight blockquote {
|
||||
text-align: left;
|
||||
padding: 0px;
|
||||
padding: 0rem;
|
||||
}
|
||||
figure.floatLeft blockquote p, figure.floatRight blockquote p {
|
||||
font-size: 19.2px;
|
||||
font-size: 1.2rem;
|
||||
line-height: 31px;
|
||||
line-height: 1.722222222222222rem;
|
||||
}
|
||||
figcaption {
|
||||
line-height: 31px;
|
||||
line-height: 1.722222222222222rem;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
.floatLeft {
|
||||
float: left;
|
||||
}
|
||||
.floatCenter {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
.floatRight {
|
||||
float: right;
|
||||
}
|
||||
blockquote {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
small {
|
||||
line-height: 15.5px;
|
||||
line-height: 0.861111111111111rem;
|
||||
}
|
||||
}
|
||||
h6 {
|
||||
font-style: italic;
|
||||
font-weight: normal;
|
||||
}
|
||||
hgroup {
|
||||
display: block;
|
||||
}
|
||||
hr {
|
||||
margin-top: 52px;
|
||||
margin-top: 3.25rem;
|
||||
margin-bottom: 52px;
|
||||
margin-bottom: 3.25rem;
|
||||
box-sizing: content-box;
|
||||
border: 0;
|
||||
color: #222;
|
||||
display: block;
|
||||
height: 26px;
|
||||
height: 1.625rem;
|
||||
margin-right: auto;
|
||||
margin-left: auto;
|
||||
background-size: 100% 26px;
|
||||
background-size: 100% 1.625rem;
|
||||
background-image: linear-gradient(to bottom, transparent 1px, transparent 11px, #222 11px, #222 15px, transparent 15px, transparent 26px);
|
||||
width: 100px;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
hr {
|
||||
margin-top: 62px;
|
||||
margin-top: 3.444444444444445rem;
|
||||
@ -373,12 +368,147 @@ code {
|
||||
margin-bottom: 3.444444444444445rem;
|
||||
height: 31px;
|
||||
height: 1.722222222222222rem;
|
||||
}
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
hr {
|
||||
background-size: 100% 31px;
|
||||
background-size: 100% 1.722222222222222rem;
|
||||
background-image: linear-gradient(to bottom, transparent 1px, transparent 13.5px, #222 13.5px, #222 17.5px, transparent 17.5px, transparent 31px);
|
||||
}
|
||||
code {
|
||||
padding: 31px;
|
||||
padding: 1.722222222222222rem;
|
||||
}
|
||||
img {
|
||||
border: 0;
|
||||
max-width: 100%;
|
||||
display: block;
|
||||
margin: inherit auto;
|
||||
}
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
ul li, ol li {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
nav {
|
||||
display: block;
|
||||
}
|
||||
progress {
|
||||
display: inline-block;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
blockquote {
|
||||
font-style: italic;
|
||||
padding-left: 1.4375rem;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
blockquote {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
}
|
||||
cite {
|
||||
display: block;
|
||||
font-style: normal;
|
||||
}
|
||||
figure blockquote {
|
||||
padding: 26px 0px;
|
||||
padding: 1.625rem 0rem;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
figure blockquote {
|
||||
padding: 62px 0px 31px;
|
||||
padding: 3.444444444444445rem 0rem 1.722222222222222rem;
|
||||
text-align: center;
|
||||
}
|
||||
}
|
||||
figure blockquote p {
|
||||
font-size: 27px;
|
||||
font-size: 1.6875rem;
|
||||
line-height: 39px;
|
||||
line-height: 2.4375rem;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
figure blockquote p {
|
||||
font-size: 27px;
|
||||
font-size: 1.6875rem;
|
||||
line-height: 46.5px;
|
||||
line-height: 2.583333333333334rem;
|
||||
}
|
||||
}
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
td, th {
|
||||
padding: 0;
|
||||
}
|
||||
[hidden], template {
|
||||
display: none;
|
||||
}
|
||||
abbr {
|
||||
letter-spacing: 0.1em;
|
||||
}
|
||||
abbr[title] {
|
||||
border-bottom: 1px dotted;
|
||||
}
|
||||
b, strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
dfn {
|
||||
font-style: italic;
|
||||
}
|
||||
em, i {
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
mark {
|
||||
background: #ff0;
|
||||
color: #000;
|
||||
}
|
||||
small {
|
||||
line-height: 13px;
|
||||
line-height: 0.8125rem;
|
||||
font-size: 70%;
|
||||
}
|
||||
@media screen and (min-width:40em) {
|
||||
small {
|
||||
line-height: 15.5px;
|
||||
line-height: 0.861111111111111rem;
|
||||
}
|
||||
}
|
||||
sub, sup {
|
||||
font-size: 75%;
|
||||
line-height: 0;
|
||||
position: relative;
|
||||
vertical-align: baseline;
|
||||
}
|
||||
sup {
|
||||
top: -0.5em;
|
||||
}
|
||||
sub {
|
||||
bottom: -0.25em;
|
||||
}
|
||||
|
||||
/* Paragraph
|
||||
========================================================================== */
|
||||
.attention-grabber {
|
||||
font-size: 19.2px;
|
||||
font-size: 1.2rem;
|
||||
}
|
||||
.alignLeft {
|
||||
text-align: left;
|
||||
}
|
||||
.alignCenter {
|
||||
text-align: center;
|
||||
}
|
||||
.alignRight {
|
||||
text-align: right;
|
||||
}
|
||||
.uppercase {
|
||||
letter-spacing: .1em;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
video {
|
||||
display: inline-block;
|
||||
vertical-align: baseline;
|
||||
}
|
@ -8,8 +8,8 @@ class MarkdownWrapper extends React.Component {
|
||||
render() {
|
||||
const {route} = this.props
|
||||
const post = route.page.data
|
||||
|
||||
let layout, template
|
||||
|
||||
layout = post.layout
|
||||
|
||||
if (layout != 'page') {
|
||||
|