fundamental 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/LICENSE.txt +21 -0
- data/README.md +158 -0
- data/_includes/breadcrumbs.html +22 -0
- data/_includes/footer.html +3 -0
- data/_includes/head.html +11 -0
- data/_includes/header.html +17 -0
- data/_includes/info.html +13 -0
- data/_includes/item.html +18 -0
- data/_includes/tag-cloud.html +9 -0
- data/_layouts/archive.html +14 -0
- data/_layouts/blog.html +14 -0
- data/_layouts/default.html +13 -0
- data/_layouts/month.html +14 -0
- data/_layouts/page.html +9 -0
- data/_layouts/post.html +17 -0
- data/_layouts/tag_page.html +14 -0
- data/_sass/_blog.scss +25 -0
- data/_sass/_footer.scss +4 -0
- data/_sass/_fundamentals.scss +56 -0
- data/_sass/_globals.scss +82 -0
- data/_sass/_header.scss +50 -0
- data/_sass/_post.scss +17 -0
- data/_sass/_syntax.scss +64 -0
- data/_sass/_tables.scss +26 -0
- data/_sass/_typography.scss +98 -0
- data/_sass/_variables.scss +12 -0
- data/assets/images/logo.svg +1 -0
- data/assets/main.scss +19 -0
- metadata +142 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 4c24efacbd4a874fa577acff1ae7438996ff53a0
|
4
|
+
data.tar.gz: 82d2877b9df2d41abaa79362e651dab846cd5346
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e6276b0cc4f6cc6a5df29795d8f164ce74c380e685ade583a0d3964571fc913e6b6ab3b0b3bb87401606c5f0ef25295a0e65bf837f8085cf2aa8e4ecc4e0ffa3
|
7
|
+
data.tar.gz: 85ae16d50901c96911e8bf4891838aedd8e44a8db01ae82bac4bcfb8200bae5453f1a500b117eb3db281d29cc707559f893ca8802eaa2a158c3550377d1957dc
|
data/LICENSE.txt
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
The MIT License (MIT)
|
2
|
+
|
3
|
+
Copyright (c) 2017 Theo M Jones
|
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
|
13
|
+
all 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
|
21
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
# 
|
2
|
+
|
3
|
+
Fundamental is a clean, fully responsive, lightweight Jekyll theme for blogging. No frameworks, no JavaScript. It uses system fonts, so no external stylesheets are loaded. The CSS is just 2Kb gzipped.
|
4
|
+
|
5
|
+
View the [demo here](http://theomjones.com/fundamental).
|
6
|
+
|
7
|
+
## Features
|
8
|
+
|
9
|
+
- Tag support
|
10
|
+
- Archive support
|
11
|
+
- Breadcrumbs
|
12
|
+
- Editable color palette via: (`_variables.scss`)
|
13
|
+
- Automatic header navigation
|
14
|
+
- Syntax highlighting
|
15
|
+
|
16
|
+
|
17
|
+

|
18
|
+
|
19
|
+
|
20
|
+
## Installation
|
21
|
+
|
22
|
+
Add this line to your Jekyll site's `Gemfile`:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
gem "fundamental"
|
26
|
+
```
|
27
|
+
|
28
|
+
And add this line to your Jekyll site's `_config.yml`:
|
29
|
+
|
30
|
+
```yaml
|
31
|
+
theme: fundamental
|
32
|
+
```
|
33
|
+
|
34
|
+
And then execute:
|
35
|
+
|
36
|
+
$ bundle
|
37
|
+
|
38
|
+
Or install it yourself as:
|
39
|
+
|
40
|
+
$ gem install fundamental
|
41
|
+
|
42
|
+
## Usage
|
43
|
+
|
44
|
+
### Getting Started
|
45
|
+
|
46
|
+
After installing you should have a `config.yml` file in your base directory. If not, [grab the default one from the repository](https://github.com/theomjones/fundamental/blob/master/_config.yml).
|
47
|
+
|
48
|
+
##### Plugins
|
49
|
+
Fundamemtal uses these plugins. When you have installed the Fundamental gem, run `bundle install` to install the required plugins. They can be turned on and off in your configuration file.
|
50
|
+
|
51
|
+
1. [jekyll-feed](https://github.com/jekyll/jekyll-feed)
|
52
|
+
2. [jekyll-archives](https://github.com/jekyll/jekyll-archives)
|
53
|
+
3. [jekyll-seo-tag](https://github.com/jekyll/jekyll-seo-tag)
|
54
|
+
|
55
|
+
#### Navigation
|
56
|
+
The top navigation loops through the sites pages that have `menu: true` in the front matter. This makes it easy to add new pages to your site. You can also order the pages by setting the value of `order`.
|
57
|
+
|
58
|
+
For instance: `order: 2` will place this item second (to the right of the first item).
|
59
|
+
|
60
|
+
#### Config
|
61
|
+
The usual configuration settings can be found at the top of `config.yml`.
|
62
|
+
|
63
|
+
You can turn the themes components off and on by setting these to `true` or `false`.
|
64
|
+
|
65
|
+
```yaml
|
66
|
+
enabled:
|
67
|
+
breadcrumbs: true
|
68
|
+
tags: true
|
69
|
+
# Enable RSS menu item
|
70
|
+
rss: false
|
71
|
+
seo: true
|
72
|
+
```
|
73
|
+
|
74
|
+
#### Layouts
|
75
|
+
For blog posts use the `post.html` layout (this is already set as default via config file.) For normal pages use the `page.html` layout. Naturally, the blog layout is used for the blog page on the home screen. All of these layouts inherit from the `default` layout.
|
76
|
+
|
77
|
+
The other layouts are for the `jekyll-archives` plugin.
|
78
|
+
|
79
|
+
###### File Structure
|
80
|
+
|
81
|
+
├── _layouts
|
82
|
+
│ ├── archive.html
|
83
|
+
│ ├── blog.html
|
84
|
+
│ ├── default.html
|
85
|
+
│ ├── month.html
|
86
|
+
│ ├── page.html
|
87
|
+
│ ├── post.html
|
88
|
+
│ └── tag_page.html
|
89
|
+
|
90
|
+
|
91
|
+
---
|
92
|
+
|
93
|
+
#### Includes
|
94
|
+
The includes are fairly self explanatory aside from info/item. `info.html` is the post information include in the `post` layout. Item is the blog item that gets outputted on the homepage. `tag-cloud.html` is the recurrrent tag list you see on the homepage/throughout the sites pages.
|
95
|
+
######File structure
|
96
|
+
|
97
|
+
|
98
|
+
├── _includes
|
99
|
+
│ ├── breadcrumbs.html
|
100
|
+
│ ├── footer.html
|
101
|
+
│ ├── head.html
|
102
|
+
│ ├── header.html
|
103
|
+
│ ├── info.html
|
104
|
+
│ ├── item.html
|
105
|
+
│ └── tag-cloud.html
|
106
|
+
|
107
|
+
|
108
|
+
---
|
109
|
+
|
110
|
+
|
111
|
+
#### Sass
|
112
|
+
Sass is split into logical sections. The `main.scss` file is in `/assets/`.
|
113
|
+
To overwrite these files, add one with the equivalent name to your `_sass` directory (make one if it doesn't already exist). Jekyll will look in here before defaulting back to the theme files.
|
114
|
+
|
115
|
+
##### Sass Folder Structure
|
116
|
+
|
117
|
+
├── _sass
|
118
|
+
│ ├── _blog.scss
|
119
|
+
│ ├── _footer.scss
|
120
|
+
│ ├── _fundamentals.scss
|
121
|
+
│ ├── _globals.scss
|
122
|
+
│ ├── _header.scss
|
123
|
+
│ ├── _post.scss
|
124
|
+
│ ├── _syntax.scss
|
125
|
+
│ ├── _tables.scss
|
126
|
+
│ ├── _typography.scss
|
127
|
+
│ └── _variables.scss
|
128
|
+
|
129
|
+
###### Variables
|
130
|
+
|
131
|
+
The first file to customise would be `_variables.scss`, you're probably best copying it from the repo and editing it. You can overwrite any of these variables with your own. There are four palette variables:
|
132
|
+
|
133
|
+
- `$base: #f5f2f2;` - the body background colour.
|
134
|
+
- `$textColor: #444;`
|
135
|
+
- `$accent: #4845DF;` - the purple colour
|
136
|
+
- `$tertiary: lighten($accent, 5%);` - lighter version of accent
|
137
|
+
|
138
|
+
There is one breakpoint: `$break: 600px;`
|
139
|
+
|
140
|
+
`$font` uses a system font stack. Change this to whatever you wish.
|
141
|
+
`$font: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;`
|
142
|
+
|
143
|
+
|
144
|
+
|
145
|
+
## Contributing
|
146
|
+
|
147
|
+
Bug reports and pull requests are welcome on [GitHub](https://github.com/theomjones/fundamental). This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the [Contributor Covenant](http://contributor-covenant.org) code of conduct.
|
148
|
+
|
149
|
+
## License
|
150
|
+
|
151
|
+
The theme is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
152
|
+
|
153
|
+
## More Screenshots
|
154
|
+
### Blog Post
|
155
|
+

|
156
|
+
|
157
|
+
### 404 Page
|
158
|
+

|
@@ -0,0 +1,22 @@
|
|
1
|
+
|
2
|
+
{% if site.enabled.breadcrumbs %}
|
3
|
+
{% capture url_parts %} {{ page.url | remove: "/index.html" | replace:'/'," " }}{% endcapture %}
|
4
|
+
{% capture num_parts %}{{ url_parts | number_of_words | minus: 1 }}{% endcapture %}
|
5
|
+
{% assign previous="" %}
|
6
|
+
<ol class="crumbs">
|
7
|
+
{% if num_parts == "0" or num_parts == "-1" %}
|
8
|
+
<li><a href="{{ '/' | relative_url }}">Home</a> </li>
|
9
|
+
{% else %}
|
10
|
+
<li><a href="{{ '/' | relative_url }}">Home</a> / </li>
|
11
|
+
|
12
|
+
{% for unused in page.content limit:num_parts %}
|
13
|
+
{% capture first_word %}{{ url_parts | truncatewords:1 | remove:"..."}}{% endcapture %}
|
14
|
+
{% capture previous %}{{ previous }}/{{ first_word }}{% endcapture %}
|
15
|
+
|
16
|
+
<li><a href="{{previous | relative_url }}">{{ first_word }}</a> </li>
|
17
|
+
{% capture url_parts %}{{ url_parts | remove_first:first_word }}{% endcapture %}
|
18
|
+
{% endfor %}
|
19
|
+
{% endif %}
|
20
|
+
<li>/ {{page.title}}</li>
|
21
|
+
</ol>
|
22
|
+
{% endif %}
|
data/_includes/head.html
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
<head>
|
2
|
+
<meta charset="UTF-8">
|
3
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
4
|
+
<meta http-equiv="X-UA-Compatible" content="ie=edge">
|
5
|
+
<link rel="stylesheet" href="{{ "assets/main.css" | relative_url }}">
|
6
|
+
{% if site.favicon == true %}
|
7
|
+
<link rel="shortcut icon" href="{{site.baseurl}}/favicon.ico" type="image/x-icon">
|
8
|
+
<link rel="icon" href="{{site.baseurl}}/favicon.ico" type="image/x-icon">
|
9
|
+
{% endif %}
|
10
|
+
{% seo %}
|
11
|
+
</head>
|
@@ -0,0 +1,17 @@
|
|
1
|
+
<header>
|
2
|
+
<!-- <img class="logo" src="{% link assets/images/logo.svg %}" alt="Logo"> -->
|
3
|
+
<div class="title"><a href="{{ '/' | relative_url }}">{{ site.title }}</a></div>
|
4
|
+
<nav>
|
5
|
+
<ul>
|
6
|
+
{% assign menu_items = site.pages | sort: 'order' %}
|
7
|
+
{% for p in menu_items %}
|
8
|
+
{% if p.menu == true %}
|
9
|
+
<li><a href="{{ p.url | relative_url }}"{% if p.url == page.url %}class="active"{% endif %}>{{ p.title }}</a></li>
|
10
|
+
{% endif %}
|
11
|
+
{% endfor %}
|
12
|
+
{% if site.enabled.rss == true %}
|
13
|
+
<li><a href="{{ "/feed.xml" | relative_url }}">RSS</a></li>
|
14
|
+
{% endif %}
|
15
|
+
</ul>
|
16
|
+
</nav>
|
17
|
+
</header>
|
data/_includes/info.html
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
<div class="info">
|
2
|
+
<span>{{ page.date | date_to_string }}</span>
|
3
|
+
{% if site.enabled.tags == true %}
|
4
|
+
▫
|
5
|
+
{% if page.tags %}
|
6
|
+
<span class="tags">
|
7
|
+
{% for t in page.tags %}
|
8
|
+
<a href="{{site.baseurl}}/tag/{{t | downcase }}">{{t}}</a>{% if forloop.last == false %},{% endif %}
|
9
|
+
{% endfor %}
|
10
|
+
</span>
|
11
|
+
{% endif %}
|
12
|
+
{% endif %}
|
13
|
+
</div>
|
data/_includes/item.html
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
<li class="item">
|
2
|
+
<div class="item-head">
|
3
|
+
<h2><a href="{{ p.url | relative_url }}">{{ p.title }}</a></h2>
|
4
|
+
<span>{{ p.date | date_to_string }}</span>
|
5
|
+
{% if site.enabled.tags == true %}
|
6
|
+
▫
|
7
|
+
{% if p.tags %}
|
8
|
+
<span class="tags">
|
9
|
+
{% for t in p.tags %}
|
10
|
+
<a href="{{site.baseurl}}/tag/{{t | downcase }}">{{t}}</a>{% if forloop.last == false %},{% endif %}
|
11
|
+
{% endfor %}
|
12
|
+
</span>
|
13
|
+
{% endif %}
|
14
|
+
{% endif %}
|
15
|
+
<!-- <span><a href="https://twitter.com/{{site.author.twitter}}">@{{ site.author.twitter }}</a></span> -->
|
16
|
+
</div>
|
17
|
+
<p>{{ p.excerpt | truncatewords: 20 }}</p>
|
18
|
+
</li>
|
@@ -0,0 +1,9 @@
|
|
1
|
+
{% if site.enabled.tags == true %}
|
2
|
+
<div class="tag-cloud">
|
3
|
+
<h3>Tags</h3>
|
4
|
+
{% for tag in site.tags %}
|
5
|
+
{% comment %} Do not remove the [0]. This breaks Jekyll :( {% endcomment %}
|
6
|
+
<a href="{{site.baseurl}}/tag/{{tag[0] | downcase }}">{{tag[0]}}</a>
|
7
|
+
{% endfor %}
|
8
|
+
</div>
|
9
|
+
{% endif %}
|
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
{% include breadcrumbs.html %}
|
5
|
+
<h1>Archive of posts from {{ page.date | date: "%Y" }}</h1>
|
6
|
+
|
7
|
+
<ul class="posts">
|
8
|
+
{% for post in page.posts %}
|
9
|
+
<li>
|
10
|
+
<span class="post-date">{{ post.date | date: "%b %-d, %Y" }}</span>
|
11
|
+
<a class="post-link" href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
12
|
+
</li>
|
13
|
+
{% endfor %}
|
14
|
+
</ul>
|
data/_layouts/blog.html
ADDED
data/_layouts/month.html
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
{% include breadcrumbs.html %}
|
5
|
+
<h1>{{ page.date | date: "%B" }}'s Archive</h1>
|
6
|
+
|
7
|
+
<ul class="posts">
|
8
|
+
{% for post in page.posts %}
|
9
|
+
<li>
|
10
|
+
<span class="post-date">{{ post.date | date: "%b %-d, %Y" }}</span>
|
11
|
+
<a class="post-link" href="{{ post.url | relative_url }}">{{ post.title }}</a>
|
12
|
+
</li>
|
13
|
+
{% endfor %}
|
14
|
+
</ul>
|
data/_layouts/page.html
ADDED
data/_layouts/post.html
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
{% include breadcrumbs.html %}
|
6
|
+
<h1>{{ page.title }}</h1>
|
7
|
+
{% include info.html %}
|
8
|
+
{{ content }}
|
9
|
+
|
10
|
+
<div class="post-navigation">
|
11
|
+
{% if page.previous.url %}
|
12
|
+
<a class="prev" href="{{ page.previous.url | relative_url }}">« {{page.previous.title}}</a>
|
13
|
+
{% endif %}
|
14
|
+
{% if page.next.url %}
|
15
|
+
<a class="next" href="{{page.next.url | relative_url }}">{{page.next.title}} »</a>
|
16
|
+
{% endif %}
|
17
|
+
</div>
|
@@ -0,0 +1,14 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
type: 'tag_page'
|
4
|
+
---
|
5
|
+
|
6
|
+
<h1>#{{ page.title }}</h1>
|
7
|
+
<ul class="posts">
|
8
|
+
{% for post in page.posts %}
|
9
|
+
<li>
|
10
|
+
<a class="post-link" href="{{ post.url | prepend: site.baseurl }}">{{ post.title }}</a> -
|
11
|
+
<span class="post-date">{{ post.date | date: "%b %-d, %Y" }}</span>
|
12
|
+
</li>
|
13
|
+
{% endfor %}
|
14
|
+
</ul>
|
data/_sass/_blog.scss
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
.post-loop {
|
2
|
+
padding-left: 0;
|
3
|
+
li {
|
4
|
+
list-style: none;
|
5
|
+
}
|
6
|
+
h2 {
|
7
|
+
a {
|
8
|
+
text-decoration: none;
|
9
|
+
}
|
10
|
+
}
|
11
|
+
}
|
12
|
+
|
13
|
+
.item-head {
|
14
|
+
margin-bottom: 15px;
|
15
|
+
}
|
16
|
+
|
17
|
+
.item {
|
18
|
+
margin: 50px 0;
|
19
|
+
padding-bottom: 20px;
|
20
|
+
border-bottom: dotted 1px rgba($textColor, .2);
|
21
|
+
@media screen and (max-width: $break) {
|
22
|
+
margin: 15px 0;
|
23
|
+
padding-bottom: 0;
|
24
|
+
}
|
25
|
+
}
|
data/_sass/_footer.scss
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
html {
|
2
|
+
-ms-text-size-adjust: 100%;
|
3
|
+
-webkit-text-size-adjust: 100%;
|
4
|
+
}
|
5
|
+
body {
|
6
|
+
-moz-osx-font-smoothing: grayscale;
|
7
|
+
-webkit-font-smoothing: antialiased;
|
8
|
+
margin: 20px 0;
|
9
|
+
}
|
10
|
+
h1,
|
11
|
+
h2,
|
12
|
+
h3,
|
13
|
+
h4,
|
14
|
+
p,
|
15
|
+
blockquote,
|
16
|
+
figure,
|
17
|
+
ol,
|
18
|
+
ul {
|
19
|
+
margin: 0;
|
20
|
+
padding: 0;
|
21
|
+
}
|
22
|
+
main,
|
23
|
+
li {
|
24
|
+
display: block;
|
25
|
+
}
|
26
|
+
|
27
|
+
strong {
|
28
|
+
font-weight: bold;
|
29
|
+
}
|
30
|
+
a,
|
31
|
+
button {
|
32
|
+
color: inherit;
|
33
|
+
transition: .2s;
|
34
|
+
}
|
35
|
+
|
36
|
+
button {
|
37
|
+
overflow: visible;
|
38
|
+
border: 0;
|
39
|
+
font: inherit;
|
40
|
+
-webkit-font-smoothing: inherit;
|
41
|
+
letter-spacing: inherit;
|
42
|
+
background: none;
|
43
|
+
cursor: pointer;
|
44
|
+
}
|
45
|
+
::-moz-focus-inner {
|
46
|
+
padding: 0;
|
47
|
+
border: 0;
|
48
|
+
}
|
49
|
+
:focus {
|
50
|
+
outline: 0;
|
51
|
+
}
|
52
|
+
img {
|
53
|
+
max-width: 100%;
|
54
|
+
height: auto;
|
55
|
+
border: 0;
|
56
|
+
}
|
data/_sass/_globals.scss
ADDED
@@ -0,0 +1,82 @@
|
|
1
|
+
body {
|
2
|
+
font-family: $font;
|
3
|
+
font-size: 1.2rem;
|
4
|
+
color: $textColor;
|
5
|
+
background: $base;
|
6
|
+
@media screen and (max-width: $break) {
|
7
|
+
font-size: 1.2rem;
|
8
|
+
}
|
9
|
+
// sticky footer
|
10
|
+
display: flex;
|
11
|
+
flex-direction: column;
|
12
|
+
min-height: 100vh;
|
13
|
+
overflow-x: hidden;
|
14
|
+
}
|
15
|
+
|
16
|
+
main {
|
17
|
+
flex: 1;
|
18
|
+
}
|
19
|
+
|
20
|
+
.flex {
|
21
|
+
display: flex;
|
22
|
+
justify-content: space-between;
|
23
|
+
@media screen and (max-width: $break) {
|
24
|
+
flex-wrap: wrap-reverse;
|
25
|
+
}
|
26
|
+
}
|
27
|
+
|
28
|
+
//Structure
|
29
|
+
.container {
|
30
|
+
max-width: 800px;
|
31
|
+
margin: 0 auto;
|
32
|
+
padding: 5rem 20px;
|
33
|
+
@media screen and (max-width: $break) {
|
34
|
+
padding: 1.5rem 20px;
|
35
|
+
}
|
36
|
+
}
|
37
|
+
|
38
|
+
hr {
|
39
|
+
border: none;
|
40
|
+
background: rgba($textColor, .2);
|
41
|
+
height: 3px;
|
42
|
+
margin: 30px 0;
|
43
|
+
}
|
44
|
+
|
45
|
+
img {
|
46
|
+
border-radius: 5px;
|
47
|
+
}
|
48
|
+
|
49
|
+
// Crumbs
|
50
|
+
|
51
|
+
.crumbs {
|
52
|
+
padding: 0;
|
53
|
+
margin-top: 2rem;
|
54
|
+
@media screen and (max-width: $break) {
|
55
|
+
font-size: .9rem;
|
56
|
+
}
|
57
|
+
li {
|
58
|
+
display: inline-block;
|
59
|
+
list-style: none;
|
60
|
+
}
|
61
|
+
}
|
62
|
+
|
63
|
+
.tag-cloud {
|
64
|
+
margin-right: 50px;
|
65
|
+
margin-top: 10px;
|
66
|
+
a {
|
67
|
+
display: block;
|
68
|
+
margin-top: 4px;
|
69
|
+
}
|
70
|
+
h3 {
|
71
|
+
font-size: 1.5rem;
|
72
|
+
}
|
73
|
+
}
|
74
|
+
|
75
|
+
._404 {
|
76
|
+
display: flex;
|
77
|
+
justify-content: flex-start;
|
78
|
+
}
|
79
|
+
|
80
|
+
.post-list {
|
81
|
+
@extend .tag-cloud;
|
82
|
+
}
|
data/_sass/_header.scss
ADDED
@@ -0,0 +1,50 @@
|
|
1
|
+
header {
|
2
|
+
width: 100%;
|
3
|
+
max-width: 1200px;
|
4
|
+
margin: 0 auto;
|
5
|
+
display: flex;
|
6
|
+
justify-content: flex-end;
|
7
|
+
align-content: center;
|
8
|
+
flex-wrap: wrap;
|
9
|
+
@media screen and (max-width: $break) {
|
10
|
+
justify-content: flex-start;
|
11
|
+
ul {
|
12
|
+
margin: 0 0 0 10px;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
ul {
|
16
|
+
list-style: none;
|
17
|
+
padding-left: 0;
|
18
|
+
margin-right: 50px;
|
19
|
+
@media screen and (max-width: 400px) {
|
20
|
+
margin-left: 10px;
|
21
|
+
margin-top: 5px;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
li {
|
25
|
+
display: inline-block;
|
26
|
+
margin: 0 10px;
|
27
|
+
}
|
28
|
+
}
|
29
|
+
|
30
|
+
.title {
|
31
|
+
margin: auto;
|
32
|
+
margin-left: 50px;
|
33
|
+
@media screen and (max-width: 400px) {
|
34
|
+
margin-left: 20px;
|
35
|
+
}
|
36
|
+
a {
|
37
|
+
text-decoration: none;
|
38
|
+
color: $textColor;
|
39
|
+
}
|
40
|
+
}
|
41
|
+
|
42
|
+
.active {
|
43
|
+
position: relative;
|
44
|
+
&:before {
|
45
|
+
content: '‥';
|
46
|
+
position: absolute;
|
47
|
+
bottom: -15px;
|
48
|
+
left: 45%;
|
49
|
+
}
|
50
|
+
}
|
data/_sass/_post.scss
ADDED
@@ -0,0 +1,17 @@
|
|
1
|
+
.post-navigation {
|
2
|
+
margin: 60px auto auto auto;
|
3
|
+
display: flex;
|
4
|
+
width: 100%;
|
5
|
+
flex-wrap: wrap;
|
6
|
+
justify-content: space-between;
|
7
|
+
a {
|
8
|
+
margin: 10px 0;
|
9
|
+
font-weight: 800;
|
10
|
+
font-size: 1rem;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
|
14
|
+
.info {
|
15
|
+
margin-bottom: 60px;
|
16
|
+
margin-top: -45px;
|
17
|
+
}
|
data/_sass/_syntax.scss
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
.highlight .c { color: #999988; font-style: italic } /* Comment */
|
2
|
+
.highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */
|
3
|
+
.highlight .k { font-weight: bold } /* Keyword */
|
4
|
+
.highlight .o { font-weight: bold } /* Operator */
|
5
|
+
.highlight .cm { color: #999988; font-style: italic } /* Comment.Multiline */
|
6
|
+
.highlight .cp { color: #999999; font-weight: bold } /* Comment.Preproc */
|
7
|
+
.highlight .c1 { color: #999988; font-style: italic } /* Comment.Single */
|
8
|
+
.highlight .cs { color: #999999; font-weight: bold; font-style: italic } /* Comment.Special */
|
9
|
+
.highlight .gd { color: #000000; background-color: #ffdddd } /* Generic.Deleted */
|
10
|
+
.highlight .gd .x { color: #000000; background-color: #ffaaaa } /* Generic.Deleted.Specific */
|
11
|
+
.highlight .ge { font-style: italic } /* Generic.Emph */
|
12
|
+
.highlight .gr { color: #aa0000 } /* Generic.Error */
|
13
|
+
.highlight .gh { color: #999999 } /* Generic.Heading */
|
14
|
+
.highlight .gi { color: #000000; background-color: #ddffdd } /* Generic.Inserted */
|
15
|
+
.highlight .gi .x { color: #000000; background-color: #aaffaa } /* Generic.Inserted.Specific */
|
16
|
+
.highlight .go { color: #888888 } /* Generic.Output */
|
17
|
+
.highlight .gp { color: #555555 } /* Generic.Prompt */
|
18
|
+
.highlight .gs { font-weight: bold } /* Generic.Strong */
|
19
|
+
.highlight .gu { color: #aaaaaa } /* Generic.Subheading */
|
20
|
+
.highlight .gt { color: #aa0000 } /* Generic.Traceback */
|
21
|
+
.highlight .kc { font-weight: bold } /* Keyword.Constant */
|
22
|
+
.highlight .kd { font-weight: bold } /* Keyword.Declaration */
|
23
|
+
.highlight .kp { font-weight: bold } /* Keyword.Pseudo */
|
24
|
+
.highlight .kr { font-weight: bold } /* Keyword.Reserved */
|
25
|
+
.highlight .kt { color: #445588; font-weight: bold } /* Keyword.Type */
|
26
|
+
.highlight .m { color: #009999 } /* Literal.Number */
|
27
|
+
.highlight .s { color: #d14 } /* Literal.String */
|
28
|
+
.highlight .na { color: #008080 } /* Name.Attribute */
|
29
|
+
.highlight .nb { color: #0086B3 } /* Name.Builtin */
|
30
|
+
.highlight .nc { color: #445588; font-weight: bold } /* Name.Class */
|
31
|
+
.highlight .no { color: #008080 } /* Name.Constant */
|
32
|
+
.highlight .ni { color: #800080 } /* Name.Entity */
|
33
|
+
.highlight .ne { color: #990000; font-weight: bold } /* Name.Exception */
|
34
|
+
.highlight .nf { color: #990000; font-weight: bold } /* Name.Function */
|
35
|
+
.highlight .nn { color: #555555 } /* Name.Namespace */
|
36
|
+
.highlight .nt { color: #000080 } /* Name.Tag */
|
37
|
+
.highlight .nv { color: #008080 } /* Name.Variable */
|
38
|
+
.highlight .ow { font-weight: bold } /* Operator.Word */
|
39
|
+
.highlight .w { color: #bbbbbb } /* Text.Whitespace */
|
40
|
+
.highlight .mf { color: #009999 } /* Literal.Number.Float */
|
41
|
+
.highlight .mh { color: #009999 } /* Literal.Number.Hex */
|
42
|
+
.highlight .mi { color: #009999 } /* Literal.Number.Integer */
|
43
|
+
.highlight .mo { color: #009999 } /* Literal.Number.Oct */
|
44
|
+
.highlight .sb { color: #d14 } /* Literal.String.Backtick */
|
45
|
+
.highlight .sc { color: #d14 } /* Literal.String.Char */
|
46
|
+
.highlight .sd { color: #d14 } /* Literal.String.Doc */
|
47
|
+
.highlight .s2 { color: #d14 } /* Literal.String.Double */
|
48
|
+
.highlight .se { color: #d14 } /* Literal.String.Escape */
|
49
|
+
.highlight .sh { color: #d14 } /* Literal.String.Heredoc */
|
50
|
+
.highlight .si { color: #d14 } /* Literal.String.Interpol */
|
51
|
+
.highlight .sx { color: #d14 } /* Literal.String.Other */
|
52
|
+
.highlight .sr { color: #009926 } /* Literal.String.Regex */
|
53
|
+
.highlight .s1 { color: #d14 } /* Literal.String.Single */
|
54
|
+
.highlight .ss { color: #990073 } /* Literal.String.Symbol */
|
55
|
+
.highlight .bp { color: #999999 } /* Name.Builtin.Pseudo */
|
56
|
+
.highlight .vc { color: #008080 } /* Name.Variable.Class */
|
57
|
+
.highlight .vg { color: #008080 } /* Name.Variable.Global */
|
58
|
+
.highlight .vi { color: #008080 } /* Name.Variable.Instance */
|
59
|
+
.highlight .il { color: #009999 } /* Literal.Number.Integer.Long */
|
60
|
+
|
61
|
+
/* Make line numbers unselectable: excludes line numbers from copy-paste user ops */
|
62
|
+
.highlight .lineno {-webkit-user-select: none;-moz-user-select: none; -o-user-select: none;}
|
63
|
+
.lineno::-moz-selection {background-color: transparent;} /* Mozilla specific */
|
64
|
+
.lineno::selection {background-color: transparent;} /* Other major browsers */
|
data/_sass/_tables.scss
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
table:not(figure) {
|
2
|
+
border-collapse: collapse;
|
3
|
+
margin: 20px 0;
|
4
|
+
border-bottom: 1px solid rgba($textColor, .3);
|
5
|
+
th {
|
6
|
+
text-align: left;
|
7
|
+
padding: 10px 15px;
|
8
|
+
border-bottom: solid 2px rgba($textColor, .3);
|
9
|
+
}
|
10
|
+
tr {
|
11
|
+
border-bottom: 1px solid rgba($textColor, .1);
|
12
|
+
td:first-child {
|
13
|
+
border-left: 1px solid rgba($textColor, .3);
|
14
|
+
}
|
15
|
+
}
|
16
|
+
td {
|
17
|
+
padding: 10px 15px;
|
18
|
+
border-right: 1px solid rgba($textColor, .3);
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
.highlight {
|
23
|
+
table, tr, td, thead, th {
|
24
|
+
border: none;
|
25
|
+
}
|
26
|
+
}
|
@@ -0,0 +1,98 @@
|
|
1
|
+
h1, h2, h3, h4, h5, h6 {
|
2
|
+
margin-top: 50px;
|
3
|
+
margin-bottom: 20px;
|
4
|
+
}
|
5
|
+
|
6
|
+
h1 {
|
7
|
+
font-size: 4rem;
|
8
|
+
margin: 30px 0 50px 0;
|
9
|
+
color: $accent;
|
10
|
+
@media screen and (max-width: $break) {
|
11
|
+
font-size: 3rem;
|
12
|
+
margin-top: 5px;
|
13
|
+
}
|
14
|
+
}
|
15
|
+
h2 {
|
16
|
+
font-size: 3rem;
|
17
|
+
margin: 10px 0;
|
18
|
+
@media screen and (max-width: $break) {
|
19
|
+
font-size: 2.5rem;
|
20
|
+
}
|
21
|
+
}
|
22
|
+
h3 {
|
23
|
+
font-size: 2.5rem;
|
24
|
+
}
|
25
|
+
h4 {
|
26
|
+
font-size: 2rem;
|
27
|
+
}
|
28
|
+
|
29
|
+
h5 {
|
30
|
+
font-size: 1.5rem;
|
31
|
+
}
|
32
|
+
|
33
|
+
h6 {
|
34
|
+
font-size: 1rem;
|
35
|
+
}
|
36
|
+
|
37
|
+
p {
|
38
|
+
line-height: 1.9;
|
39
|
+
margin: 25px 0;
|
40
|
+
@media screen and (max-width: $break) {
|
41
|
+
margin: 15px 0;
|
42
|
+
}
|
43
|
+
}
|
44
|
+
|
45
|
+
a {
|
46
|
+
color: $accent;
|
47
|
+
&:hover {
|
48
|
+
opacity: .7;
|
49
|
+
}
|
50
|
+
}
|
51
|
+
|
52
|
+
blockquote {
|
53
|
+
font-size: 2rem;
|
54
|
+
opacity: .8;
|
55
|
+
padding: 5px 30px;
|
56
|
+
border-left: 4px solid rgba($tertiary, .6);
|
57
|
+
margin: 3rem 0;
|
58
|
+
background: rgba($tertiary, .1);
|
59
|
+
p {
|
60
|
+
line-height: 1.5;
|
61
|
+
}
|
62
|
+
}
|
63
|
+
|
64
|
+
figure {
|
65
|
+
overflow-x: scroll;
|
66
|
+
background: lighten($accent, 35%);
|
67
|
+
padding: 10px 10px 0 10px;
|
68
|
+
border-radius: 3px;
|
69
|
+
}
|
70
|
+
|
71
|
+
|
72
|
+
ol, ul {
|
73
|
+
padding-left: 25px;
|
74
|
+
li {
|
75
|
+
list-style-position: outside;
|
76
|
+
margin: 8px 0;
|
77
|
+
display: list-item;
|
78
|
+
}
|
79
|
+
}
|
80
|
+
|
81
|
+
ol {
|
82
|
+
li {
|
83
|
+
list-style: decimal;
|
84
|
+
list-style-position: outside;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
|
88
|
+
ul {
|
89
|
+
li {
|
90
|
+
list-style: disc;
|
91
|
+
list-style-position: outside;
|
92
|
+
}
|
93
|
+
}
|
94
|
+
|
95
|
+
code {
|
96
|
+
background: lighten($accent, 30%);
|
97
|
+
padding: 0;
|
98
|
+
}
|
@@ -0,0 +1,12 @@
|
|
1
|
+
$font: -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Oxygen-Sans,Ubuntu,Cantarell,"Helvetica Neue",sans-serif;
|
2
|
+
|
3
|
+
|
4
|
+
//Palette
|
5
|
+
|
6
|
+
$base: #f5f2f2;
|
7
|
+
$textColor: #444;
|
8
|
+
$accent: #4845DF;
|
9
|
+
$tertiary: lighten($accent, 5%);
|
10
|
+
|
11
|
+
//Structure
|
12
|
+
$break: 600px;
|
@@ -0,0 +1 @@
|
|
1
|
+
<svg width="690" height="62" viewBox="0 0 690 62" xmlns="http://www.w3.org/2000/svg"><path d="M16.215 60V37.67h23.2V26.01h-23.2V12.395H41.74V.11H.983V60h15.232zM70.57.11H55.338v38.64c0 13.447 10.21 22.288 25.816 22.288 15.564 0 25.773-8.84 25.773-22.288V.11h-15.23v37.02c0 6.974-3.778 11.124-10.543 11.124-6.807 0-10.584-4.15-10.584-11.123V.11zM137.293 60V24.846h.332L163.15 60h12.036V.11h-14.443v34.822h-.332L135.01.11h-12.16V60h14.443zM191.11.11h24.32c18.096 0 28.72 10.5 28.72 29.592C244.15 48.835 233.486 60 215.43 60h-24.32V.11zm15.23 12.285v35.32h7.098c9.92 0 15.232-6.018 15.232-17.97 0-11.25-5.603-17.35-15.232-17.35h-7.097zM294.855 60l-3.777-13.157h-19.59L267.67 60h-15.524L272.276.11h18.635L311.04 60h-16.186zm-13.738-47.19l-6.682 23.076h13.655l-6.642-23.076h-.332zM389.386 60V.11h-17.6L356.68 38.584h-.332L341.24.11h-17.597V60h13.405V22.605h.333l14.776 36.772h8.716l14.817-36.772h.29V60h13.405zm56.97-12.285h-25.817V35.513h24.28V24.307h-24.28V12.395h25.815V.11h-41.048V60h41.048V47.715zM476.263 60V24.846h.332L502.12 60h12.037V.11h-14.443v34.822h-.332L473.982.11h-12.16V60h14.442zm82.91 0V12.395h16.52V.11h-48.23v12.285h16.52V60h15.19zm61.245 0l-3.778-13.157h-19.59L593.234 60H577.71L597.84.11h18.636L636.606 60h-16.187zm-13.74-47.19L600 35.886h13.654l-6.64-23.076h-.333zm82.538 34.905H664.44V.11h-15.232V60h40.01V47.715z" fill="#6e6cdd" fill-rule="evenodd"/></svg>
|
data/assets/main.scss
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
---
|
2
|
+
---
|
3
|
+
|
4
|
+
@import 'fundamentals';
|
5
|
+
|
6
|
+
@import 'variables';
|
7
|
+
|
8
|
+
@import 'syntax';
|
9
|
+
@import 'globals';
|
10
|
+
@import 'typography';
|
11
|
+
|
12
|
+
//Components
|
13
|
+
@import 'header';
|
14
|
+
@import 'footer';
|
15
|
+
@import 'tables';
|
16
|
+
|
17
|
+
//Pages
|
18
|
+
@import "blog";
|
19
|
+
@import 'post';
|
metadata
ADDED
@@ -0,0 +1,142 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: fundamental
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Theo M Jones
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2017-07-16 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: jekyll
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '3.5'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.5'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: jekyll-archives
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 2.1.1
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 2.1.1
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: jekyll-seo-tag
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - ">="
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: bundler
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '1.12'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '1.12'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '10.0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '10.0'
|
83
|
+
description:
|
84
|
+
email:
|
85
|
+
- theomjones@gmail.com
|
86
|
+
executables: []
|
87
|
+
extensions: []
|
88
|
+
extra_rdoc_files: []
|
89
|
+
files:
|
90
|
+
- LICENSE.txt
|
91
|
+
- README.md
|
92
|
+
- _includes/breadcrumbs.html
|
93
|
+
- _includes/footer.html
|
94
|
+
- _includes/head.html
|
95
|
+
- _includes/header.html
|
96
|
+
- _includes/info.html
|
97
|
+
- _includes/item.html
|
98
|
+
- _includes/tag-cloud.html
|
99
|
+
- _layouts/archive.html
|
100
|
+
- _layouts/blog.html
|
101
|
+
- _layouts/default.html
|
102
|
+
- _layouts/month.html
|
103
|
+
- _layouts/page.html
|
104
|
+
- _layouts/post.html
|
105
|
+
- _layouts/tag_page.html
|
106
|
+
- _sass/_blog.scss
|
107
|
+
- _sass/_footer.scss
|
108
|
+
- _sass/_fundamentals.scss
|
109
|
+
- _sass/_globals.scss
|
110
|
+
- _sass/_header.scss
|
111
|
+
- _sass/_post.scss
|
112
|
+
- _sass/_syntax.scss
|
113
|
+
- _sass/_tables.scss
|
114
|
+
- _sass/_typography.scss
|
115
|
+
- _sass/_variables.scss
|
116
|
+
- assets/images/logo.svg
|
117
|
+
- assets/main.scss
|
118
|
+
homepage: https://theomjones.com/fundamental
|
119
|
+
licenses:
|
120
|
+
- MIT
|
121
|
+
metadata: {}
|
122
|
+
post_install_message:
|
123
|
+
rdoc_options: []
|
124
|
+
require_paths:
|
125
|
+
- lib
|
126
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
127
|
+
requirements:
|
128
|
+
- - ">="
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
requirements:
|
133
|
+
- - ">="
|
134
|
+
- !ruby/object:Gem::Version
|
135
|
+
version: '0'
|
136
|
+
requirements: []
|
137
|
+
rubyforge_project:
|
138
|
+
rubygems_version: 2.6.11
|
139
|
+
signing_key:
|
140
|
+
specification_version: 4
|
141
|
+
summary: A totally minimal Jekyll theme. Just the fundamentals.
|
142
|
+
test_files: []
|