[arvados] updated: 2.7.0-6479-g7bf1aa8634

git repository hosting git at public.arvados.org
Fri Apr 26 13:24:29 UTC 2024


Summary of changes:
 services/workbench2/package.json                   |   2 +-
 services/workbench2/src/common/custom-theme.ts     |   5 +-
 .../src/components/autocomplete/autocomplete.tsx   |   4 +-
 .../src/components/code-snippet/code-snippet.tsx   |   2 +-
 .../code-snippet/virtual-code-snippet.tsx          |   2 +-
 .../collection-panel-files.tsx                     |   6 +-
 .../copy-to-clipboard-snackbar.tsx                 |   2 +-
 .../src/components/data-explorer/data-explorer.tsx |  10 +-
 .../data-table-default-view.tsx                    |   4 +-
 .../src/components/data-table/data-table.tsx       |   2 +-
 .../details-attribute/details-attribute.tsx        |   2 +-
 .../components/dialog-actions/dialog-actions.tsx   |   2 +-
 .../src/components/file-tree/file-thumbnail.tsx    |   2 +-
 .../src/components/form-dialog/form-dialog.tsx     |  12 +-
 .../list-item-text-icon/list-item-text-icon.tsx    |   2 +-
 .../src/components/select-field/select-field.tsx   |   2 +-
 .../subprocess-filter/subprocess-filter.tsx        |   2 +-
 .../src/components/text-field/text-field.tsx       |   2 +-
 services/workbench2/src/components/tree/tree.tsx   |   6 +-
 .../src/components/tree/virtual-tree.tsx           |   6 +-
 .../advanced-tab-dialog/advanced-tab-dialog.tsx    |   6 +-
 .../advanced-tab-dialog/metadataTab.tsx            |   2 +-
 .../help-dialog.tsx                                |   2 +-
 .../views-components/data-explorer/renderers.tsx   |   6 +-
 .../details-panel/collection-details.tsx           |   6 +-
 .../details-panel/details-panel.tsx                |   4 +-
 .../details-panel/project-details.tsx              |   6 +-
 .../details-panel/workflow-details.tsx             |   4 +-
 .../dialog-create/dialog-collection-create.tsx     |   4 +-
 .../dialog-create/dialog-project-create.tsx        |   8 +-
 .../dialog-update/dialog-collection-update.tsx     |   4 +-
 .../dialog-update/dialog-project-update.tsx        |   8 +-
 .../groups-dialog/attributes-dialog.tsx            |   6 +-
 .../groups-dialog/member-attributes-dialog.tsx     |   6 +-
 .../src/views-components/login-form/login-form.tsx |   8 +-
 .../views-components/main-app-bar/help-menu.tsx    |   8 +-
 .../not-found-dialog/not-found-dialog.tsx          |   4 +-
 .../process-runtime-status.tsx                     |  12 +-
 .../repositories-sample-git-dialog.tsx             |   4 +-
 .../repository-attributes-dialog.tsx               |   6 +-
 .../resource-properties-form.tsx                   |   2 +-
 .../resource-properties-list.tsx                   |   4 +-
 .../search-bar/search-bar-advanced-view.tsx        |   6 +-
 .../search-bar/search-bar-autocomplete-view.tsx    |   6 +-
 .../search-bar/search-bar-basic-view.tsx           |   6 +-
 .../search-bar/search-bar-recent-queries.tsx       |   4 +-
 .../search-bar/search-bar-save-queries.tsx         |   6 +-
 .../search-bar/search-bar-view.tsx                 |   4 +-
 .../sharing-dialog/select-item.tsx                 |   4 +-
 .../sharing-invitation-form-component.tsx          |   2 +-
 .../sharing-management-form-component.tsx          |   2 +-
 .../sharing-public-access-form-component.tsx       |   2 +-
 .../side-panel-button/side-panel-button.tsx        |   2 +-
 .../src/views-components/snackbar/snackbar.tsx     |   2 +-
 .../ssh-keys-dialog/public-key-dialog.tsx          |   2 +-
 .../views-components/token-dialog/token-dialog.tsx |  10 +-
 .../user-dialog/attributes-dialog.tsx              |   6 +-
 .../virtual-machines-dialog/attributes-dialog.tsx  |   6 +-
 .../webdav-s3-dialog/webdav-s3-dialog.tsx          |   6 +-
 .../all-processes-panel/all-processes-panel.tsx    |   4 +-
 .../collection-content-address-panel.tsx           |   8 +-
 .../views/collection-panel/collection-panel.tsx    |  20 +-
 .../src/views/favorite-panel/favorite-panel.tsx    |   4 +-
 .../group-details-panel/group-details-panel.tsx    |   2 +-
 .../src/views/inactive-panel/inactive-panel.tsx    |   2 +-
 .../src/views/login-panel/login-panel.tsx          |   4 +-
 .../views/not-found-panel/not-found-panel-root.tsx |   6 +-
 .../src/views/process-panel/process-cmd-card.tsx   |  12 +-
 .../process-panel/process-details-attributes.tsx   |   4 +-
 .../views/process-panel/process-details-card.tsx   |  14 +-
 .../src/views/process-panel/process-io-card.tsx    |  16 +-
 .../src/views/process-panel/process-log-card.tsx   |   8 +-
 .../process-panel/process-log-code-snippet.tsx     |   4 +-
 .../src/views/process-panel/process-log-form.tsx   |   2 +-
 .../views/process-panel/process-resource-card.tsx  |   6 +-
 .../src/views/project-panel/project-panel.tsx      |   2 +-
 .../public-favorites-panel.tsx                     |   4 +-
 .../repositories-panel/repositories-panel.tsx      |   2 +-
 .../run-process-panel/run-process-first-step.tsx   |   4 +-
 .../run-process-panel/run-process-inputs-form.tsx  |   2 +-
 .../search-results-panel-view.tsx                  |   2 +-
 .../shared-with-me-panel/shared-with-me-panel.tsx  |   4 +-
 .../site-manager-panel/site-manager-panel-root.tsx |   8 +-
 .../src/views/ssh-key-panel/ssh-key-panel-root.tsx |   2 +-
 .../subprocess-panel/subprocess-panel-root.tsx     |   2 +-
 .../src/views/trash-panel/trash-panel.tsx          |   4 +-
 .../workbench2/src/views/user-panel/user-panel.tsx |   4 +-
 .../user-profile-panel/user-profile-panel-root.tsx |   6 +-
 .../virtual-machine-admin-panel.tsx                |   2 +-
 .../virtual-machine-user-panel.tsx                 |  12 +-
 .../views/workbench/workbench-loading-screen.tsx   |   2 +-
 .../workbench2/src/views/workbench/workbench.tsx   |  12 +-
 .../workflow-panel/registered-workflow-panel.tsx   |  20 +-
 .../workflow-panel/workflow-description-card.tsx   |   8 +-
 .../workflow-processes-panel-root.tsx              |   2 +-
 services/workbench2/yarn.lock                      | 405 +++++++++++----------
 96 files changed, 457 insertions(+), 441 deletions(-)

       via  7bf1aa863432d05b3384071a79594d5bda2b0639 (commit)
      from  cf28962e7237a7e4a1dd2ddaedcdeb7a2b8f0f92 (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.


commit 7bf1aa863432d05b3384071a79594d5bda2b0639
Author: Lisa Knox <lisaknox83 at gmail.com>
Date:   Fri Apr 26 09:24:21 2024 -0400

    21720: changed theme.sspacing.unit Arvados-DCO-1.1-Signed-off-by: Lisa Knox <lisa.knox at curii.com>

diff --git a/services/workbench2/package.json b/services/workbench2/package.json
index 9d628a450d..486b564e3c 100644
--- a/services/workbench2/package.json
+++ b/services/workbench2/package.json
@@ -11,7 +11,7 @@
     "@fortawesome/fontawesome-svg-core": "1.2.28",
     "@fortawesome/free-solid-svg-icons": "5.13.0",
     "@fortawesome/react-fontawesome": "0.1.9",
-    "@material-ui/core": "3.9.3",
+    "@material-ui/core": "^4.0.0",
     "@material-ui/icons": "3.0.1",
     "@types/debounce": "3.0.0",
     "@types/dompurify": "^3.0.3",
diff --git a/services/workbench2/src/common/custom-theme.ts b/services/workbench2/src/common/custom-theme.ts
index 135204a066..1cd002fb05 100644
--- a/services/workbench2/src/common/custom-theme.ts
+++ b/services/workbench2/src/common/custom-theme.ts
@@ -3,7 +3,7 @@
 // SPDX-License-Identifier: AGPL-3.0
 
 import { createMuiTheme } from '@material-ui/core/styles';
-import { ThemeOptions, Theme } from '@material-ui/core/styles/createMuiTheme';
+import { ThemeOptions, Theme } from '@material-ui/core/styles';
 import blue from '@material-ui/core/colors/blue';
 import grey from '@material-ui/core/colors/grey';
 import green from '@material-ui/core/colors/green';
@@ -55,9 +55,6 @@ const grey800 = grey["800"];
 const grey900 = grey["900"];
 
 export const themeOptions: ArvadosThemeOptions = {
-    typography: {
-        useNextVariants: true,
-    },
     customs: {
         colors: {
             green700: green["700"],
diff --git a/services/workbench2/src/components/autocomplete/autocomplete.tsx b/services/workbench2/src/components/autocomplete/autocomplete.tsx
index 17d85e856c..2391f52a32 100644
--- a/services/workbench2/src/components/autocomplete/autocomplete.tsx
+++ b/services/workbench2/src/components/autocomplete/autocomplete.tsx
@@ -233,8 +233,8 @@ type ChipClasses = 'root';
 
 const chipStyles: StyleRulesCallback<ChipClasses> = theme => ({
     root: {
-        marginRight: theme.spacing.unit / 4,
-        height: theme.spacing.unit * 3,
+        marginRight: theme.spacing(1) / 4,
+        height: theme.spacing(3),
     }
 });
 
diff --git a/services/workbench2/src/components/code-snippet/code-snippet.tsx b/services/workbench2/src/components/code-snippet/code-snippet.tsx
index 3be1e4fc71..157e450ad3 100644
--- a/services/workbench2/src/components/code-snippet/code-snippet.tsx
+++ b/services/workbench2/src/components/code-snippet/code-snippet.tsx
@@ -18,7 +18,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     root: {
         boxSizing: 'border-box',
         overflow: 'auto',
-        padding: theme.spacing.unit,
+        padding: theme.spacing,
     },
     inlineRoot: {
         padding: "3px",
diff --git a/services/workbench2/src/components/code-snippet/virtual-code-snippet.tsx b/services/workbench2/src/components/code-snippet/virtual-code-snippet.tsx
index 09db2c0426..fe73fa8d38 100644
--- a/services/workbench2/src/components/code-snippet/virtual-code-snippet.tsx
+++ b/services/workbench2/src/components/code-snippet/virtual-code-snippet.tsx
@@ -19,7 +19,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     root: {
         boxSizing: 'border-box',
         height: '100%',
-        padding: theme.spacing.unit,
+        padding: theme.spacing,
     },
     space: {
         marginLeft: '15px',
diff --git a/services/workbench2/src/components/collection-panel-files/collection-panel-files.tsx b/services/workbench2/src/components/collection-panel-files/collection-panel-files.tsx
index 03d4551cab..efa8da5d6e 100644
--- a/services/workbench2/src/components/collection-panel-files/collection-panel-files.tsx
+++ b/services/workbench2/src/components/collection-panel-files/collection-panel-files.tsx
@@ -207,9 +207,9 @@ const styles: StyleRulesCallback<CssRules> = (theme: Theme) => ({
         float: "right",
     },
     moreOptionsButton: {
-        width: theme.spacing.unit * 3,
-        height: theme.spacing.unit * 3,
-        marginRight: theme.spacing.unit,
+        width: theme.spacing(3),
+        height: theme.spacing(3),
+        marginRight: theme.spacing,
         marginTop: "auto",
         marginBottom: "auto",
         justifyContent: "center",
diff --git a/services/workbench2/src/components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar.tsx b/services/workbench2/src/components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar.tsx
index 13e6531766..270100dd9f 100644
--- a/services/workbench2/src/components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar.tsx
+++ b/services/workbench2/src/components/copy-to-clipboard-snackbar/copy-to-clipboard-snackbar.tsx
@@ -14,7 +14,7 @@ type CssRules = 'copyIcon';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     copyIcon: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
         color: theme.palette.grey['500'],
         cursor: 'pointer',
         display: 'inline',
diff --git a/services/workbench2/src/components/data-explorer/data-explorer.tsx b/services/workbench2/src/components/data-explorer/data-explorer.tsx
index ba710bc783..80465ece19 100644
--- a/services/workbench2/src/components/data-explorer/data-explorer.tsx
+++ b/services/workbench2/src/components/data-explorer/data-explorer.tsx
@@ -29,7 +29,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     toolbar: {
         paddingTop: 0,
-        paddingRight: theme.spacing.unit,
+        paddingRight: theme.spacing,
         paddingLeft: "10px",
     },
     footer: {
@@ -43,15 +43,15 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     title: {
         display: "inline-block",
-        paddingLeft: theme.spacing.unit * 2,
-        paddingTop: theme.spacing.unit * 2,
+        paddingLeft: theme.spacing(2),
+        paddingTop: theme.spacing(2),
         fontSize: "18px",
         paddingRight: "10px",
     },
     subProcessTitle: {
         display: "inline-block",
-        paddingLeft: theme.spacing.unit * 2,
-        paddingTop: theme.spacing.unit * 2,
+        paddingLeft: theme.spacing(2),
+        paddingTop: theme.spacing(2),
         fontSize: "18px",
         flexGrow: 0,
         paddingRight: "10px",
diff --git a/services/workbench2/src/components/data-table-default-view/data-table-default-view.tsx b/services/workbench2/src/components/data-table-default-view/data-table-default-view.tsx
index b245c19ba9..48f0a865bf 100644
--- a/services/workbench2/src/components/data-table-default-view/data-table-default-view.tsx
+++ b/services/workbench2/src/components/data-table-default-view/data-table-default-view.tsx
@@ -12,8 +12,8 @@ type CssRules = 'classRoot';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     classRoot: {
-        marginTop: theme.spacing.unit * 4,
-        marginBottom: theme.spacing.unit * 4,
+        marginTop: theme.spacing(4),
+        marginBottom: theme.spacing(4),
     },
 });
 type DataTableDefaultViewDataProps = Partial<Pick<DefaultViewDataProps, 'icon' | 'messages' | 'filtersApplied'>>;
diff --git a/services/workbench2/src/components/data-table/data-table.tsx b/services/workbench2/src/components/data-table/data-table.tsx
index 7b78799457..e95750d0b0 100644
--- a/services/workbench2/src/components/data-table/data-table.tsx
+++ b/services/workbench2/src/components/data-table/data-table.tsx
@@ -86,7 +86,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: Theme) => ({
     },
     noItemsInfo: {
         textAlign: "center",
-        padding: theme.spacing.unit,
+        padding: theme.spacing,
     },
     checkBoxHead: {
         padding: "0",
diff --git a/services/workbench2/src/components/details-attribute/details-attribute.tsx b/services/workbench2/src/components/details-attribute/details-attribute.tsx
index 019470c026..3e38df1717 100644
--- a/services/workbench2/src/components/details-attribute/details-attribute.tsx
+++ b/services/workbench2/src/components/details-attribute/details-attribute.tsx
@@ -42,7 +42,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         cursor: 'pointer'
     },
     copyIcon: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
         color: theme.palette.grey["600"],
         cursor: 'pointer',
         display: 'inline',
diff --git a/services/workbench2/src/components/dialog-actions/dialog-actions.tsx b/services/workbench2/src/components/dialog-actions/dialog-actions.tsx
index 6987a1068c..fa08de03b5 100644
--- a/services/workbench2/src/components/dialog-actions/dialog-actions.tsx
+++ b/services/workbench2/src/components/dialog-actions/dialog-actions.tsx
@@ -6,7 +6,7 @@ import { DialogActions as MuiDialogActions } from '@material-ui/core/';
 import { StyleRulesCallback, withStyles } from '@material-ui/core';
 
 const styles: StyleRulesCallback<'root'> = theme => {
-    const margin = theme.spacing.unit * 3;
+    const margin = theme.spacing(3);
     return {
         root: {
             marginRight: margin,
diff --git a/services/workbench2/src/components/file-tree/file-thumbnail.tsx b/services/workbench2/src/components/file-tree/file-thumbnail.tsx
index aeb8d68f78..7e0a2b9c8d 100644
--- a/services/workbench2/src/components/file-tree/file-thumbnail.tsx
+++ b/services/workbench2/src/components/file-tree/file-thumbnail.tsx
@@ -26,7 +26,7 @@ type ImageFileThumbnailCssRules = 'thumbnail';
 const imageFileThumbnailStyle = withStyles<ImageFileThumbnailCssRules>(theme => ({
     thumbnail: {
         maxWidth: 250,
-        margin: `${theme.spacing.unit}px 0`,
+        margin: `${theme.spacing(1)}px 0`,
     }
 }));
 
diff --git a/services/workbench2/src/components/form-dialog/form-dialog.tsx b/services/workbench2/src/components/form-dialog/form-dialog.tsx
index b50504a6c0..f1e0008196 100644
--- a/services/workbench2/src/components/form-dialog/form-dialog.tsx
+++ b/services/workbench2/src/components/form-dialog/form-dialog.tsx
@@ -12,10 +12,10 @@ type CssRules = "button" | "lastButton" | "form" | "formContainer" | "dialogTitl
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     button: {
-        marginLeft: theme.spacing.unit
+        marginLeft: theme.spacing
     },
     lastButton: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
         marginRight: "0",
     },
     form: {
@@ -30,16 +30,16 @@ const styles: StyleRulesCallback<CssRules> = theme => ({
         paddingBottom: "0",
     },
     dialogTitle: {
-        paddingTop: theme.spacing.unit,
-        paddingBottom: theme.spacing.unit,
+        paddingTop: theme.spacing,
+        paddingBottom: theme.spacing,
     },
     progressIndicator: {
         position: "absolute",
         minWidth: "20px",
     },
     dialogActions: {
-        marginBottom: theme.spacing.unit,
-        marginRight: theme.spacing.unit * 3,
+        marginBottom: theme.spacing,
+        marginRight: theme.spacing(3),
     }
 });
 
diff --git a/services/workbench2/src/components/list-item-text-icon/list-item-text-icon.tsx b/services/workbench2/src/components/list-item-text-icon/list-item-text-icon.tsx
index 226556aa09..c0e4ba69bd 100644
--- a/services/workbench2/src/components/list-item-text-icon/list-item-text-icon.tsx
+++ b/services/workbench2/src/components/list-item-text-icon/list-item-text-icon.tsx
@@ -23,7 +23,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         color: theme.palette.primary.main,
     },
     hasMargin: {
-        marginLeft: `${theme.spacing.unit}px`,
+        marginLeft: `${theme.spacing(1)}px`,
     }
 });
 
diff --git a/services/workbench2/src/components/select-field/select-field.tsx b/services/workbench2/src/components/select-field/select-field.tsx
index bea0649632..ebe736f8be 100644
--- a/services/workbench2/src/components/select-field/select-field.tsx
+++ b/services/workbench2/src/components/select-field/select-field.tsx
@@ -73,7 +73,7 @@ type SelectFieldCssRules = 'formControl';
 
 const selectFieldStyles: StyleRulesCallback<SelectFieldCssRules> = (theme: ArvadosTheme) => ({
     formControl: {
-        marginBottom: theme.spacing.unit * 3,
+        marginBottom: theme.spacing(3),
     },
 });
 export const SelectField = withStyles(selectFieldStyles)((props: WrappedFieldProps & SelectFieldProps & WithStyles<SelectFieldCssRules>) => (
diff --git a/services/workbench2/src/components/subprocess-filter/subprocess-filter.tsx b/services/workbench2/src/components/subprocess-filter/subprocess-filter.tsx
index 1722de8f17..864b8c741d 100644
--- a/services/workbench2/src/components/subprocess-filter/subprocess-filter.tsx
+++ b/services/workbench2/src/components/subprocess-filter/subprocess-filter.tsx
@@ -22,7 +22,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     value: {
         width: '24px',
-        paddingLeft: theme.spacing.unit,
+        paddingLeft: theme.spacing,
     }
 });
 
diff --git a/services/workbench2/src/components/text-field/text-field.tsx b/services/workbench2/src/components/text-field/text-field.tsx
index b2a8dd4848..e6f2f847cc 100644
--- a/services/workbench2/src/components/text-field/text-field.tsx
+++ b/services/workbench2/src/components/text-field/text-field.tsx
@@ -18,7 +18,7 @@ type CssRules = 'textField' | 'rte';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     textField: {
-        marginBottom: theme.spacing.unit
+        marginBottom: theme.spacing
     },
     rte: {
         fontFamily: 'Arial',
diff --git a/services/workbench2/src/components/tree/tree.tsx b/services/workbench2/src/components/tree/tree.tsx
index 1f7aa8326d..815f4b7f26 100644
--- a/services/workbench2/src/components/tree/tree.tsx
+++ b/services/workbench2/src/components/tree/tree.tsx
@@ -63,9 +63,9 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         transform: 'rotate(90deg)',
     },
     checkbox: {
-        width: theme.spacing.unit * 3,
-        height: theme.spacing.unit * 3,
-        margin: `0 ${theme.spacing.unit}px`,
+        width: theme.spacing(3),
+        height: theme.spacing(3),
+        margin: `0 ${theme.spacing(1)}px`,
         padding: 0,
         color: theme.palette.grey["500"],
     },
diff --git a/services/workbench2/src/components/tree/virtual-tree.tsx b/services/workbench2/src/components/tree/virtual-tree.tsx
index ca7cd40caf..8ae829254d 100644
--- a/services/workbench2/src/components/tree/virtual-tree.tsx
+++ b/services/workbench2/src/components/tree/virtual-tree.tsx
@@ -69,9 +69,9 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         transform: 'rotate(90deg)',
     },
     checkbox: {
-        width: theme.spacing.unit * 3,
-        height: theme.spacing.unit * 3,
-        margin: `0 ${theme.spacing.unit}px`,
+        width: theme.spacing(3),
+        height: theme.spacing(3),
+        margin: `0 ${theme.spacing(1)}px`,
         padding: 0,
         color: theme.palette.grey["500"],
     }
diff --git a/services/workbench2/src/views-components/advanced-tab-dialog/advanced-tab-dialog.tsx b/services/workbench2/src/views-components/advanced-tab-dialog/advanced-tab-dialog.tsx
index 3505faed43..ddae944b8a 100644
--- a/services/workbench2/src/views-components/advanced-tab-dialog/advanced-tab-dialog.tsx
+++ b/services/workbench2/src/views-components/advanced-tab-dialog/advanced-tab-dialog.tsx
@@ -17,18 +17,18 @@ type CssRules = 'content' | 'codeSnippet' | 'spacing';
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     content: {
-        paddingTop: theme.spacing.unit * 3,
+        paddingTop: theme.spacing(3),
         minHeight: '400px',
         minWidth: '1232px'
     },
     codeSnippet: {
-        borderRadius: theme.spacing.unit * 0.5,
+        borderRadius: theme.spacing(0.5),
         border: '1px solid',
         borderColor: theme.palette.grey["400"],
         maxHeight: '400px'
     },
     spacing: {
-        paddingBottom: theme.spacing.unit * 2
+        paddingBottom: theme.spacing(2)
     },
 });
 
diff --git a/services/workbench2/src/views-components/advanced-tab-dialog/metadataTab.tsx b/services/workbench2/src/views-components/advanced-tab-dialog/metadataTab.tsx
index 1b950d242f..5d906ac8e0 100644
--- a/services/workbench2/src/views-components/advanced-tab-dialog/metadataTab.tsx
+++ b/services/workbench2/src/views-components/advanced-tab-dialog/metadataTab.tsx
@@ -9,7 +9,7 @@ type CssRules = 'cell';
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     cell: {
-        paddingRight: theme.spacing.unit * 2
+        paddingRight: theme.spacing(2)
     }
 });
 
diff --git a/services/workbench2/src/views-components/api-client-authorizations-dialog/help-dialog.tsx b/services/workbench2/src/views-components/api-client-authorizations-dialog/help-dialog.tsx
index 094b01a6c7..d3a163c742 100644
--- a/services/workbench2/src/views-components/api-client-authorizations-dialog/help-dialog.tsx
+++ b/services/workbench2/src/views-components/api-client-authorizations-dialog/help-dialog.tsx
@@ -16,7 +16,7 @@ type CssRules = 'codeSnippet';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     codeSnippet: {
-        borderRadius: theme.spacing.unit * 0.5,
+        borderRadius: theme.spacing(0.5),
         border: `1px solid ${theme.palette.grey["400"]}`,
         '& pre': {
             fontSize: '0.815rem'
diff --git a/services/workbench2/src/views-components/data-explorer/renderers.tsx b/services/workbench2/src/views-components/data-explorer/renderers.tsx
index 91b06c2b2f..6f61b5ec37 100644
--- a/services/workbench2/src/views-components/data-explorer/renderers.tsx
+++ b/services/workbench2/src/views-components/data-explorer/renderers.tsx
@@ -1069,11 +1069,11 @@ export const ProcessStatus = compose(
         <Chip
             label={getProcessStatus(props.process)}
             style={{
-                height: props.theme.spacing.unit * 3,
-                width: props.theme.spacing.unit * 12,
+                height: props.theme.spacing(3),
+                width: props.theme.spacing(12),
                 ...getProcessStatusStyles(getProcessStatus(props.process), props.theme),
                 fontSize: "0.875rem",
-                borderRadius: props.theme.spacing.unit * 0.625,
+                borderRadius: props.theme.spacing(0.625),
             }}
         />
     ) : (
diff --git a/services/workbench2/src/views-components/details-panel/collection-details.tsx b/services/workbench2/src/views-components/details-panel/collection-details.tsx
index 4431465b87..cd3e92a7d3 100644
--- a/services/workbench2/src/views-components/details-panel/collection-details.tsx
+++ b/services/workbench2/src/views-components/details-panel/collection-details.tsx
@@ -38,7 +38,7 @@ const styles: StyleRulesCallback<CssRules> = theme => ({
         textAlign: 'center',
     },
     editIcon: {
-        paddingRight: theme.spacing.unit/2,
+        paddingRight: theme.spacing/2,
         fontSize: '1.125rem',
     },
     editButton: {
@@ -47,8 +47,8 @@ const styles: StyleRulesCallback<CssRules> = theme => ({
         fontSize: '0.75rem'
     },
     tag: {
-        marginRight: theme.spacing.unit / 2,
-        marginBottom: theme.spacing.unit / 2
+        marginRight: theme.spacing / 2,
+        marginBottom: theme.spacing / 2
     },
 });
 
diff --git a/services/workbench2/src/views-components/details-panel/details-panel.tsx b/services/workbench2/src/views-components/details-panel/details-panel.tsx
index 2653a21033..52b97cc813 100644
--- a/services/workbench2/src/views-components/details-panel/details-panel.tsx
+++ b/services/workbench2/src/views-components/details-panel/details-panel.tsx
@@ -50,7 +50,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     headerContainer: {
         color: theme.palette.grey["600"],
-        margin: `${theme.spacing.unit}px 0`,
+        margin: `${theme.spacing(1)}px 0`,
         textAlign: 'center',
     },
     headerIcon: {
@@ -58,7 +58,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     tabContainer: {
         overflow: 'auto',
-        padding: theme.spacing.unit * 1,
+        padding: theme.spacing(1),
     },
 });
 
diff --git a/services/workbench2/src/views-components/details-panel/project-details.tsx b/services/workbench2/src/views-components/details-panel/project-details.tsx
index 7dc6709da5..8174a975cd 100644
--- a/services/workbench2/src/views-components/details-panel/project-details.tsx
+++ b/services/workbench2/src/views-components/details-panel/project-details.tsx
@@ -40,11 +40,11 @@ type CssRules = 'tag' | 'editIcon' | 'editButton';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     tag: {
-        marginRight: theme.spacing.unit / 2,
-        marginBottom: theme.spacing.unit / 2,
+        marginRight: theme.spacing / 2,
+        marginBottom: theme.spacing / 2,
     },
     editIcon: {
-        paddingRight: theme.spacing.unit / 2,
+        paddingRight: theme.spacing / 2,
         fontSize: '1.125rem',
     },
     editButton: {
diff --git a/services/workbench2/src/views-components/details-panel/workflow-details.tsx b/services/workbench2/src/views-components/details-panel/workflow-details.tsx
index ca224b1d58..7d75e3b15c 100644
--- a/services/workbench2/src/views-components/details-panel/workflow-details.tsx
+++ b/services/workbench2/src/views-components/details-panel/workflow-details.tsx
@@ -51,8 +51,8 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         marginLeft: 'auto'
     },
     propertyTag: {
-        marginRight: theme.spacing.unit / 2,
-        marginBottom: theme.spacing.unit / 2
+        marginRight: theme.spacing / 2,
+        marginBottom: theme.spacing / 2
     },
 });
 
diff --git a/services/workbench2/src/views-components/dialog-create/dialog-collection-create.tsx b/services/workbench2/src/views-components/dialog-create/dialog-collection-create.tsx
index 17a24e480c..df42f8867f 100644
--- a/services/workbench2/src/views-components/dialog-create/dialog-collection-create.tsx
+++ b/services/workbench2/src/views-components/dialog-create/dialog-collection-create.tsx
@@ -22,8 +22,8 @@ type CssRules = 'propertiesForm';
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     propertiesForm: {
-        marginTop: theme.spacing.unit * 2,
-        marginBottom: theme.spacing.unit * 2,
+        marginTop: theme.spacing(2),
+        marginBottom: theme.spacing(2),
     },
 });
 
diff --git a/services/workbench2/src/views-components/dialog-create/dialog-project-create.tsx b/services/workbench2/src/views-components/dialog-create/dialog-project-create.tsx
index d85a304e00..1377a0ef99 100644
--- a/services/workbench2/src/views-components/dialog-create/dialog-project-create.tsx
+++ b/services/workbench2/src/views-components/dialog-create/dialog-project-create.tsx
@@ -18,12 +18,12 @@ type CssRules = 'propertiesForm' | 'description';
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     propertiesForm: {
-        marginTop: theme.spacing.unit * 2,
-        marginBottom: theme.spacing.unit * 2,
+        marginTop: theme.spacing(2),
+        marginBottom: theme.spacing(2),
     },
     description: {
-        marginTop: theme.spacing.unit * 2,
-        marginBottom: theme.spacing.unit * 2,
+        marginTop: theme.spacing(2),
+        marginBottom: theme.spacing(2),
     },
 });
 
