pokpok
This commit is contained in:
@ -1,6 +1,8 @@
|
|||||||
base_url = "https://stevenlr.com"
|
base_url = "https://stevenlr.com"
|
||||||
|
title = "Steven Le Rouzic"
|
||||||
|
description = "Programming, graphics, and more"
|
||||||
compile_sass = true
|
compile_sass = true
|
||||||
build_search_index = true
|
build_search_index = false
|
||||||
generate_feed = true
|
generate_feed = true
|
||||||
feed_filename = "rss.xml"
|
feed_filename = "rss.xml"
|
||||||
taxonomies = [
|
taxonomies = [
|
||||||
|
@ -3,4 +3,5 @@ title = "Blog"
|
|||||||
sort_by = "date"
|
sort_by = "date"
|
||||||
template = "blog.html"
|
template = "blog.html"
|
||||||
page_template = "blog-article.html"
|
page_template = "blog-article.html"
|
||||||
|
paginate_by = 5
|
||||||
+++
|
+++
|
||||||
|
2
deploy.sh
Executable file
2
deploy.sh
Executable file
@ -0,0 +1,2 @@
|
|||||||
|
rsync -avzr --delete -e "ssh -i ~/.ssh/stevenlr.com.pem -o StrictHostKeyChecking=no -p 22" public/ ubuntu@stevenlr.com:/var/www/html
|
||||||
|
|
@ -61,6 +61,12 @@
|
|||||||
border-radius: 8px;
|
border-radius: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@media (prefers-color-scheme: dark) {
|
||||||
|
pre {
|
||||||
|
border: 1px solid var(--color-outline-variant);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ul {
|
ul {
|
||||||
list-style: square;
|
list-style: square;
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,11 @@ hr {
|
|||||||
color: var(--color-on-background);
|
color: var(--color-on-background);
|
||||||
font-size: 32px;
|
font-size: 32px;
|
||||||
font-family: "PT Serif Caption", serif;
|
font-family: "PT Serif Caption", serif;
|
||||||
|
|
||||||
|
a {
|
||||||
|
color: inherit;
|
||||||
|
text-decoration: none;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.info {
|
.info {
|
||||||
@ -61,3 +66,71 @@ hr {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.pagination {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
gap: 16px;
|
||||||
|
font-size: 18px;
|
||||||
|
font-family: "PT Serif Caption", serif;
|
||||||
|
margin: 32px 0px;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
color: var(--color-primary);
|
||||||
|
text-decoration: none;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
opacity: 80%;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#footer {
|
||||||
|
border-top: 1px solid var(--color-outline-variant);
|
||||||
|
padding: 16px 0px;
|
||||||
|
margin-top: 24px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#header {
|
||||||
|
margin-bottom: 24px;
|
||||||
|
padding: 20px 0px;
|
||||||
|
border-bottom: 1px solid var(--color-outline-variant);
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
align-items: center;
|
||||||
|
|
||||||
|
.title_desc {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
gap: 8px;
|
||||||
|
|
||||||
|
.title a {
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--color-on-background);
|
||||||
|
font-size: 28px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.description {
|
||||||
|
color: var(--color-on-surface-variant);
|
||||||
|
font-size: 16px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.navigation {
|
||||||
|
display: flex;
|
||||||
|
flex-direction: row;
|
||||||
|
|
||||||
|
a {
|
||||||
|
display: block;
|
||||||
|
text-decoration: none;
|
||||||
|
color: var(--color-on-background);
|
||||||
|
padding: 8px 16px;
|
||||||
|
border-radius: 9999px;
|
||||||
|
|
||||||
|
&:hover {
|
||||||
|
background-color: var(--color-primary-container);
|
||||||
|
color: var(--color-on-primary-container);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
13
templates/404.html
Normal file
13
templates/404.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{{ config.title }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="article-header">
|
||||||
|
<h1>Page not found</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -2,15 +2,33 @@
|
|||||||
<html>
|
<html>
|
||||||
<head>
|
<head>
|
||||||
<meta charset="utf-8" />
|
<meta charset="utf-8" />
|
||||||
<title>Steven Le Rouzic</title>
|
<title>{% block title %}{% endblock %}</title>
|
||||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||||
<link href="https://fonts.googleapis.com/css2?family=PT+Serif&family=PT+Serif+Caption&family=Roboto+Mono&display=swap" rel="stylesheet">
|
<link href="https://fonts.googleapis.com/css2?family=PT+Serif&family=PT+Serif+Caption&family=Roboto+Mono&display=swap" rel="stylesheet">
|
||||||
<link rel="stylesheet" type="text/css" href="{{ get_url(path="theme.css") }}" />
|
<link rel="stylesheet" type="text/css" href="{{ get_url(path="theme.css") }}" />
|
||||||
<script src="https://unpkg.com/htmx.org@1.9.6"></script>
|
<script src="https://unpkg.com/htmx.org@1.9.6"></script>
|
||||||
|
<link rel="alternate" type="application/rss+xml" title="RSS" href="{{ get_url(path="rss.xml", trailing_slash=false) }}">
|
||||||
</head>
|
</head>
|
||||||
<body hx-boost="true">
|
<body hx-boost="true">
|
||||||
|
<div id="header">
|
||||||
|
<div class="title_desc">
|
||||||
|
<p class="title"><a href="{{ get_url(path="@/_index.md") }}">{{ config.title }}</a></p>
|
||||||
|
<p class="description">{{ config.description }}</p>
|
||||||
|
</div>
|
||||||
|
<div style="flex-grow: 1;"></div>
|
||||||
|
<div class="navigation">
|
||||||
|
<a href="{{ get_url(path="@/blog/_index.md") }}">Blog</a>
|
||||||
|
{% set tags = get_taxonomy(kind="tags") %}
|
||||||
|
<a href="{{ tags.permalink | safe }}" class="secondary">Tags</a>
|
||||||
|
<a href="https://twitter.com/steven_lr">Twitter</a>
|
||||||
|
<a href="https://github.com/stevenlr">Github</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
{% block content %}{% endblock %}
|
{% block content %}{% endblock %}
|
||||||
|
<div id="footer" class="typography">
|
||||||
|
<p>© Copyright {{ now() | date(format="%Y") }}, Steven Le Rouzic</p>
|
||||||
|
</div>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
||||||
|
@ -1,17 +1,21 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{{ page.title }} - {{ config.title }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<div class="article-header">
|
<div class="article-header">
|
||||||
<h1>{{ page.title }}</h1>
|
<h1>{{ page.title }}</h1>
|
||||||
<div class="info">
|
<div class="info">
|
||||||
<p class="date">{{ page.date | date(format="%B %-d, %Y") }}</p>
|
<p class="date">{{ page.date | date(format="%B %-d, %Y") }}</p>
|
||||||
<p class="tags">
|
<p class="tags">
|
||||||
{% for tag in page.taxonomies["tags"] %}
|
{% for tag in page.taxonomies["tags"] %}
|
||||||
<a href="{{ get_taxonomy_url(kind="tags", name=tag) }}">#{{ tag }}</a>
|
<a href="{{ get_taxonomy_url(kind="tags", name=tag) }}">#{{ tag }}</a>
|
||||||
{%- endfor %}
|
{%- endfor %}
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="typography">
|
<div class="typography">
|
||||||
|
@ -1,11 +1,52 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
Blog - {{ config.title }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<ul>
|
<div class="pagination">
|
||||||
{% for page in section.pages %}
|
<a href="{{ paginator.first }}">« First page</a>
|
||||||
<li><a href="{{ page.permalink | safe }}">{{ page.title }}</a> - {{ page.date | date(format="%B %-d, %Y") }}</li>
|
{% if paginator.previous %}
|
||||||
|
<a href="{{ paginator.previous }}">‹ Previous page</a>
|
||||||
|
{% endif %}
|
||||||
|
<div style="flex-grow: 1;"></div>
|
||||||
|
{% if paginator.next %}
|
||||||
|
<a class="right" href="{{ paginator.next }}">› Next page</a>
|
||||||
|
{% endif %}
|
||||||
|
<a class="right" href="{{ paginator.last }}">Last page »</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% for page in paginator.pages %}
|
||||||
|
<div class="article-header">
|
||||||
|
<h1><a href="{{ page.permalink | safe }}">{{ page.title }}</a></h1>
|
||||||
|
<div class="info">
|
||||||
|
<p class="date">{{ page.date | date(format="%B %-d, %Y") }}</p>
|
||||||
|
<p class="tags">
|
||||||
|
{% for tag in page.taxonomies["tags"] %}
|
||||||
|
<a href="{{ get_taxonomy_url(kind="tags", name=tag) }}">#{{ tag }}</a>
|
||||||
|
{%- endfor %}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="typography">
|
||||||
|
{{ page.summary | safe }}
|
||||||
|
<p><a href="">Read more…</a></p>
|
||||||
|
</div>
|
||||||
|
{% if not loop.last %}<hr />{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
|
||||||
|
<div class="pagination">
|
||||||
|
<a href="{{ paginator.first }}">« First page</a>
|
||||||
|
{% if paginator.previous %}
|
||||||
|
<a href="{{ paginator.previous }}">‹ Previous page</a>
|
||||||
|
{% endif %}
|
||||||
|
<div style="flex-grow: 1;"></div>
|
||||||
|
{% if paginator.next %}
|
||||||
|
<a class="right" href="{{ paginator.next }}">› Next page</a>
|
||||||
|
{% endif %}
|
||||||
|
<a class="right" href="{{ paginator.last }}">Last page »</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
@ -1,14 +1,38 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{{ config.title }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="pagination">
|
||||||
|
<a href="{{ get_url(path="@/blog/_index.md") }}">Go to blog</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% set blog_section = get_section(path="blog/_index.md") %}
|
{% set blog_section = get_section(path="blog/_index.md") %}
|
||||||
<ul>
|
{% for page in blog_section.pages | slice(end=5) %}
|
||||||
{% for post in blog_section.pages | slice(end=3) %}
|
<div class="article-header">
|
||||||
<li><a href="{{ post.permalink | safe }}">{{ post.title }}</a> - {{ post.date | date(format="%B %-d, %Y") }}</li>
|
<h1><a href="{{ page.permalink | safe }}">{{ page.title }}</a></h1>
|
||||||
<div class="typography">{{ post.summary | safe }}</div>
|
<div class="info">
|
||||||
|
<p class="date">{{ page.date | date(format="%B %-d, %Y") }}</p>
|
||||||
|
<p class="tags">
|
||||||
|
{% for tag in page.taxonomies["tags"] %}
|
||||||
|
<a href="{{ get_taxonomy_url(kind="tags", name=tag) }}">#{{ tag }}</a>
|
||||||
|
{%- endfor %}
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="typography">
|
||||||
|
{{ page.summary | safe }}
|
||||||
|
<p><a href="">Read more…</a></p>
|
||||||
|
</div>
|
||||||
|
{% if not loop.last %}<hr />{% endif %}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
</ul>
|
|
||||||
|
<div class="pagination">
|
||||||
|
<a href="">Go to blog</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
@ -1,9 +1,14 @@
|
|||||||
{% extends "base.html" %}
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{{ page.title }} - {{ config.title }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
{% block content %}
|
{% block content %}
|
||||||
|
|
||||||
<h1>{{ page.title }}</h1>
|
<div class="typography">
|
||||||
|
<h1>{{ page.title }}</h1>
|
||||||
{{ page.content | safe }}
|
{{ page.content | safe }}
|
||||||
|
</div>
|
||||||
|
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
21
templates/tags/list.html
Normal file
21
templates/tags/list.html
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
Tags - {{ config.title }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="article-header">
|
||||||
|
<h1>Tags</h1>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="typography">
|
||||||
|
<ul>
|
||||||
|
{% for term in terms %}
|
||||||
|
<li><a href="{{ term.permalink | safe }}">{{ term.name }}</a> ({{ term.page_count }})</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
20
templates/tags/single.html
Normal file
20
templates/tags/single.html
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{% extends "base.html" %}
|
||||||
|
|
||||||
|
{% block title %}
|
||||||
|
{{ term.name }} - {{ config.title }}
|
||||||
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block content %}
|
||||||
|
|
||||||
|
<div class="article-header">
|
||||||
|
<h1>{{ term.name }}</h1>
|
||||||
|
</div>
|
||||||
|
<div class="typography">
|
||||||
|
<ul>
|
||||||
|
{% for page in term.pages %}
|
||||||
|
<li><a href="{{ page.permalink | safe }}">{{ page.title }}</a> - {{ page.date | date(format="%B %-d, %Y") }}</li>
|
||||||
|
{% endfor %}
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
{% endblock %}
|
@ -1,7 +0,0 @@
|
|||||||
{% extends "base.html" %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<h1>{{ taxonomy.name }}: multiple</h1>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
@ -1,13 +0,0 @@
|
|||||||
{% extends "base.html" %}
|
|
||||||
|
|
||||||
{% block content %}
|
|
||||||
|
|
||||||
<h1>{{ taxonomy.name }}: {{ term.name }}</h1>
|
|
||||||
|
|
||||||
<ul>
|
|
||||||
{% for page in term.pages %}
|
|
||||||
<li><a href="{{ page.permalink | safe }}">{{ page.title }}</a> - {{ page.date | date(format="%B %-d, %Y") }}</li>
|
|
||||||
{% endfor %}
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
{% endblock %}
|
|
Reference in New Issue
Block a user