Skip to content

Commit a8fb515

Browse files
CopilotBoshen
andauthored
Add React Router and refactor dashboard with enhanced minification benchmarks featuring optimized compression sorting and detailed metrics (#49)
Co-authored-by: copilot-swe-agent[bot] <[email protected]> Co-authored-by: Boshen <[email protected]> Co-authored-by: Boshen <[email protected]>
1 parent de06439 commit a8fb515

File tree

11 files changed

+2833
-206
lines changed

11 files changed

+2833
-206
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -60,5 +60,8 @@ Thumbs.db
6060
.tmp
6161
.temp
6262

63+
# Screenshots
64+
*.png
65+
6366
# Build tools
6467
.turbo

apps/dashboard/package.json

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,15 +10,17 @@
1010
"clean": "rm -rf dist"
1111
},
1212
"dependencies": {
13+
"lucide-react": "^0.414.0",
1314
"react": "^19.1.1",
1415
"react-dom": "^19.1.1",
15-
"recharts": "^2.12.6",
16-
"lucide-react": "^0.414.0"
16+
"react-router-dom": "^7.8.2",
17+
"recharts": "^2.12.6"
1718
},
1819
"devDependencies": {
1920
"@types/react": "^19.1.10",
2021
"@types/react-dom": "^19.1.7",
21-
"typescript": "catalog:",
22-
"rolldown-vite": "7.1.4"
22+
"@types/react-router-dom": "^5.3.3",
23+
"rolldown-vite": "7.1.4",
24+
"typescript": "catalog:"
2325
}
2426
}

apps/dashboard/src/App.css

Lines changed: 159 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,88 @@
6262
}
6363
}
6464

65-
/* Navigation */
65+
/* Page Navigation */
66+
.page-nav {
67+
background: transparent;
68+
padding: 1rem 2rem;
69+
display: flex;
70+
gap: 0.5rem;
71+
max-width: 1200px;
72+
margin: 0 auto;
73+
border-radius: 0.75rem;
74+
margin-top: -0.5rem;
75+
position: relative;
76+
z-index: 10;
77+
}
78+
79+
.page-button {
80+
display: flex;
81+
align-items: center;
82+
gap: 0.625rem;
83+
padding: 1rem 1.5rem;
84+
border: 2px solid transparent;
85+
background: transparent;
86+
border-radius: 0.75rem;
87+
cursor: pointer;
88+
font-weight: 600;
89+
font-size: 0.95rem;
90+
transition: all 0.3s ease;
91+
color: #64748b;
92+
text-transform: capitalize;
93+
letter-spacing: -0.025em;
94+
position: relative;
95+
overflow: hidden;
96+
min-width: 160px;
97+
justify-content: center;
98+
}
99+
100+
.page-button::before {
101+
content: '';
102+
position: absolute;
103+
top: 0;
104+
left: -100%;
105+
width: 100%;
106+
height: 100%;
107+
background: linear-gradient(90deg,
108+
transparent,
109+
rgba(16, 185, 129, 0.3),
110+
transparent);
111+
transition: left 0.5s ease;
112+
}
113+
114+
.page-button:hover {
115+
background: transparent;
116+
border-color: #10b981;
117+
color: #059669;
118+
transform: translateY(-2px);
119+
box-shadow: 0 8px 16px rgba(16, 185, 129, 0.2);
120+
}
121+
122+
.page-button:hover::before {
123+
left: 100%;
124+
}
125+
126+
.page-button.active {
127+
background: transparent;
128+
border-color: #10b981;
129+
color: #059669;
130+
box-shadow: 0 8px 20px rgba(16, 185, 129, 0.3);
131+
transform: translateY(-1px);
132+
}
133+
134+
.page-button.active::before {
135+
background: linear-gradient(90deg,
136+
transparent,
137+
rgba(16, 185, 129, 0.2),
138+
transparent);
139+
}
140+
141+
.page-button.active:hover {
142+
transform: translateY(-3px);
143+
box-shadow: 0 12px 24px rgba(16, 185, 129, 0.4);
144+
}
145+
146+
/* Metric Navigation */
66147
.dashboard-nav {
67148
background: transparent;
68149
padding: 1.25rem 2rem;
@@ -236,8 +317,71 @@
236317
border: 1px solid rgba(220, 38, 38, 0.2);
237318
}
238319

320+
/* Library Charts Grid - Combined Layout */
321+
.library-charts-grid {
322+
display: flex;
323+
flex-direction: column;
324+
gap: 2rem;
325+
margin-bottom: 2rem;
326+
padding: 0 2rem;
327+
}
328+
329+
.library-chart-row {
330+
background: #ffffff;
331+
border: 1px solid #e5e7eb;
332+
border-radius: 0.75rem;
333+
padding: 1.5rem;
334+
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
335+
transition: all 0.3s ease;
336+
}
337+
338+
.library-chart-row:hover {
339+
box-shadow: 0 4px 8px rgba(0, 0, 0, 0.1);
340+
transform: translateY(-2px);
341+
}
342+
343+
.library-charts-columns {
344+
display: grid;
345+
grid-template-columns: 1fr 1fr;
346+
gap: 2rem;
347+
margin-top: 1rem;
348+
}
349+
350+
.library-chart-container {
351+
background: #f9fafb;
352+
border: 1px solid #e5e7eb;
353+
border-radius: 0.5rem;
354+
padding: 1rem;
355+
}
356+
357+
.chart-subtitle {
358+
margin: 0 0 1rem 0;
359+
font-size: 1rem;
360+
font-weight: 500;
361+
color: #374151;
362+
text-align: center;
363+
padding-bottom: 0.5rem;
364+
border-bottom: 1px solid #e5e7eb;
365+
}
366+
367+
.library-title {
368+
margin: 0 0 1rem 0;
369+
font-size: 1.125rem;
370+
font-weight: 600;
371+
color: #111827;
372+
text-transform: capitalize;
373+
text-align: center;
374+
padding-bottom: 0.5rem;
375+
border-bottom: 2px solid #e5e7eb;
376+
}
377+
239378
/* Responsive Design */
240379
@media (max-width: 768px) {
380+
.page-nav {
381+
flex-direction: column;
382+
gap: 0.5rem;
383+
}
384+
241385
.dashboard-nav {
242386
flex-direction: column;
243387
gap: 0.5rem;
@@ -254,6 +398,20 @@
254398
.stats-grid {
255399
grid-template-columns: 1fr;
256400
}
401+
402+
.library-charts-grid {
403+
padding: 0 1rem;
404+
gap: 1rem;
405+
}
406+
407+
.library-charts-columns {
408+
grid-template-columns: 1fr;
409+
gap: 1rem;
410+
}
411+
412+
.library-chart-container {
413+
padding: 1rem;
414+
}
257415
}
258416

259417
/* Remove default styles */

0 commit comments

Comments
 (0)