quattle 1.2.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/LICENSE +21 -0
- data/README.md +49 -0
- data/_includes/cookie-consent.html +45 -0
- data/_includes/head.html +20 -0
- data/_layouts/compress.html +10 -0
- data/_layouts/default.html +55 -0
- data/_layouts/page.html +7 -0
- data/_layouts/post.html +70 -0
- data/_sass/_base.scss +97 -0
- data/_sass/_buttons.scss +56 -0
- data/_sass/_code.scss +236 -0
- data/_sass/_layout.scss +16 -0
- data/_sass/_masthead.scss +57 -0
- data/_sass/_message.scss +88 -0
- data/_sass/_pagination.scss +56 -0
- data/_sass/_posts.scss +197 -0
- data/_sass/_syntax.scss +103 -0
- data/_sass/_type.scss +200 -0
- data/_sass/_variables.scss +29 -0
- metadata +104 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: a344b19294cd14c8e49a5bfd0536acd8c56e34702af64ac9bda58356c1f07845
|
4
|
+
data.tar.gz: 52f6ad0fca398c03d33670bcf9478cc6ab053378b5a68b7fa516c4f6a5227600
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: cd24a6bfdda62ee4ea339643528bc00dce3fd7509e577ddd2053516f520cbe2b3de1816602b7dab528f4728e193bebbc3cfd52eef209dc891260608b25c83808
|
7
|
+
data.tar.gz: ccc9cbcf23dc1bd633cfdfd2533ad6833fb7005ff0ef50d14d6fec4cbdc60e46a516ec1fe1d3c2c9fe821d97f586f76bada2e19b8f32001472117901552d9961
|
data/LICENSE
ADDED
@@ -0,0 +1,21 @@
|
|
1
|
+
MIT License
|
2
|
+
|
3
|
+
Copyright (c) 2021 Victor Wynne
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
7
|
+
in the Software without restriction, including without limitation the rights
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
10
|
+
furnished to do so, subject to the following conditions:
|
11
|
+
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
13
|
+
copies or substantial portions of the Software.
|
14
|
+
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
21
|
+
SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
Quattle is a modern, responsive and customizable theme for the static site generator Jekyll. Typography and design aesthetics are give the full attention they deserve. A light or dark color scheme will be displayed automatically depending on a device's settings. It builds upon a standard Jekyll installation in a number of ways that are important to both writers and software developers.
|
2
|
+
|
3
|
+
This project was originally released in 2019 as Noir, but various issues including 2FA and GPG lockout made that repo inaccessible to me. Every attempt to communicate these access issues to GitHub (read: Microsoft) and rectify the situation were unsuccessful. The project was renamed to avoid gem issues.
|
4
|
+
|
5
|
+
### Current Release Candidate
|
6
|
+
|
7
|
+
Available as [source code](https://github.com/victorwynne/quattle/releases) or [gem](https://rubygems.org/gems/Quattle)
|
8
|
+
|
9
|
+
### Demo
|
10
|
+
|
11
|
+
A live demo and style guide can be found at [quattle.victorwynne.com](https://quattle.victorwynne.com)
|
12
|
+
|
13
|
+
### Features
|
14
|
+
|
15
|
+
HTML, SASS and config files are included for the theme's design and functionality
|
16
|
+
|
17
|
+
A navigation area for linking to pages/posts or external URLs such as social media accounts
|
18
|
+
|
19
|
+
404, Archive, Category, Tag, Style, Privacy and About pages
|
20
|
+
|
21
|
+
Pagination, related posts and per-post navigation to older/newer entries
|
22
|
+
|
23
|
+
HTML/CSS compression (minification)
|
24
|
+
|
25
|
+
A favicon and valid Atom syndicated feed
|
26
|
+
|
27
|
+
Variables based colors which can be changed easily
|
28
|
+
|
29
|
+
Fully responsive, with an emphasis on mobile friendly design and interaction
|
30
|
+
|
31
|
+
Enabled forced curly/smart quotes across all content with the `{ | smartify }` liquid filter
|
32
|
+
|
33
|
+
Rich preview links when shared via iMessage on iOS/macOS/watchOS
|
34
|
+
|
35
|
+
GDPR valid and compliant cookie consent banner and accompanying privacy policy
|
36
|
+
|
37
|
+
A wide variety of HTML elements commonly used in online Markdown writing (blockquotes, headers, tables, boxes/buttons, figure captions, inline code, footnotes) have been styled
|
38
|
+
|
39
|
+
Code blocks are uniquely styled and if the language is declared then it is labeled and the syntax is highlighted
|
40
|
+
|
41
|
+
A single line added to a post's front matter can enable:
|
42
|
+
* Adding categories or tags to a post
|
43
|
+
* Per-post author attribution
|
44
|
+
* The creation of **linked-list** style posts which link to external URLs, maintain a permalink and display a styled arrow to help indicate this to the reader
|
45
|
+
* Additional date line listing the last date a post was modified on
|
46
|
+
|
47
|
+
### License
|
48
|
+
|
49
|
+
Quattle is free software available under a [MIT license](https://github.com/victorwynne/quattle/blob/main/LICENSE).
|
@@ -0,0 +1,45 @@
|
|
1
|
+
<style>
|
2
|
+
#cookie-notice {padding: 0.5rem 1rem; display: none; text-align: center; position: fixed; bottom: 0; width: calc(100%); background: color(srgb 0.165 0.165 0.165); color: rgba(255,255,255,0.8);}
|
3
|
+
#cookie-notice a {display: inline-block; cursor: pointer; margin-left: 0.5rem;}
|
4
|
+
@media (max-width: 767px) {
|
5
|
+
#cookie-notice span {display: block; padding-top: 3px; margin-bottom: 1rem;}
|
6
|
+
#cookie-notice a {position: relative; bottom: 4px;}
|
7
|
+
}
|
8
|
+
</style>
|
9
|
+
<div id="cookie-notice"><span>We would like to use third party cookies and scripts to improve the functionality of this website.</span><a id="cookie-notice-accept" class="btn btn-primary btn-sm">Approve</a><a href="/privacy" class="btn btn-primary btn-sm">More info</a></div>
|
10
|
+
<script>
|
11
|
+
function createCookie(name,value,days) {
|
12
|
+
var expires = "";
|
13
|
+
if (days) {
|
14
|
+
var date = new Date();
|
15
|
+
date.setTime(date.getTime() + (days*24*60*60*1000));
|
16
|
+
expires = "; expires=" + date.toUTCString();
|
17
|
+
}
|
18
|
+
document.cookie = name + "=" + value + expires + "; path=/";
|
19
|
+
}
|
20
|
+
function readCookie(name) {
|
21
|
+
var nameEQ = name + "=";
|
22
|
+
var ca = document.cookie.split(';');
|
23
|
+
for(var i=0;i < ca.length;i++) {
|
24
|
+
var c = ca[i];
|
25
|
+
while (c.charAt(0)==' ') c = c.substring(1,c.length);
|
26
|
+
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
|
27
|
+
}
|
28
|
+
return null;
|
29
|
+
}
|
30
|
+
function eraseCookie(name) {
|
31
|
+
createCookie(name,"",-1);
|
32
|
+
}
|
33
|
+
|
34
|
+
if(readCookie('cookie-notice-dismissed')=='true') {
|
35
|
+
|
36
|
+
} else {
|
37
|
+
document.getElementById('cookie-notice').style.display = 'block';
|
38
|
+
}
|
39
|
+
document.getElementById('cookie-notice-accept').addEventListener("click",function() {
|
40
|
+
createCookie('cookie-notice-dismissed','true',31);
|
41
|
+
document.getElementById('cookie-notice').style.display = 'none';
|
42
|
+
location.reload();
|
43
|
+
});
|
44
|
+
|
45
|
+
</script>
|
data/_includes/head.html
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
<head>
|
2
|
+
<meta charset="UTF-8">
|
3
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
4
|
+
<meta property="og:image" content="https://quattle.victorwynne.com/assets/iMessage.png" />
|
5
|
+
|
6
|
+
<title>
|
7
|
+
{% if page.title == "Home" %}
|
8
|
+
{{ site.title }}{% if site.tagline %} · {{ site.tagline }}{% endif %}
|
9
|
+
{% else %}
|
10
|
+
{{ page.title }} · {{ site.title }}
|
11
|
+
{% endif %}
|
12
|
+
</title>
|
13
|
+
|
14
|
+
<link rel="stylesheet" href="{{ site.baseurl }}/styles.css">
|
15
|
+
<link rel="apple-touch-icon-precomposed" sizes="144x144" href="{{ site.baseurl }}/assets/apple-touch-icon-precomposed.png">
|
16
|
+
<link rel="shortcut icon" href="{{ site.baseurl }}/assets/fav.ico">
|
17
|
+
<link rel="alternate" type="application/atom+xml" title="{{ site.title }}" href="{{ site.baseurl }}/feed.xml">
|
18
|
+
|
19
|
+
{% seo title=false %}
|
20
|
+
</head>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
---
|
2
|
+
# Jekyll layout that compresses HTML
|
3
|
+
# v3.1.0
|
4
|
+
# http://jch.penibelst.de/
|
5
|
+
# © 2014–2015 Anatol Broder
|
6
|
+
# MIT License
|
7
|
+
---
|
8
|
+
|
9
|
+
{% capture _LINE_FEED %}
|
10
|
+
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment or site.compress_html.ignore.envs == "all" %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
@@ -0,0 +1,55 @@
|
|
1
|
+
---
|
2
|
+
layout: compress
|
3
|
+
---
|
4
|
+
|
5
|
+
<!doctype html>
|
6
|
+
<html lang="en">
|
7
|
+
|
8
|
+
{% include head.html %}
|
9
|
+
|
10
|
+
<body>
|
11
|
+
|
12
|
+
<div class="container content">
|
13
|
+
<header class="masthead">
|
14
|
+
|
15
|
+
<h3 class="masthead-title">
|
16
|
+
<a href="{{ site.baseurl }}/" title="Home">{{ site.title }}</a><br>
|
17
|
+
<small>{{ site.tagline }}</small>
|
18
|
+
</h3>
|
19
|
+
|
20
|
+
<!-- Change navigation links here -->
|
21
|
+
<div class="navigation">
|
22
|
+
<ul id="navigation-list">
|
23
|
+
<li><a href="/archive/">archive</a></li>
|
24
|
+
<li><a href="/styles/">styles</a></li>
|
25
|
+
<li><a href="/about/">about</a></li>
|
26
|
+
</ul>
|
27
|
+
</div>
|
28
|
+
|
29
|
+
</header>
|
30
|
+
|
31
|
+
<main>
|
32
|
+
{{ content | smartify }}
|
33
|
+
</main>
|
34
|
+
|
35
|
+
<footer class="footer">
|
36
|
+
<p>Made with ❤️ on a Mac 💻</p>
|
37
|
+
</footer>
|
38
|
+
</div>
|
39
|
+
|
40
|
+
{% if site.ga_analytics %}
|
41
|
+
<script>
|
42
|
+
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
43
|
+
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
44
|
+
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
45
|
+
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
46
|
+
ga('create', '{{ site.ga_analytics }}', 'auto');
|
47
|
+
ga('send', 'pageview');
|
48
|
+
</script>
|
49
|
+
{% endif %}
|
50
|
+
|
51
|
+
<!-- Add scripts to include by editing the below referenced HTML file -->
|
52
|
+
{% include cookie-consent.html%}
|
53
|
+
|
54
|
+
</body>
|
55
|
+
</html>
|
data/_layouts/page.html
ADDED
data/_layouts/post.html
ADDED
@@ -0,0 +1,70 @@
|
|
1
|
+
---
|
2
|
+
layout: default
|
3
|
+
---
|
4
|
+
|
5
|
+
<article class="post">
|
6
|
+
{% if page.link %}
|
7
|
+
<h1 class="post-title"><a href="{{ page.link }}">
|
8
|
+
{{ page.title | smartify }} <span class="link-arrow">→</span></a>
|
9
|
+
</h1>
|
10
|
+
{% else %}
|
11
|
+
<h1 class="post-title">{{ page.title | smartify }}</h1>
|
12
|
+
{% endif %}
|
13
|
+
|
14
|
+
<time datetime="{{ page.date | date_to_xmlschema }}" class="post-date">{{ page.date | date_to_long_string: "ordinal", "US" }}
|
15
|
+
{% if post %}
|
16
|
+
{% assign categories = post.categories %}
|
17
|
+
{% else %}
|
18
|
+
{% assign categories = page.categories %}
|
19
|
+
{% endif %}
|
20
|
+
{% if categories.size > 0 %}in{% endif %}
|
21
|
+
{% for category in categories %}
|
22
|
+
<a href="{{site.baseurl}}/categories/#{{category|slugize}}">{{category}}</a>{% unless forloop.last %},{% endunless %}
|
23
|
+
{% endfor %}
|
24
|
+
{%- if page.last_modified_at -%}
|
25
|
+
<br><i>Last updated on: {{ page.last_modified_at | date_to_long_string: "ordinal", "US" }}</i>
|
26
|
+
{%- endif -%}
|
27
|
+
</time>
|
28
|
+
{% if page.link %}<span class="external-link">⌘ External Link</span>{% endif %}
|
29
|
+
|
30
|
+
{{ content | smartify }}
|
31
|
+
|
32
|
+
<br>
|
33
|
+
<div class="tag-list">
|
34
|
+
{% if post %}
|
35
|
+
{% assign tags = post.tags %}
|
36
|
+
{% else %}
|
37
|
+
{% assign tags = page.tags %}
|
38
|
+
{% endif %}
|
39
|
+
{% for tag in tags %}
|
40
|
+
<a href="{{site.baseurl}}/tags/#{{tag|slugize}}">#{{tag}}</a>
|
41
|
+
{% unless forloop.last %} {% endunless %}
|
42
|
+
{% endfor %}
|
43
|
+
</div>
|
44
|
+
|
45
|
+
</article>
|
46
|
+
|
47
|
+
<div class="PageNavigation">
|
48
|
+
{% if page.previous.url %}
|
49
|
+
<a class="prev" href="{{page.previous.url}}">← Previous</a>
|
50
|
+
{% endif %}
|
51
|
+
{% if page.next.url %}
|
52
|
+
<a class="next" href="{{page.next.url}}">Next →</a>
|
53
|
+
{% endif %}
|
54
|
+
</div>
|
55
|
+
|
56
|
+
{% if site.related_posts != empty %}
|
57
|
+
<aside class="related">
|
58
|
+
<h3>Related Posts</h3>
|
59
|
+
<ul class="related-posts">
|
60
|
+
{% for post in site.related_posts limit:3 %}
|
61
|
+
<li>
|
62
|
+
<a href="{{ site.baseurl }}{{ post.url }}">
|
63
|
+
{{ post.title | smartify }}
|
64
|
+
<small><time datetime="{{ post.date | date_to_xmlschema }}">{{ post.date | date_to_long_string: "ordinal", "US" }}</time></small>
|
65
|
+
</a>
|
66
|
+
</li>
|
67
|
+
{% endfor %}
|
68
|
+
</ul>
|
69
|
+
</aside>
|
70
|
+
{% endif %}
|
data/_sass/_base.scss
ADDED
@@ -0,0 +1,97 @@
|
|
1
|
+
// Body
|
2
|
+
|
3
|
+
* {
|
4
|
+
-webkit-box-sizing: border-box;
|
5
|
+
-moz-box-sizing: border-box;
|
6
|
+
box-sizing: border-box;
|
7
|
+
}
|
8
|
+
|
9
|
+
html,
|
10
|
+
body {
|
11
|
+
margin: 0;
|
12
|
+
padding: 0;
|
13
|
+
}
|
14
|
+
|
15
|
+
html {
|
16
|
+
font-family: $root-font-family;
|
17
|
+
font-size: $root-font-size;
|
18
|
+
line-height: $root-line-height;
|
19
|
+
|
20
|
+
@media (min-width: $large-breakpoint) {
|
21
|
+
font-size: $large-font-size;
|
22
|
+
}
|
23
|
+
}
|
24
|
+
|
25
|
+
body {
|
26
|
+
color: $body-color;
|
27
|
+
background-color: $body-bg;
|
28
|
+
-webkit-text-size-adjust: 100%;
|
29
|
+
-ms-text-size-adjust: 100%;
|
30
|
+
|
31
|
+
@media (prefers-color-scheme: dark) {
|
32
|
+
color: $body-color-dark;
|
33
|
+
background-color: $body-bg-dark;
|
34
|
+
}
|
35
|
+
}
|
36
|
+
|
37
|
+
// No `:visited` state is required by default (browsers will use `a`)
|
38
|
+
a {
|
39
|
+
color: $light;
|
40
|
+
text-decoration: none;
|
41
|
+
|
42
|
+
// `:focus` is linked to `:hover` for basic accessibility
|
43
|
+
&:hover,
|
44
|
+
&:focus {
|
45
|
+
text-decoration: none;
|
46
|
+
}
|
47
|
+
|
48
|
+
strong {
|
49
|
+
color: inherit;
|
50
|
+
}
|
51
|
+
|
52
|
+
@media (prefers-color-scheme: dark) {
|
53
|
+
color: $dark;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
|
57
|
+
img {
|
58
|
+
display: block;
|
59
|
+
max-width: 100%;
|
60
|
+
margin: 0 0 1rem;
|
61
|
+
border-radius: 5px;
|
62
|
+
}
|
63
|
+
|
64
|
+
table {
|
65
|
+
margin-bottom: 1rem;
|
66
|
+
width: 100%;
|
67
|
+
font-size: 85%;
|
68
|
+
border: 1px solid #d4d4d4;
|
69
|
+
border-collapse: collapse;
|
70
|
+
|
71
|
+
@media (prefers-color-scheme: dark) {
|
72
|
+
border: 1px solid #555555;
|
73
|
+
}
|
74
|
+
}
|
75
|
+
|
76
|
+
td,
|
77
|
+
th {
|
78
|
+
padding: .25rem .5rem;
|
79
|
+
border: 1px solid #d4d4d4;
|
80
|
+
|
81
|
+
@media (prefers-color-scheme: dark) {
|
82
|
+
border: 1px solid #555555;
|
83
|
+
}
|
84
|
+
}
|
85
|
+
|
86
|
+
th {
|
87
|
+
text-align: left;
|
88
|
+
}
|
89
|
+
|
90
|
+
tbody tr:nth-child(odd) td,
|
91
|
+
tbody tr:nth-child(odd) th {
|
92
|
+
background-color: #eee;
|
93
|
+
|
94
|
+
@media (prefers-color-scheme: dark) {
|
95
|
+
background-color: #2d2d2d;
|
96
|
+
}
|
97
|
+
}
|
data/_sass/_buttons.scss
ADDED
@@ -0,0 +1,56 @@
|
|
1
|
+
// Buttons
|
2
|
+
|
3
|
+
.added {
|
4
|
+
background: #6a28e8;
|
5
|
+
color: #fff;
|
6
|
+
text-align: center;
|
7
|
+
font-variant: small-caps;
|
8
|
+
font-weight: bold;
|
9
|
+
padding: 1px 8px 3px;
|
10
|
+
margin: 0 3px 3px 0;
|
11
|
+
border-radius: 6px;
|
12
|
+
}
|
13
|
+
|
14
|
+
.improved {
|
15
|
+
background: #0c83e1;
|
16
|
+
color: #fff;
|
17
|
+
text-align: center;
|
18
|
+
font-variant: small-caps;
|
19
|
+
font-weight: bold;
|
20
|
+
padding: 1px 8px 3px;
|
21
|
+
margin: 0 3px 3px 0;
|
22
|
+
border-radius: 6px;
|
23
|
+
}
|
24
|
+
|
25
|
+
.fixed {
|
26
|
+
background: #00d486;
|
27
|
+
color: #fff;
|
28
|
+
text-align: center;
|
29
|
+
font-variant: small-caps;
|
30
|
+
font-weight: bold;
|
31
|
+
padding: 1px 8px 3px;
|
32
|
+
margin: 0 3px 3px 0;
|
33
|
+
border-radius: 6px;
|
34
|
+
}
|
35
|
+
|
36
|
+
.soon {
|
37
|
+
background: #ff6600;
|
38
|
+
color: #fff;
|
39
|
+
text-align: center;
|
40
|
+
font-variant: small-caps;
|
41
|
+
font-weight: bold;
|
42
|
+
padding: 1px 8px 3px;
|
43
|
+
margin: 0 3px 3px 0;
|
44
|
+
border-radius: 6px;
|
45
|
+
}
|
46
|
+
|
47
|
+
.removed {
|
48
|
+
background: #ff0000;
|
49
|
+
color: #fff;
|
50
|
+
text-align: center;
|
51
|
+
font-variant: small-caps;
|
52
|
+
font-weight: bold;
|
53
|
+
padding: 1px 8px 3px;
|
54
|
+
margin: 0 3px 3px 0;
|
55
|
+
border-radius: 6px;
|
56
|
+
}
|
data/_sass/_code.scss
ADDED
@@ -0,0 +1,236 @@
|
|
1
|
+
// Code blocks and syntax highlighting
|
2
|
+
|
3
|
+
/* Applies to inline `code blocks` */
|
4
|
+
.highlighter-rouge {
|
5
|
+
font-family: $root-font-family;
|
6
|
+
font-size: 100%;
|
7
|
+
padding: 3px 4px;
|
8
|
+
background-color: #494949;
|
9
|
+
color: $code-light;
|
10
|
+
white-space: nowrap;
|
11
|
+
|
12
|
+
@media (prefers-color-scheme: dark) {
|
13
|
+
background-color: #212c2d;
|
14
|
+
color: $code-dark;
|
15
|
+
}
|
16
|
+
}
|
17
|
+
|
18
|
+
/* Applies to all code */
|
19
|
+
pre, code {
|
20
|
+
font-size: 14px;
|
21
|
+
font-family: $code-font-family;
|
22
|
+
font-style: normal;
|
23
|
+
|
24
|
+
font-feature-settings: "kern" off;
|
25
|
+
font-kerning: none;
|
26
|
+
font-variant: none;
|
27
|
+
|
28
|
+
background-color: #eef;
|
29
|
+
|
30
|
+
::selection {
|
31
|
+
color: $code-bg;
|
32
|
+
background: #bdbdb3;
|
33
|
+
}
|
34
|
+
|
35
|
+
::-moz-selection {
|
36
|
+
color: $code-bg;
|
37
|
+
background: #bdbdb3;
|
38
|
+
}
|
39
|
+
|
40
|
+
::-webkit-selection {
|
41
|
+
color: $code-bg;
|
42
|
+
background: #bdbdb3;
|
43
|
+
}
|
44
|
+
}
|
45
|
+
|
46
|
+
/* Inline code, no highlight */
|
47
|
+
code {
|
48
|
+
padding: 2px 4px;
|
49
|
+
border-radius: 3px;
|
50
|
+
|
51
|
+
white-space: nowrap;
|
52
|
+
}
|
53
|
+
|
54
|
+
blockquote code {
|
55
|
+
color: #656565;
|
56
|
+
}
|
57
|
+
|
58
|
+
/* Inline code, highlight */
|
59
|
+
code.highlight {
|
60
|
+
border-radius: 3px;
|
61
|
+
|
62
|
+
color: #bdbdb3;
|
63
|
+
background-color: $code-bg;
|
64
|
+
}
|
65
|
+
|
66
|
+
/* Block code, no highlight */
|
67
|
+
pre {
|
68
|
+
border-radius: 5px;
|
69
|
+
margin: 30px * 0.75 30px / 2;
|
70
|
+
padding: 15px 17px;
|
71
|
+
overflow-x: auto;
|
72
|
+
background-color: #f1f1ff;
|
73
|
+
|
74
|
+
code {
|
75
|
+
border: 0;
|
76
|
+
padding: 0;
|
77
|
+
|
78
|
+
white-space: pre;
|
79
|
+
}
|
80
|
+
}
|
81
|
+
|
82
|
+
/* Block code, highlight */
|
83
|
+
figure.highlight, div.highlight {
|
84
|
+
position: relative;
|
85
|
+
|
86
|
+
pre {
|
87
|
+
background-color: $code-bg;
|
88
|
+
border: 1px solid $code-light;
|
89
|
+
border-radius: 15px;
|
90
|
+
box-shadow: 0 4px 30px rgba(0,0,0,.4);
|
91
|
+
|
92
|
+
@media (prefers-color-scheme: dark) {
|
93
|
+
border: 1px solid $code-dark;
|
94
|
+
}
|
95
|
+
|
96
|
+
code {
|
97
|
+
background-color: $code-bg;
|
98
|
+
color: #bdbdb3;
|
99
|
+
|
100
|
+
counter-reset: code;
|
101
|
+
display: block;
|
102
|
+
line-height: 1.5;
|
103
|
+
|
104
|
+
/* Display language name */
|
105
|
+
&[data-lang]::before {
|
106
|
+
content: attr(data-lang);
|
107
|
+
position: absolute;
|
108
|
+
right: 20px; // 15 + 5
|
109
|
+
|
110
|
+
font-size: 16px;
|
111
|
+
top: -12px;
|
112
|
+
padding: 0px 7px;
|
113
|
+
text-transform: uppercase;
|
114
|
+
font-weight: bold;
|
115
|
+
|
116
|
+
border: 1px solid $code-light;
|
117
|
+
border-top-left-radius: 15px;
|
118
|
+
border-top-right-radius: 15px;
|
119
|
+
border-bottom-left-radius: 15px;
|
120
|
+
border-bottom-right-radius: 15px;
|
121
|
+
|
122
|
+
min-width: 30px;
|
123
|
+
text-align: center;
|
124
|
+
|
125
|
+
color: $code-light;
|
126
|
+
background-color: $code-bg;
|
127
|
+
|
128
|
+
@media (prefers-color-scheme: dark) {
|
129
|
+
border: 1px solid $code-dark;
|
130
|
+
color: $code-dark;
|
131
|
+
}
|
132
|
+
|
133
|
+
@mixin media-query($device) {
|
134
|
+
@media screen and (max-width: $device) {
|
135
|
+
@content;
|
136
|
+
}
|
137
|
+
}
|
138
|
+
|
139
|
+
@include media-query(300px) {
|
140
|
+
visibility: hidden;
|
141
|
+
}
|
142
|
+
}
|
143
|
+
|
144
|
+
div {
|
145
|
+
counter-increment: code;
|
146
|
+
|
147
|
+
/* Line numbers */
|
148
|
+
&::before {
|
149
|
+
color: #608079;
|
150
|
+
content: counter(code);
|
151
|
+
|
152
|
+
width: 14px;
|
153
|
+
text-align: right;
|
154
|
+
|
155
|
+
/* Add a nice border */
|
156
|
+
display: inline-block;
|
157
|
+
padding-right: 30px / 4;
|
158
|
+
margin-right: 30px * 0.4;
|
159
|
+
border-right: 1px solid #656565;
|
160
|
+
|
161
|
+
/* For older browsers and Safari */
|
162
|
+
-webkit-touch-callout: none;
|
163
|
+
-webkit-user-select: none;
|
164
|
+
-khtml-user-select: none;
|
165
|
+
-moz-user-select: none;
|
166
|
+
-ms-user-select: none;
|
167
|
+
user-select: none;
|
168
|
+
}
|
169
|
+
}
|
170
|
+
}
|
171
|
+
}
|
172
|
+
}
|
173
|
+
|
174
|
+
/* Hide language */
|
175
|
+
.hide-lang + figure code::before {
|
176
|
+
visibility: hidden;
|
177
|
+
}
|
178
|
+
|
179
|
+
/**
|
180
|
+
* Language-specific settings
|
181
|
+
*/
|
182
|
+
|
183
|
+
.language-liquid {
|
184
|
+
.p {
|
185
|
+
color: #6aaf50;
|
186
|
+
}
|
187
|
+
}
|
188
|
+
|
189
|
+
/**
|
190
|
+
* ID-specific overrides
|
191
|
+
*/
|
192
|
+
|
193
|
+
#c-example + figure {
|
194
|
+
.kt {
|
195
|
+
color: #5180b3;
|
196
|
+
}
|
197
|
+
}
|
198
|
+
|
199
|
+
#liquid-example + figure {
|
200
|
+
.p {
|
201
|
+
color: #bdbdb3;
|
202
|
+
}
|
203
|
+
}
|
204
|
+
|
205
|
+
#borders-example + figure {
|
206
|
+
div {
|
207
|
+
&::before {
|
208
|
+
padding-left: 0.625em;
|
209
|
+
border-left: 1px solid #656565;
|
210
|
+
}
|
211
|
+
|
212
|
+
&:first-of-type::before {
|
213
|
+
padding-top: 0.25em;
|
214
|
+
border-top: 1px solid #656565;
|
215
|
+
border-top-left-radius: 4px;
|
216
|
+
border-top-right-radius: 4px;
|
217
|
+
}
|
218
|
+
|
219
|
+
&:last-of-type::before {
|
220
|
+
padding-bottom: 0.25em;
|
221
|
+
border-bottom: 1px solid #656565;
|
222
|
+
border-bottom-left-radius: 4px;
|
223
|
+
border-bottom-right-radius: 4px;
|
224
|
+
}
|
225
|
+
}
|
226
|
+
}
|
227
|
+
|
228
|
+
#yaml-example + figure {
|
229
|
+
.na, .s {
|
230
|
+
color: #ab75c3;
|
231
|
+
}
|
232
|
+
}
|
233
|
+
|
234
|
+
.hl-1 + figure .line-1 {
|
235
|
+
background-color: #112b47;
|
236
|
+
}
|