;; SX docs app — declarative page definitions
;; These replace the GET route handlers in routes.py

;; ---------------------------------------------------------------------------
;; Home page
;; ---------------------------------------------------------------------------

(defpage home
  :path "/"
  :auth :public
  :layout :sx
  :content (home-content))

;; ---------------------------------------------------------------------------
;; Docs section
;; ---------------------------------------------------------------------------

(defpage docs-index
  :path "/docs/"
  :auth :public
  :layout (:sx-section
    :section "Docs"
    :sub-label "Docs"
    :sub-href "/docs/introduction"
    :sub-nav (docs-nav "Introduction")
    :selected "Introduction")
  :content (docs-content "introduction"))

(defpage docs-page
  :path "/docs/<slug>"
  :auth :public
  :layout (:sx-section
    :section "Docs"
    :sub-label "Docs"
    :sub-href "/docs/introduction"
    :sub-nav (docs-nav (find-current DOCS_NAV slug))
    :selected (or (find-current DOCS_NAV slug) ""))
  :content (docs-content slug))

;; ---------------------------------------------------------------------------
;; Reference section
;; ---------------------------------------------------------------------------

(defpage reference-index
  :path "/reference/"
  :auth :public
  :layout (:sx-section
    :section "Reference"
    :sub-label "Reference"
    :sub-href "/reference/"
    :sub-nav (reference-nav "")
    :selected "")
  :content (reference-index-content))

(defpage reference-page
  :path "/reference/<slug>"
  :auth :public
  :layout (:sx-section
    :section "Reference"
    :sub-label "Reference"
    :sub-href "/reference/"
    :sub-nav (reference-nav (find-current REFERENCE_NAV slug))
    :selected (or (find-current REFERENCE_NAV slug) ""))
  :content (reference-content slug))

(defpage reference-attr-detail
  :path "/reference/attributes/<slug>"
  :auth :public
  :layout (:sx-section
    :section "Reference"
    :sub-label "Reference"
    :sub-href "/reference/"
    :sub-nav (reference-nav "Attributes")
    :selected "Attributes")
  :content (reference-attr-detail slug))

;; ---------------------------------------------------------------------------
;; Protocols section
;; ---------------------------------------------------------------------------

(defpage protocols-index
  :path "/protocols/"
  :auth :public
  :layout (:sx-section
    :section "Protocols"
    :sub-label "Protocols"
    :sub-href "/protocols/wire-format"
    :sub-nav (protocols-nav "Wire Format")
    :selected "Wire Format")
  :content (protocol-content "wire-format"))

(defpage protocol-page
  :path "/protocols/<slug>"
  :auth :public
  :layout (:sx-section
    :section "Protocols"
    :sub-label "Protocols"
    :sub-href "/protocols/wire-format"
    :sub-nav (protocols-nav (find-current PROTOCOLS_NAV slug))
    :selected (or (find-current PROTOCOLS_NAV slug) ""))
  :content (protocol-content slug))

;; ---------------------------------------------------------------------------
;; Examples section
;; ---------------------------------------------------------------------------

(defpage examples-index
  :path "/examples/"
  :auth :public
  :layout (:sx-section
    :section "Examples"
    :sub-label "Examples"
    :sub-href "/examples/click-to-load"
    :sub-nav (examples-nav "Click to Load")
    :selected "Click to Load")
  :content (examples-content "click-to-load"))

(defpage examples-page
  :path "/examples/<slug>"
  :auth :public
  :layout (:sx-section
    :section "Examples"
    :sub-label "Examples"
    :sub-href "/examples/click-to-load"
    :sub-nav (examples-nav (find-current EXAMPLES_NAV slug))
    :selected (or (find-current EXAMPLES_NAV slug) ""))
  :content (examples-content slug))

;; ---------------------------------------------------------------------------
;; Essays section
;; ---------------------------------------------------------------------------

(defpage essays-index
  :path "/essays/"
  :auth :public
  :layout (:sx-section
    :section "Essays"
    :sub-label "Essays"
    :sub-href "/essays/sx-sucks"
    :sub-nav (essays-nav "sx sucks")
    :selected "sx sucks")
  :content (essay-content "sx-sucks"))

(defpage essay-page
  :path "/essays/<slug>"
  :auth :public
  :layout (:sx-section
    :section "Essays"
    :sub-label "Essays"
    :sub-href "/essays/sx-sucks"
    :sub-nav (essays-nav (find-current ESSAYS_NAV slug))
    :selected (or (find-current ESSAYS_NAV slug) ""))
  :content (essay-content slug))
