(defpackage #:website/routes/index
  (:use #:cl
        #:website/helper)
  (:import-from #:website/lib/cms
                #:get-about)
  (:export #:handle-get
           #:handle-head))
(in-package #:website/routes/index)

(defparameter *links*
  '(("Keyoxide"
     "https://keyoxide.org/f39d5b2c951d16732a5cd3528f0c1a22f26d7e62"
     "/img/icon/key.svg")
    ("GitHub"
     "https://github.com/skyizwhite"
     "/img/icon/github.svg")
    ("Forgejo"
     "https://code.skyizwhite.dev/paku"
     "/img/icon/forgejo.svg")
    ("Fediverse"
     "https://himagine.club/@skyizwhite"
     "/img/icon/discussion.svg")
    ("Status"
     "https://status.skyizwhite.dev"
     "/img/icon/server.svg")))

(defun handle-get (params)
  (declare (ignore params))
  (let ((about (get-about :query '(:fields "avatar"))))
    (hsx
     (div :class "flex flex-col items-center justify-center h-full"
       (img 
         :src (getf (getf about :avatar) :url)
         :alt "avatar" :class "size-40 rounded-xl shadow-sm avatar")
       (div :class "flex flex-col items-center gap-2 py-6"
         (h1 :class "font-bold text-2xl text-center"
           "Akira Tempaku")
         (p :class "text-xl"
           "Web developer"))
       (div :class "flex flex-col gap-2 items-left"
         (loop
           :for (name url icon) :in *links*
           :collect (hsx (a 
                           :href url 
                           :target "_blank" 
                           :class "flex items-center gap-2 text-lg hover:text-pink-500"
                           :rel "me"
                           (img :src icon :alt name :class "size-4 mt-1")
                           (span name)))))))))

; for health check
(defun handle-head (params)
  (declare (ignore params)))