diff --git a/services/workbench2/src/views-components/dialog-update/dialog-collection-update.tsx b/services/workbench2/src/views-components/dialog-update/dialog-collection-update.tsx
index d77d10fff8..e86360500d 100644
--- a/services/workbench2/src/views-components/dialog-update/dialog-collection-update.tsx
+++ b/services/workbench2/src/views-components/dialog-update/dialog-collection-update.tsx
@@ -20,8 +20,8 @@ type CssRules = 'propertiesForm';
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     propertiesForm: {
-        marginTop: theme.spacing.unit * 2,
-        marginBottom: theme.spacing.unit * 2,
+        marginTop: theme.spacing(2),
+        marginBottom: theme.spacing(2),
     },
 });
 
diff --git a/services/workbench2/src/views-components/dialog-update/dialog-project-update.tsx b/services/workbench2/src/views-components/dialog-update/dialog-project-update.tsx
index a6ac65b194..18a60cb3f1 100644
--- a/services/workbench2/src/views-components/dialog-update/dialog-project-update.tsx
+++ b/services/workbench2/src/views-components/dialog-update/dialog-project-update.tsx
@@ -17,12 +17,12 @@ type CssRules = 'propertiesForm' | 'description';
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     propertiesForm: {
-        marginTop: theme.spacing.unit * 2,
-        marginBottom: theme.spacing.unit * 2,
+        marginTop: theme.spacing(2),
+        marginBottom: theme.spacing(2),
     },
     description: {
-        marginTop: theme.spacing.unit * 2,
-        marginBottom: theme.spacing.unit * 2,
+        marginTop: theme.spacing(2),
+        marginBottom: theme.spacing(2),
     },
 });
 
