Initial commit

This commit is contained in:
Tony Blyler 2016-11-02 23:10:49 -04:00
parent 89eaf19aa2
commit 113550eb8a
24 changed files with 1040 additions and 0 deletions

1
.gitignore vendored Normal file
View file

@ -0,0 +1 @@
.sass-cache

6
.gitmodules vendored Normal file
View file

@ -0,0 +1,6 @@
[submodule "modules/evil-icons"]
path = modules/evil-icons
url = https://github.com/outpunk/evil-icons.git
[submodule "modules/normalize-scss"]
path = modules/normalize-scss
url = https://github.com/JohnAlbin/normalize-scss.git

29
README.md Normal file
View file

@ -0,0 +1,29 @@
# light-hugo
This a responsive hugo theme using [normalize.css](https://github.com/necolas/normalize.css/) ([sass](https://github.com/JohnAlbin/normalize-scss)). It is material in nature and very bare boned.
No javascript is used. Just straight up HTML and CSS.
## Page support
There is support for the following types...
* Posts
* Pages
The posts will be treated as blogs and pages will be treated with a similar fashion. There is a GitHub css theme used for the markdown generated for posts and pages from [markdown styles](https://github.com/mixu/markdown-styles).
## Config
The following config options are available for displaying custom content...
```toml
title = "Tony Blyler"
[Params]
description = "Programmer, deal with it"
logo = "/images/logo.png"
email = "tblyler@example.com"
github = "tblyler"
facebook = "example"
twitter = "tonyblyler"
linkedin = "tblyler"
```

2
archetypes/default.md Normal file
View file

@ -0,0 +1,2 @@
+++
+++

37
build.sh Executable file
View file

@ -0,0 +1,37 @@
#!/bin/bash
if ! which sass &> /dev/null; then
echo 'sass is missing from PATH' 1>&2
exit 1
fi
if ! which awk &> /dev/null; then
echo 'awk is missing from PATH' 1>&2
exit 1
fi
SASS_VERSION=$(sass --version | awk '{ print $2}' | tr '.' ' ')
SASS_MAJOR=$(echo "${SASS_VERSION}" | awk '{ print $1 }')
SASS_MINOR=$(echo "${SASS_VERSION}" | awk '{ print $2 }')
if [ ${SASS_MAJOR} -lt 3 ] || ([ ${SASS_MAJOR} -eq 3 ] && [ ${SASS_MINOR} -lt 4 ]); then
echo 'sass version must be >= 3.4' 1>&2
echo "version ${SASS_VERSION} installed" 1>&2
exit 1
fi
if [ "${1}" = "watch" ]; then
sass --sourcemap=none --watch ./scss:./static/css
exit $?
fi
echo 'Compiling sass'
sass --sourcemap=none --style compressed --update ./scss:./static/css
RETURN=$?
if [ $RETURN -ne 0 ]; then
echo 'Failure' 1>&2
exit $RETURN
fi
echo 'Success'

6
layouts/404.html Normal file
View file

@ -0,0 +1,6 @@
{{ partial "header.html" . }}
<h1>404</h1>
<h2>
Sorry, this page does not exist.
</h2>
{{ partial "footer.html" . }}

View file

@ -0,0 +1,19 @@
{{ partial "header.html" . }}
{{ range .Data.Pages.GroupByDate "2006" }}
<div class="listBody">
<div class="list">
<h2>{{ .Key }}</h2>
{{ range .Pages }}
<h3>
<a href="{{ .Permalink }}">
{{ .Title }} {{ if .GetParam "draft" }}DRAFT{{ end }}
</a>
</h3>
<div class="post-meta">
{{ .Date.Format "Mon, Jan 2, 2006" }}
</div>
{{ end }}
</div>
</div>
{{ end }}
{{ partial "footer.html" . }}

View file

@ -0,0 +1,9 @@
{{ partial "header.html" . }}
<div class="postBody">
<div class="post">
{{ if .Title }}<h1>{{ .Title }}</h1>{{ end }}
<span class="post-meta">{{ .Date.Format "Mon, Jan 2, 2006" }}</span>
{{ .Content }}
</div>
</div>
{{ partial "footer.html" . }}

7
layouts/index.html Normal file
View file

@ -0,0 +1,7 @@
{{ partial "header.html" . }}
{{ range first 10 .Data.Pages }}
{{ if eq .Type "post" }}
{{ .Render "summary" }}
{{ end }}
{{ end }}
{{ partial "footer.html" . }}

12
layouts/pages/single.html Normal file
View file

@ -0,0 +1,12 @@
{{ partial "header.html" . }}
<div class="postBody">
<div class="post">
{{ if .Title }}
<h1>{{ .Title }}</h1>
{{ end }}
<div class="content">
{{ .Content }}
</div>
</div>
</div>
{{ partial "footer.html" . }}

View file

@ -0,0 +1,12 @@
<div class="links">
<a href="{{ .Site.BaseURL }}">Home</a>
{{ range first 1 (where .Site.Pages "Type" "post") }}
<a href="{{ .Site.BaseURL }}post/">Archive</a>
{{ end }}
{{ range where .Site.Pages "Type" "!=" "post" }}
<a href="{{ .Permalink }}">{{ .Title }}</a>
{{ end }}
<a href="#top">Top</a>
</div>
</body>
</html>

View file

@ -0,0 +1,61 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1">
<title>{{ .Title }} &middot; {{ .Site.Title }}</title>
<base href="{{ .Permalink }}">
<link rel="canonical" href="{{ .Permalink }}">
{{ if .RSSlink }}
<link href="{{ .RSSlink }}" rel="alternative" type="application/rss+xml" title="{{ .Title }}" />
{{ end }}
<link rel="stylesheet" type="text/css" href="{{ .Site.BaseURL }}css/main.css" />
</head>
<body>
<a id="title" href="{{ .Site.BaseURL }}" title="{{ .Site.Title }}">
{{ if .Site.Params.logo }}
<img id="logo" alt="Logo" src="{{ .Site.Params.logo }}" />
{{ end }}
{{ if .Site.Title }}
<h1>{{ .Site.Title }}</h1>
{{ end }}
</a>
<div id="social">
{{ if .Site.Params.email }}
<a href="mailto:{{ .Site.Params.email }}" title="Email {{ .Site.Params.email }}">
<img alt="Email" src="{{ .Site.BaseURL }}images/email.svg" />
</a>
{{ end }}
{{ if .Site.Params.github }}
<a href="https://github.com/{{ .Site.Params.github }}" title="Github">
<img alt="GitHub" src="{{ .Site.BaseURL }}images/github.svg" />
</a>
{{ end }}
{{ if .Site.Params.facebook }}
<a href="https://facebook.com/{{ .Site.Params.facebook }}" title="Facebook">
<img alt="Facebook" src="{{ .Site.BaseURL }}images/facebook.svg" />
</a>
{{ end }}
{{ if .Site.Params.twitter }}
<a href="https://twitter.com/{{ .Site.Params.twitter }}" title="Twitter">
<img alt="Twitter" src="{{ .Site.BaseURL }}images/twitter.svg" />
</a>
{{ end }}
{{ if .Site.Params.linkedin }}
<a href="https://linkedin.com/in/{{ .Site.Params.linkedin }}" title="LinkedIn">
<img alt="LinkedIn" src="{{ .Site.BaseURL }}images/linkedin.svg" />
</a>
{{ end }}
</div>
{{ if .Site.Params.description }}
<p>{{ .Site.Params.description }}</p>
{{ end }}
<div class="links">
<a href="{{ .Site.BaseURL }}">Home</a>
{{ range first 1 (where .Site.Pages "Type" "post") }}
<a href="{{ .Site.BaseURL }}post/">Archive</a>
{{ end }}
{{ range where .Site.Pages "Type" "!=" "post" }}
<a href="{{ .Permalink }}">{{ .Title }}</a>
{{ end }}
</div>

12
layouts/post/single.html Normal file
View file

@ -0,0 +1,12 @@
{{ partial "header.html" . }}
<div class="postBody">
<div class="post">
<h1>{{ .Title }}</h1>
<span class="post-meta">{{ .Date.Format "Mon, Jan 2, 2006" }} - Read in {{ .ReadingTime }} Min</span>
<div class="content">
{{ .TableOfContents }}
{{ .Content }}
</div>
</div>
</div>
{{ partial "footer.html" . }}

16
layouts/post/summary.html Normal file
View file

@ -0,0 +1,16 @@
<div class="postBody">
<article class="post">
<header>
<h1>
<a href="{{ .Permalink }}">{{ .Title }} {{ if .Draft }}:: DRAFT{{end}}</a>
</h1>
<span class="post-meta">
{{ .Date.Format "Mon, Jan 2, 2006" }} - Read in {{ .ReadingTime }} Min
</span>
</header>
<div class="summary">
{{ .Summary }}
<a href="{{ .Permalink }}">Read more...</a>
</div>
</article>
</div>

1
modules/evil-icons Submodule

@ -0,0 +1 @@
Subproject commit 88ca2226be15706756cd5fbc9d0e125c4437df97

@ -0,0 +1 @@
Subproject commit 865e43749361e3b9812e816f4d61afbf5372121c

792
scss/main.scss Normal file
View file

@ -0,0 +1,792 @@
@import "../modules/normalize-scss/sass/normalize/import-now";
$container-color: darken(white, 5);
$bg-color: darken(white, 10);
// creates a material-design-esque container
@mixin container {
width: 95%;
margin: 2% auto;
background-color: $container-color;
box-shadow: 0px 0px 20px black;
border-radius: 5px;
}
body {
background-color: $bg-color;
text-align: center;
}
// transitiion the opacity in and out on image link hovers
a:hover {
opacity: 0.5;
}
#title {
color: black;
text-decoration: none;
h1:hover {
@extend a:hover;
}
}
#logo {
margin-top: 1%;
}
#social {
// these images are always SVG
img {
height: 3%;
width: 3%;
}
}
.links {
word-spacing: 1em;
padding-bottom: 1%;
a {
color: black;
text-decoration: none;
font-weight: bold;
}
}
.listBody {
@include container;
display: table;
width: auto;
}
.list {
margin: 1%;
padding: 1%;
h3 a {
text-decoration: none;
color: black;
}
}
.postBody {
@include container;
}
.post-meta {
color: lighten(black, 50);
margin-bottom: 1%;
}
.post {
margin: 1%;
padding: 1%;
text-align: left;
header {
h1 a {
color: black;
text-decoration: none;
}
}
.summary {
padding-top: 1%;
line-height: 1.6;
}
}
.content {
padding-top: 1%;
overflow: hidden;
line-height: 1.6;
word-wrap: break-word;
a {
background: transparent;
}
a:active,
a:hover {
outline: 0;
}
strong {
font-weight: bold;
}
h1 {
font-size: 2em;
margin: 0.67em 0;
}
img {
border: 0;
}
hr {
-moz-box-sizing: content-box;
box-sizing: content-box;
height: 0;
}
pre {
overflow: auto;
}
code,
kbd,
pre {
font-family: monospace, monospace;
font-size: 1em;
}
input {
color: inherit;
font: inherit;
margin: 0;
}
html input[disabled] {
cursor: default;
}
input {
line-height: normal;
}
input[type="checkbox"] {
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 0;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
td,
th {
padding: 0;
}
* {
-moz-box-sizing: border-box;
box-sizing: border-box;
}
input {
font: 13px/1.4 Helvetica, arial, freesans, clean, sans-serif, "Segoe UI Emoji", "Segoe UI Symbol";
}
a {
color: #4183c4;
text-decoration: none;
}
a:hover,
a:focus,
a:active {
text-decoration: underline;
}
hr {
height: 0;
margin: 15px 0;
overflow: hidden;
background: transparent;
border: 0;
border-bottom: 1px solid #ddd;
}
hr:before {
display: table;
content: "";
}
hr:after {
display: table;
clear: both;
content: "";
}
h1,
h2,
h3,
h4,
h5,
h6 {
margin-top: 15px;
margin-bottom: 15px;
line-height: 1.1;
}
h1 {
font-size: 30px;
}
h2 {
font-size: 21px;
}
h3 {
font-size: 16px;
}
h4 {
font-size: 14px;
}
h5 {
font-size: 12px;
}
h6 {
font-size: 11px;
}
blockquote {
margin: 0;
}
ul,
ol {
padding: 0;
margin-top: 0;
margin-bottom: 0;
}
ol ol,
ul ol {
list-style-type: lower-roman;
}
ul ul ol,
ul ol ol,
ol ul ol,
ol ol ol {
list-style-type: lower-alpha;
}
dd {
margin-left: 0;
}
code {
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
}
pre {
margin-top: 0;
margin-bottom: 0;
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
}
kbd {
background-color: #e7e7e7;
background-image: -webkit-linear-gradient(#fefefe, #e7e7e7);
background-image: linear-gradient(#fefefe, #e7e7e7);
background-repeat: repeat-x;
border-radius: 2px;
border: 1px solid #cfcfcf;
color: #000;
padding: 3px 5px;
line-height: 10px;
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
display: inline-block;
}
.markdown-body>*:first-child {
margin-top: 0 !important;
}
.markdown-body>*:last-child {
margin-bottom: 0 !important;
}
.anchor {
position: absolute;
top: 0;
bottom: 0;
left: 0;
display: block;
padding-right: 6px;
padding-left: 30px;
margin-left: -30px;
}
.anchor:focus {
outline: none;
}
h1,
h2,
h3,
h4,
h5,
h6 {
position: relative;
margin-top: 1em;
margin-bottom: 16px;
font-weight: bold;
line-height: 1.4;
}
h1 .octicon-link,
h2 .octicon-link,
h3 .octicon-link,
h4 .octicon-link,
h5 .octicon-link,
h6 .octicon-link {
display: none;
color: #000;
vertical-align: middle;
}
h1:hover .anchor,
h2:hover .anchor,
h3:hover .anchor,
h4:hover .anchor,
h5:hover .anchor,
h6:hover .anchor {
height: 1em;
padding-left: 8px;
margin-left: -30px;
line-height: 1;
text-decoration: none;
}
h1:hover .anchor .octicon-link,
h2:hover .anchor .octicon-link,
h3:hover .anchor .octicon-link,
h4:hover .anchor .octicon-link,
h5:hover .anchor .octicon-link,
h6:hover .anchor .octicon-link {
display: inline-block;
}
h1 {
padding-bottom: 0.3em;
font-size: 2.25em;
line-height: 1.2;
border-bottom: 1px solid #eee;
}
h2 {
padding-bottom: 0.3em;
font-size: 1.75em;
line-height: 1.225;
border-bottom: 1px solid #eee;
}
h3 {
font-size: 1.5em;
line-height: 1.43;
}
h4 {
font-size: 1.25em;
}
h5 {
font-size: 1em;
}
h6 {
font-size: 1em;
color: #777;
}
p,
blockquote,
ul,
ol,
dl,
table,
pre {
margin-top: 0;
margin-bottom: 16px;
}
hr {
height: 4px;
padding: 0;
margin: 16px 0;
background-color: #e7e7e7;
border: 0 none;
}
ul,
ol {
padding-left: 2em;
}
ul ul,
ul ol,
ol ol,
ol ul {
margin-top: 0;
margin-bottom: 0;
}
li>p {
margin-top: 16px;
}
dl {
padding: 0;
}
dl dt {
padding: 0;
margin-top: 16px;
font-size: 1em;
font-style: italic;
font-weight: bold;
}
dl dd {
padding: 0 16px;
margin-bottom: 16px;
}
blockquote {
padding: 0 15px;
color: #777;
border-left: 4px solid #ddd;
}
blockquote>:first-child {
margin-top: 0;
}
blockquote>:last-child {
margin-bottom: 0;
}
table {
display: block;
width: 100%;
overflow: auto;
word-break: normal;
word-break: keep-all;
}
table th {
font-weight: bold;
}
table th,
table td {
padding: 6px 13px;
border: 1px solid #ddd;
}
table tr {
background-color: #fff;
border-top: 1px solid #ccc;
}
table tr:nth-child(2n) {
background-color: #f8f8f8;
}
img {
max-width: 100%;
-moz-box-sizing: border-box;
box-sizing: border-box;
}
code {
padding: 0;
padding-top: 0.2em;
padding-bottom: 0.2em;
margin: 0;
font-size: 85%;
background-color: rgba(0,0,0,0.04);
border-radius: 3px;
}
code:before,
code:after {
letter-spacing: -0.2em;
content: "\00a0";
}
pre>code {
padding: 0;
margin: 0;
font-size: 100%;
word-break: normal;
white-space: pre;
background: transparent;
border: 0;
}
.highlight {
margin-bottom: 16px;
}
.highlight pre,
pre {
padding: 16px;
overflow: auto;
font-size: 85%;
line-height: 1.45;
background-color: #f7f7f7;
border-radius: 3px;
}
.highlight pre {
margin-bottom: 0;
word-break: normal;
}
pre {
word-wrap: normal;
}
pre code {
display: inline;
max-width: initial;
padding: 0;
margin: 0;
overflow: initial;
line-height: inherit;
word-wrap: normal;
background-color: transparent;
border: 0;
}
pre code:before,
pre code:after {
content: normal;
}
.highlight {
background: #fff;
}
.highlight .mf,
.highlight .mh,
.highlight .mi,
.highlight .mo,
.highlight .il,
.highlight .m {
color: #945277;
}
.highlight .s,
.highlight .sb,
.highlight .sc,
.highlight .sd,
.highlight .s2,
.highlight .se,
.highlight .sh,
.highlight .si,
.highlight .sx,
.highlight .s1 {
color: #df5000;
}
.highlight .kc,
.highlight .kd,
.highlight .kn,
.highlight .kp,
.highlight .kr,
.highlight .kt,
.highlight .k,
.highlight .o {
font-weight: bold;
}
.highlight .kt {
color: #458;
}
.highlight .c,
.highlight .cm,
.highlight .c1 {
color: #998;
font-style: italic;
}
.highlight .cp,
.highlight .cs {
color: #999;
font-weight: bold;
}
.highlight .cs {
font-style: italic;
}
.highlight .n {
color: #333;
}
.highlight .na,
.highlight .nv,
.highlight .vc,
.highlight .vg,
.highlight .vi {
color: #008080;
}
.highlight .nb {
color: #0086B3;
}
.highlight .nc {
color: #458;
font-weight: bold;
}
.highlight .no {
color: #094e99;
}
.highlight .ni {
color: #800080;
}
.highlight .ne {
color: #990000;
font-weight: bold;
}
.highlight .nf {
color: #945277;
font-weight: bold;
}
.highlight .nn {
color: #555;
}
.highlight .nt {
color: #000080;
}
.highlight .err {
color: #a61717;
background-color: #e3d2d2;
}
.highlight .gd {
color: #000;
background-color: #fdd;
}
.highlight .gd .x {
color: #000;
background-color: #faa;
}
.highlight .ge {
font-style: italic;
}
.highlight .gr {
color: #aa0000;
}
.highlight .gh {
color: #999;
}
.highlight .gi {
color: #000;
background-color: #dfd;
}
.highlight .gi .x {
color: #000;
background-color: #afa;
}
.highlight .go {
color: #888;
}
.highlight .gp {
color: #555;
}
.highlight .gs {
font-weight: bold;
}
.highlight .gu {
color: #800080;
font-weight: bold;
}
.highlight .gt {
color: #aa0000;
}
.highlight .ow {
font-weight: bold;
}
.highlight .w {
color: #bbb;
}
.highlight .sr {
color: #017936;
}
.highlight .ss {
color: #8b467f;
}
.highlight .bp {
color: #999;
}
.highlight .gc {
color: #999;
background-color: #EAF2F5;
}
.octicon {
font: normal normal 16px octicons-anchor;
line-height: 1;
display: inline-block;
text-decoration: none;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.octicon-link:before {
content: '\f05c';
}
.task-list-item {
list-style-type: none;
}
.task-list-item+.task-list-item {
margin-top: 3px;
}
.task-list-item input {
float: left;
margin: 0.3em 0 0.25em -1.6em;
vertical-align: middle;
}
@media (min-width: 43.75em) {
body {
padding: 30px;
}
}
}

1
static/css/main.css Normal file

File diff suppressed because one or more lines are too long

1
static/images/email.svg Symbolic link
View file

@ -0,0 +1 @@
../../modules/evil-icons/assets/icons/ei-envelope.svg

1
static/images/facebook.svg Symbolic link
View file

@ -0,0 +1 @@
../../modules/evil-icons/assets/icons/ei-sc-facebook.svg

1
static/images/github.svg Symbolic link
View file

@ -0,0 +1 @@
../../modules/evil-icons/assets/icons/ei-sc-github.svg

1
static/images/linkedin.svg Symbolic link
View file

@ -0,0 +1 @@
../../modules/evil-icons/assets/icons/ei-sc-linkedin.svg

1
static/images/twitter.svg Symbolic link
View file

@ -0,0 +1 @@
../../modules/evil-icons/assets/icons/ei-sc-twitter.svg

11
theme.toml Normal file
View file

@ -0,0 +1,11 @@
name = "light-hugo"
license = "MPL2"
licenselink = "https://github.com/tblyler/hugo-nojs/blob/master/LICENSE"
description = "CSS and HTML only blog/pages focused on content."
homepage = "https://github.com/tblyler/hugo-nojs"
tags = ["Responsive", "nojs", "Minimal", "normalize", "Light", "White"]
features = ["blog", "pages"]
[author]
name = "Tony Blyler"
homepage = "https://tonyblyler.com"