diff --git a/package-lock.json b/package-lock.json
index b4b36f6bddf8d46f2d3b880d265e638326a64b62..ee4ec5cc2f63b1284db478bb41ef2287e44483e5 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -9,10 +9,13 @@
       "version": "0.1.0",
       "dependencies": {
         "@ahooksjs/use-url-state": "^3.5.0",
+        "@emotion/react": "^11.11.1",
+        "@emotion/styled": "^11.11.0",
         "@fontsource/roboto": "^4.1.0",
-        "@material-ui/core": "^4.11.2",
-        "@material-ui/icons": "^4.11.2",
-        "@material-ui/lab": "^4.0.0-alpha.57",
+        "@mui/icons-material": "^5.14.1",
+        "@mui/lab": "^5.0.0-alpha.137",
+        "@mui/material": "^5.14.1",
+        "@mui/styles": "^5.14.1",
         "@testing-library/jest-dom": "^5.11.9",
         "@testing-library/react": "^11.2.3",
         "@testing-library/user-event": "^12.6.0",
@@ -395,7 +398,6 @@
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
       "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
-      "dev": true,
       "dependencies": {
         "@babel/types": "^7.18.6"
       },
@@ -518,7 +520,6 @@
       "version": "7.19.4",
       "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
       "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
-      "dev": true,
       "engines": {
         "node": ">=6.9.0"
       }
@@ -2027,9 +2028,9 @@
       "dev": true
     },
     "node_modules/@babel/runtime": {
-      "version": "7.21.0",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
-      "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz",
+      "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==",
       "dependencies": {
         "regenerator-runtime": "^0.13.11"
       },
@@ -2088,7 +2089,6 @@
       "version": "7.21.3",
       "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz",
       "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==",
-      "dev": true,
       "dependencies": {
         "@babel/helper-string-parser": "^7.19.4",
         "@babel/helper-validator-identifier": "^7.19.1",
@@ -2411,10 +2411,167 @@
         "node": ">=10.0.0"
       }
     },
-    "node_modules/@emotion/hash": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
-      "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+    "node_modules/@emotion/babel-plugin": {
+      "version": "11.11.0",
+      "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz",
+      "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==",
+      "dependencies": {
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/runtime": "^7.18.3",
+        "@emotion/hash": "^0.9.1",
+        "@emotion/memoize": "^0.8.1",
+        "@emotion/serialize": "^1.1.2",
+        "babel-plugin-macros": "^3.1.0",
+        "convert-source-map": "^1.5.0",
+        "escape-string-regexp": "^4.0.0",
+        "find-root": "^1.1.0",
+        "source-map": "^0.5.7",
+        "stylis": "4.2.0"
+      }
+    },
+    "node_modules/@emotion/babel-plugin/node_modules/@emotion/hash": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+      "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+    },
+    "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": {
+      "version": "4.0.0",
+      "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+      "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==",
+      "engines": {
+        "node": ">=10"
+      },
+      "funding": {
+        "url": "https://github.com/sponsors/sindresorhus"
+      }
+    },
+    "node_modules/@emotion/babel-plugin/node_modules/source-map": {
+      "version": "0.5.7",
+      "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+      "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==",
+      "engines": {
+        "node": ">=0.10.0"
+      }
+    },
+    "node_modules/@emotion/cache": {
+      "version": "11.11.0",
+      "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz",
+      "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==",
+      "dependencies": {
+        "@emotion/memoize": "^0.8.1",
+        "@emotion/sheet": "^1.2.2",
+        "@emotion/utils": "^1.2.1",
+        "@emotion/weak-memoize": "^0.3.1",
+        "stylis": "4.2.0"
+      }
+    },
+    "node_modules/@emotion/is-prop-valid": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
+      "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
+      "dependencies": {
+        "@emotion/memoize": "^0.8.1"
+      }
+    },
+    "node_modules/@emotion/memoize": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+      "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+    },
+    "node_modules/@emotion/react": {
+      "version": "11.11.1",
+      "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz",
+      "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==",
+      "dependencies": {
+        "@babel/runtime": "^7.18.3",
+        "@emotion/babel-plugin": "^11.11.0",
+        "@emotion/cache": "^11.11.0",
+        "@emotion/serialize": "^1.1.2",
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@emotion/utils": "^1.2.1",
+        "@emotion/weak-memoize": "^0.3.1",
+        "hoist-non-react-statics": "^3.3.1"
+      },
+      "peerDependencies": {
+        "react": ">=16.8.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@emotion/serialize": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz",
+      "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==",
+      "dependencies": {
+        "@emotion/hash": "^0.9.1",
+        "@emotion/memoize": "^0.8.1",
+        "@emotion/unitless": "^0.8.1",
+        "@emotion/utils": "^1.2.1",
+        "csstype": "^3.0.2"
+      }
+    },
+    "node_modules/@emotion/serialize/node_modules/@emotion/hash": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+      "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+    },
+    "node_modules/@emotion/serialize/node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "node_modules/@emotion/sheet": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz",
+      "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA=="
+    },
+    "node_modules/@emotion/styled": {
+      "version": "11.11.0",
+      "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz",
+      "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==",
+      "dependencies": {
+        "@babel/runtime": "^7.18.3",
+        "@emotion/babel-plugin": "^11.11.0",
+        "@emotion/is-prop-valid": "^1.2.1",
+        "@emotion/serialize": "^1.1.2",
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@emotion/utils": "^1.2.1"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.0.0-rc.0",
+        "react": ">=16.8.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@emotion/unitless": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
+      "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+    },
+    "node_modules/@emotion/use-insertion-effect-with-fallbacks": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
+      "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==",
+      "peerDependencies": {
+        "react": ">=16.8.0"
+      }
+    },
+    "node_modules/@emotion/utils": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz",
+      "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg=="
+    },
+    "node_modules/@emotion/weak-memoize": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz",
+      "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww=="
     },
     "node_modules/@eslint-community/eslint-utils": {
       "version": "4.3.0",
@@ -3736,208 +3893,6 @@
       "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
       "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="
     },
-    "node_modules/@material-ui/core": {
-      "version": "4.12.4",
-      "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz",
-      "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==",
-      "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.",
-      "dependencies": {
-        "@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"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/material-ui"
-      },
-      "peerDependencies": {
-        "@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
-        }
-      }
-    },
-    "node_modules/@material-ui/core/node_modules/@material-ui/styles": {
-      "version": "4.11.5",
-      "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz",
-      "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==",
-      "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.",
-      "dependencies": {
-        "@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"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/material-ui"
-      },
-      "peerDependencies": {
-        "@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
-        }
-      }
-    },
-    "node_modules/@material-ui/core/node_modules/@material-ui/system": {
-      "version": "4.12.2",
-      "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz",
-      "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==",
-      "dependencies": {
-        "@babel/runtime": "^7.4.4",
-        "@material-ui/utils": "^4.11.3",
-        "csstype": "^2.5.2",
-        "prop-types": "^15.7.2"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      },
-      "funding": {
-        "type": "opencollective",
-        "url": "https://opencollective.com/material-ui"
-      },
-      "peerDependencies": {
-        "@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
-        }
-      }
-    },
-    "node_modules/@material-ui/core/node_modules/@material-ui/utils": {
-      "version": "4.11.3",
-      "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz",
-      "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==",
-      "dependencies": {
-        "@babel/runtime": "^7.4.4",
-        "prop-types": "^15.7.2",
-        "react-is": "^16.8.0 || ^17.0.0"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      },
-      "peerDependencies": {
-        "react": "^16.8.0 || ^17.0.0",
-        "react-dom": "^16.8.0 || ^17.0.0"
-      }
-    },
-    "node_modules/@material-ui/icons": {
-      "version": "4.11.3",
-      "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz",
-      "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==",
-      "dependencies": {
-        "@babel/runtime": "^7.4.4"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      },
-      "peerDependencies": {
-        "@material-ui/core": "^4.0.0",
-        "@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
-        }
-      }
-    },
-    "node_modules/@material-ui/lab": {
-      "version": "4.0.0-alpha.61",
-      "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz",
-      "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==",
-      "deprecated": "Material UI v4 doesn't receive active development since September 2021. See the guide https://mui.com/material-ui/migration/migration-v4/ to upgrade to v5.",
-      "dependencies": {
-        "@babel/runtime": "^7.4.4",
-        "@material-ui/utils": "^4.11.3",
-        "clsx": "^1.0.4",
-        "prop-types": "^15.7.2",
-        "react-is": "^16.8.0 || ^17.0.0"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      },
-      "peerDependencies": {
-        "@material-ui/core": "^4.12.1",
-        "@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
-        }
-      }
-    },
-    "node_modules/@material-ui/lab/node_modules/@material-ui/utils": {
-      "version": "4.11.3",
-      "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz",
-      "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==",
-      "dependencies": {
-        "@babel/runtime": "^7.4.4",
-        "prop-types": "^15.7.2",
-        "react-is": "^16.8.0 || ^17.0.0"
-      },
-      "engines": {
-        "node": ">=8.0.0"
-      },
-      "peerDependencies": {
-        "react": "^16.8.0 || ^17.0.0",
-        "react-dom": "^16.8.0 || ^17.0.0"
-      }
-    },
-    "node_modules/@material-ui/types": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz",
-      "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==",
-      "peerDependencies": {
-        "@types/react": "*"
-      },
-      "peerDependenciesMeta": {
-        "@types/react": {
-          "optional": true
-        }
-      }
-    },
     "node_modules/@mdx-js/mdx": {
       "version": "1.6.22",
       "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz",
@@ -4102,6 +4057,373 @@
         "node": ">=14"
       }
     },
