import { css, cssManager } from '@design.estate/dees-element'; import { DeesInputBase } from '../dees-input-base.js'; export const fileuploadStyles = [ ...DeesInputBase.baseStyles, cssManager.defaultStyles, css` :host { position: relative; display: block; color: ${cssManager.bdTheme('hsl(0 0% 15%)', 'hsl(0 0% 90%)')}; } .hidden { display: none; } .input-wrapper { display: flex; flex-direction: column; gap: 8px; } .maincontainer { position: relative; border-radius: 6px; padding: 16px; background: ${cssManager.bdTheme('hsl(210 40% 98%)', 'hsl(215 20.2% 11.8%)')}; color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 95%)')}; border: 1px solid ${cssManager.bdTheme('hsl(215 20.2% 65.1%)', 'hsl(215 20.2% 35.1%)')}; transition: all 0.15s ease; } .maincontainer:hover { border-color: ${cssManager.bdTheme('hsl(215 20.2% 55.1%)', 'hsl(215 20.2% 45.1%)')}; } :host([disabled]) .maincontainer { opacity: 0.5; cursor: not-allowed; pointer-events: none; } :host([validationState="invalid"]) .maincontainer { border-color: ${cssManager.bdTheme('hsl(0 72.2% 50.6%)', 'hsl(0 62.8% 30.6%)')}; } :host([validationState="valid"]) .maincontainer { border-color: ${cssManager.bdTheme('hsl(142.1 70.6% 45.3%)', 'hsl(142.1 76.2% 36.3%)')}; } :host([validationState="warn"]) .maincontainer { border-color: ${cssManager.bdTheme('hsl(45.4 93.4% 47.5%)', 'hsl(45.4 93.4% 47.5%)')}; } .maincontainer::after { top: 1px; right: 1px; left: 1px; bottom: 1px; transform: scale3d(0.98, 0.95, 1); position: absolute; content: ''; display: block; border: 2px dashed transparent; border-radius: 5px; transition: all 0.2s cubic-bezier(0.4, 0, 0.2, 1); pointer-events: none; background: transparent; } .maincontainer.dragOver { border-color: ${cssManager.bdTheme('hsl(217.2 91.2% 59.8%)', 'hsl(213.1 93.9% 67.8%)')}; background: ${cssManager.bdTheme('hsl(217.2 91.2% 59.8% / 0.05)', 'hsl(213.1 93.9% 67.8% / 0.05)')}; } .maincontainer.dragOver::after { transform: scale3d(1, 1, 1); border: 2px dashed ${cssManager.bdTheme('hsl(217.2 91.2% 59.8%)', 'hsl(213.1 93.9% 67.8%)')}; } .uploadButton { position: relative; padding: 10px 20px; background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(0 0% 7.8%)')}; color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 95%)')}; border: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')}; border-radius: 6px; text-align: center; font-size: 14px; font-weight: 500; cursor: pointer; transition: all 0.15s ease; display: flex; align-items: center; justify-content: center; gap: 8px; line-height: 20px; } .uploadButton:hover { background: ${cssManager.bdTheme('hsl(0 0% 95.1%)', 'hsl(0 0% 14.9%)')}; border-color: ${cssManager.bdTheme('hsl(0 0% 79.8%)', 'hsl(0 0% 20.9%)')}; } .uploadButton:active { background: ${cssManager.bdTheme('hsl(0 0% 91%)', 'hsl(0 0% 11%)')}; } .uploadButton dees-icon { font-size: 16px; } .files-container { display: flex; flex-direction: column; gap: 8px; margin-bottom: 12px; } .uploadCandidate { display: grid; grid-template-columns: 40px 1fr auto; background: ${cssManager.bdTheme('hsl(0 0% 100%)', 'hsl(215 20.2% 16.8%)')}; padding: 12px; text-align: left; border-radius: 6px; color: ${cssManager.bdTheme('hsl(0 0% 9%)', 'hsl(0 0% 95%)')}; cursor: default; transition: all 0.15s ease; border: 1px solid ${cssManager.bdTheme('hsl(0 0% 89.8%)', 'hsl(0 0% 14.9%)')}; position: relative; overflow: hidden; } .uploadCandidate:hover { background: ${cssManager.bdTheme('hsl(0 0% 95.1%)', 'hsl(215 20.2% 20.8%)')}; border-color: ${cssManager.bdTheme('hsl(0 0% 79.8%)', 'hsl(0 0% 20.9%)')}; } .uploadCandidate .icon { display: flex; align-items: center; justify-content: center; font-size: 20px; color: ${cssManager.bdTheme('hsl(215.4 16.3% 56.9%)', 'hsl(215 20.2% 55.1%)')}; } .uploadCandidate.image-file .icon { color: ${cssManager.bdTheme('hsl(142.1 70.6% 45.3%)', 'hsl(142.1 76.2% 36.3%)')}; } .uploadCandidate.pdf-file .icon { color: ${cssManager.bdTheme('hsl(0 72.2% 50.6%)', 'hsl(0 62.8% 30.6%)')}; } .uploadCandidate.doc-file .icon { color: ${cssManager.bdTheme('hsl(217.2 91.2% 59.8%)', 'hsl(213.1 93.9% 67.8%)')}; } .uploadCandidate .info { display: flex; flex-direction: column; gap: 2px; min-width: 0; } .uploadCandidate .filename { font-weight: 500; font-size: 14px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; } .uploadCandidate .filesize { font-size: 12px; color: ${cssManager.bdTheme('hsl(215.4 16.3% 56.9%)', 'hsl(215 20.2% 55.1%)')}; } .uploadCandidate .actions { display: flex; align-items: center; gap: 8px; } .remove-button { width: 32px; height: 32px; border-radius: 4px; background: transparent; border: none; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.15s ease; color: ${cssManager.bdTheme('hsl(215.4 16.3% 56.9%)', 'hsl(215 20.2% 55.1%)')}; } .remove-button:hover { background: ${cssManager.bdTheme('hsl(0 72.2% 50.6% / 0.1)', 'hsl(0 62.8% 30.6% / 0.1)')}; color: ${cssManager.bdTheme('hsl(0 72.2% 50.6%)', 'hsl(0 62.8% 30.6%)')}; } .clear-all-button { margin-bottom: 8px; text-align: right; } .clear-all-button button { background: none; border: none; color: ${cssManager.bdTheme('hsl(215.4 16.3% 56.9%)', 'hsl(215 20.2% 55.1%)')}; cursor: pointer; font-size: 12px; padding: 4px 8px; border-radius: 4px; transition: all 0.15s ease; } .clear-all-button button:hover { background: ${cssManager.bdTheme('hsl(0 72.2% 50.6% / 0.1)', 'hsl(0 62.8% 30.6% / 0.1)')}; color: ${cssManager.bdTheme('hsl(0 72.2% 50.6%)', 'hsl(0 62.8% 30.6%)')}; } .validation-message { font-size: 13px; margin-top: 6px; color: ${cssManager.bdTheme('hsl(0 72.2% 50.6%)', 'hsl(0 62.8% 30.6%)')}; line-height: 1.5; } .drop-hint { text-align: center; padding: 40px 20px; color: ${cssManager.bdTheme('hsl(215.4 16.3% 56.9%)', 'hsl(215 20.2% 55.1%)')}; font-size: 14px; } .drop-hint dees-icon { font-size: 48px; margin-bottom: 16px; opacity: 0.2; } .image-preview { width: 40px; height: 40px; object-fit: cover; border-radius: 4px; } .description-text { font-size: 13px; color: ${cssManager.bdTheme('hsl(215.4 16.3% 56.9%)', 'hsl(215 20.2% 55.1%)')}; margin-top: 6px; line-height: 1.5; } /* Loading state styles */ .uploadButton.loading { pointer-events: none; opacity: 0.8; } .uploadButton .button-content { display: flex; align-items: center; justify-content: center; gap: 8px; } .loading-spinner { width: 16px; height: 16px; border: 2px solid ${cssManager.bdTheme('rgba(0, 0, 0, 0.1)', 'rgba(255, 255, 255, 0.1)')}; border-top-color: ${cssManager.bdTheme('#3b82f6', '#60a5fa')}; border-radius: 50%; animation: spin 0.6s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } @keyframes pulse { 0% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.02); opacity: 0.9; } 100% { transform: scale(1); opacity: 1; } } .uploadButton.loading { animation: pulse 1s ease-in-out infinite; } `, ];