               [rc/line]
               [settings-box
                [[rc/h-box
-                 :align    :center
-                 :gap      horizontal-gap
+                 :align :center
+                 :gap horizontal-gap
                  :children [[rc/label :label "Ignore epochs for:"]
                             [rc/button
                              :class "bm-muted-button app-db-panel-button"
-                             :style {:width  common/gs-81s}
+                             :style {:width common/gs-81s}
                              :label [rc/v-box
                                      :align :center
                                      :children ["+ event-id"]]
                              :on-click #(rf/dispatch [:settings/add-ignored-event])]]]
                 [rc/v-box
-                 :width      comp-section-width
-                 :gap        vertical-gap
-                 :children   (for [item @(rf/subscribe [:settings/ignored-events])
-                                   :let [id (:id item)]]
-                               ^{:key id}
-                               [closeable-text-box
-                                :model     (:event-str item)
-                                :width     "212px"
-                                :on-close  #(rf/dispatch [:settings/remove-ignored-event id])
-                                :on-change #(rf/dispatch [:settings/update-ignored-event id %])])]]
+                 :width comp-section-width
+                 :gap vertical-gap
+                 :children (for [item @(rf/subscribe [:settings/ignored-events])
+                                 :let [id (:id item)]]
+                             ^{:key id}
+                             [closeable-text-box
+                              :model (:event-str item)
+                              :width "212px"
+                              :on-close #(rf/dispatch [:settings/remove-ignored-event id])
+                              :on-change #(rf/dispatch [:settings/update-ignored-event id %])])]]
                [[:p "All trace associated with these events will be ignored."]
                 [:p "Useful if you want to ignore a periodic background polling event."]]
                settings-box-131]

(def settings-styles
  [:#--re-frame-10x--
   [:.settings
    {:background-color common/white-background-color}]
   ])


(defn closeable-text-box
  [& {:keys [model width on-close on-change]}]
  [rc/h-box
   :children [[rc/input-text
               :width     width
               :style     {:width   width ;; TODO: Not needed in standard re-com but caused by :all unset
                           :height  "25px"
                           :padding (css-join "0px" common/gs-5s)}
               :model     model
               :change-on-blur? false
               :on-change on-change]
              [rc/close-button
               :div-size    25
               :font-size   25
               :top-offset  -4
               :left-offset 10
               :on-click   on-close]]])

(defn explanation-text [children]
  [rc/v-box
   :width    instruction--section-width
   :gap      common/gs-19s
   :children children])

(defn settings-box
  "settings and explanation are both children of re-com boxes"
  [settings explanation min-height]
  [rc/h-box
   :gap        common/gs-19s
   :min-height min-height
   :padding    settings-box-padding
   :align      :center
   :children   [[rc/v-box
                 :width      comp-section-width
                 :gap        vertical-gap
                 ;:align-self :center
                 :children   settings]
                [explanation-text explanation]]])

(defn render []
  [rc/v-box
   :style    {:margin-left      common/gs-12s ;; A bit of a hack, 19px already provided by parent, add 12 to get to 31 as requires by spec
              :margin-right     common/gs-19s}
   :children [(let [num-epochs @(rf/subscribe [:epochs/number-of-matches])
                    num-traces @(rf/subscribe [:traces/number-of-traces])
                    epochs-to-retain (rf/subscribe [:settings/number-of-retained-epochs])]

                [settings-box
                 [[rc/h-box
                   :align    :center
                   :gap      horizontal-gap
                   :children [[rc/label :label "Retain last"]
                              [rc/input-text
                               :width     common/gs-31s
                               :style     {:width      "35px" ;; TODO: Not needed in standard re-com but caused by :all unset
                                           :height     "25px"
                                           :padding    (css-join "0px" common/gs-5s)}
                               :model     epochs-to-retain
                               :change-on-blur? true
                               :on-change #(rf/dispatch [:settings/set-number-of-retained-epochs %])]
                              [rc/label :label "epochs"]

              [settings-box
               [[rc/h-box
                 :align :center
                 :gap horizontal-gap
                 :children [[rc/label :label "Filter out trace for views in:"]
                            [rc/button
                             :class "bm-muted-button app-db-panel-button"
                             :style {:width "100px"}
                             :label [rc/v-box
                                     :align :center
                                     :children ["+ namespace"]]
                             :on-click #(rf/dispatch [:settings/add-filtered-view-trace])]]]
                [rc/v-box
                 :width comp-section-width
                 :gap vertical-gap
                 :children (for [item @(rf/subscribe [:settings/filtered-view-trace])
                                 :let [id (:id item)]]
                             ^{:key id}
                             [closeable-text-box
                              :model (:ns-str item)
                              :width "343px"
                              :on-close #(rf/dispatch [:settings/remove-filtered-view-trace id])
                              :on-change #(rf/dispatch [:settings/update-filtered-view-trace id %])])]]
               [[:p "Sometimes you want to focus on your own views, and the trace associated with library views is just noise."]
                [:p "Nominate one or more namespaces."]]
               settings-box-131]
