diff --git a/.eslintrc.js b/.eslintrc.js
index 870f796a96..791b55ac6a 100644
--- a/.eslintrc.js
+++ b/.eslintrc.js
@@ -199,6 +199,12 @@ module.exports = {
'max-lines': 'off',
},
},
+ {
+ files: ['app/react/stories/*.stories.tsx'],
+ rules: {
+ 'react/no-multi-comp': 'off',
+ },
+ },
{
files: ['app/**/*.ts*', 'database/**/*.ts', 'e2e/**/*.ts'],
excludedFiles: './**/*.cy.tsx',
diff --git a/app/react/App/styles/globals.css b/app/react/App/styles/globals.css
index 232440ff48..25b3692c0d 100644
--- a/app/react/App/styles/globals.css
+++ b/app/react/App/styles/globals.css
@@ -1,5 +1,5 @@
/*
-! tailwindcss v3.2.7 | MIT License | https://tailwindcss.com
+! tailwindcss v3.3.2 | MIT License | https://tailwindcss.com
*/
/*
@@ -31,6 +31,7 @@
3. Use a more readable tab size.
4. Use the user's configured `sans` font-family by default.
5. Use the user's configured `sans` font-feature-settings by default.
+6. Use the user's configured `sans` font-variation-settings by default.
*/
html {
@@ -47,6 +48,8 @@ html {
/* 4 */
font-feature-settings: normal;
/* 5 */
+ font-variation-settings: normal;
+ /* 6 */
}
/*
@@ -879,6 +882,9 @@ input:checked + .toggle-bg {
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
+ --tw-gradient-from-position: ;
+ --tw-gradient-via-position: ;
+ --tw-gradient-to-position: ;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
@@ -926,6 +932,9 @@ input:checked + .toggle-bg {
--tw-pan-y: ;
--tw-pinch-zoom: ;
--tw-scroll-snap-strictness: proximity;
+ --tw-gradient-from-position: ;
+ --tw-gradient-via-position: ;
+ --tw-gradient-to-position: ;
--tw-ordinal: ;
--tw-slashed-zero: ;
--tw-numeric-figure: ;
@@ -1259,10 +1268,6 @@ input:checked + .toggle-bg {
margin-top: 1.5rem;
}
-.\!block {
- display: block !important;
-}
-
.block {
display: block;
}
@@ -1538,16 +1543,35 @@ input:checked + .toggle-bg {
flex-grow: 1;
}
+.grow {
+ flex-grow: 1;
+}
+
.-translate-x-1\/2 {
--tw-translate-x: -50%;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
+.-translate-x-\[-500px\] {
+ --tw-translate-x: 500px;
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
+}
+
+.-translate-x-\[500px\] {
+ --tw-translate-x: -500px;
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
+}
+
.-translate-y-1\/2 {
--tw-translate-y: -50%;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
}
+.translate-x-0 {
+ --tw-translate-x: 0px;
+ transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
+}
+
.rotate-180 {
--tw-rotate: 180deg;
transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));
@@ -1854,6 +1878,10 @@ input:checked + .toggle-bg {
border-left-width: 0px;
}
+.border-l-2 {
+ border-left-width: 2px;
+}
+
.border-r-0 {
border-right-width: 0px;
}
@@ -1866,6 +1894,11 @@ input:checked + .toggle-bg {
border-top-width: 4px;
}
+.border-blue-300 {
+ --tw-border-opacity: 1;
+ border-color: rgb(164 202 254 / var(--tw-border-opacity));
+}
+
.border-blue-500 {
--tw-border-opacity: 1;
border-color: rgb(63 131 248 / var(--tw-border-opacity));
@@ -1911,6 +1944,11 @@ input:checked + .toggle-bg {
border-color: rgb(209 213 219 / var(--tw-border-opacity));
}
+.border-gray-400 {
+ --tw-border-opacity: 1;
+ border-color: rgb(156 163 175 / var(--tw-border-opacity));
+}
+
.border-gray-50 {
--tw-border-opacity: 1;
border-color: rgb(249 250 251 / var(--tw-border-opacity));
@@ -1931,6 +1969,11 @@ input:checked + .toggle-bg {
border-color: rgb(17 24 39 / var(--tw-border-opacity));
}
+.border-green-300 {
+ --tw-border-opacity: 1;
+ border-color: rgb(132 225 188 / var(--tw-border-opacity));
+}
+
.border-green-500 {
--tw-border-opacity: 1;
border-color: rgb(14 159 110 / var(--tw-border-opacity));
@@ -1941,11 +1984,31 @@ input:checked + .toggle-bg {
border-color: rgb(4 108 78 / var(--tw-border-opacity));
}
+.border-indigo-300 {
+ --tw-border-opacity: 1;
+ border-color: rgb(180 198 252 / var(--tw-border-opacity));
+}
+
.border-indigo-400 {
--tw-border-opacity: 1;
border-color: rgb(141 162 251 / var(--tw-border-opacity));
}
+.border-indigo-500 {
+ --tw-border-opacity: 1;
+ border-color: rgb(104 117 245 / var(--tw-border-opacity));
+}
+
+.border-pink-300 {
+ --tw-border-opacity: 1;
+ border-color: rgb(248 180 217 / var(--tw-border-opacity));
+}
+
+.border-pink-500 {
+ --tw-border-opacity: 1;
+ border-color: rgb(231 70 148 / var(--tw-border-opacity));
+}
+
.border-pink-600 {
--tw-border-opacity: 1;
border-color: rgb(214 31 105 / var(--tw-border-opacity));
@@ -1956,6 +2019,11 @@ input:checked + .toggle-bg {
border-color: rgb(165 180 252 / var(--tw-border-opacity));
}
+.border-primary-400 {
+ --tw-border-opacity: 1;
+ border-color: rgb(129 140 248 / var(--tw-border-opacity));
+}
+
.border-primary-700 {
--tw-border-opacity: 1;
border-color: rgb(67 56 202 / var(--tw-border-opacity));
@@ -1966,11 +2034,21 @@ input:checked + .toggle-bg {
border-color: rgb(55 48 163 / var(--tw-border-opacity));
}
+.border-purple-500 {
+ --tw-border-opacity: 1;
+ border-color: rgb(144 97 249 / var(--tw-border-opacity));
+}
+
.border-purple-900 {
--tw-border-opacity: 1;
border-color: rgb(74 29 150 / var(--tw-border-opacity));
}
+.border-red-300 {
+ --tw-border-opacity: 1;
+ border-color: rgb(248 180 180 / var(--tw-border-opacity));
+}
+
.border-red-500 {
--tw-border-opacity: 1;
border-color: rgb(240 82 82 / var(--tw-border-opacity));
@@ -1981,6 +2059,11 @@ input:checked + .toggle-bg {
border-color: rgb(119 29 29 / var(--tw-border-opacity));
}
+.border-sucess-200 {
+ --tw-border-opacity: 1;
+ border-color: rgb(187 247 208 / var(--tw-border-opacity));
+}
+
.border-sucess-300 {
--tw-border-opacity: 1;
border-color: rgb(134 239 172 / var(--tw-border-opacity));
@@ -1991,6 +2074,16 @@ input:checked + .toggle-bg {
border-color: rgb(22 101 52 / var(--tw-border-opacity));
}
+.border-teal-300 {
+ --tw-border-opacity: 1;
+ border-color: rgb(126 220 226 / var(--tw-border-opacity));
+}
+
+.border-teal-500 {
+ --tw-border-opacity: 1;
+ border-color: rgb(6 148 162 / var(--tw-border-opacity));
+}
+
.border-transparent {
border-color: transparent;
}
@@ -2000,6 +2093,11 @@ input:checked + .toggle-bg {
border-color: rgb(255 255 255 / var(--tw-border-opacity));
}
+.border-yellow-300 {
+ --tw-border-opacity: 1;
+ border-color: rgb(250 202 21 / var(--tw-border-opacity));
+}
+
.border-yellow-400 {
--tw-border-opacity: 1;
border-color: rgb(227 160 8 / var(--tw-border-opacity));
@@ -2015,11 +2113,6 @@ input:checked + .toggle-bg {
border-color: rgb(159 88 10 / var(--tw-border-opacity));
}
-.border-sucess-200 {
- --tw-border-opacity: 1;
- border-color: rgb(187 247 208 / var(--tw-border-opacity));
-}
-
.\!bg-transparent {
background-color: transparent !important;
}
@@ -2164,6 +2257,11 @@ input:checked + .toggle-bg {
background-color: rgb(224 231 255 / var(--tw-bg-opacity));
}
+.bg-primary-400 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(129 140 248 / var(--tw-bg-opacity));
+}
+
.bg-primary-50 {
--tw-bg-opacity: 1;
background-color: rgb(238 242 255 / var(--tw-bg-opacity));
@@ -2229,6 +2327,11 @@ input:checked + .toggle-bg {
background-color: rgb(21 128 61 / var(--tw-bg-opacity));
}
+.bg-teal-100 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(213 245 246 / var(--tw-bg-opacity));
+}
+
.bg-transparent {
background-color: transparent;
}
@@ -2279,142 +2382,142 @@ input:checked + .toggle-bg {
}
.from-blue-500 {
- --tw-gradient-from: #3F83F8;
- --tw-gradient-to: rgb(63 131 248 / 0);
+ --tw-gradient-from: #3F83F8 var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(63 131 248 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-green-400 {
- --tw-gradient-from: #31C48D;
- --tw-gradient-to: rgb(49 196 141 / 0);
+ --tw-gradient-from: #31C48D var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(49 196 141 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-pink-400 {
- --tw-gradient-from: #F17EB8;
- --tw-gradient-to: rgb(241 126 184 / 0);
+ --tw-gradient-from: #F17EB8 var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(241 126 184 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-pink-500 {
- --tw-gradient-from: #E74694;
- --tw-gradient-to: rgb(231 70 148 / 0);
+ --tw-gradient-from: #E74694 var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(231 70 148 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-purple-500 {
- --tw-gradient-from: #9061F9;
- --tw-gradient-to: rgb(144 97 249 / 0);
+ --tw-gradient-from: #9061F9 var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(144 97 249 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-purple-600 {
- --tw-gradient-from: #7E3AF2;
- --tw-gradient-to: rgb(126 58 242 / 0);
+ --tw-gradient-from: #7E3AF2 var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(126 58 242 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-red-200 {
- --tw-gradient-from: #FBD5D5;
- --tw-gradient-to: rgb(251 213 213 / 0);
+ --tw-gradient-from: #FBD5D5 var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(251 213 213 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-red-400 {
- --tw-gradient-from: #F98080;
- --tw-gradient-to: rgb(249 128 128 / 0);
+ --tw-gradient-from: #F98080 var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(249 128 128 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-teal-200 {
- --tw-gradient-from: #AFECEF;
- --tw-gradient-to: rgb(175 236 239 / 0);
+ --tw-gradient-from: #AFECEF var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(175 236 239 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.from-teal-400 {
- --tw-gradient-from: #16BDCA;
- --tw-gradient-to: rgb(22 189 202 / 0);
+ --tw-gradient-from: #16BDCA var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(22 189 202 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
.via-blue-600 {
- --tw-gradient-to: rgb(28 100 242 / 0);
- --tw-gradient-stops: var(--tw-gradient-from), #1C64F2, var(--tw-gradient-to);
+ --tw-gradient-to: rgb(28 100 242 / 0) var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from), #1C64F2 var(--tw-gradient-via-position), var(--tw-gradient-to);
}
.via-green-500 {
- --tw-gradient-to: rgb(14 159 110 / 0);
- --tw-gradient-stops: var(--tw-gradient-from), #0E9F6E, var(--tw-gradient-to);
+ --tw-gradient-to: rgb(14 159 110 / 0) var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from), #0E9F6E var(--tw-gradient-via-position), var(--tw-gradient-to);
}
.via-pink-500 {
- --tw-gradient-to: rgb(231 70 148 / 0);
- --tw-gradient-stops: var(--tw-gradient-from), #E74694, var(--tw-gradient-to);
+ --tw-gradient-to: rgb(231 70 148 / 0) var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from), #E74694 var(--tw-gradient-via-position), var(--tw-gradient-to);
}
.via-purple-600 {
- --tw-gradient-to: rgb(126 58 242 / 0);
- --tw-gradient-stops: var(--tw-gradient-from), #7E3AF2, var(--tw-gradient-to);
+ --tw-gradient-to: rgb(126 58 242 / 0) var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from), #7E3AF2 var(--tw-gradient-via-position), var(--tw-gradient-to);
}
.via-red-300 {
- --tw-gradient-to: rgb(248 180 180 / 0);
- --tw-gradient-stops: var(--tw-gradient-from), #F8B4B4, var(--tw-gradient-to);
+ --tw-gradient-to: rgb(248 180 180 / 0) var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from), #F8B4B4 var(--tw-gradient-via-position), var(--tw-gradient-to);
}
.via-red-500 {
- --tw-gradient-to: rgb(240 82 82 / 0);
- --tw-gradient-stops: var(--tw-gradient-from), #F05252, var(--tw-gradient-to);
+ --tw-gradient-to: rgb(240 82 82 / 0) var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from), #F05252 var(--tw-gradient-via-position), var(--tw-gradient-to);
}
.via-teal-500 {
- --tw-gradient-to: rgb(6 148 162 / 0);
- --tw-gradient-stops: var(--tw-gradient-from), #0694A2, var(--tw-gradient-to);
+ --tw-gradient-to: rgb(6 148 162 / 0) var(--tw-gradient-to-position);
+ --tw-gradient-stops: var(--tw-gradient-from), #0694A2 var(--tw-gradient-via-position), var(--tw-gradient-to);
}
.to-blue-500 {
- --tw-gradient-to: #3F83F8;
+ --tw-gradient-to: #3F83F8 var(--tw-gradient-to-position);
}
.to-blue-600 {
- --tw-gradient-to: #1C64F2;
+ --tw-gradient-to: #1C64F2 var(--tw-gradient-to-position);
}
.to-blue-700 {
- --tw-gradient-to: #1A56DB;
+ --tw-gradient-to: #1A56DB var(--tw-gradient-to-position);
}
.to-green-600 {
- --tw-gradient-to: #057A55;
+ --tw-gradient-to: #057A55 var(--tw-gradient-to-position);
}
.to-orange-400 {
- --tw-gradient-to: #FF8A4C;
+ --tw-gradient-to: #FF8A4C var(--tw-gradient-to-position);
}
.to-pink-500 {
- --tw-gradient-to: #E74694;
+ --tw-gradient-to: #E74694 var(--tw-gradient-to-position);
}
.to-pink-600 {
- --tw-gradient-to: #D61F69;
+ --tw-gradient-to: #D61F69 var(--tw-gradient-to-position);
}
.to-purple-700 {
- --tw-gradient-to: #6C2BD9;
+ --tw-gradient-to: #6C2BD9 var(--tw-gradient-to-position);
}
.to-red-600 {
- --tw-gradient-to: #E02424;
+ --tw-gradient-to: #E02424 var(--tw-gradient-to-position);
}
.to-teal-600 {
- --tw-gradient-to: #047481;
+ --tw-gradient-to: #047481 var(--tw-gradient-to-position);
}
.to-yellow-200 {
- --tw-gradient-to: #FCE96A;
+ --tw-gradient-to: #FCE96A var(--tw-gradient-to-position);
}
.fill-blue-600 {
@@ -2740,6 +2843,11 @@ input:checked + .toggle-bg {
color: rgb(127 29 29 / var(--tw-text-opacity));
}
+.text-gray-100 {
+ --tw-text-opacity: 1;
+ color: rgb(243 244 246 / var(--tw-text-opacity));
+}
+
.text-gray-200 {
--tw-text-opacity: 1;
color: rgb(229 231 235 / var(--tw-text-opacity));
@@ -2805,16 +2913,46 @@ input:checked + .toggle-bg {
color: rgb(1 71 55 / var(--tw-text-opacity));
}
+.text-indigo-500 {
+ --tw-text-opacity: 1;
+ color: rgb(104 117 245 / var(--tw-text-opacity));
+}
+
+.text-indigo-700 {
+ --tw-text-opacity: 1;
+ color: rgb(81 69 205 / var(--tw-text-opacity));
+}
+
.text-indigo-800 {
--tw-text-opacity: 1;
color: rgb(66 56 157 / var(--tw-text-opacity));
}
+.text-indigo-900 {
+ --tw-text-opacity: 1;
+ color: rgb(54 47 120 / var(--tw-text-opacity));
+}
+
+.text-pink-500 {
+ --tw-text-opacity: 1;
+ color: rgb(231 70 148 / var(--tw-text-opacity));
+}
+
+.text-pink-700 {
+ --tw-text-opacity: 1;
+ color: rgb(191 18 93 / var(--tw-text-opacity));
+}
+
.text-pink-800 {
--tw-text-opacity: 1;
color: rgb(153 21 75 / var(--tw-text-opacity));
}
+.text-pink-900 {
+ --tw-text-opacity: 1;
+ color: rgb(117 26 61 / var(--tw-text-opacity));
+}
+
.text-primary-700 {
--tw-text-opacity: 1;
color: rgb(67 56 202 / var(--tw-text-opacity));
@@ -2825,6 +2963,16 @@ input:checked + .toggle-bg {
color: rgb(55 48 163 / var(--tw-text-opacity));
}
+.text-purple-500 {
+ --tw-text-opacity: 1;
+ color: rgb(144 97 249 / var(--tw-text-opacity));
+}
+
+.text-purple-700 {
+ --tw-text-opacity: 1;
+ color: rgb(108 43 217 / var(--tw-text-opacity));
+}
+
.text-purple-800 {
--tw-text-opacity: 1;
color: rgb(85 33 181 / var(--tw-text-opacity));
@@ -2865,6 +3013,26 @@ input:checked + .toggle-bg {
color: rgb(22 101 52 / var(--tw-text-opacity));
}
+.text-teal-500 {
+ --tw-text-opacity: 1;
+ color: rgb(6 148 162 / var(--tw-text-opacity));
+}
+
+.text-teal-700 {
+ --tw-text-opacity: 1;
+ color: rgb(3 102 114 / var(--tw-text-opacity));
+}
+
+.text-teal-800 {
+ --tw-text-opacity: 1;
+ color: rgb(5 80 92 / var(--tw-text-opacity));
+}
+
+.text-teal-900 {
+ --tw-text-opacity: 1;
+ color: rgb(1 68 81 / var(--tw-text-opacity));
+}
+
.text-white {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
@@ -3291,6 +3459,11 @@ input:checked + .toggle-bg {
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
}
+.hover\:bg-green-100:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(222 247 236 / var(--tw-bg-opacity));
+}
+
.hover\:bg-green-200:hover {
--tw-bg-opacity: 1;
background-color: rgb(188 240 218 / var(--tw-bg-opacity));
@@ -3301,6 +3474,26 @@ input:checked + .toggle-bg {
background-color: rgb(3 84 63 / var(--tw-bg-opacity));
}
+.hover\:bg-indigo-100:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(229 237 255 / var(--tw-bg-opacity));
+}
+
+.hover\:bg-indigo-200:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(205 219 254 / var(--tw-bg-opacity));
+}
+
+.hover\:bg-pink-100:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(252 232 243 / var(--tw-bg-opacity));
+}
+
+.hover\:bg-pink-200:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(250 209 232 / var(--tw-bg-opacity));
+}
+
.hover\:bg-primary-800:hover {
--tw-bg-opacity: 1;
background-color: rgb(55 48 163 / var(--tw-bg-opacity));
@@ -3311,11 +3504,21 @@ input:checked + .toggle-bg {
background-color: rgb(49 46 129 / var(--tw-bg-opacity));
}
+.hover\:bg-purple-200:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(220 215 254 / var(--tw-bg-opacity));
+}
+
.hover\:bg-purple-800:hover {
--tw-bg-opacity: 1;
background-color: rgb(85 33 181 / var(--tw-bg-opacity));
}
+.hover\:bg-red-100:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(253 232 232 / var(--tw-bg-opacity));
+}
+
.hover\:bg-red-200:hover {
--tw-bg-opacity: 1;
background-color: rgb(251 213 213 / var(--tw-bg-opacity));
@@ -3336,11 +3539,26 @@ input:checked + .toggle-bg {
background-color: rgb(20 83 45 / var(--tw-bg-opacity));
}
+.hover\:bg-teal-100:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(213 245 246 / var(--tw-bg-opacity));
+}
+
+.hover\:bg-teal-200:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(175 236 239 / var(--tw-bg-opacity));
+}
+
.hover\:bg-white:hover {
--tw-bg-opacity: 1;
background-color: rgb(255 255 255 / var(--tw-bg-opacity));
}
+.hover\:bg-yellow-100:hover {
+ --tw-bg-opacity: 1;
+ background-color: rgb(253 246 178 / var(--tw-bg-opacity));
+}
+
.hover\:bg-yellow-200:hover {
--tw-bg-opacity: 1;
background-color: rgb(252 233 106 / var(--tw-bg-opacity));
@@ -3364,8 +3582,8 @@ input:checked + .toggle-bg {
}
.hover\:from-teal-200:hover {
- --tw-gradient-from: #AFECEF;
- --tw-gradient-to: rgb(175 236 239 / 0);
+ --tw-gradient-from: #AFECEF var(--tw-gradient-from-position);
+ --tw-gradient-to: rgb(175 236 239 / 0) var(--tw-gradient-to-position);
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
}
@@ -3531,6 +3749,16 @@ input:checked + .toggle-bg {
--tw-ring-color: rgb(205 219 254 / var(--tw-ring-opacity));
}
+.focus\:ring-indigo-300:focus {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(180 198 252 / var(--tw-ring-opacity));
+}
+
+.focus\:ring-indigo-400:focus {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(141 162 251 / var(--tw-ring-opacity));
+}
+
.focus\:ring-pink-200:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(250 209 232 / var(--tw-ring-opacity));
@@ -3541,6 +3769,11 @@ input:checked + .toggle-bg {
--tw-ring-color: rgb(248 180 217 / var(--tw-ring-opacity));
}
+.focus\:ring-pink-400:focus {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(241 126 184 / var(--tw-ring-opacity));
+}
+
.focus\:ring-primary-200:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(199 210 254 / var(--tw-ring-opacity));
@@ -3556,6 +3789,11 @@ input:checked + .toggle-bg {
--tw-ring-color: rgb(202 191 253 / var(--tw-ring-opacity));
}
+.focus\:ring-purple-400:focus {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(172 148 250 / var(--tw-ring-opacity));
+}
+
.focus\:ring-red-100:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(253 232 232 / var(--tw-ring-opacity));
@@ -3586,6 +3824,11 @@ input:checked + .toggle-bg {
--tw-ring-color: rgb(126 220 226 / var(--tw-ring-opacity));
}
+.focus\:ring-teal-400:focus {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(22 189 202 / var(--tw-ring-opacity));
+}
+
.focus\:ring-yellow-300:focus {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(250 202 21 / var(--tw-ring-opacity));
@@ -3733,6 +3976,16 @@ input:checked + .toggle-bg {
background-color: rgb(229 231 235 / var(--tw-bg-opacity));
}
+.group:hover .group-hover\:bg-gray-300 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(209 213 219 / var(--tw-bg-opacity));
+}
+
+.group:hover .group-hover\:bg-gray-500 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(107 114 128 / var(--tw-bg-opacity));
+}
+
.group:hover .group-hover\:bg-green-200 {
--tw-bg-opacity: 1;
background-color: rgb(188 240 218 / var(--tw-bg-opacity));
@@ -3758,6 +4011,11 @@ input:checked + .toggle-bg {
background-color: rgb(251 213 213 / var(--tw-bg-opacity));
}
+.group:hover .group-hover\:bg-teal-200 {
+ --tw-bg-opacity: 1;
+ background-color: rgb(175 236 239 / var(--tw-bg-opacity));
+}
+
.group:hover .group-hover\:bg-white\/50 {
background-color: rgb(255 255 255 / 0.5);
}
@@ -3818,729 +4076,984 @@ input:checked + .toggle-bg {
border-color: rgb(255 255 255 / var(--tw-border-opacity));
}
-.dark .dark\:divide-gray-700 > :not([hidden]) ~ :not([hidden]) {
+:is(.dark .dark\:divide-gray-700) > :not([hidden]) ~ :not([hidden]) {
--tw-divide-opacity: 1;
border-color: rgb(55 65 81 / var(--tw-divide-opacity));
}
-.dark .dark\:border-none {
+:is(.dark .dark\:border-none) {
border-style: none;
}
-.dark .dark\:border-blue-400 {
+:is(.dark .dark\:border-blue-400) {
--tw-border-opacity: 1;
border-color: rgb(118 169 250 / var(--tw-border-opacity));
}
-.dark .dark\:border-blue-500 {
+:is(.dark .dark\:border-blue-500) {
--tw-border-opacity: 1;
border-color: rgb(63 131 248 / var(--tw-border-opacity));
}
-.dark .dark\:border-gray-600 {
+:is(.dark .dark\:border-blue-600) {
+ --tw-border-opacity: 1;
+ border-color: rgb(28 100 242 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:border-gray-600) {
--tw-border-opacity: 1;
border-color: rgb(75 85 99 / var(--tw-border-opacity));
}
-.dark .dark\:border-gray-700 {
+:is(.dark .dark\:border-gray-700) {
--tw-border-opacity: 1;
border-color: rgb(55 65 81 / var(--tw-border-opacity));
}
-.dark .dark\:border-gray-800 {
+:is(.dark .dark\:border-gray-800) {
--tw-border-opacity: 1;
border-color: rgb(31 41 55 / var(--tw-border-opacity));
}
-.dark .dark\:border-gray-900 {
+:is(.dark .dark\:border-gray-900) {
--tw-border-opacity: 1;
border-color: rgb(17 24 39 / var(--tw-border-opacity));
}
-.dark .dark\:border-green-400 {
+:is(.dark .dark\:border-green-400) {
--tw-border-opacity: 1;
border-color: rgb(49 196 141 / var(--tw-border-opacity));
}
-.dark .dark\:border-red-400 {
+:is(.dark .dark\:border-green-600) {
+ --tw-border-opacity: 1;
+ border-color: rgb(5 122 85 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:border-indigo-600) {
+ --tw-border-opacity: 1;
+ border-color: rgb(88 80 236 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:border-pink-600) {
+ --tw-border-opacity: 1;
+ border-color: rgb(214 31 105 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:border-red-400) {
--tw-border-opacity: 1;
border-color: rgb(249 128 128 / var(--tw-border-opacity));
}
-.dark .dark\:border-white {
+:is(.dark .dark\:border-red-600) {
+ --tw-border-opacity: 1;
+ border-color: rgb(224 36 36 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:border-teal-600) {
+ --tw-border-opacity: 1;
+ border-color: rgb(4 116 129 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:border-white) {
--tw-border-opacity: 1;
border-color: rgb(255 255 255 / var(--tw-border-opacity));
}
-.dark .dark\:border-yellow-400 {
+:is(.dark .dark\:border-yellow-400) {
--tw-border-opacity: 1;
border-color: rgb(227 160 8 / var(--tw-border-opacity));
}
-.dark .dark\:\!bg-transparent {
+:is(.dark .dark\:border-yellow-600) {
+ --tw-border-opacity: 1;
+ border-color: rgb(159 88 10 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:\!bg-transparent) {
background-color: transparent !important;
}
-.dark .dark\:bg-blue-100 {
+:is(.dark .dark\:bg-blue-100) {
--tw-bg-opacity: 1;
background-color: rgb(225 239 254 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-blue-200 {
+:is(.dark .dark\:bg-blue-200) {
--tw-bg-opacity: 1;
background-color: rgb(195 221 253 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-blue-600 {
+:is(.dark .dark\:bg-blue-600) {
--tw-bg-opacity: 1;
background-color: rgb(28 100 242 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-blue-900 {
+:is(.dark .dark\:bg-blue-900) {
--tw-bg-opacity: 1;
background-color: rgb(35 56 118 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-gray-300 {
+:is(.dark .dark\:bg-gray-200) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(229 231 235 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:bg-gray-300) {
--tw-bg-opacity: 1;
background-color: rgb(209 213 219 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-gray-600 {
+:is(.dark .dark\:bg-gray-400) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(156 163 175 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:bg-gray-500) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(107 114 128 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:bg-gray-600) {
--tw-bg-opacity: 1;
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-gray-700 {
+:is(.dark .dark\:bg-gray-700) {
--tw-bg-opacity: 1;
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-gray-800 {
+:is(.dark .dark\:bg-gray-800) {
--tw-bg-opacity: 1;
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-gray-800\/30 {
+:is(.dark .dark\:bg-gray-800\/30) {
background-color: rgb(31 41 55 / 0.3);
}
-.dark .dark\:bg-gray-800\/50 {
+:is(.dark .dark\:bg-gray-800\/50) {
background-color: rgb(31 41 55 / 0.5);
}
-.dark .dark\:bg-gray-900 {
+:is(.dark .dark\:bg-gray-900) {
--tw-bg-opacity: 1;
background-color: rgb(17 24 39 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-green-100 {
+:is(.dark .dark\:bg-green-100) {
--tw-bg-opacity: 1;
background-color: rgb(222 247 236 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-green-200 {
+:is(.dark .dark\:bg-green-200) {
--tw-bg-opacity: 1;
background-color: rgb(188 240 218 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-green-500 {
+:is(.dark .dark\:bg-green-500) {
--tw-bg-opacity: 1;
background-color: rgb(14 159 110 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-green-600 {
+:is(.dark .dark\:bg-green-600) {
--tw-bg-opacity: 1;
background-color: rgb(5 122 85 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-green-900 {
+:is(.dark .dark\:bg-green-900) {
--tw-bg-opacity: 1;
background-color: rgb(1 71 55 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-indigo-200 {
+:is(.dark .dark\:bg-indigo-200) {
--tw-bg-opacity: 1;
background-color: rgb(205 219 254 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-indigo-500 {
+:is(.dark .dark\:bg-indigo-500) {
--tw-bg-opacity: 1;
background-color: rgb(104 117 245 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-pink-200 {
+:is(.dark .dark\:bg-indigo-600) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(88 80 236 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:bg-pink-200) {
--tw-bg-opacity: 1;
background-color: rgb(250 209 232 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-purple-200 {
+:is(.dark .dark\:bg-pink-600) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(214 31 105 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:bg-purple-200) {
--tw-bg-opacity: 1;
background-color: rgb(220 215 254 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-purple-500 {
+:is(.dark .dark\:bg-purple-500) {
--tw-bg-opacity: 1;
background-color: rgb(144 97 249 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-purple-600 {
+:is(.dark .dark\:bg-purple-600) {
--tw-bg-opacity: 1;
background-color: rgb(126 58 242 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-purple-900 {
+:is(.dark .dark\:bg-purple-900) {
--tw-bg-opacity: 1;
background-color: rgb(74 29 150 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-red-100 {
+:is(.dark .dark\:bg-red-100) {
--tw-bg-opacity: 1;
background-color: rgb(253 232 232 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-red-200 {
+:is(.dark .dark\:bg-red-200) {
--tw-bg-opacity: 1;
background-color: rgb(251 213 213 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-red-500 {
+:is(.dark .dark\:bg-red-500) {
--tw-bg-opacity: 1;
background-color: rgb(240 82 82 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-red-600 {
+:is(.dark .dark\:bg-red-600) {
--tw-bg-opacity: 1;
background-color: rgb(224 36 36 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-red-900 {
+:is(.dark .dark\:bg-red-900) {
--tw-bg-opacity: 1;
background-color: rgb(119 29 29 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-transparent {
+:is(.dark .dark\:bg-teal-200) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(175 236 239 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:bg-teal-600) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(4 116 129 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:bg-transparent) {
background-color: transparent;
}
-.dark .dark\:bg-yellow-100 {
+:is(.dark .dark\:bg-yellow-100) {
--tw-bg-opacity: 1;
background-color: rgb(253 246 178 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-yellow-200 {
+:is(.dark .dark\:bg-yellow-200) {
--tw-bg-opacity: 1;
background-color: rgb(252 233 106 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-yellow-900 {
+:is(.dark .dark\:bg-yellow-600) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(159 88 10 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:bg-yellow-900) {
--tw-bg-opacity: 1;
background-color: rgb(99 49 18 / var(--tw-bg-opacity));
}
-.dark .dark\:bg-opacity-80 {
+:is(.dark .dark\:bg-opacity-80) {
--tw-bg-opacity: 0.8;
}
-.dark .dark\:fill-gray-300 {
+:is(.dark .dark\:fill-gray-300) {
fill: #D1D5DB;
}
-.dark .dark\:text-blue-300 {
+:is(.dark .dark\:text-blue-300) {
--tw-text-opacity: 1;
color: rgb(164 202 254 / var(--tw-text-opacity));
}
-.dark .dark\:text-blue-500 {
+:is(.dark .dark\:text-blue-500) {
--tw-text-opacity: 1;
color: rgb(63 131 248 / var(--tw-text-opacity));
}
-.dark .dark\:text-blue-600 {
+:is(.dark .dark\:text-blue-600) {
--tw-text-opacity: 1;
color: rgb(28 100 242 / var(--tw-text-opacity));
}
-.dark .dark\:text-blue-800 {
+:is(.dark .dark\:text-blue-800) {
--tw-text-opacity: 1;
color: rgb(30 66 159 / var(--tw-text-opacity));
}
-.dark .dark\:text-gray-100 {
+:is(.dark .dark\:text-blue-900) {
+ --tw-text-opacity: 1;
+ color: rgb(35 56 118 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-gray-100) {
--tw-text-opacity: 1;
color: rgb(243 244 246 / var(--tw-text-opacity));
}
-.dark .dark\:text-gray-200 {
+:is(.dark .dark\:text-gray-200) {
--tw-text-opacity: 1;
color: rgb(229 231 235 / var(--tw-text-opacity));
}
-.dark .dark\:text-gray-300 {
+:is(.dark .dark\:text-gray-300) {
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity));
}
-.dark .dark\:text-gray-400 {
+:is(.dark .dark\:text-gray-400) {
--tw-text-opacity: 1;
color: rgb(156 163 175 / var(--tw-text-opacity));
}
-.dark .dark\:text-gray-500 {
+:is(.dark .dark\:text-gray-500) {
--tw-text-opacity: 1;
color: rgb(107 114 128 / var(--tw-text-opacity));
}
-.dark .dark\:text-gray-600 {
+:is(.dark .dark\:text-gray-600) {
--tw-text-opacity: 1;
color: rgb(75 85 99 / var(--tw-text-opacity));
}
-.dark .dark\:text-gray-800 {
+:is(.dark .dark\:text-gray-800) {
--tw-text-opacity: 1;
color: rgb(31 41 55 / var(--tw-text-opacity));
}
-.dark .dark\:text-green-500 {
+:is(.dark .dark\:text-gray-900) {
+ --tw-text-opacity: 1;
+ color: rgb(17 24 39 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-green-500) {
--tw-text-opacity: 1;
color: rgb(14 159 110 / var(--tw-text-opacity));
}
-.dark .dark\:text-green-600 {
+:is(.dark .dark\:text-green-600) {
--tw-text-opacity: 1;
color: rgb(5 122 85 / var(--tw-text-opacity));
}
-.dark .dark\:text-green-800 {
+:is(.dark .dark\:text-green-800) {
--tw-text-opacity: 1;
color: rgb(3 84 63 / var(--tw-text-opacity));
}
-.dark .dark\:text-green-900 {
+:is(.dark .dark\:text-green-900) {
--tw-text-opacity: 1;
color: rgb(1 71 55 / var(--tw-text-opacity));
}
-.dark .dark\:text-indigo-900 {
+:is(.dark .dark\:text-indigo-600) {
+ --tw-text-opacity: 1;
+ color: rgb(88 80 236 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-indigo-800) {
+ --tw-text-opacity: 1;
+ color: rgb(66 56 157 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-indigo-900) {
--tw-text-opacity: 1;
color: rgb(54 47 120 / var(--tw-text-opacity));
}
-.dark .dark\:text-pink-900 {
+:is(.dark .dark\:text-pink-600) {
+ --tw-text-opacity: 1;
+ color: rgb(214 31 105 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-pink-800) {
+ --tw-text-opacity: 1;
+ color: rgb(153 21 75 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-pink-900) {
--tw-text-opacity: 1;
color: rgb(117 26 61 / var(--tw-text-opacity));
}
-.dark .dark\:text-purple-900 {
+:is(.dark .dark\:text-purple-600) {
+ --tw-text-opacity: 1;
+ color: rgb(126 58 242 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-purple-800) {
+ --tw-text-opacity: 1;
+ color: rgb(85 33 181 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-purple-900) {
--tw-text-opacity: 1;
color: rgb(74 29 150 / var(--tw-text-opacity));
}
-.dark .dark\:text-red-500 {
+:is(.dark .dark\:text-red-500) {
--tw-text-opacity: 1;
color: rgb(240 82 82 / var(--tw-text-opacity));
}
-.dark .dark\:text-red-600 {
+:is(.dark .dark\:text-red-600) {
--tw-text-opacity: 1;
color: rgb(224 36 36 / var(--tw-text-opacity));
}
-.dark .dark\:text-red-800 {
+:is(.dark .dark\:text-red-800) {
--tw-text-opacity: 1;
color: rgb(155 28 28 / var(--tw-text-opacity));
}
-.dark .dark\:text-red-900 {
+:is(.dark .dark\:text-red-900) {
--tw-text-opacity: 1;
color: rgb(119 29 29 / var(--tw-text-opacity));
}
-.dark .dark\:text-white {
+:is(.dark .dark\:text-teal-600) {
+ --tw-text-opacity: 1;
+ color: rgb(4 116 129 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-teal-800) {
+ --tw-text-opacity: 1;
+ color: rgb(5 80 92 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-teal-900) {
+ --tw-text-opacity: 1;
+ color: rgb(1 68 81 / var(--tw-text-opacity));
+}
+
+:is(.dark .dark\:text-white) {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
-.dark .dark\:text-yellow-600 {
+:is(.dark .dark\:text-yellow-600) {
--tw-text-opacity: 1;
color: rgb(159 88 10 / var(--tw-text-opacity));
}
-.dark .dark\:text-yellow-800 {
+:is(.dark .dark\:text-yellow-800) {
--tw-text-opacity: 1;
color: rgb(114 59 19 / var(--tw-text-opacity));
}
-.dark .dark\:text-yellow-900 {
+:is(.dark .dark\:text-yellow-900) {
--tw-text-opacity: 1;
color: rgb(99 49 18 / var(--tw-text-opacity));
}
-.dark .dark\:placeholder-gray-400::-moz-placeholder {
+:is(.dark .dark\:placeholder-gray-400)::-moz-placeholder {
--tw-placeholder-opacity: 1;
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
}
-.dark .dark\:placeholder-gray-400::placeholder {
+:is(.dark .dark\:placeholder-gray-400)::placeholder {
--tw-placeholder-opacity: 1;
color: rgb(156 163 175 / var(--tw-placeholder-opacity));
}
-.dark .dark\:shadow-sm-light {
+:is(.dark .dark\:shadow-sm-light) {
--tw-shadow: 0 2px 5px 0px rgba(255, 255, 255, 0.08);
--tw-shadow-colored: 0 2px 5px 0px var(--tw-shadow-color);
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
}
-.dark .dark\:ring-blue-800 {
+:is(.dark .dark\:ring-blue-800) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(30 66 159 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-gray-400 {
+:is(.dark .dark\:ring-gray-400) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(156 163 175 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-gray-500 {
+:is(.dark .dark\:ring-gray-500) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-gray-800 {
+:is(.dark .dark\:ring-gray-800) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-gray-900 {
+:is(.dark .dark\:ring-gray-900) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(17 24 39 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-green-500 {
+:is(.dark .dark\:ring-green-500) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(14 159 110 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-pink-500 {
+:is(.dark .dark\:ring-pink-500) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(231 70 148 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-purple-600 {
+:is(.dark .dark\:ring-purple-600) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(126 58 242 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-red-700 {
+:is(.dark .dark\:ring-red-700) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(200 30 30 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-yellow-500 {
+:is(.dark .dark\:ring-yellow-500) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(194 120 3 / var(--tw-ring-opacity));
}
-.dark .dark\:ring-offset-gray-800 {
+:is(.dark .dark\:ring-offset-gray-800) {
--tw-ring-offset-color: #1F2937;
}
-.dark .odd\:dark\:bg-gray-800:nth-child(odd) {
+:is(.dark .odd\:dark\:bg-gray-800):nth-child(odd) {
--tw-bg-opacity: 1;
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
}
-.dark .even\:dark\:bg-gray-700:nth-child(even) {
+:is(.dark .even\:dark\:bg-gray-700):nth-child(even) {
--tw-bg-opacity: 1;
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:border-gray-700:hover {
+:is(.dark .dark\:hover\:border-blue-700:hover) {
+ --tw-border-opacity: 1;
+ border-color: rgb(26 86 219 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:hover\:border-gray-700:hover) {
--tw-border-opacity: 1;
border-color: rgb(55 65 81 / var(--tw-border-opacity));
}
-.dark .dark\:hover\:bg-blue-300:hover {
+:is(.dark .dark\:hover\:border-green-700:hover) {
+ --tw-border-opacity: 1;
+ border-color: rgb(4 108 78 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:hover\:border-indigo-700:hover) {
+ --tw-border-opacity: 1;
+ border-color: rgb(81 69 205 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:hover\:border-pink-700:hover) {
+ --tw-border-opacity: 1;
+ border-color: rgb(191 18 93 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:hover\:border-red-700:hover) {
+ --tw-border-opacity: 1;
+ border-color: rgb(200 30 30 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:hover\:border-teal-700:hover) {
+ --tw-border-opacity: 1;
+ border-color: rgb(3 102 114 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:hover\:border-yellow-700:hover) {
+ --tw-border-opacity: 1;
+ border-color: rgb(142 75 16 / var(--tw-border-opacity));
+}
+
+:is(.dark .dark\:hover\:bg-blue-300:hover) {
--tw-bg-opacity: 1;
background-color: rgb(164 202 254 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-blue-700:hover {
+:is(.dark .dark\:hover\:bg-blue-700:hover) {
--tw-bg-opacity: 1;
background-color: rgb(26 86 219 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-gray-600:hover {
+:is(.dark .dark\:hover\:bg-gray-300:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(209 213 219 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:hover\:bg-gray-600:hover) {
--tw-bg-opacity: 1;
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-gray-700:hover {
+:is(.dark .dark\:hover\:bg-gray-700:hover) {
--tw-bg-opacity: 1;
background-color: rgb(55 65 81 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-gray-800:hover {
+:is(.dark .dark\:hover\:bg-gray-800:hover) {
--tw-bg-opacity: 1;
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-green-300:hover {
+:is(.dark .dark\:hover\:bg-green-300:hover) {
--tw-bg-opacity: 1;
background-color: rgb(132 225 188 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-green-700:hover {
+:is(.dark .dark\:hover\:bg-green-700:hover) {
--tw-bg-opacity: 1;
background-color: rgb(4 108 78 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-purple-700:hover {
+:is(.dark .dark\:hover\:bg-indigo-300:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(180 198 252 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:hover\:bg-indigo-700:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(81 69 205 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:hover\:bg-pink-300:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(248 180 217 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:hover\:bg-pink-700:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(191 18 93 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:hover\:bg-purple-300:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(202 191 253 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:hover\:bg-purple-700:hover) {
--tw-bg-opacity: 1;
background-color: rgb(108 43 217 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-red-300:hover {
+:is(.dark .dark\:hover\:bg-red-300:hover) {
--tw-bg-opacity: 1;
background-color: rgb(248 180 180 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-red-700:hover {
+:is(.dark .dark\:hover\:bg-red-700:hover) {
--tw-bg-opacity: 1;
background-color: rgb(200 30 30 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:bg-yellow-300:hover {
+:is(.dark .dark\:hover\:bg-teal-300:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(126 220 226 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:hover\:bg-teal-700:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(3 102 114 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:hover\:bg-yellow-300:hover) {
--tw-bg-opacity: 1;
background-color: rgb(250 202 21 / var(--tw-bg-opacity));
}
-.dark .dark\:hover\:text-gray-300:hover {
+:is(.dark .dark\:hover\:bg-yellow-700:hover) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(142 75 16 / var(--tw-bg-opacity));
+}
+
+:is(.dark .dark\:hover\:text-gray-300:hover) {
--tw-text-opacity: 1;
color: rgb(209 213 219 / var(--tw-text-opacity));
}
-.dark .dark\:hover\:text-white:hover {
+:is(.dark .dark\:hover\:text-white:hover) {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
-.dark .dark\:focus\:border-blue-500:focus {
+:is(.dark .dark\:focus\:border-blue-500:focus) {
--tw-border-opacity: 1;
border-color: rgb(63 131 248 / var(--tw-border-opacity));
}
-.dark .dark\:focus\:border-green-500:focus {
+:is(.dark .dark\:focus\:border-green-500:focus) {
--tw-border-opacity: 1;
border-color: rgb(14 159 110 / var(--tw-border-opacity));
}
-.dark .dark\:focus\:border-red-500:focus {
+:is(.dark .dark\:focus\:border-red-500:focus) {
--tw-border-opacity: 1;
border-color: rgb(240 82 82 / var(--tw-border-opacity));
}
-.dark .dark\:focus\:border-yellow-500:focus {
+:is(.dark .dark\:focus\:border-yellow-500:focus) {
--tw-border-opacity: 1;
border-color: rgb(194 120 3 / var(--tw-border-opacity));
}
-.dark .dark\:focus\:bg-blue-600:focus {
+:is(.dark .dark\:focus\:bg-blue-600:focus) {
--tw-bg-opacity: 1;
background-color: rgb(28 100 242 / var(--tw-bg-opacity));
}
-.dark .dark\:focus\:text-white:focus {
+:is(.dark .dark\:focus\:text-white:focus) {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
-.dark .dark\:focus\:ring-blue-500:focus {
+:is(.dark .dark\:focus\:ring-blue-500:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(63 131 248 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-blue-600:focus {
+:is(.dark .dark\:focus\:ring-blue-600:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(28 100 242 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-blue-800:focus {
+:is(.dark .dark\:focus\:ring-blue-700:focus) {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(26 86 219 / var(--tw-ring-opacity));
+}
+
+:is(.dark .dark\:focus\:ring-blue-800:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(30 66 159 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-gray-500:focus {
+:is(.dark .dark\:focus\:ring-gray-500:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(107 114 128 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-gray-600:focus {
+:is(.dark .dark\:focus\:ring-gray-600:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(75 85 99 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-gray-700:focus {
+:is(.dark .dark\:focus\:ring-gray-700:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(55 65 81 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-gray-800:focus {
+:is(.dark .dark\:focus\:ring-gray-800:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(31 41 55 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-green-500:focus {
+:is(.dark .dark\:focus\:ring-green-500:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(14 159 110 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-green-800:focus {
+:is(.dark .dark\:focus\:ring-green-700:focus) {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(4 108 78 / var(--tw-ring-opacity));
+}
+
+:is(.dark .dark\:focus\:ring-green-800:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(3 84 63 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-pink-800:focus {
+:is(.dark .dark\:focus\:ring-indigo-700:focus) {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(81 69 205 / var(--tw-ring-opacity));
+}
+
+:is(.dark .dark\:focus\:ring-pink-700:focus) {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(191 18 93 / var(--tw-ring-opacity));
+}
+
+:is(.dark .dark\:focus\:ring-pink-800:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(153 21 75 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-purple-800:focus {
+:is(.dark .dark\:focus\:ring-purple-800:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(85 33 181 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-purple-900:focus {
+:is(.dark .dark\:focus\:ring-purple-900:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(74 29 150 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-red-400:focus {
+:is(.dark .dark\:focus\:ring-red-400:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(249 128 128 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-red-500:focus {
+:is(.dark .dark\:focus\:ring-red-500:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(240 82 82 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-red-800:focus {
+:is(.dark .dark\:focus\:ring-red-700:focus) {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(200 30 30 / var(--tw-ring-opacity));
+}
+
+:is(.dark .dark\:focus\:ring-red-800:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(155 28 28 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-red-900:focus {
+:is(.dark .dark\:focus\:ring-red-900:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(119 29 29 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-teal-700:focus {
+:is(.dark .dark\:focus\:ring-teal-700:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(3 102 114 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-teal-800:focus {
+:is(.dark .dark\:focus\:ring-teal-800:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(5 80 92 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-yellow-500:focus {
+:is(.dark .dark\:focus\:ring-yellow-500:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(194 120 3 / var(--tw-ring-opacity));
}
-.dark .dark\:focus\:ring-yellow-900:focus {
+:is(.dark .dark\:focus\:ring-yellow-700:focus) {
+ --tw-ring-opacity: 1;
+ --tw-ring-color: rgb(142 75 16 / var(--tw-ring-opacity));
+}
+
+:is(.dark .dark\:focus\:ring-yellow-900:focus) {
--tw-ring-opacity: 1;
--tw-ring-color: rgb(99 49 18 / var(--tw-ring-opacity));
}
-.dark .disabled\:dark\:text-gray-500:disabled {
+:is(.dark .disabled\:dark\:text-gray-500):disabled {
--tw-text-opacity: 1;
color: rgb(107 114 128 / var(--tw-text-opacity));
}
-.dark .dark\:disabled\:hover\:bg-blue-600:hover:disabled {
+:is(.dark .dark\:disabled\:hover\:bg-blue-600:hover:disabled) {
--tw-bg-opacity: 1;
background-color: rgb(28 100 242 / var(--tw-bg-opacity));
}
-.dark .dark\:disabled\:hover\:bg-gray-800:hover:disabled {
+:is(.dark .dark\:disabled\:hover\:bg-gray-800:hover:disabled) {
--tw-bg-opacity: 1;
background-color: rgb(31 41 55 / var(--tw-bg-opacity));
}
-.dark .dark\:disabled\:hover\:bg-green-600:hover:disabled {
+:is(.dark .dark\:disabled\:hover\:bg-green-600:hover:disabled) {
--tw-bg-opacity: 1;
background-color: rgb(5 122 85 / var(--tw-bg-opacity));
}
-.dark .dark\:disabled\:hover\:bg-purple-600:hover:disabled {
+:is(.dark .dark\:disabled\:hover\:bg-purple-600:hover:disabled) {
--tw-bg-opacity: 1;
background-color: rgb(126 58 242 / var(--tw-bg-opacity));
}
-.dark .dark\:disabled\:hover\:bg-red-600:hover:disabled {
+:is(.dark .dark\:disabled\:hover\:bg-red-600:hover:disabled) {
--tw-bg-opacity: 1;
background-color: rgb(224 36 36 / var(--tw-bg-opacity));
}
-.dark .dark\:disabled\:hover\:bg-yellow-400:hover:disabled {
+:is(.dark .dark\:disabled\:hover\:bg-yellow-400:hover:disabled) {
--tw-bg-opacity: 1;
background-color: rgb(227 160 8 / var(--tw-bg-opacity));
}
-.dark .group:hover .dark\:group-hover\:bg-blue-300 {
+:is(.dark .group:hover .dark\:group-hover\:bg-blue-300) {
--tw-bg-opacity: 1;
background-color: rgb(164 202 254 / var(--tw-bg-opacity));
}
-.dark .group:hover .dark\:group-hover\:bg-gray-600 {
+:is(.dark .group:hover .dark\:group-hover\:bg-gray-500) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(107 114 128 / var(--tw-bg-opacity));
+}
+
+:is(.dark .group:hover .dark\:group-hover\:bg-gray-600) {
--tw-bg-opacity: 1;
background-color: rgb(75 85 99 / var(--tw-bg-opacity));
}
-.dark .group:hover .dark\:group-hover\:bg-gray-800\/60 {
+:is(.dark .group:hover .dark\:group-hover\:bg-gray-700) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(55 65 81 / var(--tw-bg-opacity));
+}
+
+:is(.dark .group:hover .dark\:group-hover\:bg-gray-800\/60) {
background-color: rgb(31 41 55 / 0.6);
}
-.dark .group:hover .dark\:group-hover\:bg-green-300 {
+:is(.dark .group:hover .dark\:group-hover\:bg-green-300) {
--tw-bg-opacity: 1;
background-color: rgb(132 225 188 / var(--tw-bg-opacity));
}
-.dark .group:hover .dark\:group-hover\:bg-indigo-300 {
+:is(.dark .group:hover .dark\:group-hover\:bg-indigo-300) {
--tw-bg-opacity: 1;
background-color: rgb(180 198 252 / var(--tw-bg-opacity));
}
-.dark .group:hover .dark\:group-hover\:bg-pink-300 {
+:is(.dark .group:hover .dark\:group-hover\:bg-pink-300) {
--tw-bg-opacity: 1;
background-color: rgb(248 180 217 / var(--tw-bg-opacity));
}
-.dark .group:hover .dark\:group-hover\:bg-purple-300 {
+:is(.dark .group:hover .dark\:group-hover\:bg-purple-300) {
--tw-bg-opacity: 1;
background-color: rgb(202 191 253 / var(--tw-bg-opacity));
}
-.dark .group:hover .dark\:group-hover\:bg-red-300 {
+:is(.dark .group:hover .dark\:group-hover\:bg-red-300) {
--tw-bg-opacity: 1;
background-color: rgb(248 180 180 / var(--tw-bg-opacity));
}
-.dark .group:hover .dark\:group-hover\:bg-yellow-300 {
+:is(.dark .group:hover .dark\:group-hover\:bg-teal-300) {
+ --tw-bg-opacity: 1;
+ background-color: rgb(126 220 226 / var(--tw-bg-opacity));
+}
+
+:is(.dark .group:hover .dark\:group-hover\:bg-yellow-300) {
--tw-bg-opacity: 1;
background-color: rgb(250 202 21 / var(--tw-bg-opacity));
}
-.dark .group:hover .dark\:group-hover\:text-white {
+:is(.dark .group:hover .dark\:group-hover\:text-white) {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
-.dark .group:focus .dark\:group-focus\:ring-gray-800\/70 {
+:is(.dark .group:focus .dark\:group-focus\:ring-gray-800\/70) {
--tw-ring-color: rgb(31 41 55 / 0.7);
}
@@ -4607,10 +5120,7 @@ input:checked + .toggle-bg {
@media (min-width: 768px) {
.md\:inset-0 {
- top: 0px;
- right: 0px;
- bottom: 0px;
- left: 0px;
+ inset: 0px;
}
.md\:mx-2 {
@@ -4658,6 +5168,10 @@ input:checked + .toggle-bg {
width: 12rem;
}
+ .md\:w-\[500px\] {
+ width: 500px;
+ }
+
.md\:w-auto {
width: auto;
}
@@ -4666,6 +5180,10 @@ input:checked + .toggle-bg {
max-width: 36rem;
}
+ .md\:flex-grow {
+ flex-grow: 1;
+ }
+
.md\:flex-row {
flex-direction: row;
}
@@ -4728,11 +5246,11 @@ input:checked + .toggle-bg {
color: rgb(26 86 219 / var(--tw-text-opacity));
}
- .dark .md\:dark\:hover\:bg-transparent:hover {
+ :is(.dark .md\:dark\:hover\:bg-transparent:hover) {
background-color: transparent;
}
- .dark .md\:dark\:hover\:text-white:hover {
+ :is(.dark .md\:dark\:hover\:text-white:hover) {
--tw-text-opacity: 1;
color: rgb(255 255 255 / var(--tw-text-opacity));
}
diff --git a/app/react/V2/Components/UI/Sidepanel.tsx b/app/react/V2/Components/UI/Sidepanel.tsx
new file mode 100644
index 0000000000..4c2b20f4e4
--- /dev/null
+++ b/app/react/V2/Components/UI/Sidepanel.tsx
@@ -0,0 +1,83 @@
+import React from 'react';
+import { Transition } from '@headlessui/react';
+import { useParams } from 'react-router-dom';
+import { XMarkIcon } from '@heroicons/react/20/solid';
+import { availableLanguages } from 'shared/languagesList';
+import { Translate } from 'app/I18N';
+
+interface SidePanelProps {
+ children: JSX.Element | React.ReactNode;
+ isOpen: boolean;
+ closeSidepanelFunction: () => any;
+ title?: React.ReactNode | string;
+ withOverlay?: boolean;
+}
+
+const sidepanelHeader = (closeSidepanelFunction: () => any, title?: React.ReactNode) => (
+
+
{title}
+
+
+ Close
+
+
+
+
+);
+
+const Sidepanel = ({
+ isOpen = false,
+ closeSidepanelFunction,
+ title,
+ withOverlay,
+ children,
+}: SidePanelProps) => {
+ const { lang: languageKey } = useParams();
+ const isRigthToLeft = availableLanguages.find(language => language.key === languageKey)?.rtl;
+ const transition = isRigthToLeft ? '-translate-x-[500px]' : '-translate-x-[-500px]';
+
+ if (withOverlay) {
+ return (
+
+
+
+ {sidepanelHeader(closeSidepanelFunction, title)}
+ {children}
+
+
+ );
+ }
+
+ return (
+
+ {sidepanelHeader(closeSidepanelFunction, title)}
+ {children}
+
+ );
+};
+
+export { Sidepanel };
diff --git a/app/react/V2/Components/UI/index.ts b/app/react/V2/Components/UI/index.ts
index 0e02c0a32a..a978b99f95 100644
--- a/app/react/V2/Components/UI/index.ts
+++ b/app/react/V2/Components/UI/index.ts
@@ -7,6 +7,7 @@ import { ToggleButton } from './ToggleButton';
import { InputField } from './InputField';
import { ModalContainer } from './ModalContainer';
import { NotificationsContainer } from './NotificationsContainer';
+import { Sidepanel } from './Sidepanel';
export {
Button,
@@ -18,4 +19,5 @@ export {
InputField,
ModalContainer,
NotificationsContainer,
+ Sidepanel,
};
diff --git a/app/react/V2/Components/UI/specs/Sidepanel.cy.tsx b/app/react/V2/Components/UI/specs/Sidepanel.cy.tsx
new file mode 100644
index 0000000000..e83230ada8
--- /dev/null
+++ b/app/react/V2/Components/UI/specs/Sidepanel.cy.tsx
@@ -0,0 +1,43 @@
+import React from 'react';
+import { mount } from '@cypress/react18';
+import { composeStories } from '@storybook/testing-react';
+import * as stories from 'app/stories/Sidepanel.stories';
+
+const { Basic } = composeStories(stories);
+
+describe('Sidepanel', () => {
+ it('should open and close the sidepanel using the button on the page', () => {
+ mount( );
+ cy.contains('button', 'Open/Close sidepanel').click();
+ cy.contains('h1', 'My sidepanel').should('exist');
+
+ cy.contains('button', 'Open/Close sidepanel').click();
+ cy.contains('h1', 'My sidepanel').should('not.exist');
+ });
+
+ it('shuld close the sidepanel using the button on top of the sidepanel', () => {
+ mount( );
+ cy.contains('button', 'Open/Close sidepanel').click();
+ cy.get('[data-testid="Close sidepanel"]').click();
+ cy.contains('h1', 'My sidepanel').should('not.exist');
+ });
+
+ describe('with overlay', () => {
+ beforeEach(() => {
+ mount( );
+ cy.contains('button', 'Open/Close sidepanel').click();
+ cy.contains('h1', 'My sidepanel').should('exist');
+ });
+
+ it('should not allow to click items under the overlay', done => {
+ cy.contains('button', 'Open/Close sidepanel').shouldNotBeActionable(done);
+ cy.contains('a', 'Proin dapibus luctus purus id viverra.').shouldNotBeActionable(done);
+ });
+
+ it('should close the sidepanel when clicking outside', () => {
+ cy.get('.bg-gray-900').click();
+ cy.get('.bg-gray-900').should('not.exist');
+ cy.contains('h1', 'My sidepanel').should('not.exist');
+ });
+ });
+});
diff --git a/app/react/stories/Sidepanel.stories.tsx b/app/react/stories/Sidepanel.stories.tsx
new file mode 100644
index 0000000000..bbb6968571
--- /dev/null
+++ b/app/react/stories/Sidepanel.stories.tsx
@@ -0,0 +1,91 @@
+import React, { useState } from 'react';
+import { ComponentStory, ComponentMeta } from '@storybook/react';
+import { Provider } from 'react-redux';
+import { LEGACY_createStore as createStore } from 'V2/shared/testingHelpers';
+import { Sidepanel } from 'V2/Components/UI';
+
+const SidepanelStory = {
+ title: 'Components/Sidepanel',
+ component: Sidepanel,
+};
+
+const SidepanelContent = () => The content of my sidepanel
;
+
+const Template: ComponentStory = args => {
+ const [showSidepanel, setShowSidepanel] = useState(false);
+
+ return (
+
+
+
+
+ This a content title
+
+
+ Lorem ipsum dolor sit amet consectetur adipisicing elit.
+
+
+
+ Fusce id mi eu mauris bibendum dignissim nec in sem. Sed ultrices varius mauris quis
+ placerat. Donec imperdiet sodales diam sed imperdiet. Aenean a nisl venenatis lectus
+ mattis pellentesque. Duis fermentum ante a ultricies feugiat. Proin dapibus luctus
+ purus id viverra. Aenean a aliquet nibh. Aenean facilisis justo quis sem auctor, nec
+ mollis tortor placerat. Cras eget enim mollis, mollis risus gravida, pharetra risus.
+ Mauris dapibus malesuada mi, quis ornare felis imperdiet eget. Donec sed quam non
+ dolor sodales hendrerit. Aenean suscipit, velit sed laoreet cursus, ante odio
+ tristique lectus, a porta eros felis eu sem. Curabitur eu gravida dolor. Ut iaculis
+ lacus vitae libero viverra interdum. Phasellus ac est consectetur, malesuada nisl nec,
+ blandit lorem.
+
+
+
+ Fusce id mi eu mauris bibendum dignissim nec in sem. Sed ultrices varius mauris quis
+ placerat. Donec imperdiet sodales diam sed imperdiet. Aenean a nisl venenatis lectus
+ mattis pellentesque. Duis fermentum ante a ultricies feugiat.
+
+ Proin dapibus luctus purus id viverra.
+
+ Aenean a aliquet nibh. Aenean facilisis justo quis sem auctor, nec mollis tortor
+ placerat. Cras eget enim mollis, mollis risus gravida, pharetra risus. Mauris dapibus
+ malesuada mi, quis ornare felis imperdiet eget. Donec sed quam non dolor sodales
+ hendrerit. Aenean suscipit, velit sed laoreet cursus, ante odio tristique lectus, a
+ porta eros felis eu sem. Curabitur eu gravida dolor. Ut iaculis lacus vitae libero
+ viverra interdum. Phasellus ac est consectetur, malesuada nisl nec, blandit lorem.
+
+
+
+
+ setShowSidepanel(!showSidepanel)}
+ >
+ Open/Close sidepanel
+
+
+
setShowSidepanel(false)}
+ >
+
+
+
+
+
+ );
+};
+
+const Basic = Template.bind({});
+
+Basic.args = { withOverlay: false, title: 'My sidepanel' };
+
+export { Basic };
+
+export default SidepanelStory as ComponentMeta;
diff --git a/cypress/cypress.d.ts b/cypress/cypress.d.ts
index 96e4096e57..8a791978bc 100644
--- a/cypress/cypress.d.ts
+++ b/cypress/cypress.d.ts
@@ -13,6 +13,12 @@ declare global {
interface Chainable {
selection(subject: string, fn: any): Chainable;
setSelection(subject: string, query: string | object, endQuery: any[]): Chainable;
+ shouldNotBeActionable(
+ done: Mocha.Done,
+ clickOptions?: Partial & {
+ position?: Cypress.PositionType;
+ }
+ ): Chainable;
// setCursor(subject: string, options?: Partial): Chainable;
// setCursorBefore(subject: string, options?: Partial): Chainable;
// setCursorAfter(subject: string, options?: Partial): Chainable;
diff --git a/cypress/support/commands.js b/cypress/support/commands.js
index 2cf2e7d64f..2776d69cda 100644
--- a/cypress/support/commands.js
+++ b/cypress/support/commands.js
@@ -112,6 +112,27 @@ Cypress.Commands.add('setSelection', { prevSubject: true }, (subject, query, end
})
);
+//Sourced from https://github.com/cypress-io/cypress/discussions/21150#discussioncomment-2620947
+Cypress.Commands.add(
+ 'shouldNotBeActionable',
+ { prevSubject: 'element' },
+ (subject, done, { position, timeout = 100, ...clickOptions } = {}) => {
+ cy.once('fail', err => {
+ expect(err.message).to.include('`cy.click()` failed because this element');
+ expect(err.message).to.include('is being covered by another element');
+ done();
+ });
+
+ const chainable = position
+ ? cy.wrap(subject).click(position, { timeout, ...clickOptions })
+ : cy.wrap(subject).click({ timeout, ...clickOptions });
+
+ chainable.then(() =>
+ done(new Error('Expected element NOT to be clickable, but click() succeeded'))
+ );
+ }
+);
+
Cypress.on('window:before:load', window => {
window.document.head.insertAdjacentHTML(
'beforeend',
diff --git a/package.json b/package.json
index 7dac9c9dbe..7232e05ca1 100644
--- a/package.json
+++ b/package.json
@@ -98,6 +98,7 @@
"@fortawesome/free-solid-svg-icons": "^5.14.0",
"@fortawesome/react-fontawesome": "^0.2.0",
"@googlemaps/js-api-loader": "^1.15.1",
+ "@headlessui/react": "^1.7.14",
"@heroicons/react": "^2.0.16",
"@hookform/error-message": "^2.0.1",
"@loadable/component": "^5.13.1",
diff --git a/yarn.lock b/yarn.lock
index 0d8a11c8e0..176ae9e00e 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2694,6 +2694,13 @@
dependencies:
"@hapi/hoek" "^9.0.0"
+"@headlessui/react@^1.7.14":
+ version "1.7.14"
+ resolved "https://registry.yarnpkg.com/@headlessui/react/-/react-1.7.14.tgz#75f19552c535113640fe8a3a40e71474f49e89c9"
+ integrity sha512-znzdq9PG8rkwcu9oQ2FwIy0ZFtP9Z7ycS+BAqJ3R5EIqC/0bJGvhT7193rFf+45i9nnPsYvCQVW4V/bB9Xc+gA==
+ dependencies:
+ client-only "^0.0.1"
+
"@heroicons/react@^2.0.16":
version "2.0.16"
resolved "https://registry.yarnpkg.com/@heroicons/react/-/react-2.0.16.tgz#562883c19ba2690c83380b42a9a5cce39dcbdb4a"
@@ -8298,6 +8305,11 @@ cli-width@^3.0.0:
resolved "https://registry.npmjs.org/cli-width/-/cli-width-3.0.0.tgz"
integrity sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==
+client-only@^0.0.1:
+ version "0.0.1"
+ resolved "https://registry.yarnpkg.com/client-only/-/client-only-0.0.1.tgz#38bba5d403c41ab150bff64a95c85013cf73bca1"
+ integrity sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==
+
cliui@^7.0.2:
version "7.0.4"
resolved "https://registry.yarnpkg.com/cliui/-/cliui-7.0.4.tgz#a0265ee655476fc807aea9df3df8df7783808b4f"