1
0
mirror of https://github.com/kremalicious/blog.git synced 2025-01-02 18:13:10 +01:00

more base typography

This commit is contained in:
Matthias Kretschmann 2018-07-18 02:19:32 +02:00
parent 5057d0d716
commit d01499f87a
Signed by: m
GPG Key ID: 606EEEF3C479A91F
8 changed files with 514 additions and 89 deletions

View File

@ -1,77 +0,0 @@
//
// kremalicious3
// --------------
// Code
//
code,
kbd,
pre,
samp
font-family: $font-family-monospace
font-size: $font-size-small
hyphens: none
code,
kbd
padding: 2px 4px
code,
samp
color: darken($code-color, 40%)
background-color: alpha($code-bg, 5%)
border-radius: $border-radius-base
kbd
color: $kbd-color
background-color: $kbd-bg
border-radius: $border-radius-small
border: 1px solid $kbd-bg
box-shadow: inset 0 1px 0 rgba(#fff, .4)
pre
display: block
padding: 0
margin-bottom: $spacer
line-height: $line-height
color: $code-color
background-color: $code-bg
margin-left: -($spacer)
margin-right: -($spacer)
// make 'em scrollable
overflow: scroll
-webkit-overflow-scrolling: touch
max-height: 300px
@media $screen-sm
max-height: 500px
@media $screen-md
border-radius: $border-radius-base
// Account for some code outputs that place code tags in pre tags
code
white-space: pre
overflow: auto
display: block
padding: $spacer
font-size: inherit
color: inherit
background-color: transparent
border-radius: 0
overflow-wrap: normal
word-wrap: normal
word-break: normal
code.language-shell
padding-left: 1.5em
display: block
&:before
@extend .text-dimmed
content: "$"
display: inline-block
margin-left: -.5em
margin-right: .8em

View File

@ -41,9 +41,10 @@ module.exports = {
linkImagesToOriginal: false,
sizeByPixelDensity: true,
showCaptions: true,
backgroundColor: '#e7eef4'
backgroundColor: '#dfe8ef'
}
},
'gatsby-remark-prismjs',
'gatsby-remark-smartypants',
'gatsby-remark-autolink-headers'
]

View File

@ -33,6 +33,7 @@
"gatsby-plugin-sitemap": "^2.0.0-beta.2",
"gatsby-remark-autolink-headers": "^2.0.0-beta.3",
"gatsby-remark-images": "^2.0.1-beta.7",
"gatsby-remark-prismjs": "^3.0.0-beta.3",
"gatsby-remark-smartypants": "^2.0.0-beta.2",
"gatsby-source-filesystem": "^2.0.1-beta.5",
"gatsby-transformer-remark": "^2.1.1-beta.3",
@ -43,6 +44,7 @@
"node-sass": "^4.9.2",
"normalize-css": "^2.3.1",
"normalize-opentype.css": "^0.2.4",
"prismjs": "^1.15.0",
"qrious": "^4.0.2",
"react": "^16.4.1",
"react-dom": "^16.4.1",

View File

@ -1,6 +1,8 @@
@import 'variables';
.screen {
flex: 1;
max-width: 38rem;
margin-left: auto;
margin-right: auto;
padding: $spacer;
}

85
src/styles/_code.scss Normal file
View File