diff --git a/services/workbench2/src/views-components/groups-dialog/attributes-dialog.tsx b/services/workbench2/src/views-components/groups-dialog/attributes-dialog.tsx
index 6f3490d04c..6ee8b1b293 100644
--- a/services/workbench2/src/views-components/groups-dialog/attributes-dialog.tsx
+++ b/services/workbench2/src/views-components/groups-dialog/attributes-dialog.tsx
@@ -17,15 +17,15 @@ type CssRules = 'rightContainer' | 'leftContainer' | 'spacing';
 const styles = withStyles<CssRules>((theme: ArvadosTheme) => ({
     rightContainer: {
         textAlign: 'right',
-        paddingRight: theme.spacing.unit * 2,
+        paddingRight: theme.spacing(2),
         color: theme.palette.grey["500"]
     },
     leftContainer: {
         textAlign: 'left',
-        paddingLeft: theme.spacing.unit * 2
+        paddingLeft: theme.spacing(2)
     },
     spacing: {
-        paddingTop: theme.spacing.unit * 2
+        paddingTop: theme.spacing(2)
     },
 }));
 
diff --git a/services/workbench2/src/views-components/groups-dialog/member-attributes-dialog.tsx b/services/workbench2/src/views-components/groups-dialog/member-attributes-dialog.tsx
index d8bb0c5a3d..57de5eb7c8 100644
--- a/services/workbench2/src/views-components/groups-dialog/member-attributes-dialog.tsx
+++ b/services/workbench2/src/views-components/groups-dialog/member-attributes-dialog.tsx
@@ -17,15 +17,15 @@ type CssRules = 'rightContainer' | 'leftContainer' | 'spacing';
 const styles = withStyles<CssRules>((theme: ArvadosTheme) => ({
     rightContainer: {
         textAlign: 'right',
-        paddingRight: theme.spacing.unit * 2,
+        paddingRight: theme.spacing(2),
         color: theme.palette.grey["500"]
     },
     leftContainer: {
         textAlign: 'left',
-        paddingLeft: theme.spacing.unit * 2
+        paddingLeft: theme.spacing(2)
     },
     spacing: {
-        paddingTop: theme.spacing.unit * 2
+        paddingTop: theme.spacing(2)
     },
 }));
 
diff --git a/services/workbench2/src/views-components/login-form/login-form.tsx b/services/workbench2/src/views-components/login-form/login-form.tsx
index 7d71078c31..f614e6b5e9 100644
--- a/services/workbench2/src/views-components/login-form/login-form.tsx
+++ b/services/workbench2/src/views-components/login-form/login-form.tsx
@@ -22,18 +22,18 @@ const styles: StyleRulesCallback<CssRules> = theme => ({
         display: 'flex',
         flexWrap: 'wrap',
         width: '100%',
-        margin: `${theme.spacing.unit} auto`
+        margin: `${theme.spacing(1)} auto`
     },
     loginBtn: {
-        marginTop: theme.spacing.unit,
+        marginTop: theme.spacing,
         flexGrow: 1
     },
     card: {
-        marginTop: theme.spacing.unit,
+        marginTop: theme.spacing,
         width: '100%'
     },
     wrapper: {
-        margin: theme.spacing.unit,
+        margin: theme.spacing,
         position: 'relative',
     },
     progress: {
diff --git a/services/workbench2/src/views-components/main-app-bar/help-menu.tsx b/services/workbench2/src/views-components/main-app-bar/help-menu.tsx
index af76e4f127..393b49a91d 100644
--- a/services/workbench2/src/views-components/main-app-bar/help-menu.tsx
+++ b/services/workbench2/src/views-components/main-app-bar/help-menu.tsx
@@ -26,13 +26,13 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         height: '16px'
     },
     title: {
-        paddingBottom: theme.spacing.unit * 0.5,
-        paddingLeft: theme.spacing.unit * 2,
-        paddingTop: theme.spacing.unit * 0.5,
+        paddingBottom: theme.spacing(0.5),
+        paddingLeft: theme.spacing(2),
+        paddingTop: theme.spacing(0.5),
         outline: 'none',
     },
     linkTitle: {
-        marginLeft: theme.spacing.unit
+        marginLeft: theme.spacing
     },
 });
 
diff --git a/services/workbench2/src/views-components/not-found-dialog/not-found-dialog.tsx b/services/workbench2/src/views-components/not-found-dialog/not-found-dialog.tsx
index eee64b66b9..ef9bcb42b4 100644
--- a/services/workbench2/src/views-components/not-found-dialog/not-found-dialog.tsx
+++ b/services/workbench2/src/views-components/not-found-dialog/not-found-dialog.tsx
@@ -16,8 +16,8 @@ type CssRules = 'tag';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     tag: {
-        marginRight: theme.spacing.unit,
-        marginBottom: theme.spacing.unit
+        marginRight: theme.spacing,
+        marginBottom: theme.spacing
     }
 });
 
diff --git a/services/workbench2/src/views-components/process-runtime-status/process-runtime-status.tsx b/services/workbench2/src/views-components/process-runtime-status/process-runtime-status.tsx
index 4761e12f4c..9c0dc86eba 100644
--- a/services/workbench2/src/views-components/process-runtime-status/process-runtime-status.tsx
+++ b/services/workbench2/src/views-components/process-runtime-status/process-runtime-status.tsx
@@ -32,21 +32,21 @@ type CssRules = 'root'
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     root: {
-        marginBottom: theme.spacing.unit * 1,
+        marginBottom: theme.spacing(1),
     },
     heading: {
         fontSize: '1rem',
     },
     summary: {
-        paddingLeft: theme.spacing.unit * 1,
-        paddingRight: theme.spacing.unit * 1,
+        paddingLeft: theme.spacing(1),
+        paddingRight: theme.spacing(1),
     },
     summaryText: {
         whiteSpace: 'pre-line',
     },
     details: {
-        paddingLeft: theme.spacing.unit * 1,
-        paddingRight: theme.spacing.unit * 1,
+        paddingLeft: theme.spacing(1),
+        paddingRight: theme.spacing(1),
     },
     detailsText: {
         fontSize: '0.8rem',
@@ -68,7 +68,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         color: theme.customs.colors.grey700,
     },
     paperRoot: {
-        minHeight: theme.spacing.unit * 6,
+        minHeight: theme.spacing(6),
         display: 'flex',
         alignItems: 'center',
     },
diff --git a/services/workbench2/src/views-components/repositories-sample-git-dialog/repositories-sample-git-dialog.tsx b/services/workbench2/src/views-components/repositories-sample-git-dialog/repositories-sample-git-dialog.tsx
index a76ab0f6d0..139ca94b6f 100644
--- a/services/workbench2/src/views-components/repositories-sample-git-dialog/repositories-sample-git-dialog.tsx
+++ b/services/workbench2/src/views-components/repositories-sample-git-dialog/repositories-sample-git-dialog.tsx
@@ -16,7 +16,7 @@ type CssRules = 'codeSnippet' | 'link' | 'spacing';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     codeSnippet: {
-        borderRadius: theme.spacing.unit * 0.5,
+        borderRadius: theme.spacing(0.5),
         border: '1px solid',
         borderColor: theme.palette.grey["400"],
     },
@@ -29,7 +29,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         }
     },
     spacing: {
-        paddingTop: theme.spacing.unit * 2
+        paddingTop: theme.spacing(2)
     }
 });
 
diff --git a/services/workbench2/src/views-components/repository-attributes-dialog/repository-attributes-dialog.tsx b/services/workbench2/src/views-components/repository-attributes-dialog/repository-attributes-dialog.tsx
index 1771e3c26e..8c8d0c1500 100644
--- a/services/workbench2/src/views-components/repository-attributes-dialog/repository-attributes-dialog.tsx
+++ b/services/workbench2/src/views-components/repository-attributes-dialog/repository-attributes-dialog.tsx
@@ -17,15 +17,15 @@ type CssRules = 'rightContainer' | 'leftContainer' | 'spacing';
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     rightContainer: {
         textAlign: 'right',
-        paddingRight: theme.spacing.unit * 2,
+        paddingRight: theme.spacing(2),
         color: theme.palette.grey["500"]
     },
     leftContainer: {
         textAlign: 'left',
-        paddingLeft: theme.spacing.unit * 2
+        paddingLeft: theme.spacing(2)
     },
     spacing: {
-        paddingTop: theme.spacing.unit * 2
+        paddingTop: theme.spacing(2)
     },
 });
 
diff --git a/services/workbench2/src/views-components/resource-properties-form/resource-properties-form.tsx b/services/workbench2/src/views-components/resource-properties-form/resource-properties-form.tsx
index 0147312912..250cb9e817 100644
--- a/services/workbench2/src/views-components/resource-properties-form/resource-properties-form.tsx
+++ b/services/workbench2/src/views-components/resource-properties-form/resource-properties-form.tsx
@@ -13,7 +13,7 @@ import { ProgressButton } from 'components/progress-button/progress-button';
 import { GridClassKey } from '@material-ui/core/Grid';
 
 const AddButton = withStyles(theme => ({
-    root: { marginTop: theme.spacing.unit }
+    root: { marginTop: theme.spacing }
 }))(ProgressButton);
 
 const mapStateToProps = (state: RootState) => {
diff --git a/services/workbench2/src/views-components/resource-properties/resource-properties-list.tsx b/services/workbench2/src/views-components/resource-properties/resource-properties-list.tsx
index 47d7729b4d..1de99783f6 100644
--- a/services/workbench2/src/views-components/resource-properties/resource-properties-list.tsx
+++ b/services/workbench2/src/views-components/resource-properties/resource-properties-list.tsx
@@ -20,8 +20,8 @@ type CssRules = 'tag';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     tag: {
-        marginRight: theme.spacing.unit,
-        marginBottom: theme.spacing.unit
+        marginRight: theme.spacing,
+        marginBottom: theme.spacing
     }
 });
 
diff --git a/services/workbench2/src/views-components/search-bar/search-bar-advanced-view.tsx b/services/workbench2/src/views-components/search-bar/search-bar-advanced-view.tsx
index 323f07b25b..34e28a7a61 100644
--- a/services/workbench2/src/views-components/search-bar/search-bar-advanced-view.tsx
+++ b/services/workbench2/src/views-components/search-bar/search-bar-advanced-view.tsx
@@ -26,7 +26,7 @@ type CssRules = 'container' | 'closeIcon' | 'label' | 'buttonWrapper'
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     container: {
-        padding: theme.spacing.unit * 2,
+        padding: theme.spacing(2),
         borderBottom: `1px solid ${theme.palette.grey["200"]}`,
         position: 'relative',
     },
@@ -58,10 +58,10 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     searchView: {
         color: theme.palette.common.black,
-        borderRadius: `0 0 ${theme.spacing.unit / 2}px ${theme.spacing.unit / 2}px`
+        borderRadius: `0 0 ${theme.spacing / 2}px ${theme.spacing / 2}px`
     },
     selectGrid: {
-        marginBottom: theme.spacing.unit * 2
+        marginBottom: theme.spacing(2)
     }
 });
 
diff --git a/services/workbench2/src/views-components/search-bar/search-bar-autocomplete-view.tsx b/services/workbench2/src/views-components/search-bar/search-bar-autocomplete-view.tsx
index 885f7fdd91..9e7f5fa261 100644
--- a/services/workbench2/src/views-components/search-bar/search-bar-autocomplete-view.tsx
+++ b/services/workbench2/src/views-components/search-bar/search-bar-autocomplete-view.tsx
@@ -13,14 +13,14 @@ type CssRules = 'searchView' | 'list' | 'listItem';
 const styles: StyleRulesCallback<CssRules> = theme => {
     return {
         searchView: {
-            borderRadius: `0 0 ${theme.spacing.unit / 2}px ${theme.spacing.unit / 2}px`
+            borderRadius: `0 0 ${theme.spacing / 2}px ${theme.spacing / 2}px`
         },
         list: {
             padding: 0
         },
         listItem: {
-            paddingLeft: theme.spacing.unit,
-            paddingRight: theme.spacing.unit * 2,
+            paddingLeft: theme.spacing,
+            paddingRight: theme.spacing(2),
         }
     };
 };
