remove old svelte web source
This commit is contained in:
15
templates/admin.html
Normal file
15
templates/admin.html
Normal file
@ -0,0 +1,15 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<meta name="robots" content="noindex" />
|
||||
<link rel="icon" type="image/svg+xml" href="/m-logo.svg" />
|
||||
<link rel="icon" type="image/png" href="/m-logo-192.png" />
|
||||
<title>Content Manager</title>
|
||||
</head>
|
||||
<body>
|
||||
<!-- Include the script that builds the page and powers Decap CMS -->
|
||||
<script src="https://unpkg.com/decap-cms@^3.0.0/dist/decap-cms.js"></script>
|
||||
</body>
|
||||
</html>
|
35
templates/base.html
Normal file
35
templates/base.html
Normal file
@ -0,0 +1,35 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<title>{% block title %} {{title}} {% endblock %} @michalvankodev</title>
|
||||
<meta charset="utf-8" />
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0" />
|
||||
<meta name="theme-color" content="#333333" />
|
||||
|
||||
<meta name="description" content="Personal website of @michalvankodev" />
|
||||
<meta name="keywords" content="personal, blog, webdev, tech, programming" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
<link
|
||||
rel="alternate"
|
||||
type="application/rss+xml"
|
||||
title="RSS feed for latest posts"
|
||||
href="/feed.xml"
|
||||
/>
|
||||
|
||||
<!-- Tailwind output file -->
|
||||
<link rel="stylesheet" href="/styles/output.css" />
|
||||
|
||||
<link rel="manifest" href="/manifest.json" />
|
||||
|
||||
<link rel="icon" type="image/svg+xml" href="/images/m-logo.svg" />
|
||||
<link rel="icon" type="image/png" href="/images/m-logo-192.png" />
|
||||
</head>
|
||||
<body class="bg-blue-50">
|
||||
<div class="preload-assets" style="display: none">
|
||||
{% include "icons/sprite.svg" %}
|
||||
</div>
|
||||
{% include "site_header.html" %}
|
||||
{% block content %} Placeholder {% endblock %}
|
||||
{% include "site_footer.html" %}
|
||||
</body>
|
||||
</html>
|
27
templates/blog_post.html
Normal file
27
templates/blog_post.html
Normal file
@ -0,0 +1,27 @@
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}{{title}}{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<article class="mb-6">
|
||||
<header class="px-4 max-w-read mx-auto">
|
||||
<h1 class="text-3xl md:text-4xl lg:text-6xl lg:mt-20 text-blue-900 mb-3 font-bold">{{title}}</h1>
|
||||
<aside class="flex justify-between flex-row">
|
||||
{% include "post_tag_list.html" %}
|
||||
<section class="created-at m-1 text-right text-sm text-slate-600 md:text-lg">
|
||||
<span>Published on</span>
|
||||
<time datetime="{date}"> {{date|pretty_date}} </time>
|
||||
</section>
|
||||
</aside>
|
||||
</header>
|
||||
|
||||
<section class="article-body">
|
||||
{{body|escape("none")}}
|
||||
</section>
|
||||
</article>
|
||||
|
||||
<!-- TODO: Next recommendations for reading -->
|
||||
<!-- TODO: Bact to all posts -->
|
||||
|
||||
{# footer #}
|
||||
{% endblock %}
|
59
templates/blog_post_list.html
Normal file
59
templates/blog_post_list.html
Normal file
@ -0,0 +1,59 @@
|
||||
{%- import "components/social_card.html" as sc -%}
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
|
||||
<section id="blog-container" class="lg:grid lg:grid-cols-[2fr_1fr] lg:grid-rows-[min-content_1fr] lg:gap-x-32 max-w-maxindex mx-auto">
|
||||
<section id="blog-list" class="lg:row-span-2">
|
||||
{% if posts.len() == 0 %}
|
||||
<p class="no-posts">You've found void in the space.</p>
|
||||
{% else %}
|
||||
<h1 class="m-5 text-4xl text-blue-950 font-extrabold md:text-6xl">
|
||||
{% if let Some(t) = tag %}
|
||||
#{{t}}
|
||||
{% else %}
|
||||
Blog posts
|
||||
{% endif %}
|
||||
</h1>
|
||||
|
||||
<section id="blog-tags">
|
||||
<ul class="mx-5">
|
||||
{% for tag in blog_tags %}
|
||||
<li class="inline-block mx-0.5 p-0.5 md:text-xl">
|
||||
<a href="/blog/tags/{{tag}}" class="text-pink-950">#{{tag|capitalize}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
<hr class="border-slate-300 m-5 md:my-8">
|
||||
|
||||
<ul class="mx-5">
|
||||
{% for post in posts %}
|
||||
<li>
|
||||
{% include "components/blog_post_preview.html" %}
|
||||
<hr class="border-slate-300 my-5 md:my-8">
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</section> <!-- /#blog-list -->
|
||||
<section id="socials" class="hidden lg:block">
|
||||
{% include "sections/social.html" %}
|
||||
</section> <!-- /#socials -->
|
||||
|
||||
<section id="showcase" class="hidden lg:block">
|
||||
<h2 class="text-blue-950 font-bold text-2xl m-5 md:text-4xl"><a href="/showcase" class="text-blue-950 no-underline">Showcase</a></h2>
|
||||
|
||||
<ul class="mx-6">
|
||||
{% for project in featured_projects %}
|
||||
<li class="my-4">
|
||||
{% include "components/project_preview_card.html" %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<section class="text-center my-3 md:text-lg">
|
||||
<a href="/showcase">check out more projects</a>
|
||||
</section>
|
||||
</section> <!-- /#showcase -->
|
||||
</section> <!-- /#blog-container -->
|
||||
{% endblock %}
|
3
templates/components/blog_post_default_thumbnail.html
Normal file
3
templates/components/blog_post_default_thumbnail.html
Normal file
@ -0,0 +1,3 @@
|
||||
<div class="w-[180px] h-[240px] bg-blue-100 flex justify-center items-center">
|
||||
<span class="text-blue-500 text-8xl -translate-y-1.5">{{post.metadata.title|fmt("{:.1}")|lower}}</span>
|
||||
</div>
|
30
templates/components/blog_post_preview.html
Normal file
30
templates/components/blog_post_preview.html
Normal file
@ -0,0 +1,30 @@
|
||||
<article class="sm:grid sm:grid-cols-[max-content_1fr] sm:grid-rows-[max-content_1fr_max-content] sm:grid-flow-col sm:gap-4 md:gap-x-8 break-inside-avoid clear-both sm:clear-none">
|
||||
<aside class="row-span-3 self-center float-start sm:float-none mr-3 mb-3 sm:ml-0 sm:mb-0">
|
||||
{% match post.metadata.thumbnail %}
|
||||
{% when Some with (orig_path) %}
|
||||
{{ crate::picture_generator::picture_markup_generator::generate_picture_markup(orig_path, 180, 240, "Article thumbnail", None, true).unwrap_or("thumbnail not found".to_string())|safe }}
|
||||
{% when None %}
|
||||
<div>
|
||||
{% include "components/blog_post_default_thumbnail.html" %}
|
||||
</div>
|
||||
{% endmatch %}
|
||||
</aside>
|
||||
<header>
|
||||
<h3 class="text-lg font-bold mb-1 md:text-3xl">
|
||||
<a rel="prefetch" href="/blog/{{post.slug}}" class="text-blue-950 visited:text-purple-700 no-underline">{{post.metadata.title}}</a>
|
||||
</h3>
|
||||
</header>
|
||||
<section class="text-base leading-5 text-slate-800 md:text-xl text-justify">{{post.body|description_filter|safe}}</section>
|
||||
<footer class="text-sm md:text-base lg:text-lg mt-3 sm:mt-0 clear-both sm:clear-none">
|
||||
<ul class="inline-block">
|
||||
{% for tag in post.metadata.tags %}
|
||||
<li class="inline-block">
|
||||
<a href="/blog/tags/{{tag}}" class="text-pink-950 no-underline">#{{tag|capitalize}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
||||
<time datetime="{{post.metadata.date}}" class="text-pink-950"> {{post.metadata.date|pretty_date}} </time>
|
||||
</footer>
|
||||
</article>
|
||||
|
49
templates/components/project_preview_card.html
Normal file
49
templates/components/project_preview_card.html
Normal file
@ -0,0 +1,49 @@
|
||||
<section class="border rounded-md bg-white p-4 break-inside-avoid">
|
||||
<header class="px-4 mb-3">
|
||||
<h2 class="text-xl font-semibold text-blue-900 md:text-2xl">
|
||||
{% match project.metadata.link %}
|
||||
{% when Some with (href) %}
|
||||
<a href="{{href}}" class="text-blue-900 no-underline">
|
||||
{{project.metadata.title}}
|
||||
</a>
|
||||
{% when None %}
|
||||
{{project.metadata.title}}
|
||||
{% endmatch %}
|
||||
</h2>
|
||||
<section class="description text-slate-800 my-2 md:text-xl text-justify">
|
||||
{{project.body|safe}}
|
||||
</section>
|
||||
</header>
|
||||
<!-- <hr class="border-blue-950 my-5"> -->
|
||||
|
||||
{% match project.metadata.cover_image %}
|
||||
{% when Some with (source) %}
|
||||
{% let picture = crate::picture_generator::picture_markup_generator::generate_picture_markup(source, 420, 236, "Project cover", Some("max-h-[236px]"), true).unwrap_or("cover not found".to_string()) %}
|
||||
<figure class="mx-4 my-2 flex justify-center">
|
||||
{% match project.metadata.link %}
|
||||
{% when Some with (href) %}
|
||||
<a href="{{href}}">
|
||||
{{picture|safe}}
|
||||
</a>
|
||||
{% when None %}
|
||||
{{picture|safe}}
|
||||
{% endmatch %}
|
||||
<!-- TODO <figure> generate_image -->
|
||||
</figure>
|
||||
{% when None %}
|
||||
{% endmatch %}
|
||||
|
||||
|
||||
<footer class="text-sm px-4 md:text-base">
|
||||
<h3 class="text-xl font-semibold text-blue-900 my-2 md:text-2xl">
|
||||
{{crate::projects::project_model::translate_classification(project.metadata.classification)}}
|
||||
</h3>
|
||||
<ul class="inline-block">
|
||||
{% for tag in project.metadata.tags %}
|
||||
<li class="inline-block text-pink-950">
|
||||
{{tag}}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</footer>
|
||||
</section>
|
14
templates/components/social_card.html
Normal file
14
templates/components/social_card.html
Normal file
@ -0,0 +1,14 @@
|
||||
{% macro social_card_start(svg, url, heading, img, class) %}
|
||||
|
||||
<a href="{{url}}" class="block no-underline border rounded-md bg-pink-200 m-4 p-4 max-w-[392px] {{class}}">
|
||||
<header class="flex text-center justify-center items-center gap-2 mb-2">
|
||||
<svg aria-hidden="true" class="h-7 w-7 fill-blue-950">
|
||||
<use href="#{{svg}}" />
|
||||
</svg>
|
||||
<h3 class="text-lg font-medium mb-1 text-blue-950 visited:text-blue-950">{{heading|safe}}</h3>
|
||||
</header>
|
||||
{% let alt_text = format!("{svg} thumbnail") %}
|
||||
|
||||
{{ crate::picture_generator::picture_markup_generator::generate_picture_markup(img, 360, 128, alt_text, Some("h-auto mx-auto rounded-sm"), true).unwrap_or("thumbnail not found".to_string())|safe }}
|
||||
</a>
|
||||
{% endmacro %}
|
18
templates/components/talent_card.html
Normal file
18
templates/components/talent_card.html
Normal file
@ -0,0 +1,18 @@
|
||||
{% macro talent_card(svg, heading, description) %}
|
||||
|
||||
<section class="flex border rounded bg-white m-4 p-3 max-w-[32rem]">
|
||||
<aside class="flex justify-center items-center pr-3">
|
||||
<svg aria-hidden="true" class="fill-blue-950 h-12 w-12 md:h-16 md:w-16">
|
||||
<use href="#{{svg}}" />
|
||||
</svg>
|
||||
</aside>
|
||||
<section>
|
||||
<header>
|
||||
<h3 class="text-lg font-medium mb-1 md:text-2xl">{{heading}}</h3>
|
||||
</header>
|
||||
<p class="text-sm leading-5 text-slate-800 md:text-lg">{{description|safe}}</p>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
{% endmacro %}
|
||||
|
32
templates/components/terminal.svg
Normal file
32
templates/components/terminal.svg
Normal file
@ -0,0 +1,32 @@
|
||||
<svg
|
||||
width="200"
|
||||
height="150"
|
||||
viewBox="0 0 200 150"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
fill="none"
|
||||
stroke="none"
|
||||
stroke-width="0"
|
||||
>
|
||||
<!-- Background of the terminal window -->
|
||||
<rect x="10" y="10" width="180" height="130" rx="8" ry="8" fill="#F5F5F5" />
|
||||
|
||||
<!-- Close, Minimize, Maximize buttons (moved to the right side) -->
|
||||
<circle cx="155" cy="25" r="5" fill="#FF5F56" />
|
||||
<circle cx="175" cy="25" r="5" fill="#FFBD2E" />
|
||||
<circle cx="195" cy="25" r="5" fill="#27C93F" />
|
||||
|
||||
<!-- Terminal Text (Example commands, updated to dark color for light theme) -->
|
||||
<text x="20" y="55" font-family="monospace" font-size="12" fill="#333333">
|
||||
$ ls -l
|
||||
</text>
|
||||
<text x="20" y="75" font-family="monospace" font-size="12" fill="#333333">
|
||||
Desktop Documents Downloads
|
||||
</text>
|
||||
<text x="20" y="95" font-family="monospace" font-size="12" fill="#333333">
|
||||
Music Pictures Videos
|
||||
</text>
|
||||
<text x="20" y="115" font-family="monospace" font-size="12" fill="#333333">
|
||||
$
|
||||
</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1012 B |
27
templates/contact.html
Normal file
27
templates/contact.html
Normal file
@ -0,0 +1,27 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
|
||||
<section id="contact-page">
|
||||
<h1 class="mx-6 mt-3 text-4xl text-blue-950 font-extrabold lg:mx-auto max-w-read">
|
||||
Contact
|
||||
</h1>
|
||||
|
||||
<ul class="mx-6">
|
||||
{% for link in links %}
|
||||
<li class="my-2 sm:my-4 lg:my-6 max-w-[32rem] mx-auto">
|
||||
<a
|
||||
class="flex border-2 place-content-center items-center rounded-full text-blue-900 border-blue-500 py-2 sm:py-4 hover:bg-pink-200 fill-blue-900 hover:fill-blue-400 transition-colors no-underline"
|
||||
href="{{link.href}}"
|
||||
title="{{link.title}}"
|
||||
>
|
||||
<svg aria-hidden="true" class="h-6 w-6 mx-2 self-start">
|
||||
<use xlink:href="/svg/icons-sprite.svg#{{link.svg}}" />
|
||||
</svg>
|
||||
<span class="text-lg font-semibold">{{link.label}}</span>
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
||||
|
||||
{% endblock %}
|
19
templates/icons/sprite.svg
Normal file
19
templates/icons/sprite.svg
Normal file
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 12 KiB |
81
templates/index.html
Normal file
81
templates/index.html
Normal file
@ -0,0 +1,81 @@
|
||||
{%- import "components/talent_card.html" as tc -%}
|
||||
{%- import "components/social_card.html" as sc -%}
|
||||
{% extends "base.html" %}
|
||||
|
||||
{% block title %}Introduction{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<section class="index-container lg:grid lg:grid-cols-2 xl:grid-cols-[1fr_2fr] lg:gap-y-8 lg:gap-x-32 max-w-maxindex mx-auto">
|
||||
<section id="about-me">
|
||||
<!-- <header class="index-header hidden"> -->
|
||||
<!-- <figure class="profile-pic"> -->
|
||||
<!-- <picture> -->
|
||||
<!-- <img -->
|
||||
<!-- alt="Portrait" -->
|
||||
<!-- {# TODO Take a new photo #} -->
|
||||
<!-- src="/images/profile-portugal-landscape.jpg" -->
|
||||
<!-- /> -->
|
||||
<!-- </picture> -->
|
||||
<!-- </figure> -->
|
||||
|
||||
<!-- <p class="motto"> -->
|
||||
<!-- <cite>“Let your ambition carry you.”</cite> -->
|
||||
<!-- <span class="cite-owner">- La Flame</span> -->
|
||||
<!-- </p> -->
|
||||
<!-- </header> -->
|
||||
|
||||
<h2 class="text-blue-950 font-bold text-2xl m-5 md:text-4xl">About me</h2>
|
||||
|
||||
<p class="mx-5 md:text-xl text-justify">
|
||||
Welcome to my personal website. My name is
|
||||
<strong>Michal Vanko</strong>
|
||||
and I'm a
|
||||
<em> <a href="https://en.wikipedia.org/wiki/Programmer">programmer</a> </em>
|
||||
. I am developing software for more than half of my life and <strong>I love it!</strong> Sometimes I stream working on my side projects and building a <a href="https://discord.gg/2cGg7kwZEh">community of like minded people</a>. Here you can find blogs of my thoughts and journeys, as well as links to my socials where you can see other content.</p>
|
||||
|
||||
<section id="talent-cards" class="flex flex-col items-center">
|
||||
{% call tc::talent_card("code", "Web development", "Extensive expertise in creating performant, live web applications and websites") %}
|
||||
{% call tc::talent_card("gamepad", "Game development", "Extensive expertise in creating performant, live web applications and websites") %}
|
||||
{% call tc::talent_card("person-chalkboard", "Mentoring & Consulting", "I offer consulting sessions to assist you in developing <strong>higher-quality software</strong> and share insights from crafting robust, professional web applications. <a href=\"https://calendly.com/michalvankosk/30min\">Schedule a session with me</a> and elevate your projects together.") %}
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id="blog" class="lg:col-span-2 lg:row-start-2 xl:col-auto xl:row-start-auto xl:row-span-2">
|
||||
<h2 class="text-blue-950 font-bold text-2xl md:text-4xl m-5"><a href="/blog" class="text-blue-950 no-underline">Blog</a></h2>
|
||||
<section id="blog-tags">
|
||||
<ul class="mx-5">
|
||||
{% for tag in blog_tags %}
|
||||
<li class="inline-block mx-0.5 p-0.5 md:text-xl">
|
||||
<a href="/blog/tags/{{tag}}" class="text-pink-950">#{{tag|capitalize}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</section>
|
||||
<hr class="border-slate-300 m-5">
|
||||
|
||||
<ul class="mx-5">
|
||||
{% for post in featured_blog_posts %}
|
||||
<li>
|
||||
{% include "components/blog_post_preview.html" %}
|
||||
<hr class="border-slate-300 my-5 md:my-8">
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<section class="text-center my-3 md:text-lg">
|
||||
<a href="/blog">see all blog posts</a>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
<section id="socials">
|
||||
{% include "sections/social.html" %}
|
||||
</section>
|
||||
|
||||
<hr class="border-slate-300 m-5 lg:hidden">
|
||||
|
||||
<section id="showcase" class="col-span-2">
|
||||
{% include "sections/showcase.html" %}
|
||||
</section>
|
||||
</section> <!-- /.index-container -->
|
||||
|
||||
|
||||
{% endblock %}
|
11
templates/post_tag_list.html
Normal file
11
templates/post_tag_list.html
Normal file
@ -0,0 +1,11 @@
|
||||
<section class="article-tags text-base">
|
||||
{% if tags.len() > 0 %}
|
||||
<ul class="inline">
|
||||
{% for tag in tags %}
|
||||
<li class="inline italic text-blue-700 md:text-lg">
|
||||
<a href="/blog/tags/{{tag}}">#{{tag}}</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</section>
|
24
templates/project_list.html
Normal file
24
templates/project_list.html
Normal file
@ -0,0 +1,24 @@
|
||||
{% extends "base.html" %}
|
||||
{% block content %}
|
||||
|
||||
<section id="project-list-container" class="max-w-maxindex mx-auto">
|
||||
<section id="project-list">
|
||||
{% if project_list.len() == 0 %}
|
||||
<p class="no-posts">You've found void in the space.</p>
|
||||
{% else %}
|
||||
<h1 class="m-5 text-4xl text-blue-950 font-extrabold md:text-6xl">
|
||||
Showcase
|
||||
</h1>
|
||||
|
||||
<ul class="m-6 grid grid-flow-row gap-6 md:grid-cols-2 md:grid-rows-[masonry] md:justify-stretch md:items-stretch xl:grid-cols-3">
|
||||
{% for project in project_list %}
|
||||
<li>
|
||||
{% include "components/project_preview_card.html" %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
{% endif %}
|
||||
</section> <!-- /#project-list -->
|
||||
|
||||
</section> <!-- /#project-list-container -->
|
||||
{% endblock %}
|
13
templates/sections/showcase.html
Normal file
13
templates/sections/showcase.html
Normal file
@ -0,0 +1,13 @@
|
||||
<h2 class="text-blue-950 font-bold text-2xl m-5 md:text-4xl"><a href="/showcase" class="text-blue-950 no-underline">Showcase</a></h2>
|
||||
|
||||
<ul class="mx-6 grid grid-flow-row gap-6 md:grid-cols-2 md:grid-rows-[masonry] md:justify-stretch md:items-stretch xl:grid-cols-3">
|
||||
{% for project in featured_projects %}
|
||||
<li>
|
||||
{% include "components/project_preview_card.html" %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<section class="text-center my-3 md:text-lg">
|
||||
<a href="/showcase">check out more projects</a>
|
||||
</section>
|
14
templates/sections/social.html
Normal file
14
templates/sections/social.html
Normal file
@ -0,0 +1,14 @@
|
||||
<h2 class="text-blue-950 font-bold text-2xl m-5 md:text-4xl">Socials</h2>
|
||||
|
||||
<section class="grid grid-flow-row justify-center">
|
||||
{% call sc::social_card_start("twitch", "https://twitch.tv/michalvankodev", "I stream (almost) regularly on <em>twitch.tv</em>", "images/social/twitch_wo.png", "social-card-twitch") %}
|
||||
|
||||
{% call sc::social_card_start("tiktok", "https://www.tiktok.com/@michalvankodev","Highlights can be found on <em>TikTok</em>", "images/social/tiktok_wo.png", "social-card-tiktok") %}
|
||||
|
||||
{% call sc::social_card_start("youtube", "https://www.youtube.com/@michalvankodev", "Videos and vlogs posted on <em>YouTube</em>", "images/social/youtube_wo.png", "social-card-youtube") %}
|
||||
|
||||
<div class="lg:hidden xl:block">
|
||||
{% call sc::social_card_start("instagram", "https://www.instagram.com/michalvankodev/", "Photos and stories shared on <em>Instagram</em>", "images/social/instagram_plain.png", "social-card-instagram") %}
|
||||
</div>
|
||||
|
||||
</section>
|
52
templates/site_footer.html
Normal file
52
templates/site_footer.html
Normal file
@ -0,0 +1,52 @@
|
||||
<footer class="my-4">
|
||||
<hr class="mb-4 border-slate-300 mx-5">
|
||||
<p
|
||||
class="text-center"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:dct="http://purl.org/dc/terms/"
|
||||
>
|
||||
<a
|
||||
property="dct:title"
|
||||
rel="cc:attributionURL"
|
||||
href="https://michalvanko.dev/"
|
||||
>michalvanko.dev</a
|
||||
>
|
||||
by
|
||||
<a
|
||||
rel="cc:attributionURL dct:creator"
|
||||
property="cc:attributionName"
|
||||
href="/contact"
|
||||
>Michal Vanko</a
|
||||
>
|
||||
is licensed under
|
||||
<a
|
||||
href="http://creativecommons.org/licenses/by-nc-nd/4.0/?ref=chooser-v1"
|
||||
target="_blank"
|
||||
rel="license noopener noreferrer"
|
||||
style="display: inline-block"
|
||||
>CC BY-NC-ND 4.0<img
|
||||
src="https://mirrors.creativecommons.org/presskit/icons/cc.svg?ref=chooser-v1"
|
||||
alt="cc"
|
||||
class="inline-block h-6 mx-0.5"
|
||||
height="24"
|
||||
width="24" /><img
|
||||
src="https://mirrors.creativecommons.org/presskit/icons/by.svg?ref=chooser-v1"
|
||||
alt="by"
|
||||
class="inline-block h-6 mx-0.5"
|
||||
height="24"
|
||||
width="24" /><img
|
||||
src="https://mirrors.creativecommons.org/presskit/icons/nc.svg?ref=chooser-v1"
|
||||
alt="nc"
|
||||
class="inline-block h-6 mx-0.5"
|
||||
height="24"
|
||||
width="24" /><img
|
||||
src="https://mirrors.creativecommons.org/presskit/icons/nd.svg?ref=chooser-v1"
|
||||
alt="nd"
|
||||
class="inline-block h-6 mx-0.5"
|
||||
height="24"
|
||||
width="24"
|
||||
/></a>
|
||||
<!-- TODO Display link to feed with icon -->
|
||||
<a href="/feed.xml" class="hidden">RSS feed</a>
|
||||
</p>
|
||||
</footer>
|
20
templates/site_header.html
Normal file
20
templates/site_header.html
Normal file
@ -0,0 +1,20 @@
|
||||
<header class="min-h-full bg-blue-50 mb-5">
|
||||
<nav class="flex">
|
||||
{% match header_props.back_link %}
|
||||
{% when Some with (link) %}
|
||||
<a
|
||||
class="px-3 py-2 text-lg font-medium print:hidden"
|
||||
href="{{link.href}}"
|
||||
>
|
||||
{{link.label}}
|
||||
</a>
|
||||
{% when None %}
|
||||
{% endmatch %}
|
||||
<aside class="flex logo-section flex-grow justify-end content-end">
|
||||
<a class="logo p-3 text-base" href="/">
|
||||
@michalvankodev
|
||||
</a>
|
||||
</aside>
|
||||
</nav>
|
||||
<hr class="border-slate-300 mx-5">
|
||||
</header>
|
Reference in New Issue
Block a user