+    "node_modules/@mui/base": {
+      "version": "5.0.0-beta.8",
+      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.8.tgz",
+      "integrity": "sha512-b4vVjMZx5KzzEMf4arXKoeV5ZegAMOoPwoy1vfUBwhvXc2QtaaAyBp50U7OA2L06Leubc1A+lEp3eqwZoFn87g==",
+      "dependencies": {
+        "@babel/runtime": "^7.22.6",
+        "@emotion/is-prop-valid": "^1.2.1",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "@popperjs/core": "^2.11.8",
+        "clsx": "^1.2.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^18.2.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0",
+        "react": "^17.0.0 || ^18.0.0",
+        "react-dom": "^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/base/node_modules/react-is": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+    },
+    "node_modules/@mui/core-downloads-tracker": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.1.tgz",
+      "integrity": "sha512-mIa1WmDmNr1LoupV1Rbxt9bTFKMbIn10RHG1bnZ/FJCkAYpuU/D4n+R+ttiycgcZNngU++zyh/OQeJblzbQPzg==",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      }
+    },
+    "node_modules/@mui/icons-material": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.1.tgz",
+      "integrity": "sha512-xV/f26muQqtWzerzOIdGPrXoxp/OKaE2G2Wp9gnmG47mHua5Slup/tMc3fA4ZYUreGGrK6+tT81TEvt1Wsng8Q==",
+      "dependencies": {
+        "@babel/runtime": "^7.22.6"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      },
+      "peerDependencies": {
+        "@mui/material": "^5.0.0",
+        "@types/react": "^17.0.0 || ^18.0.0",
+        "react": "^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/lab": {
+      "version": "5.0.0-alpha.137",
+      "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.137.tgz",
+      "integrity": "sha512-bHfcfti9/GnB657QpTdlK1fc9gjkP3SC+NrXyb9NCr0rT5Cq7TEkBGXyY5wGUSCyHR3CrMvchkIsfG5sH/NJ9A==",
+      "dependencies": {
+        "@babel/runtime": "^7.22.6",
+        "@mui/base": "5.0.0-beta.8",
+        "@mui/system": "^5.14.1",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "clsx": "^1.2.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^18.2.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.5.0",
+        "@emotion/styled": "^11.3.0",
+        "@mui/material": "^5.0.0",
+        "@types/react": "^17.0.0 || ^18.0.0",
+        "react": "^17.0.0 || ^18.0.0",
+        "react-dom": "^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        },
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/lab/node_modules/react-is": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+    },
+    "node_modules/@mui/material": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.1.tgz",
+      "integrity": "sha512-WtsgYuageTunLfxH3Ri+o1RuQTFImtRHxMcVNyD0Hhd2/znjW6KODNz0XfjvLRnNCAynBxZNiflcoIBW40h9PQ==",
+      "dependencies": {
+        "@babel/runtime": "^7.22.6",
+        "@mui/base": "5.0.0-beta.8",
+        "@mui/core-downloads-tracker": "^5.14.1",
+        "@mui/system": "^5.14.1",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "@types/react-transition-group": "^4.4.6",
+        "clsx": "^1.2.1",
+        "csstype": "^3.1.2",
+        "prop-types": "^15.8.1",
+        "react-is": "^18.2.0",
+        "react-transition-group": "^4.4.5"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.5.0",
+        "@emotion/styled": "^11.3.0",
+        "@types/react": "^17.0.0 || ^18.0.0",
+        "react": "^17.0.0 || ^18.0.0",
+        "react-dom": "^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        },
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/material/node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "node_modules/@mui/material/node_modules/react-is": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+    },
+    "node_modules/@mui/private-theming": {
+      "version": "5.13.7",
+      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.13.7.tgz",
+      "integrity": "sha512-qbSr+udcij5F9dKhGX7fEdx2drXchq7htLNr2Qg2Ma+WJ6q0ERlEqGSBiPiVDJkptcjeVL4DGmcf1wl5+vD4EA==",
+      "dependencies": {
+        "@babel/runtime": "^7.22.5",
+        "@mui/utils": "^5.13.7",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0",
+        "react": "^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/styled-engine": {
+      "version": "5.13.2",
+      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz",
+      "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==",
+      "dependencies": {
+        "@babel/runtime": "^7.21.0",
+        "@emotion/cache": "^11.11.0",
+        "csstype": "^3.1.2",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.4.1",
+        "@emotion/styled": "^11.3.0",
+        "react": "^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/styled-engine/node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "node_modules/@mui/styles": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.14.1.tgz",
+      "integrity": "sha512-+oF3diiAbfnD5TFVyiwSe2rl+aNInBKpkam88oF2XrLtC3Ult9BNatn4tzH55U+s/KWL2zjEItdciaRIg0fAAg==",
+      "dependencies": {
+        "@babel/runtime": "^7.22.6",
+        "@emotion/hash": "^0.9.1",
+        "@mui/private-theming": "^5.13.7",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "clsx": "^1.2.1",
+        "csstype": "^3.1.2",
+        "hoist-non-react-statics": "^3.3.2",
+        "jss": "^10.10.0",
+        "jss-plugin-camel-case": "^10.10.0",
+        "jss-plugin-default-unit": "^10.10.0",
+        "jss-plugin-global": "^10.10.0",
+        "jss-plugin-nested": "^10.10.0",
+        "jss-plugin-props-sort": "^10.10.0",
+        "jss-plugin-rule-value-function": "^10.10.0",
+        "jss-plugin-vendor-prefixer": "^10.10.0",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      },
+      "peerDependencies": {
+        "@types/react": "^17.0.0 || ^18.0.0",
+        "react": "^17.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/styles/node_modules/@emotion/hash": {
+      "version": "0.9.1",
+      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+      "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+    },
+    "node_modules/@mui/styles/node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "node_modules/@mui/system": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.1.tgz",
+      "integrity": "sha512-u+xlsU34Jdkgx1CxmBnIC4Y08uPdVX5iEd3S/1dggDFtOGp+Lj8xmKRJAQ8PJOOJLOh8pDwaZx4AwXikL4l1QA==",
+      "dependencies": {
+        "@babel/runtime": "^7.22.6",
+        "@mui/private-theming": "^5.13.7",
+        "@mui/styled-engine": "^5.13.2",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "clsx": "^1.2.1",
+        "csstype": "^3.1.2",
+        "prop-types": "^15.8.1"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      },
+      "peerDependencies": {
+        "@emotion/react": "^11.5.0",
+        "@emotion/styled": "^11.3.0",
+        "@types/react": "^17.0.0 || ^18.0.0",
+        "react": "^17.0.0 || ^18.0.0"
+      },
+      "peerDependenciesMeta": {
+        "@emotion/react": {
+          "optional": true
+        },
+        "@emotion/styled": {
+          "optional": true
+        },
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/system/node_modules/csstype": {
+      "version": "3.1.2",
+      "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+      "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+    },
+    "node_modules/@mui/types": {
+      "version": "7.2.4",
+      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz",
+      "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==",
+      "peerDependencies": {
+        "@types/react": "*"
+      },
+      "peerDependenciesMeta": {
+        "@types/react": {
+          "optional": true
+        }
+      }
+    },
+    "node_modules/@mui/utils": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.1.tgz",
+      "integrity": "sha512-39KHKK2JeqRmuUcLDLwM+c2XfVC136C5/yUyQXmO2PVbOb2Bol4KxtkssEqCbTwg87PSCG3f1Tb0keRsK7cVGw==",
+      "dependencies": {
+        "@babel/runtime": "^7.22.6",
+        "@types/prop-types": "^15.7.5",
+        "@types/react-is": "^18.2.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^18.2.0"
+      },
+      "engines": {
+        "node": ">=12.0.0"
+      },
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/mui"
+      },
+      "peerDependencies": {
+        "react": "^17.0.0 || ^18.0.0"
+      }
+    },
+    "node_modules/@mui/utils/node_modules/react-is": {
+      "version": "18.2.0",
+      "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+      "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+    },
     "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": {
       "version": "5.1.1-v1",
       "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -4298,6 +4620,15 @@
         "node": ">= 8"
       }
     },
+    "node_modules/@popperjs/core": {
+      "version": "2.11.8",
+      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+      "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==",
+      "funding": {
+        "type": "opencollective",
+        "url": "https://opencollective.com/popperjs"
+      }
+    },
     "node_modules/@protobufjs/aspromise": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
@@ -7894,8 +8225,7 @@
     "node_modules/@types/parse-json": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
-      "dev": true
+      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
     },
     "node_modules/@types/parse5": {
       "version": "5.0.3",
@@ -7942,10 +8272,18 @@
         "csstype": "^3.0.2"
       }
     },
+    "node_modules/@types/react-is": {
+      "version": "18.2.1",
+      "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.1.tgz",
+      "integrity": "sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==",
+      "dependencies": {
+        "@types/react": "*"
+      }
+    },
     "node_modules/@types/react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
+      "version": "4.4.6",
+      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz",
+      "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==",
       "dependencies": {
         "@types/react": "*"
       }
@@ -9836,7 +10174,6 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
       "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
-      "dev": true,
       "dependencies": {
         "@babel/runtime": "^7.12.5",
         "cosmiconfig": "^7.0.0",
@@ -11078,7 +11415,6 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
       "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "dev": true,
       "engines": {
         "node": ">=6"
       }
@@ -12179,8 +12515,7 @@
     "node_modules/convert-source-map": {
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
-      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
-      "dev": true
+      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
     },
     "node_modules/cookie": {
       "version": "0.5.0",
@@ -12281,7 +12616,6 @@
       "version": "7.1.0",
       "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
       "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
-      "dev": true,
       "dependencies": {
         "@types/parse-json": "^4.0.0",
         "import-fresh": "^3.2.1",
@@ -13206,11 +13540,6 @@
       "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==",
       "dev": true
     },
-    "node_modules/csstype": {
-      "version": "2.6.21",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
-      "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
-    },
     "node_modules/cucumber": {
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-4.2.1.tgz",
@@ -14900,7 +15229,6 @@
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
       "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
       "dependencies": {
         "is-arrayish": "^0.2.1"
       }
@@ -16943,6 +17271,11 @@
         "node": ">=6"
       }
     },
+    "node_modules/find-root": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+      "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+    },
     "node_modules/find-up": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -18800,7 +19133,6 @@
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-      "dev": true,
       "dependencies": {
         "parent-module": "^1.0.0",
         "resolve-from": "^4.0.0"
@@ -18816,7 +19148,6 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
       "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-      "dev": true,
       "engines": {
         "node": ">=4"
       }
@@ -19268,8 +19599,7 @@
     "node_modules/is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
-      "dev": true
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
     },
     "node_modules/is-bigint": {
       "version": "1.0.4",
@@ -19356,7 +19686,6 @@
       "version": "2.11.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
       "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-      "dev": true,
       "dependencies": {
         "has": "^1.0.3"
       },
@@ -23013,8 +23342,7 @@
     "node_modules/json-parse-even-better-errors": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-      "dev": true
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
     },
     "node_modules/json-schema": {
       "version": "0.4.0",
@@ -23379,8 +23707,7 @@
     "node_modules/lines-and-columns": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
-      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
-      "dev": true
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
     },
     "node_modules/listr2": {
       "version": "3.14.0",
@@ -26681,7 +27008,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "dev": true,
       "dependencies": {
         "callsites": "^3.0.0"
       },
@@ -26733,7 +27059,6 @@
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
       "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
-      "dev": true,
       "dependencies": {
         "@babel/code-frame": "^7.0.0",
         "error-ex": "^1.3.1",
@@ -26829,8 +27154,7 @@
     "node_modules/path-parse": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
     },
     "node_modules/path-platform": {
       "version": "0.11.15",
@@ -26851,7 +27175,6 @@
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
       "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-      "dev": true,
       "engines": {
         "node": ">=8"
       }
@@ -27058,11 +27381,6 @@
         "node": ">=10"
       }
     },
-    "node_modules/popper.js": {
-      "version": "1.16.1-lts",
-      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz",
-      "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA=="
-    },
     "node_modules/portfinder": {
       "version": "1.0.32",
       "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz",
@@ -32158,7 +32476,6 @@
       "version": "1.22.1",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
       "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
-      "dev": true,
       "dependencies": {
         "is-core-module": "^2.9.0",
         "path-parse": "^1.0.7",
@@ -34859,6 +35176,11 @@
         "node": ">=8"
       }
     },
+    "node_modules/stylis": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+      "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+    },
     "node_modules/subarg": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
@@ -34917,7 +35239,6 @@
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
       "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true,
       "engines": {
         "node": ">= 0.4"
       },
@@ -35799,7 +36120,6 @@
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
       "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
-      "dev": true,
       "engines": {
         "node": ">=4"
       }
@@ -39369,7 +39689,6 @@
       "version": "1.10.2",
       "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
       "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
-      "dev": true,
       "engines": {
         "node": ">= 6"
       }
@@ -39755,7 +40074,6 @@
       "version": "7.18.6",
       "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.18.6.tgz",
       "integrity": "sha512-0NFvs3VkuSYbFi1x2Vd6tKrywq+z/cLeYC/RJNFrIX/30Bf5aiGYbtvGXolEktzJH8o5E5KJ3tT+nkxuuZFVlA==",
-      "dev": true,
       "requires": {
         "@babel/types": "^7.18.6"
       }
@@ -39847,8 +40165,7 @@
     "@babel/helper-string-parser": {
       "version": "7.19.4",
       "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.19.4.tgz",
-      "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw==",
-      "dev": true
+      "integrity": "sha512-nHtDoQcuqFmwYNYPz3Rah5ph2p8PFeFCsZk9A/48dPc/rGocJ5J3hAAZ7pb76VWX3fZKu+uEr/FhH5jLx7umrw=="
     },
     "@babel/helper-validator-identifier": {
       "version": "7.19.1",
@@ -40853,9 +41170,9 @@
       "dev": true
     },
     "@babel/runtime": {
-      "version": "7.21.0",
-      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.21.0.tgz",
-      "integrity": "sha512-xwII0//EObnq89Ji5AKYQaRYiW/nZ3llSv29d49IuxPhKbtJoLP+9QUUZ4nVragQVtaVGeZrpB+ZtG/Pdy/POw==",
+      "version": "7.22.6",
+      "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.22.6.tgz",
+      "integrity": "sha512-wDb5pWm4WDdF6LFUde3Jl8WzPA+3ZbxYqkC6xAXuD3irdEHN1k0NfTRrJD8ZD378SJ61miMLCqIOXYhd8x+AJQ==",
       "requires": {
         "regenerator-runtime": "^0.13.11"
       }
@@ -40902,7 +41219,6 @@
       "version": "7.21.3",
       "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.21.3.tgz",
       "integrity": "sha512-sBGdETxC+/M4o/zKC0sl6sjWv62WFR/uzxrJ6uYyMLZOUlPnwzw0tKgVHOXxaAd5l2g8pEDM5RZ495GPQI77kg==",
-      "dev": true,
       "requires": {
         "@babel/helper-string-parser": "^7.19.4",
         "@babel/helper-validator-identifier": "^7.19.1",
@@ -41180,10 +41496,143 @@
       "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==",
       "dev": true
     },
-    "@emotion/hash": {
-      "version": "0.8.0",
-      "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.8.0.tgz",
-      "integrity": "sha512-kBJtf7PH6aWwZ6fka3zQ0p6SBYzx4fl1LoZXE2RrnYST9Xljm7WfKJrU4g/Xr3Beg72MLrp1AWNUmuYJTL7Cow=="
+    "@emotion/babel-plugin": {
+      "version": "11.11.0",
+      "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz",
+      "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==",
+      "requires": {
+        "@babel/helper-module-imports": "^7.16.7",
+        "@babel/runtime": "^7.18.3",
+        "@emotion/hash": "^0.9.1",
+        "@emotion/memoize": "^0.8.1",
+        "@emotion/serialize": "^1.1.2",
+        "babel-plugin-macros": "^3.1.0",
+        "convert-source-map": "^1.5.0",
+        "escape-string-regexp": "^4.0.0",
+        "find-root": "^1.1.0",
+        "source-map": "^0.5.7",
+        "stylis": "4.2.0"
+      },
+      "dependencies": {
+        "@emotion/hash": {
+          "version": "0.9.1",
+          "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+          "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+        },
+        "escape-string-regexp": {
+          "version": "4.0.0",
+          "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz",
+          "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA=="
+        },
+        "source-map": {
+          "version": "0.5.7",
+          "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz",
+          "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ=="
+        }
+      }
+    },
+    "@emotion/cache": {
+      "version": "11.11.0",
+      "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz",
+      "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==",
+      "requires": {
+        "@emotion/memoize": "^0.8.1",
+        "@emotion/sheet": "^1.2.2",
+        "@emotion/utils": "^1.2.1",
+        "@emotion/weak-memoize": "^0.3.1",
+        "stylis": "4.2.0"
+      }
+    },
+    "@emotion/is-prop-valid": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz",
+      "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==",
+      "requires": {
+        "@emotion/memoize": "^0.8.1"
+      }
+    },
+    "@emotion/memoize": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz",
+      "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA=="
+    },
+    "@emotion/react": {
+      "version": "11.11.1",
+      "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz",
+      "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==",
+      "requires": {
+        "@babel/runtime": "^7.18.3",
+        "@emotion/babel-plugin": "^11.11.0",
+        "@emotion/cache": "^11.11.0",
+        "@emotion/serialize": "^1.1.2",
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@emotion/utils": "^1.2.1",
+        "@emotion/weak-memoize": "^0.3.1",
+        "hoist-non-react-statics": "^3.3.1"
+      }
+    },
+    "@emotion/serialize": {
+      "version": "1.1.2",
+      "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz",
+      "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==",
+      "requires": {
+        "@emotion/hash": "^0.9.1",
+        "@emotion/memoize": "^0.8.1",
+        "@emotion/unitless": "^0.8.1",
+        "@emotion/utils": "^1.2.1",
+        "csstype": "^3.0.2"
+      },
+      "dependencies": {
+        "@emotion/hash": {
+          "version": "0.9.1",
+          "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+          "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+        },
+        "csstype": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+          "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+        }
+      }
+    },
+    "@emotion/sheet": {
+      "version": "1.2.2",
+      "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz",
+      "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA=="
+    },
+    "@emotion/styled": {
+      "version": "11.11.0",
+      "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz",
+      "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==",
+      "requires": {
+        "@babel/runtime": "^7.18.3",
+        "@emotion/babel-plugin": "^11.11.0",
+        "@emotion/is-prop-valid": "^1.2.1",
+        "@emotion/serialize": "^1.1.2",
+        "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1",
+        "@emotion/utils": "^1.2.1"
+      }
+    },
+    "@emotion/unitless": {
+      "version": "0.8.1",
+      "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz",
+      "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ=="
+    },
+    "@emotion/use-insertion-effect-with-fallbacks": {
+      "version": "1.0.1",
+      "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz",
+      "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==",
+      "requires": {}
+    },
+    "@emotion/utils": {
+      "version": "1.2.1",
+      "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz",
+      "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg=="
+    },
+    "@emotion/weak-memoize": {
+      "version": "0.3.1",
+      "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz",
+      "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww=="
     },
     "@eslint-community/eslint-utils": {
       "version": "4.3.0",
@@ -42210,109 +42659,6 @@
       "resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
       "integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg=="
     },
-    "@material-ui/core": {
-      "version": "4.12.4",
-      "resolved": "https://registry.npmjs.org/@material-ui/core/-/core-4.12.4.tgz",
-      "integrity": "sha512-tr7xekNlM9LjA6pagJmL8QCgZXaubWUwkJnoYcMKd4gw/t4XiyvnTkjdGrUVicyB2BsdaAv1tvow45bPM4sSwQ==",
-      "requires": {
-        "@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"
-      },
-      "dependencies": {
-        "@material-ui/styles": {
-          "version": "4.11.5",
-          "resolved": "https://registry.npmjs.org/@material-ui/styles/-/styles-4.11.5.tgz",
-          "integrity": "sha512-o/41ot5JJiUsIETME9wVLAJrmIWL3j0R0Bj2kCOLbSfqEkKf0fmaPt+5vtblUh5eXr2S+J/8J3DaCb10+CzPGA==",
-          "requires": {
-            "@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"
-          }
-        },
-        "@material-ui/system": {
-          "version": "4.12.2",
-          "resolved": "https://registry.npmjs.org/@material-ui/system/-/system-4.12.2.tgz",
-          "integrity": "sha512-6CSKu2MtmiJgcCGf6nBQpM8fLkuB9F55EKfbdTC80NND5wpTmKzwdhLYLH3zL4cLlK0gVaaltW7/wMuyTnN0Lw==",
-          "requires": {
-            "@babel/runtime": "^7.4.4",
-            "@material-ui/utils": "^4.11.3",
-            "csstype": "^2.5.2",
-            "prop-types": "^15.7.2"
-          }
-        },
-        "@material-ui/utils": {
-          "version": "4.11.3",
-          "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz",
-          "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==",
-          "requires": {
-            "@babel/runtime": "^7.4.4",
-            "prop-types": "^15.7.2",
-            "react-is": "^16.8.0 || ^17.0.0"
-          }
-        }
-      }
-    },
-    "@material-ui/icons": {
-      "version": "4.11.3",
-      "resolved": "https://registry.npmjs.org/@material-ui/icons/-/icons-4.11.3.tgz",
-      "integrity": "sha512-IKHlyx6LDh8n19vzwH5RtHIOHl9Tu90aAAxcbWME6kp4dmvODM3UvOHJeMIDzUbd4muuJKHmlNoBN+mDY4XkBA==",
-      "requires": {
-        "@babel/runtime": "^7.4.4"
-      }
-    },
-    "@material-ui/lab": {
-      "version": "4.0.0-alpha.61",
-      "resolved": "https://registry.npmjs.org/@material-ui/lab/-/lab-4.0.0-alpha.61.tgz",
-      "integrity": "sha512-rSzm+XKiNUjKegj8bzt5+pygZeckNLOr+IjykH8sYdVk7dE9y2ZuUSofiMV2bJk3qU+JHwexmw+q0RyNZB9ugg==",
-      "requires": {
-        "@babel/runtime": "^7.4.4",
-        "@material-ui/utils": "^4.11.3",
-        "clsx": "^1.0.4",
-        "prop-types": "^15.7.2",
-        "react-is": "^16.8.0 || ^17.0.0"
-      },
-      "dependencies": {
-        "@material-ui/utils": {
-          "version": "4.11.3",
-          "resolved": "https://registry.npmjs.org/@material-ui/utils/-/utils-4.11.3.tgz",
-          "integrity": "sha512-ZuQPV4rBK/V1j2dIkSSEcH5uT6AaHuKWFfotADHsC0wVL1NLd2WkFCm4ZZbX33iO4ydl6V0GPngKm8HZQ2oujg==",
-          "requires": {
-            "@babel/runtime": "^7.4.4",
-            "prop-types": "^15.7.2",
-            "react-is": "^16.8.0 || ^17.0.0"
-          }
-        }
-      }
-    },
-    "@material-ui/types": {
-      "version": "5.1.0",
-      "resolved": "https://registry.npmjs.org/@material-ui/types/-/types-5.1.0.tgz",
-      "integrity": "sha512-7cqRjrY50b8QzRSYyhSpx4WRw2YuO0KKIGQEVk5J8uoz2BanawykgZGoWEqKm7pVIbzFDN0SpPcVV4IhOFkl8A==",
-      "requires": {}
-    },
     "@mdx-js/mdx": {
       "version": "1.6.22",
       "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-1.6.22.tgz",
@@ -42442,6 +42788,205 @@
         "strict-event-emitter": "^0.2.0"
       }
     },
+    "@mui/base": {
+      "version": "5.0.0-beta.8",
+      "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.8.tgz",
+      "integrity": "sha512-b4vVjMZx5KzzEMf4arXKoeV5ZegAMOoPwoy1vfUBwhvXc2QtaaAyBp50U7OA2L06Leubc1A+lEp3eqwZoFn87g==",
+      "requires": {
+        "@babel/runtime": "^7.22.6",
+        "@emotion/is-prop-valid": "^1.2.1",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "@popperjs/core": "^2.11.8",
+        "clsx": "^1.2.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^18.2.0"
+      },
+      "dependencies": {
+        "react-is": {
+          "version": "18.2.0",
+          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+        }
+      }
+    },
+    "@mui/core-downloads-tracker": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.14.1.tgz",
+      "integrity": "sha512-mIa1WmDmNr1LoupV1Rbxt9bTFKMbIn10RHG1bnZ/FJCkAYpuU/D4n+R+ttiycgcZNngU++zyh/OQeJblzbQPzg=="
+    },
+    "@mui/icons-material": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-5.14.1.tgz",
+      "integrity": "sha512-xV/f26muQqtWzerzOIdGPrXoxp/OKaE2G2Wp9gnmG47mHua5Slup/tMc3fA4ZYUreGGrK6+tT81TEvt1Wsng8Q==",
+      "requires": {
+        "@babel/runtime": "^7.22.6"
+      }
+    },
+    "@mui/lab": {
+      "version": "5.0.0-alpha.137",
+      "resolved": "https://registry.npmjs.org/@mui/lab/-/lab-5.0.0-alpha.137.tgz",
+      "integrity": "sha512-bHfcfti9/GnB657QpTdlK1fc9gjkP3SC+NrXyb9NCr0rT5Cq7TEkBGXyY5wGUSCyHR3CrMvchkIsfG5sH/NJ9A==",
+      "requires": {
+        "@babel/runtime": "^7.22.6",
+        "@mui/base": "5.0.0-beta.8",
+        "@mui/system": "^5.14.1",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "clsx": "^1.2.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^18.2.0"
+      },
+      "dependencies": {
+        "react-is": {
+          "version": "18.2.0",
+          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+        }
+      }
+    },
+    "@mui/material": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.14.1.tgz",
+      "integrity": "sha512-WtsgYuageTunLfxH3Ri+o1RuQTFImtRHxMcVNyD0Hhd2/znjW6KODNz0XfjvLRnNCAynBxZNiflcoIBW40h9PQ==",
+      "requires": {
+        "@babel/runtime": "^7.22.6",
+        "@mui/base": "5.0.0-beta.8",
+        "@mui/core-downloads-tracker": "^5.14.1",
+        "@mui/system": "^5.14.1",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "@types/react-transition-group": "^4.4.6",
+        "clsx": "^1.2.1",
+        "csstype": "^3.1.2",
+        "prop-types": "^15.8.1",
+        "react-is": "^18.2.0",
+        "react-transition-group": "^4.4.5"
+      },
+      "dependencies": {
+        "csstype": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+          "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+        },
+        "react-is": {
+          "version": "18.2.0",
+          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+        }
+      }
+    },
+    "@mui/private-theming": {
+      "version": "5.13.7",
+      "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.13.7.tgz",
+      "integrity": "sha512-qbSr+udcij5F9dKhGX7fEdx2drXchq7htLNr2Qg2Ma+WJ6q0ERlEqGSBiPiVDJkptcjeVL4DGmcf1wl5+vD4EA==",
+      "requires": {
+        "@babel/runtime": "^7.22.5",
+        "@mui/utils": "^5.13.7",
+        "prop-types": "^15.8.1"
+      }
+    },
+    "@mui/styled-engine": {
+      "version": "5.13.2",
+      "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.13.2.tgz",
+      "integrity": "sha512-VCYCU6xVtXOrIN8lcbuPmoG+u7FYuOERG++fpY74hPpEWkyFQG97F+/XfTQVYzlR2m7nPjnwVUgATcTCMEaMvw==",
+      "requires": {
+        "@babel/runtime": "^7.21.0",
+        "@emotion/cache": "^11.11.0",
+        "csstype": "^3.1.2",
+        "prop-types": "^15.8.1"
+      },
+      "dependencies": {
+        "csstype": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+          "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+        }
+      }
+    },
+    "@mui/styles": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/styles/-/styles-5.14.1.tgz",
+      "integrity": "sha512-+oF3diiAbfnD5TFVyiwSe2rl+aNInBKpkam88oF2XrLtC3Ult9BNatn4tzH55U+s/KWL2zjEItdciaRIg0fAAg==",
+      "requires": {
+        "@babel/runtime": "^7.22.6",
+        "@emotion/hash": "^0.9.1",
+        "@mui/private-theming": "^5.13.7",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "clsx": "^1.2.1",
+        "csstype": "^3.1.2",
+        "hoist-non-react-statics": "^3.3.2",
+        "jss": "^10.10.0",
+        "jss-plugin-camel-case": "^10.10.0",
+        "jss-plugin-default-unit": "^10.10.0",
+        "jss-plugin-global": "^10.10.0",
+        "jss-plugin-nested": "^10.10.0",
+        "jss-plugin-props-sort": "^10.10.0",
+        "jss-plugin-rule-value-function": "^10.10.0",
+        "jss-plugin-vendor-prefixer": "^10.10.0",
+        "prop-types": "^15.8.1"
+      },
+      "dependencies": {
+        "@emotion/hash": {
+          "version": "0.9.1",
+          "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz",
+          "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ=="
+        },
+        "csstype": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+          "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+        }
+      }
+    },
+    "@mui/system": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.14.1.tgz",
+      "integrity": "sha512-u+xlsU34Jdkgx1CxmBnIC4Y08uPdVX5iEd3S/1dggDFtOGp+Lj8xmKRJAQ8PJOOJLOh8pDwaZx4AwXikL4l1QA==",
+      "requires": {
+        "@babel/runtime": "^7.22.6",
+        "@mui/private-theming": "^5.13.7",
+        "@mui/styled-engine": "^5.13.2",
+        "@mui/types": "^7.2.4",
+        "@mui/utils": "^5.14.1",
+        "clsx": "^1.2.1",
+        "csstype": "^3.1.2",
+        "prop-types": "^15.8.1"
+      },
+      "dependencies": {
+        "csstype": {
+          "version": "3.1.2",
+          "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.2.tgz",
+          "integrity": "sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ=="
+        }
+      }
+    },
+    "@mui/types": {
+      "version": "7.2.4",
+      "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.4.tgz",
+      "integrity": "sha512-LBcwa8rN84bKF+f5sDyku42w1NTxaPgPyYKODsh01U1fVstTClbUoSA96oyRBnSNyEiAVjKm6Gwx9vjR+xyqHA==",
+      "requires": {}
+    },
+    "@mui/utils": {
+      "version": "5.14.1",
+      "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.14.1.tgz",
+      "integrity": "sha512-39KHKK2JeqRmuUcLDLwM+c2XfVC136C5/yUyQXmO2PVbOb2Bol4KxtkssEqCbTwg87PSCG3f1Tb0keRsK7cVGw==",
+      "requires": {
+        "@babel/runtime": "^7.22.6",
+        "@types/prop-types": "^15.7.5",
+        "@types/react-is": "^18.2.1",
+        "prop-types": "^15.8.1",
+        "react-is": "^18.2.0"
+      },
+      "dependencies": {
+        "react-is": {
+          "version": "18.2.0",
+          "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz",
+          "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w=="
+        }
+      }
+    },
     "@nicolo-ribaudo/eslint-scope-5-internals": {
       "version": "5.1.1-v1",
       "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz",
@@ -42576,6 +43121,11 @@
         }
       }
     },
