Refactor app in to its own slice
This commit is contained in:
@@ -1,23 +0,0 @@
|
||||
- context.content_for(:title, "")
|
||||
- context.content_for(:highlight_code, false)
|
||||
|
||||
article class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200 prose-em:font-bold prose-em:not-italic prose-em:bg-blue-600 prose-em:px-1 prose-em:rounded prose-a:text-blue-600 prose-a:dark:text-indigo-300 prose-a:p-0.5 prose-a:rounded-sm prose-a:no-underline hover:prose-a:underline prose-em:text-blue-100"
|
||||
|
||||
h1 Hello world
|
||||
/ # PatternMate
|
||||
/
|
||||
/ ## Features
|
||||
/
|
||||
/ ### Accessibility
|
||||
/
|
||||
/ ### Paid features
|
||||
/
|
||||
/ ## Who is this app for?
|
||||
/
|
||||
/ ## Why did I build it?
|
||||
/
|
||||
/ ## Pricing
|
||||
/
|
||||
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,11 +0,0 @@
|
||||
- context.content_for(:title, "Blogroll | ")
|
||||
div class="mb-4 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 Blogroll
|
||||
|
||||
div class="h-feed mb-12 max-w-prose mx-auto prose dark:prose-invert"
|
||||
p Here's the list of all the sites & blogs I enjoy reading, taken directly from my RSS aggregator!
|
||||
p
|
||||
a href="/blogroll/opml" Get the OPML
|
||||
div class="grow" hx-get="/blogroll/list" hx-trigger="load"
|
||||
|
||||
|
@@ -1,13 +0,0 @@
|
||||
- blogroll.each do |blog|
|
||||
div class="flex mb-4"
|
||||
img loading="lazy" class="w-8 h-8 rounded mx-0 my-0 mr-4" src=blog[:icon]
|
||||
div
|
||||
div
|
||||
= "#{blog[:title]} — ("
|
||||
a href=blog[:url] RSS
|
||||
= " | "
|
||||
a href=blog[:html_url] Website
|
||||
= ")"
|
||||
div
|
||||
small Categories:
|
||||
small = " #{blog[:categories].join(",")}"
|
@@ -1,16 +0,0 @@
|
||||
# xml.instruct! "xml-stylesheet", {href: "/assets/style.xslt", type: "text/xsl"}
|
||||
xml.opml("xmlns:frss" => "https://freshrss.org/opml", version: "2.0") do
|
||||
xml.head do |head|
|
||||
head.title "Daniel Nitsikopoulos's RSS subscriptions"
|
||||
head.link "https://dnitza.com/blogroll/opml"
|
||||
head.lastBuildDate Time.now.rfc2822
|
||||
head.pubDate Time.now.rfc2822
|
||||
head.ttl 1800
|
||||
end
|
||||
|
||||
xml.body do
|
||||
blogroll.each do |blog|
|
||||
xml.outline(text: blog[:title], type: "rss", xmlUrl: blog[:url], htmlUrl: blog[:html_url])
|
||||
end
|
||||
end
|
||||
end
|
@@ -1,22 +0,0 @@
|
||||
- context.content_for(:title, "Bookmarks | ")
|
||||
|
||||
div class="flex justify-between prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
div
|
||||
h1 Bookmarks
|
||||
|
||||
div class="h-feed mb-12 max-w-prose mx-auto"
|
||||
form action="/bookmarks" method="GET"
|
||||
div class="flex"
|
||||
div class="flex-auto basis-auto mr-4"
|
||||
input id="search" type="text" class="p-1 rounded w-full bg-indigo-50 dark:bg-indigo-400" name="q" value=q
|
||||
div class="mr-4"
|
||||
input type="submit" class="bg-indigo-300 p-1 rounded text-indigo-900" value="Search"
|
||||
-if q
|
||||
div class=""
|
||||
a href="/bookmarks" class="text-gray-400 dark:text-gray-100 pt-1" Clear search
|
||||
|
||||
div class="mb-12 max-w-prose mx-auto"
|
||||
- bookmarks.each do |bookmark|
|
||||
== render "shared/bookmark", bookmark: bookmark
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,7 +0,0 @@
|
||||
- if image
|
||||
div class="col-span-1"
|
||||
img class="rounded h-16" src=image
|
||||
|
||||
div class="#{image ? 'col-span-4' : 'col-span-5'}"
|
||||
h6= title
|
||||
small= description
|
@@ -1,45 +0,0 @@
|
||||
- context.content_for(:title, "Bookmark | ")
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 = bookmark.name
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200" x-data="{ open: false }"
|
||||
a class="text-blue-600 dark:text-amber-500 no-underline hover:underline" href=bookmark.url
|
||||
p class="text-xl text-ellipsis overflow-hidden"
|
||||
= bookmark.url
|
||||
|
||||
div class="mb-6"
|
||||
== bookmark.youtube_embed
|
||||
|
||||
== bookmark.content
|
||||
|
||||
- unless bookmark.cached_content.nil?
|
||||
button class="hover:text-gray-400" @click="open = ! open" Toggle cached version
|
||||
|
||||
span x-show="open"
|
||||
div class="mt-4 rounded bg-blue-50 dark:bg-blue-900 px-4 py-2"
|
||||
== bookmark.cached_content
|
||||
|
||||
div class="prose max-w-prose mx-auto text-gray-800 dark:text-gray-200 grid grid-cols-5 gap-2" hx-get="/bookmarks/metadata/#{bookmark.id}" hx-trigger="load"
|
||||
|
||||
div class="mb-8 max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
||||
|
||||
|
||||
div class="max-w-prose mx-auto text-gray-600 dark:text-gray-200 flex"
|
||||
div class=""
|
||||
= "Published "
|
||||
time class="dt-published" datetime=bookmark.machine_published_at
|
||||
= bookmark.display_published_at
|
||||
p
|
||||
span in
|
||||
a class="hover:underline" href="/bookmarks" bookmarks
|
||||
|
||||
span class="text-right flex-1"
|
||||
== render "shared/tags", tags: bookmark.tags
|
||||
|
||||
div class="mb-2 max-w-prose mx-auto text-gray-600 dark:text-gray-200 flex"
|
||||
- if bookmark.syndicated?
|
||||
span Also on:
|
||||
- bookmark.syndicated_to.each do |loc|
|
||||
a href=loc[:url]
|
||||
== "shared/#{render loc[:location]}"
|
@@ -1,44 +0,0 @@
|
||||
- context.content_for(:title, "Books | ")
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 📚 Bookshelf
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto"
|
||||
table class="text-gray-800 dark:text-white table-auto"
|
||||
thead
|
||||
tr
|
||||
td
|
||||
td class="p-2" Title
|
||||
td class="p-2" Author(s)
|
||||
- reading.each do |book|
|
||||
tr
|
||||
td
|
||||
div class="rounded-md uppercase text-xs #{book.status_colour} px-2 w-full text-center"
|
||||
= book.status_label
|
||||
td
|
||||
a href="/post/#{book.slug}"
|
||||
= book.name
|
||||
td
|
||||
= book.authors
|
||||
- to_read.each do |book|
|
||||
tr
|
||||
td
|
||||
div class="rounded-md uppercase text-xs #{book.status_colour} px-2 w-full text-center"
|
||||
= book.status_label
|
||||
td
|
||||
a href="/post/#{book.slug}"
|
||||
= book.name
|
||||
td
|
||||
= book.authors
|
||||
- read.each do |book|
|
||||
tr
|
||||
td
|
||||
div class="rounded-md uppercase text-xs #{book.status_colour} px-2 w-full text-center"
|
||||
= book.status_label
|
||||
td
|
||||
a href="/post/#{book.slug}"
|
||||
= book.name
|
||||
td
|
||||
= book.authors
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,35 +0,0 @@
|
||||
xml.instruct! "xml-stylesheet", {href: "/assets/style.xslt", type: "text/xsl"}
|
||||
|
||||
xml.channel do |channel|
|
||||
channel.title "Daniel Nitsikopoulos"
|
||||
channel.description "The personal blog of Daniel Nitsikopoulos, software engineer from Canberra, ACT"
|
||||
channel.link "https://dnitza.com"
|
||||
channel.name "dnitza.com"
|
||||
channel.lastBuildDate Time.now.rfc2822
|
||||
channel.pubDate Time.now.rfc2822
|
||||
channel.ttl 1800
|
||||
|
||||
channel.alternate_feed do |item|
|
||||
item.link "/feeds/rss"
|
||||
item.title "Main feed (this feed)"
|
||||
item.description "Containing longer text posts and bookmarks"
|
||||
end
|
||||
|
||||
channel.alternate_feed do |item|
|
||||
item.link "/feeds/statuses_rss"
|
||||
item.title "Statuses / Microblog"
|
||||
item.description "Only shorter posts and photo posts, usually also appearing on Mastodon"
|
||||
end
|
||||
|
||||
posts.each do |post|
|
||||
channel.item do |item|
|
||||
item.title post.display_title
|
||||
item.description do |desc|
|
||||
desc.cdata! post.feed_content
|
||||
end
|
||||
item.link(post.permalink)
|
||||
item.guid(post.slug, isPermaLink: true)
|
||||
item.pubDate post.machine_published_at
|
||||
end
|
||||
end
|
||||
end
|
@@ -1,35 +0,0 @@
|
||||
xml.instruct! "xml-stylesheet", {href: "/assets/style.xslt", type: "text/xsl"}
|
||||
|
||||
xml.channel do |channel|
|
||||
channel.title "Daniel Nitsikopoulos"
|
||||
channel.description "The personal blog of Daniel Nitsikopoulos, software engineer from Canberra, ACT"
|
||||
channel.link "https://dnitza.com"
|
||||
channel.name "dnitza.com"
|
||||
channel.lastBuildDate Time.now.rfc2822
|
||||
channel.pubDate Time.now.rfc2822
|
||||
channel.ttl 1800
|
||||
|
||||
channel.alternate_feed do |item|
|
||||
item.link "/feeds/rss"
|
||||
item.title "Main feed"
|
||||
item.description "Containing longer text posts and bookmarks"
|
||||
end
|
||||
|
||||
channel.alternate_feed do |item|
|
||||
item.link "/feeds/statuses_rss"
|
||||
item.title "Statuses / Microblog (this feed)"
|
||||
item.description "Only shorter posts and photo posts, usually also appearing on Mastodon"
|
||||
end
|
||||
|
||||
posts.each do |post|
|
||||
channel.item do |item|
|
||||
item.title post.raw_content
|
||||
item.description do |desc|
|
||||
desc.cdata! post.feed_content
|
||||
end
|
||||
item.link(post.permalink)
|
||||
item.guid(post.slug, isPermaLink: true)
|
||||
item.pubDate post.machine_published_at
|
||||
end
|
||||
end
|
||||
end
|
@@ -1,78 +0,0 @@
|
||||
doctype html
|
||||
html x-data="{darkMode: $persist(false)}" :class="{'dark' : darkMode === true}"
|
||||
head
|
||||
meta charest="utf-8"
|
||||
|
||||
meta name="viewport" content="width=device-width, initial-scale=1.0"
|
||||
|
||||
meta name="theme-color" content="#2563eb" media="(prefers-color-scheme: light)"
|
||||
meta name="theme-color" content="#1e1b4b" media="(prefers-color-scheme: dark)"
|
||||
|
||||
title #{context.content_for(:title)} #{Hanami.app.settings.site_name}
|
||||
|
||||
link rel="authorization_endpoint" href=Hanami.app.settings.micropub_authorization_endpoint
|
||||
link rel="token_endpoint" href=Hanami.app.settings.micropub_token_endpoint
|
||||
link rel="micropub" href="#{URI.join(Hanami.app.settings.micropub_site_url, "micropub")}"
|
||||
|
||||
link rel="webmention" href=Hanami.app.settings.webmention_url
|
||||
link rel="pingback" href=Hanami.app.settings.pingback_url
|
||||
link rel="feed" type="text/html" href="#{Hanami.app.settings.micropub_site_url}/statuses"
|
||||
link rel="feed alternate" type="application/rss+xml" href="/feeds/rss"
|
||||
link rel="feed alternate" type="application/rss+xml" href="/feeds/statuses_rss"
|
||||
link rel="alternate" type="text/mf2+html" href="#{Hanami.app.settings.micropub_site_url}/statuses"
|
||||
|
||||
link rel="me" href=Hanami.app.settings.mastodon_url
|
||||
link rel="me" href=Hanami.app.settings.github_url
|
||||
link rel="me" href=Hanami.app.settings.fed_bridge_url
|
||||
|
||||
= stylesheet_tag "app"
|
||||
link rel="icon" type="image/x-icon" href="/assets/favicon.ico"
|
||||
|
||||
script data-domain="dnitza.com" src="https://stats.dnitza.com/js/script.js" defer=""
|
||||
|
||||
script src="https://unpkg.com/htmx.org@1.9.2/dist/htmx.min.js" integrity="sha384-L6OqL9pRWyyFU3+/bjdSri+iIphTN/bvYyM37tICVyOJkWZLpP2vGn6VUEXgzg6h" crossorigin="anonymous"
|
||||
script src="https://cdn.jsdelivr.net/npm/@alpinejs/persist@3.13.3/dist/cdn.min.js"
|
||||
= javascript_tag "app"
|
||||
script src="https://cdn.jsdelivr.net/npm/alpinejs@3.13.3/dist/cdn.min.js" defer=""
|
||||
|
||||
link rel="stylesheet" href="https://unpkg.com/@highlightjs/cdn-assets@11.8.0/styles/github-dark.min.css"
|
||||
script src="https://unpkg.com/@highlightjs/cdn-assets@11.8.0/highlight.min.js" defer=""
|
||||
|
||||
meta property="og:title" content="#{context.content_for(:title)}"
|
||||
meta property="og:type" content="website"
|
||||
meta property="og:url" content="#{context.content_for(:url)}"
|
||||
- if context.content_for(:image)
|
||||
meta property="og:image" content="#{context.content_for(:image)}"
|
||||
|
||||
- if Hanami.app.settings.micropub_pub_key
|
||||
link rel="pgpkey" href="/key"
|
||||
body class="transition-colors bg-white dark:bg-indigo-950 selection:bg-blue-100 selection:text-blue-900 dark:selection:bg-amber-600 dark:selection:text-amber-400" x-data="{ imgModal : false, imgModalSrc : '', imgModalDesc : '' }" x-on:keydown.escape="imgModal=false"
|
||||
main class="pb-8 px-4 pt-4 md:pt-8"
|
||||
header class="mb-12 max-w-screen-md mx-auto items-center md:items-justify"
|
||||
div class="flex mb-8 md:mb-12 text-lg md:text-xl text-gray-400 dark:text-gray-600 grid grid-cols-1 md:grid-cols-2"
|
||||
div class="flex-none mx-auto md:flex-auto md:mx-0"
|
||||
div class="h-card flex items-center"
|
||||
img class="u-photo w-6 h6 md:w-10 md:h-10 mr-1" alt="Memoji profile picture" src="/assets/memoji.png"
|
||||
a href="/" rel="me" class="u-url u-uid"
|
||||
h1 class="p-name text-sm md:text-sm text-gray-600 dark:text-gray-400" = Hanami.app.settings.site_name
|
||||
nav class="space-x-1 text-sm md:text-sm mx-auto md:flex-auto uppercase md:block mt-4 md:mt-3"
|
||||
- pages.each do |page|
|
||||
a class="transition-colors p-1 rounded text-gray-400 hover:bg-#{page.light_colour}-100 hover:text-#{page.light_colour}-400 dark:hover:bg-#{page.dark_colour}-800 #{context.current_path.start_with?("/#{page.slug}") ? "text-#{page.light_colour}-400 bg-#{page.light_colour}-50 dark:bg-#{page.dark_colour}-900 dark:text-#{page.dark_colour}-400" : 'text-gray-400'}" href="/#{page.slug}" #{page.name}
|
||||
span class="text-gray-400 dark:text-gray-600"
|
||||
= "/"
|
||||
a class="transition-colors p-1 rounded hover:bg-emerald-100 hover:text-emerald-400 dark:hover:bg-emerald-800 #{context.current_path.start_with?('/post') ? 'text-emerald-400 bg-emerald-50 dark:bg-emerald-900 dark:text-emerald-400' : 'text-gray-400'}" href="/posts" Writing
|
||||
span class="text-gray-400 dark:text-gray-600"
|
||||
= "/"
|
||||
a class="transition-colors p-1 rounded text-gray-400 hover:bg-orange-100 hover:text-orange-400 dark:hover:bg-orange-800" href="#{Hanami.app.settings.micropub_site_url}/feeds/rss" RSS
|
||||
span class="text-gray-400 dark:text-gray-600"
|
||||
= "/"
|
||||
button x-data="" @click="darkMode = ! darkMode"
|
||||
span class="opacity-80 hover:opacity-100 hidden dark:block" ☀️
|
||||
span class="opacity-80 hover:opacity-100 block dark:hidden" 🌝
|
||||
== yield
|
||||
div class="px-4 max-w-screen-md mx-auto pb-10"
|
||||
p class="float-left text-gray-200 dark:text-indigo-900" © 2010 - 2024 Daniel Nitsikopoulos. All rights reserved.
|
||||
p class="float-right text-gray-200 dark:text-gray-600"
|
||||
a href="https://xn--sr8hvo.ws/%F0%9F%8D%93%E2%9E%97%F0%9F%8E%B0/previous" ←
|
||||
a href="https://xn--sr8hvo.ws" 🕸💍
|
||||
a href="https://xn--sr8hvo.ws/%F0%9F%8D%93%E2%9E%97%F0%9F%8E%B0/next" →
|
@@ -1,2 +0,0 @@
|
||||
xml.instruct!
|
||||
xml << yield
|
@@ -1,34 +0,0 @@
|
||||
html
|
||||
head
|
||||
meta charest="utf-8"
|
||||
|
||||
meta name="viewport" content="width=device-width, initial-scale=1.0"
|
||||
|
||||
meta name="theme-color" content="rgb(37, 99, 235)"
|
||||
|
||||
title #{context.content_for(:title)} Daniel Nitsikopoulos
|
||||
|
||||
link rel="authorization_endpoint" href=Hanami.app.settings.micropub_authorization_endpoint
|
||||
link rel="token_endpoint" href=Hanami.app.settings.micropub_token_endpoint
|
||||
link rel="micropub" href="#{URI.join(Hanami.app.settings.micropub_site_url, "micropub")}"
|
||||
|
||||
link rel="webmention" href=Hanami.app.settings.webmention_url
|
||||
link rel="pingback" href=Hanami.app.settings.pingback_url
|
||||
link rel="feed" type="text/html" href="/posts"
|
||||
link rel="feed alternate" type="application/rss+xml" href="/feeds/rss"
|
||||
link rel="feed alternate" type="application/rss+xml" href="/feeds/statuses_rss"
|
||||
|
||||
link rel="me" href=Hanami.app.settings.mastodon_url
|
||||
link rel="me" href=Hanami.app.settings.github_url
|
||||
|
||||
= stylesheet_tag "app"
|
||||
link rel="icon" type="image/x-icon" href="/assets/favicon.ico"
|
||||
|
||||
script src='https://api.mapbox.com/mapbox-gl-js/v2.9.1/mapbox-gl.js'
|
||||
link href='https://api.mapbox.com/mapbox-gl-js/v2.9.1/mapbox-gl.css' rel='stylesheet'
|
||||
|
||||
script data-domain="dnitza.com" src="https://stats.dnitza.com/js/script.js" defer="true"
|
||||
= javascript_tag "app"
|
||||
|
||||
body class="bg-white dark:bg-black selection:bg-blue-100 selection:text-blue-900 dark:selection:bg-blue-600 dark:selection:text-blue-100"
|
||||
== yield
|
@@ -1,26 +0,0 @@
|
||||
div class="mb-12 max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 class="text-4xl font-extrabold" More
|
||||
|
||||
h2 class="text-xl" Explore posts
|
||||
|
||||
div class="grid grid-cols-2 gap-2 mb-6"
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/tags" 🔖 By tag
|
||||
/ a class="block p-1 border border-blue-200 bg-blue-300 text-blue-900 hover:bg-blue-200 text-center rounded-lg" href="/years" 🗓️ By year
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/posts" 🪧 All posts
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/tagged/weekly" 🔄 Week posts
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/timemachine/#{Time.now.strftime("%Y/%m/%d")}" ⏳ Time machine
|
||||
|
||||
h2 class="text-xl" Explore everything else
|
||||
|
||||
div class="grid grid-cols-2 gap-2 mb-6"
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/blogroll" 🪵 Blogroll
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/bookshelf" 📚️ Bookshelf
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/collections" 📦 Collections
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/colophon" 🧱 Colophon
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/hikes" 🥾 Hikes
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/movies" 🍿 Movies
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/podcasts" 🎙️ Podcasts
|
||||
a class="block p-1 border border-blue-200 bg-blue-200 text-blue-900 hover:bg-blue-300 text-center rounded-lg" href="/trips" 🛫 Trips
|
||||
|
||||
/ a class="block p-1 border border-blue-200 bg-blue-300 text-blue-900 hover:bg-blue-200 text-center rounded-lg" href="/art" 🎨 Art things
|
||||
|
@@ -1,26 +0,0 @@
|
||||
- context.content_for(:title, "Movies | ")
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 🍿 Movies
|
||||
|
||||
div class="mb-12 max-w-prose mx-auto"
|
||||
table class="prose dark:prose-invert table-auto"
|
||||
thead
|
||||
tr
|
||||
td Title
|
||||
td Year
|
||||
td Rating
|
||||
- movies.each do |movie|
|
||||
tr
|
||||
td
|
||||
a href="#{movie.url}"
|
||||
= movie.title
|
||||
td
|
||||
= movie.year
|
||||
td class="min-w-32"
|
||||
- if movie.rating > 0
|
||||
== "#{'🌕' * movie.rating.floor}#{'🌗' * (movie.rating % movie.rating.floor).ceil}"
|
||||
- else
|
||||
== " "
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,8 +0,0 @@
|
||||
- context.content_for(:title, "")
|
||||
- context.content_for(:highlight_code, false)
|
||||
|
||||
article class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200 prose-em:font-bold prose-em:not-italic prose-em:bg-blue-600 prose-em:px-1 prose-em:rounded prose-a:text-blue-600 prose-a:dark:text-indigo-300 prose-a:p-0.5 prose-a:rounded-sm prose-a:no-underline hover:prose-a:underline prose-em:text-blue-100"
|
||||
h1= page_name
|
||||
== page_content
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,10 +0,0 @@
|
||||
- context.content_for(:title, "Photos | ")
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 Photos
|
||||
|
||||
div class="grid grid-cols-3 gap-4 mb-4 max-w-prose mx-auto"
|
||||
- photos.each do |post|
|
||||
== render "shared/photo_post", post: post, extended: true
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,17 +0,0 @@
|
||||
- context.content_for(:title, "Places | ")
|
||||
|
||||
div class="mb-4 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 Places
|
||||
|
||||
div class="mb-12 max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
nav class="space-x-1 text-sm md:text-sm uppercase md:block"
|
||||
span
|
||||
| 🗺️
|
||||
a href="/places/map" View map
|
||||
|
||||
|
||||
div class="mb-12 max-w-prose mx-auto"
|
||||
- places.each do |post|
|
||||
== render "shared/post", post: post
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,3 +0,0 @@
|
||||
div class="p-2 bg-white absolute bg-opacity-75 z-40 w-screen"
|
||||
button id="go-back" ← Back
|
||||
div id='map' style='width: 100%; height: 100%;' data-markers="#{JSON.generate(places.map(&:value))}"
|
@@ -1,29 +0,0 @@
|
||||
- context.content_for(:title, "Podcasts | ")
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 🎙️ Podcasts
|
||||
|
||||
div class="mb-12 max-w-prose mx-auto"
|
||||
- if listens && listens.count > 0
|
||||
div class="p-4 bg-pink-200 dark:bg-pink-900 rounded"
|
||||
h4 class="p-0 m-0 text-pink-900 dark:text-pink-200" Recent listens
|
||||
- listens.each do |listen|
|
||||
div
|
||||
a class="text-pink-800 dark:text-pink-100 no-underline hover:decoration-wavy hover:underline" href=listen.url
|
||||
span = listen.title
|
||||
em= " — #{listen.podcast_name}"
|
||||
|
||||
table class="prose dark:prose-invert table-auto"
|
||||
thead
|
||||
tr
|
||||
td
|
||||
td Name
|
||||
- podcasts.each do |podcast|
|
||||
tr
|
||||
td
|
||||
img class="w-14 m-0 p-0 rounded" src="#{Hanami.app.settings.micropub_site_url}/media/podcast_art/#{podcast.overcast_id}.jpg"
|
||||
td class="p-0 align-middle"
|
||||
a class="block" href="#{podcast.url}"
|
||||
= podcast.name
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,16 +0,0 @@
|
||||
div class="mb-4 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 Archive: #{year}
|
||||
|
||||
div class="mb-12 max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
nav class="space-x-1 text-sm md:text-sm uppercase md:block"
|
||||
span Archive:
|
||||
- post_years.each do |y|
|
||||
a href="/posts/archive/#{y}" class="text-sm hover:text-gray-400 #{year.to_s == y.to_s ? 'underline decoration-wavy' : ''}"= y
|
||||
- if y != post_years.last
|
||||
span ·
|
||||
div class="h-feed mb-12 max-w-prose mx-auto"
|
||||
- posts.each do |post|
|
||||
== render "shared/post", post: post
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
||||
|
@@ -1,27 +0,0 @@
|
||||
- context.content_for(:title, "Writing | ")
|
||||
|
||||
div class="mb-4 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 Writing
|
||||
|
||||
div class="mb-4 max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
nav class="space-x-1 text-sm md:text-sm uppercase md:block"
|
||||
span Archive:
|
||||
- post_years.each do |year|
|
||||
a href="/posts/archive/#{year}" class="text-sm hover:text-gray-400"= year
|
||||
- if year != post_years.last
|
||||
span ·
|
||||
div class="h-feed mb-12 max-w-prose mx-auto"
|
||||
form action="/posts" method="GET"
|
||||
div class="flex"
|
||||
div class="flex-auto basis-auto mr-4"
|
||||
input id="search" type="text" class="p-1 rounded w-full bg-indigo-50 dark:bg-indigo-400" name="q" value=query
|
||||
div class="mr-4"
|
||||
input type="submit" class="bg-indigo-300 p-1 rounded text-indigo-900" value="Search"
|
||||
-if query
|
||||
div class=""
|
||||
a href="/posts" class="text-gray-400 dark:text-gray-100 pt-1" Clear search
|
||||
div class="h-feed mb-12 max-w-prose mx-auto"
|
||||
- posts.each do |post|
|
||||
== render "shared/post", post: post
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,137 +0,0 @@
|
||||
- context.content_for(:title, "#{post.display_title} | ")
|
||||
- context.content_for(:url, post.permalink)
|
||||
- context.content_for(:image, post.key_image)
|
||||
|
||||
article class="h-entry"
|
||||
template @img-modal.window="imgModal = true; imgModalSrc = $event.detail.imgModalSrc; imgModalDesc = $event.detail.imgModalDesc;" x-if="imgModal"
|
||||
div @mousedown.outside="imgModalSrc = ''" class="p-2 fixed w-full h-100 inset-0 z-50 overflow-hidden flex justify-center items-center bg-black bg-opacity-75"
|
||||
div @mousedown.outside="imgModal = ''" class="flex flex-col max-w-3xl max-h-full overflow-auto"
|
||||
div class="z-50"
|
||||
button @click="imgModal = ''" class="float-right pt-2 pr-2 outline-none focus:outline-none"
|
||||
svg class="fill-current text-white" xmlns="http://www.w3.org/2000/svg" width="18" height="18" viewBox="0 0 18 18"
|
||||
path d="M14.53 4.53l-1.06-1.06L9 7.94 4.53 3.47 3.47 4.53 7.94 9l-4.47 4.47 1.06 1.06L9 10.06l4.47 4.47 1.06-1.06L10.06 9z">
|
||||
div class="p-2 text-center w-full"
|
||||
img class="rounded object-contain h-1/2-screen shadow-solid shadow-pink-100 dark:shadow-pink-200 mb-4 mx-auto" :src="imgModalSrc" :alt="imgModalSrc"
|
||||
p x-text="imgModalDesc" class="text-center text-white"
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 class="p-name mb-2"
|
||||
a class="u-url" href=post.permalink
|
||||
= post.display_title
|
||||
nav class="space-x-1 text-sm md:text-sm md:block dark:text-gray-600"
|
||||
- if post.location || post.photos? || post.videos?
|
||||
span See more:
|
||||
- if post.location
|
||||
a class="dark:text-gray-400" href="/places" places
|
||||
- if post.photos? || post.videos?
|
||||
a class="dark:text-gray-400" href="/photos" photos
|
||||
article class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200 prose-a:text-blue-600 prose-a:no-underline hover:prose-a:underline prose-img:rounded prose-video:rounded"
|
||||
div class="e-content prose-code:bg-pink-100 prose-code:text-pink-900"
|
||||
== post.content
|
||||
|
||||
- if post.photos?
|
||||
- post.photos.each_with_index do |photo, idx|
|
||||
figure id="photo-#{idx}"
|
||||
img class="u-photo shadow-solid shadow-pink-100 dark:shadow-pink-200 mb-4" src=photo["value"] alt=photo["alt"]
|
||||
figcaption
|
||||
= photo["alt"]
|
||||
- if post.videos?
|
||||
- post.videos.each_with_index do |video, index|
|
||||
figure id="video-#{index}"
|
||||
video loop=false muted=true controls=true
|
||||
source type="video/mp4" src="#{video["value"]}"
|
||||
figcaption= video["alt"]
|
||||
a href="#" data-replay="video-#{index}" Replay
|
||||
|
||||
|
||||
- if post.location
|
||||
img class="shadow-solid shadow-pink-100 dark:shadow-pink-200 rounded mb-4" src=post.large_map
|
||||
-if post.webmentions && post.webmentions.count > 0
|
||||
div class="mt-12"
|
||||
h3 #{post.webmentions.count} Comment#{post.webmentions.count != 1 ? "s" : ""}
|
||||
- post.webmentions.each do |mention|
|
||||
div class="prose-p:m-1 mb-6 p-8 bg-orange-100 dark:bg-indigo-900 squircle"
|
||||
div class="flex h-8"
|
||||
img class="w-8 rounded-full m-0 mr-2" src=mention.author_photo
|
||||
a class="block text-orange-700 dark:text-violet-300 no-underline hover:underline" href=mention.author_url
|
||||
= mention.author_name
|
||||
div class="prose dark:prose-invert dark:text-indigo-250 prose-a:text-orange-700 dark:prose-a:text-violet-300 prose-a:no-underline hover:prose-a:underline"
|
||||
== mention.content_html
|
||||
div class="text-sm"
|
||||
a class="no-underline hover:underline text-orange-900 dark:text-violet-400" href=mention.source_url
|
||||
= mention.published_at.strftime("%e %B, %Y")
|
||||
div class="mb-12"
|
||||
- if trip
|
||||
div class="max-w-prose mx-auto text-gray-600 dark:text-gray-200 flex gap-4"
|
||||
a href="/trips/#{trip.id}" class="block grow bg-orange-100 hover:bg-orange-200 dark:bg-orange-600 hover:dark:bg-orange-900 rounded px-4 py-2 mb-2"
|
||||
span class="pr-8"✈️
|
||||
= "Part of the trip: "
|
||||
strong #{trip.name}
|
||||
- if post.tags.map(&:label).include? "weekly"
|
||||
div class="max-w-prose mx-auto text-gray-600 dark:text-gray-200 flex gap-4"
|
||||
div class="grow" hx-get="/post/top_tracks/#{post.slug}" hx-trigger="load"
|
||||
|
||||
- if past_movies.count > 0
|
||||
div class="max-w-prose mx-auto text-gray-600 dark:text-gray-200 mb-4"
|
||||
h3 class="text-xl" Movies watched for the first time this week
|
||||
div class="flex gap-4 pb-4 mt-4"
|
||||
- past_movies.map do |movie|
|
||||
a href=movie.url
|
||||
figure class="w-24"
|
||||
img class="rounded hover:opacity-80" src=movie.poster
|
||||
/ figcaption= movie.title
|
||||
hr
|
||||
- if text_posts.count > 0 || photo_posts.count > 0
|
||||
div class="max-w-prose mx-auto text-gray-600 dark:text-gray-200 mb-4"
|
||||
h3 class="text-xl mb-0" This week, years ago
|
||||
- if text_posts.count > 0
|
||||
div class="max-w-prose mx-auto text-gray-600 dark:text-gray-200 mb-4"
|
||||
div class="block grow bg-blue-100 dark:bg-blue-600 rounded px-4 py-2 mb-12"
|
||||
ul class="mt-0"
|
||||
- text_posts.each do |past_post|
|
||||
li class="m-0"
|
||||
a class="hover:underline" href=past_post.permalink
|
||||
= "#{past_post.display_title} (#{past_post.published_at.year})"
|
||||
|
||||
div class="max-w-prose mx-auto text-gray-600 dark:text-gray-200 flex"
|
||||
div class="grid grid-cols-3 gap-4 mb-4 max-w-prose mx-auto"
|
||||
- photo_posts.group_by{ |p| p.published_at.year }.each do |year, posts|
|
||||
-posts.each_with_index do |post, index|
|
||||
div
|
||||
-if index == 0
|
||||
p class="mb-1 px-1" = year
|
||||
- else
|
||||
p class="mb-1 px-1"
|
||||
== render "shared/photo_post", post: post, extended: false
|
||||
div class="mb-4 max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
||||
|
||||
div class="max-w-prose mx-auto text-gray-600 dark:text-gray-200 flex"
|
||||
div class=""
|
||||
= "Published "
|
||||
time class="dt-published" datetime=post.machine_published_at
|
||||
= post.display_published_at
|
||||
p
|
||||
a class="p-author h-card" href=Hanami.app.settings.micropub_site_url
|
||||
= "by #{Hanami.app.settings.site_name}"
|
||||
p
|
||||
span in
|
||||
- if post.posted_in == :posts
|
||||
a class="hover:underline text-blue-400 dark:text-indigo-300" href="/posts" posts
|
||||
- if post.posted_in == :places
|
||||
a class="hover:underline text-blue-400 dark:text-indigo-300" href="/places" places
|
||||
- if post.posted_in == :statuses
|
||||
a class="hover:underline text-blue-400 dark:text-indigo-300" href="/statuses" statuses
|
||||
- if post.posted_in == :bookshelf
|
||||
a class="hover:underline text-blue-400 dark:text-indigo-300" href="/bookshelf" bookshelf
|
||||
span class="text-right flex-1 leading-6"
|
||||
== render "shared/tags", tags: post.tags
|
||||
div class="mb-2 max-w-prose mx-auto text-gray-600 dark:text-gray-200 flex"
|
||||
- if post.syndicated?
|
||||
span Also on:
|
||||
- post.syndicated_to.each do |loc|
|
||||
- next if loc[:location] == ""
|
||||
a rel="syndication" class="u-syndication" href=loc[:url]
|
||||
== render "shared/#{loc[:location]}"
|
||||
|
||||
svg width="10" height="10" viewBox="0 0 10 10"
|
||||
clipPath id="squircleClip" clipPathUnits="objectBoundingBox"
|
||||
path fill="red" stroke="none" d="M 0,0.5 C 0,0 0,0 0.5,0 S 1,0 1,0.5 1,1 0.5,1 0,1 0,0.5"
|
@@ -1,11 +0,0 @@
|
||||
div class="mx-auto"
|
||||
a href=url class="block flex bg-pink-100 hover:bg-pink-200 dark:bg-pink-600 hover:dark:bg-pink-900 rounded px-4 py-2 mb-12"
|
||||
div class="mr-4 my-auto"
|
||||
div class="w-34 h-34 my-auto text-[2.041rem] block dark:hidden" 👩🏼🎤
|
||||
div class="w-34 h-34 my-auto text-[2.041rem] hidden dark:block" 👨🏽🎤
|
||||
div
|
||||
p class="text-sm" Top track
|
||||
p class="hover:underline"
|
||||
p class="font-semibold"= name
|
||||
p class=""= artist
|
||||
|
@@ -1,10 +0,0 @@
|
||||
div class="grid grid-cols-4 gap-2"
|
||||
- recently_played_music.each do |album|
|
||||
a href="#{album[:href]}"
|
||||
div
|
||||
img class="m-0 rounded transition-transform ease-out hover:scale-105" src="#{album[:image]}"
|
||||
span class="inline-block text-sm"
|
||||
= album[:name]
|
||||
br
|
||||
span class="inline-block text-sm font-bold"
|
||||
= album[:artist]
|
@@ -1,2 +0,0 @@
|
||||
- w_class = defined?(width) ? width : "w-6"
|
||||
<svg class="fill-blue-100 hover:fill-blue-400 #{w_class}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg>
|
@@ -1,20 +0,0 @@
|
||||
div class="mb-4"
|
||||
div class="mb-4"
|
||||
h3 class="text-xl text-blue-600 dark:text-slate-200 mb-2"
|
||||
a class="u-url hover:text-blue-900 hover:dark:text-slate-600" href="/bookmark/#{bookmark.slug}"
|
||||
= "#{bookmark.name} "
|
||||
|
||||
small class="text-gray-400 hover:text-gray-600"
|
||||
a href=bookmark.url
|
||||
= bookmark.url
|
||||
== render("link_arrow")
|
||||
p class="e-content leading-relaxed md:text-lg text-gray-800 dark:text-gray-200"
|
||||
= bookmark.content
|
||||
|
||||
== bookmark.youtube_embed
|
||||
|
||||
p class="text-sm text-blue-400 mb-4"
|
||||
a href="/bookmark/#{bookmark.slug}"
|
||||
time class="dt-published" datetime=bookmark.machine_published_at
|
||||
= bookmark.display_published_at
|
||||
hr
|
@@ -1,28 +0,0 @@
|
||||
div class="mb-5 h-entry relative"
|
||||
- if !first
|
||||
div class="-top-4 -left-1 absolute rounded-full border-2 bg-orange-100 border-orange-200 p-1 w-1 h-2 inline-block dark:border-amber-400 dark:bg-amber-400"
|
||||
- if first
|
||||
div class="inline-block mb-2 dark:text-indigo-400"
|
||||
span class="mr-2"
|
||||
= "🛬"
|
||||
= trip.start_date
|
||||
|
||||
div class="ml-[5] #{ last ? '' : 'mb-[20]'} pl-6 border-solid border-l-2 border-orange-200 dark:border-amber-400"
|
||||
h3 class="text-xl font-semibold text-blue-600 dark:text-indigo-300"
|
||||
a class="border-b-2 border-transparent hover:border-blue-600 hover:border-b-2" href="/post/#{post.slug}"
|
||||
= post.name
|
||||
div class="e-content prose-p:mb-0 prose-img:my-2 prose-a:text-blue-600 prose-a:no-underline hover:prose-a:underline p-name text-base prose prose-ul:list-none prose-ul:pl-0 prose-li:pl-0 text-gray-800 dark:text-gray-200 prose-a:dark:text-gray-100"
|
||||
== post.excerpt
|
||||
div class="grid gap-4 grid-flow-row grid-cols-4 grid-rows-1"
|
||||
-post.photos.each do |photo|
|
||||
img class="w-44 h-44 object-cover rounded" src=photo["value"]
|
||||
|
||||
p class="text-sm text-blue-400 dark:text-indigo-50"
|
||||
a class="u-url" href="#{post.permalink}"
|
||||
time class="dt-published" datetime=post.machine_published_at
|
||||
= post.display_published_at
|
||||
- if last
|
||||
div class="inline-block mb-6 dark:text-indigo-400"
|
||||
span class="mr-2"
|
||||
= "🛫"
|
||||
= trip.end_date
|
@@ -1 +0,0 @@
|
||||
<svg class="fill-purple-100 hover:fill-purple-400 w-6" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M224.1 141c-63.6 0-114.9 51.3-114.9 114.9s51.3 114.9 114.9 114.9S339 319.5 339 255.9 287.7 141 224.1 141zm0 189.6c-41.1 0-74.7-33.5-74.7-74.7s33.5-74.7 74.7-74.7 74.7 33.5 74.7 74.7-33.6 74.7-74.7 74.7zm146.4-194.3c0 14.9-12 26.8-26.8 26.8-14.9 0-26.8-12-26.8-26.8s12-26.8 26.8-26.8 26.8 12 26.8 26.8zm76.1 27.2c-1.7-35.9-9.9-67.7-36.2-93.9-26.2-26.2-58-34.4-93.9-36.2-37-2.1-147.9-2.1-184.9 0-35.8 1.7-67.6 9.9-93.9 36.1s-34.4 58-36.2 93.9c-2.1 37-2.1 147.9 0 184.9 1.7 35.9 9.9 67.7 36.2 93.9s58 34.4 93.9 36.2c37 2.1 147.9 2.1 184.9 0 35.9-1.7 67.7-9.9 93.9-36.2 26.2-26.2 34.4-58 36.2-93.9 2.1-37 2.1-147.8 0-184.8zM398.8 388c-7.8 19.6-22.9 34.7-42.6 42.6-29.5 11.7-99.5 9-132.1 9s-102.7 2.6-132.1-9c-19.6-7.8-34.7-22.9-42.6-42.6-11.7-29.5-9-99.5-9-132.1s-2.6-102.7 9-132.1c7.8-19.6 22.9-34.7 42.6-42.6 29.5-11.7 99.5-9 132.1-9s102.7-2.6 132.1 9c19.6 7.8 34.7 22.9 42.6 42.6 11.7 29.5 9 99.5 9 132.1s2.7 102.7-9 132.1z"/></svg>
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1,4 +0,0 @@
|
||||
svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20" fill="currentColor" class="inline w-2 h2 md:w-3 md:h-3 mt-0.5 ml-1.5"
|
||||
g
|
||||
rect height="12.4434" opacity="0" width="12.4238" x="0" y="0"
|
||||
path d="M14.4238 10.8008L14.4141 0.976562C14.4141 0.419922 14.0527 0.0292969 13.4668 0.0292969L3.64258 0.0292969C3.0957 0.0292969 2.72461 0.449219 2.72461 0.917969C2.72461 1.38672 3.14453 1.78711 3.60352 1.78711L7.00195 1.78711L11.7676 1.63086L9.95117 3.22266L0.273438 12.9199C0.0976562 13.0957 0 13.3203 0 13.5352C0 14.0039 0.419922 14.4434 0.908203 14.4434C1.13281 14.4434 1.34766 14.3652 1.52344 14.1797L11.2207 4.49219L12.832 2.66602L12.6562 7.22656L12.6562 10.8398C12.6562 11.2988 13.0566 11.7285 13.5352 11.7285C14.0039 11.7285 14.4238 11.3281 14.4238 10.8008Z"
|
@@ -1,2 +0,0 @@
|
||||
- w_class = defined?(width) ? width : "w-6"
|
||||
<svg class="fill-blue-100 hover:fill-blue-400 #{w_class}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 448 512"><!--! Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M433 179.11c0-97.2-63.71-125.7-63.71-125.7-62.52-28.7-228.56-28.4-290.48 0 0 0-63.72 28.5-63.72 125.7 0 115.7-6.6 259.4 105.63 289.1 40.51 10.7 75.32 13 103.33 11.4 50.81-2.8 79.32-18.1 79.32-18.1l-1.7-36.9s-36.31 11.4-77.12 10.1c-40.41-1.4-83-4.4-89.63-54a102.54 102.54 0 0 1-.9-13.9c85.63 20.9 158.65 9.1 178.75 6.7 56.12-6.7 105-41.3 111.23-72.9 9.8-49.8 9-121.5 9-121.5zm-75.12 125.2h-46.63v-114.2c0-49.7-64-51.6-64 6.9v62.5h-46.33V197c0-58.5-64-56.6-64-6.9v114.2H90.19c0-122.1-5.2-147.9 18.41-175 25.9-28.9 79.82-30.8 103.83 6.1l11.6 19.5 11.6-19.5c24.11-37.1 78.12-34.8 103.83-6.1 23.71 27.3 18.4 53 18.4 175z"/></svg>
|
@@ -1,9 +0,0 @@
|
||||
- if extended
|
||||
- post.photos.each_with_index do |photo, idx|
|
||||
div class="rounded max-w-xs"
|
||||
a href="#{post.permalink}#photo-#{idx}"
|
||||
img class="rounded object-cover transition-transform ease-out hover:scale-105 h-48 w-48" src="#{photo["value"]}" alt="#{photo["alt"]}"
|
||||
- else
|
||||
div class="rounded max-w-xs"
|
||||
a href="#{post.permalink}"
|
||||
img class="rounded object-cover transition-transform ease-out hover:scale-105 h-48 w-48" src="#{post.photos[0]["value"]}" alt="#{post.photos[0]["alt"]}"
|
@@ -1,3 +0,0 @@
|
||||
- w_class = defined?(width) ? width : "w-6"
|
||||
<svg class="fill-blue-100 hover:fill-blue-400 #{w_class} -rotate-45" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512"><!--! Font Awesome Pro 6.2.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. --><path d="M32 32C32 14.3 46.3 0 64 0H320c17.7 0 32 14.3 32 32s-14.3 32-32 32H290.5l11.4 148.2c36.7 19.9 65.7 53.2 79.5 94.7l1 3c3.3 9.8 1.6 20.5-4.4 28.8s-15.7 13.3-26 13.3H32c-10.3 0-19.9-4.9-26-13.3s-7.7-19.1-4.4-28.8l1-3c13.8-41.5 42.8-74.8 79.5-94.7L93.5 64H64C46.3 64 32 49.7 32 32zM160 384h64v96c0 17.7-14.3 32-32 32s-32-14.3-32-32V384z"/></svg>
|
||||
|
@@ -1,15 +0,0 @@
|
||||
div class="mb-8 h-entry"
|
||||
h3 class="text-xl text-blue-500 dark:text-indigo-300 mb-2"
|
||||
a class="u-url hover:text-blue-900" href="/post/#{post.slug}"
|
||||
= post.display_title
|
||||
div class="e-content prose-p:mb-0 prose-img:my-2 prose-a:text-blue-600 prose-a:no-underline hover:prose-a:underline p-name text-base prose prose-ul:list-none prose-ul:pl-0 prose-li:pl-0 text-gray-800 dark:text-gray-200 prose-a:dark:text-gray-100"
|
||||
== post.excerpt
|
||||
div class="grid gap-4 grid-flow-row grid-cols-#{post.photos.count} grid-rows-1"
|
||||
-post.photos.each do |photo|
|
||||
img class="w-44 h-44 object-cover rounded" src=photo["value"]
|
||||
/ == render "shared/tags", tags: post.tags
|
||||
|
||||
p class="text-sm text-blue-400 dark:text-indigo-400"
|
||||
a class="u-url" href="#{post.permalink}"
|
||||
time class="dt-published" datetime=post.machine_published_at
|
||||
= post.display_published_at
|
@@ -1,22 +0,0 @@
|
||||
div class="mb-8 h-entry border border-gray-200 m-2 p-4 bg-gray-50 hover:bg-gray-100 dark:border-slate-800 dark:bg-slate-900 dark:hover:bg-slate-950 hover:dark:border-slate-900 rounded"
|
||||
a class="border-b-2 border-transparent hover:border-blue-600 hover:border-b-2" href="/post/#{post.slug}"
|
||||
div class="e-content prose-p:mb-0 prose-img:my-2 prose-a:text-blue-600 prose-a:no-underline hover:prose-a:underline p-name text-base prose prose-ul:list-none prose-ul:pl-0 prose-li:pl-0 text-gray-800 dark:text-gray-200 prose-a:dark:text-gray-100 mb-4 prose-img:rounded"
|
||||
== " 💬 #{post.content}"
|
||||
div class="grid gap-4 grid-flow-row grid-cols-4 grid-rows-1"
|
||||
-post.photos.each do |photo|
|
||||
img class="w-32 h-32 object-cover rounded" src=photo["value"]
|
||||
== render "shared/tags", tags: post.tags
|
||||
|
||||
div class="mb-8"
|
||||
p class="text-sm text-blue-400 dark:text-indigo-400"
|
||||
a class="u-url float-left mr-0" href="#{post.permalink}"
|
||||
time class="dt-published" datetime=post.machine_published_at
|
||||
= post.display_published_at
|
||||
- if post.webmentions.count > 0
|
||||
== " · #{post.webmentions.count} comment(s)"
|
||||
|
||||
- post.syndicated_to.each do |loc|
|
||||
== " ·"
|
||||
a rel="syndication" class="u-syndication inline-block ml-1 float-left" href=loc[:url]
|
||||
- if loc[:location] != ""
|
||||
== render "shared/#{loc[:location]}", width: "w-4"
|
@@ -1,2 +0,0 @@
|
||||
- w_class = defined?(width) ? width : "w-4"
|
||||
<svg class="fill-pink-100 hover:fill-pink-400 #{w_class}" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 368 512"><!--! Font Awesome Pro 6.3.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. --><path d="M323.1 3H49.9C12.4 3 0 31.3 0 49.1v433.8c0 20.3 12.1 27.7 18.2 30.1 6.2 2.5 22.8 4.6 32.9-7.1C180 356.5 182.2 354 182.2 354c3.1-3.4 3.4-3.1 6.8-3.1h83.4c35.1 0 40.6-25.2 44.3-39.7l48.6-243C373.8 25.8 363.1 3 323.1 3zm-16.3 73.8l-11.4 59.7c-1.2 6.5-9.5 13.2-16.9 13.2H172.1c-12 0-20.6 8.3-20.6 20.3v13c0 12 8.6 20.6 20.6 20.6h90.4c8.3 0 16.6 9.2 14.8 18.2-1.8 8.9-10.5 53.8-11.4 58.8-.9 4.9-6.8 13.5-16.9 13.5h-73.5c-13.5 0-17.2 1.8-26.5 12.6 0 0-8.9 11.4-89.5 108.3-.9.9-1.8.6-1.8-.3V75.9c0-7.7 6.8-16.6 16.6-16.6h219c8.2 0 15.6 7.7 13.5 17.5z"/></svg>
|
@@ -1,8 +0,0 @@
|
||||
- if tags.count > 0
|
||||
p class="mb-2"
|
||||
= "Tagged"
|
||||
div class="mb-2 justify-end gap-x-1.5"
|
||||
- tags.each do |post_tag|
|
||||
span
|
||||
a class="p-category rounded mr-1 u-url text-pink-400 hover:text-pink-600 dark:text-pink-400 dark:hover:text-pink-100 text-gray-600" href="/tagged/#{post_tag.slug}"
|
||||
= "##{post_tag.label}"
|
@@ -1,2 +0,0 @@
|
||||
- w_class = defined?(width) ? width : "w-6"
|
||||
<svg xmlns="http://www.w3.org/2000/svg" class="fill-blue-200 hover:fill-blue-600 #{w_class}" viewBox="0 0 512 512"><!--!Font Awesome Free 6.5.1 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license/free Copyright 2023 Fonticons, Inc.--><path d="M459.4 151.7c.3 4.5 .3 9.1 .3 13.6 0 138.7-105.6 298.6-298.6 298.6-59.5 0-114.7-17.2-161.1-47.1 8.4 1 16.6 1.3 25.3 1.3 49.1 0 94.2-16.6 130.3-44.8-46.1-1-84.8-31.2-98.1-72.8 6.5 1 13 1.6 19.8 1.6 9.4 0 18.8-1.3 27.6-3.6-48.1-9.7-84.1-52-84.1-103v-1.3c14 7.8 30.2 12.7 47.4 13.3-28.3-18.8-46.8-51-46.8-87.4 0-19.5 5.2-37.4 14.3-53 51.7 63.7 129.3 105.3 216.4 109.8-1.6-7.8-2.6-15.9-2.6-24 0-57.8 46.8-104.9 104.9-104.9 30.2 0 57.5 12.7 76.7 33.1 23.7-4.5 46.5-13.3 66.6-25.3-7.8 24.4-24.4 44.8-46.1 57.8 21.1-2.3 41.6-8.1 60.4-16.2-14.3 20.8-32.2 39.3-52.6 54.3z"/></svg>
|
@@ -1,60 +0,0 @@
|
||||
- context.content_for(:title, "")
|
||||
|
||||
div class="h-card prose dark:prose-invert mb-12 prose-a:decoration-wavy hover:prose-a:text-blue-400 max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
p class="p-note"
|
||||
== home_content
|
||||
|
||||
div class="mb-8 max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
||||
|
||||
- if latest_status
|
||||
div class="h-entry mb-12 p-2 grid grid-cols-7 gap-4 min-h-16 max-w-prose mx-auto bg-fuchsia-100 dark:bg-fuchsia-800 dark:text-gray-200 rounded"
|
||||
div class="col-span-7 sm:col-span-6 text-left"
|
||||
a class="u-url block my-auto hover:underline decoration-wavy" href=latest_status.permalink
|
||||
span class="e-content status-body"
|
||||
- if latest_status.key_image
|
||||
img class="float-start max-w-32 rounded mr-2" src=latest_status.key_image
|
||||
p
|
||||
== latest_status.raw_content
|
||||
- latest_status.syndicated_to.each do |loc|
|
||||
small class="text-fuchsia-900 dark:text-fuchsia-300"
|
||||
a rel="syndication" class="u-syndication" href=loc[:url] Read on #{loc[:location]}
|
||||
a class="col-span-7 sm:col-span-1 px-2 text-center transition-colors rounded bg-fuchsia-50 hover:bg-fuchsia-200 dark:bg-fuchsia-900 dark:hover:bg-fuchsia-700 inline-block grid content-center max-h-12 my-auto" href="/statuses"
|
||||
p See all
|
||||
|
||||
div class="flex justify-between max-w-prose mx-auto mb-2"
|
||||
h2 class="text-xl text-amber-600 dark:text-amber-200" Weekly posts
|
||||
a class="rounded px-2 text-amber-600 hover:dark:bg-amber-900 hover:dark:text-amber-100 dark:text-amber-200 hover:text-amber-600 hover:bg-amber-100" href="/tagged/weekly" See all →
|
||||
|
||||
div class="mb-12 max-w-prose mx-auto bg-amber-100 rounded dark:bg-amber-900 dark:text-gray-100"
|
||||
ul class="columns-1"
|
||||
- week_posts.each do |post|
|
||||
li class=""
|
||||
a class="block content-justify hover:bg-amber-200 decoration-wavy rounded py-1.5 px-2" href="/post/#{post.slug}"
|
||||
div class="flex justify-between"
|
||||
span class="grow-0 inline-block pr-2" = post.name
|
||||
span class="border-b border-amber-400 dark:border-amber-600 -top-3 relative border-dashed grow inline-block"
|
||||
span class="grow-0 inline-block pl-2" = post.display_published_at
|
||||
|
||||
div class="flex justify-between max-w-prose mx-auto mb-2"
|
||||
h2 class="text-xl text-blue-600 dark:text-blue-200" 📯 Posts
|
||||
a class="rounded px-2 h-6 text-blue-600 hover:dark:bg-blue-900 hover:dark:text-blue-100 dark:text-blue-200 hover:text-blue-600 hover:bg-blue-100" href="/posts" See all →
|
||||
|
||||
div class="h-feed mb-12 max-w-prose mx-auto"
|
||||
- posts.each do |post|
|
||||
== render "shared/post", post: post
|
||||
|
||||
div class="flex justify-between max-w-prose mx-auto mb-2"
|
||||
h2 class="text-xl text-blue-600 dark:text-blue-200" 📸 Photos
|
||||
a class="rounded px-2 h-6 text-blue-600 hover:dark:bg-blue-900 hover:dark:text-blue-100 dark:text-blue-200 hover:text-blue-600 hover:bg-blue-100" href="/photos" See all →
|
||||
|
||||
div class="grid grid-cols-3 gap-4 max-w-prose mx-auto"
|
||||
- photo_posts.each do |post|
|
||||
== render "shared/photo_post", post: post, extended: false
|
||||
|
||||
- if last_location
|
||||
div class="mb-12 mt-6 max-w-prose mx-auto text-gray-600 dark:text-gray-200 rounded p-2 bg-blue-50 dark:bg-blue-900/60"
|
||||
div
|
||||
= "🗺️ Last seen at "
|
||||
a class="text-blue-400 hover:text-blue-600" href=last_location.permalink
|
||||
= last_location.display_title
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,8 +0,0 @@
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 Statuses
|
||||
|
||||
div class="h-feed mb-12 max-w-prose mx-auto"
|
||||
- posts.each do |post|
|
||||
== render "shared/status", post: post
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,15 +0,0 @@
|
||||
- context.content_for(:title, "Tags | ")
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200 columns-2"
|
||||
h1 Tags
|
||||
|
||||
- tag_groups.each do |tags|
|
||||
div class="break-inside-avoid-column"
|
||||
h4 class="bg-indigo-100 px-1" class="mt-6 mb-2 font-bold text-indigo-400 dark:text-indigo-600" = tags[:group].upcase
|
||||
|
||||
- tags[:tags].each do |post_tag|
|
||||
div
|
||||
a class="p-category no-underline rounded p-1 mr-1 u-url text-gray-600 dark:text-indigo-400 hover:text-indigo-200" href="/tagged/#{post_tag[:tag].slug}"
|
||||
= "#{post_tag[:tag].label} (#{post_tag[:count]})"
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
||||
|
@@ -1,10 +0,0 @@
|
||||
- context.content_for(:title, "Tag - #{post_tag.label} | ")
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h2 = "#{posts.count} item(s) tagged \"#{post_tag.label}\""
|
||||
|
||||
div class="mb-12 max-w-prose mx-auto"
|
||||
- posts.each do |post|
|
||||
== render "shared/#{post.template_type.to_sym}", post.template_type.to_sym => post
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,80 +0,0 @@
|
||||
div class="max-w-screen-md mx-auto px-4 m-4 h-max"
|
||||
div class="p-4 m-2"
|
||||
div class="prose dark:prose-invert md:col-span-16 p-4"
|
||||
h2 class="mt-0" = display_date
|
||||
|
||||
a href="/timemachine/#{prev_date}" ← #{prev_date}
|
||||
|
||||
a class="inline-block px-2" href="/timemachine/#{today}" Today
|
||||
|
||||
- if next_date
|
||||
a href="/timemachine/#{next_date}" #{next_date} →
|
||||
|
||||
- if posts.count > 0
|
||||
div class="mt-4"
|
||||
- posts.each_with_index do |post, index|
|
||||
div class="#{"border-t-2" if index == 0} border-b-2 border-gray-200 dark:border-indigo-300"
|
||||
- if post.photos.count == 0
|
||||
a href="/post/#{post.slug}"
|
||||
h3= post.name
|
||||
== post.excerpt
|
||||
- if post.name == ""
|
||||
p
|
||||
a href="/post/#{post.slug}" 🔗 permalink
|
||||
- else
|
||||
div class="grid grid-cols-3 gap-2 pb-4"
|
||||
- if post.photos.count > 0
|
||||
- post.photos.each do |photo|
|
||||
a href="/post/#{post.slug}"
|
||||
img class="mb-0 rounded" src="#{photo["value"]}"
|
||||
= post.name
|
||||
- else
|
||||
p No posts
|
||||
|
||||
- if bookmarks.count > 0
|
||||
h3 class="" Bookmarks
|
||||
|
||||
div
|
||||
ul
|
||||
- bookmarks.each do |bookmark|
|
||||
li
|
||||
a href="/bookmark/#{bookmark.slug}"
|
||||
= bookmark.name
|
||||
|
||||
- if podcasts.count > 0
|
||||
h3 class="" Podcasts
|
||||
|
||||
div
|
||||
ul
|
||||
- podcasts.each do |podcast|
|
||||
li
|
||||
a href=podcast.url
|
||||
=podcast.title
|
||||
div
|
||||
small = podcast.podcast_name
|
||||
/ h3 class="mt-0" Music
|
||||
/ h3 class="mt-0" Reading
|
||||
|
||||
div class="w-full p-2 md:block hidden prose dark:prose-invert"
|
||||
div class=""
|
||||
- posts_by_month.each do |year, months|
|
||||
div class="text-center"
|
||||
h3 class="my-4" = year
|
||||
div class="text-sm flex justify-between"
|
||||
div Jan
|
||||
div Feb
|
||||
div Mar
|
||||
div Apr
|
||||
div May
|
||||
div Jun
|
||||
div Jul
|
||||
div Aug
|
||||
div Sep
|
||||
div Oct
|
||||
div Nov
|
||||
div Dec
|
||||
div class="grid grid-rows-7 grid-flow-col gap-0.5 col-start-2"
|
||||
- months.each do |month, days|
|
||||
- days.each do |day, post_count|
|
||||
a class="group block h-2.5 w-2.5 #{post_count == 0 ? "bg-gray-50 dark:bg-indigo-800" : "bg-pink-600 dark:bg-amber-400 hover:bg-pink-800 hover:dark:bg-amber-200"}" style="opacity: #{post_count == 0 ? 1.0 : post_count.to_f / days.values.max}" href="/timemachine/#{year}/#{month}/#{day}"
|
||||
|
@@ -1,23 +0,0 @@
|
||||
- context.content_for(:title, "Trips | ")
|
||||
|
||||
div class="mb-4 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 🛫 Trips
|
||||
|
||||
div class="mb-12 max-w-prose mx-auto"
|
||||
table class="prose dark:prose-invert table-fixed"
|
||||
- trip_years.each do |year, trips|
|
||||
thead
|
||||
tr colspan=2
|
||||
td class="text-xl" = year
|
||||
- trips.each do |trip|
|
||||
tr
|
||||
td
|
||||
a class="block" href="/trips/#{trip.id}"
|
||||
= trip.name
|
||||
span class="text-right text-sm text-gray-400 dark:text-indigo-300 break-normal"
|
||||
= "#{trip.start_date.strftime("%d %b")} — #{trip.end_date.strftime("%d %b")}"
|
||||
td
|
||||
= trip.subtitle
|
||||
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,22 +0,0 @@
|
||||
- context.content_for(:title, "#{trip.name} | ")
|
||||
|
||||
- if places.count > 0
|
||||
script src='https://api.mapbox.com/mapbox-gl-js/v2.9.1/mapbox-gl.js'
|
||||
link href='https://api.mapbox.com/mapbox-gl-js/v2.9.1/mapbox-gl.css' rel='stylesheet'
|
||||
|
||||
div class="mb-4 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 class="mb-0" #{trip.name}
|
||||
/ p class="mt-2" class="text-gray-600 dark:text-gray-200 text-sm" (#{trip.start_date} - #{trip.end_date})
|
||||
|
||||
- if trip.summary
|
||||
div class="mb-4 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200 bg-gray-100 dark:bg-gray-900 p-2 rounded prose-p:mb-0 prose-ul:mt-0"
|
||||
== trip.summary
|
||||
|
||||
div class="mb-4 max-w-prose mx-auto"
|
||||
div class="rounded" id='map' style='width: 100%; height: 400px' data-markers="#{JSON.generate(places.map(&:value))}"
|
||||
|
||||
div class="h-feed mb-12 max-w-prose mx-auto"
|
||||
- posts.each do |post|
|
||||
== render "shared/compact_post", post: post, trip: trip, first: post.id == posts.first.id, last: post.id == posts.last.id
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
@@ -1,14 +0,0 @@
|
||||
- context.content_for(:title, "Hikes | ")
|
||||
|
||||
div class="mb-12 prose dark:prose-invert max-w-prose mx-auto text-gray-800 dark:text-gray-200"
|
||||
h1 🥾 Hikes
|
||||
|
||||
div class="prose dark:prose-invert max-w-prose mx-auto"
|
||||
- workouts_by_year.each do |year, workouts|
|
||||
h3= year
|
||||
h1= "#{workouts.map{|w| w.distance }.sum.round} km — #{workouts.map{|w| w.duration / 60 / 60 }.sum.round} hours"
|
||||
div class="grid grid-cols-3 gap-4 mb-4 max-w-prose mx-auto"
|
||||
- workouts.each do |workout|
|
||||
== workout.path
|
||||
|
||||
div class="max-w-screen-md mx-auto border-t border-solid border-gray-200 dark:border-gray-600"
|
Reference in New Issue
Block a user