aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--package.json11
-rw-r--r--pnpm-lock.yaml117
-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.tsx27
-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, 107 insertions, 163 deletions
diff --git a/package.json b/package.json
index 05a5c820e..6cca591fe 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.14.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.4", 118 "semver": "7.5.4",
@@ -136,9 +136,8 @@
136 "@types/lodash": "4.14.195", 136 "@types/lodash": "4.14.195",
137 "@types/ms": "0.7.31", 137 "@types/ms": "0.7.31",
138 "@types/node": "18.15.3", 138 "@types/node": "18.15.3",
139 "@types/react": "18.2.15", 139 "@types/react": "18.2.12",
140 "@types/react-dom": "18.2.7", 140 "@types/react-dom": "18.2.5",
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.2", 143 "@types/uuid": "9.0.2",
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 410dcba2e..b47b513c8 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.14.2 207 specifier: 6.4.2
208 version: 6.14.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
@@ -292,14 +292,11 @@ devDependencies:
292 specifier: 18.15.3 292 specifier: 18.15.3
293 version: 18.15.3 293 version: 18.15.3
294 '@types/react': 294 '@types/react':
295 specifier: 18.2.15 295 specifier: 18.2.12
296 version: 18.2.15 296 version: 18.2.12
297 '@types/react-dom': 297 '@types/react-dom':
298 specifier: 18.2.7 298 specifier: 18.2.5
299 version: 18.2.7 299 version: 18.2.5
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.3.1:
1518 resolution: {integrity: sha512-Bu+AMaXNjrpjh41znzHqaz3r2Nr8hHuHZT6V2LBKMhyMl0FgKA62PNYbqnfgmzOhoWZj70Zecisbo4H1rotP5g==}
1519 dev: false
1520
1521 /@floating-ui/dom@1.4.3:
1522 resolution: {integrity: sha512-nB/68NyaQlcdY22L+Fgd1HERQ7UGv7XFN+tPxwrEfQL4nKtAP/jIZnZtpUlXbtV+VEGHh6W/63Gy2C5biWI3sA==}
1523 dependencies:
1524 '@floating-ui/core': 1.3.1
1525 dev: false
1526
1527 /@formatjs/cli@6.1.3: 1514 /@formatjs/cli@6.1.3:
1528 resolution: {integrity: sha512-PdTXZTY8LqxwmvFqdifn89gjXnPUpGtGyFs0BnoeLuOuxZFSnBfIs5WQCVMaJnr1+0vNNlXyT0VAIAwjRpf6BA==} 1515 resolution: {integrity: sha512-PdTXZTY8LqxwmvFqdifn89gjXnPUpGtGyFs0BnoeLuOuxZFSnBfIs5WQCVMaJnr1+0vNNlXyT0VAIAwjRpf6BA==}
1529 engines: {node: '>= 16'} 1516 engines: {node: '>= 16'}
@@ -2208,8 +2195,8 @@ packages:
2208 dev: true 2195 dev: true
2209 optional: true 2196 optional: true
2210 2197
2211 /@remix-run/router@1.7.2: 2198 /@remix-run/router@1.0.2:
2212 resolution: {integrity: sha512-7Lcn7IqGMV+vizMPoEl5F0XDshcdDYtMI6uJLQdQz5CfZAwy3vvGKYSUk789qndt5dEC4HfSjviSYlSoHGL2+A==} 2199 resolution: {integrity: sha512-GRSOFhJzjGN+d4sKHTMSvNeUPoZiDHWmRnXfzaxrqe7dE/Nzlc8BiMSJdLDESZlndM7jIUrZ/F4yWqVYlI0rwQ==}
2213 engines: {node: '>=14'} 2200 engines: {node: '>=14'}
2214 dev: false 2201 dev: false
2215 2202
@@ -2452,7 +2439,7 @@ packages:
2452 /@types/hoist-non-react-statics@3.3.1: 2439 /@types/hoist-non-react-statics@3.3.1:
2453 resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==} 2440 resolution: {integrity: sha512-iMIqiko6ooLrTh1joXodJK5X9xeEALT1kM5G3ZLhD3hszxBdIEd5C75U834D9mLcINgD4OyZf5uQXjkuYydWvA==}
2454 dependencies: 2441 dependencies:
2455 '@types/react': 18.2.15 2442 '@types/react': 18.2.12
2456 hoist-non-react-statics: 3.3.2 2443 hoist-non-react-statics: 3.3.2
2457 dev: false 2444 dev: false
2458 2445
@@ -2536,20 +2523,14 @@ packages:
2536 /@types/prop-types@15.7.5: 2523 /@types/prop-types@15.7.5:
2537 resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==} 2524 resolution: {integrity: sha512-JCB8C6SnDoQf0cNycqd/35A7MjcnK+ZTqE7judS6o7utxUCg6imJg3QK2qzHKszlTjcj2cn+NwMB2i96ubpj7w==}
2538 2525
2539 /@types/react-dom@18.2.7: 2526 /@types/react-dom@18.2.5:
2540 resolution: {integrity: sha512-GRaAEriuT4zp9N4p1i8BDBYmEyfo+xQ3yHjJU4eiK5NDa1RmUZG+unZABUTK4/Ox/M+GaHwb6Ow8rUITrtjszA==} 2527 resolution: {integrity: sha512-sRQsOS/sCLnpQhR4DSKGTtWFE3FZjpQa86KPVbhUqdYMRZ9FEFcfAytKhR/vUG2rH1oFbOOej6cuD7MFSobDRQ==}
2541 dependencies:
2542 '@types/react': 18.2.15
2543 dev: true
2544
2545 /@types/react-transition-group@4.4.6:
2546 resolution: {integrity: sha512-VnCdSxfcm08KjsJVQcfBmhEQAPnLB8G08hAxn39azX1qYBQ/5RVQuoHuKIcfKOdncuaUvEpFKFzEvbtIMsfVew==}
2547 dependencies: 2528 dependencies:
2548 '@types/react': 18.2.15 2529 '@types/react': 18.2.12
2549 dev: true 2530 dev: true
2550 2531
2551 /@types/react@18.2.15: 2532 /@types/react@18.2.12:
2552 resolution: {integrity: sha512-oEjE7TQt1fFTFSbf8kkNuc798ahTUzn3Le67/PWjE8MAfYAD/qB7O8hSTcromLFqHCt9bcdOg5GXMokzTjJ5SA==} 2533 resolution: {integrity: sha512-ndmBMLCgn38v3SntMeoJaIrO6tGHYKMEBohCUmw8HoLLQdRMOIGXfeYaBTLe2lsFaSB3MOK1VXscYFnmLtTSmw==}
2553 dependencies: 2534 dependencies:
2554 '@types/prop-types': 15.7.5 2535 '@types/prop-types': 15.7.5
2555 '@types/scheduler': 0.16.2 2536 '@types/scheduler': 0.16.2
@@ -3906,6 +3887,10 @@ packages:
3906 resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} 3887 resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==}
3907 dev: false 3888 dev: false
3908 3889
3890 /chain-function@1.0.1:
3891 resolution: {integrity: sha512-SxltgMwL9uCko5/ZCLiyG2B7R9fY4pDZUw7hJ4MhirdjBLosoDqkWABi3XMucddHdLiFJMb7PD2MZifZriuMTg==}
3892 dev: false
3893
3909 /chainsaw@0.1.0: 3894 /chainsaw@0.1.0:
3910 resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==} 3895 resolution: {integrity: sha512-75kWfWt6MEKNC8xYXIdRpDehRYY/tNSgwKaJq+dbbDcxORuVrrQ+SEHoWsniVn9XPYfP4gmdWIeDk/4YNp1rNQ==}
3911 dependencies: 3896 dependencies:
@@ -4791,11 +4776,10 @@ packages:
4791 esutils: 2.0.3 4776 esutils: 2.0.3
4792 dev: true 4777 dev: true
4793 4778
4794 /dom-helpers@5.2.1: 4779 /dom-helpers@3.4.0:
4795 resolution: {integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==} 4780 resolution: {integrity: sha512-LnuPJ+dwqKDIyotW1VzmOZ5TONUN7CwkCR5hrgawTUbkBGYdeoNLZo6nNfGkCrjtE1nXXaj7iMMpDa8/d9WoIA==}
4796 dependencies: 4781 dependencies:
4797 '@babel/runtime': 7.21.5 4782 '@babel/runtime': 7.21.5
4798 csstype: 3.1.2
4799 dev: false 4783 dev: false
4800 4784
4801 /dot-prop@5.3.0: 4785 /dot-prop@5.3.0:
@@ -10064,7 +10048,7 @@ packages:
10064 '@formatjs/intl-displaynames': 6.5.0 10048 '@formatjs/intl-displaynames': 6.5.0
10065 '@formatjs/intl-listformat': 7.4.0 10049 '@formatjs/intl-listformat': 7.4.0
10066 '@types/hoist-non-react-statics': 3.3.1 10050 '@types/hoist-non-react-statics': 3.3.1
10067 '@types/react': 18.2.15 10051 '@types/react': 18.2.12
10068 hoist-non-react-statics: 3.3.2 10052 hoist-non-react-statics: 3.3.2
10069 intl-messageformat: 10.5.0 10053 intl-messageformat: 10.5.0
10070 react: 18.2.0 10054 react: 18.2.0
@@ -10130,26 +10114,26 @@ packages:
10130 warning: 4.0.3 10114 warning: 4.0.3
10131 dev: false 10115 dev: false
10132 10116
10133 /react-router-dom@6.14.2(react-dom@18.2.0)(react@18.2.0): 10117 /react-router-dom@6.4.2(react-dom@18.2.0)(react@18.2.0):
10134 resolution: {integrity: sha512-5pWX0jdKR48XFZBuJqHosX3AAHjRAzygouMTyimnBPOLdY3WjzUSKhus2FVMihUFWzeLebDgr4r8UeQFAct7Bg==} 10118 resolution: {integrity: sha512-yM1kjoTkpfjgczPrcyWrp+OuQMyB1WleICiiGfstnQYo/S8hPEEnVjr/RdmlH6yKK4Tnj1UGXFSa7uwAtmDoLQ==}
10135 engines: {node: '>=14'} 10119 engines: {node: '>=14'}
10136 peerDependencies: 10120 peerDependencies:
10137 react: '>=16.8' 10121 react: '>=16.8'
10138 react-dom: '>=16.8' 10122 react-dom: '>=16.8'
10139 dependencies: 10123 dependencies:
10140 '@remix-run/router': 1.7.2 10124 '@remix-run/router': 1.0.2
10141 react: 18.2.0 10125 react: 18.2.0
10142 react-dom: 18.2.0(react@18.2.0) 10126 react-dom: 18.2.0(react@18.2.0)
10143 react-router: 6.14.2(react@18.2.0) 10127 react-router: 6.4.2(react@18.2.0)
10144 dev: false 10128 dev: false
10145 10129
10146 /react-router@6.14.2(react@18.2.0): 10130 /react-router@6.4.2(react@18.2.0):
10147 resolution: {integrity: sha512-09Zss2dE2z+T1D03IheqAFtK4UzQyX8nFPWx6jkwdYzGLXd5ie06A6ezS2fO6zJfEb/SpG6UocN2O1hfD+2urQ==} 10131 resolution: {integrity: sha512-Rb0BAX9KHhVzT1OKhMvCDMw776aTYM0DtkxqUBP8dNBom3mPXlfNs76JNGK8wKJ1IZEY1+WGj+cvZxHVk/GiKw==}
10148 engines: {node: '>=14'} 10132 engines: {node: '>=14'}
10149 peerDependencies: 10133 peerDependencies:
10150 react: '>=16.8' 10134 react: '>=16.8'
10151 dependencies: 10135 dependencies:
10152 '@remix-run/router': 1.7.2 10136 '@remix-run/router': 1.0.2
10153 react: 18.2.0 10137 react: 18.2.0
10154 dev: false 10138 dev: false
10155 10139
@@ -10167,16 +10151,17 @@ packages:
10167 react-dom: 18.2.0(react@18.2.0) 10151 react-dom: 18.2.0(react@18.2.0)
10168 dev: false 10152 dev: false
10169 10153
10170 /react-tooltip@5.13.1(react-dom@18.2.0)(react@18.2.0): 10154 /react-tooltip@4.5.1(react-dom@18.2.0)(react@18.2.0):
10171 resolution: {integrity: sha512-9NstDFdjyy6cIH9zjeT70zXTHlW/TIGCOWQmhkAyqLFeQioLg1FXvb9ec7AxSpn0zyFUkFSLdFYxZRuewti3Aw==} 10155 resolution: {integrity: sha512-Zo+CSFUGXar1uV+bgXFFDe7VeS2iByeIp5rTgTcc2HqtuOS5D76QapejNNfx320MCY91TlhTQat36KGFTqgcvw==}
10156 engines: {npm: '>=6.13'}
10172 peerDependencies: 10157 peerDependencies:
10173 react: '>=16.14.0' 10158 react: '>=16.0.0'
10174 react-dom: '>=16.14.0' 10159 react-dom: '>=16.0.0'
10175 dependencies: 10160 dependencies:
10176 '@floating-ui/dom': 1.4.3 10161 prop-types: 15.8.1
10177 classnames: 2.3.2
10178 react: 18.2.0 10162 react: 18.2.0
10179 react-dom: 18.2.0(react@18.2.0) 10163 react-dom: 18.2.0(react@18.2.0)
10164 uuid: 7.0.3
10180 dev: false 10165 dev: false
10181 10166
10182 /react-topbar-progress-indicator@4.1.1(react@18.2.0): 10167 /react-topbar-progress-indicator@4.1.1(react@18.2.0):
@@ -10188,18 +10173,19 @@ packages:
10188 topbar: 0.1.4 10173 topbar: 0.1.4
10189 dev: false 10174 dev: false
10190 10175
10191 /react-transition-group@4.4.5(react-dom@18.2.0)(react@18.2.0): 10176 /react-transition-group@1.2.1(react-dom@18.2.0)(react@18.2.0):
10192 resolution: {integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==} 10177 resolution: {integrity: sha512-CWaL3laCmgAFdxdKbhhps+c0HRGF4c+hdM4H23+FI1QBNUyx/AMeIJGWorehPNSaKnQNOAxL7PQmqMu78CDj3Q==}
10193 peerDependencies: 10178 peerDependencies:
10194 react: '>=16.6.0' 10179 react: ^15.0.0 || ^16.0.0
10195 react-dom: '>=16.6.0' 10180 react-dom: ^15.0.0 || ^16.0.0
10196 dependencies: 10181 dependencies:
10197 '@babel/runtime': 7.21.5 10182 chain-function: 1.0.1
10198 dom-helpers: 5.2.1 10183 dom-helpers: 3.4.0
10199 loose-envify: 1.4.0 10184 loose-envify: 1.4.0
10200 prop-types: 15.8.1 10185 prop-types: 15.8.1
10201 react: 18.2.0 10186 react: 18.2.0
10202 react-dom: 18.2.0(react@18.2.0) 10187 react-dom: 18.2.0(react@18.2.0)
10188 warning: 3.0.0
10203 dev: false 10189 dev: false
10204 10190
10205 /react-window@1.8.8(react-dom@18.2.0)(react@18.2.0): 10191 /react-window@1.8.8(react-dom@18.2.0)(react@18.2.0):
@@ -11997,6 +11983,11 @@ packages:
11997 hasBin: true 11983 hasBin: true
11998 dev: false 11984 dev: false
11999 11985
11986 /uuid@7.0.3:
11987 resolution: {integrity: sha512-DPSke0pXhTZgoF/d+WSt2QaKMCFSfx7QegxEWT+JOuHF5aWrKEn0G+ztjuJg/gG8/ItK+rbPCD/yNv8yyih6Cg==}
11988 hasBin: true
11989 dev: false
11990
12000 /uuid@8.3.2: 11991 /uuid@8.3.2:
12001 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} 11992 resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==}
12002 hasBin: true 11993 hasBin: true
@@ -12101,6 +12092,12 @@ packages:
12101 engines: {node: '>=0.10.0'} 12092 engines: {node: '>=0.10.0'}
12102 dev: false 12093 dev: false
12103 12094
12095 /warning@3.0.0:
12096 resolution: {integrity: sha512-jMBt6pUrKn5I+OGgtQ4YZLdhIeJmObddh6CsibPxyQ5yPZm1XExSyzC1LCNX7BzhxWgiHmizBWJTHJIjMjTQYQ==}
12097 dependencies:
12098 loose-envify: 1.4.0
12099 dev: false
12100
12104 /warning@4.0.3: 12101 /warning@4.0.3:
12105 resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==} 12102 resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
12106 dependencies: 12103 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 06f63a029..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 { CSSTransition, TransitionGroup } from 'react-transition-group'; 2import { CSSTransitionGroup } from 'react-transition-group';
3 3
4interface IProps { 4interface IProps {
5 children: ReactNode; 5 children: ReactNode;
@@ -33,20 +33,17 @@ const Appear = ({
33 } 33 }
34 34
35 return ( 35 return (
36 <TransitionGroup component={null}> 36 <CSSTransitionGroup
37 <CSSTransition 37 transitionName={transitionName}
38 classNames={transitionName || className} 38 transitionAppear={transitionAppear}
39 appear={transitionAppear} 39 transitionLeave={transitionLeave}
40 exit={transitionLeave} 40 transitionAppearTimeout={transitionAppearTimeout}
41 timeout={{ 41 transitionEnterTimeout={transitionEnterTimeout}
42 enter: transitionEnterTimeout, 42 transitionLeaveTimeout={transitionLeaveTimeout}
43 appear: transitionAppearTimeout, 43 className={className}
44 exit: transitionLeaveTimeout, 44 >
45 }} 45 {children}
46 > 46 </CSSTransitionGroup>
47 {children}
48 </CSSTransition>
49 </TransitionGroup>
50 ); 47 );
51}; 48};
52 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';