+    "@popperjs/core": {
+      "version": "2.11.8",
+      "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz",
+      "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A=="
+    },
     "@protobufjs/aspromise": {
       "version": "1.1.2",
       "resolved": "https://registry.npmjs.org/@protobufjs/aspromise/-/aspromise-1.1.2.tgz",
@@ -45166,8 +45716,7 @@
     "@types/parse-json": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz",
-      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==",
-      "dev": true
+      "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA=="
     },
     "@types/parse5": {
       "version": "5.0.3",
@@ -45221,10 +45770,18 @@
         }
       }
     },
+    "@types/react-is": {
+      "version": "18.2.1",
+      "resolved": "https://registry.npmjs.org/@types/react-is/-/react-is-18.2.1.tgz",
+      "integrity": "sha512-wyUkmaaSZEzFZivD8F2ftSyAfk6L+DfFliVj/mYdOXbVjRcS87fQJLTnhk6dRZPuJjI+9g6RZJO4PNCngUrmyw==",
+      "requires": {
+        "@types/react": "*"
+      }
+    },
     "@types/react-transition-group": {
-      "version": "4.4.5",
-      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.5.tgz",
-      "integrity": "sha512-juKD/eiSM3/xZYzjuzH6ZwpP+/lejltmiS3QEzV/vmb/Q8+HfDmxu+Baga8UEMGBqV88Nbg4l2hY/K2DkyaLLA==",
+      "version": "4.4.6",
+      "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.6.tgz",
+      "integrity": "sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==",
       "requires": {
         "@types/react": "*"
       }
@@ -46695,7 +47252,6 @@
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz",
       "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==",
-      "dev": true,
       "requires": {
         "@babel/runtime": "^7.12.5",
         "cosmiconfig": "^7.0.0",
@@ -47701,8 +48257,7 @@
     "callsites": {
       "version": "3.1.0",
       "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz",
-      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==",
-      "dev": true
+      "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ=="
     },
     "camel-case": {
       "version": "4.1.2",
@@ -48555,8 +49110,7 @@
     "convert-source-map": {
       "version": "1.9.0",
       "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz",
-      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==",
-      "dev": true
+      "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A=="
     },
     "cookie": {
       "version": "0.5.0",
@@ -48636,7 +49190,6 @@
       "version": "7.1.0",
       "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz",
       "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==",
-      "dev": true,
       "requires": {
         "@types/parse-json": "^4.0.0",
         "import-fresh": "^3.2.1",
@@ -49385,11 +49938,6 @@
         }
       }
     },
-    "csstype": {
-      "version": "2.6.21",
-      "resolved": "https://registry.npmjs.org/csstype/-/csstype-2.6.21.tgz",
-      "integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
-    },
     "cucumber": {
       "version": "4.2.1",
       "resolved": "https://registry.npmjs.org/cucumber/-/cucumber-4.2.1.tgz",
@@ -50743,7 +51291,6 @@
       "version": "1.3.2",
       "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz",
       "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==",
-      "dev": true,
       "requires": {
         "is-arrayish": "^0.2.1"
       }
@@ -52315,6 +52862,11 @@
         }
       }
     },
+    "find-root": {
+      "version": "1.1.0",
+      "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz",
+      "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng=="
+    },
     "find-up": {
       "version": "5.0.0",
       "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz",
@@ -53732,7 +54284,6 @@
       "version": "3.3.0",
       "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz",
       "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==",
-      "dev": true,
       "requires": {
         "parent-module": "^1.0.0",
         "resolve-from": "^4.0.0"
@@ -53741,8 +54292,7 @@
         "resolve-from": {
           "version": "4.0.0",
           "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz",
-          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==",
-          "dev": true
+          "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g=="
         }
       }
     },
