(define-module (theme) #:use-module (haunt html) #:use-module (haunt site) #:use-module (haunt post) #:use-module (haunt builder blog) #:export (hwebs-theme flat-page-template)) (define hwebs-theme (theme #:name "hwebs" #:layout (lambda (site title body) `((doctype "html") (html (head (meta (@ (http-equiv "Content-Type") (content "text/html") (charset "utf-8"))) (meta (@ (name "viewport") (content "width=device-width, initial-scale=1.0"))) (link (@ (rel "stylesheet") (type "text/css") (href "/style.css"))) (title ,(string-append title " — " (site-title site)))) (body (header (span ,(assq-ref (site-default-metadata site) 'author)) (nav (ul (li (a (@ (href "/")) "Home")) (li (a (@ (href "/blog")) "Blog"))))) (main (article (h1 ,title) ,body)))))) #:post-template (lambda (post) ;; TODO fill in datetime correctly ;; TODO add ? (as hidden?) `((time ,(date->string*(post-date post))) ,(post-sxml post))) #:collection-template (lambda (site title posts prefix) (define (post-uri post) (string-append "/" (or prefix "") "/" (site-post-slug site post) ".html")) `((ul ,@(map (lambda (post) `(li (a (@ (href ,(post-uri post))) ,(post-ref post 'title) " — " ,(date->string* (post-date post))))) posts)))))) (define (flat-page-template site metadata body) ((theme-layout hwebs-theme) site (assq-ref metadata 'title) body))