refactor: replace UI module CSS files and add map icon assets for enhanced styling
Build and Release / release (push) Successful in 1m3s

This commit is contained in:
anhncd
2026-05-22 12:15:28 +07:00
parent b5dcda83a9
commit dc6d048645
17 changed files with 266 additions and 158 deletions
@@ -1,283 +0,0 @@
.container {
position: absolute;
left: 18px;
right: 18px;
bottom: 16px;
z-index: 10;
background: linear-gradient(135deg, rgba(30, 30, 30, 0.72) 0%, rgba(20, 20, 20, 0.85) 100%);
backdrop-filter: blur(8px);
-webkit-backdrop-filter: blur(8px);
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 50px;
padding: 10px 16px;
color: #f8fafc;
box-shadow:
0 10px 30px -10px rgba(0, 0, 0, 0.5),
inset 0 1px 1px 0 rgba(255, 255, 255, 0.05);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}
@keyframes borderPulse {
0% {
border-color: rgba(255, 255, 255, 0.6);
box-shadow:
0 10px 30px -10px rgba(0, 0, 0, 0.15),
inset 0 1px 1px 0 rgba(255, 255, 255, 0.7),
inset 0 -1px 1px 0 rgba(255, 255, 255, 0.2);
}
50% {
border-color: rgba(16, 185, 129, 0.55);
box-shadow:
0 10px 30px -10px rgba(0, 0, 0, 0.15),
0 0 12px rgba(16, 185, 129, 0.25),
inset 0 1px 1px 0 rgba(255, 255, 255, 0.75),
inset 0 -1px 1px 0 rgba(255, 255, 255, 0.2);
}
100% {
border-color: rgba(255, 255, 255, 0.6);
box-shadow:
0 10px 30px -10px rgba(0, 0, 0, 0.15),
inset 0 1px 1px 0 rgba(255, 255, 255, 0.7),
inset 0 -1px 1px 0 rgba(255, 255, 255, 0.2);
}
}
.containerLoading {
animation: borderPulse 2s infinite ease-in-out;
}
.flexWrapper {
display: flex;
align-items: center;
flex-wrap: wrap;
row-gap: 8px;
column-gap: 12px;
font-size: 12px;
}
.labelBounds {
color: #94a3b8;
font-weight: 600;
min-width: 44px;
user-select: none;
}
.labelBoundsRight {
composes: labelBounds;
text-align: right;
}
/* Custom range slider styling */
.slider {
-webkit-appearance: none;
appearance: none;
flex: 1;
min-width: 120px;
height: 24px;
background: transparent;
cursor: pointer;
outline: none;
}
.slider::-webkit-slider-runnable-track {
width: 100%;
height: 6px;
background: rgba(255, 255, 255, 0.15);
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3);
transition: all 0.2s;
}
.slider:hover::-webkit-slider-runnable-track {
background: rgba(255, 255, 255, 0.25);
border-color: rgba(255, 255, 255, 0.1);
}
.slider::-webkit-slider-thumb {
-webkit-appearance: none;
appearance: none;
margin-top: -6px;
height: 18px;
width: 18px;
border-radius: 50%;
background: radial-gradient(circle at 30% 30%, #34d399 0%, #059669 100%);
border: 1.5px solid #ffffff;
box-shadow:
0 0 10px rgba(16, 185, 129, 0.4),
0 3px 6px rgba(0, 0, 0, 0.15),
inset 0 1px 1px rgba(255, 255, 255, 0.4);
cursor: pointer;
transition: transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.15s ease;
}
.slider:hover::-webkit-slider-thumb {
transform: scale(1.2);
box-shadow:
0 0 15px rgba(16, 185, 129, 0.6),
0 5px 10px rgba(0, 0, 0, 0.18),
inset 0 1px 1px rgba(255, 255, 255, 0.5);
}
.slider:active::-webkit-slider-thumb {
transform: scale(1.05);
box-shadow:
0 0 8px rgba(16, 185, 129, 0.5),
0 2px 4px rgba(0, 0, 0, 0.15);
}
/* Firefox slider styling */
.slider::-moz-range-track {
width: 100%;
height: 6px;
background: rgba(255, 255, 255, 0.15);
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.05);
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.3);
transition: all 0.2s;
}
.slider:hover::-moz-range-track {
background: rgba(255, 255, 255, 0.25);
}
.slider::-moz-range-thumb {
height: 15px;
width: 15px;
border-radius: 50%;
background: radial-gradient(circle at 30% 30%, #34d399 0%, #059669 100%);
border: 1.5px solid #ffffff;
box-shadow:
0 0 10px rgba(16, 185, 129, 0.4),
0 3px 6px rgba(0, 0, 0, 0.15),
inset 0 1px 1px rgba(255, 255, 255, 0.4);
cursor: pointer;
transition: transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.15s ease;
}
.slider:hover::-moz-range-thumb {
transform: scale(1.2);
}
/* Custom inputs styling */
.numberInput {
width: 128px;
border: 1px solid rgba(255, 255, 255, 0.15);
border-radius: 8px;
padding: 6px 10px;
background: rgba(255, 255, 255, 0.08);
color: #ffffff;
font-size: 13px;
font-weight: 600;
outline: none;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.2);
backdrop-filter: blur(4px);
transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
}
.numberInput:hover {
border-color: rgba(255, 255, 255, 0.3);
background: rgba(255, 255, 255, 0.12);
}
.numberInput:focus {
border-color: #10b981;
box-shadow:
0 0 0 3px rgba(16, 185, 129, 0.25),
inset 0 1px 2px rgba(0, 0, 0, 0.2);
background: rgba(255, 255, 255, 0.15);
}
.rangeInput {
composes: numberInput;
width: 84px;
}
.rangeLabel {
display: inline-flex;
align-items: center;
gap: 8px;
color: #94a3b8;
font-weight: 600;
white-space: nowrap;
transition: color 0.2s;
}
.rangeLabel:hover {
color: #ffffff;
}
/* Custom switch toggle styling */
.toggleContainer {
display: inline-flex;
align-items: center;
gap: 10px;
cursor: pointer;
user-select: none;
transition: opacity 0.2s;
}
.toggleTrack {
width: 38px;
height: 20px;
border-radius: 999px;
border: 1px solid rgba(255, 255, 255, 0.2);
background: rgba(255, 255, 255, 0.1);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.3);
position: relative;
flex: 0 0 auto;
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.toggleTrackActive {
background: rgba(16, 185, 129, 0.35);
border-color: rgba(16, 185, 129, 0.6);
box-shadow:
0 0 8px rgba(16, 185, 129, 0.35),
inset 0 1px 2px rgba(0, 0, 0, 0.2);
}
.toggleThumb {
position: absolute;
top: 1.5px;
left: 2px;
width: 15px;
height: 15px;
border-radius: 50%;
background: #94a3b8;
border: 1px solid rgba(255, 255, 255, 0.2);
box-shadow: 0 2px 4px rgba(0, 0, 0, 0.25);
transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1);
}
.toggleThumbActive {
left: 19px;
background: #34d399;
box-shadow:
0 0 10px rgba(52, 211, 153, 0.6),
0 2px 4px rgba(0, 0, 0, 0.25);
}
.toggleContainer:hover .toggleTrack {
border-color: rgba(255, 255, 255, 0.3);
background: rgba(255, 255, 255, 0.15);
}
.toggleContainer:hover .toggleTrackActive {
border-color: rgba(16, 185, 129, 0.7);
}
.disabled {
opacity: 0.5 !important;
cursor: not-allowed !important;
}
.disabled .slider,
.disabled .numberInput,
.disabled .toggleContainer,
.disabled .toggleTrack {
cursor: not-allowed !important;
pointer-events: none !important;
}
+1 -1
View File
@@ -1,7 +1,7 @@
"use client";
import { FIXED_TIMELINE_END_YEAR, FIXED_TIMELINE_START_YEAR, clampYearValue } from "@/uhm/lib/utils/timeline";
import styles from "./TimelineBar.module.css";
import styles from "@/styles/TimelineBar.module.css";
type Props = {
year: number;