Skip to content

Commit e05922b

Browse files
authored
[KLC-2083] feat(ui): redesign with klever.org design system (#9)
* feat(ui): redesign with klever.org design system - Add official Klever logos (dark/white variants for theme switching) - Implement glassmorphism styling matching klever.org aesthetic - Pure black background, semi-transparent cards, backdrop blur - Light mode glass panel overrides - Redesign header with centered navigation (Assets, Bridge, About) - Add hamburger menu for mobile navigation - Create footer component with Klever ecosystem links - Make sankey chart responsive with simplified mobile layout - Update chain cards to use brand colors when selected - Fix Tailwind v4 dark mode with @custom-variant configuration - Remove unused confetti-celebration component * feat(ui): enhance mobile menu functionality with click outside detection and improved accessibility * fix(ui): handle flowData null check and clean up footer legend rendering
1 parent 7c270b2 commit e05922b

File tree

9 files changed

+527
-210
lines changed

9 files changed

+527
-210
lines changed

public/assets/klever-logo-dark.png

8.83 KB
Loading
8.16 KB
Loading

src/app/globals.css

Lines changed: 121 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,8 @@
11
@import "tailwindcss";
22

3+
/* Enable class-based dark mode for Tailwind v4 */
4+
@custom-variant dark (&:where(.dark, .dark *));
5+
36
@theme {
47
/* Klever Brand Colors - Based on klever.org */
58
--color-klv-pink: #e91e8c;
@@ -16,10 +19,11 @@
1619
}
1720

1821
:root {
19-
/* Near-black backgrounds like klever.org */
20-
--background: #050507;
21-
--background-secondary: #0a0a0f;
22-
--background-card: #0f0f14;
22+
/* Pure black backgrounds like klever.org */
23+
--background: #000000;
24+
--background-secondary: #0b0c0e;
25+
--background-card: rgba(22, 22, 22, 0.5);
26+
--background-card-solid: #0b0c0e;
2327
--foreground: #ffffff;
2428
--foreground-secondary: #a1a1aa;
2529
/* Pink/Magenta primary - matches Klever logo */
@@ -29,10 +33,10 @@
2933
--secondary: #9333ea;
3034
--secondary-hover: #a855f7;
3135
--accent: #d946ef;
32-
--muted: #18181b;
36+
--muted: #111113;
3337
--muted-foreground: #71717a;
34-
--border: #27272a;
35-
--border-hover: #3f3f46;
38+
--border: rgba(255, 255, 255, 0.08);
39+
--border-hover: rgba(255, 255, 255, 0.15);
3640
--success: #22c55e;
3741
--warning: #f59e0b;
3842
--error: #ef4444;
@@ -59,11 +63,34 @@
5963

6064
/* Light mode glassmorphic card override */
6165
:root.light .card-glass {
62-
background: rgba(255, 255, 255, 0.8);
66+
background: rgba(255, 255, 255, 0.9);
67+
border: 1px solid rgba(0, 0, 0, 0.08);
68+
box-shadow:
69+
0 4px 16px rgba(0, 0, 0, 0.06),
70+
inset 0 1px 0 rgba(255, 255, 255, 1);
71+
}
72+
73+
/* Light mode glass panel override */
74+
:root.light .glass-panel {
75+
background: rgba(255, 255, 255, 0.85);
6376
border: 1px solid rgba(0, 0, 0, 0.08);
6477
box-shadow:
65-
0 4px 16px rgba(0, 0, 0, 0.08),
66-
inset 0 1px 0 rgba(255, 255, 255, 0.9);
78+
0 8px 32px rgba(0, 0, 0, 0.08),
79+
inset 0 1px 0 rgba(255, 255, 255, 1);
80+
}
81+
82+
:root.light .glass-panel::before {
83+
background: linear-gradient(
84+
90deg,
85+
transparent 0%,
86+
rgba(233, 30, 140, 0.3) 15%,
87+
rgba(255, 150, 50, 0.3) 30%,
88+
rgba(50, 200, 100, 0.25) 45%,
89+
rgba(50, 150, 255, 0.3) 60%,
90+
rgba(147, 51, 234, 0.3) 75%,
91+
rgba(233, 30, 140, 0.3) 90%,
92+
transparent 100%
93+
);
6794
}
6895

6996
* {
@@ -81,6 +108,27 @@ body {
81108
Roboto,
82109
sans-serif;
83110
min-height: 100vh;
111+
position: relative;
112+
}
113+
114+
/* Subtle ambient background glow - Klever style */
115+
body::before {
116+
content: "";
117+
position: fixed;
118+
top: 0;
119+
left: 50%;
120+
transform: translateX(-50%);
121+
width: 100%;
122+
max-width: 1400px;
123+
height: 800px;
124+
background: radial-gradient(
125+
ellipse at 50% 0%,
126+
rgba(233, 30, 140, 0.04) 0%,
127+
rgba(147, 51, 234, 0.02) 40%,
128+
transparent 70%
129+
);
130+
pointer-events: none;
131+
z-index: -1;
84132
}
85133

86134
/* Animated gradient text - Klever style color shift */
@@ -331,15 +379,73 @@ input:focus-visible,
331379
animation: pulse-ring 2s ease-out infinite;
332380
}
333381

334-
/* Glassmorphic card - Subtle, premium dark */
382+
/* Glassmorphic card - Klever.org inspired glass effect */
335383
.card-glass {
336-
background: rgba(15, 15, 20, 0.8);
384+
background: rgba(22, 22, 22, 0.5);
337385
backdrop-filter: blur(12px);
338386
-webkit-backdrop-filter: blur(12px);
339387
border: 1px solid rgba(255, 255, 255, 0.06);
340-
box-shadow:
341-
0 4px 24px rgba(0, 0, 0, 0.4),
342-
inset 0 1px 0 rgba(255, 255, 255, 0.03);
388+
border-radius: 16px;
389+
position: relative;
390+
overflow: hidden;
391+
transition: all 0.3s ease;
392+
}
393+
394+
.card-glass:hover {
395+
background: rgba(28, 28, 28, 0.6);
396+
border-color: rgba(255, 255, 255, 0.1);
397+
}
398+
399+
/* Premium glass panel - for hero sections */
400+
.glass-panel {
401+
background: rgba(11, 12, 14, 0.89);
402+
backdrop-filter: blur(16px);
403+
-webkit-backdrop-filter: blur(16px);
404+
border: 1px solid rgba(255, 255, 255, 0.06);
405+
border-radius: 16px;
406+
position: relative;
407+
overflow: hidden;
408+
}
409+
410+
/* Prismatic light reflection - Klever style */
411+
.glass-panel::before {
412+
content: "";
413+
position: absolute;
414+
top: 0;
415+
left: 0;
416+
right: 0;
417+
height: 1px;
418+
background: linear-gradient(
419+
90deg,
420+
transparent 0%,
421+
rgba(255, 120, 120, 0.4) 15%,
422+
rgba(255, 200, 100, 0.4) 30%,
423+
rgba(120, 255, 150, 0.3) 45%,
424+
rgba(100, 200, 255, 0.4) 60%,
425+
rgba(180, 120, 255, 0.4) 75%,
426+
rgba(255, 100, 200, 0.4) 90%,
427+
transparent 100%
428+
);
429+
pointer-events: none;
430+
z-index: 10;
431+
}
432+
433+
/* Subtle inner glow effect */
434+
.glass-inner-glow {
435+
position: relative;
436+
}
437+
438+
.glass-inner-glow::before {
439+
content: "";
440+
position: absolute;
441+
inset: 0;
442+
border-radius: inherit;
443+
background: radial-gradient(
444+
ellipse at 50% 0%,
445+
rgba(255, 255, 255, 0.03) 0%,
446+
transparent 60%
447+
);
448+
pointer-events: none;
343449
}
344450

345451
/* Animated gradient border on hover */
@@ -501,26 +607,6 @@ input:focus-visible,
501607
transform: rotate(5deg);
502608
}
503609

504-
/* Confetti burst keyframes */
505-
@keyframes confetti-burst {
506-
0% {
507-
transform: translate(-50%, -50%) scale(0);
508-
opacity: 1;
509-
}
510-
100% {
511-
transform: translate(-50%, -50%) scale(1) translateY(20px);
512-
opacity: 0;
513-
}
514-
}
515-
516-
.confetti-particle {
517-
position: absolute;
518-
width: 6px;
519-
height: 6px;
520-
border-radius: 50%;
521-
animation: confetti-burst 0.8s ease-out forwards;
522-
}
523-
524610
/* ============================================
525611
PHASE 6: STATUS GLOW EFFECTS
526612
============================================ */

src/app/page.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
import { Header } from "@/components/header";
2+
import { Footer } from "@/components/footer";
23
import { DashboardContent } from "@/components/dashboard/dashboard-content";
34

45
export default function Home() {
56
return (
6-
<div className="min-h-screen">
7+
<div className="min-h-screen flex flex-col">
78
<Header />
8-
<main className="container mx-auto px-4 py-8 md:py-12">
9+
<main className="container mx-auto px-4 py-8 md:py-12 flex-1">
910
<section className="mb-8 text-center">
1011
<h1 className="text-3xl md:text-4xl font-bold mb-3 text-gradient">
1112
Bridge Transparency
1213
</h1>
13-
<p className="text-[var(--muted-foreground)] max-w-2xl mx-auto text-sm md:text-base">
14+
<p className="text-(--muted-foreground) max-w-2xl mx-auto text-sm md:text-base">
1415
Real-time verification of wrapped token balances across Klever Blockchain and connected
1516
networks. Full transparency for all bridged assets.
1617
</p>
@@ -20,18 +21,19 @@ export default function Home() {
2021

2122
{/* Legend */}
2223
<section className="mt-8">
23-
<div className="flex items-center justify-center gap-6 text-sm text-[var(--muted-foreground)]">
24+
<div className="flex items-center justify-center gap-6 text-sm text-(--muted-foreground)">
2425
<div className="flex items-center gap-2">
25-
<span className="w-3 h-3 rounded-full bg-[var(--success)]" />
26+
<span className="w-3 h-3 rounded-full bg-(--success)" />
2627
<span>Fully Backed</span>
2728
</div>
2829
<div className="flex items-center gap-2">
29-
<span className="w-3 h-3 rounded-full bg-[var(--warning)]" />
30+
<span className="w-3 h-3 rounded-full bg-(--warning)" />
3031
<span>Under Backed</span>
3132
</div>
3233
</div>
3334
</section>
3435
</main>
36+
<Footer />
3537
</div>
3638
);
3739
}

0 commit comments

Comments
 (0)