New ghost casper style theme.
Still todo: fix baseurl, update theme consistency, fix pagesmaster
|
@ -5,6 +5,8 @@ rvm:
|
|||
|
||||
install:
|
||||
- gem install jekyll
|
||||
- gem install jekyll-sitemap
|
||||
- gem install jekyll-paginate
|
||||
|
||||
script:
|
||||
- jekyll build
|
||||
|
|
|
@ -0,0 +1,53 @@
|
|||
---
|
||||
layout: error
|
||||
current: error
|
||||
title: "404 - Page Not Found"
|
||||
permalink: 404.html
|
||||
---
|
||||
<!--
|
||||
This error template is used for all 404 errors, which might occur on your site.
|
||||
It's a good idea to keep this template as minimal as possible in terms of both file size and complexity.
|
||||
-->
|
||||
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
<title>{{ page.title }}</title>
|
||||
<meta name="HandheldFriendly" content="True" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}assets/css/screen.css" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}assets/css/screen.edited.css" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}assets/css/custom.css" />
|
||||
<!-- This tag outputs SEO meta+structured data and other important settings -->
|
||||
{% include head.html %}
|
||||
</head>
|
||||
<body class="error-template">
|
||||
<div class="site-wrapper">
|
||||
|
||||
<header class="site-header outer {% if page.cover %}" style="background-image: url({{ site.baseurl }}{{ page.cover }})){% else %}no-cover{% endif %}">
|
||||
<div class="inner">
|
||||
<nav class="site-nav-center">
|
||||
{% if site.logo %}
|
||||
<a class="site-nav-logo" href="{{ site.baseurl }}"><img src="{{site.baseurl}}{{ site.logo }}" alt="{{ site.title }}" /></a>
|
||||
{% else %}
|
||||
<a class="site-nav-logo" href="{{ site.baseurl }}">{{ site.title }}</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main id="site-main" class="site-main outer" role="main">
|
||||
<div class="inner">
|
||||
|
||||
<section class="error-message">
|
||||
<h1 class="error-code">404</h1>
|
||||
<p class="error-description">Page not found</p>
|
||||
<a class="error-link" href="{{ site.baseurl }}">Go to the front page →</a>
|
||||
</section>
|
||||
</div>
|
||||
</main>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
42
_config.yml
|
@ -2,7 +2,7 @@
|
|||
url: https://davison.io
|
||||
|
||||
# This is only needed if you are serving this site in a subdirectory.
|
||||
baseurl: ""
|
||||
baseurl: "/"
|
||||
|
||||
# These files will be excluded from the generated site.
|
||||
# Files or directories starting with a _ or . are automatically excluded.
|
||||
|
@ -10,20 +10,44 @@ exclude:
|
|||
- readme.md
|
||||
- contributing.md
|
||||
|
||||
include:
|
||||
- _pages
|
||||
- .well-known
|
||||
#include:
|
||||
# - _pages
|
||||
# - .well-known
|
||||
|
||||
# It's good practice to set a permalink manually for each post but if not, here:
|
||||
permalink: /:title/
|
||||
|
||||
timezone: Europe/London
|
||||
|
||||
#
|
||||
# Site-defined variables
|
||||
#
|
||||
|
||||
google_analytics_tracking_id: "UA-87918631-1"
|
||||
google_analytics: "UA-87918631-1"
|
||||
|
||||
plugins:
|
||||
- jekyll-sitemap
|
||||
- jekyll-paginate
|
||||
|
||||
# Paginate after x posts
|
||||
paginate: 100
|
||||
|
||||
# Reading speed
|
||||
words_per_minute: 200
|
||||
|
||||
# Website info
|
||||
title: Craig Davison
|
||||
description: Entrepreneur and Digital Strategist
|
||||
cover:
|
||||
logo:
|
||||
logo_dark:
|
||||
favicon: assets/images/favicon.png
|
||||
|
||||
# Gems and other configs
|
||||
plugins_dir: [_plugins]
|
||||
|
||||
# Authors and tags info in _data
|
||||
|
||||
# Disqus
|
||||
disqus: False
|
||||
disqus_shortname:
|
||||
|
||||
# Social info
|
||||
navigation: True
|
||||
subscribers: False
|
||||
|
|
|
@ -0,0 +1,10 @@
|
|||
craig:
|
||||
username: craig
|
||||
name: Craig Davison
|
||||
url_full: https://davison.io
|
||||
url: davison.io
|
||||
bio: Entrepreneur and Digital Strategist
|
||||
picture: assets/img/craig-macbook.jpg
|
||||
facebook:
|
||||
twitter:
|
||||
cover: False
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1,9 @@
|
|||
<!-- Global site tag (gtag.js) - Google Analytics -->
|
||||
<script async src="https://www.googletagmanager.com/gtag/js?id={{ site.google_analytics }}"></script>
|
||||
<script>
|
||||
window.dataLayer = window.dataLayer || [];
|
||||
function gtag(){dataLayer.push(arguments);}
|
||||
gtag('js', new Date());
|
||||
|
||||
gtag('config', '{{ site.google_analytics }}');
|
||||
</script>
|
|
@ -0,0 +1,13 @@
|
|||
<nav class="pagination" role="pagination">
|
||||
{% if paginator.previous_page %}
|
||||
{% if paginator.previous_page == 1 %}
|
||||
<a class="newer-posts" href="{{ site.baseurl }}author/{{ page.author }}" title="Previous Page">« Newer Posts</a>
|
||||
{% else %}
|
||||
<a class="newer-posts" href="{{ site.baseurl }}author/{{ page.author }}/page{{ paginator.previous_page }}/" title="Previous Page">« Newer Posts</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<span class="page-number"> Page {{ paginator.page }} of {{ paginator.total_pages }} </span>
|
||||
{% if paginator.next_page %}
|
||||
<a class="older-posts" href="{{ site.baseurl }}author/{{ page.author }}/page{{ paginator.next_page }}/" title="Next Page">Older Posts »</a>
|
||||
{% endif %}
|
||||
</nav>
|
|
@ -1,12 +0,0 @@
|
|||
<script>
|
||||
(function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) return;
|
||||
js = d.createElement(s);
|
||||
js.id = id;
|
||||
js.src = "//connect.facebook.net/en_GB/sdk.js#xfbml=1&version=v2.8";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
}(document, 'script', 'facebook-jssdk'));
|
||||
</script>
|
||||
|
||||
<div class="fb-like" data-href="https://www.facebook.com/{{ include.username }}/" data-layout="button_count" data-action="like" data-show-faces="false" data-share="false"></div>
|
|
@ -1,3 +0,0 @@
|
|||
<script src="https://apis.google.com/js/platform.js" async defer></script>
|
||||
|
||||
<div class="g-follow" data-href="https://plus.google.com/{{ include.id }}"></div>
|
|
@ -1,40 +0,0 @@
|
|||
<style>
|
||||
.ig-b- {
|
||||
display: inline-block;
|
||||
margin-bottom: -10px;
|
||||
}
|
||||
|
||||
.ig-b- img {
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.ig-b-:hover {
|
||||
background-position: 0 -60px;
|
||||
}
|
||||
|
||||
.ig-b-:active {
|
||||
background-position: 0 -120px;
|
||||
}
|
||||
|
||||
.ig-b-v-24 {
|
||||
width: 137px;
|
||||
height: 24px;
|
||||
background: url(//badges.instagram.com/static/images/ig-badge-view-sprite-24.png) no-repeat 0 0;
|
||||
}
|
||||
|
||||
@media only screen and (-webkit-min-device-pixel-ratio: 2),
|
||||
only screen and (min--moz-device-pixel-ratio: 2),
|
||||
only screen and (-o-min-device-pixel-ratio: 2 / 1),
|
||||
only screen and (min-device-pixel-ratio: 2),
|
||||
only screen and (min-resolution: 192dpi),
|
||||
only screen and (min-resolution: 2dppx) {
|
||||
.ig-b-v-24 {
|
||||
background-image: url(//badges.instagram.com/static/images/ig-badge-view-sprite-24@2x.png);
|
||||
background-size: 160px 178px;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
<a href="https://www.instagram.com/{{ include.username }}/" class="ig-b- ig-b-v-24">
|
||||
<img src="//badges.instagram.com/static/images/ig-badge-view-24.png" alt="Instagram">
|
||||
</a>
|
|
@ -1,3 +0,0 @@
|
|||
<script src="//platform.linkedin.com/in.js" type="text/javascript"></script>
|
||||
|
||||
<p><script type="IN/FollowCompany" data-id="{{ include.id }}" data-counter="right"></script></p>
|
|
@ -1,3 +0,0 @@
|
|||
<script src="https://platform.twitter.com/widgets.js"></script>
|
||||
|
||||
<a href="https://twitter.com/{{ include.username }}" class="twitter-follow-button" data-show-screen-name='false'>Follow @{{ include.username }}</a>
|
|
@ -1,3 +0,0 @@
|
|||
<script src="https://apis.google.com/js/platform.js"></script>
|
||||
|
||||
<div class="g-ytsubscribe" data-channelid="{{ include.id }}" data-layout="default" data-count="default"></div>
|
|
@ -0,0 +1,7 @@
|
|||
<!-- dynamically loading backgrounds for tags, descriptions and page titles -->
|
||||
{% for tag in site.data.tags %}
|
||||
{% if page.url contains tag[1].name %}
|
||||
{% assign cover = tag[1].cover %}
|
||||
{% assign tag_description = tag[1].description %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
|
@ -0,0 +1,16 @@
|
|||
<!-- dynamically fixing the title for tag/author pages -->
|
||||
{% if page.url %}
|
||||
{% if page.url contains "tag/" %}
|
||||
{% assign title = page.url | remove: 'tag' | remove: '/' | replace: '-', ' ' | capitalizeall %}
|
||||
{% elsif page.url contains "author/" %}
|
||||
{% assign username = page.url | remove: 'author' | remove: '/' | replace: '-', ' ' | remove: ' ' %}
|
||||
{% for author in site.data.authors %}
|
||||
{% if author[1].username == username %}
|
||||
{% assign title = author[1].name %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if title %}
|
||||
{% assign title = title | append: ' - ' | append: site.title %}
|
||||
{% endif %}
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M19 6h5V0h-5c-3.86 0-7 3.14-7 7v3H8v6h4v16h6V16h5l1-6h-6V7c0-.542.458-1 1-1z"/></svg>
|
After Width: | Height: | Size: 155 B |
|
@ -0,0 +1,28 @@
|
|||
<div class="floating-header">
|
||||
<div class="floating-header-logo">
|
||||
<a href="{{ site.url }}{{ site.baseurl }}">
|
||||
{% if site.logo_dark %}
|
||||
<img src="{{ site.baseurl }}{{ site.logo_dark }}" alt="{{ site.title }} icon" />
|
||||
{% endif %}
|
||||
<span>{{ site.title }}</span>
|
||||
</a>
|
||||
</div>
|
||||
<span class="floating-header-divider">—</span>
|
||||
<div class="floating-header-title">{{ page.title }}</div>
|
||||
<div class="floating-header-share">
|
||||
<div class="floating-header-share-label">Share this {% include point.html %}</div>
|
||||
<a class="floating-header-share-tw" href="https://twitter.com/share?text={{ page.title | url_encode }}&url={{ site.url }}{{ page.url | remove_first: '/' }}"
|
||||
onclick="window.open(this.href, 'share-twitter', 'width=550,height=235');return false;">
|
||||
{% include twitter.html %}
|
||||
</a>
|
||||
<a class="floating-header-share-fb" href="https://www.facebook.com/sharer/sharer.php?u={{ site.url }}{{ page.url | remove_first: '/' }}"
|
||||
onclick="window.open(this.href, 'share-facebook','width=580,height=296');return false;">
|
||||
{% include facebook.html %}
|
||||
</a>
|
||||
</div>
|
||||
<progress class="progress" value="0">
|
||||
<div class="progress-container">
|
||||
<span class="progress-bar"></span>
|
||||
</div>
|
||||
</progress>
|
||||
</div>
|
|
@ -0,0 +1 @@
|
|||
<svg class="ghost-svg" viewBox="0 0 493 161" xmlns="http://www.w3.org/2000/svg"><title>Ghost Logo</title><g fill="none" fill-rule="evenodd"><path d="M328.52 37.36c-27.017 0-40.97 19.323-40.97 43.16 0 23.837 13.61 43.162 40.97 43.162s40.968-19.325 40.968-43.163c0-23.84-13.954-43.16-40.97-43.16zm20.438 43.237c-.02 15.328-5.126 27.743-20.44 27.743-15.312 0-20.42-12.414-20.435-27.743v-.078c.016-15.33 5.124-27.74 20.437-27.74 15.312 0 20.42 12.41 20.438 27.74v.07zM207.553 5.19c0-1.103.885-2.124 1.984-2.282 0 0 13.577-1.95 14.784-2.115 1.37-.187 3.19.798 3.19 2.744v44.236c3.23-3.105 6.79-5.608 10.66-7.515 3.88-1.906 8.43-2.86 13.66-2.86 4.53 0 8.53.776 12.03 2.33 3.5 1.55 6.43 3.73 8.77 6.533 2.34 2.81 4.12 6.16 5.33 10.05 1.21 3.9 1.82 8.19 1.82 12.87v51.35c0 1.1-.89 2-2 2h-15.95c-1.1 0-2-.9-2-1.99V69.18c0-5.118-1.17-9.08-3.51-11.888-2.35-2.804-5.86-4.207-10.544-4.207-3.45 0-6.677.79-9.69 2.37-3.02 1.58-5.87 3.73-8.564 6.46v58.617c0 1.102-.894 2-2.002 2h-15.94c-1.11 0-2.005-.895-2.005-2V5.188zm244.007 95.327v-43.68h-13.482c-1.1 0-1.742-.87-1.443-1.916l3-10.49c.262-.9.942-1.87 2.308-2.07l9.597-1.35 3.508-23.49c.163-1.09 1.18-2.1 2.274-2.26 0 0 9.192-1.31 10.963-1.58 1.673-.25 3.19.97 3.19 2.81v24.52h17.565c1.106 0 2.002.9 2.002 2.01v11.82c0 1.11-.89 2.01-2.002 2.01h-17.566v43.08c0 6.02 3.623 8.32 7.095 8.32 2.12 0 5.02-1.14 7.19-2.16 1.34-.62 3.41-.16 3.95 1.73l2.45 8.65c.3 1.07-.25 2.37-1.23 2.86 0 0-7.29 4.37-17.06 4.37-13.73 0-22.33-8.08-22.33-23.16zm-44.584-47.74c-7.084 0-12.657 2.476-12.657 8.433 0 7.44 12.01 9.606 20.23 12.64 5.49 2.027 20.24 5.98 20.24 22.016 0 19.48-16 27.807-33.06 27.807-17.06 0-25.4-5.465-25.4-5.465-.96-.527-1.5-1.822-1.2-2.89 0 0 2.1-7.52 2.64-9.386.48-1.68 2.41-2.27 3.64-1.792 4.39 1.712 12.32 4.092 21.28 4.092 9.07 0 13.46-2.803 13.46-8.777 0-7.95-12.26-10.38-20.36-12.967-5.59-1.78-20.36-5.93-20.36-23.566 0-17.373 15.08-25.524 31.2-25.524 13.64 0 23.5 4.69 23.5 4.69 1.01.427 1.58 1.635 1.28 2.698l-2.658 9.357c-.488 1.74-1.898 2.537-3.666 1.957-3.89-1.277-11.2-3.322-18.15-3.322zm-210.313-15.28c-6.695.775-11.472 3.962-14.562 6.93-6.06-4.81-14.49-7.106-23.94-7.106-18.95 0-33.76 9.26-33.76 29.43 0 11.58 4.88 19.56 12.62 24.26-5.75 2.75-9.57 8.59-9.57 14.34 0 9.61 7.5 12.61 7.5 12.61s-13.11 6.44-13.11 19.32c0 16.49 15.01 23.16 33.34 23.16 26.43 0 44.61-11.04 44.61-31.31 0-12.47-9.44-19.36-30.01-20.18-12.2-.48-20.11-.93-22.07-1.58-2.59-.87-3.86-2.96-3.86-5.28 0-2.55 2.08-4.98 5.35-6.65 2.86.516 5.87.768 8.99.768 18.97 0 33.76-9.223 33.76-29.425 0-4.897-.87-9.15-2.46-12.78 2.79-1.506 8.34-2.25 8.34-2.25 1.09-.17 1.975-1.21 1.974-2.31V40.3c0-1.88-1.59-2.955-3.1-2.78zm-49.13 85.132s9.954.38 19.9.84c11.172.52 14.654 2.96 14.654 8.81 0 7.15-9.71 14.1-23.28 14.1-12.88 0-19.314-4.54-19.314-12.08 0-4.33 2.26-9.18 8.04-11.69zm10.66-40.54c-8.978 0-15.983-4.83-15.983-15.35 0-10.53 7.01-15.35 15.983-15.35 8.974 0 15.984 4.81 15.984 15.34 0 10.53-7.002 15.34-15.984 15.34z" fill="#2D3134"/><g opacity=".6" transform="translate(0 36)" fill="#2E3134"><rect x=".209" y="69.017" width="33.643" height="17.014" rx="4"/><rect x="50.672" y="69.017" width="33.622" height="17.014" rx="4"/><rect x=".184" y="34.99" width="84.121" height="17.014" rx="4"/><rect x=".209" y=".964" width="50.469" height="17.013" rx="4"/><rect x="67.494" y=".964" width="16.821" height="17.013" rx="4"/></g></g></svg>
|
After Width: | Height: | Size: 3.3 KiB |
|
@ -0,0 +1,69 @@
|
|||
<meta name="description" content="{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
|
||||
<link rel="shortcut icon" href="{{ site.url }}{{ site.baseurl }}{{ site.favicon }}" type="image/png" />
|
||||
<link rel="canonical" href="{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}{% endif %}{{ page.url | remove_first: '/' }}" />
|
||||
<meta name="referrer" content="no-referrer-when-downgrade" />
|
||||
|
||||
{% if page.content and page.current == 'post' or page.current == 'about' %}
|
||||
{% assign excerpt = page.content | strip_html | truncatewords: 50, "" %}
|
||||
{% endif %} <!--title below is coming from _includes/dynamic_title-->
|
||||
<meta property="og:site_name" content="{{ site.title }}" />
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:title" content="{% if title %}{{ title }}{% elsif page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}" />
|
||||
<meta property="og:description" content="{% if excerpt %}{{ excerpt }}{% elsif page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
|
||||
<meta property="og:url" content="{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}{% endif %}{{ page.url | remove_first: '/' }}" />
|
||||
<meta property="og:image" content="{{ site.url }}{{ site.baseurl }}{% if page.cover %}{{ page.cover }}{% else %}{{ site.cover }}{% endif %}" />
|
||||
<meta property="article:publisher" content="https://www.facebook.com/{{ site.facebook }}" />{% if excerpt %}
|
||||
<meta property="article:author" content="https://www.facebook.com/{{ site.facebook }}" />
|
||||
<meta property="article:published_time" content="{% if page.date %}{{ page.date | date_to_xmlschema }}{% elsif post.date %}{{ post.date | date_to_xmlschema }}{% endif %}" />
|
||||
<meta property="article:modified_time" content="{% if page.date %}{{ page.date | date_to_xmlschema }}{% elsif post.date %}{{ post.date | date_to_xmlschema }}{% endif %}" />{% endif %}{% if page.tags.size > 0 %}
|
||||
<meta property="article:tag" content="{{ page.tags | first | capitalizeall }}" />{% endif %}
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta name="twitter:title" content="{% if title %}{{ title }}{% elsif page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}" />
|
||||
<meta name="twitter:description" content="{% if excerpt %}{{ excerpt }}{% elsif page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}" />
|
||||
<meta name="twitter:url" content="{{ site.url }}{{ site.baseurl }}" />
|
||||
<meta name="twitter:image" content="{{ site.url }}{{ site.baseurl }}{% if page.cover %}{{ page.cover }}{% else %}{{ site.cover }}{% endif %}" />
|
||||
<meta name="twitter:label1" content="Written by" />
|
||||
<meta name="twitter:data1" content="{{ site.title }}" />{% if page.tags.size > 0 %}
|
||||
<meta name="twitter:label2" content="Filed under" />
|
||||
<meta name="twitter:data2" content="{{ page.tags | first | capitalizeall }}" />{% endif %}
|
||||
<meta name="twitter:site" content="@{{ site.twitter }}" />
|
||||
<meta name="twitter:creator" content="@{{ site.twitter }}" />{% if excerpt %}
|
||||
<meta property="og:image:width" content="1400" />
|
||||
<meta property="og:image:height" content="933" />{% else %}
|
||||
<meta property="og:image:width" content="2000" />
|
||||
<meta property="og:image:height" content="666" />{% endif %}
|
||||
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "Website",
|
||||
"publisher": {
|
||||
"@type": "Organization",
|
||||
"name": "{{ site.title }}",
|
||||
"logo": "{{ site.url }}{{ site.baseurl }}{{ site.logo }}"
|
||||
},
|
||||
"url": "{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}{% endif %}{{ page.url | remove_first: '/' }}",
|
||||
"image": {
|
||||
"@type": "ImageObject",
|
||||
"url": "{{ site.url }}{{ site.baseurl }}{% if page.cover %}{{ page.cover }}{% else %}{{ site.cover }}{% endif %}",
|
||||
"width": 2000,
|
||||
"height": 666
|
||||
},
|
||||
"mainEntityOfPage": {
|
||||
"@type": "WebPage",
|
||||
"@id": "{{ site.url }}{% if site.baseurl %}{{ site.baseurl }}{% endif %}{{ page.url | remove_first: '/' }}"
|
||||
},
|
||||
"description": "{% if excerpt %}{{ excerpt }}{% elsif page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}"
|
||||
}
|
||||
</script>
|
||||
|
||||
<!-- <script type="text/javascript" src="https://demo.ghost.io/public/ghost-sdk.min.js?v=724281a32e"></script>
|
||||
<script type="text/javascript">
|
||||
ghost.init({
|
||||
clientId: "ghost-frontend",
|
||||
clientSecret: "f84a07a72b17"
|
||||
});
|
||||
</script> -->
|
||||
|
||||
<meta name="generator" content="Jekyll 3.6.2" />
|
||||
<link rel="alternate" type="application/rss+xml" title="{% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}" href="{{ site.baseurl }}feed.xml" />
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M13 14.5s2 3 5 3 5.5-2.463 5.5-5.5S21 6.5 18 6.5c-5 0-7 11-12 11C2.962 17.5.5 15.037.5 12S3 6.5 6 6.5s4.5 3.5 4.5 3.5"/></svg>
|
After Width: | Height: | Size: 196 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" stroke="#000" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" fill="none"><path d="M19.5 8c0 4.144-7.5 15.5-7.5 15.5S4.5 12.144 4.5 8C4.5 3.858 7.857.5 12 .5c4.142 0 7.5 3.358 7.5 7.5z"/><circle cx="12" cy="8" r="3"/></svg>
|
After Width: | Height: | Size: 329 B |
|
@ -0,0 +1,5 @@
|
|||
<ul class="nav" role="menu">
|
||||
<li class="nav-home" role="menuitem"><a href="{{site.url}}">Home</a></li>
|
||||
<li class="nav-blog" role="menuitem"><a href="https://davison.io/blog/">Blog</a></li>
|
||||
<li class="nav-about" role="menuitem"><a href="{{site.url}}/about/">About</a></li>
|
||||
</ul>
|
|
@ -0,0 +1,6 @@
|
|||
<script>
|
||||
$(function() {
|
||||
var $postContent = $(".post-full-content");
|
||||
$postContent.fitVids();
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,3 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
|
||||
<path d="M7.5 15.5V4a1.5 1.5 0 1 1 3 0v4.5h2a1 1 0 0 1 1 1h2a1 1 0 0 1 1 1H18a1.5 1.5 0 0 1 1.5 1.5v3.099c0 .929-.13 1.854-.385 2.748L17.5 23.5h-9c-1.5-2-5.417-8.673-5.417-8.673a1.2 1.2 0 0 1 1.76-1.605L7.5 15.5zm6-6v2m-3-3.5v3.5m6-1v2"/>
|
||||
</svg>
|
After Width: | Height: | Size: 311 B |
|
@ -0,0 +1,59 @@
|
|||
{% assign words_per_minute = site.words_per_minute | default: 200 %}
|
||||
|
||||
{% assign count = 0 %}
|
||||
{% for post in site.posts %}
|
||||
{% assign count = count | plus: 1 %}
|
||||
{% if count <= 3 %}
|
||||
<article class="post-card {{ page.class }}{% unless post.cover %} no-image{% endunless %}">
|
||||
{% if post.cover %}
|
||||
<a class="post-card-image-link" href="{{ site.baseurl }}{{ post.url | remove_first: '/' }}">
|
||||
<div class="post-card-image" style="background-image: url({{ site.baseurl }}{{ post.cover }})"></div>
|
||||
</a>
|
||||
{% endif %}
|
||||
<div class="post-card-content">
|
||||
<a class="post-card-content-link" href="{{ site.baseurl }}{{ post.url | remove_first: '/' }}">
|
||||
<header class="post-card-header">
|
||||
{% if post.tags.size > 0 %}
|
||||
{% for tag in post.tags %}
|
||||
{% if forloop.index == post.tags.size %}
|
||||
<span class="post-card-tags">{{ tag | capitalize }}</span>
|
||||
{% else %}
|
||||
<span class="post-card-tags">{{ tag | capitalize }}</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<h2 class="post-card-title">{{ post.title }}</h2>
|
||||
</header>
|
||||
<section class="post-card-excerpt">
|
||||
{% if post.excerpt %}
|
||||
<p>{{ post.excerpt | strip_html | truncatewords: 33, "" }}</p>
|
||||
{% else %}
|
||||
<p>{{ post.content | strip_html | truncatewords: 33, "" }}</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
</a>
|
||||
<footer class="post-card-meta">
|
||||
{% for author in site.data.authors %}
|
||||
{% if author[1].username == post.author %}
|
||||
{% if author[1].picture %}
|
||||
<img class="author-profile-image" src="{{ site.baseurl }}{{ author[1].picture }}" alt="{{ author[1].name }}" />
|
||||
{% endif %}
|
||||
<span class="post-card-author">
|
||||
<a href="{{ site.baseurl }}author/{{ post.author }}/">{{ author[1].name }}</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<span class="reading-time">
|
||||
{% assign words = post.content | strip_html | number_of_words %}
|
||||
{% if words <= words_per_minute %}
|
||||
1 min read
|
||||
{% else %}
|
||||
{{ words | divided_by:words_per_minute }} min read
|
||||
{% endif %}
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
</article>
|
||||
{% endif %}
|
||||
{% endfor %}
|
|
@ -0,0 +1,53 @@
|
|||
{% assign words_per_minute = site.words_per_minute | default: 200 %}
|
||||
|
||||
<article class="post-card {{ page.next.class }}{% unless page.next.cover %} no-image{% endunless %}">
|
||||
{% if page.next.cover %}
|
||||
<a class="post-card-image-link" href="{{ site.baseurl }}{{ page.next.url | remove_first: '/' }}">
|
||||
<div class="post-card-image" style="background-image: url({{ site.baseurl }}{{ page.next.cover }})"></div>
|
||||
</a>
|
||||
{% endif %}
|
||||
<div class="post-card-content">
|
||||
<a class="post-card-content-link" href="{{ site.baseurl }}{{ page.next.url | remove_first: '/' }}">
|
||||
<header class="post-card-header">
|
||||
{% if page.next.tags.size > 0 %}
|
||||
{% for tag in page.next.tags %}
|
||||
{% if forloop.index == page.next.tags.size %}
|
||||
<span class="post-card-tags">{{ tag | capitalize }}</span>
|
||||
{% else %}
|
||||
<span class="post-card-tags">{{ tag | capitalize }}</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<h2 class="post-card-title">{{ page.next.title }}</h2>
|
||||
</header>
|
||||
<section class="post-card-excerpt">
|
||||
{% if post.excerpt %}
|
||||
<p>{{ post.excerpt | strip_html | truncatewords: 33, "" }}</p>
|
||||
{% else %}
|
||||
<p>{{ post.content | strip_html | truncatewords: 33, "" }}</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
</a>
|
||||
<footer class="post-card-meta">
|
||||
{% for author in site.data.authors %}
|
||||
{% if author[1].username == page.next.author %}
|
||||
{% if author[1].picture %}
|
||||
<img class="author-profile-image" src="{{ site.baseurl }}{{ author[1].picture }}" alt="{{ author[1].name }}" />
|
||||
{% endif %}
|
||||
<span class="post-card-author">
|
||||
<a href="{{ site.baseurl }}author/{{ page.next.author }}/">{{ author[1].name }}</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<span class="reading-time">
|
||||
{% assign words = post.content | strip_html | number_of_words %}
|
||||
{% if words <= words_per_minute %}
|
||||
1 min read
|
||||
{% else %}
|
||||
{{ words | divided_by:words_per_minute }} min read
|
||||
{% endif %}
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
</article>
|
|
@ -0,0 +1,53 @@
|
|||
{% assign words_per_minute = site.words_per_minute | default: 200 %}
|
||||
|
||||
<article class="post-card {{ page.previous.class }}{% unless page.previous.cover %} no-image{% endunless %}">
|
||||
{% if page.previous.cover %}
|
||||
<a class="post-card-image-link" href="{{ site.baseurl }}{{ page.previous.url | remove_first: '/' }}">
|
||||
<div class="post-card-image" style="background-image: url({{ site.baseurl }}{{ page.previous.cover }})"></div>
|
||||
</a>
|
||||
{% endif %}
|
||||
<div class="post-card-content">
|
||||
<a class="post-card-content-link" href="{{ site.baseurl }}{{ page.previous.url | remove_first: '/' }}">
|
||||
<header class="post-card-header">
|
||||
{% if page.previous.tags.size > 0 %}
|
||||
{% for tag in page.previous.tags %}
|
||||
{% if forloop.index == page.previous.tags.size %}
|
||||
<span class="post-card-tags">{{ tag | capitalize }}</span>
|
||||
{% else %}
|
||||
<span class="post-card-tags">{{ tag | capitalize }}</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<h2 class="post-card-title">{{ page.previous.title }}</h2>
|
||||
</header>
|
||||
<section class="post-card-excerpt">
|
||||
{% if post.excerpt %}
|
||||
<p>{{ post.excerpt | strip_html | truncatewords: 33, "" }}</p>
|
||||
{% else %}
|
||||
<p>{{ post.content | strip_html | truncatewords: 33, "" }}</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
</a>
|
||||
<footer class="post-card-meta">
|
||||
{% for author in site.data.authors %}
|
||||
{% if author[1].username == page.previous.author %}
|
||||
{% if author[1].picture %}
|
||||
<img class="author-profile-image" src="{{ site.baseurl }}{{ author[1].picture }}" alt="{{ author[1].name }}" />
|
||||
{% endif %}
|
||||
<span class="post-card-author">
|
||||
<a href="{{ site.baseurl }}author/{{ page.previous.author }}/">{{ author[1].name }}</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<span class="reading-time">
|
||||
{% assign words = post.content | strip_html | number_of_words %}
|
||||
{% if words <= words_per_minute %}
|
||||
1 min read
|
||||
{% else %}
|
||||
{{ words | divided_by:words_per_minute }} min read
|
||||
{% endif %}
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
</article>
|
|
@ -0,0 +1,55 @@
|
|||
{% assign words_per_minute = site.words_per_minute | default: 200 %}
|
||||
|
||||
{% for post in paginator.posts %}
|
||||
<article class="post-card {{ page.class }}{% unless post.cover %} no-image{% endunless %}">
|
||||
{% if post.cover %}
|
||||
<a class="post-card-image-link" href="{{ site.baseurl }}{{ post.url | remove_first: '/' }}">
|
||||
<div class="post-card-image" style="background-image: url({{ site.baseurl }}{{ post.cover }})"></div>
|
||||
</a>
|
||||
{% endif %}
|
||||
<div class="post-card-content">
|
||||
<a class="post-card-content-link" href="{{ site.baseurl }}{{ post.url | remove_first: '/' }}">
|
||||
<header class="post-card-header">
|
||||
{% if post.tags.size > 0 %}
|
||||
{% for tag in post.tags %}
|
||||
{% if forloop.index == post.tags.size %}
|
||||
<span class="post-card-tags">{{ tag | capitalize }}</span>
|
||||
{% else %}
|
||||
<span class="post-card-tags">{{ tag | capitalize }}</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
<h2 class="post-card-title">{{ post.title }}</h2>
|
||||
</header>
|
||||
<section class="post-card-excerpt">
|
||||
{% if post.excerpt %}
|
||||
<p>{{ post.excerpt | strip_html | truncatewords: 33, "" }}</p>
|
||||
{% else %}
|
||||
<p>{{ post.content | strip_html | truncatewords: 33, "" }}</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
</a>
|
||||
<footer class="post-card-meta">
|
||||
{% for author in site.data.authors %}
|
||||
{% if author[1].username == post.author %}
|
||||
{% if author[1].picture %}
|
||||
<img class="author-profile-image" src="{{ site.baseurl }}{{ author[1].picture }}" alt="{{ author[1].name }}" />
|
||||
{% endif %}
|
||||
<span class="post-card-author">
|
||||
<a href="{{ site.baseurl }}author/{{ post.author }}/">{{ author[1].name }}</a>
|
||||
</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<span class="reading-time">
|
||||
{% assign words = post.content | strip_html | number_of_words %}
|
||||
{% if words <= words_per_minute %}
|
||||
1 min read
|
||||
{% else %}
|
||||
{{ words | divided_by:words_per_minute }} min read
|
||||
{% endif %}
|
||||
</span>
|
||||
</footer>
|
||||
</div>
|
||||
</article>
|
||||
{% endfor %}
|
|
@ -0,0 +1,63 @@
|
|||
<script>
|
||||
|
||||
// NOTE: Scroll performance is poor in Safari
|
||||
// - this appears to be due to the events firing much more slowly in Safari.
|
||||
// Dropping the scroll event and using only a raf loop results in smoother
|
||||
// scrolling but continuous processing even when not scrolling
|
||||
$(document).ready(function () {
|
||||
// Start fitVids
|
||||
var $postContent = $(".post-full-content");
|
||||
$postContent.fitVids();
|
||||
// End fitVids
|
||||
|
||||
var progressBar = document.querySelector('progress');
|
||||
var header = document.querySelector('.floating-header');
|
||||
var title = document.querySelector('.post-full-title');
|
||||
|
||||
var lastScrollY = window.scrollY;
|
||||
var lastWindowHeight = window.innerHeight;
|
||||
var lastDocumentHeight = $(document).height();
|
||||
var ticking = false;
|
||||
|
||||
function onScroll() {
|
||||
lastScrollY = window.scrollY;
|
||||
requestTick();
|
||||
}
|
||||
|
||||
function onResize() {
|
||||
lastWindowHeight = window.innerHeight;
|
||||
lastDocumentHeight = $(document).height();
|
||||
requestTick();
|
||||
}
|
||||
|
||||
function requestTick() {
|
||||
if (!ticking) {
|
||||
requestAnimationFrame(update);
|
||||
}
|
||||
ticking = true;
|
||||
}
|
||||
|
||||
function update() {
|
||||
var trigger = title.getBoundingClientRect().top + window.scrollY;
|
||||
var triggerOffset = title.offsetHeight + 35;
|
||||
var progressMax = lastDocumentHeight - lastWindowHeight;
|
||||
|
||||
// show/hide floating header
|
||||
if (lastScrollY >= trigger + triggerOffset) {
|
||||
header.classList.add('floating-active');
|
||||
} else {
|
||||
header.classList.remove('floating-active');
|
||||
}
|
||||
|
||||
progressBar.setAttribute('max', progressMax);
|
||||
progressBar.setAttribute('value', lastScrollY);
|
||||
|
||||
ticking = false;
|
||||
}
|
||||
|
||||
window.addEventListener('scroll', onScroll, {passive: true});
|
||||
window.addEventListener('resize', onResize, false);
|
||||
|
||||
update();
|
||||
});
|
||||
</script>
|
|
@ -0,0 +1,13 @@
|
|||
<nav class="pagination" role="pagination">
|
||||
{% if paginator.previous_page %}
|
||||
{% if paginator.previous_page == 1 %}
|
||||
<a class="newer-posts" href="{{ site.baseurl }}" title="Previous Page">« Newer Posts</a>
|
||||
{% else %}
|
||||
<a class="newer-posts" href="{{ site.baseurl }}page{{ paginator.previous_page }}/" title="Previous Page">« Newer Posts</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<span class="page-number"> Page {{ paginator.page }} of {{ paginator.total_pages }} </span>
|
||||
{% if paginator.next_page %}
|
||||
<a class="older-posts" href="{{ site.baseurl }}page{{ paginator.next_page }}/" title="Next Page">Older Posts »</a>
|
||||
{% endif %}
|
||||
</nav>
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><circle cx="6.18" cy="17.82" r="2.18"/><path d="M4 4.44v2.83c7.03 0 12.73 5.7 12.73 12.73h2.83c0-8.59-6.97-15.56-15.56-15.56zm0 5.66v2.83c3.9 0 7.07 3.17 7.07 7.07h2.83c0-5.47-4.43-9.9-9.9-9.9z"/></svg>
|
After Width: | Height: | Size: 263 B |
|
@ -0,0 +1,19 @@
|
|||
<nav class="site-nav">
|
||||
<div class="site-nav-left">
|
||||
{% if page.current != 'home' %}
|
||||
{% if site.logo %}
|
||||
<a class="site-nav-logo" href="{{ site.url }}{{ site.baseurl }}"><img src="{{ site.baseurl}}{{ site.logo }}" alt="{{ site.title }}" /></a>
|
||||
{% else %}
|
||||
<a class="site-nav-logo" href="{{ site.url }}{{ site.baseurl }}">{{ site.title }}</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% if page.navigation %}
|
||||
{% include navigation.html %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="social-links">
|
||||
<a class="social-link social-link-tw" href="https://twitter.com/davisonio" title="Twitter" target="_blank" rel="noopener"><i class="fab fa-twitter"></i></a>
|
||||
<a class="social-link" href="https://www.instagram.com/craigdavisonio/" title="Instagram" target="_blank" rel="noopener"><i class="fab fa-instagram"></i></a>
|
||||
<a class="social-link" href="https://davison.io/elsewhere/" title="Elsewhere" target="_blank" rel="noopener"><i class="fas fa-ellipsis-h"></i></a>
|
||||
</div>
|
||||
</nav>
|
|
@ -0,0 +1,9 @@
|
|||
<form method="post" action="/subscribe/" class="">
|
||||
<input class="confirm" type="hidden" name="confirm" /><input class="location" type="hidden" name="location" /><input class="referrer" type="hidden" name="referrer" />
|
||||
|
||||
<div class="form-group">
|
||||
<input class="subscribe-email" type="email" name="email" placeholder="youremail@example.com" />
|
||||
</div>
|
||||
<button class="" type="submit" {% unless site.subscribe %}disabled{% endunless %}><span>Subscribe</span></button>
|
||||
<script type="text/javascript">(function(g,h,o,s,t){h[o]('.location')[s]=h[o]('.location')[s] || g.location.href;h[o]('.referrer')[s]=h[o]('.referrer')[s] || h.referrer;})(window,document,'querySelector','value');</script>
|
||||
</form>
|
|
@ -0,0 +1,13 @@
|
|||
<nav class="pagination" role="pagination">
|
||||
{% if paginator.previous_page %}
|
||||
{% if paginator.previous_page == 1 %}
|
||||
<a class="newer-posts" href="{{ site.baseurl }}tag/{{ page.tag | downcase | replace: ' ', '-' }}" title="Previous Page">« Newer Posts</a>
|
||||
{% else %}
|
||||
<a class="newer-posts" href="{{ site.baseurl }}tag/{{ page.tag | downcase | replace: ' ', '-' }}/page{{ paginator.previous_page }}/" title="Previous Page">« Newer Posts</a>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
<span class="page-number"> Page {{ paginator.page }} of {{ paginator.total_pages }} </span>
|
||||
{% if paginator.next_page %}
|
||||
<a class="older-posts" href="{{ site.baseurl }}tag/{{ page.tag | downcase | replace: ' ', '-' }}/page{{ paginator.next_page }}/" title="Next Page">Older Posts »</a>
|
||||
{% endif %}
|
||||
</nav>
|
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32"><path d="M30.063 7.313c-.813 1.125-1.75 2.125-2.875 2.938v.75c0 1.563-.188 3.125-.688 4.625a15.088 15.088 0 0 1-2.063 4.438c-.875 1.438-2 2.688-3.25 3.813a15.015 15.015 0 0 1-4.625 2.563c-1.813.688-3.75 1-5.75 1-3.25 0-6.188-.875-8.875-2.625.438.063.875.125 1.375.125 2.688 0 5.063-.875 7.188-2.5-1.25 0-2.375-.375-3.375-1.125s-1.688-1.688-2.063-2.875c.438.063.813.125 1.125.125.5 0 1-.063 1.5-.25-1.313-.25-2.438-.938-3.313-1.938a5.673 5.673 0 0 1-1.313-3.688v-.063c.813.438 1.688.688 2.625.688a5.228 5.228 0 0 1-1.875-2c-.5-.875-.688-1.813-.688-2.75 0-1.063.25-2.063.75-2.938 1.438 1.75 3.188 3.188 5.25 4.25s4.313 1.688 6.688 1.813a5.579 5.579 0 0 1 1.5-5.438c1.125-1.125 2.5-1.688 4.125-1.688s3.063.625 4.188 1.813a11.48 11.48 0 0 0 3.688-1.375c-.438 1.375-1.313 2.438-2.563 3.188 1.125-.125 2.188-.438 3.313-.875z"/></svg>
|
After Width: | Height: | Size: 888 B |
|
@ -0,0 +1 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M23.5 11.957c0 6.375-5.163 11.544-11.532 11.544C5.599 23.5.5 18.125.5 11.75.5 5.542 5.37.758 11.505.511l.5-.011C18.374.5 23.5 5.582 23.5 11.957zM11.505.511c-6 6.5-6 14.98 0 22.98m1-22.98c6 6.5 6 14.977 0 22.977M2 17.479h20.063m-19.657-12h19.062m-20.968 6h22.938" stroke="#000" stroke-linejoin="round" stroke-miterlimit="10" fill="none"/></svg>
|
After Width: | Height: | Size: 413 B |
|
@ -0,0 +1,64 @@
|
|||
---
|
||||
layout: default
|
||||
current: author
|
||||
title: Author Page
|
||||
cover: false
|
||||
class: 'author-template'
|
||||
navigation: True
|
||||
label: Author
|
||||
logo: 'assets/images/ghost.png'
|
||||
---
|
||||
<!-- < default}} -->
|
||||
<!-- The tag above means - insert everything in this file into the {body} of the default.hbs template -->
|
||||
|
||||
<!-- #author -->
|
||||
<!-- Everything inside the #author tags pulls data from the author -->
|
||||
{% for author in site.data.authors %}
|
||||
{% if author[1].username == page.author %}
|
||||
<header class="site-header outer {% if author[1].cover or page.cover %}" style="background-image: url({{ site.baseurl }}{% if author[1].cover %}{{ author[1].cover }}{% elsif page.cover %}{{ page.cover }}{% endif %}) {% else %}no-cover{% endif %}">
|
||||
<div class="inner">
|
||||
{% include site-nav.html %}
|
||||
<div class="site-header-content">
|
||||
{% if author[1].picture %}
|
||||
<img class="author-profile-image" src="{{ site.baseurl }}{{ author[1].picture }}" alt="{{ page.author }}" />
|
||||
{% endif %}
|
||||
<h1 class="site-title">{{ author[1].name }}</h1>
|
||||
{% if author[1].bio %}
|
||||
<h2 class="author-bio">{{ author[1].bio }}</h2>
|
||||
{% endif %}
|
||||
<div class="author-meta">
|
||||
{% if author[1].location %}
|
||||
<div class="author-location">{{ author[1].location }} <span class="bull">•</span></div>
|
||||
{% endif %}
|
||||
<div class="author-stats">
|
||||
{% if paginator.total_posts == 0 %}No posts{% elsif paginator.total_posts == 1 %}1 post{% else %}{{ paginator.total_posts }} posts{% endif %} <span class="bull">•</span>
|
||||
</div>
|
||||
{% if author[1].url %}
|
||||
<a class="social-link social-link-wb" href="{{ author[1].url_full }}" target="_blank" rel="noopener">{% include website.html %}</a>
|
||||
{% endif %}
|
||||
{% if author[1].twitter %}
|
||||
<a class="social-link social-link-tw" href="https://twitter.com/{{ author[1].twitter }}" target="_blank" rel="noopener">{% include twitter.html %}</a>
|
||||
{% endif %}
|
||||
{% if author[1].facebook %}
|
||||
<a class="social-link social-link-fb" href="https://facebook.com/{{ author[1].facebook }}" target="_blank" rel="noopener">{% include facebook.html %}</a>
|
||||
{% endif %}
|
||||
<a class="social-link social-link-rss" href="https://feedly.com/i/subscription/feed/{{ site.url }}{{ site.baseurl }}author/{{ page.author }}/feed.xml" target="_blank" rel="noopener">{% include rss.html %}</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<!-- /author -->
|
||||
|
||||
<!-- The main content area -->
|
||||
<main id="site-main" class="site-main outer" role="main">
|
||||
<div class="inner">
|
||||
|
||||
<div class="post-feed">
|
||||
<!-- The tag below includes the markup for each post - partials/post-card.hbs -->
|
||||
{% include post-card.html %}
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</main>
|
|
@ -0,0 +1,138 @@
|
|||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
|
||||
<!-- Document Settings -->
|
||||
<meta charset="utf-8" />
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
|
||||
|
||||
<!-- Base Meta -->
|
||||
{% include dynamic_title.html %}
|
||||
<title>{% if title %}{{ title }}{% elsif page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %}</title>
|
||||
<meta name="HandheldFriendly" content="True" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<!-- Styles'n'Scripts -->
|
||||
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}assets/css/screen.css" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}assets/css/screen.edited.css" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}assets/css/syntax.css" />
|
||||
<link rel="stylesheet" type="text/css" href="{{ site.baseurl }}assets/css/custom.css" />
|
||||
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.9.0/css/all.min.css" integrity="sha256-UzFD2WYH2U1dQpKDjjZK72VtPeWP50NoJjd26rnAdUI=" crossorigin="anonymous" />
|
||||
<!-- highlight.js -->
|
||||
<link rel="stylesheet" href="//cdnjs.cloudflare.com/ajax/libs/highlight.js/9.12.0/styles/default.min.css">
|
||||
<style>.hljs { background: none; }</style>
|
||||
|
||||
<!--[if IE]>
|
||||
<style>
|
||||
p, ol, ul{
|
||||
width: 100%;
|
||||
}
|
||||
blockquote{
|
||||
width: 100%;
|
||||
}
|
||||
</style>
|
||||
<![endif]-->
|
||||
|
||||
<!-- This tag outputs SEO meta+structured data and other important settings -->
|
||||
{% include head.html %}
|
||||
|
||||
</head>
|
||||
<body class="{% if paginator.page > 1 %}paged archive-template{% elsif page.class %}{{ page.class }}{% else %}home-template{% endif %}">
|
||||
|
||||
<div class="site-wrapper">
|
||||
<!-- All the main content gets inserted here, index.hbs, post.hbs, etc -->
|
||||
{{ content }}
|
||||
|
||||
<!-- Previous/next page links - displayed on every page -->
|
||||
{% if paginator.total_posts > site.paginate %}
|
||||
{% if page.class == 'home-template' %}
|
||||
{% include post_pagination.html %}
|
||||
{% elsif page.class == 'page-template' %}
|
||||
{% include post_pagination.html %}
|
||||
{% elsif page.class == 'author-template' %}
|
||||
{% include author_pagination.html %}
|
||||
{% elsif page.class == 'tag-template' %}
|
||||
{% include tag_pagination.html %}
|
||||
{% else %}
|
||||
{% include post_pagination.html %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<!-- The footer at the very bottom of the screen -->
|
||||
<footer class="site-footer outer">
|
||||
<div class="site-footer-content inner">
|
||||
<section class="copyright">© {{ site.time | date: '%Y' }} {{ site.title }}</section>
|
||||
<section class="poweredby"></section>
|
||||
<nav class="site-footer-nav"></nav>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
</div>
|
||||
|
||||
<!-- The big email subscribe modal content -->
|
||||
{% if site.subscribers %}
|
||||
<div id="subscribe" class="subscribe-overlay">
|
||||
<a class="subscribe-overlay-close" href="#"></a>
|
||||
<div class="subscribe-overlay-content">
|
||||
{% if site.logo %}
|
||||
<img class="subscribe-overlay-logo" src="{{ site.baseurl }}{{ site.logo }}" alt="{{ site.title }}" />
|
||||
{% endif %}
|
||||
<h1 class="subscribe-overlay-title">Subscribe to {{ site.title }}</h1>
|
||||
<p class="subscribe-overlay-description">Stay up to date! Get all the latest & greatest posts delivered straight to your inbox</p>
|
||||
{% include subscribe-form.html placeholder="youremail@example.com" %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<!-- highlight.js -->
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/prism/1.10.0/components/prism-abap.min.js"></script>
|
||||
<script>$(document).ready(function() {
|
||||
$('pre code').each(function(i, block) {
|
||||
hljs.highlightBlock(block);
|
||||
});
|
||||
});</script>
|
||||
|
||||
<!-- jQuery + Fitvids, which makes all video embeds responsive -->
|
||||
<script
|
||||
src="https://code.jquery.com/jquery-3.2.1.min.js"
|
||||
integrity="sha256-hwg4gsxgFZhOsEEamdOYGBf13FyQuiTwlAQgxVSNgt4="
|
||||
crossorigin="anonymous">
|
||||
</script>
|
||||
<script type="text/javascript" src="{{ site.baseurl }}assets/js/jquery.fitvids.js"></script>
|
||||
<script type="text/javascript" src="https://demo.ghost.io/assets/js/jquery.fitvids.js?v=724281a32e"></script>
|
||||
|
||||
|
||||
<!-- Paginator increased to "infinit" in _config.yml -->
|
||||
<!-- if paginator.posts -->
|
||||
<!-- <script>
|
||||
var maxPages = parseInt('{{ paginator.total_pages }}');
|
||||
</script>
|
||||
<script src="{{ site.baseurl }}assets/js/infinitescroll.js"></script> -->
|
||||
<!-- /endif -->
|
||||
|
||||
{% if paginator.total_pages > site.paginate %}
|
||||
<script>
|
||||
var maxPages = parseInt('{{ paginator.total_pages }}');
|
||||
</script>
|
||||
<script src="{{ site.baseurl }}assets/js/infinitescroll.js"></script>
|
||||
{% endif %}
|
||||
|
||||
|
||||
<!-- Add Google Analytics -->
|
||||
{% include analytics.html %}
|
||||
|
||||
<!-- The #block helper will pull in data from the #contentFor other template files. In this case, there's some JavaScript which we only want to use in post.hbs, but it needs to be included down here, after jQuery has already loaded. -->
|
||||
{% if page.class == "post-template" %}
|
||||
{% include post-scripts.html %}
|
||||
{% elsif page.class == "page-template" %}
|
||||
{% include page-scripts.html %}
|
||||
{% endif %}
|
||||
|
||||
<!-- Ghost outputs important scripts and data with this tag - it should always be the very last thing before the closing body tag -->
|
||||
<!-- ghost_foot -->
|
||||
|
||||
</body>
|
||||
<!--
|
||||
Copyright © 2015+ Craig Davison
|
||||
License: https://github.com/davisonio/davison.io#license
|
||||
-->
|
||||
</html>
|
|
@ -0,0 +1 @@
|
|||
{{ content }}
|
|
@ -0,0 +1,113 @@
|
|||
---
|
||||
layout: null
|
||||
---
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
{% if page.xsl %}
|
||||
<?xml-stylesheet type="text/xml" href="{{ '/feed.xslt.xml' | absolute_url }}"?>
|
||||
{% endif %}
|
||||
<feed xmlns="http://www.w3.org/2005/Atom" {% if site.lang %}xml:lang="{{ site.lang }}"{% endif %}>
|
||||
<generator uri="https://jekyllrb.com/" version="{{ jekyll.version }}">Jekyll</generator>
|
||||
<link href="{{ page.url | absolute_url }}" rel="self" type="application/atom+xml" />
|
||||
<link href="{{ '/' | absolute_url }}" rel="alternate" type="text/html" {% if site.lang %}hreflang="{{ site.lang }}" {% endif %}/>
|
||||
<updated>{{ site.time | date_to_xmlschema }}</updated>
|
||||
<id>{{ page.url | absolute_url | xml_escape }}</id>
|
||||
|
||||
{% assign title = site.title | default: site.name %}
|
||||
{% if page.collection != "posts" %}
|
||||
{% assign collection = page.collection | capitalize %}
|
||||
{% assign title = title | append: " | " | append: collection %}
|
||||
{% endif %}
|
||||
{% if page.category %}
|
||||
{% assign category = page.category | capitalize %}
|
||||
{% assign title = title | append: " | " | append: category %}
|
||||
{% endif %}
|
||||
|
||||
{% if title %}
|
||||
<title type="html">{{ title | smartify | xml_escape }}</title>
|
||||
{% endif %}
|
||||
|
||||
{% if site.description %}
|
||||
<subtitle>{{ site.description | xml_escape }}</subtitle>
|
||||
{% endif %}
|
||||
|
||||
{% if site.author %}
|
||||
<author>
|
||||
<name>{{ site.author.name | default: site.author | xml_escape }}</name>
|
||||
{% if site.author.email %}
|
||||
<email>{{ site.author.email | xml_escape }}</email>
|
||||
{% endif %}
|
||||
{% if site.author.uri %}
|
||||
<uri>{{ site.author.uri | xml_escape }}</uri>
|
||||
{% endif %}
|
||||
</author>
|
||||
{% endif %}
|
||||
|
||||
{% if site.data.authors %}
|
||||
{% for author in site.data.authors %}
|
||||
{% if author[1].username == post.author %}
|
||||
<author>{{ author[1].name | strip_html }}</author>
|
||||
<author>
|
||||
<name>{{ author[1].name | default: author[1].name | xml_escape }}</name>
|
||||
{% if author[1].email %}
|
||||
<email>{{ author[1].email | xml_escape }}</email>
|
||||
{% endif %}
|
||||
{% if author[1].uri %}
|
||||
<uri>{{ author[1].uri | xml_escape }}</uri>
|
||||
{% endif %}
|
||||
</author>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
|
||||
{% assign posts = page.posts %}
|
||||
{% if page.category %}
|
||||
{% assign posts = posts | where: "category",page.category %}
|
||||
{% endif %}
|
||||
|
||||
{% for post in posts limit: 10 %}
|
||||
<entry{% if post.lang %}{{" "}}xml:lang="{{ post.lang }}"{% endif %}>
|
||||
<title type="html">{{ post.title | smartify | strip_html | normalize_whitespace | xml_escape }}</title>
|
||||
<link href="{{ post.url | absolute_url }}" rel="alternate" type="text/html" title="{{ post.title | xml_escape }}" />
|
||||
<published>{{ post.date | date_to_xmlschema }}</published>
|
||||
<updated>{{ post.last_modified_at | default: post.date | date_to_xmlschema }}</updated>
|
||||
<id>{{ post.id | absolute_url | xml_escape }}</id>
|
||||
<content type="html" xml:base="{{ post.url | absolute_url | xml_escape }}">{{ post.content | strip | xml_escape }}</content>
|
||||
|
||||
{% assign post_author = post.author | default: post.authors[0] | default: site.author %}
|
||||
{% assign post_author = site.data.authors[post_author] | default: post_author %}
|
||||
{% assign post_author_email = post_author.email | default: nil %}
|
||||
{% assign post_author_uri = post_author.uri | default: nil %}
|
||||
{% assign post_author_name = post_author.name | default: post_author %}
|
||||
|
||||
<author>
|
||||
<name>{{ post_author_name | default: "" | xml_escape }}</name>
|
||||
{% if post_author_email %}
|
||||
<email>{{ post_author_email | xml_escape }}</email>
|
||||
{% endif %}
|
||||
{% if post_author_uri %}
|
||||
<uri>{{ post_author_uri | xml_escape }}</uri>
|
||||
{% endif %}
|
||||
</author>
|
||||
|
||||
{% if post.category %}
|
||||
<category term="{{ post.category | xml_escape }}" />
|
||||
{% endif %}
|
||||
|
||||
{% for tag in post.tags %}
|
||||
<category term="{{ tag | xml_escape }}" />
|
||||
{% endfor %}
|
||||
|
||||
{% if post.excerpt and post.excerpt != empty %}
|
||||
<summary type="html">{{ post.excerpt | strip_html | normalize_whitespace | xml_escape }}</summary>
|
||||
{% endif %}
|
||||
|
||||
{% assign post_image = post.image.path | default: post.image %}
|
||||
{% if post_image %}
|
||||
{% unless post_image contains "://" %}
|
||||
{% assign post_image = post_image | absolute_url %}
|
||||
{% endunless %}
|
||||
<media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="{{ post_image | xml_escape }}" />
|
||||
{% endif %}
|
||||
</entry>
|
||||
{% endfor %}
|
||||
</feed>
|
|
@ -1,100 +0,0 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<title>
|
||||
{% if page.title == "Home" %}
|
||||
{{ site.title }}
|
||||
{% else %}
|
||||
{{ page.title }} · {{ site.title }}
|
||||
{% endif %}
|
||||
</title>
|
||||
<meta name="description" content="{% if page.description %}{{ page.description }} - {% endif %}{{ site.description }}">
|
||||
<link rel="canonical" href="{{ site.url }}{{ site.baseurl }}{{ page.url | remove: 'index.html'}}">
|
||||
<link rel="stylesheet" href="https://cdn.rawgit.com/FortAwesome/Font-Awesome/v4.6.3/css/font-awesome.min.css">
|
||||
<link rel="stylesheet" href="https://cdn.rawgit.com/IanLunn/Hover/2.0.2/css/hover-min.css">
|
||||
<link rel="stylesheet" href="https://cdn.rawgit.com/mblode/burger/v2.0.2/dist/css/burger.min.css">
|
||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/amsf.css">
|
||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/navigation.css">
|
||||
<link rel="stylesheet" href="{{ site.baseurl }}/assets/css/main.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<span class="top-title-button">
|
||||
<a href="{{ site.baseurl }}/">{{ site.title }}</a>
|
||||
</span>
|
||||
|
||||
<div class="b-nav">
|
||||
<ul>
|
||||
<li><a class="b-link {% if page.title == 'Home' %}b-link--active{% endif %}" href="{{ site.baseurl }}/">Home</a></li>
|
||||
<li><a class="b-link {% if page.title == 'Projects' %}b-link--active{% endif %}" href="{{ site.baseurl }}/projects/">Projects</a></li>
|
||||
<li><a class="b-link {% if page.title == 'About Me' %}b-link--active{% endif %}" href="{{ site.baseurl }}/about/">About</a></li>
|
||||
<li><a class="b-link {% if page.title == 'Contact Me' %}b-link--active{% endif %}" href="{{ site.baseurl }}/contact/">Contact</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
<div class="b-container">
|
||||
<div class="b-menu">
|
||||
<div class="b-bun b-bun--top"></div>
|
||||
<div class="b-bun b-bun--mid"></div>
|
||||
<div class="b-bun b-bun--bottom"></div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="content">
|
||||
{{ content }}
|
||||
</div>
|
||||
|
||||
<footer class="footer">
|
||||
<ul>
|
||||
<li><a href="{{ site.baseurl }}/" title='Home'>Home</a></li>
|
||||
<li><a href="{{ site.baseurl }}/projects/" title="Projects">Projects</a></li>
|
||||
<li><a href="{{ site.baseurl }}/about/" title="About">About</a></li>
|
||||
<li><a href="{{ site.baseurl }}/contact/" title="Contact">Contact</a></li>
|
||||
</ul>
|
||||
<p class='text-footer'>Subscribe to my newsletter:</p>
|
||||
<form action="//davison.us13.list-manage.com/subscribe/post?u=cc74974f892859e1b448d4a6a&id=5854e5d70e" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank" novalidate>
|
||||
<input type="email" value="" placeholder='Your email' name="EMAIL" class="required email" id="mce-EMAIL">
|
||||
<input type="submit" value="Subscribe" name="subscribe" id="mc-embedded-subscribe" class="button">
|
||||
</form>
|
||||
<p class='text-footer'>Follow me elsewhere:</p>
|
||||
<div class="social-heaven">
|
||||
<a class="hvr-pop" href="https://medium.com/@davisonio">
|
||||
<i title="Medium" class="fa fa-medium fa-2x"></i>
|
||||
</a>
|
||||
<a class="hvr-pop" href="https://github.com/davisonio">
|
||||
<i title="GitHub" class="fa fa-github fa-2x"></i>
|
||||
</a>
|
||||
<a class="hvr-pop" href="https://ello.co/davisonio">
|
||||
<i title="Ello" class="fa fa-circle fa-2x"></i>
|
||||
</a>
|
||||
<a class="hvr-pop" href="https://twitter.com/davisonio">
|
||||
<i title="Twitter" class="fa fa-twitter fa-2x"></i>
|
||||
</a>
|
||||
<a class="hvr-pop" href="https://www.snapchat.com/add/davisonio">
|
||||
<i title="Snapchat" class="fa fa-snapchat-ghost fa-2x"></i>
|
||||
</a>
|
||||
<a class="hvr-pop" href="https://www.instagram.com/craigdavisonio/">
|
||||
<i title="Instagram" class="fa fa-instagram fa-2x"></i>
|
||||
</a>
|
||||
<a class="hvr-pop" href="https://www.facebook.com/craigdavisonio">
|
||||
<i title="Facebook" class="fa fa-facebook fa-2x"></i>
|
||||
</a>
|
||||
<a class="hvr-pop" href="{{ site.baseurl }}/elsewhere/">
|
||||
<i title="Elsewhere" class="fa fa-ellipsis-h fa-2x"></i>
|
||||
</a>
|
||||
</div>
|
||||
</footer>
|
||||
|
||||
<script src="https://cdn.rawgit.com/mblode/burger/v2.0.2/dist/scripts/burger.min.js"></script>
|
||||
<script src="{{ site.baseurl}}/assets/js/google-analytics.js"></script>
|
||||
</body>
|
||||
|
||||
<!--
|
||||
Copyright © 2015+ Craig Davison
|
||||
License: https://github.com/davisonio/davison.io/blob/master/README.md#license--credits
|
||||
-->
|
||||
</html>
|
|
@ -1,16 +1,48 @@
|
|||
---
|
||||
layout: main
|
||||
layout: default
|
||||
current: page
|
||||
class: page-template
|
||||
disqus: false
|
||||
---
|
||||
|
||||
<article>
|
||||
<header>
|
||||
<h1>{{ page.title }}</h1>
|
||||
{% if page.subtitle %}
|
||||
<h2 class="sub-title">{{ page.subtitle }}</h2>
|
||||
{% endif %}
|
||||
<small>{{ page.description }}</small>
|
||||
</header>
|
||||
<div class="page-content">
|
||||
{{ content }}
|
||||
</div>
|
||||
</article>
|
||||
<!-- < default -->
|
||||
<!-- The tag above means: insert everything in this file
|
||||
into the {body} of the default.hbs template -->
|
||||
|
||||
<!-- The big featured header, it uses blog cover image as a BG if available -->
|
||||
<header class="site-header outer">
|
||||
<div class="inner">
|
||||
{% include site-nav.html %}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Everything inside the #post tags pulls data from the post -->
|
||||
<!-- #post -->
|
||||
|
||||
<main id="site-main" class="site-main outer" role="main">
|
||||
<div class="inner">
|
||||
|
||||
<article class="post-full {{ page.subclass }} {% unless page.cover %}no-image{% endunless %}">
|
||||
|
||||
<header class="post-full-header">
|
||||
<h1 class="post-full-title">{{ page.title }}</h1>
|
||||
</header>
|
||||
|
||||
{% if page.cover %}
|
||||
<figure class="post-full-image" style="background-image: url({{ site.baseurl }}{{ page.cover }})">
|
||||
</figure>
|
||||
{% endif %}
|
||||
|
||||
<section class="post-full-content">
|
||||
{{ content }}
|
||||
</section>
|
||||
|
||||
</article>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- /post -->
|
||||
|
||||
<!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs -->
|
||||
{% include page-scripts.html %}
|
||||
|
|
|
@ -0,0 +1,195 @@
|
|||
---
|
||||
layout: default
|
||||
current: post
|
||||
class: post-template
|
||||
disqus: false
|
||||
---
|
||||
|
||||
<!-- default -->
|
||||
|
||||
<!-- The tag above means: insert everything in this file
|
||||
into the {body} of the default.hbs template -->
|
||||
|
||||
<header class="site-header outer">
|
||||
<div class="inner">
|
||||
{% include site-nav.html %}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Everything inside the #post tags pulls data from the post -->
|
||||
<!-- #post -->
|
||||
|
||||
<main id="site-main" class="site-main outer" role="main">
|
||||
<div class="inner">
|
||||
|
||||
<article class="post-full {{ page.subclass }} {% unless page.cover %}no-image{% endunless %}">
|
||||
|
||||
<header class="post-full-header">
|
||||
<section class="post-full-meta">
|
||||
<time class="post-full-meta-date" datetime="{{ page.date | date:'%e %B %Y' }}">{{ page.date | date:'%e %B %Y' }}</time>
|
||||
{% if page.tags.size > 0 %}
|
||||
<span class="date-divider">/</span>
|
||||
{% for tag in page.tags %}
|
||||
{% if forloop.index == page.tags.size %}
|
||||
<a href='{{ site.baseurl }}tag/{{ tag | downcase | replace: ' ', '-' }}/'>{{ tag | upcase }}</a>
|
||||
{% else %}
|
||||
<a href='{{ site.baseurl }}tag/{{ tag | downcase | replace: ' ', '-' }}/'>{{ tag | upcase }}</a>,
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</section>
|
||||
<h1 class="post-full-title">{{ page.title }}</h1>
|
||||
</header>
|
||||
|
||||
{% if page.cover %}
|
||||
<figure class="post-full-image" style="background-image: url({{ site.baseurl }}{{ page.cover }})">
|
||||
</figure>
|
||||
{% endif %}
|
||||
|
||||
<section class="post-full-content">
|
||||
<div class="kg-card-markdown">
|
||||
{{ content }}
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<!-- Email subscribe form at the bottom of the page -->
|
||||
{% if site.subscribers %}
|
||||
<section class="subscribe-form">
|
||||
<h3 class="subscribe-form-title">Subscribe to {{ site.title }}</h3>
|
||||
<p>Get the latest posts delivered right to your inbox</p>
|
||||
{% include subscribe-form.html placeholder="youremail@example.com" %}
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
<footer class="post-full-footer">
|
||||
<!-- Everything inside the #author tags pulls data from the author -->
|
||||
<!-- #author-->
|
||||
{% for author in site.data.authors %}
|
||||
{% if author[1].username == page.author %}
|
||||
<section class="author-card">
|
||||
{% if author[1].picture %}
|
||||
<img class="author-profile-image" src="{{ site.baseurl }}{{ author[1].picture }}" alt="{{ page.author }}" />
|
||||
{% endif %}
|
||||
<section class="author-card-content">
|
||||
<h4 class="author-card-name"><a href="{{ site.baseurl }}author/{{ page.author }}">{{ author[1].name }}</a></h4>
|
||||
{% if author[1].bio %}
|
||||
<p>{{ author[1].bio }}</p>
|
||||
{% else %}
|
||||
<p>Read <a href="{{ site.baseurl }}author/{{ page.author }}">more posts</a> by this author.</p>
|
||||
{% endif %}
|
||||
</section>
|
||||
</section>
|
||||
<div class="post-full-footer-right">
|
||||
<a class="author-card-button" href="{{ site.baseurl }}author/{{ page.author }}">Read More</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<!-- /author -->
|
||||
</footer>
|
||||
|
||||
<!-- If you use Disqus comments, just uncomment this block.
|
||||
The only thing you need to change is "test-apkdzgmqhj" - which
|
||||
should be replaced with your own Disqus site-id. -->
|
||||
{% if site.disqus or page.disqus %}
|
||||
<section class="post-full-comments">
|
||||
<div id="disqus_thread"></div>
|
||||
<script>
|
||||
var disqus_config = function () {
|
||||
this.page.url = '{{ site.url }}{{ site.baseurl }}';
|
||||
this.page.identifier = '{{ site.title }}';
|
||||
};
|
||||
(function() {
|
||||
var d = document, s = d.createElement('script');
|
||||
s.src = 'https://{{ site.disqus_shortname }}.disqus.com/embed.js';
|
||||
s.setAttribute('data-timestamp', +new Date());
|
||||
(d.head || d.body).appendChild(s);
|
||||
})();
|
||||
</script>
|
||||
</section>
|
||||
{% endif %}
|
||||
|
||||
</article>
|
||||
|
||||
</div>
|
||||
</main>
|
||||
|
||||
<!-- Links to Previous/Next posts -->
|
||||
<aside class="read-next outer">
|
||||
<div class="inner">
|
||||
<div class="read-next-feed">
|
||||
{% if page.tags.size > 0 %}
|
||||
{% assign primary = page.tags | first %}
|
||||
{% assign related_posts = 0 %}
|
||||
{% for post in site.posts %}
|
||||
{% if post.tags.size > 0 %}
|
||||
{% if post.tags contains primary %}
|
||||
{% assign related_posts = related_posts | plus: 1 %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if related_posts > 1 %}
|
||||
<article class="read-next-card"
|
||||
{% if site.cover %}
|
||||
style="background-image: url({{ site.baseurl }}{{ site.cover }})"
|
||||
{% else %}
|
||||
{% if page.cover %}
|
||||
style="background-image: url(url({{ site.baseurl }}{{ page.cover }})"{% endif %}
|
||||
{% endif %}
|
||||
>
|
||||
<header class="read-next-card-header">
|
||||
<small class="read-next-card-header-sitetitle">— {{ site.title }} —</small>
|
||||
{% if primary %}
|
||||
<h3 class="read-next-card-header-title"><a href="{{ site.baseurl }}tag/{{ primary | downcase | replace: ' ', '-' }}/">{{ primary | capitalize }}</a></h3>
|
||||
{% endif %}
|
||||
</header>
|
||||
<div class="read-next-divider">{% include infinity.html %}</div>
|
||||
<div class="read-next-card-content">
|
||||
<ul>
|
||||
{% assign count = 0 %}
|
||||
{% for post in site.posts %}
|
||||
{% if post.tags contains primary %}
|
||||
{% if post.title != page.title %}
|
||||
{% assign count = count | plus: 1 %}
|
||||
{% if count <= 3 %}
|
||||
<li><a href="{{ site.baseurl }}{{ post.url | remove_first: '/' }}">{{ post.title }}</a></li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</div>
|
||||
<footer class="read-next-card-footer">
|
||||
<a href="{{ site.baseurl }}tag/{{ primary | downcase | replace: ' ', '-' }}/">
|
||||
{% if related_posts > 1 %}
|
||||
See all {{ related_posts | minus: 1 }} posts →
|
||||
{% elsif related_posts == 1 %}
|
||||
{{ related_posts }} post →
|
||||
{% else %}
|
||||
No posts.
|
||||
{% endif %}
|
||||
</a>
|
||||
</footer>
|
||||
</article>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
<!-- If there's a next post, display it using the same markup included from - partials/post-card.hbs -->
|
||||
{% if page.next %}
|
||||
{% include post-card-next.html %}
|
||||
{% endif %}
|
||||
|
||||
<!-- If there's a previous post, display it using the same markup included from - partials/post-card.hbs -->
|
||||
{% if page.previous %}
|
||||
{% include post-card-previous.html %}
|
||||
{% endif %}
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</aside>
|
||||
|
||||
<!-- Floating header which appears on-scroll, included from includes/floating-header.hbs -->
|
||||
{% include floating-header.html %}
|
||||
|
||||
<!-- /post -->
|
||||
|
||||
<!-- The #contentFor helper here will send everything inside it up to the matching #block helper found in default.hbs -->
|
|
@ -0,0 +1,42 @@
|
|||
---
|
||||
layout: default
|
||||
current: tag
|
||||
title: Tag Page
|
||||
cover: false
|
||||
class: 'tag-template'
|
||||
navigation: True
|
||||
logo: 'assets/images/ghost.png'
|
||||
---
|
||||
|
||||
<!-- default -->
|
||||
<!-- The tag above means - insert everything in this file into the {body} of the default.hbs template -->
|
||||
|
||||
<!-- The big featured header, it uses blog cover image as a BG if available -->
|
||||
<!-- #tag -->
|
||||
{% include dynamic_tag_info.html %}
|
||||
<header class="site-header outer {% if cover or page.cover %}" style="background-image: url({{ site.baseurl }}{% if cover %}{{ cover }}{% else %}{{ page.cover }}{% endif%}) {% else %}no-cover{% endif %}">
|
||||
<div class="inner">
|
||||
{% include site-nav.html %}
|
||||
<div class="site-header-content">
|
||||
<h1 class="site-title">{{ page.tag | capitalizeall }}</h1>
|
||||
<h2 class="site-description">
|
||||
{% if tag_description %}
|
||||
{{ tag_description }}
|
||||
{% elsif page.tag %}
|
||||
A collection of {{ paginator.total_posts }} posts
|
||||
{% endif %}
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
<!-- tag -->
|
||||
|
||||
<!-- The main content area -->
|
||||
<main id="site-main" class="site-main outer" role="main">
|
||||
<div class="inner">
|
||||
<div class="post-feed">
|
||||
<!-- The tag below includes the markup for each post - partials/post-card.hbs -->
|
||||
{% include post-card.html %}
|
||||
</div>
|
||||
</div>
|
||||
</main>
|
|
@ -1,17 +0,0 @@
|
|||
---
|
||||
layout: page
|
||||
title: Sent
|
||||
permalink: /contact/sent/
|
||||
sitemap: false
|
||||
---
|
||||
|
||||
<style>
|
||||
.content header {
|
||||
background-image: url({{ site.baseurl }}/assets/img/drone-by-clem-onojeghuo.jpg);
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-repeat:no-repeat;
|
||||
}
|
||||
</style>
|
||||
|
||||
<p class='largetype'>Thanks, email sent!</p>
|
|
@ -0,0 +1,17 @@
|
|||
---
|
||||
layout: page
|
||||
current: about
|
||||
title: About
|
||||
navigation: true
|
||||
logo: 'assets/images/ghost.png'
|
||||
class: page-template
|
||||
subclass: 'post page'
|
||||
---
|
||||
|
||||
Ghost is professional publishing platform designed for modern journalism. This is a demo site of a basic Ghost install to give you a general sense of what a new Ghost site looks like when set up for the first time.
|
||||
|
||||
> If you'd like to set up a site like this for yourself, head over to [Ghost.org](https://ghost.org/) and start a free 14 day trial to give Ghost a try!
|
||||
|
||||
If you're a developer: Ghost is a completely open source (MIT) Node.js application built on a JSON API with an Ember.js admin client. It works with MySQL and SQLite, and is publicly available [on Github](https://github.com/TryGhost/ghost).
|
||||
|
||||
If you need help with using Ghost, you'll find a ton of useful articles on [our knowledgebase](https://help.ghost.org/), as well as extensive [developer documentation](https://docs.ghost.org/).
|
|
@ -0,0 +1,76 @@
|
|||
module Jekyll
|
||||
|
||||
class AuthorsGenerator < Generator
|
||||
|
||||
safe true
|
||||
|
||||
def generate(site)
|
||||
site.data['authors'].each do |author, data|
|
||||
posts = [author, posts_by_author(site, author)]
|
||||
build_subpages(site, 'author', posts)
|
||||
end
|
||||
end
|
||||
|
||||
def build_subpages(site, type, posts)
|
||||
posts[1] = posts[1].sort_by { |p| -p.date.to_f }
|
||||
atomize(site, type, posts)
|
||||
paginate(site, type, posts)
|
||||
end
|
||||
|
||||
def atomize(site, type, posts)
|
||||
path = "/author/#{posts[0]}"
|
||||
atom = AtomPageAuthor.new(site, site.source, path, type, posts[0], posts[1])
|
||||
site.pages << atom
|
||||
end
|
||||
|
||||
def paginate(site, type, posts)
|
||||
pages = Jekyll::Paginate::Pager.calculate_pages(posts[1], site.config['paginate'].to_i)
|
||||
(1..pages).each do |num_page|
|
||||
pager = Jekyll::Paginate::Pager.new(site, num_page, posts[1], pages)
|
||||
path = "/author/#{posts[0]}"
|
||||
if num_page > 1
|
||||
path = path + "/page#{num_page}"
|
||||
end
|
||||
newpage = GroupSubPageAuthor.new(site, site.source, path, type, posts[0])
|
||||
newpage.pager = pager
|
||||
site.pages << newpage
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def posts_by_author(site, author)
|
||||
site.posts.docs.select { |post| post.data['author'] == author }
|
||||
end
|
||||
end
|
||||
|
||||
class GroupSubPageAuthor < Page
|
||||
def initialize(site, base, dir, type, val)
|
||||
@site = site
|
||||
@base = base
|
||||
@dir = dir
|
||||
@name = 'index.html'
|
||||
|
||||
self.process(@name)
|
||||
self.read_yaml(File.join(base, '_layouts'), "author.html")
|
||||
self.data["grouptype"] = type
|
||||
self.data[type] = val
|
||||
end
|
||||
end
|
||||
|
||||
class AtomPageAuthor < Page
|
||||
def initialize(site, base, dir, type, val, posts)
|
||||
@site = site
|
||||
@base = base
|
||||
@dir = dir
|
||||
@name = 'feed.xml'
|
||||
|
||||
self.process(@name)
|
||||
self.read_yaml(File.join(base, '_layouts'), "feed.xml")
|
||||
self.data[type] = val
|
||||
self.data["grouptype"] = type
|
||||
self.data["posts"] = posts[0..9]
|
||||
end
|
||||
end
|
||||
end
|
|
@ -0,0 +1,11 @@
|
|||
require 'liquid'
|
||||
require 'uri'
|
||||
|
||||
# Capitalize all words of the input
|
||||
module CapitalizeAll
|
||||
def capitalizeall(words)
|
||||
return words.split(' ').map(&:capitalize).join(' ')
|
||||
end
|
||||
end
|
||||
|
||||
Liquid::Template.register_filter(CapitalizeAll)
|
|
@ -0,0 +1,69 @@
|
|||
module Jekyll
|
||||
|
||||
class TagsGenerator < Generator
|
||||
|
||||
safe true
|
||||
|
||||
def generate(site)
|
||||
site.tags.each do |tag|
|
||||
build_subpages(site, "tag", tag)
|
||||
end
|
||||
end
|
||||
|
||||
def build_subpages(site, type, posts)
|
||||
posts[1] = posts[1].sort_by { |p| -p.date.to_f }
|
||||
atomize(site, type, posts)
|
||||
paginate(site, type, posts)
|
||||
end
|
||||
|
||||
def atomize(site, type, posts)
|
||||
path = "/tag/#{posts[0]}".gsub(' ', '-').downcase
|
||||
atom = AtomPageTags.new(site, site.source, path, type, posts[0], posts[1])
|
||||
site.pages << atom
|
||||
end
|
||||
|
||||
def paginate(site, type, posts)
|
||||
pages = Jekyll::Paginate::Pager.calculate_pages(posts[1], site.config['paginate'].to_i)
|
||||
(1..pages).each do |num_page|
|
||||
pager = Jekyll::Paginate::Pager.new(site, num_page, posts[1], pages)
|
||||
path = "/tag/#{posts[0]}".gsub(' ', '-').downcase
|
||||
if num_page > 1
|
||||
path = path + "/page#{num_page}"
|
||||
end
|
||||
newpage = GroupSubPageTags.new(site, site.source, path, type, posts[0])
|
||||
newpage.pager = pager
|
||||
site.pages << newpage
|
||||
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
class GroupSubPageTags < Page
|
||||
def initialize(site, base, dir, type, val)
|
||||
@site = site
|
||||
@base = base
|
||||
@dir = dir
|
||||
@name = 'index.html'
|
||||
|
||||
self.process(@name)
|
||||
self.read_yaml(File.join(base, '_layouts'), "tag.html")
|
||||
self.data["grouptype"] = type
|
||||
self.data[type] = val
|
||||
end
|
||||
end
|
||||
|
||||
class AtomPageTags < Page
|
||||
def initialize(site, base, dir, type, val, posts)
|
||||
@site = site
|
||||
@base = base
|
||||
@dir = dir
|
||||
@name = 'feed.xml'
|
||||
|
||||
self.process(@name)
|
||||
self.read_yaml(File.join(base, '_layouts'), "feed.xml")
|
||||
self.data[type] = val
|
||||
self.data["grouptype"] = type
|
||||
self.data["posts"] = posts[0..9]
|
||||
end
|
||||
end
|
||||
end
|
1371
assets/css/amsf.css
|
@ -0,0 +1,17 @@
|
|||
.social-link {
|
||||
font-size: 25px;
|
||||
}
|
||||
|
||||
.social-link:hover {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.site-title {
|
||||
font-size: 6.5rem;
|
||||
}
|
||||
|
||||
@media (max-width: 700px) {
|
||||
.site-nav-right {
|
||||
display: inherit;
|
||||
}
|
||||
}
|
|
@ -1,7 +0,0 @@
|
|||
body {
|
||||
box-sizing: border-box;
|
||||
min-width: 200px;
|
||||
max-width: 980px;
|
||||
margin: 0 auto;
|
||||
padding: 45px;
|
||||
}
|
|
@ -1,656 +0,0 @@
|
|||
@font-face {
|
||||
font-family: octicons-link;
|
||||
src: url(data:font/woff;charset=utf-8;base64,d09GRgABAAAAAAZwABAAAAAACFQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEU0lHAAAGaAAAAAgAAAAIAAAAAUdTVUIAAAZcAAAACgAAAAoAAQAAT1MvMgAAAyQAAABJAAAAYFYEU3RjbWFwAAADcAAAAEUAAACAAJThvmN2dCAAAATkAAAABAAAAAQAAAAAZnBnbQAAA7gAAACyAAABCUM+8IhnYXNwAAAGTAAAABAAAAAQABoAI2dseWYAAAFsAAABPAAAAZwcEq9taGVhZAAAAsgAAAA0AAAANgh4a91oaGVhAAADCAAAABoAAAAkCA8DRGhtdHgAAAL8AAAADAAAAAwGAACfbG9jYQAAAsAAAAAIAAAACABiATBtYXhwAAACqAAAABgAAAAgAA8ASm5hbWUAAAToAAABQgAAAlXu73sOcG9zdAAABiwAAAAeAAAAME3QpOBwcmVwAAAEbAAAAHYAAAB/aFGpk3jaTY6xa8JAGMW/O62BDi0tJLYQincXEypYIiGJjSgHniQ6umTsUEyLm5BV6NDBP8Tpts6F0v+k/0an2i+itHDw3v2+9+DBKTzsJNnWJNTgHEy4BgG3EMI9DCEDOGEXzDADU5hBKMIgNPZqoD3SilVaXZCER3/I7AtxEJLtzzuZfI+VVkprxTlXShWKb3TBecG11rwoNlmmn1P2WYcJczl32etSpKnziC7lQyWe1smVPy/Lt7Kc+0vWY/gAgIIEqAN9we0pwKXreiMasxvabDQMM4riO+qxM2ogwDGOZTXxwxDiycQIcoYFBLj5K3EIaSctAq2kTYiw+ymhce7vwM9jSqO8JyVd5RH9gyTt2+J/yUmYlIR0s04n6+7Vm1ozezUeLEaUjhaDSuXHwVRgvLJn1tQ7xiuVv/ocTRF42mNgZGBgYGbwZOBiAAFGJBIMAAizAFoAAABiAGIAznjaY2BkYGAA4in8zwXi+W2+MjCzMIDApSwvXzC97Z4Ig8N/BxYGZgcgl52BCSQKAA3jCV8CAABfAAAAAAQAAEB42mNgZGBg4f3vACQZQABIMjKgAmYAKEgBXgAAeNpjYGY6wTiBgZWBg2kmUxoDA4MPhGZMYzBi1AHygVLYQUCaawqDA4PChxhmh/8ODDEsvAwHgMKMIDnGL0x7gJQCAwMAJd4MFwAAAHjaY2BgYGaA4DAGRgYQkAHyGMF8NgYrIM3JIAGVYYDT+AEjAwuDFpBmA9KMDEwMCh9i/v8H8sH0/4dQc1iAmAkALaUKLgAAAHjaTY9LDsIgEIbtgqHUPpDi3gPoBVyRTmTddOmqTXThEXqrob2gQ1FjwpDvfwCBdmdXC5AVKFu3e5MfNFJ29KTQT48Ob9/lqYwOGZxeUelN2U2R6+cArgtCJpauW7UQBqnFkUsjAY/kOU1cP+DAgvxwn1chZDwUbd6CFimGXwzwF6tPbFIcjEl+vvmM/byA48e6tWrKArm4ZJlCbdsrxksL1AwWn/yBSJKpYbq8AXaaTb8AAHja28jAwOC00ZrBeQNDQOWO//sdBBgYGRiYWYAEELEwMTE4uzo5Zzo5b2BxdnFOcALxNjA6b2ByTswC8jYwg0VlNuoCTWAMqNzMzsoK1rEhNqByEyerg5PMJlYuVueETKcd/89uBpnpvIEVomeHLoMsAAe1Id4AAAAAAAB42oWQT07CQBTGv0JBhagk7HQzKxca2sJCE1hDt4QF+9JOS0nbaaYDCQfwCJ7Au3AHj+LO13FMmm6cl7785vven0kBjHCBhfpYuNa5Ph1c0e2Xu3jEvWG7UdPDLZ4N92nOm+EBXuAbHmIMSRMs+4aUEd4Nd3CHD8NdvOLTsA2GL8M9PODbcL+hD7C1xoaHeLJSEao0FEW14ckxC+TU8TxvsY6X0eLPmRhry2WVioLpkrbp84LLQPGI7c6sOiUzpWIWS5GzlSgUzzLBSikOPFTOXqly7rqx0Z1Q5BAIoZBSFihQYQOOBEdkCOgXTOHA07HAGjGWiIjaPZNW13/+lm6S9FT7rLHFJ6fQbkATOG1j2OFMucKJJsxIVfQORl+9Jyda6Sl1dUYhSCm1dyClfoeDve4qMYdLEbfqHf3O/AdDumsjAAB42mNgYoAAZQYjBmyAGYQZmdhL8zLdDEydARfoAqIAAAABAAMABwAKABMAB///AA8AAQAAAAAAAAAAAAAAAAABAAAAAA==) format('woff');
|
||||
}
|
||||
|
||||
.markdown-body {
|
||||
-webkit-text-size-adjust: 100%;
|
||||
text-size-adjust: 100%;
|
||||
color: #333;
|
||||
font-family: "Helvetica Neue", Helvetica, "Segoe UI", Arial, freesans, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
font-size: 16px;
|
||||
line-height: 1.6;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
background-color: transparent;
|
||||
}
|
||||
|
||||
.markdown-body a:active,
|
||||
.markdown-body a:hover {
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
.markdown-body strong {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
font-size: 2em;
|
||||
margin: 0.67em 0;
|
||||
}
|
||||
|
||||
.markdown-body img {
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.markdown-body hr {
|
||||
box-sizing: content-box;
|
||||
height: 0;
|
||||
}
|
||||
|
||||
.markdown-body pre {
|
||||
overflow: auto;
|
||||
}
|
||||
|
||||
.markdown-body code,
|
||||
.markdown-body kbd,
|
||||
.markdown-body pre {
|
||||
font-family: monospace, monospace;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.markdown-body input {
|
||||
color: inherit;
|
||||
font: inherit;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown-body html input[disabled] {
|
||||
cursor: default;
|
||||
}
|
||||
|
||||
.markdown-body input {
|
||||
line-height: normal;
|
||||
}
|
||||
|
||||
.markdown-body input[type="checkbox"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.markdown-body table {
|
||||
border-collapse: collapse;
|
||||
border-spacing: 0;
|
||||
}
|
||||
|
||||
.markdown-body td,
|
||||
.markdown-body th {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.markdown-body * {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
.markdown-body input {
|
||||
font: 13px / 1.4 Helvetica, arial, nimbussansl, liberationsans, freesans, clean, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
|
||||
}
|
||||
|
||||
.markdown-body a {
|
||||
color: #4078c0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.markdown-body a:hover,
|
||||
.markdown-body a:active {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.markdown-body hr {
|
||||
height: 0;
|
||||
margin: 15px 0;
|
||||
overflow: hidden;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.markdown-body hr:before {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.markdown-body hr:after {
|
||||
display: table;
|
||||
clear: both;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.markdown-body h1,
|
||||
.markdown-body h2,
|
||||
.markdown-body h3,
|
||||
.markdown-body h4,
|
||||
.markdown-body h5,
|
||||
.markdown-body h6 {
|
||||
margin-top: 15px;
|
||||
margin-bottom: 15px;
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
font-size: 30px;
|
||||
}
|
||||
|
||||
.markdown-body h2 {
|
||||
font-size: 21px;
|
||||
}
|
||||
|
||||
.markdown-body h3 {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.markdown-body h4 {
|
||||
font-size: 14px;
|
||||
}
|
||||
|
||||
.markdown-body h5 {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown-body h6 {
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
.markdown-body blockquote {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.markdown-body ul,
|
||||
.markdown-body ol {
|
||||
padding: 0;
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.markdown-body ol ol,
|
||||
.markdown-body ul ol {
|
||||
list-style-type: lower-roman;
|
||||
}
|
||||
|
||||
.markdown-body ul ul ol,
|
||||
.markdown-body ul ol ol,
|
||||
.markdown-body ol ul ol,
|
||||
.markdown-body ol ol ol {
|
||||
list-style-type: lower-alpha;
|
||||
}
|
||||
|
||||
.markdown-body dd {
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
.markdown-body code {
|
||||
font-family: Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
.markdown-body pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
font: 12px Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
}
|
||||
|
||||
.markdown-body .select::-ms-expand {
|
||||
opacity: 0;
|
||||
}
|
||||
|
||||
.markdown-body .octicon {
|
||||
font: normal normal normal 16px/1 octicons-link;
|
||||
display: inline-block;
|
||||
text-decoration: none;
|
||||
text-rendering: auto;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-user-select: none;
|
||||
-moz-user-select: none;
|
||||
-ms-user-select: none;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.markdown-body .octicon-link:before {
|
||||
content: '\f05c';
|
||||
}
|
||||
|
||||
.markdown-body:before {
|
||||
display: table;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.markdown-body:after {
|
||||
display: table;
|
||||
clear: both;
|
||||
content: "";
|
||||
}
|
||||
|
||||
.markdown-body>*:first-child {
|
||||
margin-top: 0 !important;
|
||||
}
|
||||
|
||||
.markdown-body>*:last-child {
|
||||
margin-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.markdown-body a:not([href]) {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.markdown-body .anchor {
|
||||
display: inline-block;
|
||||
padding-right: 2px;
|
||||
margin-left: -18px;
|
||||
}
|
||||
|
||||
.markdown-body .anchor:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.markdown-body h1,
|
||||
.markdown-body h2,
|
||||
.markdown-body h3,
|
||||
.markdown-body h4,
|
||||
.markdown-body h5,
|
||||
.markdown-body h6 {
|
||||
margin-top: 1em;
|
||||
margin-bottom: 16px;
|
||||
font-weight: bold;
|
||||
line-height: 1.4;
|
||||
}
|
||||
|
||||
.markdown-body h1 .octicon-link,
|
||||
.markdown-body h2 .octicon-link,
|
||||
.markdown-body h3 .octicon-link,
|
||||
.markdown-body h4 .octicon-link,
|
||||
.markdown-body h5 .octicon-link,
|
||||
.markdown-body h6 .octicon-link {
|
||||
color: #000;
|
||||
vertical-align: middle;
|
||||
visibility: hidden;
|
||||
}
|
||||
|
||||
.markdown-body h1:hover .anchor,
|
||||
.markdown-body h2:hover .anchor,
|
||||
.markdown-body h3:hover .anchor,
|
||||
.markdown-body h4:hover .anchor,
|
||||
.markdown-body h5:hover .anchor,
|
||||
.markdown-body h6:hover .anchor {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.markdown-body h1:hover .anchor .octicon-link,
|
||||
.markdown-body h2:hover .anchor .octicon-link,
|
||||
.markdown-body h3:hover .anchor .octicon-link,
|
||||
.markdown-body h4:hover .anchor .octicon-link,
|
||||
.markdown-body h5:hover .anchor .octicon-link,
|
||||
.markdown-body h6:hover .anchor .octicon-link {
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.markdown-body h1 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 2.25em;
|
||||
line-height: 1.2;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.markdown-body h1 .anchor {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.markdown-body h2 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 1.75em;
|
||||
line-height: 1.225;
|
||||
border-bottom: 1px solid #eee;
|
||||
}
|
||||
|
||||
.markdown-body h2 .anchor {
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
.markdown-body h3 {
|
||||
font-size: 1.5em;
|
||||
line-height: 1.43;
|
||||
}
|
||||
|
||||
.markdown-body h3 .anchor {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.markdown-body h4 {
|
||||
font-size: 1.25em;
|
||||
}
|
||||
|
||||
.markdown-body h4 .anchor {
|
||||
line-height: 1.2;
|
||||
}
|
||||
|
||||
.markdown-body h5 {
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
.markdown-body h5 .anchor {
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.markdown-body h6 {
|
||||
font-size: 1em;
|
||||
color: #777;
|
||||
}
|
||||
|
||||
.markdown-body h6 .anchor {
|
||||
line-height: 1.1;
|
||||
}
|
||||
|
||||
.markdown-body p,
|
||||
.markdown-body blockquote,
|
||||
.markdown-body ul,
|
||||
.markdown-body ol,
|
||||
.markdown-body dl,
|
||||
.markdown-body table,
|
||||
.markdown-body pre {
|
||||
margin-top: 0;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.markdown-body hr {
|
||||
height: 4px;
|
||||
padding: 0;
|
||||
margin: 16px 0;
|
||||
background-color: #e7e7e7;
|
||||
border: 0 none;
|
||||
}
|
||||
|
||||
.markdown-body ul,
|
||||
.markdown-body ol {
|
||||
padding-left: 2em;
|
||||
}
|
||||
|
||||
.markdown-body ul ul,
|
||||
.markdown-body ul ol,
|
||||
.markdown-body ol ol,
|
||||
.markdown-body ol ul {
|
||||
margin-top: 0;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.markdown-body li>p {
|
||||
margin-top: 16px;
|
||||
}
|
||||
|
||||
.markdown-body dl {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.markdown-body dl dt {
|
||||
padding: 0;
|
||||
margin-top: 16px;
|
||||
font-size: 1em;
|
||||
font-style: italic;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.markdown-body dl dd {
|
||||
padding: 0 16px;
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.markdown-body blockquote {
|
||||
padding: 0 15px;
|
||||
color: #777;
|
||||
border-left: 4px solid #ddd;
|
||||
}
|
||||
|
||||
.markdown-body blockquote>:first-child {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.markdown-body blockquote>:last-child {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.markdown-body table {
|
||||
display: block;
|
||||
width: 100%;
|
||||
overflow: auto;
|
||||
word-break: normal;
|
||||
word-break: keep-all;
|
||||
}
|
||||
|
||||
.markdown-body table th {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.markdown-body table th,
|
||||
.markdown-body table td {
|
||||
padding: 6px 13px;
|
||||
border: 1px solid #ddd;
|
||||
}
|
||||
|
||||
.markdown-body table tr {
|
||||
background-color: #fff;
|
||||
border-top: 1px solid #ccc;
|
||||
}
|
||||
|
||||
.markdown-body table tr:nth-child(2n) {
|
||||
background-color: #f8f8f8;
|
||||
}
|
||||
|
||||
.markdown-body img {
|
||||
max-width: 100%;
|
||||
box-sizing: content-box;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
.markdown-body 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;
|
||||
}
|
||||
|
||||
.markdown-body code:before,
|
||||
.markdown-body code:after {
|
||||
letter-spacing: -0.2em;
|
||||
content: "\00a0";
|
||||
}
|
||||
|
||||
.markdown-body pre>code {
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
font-size: 100%;
|
||||
word-break: normal;
|
||||
white-space: pre;
|
||||
background: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.markdown-body .highlight {
|
||||
margin-bottom: 16px;
|
||||
}
|
||||
|
||||
.markdown-body .highlight pre,
|
||||
.markdown-body pre {
|
||||
padding: 16px;
|
||||
overflow: auto;
|
||||
font-size: 85%;
|
||||
line-height: 1.45;
|
||||
background-color: #f7f7f7;
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.markdown-body .highlight pre {
|
||||
margin-bottom: 0;
|
||||
word-break: normal;
|
||||
}
|
||||
|
||||
.markdown-body pre {
|
||||
word-wrap: normal;
|
||||
}
|
||||
|
||||
.markdown-body pre code {
|
||||
display: inline;
|
||||
max-width: initial;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
overflow: initial;
|
||||
line-height: inherit;
|
||||
word-wrap: normal;
|
||||
background-color: transparent;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.markdown-body pre code:before,
|
||||
.markdown-body pre code:after {
|
||||
content: normal;
|
||||
}
|
||||
|
||||
.markdown-body kbd {
|
||||
display: inline-block;
|
||||
padding: 3px 5px;
|
||||
font-size: 11px;
|
||||
line-height: 10px;
|
||||
color: #555;
|
||||
vertical-align: middle;
|
||||
background-color: #fcfcfc;
|
||||
border: solid 1px #ccc;
|
||||
border-bottom-color: #bbb;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0 #bbb;
|
||||
}
|
||||
|
||||
.markdown-body .pl-c {
|
||||
color: #969896;
|
||||
}
|
||||
|
||||
.markdown-body .pl-c1,
|
||||
.markdown-body .pl-s .pl-v {
|
||||
color: #0086b3;
|
||||
}
|
||||
|
||||
.markdown-body .pl-e,
|
||||
.markdown-body .pl-en {
|
||||
color: #795da3;
|
||||
}
|
||||
|
||||
.markdown-body .pl-s .pl-s1,
|
||||
.markdown-body .pl-smi {
|
||||
color: #333;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ent {
|
||||
color: #63a35c;
|
||||
}
|
||||
|
||||
.markdown-body .pl-k {
|
||||
color: #a71d5d;
|
||||
}
|
||||
|
||||
.markdown-body .pl-pds,
|
||||
.markdown-body .pl-s,
|
||||
.markdown-body .pl-s .pl-pse .pl-s1,
|
||||
.markdown-body .pl-sr,
|
||||
.markdown-body .pl-sr .pl-cce,
|
||||
.markdown-body .pl-sr .pl-sra,
|
||||
.markdown-body .pl-sr .pl-sre {
|
||||
color: #183691;
|
||||
}
|
||||
|
||||
.markdown-body .pl-v {
|
||||
color: #ed6a43;
|
||||
}
|
||||
|
||||
.markdown-body .pl-id {
|
||||
color: #b52a1d;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ii {
|
||||
background-color: #b52a1d;
|
||||
color: #f8f8f8;
|
||||
}
|
||||
|
||||
.markdown-body .pl-sr .pl-cce {
|
||||
color: #63a35c;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.markdown-body .pl-ml {
|
||||
color: #693a17;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mh,
|
||||
.markdown-body .pl-mh .pl-en,
|
||||
.markdown-body .pl-ms {
|
||||
color: #1d3e81;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mq {
|
||||
color: #008080;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mi {
|
||||
color: #333;
|
||||
font-style: italic;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mb {
|
||||
color: #333;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.markdown-body .pl-md {
|
||||
background-color: #ffecec;
|
||||
color: #bd2c00;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mi1 {
|
||||
background-color: #eaffea;
|
||||
color: #55a532;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mdr {
|
||||
color: #795da3;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.markdown-body .pl-mo {
|
||||
color: #1d3e81;
|
||||
}
|
||||
|
||||
.markdown-body kbd {
|
||||
display: inline-block;
|
||||
padding: 3px 5px;
|
||||
font: 11px Consolas, "Liberation Mono", Menlo, Courier, monospace;
|
||||
line-height: 10px;
|
||||
color: #555;
|
||||
vertical-align: middle;
|
||||
background-color: #fcfcfc;
|
||||
border: solid 1px #ccc;
|
||||
border-bottom-color: #bbb;
|
||||
border-radius: 3px;
|
||||
box-shadow: inset 0 -1px 0 #bbb;
|
||||
}
|
||||
|
||||
.markdown-body .task-list-item {
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
.markdown-body .task-list-item+.task-list-item {
|
||||
margin-top: 3px;
|
||||
}
|
||||
|
||||
.markdown-body .task-list-item input {
|
||||
margin: 0 0.35em 0.25em -1.6em;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.markdown-body :checked+.radio-label {
|
||||
z-index: 1;
|
||||
position: relative;
|
||||
border-color: #4078c0;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
a,abbr,acronym,address,applet,article,aside,audio,big,blockquote,body,canvas,caption,cite,code,dd,del,details,dfn,div,dl,dt,em,embed,fieldset,figcaption,figure,footer,form,h1,h2,h3,h4,h5,h6,header,hgroup,html,iframe,img,ins,kbd,label,legend,li,mark,menu,nav,object,ol,output,p,pre,q,ruby,s,samp,section,small,span,strike,strong,sub,summary,sup,table,tbody,td,tfoot,th,thead,time,tr,tt,ul,var,video{margin:0;padding:0;border:0;font:inherit;font-size:100%;vertical-align:baseline}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}img{max-width:100%}html{box-sizing:border-box;font-family:sans-serif;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}*,:after,:before{box-sizing:inherit}a{background-color:transparent}a:active,a:hover{outline:0}b,strong{font-weight:700}dfn,em,i{font-style:italic}h1{margin:.67em 0;font-size:2em}small{font-size:80%}sub,sup{position:relative;font-size:75%;line-height:0;vertical-align:baseline}sup{top:-.5em}sub{bottom:-.25em}img{border:0}svg:not(:root){overflow:hidden}mark{background-color:#fdffb6}code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}button,input,optgroup,select,textarea{margin:0;color:inherit;font:inherit}button{overflow:visible;border:none}button,select{text-transform:none}button,html input[type=button],input[type=reset],input[type=submit]{cursor:pointer;-webkit-appearance:button}button[disabled],html input[disabled]{cursor:default}button::-moz-focus-inner,input::-moz-focus-inner{padding:0;border:0}input{line-height:normal}input:focus{outline:none}input[type=checkbox],input[type=radio]{box-sizing:border-box;padding:0}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{height:auto}input[type=search]{box-sizing:content-box;-webkit-appearance:textfield}input[type=search]::-webkit-search-cancel-button,input[type=search]::-webkit-search-decoration{-webkit-appearance:none}legend{padding:0;border:0}textarea{overflow:auto}table{border-spacing:0;border-collapse:collapse}td,th{padding:0}html{overflow-y:scroll;font-size:62.5%;-webkit-tap-highlight-color:rgba(0,0,0,0)}body,html{overflow-x:hidden}body{color:#3c484e;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Open Sans,Helvetica Neue,sans-serif;font-size:1.5rem;line-height:1.6em;font-weight:400;font-style:normal;letter-spacing:0;text-rendering:optimizeLegibility;background:#fff;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;-moz-font-feature-settings:"liga" on}::selection{text-shadow:none;background:#cbeafb}hr{position:relative;display:block;width:100%;margin:2.5em 0 3.5em;padding:0;height:1px;border:0;border-top:1px solid #e3e9ed}audio,canvas,iframe,img,svg,video{vertical-align:middle}fieldset{margin:0;padding:0;border:0}textarea{resize:vertical}blockquote,dl,ol,p,ul{margin:0 0 1.5em}ol,ul{padding-left:1.3em;padding-right:1.5em}ol ol,ol ul,ul ol,ul ul{margin:.5em 0 1em}ul{list-style:disc}ol{list-style:decimal}li{margin:.5em 0;padding-left:.3em;line-height:1.6em}dt{float:left;margin:0 20px 0 0;width:120px;color:#15171a;font-weight:500;text-align:right}dd{margin:0 0 5px;text-align:left}blockquote{margin:1.5em 0;padding:0 1.6em;border-left:.5em solid #e5eff5}blockquote p{margin:.8em 0;font-size:1.2em;font-weight:300}blockquote small{display:inline-block;margin:.8em 0 .8em 1.5em;font-size:.9em;opacity:.8}blockquote small:before{content:"\2014 \00A0"}blockquote cite{font-weight:700}blockquote cite a{font-weight:400}a{color:#26a8ed;text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4,h5,h6{margin-top:0;line-height:1.15;font-weight:700;text-rendering:optimizeLegibility}h1{margin:0 0 .5em;font-size:5rem;font-weight:700}@media (max-width:500px){h1{font-size:2.2rem}}h2{margin:1.5em 0 .5em;font-size:2rem}@media (max-width:500px){h2{font-size:1.8rem}}h3{margin:1.5em 0 .5em;font-size:1.8rem;font-weight:500}@media (max-width:500px){h3{font-size:1.7rem}}h4{margin:1.5em 0 .5em;font-size:1.6rem;font-weight:500}h5,h6{margin:1.5em 0 .5em;font-size:1.4rem;font-weight:500}@media (-ms-high-contrast:active),(-ms-high-contrast:none){blockquote,ol,p,ul{width:100%}}
|
|
@ -1,172 +0,0 @@
|
|||
/* */
|
||||
/* Global */
|
||||
/* */
|
||||
|
||||
/* Override font to use Bootstrap defaults */
|
||||
body {
|
||||
font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
}
|
||||
|
||||
/* Make iframes and badges the right size */
|
||||
.content iframe .iframe-badge {
|
||||
display: inline-block;
|
||||
margin: initial;
|
||||
}
|
||||
.content img[src^="https://img.shields.io/badge/"] {
|
||||
display: block;
|
||||
margin: initial;
|
||||
width: inherit;
|
||||
}
|
||||
|
||||
/* Not too much spacing */
|
||||
p {
|
||||
margin-top: 0.5rem;
|
||||
margin-bottom: 0.5rem;
|
||||
}
|
||||
|
||||
/* Helper */
|
||||
.center {
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Mobile device changes */
|
||||
.page-title {
|
||||
margin-top: 4rem;
|
||||
}
|
||||
|
||||
/* Footer */
|
||||
.footer {
|
||||
/* Remove edgy lowercasing */
|
||||
text-transform: none;
|
||||
padding-bottom: 5vmin;
|
||||
}
|
||||
.footer ul {
|
||||
font-weight: bold;
|
||||
margin-bottom: 40px;
|
||||
}
|
||||
.text-footer {
|
||||
margin-top: 1rem;
|
||||
margin-bottom: 0.7rem;
|
||||
}
|
||||
.footer .social-heaven {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* Main Content Block */
|
||||
.content {
|
||||
margin-bottom: 4vw;
|
||||
}
|
||||
|
||||
.page-content {
|
||||
margin-top: 4vw;
|
||||
}
|
||||
|
||||
.content header {
|
||||
margin-bottom: 0;
|
||||
padding-bottom: 10vw;
|
||||
}
|
||||
|
||||
.content h1 {
|
||||
margin-top: 4vmin;
|
||||
}
|
||||
|
||||
.content .sub-title {
|
||||
margin-top: 2vmin;
|
||||
}
|
||||
|
||||
/* */
|
||||
/* Page: Home */
|
||||
/* */
|
||||
|
||||
/* Social Heaven */
|
||||
.social-heaven {
|
||||
margin-top: 8vmin;
|
||||
margin-left: -0.5rem;
|
||||
}
|
||||
|
||||
.social-heaven .fa-end {
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
}
|
||||
|
||||
.social-heaven .fa {
|
||||
/* Just the right amount of spacing for multiple icons! */
|
||||
margin-left: 0.7rem;
|
||||
margin-right: 0.7rem;
|
||||
margin-top: 0.35rem;
|
||||
margin-bottom: 0.35rem;
|
||||
|
||||
color: #555;
|
||||
}
|
||||
|
||||
/* Colours are from the main colour of the site's logo */
|
||||
.fa-medium:hover {
|
||||
color: #0BE370;
|
||||
}
|
||||
|
||||
.fa-github:hover {
|
||||
color: #333333;
|
||||
}
|
||||
|
||||
.fa-circle:hover {
|
||||
color: black;
|
||||
}
|
||||
|
||||
.fa-twitter:hover {
|
||||
color: #55acee;
|
||||
}
|
||||
|
||||
.fa-snapchat-ghost:hover {
|
||||
color: #fffc00;
|
||||
}
|
||||
|
||||
.fa-instagram:hover {
|
||||
color: #EF0069;
|
||||
}
|
||||
|
||||
.fa-facebook:hover {
|
||||
color: #3C539A;
|
||||
}
|
||||
|
||||
.fa-ellipsis-h:hover {
|
||||
color: #268bd2;
|
||||
}
|
||||
|
||||
/* */
|
||||
/* Page: About */
|
||||
/* */
|
||||
|
||||
img#my-profile-picture {
|
||||
width: 300px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
img#awesome-logo {
|
||||
width: 400px;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/* */
|
||||
/* Page: Contact */
|
||||
/* */
|
||||
|
||||
#contact-form {
|
||||
margin-top: 20px;
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
#contact-form input, #contact-form textarea {
|
||||
padding: 5px;
|
||||
width: 100%;
|
||||
font-size: 1.4em;
|
||||
margin: 0px 0px 10px 0px;
|
||||
border: 2px solid #ccc;
|
||||
}
|
||||
|
||||
#contact-form textarea {
|
||||
height: 90px;
|
||||
}
|
||||
|
||||
#contact-form textarea:focus, #contact-form input:focus {
|
||||
border: 2px solid #268bd2;
|
||||
}
|
|
@ -1,83 +0,0 @@
|
|||
/* */
|
||||
/* Navigation */
|
||||
/* */
|
||||
|
||||
.top-title-button a {
|
||||
position: fixed;
|
||||
z-index: 500;
|
||||
top: 10px;
|
||||
left: 10px;
|
||||
padding-top: 9px;
|
||||
padding-right: 12px;
|
||||
padding-bottom: 9px;
|
||||
padding-left: 12px;
|
||||
background: #29292a;
|
||||
transition: background 0.75s ease-out;
|
||||
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 20px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.top-title-button a:hover {
|
||||
background: #225d85;
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
font-size: 20px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
.b-menu {
|
||||
position: fixed;
|
||||
z-index: 500;
|
||||
top: 10px;
|
||||
right: 10px;
|
||||
padding-top: 12px;
|
||||
padding-left: 9px;
|
||||
background: #29292a;
|
||||
transition: background 0.75s ease-out;
|
||||
|
||||
height: 48px;
|
||||
width: 48px;
|
||||
border: 2px solid transparent;
|
||||
border-radius: 0;
|
||||
}
|
||||
|
||||
.b-menu:hover {
|
||||
background: #225d85;
|
||||
border: 2px solid transparent;
|
||||
}
|
||||
|
||||
.b-nav {
|
||||
z-index: 400;
|
||||
}
|
||||
|
||||
div.b-nav {
|
||||
|
||||
top: 100px;
|
||||
left: 30px;
|
||||
|
||||
}
|
||||
.b-nav, body:after {
|
||||
position: fixed;
|
||||
}
|
||||
|
||||
.b-nav li:first-child {
|
||||
padding-top: 20px;
|
||||
}
|
||||
|
||||
body:after {
|
||||
background: white;
|
||||
}
|
||||
|
||||
.b-link {
|
||||
color: #515151;
|
||||
font-weight: bold;
|
||||
font-size: 50px;
|
||||
}
|
||||
|
||||
.b-link--active,
|
||||
.b-link:hover {
|
||||
border-left: #515151 solid 2px;
|
||||
}
|
|
@ -0,0 +1 @@
|
|||
.pagination{position:relative;width:80%;max-width:800px;margin:4rem auto;font-family:Open Sans,sans-serif;font-size:1.3rem;color:#9eabb3;text-align:center}.pagination a{color:#3eb0ef;transition:all .2s ease}.newer-posts,.older-posts{position:absolute;display:inline-block;padding:0 15px;border:1px solid #bfc8cd;text-decoration:none;border-radius:4px;transition:border .3s ease}.older-posts{right:0}.page-number{display:inline-block;padding:2px 0;min-width:100px}.newer-posts{left:0}.newer-posts:hover,.older-posts:hover{color:#3eb0ef;border-color:#98a0a4}.extra-pagination{display:none;border-bottom:1px solid #ebf2f6}.extra-pagination:after{display:block;content:"";width:7px;height:7px;border:1px solid #e7eef2;position:absolute;bottom:-5px;left:50%;margin-left:-5px;background:#fff;border-radius:100%;box-shadow:0 0 0 5px #fff}.extra-pagination .pagination{width:auto}.paged .main-header{max-height:30vh}.paged .extra-pagination{display:block}.pagination{padding-top:4rem;border-top:1px solid #bfc8cd;word-wrap:break-word}.pagination:before{display:block;content:"";width:7px;height:7px;border:1px solid #bfc8cd;position:absolute;top:-5px;left:50%;margin-left:-5px;background:#f4f8fb;border-radius:100%;box-shadow:0 0 0 5px #f4f8fb}.highlight code,.highlight pre,.highlight table,.highlight tbody,.highlight tr,figure.highlight,td.code{border:none;min-width:100%;max-width:100%}.highlight table,.highlight td pre{padding:0;margin:0}.highlight table td{border:none;margin:none;padding:none}.highlight table td:first-child,.highlight table td:last-child{background:none}
|
After Width: | Height: | Size: 494 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 184 KiB |
After Width: | Height: | Size: 84 KiB |
After Width: | Height: | Size: 8.8 KiB |
After Width: | Height: | Size: 94 KiB |
After Width: | Height: | Size: 131 KiB |
After Width: | Height: | Size: 33 KiB |
After Width: | Height: | Size: 204 KiB |
After Width: | Height: | Size: 6.6 KiB |
|
@ -0,0 +1 @@
|
|||
<svg class="ghost-svg" viewBox="0 0 493 161" xmlns="http://www.w3.org/2000/svg"><title>Ghost Logo</title><g fill="none" fill-rule="evenodd"><path d="M328.52 37.36c-27.017 0-40.97 19.323-40.97 43.16 0 23.837 13.61 43.162 40.97 43.162s40.968-19.325 40.968-43.163c0-23.84-13.954-43.16-40.97-43.16zm20.438 43.237c-.02 15.328-5.126 27.743-20.44 27.743-15.312 0-20.42-12.414-20.435-27.743v-.078c.016-15.33 5.124-27.74 20.437-27.74 15.312 0 20.42 12.41 20.438 27.74v.07zM207.553 5.19c0-1.103.885-2.124 1.984-2.282 0 0 13.577-1.95 14.784-2.115 1.37-.187 3.19.798 3.19 2.744v44.236c3.23-3.105 6.79-5.608 10.66-7.515 3.88-1.906 8.43-2.86 13.66-2.86 4.53 0 8.53.776 12.03 2.33 3.5 1.55 6.43 3.73 8.77 6.533 2.34 2.81 4.12 6.16 5.33 10.05 1.21 3.9 1.82 8.19 1.82 12.87v51.35c0 1.1-.89 2-2 2h-15.95c-1.1 0-2-.9-2-1.99V69.18c0-5.118-1.17-9.08-3.51-11.888-2.35-2.804-5.86-4.207-10.544-4.207-3.45 0-6.677.79-9.69 2.37-3.02 1.58-5.87 3.73-8.564 6.46v58.617c0 1.102-.894 2-2.002 2h-15.94c-1.11 0-2.005-.895-2.005-2V5.188zm244.007 95.327v-43.68h-13.482c-1.1 0-1.742-.87-1.443-1.916l3-10.49c.262-.9.942-1.87 2.308-2.07l9.597-1.35 3.508-23.49c.163-1.09 1.18-2.1 2.274-2.26 0 0 9.192-1.31 10.963-1.58 1.673-.25 3.19.97 3.19 2.81v24.52h17.565c1.106 0 2.002.9 2.002 2.01v11.82c0 1.11-.89 2.01-2.002 2.01h-17.566v43.08c0 6.02 3.623 8.32 7.095 8.32 2.12 0 5.02-1.14 7.19-2.16 1.34-.62 3.41-.16 3.95 1.73l2.45 8.65c.3 1.07-.25 2.37-1.23 2.86 0 0-7.29 4.37-17.06 4.37-13.73 0-22.33-8.08-22.33-23.16zm-44.584-47.74c-7.084 0-12.657 2.476-12.657 8.433 0 7.44 12.01 9.606 20.23 12.64 5.49 2.027 20.24 5.98 20.24 22.016 0 19.48-16 27.807-33.06 27.807-17.06 0-25.4-5.465-25.4-5.465-.96-.527-1.5-1.822-1.2-2.89 0 0 2.1-7.52 2.64-9.386.48-1.68 2.41-2.27 3.64-1.792 4.39 1.712 12.32 4.092 21.28 4.092 9.07 0 13.46-2.803 13.46-8.777 0-7.95-12.26-10.38-20.36-12.967-5.59-1.78-20.36-5.93-20.36-23.566 0-17.373 15.08-25.524 31.2-25.524 13.64 0 23.5 4.69 23.5 4.69 1.01.427 1.58 1.635 1.28 2.698l-2.658 9.357c-.488 1.74-1.898 2.537-3.666 1.957-3.89-1.277-11.2-3.322-18.15-3.322zm-210.313-15.28c-6.695.775-11.472 3.962-14.562 6.93-6.06-4.81-14.49-7.106-23.94-7.106-18.95 0-33.76 9.26-33.76 29.43 0 11.58 4.88 19.56 12.62 24.26-5.75 2.75-9.57 8.59-9.57 14.34 0 9.61 7.5 12.61 7.5 12.61s-13.11 6.44-13.11 19.32c0 16.49 15.01 23.16 33.34 23.16 26.43 0 44.61-11.04 44.61-31.31 0-12.47-9.44-19.36-30.01-20.18-12.2-.48-20.11-.93-22.07-1.58-2.59-.87-3.86-2.96-3.86-5.28 0-2.55 2.08-4.98 5.35-6.65 2.86.516 5.87.768 8.99.768 18.97 0 33.76-9.223 33.76-29.425 0-4.897-.87-9.15-2.46-12.78 2.79-1.506 8.34-2.25 8.34-2.25 1.09-.17 1.975-1.21 1.974-2.31V40.3c0-1.88-1.59-2.955-3.1-2.78zm-49.13 85.132s9.954.38 19.9.84c11.172.52 14.654 2.96 14.654 8.81 0 7.15-9.71 14.1-23.28 14.1-12.88 0-19.314-4.54-19.314-12.08 0-4.33 2.26-9.18 8.04-11.69zm10.66-40.54c-8.978 0-15.983-4.83-15.983-15.35 0-10.53 7.01-15.35 15.983-15.35 8.974 0 15.984 4.81 15.984 15.34 0 10.53-7.002 15.34-15.984 15.34z" fill="#2D3134"/><g opacity=".6" transform="translate(0 36)" fill="#2E3134"><rect x=".209" y="69.017" width="33.643" height="17.014" rx="4"/><rect x="50.672" y="69.017" width="33.622" height="17.014" rx="4"/><rect x=".184" y="34.99" width="84.121" height="17.014" rx="4"/><rect x=".209" y=".964" width="50.469" height="17.013" rx="4"/><rect x="67.494" y=".964" width="16.821" height="17.013" rx="4"/></g></g></svg>
|
After Width: | Height: | Size: 3.3 KiB |
After Width: | Height: | Size: 5.4 KiB |
After Width: | Height: | Size: 111 KiB |
After Width: | Height: | Size: 285 KiB |
After Width: | Height: | Size: 122 KiB |
After Width: | Height: | Size: 23 KiB |
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 107 KiB |
After Width: | Height: | Size: 21 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 98 KiB |
After Width: | Height: | Size: 95 KiB |
After Width: | Height: | Size: 186 KiB |
After Width: | Height: | Size: 118 KiB |
After Width: | Height: | Size: 141 KiB |
After Width: | Height: | Size: 193 KiB |
After Width: | Height: | Size: 168 KiB |
After Width: | Height: | Size: 99 KiB |
After Width: | Height: | Size: 77 KiB |
After Width: | Height: | Size: 42 KiB |
|
@ -1,10 +0,0 @@
|
|||
---
|
||||
sitemap: false
|
||||
---
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '{{ site.google_analytics_tracking_id }}', 'auto');
|
||||
ga('send', 'pageview');
|
|
@ -0,0 +1,83 @@
|
|||
// Code snippet inspired by https://github.com/douglasrodrigues5/ghost-blog-infinite-scroll
|
||||
$(function ($) {
|
||||
var currentPage = 1;
|
||||
var pathname = window.location.pathname;
|
||||
var $document = $(document);
|
||||
var $result = $('.post-feed');
|
||||
var buffer = 100;
|
||||
|
||||
var ticking = false;
|
||||
var isLoading = false;
|
||||
|
||||
var lastScrollY = window.scrollY;
|
||||
var lastWindowHeight = window.innerHeight;
|
||||
var lastDocumentHeight = $document.height();
|
||||
|
||||
// remove hash params from pathname
|
||||
pathname = pathname.replace(/#(.*)$/g, '').replace('/\//g', '/');
|
||||
|
||||
function onScroll() {
|
||||
lastScrollY = window.scrollY;
|
||||
requestTick();
|
||||
}
|
||||
|
||||
function onResize() {
|
||||
lastWindowHeight = window.innerHeight;
|
||||
lastDocumentHeight = $document.height();
|
||||
requestTick();
|
||||
}
|
||||
|
||||
function requestTick() {
|
||||
if (!ticking) {
|
||||
requestAnimationFrame(infiniteScroll)
|
||||
}
|
||||
ticking = true;
|
||||
}
|
||||
|
||||
function infiniteScroll () {
|
||||
// return if already loading
|
||||
if (isLoading) {
|
||||
return;
|
||||
}
|
||||
|
||||
// return if not scroll to the bottom
|
||||
if (lastScrollY + lastWindowHeight <= lastDocumentHeight - buffer) {
|
||||
ticking = false;
|
||||
return;
|
||||
}
|
||||
|
||||
// return if currentPage is the last page already
|
||||
if (currentPage === maxPages) {
|
||||
return;
|
||||
}
|
||||
|
||||
isLoading = true;
|
||||
|
||||
// next page
|
||||
currentPage++;
|
||||
|
||||
// Load more
|
||||
var nextPage = pathname + 'page' + currentPage + '/';
|
||||
|
||||
$.get(nextPage, function (content) {
|
||||
$result.append($(content).find('.post').hide().fadeIn(100));
|
||||
|
||||
}).fail(function (xhr) {
|
||||
// 404 indicates we've run out of pages
|
||||
if (xhr.status === 404) {
|
||||
window.removeEventListener('scroll', onScroll, {passive: true});
|
||||
window.removeEventListener('resize', onResize);
|
||||
}
|
||||
|
||||
}).always(function () {
|
||||
lastDocumentHeight = $document.height();
|
||||
isLoading = false;
|
||||
ticking = false;
|
||||
});
|
||||
}
|
||||
|
||||
window.addEventListener('scroll', onScroll, {passive: true});
|
||||
window.addEventListener('resize', onResize);
|
||||
|
||||
infiniteScroll();
|
||||
});
|
|
@ -0,0 +1,89 @@
|
|||
/*jshint browser:true */
|
||||
/*!
|
||||
* FitVids 1.3
|
||||
*
|
||||
*
|
||||
* Copyright 2017, Chris Coyier + Dave Rupert + Ghost Foundation
|
||||
* This is an unofficial release, ported by John O'Nolan
|
||||
* Credit to Thierry Koblentz - http://www.alistapart.com/articles/creating-intrinsic-ratios-for-video/
|
||||
* Released under the MIT license
|
||||
*
|
||||
*/
|
||||
|
||||
;(function( $ ){
|
||||
|
||||
'use strict';
|
||||
|
||||
$.fn.fitVids = function( options ) {
|
||||
var settings = {
|
||||
customSelector: null,
|
||||
ignore: null
|
||||
};
|
||||
|
||||
if(!document.getElementById('fit-vids-style')) {
|
||||
// appendStyles: https://github.com/toddmotto/fluidvids/blob/master/dist/fluidvids.js
|
||||
var head = document.head || document.getElementsByTagName('head')[0];
|
||||
var css = '.fluid-width-video-container{flex-grow: 1;width:100%;}.fluid-width-video-wrapper{width:100%;position:relative;padding:0;}.fluid-width-video-wrapper iframe,.fluid-width-video-wrapper object,.fluid-width-video-wrapper embed {position:absolute;top:0;left:0;width:100%;height:100%;}';
|
||||
var div = document.createElement("div");
|
||||
div.innerHTML = '<p>x</p><style id="fit-vids-style">' + css + '</style>';
|
||||
head.appendChild(div.childNodes[1]);
|
||||
}
|
||||
|
||||
if ( options ) {
|
||||
$.extend( settings, options );
|
||||
}
|
||||
|
||||
return this.each(function(){
|
||||
var selectors = [
|
||||
'iframe[src*="player.vimeo.com"]',
|
||||
'iframe[src*="youtube.com"]',
|
||||
'iframe[src*="youtube-nocookie.com"]',
|
||||
'iframe[src*="kickstarter.com"][src*="video.html"]',
|
||||
'object',
|
||||
'embed'
|
||||
];
|
||||
|
||||
if (settings.customSelector) {
|
||||
selectors.push(settings.customSelector);
|
||||
}
|
||||
|
||||
var ignoreList = '.fitvidsignore';
|
||||
|
||||
if(settings.ignore) {
|
||||
ignoreList = ignoreList + ', ' + settings.ignore;
|
||||
}
|
||||
|
||||
var $allVideos = $(this).find(selectors.join(','));
|
||||
$allVideos = $allVideos.not('object object'); // SwfObj conflict patch
|
||||
$allVideos = $allVideos.not(ignoreList); // Disable FitVids on this video.
|
||||
|
||||
$allVideos.each(function(){
|
||||
var $this = $(this);
|
||||
if($this.parents(ignoreList).length > 0) {
|
||||
return; // Disable FitVids on this video.
|
||||
}
|
||||
if (this.tagName.toLowerCase() === 'embed' && $this.parent('object').length || $this.parent('.fluid-width-video-wrapper').length) { return; }
|
||||
if ((!$this.css('height') && !$this.css('width')) && (isNaN($this.attr('height')) || isNaN($this.attr('width'))))
|
||||
{
|
||||
$this.attr('height', 9);
|
||||
$this.attr('width', 16);
|
||||
}
|
||||
var height = ( this.tagName.toLowerCase() === 'object' || ($this.attr('height') && !isNaN(parseInt($this.attr('height'), 10))) ) ? parseInt($this.attr('height'), 10) : $this.height(),
|
||||
width = !isNaN(parseInt($this.attr('width'), 10)) ? parseInt($this.attr('width'), 10) : $this.width(),
|
||||
aspectRatio = height / width;
|
||||
if(!$this.attr('name')){
|
||||
var videoName = 'fitvid' + $.fn.fitVids._count;
|
||||
$this.attr('name', videoName);
|
||||
$.fn.fitVids._count++;
|
||||
}
|
||||
$this.wrap('<div class="fluid-width-video-container"><div class="fluid-width-video-wrapper"></div></div>').parent('.fluid-width-video-wrapper').css('padding-top', (aspectRatio * 100)+'%');
|
||||
$this.removeAttr('height').removeAttr('width');
|
||||
});
|
||||
});
|
||||
};
|
||||
|
||||
// Internal counter for unique video names.
|
||||
$.fn.fitVids._count = 0;
|
||||
|
||||
// Works with either jQuery or Zepto
|
||||
})( window.jQuery || window.Zepto );
|
|
@ -0,0 +1,33 @@
|
|||
---
|
||||
layout: default
|
||||
current: home
|
||||
class: 'home-template'
|
||||
navigation: True
|
||||
---
|
||||
|
||||
<!-- < default -->
|
||||
<!-- The tag above means: insert everything in this file
|
||||
into the {body} of the default.hbs template -->
|
||||
|
||||
<!-- The big featured header, it uses blog cover image as a BG if available -->
|
||||
<header class="site-header outer {% if page.cover or site.cover %}" style="background-image: url({{ site.baseurl }}{% if page.cover %}{{ page.cover }}{% elsif site.cover %}{{ site.cover }}{% endif %}) {% else %}no-cover{% endif %}">
|
||||
<div class="inner">
|
||||
<div class="site-header-content">
|
||||
<h1 class="site-title">
|
||||
{% if site.logo %}
|
||||
<img class="site-logo" src="{{ site.baseurl }}{{ site.logo }}" alt="{{ site.title }}"/>
|
||||
{% else %}
|
||||
{{ site.title }}
|
||||
{% endif %}
|
||||
</h1>
|
||||
<h2 class="site-description">{% if page.description %}{{ page.description }}{% else %}{{ site.description }}{% endif %}</h2>
|
||||
</div>
|
||||
{% include site-nav.html %}
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- The main content area -->
|
||||
<main id="site-main" class="site-main outer" role="main">
|
||||
<div class="inner">
|
||||
</div>
|
||||
</main>
|
|
@ -4,13 +4,14 @@
|
|||
|
||||
Here's the source code of my website which you can find at [davison.io](https://davison.io).
|
||||
|
||||
Blog is powered by [Ghost](https://ghost.org). Static pages are generated by [Jekyll](https://jekyllrb.com).
|
||||
Blog is powered by [Ghost](https://ghost.org). Static pages are generated by [Jekyll](https://jekyllrb.com) using [Jasper2](https://github.com/jekyller/jasper2).
|
||||
|
||||
## Install
|
||||
|
||||
Install plugins:
|
||||
```
|
||||
gem install jekyll-sitemap
|
||||
gem install jekyll-paginate
|
||||
```
|
||||
|
||||
## Credits
|
||||
|
|
|
@ -1,3 +1,4 @@
|
|||
User-agent: *
|
||||
Disallow: /contact/done/
|
||||
Disallow:
|
||||
Sitemap: https://davison.io/sitemap.xml
|
||||
Sitemap: https://davison.io/blog/sitemap.xml
|
||||
|
|