Add ~article component

This commit is contained in:
Akira Tempaku 2025-05-18 18:27:58 +09:00
parent 631d979faf
commit c90c89a74f
Signed by: paku
GPG key ID: 5B4E8402BCC50607
3 changed files with 36 additions and 31 deletions

View file

@ -0,0 +1,21 @@
(defpackage #:website/components/article
(:use #:cl
#:hsx)
(:import-from #:website/lib/time
#:datetime
#:jp-datetime)
(:export #:~article))
(in-package #:website/components/article)
(defcomp ~article (&key title content revised-at draft-p)
(hsx
(<>
(and draft-p (hsx (p :class "text-lg text-pink-500" "下書きモード")))
(article :class "prose max-w-none"
(h1 title)
(raw! content)
(p :class "text-right"
"(最終更新:"
(|time| :datetime (datetime revised-at)
(jp-datetime revised-at))
"")))))

View file

@ -1,13 +1,11 @@
(defpackage #:website/routes/about
(:use #:cl
#:hsx
#:jingle
#:access)
#:jingle)
(:import-from #:website/lib/cms
#:get-about)
(:import-from #:website/lib/time
#:datetime
#:jp-datetime)
(:import-from #:website/components/article
#:~article)
(:export #:handle-get))
(in-package #:website/routes/about)
@ -19,14 +17,8 @@
(with-request-params ((draft-key "draft-key" nil)) params
(setf (context :no-cache) draft-key)
(let ((about (get-about :query (list :draft-key draft-key))))
(hsx
(<>
(and draft-key (hsx (p :class "text-lg text-pink-500" "下書きモード")))
(article :class "prose max-w-none"
(h1 "About")
(raw! (getf about :content))
(p :class "text-right"
"(最終更新:"
(|time| :datetime (datetime (getf about :revised-at))
(jp-datetime (getf about :revised-at)))
"")))))))
(~article
:title "About"
:content (getf about :content)
:revised-at (getf about :revised-at)
:draft-p draft-key))))

View file

@ -4,10 +4,8 @@
#:jingle)
(:import-from #:website/lib/cms
#:get-works)
(:import-from #:website/lib/time
#:datetime
#:jp-datetime)
(:export #:handle-get))
(:import-from #:website/components/article
#:~article))
(in-package #:website/routes/works)
(defparameter *metadata*
@ -18,14 +16,8 @@
(with-request-params ((draft-key "draft-key" nil)) params
(setf (context :no-cache) draft-key)
(let ((works (get-works :query (list :draft-key draft-key))))
(hsx
(<>
(and draft-key (hsx (p :class "text-lg text-pink-500" "下書きモード")))
(article :class "prose max-w-none"
(h1 "Works")
(raw! (getf works :content))
(p :class "text-right"
"(最終更新:"
(|time| :datetime (datetime (getf works :revised-at))
(jp-datetime (getf works :revised-at)))
"")))))))
(~article
:title "Works"
:content (getf works :content)
:revised-at (getf works :revised-at)
:draft-p draft-key))))