uaide-backend / src /components /UploadZone.module.css
ATS-27's picture
Upload folder using huggingface_hub
af980d7 verified
.wrapper {
max-width: 720px;
margin: 0 auto;
padding: 48px 24px 40px;
display: flex;
flex-direction: column;
align-items: center;
gap: 20px;
}
/* Hero */
.hero {
text-align: center;
display: flex;
flex-direction: column;
align-items: center;
gap: 14px;
margin-bottom: 4px;
}
.heroBadge {
display: inline-flex;
align-items: center;
gap: 6px;
font-size: 12px;
font-weight: 600;
color: var(--accent);
background: var(--accent-light);
padding: 4px 12px;
border-radius: 99px;
letter-spacing: 0.2px;
}
.heroTitle {
font-size: clamp(28px, 5vw, 42px);
font-weight: 800;
color: var(--text-primary);
letter-spacing: -1.2px;
line-height: 1.15;
}
.heroAccent {
color: var(--accent);
}
.heroSub {
font-size: 15px;
color: var(--text-secondary);
line-height: 1.7;
max-width: 560px;
}
/* Drop Zone */
.dropzone {
width: 100%;
min-height: 280px;
background: var(--bg-surface);
border: 2px dashed var(--border-strong);
border-radius: var(--radius-xl);
cursor: pointer;
position: relative;
transition: all 0.2s ease;
display: flex;
align-items: center;
justify-content: center;
overflow: hidden;
}
.dropzone::before {
content: '';
position: absolute;
inset: 0;
background: radial-gradient(ellipse at 50% 0%, var(--accent-glow) 0%, transparent 70%);
opacity: 0;
transition: opacity 0.25s ease;
pointer-events: none;
}
.dropzone:hover,
.dropzone:focus-visible {
border-color: var(--accent);
background: var(--bg-surface);
box-shadow: 0 0 0 4px var(--accent-glow), var(--shadow-md);
}
.dropzone:hover::before {
opacity: 1;
}
.dropzone.dragging {
border-color: var(--accent);
border-style: solid;
background: var(--accent-light);
box-shadow: 0 0 0 6px var(--accent-glow), var(--shadow-lg);
transform: scale(1.01);
}
.dropzone.dragging::before {
opacity: 1;
}
.dropzone.invalid {
border-color: var(--ai-generated);
background: var(--ai-generated-bg);
box-shadow: 0 0 0 4px var(--ai-generated-glow);
}
.hiddenInput {
display: none;
}
/* Drop Content */
.dropContent {
display: flex;
flex-direction: column;
align-items: center;
gap: 10px;
padding: 40px 32px;
text-align: center;
position: relative;
z-index: 1;
}
.iconGroup {
margin-bottom: 4px;
}
.iconRing {
width: 68px;
height: 68px;
border-radius: 50%;
background: var(--bg-surface-2);
border: 1.5px solid var(--border);
display: flex;
align-items: center;
justify-content: center;
color: var(--text-muted);
transition: all 0.2s ease;
}
.dropzone:hover .iconRing {
background: var(--accent-light);
border-color: var(--accent);
color: var(--accent);
}
.dropzone.dragging .iconRing {
background: var(--accent);
border-color: var(--accent);
color: white;
}
.iconRingActive {
background: var(--accent) !important;
border-color: var(--accent) !important;
color: white !important;
}
.iconRingError {
background: var(--ai-generated-bg) !important;
border-color: var(--ai-generated) !important;
color: var(--ai-generated) !important;
}
.dropLabel {
font-size: 17px;
font-weight: 600;
color: var(--text-primary);
letter-spacing: -0.2px;
}
.dropHint {
font-size: 14px;
color: var(--text-muted);
}
.browseLink {
color: var(--accent);
font-weight: 600;
text-decoration: underline;
text-underline-offset: 2px;
}
.supportedTypes {
display: flex;
align-items: center;
gap: 12px;
margin-top: 8px;
}
.typeChip {
display: flex;
align-items: center;
gap: 5px;
font-size: 12px;
color: var(--text-secondary);
background: var(--bg-surface-2);
border: 1px solid var(--border);
padding: 5px 10px;
border-radius: 99px;
font-weight: 500;
}
.typeFormats {
color: var(--text-muted);
font-size: 11px;
}
.typeDivider {
width: 1px;
height: 20px;
background: var(--border);
}
.sizeNote {
font-size: 12px;
color: var(--text-muted);
margin-top: 4px;
}
/* Error */
.errorBanner {
display: flex;
align-items: center;
gap: 8px;
background: var(--ai-generated-bg);
border: 1px solid var(--ai-generated);
color: var(--ai-generated);
padding: 10px 16px;
border-radius: var(--radius-md);
font-size: 13.5px;
font-weight: 500;
width: 100%;
max-width: 600px;
}
/* Capability pills */
.capabilities {
display: flex;
flex-wrap: wrap;
justify-content: center;
gap: 8px;
}
.capPill {
font-size: 11.5px;
font-weight: 600;
color: var(--text-muted);
background: var(--bg-surface);
border: 1px solid var(--border);
padding: 4px 12px;
border-radius: 99px;
letter-spacing: 0.15px;
transition: all 0.15s ease;
}
.capPill:hover {
color: var(--accent);
border-color: var(--accent);
background: var(--accent-light);
}
@media (max-width: 600px) {
.wrapper { padding: 32px 16px 28px; }
.dropContent { padding: 32px 20px; }
.supportedTypes { flex-direction: column; gap: 8px; }
.typeDivider { display: none; }
}