diff --git a/services/workbench2/src/views-components/search-bar/search-bar-basic-view.tsx b/services/workbench2/src/views-components/search-bar/search-bar-basic-view.tsx
index e880c437bc..a19a753b20 100644
--- a/services/workbench2/src/views-components/search-bar/search-bar-basic-view.tsx
+++ b/services/workbench2/src/views-components/search-bar/search-bar-basic-view.tsx
@@ -20,19 +20,19 @@ const styles: StyleRulesCallback<CssRules> = theme => {
     return {
         root: {
             color: theme.palette.common.black,
-            borderRadius: `0 0 ${theme.spacing.unit / 2}px ${theme.spacing.unit / 2}px`
+            borderRadius: `0 0 ${theme.spacing / 2}px ${theme.spacing / 2}px`
         },
         advanced: {
             display: 'flex',
             justifyContent: 'flex-end',
-            padding: theme.spacing.unit,
+            padding: theme.spacing,
             fontSize: '0.875rem',
             cursor: 'pointer',
             color: theme.palette.primary.main
         },
         label: {
             fontSize: '0.775rem',
-            padding: `${theme.spacing.unit}px ${theme.spacing.unit}px `,
+            padding: `${theme.spacing(1)}px ${theme.spacing(1)}px `,
             color: theme.palette.grey["900"],
             background: 'white',
             textAlign: 'right',
diff --git a/services/workbench2/src/views-components/search-bar/search-bar-recent-queries.tsx b/services/workbench2/src/views-components/search-bar/search-bar-recent-queries.tsx
index 1d5c46c814..a3356e0062 100644
--- a/services/workbench2/src/views-components/search-bar/search-bar-recent-queries.tsx
+++ b/services/workbench2/src/views-components/search-bar/search-bar-recent-queries.tsx
@@ -14,8 +14,8 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         padding: '0px'
     },
     listItem: {
-        paddingLeft: theme.spacing.unit,
-        paddingRight: theme.spacing.unit * 2,
+        paddingLeft: theme.spacing,
+        paddingRight: theme.spacing(2),
     },
     listItemText: {
         fontSize: '0.8125rem',
diff --git a/services/workbench2/src/views-components/search-bar/search-bar-save-queries.tsx b/services/workbench2/src/views-components/search-bar/search-bar-save-queries.tsx
index 1b765b9442..02c774f1a3 100644
--- a/services/workbench2/src/views-components/search-bar/search-bar-save-queries.tsx
+++ b/services/workbench2/src/views-components/search-bar/search-bar-save-queries.tsx
@@ -17,8 +17,8 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         padding: '0px'
     },
     listItem: {
-        paddingLeft: theme.spacing.unit,
-        paddingRight: theme.spacing.unit * 2
+        paddingLeft: theme.spacing,
+        paddingRight: theme.spacing(2)
     },
     listItemText: {
         fontSize: '0.8125rem',
@@ -26,7 +26,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     button: {
         padding: '6px',
-        marginRight: theme.spacing.unit
+        marginRight: theme.spacing
     }
 });
 
diff --git a/services/workbench2/src/views-components/search-bar/search-bar-view.tsx b/services/workbench2/src/views-components/search-bar/search-bar-view.tsx
index eba281c9f0..e0b64c5472 100644
--- a/services/workbench2/src/views-components/search-bar/search-bar-view.tsx
+++ b/services/workbench2/src/views-components/search-bar/search-bar-view.tsx
@@ -32,13 +32,13 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => {
         container: {
             position: "relative",
             width: "100%",
-            borderRadius: theme.spacing.unit / 2,
+            borderRadius: theme.spacing / 2,
             zIndex: theme.zIndex.modal,
         },
         containerSearchViewOpened: {
             position: "relative",
             width: "100%",
-            borderRadius: `${theme.spacing.unit / 2}px ${theme.spacing.unit / 2}px 0 0`,
+            borderRadius: `${theme.spacing / 2}px ${theme.spacing / 2}px 0 0`,
             zIndex: theme.zIndex.modal,
         },
         input: {
diff --git a/services/workbench2/src/views-components/sharing-dialog/select-item.tsx b/services/workbench2/src/views-components/sharing-dialog/select-item.tsx
index 74b0c4d24b..c3daf0bd34 100644
--- a/services/workbench2/src/views-components/sharing-dialog/select-item.tsx
+++ b/services/workbench2/src/views-components/sharing-dialog/select-item.tsx
@@ -11,10 +11,10 @@ type SelectItemClasses = 'value' | 'icon';
 
 const permissionItemStyles: StyleRulesCallback<SelectItemClasses> = theme => ({
     value: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
     },
     icon: {
-        margin: `-${theme.spacing.unit / 2}px 0`
+        margin: `-${theme.spacing / 2}px 0`
     }
 });
 
diff --git a/services/workbench2/src/views-components/sharing-dialog/sharing-invitation-form-component.tsx b/services/workbench2/src/views-components/sharing-dialog/sharing-invitation-form-component.tsx
index cf463fa76a..925d5caed9 100644
--- a/services/workbench2/src/views-components/sharing-dialog/sharing-invitation-form-component.tsx
+++ b/services/workbench2/src/views-components/sharing-dialog/sharing-invitation-form-component.tsx
@@ -15,7 +15,7 @@ type SharingStyles = 'root';
 
 const styles: StyleRulesCallback<SharingStyles> = (theme: ArvadosTheme) => ({
     root: {
-        padding: `${theme.spacing.unit}px 0`,
+        padding: `${theme.spacing(1)}px 0`,
     },
 });
 
diff --git a/services/workbench2/src/views-components/sharing-dialog/sharing-management-form-component.tsx b/services/workbench2/src/views-components/sharing-dialog/sharing-management-form-component.tsx
index fa3cc46189..52ba44fc66 100644
--- a/services/workbench2/src/views-components/sharing-dialog/sharing-management-form-component.tsx
+++ b/services/workbench2/src/views-components/sharing-dialog/sharing-management-form-component.tsx
@@ -44,7 +44,7 @@ const SharingManagementFieldArray = ({ fields, onSave }: { onSave: () => void }
 
 const permissionManagementRowStyles: StyleRulesCallback<'root'> = theme => ({
     root: {
-        padding: `${theme.spacing.unit}px 0`,
+        padding: `${theme.spacing(1)}px 0`,
     }
 });
 
diff --git a/services/workbench2/src/views-components/sharing-dialog/sharing-public-access-form-component.tsx b/services/workbench2/src/views-components/sharing-dialog/sharing-public-access-form-component.tsx
index 161cff58c7..b93a3eab37 100644
--- a/services/workbench2/src/views-components/sharing-dialog/sharing-public-access-form-component.tsx
+++ b/services/workbench2/src/views-components/sharing-dialog/sharing-public-access-form-component.tsx
@@ -12,7 +12,7 @@ import { VisibilityLevel } from 'store/sharing-dialog/sharing-dialog-types';
 
 const sharingPublicAccessStyles: StyleRulesCallback<'root'> = theme => ({
     root: {
-        padding: `${theme.spacing.unit * 2}px 0`,
+        padding: `${theme.spacing(2)}px 0`,
     },
     heading: {
         fontSize: '1.25rem',
diff --git a/services/workbench2/src/views-components/side-panel-button/side-panel-button.tsx b/services/workbench2/src/views-components/side-panel-button/side-panel-button.tsx
index 47b2316831..2edbe2bbc2 100644
--- a/services/workbench2/src/views-components/side-panel-button/side-panel-button.tsx
+++ b/services/workbench2/src/views-components/side-panel-button/side-panel-button.tsx
@@ -36,7 +36,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         color: theme.palette.grey["700"]
     },
     icon: {
-        marginRight: theme.spacing.unit
+        marginRight: theme.spacing
     }
 });
 
diff --git a/services/workbench2/src/views-components/snackbar/snackbar.tsx b/services/workbench2/src/views-components/snackbar/snackbar.tsx
index 1887f0bde0..e3ab74ead7 100644
--- a/services/workbench2/src/views-components/snackbar/snackbar.tsx
+++ b/services/workbench2/src/views-components/snackbar/snackbar.tsx
@@ -76,7 +76,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     iconVariant: {
         opacity: 0.9,
-        marginRight: theme.spacing.unit
+        marginRight: theme.spacing
     },
     message: {
         display: 'flex',
diff --git a/services/workbench2/src/views-components/ssh-keys-dialog/public-key-dialog.tsx b/services/workbench2/src/views-components/ssh-keys-dialog/public-key-dialog.tsx
index dfcade66ae..c9c1fc270d 100644
--- a/services/workbench2/src/views-components/ssh-keys-dialog/public-key-dialog.tsx
+++ b/services/workbench2/src/views-components/ssh-keys-dialog/public-key-dialog.tsx
@@ -14,7 +14,7 @@ type CssRules = 'codeSnippet';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     codeSnippet: {
-        borderRadius: theme.spacing.unit * 0.5,
+        borderRadius: theme.spacing(0.5),
         border: '1px solid',
         borderColor: theme.palette.grey["400"],
         '& pre': {
diff --git a/services/workbench2/src/views-components/token-dialog/token-dialog.tsx b/services/workbench2/src/views-components/token-dialog/token-dialog.tsx
index ad1093d7e5..83867ef43f 100644
--- a/services/workbench2/src/views-components/token-dialog/token-dialog.tsx
+++ b/services/workbench2/src/views-components/token-dialog/token-dialog.tsx
@@ -39,8 +39,8 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         margin: '0px 4px'
     },
     paper: {
-        padding: theme.spacing.unit,
-        marginBottom: theme.spacing.unit * 2,
+        padding: theme.spacing,
+        marginBottom: theme.spacing(2),
         backgroundColor: theme.palette.grey["200"],
         border: `1px solid ${theme.palette.grey["300"]}`
     },
@@ -50,9 +50,9 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     actionButton: {
         boxShadow: 'none',
-        marginTop: theme.spacing.unit * 2,
-        marginBottom: theme.spacing.unit * 2,
-        marginRight: theme.spacing.unit * 2,
+        marginTop: theme.spacing(2),
+        marginBottom: theme.spacing(2),
+        marginRight: theme.spacing(2),
     },
     codeBlock: {
         fontSize: '0.8125rem',
diff --git a/services/workbench2/src/views-components/user-dialog/attributes-dialog.tsx b/services/workbench2/src/views-components/user-dialog/attributes-dialog.tsx
index 5686688df3..a66460f292 100644
--- a/services/workbench2/src/views-components/user-dialog/attributes-dialog.tsx
+++ b/services/workbench2/src/views-components/user-dialog/attributes-dialog.tsx
@@ -17,15 +17,15 @@ type CssRules = 'rightContainer' | 'leftContainer' | 'spacing';
 const styles = withStyles<CssRules>((theme: ArvadosTheme) => ({
     rightContainer: {
         textAlign: 'right',
-        paddingRight: theme.spacing.unit * 2,
+        paddingRight: theme.spacing(2),
         color: theme.palette.grey["500"]
     },
     leftContainer: {
         textAlign: 'left',
-        paddingLeft: theme.spacing.unit * 2
+        paddingLeft: theme.spacing(2)
     },
     spacing: {
-        paddingTop: theme.spacing.unit * 2
+        paddingTop: theme.spacing(2)
     },
 }));
 
diff --git a/services/workbench2/src/views-components/virtual-machines-dialog/attributes-dialog.tsx b/services/workbench2/src/views-components/virtual-machines-dialog/attributes-dialog.tsx
index 4960c1b082..8018c0aba9 100644
--- a/services/workbench2/src/views-components/virtual-machines-dialog/attributes-dialog.tsx
+++ b/services/workbench2/src/views-components/virtual-machines-dialog/attributes-dialog.tsx
@@ -17,15 +17,15 @@ type CssRules = 'rightContainer' | 'leftContainer' | 'spacing';
 const styles = withStyles<CssRules>((theme: ArvadosTheme) => ({
     rightContainer: {
         textAlign: 'right',
-        paddingRight: theme.spacing.unit * 2,
+        paddingRight: theme.spacing(2),
         color: theme.palette.grey["500"]
     },
     leftContainer: {
         textAlign: 'left',
-        paddingLeft: theme.spacing.unit * 2
+        paddingLeft: theme.spacing(2)
     },
     spacing: {
-        paddingTop: theme.spacing.unit * 2
+        paddingTop: theme.spacing(2)
     },
 }));
 
diff --git a/services/workbench2/src/views-components/webdav-s3-dialog/webdav-s3-dialog.tsx b/services/workbench2/src/views-components/webdav-s3-dialog/webdav-s3-dialog.tsx
index a32044a711..cfc207d397 100644
--- a/services/workbench2/src/views-components/webdav-s3-dialog/webdav-s3-dialog.tsx
+++ b/services/workbench2/src/views-components/webdav-s3-dialog/webdav-s3-dialog.tsx
@@ -16,11 +16,11 @@ export type CssRules = 'details' | 'downloadButton' | 'detailsAttrValWithCode';
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     details: {
-        marginLeft: theme.spacing.unit * 3,
-        marginRight: theme.spacing.unit * 3,
+        marginLeft: theme.spacing(3),
+        marginRight: theme.spacing(3),
     },
     downloadButton: {
-        marginTop: theme.spacing.unit * 2,
+        marginTop: theme.spacing(2),
     },
     detailsAttrValWithCode: {
         display: "flex",
diff --git a/services/workbench2/src/views/all-processes-panel/all-processes-panel.tsx b/services/workbench2/src/views/all-processes-panel/all-processes-panel.tsx
index 88360ebcec..09ab702469 100644
--- a/services/workbench2/src/views/all-processes-panel/all-processes-panel.tsx
+++ b/services/workbench2/src/views/all-processes-panel/all-processes-panel.tsx
@@ -37,11 +37,11 @@ type CssRules = "toolbar" | "button" | "root";
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     toolbar: {
-        paddingBottom: theme.spacing.unit * 3,
+        paddingBottom: theme.spacing(3),
         textAlign: "right",
     },
     button: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
     },
     root: {
         width: "100%",
diff --git a/services/workbench2/src/views/collection-content-address-panel/collection-content-address-panel.tsx b/services/workbench2/src/views/collection-content-address-panel/collection-content-address-panel.tsx
index ea23ce5123..e349b9d3c2 100644
--- a/services/workbench2/src/views/collection-content-address-panel/collection-content-address-panel.tsx
+++ b/services/workbench2/src/views/collection-content-address-panel/collection-content-address-panel.tsx
@@ -44,19 +44,19 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         fontWeight: 600,
         display: 'flex',
         alignItems: 'center',
-        padding: theme.spacing.unit,
-        marginBottom: theme.spacing.unit,
+        padding: theme.spacing,
+        marginBottom: theme.spacing,
         color: theme.palette.grey["500"],
     },
     backIcon: {
-        marginRight: theme.spacing.unit
+        marginRight: theme.spacing
     },
     root: {
         width: '100%',
     },
     content: {
         // reserve space for the content address bar
-        height: `calc(100% - ${theme.spacing.unit * 7}px)`,
+        height: `calc(100% - ${theme.spacing(7)}px)`,
     },
 });
 
diff --git a/services/workbench2/src/views/collection-panel/collection-panel.tsx b/services/workbench2/src/views/collection-panel/collection-panel.tsx
index 28983457e6..42921f3629 100644
--- a/services/workbench2/src/views/collection-panel/collection-panel.tsx
+++ b/services/workbench2/src/views/collection-panel/collection-panel.tsx
@@ -78,8 +78,8 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         color: theme.customs.colors.greyL
     },
     tag: {
-        marginRight: theme.spacing.unit / 2,
-        marginBottom: theme.spacing.unit / 2
+        marginRight: theme.spacing / 2,
+        marginBottom: theme.spacing / 2
     },
     label: {
         fontSize: '0.875rem',
@@ -106,27 +106,27 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         }
     },
     readOnlyIcon: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
         fontSize: 'small',
     },
     header: {
-        paddingTop: theme.spacing.unit,
-        paddingBottom: theme.spacing.unit,
+        paddingTop: theme.spacing,
+        paddingBottom: theme.spacing,
     },
     title: {
         overflow: 'hidden',
-        paddingTop: theme.spacing.unit * 0.5,
+        paddingTop: theme.spacing(0.5),
         color: theme.customs.colors.green700,
     },
     avatar: {
         alignSelf: 'flex-start',
-        paddingTop: theme.spacing.unit * 0.5
+        paddingTop: theme.spacing(0.5)
     },
     content: {
-        padding: theme.spacing.unit * 1.0,
-        paddingTop: theme.spacing.unit * 0.5,
+        padding: theme.spacing(1),
+        paddingTop: theme.spacing(0.5),
         '&:last-child': {
-            paddingBottom: theme.spacing.unit * 1,
+            paddingBottom: theme.spacing(1),
         }
     }
 });
