aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package.json7
-rw-r--r--pnpm-lock.yaml125
-rw-r--r--src/components/layout/Sidebar.tsx34
-rw-r--r--src/components/services/tabs/TabItem.tsx3
-rw-r--r--src/components/settings/account/AccountDashboard.tsx9
-rw-r--r--src/components/settings/services/ServiceItem.tsx20
-rw-r--r--src/components/settings/team/TeamDashboard.tsx9
-rw-r--r--src/components/ui/effects/Appear.tsx26
-rw-r--r--src/features/webControls/components/WebControls.tsx22
-rw-r--r--src/features/workspaces/components/WorkspaceDrawer.tsx13
-rw-r--r--src/features/workspaces/components/WorkspaceDrawerItem.tsx3
-rw-r--r--src/routes.tsx1
-rw-r--r--src/styles/main.scss1
13 files changed, 109 insertions, 164 deletions
diff --git a/package.json b/package.json
index a8caa5c4d..d4387484d 100644
--- a/package.json
+++ b/package.json
@@ -108,11 +108,11 @@
108 "react-jss": "10.10.0", 108 "react-jss": "10.10.0",
109 "react-loader": "2.4.7", 109 "react-loader": "2.4.7",
110 "react-modal": "3.16.1", 110 "react-modal": "3.16.1",
111 "react-router-dom": "6.11.2", 111 "react-router-dom": "6.4.2",
112 "react-sortable-hoc": "2.0.0", 112 "react-sortable-hoc": "2.0.0",
113 "react-tooltip": "5.13.1", 113 "react-tooltip": "4.5.1",
114 "react-topbar-progress-indicator": "4.1.1", 114 "react-topbar-progress-indicator": "4.1.1",
115 "react-transition-group": "4.4.5", 115 "react-transition-group": "1.2.1",
116 "route-parser": "0.0.5", 116 "route-parser": "0.0.5",
117 "sanitize-filename": "1.6.3", 117 "sanitize-filename": "1.6.3",
118 "semver": "7.5.1", 118 "semver": "7.5.1",
@@ -138,7 +138,6 @@
138 "@types/node": "18.15.3", 138 "@types/node": "18.15.3",
139 "@types/react": "18.2.7", 139 "@types/react": "18.2.7",
140 "@types/react-dom": "18.2.4", 140 "@types/react-dom": "18.2.4",
141 "@types/react-transition-group": "4.4.6",
142 "@types/route-parser": "0.1.4", 141 "@types/route-parser": "0.1.4",
143 "@types/tar": "6.1.5", 142 "@types/tar": "6.1.5",
144 "@types/uuid": "9.0.1", 143 "@types/uuid": "9.0.1",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index d8d30c66a..dc116e9f4 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -204,20 +204,20 @@ dependencies:
204 specifier: 3.16.1 204 specifier: 3.16.1
205 version: 3.16.1(react-dom@18.2.0)(react@18.2.0) 205 version: 3.16.1(react-dom@18.2.0)(react@18.2.0)
206 react-router-dom: 206 react-router-dom:
207 specifier: 6.11.2 207 specifier: 6.4.2
208 version: 6.11.2(react-dom@18.2.0)(react@18.2.0) 208 version: 6.4.2(react-dom@18.2.0)(react@18.2.0)
209 react-sortable-hoc: 209 react-sortable-hoc:
210 specifier: 2.0.0 210 specifier: 2.0.0
211 version: 2.0.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0) 211 version: 2.0.0(prop-types@15.8.1)(react-dom@18.2.0)(react@18.2.0)
212 react-tooltip: 212 react-tooltip:
213 specifier: 5.13.1 213 specifier: 4.5.1
214 version: 5.13.1(react-dom@18.2.0)(react@18.2.0) 214 version: 4.5.1(react-dom@18.2.0)(react@18.2.0)
215 react-topbar-progress-indicator: 215 react-topbar-progress-indicator:
216 specifier: 4.1.1 216 specifier: 4.1.1
217 version: 4.1.1(react@18.2.0) 217 version: 4.1.1(react@18.2.0)
218 react-transition-group: 218 react-transition-group:
219 specifier: 4.4.5 219 specifier: 1.2.1
220 version: 4.4.5(react-dom@18.2.0)(react@18.2.0) 220 version: 1.2.1(react-dom@18.2.0)(react@18.2.0)
221 route-parser: 221 route-parser:
222 specifier: 0.0.5 222 specifier: 0.0.5
223 version: 0.0.5 223 version: 0.0.5
@@ -297,9 +297,6 @@ devDependencies:
297 '@types/react-dom': 297 '@types/react-dom':
298 specifier: 18.2.4 298 specifier: 18.2.4
299 version: 18.2.4 299 version: 18.2.4
300 '@types/react-transition-group':
301 specifier: 4.4.6
302 version: 4.4.6
303 '@types/route-parser': 300 '@types/route-parser':
304 specifier: 0.1.4 301 specifier: 0.1.4
305 version: 0.1.4 302 version: 0.1.4
@@ -1514,16 +1511,6 @@ packages:
1514 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} 1511 engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
1515 dev: true 1512 dev: true
1516 1513
1517 /@floating-ui/core@1.2.6:
1518 resolution: {integrity: sha512-EvYTiXet5XqweYGClEmpu3BoxmsQ4hkj3QaYA6qEnigCWffTP3vNRwBReTdrwDwo7OoJ3wM8Uoe9Uk4n+d4hfg==}
1519 dev: false
1520
1521 /@floating-ui/dom@1.2.8:
1522 resolution: {integrity: sha512-XLwhYV90MxiHDq6S0rzFZj00fnDM+A1R9jhSioZoMsa7G0Q0i+Q4x40ajR8FHSdYDE1bgjG45mIWe6jtv9UPmg==}
1523 dependencies:
1524 '@floating-ui/core': 1.2.6
1525 dev: false
1526
1527 /@formatjs/cli@6.1.1: 1514 /@formatjs/cli@6.1.1:
1528 resolution: {integrity: sha512-prUblUQRJwFQqfmBtRWXZFKX+QmhXQkBKRl54hWTCwenskorK6+LTlm9TFbUDhfib2Xt3iDsjk7o9LpeU/AQCw==} 1515 resolution: {integrity: sha512-prUblUQRJwFQqfmBtRWXZFKX+QmhXQkBKRl54hWTCwenskorK6+LTlm9TFbUDhfib2Xt3iDsjk7o9LpeU/AQCw==}
1529 engines: {node: '>= 16'} 1516 engines: {node: '>= 16'}
@@ -2182,8 +2169,8 @@ packages:
2182 dev: true 2169 dev: true
2183 optional: true 2170 optional: true
2184 2171
2185 /@remix-run/router@1.6.2: 2172 /@remix-run/router@1.0.2:
2186 resolution: {integrity: sha512-LzqpSrMK/3JBAVBI9u3NWtOhWNw5AMQfrUFYB0+bDHTSw17z++WJLsPsxAuK+oSddsxk4d7F/JcdDPM1M5YAhA==} 2173 resolution: {integrity: sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==}
2187 engines: {node: '>=14'} 2174 engines: {node: '>=14'}
2188 dev: false 2175 dev: false
2189 2176
@@ -2511,12 +2498,6 @@ packages:
2511 '@types/react': 18.2.7 2498 '@types/react': 18.2.7
2512 dev: true 2499 dev: true
2513 2500
2514 /@types/react-transition-group@4.4.6:
2515 resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==}
2516 dependencies:
2517 '@types/react': 18.2.7
2518 dev: true
2519
2520 /@types/react@18.2.7: 2501 /@types/react@18.2.7:
2521 resolution: {integrity: sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==} 2502 resolution: {integrity: sha512-ojrXpSH2XFCmHm7Jy3q44nXDyN54+EYKP2lBhJ2bqfyPj6cIUW/FZW/Csdia34NQgq7KYcAlHi5184m4X88+yw==}
2522 dependencies: 2503 dependencies:
@@ -3928,6 +3909,10 @@ packages:
3928 resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} 3909 resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
3929 dev: false 3910 dev: false
3930 3911
3912 /chain-function@1.0.1:
3913 resolution: {integrity: sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==}
3914 dev: false
3915
3931 /chainsaw@0.1.0: 3916 /chainsaw@0.1.0:
3932 resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} 3917 resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==}
3933 dependencies: 3918 dependencies:
@@ -4480,7 +4465,7 @@ packages:
4480 /css-jss@10.10.0: 4465 /css-jss@10.10.0:
4481 resolution: {integrity: sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==} 4466 resolution: {integrity: sha512-YyMIS/LsSKEGXEaVJdjonWe18p4vXLo8CMA4FrW/kcaEyqdIGKCFXao31gbJddXEdIxSXFFURWrenBJPlKTgAA==}
4482 dependencies: 4467 dependencies:
4483 '@babel/runtime': 7.21.5 4468 '@babel/runtime': 7.20.7
4484 jss: 10.10.0 4469 jss: 10.10.0
4485 jss-preset-default: 10.10.0 4470 jss-preset-default: 10.10.0
4486 dev: false 4471 dev: false
@@ -4488,7 +4473,7 @@ packages:
4488 /css-vendor@2.0.8: 4473 /css-vendor@2.0.8:
4489 resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==} 4474 resolution: {integrity: sha512-x9Aq0XTInxrkuFeHKbYC7zWY8ai7qJ04Kxd9MnvbC1uO5DagxoHQjm4JvG+vCdXOoFtCjbL2XSZfxmoYa9uQVQ==}
4490 dependencies: 4475 dependencies:
4491 '@babel/runtime': 7.21.5 4476 '@babel/runtime': 7.20.7
4492 is-in-browser: 1.1.3 4477 is-in-browser: 1.1.3
4493 dev: false 4478 dev: false
4494 4479
@@ -4811,11 +4796,10 @@ packages:
4811 esutils: 2.0.3 4796 esutils: 2.0.3
4812 dev: true 4797 dev: true
4813 4798
4814 /dom-helpers@5.2.1: 4799 /dom-helpers@3.4.0:
4815 resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} 4800 resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==}
4816 dependencies: 4801 dependencies:
4817 '@babel/runtime': 7.21.5 4802 '@babel/runtime': 7.21.5
4818 csstype: 3.1.2
4819 dev: false 4803 dev: false
4820 4804
4821 /dot-prop@5.3.0: 4805 /dot-prop@5.3.0:
@@ -7895,7 +7879,7 @@ packages:
7895 /jss-plugin-camel-case@10.10.0: 7879 /jss-plugin-camel-case@10.10.0:
7896 resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==} 7880 resolution: {integrity: sha512-z+HETfj5IYgFxh1wJnUAU8jByI48ED+v0fuTuhKrPR+pRBYS2EDwbusU8aFOpCdYhtRc9zhN+PJ7iNE8pAWyPw==}
7897 dependencies: 7881 dependencies:
7898 '@babel/runtime': 7.21.5 7882 '@babel/runtime': 7.20.7
7899 hyphenate-style-name: 1.0.4 7883 hyphenate-style-name: 1.0.4
7900 jss: 10.10.0 7884 jss: 10.10.0
7901 dev: false 7885 dev: false
@@ -7903,7 +7887,7 @@ packages:
7903 /jss-plugin-compose@10.10.0: 7887 /jss-plugin-compose@10.10.0:
7904 resolution: {integrity: sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==} 7888 resolution: {integrity: sha512-F5kgtWpI2XfZ3Z8eP78tZEYFdgTIbpA/TMuX3a8vwrNolYtN1N4qJR/Ob0LAsqIwCMLojtxN7c7Oo/+Vz6THow==}
7905 dependencies: 7889 dependencies:
7906 '@babel/runtime': 7.21.5 7890 '@babel/runtime': 7.20.7
7907 jss: 10.10.0 7891 jss: 10.10.0
7908 tiny-warning: 1.0.3 7892 tiny-warning: 1.0.3
7909 dev: false 7893 dev: false
@@ -7911,21 +7895,21 @@ packages:
7911 /jss-plugin-default-unit@10.10.0: 7895 /jss-plugin-default-unit@10.10.0:
7912 resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==} 7896 resolution: {integrity: sha512-SvpajxIECi4JDUbGLefvNckmI+c2VWmP43qnEy/0eiwzRUsafg5DVSIWSzZe4d2vFX1u9nRDP46WCFV/PXVBGQ==}
7913 dependencies: 7897 dependencies:
7914 '@babel/runtime': 7.21.5 7898 '@babel/runtime': 7.20.7
7915 jss: 10.10.0 7899 jss: 10.10.0
7916 dev: false 7900 dev: false
7917 7901
7918 /jss-plugin-expand@10.10.0: 7902 /jss-plugin-expand@10.10.0:
7919 resolution: {integrity: sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==} 7903 resolution: {integrity: sha512-ymT62W2OyDxBxr7A6JR87vVX9vTq2ep5jZLIdUSusfBIEENLdkkc0lL/Xaq8W9s3opUq7R0sZQpzRWELrfVYzA==}
7920 dependencies: 7904 dependencies:
7921 '@babel/runtime': 7.21.5 7905 '@babel/runtime': 7.20.7
7922 jss: 10.10.0 7906 jss: 10.10.0
7923 dev: false 7907 dev: false
7924 7908
7925 /jss-plugin-extend@10.10.0: 7909 /jss-plugin-extend@10.10.0:
7926 resolution: {integrity: sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==} 7910 resolution: {integrity: sha512-sKYrcMfr4xxigmIwqTjxNcHwXJIfvhvjTNxF+Tbc1NmNdyspGW47Ey6sGH8BcQ4FFQhLXctpWCQSpDwdNmXSwg==}
7927 dependencies: 7911 dependencies:
7928 '@babel/runtime': 7.21.5 7912 '@babel/runtime': 7.20.7
7929 jss: 10.10.0 7913 jss: 10.10.0
7930 tiny-warning: 1.0.3 7914 tiny-warning: 1.0.3
7931 dev: false 7915 dev: false
@@ -7933,14 +7917,14 @@ packages:
7933 /jss-plugin-global@10.10.0: 7917 /jss-plugin-global@10.10.0:
7934 resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==} 7918 resolution: {integrity: sha512-icXEYbMufiNuWfuazLeN+BNJO16Ge88OcXU5ZDC2vLqElmMybA31Wi7lZ3lf+vgufRocvPj8443irhYRgWxP+A==}
7935 dependencies: 7919 dependencies:
7936 '@babel/runtime': 7.21.5 7920 '@babel/runtime': 7.20.7
7937 jss: 10.10.0 7921 jss: 10.10.0
7938 dev: false 7922 dev: false
7939 7923
7940 /jss-plugin-nested@10.10.0: 7924 /jss-plugin-nested@10.10.0:
7941 resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==} 7925 resolution: {integrity: sha512-9R4JHxxGgiZhurDo3q7LdIiDEgtA1bTGzAbhSPyIOWb7ZubrjQe8acwhEQ6OEKydzpl8XHMtTnEwHXCARLYqYA==}
7942 dependencies: 7926 dependencies:
7943 '@babel/runtime': 7.21.5 7927 '@babel/runtime': 7.20.7
7944 jss: 10.10.0 7928 jss: 10.10.0
7945 tiny-warning: 1.0.3 7929 tiny-warning: 1.0.3
7946 dev: false 7930 dev: false
@@ -7948,14 +7932,14 @@ packages:
7948 /jss-plugin-props-sort@10.10.0: 7932 /jss-plugin-props-sort@10.10.0:
7949 resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==} 7933 resolution: {integrity: sha512-5VNJvQJbnq/vRfje6uZLe/FyaOpzP/IH1LP+0fr88QamVrGJa0hpRRyAa0ea4U/3LcorJfBFVyC4yN2QC73lJg==}
7950 dependencies: 7934 dependencies:
7951 '@babel/runtime': 7.21.5 7935 '@babel/runtime': 7.20.7
7952 jss: 10.10.0 7936 jss: 10.10.0
7953 dev: false 7937 dev: false
7954 7938
7955 /jss-plugin-rule-value-function@10.10.0: 7939 /jss-plugin-rule-value-function@10.10.0:
7956 resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==} 7940 resolution: {integrity: sha512-uEFJFgaCtkXeIPgki8ICw3Y7VMkL9GEan6SqmT9tqpwM+/t+hxfMUdU4wQ0MtOiMNWhwnckBV0IebrKcZM9C0g==}
7957 dependencies: 7941 dependencies:
7958 '@babel/runtime': 7.21.5 7942 '@babel/runtime': 7.20.7
7959 jss: 10.10.0 7943 jss: 10.10.0
7960 tiny-warning: 1.0.3 7944 tiny-warning: 1.0.3
7961 dev: false 7945 dev: false
@@ -7963,7 +7947,7 @@ packages:
7963 /jss-plugin-rule-value-observable@10.10.0: 7947 /jss-plugin-rule-value-observable@10.10.0:
7964 resolution: {integrity: sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==} 7948 resolution: {integrity: sha512-ZLMaYrR3QE+vD7nl3oNXuj79VZl9Kp8/u6A1IbTPDcuOu8b56cFdWRZNZ0vNr8jHewooEeq2doy8Oxtymr2ZPA==}
7965 dependencies: 7949 dependencies:
7966 '@babel/runtime': 7.21.5 7950 '@babel/runtime': 7.20.7
7967 jss: 10.10.0 7951 jss: 10.10.0
7968 symbol-observable: 1.2.0 7952 symbol-observable: 1.2.0
7969 dev: false 7953 dev: false
@@ -7971,7 +7955,7 @@ packages:
7971 /jss-plugin-template@10.10.0: 7955 /jss-plugin-template@10.10.0:
7972 resolution: {integrity: sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==} 7956 resolution: {integrity: sha512-ocXZBIOJOA+jISPdsgkTs8wwpK6UbsvtZK5JI7VUggTD6LWKbtoxUzadd2TpfF+lEtlhUmMsCkTRNkITdPKa6w==}
7973 dependencies: 7957 dependencies:
7974 '@babel/runtime': 7.21.5 7958 '@babel/runtime': 7.20.7
7975 jss: 10.10.0 7959 jss: 10.10.0
7976 tiny-warning: 1.0.3 7960 tiny-warning: 1.0.3
7977 dev: false 7961 dev: false
@@ -7979,7 +7963,7 @@ packages:
7979 /jss-plugin-vendor-prefixer@10.10.0: 7963 /jss-plugin-vendor-prefixer@10.10.0:
7980 resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==} 7964 resolution: {integrity: sha512-UY/41WumgjW8r1qMCO8l1ARg7NHnfRVWRhZ2E2m0DMYsr2DD91qIXLyNhiX83hHswR7Wm4D+oDYNC1zWCJWtqg==}
7981 dependencies: 7965 dependencies:
7982 '@babel/runtime': 7.21.5 7966 '@babel/runtime': 7.20.7
7983 css-vendor: 2.0.8 7967 css-vendor: 2.0.8
7984 jss: 10.10.0 7968 jss: 10.10.0
7985 dev: false 7969 dev: false
@@ -7987,7 +7971,7 @@ packages:
7987 /jss-preset-default@10.10.0: 7971 /jss-preset-default@10.10.0:
7988 resolution: {integrity: sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==} 7972 resolution: {integrity: sha512-GL175Wt2FGhjE+f+Y3aWh+JioL06/QWFgZp53CbNNq6ZkVU0TDplD8Bxm9KnkotAYn3FlplNqoW5CjyLXcoJ7Q==}
7989 dependencies: 7973 dependencies:
7990 '@babel/runtime': 7.21.5 7974 '@babel/runtime': 7.20.7
7991 jss: 10.10.0 7975 jss: 10.10.0
7992 jss-plugin-camel-case: 10.10.0 7976 jss-plugin-camel-case: 10.10.0
7993 jss-plugin-compose: 10.10.0 7977 jss-plugin-compose: 10.10.0
@@ -10088,26 +10072,26 @@ packages:
10088 warning: 4.0.3 10072 warning: 4.0.3
10089 dev: false 10073 dev: false
10090 10074
10091 /react-router-dom@6.11.2(react-dom@18.2.0)(react@18.2.0): 10075 /react-router-dom@6.4.2(react-dom@18.2.0)(react@18.2.0):
10092 resolution: {integrity: sha512-JNbKtAeh1VSJQnH6RvBDNhxNwemRj7KxCzc5jb7zvDSKRnPWIFj9pO+eXqjM69gQJ0r46hSz1x4l9y0651DKWw==} 10076 resolution: {integrity: sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==}
10093 engines: {node: '>=14'} 10077 engines: {node: '>=14'}
10094 peerDependencies: 10078 peerDependencies:
10095 react: '>=16.8' 10079 react: '>=16.8'
10096 react-dom: '>=16.8' 10080 react-dom: '>=16.8'
10097 dependencies: 10081 dependencies:
10098 '@remix-run/router': 1.6.2 10082 '@remix-run/router': 1.0.2
10099 react: 18.2.0 10083 react: 18.2.0
10100 react-dom: 18.2.0(react@18.2.0) 10084 react-dom: 18.2.0(react@18.2.0)
10101 react-router: 6.11.2(react@18.2.0) 10085 react-router: 6.4.2(react@18.2.0)
10102 dev: false 10086 dev: false
10103 10087
10104 /react-router@6.11.2(react@18.2.0): 10088 /react-router@6.4.2(react@18.2.0):
10105 resolution: {integrity: sha512-74z9xUSaSX07t3LM+pS6Un0T55ibUE/79CzfZpy5wsPDZaea1F8QkrsiyRnA2YQ7LwE/umaydzXZV80iDCPkMg==} 10089 resolution: {integrity: sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==}
10106 engines: {node: '>=14'} 10090 engines: {node: '>=14'}
10107 peerDependencies: 10091 peerDependencies:
10108 react: '>=16.8' 10092 react: '>=16.8'
10109 dependencies: 10093 dependencies:
10110 '@remix-run/router': 1.6.2 10094 '@remix-run/router': 1.0.2
10111 react: 18.2.0 10095 react: 18.2.0
10112 dev: false 10096 dev: false
10113 10097
@@ -10125,16 +10109,17 @@ packages:
10125 react-dom: 18.2.0(react@18.2.0) 10109 react-dom: 18.2.0(react@18.2.0)
10126 dev: false 10110 dev: false
10127 10111
10128 /react-tooltip@5.13.1(react-dom@18.2.0)(react@18.2.0): 10112 /react-tooltip@4.5.1(react-dom@18.2.0)(react@18.2.0):
10129 resolution: {integrity: sha512-9NstDFdjyy6cIH9zjeT70zXTHlW/TIGCOWQmhkAyqLFeQioLg1FXvb9ec7AxSpn0zyFUkFSLdFYxZRuewti3Aw==} 10113 resolution: {integrity: sha512-Zo+CSFUGXar1uV+bgXFFDe7VeS2iByeIp5rTgTcc2HqtuOS5D76QapejNNfx320MCY91TlhTQat36KGFTqgcvw==}
10114 engines: {npm: '>=6.13'}
10130 peerDependencies: 10115 peerDependencies:
10131 react: '>=16.14.0' 10116 react: '>=16.0.0'
10132 react-dom: '>=16.14.0' 10117 react-dom: '>=16.0.0'
10133 dependencies: 10118 dependencies:
10134 '@floating-ui/dom': 1.2.8 10119 prop-types: 15.8.1
10135 classnames: 2.3.2
10136 react: 18.2.0 10120 react: 18.2.0
10137 react-dom: 18.2.0(react@18.2.0) 10121 react-dom: 18.2.0(react@18.2.0)
10122 uuid: 7.0.3
10138 dev: false 10123 dev: false
10139 10124
10140 /react-topbar-progress-indicator@4.1.1(react@18.2.0): 10125 /react-topbar-progress-indicator@4.1.1(react@18.2.0):
@@ -10146,18 +10131,19 @@ packages:
10146 topbar: 0.1.4 10131 topbar: 0.1.4
10147 dev: false 10132 dev: false
10148 10133
10149 /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): 10134 /react-transition-group@1.2.1(react-dom@18.2.0)(react@18.2.0):
10150 resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} 10135 resolution: {integrity: sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==}
10151 peerDependencies: 10136 peerDependencies:
10152 react: '>=16.6.0' 10137 react: ^15.0.0 || ^16.0.0
10153 react-dom: '>=16.6.0' 10138 react-dom: ^15.0.0 || ^16.0.0
10154 dependencies: 10139 dependencies:
10155 '@babel/runtime': 7.21.5 10140 chain-function: 1.0.1
10156 dom-helpers: 5.2.1 10141 dom-helpers: 3.4.0
10157 loose-envify: 1.4.0 10142 loose-envify: 1.4.0
10158 prop-types: 15.8.1 10143 prop-types: 15.8.1
10159 react: 18.2.0 10144 react: 18.2.0
10160 react-dom: 18.2.0(react@18.2.0) 10145 react-dom: 18.2.0(react@18.2.0)
10146 warning: 3.0.0
10161 dev: false 10147 dev: false
10162 10148
10163 /react-window@1.8.8(react-dom@18.2.0)(react@18.2.0): 10149 /react-window@1.8.8(react-dom@18.2.0)(react@18.2.0):
@@ -11955,6 +11941,11 @@ packages:
11955 hasBin: true 11941 hasBin: true
11956 dev: false 11942 dev: false
11957 11943
11944 /uuid@7.0.3:
11945 resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==}
11946 hasBin: true
11947 dev: false
11948
11958 /uuid@8.3.2: 11949 /uuid@8.3.2:
11959 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 11950 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
11960 hasBin: true 11951 hasBin: true
@@ -12059,6 +12050,12 @@ packages:
12059 engines: {node: '>=0.10.0'} 12050 engines: {node: '>=0.10.0'}
12060 dev: false 12051 dev: false
12061 12052
12053 /warning@3.0.0:
12054 resolution: {integrity: sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==}
12055 dependencies:
12056 loose-envify: 1.4.0
12057 dev: false
12058
12062 /warning@4.0.3: 12059 /warning@4.0.3:
12063 resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} 12060 resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
12064 dependencies: 12061 dependencies:
diff --git a/src/components/layout/Sidebar.tsx b/src/components/layout/Sidebar.tsx
index 2b1e87023..fac424477 100644
--- a/src/components/layout/Sidebar.tsx
+++ b/src/components/layout/Sidebar.tsx
@@ -1,5 +1,5 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import { Tooltip as ReactTooltip } from 'react-tooltip'; 2import ReactTooltip from 'react-tooltip';
3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
4import { inject, observer } from 'mobx-react'; 4import { inject, observer } from 'mobx-react';
5import { 5import {
@@ -123,6 +123,10 @@ class Sidebar extends Component<IProps, IState> {
123 }; 123 };
124 } 124 }
125 125
126 componentDidUpdate() {
127 ReactTooltip.rebuild();
128 }
129
126 enableToolTip() { 130 enableToolTip() {
127 this.setState({ tooltipEnabled: true }); 131 this.setState({ tooltipEnabled: true });
128 } 132 }
@@ -228,8 +232,7 @@ class Sidebar extends Component<IProps, IState> {
228 type="button" 232 type="button"
229 onClick={() => openSettings({ path: 'recipes' })} 233 onClick={() => openSettings({ path: 'recipes' })}
230 className="sidebar__button sidebar__button--new-service" 234 className="sidebar__button sidebar__button--new-service"
231 data-tooltip-id="tooltip-sidebar-button" 235 data-tip={`${intl.formatMessage(
232 data-tooltip-content={`${intl.formatMessage(
233 messages.addNewService, 236 messages.addNewService,
234 )} (${addNewServiceShortcutKey(false)})`} 237 )} (${addNewServiceShortcutKey(false)})`}
235 > 238 >
@@ -248,8 +251,7 @@ class Sidebar extends Component<IProps, IState> {
248 }); 251 });
249 }} 252 }}
250 className="sidebar__button sidebar__button--split-mode-toggle" 253 className="sidebar__button sidebar__button--split-mode-toggle"
251 data-tooltip-id="tooltip-sidebar-button" 254 data-tip={`${intl.formatMessage(
252 data-tooltip-content={`${intl.formatMessage(
253 messages.splitModeToggle, 255 messages.splitModeToggle,
254 )} (${splitModeToggleShortcutKey(false)})`} 256 )} (${splitModeToggleShortcutKey(false)})`}
255 > 257 >
@@ -266,8 +268,7 @@ class Sidebar extends Component<IProps, IState> {
266 className={`sidebar__button sidebar__button--workspaces ${ 268 className={`sidebar__button sidebar__button--workspaces ${
267 isWorkspaceDrawerOpen ? 'is-active' : '' 269 isWorkspaceDrawerOpen ? 'is-active' : ''
268 }`} 270 }`}
269 data-tooltip-id="tooltip-sidebar-button" 271 data-tip={`${intl.formatMessage(
270 data-tooltip-content={`${intl.formatMessage(
271 workspaceToggleMessage, 272 workspaceToggleMessage,
272 )} (${workspaceToggleShortcutKey(false)})`} 273 )} (${workspaceToggleShortcutKey(false)})`}
273 > 274 >
@@ -284,8 +285,7 @@ class Sidebar extends Component<IProps, IState> {
284 className={`sidebar__button sidebar__button--audio ${ 285 className={`sidebar__button sidebar__button--audio ${
285 isAppMuted ? 'is-muted' : '' 286 isAppMuted ? 'is-muted' : ''
286 }`} 287 }`}
287 data-tooltip-id="tooltip-sidebar-button" 288 data-tip={`${intl.formatMessage(
288 data-tooltip-content={`${intl.formatMessage(
289 isAppMuted ? messages.unmute : messages.mute, 289 isAppMuted ? messages.unmute : messages.mute,
290 )} (${muteFerdiumShortcutKey(false)})`} 290 )} (${muteFerdiumShortcutKey(false)})`}
291 > 291 >
@@ -303,8 +303,7 @@ class Sidebar extends Component<IProps, IState> {
303 className={`sidebar__button sidebar__button--todos ${ 303 className={`sidebar__button sidebar__button--todos ${
304 todosStore.isTodosPanelVisible ? 'is-active' : '' 304 todosStore.isTodosPanelVisible ? 'is-active' : ''
305 }`} 305 }`}
306 data-tooltip-id="tooltip-sidebar-button" 306 data-tip={`${intl.formatMessage(
307 data-tooltip-content={`${intl.formatMessage(
308 todosToggleMessage, 307 todosToggleMessage,
309 )} (${todosToggleShortcutKey(false)})`} 308 )} (${todosToggleShortcutKey(false)})`}
310 > 309 >
@@ -323,8 +322,7 @@ class Sidebar extends Component<IProps, IState> {
323 }, 322 },
324 }); 323 });
325 }} 324 }}
326 data-tooltip-id="tooltip-sidebar-button" 325 data-tip={`${intl.formatMessage(
327 data-tooltip-content={`${intl.formatMessage(
328 messages.lockFerdium, 326 messages.lockFerdium,
329 )} (${lockFerdiumShortcutKey(false)})`} 327 )} (${lockFerdiumShortcutKey(false)})`}
330 > 328 >
@@ -333,20 +331,14 @@ class Sidebar extends Component<IProps, IState> {
333 ) : null} 331 ) : null}
334 </> 332 </>
335 {this.state.tooltipEnabled && ( 333 {this.state.tooltipEnabled && (
336 <ReactTooltip 334 <ReactTooltip place="right" type="dark" effect="solid" />
337 id="tooltip-sidebar-button"
338 place="right"
339 variant="dark"
340 style={{ height: 'auto', overflowY: 'unset' }}
341 />
342 )} 335 )}
343 {!hideSettingsButton && !isMenuCollapsed ? ( 336 {!hideSettingsButton && !isMenuCollapsed ? (
344 <button 337 <button
345 type="button" 338 type="button"
346 onClick={() => openSettings({ path: 'app' })} 339 onClick={() => openSettings({ path: 'app' })}
347 className="sidebar__button sidebar__button--settings" 340 className="sidebar__button sidebar__button--settings"
348 data-tooltip-id="tooltip-sidebar-button" 341 data-tip={`${intl.formatMessage(
349 data-tooltip-content={`${intl.formatMessage(
350 globalMessages.settings, 342 globalMessages.settings,
351 )} (${settingsShortcutKey(false)})`} 343 )} (${settingsShortcutKey(false)})`}
352 > 344 >
diff --git a/src/components/services/tabs/TabItem.tsx b/src/components/services/tabs/TabItem.tsx
index c25af4427..c883066ce 100644
--- a/src/components/services/tabs/TabItem.tsx
+++ b/src/components/services/tabs/TabItem.tsx
@@ -359,8 +359,7 @@ class TabItem extends Component<IProps, IState> {
359 onKeyDown={noop} 359 onKeyDown={noop}
360 role="presentation" 360 role="presentation"
361 onContextMenu={() => menu.popup()} 361 onContextMenu={() => menu.popup()}
362 data-tooltip-id="tooltip-sidebar-button" 362 data-tip={`${service.name} ${acceleratorString(
363 data-tooltip-content={`${service.name} ${acceleratorString(
364 shortcutIndex, 363 shortcutIndex,
365 cmdOrCtrlShortcutKey(false), 364 cmdOrCtrlShortcutKey(false),
366 )}`} 365 )}`}
diff --git a/src/components/settings/account/AccountDashboard.tsx b/src/components/settings/account/AccountDashboard.tsx
index de323c06e..163b0a160 100644
--- a/src/components/settings/account/AccountDashboard.tsx
+++ b/src/components/settings/account/AccountDashboard.tsx
@@ -1,7 +1,7 @@
1import { Component } from 'react'; 1import { Component } from 'react';
2import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 3import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
4import { Tooltip as ReactTooltip } from 'react-tooltip'; 4import ReactTooltip from 'react-tooltip';
5import { H1, H2 } from '../../ui/headline'; 5import { H1, H2 } from '../../ui/headline';
6 6
7import Loader from '../../ui/Loader'; 7import Loader from '../../ui/Loader';
@@ -215,12 +215,7 @@ class AccountDashboard extends Component<IProp> {
215 </> 215 </>
216 )} 216 )}
217 </div> 217 </div>
218 <ReactTooltip 218 <ReactTooltip place="right" type="dark" effect="solid" />
219 place="right"
220 variant="dark"
221 float
222 style={{ height: 'auto' }}
223 />
224 </div> 219 </div>
225 ); 220 );
226 } 221 }
diff --git a/src/components/settings/services/ServiceItem.tsx b/src/components/settings/services/ServiceItem.tsx
index babe06b5a..bf2dfa9da 100644
--- a/src/components/settings/services/ServiceItem.tsx
+++ b/src/components/settings/services/ServiceItem.tsx
@@ -1,6 +1,6 @@
1import { Component, ReactElement } from 'react'; 1import { Component, ReactElement } from 'react';
2import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 2import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
3import { Tooltip as ReactTooltip } from 'react-tooltip'; 3import ReactTooltip from 'react-tooltip';
4import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
5import classnames from 'classnames'; 5import classnames from 'classnames';
6import { mdiBellOff, mdiMessageBulletedOff, mdiPower } from '@mdi/js'; 6import { mdiBellOff, mdiMessageBulletedOff, mdiPower } from '@mdi/js';
@@ -73,8 +73,7 @@ class ServiceItem extends Component<IProps> {
73 {service.isMuted && ( 73 {service.isMuted && (
74 <Icon 74 <Icon
75 icon={mdiBellOff} 75 icon={mdiBellOff}
76 data-tooltip-id="tooltip-service-item" 76 data-tip={intl.formatMessage(messages.tooltipIsMuted)}
77 data-tooltip-content={intl.formatMessage(messages.tooltipIsMuted)}
78 /> 77 />
79 )} 78 )}
80 </td> 79 </td>
@@ -86,10 +85,7 @@ class ServiceItem extends Component<IProps> {
86 {!service.isEnabled && ( 85 {!service.isEnabled && (
87 <Icon 86 <Icon
88 icon={mdiPower} 87 icon={mdiPower}
89 data-tooltip-id="tooltip-service-item" 88 data-tip={intl.formatMessage(messages.tooltipIsDisabled)}
90 data-tooltip-content={intl.formatMessage(
91 messages.tooltipIsDisabled,
92 )}
93 /> 89 />
94 )} 90 )}
95 </td> 91 </td>
@@ -101,18 +97,12 @@ class ServiceItem extends Component<IProps> {
101 {!service.isNotificationEnabled && ( 97 {!service.isNotificationEnabled && (
102 <Icon 98 <Icon
103 icon={mdiMessageBulletedOff} 99 icon={mdiMessageBulletedOff}
104 data-tooltip-id="tooltip-service-item" 100 data-tip={intl.formatMessage(
105 data-tooltip-content={intl.formatMessage(
106 messages.tooltipNotificationsDisabled, 101 messages.tooltipNotificationsDisabled,
107 )} 102 )}
108 /> 103 />
109 )} 104 )}
110 <ReactTooltip 105 <ReactTooltip place="top" type="dark" effect="solid" />
111 id="tooltip-service-item"
112 place="right"
113 variant="dark"
114 style={{ height: 'auto' }}
115 />
116 </td> 106 </td>
117 </tr> 107 </tr>
118 ); 108 );
diff --git a/src/components/settings/team/TeamDashboard.tsx b/src/components/settings/team/TeamDashboard.tsx
index 77bccb8c3..6fd2d4426 100644
--- a/src/components/settings/team/TeamDashboard.tsx
+++ b/src/components/settings/team/TeamDashboard.tsx
@@ -3,7 +3,7 @@
3import { Component, ReactElement } from 'react'; 3import { Component, ReactElement } from 'react';
4import { observer } from 'mobx-react'; 4import { observer } from 'mobx-react';
5import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 5import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
6import { Tooltip as ReactTooltip } from 'react-tooltip'; 6import ReactTooltip from 'react-tooltip';
7import withStyles, { WithStylesProps } from 'react-jss'; 7import withStyles, { WithStylesProps } from 'react-jss';
8import classnames from 'classnames'; 8import classnames from 'classnames';
9import Loader from '../../ui/Loader'; 9import Loader from '../../ui/Loader';
@@ -173,12 +173,7 @@ class TeamDashboard extends Component<IProps> {
173 </> 173 </>
174 )} 174 )}
175 </div> 175 </div>
176 <ReactTooltip 176 <ReactTooltip place="right" type="dark" effect="solid" />
177 place="right"
178 variant="dark"
179 float
180 style={{ height: 'auto' }}
181 />
182 </div> 177 </div>
183 ) : ( 178 ) : (
184 <div className="settings__main"> 179 <div className="settings__main">
diff --git a/src/components/ui/effects/Appear.tsx b/src/components/ui/effects/Appear.tsx
index 0868271f3..2076f6ba6 100644
--- a/src/components/ui/effects/Appear.tsx
+++ b/src/components/ui/effects/Appear.tsx
@@ -1,5 +1,5 @@
1import { ReactElement, ReactNode, useEffect, useState } from 'react'; 1import { ReactElement, ReactNode, useEffect, useState } from 'react';
2import { TransitionGroup, CSSTransition } from 'react-transition-group'; 2import { CSSTransitionGroup } from 'react-transition-group';
3 3
4interface IProps { 4interface IProps {
5 children: ReactNode; 5 children: ReactNode;
@@ -7,6 +7,7 @@ interface IProps {
7 className?: string; 7 className?: string;
8 transitionAppear?: boolean; 8 transitionAppear?: boolean;
9 transitionLeave?: boolean; 9 transitionLeave?: boolean;
10 transitionAppearTimeout?: number;
10 transitionEnterTimeout?: number; 11 transitionEnterTimeout?: number;
11 transitionLeaveTimeout?: number; 12 transitionLeaveTimeout?: number;
12} 13}
@@ -17,6 +18,7 @@ const Appear = ({
17 className = '', 18 className = '',
18 transitionAppear = true, 19 transitionAppear = true,
19 transitionLeave = true, 20 transitionLeave = true,
21 transitionAppearTimeout = 1500,
20 transitionEnterTimeout = 1500, 22 transitionEnterTimeout = 1500,
21 transitionLeaveTimeout = 1500, 23 transitionLeaveTimeout = 1500,
22}: IProps): ReactElement | null => { 24}: IProps): ReactElement | null => {
@@ -31,21 +33,17 @@ const Appear = ({
31 } 33 }
32 34
33 return ( 35 return (
34 <TransitionGroup 36 <CSSTransitionGroup
35 appear={transitionAppear} 37 transitionName={transitionName}
36 exit={transitionLeave} 38 transitionAppear={transitionAppear}
39 transitionLeave={transitionLeave}
40 transitionAppearTimeout={transitionAppearTimeout}
41 transitionEnterTimeout={transitionEnterTimeout}
42 transitionLeaveTimeout={transitionLeaveTimeout}
37 className={className} 43 className={className}
38 > 44 >
39 <CSSTransition 45 {children}
40 classNames={transitionName} 46 </CSSTransitionGroup>
41 timeout={{
42 enter: transitionEnterTimeout,
43 exit: transitionLeaveTimeout,
44 }}
45 >
46 {children}
47 </CSSTransition>
48 </TransitionGroup>
49 ); 47 );
50}; 48};
51 49
diff --git a/src/features/webControls/components/WebControls.tsx b/src/features/webControls/components/WebControls.tsx
index 54f45c843..e76fca6a2 100644
--- a/src/features/webControls/components/WebControls.tsx
+++ b/src/features/webControls/components/WebControls.tsx
@@ -9,7 +9,6 @@ import {
9 mdiHomeOutline, 9 mdiHomeOutline,
10 mdiEarth, 10 mdiEarth,
11} from '@mdi/js'; 11} from '@mdi/js';
12import { Tooltip as ReactTooltip } from 'react-tooltip';
13import Icon from '../../../components/ui/icon'; 12import Icon from '../../../components/ui/icon';
14 13
15const messages = defineMessages({ 14const messages = defineMessages({
@@ -152,8 +151,7 @@ class WebControls extends Component<IProps, IState> {
152 onClick={goHome} 151 onClick={goHome}
153 type="button" 152 type="button"
154 className={classes.button} 153 className={classes.button}
155 data-tooltip-id="tooltip-web-controls" 154 data-tip={intl.formatMessage(messages.goHome)}
156 data-tooltip-content={intl.formatMessage(messages.goHome)}
157 data-place="bottom" 155 data-place="bottom"
158 > 156 >
159 <Icon icon={mdiHomeOutline} className={classes.icon} /> 157 <Icon icon={mdiHomeOutline} className={classes.icon} />
@@ -163,8 +161,7 @@ class WebControls extends Component<IProps, IState> {
163 type="button" 161 type="button"
164 className={classes.button} 162 className={classes.button}
165 disabled={!canGoBack} 163 disabled={!canGoBack}
166 data-tooltip-id="tooltip-web-controls" 164 data-tip={intl.formatMessage(messages.back)}
167 data-tooltip-content={intl.formatMessage(messages.back)}
168 data-place="bottom" 165 data-place="bottom"
169 > 166 >
170 <Icon icon={mdiArrowLeft} className={classes.icon} /> 167 <Icon icon={mdiArrowLeft} className={classes.icon} />
@@ -174,8 +171,7 @@ class WebControls extends Component<IProps, IState> {
174 type="button" 171 type="button"
175 className={classes.button} 172 className={classes.button}
176 disabled={!canGoForward} 173 disabled={!canGoForward}
177 data-tooltip-id="tooltip-web-controls" 174 data-tip={intl.formatMessage(messages.forward)}
178 data-tooltip-content={intl.formatMessage(messages.forward)}
179 data-place="bottom" 175 data-place="bottom"
180 > 176 >
181 <Icon icon={mdiArrowRight} className={classes.icon} /> 177 <Icon icon={mdiArrowRight} className={classes.icon} />
@@ -184,8 +180,7 @@ class WebControls extends Component<IProps, IState> {
184 onClick={reload} 180 onClick={reload}
185 type="button" 181 type="button"
186 className={classes.button} 182 className={classes.button}
187 data-tooltip-id="tooltip-web-controls" 183 data-tip={intl.formatMessage(messages.reload)}
188 data-tooltip-content={intl.formatMessage(messages.reload)}
189 data-place="bottom" 184 data-place="bottom"
190 > 185 >
191 <Icon icon={mdiReload} className={classes.icon} /> 186 <Icon icon={mdiReload} className={classes.icon} />
@@ -237,18 +232,11 @@ class WebControls extends Component<IProps, IState> {
237 onClick={openInBrowser} 232 onClick={openInBrowser}
238 type="button" 233 type="button"
239 className={classes.button} 234 className={classes.button}
240 data-tooltip-id="tooltip-web-controls" 235 data-tip={intl.formatMessage(messages.openInBrowser)}
241 data-tooltip-content={intl.formatMessage(messages.openInBrowser)}
242 data-place="bottom" 236 data-place="bottom"
243 > 237 >
244 <Icon icon={mdiEarth} className={classes.icon} /> 238 <Icon icon={mdiEarth} className={classes.icon} />
245 </button> 239 </button>
246 <ReactTooltip
247 id="tooltip-web-controls"
248 place="bottom"
249 variant="dark"
250 style={{ height: 'auto' }}
251 />
252 </div> 240 </div>
253 ); 241 );
254 } 242 }
diff --git a/src/features/workspaces/components/WorkspaceDrawer.tsx b/src/features/workspaces/components/WorkspaceDrawer.tsx
index 1c827e9dd..61284d81a 100644
--- a/src/features/workspaces/components/WorkspaceDrawer.tsx
+++ b/src/features/workspaces/components/WorkspaceDrawer.tsx
@@ -2,7 +2,7 @@ import { Component, ReactElement } from 'react';
2import { observer } from 'mobx-react'; 2import { observer } from 'mobx-react';
3import withStyles, { WithStylesProps } from 'react-jss'; 3import withStyles, { WithStylesProps } from 'react-jss';
4import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl'; 4import { defineMessages, injectIntl, WrappedComponentProps } from 'react-intl';
5import { Tooltip as ReactTooltip } from 'react-tooltip'; 5import ReactTooltip from 'react-tooltip';
6import { mdiPlusBox, mdiCog } from '@mdi/js'; 6import { mdiPlusBox, mdiCog } from '@mdi/js';
7import { noop } from 'lodash'; 7import { noop } from 'lodash';
8import { H1 } from '../../../components/ui/headline'; 8import { H1 } from '../../../components/ui/headline';
@@ -96,6 +96,7 @@ interface IProps extends WithStylesProps<typeof styles>, WrappedComponentProps {
96class WorkspaceDrawer extends Component<IProps> { 96class WorkspaceDrawer extends Component<IProps> {
97 componentDidMount(): void { 97 componentDidMount(): void {
98 try { 98 try {
99 ReactTooltip.rebuild();
99 getUserWorkspacesRequest.execute(); 100 getUserWorkspacesRequest.execute();
100 } catch (error) { 101 } catch (error) {
101 console.log(error); 102 console.log(error);
@@ -120,8 +121,7 @@ class WorkspaceDrawer extends Component<IProps> {
120 onClick={() => { 121 onClick={() => {
121 workspaceActions.openWorkspaceSettings(); 122 workspaceActions.openWorkspaceSettings();
122 }} 123 }}
123 data-tooltip-id="tooltip-workspaces-drawer" 124 data-tip={`${intl.formatMessage(
124 data-tooltip-content={`${intl.formatMessage(
125 messages.workspacesSettingsTooltip, 125 messages.workspacesSettingsTooltip,
126 )}`} 126 )}`}
127 > 127 >
@@ -176,12 +176,7 @@ class WorkspaceDrawer extends Component<IProps> {
176 <span>{intl.formatMessage(messages.addNewWorkspaceLabel)}</span> 176 <span>{intl.formatMessage(messages.addNewWorkspaceLabel)}</span>
177 </div> 177 </div>
178 </div> 178 </div>
179 <ReactTooltip 179 <ReactTooltip place="right" type="dark" effect="solid" />
180 id="tooltip-workspaces-drawer"
181 place="right"
182 variant="dark"
183 style={{ height: 'auto', zIndex: 210 }}
184 />
185 </div> 180 </div>
186 ); 181 );
187 } 182 }
diff --git a/src/features/workspaces/components/WorkspaceDrawerItem.tsx b/src/features/workspaces/components/WorkspaceDrawerItem.tsx
index 172b4192c..cf8c3b2ba 100644
--- a/src/features/workspaces/components/WorkspaceDrawerItem.tsx
+++ b/src/features/workspaces/components/WorkspaceDrawerItem.tsx
@@ -119,8 +119,7 @@ class WorkspaceDrawerItem extends Component<IProps> {
119 } 119 }
120 }} 120 }}
121 onKeyDown={noop} 121 onKeyDown={noop}
122 data-tooltip-id="tooltip-workspaces-drawer" 122 data-tip={acceleratorString(
123 data-tooltip-content={acceleratorString(
124 shortcutIndex, 123 shortcutIndex,
125 `${cmdOrCtrlShortcutKey(false)}+${altKey(false)}`, 124 `${cmdOrCtrlShortcutKey(false)}+${altKey(false)}`,
126 )} 125 )}
diff --git a/src/routes.tsx b/src/routes.tsx
index beada5c96..04b6fa96f 100644
--- a/src/routes.tsx
+++ b/src/routes.tsx
@@ -51,7 +51,6 @@ class FerdiumRoutes extends Component<IProps> {
51 const errorProps = { error: routeProps.stores.globalError.error || {} }; 51 const errorProps = { error: routeProps.stores.globalError.error || {} };
52 52
53 return ( 53 return (
54 // @ts-expect-error
55 <HistoryRouter history={history}> 54 <HistoryRouter history={history}>
56 <Routes> 55 <Routes>
57 <Route path="/auth" element={<AuthLayoutContainer {...routeProps} />}> 56 <Route path="/auth" element={<AuthLayoutContainer {...routeProps} />}>
diff --git a/src/styles/main.scss b/src/styles/main.scss
index eb7649bfa..8369c9298 100644
--- a/src/styles/main.scss
+++ b/src/styles/main.scss
@@ -1,6 +1,5 @@
1@import '../../node_modules/electron-react-titlebar/assets/style'; 1@import '../../node_modules/electron-react-titlebar/assets/style';
2 2
3
4// modules 3// modules
5@import './globals.scss'; 4@import './globals.scss';
6@import './reset.scss'; 5@import './reset.scss';