   (:require-macros [day8.re-frame.trace.utils.re-com :refer [handler-fn]])
   (:require [reagent.ratom :as reagent :refer [RAtom Reaction RCursor Track Wrapper]]
             [clojure.string :as string]))
+
+(defn px
+  "takes a number (and optional :negative keyword to indicate a negative value) and returns that number as a string with 'px' at the end"
+  [val & negative]
+  (str (if negative (- val) val) "px"))
 
 (defn deref-or-value-peek
   "Takes a value or an atom

                    :on-click (handler-fn (callback-fn))}
                   label])]]))

(defn css-join [& args]
  "Creates a single string from all passed args, separated by spaces (all args are coerced to strings)
  Very simple, but handy

                         :style       (merge
                                        (flex-child-style "none")
                                        {:height        height
                                         :box-sizing    "border-box" ;; TODO: Added to override the incorrect default of "content-box" somehow set up by :all unset
                                         :padding-right "12px"} ;; override for when icon exists
                                        style)
                         :placeholder placeholder
