about summary refs log tree commit diff stats
path: root/internal/builder/post.templ
diff options
context:
space:
mode:
Diffstat (limited to 'internal/builder/post.templ')
-rw-r--r--internal/builder/post.templ50
1 files changed, 50 insertions, 0 deletions
diff --git a/internal/builder/post.templ b/internal/builder/post.templ
new file mode 100644
index 0000000..740c5aa
--- /dev/null
+++ b/internal/builder/post.templ
@@ -0,0 +1,50 @@
+package builder
+
+import (
+	"time"
+	"website/internal/config"
+)
+
+func Unsafe(html string) templ.Component {
+	return templ.ComponentFunc(func(ctx context.Context, w io.Writer) (err error) {
+		_, err = io.WriteString(w, html)
+		return
+	})
+}
+
+templ postDate(d time.Time) {
+	<time class="dt-published" datetime={ d.UTC().Format(time.RFC3339) }>
+		{ d.Format("2006-01-02") }
+	</time>
+}
+
+templ postPage(config config.Config, post Post) {
+	@page(config, PageSettings{
+		Title: post.Title,
+		TitleAttrs: templ.Attributes{
+			"class": "p-author h-card",
+			"rel":   "author",
+		},
+		Path: post.URL,
+	}) {
+		<article class="h-entry">
+			<h1 class="p-name">{ post.Title }</h1>
+			<p>
+				@postDate(post.Date)
+			</p>
+			<div class="e-content">
+				@Unsafe(post.Content)
+			</div>
+			<div class="tags">
+				Tags:
+				<ul class="p-categories tags">
+					for _, tag := range post.Taxonomies.Tags {
+						<li>
+							@tagLink(tag, templ.Attributes{"class": "p-category"})
+						</li>
+					}
+				</ul>
+			</div>
+		</article>
+	}
+}