48 lines
1.5 KiB
Text
48 lines
1.5 KiB
Text
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}")
|
|
|
|
return (=>@)
|
|
* article
|
|
* slots.title
|
|
* 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'
|
|
* post.body
|