Component names now reflect filesystem location using / as path separator and : as namespace separator for shared components: ~sx-header → ~layouts/header ~layout-app-body → ~shared:layout/app-body ~blog-admin-dashboard → ~admin/dashboard 209 files, 4,941 replacements across all services. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
51 lines
2.7 KiB
Plaintext
51 lines
2.7 KiB
Plaintext
;; Account-page fragment handler
|
|
;; returns: sx
|
|
;;
|
|
;; Renders tickets or bookings panel for the account dashboard.
|
|
;; slug=tickets → ticket list; slug=bookings → booking list.
|
|
|
|
(defhandler account-page (&key slug user_id)
|
|
(let ((uid (parse-int (or user_id "0"))))
|
|
(when (> uid 0)
|
|
(cond
|
|
(= slug "tickets")
|
|
(let ((tickets (service "calendar" "user-tickets" :user-id uid)))
|
|
(~fragments/frag-tickets-panel
|
|
:items (if (empty? tickets)
|
|
(~shared:misc/empty-state :message "No tickets yet."
|
|
:cls "text-sm text-stone-500")
|
|
(~fragments/frag-tickets-list
|
|
:items (<> (map (fn (t)
|
|
(~fragments/frag-ticket-item
|
|
:href (app-url "events"
|
|
(str "/tickets/" (get t "code") "/"))
|
|
:entry-name (get t "entry_name")
|
|
:date-str (format-date (get t "entry_start_at") "%d %b %Y, %H:%M")
|
|
:calendar-name (when (get t "calendar_name")
|
|
(span (str "\u00b7 " (get t "calendar_name"))))
|
|
:type-name (when (get t "ticket_type_name")
|
|
(span (str "\u00b7 " (get t "ticket_type_name"))))
|
|
:badge (~shared:controls/status-pill :status (or (get t "state") ""))))
|
|
tickets))))))
|
|
|
|
(= slug "bookings")
|
|
(let ((bookings (service "calendar" "user-bookings" :user-id uid)))
|
|
(~fragments/frag-bookings-panel
|
|
:items (if (empty? bookings)
|
|
(~shared:misc/empty-state :message "No bookings yet."
|
|
:cls "text-sm text-stone-500")
|
|
(~fragments/frag-bookings-list
|
|
:items (<> (map (fn (b)
|
|
(~fragments/frag-booking-item
|
|
:name (get b "name")
|
|
:date-str (str (format-date (get b "start_at") "%d %b %Y, %H:%M")
|
|
(if (get b "end_at")
|
|
(str " \u2013 " (format-date (get b "end_at") "%H:%M"))
|
|
""))
|
|
:calendar-name (when (get b "calendar_name")
|
|
(span (str "\u00b7 " (get b "calendar_name"))))
|
|
:cost-str (when (get b "cost")
|
|
(span (str "\u00b7 \u00a3" (get b "cost"))))
|
|
:badge (~shared:controls/status-pill :status (or (get b "state") ""))))
|
|
bookings))))))))))
|