Frontend improvements

This commit is contained in:
IgorVolochay
2026-01-06 19:03:19 +03:00
parent 6e7741c946
commit fd347cf12a
3 changed files with 316 additions and 21 deletions
+184 -3
View File
@@ -15,10 +15,19 @@ body {
padding: 24px;
}
.page-content {
display: flex;
flex-direction: column;
align-items: center;
width: 100%;
max-width: 640px;
}
h1 {
font-size: clamp(32px, 4vw, 48px);
margin-bottom: 32px;
text-align: center;
margin: 0 0 32px 0;
width: 100%;
}
.upload-container {
@@ -42,6 +51,14 @@ h1 {
background: rgba(99, 102, 241, 0.04);
cursor: pointer;
position: relative;
display: block;
overflow: hidden;
}
.dropzone:focus,
.dropzone:focus-within {
outline: none;
border: 2px dashed #6366f1;
}
.dropzone.dragover {
@@ -52,9 +69,43 @@ h1 {
.dropzone input[type="file"] {
position: absolute;
inset: 0;
top: 0;
left: 0;
width: 100%;
height: 100%;
opacity: 0;
cursor: pointer;
outline: none !important;
border: none !important;
box-shadow: none !important;
-webkit-appearance: none !important;
-moz-appearance: none !important;
appearance: none !important;
margin: 0 !important;
padding: 0 !important;
background: transparent !important;
font-size: 0 !important;
line-height: 0 !important;
z-index: 1;
}
.dropzone input[type="file"]:focus,
.dropzone input[type="file"]:active,
.dropzone input[type="file"]:hover,
.dropzone input[type="file"]:focus-visible,
.dropzone input[type="file"]::-webkit-file-upload-button {
outline: none !important;
border: none !important;
box-shadow: none !important;
-webkit-appearance: none !important;
-moz-appearance: none !important;
appearance: none !important;
}
.dropzone input[type="file"]::-webkit-file-upload-button {
display: none !important;
visibility: hidden !important;
opacity: 0 !important;
}
.dropzone p {
@@ -92,12 +143,23 @@ button:disabled {
box-shadow: none;
}
.button-container {
display: flex;
justify-content: center;
width: 100%;
margin-top: 24px;
}
.status {
min-height: 24px;
font-size: 15px;
color: #374151;
line-height: 1.5;
word-break: break-all;
min-height: 0;
}
.status:empty {
display: none;
}
.status.error {
@@ -148,3 +210,122 @@ button:disabled {
.download-button:active {
transform: translateY(0);
}
/* Error popup */
.error-popup {
position: fixed;
top: 20px;
left: 50%;
transform: translateX(-50%);
background: #fee2e2;
border: 2px solid #dc2626;
border-radius: 12px;
padding: 16px 24px;
color: #991b1b;
font-weight: 600;
font-size: 15px;
z-index: 1000;
box-shadow: 0 10px 25px -5px rgba(220, 38, 38, 0.3);
animation: slideDown 0.3s ease-out;
max-width: 90%;
text-align: center;
}
@keyframes slideDown {
from {
opacity: 0;
transform: translateX(-50%) translateY(-20px);
}
to {
opacity: 1;
transform: translateX(-50%) translateY(0);
}
}
/* Success content */
.success-content {
animation: fadeIn 0.3s ease-in;
}
@keyframes fadeIn {
from {
opacity: 0;
}
to {
opacity: 1;
}
}
.download-link-container {
display: flex;
gap: 12px;
margin-top: 24px;
align-items: center;
justify-content: center;
flex-wrap: wrap;
}
.download-link-input {
flex: 1;
min-width: 200px;
padding: 12px 16px;
border: 2px solid #e5e7eb;
border-radius: 8px;
font-size: 14px;
font-family: monospace;
background: #f9fafb;
color: #111827;
cursor: text;
}
.download-link-input:focus {
outline: none;
border-color: #6366f1;
background: #ffffff;
}
.copy-link-button {
padding: 12px 24px;
background: linear-gradient(135deg, #10b981, #059669);
color: white;
border: none;
border-radius: 8px;
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: transform 0.2s ease, box-shadow 0.2s ease;
white-space: nowrap;
}
.copy-link-button:hover {
transform: translateY(-1px);
box-shadow: 0 8px 16px -4px rgba(16, 185, 129, 0.4);
}
.copy-link-button:active {
transform: translateY(0);
}
.copy-link-button.copied {
background: linear-gradient(135deg, #6366f1, #8b5cf6);
}
.upload-another-button {
margin-top: 24px;
padding: 12px 24px;
background: transparent;
color: #6366f1;
border: 2px solid #6366f1;
border-radius: 8px;
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: all 0.2s ease;
}
.upload-another-button:hover {
background: #6366f1;
color: white;
transform: translateY(-1px);
box-shadow: 0 8px 16px -4px rgba(99, 102, 241, 0.4);
}