diff --git a/src/app.lisp b/src/app.lisp index 2a98582..27e1ca4 100644 --- a/src/app.lisp +++ b/src/app.lisp @@ -18,8 +18,8 @@ (defmethod jg:not-found ((app jg:app)) (view:render (cmp:not-found-page) :status :not-found - :title "404 Not Found" - :description "お探しのページは見つかりませんでした。")) + :metadata '(:title "404 Not Found" + :description "お探しのページは見つかりませんでした。"))) (defun start () (jg:start *app*)) diff --git a/src/components/global/document.lisp b/src/components/global/document.lisp index d899cef..8efb0c8 100644 --- a/src/components/global/document.lisp +++ b/src/components/global/document.lisp @@ -4,9 +4,23 @@ (:export #:document)) (in-package #:hp/components/global/document) -(pi:define-element document (metadata) +(pi:define-element document (title description) (pi:h (html :lang "ja" - metadata - (body :hx-ext "head-support" - pi:children)))) + (head + (meta :charset "UTF-8") + (script :src "/scripts/htmx.js") + (script :src "/scripts/htmx-ext/head-support.js") + (script :src "/scripts/alpine.js" :defer t) + (link :rel "stylesheet" :type "text/css" :href "/styles/ress.css") + (link :rel "stylesheet" :type "text/css" :href "/styles/global.css") + (link :rel "preconnect" :href "https://fonts.googleapis.com") + (link :rel "preconnect" :href "https://fonts.gstatic.com" :crossorigin t) + (link + :rel "stylesheet" + :href "https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&display=swap") + (title (format nil "~@[~a - ~]skyizwhite.dev" title)) + (meta + :name "description" + :content (or description "pakuの個人サイト"))) + pi:children))) diff --git a/src/components/global/layout.lisp b/src/components/global/layout.lisp index 908468a..4d3caa6 100644 --- a/src/components/global/layout.lisp +++ b/src/components/global/layout.lisp @@ -6,4 +6,5 @@ (pi:define-element layout () (pi:h - (main pi:children))) + (body :hx-ext "head-support" + (main pi:children)))) diff --git a/src/components/global/metadata.lisp b/src/components/global/metadata.lisp deleted file mode 100644 index 3c3b9ae..0000000 --- a/src/components/global/metadata.lisp +++ /dev/null @@ -1,24 +0,0 @@ -(defpackage #:hp/components/global/metadata - (:use #:cl) - (:local-nicknames (#:pi #:piccolo)) - (:export #:metadata)) -(in-package #:hp/components/global/metadata) - -(pi:define-element metadata (title description) - (pi:h - (head - (meta :charset "UTF-8") - (script :src "/scripts/htmx.js") - (script :src "/scripts/htmx-ext/head-support.js") - (script :src "/scripts/alpine.js" :defer t) - (link :rel "stylesheet" :type "text/css" :href "/styles/ress.css") - (link :rel "stylesheet" :type "text/css" :href "/styles/global.css") - (link :rel "preconnect" :href "https://fonts.googleapis.com") - (link :rel "preconnect" :href "https://fonts.gstatic.com" :crossorigin t) - (link - :rel "stylesheet" - :href "https://fonts.googleapis.com/css2?family=Noto+Sans+JP:wght@400;700&display=swap") - (title (format nil "~@[~a - ~]skyizwhite.dev" title)) - (meta - :name "description" - :content (or description "pakuの個人サイト"))))) diff --git a/src/routes/about.lisp b/src/routes/about.lisp index a30d368..e159045 100644 --- a/src/routes/about.lisp +++ b/src/routes/about.lisp @@ -5,6 +5,10 @@ (:export #:on-get)) (in-package #:hp/routes/about) +(defparameter *metadata* + '(:title "about" + :description "pakuの自己紹介")) + (pi:define-element page () (pi:h (section @@ -12,6 +16,4 @@ (defun on-get (params) (declare (ignore params)) - (view:render (page) - :title "about" - :description "pakuの自己紹介")) + (view:render (page) :metadata *metadata*)) diff --git a/src/view.lisp b/src/view.lisp index 9a578cc..2cfc1cd 100644 --- a/src/view.lisp +++ b/src/view.lisp @@ -6,14 +6,9 @@ (:export #:render)) (in-package #:hp/view) -(defun render (page &key status title description) +(defun render (page &key metadata status) (jg:with-html-response (and status (jg:set-response-status status)) (pi:elem-str - (let ((md (cmp:metadata :title title :description description)) - (body (cmp:layout page))) - (pi:h - (if (jg:get-request-header "HX-Boosted") - (<> md body) - (cmp:document :metadata md - body))))))) + (cmp:document metadata + (cmp:layout page)))))