jekyll-theme-nouveau 0.2.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: be79762069a0ff0ad0ef55d125d79a57b4a04c79996bc02d9b479f57f2bb8662
4
+ data.tar.gz: 4ffaec1a5a653ce7bda3fb243a32936e7a55b703ae6879ed6051b90c4fd11c5c
5
+ SHA512:
6
+ metadata.gz: 7d3ecc49e75e7b0855ae31c4772bf0264dd0f2151ab6c389babc86b727b98b4db4f67ec9fe7252218f767315dbe55269fedd758e709946cfe60a9a34afc0c7c2
7
+ data.tar.gz: e90c8bf872073059eb0503f17adf744768227b30242c2de9b83fd0279a0ea79f3a95ab583e4b354cb62382dca0ae5fde6002b4c69e128ac4e18094fe2c87f1e7
data/_config.yml ADDED
@@ -0,0 +1,21 @@
1
+ title: Nouveau
2
+ email: roythomasstewart@gmail.com
3
+ description: Nouveau is a clean and minimalist theme for Jekyll. Nouveau favors a streamlined and simple flow and page layout over complicated and busy designs.
4
+ baseurl: ""
5
+ url: "http://nouveau.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,35 @@
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
+ &.secondary {
19
+ border-radius: #{variables.$block-border-radius * 0.75};
20
+ background-color: variables.$secondary-block-background-color;
21
+ }
22
+ }
23
+
24
+ .section-header {
25
+ display: flex;
26
+ flex-direction: column;
27
+ border-bottom: 1px solid variables.$outline-color;
28
+ padding: 0px variables.$block-horizontal-padding 1rem;
29
+ margin: 0px #{variables.$block-horizontal-padding * -1};
30
+
31
+ h1, h2, h3, h4, h5, h6 {
32
+ text-align: center;
33
+ margin: 0px;
34
+ }
35
+ }
@@ -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,102 @@
1
+ @use 'sass:math';
2
+
3
+ @use '../variables';
4
+
5
+ #floating-header {
6
+ position: sticky;
7
+ top: 0;
8
+
9
+ // used to hide elements as they move above the header
10
+ padding-top: variables.$block-spacing;
11
+ margin-top: - variables.$block-spacing;
12
+
13
+ $fade-distance: variables.$block-spacing * 0.6;
14
+ background-image: linear-gradient(to top, transparent, rgba(variables.$body-background-color, 0.5) math.div($fade-distance, 4), rgba(variables.$body-background-color, 0.75) math.div($fade-distance, 2), variables.$body-background-color $fade-distance);
15
+ }
16
+
17
+ #site-header {
18
+ display: flex;
19
+ flex-direction: row;
20
+ align-items: center;
21
+ justify-content: space-between;
22
+ }
23
+
24
+ #site-header-title {
25
+ display: flex;
26
+ flex-direction: column;
27
+ align-items: end;
28
+ font-size: 2em;
29
+ }
30
+
31
+ $bounce-spacing: 100ms;
32
+
33
+ #nav-menu-button {
34
+ font-size: 3rem;
35
+ margin: 0;
36
+ margin-right: 1rem;
37
+ background: none;
38
+ border: none;
39
+ align-self: stretch;
40
+
41
+ &:hover {
42
+ cursor: pointer;
43
+ }
44
+ }
45
+
46
+ .ellipsis-icon {
47
+ $dot-radius: 7px;
48
+ $dot-diameter: $dot-radius * 2;
49
+ $dot-spacing: 7px;
50
+ $dot-offset: $dot-diameter + $dot-spacing;
51
+
52
+ height: 20;
53
+ width: 100;
54
+ overflow: visible;
55
+
56
+ .ellipsis-dot {
57
+ --dot-index: 0;
58
+ position: relative;
59
+ stroke: black;
60
+ fill: white;
61
+ stroke-width: 1px;
62
+ r: $dot-radius;
63
+ cy: 10px;
64
+ cx: calc(#{$dot-offset} * var(--dot-index) + #{$dot-radius});
65
+
66
+ &:nth-child(2) {
67
+ --dot-index: 1;
68
+ }
69
+
70
+ &:nth-child(3) {
71
+ --dot-index: 2;
72
+ }
73
+ }
74
+
75
+ &.animate-right .ellipsis-dot {
76
+ animation-name: bounce;
77
+ animation-duration: 200ms;
78
+ animation-delay: calc(#{$bounce-spacing} * var(--dot-index));
79
+ }
80
+
81
+ &.animate-left .ellipsis-dot {
82
+ animation-name: bounce;
83
+ animation-duration: 200ms;
84
+ animation-delay: calc(#{$bounce-spacing * 3} - #{$bounce-spacing} * var(--dot-index));
85
+ }
86
+ }
87
+
88
+ @keyframes bounce {
89
+ $bounce-height: 0.3rem;
90
+
91
+ from {
92
+ cy: 10px;
93
+ }
94
+
95
+ 50% {
96
+ cy: 0;
97
+ }
98
+
99
+ to {
100
+ cy: 10px;
101
+ }
102
+ }
@@ -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
+ &, &:link, &: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,22 @@
1
+ @charset "utf-8";
2
+ @use 'sass:color';
3
+
4
+ $body-background-color: #262126;
5
+ $body-padding: 0.8rem;
6
+
7
+ $block-background-color: #474246;
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
+ $secondary-block-background-color: #221822;
15
+
16
+ $text-color: #e8e8e8;
17
+
18
+ $link-color: #e57bff;
19
+ $visited-link-color: color.adjust($link-color, $lightness: -10%);
20
+
21
+ $tertiary-color: #8b8b8b;
22
+ $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,47 @@
1
+ ---
2
+ ---
3
+
4
+ @use 'variables';
5
+
6
+ @use 'includes/header';
7
+ @use 'includes/nav';
8
+ @use 'includes/footer';
9
+
10
+ @use 'components';
11
+ @use 'common';
12
+
13
+ html {
14
+ display: flex;
15
+ flex-direction: column;
16
+ align-items: center;
17
+ justify-content: start;
18
+ min-height: 100vh;
19
+ }
20
+
21
+ body {
22
+ background-color: variables.$body-background-color;
23
+ color: variables.$text-color;
24
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
25
+ display: flex;
26
+ flex-direction: row;
27
+ justify-content: start;
28
+ width: 100vw;
29
+ align-items: stretch;
30
+ margin: 0;
31
+ padding: 0;
32
+ }
33
+
34
+ #content-area {
35
+ display: flex;
36
+ flex-direction: column;
37
+ justify-content: start;
38
+ min-height: calc(100vh - 2rem);
39
+ width: min(80ch, calc(100vw - 2rem));
40
+ flex-grow: 1;
41
+ align-items: stretch;
42
+ margin: variables.$block-spacing;
43
+ }
44
+
45
+ main {
46
+ flex-grow: 1;
47
+ }
@@ -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,136 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: jekyll-theme-nouveau
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.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: kramdown-parser-gfm
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - "~>"
31
+ - !ruby/object:Gem::Version
32
+ version: '1.0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - "~>"
38
+ - !ruby/object:Gem::Version
39
+ version: '1.0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: jekyll-sass-converter
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.1'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.1'
54
+ - !ruby/object:Gem::Dependency
55
+ name: jekyll-paginate
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '1.1'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '1.1'
68
+ - !ruby/object:Gem::Dependency
69
+ name: jekyll-sitemap
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.4'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.4'
82
+ email:
83
+ - roythomasstewart@gmail.com
84
+ executables: []
85
+ extensions: []
86
+ extra_rdoc_files: []
87
+ files:
88
+ - _config.yml
89
+ - _includes/footer.html
90
+ - _includes/header.html
91
+ - _includes/nav.html
92
+ - _includes/recent_posts.html
93
+ - _layouts/default.html
94
+ - _layouts/error.html
95
+ - _layouts/page.html
96
+ - _layouts/post.html
97
+ - _layouts/under_construction.html
98
+ - _sass/common.scss
99
+ - _sass/components/code.scss
100
+ - _sass/components/dialog.scss
101
+ - _sass/components/index.scss
102
+ - _sass/components/links.scss
103
+ - _sass/components/math.scss
104
+ - _sass/components/text.scss
105
+ - _sass/includes/footer.scss
106
+ - _sass/includes/header.scss
107
+ - _sass/includes/nav.scss
108
+ - _sass/includes/recent_posts.scss
109
+ - _sass/variables.scss
110
+ - assets/icons/dropdown-indicator.svg
111
+ - assets/icons/nested-indicator.svg
112
+ - assets/scripts/main.js
113
+ - assets/styles/layouts/default.scss
114
+ - assets/styles/layouts/post.scss
115
+ homepage: https://nouveau.hdgenius.me
116
+ licenses:
117
+ - MIT
118
+ metadata: {}
119
+ rdoc_options: []
120
+ require_paths:
121
+ - lib
122
+ required_ruby_version: !ruby/object:Gem::Requirement
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ version: '0'
127
+ required_rubygems_version: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ requirements: []
133
+ rubygems_version: 3.6.7
134
+ specification_version: 4
135
+ summary: Clean and simple Jekyll theme.
136
+ test_files: []