diff --git a/services/workbench2/src/views/favorite-panel/favorite-panel.tsx b/services/workbench2/src/views/favorite-panel/favorite-panel.tsx
index 2409870a2d..fde36a8513 100644
--- a/services/workbench2/src/views/favorite-panel/favorite-panel.tsx
+++ b/services/workbench2/src/views/favorite-panel/favorite-panel.tsx
@@ -44,11 +44,11 @@ type CssRules = "toolbar" | "button" | "root";
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     toolbar: {
-        paddingBottom: theme.spacing.unit * 3,
+        paddingBottom: theme.spacing(3),
         textAlign: "right"
     },
     button: {
-        marginLeft: theme.spacing.unit
+        marginLeft: theme.spacing
     },
     root: {
         width: '100%',
diff --git a/services/workbench2/src/views/group-details-panel/group-details-panel.tsx b/services/workbench2/src/views/group-details-panel/group-details-panel.tsx
index fdbc204ee7..d57fca7d10 100644
--- a/services/workbench2/src/views/group-details-panel/group-details-panel.tsx
+++ b/services/workbench2/src/views/group-details-panel/group-details-panel.tsx
@@ -29,7 +29,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     content: {
         // reserve space for the tab bar
-        height: `calc(100% - ${theme.spacing.unit * 7}px)`,
+        height: `calc(100% - ${theme.spacing(7)}px)`,
     }
 });
 
diff --git a/services/workbench2/src/views/inactive-panel/inactive-panel.tsx b/services/workbench2/src/views/inactive-panel/inactive-panel.tsx
index be76570697..daf10464d3 100644
--- a/services/workbench2/src/views/inactive-panel/inactive-panel.tsx
+++ b/services/workbench2/src/views/inactive-panel/inactive-panel.tsx
@@ -25,7 +25,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         zIndex: 10
     },
     title: {
-        marginBottom: theme.spacing.unit * 6,
+        marginBottom: theme.spacing(6),
         color: theme.palette.grey["800"]
     }
 });
diff --git a/services/workbench2/src/views/login-panel/login-panel.tsx b/services/workbench2/src/views/login-panel/login-panel.tsx
index 452a66672a..28cc7e471a 100644
--- a/services/workbench2/src/views/login-panel/login-panel.tsx
+++ b/services/workbench2/src/views/login-panel/login-panel.tsx
@@ -35,11 +35,11 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         zIndex: 10
     },
     title: {
-        marginBottom: theme.spacing.unit * 6,
+        marginBottom: theme.spacing(6),
         color: theme.palette.grey["800"]
     },
     content: {
-        marginBottom: theme.spacing.unit * 3,
+        marginBottom: theme.spacing(3),
         lineHeight: '1.2rem',
         color: theme.palette.grey["800"]
     },
diff --git a/services/workbench2/src/views/not-found-panel/not-found-panel-root.tsx b/services/workbench2/src/views/not-found-panel/not-found-panel-root.tsx
index e5d8507b5c..cf6c3c7a86 100644
--- a/services/workbench2/src/views/not-found-panel/not-found-panel-root.tsx
+++ b/services/workbench2/src/views/not-found-panel/not-found-panel-root.tsx
@@ -17,9 +17,9 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         height: '100vh'
     },
     title: {
-        paddingLeft: theme.spacing.unit * 3,
-        paddingTop: theme.spacing.unit * 3,
-        paddingBottom: theme.spacing.unit * 3,
+        paddingLeft: theme.spacing(3),
+        paddingTop: theme.spacing(3),
+        paddingBottom: theme.spacing(3),
         fontSize: '18px'
     },
     active: {
diff --git a/services/workbench2/src/views/process-panel/process-cmd-card.tsx b/services/workbench2/src/views/process-panel/process-cmd-card.tsx
index 6cef09b4a8..460218d504 100644
--- a/services/workbench2/src/views/process-panel/process-cmd-card.tsx
+++ b/services/workbench2/src/views/process-panel/process-cmd-card.tsx
@@ -30,7 +30,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         height: '100%'
     },
     header: {
-        paddingTop: theme.spacing.unit,
+        paddingTop: theme.spacing,
         paddingBottom: 0,
     },
     iconHeader: {
@@ -39,19 +39,19 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     avatar: {
         alignSelf: 'flex-start',
-        paddingTop: theme.spacing.unit * 0.5
+        paddingTop: theme.spacing(0.5)
     },
     content: {
-        height: `calc(100% - ${theme.spacing.unit * 6}px)`,
-        padding: theme.spacing.unit * 1.0,
+        height: `calc(100% - ${theme.spacing(6)}px)`,
+        padding: theme.spacing(1),
         paddingTop: 0,
         '&:last-child': {
-            paddingBottom: theme.spacing.unit * 1,
+            paddingBottom: theme.spacing(1),
         }
     },
     title: {
         overflow: 'hidden',
-        paddingTop: theme.spacing.unit * 0.5,
+        paddingTop: theme.spacing(0.5),
         color: theme.customs.colors.greyD,
         fontSize: '1.875rem'
     },
diff --git a/services/workbench2/src/views/process-panel/process-details-attributes.tsx b/services/workbench2/src/views/process-panel/process-details-attributes.tsx
index 5c666acd1b..b120ec76c0 100644
--- a/services/workbench2/src/views/process-panel/process-details-attributes.tsx
+++ b/services/workbench2/src/views/process-panel/process-details-attributes.tsx
@@ -35,8 +35,8 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         }
     },
     propertyTag: {
-        marginRight: theme.spacing.unit / 2,
-        marginBottom: theme.spacing.unit / 2
+        marginRight: theme.spacing / 2,
+        marginBottom: theme.spacing / 2
     },
 });
 
diff --git a/services/workbench2/src/views/process-panel/process-details-card.tsx b/services/workbench2/src/views/process-panel/process-details-card.tsx
index 37f01dd701..cff8e43f76 100644
--- a/services/workbench2/src/views/process-panel/process-details-card.tsx
+++ b/services/workbench2/src/views/process-panel/process-details-card.tsx
@@ -30,8 +30,8 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         height: '100%'
     },
     header: {
-        paddingTop: theme.spacing.unit,
-        paddingBottom: theme.spacing.unit,
+        paddingTop: theme.spacing,
+        paddingBottom: theme.spacing,
     },
     iconHeader: {
         fontSize: '1.875rem',
@@ -39,18 +39,18 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     avatar: {
         alignSelf: 'flex-start',
-        paddingTop: theme.spacing.unit * 0.5
+        paddingTop: theme.spacing(0.5)
     },
     content: {
-        padding: theme.spacing.unit * 1.0,
-        paddingTop: theme.spacing.unit * 0.5,
+        padding: theme.spacing(1),
+        paddingTop: theme.spacing(0.5),
         '&:last-child': {
-            paddingBottom: theme.spacing.unit * 1,
+            paddingBottom: theme.spacing(1),
         }
     },
     title: {
         overflow: 'hidden',
-        paddingTop: theme.spacing.unit * 0.5,
+        paddingTop: theme.spacing(0.5),
         color: theme.customs.colors.green700,
     },
     actionButton: {
diff --git a/services/workbench2/src/views/process-panel/process-io-card.tsx b/services/workbench2/src/views/process-panel/process-io-card.tsx
index 9fce7e83d4..0276279a84 100644
--- a/services/workbench2/src/views/process-panel/process-io-card.tsx
+++ b/services/workbench2/src/views/process-panel/process-io-card.tsx
@@ -96,7 +96,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         height: "100%",
     },
     header: {
-        paddingTop: theme.spacing.unit,
+        paddingTop: theme.spacing,
         paddingBottom: 0,
     },
     iconHeader: {
@@ -105,28 +105,28 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     avatar: {
         alignSelf: "flex-start",
-        paddingTop: theme.spacing.unit * 0.5,
+        paddingTop: theme.spacing(0.5),
     },
     // Card content
     content: {
-        height: `calc(100% - ${theme.spacing.unit * 6}px)`,
-        padding: theme.spacing.unit * 1.0,
+        height: `calc(100% - ${theme.spacing(6)}px)`,
+        padding: theme.spacing(1),
         paddingTop: 0,
         "&:last-child": {
-            paddingBottom: theme.spacing.unit * 1,
+            paddingBottom: theme.spacing(1),
         },
     },
     // Card title
     title: {
         overflow: "hidden",
-        paddingTop: theme.spacing.unit * 0.5,
+        paddingTop: theme.spacing(0.5),
         color: theme.customs.colors.greyD,
         fontSize: "1.875rem",
     },
     // Applies to table tab and collection table content
     tableWrapper: {
         height: "auto",
-        maxHeight: `calc(100% - ${theme.spacing.unit * 6}px)`,
+        maxHeight: `calc(100% - ${theme.spacing(6)}px)`,
         overflow: "auto",
         // Use flexbox to keep scrolling at the virtual list level
         display: "flex",
@@ -210,7 +210,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     // JSON tab wrapper
     jsonWrapper: {
-        height: `calc(100% - ${theme.spacing.unit * 6}px)`,
+        height: `calc(100% - ${theme.spacing(6)}px)`,
     },
     keepLink: {
         color: theme.palette.primary.main,
diff --git a/services/workbench2/src/views/process-panel/process-log-card.tsx b/services/workbench2/src/views/process-panel/process-log-card.tsx
index b141abf24c..9eff049284 100644
--- a/services/workbench2/src/views/process-panel/process-log-card.tsx
+++ b/services/workbench2/src/views/process-panel/process-log-card.tsx
@@ -47,11 +47,11 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         height: '100%'
     },
     header: {
-        paddingTop: theme.spacing.unit,
-        paddingBottom: theme.spacing.unit,
+        paddingTop: theme.spacing,
+        paddingBottom: theme.spacing,
     },
     content: {
-        padding: theme.spacing.unit * 0,
+        padding: theme.spacing(0),
         height: '100%',
     },
     logViewer: {
@@ -63,7 +63,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     title: {
         overflow: 'hidden',
-        paddingTop: theme.spacing.unit * 0.5,
+        paddingTop: theme.spacing(0.5),
         color: theme.customs.colors.greyD
     },
     iconHeader: {
diff --git a/services/workbench2/src/views/process-panel/process-log-code-snippet.tsx b/services/workbench2/src/views/process-panel/process-log-code-snippet.tsx
index f42dcaf542..6cb14a6bcf 100644
--- a/services/workbench2/src/views/process-panel/process-log-code-snippet.tsx
+++ b/services/workbench2/src/views/process-panel/process-log-code-snippet.tsx
@@ -27,13 +27,13 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         boxSizing: 'border-box',
         overflow: 'auto',
         backgroundColor: '#000',
-        height: `calc(100% - ${theme.spacing.unit * 4}px)`, // so that horizontal scollbar is visible
+        height: `calc(100% - ${theme.spacing(4)}px)`, // so that horizontal scollbar is visible
         "& a": {
             color: theme.palette.primary.main,
         },
     },
     logText: {
-        padding: `0 ${theme.spacing.unit * 0.5}px`,
+        padding: `0 ${theme.spacing(0.5)}px`,
     },
     wordWrapOn: {
         overflowWrap: 'anywhere',
diff --git a/services/workbench2/src/views/process-panel/process-log-form.tsx b/services/workbench2/src/views/process-panel/process-log-form.tsx
index 1f63e28d2a..af1ecea8c0 100644
--- a/services/workbench2/src/views/process-panel/process-log-form.tsx
+++ b/services/workbench2/src/views/process-panel/process-log-form.tsx
@@ -18,7 +18,7 @@ type CssRules = 'formControl';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     formControl: {
-        minWidth: theme.spacing.unit * 15,
+        minWidth: theme.spacing(15),
     }
 });
 
diff --git a/services/workbench2/src/views/process-panel/process-resource-card.tsx b/services/workbench2/src/views/process-panel/process-resource-card.tsx
index d738ed045b..2f5188679c 100644
--- a/services/workbench2/src/views/process-panel/process-resource-card.tsx
+++ b/services/workbench2/src/views/process-panel/process-resource-card.tsx
@@ -48,10 +48,10 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         paddingBottom: "0px"
     },
     title: {
-        paddingTop: theme.spacing.unit * 0.5
+        paddingTop: theme.spacing(0.5)
     },
     avatar: {
-        paddingTop: theme.spacing.unit * 0.5
+        paddingTop: theme.spacing(0.5)
     },
     iconHeader: {
         fontSize: '1.875rem',
@@ -59,7 +59,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     content: {
         paddingTop: "0px",
-        maxHeight: `calc(100% - ${theme.spacing.unit * 7.5}px)`,
+        maxHeight: `calc(100% - ${theme.spacing(7.5)}px)`,
         overflow: "auto"
     },
     sectionH3: {
diff --git a/services/workbench2/src/views/project-panel/project-panel.tsx b/services/workbench2/src/views/project-panel/project-panel.tsx
index 2ddfca8178..58b9465f14 100644
--- a/services/workbench2/src/views/project-panel/project-panel.tsx
+++ b/services/workbench2/src/views/project-panel/project-panel.tsx
@@ -60,7 +60,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         width: '100%',
     },
     button: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
     },
 });
 
diff --git a/services/workbench2/src/views/public-favorites-panel/public-favorites-panel.tsx b/services/workbench2/src/views/public-favorites-panel/public-favorites-panel.tsx
index a0c4675f74..04c9a02845 100644
--- a/services/workbench2/src/views/public-favorites-panel/public-favorites-panel.tsx
+++ b/services/workbench2/src/views/public-favorites-panel/public-favorites-panel.tsx
@@ -42,11 +42,11 @@ type CssRules = "toolbar" | "button" | "root";
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     toolbar: {
-        paddingBottom: theme.spacing.unit * 3,
+        paddingBottom: theme.spacing(3),
         textAlign: "right"
     },
     button: {
-        marginLeft: theme.spacing.unit
+        marginLeft: theme.spacing
     },
     root: {
         width: '100%',
diff --git a/services/workbench2/src/views/repositories-panel/repositories-panel.tsx b/services/workbench2/src/views/repositories-panel/repositories-panel.tsx
index 3ec5c56c62..f9d0896990 100644
--- a/services/workbench2/src/views/repositories-panel/repositories-panel.tsx
+++ b/services/workbench2/src/views/repositories-panel/repositories-panel.tsx
@@ -41,7 +41,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         }
     },
     iconRow: {
-        paddingTop: theme.spacing.unit * 2,
+        paddingTop: theme.spacing(2),
         textAlign: 'right'
     },
     moreOptionsButton: {
diff --git a/services/workbench2/src/views/run-process-panel/run-process-first-step.tsx b/services/workbench2/src/views/run-process-panel/run-process-first-step.tsx
index ed6d5640ed..56bb44f11e 100644
--- a/services/workbench2/src/views/run-process-panel/run-process-first-step.tsx
+++ b/services/workbench2/src/views/run-process-panel/run-process-first-step.tsx
@@ -17,7 +17,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         alignSelf: 'flex-start'
     },
     searchGrid: {
-        marginBottom: theme.spacing.unit * 2
+        marginBottom: theme.spacing(2)
     },
     workflowDetailsGrid: {
         borderLeft: `1px solid ${theme.palette.grey["300"]}`
@@ -28,7 +28,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         overflow: 'auto'
     },
     listItem: {
-        padding: theme.spacing.unit,
+        padding: theme.spacing,
     },
     itemSelected: {
         backgroundColor: 'rgba(3, 190, 171, 0.3) !important'
diff --git a/services/workbench2/src/views/run-process-panel/run-process-inputs-form.tsx b/services/workbench2/src/views/run-process-panel/run-process-inputs-form.tsx
index ca402ab013..ad81293a60 100644
--- a/services/workbench2/src/views/run-process-panel/run-process-inputs-form.tsx
+++ b/services/workbench2/src/views/run-process-panel/run-process-inputs-form.tsx
@@ -62,7 +62,7 @@ type CssRules = 'inputItem';
 
 const styles: StyleRulesCallback<CssRules> = theme => ({
     inputItem: {
-        marginBottom: theme.spacing.unit * 2,
+        marginBottom: theme.spacing(2),
     }
 });
 
diff --git a/services/workbench2/src/views/search-results-panel/search-results-panel-view.tsx b/services/workbench2/src/views/search-results-panel/search-results-panel-view.tsx
index ed11326481..37366c9a73 100644
--- a/services/workbench2/src/views/search-results-panel/search-results-panel-view.tsx
+++ b/services/workbench2/src/views/search-results-panel/search-results-panel-view.tsx
@@ -48,7 +48,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         width: '100%'
     },
     siteManagerLink: {
-        marginRight: theme.spacing.unit * 2,
+        marginRight: theme.spacing(2),
         float: 'right'
     }
 });
