                                         :value (:template data)
                                         :onChange #((:template-handler data) (.. % -target -value))})))))
 
+(defn github-issue-component [data owner]
+  (reify
+    om/IRender
+    (render [this]
+      (dom/div nil 
+               (dom/div #js {:className "form-group"}
+                        (dom/label nil "GitHub repository")
+                        (dom/input #js {:type "text"
+                                        :className "form-control"
+                                        :value (:value (:repo data))
+                                        :placeholder "your/repo"
+                                        :onChange #((:handler (:repo data)) (.. % -target -value))}))
+               (dom/div #js {:className "form-group"}
+                        (dom/label nil "Issue title")
+                        (dom/input #js {:type "text"
+                                        :className "form-control"
+                                        :value (:value (:title data))
+                                        :onChange #((:handler (:title data)) (.. % -target -value))}))
+               (dom/div #js {:className "form-group"}
+                        (dom/label nil "Issue body")
+                        (dom/textarea #js {:cols "40"
+                                           :className "form-control"
+                                           :value (:value (:body data))
+                                           :onChange #((:handler (:body data)) (.. % -target -value))}))))))
+
 (defn action-input-form [data owner]
   (reify
     om/IRender

                                  :defaultValue (name (:type data))
                                  :onChange #(callback (keyword (.. % -target -value)))}
                             (dom/option (option-element-map "email" (= :email (:type data)))  "Email")
                             (dom/option (option-element-map "noop" (= :noop (:type data))) "Noop")))))))

(defn user-email-component [data owner]
  (reify

                            :action-type 
                            {:type (:type state)
                             :handler #(om/set-state! owner :type %)}

                            :github-issue
                            {:repo {:value (:gh-repo state) 
                                    :handler #(om/set-state! owner :gh-repo %)}
                             :title {:value (:gh-issue-title state) 
                                     :handler #(om/set-state! owner :gh-issue-title %)}
                             :body {:value (:gh-issue-body state)
                                    :handler #(om/set-state! owner :gh-issue-body %)}}
                            
                            :email
                            {:template (:email-template state)
