            :header [:div {:style {:marginLeft -6}} "Status"] :starting-width 60
            :content-renderer (fn [data] [StatusCell {:data data}])}
           {:as-text :name :sort-by :text
-           :header "Workspace" :starting-width 450
+           :header "Workspace" :starting-width  (* max-workspace-name-length 10)
            :content-renderer (fn [data] [WorkspaceCell {:data data}])}
-          {:header "Description" :starting-width 400
+          {:header "Description" :starting-width (* max-description-length 10)
            :content-renderer (fn [description]
                                [:div {:style {:padding "1.1em 0 0 14px"
                                               :fontStyle (when-not description "oblique")}}

      [:div {:style {:padding "1em 0 0 1em" :fontWeight 600}}
       (get-in props [:data :name])]])})


(react/defc WorkspaceTable
  {:render
   (fn [{:keys [state props]}]
     (let [border-style (str "1px solid " (:line-gray style/colors))]
       [table/Table
        {:empty-message "No workspaces to display."
         :cell-padding-left nil

         :->row (fn [ws]
                  [{:status (:status ws)
                    :onClick #((:onWorkspaceSelected props) (ws "workspace"))}
                   {:name (get-workspace-name-string ws)
                    :status (:status ws)
                    :onClick #((:onWorkspaceSelected props) (ws "workspace"))}
                   (get-in ws ["workspace" "attributes" "description"])
