62 lines
1.5 KiB
Ruby
62 lines
1.5 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 {
|
|
header {
|
|
nav {
|
|
pages.each { |key, page|
|
|
a(href: page[:url], class: key == @page ? "active" : "") { page[:title].downcase }
|
|
}
|
|
}
|
|
}
|
|
yield
|
|
}
|
|
}
|
|
end
|
|
end
|
|
end
|