diff --git a/services/workbench2/src/views/shared-with-me-panel/shared-with-me-panel.tsx b/services/workbench2/src/views/shared-with-me-panel/shared-with-me-panel.tsx
index e8f80d6774..dea02702a5 100644
--- a/services/workbench2/src/views/shared-with-me-panel/shared-with-me-panel.tsx
+++ b/services/workbench2/src/views/shared-with-me-panel/shared-with-me-panel.tsx
@@ -53,11 +53,11 @@ type CssRules = "toolbar" | "button" | "root";
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     toolbar: {
-        paddingBottom: theme.spacing.unit * 3,
+        paddingBottom: theme.spacing(3),
         textAlign: "right"
     },
     button: {
-        marginLeft: theme.spacing.unit
+        marginLeft: theme.spacing
     },
     root: {
         width: '100%',
diff --git a/services/workbench2/src/views/site-manager-panel/site-manager-panel-root.tsx b/services/workbench2/src/views/site-manager-panel/site-manager-panel-root.tsx
index 246bc8758c..22a68424ce 100644
--- a/services/workbench2/src/views/site-manager-panel/site-manager-panel-root.tsx
+++ b/services/workbench2/src/views/site-manager-panel/site-manager-panel-root.tsx
@@ -49,7 +49,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         textAlign: 'right'
     },
     table: {
-        marginTop: theme.spacing.unit
+        marginTop: theme.spacing
     },
     tableRow: {
         '& td, th': {
@@ -64,10 +64,10 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     buttonAdd: {
         marginLeft: 10,
-        marginTop: theme.spacing.unit * 3
+        marginTop: theme.spacing(3)
     },
     buttonLoggedIn: {
-        minHeight: theme.spacing.unit,
+        minHeight: theme.spacing,
         padding: 5,
         color: '#fff',
         backgroundColor: '#009966',
@@ -76,7 +76,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         }
     },
     buttonLoggedOut: {
-        minHeight: theme.spacing.unit,
+        minHeight: theme.spacing,
         padding: 5,
         color: '#000',
         backgroundColor: '#FFC414',
diff --git a/services/workbench2/src/views/ssh-key-panel/ssh-key-panel-root.tsx b/services/workbench2/src/views/ssh-key-panel/ssh-key-panel-root.tsx
index 344352adc7..61925909d8 100644
--- a/services/workbench2/src/views/ssh-key-panel/ssh-key-panel-root.tsx
+++ b/services/workbench2/src/views/ssh-key-panel/ssh-key-panel-root.tsx
@@ -24,7 +24,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         textAlign: 'right'
     },
     table: {
-        marginTop: theme.spacing.unit
+        marginTop: theme.spacing
     },
     tableRow: {
         '& td, th': {
diff --git a/services/workbench2/src/views/subprocess-panel/subprocess-panel-root.tsx b/services/workbench2/src/views/subprocess-panel/subprocess-panel-root.tsx
index 65c723f6d8..61a560fe77 100644
--- a/services/workbench2/src/views/subprocess-panel/subprocess-panel-root.tsx
+++ b/services/workbench2/src/views/subprocess-panel/subprocess-panel-root.tsx
@@ -29,7 +29,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     iconHeader: {
         fontSize: '1.875rem',
         color: theme.customs.colors.greyL,
-        marginRight: theme.spacing.unit * 2,
+        marginRight: theme.spacing(2),
     },
     cardHeader: {
         display: 'flex',
diff --git a/services/workbench2/src/views/trash-panel/trash-panel.tsx b/services/workbench2/src/views/trash-panel/trash-panel.tsx
index 31804fbdb8..6a86d68cdf 100644
--- a/services/workbench2/src/views/trash-panel/trash-panel.tsx
+++ b/services/workbench2/src/views/trash-panel/trash-panel.tsx
@@ -41,11 +41,11 @@ type CssRules = "toolbar" | "button" | "root";
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     toolbar: {
-        paddingBottom: theme.spacing.unit * 3,
+        paddingBottom: theme.spacing(3),
         textAlign: "right"
     },
     button: {
-        marginLeft: theme.spacing.unit
+        marginLeft: theme.spacing
     },
     root: {
         width: '100%',
diff --git a/services/workbench2/src/views/user-panel/user-panel.tsx b/services/workbench2/src/views/user-panel/user-panel.tsx
index 950262d8c6..11993da09a 100644
--- a/services/workbench2/src/views/user-panel/user-panel.tsx
+++ b/services/workbench2/src/views/user-panel/user-panel.tsx
@@ -31,8 +31,8 @@ type UserPanelRules = "button" | 'root';
 
 const styles = withStyles<UserPanelRules>(theme => ({
     button: {
-        marginTop: theme.spacing.unit,
-        marginRight: theme.spacing.unit * 2,
+        marginTop: theme.spacing,
+        marginRight: theme.spacing(2),
         textAlign: 'right',
         alignSelf: 'center'
     },
diff --git a/services/workbench2/src/views/user-profile-panel/user-profile-panel-root.tsx b/services/workbench2/src/views/user-profile-panel/user-profile-panel-root.tsx
index 4a2083711e..f03b480d3c 100644
--- a/services/workbench2/src/views/user-profile-panel/user-profile-panel-root.tsx
+++ b/services/workbench2/src/views/user-profile-panel/user-profile-panel-root.tsx
@@ -46,7 +46,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     emptyRoot: {
         width: '100%',
         overflow: 'auto',
-        padding: theme.spacing.unit * 4,
+        padding: theme.spacing(4),
     },
     gridItem: {
         height: 45,
@@ -71,10 +71,10 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     content: {
         // reserve space for the tab bar
-        height: `calc(100% - ${theme.spacing.unit * 7}px)`,
+        height: `calc(100% - ${theme.spacing(7)}px)`,
     },
     copyIcon: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
         color: theme.palette.grey["500"],
         cursor: 'pointer',
         display: 'inline',
diff --git a/services/workbench2/src/views/virtual-machine-panel/virtual-machine-admin-panel.tsx b/services/workbench2/src/views/virtual-machine-panel/virtual-machine-admin-panel.tsx
index 20665f178d..73295db958 100644
--- a/services/workbench2/src/views/virtual-machine-panel/virtual-machine-admin-panel.tsx
+++ b/services/workbench2/src/views/virtual-machine-panel/virtual-machine-admin-panel.tsx
@@ -29,7 +29,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         }
     },
     chipsRoot: {
-        margin: `0px -${theme.spacing.unit / 2}px`,
+        margin: `0px -${theme.spacing / 2}px`,
     },
     vmTableWrapper: {
         overflowX: 'auto',
diff --git a/services/workbench2/src/views/virtual-machine-panel/virtual-machine-user-panel.tsx b/services/workbench2/src/views/virtual-machine-panel/virtual-machine-user-panel.tsx
index f75b36a601..c6e4cb8d8b 100644
--- a/services/workbench2/src/views/virtual-machine-panel/virtual-machine-user-panel.tsx
+++ b/services/workbench2/src/views/virtual-machine-panel/virtual-machine-user-panel.tsx
@@ -26,11 +26,11 @@ const EXTRA_TOKEN = "exraToken";
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     button: {
-        marginTop: theme.spacing.unit,
-        marginBottom: theme.spacing.unit
+        marginTop: theme.spacing,
+        marginBottom: theme.spacing
     },
     codeSnippet: {
-        borderRadius: theme.spacing.unit * 0.5,
+        borderRadius: theme.spacing(0.5),
         border: '1px solid',
         borderColor: theme.palette.grey["400"],
     },
@@ -59,13 +59,13 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     },
     icon: {
         textAlign: "right",
-        marginTop: theme.spacing.unit
+        marginTop: theme.spacing
     },
     chipsRoot: {
-        margin: `0px -${theme.spacing.unit / 2}px`,
+        margin: `0px -${theme.spacing / 2}px`,
     },
     copyIcon: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
         color: theme.palette.grey["500"],
         cursor: 'pointer',
         display: 'inline',
diff --git a/services/workbench2/src/views/workbench/workbench-loading-screen.tsx b/services/workbench2/src/views/workbench/workbench-loading-screen.tsx
index 1b70ece6dc..980bdf3a2a 100644
--- a/services/workbench2/src/views/workbench/workbench-loading-screen.tsx
+++ b/services/workbench2/src/views/workbench/workbench-loading-screen.tsx
@@ -11,7 +11,7 @@ type CssRules = 'root' | 'img';
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     img: {
-        marginBottom: theme.spacing.unit * 4
+        marginBottom: theme.spacing(4)
     },
     root: {
         background: theme.palette.background.default,
diff --git a/services/workbench2/src/views/workbench/workbench.tsx b/services/workbench2/src/views/workbench/workbench.tsx
index 9f3039133f..6246bf39c1 100644
--- a/services/workbench2/src/views/workbench/workbench.tsx
+++ b/services/workbench2/src/views/workbench/workbench.tsx
@@ -112,7 +112,7 @@ type CssRules = "root" | "container" | "splitter" | "asidePanel" | "contentWrapp
 
 const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     root: {
-        paddingTop: theme.spacing.unit * 7,
+        paddingTop: theme.spacing(7),
         background: theme.palette.background.default,
     },
     container: {
@@ -128,19 +128,19 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         },
     },
     asidePanel: {
-        paddingTop: theme.spacing.unit,
+        paddingTop: theme.spacing,
         height: "100%",
     },
     contentWrapper: {
-        paddingTop: theme.spacing.unit,
+        paddingTop: theme.spacing,
         minWidth: 0,
     },
     content: {
         minWidth: 0,
-        paddingLeft: theme.spacing.unit * 3,
-        paddingRight: theme.spacing.unit * 3,
+        paddingLeft: theme.spacing(3),
+        paddingRight: theme.spacing(3),
         // Reserve vertical space for app bar + MainContentBar
-        minHeight: `calc(100vh - ${theme.spacing.unit * 16}px)`,
+        minHeight: `calc(100vh - ${theme.spacing(16)}px)`,
         display: "flex",
     },
 });
diff --git a/services/workbench2/src/views/workflow-panel/registered-workflow-panel.tsx b/services/workbench2/src/views/workflow-panel/registered-workflow-panel.tsx
index aa4c1b29d4..aa6bdb51b6 100644
--- a/services/workbench2/src/views/workflow-panel/registered-workflow-panel.tsx
+++ b/services/workbench2/src/views/workflow-panel/registered-workflow-panel.tsx
@@ -68,8 +68,8 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         color: theme.customs.colors.greyL
     },
     tag: {
-        marginRight: theme.spacing.unit / 2,
-        marginBottom: theme.spacing.unit / 2
+        marginRight: theme.spacing / 2,
+        marginBottom: theme.spacing / 2
     },
     label: {
         fontSize: '0.875rem',
@@ -96,27 +96,27 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
         }
     },
     readOnlyIcon: {
-        marginLeft: theme.spacing.unit,
+        marginLeft: theme.spacing,
         fontSize: 'small',
     },
     header: {
-        paddingTop: theme.spacing.unit,
-        paddingBottom: theme.spacing.unit,
+        paddingTop: theme.spacing,
+        paddingBottom: theme.spacing,
     },
     title: {
         overflow: 'hidden',
-        paddingTop: theme.spacing.unit * 0.5,
+        paddingTop: theme.spacing(0.5),
         color: theme.customs.colors.green700,
     },
     avatar: {
         alignSelf: 'flex-start',
-        paddingTop: theme.spacing.unit * 0.5
+        paddingTop: theme.spacing(0.5)
     },
     content: {
-        padding: theme.spacing.unit * 1.0,
-        paddingTop: theme.spacing.unit * 0.5,
+        padding: theme.spacing(1),
+        paddingTop: theme.spacing(0.5),
         '&:last-child': {
-            paddingBottom: theme.spacing.unit * 1,
+            paddingBottom: theme.spacing(1),
         }
     }
 });
diff --git a/services/workbench2/src/views/workflow-panel/workflow-description-card.tsx b/services/workbench2/src/views/workflow-panel/workflow-description-card.tsx
index df1b28112a..c99900c8e3 100644
--- a/services/workbench2/src/views/workflow-panel/workflow-description-card.tsx
+++ b/services/workbench2/src/views/workflow-panel/workflow-description-card.tsx
@@ -34,20 +34,20 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     inputTab: {
         overflow: 'auto',
         maxHeight: '300px',
-        marginTop: theme.spacing.unit
+        marginTop: theme.spacing
     },
     graphTab: {
-        marginTop: theme.spacing.unit,
+        marginTop: theme.spacing,
     },
     graphTabWithChosenWorkflow: {
         overflow: 'auto',
         height: '450px',
-        marginTop: theme.spacing.unit,
+        marginTop: theme.spacing,
     },
     descriptionTab: {
         overflow: 'auto',
         maxHeight: '300px',
-        marginTop: theme.spacing.unit,
+        marginTop: theme.spacing,
     },
     inputsTable: {
         tableLayout: 'fixed',
diff --git a/services/workbench2/src/views/workflow-panel/workflow-processes-panel-root.tsx b/services/workbench2/src/views/workflow-panel/workflow-processes-panel-root.tsx
index 64f24a2e36..6b30e78282 100644
--- a/services/workbench2/src/views/workflow-panel/workflow-processes-panel-root.tsx
+++ b/services/workbench2/src/views/workflow-panel/workflow-processes-panel-root.tsx
@@ -27,7 +27,7 @@ const styles: StyleRulesCallback<CssRules> = (theme: ArvadosTheme) => ({
     iconHeader: {
         fontSize: '1.875rem',
         color: theme.customs.colors.greyL,
-        marginRight: theme.spacing.unit * 2,
+        marginRight: theme.spacing(2),
     },
     cardHeader: {
         display: 'flex',
diff --git a/services/workbench2/yarn.lock b/services/workbench2/yarn.lock
index 130d22ee18..f1d721136d 100644
--- a/services/workbench2/yarn.lock
+++ b/services/workbench2/yarn.lock
@@ -1832,7 +1832,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@babel/runtime at npm:^7.12.5, @babel/runtime at npm:^7.16.3, @babel/runtime at npm:^7.23.2, @babel/runtime at npm:^7.5.5":
+"@babel/runtime at npm:^7.12.5, @babel/runtime at npm:^7.16.3, @babel/runtime at npm:^7.23.2, @babel/runtime at npm:^7.3.1, @babel/runtime at npm:^7.4.4, @babel/runtime at npm:^7.5.5, @babel/runtime at npm:^7.8.3, @babel/runtime at npm:^7.8.7":
   version: 7.24.4
   resolution: "@babel/runtime at npm:7.24.4"
   dependencies:
@@ -2028,6 +2028,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"@emotion/hash at npm:^0.8.0":
+  version: 0.8.0
+  resolution: "@emotion/hash at npm:0.8.0"
+  checksum: 4b35d88a97e67275c1d990c96d3b0450451d089d1508619488fc0acb882cb1ac91e93246d471346ebd1b5402215941ef4162efe5b51534859b39d8b3a0e3ffaa
+  languageName: node
+  linkType: hard
+
 "@emotion/is-prop-valid at npm:1.2.1":
   version: 1.2.1
   resolution: "@emotion/is-prop-valid at npm:1.2.1"
@@ -2491,41 +2498,30 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@material-ui/core at npm:3.9.3":
-  version: 3.9.3
-  resolution: "@material-ui/core at npm:3.9.3"
+"@material-ui/core at npm:^4.0.0":
+  version: 4.12.4
+  resolution: "@material-ui/core at npm:4.12.4"
   dependencies:
-    "@babel/runtime": ^7.2.0
-    "@material-ui/system": ^3.0.0-alpha.0
-    "@material-ui/utils": ^3.0.0-alpha.2
-    "@types/jss": ^9.5.6
-    "@types/react-transition-group": ^2.0.8
-    brcast: ^3.0.1
-    classnames: ^2.2.5
-    csstype: ^2.5.2
-    debounce: ^1.1.0
-    deepmerge: ^3.0.0
-    dom-helpers: ^3.2.1
-    hoist-non-react-statics: ^3.2.1
-    is-plain-object: ^2.0.4
-    jss: ^9.8.7
-    jss-camel-case: ^6.0.0
-    jss-default-unit: ^8.0.2
-    jss-global: ^3.0.0
-    jss-nested: ^6.0.1
-    jss-props-sort: ^6.0.0
-    jss-vendor-prefixer: ^7.0.0
-    normalize-scroll-left: ^0.1.2
-    popper.js: ^1.14.1
-    prop-types: ^15.6.0
-    react-event-listener: ^0.6.2
-    react-transition-group: ^2.2.1
-    recompose: 0.28.0 - 0.30.0
-    warning: ^4.0.1
+    "@babel/runtime": ^7.4.4
+    "@material-ui/styles": ^4.11.5
+    "@material-ui/system": ^4.12.2
+    "@material-ui/types": 5.1.0
+    "@material-ui/utils": ^4.11.3
+    "@types/react-transition-group": ^4.2.0
+    clsx: ^1.0.4
+    hoist-non-react-statics: ^3.3.2
+    popper.js: 1.16.1-lts
+    prop-types: ^15.7.2
+    react-is: ^16.8.0 || ^17.0.0
+    react-transition-group: ^4.4.0
   peerDependencies:
-    react: ^16.3.0
-    react-dom: ^16.3.0
-  checksum: 127681c84d17b95b571feb53593ce284c012de8eb30688ddcec221eea27bf6243dc353d63c43b58a0868cf46699b19651e841d51d070d35c713f232c3c3dd66a
+    "@types/react": ^16.8.6 || ^17.0.0
+    react: ^16.8.0 || ^17.0.0
+    react-dom: ^16.8.0 || ^17.0.0
+  peerDependenciesMeta:
+    "@types/react":
+      optional: true
+  checksum: 96b48deccda87ced841b1db45bed2be6d2b6d1b4eae72cd5c9b931201cb72026330688e0fead54e715bcead40b267ea88bde781c9f1563b1a71a5c51bf187289
   languageName: node
   linkType: hard
 
@@ -2543,32 +2539,79 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@material-ui/system at npm:^3.0.0-alpha.0":
-  version: 3.0.0-alpha.2
-  resolution: "@material-ui/system at npm:3.0.0-alpha.2"
+"@material-ui/styles at npm:^4.11.5":
+  version: 4.11.5
+  resolution: "@material-ui/styles at npm:4.11.5"
   dependencies:
-    "@babel/runtime": ^7.2.0
-    deepmerge: ^3.0.0
-    prop-types: ^15.6.0
-    warning: ^4.0.1
+    "@babel/runtime": ^7.4.4
+    "@emotion/hash": ^0.8.0
+    "@material-ui/types": 5.1.0
+    "@material-ui/utils": ^4.11.3
+    clsx: ^1.0.4
+    csstype: ^2.5.2
+    hoist-non-react-statics: ^3.3.2
+    jss: ^10.5.1
+    jss-plugin-camel-case: ^10.5.1
+    jss-plugin-default-unit: ^10.5.1
+    jss-plugin-global: ^10.5.1
+    jss-plugin-nested: ^10.5.1
+    jss-plugin-props-sort: ^10.5.1
+    jss-plugin-rule-value-function: ^10.5.1
+    jss-plugin-vendor-prefixer: ^10.5.1
+    prop-types: ^15.7.2
   peerDependencies:
-    react: ^16.3.0
-    react-dom: ^16.3.0
-  checksum: 3aacb8b4afe2a820844b90905cfcd86ab934108cd719f11713ee46f8a4da30cb8c50e86219e1440b3c6dd333a09d4123cd1990d9c51862c1d56ec2b36e4d7ded
+    "@types/react": ^16.8.6 || ^17.0.0
+    react: ^16.8.0 || ^17.0.0
+    react-dom: ^16.8.0 || ^17.0.0
+  peerDependenciesMeta:
+    "@types/react":
+      optional: true
+  checksum: dbf3985ef57c1b7dae3fd916d5bfd61f2097afb93c9e1f64832cfcb8fc9bbf38a504c9632ed7b76eb5d235670083d9e66d35942bc976b7cd148c71d75b808e82
   languageName: node
   linkType: hard
 
-"@material-ui/utils at npm:^3.0.0-alpha.2":
-  version: 3.0.0-alpha.3
-  resolution: "@material-ui/utils at npm:3.0.0-alpha.3"
+"@material-ui/system at npm:^4.12.2":
+  version: 4.12.2
+  resolution: "@material-ui/system at npm:4.12.2"
   dependencies:
-    "@babel/runtime": ^7.2.0
-    prop-types: ^15.6.0
-    react-is: ^16.6.3
+    "@babel/runtime": ^7.4.4
+    "@material-ui/utils": ^4.11.3
+    csstype: ^2.5.2
+    prop-types: ^15.7.2
   peerDependencies:
-    react: ^16.3.0
-    react-dom: ^16.3.0
-  checksum: 589a16245338c374b604a793d9f7a05bd932c9710f78261e46176b74a61d5d308b3e36dab688988ee5177d689c53d9e9da4649eca009ea11d8aac948db27af50
+    "@types/react": ^16.8.6 || ^17.0.0
+    react: ^16.8.0 || ^17.0.0
+    react-dom: ^16.8.0 || ^17.0.0
+  peerDependenciesMeta:
+    "@types/react":
+      optional: true
+  checksum: ebe6b3cc5f111034eacd763014f3260f7647b5e0cd132870f2ee18855cf3d51a996b4633035fe6f5f8965489944db4ac0cb3b71b84a765faa35a6861532ac9f6
+  languageName: node
+  linkType: hard
+
+"@material-ui/types at npm:5.1.0":
+  version: 5.1.0
+  resolution: "@material-ui/types at npm:5.1.0"
+  peerDependencies:
+    "@types/react": "*"
+  peerDependenciesMeta:
+    "@types/react":
+      optional: true
+  checksum: 64ac0938ee6f48011ba596f7422ab0660d9a8d9b4f5f183b39bd63185b1ce724209f65580f0af686d59b524603ffa57418ca2d443b69bec894303f80779c61f8
+  languageName: node
+  linkType: hard
+
+"@material-ui/utils at npm:^4.11.3":
+  version: 4.11.3
+  resolution: "@material-ui/utils at npm:4.11.3"
+  dependencies:
+    "@babel/runtime": ^7.4.4
+    prop-types: ^15.7.2
+    react-is: ^16.8.0 || ^17.0.0
+  peerDependencies:
+    react: ^16.8.0 || ^17.0.0
+    react-dom: ^16.8.0 || ^17.0.0
+  checksum: 05ff67c982b33d3b4260cfaeaf566f3ccaecaebb231907ed626bcc30322d89d705bfe79b8805c0dda2f1dc2cfa98ca9d731ec8ae12868da7a98568a41c7dc231
   languageName: node
   linkType: hard
 
@@ -3206,16 +3249,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@types/jss at npm:^9.5.6":
-  version: 9.5.8
-  resolution: "@types/jss at npm:9.5.8"
-  dependencies:
-    csstype: ^2.0.0
-    indefinite-observable: ^1.0.1
-  checksum: 6e51707529a15f2f5ff94555ecb555d29427fd10c4f3d2d29474934292e365c2dfaa4ad30b2ab46946201cbca7f6e8df56513a22fc6ceca10a979db8338935c5
-  languageName: node
-  linkType: hard
-
 "@types/jssha at npm:0.0.29":
   version: 0.0.29
   resolution: "@types/jssha at npm:0.0.29"
@@ -3393,12 +3426,12 @@ __metadata:
   languageName: node
   linkType: hard
 
-"@types/react-transition-group at npm:^2.0.8":
-  version: 2.9.2
-  resolution: "@types/react-transition-group at npm:2.9.2"
+"@types/react-transition-group at npm:^4.2.0":
+  version: 4.4.10
+  resolution: "@types/react-transition-group at npm:4.4.10"
   dependencies:
     "@types/react": "*"
-  checksum: 6f30fffc221339de90bd3e999f32328618cfaedfcaa501603f5ddc5bed1c2dbaa0d51347c3a25e5f8fd3041c671aabd2b7bfbcad611a7636adcd9da4e0666fa5
+  checksum: fe2ea11f70251e9f79f368e198c18fd469b1d4f1e1d44e4365845b44e15974b0ec925100036f449b023b0ca3480a82725c5f0a73040e282ad32ec7b0def9b57c
   languageName: node
   linkType: hard
 
@@ -4587,7 +4620,7 @@ __metadata:
     "@fortawesome/fontawesome-svg-core": 1.2.28
     "@fortawesome/free-solid-svg-icons": 5.13.0
     "@fortawesome/react-fontawesome": 0.1.9
-    "@material-ui/core": 3.9.3
+    "@material-ui/core": ^4.0.0
     "@material-ui/icons": 3.0.1
     "@sinonjs/fake-timers": ^10.3.0
     "@types/classnames": 2.2.6
@@ -5385,13 +5418,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"brcast at npm:^3.0.1":
-  version: 3.0.2
-  resolution: "brcast at npm:3.0.2"
-  checksum: 7abae42088c6ffad9ff9e0fc756607a1764e299d737b3007fa49a73a38b3fda1e51362713f645db7991878ca388de94942011188450324c3debd08509315fa94
-  languageName: node
-  linkType: hard
-
 "brorand at npm:^1.0.1, brorand at npm:^1.1.0":
   version: 1.1.0
   resolution: "brorand at npm:1.1.0"
@@ -6174,6 +6200,13 @@ __metadata:
   languageName: node
   linkType: hard
 
+"clsx at npm:^1.0.4":
+  version: 1.2.1
+  resolution: "clsx at npm:1.2.1"
+  checksum: 30befca8019b2eb7dbad38cff6266cf543091dae2825c856a62a8ccf2c3ab9c2907c4d12b288b73101196767f66812365400a227581484a05f968b0307cfaf12
+  languageName: node
+  linkType: hard
+
 "co at npm:^4.6.0":
   version: 4.6.0
   resolution: "co at npm:4.6.0"
@@ -6836,12 +6869,13 @@ __metadata:
   languageName: node
   linkType: hard
 
-"css-vendor at npm:^0.3.8":
-  version: 0.3.8
-  resolution: "css-vendor at npm:0.3.8"
+"css-vendor at npm:^2.0.8":
+  version: 2.0.8
+  resolution: "css-vendor at npm:2.0.8"
   dependencies:
+    "@babel/runtime": ^7.8.3
     is-in-browser: ^1.0.2
-  checksum: 0a2e0cd0d4adbfdb6236950e7f9697b8a9b294eb2ae7c95996a95d273d2a63316ce793cb4654ae048aa3c129327124d2a29aada9935a0c284f9cc341c2768c8a
+  checksum: 647cd4ea5e401c65c59376255aa2b708e92bf84fba9ce2b3ff5ecb94bf51d74ac374052b1cf9956ef7419b8ebf07fcea9a7683d2d2459127b2ca747ab5b98745
   languageName: node
   linkType: hard
 
@@ -7015,7 +7049,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"csstype at npm:^2.0.0, csstype at npm:^2.5.2":
+"csstype at npm:^2.5.2":
   version: 2.6.17
   resolution: "csstype at npm:2.6.17"
   checksum: 6eee5cf81a4b1b2f0e8707b4accd7504f7cceb4b5a496d58c6e4fcea1a70c1443a975e45d722c892d372ffe788fa278ddfe4d70c5f881375f34e48bb99c70ecc
@@ -7206,13 +7240,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"debounce at npm:^1.1.0":
-  version: 1.2.1
-  resolution: "debounce at npm:1.2.1"
-  checksum: 682a89506d9e54fb109526f4da255c5546102fbb8e3ae75eef3b04effaf5d4853756aee97475cd4650641869794e44f410eeb20ace2b18ea592287ab2038519e
-  languageName: node
-  linkType: hard
-
 "debug at npm:2.6.9, debug at npm:^2.2.0, debug at npm:^2.3.3, debug at npm:^2.6.0":
   version: 2.6.9
   resolution: "debug at npm:2.6.9"
@@ -7333,13 +7360,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"deepmerge at npm:^3.0.0":
-  version: 3.3.0
-  resolution: "deepmerge at npm:3.3.0"
-  checksum: 4322195389e0170a0443c07b36add19b90249802c4b47b96265fdc5f5d8beddf491d5e50cbc5bfd65f85ccf76598173083863c202f5463b3b667aca8be75d5ac
-  languageName: node
-  linkType: hard
-
 "deepmerge at npm:^4.2.2":
   version: 4.3.1
   resolution: "deepmerge at npm:4.3.1"
@@ -7623,7 +7643,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"dom-helpers at npm:^3.2.1, dom-helpers at npm:^3.3.1, dom-helpers at npm:^3.4.0":
+"dom-helpers at npm:^3.3.1, dom-helpers at npm:^3.4.0":
   version: 3.4.0
   resolution: "dom-helpers at npm:3.4.0"
   dependencies:
@@ -7632,6 +7652,16 @@ __metadata:
   languageName: node
   linkType: hard
 
+"dom-helpers at npm:^5.0.1":
+  version: 5.2.1
+  resolution: "dom-helpers at npm:5.2.1"
+  dependencies:
+    "@babel/runtime": ^7.8.7
+    csstype: ^3.0.2
+  checksum: 863ba9e086f7093df3376b43e74ce4422571d404fc9828bf2c56140963d5edf0e56160f9b2f3bb61b282c07f8fc8134f023c98fd684bddcb12daf7b0f14d951c
+  languageName: node
+  linkType: hard
+
 "dom-serializer at npm:0":
   version: 0.2.2
   resolution: "dom-serializer at npm:0.2.2"
@@ -10334,7 +10364,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"hoist-non-react-statics at npm:^3.2.1":
+"hoist-non-react-statics at npm:^3.3.2":
   version: 3.3.2
   resolution: "hoist-non-react-statics at npm:3.3.2"
   dependencies:
@@ -10619,7 +10649,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"hyphenate-style-name at npm:^1.0.2":
+"hyphenate-style-name at npm:^1.0.3":
   version: 1.0.4
   resolution: "hyphenate-style-name at npm:1.0.4"
   checksum: 4f5bf4b055089754924babebaa23c17845937bcca6aee95d5d015f8fa1e6814279002bd6a9e541e3fac2cd02519fc76305396727066c57c8e21a7e73e7a12137
@@ -10794,15 +10824,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"indefinite-observable at npm:^1.0.1":
-  version: 1.0.2
-  resolution: "indefinite-observable at npm:1.0.2"
-  dependencies:
-    symbol-observable: 1.2.0
-  checksum: 69a337967f48fca18989f9d68ad98c7220ed9b499bf00330ff72669a9583cb7f8e82f801da10720f720edf1313f427c77ce793350bdc413c952cec8ce112fc12
-  languageName: node
-  linkType: hard
-
 "indent-string at npm:^4.0.0":
   version: 4.0.0
   resolution: "indent-string at npm:4.0.0"
@@ -12545,74 +12566,89 @@ __metadata:
   languageName: node
   linkType: hard
 
-"jss-camel-case at npm:^6.0.0":
-  version: 6.1.0
-  resolution: "jss-camel-case at npm:6.1.0"
+"jss-plugin-camel-case at npm:^10.5.1":
+  version: 10.10.0
+  resolution: "jss-plugin-camel-case at npm:10.10.0"
   dependencies:
-    hyphenate-style-name: ^1.0.2
-  peerDependencies:
-    jss: ^9.7.0
-  checksum: f20ad892cddc30241b5127d648233b513ce57b2a6ed2f710cd995510f8d06e1418cd8f6e8e50dc6bd60b2e8a35159bfdeb40143938e0f2cdc19fd39279953789
+    "@babel/runtime": ^7.3.1
+    hyphenate-style-name: ^1.0.3
+    jss: 10.10.0
+  checksum: 693485b86f7a0e0bd0c16b8ddd057ca02a993fc088558c96501f9131e7e6261cc9f4b08047879a68441c688c40dceeb5219b1f15ade9043935aade4f37f5ca85
   languageName: node
   linkType: hard
 
-"jss-default-unit at npm:^8.0.2":
-  version: 8.0.2
-  resolution: "jss-default-unit at npm:8.0.2"
-  peerDependencies:
-    jss: ^9.4.0
-  checksum: 5277c5ccc3d56f5c137d6d65f0fc36d15eb22ef08b5949e887ee75e9f4f25197e25f2a99706b70a2828cee010fd8ed7484fb1bb2086fe327f2b24b1bdcc22abb
+"jss-plugin-default-unit at npm:^10.5.1":
+  version: 10.10.0
+  resolution: "jss-plugin-default-unit at npm:10.10.0"
+  dependencies:
+    "@babel/runtime": ^7.3.1
+    jss: 10.10.0
+  checksum: 6e56213830753ad80bca3824973a667106defaef698d5996d45d03a0e2a3e035b33cd257aa8015040c41bd6669e7598dce72c36099d7ae69db758a7b2ca453fa
   languageName: node
   linkType: hard
 
-"jss-global at npm:^3.0.0":
-  version: 3.0.0
-  resolution: "jss-global at npm:3.0.0"
-  peerDependencies:
-    jss: ^9.0.0
-  checksum: e3fa80d8251ba5f183d9b0b4416d64e8f5d285cfdb595cc600daf1a1366b67bca573939bb71d98b6596bf4d6f2c95711cf53a358af3d63cd7945dbb434c6547b
+"jss-plugin-global at npm:^10.5.1":
+  version: 10.10.0
+  resolution: "jss-plugin-global at npm:10.10.0"
+  dependencies:
+    "@babel/runtime": ^7.3.1
+    jss: 10.10.0
+  checksum: f3af4f40358e96cf89e0c7c84b6e441dc9b4d543cd6109fdf9314a9818fd780d252035f46cc526c3d3fb4393bc29effc6993cc22e04f4e67ec3c889ab760d580
   languageName: node
   linkType: hard
 
-"jss-nested at npm:^6.0.1":
-  version: 6.0.1
-  resolution: "jss-nested at npm:6.0.1"
+"jss-plugin-nested at npm:^10.5.1":
+  version: 10.10.0
+  resolution: "jss-plugin-nested at npm:10.10.0"
   dependencies:
-    warning: ^3.0.0
-  peerDependencies:
-    jss: ^9.0.0
-  checksum: 437bdacc559be0b4b5bc1faa2bc77b5c6cf14733fefbf73a34bb7335786b9f08e4e79b3d73cf83b386959adcd8fa9d725877912e96d9a0921ed38baa1a69b8d9
+    "@babel/runtime": ^7.3.1
+    jss: 10.10.0
+    tiny-warning: ^1.0.2
+  checksum: 190094375972b68eb8f683387c74e97dc8347e7cc4f2fbfd40b3baf077dfde83d70e57be56744690d22537c0390e0a398714d86736df820c64e498df95f937de
   languageName: node
   linkType: hard
 
-"jss-props-sort at npm:^6.0.0":
-  version: 6.0.0
-  resolution: "jss-props-sort at npm:6.0.0"
-  peerDependencies:
-    jss: ^9.0.0
-  checksum: 82a04f625a2f2b3a71b2fcb00b1ed0478137c83dc47c323d24c7ea88d08c9ea295b061f99cf264db133fef3435366d6da594724f7713e0415dc50b4eff2aeb53
+"jss-plugin-props-sort at npm:^10.5.1":
+  version: 10.10.0
+  resolution: "jss-plugin-props-sort at npm:10.10.0"
+  dependencies:
+    "@babel/runtime": ^7.3.1
+    jss: 10.10.0
+  checksum: 274483444b6733bd58d229ebdcdb32b3c24172bc83cb2f6f8364926de19acd872758bcf06c7b3af11cf75504a67a7d67abba62b25081d144585a56b4df9512ba
   languageName: node
   linkType: hard
 
-"jss-vendor-prefixer at npm:^7.0.0":
-  version: 7.0.0
-  resolution: "jss-vendor-prefixer at npm:7.0.0"
+"jss-plugin-rule-value-function at npm:^10.5.1":
+  version: 10.10.0
+  resolution: "jss-plugin-rule-value-function at npm:10.10.0"
   dependencies:
-    css-vendor: ^0.3.8
-  peerDependencies:
-    jss: ^9.0.0
-  checksum: 8ec3608711833e79da7ccfffd8177e752f16093589fa28d3a24ec19e6588fbc6a07cc5cacf59ef4c111ab1d0fb72e07b88cb3444eb8c0c6ed4cc8107da984633
+    "@babel/runtime": ^7.3.1
+    jss: 10.10.0
+    tiny-warning: ^1.0.2
+  checksum: 009c9593b9be8b9f1030b797e58e3c233d90e034e5c68b0cabd25bffc7da965c69dc1ccb1bb6a542d72bb824df89036b2264fe564e8538320ef99febaf2882ee
+  languageName: node
+  linkType: hard
+
+"jss-plugin-vendor-prefixer at npm:^10.5.1":
+  version: 10.10.0
+  resolution: "jss-plugin-vendor-prefixer at npm:10.10.0"
+  dependencies:
+    "@babel/runtime": ^7.3.1
+    css-vendor: ^2.0.8
+    jss: 10.10.0
+  checksum: 879b7233f9b0b571074dc2b88d97a05dbb949012ba2405f1481bbedd521167dc835133632adb3f2d8ffceddd337c8c13e3e8b1931590516c0664039598752dff
   languageName: node
   linkType: hard
 
-"jss at npm:^9.8.7":
-  version: 9.8.7
-  resolution: "jss at npm:9.8.7"
+"jss at npm:10.10.0, jss at npm:^10.5.1":
+  version: 10.10.0
+  resolution: "jss at npm:10.10.0"
   dependencies:
+    "@babel/runtime": ^7.3.1
+    csstype: ^3.0.2
     is-in-browser: ^1.1.3
-    symbol-observable: ^1.1.0
-    warning: ^3.0.0
-  checksum: ebb264cc893fb8c17a0277875947f8f72e01f5be991bf7f61a39abb861e1276e75ee402fdd2be9ce827af839a1a08bd81ad86a4e108d57fd7d7ebb2361837a53
+    tiny-warning: ^1.0.2
+  checksum: ecf71971df42729668c283e432e841349b7fdbe52e520f7704991cf4a738fd2451ec0feeb25c12cdc5addf7facecf838e74e62936fd461fb4c99f23d54a4792d
   languageName: node
   linkType: hard
 
@@ -14203,13 +14239,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"normalize-scroll-left at npm:^0.1.2":
-  version: 0.1.2
-  resolution: "normalize-scroll-left at npm:0.1.2"
-  checksum: 817d5a659ba6f14f458cd03a5a0f98ec2a9d7e6c63c160f2db164827b87bb77c0237752890a18d11054fe628907493c5f4d8914907585ec9fbba3de26d2a6815
-  languageName: node
-  linkType: hard
-
 "normalize-url at npm:1.9.1":
   version: 1.9.1
   resolution: "normalize-url at npm:1.9.1"
@@ -15049,10 +15078,10 @@ __metadata:
   languageName: node
   linkType: hard
 
-"popper.js at npm:^1.14.1":
-  version: 1.16.1
-  resolution: "popper.js at npm:1.16.1"
-  checksum: c56ae5001ec50a77ee297a8061a0221d99d25c7348d2e6bcd3e45a0d0f32a1fd81bca29d46cb0d4bdf13efb77685bd6a0ce93f9eb3c608311a461f945fffedbe
+"popper.js at npm:1.16.1-lts":
+  version: 1.16.1-lts
+  resolution: "popper.js at npm:1.16.1-lts"
+  checksum: 27c00b5b07afa91a5e9f9db78a9a61b50f44ca156d09c851cd29d79cd359e54cfde4288ae555b88801438227e452e56cb4b56bd79fd45ab17dac780a70a7e9ac
   languageName: node
   linkType: hard
 
@@ -16480,7 +16509,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"react-event-listener at npm:^0.6.2, react-event-listener at npm:^0.6.6":
+"react-event-listener at npm:^0.6.6":
   version: 0.6.6
   resolution: "react-event-listener at npm:0.6.6"
   dependencies:
@@ -16517,14 +16546,14 @@ __metadata:
   languageName: node
   linkType: hard
 
-"react-is at npm:^16.13.1, react-is at npm:^16.6.3, react-is at npm:^16.7.0, react-is at npm:^16.8.1, react-is at npm:^16.8.6":
+"react-is at npm:^16.13.1, react-is at npm:^16.7.0, react-is at npm:^16.8.1, react-is at npm:^16.8.6":
   version: 16.13.1
   resolution: "react-is at npm:16.13.1"
   checksum: f7a19ac3496de32ca9ae12aa030f00f14a3d45374f1ceca0af707c831b2a6098ef0d6bdae51bd437b0a306d7f01d4677fcc8de7c0d331eb47ad0f46130e53c5f
   languageName: node
   linkType: hard
 
-"react-is at npm:^17.0.1":
+"react-is at npm:^16.8.0 || ^17.0.0, react-is at npm:^17.0.1":
   version: 17.0.2
   resolution: "react-is at npm:17.0.2"
   checksum: 9d6d111d8990dc98bc5402c1266a808b0459b5d54830bbea24c12d908b536df7883f268a7868cfaedde3dd9d4e0d574db456f84d2e6df9c4526f99bb4b5344d8
@@ -16776,7 +16805,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"react-transition-group at npm:^2.2.1, react-transition-group at npm:^2.5.3":
+"react-transition-group at npm:^2.5.3":
   version: 2.9.0
   resolution: "react-transition-group at npm:2.9.0"
   dependencies:
@@ -16791,6 +16820,21 @@ __metadata:
   languageName: node
   linkType: hard
 
+"react-transition-group at npm:^4.4.0":
+  version: 4.4.5
+  resolution: "react-transition-group at npm:4.4.5"
+  dependencies:
+    "@babel/runtime": ^7.5.5
+    dom-helpers: ^5.0.1
+    loose-envify: ^1.4.0
+    prop-types: ^15.6.2
+  peerDependencies:
+    react: ">=16.6.0"
+    react-dom: ">=16.6.0"
+  checksum: 75602840106aa9c6545149d6d7ae1502fb7b7abadcce70a6954c4b64a438ff1cd16fc77a0a1e5197cdd72da398f39eb929ea06f9005c45b132ed34e056ebdeb1
+  languageName: node
+  linkType: hard
+
 "react-virtualized-auto-sizer at npm:1.0.2":
   version: 1.0.2
   resolution: "react-virtualized-auto-sizer at npm:1.0.2"
@@ -16908,22 +16952,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"recompose at npm:0.28.0 - 0.30.0":
-  version: 0.30.0
-  resolution: "recompose at npm:0.30.0"
-  dependencies:
-    "@babel/runtime": ^7.0.0
-    change-emitter: ^0.1.2
-    fbjs: ^0.8.1
-    hoist-non-react-statics: ^2.3.1
-    react-lifecycles-compat: ^3.0.2
-    symbol-observable: ^1.0.4
-  peerDependencies:
-    react: ^0.14.0 || ^15.0.0 || ^16.0.0
-  checksum: 18e58252336d0628b22db1e38407d32e836648e6d5c9453ba37c9f8030138b3429ee3952b053a13b60311f8b60893b207a761466bb293083542db0cf317b7a41
-  languageName: node
-  linkType: hard
-
 "recompose at npm:^0.27.1":
   version: 0.27.1
   resolution: "recompose at npm:0.27.1"
@@ -19192,7 +19220,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"symbol-observable at npm:1.2.0, symbol-observable at npm:^1.0.3, symbol-observable at npm:^1.0.4, symbol-observable at npm:^1.1.0, symbol-observable at npm:^1.2.0":
+"symbol-observable at npm:^1.0.3, symbol-observable at npm:^1.0.4, symbol-observable at npm:^1.2.0":
   version: 1.2.0
   resolution: "symbol-observable at npm:1.2.0"
   checksum: 48ffbc22e3d75f9853b3ff2ae94a44d84f386415110aea5effc24d84c502e03a4a6b7a8f75ebaf7b585780bda34eb5d6da3121f826a6f93398429d30032971b6
@@ -19419,7 +19447,7 @@ __metadata:
   languageName: node
   linkType: hard
 
-"tiny-warning at npm:^1.0.0":
+"tiny-warning at npm:^1.0.0, tiny-warning at npm:^1.0.2":
   version: 1.0.3
   resolution: "tiny-warning at npm:1.0.3"
   checksum: da62c4acac565902f0624b123eed6dd3509bc9a8d30c06e017104bedcf5d35810da8ff72864400ad19c5c7806fc0a8323c68baf3e326af7cb7d969f846100d71
@@ -20402,15 +20430,6 @@ __metadata:
   languageName: node
   linkType: hard
 
-"warning at npm:^3.0.0":
-  version: 3.0.0
-  resolution: "warning at npm:3.0.0"
-  dependencies:
-    loose-envify: ^1.0.0
-  checksum: c9f99a12803aab81b29858e7dc3415bf98b41baee3a4c3acdeb680d98c47b6e17490f1087dccc54432deed5711a5ce0ebcda2b27e9b5eb054c32ae50acb4419c
-  languageName: node
-  linkType: hard
-
 "warning at npm:^4.0.1":
   version: 4.0.3
   resolution: "warning at npm:4.0.3"

-----------------------------------------------------------------------


hooks/post-receive
-- 




More information about the arvados-commits mailing list