w-lab-app/src/components/domains/dashboard/cards/PortraitCard/PortraitCard.module.scss
2025-10-28 21:29:34 +04:00

180 lines
2.5 KiB
SCSS

.card.card {
padding: 0;
min-width: 220px;
max-width: 220px;
height: auto;
overflow: hidden;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
display: flex;
flex-direction: column;
cursor: pointer;
transition:
transform 0.2s ease,
box-shadow 0.2s ease;
&:hover {
transform: translateY(-4px);
box-shadow: 0 6px 16px rgba(0, 0, 0, 0.12);
}
&.disabled {
cursor: default;
&:hover {
transform: none;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08);
}
}
}
.imageContainer {
position: relative;
width: 100%;
height: 240px;
background: linear-gradient(180deg, #f5f5f5 0%, #e0e0e0 100%);
overflow: hidden;
}
.portraitImage {
object-fit: cover;
object-position: center;
}
.placeholderImage {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #f5f5f5 0%, #e8e8e8 100%);
}
.placeholderLoader {
color: #999;
animation: spin 1s linear infinite;
}
@keyframes spin {
from {
transform: rotate(0deg);
}
to {
transform: rotate(360deg);
}
}
.content {
padding: 16px;
display: flex;
flex-direction: column;
gap: 12px;
background: white;
}
.textContent {
display: flex;
flex-direction: column;
gap: 4px;
align-items: flex-start;
text-align: left;
}
.title {
line-height: 1.3;
text-align: left;
}
.subtitle {
line-height: 1.4;
text-align: left;
}
.footer {
display: flex;
align-items: center;
justify-content: space-between;
min-height: 32px;
}
.status {
display: flex;
align-items: center;
gap: 6px;
padding: 6px 0;
}
.statusDone {
color: #16a34a;
.statusText {
color: #16a34a;
}
.checkmark {
color: #16a34a;
}
}
.statusProcessing {
color: #3b82f6;
svg {
animation: spin 1s linear infinite;
}
}
.statusQueued {
color: #f59e0b;
svg {
color: #f59e0b;
}
}
.statusError {
color: #ef4444;
svg {
color: #ef4444;
}
}
.iconCheck,
.iconQueued,
.iconError {
flex-shrink: 0;
}
.iconProcessing {
flex-shrink: 0;
animation: spin 1s linear infinite;
}
.actionButton {
width: 40px;
height: 40px;
border-radius: 50%;
background: #3b82f6;
border: none;
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition:
background 0.2s ease,
transform 0.1s ease;
flex-shrink: 0;
svg {
color: white;
}
&:hover {
background: #2563eb;
}
&:active {
transform: scale(0.95);
}
}