jekyll-theme-gruv-poole 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,45 @@
1
+ @use "variables";
2
+ // Masthead
3
+ //
4
+ // Super small header above the content for site name and nav items
5
+
6
+ .masthead {
7
+ display: flex;
8
+ justify-content: space-between;
9
+ align-items: baseline;
10
+ flex-wrap: wrap;
11
+ padding-bottom: .5rem;
12
+ margin-bottom: var(--spacer-3);
13
+ border-bottom: 0.125rem solid var(--muted);
14
+
15
+ @media (min-width: variables.$breakpoint-md) {
16
+ padding-top: var(--spacer);
17
+ }
18
+ }
19
+
20
+ .masthead-title {
21
+ margin-top: 0;
22
+ margin-bottom: var(--spacer);
23
+ font-size: 1.5rem;
24
+
25
+ a {
26
+ color: inherit;
27
+ text-decoration: none;
28
+ }
29
+ }
30
+
31
+ .nav {
32
+ padding-left: 0;
33
+ margin-right: -.25rem;
34
+ margin-bottom: 0;
35
+ list-style: none;
36
+
37
+ li {
38
+ display: inline-block;
39
+ }
40
+
41
+ a {
42
+ padding: .25rem;
43
+ font-weight: 600;
44
+ }
45
+ }
@@ -0,0 +1,25 @@
1
+ @use 'variables';
2
+
3
+ // Mixins
4
+ //
5
+ // Use these in other classes by calling @include
6
+
7
+ @mixin show-flex-on-medium {
8
+ @media (min-width: variables.$breakpoint-md) {
9
+ display: flex !important
10
+ }
11
+ }
12
+
13
+ @mixin show-block-on-medium {
14
+ @media (min-width: variables.$breakpoint-md) {
15
+ display: block !important
16
+ }
17
+ }
18
+
19
+ @mixin inline-flex {
20
+ display: inline-flex;
21
+ gap: 2rem;
22
+ max-width: 100%;
23
+ overflow: auto;
24
+ scrollbar-color: var(--scrollbar-color);
25
+ }
data/_sass/_posts.scss ADDED
@@ -0,0 +1,113 @@
1
+ @use "variables";
2
+ @use "mixins" as *;
3
+
4
+ // Posts and pages
5
+ //
6
+ // Each post is wrapped in `.post` and is used on base and post layouts. Each
7
+ // page is wrapped in `.page` and is only used on the page layout.
8
+
9
+ .page,
10
+ .post {
11
+ margin-bottom: var(--spacer-3);
12
+
13
+ li + li {
14
+ margin-top: .25rem;
15
+ }
16
+ }
17
+
18
+ // Blog post or page title
19
+ .page-title,
20
+ .post-title {
21
+ margin-top: 0;
22
+ }
23
+ .post-title a {
24
+ color: inherit;
25
+ text-decoration: none;
26
+
27
+ &:hover,
28
+ &:focus {
29
+ text-decoration: underline;
30
+ }
31
+ }
32
+
33
+ // Meta data line below post title
34
+ .post-date {
35
+ display: block;
36
+ font-size: 1.2rem;
37
+ margin-top: -.5rem;
38
+ margin-bottom: var(--spacer);
39
+ color: var(--contrast-wcag);
40
+ }
41
+
42
+ // A stylized reference link to a post
43
+ // Think of related posts and archive links
44
+ .post-ref {
45
+ margin-bottom: var(--spacer);
46
+ overflow: auto;
47
+
48
+ a {
49
+ flex: none;
50
+ }
51
+
52
+ // Not shown on mobile
53
+ // Apply with a responsive display class
54
+ // to display at certain breakpoints
55
+ span {
56
+ display: none;
57
+ width: 100%;
58
+ height: 1.5rem;
59
+ margin-inline:.75rem;
60
+ border-bottom: 1px dotted var(--contrast-low);
61
+ @include show-block-on-medium;
62
+ }
63
+
64
+ time {
65
+ display: block;
66
+ flex: none;
67
+ margin-top: 0;
68
+ margin-bottom: 0;
69
+ color: var(--contrast-wcag);
70
+ }
71
+
72
+ @media (min-width: variables.$breakpoint-md) {
73
+ margin-bottom: .5rem;
74
+ }
75
+
76
+ @include show-flex-on-medium;
77
+ }
78
+
79
+ // Category above multiple post refs e.g. year
80
+ .post-ref-category {
81
+ margin-top: 0;
82
+ margin-bottom: var(--spacer);
83
+ font-size: 2rem;
84
+ }
85
+
86
+ .post-ref+.post-ref-category {
87
+ margin-top: 2rem;
88
+ }
89
+
90
+ .related-post-wrapper {
91
+ padding-top: var(--spacer-2);
92
+ margin-bottom: var(--spacer-2);
93
+ border-top: 1px solid var(--muted);
94
+
95
+ h2 {
96
+ margin-top: 0;
97
+ margin-bottom: var(--spacer);
98
+ }
99
+ }
100
+
101
+ // Enforce content width
102
+ // on elements of a post
103
+ @media (min-width: variables.$breakpoint-md) {
104
+ .post {
105
+ p, ul, ol, blockquote,.highlighter-rouge {
106
+ max-width: variables.$max-content-width;
107
+ }
108
+ }
109
+
110
+ .related-posts {
111
+ max-width: variables.$max-content-width;
112
+ }
113
+ }
@@ -0,0 +1,100 @@
1
+ @use 'sass:color';
2
+
3
+ // Responsive breakpoints
4
+ $breakpoint-sm: 576px;
5
+ $breakpoint-md: 768px;
6
+ $breakpoint-lg: 992px;
7
+ $max-width: 62rem;
8
+ $max-content-width: 42rem;
9
+
10
+ // One-off WCAG contrast fix for --red-light on dark mode
11
+ $wcag-code-on-dark: color.scale(#fb4934, $lightness: 8%);
12
+
13
+ :root {
14
+ /* Base shades from light to dark */
15
+ --light-0: #f9f5d7;
16
+ --light-1: #fbf1c7;
17
+ --light-2: #ebdbb2;
18
+ --light-3: #d5c4a1;
19
+ --light-4: #bdae93;
20
+ --light-5: #a89984;
21
+ --gray: #928374;
22
+ --dark-0: #7c6f64;
23
+ --dark-1: #665c54;
24
+ --dark-2: #504945;
25
+ --dark-3: #3c3836;
26
+ --dark-4: #282828;
27
+ --dark-5: #1d2021;
28
+
29
+ /* Colors */
30
+ --red: #cc241d;
31
+ --red-light: #fb4934;
32
+ --red-dark: #9d0006;
33
+ --green: #98971a;
34
+ --green-light: #b8bb26;
35
+ --green-dark: #797403;
36
+ --yellow: #d79921;
37
+ --yellow-light: #fabd2f;
38
+ --yellow-dark: #b57614;
39
+ --blue: #458588;
40
+ --blue-light: #83a598;
41
+ --blue-dark: #076678;
42
+ --purple: #b16286;
43
+ --purple-light: #d3869b;
44
+ --purple-dark: #8f3f71;
45
+ --aqua: #689d6a;
46
+ --aqua-light: #8ec07c;
47
+ --aqua-dark: #427b58;
48
+ --orange: #d65d0e;
49
+ --orange-light: #fe8019;
50
+ --orange-dark: #af3a03;
51
+
52
+ /* Misc global variables */
53
+ --body-font: "Jost", "Arial", sans-serif;
54
+ --body-font-size: 17px;
55
+ --body-line-height: 1.6;
56
+ --code-font: "OfficeCodePro", "Courier New", "Courier", monospace;
57
+ --border-radius: .25rem;
58
+ --spacer: 1rem;
59
+ --spacer-2: calc(var(--spacer) * 1.5);
60
+ --spacer-3: calc(var(--spacer) * 3);
61
+ --scrollbar-color: var(--contrast-low) var(--muted);
62
+
63
+ /* Light theme specific contrast and colors */
64
+ --contrast-high: var(--dark-5);
65
+ --contrast-med: var(--dark-4);
66
+ --contrast-med-low: var(--dark-2);
67
+ --contrast-wcag: var(--dark-1);
68
+ --contrast-low: var(--light-3);
69
+ --muted: var(--light-2);
70
+ --background: var(--light-1);
71
+ --none-more-background: var(--light-0);
72
+
73
+ --text-highlight-bg: var(--purple-light);
74
+ --alert: var(--purple-light);
75
+ --quote-color: var(--blue-dark);
76
+ --quote-accent: var(--blue);
77
+ --code-color: var(--red-dark);
78
+ --code-color-wcag: var(--red-dark);
79
+ }
80
+
81
+ /* Dark theme specific contrast and colors */
82
+ @media (prefers-color-scheme: dark) {
83
+ :root {
84
+ --contrast-high: var(--light-1);
85
+ --contrast-med: var(--light-2);
86
+ --contrast-med-low: var(--light-3);
87
+ --contrast-wcag: var(--light-5);
88
+ --contrast-low: var(--dark-2);
89
+ --muted: var(--dark-3);
90
+ --background: var(--dark-4);
91
+ --none-more-background: var(--dark-5);
92
+
93
+ --text-highlight-bg: var(--yellow);
94
+ --alert: var(--yellow);
95
+ --quote-color: var(--blue-light);
96
+ --quote-accent: var(--blue);
97
+ --code-color: var(--red-light);
98
+ --code-color-wcag: #{$wcag-code-on-dark};
99
+ }
100
+ }
@@ -0,0 +1,200 @@
1
+ @use "sass:color";
2
+
3
+ // Comment colors may not be WCAG compliant,
4
+ // so adjustments made here
5
+ $comment-lighter: color.scale(#928374, $lightness: 8%);
6
+ $comment-darker: color.scale(#928374, $lightness: -17%);
7
+
8
+ .highlight, .highlight .w {
9
+ color: #282828;
10
+ background-color: #fbf1c7;
11
+ }
12
+ .highlight .err {
13
+ color: #9d0006;
14
+ background-color: #fbf1c7;
15
+ font-weight: bold;
16
+ }
17
+ .highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
18
+ color: $comment-darker;
19
+ font-style: italic;
20
+ }
21
+ .highlight .cp {
22
+ color: #427b58;
23
+ }
24
+ .highlight .nt {
25
+ color: #9d0006;
26
+ }
27
+ .highlight .o, .highlight .ow {
28
+ color: #282828;
29
+ }
30
+ .highlight .p, .highlight .pi {
31
+ color: #282828;
32
+ }
33
+ .highlight .gi {
34
+ color: #79740e;
35
+ background-color: #fbf1c7;
36
+ }
37
+ .highlight .gd {
38
+ color: #9d0006;
39
+ background-color: #fbf1c7;
40
+ }
41
+ .highlight .gh {
42
+ color: #79740e;
43
+ font-weight: bold;
44
+ }
45
+ .highlight .ge {
46
+ font-style: italic;
47
+ }
48
+ .highlight .ges {
49
+ font-weight: bold;
50
+ font-style: italic;
51
+ }
52
+ .highlight .gs {
53
+ font-weight: bold;
54
+ }
55
+ .highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
56
+ color: #9d0006;
57
+ }
58
+ .highlight .kc {
59
+ color: #8f3f71;
60
+ }
61
+ .highlight .kt {
62
+ color: #b57614;
63
+ }
64
+ .highlight .kd {
65
+ color: #af3a03;
66
+ }
67
+ .highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
68
+ color: #79740e;
69
+ font-style: italic;
70
+ }
71
+ .highlight .si {
72
+ color: #79740e;
73
+ font-style: italic;
74
+ }
75
+ .highlight .sr {
76
+ color: #79740e;
77
+ font-style: italic;
78
+ }
79
+ .highlight .sa {
80
+ color: #9d0006;
81
+ }
82
+ .highlight .se {
83
+ color: #af3a03;
84
+ }
85
+ .highlight .nn {
86
+ color: #427b58;
87
+ }
88
+ .highlight .nc {
89
+ color: #427b58;
90
+ }
91
+ .highlight .no {
92
+ color: #8f3f71;
93
+ }
94
+ .highlight .na {
95
+ color: #79740e;
96
+ }
97
+ .highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
98
+ color: #8f3f71;
99
+ }
100
+ .highlight .ss {
101
+ color: #076678;
102
+ }
103
+
104
+ @media (prefers-color-scheme: dark) {
105
+ .highlight, .highlight .w {
106
+ color: #fbf1c7;
107
+ background-color: #282828;
108
+ }
109
+ .highlight .err {
110
+ color: #fb4934;
111
+ background-color: #282828;
112
+ font-weight: bold;
113
+ }
114
+ .highlight .c, .highlight .ch, .highlight .cd, .highlight .cm, .highlight .cpf, .highlight .c1, .highlight .cs {
115
+ color: $comment-lighter;
116
+ font-style: italic;
117
+ }
118
+ .highlight .cp {
119
+ color: #8ec07c;
120
+ }
121
+ .highlight .nt {
122
+ color: #fb4934;
123
+ }
124
+ .highlight .o, .highlight .ow {
125
+ color: #fbf1c7;
126
+ }
127
+ .highlight .p, .highlight .pi {
128
+ color: #fbf1c7;
129
+ }
130
+ .highlight .gi {
131
+ color: #b8bb26;
132
+ background-color: #282828;
133
+ }
134
+ .highlight .gd {
135
+ color: #fb4934;
136
+ background-color: #282828;
137
+ }
138
+ .highlight .gh {
139
+ color: #b8bb26;
140
+ font-weight: bold;
141
+ }
142
+ .highlight .ge {
143
+ font-style: italic;
144
+ }
145
+ .highlight .ges {
146
+ font-weight: bold;
147
+ font-style: italic;
148
+ }
149
+ .highlight .gs {
150
+ font-weight: bold;
151
+ }
152
+ .highlight .k, .highlight .kn, .highlight .kp, .highlight .kr, .highlight .kv {
153
+ color: #fb4934;
154
+ }
155
+ .highlight .kc {
156
+ color: #d3869b;
157
+ }
158
+ .highlight .kt {
159
+ color: #fabd2f;
160
+ }
161
+ .highlight .kd {
162
+ color: #fe8019;
163
+ }
164
+ .highlight .s, .highlight .sb, .highlight .sc, .highlight .dl, .highlight .sd, .highlight .s2, .highlight .sh, .highlight .sx, .highlight .s1 {
165
+ color: #b8bb26;
166
+ font-style: italic;
167
+ }
168
+ .highlight .si {
169
+ color: #b8bb26;
170
+ font-style: italic;
171
+ }
172
+ .highlight .sr {
173
+ color: #b8bb26;
174
+ font-style: italic;
175
+ }
176
+ .highlight .sa {
177
+ color: #fb4934;
178
+ }
179
+ .highlight .se {
180
+ color: #fe8019;
181
+ }
182
+ .highlight .nn {
183
+ color: #8ec07c;
184
+ }
185
+ .highlight .nc {
186
+ color: #8ec07c;
187
+ }
188
+ .highlight .no {
189
+ color: #d3869b;
190
+ }
191
+ .highlight .na {
192
+ color: #b8bb26;
193
+ }
194
+ .highlight .m, .highlight .mb, .highlight .mf, .highlight .mh, .highlight .mi, .highlight .il, .highlight .mo, .highlight .mx {
195
+ color: #d3869b;
196
+ }
197
+ .highlight .ss {
198
+ color: #83a598;
199
+ }
200
+ }
@@ -0,0 +1,60 @@
1
+ // Wrapping elements around code snippets
2
+ //
3
+ // Code syntax styling itself is handled by gruvbox.css
4
+ // which was ported from the output of Rouge's Gruvbox class:
5
+ // https://www.rubydoc.info/gems/rouge/Rouge/Themes/Gruvbox
6
+
7
+ code,
8
+ pre {
9
+ font-family: var(--code-font);
10
+ }
11
+
12
+ code {
13
+ font-size: 85%;
14
+ color: var(--code-color-wcag);
15
+ }
16
+
17
+ pre {
18
+ display: block;
19
+ margin-top: 0;
20
+ margin-bottom: var(--spacer-3);
21
+ overflow: auto;
22
+ }
23
+
24
+ .highlight {
25
+ padding: var(--spacer);
26
+ margin-bottom: var(--spacer);
27
+ background-color: var(--none-more-background);
28
+ border-radius: var(--border-radius);
29
+ scrollbar-color: var(--scrollbar-color);
30
+
31
+ pre {
32
+ margin-bottom: 0;
33
+ }
34
+
35
+ code {
36
+ color: var(--code-color);
37
+ }
38
+
39
+ // Triple backticks (code fencing) doubles the .highlight elements
40
+ .highlight {
41
+ padding: 0;
42
+ }
43
+ }
44
+
45
+ .rouge-table {
46
+ margin-bottom: 0;
47
+ font-size: 100%;
48
+
49
+ &,
50
+ td,
51
+ th {
52
+ border: 0;
53
+ }
54
+
55
+ .gutter {
56
+ vertical-align: top;
57
+ user-select: none;
58
+ opacity: .25;
59
+ }
60
+ }
@@ -0,0 +1,28 @@
1
+ // Body typeface
2
+ @font-face {
3
+ font-family: "Jost";
4
+ src: url("fonts/body/Jost.woff2") format("woff2");
5
+ }
6
+
7
+ // Code typeface
8
+ // There's no bold and italic font. Just don't do it.
9
+ @font-face {
10
+ font-family: "OfficeCodePro";
11
+ src: url("fonts/code/OfficeCodePro-Regular.woff2") format("woff2");
12
+ font-weight: normal;
13
+ font-style: normal;
14
+ }
15
+
16
+ @font-face {
17
+ font-family: "OfficeCodePro";
18
+ src: url("fonts/code/OfficeCodePro-RegularItalic.woff2") format("woff2");
19
+ font-weight: normal;
20
+ font-style: italic;
21
+ }
22
+
23
+ @font-face {
24
+ font-family: "OfficeCodePro";
25
+ src: url("fonts/code/OfficeCodePro-Bold.woff2") format("woff2");
26
+ font-weight: bold;
27
+ font-style: normal;
28
+ }
@@ -0,0 +1,115 @@
1
+ @use "variables";
2
+ // Typography
3
+ //
4
+ // Headings, body text, lists, and other misc typographic elements.
5
+
6
+ h1, h2, h3, h4, h5, h6 {
7
+ margin-bottom: .5rem;
8
+ font-weight: 600;
9
+ line-height: 1.1;
10
+ color: var(--contrast-high);
11
+ letter-spacing: -.025rem;
12
+ }
13
+
14
+ h1 {
15
+ font-size: 2.2rem;
16
+ }
17
+
18
+ h2 {
19
+ margin-top: 2rem;
20
+ font-size: 1.5rem;
21
+ }
22
+
23
+ h3 {
24
+ margin-top: var(--spacer-2);
25
+ font-size: 1.25rem;
26
+ }
27
+
28
+ h4, h5, h6 {
29
+ margin-top: var(--spacer-1);
30
+ font-size: 1rem;
31
+ }
32
+
33
+ p {
34
+ margin-top: 0;
35
+ margin-bottom: 1rem;
36
+ }
37
+
38
+ ul, ol, dl {
39
+ margin-top: 0;
40
+ margin-bottom: 1rem;
41
+ }
42
+
43
+ dt {
44
+ font-weight: bold;
45
+ }
46
+
47
+ dd {
48
+ margin-bottom: .5rem;
49
+ }
50
+
51
+ hr {
52
+ position: relative;
53
+ margin: var(--spacer-2) 0;
54
+ border: 0;
55
+ border-top: 1px solid var(--contrast-low);
56
+ }
57
+
58
+ abbr {
59
+ font-size: 85%;
60
+ font-weight: bold;
61
+ color: var(--quote-color);
62
+ text-transform: uppercase;
63
+
64
+ &[title] {
65
+ cursor: help;
66
+ border-bottom: 1px dotted var(--contrast-low);
67
+ }
68
+ }
69
+
70
+ blockquote {
71
+ padding: .5rem var(--spacer);
72
+ margin: .8rem 0;
73
+ color: var(--quote-color);
74
+ border-left: .25rem solid var(--quote-accent);
75
+
76
+ p:last-child {
77
+ margin-bottom: 0;
78
+ }
79
+
80
+ @media (min-width: variables.$breakpoint-md) {
81
+ padding-left: var(--spacer-2);
82
+ }
83
+ }
84
+
85
+ figure {
86
+ margin: 0;
87
+ }
88
+
89
+
90
+ // Markdown footnotes
91
+ //
92
+ // See the example content post for an example.
93
+
94
+ // Footnote number within body text
95
+ a[href^="#fn:"],
96
+ // Back to footnote link
97
+ a[href^="#fnref:"] {
98
+ display: inline-block;
99
+ margin-left: .1rem;
100
+ font-weight: bold;
101
+ }
102
+
103
+ // List of footnotes
104
+ .footnotes {
105
+ margin-top: 2rem;
106
+ font-size: 85%;
107
+ }
108
+
109
+ // Custom type
110
+ //
111
+ // Extend paragraphs with `.lead` for larger introductory text.
112
+ .lead {
113
+ font-size: 1.25rem;
114
+ font-weight: 300;
115
+ }
Binary file
Binary file