cl-scopes/frontend/cs-hx.lisp

25 lines
944 B
Common Lisp

;;;; cl-scopes/frontend/cs-hx - frontend (http response) definitions
;;;; for embedding HTML fragments in pages generated by the `cyberscopes` Hugo theme
;;;; with dynamic elements handled by `HTMX`.
(defpackage :scopes/frontend/cs-hx
(:use :common-lisp)
(:local-nicknames (:dom :scopes/web/dom)
(:message :scopes/core/message)
(:response :scopes/web/response)
(:shape :scopes/shape)
(:util :scopes/util))
(:import-from :scopes/web/dom #:div #:label)
(:export #:render-content #:response))
(in-package :scopes/frontend/cs-hx)
(defclass response (response:html-response) ())
(defmethod response:render-content ((resp response) msg)
;(dom:render (dom:dlist nil (shape:data msg))))
(dom:render
(div nil (util:loop-plist (shape:data msg) k v collect (view-field k v)))))
(defun view-field (label value)
(div nil (label nil label) ": " value))