Skip to content

Commit e4ea4ff

Browse files
feat(ui): enhanced 404 Not Found page UI
1 parent 64435da commit e4ea4ff

File tree

2 files changed

+111
-16
lines changed

2 files changed

+111
-16
lines changed

frontend/package-lock.json

Lines changed: 1 addition & 12 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

frontend/src/pages/NotFound.jsx

Lines changed: 110 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,116 @@ import { Link } from "react-router-dom";
33

44
export default function NotFound() {
55
return (
6-
<div className="page not-found">
7-
<h1>404 - Page Not Found</h1>
8-
<p>The page you’re looking for doesn’t exist.</p>
9-
<Link to="/">Go Back Home</Link>
6+
<div style={styles.container}>
7+
<div style={styles.illustrationBox}>
8+
<div style={styles.circle}></div>
9+
<h1 style={styles.title}>404</h1>
10+
</div>
11+
12+
<div style={styles.contentBox}>
13+
<h2 style={styles.subtitle}>Oops! You seem lost.</h2>
14+
<p style={styles.description}>
15+
The page you’re looking for doesn’t exist or may have been moved. Let’s get you back on track.
16+
</p>
17+
<Link to="/" style={styles.button}>
18+
⬅️ Return to Home
19+
</Link>
20+
</div>
21+
22+
<style>
23+
{`
24+
@keyframes float {
25+
0% { transform: translateY(0px); }
26+
50% { transform: translateY(-15px); }
27+
100% { transform: translateY(0px); }
28+
}
29+
30+
@keyframes fadeIn {
31+
from { opacity: 0; transform: translateY(30px); }
32+
to { opacity: 1; transform: translateY(0); }
33+
}
34+
35+
a:hover {
36+
background-color: #fff !important;
37+
color: #ff416c !important;
38+
transform: scale(1.05);
39+
}
40+
`}
41+
</style>
1042
</div>
1143
);
1244
}
45+
46+
const styles = {
47+
container: {
48+
display: "flex",
49+
flexDirection: "column",
50+
justifyContent: "center",
51+
alignItems: "center",
52+
height: "100vh",
53+
background: "linear-gradient(135deg, #ff4b2b, #ff416c)",
54+
color: "#fff",
55+
fontFamily: "'Poppins', sans-serif",
56+
overflow: "hidden",
57+
textAlign: "center",
58+
animation: "fadeIn 1s ease-in-out",
59+
padding: "0 20px",
60+
},
61+
illustrationBox: {
62+
position: "relative",
63+
display: "flex",
64+
justifyContent: "center",
65+
alignItems: "center",
66+
animation: "float 3s ease-in-out infinite",
67+
},
68+
circle: {
69+
width: "200px",
70+
height: "200px",
71+
background: "rgba(255, 255, 255, 0.15)",
72+
borderRadius: "50%",
73+
position: "absolute",
74+
top: 0,
75+
left: 0,
76+
right: 0,
77+
margin: "auto",
78+
filter: "blur(5px)",
79+
zIndex: 0,
80+
},
81+
title: {
82+
fontSize: "7rem",
83+
fontWeight: "900",
84+
zIndex: 2,
85+
textShadow: "0 5px 20px rgba(0, 0, 0, 0.3)",
86+
},
87+
contentBox: {
88+
marginTop: "30px",
89+
maxWidth: "600px",
90+
backgroundColor: "rgba(255, 255, 255, 0.15)",
91+
borderRadius: "15px",
92+
padding: "30px 40px",
93+
boxShadow: "0 8px 25px rgba(0,0,0,0.3)",
94+
backdropFilter: "blur(12px)",
95+
animation: "fadeIn 1.5s ease-in-out",
96+
},
97+
subtitle: {
98+
fontSize: "2.5rem",
99+
fontWeight: "600",
100+
marginBottom: "15px",
101+
},
102+
description: {
103+
fontSize: "1.1rem",
104+
marginBottom: "30px",
105+
lineHeight: "1.6",
106+
},
107+
button: {
108+
display: "inline-block",
109+
padding: "14px 30px",
110+
backgroundColor: "#ffebee",
111+
color: "#ff416c",
112+
borderRadius: "50px",
113+
fontWeight: "600",
114+
textDecoration: "none",
115+
transition: "all 0.3s ease",
116+
boxShadow: "0 4px 12px rgba(255, 255, 255, 0.3)",
117+
},
118+
};

0 commit comments

Comments
 (0)