        flatten
        set))
 
+(defn -camel-case-attrs [props]
+  (reduce-kv
+    (fn [m k v]
+      (let [k (case k
+                :for :htmlFor
+                (-camel-case k))]
+        (assoc m k v)))
+    {}
+    props))
+
 (defn -styled [cls static vars attrs create-element]
   (let [clsn (str cls "-" (gensym))
         static (if ^boolean goog.DEBUG

            meta-attrs (-meta-attrs vars)
            className (str (-compile-class-name props) var-class)
            props (-> (apply dissoc props (concat attrs meta-attrs [:class :class-name :className]))
                      (assoc :className className))]
        (create-element props children)))))

        anim-name))))

;; ==============================
(defn -camel-case [k]
  (if (or (keyword? k)
          (string? k)
          (symbol? k))
    (let [[first-word & words] (cstr/split (name k) #"-")]
      (if (or (empty? words)
              (= "aria" first-word)
              (= "data" first-word))
        k
        (-> (map cstr/capitalize words)
            (conj first-word)
            cstr/join
            keyword)))
    k))

(defn -compile-class-name [props]
  (let [className
        (-> props
