                           "Me"])
                     filtered-workspaces)})])]))})
 
+(react/defc EntitiesList
+  {:render
+   (fn [{:keys [props]}]
+     [:div {:style {:padding "0 4em"}}
+      (if (zero? (count (:entities props)))
+        [:div {:style {:textAlign "center" :backgroundColor (:background-gray style/colors)
+                       :padding "1em 0" :borderRadius 8}}
+         "No entities to display."]
+        [table/Table
+         (let [cell-style {:flexBasis "8ex" :flexGrow 1 :whiteSpace "nowrap" :overflow "hidden"
+                           :borderLeft (str "1px solid " (:line-gray style/colors))}
+               header-label (fn [text & [padding]]
+                              [:span {:style {:paddingLeft (or padding "1em")}}
+                               [:span {:style {:fontSize "90%"}} text]])]
+           {:columns [{:label (header-label "Entity Type")
+                       :style (merge cell-style {:borderLeft "none"})}
+                      {:label (header-label "Entity Name")
+                       :style cell-style
+                       :header-style {:borderLeft "none"}}
+                      {:label (header-label "Attributes")
+                       :style (merge cell-style {:flexBasis "30ex"})
+                       :header-style {:borderLeft "none"}}]
+            :data (map (fn [m]
+                         [(m "entityType") ;;properly map to entities after
+                          (m "name")
+                          (m "attributes")])
+                       (:entities props))})])])})
 
 (react/defc FilterButtons
   (let [Button

                     (swap! state assoc
                            :error {:message (.-statusText xhr)})))
        :canned-response {:responseText (utils/->json-string (create-mock-workspaces))
                          :status 200 :delay-ms (rand-int 2000)}}))})

            :onClick #(swap! state assoc :overlay-shown? true)}]]
         [:span {:style {:fontSize "180%"}} (if selected-ws-name selected-ws-name "Workspaces")]]
        (cond
          selected-ws-name (render-selected-workspace selected-ws (:entities @state))
          (:workspaces-loaded? @state) (render-workspaces-list state nav-context)
          (:error @state) (style/create-server-error-message (get-in @state [:error :message]))
          :else [comps/Spinner {:text "Loading workspaces..."}])]))
