                        (dissoc :size :state :kind))]
     (dom/input (clj->js attrs))))
 
-
-(defn ui-icon-bar
-  "Render an icon bar using a vector of icons (each a map of attributes).
-   Can optionally render vertically and/or shifting.
-   Normal HTML/React attributes can be included, and should be a cljs map (not a js object).
-
-   `:orientation` :vertical or :horizontal (default)
-   `:shifting` :true or :false (default)
-
-   all parameters are optional
-   "
-  [{:keys [className orientation shifting] :as props :or {className ""}} & children]
-  (let [user-classes    (get props :className "")
-        top-level-class (cond-> (str user-classes " c-iconbar")
-                          (= orientation :vertical) (str " c-iconbar--rail")
-                          (= shifting :true) (str " c-iconbar--shifting"))]
-    (dom/div #js {}
-      (apply dom/nav #js {:className top-level-class} children))))
-
-
 (defn ui-icon
   "Render an icon. Normal HTML/React attributes can be included, and should be a cljs map (not a js object).
 

(def ui-notification
  "Render a notification. Normal HTML/React attributes can be included, and should be a cljs map (not a js object).

  `:type` :none (default), :success, :warning, :error, :informative
  `:size` :normal (default), :wide

  You should include two children of this node:

  (ui-notification {}
    (ui-notification-title {} title-nodes)
    (ui-notification-body {} body-nodes))

  The `title-nodes` can be any inline DOM (or just a string), as can body-nodes."
  (om/factory Notification))


(defn ui-progress
  "Render a progress element. Props is a normal clj(s) map with React/HTML attributes plus:

  `:className` - additional class stylings to apply to the progress element
  `:id` - Name of the progress control
  "
  [{:keys [id style] :or {id ""} :as attrs}]
  (let [user-classes (get attrs :className "")
        classes      (cond-> (str user-classes " c-progress "))
        attrs        (cond-> attrs
                       :always (assoc :className classes)
                       :always (assoc :id (name id)))]
    (dom/progress (clj->js attrs))))


(defn ui-radio
  "Render a radio (not the label). Props is a normal clj(s) map with React/HTML attributes plus:

  [{:keys [className color] :as props :or {className ""}}]
  (let [legal-colors #{:primary :accent}
        user-classes (get props :className "")
        classes      (cond-> (str user-classes " c-loader")
                       (contains? legal-colors color) (str " c-loader--" (name color)))
        props        (-> props
                       (assoc :className classes)
                       (dissoc :color))]
    (dom/div (clj->js props))))

(defn ui-message
  "Render the given children within a message. Normal HTML/React attributes can be included, and should be a cljs map (not a js object).

  `:color` :none(default), :alert, :success, :warning, :informative
  "
  [{:keys [className color] :as props :or {className ""}} & children]
  (let [legal-colors #{:informative :alert :success :warning}
        classes      (cond-> (str className " c-message")
                       (contains? legal-colors color) (str "--" (name color)))
        props        (-> props
