monoholic 1.0.1 β 1.1.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.
- checksums.yaml +4 -4
- data/README.md +17 -0
- data/_includes/footer.html +3 -2
- data/_includes/head.html +4 -1
- data/_includes/header.html +14 -4
- data/_includes/menu.html +72 -5
- data/_includes/post_list.html +5 -2
- data/_layouts/default.html +7 -5
- data/_layouts/home.html +3 -2
- data/_layouts/post.html +7 -4
- data/_sass/_base.scss +32 -0
- data/_sass/_components.scss +4 -0
- data/_sass/_content.scss +1 -1
- data/_sass/_layout.scss +21 -0
- data/_sass/_variables.scss +1 -1
- data/_sass/monoholic.scss +5 -5
- data/assets/css/style.scss +1 -1
- metadata +7 -21
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 82d9f14b72e9e12fbd2938a1e085e139cd3a8b1de2415914ee8aede7be2363b2
|
|
4
|
+
data.tar.gz: d440773f3a4ace2da0bc9906ef8ee4a847d557eee3e4967392d0d660f8b29e2f
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 97ed2791cf9e2ec59c07724bfb7804565a0b71a02ca625f41f5b5fcfacf042def622fdec81d74245790907d2eb0b9932523819decd1589a8137d0e582ab6694c
|
|
7
|
+
data.tar.gz: 4773401bdc07a85bf3a819edeef94c9d20354c60c9d806db2a66c604f51c59f637f2e40e34cf753fe2d364415102a4953b845190d4c9b675e483cbb73f682cb8
|
data/README.md
CHANGED
|
@@ -14,6 +14,7 @@ A minimal, monochrome dark Jekyll themeπ§ͺ
|
|
|
14
14
|
- Data-driven menu via `_data/menu.yml`
|
|
15
15
|
- Optional grayscale image filter
|
|
16
16
|
- SEO & RSS support
|
|
17
|
+
- SCSS source compiled via `jekyll-sass-converter`
|
|
17
18
|
|
|
18
19
|
## Installation
|
|
19
20
|
|
|
@@ -139,6 +140,22 @@ Monoholic ships with a default favicon. To use your own, replace the following f
|
|
|
139
140
|
- `assets/favicon.svg` β modern browsers
|
|
140
141
|
- `assets/apple-touch-icon.png` β iOS home screen (180Γ180)
|
|
141
142
|
|
|
143
|
+
### Stylesheet
|
|
144
|
+
|
|
145
|
+
Monoholic's stylesheet is written in SCSS and compiled at build time. The source lives in `_sass/` and is loaded from `assets/css/style.scss`. Compilation is handled by `jekyll-sass-converter`, which is declared as a runtime dependency in the theme's `gemspec` β so no extra setup is required when you add `gem "monoholic"` to your `Gemfile`.
|
|
146
|
+
|
|
147
|
+
If you want to override or extend the styles, the recommended approach is to add your own partials in your site's `_sass/` directory and load them **after** the theme's entry point:
|
|
148
|
+
|
|
149
|
+
```scss
|
|
150
|
+
---
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
@use "monoholic";
|
|
154
|
+
@use "your-overrides";
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
To override CSS custom properties (colors, spacing, fonts) without touching SCSS, redeclare the variables in your own stylesheet β they are exposed under `:root` in `_sass/_variables.scss`.
|
|
158
|
+
|
|
142
159
|
### Per-Page JavaScript
|
|
143
160
|
|
|
144
161
|
To load custom JavaScript files on a specific page, add a `custom_js` list to the page's front matter:
|
data/_includes/footer.html
CHANGED
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
<footer class="site-footer h-card">
|
|
2
|
-
<data class="u-url" href="{{ "/" | relative_url }}"></data>
|
|
3
2
|
<div class="wrapper">
|
|
4
3
|
<div class="footer-col">
|
|
5
4
|
<p>
|
|
6
5
|
© {{ 'now' | date: '%Y' }}
|
|
7
|
-
{{
|
|
6
|
+
<a class="u-url" href="{{ '/' | relative_url }}">
|
|
7
|
+
{{- site.title | upcase | escape -}}
|
|
8
|
+
</a>
|
|
8
9
|
</p>
|
|
9
10
|
</div>
|
|
10
11
|
</div>
|
data/_includes/head.html
CHANGED
|
@@ -4,7 +4,10 @@
|
|
|
4
4
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
5
5
|
|
|
6
6
|
{%- if site.fediverse_creator -%}
|
|
7
|
-
<meta
|
|
7
|
+
<meta
|
|
8
|
+
name="fediverse:creator"
|
|
9
|
+
content="{{ site.fediverse_creator | escape }}"
|
|
10
|
+
>
|
|
8
11
|
{%- endif -%}
|
|
9
12
|
|
|
10
13
|
{%- seo -%}
|
data/_includes/header.html
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
|
-
<header class="site-header"
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
<header class="site-header">
|
|
2
|
+
{%- if page.layout == "home" -%}
|
|
3
|
+
<h1 class="site-title">
|
|
4
|
+
<a rel="author" href="{{ "/" | relative_url }}">
|
|
5
|
+
{{ site.title | escape }}
|
|
6
|
+
</a>
|
|
7
|
+
</h1>
|
|
8
|
+
{%- else -%}
|
|
9
|
+
<p class="site-title">
|
|
10
|
+
<a rel="author" href="{{ "/" | relative_url }}">
|
|
11
|
+
{{ site.title | escape }}
|
|
12
|
+
</a>
|
|
13
|
+
</p>
|
|
14
|
+
{%- endif -%}
|
|
5
15
|
</header>
|
data/_includes/menu.html
CHANGED
|
@@ -1,6 +1,69 @@
|
|
|
1
|
+
{%- assign _level = include.level | default: 2 | plus: 0 -%}
|
|
2
|
+
{%- if _level < 2 -%}
|
|
3
|
+
{%- assign _level = 2 -%}
|
|
4
|
+
{%- elsif _level > 6 -%}
|
|
5
|
+
{%- assign _level = 6 -%}
|
|
6
|
+
{%- endif -%}
|
|
7
|
+
{%- assign _next_level = _level | plus: 1 -%}
|
|
8
|
+
{%- if _next_level > 6 -%}
|
|
9
|
+
{%- assign _next_level = 6 -%}
|
|
10
|
+
{%- endif -%}
|
|
1
11
|
{%- for item in include.collection -%}
|
|
2
|
-
|
|
3
|
-
|
|
12
|
+
{%- assign _title_stripped = item.title | strip -%}
|
|
13
|
+
{%- assign _has_title = true -%}
|
|
14
|
+
{%- if item.title == nil or _title_stripped == empty -%}
|
|
15
|
+
{%- assign _has_title = false -%}
|
|
16
|
+
{%- endif -%}
|
|
17
|
+
{%- assign _title_slug = item.title | slugify -%}
|
|
18
|
+
{%- if _title_slug == empty or _title_slug == nil -%}
|
|
19
|
+
{%- assign _title_slug = 'section' -%}
|
|
20
|
+
{%- endif -%}
|
|
21
|
+
{%- if include.parent_id -%}
|
|
22
|
+
{%- assign _heading_id = include.parent_id
|
|
23
|
+
| append: '-'
|
|
24
|
+
| append: _title_slug
|
|
25
|
+
| append: '-'
|
|
26
|
+
| append: forloop.index
|
|
27
|
+
-%}
|
|
28
|
+
{%- elsif include.id_prefix -%}
|
|
29
|
+
{%- assign _heading_id = include.id_prefix
|
|
30
|
+
| append: '-'
|
|
31
|
+
| append: _title_slug
|
|
32
|
+
| append: '-'
|
|
33
|
+
| append: forloop.index
|
|
34
|
+
-%}
|
|
35
|
+
{%- else -%}
|
|
36
|
+
{%- assign _heading_id = _title_slug
|
|
37
|
+
| append: '-'
|
|
38
|
+
| append: forloop.index
|
|
39
|
+
-%}
|
|
40
|
+
{%- endif -%}
|
|
41
|
+
{%- if _has_title -%}
|
|
42
|
+
<section aria-labelledby="{{ _heading_id }}">
|
|
43
|
+
{%- if _level == 3 -%}
|
|
44
|
+
<h3 class="section-title" id="{{ _heading_id }}">
|
|
45
|
+
{{ item.title | escape }}
|
|
46
|
+
</h3>
|
|
47
|
+
{%- elsif _level == 4 -%}
|
|
48
|
+
<h4 class="section-title" id="{{ _heading_id }}">
|
|
49
|
+
{{ item.title | escape }}
|
|
50
|
+
</h4>
|
|
51
|
+
{%- elsif _level == 5 -%}
|
|
52
|
+
<h5 class="section-title" id="{{ _heading_id }}">
|
|
53
|
+
{{ item.title | escape }}
|
|
54
|
+
</h5>
|
|
55
|
+
{%- elsif _level >= 6 -%}
|
|
56
|
+
<h6 class="section-title" id="{{ _heading_id }}">
|
|
57
|
+
{{ item.title | escape }}
|
|
58
|
+
</h6>
|
|
59
|
+
{%- else -%}
|
|
60
|
+
<h2 class="section-title" id="{{ _heading_id }}">
|
|
61
|
+
{{ item.title | escape }}
|
|
62
|
+
</h2>
|
|
63
|
+
{%- endif -%}
|
|
64
|
+
{%- else -%}
|
|
65
|
+
<section>
|
|
66
|
+
{%- endif -%}
|
|
4
67
|
{%- if item.content_file -%}
|
|
5
68
|
{%- assign _menu_page = site.pages
|
|
6
69
|
| where: 'path', item.content_file
|
|
@@ -13,8 +76,12 @@
|
|
|
13
76
|
{{ item.content }}
|
|
14
77
|
{%- endif -%}
|
|
15
78
|
{%- if item.post_list -%}{%- include post_list.html -%}{%- endif -%}
|
|
79
|
+
{%- if item.entries -%}
|
|
80
|
+
{%- include menu.html
|
|
81
|
+
collection=item.entries
|
|
82
|
+
level=_next_level
|
|
83
|
+
parent_id=_heading_id
|
|
84
|
+
-%}
|
|
85
|
+
{%- endif -%}
|
|
16
86
|
</section>
|
|
17
|
-
{%- if item.entries -%}
|
|
18
|
-
{%- include menu.html collection = item.entries -%}
|
|
19
|
-
{%- endif -%}
|
|
20
87
|
{%- endfor -%}
|
data/_includes/post_list.html
CHANGED
|
@@ -1,12 +1,15 @@
|
|
|
1
1
|
<ul class="post-list">
|
|
2
2
|
{%- for post in site.posts -%}
|
|
3
3
|
<li>
|
|
4
|
-
<
|
|
4
|
+
<time
|
|
5
|
+
class="post-meta dt-published"
|
|
6
|
+
datetime="{{ post.date | date_to_xmlschema }}"
|
|
7
|
+
>
|
|
5
8
|
{% assign _date_fmt = site.theme_config.date_format
|
|
6
9
|
| default: '%Y-%m-%d'
|
|
7
10
|
%}
|
|
8
11
|
* {{ post.date | date: _date_fmt }}
|
|
9
|
-
</
|
|
12
|
+
</time>
|
|
10
13
|
<a href="{{ post.url | relative_url }}">
|
|
11
14
|
{{ post.title | escape }}
|
|
12
15
|
</a>
|
data/_layouts/default.html
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
<html lang="{{ page.lang | default: "en" }}">
|
|
3
3
|
{%- include head.html -%}
|
|
4
4
|
<body class="{% if site.theme_config.monochrome_images != false %}images-monochrome{% endif %}">
|
|
5
|
-
<
|
|
6
|
-
|
|
5
|
+
<a class="skip-link" href="#main">Skip to content</a>
|
|
6
|
+
<div class="wrapper">
|
|
7
|
+
{%- include header.html -%}
|
|
8
|
+
<main id="main" class="page-content">
|
|
7
9
|
{{ content }}
|
|
8
|
-
</
|
|
9
|
-
</
|
|
10
|
+
</main>
|
|
11
|
+
</div>
|
|
10
12
|
|
|
11
13
|
{%- unless site.theme_config.footer == false -%}
|
|
12
14
|
{%- include footer.html -%}
|
|
@@ -16,7 +18,7 @@
|
|
|
16
18
|
{% for js_file in page.custom_js %}
|
|
17
19
|
<script
|
|
18
20
|
type="text/javascript"
|
|
19
|
-
src="{{
|
|
21
|
+
src="{{ '/assets/js/' | append: js_file | append: '.js' | relative_url }}"
|
|
20
22
|
></script>
|
|
21
23
|
{% endfor %}
|
|
22
24
|
{% endif %}
|
data/_layouts/home.html
CHANGED
data/_layouts/post.html
CHANGED
|
@@ -4,16 +4,19 @@ layout: default
|
|
|
4
4
|
<article>
|
|
5
5
|
<div class="post-header">
|
|
6
6
|
<a href="{{ '/' | relative_url }}">
|
|
7
|
-
{{ site.theme_config.back | default: 'Back' }}
|
|
7
|
+
{{ site.theme_config.back | default: 'Back' | escape }}
|
|
8
8
|
</a>
|
|
9
|
-
<
|
|
9
|
+
<time
|
|
10
|
+
class="post-meta dt-published"
|
|
11
|
+
datetime="{{ page.date | date_to_xmlschema }}"
|
|
12
|
+
>
|
|
10
13
|
{% assign _date_fmt = site.theme_config.date_format
|
|
11
14
|
| default: '%Y-%m-%d'
|
|
12
15
|
%}
|
|
13
16
|
{{ page.date | date: _date_fmt }}
|
|
14
|
-
</
|
|
17
|
+
</time>
|
|
15
18
|
</div>
|
|
16
|
-
<h1>{{ page.title }}</h1>
|
|
19
|
+
<h1>{{ page.title | escape }}</h1>
|
|
17
20
|
|
|
18
21
|
{{ content }}
|
|
19
22
|
</article>
|
data/_sass/_base.scss
CHANGED
|
@@ -33,8 +33,30 @@ a {
|
|
|
33
33
|
text-decoration: underline;
|
|
34
34
|
}
|
|
35
35
|
|
|
36
|
+
:focus-visible {
|
|
37
|
+
outline: 2px solid var(--text-color);
|
|
38
|
+
outline-offset: 2px;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
.skip-link {
|
|
42
|
+
position: absolute;
|
|
43
|
+
top: -1000px;
|
|
44
|
+
left: var(--space-md);
|
|
45
|
+
z-index: 100;
|
|
46
|
+
background-color: var(--text-color);
|
|
47
|
+
color: var(--bg-color);
|
|
48
|
+
padding: var(--space-sm) var(--space-md);
|
|
49
|
+
text-decoration: none;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
.skip-link:focus,
|
|
53
|
+
.skip-link:focus-visible {
|
|
54
|
+
top: var(--space-sm);
|
|
55
|
+
}
|
|
56
|
+
|
|
36
57
|
img {
|
|
37
58
|
max-width: 100%;
|
|
59
|
+
height: auto;
|
|
38
60
|
display: block;
|
|
39
61
|
margin: 0 auto;
|
|
40
62
|
}
|
|
@@ -42,3 +64,13 @@ img {
|
|
|
42
64
|
.images-monochrome img {
|
|
43
65
|
filter: grayscale(1);
|
|
44
66
|
}
|
|
67
|
+
|
|
68
|
+
@media (prefers-reduced-motion: reduce) {
|
|
69
|
+
*,
|
|
70
|
+
*::before,
|
|
71
|
+
*::after {
|
|
72
|
+
animation-duration: 0.01ms !important;
|
|
73
|
+
transition-duration: 0.01ms !important;
|
|
74
|
+
scroll-behavior: auto !important;
|
|
75
|
+
}
|
|
76
|
+
}
|
data/_sass/_components.scss
CHANGED
data/_sass/_content.scss
CHANGED
data/_sass/_layout.scss
CHANGED
|
@@ -11,6 +11,18 @@
|
|
|
11
11
|
font-size: var(--font-size-site-title);
|
|
12
12
|
font-weight: 700;
|
|
13
13
|
letter-spacing: 0.5px;
|
|
14
|
+
margin: 0;
|
|
15
|
+
|
|
16
|
+
a {
|
|
17
|
+
color: inherit;
|
|
18
|
+
text-decoration: none;
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
a:hover,
|
|
22
|
+
a:focus-visible {
|
|
23
|
+
text-decoration: underline;
|
|
24
|
+
text-underline-offset: 3px;
|
|
25
|
+
}
|
|
14
26
|
}
|
|
15
27
|
}
|
|
16
28
|
|
|
@@ -18,8 +30,17 @@
|
|
|
18
30
|
font-size: var(--font-size-section);
|
|
19
31
|
font-weight: 700;
|
|
20
32
|
margin-bottom: var(--space-lg);
|
|
33
|
+
|
|
34
|
+
&::before {
|
|
35
|
+
content: "## ";
|
|
36
|
+
color: var(--meta-color);
|
|
37
|
+
}
|
|
21
38
|
}
|
|
22
39
|
|
|
23
40
|
section {
|
|
24
41
|
margin-bottom: var(--space-xl);
|
|
25
42
|
}
|
|
43
|
+
|
|
44
|
+
section section:last-child {
|
|
45
|
+
margin-bottom: 0;
|
|
46
|
+
}
|
data/_sass/_variables.scss
CHANGED
data/_sass/monoholic.scss
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// monoholic.scss
|
|
2
|
-
@
|
|
3
|
-
@
|
|
4
|
-
@
|
|
5
|
-
@
|
|
6
|
-
@
|
|
2
|
+
@use "variables";
|
|
3
|
+
@use "base";
|
|
4
|
+
@use "content";
|
|
5
|
+
@use "layout";
|
|
6
|
+
@use "components";
|
data/assets/css/style.scss
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: monoholic
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0
|
|
4
|
+
version: 1.1.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Agil Mammadov
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-
|
|
11
|
+
date: 2026-09-12 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: jekyll
|
|
@@ -25,33 +25,19 @@ dependencies:
|
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '4.4'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
|
-
name:
|
|
28
|
+
name: jekyll-sass-converter
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- - "
|
|
32
|
-
- !ruby/object:Gem::Version
|
|
33
|
-
version: '0'
|
|
34
|
-
type: :runtime
|
|
35
|
-
prerelease: false
|
|
36
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
-
requirements:
|
|
38
|
-
- - ">="
|
|
39
|
-
- !ruby/object:Gem::Version
|
|
40
|
-
version: '0'
|
|
41
|
-
- !ruby/object:Gem::Dependency
|
|
42
|
-
name: webrick
|
|
43
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
-
requirements:
|
|
45
|
-
- - ">="
|
|
31
|
+
- - "~>"
|
|
46
32
|
- !ruby/object:Gem::Version
|
|
47
|
-
version: '0'
|
|
33
|
+
version: '3.0'
|
|
48
34
|
type: :runtime
|
|
49
35
|
prerelease: false
|
|
50
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
37
|
requirements:
|
|
52
|
-
- - "
|
|
38
|
+
- - "~>"
|
|
53
39
|
- !ruby/object:Gem::Version
|
|
54
|
-
version: '0'
|
|
40
|
+
version: '3.0'
|
|
55
41
|
- !ruby/object:Gem::Dependency
|
|
56
42
|
name: jekyll-feed
|
|
57
43
|
requirement: !ruby/object:Gem::Requirement
|