Autogenerate services.m3o.com (#37)

* Autogenerate services.m3o.com

* Openapi for all

* Gen

* Fix

* Whaat

* Fix dep

* Fix

* Hmm

* Install make

* Debug

* Debug 1

* Location -> locations

* Fix

* Intall protoc gen micro

* F

* F

* F

* Push

* Rename secret

* Fix npm install

* Fix script

* Fix v2

* Ignore errors

* Ignore v2

* F

* F

* F

* Docs index

* Add hugo theme

* Hugo tania fixes

* Change gen

* Change gen 2

* Install hugo

* Change gen

* Gen fix

* Change hugo install

* Change hugo install

* CNAME

* Change articles wording

* Tiny fix

* Fix gen

* Redoc it all

* Fix gen

* Fixing up protos

* Fix proto

* Fix gen

* Fix

* Trigger build

* Fix copy

* Openapi docs

* Flatten

* Changes

* No date vol2

* Changes

* Add make to chat

* Fixes

* Change

* api spec

* replace RSS

* fix link

* Dont continue on error

* increase the width

* use micro at master

* change box colours

* move some things

* Pushing new readmes to see how they look like

* Add skip file

* Readmes

* Nicer api link

* Remove stutter

* FIx mistake

* set service font weight

* Messages readme fix

* add other font bold

* Notes

* Remove post from url

* Revert "Remove post from url"

This reverts commit 5fea2c23d0bafa910f5dc4d4cc63f71f578530e3.

* move exampleSite to site

* replace exampleSite with site

* update readme

* use filename for post

* update index

* Add source urls

* set source as params

* set source as params

* Fix entries

* Generator in go

* Fixes to generator

* F

* Change doc gen

* FIx cname

* Fixing protos

* Change to makefiles

* Fix gen script

Co-authored-by: Asim Aslam <asim@aslam.me>
This commit is contained in:
Janos Dobronszki
2021-01-19 16:59:25 +00:00
committed by GitHub
parent ec81db0753
commit 40b71a9cf9
174 changed files with 10914 additions and 3157 deletions

View File

@@ -0,0 +1,171 @@
renderFootnotes = function () {
const removeEl = (el) => {
if (!el) return;
el.remove ? el.remove() : el.parentNode.removeChild(el);
};
const insertAfter = (target, sib) => {
target.after ? target.after(sib) : (
target.parentNode.insertBefore(sib, target.nextSibling)
);
};
const insideOut = (el) => {
var p = el.parentNode, x = el.innerHTML,
c = document.createElement('div'); // a tmp container
insertAfter(p, c);
c.appendChild(el);
el.innerHTML = '';
el.appendChild(p);
p.innerHTML = x; // let the original parent have the content of its child
insertAfter(c, c.firstElementChild);
removeEl(c);
};
document.querySelectorAll('.footnotes > ol > li[id^="fn"], #refs > div[id^="ref-"]').forEach(function (fn) {
a = document.querySelectorAll('a[href="#' + fn.id + '"]');
if (a.length === 0) return;
a.forEach(function (el) { el.removeAttribute('href') });
a = a[0];
side = document.createElement('div');
side.className = 'side side-right';
if (/^fn/.test(fn.id)) {
side.innerHTML = fn.innerHTML;
var number = a.innerText; // footnote number
side.firstElementChild.innerHTML = '<span class="bg-number">' + number +
'</span> ' + side.firstElementChild.innerHTML;
removeEl(side.querySelector('a[href^="#fnref"]')); // remove backreference
a.parentNode.tagName === 'SUP' && insideOut(a);
} else {
side.innerHTML = fn.outerHTML;
a = a.parentNode;
}
insertAfter(a, side);
a.classList.add('note-ref');
removeEl(fn);
})
document.querySelectorAll('.footnotes, #refs').forEach(function (fn) {
var items = fn.children;
if (fn.id === 'refs') return items.length === 0 && removeEl(fn);
// there must be a <hr> and an <ol> left
if (items.length !== 2 || items[0].tagName !== 'HR' || items[1].tagName !== 'OL') return;
items[1].childElementCount === 0 && removeEl(fn);
});
}();
renderAnchor = function () {
for (let num = 1; num <= 6; num++) {
// search h1-h6
const headers = document.querySelectorAll('.article-post>h' + num);
for (let i = 0; i < headers.length; i++) {
const header = headers[i];
// add anchor before h1-h6
header.innerHTML = `<a href="#${header.id}" class="anchor"><svg class="icon" aria-hidden="true" focusable="false" height="16" version="1.1" viewBox="0 0 16 16" width="16"><path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path></svg></a>${header.innerHTML}`;
}
}
}();
switchDarkMode = function () {
const rootElement = document.documentElement; // <html>
const darkModeStorageKey = 'user-color-scheme'; // use as localStorage's key
const rootElementDarkModeAttributeName = 'data-user-color-scheme';
const darkModeTogglebuttonElement = document.getElementById('dark-mode-button');
const setLS = (k, v) => {
try {
localStorage.setItem(k, v);
} catch (e) { }
}
const removeLS = (k) => {
try {
localStorage.removeItem(k);
} catch (e) { }
}
const getLS = (k) => {
try {
return localStorage.getItem(k);
} catch (e) {
return null // the same as localStorage.getItem() get nothing
}
}
const getModeFromCSSMediaQuery = () => {
// use matchMedia API
return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light'
}
const resetRootDarkModeAttributeAndLS = () => {
rootElement.removeAttribute(rootElementDarkModeAttributeName);
removeLS(darkModeStorageKey);
}
const validColorModeKeys = {
'dark': true,
'light': true
}
const modeIcons = {
'dark': '☀️',
'light': '🌙'
}
const setModeButtonIcon = (mode) => {
darkModeTogglebuttonElement.innerHTML = modeIcons[mode]
}
const applyCustomDarkModeSettings = (mode) => {
// receive user's operation or get previous mode from localStorage
const currentSetting = mode || getLS(darkModeStorageKey);
if (currentSetting === getModeFromCSSMediaQuery()) {
// When the user selected mode equal prefers-color-scheme
// reset and restored to automatic mode
nowMode = getModeFromCSSMediaQuery()
resetRootDarkModeAttributeAndLS();
} else if (validColorModeKeys[currentSetting]) {
nowMode = currentSetting
rootElement.setAttribute(rootElementDarkModeAttributeName, currentSetting);
} else {
// 首次访问或从未使用过开关、localStorage 中没有存储的值currentSetting 是 null
// 或者 localStorage 被篡改currentSetting 不是合法值
nowMode = getModeFromCSSMediaQuery()
resetRootDarkModeAttributeAndLS();
}
setModeButtonIcon(nowMode)
}
const invertDarkModeObj = {
'dark': 'light',
'light': 'dark'
}
const toggleCustomDarkMode = () => {
let currentSetting = getLS(darkModeStorageKey);
if (validColorModeKeys[currentSetting]) {
// get mode from localStorage and set the opposite
currentSetting = invertDarkModeObj[currentSetting];
} else if (currentSetting === null) {
// if get null from localStorage
// get mode from prefers-color-scheme and set the opposite
currentSetting = invertDarkModeObj[getModeFromCSSMediaQuery()];
} else {
// get anything error, return
return;
}
// set opposite mode into localStorage
setLS(darkModeStorageKey, currentSetting);
return currentSetting;
}
// when page loaded set page mode
applyCustomDarkModeSettings();
darkModeTogglebuttonElement.addEventListener('click', () => {
// handle user click switch dark mode button
applyCustomDarkModeSettings(toggleCustomDarkMode());
})
}();

View File

@@ -0,0 +1,51 @@
@media (prefers-color-scheme: dark) {
:root {
--color-mode: dark;
}
:root:not([data-user-color-scheme]) {
--h1-color: white;
--font-color: #b3b9c5;
--heading-color: #ffd479;
--dark-font-color: #ced4da;
--background: #1f2022;
--medium-font-color: #dee2e6;
--light-font-color: #868e96;
--light-background: #2D2D31;
--light-background-hover: #3b3b3e;
--code-background-color: #2e2e30;
--border: #404040;
--link-color: #6ab0f3;
--link-color-darker: #4a72a5;
--link-hover-color: #e1a6f2;
--navbar-color: #1d1d1d;
--blockquote: #2b2b2b;
--blockquote-left: #191919;
--transparent-text: rgba(255, 255, 255, 0.7);
--transparent-bg: rgba(0, 0, 0, 0.2);
--light-transparent-bg: rgba(255, 255, 255, 0.05);
}
}
[data-user-color-scheme='dark'] {
--h1-color: white;
--font-color: #b3b9c5;
--heading-color: #ffd479;
--dark-font-color: #ced4da;
--background: #1f2022;
--medium-font-color: #dee2e6;
--light-font-color: #868e96;
--light-background: #2D2D31;
--light-background-hover: #3b3b3e;
--code-background-color: #2e2e30;
--border: #404040;
--link-color: #6ab0f3;
--link-color-darker: #4a72a5;
--link-hover-color: #e1a6f2;
--navbar-color: #1d1d1d;
--blockquote: #2b2b2b;
--blockquote-left: #191919;
--transparent-text: rgba(255, 255, 255, 0.7);
--transparent-bg: rgba(0, 0, 0, 0.2);
--light-transparent-bg: rgba(255, 255, 255, 0.05);
}

View File

@@ -0,0 +1,29 @@
/* Grid and flex */
.flex {
display: flex;
align-items: center;
}
.flex-row {
display: flex;
flex-direction: column;
}
@media screen and (min-width: 800px) {
.flex-row {
flex-direction: row;
}
}
.flex-col {
flex: 1;
}
.flex-two-thirds {
flex: 2;
}
.justify-center {
justify-content: center;
}

View File

@@ -0,0 +1,171 @@
/* Headings */
h1 {
color: var(--h1-color);
}
h3,
h4 {
color: var(--medium-font-color);
}
h2,
h5 {
color: var(--heading-color);
}
h1,
h2,
h3,
h4,
h5 {
margin: 0 0 1.5rem 0;
font-weight: 700;
line-height: 1.2;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
h1:not(:first-child),
h2:not(:first-child),
h3:not(:first-child),
h4:not(:first-child) {
margin-top: 3rem;
}
h1 {
font-size: 2.5rem;
line-height: 1.1;
}
h2 {
font-size: 1.75rem;
padding-bottom: 0.5rem;
border-bottom: 4px solid var(--light-background);
code {
font-size: 1.75rem !important;
}
}
h3 {
font-size: 1.5rem;
color: var(--font-color);
font-weight: 600;
margin-bottom: 1rem;
code {
font-size: 1.4rem !important;
}
}
h4 {
font-size: 1.3rem;
color: var(--font-color);
font-weight: 500;
margin-bottom: 1rem;
border-bottom: 2px solid var(--light-background);
padding-bottom: 0.25rem;
}
h5 {
font-size: 1.2rem;
margin-bottom: 1rem;
}
@media screen and (min-width: 800px) {
h1 {
font-size: 3rem;
}
h2 {
font-size: 1.9rem;
code {
font-size: 1.9rem !important;
}
}
h3 {
font-size: 1.7rem;
color: var(--font-color);
font-weight: 600;
code {
font-size: 1.6rem !important;
}
}
h4 {
font-weight: 400;
font-size: 1.4rem;
}
}
a {
&.link {
display: block;
padding: 0.25rem 0;
margin: 0.25rem 0;
border-radius: 0.35rem;
font-weight: 600;
color: var(--dark-font-color);
&:hover {
color: var(--link-color);
}
}
&.button {
display: inline-block;
border: 2px solid var(--link-color);
padding: 0.3rem 0.6rem;
margin-right: 0.75rem;
font-weight: 500;
background: var(--link-color);
color: white;
border-radius: 0.35rem;
font-size: 0.9rem;
&.large {
padding: 0.8rem 1rem;
font-size: 1.05rem;
}
&.secondary {
border: 2px solid #edf2ff;
background: #edf2ff;
color: #3b5bdb;
}
&:hover, &.secondary:hover {
border: 2px solid var(--link-color-darker);
background: var(--link-color-darker);
color: white;
}
}
}
@media screen and (min-width: 800px) {
a.button {
font-size: 0.9rem;
&.large {
padding: 1rem 1.5rem;
font-size: 1.1rem;
}
}
}
p.subtitle {
color: var(--medium-font-color);
font-size: 1.3rem;
font-weight: 300;
margin-bottom: 0;
}
@media screen and (min-width: 800px) {
p.subtitle {
font-size: 1.5rem;
}
}

View File

@@ -0,0 +1,19 @@
/* Links */
a {
color: inherit;
text-decoration: none;
&.image-link {
border-width: 0;
}
code[class*='language-'] {
color: var(--link-color) !important;
&:hover {
background: var(--link-color) !important;
color: white !important;
}
}
}

View File

@@ -0,0 +1,379 @@
/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */
/* Document
========================================================================== */
/**
* 1. Correct the line height in all browsers.
* 2. Prevent adjustments of font size after orientation changes in iOS.
*/
html {
line-height: 1.15;
/* 1 */
-webkit-text-size-adjust: 100%;
/* 2 */
}
/* Sections
========================================================================== */
/**
* Remove the margin in all browsers.
*/
body {
margin: 0;
}
/**
* Render the `main` element consistently in IE.
*/
main {
display: block;
}
/**
* Correct the font size and margin on `h1` elements within `section` and
* `article` contexts in Chrome, Firefox, and Safari.
*/
h1 {
font-size: 2em;
margin: 0.67em 0;
}
/* Grouping content
========================================================================== */
/**
* 1. Add the correct box sizing in Firefox.
* 2. Show the overflow in Edge and IE.
*/
hr {
box-sizing: content-box;
/* 1 */
height: 0;
/* 1 */
overflow: visible;
/* 2 */
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
pre {
font-family: monospace, monospace;
/* 1 */
font-size: 1em;
/* 2 */
}
/* Text-level semantics
========================================================================== */
/**
* Remove the gray background on active links in IE 10.
*/
a {
background-color: transparent;
}
/**
* 1. Remove the bottom border in Chrome 57-
* 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.
*/
abbr[title] {
border-bottom: none;
/* 1 */
text-decoration: underline;
/* 2 */
text-decoration: underline dotted;
/* 2 */
}
/**
* Add the correct font weight in Chrome, Edge, and Safari.
*/
b,
strong {
font-weight: bolder;
}
/**
* 1. Correct the inheritance and scaling of font size in all browsers.
* 2. Correct the odd `em` font sizing in all browsers.
*/
code,
kbd,
samp {
font-family: monospace, monospace;
/* 1 */
font-size: 1em;
/* 2 */
}
/**
* Add the correct font size in all browsers.
*/
small {
font-size: 80%;
}
/**
* Prevent `sub` and `sup` elements from affecting the line height in
* all browsers.
*/
sub,
sup {
font-size: 75%;
line-height: 0;
position: relative;
vertical-align: baseline;
}
sub {
bottom: -0.25em;
}
sup {
top: -0.5em;
}
/* Embedded content
========================================================================== */
/**
* Remove the border on images inside links in IE 10.
*/
img {
border-style: none;
}
/* Forms
========================================================================== */
/**
* 1. Change the font styles in all browsers.
* 2. Remove the margin in Firefox and Safari.
*/
button,
input,
optgroup,
select,
textarea {
font-family: inherit;
/* 1 */
font-size: 100%;
/* 1 */
line-height: 1.15;
/* 1 */
margin: 0;
/* 2 */
}
/**
* Show the overflow in IE.
* 1. Show the overflow in Edge.
*/
button,
input {
/* 1 */
overflow: visible;
}
/**
* Remove the inheritance of text transform in Edge, Firefox, and IE.
* 1. Remove the inheritance of text transform in Firefox.
*/
button,
select {
/* 1 */
text-transform: none;
}
/**
* Correct the inability to style clickable types in iOS and Safari.
*/
button,
[type="button"],
[type="reset"],
[type="submit"] {
-webkit-appearance: button;
}
/**
* Remove the inner border and padding in Firefox.
*/
button::-moz-focus-inner,
[type="button"]::-moz-focus-inner,
[type="reset"]::-moz-focus-inner,
[type="submit"]::-moz-focus-inner {
border-style: none;
padding: 0;
}
/**
* Restore the focus styles unset by the previous rule.
*/
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
outline: 1px dotted ButtonText;
}
/**
* Correct the padding in Firefox.
*/
fieldset {
padding: 0.35em 0.75em 0.625em;
}
/**
* 1. Correct the text wrapping in Edge and IE.
* 2. Correct the color inheritance from `fieldset` elements in IE.
* 3. Remove the padding so developers are not caught out when they zero out
* `fieldset` elements in all browsers.
*/
legend {
box-sizing: border-box;
/* 1 */
color: inherit;
/* 2 */
display: table;
/* 1 */
max-width: 100%;
/* 1 */
padding: 0;
/* 3 */
white-space: normal;
/* 1 */
}
/**
* Add the correct vertical alignment in Chrome, Firefox, and Opera.
*/
progress {
vertical-align: baseline;
}
/**
* Remove the default vertical scrollbar in IE 10+.
*/
textarea {
overflow: auto;
}
/**
* 1. Add the correct box sizing in IE 10.
* 2. Remove the padding in IE 10.
*/
[type="checkbox"],
[type="radio"] {
box-sizing: border-box;
/* 1 */
padding: 0;
/* 2 */
}
/**
* Correct the cursor style of increment and decrement buttons in Chrome.
*/
[type="number"]::-webkit-inner-spin-button,
[type="number"]::-webkit-outer-spin-button {
height: auto;
}
/**
* 1. Correct the odd appearance in Chrome and Safari.
* 2. Correct the outline style in Safari.
*/
[type="search"] {
-webkit-appearance: textfield;
/* 1 */
outline-offset: -2px;
/* 2 */
}
/**
* Remove the inner padding in Chrome and Safari on macOS.
*/
[type="search"]::-webkit-search-decoration {
-webkit-appearance: none;
}
/**
* 1. Correct the inability to style clickable types in iOS and Safari.
* 2. Change font properties to `inherit` in Safari.
*/
::-webkit-file-upload-button {
-webkit-appearance: button;
/* 1 */
font: inherit;
/* 2 */
}
/* Interactive
========================================================================== */
/*
* Add the correct display in Edge, IE 10+, and Firefox.
*/
details {
display: block;
}
/*
* Add the correct display in all browsers.
*/
summary {
display: list-item;
}
/* Misc
========================================================================== */
/**
* Add the correct display in IE 10+.
*/
template {
display: none;
}
/**
* Add the correct display in IE 10.
*/
[hidden] {
display: none;
}

View File

@@ -0,0 +1,5 @@
*,
*::before,
*::after {
box-sizing: border-box;
}

View File

@@ -0,0 +1,179 @@
/* Scaffolding */
html {
font-family: -apple-system, BlinkMacSystemFont, 'Helvetica Neue', 'Roboto',
Roboto, Arial, 'Noto Sans', sans-serif, 'Apple Color Emoji', 'Segoe UI',
'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
color: var(--font-color);
font-weight: 400;
font-size: 1rem;
line-height: 1.75;
}
body {
background: var(--background);
margin: 0;
padding: 0;
}
section {
margin: 2rem 0;
&:first-of-type {
margin-top: 0;
}
>h2 {
display: flex;
align-items: center;
font-size: 1.6rem;
margin-top: 0;
margin-bottom: 0.5rem;
}
}
@media screen and (min-width: 800px) {
section>h2 {
margin-bottom: 2rem;
}
}
.index h2,
section>h2 {
border-bottom-width: 0;
}
@media screen and (min-width: 800px) {
.index h2,
section>h2 {
border-bottom-width: 4px;
}
}
a.section-button {
font-weight: 500;
background: var(--light-background);
color: var(--dark-font-color);
padding: 0.4rem 0.6rem;
font-size: 0.8rem;
border-radius: 0.3rem;
border-width: 0 !important;
white-space: nowrap;
line-height: 1;
margin-left: 2rem;
margin-top: 0.5rem;
&:hover {
background: var(--light-background-hover);
color: var(--heading-color);
}
}
@media screen and (min-width: 800px) {
section {
margin: 3.5rem 0;
>h2 {
font-size: 2rem;
margin: 0 0 1rem;
}
}
}
.container {
max-width: 1025px;
padding: 0 1.5rem;
margin-left: auto;
margin-right: auto;
&.page p {
max-width: 600px;
}
}
@media screen and (min-width: 800px) {
.container {
padding: 0 2rem;
}
}
img {
display: inline-block;
max-width: 100%;
height: auto;
}
p,
ol,
ul,
dl,
table,
blockquote {
font-size: 1.05rem;
margin: 0 0 1.5rem 0;
}
ul {
padding: 0 1rem;
}
@media screen and (min-width: 800px) {
p,
ol,
ul,
dl,
table,
blockquote {
font-size: 1.125rem;
}
ul {
padding: 0 2rem;
}
}
ul li p {
margin: 0;
}
ul li ul {
padding-left: 1rem;
margin: 0;
}
ul li ul li {
margin: 0;
}
ol li ol {
margin-bottom: 0;
}
.task-list-item [type='checkbox'] {
margin-right: 0.5rem;
}
blockquote {
margin: 2rem 0;
padding: 1rem;
background: var(--blockquote);
font-weight: 400;
border-left: 5px solid var(--blockquote-left);
}
blockquote :not(pre)>code[class*='language-'] {
background: rgba(0, 0, 0, 0.1) !important;
}
@media screen and (min-width: 800px) {
blockquote {
padding: 2rem 0 2rem 2rem;
}
}
::selection {
background: #3b5bdb;
color: white;
}

View File

@@ -0,0 +1,21 @@
:root {
--color-mode: light;
--h1-color: #343a40;
--font-color: #495057;
--heading-color: #343a40;
--background: white;
--dark-font-color: #1b1d25;
--medium-font-color: #60656c;
--light-font-color: #858b93;
--light-background: #f1f4f8;
--light-background-hover: #e1e6ed;
--border: #d6d9de;
--link-color: #5183f5;
--link-color-darker: #364fc7;
--navbar-color: #1b1d25;
--blockquote: #f9f9f9;
--blockquote-left: #e3e6eb;
--transparent-text: rgba(0, 0, 0, 0.7);
--transparent-bg: rgba(0, 0, 0, 0.05);
--light-transparent-bg: rgba(255, 255, 255, 0.1);
}

View File

@@ -0,0 +1,11 @@
.my {
padding-top: 2rem;
a {
border: none;
margin-right: 1rem;
&:hover {
border: none;
}
}
}

View File

@@ -0,0 +1,77 @@
/* Footer */
.footer {
padding: 2rem 0;
>.flex {
flex-direction: column;
align-items: center;
justify-content: center;
}
img {
height: 30px;
width: 30px;
}
a {
border-radius: 0.35rem;
margin: 0 0.05rem;
font-weight: 400;
font-size: 1rem;
border: 1px solid transparent;
padding: 0.5rem;
margin: 0 0.5rem;
color: var(--light-font-color);
&:hover {
color: var(--heading-color);
background: var(--light-background);
}
&.img {
display: flex;
align-items: center;
padding: 0;
margin: 0 0.75rem;
background: none;
}
}
}
.footer-links {
display: flex;
align-items: center;
justify-content: center;
flex-wrap: wrap;
}
.flex nav {
padding: 1rem 0;
}
@media screen and (min-width: 800px) {
.footer {
>.flex {
align-items: flex-start;
margin-left: -1.5rem;
margin-right: -1.5rem;
}
a {
padding: 0.75rem;
&.img {
padding: 0 0.5rem;
margin: 0 1rem;
}
}
}
}
@media print {
.footer {
display: none;
}
}

View File

@@ -0,0 +1,18 @@
/* Helpers */
.small {
max-width: 600px;
}
time,
.meta {
color: var(--light-font-color);
font-size: 0.85rem;
white-space: nowrap;
font-weight: 400;
}
.meta {
color: var(--medium-font-color);
font-size: 1rem;
}

View File

@@ -0,0 +1,165 @@
$code-font-size: 0.9rem !default;
$code-color: #f8f8f2 !default;
$code-background: #373b41 !default;
$gray: #cacaca !default;
$code-font-family: Consolas, Monaco, Menlo, "DejaVu Sans Mono",
"Bitstream Vera Sans Mono", "Courier New", monospace !default;
code, pre {
font-size: $code-font-size;
font-family: $code-font-family;
background: $code-background;
}
:not(pre) > code {
color: var(--dark-font-color);
background: var(--light-background);
}
code {
padding: 3px 5px;
border-radius: 4px;
color: $code-color;
}
pre > code {
display: block;
}
.highlight > .chroma {
margin: 0;
border-radius: 5px;
overflow-x: auto;
box-shadow: 1px 1px 2px rgba(0,0,0,0.125);
position: relative;
background: $code-background;
code {
padding: 30px 10px 10px;
}
code[data-lang]::before {
position: absolute;
top: 0;
right: 0;
left: 0;
padding: 2px 10px;
width: 100%;
height: 30px;
font-size: $code-font-size;
line-height: 1.9;
font-weight: bold;
color: #b1b1b1;
background: darken($code-background, 3%);
content: attr(data-lang);
}
table {
position: relative;
border: none;
code {
padding: 0;
}
}
.lntd {
&:first-child {
width: 10px;
pre {
margin: 0;
padding: 30px 7px 10px;
}
}
&:last-child {
vertical-align: top;
pre {
margin: 0;
padding: 30px 10px 10px;
}
}
}
table, tr, td {
margin: 0;
padding: 0;
width: 100%;
border-collapse: collapse;
border: none;
}
/* LineHighlight */ .hl { display: block; width: 100%;background-color: black }
/* LineNumbersTable */ .lnt { color: #7f7f7f }
/* LineNumbers */ .ln { padding: 0 0.4em 0 0.4em;color: #7f7f7f }
.err { color: #960050 } /* Error */
.c { color: #999999 } /* Comment */
.err { color: #f2777a } /* Error */
.k { color: #cc99cc } /* Keyword */
.l { color: #f99157 } /* Literal */
.n { color: #cccccc } /* Name */
.o { color: #66cccc } /* Operator */
.p { color: #cccccc } /* Punctuation */
.cm { color: #999999 } /* Comment.Multiline */
.cp { color: #999999 } /* Comment.Preproc */
.c1 { color: #999999 } /* Comment.Single */
.cs { color: #999999 } /* Comment.Special */
.gd { color: #f2777a } /* Generic.Deleted */
.ge { font-style: italic } /* Generic.Emph */
.gh { color: #cccccc; font-weight: bold } /* Generic.Heading */
.gi { color: #99cc99 } /* Generic.Inserted */
.gp { color: #999999; font-weight: bold } /* Generic.Prompt */
.gs { font-weight: bold } /* Generic.Strong */
.gu { color: #66cccc; font-weight: bold } /* Generic.Subheading */
.kc { color: #cc99cc } /* Keyword.Constant */
.kd { color: #cc99cc } /* Keyword.Declaration */
.kn { color: #66cccc } /* Keyword.Namespace */
.kp { color: #cc99cc } /* Keyword.Pseudo */
.kr { color: #cc99cc } /* Keyword.Reserved */
.kt { color: #ffcc66 } /* Keyword.Type */
.ld { color: #99cc99 } /* Literal.Date */
.m { color: #f99157 } /* Literal.Number */
.s { color: #99cc99 } /* Literal.String */
.na { color: #6699cc } /* Name.Attribute */
.nb { color: #cccccc } /* Name.Builtin */
.nc { color: #ffcc66 } /* Name.Class */
.no { color: #f2777a } /* Name.Constant */
.nd { color: #66cccc } /* Name.Decorator */
.ni { color: #cccccc } /* Name.Entity */
.ne { color: #f2777a } /* Name.Exception */
.nf { color: #6699cc } /* Name.Function */
.nl { color: #cccccc } /* Name.Label */
.nn { color: #ffcc66 } /* Name.Namespace */
.nx { color: #6699cc } /* Name.Other */
.py { color: #cccccc } /* Name.Property */
.nt { color: #66cccc } /* Name.Tag */
.nv { color: #f2777a } /* Name.Variable */
.ow { color: #66cccc } /* Operator.Word */
.w { color: #cccccc } /* Text.Whitespace */
.mf { color: #f99157 } /* Literal.Number.Float */
.mh { color: #f99157 } /* Literal.Number.Hex */
.mi { color: #f99157 } /* Literal.Number.Integer */
.mo { color: #f99157 } /* Literal.Number.Oct */
.sb { color: #99cc99 } /* Literal.String.Backtick */
.sc { color: #cccccc } /* Literal.String.Char */
.sd { color: #999999 } /* Literal.String.Doc */
.s2 { color: #99cc99 } /* Literal.String.Double */
.se { color: #f99157 } /* Literal.String.Escape */
.sh { color: #99cc99 } /* Literal.String.Heredoc */
.si { color: #f99157 } /* Literal.String.Interpol */
.sx { color: #99cc99 } /* Literal.String.Other */
.sr { color: #99cc99 } /* Literal.String.Regex */
.s1 { color: #99cc99 } /* Literal.String.Single */
.ss { color: #99cc99 } /* Literal.String.Symbol */
.bp { color: #cccccc } /* Name.Builtin.Pseudo */
.vc { color: #f2777a } /* Name.Variable.Class */
.vg { color: #f2777a } /* Name.Variable.Global */
.vi { color: #f2777a } /* Name.Variable.Instance */
.il { color: #f99157 } /* Literal.Number.Integer.Long */
}

View File

@@ -0,0 +1,166 @@
/* Navbar */
main {
margin-top: 50px;
}
@media screen and (min-width: 800px) {
main {
margin-top: 0;
}
}
.emoji {
margin: 0 0.4rem 0 0.1rem;
}
.navbar {
width: 100%;
position: fixed;
top: 0;
left: 0;
background: var(--navbar-color);
box-shadow: 0 3px 13px rgba(100, 110, 140, 0.1),
0 2px 4px rgba(100, 110, 140, 0.15);
z-index: 2;
padding: 0.5rem;
.flex {
justify-content: space-between;
}
a {
border-radius: 0.35rem;
margin: 0 0.05rem;
color: rgba(255, 255, 255, 0.65);
font-weight: 400;
font-size: 0.85rem;
border: 1px solid transparent;
padding: 0 0.3rem;
background: transparent;
&:first-of-type {
margin-left: -1rem;
}
.emoji {
display: none;
}
&.brand {
font-weight: 500;
color: white;
white-space: nowrap;
border: none;
display: flex;
align-items: center;
line-height: 1;
background: transparent;
.emoji {
display: inline-block !important;
}
img {
height: 22px;
width: 22px;
}
}
}
button {
font-size: 1rem;
margin-right: -1rem;
}
}
@media screen and (min-width: 500px) {
.navbar a {
font-size: 0.95rem;
padding: 0.5rem;
}
}
@media screen and (min-width: 800px) {
.emoji {
margin: 0 0.5rem 0 0.1rem;
}
.navbar {
position: static;
padding: 1.5rem 0;
background: transparent;
box-shadow: none;
.flex {
justify-content: space-between;
}
a {
padding: 0.75rem 1.25rem;
margin: 0 0.25rem;
font-size: 1.2rem;
font-weight: 400;
color: var(--font-color);
&:first-of-type {
margin-left: -1.5rem;
}
&:hover, &[aria-current='page'] {
background: var(--light-background);
color: var(--dark-font-color);
}
&.brand {
font-size: 1.3rem;
margin-right: 3rem;
border: none;
background: transparent !important;
color: var(--dark-font-color);
&:hover {
background: var(--light-background) !important;
}
img {
height: 26px;
width: 26px;
margin-right: 0.25rem;
}
}
}
}
#dark-mode-button:hover {
background: var(--light-background);
}
}
@media print {
.navbar {
display: none;
}
}
#dark-mode-button {
display: flex;
border: none;
padding: 0.2rem 0.7rem 0.2rem 0.5rem;
border-radius: 0.35rem;
box-sizing: content-box;
cursor: pointer;
font-size: 1.1rem;
background: transparent;
&:focus {
outline: none;
}
}
@media screen and (min-width: 800px) {
#dark-mode-button {
padding: 0.95rem 0.75rem;
font-size: 1.2rem;
}
}

View File

@@ -0,0 +1,173 @@
/* Post */
header {
padding: 1.5rem 0;
h1 {
font-size: 2rem;
display: inline-block;
font-weight: 600;
margin-top: 1rem;
}
u {
display: inline-block;
text-decoration: none;
padding: 0.4rem 0;
}
}
.article-header {
padding-top: 2rem;
margin-bottom: 0.5rem;
.container {
padding-left: 0;
padding-right: 0;
}
.thumb {
display: flex;
flex-direction: column;
}
h1 {
font-weight: 700;
font-size: 1.8rem;
margin: 0;
}
.description {
font-size: 1.2rem;
color: var(--light-font-color);
font-weight: 300;
margin-top: 2rem;
margin-bottom: 0;
}
}
.post-meta {
margin-top: 1rem;
padding: 0;
color: var(--light-font-color);
font-size: 0.9rem;
a {
color: var(--font-color);
border-width: 0;
}
time {
margin-top: 0.2rem;
font-size: 0.9rem;
}
.tags {
margin-top: 0.5rem;
a {
text-decoration: none;
}
}
}
.article-post {
margin-bottom: 2rem;
a {
box-shadow: 0px -2px 0px rgba(189, 195, 199, 0.5) inset;
transition: all .3s ease;
&:hover {
box-shadow: 0px -10px 0px rgba(189, 195, 199, 0.7) inset;
}
}
@for $i from 1 through 6 {
h#{$i} {
.anchor {
stroke: var(--link-color);
stroke-width: 1px;
fill: var(--link-color);
font-weight: 700;
left: -0.25rem;
border-width: 0;
float: left;
line-height: 1;
margin-left: -20px;
padding-right: 4px;
box-shadow: none;
transition: none;
.icon {
visibility: hidden;
}
}
&:hover {
.anchor {
box-shadow: none;
.icon {
visibility: visible;
}
}
}
}
}
}
@media screen and (min-width: 800px) {
.article-post {
margin-bottom: 3rem;
}
.article-post h1,
.article-post h2,
.article-post h3,
.article-post h4,
.article-post h5 {
padding-top: 1rem;
}
.post-meta {
margin-top: 1.5rem;
padding: 1rem 0;
}
header h1 {
font-size: 3rem;
margin-top: 2rem;
}
header u {
background: linear-gradient(transparent 85%, #bac8ff 0);
}
.article-header {
padding-top: 3rem;
h1 {
padding-top: 0;
font-size: 2.5rem;
}
.thumb {
flex-direction: row;
}
.description {
font-size: 1.8rem;
line-height: 1.5;
}
}
}
@media screen and (min-width: 1100px) {
.article-header h1 {
font-size: 2.5rem;
}
}
.post-thumbnail {
display: block !important;
}

View File

@@ -0,0 +1,26 @@
.new-post,
.popular-post {
display: inline-block;
color: #111;
padding: 0.3rem 0.4rem;
border-radius: 0.3rem;
font-size: 0.85rem;
margin-left: 1rem;
}
.new-post {
background: #d3f9d8;
}
.popular-post {
background: #dce6fd;
color: var(--heading-color);
}
@media screen and (min-width: 800px) {
.new-post,
.popular-post {
margin-bottom: 0;
}
}

View File

@@ -0,0 +1,68 @@
/* Posts */
.post-row {
display: flex;
align-items: center;
width: 100%;
time {
display: block;
flex: 0 0 65px;
}
h3 {
flex: 1;
}
}
.posts .post:last-of-type a {
border-bottom-width: 0;
}
.post {
a {
display: flex;
align-items: center;
justify-content: stretch;
padding: 1rem 0;
border-bottom: 2px solid var(--light-background);
&:hover {
border-radius: 0.3rem;
}
}
h3 {
margin-top: 0.1rem;
margin-bottom: 0;
font-size: 1.1rem;
font-weight: 600;
}
}
@media screen and (min-width: 800px) {
.posts {
margin-left: -1rem;
margin-right: -1rem;
}
.post {
a {
padding: 0.75rem 1rem;
border-bottom-color: transparent;
&:hover {
background: var(--light-background);
}
}
h3 {
font-size: 1.3rem;
}
}
.post-row time {
flex: 0 0 80px;
}
}

View File

@@ -0,0 +1,58 @@
/* Projects */
.projects .project:last-of-type {
border-bottom-width: 0;
}
.project {
display: flex;
align-items: center;
justify-content: space-between;
padding: 0.75rem 0;
border-bottom: 2px solid var(--light-background);
.icon {
font-size: 1.5rem;
width: 40px;
}
a {
display: flex;
align-items: center;
margin-bottom: 0.25rem;
border-width: 0;
&:hover h3 {
text-decoration: underline;
}
&.button {
margin-left: 1.5rem;
border-width: 2px;
}
}
h3 {
font-size: 1.2rem;
margin: 0;
}
.description {
font-size: 1.1rem;
color: var(--light-font-color);
}
}
@media screen and (min-width: 800px) {
.project {
border-bottom-width: 0;
h3 {
font-size: 1.3rem;
}
.description {
font-size: 1rem;
}
}
}

View File

@@ -0,0 +1,57 @@
.side {
width: 200px;
margin: 0 auto;
}
.side-right {
float: right;
clear: right;
margin-right: calc(-200px - 2em);
p {
font-size: .9rem;
}
}
.note-ref {
cursor: pointer;
border: none;
&:hover {
border: none;
}
}
.bg-number {
background: var(--light-background);
font-size: .9rem;
color: var(--font-color);
text-decoration: none;
padding: 1px 5px;
border-radius: 5px;
}
@media (max-width: 1280px) {
.side {
width: 100%;
padding: 0 2em;
}
.side-right {
float: none;
clear: both;
margin: 1em auto;
background: none;
}
}
@media (min-width: 1280px) {
.note-ref:hover ~ .side {
display: inline-block;
position: absolute;
margin-left: 1rem;
padding: .5rem;
box-sizing: content-box;
}
}

View File

@@ -0,0 +1,46 @@
/* Suggested */
.suggested {
flex-direction: column;
align-items: stretch;
margin-left: -1rem;
margin-right: -1rem;
padding: 0;
span {
font-weight: 400;
display: block;
font-size: 0.9rem;
color: var(--transparent-text);
}
a {
background: none;
margin: 0.5rem 1rem;
border-bottom: none;
transition: all 0.2s ease;
padding: 1.5rem;
border-radius: 0.35rem;
color: var(--heading-color);
border: 1px solid #eeeeee;
&:hover {
transform: translate3D(0, -1px, 0);
background: var(--light-background-hover);
}
}
}
@media screen and (min-width: 800px) {
.suggested {
flex-direction: row;
a {
flex: 0 0 calc(50% - 2rem);
&:first-of-type {
text-align: right;
}
}
}
}

View File

@@ -0,0 +1,49 @@
/* Tables */
table {
border-collapse: separate;
border-spacing: 0;
width: 100%;
max-width: 100%;
overflow-x: auto;
}
thead,
tbody {
white-space: nowrap;
}
th {
border-bottom: 2px solid var(--border);
}
tfoot th {
border-top: 1px solid var(--border);
}
td {
border-bottom: 1px solid var(--border);
}
th,
td {
text-align: left;
padding: 0.75rem;
hyphens: auto;
}
tbody tr:nth-child(even) {
background-color: var(--light-background);
}
@media screen and (min-width: 800px) {
table {
display: table;
border: 1px solid var(--border);
}
thead,
tbody {
white-space: normal;
}
}

View File

@@ -0,0 +1,74 @@
/* Tags */
.count {
font-weight: 700;
color: var(--link-color);
}
.tags {
display: flex !important;
flex-wrap: wrap;
align-items: center;
margin-left: -0.5rem;
margin-right: -0.5rem;
>a {
display: block;
font-weight: 500;
background: var(--light-background);
color: var(--font-color);
margin: 0.2rem;
padding: 0.5rem 0.6rem;
font-size: 0.8rem;
border-radius: 0.3rem;
border-bottom: 0;
white-space: nowrap;
line-height: 1;
&:hover {
background: var(--light-background-hover);
color: var(--heading-color);
}
}
}
mark {
background: #ffec99;
}
.utterances {
margin-left: -4px;
margin-right: -4px;
}
kbd {
background-color: #f7f7f7;
border: 2px solid rgba(0, 0, 0, 0.3);
border-radius: 3px;
box-shadow: 0 1px 0 rgba(0, 0, 0, 0.2), inset 0 0 0 2px #fff;
color: #333;
display: inline-block;
font-family: Helvetica Neue, Inter, -apple-system, BlinkMacSystemFont,
Helvetica, Arial, sans-serif;
line-height: 1.4;
margin: 0 0.1em;
padding: 0.1em 0.6em;
text-shadow: 0 1px 0 #fff;
font-size: 14px;
}
#comments {
margin-top: 3rem;
}
#comments h2 {
margin: 0;
}
@media print {
.comments,
#comments {
display: none;
}
}

View File

@@ -0,0 +1,15 @@
.terms {
a {
padding: .75rem 1.25rem;
margin: 0 .25rem;
font-size: 1.2rem;
font-weight: 400;
color: var(--font-color);
border-radius: .35rem;
&:hover {
background: var(--light-background);
color: var(--dark-font-color);
}
}
}

View File

@@ -0,0 +1,26 @@
@import "base/normalize";
@import "base/reset";
@import "base/variables";
@import "base/grid";
@import "base/scaffolding";
@import "base/headings";
@import "base/links";
@import "components/navbar";
@import "components/bio";
@import "components/posts";
@import "components/post_tag";
@import "components/footer";
@import "components/helpers";
@import "components/table";
@import "components/tags";
@import "components/post";
@import "components/highlight";
@import "components/side";
@import "components/suggested";
@import "components/projects";
@import "components/terms";
@import "base/dark";