Spaces:
Running
Running
.notification-container { | |
position: fixed; | |
z-index: 9999; | |
display: flex; | |
flex-direction: column; | |
gap: var(--spacing, 10px); | |
pointer-events: none; | |
} | |
.notification-list { | |
display: flex; | |
flex-direction: column; | |
gap: var(--spacing, 10px); | |
} | |
.notification-list.collapsed { | |
gap: 0; | |
} | |
.notification-list.collapsed .notification:not(:first-child) { | |
margin-top: -80%; | |
opacity: 0.3; | |
transform: scale(0.95); | |
} | |
/* Position variations */ | |
.position-top-left { | |
top: var(--offset-y); | |
left: var(--offset-x); | |
align-items: flex-start; | |
} | |
.position-top-center { | |
top: var(--offset-y); | |
left: 50%; | |
transform: translateX(-50%); | |
align-items: center; | |
} | |
.position-top-right { | |
top: var(--offset-y); | |
right: var(--offset-x); | |
align-items: flex-end; | |
} | |
.position-bottom-left { | |
bottom: var(--offset-y); | |
left: var(--offset-x); | |
align-items: flex-start; | |
} | |
.position-bottom-center { | |
bottom: var(--offset-y); | |
left: 50%; | |
transform: translateX(-50%); | |
align-items: center; | |
} | |
.position-bottom-right { | |
bottom: var(--offset-y); | |
right: var(--offset-x); | |
align-items: flex-end; | |
} | |
.position-center { | |
top: 50%; | |
left: 50%; | |
transform: translate(-50%, -50%); | |
align-items: center; | |
} | |
/* Stack direction */ | |
.stack-up { | |
flex-direction: column-reverse; | |
} | |
.stack-up .notification-list { | |
flex-direction: column-reverse; | |
} | |
/* Base notification styles */ | |
.notification { | |
background: white; | |
border-radius: 8px; | |
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); | |
min-width: 300px; | |
max-width: 500px; | |
position: relative; | |
overflow: hidden; | |
pointer-events: all; | |
transition: all 0.3s ease; | |
} | |
.notification-content { | |
padding: 16px; | |
display: flex; | |
gap: 12px; | |
align-items: flex-start; | |
} | |
.notification-icon { | |
flex-shrink: 0; | |
font-size: 24px; | |
display: flex; | |
align-items: center; | |
} | |
.notification-body { | |
flex: 1; | |
min-width: 0; | |
} | |
.notification-title { | |
font-weight: 600; | |
font-size: 16px; | |
margin-bottom: 4px; | |
color: #333; | |
word-wrap: break-word; | |
} | |
.notification-message { | |
font-size: 14px; | |
color: #666; | |
line-height: 1.5; | |
word-wrap: break-word; | |
} | |
.notification-actions { | |
display: flex; | |
gap: 8px; | |
margin-top: 12px; | |
flex-wrap: wrap; | |
} | |
.notification-action { | |
padding: 6px 12px; | |
border: none; | |
border-radius: 4px; | |
font-size: 14px; | |
font-weight: 500; | |
cursor: pointer; | |
transition: all 0.2s; | |
background: #1976d2; | |
color: white; | |
} | |
.notification-action:hover { | |
background: #1565c0; | |
transform: translateY(-1px); | |
} | |
.notification-close { | |
background: none; | |
border: none; | |
color: #999; | |
cursor: pointer; | |
font-size: 18px; | |
padding: 4px; | |
transition: color 0.2s; | |
display: flex; | |
align-items: center; | |
} | |
.notification-close:hover { | |
color: #666; | |
} | |
.notification-footer { | |
padding: 12px 16px; | |
background: #f5f5f5; | |
border-top: 1px solid #e0e0e0; | |
font-size: 12px; | |
color: #666; | |
} | |
/* Notification types */ | |
.notification-success { | |
border-left: 4px solid #4caf50; | |
} | |
.notification-success .notification-icon { | |
color: #4caf50; | |
} | |
.notification-error { | |
border-left: 4px solid #f44336; | |
} | |
.notification-error .notification-icon { | |
color: #f44336; | |
} | |
.notification-warning { | |
border-left: 4px solid #ff9800; | |
} | |
.notification-warning .notification-icon { | |
color: #ff9800; | |
} | |
.notification-info { | |
border-left: 4px solid #2196f3; | |
} | |
.notification-info .notification-icon { | |
color: #2196f3; | |
} | |
/* Dark theme */ | |
.theme-dark .notification { | |
background: #1e1e1e; | |
color: #fff; | |
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.5); | |
} | |
.theme-dark .notification-title { | |
color: #fff; | |
} | |
.theme-dark .notification-message { | |
color: #ccc; | |
} | |
.theme-dark .notification-close { | |
color: #666; | |
} | |
.theme-dark .notification-close:hover { | |
color: #999; | |
} | |
.theme-dark .notification-footer { | |
background: #2a2a2a; | |
border-top-color: #444; | |
color: #999; | |
} | |
/* Animations */ | |
/* Slide animation */ | |
.animation-slide { | |
animation: slideIn 0.3s ease-out forwards; | |
animation-delay: var(--animation-delay, 0s); | |
} | |
@keyframes slideIn { | |
from { | |
transform: translateX(100%); | |
opacity: 0; | |
} | |
to { | |
transform: translateX(0); | |
opacity: 1; | |
} | |
} | |
.position-top-left .animation-slide, | |
.position-bottom-left .animation-slide { | |
animation-name: slideInLeft; | |
} | |
@keyframes slideInLeft { | |
from { | |
transform: translateX(-100%); | |
opacity: 0; | |
} | |
to { | |
transform: translateX(0); | |
opacity: 1; | |
} | |
} | |
/* Fade animation */ | |
.animation-fade { | |
animation: fadeIn 0.3s ease-out forwards; | |
animation-delay: var(--animation-delay, 0s); | |
} | |
@keyframes fadeIn { | |
from { | |
opacity: 0; | |
} | |
to { | |
opacity: 1; | |
} | |
} | |
/* Zoom animation */ | |
.animation-zoom { | |
animation: zoomIn 0.3s ease-out forwards; | |
animation-delay: var(--animation-delay, 0s); | |
} | |
@keyframes zoomIn { | |
from { | |
transform: scale(0.8); | |
opacity: 0; | |
} | |
to { | |
transform: scale(1); | |
opacity: 1; | |
} | |
} | |
/* Bounce animation */ | |
.animation-bounce { | |
animation: bounceIn 0.6s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards; | |
animation-delay: var(--animation-delay, 0s); | |
} | |
@keyframes bounceIn { | |
0% { | |
transform: translateY(-100%); | |
opacity: 0; | |
} | |
60% { | |
transform: translateY(10%); | |
opacity: 1; | |
} | |
100% { | |
transform: translateY(0); | |
opacity: 1; | |
} | |
} | |
/* Progress bar */ | |
.notification-progress { | |
position: absolute; | |
bottom: 0; | |
left: 0; | |
height: 3px; | |
background: currentColor; | |
opacity: 0.3; | |
animation: progress linear forwards; | |
animation-duration: var(--duration); | |
} | |
@keyframes progress { | |
from { | |
width: 100%; | |
} | |
to { | |
width: 0%; | |
} | |
} | |
/* Collapse toggle */ | |
.notification-collapse-toggle { | |
align-self: center; | |
padding: 8px 16px; | |
background: #1976d2; | |
color: white; | |
border: none; | |
border-radius: 20px; | |
font-size: 14px; | |
cursor: pointer; | |
pointer-events: all; | |
margin-bottom: 8px; | |
transition: all 0.2s; | |
} | |
.notification-collapse-toggle:hover { | |
background: #1565c0; | |
transform: translateY(-1px); | |
} | |
/* Responsive */ | |
@media (max-width: 600px) { | |
.notification { | |
min-width: calc(100vw - 40px); | |
max-width: calc(100vw - 40px); | |
} | |
.position-top-center, | |
.position-bottom-center { | |
transform: none; | |
left: 20px; | |
right: 20px; | |
} | |
} |