afront 1.0.22 → 1.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.babelrc +13 -13
- package/.env +1 -1
- package/LICENSE +21 -21
- package/README.md +94 -94
- package/build-prod/index.html +1 -1
- package/build-prod/manifest.json +25 -25
- package/build-prod/offline.html +1023 -1023
- package/build-prod/robots.txt +3 -3
- package/build-prod-static/index.html +1 -1
- package/build-prod-static/manifest.json +25 -25
- package/build-prod-static/offline.html +1023 -1023
- package/build-prod-static/robots.txt +3 -3
- package/install.js +415 -415
- package/package.json +102 -95
- package/server.js +40 -40
- package/src/ARoutes/AFRoutes.js +28 -28
- package/src/Api/api.config.js +266 -266
- package/src/Api/login.service.js +44 -44
- package/src/App.js +28 -28
- package/src/Components/Background/MeshGradient.js +18 -18
- package/src/Components/Footer/Footer.js +108 -108
- package/src/Components/Header/Header.js +149 -149
- package/src/Components/Loading/LoadingIndicator.js +12 -12
- package/src/Components/Loading/LoadingIndicator.module.css +34 -34
- package/src/Components/Loading/LoadingSpinner.js +27 -27
- package/src/Components/Loading/LoadingSpinner.module.css +100 -100
- package/src/Components/RequireAuth.js +29 -29
- package/src/LoadingFallback.js +13 -13
- package/src/PageNotFound.js +19 -19
- package/src/Pages/Home.js +50 -50
- package/src/Pages/Signup.js +230 -230
- package/src/Pages/Support.js +68 -68
- package/src/Routes/ARoutes.js +66 -66
- package/src/Routes/ARoutesStatic.js +83 -83
- package/src/Static/appStatic.js +16 -16
- package/src/Static/indexStatic.js +13 -13
- package/src/Style/App.module.css +11 -11
- package/src/Style/MeshGradient.module.css +130 -130
- package/src/Style/PageNotFound.module.css +37 -37
- package/src/Style/Style.module.css +686 -686
- package/src/Style/Support.module.css +185 -185
- package/src/Utils/LoadingContext.js +5 -5
- package/src/index.js +25 -25
- package/webpack.build-prod.js +141 -140
- package/webpack.dev.js +127 -127
- package/webpack.prod.js +148 -147
- package/webpack.ssr.prod.js +97 -97
package/src/Routes/ARoutes.js
CHANGED
|
@@ -1,66 +1,66 @@
|
|
|
1
|
-
import React, { Suspense, useContext } from "react";
|
|
2
|
-
import { Route, Routes } from "react-router";
|
|
3
|
-
import routes from "../ARoutes/AFRoutes.js";
|
|
4
|
-
import RequireAuth from "../Components/RequireAuth.js";
|
|
5
|
-
import LoadingIndicator from "../Components/Loading/LoadingIndicator.js";
|
|
6
|
-
import Header from "../Components/Header/Header.js";
|
|
7
|
-
import Footer from "../Components/Footer/Footer.js";
|
|
8
|
-
import LoadingContext from "../Utils/LoadingContext.js";
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
const Layout = ({ children }) => (
|
|
12
|
-
<>
|
|
13
|
-
<Header />
|
|
14
|
-
{children}
|
|
15
|
-
<Footer />
|
|
16
|
-
</>
|
|
17
|
-
);
|
|
18
|
-
|
|
19
|
-
const ARoutes = ({ context }) => {
|
|
20
|
-
const { setLoading } = useContext(LoadingContext);
|
|
21
|
-
return (
|
|
22
|
-
<Routes>
|
|
23
|
-
{/* Pages Routes */}
|
|
24
|
-
{routes.map(({ path, element: Element, withHeaderFooter, protected: isProtected }, index) => (
|
|
25
|
-
<Route
|
|
26
|
-
key={index}
|
|
27
|
-
path={path}
|
|
28
|
-
element={
|
|
29
|
-
withHeaderFooter ? (
|
|
30
|
-
<Layout>
|
|
31
|
-
<Suspense
|
|
32
|
-
fallback={<LoadingIndicator />}
|
|
33
|
-
onPromiseStart={() => setLoading(true)}
|
|
34
|
-
onPromiseEnd={() => setLoading(false)}>
|
|
35
|
-
{isProtected ? (
|
|
36
|
-
<RequireAuth>
|
|
37
|
-
<Element context={context} />
|
|
38
|
-
</RequireAuth>
|
|
39
|
-
) : (
|
|
40
|
-
<Element context={context} />
|
|
41
|
-
)}
|
|
42
|
-
</Suspense>
|
|
43
|
-
</Layout>
|
|
44
|
-
) : (
|
|
45
|
-
<Suspense
|
|
46
|
-
fallback={<LoadingIndicator />}
|
|
47
|
-
onPromiseStart={() => setLoading(true)}
|
|
48
|
-
onPromiseEnd={() => setLoading(false)}>
|
|
49
|
-
{isProtected ? (
|
|
50
|
-
<RequireAuth>
|
|
51
|
-
<Element context={context} />
|
|
52
|
-
</RequireAuth>
|
|
53
|
-
) : (
|
|
54
|
-
<Element context={context} />
|
|
55
|
-
)}
|
|
56
|
-
</Suspense>
|
|
57
|
-
)
|
|
58
|
-
}
|
|
59
|
-
/>
|
|
60
|
-
))}
|
|
61
|
-
{/* Pages Routes */}
|
|
62
|
-
</Routes>
|
|
63
|
-
);
|
|
64
|
-
};
|
|
65
|
-
|
|
66
|
-
export default ARoutes;
|
|
1
|
+
import React, { Suspense, useContext } from "react";
|
|
2
|
+
import { Route, Routes } from "react-router";
|
|
3
|
+
import routes from "../ARoutes/AFRoutes.js";
|
|
4
|
+
import RequireAuth from "../Components/RequireAuth.js";
|
|
5
|
+
import LoadingIndicator from "../Components/Loading/LoadingIndicator.js";
|
|
6
|
+
import Header from "../Components/Header/Header.js";
|
|
7
|
+
import Footer from "../Components/Footer/Footer.js";
|
|
8
|
+
import LoadingContext from "../Utils/LoadingContext.js";
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
const Layout = ({ children }) => (
|
|
12
|
+
<>
|
|
13
|
+
<Header />
|
|
14
|
+
{children}
|
|
15
|
+
<Footer />
|
|
16
|
+
</>
|
|
17
|
+
);
|
|
18
|
+
|
|
19
|
+
const ARoutes = ({ context }) => {
|
|
20
|
+
const { setLoading } = useContext(LoadingContext);
|
|
21
|
+
return (
|
|
22
|
+
<Routes>
|
|
23
|
+
{/* Pages Routes */}
|
|
24
|
+
{routes.map(({ path, element: Element, withHeaderFooter, protected: isProtected }, index) => (
|
|
25
|
+
<Route
|
|
26
|
+
key={index}
|
|
27
|
+
path={path}
|
|
28
|
+
element={
|
|
29
|
+
withHeaderFooter ? (
|
|
30
|
+
<Layout>
|
|
31
|
+
<Suspense
|
|
32
|
+
fallback={<LoadingIndicator />}
|
|
33
|
+
onPromiseStart={() => setLoading(true)}
|
|
34
|
+
onPromiseEnd={() => setLoading(false)}>
|
|
35
|
+
{isProtected ? (
|
|
36
|
+
<RequireAuth>
|
|
37
|
+
<Element context={context} />
|
|
38
|
+
</RequireAuth>
|
|
39
|
+
) : (
|
|
40
|
+
<Element context={context} />
|
|
41
|
+
)}
|
|
42
|
+
</Suspense>
|
|
43
|
+
</Layout>
|
|
44
|
+
) : (
|
|
45
|
+
<Suspense
|
|
46
|
+
fallback={<LoadingIndicator />}
|
|
47
|
+
onPromiseStart={() => setLoading(true)}
|
|
48
|
+
onPromiseEnd={() => setLoading(false)}>
|
|
49
|
+
{isProtected ? (
|
|
50
|
+
<RequireAuth>
|
|
51
|
+
<Element context={context} />
|
|
52
|
+
</RequireAuth>
|
|
53
|
+
) : (
|
|
54
|
+
<Element context={context} />
|
|
55
|
+
)}
|
|
56
|
+
</Suspense>
|
|
57
|
+
)
|
|
58
|
+
}
|
|
59
|
+
/>
|
|
60
|
+
))}
|
|
61
|
+
{/* Pages Routes */}
|
|
62
|
+
</Routes>
|
|
63
|
+
);
|
|
64
|
+
};
|
|
65
|
+
|
|
66
|
+
export default ARoutes;
|
|
@@ -1,83 +1,83 @@
|
|
|
1
|
-
/*
|
|
2
|
-
* File Name: ARoutesStatic.js
|
|
3
|
-
*
|
|
4
|
-
* Description: This file handles the logic for Handling Header and Footer to be visible or not for the every specific page for single page application (Static Page).
|
|
5
|
-
*
|
|
6
|
-
*
|
|
7
|
-
* Author: Mark Sea.
|
|
8
|
-
*
|
|
9
|
-
* Created: 14/Dec/2024
|
|
10
|
-
*
|
|
11
|
-
* Dependencies: {react-router}
|
|
12
|
-
*
|
|
13
|
-
* Assumptions: This file is used in appStatic.js
|
|
14
|
-
*/
|
|
15
|
-
|
|
16
|
-
import React, { Suspense, useContext } from "react";
|
|
17
|
-
import { Route, Routes } from "react-router";
|
|
18
|
-
import routes from "../ARoutes/AFRoutes.js";
|
|
19
|
-
import RequireAuth from "../Components/RequireAuth.js";
|
|
20
|
-
import LoadingIndicator from "../Components/Loading/LoadingIndicator.js";
|
|
21
|
-
import Header from "../Components/Header/Header.js";
|
|
22
|
-
import Footer from "../Components/Footer/Footer.js";
|
|
23
|
-
import LoadingContext from "../Utils/LoadingContext.js";
|
|
24
|
-
|
|
25
|
-
const Layout = ({ children }) => (
|
|
26
|
-
<>
|
|
27
|
-
<Header />
|
|
28
|
-
{children}
|
|
29
|
-
<Footer />
|
|
30
|
-
</>
|
|
31
|
-
);
|
|
32
|
-
|
|
33
|
-
const ARoutesStatic = ({ context }) => {
|
|
34
|
-
const { setLoading } = useContext(LoadingContext);
|
|
35
|
-
return (
|
|
36
|
-
<Routes>
|
|
37
|
-
{routes.map(
|
|
38
|
-
(
|
|
39
|
-
{ path, element: Element, withHeaderFooter, protected: isProtected },
|
|
40
|
-
index
|
|
41
|
-
) => (
|
|
42
|
-
<Route
|
|
43
|
-
key={index}
|
|
44
|
-
path={path}
|
|
45
|
-
element={
|
|
46
|
-
withHeaderFooter ? (
|
|
47
|
-
<Layout>
|
|
48
|
-
<Suspense
|
|
49
|
-
fallback={<LoadingIndicator />}
|
|
50
|
-
onPromiseStart={() => setLoading(true)}
|
|
51
|
-
onPromiseEnd={() => setLoading(false)}>
|
|
52
|
-
{isProtected ? (
|
|
53
|
-
<RequireAuth>
|
|
54
|
-
<Element context={context} />
|
|
55
|
-
</RequireAuth>
|
|
56
|
-
) : (
|
|
57
|
-
<Element context={context} />
|
|
58
|
-
)}
|
|
59
|
-
</Suspense>
|
|
60
|
-
</Layout>
|
|
61
|
-
) : (
|
|
62
|
-
<Suspense
|
|
63
|
-
fallback={<LoadingIndicator />}
|
|
64
|
-
onPromiseStart={() => setLoading(true)}
|
|
65
|
-
onPromiseEnd={() => setLoading(false)}>
|
|
66
|
-
{isProtected ? (
|
|
67
|
-
<RequireAuth>
|
|
68
|
-
<Element context={context} />
|
|
69
|
-
</RequireAuth>
|
|
70
|
-
) : (
|
|
71
|
-
<Element context={context} />
|
|
72
|
-
)}
|
|
73
|
-
</Suspense>
|
|
74
|
-
)
|
|
75
|
-
}
|
|
76
|
-
/>
|
|
77
|
-
)
|
|
78
|
-
)}
|
|
79
|
-
</Routes>
|
|
80
|
-
);
|
|
81
|
-
};
|
|
82
|
-
|
|
83
|
-
export default ARoutesStatic;
|
|
1
|
+
/*
|
|
2
|
+
* File Name: ARoutesStatic.js
|
|
3
|
+
*
|
|
4
|
+
* Description: This file handles the logic for Handling Header and Footer to be visible or not for the every specific page for single page application (Static Page).
|
|
5
|
+
*
|
|
6
|
+
*
|
|
7
|
+
* Author: Mark Sea.
|
|
8
|
+
*
|
|
9
|
+
* Created: 14/Dec/2024
|
|
10
|
+
*
|
|
11
|
+
* Dependencies: {react-router}
|
|
12
|
+
*
|
|
13
|
+
* Assumptions: This file is used in appStatic.js
|
|
14
|
+
*/
|
|
15
|
+
|
|
16
|
+
import React, { Suspense, useContext } from "react";
|
|
17
|
+
import { Route, Routes } from "react-router";
|
|
18
|
+
import routes from "../ARoutes/AFRoutes.js";
|
|
19
|
+
import RequireAuth from "../Components/RequireAuth.js";
|
|
20
|
+
import LoadingIndicator from "../Components/Loading/LoadingIndicator.js";
|
|
21
|
+
import Header from "../Components/Header/Header.js";
|
|
22
|
+
import Footer from "../Components/Footer/Footer.js";
|
|
23
|
+
import LoadingContext from "../Utils/LoadingContext.js";
|
|
24
|
+
|
|
25
|
+
const Layout = ({ children }) => (
|
|
26
|
+
<>
|
|
27
|
+
<Header />
|
|
28
|
+
{children}
|
|
29
|
+
<Footer />
|
|
30
|
+
</>
|
|
31
|
+
);
|
|
32
|
+
|
|
33
|
+
const ARoutesStatic = ({ context }) => {
|
|
34
|
+
const { setLoading } = useContext(LoadingContext);
|
|
35
|
+
return (
|
|
36
|
+
<Routes>
|
|
37
|
+
{routes.map(
|
|
38
|
+
(
|
|
39
|
+
{ path, element: Element, withHeaderFooter, protected: isProtected },
|
|
40
|
+
index
|
|
41
|
+
) => (
|
|
42
|
+
<Route
|
|
43
|
+
key={index}
|
|
44
|
+
path={path}
|
|
45
|
+
element={
|
|
46
|
+
withHeaderFooter ? (
|
|
47
|
+
<Layout>
|
|
48
|
+
<Suspense
|
|
49
|
+
fallback={<LoadingIndicator />}
|
|
50
|
+
onPromiseStart={() => setLoading(true)}
|
|
51
|
+
onPromiseEnd={() => setLoading(false)}>
|
|
52
|
+
{isProtected ? (
|
|
53
|
+
<RequireAuth>
|
|
54
|
+
<Element context={context} />
|
|
55
|
+
</RequireAuth>
|
|
56
|
+
) : (
|
|
57
|
+
<Element context={context} />
|
|
58
|
+
)}
|
|
59
|
+
</Suspense>
|
|
60
|
+
</Layout>
|
|
61
|
+
) : (
|
|
62
|
+
<Suspense
|
|
63
|
+
fallback={<LoadingIndicator />}
|
|
64
|
+
onPromiseStart={() => setLoading(true)}
|
|
65
|
+
onPromiseEnd={() => setLoading(false)}>
|
|
66
|
+
{isProtected ? (
|
|
67
|
+
<RequireAuth>
|
|
68
|
+
<Element context={context} />
|
|
69
|
+
</RequireAuth>
|
|
70
|
+
) : (
|
|
71
|
+
<Element context={context} />
|
|
72
|
+
)}
|
|
73
|
+
</Suspense>
|
|
74
|
+
)
|
|
75
|
+
}
|
|
76
|
+
/>
|
|
77
|
+
)
|
|
78
|
+
)}
|
|
79
|
+
</Routes>
|
|
80
|
+
);
|
|
81
|
+
};
|
|
82
|
+
|
|
83
|
+
export default ARoutesStatic;
|
package/src/Static/appStatic.js
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import React, { useState } from "react";
|
|
2
|
-
import ARoutesStatic from "../Routes/ARoutesStatic.js";
|
|
3
|
-
import LoadingContext from "../Utils/LoadingContext.js";
|
|
4
|
-
import LoadingIndicator from "../Components/Loading/LoadingIndicator.js";
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
function appStatic({ context }) {
|
|
8
|
-
const [loading, setLoading] = useState(false);
|
|
9
|
-
return (
|
|
10
|
-
<LoadingContext.Provider value={{ loading, setLoading }}>
|
|
11
|
-
{loading && <LoadingIndicator />}
|
|
12
|
-
<ARoutesStatic context={context} />
|
|
13
|
-
</LoadingContext.Provider>
|
|
14
|
-
);
|
|
15
|
-
}
|
|
16
|
-
export default appStatic;
|
|
1
|
+
import React, { useState } from "react";
|
|
2
|
+
import ARoutesStatic from "../Routes/ARoutesStatic.js";
|
|
3
|
+
import LoadingContext from "../Utils/LoadingContext.js";
|
|
4
|
+
import LoadingIndicator from "../Components/Loading/LoadingIndicator.js";
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
function appStatic({ context }) {
|
|
8
|
+
const [loading, setLoading] = useState(false);
|
|
9
|
+
return (
|
|
10
|
+
<LoadingContext.Provider value={{ loading, setLoading }}>
|
|
11
|
+
{loading && <LoadingIndicator />}
|
|
12
|
+
<ARoutesStatic context={context} />
|
|
13
|
+
</LoadingContext.Provider>
|
|
14
|
+
);
|
|
15
|
+
}
|
|
16
|
+
export default appStatic;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
|
-
import React from "react";
|
|
2
|
-
import ReactDOM from "react-dom/client";
|
|
3
|
-
import { BrowserRouter } from "react-router";
|
|
4
|
-
import App from "./appStatic";
|
|
5
|
-
|
|
6
|
-
const asggen = ReactDOM.createRoot(document.getElementById("asggen"));
|
|
7
|
-
asggen.render(
|
|
8
|
-
<React.StrictMode>
|
|
9
|
-
<BrowserRouter>
|
|
10
|
-
<App />
|
|
11
|
-
</BrowserRouter>
|
|
12
|
-
</React.StrictMode>
|
|
13
|
-
);
|
|
1
|
+
import React from "react";
|
|
2
|
+
import ReactDOM from "react-dom/client";
|
|
3
|
+
import { BrowserRouter } from "react-router";
|
|
4
|
+
import App from "./appStatic";
|
|
5
|
+
|
|
6
|
+
const asggen = ReactDOM.createRoot(document.getElementById("asggen"));
|
|
7
|
+
asggen.render(
|
|
8
|
+
<React.StrictMode>
|
|
9
|
+
<BrowserRouter>
|
|
10
|
+
<App />
|
|
11
|
+
</BrowserRouter>
|
|
12
|
+
</React.StrictMode>
|
|
13
|
+
);
|
package/src/Style/App.module.css
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
.loadingContainer {
|
|
2
|
-
display: flex;
|
|
3
|
-
justify-content: center;
|
|
4
|
-
align-items: center;
|
|
5
|
-
height: 100vh;
|
|
6
|
-
}
|
|
7
|
-
|
|
8
|
-
.loadingLogo {
|
|
9
|
-
width: 150px;
|
|
10
|
-
height: auto;
|
|
11
|
-
}
|
|
1
|
+
.loadingContainer {
|
|
2
|
+
display: flex;
|
|
3
|
+
justify-content: center;
|
|
4
|
+
align-items: center;
|
|
5
|
+
height: 100vh;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
.loadingLogo {
|
|
9
|
+
width: 150px;
|
|
10
|
+
height: auto;
|
|
11
|
+
}
|
|
@@ -1,130 +1,130 @@
|
|
|
1
|
-
.gradientWrap {
|
|
2
|
-
overflow: hidden;
|
|
3
|
-
position: relative;
|
|
4
|
-
width: 100%;
|
|
5
|
-
background-color: rgba(var(--light), .2);
|
|
6
|
-
-webkit-backdrop-filter: blur(10px);
|
|
7
|
-
backdrop-filter: blur(10px);
|
|
8
|
-
}
|
|
9
|
-
|
|
10
|
-
.meshgradient .color {
|
|
11
|
-
width: 100%;
|
|
12
|
-
height: 100%;
|
|
13
|
-
display: flex;
|
|
14
|
-
align-items: center;
|
|
15
|
-
transform: scale(3) rotate(0deg);
|
|
16
|
-
top: 0;
|
|
17
|
-
bottom: 0;
|
|
18
|
-
left: 0;
|
|
19
|
-
right: 0;
|
|
20
|
-
position: absolute;
|
|
21
|
-
margin: auto;
|
|
22
|
-
background-repeat: no-repeat;
|
|
23
|
-
mix-blend-mode: overlay;
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
.c1 {
|
|
27
|
-
background: radial-gradient(#dfa39b 25%, transparent 50%);
|
|
28
|
-
background-size: 60% 80%;
|
|
29
|
-
background-position: 0 0;
|
|
30
|
-
animation: c1 8s infinite linear;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
.c2 {
|
|
34
|
-
background: radial-gradient(#aa8de3 25%, transparent 50%);
|
|
35
|
-
background-size: 70% 80%;
|
|
36
|
-
background-position: 0 100%;
|
|
37
|
-
animation: c2 10s infinite linear;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
.c3 {
|
|
41
|
-
background: radial-gradient(#d1a0c4 25%, transparent 50%);
|
|
42
|
-
background-size: 80% 80%;
|
|
43
|
-
background-position: 50% 0;
|
|
44
|
-
animation: c3 5s infinite linear;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
.c4 {
|
|
48
|
-
background: radial-gradient(#52bce9 25%, transparent 50%);
|
|
49
|
-
background-size: 80% 80%;
|
|
50
|
-
background-position: 50% 100%;
|
|
51
|
-
animation: c4 6s infinite linear;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
/* Updated animations with more breakpoints */
|
|
55
|
-
@keyframes c1 {
|
|
56
|
-
25% {
|
|
57
|
-
background-size: 70% 70%;
|
|
58
|
-
background-position: 25% 50%;
|
|
59
|
-
transform: scale(3) rotate(-45deg);
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
50% {
|
|
63
|
-
background-size: 80% 80%;
|
|
64
|
-
background-position: 50% 100%;
|
|
65
|
-
transform: scale(3) rotate(-75deg);
|
|
66
|
-
}
|
|
67
|
-
|
|
68
|
-
75% {
|
|
69
|
-
background-size: 60% 60%;
|
|
70
|
-
background-position: 75% 50%;
|
|
71
|
-
transform: scale(3) rotate(-30deg);
|
|
72
|
-
}
|
|
73
|
-
}
|
|
74
|
-
|
|
75
|
-
@keyframes c2 {
|
|
76
|
-
25% {
|
|
77
|
-
background-size: 60% 60%;
|
|
78
|
-
background-position: 25% 0;
|
|
79
|
-
transform: scale(3) rotate(45deg);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
50% {
|
|
83
|
-
background-size: 80% 80%;
|
|
84
|
-
background-position: 50% 0;
|
|
85
|
-
transform: scale(3) rotate(90deg);
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
75% {
|
|
89
|
-
background-size: 70% 70%;
|
|
90
|
-
background-position: 75% 0;
|
|
91
|
-
transform: scale(3) rotate(135deg);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
@keyframes c3 {
|
|
96
|
-
25% {
|
|
97
|
-
background-size: 90% 90%;
|
|
98
|
-
background-position: 50% 50%;
|
|
99
|
-
transform: scale(3) rotate(-15deg);
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
50% {
|
|
103
|
-
background-size: 70% 80%;
|
|
104
|
-
background-position: 0 100%;
|
|
105
|
-
transform: scale(3) rotate(8deg);
|
|
106
|
-
}
|
|
107
|
-
|
|
108
|
-
75% {
|
|
109
|
-
background-size: 60% 70%;
|
|
110
|
-
background-position: 50% 50%;
|
|
111
|
-
transform: scale(3) rotate(-10deg);
|
|
112
|
-
}
|
|
113
|
-
}
|
|
114
|
-
|
|
115
|
-
@keyframes c4 {
|
|
116
|
-
25% {
|
|
117
|
-
background-position: 100% 0;
|
|
118
|
-
transform: scale(3) rotate(30deg);
|
|
119
|
-
}
|
|
120
|
-
|
|
121
|
-
50% {
|
|
122
|
-
background-position: 0 0;
|
|
123
|
-
transform: scale(3) rotate(-36deg);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
75% {
|
|
127
|
-
background-position: 50% 50%;
|
|
128
|
-
transform: scale(3) rotate(0deg);
|
|
129
|
-
}
|
|
130
|
-
}
|
|
1
|
+
.gradientWrap {
|
|
2
|
+
overflow: hidden;
|
|
3
|
+
position: relative;
|
|
4
|
+
width: 100%;
|
|
5
|
+
background-color: rgba(var(--light), .2);
|
|
6
|
+
-webkit-backdrop-filter: blur(10px);
|
|
7
|
+
backdrop-filter: blur(10px);
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
.meshgradient .color {
|
|
11
|
+
width: 100%;
|
|
12
|
+
height: 100%;
|
|
13
|
+
display: flex;
|
|
14
|
+
align-items: center;
|
|
15
|
+
transform: scale(3) rotate(0deg);
|
|
16
|
+
top: 0;
|
|
17
|
+
bottom: 0;
|
|
18
|
+
left: 0;
|
|
19
|
+
right: 0;
|
|
20
|
+
position: absolute;
|
|
21
|
+
margin: auto;
|
|
22
|
+
background-repeat: no-repeat;
|
|
23
|
+
mix-blend-mode: overlay;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
.c1 {
|
|
27
|
+
background: radial-gradient(#dfa39b 25%, transparent 50%);
|
|
28
|
+
background-size: 60% 80%;
|
|
29
|
+
background-position: 0 0;
|
|
30
|
+
animation: c1 8s infinite linear;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
.c2 {
|
|
34
|
+
background: radial-gradient(#aa8de3 25%, transparent 50%);
|
|
35
|
+
background-size: 70% 80%;
|
|
36
|
+
background-position: 0 100%;
|
|
37
|
+
animation: c2 10s infinite linear;
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
.c3 {
|
|
41
|
+
background: radial-gradient(#d1a0c4 25%, transparent 50%);
|
|
42
|
+
background-size: 80% 80%;
|
|
43
|
+
background-position: 50% 0;
|
|
44
|
+
animation: c3 5s infinite linear;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
.c4 {
|
|
48
|
+
background: radial-gradient(#52bce9 25%, transparent 50%);
|
|
49
|
+
background-size: 80% 80%;
|
|
50
|
+
background-position: 50% 100%;
|
|
51
|
+
animation: c4 6s infinite linear;
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/* Updated animations with more breakpoints */
|
|
55
|
+
@keyframes c1 {
|
|
56
|
+
25% {
|
|
57
|
+
background-size: 70% 70%;
|
|
58
|
+
background-position: 25% 50%;
|
|
59
|
+
transform: scale(3) rotate(-45deg);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
50% {
|
|
63
|
+
background-size: 80% 80%;
|
|
64
|
+
background-position: 50% 100%;
|
|
65
|
+
transform: scale(3) rotate(-75deg);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
75% {
|
|
69
|
+
background-size: 60% 60%;
|
|
70
|
+
background-position: 75% 50%;
|
|
71
|
+
transform: scale(3) rotate(-30deg);
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
@keyframes c2 {
|
|
76
|
+
25% {
|
|
77
|
+
background-size: 60% 60%;
|
|
78
|
+
background-position: 25% 0;
|
|
79
|
+
transform: scale(3) rotate(45deg);
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
50% {
|
|
83
|
+
background-size: 80% 80%;
|
|
84
|
+
background-position: 50% 0;
|
|
85
|
+
transform: scale(3) rotate(90deg);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
75% {
|
|
89
|
+
background-size: 70% 70%;
|
|
90
|
+
background-position: 75% 0;
|
|
91
|
+
transform: scale(3) rotate(135deg);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@keyframes c3 {
|
|
96
|
+
25% {
|
|
97
|
+
background-size: 90% 90%;
|
|
98
|
+
background-position: 50% 50%;
|
|
99
|
+
transform: scale(3) rotate(-15deg);
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
50% {
|
|
103
|
+
background-size: 70% 80%;
|
|
104
|
+
background-position: 0 100%;
|
|
105
|
+
transform: scale(3) rotate(8deg);
|
|
106
|
+
}
|
|
107
|
+
|
|
108
|
+
75% {
|
|
109
|
+
background-size: 60% 70%;
|
|
110
|
+
background-position: 50% 50%;
|
|
111
|
+
transform: scale(3) rotate(-10deg);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
|
|
115
|
+
@keyframes c4 {
|
|
116
|
+
25% {
|
|
117
|
+
background-position: 100% 0;
|
|
118
|
+
transform: scale(3) rotate(30deg);
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
50% {
|
|
122
|
+
background-position: 0 0;
|
|
123
|
+
transform: scale(3) rotate(-36deg);
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
75% {
|
|
127
|
+
background-position: 50% 50%;
|
|
128
|
+
transform: scale(3) rotate(0deg);
|
|
129
|
+
}
|
|
130
|
+
}
|