blog/templates/post.html.skooma.yue
2023-08-30 13:56:18 +02:00

72 lines
2.2 KiB
Text

rgbstr = require 'rgbstr'
import output from require 'params'
slots, post = select 1, ...
url = (path) -> "/"..output..path
slots.head title post.head.title
-- Generic shenanigans
slots.head
* meta name: "author", content: "Talia"
-- Search shenanigans
slots.head
* meta property: "article:published_time", content: post.head.date
* meta property: "article:author", content: "https://tech.lgbt/@darkwiiplayer"
-- OpenGraph shenanigans
slots.head
* meta property: "og:title", content: post.head.title
* meta property: "og:site_name", content: "Talia's Blog"
* meta property: "og:description", content: post.head.description
* meta property: "og:type", content: "article"
* meta property: "og:article:author", content: "Talia"
* [ meta property: "og:article:tag", content: tag for tag in *post.head.tags ]
positions = (input, character) ->
((last) => @find(character, last+1, true)), input, 1
breadcrumb = (href) -> li a :href, href\match('[^/]+$')
if src = post.head.cover_image
slots.top pageHero cover: 60
* img :src, style: 'opacity: .4'
* h1(post.head.title, style: "view-transition-name: #{post.head.slug}")
slots.head
* meta property: "og:image", content: src
else
slots.title h1(post.head.title, style: "view-transition-name: #{post.head.slug}")
slots.banner aside class: { 'box' }
* b "Hey there!"
* p raw [[
This blog doesn't use any tracking. When you open this page, I don't see
a number going up anywhere, so if you like this post, please consider
letting me know on <a href="https://tech.lgbt/@darkwiiplayer">the fediverse</a>!
This is also the best way of giving any other feedback on my blog posts.
]]
* p i "Thank you."
tag = (name) ->
colour = { rgbstr.bytes name, 16, .6 }
a name, href: "/?tag=#{name}", style: "--color: rgb(#{table.concat(colour, ', ')})"
tags ==>
if @tags
return
* flexRow [tag name for name in *@tags], gap: 1, style: 'justify-content: flex-start'
* verticalSpacer
return (=>@)
* article
* slots.title
* tags(post.head)
* nav { class: "breadcrumbs" }
* ul
* li a "Blog", href: url "/"
* [ breadcrumb post.head.uri\sub(1, number-1) for number in positions(post.head.uri, "/") ]
* li post.head.title, class: 'active'
* verticalSpacer
* slots.banner
* raw post.body