farthergate.com/pages/layout.rb

62 lines
1.6 KiB
Ruby

module Pages
class Layout < ::Phlex::HTML
def pages = {
home: {
title: "Home",
url: "/"
},
blog: {
title: "Blog",
url: "/blog"
},
about: {
title: "About",
url: "/about"
},
garden: {
title: "Garden",
url: "https://garden.farthergate.com"
},
}
def initialize(page, meta: {})
@page = page
if @page.is_a? Symbol
@page_info = pages[page]
else
@page_info = @page
end
@meta = meta
end
def view_template
doctype
html {
head {
title { @page_info[:title] + " | Aleks Rūtiņš" }
meta(charset: "utf-8")
meta(name: "viewport", content: "width=device-width, initial-scale=1.0")
link(rel: "prefetch", href: "/DM_Mono/DMMono-Regular.ttf")
link(rel: "prefetch", href: "/DM_Mono/DMMono-Medium.ttf")
link(rel: "stylesheet", href: "/site.css")
script(defer: true, 'data-domain' => "farthergate.com", src: "https://plausible.farthergate.com/js/script.js")
@meta.each { |name, content|
meta(name: name, content: content)
}
}
body(class: 'm-0 p-0') {
header(class: 'sticky top-0 bg-white/50 backdrop-blur-md border-gray-500 border-b flex p-3 justify-center') {
nav(class: 'flex gap-4') {
pages.each { |key, page|
a(href: page[:url], class: key == @page ? "active" : "") { page[:title].downcase }
}
}
}
yield
}
}
end
end
end