    :stop-light {:paths [:slim_ban]}
    :settings-light {:paths [:slim_settings :slim_circle]}
    :none-light {:paths [:slim_circle]}
-   :repo {:paths [:repo]}})
+   :repo {:paths [:repo]}
+   :spinner {:paths [:turn :circle]}})
 
 (defn ico [ico-name]
   (let [template (get ico-templates ico-name)]

             #js {"__html" (apply str
                                  (for [path (:paths template)]
                                    (str "<path class='" (name path) "' fill='none' d='" (get ico-paths path) "'></path>")))}}]]))

;; TODO: why do we have ico and icon?
(def icon-shapes

              "Error: " display-message
              " If we can help, " (contact-us-inner controls-ch) "."]]]))))))

; (def spinner
;   [:svg {:viewBox "0 0 100 100"
;          :data-spinner true
;          :dangerouslySetInnerHTML
;          #js {"__html" "<path fill=\"#fff\" d=\"M50 0c-23.297 0-42.873 15.936-48.424 37.5-.049.191-.083.389-.083.595 0 1.315 1.066 2.381 2.381 2.381h20.16c.96 0 1.783-.572 2.159-1.391l.041-.083c4.157-8.968 13.231-15.192 23.766-15.192 14.465 0 26.19 11.726 26.19 26.19 0 14.465-11.726 26.191-26.19 26.191-10.535 0-19.609-6.225-23.766-15.191l-.041-.084c-.376-.82-1.199-1.393-2.16-1.393h-20.159c-1.315 0-2.381 1.066-2.381 2.381 0 .207.035.406.083.596 5.551 21.564 25.127 37.5 48.424 37.5 27.614 0 50-22.385 50-50 0-27.614-22.386-50-50-50z\"></path>
;                        <circle fill=\"#fff\" cx=\"50\" cy=\"50\" r=\"11.905\"></circle>"}}])

(defn normalize-html
  "Creates a valid html string given a (possibly) invalid html string."
