jekyll-theme-hd-jekyll 0.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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 93ce3ad0bf034edd789ef42e31ac94edf5acc73274277f6112276387b2984f31
4
+ data.tar.gz: 430ba76a65f4e23b20c3f13fa69bfed03b81ea66088eb9ff7d16ae2334bbddca
5
+ SHA512:
6
+ metadata.gz: a20fa8c14573c6ed48c1c386503bb72bb2c02d3b7e67d094e28bed329ba168ecb098f63985bff13c1f8265ea04671bc169e458839fd8888a863d620ef58bac69
7
+ data.tar.gz: b7ba8d19426f9a9eb86c31caf16ca70d299647a2348e3cd54cdb0f6746758dc836ade9fc29c887817272a844baaac57729f7e6ca87b75e2ea7184fcbfb385db7
data/_config.yml ADDED
@@ -0,0 +1,21 @@
1
+ title: HDJekyll
2
+ email: roythomasstewart@gmail.com
3
+ description: HDJekyll is a clean and minimalist theme for Jekyll. HDJekyll favors a streamlined and simple flow and page layout over complicated and busy designs.
4
+ baseurl: ""
5
+ url: "http://hd-jekyll.hdgenius.me"
6
+
7
+ markdown: kramdown
8
+
9
+ sass:
10
+ sass_dir: _sass
11
+ style: compressed
12
+
13
+ paginate: 5
14
+ paginate_path: "/blog/page/:num/"
15
+
16
+ defaults:
17
+ -
18
+ scope:
19
+ path: "" # an empty string here means all files in the project
20
+ values:
21
+ layout: "page"
@@ -0,0 +1,14 @@
1
+ <footer id="site-footer" class="block-element">
2
+ {% if site.data.social_links %}
3
+ <div id="site-footer-social-links" aria-label="social media links">
4
+ {% for link in site.data.social_links %}
5
+ <a class="social-link" href="{{ link.url }}" target="_blank" rel="noopener noreferrer">
6
+ <img class="social-logo" src="{{ link.image }}" alt="{{ link.name }}"/>
7
+ </a>
8
+ {% endfor %}
9
+ </div>
10
+ {% endif %}
11
+ <div id="site-footer-description" aria-label="website description">
12
+ {{ site.description }}
13
+ </div>
14
+ </footer>
@@ -0,0 +1,12 @@
1
+ <div id="floating-header">
2
+ <header id="site-header" class="block-element" aria-label="site header">
3
+ <button id="nav-menu-button" aria-controls="site-nav-menu" aria-label="Toggle navigation menu">
4
+ <svg class="ellipsis-icon">
5
+ <circle class="ellipsis-dot"/>
6
+ <circle class="ellipsis-dot"/>
7
+ <circle class="ellipsis-dot"/>
8
+ </svg>
9
+ </button>
10
+ <div id="site-header-title">{{ site.title }}</div>
11
+ </header>
12
+ </div>
@@ -0,0 +1,72 @@
1
+ <div id="site-nav-menu-displacement-wrapper">
2
+ <nav id="site-nav-menu" aria-label="site navigation" aria-hidden="true" role="navigation">
3
+ <div id="nav-header">
4
+ <button id="nav-close-button">
5
+ <svg
6
+ width="100"
7
+ height="100"
8
+ viewBox="0 0 26.458333 26.458333"
9
+ version="1.1"
10
+ id="svg1"
11
+ xmlns:xlink="http://www.w3.org/1999/xlink"
12
+ xmlns="http://www.w3.org/2000/svg"
13
+ xmlns:svg="http://www.w3.org/2000/svg">
14
+ <defs
15
+ id="defs1" />
16
+ <g
17
+ id="layer1">
18
+ <g
19
+ id="g1"
20
+ transform="rotate(-45,11.697191,13.543143)">
21
+ <circle
22
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.0389809"
23
+ id="path1"
24
+ cx="2.2594509"
25
+ cy="14.357726"
26
+ r="2.2826638" />
27
+ <use
28
+ x="0"
29
+ y="0"
30
+ xlink:href="#path1"
31
+ id="use1"
32
+ transform="translate(22.249946)" />
33
+ <rect
34
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.0511731"
35
+ id="rect1"
36
+ width="22.125019"
37
+ height="4.569108"
38
+ x="2.3065777"
39
+ y="12.078227" />
40
+ </g>
41
+ <use
42
+ x="0"
43
+ y="0"
44
+ xlink:href="#g1"
45
+ id="use2"
46
+ transform="rotate(90,13.466242,12.926086)" />
47
+ </g>
48
+ </svg>
49
+ </button>
50
+ </div>
51
+ <ul class="nav-item-list">
52
+ {% for link in site.data.navbar_links %}
53
+ <li>
54
+ {% if link.links %}
55
+ <details>
56
+ <summary class="nav-item expandable">{{ link.name }}</summary>
57
+ <ul class="nav-item-list">
58
+ {% for sublink in link.links %}
59
+ <li>
60
+ <a href="{{sublink.url}}" class="nav-item nested">{{ sublink.name }}</a>
61
+ </li>
62
+ {% endfor %}
63
+ </ul>
64
+ </details>
65
+ {% else %}
66
+ <a href="{{link.url}}" class="nav-item">{{ link.name }}</a>
67
+ {% endif %}
68
+ </li>
69
+ {% endfor %}
70
+ </ul>
71
+ </nav>
72
+ </div>
@@ -0,0 +1,21 @@
1
+ {% assign recent_posts = site.posts | where_exp: "post", "post.url != page.url" %}
2
+
3
+ {% if recent_posts.size > 0 %}
4
+ <section id="recent-posts" class="block-element" aria-label="recent posts">
5
+ <header class="section-header">
6
+ <h1>Recent Posts</h1>
7
+ </header>
8
+
9
+ {% for post in recent_posts | limit: 5 %}
10
+ <div class="area-separator"></div>
11
+ <div class="post-preview">
12
+ <h2 class="post-preview-title"><a href="{{ post.url }}">{{ post.title }}</a></h2>
13
+ <div class="post-preview-data">
14
+ <span class="post-preview-author">{{ post.author }}</span>
15
+ <span class="post-preview-date">{{ post.date | date: "%Y-%m-%d" }}</span>
16
+ </div>
17
+ <p>{{ post.excerpt }}</p>
18
+ </div>
19
+ {% endfor %}
20
+ </section>
21
+ {% endif %}
@@ -0,0 +1,53 @@
1
+ ---
2
+ ---
3
+
4
+ <head>
5
+ {% if page.title %}
6
+ {% assign title = page.title %}
7
+ {% else %}
8
+ {% assign title = site.title %}
9
+ {% endif %}
10
+
11
+ <title>{{ title }}</title>
12
+ <meta property="og:title" content="{{ title }}" />
13
+
14
+ {% if page.description %}
15
+ {% assign description = page.description %}
16
+ {% else %}
17
+ {% assign description = site.description %}
18
+ {% endif %}
19
+
20
+ <meta property="og:description" content="{{ description }}" />
21
+
22
+ {% if page.preview_image %}
23
+ {% assign preview_image = page.preview_image %}
24
+ {% else %}
25
+ {% assign preview_image = site.preview_image %}
26
+ {% endif %}
27
+
28
+ <meta property="og:image" content="{{ preview_image }}" />
29
+
30
+ <meta property="og:type" content="website" />
31
+
32
+ <meta property="og:url" content="{{ site.url | append: page.url }}" />
33
+
34
+ <meta name="viewport" content="width=device-width, initial-scale=1">
35
+
36
+ <link href="/assets/styles/layouts/default.css" rel="stylesheet" type="text/css">
37
+ <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
38
+ <link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Coda">
39
+ <script src="/assets/scripts/main.js" type="application/javascript"></script>
40
+ </head>
41
+ <body>
42
+ {% include nav.html %}
43
+
44
+ <div id="content-area">
45
+ {% include header.html %}
46
+
47
+ <main>
48
+ {{ content }}
49
+ </main>
50
+
51
+ {% include footer.html %}
52
+ </div>
53
+ </body>
@@ -0,0 +1,18 @@
1
+ ---
2
+ layout: page
3
+ ---
4
+
5
+ <style type="text/css" media="screen">
6
+ .error-message {
7
+ max-width: 45ch;
8
+ margin: auto;
9
+ }
10
+
11
+ .error-message, .error-message * {
12
+ text-align: center;
13
+ }
14
+ </style>
15
+
16
+ <div class="error-message">
17
+ {{content}}
18
+ </div>
@@ -0,0 +1,7 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <article class="block-element">
6
+ {{ content }}
7
+ </article>
@@ -0,0 +1,39 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <link href="/assets/styles/layouts/post.css" rel="stylesheet" type="text/css">
6
+
7
+ <article id="post-content" class="block-element">
8
+ <header id="post-header" class="section-header">
9
+ <div class="post-identifying-info">
10
+ <h1 class="post-title">{{ page.title }}</h1>
11
+ {% if page.tags.size > 0 %}
12
+ <ul class="post-header-tag-list post-categorization-list">
13
+ {% for tag in page.tags %}
14
+ <li>
15
+ <a>#{{ tag }}</a>
16
+ </li>
17
+ {% endfor %}
18
+ </ul>
19
+ {% endif %}
20
+ {% if page.categories.size > 0 %}
21
+ <ul class="post-header-category-list post-categorization-list">
22
+ {% for category in page.categories %}
23
+ <li>
24
+ <a>{{ category }}</a>
25
+ </li>
26
+ {% endfor %}
27
+ </ul>
28
+ {% endif %}
29
+ </div>
30
+ <div class="post-creation-info">
31
+ <span>Created on {{ page.date | date: "%B %d, %Y"}}</span>
32
+ <span>Last updated on {{ page.update_date | date: "%B %d, %Y"}}</span>
33
+ <span>Written by {{ page.author }}</span>
34
+ </div>
35
+ </header>
36
+ {{ content }}
37
+ </article>
38
+
39
+ {% include recent_posts.html %}
@@ -0,0 +1,8 @@
1
+ ---
2
+ layout: error
3
+ ---
4
+
5
+ <h1>Under Construction</h1>
6
+ <p>
7
+ Sorry this page is currently under construction. Please try visiting this page again at a later time.
8
+ </p>
data/_sass/common.scss ADDED
@@ -0,0 +1,30 @@
1
+ @use 'variables';
2
+
3
+ .block-element {
4
+ background-color: variables.$block-background-color;
5
+ border-radius: variables.$block-border-radius;
6
+ padding: variables.$block-vertical-padding variables.$block-horizontal-padding;
7
+ border: 1px solid variables.$outline-color;
8
+ margin: 0 0 variables.$block-spacing 0;
9
+
10
+ & > :first-child {
11
+ margin-top: 0;
12
+ }
13
+
14
+ & > :last-child {
15
+ margin-bottom: 0;
16
+ }
17
+ }
18
+
19
+ .section-header {
20
+ display: flex;
21
+ flex-direction: column;
22
+ border-bottom: 1px solid variables.$outline-color;
23
+ padding: 0px variables.$block-horizontal-padding 1rem;
24
+ margin: 0px #{variables.$block-horizontal-padding * -1};
25
+
26
+ h1, h2, h3, h4, h5, h6 {
27
+ text-align: center;
28
+ margin: 0px;
29
+ }
30
+ }
@@ -0,0 +1,28 @@
1
+ figure.highlight {
2
+ border-radius: 0.3em;
3
+ background-color: #383838;
4
+ overflow: auto;
5
+
6
+ pre {
7
+ padding: 1em;
8
+ }
9
+
10
+ code {
11
+
12
+ // keywords
13
+ .k, .kd {
14
+ color: #e57bff;
15
+ }
16
+
17
+ // class names
18
+ .nc {
19
+ color: #faaf15;
20
+ }
21
+
22
+ // primitive types
23
+ .kt {
24
+ color: #52a3ff;
25
+ }
26
+
27
+ }
28
+ }
@@ -0,0 +1,14 @@
1
+ @use 'variables';
2
+
3
+ dialog {
4
+ background-color: variables.$block-background-color;
5
+ border-radius: variables.$block-border-radius;
6
+ padding: variables.$block-vertical-padding variables.$block-horizontal-padding;
7
+ border: 1px solid variables.$outline-color;
8
+ color: variables.$text-color;
9
+
10
+ &::backdrop {
11
+ background-color: #ffffff;
12
+ opacity: 60%;
13
+ }
14
+ }
@@ -0,0 +1,5 @@
1
+ @forward 'components/dialog';
2
+ @forward 'components/links';
3
+ @forward 'components/text';
4
+ @forward 'components/code';
5
+ @forward 'components/math';
@@ -0,0 +1,9 @@
1
+ @use 'variables';
2
+
3
+ :link {
4
+ color: variables.$link-color;
5
+ }
6
+
7
+ :visited {
8
+ color: variables.$visited-link-color;
9
+ }
@@ -0,0 +1,3 @@
1
+ .equation {
2
+ font-family: 'Coda', sans-serif;
3
+ }
@@ -0,0 +1,10 @@
1
+ h1 {
2
+ margin: 0.3em 0;
3
+ line-height: 1em;
4
+ font-size: 2rem;
5
+ font-weight: bold;
6
+ }
7
+
8
+ p {
9
+ text-align: justify;
10
+ }
@@ -0,0 +1,28 @@
1
+ #site-footer {
2
+ display: flex;
3
+ flex-flow: row wrap;
4
+ justify-content: space-around;
5
+ margin-bottom: 0;
6
+ }
7
+
8
+ #site-footer-description {
9
+ flex-basis: 30em;
10
+ text-align: justify;
11
+ }
12
+
13
+ #site-footer-social-links {
14
+ display: flex;
15
+ flex-direction: row;
16
+ align-items: center;
17
+ justify-content: center;
18
+ margin: 0.5em;
19
+ }
20
+
21
+ .social-link {
22
+ margin: 0.3em;
23
+
24
+ .social-logo {
25
+ width: 1.5em;
26
+ height: auto;
27
+ }
28
+ }
@@ -0,0 +1,100 @@
1
+ @use 'variables';
2
+
3
+ #floating-header {
4
+ position: sticky;
5
+ top: 0;
6
+
7
+ // used to hide elements as they move above the header
8
+ padding-top: variables.$block-spacing;
9
+ margin-top: - variables.$block-spacing;
10
+
11
+ $fade-distance: variables.$block-spacing * 0.6;
12
+ background-image: linear-gradient(to top, transparent, rgba(variables.$body-background-color, 0.5) ($fade-distance / 4), rgba(variables.$body-background-color, 0.75) ($fade-distance / 2), variables.$body-background-color $fade-distance);
13
+ }
14
+
15
+ #site-header {
16
+ display: flex;
17
+ flex-direction: row;
18
+ align-items: center;
19
+ justify-content: space-between;
20
+ }
21
+
22
+ #site-header-title {
23
+ display: flex;
24
+ flex-direction: column;
25
+ align-items: end;
26
+ font-size: 2em;
27
+ }
28
+
29
+ $bounce-spacing: 100ms;
30
+
31
+ #nav-menu-button {
32
+ font-size: 3rem;
33
+ margin: 0;
34
+ margin-right: 1rem;
35
+ background: none;
36
+ border: none;
37
+ align-self: stretch;
38
+
39
+ &:hover {
40
+ cursor: pointer;
41
+ }
42
+ }
43
+
44
+ .ellipsis-icon {
45
+ $dot-radius: 7px;
46
+ $dot-diameter: $dot-radius * 2;
47
+ $dot-spacing: 7px;
48
+ $dot-offset: $dot-diameter + $dot-spacing;
49
+
50
+ height: 20;
51
+ width: 100;
52
+ overflow: visible;
53
+
54
+ .ellipsis-dot {
55
+ --dot-index: 0;
56
+ position: relative;
57
+ stroke: black;
58
+ fill: white;
59
+ stroke-width: 1px;
60
+ r: $dot-radius;
61
+ cy: 10px;
62
+ cx: calc(#{$dot-offset} * var(--dot-index) + #{$dot-radius});
63
+
64
+ &:nth-child(2) {
65
+ --dot-index: 1;
66
+ }
67
+
68
+ &:nth-child(3) {
69
+ --dot-index: 2;
70
+ }
71
+ }
72
+
73
+ &.animate-right .ellipsis-dot {
74
+ animation-name: bounce;
75
+ animation-duration: 200ms;
76
+ animation-delay: calc(#{$bounce-spacing} * var(--dot-index));
77
+ }
78
+
79
+ &.animate-left .ellipsis-dot {
80
+ animation-name: bounce;
81
+ animation-duration: 200ms;
82
+ animation-delay: calc(#{$bounce-spacing * 3} - #{$bounce-spacing} * var(--dot-index));
83
+ }
84
+ }
85
+
86
+ @keyframes bounce {
87
+ $bounce-height: 0.3rem;
88
+
89
+ from {
90
+ cy: 10px;
91
+ }
92
+
93
+ 50% {
94
+ cy: 0;
95
+ }
96
+
97
+ to {
98
+ cy: 10px;
99
+ }
100
+ }
@@ -0,0 +1,133 @@
1
+ @use 'variables';
2
+
3
+ @mixin nav-sizing {
4
+ width: var(--expanded-nav-width);
5
+ height: 100vh;
6
+ }
7
+
8
+ // this wrapper is responsible for still displacing other elements on the page
9
+ #site-nav-menu-displacement-wrapper {
10
+ --expanded-nav-width: 30ch;
11
+ flex-grow: 0;
12
+ z-index: 10000;
13
+ position: sticky;
14
+ top: 0;
15
+ @include nav-sizing; // adjustment accounts for the border thickness
16
+ overflow-x: hidden; // used to show/hide the nav content
17
+ padding: 0px;
18
+ border-right: solid 1px black;
19
+ transition: width 500ms, border-width 500ms ease-out;
20
+
21
+ &:has(#site-nav-menu:not(.shown)) {
22
+ width: 0px;
23
+ border-width: 0;
24
+ }
25
+
26
+ @media screen and (width < 500px) {
27
+ --expanded-nav-width: 100vw;
28
+ position: fixed;
29
+ }
30
+ }
31
+
32
+ #site-nav-menu {
33
+ display: flex;
34
+ flex-direction: column;
35
+ overflow-x: hidden;
36
+ text-align: center;
37
+ padding: 0;
38
+ overflow-y: scroll;
39
+ @include nav-sizing;
40
+ background-color: variables.$block-background-color;
41
+ }
42
+
43
+ #nav-header {
44
+ display: flex;
45
+ flex-direction: row-reverse;
46
+ padding: 0;
47
+ }
48
+
49
+ #nav-close-button {
50
+ font-size: 2.5em;
51
+ padding: 0;
52
+ margin: 0.25em;
53
+ background: none;
54
+ border: none;
55
+ cursor: pointer;
56
+
57
+ svg {
58
+ height: 1em;
59
+ width: 1em;
60
+ }
61
+ }
62
+
63
+ .nav-item-list {
64
+ list-style: none;
65
+ display: flex;
66
+ flex-direction: column;
67
+ padding: 0px; // corrected default list style
68
+ margin: 0px; // corrected default list style
69
+ align-items: stretch;
70
+
71
+ & > li {
72
+ display: flex;
73
+ flex-direction: column;
74
+ align-items: stretch;
75
+ }
76
+ }
77
+
78
+ @mixin nav-menu-marker($icon) {
79
+ &::before {
80
+ transform-origin: 75% 25%; // these values are necessary to fix the rotation
81
+ position: absolute;
82
+ display: block;
83
+ left: 1em;
84
+ top: 50%;
85
+ transform: translate(0, -50%); // adjusts for the element's height
86
+ content: "";
87
+ background-image: $icon;
88
+ height: 1em;
89
+ width: 1em;
90
+ background-size: contain;
91
+ }
92
+ }
93
+
94
+ .nav-item {
95
+ position: relative;
96
+ background-color: transparent;
97
+ font-size: 1em;
98
+ font-weight: bold;
99
+ text-decoration: none;
100
+ padding: 0.7em;
101
+ border: none;
102
+ border-bottom: solid 1px variables.$outline-color;
103
+ cursor: pointer;
104
+ transition: background-color 0.3s;
105
+
106
+ &, &:visited {
107
+ color: variables.$text-color;
108
+ }
109
+
110
+ &:hover, &:focus-visible {
111
+ background-color: #00000045;
112
+ }
113
+
114
+ &.expandable {
115
+ list-style: none; // remove the standard ::marker since it cannot be easily restyled
116
+
117
+ &::-webkit-details-marker {
118
+ display: none; // remove the standard ::marker for webkit browsers
119
+ }
120
+
121
+ @include nav-menu-marker(url('/assets/icons/dropdown-indicator.svg'));
122
+
123
+ [open] > & { // when this section is expanded
124
+ &::before {
125
+ transform: rotate(90deg);
126
+ }
127
+ }
128
+ }
129
+
130
+ &.nested {
131
+ @include nav-menu-marker(url('/assets/icons/nested-indicator.svg'));
132
+ }
133
+ }
@@ -0,0 +1,4 @@
1
+ .post-preview {
2
+ display: flex;
3
+ flex-direction: column;
4
+ }
@@ -0,0 +1,11 @@
1
+ @mixin tablet {
2
+ @media only screen and (min-width: 768px) { @content; }
3
+ }
4
+
5
+ @mixin small-computer {
6
+ @media only screen and (min-width: 992px) { @content; }
7
+ }
8
+
9
+ @mixin large-computer {
10
+ @media only screen and (min-width: 1200px) { @content; }
11
+ }
@@ -0,0 +1,20 @@
1
+ @charset "utf-8";
2
+ @use 'sass:color';
3
+
4
+ $body-background-color: #262328;
5
+ $body-padding: 0.8rem;
6
+
7
+ $block-background-color: #484449;
8
+ $outline-color: black;
9
+ $block-border-radius: 0.75rem;
10
+ $block-vertical-padding: 1rem;
11
+ $block-horizontal-padding: 1.5rem;
12
+ $block-spacing: 1rem;
13
+
14
+ $text-color: #e8e8e8;
15
+
16
+ $link-color: #e57bff;
17
+ $visited-link-color: color.adjust($link-color, $lightness: -10%);
18
+
19
+ $tertiary-color: #8b8b8b;
20
+ $secondary-accent: #787878;
@@ -0,0 +1,70 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="100"
6
+ height="100"
7
+ viewBox="0 0 26.458333 26.458333"
8
+ version="1.1"
9
+ id="svg1"
10
+ inkscape:version="1.4.3 (fcd0343856, 2026-01-01)"
11
+ sodipodi:docname="dropdown-indicator.svg"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg">
16
+ <sodipodi:namedview
17
+ id="namedview1"
18
+ pagecolor="#505050"
19
+ bordercolor="#eeeeee"
20
+ borderopacity="1"
21
+ inkscape:showpageshadow="0"
22
+ inkscape:pageopacity="0"
23
+ inkscape:pagecheckerboard="0"
24
+ inkscape:deskcolor="#505050"
25
+ inkscape:document-units="mm"
26
+ inkscape:zoom="4.4400112"
27
+ inkscape:cx="35.247659"
28
+ inkscape:cy="51.463834"
29
+ inkscape:window-width="1534"
30
+ inkscape:window-height="831"
31
+ inkscape:window-x="0"
32
+ inkscape:window-y="0"
33
+ inkscape:window-maximized="1"
34
+ inkscape:current-layer="layer1" />
35
+ <defs
36
+ id="defs1">
37
+ <inkscape:path-effect
38
+ effect="fillet_chamfer"
39
+ id="path-effect3"
40
+ is_visible="true"
41
+ lpeversion="1"
42
+ nodesatellites_param="F,0,0,1,0,6.0438612,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,6.2828462,0,1 @ F,0,0,1,0,0,0,1 @ F,0,0,1,0,6.5860744,0,1 @ F,0,0,1,0,0,0,1"
43
+ radius="0"
44
+ unit="px"
45
+ method="auto"
46
+ mode="F"
47
+ chamfer_steps="1"
48
+ flexible="false"
49
+ use_knot_distance="true"
50
+ apply_no_radius="true"
51
+ apply_with_radius="true"
52
+ only_selected="false"
53
+ hide_knots="false" />
54
+ </defs>
55
+ <g
56
+ inkscape:label="Layer 1"
57
+ inkscape:groupmode="layer"
58
+ id="layer1">
59
+ <path
60
+ id="path1"
61
+ style="fill:#ffffff;stroke:#000000;stroke-width:0.264583"
62
+ inkscape:transform-center-x="-3.7140329"
63
+ inkscape:transform-center-y="0.028885221"
64
+ transform="matrix(0.00699568,0.77670699,-0.77670699,0.00699568,16.138814,8.9318148)"
65
+ d="M 15.945183,16.833075 5.313638,16.778385 -5.0789249,16.724924 A 3.6274033,3.6274033 60.294732 0 1 -8.1923176,11.267732 L -2.9497388,2.2942387 2.139877,-6.4174349 a 3.8024718,3.8024718 0.294728 0 1 6.5859872,0.033878 l 4.9997228,8.7635734 5.268411,9.2345351 a 3.4894248,3.4894248 120.29473 0 1 -3.048815,5.218523 z"
66
+ sodipodi:nodetypes="ccczccc"
67
+ inkscape:path-effect="#path-effect3"
68
+ inkscape:original-d="M 21.988964,16.864165 5.313638,16.778385 -11.361688,16.692605 -2.9497388,2.2942387 5.4622102,-12.104128 13.725587,2.3800169 Z" />
69
+ </g>
70
+ </svg>
@@ -0,0 +1,55 @@
1
+ <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2
+ <!-- Created with Inkscape (http://www.inkscape.org/) -->
3
+
4
+ <svg
5
+ width="100"
6
+ height="100"
7
+ viewBox="0 0 26.458333 26.458333"
8
+ version="1.1"
9
+ id="svg1"
10
+ inkscape:version="1.4.3 (fcd0343856, 2026-01-01)"
11
+ sodipodi:docname="nested-indicator.svg"
12
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
14
+ xmlns="http://www.w3.org/2000/svg"
15
+ xmlns:svg="http://www.w3.org/2000/svg">
16
+ <sodipodi:namedview
17
+ id="namedview1"
18
+ pagecolor="#505050"
19
+ bordercolor="#eeeeee"
20
+ borderopacity="1"
21
+ inkscape:showpageshadow="0"
22
+ inkscape:pageopacity="0"
23
+ inkscape:pagecheckerboard="0"
24
+ inkscape:deskcolor="#505050"
25
+ inkscape:document-units="mm"
26
+ inkscape:zoom="4.4400112"
27
+ inkscape:cx="59.121472"
28
+ inkscape:cy="49.887262"
29
+ inkscape:window-width="1534"
30
+ inkscape:window-height="831"
31
+ inkscape:window-x="0"
32
+ inkscape:window-y="0"
33
+ inkscape:window-maximized="1"
34
+ inkscape:current-layer="layer1" />
35
+ <defs
36
+ id="defs1" />
37
+ <g
38
+ inkscape:label="Layer 1"
39
+ inkscape:groupmode="layer"
40
+ id="layer1">
41
+ <path
42
+ style="fill:none;stroke:#ffffff;stroke-width:2.64583333;stroke-opacity:1;stroke-dasharray:none;stroke-linecap:round"
43
+ d="m 4.8864367,2.9795345 v 5.1545948 c 0,4.1285407 2.5754116,5.1545947 6.3464083,5.1545947 l 12.424659,0"
44
+ id="path1"
45
+ sodipodi:nodetypes="cssc" />
46
+ <path
47
+ style="fill:none;stroke:#ffffff;stroke-width:2.64583333;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
48
+ d="m 23.652685,13.294217 -6.251867,6.251867"
49
+ id="path2" />
50
+ <path
51
+ style="fill:none;stroke:#ffffff;stroke-width:2.64583333;stroke-linecap:round;stroke-dasharray:none;stroke-opacity:1"
52
+ d="M 23.597913,13.229133 17.489867,7.1210873"
53
+ id="path3" />
54
+ </g>
55
+ </svg>
@@ -0,0 +1,39 @@
1
+ document.addEventListener("DOMContentLoaded", () => {
2
+ document.getElementById("nav-menu-button").addEventListener("click", onNavToggleButtonClicked);
3
+ document.getElementById("nav-close-button").addEventListener("click", onNavCloseButtonClicked);
4
+ console.log('here')
5
+ });
6
+
7
+ function onNavToggleButtonClicked() {
8
+ toggleNavMenu();
9
+ updateAnimationDirection();
10
+ }
11
+
12
+ let isOpen = false;
13
+
14
+ function toggleNavMenu() {
15
+ const navMenu = document.getElementById('site-nav-menu');
16
+ isOpen = !isOpen;
17
+ navMenu.classList.toggle('shown', isOpen);
18
+ navMenu.setAttribute('aria-hidden', !isOpen);
19
+ }
20
+
21
+ function onNavCloseButtonClicked() {
22
+ closeNavMenu();
23
+ updateAnimationDirection();
24
+ }
25
+
26
+ function closeNavMenu() {
27
+ const navMenu = document.getElementById('site-nav-menu');
28
+ isOpen = false;
29
+ navMenu.classList.remove('shown');
30
+ navMenu.setAttribute('aria-hidden', true);
31
+ }
32
+
33
+ function updateAnimationDirection() {
34
+ const navMenuIcon = document.querySelector('#nav-menu-button .ellipsis-icon');
35
+ navMenuIcon.classList.remove('animate-right', 'animate-left');
36
+ setTimeout(() => {
37
+ navMenuIcon.classList.add(isOpen ? 'animate-right' : 'animate-left');
38
+ }, 0);
39
+ }
@@ -0,0 +1,48 @@
1
+ ---
2
+ ---
3
+
4
+ @use 'variables';
5
+ @use 'utils/breakpoints';
6
+
7
+ @use 'includes/header';
8
+ @use 'includes/nav';
9
+ @use 'includes/footer';
10
+
11
+ @use 'components';
12
+ @use 'common';
13
+
14
+ html {
15
+ display: flex;
16
+ flex-direction: column;
17
+ align-items: center;
18
+ justify-content: start;
19
+ min-height: 100vh;
20
+ }
21
+
22
+ body {
23
+ background-color: variables.$body-background-color;
24
+ color: variables.$text-color;
25
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
26
+ display: flex;
27
+ flex-direction: row;
28
+ justify-content: start;
29
+ width: 100vw;
30
+ align-items: stretch;
31
+ margin: 0;
32
+ padding: 0;
33
+ }
34
+
35
+ #content-area {
36
+ display: flex;
37
+ flex-direction: column;
38
+ justify-content: start;
39
+ min-height: calc(100vh - 2rem);
40
+ width: min(80ch, calc(100vw - 2rem));
41
+ flex-grow: 1;
42
+ align-items: stretch;
43
+ margin: variables.$block-spacing;
44
+ }
45
+
46
+ main {
47
+ flex-grow: 1;
48
+ }
@@ -0,0 +1,33 @@
1
+ ---
2
+ ---
3
+
4
+ #post-header {
5
+ display: flex;
6
+ flex-direction: row;
7
+ justify-content: space-between;
8
+ align-items: center;
9
+ }
10
+
11
+ .post-identifying-info {
12
+ display: flex;
13
+ flex-direction: column;
14
+ }
15
+
16
+ .post-categorization-list {
17
+ display: flex;
18
+ flex-direction: row;
19
+ list-style: none;
20
+ padding: 0px;
21
+ margin: 0px;
22
+ margin-top: 0.5em;
23
+
24
+ > li {
25
+ margin-right: 1em;
26
+ }
27
+ }
28
+
29
+ .post-creation-info {
30
+ display: flex;
31
+ flex-direction: column;
32
+ align-items: end;
33
+ }
metadata ADDED
@@ -0,0 +1,109 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-theme-hd-jekyll
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Roy Stewart
8
+ bindir: bin
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: jekyll
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '4.0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '4.0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: jekyll-sass-converter
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: kramdown-parser-gfm
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ email:
55
+ - roythomasstewart@gmail.com
56
+ executables: []
57
+ extensions: []
58
+ extra_rdoc_files: []
59
+ files:
60
+ - _config.yml
61
+ - _includes/footer.html
62
+ - _includes/header.html
63
+ - _includes/nav.html
64
+ - _includes/recent_posts.html
65
+ - _layouts/default.html
66
+ - _layouts/error.html
67
+ - _layouts/page.html
68
+ - _layouts/post.html
69
+ - _layouts/under_construction.html
70
+ - _sass/common.scss
71
+ - _sass/components/code.scss
72
+ - _sass/components/dialog.scss
73
+ - _sass/components/index.scss
74
+ - _sass/components/links.scss
75
+ - _sass/components/math.scss
76
+ - _sass/components/text.scss
77
+ - _sass/includes/footer.scss
78
+ - _sass/includes/header.scss
79
+ - _sass/includes/nav.scss
80
+ - _sass/includes/recent_posts.scss
81
+ - _sass/utils/breakpoints.scss
82
+ - _sass/variables.scss
83
+ - assets/icons/dropdown-indicator.svg
84
+ - assets/icons/nested-indicator.svg
85
+ - assets/scripts/main.js
86
+ - assets/styles/layouts/default.scss
87
+ - assets/styles/layouts/post.scss
88
+ homepage: https://hd-jekyll.hdgenius.me
89
+ licenses:
90
+ - MIT
91
+ metadata: {}
92
+ rdoc_options: []
93
+ require_paths:
94
+ - lib
95
+ required_ruby_version: !ruby/object:Gem::Requirement
96
+ requirements:
97
+ - - ">="
98
+ - !ruby/object:Gem::Version
99
+ version: '0'
100
+ required_rubygems_version: !ruby/object:Gem::Requirement
101
+ requirements:
102
+ - - ">="
103
+ - !ruby/object:Gem::Version
104
+ version: '0'
105
+ requirements: []
106
+ rubygems_version: 3.6.7
107
+ specification_version: 4
108
+ summary: Clean and simple Jekyll theme.
109
+ test_files: []