2024-10-03 14:48:42 +09:00
|
|
|
(defpackage #:hp/renderer
|
2024-06-15 21:59:15 +09:00
|
|
|
(:use #:cl
|
|
|
|
#:hsx)
|
2024-11-15 09:51:29 +09:00
|
|
|
(:local-nicknames (#:jg #:jingle))
|
|
|
|
(:local-nicknames (#:env #:hp/env)))
|
2024-10-03 14:48:42 +09:00
|
|
|
(in-package #:hp/renderer)
|
2024-06-01 22:21:15 +09:00
|
|
|
|
2024-06-15 21:59:15 +09:00
|
|
|
(defcomp document (&key title description children)
|
|
|
|
(hsx
|
|
|
|
(html :lang "ja"
|
|
|
|
(head
|
|
|
|
(meta :charset "UTF-8")
|
|
|
|
(meta :name "viewport" :content "width=device-width, initial-scale=1")
|
2024-06-20 10:45:30 +09:00
|
|
|
(link :rel "icon" :href "/favicon.ico")
|
|
|
|
(link :rel "apple-touch-icon" :href "/favicon.ico")
|
2024-06-16 14:13:16 +09:00
|
|
|
(link :rel "stylesheet" :href "/dist.css")
|
2024-06-18 10:14:51 +09:00
|
|
|
(script :src "https://cdn.jsdelivr.net/npm/htmx.org@2.0.0/dist/htmx.min.js")
|
|
|
|
(script :src "https://cdn.jsdelivr.net/npm/htmx-ext-head-support@2.0.0/head-support.min.js")
|
2024-06-15 21:59:15 +09:00
|
|
|
(script :src "https://cdn.jsdelivr.net/npm/alpinejs@3.14.0/dist/cdn.min.js" :defer t)
|
|
|
|
(title (format nil "~@[~a - ~]skyizwhite.dev" title))
|
|
|
|
(meta
|
|
|
|
:name "description"
|
2024-10-03 09:31:43 +09:00
|
|
|
:content (or description "pakuの個人サイト")))
|
|
|
|
(body :hx-ext "head-support"
|
2024-10-03 15:01:40 +09:00
|
|
|
(main :class "container mx-auto"
|
|
|
|
children)))))
|
2024-06-15 21:59:15 +09:00
|
|
|
|
2024-10-02 23:36:30 +09:00
|
|
|
(defmethod jg:process-response ((app jg:app) result)
|
|
|
|
(jg:set-response-header :content-type "text/html; charset=utf-8")
|
2024-11-15 09:51:29 +09:00
|
|
|
(when (env:dev-mode-p)
|
|
|
|
(jg:set-response-header :cache-control "no-store"))
|
2024-10-02 23:36:30 +09:00
|
|
|
(call-next-method app
|
|
|
|
(hsx:render-to-string
|
|
|
|
(if (listp result)
|
|
|
|
(destructuring-bind (body metadata) result
|
|
|
|
(document metadata body))
|
|
|
|
(document result)))))
|