@ -0,0 +1,85 @@
@import 'variables';
code,
kbd,
pre,
samp {
font-family: $font-family-monospace;
font-size: $font-size-small;
}
code,
kbd {
padding: 2px 4px;
}
code,
samp {
color: darken($code-color, 40%);
background-color: rgba($code-bg, .05);
border-radius: $border-radius;
}
kbd {
color: $kbd-color;
background-color: $kbd-bg;
border-radius: $border-radius;
border: 1px solid $kbd-bg;
box-shadow: inset 0 1px 0 rgba(#fff, .4);
}
pre {
display: block;
padding: $spacer / 2;
margin-bottom: $spacer;
line-height: $line-height;
color: $code-color;
background-color: $code-bg;
margin-left: -($spacer);
margin-right: -($spacer);
// make 'em scrollable
overflow: scroll;
-webkit-overflow-scrolling: touch;
max-height: 300px;
@media (min-width: $screen-sm) {
max-height: 500px;
}
@media (min-width: $screen-md) {
border-radius: $border-radius;
}
code {
white-space: pre;
overflow: auto;
display: block;
color: inherit;
background-color: transparent;
border-radius: 0;
overflow-wrap: normal;
word-wrap: normal;
word-break: normal;
}
}
pre > code.language-bash {
padding-left: 1.5em;
display: block;
&::before {
content: '$';
opacity: .5;
display: inline-block;
margin-left: -.5em;
margin-right: .8em;
}
}
:not(pre) > code[class*='language-'] {
background: rgba($code-bg, .1);
color: $text-color;
}
@import 'syntax';

158
src/styles/_syntax.scss Normal file
View File

@ -0,0 +1,158 @@
/*
Name: Duotone Space
Author: Simurai, adapted from DuoTone themes for Atom (http://simurai.com/projects/2016/01/01/duotone-themes)
Conversion: Bram de Haan (http://atelierbram.github.io/Base2Tone-prism/output/prism/prism-base2tone-space-dark.css)
Generated with Base16 Builder (https://github.com/base16-builder/base16-builder)
*/
code[class*='language-'],
pre[class*='language-'] {
direction: ltr;
text-align: left;
tab-size: 4;
hyphens: none;
background: #24242e;
color: #767693;
}
pre[class*='language-']::-moz-selection,
pre[class*='language-'] ::-moz-selection,
code[class*='language-']::-moz-selection,
code[class*='language-'] ::-moz-selection {
text-shadow: none;
background: #5151e6;
}
pre[class*='language-']::selection,
pre[class*='language-'] ::selection,
code[class*='language-']::selection,
code[class*='language-'] ::selection {
text-shadow: none;
background: #5151e6;
}
/* Inline code */
// :not(pre) > code[class*='language-'] {
// }
.token.comment,
.token.prolog,
.token.doctype,
.token.cdata {
color: #5b5b76;
}
.token.punctuation {
color: #5b5b76;
}
.token.namespace {
opacity: .7;
}
.token.tag,
.token.operator,
.token.number {
color: #dd672c;
}
.token.property,
.token.function {
color: #767693;
}
.token.tag-id,
.token.selector,
.token.atrule-id {
color: #ebebff;
}
code.language-javascript,
.token.attr-name {
color: #aaaaca;
}
code.language-css,
code.language-scss,
.token.boolean,
.token.string,
.token.entity,
.token.url,
.language-css .token.string,
.language-scss .token.string,
.style .token.string,
.token.attr-value,
.token.keyword,
.token.control,
.token.directive,
.token.unit,
.token.statement,
.token.regex,
.token.atrule {
color: #fe8c52;
}
.token.placeholder,
.token.variable {
color: #fe8c52;
}
.token.deleted {
text-decoration: line-through;
}
.token.inserted {
border-bottom: 1px dotted #ebebff;
text-decoration: none;
}
.token.italic {
font-style: italic;
}
.token.important,
.token.bold {
font-weight: bold;
}
.token.important {
color: #aaaaca;
}
.token.entity {
cursor: help;
}
pre > code.highlight {
outline: .4em solid #7676f4;
outline-offset: .4em;
}
/* overrides color-values for the Line Numbers plugin
* http://prismjs.com/plugins/line-numbers/
*/
.line-numbers .line-numbers-rows {
border-right-color: #262631;
}
.line-numbers-rows > span::before {
color: #393949;
}
/* overrides color-values for the Line Highlight plugin
* http://prismjs.com/plugins/line-highlight/
*/
.line-highlight {
background: rgba(221, 103, 44, .2);
background: -webkit-linear-gradient(
left,
rgba(221, 103, 44, .2) 70%,
rgba(221, 103, 44, 0)
);
background: linear-gradient(
to right,
rgba(221, 103, 44, .2) 70%,
rgba(221, 103, 44, 0)
);
}

View File

@ -5,8 +5,8 @@ $easing: cubic-bezier(.75, 0, .08, 1);
/////////////////////////////////////
$brand-main: #015565;
$brand-cyan: #43a699;
$brand-main-light: #88bec8;
$brand-cyan: #43a699;
$brand-light: #e7eef4;
$brand-grey: #6b7f88;
@ -16,9 +16,11 @@ $brand-grey-dimmed: lighten($brand-grey, 50%);
// Backgrounds
/////////////////////////////////////
$body-background-color: $brand-light;
$body-background-color: #dfe8ef;
$body-background-color--dark: darken($brand-grey, 30%);
$page-background-color: $brand-light;
// Text Colors
/////////////////////////////////////
@ -28,7 +30,7 @@ $text-color-light: $brand-grey-light;
$text-color--dark: $brand-grey-light;
$text-color-light--dark: $brand-grey;
// Typography
// Base Typography
/////////////////////////////////////
$font-size-root: 18px;
@ -55,6 +57,9 @@ $font-color-base: $text-color;
$font-family-monospace: Menlo, Monaco, Consolas, 'Courier New', monospace;
// Headings
/////////////////////////////////////
$font-family-headings: 'brandon-grotesque', 'Avenir Next', 'Helvetica Neue',
Helvetica, Arial, sans-serif;
$font-weight-headings: 500;
@ -63,7 +68,25 @@ $line-height-headings: 1.1;
$color-headings: $brand-main;
$color-headings--dark: $brand-main-light;
// Code
/////////////////////////////////////
$code-bg: #343642;
$code-color: $brand-light;
$kbd-bg: $code-bg;
$kbd-color: $code-color;
// Components spacing
/////////////////////////////////////
$spacer: ($font-size-base * $line-height);
$border-radius: 3px;
// Responsive breakpoints
/////////////////////////////////////
$screen-xs: 30em;
$screen-sm: 40.625em;
$screen-md: 60em;
$screen-lg: 87.5em;

View File

@ -10,11 +10,11 @@ html,
body {
margin: 0;
padding: 0;
background: $body-background-color;
}
html {
font-size: $font-size-root;
background: $body-background-color;
}
body {
@ -24,13 +24,18 @@ body {
line-height: $line-height;
color: $font-color-base;
text-rendering: optimizeLegibility;
letter-spacing: -.01em;
font-feature-settings: 'liga', 'kern';
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
min-height: 100vh;
background: $body-background-color;
transition: background .6s $easing;
// handling long text, like URLs
overflow-wrap: break-word;
word-wrap: break-word;
word-break: break-word;
&.dark {
background-color: $body-background-color--dark;
color: $text-color--dark;
@ -43,27 +48,73 @@ ol {
margin: 0 0 $spacer;
}
// Reset fonts for relevant elements
/////////////////////////////////////
input,
button,
select,
textarea {
font-family: inherit;
font-size: inherit;
line-height: inherit;
}
// Headings
/////////////////////////////////////
h1,
h2 {
margin-top: $spacer * 2;
margin-bottom: $spacer * 2;
}
h3,
h4,
h5,
h6 {
margin-top: $spacer;
margin-bottom: $spacer;
}
h1 {
font-size: $font-size-h1;
font-size: $font-size-h2;
@media (min-width: $screen-xs) {
font-size: $font-size-h1;
}
}
h2 {
font-size: $font-size-h2;
font-size: $font-size-h3;
@media (min-width: $screen-xs) {
font-size: $font-size-h2;
}
}
h3 {
font-size: $font-size-h3;
font-size: $font-size-h4;
@media (min-width: $screen-xs) {
font-size: $font-size-h3;
}
}
h4 {
font-size: $font-size-h4;
font-size: $font-size-h5;
@media (min-width: $screen-xs) {
font-size: $font-size-h4;
}
}
h5 {
font-size: $font-size-h5;
font-size: $font-size-h6;
@media (min-width: $screen-xs) {
font-size: $font-size-h5;
}
}
h6 {
@ -96,11 +147,24 @@ a {
text-decoration: none;
transition: .2s ease-out;
h1 &,
h2 &,
h3 & {
color: $color-headings;
}
&:hover,
&:focus {
outline: 0;
color: lighten($brand-cyan, 10%);
transform: translate3d(0, -.1rem, 0);
}
&:active {
transition: none;
color: darken($brand-cyan, 30%);
box-shadow: inset 0 -1px 0 darken($brand-cyan, 30%);
}
}
// Media
@ -114,8 +178,175 @@ svg {
margin: 0;
}
// Lists
/////////////////////////////////////
ul {
li {
&::before {
content: ' \2015'; // horizontal bar: ―
}
}
}
ol {
counter-reset: ol-counter;
li {
&::before {
content: counter(ol-counter) '.';
counter-increment: ol-counter;
}
}
ul li::before {
display: none;
}
}
ul,
ol {
margin-top: 0;
margin-bottom: $spacer;
padding-left: ($spacer * 1.5);
list-style: none;
li {
position: relative;
// stylelint-disable no-descending-specificity
&::before {
position: absolute;
left: -($spacer * 1.5);
top: -1px;
color: $text-color-light;
user-select: none;
}
// stylelint-enable no-descending-specificity
}
ul,
ol {
margin-bottom: 0;
}
}
// Inline typography
/////////////////////////////////////
b,
strong,
.bold {
font-weight: 700;
font-style: normal;
}
em,
.italic {
font-style: italic;
}
abbr[title],
dfn {
text-transform: none;
font-style: normal;
font-size: inherit;
border-bottom: 1px dashed $brand-grey-dimmed;
cursor: help;
font-feature-settings: inherit;
}
mark {
background: #fffaab;
color: $text-color;
}
hr {
border: 0;
border-bottom: 1px dashed #afc3cb;
padding-bottom: $spacer;
margin-bottom: $spacer * 2;
&::before {
bottom: -2px;
width: 100%;
border-bottom: 1px dashed #fff;
}
}
// Quotes
/////////////////////////////////////
q {
font-style: italic;
}
cite {
font-style: normal;
text-transform: uppercase;
}
blockquote,
blockquote > p {
font-style: italic;
}
blockquote {
margin: 0 0 $spacer;
position: relative;
padding-left: 20px;
@media (min-width: $screen-xs) {
padding-left: 40px;
}
@media (min-width: $screen-lg) {
padding-left: 60px;
}
// quotation marks
&::before {
content: '';
font-size: 300%;
color: lighten($text-color, 40%);
position: absolute;
left: -10px;
top: -20px;
@media (min-width: $screen-xs) {
left: 0;
}
@media (min-width: $screen-lg) {
top: -30px;
}
}
p:last-child {
margin-bottom: 0;
}
}
// Selection
/////////////////////////////////////
::-moz-selection {
background: #2e4f5c;
color: #fff;
}
::selection {
background: #2e4f5c;
color: #fff;
}
#___gatsby {
display: flex;
min-height: 100vh;
flex-direction: column;
}
// More basic elements
/////////////////////////////////////
@import 'code';