 
 (def category-group (om/factory CategoryGroup))
 
+(declare Root)
+
 (om/defui ^:once MainViewLink
   static css/CSS
   (local-rules [_] [[:.item {:background     "antiquewhite"

                    [:.active {:background "#ffce8c"}]])
  (include-children [_] [])

  Object
  (render [this]
    (let [{:ui/keys [main-view label component]} (om/props this)
          {:keys [item active]} (css/get-classnames MainViewLink)]
      (dom/a #js {:className (cond-> item
                               (= (-> (om/props component) :ui/main-view) main-view)
                               (str " " active))
                  :onClick   (pd #(om/transact! component `[(ui/set-main-view {:view ~main-view}) :ui/main-view]))}
        label))))

(def main-view-link (om/factory MainViewLink))

(om/defui ^:once Root
  static uc/InitialAppState

                      :outline         "none"
                      :text-decoration "none"}]

                    [:.video-chooser {:display "flex"}]

                    [:.menu-item {:background     "antiquewhite"
                                  :color          "#000"
                                  :cursor         "pointer"
                                  :flex           "1"
                                  :text-align     "center"
                                  :padding        "8px"
                                  :font-weight    "bold"
                                  :text-transform "uppercase"}]
                    [:.menu-item-active {:background "#ffce8c"}]])
  (include-children [_] [MainViewLink
                         QueuedVideo
                         CategoryGroup])