@@ -54088,8 +54638,7 @@
     "is-arrayish": {
       "version": "0.2.1",
       "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz",
-      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==",
-      "dev": true
+      "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg=="
     },
     "is-bigint": {
       "version": "1.0.4",
@@ -54155,7 +54704,6 @@
       "version": "2.11.0",
       "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz",
       "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==",
-      "dev": true,
       "requires": {
         "has": "^1.0.3"
       }
@@ -56899,8 +57447,7 @@
     "json-parse-even-better-errors": {
       "version": "2.3.1",
       "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz",
-      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==",
-      "dev": true
+      "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w=="
     },
     "json-schema": {
       "version": "0.4.0",
@@ -57210,8 +57757,7 @@
     "lines-and-columns": {
       "version": "1.2.4",
       "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",
-      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",
-      "dev": true
+      "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg=="
     },
     "listr2": {
       "version": "3.14.0",
@@ -59702,7 +60248,6 @@
       "version": "1.0.1",
       "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz",
       "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==",
-      "dev": true,
       "requires": {
         "callsites": "^3.0.0"
       }
@@ -59747,7 +60292,6 @@
       "version": "5.2.0",
       "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz",
       "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==",
-      "dev": true,
       "requires": {
         "@babel/code-frame": "^7.0.0",
         "error-ex": "^1.3.1",
@@ -59822,8 +60366,7 @@
     "path-parse": {
       "version": "1.0.7",
       "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz",
-      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==",
-      "dev": true
+      "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw=="
     },
     "path-platform": {
       "version": "0.11.15",
@@ -59840,8 +60383,7 @@
     "path-type": {
       "version": "4.0.0",
       "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz",
-      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==",
-      "dev": true
+      "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw=="
     },
     "pathval": {
       "version": "1.1.1",
@@ -59993,11 +60535,6 @@
         "@babel/runtime": "^7.17.8"
       }
     },
-    "popper.js": {
-      "version": "1.16.1-lts",
-      "resolved": "https://registry.npmjs.org/popper.js/-/popper.js-1.16.1-lts.tgz",
-      "integrity": "sha512-Kjw8nKRl1m+VrSFCoVGPph93W/qrSO7ZkqPpTf7F4bk/sqcfWK019dWBUpE/fBOsOQY1dks/Bmcbfn1heM/IsA=="
-    },
     "portfinder": {
       "version": "1.0.32",
       "resolved": "https://registry.npmjs.org/portfinder/-/portfinder-1.0.32.tgz",
@@ -63879,7 +64416,6 @@
       "version": "1.22.1",
       "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz",
       "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==",
-      "dev": true,
       "requires": {
         "is-core-module": "^2.9.0",
         "path-parse": "^1.0.7",
@@ -66064,6 +66600,11 @@
         }
       }
     },
+    "stylis": {
+      "version": "4.2.0",
+      "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz",
+      "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw=="
+    },
     "subarg": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/subarg/-/subarg-1.0.0.tgz",
@@ -66111,8 +66652,7 @@
     "supports-preserve-symlinks-flag": {
       "version": "1.0.0",
       "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz",
-      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==",
-      "dev": true
+      "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w=="
     },
     "svg-parser": {
       "version": "2.0.4",
@@ -66827,8 +67367,7 @@
     "to-fast-properties": {
       "version": "2.0.0",
       "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz",
-      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==",
-      "dev": true
+      "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog=="
     },
     "to-object-path": {
       "version": "0.3.0",
@@ -69699,8 +70238,7 @@
     "yaml": {
       "version": "1.10.2",
       "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz",
-      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==",
-      "dev": true
+      "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg=="
     },
     "yargs": {
       "version": "15.4.1",
diff --git a/package.json b/package.json
index 4c80bb5fe49a38c3790135c7269b9f8a54882d8e..b9c410902d036551c54f899dd9d3ab8f755da1c5 100644
--- a/package.json
+++ b/package.json
@@ -5,10 +5,13 @@
   "proxy": "http://localhost:8080",
   "dependencies": {
     "@ahooksjs/use-url-state": "^3.5.0",
+    "@emotion/react": "^11.11.1",
+    "@emotion/styled": "^11.11.0",
     "@fontsource/roboto": "^4.1.0",
-    "@material-ui/core": "^4.11.2",
-    "@material-ui/icons": "^4.11.2",
-    "@material-ui/lab": "^4.0.0-alpha.57",
+    "@mui/icons-material": "^5.14.1",
+    "@mui/lab": "^5.0.0-alpha.137",
+    "@mui/material": "^5.14.1",
+    "@mui/styles": "^5.14.1",
     "@testing-library/jest-dom": "^5.11.9",
     "@testing-library/react": "^11.2.3",
     "@testing-library/user-event": "^12.6.0",
diff --git a/src/App.js b/src/App.js
index 3375cece468dde9ad94c91941845cc71f0775aab..95405938e1e04f54338f62001a0e916513b0b34f 100644
--- a/src/App.js
+++ b/src/App.js
@@ -1,8 +1,9 @@
 import React, { useEffect } from "react";
 import "./App.css";
 import { Navigate, Route, Routes, BrowserRouter } from "react-router-dom";
-import { ThemeProvider } from "@material-ui/core/styles";
-import { CssBaseline } from "@material-ui/core";
+import { StyledEngineProvider } from "@mui/material";
+import { ThemeProvider } from "@mui/material/styles";
+import { CssBaseline } from "@mui/material";
 import { theme } from "./style/Theme";
 import { IOCListView } from "./views/IOC/IOCListView";
 import { HomeAccessControl } from "./views/home/HomeAccessControl";
@@ -37,90 +38,92 @@ function App() {
         preventDuplicate
         maxSnack="5"
       >
-        <ThemeProvider theme={theme}>
-          <CssBaseline />
-          <BrowserRouter>
-            <APIProvider>
-              <UserProvider>
-                <TokenRenew />
-                <NotificationProvider>
-                  <GlobalAppBar>
-                    <Routes>
-                      <Route
-                        path="/"
-                        element={<Navigate to="/home" />}
-                        exact
-                      />
-                      <Route
-                        path="/home"
-                        element={<HomeAccessControl />}
-                        exact
-                      />
-                      <Route
-                        path="/records"
-                        element={<RecordListView />}
-                        exact
-                      />
-                      <Route
-                        path="/records/:name"
-                        element={<RecordDetailsView />}
-                        exact
-                      />
-                      <Route
-                        path="/iocs/:id"
-                        element={<IOCDetailsAccessControl exact />}
-                      />
-                      <Route
-                        path="/iocs"
-                        element={<IOCListView />}
-                        exact
-                      />
-                      <Route
-                        path="/jobs"
-                        element={<JobLogAccessControl />}
-                        exact
-                      />
-                      <Route
-                        path="/jobs/:id"
-                        element={<JobDetailsAccessControl exact />}
-                      />
-                      <Route
-                        path="/hosts/:id"
-                        element={<HostDetailsAccessControl />}
-                        exact
-                      />
-                      <Route
-                        path="/hosts"
-                        element={<HostListView />}
-                        exact
-                      />
-                      <Route
-                        path="/statistics"
-                        element={<StatisticsView />}
-                        exact
-                      />
-                      <Route
-                        path="/help"
-                        element={<HelpView />}
-                        exact
-                      />
-                      <Route
-                        path="/login"
-                        element={<LoginView />}
-                        exact
-                      />
-                      <Route
-                        path="*"
-                        element={<NotFound />}
-                        exact
-                      />
-                    </Routes>
-                  </GlobalAppBar>
-                </NotificationProvider>
-              </UserProvider>
-            </APIProvider>
-          </BrowserRouter>
-        </ThemeProvider>
+        <StyledEngineProvider injectFirst>
+          <ThemeProvider theme={theme}>
+            <CssBaseline />
+            <BrowserRouter>
+              <APIProvider>
+                <UserProvider>
+                  <TokenRenew />
+                  <NotificationProvider>
+                    <GlobalAppBar>
+                      <Routes>
+                        <Route
+                          path="/"
+                          element={<Navigate to="/home" />}
+                          exact
+                        />
+                        <Route
+                          path="/home"
+                          element={<HomeAccessControl />}
+                          exact
+                        />
+                        <Route
+                          path="/records"
+                          element={<RecordListView />}
+                          exact
+                        />
+                        <Route
+                          path="/records/:name"
+                          element={<RecordDetailsView />}
+                          exact
+                        />
+                        <Route
+                          path="/iocs/:id"
+                          element={<IOCDetailsAccessControl exact />}
+                        />
+                        <Route
+                          path="/iocs"
+                          element={<IOCListView />}
+                          exact
+                        />
+                        <Route
+                          path="/jobs"
+                          element={<JobLogAccessControl />}
+                          exact
+                        />
+                        <Route
+                          path="/jobs/:id"
+                          element={<JobDetailsAccessControl exact />}
+                        />
+                        <Route
+                          path="/hosts/:id"
+                          element={<HostDetailsAccessControl />}
+                          exact
+                        />
+                        <Route
+                          path="/hosts"
+                          element={<HostListView />}
+                          exact
+                        />
+                        <Route
+                          path="/statistics"
+                          element={<StatisticsView />}
+                          exact
+                        />
+                        <Route
+                          path="/help"
+                          element={<HelpView />}
+                          exact
+                        />
+                        <Route
+                          path="/login"
+                          element={<LoginView />}
+                          exact
+                        />
+                        <Route
+                          path="*"
+                          element={<NotFound />}
+                          exact
+                        />
+                      </Routes>
+                    </GlobalAppBar>
+                  </NotificationProvider>
+                </UserProvider>
+              </APIProvider>
+            </BrowserRouter>
+          </ThemeProvider>
+        </StyledEngineProvider>
       </SnackbarProvider>
     </AppErrorBoundary>
   );
diff --git a/src/CypressComponentTestExample.spec.js b/src/CypressComponentTestExample.spec.js
index df6d3f39a19024d9c1d4d52526af836af46f4181..4d84e5f010b13ed38b7ccde49e7665f5e6606e66 100644
--- a/src/CypressComponentTestExample.spec.js
+++ b/src/CypressComponentTestExample.spec.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { Button } from "@material-ui/core";
+import { Button } from "@mui/material";
 
 it("Button", () => {
   cy.mount(<Button>Test button</Button>);
diff --git a/src/api/SwaggerApi.js b/src/api/SwaggerApi.js
index bd3ffb68e31226c4b42fdda7e231b8f7d9650524..c92d13630a0e7e3266a1719e3c019b7652baeff6 100644
--- a/src/api/SwaggerApi.js
+++ b/src/api/SwaggerApi.js
@@ -7,7 +7,7 @@
 import React, { useCallback, useRef } from "react";
 import SwaggerClient from "swagger-client";
 import { createContext, useContext, useEffect, useState } from "react";
-import { CircularProgress } from "@material-ui/core";
+import { CircularProgress } from "@mui/material";
 import { useCustomSnackbar } from "../components/common/snackbar/Snackbar";
 
 const createSwaggerClient = async () => {
diff --git a/src/components/IOC/AdministerUndeployment/AdministerUndeployment.js b/src/components/IOC/AdministerUndeployment/AdministerUndeployment.js
index b7903d1824e026df672a20396e984bf01a4e1009..9135eb4ac626e3d32f17fb9ce242d7ce13391551 100644
--- a/src/components/IOC/AdministerUndeployment/AdministerUndeployment.js
+++ b/src/components/IOC/AdministerUndeployment/AdministerUndeployment.js
@@ -1,13 +1,13 @@
 import React, { useState, useRef, useEffect } from "react";
 import { useNavigate } from "react-router-dom";
-import { makeStyles } from "@material-ui/core/styles";
-import { Button, Typography, Grid, Tooltip } from "@material-ui/core";
+import { makeStyles } from "@mui/styles";
+import { Button, Typography, Grid, Tooltip } from "@mui/material";
 import { theme } from "../../../style/Theme";
 import { useUndeployInDb } from "../../../api/SwaggerApi";
 import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
 import { ConfirmationDialog } from "../../dialog/ConfirmationDialog";
 import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
-import { Alert } from "@material-ui/lab";
+import { Alert } from "@mui/lab";
 import AccessControl from "../../auth/AccessControl";
 import { IocActiveDeployment } from "../../../api/DataTypes";
 
diff --git a/src/components/IOC/AlertMessages/AlertMessages.js b/src/components/IOC/AlertMessages/AlertMessages.js
index 843711a30ab47d9d80d28724d5a637b880f19200..e749f95bd8aad862f99cd6c36051565eff24f223 100644
--- a/src/components/IOC/AlertMessages/AlertMessages.js
+++ b/src/components/IOC/AlertMessages/AlertMessages.js
@@ -1,7 +1,8 @@
 import React from "react";
-import { Button, Grid, makeStyles } from "@material-ui/core";
-import { Alert } from "@material-ui/lab";
+import { Button, Grid } from "@mui/material";
+import { Alert } from "@mui/lab";
 import { theme } from "../../../style/Theme";
+import { makeStyles } from "@mui/styles";
 
 const useStyles = makeStyles((theme) => ({
   infoBadge: {
diff --git a/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js b/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js
index e983916c7b2917f30bbeeac334d20b3b6d3c382e..aa98413331346ba5efa36bfcff962a0559e7aac7 100644
--- a/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js
+++ b/src/components/IOC/ChangeHostAdmin/ChangeHostAdmin.js
@@ -7,15 +7,16 @@ import {
   Grid,
   Tooltip,
   TextField,
-  CircularProgress
-} from "@material-ui/core";
+  CircularProgress,
+  Alert,
+  Autocomplete
+} from "@mui/material";
 import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
 import { ConfirmationDialog } from "../../dialog/ConfirmationDialog";
 import {
   useUpdateActiveDeploymentHost,
   useCSEntrySearch
 } from "../../../api/SwaggerApi";
-import { Alert, Autocomplete } from "@material-ui/lab";
 import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
 import { transformHostQuery } from "../../common/Helper";
 
diff --git a/src/components/IOC/GitRefLink/GitRefLink.js b/src/components/IOC/GitRefLink/GitRefLink.js
index f6a30199b93e4278573c46b9673af550340923e4..aed0d253917c23452533c0a93cfc37b84f6503dd 100644
--- a/src/components/IOC/GitRefLink/GitRefLink.js
+++ b/src/components/IOC/GitRefLink/GitRefLink.js
@@ -3,7 +3,7 @@
  * Component providing link (and tag) to gitlab
  */
 import React from "react";
-import { Typography, Link as MuiLink } from "@material-ui/core";
+import { Typography, Link as MuiLink } from "@mui/material";
 import { string } from "prop-types";
 
 const propTypes = {
@@ -38,6 +38,7 @@ export default function GitRefLink({ url, revision }) {
         href={url}
         target="_blank"
         rel="noreferrer"
+        underline="hover"
       >
         {revision}
       </MuiLink>
diff --git a/src/components/IOC/IOCAsyncList/IOCAsyncList.js b/src/components/IOC/IOCAsyncList/IOCAsyncList.js
index a7a6c293c92312cb9b2c3b4ab6ce4445897e4946..ce2e08e448e09dbc9b74c8d62ab2db4d038509fe 100644
--- a/src/components/IOC/IOCAsyncList/IOCAsyncList.js
+++ b/src/components/IOC/IOCAsyncList/IOCAsyncList.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { Hidden } from "@material-ui/core";
+import { useMediaQuery } from "@mui/material";
 import { IOCDetailFetcher } from "../IOCDetailFetcher";
 import { IOCList } from "../IOCList";
 import { IOCTable } from "../IOCTable";
@@ -15,12 +15,13 @@ export function IOCAsyncList({
   loading,
   asyncDetails = true
 }) {
+  const smUp = useMediaQuery((theme) => theme.breakpoints.up("sm"));
+  const smDown = useMediaQuery((theme) => theme.breakpoints.down("sm"));
+
   return (
     <>
-      <Hidden smUp>
-        <IOCList iocs={iocs} />
-      </Hidden>
-      <Hidden xsDown>
+      {smDown ? <IOCList iocs={iocs} /> : null}
+      {smUp ? (
         <IOCTable
           iocs={iocs}
           setIocs={setIocs}
@@ -31,7 +32,7 @@ export function IOCAsyncList({
           totalCount={totalCount}
           rowsPerPage={rowsPerPage}
         />
-      </Hidden>
+      ) : null}
       {asyncDetails &&
         iocs.map((ioc, index) => (
           <IOCDetailFetcher
diff --git a/src/components/IOC/IOCCreateDialog/IOCCreateDialog.js b/src/components/IOC/IOCCreateDialog/IOCCreateDialog.js
index 9f1ee5ed0b7001e71df2fb4d4d510b20b859e720..31247fd84f7849291934621e1550f24d91dc3576 100644
--- a/src/components/IOC/IOCCreateDialog/IOCCreateDialog.js
+++ b/src/components/IOC/IOCCreateDialog/IOCCreateDialog.js
@@ -6,10 +6,11 @@ import {
   DialogActions,
   DialogContent,
   DialogTitle,
-  makeStyles,
-  CircularProgress
-} from "@material-ui/core";
-import { Autocomplete, Alert } from "@material-ui/lab";
+  CircularProgress,
+  Autocomplete,
+  Alert
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { useNamingNames, useAllowedGitProjects } from "../../../api/SwaggerApi";
 import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
 
diff --git a/src/components/IOC/IOCDelete/IOCDelete.js b/src/components/IOC/IOCDelete/IOCDelete.js
index b3abfc0f5c66a28a54a8e35673d132a670332f3b..94157044a4061fdb5fe36a266f8b7c78c6ad9914 100644
--- a/src/components/IOC/IOCDelete/IOCDelete.js
+++ b/src/components/IOC/IOCDelete/IOCDelete.js
@@ -1,13 +1,13 @@
 import React, { useState, useRef, useEffect } from "react";
 import { useNavigate } from "react-router-dom";
-import { makeStyles } from "@material-ui/core/styles";
-import { Button, Typography, Grid, Tooltip } from "@material-ui/core";
+import { makeStyles } from "@mui/styles";
+import { Button, Typography, Grid, Tooltip } from "@mui/material";
 import { theme } from "../../../style/Theme";
 import { useDeleteIOC } from "../../../api/SwaggerApi";
 import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
 import { ConfirmationDialog } from "../../dialog/ConfirmationDialog";
 import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
-import { Alert } from "@material-ui/lab";
+import { Alert } from "@mui/lab";
 import AccessControl from "../../auth/AccessControl";
 
 const useStyles = makeStyles({
diff --git a/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js b/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js
index 9571515ddbc119997f3142a75e05f779b17cc1f2..b8f554b059e32f20d42f06cc78b5a52551aebdd9 100644
--- a/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js
+++ b/src/components/IOC/IOCDeployDialog/IOCDeployDialog.js
@@ -7,11 +7,12 @@ import {
   DialogContent,
   DialogTitle,
   Typography,
-  makeStyles,
   Tooltip,
-  CircularProgress
-} from "@material-ui/core";
-import { Autocomplete, Alert } from "@material-ui/lab";
+  CircularProgress,
+  Autocomplete,
+  Alert
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { useCSEntrySearch, useTagsAndCommitIds } from "../../../api/SwaggerApi";
 import { useTypingTimer } from "../../common/SearchBoxFilter/TypingTimer";
 import { formatDate, transformHostQuery } from "../../common/Helper";
@@ -166,11 +167,13 @@ export function IOCDeployDialog({
             getOptionLabel={(option) => {
               return option.shortReference;
             }}
-            renderOption={(option) => {
+            renderOption={(props, option) => {
               return (
-                <Tooltip title={option.description}>
-                  <div>{createOptionTags(option)}</div>
-                </Tooltip>
+                <li {...props}>
+                  <Tooltip title={option.description}>
+                    <div>{createOptionTags(option)}</div>
+                  </Tooltip>
+                </li>
               );
             }}
             onChange={(event, value, reason) => {
diff --git a/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js b/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js
index 9d0a72d05482dc6a14d6875fd7d52f33b53451f9..6637235c9c45d52faf1412951ed2bf947db37ab8 100644
--- a/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js
+++ b/src/components/IOC/IOCDetailAdmin/IOCDetailAdmin.js
@@ -3,12 +3,13 @@ import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
 import {
   Button,
   CircularProgress,
-  makeStyles,
   TextField,
   Tooltip,
-  Typography
-} from "@material-ui/core";
-import { Autocomplete, Alert } from "@material-ui/lab";
+  Typography,
+  Autocomplete,
+  Alert
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import {
   useAllowedGitProjects,
   useNamingNames,
diff --git a/src/components/IOC/IOCDetails/IOCDetails.js b/src/components/IOC/IOCDetails/IOCDetails.js
index 556e67671f41af6a6c5dc30d173a794a2a677c38..eae00bb5b5c64ac6b807cf06d3f7f9676345f7a0 100644
--- a/src/components/IOC/IOCDetails/IOCDetails.js
+++ b/src/components/IOC/IOCDetails/IOCDetails.js
@@ -1,4 +1,4 @@
-import { Grid, Box } from "@material-ui/core";
+import { Grid, Box } from "@mui/material";
 import React from "react";
 import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
 import { KeyValueTable } from "../../common/KeyValueTable/KeyValueTable";
diff --git a/src/components/IOC/IOCIcons/IOCIcons.js b/src/components/IOC/IOCIcons/IOCIcons.js
index 3df091bab4fe65fc851ed0a5d1a629130f91c2cd..d193b6462fb02417e47d427de9eb4eb40fa4618e 100644
--- a/src/components/IOC/IOCIcons/IOCIcons.js
+++ b/src/components/IOC/IOCIcons/IOCIcons.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { Tooltip, Typography, useTheme } from "@material-ui/core";
+import { Tooltip, Typography, useTheme } from "@mui/material";
 import {
   Brightness1,
   Cancel,
@@ -9,7 +9,7 @@ import {
   HelpOutline,
   PlayCircleFilled,
   PauseCircleFilled
-} from "@material-ui/icons";
+} from "@mui/icons-material";
 import Popover from "../../common/Popover";
 import AlertMessages from "../AlertMessages/AlertMessages";
 
diff --git a/src/components/IOC/IOCList/IOCList.js b/src/components/IOC/IOCList/IOCList.js
index e22da01364aae339b09a521f97a5633ef4e2be61..8784bbe231226c25118185c4ea8eef0d7cf03b9a 100644
--- a/src/components/IOC/IOCList/IOCList.js
+++ b/src/components/IOC/IOCList/IOCList.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { List, ListItem, Paper } from "@material-ui/core";
+import { List, ListItem, Paper } from "@mui/material";
 import { Link } from "react-router-dom";
 import { IOCBadge } from "../IOCBadge";
 
diff --git a/src/components/IOC/IOCLiveStatus/IOCLiveStatus.js b/src/components/IOC/IOCLiveStatus/IOCLiveStatus.js
index ef5dfa5402ebc029e95231dde166f2d971aa0fcf..46baa9fc01ca7ea03d65c5964dae242d06c77622 100644
--- a/src/components/IOC/IOCLiveStatus/IOCLiveStatus.js
+++ b/src/components/IOC/IOCLiveStatus/IOCLiveStatus.js
@@ -1,5 +1,6 @@
 import React, { useCallback } from "react";
-import { Typography, makeStyles, Link as MuiLink } from "@material-ui/core";
+import { Typography, Link as MuiLink } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { SimpleAccordion } from "../../common/Accordion/SimpleAccordion";
 import { IOCDetails } from "../IOCDetails";
 import { Link as ReactRouterLink } from "react-router-dom";
@@ -62,6 +63,7 @@ export function IOCLiveStatus({ ioc }) {
                 <MuiLink
                   component={ReactRouterLink}
                   to={`/hosts/${ioc.activeDeployment?.host.csEntryId}`}
+                  underline="hover"
                 >
                   {ioc.activeDeployment?.host.fqdn}
                 </MuiLink>
diff --git a/src/components/IOC/IOCManage/IOCManage.js b/src/components/IOC/IOCManage/IOCManage.js
index 69dfb061b8f361d52e1b09e2dc0d76cd2ae43f0e..4e0e6220908524bba8d1fc1f365ab38ff23a224b 100644
--- a/src/components/IOC/IOCManage/IOCManage.js
+++ b/src/components/IOC/IOCManage/IOCManage.js
@@ -1,9 +1,4 @@
-import {
-  Button,
-  Link as MuiLink,
-  Tooltip,
-  Typography
-} from "@material-ui/core";
+import { Button, Link as MuiLink, Tooltip, Typography } from "@mui/material";
 import React, { useState, useEffect, useContext, useCallback } from "react";
 import { IOCDetails } from "../IOCDetails";
 import { DeployIOC } from "../DeployIOC";
@@ -90,6 +85,7 @@ export function IOCManage({
               href={`${window.NAMING_ADDRESS}/devices.xhtml?i=2&deviceName=${ioc.namingName}`}
               target="_blank"
               rel="noreferrer"
+              underline="hover"
             >
               {ioc.namingName}
             </MuiLink>
@@ -101,6 +97,7 @@ export function IOCManage({
               href={git}
               target="_blank"
               rel="noreferrer"
+              underline="hover"
             >
               {git}
             </MuiLink>
diff --git a/src/components/IOC/IOCService/IOCService.js b/src/components/IOC/IOCService/IOCService.js
index 29f18c69327d6e02f621a2152d065a109ad04c02..6f909119a6a1f2d0b272dbdda377aa285f4f56b0 100644
--- a/src/components/IOC/IOCService/IOCService.js
+++ b/src/components/IOC/IOCService/IOCService.js
@@ -4,14 +4,14 @@ import {
   Grid,
   Typography,
   Tooltip
-} from "@material-ui/core";
-import { makeStyles } from "@material-ui/core/styles";
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import React, { useState, useEffect, useRef, useContext } from "react";
 import { useStartIOC, useStopIOC } from "../../../api/SwaggerApi";
 import { SimpleModal } from "../../common/SimpleModal/SimpleModal";
 import { ConfirmationDialog } from "../../dialog/ConfirmationDialog";
 import { notificationContext } from "../../common/notification/Notifications";
-import { Alert } from "@material-ui/lab";
+import { Alert } from "@mui/lab";
 import { theme } from "../../../style/Theme";
 import { initRequestParams } from "../../common/Helper";
 import AccessControl from "../../auth/AccessControl";
diff --git a/src/components/IOC/IOCTable/IOCTable.js b/src/components/IOC/IOCTable/IOCTable.js
index d097e167a4cd812cc296ad0564bd720792ac84c3..a4ed7fa701902b51a9f004f283a3d9115df4b7e5 100644
--- a/src/components/IOC/IOCTable/IOCTable.js
+++ b/src/components/IOC/IOCTable/IOCTable.js
@@ -1,6 +1,6 @@
 import React, { useCallback } from "react";
 import { CustomTable } from "../../common/table/CustomTable";
-import { Grid, Tooltip, Typography } from "@material-ui/core";
+import { Grid, Tooltip, Typography } from "@mui/material";
 import { IOCStatusIcon } from "../IOCIcons";
 import { noWrapText } from "../../common/Helper";
 import { useRedirect } from "../../../hooks/Redirect";
diff --git a/src/components/IOC/IOCUndeployDialog/IOCUndeployDialog.js b/src/components/IOC/IOCUndeployDialog/IOCUndeployDialog.js
index b929470be134762a7f606b4a29a1c6c3679561e2..16b638ded8803d5c426ee60a01ae77a6ecb7e216 100644
--- a/src/components/IOC/IOCUndeployDialog/IOCUndeployDialog.js
+++ b/src/components/IOC/IOCUndeployDialog/IOCUndeployDialog.js
@@ -6,10 +6,10 @@ import {
   DialogActions,
   DialogContent,
   DialogTitle,
-  DialogContentText,
-  makeStyles
-} from "@material-ui/core";
-import { Alert } from "@material-ui/lab";
+  DialogContentText
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
+import { Alert } from "@mui/lab";
 
 const useStyles = makeStyles((theme) => ({
   textField: {
diff --git a/src/components/Job/JobBadge.js b/src/components/Job/JobBadge.js
index 2628dc586147c6a7923b91c2d511a7723017377e..c3f39484298f8f05dc37d90f814a6498f70bd7a0 100644
--- a/src/components/Job/JobBadge.js
+++ b/src/components/Job/JobBadge.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { IconBadge } from "../common/Badge/IconBadge";
 import { JobTypeIcon } from "./JobIcons";
-import { Link as MuiLink } from "@material-ui/core";
+import { Link as MuiLink } from "@mui/material";
 import { Link as ReactRouterLink } from "react-router-dom";
 
 export function JobBadge({ operation }) {
@@ -9,6 +9,7 @@ export function JobBadge({ operation }) {
     <MuiLink
       component={ReactRouterLink}
       to={`/iocs/${operation.iocId}`}
+      underline="hover"
     >
       {operation.iocName}
     </MuiLink>
diff --git a/src/components/Job/JobDetails.js b/src/components/Job/JobDetails.js
index 17d1c0a51f1c3287bec93721beb4a44af37f697c..67cb21b0757862b53343624c5cbb7ee2a77e4b81 100644
--- a/src/components/Job/JobDetails.js
+++ b/src/components/Job/JobDetails.js
@@ -5,9 +5,9 @@ import {
   Card,
   CardContent,
   Container,
-  Link as MuiLink,
-  makeStyles
-} from "@material-ui/core";
+  Link as MuiLink
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { DeploymentStepper } from "../deployments/DeploymentStepper";
 import { KeyValueTable } from "../common/KeyValueTable/KeyValueTable";
 import { SimpleAccordion } from "../common/Accordion/SimpleAccordion";
@@ -66,6 +66,7 @@ export function JobDetails({ operation, job }) {
           <MuiLink
             component={ReactRouterLink}
             to={`/hosts/${operation.host.csEntryId}`}
+            underline="hover"
           >
             {operation.host.fqdn}
           </MuiLink>
@@ -96,6 +97,7 @@ export function JobDetails({ operation, job }) {
           href={operation.gitProjectUrl}
           target="_blank"
           rel="noreferrer"
+          underline="hover"
         >
           {operation.gitProjectUrl}
         </MuiLink>
@@ -107,6 +109,7 @@ export function JobDetails({ operation, job }) {
           href={operation.awxJobUrl}
           target="_blank"
           rel="noreferrer"
+          underline="hover"
         >
           {operation.awxJobUrl}
         </MuiLink>
diff --git a/src/components/Job/JobTable.js b/src/components/Job/JobTable.js
index 71d8a47a0e451448850789efc6d1179a7bc4284e..02dddc2c3576a0651df6a5220b86dac8cc02bb0e 100644
--- a/src/components/Job/JobTable.js
+++ b/src/components/Job/JobTable.js
@@ -1,6 +1,6 @@
 import React, { useCallback } from "react";
 import { CustomTable } from "../common/table/CustomTable";
-import { Grid, Tooltip } from "@material-ui/core";
+import { Grid, Tooltip } from "@mui/material";
 import { noWrapText } from "../common/Helper";
 import { useRedirect } from "../../hooks/Redirect";
 import { JobStatusIcon, JobTypeIcon } from "./JobIcons";
diff --git a/src/components/auth/AccessDenied/AccessDenied.js b/src/components/auth/AccessDenied/AccessDenied.js
index 28a25a8cbff280d4b321b5a9620aed0869c94d0d..573060572eeabe63f755941289fbd1d2deab995a 100644
--- a/src/components/auth/AccessDenied/AccessDenied.js
+++ b/src/components/auth/AccessDenied/AccessDenied.js
@@ -1,5 +1,6 @@
 import React from "react";
-import { Paper, Typography, Box, Button, makeStyles } from "@material-ui/core";
+import { Paper, Typography, Box, Button } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { RootContainer } from "../../common/Container/RootContainer";
 import { useRedirect } from "../../../hooks/Redirect";
 
diff --git a/src/components/auth/Login/Login.js b/src/components/auth/Login/Login.js
index 9ad06534323fb0e9f3a18be810a6025ba10ca3ce..d3f35d1a17b10065be167f1117fea3d6c460dab2 100644
--- a/src/components/auth/Login/Login.js
+++ b/src/components/auth/Login/Login.js
@@ -4,11 +4,11 @@ import {
   Button,
   Dialog,
   DialogContent,
-  makeStyles,
   Box,
   LinearProgress
-} from "@material-ui/core";
-import { Alert } from "@material-ui/lab";
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
+import { Alert } from "@mui/lab";
 
 const useStyles = makeStyles((theme) => ({
   textField: {
diff --git a/src/components/common/Accordion/SimpleAccordion.js b/src/components/common/Accordion/SimpleAccordion.js
index d4b9dce860cf64ba0e18a644d7d129707ba89acc..fae95e3d4d9eba7b85a28cafc3c4b1f60ce8346b 100644
--- a/src/components/common/Accordion/SimpleAccordion.js
+++ b/src/components/common/Accordion/SimpleAccordion.js
@@ -4,8 +4,8 @@ import {
   AccordionSummary,
   Container,
   Typography
-} from "@material-ui/core";
-import { ExpandMore } from "@material-ui/icons";
+} from "@mui/material";
+import { ExpandMore } from "@mui/icons-material";
 import React from "react";
 
 export function SimpleAccordion({ summary, children, ...rest }) {
diff --git a/src/components/common/Badge/IconBadge.js b/src/components/common/Badge/IconBadge.js
index dc68fc93982885897f712eea2ca6c570e11bd74d..0e1a00959323ae1ca0b46284ee2ce75f0c393e8c 100644
--- a/src/components/common/Badge/IconBadge.js
+++ b/src/components/common/Badge/IconBadge.js
@@ -1,4 +1,4 @@
-import { Grid, Typography } from "@material-ui/core";
+import { Grid, Typography } from "@mui/material";
 import React from "react";
 
 export function IconBadge({ icon, secondaryIcon, title, subheader }) {
@@ -15,7 +15,7 @@ export function IconBadge({ icon, secondaryIcon, title, subheader }) {
       >
         <Grid
           container
-          justify="center"
+          justifyContent="center"
           direction="column"
           alignItems="center"
         >
@@ -31,7 +31,7 @@ export function IconBadge({ icon, secondaryIcon, title, subheader }) {
       >
         <Grid
           container
-          justify="flex-start"
+          justifyContent="flex-start"
         >
           <Grid
             item
diff --git a/src/components/common/Console/Console.js b/src/components/common/Console/Console.js
index 6cf76e0385e2fcac39c8db461997b33fed0b4ca1..d8948b859fcc20c5413b64c7b223d402e8d04465 100644
--- a/src/components/common/Console/Console.js
+++ b/src/components/common/Console/Console.js
@@ -1,12 +1,6 @@
 import React, { useState } from "react";
-import {
-  Container,
-  Button,
-  Grid,
-  Box,
-  LinearProgress
-} from "@material-ui/core";
-import { Launch } from "@material-ui/icons";
+import { Container, Button, Grid, Box, LinearProgress } from "@mui/material";
+import { Launch } from "@mui/icons-material";
 import { ConsoleOutput } from "./ConsoleOutput";
 import { LogDialog } from "./LogDialog";
 import { SimpleModal } from "../SimpleModal/SimpleModal";
@@ -65,7 +59,7 @@ export function Console({
           <Grid
             container
             spacing={0}
-            justify="flex-end"
+            justifyContent="flex-end"
           >
             <Grid
               item
diff --git a/src/components/common/Console/ConsoleOutput.js b/src/components/common/Console/ConsoleOutput.js
index 8b160f6e8883100164d2c045ee16fe80f8e842b4..48a096424da66867ae0cde7444e0dc6bb34aba42 100644
--- a/src/components/common/Console/ConsoleOutput.js
+++ b/src/components/common/Console/ConsoleOutput.js
@@ -1,5 +1,5 @@
 import React, { useState, useRef, useEffect } from "react";
-import { makeStyles } from "@material-ui/core/styles";
+import { makeStyles } from "@mui/styles";
 import clsx from "clsx";
 import { useWindowDimensions } from "../../common/Helper";
 
diff --git a/src/components/common/Console/LogDialog.js b/src/components/common/Console/LogDialog.js
index c826166399f5f68c5bccf6b81338ad4a3fd97176..15e589ccfd336401a0f2b8293b6dd5140a0136c5 100644
--- a/src/components/common/Console/LogDialog.js
+++ b/src/components/common/Console/LogDialog.js
@@ -1,10 +1,6 @@
 import React from "react";
-import {
-  Dialog,
-  DialogContent,
-  DialogTitle,
-  makeStyles
-} from "@material-ui/core";
+import { Dialog, DialogContent, DialogTitle } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 
 const useStyles = makeStyles(() => ({
   title: {
diff --git a/src/components/common/Container/RootContainer.js b/src/components/common/Container/RootContainer.js
index a5eced5a2cf0d3b4884fab685674e7eede5694d9..09228a70681992abc5c2f6847e6798bec22eff12 100644
--- a/src/components/common/Container/RootContainer.js
+++ b/src/components/common/Container/RootContainer.js
@@ -1,5 +1,5 @@
-import { styled } from "@material-ui/core/styles";
-import Container from "@material-ui/core/Container";
+import { styled } from "@mui/material/styles";
+import Container from "@mui/material/Container";
 
 export const RootContainer = styled(Container)({
   paddingBottom: "200px"
diff --git a/src/components/common/Helper.js b/src/components/common/Helper.js
index 1374442305a666a8f071bc22f26d6fc7524853fd..19d9e3a4a692a60017f0287dcb9c04e14a8a370a 100644
--- a/src/components/common/Helper.js
+++ b/src/components/common/Helper.js
@@ -1,7 +1,7 @@
 import React, { useState, useEffect } from "react";
 import moment from "moment";
-import { alpha } from "@material-ui/core/styles/colorManipulator";
-import { Typography } from "@material-ui/core";
+import { alpha } from "@mui/material/styles";
+import { Typography } from "@mui/material";
 
 export function formatToList(items) {
   if (!items) return null;
diff --git a/src/components/common/KeyValueTable/KeyValueTable.js b/src/components/common/KeyValueTable/KeyValueTable.js
index a5884db71b7e9b6e110731d087d5bc98cc54a535..9289299c2b561917ab98bf5e50e857b6576cf437 100644
--- a/src/components/common/KeyValueTable/KeyValueTable.js
+++ b/src/components/common/KeyValueTable/KeyValueTable.js
@@ -6,7 +6,7 @@ import {
   TableCell,
   TableRow,
   Typography
-} from "@material-ui/core";
+} from "@mui/material";
 
 // const StyledTableRow = withStyles((theme) => ({
 //   root: {
diff --git a/src/components/common/Loki/LokiContainer.js b/src/components/common/Loki/LokiContainer.js
index b17554d7f111c19d552d80d815e4c1da38f3249a..704b6c1d1fe1a5a21d7fcc79e0f029551f3a0b0d 100644
--- a/src/components/common/Loki/LokiContainer.js
+++ b/src/components/common/Loki/LokiContainer.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { Container } from "@material-ui/core";
+import { Container } from "@mui/material";
 import { useHost } from "../../../api/SwaggerApi";
 import { LokiPanel } from "./LokiPanel";
 
diff --git a/src/components/common/Loki/LokiPanel.js b/src/components/common/Loki/LokiPanel.js
index e9f0e4bda081f878b29f8a3777ccd5ff7b1771af..21c1536482a0e225b19bb77c4040082a2b6a0b74 100644
--- a/src/components/common/Loki/LokiPanel.js
+++ b/src/components/common/Loki/LokiPanel.js
@@ -1,5 +1,5 @@
 import React, { useState, useEffect, useCallback } from "react";
-import { makeStyles } from "@material-ui/core/styles";
+import { makeStyles } from "@mui/styles";
 import { useLokiSysLog, useLokiProcServLog } from "../../../api/SwaggerApi";
 import {
   Grid,
@@ -9,7 +9,7 @@ import {
   FormControl,
   LinearProgress,
   Container
-} from "@material-ui/core";
+} from "@mui/material";
 import { formatDate } from "../Helper.js";
 import { Console } from "../Console/Console";
 import { useSafePolling } from "../../../hooks/Polling";
@@ -66,8 +66,8 @@ export function LokiPanel({ host, iocName, isSyslog, isDeployed }) {
 
   const handleChange = (event) => {
     setPeriodChange(true);
-    setTimeRange(event.target.value);
-    setTimeRangeText(event.currentTarget.innerText);
+    setTimeRange(event.target?.value);
+    setTimeRangeText(event.currentTarget?.innerText);
   };
 
   // remove progressBar if intervall has been changed, and data received
@@ -124,6 +124,7 @@ export function LokiPanel({ host, iocName, isSyslog, isDeployed }) {
     >
       <InputLabel id="time-range-select">Time range</InputLabel>
       <Select
+        variant="standard"
         labelId="time-range-select"
         value={timeRange}
         onChange={handleChange}
@@ -140,7 +141,7 @@ export function LokiPanel({ host, iocName, isSyslog, isDeployed }) {
         <Grid
           container
           spacing={1}
-          justify="flex-start"
+          justifyContent="flex-start"
         >
           <Grid
             item
diff --git a/src/components/common/Popover/Popover.js b/src/components/common/Popover/Popover.js
index 5c6e54b70ada096a4c684b8e9c77f2dba784a093..8f498d624c843b0487a167fcd918e941ec0aeb4a 100644
--- a/src/components/common/Popover/Popover.js
+++ b/src/components/common/Popover/Popover.js
@@ -1,5 +1,6 @@
 import React from "react";
-import { Popover as MuiPopover, makeStyles } from "@material-ui/core";
+import { Popover as MuiPopover } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 
 const useStyles = makeStyles((theme) => ({
   popover: {
diff --git a/src/components/common/PrimeKeyValueTable/PrimeKeyValueTable.stories.js b/src/components/common/PrimeKeyValueTable/PrimeKeyValueTable.stories.js
index e4b53992af82ef21493972c2fd63a89695a813c6..3732b778753c3e6219e8589ce75600805aa84903 100644
--- a/src/components/common/PrimeKeyValueTable/PrimeKeyValueTable.stories.js
+++ b/src/components/common/PrimeKeyValueTable/PrimeKeyValueTable.stories.js
@@ -1,5 +1,6 @@
 import React from "react";
-import { Container, ThemeProvider } from "@material-ui/core";
+import { Container, StyledEngineProvider } from "@mui/material";
+import { ThemeProvider } from "@mui/material/styles";
 import { theme } from "../../../style/Theme";
 import { PrimeKeyValueTable } from "./PrimeKeyValueTable";
 
@@ -9,11 +10,13 @@ export default {
 };
 
 const Template = (args) => (
-  <ThemeProvider theme={theme}>
-    <Container>
-      <PrimeKeyValueTable {...args} />
-    </Container>
-  </ThemeProvider>
+  <StyledEngineProvider injectFirst>
+    <ThemeProvider theme={theme}>
+      <Container>
+        <PrimeKeyValueTable {...args} />
+      </Container>
+    </ThemeProvider>
+  </StyledEngineProvider>
 );
 
 export const Example = Template.bind({});
diff --git a/src/components/common/SearchBar/SearchBar.js b/src/components/common/SearchBar/SearchBar.js
index 118e7f90d1b5810bd89c321ae10c1c80734e30b9..885133b869edf44830a7f19ce8cef27e66e8b848 100644
--- a/src/components/common/SearchBar/SearchBar.js
+++ b/src/components/common/SearchBar/SearchBar.js
@@ -3,8 +3,8 @@ import React, {
   Container,
   Fade,
   TextField
-} from "@material-ui/core";
-import { Check } from "@material-ui/icons";
+} from "@mui/material";
+import { Check } from "@mui/icons-material";
 import { useEffect, useState } from "react";
 import { useEffectAfterMount } from "../../../hooks/MountEffects";
 import { useTypingTimer } from "../SearchBoxFilter/TypingTimer";
diff --git a/src/components/common/SearchBoxFilter/SearchBoxFilter.js b/src/components/common/SearchBoxFilter/SearchBoxFilter.js
index f1dea0daca29dd6f0e8fbff85c8757370868b601..5ae724a11fe40a6818290c5ff7099054deb8b063 100644
--- a/src/components/common/SearchBoxFilter/SearchBoxFilter.js
+++ b/src/components/common/SearchBoxFilter/SearchBoxFilter.js
@@ -1,12 +1,6 @@
 import React, { useState, useEffect } from "react";
-import {
-  Container,
-  List,
-  ListItem,
-  Paper,
-  TextField,
-  makeStyles
-} from "@material-ui/core";
+import { Container, List, ListItem, Paper, TextField } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { useTypingTimer } from "./TypingTimer";
 
 const useStyles = makeStyles((theme) => ({
diff --git a/src/components/common/SimpleModal/SimpleModal.js b/src/components/common/SimpleModal/SimpleModal.js
index 5f44815550fa8d241b002ee3d530209fb371507c..e696279b49297ecb90a5d2f0c5686982ac0e8e7c 100644
--- a/src/components/common/SimpleModal/SimpleModal.js
+++ b/src/components/common/SimpleModal/SimpleModal.js
@@ -1,5 +1,6 @@
 import React from "react";
-import { makeStyles, Dialog } from "@material-ui/core";
+import { Dialog } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 
 const useStyles = makeStyles((theme) => ({
   paper: {
diff --git a/src/components/common/snackbar/Snackbar.js b/src/components/common/snackbar/Snackbar.js
index d3b9083348febd63381d139847ad71f2712bcaa9..8ba7481f47b54913acae39faee2e4eaf57031f3c 100644
--- a/src/components/common/snackbar/Snackbar.js
+++ b/src/components/common/snackbar/Snackbar.js
@@ -1,6 +1,7 @@
 import React from "react";
 import { useSnackbar } from "notistack";
-import { Button, makeStyles } from "@material-ui/core";
+import { Button } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 
 const useStyles = makeStyles((theme) => ({
   text: {
diff --git a/src/components/common/stepper/StepperWithStyle.js b/src/components/common/stepper/StepperWithStyle.js
index 1e0d35755365d658627c5b7dfec623c8cf1ec6e6..e416f3ba32af401572079e0f7a5a11c0dad30ddb 100644
--- a/src/components/common/stepper/StepperWithStyle.js
+++ b/src/components/common/stepper/StepperWithStyle.js
@@ -1,13 +1,13 @@
 import React from "react";
-import { makeStyles, withStyles } from "@material-ui/core/styles";
+import { makeStyles, withStyles } from "@mui/styles";
 import clsx from "clsx";
 import {
   Stepper,
   Step,
   StepLabel,
   StepConnector,
-  Hidden
-} from "@material-ui/core";
+  useMediaQuery
+} from "@mui/material";
 import { theme } from "../../../style/Theme";
 
 const useStyles = makeStyles({
@@ -46,12 +46,12 @@ const ColorlibConnectorHorizontal = withStyles({
     top: 22
   },
   active: {
-    "& $line": {
+    "& .MuiStepConnector-line": {
       background: theme.palette.status.progress
     }
   },
   completed: {
-    "& $line": {
+    "& .MuiStepConnector-line": {
       background: theme.palette.status.ok
     }
   },
@@ -68,12 +68,12 @@ const ColorlibConnectorVertical = withStyles({
     top: 22
   },
   active: {
-    "& $line": {
+    "& .MuiStepConnector-line": {
       background: theme.palette.status.progress
     }
   },
   completed: {
-    "& $line": {
+    "& .MuiStepConnector-line": {
       background: theme.palette.status.ok
     }
   },
@@ -87,6 +87,8 @@ const ColorlibConnectorVertical = withStyles({
 })(StepConnector);
 
 export function StepperWithStyle({ steps, activeStep, isStepFailed, icons }) {
+  const smUp = useMediaQuery((theme) => theme.breakpoints.up("sm"));
+  const smDown = useMediaQuery((theme) => theme.breakpoints.down("sm"));
   const classes = useStyles(theme);
 
   function ColorlibStepIcon(props) {
@@ -108,12 +110,13 @@ export function StepperWithStyle({ steps, activeStep, isStepFailed, icons }) {
 
   return (
     <>
-      <Hidden smUp>
+      {smDown ? (
         <Stepper
           className={classes.stepper}
           activeStep={activeStep}
           orientation="vertical"
           connector={<ColorlibConnectorVertical />}
+          style={{ padding: 24 }}
         >
           {steps.map((label, index) => {
             const labelProps = {};
@@ -135,8 +138,8 @@ export function StepperWithStyle({ steps, activeStep, isStepFailed, icons }) {
             );
           })}
         </Stepper>
-      </Hidden>
-      <Hidden xsDown>
+      ) : null}
+      {smUp ? (
         <Stepper
           className={classes.stepper}
           alternativeLabel
@@ -166,7 +169,7 @@ export function StepperWithStyle({ steps, activeStep, isStepFailed, icons }) {
             );
           })}
         </Stepper>
-      </Hidden>
+      ) : null}
     </>
   );
 }
diff --git a/src/components/common/table/CustomTable.js b/src/components/common/table/CustomTable.js
index 44288d1d352860d0fe402d4a271015e2d217ac28..071709f6b19113afa5149058d6bcd2eafdea4288 100644
--- a/src/components/common/table/CustomTable.js
+++ b/src/components/common/table/CustomTable.js
@@ -1,6 +1,6 @@
 import React, { useRef, useState } from "react";
 import PropTypes from "prop-types";
-import { LinearProgress, Paper } from "@material-ui/core";
+import { LinearProgress, Paper } from "@mui/material";
 import { DataTable } from "primereact/datatable";
 import { Column } from "primereact/column";
 import { ContextMenu } from "primereact/contextmenu";
diff --git a/src/components/deployments/DeploymentBadge.js b/src/components/deployments/DeploymentBadge.js
index 9031236ec6537f5f48e5adde12780d44a390d989..5dd03dbfc5aaa917b4dc74282993cef95b0c5a42 100644
--- a/src/components/deployments/DeploymentBadge.js
+++ b/src/components/deployments/DeploymentBadge.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { IconBadge } from "../common/Badge/IconBadge";
 import { DeploymentTypeIcon } from "./DeploymentIcons";
-import { Link as MuiLink } from "@material-ui/core";
+import { Link as MuiLink } from "@mui/material";
 import { Link as ReactRouterLink } from "react-router-dom";
 
 export function DeploymentBadge({ deployment }) {
@@ -9,6 +9,7 @@ export function DeploymentBadge({ deployment }) {
     <MuiLink
       component={ReactRouterLink}
       to={`/iocs/${deployment.iocId}`}
+      underline="hover"
     >
       {deployment.namingName}
     </MuiLink>
diff --git a/src/components/deployments/DeploymentDetails.js b/src/components/deployments/DeploymentDetails.js
index eefbb416ea207158c255a375e4659636a50c9eb8..b4e86498f1f00ec70ab558ec115aaa4596edf177 100644
--- a/src/components/deployments/DeploymentDetails.js
+++ b/src/components/deployments/DeploymentDetails.js
@@ -5,9 +5,9 @@ import {
   Card,
   CardContent,
   Container,
-  Link as MuiLink,
-  makeStyles
-} from "@material-ui/core";
+  Link as MuiLink
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { DeploymentStepper } from "./DeploymentStepper";
 import { KeyValueTable } from "../common/KeyValueTable/KeyValueTable";
 import { SimpleAccordion } from "../common/Accordion/SimpleAccordion";
@@ -74,6 +74,7 @@ export function DeploymentDetails({ deployment, deploymentJob }) {
           <MuiLink
             component={ReactRouterLink}
             to={`/hosts/${deployment.host.csEntryId}`}
+            underline="hover"
           >
             {deployment.host.fqdn}
           </MuiLink>
@@ -104,6 +105,7 @@ export function DeploymentDetails({ deployment, deploymentJob }) {
           href={deployment.sourceUrl}
           target="_blank"
           rel="noreferrer"
+          underline="hover"
         >
           {deployment.sourceUrl}
         </MuiLink>
@@ -115,6 +117,7 @@ export function DeploymentDetails({ deployment, deploymentJob }) {
           href={deployment.awxJobUrl}
           target="_blank"
           rel="noreferrer"
+          underline="hover"
         >
           {deployment.awxJobUrl}
         </MuiLink>
diff --git a/src/components/deployments/DeploymentIcons.js b/src/components/deployments/DeploymentIcons.js
index d2a61ef08a0875fa36d74dc1c969af7051794b1d..c591afcb1a31eaff243f048da27897dce4444486 100644
--- a/src/components/deployments/DeploymentIcons.js
+++ b/src/components/deployments/DeploymentIcons.js
@@ -6,8 +6,8 @@ import {
   QueueOutlined,
   AddCircleOutline,
   RemoveCircleOutline
-} from "@material-ui/icons";
-import { Tooltip } from "@material-ui/core";
+} from "@mui/icons-material";
+import { Tooltip } from "@mui/material";
 import { theme } from "../../style/Theme";
 
 export function DeploymentStatusIcon({ status }) {
diff --git a/src/components/deployments/DeploymentJobOutput.js b/src/components/deployments/DeploymentJobOutput.js
index 79b7b8e36d9a102e60351e3370185e53937ec9b6..93129e6e8f4352460d1ab5f5387ebfce1fbbdb8c 100644
--- a/src/components/deployments/DeploymentJobOutput.js
+++ b/src/components/deployments/DeploymentJobOutput.js
@@ -1,5 +1,5 @@
 import React, { useCallback, useRef, useEffect } from "react";
-import { LinearProgress, Typography, Container } from "@material-ui/core";
+import { LinearProgress, Typography, Container } from "@mui/material";
 import { useJobLogById } from "../../api/SwaggerApi";
 import { Console } from "../common/Console/Console";
 import { useSafePolling } from "../../hooks/Polling";
diff --git a/src/components/deployments/DeploymentStepper.js b/src/components/deployments/DeploymentStepper.js
index b75dc6197e67109ae7021352dfa24f633e4169ad..3bc6665c275754972027bda1580d3ebf8a79d7e2 100644
--- a/src/components/deployments/DeploymentStepper.js
+++ b/src/components/deployments/DeploymentStepper.js
@@ -3,7 +3,7 @@ import {
   ScheduleOutlined,
   RotateRightOutlined,
   CheckCircleOutline
-} from "@material-ui/icons";
+} from "@mui/icons-material";
 import { StepperWithStyle } from "../common/stepper/StepperWithStyle";
 
 export function DeploymentStepper(props) {
diff --git a/src/components/deployments/DeploymentsList.js b/src/components/deployments/DeploymentsList.js
index f8bffc73d894b972d6717a75ca25340cf187b008..a809d8bb8a9cfddd30d888461626ace4192f1dbf 100644
--- a/src/components/deployments/DeploymentsList.js
+++ b/src/components/deployments/DeploymentsList.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { List, ListItem, Paper } from "@material-ui/core";
+import { List, ListItem, Paper } from "@mui/material";
 import { Link } from "react-router-dom";
 import { DeploymentBadge } from "./DeploymentBadge";
 
diff --git a/src/components/dialog/ConfirmationDialog.js b/src/components/dialog/ConfirmationDialog.js
index 650215cf69337a821bf4f968d5f4cf59a51b6c19..5b27216abb7eed6fa5d59dc149710ce660674ed0 100644
--- a/src/components/dialog/ConfirmationDialog.js
+++ b/src/components/dialog/ConfirmationDialog.js
@@ -5,9 +5,9 @@ import {
   DialogActions,
   DialogContent,
   DialogTitle,
-  DialogContentText,
-  makeStyles
-} from "@material-ui/core";
+  DialogContentText
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
 
 const useStyles = makeStyles((theme) => ({
   title: {
diff --git a/src/components/host/HostIcons.js b/src/components/host/HostIcons.js
index 67096e4504211c4ba8bc34b93c11dc366b495445..4e8ee6cc9a32f22e35bf0d9057c3ca27d983c6cc 100644
--- a/src/components/host/HostIcons.js
+++ b/src/components/host/HostIcons.js
@@ -1,12 +1,12 @@
 import React from "react";
-import { Tooltip, useTheme } from "@material-ui/core";
+import { Tooltip, useTheme } from "@mui/material";
 import {
   Brightness1,
   ErrorOutline,
   Error,
   RadioButtonUnchecked,
   HelpOutline
-} from "@material-ui/icons";
+} from "@mui/icons-material";
 
 export function HostStatusIcon({ host }) {
   const theme = useTheme();
diff --git a/src/components/host/HostList.js b/src/components/host/HostList.js
index 433218e2f15149debab65c8f37c04170da7b4bf4..165bc3b13fed2b6c5effc8a7c29b5c1dd2f4f84d 100644
--- a/src/components/host/HostList.js
+++ b/src/components/host/HostList.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { List, ListItem, Paper } from "@material-ui/core";
+import { List, ListItem, Paper } from "@mui/material";
 import { Link } from "react-router-dom";
 import { HostBadge } from "./HostBadge";
 
diff --git a/src/components/host/HostTable.js b/src/components/host/HostTable.js
index b3f47069c3cd479b2b9563087284256932f202b8..784b48cb29dbf51b8f0b40d67dbd34037afbc2e9 100644
--- a/src/components/host/HostTable.js
+++ b/src/components/host/HostTable.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { Grid, Tooltip } from "@material-ui/core";
+import { Grid, Tooltip } from "@mui/material";
 import { CustomTable } from "../common/table/CustomTable";
 import { HostStatusIcon } from "./HostIcons";
 import { noWrapText } from "../common/Helper";
diff --git a/src/components/host/HostTable.spec.js b/src/components/host/HostTable.spec.js
index a21b6c894d7fad6867113badddf4aa4be036d960..9c683501a4f0fde11fc612cf33a1b8ad927f5dc5 100644
--- a/src/components/host/HostTable.spec.js
+++ b/src/components/host/HostTable.spec.js
@@ -39,7 +39,7 @@ describe("HostTable", () => {
         .each(($el, index) => {
           if (index === 0) {
             const iconTitle = firstRowData[index];
-            cy.wrap($el).find(`svg[title=${iconTitle}]`);
+            cy.wrap($el).find(`svg[aria-label=${iconTitle}]`);
           } else {
             cy.wrap($el)
               .find("p")
diff --git a/src/components/host/HostTable.stories.js b/src/components/host/HostTable.stories.js
index 426a237039fb6d675b17fc77c1c6d9899cb208ed..f4c2e17182b32afa3b028b94ad3d4814e13d3903 100644
--- a/src/components/host/HostTable.stories.js
+++ b/src/components/host/HostTable.stories.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { Container } from "@material-ui/core";
+import { Container } from "@mui/material";
 import hosts from "../../mocks/fixtures/PagedCSEntryHostResponse.json";
 import { HostTable } from "./HostTable";
 import { RouterHarness } from "../../mocks/AppHarness";
diff --git a/src/components/navigation/ErrorBoundary/ErrorBoundary.js b/src/components/navigation/ErrorBoundary/ErrorBoundary.js
index ddbd6a0d0780865ee18bd07592b768579916992d..693bd2cac19b09c11a564d2b2ca84b7e472c7871 100644
--- a/src/components/navigation/ErrorBoundary/ErrorBoundary.js
+++ b/src/components/navigation/ErrorBoundary/ErrorBoundary.js
@@ -1,5 +1,5 @@
-import { Box, Button, Container, Grid, Typography } from "@material-ui/core";
-import { BugReport } from "@material-ui/icons";
+import { Box, Button, Container, Grid, Typography } from "@mui/material";
+import { BugReport } from "@mui/icons-material";
 import React, { useCallback, useState } from "react";
 import { ErrorBoundary, useErrorHandler } from "react-error-boundary";
 import { useEffectOnMount } from "../../../hooks/MountEffects";
diff --git a/src/components/navigation/GlobalAppBar/GlobalAppBar.js b/src/components/navigation/GlobalAppBar/GlobalAppBar.js
index 2ffe624b500226ff7df7c7758bfc77fcbf6fe9c3..95946b2fa4f594da5936dd68bf0ba5d469b3fd25 100644
--- a/src/components/navigation/GlobalAppBar/GlobalAppBar.js
+++ b/src/components/navigation/GlobalAppBar/GlobalAppBar.js
@@ -15,7 +15,6 @@ import {
   ListItem,
   ListItemIcon,
   ListItemText,
-  makeStyles,
   Toolbar,
   Typography,
   Menu,
@@ -27,9 +26,10 @@ import {
   List,
   Box,
   Divider,
-  useTheme
-} from "@material-ui/core";
-import { withStyles } from "@material-ui/core/styles";
+  useTheme,
+  ListItemButton
+} from "@mui/material";
+import { makeStyles, withStyles } from "@mui/styles";
 import {
   LockOpen,
   Home,
@@ -37,11 +37,11 @@ import {
   Storage,
   TrendingUp,
   SettingsInputComponent
-} from "@material-ui/icons";
-import HelpIcon from "@material-ui/icons/Help";
+} from "@mui/icons-material";
+import HelpIcon from "@mui/icons-material/Help";
 import { DeploymentStatusIcon } from "../../deployments/DeploymentIcons";
-import DeleteIcon from "@material-ui/icons/Delete";
-import NotificationsIcon from "@material-ui/icons/Notifications";
+import DeleteIcon from "@mui/icons-material/Delete";
+import NotificationsIcon from "@mui/icons-material/Notifications";
 import { MenuDrawer } from "../Menu/MenuDrawer";
 import { Link } from "react-router-dom";
 import { userContext } from "../../../api/SwaggerApi";
@@ -102,7 +102,6 @@ const StyledMenu = withStyles({
     <div style={{ ...props.theme.mixins.toolbar }} />
     <Menu
       elevation={0}
-      getContentAnchorEl={null}
       anchorOrigin={{
         vertical: "bottom",
         horizontal: "center"
@@ -116,17 +115,6 @@ const StyledMenu = withStyles({
   </>
 ));
 
-const StyledMenuItem = withStyles((theme) => ({
-  root: {
-    "&:focus": {
-      backgroundColor: theme.palette.common.gray,
-      "& .MuiListItemIcon-root, & .MuiListItemText-primary": {
-        color: theme.palette.common.black
-      }
-    }
-  }
-}))(MenuItem);
-
 function InfoMenuItem({ children }) {
   return (
     <MenuItem
@@ -219,6 +207,7 @@ export function ButtonAppBar({ homeUrl, homeClick, title, button }) {
             className={classes.menuButton}
             color="inherit"
             aria-label="menu"
+            size="large"
           >
             <Home />
           </IconButton>
@@ -262,8 +251,7 @@ function MenuListItem({ url, icon, text, tooltip }) {
         placement="right"
         arrow
       >
-        <ListItem
-          button
+        <ListItemButton
           component={Link}
           to={url}
           selected={currentUrl.split("?")[0].endsWith(url)}
@@ -273,7 +261,7 @@ function MenuListItem({ url, icon, text, tooltip }) {
             primary={text}
             primaryTypographyProps={{ variant: "h5" }}
           />
-        </ListItem>
+        </ListItemButton>
       </Tooltip>
     </>
   );
@@ -350,7 +338,7 @@ export function ProfileMenu() {
               key={role}
             />
           ))}
-        <StyledMenuItem
+        <MenuItem
           onClick={() => {
             handleClose();
             logout();
@@ -363,18 +351,18 @@ export function ProfileMenu() {
             primary="Logout"
             primaryTypographyProps={{ variant: "h5" }}
           />
-        </StyledMenuItem>
+        </MenuItem>
       </StyledMenu>
     </>
   );
 }
 
-const StyledListItem = withStyles(() => ({
+const StyledListItemButton = withStyles(() => ({
   root: {
     margin: 0,
     paddingLeft: 10
   }
-}))(ListItem);
+}))(ListItemButton);
 
 const StyledListItemIcon = withStyles(() => ({
   root: {
@@ -409,8 +397,7 @@ export function NotificationMenu() {
               return (
                 <>
                   {notification.link ? (
-                    <StyledListItem
-                      button
+                    <StyledListItemButton
                       component={Link}
                       to={notification.link}
                       onClick={() => {
@@ -423,16 +410,16 @@ export function NotificationMenu() {
                       <Typography className={classes.notificationItem}>
                         {notification.message}
                       </Typography>
-                    </StyledListItem>
+                    </StyledListItemButton>
                   ) : (
-                    <StyledListItem key={notification.message}>
+                    <StyledListItemButton key={notification.message}>
                       <StyledListItemIcon className={classes.notificationItem}>
                         <DeploymentStatusIcon status={notification.status} />
                       </StyledListItemIcon>
                       <Typography className={classes.notificationItem}>
                         {notification.message}
                       </Typography>
-                    </StyledListItem>
+                    </StyledListItemButton>
                   )}
                 </>
               );
@@ -453,6 +440,7 @@ export function NotificationMenu() {
                 clearNotifications();
                 handleClose();
               }}
+              size="large"
             >
               <Tooltip
                 title="Clear all notifications"
@@ -486,6 +474,7 @@ export function NotificationMenu() {
             color="inherit"
             onClick={handleClick}
             className={classes.notificationButton}
+            size="large"
           >
             <Badge
               badgeContent={notifications.length}
@@ -510,7 +499,7 @@ export function NotificationMenu() {
             <Grid
               container
               spacing={0}
-              justify="flex-end"
+              justifyContent="flex-end"
             >
               {notifications.length > 0 ? haveNotification() : noNotification()}
             </Grid>
diff --git a/src/components/navigation/Menu/MenuDrawer.js b/src/components/navigation/Menu/MenuDrawer.js
index 0d795bc5923eb12743c5349c6ed59547b71e0f32..09ec55a9c0b7cb68082244e36ad5dd74da264464 100644
--- a/src/components/navigation/Menu/MenuDrawer.js
+++ b/src/components/navigation/Menu/MenuDrawer.js
@@ -6,11 +6,11 @@ import {
   IconButton,
   Box,
   Tooltip,
-  makeStyles,
   useTheme
-} from "@material-ui/core";
-import ChevronLeftIcon from "@material-ui/icons/ChevronLeft";
-import ChevronRightIcon from "@material-ui/icons/ChevronRight";
+} from "@mui/material";
+import ChevronLeftIcon from "@mui/icons-material/ChevronLeft";
+import ChevronRightIcon from "@mui/icons-material/ChevronRight";
+import { makeStyles } from "@mui/styles";
 
 const useStyles = makeStyles((theme) => ({
   footer: {
@@ -103,6 +103,7 @@ export function MenuDrawer({ open, toggleDrawer, children }) {
                 <IconButton
                   onClick={handleDrawerClose}
                   className={classes.toggleButton}
+                  size="large"
                 >
                   {open ? <ChevronLeftIcon /> : <ChevronRightIcon />}
                 </IconButton>
diff --git a/src/components/navigation/NotFound.js b/src/components/navigation/NotFound.js
index ac9a0ec775695ab156c7f032f6b6cb5ad9c414b3..afdfe0d9337e1e20305ecb04391775ca9be5609e 100644
--- a/src/components/navigation/NotFound.js
+++ b/src/components/navigation/NotFound.js
@@ -1,12 +1,6 @@
 import React from "react";
-import {
-  Paper,
-  Typography,
-  Box,
-  Button,
-  makeStyles,
-  Link
-} from "@material-ui/core";
+import { Paper, Typography, Box, Button, Link } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { RootContainer } from "../../components/common/Container/RootContainer";
 import { useRedirect } from "../../hooks/Redirect";
 
@@ -70,6 +64,7 @@ export default function NotFound({ message }) {
               href="https://jira.esss.lu.se/plugins/servlet/desk/portal/44?requestGroup=137"
               target="_blank"
               rel="noreferrer"
+              underline="hover"
             >
               Service Desk
             </Link>
diff --git a/src/components/records/RecordIcons.js b/src/components/records/RecordIcons.js
index 6c8fa22e87f4eb0c77e64dcc06847fff69585c95..c1852777a39abc6e12a1afd55cf0d2f2ce055558 100644
--- a/src/components/records/RecordIcons.js
+++ b/src/components/records/RecordIcons.js
@@ -1,10 +1,10 @@
 import React from "react";
-import { Tooltip, useTheme } from "@material-ui/core";
+import { Tooltip, useTheme } from "@mui/material";
 import {
   Brightness1,
   RadioButtonUnchecked,
   HelpOutline
-} from "@material-ui/icons";
+} from "@mui/icons-material";
 
 export function RecordStatusIcon({ record }) {
   const theme = useTheme();
diff --git a/src/components/records/RecordSearch.js b/src/components/records/RecordSearch.js
index 5f047ab6bf0da5ef8859ecd9b4c7e433dea4e59f..7e52cfab2da79165c1890a1505d103797d27a8de 100644
--- a/src/components/records/RecordSearch.js
+++ b/src/components/records/RecordSearch.js
@@ -5,7 +5,7 @@ import { RecordTable } from "./RecordTable";
 import { SearchBar } from "../common/SearchBar/SearchBar";
 import useUrlState from "@ahooksjs/use-url-state";
 import { serialize, deserialize } from "../common/URLState/URLState";
-import { Grid, Tabs, Tab, Typography } from "@material-ui/core";
+import { Grid, Tabs, Tab, Typography } from "@mui/material";
 
 export function RecordSearch({ iocName, rowType }) {
   const [records, getRecords /* reset*/, , loading] = useRecordSearch();
@@ -99,8 +99,6 @@ export function RecordSearch({ iocName, rowType }) {
         <Tabs
           value={deserialize(state.record_tab)}
           onChange={handleTabChange}
-          indicatorColor="primary"
-          textColor="primary"
         >
           <Tab label={<Typography variant="h5">All</Typography>} />
           <Tab label={<Typography variant="h5">Only active</Typography>} />
diff --git a/src/components/records/RecordTable.js b/src/components/records/RecordTable.js
index 8846161331e454c4b6c5165ae5355c5d0dc9de79..8dcdb0a1bede0bf3047f2abaa3ecd89e1a4ff5fd 100644
--- a/src/components/records/RecordTable.js
+++ b/src/components/records/RecordTable.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { CustomTable } from "../common/table/CustomTable";
 import { RecordStatusIcon } from "./RecordIcons";
-import { Grid } from "@material-ui/core";
+import { Grid } from "@mui/material";
 import { useRedirect } from "../../hooks/Redirect";
 
 const recordsColumns = [
diff --git a/src/components/statistics/ActiveIOCChart/ActiveIOCChart.js b/src/components/statistics/ActiveIOCChart/ActiveIOCChart.js
index 33188c8a7f2d7950c31ae0cfb18ccd8b6fc95457..e63be41a706d9fd9ed9d6bf0a27d840fdf7bd835 100644
--- a/src/components/statistics/ActiveIOCChart/ActiveIOCChart.js
+++ b/src/components/statistics/ActiveIOCChart/ActiveIOCChart.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { useCurrentlyActiveIOCs } from "../../../api/SwaggerApi";
 import { useEffect } from "react";
-import { LinearProgress, useTheme } from "@material-ui/core";
+import { LinearProgress, useTheme } from "@mui/material";
 import { circularPalette } from "../../common/Helper";
 import {
   BarChart,
diff --git a/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js b/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js
index d4fcf11d282855e7276f2027e260d21a37da9a8d..3f6cb2b2e7acf0c984bc402058a1188e9a1aece1 100644
--- a/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js
+++ b/src/components/statistics/DeploymentLineChart/DeploymentLineChart.js
@@ -2,7 +2,7 @@ import React from "react";
 import { useEffect } from "react";
 import { formatDateOnly } from "../../common/Helper";
 import { circularPalette } from "../../common/Helper";
-import { LinearProgress, useTheme } from "@material-ui/core";
+import { LinearProgress, useTheme } from "@mui/material";
 import {
   AreaChart,
   Area,
diff --git a/src/components/statistics/OperationChart/OperationChart.js b/src/components/statistics/OperationChart/OperationChart.js
index 97bec2cf7ff081b8a659092aa04d93f1b5f46789..f7faf934f685eb811a2797791c8aabbef3eb8a83 100644
--- a/src/components/statistics/OperationChart/OperationChart.js
+++ b/src/components/statistics/OperationChart/OperationChart.js
@@ -2,7 +2,7 @@ import React from "react";
 import { useEffect } from "react";
 import { formatDateOnly } from "../../common/Helper";
 import { circularPalette } from "../../common/Helper";
-import { LinearProgress, useTheme } from "@material-ui/core";
+import { LinearProgress, useTheme } from "@mui/material";
 import {
   AreaChart,
   Area,
diff --git a/src/icons/CCCEControlSymbol.js b/src/icons/CCCEControlSymbol.js
index d01a503dfe6e6a1a24e86662d55096314a0cd28e..15bcf8622475ad7c0c602d56e02c683d80cfe387 100644
--- a/src/icons/CCCEControlSymbol.js
+++ b/src/icons/CCCEControlSymbol.js
@@ -1,6 +1,6 @@
 import React from "react";
 import { ReactComponent as CcceControlSymbolGray } from "./resources/control/ccce-control-symbol_757575.svg";
-import SvgIcon from "@material-ui/core/SvgIcon";
+import SvgIcon from "@mui/material/SvgIcon";
 
 export function CCCEControlSymbol(props) {
   return (
diff --git a/src/icons/RocketLaunch.js b/src/icons/RocketLaunch.js
index dc1c0421b4c2ae97732985c0269e524ef8a72791..7769db6b583dc4c9a6cb7ed1d0f17cf48d71f666 100644
--- a/src/icons/RocketLaunch.js
+++ b/src/icons/RocketLaunch.js
@@ -1,7 +1,7 @@
 import React from "react";
 import { ReactComponent as RocketLaunchBlack } from "./resources/rocket/rocket_launch_black_24dp.svg";
-import { Tooltip } from "@material-ui/core";
-import SvgIcon from "@material-ui/core/SvgIcon";
+import { Tooltip } from "@mui/material";
+import SvgIcon from "@mui/material/SvgIcon";
 
 export function RocketLaunch(props) {
   return (
diff --git a/src/mocks/AppHarness.js b/src/mocks/AppHarness.js
index f99888d2638fb512089e5b143cf11d0da01a7b28..51fdee6bfca34d7cd498e65df07b3274bf7db305 100644
--- a/src/mocks/AppHarness.js
+++ b/src/mocks/AppHarness.js
@@ -1,6 +1,7 @@
 import React from "react";
 import { SnackbarProvider } from "notistack";
-import { Container, ThemeProvider } from "@material-ui/core";
+import { Container, StyledEngineProvider } from "@mui/material";
+import { ThemeProvider } from "@mui/material/styles";
 import { theme } from "../style/Theme";
 import { APIProvider, UserProvider } from "../api/SwaggerApi";
 import { NotificationProvider } from "../components/common/notification/Notifications";
@@ -13,27 +14,31 @@ export function AppHarness({ children, initialHistory = ["/"] }) {
       preventDuplicate
       maxSnack="5"
     >
-      <ThemeProvider theme={theme}>
-        <MemoryRouter initialEntries={initialHistory}>
-          <APIProvider>
-            <UserProvider>
-              <NotificationProvider>
-                <GlobalAppBar>
-                  <Container>{children}</Container>
-                </GlobalAppBar>
-              </NotificationProvider>
-            </UserProvider>
-          </APIProvider>
-        </MemoryRouter>
-      </ThemeProvider>
+      <StyledEngineProvider injectFirst>
+        <ThemeProvider theme={theme}>
+          <MemoryRouter initialEntries={initialHistory}>
+            <APIProvider>
+              <UserProvider>
+                <NotificationProvider>
+                  <GlobalAppBar>
+                    <Container>{children}</Container>
+                  </GlobalAppBar>
+                </NotificationProvider>
+              </UserProvider>
+            </APIProvider>
+          </MemoryRouter>
+        </ThemeProvider>
+      </StyledEngineProvider>
     </SnackbarProvider>
   );
 }
 
 export function RouterHarness({ children, initialHistory = ["/"] }) {
   return (
-    <ThemeProvider theme={theme}>
-      <MemoryRouter initialEntries={initialHistory}>{children}</MemoryRouter>
-    </ThemeProvider>
+    <StyledEngineProvider injectFirst>
+      <ThemeProvider theme={theme}>
+        <MemoryRouter initialEntries={initialHistory}>{children}</MemoryRouter>
+      </ThemeProvider>
+    </StyledEngineProvider>
   );
 }
diff --git a/src/stories/components/common/IOC/IOCTable.stories.js b/src/stories/components/common/IOC/IOCTable.stories.js
index b0edf45439fdb0b39743520ce3d95f3a3d0cb40a..4066059a7d34bbb50046f2888a92e13eee518042 100644
--- a/src/stories/components/common/IOC/IOCTable.stories.js
+++ b/src/stories/components/common/IOC/IOCTable.stories.js
@@ -1,6 +1,6 @@
 import React from "react";
 import { IOCTable } from "../../../../components/IOC/IOCTable";
-import { Container } from "@material-ui/core";
+import { Container } from "@mui/material";
 import iocs from "../../../../mocks/fixtures/PagedIOCResponse.json";
 import asyncCombinedIOCs from "../../../../mocks/fixtures/AsyncCombinedIOCs.json";
 import { RouterHarness } from "../../../../mocks/AppHarness";
diff --git a/src/stories/components/common/PrimeKeyValueTable/PrimeKeyValueTable.stories.js b/src/stories/components/common/PrimeKeyValueTable/PrimeKeyValueTable.stories.js
index f7058772aaf67bfc0e29ab4ad080276e1c117693..ef2a9d37749de619c3cf5d3f9e5717269aac20c7 100644
--- a/src/stories/components/common/PrimeKeyValueTable/PrimeKeyValueTable.stories.js
+++ b/src/stories/components/common/PrimeKeyValueTable/PrimeKeyValueTable.stories.js
@@ -1,5 +1,6 @@
 import React from "react";
-import { Container, ThemeProvider } from "@material-ui/core";
+import { Container, StyledEngineProvider } from "@mui/material";
+import { ThemeProvider } from "@mui/material/styles";
 import { theme } from "../../../../style/Theme";
 import { PrimeKeyValueTable } from "../../../../components/common/PrimeKeyValueTable/PrimeKeyValueTable";
 import { disabledTable } from "../../../utils/common-args";
@@ -9,11 +10,13 @@ export default {
 };
 
 const Template = (args) => (
-  <ThemeProvider theme={theme}>
-    <Container>
-      <PrimeKeyValueTable {...args} />
-    </Container>
-  </ThemeProvider>
+  <StyledEngineProvider injectFirst>
+    <ThemeProvider theme={theme}>
+      <Container>
+        <PrimeKeyValueTable {...args} />
+      </Container>
+    </ThemeProvider>
+  </StyledEngineProvider>
 );
 
 export const Example = (args) => <Template {...args} />;
diff --git a/src/stories/components/common/host/HostTable.stories.js b/src/stories/components/common/host/HostTable.stories.js
index 44418331e4567f6a1c3f92e02280f6825bc99706..80e1e304828186fe1ad9f760f53820ef7d058e45 100644
--- a/src/stories/components/common/host/HostTable.stories.js
+++ b/src/stories/components/common/host/HostTable.stories.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { Container } from "@material-ui/core";
+import { Container } from "@mui/material";
 import hosts from "../../../../mocks/fixtures/PagedCSEntryHostResponse.json";
 import { HostTable } from "../../../../components/host/HostTable";
 import { RouterHarness } from "../../../../mocks/AppHarness";
diff --git a/src/stories/components/common/job/JobDetails.stories.js b/src/stories/components/common/job/JobDetails.stories.js
index 4ab5cc322fb7cc98076a9583fade16e3053c4207..8002898b1ca0e235521d923c20de230e00afffca 100644
--- a/src/stories/components/common/job/JobDetails.stories.js
+++ b/src/stories/components/common/job/JobDetails.stories.js
@@ -1,5 +1,6 @@
 import React from "react";
-import { Container, ThemeProvider } from "@material-ui/core";
+import { Container, StyledEngineProvider } from "@mui/material";
+import { ThemeProvider } from "@mui/material/styles";
 import { theme } from "../../../../style/Theme";
 import { JobDetails } from "../../../../components/Job/JobDetails";
 import deploymentOperation from "../../../../mocks/fixtures/OperationDeploymentDetails.json";
@@ -10,13 +11,15 @@ export default {
 };
 
 const Template = (args) => (
-  <ThemeProvider theme={theme}>
-    <RouterHarness>
-      <Container>
-        <JobDetails {...args} />
-      </Container>
-    </RouterHarness>
-  </ThemeProvider>
+  <StyledEngineProvider injectFirst>
+    <ThemeProvider theme={theme}>
+      <RouterHarness>
+        <Container>
+          <JobDetails {...args} />
+        </Container>
+      </RouterHarness>
+    </ThemeProvider>
+  </StyledEngineProvider>
 );
 
 export const Deployment = (args) => <Template {...args} />;
diff --git a/src/stories/components/common/job/JobTable.stories.js b/src/stories/components/common/job/JobTable.stories.js
index 172acb97713c154d4430ec20bf94ae7afee4bc6c..de00a0249fe805c988a6517af1e1d9be13ef4e45 100644
--- a/src/stories/components/common/job/JobTable.stories.js
+++ b/src/stories/components/common/job/JobTable.stories.js
@@ -2,7 +2,7 @@ import React from "react";
 import { RouterHarness } from "../../../../mocks/AppHarness";
 import { JobTable } from "../../../../components/Job/JobTable";
 import { disabledTable } from "../../../utils/common-args";
-import { Container } from "@material-ui/core";
+import { Container } from "@mui/material";
 import operationList from "../../../../mocks/fixtures/OperationList.json";
 
 export default {
diff --git a/src/style/Theme.js b/src/style/Theme.js
index 62b864e6d06094166b86228a6c9e5aeb8a1e809b..10aff290f548154477657323b36f17501dfb31ef 100644
--- a/src/style/Theme.js
+++ b/src/style/Theme.js
@@ -1,45 +1,58 @@
-import { createTheme } from "@material-ui/core/styles";
+import { createTheme } from "@mui/material/styles";
 import { chartColors } from "./Palette";
-import createBreakpoints from "@material-ui/core/styles/createBreakpoints";
 
-const breakpoints = createBreakpoints({});
+let theme = createTheme({});
 
-export const theme = createTheme({
-  breakpoints,
-  overrides: {
+theme = createTheme({
+  components: {
+    MuiWithWidth: {
+      defaultProps: {
+        initialWidth: "lg"
+      }
+    },
     MuiTooltip: {
       tooltip: {
         fontSize: "0.875rem",
         backgroundColor: "#707070ff"
       }
     },
-    MuiListItem: {
-      root: {
-        "&$selected, &$selected:hover": {
-          backgroundColor: "#ccccccff"
-        }
-      },
-      button: {
-        "&:hover": {
-          backgroundColor: "#ddddddff"
+    MuiListItemButton: {
+      styleOverrides: {
+        root: {
+          "&.Mui-selected, &.Mui-selected:hover": {
+            backgroundColor: "#cccccc"
+          },
+          "&:hover": {
+            backgroundColor: "#ddddddff"
+          }
         }
       }
     },
     MuiInputBase: {
-      root: {
-        fontSize: "0.875rem"
+      styleOverrides: {
+        root: {
+          fontSize: "0.875rem",
+          paddingY: 2
+        }
       }
     },
     MuiTypography: {
       body1: {
         fontSize: "0.875rem"
       }
+    },
+    MuiDialogContent: {
+      styleOverrides: {
+        root: {
+          paddingTop: "0.5rem !important",
+          paddingBottom: "0.5rem !important"
+        }
+      }
     }
   },
-  props: { MuiWithWidth: { initialWidth: "lg" } },
   drawer: {
     widthOpen: 240,
-    widthClose: 57
+    widthClose: 75
   },
   palette: {
     primary: {
@@ -74,89 +87,89 @@ export const theme = createTheme({
     ].join(","),
     h1: {
       fontFamily: "Titillium Web, sans-serif",
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "0.98rem"
       },
-      [breakpoints.up("md")]: {
+      [theme.breakpoints.up("md")]: {
         fontSize: "1.31rem"
       }
     },
     h2: {
       fontFamily: ["Segoe UI", "Roboto", "Noto Sans"].join(","),
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "1.3rem"
       },
-      [breakpoints.up("md")]: {
+      [theme.breakpoints.up("md")]: {
         fontSize: "1.7rem"
       },
       fontWeight: 600
     },
     h3: {
       fontFamily: ["Segoe UI", "Roboto", "Noto Sans"].join(","),
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "1.25rem"
       },
-      [breakpoints.up("md")]: {
+      [theme.breakpoints.up("md")]: {
         fontSize: "1.75rem"
       },
       fontWeight: 600
     },
     h4: {
       fontFamily: ["Segoe UI", "Roboto", "Noto Sans"].join(","),
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "0,98rem"
       },
-      [breakpoints.up("md")]: {
+      [theme.breakpoints.up("md")]: {
         fontSize: "1.09rem"
       },
       fontWeight: 600
     },
     h5: {
       fontFamily: ["Segoe UI", "Roboto", "Noto Sans"].join(","),
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "0.98rem"
       },
-      [breakpoints.up("md")]: {
+      [theme.breakpoints.up("md")]: {
         fontSize: "0.875rem"
       },
       fontWeight: 600
     },
     h6: {
       fontFamily: ["Segoe UI", "Roboto", "Noto Sans"].join(","),
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "0.765rem"
       },
-      [breakpoints.up("md")]: {
+      [theme.breakpoints.up("md")]: {
         fontSize: "0.875rem"
       },
       fontWeight: 600
     },
     overline: {
       fontFamily: ["Segoe UI", "Roboto", "Noto Sans"].join(","),
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "0.656rem"
       },
-      [breakpoints.up("md")]: {
+      [theme.breakpoints.up("md")]: {
         fontSize: "0.875rem"
       },
       fontWeight: 600
     },
     body1: {
       fontFamily: ["Segoe UI", "Roboto", "Noto Sans"].join(","),
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "0.765rem !important",
         fontWeight: 600
       },
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "0.875rem !important"
       }
     },
     button: {
       fontFamily: ["Segoe UI", "Roboto", "Noto Sans"].join(","),
-      [breakpoints.down("md")]: {
+      [theme.breakpoints.down("md")]: {
         fontSize: "0,656rem"
       },
-      [breakpoints.up("md")]: {
+      [theme.breakpoints.up("md")]: {
         fontSize: "0,765rem"
       },
       fontWeight: 500
@@ -175,3 +188,5 @@ export const theme = createTheme({
     color: "#b2b2b2"
   }
 });
+
+export { theme };
diff --git a/src/views/IOC/IOCDetailsContainer.js b/src/views/IOC/IOCDetailsContainer.js
index a1a7e897f17cd8d74f853cd70f9de33409512b22..6c867484779ccdbc7b8b78fe30ea86b37faa2b64 100644
--- a/src/views/IOC/IOCDetailsContainer.js
+++ b/src/views/IOC/IOCDetailsContainer.js
@@ -1,6 +1,6 @@
 import React, { useState } from "react";
 import { IOCDetailsView } from "./IOCDetailsView";
-import { LinearProgress } from "@material-ui/core";
+import { LinearProgress } from "@mui/material";
 import NotFound from "../../components/navigation/NotFound";
 import { onFetchEntityError } from "../../components/common/Helper";
 import { useIOC } from "../../api/SwaggerApi";
diff --git a/src/views/IOC/IOCDetailsView.js b/src/views/IOC/IOCDetailsView.js
index 351419419fbcf7720eab498919d672e432d6ddea..e2ac6b85c2afcacc122a7bfb5b60a4fe9214e2ed 100644
--- a/src/views/IOC/IOCDetailsView.js
+++ b/src/views/IOC/IOCDetailsView.js
@@ -1,12 +1,5 @@
-import {
-  Grid,
-  Paper,
-  Tab,
-  Tabs,
-  Typography,
-  IconButton
-} from "@material-ui/core";
-import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import { Grid, Paper, Tab, Tabs, Typography, IconButton } from "@mui/material";
+import ArrowBackIcon from "@mui/icons-material/ArrowBack";
 import React, { useCallback, useEffect, useState } from "react";
 import { useOngoingCommand, useOperationsSearch } from "../../api/SwaggerApi";
 import { IOCLiveStatus } from "../../components/IOC/IOCLiveStatus";
@@ -132,8 +125,6 @@ export function IOCDetailsView({ ioc, getIOC, loading }) {
       <Tabs
         value={deserialize(state.tab)}
         onChange={handleTabChange}
-        indicatorColor="primary"
-        textColor="primary"
       >
         {children}
       </Tabs>
@@ -153,6 +144,7 @@ export function IOCDetailsView({ ioc, getIOC, loading }) {
           <IconButton
             color="inherit"
             onClick={handleClick}
+            size="large"
           >
             <ArrowBackIcon />
           </IconButton>
@@ -163,7 +155,7 @@ export function IOCDetailsView({ ioc, getIOC, loading }) {
         >
           <Grid
             container
-            justify="center"
+            justifyContent="center"
           >
             {ioc && (
               <CustomTabs>
diff --git a/src/views/IOC/IOCListView.js b/src/views/IOC/IOCListView.js
index b0a82de7318172c9cce790b94acfcb1c46339e42..58519c863316a10489baa0a89b7d6ae24c3c1688 100644
--- a/src/views/IOC/IOCListView.js
+++ b/src/views/IOC/IOCListView.js
@@ -7,13 +7,13 @@ import {
   Typography,
   Tabs,
   Tab
-} from "@material-ui/core";
+} from "@mui/material";
 import { RootContainer } from "../../components/common/Container/RootContainer";
 import React, { useState, useEffect, useContext, useCallback } from "react";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 import { IOCAsyncList } from "../../components/IOC/IOCAsyncList";
 import { useIOCSearch, userContext } from "../../api/SwaggerApi";
-import { makeStyles } from "@material-ui/core/styles";
+import { makeStyles } from "@mui/styles";
 import { initRequestParams } from "../../components/common/Helper";
 import { SearchBar } from "../../components/common/SearchBar/SearchBar";
 import AccessControl from "../../components/auth/AccessControl";
@@ -155,7 +155,7 @@ export function IOCListView() {
             container
             spacing={1}
             component={Container}
-            justify="space-between"
+            justifyContent="space-between"
             alignItems="center"
             style={{ display: "flex" }}
           >
@@ -163,8 +163,6 @@ export function IOCListView() {
               <Tabs
                 value={deserialize(state.tab)}
                 onChange={(event, tab) => handleTabChange(tab)}
-                indicatorColor="primary"
-                textColor="primary"
               >
                 <Tab label={<Typography variant="h5">All</Typography>} />
                 <Tab
diff --git a/src/views/help/HelpView.js b/src/views/help/HelpView.js
index 970072de8d460166c8f156c18b918f0c54008f39..c99a9dba7c6155fee42efd1b3c3550d40a2792a3 100644
--- a/src/views/help/HelpView.js
+++ b/src/views/help/HelpView.js
@@ -1,5 +1,6 @@
 import React from "react";
-import { Paper, Link, Typography, makeStyles } from "@material-ui/core";
+import { Paper, Link, Typography } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 import "./helpfile.css";
 import { RootContainer } from "../../components/common/Container/RootContainer";
@@ -36,6 +37,7 @@ export function HelpView() {
                   href="https://naming.esss.lu.se/"
                   target="_blank"
                   rel="noreferrer"
+                  underline="hover"
                 >
                   Naming
                 </Link>{" "}
@@ -44,6 +46,7 @@ export function HelpView() {
                   href="https://confluence.esss.lu.se/x/k41nFg"
                   target="_blank"
                   rel="noreferrer"
+                  underline="hover"
                 >
                   here
                 </Link>{" "}
@@ -55,6 +58,7 @@ export function HelpView() {
                   href="https://csentry.esss.lu.se/"
                   target="_blank"
                   rel="noreferrer"
+                  underline="hover"
                 >
                   CSEntry
                 </Link>
@@ -65,6 +69,7 @@ export function HelpView() {
                   href="https://gitlab.esss.lu.se/iocs"
                   target="_blank"
                   rel="noreferrer"
+                  underline="hover"
                 >
                   iocs&#47;
                 </Link>
@@ -73,6 +78,7 @@ export function HelpView() {
                   href="https://gitlab.esss.lu.se/iocs/factory"
                   target="_blank"
                   rel="noreferrer"
+                  underline="hover"
                 >
                   factory
                 </Link>{" "}
@@ -81,6 +87,7 @@ export function HelpView() {
                   href="https://gitlab.esss.lu.se/iocs/manual"
                   target="_blank"
                   rel="noreferrer"
+                  underline="hover"
                 >
                   manual
                 </Link>{" "}
@@ -89,6 +96,7 @@ export function HelpView() {
                   href="https://gitlab.esss.lu.se/ics-cookiecutter/cookiecutter-e3-ioc"
                   target="_blank"
                   rel="noreferrer"
+                  underline="hover"
                 >
                   cookiecutter
                 </Link>{" "}
@@ -98,6 +106,7 @@ export function HelpView() {
                   href="https://gitlab.esss.lu.se/ccce/dev/e3-ioc-ccce-example"
                   target="_blank"
                   rel="noreferrer"
+                  underline="hover"
                 >
                   here
                 </Link>
@@ -119,6 +128,7 @@ export function HelpView() {
               href="https://jira.esss.lu.se/plugins/servlet/desk/portal/44?requestGroup=137"
               target="_blank"
               rel="noreferrer"
+              underline="hover"
             >
               Service Desk
             </Link>
@@ -131,6 +141,7 @@ export function HelpView() {
               href="https://confluence.esss.lu.se/x/3fPIFQ"
               target="_blank"
               rel="noreferrer"
+              underline="hover"
             >
               bug and known issues page
             </Link>
@@ -139,6 +150,7 @@ export function HelpView() {
               href="https://confluence.esss.lu.se/x/CVGQFg"
               target="_blank"
               rel="noreferrer"
+              underline="hover"
             >
               help articles
             </Link>
@@ -190,6 +202,7 @@ export function HelpView() {
                 href="https://gitlab.esss.lu.se/iocs"
                 target="_blank"
                 rel="noreferrer"
+                underline="hover"
               >
                 iocs&#47;
               </Link>
@@ -244,6 +257,7 @@ export function HelpView() {
             href="https://confluence.esss.lu.se/x/CVGQFg"
             target="_blank"
             rel="noreferrer"
+            underline="hover"
           >
             deployment and monitoring
           </Link>{" "}
@@ -270,6 +284,7 @@ export function HelpView() {
               href={`${window.SERVER_ADDRESS}${window.SWAGGER_UI_URL}`}
               target="_blank"
               rel="noreferrer"
+              underline="hover"
             >
               API documentation
             </Link>
@@ -285,6 +300,7 @@ export function HelpView() {
                   href={`${window.FRONTEND_REPOSITORY_TAGS}${window.FRONTEND_VERSION}`}
                   target="_blank"
                   rel="noreferrer"
+                  underline="hover"
                 >{`${window.FRONTEND_VERSION}`}</Link>
               </td>
             </tr>
diff --git a/src/views/home/HomeView.js b/src/views/home/HomeView.js
index b9c8f616adec809a01194a2ae2d75f3bb9858a11..e47e3e9be37bc2b9c49180421a81e0dd756e878a 100644
--- a/src/views/home/HomeView.js
+++ b/src/views/home/HomeView.js
@@ -1,11 +1,4 @@
-import {
-  Container,
-  Grid,
-  Paper,
-  Button,
-  Box,
-  Typography
-} from "@material-ui/core";
+import { Container, Grid, Paper, Button, Box, Typography } from "@mui/material";
 import React, { useState } from "react";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 import { CreateIOC } from "../../components/IOC/CreateIOC";
@@ -20,7 +13,7 @@ import {
   useOwnIocsWithAlarms
 } from "../../api/SwaggerApi";
 import ReactMarkdown from "react-markdown";
-import { makeStyles } from "@material-ui/core/styles";
+import { makeStyles } from "@mui/styles";
 
 const useStyles = makeStyles((theme) => ({
   root: {
@@ -61,7 +54,7 @@ export function HomeView() {
         <Grid
           container
           spacing={1}
-          justify="flex-end"
+          justifyContent="flex-end"
         >
           <Grid
             item
@@ -135,7 +128,7 @@ export function HomeView() {
         {announcements?.announcementsText && (
           <Grid
             container
-            justify="flex-start"
+            justifyContent="flex-start"
             className={classes.announcements}
           >
             <Grid
diff --git a/src/views/host/HostDetailsContainer.js b/src/views/host/HostDetailsContainer.js
index cc5b5d89ad6ff53607fd0af518bf4f8d894d7d21..3be2de7f2dc157af3d2ac0660ace1c99c232c159 100644
--- a/src/views/host/HostDetailsContainer.js
+++ b/src/views/host/HostDetailsContainer.js
@@ -1,6 +1,6 @@
 import React, { useState } from "react";
 import { HostDetailsView } from "./HostDetailsView";
-import { LinearProgress } from "@material-ui/core";
+import { LinearProgress } from "@mui/material";
 import { useHost } from "../../api/SwaggerApi";
 import { onFetchEntityError } from "../../components/common/Helper";
 import NotFound from "../../components/navigation/NotFound";
diff --git a/src/views/host/HostDetailsView.js b/src/views/host/HostDetailsView.js
index 0f93aa17e090e936c4050aa740db00cdb1f9b55c..e672e576b51e3769ab01790f8591b5b80b6683a8 100644
--- a/src/views/host/HostDetailsView.js
+++ b/src/views/host/HostDetailsView.js
@@ -7,9 +7,9 @@ import {
   Card,
   CardContent,
   Typography
-} from "@material-ui/core";
-import { makeStyles } from "@material-ui/core/styles";
-import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+} from "@mui/material";
+import { makeStyles } from "@mui/styles";
+import ArrowBackIcon from "@mui/icons-material/ArrowBack";
 import { useHostIOCList } from "../../api/SwaggerApi";
 import { HostBadge } from "../../components/host/HostBadge";
 import { SimpleAccordion } from "../../components/common/Accordion/SimpleAccordion";
@@ -129,6 +129,7 @@ export function HostDetailsView({ id }) {
       <IconButton
         color="inherit"
         onClick={handleClick}
+        size="large"
       >
         <ArrowBackIcon />
       </IconButton>
@@ -204,6 +205,7 @@ export function HostDetailsView({ id }) {
               href={`https://csentry.esss.lu.se/network/hosts/view/${host?.csEntryHost.name}`}
               target="_blank"
               rel="noreferrer"
+              underline="hover"
             >{`https://csentry.esss.lu.se/network/hosts/view/${host?.csEntryHost?.name}`}</Link>
 
             <Typography
@@ -216,6 +218,7 @@ export function HostDetailsView({ id }) {
               href={`https://grafana.tn.esss.lu.se/d/5zJT23xWz/node-exporter-full?orgId=1&var-node=${host?.csEntryHost.fqdn}`}
               target="_blank"
               rel="noreferrer"
+              underline="hover"
             >{`https://grafana.tn.esss.lu.se/d/5zJT23xWz/node-exporter-full?orgId=1&var-node=${host?.csEntryHost.fqdn}`}</Link>
           </Container>
         </CardContent>
diff --git a/src/views/host/HostListView.js b/src/views/host/HostListView.js
index 80d5eee1dcecf37cf46789fa8623689386ef90a0..f3a2c01b93d69c24553af713224b6677443e10a1 100644
--- a/src/views/host/HostListView.js
+++ b/src/views/host/HostListView.js
@@ -3,19 +3,19 @@ import {
   Container,
   Paper,
   Grid,
-  Hidden,
   Tabs,
   Tab,
   Typography,
   FormControlLabel,
-  Switch
-} from "@material-ui/core";
+  Switch,
+  useMediaQuery
+} from "@mui/material";
 import { RootContainer } from "../../components/common/Container/RootContainer";
 import { HostList } from "../../components/host/HostList";
 import { HostTable } from "../../components/host/HostTable";
 import { useCSEntrySearch } from "../../api/SwaggerApi";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
-import { makeStyles } from "@material-ui/core/styles";
+import { makeStyles } from "@mui/styles";
 import {
   initRequestParams,
   transformHostQuery
@@ -125,6 +125,9 @@ export function HostListView() {
     [setState]
   );
 
+  const smUp = useMediaQuery((theme) => theme.breakpoints.up("sm"));
+  const smDown = useMediaQuery((theme) => theme.breakpoints.down("sm"));
+
   const content = (
     <>
       <SearchBar
@@ -132,10 +135,8 @@ export function HostListView() {
         query={deserialize(state.query)}
         loading={loading}
       >
-        <Hidden smUp>
-          <HostList hosts={hosts.hostList} />
-        </Hidden>
-        <Hidden xsDown>
+        {smDown ? <HostList hosts={hosts.hostList} /> : null}
+        {smUp ? (
           <HostTable
             hosts={hosts.hostList}
             loading={loading}
@@ -144,7 +145,7 @@ export function HostListView() {
             setLazyParams={setLazyParams}
             rowsPerPage={rowsPerPage}
           />
-        </Hidden>
+        ) : null}
       </SearchBar>
     </>
   );
@@ -160,7 +161,7 @@ export function HostListView() {
             container
             spacing={1}
             component={Container}
-            justify="space-between"
+            justifyContent="space-between"
             alignItems="center"
             style={{ display: "flex" }}
           >
@@ -168,8 +169,6 @@ export function HostListView() {
               <Tabs
                 value={deserialize(state.tab)}
                 onChange={handleTabChange}
-                indicatorColor="primary"
-                textColor="primary"
               >
                 <Tab label={<Typography variant="h5">All</Typography>} />
                 <Tab
diff --git a/src/views/jobs/JobDetailsContainer.js b/src/views/jobs/JobDetailsContainer.js
index 0b9013ee8880ce94dc92947844cb8cf42d004e12..263d1317ee0504092e044c63efd3fb698c23e410 100644
--- a/src/views/jobs/JobDetailsContainer.js
+++ b/src/views/jobs/JobDetailsContainer.js
@@ -1,6 +1,6 @@
 import React, { useCallback, useRef, useState } from "react";
 import { JobDetailsView } from "./JobDetailsView";
-import { LinearProgress } from "@material-ui/core";
+import { LinearProgress } from "@mui/material";
 import { useOperation, useJobById } from "../../api/SwaggerApi";
 import { useSafePolling } from "../../hooks/Polling";
 import NotFound from "../../components/navigation/NotFound";
diff --git a/src/views/jobs/JobDetailsView.js b/src/views/jobs/JobDetailsView.js
index 7479ad9b432d6b49c08a820bf465913fefb48154..1c746f57645722c218115d261aa20bfa96ee15c6 100644
--- a/src/views/jobs/JobDetailsView.js
+++ b/src/views/jobs/JobDetailsView.js
@@ -1,7 +1,7 @@
 import React, { useEffect } from "react";
-import { IconButton, Paper } from "@material-ui/core";
+import { IconButton, Paper } from "@mui/material";
 import { JobDetails } from "../../components/Job/JobDetails";
-import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import ArrowBackIcon from "@mui/icons-material/ArrowBack";
 import { useNavigate } from "react-router-dom";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 
@@ -23,6 +23,7 @@ export function JobDetailsView({ operation, job }) {
       <IconButton
         color="inherit"
         onClick={handleClick}
+        size="large"
       >
         <ArrowBackIcon />
       </IconButton>
diff --git a/src/views/jobs/JobListView.js b/src/views/jobs/JobListView.js
index 61c1d48c0c1c8d5acddf490d996f12a2ca1d7a09..241fbd1e659acd51ad8f2e47694a6772032dd31a 100644
--- a/src/views/jobs/JobListView.js
+++ b/src/views/jobs/JobListView.js
@@ -1,5 +1,5 @@
 import React, { useContext, useState, useCallback } from "react";
-import { makeStyles } from "@material-ui/core/styles";
+import { makeStyles } from "@mui/styles";
 import {
   Paper,
   Grid,
@@ -7,16 +7,16 @@ import {
   Switch,
   Typography,
   Container,
-  TextField
-} from "@material-ui/core";
-import Tabs from "@material-ui/core/Tabs";
-import Tab from "@material-ui/core/Tab";
+  TextField,
+  Autocomplete
+} from "@mui/material";
+import Tabs from "@mui/material/Tabs";
+import Tab from "@mui/material/Tab";
 import { useOperationsSearch, userContext } from "../../api/SwaggerApi";
 import { initRequestParams } from "../../components/common/Helper";
 import { useEffect } from "react";
 import { SearchBar } from "../../components/common/SearchBar/SearchBar";
 import AccessControl from "../../components/auth/AccessControl";
-import { Autocomplete } from "@material-ui/lab";
 import { JobAsyncList } from "../../components/Job/JobAsyncList";
 import useUrlState from "@ahooksjs/use-url-state";
 import {
@@ -169,7 +169,7 @@ export function JobListView() {
           container
           spacing={1}
           component={Container}
-          justify="space-between"
+          justifyContent="space-between"
           alignItems="center"
           style={{ display: "flex" }}
         >
@@ -177,8 +177,6 @@ export function JobListView() {
             <Tabs
               value={deserialize(state.tab)}
               onChange={handleTabChange}
-              indicatorColor="primary"
-              textColor="primary"
             >
               <Tab label={<Typography variant="h5">All</Typography>} />
               <Tab label={<Typography variant="h5">Only Ongoing</Typography>} />
@@ -202,7 +200,7 @@ export function JobListView() {
                   : { label: "Show all" }
               }
               getOptionLabel={(option) => option.label}
-              getOptionSelected={(option, value) =>
+              isOptionEqualToValue={(option, value) =>
                 option.label === value.label
               }
               style={{ width: "100%" }}
diff --git a/src/views/login/LoginView.js b/src/views/login/LoginView.js
index ac9e93f17c9670db9c151aa4e73cc91d74941114..602a5846a07a6b3e2b22514fa06e99b936c263c9 100644
--- a/src/views/login/LoginView.js
+++ b/src/views/login/LoginView.js
@@ -1,4 +1,4 @@
-import { Card, CardContent, Grid } from "@material-ui/core";
+import { Card, CardContent, Grid } from "@mui/material";
 import React, { useContext, useEffect } from "react";
 import { useLocation } from "react-router-dom";
 import { userContext } from "../../api/SwaggerApi";
@@ -25,7 +25,7 @@ export function LoginView() {
       container
       spacing={0}
       alignItems="center"
-      justify="center"
+      justifyContent="center"
       style={{ minHeight: "80vh" }}
     >
       <Grid
diff --git a/src/views/records/RecordDetailsView.js b/src/views/records/RecordDetailsView.js
index 65b2d8d5fd01df7dea338f7a3c512195a01ff1d1..7b64c25e8587387a80a29b038fcd2f4052103c1a 100644
--- a/src/views/records/RecordDetailsView.js
+++ b/src/views/records/RecordDetailsView.js
@@ -6,10 +6,10 @@ import {
   Typography,
   LinearProgress,
   Link as MuiLink
-} from "@material-ui/core";
+} from "@mui/material";
 import { Link as ReactRouterLink } from "react-router-dom";
 import { RootContainer } from "../../components/common/Container/RootContainer";
-import ArrowBackIcon from "@material-ui/icons/ArrowBack";
+import ArrowBackIcon from "@mui/icons-material/ArrowBack";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 import { SimpleAccordion } from "../../components/common/Accordion/SimpleAccordion";
 import { KeyValueTable } from "../../components/common/KeyValueTable/KeyValueTable";
@@ -52,6 +52,7 @@ export function RecordDetailsView() {
           <MuiLink
             component={ReactRouterLink}
             to={`/iocs/${record.iocId}`}
+            underline="hover"
           >
             {record?.iocName}
           </MuiLink>
@@ -65,6 +66,7 @@ export function RecordDetailsView() {
           <MuiLink
             component={ReactRouterLink}
             to={`/hosts/${record.hostCSentryId}`}
+            underline="hover"
           >
             {record?.hostName}
           </MuiLink>
@@ -96,6 +98,7 @@ export function RecordDetailsView() {
           <IconButton
             color="inherit"
             onClick={handleClick}
+            size="large"
           >
             <ArrowBackIcon />
           </IconButton>
diff --git a/src/views/records/RecordListView.js b/src/views/records/RecordListView.js
index 3f2076cd4a57d82fe5ba2de9c8f79365a7d409b8..3d3725d6c21ccd219274fa3707178f1f296ea26c 100644
--- a/src/views/records/RecordListView.js
+++ b/src/views/records/RecordListView.js
@@ -1,5 +1,5 @@
 import React from "react";
-import { Paper, Grid } from "@material-ui/core";
+import { Paper, Grid } from "@mui/material";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 import { RootContainer } from "../../components/common/Container/RootContainer";
 import { RecordSearch } from "../../components/records/RecordSearch";
diff --git a/src/views/statistics/StatisticsView.js b/src/views/statistics/StatisticsView.js
index 70cd223639533af95155e7349f172355754f1470..81ca1afb5550448c36ce0b8b36962c2da0b4d3a9 100644
--- a/src/views/statistics/StatisticsView.js
+++ b/src/views/statistics/StatisticsView.js
@@ -1,11 +1,6 @@
 import React from "react";
-import {
-  Paper,
-  Grid,
-  useTheme,
-  makeStyles,
-  Typography
-} from "@material-ui/core";
+import { Paper, Grid, useTheme, Typography } from "@mui/material";
+import { makeStyles } from "@mui/styles";
 import { useGlobalAppBar } from "../../components/navigation/GlobalAppBar/GlobalAppBar";
 import { RootContainer } from "../../components/common/Container/RootContainer";
 import ActiveIOCChart from "../../components/statistics/ActiveIOCChart";