 
 
 (defn textarea
+
+  "Textarea element. See http://getbootstrap.com/css/#textarea
+
+  Arguments:
+
+  [attrs] label placeholder cursor korks [opts]
+
+  attrs                 - (optional) attributes handed over to React (see https://github.com/r0man/sablono#html-attributes)
+  label                 - the label; a string or Hiccup/Sablono style template
+  placeholder           - placeholder text shown if there is no value
+  cursor, korks         - data to bind to
+  opts                  - see `html5-input`
+
+
+  Example:
+
+  (f/textarea \"Textarea\" \"A placeholder\" data [:some-text])
+  (f/textarea {:rows 8} \"Textarea\" \"A placeholder\" data [:some-text] :inline true)"
+
   [& args]
   (js/console.log (prn-str args))
   (let [[attrs [label placeholder cursor korks & opts]] (resolve-args :textarea {:class "form-control"} args)

          (error-label validation-error))))))

(defn radio                                                 ;; TODO: Extract common method for `radio` and `checkbox`.
  [& args]
  (let [[attrs [label cursor korks value & {:keys [valid? validation-error-fn inline]}]] (resolve-args :radio {} args)
        dom-id (gen-dom-id cursor korks)

      (seq contents)]]))

(defn form

  "A form. See http://getbootstrap.com/css/#forms

  Arguments:

  [attrs] element1 ... element2

  attrs - (optional) attributes handed over to React (see https://github.com/r0man/sablono#html-attributes)
  contents - (optional) the contained elements

  Examples:

  (form [:div \"Contents go here\"])
  (form {:style {:background-color \"red\"}} [:div \"Contents go here\"])"

  [& args]
  (let [[attrs & elems] (resolve-args :form
                                      {:on-submit #(.preventDefault %)
