feat: implement framework and refactor everything

This commit is contained in:
2025-08-26 20:35:15 +02:00
parent e23b40e0cb
commit 918c019dd5
23 changed files with 6291 additions and 1279 deletions

View File

@@ -183,6 +183,25 @@ p {
transform: rotate(180deg);
}
.refresh-btn:disabled {
opacity: 0.6;
cursor: not-allowed;
pointer-events: none;
}
.refresh-icon.spinning {
animation: spin 1s linear infinite;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.members-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
@@ -194,10 +213,12 @@ p {
border: 1px solid rgba(255, 255, 255, 0.1);
border-radius: 10px;
padding: 1rem;
transition: all 0.3s ease;
transition: all 0.2s ease;
cursor: pointer;
position: relative;
margin-bottom: 0.5rem;
opacity: 1;
transform: translateY(0);
}
.member-card::before {
@@ -210,7 +231,7 @@ p {
background: rgba(255, 255, 255, 0.08);
border-radius: 12px;
opacity: 0;
transition: opacity 0.3s ease;
transition: opacity 0.2s ease;
pointer-events: none;
}
@@ -220,6 +241,7 @@ p {
.member-card:hover {
box-shadow: 0 8px 25px rgba(0, 0, 0, 0.2);
transform: translateY(-2px);
}
.member-card.expanded {
@@ -229,7 +251,7 @@ p {
}
.member-card.expanded:hover {
transform: scale(1.02);
transform: scale(1.02) translateY(-2px);
}
.expand-icon:hover {
@@ -285,20 +307,15 @@ p {
}
.member-details {
display: none;
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease-in-out, opacity 0.2s ease-in-out;
opacity: 0;
margin-top: 0;
padding-top: 0;
border-top: 1px solid transparent;
transition: opacity 0.3s ease;
}
.member-card.expanded .member-details {
display: block;
max-height: 500px; /* Adjust based on your content */
opacity: 1;
margin-top: 1rem;
padding-top: 1rem;
border-top: 1px solid rgba(255, 255, 255, 0.2);
}
.detail-row {
@@ -705,10 +722,13 @@ p {
/* View Content Styles */
.view-content {
display: none;
opacity: 0;
transition: opacity 0.2s ease-in-out;
}
.view-content.active {
display: block;
opacity: 1;
}
/* Firmware Section Styles */
@@ -981,6 +1001,19 @@ p {
color: #ffffff;
}
/* Style for no-nodes message */
.no-nodes-message {
color: #fbbf24 !important;
font-size: 0.8rem !important;
margin-top: 0.25rem !important;
font-style: italic !important;
text-align: center;
padding: 0.25rem;
border-radius: 4px;
background: rgba(251, 191, 36, 0.1);
border: 1px solid rgba(251, 191, 36, 0.3);
}
.deploy-btn {
background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
border: none;
@@ -1461,4 +1494,55 @@ p {
flex-direction: column;
}
}
/* Loading and state transitions */
.loading, .error, .empty-state {
opacity: 0;
animation: fadeIn 0.3s ease-in-out forwards;
}
@keyframes fadeIn {
from {
opacity: 0;
transform: translateY(10px);
}
to {
opacity: 1;
transform: translateY(0);
}
}
/* Smooth expand/collapse animations */
.member-details {
max-height: 0;
overflow: hidden;
transition: max-height 0.3s ease-in-out, opacity 0.2s ease-in-out;
opacity: 0;
}
.member-card.expanded .member-details {
max-height: 500px; /* Adjust based on your content */
opacity: 1;
}
/* Expand icon rotation */
.expand-icon svg {
transition: transform 0.2s ease-in-out;
}
.member-card.expanded .expand-icon svg {
transform: rotate(180deg);
}
/* Navigation tab transitions */
.nav-tab {
transition: all 0.2s ease;
}
.nav-tab:hover {
transform: translateY(-1px);
}
.nav-tab.active {
transform: translateY(0);
}