;;;; views/components.lisp -- reusable components (in-package :dnd) ;;; LIST DATA (defrender :list ((data list) (class "listview") (item-class "listitem")) "A catch all for rendering lists of renderable data items as unordered lists. CLASS is the lass string for the containing list. ITEM-CLASS is the class string for the contained list items." (with-html (:ol :class class (dolist (item data) (:li :class item-class (render :list-item item)))))) (defrender :horiz-list ((data list) (class "hlistview") (item-class "listitem")) (with-html (:ol :class class (dolist (item data) (:li :calss item-class (render :list-item item)))))) ;;;; PAGE ELEMENTS (defun navbar () (with-html (:nav :class "navbar" :aria-label "Navigation" (:div :class "logo" :aria-label "DND logo" "DND") (:ul :class "nav-links" :aria-label "Nav links" (:li (:a :href "/hero" :aria-label "Hero profile" "🧝")) (:li (:a :href "/inventory" :aria-label "Inventory" "🎒")) (:li (:a :href "/quests" :aria-label "Quests" "📜")) (:li (:a :href "/tavern" :aria-label "Tavern" "🍺"))))))