;; Market layout defcomps — root header from env free variables,
;; market-specific headers passed as &key params.

;; --- Browse layout: root + post header + market header ---

(defcomp ~market-browse-layout-full (&key post-header market-header)
  (<> (~root-header :cart-mini cart-mini :blog-url blog-url :site-title site-title
                     :app-label app-label :nav-tree nav-tree :auth-menu auth-menu
                     :nav-panel nav-panel :settings-url settings-url :is-admin is-admin)
    (~header-child-sx :inner (<> post-header market-header))))

(defcomp ~market-browse-layout-oob (&key oob-header post-header-oob clear-oob)
  (<> oob-header post-header-oob clear-oob))

;; --- Product layout: root + post + market + product ---

(defcomp ~market-product-layout-full (&key post-header market-header product-header)
  (<> (~root-header :cart-mini cart-mini :blog-url blog-url :site-title site-title
                     :app-label app-label :nav-tree nav-tree :auth-menu auth-menu
                     :nav-panel nav-panel :settings-url settings-url :is-admin is-admin)
    (~header-child-sx :inner (<> post-header market-header product-header))))

;; --- Product admin layout: root + post + market + product + admin ---

(defcomp ~market-product-admin-layout-full (&key post-header market-header product-header admin-header)
  (<> (~root-header :cart-mini cart-mini :blog-url blog-url :site-title site-title
                     :app-label app-label :nav-tree nav-tree :auth-menu auth-menu
                     :nav-panel nav-panel :settings-url settings-url :is-admin is-admin)
    (~header-child-sx :inner (<> post-header market-header product-header admin-header))))

;; --- Market admin layout: root + post + market + market-admin ---

(defcomp ~market-admin-layout-full (&key post-header market-header admin-header)
  (<> (~root-header :cart-mini cart-mini :blog-url blog-url :site-title site-title
                     :app-label app-label :nav-tree nav-tree :auth-menu auth-menu
                     :nav-panel nav-panel :settings-url settings-url :is-admin is-admin)
    (~header-child-sx :inner (<> post-header market-header admin-header))))

(defcomp ~market-admin-layout-oob (&key market-header-oob admin-oob-header clear-oob)
  (<> market-header-oob admin-oob-header clear-oob))

;; --- OOB wrappers ---

(defcomp ~market-oob-wrap (&key parts)
  (<> parts))

;; --- Content wrappers ---

(defcomp ~market-content-padded (&key content)
  (<> content (div :class "pb-8")))
