diff options
Diffstat (limited to 'internal/builder/post.templ')
-rw-r--r-- | internal/builder/post.templ | 50 |
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> + } +} |