Factor out and clean up site-header
This commit is contained in:
parent
72bd2a238c
commit
87e18dbf60
3 changed files with 37 additions and 58 deletions
|
@ -9,55 +9,6 @@ use DB::Post;
|
||||||
|
|
||||||
unit class Config;
|
unit class Config;
|
||||||
|
|
||||||
method site-header(BlogMeta:D $meta) {
|
|
||||||
header :class<site-header>, [
|
|
||||||
div :class<site-logo>, [
|
|
||||||
# TODO: Use a real image here
|
|
||||||
$meta.title
|
|
||||||
];
|
|
||||||
div :class<site-tagline>, [
|
|
||||||
$meta.tagline
|
|
||||||
];
|
|
||||||
div :class<header-links>, [
|
|
||||||
a :href</index.html>, [
|
|
||||||
icon 'home';
|
|
||||||
' ';
|
|
||||||
span [
|
|
||||||
'Home';
|
|
||||||
];
|
|
||||||
];
|
|
||||||
a :href</archive.html>, [
|
|
||||||
icon 'archive';
|
|
||||||
' ';
|
|
||||||
span [
|
|
||||||
'Archive';
|
|
||||||
];
|
|
||||||
];
|
|
||||||
a :href</tags.html>, [
|
|
||||||
icon 'purchase-tag-alt';
|
|
||||||
' ';
|
|
||||||
span [
|
|
||||||
'Tags';
|
|
||||||
];
|
|
||||||
];
|
|
||||||
a :href</about.html>, [
|
|
||||||
icon 'info-circle';
|
|
||||||
' ';
|
|
||||||
span [
|
|
||||||
'About';
|
|
||||||
];
|
|
||||||
];
|
|
||||||
a :href</atom.xml>, [
|
|
||||||
icon 'rss';
|
|
||||||
' ';
|
|
||||||
span [
|
|
||||||
'Feed';
|
|
||||||
];
|
|
||||||
];
|
|
||||||
];
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
method post-date(Post:D $post) {
|
method post-date(Post:D $post) {
|
||||||
my $datetime = $post.posted-at;
|
my $datetime = $post.posted-at;
|
||||||
my $timestamp = sprintf(
|
my $timestamp = sprintf(
|
||||||
|
@ -173,7 +124,7 @@ method generate-post(Post:D $post, BlogMeta:D $meta) {
|
||||||
my $head = generate-head($meta, $post.title, $post.description);
|
my $head = generate-head($meta, $post.title, $post.description);
|
||||||
my $body =
|
my $body =
|
||||||
body [
|
body [
|
||||||
self.site-header: $meta;
|
site-header $meta;
|
||||||
article :class<post>, [
|
article :class<post>, [
|
||||||
self.post-header: $post;
|
self.post-header: $post;
|
||||||
div :class<post-body>, [
|
div :class<post-body>, [
|
||||||
|
@ -224,7 +175,7 @@ method generate-index($db) {
|
||||||
|
|
||||||
my $head = generate-head($db.meta);
|
my $head = generate-head($db.meta);
|
||||||
my $body = body [
|
my $body = body [
|
||||||
self.site-header: $db.meta;
|
site-header $db.meta;
|
||||||
div :class<post-blurbs>, [
|
div :class<post-blurbs>, [
|
||||||
h1 "Recent Posts"
|
h1 "Recent Posts"
|
||||||
], @most-recent;
|
], @most-recent;
|
||||||
|
@ -249,7 +200,7 @@ method generate-archive($db) {
|
||||||
|
|
||||||
my $head = generate-head($db.meta);
|
my $head = generate-head($db.meta);
|
||||||
my $body = body [
|
my $body = body [
|
||||||
self.site-header: $db.meta;
|
site-header $db.meta;
|
||||||
div :class<post-blurbs>, [
|
div :class<post-blurbs>, [
|
||||||
h1 "All Posts"
|
h1 "All Posts"
|
||||||
], @most-recent;
|
], @most-recent;
|
||||||
|
@ -307,7 +258,7 @@ method generate-tag-blurb($db, $tag, $limit?) {
|
||||||
method generate-tags-page($db, @tags) {
|
method generate-tags-page($db, @tags) {
|
||||||
my $head = generate-head($db.meta);
|
my $head = generate-head($db.meta);
|
||||||
my $body = body [
|
my $body = body [
|
||||||
self.site-header: $db.meta;
|
site-header $db.meta;
|
||||||
div :class<tags>, [
|
div :class<tags>, [
|
||||||
h1 "Tags";
|
h1 "Tags";
|
||||||
], @tags.map(-> $tag {self.generate-tag-blurb($db, $tag, 4)});
|
], @tags.map(-> $tag {self.generate-tag-blurb($db, $tag, 4)});
|
||||||
|
@ -325,7 +276,7 @@ method generate-tags-page($db, @tags) {
|
||||||
method generate-tag-page($db, $tag) {
|
method generate-tag-page($db, $tag) {
|
||||||
my $head = generate-head($db.meta);
|
my $head = generate-head($db.meta);
|
||||||
my $body = body [
|
my $body = body [
|
||||||
self.site-header: $db.meta;
|
site-header $db.meta;
|
||||||
self.generate-tag-blurb($db, $tag, 4);
|
self.generate-tag-blurb($db, $tag, 4);
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -337,7 +288,3 @@ method generate-tag-page($db, $tag) {
|
||||||
|
|
||||||
"<!doctype html>$html"
|
"<!doctype html>$html"
|
||||||
}
|
}
|
||||||
|
|
||||||
sub icon($icon) {
|
|
||||||
i(:class("bx bx-$icon"))
|
|
||||||
}
|
|
||||||
|
|
|
@ -40,3 +40,29 @@ sub generate-head(BlogMeta:D $meta, $title?, $description?) is export {
|
||||||
:href</resources/code.css>;
|
:href</resources/code.css>;
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub site-header(BlogMeta:D $meta) is export {
|
||||||
|
sub header-link($name, $path, $icon) {
|
||||||
|
a :href("$path"), [
|
||||||
|
icon $icon;
|
||||||
|
' ';
|
||||||
|
span $name;
|
||||||
|
]
|
||||||
|
}
|
||||||
|
header :class<site-header>, [
|
||||||
|
div :class<site-logo>, [
|
||||||
|
# TODO: Use a real image here
|
||||||
|
$meta.title
|
||||||
|
];
|
||||||
|
div :class<site-tagline>, [
|
||||||
|
$meta.tagline
|
||||||
|
];
|
||||||
|
div :class<header-links>, [
|
||||||
|
header-link 'Index', '/index.html', 'home';
|
||||||
|
header-link 'Archive', '/archive.html', 'archive';
|
||||||
|
header-link 'Tags', '/tags.html', 'purchase-tag-alt';
|
||||||
|
header-link 'About', '/about.html', 'info-circle';
|
||||||
|
header-link 'Feed', '/atom.xml', 'rss';
|
||||||
|
];
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
|
@ -3,6 +3,8 @@ unit module Render::Util;
|
||||||
|
|
||||||
use DB::Post;
|
use DB::Post;
|
||||||
|
|
||||||
|
use HTML::Functional;
|
||||||
|
|
||||||
sub opt($test, $item) is export {
|
sub opt($test, $item) is export {
|
||||||
if $test {
|
if $test {
|
||||||
$item
|
$item
|
||||||
|
@ -29,3 +31,7 @@ sub post-link(Int:D $id, Post:D $post --> Str:D) is export {
|
||||||
"/posts/by-id/$id.html"
|
"/posts/by-id/$id.html"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
sub icon($icon) is export {
|
||||||
|
i(:class("bx bx-$icon"))
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue