mirror of
https://github.com/willmiao/ComfyUI-Lora-Manager.git
synced 2026-03-21 21:22:11 -03:00
- Add `!important` to overlay background and closing opacity for consistent styling - Remove navigation spam prevention to allow consecutive transitions - Implement in-place content updates during model transitions instead of reopening modal - Add opacity transitions for showcase and metadata components - Fetch complete Civitai metadata during transitions for updated model data
168 lines
3.0 KiB
CSS
168 lines
3.0 KiB
CSS
/* Model Modal Overlay - Split View Layout */
|
|
|
|
.model-overlay {
|
|
position: fixed;
|
|
top: var(--header-height, 48px);
|
|
left: var(--sidebar-width, 250px);
|
|
right: 0;
|
|
bottom: 0;
|
|
z-index: var(--z-modal, 1000);
|
|
|
|
display: grid;
|
|
grid-template-columns: 1.2fr 0.8fr;
|
|
gap: 0;
|
|
|
|
background: var(--bg-color) !important;
|
|
opacity: 0;
|
|
animation: modalOverlayFadeIn 0.25s ease-out forwards;
|
|
}
|
|
|
|
.model-overlay.sidebar-collapsed {
|
|
left: var(--sidebar-collapsed-width, 60px);
|
|
grid-template-columns: 1.3fr 0.7fr;
|
|
}
|
|
|
|
@keyframes modalOverlayFadeIn {
|
|
from {
|
|
opacity: 0;
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
}
|
|
}
|
|
|
|
.model-overlay.closing {
|
|
opacity: 1 !important;
|
|
animation: modalOverlayFadeOut 0.2s ease-out forwards;
|
|
}
|
|
|
|
@keyframes modalOverlayFadeOut {
|
|
from {
|
|
opacity: 1;
|
|
}
|
|
to {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
/* Close button */
|
|
.model-overlay__close {
|
|
position: absolute;
|
|
top: var(--space-2);
|
|
right: var(--space-2);
|
|
width: 40px;
|
|
height: 40px;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
background: rgba(0, 0, 0, 0.3);
|
|
border: none;
|
|
border-radius: 50%;
|
|
color: white;
|
|
font-size: 1.5rem;
|
|
cursor: pointer;
|
|
z-index: 10;
|
|
transition: background-color 0.2s ease, transform 0.2s ease;
|
|
}
|
|
|
|
.model-overlay__close:hover {
|
|
background: rgba(0, 0, 0, 0.5);
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
/* Keyboard shortcut hint */
|
|
.model-overlay__hint {
|
|
position: absolute;
|
|
top: var(--space-2);
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
padding: var(--space-1) var(--space-3);
|
|
background: rgba(0, 0, 0, 0.7);
|
|
color: white;
|
|
font-size: 0.85em;
|
|
border-radius: var(--border-radius-sm);
|
|
opacity: 0;
|
|
animation: hintFadeIn 0.3s ease-out 0.5s forwards, hintFadeOut 0.3s ease-out 3.5s forwards;
|
|
z-index: 10;
|
|
pointer-events: none;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
@keyframes hintFadeIn {
|
|
from {
|
|
opacity: 0;
|
|
transform: translateX(-50%) translateY(-10px);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: translateX(-50%) translateY(0);
|
|
}
|
|
}
|
|
|
|
@keyframes hintFadeOut {
|
|
from {
|
|
opacity: 1;
|
|
}
|
|
to {
|
|
opacity: 0;
|
|
}
|
|
}
|
|
|
|
.model-overlay__hint.hidden {
|
|
display: none;
|
|
}
|
|
|
|
/* Responsive breakpoints */
|
|
@media (max-width: 1400px) {
|
|
.model-overlay {
|
|
grid-template-columns: 1fr 1fr;
|
|
}
|
|
|
|
.model-overlay.sidebar-collapsed {
|
|
grid-template-columns: 1.1fr 0.9fr;
|
|
}
|
|
}
|
|
|
|
@media (max-width: 1200px) {
|
|
.model-overlay {
|
|
grid-template-columns: 1fr 1fr;
|
|
}
|
|
|
|
.model-overlay.sidebar-collapsed {
|
|
grid-template-columns: 1fr 1fr;
|
|
}
|
|
}
|
|
|
|
/* Mobile: stack layout */
|
|
@media (max-width: 768px) {
|
|
.model-overlay {
|
|
left: 0;
|
|
grid-template-columns: 1fr;
|
|
grid-template-rows: auto 1fr;
|
|
overflow-y: auto;
|
|
}
|
|
|
|
.model-overlay.sidebar-collapsed {
|
|
left: 0;
|
|
grid-template-columns: 1fr;
|
|
grid-template-rows: auto 1fr;
|
|
}
|
|
}
|
|
|
|
/* Body scroll lock when modal is open */
|
|
body.modal-open {
|
|
overflow: hidden !important;
|
|
}
|
|
|
|
/* Transition effect for content when switching models */
|
|
.showcase,
|
|
.metadata {
|
|
opacity: 1;
|
|
transition: opacity 0.15s ease-out;
|
|
}
|
|
|
|
.showcase.transitioning,
|
|
.metadata.transitioning {
|
|
opacity: 0;
|
|
}
|