Enhance WebUI with multilingual support

This commit is contained in:
Andy Oknen 2025-07-30 09:19:25 +00:00
parent a984fba30d
commit 008ac3d864
4 changed files with 362 additions and 45 deletions

View file

@ -29,6 +29,41 @@ header {
text-align: left;
}
.header-actions {
display: flex;
align-items: center;
gap: 15px;
}
.language-switcher {
display: flex;
background: rgba(255, 255, 255, 0.15);
border-radius: 8px;
padding: 4px;
border: 1px solid rgba(255, 255, 255, 0.2);
}
.lang-btn {
background: transparent;
color: white;
border: none;
padding: 6px 12px;
border-radius: 6px;
cursor: pointer;
font-size: 12px;
font-weight: 500;
transition: all 0.2s ease;
}
.lang-btn:hover {
background: rgba(255, 255, 255, 0.2);
}
.lang-btn.active {
background: rgba(255, 255, 255, 0.3);
box-shadow: 0 2px 4px rgba(0,0,0,0.2);
}
.header-content > div:first-child {
text-align: center;
flex: 1;
@ -60,20 +95,88 @@ header p {
background: rgba(255, 255, 255, 0.3);
}
main {
background: white;
border-radius: 12px;
padding: 30px;
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
.layout {
display: flex;
gap: 20px;
margin-bottom: 20px;
}
.status-card {
background: #f8f9fa;
border-radius: 8px;
.sidebar {
min-width: 250px;
background: rgba(255, 255, 255, 0.15);
backdrop-filter: blur(10px);
border-radius: 12px;
padding: 20px;
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
border: 1px solid rgba(255, 255, 255, 0.18);
}
.nav-menu {
display: flex;
flex-direction: column;
gap: 10px;
}
.nav-item {
display: flex;
align-items: center;
gap: 12px;
padding: 15px 18px;
background: rgba(255, 255, 255, 0.1);
border-radius: 10px;
cursor: pointer;
transition: all 0.3s ease;
color: white;
border: 1px solid rgba(255, 255, 255, 0.2);
}
.nav-item:hover {
background: rgba(255, 255, 255, 0.2);
transform: translateY(-2px);
box-shadow: 0 4px 15px rgba(0,0,0,0.2);
}
.nav-item.active {
background: rgba(255, 255, 255, 0.25);
border-color: rgba(255, 255, 255, 0.4);
box-shadow: 0 4px 15px rgba(0,0,0,0.2);
}
.nav-icon {
font-size: 20px;
}
.nav-text {
font-weight: 500;
font-size: 16px;
}
.main-content {
flex: 1;
background: rgba(255, 255, 255, 0.95);
border-radius: 12px;
padding: 30px;
box-shadow: 0 8px 32px rgba(0,0,0,0.1);
backdrop-filter: blur(10px);
border: 1px solid rgba(255, 255, 255, 0.18);
}
.content-section {
display: none;
}
.content-section.active {
display: block;
}
.status-card {
background: linear-gradient(135deg, #f8f9fa 0%, #e9ecef 100%);
border-radius: 15px;
padding: 25px;
margin-bottom: 30px;
text-align: center;
box-shadow: 0 4px 20px rgba(0,0,0,0.08);
border: 1px solid rgba(255, 255, 255, 0.5);
}
.status-indicator {
@ -109,17 +212,19 @@ main {
}
.info-card {
background: #ffffff;
border: 1px solid #e9ecef;
border-radius: 8px;
padding: 20px;
background: linear-gradient(135deg, #ffffff 0%, #f8f9fa 100%);
border: 1px solid rgba(233, 236, 239, 0.6);
border-radius: 15px;
padding: 25px;
text-align: center;
transition: transform 0.2s ease, box-shadow 0.2s ease;
transition: all 0.3s ease;
box-shadow: 0 2px 10px rgba(0,0,0,0.05);
}
.info-card:hover {
transform: translateY(-2px);
box-shadow: 0 4px 12px rgba(0,0,0,0.1);
transform: translateY(-5px);
box-shadow: 0 8px 25px rgba(0,0,0,0.15);
border-color: rgba(102, 126, 234, 0.3);
}
.info-card h3 {
@ -153,6 +258,11 @@ footer {
gap: 20px;
}
.header-actions {
flex-direction: column;
gap: 10px;
}
.header-content > div:first-child {
text-align: center;
}
@ -161,8 +271,35 @@ footer {
font-size: 2rem;
}
main {
.layout {
flex-direction: column;
gap: 15px;
}
.sidebar {
min-width: auto;
order: 2;
}
.nav-menu {
flex-direction: row;
overflow-x: auto;
gap: 8px;
}
.nav-item {
min-width: 120px;
justify-content: center;
padding: 12px 15px;
}
.nav-text {
font-size: 14px;
}
.main-content {
padding: 20px;
order: 1;
}
.info-grid {