              the columns' :cell-fns to generate each cell.
   :key-fn  - A function of a row object which returns a value to use as the React
              key for the row.
-  :striped - (optional) Adds a .striped class to the table."
+  :striped? - (optional) Adds a .striped class to the table."
   [{:keys [columns rows key-fn striped? ]} owner]
   {:pre (fn? key-fn)}
   (reify

    (render [_]
      (component
        (html
         [:table
          [:thead {:class (when striped? "striped")}
           [:tr
            (for [[idx {:keys [header type]}] (map-indexed vector columns)]
              ;; We never reorder columns in a table, so the index works as a


  (defn table-parent [data owner]
    (om/component
        (om/build table {:key-fn :name
                         :rows [{:name "John"
                                 :birthday (js/Date. "1940-10-09")}
                                {:name "Paul"
                                 :birthday (js/Date. "1942-06-18")}
