Skip to content

Commit 481cc4a

Browse files
JitmisraabcPragmaTwice
authored
feat(webui/homepage&footer): Redesign homepage and footer with dark mode (#316)
* feat(webui/homepage&footer): Redesign homepage and footer with dark mode * fixed unescaped quote * fix: resolve Prettier formatting issues * Update webui/src/app/page.tsx --------- Co-authored-by: abc <abc@abcs-MacBook-Air.local> Co-authored-by: Twice <twice@apache.org>
1 parent 9ae1849 commit 481cc4a

File tree

6 files changed

+1182
-219
lines changed

6 files changed

+1182
-219
lines changed

webui/package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
"@types/js-yaml": "^4.0.9",
2121
"axios": "^1.6.7",
2222
"js-yaml": "^4.1.0",
23-
"next": "14.1.0",
23+
"next": "^14.2.29",
2424
"react": "^18",
2525
"react-dom": "^18"
2626
},

webui/src/app/globals.css

Lines changed: 203 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,13 @@
2424
@layer components {
2525
.card {
2626
@apply flex flex-col rounded-lg border border-light-border bg-white p-5 shadow-card transition-all hover:shadow-card-hover dark:border-dark-border dark:bg-dark-paper;
27+
transition: all 0.3s cubic-bezier(0.165, 0.84, 0.44, 1);
28+
backface-visibility: hidden;
29+
}
30+
31+
.card:hover {
32+
transform: translateY(-5px);
33+
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
2734
}
2835

2936
.sidebar-item {
@@ -49,6 +56,13 @@
4956
.container-inner {
5057
@apply mx-auto max-w-screen-2xl p-6;
5158
}
59+
.page-section {
60+
@apply mb-0;
61+
}
62+
63+
.page-section:last-of-type {
64+
@apply mb-0;
65+
}
5266
}
5367

5468
/* custom scrollbar */
@@ -142,12 +156,196 @@ img {
142156
transition: all 0.3s ease;
143157
}
144158

159+
@keyframes fadeIn {
160+
from {
161+
opacity: 0;
162+
transform: translateY(10px);
163+
}
164+
to {
165+
opacity: 1;
166+
transform: translateY(0);
167+
}
168+
}
169+
170+
.animate-fadeIn {
171+
animation: fadeIn 0.5s ease-out forwards;
172+
}
173+
174+
.transform {
175+
transition: transform 0.3s ease-out;
176+
}
177+
178+
.hover\:-translate-y-1:hover {
179+
transform: translateY(-4px);
180+
}
181+
182+
.card {
183+
transition: all 0.3s cubic-bezier(0.165, 0.84, 0.44, 1);
184+
backface-visibility: hidden;
185+
}
186+
187+
.card:hover {
188+
transform: translateY(-5px);
189+
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1);
190+
}
191+
192+
.bg-gradient-radial {
193+
background-image: radial-gradient(circle at center, var(--tw-gradient-stops));
194+
}
195+
196+
html {
197+
scroll-behavior: smooth;
198+
}
199+
200+
.MuiButton-root {
201+
transition: all 0.3s cubic-bezier(0.165, 0.84, 0.44, 1) !important;
202+
}
203+
204+
.MuiButton-root:hover {
205+
transform: translateY(-2px);
206+
box-shadow: 0 5px 15px rgba(0, 0, 0, 0.1);
207+
}
208+
145209
.interactive-element {
146-
transition:
147-
transform 0.2s ease,
148-
opacity 0.2s ease;
210+
transform: translateY(0);
149211
}
212+
150213
.interactive-element:hover {
151-
transform: translateY(-2px);
152-
opacity: 0.95;
214+
transform: translateY(-4px);
215+
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
216+
}
217+
218+
@keyframes blink {
219+
0%,
220+
100% {
221+
opacity: 1;
222+
}
223+
50% {
224+
opacity: 0;
225+
}
226+
}
227+
228+
.cursor-blink {
229+
animation: blink 1s steps(1) infinite;
230+
}
231+
232+
.gradient-text {
233+
background-clip: text;
234+
-webkit-background-clip: text;
235+
-webkit-text-fill-color: transparent;
236+
}
237+
238+
.smooth-transition {
239+
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
240+
}
241+
242+
.hover-lift {
243+
transition:
244+
transform 0.3s ease,
245+
box-shadow 0.3s ease;
246+
}
247+
248+
.hover-lift:hover {
249+
transform: translateY(-5px);
250+
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1);
251+
}
252+
253+
.dark .shadow-enhanced {
254+
box-shadow: 0 10px 25px rgba(0, 0, 0, 0.3);
255+
}
256+
257+
.bg-pattern {
258+
background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%231976d2' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
259+
}
260+
261+
.dark .bg-pattern {
262+
background-image: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%2342a5f5' fill-opacity='0.05'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
263+
}
264+
265+
::-webkit-scrollbar {
266+
width: 6px;
267+
height: 6px;
268+
}
269+
270+
::-webkit-scrollbar-track {
271+
background: transparent;
272+
}
273+
274+
::-webkit-scrollbar-thumb {
275+
background: rgba(0, 0, 0, 0.2);
276+
border-radius: 8px;
277+
}
278+
279+
.dark ::-webkit-scrollbar-thumb {
280+
background: rgba(255, 255, 255, 0.2);
281+
}
282+
283+
::-webkit-scrollbar-thumb:hover {
284+
background: rgba(0, 0, 0, 0.3);
285+
}
286+
287+
.dark ::-webkit-scrollbar-thumb:hover {
288+
background: rgba(255, 255, 255, 0.3);
289+
}
290+
291+
@keyframes float {
292+
0% {
293+
transform: translate3d(0, 0, 0) rotate(12deg);
294+
}
295+
50% {
296+
transform: translate3d(0, -10px, 0) rotate(10deg);
297+
}
298+
100% {
299+
transform: translate3d(0, 0, 0) rotate(12deg);
300+
}
301+
}
302+
303+
.animate-float {
304+
animation: float 6s ease-in-out infinite;
305+
will-change: transform;
306+
}
307+
308+
@keyframes blink {
309+
0%,
310+
100% {
311+
opacity: 1;
312+
}
313+
50% {
314+
opacity: 0;
315+
}
316+
}
317+
318+
.cursor-blink {
319+
animation: blink 1s steps(1) infinite;
320+
will-change: opacity;
321+
}
322+
323+
.will-change-transform {
324+
will-change: transform;
325+
}
326+
327+
.will-change-scroll {
328+
will-change: scroll-position;
329+
}
330+
331+
img[data-loaded="true"] {
332+
transition: opacity 0.5s ease;
333+
opacity: 1;
334+
}
335+
336+
img[data-loaded="false"] {
337+
opacity: 0;
338+
}
339+
340+
.transform,
341+
.transition-all,
342+
.hover\:transform,
343+
.hover\:-translate-y-1:hover,
344+
.hover\:scale-110:hover,
345+
.animate-bounce,
346+
.animate-pulse {
347+
transform: translate3d(0, 0, 0);
348+
backface-visibility: hidden;
349+
perspective: 1000;
350+
will-change: transform, opacity;
153351
}

webui/src/app/main.png

92.9 KB
Loading

0 commit comments

Comments
 (0)